From b1bdd90338bc68c30348b498eb9a973628119b05 Mon Sep 17 00:00:00 2001 From: Larry Masinter Date: Mon, 2 Mar 2026 11:49:31 -0800 Subject: [PATCH] remove 'obsolete' folder from repo -- move to separate repo (#2503) --- obsolete/clos/2.0/CLOS-BROWSER.TEDIT.Z | Bin 11270 -> 0 bytes obsolete/clos/2.0/NEW-CLOS-BROWSER | 1634 ----- obsolete/clos/2.0/WEB-EDITOR | 2338 ------- obsolete/clos/2.0/boot.lisp | 1297 ---- obsolete/clos/2.0/braid.lisp | 503 -- obsolete/clos/2.0/cache.lisp | 1089 --- obsolete/clos/2.0/clos-env-internal.lisp | 260 - obsolete/clos/2.0/clos-env.lisp | 1609 ----- obsolete/clos/2.0/combin.lisp | 254 - obsolete/clos/2.0/compat.lisp | 11 - obsolete/clos/2.0/construct.lisp | 1090 ---- obsolete/clos/2.0/cpl.lisp | 271 - obsolete/clos/2.0/ctypes.lisp | 25 - obsolete/clos/2.0/defclass.lisp | 230 - obsolete/clos/2.0/defcombin.lisp | 410 -- obsolete/clos/2.0/defs.lisp | 570 -- obsolete/clos/2.0/defsys.lisp | 757 --- obsolete/clos/2.0/dfun.lisp | 606 -- obsolete/clos/2.0/dlap.lisp | 492 -- obsolete/clos/2.0/env.lisp | 200 - obsolete/clos/2.0/fin.lisp | 235 - obsolete/clos/2.0/fixup.lisp | 15 - obsolete/clos/2.0/fngen.lisp | 172 - obsolete/clos/2.0/fsc.lisp | 72 - obsolete/clos/2.0/init.lisp | 183 - obsolete/clos/2.0/iterate.lisp | 1080 --- obsolete/clos/2.0/lap.lisp | 364 -- obsolete/clos/2.0/load-clos.lisp | 42 - obsolete/clos/2.0/low.lisp | 194 - obsolete/clos/2.0/low2.lisp | 144 - obsolete/clos/2.0/macros.lisp | 355 - obsolete/clos/2.0/methods.lisp | 1304 ---- obsolete/clos/2.0/patch.lisp | 143 - obsolete/clos/2.0/pkg.lisp | 81 - obsolete/clos/2.0/plap.lisp | 309 - obsolete/clos/2.0/precom-browser.cl | 3 - obsolete/clos/2.0/precom1.lisp | 31 - obsolete/clos/2.0/precom2.lisp | 12 - obsolete/clos/2.0/precom4.lisp | 12 - obsolete/clos/2.0/slots.lisp | 261 - obsolete/clos/2.0/std-class.lisp | 997 --- obsolete/clos/2.0/test.lisp | 2880 -------- obsolete/clos/2.0/unchaged.lisp | 22 - obsolete/clos/2.0/vector.lisp | 368 -- obsolete/clos/2.0/walk.lisp | 2005 ------ obsolete/clos/2.01big/CLOS-BROWSER.TEDIT | Bin 28277 -> 0 bytes obsolete/clos/2.01big/NEW-CLOS-BROWSER.DFASL | Bin 61916 -> 0 bytes obsolete/clos/2.01big/WEB-EDITOR.DFASL | Bin 95159 -> 0 bytes obsolete/clos/2.01big/boot.dfasl | Bin 29346 -> 0 bytes obsolete/clos/2.01big/braid.dfasl | Bin 14525 -> 0 bytes obsolete/clos/2.01big/cache.dfasl | Bin 28303 -> 0 bytes obsolete/clos/2.01big/clos-env-internal.DFASL | Bin 2966 -> 0 bytes obsolete/clos/2.01big/clos-env.DFASL | Bin 42290 -> 0 bytes obsolete/clos/2.01big/combin.dfasl | Bin 6915 -> 0 bytes obsolete/clos/2.01big/compat.dfasl | Bin 299 -> 0 bytes obsolete/clos/2.01big/construct.dfasl | Bin 22797 -> 0 bytes obsolete/clos/2.01big/cpl.dfasl | Bin 6441 -> 0 bytes obsolete/clos/2.01big/ctypes.dfasl | Bin 779 -> 0 bytes obsolete/clos/2.01big/defclass.dfasl | Bin 5497 -> 0 bytes obsolete/clos/2.01big/defcombin.dfasl | Bin 10474 -> 0 bytes obsolete/clos/2.01big/defs.dfasl | Bin 21496 -> 0 bytes obsolete/clos/2.01big/defsys.DFASL | Bin 12515 -> 0 bytes obsolete/clos/2.01big/dfun.dfasl | Bin 14817 -> 0 bytes obsolete/clos/2.01big/dlap.dfasl | Bin 12751 -> 0 bytes obsolete/clos/2.01big/env.dfasl | Bin 9243 -> 0 bytes obsolete/clos/2.01big/fin.dfasl | Bin 7263 -> 0 bytes obsolete/clos/2.01big/fixup.dfasl | Bin 521 -> 0 bytes obsolete/clos/2.01big/fngen.dfasl | Bin 3703 -> 0 bytes obsolete/clos/2.01big/fsc.dfasl | Bin 2116 -> 0 bytes obsolete/clos/2.01big/init.dfasl | Bin 4939 -> 0 bytes obsolete/clos/2.01big/iterate.dfasl | Bin 24151 -> 0 bytes obsolete/clos/2.01big/lap.dfasl | Bin 16250 -> 0 bytes obsolete/clos/2.01big/load-clos.lisp | 42 - obsolete/clos/2.01big/low.dfasl | Bin 5146 -> 0 bytes obsolete/clos/2.01big/low2.dfasl | Bin 3281 -> 0 bytes obsolete/clos/2.01big/macros.dfasl | Bin 12401 -> 0 bytes obsolete/clos/2.01big/methods.dfasl | Bin 39695 -> 0 bytes obsolete/clos/2.01big/patch.dfasl | Bin 2835 -> 0 bytes obsolete/clos/2.01big/pkg.dfasl | Bin 1951 -> 0 bytes obsolete/clos/2.01big/plap.dfasl | Bin 16165 -> 0 bytes obsolete/clos/2.01big/precom1.dfasl | Bin 664 -> 0 bytes obsolete/clos/2.01big/precom2.dfasl | Bin 19835 -> 0 bytes obsolete/clos/2.01big/precom4.dfasl | Bin 5577 -> 0 bytes obsolete/clos/2.01big/slots.dfasl | Bin 7704 -> 0 bytes obsolete/clos/2.01big/std-class.dfasl | Bin 46590 -> 0 bytes obsolete/clos/2.01big/vector.dfasl | Bin 12286 -> 0 bytes obsolete/clos/2.01big/walk.dfasl | Bin 19578 -> 0 bytes obsolete/fonts/xerox/FlemishScriptII.wd.Z | Bin 376 -> 0 bytes .../fonts/xerox/Helvetica.Bold.Italic.cd.Z | Bin 171281 -> 0 bytes obsolete/fonts/xerox/Helvetica.Bold.cd.Z | Bin 158457 -> 0 bytes obsolete/fonts/xerox/Helvetica.Italic.cd.Z | Bin 166607 -> 0 bytes obsolete/fonts/xerox/Helvetica.cd.Z | Bin 152331 -> 0 bytes obsolete/fonts/xerox/ITCBauhaus.wd.Z | Bin 942 -> 0 bytes .../fonts/xerox/ITCBauhaus10-C0.DISPLAYFONT.Z | Bin 2232 -> 0 bytes obsolete/fonts/xerox/ITCBauhaus10-C0.wd.Z | Bin 942 -> 0 bytes obsolete/fonts/xerox/ITCBauhaus12-C0.wd.Z | Bin 942 -> 0 bytes obsolete/fonts/xerox/ITCBauhaus14-C0.wd.Z | Bin 942 -> 0 bytes obsolete/fonts/xerox/ITCBauhaus18-C0.wd.Z | Bin 942 -> 0 bytes obsolete/fonts/xerox/ITCBauhaus24-C0.wd.Z | Bin 942 -> 0 bytes obsolete/fonts/xerox/ITCBauhaus6-C0.wd.Z | Bin 942 -> 0 bytes obsolete/fonts/xerox/ITCBauhaus8-C0.wd.Z | Bin 942 -> 0 bytes obsolete/fonts/xerox/ITCCushing.wd.Z | Bin 1803 -> 0 bytes obsolete/fonts/xerox/ITCGaramond.wd.Z | Bin 99911 -> 0 bytes obsolete/fonts/xerox/ITCGaramond11-C0.ac.Z | Bin 2163 -> 0 bytes .../fonts/xerox/ITCGaramond11MRR72C0.ac.Z | Bin 2163 -> 0 bytes .../fonts/xerox/ITCGaramond12-B-I-c0.ac.Z | Bin 2683 -> 0 bytes .../fonts/xerox/ITCGaramond12-B-I-c356.ac.Z | Bin 278 -> 0 bytes .../fonts/xerox/ITCGaramond12-B-I-c357.ac.Z | Bin 305 -> 0 bytes .../fonts/xerox/ITCGaramond12-B-I-c360.ac.Z | Bin 190 -> 0 bytes .../fonts/xerox/ITCGaramond12-B-I-c361.ac.Z | Bin 338 -> 0 bytes .../fonts/xerox/ITCGaramond12-B-I-c41.ac.Z | Bin 116 -> 0 bytes obsolete/fonts/xerox/ITCGaramond12-B-c0.ac.Z | Bin 2497 -> 0 bytes .../fonts/xerox/ITCGaramond12-B-c356.ac.Z | Bin 282 -> 0 bytes .../fonts/xerox/ITCGaramond12-B-c357.ac.Z | Bin 295 -> 0 bytes .../fonts/xerox/ITCGaramond12-B-c360.ac.Z | Bin 158 -> 0 bytes .../fonts/xerox/ITCGaramond12-B-c361.ac.Z | Bin 331 -> 0 bytes obsolete/fonts/xerox/ITCGaramond12-B-c41.ac.Z | Bin 116 -> 0 bytes obsolete/fonts/xerox/ITCGaramond12-I-c0.ac.Z | Bin 2465 -> 0 bytes .../fonts/xerox/ITCGaramond12-I-c356.ac.Z | Bin 278 -> 0 bytes .../fonts/xerox/ITCGaramond12-I-c357.ac.Z | Bin 301 -> 0 bytes .../fonts/xerox/ITCGaramond12-I-c360.ac.Z | Bin 179 -> 0 bytes .../fonts/xerox/ITCGaramond12-I-c361.ac.Z | Bin 331 -> 0 bytes obsolete/fonts/xerox/ITCGaramond12-I-c41.ac.Z | Bin 111 -> 0 bytes obsolete/fonts/xerox/ITCGaramond12-c0.ac.Z | Bin 2298 -> 0 bytes obsolete/fonts/xerox/ITCGaramond12-c356.ac.Z | Bin 275 -> 0 bytes obsolete/fonts/xerox/ITCGaramond12-c357.ac.Z | Bin 288 -> 0 bytes obsolete/fonts/xerox/ITCGaramond12-c360.ac.Z | Bin 147 -> 0 bytes obsolete/fonts/xerox/ITCGaramond12-c361.ac.Z | Bin 325 -> 0 bytes obsolete/fonts/xerox/ITCGaramond12-c41.ac.Z | Bin 111 -> 0 bytes .../fonts/xerox/ITCGaramond14-B-I-c0.ac.Z | Bin 3082 -> 0 bytes .../fonts/xerox/ITCGaramond14-B-I-c356.ac.Z | Bin 287 -> 0 bytes .../fonts/xerox/ITCGaramond14-B-I-c357.ac.Z | Bin 296 -> 0 bytes .../fonts/xerox/ITCGaramond14-B-I-c360.ac.Z | Bin 198 -> 0 bytes .../fonts/xerox/ITCGaramond14-B-I-c361.ac.Z | Bin 348 -> 0 bytes .../fonts/xerox/ITCGaramond14-B-I-c41.ac.Z | Bin 119 -> 0 bytes obsolete/fonts/xerox/ITCGaramond14-B-c0.ac.Z | Bin 2944 -> 0 bytes .../fonts/xerox/ITCGaramond14-B-c356.ac.Z | Bin 288 -> 0 bytes .../fonts/xerox/ITCGaramond14-B-c357.ac.Z | Bin 295 -> 0 bytes .../fonts/xerox/ITCGaramond14-B-c360.ac.Z | Bin 167 -> 0 bytes .../fonts/xerox/ITCGaramond14-B-c361.ac.Z | Bin 339 -> 0 bytes obsolete/fonts/xerox/ITCGaramond14-B-c41.ac.Z | Bin 119 -> 0 bytes obsolete/fonts/xerox/ITCGaramond14-I-c0.ac.Z | Bin 2881 -> 0 bytes .../fonts/xerox/ITCGaramond14-I-c356.ac.Z | Bin 284 -> 0 bytes .../fonts/xerox/ITCGaramond14-I-c357.ac.Z | Bin 293 -> 0 bytes .../fonts/xerox/ITCGaramond14-I-c360.ac.Z | Bin 189 -> 0 bytes .../fonts/xerox/ITCGaramond14-I-c361.ac.Z | Bin 341 -> 0 bytes obsolete/fonts/xerox/ITCGaramond14-I-c41.ac.Z | Bin 117 -> 0 bytes obsolete/fonts/xerox/ITCGaramond14-c0.ac.Z | Bin 2684 -> 0 bytes obsolete/fonts/xerox/ITCGaramond14-c356.ac.Z | Bin 281 -> 0 bytes obsolete/fonts/xerox/ITCGaramond14-c357.ac.Z | Bin 287 -> 0 bytes obsolete/fonts/xerox/ITCGaramond14-c360.ac.Z | Bin 147 -> 0 bytes obsolete/fonts/xerox/ITCGaramond14-c361.ac.Z | Bin 334 -> 0 bytes obsolete/fonts/xerox/ITCGaramond14-c41.ac.Z | Bin 117 -> 0 bytes .../fonts/xerox/ITCGaramond18-B-I-c0.ac.Z | Bin 3523 -> 0 bytes .../fonts/xerox/ITCGaramond18-B-I-c356.ac.Z | Bin 288 -> 0 bytes .../fonts/xerox/ITCGaramond18-B-I-c357.ac.Z | Bin 315 -> 0 bytes .../fonts/xerox/ITCGaramond18-B-I-c360.ac.Z | Bin 239 -> 0 bytes .../fonts/xerox/ITCGaramond18-B-I-c361.ac.Z | Bin 365 -> 0 bytes .../fonts/xerox/ITCGaramond18-B-I-c41.ac.Z | Bin 120 -> 0 bytes obsolete/fonts/xerox/ITCGaramond18-B-c0.ac.Z | Bin 3215 -> 0 bytes .../fonts/xerox/ITCGaramond18-B-c356.ac.Z | Bin 291 -> 0 bytes .../fonts/xerox/ITCGaramond18-B-c357.ac.Z | Bin 310 -> 0 bytes .../fonts/xerox/ITCGaramond18-B-c360.ac.Z | Bin 178 -> 0 bytes .../fonts/xerox/ITCGaramond18-B-c361.ac.Z | Bin 360 -> 0 bytes obsolete/fonts/xerox/ITCGaramond18-B-c41.ac.Z | Bin 120 -> 0 bytes obsolete/fonts/xerox/ITCGaramond18-I-c0.ac.Z | Bin 3325 -> 0 bytes .../fonts/xerox/ITCGaramond18-I-c356.ac.Z | Bin 286 -> 0 bytes .../fonts/xerox/ITCGaramond18-I-c357.ac.Z | Bin 306 -> 0 bytes .../fonts/xerox/ITCGaramond18-I-c360.ac.Z | Bin 223 -> 0 bytes .../fonts/xerox/ITCGaramond18-I-c361.ac.Z | Bin 360 -> 0 bytes obsolete/fonts/xerox/ITCGaramond18-I-c41.ac.Z | Bin 117 -> 0 bytes obsolete/fonts/xerox/ITCGaramond18-c0.ac.Z | Bin 3065 -> 0 bytes obsolete/fonts/xerox/ITCGaramond18-c356.ac.Z | Bin 284 -> 0 bytes obsolete/fonts/xerox/ITCGaramond18-c357.ac.Z | Bin 300 -> 0 bytes obsolete/fonts/xerox/ITCGaramond18-c360.ac.Z | Bin 168 -> 0 bytes obsolete/fonts/xerox/ITCGaramond18-c361.ac.Z | Bin 351 -> 0 bytes obsolete/fonts/xerox/ITCGaramond18-c41.ac.Z | Bin 117 -> 0 bytes .../fonts/xerox/ITCGaramond24-B-I-c0.ac.Z | Bin 4751 -> 0 bytes .../fonts/xerox/ITCGaramond24-B-I-c356.ac.Z | Bin 305 -> 0 bytes .../fonts/xerox/ITCGaramond24-B-I-c357.ac.Z | Bin 329 -> 0 bytes .../fonts/xerox/ITCGaramond24-B-I-c360.ac.Z | Bin 304 -> 0 bytes .../fonts/xerox/ITCGaramond24-B-I-c361.ac.Z | Bin 399 -> 0 bytes .../fonts/xerox/ITCGaramond24-B-I-c41.ac.Z | Bin 131 -> 0 bytes obsolete/fonts/xerox/ITCGaramond24-B-c0.ac.Z | Bin 4342 -> 0 bytes .../fonts/xerox/ITCGaramond24-B-c356.ac.Z | Bin 298 -> 0 bytes .../fonts/xerox/ITCGaramond24-B-c357.ac.Z | Bin 324 -> 0 bytes .../fonts/xerox/ITCGaramond24-B-c360.ac.Z | Bin 245 -> 0 bytes .../fonts/xerox/ITCGaramond24-B-c361.ac.Z | Bin 385 -> 0 bytes obsolete/fonts/xerox/ITCGaramond24-B-c41.ac.Z | Bin 125 -> 0 bytes obsolete/fonts/xerox/ITCGaramond24-I-c0.ac.Z | Bin 4544 -> 0 bytes .../fonts/xerox/ITCGaramond24-I-c356.ac.Z | Bin 299 -> 0 bytes .../fonts/xerox/ITCGaramond24-I-c357.ac.Z | Bin 334 -> 0 bytes .../fonts/xerox/ITCGaramond24-I-c360.ac.Z | Bin 294 -> 0 bytes .../fonts/xerox/ITCGaramond24-I-c361.ac.Z | Bin 390 -> 0 bytes obsolete/fonts/xerox/ITCGaramond24-I-c41.ac.Z | Bin 128 -> 0 bytes obsolete/fonts/xerox/ITCGaramond24-c0.ac.Z | Bin 4148 -> 0 bytes obsolete/fonts/xerox/ITCGaramond24-c356.ac.Z | Bin 295 -> 0 bytes .../fonts/xerox/ITCGaramond30-B-I-c0.ac.Z | Bin 5827 -> 0 bytes .../fonts/xerox/ITCGaramond30-B-I-c356.ac.Z | Bin 304 -> 0 bytes .../fonts/xerox/ITCGaramond30-B-I-c357.ac.Z | Bin 330 -> 0 bytes .../fonts/xerox/ITCGaramond30-B-I-c360.ac.Z | Bin 389 -> 0 bytes .../fonts/xerox/ITCGaramond30-B-I-c361.ac.Z | Bin 423 -> 0 bytes .../fonts/xerox/ITCGaramond30-B-I-c41.ac.Z | Bin 126 -> 0 bytes obsolete/fonts/xerox/ITCGaramond30-B-c0.ac.Z | Bin 5165 -> 0 bytes .../fonts/xerox/ITCGaramond30-B-c356.ac.Z | Bin 303 -> 0 bytes .../fonts/xerox/ITCGaramond30-B-c357.ac.Z | Bin 328 -> 0 bytes .../fonts/xerox/ITCGaramond30-B-c360.ac.Z | Bin 282 -> 0 bytes .../fonts/xerox/ITCGaramond30-B-c361.ac.Z | Bin 410 -> 0 bytes obsolete/fonts/xerox/ITCGaramond30-B-c41.ac.Z | Bin 123 -> 0 bytes obsolete/fonts/xerox/ITCGaramond30-I-c0.ac.Z | Bin 5530 -> 0 bytes .../fonts/xerox/ITCGaramond30-I-c356.ac.Z | Bin 301 -> 0 bytes .../fonts/xerox/ITCGaramond30-I-c357.ac.Z | Bin 329 -> 0 bytes .../fonts/xerox/ITCGaramond30-I-c360.ac.Z | Bin 369 -> 0 bytes .../fonts/xerox/ITCGaramond30-I-c361.ac.Z | Bin 413 -> 0 bytes obsolete/fonts/xerox/ITCGaramond30-I-c41.ac.Z | Bin 126 -> 0 bytes obsolete/fonts/xerox/ITCGaramond30-c356.ac.Z | Bin 300 -> 0 bytes obsolete/fonts/xerox/ITCGaramond30-c357.ac.Z | Bin 329 -> 0 bytes obsolete/fonts/xerox/ITCGaramond30-c360.ac.Z | Bin 272 -> 0 bytes obsolete/fonts/xerox/ITCGaramond30-c361.ac.Z | Bin 404 -> 0 bytes obsolete/fonts/xerox/ITCGaramond30-c41.ac.Z | Bin 123 -> 0 bytes .../fonts/xerox/ITCGaramond36-B-I-c0.ac.Z | Bin 6700 -> 0 bytes .../fonts/xerox/ITCGaramond36-B-I-c356.ac.Z | Bin 305 -> 0 bytes .../fonts/xerox/ITCGaramond36-B-I-c357.ac.Z | Bin 340 -> 0 bytes .../fonts/xerox/ITCGaramond36-B-I-c360.ac.Z | Bin 500 -> 0 bytes .../fonts/xerox/ITCGaramond36-B-I-c361.ac.Z | Bin 479 -> 0 bytes .../fonts/xerox/ITCGaramond36-B-I-c41.ac.Z | Bin 133 -> 0 bytes obsolete/fonts/xerox/ITCGaramond36-B-c0.ac.Z | Bin 5979 -> 0 bytes .../fonts/xerox/ITCGaramond36-B-c356.ac.Z | Bin 310 -> 0 bytes .../fonts/xerox/ITCGaramond36-B-c357.ac.Z | Bin 338 -> 0 bytes .../fonts/xerox/ITCGaramond36-B-c360.ac.Z | Bin 346 -> 0 bytes .../fonts/xerox/ITCGaramond36-B-c361.ac.Z | Bin 463 -> 0 bytes obsolete/fonts/xerox/ITCGaramond36-B-c41.ac.Z | Bin 132 -> 0 bytes obsolete/fonts/xerox/ITCGaramond36-I-c0.ac.Z | Bin 6505 -> 0 bytes .../fonts/xerox/ITCGaramond36-I-c356.ac.Z | Bin 301 -> 0 bytes .../fonts/xerox/ITCGaramond36-I-c357.ac.Z | Bin 338 -> 0 bytes .../fonts/xerox/ITCGaramond36-I-c360.ac.Z | Bin 484 -> 0 bytes .../fonts/xerox/ITCGaramond36-I-c361.ac.Z | Bin 464 -> 0 bytes obsolete/fonts/xerox/ITCGaramond36-I-c41.ac.Z | Bin 129 -> 0 bytes obsolete/fonts/xerox/ITCGaramond36-c0.ac.Z | Bin 5712 -> 0 bytes obsolete/fonts/xerox/ITCGaramond36-c356.ac.Z | Bin 299 -> 0 bytes obsolete/fonts/xerox/ITCGaramond36-c357.ac.Z | Bin 328 -> 0 bytes obsolete/fonts/xerox/ITCGaramond36-c360.ac.Z | Bin 335 -> 0 bytes obsolete/fonts/xerox/ITCGaramond36-c361.ac.Z | Bin 453 -> 0 bytes obsolete/fonts/xerox/ITCGaramond36-c41.ac.Z | Bin 129 -> 0 bytes obsolete/fonts/xerox/Logo1.wd.Z | Bin 156 -> 0 bytes obsolete/fonts/xerox/Optima06-BIR-C0.wd.Z | Bin 232 -> 0 bytes obsolete/fonts/xerox/Optima06-BIR-C356.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima06-BIR-C357.wd.Z | Bin 123 -> 0 bytes obsolete/fonts/xerox/Optima06-BIR-C360.wd.Z | Bin 55 -> 0 bytes obsolete/fonts/xerox/Optima06-BIR-C361.wd.Z | Bin 162 -> 0 bytes obsolete/fonts/xerox/Optima06-BIR-C41.wd.Z | Bin 80 -> 0 bytes obsolete/fonts/xerox/Optima06-BIR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima06-BIR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima06-BRR-C0.wd.Z | Bin 231 -> 0 bytes obsolete/fonts/xerox/Optima06-BRR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima06-BRR-C357.wd.Z | Bin 123 -> 0 bytes obsolete/fonts/xerox/Optima06-BRR-C360.wd.Z | Bin 54 -> 0 bytes obsolete/fonts/xerox/Optima06-BRR-C361.wd.Z | Bin 159 -> 0 bytes obsolete/fonts/xerox/Optima06-BRR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima06-BRR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima06-BRR-C43.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima06-MIR-C0.wd.Z | Bin 230 -> 0 bytes obsolete/fonts/xerox/Optima06-MIR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima06-MIR-C357.wd.Z | Bin 123 -> 0 bytes obsolete/fonts/xerox/Optima06-MIR-C360.wd.Z | Bin 56 -> 0 bytes obsolete/fonts/xerox/Optima06-MIR-C361.wd.Z | Bin 160 -> 0 bytes obsolete/fonts/xerox/Optima06-MIR-C41.wd.Z | Bin 80 -> 0 bytes obsolete/fonts/xerox/Optima06-MIR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima06-MIR-C43.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima06-MRR-C0.wd.Z | Bin 230 -> 0 bytes obsolete/fonts/xerox/Optima06-MRR-C356.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima06-MRR-C357.wd.Z | Bin 124 -> 0 bytes obsolete/fonts/xerox/Optima06-MRR-C360.wd.Z | Bin 55 -> 0 bytes obsolete/fonts/xerox/Optima06-MRR-C361.wd.Z | Bin 161 -> 0 bytes obsolete/fonts/xerox/Optima06-MRR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima06-MRR-C42.wd.Z | Bin 46 -> 0 bytes obsolete/fonts/xerox/Optima06-MRR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima07-BIR-C0.wd.Z | Bin 236 -> 0 bytes obsolete/fonts/xerox/Optima07-BIR-C356.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima07-BIR-C357.wd.Z | Bin 124 -> 0 bytes obsolete/fonts/xerox/Optima07-BIR-C360.wd.Z | Bin 57 -> 0 bytes obsolete/fonts/xerox/Optima07-BIR-C361.wd.Z | Bin 168 -> 0 bytes obsolete/fonts/xerox/Optima07-BIR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima07-BIR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima07-BIR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima07-BRR-C0.wd.Z | Bin 236 -> 0 bytes obsolete/fonts/xerox/Optima07-BRR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima07-BRR-C357.wd.Z | Bin 124 -> 0 bytes obsolete/fonts/xerox/Optima07-BRR-C360.wd.Z | Bin 55 -> 0 bytes obsolete/fonts/xerox/Optima07-BRR-C361.wd.Z | Bin 159 -> 0 bytes obsolete/fonts/xerox/Optima07-BRR-C41.wd.Z | Bin 80 -> 0 bytes obsolete/fonts/xerox/Optima07-BRR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima07-BRR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima07-MIR-C0.wd.Z | Bin 236 -> 0 bytes obsolete/fonts/xerox/Optima07-MIR-C356.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima07-MIR-C357.wd.Z | Bin 126 -> 0 bytes obsolete/fonts/xerox/Optima07-MIR-C360.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima07-MIR-C361.wd.Z | Bin 163 -> 0 bytes obsolete/fonts/xerox/Optima07-MIR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima07-MIR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima07-MIR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima07-MRR-C0.wd.Z | Bin 232 -> 0 bytes obsolete/fonts/xerox/Optima07-MRR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima07-MRR-C357.wd.Z | Bin 124 -> 0 bytes obsolete/fonts/xerox/Optima07-MRR-C360.wd.Z | Bin 55 -> 0 bytes obsolete/fonts/xerox/Optima07-MRR-C361.wd.Z | Bin 160 -> 0 bytes obsolete/fonts/xerox/Optima07-MRR-C41.wd.Z | Bin 80 -> 0 bytes obsolete/fonts/xerox/Optima07-MRR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima07-MRR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima08-BIR-C0.wd.Z | Bin 242 -> 0 bytes obsolete/fonts/xerox/Optima08-BIR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima08-BIR-C357.wd.Z | Bin 124 -> 0 bytes obsolete/fonts/xerox/Optima08-BIR-C360.wd.Z | Bin 52 -> 0 bytes obsolete/fonts/xerox/Optima08-BIR-C361.wd.Z | Bin 167 -> 0 bytes obsolete/fonts/xerox/Optima08-BIR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima08-BIR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima08-BIR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima08-BRR-C0.wd.Z | Bin 241 -> 0 bytes obsolete/fonts/xerox/Optima08-BRR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima08-BRR-C357.wd.Z | Bin 123 -> 0 bytes obsolete/fonts/xerox/Optima08-BRR-C360.wd.Z | Bin 54 -> 0 bytes obsolete/fonts/xerox/Optima08-BRR-C361.wd.Z | Bin 163 -> 0 bytes obsolete/fonts/xerox/Optima08-BRR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima08-BRR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima08-BRR-C43.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima08-MIR-C0.wd.Z | Bin 246 -> 0 bytes obsolete/fonts/xerox/Optima08-MIR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima08-MIR-C357.wd.Z | Bin 126 -> 0 bytes obsolete/fonts/xerox/Optima08-MIR-C360.wd.Z | Bin 54 -> 0 bytes obsolete/fonts/xerox/Optima08-MIR-C361.wd.Z | Bin 162 -> 0 bytes obsolete/fonts/xerox/Optima08-MIR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima08-MIR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima08-MIR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima08-MRR-C0.wd.Z | Bin 240 -> 0 bytes obsolete/fonts/xerox/Optima08-MRR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima08-MRR-C357.wd.Z | Bin 126 -> 0 bytes obsolete/fonts/xerox/Optima08-MRR-C360.wd.Z | Bin 54 -> 0 bytes obsolete/fonts/xerox/Optima08-MRR-C361.wd.Z | Bin 164 -> 0 bytes obsolete/fonts/xerox/Optima08-MRR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima08-MRR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima08-MRR-C43.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima09-BIR-C0.wd.Z | Bin 248 -> 0 bytes obsolete/fonts/xerox/Optima09-BIR-C356.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima09-BIR-C357.wd.Z | Bin 125 -> 0 bytes obsolete/fonts/xerox/Optima09-BIR-C360.wd.Z | Bin 53 -> 0 bytes obsolete/fonts/xerox/Optima09-BIR-C361.wd.Z | Bin 163 -> 0 bytes obsolete/fonts/xerox/Optima09-BIR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima09-BIR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima09-BIR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima09-BRR-C0.wd.Z | Bin 242 -> 0 bytes obsolete/fonts/xerox/Optima09-BRR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima09-BRR-C357.wd.Z | Bin 124 -> 0 bytes obsolete/fonts/xerox/Optima09-BRR-C360.wd.Z | Bin 54 -> 0 bytes obsolete/fonts/xerox/Optima09-BRR-C361.wd.Z | Bin 163 -> 0 bytes obsolete/fonts/xerox/Optima09-BRR-C41.wd.Z | Bin 81 -> 0 bytes obsolete/fonts/xerox/Optima09-BRR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima09-BRR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima09-MIR-C0.wd.Z | Bin 249 -> 0 bytes obsolete/fonts/xerox/Optima09-MIR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima09-MIR-C357.wd.Z | Bin 127 -> 0 bytes obsolete/fonts/xerox/Optima09-MIR-C360.wd.Z | Bin 55 -> 0 bytes obsolete/fonts/xerox/Optima09-MIR-C361.wd.Z | Bin 167 -> 0 bytes obsolete/fonts/xerox/Optima09-MIR-C41.wd.Z | Bin 81 -> 0 bytes obsolete/fonts/xerox/Optima09-MIR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima09-MIR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima09-MRR-C0.wd.Z | Bin 242 -> 0 bytes obsolete/fonts/xerox/Optima09-MRR-C356.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima09-MRR-C357.wd | Bin 494 -> 0 bytes obsolete/fonts/xerox/Optima09-MRR-C357.wd.Z | Bin 126 -> 0 bytes obsolete/fonts/xerox/Optima09-MRR-C360.wd.Z | Bin 55 -> 0 bytes obsolete/fonts/xerox/Optima09-MRR-C361.wd.Z | Bin 164 -> 0 bytes obsolete/fonts/xerox/Optima09-MRR-C41.wd.Z | Bin 81 -> 0 bytes obsolete/fonts/xerox/Optima09-MRR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima09-MRR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima10-BIR-C0.wd.Z | Bin 249 -> 0 bytes obsolete/fonts/xerox/Optima10-BIR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima10-BIR-C357.wd.Z | Bin 126 -> 0 bytes obsolete/fonts/xerox/Optima10-BIR-C360.wd.Z | Bin 53 -> 0 bytes obsolete/fonts/xerox/Optima10-BIR-C361.wd.Z | Bin 164 -> 0 bytes obsolete/fonts/xerox/Optima10-BIR-C41.wd.Z | Bin 81 -> 0 bytes obsolete/fonts/xerox/Optima10-BIR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima10-BIR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima10-BRR-C0.wd.Z | Bin 246 -> 0 bytes obsolete/fonts/xerox/Optima10-BRR-C356.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima10-BRR-C357.wd.Z | Bin 125 -> 0 bytes obsolete/fonts/xerox/Optima10-BRR-C360.wd.Z | Bin 53 -> 0 bytes obsolete/fonts/xerox/Optima10-BRR-C361.wd.Z | Bin 160 -> 0 bytes obsolete/fonts/xerox/Optima10-BRR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima10-BRR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima10-BRR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima10-MIR-C0.wd.Z | Bin 249 -> 0 bytes obsolete/fonts/xerox/Optima10-MIR-C356.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima10-MIR-C357.wd.Z | Bin 126 -> 0 bytes obsolete/fonts/xerox/Optima10-MIR-C360.wd.Z | Bin 46 -> 0 bytes obsolete/fonts/xerox/Optima10-MIR-C361.wd.Z | Bin 167 -> 0 bytes obsolete/fonts/xerox/Optima10-MIR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima10-MIR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima10-MIR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima10-MRR-C0.wd.Z | Bin 246 -> 0 bytes obsolete/fonts/xerox/Optima10-MRR-C356.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima10-MRR-C357.wd.Z | Bin 125 -> 0 bytes obsolete/fonts/xerox/Optima10-MRR-C360.wd.Z | Bin 53 -> 0 bytes obsolete/fonts/xerox/Optima10-MRR-C361.wd.Z | Bin 168 -> 0 bytes obsolete/fonts/xerox/Optima10-MRR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima10-MRR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima10-MRR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima11-BIR-C0.wd.Z | Bin 251 -> 0 bytes obsolete/fonts/xerox/Optima11-BIR-C356.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima11-BIR-C357.wd.Z | Bin 126 -> 0 bytes obsolete/fonts/xerox/Optima11-BIR-C360.wd.Z | Bin 55 -> 0 bytes obsolete/fonts/xerox/Optima11-BIR-C361.wd.Z | Bin 168 -> 0 bytes obsolete/fonts/xerox/Optima11-BIR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima11-BIR-C42.wd.Z | Bin 46 -> 0 bytes obsolete/fonts/xerox/Optima11-BIR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima11-BRR-C0.wd.Z | Bin 246 -> 0 bytes obsolete/fonts/xerox/Optima11-BRR-C356.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima11-BRR-C357.wd.Z | Bin 127 -> 0 bytes obsolete/fonts/xerox/Optima11-BRR-C360.wd.Z | Bin 54 -> 0 bytes obsolete/fonts/xerox/Optima11-BRR-C361.wd.Z | Bin 163 -> 0 bytes obsolete/fonts/xerox/Optima11-BRR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima11-BRR-C42.wd.Z | Bin 46 -> 0 bytes obsolete/fonts/xerox/Optima11-BRR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima11-MIR-C0.wd.Z | Bin 249 -> 0 bytes obsolete/fonts/xerox/Optima11-MIR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima11-MIR-C357.wd.Z | Bin 128 -> 0 bytes obsolete/fonts/xerox/Optima11-MIR-C360.wd.Z | Bin 55 -> 0 bytes obsolete/fonts/xerox/Optima11-MIR-C361.wd.Z | Bin 164 -> 0 bytes obsolete/fonts/xerox/Optima11-MIR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima11-MIR-C42.wd.Z | Bin 46 -> 0 bytes obsolete/fonts/xerox/Optima11-MIR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima11-MRR-C0.wd.Z | Bin 251 -> 0 bytes obsolete/fonts/xerox/Optima11-MRR-C356.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima11-MRR-C357.wd.Z | Bin 127 -> 0 bytes obsolete/fonts/xerox/Optima11-MRR-C360.wd.Z | Bin 54 -> 0 bytes obsolete/fonts/xerox/Optima11-MRR-C361.wd.Z | Bin 162 -> 0 bytes obsolete/fonts/xerox/Optima11-MRR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima11-MRR-C42.wd.Z | Bin 46 -> 0 bytes obsolete/fonts/xerox/Optima11-MRR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima12-BIR-C0.wd.Z | Bin 248 -> 0 bytes obsolete/fonts/xerox/Optima12-BIR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima12-BIR-C357.wd.Z | Bin 127 -> 0 bytes obsolete/fonts/xerox/Optima12-BIR-C360.wd.Z | Bin 54 -> 0 bytes obsolete/fonts/xerox/Optima12-BIR-C361.wd.Z | Bin 167 -> 0 bytes obsolete/fonts/xerox/Optima12-BIR-C41.wd.Z | Bin 81 -> 0 bytes obsolete/fonts/xerox/Optima12-BIR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima12-BIR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima12-BRR-C0.wd.Z | Bin 251 -> 0 bytes obsolete/fonts/xerox/Optima12-BRR-C356.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima12-BRR-C357.wd.Z | Bin 126 -> 0 bytes obsolete/fonts/xerox/Optima12-BRR-C360.wd.Z | Bin 54 -> 0 bytes obsolete/fonts/xerox/Optima12-BRR-C361.wd.Z | Bin 169 -> 0 bytes obsolete/fonts/xerox/Optima12-BRR-C41.wd.Z | Bin 81 -> 0 bytes obsolete/fonts/xerox/Optima12-BRR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima12-BRR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima12-MIR-C0.wd.Z | Bin 248 -> 0 bytes obsolete/fonts/xerox/Optima12-MIR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima12-MIR-C357.wd.Z | Bin 127 -> 0 bytes obsolete/fonts/xerox/Optima12-MIR-C360.wd.Z | Bin 55 -> 0 bytes obsolete/fonts/xerox/Optima12-MIR-C361.wd.Z | Bin 163 -> 0 bytes obsolete/fonts/xerox/Optima12-MIR-C41.wd.Z | Bin 81 -> 0 bytes obsolete/fonts/xerox/Optima12-MIR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima12-MIR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima12-MRR-C0.wd.Z | Bin 244 -> 0 bytes obsolete/fonts/xerox/Optima12-MRR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima12-MRR-C357.wd.Z | Bin 126 -> 0 bytes obsolete/fonts/xerox/Optima12-MRR-C360.wd.Z | Bin 54 -> 0 bytes obsolete/fonts/xerox/Optima12-MRR-C361.wd.Z | Bin 165 -> 0 bytes obsolete/fonts/xerox/Optima12-MRR-C41.wd.Z | Bin 81 -> 0 bytes obsolete/fonts/xerox/Optima12-MRR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima12-MRR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima14-BIR-C0.wd.Z | Bin 253 -> 0 bytes obsolete/fonts/xerox/Optima14-BIR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima14-BIR-C357.wd.Z | Bin 128 -> 0 bytes obsolete/fonts/xerox/Optima14-BIR-C360.wd.Z | Bin 55 -> 0 bytes obsolete/fonts/xerox/Optima14-BIR-C361.wd.Z | Bin 168 -> 0 bytes obsolete/fonts/xerox/Optima14-BIR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima14-BIR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima14-BIR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima14-BRR-C0.wd.Z | Bin 257 -> 0 bytes obsolete/fonts/xerox/Optima14-BRR-C356.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima14-BRR-C357.wd.Z | Bin 127 -> 0 bytes obsolete/fonts/xerox/Optima14-BRR-C360.wd.Z | Bin 54 -> 0 bytes obsolete/fonts/xerox/Optima14-BRR-C361.wd.Z | Bin 164 -> 0 bytes obsolete/fonts/xerox/Optima14-BRR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima14-BRR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima14-BRR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima14-MIR-C0.wd.Z | Bin 248 -> 0 bytes obsolete/fonts/xerox/Optima14-MIR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima14-MIR-C357.wd.Z | Bin 128 -> 0 bytes obsolete/fonts/xerox/Optima14-MIR-C360.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima14-MIR-C361.wd.Z | Bin 163 -> 0 bytes obsolete/fonts/xerox/Optima14-MIR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima14-MIR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima14-MIR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima14-MRR-C0.wd.Z | Bin 253 -> 0 bytes obsolete/fonts/xerox/Optima14-MRR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima14-MRR-C357.wd.Z | Bin 127 -> 0 bytes obsolete/fonts/xerox/Optima14-MRR-C360.wd.Z | Bin 54 -> 0 bytes obsolete/fonts/xerox/Optima14-MRR-C361.wd.Z | Bin 167 -> 0 bytes obsolete/fonts/xerox/Optima14-MRR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima14-MRR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima14-MRR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima18-BIR-C0.wd.Z | Bin 268 -> 0 bytes obsolete/fonts/xerox/Optima18-BIR-C356.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima18-BIR-C357.wd.Z | Bin 126 -> 0 bytes obsolete/fonts/xerox/Optima18-BIR-C360.wd.Z | Bin 56 -> 0 bytes obsolete/fonts/xerox/Optima18-BIR-C361.wd.Z | Bin 163 -> 0 bytes obsolete/fonts/xerox/Optima18-BIR-C41.wd.Z | Bin 81 -> 0 bytes obsolete/fonts/xerox/Optima18-BIR-C42.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima18-BIR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima18-BRR-C0.wd.Z | Bin 260 -> 0 bytes obsolete/fonts/xerox/Optima18-BRR-C356.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima18-BRR-C357.wd.Z | Bin 125 -> 0 bytes obsolete/fonts/xerox/Optima18-BRR-C360.wd.Z | Bin 56 -> 0 bytes obsolete/fonts/xerox/Optima18-BRR-C361.wd.Z | Bin 165 -> 0 bytes obsolete/fonts/xerox/Optima18-BRR-C41.wd.Z | Bin 81 -> 0 bytes obsolete/fonts/xerox/Optima18-BRR-C42.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima18-BRR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima18-MIR-C0.wd.Z | Bin 267 -> 0 bytes obsolete/fonts/xerox/Optima18-MIR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima18-MIR-C357.wd.Z | Bin 128 -> 0 bytes obsolete/fonts/xerox/Optima18-MIR-C360.wd.Z | Bin 55 -> 0 bytes obsolete/fonts/xerox/Optima18-MIR-C361.wd.Z | Bin 165 -> 0 bytes obsolete/fonts/xerox/Optima18-MIR-C41.wd.Z | Bin 81 -> 0 bytes obsolete/fonts/xerox/Optima18-MIR-C42.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima18-MIR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima18-MRR-C0.wd.Z | Bin 270 -> 0 bytes obsolete/fonts/xerox/Optima18-MRR-C356.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima18-MRR-C357.wd.Z | Bin 127 -> 0 bytes obsolete/fonts/xerox/Optima18-MRR-C360.wd.Z | Bin 56 -> 0 bytes obsolete/fonts/xerox/Optima18-MRR-C361.wd.Z | Bin 167 -> 0 bytes obsolete/fonts/xerox/Optima18-MRR-C41.wd.Z | Bin 81 -> 0 bytes obsolete/fonts/xerox/Optima18-MRR-C42.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima18-MRR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima24-BIR-C0.wd.Z | Bin 270 -> 0 bytes obsolete/fonts/xerox/Optima24-BIR-C356.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima24-BIR-C357.wd.Z | Bin 124 -> 0 bytes obsolete/fonts/xerox/Optima24-BIR-C360.wd.Z | Bin 56 -> 0 bytes obsolete/fonts/xerox/Optima24-BIR-C361.wd.Z | Bin 167 -> 0 bytes obsolete/fonts/xerox/Optima24-BIR-C41.wd.Z | Bin 81 -> 0 bytes obsolete/fonts/xerox/Optima24-BIR-C42.wd.Z | Bin 47 -> 0 bytes obsolete/fonts/xerox/Optima24-BIR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima24-BRR-C0.wd.Z | Bin 268 -> 0 bytes obsolete/fonts/xerox/Optima24-BRR-C356.wd.Z | Bin 51 -> 0 bytes obsolete/fonts/xerox/Optima24-BRR-C357.wd.Z | Bin 126 -> 0 bytes obsolete/fonts/xerox/Optima24-BRR-C360.wd.Z | Bin 57 -> 0 bytes obsolete/fonts/xerox/Optima24-BRR-C361.wd.Z | Bin 165 -> 0 bytes obsolete/fonts/xerox/Optima24-BRR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima24-BRR-C42.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima24-BRR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima24-MIR-C0.wd.Z | Bin 275 -> 0 bytes obsolete/fonts/xerox/Optima24-MIR-C356.wd.Z | Bin 51 -> 0 bytes obsolete/fonts/xerox/Optima24-MIR-C357.wd.Z | Bin 128 -> 0 bytes obsolete/fonts/xerox/Optima24-MIR-C360.wd.Z | Bin 55 -> 0 bytes obsolete/fonts/xerox/Optima24-MIR-C361.wd.Z | Bin 169 -> 0 bytes obsolete/fonts/xerox/Optima24-MIR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima24-MIR-C42.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima24-MIR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/Optima24-MRR-C0.wd.Z | Bin 272 -> 0 bytes obsolete/fonts/xerox/Optima24-MRR-C356.wd.Z | Bin 51 -> 0 bytes obsolete/fonts/xerox/Optima24-MRR-C357.wd.Z | Bin 127 -> 0 bytes obsolete/fonts/xerox/Optima24-MRR-C360.wd.Z | Bin 56 -> 0 bytes obsolete/fonts/xerox/Optima24-MRR-C361.wd.Z | Bin 168 -> 0 bytes obsolete/fonts/xerox/Optima24-MRR-C41.wd.Z | Bin 82 -> 0 bytes obsolete/fonts/xerox/Optima24-MRR-C42.wd.Z | Bin 48 -> 0 bytes obsolete/fonts/xerox/Optima24-MRR-C43.wd.Z | Bin 50 -> 0 bytes obsolete/fonts/xerox/OptimaItalic.NovaFont | Bin 295664 -> 0 bytes obsolete/fonts/xerox/OptimaMedium.NovaFont | Bin 293384 -> 0 bytes obsolete/fonts/xerox/README.TXT | 3 - obsolete/fonts/xerox/ShimmerWide.wd.Z | Bin 640 -> 0 bytes obsolete/fonts/xerox/ShimmerWideMIR.wd.Z | Bin 261 -> 0 bytes obsolete/fonts/xerox/ShimmerWideMRR.wd.Z | Bin 261 -> 0 bytes obsolete/fonts/xerox/Souvenir.wd.Z | Bin 1601 -> 0 bytes obsolete/fonts/xerox/SouvenirBIRC0.wd.Z | Bin 293 -> 0 bytes obsolete/fonts/xerox/SouvenirBRRC0.wd.Z | Bin 287 -> 0 bytes obsolete/fonts/xerox/SouvenirMIRC0.wd.Z | Bin 289 -> 0 bytes obsolete/fonts/xerox/SouvenirMRRC0.wd.Z | Bin 293 -> 0 bytes obsolete/fonts/xerox/TROFF.wd.Z | Bin 1358 -> 0 bytes obsolete/fonts/xerox/TROFFFonts.widths | Bin 6406 -> 0 bytes obsolete/fonts/xerox/Times10-C0.wd.Z | Bin 1393 -> 0 bytes obsolete/fonts/xerox/Times12-C0.wd.Z | Bin 1393 -> 0 bytes obsolete/fonts/xerox/Times14-C0.wd.Z | Bin 1393 -> 0 bytes obsolete/fonts/xerox/Times18-C0.wd.Z | Bin 1393 -> 0 bytes obsolete/fonts/xerox/Times24-C0.wd.Z | Bin 1393 -> 0 bytes obsolete/fonts/xerox/Times36-C0.wd.Z | Bin 1393 -> 0 bytes obsolete/fonts/xerox/Times8-C0.wd.Z | Bin 1393 -> 0 bytes .../fonts/xerox/Xerox.XC1-1-1.FlemishScriptII | Bin 769104 -> 0 bytes obsolete/fonts/xerox/Xerox.XC1-1-1.Gacha | Bin 85452 -> 0 bytes .../xerox/Xerox.XC1-1-1.ITCBauhaus.Bold.Z | Bin 155066 -> 0 bytes .../fonts/xerox/Xerox.XC1-1-1.ITCBauhaus.Z | Bin 151105 -> 0 bytes .../Xerox.XC1-1-1.ITCGaramond.Bold.Italic.Z | Bin 207997 -> 0 bytes .../xerox/Xerox.XC1-1-1.ITCGaramond.Bold.Z | Bin 183443 -> 0 bytes .../xerox/Xerox.XC1-1-1.ITCGaramond.Italic.Z | Bin 200161 -> 0 bytes .../fonts/xerox/Xerox.XC1-1-1.ITCGaramond.Z | Bin 173151 -> 0 bytes .../xerox/Xerox.XC1-1-1.Optima.Bold.Italic.Z | Bin 163888 -> 0 bytes .../fonts/xerox/Xerox.XC1-1-1.Optima.Bold.Z | Bin 152955 -> 0 bytes .../fonts/xerox/Xerox.XC1-1-1.Optima.Italic.Z | Bin 157681 -> 0 bytes obsolete/fonts/xerox/Xerox.XC1-1-1.Optima.Z | Bin 148641 -> 0 bytes .../Xerox.XC1-1-1.Souvenir.Bold.Italic.Z | Bin 172908 -> 0 bytes .../fonts/xerox/Xerox.XC1-1-1.Souvenir.Bold.Z | Bin 163635 -> 0 bytes .../xerox/Xerox.XC1-1-1.Souvenir.Italic.Z | Bin 161162 -> 0 bytes obsolete/fonts/xerox/Xerox.XC1-1-1.Souvenir.Z | Bin 166643 -> 0 bytes .../xerox/Xerox.XC1-1-1.Times.Bold.Italic.Z | Bin 169909 -> 0 bytes .../fonts/xerox/Xerox.XC1-1-1.Times.Bold.Z | Bin 152980 -> 0 bytes .../fonts/xerox/Xerox.XC1-1-1.Times.Italic.Z | Bin 165373 -> 0 bytes obsolete/fonts/xerox/Xerox.XC1-1-1.Times.Z | Bin 153037 -> 0 bytes obsolete/fonts/xerox/itcberkeley.wd.Z | Bin 1847 -> 0 bytes obsolete/fonts/xerox/tffonts.widths | Bin 45408 -> 0 bytes obsolete/greetfiles/INIT | Bin 25582 -> 0 bytes obsolete/greetfiles/INIT.LCOM | Bin 14347 -> 0 bytes obsolete/greetfiles/LOCAL-INIT | 55 - obsolete/greetfiles/LOCAL-INIT.LCOM | Bin 6566 -> 0 bytes obsolete/greetfiles/PARC-INIT | 433 -- obsolete/greetfiles/PARC-INIT.LCOM | Bin 18973 -> 0 bytes obsolete/internal/ABC | 62 - obsolete/internal/ABC.LCOM | 1 - obsolete/internal/library/DICOLOR | 466 -- obsolete/internal/library/DICOLOR.LCOM | Bin 6396 -> 0 bytes obsolete/library/CHARS | 17 - obsolete/library/FX-80DRIVER | 4346 ------------ obsolete/library/FX-80DRIVER.LCOM | Bin 99157 -> 0 bytes obsolete/library/FX-80Driver.tedit | 40 - obsolete/library/IPFONTSAMPLE | 391 -- obsolete/library/IPFONTSAMPLE.LCOM | Bin 6846 -> 0 bytes obsolete/library/IPFONTSAMPLE.TEDIT | Bin 8844 -> 0 bytes obsolete/library/PRESS | 2786 -------- obsolete/library/PRESS.LCOM | Bin 42993 -> 0 bytes obsolete/library/Press.tedit | Bin 5758 -> 0 bytes obsolete/library/TABLEBROWSERDECLS | 137 - obsolete/library/TABLEBROWSERDECLS.LCOM | 1 - obsolete/library/TBDECLS | 150 - obsolete/library/TBDECLS.LCOM | 1 - obsolete/library/UNIXPRINTCOMMAND | 78 - obsolete/library/UNIXPRINTCOMMAND.LCOM | Bin 1273 -> 0 bytes obsolete/library/new/PCTREE | 572 -- obsolete/library/new/TEDIT | 2226 ------- obsolete/library/new/TEDIT.LCOM | Bin 37179 -> 0 bytes obsolete/library/new/TEDITABBREV.LCOM | Bin 6463 -> 0 bytes obsolete/library/new/TEDITCOMMAND.LCOM | Bin 16503 -> 0 bytes obsolete/library/new/TEDITDCL | 1654 ----- obsolete/library/new/TEDITDCL.LCOM | 1 - obsolete/library/new/TEDITFILE | 3620 ---------- obsolete/library/new/TEDITFILE.LCOM | Bin 59450 -> 0 bytes obsolete/library/new/TEDITFIND.LCOM | Bin 9749 -> 0 bytes obsolete/library/new/TEDITFNKEYS.LCOM | Bin 13514 -> 0 bytes obsolete/library/new/TEDITHCPY.LCOM | Bin 22078 -> 0 bytes obsolete/library/new/TEDITHISTORY | 622 -- obsolete/library/new/TEDITHISTORY.LCOM | Bin 10890 -> 0 bytes obsolete/library/new/TEDITLOOKS.LCOM | Bin 45264 -> 0 bytes obsolete/library/new/TEDITMENU | 4538 ------------- obsolete/library/new/TEDITMENU.LCOM | Bin 91656 -> 0 bytes obsolete/library/new/TEDITPAGE.LCOM | Bin 28035 -> 0 bytes obsolete/library/new/TEDITSCREEN.LCOM | Bin 38741 -> 0 bytes obsolete/library/new/TEDITSELECTION.LCOM | Bin 34965 -> 0 bytes obsolete/library/new/TEDITWINDOW.LCOM | Bin 54033 -> 0 bytes obsolete/library/new/TEXTOFD | 2637 -------- obsolete/library/new/TEXTOFD.LCOM | Bin 38047 -> 0 bytes obsolete/library/patches/NEW-SKETCH-COLOR | 1 - obsolete/lispusers/ARCHIVEBROWSER | 506 -- obsolete/lispusers/ARCHIVEBROWSER.LCOM | Bin 27498 -> 0 bytes obsolete/lispusers/ARCHIVETOOL | 1321 ---- obsolete/lispusers/ARCHIVETOOL.LCOM | Bin 36948 -> 0 bytes obsolete/lispusers/BIGGER-FONT | 33 - obsolete/lispusers/BIGGER-FONT.LCOM | 1 - obsolete/lispusers/COLOR | 1 - obsolete/lispusers/COLOROBJ | 166 - obsolete/lispusers/COLOROBJ.LCOM | Bin 3729 -> 0 bytes obsolete/lispusers/COLOROBJ.TEDIT | Bin 2501 -> 0 bytes obsolete/lispusers/EDITKEYS | 141 - obsolete/lispusers/EDITKEYS.LCOM | Bin 3680 -> 0 bytes obsolete/lispusers/EDITKEYS.TEDIT | Bin 3774 -> 0 bytes obsolete/lispusers/ENDNOTE | 419 -- obsolete/lispusers/EVAL-WHEN-PATCH | 1 - obsolete/lispusers/FASTEDITBM | 1431 ---- obsolete/lispusers/FONTDECLS | 207 - obsolete/lispusers/HGRAPH | 281 - obsolete/lispusers/HGRAPH.LCOM | Bin 4271 -> 0 bytes obsolete/lispusers/HOSTUP | 185 - obsolete/lispusers/HOSTUP.TEDIT | Bin 3382 -> 0 bytes obsolete/lispusers/INDEX | 588 -- obsolete/lispusers/IRIS.TEdit | Bin 34594 -> 0 bytes obsolete/lispusers/IRISCONSTANTS | 1708 ----- obsolete/lispusers/IRISDEMOFNS | 469 -- obsolete/lispusers/IRISIO | 574 -- obsolete/lispusers/IRISLIB | 3943 ----------- obsolete/lispusers/IRISNET | 279 - obsolete/lispusers/IRISSTREAM | 1314 ---- obsolete/lispusers/IRISVIEW | 1274 ---- obsolete/lispusers/KOTOLOGO | 70 - obsolete/lispusers/KOTOLOGO.TEDIT | Bin 11140 -> 0 bytes obsolete/lispusers/LISPNERD | 223 - obsolete/lispusers/LISPNERD.TEDIT | Bin 5071 -> 0 bytes obsolete/lispusers/LOADIRIS | 246 - obsolete/lispusers/LUPINE | 1485 ----- obsolete/lispusers/LoadPatches | 72 - obsolete/lispusers/MATHSERVER | 3637 ----------- obsolete/lispusers/MATHSERVER.COMMANDFILES | 13 - obsolete/lispusers/MATHSERVER.LCOM | Bin 67222 -> 0 bytes obsolete/lispusers/MATHSERVERPLOT.LCOM | Bin 29243 -> 0 bytes obsolete/lispusers/MATHTONS | 28 - obsolete/lispusers/MATHTONS.TEDIT | Bin 2734 -> 0 bytes obsolete/lispusers/MATRIXOPS | 1005 --- obsolete/lispusers/MESATOLISP | 5810 ----------------- obsolete/lispusers/MICROTEK | 344 - obsolete/lispusers/MICROTEK.LCOM | Bin 50092 -> 0 bytes obsolete/lispusers/MICROTEKPRINT | 187 - obsolete/lispusers/MICROTEKPRINT.LCOM | Bin 5751 -> 0 bytes obsolete/lispusers/MTP | 737 --- obsolete/lispusers/NGROUP | 1102 ---- obsolete/lispusers/NOTECARDS-4045XLPPATCH | 47 - obsolete/lispusers/NSALLOCATION | 106 - obsolete/lispusers/NSCOPYFILE | 37 - obsolete/lispusers/NSCOPYFILE.LCOM | Bin 1694 -> 0 bytes obsolete/lispusers/NSCOPYFILE.TEDIT | Bin 5238 -> 0 bytes obsolete/lispusers/NSREADERPATCH | 19 - obsolete/lispusers/NSROUTINGHASH | 206 - obsolete/lispusers/NSTHASIZE | 256 - obsolete/lispusers/OSS-LYRIC-PATCHES | 31 - obsolete/lispusers/PACKED-STRUCTURE | 24 - obsolete/lispusers/PACKED-STRUCTURE.LCOM | 1 - obsolete/lispusers/PATCH-LARGEIPBITMAP | 111 - obsolete/lispusers/PATCH-TWOSIDED | 169 - obsolete/lispusers/POSTSCRIPT-old/POSTSCRIPT | 1 - .../lispusers/POSTSCRIPT-old/POSTSCRIPT.PS | 1 - .../lispusers/POSTSCRIPT-old/PostScript.TEDIT | 14 - obsolete/lispusers/PRESSFROMNS | 1387 ---- obsolete/lispusers/PRESSFROMNS.TEDIT | Bin 9032 -> 0 bytes obsolete/lispusers/PS-PATCH | 434 -- obsolete/lispusers/PS-RS232 | 76 - obsolete/lispusers/PS-RS232.TEDIT | Bin 3223 -> 0 bytes obsolete/lispusers/PS-SKETCH-PATCH | 440 -- obsolete/lispusers/PS-SKETCH-PATCH.LCOM | Bin 7071 -> 0 bytes obsolete/lispusers/PS-SKETCH-PATCH.TEDIT | Bin 2289 -> 0 bytes obsolete/lispusers/PS-patch.tedit | Bin 2443 -> 0 bytes obsolete/lispusers/PSCFONT-FIX-FILENAME | 84 - obsolete/lispusers/READDISPLAYFONT | 110 - obsolete/lispusers/READDISPLAYFONT.LCOM | Bin 2127 -> 0 bytes obsolete/lispusers/READDISPLAYFONT.TEDIT | Bin 3415 -> 0 bytes obsolete/lispusers/REGISTER-MACHINE | 101 - obsolete/lispusers/SINGLEFILEINDEX | 1057 --- obsolete/lispusers/TEDITDORADOKEYS | 124 - obsolete/lispusers/TEDITDORADOKEYS.LCOM | Bin 3405 -> 0 bytes obsolete/lispusers/TEDITDORADOKEYS.TEDIT | Bin 2606 -> 0 bytes obsolete/lispusers/TEDITKEY | 1862 ------ obsolete/lispusers/TEDITKEY.LCOM | Bin 39424 -> 0 bytes obsolete/lispusers/TEDITKEY.TEDIT | 149 - obsolete/lispusers/TKDORADO | 243 - obsolete/lispusers/TKDORADO.TEDIT | Bin 3066 -> 0 bytes obsolete/lispusers/UPCSTATS | 297 - obsolete/lispusers/UPCSTATS.TEDIT | Bin 2971 -> 0 bytes obsolete/lispusers/XORCURSORPATCH | 34 - obsolete/lispusers/XORCursorPatch.TEdit | Bin 4359 -> 0 bytes obsolete/lispusers/XREF | 311 - obsolete/lispusers/c150fonts/C150STREAM | 2193 ------- .../lispusers/c150fonts/CLASSIC10-C0.C150FONT | Bin 8668 -> 0 bytes .../lispusers/c150fonts/CLASSIC14-C0.C150FONT | Bin 11982 -> 0 bytes .../lispusers/c150fonts/CLASSIC18-C0.C150FONT | Bin 14788 -> 0 bytes .../c150fonts/TIMESROMAN10-C0.C150FONT | Bin 17304 -> 0 bytes .../c150fonts/TIMESROMAN12-C0.C150FONT | Bin 24274 -> 0 bytes .../c150fonts/TIMESROMAN14-C0.C150FONT | Bin 28262 -> 0 bytes obsolete/lispusers/mathserverplot | 1567 ----- obsolete/lispusers/microtek.tedit | Bin 65505 -> 0 bytes obsolete/lispusers/splinefonts/GACHAE.LC1-SF | 1 - obsolete/lispusers/splinefonts/GACHAE.LC2-SF | 1 - obsolete/lispusers/splinefonts/GACHAE.NUM-SF | 1 - obsolete/lispusers/splinefonts/GACHAE.S1-SF | 1 - obsolete/lispusers/splinefonts/GACHAE.S2-SF | 1 - obsolete/lispusers/splinefonts/GACHAE.UC1-SF | 1 - obsolete/lispusers/splinefonts/GACHAE.UC2-SF | 1 - obsolete/lispusers/splinefonts/SFFONT | 717 -- .../lispusers/splinefonts/TIMESROMAN.LC1-SF | 1 - .../lispusers/splinefonts/TIMESROMAN.LC2-SF | 1 - .../lispusers/splinefonts/TIMESROMAN.NUM-SF | 1 - .../lispusers/splinefonts/TIMESROMAN.S1-SF | 1 - .../lispusers/splinefonts/TIMESROMAN.S3-SF | 1 - .../lispusers/splinefonts/TIMESROMAN.UC1-SF | 1 - obsolete/sources/FILESETS.NOETHER | 1 - obsolete/sources/FILESETS.ORIG | 1 - obsolete/sources/FILESETS.PUP | 1 - obsolete/sources/LISPBCPLFILES.DM | Bin 192713 -> 0 bytes obsolete/sources/LOADFULL.CM | 1 - obsolete/sources/LOADFULL.LISP | 1 - obsolete/sources/LOADFULLFROMDLINIT.CM | 1 - obsolete/sources/LOADFULLFROMDLINITSLOW.CM | 1 - obsolete/sources/LOADFULLFROMLISP.CM | 1 - obsolete/sources/LOADFULLSLOW.CM | 1 - obsolete/sources/LOADINIT.CM | 1 - obsolete/sources/LOADINITSLOW.CM | 1 - obsolete/sources/LOADUP.LISP | 53 - obsolete/sources/LispDMC.DM | Bin 354892 -> 0 bytes obsolete/sources/MAPATOMS | 1 - obsolete/sources/MAPATOMS.LCOM | Bin 1164 -> 0 bytes obsolete/sources/NEW-EDIT-INTERFACE | 1 - obsolete/sources/NEW-EDIT-INTERFACE.LCOM | 1 - obsolete/sources/POSTLOADUP | 37 - obsolete/sources/POSTLOADUP.LCOM | 1 - obsolete/sources/SUNFONT | 32 - obsolete/sources/SYNCLISPFILES | 1 - obsolete/sources/SYNCLISPFILES.LCOM | Bin 3593 -> 0 bytes obsolete/sources/XMAS | 1 - obsolete/sources/XMAS2 | 1 - obsolete/sources/new-edit-interface.tedit | Bin 4542 -> 0 bytes obsolete/sources/subrs.h | 150 - obsolete/sunloadup/FASTINIT | 82 - obsolete/sunloadup/FASTINIT-2.0.DFASL | Bin 1356 -> 0 bytes obsolete/sunloadup/FASTINIT.DFASL | Bin 1430 -> 0 bytes obsolete/sunloadup/FILESETS | 69 - obsolete/sunloadup/FILESETS.NOETHER | 175 - obsolete/sunloadup/FILESETS.ORIG | 168 - obsolete/sunloadup/FILESETS.PUP | 69 - obsolete/sunloadup/HOWTO-LOADUP-SUNLISP.TXT | 173 - obsolete/sunloadup/HOWTO-MAKE-SYSOUT.TEDIT | Bin 12209 -> 0 bytes obsolete/sunloadup/INIT.DO-TEST | 55 - obsolete/sunloadup/INIT.LOADFULL | 5 - obsolete/sunloadup/INIT.LOADFULLFROMLISP | 2 - obsolete/sunloadup/INIT.MAKEBIG | 50 - obsolete/sunloadup/INIT.MAKEBIGFULLFROMLISP | 13 - obsolete/sunloadup/INIT.MAKEBIGSGI | 48 - obsolete/sunloadup/INIT.MAKECLTL2SGI | 51 - obsolete/sunloadup/INIT.MAKEINIT | 48 - obsolete/sunloadup/INIT.MAKEINIT-3BYTE | 48 - obsolete/sunloadup/INIT.MAKEINIT-MAIN | 34 - obsolete/sunloadup/INIT.MAKEINIT-NOETHER | 34 - obsolete/sunloadup/INIT.MAKEINITDSK | 48 - obsolete/sunloadup/INIT.MAKEINITFULL | 41 - obsolete/sunloadup/INIT.MAKEINITFULLFROMLISP | 13 - obsolete/sunloadup/INIT.MAKEINITFULLSGI | 40 - obsolete/sunloadup/LOADBIGFULLFROMLISP-REM.CM | 5 - obsolete/sunloadup/LOADFULL-BIG.LISP | 28 - obsolete/sunloadup/LOADFULL-REM.CM | 7 - obsolete/sunloadup/LOADFULL.LISP | 29 - obsolete/sunloadup/LOADFULLFROMLISP-REM.CM | 5 - obsolete/sunloadup/LOADUP-BIG.LISP | Bin 3993 -> 0 bytes obsolete/sunloadup/LOADUP-NOCOMPILER-REM.CM | 6 - obsolete/sunloadup/LOADUP-NOCOMPILER.LISP | 83 - obsolete/sunloadup/LOADUP-NODMACHINE-REM.CM | 6 - obsolete/sunloadup/LOADUP-NODMACHINE.LISP | 81 - obsolete/sunloadup/LOADUP-NOETHER-REM.CM | 6 - obsolete/sunloadup/LOADUP-NOETHER.LISP | 82 - .../sunloadup/LOADUP-NOXCLCOMPILER-REM.CM | 6 - obsolete/sunloadup/LOADUP-NOXCLCOMPILER.LISP | 84 - obsolete/sunloadup/LOADUP-REM.CM | 5 - obsolete/sunloadup/LOADUP.LISP | 96 - obsolete/sunloadup/LOADUP.LOG | 1 - obsolete/sunloadup/LispDlion.db | Bin 122726 -> 0 bytes obsolete/sunloadup/LispDove.db | Bin 85898 -> 0 bytes obsolete/sunloadup/MAIKOINIT | 7 - obsolete/sunloadup/MAIKOLOADUPFNS | 589 -- obsolete/sunloadup/MAIKOLOADUPFNS.LCOM | Bin 8308 -> 0 bytes obsolete/sunloadup/MAKE-UTILS | 24 - obsolete/sunloadup/NLOCALFILE | 47 - obsolete/sunloadup/NLOCALFILE.LCOM | Bin 902 -> 0 bytes obsolete/sunloadup/POSTLOADUP | 41 - obsolete/sunloadup/POSTLOADUP.LCOM | 1 - obsolete/sunloadup/REM.CM | 7 - obsolete/sunloadup/SUNFONT | 32 - obsolete/sunloadup/SUNFONT.LCOM | 1 - obsolete/sunloadup/XREM-NOETHER.CM | 8 - obsolete/sunloadup/bigFASTINIT.DFASL | Bin 1433 -> 0 bytes obsolete/sunloadup/runloadbig | 113 - obsolete/sunloadup/runloadbig-sgi | 43 - obsolete/sunloadup/runloadcltl2-sgi | 42 - obsolete/sunloadup/runloadfull | 44 - obsolete/sunloadup/runloadfull-2nd | 38 - obsolete/sunloadup/runloadfull-dsk | 47 - obsolete/sunloadup/runloadfull-sgi | 42 - obsolete/sunloadup/runloadfullfromlisp | 38 - obsolete/sunloadup/runloadup | 38 - obsolete/sunloadup/runloadup-2nd | 31 - obsolete/sunloadup/runloadup-2nd-sun3 | 31 - obsolete/sunloadup/runloadup-main | 34 - obsolete/sunloadup/runloadup-nodmachine | 35 - obsolete/sunloadup/runloadup-noether | 35 - obsolete/sunloadup/runloadup-nt | 38 - obsolete/sunloadup/runloadup-sun3 | 34 - obsolete/sunloadup/xrem.cm | 1 - obsolete/tcp/TCP | 1 - obsolete/tcp/TCPCHAT | 1 - obsolete/tcp/TCPCONFIG | 1 - obsolete/tcp/TCPDEBUG | 1 - obsolete/tcp/TCPDOMAIN | 1 - obsolete/tcp/TCPEXPORTS | 1 - obsolete/tcp/TCPFTP | 1 - obsolete/tcp/TCPFTPSRV | 1 - obsolete/tcp/TCPHTE | 1 - obsolete/tcp/TCPIP.TEDIT | Bin 119144 -> 0 bytes obsolete/tcp/TCPLLAR | 1 - obsolete/tcp/TCPLLICMP | 1 - obsolete/tcp/TCPLLIP | 1 - obsolete/tcp/TCPNAMES | 1 - obsolete/tcp/TCPOPS | 212 - obsolete/tcp/TCPTFTP | 1 - obsolete/tcp/TCPUDP | 1 - 893 files changed, 95587 deletions(-) delete mode 100644 obsolete/clos/2.0/CLOS-BROWSER.TEDIT.Z delete mode 100644 obsolete/clos/2.0/NEW-CLOS-BROWSER delete mode 100644 obsolete/clos/2.0/WEB-EDITOR delete mode 100644 obsolete/clos/2.0/boot.lisp delete mode 100644 obsolete/clos/2.0/braid.lisp delete mode 100644 obsolete/clos/2.0/cache.lisp delete mode 100644 obsolete/clos/2.0/clos-env-internal.lisp delete mode 100644 obsolete/clos/2.0/clos-env.lisp delete mode 100644 obsolete/clos/2.0/combin.lisp delete mode 100644 obsolete/clos/2.0/compat.lisp delete mode 100644 obsolete/clos/2.0/construct.lisp delete mode 100644 obsolete/clos/2.0/cpl.lisp delete mode 100644 obsolete/clos/2.0/ctypes.lisp delete mode 100644 obsolete/clos/2.0/defclass.lisp delete mode 100644 obsolete/clos/2.0/defcombin.lisp delete mode 100644 obsolete/clos/2.0/defs.lisp delete mode 100644 obsolete/clos/2.0/defsys.lisp delete mode 100644 obsolete/clos/2.0/dfun.lisp delete mode 100644 obsolete/clos/2.0/dlap.lisp delete mode 100644 obsolete/clos/2.0/env.lisp delete mode 100644 obsolete/clos/2.0/fin.lisp delete mode 100644 obsolete/clos/2.0/fixup.lisp delete mode 100644 obsolete/clos/2.0/fngen.lisp delete mode 100644 obsolete/clos/2.0/fsc.lisp delete mode 100644 obsolete/clos/2.0/init.lisp delete mode 100644 obsolete/clos/2.0/iterate.lisp delete mode 100644 obsolete/clos/2.0/lap.lisp delete mode 100644 obsolete/clos/2.0/load-clos.lisp delete mode 100644 obsolete/clos/2.0/low.lisp delete mode 100644 obsolete/clos/2.0/low2.lisp delete mode 100644 obsolete/clos/2.0/macros.lisp delete mode 100644 obsolete/clos/2.0/methods.lisp delete mode 100644 obsolete/clos/2.0/patch.lisp delete mode 100644 obsolete/clos/2.0/pkg.lisp delete mode 100644 obsolete/clos/2.0/plap.lisp delete mode 100644 obsolete/clos/2.0/precom-browser.cl delete mode 100644 obsolete/clos/2.0/precom1.lisp delete mode 100644 obsolete/clos/2.0/precom2.lisp delete mode 100644 obsolete/clos/2.0/precom4.lisp delete mode 100644 obsolete/clos/2.0/slots.lisp delete mode 100644 obsolete/clos/2.0/std-class.lisp delete mode 100644 obsolete/clos/2.0/test.lisp delete mode 100644 obsolete/clos/2.0/unchaged.lisp delete mode 100644 obsolete/clos/2.0/vector.lisp delete mode 100644 obsolete/clos/2.0/walk.lisp delete mode 100644 obsolete/clos/2.01big/CLOS-BROWSER.TEDIT delete mode 100644 obsolete/clos/2.01big/NEW-CLOS-BROWSER.DFASL delete mode 100644 obsolete/clos/2.01big/WEB-EDITOR.DFASL delete mode 100644 obsolete/clos/2.01big/boot.dfasl delete mode 100644 obsolete/clos/2.01big/braid.dfasl delete mode 100644 obsolete/clos/2.01big/cache.dfasl delete mode 100644 obsolete/clos/2.01big/clos-env-internal.DFASL delete mode 100644 obsolete/clos/2.01big/clos-env.DFASL delete mode 100644 obsolete/clos/2.01big/combin.dfasl delete mode 100644 obsolete/clos/2.01big/compat.dfasl delete mode 100644 obsolete/clos/2.01big/construct.dfasl delete mode 100644 obsolete/clos/2.01big/cpl.dfasl delete mode 100644 obsolete/clos/2.01big/ctypes.dfasl delete mode 100644 obsolete/clos/2.01big/defclass.dfasl delete mode 100644 obsolete/clos/2.01big/defcombin.dfasl delete mode 100644 obsolete/clos/2.01big/defs.dfasl delete mode 100644 obsolete/clos/2.01big/defsys.DFASL delete mode 100644 obsolete/clos/2.01big/dfun.dfasl delete mode 100644 obsolete/clos/2.01big/dlap.dfasl delete mode 100644 obsolete/clos/2.01big/env.dfasl delete mode 100644 obsolete/clos/2.01big/fin.dfasl delete mode 100644 obsolete/clos/2.01big/fixup.dfasl delete mode 100644 obsolete/clos/2.01big/fngen.dfasl delete mode 100644 obsolete/clos/2.01big/fsc.dfasl delete mode 100644 obsolete/clos/2.01big/init.dfasl delete mode 100644 obsolete/clos/2.01big/iterate.dfasl delete mode 100644 obsolete/clos/2.01big/lap.dfasl delete mode 100644 obsolete/clos/2.01big/load-clos.lisp delete mode 100644 obsolete/clos/2.01big/low.dfasl delete mode 100644 obsolete/clos/2.01big/low2.dfasl delete mode 100644 obsolete/clos/2.01big/macros.dfasl delete mode 100644 obsolete/clos/2.01big/methods.dfasl delete mode 100644 obsolete/clos/2.01big/patch.dfasl delete mode 100644 obsolete/clos/2.01big/pkg.dfasl delete mode 100644 obsolete/clos/2.01big/plap.dfasl delete mode 100644 obsolete/clos/2.01big/precom1.dfasl delete mode 100644 obsolete/clos/2.01big/precom2.dfasl delete mode 100644 obsolete/clos/2.01big/precom4.dfasl delete mode 100644 obsolete/clos/2.01big/slots.dfasl delete mode 100644 obsolete/clos/2.01big/std-class.dfasl delete mode 100644 obsolete/clos/2.01big/vector.dfasl delete mode 100644 obsolete/clos/2.01big/walk.dfasl delete mode 100644 obsolete/fonts/xerox/FlemishScriptII.wd.Z delete mode 100644 obsolete/fonts/xerox/Helvetica.Bold.Italic.cd.Z delete mode 100644 obsolete/fonts/xerox/Helvetica.Bold.cd.Z delete mode 100644 obsolete/fonts/xerox/Helvetica.Italic.cd.Z delete mode 100644 obsolete/fonts/xerox/Helvetica.cd.Z delete mode 100644 obsolete/fonts/xerox/ITCBauhaus.wd.Z delete mode 100644 obsolete/fonts/xerox/ITCBauhaus10-C0.DISPLAYFONT.Z delete mode 100644 obsolete/fonts/xerox/ITCBauhaus10-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/ITCBauhaus12-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/ITCBauhaus14-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/ITCBauhaus18-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/ITCBauhaus24-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/ITCBauhaus6-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/ITCBauhaus8-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/ITCCushing.wd.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond.wd.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond11-C0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond11MRR72C0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-B-I-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-B-I-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-B-I-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-B-I-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-B-I-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-B-I-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-B-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-B-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-B-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-B-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-B-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-B-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-I-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-I-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-I-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-I-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-I-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-I-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond12-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-B-I-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-B-I-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-B-I-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-B-I-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-B-I-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-B-I-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-B-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-B-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-B-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-B-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-B-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-B-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-I-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-I-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-I-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-I-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-I-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-I-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond14-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-B-I-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-B-I-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-B-I-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-B-I-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-B-I-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-B-I-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-B-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-B-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-B-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-B-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-B-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-B-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-I-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-I-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-I-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-I-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-I-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-I-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond18-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-B-I-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-B-I-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-B-I-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-B-I-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-B-I-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-B-I-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-B-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-B-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-B-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-B-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-B-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-B-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-I-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-I-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-I-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-I-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-I-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-I-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond24-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-B-I-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-B-I-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-B-I-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-B-I-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-B-I-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-B-I-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-B-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-B-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-B-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-B-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-B-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-B-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-I-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-I-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-I-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-I-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-I-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-I-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond30-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-B-I-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-B-I-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-B-I-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-B-I-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-B-I-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-B-I-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-B-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-B-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-B-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-B-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-B-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-B-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-I-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-I-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-I-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-I-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-I-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-I-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-c0.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-c356.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-c357.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-c360.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-c361.ac.Z delete mode 100644 obsolete/fonts/xerox/ITCGaramond36-c41.ac.Z delete mode 100644 obsolete/fonts/xerox/Logo1.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-BIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-BIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-BIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-BIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-BIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-BIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-BIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-BIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-BRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-BRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-BRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-BRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-BRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-BRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-BRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-BRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-MIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-MIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-MIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-MIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-MIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-MIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-MIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-MIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-MRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-MRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-MRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-MRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-MRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-MRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-MRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima06-MRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-BIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-BIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-BIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-BIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-BIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-BIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-BIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-BIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-BRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-BRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-BRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-BRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-BRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-BRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-BRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-BRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-MIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-MIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-MIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-MIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-MIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-MIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-MIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-MIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-MRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-MRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-MRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-MRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-MRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-MRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-MRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima07-MRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-BIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-BIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-BIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-BIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-BIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-BIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-BIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-BIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-BRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-BRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-BRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-BRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-BRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-BRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-BRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-BRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-MIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-MIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-MIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-MIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-MIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-MIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-MIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-MIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-MRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-MRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-MRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-MRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-MRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-MRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-MRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima08-MRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-BIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-BIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-BIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-BIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-BIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-BIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-BIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-BIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-BRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-BRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-BRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-BRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-BRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-BRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-BRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-BRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-MIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-MIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-MIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-MIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-MIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-MIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-MIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-MIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-MRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-MRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-MRR-C357.wd delete mode 100644 obsolete/fonts/xerox/Optima09-MRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-MRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-MRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-MRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-MRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima09-MRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-BIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-BIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-BIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-BIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-BIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-BIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-BIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-BIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-BRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-BRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-BRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-BRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-BRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-BRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-BRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-BRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-MIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-MIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-MIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-MIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-MIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-MIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-MIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-MIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-MRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-MRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-MRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-MRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-MRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-MRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-MRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima10-MRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-BIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-BIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-BIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-BIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-BIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-BIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-BIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-BIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-BRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-BRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-BRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-BRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-BRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-BRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-BRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-BRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-MIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-MIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-MIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-MIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-MIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-MIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-MIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-MIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-MRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-MRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-MRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-MRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-MRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-MRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-MRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima11-MRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-BIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-BIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-BIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-BIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-BIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-BIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-BIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-BIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-BRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-BRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-BRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-BRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-BRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-BRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-BRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-BRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-MIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-MIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-MIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-MIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-MIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-MIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-MIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-MIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-MRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-MRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-MRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-MRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-MRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-MRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-MRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima12-MRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-BIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-BIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-BIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-BIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-BIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-BIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-BIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-BIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-BRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-BRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-BRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-BRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-BRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-BRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-BRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-BRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-MIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-MIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-MIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-MIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-MIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-MIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-MIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-MIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-MRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-MRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-MRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-MRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-MRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-MRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-MRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima14-MRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-BIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-BIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-BIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-BIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-BIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-BIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-BIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-BIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-BRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-BRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-BRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-BRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-BRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-BRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-BRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-BRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-MIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-MIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-MIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-MIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-MIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-MIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-MIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-MIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-MRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-MRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-MRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-MRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-MRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-MRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-MRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima18-MRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-BIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-BIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-BIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-BIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-BIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-BIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-BIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-BIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-BRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-BRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-BRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-BRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-BRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-BRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-BRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-BRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-MIR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-MIR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-MIR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-MIR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-MIR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-MIR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-MIR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-MIR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-MRR-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-MRR-C356.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-MRR-C357.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-MRR-C360.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-MRR-C361.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-MRR-C41.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-MRR-C42.wd.Z delete mode 100644 obsolete/fonts/xerox/Optima24-MRR-C43.wd.Z delete mode 100644 obsolete/fonts/xerox/OptimaItalic.NovaFont delete mode 100644 obsolete/fonts/xerox/OptimaMedium.NovaFont delete mode 100644 obsolete/fonts/xerox/README.TXT delete mode 100644 obsolete/fonts/xerox/ShimmerWide.wd.Z delete mode 100644 obsolete/fonts/xerox/ShimmerWideMIR.wd.Z delete mode 100644 obsolete/fonts/xerox/ShimmerWideMRR.wd.Z delete mode 100644 obsolete/fonts/xerox/Souvenir.wd.Z delete mode 100644 obsolete/fonts/xerox/SouvenirBIRC0.wd.Z delete mode 100644 obsolete/fonts/xerox/SouvenirBRRC0.wd.Z delete mode 100644 obsolete/fonts/xerox/SouvenirMIRC0.wd.Z delete mode 100644 obsolete/fonts/xerox/SouvenirMRRC0.wd.Z delete mode 100644 obsolete/fonts/xerox/TROFF.wd.Z delete mode 100644 obsolete/fonts/xerox/TROFFFonts.widths delete mode 100644 obsolete/fonts/xerox/Times10-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Times12-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Times14-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Times18-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Times24-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Times36-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Times8-C0.wd.Z delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.FlemishScriptII delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.Gacha delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.ITCBauhaus.Bold.Z delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.ITCBauhaus.Z delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.ITCGaramond.Bold.Italic.Z delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.ITCGaramond.Bold.Z delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.ITCGaramond.Italic.Z delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.ITCGaramond.Z delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.Optima.Bold.Italic.Z delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.Optima.Bold.Z delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.Optima.Italic.Z delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.Optima.Z delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.Souvenir.Bold.Italic.Z delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.Souvenir.Bold.Z delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.Souvenir.Italic.Z delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.Souvenir.Z delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.Times.Bold.Italic.Z delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.Times.Bold.Z delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.Times.Italic.Z delete mode 100644 obsolete/fonts/xerox/Xerox.XC1-1-1.Times.Z delete mode 100644 obsolete/fonts/xerox/itcberkeley.wd.Z delete mode 100644 obsolete/fonts/xerox/tffonts.widths delete mode 100644 obsolete/greetfiles/INIT delete mode 100644 obsolete/greetfiles/INIT.LCOM delete mode 100644 obsolete/greetfiles/LOCAL-INIT delete mode 100644 obsolete/greetfiles/LOCAL-INIT.LCOM delete mode 100644 obsolete/greetfiles/PARC-INIT delete mode 100644 obsolete/greetfiles/PARC-INIT.LCOM delete mode 100644 obsolete/internal/ABC delete mode 100644 obsolete/internal/ABC.LCOM delete mode 100644 obsolete/internal/library/DICOLOR delete mode 100644 obsolete/internal/library/DICOLOR.LCOM delete mode 100644 obsolete/library/CHARS delete mode 100644 obsolete/library/FX-80DRIVER delete mode 100644 obsolete/library/FX-80DRIVER.LCOM delete mode 100644 obsolete/library/FX-80Driver.tedit delete mode 100644 obsolete/library/IPFONTSAMPLE delete mode 100644 obsolete/library/IPFONTSAMPLE.LCOM delete mode 100644 obsolete/library/IPFONTSAMPLE.TEDIT delete mode 100644 obsolete/library/PRESS delete mode 100644 obsolete/library/PRESS.LCOM delete mode 100644 obsolete/library/Press.tedit delete mode 100644 obsolete/library/TABLEBROWSERDECLS delete mode 100644 obsolete/library/TABLEBROWSERDECLS.LCOM delete mode 100644 obsolete/library/TBDECLS delete mode 100644 obsolete/library/TBDECLS.LCOM delete mode 100644 obsolete/library/UNIXPRINTCOMMAND delete mode 100644 obsolete/library/UNIXPRINTCOMMAND.LCOM delete mode 100644 obsolete/library/new/PCTREE delete mode 100644 obsolete/library/new/TEDIT delete mode 100644 obsolete/library/new/TEDIT.LCOM delete mode 100644 obsolete/library/new/TEDITABBREV.LCOM delete mode 100644 obsolete/library/new/TEDITCOMMAND.LCOM delete mode 100644 obsolete/library/new/TEDITDCL delete mode 100644 obsolete/library/new/TEDITDCL.LCOM delete mode 100644 obsolete/library/new/TEDITFILE delete mode 100644 obsolete/library/new/TEDITFILE.LCOM delete mode 100644 obsolete/library/new/TEDITFIND.LCOM delete mode 100644 obsolete/library/new/TEDITFNKEYS.LCOM delete mode 100644 obsolete/library/new/TEDITHCPY.LCOM delete mode 100644 obsolete/library/new/TEDITHISTORY delete mode 100644 obsolete/library/new/TEDITHISTORY.LCOM delete mode 100644 obsolete/library/new/TEDITLOOKS.LCOM delete mode 100644 obsolete/library/new/TEDITMENU delete mode 100644 obsolete/library/new/TEDITMENU.LCOM delete mode 100644 obsolete/library/new/TEDITPAGE.LCOM delete mode 100644 obsolete/library/new/TEDITSCREEN.LCOM delete mode 100644 obsolete/library/new/TEDITSELECTION.LCOM delete mode 100644 obsolete/library/new/TEDITWINDOW.LCOM delete mode 100644 obsolete/library/new/TEXTOFD delete mode 100644 obsolete/library/new/TEXTOFD.LCOM delete mode 100644 obsolete/library/patches/NEW-SKETCH-COLOR delete mode 100644 obsolete/lispusers/ARCHIVEBROWSER delete mode 100644 obsolete/lispusers/ARCHIVEBROWSER.LCOM delete mode 100644 obsolete/lispusers/ARCHIVETOOL delete mode 100644 obsolete/lispusers/ARCHIVETOOL.LCOM delete mode 100644 obsolete/lispusers/BIGGER-FONT delete mode 100644 obsolete/lispusers/BIGGER-FONT.LCOM delete mode 100644 obsolete/lispusers/COLOR delete mode 100644 obsolete/lispusers/COLOROBJ delete mode 100644 obsolete/lispusers/COLOROBJ.LCOM delete mode 100644 obsolete/lispusers/COLOROBJ.TEDIT delete mode 100644 obsolete/lispusers/EDITKEYS delete mode 100644 obsolete/lispusers/EDITKEYS.LCOM delete mode 100644 obsolete/lispusers/EDITKEYS.TEDIT delete mode 100644 obsolete/lispusers/ENDNOTE delete mode 100644 obsolete/lispusers/EVAL-WHEN-PATCH delete mode 100644 obsolete/lispusers/FASTEDITBM delete mode 100644 obsolete/lispusers/FONTDECLS delete mode 100644 obsolete/lispusers/HGRAPH delete mode 100644 obsolete/lispusers/HGRAPH.LCOM delete mode 100644 obsolete/lispusers/HOSTUP delete mode 100644 obsolete/lispusers/HOSTUP.TEDIT delete mode 100644 obsolete/lispusers/INDEX delete mode 100644 obsolete/lispusers/IRIS.TEdit delete mode 100644 obsolete/lispusers/IRISCONSTANTS delete mode 100644 obsolete/lispusers/IRISDEMOFNS delete mode 100644 obsolete/lispusers/IRISIO delete mode 100644 obsolete/lispusers/IRISLIB delete mode 100644 obsolete/lispusers/IRISNET delete mode 100644 obsolete/lispusers/IRISSTREAM delete mode 100644 obsolete/lispusers/IRISVIEW delete mode 100644 obsolete/lispusers/KOTOLOGO delete mode 100644 obsolete/lispusers/KOTOLOGO.TEDIT delete mode 100644 obsolete/lispusers/LISPNERD delete mode 100644 obsolete/lispusers/LISPNERD.TEDIT delete mode 100644 obsolete/lispusers/LOADIRIS delete mode 100644 obsolete/lispusers/LUPINE delete mode 100644 obsolete/lispusers/LoadPatches delete mode 100644 obsolete/lispusers/MATHSERVER delete mode 100644 obsolete/lispusers/MATHSERVER.COMMANDFILES delete mode 100644 obsolete/lispusers/MATHSERVER.LCOM delete mode 100644 obsolete/lispusers/MATHSERVERPLOT.LCOM delete mode 100644 obsolete/lispusers/MATHTONS delete mode 100644 obsolete/lispusers/MATHTONS.TEDIT delete mode 100644 obsolete/lispusers/MATRIXOPS delete mode 100644 obsolete/lispusers/MESATOLISP delete mode 100644 obsolete/lispusers/MICROTEK delete mode 100644 obsolete/lispusers/MICROTEK.LCOM delete mode 100644 obsolete/lispusers/MICROTEKPRINT delete mode 100644 obsolete/lispusers/MICROTEKPRINT.LCOM delete mode 100644 obsolete/lispusers/MTP delete mode 100644 obsolete/lispusers/NGROUP delete mode 100644 obsolete/lispusers/NOTECARDS-4045XLPPATCH delete mode 100644 obsolete/lispusers/NSALLOCATION delete mode 100644 obsolete/lispusers/NSCOPYFILE delete mode 100644 obsolete/lispusers/NSCOPYFILE.LCOM delete mode 100644 obsolete/lispusers/NSCOPYFILE.TEDIT delete mode 100644 obsolete/lispusers/NSREADERPATCH delete mode 100644 obsolete/lispusers/NSROUTINGHASH delete mode 100644 obsolete/lispusers/NSTHASIZE delete mode 100644 obsolete/lispusers/OSS-LYRIC-PATCHES delete mode 100644 obsolete/lispusers/PACKED-STRUCTURE delete mode 100644 obsolete/lispusers/PACKED-STRUCTURE.LCOM delete mode 100644 obsolete/lispusers/PATCH-LARGEIPBITMAP delete mode 100644 obsolete/lispusers/PATCH-TWOSIDED delete mode 100644 obsolete/lispusers/POSTSCRIPT-old/POSTSCRIPT delete mode 100644 obsolete/lispusers/POSTSCRIPT-old/POSTSCRIPT.PS delete mode 100644 obsolete/lispusers/POSTSCRIPT-old/PostScript.TEDIT delete mode 100644 obsolete/lispusers/PRESSFROMNS delete mode 100644 obsolete/lispusers/PRESSFROMNS.TEDIT delete mode 100644 obsolete/lispusers/PS-PATCH delete mode 100644 obsolete/lispusers/PS-RS232 delete mode 100644 obsolete/lispusers/PS-RS232.TEDIT delete mode 100644 obsolete/lispusers/PS-SKETCH-PATCH delete mode 100644 obsolete/lispusers/PS-SKETCH-PATCH.LCOM delete mode 100644 obsolete/lispusers/PS-SKETCH-PATCH.TEDIT delete mode 100644 obsolete/lispusers/PS-patch.tedit delete mode 100644 obsolete/lispusers/PSCFONT-FIX-FILENAME delete mode 100644 obsolete/lispusers/READDISPLAYFONT delete mode 100644 obsolete/lispusers/READDISPLAYFONT.LCOM delete mode 100644 obsolete/lispusers/READDISPLAYFONT.TEDIT delete mode 100644 obsolete/lispusers/REGISTER-MACHINE delete mode 100644 obsolete/lispusers/SINGLEFILEINDEX delete mode 100644 obsolete/lispusers/TEDITDORADOKEYS delete mode 100644 obsolete/lispusers/TEDITDORADOKEYS.LCOM delete mode 100644 obsolete/lispusers/TEDITDORADOKEYS.TEDIT delete mode 100644 obsolete/lispusers/TEDITKEY delete mode 100644 obsolete/lispusers/TEDITKEY.LCOM delete mode 100644 obsolete/lispusers/TEDITKEY.TEDIT delete mode 100644 obsolete/lispusers/TKDORADO delete mode 100644 obsolete/lispusers/TKDORADO.TEDIT delete mode 100644 obsolete/lispusers/UPCSTATS delete mode 100644 obsolete/lispusers/UPCSTATS.TEDIT delete mode 100644 obsolete/lispusers/XORCURSORPATCH delete mode 100644 obsolete/lispusers/XORCursorPatch.TEdit delete mode 100644 obsolete/lispusers/XREF delete mode 100644 obsolete/lispusers/c150fonts/C150STREAM delete mode 100644 obsolete/lispusers/c150fonts/CLASSIC10-C0.C150FONT delete mode 100644 obsolete/lispusers/c150fonts/CLASSIC14-C0.C150FONT delete mode 100644 obsolete/lispusers/c150fonts/CLASSIC18-C0.C150FONT delete mode 100644 obsolete/lispusers/c150fonts/TIMESROMAN10-C0.C150FONT delete mode 100644 obsolete/lispusers/c150fonts/TIMESROMAN12-C0.C150FONT delete mode 100644 obsolete/lispusers/c150fonts/TIMESROMAN14-C0.C150FONT delete mode 100644 obsolete/lispusers/mathserverplot delete mode 100644 obsolete/lispusers/microtek.tedit delete mode 100644 obsolete/lispusers/splinefonts/GACHAE.LC1-SF delete mode 100644 obsolete/lispusers/splinefonts/GACHAE.LC2-SF delete mode 100644 obsolete/lispusers/splinefonts/GACHAE.NUM-SF delete mode 100644 obsolete/lispusers/splinefonts/GACHAE.S1-SF delete mode 100644 obsolete/lispusers/splinefonts/GACHAE.S2-SF delete mode 100644 obsolete/lispusers/splinefonts/GACHAE.UC1-SF delete mode 100644 obsolete/lispusers/splinefonts/GACHAE.UC2-SF delete mode 100644 obsolete/lispusers/splinefonts/SFFONT delete mode 100644 obsolete/lispusers/splinefonts/TIMESROMAN.LC1-SF delete mode 100644 obsolete/lispusers/splinefonts/TIMESROMAN.LC2-SF delete mode 100644 obsolete/lispusers/splinefonts/TIMESROMAN.NUM-SF delete mode 100644 obsolete/lispusers/splinefonts/TIMESROMAN.S1-SF delete mode 100644 obsolete/lispusers/splinefonts/TIMESROMAN.S3-SF delete mode 100644 obsolete/lispusers/splinefonts/TIMESROMAN.UC1-SF delete mode 100644 obsolete/sources/FILESETS.NOETHER delete mode 100644 obsolete/sources/FILESETS.ORIG delete mode 100644 obsolete/sources/FILESETS.PUP delete mode 100644 obsolete/sources/LISPBCPLFILES.DM delete mode 100644 obsolete/sources/LOADFULL.CM delete mode 100644 obsolete/sources/LOADFULL.LISP delete mode 100644 obsolete/sources/LOADFULLFROMDLINIT.CM delete mode 100644 obsolete/sources/LOADFULLFROMDLINITSLOW.CM delete mode 100644 obsolete/sources/LOADFULLFROMLISP.CM delete mode 100644 obsolete/sources/LOADFULLSLOW.CM delete mode 100644 obsolete/sources/LOADINIT.CM delete mode 100644 obsolete/sources/LOADINITSLOW.CM delete mode 100644 obsolete/sources/LOADUP.LISP delete mode 100644 obsolete/sources/LispDMC.DM delete mode 100644 obsolete/sources/MAPATOMS delete mode 100644 obsolete/sources/MAPATOMS.LCOM delete mode 100644 obsolete/sources/NEW-EDIT-INTERFACE delete mode 100644 obsolete/sources/NEW-EDIT-INTERFACE.LCOM delete mode 100644 obsolete/sources/POSTLOADUP delete mode 100644 obsolete/sources/POSTLOADUP.LCOM delete mode 100644 obsolete/sources/SUNFONT delete mode 100644 obsolete/sources/SYNCLISPFILES delete mode 100644 obsolete/sources/SYNCLISPFILES.LCOM delete mode 100644 obsolete/sources/XMAS delete mode 100644 obsolete/sources/XMAS2 delete mode 100644 obsolete/sources/new-edit-interface.tedit delete mode 100644 obsolete/sources/subrs.h delete mode 100644 obsolete/sunloadup/FASTINIT delete mode 100644 obsolete/sunloadup/FASTINIT-2.0.DFASL delete mode 100644 obsolete/sunloadup/FASTINIT.DFASL delete mode 100644 obsolete/sunloadup/FILESETS delete mode 100644 obsolete/sunloadup/FILESETS.NOETHER delete mode 100644 obsolete/sunloadup/FILESETS.ORIG delete mode 100644 obsolete/sunloadup/FILESETS.PUP delete mode 100644 obsolete/sunloadup/HOWTO-LOADUP-SUNLISP.TXT delete mode 100644 obsolete/sunloadup/HOWTO-MAKE-SYSOUT.TEDIT delete mode 100644 obsolete/sunloadup/INIT.DO-TEST delete mode 100644 obsolete/sunloadup/INIT.LOADFULL delete mode 100644 obsolete/sunloadup/INIT.LOADFULLFROMLISP delete mode 100644 obsolete/sunloadup/INIT.MAKEBIG delete mode 100644 obsolete/sunloadup/INIT.MAKEBIGFULLFROMLISP delete mode 100644 obsolete/sunloadup/INIT.MAKEBIGSGI delete mode 100644 obsolete/sunloadup/INIT.MAKECLTL2SGI delete mode 100644 obsolete/sunloadup/INIT.MAKEINIT delete mode 100644 obsolete/sunloadup/INIT.MAKEINIT-3BYTE delete mode 100644 obsolete/sunloadup/INIT.MAKEINIT-MAIN delete mode 100644 obsolete/sunloadup/INIT.MAKEINIT-NOETHER delete mode 100644 obsolete/sunloadup/INIT.MAKEINITDSK delete mode 100644 obsolete/sunloadup/INIT.MAKEINITFULL delete mode 100644 obsolete/sunloadup/INIT.MAKEINITFULLFROMLISP delete mode 100644 obsolete/sunloadup/INIT.MAKEINITFULLSGI delete mode 100644 obsolete/sunloadup/LOADBIGFULLFROMLISP-REM.CM delete mode 100644 obsolete/sunloadup/LOADFULL-BIG.LISP delete mode 100644 obsolete/sunloadup/LOADFULL-REM.CM delete mode 100644 obsolete/sunloadup/LOADFULL.LISP delete mode 100644 obsolete/sunloadup/LOADFULLFROMLISP-REM.CM delete mode 100644 obsolete/sunloadup/LOADUP-BIG.LISP delete mode 100644 obsolete/sunloadup/LOADUP-NOCOMPILER-REM.CM delete mode 100644 obsolete/sunloadup/LOADUP-NOCOMPILER.LISP delete mode 100644 obsolete/sunloadup/LOADUP-NODMACHINE-REM.CM delete mode 100644 obsolete/sunloadup/LOADUP-NODMACHINE.LISP delete mode 100644 obsolete/sunloadup/LOADUP-NOETHER-REM.CM delete mode 100644 obsolete/sunloadup/LOADUP-NOETHER.LISP delete mode 100644 obsolete/sunloadup/LOADUP-NOXCLCOMPILER-REM.CM delete mode 100644 obsolete/sunloadup/LOADUP-NOXCLCOMPILER.LISP delete mode 100644 obsolete/sunloadup/LOADUP-REM.CM delete mode 100644 obsolete/sunloadup/LOADUP.LISP delete mode 100644 obsolete/sunloadup/LOADUP.LOG delete mode 100644 obsolete/sunloadup/LispDlion.db delete mode 100644 obsolete/sunloadup/LispDove.db delete mode 100644 obsolete/sunloadup/MAIKOINIT delete mode 100644 obsolete/sunloadup/MAIKOLOADUPFNS delete mode 100644 obsolete/sunloadup/MAIKOLOADUPFNS.LCOM delete mode 100644 obsolete/sunloadup/MAKE-UTILS delete mode 100644 obsolete/sunloadup/NLOCALFILE delete mode 100644 obsolete/sunloadup/NLOCALFILE.LCOM delete mode 100644 obsolete/sunloadup/POSTLOADUP delete mode 100644 obsolete/sunloadup/POSTLOADUP.LCOM delete mode 100644 obsolete/sunloadup/REM.CM delete mode 100644 obsolete/sunloadup/SUNFONT delete mode 100644 obsolete/sunloadup/SUNFONT.LCOM delete mode 100644 obsolete/sunloadup/XREM-NOETHER.CM delete mode 100644 obsolete/sunloadup/bigFASTINIT.DFASL delete mode 100644 obsolete/sunloadup/runloadbig delete mode 100644 obsolete/sunloadup/runloadbig-sgi delete mode 100644 obsolete/sunloadup/runloadcltl2-sgi delete mode 100644 obsolete/sunloadup/runloadfull delete mode 100644 obsolete/sunloadup/runloadfull-2nd delete mode 100644 obsolete/sunloadup/runloadfull-dsk delete mode 100644 obsolete/sunloadup/runloadfull-sgi delete mode 100644 obsolete/sunloadup/runloadfullfromlisp delete mode 100644 obsolete/sunloadup/runloadup delete mode 100644 obsolete/sunloadup/runloadup-2nd delete mode 100644 obsolete/sunloadup/runloadup-2nd-sun3 delete mode 100644 obsolete/sunloadup/runloadup-main delete mode 100644 obsolete/sunloadup/runloadup-nodmachine delete mode 100644 obsolete/sunloadup/runloadup-noether delete mode 100644 obsolete/sunloadup/runloadup-nt delete mode 100644 obsolete/sunloadup/runloadup-sun3 delete mode 100644 obsolete/sunloadup/xrem.cm delete mode 100644 obsolete/tcp/TCP delete mode 100644 obsolete/tcp/TCPCHAT delete mode 100644 obsolete/tcp/TCPCONFIG delete mode 100644 obsolete/tcp/TCPDEBUG delete mode 100644 obsolete/tcp/TCPDOMAIN delete mode 100644 obsolete/tcp/TCPEXPORTS delete mode 100644 obsolete/tcp/TCPFTP delete mode 100644 obsolete/tcp/TCPFTPSRV delete mode 100644 obsolete/tcp/TCPHTE delete mode 100644 obsolete/tcp/TCPIP.TEDIT delete mode 100644 obsolete/tcp/TCPLLAR delete mode 100644 obsolete/tcp/TCPLLICMP delete mode 100644 obsolete/tcp/TCPLLIP delete mode 100644 obsolete/tcp/TCPNAMES delete mode 100644 obsolete/tcp/TCPOPS delete mode 100644 obsolete/tcp/TCPTFTP delete mode 100644 obsolete/tcp/TCPUDP diff --git a/obsolete/clos/2.0/CLOS-BROWSER.TEDIT.Z b/obsolete/clos/2.0/CLOS-BROWSER.TEDIT.Z deleted file mode 100644 index 337dd792212ad31b7da5085ea02b23c909748237..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11270 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Ȳ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.;22| 91732 - - IL:|previous| IL:|date:| "19-Nov-91 14:14:15" -IL:|{DSK}local>users>welch>lisp>clos>browser>NEW-CLOS-BROWSER.;21|) - - -; Copyright (c) 1991 by Venue. All rights reserved. - -(IL:PRETTYCOMPRINT IL:NEW-CLOS-BROWSERCOMS) - -(IL:RPAQQ IL:NEW-CLOS-BROWSERCOMS - ( - -(IL:* IL:|;;;| "***************************************") - - - -(IL:* IL:|;;;| "") - - - -(IL:* IL:|;;;| "Print out a copyright notice when loading") - - - (IL:* IL:|;;| "") - - (IL:P (FORMAT T - "~&;CLOS-BROWSER Copyright (c) 1991 VENUE Corporation. All rights reserved.~%" - )) - - -(IL:* IL:|;;;| "LOAD DEPENDENT MODULES") - - - (IL:* IL:|;;| "Note: before compiling clos-browser:") - - - (IL:* IL:|;;| " (load 'web-editor.dfasl)") - - - (IL:* IL:|;;| " (load 'clos-browser.dfasl)") - - - (IL:* IL:|;;| " (load 'clos-browser 'prop)") - - - (IL:* IL:|;;| "") - - - -(IL:* IL:|;;;| "PACKAGE STUFF ") - - (IL:PROPS (IL:NEW-CLOS-BROWSER IL:MAKEFILE-ENVIRONMENT) - (IL:NEW-CLOS-BROWSER IL:FILETYPE)) - - (IL:* IL:|;;| "(IL:P IL:* USER::CLOS-BROWSER-PACKAGE-COMMANDS)") - - - (IL:* IL:|;;| "") - - - -(IL:* IL:|;;;| "SYSTEM PATCHES") - - - (IL:* IL:|;;| "") - - - (IL:* IL:|;;| "") - - - (IL:* IL:|;;| "") - - - -(IL:* IL:|;;;| "CLOS-ICON CLASS & INSTANCE INITIALIZATION") - - (CLOS::CLASSES CLOS-BROWSER:CLOS-ICON) - (IL:VARIABLES CLOS-BROWSER:CLOS-ICON) - - (IL:* IL:|;;| "") - - - -(IL:* IL:|;;;| "CLOS-BROWSER CLASS") - - (IL:FUNCTIONS CLOS-BROWSER:BROWSE-CLASS CLOS-BROWSER::COLLECT-FAMILY - CLOS-BROWSER::MAKE-NODES CLOS-BROWSER::CLOS-BROWSER-CLOSE-FN - CLOS-BROWSER::BROWSER-CONTAINS-P) - (CLOS::CLASSES CLOS-BROWSER::CLOS-BROWSER) - (CLOS::METHODS (CLOS-BROWSER::ADD-ROOT (CLOS-BROWSER::CLOS-BROWSER)) - (CLOS-BROWSER::ADD-ROOTS (CLOS-BROWSER::CLOS-BROWSER)) - (WEB:BOX-NODE (CLOS-BROWSER::CLOS-BROWSER)) - (WEB:BROWSE (CLOS-BROWSER::CLOS-BROWSER)) - (CLOS-BROWSER::CLEAR-METHOD-MENU-CACHES (CLOS-BROWSER::CLOS-BROWSER)) - (WEB:ICON-TITLE (CLOS-BROWSER::CLOS-BROWSER)) - (WEB:INITIALIZE-EDITOR (CLOS-BROWSER::CLOS-BROWSER)) - (CLOS-BROWSER::NEW-ITEM (CLOS-BROWSER::CLOS-BROWSER)) - (WEB:RECOMPUTE (CLOS-BROWSER::CLOS-BROWSER)) - (CLOS-BROWSER::REAL-ADD-ROOT (CLOS-BROWSER::CLOS-BROWSER)) - (WEB:SHAPE-TO-HOLD (CLOS-BROWSER::CLOS-BROWSER)) - (IL:* IL:\; "multi-method") - (CLOS-BROWSER::SUBCLASSES-OF NIL) - (CLOS-BROWSER::CONTAINS-P (T CLOS-BROWSER::CLOS-BROWSER))) - - (IL:* IL:|;;| "") - - - -(IL:* IL:|;;;| "CLOS-BROWSER-NODE CLASS") - - (CLOS::CLASSES CLOS-BROWSER::CLOS-BROWSER-NODE) - (CLOS::METHODS (CLOS-BROWSER::OBJECT-NAME (CLOS-BROWSER::CLOS-BROWSER-NODE)) - (CLOS-BROWSER::OVERRIDE (CLOS-BROWSER::CLOS-BROWSER-NODE)) - (CLOS-BROWSER::CACHE (T CLOS-BROWSER::CLOS-BROWSER-NODE)) - (CLOS-BROWSER::UNCACHE (CLOS-BROWSER::CLOS-BROWSER-NODE))) - (IL:VARS (CLOS-BROWSER::*METHOD-PROMPT-STRING* (CONCATENATE 'STRING - "Left button to edit the method." - " -" "Middle button provides a menu of operations."))) - (IL:FUNCTIONS CLOS-BROWSER::EDIT CLOS-BROWSER::MAKE-METHOD-MENU-ITEMS - CLOS-BROWSER::MAKE-TOP-LEVEL-METHOD-MENU-ITEMS - CLOS-BROWSER::MAKE-MULTI-METHOD-SUB-MENU) - - (IL:* IL:|;;| "") - - - (IL:* IL:|;;| "OPERATORS (via CLOS-BROWSER-NODE) ON CLOS::STANDARD-CLASS") - - (CLOS::METHODS (CLOS-BROWSER:ADD-BROWSER-METHOD (CLOS-BROWSER::CLOS-BROWSER-NODE)) - (CLOS-BROWSER::BROWSE-SUBS (CLOS-BROWSER::CLOS-BROWSER-NODE)) - (CLOS-BROWSER::EDIT-CLASS (CLOS-BROWSER::CLOS-BROWSER-NODE)) - (CLOS-BROWSER::INSPECT-CLASS (CLOS-BROWSER::CLOS-BROWSER-NODE)) - (CLOS-BROWSER::MENU-METHODS (CLOS-BROWSER::CLOS-BROWSER-NODE)) - (CLOS-BROWSER::MAKE-WHENSELECTEDFN (CLOS-BROWSER::CLOS-BROWSER-NODE)) - (CLOS-BROWSER::DESCRIBE-CLASS (CLOS-BROWSER::CLOS-BROWSER-NODE)) - (CLOS-BROWSER::DOCUMENTATION-CLASS (CLOS-BROWSER::CLOS-BROWSER-NODE)) - (CLOS-BROWSER::PRINT-CLASS (CLOS-BROWSER::CLOS-BROWSER-NODE)) - (CLOS-BROWSER::SPECIALIZE-CLASS (CLOS-BROWSER::CLOS-BROWSER-NODE))) - (IL:FUNCTIONS CLOS-BROWSER::COMPLETE-ADD-METHOD CLOS-BROWSER::COMPLETE-SPECIALIZE - CLOS-BROWSER::LYRIC-COMPLETE-SPECIALIZE CLOS-BROWSER::THIS-CLASS-NODE-P - CLOS::CLASS-DIRECT-METHODS) - - (IL:* IL:|;;| "") - - - (IL:* IL:|;;| "OPERATORS ON CLOS::STANDARD-CLASS (directly)") - - (CLOS::METHODS (CLOS::COMPUTE-INHERITED-METHODS (STANDARD-CLASS)) - (CLOS-BROWSER::SPECIALIZE (STANDARD-CLASS)) - (CLOS-BROWSER::SUBCLASSES-OF (STANDARD-CLASS))) - - (IL:* IL:|;;| "") - - - (IL:* IL:|;;| "OPERATORS ON CLOS::STANDARD-METHOD") - - (CLOS::METHODS (CLOS-BROWSER::DELETE-METHOD (STANDARD-METHOD)) - (CLOS-BROWSER::COPY (STANDARD-METHOD STANDARD-CLASS)) - (CLOS-BROWSER::MOVE (STANDARD-METHOD STANDARD-CLASS)) - (IL:* IL:\; - "web:move is shadowed above") - (CLOS-BROWSER::PRINT-DEFINITION (STANDARD-METHOD)) - (CLOS-BROWSER::DESCRIBE-METHOD (CLOS::METHOD)) - (CLOS-BROWSER::RENAME (STANDARD-METHOD)) - (CLOS-BROWSER::UPDATE-CACHED-MENUES (STANDARD-METHOD)) - (CLOS-BROWSER::WHO-OWNS (STANDARD-METHOD)) - - (IL:* IL:|;;| - "update-cached-menues must appear before add-method :after in the coms") - - (ADD-METHOD :AFTER (STANDARD-GENERIC-FUNCTION STANDARD-METHOD))) - (IL:FUNCTIONS CLOS-BROWSER::REPLACE-SPECIALIZERS) - - (IL:* IL:|;;| "") - - - -(IL:* IL:|;;;| "SETUP RELEASE INFO") - - (IL:VARS (CLOS-BROWSER::RELEASE-ID "0.02") - (CLOS-BROWSER::SYSTEM-DATE (CAAR (IL:GETPROP 'IL:CLOS-BROWSER 'IL:FILEDATES)))) - - (IL:* IL:|;;| "") - - - (IL:* IL:|;;| "") - - - (IL:* IL:|;;| "SETUP BACKGROUND MENU") - - (IL:FUNCTIONS CLOS-BROWSER::IN-SELECT-PACKAGE CLOS-BROWSER::CLASSES-IN-PACKAGE) - (IL:P - (IL:* IL:|;;| "pushnew should eliminate this") - - (SETQ IL:|BackgroundMenuCommands| (REMOVE 'IL:|BrowseClass| - IL:|BackgroundMenuCommands| :KEY - #'CAR)) - (PUSH '(IL:|BrowseClass| (CLOS-BROWSER:BROWSE-CLASS) - "Bring up a class browser." - (IL:SUBITEMS (IL:|all in a package| (CLOS-BROWSER:BROWSE-CLASS - (CLOS-BROWSER::CLASSES-IN-PACKAGE - (CLOS-BROWSER::IN-SELECT-PACKAGE - ))) - - "Select a package and browse all the classes defined in that package." - ))) - IL:|BackgroundMenuCommands|) - (SETQ IL:|BackgroundMenu| NIL)))) - - - -(IL:* IL:|;;;| "***************************************") - - - - -(IL:* IL:|;;;| "") - - - - -(IL:* IL:|;;;| "Print out a copyright notice when loading") - - - - -(IL:* IL:|;;| "") - - -(FORMAT T "~&;CLOS-BROWSER Copyright (c) 1991 VENUE Corporation. All rights reserved.~%") - - - -(IL:* IL:|;;;| "LOAD DEPENDENT MODULES") - - - - -(IL:* IL:|;;| "Note: before compiling clos-browser:") - - - - -(IL:* IL:|;;| " (load 'web-editor.dfasl)") - - - - -(IL:* IL:|;;| " (load 'clos-browser.dfasl)") - - - - -(IL:* IL:|;;| " (load 'clos-browser 'prop)") - - - - -(IL:* IL:|;;| "") - - - - -(IL:* IL:|;;;| "PACKAGE STUFF ") - - -(IL:PUTPROPS IL:NEW-CLOS-BROWSER IL:MAKEFILE-ENVIRONMENT (:PACKAGE (LET ((*PACKAGE*)) - (IN-PACKAGE - "CLOS-BROWSER") - (USE-PACKAGE "CLOS") - (FIND-PACKAGE "USER")) - :READTABLE "XCL" :BASE 10)) - -(IL:PUTPROPS IL:NEW-CLOS-BROWSER IL:FILETYPE :COMPILE-FILE) - - - -(IL:* IL:|;;| "(IL:P IL:* USER::CLOS-BROWSER-PACKAGE-COMMANDS)") - - - - -(IL:* IL:|;;| "") - - - - -(IL:* IL:|;;;| "SYSTEM PATCHES") - - - - -(IL:* IL:|;;| "") - - - - -(IL:* IL:|;;| "") - - - - -(IL:* IL:|;;| "") - - - - -(IL:* IL:|;;;| "CLOS-ICON CLASS & INSTANCE INITIALIZATION") - - -(DEFCLASS CLOS-BROWSER:CLOS-ICON (STANDARD-OBJECT) - ((CLOS-BROWSER::CLASS-BROWSERS :ALLOCATION :CLASS :INITFORM NIL) - (IL:* IL:\; - "list of all open browsers") - (CLOS-BROWSER::DESTINATION-BROWSER :ALLOCATION :CLASS :INITFORM NIL) - (IL:* IL:\; - "browser containing boxed node") - (CLOS-BROWSER::MENU-CACHE-SWITCH :ALLOCATION :CLASS :INITFORM :LAZY - - (IL:* IL:|;;| "valid values:") - - (IL:* IL:|;;| ":none for never use cache") - - (IL:* IL:|;;| ":lazy for invalidate cache at method create or remove time causing re-compute and cache at menu request time.") - - (IL:* IL:|;;| - ":eager (not implemented) for re-compute and cache menu whenever a method is created or removed") - - ))) - -(XCL:DEFGLOBALPARAMETER CLOS-BROWSER:CLOS-ICON (MAKE-INSTANCE 'CLOS-BROWSER:CLOS-ICON)) - - - -(IL:* IL:|;;| "") - - - - -(IL:* IL:|;;;| "CLOS-BROWSER CLASS") - - -(DEFUN CLOS-BROWSER:BROWSE-CLASS (&OPTIONAL CLOS-BROWSER::CLASS-NAME-OR-LIST &KEY ( - CLOS-BROWSER::DIRECTION - :SUB) - (CLOS-BROWSER::WINDOW-OR-TITLE "CLOS-browser") - CLOS-BROWSER::GOOD-CLASSES POSITION) - (LET* ((CLOS-BROWSER::ROOT-CLASSES (WHEN CLOS-BROWSER::CLASS-NAME-OR-LIST - (IF (LISTP CLOS-BROWSER::CLASS-NAME-OR-LIST) - (MAPCAR #'FIND-CLASS CLOS-BROWSER::CLASS-NAME-OR-LIST) - (CONS (FIND-CLASS CLOS-BROWSER::CLASS-NAME-OR-LIST))))) - (CLOS-BROWSER::NODES (CLOS-BROWSER::MAKE-NODES (CLOS-BROWSER::COLLECT-FAMILY NIL - CLOS-BROWSER::ROOT-CLASSES))) - (CLOS-BROWSER::CLOS-BROWSER (MAKE-INSTANCE 'CLOS-BROWSER::CLOS-BROWSER))) - (WEB:INITIALIZE-EDITOR CLOS-BROWSER::CLOS-BROWSER) - (SETF (SLOT-VALUE CLOS-BROWSER::CLOS-BROWSER 'CLOS-BROWSER::ROOT-CLASSES) - CLOS-BROWSER::ROOT-CLASSES) - (SETF (SLOT-VALUE CLOS-BROWSER::CLOS-BROWSER 'CLOS-BROWSER::TITLE) - CLOS-BROWSER::CLASS-NAME-OR-LIST) - (WEB:BROWSE CLOS-BROWSER::CLOS-BROWSER CLOS-BROWSER::NODES CLOS-BROWSER::WINDOW-OR-TITLE - CLOS-BROWSER::GOOD-CLASSES POSITION) - (UNLESS CLOS-BROWSER::NODES (CLOS-BROWSER::ADD-ROOT CLOS-BROWSER::CLOS-BROWSER)) - CLOS-BROWSER::CLOS-BROWSER)) - -(DEFUN CLOS-BROWSER::COLLECT-FAMILY (CLOS-BROWSER::FAMILY CLOS-BROWSER::CLASS-LIST) - "gather all of the sub-classes of the class passed as family" - - (IL:* IL:|;;| "for efficiency, to avoid gathering and filtering subclasses more than once, we assume family only contains classes whose family has already been gathered.") - - (IF CLOS-BROWSER::CLASS-LIST - (LET ((CLOS-BROWSER::FIRST-CLASS (CAR CLOS-BROWSER::CLASS-LIST)) - (REST (CDR CLOS-BROWSER::CLASS-LIST))) - (IF (MEMBER CLOS-BROWSER::FIRST-CLASS CLOS-BROWSER::FAMILY) - (PROGN - (IL:* IL:|;;| "skip gathering class-direct-subclasses ") - - (CLOS-BROWSER::COLLECT-FAMILY CLOS-BROWSER::FAMILY REST)) - (PROGN (PUSH CLOS-BROWSER::FIRST-CLASS CLOS-BROWSER::FAMILY) - (CLOS-BROWSER::COLLECT-FAMILY CLOS-BROWSER::FAMILY (APPEND REST - ( - CLOS::CLASS-DIRECT-SUBCLASSES - - CLOS-BROWSER::FIRST-CLASS - )))))) - CLOS-BROWSER::FAMILY)) - -(DEFUN CLOS-BROWSER::MAKE-NODES (CLOS-BROWSER::CLASS-LIST) - (LET* ((CLOS-BROWSER::NODE-HASH (MAKE-HASH-TABLE)) - (CLOS-BROWSER::NODE-LIST (MAP 'LIST #'(LAMBDA (CLOS-BROWSER::CLASS - &AUX - (CLOS-BROWSER::NODE (MAKE-INSTANCE - - ' - CLOS-BROWSER::CLOS-BROWSER-NODE - ))) - (SETF (SLOT-VALUE CLOS-BROWSER::NODE - 'CLOS-BROWSER::CLASS) - CLOS-BROWSER::CLASS) - (SETF (WEB:NODE-NAME CLOS-BROWSER::NODE) - (CLASS-NAME CLOS-BROWSER::CLASS)) - (SETF (GETHASH CLOS-BROWSER::CLASS - CLOS-BROWSER::NODE-HASH) - CLOS-BROWSER::NODE) - CLOS-BROWSER::NODE) - CLOS-BROWSER::CLASS-LIST))) - (DOLIST (CLOS-BROWSER::NODE CLOS-BROWSER::NODE-LIST) - (SETF (WEB:NODE-LINKS CLOS-BROWSER::NODE) - (MAP 'LIST #'(LAMBDA (CLOS-BROWSER::SUB) - (GETHASH CLOS-BROWSER::SUB CLOS-BROWSER::NODE-HASH)) - (CLOS::CLASS-DIRECT-SUBCLASSES (SLOT-VALUE CLOS-BROWSER::NODE - 'CLOS-BROWSER::CLASS))))) - CLOS-BROWSER::NODE-LIST)) - -(DEFUN CLOS-BROWSER::CLOS-BROWSER-CLOSE-FN (CLOS-BROWSER::WINDOW) - (LET ((CLOS-BROWSER::BROWSER (IL:WINDOWPROP CLOS-BROWSER::WINDOW 'WEB:WEB-EDITOR))) - (SETF (SLOT-VALUE CLOS-BROWSER:CLOS-ICON 'CLOS-BROWSER::CLASS-BROWSERS) - (REMOVE CLOS-BROWSER::BROWSER (SLOT-VALUE CLOS-BROWSER:CLOS-ICON - 'CLOS-BROWSER::CLASS-BROWSERS))) - (WHEN (EQ CLOS-BROWSER::BROWSER (SLOT-VALUE CLOS-BROWSER:CLOS-ICON - 'CLOS-BROWSER::DESTINATION-BROWSER)) - (SETF (SLOT-VALUE CLOS-BROWSER:CLOS-ICON 'CLOS-BROWSER::DESTINATION-BROWSER) - NIL)))) - -(DEFUN CLOS-BROWSER::BROWSER-CONTAINS-P (CLOS-BROWSER::CLASS CLOS-BROWSER::BROWSER) - "created because too slow to call contains-p method inside a tight loop" - (LET ((CLOS-BROWSER::NODE (CAR (MEMBER CLOS-BROWSER::CLASS (SLOT-VALUE CLOS-BROWSER::BROWSER - 'WEB::STARTING-LIST) - :TEST - #'CLOS-BROWSER::THIS-CLASS-NODE-P)))) - (WHEN (AND CLOS-BROWSER::NODE (NOT (MEMBER CLOS-BROWSER::CLASS (SLOT-VALUE - CLOS-BROWSER::BROWSER - 'WEB::BAD-LIST) - :TEST - #'CLOS-BROWSER::THIS-CLASS-NODE-P))) - CLOS-BROWSER::NODE))) - -(DEFCLASS CLOS-BROWSER::CLOS-BROWSER (WEB:WEB-EDITOR) - ((CLOS-BROWSER::ROOT-CLASSES) - (WEB:TITLE-ITEMS :ALLOCATION :INSTANCE - - (IL:* IL:|;;| "Items for menu of selections in title of window") - - :INITFORM - '(("Recompute" WEB:RECOMPUTE "Recompute lattice from starting objects" - (IL:SUBITEMS ("Recompute" WEB:RECOMPUTE - "Recompute lattice from starting objects") - ("Recompute labels" WEB:RECOMPUTE-LABELS "Recomputes the labels") - ("Recompute in place" WEB:RECOMPUTE-IN-PLACE - "Recompute keeping current view in window") - ("Clear caches" CLOS-BROWSER::CLEAR-METHOD-MENU-CACHES - "Clear cached menues of methods."))) - ("Browser looks" NIL "" (IL:SUBITEMS ("Shape to hold" WEB:SHAPE-TO-HOLD - "Make window large or small enough to just hold graph" - ) - ("Change font size" WEB:CHANGE-FONT-SIZE - "Choose a new size Font") - ("Change format" WEB:CHANGE-FORMAT - "Change format between lattice and tree"))) - ("Add root " CLOS-BROWSER::ADD-ROOT "Add named item to startingList for browser." - (IL:SUBITEMS ("all in a package" CLOS-BROWSER::ADD-ROOTS - "Add all the classes in a package to this browser."))) - - (IL:* IL:|;;| - "(\"Unhide class\" remove-from-bad-list \"Restore item previously deleted from browser\")") - - )) - (WEB:LEFT-BUTTON-ITEMS :ALLOCATION :CLASS - - (IL:* IL:|;;| "Menu items for LeftButton seletion -- Value sent as message to object or browser -- see local-commands") - - :INITFORM - 'WEB:BOX-NODE) - (WEB:MIDDLE-BUTTON-ITEMS :ALLOCATION :INSTANCE - - (IL:* IL:|;;| "Menu items for MiddleButton seletion -- Value sent as message to object or browser -- see local-commands") - - :INITFORM - '(("Edit" CLOS-BROWSER::EDIT-CLASS "Edit the class." (IL:SUBITEMS ("Edit" - CLOS-BROWSER::EDIT-CLASS - - "Edit the class." - ) - ("Inspect" - CLOS-BROWSER::INSPECT-CLASS - - "Bring up an inspector on the class." - ))) - ("Add method" CLOS-BROWSER:ADD-BROWSER-METHOD "Add a method to the class.") - ("Browse" CLOS-BROWSER::BROWSE-SUBS "Bring up a browser on this class." - (WHEN NIL (IL:* IL:\; - "superclasses not implemented") - (IL:SUBITEMS ("sub classes" CLOS-BROWSER::BROWSE-SUBS - "Bring up a browser on this class.") - ("super classes" CLOS-BROWSER::BROWSE-SUPERS "Not Implemented")))) - ("Print" CLOS-BROWSER::PRINT-CLASS "Print the form defining the class." - (IL:SUBITEMS ("Print" CLOS-BROWSER::PRINT-CLASS - "Print the form defining the class.") - ("Describe" CLOS-BROWSER::DESCRIBE-CLASS - "Print a description of the class.") - ("Documentation" CLOS-BROWSER::DOCUMENTATION-CLASS - "Display the documentation for the class."))) - ("Specialize" CLOS-BROWSER::SPECIALIZE-CLASS "Create a new sub-class of this class.") - ("------" CLOS-BROWSER::EDIT-CLASS - "Above this line operates on the class. -Below this line operates on individual slots and methods.") - ("slots" CLOS-BROWSER::EDIT-CLASS "Edit the defclass definition.") - ("methods" (CLOS-BROWSER::MENU-METHODS) - "Build a menu of methods local to this class." - (IL:SUBITEMS ("local" (CLOS-BROWSER::MENU-METHODS) - "Show a menu of methods specialized on this class.." - (IL:SUBITEMS ("Use cached menu" (CLOS-BROWSER::MENU-METHODS) - "Do not recompute the menu of methods") - ("Recompute menu" (CLOS-BROWSER::MENU-METHODS NIL NIL - NIL T) - "Recompute the menu of methods"))) - ("inherited" (CLOS-BROWSER::MENU-METHODS :INHERITED) - "Show only methods inherited by this class." - (IL:SUBITEMS ("Use cached menu" (CLOS-BROWSER::MENU-METHODS - :INHERITED) - "Do not recompute the menu of methods") - ("Recompute menu" (CLOS-BROWSER::MENU-METHODS :INHERITED - NIL NIL T) - "Recompute the menu of methods"))) - ("all" (CLOS-BROWSER::MENU-METHODS :ALL) - "Show all methods understood by this class." - (IL:SUBITEMS ("Use cached menu" (CLOS-BROWSER::MENU-METHODS :ALL) - "Do not recompute the menu of methods") - ("Recompute menu" (CLOS-BROWSER::MENU-METHODS :ALL NIL NIL - T) - "Recompute the menu of methods"))))))) - (CLOS-BROWSER::TITLE :INITFORM "CLOS Browser" (IL:* IL:\; - "Title passed to GRAPHER package")))) - -(DEFMETHOD CLOS-BROWSER::ADD-ROOT ((CLOS-BROWSER::BROWSER CLOS-BROWSER::CLOS-BROWSER) - &OPTIONAL - (CLOS-BROWSER::NEW-ITEM (CLOS-BROWSER::NEW-ITEM - CLOS-BROWSER::BROWSER))) - "Add a named item to the starting list of the browser " - (IF (CLOS-BROWSER::REAL-ADD-ROOT CLOS-BROWSER::BROWSER CLOS-BROWSER::NEW-ITEM) - (WEB:RECOMPUTE CLOS-BROWSER::BROWSER) - - (IL:* IL:|;;| "otherwise warn the user") - - (WEB:PROMPT-PRINT CLOS-BROWSER::BROWSER (FORMAT NIL "~A not added to browser." - CLOS-BROWSER::NEW-ITEM)))) - -(DEFMETHOD CLOS-BROWSER::ADD-ROOTS ((CLOS-BROWSER::BROWSER CLOS-BROWSER::CLOS-BROWSER) - &OPTIONAL - (CLOS-BROWSER::NEW-ITEMS (CLOS-BROWSER::CLASSES-IN-PACKAGE - (CLOS-BROWSER::IN-SELECT-PACKAGE - )))) - "Add all classes in a package to the starting list of the browser" - (DOLIST (CLOS-BROWSER::CLASS CLOS-BROWSER::NEW-ITEMS) - (UNLESS (CLOS-BROWSER::REAL-ADD-ROOT CLOS-BROWSER::BROWSER CLOS-BROWSER::CLASS) - (WEB:PROMPT-PRINT CLOS-BROWSER::BROWSER (FORMAT NIL "~A not added to browser." - CLOS-BROWSER::CLASS)))) - (WEB:RECOMPUTE CLOS-BROWSER::BROWSER)) - -(DEFMETHOD WEB:BOX-NODE ((CLOS-BROWSER::BROWSER CLOS-BROWSER::CLOS-BROWSER) - CLOS-BROWSER::OBJECT &OPTIONAL CLOS-BROWSER::KEEP-PREVIOUS-BOX) - (CALL-NEXT-METHOD) - (SETF (SLOT-VALUE CLOS-BROWSER:CLOS-ICON 'CLOS-BROWSER::DESTINATION-BROWSER) - CLOS-BROWSER::BROWSER)) - -(DEFMETHOD WEB:BROWSE ((CLOS-BROWSER::SELF CLOS-BROWSER::CLOS-BROWSER) - &OPTIONAL CLOS-BROWSER::BROWSE-LIST CLOS-BROWSER::WINDOW-OR-TITLE - CLOS-BROWSER::GOOD-LIST POSITION) - (LET ((CLOS-BROWSER::BROWSER (CALL-NEXT-METHOD))) - (PUSHNEW CLOS-BROWSER::BROWSER (SLOT-VALUE CLOS-BROWSER:CLOS-ICON - 'CLOS-BROWSER::CLASS-BROWSERS)))) - -(DEFMETHOD CLOS-BROWSER::CLEAR-METHOD-MENU-CACHES ((CLOS-BROWSER::SELF CLOS-BROWSER::CLOS-BROWSER - )) - (DOLIST (CLOS-BROWSER::NODE (SLOT-VALUE CLOS-BROWSER::SELF 'WEB::STARTING-LIST - (IL:* IL:\; - "starting-list is really all the nodes in the browser.") - )) - (SETF (SLOT-VALUE CLOS-BROWSER::NODE WEB::MENU-CACHE) - NIL))) - -(DEFMETHOD WEB:ICON-TITLE ((CLOS-BROWSER::SELF CLOS-BROWSER::CLOS-BROWSER)) - (WEB:NODE-NAME (CAR (LAST (SLOT-VALUE CLOS-BROWSER::SELF `WEB::STARTING-LIST))))) - -(DEFMETHOD WEB:INITIALIZE-EDITOR ((CLOS-BROWSER::BROWSER CLOS-BROWSER::CLOS-BROWSER)) - "initialize and setup closefn" - (CALL-NEXT-METHOD) - (PUSHNEW CLOS-BROWSER::BROWSER (SLOT-VALUE CLOS-BROWSER:CLOS-ICON 'CLOS-BROWSER::CLASS-BROWSERS)) - (LET ((CLOS-BROWSER::WINDOW (SLOT-VALUE CLOS-BROWSER::BROWSER 'WEB::WINDOW))) - (IL:WINDOWADDPROP CLOS-BROWSER::WINDOW 'IL:CLOSEFN 'CLOS-BROWSER::CLOS-BROWSER-CLOSE-FN T)) - CLOS-BROWSER::BROWSER) - -(DEFMETHOD CLOS-BROWSER::NEW-ITEM ((CLOS-BROWSER::SELF CLOS-BROWSER::CLOS-BROWSER) - &OPTIONAL CLOS-BROWSER::NEW-ITEM) - (UNLESS CLOS-BROWSER::NEW-ITEM - (SETQ CLOS-BROWSER::NEW-ITEM (WEB:PROMPT-READ CLOS-BROWSER::SELF "Class")))) - -(DEFMETHOD WEB:RECOMPUTE ((CLOS-BROWSER::SELF CLOS-BROWSER::CLOS-BROWSER) - &OPTIONAL CLOS-BROWSER::DONT-RESHAPE-FLG) - - (IL:* IL:|;;| "this should be moved to a more intelligent recompute-nodes function that does not have to re-build every single node.") - - (SETF (SLOT-VALUE CLOS-BROWSER::SELF 'WEB::STARTING-LIST) - (CLOS-BROWSER::MAKE-NODES (CLOS-BROWSER::COLLECT-FAMILY - NIL - (IL:FOR CLOS-BROWSER::EACH - IL:IN (REVERSE - (IL:* IL:\; - "so they come out in the original order") - (SLOT-VALUE CLOS-BROWSER::SELF - 'WEB::STARTING-LIST)) IL:WHEN - - CLOS-BROWSER::EACH - IL:COLLECT (SLOT-VALUE CLOS-BROWSER::EACH - `CLOS-BROWSER::CLASS))))) - (CALL-NEXT-METHOD) - (WHEN (SLOT-VALUE CLOS-BROWSER:CLOS-ICON 'CLOS-BROWSER::DESTINATION-BROWSER) - - (IL:* IL:|;;| "Node has been invalidated, so get rid of this pointer to it. ") - - (SETF (SLOT-VALUE (SLOT-VALUE CLOS-BROWSER:CLOS-ICON 'CLOS-BROWSER::DESTINATION-BROWSER) - 'WEB:BOXED-NODE) - NIL) - (SETF (SLOT-VALUE CLOS-BROWSER:CLOS-ICON 'CLOS-BROWSER::DESTINATION-BROWSER) - NIL))) - -(DEFMETHOD CLOS-BROWSER::REAL-ADD-ROOT ((CLOS-BROWSER::BROWSER CLOS-BROWSER::CLOS-BROWSER) - CLOS-BROWSER::CLASS) - "Add a class to the starting list of the browser" - (WHEN CLOS-BROWSER::CLASS - (LET* ((CLOS-BROWSER::CLASS (IF (TYPEP CLOS-BROWSER::CLASS 'STANDARD-CLASS) - CLOS-BROWSER::CLASS - (FIND-CLASS CLOS-BROWSER::CLASS))) - (CLOS-BROWSER::NEW-NODE (CAR (CLOS-BROWSER::MAKE-NODES (LIST CLOS-BROWSER::CLASS))) - )) - (IF CLOS-BROWSER::NEW-NODE - (PROGN (PUSHNEW CLOS-BROWSER::NEW-NODE (SLOT-VALUE CLOS-BROWSER::BROWSER - 'WEB::STARTING-LIST)) - (IF (SLOT-VALUE CLOS-BROWSER::BROWSER 'WEB::GOOD-LIST) - (PUSHNEW CLOS-BROWSER::NEW-NODE (SLOT-VALUE CLOS-BROWSER::BROWSER - 'WEB::GOOD-LIST))) - (SETF (SLOT-VALUE CLOS-BROWSER::BROWSER 'WEB::BAD-LIST) - (IL:DREMOVE CLOS-BROWSER::NEW-NODE (SLOT-VALUE CLOS-BROWSER::BROWSER - 'WEB::BAD-LIST))) - CLOS-BROWSER::BROWSER) - - (IL:* IL:|;;| "otherwise return nil") - - NIL)))) - -(DEFMETHOD WEB:SHAPE-TO-HOLD ((WEB::SELF CLOS-BROWSER::CLOS-BROWSER)) - "give a larger width for empty browsers so add-node will have room" - (LET* ((WEB::WINDOW (SLOT-VALUE WEB::SELF 'WEB::WINDOW)) - (WEB::NODES (IL:|fetch| IL:GRAPHNODES IL:|of| (IL:WINDOWPROP WEB::WINDOW - 'IL:GRAPH)))) - (IF WEB::NODES - (CALL-NEXT-METHOD) - (LET ((WEB::REGION (IL:WINDOWPROP WEB::WINDOW 'IL:REGION)) - (WEB::MIN-HEIGHT (IL:FONTHEIGHT (IL:DSPFONT NIL WEB::WINDOW))) - (WEB::MIN-WIDTH (MAX 250 (IL:IPLUS 5 (IL:STRINGWIDTH (SLOT-VALUE WEB::SELF - 'WEB::TITLE) - (IL:DSPFONT NIL - IL:|WindowTitleDisplayStream|)) - )))) - (WEB::SET-REGION WEB::SELF (IL:CREATEREGION (IL:|fetch| IL:LEFT IL:|of| - WEB::REGION) - (IL:|fetch| IL:BOTTOM IL:|of| WEB::REGION - ) - WEB::MIN-WIDTH WEB::MIN-HEIGHT)))))) - -(DEFMETHOD CLOS-BROWSER::SUBCLASSES-OF ((CLOS-BROWSER::CLASS T)) - (APPEND (LIST CLOS-BROWSER::CLASS) - (IL:FOR CLOS-BROWSER::SUBCLASS IL:IN (SLOT-VALUE CLOS-BROWSER::CLASS - 'CLOS::DIRECT-SUBCLASSES) - IL:JOIN (IF (SLOT-VALUE CLOS-BROWSER::SUBCLASS 'CLOS::DIRECT-SUBCLASSES) - (CLOS-BROWSER::SUBCLASSES-OF CLOS-BROWSER::SUBCLASS) - (LIST CLOS-BROWSER::SUBCLASS))))) - -(DEFMETHOD CLOS-BROWSER::CONTAINS-P ((CLOS-BROWSER::CLASS T) - (CLOS-BROWSER::BROWSER CLOS-BROWSER::CLOS-BROWSER)) - (LET ((CLOS-BROWSER::NODE (CAR (MEMBER CLOS-BROWSER::CLASS (SLOT-VALUE CLOS-BROWSER::BROWSER - 'WEB::STARTING-LIST) - :TEST - #'CLOS-BROWSER::THIS-CLASS-NODE-P)))) - (WHEN (AND CLOS-BROWSER::NODE (NOT (MEMBER CLOS-BROWSER::CLASS (SLOT-VALUE - CLOS-BROWSER::BROWSER - 'WEB::BAD-LIST) - :TEST - #'CLOS-BROWSER::THIS-CLASS-NODE-P))) - CLOS-BROWSER::NODE))) - - - -(IL:* IL:|;;| "") - - - - -(IL:* IL:|;;;| "CLOS-BROWSER-NODE CLASS") - - -(DEFCLASS CLOS-BROWSER::CLOS-BROWSER-NODE (WEB:WEB-NODE) - ((CLOS-BROWSER::CLASS (IL:* IL:\; - "The class represented by this node") - ) - (CLOS-BROWSER::MENU-CACHE :INITFORM NIL) (IL:* IL:\; - "Menus of methods and slots. See clos-icon for the switch that controls when this gets updated.") - (CLOS-BROWSER::LARGE-MENU-SIZE :ALLOCATION :CLASS :INITFORM 22) - (CLOS-BROWSER::LARGE-MENU-FONT :ALLOCATION :INSTANCE :INITFORM (IL:FONTCREATE - `(IL:HELVETICA 8))) - (CLOS-BROWSER::LOCAL-METHOD-OPERATIONS :ALLOCATION :INSTANCE :INITFORM - '(("Edit" 'CLOS-BROWSER::EDIT "Bring up the editor on this method's definition." - (IL:SUBITEMS ("Inspect" 'INSPECT "Inspect this method"))) - ("Print" 'CLOS-BROWSER::PRINT-DEFINITION "Pretty Print this method's definition." - (IL:SUBITEMS ("Print" 'PRINT "Print this method's definition.") - ("Describe" 'CLOS-BROWSER::DESCRIBE-METHOD "Describe this method.") - ("Documentation" 'DOCUMENTATION "Print this method's documentation."))) - ("Delete" 'CLOS-BROWSER::DELETE-METHOD "Remove this method.") - ("Copy" 'CLOS-BROWSER::COPY "Copy this method to boxed class.") - ("Move" 'CLOS-BROWSER::MOVE "Move this method to boxed class.") - ("Rename" 'CLOS-BROWSER::RENAME - "Change the name of this method to new name you specify") - ("Break" 'CLOS::BREAK-METHOD "Cause a break window whenever this method is invoked.") - ("Trace" 'CLOS::TRACE-METHOD "Trace this method.") - ("UnBreak" 'CLOS::UNBREAK-METHOD "Unbreak this method.") - ("Who owns" 'CLOS-BROWSER::WHO-OWNS - "Show the classes on which this method is specialized."))) - (CLOS-BROWSER::INHERITED-METHOD-OPERATIONS :ALLOCATION :INSTANCE :INITFORM - '(("Edit" 'CLOS-BROWSER::EDIT "Bring up the editor on this method's definition." - (IL:SUBITEMS ("Inspect" 'INSPECT "Inspect this method"))) - ("Print" 'CLOS-BROWSER::PRINT-DEFINITION "Pretty Print this method's definition." - (IL:SUBITEMS ("Print" 'PRINT "Print this method's definition.") - ("Describe" 'CLOS-BROWSER::DESCRIBE-METHOD "Describe this method.") - ("Documentation" 'DOCUMENTATION "Print this method's documentation."))) - ("Override" 'CLOS-BROWSER::OVERRIDE "Create a local method with this name.") - ("Break" 'CLOS::BREAK-METHOD "Cause a break window whenever this method is invoked.") - ("Trace" 'CLOS::TRACE-METHOD "Trace this method.") - ("UnBreak" 'CLOS::UNBREAK-METHOD "Unbreak this method.") - ("Who owns" 'CLOS-BROWSER::WHO-OWNS - "Show the classes on which this method is specialized."))) - (CLOS-BROWSER::ALL-METHOD-OPERATIONS :ALLOCATION :INSTANCE :INITFORM - '(("Edit" 'CLOS-BROWSER::EDIT "Bring up the editor on this method's definition." - (IL:SUBITEMS ("Inspect" 'INSPECT "Inspect this method"))) - ("Print" 'CLOS-BROWSER::PRINT-DEFINITION "Pretty Print this method's definition." - (IL:SUBITEMS ("Print" 'PRINT "Print this method's definition.") - ("Describe" 'CLOS-BROWSER::DESCRIBE-METHOD "Describe this method.") - ("Documentation" 'DOCUMENTATION "Print this method's documentation."))) - ("Delete" 'DELETE "Remove this method.") - ("Copy" 'CLOS-BROWSER::COPY "Copy this method to boxed class.") - ("Move" 'CLOS-BROWSER::MOVE "Move this method to boxed class.") - ("Rename" 'CLOS-BROWSER::RENAME - "Change the name of this method to new name you specify") - ("Override" 'CLOS-BROWSER::OVERRIDE "Create a local method with this name.") - ("Break" 'CLOS::BREAK-METHOD "Cause a break window whenever this method is invoked.") - ("Trace" 'CLOS::TRACE-METHOD "Trace this method.") - ("UnBreak" 'CLOS::UNBREAK-METHOD "Unbreak this method.") - ("Who owns" 'CLOS-BROWSER::WHO-OWNS - "Show the classes on which this method is specialized."))))) - -(DEFMETHOD CLOS-BROWSER::OBJECT-NAME ((CLOS-BROWSER::SELF CLOS-BROWSER::CLOS-BROWSER-NODE)) - (WEB:NODE-NAME CLOS-BROWSER::SELF)) - -(DEFMETHOD CLOS-BROWSER::OVERRIDE ((CLOS-BROWSER::NODE CLOS-BROWSER::CLOS-BROWSER-NODE) - CLOS-BROWSER::METHOD) - "Create a method specialized on the class." - (ADD-METHOD CLOS-BROWSER::NODE NIL (SLOT-VALUE (CLOS::METHOD-GENERIC-FUNCTION CLOS-BROWSER::METHOD - ) - 'CLOS::NAME))) - -(DEFMETHOD CLOS-BROWSER::CACHE (CLOS-BROWSER::MENU (CLOS-BROWSER::NODE - CLOS-BROWSER::CLOS-BROWSER-NODE) - &OPTIONAL CLOS-BROWSER::INHERITED-OR-ALL) - (LET ((CLOS-BROWSER::MENU-TYPE (CASE CLOS-BROWSER::INHERITED-OR-ALL - ((NIL :LOCAL) 'CLOS-BROWSER::LOCAL-METHODS-MENU) - (:INHERITED 'CLOS-BROWSER::IHHERITED-METHODS-MENU) - (:ALL 'CLOS-BROWSER::ALL-METHODS-MENU)))) - (IF (NOT (ASSOC CLOS-BROWSER::MENU-TYPE (SLOT-VALUE CLOS-BROWSER::NODE - 'CLOS-BROWSER::MENU-CACHE))) - - (IL:* IL:|;;| "then initialize alist") - - (SETF (SLOT-VALUE CLOS-BROWSER::NODE 'CLOS-BROWSER::MENU-CACHE) - (ACONS CLOS-BROWSER::MENU-TYPE CLOS-BROWSER::MENU (SLOT-VALUE CLOS-BROWSER::NODE - 'CLOS-BROWSER::MENU-CACHE) - )) - - (IL:* IL:|;;| "otherwise replace what is already there") - - (RPLACD (ASSOC CLOS-BROWSER::MENU-TYPE (SLOT-VALUE CLOS-BROWSER::NODE - 'CLOS-BROWSER::MENU-CACHE)) - CLOS-BROWSER::MENU)))) - -(DEFMETHOD CLOS-BROWSER::UNCACHE ((CLOS-BROWSER::NODE CLOS-BROWSER::CLOS-BROWSER-NODE) - &OPTIONAL CLOS-BROWSER::INHERITED-OR-ALL) - (RPLACD (ASSOC (CASE CLOS-BROWSER::INHERITED-OR-ALL - ((NIL :LOCAL) 'CLOS-BROWSER::LOCAL-METHODS-MENU) - (:INHERITED 'CLOS-BROWSER::IHHERITED-METHODS-MENU) - (:ALL 'CLOS-BROWSER::ALL-METHODS-MENU)) - (SLOT-VALUE CLOS-BROWSER::NODE 'CLOS-BROWSER::MENU-CACHE)) - NIL)) - -(IL:RPAQ CLOS-BROWSER::*METHOD-PROMPT-STRING* (CONCATENATE 'STRING - "Left button to edit the method." " -" "Middle button provides a menu of operations.")) - -(DEFUN CLOS-BROWSER::EDIT (CLOS-BROWSER::METHOD) - (LET ((*PACKAGE* (SYMBOL-PACKAGE (CLOS::GENERIC-FUNCTION-NAME (CLOS::METHOD-GENERIC-FUNCTION - CLOS-BROWSER::METHOD))))) - (ED (CLOS::FULL-METHOD-NAME CLOS-BROWSER::METHOD) - ':DONTWAIT))) - -(DEFUN CLOS-BROWSER::MAKE-METHOD-MENU-ITEMS (CLOS::METHODS CLOS-BROWSER::CLASS &OPTIONAL - CLOS-BROWSER::INHERITED-OR-ALL) - "gather method-list into menu items list" - (LET ((CLOS-BROWSER::METHOD-MENU-ITEMS (CLOS-BROWSER::MAKE-TOP-LEVEL-METHOD-MENU-ITEMS - CLOS::METHODS CLOS-BROWSER::INHERITED-OR-ALL)) - (CLOS-BROWSER::EXTRA-MENU-ITEM-POSITIONS)) - (LET ((CLOS-BROWSER::PREVIOUS.ITEM NIL) - (CLOS-BROWSER::THIS.POSITION 0) - CLOS-BROWSER::GF-NAME) - (DOLIST (CLOS-BROWSER::THIS.ITEM CLOS-BROWSER::METHOD-MENU-ITEMS) - (SETQ CLOS-BROWSER::GF-NAME (CAR CLOS-BROWSER::THIS.ITEM)) - (INCF CLOS-BROWSER::THIS.POSITION) - (IF (NOT (AND CLOS-BROWSER::PREVIOUS.ITEM (IF (NOT (FIRST CLOS-BROWSER::THIS.ITEM)) - - (IL:* IL:|;;| - "then look for different gf objects with nil name") - - (EQ (CLOS::METHOD-GENERIC-FUNCTION - (SECOND - CLOS-BROWSER::PREVIOUS.ITEM - )) - (CLOS::METHOD-GENERIC-FUNCTION - (SECOND CLOS-BROWSER::THIS.ITEM)) - ) - - (IL:* IL:|;;| - "otherwise use slightly more efficient test for same gf") - - (EQ (FIRST CLOS-BROWSER::PREVIOUS.ITEM - ) - (FIRST CLOS-BROWSER::THIS.ITEM)))) - ) - - (IL:* IL:|;;| "then go on to the next") - - (SETQ CLOS-BROWSER::PREVIOUS.ITEM CLOS-BROWSER::THIS.ITEM) - - (IL:* IL:|;;| "otherwise we have multi-methods") - - (PROGN - (IL:* IL:|;;| "build a sub-menu of all the multi-methods") - - (IF (NOT (FOURTH CLOS-BROWSER::PREVIOUS.ITEM)) - - (IL:* IL:|;;| "then create the sub-menu") - - (NCONC CLOS-BROWSER::PREVIOUS.ITEM (LIST (LIST 'IL:SUBITEMS - ( - CLOS-BROWSER::MAKE-MULTI-METHOD-SUB-MENU - (SECOND - CLOS-BROWSER::PREVIOUS.ITEM - ) - CLOS-BROWSER::CLASS) - ( - CLOS-BROWSER::MAKE-MULTI-METHOD-SUB-MENU - (SECOND - CLOS-BROWSER::THIS.ITEM - ) - CLOS-BROWSER::CLASS)) - )) - - (IL:* IL:|;;| "otherwise add another item to the sub-menu") - - (NCONC (FOURTH CLOS-BROWSER::PREVIOUS.ITEM) - (LIST (CLOS-BROWSER::MAKE-MULTI-METHOD-SUB-MENU - (SECOND CLOS-BROWSER::THIS.ITEM) - CLOS-BROWSER::CLASS)))) - - (IL:* IL:|;;| - "collect the position of the extra multi-method menu item") - - (PUSH CLOS-BROWSER::THIS.POSITION CLOS-BROWSER::EXTRA-MENU-ITEM-POSITIONS - ))))) - - (IL:* IL:|;;| "remove extra multi-method menu items last first.") - - (DOLIST (CLOS-BROWSER::EACH.POSITION CLOS-BROWSER::EXTRA-MENU-ITEM-POSITIONS) - (SETQ CLOS-BROWSER::METHOD-MENU-ITEMS (DELETE-IF #'XCL:TRUE - CLOS-BROWSER::METHOD-MENU-ITEMS :START - (- CLOS-BROWSER::EACH.POSITION 1) - :END CLOS-BROWSER::EACH.POSITION))) - - (IL:* IL:|;;| "prepend the Add method item") - - (APPEND '(("Add method" NIL - "Bring up an editor containing a template for a new method on this class.")) - CLOS-BROWSER::METHOD-MENU-ITEMS))) - -(DEFUN CLOS-BROWSER::MAKE-TOP-LEVEL-METHOD-MENU-ITEMS (CLOS::METHODS &OPTIONAL - CLOS-BROWSER::INHERITED-OR-ALL) - "gather local-methods into menu items list" - (DECLARE (SPECIAL CLOS-BROWSER::*METHOD-PROMPT-STRING*)) - (SORT (IL:FOR CLOS-BROWSER::EACH.METHOD IL:IN CLOS::METHODS IL:BIND - CLOS-BROWSER::METHOD-NAME - IL:UNLESS (AND (NOT (EQL CLOS-BROWSER::INHERITED-OR-ALL :ALL)) - (CLOS::*TYPEP CLOS-BROWSER::EACH.METHOD - 'CLOS::STANDARD-ACCESSOR-METHOD)) - - (IL:* IL:|;;| "weed out auto-generated slot access methods ") - IL:|eachtime| (SETQ CLOS-BROWSER::METHOD-NAME (CAR (CLOS::FULL-METHOD-NAME - CLOS-BROWSER::EACH.METHOD NIL))) - IL:|collect| (LIST CLOS-BROWSER::METHOD-NAME CLOS-BROWSER::EACH.METHOD - CLOS-BROWSER::*METHOD-PROMPT-STRING*)) - #'IL:ALPHORDER :KEY #'CAR)) - -(DEFUN CLOS-BROWSER::MAKE-MULTI-METHOD-SUB-MENU (CLOS-BROWSER::METHOD CLOS-BROWSER::CLASS) - "make a menu item to distinguish methods on the same gf" - (LET (CLOS-BROWSER::SUB-ITEM-NAME) - (DECLARE (SPECIAL CLOS-BROWSER::*METHOD-PROMPT-STRING*)) - - (IL:* IL:|;;| "first put out the qualifiers if any") - - (DOLIST (CLOS-BROWSER::QUALIFIER (SLOT-VALUE CLOS-BROWSER::METHOD 'CLOS::SPECIALIZERS)) - (SETQ CLOS-BROWSER::SUB-ITEM-NAME (CONCATENATE 'STRING CLOS-BROWSER::SUB-ITEM-NAME - (WHEN CLOS-BROWSER::SUB-ITEM-NAME " ") - (PRIN1-TO-STRING CLOS-BROWSER::QUALIFIER)))) - - (IL:* IL:|;;| "then do the specializers ") - - (IL:* IL:|;;| "(DOLIST (TYPE-SPECIFIER (SLOT-VALUE METHOD 'CLOS::TYPE-SPECIFIERS)) (SETQ SUB-ITEM-NAME (CONCATENATE 'STRING SUB-ITEM-NAME (WHEN SUB-ITEM-NAME \" \") (IF (EQ CLASS TYPE-SPECIFIER) ;; then lets just do a plus sign \"+\" ;; else print the name (PRIN1-TO-STRING ;; test until class-name works properly (IF (TYPEP TYPE-SPECIFIER 'STANDARD-CLASS) (CLASS-NAME TYPE-SPECIFIER) TYPE-SPECIFIER))))))") - - (LIST CLOS-BROWSER::SUB-ITEM-NAME CLOS-BROWSER::METHOD CLOS-BROWSER::*METHOD-PROMPT-STRING*))) - - - -(IL:* IL:|;;| "") - - - - -(IL:* IL:|;;| "OPERATORS (via CLOS-BROWSER-NODE) ON CLOS::STANDARD-CLASS") - - -(DEFMETHOD CLOS-BROWSER:ADD-BROWSER-METHOD ((CLOS-BROWSER::NODE CLOS-BROWSER::CLOS-BROWSER-NODE) - &OPTIONAL CLOS-BROWSER::FORM - CLOS-BROWSER::METHOD-NAME) - "bring up sedit on a template to add a method to this class" - (DECLARE (SPECIAL SEDIT::BASIC-GAP SEDIT::BODY-GAP SEDIT::ARGS-GAP)) - (LET* ((CLASS-NAME (CLASS-NAME (SLOT-VALUE CLOS-BROWSER::NODE 'CLOS-BROWSER::CLASS))) - CLOS-BROWSER::CONTEXT - (CLOS-BROWSER::NAME (FORMAT NIL "New method on ~A" CLASS-NAME)) - (*PACKAGE* (SYMBOL-PACKAGE CLASS-NAME))) - (UNLESS CLOS-BROWSER::FORM - (SETQ CLOS-BROWSER::FORM (LIST 'DEFMETHOD (OR CLOS-BROWSER::METHOD-NAME SEDIT::BASIC-GAP - ) - (LIST (LIST (INTERN "SELF") - CLASS-NAME) - SEDIT::ARGS-GAP) - SEDIT::BODY-GAP))) - (SEDIT:SEDIT CLOS-BROWSER::FORM (LIST :NAME CLOS-BROWSER::NAME :COMPLETION-FN - #'CLOS-BROWSER::COMPLETE-ADD-METHOD) - :DONTWAIT))) - -(DEFMETHOD CLOS-BROWSER::BROWSE-SUBS ((CLOS-BROWSER::NODE CLOS-BROWSER::CLOS-BROWSER-NODE)) - (CLOS-BROWSER:BROWSE-CLASS (SLOT-VALUE (SLOT-VALUE CLOS-BROWSER::NODE 'CLOS-BROWSER::CLASS) - 'CLOS::NAME))) - -(DEFMETHOD CLOS-BROWSER::EDIT-CLASS ((CLOS-BROWSER::NODE CLOS-BROWSER::CLOS-BROWSER-NODE)) - (LET* ((CLOS-BROWSER::CLASS (CLASS-NAME (SLOT-VALUE CLOS-BROWSER::NODE 'CLOS-BROWSER::CLASS))) - (*PACKAGE* (SYMBOL-PACKAGE CLOS-BROWSER::CLASS))) - (ED CLOS-BROWSER::CLASS '(CLOS-BROWSER::CLASSES :DONTWAIT)))) - -(DEFMETHOD CLOS-BROWSER::INSPECT-CLASS ((CLOS::OBJECT CLOS-BROWSER::CLOS-BROWSER-NODE)) - (INSPECT (SLOT-VALUE CLOS::OBJECT 'CLOS-BROWSER::CLASS))) - -(DEFMETHOD CLOS-BROWSER::MENU-METHODS ((CLOS-BROWSER::NODE CLOS-BROWSER::CLOS-BROWSER-NODE) - &OPTIONAL CLOS-BROWSER::INHERITED-OR-ALL - CLOS-BROWSER::ITEMS CLOS-BROWSER::FIX-FLAG - CLOS-BROWSER::RECOMPUTE-FLAG) - "pops up a menu of the methods for the class representing the node." - - (IL:* IL:|;;| "If INHERITED-OR-ALL is NIL or :local only local methods are menued.") - - (IL:* IL:|;;| "If INHERITED-OR-ALL is :inherited only inherited methods are menued.") - - (IL:* IL:|;;| "If INHERITED-OR-ALL is :all all methods are menued.") - - (IL:* IL:|;;| "If items are present, the list of methods is not re-generated.") - - (IL:* IL:|;;| - "If the fix-flag is t, the user is asked to position the menu and no \"Fix menu\" item appears.") - - (IL:* IL:|;;| "The whenselectedfn can call this again to generate a fixed menu.") - - (LET* ((CLOS-BROWSER::CLASS (SLOT-VALUE CLOS-BROWSER::NODE 'CLOS-BROWSER::CLASS)) - (*PACKAGE* (SYMBOL-PACKAGE (SLOT-VALUE CLOS-BROWSER::CLASS 'CLOS::NAME))) - (CLOS-BROWSER::MENU (UNLESS (OR CLOS-BROWSER::RECOMPUTE-FLAG (EQ (SLOT-VALUE - CLOS-BROWSER:CLOS-ICON - - ' - CLOS-BROWSER::MENU-CACHE-SWITCH - ) - :NONE)) - (REST (IL:* IL:\; "use the cached menu") - (ASSOC (CASE CLOS-BROWSER::INHERITED-OR-ALL - ((NIL :LOCAL) 'CLOS-BROWSER::LOCAL-METHODS-MENU) - (:INHERITED 'CLOS-BROWSER::IHHERITED-METHODS-MENU) - (:ALL 'CLOS-BROWSER::ALL-METHODS-MENU)) - (SLOT-VALUE CLOS-BROWSER::NODE - 'CLOS-BROWSER::MENU-CACHE)))))) - - (IL:* IL:|;;| "unless it was cached, make the menu") - - (UNLESS (AND CLOS-BROWSER::MENU (IL:TYPE? IL:MENU CLOS-BROWSER::MENU)) - - (IL:* IL:|;;| "unless the menu items were passed in, compute them") - - (UNLESS CLOS-BROWSER::ITEMS - (SETQ CLOS-BROWSER::ITEMS (CLOS-BROWSER::MAKE-METHOD-MENU-ITEMS - (CASE CLOS-BROWSER::INHERITED-OR-ALL - ((NIL :LOCAL) (CAR (SLOT-VALUE CLOS-BROWSER::CLASS - 'CLOS::DIRECT-METHODS))) - (:INHERITED (CLOS::COMPUTE-INHERITED-METHODS - CLOS-BROWSER::CLASS)) - (:ALL (CLOS::COMPUTE-INHERITED-METHODS - CLOS-BROWSER::CLASS :ALL))) - CLOS-BROWSER::CLASS))) - - (IL:* IL:|;;| "create the menu using whenselectedfn") - - (SETQ CLOS-BROWSER::MENU (IL:CREATE IL:MENU - IL:TITLE IL:_ (IF CLOS-BROWSER::FIX-FLAG - (CLASS-NAME CLOS-BROWSER::CLASS) - "methods") - IL:MENUFONT IL:_ (WHEN (> (LENGTH CLOS-BROWSER::ITEMS) - (SLOT-VALUE CLOS-BROWSER::NODE - - ' - CLOS-BROWSER::LARGE-MENU-SIZE - )) - (SLOT-VALUE CLOS-BROWSER::NODE - - ' - CLOS-BROWSER::LARGE-MENU-FONT - )) - IL:MENUUSERDATA IL:_ '(:ESCAPE T) - (IL:* IL:\; - "cause symbols to print in mouse process's read-table & package") - IL:WHENSELECTEDFN IL:_ ( - CLOS-BROWSER::MAKE-WHENSELECTEDFN - CLOS-BROWSER::NODE - CLOS-BROWSER::INHERITED-OR-ALL - CLOS-BROWSER::ITEMS) - IL:ITEMS IL:_ (APPEND CLOS-BROWSER::ITEMS - (UNLESS CLOS-BROWSER::FIX-FLAG - '(("Fix menu" NIL - "Place this menu on the screen. WARNING: cached menues are not kept up-to-date" - )))))) - - (IL:* IL:|;;| "cache the menu on the node") - - (CLOS-BROWSER::CACHE CLOS-BROWSER::MENU CLOS-BROWSER::NODE - CLOS-BROWSER::INHERITED-OR-ALL)) - (IF CLOS-BROWSER::FIX-FLAG - - (IL:* IL:|;;| "ask user to position menu") - - (IL:MOVEW (IL:ADDMENU CLOS-BROWSER::MENU)) - - (IL:* IL:|;;| "otherwise just pop it up") - - (IL:MENU CLOS-BROWSER::MENU)))) - -(DEFMETHOD CLOS-BROWSER::MAKE-WHENSELECTEDFN ((CLOS-BROWSER::NODE CLOS-BROWSER::CLOS-BROWSER-NODE - ) - &OPTIONAL CLOS-BROWSER::INHERITED-OR-ALL - CLOS-BROWSER::ITEMS) - `(LAMBDA - (CLOS-BROWSER::MENU-ITEM IGNORE CLOS-BROWSER::MOUSE-KEY) - (LET - ((CLOS-BROWSER::METHOD-NAME (FIRST CLOS-BROWSER::MENU-ITEM)) - (CLOS-BROWSER::METHOD (SECOND CLOS-BROWSER::MENU-ITEM))) - (IF (NULL CLOS-BROWSER::METHOD) - - (IL:* IL:|;;| "do the non-method items") - - (COND - ((STRING= CLOS-BROWSER::METHOD-NAME "Add method") - (CLOS-BROWSER:ADD-BROWSER-METHOD ',CLOS-BROWSER::NODE NIL)) - ((STRING= CLOS-BROWSER::METHOD-NAME "Fix menu") - - (IL:* IL:|;;| "call MENU-LOCAL-METHODS again to create fixed menu ") - - (CLOS-BROWSER::MENU-METHODS ',CLOS-BROWSER::NODE ',CLOS-BROWSER::INHERITED-OR-ALL - ',CLOS-BROWSER::ITEMS T)) - (T CLOS-BROWSER::OPERATION)) - - (IL:* IL:|;;| "got a method, lets get an operation") - - (LET ((CLOS-BROWSER::OPERATION - (CASE CLOS-BROWSER::MOUSE-KEY - (IL:LEFT 'CLOS-BROWSER::EDIT) - (IL:MIDDLE (IL:MENU (IL:CREATE - IL:MENU - IL:TITLE IL:_ CLOS-BROWSER::METHOD-NAME - IL:ITEMS IL:_ - (SLOT-VALUE ',CLOS-BROWSER::NODE - ',(CASE CLOS-BROWSER::INHERITED-OR-ALL - ((NIL :LOCAL) - ' - CLOS-BROWSER::LOCAL-METHOD-OPERATIONS) - (:INHERITED - ' - CLOS-BROWSER::INHERITED-METHOD-OPERATIONS) - (:ALL 'CLOS-BROWSER::ALL-METHOD-OPERATIONS)))) - ))))) - - (IL:* IL:|;;| "got an operation, lets use it on the method") - - (CASE CLOS-BROWSER::OPERATION - ((NIL) NIL) - ((CLOS-BROWSER::COPY CLOS-BROWSER::MOVE) (IL:* IL:\; - "need to supply destination") - (FUNCALL CLOS-BROWSER::OPERATION CLOS-BROWSER::METHOD - - (IL:* IL:|;;| "to class") - - (PROGN (UNLESS (SLOT-VALUE CLOS-BROWSER:CLOS-ICON - 'CLOS-BROWSER::DESTINATION-BROWSER) - (ERROR "Please box a destination class, then say OK.")) - (SLOT-VALUE (SLOT-VALUE (SLOT-VALUE CLOS-BROWSER:CLOS-ICON - - 'CLOS-BROWSER::DESTINATION-BROWSER - ) - `WEB:BOXED-NODE) - `CLOS-BROWSER::CLASS)) - - (IL:* IL:|;;| "from class") - - (SLOT-VALUE ',CLOS-BROWSER::NODE 'CLOS-BROWSER::CLASS))) - ((DELETE) (IL:* IL:\; - "need to supply extra confirm") - (WHEN (IL:MOUSECONFIRM (FORMAT NIL - "Are you sure you wish to delete the ~A method?" - (CLOS::FULL-METHOD-NAME CLOS-BROWSER::METHOD))) - (FUNCALL CLOS-BROWSER::OPERATION CLOS-BROWSER::METHOD))) - ((CLOS-BROWSER::OVERRIDE) (IL:* IL:\; "use add-method ") - (FUNCALL CLOS-BROWSER::OPERATION ',CLOS-BROWSER::NODE CLOS-BROWSER::METHOD)) - (OTHERWISE (FUNCALL CLOS-BROWSER::OPERATION CLOS-BROWSER::METHOD)))))))) - -(DEFMETHOD CLOS-BROWSER::DESCRIBE-CLASS ((CLOS-BROWSER::SELF CLOS-BROWSER::CLOS-BROWSER-NODE)) - (CLOS::DESCRIBE-OBJECT (SLOT-VALUE CLOS-BROWSER::SELF 'CLOS-BROWSER::CLASS) - *TRACE-OUTPUT*)) - -(DEFMETHOD CLOS-BROWSER::DOCUMENTATION-CLASS ((CLOS-BROWSER::SELF CLOS-BROWSER::CLOS-BROWSER-NODE - )) - (DOCUMENTATION (SLOT-VALUE CLOS-BROWSER::SELF 'CLOS-BROWSER::CLASS))) - -(DEFMETHOD CLOS-BROWSER::PRINT-CLASS ((CLOS-BROWSER::SELF CLOS-BROWSER::CLOS-BROWSER-NODE)) - (PPRINT (IL:GETDEF (SLOT-VALUE (SLOT-VALUE CLOS-BROWSER::SELF `CLOS-BROWSER::CLASS) - 'CLOS::NAME) - 'CLOS-BROWSER::CLASSES))) - -(DEFMETHOD CLOS-BROWSER::SPECIALIZE-CLASS ((CLOS-BROWSER::NODE CLOS-BROWSER::CLOS-BROWSER-NODE) - &OPTIONAL CLOS-BROWSER::FORM - CLOS-BROWSER::NEW-CLASS-NAME) - (CLOS-BROWSER::SPECIALIZE (SLOT-VALUE CLOS-BROWSER::NODE 'CLOS-BROWSER::CLASS) - CLOS-BROWSER::FORM CLOS-BROWSER::NEW-CLASS-NAME)) - -(DEFUN CLOS-BROWSER::COMPLETE-ADD-METHOD (CLOS-BROWSER::CONTEXT STRUCTURE &OPTIONAL ( - CLOS-BROWSER::CHANGED? - T)) - (DECLARE (IGNORE CLOS-BROWSER::CONTEXT)) - (CASE CLOS-BROWSER::CHANGED? - ((:ABORT NIL) NIL) - (OTHERWISE (EVAL (COPY-TREE (IL:* IL:\; - "to ensure the original list does not get destructively clobbered") - STRUCTURE))))) - -(DEFUN CLOS-BROWSER::COMPLETE-SPECIALIZE (IGNORE STRUCTURE CLOS-BROWSER::CHANGED?) - (DECLARE (IGNORE CLOS-BROWSER::CONTEXT)) - (CASE CLOS-BROWSER::CHANGED? - ((:ABORT NIL) NIL) - (T (LET ((CLOS-BROWSER::ORIGINALCURSOR (IL:CURSOR))) - (UNWIND-PROTECT - (PROGN (IL:SETCURSOR IL:WAITINGCURSOR) - (LET ((CLOS-BROWSER::SUB-CLASS (EVAL (COPY-TREE - (IL:* IL:\; - "so original list does not get clobbered if this class's name changes") - STRUCTURE))) - CLOS-BROWSER::SUPER-CLASS) - - (IL:* IL:|;;| "check for bug") - - (WHEN (SYMBOLP CLOS-BROWSER::SUB-CLASS) - (SETQ CLOS-BROWSER::SUB-CLASS (FIND-CLASS CLOS-BROWSER::SUB-CLASS) - )) - (DOLIST (CLOS-BROWSER::BROWSER (SLOT-VALUE CLOS-BROWSER:CLOS-ICON - 'CLOS-BROWSER::CLASS-BROWSERS)) - (DOLIST (CLOS-BROWSER::SUPER-CLASS (SLOT-VALUE - CLOS-BROWSER::SUB-CLASS - - ' - CLOS::DIRECT-SUPERCLASSES - )) - (WHEN (CLOS-BROWSER::CONTAINS-P CLOS-BROWSER::SUPER-CLASS - CLOS-BROWSER::BROWSER) - (CLOS-BROWSER::ADD-ROOT CLOS-BROWSER::BROWSER - CLOS-BROWSER::SUB-CLASS) - (RETURN)))))) - (IL:SETCURSOR CLOS-BROWSER::ORIGINALCURSOR)))))) - -(DEFUN CLOS-BROWSER::LYRIC-COMPLETE-SPECIALIZE (IGNORE STRUCTURE) - (LET ((CLOS-BROWSER::ORIGINALCURSOR (IL:CURSOR))) - (UNWIND-PROTECT - (PROGN (IL:SETCURSOR IL:WAITINGCURSOR) - (LET ((CLOS-BROWSER::SUB-CLASS (EVAL (COPY-TREE - (IL:* IL:\; - "so original list does not get clobbered if this class's name changes") - STRUCTURE))) - CLOS-BROWSER::SUPER-CLASS) - - (IL:* IL:|;;| "check for bug") - - (WHEN (SYMBOLP CLOS-BROWSER::SUB-CLASS) - (SETQ CLOS-BROWSER::SUB-CLASS (CLOS::SYMBOL-CLASS CLOS-BROWSER::SUB-CLASS - ))) - (DOLIST (CLOS-BROWSER::BROWSER (SLOT-VALUE CLOS-BROWSER:CLOS-ICON - 'CLOS-BROWSER::CLASS-BROWSERS)) - (DOLIST (CLOS-BROWSER::SUPER-CLASS (SLOT-VALUE CLOS-BROWSER::SUB-CLASS - 'CLOS::LOCAL-SUPERS)) - (WHEN (CLOS-BROWSER::CONTAINS-P CLOS-BROWSER::SUPER-CLASS - CLOS-BROWSER::BROWSER) - (CLOS-BROWSER::ADD-ROOT CLOS-BROWSER::BROWSER - CLOS-BROWSER::SUB-CLASS) - (RETURN)))))) - (IL:SETCURSOR CLOS-BROWSER::ORIGINALCURSOR)))) - -(DEFUN CLOS-BROWSER::THIS-CLASS-NODE-P (CLOS-BROWSER::CLASS CLOS-BROWSER::NODE) - (EQ CLOS-BROWSER::CLASS (SLOT-VALUE CLOS-BROWSER::NODE 'CLOS-BROWSER::CLASS))) - -(DEFUN CLOS::CLASS-DIRECT-METHODS (CLOS::CLASS) - (SLOT-VALUE CLOS::CLASS 'CLOS::DIRECT-METHODS)) - - - -(IL:* IL:|;;| "") - - - - -(IL:* IL:|;;| "OPERATORS ON CLOS::STANDARD-CLASS (directly)") - - -(DEFMETHOD CLOS::COMPUTE-INHERITED-METHODS ((CLOS::SELF STANDARD-CLASS) - &OPTIONAL CLOS::ALL-FLAG) - "Compute and return all inherited methods of a class. If all-flag eq :all then methods on t and the passed class are included." - - (IL:* IL:|;;| "The following does not use generic function dispatch-orders, discriminating-functions, or classical-method-tables.") - - (IL:* IL:|;;| "For each method in the direct-methods of each inherited class in the class-precedence-list for the class of interest, in class precedence order check to see if we have already analyzed its generic function.") - - (IL:* IL:|;;| "If it is a new gf then if there is exactly one type specifier then add the direct method to the list of inherited methods.") - - (IL:* IL:|;;| "If there is more than one type specifier then for every method in the gf for each specializer if the specializing class is equal to or later than the current class in the class precedence list, ignoring t, pushnew the method on the list of inherited methods.ÿÿ") - - (LET - ((CLOS::FILTERED-CLASSES NIL) - (CLOS::MY-GFS NIL) - (CLOS::CLASS-PRECEDENCE-LIST (SLOT-VALUE CLOS::SELF 'CLOS::CLASS-PRECEDENCE-LIST)) - (CLOS::INHERITED-METHODS NIL) - (CLOS::DIRECT-METHODS (CAR (SLOT-VALUE CLOS::SELF 'CLOS::DIRECT-METHODS))) - (CLOS::T-CLASS (FIND-CLASS 'T))) - (UNLESS (EQ CLOS::ALL-FLAG :ALL) (IL:* IL:\; - "ignore t and the bottom class ") - (PUSH CLOS::T-CLASS CLOS::FILTERED-CLASSES) - (PUSH CLOS::SELF CLOS::FILTERED-CLASSES) - (SETQ CLOS::MY-GFS (MAPCAR #'CLOS::METHOD-GENERIC-FUNCTION CLOS::DIRECT-METHODS))) - (DOLIST (CLOS::CLASS CLOS::CLASS-PRECEDENCE-LIST) - (UNLESS (MEMBER CLOS::CLASS CLOS::FILTERED-CLASSES) - (DOLIST (CLOS::DIRECT-METHOD (CAR (CLOS::CLASS-DIRECT-METHODS CLOS::CLASS))) - (LET ((CLOS::GF (CLOS::METHOD-GENERIC-FUNCTION CLOS::DIRECT-METHOD))) - (UNLESS (MEMBER CLOS::GF CLOS::MY-GFS :TEST #'EQ) - (IF (= 1 (LENGTH (SLOT-VALUE CLOS::DIRECT-METHOD 'CLOS::SPECIALIZERS)) - (IL:* IL:\; "Note: this check relies on guaranteed congruent lambda lists. There should be some way to query the gf directly.") - ) - - (IL:* IL:|;;| - "then only one specializer so this method must be inherited. ") - - (PUSH CLOS::DIRECT-METHOD CLOS::INHERITED-METHODS) - - (IL:* IL:|;;| "otherwise more than one so must look at specializers ") - - (DOLIST (CLOS::GF-METHOD (SLOT-VALUE CLOS::GF 'CLOS::METHODS)) - (DOLIST (CLOS::SPECIFIER (SLOT-VALUE CLOS::GF-METHOD - 'CLOS::SPECIALIZERS)) - (UNLESS (OR (EQ CLOS::T-CLASS CLOS::SPECIFIER) - (NOT (MEMBER CLOS::SPECIFIER - CLOS::CLASS-PRECEDENCE-LIST :TEST - #'EQ))) - (PUSHNEW CLOS::GF-METHOD CLOS::INHERITED-METHODS) - (RETURN)))))) - (PUSH CLOS::GF CLOS::MY-GFS))))) - CLOS::INHERITED-METHODS)) - -(DEFMETHOD CLOS-BROWSER::SPECIALIZE ((CLOS-BROWSER::CLASS STANDARD-CLASS) - &OPTIONAL CLOS-BROWSER::FORM CLOS-BROWSER::NEW-CLASS-NAME) - (DECLARE (SPECIAL SEDIT::BASIC-GAP)) - (LET* ((CLASS-NAME (CLASS-NAME CLOS-BROWSER::CLASS)) - CLOS-BROWSER::CONTEXT - (CLOS-BROWSER::NAME (FORMAT NIL "New sub-class of ~A" CLASS-NAME)) - (*PACKAGE* (SYMBOL-PACKAGE CLASS-NAME))) - (UNLESS CLOS-BROWSER::FORM - (SETQ CLOS-BROWSER::FORM (LIST 'DEFCLASS (OR CLOS-BROWSER::NEW-CLASS-NAME - SEDIT::BASIC-GAP) - (LIST CLASS-NAME) - (LIST SEDIT::BODY-GAP)))) - - (IL:* IL:|;;| "call sedit") - - (SEDIT:SEDIT CLOS-BROWSER::FORM (LIST :NAME CLOS-BROWSER::NAME :COMPLETION-FN - #'CLOS-BROWSER::COMPLETE-SPECIALIZE) - :DONTWAIT))) - -(DEFMETHOD CLOS-BROWSER::SUBCLASSES-OF ((CLOS-BROWSER::CLASS STANDARD-CLASS)) - (APPEND (LIST CLOS-BROWSER::CLASS) - (IL:FOR CLOS-BROWSER::SUBCLASS IL:IN (SLOT-VALUE CLOS-BROWSER::CLASS - 'CLOS::DIRECT-SUBCLASSES) - IL:JOIN (IF (SLOT-VALUE CLOS-BROWSER::SUBCLASS 'CLOS::DIRECT-SUBCLASSES) - (CLOS-BROWSER::SUBCLASSES-OF CLOS-BROWSER::SUBCLASS) - (LIST CLOS-BROWSER::SUBCLASS))))) - - - -(IL:* IL:|;;| "") - - - - -(IL:* IL:|;;| "OPERATORS ON CLOS::STANDARD-METHOD") - - -(DEFMETHOD CLOS-BROWSER::DELETE-METHOD ((CLOS-BROWSER::METHOD STANDARD-METHOD)) - (REMOVE-METHOD (SLOT-VALUE CLOS-BROWSER::METHOD 'CLOS::GENERIC-FUNCTION) - CLOS-BROWSER::METHOD)) - -(DEFMETHOD CLOS-BROWSER::COPY ((CLOS-BROWSER::METHOD STANDARD-METHOD) - (CLOS-BROWSER::TO-CLASS STANDARD-CLASS) - &OPTIONAL CLOS-BROWSER::FROM-CLASS) - (WHEN (EQ CLOS-BROWSER::TO-CLASS CLOS-BROWSER::FROM-CLASS) - (RETURN-FROM CLOS-BROWSER::COPY)) - - (IL:* IL:|;;| "if we have the source code, find all the references to the from class, change them to the to-class, and evaluate the new form. If from-class is not provided, if method is specialized on just one class, use it, otherwise ask the user.") - - (IL:* IL:|;;| "If we dont have source code, we could ask if you want to just move the method object, but instead we print a complaint and punt.") - - (LET ((CLOS-BROWSER::METHOD-DEFINITION (COPY-TREE (XCL:IGNORE-ERRORS (IL:GETDEF ( - CLOS::FULL-METHOD-NAME - - CLOS-BROWSER::METHOD - ) - - 'CLOS-BROWSER::METHODS - )))) - (CLOS-BROWSER::NON-T-CLASSES (MAPCAR #'(LAMBDA (CLOS-BROWSER::CLASS) - (UNLESS (EQ CLOS-BROWSER::CLASS 'T) - CLOS-BROWSER::CLASS)) - (CLOS::METHOD-SPECIALIZERS CLOS-BROWSER::METHOD)))) - (UNLESS CLOS-BROWSER::METHOD-DEFINITION - (FORMAT T "The definition for ~A is not loaded" (CLOS::FULL-METHOD-NAME - CLOS-BROWSER::METHOD NIL)) - (RETURN-FROM CLOS-BROWSER::COPY NIL)) - (IF CLOS-BROWSER::FROM-CLASS - - (IL:* IL:|;;| "method should be specialized on from-class.") - - (UNLESS (MEMBER CLOS-BROWSER::FROM-CLASS CLOS-BROWSER::NON-T-CLASSES) - (ERROR "The ~A method is not specialized on the ~A class" (CLOS::FULL-METHOD-NAME - CLOS-BROWSER::METHOD NIL) - (CLASS-NAME CLOS-BROWSER::FROM-CLASS))) - - (IL:* IL:|;;| "otherwise see if we can deduce FROM-CLASS ") - - (CASE (LENGTH CLOS-BROWSER::NON-T-CLASSES) - (0 (FORMAT T "Unspecialized methods cannot be copied. ~A" (CLOS::FULL-METHOD-NAME - CLOS-BROWSER::METHOD NIL))) - (1 (SETQ CLOS-BROWSER::FROM-CLASS (CAR CLOS-BROWSER::NON-T-CLASSES))) - (OTHERWISE (SETQ CLOS-BROWSER::FROM-CLASS (CLOS::SYMBOL-CLASS - (IL:PROMPTFORWORD (FORMAT NIL - "Which class in ~A do you wish to move from?" - ( - CLOS::FULL-METHOD-NAME - - CLOS-BROWSER::METHOD - NIL)))))))) - - (IL:* IL:|;;| "should contain from-class. If it is not the same, abort.") - - (CLOS-BROWSER::REPLACE-SPECIALIZERS CLOS-BROWSER::METHOD-DEFINITION (CLASS-NAME - CLOS-BROWSER::FROM-CLASS - ) - (CLASS-NAME CLOS-BROWSER::TO-CLASS)) - (PRINT (EVAL CLOS-BROWSER::METHOD-DEFINITION)))) - -(DEFMETHOD CLOS-BROWSER::MOVE ((CLOS-BROWSER::METHOD STANDARD-METHOD) - (CLOS-BROWSER::TO-CLASS STANDARD-CLASS) - &OPTIONAL CLOS-BROWSER::FROM-CLASS) - (WHEN (EQ CLOS-BROWSER::TO-CLASS CLOS-BROWSER::FROM-CLASS) - (RETURN-FROM CLOS-BROWSER::MOVE)) - (IF (CLOS-BROWSER::COPY CLOS-BROWSER::METHOD CLOS-BROWSER::TO-CLASS CLOS-BROWSER::FROM-CLASS) - (CLOS-BROWSER::DELETE-METHOD CLOS-BROWSER::METHOD) - (FORMAT T "copy of ~A to ~A failed" (XCL:IGNORE-ERRORS (CLOS::FULL-METHOD-NAME - CLOS-BROWSER::METHOD)) - (XCL:IGNORE-ERRORS (CLASS-NAME CLOS-BROWSER::TO-CLASS))))) - -(DEFMETHOD CLOS-BROWSER::PRINT-DEFINITION ((CLOS-BROWSER::SELF STANDARD-METHOD)) - (PPRINT (IL:GETDEF (CLOS::FULL-METHOD-NAME CLOS-BROWSER::SELF) - 'CLOS-BROWSER::METHODS))) - -(DEFMETHOD CLOS-BROWSER::DESCRIBE-METHOD ((CLOS-BROWSER::METHOD CLOS::METHOD)) - (CLOS::DESCRIBE-OBJECT CLOS-BROWSER::METHOD *TRACE-OUTPUT*)) - -(DEFMETHOD CLOS-BROWSER::RENAME ((CLOS-BROWSER::METHOD STANDARD-METHOD) - &OPTIONAL CLOS-BROWSER::NEW-NAME) - (UNLESS CLOS-BROWSER::NEW-NAME - (SETQ CLOS-BROWSER::NEW-NAME (READ (MAKE-STRING-INPUT-STREAM (IL:PROMPTFORWORD - (FORMAT NIL "~%New name for ~A" - (CLOS::FULL-METHOD-NAME - CLOS-BROWSER::METHOD)))) - ))) - (LET ((CLOS-BROWSER::METHOD-DEFINITION (XCL:IGNORE-ERRORS (IL:GETDEF CLOS-BROWSER::METHOD)))) - (UNLESS CLOS-BROWSER::METHOD-DEFINITION - (FORMAT T "The definition for ~A is not loaded" (CLOS::FULL-METHOD-NAME - CLOS-BROWSER::METHOD NIL)) - (RETURN-FROM CLOS-BROWSER::RENAME NIL)) - (IF (AND (SETF (SECOND CLOS-BROWSER::METHOD-DEFINITION) - CLOS-BROWSER::NEW-NAME) - (PRINT (EVAL CLOS-BROWSER::METHOD-DEFINITION))) - (DELETE CLOS-BROWSER::METHOD) - (FORMAT T "~%Rename of ~A to ~A failed" (XCL:IGNORE-ERRORS (CLOS::FULL-METHOD-NAME - CLOS-BROWSER::METHOD)) - CLOS-BROWSER::NEW-NAME)))) - -(DEFMETHOD CLOS-BROWSER::UPDATE-CACHED-MENUES ((CLOS-BROWSER::METHOD STANDARD-METHOD) - &OPTIONAL - (CLOS-BROWSER::CACHE-SWITCH (SLOT-VALUE - - CLOS-BROWSER:CLOS-ICON - - ' - CLOS-BROWSER::MENU-CACHE-SWITCH - ))) - "set cached menues for this method's class to nil" - (LET - ((CLOS-BROWSER::ORIGINALCURSOR (IL:CURSOR))) - (UNWIND-PROTECT - (PROGN (IL:SETCURSOR IL:WAITINGCURSOR) - (DOLIST (CLOS-BROWSER::BROWSER (SLOT-VALUE CLOS-BROWSER:CLOS-ICON - 'CLOS-BROWSER::CLASS-BROWSERS)) - (DOLIST (CLOS-BROWSER::CLASS (SLOT-VALUE CLOS-BROWSER::METHOD 'CLOS::SPECIALIZERS) - ) - - (IL:* IL:|;;| - "fix bug in the inconsistent way CLOS objects store T class specializers and do method lookup.") - - (WHEN (EQ CLOS-BROWSER::CLASS T) - (SETQ CLOS-BROWSER::CLASS (CLOS::SYMBOL-CLASS T))) - (LET ((CLOS-BROWSER::NODE (CLOS-BROWSER::BROWSER-CONTAINS-P - CLOS-BROWSER::CLASS CLOS-BROWSER::BROWSER))) - (WHEN CLOS-BROWSER::NODE - (CASE CLOS-BROWSER::CACHE-SWITCH - (:LAZY - (CLOS-BROWSER::UNCACHE CLOS-BROWSER::NODE) - (CLOS-BROWSER::UNCACHE CLOS-BROWSER::NODE :ALL) - (DOLIST (CLOS-BROWSER::SUB-CLASS (CLOS-BROWSER::SUBCLASSES-OF - (SLOT-VALUE - CLOS-BROWSER::NODE - 'CLOS-BROWSER::CLASS) - )) - (WHEN (SETQ CLOS-BROWSER::NODE (CLOS-BROWSER::CONTAINS-P - CLOS-BROWSER::SUB-CLASS - CLOS-BROWSER::BROWSER)) - (CLOS-BROWSER::UNCACHE CLOS-BROWSER::NODE :INHERITED) - (CLOS-BROWSER::UNCACHE CLOS-BROWSER::NODE :ALL)))) - (:EAGER (PRINT ":eager method menu cacheing not yet implemented." - )) - (OTHERWISE - NIL (IL:* IL:\; "do nothing") - ))))))) - (IL:SETCURSOR CLOS-BROWSER::ORIGINALCURSOR)))) - -(DEFMETHOD CLOS-BROWSER::WHO-OWNS ((CLOS-BROWSER::METHOD STANDARD-METHOD)) - (PRINT (CLOS::FULL-METHOD-NAME CLOS-BROWSER::METHOD))) - -(DEFMETHOD ADD-METHOD :AFTER - ((CLOS-BROWSER::GENERIC-FUNCTION STANDARD-GENERIC-FUNCTION) - (CLOS-BROWSER::METHOD STANDARD-METHOD)) - "Update cached menues." - (LET (CLOS-BROWSER::CACHE-SWITCH) - (WHEN (AND CLOS-BROWSER::METHOD (SLOT-VALUE CLOS-BROWSER:CLOS-ICON - 'CLOS-BROWSER::CLASS-BROWSERS) - (IL:* IL:\; "there are some browsers") - (NOT (EQ (SETQ CLOS-BROWSER::CACHE-SWITCH (SLOT-VALUE CLOS-BROWSER:CLOS-ICON - 'CLOS-BROWSER::MENU-CACHE-SWITCH) - ) - :NONE)) (IL:* IL:\; - "we want auto cache updating") - ) - (CLOS-BROWSER::UPDATE-CACHED-MENUES CLOS-BROWSER::METHOD CLOS-BROWSER::CACHE-SWITCH)) - CLOS-BROWSER::GENERIC-FUNCTION)) - -(DEFUN CLOS-BROWSER::REPLACE-SPECIALIZERS (CLOS-BROWSER::METHOD-DEFINITION - CLOS-BROWSER::FROM-CLASS-NAME - CLOS-BROWSER::TO-CLASS-NAME &KEY - CLOS-BROWSER::IN-LAMDA-LIST-ONLY-FLAG) - (NSUBST CLOS-BROWSER::TO-CLASS-NAME CLOS-BROWSER::FROM-CLASS-NAME - (IF CLOS-BROWSER::IN-LAMDA-LIST-ONLY-FLAG - - (IL:* IL:|;;| "get the lamba list") - - (THIRD (MULTIPLE-VALUE-LIST (CLOS::PARSE-DEFMETHOD (CDR CLOS-BROWSER::METHOD-DEFINITION - )))) - (IL:* IL:\; "note this gets argument names as well as specializers. Usually not what you want. Needs to be made smarter to just get specializers.") - - (IL:* IL:|;;| "otherwise do the whole method") - - CLOS-BROWSER::METHOD-DEFINITION))) - - - -(IL:* IL:|;;| "") - - - - -(IL:* IL:|;;;| "SETUP RELEASE INFO") - - -(IL:RPAQ CLOS-BROWSER::RELEASE-ID "0.02") - -(IL:RPAQ CLOS-BROWSER::SYSTEM-DATE (CAAR (IL:GETPROP 'IL:CLOS-BROWSER 'IL:FILEDATES))) - - - -(IL:* IL:|;;| "") - - - - -(IL:* IL:|;;| "") - - - - -(IL:* IL:|;;| "SETUP BACKGROUND MENU") - - -(DEFUN CLOS-BROWSER::IN-SELECT-PACKAGE () - "pops up a menu of packages" (IL:* IL:\; "Edited 18-Mar-87 13:13 by smL") - (IL:* IL:\; "") - - (IL:* IL:|;;| "kirk: 16Mar88 modified for clos-browser") - - (LET ((PACKAGE (IL:MENU - (IL:|create| - IL:MENU - IL:TITLE IL:_ "Select package" - IL:ITEMS IL:_ - (IL:SORT (IL:|for| PACKAGE IL:|in| (LIST-ALL-PACKAGES) IL:|bind| - IL:PACKAGE-NAME - IL:|collect| (IL:SETQ IL:PACKAGE-NAME (PACKAGE-NAME PACKAGE)) - `(,(IL:CONCAT (OR (CAR (PACKAGE-NICKNAMES PACKAGE)) - IL:PACKAGE-NAME) - ":") - ',IL:PACKAGE-NAME - ,(IL:CONCAT "Set the current package to " IL:PACKAGE-NAME ":" - ))) - (IL:FUNCTION (IL:LAMBDA (IL:X IL:Y) - (IL:ALPHORDER (CAR IL:X) - (CAR IL:Y))))) - IL:CENTERFLG IL:_ T)))) - (IL:|if| PACKAGE - IL:|then| (IN-PACKAGE PACKAGE)))) - -(DEFUN CLOS-BROWSER::CLASSES-IN-PACKAGE (PACKAGE &OPTIONAL CLOS-BROWSER::MAP-ON-PACKAGE) - "Retrieves a list of all the classes for a given package. When map-on-package is t this can be very slow." - - (IL:* IL:|;;| "The maphash is always fast, whereas for some strange reason map-on-package varys among packages greatly.") - - (LET ((CLOS-BROWSER::CLASSES)) - (UNLESS (TYPEP PACKAGE 'PACKAGE) - (SETQ PACKAGE (FIND-PACKAGE PACKAGE))) - (IF CLOS-BROWSER::MAP-ON-PACKAGE - (DO-SYMBOLS (CLOS-BROWSER::SYM PACKAGE) - (IF (AND (EQ (SYMBOL-PACKAGE CLOS-BROWSER::SYM) - PACKAGE) - (CLOS::SYMBOL-CLASS CLOS-BROWSER::SYM T)) - (PUSH CLOS-BROWSER::SYM CLOS-BROWSER::CLASSES))) - (MAPHASH #'(LAMBDA (CLOS-BROWSER::KEY CLOS-BROWSER::VAL) - (IF (EQ (SYMBOL-PACKAGE CLOS-BROWSER::KEY) - PACKAGE) - (PUSH CLOS-BROWSER::KEY CLOS-BROWSER::CLASSES))) - CLOS::*FIND-CLASS*)) - CLOS-BROWSER::CLASSES)) - - -(IL:* IL:|;;| "pushnew should eliminate this") - - -(SETQ IL:|BackgroundMenuCommands| (REMOVE 'IL:|BrowseClass| IL:|BackgroundMenuCommands| :KEY - #'CAR)) - -(PUSH '(IL:|BrowseClass| (CLOS-BROWSER:BROWSE-CLASS) - "Bring up a class browser." - (IL:SUBITEMS (IL:|all in a package| (CLOS-BROWSER:BROWSE-CLASS ( - CLOS-BROWSER::CLASSES-IN-PACKAGE - ( - CLOS-BROWSER::IN-SELECT-PACKAGE - ))) - - "Select a package and browse all the classes defined in that package." - ))) - IL:|BackgroundMenuCommands|) - -(SETQ IL:|BackgroundMenu| NIL) -(IL:PUTPROPS IL:NEW-CLOS-BROWSER IL:COPYRIGHT ("Venue" 1991)) -(IL:DECLARE\: IL:DONTCOPY - (IL:FILEMAP (NIL))) -IL:STOP diff --git a/obsolete/clos/2.0/WEB-EDITOR b/obsolete/clos/2.0/WEB-EDITOR deleted file mode 100644 index 581d6cf7..00000000 --- a/obsolete/clos/2.0/WEB-EDITOR +++ /dev/null @@ -1,2338 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE (LET ((*PACKAGE*)) (* ;; -"Put IN Seven EXtremely Random USEr Interface COmmands ") (CLPROVIDE "WEB-EDITOR") (CLIN-PACKAGE -"WEB" NICKNAMES (QUOTE ("WEB-EDITOR"))) (* ;; "EXPORT") (CLFLET ((XCL-USEREXPORT-FROM-WEB (&REST -XCL-USERSYMBOL-NAMES) (LET ((XCL-USERPKG (CLFIND-PACKAGE "WEB"))) (CLDOLIST (XCL-USERNAME -XCL-USERSYMBOL-NAMES) (EXPORT (CLINTERN XCL-USERNAME XCL-USERPKG) XCL-USERPKG))))) (* ;; -"Class Definitions and Slot Access") (XCL-USEREXPORT-FROM-WEB "WEB-EDITOR" "WEB-NODE" "NODE-NAME" -"NODE-LINKS" "NODE-BACK-LINKS" "LOCAL-COMMANDS" "NODE-MOVER-P" "TITLE-ITEMS" "LEFT-BUTTON-ITEMS" -"MIDDLE-BUTTON-ITEMS" "RIGHT-BUTTON-ITEMS" "BROWSE-FONT") (* ;; "For Subclassing") (XCL-USEREXPORT-FROM-WEB - "GET-LABEL" "GET-SUBS" "ICON-TITLE" "NODE-MENU-ITEMS" "REORDER-TREE" "MOVE-NODE") (* ;; "Top Level") -(XCL-USEREXPORT-FROM-WEB "MAKE-WEB-EDITOR" "INITIALIZE-EDITOR" "BROWSE" "DISPLAY-BROWSER" "DESTROY" -"ADD-NODE" "NOTICE-NODE" "REMOVE-NODE" "RENAME-NODE") (* ;; "Window Operations") (XCL-USEREXPORT-FROM-WEB - "SHRINK" "MOVE" "CLEAR" "PROMPT-PRINT" "PROMPT-READ" "PROMPT-FOR-LIST" "PROMPT-FOR-STRING" -"PROMPT-FOR-WORD") (* ;; "Recomputing and Changing parameters") (XCL-USEREXPORT-FROM-WEB "RECOMPUTE" - "RECOMPUTE-IN-PLACE" "RECOMPUTE-LABELS" "RECOMPUTE-IF-OPEN" "CLEAR-LABEL-CACHE" "CHANGE-FONT-SIZE" -"CHANGE-FORMAT" "SHAPE-TO-HOLD") (* ;; "For CLOS-BROWSER???") (XCL-USEREXPORT-FROM-WEB "BOXED-NODE" -"BOX-NODE")) (* ;; "USE") (CLUSE-PACKAGE (QUOTE ("CLOS" "LISP" "XCL")) "WEB") (* ;; "IMPORT") (CLFLET - ((XCL-USERIMPORT-FROM-PACKAGE (XCL-USERNAMES XCL-USERFROM &OPTIONAL XCL-USERSHADOW-P) (LET (( -XCL-USERFROM-PACKAGE (CLFIND-PACKAGE XCL-USERFROM))) (CLFUNCALL (CLIF XCL-USERSHADOW-P ( -CLFUNCTION CLSHADOWING-IMPORT) (CLFUNCTION IMPORT)) (CLMAPCAR (CLFUNCTION (CLLAMBDA (XCL-USERNAME -) (CLINTERN XCL-USERNAME XCL-USERFROM-PACKAGE))) XCL-USERNAMES))))) (XCL-USERIMPORT-FROM-PACKAGE - (QUOTE ("CLASSES" "METHODS")) "CLOS") (XCL-USERIMPORT-FROM-PACKAGE (QUOTE ("FALSE")) "XCL") ( -XCL-USERIMPORT-FROM-PACKAGE (QUOTE ("FUNCTIONS" "FNS" "VARIABLES" "VARS" "BITMAPS" "COMS")) "IL")) ( -CLFIND-PACKAGE "WEB")) READTABLE "XCL" BASE 10) -(IL:FILECREATED " 5-Nov-91 08:07:23"  -IL:|{DSK}local>users>welch>lisp>clos>browser>WEB-EDITOR.;8| 132667 - - IL:|changes| IL:|to:| (IL:TYPES WEB-NODE WEB-EDITOR) - - IL:|previous| IL:|date:| "30-Sep-91 23:36:34" -IL:|{DSK}local>users>welch>lisp>clos>browser>WEB-EDITOR.;6|) - - -; Copyright (c) 1987, 1988, 1989, 1991 by Xerox Corporation. All rights reserved. - -(IL:PRETTYCOMPRINT IL:WEB-EDITORCOMS) - -(IL:RPAQQ IL:WEB-EDITORCOMS ((COMS IL:* FILE-HEADER-COMS) - - (IL:* IL:|;;| "") - - - -(IL:* IL:|;;;| "WEB EDITOR ") - - - (IL:* IL:|;;| "") - - - (IL:* IL:|;;| "Package Setup") - - (IL:DECLARE\: IL:DONTCOPY (IL:PROPS (IL:WEB-EDITOR - IL:MAKEFILE-ENVIRONMENT) - (IL:WEB-EDITOR IL:FILETYPE))) - - (IL:* IL:|;;| "Global Variables") - - - (IL:* IL:|;;| "global for cross-editor boxed node destination (like caret for current tty process copy and move destinations)") - - (VARIABLES DESTINATION-BROWSER) - (COMS (IL:* IL:\; "Client Interface") - - (IL:* IL:|;;| "Web Node Class") - - (CLASSES WEB-NODE) - - (IL:* IL:|;;| " Web Editor Class") - - (CLASSES WEB-EDITOR) - - (IL:* IL:|;;| "Top Level") - - (FUNCTIONS MAKE-WEB-EDITOR) - (METHODS (INITIALIZE-EDITOR (WEB-EDITOR)) - (DESTROY (WEB-EDITOR)) - (BROWSE (WEB-EDITOR))) - (METHODS - - (IL:* IL:|;;| "For Subclassing") - - (GET-LABEL (WEB-EDITOR WEB-NODE)) - (GET-SUBS (WEB-EDITOR WEB-NODE)) - (ICON-TITLE (WEB-EDITOR)) - - (IL:* IL:|;;| "Adding, Removing, Hiding Nodes.") - - (ADD-NODE (WEB-EDITOR WEB-NODE)) - (NOTICE-NODE (WEB-EDITOR WEB-NODE WEB-NODE)) - (REMOVE-NODE (WEB-EDITOR WEB-NODE)) - (DELETE-FROM-BROWSER (WEB-EDITOR)) - (REMOVE-FROM-BAD-LIST (WEB-EDITOR)) - - (IL:* IL:|;;| "") - - (RENAME-NODE (WEB-EDITOR WEB-NODE))) - (IL:* IL:\; "")) - (COMS (IL:* IL:\; "Window System Interface") - (METHODS (UPDATE (WEB-EDITOR)) - (CREATE-WINDOW (WEB-EDITOR)) - (SETUP-WINDOW (WEB-EDITOR)) - (DETACH-LISP-WINDOW (WEB-EDITOR)) - (SHRINK (WEB-EDITOR)) - (SET-OUTER-REGION (WEB-EDITOR)) - (SET-REGION (WEB-EDITOR)) - (MOVE (WEB-EDITOR)) - (MOVE1 (WEB-EDITOR)) - (AFTER-MOVE (WEB-EDITOR)) - (AFTER-RESHAPE (WEB-EDITOR)) - (SCROLL-WINDOW (WEB-EDITOR)) - (CLEAR (WEB-EDITOR)) - - (IL:* IL:|;;| "Prompt Window Interactions ") - - (GET-PROMPT-WINDOW (WEB-EDITOR)) - (REMOVE-PROMPT-WINDOW (WEB-EDITOR)) - (PROMPT-PRINT (WEB-EDITOR)) - (PROMPT-READ (WEB-EDITOR)) - (PROMPT-FOR-LIST (WEB-EDITOR)) - (PROMPT-FOR-STRING (WEB-EDITOR)) - (PROMPT-FOR-WORD (WEB-EDITOR))) - (FUNCTIONS MOVE-DOWN-P) - (FNS WEB-WINDOW-AFTER-MOVE-FN WEB-WINDOW-BUTTON-EVENT-FN - WEB-WINDOW-RESHAPE-FN WEB-WINDOW-CLOSE-FN IL:|PromptRead| - ) - (FNS WEB-WINDOW-EXPAND-FN) - (FUNCTIONS WEB-WINDOW-ICON-FN) - (BITMAPS *WEB-EDITOR-ICON-BM* *WEB-EDITOR-ICON-MASK*) - (VARIABLES *WEB-EDITOR-TEMPLATE*) - (VARS (IL:*D-WINDOW-DEFAULT-STREAM* IL:PROMPTWINDOW) - (WEB-STREAM IL:PROMPTWINDOW))) - (COMS (IL:* IL:\; - "Layout and Display Engine") - (VARS IL:|BrowserMargin| IL:|MaxLatticeHeight| - IL:|MaxLatticeWidth|) - (IL:SPECVARS IL:|MaxLatticeHeight| IL:|MaxLatticeWidth|) - (VARS IL:GRAYSHADE1 IL:GRAYSHADE2 IL:GRAYSHADE3 IL:GRAYSHADE4) - (FNS TREE-ROOTS CHILD-NODES REACHABLE-NODES!) - (METHODS (DISPLAY-BROWSER (WEB-EDITOR)) - (BROWSER-OBJECTS (WEB-EDITOR)) - (GET-NODE-LIST (WEB-EDITOR)) - (OBJ-NAME-PAIR (WEB-EDITOR)) - (GRAPH-FITS (WEB-EDITOR)) - (NODE-REGION (WEB-EDITOR)) - (IL:* IL:\; "") - (RECOMPUTE (WEB-EDITOR)) - (RECOMPUTE-IN-PLACE (WEB-EDITOR)) - (RECOMPUTE-LABELS (WEB-EDITOR)) - (RECOMPUTE-IF-OPEN (WEB-EDITOR)) - (CLEAR-LABEL-CACHE (WEB-EDITOR)) - (OBJECT-FROM-LABEL (WEB-EDITOR)) - (CHANGE-FONT-SIZE (WEB-EDITOR)) - (CHANGE-FORMAT (WEB-EDITOR)) - (CHANGE-MAX-LABEL-SIZE (WEB-EDITOR)) - (SHAPE-TO-HOLD (WEB-EDITOR)) - (IL:* IL:\; "") - (IL:* IL:\; - "Node Marking and Selecting") - (GET-DISPLAY-LABEL (WEB-EDITOR)) - (BOX-NODE (WEB-EDITOR)) - (UNMARK-NODES (WEB-EDITOR)) - (HIGHLIGHT-NODE (WEB-EDITOR)) - (SHADE-NODE (WEB-EDITOR)) - (DISPLAY-NODE-HIGHTLIGHTS (WEB-EDITOR)) - (DISPLAY-NODE-SHADING (WEB-EDITOR)) - (REMOVE-HIGHLIGHTS (WEB-EDITOR)) - (REMOVE-SHADING (WEB-EDITOR)) - (FLASH-NODE (WEB-EDITOR)) - (FLIP-NODE (WEB-EDITOR)) - (POSITION-NODE (WEB-EDITOR))) - (FNS BOX-PRINT-STRING BREAK-STRING-FOR-BOXING BOX-WINDOW-NODE) - ) - (COMS (IL:* IL:\; "Button Events") - (FNS FIND-SELECTED-NODE) - (METHODS (BUTTON-EVENT-FN (WEB-EDITOR)) - (LEFT-SELECTION (WEB-EDITOR)) - (MIDDLE-SELECTION (WEB-EDITOR)) - (RIGHT-SELECTION (WEB-EDITOR)) - (TITLE-SELECTION (WEB-EDITOR)) - (NODE-SELECTION (WEB-EDITOR)) - (NODE-ACTION (WEB-EDITOR)) - (NODE-MENU-ITEMS (WEB-NODE)) - - (IL:* IL:|;;| "") - - (CHOICE-MENU (WEB-EDITOR)) - (DO-SELECTED-COMMAND (WEB-EDITOR)) - (WHEN-MENU-ITEM-HELD (WEB-EDITOR)) - (ITEM-MENU (WEB-EDITOR)) - (GET-MENU-ITEMS (WEB-EDITOR)) - (CLEAR-MENU-CACHE (WEB-EDITOR))) - (FNS WEB-MENU-WHENSELECTEDFN WINDOW-WHEN-HELD-FN) - (FNS SUB-ITEM-SELECTION DUAL-SUB-ITEMS WINDOW-WHEN-HELD-FN - DO-MENU-METHOD DUAL-MENU DUAL-SELECTION) - (IL:* IL:\; "Node Moving Protocol") - (METHODS (NODE-MOVE (WEB-EDITOR)) - (NODE-MOVE-SHALLOW (WEB-EDITOR)) - (SCIONS (WEB-NODE)) - (MAKE-REG-ASSOC (WEB-EDITOR)) - (REORDER-TREE (WEB-EDITOR)) - (MOVE-NODE (WEB-NODE)))) - (IL:* IL:\; "") - - (IL:* IL:|;;| "") - - (IL:DECLARE\: IL:DONTEVAL@LOAD IL:DOEVAL@COMPILE IL:DONTCOPY - IL:COMPILERVARS (IL:ADDVARS (IL:NLAMA) - (IL:NLAML) - (IL:LAMA WINDOW-WHEN-HELD-FN - WINDOW-WHEN-HELD-FN))))) - -(IL:RPAQQ FILE-HEADER-COMS ((IL:P (FORMAT T - "~&;WEB-EDITOR Copyright (c) 1987, VENUE Corporation. All rights reserved.~%" - ) - (PROVIDE "WEB-EDITOR")))) - -(FORMAT T "~&;WEB-EDITOR Copyright (c) 1987, VENUE Corporation. All rights reserved.~%") - -(PROVIDE "WEB-EDITOR") - - - -(IL:* IL:|;;| "") - - - - -(IL:* IL:|;;;| "WEB EDITOR ") - - - - -(IL:* IL:|;;| "") - - - - -(IL:* IL:|;;| "Package Setup") - -(IL:DECLARE\: IL:DONTCOPY - -(IL:PUTPROPS IL:WEB-EDITOR IL:MAKEFILE-ENVIRONMENT - (:PACKAGE (LET ((*PACKAGE*)) - - (IL:* IL:|;;| "Put IN Seven EXtremely Random USEr Interface COmmands ") - - (PROVIDE "WEB-EDITOR") - (IN-PACKAGE "WEB" :NICKNAMES '("WEB-EDITOR")) - - (IL:* IL:|;;| "EXPORT") - - (FLET ((XCL-USER::EXPORT-FROM-WEB (&REST XCL-USER::SYMBOL-NAMES) - (LET ((XCL-USER::PKG (FIND-PACKAGE "WEB"))) - (DOLIST (XCL-USER::NAME XCL-USER::SYMBOL-NAMES) - (EXPORT (INTERN XCL-USER::NAME XCL-USER::PKG) - XCL-USER::PKG))))) - - (IL:* IL:|;;| "Class Definitions and Slot Access") - - (XCL-USER::EXPORT-FROM-WEB "WEB-EDITOR" "WEB-NODE" "NODE-NAME" - "NODE-LINKS" "NODE-BACK-LINKS" "LOCAL-COMMANDS" - "NODE-MOVER-P" "TITLE-ITEMS" "LEFT-BUTTON-ITEMS" - "MIDDLE-BUTTON-ITEMS" "RIGHT-BUTTON-ITEMS" "BROWSE-FONT") - - (IL:* IL:|;;| "For Subclassing") - - (XCL-USER::EXPORT-FROM-WEB "GET-LABEL" "GET-SUBS" "ICON-TITLE" - "NODE-MENU-ITEMS" "REORDER-TREE" "MOVE-NODE") - - (IL:* IL:|;;| "Top Level") - - (XCL-USER::EXPORT-FROM-WEB "MAKE-WEB-EDITOR" "INITIALIZE-EDITOR" - "BROWSE" "DISPLAY-BROWSER" "DESTROY" "ADD-NODE" - "NOTICE-NODE" "REMOVE-NODE" "RENAME-NODE") - - (IL:* IL:|;;| "Window Operations") - - (XCL-USER::EXPORT-FROM-WEB "SHRINK" "MOVE" "CLEAR" "PROMPT-PRINT" - "PROMPT-READ" "PROMPT-FOR-LIST" "PROMPT-FOR-STRING" - "PROMPT-FOR-WORD") - - (IL:* IL:|;;| "Recomputing and Changing parameters") - - (XCL-USER::EXPORT-FROM-WEB "RECOMPUTE" "RECOMPUTE-IN-PLACE" - "RECOMPUTE-LABELS" "RECOMPUTE-IF-OPEN" "CLEAR-LABEL-CACHE" - "CHANGE-FONT-SIZE" "CHANGE-FORMAT" "SHAPE-TO-HOLD") - - (IL:* IL:|;;| "For CLOS-BROWSER???") - - (XCL-USER::EXPORT-FROM-WEB "BOXED-NODE" "BOX-NODE")) - - (IL:* IL:|;;| "USE") - - (USE-PACKAGE '("CLOS" "LISP" "XCL") - "WEB") - - (IL:* IL:|;;| "IMPORT") - - (FLET ((XCL-USER::IMPORT-FROM-PACKAGE - (XCL-USER::NAMES XCL-USER::FROM &OPTIONAL XCL-USER::SHADOW-P) - (LET ((XCL-USER::FROM-PACKAGE (FIND-PACKAGE XCL-USER::FROM))) - (FUNCALL (IF XCL-USER::SHADOW-P - #'SHADOWING-IMPORT - #'IMPORT) - (MAPCAR #'(LAMBDA (XCL-USER::NAME) - (INTERN XCL-USER::NAME - XCL-USER::FROM-PACKAGE)) - XCL-USER::NAMES))))) - (XCL-USER::IMPORT-FROM-PACKAGE '("CLASSES" "METHODS") - "CLOS") - (XCL-USER::IMPORT-FROM-PACKAGE '("FALSE") - "XCL") - (XCL-USER::IMPORT-FROM-PACKAGE '("FUNCTIONS" "FNS" "VARIABLES" - "VARS" "BITMAPS" "COMS") - "IL")) - (FIND-PACKAGE "WEB")) - :READTABLE "XCL" :BASE 10)) - -(IL:PUTPROPS IL:WEB-EDITOR IL:FILETYPE :COMPILE-FILE) -) - - - -(IL:* IL:|;;| "Global Variables") - - - - -(IL:* IL:|;;| -"global for cross-editor boxed node destination (like caret for current tty process copy and move destinations)" -) - - -(DEFGLOBALPARAMETER DESTINATION-BROWSER NIL - "global for cross-editor boxed node destination (like caret for current tty process copy and move destinations)" -) - - - -(IL:* IL:\; "Client Interface") - - - - -(IL:* IL:|;;| "Web Node Class") - - -(DEFCLASS WEB-NODE () - ((NAME :INITFORM NIL (IL:* IL:\; "Name of Node") - :ACCESSOR NODE-NAME) - (TO-LINKS :INITFORM NIL (IL:* IL:\; - "Nodes that this Node has Links TO") - :ACCESSOR GET-TO-LINKS :ACCESSOR NODE-LINKS) - (PARENT :INITFORM NIL :ACCESSOR NODE-BACK-LINKS))) - - - -(IL:* IL:|;;| " Web Editor Class") - - -(DEFCLASS WEB-EDITOR () - ( - (IL:* IL:|;;| "NODES ") - - (STARTING-LIST :INITFORM NIL (IL:* IL:\; - "list of objects used to compute this browser") - ) - (GOOD-LIST :INITFORM NIL (IL:* IL:\; - "limit choices to this set")) - (BAD-LIST :INITFORM NIL (IL:* IL:\; - "Don't put in any items on this set") - ) - - (IL:* IL:|;;| "GRAPHER FORMAT") - - (TOP-ALIGN :INITFORM NIL) - (BROWSE-FONT :INITFORM (IL:FONTCREATE '(IL:HELVETICA 10 IL:BOLD))) - (BROWSE-FONT-FAMILY :INITFORM 'IL:HELVETICA) - (BROWSE-FONT-FACE :INITFORM 'IL:BOLD) - (GRAPH-FORMAT :INITFORM '(IL:LATTICE)) - (GRAPH-FORMAT-CHOICES :ALLOCATION :CLASS :INITFORM '((IL:HORIZONTAL/LATTICE '(IL:LATTICE)) - (IL:VERTICAL/LATTICE '(IL:VERTICAL - IL:LATTICE)) - (IL:HORIZONTAL/TREE '(IL:COPIES/ONLY)) - (IL:VERTICAL/TREE '(IL:VERTICAL - IL:COPIES/ONLY))) - ) - - (IL:* IL:|;;| "WINDOW Interface") - - (WINDOW :INITFORM NIL) - (TITLE :INITFORM "Web Editor" (IL:* IL:\; - "If not NIL will be put in title of window") - ) - (LEFT :INITFORM 0 (IL:* IL:\; "left position of window") - ) - (BOTTOM :INITFORM 0 (IL:* IL:\; - "bottom position of window")) - (WIDTH :INITFORM 64) - (HEIGHT :INITFORM 32) - - (IL:* IL:|;;| "NODE Labels") - - (LABEL-CACHE :INITFORM NIL) - (LABEL-MAX-LINES :INITFORM NIL - - (IL:* IL:|;;| "the maximum number of lines to use in 'boxed' labels -- note that if the label wont fit within the LabelMaxLines and LabelMaxCharsWidth restrictions, it will be truncated") -) - (LABEL-MAX-CHARS-WIDTH :INITFORM NIL - - (IL:* IL:|;;| "the maximum width for labels -- if label is too big, it will be 'boxed'") -) - (IL:* IL:|;;| "NODE Operations") - - (LAST-SELECTED-OBJECT :INITFORM NIL (IL:* IL:\; "last object selected")) - (BOXED-NODE :INITFORM NIL (IL:* IL:\; "last item Boxed, if any") - ) - (BOX-LINE-WIDTH :ALLOCATION :CLASS - - (IL:* IL:|;;| "width to make box for BoxNode") - - :INITFORM 1) - (NODE-MOVER-P :ALLOCATION :CLASS :INITFORM NIL) - - (IL:* IL:|;;| "MENUS") - - (CACHE-MENU-P :INITFORM T) - (MENU-CACHE :INITFORM NIL (IL:* IL:\; - "Will Cache Menus only if CACHE-MENU-P is T") - ) - (LOCAL-COMMANDS :ALLOCATION :CLASS - - (IL:* IL:|;;| "messages that should be sent to browser when item seleted in menu, even if object does understand them") - - :INITFORM - '(BOX-NODE RECOMPUTE ADD-ROOT)) - (TITLE-ITEMS :ALLOCATION :CLASS - - (IL:* IL:|;;| "Items for menu of selections in title of window") - - :INITFORM - '(("Recompute" RECOMPUTE "" (IL:SUBITEMS ("Recompute" RECOMPUTE - "Recompute lattice from starting objects" - ) - ("Recompute Labels" RECOMPUTE-LABELS - "Recomputes the labels") - ("Recompute In Place" RECOMPUTE-IN-PLACE - "Recompute keeping current view in window"))) - ("Shape To Hold" SHAPE-TO-HOLD "Make window large or small enough to just hold graph") - ("Change Font Size" CHANGE-FONT-SIZE "Choose a new size Font") - ("Change Format" CHANGE-FORMAT "Change format between lattice and tree"))) - (LEFT-BUTTON-ITEMS :ALLOCATION :CLASS - - (IL:* IL:|;;| "Menu items for LeftButton seletion -- Value sent as message to object or browser -- see LocalCommands") - - :INITFORM - '(("Box Node" BOX-NODE "Draw box around selected node. -Unboxed by another BoxNode") - ("Pretty Print" PP "Prettyprint selected item"))) - (MIDDLE-BUTTON-ITEMS :ALLOCATION :CLASS - - (IL:* IL:|;;| "Menu items for MiddleButton seletion -- Value sent as message to object or browser -- see LocalCommands") - - :INITFORM - '(("Inspect" IL:|Inspect| INSPECT "Inspect selected item") - ("Edit" EDIT-OBJECT "Edit selected item") - ("Delete From Browser" DELETE-FROM-BROWSER "Do not show item or its subs"))) - (RIGHT-BUTTON-ITEMS :ALLOCATION :CLASS :INITFORM '(("Close" (CLOSEW (("Close" CLOSEW) - ("Destroy" DESTROY)))) - ("Snap" SNAP) - ("Paint" PAINT) - ("Clear" CLEAR) - ("Bury" BURY) - ("Repaint" REPAINT) - ("Hardcopy" (HARDCOPY (("Hardcopy to File" - HARDCOPY-TO-FILE) - ("Hardcopy to Printer" - HARDCOPY-TO-PRINTER)) - )) - ("Move" MOVE) - ("Shape" SHAPE) - ("Shrink" SHRINK)) - (IL:* IL:\; - "Items to be done if Right button is selected") - ))) - - - -(IL:* IL:|;;| "Top Level") - - -(DEFUN MAKE-WEB-EDITOR () - (LET ((EDITOR (MAKE-INSTANCE 'WEB-EDITOR))) - (INITIALIZE-EDITOR EDITOR))) - -(DEFMETHOD INITIALIZE-EDITOR ((SELF WEB-EDITOR)) - (LET NIL (CREATE-WINDOW SELF) - SELF)) - -(DEFMETHOD DESTROY ((SELF WEB-EDITOR)) - (LET* ((WINDOW (SLOT-VALUE SELF 'WINDOW)) - (ICON-WINDOW (IL:WINDOWPROP WINDOW 'IL:ICONWINDOW))) - (IL:CLOSEW WINDOW) - (IF ICON-WINDOW (IL:CLOSEW ICON-WINDOW)) - (DETACH-LISP-WINDOW SELF))) - -(DEFMETHOD BROWSE ((SELF WEB-EDITOR) - &OPTIONAL BROWSE-LIST WINDOW-OR-TITLE GOOD-LIST POSITION) - (IL:* IL:\; "11-Sep-84 07:24") - (IL:* IL:\; - "Call Show and then shape to hold and move for first time") - (COND - ((IL:WINDOWP WINDOW-OR-TITLE) - (SETF (SLOT-VALUE SELF 'WINDOW) - WINDOW-OR-TITLE)) - (WINDOW-OR-TITLE (SETF (SLOT-VALUE SELF 'TITLE) - WINDOW-OR-TITLE))) - (COND - ((AND BROWSE-LIST (IL:NLISTP BROWSE-LIST)) - (IL:SETQ BROWSE-LIST (LIST BROWSE-LIST)))) - (SETF (SLOT-VALUE SELF 'STARTING-LIST) - BROWSE-LIST) - (SETF (SLOT-VALUE SELF 'GOOD-LIST) - GOOD-LIST) - (DISPLAY-BROWSER SELF) - (SHAPE-TO-HOLD SELF) - (MOVE SELF POSITION) - SELF) - -(DEFMETHOD GET-LABEL ((WEB-EDITOR WEB-EDITOR) - (NODE WEB-NODE)) (IL:* IL:\; - "Get a label for an object to be displayed in the browser.") - (NODE-NAME NODE)) - -(DEFMETHOD GET-SUBS ((EDITOR WEB-EDITOR) - (NODE WEB-NODE)) (IL:* IL:\; - "Gets a set of subs from an object for browsing") - (NODE-LINKS NODE)) - -(DEFMETHOD ICON-TITLE ((SELF WEB-EDITOR)) (IL:* IL:\; "18-Jan-85 15:35") - - (IL:* IL:|;;| "Compute the icont title for this browser") - - '|Web Editor|) - -(DEFMETHOD ADD-NODE ((WEB-EDITOR WEB-EDITOR) - (NEW-NODE WEB-NODE)) (IL:* IL:\; "11-Dec-86 10:23") - - (IL:* IL:|;;| "Add a new node to the browser.") - - (PUSHNEW NEW-NODE (SLOT-VALUE WEB-EDITOR 'STARTING-LIST)) - (IF (SLOT-VALUE WEB-EDITOR 'GOOD-LIST) - (PUSHNEW NEW-NODE (SLOT-VALUE WEB-EDITOR 'GOOD-LIST)))) - -(DEFMETHOD NOTICE-NODE ((WEB-EDITOR WEB-EDITOR) - (WEB-NODE WEB-NODE) - (PARENT-NODE WEB-NODE)) - (PUSH WEB-NODE (SLOT-VALUE PARENT-NODE 'TO-LINKS)) - (ADD-NODE WEB-EDITOR WEB-NODE)) - -(DEFMETHOD REMOVE-NODE ((WEB-EDITOR WEB-EDITOR) - (BYE-NODE WEB-NODE)) - (WITH-SLOTS (STARTING-LIST GOOD-LIST BAD-LIST) - WEB-EDITOR - - (IL:* IL:|;;| "") - - (SETF STARTING-LIST (DELETE BYE-NODE STARTING-LIST)) - (IF GOOD-LIST - (SETF GOOD-LIST (DELETE BYE-NODE GOOD-LIST))) - (IF BAD-LIST - (SETF BAD-LIST (DELETE BYE-NODE BAD-LIST))) - (SETF (NODE-LINKS (NODE-BACK-LINKS BYE-NODE)) - (DELETE BYE-NODE (NODE-LINKS (NODE-BACK-LINKS BYE-NODE)))))) - -(DEFMETHOD DELETE-FROM-BROWSER ((SELF WEB-EDITOR) - OBJ OBJ-NAME) (IL:* IL:\; " 5-Aug-86 16:50") - - (IL:* IL:|;;| "Place on badList for Browser") - - (PUSHNEW OBJ (SLOT-VALUE SELF 'BAD-LIST)) - (RECOMPUTE SELF)) - -(DEFMETHOD REMOVE-FROM-BAD-LIST ((SELF WEB-EDITOR)) (IL:* IL:\; "28-Dec-85 10:04") - (IL:* IL:\; - "Remove an item from BadList to allow it to be displayed once again") - (COND - ((NULL (SLOT-VALUE SELF 'BAD-LIST)) - (IL:CLRPROMPT) - (IL:PROMPTPRINT "No BadList items.")) - (T (PROG ((IL:|item| (IL:MENU (IL:|create| IL:MENU - IL:TITLE IL:_ "BadList Items" - IL:ITEMS IL:_ (SLOT-VALUE SELF 'BAD-LIST))))) - (COND - (IL:|item| (SETF (SLOT-VALUE SELF 'BAD-LIST) - '(IL:DREMOVE IL:|item| (SLOT-VALUE SELF 'BAD-LIST))) - (RECOMPUTE SELF)) - (T (IL:CLRPROMPT) - (IL:PROMPTPRINT "Nothing Selected"))))))) - -(DEFMETHOD RENAME-NODE ((WEB-EDITOR WEB-EDITOR) - (WEB-NODE WEB-NODE) - NEW-NAME) - (SETF (NODE-NAME WEB-NODE) - NEW-NAME) - (CLEAR-LABEL-CACHE WEB-EDITOR WEB-NODE)) - - - -(IL:* IL:\; "") - - - - -(IL:* IL:\; "Window System Interface") - - -(DEFMETHOD UPDATE ((SELF WEB-EDITOR)) (IL:* IL:\; "29-Sep-86 11:56") - - (IL:* IL:|;;| "make the Lisp window be consistent with ivs") - - (LET* ((WINDOW (SLOT-VALUE SELF 'WINDOW)) - (REGION (AND (SLOT-VALUE SELF 'WIDTH) - (SLOT-VALUE SELF 'HEIGHT) - (IL:|create| IL:REGION - IL:LEFT IL:_ (OR (SLOT-VALUE SELF 'LEFT) - (SETF (SLOT-VALUE SELF 'LEFT) - IL:LASTMOUSEX)) - IL:BOTTOM IL:_ (OR (SLOT-VALUE SELF 'BOTTOM) - (SETF (SLOT-VALUE SELF 'BOTTOM) - IL:LASTMOUSEY)) - IL:WIDTH IL:_ (SLOT-VALUE SELF 'WIDTH) - IL:HEIGHT IL:_ (SLOT-VALUE SELF 'HEIGHT))))) - (COND - ((AND REGION (NOT (IL:EQUAL REGION (IL:WINDOWPROP WINDOW 'IL:REGION)))) - (IL:* IL:\; - "The shape has changed. --- This is complicated because of ATTACHEDWINDOWS.") - (LET* ((ATTACHED-WINDOWS (IL:WINDOWPROP WINDOW 'IL:ATTACHEDWINDOWS)) - (ATTACHMENT-SPECS (IL:|for| IL:\w IL:|in| ATTACHED-WINDOWS - IL:|collect| (LIST (IL:WINDOWPROP IL:\w - 'IL:DOWINDOWCOMFN) - (IL:WINDOWPROP IL:\w - 'IL:WHEREATTACHED) - (IL:WINDOWPROP IL:\w - 'IL:PASSTOMAINCOMS))))) - (IL:|for| IL:\w IL:|in| ATTACHED-WINDOWS IL:|do| (IL:DETACHWINDOW - IL:\w)) - (IL:SHAPEW WINDOW REGION) - (IL:|for| IL:\w IL:|in| ATTACHED-WINDOWS IL:|as| IL:|spec| - IL:|in| ATTACHMENT-SPECS IL:|do| (IL:ATTACHWINDOW IL:\w WINDOW - (CAADR IL:|spec|) - (CDADR IL:|spec|)) - (IL:WINDOWPROP IL:\w 'IL:DOWINDOWCOMFN - (CAR IL:|spec|)) - (IL:WINDOWPROP IL:\w 'IL:PASSTOMAINCOMS - (CADDR IL:|spec|)))))) - (AND (NOT (IL:EQUAL (SLOT-VALUE SELF 'TITLE) - (IL:WINDOWPROP WINDOW 'IL:TITLE))) - (IL:WINDOWPROP WINDOW 'IL:TITLE (SLOT-VALUE SELF 'TITLE))))) - -(DEFMETHOD CREATE-WINDOW ((SELF WEB-EDITOR)) (IL:* IL:\; "10-Apr-86 14:32") - (IL:* IL:\; - "Create the Lisp window for this window but don't open it.") - (LET ((WINDOW (IL:CREATEW (IL:CREATEREGION IL:LASTMOUSEX IL:LASTMOUSEY 25 25) - (SLOT-VALUE SELF 'TITLE) - NIL T))) - (SETF (SLOT-VALUE SELF 'WINDOW) - WINDOW) - (SETUP-WINDOW SELF) - WINDOW)) - -(DEFMETHOD SETUP-WINDOW ((SELF WEB-EDITOR)) (IL:* IL:\; "10-Apr-86 14:32") - (IL:* IL:\; - "Create the Lisp window for this window but don't open it.") - (LET ((WINDOW (SLOT-VALUE SELF 'WINDOW))) - (IL:WINDOWPROP WINDOW 'WEB-EDITOR SELF) - (IL:WINDOWPROP WINDOW 'IL:ICONFN 'WEB-WINDOW-ICON-FN) - (IL:WINDOWPROP WINDOW 'IL:BUTTONEVENTFN 'WEB-WINDOW-BUTTON-EVENT-FN) - (IL:WINDOWADDPROP WINDOW 'IL:AFTERMOVEFN 'WEB-WINDOW-AFTER-MOVE-FN) - (IL:WINDOWADDPROP WINDOW 'IL:RESHAPEFN 'WEB-WINDOW-RESHAPE-FN) - (IL:WINDOWADDPROP WINDOW 'IL:CLOSEFN 'WEB-WINDOW-CLOSE-FN) - (IL:WINDOWPROP WINDOW 'IL:ICONFN 'WEB-WINDOW-ICON-FN)(IL:* IL:\; - "window should be invert so that links etc. can be erased") - (IL:DSPOPERATION 'IL:INVERT WINDOW) (IL:* IL:\; - "kludge: because GRAPHER adds its own COPYBUTTONEVENTFN") - (IL:WINDOWPROP WINDOW 'IL:COPYBUTTONEVENTFN NIL) - (IL:WINDOWPROP WINDOW 'IL:TITLE (SLOT-VALUE SELF 'TITLE)) - WINDOW)) - -(DEFMETHOD DETACH-LISP-WINDOW ((SELF WEB-EDITOR)) (IL:* IL:\; " 8-Apr-87 17:25") - -(IL:* IL:|;;;| "Forget about the current lisp window") - - (LET ((VAL (SLOT-VALUE SELF 'WINDOW))) - (IL:|if| (IL:WINDOWP VAL) - IL:|then| (SETF (SLOT-VALUE SELF 'WINDOW) - NIL) - (IL:WINDOWPROP VAL 'WEB-EDITOR NIL) - (IL:WINDOWPROP VAL 'IL:RIGHTBUTTONFN NIL) - (IL:WINDOWPROP VAL 'IL:BUTTONEVENTFN NIL) - NIL - IL:|else| NIL))) - -(DEFMETHOD SHRINK ((SELF WEB-EDITOR) - &OPTIONAL TOWHAT POS EXPANDFN) - (LET* ((WINDOW (SLOT-VALUE SELF 'WINDOW))) - (IF (IL:WINDOWP WINDOW) - (IL:SHRINKW WINDOW TOWHAT POS EXPANDFN)))) - -(DEFMETHOD SET-OUTER-REGION ((SELF WEB-EDITOR) - REGION NO-UPDATE-FLG) (IL:* IL:\; "16-Apr-86 13:21") - -(IL:* IL:|;;;| "Make Loops Window have region parameters") - - (SETF (SLOT-VALUE SELF 'LEFT) - (IL:|fetch| IL:LEFT IL:|of| REGION)) - (SETF (SLOT-VALUE SELF 'BOTTOM) - (IL:|fetch| IL:BOTTOM IL:|of| REGION)) - (SETF (SLOT-VALUE SELF 'WIDTH) - (IL:|fetch| IL:WIDTH IL:|of| REGION)) - (SETF (SLOT-VALUE SELF 'HEIGHT) - (IL:|fetch| IL:HEIGHT IL:|of| REGION)) - (IL:|if| (NOT NO-UPDATE-FLG) - IL:|then| (UPDATE SELF)) - REGION) - -(DEFMETHOD SET-REGION ((SELF WEB-EDITOR) - REGION &OPTIONAL NO-UPDATE-FLG) (IL:* IL:\; "16-Apr-86 13:22") - -(IL:* IL:|;;;| "Make Loops Window have region parameters") - - (SET-OUTER-REGION SELF (IL:CREATEREGION (IL:|fetch| IL:LEFT IL:|of| REGION) - (IL:|fetch| IL:BOTTOM IL:|of| REGION) - (IL:WIDTHIFWINDOW (IL:|fetch| IL:WIDTH IL:|of| REGION) - (IL:WINDOWPROP (SLOT-VALUE SELF 'WINDOW) - 'IL:BORDER)) - (IL:HEIGHTIFWINDOW (IL:|fetch| IL:HEIGHT IL:|of| REGION) - (SLOT-VALUE SELF 'TITLE) - (IL:WINDOWPROP (SLOT-VALUE SELF 'WINDOW) - 'IL:BORDER))) - NO-UPDATE-FLG)) - -(DEFMETHOD MOVE ((SELF WEB-EDITOR) - X-OR-POS &OPTIONAL Y) (IL:* IL:\; "11-Sep-86 13:24") - -(IL:* IL:|;;;| "Move the window") - - (MOVE1 SELF (OR X-OR-POS (LET* ((ENTIRE-REGION (IL:WINDOWREGION (SLOT-VALUE SELF 'WINDOW))) - (POS (IL:GETBOXPOSITION (IL:|fetch| IL:WIDTH IL:|of| - ENTIRE-REGION) - (IL:|fetch| IL:HEIGHT IL:|of| ENTIRE-REGION) - (IL:|fetch| IL:LEFT IL:|of| ENTIRE-REGION) - (IL:|fetch| IL:BOTTOM IL:|of| ENTIRE-REGION))) - ) - (IL:|create| IL:POSITION - IL:XCOORD IL:_ (IL:PLUS (IL:|fetch| IL:XCOORD - IL:|of| POS) - (IL:DIFFERENCE (SLOT-VALUE - SELF - 'LEFT) - (IL:|fetch| IL:LEFT - IL:|of| ENTIRE-REGION))) - IL:YCOORD IL:_ (IL:PLUS (IL:|fetch| IL:YCOORD - IL:|of| POS) - (IL:DIFFERENCE (SLOT-VALUE - SELF - 'BOTTOM) - (IL:|fetch| IL:BOTTOM - IL:|of| ENTIRE-REGION))) - ))) - Y)) - -(DEFMETHOD MOVE1 ((SELF WEB-EDITOR) - X-OR-POS &OPTIONAL Y) (IL:* IL:\; "13-Aug-86 19:10") - - (IL:* IL:|;;| "Move the window") - - (LET ((NEEDS-UPDATE? (NOT (IL:SUBREGIONP (IL:CONSTANT (IL:CREATEREGION 0 0 IL:SCREENWIDTH - IL:SCREENHEIGHT)) - (IL:WINDOWPROP (SLOT-VALUE SELF 'WINDOW) - 'IL:REGION))))) - (PROG1 (IL:MOVEW (SLOT-VALUE SELF 'WINDOW) - X-OR-POS Y) (IL:* IL:\; - "The left and right IVs are updated by the message AfterMove") - (COND - (NEEDS-UPDATE? (UPDATE SELF)))))) - -(DEFMETHOD AFTER-MOVE ((SELF WEB-EDITOR)) (IL:* IL:\; "10-Apr-86 16:10") - -(IL:* IL:|;;;| "The window has been moved. Update the left and bottom") - - (LET ((REGION (IL:WINDOWPROP (SLOT-VALUE SELF 'WINDOW) - 'IL:REGION))) - (SETF (SLOT-VALUE SELF 'LEFT) - (IL:|fetch| IL:LEFT IL:|of| REGION)) - (SETF (SLOT-VALUE SELF 'BOTTOM) - (IL:|fetch| IL:BOTTOM IL:|of| REGION)))) - -(DEFMETHOD AFTER-RESHAPE ((SELF WEB-EDITOR) - OLD-BITMAP-IMAGE OLD-REGION OLD-SCREEN-REGION) - (IL:* IL:\; "10-Apr-86 16:12") - -(IL:* IL:|;;;| "The window has been reshaped") - - (LET ((REGION (IL:WINDOWPROP (SLOT-VALUE SELF 'WINDOW) - 'IL:REGION))) - (SETF (SLOT-VALUE SELF 'LEFT) - (IL:|fetch| IL:LEFT IL:|of| REGION)) - (SETF (SLOT-VALUE SELF 'BOTTOM) - (IL:|fetch| IL:BOTTOM IL:|of| REGION)) - (SETF (SLOT-VALUE SELF 'WIDTH) - (IL:|fetch| IL:WIDTH IL:|of| REGION)) - (SETF (SLOT-VALUE SELF 'HEIGHT) - (IL:|fetch| IL:HEIGHT IL:|of| REGION)) - (IL:RESHAPEBYREPAINTFN (SLOT-VALUE SELF 'WINDOW) - OLD-BITMAP-IMAGE OLD-REGION OLD-SCREEN-REGION))) - -(DEFMETHOD SCROLL-WINDOW ((SELF WEB-EDITOR) - DSP-X DSP-Y WINDOW-X WINDOW-Y) (IL:* IL:\; "10-Apr-86 14:58") - -(IL:* IL:|;;;| "scroll the window to set the point dspX,dspY in the given window position -- default is the lower left corner. If any x or y is a FIXP, it is treated as a absolute position. If FLOATP, it is treated as a relative position. Return the position of the new lower left corner.") - - (LET* ((WINDOW (SLOT-VALUE SELF 'WINDOW)) - (VISIBLE-REGION (IL:DSPCLIPPINGREGION NIL WINDOW)) - (EXTENT (IL:WINDOWPROP WINDOW 'IL:EXTENT))) (IL:* IL:\; - "figure out what to do with default and relative offsets") - (IL:SETQ WINDOW-X (IL:|if| (NULL WINDOW-X) - IL:|then| 0 - IL:|elseif| (IL:FLOATP WINDOW-X) - IL:|then| (IL:FIX (IL:TIMES WINDOW-X (IL:WINDOWPROP WINDOW - 'IL:WIDTH))) - IL:|else| WINDOW-X)) - (IL:SETQ WINDOW-Y (IL:|if| (NULL WINDOW-Y) - IL:|then| 0 - IL:|elseif| (IL:FLOATP WINDOW-Y) - IL:|then| (IL:FIX (IL:TIMES WINDOW-Y (IL:WINDOWPROP WINDOW - 'IL:HEIGHT))) - IL:|else| WINDOW-Y)) - (IL:SETQ DSP-X (IL:|if| (NULL DSP-X) - IL:|then| (IL:|fetch| IL:LEFT IL:|of| VISIBLE-REGION) - IL:|elseif| (IL:FLOATP DSP-X) - IL:|then| (IL:FIX (IL:TIMES DSP-X (IL:|fetch| IL:WIDTH - IL:|of| EXTENT))) - IL:|else| DSP-X)) - (IL:SETQ DSP-Y (IL:|if| (NULL DSP-Y) - IL:|then| (IL:IMINUS (IL:|fetch| IL:BOTTOM IL:|of| - VISIBLE-REGION)) - IL:|elseif| (IL:FLOATP DSP-Y) - IL:|then| (IL:FIX (IL:TIMES DSP-Y (IL:|fetch| IL:HEIGHT - IL:|of| EXTENT))) - IL:|else| DSP-Y)) - (IL:SCROLLW WINDOW (IL:IPLUS WINDOW-X (IL:IDIFFERENCE (IL:|fetch| IL:LEFT IL:|of| - VISIBLE-REGION - ) - DSP-X)) - (IL:IPLUS WINDOW-Y (IL:IDIFFERENCE (IL:|fetch| IL:BOTTOM IL:|of| - VISIBLE-REGION) - DSP-Y))) (IL:* IL:\; - "return the resulting position") - (IL:SETQ VISIBLE-REGION (IL:DSPCLIPPINGREGION NIL WINDOW)) - (IL:|create| IL:POSITION - IL:XCOORD IL:_ (IL:|fetch| IL:LEFT IL:|of| VISIBLE-REGION) - IL:YCOORD IL:_ (IL:|fetch| IL:BOTTOM IL:|of| VISIBLE-REGION)))) - -(DEFMETHOD CLEAR ((SELF WEB-EDITOR)) (IL:* IL:\; - "empty the window of active regions, return the window") - (LET ((WINDOW (SLOT-VALUE SELF 'WINDOW))) - (IL:WINDOWPROP WINDOW 'IL:GRAPH NIL) - (IL:CLEARW WINDOW) - WINDOW)) - -(DEFMETHOD GET-PROMPT-WINDOW ((SELF WEB-EDITOR) - &OPTIONAL LINES FONT-DEF) (IL:* IL:\; " 8-Apr-87 15:43") - - (IL:* IL:|;;| "Return the current prompt window") - - (LET ((W (IL:GETPROMPTWINDOW (SLOT-VALUE SELF 'WINDOW) - (OR LINES 2) - (OR (IL:FONTCREATE FONT-DEF))))) - (IF FONT-DEF - (IL:DSPFONT (IL:FONTCREATE FONT-DEF) - W)) - W)) - -(DEFMETHOD REMOVE-PROMPT-WINDOW ((SELF WEB-EDITOR)) (IL:* IL:\; " 8-Apr-87 15:43") - (IL:REMOVEPROMPTWINDOW (SLOT-VALUE SELF 'WINDOW))) - -(DEFMETHOD PROMPT-PRINT ((SELF WEB-EDITOR) - PROMPT) (IL:* IL:\; "13-Aug-86 18:46") - - (IL:* IL:|;;| "Prints out a prompt in an attached prompt window") - - (IL:PRIN1 PROMPT (GET-PROMPT-WINDOW SELF))) - -(DEFMETHOD PROMPT-READ ((SELF WEB-EDITOR) - MSG) (IL:* IL:\; "13-Aug-86 19:15") - - (IL:* IL:|;;| "Prompt the user for some input, using an attached prompt window") - - (LET ((P-WINDOW (GET-PROMPT-WINDOW SELF))) - (IL:CLEARW P-WINDOW) - (PROG1 (IL:|PromptRead| MSG P-WINDOW T) - (IL:CLEARW P-WINDOW) - (IL:DETACHWINDOW P-WINDOW) - (IL:CLOSEW P-WINDOW)))) - -(DEFMETHOD PROMPT-FOR-LIST ((SELF WEB-EDITOR) - PROMPT-STR INITIAL-STRING) (IL:* IL:\; " 8-Apr-87 16:44") - -(IL:* IL:|;;;| "Prompt user in prompt window for a list of words.") - - (LET ((P-WINDOW (GET-PROMPT-WINDOW SELF))) - (IL:RESETFORM (IL:TTYDISPLAYSTREAM P-WINDOW) - (IL:CLEARW P-WINDOW) - (IL:TTYIN PROMPT-STR NIL NIL '(IL:NORAISE) - NIL NIL INITIAL-STRING)))) - -(DEFMETHOD PROMPT-FOR-STRING ((SELF WEB-EDITOR) - PROMPT-STR INITIAL-STR) (IL:* IL:\; "13-Aug-86 18:42") - -(IL:* IL:|;;;| "Prompt user in prompt window for a string.") - - (LET ((P-WINDOW (GET-PROMPT-WINDOW SELF)) - VALUE) - (IL:RESETFORM (IL:TTYDISPLAYSTREAM P-WINDOW) - (IL:CLEARW P-WINDOW) - (SETQ VALUE (IL:TTYIN PROMPT-STR NIL NIL '(STRING IL:NORAISE) - NIL NIL INITIAL-STR)) - (IL:CLEARW P-WINDOW)) - (REMOVE-PROMPT-WINDOW SELF) - VALUE)) - -(DEFMETHOD PROMPT-FOR-WORD ((SELF WEB-EDITOR) - &OPTIONAL PROMPT-STR INITIAL-WORD) - (IL:* IL:\; " 8-Apr-87 16:43") - -(IL:* IL:|;;;| "Prompt user in prompt window for a word.") - - (CAR (PROMPT-FOR-LIST SELF PROMPT-STR INITIAL-WORD))) - -(DEFMACRO MOVE-DOWN-P () - '(OR (IL:KEYDOWNP 'IL:MOVE) - (IL:SHIFTDOWNP 'IL:CTRL))) -(IL:DEFINEQ - -(WEB-WINDOW-AFTER-MOVE-FN - (LAMBDA (WINDOW) (IL:* IL:\; "Edited 13-Jul-87 15:59 by Rao") - (IL:* IL:\; "10-Apr-86 16:16") - -(IL:* IL:|;;;| "The SimpleWindow AFTERMOVEFN") - - (LET ((W (IL:WINDOWPROP WINDOW 'WEB-EDITOR))) - (AND W (AFTER-MOVE W))))) - -(WEB-WINDOW-BUTTON-EVENT-FN - (LAMBDA (WINDOW) (IL:* IL:\; "Edited 13-Jul-87 13:38 by Rao") - (IL:* IL:\; "11-Sep-86 13:50") - (LET ((WINDOW-FOR-MENU (IL:WINDOWPROP WINDOW 'WEB-EDITOR))) - (DECLARE (IL:SPECVARS WINDOW-FOR-MENU)) - (IL:TOTOPW WINDOW) - (BUTTON-EVENT-FN WINDOW-FOR-MENU)))) - -(WEB-WINDOW-RESHAPE-FN - (LAMBDA (WINDOW IL:|oldBitmapImage| IL:|oldRegion| IL:|oldScreenRegion|) - (IL:* IL:\; "Edited 12-Jun-87 15:56 by Rao") - (IL:* IL:\; " 9-May-86 10:07") - -(IL:* IL:|;;;| "The RESHAPEFN for a Window") - - (LET ((IL:\w (IL:WINDOWPROP WINDOW 'WEB-EDITOR))) - (AND IL:\w (AFTER-RESHAPE IL:\w IL:|oldBitmapImage| IL:|oldRegion| IL:|oldScreenRegion| - ))))) - -(WEB-WINDOW-CLOSE-FN - (IL:LAMBDA (WINDOW) (IL:* IL:\; "Edited 12-Jun-87 11:42 by Rao") - (IL:* IL:\; - "Remove link back to LoopsWindow") - (IL:WINDOWPROP WINDOW 'WEB-EDITOR NIL))) - -(IL:|PromptRead| - (IL:LAMBDA (PROMPT-STRING WINDOW SAME-LINE?) (IL:* IL:\; "Edited 20-Jul-87 16:20 by Rao") - (IL:* IL:\; - "Printout promptString in promptwindow and return value of expression read there") - (PROG (NEWVALUE) - (IL:RESETLST - (IL:RESETSAVE (IL:TTYDISPLAYSTREAM (OR WINDOW IL:PROMPTWINDOW))) - (IL:RESETSAVE (IL:TTY.PROCESS (IL:THIS.PROCESS))) - (IL:CLRPROMPT) - (IL:RESETSAVE (IL:PRINTLEVEL 4 3)) - (IL:|printout| T PROMPT-STRING) - (IL:|if| SAME-LINE? - IL:|then| (IL:|printout| T "> ") - IL:|else| (IL:|printout| T T "> ")) - (IL:CLEARBUF T T) (IL:* IL:\; - "clear tty buffer because it sometimes has stuff left.") - (IL:ALLOW.BUTTON.EVENTS) - (IL:SETQ NEWVALUE (CAR (IL:ERSETQ (IL:TTYINREAD T T))))) - (RETURN NEWVALUE)))) -) -(IL:DEFINEQ - -(WEB-WINDOW-EXPAND-FN - (LAMBDA (WINDOW) (IL:* IL:\; "Edited 13-Nov-87 12:58 by Rao") - (IL:* IL:\; "19-Feb-85 13:58") - - (IL:* IL:|;;| "When a browser window is expanded, it should be recomputed") - - (LET ((SELF (IL:WINDOWPROP WINDOW 'WEB-EDITOR))) - (RECOMPUTE-IN-PLACE SELF)))) -) - -(DEFUN WEB-WINDOW-ICON-FN (WINDOW ICON DUMMY) - (LET NIL (OR ICON (IL:TITLEDICONW *WEB-EDITOR-TEMPLATE* (ICON-TITLE (IL:WINDOWPROP WINDOW - 'WEB-EDITOR)) - NIL - '(0 . 0) - T - 'IL:BOTTOM - (IL:CONSTANT (LIST (IL:CHARCODE "-") - (IL:CHARCODE IL:SPACE) - (IL:CHARCODE IL:EOL))))))) - -(IL:RPAQQ *WEB-EDITOR-ICON-BM* #*(60 75)OOOOOOOOOOOO@@@@OOOOOOOOOOOOH@@@L@@@@@@@@@@AL@@@L@@@@@@@@@@AF@@@L@@@@@@@@@@AC@@@L@@@@@@@@@@AAH@@L@@@@@@@@@@A@L@@L@@@@@@@@@@A@F@@LOON@@@@@@OO@C@@LOON@@@@@@OO@AH@LOOO@@@@@@OO@@L@LOONH@@@@AOO@@F@LOOND@@@@BOOOOO@L@@@B@@@@DOOOHC@L@@@ACOOLH@@@@C@L@@@@KOOM@@@@@C@L@@@@GOON@@@@@C@L@@@@KOOM@@@@@C@L@@@ACOOLH@@@@C@LOOOB@@@@DOOOHC@LOOOD@@@@BOOOHC@LOOOH@@@@AOOOHC@LOOOD@@@@@OOOHC@LOOOB@@@@@OOOHC@L@@@ACOOO@@@@@C@L@@@@KOOO@@@@@C@L@@@@GOOO@@@@@C@L@@@@COOO@@@@@C@L@@@@COOO@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@L@@@@@@@@@@@@@C@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@ -) - -(IL:RPAQQ *WEB-EDITOR-ICON-MASK* #*(60 75)OOOOOOOOOOOO@@@@OOOOOOOOOOOOH@@@OOOOOOOOOOOOL@@@OOOOOOOOOOOON@@@OOOOOOOOOOOOO@@@OOOOOOOOOOOOOH@@OOOOOOOOOOOOOL@@OOOOOOOOOOOOON@@OOOOOOOOOOOOOO@@OOOOOOOOOOOOOOH@OOOOOOOOOOOOOOL@OOOOOOOOOOOOOON@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@OOOOOOOOOOOOOOO@ -) - -(DEFVAR *WEB-EDITOR-TEMPLATE* (IL:|create| IL:TITLEDICON - IL:ICON IL:_ *WEB-EDITOR-ICON-BM* - IL:MASK IL:_ *WEB-EDITOR-ICON-MASK* - IL:TITLEREG IL:_ (IL:CREATEREGION 5 2 50 30))) - -(IL:RPAQ IL:*D-WINDOW-DEFAULT-STREAM* IL:PROMPTWINDOW) - -(IL:RPAQ WEB-STREAM IL:PROMPTWINDOW) - - - -(IL:* IL:\; "Layout and Display Engine") - - -(IL:RPAQQ IL:|BrowserMargin| 0) - -(IL:RPAQQ IL:|MaxLatticeHeight| 750) - -(IL:RPAQQ IL:|MaxLatticeWidth| 900) -(IL:DECLARE\: IL:DOEVAL@COMPILE IL:DONTCOPY - -(IL:SPECVARS IL:|MaxLatticeHeight| IL:|MaxLatticeWidth|) -) - -(IL:RPAQQ IL:GRAYSHADE1 1) - -(IL:RPAQQ IL:GRAYSHADE2 1025) - -(IL:RPAQQ IL:GRAYSHADE3 64510) - -(IL:RPAQQ IL:GRAYSHADE4 65534) -(IL:DEFINEQ - -(TREE-ROOTS - (IL:LAMBDA (NODE-LST) (IL:* IL:\; "Edited 10-Jul-87 19:22 by Rao") - (IL:* IL:\; "29-Sep-86 19:46") - - (IL:* IL:|;;| "Computes a minimal set of root nodes for a lattice --- those with no connections TO them in list of nodes, or a single node from a cycle of nodes.") - - (PROG ((ROOT-NODES (IL:LDIFFERENCE NODE-LST (IL:|for| IL:|node| IL:|in| NODE-LST - IL:|join| (CHILD-NODES IL:|node| NODE-LST) - ))) - REACHABLE-NODES NOT-REACHABLE-NODES) - (SETQ REACHABLE-NODES (IL:COPY ROOT-NODES)) - (SETQ NOT-REACHABLE-NODES (IL:LDIFFERENCE NODE-LST REACHABLE-NODES)) - (IL:* IL:\; - "recompute the nodes that can't be reached from the current rootNodes") - IL:|RecomputeReachableNodes| - - - (IL:* IL:|;;| "Compute the transitive closure of the set of reachableNodes --- updating the notReachableNodes at the same time") - - (IL:|for| IL:|node| IL:|in| REACHABLE-NODES - IL:|do| (IL:|for| IL:|childNode| IL:|in| (CHILD-NODES IL:|node| NODE-LST - ) - IL:|when| (IL:MEMB IL:|childNode| NOT-REACHABLE-NODES) - IL:|do| - - (IL:* IL:|;;| "put the newly found reachable node at the end of the list, so we will find it later on during this iteration") - - (IL:NCONC1 REACHABLE-NODES IL:|childNode|) - (SETQ NOT-REACHABLE-NODES (IL:DREMOVE IL:|childNode| - NOT-REACHABLE-NODES)))) - (IL:* IL:\; - "if we can reach all the nodes, fine...") - (IL:|if| (NULL NOT-REACHABLE-NODES) - IL:|then| (IL:* IL:\; - "Now need to prune down to a minimal set") - (IL:|bind| (IL:|stable?| IL:_ NIL) IL:|until| IL:|stable?| - IL:|do| (SETQ IL:|stable?| T) - (IL:|for| IL:|node| IL:|in| ROOT-NODES IL:|bind| - IL:|extraRoots| - IL:|do| (SETQ IL:|extraRoots| (IL:DREMOVE IL:|node| - (IL:INTERSECTION - ROOT-NODES - (REACHABLE-NODES! - IL:|node| NODE-LST)))) - (IL:|if| IL:|extraRoots| - IL:|then| (SETQ IL:|stable?| NIL) - (SETQ ROOT-NODES (IL:LDIFFERENCE ROOT-NODES - IL:|extraRoots|)) - (RETURN T)) IL:|finally| (RETURN NIL))) - (IL:* IL:\; - "return the node ids, not the GRAPHNODES") - (RETURN (IL:|for| IL:|node| IL:|in| ROOT-NODES - IL:|collect| (IL:|fetch| IL:NODEID IL:|of| IL:|node|))) - IL:|else| (IL:* IL:\; - "must be a cycle. Select the least prolific node in the cycle as the a new root node.") - (IL:|push| ROOT-NODES (LET ((PROLIFIC-NODE (IL:|for| IL:|node| IL:|in| - - NOT-REACHABLE-NODES - IL:|smallest| - (IL:LENGTH (IL:|fetch| - IL:TONODES - IL:|of| - IL:|node|)))) - ) - (SETQ NOT-REACHABLE-NODES (IL:DREMOVE PROLIFIC-NODE - NOT-REACHABLE-NODES - )) - PROLIFIC-NODE)) - (GO IL:|RecomputeReachableNodes|))))) - -(CHILD-NODES - (IL:LAMBDA (PARENT-NODE NODE-LIST) (IL:* IL:\; "Edited 10-Jul-87 19:23 by Rao") - (IL:* IL:\; " 8-Oct-85 14:15") - (IL:* IL:\; - "Find all GRAPHNODES that are immediatly reachable from this node") - (IL:|for| IL:|label| IL:|in| (IL:|fetch| IL:TONODES IL:|of| PARENT-NODE) - IL:|collect| (IL:|for| IL:|node| IL:|in| NODE-LIST - IL:|thereis| (EQ IL:|label| (IL:|fetch| IL:NODEID IL:|of| - IL:|node|)))))) - -(REACHABLE-NODES! - (IL:LAMBDA (IL:|root| IL:|nodeList|) (IL:* IL:\; "30-Sep-86 10:22") - (IL:* IL:\; IL:|Return| IL:\a - IL:|list| IL:|of| IL:|all| - IL:|nodes| IL:|that| IL:|are| - IL:|reachable| IL:|from| IL:|the| - IL:|root|) - (LET ((IL:|reachableNodes| (LIST IL:|root|))) - (IL:|for| IL:|node| IL:|in| IL:|reachableNodes| - IL:|do| (IL:|for| IL:|childNode| IL:|in| (CHILD-NODES IL:|node| - IL:|nodeList|) - IL:|when| (NOT (IL:MEMB IL:|childNode| IL:|reachableNodes|)) - IL:|do| - - (IL:* IL:\; IL:|put| IL:|the| IL:|newly| IL:|found| IL:|reachable| IL:|node| - IL:|at| IL:|the| IL:|end| IL:|of| IL:|the| IL:|list,| IL:|so| IL:|we| IL:|will| - IL:|find| IL:|it| IL:|later| IL:|on| IL:|during| IL:|this| IL:|iteration|) - - (IL:NCONC1 IL:|reachableNodes| IL:|childNode|))) - IL:|reachableNodes|))) -) - -(DEFMETHOD DISPLAY-BROWSER ((SELF WEB-EDITOR)) (IL:* IL:\; "29-Sep-86 12:15") - (IL:* IL:\; "New method template") - (LET ((NODELST (AND (SLOT-VALUE SELF 'STARTING-LIST) - (GET-NODE-LIST SELF (SLOT-VALUE SELF 'STARTING-LIST) - (SLOT-VALUE SELF 'GOOD-LIST))))) - (COND - (NODELST (IL:SHOWGRAPH (IL:LAYOUTGRAPH NODELST (TREE-ROOTS NODELST) - (SLOT-VALUE SELF 'GRAPH-FORMAT) - (SLOT-VALUE SELF 'BROWSE-FONT)) - (SLOT-VALUE SELF 'WINDOW) - NIL NIL (SLOT-VALUE SELF 'TOP-ALIGN)) - (IL:* IL:\; - "kludge to reset the window props") - (SETUP-WINDOW SELF)) - (T (CLEAR SELF))))) - -(DEFMETHOD BROWSER-OBJECTS ((IL:|self| WEB-EDITOR)) (IL:* IL:\; "28-May-84 12:58") - (IL:* IL:\; - "Return a list of all the objects shown in the browser") - (IL:|for| IL:|node| IL:|in| (IL:|fetch| IL:GRAPHNODES - IL:|of| (IL:WINDOWPROP (SLOT-VALUE IL:|self| - 'WINDOW) - 'IL:GRAPH)) - IL:|when| (IL:NLISTP (CAR IL:|node|)) IL:|collect| (CAR IL:|node|))) - -(DEFMETHOD GET-NODE-LIST ((SELF WEB-EDITOR) - BROWSE-LIST GOOD-LIST) (IL:* IL:\; "21-Mar-85 14:09") - - (IL:* IL:|;;| "Compute the node data structures of the tree starting at browseList. If goodList is given, only include elements of it. If goodList=T make it be browseList.") - - (DECLARE (IL:GLOBALVARS IL:WHITESHADE)) - (COND - ((EQ GOOD-LIST T) - (IL:SETQ GOOD-LIST BROWSE-LIST))) - (PROG (SUBS PAIR NODE (OLD-NODES (IL:|fetch| IL:GRAPHNODES IL:|of| - (IL:WINDOWPROP (SLOT-VALUE - SELF - 'WINDOW) - 'IL:GRAPH))) - (OBJ-LIST (CONS))) - - (IL:* IL:|;;| "first make objList which is a list of pairs (object . objName). objName will be used as a title for a node in the browser. This structure will be replaced by a graphNode when it is processed. The nodeID of the graphNode will be the object, and the label will be the name.") - - (IL:|for| IL:|objOrName| IL:|in| BROWSE-LIST - IL:|do| (AND (IL:SETQ PAIR (OBJ-NAME-PAIR SELF IL:|objOrName|)) - (NOT (IL:FASSOC (CAR PAIR) - (CAR OBJ-LIST))) - (IL:TCONC OBJ-LIST PAIR))) - - (IL:* IL:|;;| "Now MAP ON list so pair can be replaced by graphNode") - - (IL:|for| PAIR IL:|name| IL:|obj| IL:|subObjs| IL:|on| (CAR OBJ-LIST) - IL:|when| (IL:NLISTP (IL:SETQ IL:|name| (CDAR PAIR))) - IL:|do| (IL:SETQ IL:|subObjs| (CONS)) - (IL:|for| IL:|sub| IL:|objPair| IL:|obj1| IL:|in| (GET-SUBS SELF - (IL:SETQ IL:|obj| - (CAAR PAIR))) - IL:|do| - - (IL:* IL:|;;| "ObjNamePair returns NIL for destroyed objects. include only members of goodList in subs if given. Add to objList only once") - - (IL:SETQ IL:|obj1| (COND - ((EQ (CAR IL:|sub|) - 'IL:|Link Parameters|) - (CADR IL:|sub|)) - (T IL:|sub|))) - (COND - ((IL:SETQ IL:|objPair| (OBJ-NAME-PAIR SELF IL:|obj1|)) - (COND - ((NOT (IL:FASSOC IL:|obj1| (CAR OBJ-LIST))) - (IL:TCONC OBJ-LIST IL:|objPair|))) - (IL:TCONC IL:|subObjs| IL:|sub|)))) - (RPLACA PAIR (IL:SETQ NODE (OR (IL:FASSOC IL:|obj| OLD-NODES) - (IL:|create| IL:GRAPHNODE - IL:NODEID IL:_ IL:|obj| - IL:NODEBORDER IL:_ - (LIST (IL:ADD1 (SLOT-VALUE SELF - 'BOX-LINE-WIDTH)) - IL:WHITESHADE))))) - (IL:|replace| IL:TONODES IL:|of| NODE IL:|with| (CAR IL:|subObjs|)) - (IL:|replace| IL:NODELABEL IL:|of| NODE IL:|with| IL:|name|) - (IL:|replace| IL:NODEFONT IL:|of| NODE IL:|with| (SLOT-VALUE - SELF - 'BROWSE-FONT)) - (IL:|replace| IL:NODEWIDTH IL:|of| NODE IL:|with| NIL) - (IL:|replace| IL:NODEHEIGHT IL:|of| NODE IL:|with| NIL)) - (RETURN (CAR OBJ-LIST)))) - -(DEFMETHOD OBJ-NAME-PAIR ((IL:|self| WEB-EDITOR) - IL:|obj|) - - (IL:* IL:|;;| "Make a pair (object . objName) where objName is label to be used in browser") - - (LET NIL (IL:|if| (NULL IL:|obj|) - IL:|then| NIL - IL:|elseif| (AND (SLOT-VALUE IL:|self| 'GOOD-LIST) - (NOT (IL:FMEMB IL:|obj| (SLOT-VALUE IL:|self| 'GOOD-LIST)))) - IL:|then| NIL - IL:|elseif| (IL:FMEMB IL:|obj| (SLOT-VALUE IL:|self| 'BAD-LIST)) - IL:|then| NIL - IL:|else| (CONS IL:|obj| (GET-DISPLAY-LABEL IL:|self| IL:|obj|))))) - -(DEFMETHOD GRAPH-FITS ((|self| WEB-EDITOR)) (IL:* IL:\; "24-Apr-86 15:00") - -(IL:* IL:|;;;| "Tests if graph fits in region") - - (LET ((|window| (SLOT-VALUE |self| 'WINDOW))) - (LET ((|width| 0) - (|height| 0) - (|region| (IL:WINDOWPROP |window| 'IL:REGION)) - (|nodes| (IL:|fetch| IL:GRAPHNODES IL:|of| (IL:WINDOWPROP |window| 'IL:GRAPH))) - ) - (COND - (|nodes| (IL:SETQ |width| (IL:WIDTHIFWINDOW (IL:IDIFFERENCE (IL:MAX/RIGHT |nodes|) - (IL:MIN/LEFT |nodes|)) - (IL:WINDOWPROP |window| 'IL:BORDER))) - (IL:SETQ |height| (IL:HEIGHTIFWINDOW (IL:IDIFFERENCE (IL:MAX/TOP |nodes|) - (IL:MIN/BOTTOM |nodes|)) - (IL:WINDOWPROP |window| 'IL:TITLE) - (IL:WINDOWPROP |window| 'IL:BORDER))))) - (NOT (OR (IL:IGREATERP |width| (IL:|fetch| IL:WIDTH IL:|of| |region|)) - (IL:IGREATERP |height| (IL:|fetch| IL:HEIGHT IL:|of| |region|))))))) - -(DEFMETHOD NODE-REGION ((IL:|self| WEB-EDITOR) - IL:|object|) (IL:* IL:\; "10-Dec-84 18:26") - - (IL:* IL:|;;| "what region does the object occupy in the display stream?") - - (LET ((IL:|node| (IL:FASSOC (COND - ((IL:LITATOM IL:|object|) - (IL:SETQ IL:|object| (IL:|GetObjectRec| IL:|object|))) - (T IL:|object|)) - (IL:|fetch| IL:GRAPHNODES IL:|of| (IL:WINDOWPROP - (SLOT-VALUE IL:|self| - 'WINDOW) - 'IL:GRAPH))))) - (IL:|if| IL:|node| - IL:|then| (IL:|create| IL:REGION - IL:LEFT IL:_ (IL:IDIFFERENCE (IL:|fetch| IL:XCOORD - IL:|of| (IL:|fetch| - IL:NODEPOSITION - IL:|of| IL:|node| - )) - (IL:IQUOTIENT (IL:|fetch| IL:NODEWIDTH - IL:|of| IL:|node|) - 2)) - IL:BOTTOM IL:_ (IL:IDIFFERENCE (IL:|fetch| IL:YCOORD - IL:|of| (IL:|fetch| - IL:NODEPOSITION - IL:|of| - IL:|node|)) - (IL:IQUOTIENT (IL:|fetch| IL:NODEHEIGHT - IL:|of| IL:|node|) - 2)) - IL:WIDTH IL:_ (IL:|fetch| IL:NODEWIDTH IL:|of| IL:|node|) - IL:HEIGHT IL:_ (IL:|fetch| IL:NODEHEIGHT IL:|of| IL:|node|)) - ))) - -(DEFMETHOD RECOMPUTE ((SELF WEB-EDITOR) - &OPTIONAL DONT-RESHAPE-FLG) (IL:* IL:\; " 8-Apr-87 14:42") - (IL:* IL:\; - "Recompute the browseGraph in the same window") - (PROG ((GRAPH-FITS (GRAPH-FITS SELF))) - (DISPLAY-BROWSER SELF) - (COND - ((OR DONT-RESHAPE-FLG (NULL GRAPH-FITS)) (IL:* IL:\; - "Dont Reshape or rescroll. Assume window wants to stay the same size") - ) - (T (SHAPE-TO-HOLD SELF)))) - SELF) - -(DEFMETHOD RECOMPUTE-IN-PLACE ((IL:|self| WEB-EDITOR)) (IL:* IL:\; "10-Dec-84 18:27") - -(IL:* IL:|;;;| "recompute the graph, maintaining the current position") - - (LET* ((IL:|visibleRegion| (IL:DSPCLIPPINGREGION NIL (SLOT-VALUE IL:|self| 'WINDOW))) - (IL:\x (IL:|fetch| IL:LEFT IL:|of| IL:|visibleRegion|)) - (IL:\y (IL:|fetch| IL:BOTTOM IL:|of| IL:|visibleRegion|))) - (IL:* IL:\; - "if we want to RecomputeInPlace, we must want the window to be kept the same") - (RECOMPUTE IL:|self| T) (IL:* IL:\; - "we had to save x and y because visibleRegion gets clobbered by Recompute! Suprise!") - (SCROLL-WINDOW IL:|self| IL:\x IL:\y))) - -(DEFMETHOD RECOMPUTE-LABELS ((|self| WEB-EDITOR)) (IL:* IL:\; "27-Feb-85 11:27") - (IL:* IL:\; - "recompute the graph, including the labels") - (CLEAR-LABEL-CACHE |self| T) - (RECOMPUTE |self|)) - -(DEFMETHOD RECOMPUTE-IF-OPEN ((WEB-EDITOR WEB-EDITOR)) (IL:* IL:\; "27-Aug-86 12:37") - (IF (IL:OPENWP (SLOT-VALUE WEB-EDITOR 'WINDOW)) - (RECOMPUTE WEB-EDITOR))) - -(DEFMETHOD CLEAR-LABEL-CACHE ((WEB-EDITOR WEB-EDITOR) - OBJECTS) (IL:* IL:\; " 5-Dec-85 12:02") - (LET (CACHED-LABEL) - - (IL:* IL:|;;| "Delete the cached label for these items") - - (COND - ((EQ OBJECTS T) - (SETF (SLOT-VALUE WEB-EDITOR 'LABEL-CACHE) - NIL)) - (T (IF (ATOM OBJECTS) - (SETQ OBJECTS (CONS OBJECTS))) - (DOLIST (OBJ OBJECTS) - (IF (SETQ CACHED-LABEL (IL:ASSOC OBJ (SLOT-VALUE WEB-EDITOR 'LABEL-CACHE))) - (SETF (SLOT-VALUE WEB-EDITOR 'LABEL-CACHE) - (IL:DREMOVE CACHED-LABEL (SLOT-VALUE WEB-EDITOR 'LABEL-CACHE))))))))) - -(DEFMETHOD OBJECT-FROM-LABEL ((SELF WEB-EDITOR) - LABEL) (IL:* IL:\; " 4-Jan-85 18:20") - - (IL:* IL:|;;| "What object has this label?") - - (LET ((OBJECT-NODE (IL:|for| IL:|node| IL:|in| (IL:|fetch| IL:GRAPHNODES - IL:|of| (IL:WINDOWPROP - (SLOT-VALUE SELF - 'WINDOW) - 'IL:GRAPH)) - IL:|thereis| (IL:EQUAL LABEL (IL:|fetch| IL:NODELABEL IL:|of| - IL:|node|))))) - (IL:|if| (IL:NLISTP (CAR OBJECT-NODE)) - IL:|then| (CAR OBJECT-NODE) - IL:|else| NIL))) - -(DEFMETHOD CHANGE-FONT-SIZE ((WEB-EDITOR WEB-EDITOR) - &OPTIONAL SIZE) (IL:* IL:\; "13-Dec-84 13:04") - (IL:* IL:\; - "Change the font size from whatever it is to size") - (WHEN (OR SIZE (SETQ SIZE (IL:MENU (IL:|create| IL:MENU - IL:TITLE IL:_ "Select Desired Size" - IL:CHANGEOFFSETFLG IL:_ T - IL:ITEMS IL:_ '(("Abort" NIL) - 8 10 12 16))))) - (SETF (SLOT-VALUE WEB-EDITOR 'BROWSE-FONT) - (IL:FONTCREATE `(,(SLOT-VALUE WEB-EDITOR 'BROWSE-FONT-FAMILY) - ,SIZE - ,(SLOT-VALUE WEB-EDITOR 'BROWSE-FONT-FACE)))) - (IL:* IL:\; - "clear out the label cache!") - (RECOMPUTE-LABELS WEB-EDITOR))) - -(DEFMETHOD CHANGE-FORMAT ((|self| WEB-EDITOR) - &OPTIONAL |format|) (IL:* IL:\; "21-Apr-84 19:52") - (IL:* IL:\; - "Change format between Lattice and Tree") - (COND - ((IL:LISTP |format|) - (SETF (SLOT-VALUE |self| 'GRAPH-FORMAT) - |format|)) - ((SETQ |format| (IL:MENU (IL:|create| IL:MENU - IL:ITEMS IL:_ (SLOT-VALUE |self| 'GRAPH-FORMAT-CHOICES)))) - (SETF (SLOT-VALUE |self| 'GRAPH-FORMAT) - |format|))) - (RECOMPUTE |self|)) - -(DEFMETHOD CHANGE-MAX-LABEL-SIZE ((SELF WEB-EDITOR) - NEW-MAX-WIDTH NEW-MAX-LINES) - (IL:* IL:\; "13-Dec-84 13:05") - (IL:* IL:\; - "change the max label dimensions and redisplay the nodes -- if new size is NULL, don't change") - (IL:|if| NEW-MAX-LINES - IL:|then| (SETF (SLOT-VALUE SELF 'LABEL-MAX-LINES) - NEW-MAX-LINES)) - (IL:|if| NEW-MAX-WIDTH - IL:|then| (SETF (SLOT-VALUE SELF 'LABEL-MAX-CHARS-WIDTH) - NEW-MAX-WIDTH)) (IL:* IL:\; - "clear out the label cache") - (RECOMPUTE-LABELS SELF)) - -(DEFMETHOD SHAPE-TO-HOLD ((SELF WEB-EDITOR)) (IL:* IL:\; "13-Jan-87 16:52") - - (IL:* IL:|;;| "Shape the browse window to just hold the nodes with BrowserMargin to spare") - - (LET* ((WINDOW (SLOT-VALUE SELF 'WINDOW)) - (REGION (IL:WINDOWPROP WINDOW 'IL:REGION)) - (NODES (IL:|fetch| IL:GRAPHNODES IL:|of| (IL:WINDOWPROP WINDOW 'IL:GRAPH))) - (MIN-WIDTH (IL:IPLUS 5 (IL:STRINGWIDTH (SLOT-VALUE SELF 'TITLE) - (IL:DSPFONT NIL IL:|WindowTitleDisplayStream|)))) - (MIN-HEIGHT (IL:FONTHEIGHT (IL:DSPFONT NIL WINDOW))) - LEFT BOTTOM HEIGHT WIDTH RIGHT TOP) - (IF NODES - (PROGN (SETQ LEFT (IL:MIN/LEFT NODES)) - (SETQ BOTTOM (IL:MIN/BOTTOM NODES)) - (SETQ RIGHT (IL:MAX/RIGHT NODES)) - (SETQ TOP (IL:MAX/TOP NODES)) - (SETQ WIDTH (IL:IMAX MIN-WIDTH (IL:IMIN IL:|MaxLatticeWidth| - (IL:WIDTHIFWINDOW (IL:PLUS - IL:|BrowserMargin| - (IL:IDIFFERENCE - RIGHT LEFT)) - (IL:WINDOWPROP WINDOW 'IL:BORDER)))) - ) - (SETQ HEIGHT (IL:IMAX MIN-HEIGHT (IL:IMIN IL:|MaxLatticeHeight| - (IL:PLUS IL:|BrowserMargin| - (IL:IDIFFERENCE TOP BOTTOM))))) - (UNLESS (AND (IL:EQP WIDTH (IL:|fetch| IL:WIDTH IL:|of| REGION)) - (IL:EQP (IL:HEIGHTIFWINDOW HEIGHT (IL:WINDOWPROP WINDOW 'IL:TITLE) - (IL:WINDOWPROP WINDOW 'IL:BORDER)) - (IL:|fetch| IL:HEIGHT IL:|of| REGION))) - (SET-REGION SELF (IL:CREATEREGION (IL:|fetch| IL:LEFT IL:|of| REGION) - (IL:|fetch| IL:BOTTOM IL:|of| REGION) - WIDTH HEIGHT) - NIL))) - - (IL:* IL:|;;| "ELSE") - - (SET-REGION SELF (IL:CREATEREGION (IL:|fetch| IL:LEFT IL:|of| REGION) - (IL:|fetch| IL:BOTTOM IL:|of| REGION) - MIN-WIDTH MIN-HEIGHT))))) - -(DEFMETHOD GET-DISPLAY-LABEL ((SELF WEB-EDITOR) - OBJECT) - -(IL:* IL:|;;;| "get the display label. use the cache if it provides the answer; if not, and maxLabelWidth is set, use it to compute the appropriate bit map and then cache the result.") - - (LET ((CACHED-LABEL (IL:ASSOC OBJECT (SLOT-VALUE SELF 'LABEL-CACHE)))) - (IF CACHED-LABEL - (CDR CACHED-LABEL) - (LET ((NEW-LABEL (BOX-PRINT-STRING (GET-LABEL SELF OBJECT) - (SLOT-VALUE SELF 'LABEL-MAX-CHARS-WIDTH) - (SLOT-VALUE SELF 'LABEL-MAX-LINES) - (SLOT-VALUE SELF 'BROWSE-FONT)))) - (IL:|if| (IL:LISTP NEW-LABEL) - IL:|then| (IL:* IL:\; - "GRAPHER dies if the label is a list") - (IL:SETQ NEW-LABEL (IL:MKSTRING NEW-LABEL))) - (PUSH (CONS OBJECT NEW-LABEL) - (SLOT-VALUE SELF 'LABEL-CACHE)) - NEW-LABEL)))) - -(DEFMETHOD BOX-NODE ((SELF WEB-EDITOR) - OBJECT &OPTIONAL KEEP-PREVIOUS-BOX) (IL:* IL:\; " 8-Apr-87 18:34") - "Puts a box around the node in the graph representing the object" - - (IL:* IL:|;;| - "If there was a previously boxed node, remove the box from around it and set it to nil") - - (WHEN (AND (NOT KEEP-PREVIOUS-BOX) - DESTINATION-BROWSER - (SLOT-VALUE DESTINATION-BROWSER 'BOXED-NODE)) - (HIGHLIGHT-NODE DESTINATION-BROWSER (SLOT-VALUE DESTINATION-BROWSER 'BOXED-NODE) - (SLOT-VALUE SELF 'BOX-LINE-WIDTH) - IL:WHITESHADE) - (SETF (SLOT-VALUE DESTINATION-BROWSER 'BOXED-NODE) - NIL)) - (SETQ DESTINATION-BROWSER SELF) (IL:* IL:\; "update the global") - (HIGHLIGHT-NODE SELF OBJECT (SLOT-VALUE SELF 'BOX-LINE-WIDTH) - IL:BLACKSHADE) - (SETF (SLOT-VALUE SELF 'BOXED-NODE) - OBJECT)) - -(DEFMETHOD UNMARK-NODES ((IL:|self| WEB-EDITOR)) (IL:* IL:\; "10-Dec-84 12:27") - (IL:* IL:\; - "clear the graph nodes, removing all shading and highlighting") - (REMOVE-HIGHLIGHTS IL:|self|) - (REMOVE-SHADING IL:|self|)) - -(DEFMETHOD HIGHLIGHT-NODE ((SELF WEB-EDITOR) - OBJECT WIDTH SHADE) (IL:* IL:\; "13-Dec-85 15:16") - -(IL:* IL:|;;;| "highlight a node by surronding it with a shaded box") - - (LET ((NODE (IL:FASSOC OBJECT (IL:|fetch| IL:GRAPHNODES IL:|of| (IL:WINDOWPROP - (SLOT-VALUE SELF - 'WINDOW) - 'IL:GRAPH))))) - (AND NODE (DISPLAY-NODE-HIGHTLIGHTS SELF NODE SHADE WIDTH)))) - -(DEFMETHOD SHADE-NODE ((IL:|self| WEB-EDITOR) - IL:|object| IL:|shade|) (IL:* IL:\; "15-Jan-87 18:34") - - (IL:* IL:|;;| "shade the background of a node") - - (LET ((IL:|node| (IL:FASSOC (COND - ((IL:LITATOM IL:|object|) - (IL:SETQ IL:|object| (IL:|GetObjectRec| IL:|object|))) - (T IL:|object|)) - (IL:|fetch| IL:GRAPHNODES IL:|of| (IL:WINDOWPROP - (SLOT-VALUE IL:|self| - 'WINDOW) - 'IL:GRAPH))))) - (IL:|if| IL:|node| - IL:|then| (IL:|if| (IL:BITMAPP (IL:|fetch| IL:NODELABEL IL:|of| IL:|node| - )) - IL:|then| - - (IL:* IL:|;;| "Need to forget the old bitmap, in case it already has a shade blt'ed into it. This will fail if the GetDisplayLabel msg returns something different from the previous value, but what can you do?") - - (CLEAR-LABEL-CACHE IL:|self| IL:|object|) - (LET ((IL:|newLabel| (GET-DISPLAY-LABEL IL:|self| IL:|object|))) - (IL:|replace| IL:NODELABEL IL:|of| IL:|node| - IL:|with| IL:|newLabel|) - (IL:|if| (AND IL:|shade| (IL:BITMAPP IL:|newLabel|)) - IL:|then| (IL:BITBLT NIL NIL NIL IL:|newLabel| NIL - NIL NIL NIL 'IL:TEXTURE - 'IL:PAINT IL:|shade|)))) - (DISPLAY-NODE-SHADING IL:|self| IL:|node| IL:|shade|)))) - -(DEFMETHOD DISPLAY-NODE-HIGHTLIGHTS ((SELF WEB-EDITOR) - NODE SHADE BOX-WIDTH) - (IL:RESET/NODE/BORDER NODE (COND - (SHADE (LIST BOX-WIDTH SHADE)) - (T BOX-WIDTH)) - (SLOT-VALUE SELF 'WINDOW))) - -(DEFMETHOD DISPLAY-NODE-SHADING ((SELF WEB-EDITOR) - NODE SHADE) (IL:* IL:\; "13-Dec-85 15:13") - (IL:* IL:\; "New method template") - (IL:RESET/NODE/LABELSHADE NODE (OR SHADE IL:WHITESHADE) - (SLOT-VALUE SELF 'WINDOW))) - -(DEFMETHOD REMOVE-HIGHLIGHTS ((IL:|self| WEB-EDITOR)) (IL:* IL:\; "13-Dec-85 15:16") - -(IL:* IL:|;;;| "gets rid of all highlighting in the lattice") - - (IL:|for| IL:|node| IL:|in| (IL:|fetch| IL:GRAPHNODES - IL:|of| (IL:WINDOWPROP (SLOT-VALUE IL:|self| - 'WINDOW) - 'IL:GRAPH)) - IL:|do| (DISPLAY-NODE-HIGHTLIGHTS IL:|self| IL:|node| NIL)) - (SETF (SLOT-VALUE IL:|self| 'BOXED-NODE) - NIL)) - -(DEFMETHOD REMOVE-SHADING ((IL:|self| WEB-EDITOR)) (IL:* IL:\; "13-Dec-85 15:14") - -(IL:* IL:|;;;| "gets rid of all shading in the lattice") - - (IL:|for| IL:|node| IL:|in| (IL:|fetch| IL:GRAPHNODES - IL:|of| (IL:WINDOWPROP (SLOT-VALUE IL:|self| - 'WINDOW) - 'IL:GRAPH)) - IL:|do| (DISPLAY-NODE-SHADING IL:|self| IL:|node| IL:WHITESHADE))) - -(DEFMETHOD FLASH-NODE ((IL:|self| WEB-EDITOR) - IL:|node| IL:N IL:|flashTime| IL:|leaveFlipped?|) - (IL:* IL:\; "12-Dec-84 16:09") - (IL:* IL:\; "Flip node N times") - (IL:SETQ IL:|node| (IL:FASSOC (COND - ((IL:LITATOM IL:|node|) - (IL:SETQ IL:|node| (IL:|GetObjectRec| IL:|node|))) - (T IL:|node|)) - (IL:|fetch| IL:GRAPHNODES IL:|of| (IL:WINDOWPROP - (SLOT-VALUE IL:|self| - 'WINDOW) - 'IL:GRAPH)))) - (IL:|if| IL:|node| - IL:|then| (IL:|for| IL:\i IL:|from| 1 IL:|to| (OR IL:N 3) - IL:|do| (IL:FLIPNODE IL:|node| (SLOT-VALUE IL:|self| 'WINDOW)) - (IL:DISMISS (OR IL:|flashTime| 300)) - (IL:FLIPNODE IL:|node| (SLOT-VALUE IL:|self| 'WINDOW)) - (IL:DISMISS (OR IL:|flashTime| 300))) - (IL:|if| IL:|leaveFlipped?| - IL:|then| (IL:FLIPNODE IL:|node| (SLOT-VALUE IL:|self| 'WINDOW))))) - -(DEFMETHOD FLIP-NODE ((SELF WEB-EDITOR) - OBJECT) (IL:* IL:\; "13-Dec-85 15:18") - (IL:* IL:\; - "Inverts the video around the node in the graph representing the object") - (LET ((NODE (IL:FASSOC OBJECT (IL:|fetch| IL:GRAPHNODES IL:|of| (IL:WINDOWPROP - (SLOT-VALUE SELF - 'WINDOW) - 'IL:GRAPH))))) - (AND NODE (DISPLAY-NODE-SHADING SELF NODE (IL:INVERTED/SHADE/FOR/GRAPHER (IL:|fetch| - IL:NODELABELSHADE - IL:|of| - NODE)))))) - -(DEFMETHOD POSITION-NODE ((SELF WEB-EDITOR) - OBJECT WINDOW-X WINDOW-Y) (IL:* IL:\; "10-Dec-84 18:24") - -(IL:* IL:|;;;| "scrolls the window so that the node is in the given position of the window. If windowX or windowY is a FLOATP, it it taken to be a window-relative postion; if a FIXP, it is a window-absolute position.") - - (LET ((REGION (NODE-REGION SELF OBJECT))) - (IL:|if| REGION - IL:|then| (SCROLL-WINDOW SELF (IL:|fetch| IL:LEFT IL:|of| REGION) - (IL:|fetch| IL:BOTTOM IL:|of| REGION) - WINDOW-X WINDOW-Y)))) -(IL:DEFINEQ - -(BOX-PRINT-STRING - (IL:LAMBDA (STRING MAX-CHARS-WIDTH MAX-LINES FONT OLD-BITMAP) - (IL:* IL:\; "Edited 29-Jan-88 15:06 by Rao") - - (IL:* IL:|;;| - "return a bitmap containing the string, in the given font, with MAX-WIDTH at most width") - (IL:* IL:\; - "sizes of NULL or 0 mean no max size") - (IL:SETQ MAX-CHARS-WIDTH (OR MAX-CHARS-WIDTH 0)) - (IL:SETQ MAX-LINES (OR MAX-LINES 0)) - (IL:|if| (IL:ZEROP MAX-CHARS-WIDTH) - IL:|then| (IL:* IL:\; - "no max width, then just return the STRING") - STRING - IL:|else| - (PROG ((MAX-WIDTH (IL:ITIMES MAX-CHARS-WIDTH (IL:STRINGWIDTH "A" FONT))) - (NCHARS (IL:NCHARS STRING)) - (NLINES 0) - (SPOS 0) - (REGION (IL:CONSTANT (IL:|create| IL:REGION))) - (TRUE-MAX-WIDTH 0) - NEXTPOS DSP SUBSTR) - (IL:SETQ STRING (IL:MKSTRING STRING)) (IL:* IL:\; - "we need to find the size of the resultant bitmap") - IL:NEXTBREAK - (IL:|if| (IL:ILESSP SPOS NCHARS) - IL:|then| (IL:|add| NLINES 1) (IL:* IL:\; - "at least one character, even if exceed MAX-WIDTH") - (IL:SETQ NEXTPOS (IL:IMAX 1 (CAR (BREAK-STRING-FOR-BOXING - (IL:SUBSTRING STRING (IL:ADD1 SPOS) - -1) - MAX-WIDTH FONT)))) - (IL:SETQ TRUE-MAX-WIDTH (IL:IMAX TRUE-MAX-WIDTH (IL:STRINGWIDTH - (IL:SUBSTRING STRING - (IL:ADD1 SPOS) - (IL:IPLUS SPOS NEXTPOS) - ) - FONT))) - (IL:|add| SPOS NEXTPOS) - (GO IL:NEXTBREAK)) - (IL:|if| (NOT (IL:ZEROP MAX-LINES)) - IL:|then| (IL:SETQ NLINES (IL:IMIN MAX-LINES NLINES))) - (IL:* IL:\; - "that we have the size, lets build it") - (IL:SETQ DSP (IL:DSPCREATE - (IL:|if| (AND OLD-BITMAP - (NOT (OR (IL:GREATERP TRUE-MAX-WIDTH (IL:BITMAPWIDTH - OLD-BITMAP)) - (IL:GREATERP (IL:ITIMES NLINES - (IL:FONTPROP FONT - 'IL:HEIGHT)) - (IL:BITMAPHEIGHT OLD-BITMAP))))) - IL:|then| OLD-BITMAP - IL:|else| (IL:BITMAPCREATE TRUE-MAX-WIDTH (IL:ITIMES - NLINES - (IL:FONTPROP FONT - 'IL:HEIGHT)))))) - (IL:DSPFONT FONT DSP) - (IL:DSPRESET DSP) - (IL:SETQ SPOS 0) - (IL:|replace| IL:LEFT IL:|of| REGION IL:|with| 0) - (IL:|replace| IL:WIDTH IL:|of| REGION IL:|with| TRUE-MAX-WIDTH) - (IL:|replace| IL:HEIGHT IL:|of| REGION IL:|with| (IL:FONTPROP FONT - 'IL:HEIGHT)) - (IL:|replace| IL:BOTTOM IL:|of| REGION IL:|with| (IL:ITIMES - NLINES - (IL:FONTPROP FONT - 'IL:HEIGHT))) - IL:NEXTPIECE - (IL:|add| NLINES -1) - (IL:|if| (IL:ILESSP SPOS NCHARS) - IL:|then| (IL:SETQ NEXTPOS (IL:IMAX 1 (CAR (BREAK-STRING-FOR-BOXING - (IL:SUBSTRING STRING (IL:ADD1 SPOS) - -1) - TRUE-MAX-WIDTH FONT)))) - (IL:SETQ SUBSTR (IL:SUBSTRING STRING (IL:ADD1 SPOS) - (IL:IPLUS NEXTPOS SPOS))) - (IL:|replace| IL:BOTTOM IL:|of| REGION - IL:|with| (IL:IDIFFERENCE (IL:|fetch| IL:BOTTOM IL:|of| REGION) - (IL:|fetch| IL:HEIGHT IL:|of| REGION))) - (IL:|if| (AND (IL:ZEROP NLINES) - (IL:ILESSP (IL:IPLUS NEXTPOS SPOS) - NCHARS)) - IL:|then| (IL:* IL:\; "we need to abbreviate!") - (IL:CENTERPRINTINREGION (IL:CONCAT (IL:SUBSTRING SUBSTR 1 -3) - "...") - REGION DSP) - (GO IL:ALLDONE) - IL:|else| (IL:* IL:\; "out this piece") - (IL:CENTERPRINTINREGION SUBSTR REGION DSP) - (IL:|add| SPOS NEXTPOS) - (GO IL:NEXTPIECE))) - IL:ALLDONE - (RETURN (IL:DSPDESTINATION NIL DSP)))))) - -(BREAK-STRING-FOR-BOXING - (IL:LAMBDA (IL:MSG IL:WIDTH IL:FONT) (IL:* IL:\; "11-Dec-84 10:29") - - (IL:* IL:\; IL:|Stolen| IL:|from| IL:|the| IL:|function| IL:ICONW.FORMATLINE - IL:-- IL:|modified| IL:|to| IL:|try| IL:|to| IL:|break| IL:|at| "word" - IL:|boundaries,| IL:|whatever| IL:|they| IL:|are|) - - (IL:* IL:\; IL:\a IL:|list| IL:|of| IL:|the| IL:|char#| IL:|relative| IL:|to| - IL:|char| 1 IL:|of| IL:|where| IL:|to| IL:|break| IL:|next| IL:|line,| IL:|and| - IL:|how| IL:|much| IL:|space| IL:|was| LEFT IL:|over| - (IL:|for| IL:|centering| IL:&\c)) - - (COND - (IL:MSG (IL:* IL:\; IL:|there| IL:|really| - IL:|is| IL:\a IL:|title,| IL:|go| - IL:|ahead| IL:|and| IL:|format| - IL:|the| IL:|next| IL:|line.|) - (IL:|bind| (IL:TX IL:_ 0) - (IL:LASTB IL:_ 0) - (IL:CH IL:_ 0) - (IL:TMSG IL:_ (IL:OPENSTRINGSTREAM IL:MSG)) - (IL:MSGLEN IL:_ (IL:NCHARS IL:MSG)) IL:|for| IL:I IL:|from| 1 - IL:|by| 1 - IL:|do| (IL:* IL:\; IL:|thru| IL:|the| - IL:|characters| IL:|one| IL:|by| - IL:|one.|) - (COND - ((IL:IGREATERP IL:TX IL:WIDTH) (IL:* IL:\; IL:|past| IL:|the| - IL:|right| IL:|margin.| - IL:|Time| IL:|to| IL:|stop.|) - (IL:CLOSEF? IL:TMSG) - (RETURN (COND - ((IL:LISTP IL:LASTB) (IL:* IL:\; IL:|is| IL:\a IL:|space| - IL:|we| IL:|can| IL:|break| IL:|the| - IL:|line| IL:|at.| - IL:|Break| IL:|there.|) - IL:LASTB) - (T - - (IL:* IL:\; IL:|were| IL:|no| IL:|spaces| IL:|on| IL:|this| IL:|line.| - IL:|Break| IL:|after| IL:|the| IL:|last| IL:|character| IL:|that| IL:|did| - IL:|fit.|) - - (CONS (IL:IDIFFERENCE IL:I 2) - (IL:IDIFFERENCE IL:WIDTH (IL:IDIFFERENCE IL:TX - (IL:CHARWIDTH IL:CH - IL:FONT)))))))) - ((IL:EOFP IL:TMSG) (IL:* IL:\; IL:|was| IL:|the| - IL:|last| IL:|character.|) - (IL:CLOSEF? IL:TMSG) - (RETURN (CONS (IL:SUB1 IL:I) - (IL:IDIFFERENCE IL:WIDTH IL:TX)))) - (T (IL:* IL:\; IL:|at| IL:|the| - IL:|next| IL:|character.|) - (IL:SETQ IL:CH (IL:BIN IL:TMSG)) - (IL:SELCHARQ IL:CH - ((IL:SPACE IL:\. IL:\: IL:\; IL:\, / IL:\\ IL:* - IL:\#) - - (IL:* IL:\; IL:|where| IL:|word| IL:|breaks| IL:|are,| IL:|so| IL:|we| IL:|can| - IL:|back| IL:|up| IL:|and| IL:|split| IL:|lines| IL:|there| IL:|if| - IL:|possible.|) - - (IL:SETQ IL:LASTB (CONS IL:I (IL:IDIFFERENCE IL:WIDTH IL:TX - )))) - (IL:CR (IL:* IL:\; IL:|forces| IL:\a - IL:|new| IL:|line.|) - (RETURN (CONS (IL:IMINUS IL:I) - (IL:IDIFFERENCE IL:WIDTH IL:TX)))) - (IL:|if| (AND (NOT (IL:U-CASEP (IL:CHARACTER IL:CH))) - (NOT (IL:EOFP IL:TMSG)) - (IL:U-CASEP (IL:PEEKC IL:TMSG))) - IL:|then| (IL:* IL:\; IL:|from| IL:|upper| - IL:|to| IL:|lower| IL:|case| IL:|is| - IL:|also| IL:\a IL:|word| IL:|break|) - (IL:SETQ IL:LASTB (CONS IL:I (IL:IDIFFERENCE IL:WIDTH - IL:TX))))) - (IL:SETQ IL:TX (IL:IPLUS IL:TX (IL:CHARWIDTH IL:CH IL:FONT))))))) - (T (IL:* IL:\; IL:|isn't| IL:\a - IL:|title;| IL:|return| IL:\a - IL:|dummy| IL:|entry| IL:|for| - IL:|the| IL:|line| IL:|formatter.|) - (CONS 0 IL:WIDTH))))) - -(BOX-WINDOW-NODE - (IL:LAMBDA (IL:|nodeLabel| WINDOW) (IL:* IL:\; "Edited 29-Jan-88 11:31 by Rao") - (IL:* IL:\; " 7-Sep-84 14:36") - - (IL:* IL:|;;| "a box around the node with nodeLabel in the graph. A nodeLabel in browsers is an object. Does nothing if node not found.") - - (PROG (IL:|node| IL:|nodes|) - (COND - ((AND (IL:WINDOWP WINDOW) - (IL:SETQ IL:|nodes| (IL:|fetch| IL:GRAPHNODES IL:|of| (IL:WINDOWPROP - WINDOW - 'IL:GRAPH))) - (IL:SETQ IL:|node| (IL:FASSOC IL:|nodeLabel| IL:|nodes|))) - (IL:DRAWAREABOX (IL:GN/LEFT IL:|node|) - (IL:GN/BOTTOM IL:|node|) - (IL:|fetch| IL:NODEWIDTH IL:|of| IL:|node|) - (IL:|fetch| IL:NODEHEIGHT IL:|of| IL:|node|) - 1 - 'IL:INVERT WINDOW)))))) -) - - - -(IL:* IL:\; "Button Events") - -(IL:DEFINEQ - -(FIND-SELECTED-NODE - (IL:LAMBDA (WINDOW) (IL:* IL:\; "Edited 12-Nov-87 01:30 by Rao") - (IL:* IL:\; "10-Dec-84 17:53") - - (IL:* IL:|;;| "Used in BUTTONEVENTFN and gets called whenever cursor moves or button is down. Adapted from APPLYTOSELECTEDNODE in GRAPHER package; returns the selected item rather than applying a function on the inside of the button event fn.") - - (IL:* IL:|;;| - "Also this was modified to pop up the middle button menu on button down rather than button up.") - - (PROG ((LOOPS-WINDOW (IL:WINDOWPROP WINDOW 'WEB-EDITOR)) - (NODELST (IL:|fetch| (IL:GRAPH IL:GRAPHNODES) IL:|of| (IL:WINDOWPROP WINDOW - 'IL:GRAPH))) - (DS (IL:WINDOWPROP WINDOW 'IL:DSP)) - BUTTON OLDPOS REG NOW NEAR) (IL:* IL:\; - "note which button is down.") - (IL:* IL:\; - "get the region of this window.") - (IL:SETQ REG (IL:WINDOWPROP WINDOW 'IL:REGION)) - (IL:|until| (IL:LASTMOUSESTATE (OR IL:LEFT IL:MIDDLE)) IL:|do| (IL:GETMOUSESTATE)) - (IL:SETQ NEAR (IL:NODELST/AS/MENU NODELST (IL:SETQ OLDPOS (IL:CURSORPOSITION NIL DS)))) - IL:FLIP - - - (IL:* IL:|;;| "This is kirk's quick hack to get middle button to bring up immediately.") - - (WHEN (IL:LASTMOUSESTATE IL:MIDDLE) - (RETURN (IL:|fetch| IL:NODEID IL:|of| NEAR))) - (AND NOW (IL:FLIPNODE NOW DS)) - (AND NEAR (IL:FLIPNODE NEAR DS)) - (IL:SETQ NOW NEAR) - IL:LP - (IL:* IL:\; - "wait for a button up or move out of region") - (IL:GETMOUSESTATE) - (COND - ((IL:LASTMOUSESTATE (AND (NOT IL:LEFT) - (NOT IL:MIDDLE))) (IL:* IL:\; - "left button up, process it.") - (AND NOW (IL:FLIPNODE NOW DS)) (IL:* IL:\; - "NOW node has been selected.") - (RETURN (IL:|fetch| IL:NODEID IL:|of| NOW))) - ((NOT (IL:INSIDE? (IL:WINDOWPROP WINDOW 'IL:REGION) - IL:LASTMOUSEX IL:LASTMOUSEY)) (IL:* IL:\; - "outside of region, return") - (AND NOW (IL:FLIPNODE NOW DS)) - (RETURN)) - ((EQ NOW (IL:SETQ NEAR (IL:NODELST/AS/MENU NODELST (IL:CURSORPOSITION NIL DS OLDPOS)))) - (GO IL:LP)) - (T (GO IL:FLIP)))))) -) - -(DEFMETHOD BUTTON-EVENT-FN ((SELF WEB-EDITOR)) (IL:* IL:\; " 2-Jan-86 16:41") - (IL:* IL:\; - "Called when there is a button event in a Loops Window") - (LET ((WINDOW (SLOT-VALUE SELF 'WINDOW))) - (OR (IL:ERSETQ (COND - ((NULL (IL:INSIDEP (IL:DSPCLIPPINGREGION NIL WINDOW) - (IL:LASTMOUSEX WINDOW) - (IL:LASTMOUSEY WINDOW))) - (TITLE-SELECTION SELF)) - ((IL:MOUSESTATE IL:LEFT) - (LEFT-SELECTION SELF)) - ((IL:MOUSESTATE IL:MIDDLE) - (MIDDLE-SELECTION SELF)) - ((IL:MOUSESTATE IL:RIGHT) - (RIGHT-SELECTION SELF))))))) - -(DEFMETHOD LEFT-SELECTION ((SELF WEB-EDITOR)) - (IF (MOVE-DOWN-P) - (IF (SLOT-VALUE SELF 'NODE-MOVER-P) - (NODE-MOVE SELF) - (NODE-MOVE-SHALLOW SELF)) - (NODE-SELECTION SELF 'IL:LEFT))) - -(DEFMETHOD MIDDLE-SELECTION ((SELF WEB-EDITOR)) (IL:* IL:\; "15-May-85 19:04") - - (IL:* IL:|;;| "This function called from the GRAPHER package when a node is selected with the middle mouse button. If no node is selected then just returns.") - - (PROG (SELECTION OBJECT (WINDOW (SLOT-VALUE SELF 'WINDOW)) - (WEB-EDITOR SELF)) - (DECLARE (IL:SPECVARS OBJECT WEB-EDITOR)) - (COND - ((NULL (IL:SETQ OBJECT (FIND-SELECTED-NODE WINDOW))) - (RETURN))) - (SETF (SLOT-VALUE WEB-EDITOR 'LAST-SELECTED-OBJECT) - OBJECT) - (IL:GETMOUSESTATE) - (FLIP-NODE SELF OBJECT) - (IL:SETQ SELECTION (OR (NODE-ACTION SELF OBJECT 'IL:MIDDLE) - (PROGN (FLIP-NODE SELF OBJECT) - (RETURN NIL)))) - (FLIP-NODE SELF OBJECT) - (DO-SELECTED-COMMAND WEB-EDITOR SELECTION OBJECT))) - -(DEFMETHOD RIGHT-SELECTION ((SELF WEB-EDITOR)) (IL:* IL:\; "17-Apr-84 15:46") - (IL:* IL:\; - "Do RightButtonItems on selection.") - (LET* ((CHOICE (CHOICE-MENU SELF 'RIGHT-BUTTON-ITEMS))) - (IF CHOICE (FUNCALL CHOICE SELF)))) - -(DEFMETHOD TITLE-SELECTION ((SELF WEB-EDITOR)) (IL:* IL:\; "17-Apr-84 15:35") - - (IL:* IL:|;;| " Do TitleItems if selected in title area. Replaces TitleSelection in Window because this one does evaluation in TTY process, and saves events on history") - - (LET* ((CHOICE (CHOICE-MENU SELF 'TITLE-ITEMS))) - (IF CHOICE (FUNCALL CHOICE SELF)))) - -(DEFMETHOD NODE-SELECTION ((SELF WEB-EDITOR) - BUTTON) - (LET* ((WINDOW (SLOT-VALUE SELF 'WINDOW)) - (OBJECT (FIND-SELECTED-NODE WINDOW))) - (DECLARE (IL:SPECVARS OBJECT)) (IL:* IL:\; "SPECVARS for whenHeldFn") - (IF (LISTP OBJECT) - (SETQ OBJECT (CAR OBJECT))) - (COND - ((NOT (NULL OBJECT)) - (SETF (SLOT-VALUE SELF 'LAST-SELECTED-OBJECT) - OBJECT))) - (IL:GETMOUSESTATE) - (WHEN OBJECT - (LET ((SELECTOR (NODE-ACTION SELF OBJECT BUTTON))) - (COND - (SELECTOR (DO-SELECTED-COMMAND SELF SELECTOR OBJECT))))))) - -(DEFMETHOD NODE-ACTION ((SELF WEB-EDITOR) - NODE BUTTON) (IL:* IL:\; " 8-Apr-87 17:11") - (DECLARE (IL:SPECVARS WINDOW-FOR-MENU)) - (LET ((WINDOW-FOR-MENU SELF)) - (IL:GETMOUSESTATE) - (CHOICE-MENU SELF - - (IL:* IL:|;;| " A Hook for letting nodes tailor menu items.") - - (NODE-MENU-ITEMS NODE BUTTON)))) - -(DEFMETHOD NODE-MENU-ITEMS ((NODE WEB-NODE) - BUTTON) - (CASE BUTTON - (IL:LEFT 'LEFT-BUTTON-ITEMS) - (IL:MIDDLE 'MIDDLE-BUTTON-ITEMS))) - -(DEFMETHOD CHOICE-MENU ((SELF WEB-EDITOR) - ITEM-CV) (IL:* IL:\; "29-Dec-85 13:54") - - (IL:* IL:|;;| - "Create a menu which allows subitems to be displayed. Cache it in the web-editor ") - - (LET (ITEMS MENU) - (SETQ MENU (REST (ASSOC ITEM-CV (SLOT-VALUE SELF 'MENU-CACHE)))) - (COND - ((AND MENU (IL:TYPE? IL:MENU MENU)) - (IL:MENU MENU)) - ((NOT (LISTP (SETQ ITEMS (GET-MENU-ITEMS SELF ITEM-CV)))) - ITEMS) - (T (IL:SETQ MENU (IL:CREATE IL:MENU - IL:ITEMS IL:_ ITEMS - IL:MENUOFFSET IL:_ (IL:CREATEPOSITION -1 0) - IL:WHENSELECTEDFN IL:_ 'WEB-MENU-WHENSELECTEDFN - IL:WHENHELDFN IL:_ 'WINDOW-WHEN-HELD-FN - IL:CHANGEOFFSETFLG IL:_ T - IL:CENTERFLG IL:_ T)) (IL:* IL:\; "Cache menu if menus is T") - (IF (SLOT-VALUE SELF 'CACHE-MENU-P) - (SETF (SLOT-VALUE SELF 'MENU-CACHE) - (ACONS ITEM-CV MENU (SLOT-VALUE SELF 'MENU-CACHE)))) - (IL:MENU MENU))))) - -(DEFMETHOD DO-SELECTED-COMMAND ((WEB-EDITOR WEB-EDITOR) - COMMAND OBJ &OPTIONAL NODE) - (IL:* IL:\; "17-Sep-86 17:49") - - (IL:* IL:|;;| "Do the selected command or forwards it to the object") - - (IF COMMAND - - (IL:* IL:|;;| "Take care of being passed in a dummy node from browser in Lattice mode. --- Dummy nodes are indicated by having the object in a list") - - (LET ((ARGS (IF (IL:LISTP COMMAND) - (CDR COMMAND) - NIL)) - (COMMAND (IF (IL:LISTP COMMAND) - (CAR COMMAND) - COMMAND)) - (OBJ (IF (IL:LISTP OBJ) - (CAR OBJ) - OBJ))) - (WHEN (IL:FMEMB COMMAND (SLOT-VALUE WEB-EDITOR 'LOCAL-COMMANDS)) - (SETQ ARGS (CONS OBJ ARGS)) - (SETQ OBJ WEB-EDITOR)) - - (IL:* IL:|;;| - "Grays out the node at the beginning of the command, and ungrays it when the command completes.") - - (SETQ NODE OBJ) - (IF NODE - (PROGN (SHADE-NODE WEB-EDITOR NODE IL:GRAYSHADE2) - (IL:BLOCK 500) - (SHADE-NODE WEB-EDITOR NODE IL:WHITESHADE) - (APPLY COMMAND OBJ ARGS)) - (APPLY COMMAND OBJ ARGS))))) - -(DEFMETHOD WHEN-MENU-ITEM-HELD ((SELF WEB-EDITOR) - ITEM MENU KEY) (IL:* IL:\; " 8-Apr-87 17:13") - -(IL:* IL:|;;;| "What to do when the menu item is held") - - (IL:PROMPTPRINT (OR (COND - ((IL:NLISTP ITEM) - NIL) - (T (CADDR ITEM))) - "When released this item will be selected"))) - -(DEFMETHOD ITEM-MENU ((SELF WEB-EDITOR) - ITEMS TITLE) (IL:* IL:\; "21-Apr-84 09:31") - (IL:* IL:\; - "Create a simnple (one level) menu which will not overflow height of screen") - (IL:|create| IL:MENU - IL:ITEMS IL:_ ITEMS - IL:MENUCOLUMNS IL:_ (IL:ADD1 (IL:IQUOTIENT (IL:ITIMES (IL:FONTHEIGHT IL:MENUFONT) - (IL:LENGTH ITEMS)) - 750)) - IL:TITLE IL:_ TITLE - IL:CHANGEOFFSETFLG IL:_ T)) - -(DEFMETHOD GET-MENU-ITEMS ((SELF WEB-EDITOR) - ITEM-CV) (IL:* IL:\; "23-Oct-84 12:36") - (IL:* IL:\; "Get item list for menu") - (SLOT-VALUE SELF ITEM-CV)) - -(DEFMETHOD CLEAR-MENU-CACHE ((SELF WEB-EDITOR)) (IL:* IL:\; "11-Apr-86 14:46") - (IL:* IL:\; - "Delete Menus saved on menus") - (SETF (SLOT-VALUE SELF 'MENU-CACHE) - NIL) - SELF) -(IL:DEFINEQ - -(WEB-MENU-WHENSELECTEDFN - (IL:LAMBDA (ITEM MENU BUTTON) (IL:* IL:\; "Edited 14-Jul-87 17:43 by Rao") - (IL:* IL:\; "13-DEC-83 21:03") - (PROG (SECOND-ELEMENT) - (RETURN (COND - ((IL:NLISTP ITEM) - ITEM) - ((IL:NLISTP (IL:SETQ SECOND-ELEMENT (CADR ITEM))) - SECOND-ELEMENT) - ((EQ (CAR SECOND-ELEMENT) - 'PROGN) - (IL:EVAL SECOND-ELEMENT)) - (T SECOND-ELEMENT)))))) - -(WINDOW-WHEN-HELD-FN - (LAMBDA (ITEM MENU KEY) (IL:* IL:\; "Edited 9-Jul-87 11:58 by Rao") - (IL:* IL:\; "29-Dec-85 15:28") - (IL:* IL:\; - "Send to window the message to respond to time out on menu") - (DECLARE (IL:SPECVARS WINDOW-FOR-MENU)) - (WHEN-MENU-ITEM-HELD WINDOW-FOR-MENU ITEM MENU KEY))) -) -(IL:DEFINEQ - -(SUB-ITEM-SELECTION - (IL:LAMBDA (ITEM MENU BUTTON) (IL:* IL:\; "Edited 14-Jul-87 17:13 by Rao") - (IL:* IL:\; "13-DEC-83 21:03") - - (IL:* IL:|;;| "menu WHENSELECTEDFN which allows differential selection on LEFT and middle button. For such differential selection item should be of form --- (itemSeenInMenu (leftValue midValue)) --- where midValue can be an atom which is directly returned when item is selected with middle, or midValue can be an itemList, which will be displayed in a subselection menu") - - (PROG (IT IT1) - (RETURN (COND - ((IL:NLISTP ITEM) - ITEM) - ((IL:NLISTP (IL:SETQ IT (CADR ITEM))) - IT) - ((EQ (IL:SETQ IT1 (CAR IT)) - 'QUOTE) - (CADR IT)) - ((EQ IT1 'PROGN) - (IL:EVAL IT)) - ((IL:LISTP IT1) - (IL:EVAL IT1)) - (T IT1)))))) - -(DUAL-SUB-ITEMS - (IL:LAMBDA (MENU ITEM) (IL:* IL:\; "Edited 14-Jul-87 17:14 by Rao") - (IL:* IL:\; "13-DEC-83 21:07") - - (IL:* IL:|;;| "menu WHENSELECTEDFN which allows differential selection on LEFT and middle button. For such differential selection item should be of form --- (itemSeenInMenu (leftValue midValue)) --- where midValue can be an atom which is directly returned when item is selected with middle, or midValue can be an itemList, which will be displayed in a subselection menu") - - (PROG (IT IT1) - (RETURN (COND - ((OR (IL:NLISTP ITEM) - (IL:NLISTP (IL:SETQ IT (CADR ITEM))) - (EQ (IL:SETQ IT1 (CAR IT)) - 'QUOTE) - (EQ IT1 'PROGN) - (IL:NLISTP (IL:SETQ IT1 (CADR IT)))) - NIL) - (T IT1)))))) - -(WINDOW-WHEN-HELD-FN - (LAMBDA (ITEM MENU KEY) (IL:* IL:\; "Edited 9-Jul-87 11:58 by Rao") - (IL:* IL:\; "29-Dec-85 15:28") - (IL:* IL:\; - "Send to window the message to respond to time out on menu") - (DECLARE (IL:SPECVARS WINDOW-FOR-MENU)) - (WHEN-MENU-ITEM-HELD WINDOW-FOR-MENU ITEM MENU KEY))) - -(DO-MENU-METHOD - (IL:LAMBDA (OBJECT ITEMS) (IL:* IL:\; "Edited 14-Jul-87 17:15 by Rao") - (IL:* IL:\; "13-NOV-83 16:20") - (PROG ((SELECTOR (AND ITEMS (DUAL-MENU ITEMS)))) - (AND SELECTOR (RETURN (FUNCALL SELECTOR OBJECT)))))) - -(DUAL-MENU - (IL:LAMBDA (ITEMS WHEN-HELD-FN) (IL:* IL:\; "Edited 14-Jul-87 17:16 by Rao") - (IL:* IL:\; " 9-FEB-84 16:17") - (IL:* IL:\; - "and pops up a menu which allows differential selection on LEFT an middle buttons") - (IL:MENU (IL:|create| IL:MENU - IL:ITEMS IL:_ ITEMS - IL:WHENSELECTEDFN IL:_ 'SUB-ITEM-SELECTION - IL:SUBITEMFN IL:_ 'DUAL-SUB-ITEMS - IL:WHENHELDFN IL:_ WHEN-HELD-FN - IL:CHANGEOFFSETFLG IL:_ T)))) - -(DUAL-SELECTION - (IL:LAMBDA (ITEM MENU BUTTON) (IL:* IL:\; "Edited 14-Jul-87 17:28 by Rao") - (IL:* IL:\; "29-MAR-83 17:57") - - (IL:* IL:|;;| "MENU WHENSELECTEDFN which allows differential selection on LEFT and middle button. For such differential selection ITEM should be of form --- (itemSeenInMenu (leftValue midValue)) --- where midValue can be an atom which is directly returned when ITEM is selected with middle, or midValue can be an itemList, which will be displayed in a subselection MENU") - - (PROG (IT IT1) - (RETURN (COND - ((IL:NLISTP ITEM) - ITEM) - ((IL:NLISTP (IL:SETQ IT (CADR ITEM))) - IT) - ((EQ (IL:SETQ IT1 (CAR IT)) - 'QUOTE) - (CADR IT)) - ((EQ IT1 'PROGN) - (IL:EVAL IT)) - ((EQ BUTTON 'IL:LEFT) - (COND - ((IL:LISTP IT1) - (IL:EVAL IT1)) - (T IT1))) - ((IL:NLISTP (IL:SETQ IT1 (CADR IT))) - IT1) - (T (DUAL-MENU IT1))))))) -) - - - -(IL:* IL:\; "Node Moving Protocol") - - -(DEFMETHOD NODE-MOVE ((SELF WEB-EDITOR)) - (LET ((OLD-REGIONS (MAKE-REG-ASSOC SELF)) - NEW-REGIONS MOVED-PAIR NEW-FATHER CLOSEST-PAIR) - (NODE-MOVE-SHALLOW SELF) - (SETQ NEW-REGIONS (MAKE-REG-ASSOC SELF)) - (SETQ MOVED-PAIR (IL:|for| |npair| IL:|in| NEW-REGIONS IL:|as| |opair| - IL:|in| OLD-REGIONS IL:|thereis| (NOT (IL:EQUAL (CAR |opair|) - (CAR |npair|))))) - (WHEN (AND MOVED-PAIR - - (IL:* IL:|;;| "The moved guy has a parent") - - (SLOT-VALUE (CDR MOVED-PAIR) - 'PARENT)) - (IL:DREMOVE MOVED-PAIR NEW-REGIONS) - (SETQ NEW-REGIONS - - (IL:* IL:|;;| "Collect the pairs that havn't changed.") - - (IL:|bind| (SCIONS-OF-MOVED IL:_ (SCIONS (CDR MOVED-PAIR))) IL:|for| PAIR - IL:|in| NEW-REGIONS IL:|unless| (IL:MEMBER (CDR PAIR) - SCIONS-OF-MOVED) IL:|collect| - PAIR)) - (SETQ CLOSEST-PAIR (IL:|bind| (\b IL:_ (IL:|fetch| IL:BOTTOM IL:|of| - (CAR MOVED-PAIR))) - (\l IL:_ (IL:|fetch| IL:LEFT IL:|of| (CAR MOVED-PAIR))) - IL:|for| |pair| IL:|in| NEW-REGIONS - IL:|smallest| (IL:PLUS (ABS (IL:IDIFFERENCE (IL:|fetch| - IL:BOTTOM - IL:|of| - (CAR |pair|)) - \b)) - (ABS (IL:IDIFFERENCE (IL:|fetch| - IL:LEFT - IL:|of| - (CAR |pair|)) - \l))))) - - (IL:* IL:|;;| - "Either make moved node a sibling or a child of the node it is now closest to.") - - (IL:|if| (IL:IGREATERP (IL:IDIFFERENCE (IL:|fetch| IL:LEFT IL:|of| - (CAR MOVED-PAIR)) - (IL:|fetch| IL:LEFT IL:|of| (CAR CLOSEST-PAIR)) - ) - 15) - IL:|then| (IL:SETQ NEW-FATHER (CDR CLOSEST-PAIR)) - IL:|else| (IL:SETQ NEW-FATHER (OR (SLOT-VALUE (CDR CLOSEST-PAIR) - 'PARENT) - (CDR CLOSEST-PAIR)))) - (MOVE-NODE (CDR MOVED-PAIR) - NEW-FATHER) - (REORDER-TREE SELF NEW-FATHER)) - (RECOMPUTE SELF))) - -(DEFMETHOD NODE-MOVE-SHALLOW ((SELF WEB-EDITOR)) - - (IL:* IL:|;;| "Just moves the node graphically with no deep impact") - - (LET ((WINDOW (SLOT-VALUE SELF 'WINDOW))) - (IL:RESETLST - (IL:RESETSAVE NIL (LIST (IL:FUNCTION IL:DSPOPERATION) - (IL:DSPOPERATION 'IL:INVERT WINDOW) - WINDOW)) - (IL:GETMOUSESTATE) (IL:* IL:\; "Here to move a node.") - (IL:DSPOPERATION 'IL:INVERT WINDOW) - (IL:EDITMOVENODE WINDOW)))) - -(DEFMETHOD SCIONS ((SELF WEB-NODE)) (IL:* IL:\; "14-Nov-86 03:01") - (IL:* IL:\; "Used by the Node Mover") - (LET ((TO-LINKS (GET-TO-LINKS SELF))) - (APPEND TO-LINKS (IL:|for| IL:|child| IL:|in| TO-LINKS IL:|join| (SCIONS - IL:|child| - ))))) - -(DEFMETHOD MAKE-REG-ASSOC ((SELF WEB-EDITOR)) (IL:* IL:\; "14-Nov-86 02:08") - (IL:* IL:\; "Ho hum") - (IL:|for| X IL:|in| (SLOT-VALUE SELF 'STARTING-LIST) IL:|collect| (CONS (NODE-REGION - SELF X) - X))) - -(DEFMETHOD REORDER-TREE ((SELF WEB-EDITOR) - ROOT) (IL:* IL:\; "14-Nov-86 02:35") - (LET ((CHILDREN (GET-TO-LINKS ROOT))) - (IF CHILDREN - (IL:SORT CHILDREN #'(IL:LAMBDA (C1 C2) - (LET ((R1 (NODE-REGION SELF C1)) - (R2 (NODE-REGION SELF C2))) - (IL:LESSP (IL:|fetch| IL:BOTTOM IL:|of| R1) - (IL:|fetch| IL:BOTTOM IL:|of| R2)))))))) - -(DEFMETHOD MOVE-NODE ((SELF WEB-NODE) - NEW-PARENT) (IL:* IL:\; "29-Jan-87 17:55") - (LET ((OLD-PARENT (SLOT-VALUE SELF 'PARENT))) - (UNLESS (EQ OLD-PARENT NEW-PARENT) - (SETF (SLOT-VALUE SELF 'PARENT) - NEW-PARENT) - (SETF (SLOT-VALUE OLD-PARENT 'TO-LINKS) - (IL:DREMOVE SELF (SLOT-VALUE OLD-PARENT 'TO-LINKS))) - (SETF (SLOT-VALUE NEW-PARENT 'TO-LINKS) - (IL:NCONC1 (SLOT-VALUE NEW-PARENT 'TO-LINKS) - SELF)) - T))) - - - -(IL:* IL:\; "") - - - - -(IL:* IL:|;;| "") - -(IL:DECLARE\: IL:DONTEVAL@LOAD IL:DOEVAL@COMPILE IL:DONTCOPY IL:COMPILERVARS - -(IL:ADDTOVAR IL:NLAMA ) - -(IL:ADDTOVAR IL:NLAML ) - -(IL:ADDTOVAR IL:LAMA WINDOW-WHEN-HELD-FN WINDOW-WHEN-HELD-FN) -) -(IL:PUTPROPS IL:WEB-EDITOR IL:COPYRIGHT ("Xerox Corporation" 1987 1988 1989 1991)) -(IL:DECLARE\: IL:DONTCOPY - (IL:FILEMAP (NIL (50310 53152 (WEB-WINDOW-AFTER-MOVE-FN 50323 . 50701) (WEB-WINDOW-BUTTON-EVENT-FN -50703 . 51146) (WEB-WINDOW-RESHAPE-FN 51148 . 51704) (WEB-WINDOW-CLOSE-FN 51706 . 52056) ( -IL:|PromptRead| 52058 . 53150)) (53153 53586 (WEB-WINDOW-EXPAND-FN 53166 . 53584)) (57488 65032 ( -TREE-ROOTS 57501 . 62883) (CHILD-NODES 62885 . 63646) (REACHABLE-NODES! 63648 . 65030)) (94827 108235 -(BOX-PRINT-STRING 94840 . 101302) (BREAK-STRING-FOR-BOXING 101304 . 107100) (BOX-WINDOW-NODE 107102 . -108233)) (108273 111315 (FIND-SELECTED-NODE 108286 . 111313)) (119862 121033 (WEB-MENU-WHENSELECTEDFN -119875 . 120505) (WINDOW-WHEN-HELD-FN 120507 . 121031)) (121034 126038 (SUB-ITEM-SELECTION 121047 . -122147) (DUAL-SUB-ITEMS 122149 . 123158) (WINDOW-WHEN-HELD-FN 123160 . 123684) (DO-MENU-METHOD 123686 - . 124026) (DUAL-MENU 124028 . 124723) (DUAL-SELECTION 124725 . 126036))))) -IL:STOP diff --git a/obsolete/clos/2.0/boot.lisp b/obsolete/clos/2.0/boot.lisp deleted file mode 100644 index 5385f6ff..00000000 --- a/obsolete/clos/2.0/boot.lisp +++ /dev/null @@ -1,1297 +0,0 @@ -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- - - -;;; File converted on 2-Apr-91 16:40:32 from source bood - - - -(in-package "CLOS") - -;;; Shadow, Export, Require, Use-package, and Import forms should follow here - - - -;;; ************************************************************************* Copyright (c) 1985, -;;; 1986, 1987, 1988, 1989, 1990 Xerox Corporation. All rights reserved. Use and copying of this -;;; software and preparation of derivative works based upon this software are permitted. Any -;;; distribution of this software or derivative works must comply with all applicable United States -;;; export control laws. This software is made available AS IS, and Xerox Corporation makes no -;;; warranty about the software, its performance or its conformity to any specification. Any person -;;; obtaining a copy of this software is requested to send their name and post office or electronic -;;; mail address to: CommonLoops Coordinator Xerox PARC 3333 Coyote Hill Rd. Palo Alto, CA 94304 (or -;;; send Arpanet mail to CommonLoops-Coordinator.pa@Xerox.arpa) Suggestions, comments and requests -;;; for improvements are also welcome. -;;; ************************************************************************* - - -#| - -The CommonLoops evaluator is meta-circular. - -Most of the code in CLOS is methods on generic functions, including most of -the code that actually implements generic functions and method lookup. - -So, we have a classic bootstrapping problem. The solution to this is to -first get a cheap implementation of generic functions running, these are -called early generic functions. These early generic functions and the -corresponding early methods and early method lookup are used to get enough -of the system running that it is possible to create real generic functions -and methods and implement real method lookup. At that point (done in the -file FIXUP) the function fix-early-generic-functions is called to convert -all the early generic functions to real generic functions. - -The cheap generic functions are built using the same funcallable-instance -objects real generic-functions are made out of. This means that as CLOS -is being bootstrapped, the cheap generic function objects which are being -created are the same objects which will later be real generic functions. -This is good because: - - we don't cons garbage structure - - we can keep pointers to the cheap generic function objects - during booting because those pointers will still point to - the right object after the generic functions are all fixed - up - - - -This file defines the defmethod macro and the mechanism used to expand it. -This includes the mechanism for processing the body of a method. defmethod -basically expands into a call to load-defmethod, which basically calls -add-method to add the method to the generic-function. These expansions can -be loaded either during bootstrapping or when CLOS is fully up and running. - -An important effect of this structure is it means we can compile files with -defmethod forms in them in a completely running CLOS, but then load those files -back in during bootstrapping. This makes development easier. It also means -there is only one set of code for processing defmethod. Bootstrapping works -by being sure to have load-method be careful to call only primitives which -work during bootstrapping. - -|# - -(proclaim '(notinline make-a-method add-named-method ensure-generic-function-using-class add-method - remove-method)) - -(defvar *early-functions* '((make-a-method early-make-a-method real-make-a-method) - (add-named-method early-add-named-method real-add-named-method))) - - -;;; For each of the early functions, arrange to have it point to its early definition. Do this in a -;;; way that makes sure that if we redefine one of the early definitions the redefinition will take -;;; effect. This makes development easier. The function which generates the redirection closure is -;;; pulled out into a separate piece of code because of a bug in ExCL which causes this not to work -;;; if it is inlined. - - -(eval-when (load eval) - (defun redirect-early-function-internal (to) - #'(lambda (&rest args) - (apply (symbol-function to) - args))) - (dolist (fns *early-functions*) - (let ((name (car fns)) - (early-name (cadr fns))) - (setf (symbol-function name) - (redirect-early-function-internal early-name)))) -) - - -;;; *generic-function-fixups* is used by fix-early-generic-functions to convert the few functions in -;;; the bootstrap which are supposed to be generic functions but can't be early on. - - -(defvar *generic-function-fixups* '((add-method ((generic-function method) - ; lambda-list - (standard-generic-function method) - ; specializers - real-add-method)) - ; method-function - (remove-method ((generic-function method) - (standard-generic-function method) - real-remove-method)) - (get-method ((generic-function qualifiers specializers &optional - (errorp t)) - (standard-generic-function t t) - real-get-method)) - (ensure-generic-function-using-class ((generic-function - function-specifier - &key - generic-function-class - environment - &allow-other-keys) - (generic-function t) - - real-ensure-gf-using-class--generic-function - ) - ((generic-function function-specifier &key - generic-function-class environment - &allow-other-keys) - (null t) - real-ensure-gf-using-class--null)))) - - -;;; - - -(defmacro defgeneric (function-specifier lambda-list &body options) - (expand-defgeneric function-specifier lambda-list options)) - -(defun expand-defgeneric (function-specifier lambda-list options) - (when (listp function-specifier) - (do-standard-defsetf-1 (cadr function-specifier))) - (let ((initargs nil)) - (flet ((duplicate-option (name) - (error "The option ~S appears more than once." name))) - - ;; INITARG takes this screwy new argument to get around a bad interaction between - ;; lexical macros and setf in the Lucid compiler. - (macrolet ((initarg (key &optional new) - (if new - `(setf (getf initargs ,key) - ,new) - `(getf initargs ,key)))) - (dolist (option options) - (ecase (car option) - (:argument-precedence-order - (if (initarg :argument-precedence-order) - (duplicate-option :argument-precedence-order) - (initarg :argument-precedence-order - `',(cdr option)))) - (declare (initarg :declarations (append (cdr option) - (initarg :declarations)))) - (:documentation (if (initarg :documentation) - (duplicate-option :documentation) - (initarg :documentation - `',(cadr option)))) - (:method-combination - (if (initarg :method-combination) - (duplicate-option :method-combination) - (initarg :method-combination - `',(cdr option)))) - (:generic-function-class - (if (initarg :generic-function-class) - (duplicate-option :generic-function-class) - (initarg :generic-function-class - `',(cadr option)))) - (:method-class (if (initarg :method-class) - (duplicate-option :method-class) - (initarg :method-class - `',(cadr option)))) - (:method (error "DEFGENERIC doesn't support the :METHOD option yet." - )))) - (let ((declarations (initarg :declarations))) - (when declarations - (initarg :declarations `',declarations))))) - (make-top-level-form `(defgeneric ,function-specifier) - *defgeneric-times* - `(load-defgeneric ',function-specifier ',lambda-list ,@initargs)))) - -(defun load-defgeneric (function-specifier lambda-list &rest initargs) - (when (listp function-specifier) - (do-standard-defsetf-1 (cadr function-specifier))) - (apply #'ensure-generic-function function-specifier :lambda-list lambda-list - :definition-source `((defgeneric ,function-specifier) - ,(load-truename)) - initargs)) - - -;;; - - -(defmacro defmethod (&rest args &environment env) - (declare (arglist name {method-qualifier}* specialized-lambda-list &body body)) - (multiple-value-bind (name qualifiers lambda-list body) - (parse-defmethod args) - (let ((proto-method (method-prototype-for-gf name))) - (expand-defmethod proto-method name qualifiers lambda-list body env)))) - - -;;; takes a name which is either a generic function name or a list specifying a setf generic -;;; function (like: (SETF )). Returns the prototype instance of the -;;; method-class for that generic function. If there is no generic function by that name, this -;;; returns the default value, the prototype instance of the class STANDARD-METHOD. This default -;;; value is also returned if the spec names an ordinary function or even a macro. In effect, this -;;; leaves the signalling of the appropriate error until load time. NOTE that during bootstrapping, -;;; this function is allowed to return NIL. - - -(defun method-prototype-for-gf (name) - (let ((gf? (and (gboundp name) - (gdefinition name)))) - (cond ((neq *boot-state* 'complete) - nil) - ((or (null gf?) - (not (generic-function-p gf?))) - ; Someone else MIGHT error at load - ; time. - (class-prototype (find-class 'standard-method))) - (t (class-prototype (or (generic-function-method-class gf?) - (find-class 'standard-method))))))) - -(defun expand-defmethod (proto-method name qualifiers lambda-list body env) - (when (listp name) (do-standard-defsetf-1 (cadr name))) - (multiple-value-bind (fn-form specializers doc plist) - (expand-defmethod-internal name qualifiers lambda-list body env) - `(load-defmethod - ',(if proto-method - (class-name (class-of proto-method)) - 'standard-method) - ',name - ',qualifiers - (list ,@(mapcar #'(lambda (specializer) - (if (and (consp specializer) - (eq (car specializer) 'eql)) - ``(eql ,,(cadr specializer)) - `',specializer)) - specializers)) - ',(specialized-lambda-list-lambda-list lambda-list) - ',doc - ',(getf plist :isl-cache-symbol) ;Paper over a bug in KCL by - ;passing the cache-symbol - ;here in addition to in the - ;plist. - ',plist - ,fn-form))) - -(defun - expand-defmethod-internal - (generic-function-name qualifiers specialized-lambda-list body env) - (declare (values fn-form specializers doc) - (ignore qualifiers)) - (when (listp generic-function-name) - (do-standard-defsetf-1 (cadr generic-function-name))) - (multiple-value-bind - (documentation declarations real-body) - (extract-declarations body) - (multiple-value-bind - (parameters lambda-list specializers) - (parse-specialized-lambda-list specialized-lambda-list) - (let* - ((required-parameters (mapcar #'(lambda (r s) - (declare (ignore s)) - r) - parameters specializers)) - (parameters-to-reference (make-parameter-references specialized-lambda-list required-parameters - declarations generic-function-name specializers)) - (class-declarations - `(declare ,@(remove nil (mapcar #'(lambda (a s) - (and (symbolp s) - (neq s 't) - `(class ,a ,s))) - parameters specializers)))) - (method-lambda - - ;; Remove the documentation string and insert the appropriate class declarations. The - ;; documentation string is removed to make it easy for us to insert new declarations - ;; later, they will just go after the cadr of the method lambda. The class declarations - ;; are inserted to communicate the class of the method's arguments to the code walk. - (let nil `(lambda ,lambda-list ,class-declarations ,@declarations (progn - ,@ - parameters-to-reference - ) - (block ,(if (listp generic-function-name) - (cadr generic-function-name) - generic-function-name) - ,@real-body)))) - (call-next-method-p nil) - ; flag indicating that call-next-method - ; should be in the method definition - (closurep nil) - ; flag indicating that - ; #'call-next-method was seen in the - ; body of a method - (next-method-p-p nil) - ; flag indicating that next-method-p - ; should be in the method definition - (save-original-args nil) - ; flag indicating whether or not the - ; original arguments to the method must - ; be preserved. This happens for two - ; reasons: - the method takes &mumble - ; args, so one of the lexical functions - ; might be used in a default value form - ; - call-next-method is used without - ; arguments at least once in the body - ; of the method - (original-args nil) - (applyp nil) - ; flag indicating whether or not the - ; method takes &mumble arguments. If it - ; does, it means call-next-method - ; without arguments must be APPLY'd to - ; original-args. If this gets set - ; true, save-original-args is set so as - ; well - (aux-bindings nil) - ; Suffice to say that &aux is one of - ; damndest things to have put in a - ; language. - (slots (mapcar #'list required-parameters)) - (plist nil) - (walked-lambda nil)) - (flet ((walk-function (form context env) - (cond ((not (eq context ':eval)) - form) - ((not (listp form)) - form) - ((eq (car form) - 'call-next-method) - (setq call-next-method-p 't) - (unless (cdr form) - (setq save-original-args t)) - form) - ((eq (car form) - 'next-method-p) - (setq next-method-p-p 't) - form) - ((and (eq (car form) - 'function) - (cond ((eq (cadr form) - 'call-next-method) - (setq call-next-method-p 't) - (setq save-original-args 't) - (setq closurep t) - form) - ((eq (cadr form) - 'next-method-p) - (setq next-method-p-p 't) - (setq closurep t) - form) - (t nil)))) - ((and (or (eq (car form) - 'slot-value) - (eq (car form) - 'set-slot-value)) - (symbolp (cadr form)) - (constantp (caddr form))) - (let ((parameter (can-optimize-access (cadr form) - required-parameters env))) - (if (null parameter) - form - (ecase (car form) - (slot-value (optimize-slot-value slots parameter form)) - (set-slot-value (optimize-set-slot-value slots parameter form))) -))) - (t form)))) - (setq walked-lambda (walk-form method-lambda env #'walk-function)) - - ;; Add &allow-other-keys to the lambda list as an interim way of implementing lambda list - ;; congruence rules. - (when (and (memq '&key lambda-list) - (not (memq '&allow-other-keys lambda-list))) - (let* ((rll (reverse lambda-list)) - (aux (memq '&aux rll))) - (setq lambda-list (if aux - (progn (setf (cdr aux) - (cons '&allow-other-keys (cdr aux))) - (nreverse rll)) - (nconc (nreverse rll) - (list '&allow-other-keys)))))) - - ;; Scan the lambda list to determine whether this method takes &mumble arguments. If it - ;; does, we set applyp and save-original-args true. This is also the place where we - ;; construct the original arguments lambda list if there has to be one. - (dolist (p lambda-list) - (if (memq p lambda-list-keywords) - (if (eq p '&aux) - (progn (setq aux-bindings (cdr (memq '&aux lambda-list))) - (return nil)) - (progn (setq applyp t save-original-args t) - (push '&rest original-args) - (push (make-symbol "AMPERSAND-ARGS") - original-args) - (return nil))) - (push (make-symbol (symbol-name p)) - original-args))) - (setq original-args (if save-original-args - (nreverse original-args) - nil)) - (multiple-value-bind (ignore walked-declarations walked-lambda-body) - (extract-declarations (cddr walked-lambda)) - (declare (ignore ignore)) - (when (some #'cdr slots) - (setq slots (slot-name-lists-from-slots slots)) - (setq plist (list* :isl slots plist)) - (setq walked-lambda-body (add-pv-binding walked-lambda-body plist - required-parameters))) - (when (or next-method-p-p call-next-method-p) - (setq plist (list* :needs-next-methods-p 't plist))) - - -;;; changes are here... (mt) - - (let ((fn-body (if (or call-next-method-p next-method-p-p) - (add-lexical-functions-to-method-lambda - walked-declarations walked-lambda-body - `(lambda ,lambda-list ,@walked-declarations - ,.walked-lambda-body) - original-args lambda-list save-original-args applyp aux-bindings - call-next-method-p next-method-p-p closurep) - `(lambda ,lambda-list ,@walked-declarations ,.walked-lambda-body)) - )) - (values `#',fn-body specializers documentation plist)))))))) - -(defun - add-lexical-functions-to-method-lambda - (walked-declarations walked-lambda-body walked-lambda original-args lambda-list save-original-args - applyp aux-bindings call-next-method-p next-method-p-p closurep) - (cond - ((and (null closurep) - (null applyp) - (null save-original-args)) - - ;; OK to use MACROLET, CALL-NEXT-METHOD is always passed some args, and all args are mandatory - ;; (else APPLYP would be true). - `(lambda ,lambda-list ,@walked-declarations - (let ((.next-method. (car *next-methods*)) - (.next-methods. (cdr *next-methods*))) - (macrolet ((call-next-method ,lambda-list '(if .next-method. - (let ((*next-methods* .next-methods.)) - (funcall .next-method. - ,@lambda-list)) - (error "No next method."))) - (next-method-p nil `(not (null .next-method.)))) - ,@walked-lambda-body)))) - ((and (null closurep) - (null applyp) - save-original-args) - - ;; OK to use MACROLET. CALL-NEXT-METHOD is sometimes called in the body with zero args, so we - ;; have to save the original args. - (if save-original-args - - ;; CALL-NEXT-METHOD is sometimes called with no args - `(lambda ,original-args - (let ((.next-method. (car *next-methods*)) - (.next-methods. (cdr *next-methods*))) - (macrolet ((call-next-method - (&rest cnm-args) - `(if .next-method. - (let ((*next-methods* .next-methods.)) - (funcall .next-method. ,@(if cnm-args - cnm-args - ',original-args))) - (error "No next method."))) - (next-method-p nil `(not (null .next-method.)))) - (let* (,@(mapcar #'list lambda-list original-args) - ,@aux-bindings) - ,@walked-declarations - ,@walked-lambda-body)))))) - ((and (null save-original-args) - (null applyp)) - - ;; We don't have to save the original arguments. In addition, this method doesn't take any - ;; &mumble arguments (this means that there is no way the lexical functions can be used inside of - ;; the default value form for an &mumble argument). We can expand this into a simple lambda - ;; expression with an FLET to define the lexical functions. - `(lambda ,lambda-list ,@walked-declarations - (let ((.next-method. (car *next-methods*)) - (.next-methods. (cdr *next-methods*))) - (flet (,@(and call-next-method-p '((call-next-method (&rest cnm-args) - (if .next-method. - (let ((*next-methods* .next-methods.)) - (apply .next-method. cnm-args)) - (error "No next method."))))) - ,@(and next-method-p-p '((next-method-p nil (not (null .next-method.)))))) - ,@walked-lambda-body)))) - ((null applyp) - - ;; This method doesn't accept any &mumble arguments. But we do have to save the original - ;; arguments (this is because call-next-method is being called with no arguments). Have to be - ;; careful though, there may be multiple calls to call-next-method, all we know is that at least - ;; one of them is with no arguments. - `(lambda ,original-args - (let ((.next-method. (car *next-methods*)) - (.next-methods. (cdr *next-methods*))) - (flet (,@(and call-next-method-p - `((call-next-method (&rest cnm-args) - (if .next-method. - (let ((*next-methods* .next-methods.)) - (if cnm-args - (apply .next-method. cnm-args) - (funcall .next-method. ,@original-args))) - (error "No next method."))))) - ,@(and next-method-p-p '((next-method-p nil (not (null .next-method.)))))) - (let* (,@(mapcar #'list (remtail lambda-list (memq '&aux lambda-list)) - original-args) - ,@aux-bindings) - ,@walked-declarations - ,@walked-lambda-body))))) - (t - - ;; This is the fully general case. We must allow for the lexical functions being used inside the - ;; default value forms of &mumble arguments, and if must allow for call-next-method being called - ;; with no arguments. - `(lambda - ,original-args - (let - ((.next-method. (car *next-methods*)) - (.next-methods. (cdr *next-methods*))) - (flet (,@(and call-next-method-p - `((call-next-method (&rest cnm-args) - (if .next-method. - (let ((*next-methods* .next-methods.)) - (if cnm-args - (apply .next-method. cnm-args) - (apply .next-method. ,@(remove '&rest original-args)))) - (error "No next method."))))) - ,@(and next-method-p-p '((next-method-p nil (not (null .next-method.)))))) - (apply #',walked-lambda ,@(remove '&rest original-args)))))))) - -(defun make-parameter-references (specialized-lambda-list required-parameters declarations - generic-function-name specializers) - (flet ((ignoredp (symbol) - (dolist (decl (cdar declarations)) - (when (and (eq (car decl) - 'ignore) - (memq symbol (cdr decl))) - (return t))))) - (gathering ((references (collecting))) - (iterate ((s (list-elements specialized-lambda-list)) - (p (list-elements required-parameters))) - (progn p) - (cond ((not (listp s))) - ((ignoredp (car s)) - (warn "In defmethod ~S ~S, there is a~%~ - redundant ignore declaration for the parameter ~S." generic-function-name - specializers (car s))) - (t (gather (car s) - references))))))) - -(defvar *method-function-plist* (make-hash-table :test #'eq)) - -(defun method-function-plist (method-function) - (gethash method-function *method-function-plist*)) - -(defun |SETF CLOS METHOD-FUNCTION-PLIST| (val method-function) - (setf (gethash method-function *method-function-plist*) - val)) - -(defun method-function-get (method-function key) - (getf (method-function-plist method-function) - key)) - -(defun |SETF CLOS METHOD-FUNCTION-GET| (val method-function key) - (setf (getf (method-function-plist method-function) - key) - val)) - -(defun method-function-isl (method-function) - (method-function-get method-function :isl)) - -(defun method-function-needs-next-methods-p (method-function) - (method-function-get method-function :needs-next-methods-p)) - -(defun load-defmethod (class name quals specls ll doc isl-cache-symbol plist fn) - (when (listp name) - (do-standard-defsetf-1 (cadr name))) - (let ((method-spec (make-method-spec name quals specls))) - (record-definition 'method method-spec) - (setq fn (set-function-name fn method-spec)) - (load-defmethod-internal name quals specls ll doc isl-cache-symbol plist fn class))) - -(defun load-defmethod-internal (gf-spec qualifiers specializers lambda-list doc isl-cache-symbol - plist fn method-class) - (when (listp gf-spec) - (do-standard-defsetf-1 (cadr gf-spec))) - (when plist - (setq plist (copy-list plist)) - ; Do this to keep from affecting the - ; plist that is about to be dumped when - ; we are compiling. - (let ((uisl (getf plist :isl)) - (isl nil)) - (when uisl - (setq isl (intern-slot-name-lists uisl)) - (setf (getf plist :isl) - isl)) - (when isl-cache-symbol - (setf (getf plist :isl-cache-symbol) - isl-cache-symbol) - (set isl-cache-symbol isl))) - (setf (method-function-plist fn) - plist)) - (let ((method (add-named-method gf-spec qualifiers specializers lambda-list fn :documentation - doc :definition-source `((defmethod ,gf-spec ,@qualifiers ,specializers) - ,(load-truename))))) - (unless (or (eq method-class 'standard-method) - (eq (find-class method-class nil) - (class-of method))) - (format *error-output* "At the time the method with qualifiers ~:~S and~%~ - specializers ~:S on the generic function ~S~%~ - was compiled, the method-class for that generic function was~%~ - ~S. But, the method class is now ~S, this~%~ - may mean that this method was compiled improperly." qualifiers specializers gf-spec - method-class (class-name (class-of method)))) - method)) - -(defun make-method-spec (gf-spec qualifiers unparsed-specializers) - `(method ,gf-spec ,@qualifiers ,unparsed-specializers)) - - ; Early generic-function support - - - -;;; - - -(defvar *early-generic-functions* nil) - -(defun ensure-generic-function (function-specifier &rest all-keys &key environment &allow-other-keys) - (declare (ignore environment)) - (let ((existing (and (gboundp function-specifier) - (gdefinition function-specifier)))) - (if (and existing (eq *boot-state* 'complete) - (null (generic-function-p existing))) - (generic-clobbers-function function-specifier) - (apply #'ensure-generic-function-using-class existing function-specifier all-keys)))) - -(defun generic-clobbers-function (function-specifier) - (error "~S already names an ordinary function or a macro,~%~ - you may want to replace it with a generic function, but doing so~%~ - will require that you decide what to do with the existing function~%~ - definition.~%~ - The CLOS-specific function MAKE-SPECIALIZABLE may be useful to you." - function-specifier)) - - -;;; This is the early definition of ensure-generic-function-using-class. The static-slots field of -;;; the funcallable instances used as early generic functions is used to store the early methods and -;;; early discriminator code for the early generic function. The static slots field of the fins -;;; contains a list whose: CAR - a list of the early methods on this early gf CADR - the -;;; early discriminator code for this method - - -(defun ensure-generic-function-using-class (existing spec &rest keys) - (declare (ignore keys)) - (if* existing existing (pushnew spec *early-generic-functions* :test #'equal) - (let ((fin (allocate-funcallable-instance-1))) - (setf (gdefinition spec) - fin) - (setf (fsc-instance-slots fin) - (list nil nil)) - fin))) - -(defun early-gf-p (x) - (and (fsc-instance-p x) - (listp (fsc-instance-slots x)))) - -(defmacro early-gf-methods (early-gf) - ; These are macros so that - `(car (fsc-instance-slots ,early-gf))) - - ; they can be setf'd. - - -(defmacro early-gf-discriminator-code (early-gf) - ; - `(cadr (fsc-instance-slots ,early-gf))) - - ; - - -(defmacro real-ensure-gf-internal (gf-class all-keys env) - `(progn (cond ((symbolp ,gf-class) - (setq ,gf-class (find-class ,gf-class t ,env))) - ((classp ,gf-class)) - (t (error "The :GENERIC-FUNCTION-CLASS argument (~S) was neither a~%~ - class nor a symbol that names a class." ,gf-class))) - (remf ,all-keys :generic-function-class) - (remf ,all-keys :environment) - (let ((combin (getf ,all-keys :method-combination '.shes-not-there.))) - (unless (eq combin '.shes-not-there.) - (setf (getf ,all-keys :method-combination) - (find-method-combination (class-prototype ,gf-class) - (car combin) - (cdr combin))))))) - -(defun real-ensure-gf-using-class--generic-function (existing function-specifier &rest all-keys &key - environment (generic-function-class - 'standard-generic-function - gf-class-p) - &allow-other-keys) - (declare (ignore function-specifier)) - (real-ensure-gf-internal generic-function-class all-keys environment) - (unless (or (null gf-class-p) - (eq (class-of existing) - generic-function-class)) - (change-class existing generic-function-class)) - (apply #'reinitialize-instance existing all-keys)) - -(defun real-ensure-gf-using-class--null (existing function-specifier &rest all-keys &key environment - (generic-function-class 'standard-generic-function) - &allow-other-keys) - (declare (ignore existing)) - (real-ensure-gf-internal generic-function-class all-keys environment) - (setf (gdefinition function-specifier) - (apply #'make-instance generic-function-class :name function-specifier all-keys))) - -(defun early-make-a-method (class qualifiers arglist specializers function doc &optional slot-name) - (let ((parsed nil) - (unparsed nil)) - - ;; Figure out whether we got class objects or class names as the specializers and set - ;; parsed and unparsed appropriately. If we got class objects, then we can compute - ;; unparsed, but if we got class names we don't try to compute parsed. Note that the use - ;; of not symbolp in this call to every should be read as 'classp' we can't use classp - ;; itself because it doesn't exist yet. - (if (every #'(lambda (s) - (not (symbolp s))) - specializers) - (setq parsed specializers unparsed (mapcar #'(lambda (s) - (if (eq s 't) - 't - (class-name s))) - specializers)) - (setq unparsed specializers parsed nil)) - (list :early-method ; This is an early method dammit! - function - ; Function is here for the benefit of - ; early-lookup-method. - parsed - ; The parsed specializers. This is - ; used by early-method-specializers to - ; cache the parse. Note that this only - ; comes into play when there is more - ; than one early method on an early gf. - (list class ; A list to which real-make-a-method - qualifiers - ; can be applied to make a real method - arglist - ; corresponding to this early one. - unparsed function doc slot-name)))) - -(defun real-make-a-method (class qualifiers lambda-list specializers function doc &optional slot-name - ) - - ;; Hmm what is this use of when buying me?? - (when (some #'(lambda (x) - (and (neq x 't) - (symbolp x))) - specializers) - (setq specializers (parse-specializers specializers))) - (make-instance class :qualifiers qualifiers :lambda-list lambda-list :specializers - specializers :function function :documentation doc :slot-name slot-name - :allow-other-keys t)) - -(defun early-method-function (early-method) - (cadr early-method)) - - -;;; Fetch the specializers of an early method. This is basically just a simple accessor except that -;;; when the second argument is t, this converts the specializers from symbols into class objects. -;;; The class objects are cached in the early method, this makes bootstrapping faster because the -;;; class objects only have to be computed once. NOTE: the second argument should only be passed as -;;; T by early-lookup-method. this is to implement the rule that only when there is more than one -;;; early method on a generic function is the conversion from class names to class objects done. the -;;; corresponds to the fact that we are only allowed to have one method on any generic function up -;;; until the time classes exist. - - -(defun early-method-specializers (early-method &optional objectsp) - (if (and (listp early-method) - (eq (car early-method) - :early-method)) - (cond ((eq objectsp 't) - (or (caddr early-method) - (setf (caddr early-method) - (mapcar #'find-class (cadddr (cadddr early-method)))))) - (t (cadddr (cadddr early-method)))) - (error "~S is not an early-method." early-method))) - -(defun early-method-qualifiers (early-method) - (cadr (cadddr early-method))) - -(defun early-add-named-method (generic-function-name qualifiers specializers arglist function &rest - options) - (declare (ignore options)) - (let* ((gf (ensure-generic-function generic-function-name)) - (existing (dolist (m (early-gf-methods gf)) - (when (and (equal (early-method-specializers m) - specializers) - (equal (early-method-qualifiers m) - qualifiers)) - (return m)))) - (new (make-a-method 'standard-method qualifiers arglist specializers function nil))) - (when existing (remove-method gf existing)) - (add-method gf new))) - - -;;; This is the early version of add-method. Later this will become a generic function. See -;;; fix-early-generic-functions which has special knowledge about add-method. - - -(defun add-method (generic-function method) - (when (not (fsc-instance-p generic-function)) - (error "Early add-method didn't get a funcallable instance.")) - (when (not (and (listp method) - (eq (car method) - :early-method))) - (error "Early add-method didn't get an early method.")) - (push method (early-gf-methods generic-function)) - (early-update-discriminator-code generic-function)) - - -;;; This is the early version of remove method. - - -(defun remove-method (generic-function method) - (when (not (fsc-instance-p generic-function)) - (error "Early remove-method didn't get a funcallable instance.")) - (when (not (and (listp method) - (eq (car method) - :early-method))) - (error "Early remove-method didn't get an early method.")) - (setf (early-gf-methods generic-function) - (remove method (early-gf-methods generic-function))) - (early-update-discriminator-code generic-function)) - - -;;; And the early version of get-method. - - -(defun get-method (generic-function qualifiers specializers &optional (errorp t)) - (if (early-gf-p generic-function) - (or (dolist (m (early-gf-methods generic-function)) - (when (and (or (equal (early-method-specializers m nil) - specializers) - (equal (early-method-specializers m 't) - specializers)) - (equal (early-method-qualifiers m) - qualifiers)) - (return m))) - (if errorp - (error "Can't get early method.") - nil)) - (real-get-method generic-function qualifiers specializers errorp))) - -(defun early-update-discriminator-code (generic-function) - (let* ((methods (early-gf-methods generic-function)) - (early-dfun (cond ((null methods) - #'(lambda (&rest ignore) - (declare (ignore ignore)) - (error - "Called an early generic-function that ~ - has no methods?"))) - ((null (cdr methods)) - - ;; If there is only one method, just use that method's function. - ;; This corresponds to the important fact that early - ;; generic-functions with only one method always call that method - ;; when they are called. If there is more than one method, we have - ;; to install a simple little discriminator-code for this generic - ;; function. - (cadr (car methods))) - (t #'(lambda (&rest args) - (early-dfun methods args)))))) - (set-funcallable-instance-function generic-function early-dfun) - (setf (early-gf-discriminator-code generic-function) - early-dfun))) - -(defun early-get-cpl (object) - (bootstrap-get-slot 'std-class ; HMMM? should be CLOS-CLASS - (class-of object) - 'class-precedence-list)) - -(defun early-sort-methods (list args) - (if (null (cdr list)) - list - (sort list #'(lambda (specls-1 specls-2) - (iterate ((s1 (list-elements specls-1)) - (s2 (list-elements specls-2)) - (a (list-elements args))) - (cond ((eq s1 s2)) - ((eq s2 *the-class-t*) - (return t)) - ((eq s1 *the-class-t*) - (return nil)) - (t (return (memq s2 (memq s1 (early-get-cpl a)))))))) - :key - #'(lambda (em) - (early-method-specializers em t))))) - -(defun early-dfun (methods args) - (let ((primary nil) - (before nil) - (after nil) - (around nil)) - (dolist (method methods) - (let* ((specializers (early-method-specializers method t)) - (qualifiers (early-method-qualifiers method)) - (args args) - (specs specializers)) - (when (loop (when (or (null args) - (null specs)) - - - ;; If we are out of specs, then we must be in the optional, rest or - ;; keywords arguments. This method is applicable to these - ;; arguments. Return T. - (return t)) - (let ((arg (pop args)) - (spec (pop specs))) - (unless (or (eq spec *the-class-t*) - (memq spec (early-get-cpl arg))) - (return nil)))) - (cond ((null qualifiers) - (push method primary)) - ((equal qualifiers '(:before)) - (push method before)) - ((equal qualifiers '(:after)) - (push method after)) - ((equal qualifiers '(:around)) - (push method around)) - (t (error "Unrecognized qualifer in early method.")))))) - (setq primary (early-sort-methods primary args) - before - (early-sort-methods before args) - after - (early-sort-methods after args) - around - (early-sort-methods around args)) - (flet ((do-main-combined-method (arguments) - (dolist (m before) - (apply (cadr m) - arguments)) - (multiple-value-prog1 (let ((*next-methods* (mapcar #'car (cdr primary)))) - (apply (cadar primary) - arguments)) - (dolist (m after) - (apply (cadr m) - arguments))))) - (if (null around) - (do-main-combined-method args) - (let ((*next-methods* (append (mapcar #'cadr (cdr around)) - #'do-main-combined-method))) - (apply (caar around) - args)))))) - -(defun - fix-early-generic-functions - (&optional noisyp) - (allocate-instance (find-class 'standard-generic-function)) - ; Be sure this class has an instance. - (let* ((class (find-class 'standard-generic-function)) - (wrapper (class-wrapper class)) - (n-static-slots (class-no-of-instance-slots class)) - (default-initargs (default-initargs class nil)) - (*invalidate-discriminating-function-force-p* t)) - (flet ((fix-structure (gf) - (let ((static-slots (%allocate-static-slot-storage--class n-static-slots))) - (setf (fsc-instance-wrapper gf) - wrapper - (fsc-instance-slots gf) - static-slots)))) - (dolist (early-gf-spec *early-generic-functions*) - (when noisyp (format t "~&~S..." early-gf-spec)) - (let* ((early-gf (gdefinition early-gf-spec)) - (early-static-slots (fsc-instance-slots early-gf)) - (early-discriminator-code nil) - (early-methods nil) - (methods nil) - (aborted t)) - (flet ((trampoline (&rest args) - (apply early-discriminator-code args))) - (if (not (listp early-static-slots)) - (when noisyp (format t "already fixed?")) - (unwind-protect - (progn (setq early-discriminator-code ( - early-gf-discriminator-code - early-gf)) - (setq early-methods (early-gf-methods early-gf)) - (setf (gdefinition early-gf-spec) - #'trampoline) - (when noisyp (format t "trampoline...")) - (fix-structure early-gf) - (when noisyp (format t "fixed...")) - (apply #'initialize-instance early-gf :name early-gf-spec - default-initargs) - (dolist (early-method early-methods) - (destructuring-bind (class quals lambda-list specs fn - doc slot-name) - (cadddr early-method) - (setq specs (early-method-specializers - early-method t)) - (let ((method (real-make-a-method class quals - lambda-list specs fn doc - slot-name))) - (real-add-method early-gf method) - (push method methods) - (when noisyp (format t "m"))))) - (setf (slot-value early-gf 'name) - early-gf-spec) - (fixup-magic-generic-function early-gf-spec early-methods - early-gf (reverse methods)) - (setq aborted nil)) - (setf (gdefinition early-gf-spec) - early-gf) - (when noisyp (format t ".")) - (when aborted - (setf (fsc-instance-slots early-gf) - early-static-slots))))))) - (dolist (fns *early-functions*) - (setf (symbol-function (car fns)) - (symbol-function (caddr fns)))) - (dolist (fixup *generic-function-fixups*) - (let ((fspec (car fixup)) - (methods (cdr fixup)) - (gf (make-instance 'standard-generic-function))) - (set-function-name gf fspec) - (setf (generic-function-name gf) - fspec) - (dolist (method methods) - (destructuring-bind (lambda-list specializers method-fn-name) - method - (let* ((fn (if method-fn-name - (symbol-function method-fn-name) - (symbol-function fspec))) - (method (make-a-method 'standard-method nil lambda-list - specializers fn nil))) - (real-add-method gf method)))) - (setf (gdefinition fspec) - gf)))))) - - -;;; parse-defmethod is used by defmethod to parse the &rest argument into the 'real' arguments. -;;; This is where the syntax of defmethod is really implemented. - - -(defun parse-defmethod (cdr-of-form) - (declare (values name qualifiers specialized-lambda-list body)) - (let ((name (pop cdr-of-form)) - (qualifiers nil) - (spec-ll nil)) - (loop (if (and (car cdr-of-form) - (atom (car cdr-of-form))) - (push (pop cdr-of-form) - qualifiers) - (return (setq qualifiers (nreverse qualifiers))))) - (setq spec-ll (pop cdr-of-form)) - (values name qualifiers spec-ll cdr-of-form))) - -(defun parse-specializers (specializers) - (flet ((parse (spec) - (cond ((symbolp spec) - (or (find-class spec nil) - (error - "~S used as a specializer,~%~ - but is not the name of a class." spec))) - ((and (listp spec) - (eq (car spec) - 'eql) - (null (cddr spec))) - (make-instance 'eql-specializer :object (cadr spec)) - ; *EQL* spec - ) - (t (error "~S is not a legal specializer." spec))))) - (mapcar #'parse specializers))) - -(defun unparse-specializers (specializers-or-method) - (if (listp specializers-or-method) - (flet ((unparse (spec) - (cond ((classp spec) - (or (class-name spec) - spec)) - ((eql-specializer-p spec) - ; *EQL* - (eql-specializer-object spec) - ; (and (listp spec) (eq (car spec) - ; 'eql)) spec - ) - (t (error "~S is not a legal specializer." spec))))) - (mapcar #'unparse specializers-or-method)) - (unparse-specializers (method-specializers specializers-or-method)))) - -(defun parse-method-or-spec (spec &optional (errorp t)) - (declare (values generic-function method method-name)) - (let (gf method name temp) - (if (method-p spec) - (setq method spec gf (method-generic-function method) - temp - (and gf (generic-function-name gf)) - name - (if temp - (intern-function-name (make-method-spec temp (method-qualifiers method) - (unparse-specializers (method-specializers - method)))) - (make-symbol (format nil "~S" method)))) - (multiple-value-bind (gf-spec quals specls) - (parse-defmethod spec) - (and (setq gf (and (or errorp (gboundp gf-spec)) - (gdefinition gf-spec))) - (let ((nreq (compute-discriminating-function-arglist-info gf))) - (setq specls (append (parse-specializers specls) - (make-list (- nreq (length specls)) - :initial-element *the-class-t*))) - (and (setq method (get-method gf quals specls errorp)) - (setq name (intern-function-name (make-method-spec gf-spec - quals specls)))))))) - (values gf method name))) - -(defun specialized-lambda-list-parameters (specialized-lambda-list) - (multiple-value-bind (parameters ignore1 ignore2) - (parse-specialized-lambda-list specialized-lambda-list) - (declare (ignore ignore1 ignore2)) - parameters)) - -(defun specialized-lambda-list-lambda-list (specialized-lambda-list) - (multiple-value-bind (ignore1 lambda-list ignore2) - (parse-specialized-lambda-list specialized-lambda-list) - (declare (ignore ignore1 ignore2)) - lambda-list)) - -(defun specialized-lambda-list-specializers (specialized-lambda-list) - (multiple-value-bind (ignore1 ignore2 specializers) - (parse-specialized-lambda-list specialized-lambda-list) - (declare (ignore ignore1 ignore2)) - specializers)) - -(defun specialized-lambda-list-required-parameters (specialized-lambda-list) - (multiple-value-bind (ignore1 ignore2 ignore3 required-parameters) - (parse-specialized-lambda-list specialized-lambda-list) - (declare (ignore ignore1 ignore2 ignore3)) - required-parameters)) - -(defun parse-specialized-lambda-list (arglist &optional post-keyword) - (declare (values parameters lambda-list specializers required-parameters)) - (let ((arg (car arglist))) - (cond ((null arglist) - (values nil nil nil nil)) - ((eq arg '&aux) - (values nil arglist nil)) - ((memq arg lambda-list-keywords) - (unless (memq arg '(&optional &rest &key &allow-other-keys &aux)) - - ;; Warn about non-standard lambda-list-keywords, but then go on to treat them - ;; like a standard lambda-list-keyword what with the warning its probably ok. - (warn "Unrecognized lambda-list keyword ~S in arglist.~%~ - Assuming that the symbols following it are parameters,~%~ - and not allowing any parameter specializers to follow~%~ - to follow it." arg)) - - ;; When we are at a lambda-list-keyword, the parameters don't include the - ;; lambda-list-keyword; the lambda-list does include the lambda-list-keyword; and - ;; no specializers are allowed to follow the lambda-list-keywords (at least for - ;; now). - (multiple-value-bind (parameters lambda-list) - (parse-specialized-lambda-list (cdr arglist) - t) - (values parameters (cons arg lambda-list) - nil nil))) - (post-keyword - - ;; After a lambda-list-keyword there can be no specializers. - (multiple-value-bind (parameters lambda-list) - (parse-specialized-lambda-list (cdr arglist) - t) - (values (cons (if (listp arg) - (car arg) - arg) - parameters) - (cons arg lambda-list) - nil nil))) - (t (multiple-value-bind (parameters lambda-list specializers required) - (parse-specialized-lambda-list (cdr arglist)) - (values (cons (if (listp arg) - (car arg) - arg) - parameters) - (cons (if (listp arg) - (car arg) - arg) - lambda-list) - (cons (if (listp arg) - (cadr arg) - 't) - specializers) - (cons (if (listp arg) - (car arg) - arg) - required))))))) - -(eval-when (load eval) - (setq *boot-state* 'early)) - -(defmacro with-slots (slots instance &body body &environment env) - (let ((gensym (gensym)) - (specs (mapcar #'(lambda (ss) - (if (consp ss) - (list (car ss) - (variable-lexical-p (car ss) - env) - (cadr ss)) - (list ss (variable-lexical-p ss env) - ss))) - slots))) - (expand-with-slots specs body env gensym instance - #'(lambda (s) - `(slot-value ,gensym ',s))))) - -(defmacro with-accessors (slot-accessor-pairs instance &body body &environment env) - (let ((gensym (gensym)) - (specs (mapcar #'(lambda (ss) - (list (car ss) - (variable-lexical-p (car ss) - env) - (cadr ss))) - slot-accessor-pairs))) - (expand-with-slots specs body env gensym instance #'(lambda (a) - `(,a ,gensym))))) - -(defun expand-with-slots (specs body env gensym instance translate-fn) - `(let ((,gensym ,instance)) - ,@(and (symbolp instance) - `((declare (variable-rebinding ,gensym ,instance)))) - ,gensym - ,@(cdr (walk-form `(progn ,@body) - env - #'(lambda (f c e) - (expand-with-slots-internal specs f c translate-fn e)))))) - -(defun expand-with-slots-internal (specs form context translate-fn env) - (let ((entry nil)) - (cond ((not (eq context :eval)) - form) - ((symbolp form) - (if (and (setq entry (assoc form specs)) - (eq (cadr entry) - (variable-lexical-p form env))) - (funcall translate-fn (caddr entry)) - form)) - ((not (listp form)) - form) - ((member (car form) - '(setq setf)) - - ;; Have to be careful. We must only convert the form to a SETF form when we - ;; convert one of the 'logical' variables to a form Otherwise we will get looping - ;; in implementations where setf is a macro which expands into setq. - (let ((kind (car form))) - (labels ((scan-setf (tail) - (if (null tail) - nil - (walker::relist* tail - (if (and (setq entry (assoc (car tail) - specs)) - (eq (cadr entry) - (variable-lexical-p (car tail) - env))) - (progn (setq kind 'setf) - (funcall translate-fn (caddr entry))) - (car tail)) - (cadr tail) - (scan-setf (cddr tail)))))) - (let (new-tail) - (setq new-tail (scan-setf (cdr form))) - (walker::recons form kind new-tail))))) - ((eq (car form) - 'multiple-value-setq) - (let* ((vars (cadr form)) - (gensyms (mapcar #'(lambda (i) - (declare (ignore i)) - (gensym)) - vars))) - `(multiple-value-bind ,gensyms ,(caddr form) - . ,(reverse (mapcar #'(lambda (v g) - `(setf ,v ,g)) - vars gensyms))))) - (t form)))) diff --git a/obsolete/clos/2.0/braid.lisp b/obsolete/clos/2.0/braid.lisp deleted file mode 100644 index 80424b6a..00000000 --- a/obsolete/clos/2.0/braid.lisp +++ /dev/null @@ -1,503 +0,0 @@ -;;;-*-Mode:LISP; Package:(CLOS (LISP WALKER)); Base:10; Syntax:Common-lisp -*- -;;; -;;; ************************************************************************* -;;; Copyright (c) 1991 Venue -;;; All rights reserved. -;;; ************************************************************************* -;;; -;;; Bootstrapping the meta-braid. -;;; -;;; The code in this file takes the early definitions that have been saved -;;; up and actually builds those class objects. This work is largely driven -;;; off of those class definitions, but the fact that STANDARD-CLASS is the -;;; class of all metaclasses in the braid is built into this code pretty -;;; deeply. -;;; -;;; - -(in-package 'clos) - -(defun early-class-definition (class-name) - (or (find class-name *early-class-definitions* :key #'ecd-class-name) - (error "~S is not a class in *early-class-definitions*." class-name))) - -(defun canonical-slot-name (canonical-slot) - (getf canonical-slot :name)) - -(defun early-collect-inheritance (class-name) - (declare (values slots cpl default-initargs direct-subclasses)) - (let ((cpl (early-collect-cpl class-name))) - (values (early-collect-slots cpl) - cpl - (early-collect-default-initargs cpl) - (gathering1 (collecting) - (dolist (definition *early-class-definitions*) - (when (memq class-name (ecd-superclass-names definition)) - (gather1 (ecd-class-name definition)))))))) - -(defun early-collect-cpl (class-name) - (labels ((walk (c) - (let* ((definition (early-class-definition c)) - (supers (ecd-superclass-names definition))) - (cons c - (apply #'append (mapcar #'early-collect-cpl supers)))))) - (remove-duplicates (walk class-name) :from-end nil :test #'eq))) - -(defun early-collect-slots (cpl) - (let* ((definitions (mapcar #'early-class-definition cpl)) - (super-slots (mapcar #'ecd-canonical-slots definitions)) - (slots (apply #'append (reverse super-slots)))) - (dolist (s1 slots) - (let ((name1 (canonical-slot-name s1))) - (dolist (s2 (cdr (memq s1 slots))) - (when (eq name1 (canonical-slot-name s2)) - (error "More than one early class defines a slot with the~%~ - name ~S. This can't work because the bootstrap~%~ - object system doesn't know how to compute effective~%~ - slots." - name1))))) - slots)) - -(defun early-collect-default-initargs (cpl) - (let ((default-initargs ())) - (dolist (class-name cpl) - (let ((definition (early-class-definition class-name))) - (dolist (option (ecd-other-initargs definition)) - (unless (eq (car option) :default-initargs) - (error "The defclass option ~S is not supported by the bootstrap~%~ - object system." - (car option))) - (setq default-initargs - (nconc default-initargs (reverse (cdr option))))))) - (reverse default-initargs))) - - -;;; -;;; bootstrap-get-slot and bootstrap-set-slot are used to access and change -;;; the values of slots during bootstrapping. During bootstrapping, there -;;; are only two kinds of objects whose slots we need to access, CLASSes -;;; and SLOTDs. The first argument to these functions tells whether the -;;; object is a CLASS or a SLOTD. -;;; -;;; Note that the way this works it stores the slot in the same place in -;;; memory that the full object system will expect to find it later. This -;;; is critical to the bootstrapping process, the whole changeover to the -;;; full object system is predicated on this. -;;; -;;; One important point is that the layout of standard classes and standard -;;; slots must be computed the same way in this file as it is by the full -;;; object system later. -;;; -(defun bootstrap-get-slot (type object slot-name) - (let ((index (bootstrap-slot-index type slot-name))) - (svref (std-instance-slots object) index))) - -(defun bootstrap-set-slot (type object slot-name new-value) - (let ((index (bootstrap-slot-index type slot-name))) - (setf (svref (std-instance-slots object) index) new-value))) - -(defvar *std-class-slots* - (mapcar #'canonical-slot-name - (early-collect-inheritance 'standard-class))) - -(defvar *bin-class-slots* - (mapcar #'canonical-slot-name - (early-collect-inheritance 'built-in-class))) - -(defvar *std-slotd-slots* - (mapcar #'canonical-slot-name - (early-collect-inheritance 'standard-slot-definition))) - -(defun bootstrap-slot-index (type slot-name) - (or (position slot-name (ecase type - (std-class *std-class-slots*) - (bin-class *bin-class-slots*) - (std-slotd *std-slotd-slots*))) - (error "~S not found" slot-name))) - - -;;; -;;; bootstrap-meta-braid -;;; -;;; This function builds the base metabraid from the early class definitions. -;;; -(defun bootstrap-meta-braid () - (let* ((std-class-size (length *std-class-slots*)) - (std-class (%allocate-instance--class std-class-size)) - (std-class-wrapper (make-wrapper std-class)) - (built-in-class (%allocate-instance--class std-class-size)) - (built-in-class-wrapper (make-wrapper built-in-class)) - (direct-slotd (%allocate-instance--class std-class-size)) - (effective-slotd (%allocate-instance--class std-class-size)) - (direct-slotd-wrapper (make-wrapper direct-slotd)) - (effective-slotd-wrapper (make-wrapper effective-slotd))) - ;; - ;; First, make a class metaobject for each of the early classes. For - ;; each metaobject we also set its wrapper. Except for the class T, - ;; the wrapper is always that of STANDARD-CLASS. - ;; - (dolist (definition *early-class-definitions*) - (let* ((name (ecd-class-name definition)) - (meta (ecd-metaclass definition)) - (class (case name - (standard-class std-class) - (standard-direct-slot-definition direct-slotd) - (standard-effective-slot-definition effective-slotd) - (built-in-class built-in-class) - (otherwise - (%allocate-instance--class std-class-size))))) - (unless (eq name t) - (inform-type-system-about-class class name)) - (setf (std-instance-wrapper class) - (ecase meta - (standard-class std-class-wrapper) - (built-in-class built-in-class-wrapper))) - (setf (find-class name) class))) - ;; - ;; - ;; - (dolist (definition *early-class-definitions*) - (let ((name (ecd-class-name definition)) - (source (ecd-source definition)) - (direct-supers (ecd-superclass-names definition)) - (direct-slots (ecd-canonical-slots definition)) - (other-initargs (ecd-other-initargs definition))) - (let ((direct-default-initargs - (getf other-initargs :default-initargs))) - (multiple-value-bind (slots cpl default-initargs direct-subclasses) - (early-collect-inheritance name) - (let* ((class (find-class name)) - (wrapper - (cond - ((eq class std-class) std-class-wrapper) - ((eq class direct-slotd) direct-slotd-wrapper) - ((eq class effective-slotd) effective-slotd-wrapper) - ((eq class built-in-class) built-in-class-wrapper) - (t (make-wrapper class)))) - (proto nil)) - (cond ((eq name 't) - (setq *the-wrapper-of-t* wrapper - *the-class-t* class)) - ((memq name '(standard-object - standard-class - standard-effective-slot-definition)) - (set (intern (format nil "*THE-CLASS-~A*" (symbol-name name)) - *the-clos-package*) - class))) - (dolist (slot slots) - (unless (eq (getf slot :allocation :instance) :instance) - (error "Slot allocation ~S not supported in bootstrap."))) - - (setf (wrapper-instance-slots-layout wrapper) - (mapcar #'canonical-slot-name slots)) - (setf (wrapper-class-slots wrapper) - ()) - - (setq proto (%allocate-instance--class (length slots))) - (setf (std-instance-wrapper proto) wrapper) - - (setq direct-slots - (bootstrap-make-slot-definitions name direct-slots - direct-slotd-wrapper nil)) - (setq slots - (bootstrap-make-slot-definitions name slots - effective-slotd-wrapper t)) - - (bootstrap-initialize-std-class - class name source - direct-supers direct-subclasses cpl wrapper - direct-slots slots direct-default-initargs default-initargs - proto) - - (dolist (slotd direct-slots) - (bootstrap-accessor-definitions - name - (bootstrap-get-slot 'std-slotd slotd 'name) - (bootstrap-get-slot 'std-slotd slotd 'readers) - (bootstrap-get-slot 'std-slotd slotd 'writers)))))))))) - -(defun bootstrap-accessor-definitions (class-name slot-name readers writers) - (flet ((do-reader-definition (reader) - (add-method - (ensure-generic-function reader) - (make-a-method - 'standard-reader-method - () - (list class-name) - (list class-name) - (make-std-reader-method-function slot-name) - "automatically generated reader method" - slot-name))) - (do-writer-definition (writer) - (add-method - (ensure-generic-function writer) - (make-a-method - 'standard-writer-method - () - (list 'new-value class-name) - (list 't class-name) - (make-std-writer-method-function slot-name) - "automatically generated writer method" - slot-name)))) - (dolist (reader readers) (do-reader-definition reader)) - (dolist (writer writers) (do-writer-definition writer)))) - -;;; -;;; Initialize a standard class metaobject. -;;; -(defun bootstrap-initialize-std-class - (class - name definition-source direct-supers direct-subclasses cpl wrapper - direct-slots slots direct-default-initargs default-initargs proto) - (flet ((classes (names) (mapcar #'find-class names)) - (set-slot (slot-name value) - (bootstrap-set-slot 'std-class class slot-name value))) - - (set-slot 'name name) - (set-slot 'source definition-source) - (set-slot 'class-precedence-list (classes cpl)) - (set-slot 'direct-superclasses (classes direct-supers)) - (set-slot 'direct-slots direct-slots) - (set-slot 'direct-subclasses (classes direct-subclasses)) - (set-slot 'direct-methods (cons nil nil)) - (set-slot 'no-of-instance-slots (length slots)) - (set-slot 'slots slots) - (set-slot 'wrapper wrapper) - (set-slot 'prototype proto) - (set-slot 'plist - `(,@(and direct-default-initargs - `(direct-default-initargs ,direct-default-initargs)) - ,@(and default-initargs - `(default-initargs ,default-initargs)))) - )) - -;;; -;;; Initialize a built-in-class metaobject. -;;; -(defun bootstrap-initialize-bin-class - (class - name definition-source direct-supers direct-subclasses cpl wrapper) - (flet ((classes (names) (mapcar #'find-class names)) - (set-slot (slot-name value) - (bootstrap-set-slot 'bin-class class slot-name value))) - - (set-slot 'name name) - (set-slot 'source definition-source) - (set-slot 'direct-superclasses (classes direct-supers)) - (set-slot 'direct-subclasses (classes direct-subclasses)) - (set-slot 'direct-methods (cons nil nil)) - (set-slot 'class-precedence-list (classes cpl)) - (set-slot 'wrapper wrapper))) - -(defun bootstrap-make-slot-definitions (name slots wrapper e-p) - (mapcar #'(lambda (slot) (bootstrap-make-slot-definition name slot wrapper e-p)) - slots)) - -(defun bootstrap-make-slot-definition (name slot wrapper e-p) - (let ((slotd (%allocate-instance--class (length *std-slotd-slots*)))) - (setf (std-instance-wrapper slotd) wrapper) - (flet ((get-val (name) (getf slot name)) - (set-val (name val) (bootstrap-set-slot 'std-slotd slotd name val))) - (set-val 'name (get-val :name)) - (set-val 'initform (get-val :initform)) - (set-val 'initfunction (get-val :initfunction)) - (set-val 'initargs (get-val :initargs)) - (set-val 'readers (get-val :readers)) - (set-val 'writers (get-val :writers)) - (set-val 'allocation :instance) - (set-val 'type (get-val :type)) - (set-val 'class nil) - (set-val 'instance-index nil) - (when (and (eq name 'standard-class) (eq (get-val :name) 'slots) e-p) - (setq *the-eslotd-standard-class-slots* slotd)) - slotd))) - -(defun bootstrap-built-in-classes () - ;; - ;; First make sure that all the supers listed in *built-in-class-lattice* - ;; are themselves defined by *built-in-class-lattice*. This is just to - ;; check for typos and other sorts of brainos. - ;; - (dolist (e *built-in-classes*) - (dolist (super (cadr e)) - (unless (or (eq super 't) - (assq super *built-in-classes*)) - (error "In *built-in-classes*: ~S has ~S as a super,~%~ - but ~S is not itself a class in *built-in-classes*." - (car e) super super)))) - - ;; - ;; In the first pass, we create a skeletal object to be bound to the - ;; class name. - ;; - (let* ((built-in-class (find-class 'built-in-class)) - (built-in-class-wrapper (class-wrapper built-in-class)) - (bin-class-size (length *bin-class-slots*))) - (dolist (e *built-in-classes*) - (let ((class (%allocate-instance--class bin-class-size))) - (setf (std-instance-wrapper class) built-in-class-wrapper) - (setf (find-class (car e)) class)))) - - ;; - ;; In the second pass, we initialize the class objects. - ;; - (dolist (e *built-in-classes*) - (destructuring-bind (name supers subs cpl) e - (let* ((class (find-class name)) - (wrapper (make-wrapper class))) - (set (get-built-in-class-symbol name) class) - (set (get-built-in-wrapper-symbol name) wrapper) - - (setf (wrapper-instance-slots-layout wrapper) () - (wrapper-class-slots wrapper) ()) - - (bootstrap-initialize-bin-class class - name nil - supers subs - (cons name cpl) wrapper) - )))) - - -;;; -;;; -;;; - -(defun class-of (x) (wrapper-class (wrapper-of x))) - -(defun wrapper-of (x) - (or (and (std-instance-p x) - (std-instance-wrapper x)) - (and (fsc-instance-p x) - (fsc-instance-wrapper x)) - (built-in-wrapper-of x) - (error "Can't determine wrapper of ~S" x))) - - -(eval-when (compile eval) - -(defun make-built-in-class-subs () - (mapcar #'(lambda (e) - (let ((class (car e)) - (class-subs ())) - (dolist (s *built-in-classes*) - (when (memq class (cadr s)) (pushnew (car s) class-subs))) - (cons class class-subs))) - (cons '(t) *built-in-classes*))) - -(defun make-built-in-class-tree () - (let ((subs (make-built-in-class-subs))) - (labels ((descend (class) - (cons class (mapcar #'descend (cdr (assq class subs)))))) - (descend 't)))) - -(defun make-built-in-wrapper-of-body () - (make-built-in-wrapper-of-body-1 (make-built-in-class-tree) - 'x - #'get-built-in-wrapper-symbol)) - -(defun make-built-in-wrapper-of-body-1 (tree var get-symbol) - (let ((*specials* ())) - (declare (special *specials*)) - (let ((inner (make-built-in-wrapper-of-body-2 tree var get-symbol))) - `(locally (declare (special .,*specials*)) ,inner)))) - -(defun make-built-in-wrapper-of-body-2 (tree var get-symbol) - (declare (special *specials*)) - (let ((symbol (funcall get-symbol (car tree)))) - (push symbol *specials*) - (let ((sub-tests - (mapcar #'(lambda (x) - (make-built-in-wrapper-of-body-2 x var get-symbol)) - (cdr tree)))) - `(and (typep ,var ',(car tree)) - ,(if sub-tests - `(or ,.sub-tests ,symbol) - symbol))))) -) - -(defun built-in-wrapper-of (x) - #.(make-built-in-wrapper-of-body)) - - - - -(eval-when (load eval) - (clrhash *find-class*) - (bootstrap-meta-braid) - (bootstrap-built-in-classes) - (setq *boot-state* 'braid) - (setf (symbol-function 'load-defclass) #'real-load-defclass) - ) - - -;;; -;;; All of these method definitions must appear here because the bootstrap -;;; only allows one method per generic function until the braid is fully -;;; built. -;;; -(defmethod print-object (instance stream) - (printing-random-thing (instance stream) - (let ((name (class-name (class-of instance)))) - (if name - (format stream "~S" name) - (format stream "Instance"))))) - -(defmethod print-object ((class class) stream) - (named-object-print-function class stream)) - -(defmethod print-object ((slotd standard-slot-definition) stream) - (named-object-print-function slotd stream)) - -(defun named-object-print-function (instance stream - &optional (extra nil extra-p)) - (printing-random-thing (instance stream) - (if extra-p - (format stream "~A ~S ~:S" - (capitalize-words (class-name (class-of instance))) - (slot-value-or-default instance 'name) - extra) - (format stream "~A ~S" - (capitalize-words (class-name (class-of instance))) - (slot-value-or-default instance 'name))))) - - -;;; -;;; -;;; -;(defmethod shared-initialize :after ((class class) slot-names &key name) -; (declare (ignore slot-names)) -; (setf (slot-value class 'name) name)) -; -; -;(defmethod shared-initialize :after ((class std-class) -; slot-names -; &key direct-superclasses -; direct-slots) -; (declare (ignore slot-names)) -; (setf (slot-value class 'direct-superclasses) direct-superclasses -; (slot-value class 'direct-slots) direct-slots)) - -;;; -;;; -;;; -(defmethod shared-initialize :after ((slotd standard-slot-definition) - slot-names - &key class - name - initform - initfunction - initargs - (allocation :instance) - (type t) - readers - writers) - (declare (ignore slot-names)) - (setf (slot-value slotd 'name) name - (slot-value slotd 'initform) initform - (slot-value slotd 'initfunction) initfunction - (slot-value slotd 'initargs) initargs - (slot-value slotd 'allocation) (if (eq allocation :class) class allocation) - (slot-value slotd 'type) type - (slot-value slotd 'readers) readers - (slot-value slotd 'writers) writers)) - diff --git a/obsolete/clos/2.0/cache.lisp b/obsolete/clos/2.0/cache.lisp deleted file mode 100644 index 068ab817..00000000 --- a/obsolete/clos/2.0/cache.lisp +++ /dev/null @@ -1,1089 +0,0 @@ -;;;-*-Mode:LISP; Package:(CLOS LISP 1000); Base:10; Syntax:Common-lisp -*- -;;; -;;; ************************************************************************* -;;; Copyright (c) 1991 Venue -;;; All rights reserved. -;;; ************************************************************************* -;;; -;;; The basics of the CLOS wrapper cache mechanism. -;;; - -(in-package 'clos) -;;; -;;; The caching algorithm implemented: -;;; -;;; << put a paper here >> -;;; -;;; For now, understand that as far as most of this code goes, a cache has -;;; two important properties. The first is the number of wrappers used as -;;; keys in each cache line. Throughout this code, this value is always -;;; called NKEYS. The second is whether or not the cache lines of a cache -;;; store a value. Throughout this code, this always called VALUEP. -;;; -;;; Depending on these values, there are three kinds of caches. -;;; -;;; NKEYS = 1, VALUEP = NIL -;;; -;;; In this kind of cache, each line is 1 word long. No cache locking is -;;; needed since all read's in the cache are a single value. Nevertheless -;;; line 0 (location 0) is reserved, to ensure that invalid wrappers will -;;; not get a first probe hit. -;;; -;;; To keep the code simpler, a cache lock count does appear in location 0 -;;; of these caches, that count is incremented whenever data is written to -;;; the cache. But, the actual lookup code (see make-dlap) doesn't need to -;;; do locking when reading the cache. -;;; -;;; -;;; NKEYS = 1, VALUEP = T -;;; -;;; In this kind of cache, each line is 2 words long. Cache locking must -;;; be done to ensure the synchronization of cache reads. Line 0 of the -;;; cache (location 0) is reserved for the cache lock count. Location 1 -;;; of the cache is unused (in effect wasted). -;;; -;;; NKEYS > 1 -;;; -;;; In this kind of cache, the 0 word of the cache holds the lock count. -;;; The 1 word of the cache is line 0. Line 0 of these caches is not -;;; reserved. -;;; -;;; This is done because in this sort of cache, the overhead of doing the -;;; cache probe is high enough that the 1+ required to offset the location -;;; is not a significant cost. In addition, because of the larger line -;;; sizes, the space that would be wasted by reserving line 0 to hold the -;;; lock count is more significant. -;;; - - -;;; -;;; Caches -;;; -;;; A cache is essentially just a vector. The use of the individual `words' -;;; in the vector depends on particular properties of the cache as described -;;; above. -;;; -;;; This defines an abstraction for caches in terms of their most obvious -;;; implementation as simple vectors. But, please notice that part of the -;;; implementation of this abstraction, is the function lap-out-cache-ref. -;;; This means that most port-specific modifications to the implementation -;;; of caches will require corresponding port-specific modifications to the -;;; lap code assembler. -;;; -(defmacro cache-ref (cache location) - `(svref (the simple-vector ,cache) (the fixnum ,location))) - -(defun emit-cache-ref (cache-operand location-operand) - (operand :iref cache-operand location-operand)) - - -(defun cache-size (cache) - (array-dimension (the simple-vector cache) 0)) - -(defun allocate-cache (size) - (make-array size :adjustable nil)) - -(defmacro cache-lock-count (cache) - `(cache-ref ,cache 0)) - -(defun flush-cache-internal (cache) - (without-interrupts - (fill (the simple-vector cache) nil) - (setf (cache-lock-count cache) 0)) - cache) - -(defmacro modify-cache (cache &body body) - `(without-interrupts - (multiple-value-prog1 - (progn ,@body) - (let ((old-count (cache-lock-count ,cache))) - (setf (cache-lock-count ,cache) - (if (= old-count most-positive-fixnum) 1 (1+ old-count))))))) - - - -;;; -;;; Some facilities for allocation and freeing caches as they are needed. -;;; This is done on the assumption that a better port of CLOS will arrange -;;; to cons these all the same static area. Given that, the fact that -;;; CLOS tries to reuse them should be a win. -;;; -(defvar *free-caches* (make-hash-table :size 16)) - -;;; -;;; Return a cache that has had flush-cache-internal called on it. This -;;; returns a cache of exactly the size requested, it won't ever return a -;;; larger cache. -;;; -(defun get-cache (size) - (let ((entry (gethash size *free-caches*))) - (without-interrupts - (cond ((null entry) - (setf (gethash size *free-caches*) (cons 0 nil)) - (get-cache size)) - ((null (cdr entry)) - (incf (car entry)) - (flush-cache-internal (allocate-cache size))) - (t - (let ((cache (cdr entry))) - (setf (cdr entry) (cache-ref cache 0)) - (flush-cache-internal cache))))))) - -(defun free-cache (cache) - (let ((entry (gethash (cache-size cache) *free-caches*))) - (without-interrupts - (if (null entry) - (error "Attempt to free a cache not allocated by GET-CACHE.") - (let ((thread (cdr entry))) - (loop (unless thread (return)) - (when (eq thread cache) (error "Freeing a cache twice.")) - (setq thread (cache-ref thread 0))) - (flush-cache-internal cache) ;Help the GC - (setf (cache-ref cache 0) (cdr entry)) - (setf (cdr entry) cache) - nil))))) - -;;; -;;; This is just for debugging and analysis. It shows the state of the free -;;; cache resource. -;;; -(defun show-free-caches () - (let ((elements ())) - (maphash #'(lambda (s e) (push (list s e) elements)) *free-caches*) - (setq elements (sort elements #'< :key #'car)) - (dolist (e elements) - (let* ((size (car e)) - (entry (cadr e)) - (allocated (car entry)) - (head (cdr entry)) - (free 0)) - (loop (when (null head) (return t)) - (setq head (cache-ref head 0)) - (incf free)) - (format t - "~&There ~4D are caches of size ~4D. (~D free ~3D%)" - allocated - size - free - (floor (* 100 (/ free (float allocated))))))))) - - -;;; -;;; Wrapper cache numbers -;;; - -;;; -;;; The constant WRAPPER-CACHE-NUMBER-ADDS-OK controls the number of non-zero -;;; bits wrapper cache numbers will have. -;;; -;;; The value of this constant is the number of wrapper cache numbers which -;;; can be added and still be certain the result will be a fixnum. This is -;;; used by all the code that computes primary cache locations from multiple -;;; wrappers. -;;; -;;; The value of this constant is used to derive the next two which are the -;;; forms of this constant which it is more convenient for the runtime code -;;; to use. -;;; -(eval-when (compile load eval) - -(defconstant wrapper-cache-number-adds-ok 4) - -(defconstant wrapper-cache-number-length - (- (integer-length most-positive-fixnum) - wrapper-cache-number-adds-ok)) - -(defconstant wrapper-cache-number-mask - (1- (expt 2 wrapper-cache-number-length))) - - -(defvar *get-wrapper-cache-number* (make-random-state)) - -(defun get-wrapper-cache-number () - (let ((n 0)) - (loop - (setq n - (logand wrapper-cache-number-mask - (random most-positive-fixnum *get-wrapper-cache-number*))) - (unless (zerop n) (return n))))) - - -(unless (> wrapper-cache-number-length 8) - (error "In this implementation of Common Lisp, fixnums are so small that~@ - wrapper cache numbers end up being only ~D bits long. This does~@ - not actually keep CLOS from running, but it may degrade cache~@ - performance.~@ - You may want to consider changing the value of the constant~@ - WRAPPER-CACHE-NUMBER-ADDS-OK."))) - - -;;; -;;; wrappers themselves -;;; -;;; This caching algorithm requires that wrappers have more than one wrapper -;;; cache number. You should think of these multiple numbers as being in -;;; columns. That is, for a given cache, the same column of wrapper cache -;;; numbers will be used. -;;; -;;; If at some point the cache distribution of a cache gets bad, the cache -;;; can be rehashed by switching to a different column. -;;; -;;; The columns are referred to by field number which is that number which, -;;; when used as a second argument to wrapper-ref, will return that column -;;; of wrapper cache number. -;;; -;;; This code is written to allow flexibility as to how many wrapper cache -;;; numbers will be in each wrapper, and where they will be located. It is -;;; also set up to allow port specific modifications to `pack' the wrapper -;;; cache numbers on machines where the addressing modes make that a good -;;; idea. -;;; -(eval-when (compile load eval) -(defconstant wrapper-layout - '(number - number - number - number - number - number - number - number - state - instance-slots-layout - class-slots - class)) -) - -(eval-when (compile load eval) - -(defun wrapper-field (type) - (position type wrapper-layout)) - -(defun next-wrapper-field (field-number) - (position (nth field-number wrapper-layout) - wrapper-layout - :start (1+ field-number))) - -);eval-when - -(defmacro wrapper-ref (wrapper n) - `(svref ,wrapper ,n)) - -(defun emit-wrapper-ref (wrapper-operand field-operand) - (operand :iref wrapper-operand field-operand)) - - -(defmacro wrapper-state (wrapper) - `(wrapper-ref ,wrapper ,(wrapper-field 'state))) - -(defmacro wrapper-instance-slots-layout (wrapper) - `(wrapper-ref ,wrapper ,(wrapper-field 'instance-slots-layout))) - -(defmacro wrapper-class-slots (wrapper) - `(wrapper-ref ,wrapper ,(wrapper-field 'class-slots))) - -(defmacro wrapper-class (wrapper) - `(wrapper-ref ,wrapper ,(wrapper-field 'class))) - - -(defmacro make-wrapper-internal () - `(let ((wrapper (make-array ,(length wrapper-layout) :adjustable nil))) - ,@(gathering1 (collecting) - (iterate ((i (interval :from 0)) - (desc (list-elements wrapper-layout))) - (ecase desc - (number - (gather1 `(setf (wrapper-ref wrapper ,i) - (get-wrapper-cache-number)))) - ((state instance-slots-layout class-slots class))))) - (setf (wrapper-state wrapper) 't) - wrapper)) - -(defun make-wrapper (class) - (let ((wrapper (make-wrapper-internal))) - (setf (wrapper-class wrapper) class) - wrapper)) - -;;; -;;; The wrapper cache machinery provides general mechanism for trapping on -;;; the next access to any instance of a given class. This mechanism is -;;; used to implement the updating of instances when the class is redefined -;;; (make-instances-obsolete). The same mechanism is also used to update -;;; generic function caches when there is a change to the supers of a class. -;;; -;;; Basically, a given wrapper can be valid or invalid. If it is invalid, -;;; it means that any attempt to do a wrapper cache lookup using the wrapper -;;; should trap. Also, methods on slot-value-using-class check the wrapper -;;; validity as well. This is done by calling check-wrapper-validity. -;;; - -(defun invalid-wrapper-p (wrapper) - (neq (wrapper-state wrapper) 't)) - -(defvar *previous-nwrappers* (make-hash-table)) - -(defun invalidate-wrapper (owrapper state nwrapper) - (ecase state - ((flush obsolete) - (let ((new-previous ())) - ;; - ;; First off, a previous call to invalidate-wrapper may have recorded - ;; owrapper as an nwrapper to update to. Since owrapper is about to - ;; be invalid, it no longer makes sense to update to it. - ;; - ;; We go back and change the previously invalidated wrappers so that - ;; they will now update directly to nwrapper. This corresponds to a - ;; kind of transitivity of wrapper updates. - ;; - (dolist (previous (gethash owrapper *previous-nwrappers*)) - (when (eq state 'obsolete) - (setf (car previous) 'obsolete)) - (setf (cadr previous) nwrapper) - (push previous new-previous)) - - (iterate ((type (list-elements wrapper-layout)) - (i (interval :from 0))) - (when (eq type 'number) (setf (wrapper-ref owrapper i) 0))) - (push (setf (wrapper-state owrapper) (list state nwrapper)) - new-previous) - - (setf (gethash owrapper *previous-nwrappers*) () - (gethash nwrapper *previous-nwrappers*) new-previous))))) - -(defun check-wrapper-validity (instance) - (let* ((owrapper (wrapper-of instance)) - (state (wrapper-state owrapper))) - (if (eq state 't) - owrapper - (let ((nwrapper - (ecase (car state) - (flush - (flush-cache-trap owrapper (cadr state) instance)) - (obsolete - (obsolete-instance-trap owrapper (cadr state) instance))))) - ;; - ;; This little bit of error checking is superfluous. It only - ;; checks to see whether the person who implemented the trap - ;; handling screwed up. Since that person is hacking internal - ;; CLOS code, and is not a user, this should be needless. Also, - ;; since this directly slows down instance update and generic - ;; function cache refilling, feel free to take it out sometime - ;; soon. - ;; - (cond ((neq nwrapper (wrapper-of instance)) - (error "Wrapper returned from trap not wrapper of instance.")) - ((invalid-wrapper-p nwrapper) - (error "Wrapper returned from trap invalid."))) - nwrapper)))) - - - -(defun compute-line-size (nelements) (expt 2 (ceiling (log nelements 2)))) - -(defun compute-cache-parameters (nkeys valuep nlines-or-cache) - (declare (values cache-mask actual-size line-size nlines)) - (flet ((compute-mask (cache-size line-size) - (logxor (1- cache-size) (1- line-size)))) - (if (= nkeys 1) - (let* ((line-size (if valuep 2 1)) - (cache-size (if (numberp nlines-or-cache) - (* line-size - (expt 2 (ceiling (log nlines-or-cache 2)))) - (cache-size nlines-or-cache)))) - (values (compute-mask cache-size line-size) - cache-size - line-size - (/ cache-size line-size))) - (let* ((line-size (compute-line-size (+ nkeys (if valuep 1 0)))) - (cache-size (if (numberp nlines-or-cache) - (* line-size - (expt 2 (ceiling (log nlines-or-cache 2)))) - (1- (cache-size nlines-or-cache))))) - (values (compute-mask cache-size line-size) - (1+ cache-size) - line-size - (/ cache-size line-size)))))) - - - -;;; -;;; The various implementations of computing a primary cache location from -;;; wrappers. Because some implementations of this must run fast there are -;;; several implementations of the same algorithm. -;;; -;;; The algorithm is: -;;; -;;; SUM over the wrapper cache numbers, -;;; ENSURING that the result is a fixnum -;;; MASK the result against the mask argument. -;;; -;;; - -;;; -;;; COMPUTE-PRIMARY-CACHE-LOCATION -;;; -;;; The basic functional version. This is used by the cache miss code to -;;; compute the primary location of an entry. -;;; -(defun compute-primary-cache-location (field mask wrappers) - (if (not (consp wrappers)) - (logand mask (wrapper-ref wrappers field)) - (let ((location 0)) - (iterate ((wrapper (list-elements wrappers)) - (i (interval :from 0))) - ;; - ;; First add the cache number of this wrapper to location. - ;; - (let ((wrapper-cache-number (wrapper-ref wrapper field))) - (if (zerop wrapper-cache-number) - (return-from compute-primary-cache-location 0) - (setq location (+ location wrapper-cache-number)))) - ;; - ;; Then, if we are working with lots of wrappers, deal with - ;; the wrapper-cache-number-mask stuff. - ;; - (when (and (not (zerop i)) - (zerop (mod i wrapper-cache-number-adds-ok))) - (setq location - (logand location wrapper-cache-number-mask)))) - (1+ (logand mask location))))) - -;;; -;;; COMPUTE-PRIMARY-CACHE-LOCATION-FROM-LOCATION -;;; -;;; This version is called on a cache line. It fetches the wrappers from -;;; the cache line and determines the primary location. Various parts of -;;; the cache filling code call this to determine whether it is appropriate -;;; to displace a given cache entry. -;;; -;;; If this comes across a wrapper whose cache-no is 0, it returns the symbol -;;; invalid to suggest to its caller that it would be provident to blow away -;;; the cache line in question. -;;; -(defun compute-primary-cache-location-from-location (field cache location mask nkeys) - (let ((result 0)) - (dotimes (i nkeys) - (let* ((wrapper (cache-ref cache (+ i location))) - (wcn (wrapper-ref wrapper field))) - (setq result (+ result wcn))) - (when (and (not (zerop i)) - (zerop (mod i wrapper-cache-number-adds-ok))) - (setq result (logand result wrapper-cache-number-mask))) - ) - (if (= nkeys 1) - (logand mask result) - (1+ (logand mask result))))) - -(defun emit-1-wrapper-compute-primary-cache-location (wrapper primary wrapper-cache-no) - (with-lap-registers ((mask index)) - (let ((field wrapper-cache-no)) - (flatten-lap - (opcode :move (operand :cvar 'mask) mask) - (opcode :move (operand :cvar 'field) field) - (opcode :move (emit-wrapper-ref wrapper field) wrapper-cache-no) - (opcode :move (operand :ilogand wrapper-cache-no mask) primary))))) - -(defun emit-n-wrapper-compute-primary-cache-location (wrappers primary miss-label) - (with-lap-registers ((field index) - (mask index)) - (let ((add-wrapper-cache-numbers - (flatten-lap - (gathering1 (flattening-lap) - (iterate ((wrapper (list-elements wrappers)) - (i (interval :from 1))) - (gather1 - (with-lap-registers ((wrapper-cache-no index)) - (flatten-lap - (opcode :move (emit-wrapper-ref wrapper field) wrapper-cache-no) - (opcode :izerop wrapper-cache-no miss-label) - (opcode :move (operand :i+ primary wrapper-cache-no) primary) - (when (zerop (mod i wrapper-cache-number-adds-ok)) - (opcode :move (operand :ilogand primary mask) primary)))))))))) - (flatten-lap - (opcode :move (operand :constant 0) primary) - (opcode :move (operand :cvar 'field) field) - (opcode :move (operand :cvar 'mask) mask) - add-wrapper-cache-numbers - (opcode :move (operand :ilogand primary mask) primary) - (opcode :move (operand :i1+ primary) primary))))) - - - -;;; -;;; NIL means nothing so far, no actual arg info has NILs -;;; in the metatype -;;; CLASS seen all sorts of metaclasses -;;; (specifically, more than one of the next 4 values) -;;; T means everything so far is the class T -;;; STANDARD-CLASS seen only standard classes -;;; BUILT-IN-CLASS seen only built in classes -;;; STRUCTURE-CLASS seen only structure classes -;;; -(defun raise-metatype (metatype new-specializer) - (let ((standard (find-class 'standard-class)) - (fsc (find-class 'funcallable-standard-class)) -; (structure (find-class 'structure-class)) - (built-in (find-class 'built-in-class))) - (flet ((specializer->metatype (x) - (let ((meta-specializer - (if (and (eq *boot-state* 'complete) - (eql-specializer-p x)) - (class-of (class-of (eql-specializer-object x))) - (class-of x)))) - (cond ((eq x *the-class-t*) t) - ((*subtypep meta-specializer standard) 'standard-instance) - ((*subtypep meta-specializer fsc) 'standard-instance) -; ((*subtypep meta-specializer structure) 'structure-instance) - ((*subtypep meta-specializer built-in) 'built-in-instance) - (t (error "CLOS can not handle the specializer ~S (meta-specializer ~S)." - new-specializer meta-specializer)))))) - ;; - ;; We implement the following table. The notation is - ;; that X and Y are distinct meta specializer names. - ;; - ;; NIL ===> - ;; X X ===> X - ;; X Y ===> CLASS - ;; - (let ((new-metatype (specializer->metatype new-specializer))) - (cond ((null metatype) new-metatype) - ((eq metatype new-metatype) new-metatype) - (t 'class)))))) - - -(defun emit-fetch-wrapper (metatype argument dest miss-label &optional slot) - (let ((exit-emit-fetch-wrapper (make-symbol "exit-emit-fetch-wrapper"))) - (with-lap-registers ((arg t)) - (ecase metatype - (standard-instance - (let ((get-std-inst-wrapper (make-symbol "get-std-inst-wrapper")) - (get-fsc-inst-wrapper (make-symbol "get-fsc-inst-wrapper"))) - (flatten-lap - (opcode :move (operand :arg argument) arg) - (opcode :std-instance-p arg get-std-inst-wrapper) ;is it a std wrapper? - (opcode :fsc-instance-p arg get-fsc-inst-wrapper) ;is it a fsc wrapper? - (opcode :go miss-label) - (opcode :label get-fsc-inst-wrapper) - (opcode :move (operand :fsc-wrapper arg) dest) ;get fsc wrapper - (and slot - (opcode :move (operand :fsc-slots arg) slot)) - (opcode :go exit-emit-fetch-wrapper) - (opcode :label get-std-inst-wrapper) - (opcode :move (operand :std-wrapper arg) dest) ;get std wrapper - (and slot - (opcode :move (operand :std-slots arg) slot)) - (opcode :label exit-emit-fetch-wrapper)))) - - (class - (when slot (error "Can't do a slot reg for this metatype.")) - (let ((get-std-inst-wrapper (make-symbol "get-std-inst-wrapper")) - (get-fsc-inst-wrapper (make-symbol "get-fsc-inst-wrapper")) - (get-built-in-wrapper (make-symbol "get-built-in-wrapper"))) - (flatten-lap - (opcode :move (operand :arg argument) arg) - (opcode :std-instance-p arg get-std-inst-wrapper) - (opcode :fsc-instance-p arg get-fsc-inst-wrapper) - (opcode :built-in-instance-p arg get-built-in-wrapper) - ;; If the code falls through the checks above, there is a serious problem - (opcode :label get-fsc-inst-wrapper) - (opcode :move (operand :fsc-wrapper arg) dest) - (opcode :go exit-emit-fetch-wrapper) - (opcode :label get-built-in-wrapper) - (opcode :move (operand :built-in-wrapper arg) dest) - (opcode :go exit-emit-fetch-wrapper) - (opcode :label get-std-inst-wrapper) - (opcode :move (operand :std-wrapper arg) dest) - (opcode :label exit-emit-fetch-wrapper)))) - (structure-instance - (when slot (error "Can't do a slot reg for this metatype.")) - (error "Not yet implemented")) - (built-in-instance - (when slot (error "Can't do a slot reg for this metatype.")) - (let ((get-built-in-wrapper (make-symbol "get-built-in-wrapper"))) - (flatten-lap - (opcode :move (operand :arg argument) arg) - (opcode :built-in-instance-p arg get-built-in-wrapper) - (opcode :go miss-label) - (opcode :label get-built-in-wrapper) - (opcode :move (operand :built-in-wrapper arg) dest)))))))) - - -;;; -;;; Some support stuff for getting a hold of symbols that we need when -;;; building the discriminator codes. Its ok for these to be interned -;;; symbols because we don't capture any user code in the scope in which -;;; these symbols are bound. -;;; - -(defvar *dfun-arg-symbols* '(.ARG0. .ARG1. .ARG2. .ARG3.)) - -(defun dfun-arg-symbol (arg-number) - (or (nth arg-number (the list *dfun-arg-symbols*)) - (intern (format nil ".ARG~A." arg-number) *the-clos-package*))) - -(defvar *slot-vector-symbols* '(.SLOTS0. .SLOTS1. .SLOTS2. .SLOTS3.)) - -(defun slot-vector-symbol (arg-number) - (or (nth arg-number (the list *slot-vector-symbols*)) - (intern (format nil ".SLOTS~A." arg-number) *the-clos-package*))) - -(defun make-dfun-lambda-list (metatypes applyp) - (gathering1 (collecting) - (iterate ((i (interval :from 0)) - (s (list-elements metatypes))) - (progn s) - (gather1 (dfun-arg-symbol i))) - (when applyp - (gather1 '&rest) - (gather1 '.dfun-rest-arg.)))) - -(defun make-dlap-lambda-list (metatypes applyp) - (gathering1 (collecting) - (iterate ((i (interval :from 0)) - (s (list-elements metatypes))) - (progn s) - (gather1 (dfun-arg-symbol i))) - (when applyp - (gather1 '&rest)))) - -(defun make-dfun-call (metatypes applyp fn-variable) - (let ((required - (gathering1 (collecting) - (iterate ((i (interval :from 0)) - (s (list-elements metatypes))) - (progn s) - (gather1 (dfun-arg-symbol i)))))) - (if applyp - `(apply ,fn-variable ,@required .dfun-rest-arg.) - `(funcall ,fn-variable ,@required)))) - - -;;; -;;; Here is where we actually fill, recache and expand caches. -;;; -;;; The function FILL-CACHE is the ONLY external entrypoint into this code. -;;; It returns 4 values: -;;; a wrapper field number -;;; a cache -;;; a mask -;;; an absolute cache size (the size of the actual vector) -;;; -;;; -(defun fill-cache (field cache nkeys valuep limit-fn wrappers value) - (declare (values field cache mask size)) - (fill-cache-internal field cache nkeys valuep limit-fn wrappers value)) - -(defun default-limit-fn (nlines) - (case nlines - ((1 2 4) 1) - ((8 16) 4) - (otherwise 6))) - - -;;; -;;; Its too bad Common Lisp compilers freak out when you have a defun with -;;; a lot of LABELS in it. If I could do that I could make this code much -;;; easier to read and work with. -;;; -;;; Ahh Scheme... -;;; -;;; In the absence of that, the following little macro makes the code that -;;; follows a little bit more reasonable. I would like to add that having -;;; to practically write my own compiler in order to get just this simple -;;; thing is something of a drag. -;;; -(eval-when (compile load eval) - -(proclaim '(special *nkeys* *valuep* *limit-fn*)) - -;;; This patch avoids a bug in the ENVCALL instruction. Lookup of free -;;; variables under ENVCALL always results in nil. In particular, the -;;; compiler generates such code for flet and friends. Therefore, some -;;; macros must be defined at top-level. - -;(defmacro cache () '.cache.) -;(defmacro nkeys () '*nkeys*) -;(defmacro valuep () '*valuep*) -;(defmacro limit-fn () '*limit-fn*) -;(defmacro line-size () '.line-size.) -;(defmacro mask () '.mask.) -;(defmacro size () '.size.) -;(defmacro nlines () '.nlines.) -;(defmacro line-reserved-p (line) -; `(and (= (nkeys) 1) -; (= ,line 0))) -;(defmacro line-location (line) -; `(and (null (line-reserved-p ,line)) -; (if (= (nkeys) 1) -; (* ,line (line-size)) -; (1+ (* ,line (line-size)))))) -;(defmacro location-line (location) -; `(if (= (nkeys) 1) -; (/ ,location (line-size)) -; (/ (1- ,location) (line-size)))) -;end patch - -(defvar *local-cache-functions* - `((cache () .cache.) - (nkeys () *nkeys*) - (valuep () *valuep*) - (limit-fn () *limit-fn*) - (line-size () .line-size.) - (mask () .mask.) - (size () .size.) - (nlines () .nlines.) - ;; - ;; Return T IFF this cache location is reserved. The only time - ;; this is true is for line number 0 of an nkeys=1 cache. - ;; - (line-reserved-p (line) - (and (= (nkeys) 1) - (= line 0))) - ;; - ;; Given a line number, return the cache location. This is the - ;; value that is the second argument to cache-ref. Basically, - ;; this deals with the offset of nkeys>1 caches and multiplies - ;; by line size. This returns nil if the line is reserved. - ;; - (line-location (line) - (and (null (line-reserved-p line)) - (if (= (nkeys) 1) - (* line (line-size)) - (1+ (* line (line-size)))))) - ;; - ;; Given a cache location, return the line. This is the inverse - ;; of LINE-LOCATION. - ;; - (location-line (location) - (if (= (nkeys) 1) - (/ location (line-size)) - (/ (1- location) (line-size)))) - ;; - ;; Given a line number, return the wrappers stored at that line. - ;; As usual, if nkeys=1, this returns a single value. Only when - ;; nkeys>1 does it return a list. An error is signalled if the - ;; line is reserved. - ;; - (line-wrappers (line) - (when (line-reserved-p line) (error "Line is reserved.")) - (let ((location (line-location line))) - (if (= (nkeys) 1) - (cache-ref (cache) location) - (gathering1 (collecting) - (dotimes (i (nkeys)) - (gather1 (cache-ref (cache) (+ location i)))))))) - ;; - ;; Given a line number, return the value stored at that line. - ;; If valuep is NIL, this returns NIL. As with line-wrappers, - ;; an error is signalled if the line is reserved. - ;; - (line-value (line) - (when (line-reserved-p line) (error "Line is reserved.")) - (and (valuep) - (cache-ref (cache) (+ (line-location line) (nkeys))))) - ;; - ;; Given a line number, return true IFF that line has data in - ;; it. The state of the wrappers stored in the line is not - ;; checked. An error is signalled if line is reserved. - (line-full-p (line) - (when (line-reserved-p line) (error "Line is reserved.")) - (not (null (cache-ref (cache) (line-location line))))) - ;; - ;; Given a line number, return true IFF the line is full and - ;; there are no invalid wrappers in the line, and the line's - ;; wrappers are different from wrappers. - ;; An error is signalled if the line is reserved. - ;; - (line-valid-p (line wrappers) - (when (line-reserved-p line) (error "Line is reserved.")) - (let ((loc (line-location line))) - (dotimes (i (nkeys) t) - (let ((wrapper (cache-ref (cache) (+ loc i)))) - (when (or (null wrapper) -;*** (numberp wrapper) - ;Think of this as an optimized: - ; (and (zerop i) - ; (= (nkeys) 1) - ; (null (valuep)) - ; (numberp wrapper)) - (invalid-wrapper-p wrapper)) - (return nil)))))) - ;; - ;; How many unreserved lines separate line-1 and line-2. - ;; - (line-separation (line-1 line-2) - (let ((diff (- line-2 line-1))) - (cond ((zerop diff) diff) - ((plusp diff) diff) - (t - (if (line-reserved-p 0) - (1- (+ (- (nlines) line-1) line-2)) - (+ (- (nlines) line-1) line-2)))))) - ;; - ;; Given a cache line, get the next cache line. This will not - ;; return a reserved line. - ;; - (next-line (line) - (if (= line (1- (nlines))) - (if (line-reserved-p 0) 1 0) - (1+ line))) - ;; - ;; Given a line which has a valid entry in it, this will return - ;; the primary cache line of the wrappers in that line. We just - ;; call COMPUTE-PRIMARY-CACHE-LOCATION-FROM-LOCATION, this is an - ;; easier packaging up of the call to it. - ;; - (line-primary (field line) - (location-line - (compute-primary-cache-location-from-location - field (cache) (line-location line) (mask) (nkeys)))) - ;; - ;; - (fill-line (line wrappers value) - (when (line-reserved-p line) - (error "Attempt to fill a reserved line.")) - (let ((loc (line-location line))) - (cond ((= (nkeys) 1) - (setf (cache-ref (cache) loc) wrappers) - (when (valuep) (setf (cache-ref (cache) (1+ loc)) value))) - (t - (iterate ((i (interval :from 0)) - (w (list-elements wrappers))) - (setf (cache-ref (cache) (+ loc i)) w)) - (when (valuep) (setf (cache-ref (cache) (+ loc (nkeys))) value)))))) - ;; - ;; Blindly copy the contents of one cache line to another. The - ;; contents of the line are overwritten, so whatever was in - ;; there should already have been moved out. - ;; - ;; For convenience in debugging, this also clears out the from - ;; location after it has been copied. - ;; - (copy-line (from to) - (if (line-reserved-p to) - (error "Copying something into a reserved cache line.") - (let ((from-loc (line-location from)) - (to-loc (line-location to))) - (modify-cache (cache) - (dotimes (i (line-size)) - (setf (cache-ref (cache) (+ to-loc i)) - (cache-ref (cache) (+ from-loc i))) - (setf (cache-ref (cache) (+ from-loc i)) - nil)))))) - ;; - ;; - ;; - (transfer-line (from-cache from-line to-cache to-line) - (if (line-reserved-p to-line) - (error "transfering something into a reserved cache line.") - (let ((from-loc (line-location from-line)) - (to-loc (line-location to-line))) - (modify-cache to-cache - (dotimes (i (line-size)) - (setf (cache-ref to-cache (+ to-loc i)) - (cache-ref from-cache (+ from-loc i)))))))) - )) - -(defmacro with-local-cache-functions ((cache) &body body &environment env) - `(let ((.cache. ,cache)) - (declare (type simple-vector .cache.)) - (multiple-value-bind (.mask. .size. .line-size. .nlines.) - (compute-cache-parameters *nkeys* *valuep* .cache.) - (declare (type fixnum .mask. .size. .line-size. .nlines.)) - (progn .mask. .size. .line-size. .nlines.) - (labels ,(mapcar #'(lambda (fn) (assq fn *local-cache-functions*)) - (pickup-local-cache-functions body env)) - ,@body)))) - -(defun pickup-local-cache-functions (body env) - (let ((functions ()) - (possible-functions (mapcar #'car *local-cache-functions*))) - (labels ((walk-function (form context env) - (declare (ignore env)) - (when (and (eq context :eval) - (consp form) - (symbolp (car form))) - (let ((name (car form))) - (when (and (not (memq name functions)) - (memq name possible-functions)) - (pushnew name functions) - (walk (cddr (assq name *local-cache-functions*)))))) - form) - (walk (body) - (walk-form `(progn . ,body) env #'walk-function))) - (walk body) - functions))) - -) - - -;;; -;;; returns 4 values, -;;; It tries to re-adjust the cache every time it makes a new fill. The -;;; intuition here is that we want uniformity in the number of probes needed to -;;; find an entry. Furthermore, adjusting has the nice property of throwing out -;;; any entries that are invalid. -;;; -(defun fill-cache-internal (field cache nkeys valuep limit-fn wrappers value) - (let ((*nkeys* nkeys) - (*valuep* valuep) - (*limit-fn* limit-fn)) - (with-local-cache-functions (cache) - (flet ((4-values-please (f c) - (multiple-value-bind (mask size) - (compute-cache-parameters *nkeys* *valuep* c) - (values f c mask size)))) - (let ((easy-fill-p (fill-cache-p nil field cache wrappers value))) - (if easy-fill-p - (4-values-please field cache) - (multiple-value-bind (adj-field adj-cache) - (adjust-cache field cache wrappers value) - (if adj-field - (4-values-please adj-field adj-cache) - (multiple-value-bind (exp-field exp-cache) - (expand-cache field cache wrappers value) - (4-values-please exp-field exp-cache)))))))))) - -;;; -;;; returns T or NIL -;;; -(defun fill-cache-p (forcep field cache wrappers value) - (with-local-cache-functions (cache) - (let* ((primary (location-line (compute-primary-cache-location field (mask) wrappers)))) - (multiple-value-bind (free emptyp) - (find-free-cache-line primary field cache wrappers) - (when (or forcep emptyp) (fill-line free wrappers value) t))))) - -(defun fill-cache-from-cache-p (forcep field cache from-cache from-line) - (with-local-cache-functions (from-cache) - (let ((primary (line-primary field from-line))) - (multiple-value-bind (free emptyp) - (find-free-cache-line primary field cache) - (when (or forcep emptyp) - (transfer-line from-cache from-line cache free) - t))))) - -(defun entry-in-cache-p (field cache wrappers value) - (declare (ignore field value)) - (with-local-cache-functions (cache) - (dotimes (i (nlines)) - (unless (line-reserved-p i) - (when (equal (line-wrappers i) wrappers) (return t)))))) - -;;; -;;; Returns NIL or (values ) -;;; -;;; This is only called when it isn't possible to put the entry in the cache -;;; the easy way. That is, this function assumes that FILL-CACHE-P has been -;;; called as returned NIL. -;;; -;;; If this returns NIL, it means that it wasn't possible to find a wrapper -;;; field for which all of the entries could be put in the cache (within the -;;; limit). -;;; -(defun adjust-cache (field cache wrappers value) - (with-local-cache-functions (cache) - (let ((ncache (get-cache (size)))) - (do ((nfield field (next-wrapper-field nfield))) - ((null nfield) (free-cache ncache) nil) - (labels ((try-one-fill-from-line (line) - (fill-cache-from-cache-p nil nfield ncache cache line)) - (try-one-fill (wrappers value) - (fill-cache-p nil nfield ncache wrappers value))) - (if (and (dotimes (i (nlines) t) - (when (and (null (line-reserved-p i)) - (line-valid-p i wrappers)) - (unless (try-one-fill-from-line i) (return nil)))) - (try-one-fill wrappers value)) - (return (values nfield ncache)) - (flush-cache-internal ncache))))))) - - -;;; -;;; returns: (values ) -;;; -(defun expand-cache (field cache wrappers value) - (declare (values field cache) (ignore field)) - (with-local-cache-functions (cache) - (multiple-value-bind (ignore size) - (compute-cache-parameters (nkeys) (valuep) (* (nlines) 2)) - (let* ((ncache (get-cache size)) - (nfield (wrapper-field 'number))) - (labels ((do-one-fill-from-line (line) - (unless (fill-cache-from-cache-p nil nfield ncache cache line) - (do-one-fill (line-wrappers line) (line-value line)))) - (do-one-fill (wrappers value) - (multiple-value-bind (adj-field adj-cache) - (adjust-cache nfield ncache wrappers value) - (if adj-field - (setq nfield adj-field ncache adj-cache) - (fill-cache-p t nfield ncache wrappers value)))) - (try-one-fill (wrappers value) - (fill-cache-p nil nfield ncache wrappers value))) - (dotimes (i (nlines)) - (when (and (null (line-reserved-p i)) - (line-valid-p i wrappers)) - (do-one-fill-from-line i))) - (unless (try-one-fill wrappers value) - (do-one-fill wrappers value)) - (values nfield ncache)))))) - - -;;; -;;; This is the heart of the cache filling mechanism. It implements the decisions -;;; about where entries are placed. -;;; -;;; Find a line in the cache at which a new entry can be inserted. -;;; -;;; -;;; is in fact empty? -;;; -(defun find-free-cache-line (primary field cache &optional wrappers) - (declare (values line empty?)) - (with-local-cache-functions (cache) - (let ((limit (funcall (limit-fn) (nlines))) - (wrappedp nil)) - (when (line-reserved-p primary) (setq primary (next-line primary))) - (labels (;; - ;; Try to find a free line starting at . - ;; is the primary line of the entry we are finding a free - ;; line for, it is used to compute the seperations. - ;; - (find-free (p s) - (do* ((line s (next-line line)) - (nsep (line-separation p s) (1+ nsep))) - (()) - (if (null (line-valid-p line wrappers)) ;If this line is empty or - (return (values line t)) ;invalid, just use it. - - (let ((osep (line-separation (line-primary field line) line))) - (if (and wrappedp (>= line primary)) - ;; - ;; have gone all the way around the cache, time to quit - ;; - (return (values line nil)) - - (when (cond ((or (= nsep limit)) t) - ((= nsep osep) (zerop (random 2))) - ((> nsep osep) t) - (t nil)) - ;; - ;; Try to displace what is in this line so that we - ;; can use the line. - ;; - (return (values line (displace line))))))) - - (if (= line (1- (nlines))) (setq wrappedp t)))) - ;; - ;; Given a line, attempt to free up that line by moving its - ;; contents elsewhere. Returns nil when it wasn't possible to - ;; move the contents of the line without dumping something on - ;; the floor. - ;; - (displace (line) - (if (= line (1- (nlines))) (setq wrappedp t)) - (multiple-value-bind (dline dempty?) - (find-free (line-primary field line) (next-line line)) - (when dempty? (copy-line line dline) t)))) - - (find-free primary primary))))) diff --git a/obsolete/clos/2.0/clos-env-internal.lisp b/obsolete/clos/2.0/clos-env-internal.lisp deleted file mode 100644 index 6d720032..00000000 --- a/obsolete/clos/2.0/clos-env-internal.lisp +++ /dev/null @@ -1,260 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "XCL" READTABLE "XCL") -(il:filecreated "28-Aug-87 18:42:36" il:{phylum}clos-env-internal.\;1 8356 - - il:|changes| il:|to:| (il:vars il:clos-env-internalcoms) - (il:props (il:clos-env-internal il:makefile-environment)) - (il:functions stack-eql stack-pointer-frame stack-frame-valid-p - stack-frame-fn-header stack-frame-pc fnheader-debugging-info - stack-frame-name compiled-closure-fnheader compiled-closure-env) -) - - -; Copyright (c) 1987 by Xerox Corporation. All rights reserved. - -(il:prettycomprint il:clos-env-internalcoms) - -(il:rpaqq il:clos-env-internalcoms ( - -(il:* il:|;;;| "***************************************") - - - -(il:* il:|;;;| " Copyright (c) 1987 Xerox Corporation. All rights reserved.") - - - -(il:* il:|;;;| "") - - - -(il:* il:|;;;| "Use and copying of this software and preparation of derivative works based upon this software are permitted. Any distribution of this software or derivative works must comply with all applicable United States export control laws.") - - - -(il:* il:|;;;| " ") - - - -(il:* il:|;;;| "This software is made available AS IS, and Xerox Corporation makes no warranty about the software, its performance or its conformity to any specification.") - - - -(il:* il:|;;;| " ") - - - -(il:* il:|;;;| "Any person obtaining a copy of this software is requested to send their name and post office or electronic mail address to:") - - - -(il:* il:|;;;| " CommonLoops Coordinator") - - - -(il:* il:|;;;| " Xerox Artifical Intelligence Systems") - - - -(il:* il:|;;;| " 2400 Hanover St.") - - - -(il:* il:|;;;| " Palo Alto, CA 94303") - - - -(il:* il:|;;;| "(or send Arpanet mail to CommonLoops-Coordinator.pa@Xerox.arpa)") - - - -(il:* il:|;;;| "") - - - -(il:* il:|;;;| " Suggestions, comments and requests for improvements are also welcome.") - - - -(il:* il:|;;;| " *************************************************************************") - - - -(il:* il:|;;;| "") - - (il:declare\: il:dontcopy (il:prop il:makefile-environment - il:clos-env-internal)) - (il:* il:\; - "We're off to hack the system...") - - (il:declare\: il:eval@compile il:dontcopy (il:files clos::abc) - - - (il:* il:|;;| "The Deltas and The East and The Freeze") -) - (il:functions stack-eql stack-pointer-frame stack-frame-valid-p - stack-frame-fn-header stack-frame-pc - fnheader-debugging-info stack-frame-name - compiled-closure-fnheader compiled-closure-env))) - - - -(il:* il:|;;;| "***************************************") - - - - -(il:* il:|;;;| " Copyright (c) 1987 Xerox Corporation. All rights reserved.") - - - - -(il:* il:|;;;| "") - - - - -(il:* il:|;;;| -"Use and copying of this software and preparation of derivative works based upon this software are permitted. Any distribution of this software or derivative works must comply with all applicable United States export control laws." -) - - - - -(il:* il:|;;;| " ") - - - - -(il:* il:|;;;| -"This software is made available AS IS, and Xerox Corporation makes no warranty about the software, its performance or its conformity to any specification." -) - - - - -(il:* il:|;;;| " ") - - - - -(il:* il:|;;;| -"Any person obtaining a copy of this software is requested to send their name and post office or electronic mail address to:" -) - - - - -(il:* il:|;;;| " CommonLoops Coordinator") - - - - -(il:* il:|;;;| " Xerox Artifical Intelligence Systems") - - - - -(il:* il:|;;;| " 2400 Hanover St.") - - - - -(il:* il:|;;;| " Palo Alto, CA 94303") - - - - -(il:* il:|;;;| "(or send Arpanet mail to CommonLoops-Coordinator.pa@Xerox.arpa)") - - - - -(il:* il:|;;;| "") - - - - -(il:* il:|;;;| " Suggestions, comments and requests for improvements are also welcome.") - - - - -(il:* il:|;;;| " *************************************************************************") - - - - -(il:* il:|;;;| "") - -(il:declare\: il:dontcopy - -(il:putprops il:clos-env-internal il:makefile-environment (:package "XCL" :readtable "XCL")) -) - - - -(il:* il:\; "We're off to hack the system...") - -(il:declare\: il:eval@compile il:dontcopy -(il:filesload clos::abc) -) - -(defun stack-eql (x y) "Test two stack pointers for equality" (and (il:stackp x) - (il:stackp y) - (eql (il:fetch (il:stackp il:edfxp - ) - il:of x) - (il:fetch (il:stackp il:edfxp - ) - il:of y)))) - - -(defun stack-pointer-frame (stack-pointer) (il:|fetch| (il:stackp il:edfxp) il:|of| stack-pointer)) - - -(defun stack-frame-valid-p (frame) (not (il:|fetch| (il:fx il:invalidp) il:|of| frame))) - - -(defun stack-frame-fn-header (frame) (il:|fetch| (il:fx il:fnheader) il:|of| frame)) - - -(defun stack-frame-pc (frame) (il:|fetch| (il:fx il:pc) il:|of| frame)) - - -(defun fnheader-debugging-info (fnheader) (let* ((start-pc (il:fetch (il:fnheader il:startpc) - il:of fnheader)) - (name-table-words - (let ((size (il:fetch (il:fnheader il:ntsize) - il:of fnheader))) - (if (zerop size) - il:wordsperquad - (* size 2)))) - (past-name-table-in-words (+ (il:fetch (il:fnheader - - il:overheadwords - ) - il:of fnheader) - name-table-words))) - (and (= (- start-pc (* il:bytesperword - past-name-table-in-words)) - il:bytespercell) - - (il:* il:|;;| "It's got a debugging-info list.") - - (il:\\getbaseptr fnheader - past-name-table-in-words)))) - - -(defun stack-frame-name (frame) (il:|fetch| (il:fx il:framename) il:|of| frame)) - - -(defun compiled-closure-fnheader (closure) (il:|fetch| (il:compiled-closure il:fnheader) il:|of| - closure)) - - -(defun compiled-closure-env (closure) (il:fetch (il:compiled-closure il:environment) il:of closure)) - -(il:putprops il:clos-env-internal il:copyright ("Xerox Corporation" 1987)) -(il:declare\: il:dontcopy - (il:filemap (nil))) -il:stop diff --git a/obsolete/clos/2.0/clos-env.lisp b/obsolete/clos/2.0/clos-env.lisp deleted file mode 100644 index be366810..00000000 --- a/obsolete/clos/2.0/clos-env.lisp +++ /dev/null @@ -1,1609 +0,0 @@ -;;;-*-Mode:LISP; Package:(CLOS (LISP WALKER)); Base:10; Syntax:Common-lisp -*- -;;; -;;; ************************************************************************* -;;; Copyright (c) 1991 Venue -;;; All rights reserved. -;;; ************************************************************************* -;;; -;;; Medley-Lisp specific environment hacking for CLOS - -(in-package "CLOS") - -;; -;; Protect the Corporation -;; -(eval-when (eval load) - (format *terminal-io* - "~&;CLOS-ENV Copyright (c) 1991 by ~ - Venue Corporation. All rights reserved.~%")) - - -;;; Make funcallable instances (FINs) print by calling print-object. - -(eval-when (eval load) - (il:defprint 'il:compiled-closure 'il:print-closure)) - -(defun il:print-closure (x &optional stream depth) - ;; See the IRM, section 25.3.3. Unfortunatly, that documentation is - ;; not correct. In particular, it makes no mention of the third argument. - (cond ((not (funcallable-instance-p x)) - ;; IL:\CCLOSURE.DEFPRINT is the orginal system function for - ;; printing closures - (il:\\cclosure.defprint x stream)) - ((streamp stream) - ;; Use the standard CLOS printing method, then return T to tell - ;; the printer that we have done the printing ourselves. - (print-object x stream) - t) - (t - ;; Internal printing (again, see the IRM section 25.3.3). - ;; Return a list containing the string of characters that - ;; would be printed, if the object were being printed for - ;; real. - (with-output-to-string (stream) - (list (print-object x stream)))))) - - -;;; Naming methods - -(defun gf-named (gf-name) - (let ((spec (cond ((symbolp gf-name) gf-name) - ((and (consp gf-name) - (eq (first gf-name) 'setf) - (symbolp (second gf-name)) - (null (cddr gf-name))) - (get-setf-function-name (second gf-name))) - (t nil)))) - (if (and (fboundp spec) - (generic-function-p (symbol-function spec))) - (symbol-function spec) - nil))) - -(defun generic-function-method-names (gf-name hasdefp) - (if hasdefp - (let ((names nil)) - (maphash #'(lambda (key value) - (declare (ignore value)) - (when (and (consp key) (eql (car key) gf-name)) - (pushnew key names))) - (gethash 'methods xcl:*definition-hash-table*)) - names) - (let ((gf (gf-named gf-name))) - (when gf - (mapcar #'full-method-name (generic-function-methods gf)))))) - -(defun full-method-name (method) - "Return the full name of the method" - (let ((specializers (mapcar #'(lambda (x) - (cond ((eq x 't) t) - ((and (consp x) (eq (car x) 'eql)) x) - (t (class-name x)))) - (method-specializers method)))) - ;; Now go through some hair to make sure that specializer is - ;; really right. Once CLOS returns the right value for - ;; specializers this can be taken out. - (let* ((arglist (method-lambda-list method)) - (number-required (or (position-if - #'(lambda (x) (member x lambda-list-keywords)) - arglist) - (length arglist))) - (diff (- number-required (length specializers)))) - (when (> diff 0) - (setq specializers (nconc (copy-list specializers) - (make-list diff :initial-element 't))))) - (make-full-method-name (generic-function-name - (method-generic-function method)) - (method-qualifiers method) - specializers))) - -(defun make-full-method-name (generic-function-name qualifiers arg-types) - "Return the full name of a method, given the generic-function name, the method -qualifiers, and the arg-types" - ;; The name of the method is: - ;; ( .. - ;; (..)) - (labels ((remove-trailing-ts (l) - (if (null l) - nil - (let ((tail (remove-trailing-ts (cdr l)))) - (if (null tail) - (if (eq (car l) 't) - nil - (list (car l))) - (if (eq l tail) - l - (cons (car l) tail))))))) - `(,generic-function-name ,@qualifiers - ,(remove-trailing-ts arg-types)))) - -(defun parse-full-method-name (method-name) - "Parse the method name, returning the gf-name, the qualifiers, and the -arg-types." - (values (first method-name) - (butlast (rest method-name)) - (car (last method-name)))) - -(defun prompt-for-full-method-name (gf-name &optional has-def-p) - "Prompt the user for the full name of a method on the given generic function name" - (let ((method-names (generic-function-method-names gf-name has-def-p))) - (cond ((null method-names) - nil) - ((null (cdr method-names)) - (car method-names)) - (t (il:menu - (il:create - il:menu il:items il:_ ;If HAS-DEF-P, include only - ; those methods that have a - ; symbolic def'n that we can - ; find - (remove-if #'null - (mapcar #'(lambda (m) - (if (or (not has-def-p) - (il:hasdef m 'methods)) - `(,(with-output-to-string (s) - (dolist (x m) - (format s "~A " x)) - s) - ',m) - nil)) - method-names)) - il:title il:_ "Which method?")))))) - - -;;; Converting generic defining macros into DEFDEFINER macros - -(defmacro make-defdefiner (definer-name definer-type type-description &body - definer-options) - "Make the DEFINER-NAME use DEFDEFINER, defining items of type DEFINER-TYPE" - (let ((old-definer-macro-name (intern (string-append definer-name - " old definition") - (symbol-package definer-name))) - (old-definer-macro-expander (intern (string-append definer-name - " old expander") - (symbol-package definer-name)))) - `(progn - ;; First, move the current defining function off to some safe - ;; place - (unmake-defdefiner ',definer-name) - (cond ((not (fboundp ',definer-name)) - (error "~A has no definition!" ',definer-name)) - ((fboundp ',old-definer-macro-name)) - ((macro-function ',definer-name) - ; We have to move the macro - ; expansion function as well, - ; so it won't get clobbered - ; when the original macro is - ; redefined. See AR 7410. - (let* ((expansion-function (macro-function ',definer-name))) - (setf (symbol-function ',old-definer-macro-expander) - (loop (if (symbolp expansion-function) - (setq expansion-function - (symbol-function expansion-function)) - (return expansion-function)))) - (setf (macro-function ',old-definer-macro-name) - ',old-definer-macro-expander) - (setf (get ',definer-name 'make-defdefiner) expansion-function))) - (t (error "~A does not name a macro." ',definer-name))) - ;; Make sure the type is defined - (xcl:def-define-type ,definer-type ,type-description) - ;; Now redefine the definer, using DEFEDFINER and the original def'n - (xcl:defdefiner ,(if definer-options - (cons definer-name definer-options) - definer-name) - ,definer-type (&body b) `(,',old-definer-macro-name ,@,'b))))) - -(defun unmake-defdefiner (definer-name) - (let ((old-expander (get definer-name 'make-defdefiner))) - (when old-expander - (setf (macro-function definer-name old-expander)) - (remprop definer-name 'make-defdefiner)))) - - -;;; For tricking ED into being able to use just the generic-function-name -;;; instead of the full method name - -(defun source-manager-method-edit-fn (name type source editcoms options) - "Edit a method of the given name" - (let ((full-name (if (gf-named name) - ;If given the name of a - ; generic-function, try to get - ; the full method name - (prompt-for-full-method-name name t) - ; Otherwise it should name the - ; method - name))) - (when (not (null full-name)) - (il:default.editdef full-name type source editcoms options)) - (or full-name name))) ;Return the name - -(defun source-manager-method-hasdef-fn (name type &optional source) - "Is there a method defined with the given name?" - (cond ((not (eq type 'methods)) nil) - ((or (symbolp name) - (and (consp name) - (eq (first name) 'setf) - (symbolp (second name)) - (null (cddr name)))) - ;; If passed in the name of a generic-function, pretend that - ;; there is a method by that name if there is a generic function - ;; by that name, and there is a method whose source we can find. - (if (and (not (null (gf-named name))) - (find-if #'(lambda (m) - (il:hasdef m type source)) - (generic-function-method-names name t))) - name - nil)) - ((and (consp name) (>= (length name) 2)) - ;; Standard methods are named (gf-name {qualifiers}* ({specializers}*)) - (when (il:getdef name type source '(il:nocopy il:noerror)) - name)) - (t - ;; Nothing else can name a method - nil))) - -;;; Initialize the CLOS env - -(defun initialize-clos-env nil - "Initialize the Medley CLOS environment" - ;; Set up SourceManager DEFDEFINERS for classes and methods. - ;; - ;; Make sure to define methods before classes, so that (IL:FILES?) will build - ;; filecoms that have classes before methods. - (unless (il:hasdef 'methods 'il:filepkgtype) - (make-defdefiner defmethod methods "methods" - (:name (lambda (form) - (multiple-value-bind (name qualifiers arglist) - (parse-defmethod (cdr form)) - (make-full-method-name name qualifiers - (specialized-lambda-list-specializers - arglist))))) - (:undefiner - (lambda (method-name) - (multiple-value-bind - (name qualifiers arg-types) - (parse-full-method-name method-name) - (let* ((gf (gf-named name)) - (method (when gf - (get-method gf qualifiers - (mapcar #'find-class - arg-types))))) - (when method (remove-method gf method)))))))) - ;; Include support for DEFGENERIC, if that is defined - (unless (or (not (fboundp 'defgeneric)) - (il:hasdef 'generic-functions 'il:filepkgtype)) - (make-defdefiner defgeneric generic-functions "generic-function definitions")) - ;; DEFCLASS FileManager stuff - (unless (il:hasdef 'classes 'il:filepkgtype) - (make-defdefiner defclass classes "class definitions" - (:undefiner (lambda (name) - (when (find-class name t) - (setf (find-class name) nil))))) - ;; CLASSES "include" TYPES. - (il:filepkgcom 'classes 'il:contents - #'(lambda (com name type &optional reason) - (declare (ignore name reason)) - (if (member type '(il:types classes) :test #'eq) - (cdr com) - nil)))) - ;; Set up the hooks so that ED can be handed the name of a generic function, - ;; and end up editing a method instead - (il:filepkgtype 'methods 'il:editdef 'source-manager-method-edit-fn - 'il:hasdef 'source-manager-method-hasdef-fn) - ;; Set up the inspect macro. The right way to do this is to - ;; (ENSURE-GENERIC-FUNCTION 'IL:INSPECT...), but for now... - (push '((il:function clos-object-p) . \\internal-inspect-object) - il:inspectmacros) - ;; Unmark any SourceManager changes caused by this loadup - (dolist (com (il:filepkgchanges)) - (dolist (name (cdr com)) - (when (and (symbolp name) - (eq (symbol-package name) (find-package "CLOS"))) - (il:unmarkaschanged name (car com)))))) - -(eval-when (eval load) - (initialize-clos-env)) - - -;;; Inspecting CLOS objects - -(defun clos-object-p (x) - "Is the datum a CLOS object?" - (or (std-instance-p x) - (fsc-instance-p x))) - -(defun \\internal-inspect-object (x type where) - (inspect-object x type where)) - -(defun \\internal-inspect-slot-names (x) - (inspect-slot-names x)) - -(defun \\internal-inspect-slot-value (x slot-name) - (inspect-slot-value x slot-name)) - -(defun \\internal-inspect-setf-slot-value (x slot-name value) - (inspect-setf-slot-value x slot-name value)) - -(defun \\internal-inspect-slot-name-command (slot-name x window) - (inspect-slot-name-command slot-name x window)) - -(defun \\internal-inspect-title (x y) - (inspect-title x y)) - -(defmethod inspect-object (x type where) - "Open an insect window on the object x" - (il:inspectw.create x '\\internal-inspect-slot-names - '\\internal-inspect-slot-value - '\\internal-inspect-setf-slot-value - '\\internal-inspect-slot-name-command nil nil - '\\internal-inspect-title nil where - #'(lambda (n v) ;Same effect as NIL, but avoids bug in - (declare (ignore v)) ; INSPECTW.CREATE - n))) - -(defmethod inspect-slot-names (x) - "Return a list of names of slots of the object that should be shown in the -inspector" - (mapcar #'(lambda (slotd) (slot-value slotd 'name)) - (slots-to-inspect (class-of x) x))) - -(defmethod inspect-slot-value (x slot-name) - (cond ((not (slot-exists-p x slot-name)) "** no such slot **") - ((not (slot-boundp x slot-name)) "** slot not bound **") - (t (slot-value x slot-name)))) - -(defmethod inspect-setf-slot-value (x slot-name value) - "Used by the inspector to set the value fo a slot" - ;; Make this UNDO-able - (il:undosave `(inspect-setf-slot-value ,x ,slot-name - ,(slot-value x slot-name))) - ;; Then change the value - (setf (slot-value x slot-name) value)) - -(defmethod inspect-slot-name-command (slot-name x window) - "Allows the user to select a menu item to change a slot value in an inspect -window" - ;; This code is a very slightly hacked version of the system function - ;; DEFAULT.INSPECTW.PROPCOMMANDFN. We have to do this because the - ;; standard version makes some nasty assumptions about - ;; structure-objects that are not true for CLOS objects. - (declare (special il:|SetPropertyMenu|)) - (case (il:menu (cond ((typep il:|SetPropertyMenu| 'il:menu) - il:|SetPropertyMenu|) - (t (il:setq il:|SetPropertyMenu| - (il:|create| il:menu il:items il:_ - '((set 'set - "Allows a new value to be entered" - ))))))) - (set - ;; The user want to set the value - (il:ersetq (prog ((il:oldvalueitem (il:itemofpropertyvalue slot-name - window)) - il:newvalue il:pwindow) - (il:ttydisplaystream (il:setq il:pwindow - (il:getpromptwindow window 3))) - (il:clearbuf t t) - (il:resetlst - (il:resetsave (il:\\itemw.flipitem il:oldvalueitem window) - (list 'il:\\itemw.flipitem - il:oldvalueitem window)) - (il:resetsave (il:tty.process (il:this.process))) - (il:resetsave (il:printlevel 4 3)) - (il:|printout| t "Enter the new " - slot-name " for " x t - "The expression read will be EVALuated." - t "> ") - (il:setq il:newvalue (il:lispx (il:lispxread t t) - '>)) - ; clear tty buffer because it - ; sometimes has stuff left. - (il:clearbuf t t)) - (il:closew il:pwindow) - (return (il:inspectw.replace window slot-name il:newvalue))))))) - -(defmethod inspect-title (x window) - "Return the title to use in an inspect window viewing x" - (format nil "Inspecting a ~A" (class-name (class-of x)))) - -(defmethod inspect-title ((x standard-class) window) - (format nil "Inspecting the class ~A" (class-name x))) - - -;;; Debugger support for CLOS - - -(il:filesload clos-env-internal) - -;; Non-CLOS specific changes to the debugger - -;; Redefining the standard INTERESTING-FRAME-P function. Now functions can be -;; declared uninteresting to BT by giving them an XCL::UNINTERESTINGP -;; property. - -(dolist (fn '(si::*unwind-protect* il:*env* - evalhook xcl::nohook xcl::undohook - xcl::execa0001 xcl::execa0001a0002 - xcl::|interpret-UNDOABLY| - cl::|interpret-IF| cl::|interpret-FLET| - cl::|interpret-LET| cl::|interpret-LETA0001| - cl::|interpret-BLOCK| cl::|interpret-BLOCKA0001| - il:do-event il:eval-input - apply t)) - (setf (get fn 'xcl::uninterestingp) t)) - -(defun xcl::interesting-frame-p (xcl::pos &optional xcl::interpflg) - "Return TRUE iff the frame should be visible for a short backtrace." - (declare (special il:openfns)) - (let ((xcl::name (if (il:stackp xcl::pos) (il:stkname xcl::pos) xcl::pos))) - (typecase xcl::name - (symbol (case xcl::name - (il:*env* - ;; *ENV* is used by ENVEVAL etc. - nil) - (il:errorset - (or (<= (il:stknargs xcl::pos) 1) - (not (eq (il:stkarg 2 xcl::pos nil) - 'il:internal)))) - (il:eval - (or (<= (il:stknargs xcl::pos) 1) - (not (eq (il:stkarg 2 xcl::pos nil) - 'xcl::internal)))) - (il:apply - (or (<= (il:stknargs xcl::pos) 2) - (not (il:stkarg 3 xcl::pos nil)))) - (otherwise - (cond ((get xcl::name 'xcl::uninterestingp) - ;; Explicitly declared uninteresting. - nil) - ((eq (il:chcon1 xcl::name) (char-code #\\)) - ;; Implicitly declared uninteresting by starting the - ;; name with a "\". - nil) - ((or (member xcl::name il:openfns :test #'eq) - (eq xcl::name 'funcall)) - ;;The function won't be seen when compiled, so only show - ;;it if INTERPFLG it true - xcl::interpflg) - (t - ;; Interesting by default. - t))))) - (cons (case (car xcl::name) - (:broken t) - (otherwise nil))) - (otherwise nil)))) - -(setq il:*short-backtrace-filter* 'xcl::interesting-frame-p) - - -(eval-when (eval compile) - (il:record il:bkmenuitem (il:label (il:bkmenuinfo il:frame-name)))) - - -;; Change the frame inspector to open up lexical environments - - ;; Since the DEFSTRUCT is going to build the accessors in the package that is - ;; current at read-time, and we want the accessors to reside in the IL - ;; package, we have got to make sure that the defstruct happens when the - ;; package is IL. - -(in-package "IL") - -(cl:defstruct (frame-prop-name (:type cl:list)) - (label-fn 'nill) - (value-fn - (function - (lambda (prop-name framespec) - (frame-prop-name-data prop-name)))) - (setf-fn 'nill) - (inspect-fn - (function - (lambda (value prop-name framespec window) - (default.inspectw.valuecommandfn value prop-name (car framespec) window)))) - (data nil)) - -(cl:in-package "CLOS") - -(defun il:debugger-stack-frame-prop-names (il:framespec) - ;; Frame prop-names are structures of the form - ;; (LABEL-FN VALUE-FN SETF-FN EDIT-FN DATA) - (let ((il:pos (car il:framespec)) - (il:backtrace-item (cadr il:framespec))) - (il:if (eq 'eval (il:stkname il:pos)) - il:then - (let ((il:expression (il:stkarg 1 il:pos)) - (il:environment (il:stkarg 2 il:pos))) - `(,(il:make-frame-prop-name :inspect-fn - (il:function - (il:lambda (il:value il:prop-name il:framespec il:window) - (il:inspect/as/function il:value (car il:framespec) il:window))) - :data il:expression) - ,(il:make-frame-prop-name :data "ENVIRONMENT") - ,@(il:for il:aspect il:in - `((,(and il:environment (il:environment-vars il:environment)) - "vars") - (,(and il:environment (il:environment-functions il:environment)) - "functions") - (,(and il:environment (il:environment-blocks il:environment)) - "blocks") - (,(and il:environment (il:environment-tagbodies il:environment)) - "tag bodies")) - il:bind il:group-name il:p-list - il:eachtime (il:setq il:group-name (cadr il:aspect)) - (il:setq il:p-list (car il:aspect)) - il:when (not (null il:p-list)) - il:join - `(,(il:make-frame-prop-name :data il:group-name) - ,@(il:for il:p il:on il:p-list il:by cddr il:collect - (il:make-frame-prop-name :label-fn - (il:function (il:lambda (il:prop-name il:framespec) - (car (il:frame-prop-name-data il:prop-name)))) - :value-fn - (il:function (il:lambda (il:prop-name il:framespec) - (cadr (il:frame-prop-name-data il:prop-name)))) - :setf-fn - (il:function (il:lambda (il:prop-name il:framespec il:new-value) - (il:change (cadr (il:frame-prop-name-data - il:prop-name)) - il:new-value))) - :data il:p)))))) - il:else - (flet ((il:build-name (&key il:arg-name il:arg-number) - (il:make-frame-prop-name :label-fn - (il:function (il:lambda (il:prop-name il:framespec) - (car (il:frame-prop-name-data il:prop-name)))) - :value-fn - (il:function (il:lambda (il:prop-name il:framespec) - (il:stkarg (cadr (il:frame-prop-name-data - il:prop-name)) - (car il:framespec)))) - :setf-fn - (il:function (il:lambda (il:prop-name il:framespec il:new-value) - (il:setstkarg (cadr (il:frame-prop-name-data - il:prop-name)) - (car il:framespec) - il:new-value))) - :data - (list il:arg-name il:arg-number)))) - (let ((il:nargs (il:stknargs il:pos t)) - (il:nargs1 (il:stknargs il:pos)) - (il:fnname (il:stkname il:pos)) - il:argname - (il:arglist)) - (and (il:litatom il:fnname) - (il:ccodep il:fnname) - (il:setq il:arglist (il:listp (il:smartarglist il:fnname)))) - `(,(il:make-frame-prop-name :inspect-fn - (il:function (il:lambda (il:value il:prop-name il:framespec - il:window) - (il:inspect/as/function il:value - (car il:framespec) - il:window))) - :data - (il:fetch (il:bkmenuitem il:frame-name) il:of il:backtrace-item)) - ,@(il:bind il:mode il:for il:i il:from 1 il:to il:nargs1 il:collect - (progn (il:while (il:fmemb (il:setq il:argname (il:pop il:arglist)) - lambda-list-keywords) - il:do - (il:setq il:mode il:argname)) - (il:build-name :arg-name - (or (il:stkargname il:i il:pos) - ; special - (if (case il:mode - ((nil &optional) il:argname) - (t nil)) - (string il:argname) - (il:concat "arg " (- il:i 1)))) - :arg-number il:i))) - ,@(let* ((il:novalue "No value") - (il:slots (il:for il:pvar il:from 0 il:as il:i il:from - (il:add1 il:nargs1) - il:to il:nargs il:by 1 il:when - (and (il:neq il:novalue (il:stkarg il:i il:pos - il:novalue)) - (or (il:setq il:argname (il:stkargname - il:i il:pos)) - (il:setq il:argname (il:concat - "local " - il:pvar))) - ) - il:collect - (il:build-name :arg-name il:argname - :arg-number il:i)))) - (and il:slots (cons (il:make-frame-prop-name :data "locals") - il:slots))))))))) - -(defun il:debugger-stack-frame-fetchfn (il:framespec il:prop-name) - (il:apply* (il:frame-prop-name-value-fn il:prop-name) - il:prop-name il:framespec)) - -(defun il:debugger-stack-frame-storefn (il:framespec il:prop-name il:newvalue) - (il:apply* (il:frame-prop-name-setf-fn il:prop-name) - il:prop-name il:framespec il:newvalue)) - -(defun il:debugger-stack-frame-value-command (il:datum il:prop-name - il:framespec il:window) - (il:apply* (il:frame-prop-name-inspect-fn il:prop-name) - il:datum il:prop-name il:framespec il:window)) - -(defun il:debugger-stack-frame-title (il:framespec &optional il:window) - (declare (ignore il:window)) - (il:concat (il:stkname (car il:framespec)) " Frame")) - -(defun il:debugger-stack-frame-property (il:prop-name il:framespec) - (il:apply* (il:frame-prop-name-label-fn il:prop-name) - il:prop-name il:framespec)) - -;; Teaching the debugger that there are other file-manager types that can -;; appear on the stack - -(defvar xcl::*function-types* '(il:fns il:functions) - "Manager types that can appear on the stack") - -;; Redefine a couple of system functions to use the above stuff - -#+Xerox-Lyric -(progn - -(defun il:attach-backtrace-menu (&optional (il:ttywindow - (il:wfromds (il:ttydisplaystream))) - il:skip) - (let ((il:bkmenu (il:|create| il:menu - il:items il:_ - (il:collect-backtrace-items il:ttywindow il:skip) - il:whenselectedfn il:_ - (il:function il:backtrace-item-selected) - il:whenheldfn il:_ - #'(il:lambda (il:item il:menu il:button) - (declare (ignore il:item il:menu)) - (case il:button - (il:left (il:promptprint - "Open a frame inspector on this stack frame" - )) - (il:middle (il:promptprint - "Inspect/Edit this function")) - )) - il:menuoutlinesize il:_ 0 - il:menufont il:_ il:backtracefont - il:menucolumns il:_ 1)) - (il:ttyregion (il:windowprop il:ttywindow 'il:region)) - il:btw) - (cond - ((il:setq il:btw (il:|for| il:atw il:|in| (il:attachedwindows il:ttywindow) - il:|when| (and (il:setq il:btw (il:windowprop il:atw 'il:menu)) - (eql (il:|fetch| (il:menu il:whenselectedfn) - il:|of| (car il:btw)) - (il:function il:backtrace-item-selected))) - il:|do| - (return il:atw))) - (il:deletemenu (car (il:windowprop il:btw 'il:menu)) - nil il:btw) - (il:windowprop il:btw 'il:extent nil) - (il:clearw il:btw)) - ((il:setq il:btw (il:createw (il:region-next-to (il:windowprop il:ttywindow 'il:region) - (il:widthifwindow (il:imin (il:|fetch| (il:menu - il:imagewidth - ) - il:|of| il:bkmenu) - il:|MaxBkMenuWidth|)) - (il:|fetch| (il:region il:height) il:|of| il:ttyregion - ) - 'il:left))) - (il:attachwindow il:btw il:ttywindow (cond - ((il:igreaterp (il:|fetch| (il:region il:left) - il:|of| (il:windowprop - il:btw - 'il:region)) - (il:|fetch| (il:region il:left) - il:|of| il:ttyregion)) - 'il:right) - (t 'il:left)) - nil - 'il:localclose) - (il:windowprop il:btw 'il:process (il:windowprop il:ttywindow 'il:process)) - - )) - (il:addmenu il:bkmenu il:btw (il:|create| il:_ il:position - il:xcoord il:_ 0 - il:ycoord il:_ (il:idifference (il:windowprop - il:btw - 'il:height) - (il:|fetch| (il:menu il:imageheight - ) il:|of| - il:bkmenu - )))))) - -(defun il:backtrace-item-selected (il:item il:menu il:button) - (il:resetlst - (prog (il:olditem il:ttywindow il:bkpos il:pos il:positions il:framewindow - (il:framespecn (il:|fetch| (il:bkmenuitem il:bkmenuinfo) il:|of| il:item) - - )) - (cond - ((il:setq il:olditem (il:|fetch| (il:menu il:menuuserdata) il:|of| il:menu)) - (il:menudeselect il:olditem il:menu) - )) - (il:setq il:ttywindow (il:windowprop (il:wfrommenu il:menu) - 'il:mainwindow)) - (il:setq il:bkpos (il:windowprop il:ttywindow 'il:stack-position)) - (il:setq il:pos (il:stknth (- il:framespecn) - il:bkpos)) - (let ((il:lp (il:windowprop il:ttywindow 'il:lastpos))) - (and il:lp (il:stknth 0 il:pos il:lp))) - (il:menuselect il:item il:menu) - (if (eq il:button 'il:middle) - (progn - - - (il:resetsave nil (list 'il:relstk il:pos)) - (il:inspect/as/function (il:|fetch| (il:bkmenuitem il:frame-name) - il:|of| il:item) - il:pos il:ttywindow)) - (progn - - - (il:setq il:framewindow - (xcl:with-profile (il:process.eval - (il:windowprop il:ttywindow 'il:process) - '(let ((il:profile (xcl:copy-profile (xcl:find-profile - "READ-PRINT")))) - (setf (xcl::profile-entry-value ' - xcl:*eval-function* il:profile) - xcl:*eval-function*) - (xcl:save-profile il:profile)) - t) - (il:inspectw.create (list il:pos il:item) - 'il:debugger-stack-frame-prop-names - 'il:debugger-stack-frame-fetchfn - 'il:debugger-stack-frame-storefn nil ' - il:debugger-stack-frame-value-command nil ' - il:debugger-stack-frame-title nil ( - il:make-frame-inspect-window - il:ttywindow) - 'il:debugger-stack-frame-property))) - (cond - ((not (il:windowprop il:framewindow 'il:mainwindow)) - (il:attachwindow il:framewindow il:ttywindow - (cond - ((il:igreaterp (il:|fetch| (il:region il:bottom) - il:|of| (il:windowprop il:framewindow - 'il:region)) - (il:|fetch| (il:region il:bottom) - il:|of| (il:windowprop il:ttywindow 'il:region))) - 'il:top) - (t 'il:bottom)) - nil - 'il:localclose) - (il:windowaddprop il:framewindow 'il:closefn (il:function il:detachwindow - )))))) - (return)))) - -(defun il:collect-backtrace-items (xcl::tty-window xcl::skip) - (let* ((xcl::items (cons nil nil)) - (xcl::items-tail xcl::items)) - (macrolet ((xcl::collect-item (xcl::new-item) - `(progn (setf (rest xcl::items-tail) - (cons ,xcl::new-item nil)) - (pop xcl::items-tail)))) - (let* ((xcl::filter-fn (cond - ((null xcl::skip) - #'xcl:true) - ((eq xcl::skip t) - il:*short-backtrace-filter*) - (t xcl::skip))) - (xcl::top-frame (il:stknth 0 (il:getwindowprop xcl::tty-window ' - il:stack-position))) - (xcl::next-frame xcl::top-frame) - (xcl::frame-number 0) - xcl::interesting-p xcl::last-frame-consumed xcl::use-frame xcl::label) - (loop (when (null xcl::next-frame) - (return)) - (multiple-value-setq (xcl::interesting-p xcl::last-frame-consumed - xcl::use-frame xcl::label) - (funcall xcl::filter-fn xcl::next-frame)) - (when (null xcl::last-frame-consumed) - - (setf xcl::last-frame-consumed xcl::next-frame)) - (when xcl::interesting-p - (when (null xcl::use-frame) - (setf xcl::use-frame xcl::last-frame-consumed)) - - (when (null xcl::label) - (setf xcl::label (il:stkname xcl::use-frame)) - (if (member xcl::label '(eval il:eval il:apply apply) - :test - 'eq) - (setf xcl::label (il:stkarg 1 xcl::use-frame)))) - - (loop (cond - ((not (typep xcl::next-frame 'il:stackp)) - (error "~%Use-frame ~S not found" xcl::use-frame)) - ((xcl::stack-eql xcl::next-frame xcl::use-frame) - (return)) - (t (incf xcl::frame-number) - (setf xcl::next-frame (il:stknth -1 xcl::next-frame - xcl::next-frame))))) - - (xcl::collect-item (il:|create| il:bkmenuitem - il:label il:_ (let ((*print-level* 2) - (*print-length* 3) - (*print-escape* t) - (*print-gensym* t) - (*print-pretty* nil) - (*print-circle* nil) - (*print-radix* 10) - (*print-array* nil) - (il:*print-structure* - nil)) - (prin1-to-string - xcl::label)) - il:bkmenuinfo il:_ xcl::frame-number - il:frame-name il:_ xcl::label))) - - (loop (cond - ((not (typep xcl::next-frame 'il:stackp)) - (error "~%Last-frame-consumed ~S not found" - xcl::last-frame-consumed)) - ((prog1 (xcl::stack-eql xcl::next-frame xcl::last-frame-consumed - ) - (incf xcl::frame-number) - (setf xcl::next-frame (il:stknth -1 xcl::next-frame - - xcl::next-frame))) - (return))))))) - (rest xcl::items))) - -) -#+Xerox-Medley -(progn - -(defun dbg::attach-backtrace-menu (&optional tty-window skip) - (declare (special il:\\term.ofd il:backtracefont)) - (or tty-window (il:setq tty-window (il:wfromds (il:ttydisplaystream)))) - (prog (btw bkmenu - (tty-region (il:windowprop tty-window 'il:region)) - ;; And, for the FORMAT below... - (*print-level* 2) - (*print-length* 3) - (*print-escape* t) - (*print-gensym* t) - (*print-pretty* nil) - (*print-circle* nil) - (*print-radix* 10) - (*print-array* nil) - (il:*print-structure* nil)) - (setq bkmenu - (il:|create| il:menu - il:items il:_ (dbg::collect-backtrace-items tty-window skip) - il:whenselectedfn il:_ 'dbg::backtrace-item-selected - il:menuoutlinesize il:_ 0 - il:menufont il:_ il:backtracefont - il:menucolumns il:_ 1 - il:whenheldfn il:_ - #'(il:lambda (item menu button) - (declare (ignore item menu)) - (case button - (il:left - (il:promptprint - "Open a frame inspector on this stack frame")) - (il:middle - (il:promptprint "Inspect/Edit this function")))))) - (cond ((setq btw - (dolist (atw (il:attachedwindows tty-window)) - ;; Test for an attached window that has a backtrace menu in - ;; it. - (when (and (setq btw (il:windowprop atw 'il:menu)) - (eq (il:|fetch| (il:menu il:whenselectedfn) - il:|of| (car btw)) - 'dbg::backtrace-item-selected)) - (return atw)))) - ;; If there is alread a backtrace window, delete the old menu from - ;; it. - (il:deletemenu (car (il:windowprop btw 'il:menu)) nil btw) - (il:windowprop btw 'il:extent nil) - (il:clearw btw)) - ((setq btw - (il:createw (dbg::region-next-to - (il:windowprop tty-window 'il:region) - (il:widthifwindow - (il:imin (il:|fetch| (il:menu il:imagewidth) - il:|of| bkmenu) - il:|MaxBkMenuWidth|)) - (il:|fetch| (il:region il:height) - il:|of| tty-region) - :left))) - ; put bt window at left of TTY - ; window unless ttywindow is - ; near left edge. - (il:attachwindow btw tty-window - (if (il:igreaterp (il:|fetch| (il:region il:left) - il:|of| - (il:windowprop btw - 'il:region)) - (il:|fetch| (il:region il:left) - il:|of| tty-region)) - 'il:right - 'il:left) - nil - 'il:localclose) - ;; So that button clicks will switch the TTY - (il:windowprop btw 'il:process - (il:windowprop tty-window 'il:process)))) - (il:addmenu bkmenu btw (il:|create| il:position - il:xcoord il:_ 0 - il:ycoord il:_ (- (il:windowprop btw 'il:height) - (il:|fetch| (il:menu - il:imageheight) - il:|of| bkmenu)))) - ;; IL:ADDMENU sets up buttoneventfn for window that we don't - ;; want. We want to catch middle button events before the menu - ;; handler, so that we can pop up edit/inspect menu for the frame - ;; currently selected. So replace the buttoneventfn, and can - ;; nuke the cursorin and cursormoved guys, cause don't need them. - (il:windowprop btw 'il:buttoneventfn 'dbg::backtrace-menu-buttoneventfn) - (il:windowprop btw 'il:cursorinfn nil) - (il:windowprop btw 'il:cursormovedfn nil))) - -(defun dbg::collect-backtrace-items (tty-window skip) - (xcl:with-collection - ;; - ;; There are a number of possibilities for the values returned by the - ;; filter-fn. - ;; - ;; (1) INTERESTING-P is false, and the other values are all NIL. This - ;; is the simple case where the stack frame NEXT-POS should be ignored - ;; completly, and processing should continue with the next frame. - ;; - ;; (2) INTERESTING-P is true, and the other values are all NIL. This - ;; is the simple case where the stack frame NEXT-POS should appear in - ;; the backtrace as is, and processing should continue with the next - ;; frame. - ;; - ;; [Note that these two cases take care of old values of the - ;; filter-fn.] - ;; - ;; (3) INTERESTING-P is false, and LAST-FRAME-CONSUMED is a stack - ;; frame. In that case, ignore all stack frames from NEXT-POS to - ;; LAST-FRAME-CONSUMED, inclusive. - ;; - ;; (4) INTERESTING-P is true, and LAST-FRAME-CONSUMED is a stack - ;; frame. In this case, the backtrace should include a single entry - ;; coresponding to the frame USE-FRAME (which defaults to - ;; LAST-FRAME-CONSUMED), and processing should continue with the next - ;; frame after LAST-FRAME-CONSUMED. If LABEL is non-NIL, it will be - ;; the label that appears in the backtrace menu; otherwise the name of - ;; USE-FRAME will be used (or the form being EVALed if the frame is an - ;; EVAL frame). - ;; - (let* ((filter (cond ((null skip) #'xcl:true) - ((eq skip t) il:*short-backtrace-filter*) - (t skip))) - (top-frame (il:stknth 0 (il:getwindowprop tty-window - 'dbg::stack-position))) - (next-frame top-frame) - (frame-number 0) - interestingp last-frame-consumed frame-to-use label-to-use) - (loop (when (null next-frame) (return)) - ;; Get the values of INTERSTINGP, LAST-FRAME-CONSUMED, - ;; FRAME-TO-USE, and LABEL-TO-USE - (multiple-value-setq (interestingp last-frame-consumed - frame-to-use label-to-use) - (funcall filter next-frame)) - (when (null last-frame-consumed) - (setf last-frame-consumed next-frame)) - (when interestingp - (when (null frame-to-use) - (setf frame-to-use last-frame-consumed)) - (when (null label-to-use) - (setf label-to-use (il:stkname frame-to-use)) - (if (member label-to-use '(eval il:eval il:apply apply) - :test 'eq) - (setf label-to-use (il:stkarg 1 frame-to-use)))) - - ;; Walk the stack until we find the frame to use - (loop (cond ((not (typep next-frame 'il:stackp)) - (error "~%Use-frame ~S not found" frame-to-use)) - ((xcl::stack-eql next-frame frame-to-use) - (return)) - (t (incf frame-number) - (setf next-frame - (il:stknth -1 next-frame next-frame))))) - - ;; Add the menu item to the list under construction - (xcl:collect (il:|create| il:bkmenuitem - il:label il:_ (let ((*print-level* 2) - (*print-length* 3) - (*print-escape* t) - (*print-gensym* t) - (*print-pretty* nil) - (*print-circle* nil) - (*print-radix* 10) - (*print-array* nil) - (il:*print-structure* nil)) - (prin1-to-string label-to-use)) - il:bkmenuinfo il:_ frame-number - il:frame-name il:_ label-to-use))) - - ;; Update NEXT-POS - (loop (cond ((not (typep next-frame 'il:stackp)) - (error "~%Last-frame-consumed ~S not found" - last-frame-consumed)) - ((prog1 - (xcl::stack-eql next-frame last-frame-consumed) - (incf frame-number) - (setf next-frame (il:stknth -1 next-frame - next-frame))) - (return)))))))) - -(defun dbg::backtrace-menu-buttoneventfn (window &aux menu) - (setq menu (car (il:listp (il:windowprop window 'il:menu)))) - (unless (or (il:lastmousestate il:up) (null menu)) - (il:totopw window) - (cond ((il:lastmousestate il:middle) - ;; look for a selected frame in this menu, and then pop up - ;; the editor invoke menu for that frame. don't change the - ;; selection, just present the edit menu. - (let* ((selection (il:menu.handler menu - (il:windowprop window 'il:dsp))) - (tty-window (il:windowprop window 'il:mainwindow)) - (last-pos (il:windowprop tty-window 'dbg::lastpos))) - - ;; don't have to worry about releasing POS because we - ;; only look at it here (nobody here hangs on to it) - ;; and we will be around for less time than LASTPOS. - ;; The debugger is responsible for releasing LASTPOS. - (il:inspect/as/function (cond - ((and selection - (il:|fetch| (il:bkmenuitem il:frame-name) - il:|of| (car selection)))) - ((and (symbolp (il:stkname last-pos)) - (il:getd (il:stkname last-pos))) - (il:stkname last-pos)) - (t 'il:nill)) - last-pos tty-window))) - (t (let ((selection (il:menu.handler menu - (il:windowprop window 'il:dsp)))) - (when selection - (il:doselecteditem menu (car selection) (cdr selection)))))))) - -;; This function isn't really redefined, but it needs to be recomiled since we -;; changed the def'n of the BKMENUITEM record. - -(defun dbg::backtrace-item-selected (item menu button) - ;;When a frame name is selected in the backtrace menu, this is the function - ;;that gets called. - (declare (special il:brkenv) (ignore button)) - (let* ((frame-spec (il:|fetch| (il:bkmenuitem il:bkmenuinfo) il:|of| item)) - (tty-window (il:windowprop (il:wfrommenu menu) 'il:mainwindow)) - (bkpos (il:windowprop tty-window 'dbg::stack-position)) - (pos (il:stknth (- frame-spec) bkpos))) - (let ((lp (il:windowprop tty-window 'dbg::lastpos))) - (and lp (il:stknth 0 pos lp))) - ;; change the item selected from OLDITEM to ITEM. Only do this on left - ;; buttons now. Middle just pops up the edit menu, doesn't select. -woz - (let ((old-item (il:|fetch| (il:menu il:menuuserdata) il:|of| menu))) - (when old-item (il:menudeselect old-item menu)) - (il:menuselect item menu)) - ;; Change the lexical environment so it is the one in effect as of this - ;; frame. - (il:process.eval (il:windowprop tty-window (quote dbg::process)) - `(setq il:brkenv ',(il:find-lexical-environment pos)) - t) - (let ((frame-window (xcl:with-profile - (il:process.eval (il:windowprop tty-window - 'il:process) - `(let ((profile (xcl:copy-profile - (xcl:find-profile - "READ-PRINT")))) - (setf - (xcl::profile-entry-value - 'xcl:*eval-function* profile) - xcl:*eval-function*) - (xcl:save-profile profile)) - t) - (il:inspectw.create pos - #'(lambda (pos) - (dbg::stack-frame-properties pos t)) - 'dbg::stack-frame-fetchfn - 'dbg::stack-frame-storefn - nil - 'dbg::stack-frame-value-command - nil - (format nil "~S Frame" (il:stkname pos)) - nil (dbg::make-frame-inspect-window - tty-window) - 'dbg::stack-frame-property)))) - (when (not (il:windowprop frame-window 'il:mainwindow)) - (il:attachwindow frame-window tty-window - (if (> (il:|fetch| (il:region il:bottom) il:|of| - (il:windowprop frame-window 'il:region)) - (il:|fetch| (il:region il:bottom) il:|of| - (il:windowprop tty-window 'il:region))) - 'il:top 'il:bottom) - nil 'il:localclose) - (il:windowaddprop frame-window 'il:closefn 'il:detachwindow))))) - -) ;end of Xerox-Medley - -(defun il:select.fns.editor (&optional function) - ;; gives the user a menu choice of editors. - (il:menu (il:|create| il:menu - il:items il:_ (cond ((il:ccodep function) - '((il:|InspectCode| 'il:inspectcode - "Shows the compiled code.") - (il:|DisplayEdit| 'ed - "Edit it with the display editor") - (il:|TtyEdit| 'il:ef - "Edit it with the standard editor"))) - ((il:closure-p function) - '((il:|Inspect| 'inspect - "Inspect this object"))) - (t '((il:|DisplayEdit| 'ed - "Edit it with the display editor") - (il:|TtyEdit| 'il:ef - "Edit it with the standard editor")))) - il:centerflg il:_ t))) - -;; - - -;; CLOS specific extensions to the debugger - - -;; There are some new things that act as functions, and that we want to be -;; able to edit from a backtrace window - -(pushnew 'methods xcl::*function-types*) - -(eval-when (eval compile load) - (unless (generic-function-p (symbol-function 'il:inspect/as/function)) - (make-specializable 'il:inspect/as/function))) - -(defmethod il:inspect/as/function (name stack-pointer debugger-window) - ;; Calls an editor on function NAME. STKP and WINDOW are the stack pointer - ;; and window of the break in which this inspect command was called. - (declare (ignore debugger-window)) - (let ((editor (il:select.fns.editor name))) - (case editor - ((nil) - ;; No editor chosen, so don't do anything - nil) - (il:inspectcode - ;; Inspect the compiled code - (let ((frame (xcl::stack-pointer-frame stack-pointer))) - (if (and (il:stackp stack-pointer) - (xcl::stack-frame-valid-p frame)) - (il:inspectcode (let ((code-base (xcl::stack-frame-fn-header frame))) - (cond ((eq (il:\\get-compiled-code-base name) - code-base) - name) - (t - ;; Function executing in this frame is not - ;; the one in the definition cell of its - ;; name, so fetch the real code. Have to - ;; pass a CCODEP - (il:make-compiled-closure code-base)))) - nil nil nil (xcl::stack-frame-pc frame)) - (il:inspectcode name)))) - (ed - ;; Use the standard editor. - ;; This used to take care to apply the editor in the debugger - ;; process, so forms evaluated in the editor happen in the - ;; context of the break. But that doesn't count for much any - ;; more, now that lexical variables are the way to go. Better to - ;; use the LEX debugger command (thank you, Herbie) and - ;; shift-select pieces of code from the editor into the debugger - ;; window. - (ed name `(,@xcl::*function-types* :display))) - (otherwise (funcall editor name))))) - -(defmethod il:inspect/as/function ((name standard-object) stkp window) - (when (il:menu (il:|create| il:menu - il:items il:_ '(("Inspect" t "Inspect this object")))) - (inspect name))) - -(defmethod il:inspect/as/function ((x standard-method) stkp window) - (let* ((generic-function-name (slot-value (slot-value x 'generic-function) - 'name)) - (method-name (full-method-name x)) - (editor (il:select.fns.editor method-name))) - (il:allow.button.events) - (case editor - (ed (ed method-name '(:display methods))) - (il:inspectcode (il:inspectcode (slot-value x 'function))) - ((nil) nil) - (otherwise (funcall editor method-name))))) - -;; A replacement for the vanilla IL:INTERESTING-FRAME-P so we can see methods -;; and generic-functions on the stack. - -(defun interesting-frame-p (stack-pos &optional interp-flag) - ;; Return up to four values: INTERESTING-P LAST-FRAME-CONSUMED USE-FRAME and - ;; LABEL. See the function IL:COLLECT-BACKTRACE-ITEMS for a full description - ;; of how these values are used. - (labels - ((function-matches-frame-p (function frame) - "Is the function being called in this frame?" - (let* ((frame-name (il:stkname frame)) - (code-being-run (cond - ((typep frame-name 'il:closure) - frame-name) - ((and (consp frame-name) - (eq 'il:\\interpreter - (xcl::stack-frame-name - (il:\\stackargptr frame)))) - frame-name) - (t (xcl::stack-frame-fn-header - (il:\\stackargptr frame)))))) - (or (eq function code-being-run) - (and (typep function 'il:compiled-closure) - (eq (xcl::compiled-closure-fnheader function) - code-being-run))))) - (generic-function-from-frame (frame) - "If this the frame of a generic function return the gf, otherwise - return NIL." - ;; Generic functions are implemented as compiled closures. On the - ;; stack, we only see the fnheader for the the closure. This could - ;; be a discriminator code, or in the default method only case it - ;; will be the actual method function. To tell if this is a generic - ;; function frame, we have to check very carefully to see if the - ;; right stuff is on the stack. Specifically, the closure's ccode, - ;; and the first local variable has to be a ptrhunk big enough to be - ;; a FIN environment, and fin-env-fin of that ptrhunk has to point - ;; to a generic function whose ccode and environment match. - (let ((n-args (il:stknargs frame)) - (env nil) - (gf nil)) - (if (and ;; is there at least one local? - (> (il:stknargs frame t) n-args) - ;; and does the local contain something that might be - ;; the closure environment of a funcallable instance? - (setf env (il:stkarg (1+ n-args) frame)) - ;; and does the local contain something that might be - ;; the closure environment of a funcallable instance? - (typep env *fin-env-type*) - (setf gf (fin-env-fin env)) - ;; whose fin-env-fin points to a generic function? - (generic-function-p gf) - ;; whose environment is the same as env? - (eq (xcl::compiled-closure-env gf) env) - ;; and whose code is the same as the code for this - ;; frame? - (function-matches-frame-p gf frame)) - gf - nil)))) - (let ((frame-name (il:stkname stack-pos))) - ;; See if there is a generic-function on the stack at this - ;; location. - (let ((gf (generic-function-from-frame stack-pos))) - (when gf - (return-from interesting-frame-p (values t stack-pos stack-pos gf)))) - ;; See if this is an interpreted method. The method body is - ;; wrapped in a (BLOCK ...). We look for an - ;; interpreted call to BLOCK whose block-name is the name of - ;; generic-function. - (when (and (eq frame-name 'eval) - (consp (il:stkarg 1 stack-pos)) - (eq (first (il:stkarg 1 stack-pos)) 'block) - (symbolp (second (il:stkarg 1 stack-pos))) - (fboundp (second (il:stkarg 1 stack-pos))) - (generic-function-p - (symbol-function (second (il:stkarg 1 stack-pos))))) - (let* ((form (il:stkarg 1 stack-pos)) - (block-name (second form)) - (generic-function (symbol-function block-name)) - (methods (generic-function-methods (symbol-function block-name)))) - ;; If this is really a method being called from a - ;; generic-function, the g-f should be no more than a - ;; few(?) frames up the stack. Check for the method call - ;; by looking for a call to APPLY, where the function - ;; being applied is the code in one of the methods. - (do ((i 100 (1- i)) - (previous-pos stack-pos current-pos) - (current-pos (il:stknth -1 stack-pos) (il:stknth -1 current-pos)) - (found-method nil) - (method-pos)) - ((or (null current-pos) (<= i 0)) nil) - (cond ((equalp generic-function - (generic-function-from-frame current-pos)) - (if found-method - (return-from interesting-frame-p - (values t previous-pos method-pos found-method)) - (return))) - (found-method nil) - ((eq (il:stkname current-pos) 'apply) - (dolist (method methods) - (when (eq (method-function method) - (il:stkarg 1 current-pos)) - (setq method-pos current-pos) - (setq found-method method) - (return)))))))) - ;; Try to handle compiled methods - (when (and (symbolp frame-name) - (not (fboundp frame-name)) - (eq (il:chcon1 frame-name) - (il:charcode il:\()) - (or (string-equal "(method " (symbol-name frame-name) - :start2 0 :end2 13) - (string-equal "(method " (symbol-name frame-name) - :start2 0 :end2 12) - (string-equal "(method " (symbol-name frame-name) - :start2 0 :end2 8))) - ;; Looks like a name that CLOS consed up. See if there is a - ;; GF nearby up the stack. If there is, use it to help - ;; determine which method we have. - (do ((i 30 (1- i)) - (current-pos (il:stknth -1 stack-pos) - (il:stknth -1 current-pos)) - (gf)) - ((or (null current-pos) - (<= i 0)) - nil) - (setq gf (generic-function-from-frame current-pos)) - (when gf - (dolist (method (generic-function-methods gf)) - (when (function-matches-frame-p (method-function method) - stack-pos) - (return-from interesting-frame-p - (values t stack-pos stack-pos method)))) - (return)))) - ;; If we haven't already returned, use the default method. - (xcl::interesting-frame-p stack-pos interp-flag)))) - - -(setq il:*short-backtrace-filter* 'interesting-frame-p) - -;;; Support for undo - - (defun undoable-setf-slot-value (object slot-name new-value) - (if (slot-boundp object slot-name) - (il:undosave (list 'undoable-setf-slot-value - object slot-name (slot-value object slot-name))) - (il:undosave (list 'slot-makunbound object slot-name))) - (setf (slot-value object slot-name) new-value)) - - (setf (get 'slot-value :undoable-setf-inverse) 'undoable-setf-slot-value) - - -;;; Support for ?= and friends - -;; The arglists for generic-functions are built using gensyms, and don't reflect -;; any keywords (they are all included in an &REST arg). Rather then use the -;; arglist in the code, we use the one that CLOS kindly keeps in the generic-function. - -(xcl:advise-function 'il:smartarglist - '(if (and il:explainflg - (symbolp il:fn) - (fboundp il:fn) - (generic-function-p (symbol-function il:fn))) - (generic-function-pretty-arglist (symbol-function il:fn)) - (xcl:inner)) - :when :around :priority :last) - -(setf (get 'defclass 'il:argnames) - '(nil (class-name (#\{ superclass-name #\} #\*) - (#\{ slot-specifier #\} #\*) - #\{ slot-option #\} #\*))) - -(setf (get 'defmethod 'il:argnames) - '(nil (#\{ name #\| (setf name) #\} #\{ method-qualifier #\} #\* - specialized-lambda-list #\{ declaration #\| doc-string #\} #\* - #\{ form #\} #\*))) - -;;; Prettyprinting support, the result of Harley Davis. - -;; Support the standard Prettyprinter. This is really minimal right now. If -;; anybody wants to fix this, I'd be happy to include their code. In fact, -;; there is almost no support for Commonlisp in the standard Prettyprinter, so -;; the field is wide open to hackers with time on their hands. - - -(setf (get 'defmethod :definition-print-template) ;Not quite right, since it - '(:name :arglist :body)) ; doesn't handle qualifiers, - ; but it will have to do. - -(defun defclass-prettyprint (form) - (let ((left (il:dspxposition)) - (char-width (il:charwidth (il:charcode x) *standard-output*))) - (xcl:destructuring-bind (defclass name supers slots . options) form - (princ "(") - (prin1 defclass) - (princ " ") - (prin1 name) - (princ " ") - (if (null supers) - (princ "()") ;Print "()" instead of "nil" - (il:sequential.prettyprint (list supers) (il:dspxposition))) - (if (null slots) - (progn (il:prinendline (+ left (* 4 char-width)) *standard-output*) - (princ "()")) - (il:sequential.prettyprint (list slots) (+ left (* 4 char-width)))) - (when options - (il:sequential.prettyprint options (+ left (* 2 char-width)))) - (princ ")") - nil))) - -(let ((pprint-macro (assoc 'defclass il:prettyprintmacros))) - (if (null pprint-macro) - (push (cons 'defclass 'defclass-prettyprint) - il:prettyprintmacros) - (setf (cdr pprint-macro) 'defclass-prettyprint))) - -(defun binder-prettyprint (form) - ;; Prettyprints expressions like MULTIPLE-VALUE-BIND and WITH-SLOTS - ;; that are of the form (fn (var ...) form &rest body). - ;; This code is far from correct, but it's better than nothing. - (if (and (consp form) - (not (null (cdddr form)))) - ;; I have no idea what I'm doing here. Seems I can copy and edit somebody - ;; elses code without understanding it. - (let ((body-indent (+ (il:dspxposition) - (* 2 (il:charwidth (il:charcode x) - *standard-output*)))) - (form-indent (+ (il:dspxposition) - (* 4 (il:charwidth (il:charcode x) - *standard-output*))))) - (princ "(") - (prin1 (first form)) - (princ " ") - (il:superprint (second form) form nil *standard-output*) - (il:sequential.prettyprint (list (third form)) form-indent) - (il:sequential.prettyprint (cdddr form) body-indent) - (princ ")") - nil) ;Return NIL to indicate that we did - ; the printing - t)) ;Return true to use default printing - - -(dolist (fn '(multiple-value-bind with-accessors with-slots)) - (let ((pprint-macro (assoc fn 'il:prettyprintmacros))) - (if (null pprint-macro) - (push (cons fn 'binder-prettyprint) - il:prettyprintmacros) - (setf (cdr pprint-macro) 'binder-prettyprint)))) - - - -;; SEdit has its own prettyprinter, so we need to support that too. This is due -;; to Harley Davis. Really. - -(push (cons :slot-spec - '(((sedit::prev-keyword? (sedit::next-inline? 1 break sedit::from-indent . 1) - break sedit::from-indent . 0) - (sedit::set-indent . 1) - (sedit::next-inline? 1 break sedit::from-indent . 1) - (sedit::prev-keyword? (sedit::next-inline? 1 break sedit::from-indent . 1) - break sedit::from-indent . 0)) - ((sedit::prev-keyword? (sedit::next-inline? 1 break sedit::from-indent . 1) - break sedit::from-indent . 0) - (sedit::set-indent . 1) - (sedit::next-inline? 1 break sedit::from-indent . 1) - (sedit::prev-keyword? (sedit::next-inline? 1 break sedit::from-indent . 1) - break sedit::from-indent . 0)))) - sedit:*indent-alist*) - -(setf (sedit:get-format :slot-spec) - '(:indent :slot-spec :inline t)) - -(setf (sedit:get-format :slot-spec-list) - '(:indent :binding-list :args (:slot-spec) :inline nil)) - -(setf (sedit:get-format 'defclass) - '(:indent ((2) 1) - :args (:keyword nil nil :slot-spec-list nil) - :sublists (4))) - -(setf (sedit:get-format 'defmethod) - '(:indent ((2)) - :args (:keyword nil :lambda-list nil) - :sublists (3))) - -(setf (sedit:get-format 'defgeneric) 'defun) - -(setf (sedit:get-format 'generic-flet) 'flet) - -(setf (sedit:get-format 'generic-labels) 'flet) - -(setf (sedit:get-format 'call-next-method) - '(:indent (1) :args (:keyword nil))) - -(setf (sedit:get-format 'symbol-macrolet) 'let) - -(setf (sedit:get-format 'with-accessors) - '(:indent ((1) 1) - :args (:keyword :binding-list nil) - :sublists (2) - :miser :never)) - -(setf (sedit:get-format 'with-slots) 'with-accessors) - -(setf (sedit:get-format 'make-instance) - '(:indent ((1)) - :args (:keyword nil :slot-spec-list))) - -(setf (sedit:get-format '*make-instance) 'make-instance) - -;;; PrettyFileIndex stuff, the product of Harley Davis. - -(defvar *pfi-class-type* '(class defclass pfi-class-namer)) - -(defvar *pfi-method-type* '(method defmethod pfi-method-namer) - "Handles method for prettyfileindex") - -(defvar *pfi-index-accessors* nil - "t -> each slot accessor gets a listing in the index.") - -(defvar *pfi-method-index* :group - ":group, :separate, :both, or nil") - -(defun pfi-add-class-type () - (pushnew *pfi-class-type* il:*pfi-types*)) - -(defun pfi-add-method-type () - (pushnew *pfi-method-type* il:*pfi-types*)) - -(defun pfi-class-namer (expression entry) - (let ((class-name (second expression))) - ;; Following adds all slot readers/writers/accessors as separate entries in - ;; the index. Probably a mistake. - (if *pfi-index-accessors* - (let ((slot-list (fourth expression)) - (accessor-names nil)) - (labels ((add-accessor (method-index name-index) - (push (case *pfi-method-index* - (:group method-index) - (:separate name-index) - ((t :both) (list method-index name-index)) - ((nil) nil) - (otherwise (error "Illegal value for *pfi-method-index*: ~S" - *pfi-method-index*))) - accessor-names)) - (add-reader (reader-name) - (add-accessor `(method (,reader-name (,class-name))) - `(,reader-name (,class-name)))) - (add-writer (writer-name) - (add-accessor `(method ((setf ,writer-name) (t ,class-name))) - `((setf ,writer-name) (t ,class-name))))) - (dolist (slot-def slot-list) - (do* ((rest-slot-args (cdr slot-def) (cddr rest-slot-args)) - (slot-arg (first rest-slot-args) (first rest-slot-args))) - ((null rest-slot-args)) - (case slot-arg - (:reader (add-reader (second rest-slot-args))) - (:writer (add-writer (second rest-slot-args))) - (:accessor (add-reader (second rest-slot-args)) - (add-writer (second rest-slot-args))) - (otherwise nil)))) - (cons `(class (,class-name)) accessor-names))) - class-name))) - -(defun pfi-method-namer (expression entry) - (let ((method-name (second expression)) - (specializers nil) - (qualifiers nil) - lambda-list) - (do* ((rest-qualifiers (cddr expression) (cdr rest-qualifiers)) - (qualifier (first rest-qualifiers) (first rest-qualifiers))) - ((listp qualifier) (setq lambda-list qualifier) - (setq qualifiers (reverse qualifiers)) qualifiers) - (push qualifier qualifiers)) - (do* ((rest-lambda-list lambda-list (cdr rest-lambda-list)) - (arg (first rest-lambda-list) (first rest-lambda-list))) - ((or (member arg lambda-list-keywords) (null rest-lambda-list)) - (setq specializers (reverse specializers))) - (push (if (listp arg) (second arg) t) specializers)) - (let ((method-index `(method (,method-name ,@qualifiers ,specializers))) - (name-index `(,method-name ,@qualifiers ,specializers))) - (case *pfi-method-index* - (:group method-index) - (:separate name-index) - ((t :both) (list method-index name-index)) - ((nil) nil) - (otherwise (error "Illegal value for *pfi-method-index*: ~S" *pfi-method-index*)))))) - -(defun pfi-install-clos () - (pfi-add-method-type) - (pfi-add-class-type)) - -(eval-when (eval load) - (when (boundp (quote il:*pfi-types*)) - (pfi-install-clos)) - ) diff --git a/obsolete/clos/2.0/combin.lisp b/obsolete/clos/2.0/combin.lisp deleted file mode 100644 index f76ba815..00000000 --- a/obsolete/clos/2.0/combin.lisp +++ /dev/null @@ -1,254 +0,0 @@ -;;;-*-Mode:LISP; Package: CLOS; Base:10; Syntax:Common-lisp -*- -;;; -;;; ************************************************************************* -;;; Copyright (c) 1991 Venue -;;; All rights reserved. -;;; ************************************************************************* -;;; - -(in-package 'clos) - -(defun make-effective-method-function (generic-function form) - (flet ((name-function (fn) (set-function-name fn 'a-combined-method) fn)) - (if (and (listp form) - (eq (car form) 'call-method) - (method-p (cadr form)) - (every #'method-p (caddr form))) - ;; - ;; The effective method is just a call to call-method. This opens up - ;; the possibility of just using the method function of the method as - ;; as the effective method function. - ;; - ;; But we have to be careful. If that method function will ask for - ;; the next methods we have to provide them. We do not look to see - ;; if there are next methods, we look at whether the method function - ;; asks about them. If it does, we must tell it whether there are - ;; or aren't to prevent the leaky next methods bug. - ;; - (let* ((method-function (method-function (cadr form))) - (arg-info (gf-arg-info generic-function)) - (metatypes (arg-info-metatypes arg-info)) - (applyp (arg-info-applyp arg-info))) - (if (not (method-function-needs-next-methods-p method-function)) - method-function - (let ((next-method-functions (mapcar #'method-function (caddr form)))) - (name-function - (get-function `(lambda ,(make-dfun-lambda-list metatypes applyp) - (let ((*next-methods* .next-method-functions.)) - ,(make-dfun-call metatypes applyp '.method-function.))) - #'default-test-converter ;This could be optimized by making - ;the interface from here to the - ;walker more clear so that the - ;form wouldn't get walked at all. - #'(lambda (form) - (if (memq form '(.next-method-functions. .method-function.)) - (values form (list form)) - form)) - #'(lambda (form) - (cond ((eq form '.next-method-functions.) - (list next-method-functions)) - ((eq form '.method-function.) - (list method-function))))))))) - ;; - ;; We have some sort of `real' effective method. Go off and get a - ;; compiled function for it. Most of the real hair here is done by - ;; the GET-FUNCTION mechanism. - ;; - (name-function (make-effective-method-function-internal generic-function form))))) - -(defvar *global-effective-method-gensyms* ()) -(defvar *rebound-effective-method-gensyms*) - -(defun get-effective-method-gensym () - (or (pop *rebound-effective-method-gensyms*) - (let ((new (make-symbol "EFFECTIVE-METHOD-GENSYM-"))) - (push new *global-effective-method-gensyms*) - new))) - -(eval-when (load) - (let ((*rebound-effective-method-gensyms* ())) - (dotimes (i 10) (get-effective-method-gensym)))) - -(defun make-effective-method-function-internal (generic-function effective-method) - (let* ((*rebound-effective-method-gensyms* *global-effective-method-gensyms*) - (arg-info (gf-arg-info generic-function)) - (metatypes (arg-info-metatypes arg-info)) - (applyp (arg-info-applyp arg-info))) - (labels ((test-converter (form) - (if (and (consp form) (eq (car form) 'call-method)) - '.call-method. - (default-test-converter form))) - (code-converter (form) - (if (and (consp form) (eq (car form) 'call-method)) - ;; - ;; We have a `call' to CALL-METHOD. There may or may not be next methods - ;; and the two cases are a little different. It controls how many gensyms - ;; we will generate. - ;; - (let ((gensyms - (if (cddr form) - (list (get-effective-method-gensym) - (get-effective-method-gensym)) - (list (get-effective-method-gensym) - ())))) - (values `(let ((*next-methods* ,(cadr gensyms))) - ,(make-dfun-call metatypes applyp (car gensyms))) - gensyms)) - (default-code-converter form))) - (constant-converter (form) - (if (and (consp form) (eq (car form) 'call-method)) - (if (cddr form) - (list (check-for-make-method (cadr form)) - (mapcar #'check-for-make-method (caddr form))) - (list (check-for-make-method (cadr form)) - ())) - (default-constant-converter form))) - (check-for-make-method (effective-method) - (cond ((method-p effective-method) - (method-function effective-method)) - ((and (listp effective-method) - (eq (car effective-method) 'make-method)) - (make-effective-method-function generic-function - (make-progn (cadr effective-method)))) - (t - (error "Effective-method form is malformed."))))) - (get-function `(lambda ,(make-dfun-lambda-list metatypes applyp) ,effective-method) - #'test-converter - #'code-converter - #'constant-converter)))) - - - -(defvar *invalid-method-error* - #'(lambda (&rest args) - (declare (ignore args)) - (error - "INVALID-METHOD-ERROR was called outside the dynamic scope~%~ - of a method combination function (inside the body of~%~ - DEFINE-METHOD-COMBINATION or a method on the generic~%~ - function COMPUTE-EFFECTIVE-METHOD)."))) - -(defvar *method-combination-error* - #'(lambda (&rest args) - (declare (ignore args)) - (error - "METHOD-COMBINATION-ERROR was called outside the dynamic scope~%~ - of a method combination function (inside the body of~%~ - DEFINE-METHOD-COMBINATION or a method on the generic~%~ - function COMPUTE-EFFECTIVE-METHOD)."))) - -;(defmethod compute-effective-method :around ;issue with magic -; ((generic-function generic-function) ;generic functions -; (method-combination method-combination) -; applicable-methods) -; (declare (ignore applicable-methods)) -; (flet ((real-invalid-method-error (method format-string &rest args) -; (declare (ignore method)) -; (apply #'error format-string args)) -; (real-method-combination-error (format-string &rest args) -; (apply #'error format-string args))) -; (let ((*invalid-method-error* #'real-invalid-method-error) -; (*method-combination-error* #'real-method-combination-error)) -; (call-next-method)))) - -(defun invalid-method-error (&rest args) - (declare (arglist method format-string &rest format-arguments)) - (apply *invalid-method-error* args)) - -(defun method-combination-error (&rest args) - (declare (arglist format-string &rest format-arguments)) - (apply *method-combination-error* args)) - - - -;;; -;;; The STANDARD method combination type. This is coded by hand (rather than -;;; with define-method-combination) for bootstrapping and efficiency reasons. -;;; Note that the definition of the find-method-combination-method appears in -;;; the file defcombin.lisp, this is because EQL methods can't appear in the -;;; bootstrap. -;;; -;;; The defclass for the METHOD-COMBINATION and STANDARD-METHOD-COMBINATION -;;; classes has to appear here for this reason. This code must conform to -;;; the code in the file defcombin, look there for more details. -;;; - -(defclass method-combination () ()) - -(define-gf-predicate method-combination-p method-combination) - -(defclass standard-method-combination - (definition-source-mixin method-combination) - ((type :reader method-combination-type - :initarg :type) - (documentation :reader method-combination-documentation - :initarg :documentation) - (options :reader method-combination-options - :initarg :options))) - -(defmethod print-object ((mc method-combination) stream) - (printing-random-thing (mc stream) - (format stream - "Method-Combination ~S ~S" - (method-combination-type mc) - (method-combination-options mc)))) - -(eval-when (load eval) - (setq *standard-method-combination* - (make-instance 'standard-method-combination - :type 'standard - :documentation "The standard method combination." - :options ()))) - -;This definition appears in defcombin.lisp. -; -;(defmethod find-method-combination ((generic-function generic-function) -; (type (eql 'standard)) -; options) -; (when options -; (method-combination-error -; "The method combination type STANDARD accepts no options.")) -; *standard-method-combination*) - -(defun make-call-methods (methods) - (mapcar #'(lambda (method) `(call-method ,method ())) methods)) - -(defmethod compute-effective-method ((generic-function generic-function) - (combin standard-method-combination) - applicable-methods) - (let ((before ()) - (primary ()) - (after ()) - (around ())) - (dolist (m applicable-methods) - (let ((qualifiers (method-qualifiers m))) - (cond ((member ':before qualifiers) (push m before)) - ((member ':after qualifiers) (push m after)) - ((member ':around qualifiers) (push m around)) - (t - (push m primary))))) - (setq before (reverse before) - after (reverse after) - primary (reverse primary) - around (reverse around)) - (cond ((null primary) - `(error "No primary method for the generic function ~S." ',generic-function)) - ((and (null before) (null after) (null around)) - ;; - ;; By returning a single call-method `form' here we enable an important - ;; implementation-specific optimization. - ;; - `(call-method ,(first primary) ,(rest primary))) - (t - (let ((main-effective-method - (if (or before after (rest primary)) - `(multiple-value-prog1 - (progn ,@(make-call-methods before) - (call-method ,(first primary) ,(rest primary))) - ,@(make-call-methods (reverse after))) - `(call-method ,(first primary) ())))) - (if around - `(call-method ,(first around) - (,@(rest around) (make-method ,main-effective-method))) - main-effective-method)))))) - diff --git a/obsolete/clos/2.0/compat.lisp b/obsolete/clos/2.0/compat.lisp deleted file mode 100644 index ca390f84..00000000 --- a/obsolete/clos/2.0/compat.lisp +++ /dev/null @@ -1,11 +0,0 @@ -;;;-*-Mode:LISP; Package: CLOS; Base:10; Syntax:Common-lisp; -*- -;;; -;;; ************************************************************************* -;;; Copyright (c) 1991 Venue -;;; All rights reserved. -;;; ************************************************************************* -;;; - -(in-package 'clos) - -() diff --git a/obsolete/clos/2.0/construct.lisp b/obsolete/clos/2.0/construct.lisp deleted file mode 100644 index 7d740475..00000000 --- a/obsolete/clos/2.0/construct.lisp +++ /dev/null @@ -1,1090 +0,0 @@ -;;;-*-Mode:LISP; Package:(CLOS LISP 1000); Base:10; Syntax:Common-lisp -*- -;;; -;;; ************************************************************************* -;;; Copyright (c) 1991 Venue -;;; All rights reserved. -;;; ************************************************************************* -;;; -;;; -;;; This file defines the defconstructor and other make-instance optimization -;;; mechanisms. -;;; - -(in-package 'clos) - -;;; -;;; defconstructor is used to define special purpose functions which just -;;; call make-instance with a symbol as the first argument. The semantics -;;; of defconstructor is that it is equivalent to defining a function which -;;; just calls make-instance. The purpose of defconstructor is to provide -;;; CLOS with a way of noticing these calls to make-instance so that it can -;;; optimize them. Specific ports of CLOS could just have their compiler -;;; spot these calls to make-instance and then call this code. Having the -;;; special defconstructor facility is the best we can do portably. -;;; -;;; -;;; A call to defconstructor like: -;;; -;;; (defconstructor make-foo foo (a b &rest r) a a :mumble b baz r) -;;; -;;; Is equivalent to a defun like: -;;; -;;; (defun make-foo (a b &rest r) -;;; (make-instance 'foo 'a a ':mumble b 'baz r)) -;;; -;;; Calls like the following are also legal: -;;; -;;; (defconstructor make-foo foo ()) -;;; (defconstructor make-bar bar () :x *x* :y *y*) -;;; (defconstructor make-baz baz (a b c) a-b (list a b) b-c (list b c)) -;;; -;;; -;;; The general idea of this implementation is that the expansion of the -;;; defconstructor form includes the creation of closure generators which -;;; can be called to create constructor code for the class. The ways that -;;; a constructor can be optimized depends not only on the defconstructor -;;; form, but also on the state of the class and the generic functions in -;;; the initialization protocol. Because of this, the determination of the -;;; form of constructor code to be used is a two part process. -;;; -;;; At compile time, make-constructor-code-generators looks at the actual -;;; defconstructor form and makes a list of appropriate constructor code -;;; generators. All that is really taken into account here is whether -;;; any initargs are supplied in the call to make-instance, and whether -;;; any of those are constant. -;;; -;;; At constructor code generation time (see note about lazy evaluation) -;;; compute-constructor-code calls each of the constructor code generators -;;; to try to get code for this constructor. Each generator looks at the -;;; state of the class and initialization protocol generic functions and -;;; decides whether its type of code is appropriate. This depends on things -;;; like whether there are any applicable methods on initialize-instance, -;;; whether class slots are affected by initialization etc. -;;; -;;; -;;; Constructor objects are funcallable instances, the protocol followed to -;;; to compute the constructor code for them is quite similar to the protocol -;;; followed to compute the discriminator code for a generic function. When -;;; the constructor is first loaded, we install as its code a function which -;;; will compute the actual constructor code the first time it is called. -;;; -;;; If there is an update to the class structure which might invalidate the -;;; optimized constructor, the special lazy constructor installer is put back -;;; so that it can compute the appropriate constructor when it is called. -;;; This is the same kind of lazy evaluation update strategy used elswhere -;;; in CLOS. -;;; -;;; To allow for flexibility in the CLOS implementation and to allow CLOS users -;;; to specialize this constructor facility for their own metaclasses, there -;;; is an internal protocol followed by the code which loads and installs -;;; the constructors. This is documented in the comments in the code. -;;; -;;; This code is also designed so that one of its levels, can be used to -;;; implement optimization of calls to make-instance which can't go through -;;; the defconstructor facility. This has not been implemented yet, but the -;;; hooks are there. -;;; -;;; - -(defmacro defconstructor - (name class lambda-list &rest initialization-arguments) - (expand-defconstructor class - name - lambda-list - (copy-list initialization-arguments))) - -(defun expand-defconstructor (class-name name lambda-list supplied-initargs) - (let ((class (find-class class-name nil)) - (supplied-initarg-names - (gathering1 (collecting) - (iterate ((name (*list-elements supplied-initargs :by #'cddr))) - (gather1 name))))) - (when (null class) - (error "defconstructor form being compiled (or evaluated) before~@ - class ~S is defined." - class-name)) - `(progn - ;; In order to avoid undefined function warnings, we want to tell - ;; the compile time environment that a function with this name and - ;; this argument list has been defined. The portable way to do this - ;; is with defun. - (proclaim '(notinline ,name)) - (defun ,name ,lambda-list - (declare (ignore ,@(specialized-lambda-list-parameters lambda-list))) - (error "Constructor ~S not loaded." ',name)) - - ,(make-top-level-form `(defconstructor ,name) - '(load eval) - `(load-constructor - ',class-name - ',(class-name (class-of class)) - ',name - ',supplied-initarg-names - ;; make-constructor-code-generators is called to return a list - ;; of constructor code generators. The actual interpretation - ;; of this list is left to compute-constructor-code, but the - ;; general idea is that it should be an plist where the keys - ;; name a kind of constructor code and the values are generator - ;; functions which return the actual constructor code. The - ;; constructor code is usually a closures over the arguments - ;; to the generator. - ,(make-constructor-code-generators class - name - lambda-list - supplied-initarg-names - supplied-initargs)))))) - -(defun load-constructor (class-name metaclass-name constructor-name - supplied-initarg-names code-generators) - (let ((class (find-class class-name nil))) - (cond ((null class) - (error "defconstructor form being loaded (or evaluated) before~@ - class ~S is defined." - class-name)) - ((neq (class-name (class-of class)) metaclass-name) - (error "When defconstructor ~S was compiled, the metaclass of the~@ - class ~S was ~S. The metaclass is now ~S.~@ - The constructor must be recompiled." - constructor-name - class-name - metaclass-name - (class-name (class-of class)))) - (t - (load-constructor-internal class - constructor-name - supplied-initarg-names - code-generators) - constructor-name)))) - -;;; -;;; The actual constructor objects. -;;; -(defclass constructor () - ((class ;The class with which this - :initarg :class ;constructor is associated. - :reader constructor-class) ;The actual class object, - ;not the class name. - ; - (name ;The name of this constructor. - :initform nil ;This is the symbol in whose - :initarg :name ;function cell the constructor - :reader constructor-name) ;usually sits. Of course, this - ;is optional. defconstructor - ;makes named constructors, but - ;it is possible to manipulate - ;anonymous constructors also. - ; - (code-type ;The type of code currently in - :initform nil ;use by this constructor. This - :accessor constructor-code-type) ;is mostly for debugging and - ;analysis purposes. - ;The lazy installer sets this - ;to LAZY. The most basic and - ;least optimized type of code - ;is called FALLBACK. - ; - (supplied-initarg-names ;The names of the initargs this - :initarg :supplied-initarg-names ;constructor supplies when it - :reader ;"calls" make-instance. - constructor-supplied-initarg-names) ; - ; - (code-generators ;Generators for the different - :initarg :code-generators ;types of code this constructor - :reader constructor-code-generators)) ;could use. - (:metaclass funcallable-standard-class)) - - -;;; -;;; Because the value in the code-type slot should always correspond to the -;;; funcallable-instance-function of the constructor, this function should -;;; always be used to set the both at the same time. -;;; -(defun set-constructor-code (constructor code type) - (set-funcallable-instance-function constructor code) - (set-function-name constructor (constructor-name constructor)) - (setf (constructor-code-type constructor) type)) - - -(defmethod print-object ((constructor constructor) stream) - (printing-random-thing (constructor stream) - (format stream - "~S ~S (~S)" - (or (class-name (class-of constructor)) "Constructor") - (or (constructor-name constructor) "Anonymous") - (constructor-code-type constructor)))) - -(defmethod describe-object ((constructor constructor) stream) - (format stream - "~S is a constructor for the class ~S.~%~ - The current code type is ~S.~%~ - Other possible code types are ~S." - constructor (constructor-class constructor) - (constructor-code-type constructor) - (gathering1 (collecting) - (doplist (key val) (constructor-code-generators constructor) - (gather1 key))))) - -;;; -;;; I am not in a hairy enough mood to make this implementation be metacircular -;;; enough that it can support a defconstructor for constructor objects. -;;; -(defun make-constructor (class name supplied-initarg-names code-generators) - (make-instance 'constructor - :class class - :name name - :supplied-initarg-names supplied-initarg-names - :code-generators code-generators)) - -; This definition actually appears in std-class.lisp. -;(defmethod class-constructors ((class std-class)) -; (with-slots (plist) class (getf plist 'constructors))) - -(defmethod add-constructor ((class std-class) - (constructor constructor)) - (with-slots (plist) class - (pushnew constructor (getf plist 'constructors)))) - -(defmethod remove-constructor ((class std-class) - (constructor constructor)) - (with-slots (plist) class - (setf (getf plist 'constructors) - (delete constructor (getf plist 'constructors))))) - -(defmethod get-constructor ((class std-class) name &optional (error-p t)) - (or (dolist (c (class-constructors class)) - (when (eq (constructor-name c) name) (return c))) - (if error-p - (error "Couldn't find a constructor with name ~S for class ~S." - name class) - ()))) - -;;; -;;; This is called to actually load a defconstructor constructor. It must -;;; install the lazy installer in the function cell of the constructor name, -;;; and also add this constructor to the list of constructors the class has. -;;; -(defmethod load-constructor-internal - ((class std-class) name initargs generators) - (let ((constructor (make-constructor class name initargs generators)) - (old (get-constructor class name nil))) - (when old (remove-constructor class old)) - (install-lazy-constructor-installer constructor) - (add-constructor class constructor) - (setf (symbol-function name) constructor))) - -(defmethod install-lazy-constructor-installer ((constructor constructor)) - (let ((class (constructor-class constructor))) - (set-constructor-code constructor - #'(lambda (&rest args) - (multiple-value-bind (code type) - (compute-constructor-code class constructor) - (prog1 (apply code args) - (set-constructor-code constructor - code - type)))) - 'lazy))) - -;;; -;;; The interface to keeping the constructors updated. -;;; -;;; add-method and remove-method (for standard-generic-function and -method), -;;; promise to call maybe-update-constructors on the generic function and -;;; the method. -;;; -;;; The class update code promises to call update-constructors whenever the -;;; class is changed. That is, whenever the supers, slots or options change. -;;; If user defined classes of constructor needs to be updated in more than -;;; these circumstances, they should use the dependent updating mechanism to -;;; make sure update-constructors is called. -;;; -;;; Bootstrapping concerns force the definitions of maybe-update-constructors -;;; and update-constructors to be in the file std-class. For clarity, they -;;; also appear below. Be sure to keep the definition here and there in sync. -;;; -;(defvar *initialization-generic-functions* -; (list #'make-instance -; #'default-initargs -; #'allocate-instance -; #'initialize-instance -; #'shared-initialize)) -; -;(defmethod maybe-update-constructors -; ((generic-function generic-function) -; (method method)) -; (when (memq generic-function *initialization-generic-functions*) -; (labels ((recurse (class) -; (update-constructors class) -; (dolist (subclass (class-direct-subclasses class)) -; (recurse subclass)))) -; (when (classp (car (method-specializers method))) -; (recurse (car (method-specializers method))))))) -; -;(defmethod update-constructors ((class std-class)) -; (dolist (cons (class-constructors class)) -; (install-lazy-constructor-installer cons))) -; -;(defmethod update-constructors ((class class)) -; ()) - - - -;;; -;;; Here is the actual smarts for making the code generators and then trying -;;; each generator to get constructor code. This extensible mechanism allows -;;; new kinds of constructor code types to be added. A programmer defining a -;;; specialization of the constructor class can either use this mechanism to -;;; define new code types, or can override this mechanism by overriding the -;;; methods on make-constructor-code-generators and compute-constructor-code. -;;; -;;; The function defined by define-constructor-code-type will receive the -;;; class object, and the 4 original arguments to defconstructor. It can -;;; return a constructor code generator, or return nil if this type of code -;;; is determined to not be appropriate after looking at the defconstructor -;;; arguments. -;;; -;;; When compute-constructor-code is called, it first performs basic checks -;;; to make sure that the basic assumptions common to all the code types are -;;; valid. (For details see method definition). If any of the tests fail, -;;; the fallback constructor code type is used. If none of the tests fail, -;;; the constructor code generators are called in order. They receive 5 -;;; arguments: -;;; -;;; CLASS the class the constructor is making instances of -;;; WRAPPER that class's wrapper -;;; DEFAULTS the result of calling class-default-initargs on class -;;; INITIALIZE the applicable methods on initialize-instance -;;; SHARED the applicable methosd on shared-initialize -;;; -;;; The first code generator to return code is used. The code generators are -;;; called in reverse order of definition, so define-constructor-code-type -;;; forms which define better code should appear after ones that define less -;;; good code. The fallback code type appears first. Note that redefining a -;;; code type does not change its position in the list. To do that, define -;;; a new type at the end with the behavior. -;;; - -(defvar *constructor-code-types* ()) - -(defmacro define-constructor-code-type (type arglist &body body) - (let ((fn-name (intern (format nil - "CONSTRUCTOR-CODE-GENERATOR ~A ~A" - (package-name (symbol-package type)) - (symbol-name type)) - *the-clos-package*))) - `(progn - (defun ,fn-name ,arglist .,body) - (load-define-constructor-code-type ',type ',fn-name)))) - -(defun load-define-constructor-code-type (type generator) - (let ((old-entry (assq type *constructor-code-types*))) - (if old-entry - (setf (cadr old-entry) generator) - (push (list type generator) *constructor-code-types*)) - type)) - -(defmethod make-constructor-code-generators - ((class std-class) - name lambda-list supplied-initarg-names supplied-initargs) - (cons 'list - (gathering1 (collecting) - (dolist (entry *constructor-code-types*) - (let ((generator - (funcall (cadr entry) class name lambda-list - supplied-initarg-names - supplied-initargs))) - (when generator - (gather1 `',(car entry)) - (gather1 generator))))))) - -(defmethod compute-constructor-code ((class std-class) - (constructor constructor)) - (let* ((proto (class-prototype class)) - (wrapper (class-wrapper class)) - (defaults (class-default-initargs class)) - (make - (compute-applicable-methods #'make-instance (list class))) - (supplied-initarg-names - (constructor-supplied-initarg-names constructor)) - (default - (compute-applicable-methods #'default-initargs - (list class supplied-initarg-names))) ;? - (allocate - (compute-applicable-methods #'allocate-instance (list class))) - (initialize - (compute-applicable-methods #'initialize-instance (list proto))) - (shared - (compute-applicable-methods #'shared-initialize (list proto t))) - (code-generators - (constructor-code-generators constructor)) - (code-generators - (constructor-code-generators constructor))) - (flet ((call-code-generator (generator) - (when (null generator) - (unless (setq generator (getf code-generators 'fallback)) - (error "No FALLBACK generator?"))) - (funcall generator class wrapper defaults initialize shared))) - (if (or (cdr make) - (cdr default) - (cdr allocate) - (check-initargs class - supplied-initarg-names - defaults - (append initialize shared))) - ;; These are basic shared assumptions, if one of the - ;; has been violated, we have to resort to the fallback - ;; case. Any of these assumptions could be moved out - ;; of here and into the individual code types if there - ;; was a need to do so. - (values (call-code-generator nil) 'fallback) - ;; Otherwise try all the generators until one produces - ;; code for us. - (doplist (type generator) code-generators - (let ((code (call-code-generator generator))) - (when code (return (values code type))))))))) - -;;; -;;; The facilities are useful for debugging, and to measure the performance -;;; boost from constructors. -;;; - -(defun map-constructors (fn) - (let ((nclasses 0) - (nconstructors 0)) - (labels ((recurse (class) - (incf nclasses) - (dolist (constructor (class-constructors class)) - (incf nconstructors) - (funcall fn constructor)) - (dolist (subclass (class-direct-subclasses class)) - (recurse subclass)))) - (recurse (find-class 't)) - (values nclasses nconstructors)))) - -(defun reset-constructors () - (multiple-value-bind (nclass ncons) - (map-constructors #'install-lazy-constructor-installer ) - (format t "~&~D classes, ~D constructors." nclass ncons))) - -(defun disable-constructors () - (multiple-value-bind (nclass ncons) - (map-constructors - #'(lambda (c) - (let ((gen (getf (constructor-code-generators c) 'fallback))) - (if (null gen) - (error "No fallback constructor for ~S." c) - (set-constructor-code c - (funcall gen - (constructor-class c) - () () () ()) - 'fallback))))) - (format t "~&~D classes, ~D constructors." nclass ncons))) - -(defun enable-constructors () - (reset-constructors)) - - -;;; -;;; Helper functions and utilities that are shared by all of the code types -;;; and by the main compute-constructor-code method as well. -;;; - -(defvar *standard-initialize-instance-method* - (get-method #'initialize-instance - () - (list *the-class-standard-object*))) - -(defvar *standard-shared-initialize-method* - (get-method #'shared-initialize - () - (list *the-class-standard-object* *the-class-t*))) - -(defun non-clos-initialize-instance-methods-p (methods) - (notevery #'(lambda (m) (eq m *standard-initialize-instance-method*)) - methods)) - -(defun non-clos-shared-initialize-methods-p (methods) - (notevery #'(lambda (m) (eq m *standard-shared-initialize-method*)) - methods)) - -(defun non-clos-or-after-initialize-instance-methods-p (methods) - (notevery #'(lambda (m) (or (eq m *standard-initialize-instance-method*) - (equal '(:after) (method-qualifiers m)))) - methods)) - -(defun non-clos-or-after-shared-initialize-methods-p (methods) - (notevery #'(lambda (m) (or (eq m *standard-shared-initialize-method*) - (equal '(:after) (method-qualifiers m)))) - methods)) - - -;;; -;;; if initargs are valid return nil, otherwise return t. -;;; -(defun check-initargs (class supplied-initarg-names defaults methods) - (let ((legal (apply #'append - (mapcar #'slotd-initargs (class-slots class))))) - ;; Add to the set of slot-filling initargs the set of - ;; initargs that are accepted by the methods. If at - ;; any point we come across &allow-other-keys, we can - ;; just quit. - (dolist (method methods) - (multiple-value-bind (keys allow-other-keys) - (function-keywords method) - (when allow-other-keys - (return-from check-initargs nil)) - (setq legal (append keys legal)))) - ;; Now check the supplied-initarg-names and the default initargs - ;; against the total set that we know are legal. - (dolist (key supplied-initarg-names) - (unless (memq key legal) - (return-from check-initargs t))) - (dolist (default defaults) - (unless (memq (car default) legal) - (return-from check-initargs t))))) - - -;;; -;;; This returns two values. The first is a vector which can be used as the -;;; initial value of the slots vector for the instance. The first is a symbol -;;; describing the initforms this class has. -;;; -;;; If the first value is: -;;; -;;; :unsupplied no slot has an initform -;;; :constants all slots have either a constant initform -;;; or no initform at all -;;; t there is at least one non-constant initform -;;; -(defun compute-constant-vector (class) - (declare (values constants flag)) - (let* ((wrapper (class-wrapper class)) - (layout (wrapper-instance-slots-layout wrapper)) - (flag :unsupplied) - (constants ())) - (dolist (slotd (class-slots class)) - (let ((name (slotd-name slotd)) - (initform (slotd-initform slotd)) - (initfn (slotd-initfunction slotd))) - (cond ((null (memq name layout))) - ((or (eq initform *slotd-unsupplied*) - (null initfn)) - (push (cons name *slot-unbound*) constants)) - ((constantp initform) - (push (cons name (eval initform)) constants) - (when (eq flag ':unsupplied) (setq flag ':constants))) - (t - (push (cons name *slot-unbound*) constants) - (setq flag 't))))) - (values - (apply #'vector - (mapcar #'cdr - (sort constants #'(lambda (x y) - (memq (car y) - (memq (car x) layout)))))) - flag))) - -(defmacro copy-constant-vector (constants) - `(copy-seq (the simple-vector ,constants))) - - -;;; -;;; This takes a class and a list of initarg-names, and returns an alist -;;; indicating the positions of the slots those initargs may fill. The -;;; order of the initarg-names argument is important of course, since we -;;; have to respect the rules about the leftmost initarg that fills a slot -;;; having precedence. This function allows initarg names to appear twice -;;; in the list, it only considers the first appearance. -;;; -(defun compute-initarg-positions (class initarg-names) - (let* ((layout (wrapper-instance-slots-layout (class-wrapper class))) - (positions - (gathering1 (collecting) - (iterate ((slot-name (list-elements layout)) - (position (interval :from 0))) - (gather1 (cons slot-name position))))) - (slot-initargs - (mapcar #'(lambda (slotd) - (list (slotd-initargs slotd) - (or (cdr (assq (slotd-name slotd) positions)) - ':class))) - (class-slots class)))) - ;; Go through each of the initargs, and figure out what position - ;; it fills by replacing the entries in slot-initargs it fills. - (dolist (initarg initarg-names) - (dolist (slot-entry slot-initargs) - (let ((slot-initargs (car slot-entry))) - (when (and (listp slot-initargs) - (not (null slot-initargs)) - (memq initarg slot-initargs)) - (setf (car slot-entry) initarg))))) - (gathering1 (collecting) - (dolist (initarg initarg-names) - (let ((positions (gathering1 (collecting) - (dolist (slot-entry slot-initargs) - (when (eq (car slot-entry) initarg) - (gather1 (cadr slot-entry))))))) - (when positions - (gather1 (cons initarg positions)))))))) - - -;;; -;;; The FALLBACK case allows anything. This always works, and always appears -;;; as the last of the generators for a constructor. It does a full call to -;;; make-instance. -;;; - -(define-constructor-code-type fallback - (class name arglist supplied-initarg-names supplied-initargs) - (declare (ignore name supplied-initarg-names)) - `(function - (lambda (&rest ignore) - (declare (ignore ignore)) - (function - (lambda ,arglist - (make-instance - ',(class-name class) - ,@(gathering1 (collecting) - (iterate ((tail (*list-tails supplied-initargs :by #'cddr))) - (gather1 `',(car tail)) - (gather1 (cadr tail)))))))))) - -;;; -;;; The GENERAL case allows: -;;; constant, unsupplied or non-constant initforms -;;; constant or non-constant default initargs -;;; supplied initargs -;;; slot-filling initargs -;;; :after methods on shared-initialize and initialize-instance -;;; -(define-constructor-code-type general - (class name arglist supplied-initarg-names supplied-initargs) - (declare (ignore name)) - (let ((raw-allocator (raw-instance-allocator class)) - (slots-fetcher (slots-fetcher class)) - (wrapper-fetcher (wrapper-fetcher class))) - `(function - (lambda (class .wrapper. defaults init shared) - (multiple-value-bind (.constants. - .constant-initargs. - .initfns-initargs-and-positions. - .supplied-initarg-positions. - .shared-initfns. - .initfns.) - (general-generator-internal class - defaults - init - shared - ',supplied-initarg-names - ',supplied-initargs) - .supplied-initarg-positions. - (when (and .constants. - (null (non-clos-or-after-initialize-instance-methods-p - init)) - (null (non-clos-or-after-shared-initialize-methods-p - shared))) - (function - (lambda ,arglist - (declare (optimize (speed 3) (safety 0))) - (let ((.instance. (,raw-allocator)) - (.slots. (copy-constant-vector .constants.)) - (.positions. .supplied-initarg-positions.) - (.initargs. .constant-initargs.)) - .positions. - - (setf (,slots-fetcher .instance.) .slots.) - (setf (,wrapper-fetcher .instance.) .wrapper.) - - (dolist (entry .initfns-initargs-and-positions.) - (let ((val (funcall (car entry))) - (initarg (cadr entry))) - (when initarg - (push val .initargs.) - (push initarg .initargs.)) - (dolist (pos (cddr entry)) - (setf (%svref .slots. pos) val)))) - - ,@(gathering1 (collecting) - (doplist (initarg value) supplied-initargs - (unless (constantp value) - (gather1 `(let ((.value. ,value)) - (push .value. .initargs.) - (push ',initarg .initargs.) - (dolist (.p. (pop .positions.)) - (setf (%svref .slots. .p.) - .value.))))))) - - (dolist (fn .shared-initfns.) - (apply fn .instance. t .initargs.)) - (dolist (fn .initfns.) - (apply fn .instance. .initargs.)) - - .instance.))))))))) - -(defun general-generator-internal - (class defaults init shared supplied-initarg-names supplied-initargs) - (flet ((bail-out () (return-from general-generator-internal nil))) - (let* ((constants (compute-constant-vector class)) - (layout (wrapper-instance-slots-layout (class-wrapper class))) - (initarg-positions - (compute-initarg-positions class - (append supplied-initarg-names - (mapcar #'car defaults)))) - (initfns-initargs-and-positions ()) - (supplied-initarg-positions ()) - (constant-initargs ()) - (used-positions ())) - - ;; - ;; Go through each of the supplied initargs for three reasons. - ;; - ;; - If it fills a class slot, bail out. - ;; - If its a constant form, fill the constant vector. - ;; - Otherwise remember the positions no two initargs - ;; will try to fill the same position, since compute - ;; initarg positions already took care of that, but - ;; we do need to know what initforms will and won't - ;; be needed. - ;; - (doplist (initarg val) supplied-initargs - (let ((positions (cdr (assq initarg initarg-positions)))) - (cond ((memq :class positions) (bail-out)) - ((constantp val) - (setq val (eval val)) - (push val constant-initargs) - (push initarg constant-initargs) - (dolist (pos positions) (setf (svref constants pos) val))) - (t - (push positions supplied-initarg-positions))) - (setq used-positions (append positions used-positions)))) - ;; - ;; Go through each of the default initargs, for three reasons. - ;; - ;; - If it fills a class slot, bail out. - ;; - If it is a constant, and it does fill a slot, put that - ;; into the constant vector. - ;; - If it isn't a constant, record its initfn and position. - ;; - (dolist (default defaults) - (let* ((name (car default)) - (initfn (cadr default)) - (form (caddr default)) - (value ()) - (positions (cdr (assq name initarg-positions)))) - (unless (memq name supplied-initarg-names) - (cond ((memq :class positions) (bail-out)) - ((constantp form) - (setq value (eval form)) - (push value constant-initargs) - (push name constant-initargs) - (dolist (pos positions) - (setf (svref constants pos) value))) - (t - (push (list* initfn name positions) - initfns-initargs-and-positions))) - (setq used-positions (append positions used-positions))))) - ;; - ;; Go through each of the slot initforms: - ;; - ;; - If its position has already been filled, do nothing. - ;; The initfn won't need to be called, and the slot won't - ;; need to be touched. - ;; - If it is a class slot, and has an initform, bail out. - ;; - If its a constant or unsupplied, ignore it, it is - ;; already in the constant vector. - ;; - Otherwise, record its initfn and position - ;; - (dolist (slotd (class-slots class)) - (let* ((alloc (slotd-allocation slotd)) - (name (slotd-name slotd)) - (form (slotd-initform slotd)) - (initfn (slotd-initfunction slotd)) - (position (position name layout))) - (cond ((neq alloc :instance) - (unless (or (eq form *slotd-unsupplied*) - (null initfn)) - (bail-out))) - ((member position used-positions)) - ((or (constantp form) - (eq form *slotd-unsupplied*))) - (t - (push (list initfn nil position) - initfns-initargs-and-positions))))) - - (values constants - constant-initargs - (nreverse initfns-initargs-and-positions) - (nreverse supplied-initarg-positions) - (mapcar #'method-function - (remove *standard-shared-initialize-method* shared)) - (mapcar #'method-function - (remove *standard-initialize-instance-method* init)))))) - - -;;; -;;; The NO-METHODS case allows: -;;; constant, unsupplied or non-constant initforms -;;; constant or non-constant default initargs -;;; supplied initargs that are arguments to constructor, or constants -;;; slot-filling initargs -;;; - -(define-constructor-code-type no-methods - (class name arglist supplied-initarg-names supplied-initargs) - (declare (ignore name)) - (let ((raw-allocator (raw-instance-allocator class)) - (slots-fetcher (slots-fetcher class)) - (wrapper-fetcher (wrapper-fetcher class))) - `(function - (lambda (class .wrapper. defaults init shared) - (multiple-value-bind (.constants. - .initfns-and-positions. - .supplied-initarg-positions.) - (no-methods-generator-internal class - defaults - ',supplied-initarg-names - ',supplied-initargs) - .initfns-and-positions. - .supplied-initarg-positions. - (when (and .constants. - (null (non-clos-initialize-instance-methods-p init)) - (null (non-clos-shared-initialize-methods-p shared))) - #'(lambda ,arglist - (declare (optimize (speed 3) (safety 0))) - (let ((.instance. (,raw-allocator)) - (.slots. (copy-constant-vector .constants.)) - (.positions. .supplied-initarg-positions.)) - .positions. - (setf (,slots-fetcher .instance.) .slots.) - (setf (,wrapper-fetcher .instance.) .wrapper.) - - (dolist (entry .initfns-and-positions.) - (let ((val (funcall (car entry)))) - (dolist (pos (cdr entry)) - (setf (%svref .slots. pos) val)))) - - ,@(gathering1 (collecting) - (doplist (initarg value) supplied-initargs - (unless (constantp value) - (gather1 - `(let ((.value. ,value)) - (dolist (.p. (pop .positions.)) - (setf (%svref .slots. .p.) .value.))))))) - - .instance.)))))))) - -(defun no-methods-generator-internal - (class defaults supplied-initarg-names supplied-initargs) - (flet ((bail-out () (return-from no-methods-generator-internal nil))) - (let* ((constants (compute-constant-vector class)) - (layout (wrapper-instance-slots-layout (class-wrapper class))) - (initarg-positions - (compute-initarg-positions class - (append supplied-initarg-names - (mapcar #'car defaults)))) - (initfns-and-positions ()) - (supplied-initarg-positions ()) - (used-positions ())) - ;; - ;; Go through each of the supplied initargs for three reasons. - ;; - ;; - If it fills a class slot, bail out. - ;; - If its a constant form, fill the constant vector. - ;; - Otherwise remember the positions, no two initargs - ;; will try to fill the same position, since compute - ;; initarg positions already took care of that, but - ;; we do need to know what initforms will and won't - ;; be needed. - ;; - (doplist (initarg val) supplied-initargs - (let ((positions (cdr (assq initarg initarg-positions)))) - (cond ((memq :class positions) (bail-out)) - ((constantp val) - (setq val (eval val)) - (dolist (pos positions) - (setf (svref constants pos) val))) - (t - (push positions supplied-initarg-positions))) - (setq used-positions (append positions used-positions)))) - ;; - ;; Go through each of the default initargs, for three reasons. - ;; - ;; - If it fills a class slot, bail out. - ;; - If it is a constant, and it does fill a slot, put that - ;; into the constant vector. - ;; - If it isn't a constant, record its initfn and position. - ;; - (dolist (default defaults) - (let* ((name (car default)) - (initfn (cadr default)) - (form (caddr default)) - (value ()) - (positions (cdr (assq name initarg-positions)))) - (unless (memq name supplied-initarg-names) - (cond ((memq :class positions) (bail-out)) - ((constantp form) - (setq value (eval form)) - (dolist (pos positions) - (setf (svref constants pos) value))) - (t - (push (cons initfn positions) - initfns-and-positions))) - (setq used-positions (append positions used-positions))))) - ;; - ;; Go through each of the slot initforms: - ;; - ;; - If its position has already been filled, do nothing. - ;; The initfn won't need to be called, and the slot won't - ;; need to be touched. - ;; - If it is a class slot, and has an initform, bail out. - ;; - If its a constant or unsupplied, do nothing, we know - ;; that it is already in the constant vector. - ;; - Otherwise, record its initfn and position - ;; - (dolist (slotd (class-slots class)) - (let* ((alloc (slotd-allocation slotd)) - (name (slotd-name slotd)) - (form (slotd-initform slotd)) - (initfn (slotd-initfunction slotd)) - (position (position name layout))) - (cond ((neq alloc :instance) - (unless (or (eq form *slotd-unsupplied*) - (null initfn)) - (bail-out))) - ((member position used-positions)) - ((or (constantp form) - (eq form *slotd-unsupplied*))) - (t - (push (list initfn position) initfns-and-positions))))) - - (values constants - (nreverse initfns-and-positions) - (nreverse supplied-initarg-positions))))) - - -;;; -;;; The SIMPLE-SLOTS case allows: -;;; constant or unsupplied initforms -;;; constant default initargs -;;; supplied initargs -;;; slot filling initargs -;;; - -(define-constructor-code-type simple-slots - (class name arglist supplied-initarg-names supplied-initargs) - (declare (ignore name)) - (let ((raw-allocator (raw-instance-allocator class)) - (slots-fetcher (slots-fetcher class)) - (wrapper-fetcher (wrapper-fetcher class))) - `(function - (lambda (class .wrapper. defaults init shared) - (when (and (null (non-clos-initialize-instance-methods-p init)) - (null (non-clos-shared-initialize-methods-p shared))) - (multiple-value-bind (.constants. .supplied-initarg-positions.) - (simple-slots-generator-internal class - defaults - ',supplied-initarg-names - ',supplied-initargs) - (when .constants. - (function - (lambda ,arglist - (declare (optimize (speed 3) (safety 0))) - (let ((.instance. (,raw-allocator)) - (.slots. (copy-constant-vector .constants.)) - (.positions. .supplied-initarg-positions.)) - - .positions. - (setf (,slots-fetcher .instance.) .slots.) - (setf (,wrapper-fetcher .instance.) .wrapper.) - - ,@(gathering1 (collecting) - (doplist (initarg value) supplied-initargs - (unless (constantp value) - (gather1 - `(let ((.value. ,value)) - (dolist (.p. (pop .positions.)) - (setf (%svref .slots. .p.) .value.))))))) - - .instance.)))))))))) - -(defun simple-slots-generator-internal - (class defaults supplied-initarg-names supplied-initargs) - (flet ((bail-out () (return-from simple-slots-generator-internal nil))) - (let* ((constants (compute-constant-vector class)) - (layout (wrapper-instance-slots-layout (class-wrapper class))) - (initarg-positions - (compute-initarg-positions class - (append supplied-initarg-names - (mapcar #'car defaults)))) - (supplied-initarg-positions ()) - (used-positions ())) - ;; - ;; Go through each of the supplied initargs for three reasons. - ;; - ;; - If it fills a class slot, bail out. - ;; - If its a constant form, fill the constant vector. - ;; - Otherwise remember the positions, no two initargs - ;; will try to fill the same position, since compute - ;; initarg positions already took care of that, but - ;; we do need to know what initforms will and won't - ;; be needed. - ;; - (doplist (initarg val) supplied-initargs - (let ((positions (cdr (assq initarg initarg-positions)))) - (cond ((memq :class positions) (bail-out)) - ((constantp val) - (setq val (eval val)) - (dolist (pos positions) - (setf (svref constants pos) val))) - (t - (push positions supplied-initarg-positions))) - (setq used-positions (append used-positions positions)))) - ;; - ;; Go through each of the default initargs for three reasons. - ;; - ;; - If it isn't a constant form, bail out. - ;; - If it fills a class slot, bail out. - ;; - If it is a constant, and it does fill a slot, put that - ;; into the constant vector. - ;; - (dolist (default defaults) - (let* ((name (car default)) - (form (caddr default)) - (value ()) - (positions (cdr (assq name initarg-positions)))) - (unless (memq name supplied-initarg-names) - (cond ((memq :class positions) (bail-out)) - ((not (constantp form)) - (bail-out)) - (t - (setq value (eval form)) - (dolist (pos positions) - (setf (svref constants pos) value))))))) - ;; - ;; Go through each of the slot initforms: - ;; - ;; - If its position has already been filled, do nothing. - ;; The initfn won't need to be called, and the slot won't - ;; need to be touched, we are OK. - ;; - If it has a non-constant initform, bail-out. This - ;; case doesn't handle those. - ;; - If it has a constant or unsupplied initform we don't - ;; really need to do anything, the value is in the - ;; constants vector. - ;; - (dolist (slotd (class-slots class)) - (let* ((alloc (slotd-allocation slotd)) - (name (slotd-name slotd)) - (form (slotd-initform slotd)) - (initfn (slotd-initfunction slotd)) - (position (position name layout))) - (cond ((neq alloc :instance) - (unless (or (eq form *slotd-unsupplied*) - (null initfn)) - (bail-out))) - ((member position used-positions)) - ((or (constantp form) - (eq form *slotd-unsupplied*))) - (t - (bail-out))))) - - (values constants (nreverse supplied-initarg-positions))))) diff --git a/obsolete/clos/2.0/cpl.lisp b/obsolete/clos/2.0/cpl.lisp deleted file mode 100644 index 9eda3018..00000000 --- a/obsolete/clos/2.0/cpl.lisp +++ /dev/null @@ -1,271 +0,0 @@ -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- -;;;. Copyright (c) 1991 by Venue - - -(in-package "CLOS") - - -;;; compute-class-precedence-list Knuth section 2.2.3 has some interesting notes on this. What -;;; appears here is basically the algorithm presented there. The key idea is that we use -;;; class-precedence-description (CPD) structures to store the precedence information as we proceed. -;;; The CPD structure for a class stores two critical pieces of information: - a count of the number -;;; of "reasons" why the class can't go into the class precedence list yet. - a list of the -;;; "reasons" this class prevents others from going in until after it - - - -;; - - - -;;; A "reason" is essentially a single local precedence constraint. If a constraint between two -;;; classes arises more than once it generates more than one reason. This makes things simpler, -;;; linear, and isn't a problem as long as we make sure to keep track of each instance of a -;;; "reason". This code is divided into three phases. - the first phase simply generates the CPD's -;;; for each of the class and its superclasses. The remainder of the code will manipulate these -;;; CPDs rather than the class objects themselves. At the end of this pass, the CPD-SUPERS field of -;;; a CPD is a list of the CPDs of the direct superclasses of the class. - the second phase folds -;;; all the local constraints into the CPD structure. The CPD-COUNT of each CPD is built up, and -;;; the CPD-AFTER fields are augmented to include precedence constraints from the CPD-SUPERS field -;;; and from the order of classes in other CPD-SUPERS fields. After this phase, the CPD-AFTER field -;;; of a class includes all the direct superclasses of the class plus any class that immediately -;;; follows the class in the direct superclasses of another. There can be duplicates in this list. -;;; The CPD-COUNT field is equal to the number of times this class appears in the CPD-AFTER field of -;;; all the other CPDs. - In the third phase, classes are put into the precedence list one at a -;;; time, with only those classes with a CPD-COUNT of 0 being candidates for insertion. When a -;;; class is inserted , every CPD in its CPD-AFTER field has its count decremented. In the usual -;;; case, there is only one candidate for insertion at any point. If there is more than one, the -;;; specified tiebreaker rule is used to choose among them. - - -(defmethod compute-class-precedence-list ((root std-class) - direct-superclasses) - (compute-std-cpl root direct-superclasses)) - -(defstruct (class-precedence-description (:conc-name nil) - (:print-function (lambda (obj str depth) - (declare (ignore depth)) - (format str "#" (class-name (cpd-class obj)) - (cpd-count obj)))) - (:constructor make-cpd nil)) - (cpd-class nil) - (cpd-supers nil) - (cpd-after nil) - (cpd-count 0)) - -(defun compute-std-cpl (class supers) - (cond ((null supers) - ; First two branches of COND - (list class)) - ; are implementing the single - ((null (cdr supers)) - ; inheritance optimization. - (cons class (compute-std-cpl (car supers) - (class-direct-superclasses (car supers))))) - (t (multiple-value-bind (all-cpds nclasses) - (compute-std-cpl-phase-1 class supers) - (compute-std-cpl-phase-2 all-cpds) - (compute-std-cpl-phase-3 class all-cpds nclasses))))) - -(defvar *compute-std-cpl-class->entry-table-size* 60) - -(defun compute-std-cpl-phase-1 (class supers) - (let ((nclasses 0) - (all-cpds nil) - (table (make-hash-table :size *compute-std-cpl-class->entry-table-size* :test - #'eq))) - (labels ((get-cpd (c) - (or (gethash c table) - (setf (gethash c table) - (make-cpd)))) - (walk (c supers) - (if (forward-referenced-class-p c) - (cpl-forward-referenced-class-error class c) - (let ((cpd (get-cpd c))) - (unless (cpd-class cpd) - ; If we have already done this class - ; before, we can quit. - (setf (cpd-class cpd) - c) - (incf nclasses) - (push cpd all-cpds) - (setf (cpd-supers cpd) - (mapcar #'get-cpd supers)) - (dolist (super supers) - (walk super (class-direct-superclasses super)))))))) - (walk class supers) - (values all-cpds nclasses)))) - -(defun compute-std-cpl-phase-2 (all-cpds) - (dolist (cpd all-cpds) - (let ((supers (cpd-supers cpd))) - (when supers - (setf (cpd-after cpd) - (nconc (cpd-after cpd) - supers)) - (incf (cpd-count (car supers)) - 1) - (do* ((t1 supers t2) - (t2 (cdr t1) - (cdr t1))) - ((null t2)) - (incf (cpd-count (car t2)) - 2) - (push (car t2) - (cpd-after (car t1)))))))) - -(defun - compute-std-cpl-phase-3 - (class all-cpds nclasses) - (let ((candidates nil) - (next-cpd nil) - (rcpl nil)) - - ;; We have to bootstrap the collection of those CPD's that have a zero count. Once we get - ;; going, we will maintain this list incrementally. - (dolist (cpd all-cpds) - (when (zerop (cpd-count cpd)) - (push cpd candidates))) - (loop (when (null candidates) - - ;; If there are no candidates, and enough classes have been put into the precedence - ;; list, then we are all done. Otherwise it means there is a consistency problem. - (if (zerop nclasses) - (return (reverse rcpl)) - (cpl-inconsistent-error class all-cpds))) - - ;; Try to find the next class to put in from among the candidates. If there is only one, - ;; its easy, otherwise we have to use the famous RPG tiebreaker rule. There is some - ;; hair here to avoid having to call DELETE on the list of candidates. I dunno if its - ;; worth it but what the hell. - (setq next-cpd - (if (null (cdr candidates)) - (prog1 (car candidates) - (setq candidates nil)) - (block tie-breaker - (dolist (c rcpl) - (let ((supers (class-direct-superclasses c))) - (if (memq (cpd-class (car candidates)) - supers) - (return-from tie-breaker (pop candidates)) - (do ((loc candidates (cdr loc))) - ((null (cdr loc))) - (let ((cpd (cadr loc))) - (when (memq (cpd-class cpd) - supers) - (setf (cdr loc) - (cddr loc)) - (return-from tie-breaker cpd)))))))))) - (decf nclasses) - (push (cpd-class next-cpd) - rcpl) - (dolist (after (cpd-after next-cpd)) - (when (zerop (decf (cpd-count after))) - (push after candidates)))))) - - -;;; Support code for signalling nice error messages. - - -(defun cpl-error (class format-string &rest format-args) - (error "While computing the class precedence list of the class ~A.~%~A" - (if (class-name class) - (format nil "named ~S" (class-name class)) - class) - (apply #'format nil format-string format-args))) - -(defun cpl-forward-referenced-class-error (class forward-class) - (flet ((class-or-name (class) - (if (class-name class) - (format nil "named ~S" (class-name class)) - class))) - (let ((names (mapcar #'class-or-name (cdr (find-superclass-chain class forward-class)))) - ) - (cpl-error class - "The class ~A is a forward referenced class.~@ - The class ~A is ~A." (class-or-name forward-class) - (class-or-name forward-class) - (if (null (cdr names)) - (format nil "a direct superclass of the class ~A" (class-or-name class)) - (format nil "reached from the class ~A by following~@ - the direct superclass chain through: ~A~ - ~% ending at the class ~A" (class-or-name class) - (format nil "~{~% the class ~A,~}" (butlast names)) - (car (last names)))))))) - -(defun find-superclass-chain (bottom top) - (labels ((walk (c chain) - (if (eq c top) - (return-from find-superclass-chain (nreverse chain)) - (dolist (super (class-direct-superclasses c)) - (walk super (cons super chain)))))) - (walk bottom (list bottom)))) - -(defun cpl-inconsistent-error (class all-cpds) - (let ((reasons (find-cycle-reasons all-cpds))) - (cpl-error class "It is not possible to compute the class precedence list because~@ - there ~A in the local precedence relations.~@ - ~A because:~{~% ~A~}." (if (cdr reasons) - "are circularities" - "is a circularity") - (if (cdr reasons) - "These arise" - "This arises") - (format-cycle-reasons (apply #'append reasons))))) - -(defun format-cycle-reasons (reasons) - (flet ((class-or-name (cpd) - (let ((class (cpd-class cpd))) - (if (class-name class) - (format nil "named ~S" (class-name class)) - class)))) - (mapcar #'(lambda (reason) - (ecase (caddr reason) - (:super (format nil - "the class ~A appears in the supers of the class ~A" - (class-or-name (cadr reason)) - (class-or-name (car reason)))) - (:in-supers (format nil - "the class ~A follows the class ~A in the supers of the class ~A" - (class-or-name (cadr reason)) - (class-or-name (car reason)) - (class-or-name (cadddr reason)))))) - reasons))) - -(defun find-cycle-reasons (all-cpds) - (let ((been-here nil) - ; List of classes we have visited. - (cycle-reasons nil)) - (labels ((chase (path) - (if (memq (car path) - (cdr path)) - (record-cycle (memq (car path) - (nreverse path))) - (unless (memq (car path) - been-here) - (push (car path) - been-here) - (dolist (after (cpd-after (car path))) - (chase (cons after path)))))) - (record-cycle - (cycle) - (let ((reasons nil)) - (do* ((t1 cycle t2) - (t2 (cdr t1) - (cdr t1))) - ((null t2)) - (let ((c1 (car t1)) - (c2 (car t2))) - (if (memq c2 (cpd-supers c1)) - (push (list c1 c2 :super) - reasons) - (dolist (cpd all-cpds) - (when (memq c2 (memq c1 (cpd-supers cpd))) - (return (push (list c1 c2 :in-supers cpd) - reasons))))))) - (push (nreverse reasons) - cycle-reasons)))) - (dolist (cpd all-cpds) - (unless (zerop (cpd-count cpd)) - (chase (list cpd)))) - cycle-reasons))) diff --git a/obsolete/clos/2.0/ctypes.lisp b/obsolete/clos/2.0/ctypes.lisp deleted file mode 100644 index 1de6d3a4..00000000 --- a/obsolete/clos/2.0/ctypes.lisp +++ /dev/null @@ -1,25 +0,0 @@ -;;;-*-Mode:LISP; Package: PCL; Base:10; Syntax:Common-lisp -*- -;;; -;;; ************************************************************************* -;;; Copyright (c) 1991 Venue -;;; All rights reserved. -;;; ************************************************************************* -;;; - -(in-package 'clos) - -;;; -;;; The built-in method combination types as taken from page 1-31 of 88-002R. -;;; Note that the STANDARD method combination type is defined by hand in the -;;; file combin.lisp. -;;; - -(define-method-combination + :identity-with-one-argument t) -(define-method-combination and :identity-with-one-argument t) -(define-method-combination append :identity-with-one-argument nil) -(define-method-combination list :identity-with-one-argument nil) -(define-method-combination max :identity-with-one-argument t) -(define-method-combination min :identity-with-one-argument t) -(define-method-combination nconc :identity-with-one-argument t) -(define-method-combination or :identity-with-one-argument t) -(define-method-combination progn :identity-with-one-argument t) diff --git a/obsolete/clos/2.0/defclass.lisp b/obsolete/clos/2.0/defclass.lisp deleted file mode 100644 index 4aaf9791..00000000 --- a/obsolete/clos/2.0/defclass.lisp +++ /dev/null @@ -1,230 +0,0 @@ -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- - -;;;. Copyright (c) 1991 by Venue -(in-package "CLOS") - -;;; ************************************************************************* - - - -;;; MAKE-TOP-LEVEL-FORM is used by all PCL macros that appear `at top-level'. The original -;;; motiviation for this function was to deal with the bug in the Genera compiler that prevents -;;; lambda expressions in top-level forms other than DEFUN from being compiled. Now this function is -;;; used to grab other functionality as well. This includes: - Preventing the grouping of top-level -;;; forms. For example, a DEFCLASS followed by a DEFMETHOD may not want to be grouped into the same -;;; top-level form. - Telling the programming environment what the pretty version of the name of -;;; this form is. This is used by WARN. - - -(defun make-top-level-form (name times form) - (flet ((definition-name nil (if (and (listp name) - (memq (car name) - '(defmethod defclass class method - method-combination))) - (format nil "~A~{ ~S~}" (capitalize-words (car name) - nil) - (cdr name)) - (format nil "~S" name)))) - (definition-name) - (make-progn `',name `(eval-when ,times ,form)))) - -(defun make-progn (&rest forms) - (let ((progn-form nil)) - (labels ((collect-forms (forms) - (unless (null forms) - (collect-forms (cdr forms)) - (if (and (listp (car forms)) - (eq (caar forms) - 'progn)) - (collect-forms (cdar forms)) - (push (car forms) - progn-form))))) - (collect-forms forms) - (cons 'progn progn-form)))) - - -;;; Like the DEFMETHOD macro, the expansion of the DEFCLASS macro is fixed. DEFCLASS always expands -;;; into a call to LOAD-DEFCLASS. Until the meta- braid is set up, LOAD-DEFCLASS has a special -;;; definition which simply collects all class definitions up, when the metabraid is initialized it -;;; is done from those class definitions. After the metabraid has been setup, and the protocol for -;;; defining classes has been defined, the real definition of LOAD-DEFCLASS is installed by the file -;;; defclass.lisp - - -(defmacro defclass (name direct-superclasses direct-slots &rest options) - (declare (indentation 2 4 3 1)) - (expand-defclass name direct-superclasses direct-slots options)) - -(defun expand-defclass (name supers slots options) - (setq supers (copy-tree supers) - slots - (copy-tree slots) - options - (copy-tree options)) - (let ((metaclass 'standard-class)) - (dolist (option options) - (if (not (listp option)) - (error "~S is not a legal defclass option." option) - (when (eq (car option) - ':metaclass) - (unless (legal-class-name-p (cadr option)) - (error - "The value of the :metaclass option (~S) is not a~%~ - legal class name." (cadr option))) - (setq metaclass (cadr option)) - (setf options (remove option options)) - (return t)))) - (let ((*initfunctions* nil) - (*accessors* nil)) - ; Truly a crock, but we got to have it - ; to live nicely. - (declare (special *initfunctions* *accessors*)) - (let ((canonical-slots (mapcar #'(lambda (spec) - (canonicalize-slot-specification name spec)) - slots)) - (other-initargs (mapcar #'(lambda (option) - (canonicalize-defclass-option name option)) - options))) - (do-standard-defsetfs-for-defclass *accessors*) -; (load-defclass name metaclass supers -; canonical-slots (apply #'append -; other-initargs) *accessors*))))) - (make-top-level-form `(defclass ,name nil nil) - *defclass-times* - `(let ,(mapcar #'cdr *initfunctions*) - (load-defclass ',name ',metaclass ',supers (list - ,@canonical-slots - ) - (list ,@(apply #'append other-initargs)) - ',*accessors*))))))) - -(defun make-initfunction (initform) - (declare (special *initfunctions*)) - (cond ((or (eq initform 't) - (equal initform ''t)) - '#'true) - ((or (eq initform 'nil) - (equal initform ''nil)) - '#'false) - ((or (eql initform '0) - (equal initform ''0)) - '#'zero) - (t (let ((entry (assoc initform *initfunctions* :test #'equal))) - (unless entry - (setq entry (list initform (gensym) - `#'(lambda nil ,initform))) - (push entry *initfunctions*)) - (cadr entry))))) - -(defun canonicalize-slot-specification (class-name spec) - (declare (special *accessors*)) - (cond ((and (symbolp spec) - (not (keywordp spec)) - (not (memq spec '(t nil)))) - `'(:name ,spec)) - ((not (consp spec)) - (error "~S is not a legal slot specification." spec)) - ((null (cdr spec)) - `'(:name ,(car spec))) - ((null (cddr spec)) - (error - "In DEFCLASS ~S, the slot specification ~S is obsolete.~%~ - Convert it to ~S" class-name spec (list (car spec) - :initform - (cadr spec)))) - (t (let* ((name (pop spec)) - (readers nil) - (writers nil) - (initargs nil) - (unsupplied (list nil)) - (initform (getf spec :initform unsupplied))) - (doplist (key val) - spec - (case key - (:accessor - (push val *accessors*) - (push val readers) - (push `(setf ,val) - writers)) - (:reader (push val readers)) - (:writer (push val writers)) - (:initarg (push val initargs)))) - (loop (unless (remf spec :accessor) - (return))) - (loop (unless (remf spec :reader) - (return))) - (loop (unless (remf spec :writer) - (return))) - (loop (unless (remf spec :initarg) - (return))) - (setq spec `(:name ',name :readers ',readers - :writers ',writers :initargs - ',initargs - ',spec)) - (if (eq initform unsupplied) - `(list* ,@spec) - `(list* :initfunction ,(make-initfunction initform) - ,@spec)))))) - -(defun canonicalize-defclass-option (class-name option) - (declare (ignore class-name)) - (case (car option) - (:default-initargs (let ((canonical nil)) - (let (key val (tail (cdr option))) - (loop (when (null tail) - (return nil)) - (setq key (pop tail) - val - (pop tail)) - (push ``(,',key ,,(make-initfunction val) - ,',val) - canonical)) - `(':direct-default-initargs (list ,@(nreverse canonical)))))) - (otherwise `(',(car option) - ',(cdr option))))) - - -;;; This is the early definition of load-defclass. It just collects up all the class definitions in -;;; a list. Later, in the file braid1.lisp, these are actually defined. Each entry in -;;; *early-class-definitions* is an early-class-definition. - - -(defparameter *early-class-definitions* nil) - -(defun make-early-class-definition (name source metaclass superclass-names canonical-slots - other-initargs) - (list 'early-class-definition name source metaclass superclass-names canonical-slots - other-initargs)) - -(defun ecd-class-name (ecd) - (nth 1 ecd)) - -(defun ecd-source (ecd) - (nth 2 ecd)) - -(defun ecd-metaclass (ecd) - (nth 3 ecd)) - -(defun ecd-superclass-names (ecd) - (nth 4 ecd)) - -(defun ecd-canonical-slots (ecd) - (nth 5 ecd)) - -(defun ecd-other-initargs (ecd) - (nth 6 ecd)) - -(proclaim '(notinline load-defclass)) - -(defun load-defclass (name metaclass supers canonical-slots canonical-options accessor-names) - (setq supers (copy-tree supers) - canonical-slots - (copy-tree canonical-slots) - canonical-options - (copy-tree canonical-options)) - (do-standard-defsetfs-for-defclass accessor-names) - (let ((ecd (make-early-class-definition name (load-truename) - metaclass supers canonical-slots (apply #'append canonical-options))) - (existing (find name *early-class-definitions* :key #'ecd-class-name))) - (setq *early-class-definitions* (cons ecd (remove existing *early-class-definitions*))) - ecd)) diff --git a/obsolete/clos/2.0/defcombin.lisp b/obsolete/clos/2.0/defcombin.lisp deleted file mode 100644 index 5bb69ebd..00000000 --- a/obsolete/clos/2.0/defcombin.lisp +++ /dev/null @@ -1,410 +0,0 @@ -;;;-*-Mode:LISP; Package: CLOS; Base:10; Syntax:Common-lisp -*- -;;; -;;; ************************************************************************* -;;; Copyright (c) 1991 Venue -;;; All rights reserved. -;;; ************************************************************************* -;;; - -(in-package 'clos) - -;;; -;;; DEFINE-METHOD-COMBINATION -;;; - -(defmacro define-method-combination (&whole form &rest args) - (declare (ignore args)) - (if (and (cddr form) - (listp (caddr form))) - (expand-long-defcombin form) - (expand-short-defcombin form))) - - -;;; -;;; STANDARD method combination -;;; -;;; The STANDARD method combination type is implemented directly by the class -;;; STANDARD-METHOD-COMBINATION. The method on COMPUTE-EFFECTIVE-METHOD does -;;; standard method combination directly and is defined by hand in the file -;;; combin.lisp. The method for FIND-METHOD-COMBINATION must appear in this -;;; file for bootstrapping reasons. -;;; -;;; A commented out copy of this definition appears in combin.lisp. -;;; If you change this definition here, be sure to change it there -;;; also. -;;; -(defmethod find-method-combination ((generic-function generic-function) - (type (eql 'standard)) - options) - (when options - (method-combination-error - "The method combination type STANDARD accepts no options.")) - *standard-method-combination*) - - - -;;; -;;; short method combinations -;;; -;;; Short method combinations all follow the same rule for computing the -;;; effective method. So, we just implement that rule once. Each short -;;; method combination object just reads the parameters out of the object -;;; and runs the same rule. -;;; -;;; -(defclass short-method-combination (standard-method-combination) - ((operator - :reader short-combination-operator - :initarg :operator) - (identity-with-one-argument - :reader short-combination-identity-with-one-argument - :initarg :identity-with-one-argument))) - -(define-gf-predicate short-method-combination-p short-method-combination) - -(defun expand-short-defcombin (whole) - (let* ((type (cadr whole)) - (documentation - (getf (cddr whole) :documentation "")) - (identity-with-one-arg - (getf (cddr whole) :identity-with-one-argument nil)) - (operator - (getf (cddr whole) :operator type))) - (make-top-level-form `(define-method-combination ,type) - '(load eval) - `(load-short-defcombin - ',type ',operator ',identity-with-one-arg ',documentation)))) - -(defun load-short-defcombin (type operator ioa doc) - (let* ((truename (load-truename)) - (specializers - (list (find-class 'generic-function) - (make-instance 'eql-specializer :object type) - *the-class-t*)) - (old-method - (get-method #'find-method-combination () specializers nil)) - (new-method nil)) - (setq new-method - (make-instance 'standard-method - :qualifiers () - :specializers specializers - :lambda-list '(generic-function type options) - :function #'(lambda (gf type options) - (declare (ignore gf)) - (do-short-method-combination - type options operator ioa new-method doc)) - :definition-source `((define-method-combination ,type) ,truename))) - (when old-method - (remove-method #'find-method-combination old-method)) - (add-method #'find-method-combination new-method))) - -(defun do-short-method-combination (type options operator ioa method doc) - (cond ((null options) (setq options '(:most-specific-first))) - ((equal options '(:most-specific-first))) - ((equal options '(:most-specific-last))) - (t - (method-combination-error - "Illegal options to a short method combination type.~%~ - The method combination type ~S accepts one option which~%~ - must be either :MOST-SPECIFIC-FIRST or :MOST-SPECIFIC-LAST." - type))) - (make-instance 'short-method-combination - :type type - :options options - :operator operator - :identity-with-one-argument ioa - :definition-source method - :documentation doc)) - -(defmethod compute-effective-method ((generic-function generic-function) - (combin short-method-combination) - applicable-methods) - (let ((type (method-combination-type combin)) - (operator (short-combination-operator combin)) - (ioa (short-combination-identity-with-one-argument combin)) - (around ()) - (primary ())) - (dolist (m applicable-methods) - (let ((qualifiers (method-qualifiers m))) - (flet ((lose (method why) - (invalid-method-error - method - "The method ~S ~A.~%~ - The method combination type ~S was defined with the~%~ - short form of DEFINE-METHOD-COMBINATION and so requires~%~ - all methods have either the single qualifier ~S or the~%~ - single qualifier :AROUND." - method why type type))) - (cond ((null qualifiers) - (lose m "has no qualifiers")) - ((cdr qualifiers) - (lose m "has more than one qualifier")) - ((eq (car qualifiers) :around) - (push m around)) - ((eq (car qualifiers) type) - (push m primary)) - (t - (lose m "has an illegal qualifier")))))) - (setq around (nreverse around) - primary (nreverse primary)) - (let ((main-method - (if (and (null (cdr primary)) - (not (null ioa))) - `(call-method ,(car primary) ()) - `(,operator ,@(mapcar #'(lambda (m) `(call-method ,m ())) - primary))))) - (cond ((null primary) - `(error "No ~S methods for the generic function ~S." - ',type ',generic-function)) - ((null around) main-method) - (t - `(call-method ,(car around) - (,@(cdr around) (make-method ,main-method)))))))) - - -;;; -;;; long method combinations -;;; -;;; - -(defclass long-method-combination (standard-method-combination) - ((function :initarg :function - :reader long-method-combination-function))) - -(defun expand-long-defcombin (form) - (let ((type (cadr form)) - (lambda-list (caddr form)) - (method-group-specifiers (cadddr form)) - (body (cddddr form)) - (arguments-option ()) - (gf-var nil)) - (when (and (consp (car body)) (eq (caar body) :arguments)) - (setq arguments-option (cdr (pop body)))) - (when (and (consp (car body)) (eq (caar body) :generic-function)) - (setq gf-var (cadr (pop body)))) - (multiple-value-bind (documentation function) - (make-long-method-combination-function - type lambda-list method-group-specifiers arguments-option gf-var - body) - (make-top-level-form `(define-method-combination ,type) - '(load eval) - `(load-long-defcombin ',type ',documentation #',function))))) - -(defvar *long-method-combination-functions* (make-hash-table :test #'eq)) - -(defun load-long-defcombin (type doc function) - (let* ((specializers - (list (find-class 'generic-function) - (make-instance 'eql-specializer :object type) - *the-class-t*)) - (old-method - (get-method #'find-method-combination () specializers nil)) - (new-method - (make-instance 'standard-method - :qualifiers () - :specializers specializers - :lambda-list '(generic-function type options) - :function #'(lambda (generic-function type options) - (declare (ignore generic-function)) - (make-instance 'long-method-combination - :type type - :documentation doc - :options options)) - :definition-source `((define-method-combination ,type) - ,(load-truename))))) - (setf (gethash type *long-method-combination-functions*) function) - (when old-method (remove-method #'find-method-combination old-method)) - (add-method #'find-method-combination new-method))) - -(defmethod compute-effective-method ((generic-function generic-function) - (combin long-method-combination) - applicable-methods) - (funcall (gethash (method-combination-type combin) - *long-method-combination-functions*) - generic-function - combin - applicable-methods)) - -;;; -;;; -;;; -(defun make-long-method-combination-function - (type ll method-group-specifiers arguments-option gf-var body) - (declare (ignore type) (values documentation function)) - (multiple-value-bind (documentation declarations real-body) - (extract-declarations body) - - (let ((wrapped-body - (wrap-method-group-specifier-bindings method-group-specifiers - declarations - real-body))) - (when gf-var - (push `(,gf-var .generic-function.) (cadr wrapped-body))) - - (when arguments-option - (setq wrapped-body (deal-with-arguments-option wrapped-body - arguments-option))) - - (when ll - (setq wrapped-body - `(apply #'(lambda ,ll ,wrapped-body) - (method-combination-options .method-combination.)))) - - (values - documentation - `(lambda (.generic-function. .method-combination. .applicable-methods.) - (progn .generic-function. .method-combination. .applicable-methods.) - (block .long-method-combination-function. ,wrapped-body)))))) -;; -;; parse-method-group-specifiers parse the method-group-specifiers -;; - -(defun wrap-method-group-specifier-bindings - (method-group-specifiers declarations real-body) - (with-gathering ((names (collecting)) - (specializer-caches (collecting)) - (cond-clauses (collecting)) - (required-checks (collecting)) - (order-cleanups (collecting))) - (dolist (method-group-specifier method-group-specifiers) - (multiple-value-bind (name tests description order required) - (parse-method-group-specifier method-group-specifier) - (declare (ignore description)) - (let ((specializer-cache (gensym))) - (gather name names) - (gather specializer-cache specializer-caches) - (gather `((or ,@tests) - (if (equal ,specializer-cache .specializers.) - (return-from .long-method-combination-function. - '(error "More than one method of type ~S ~ - with the same specializers." - ',name)) - (setq ,specializer-cache .specializers.)) - (push .method. ,name)) - cond-clauses) - (when required - (gather `(when (null ,name) - (return-from .long-method-combination-function. - '(error "No ~S methods." ',name))) - required-checks)) - (loop (unless (and (constantp order) - (neq order (setq order (eval order)))) - (return t))) - (gather (cond ((eq order :most-specific-first) - `(setq ,name (nreverse ,name))) - ((eq order :most-specific-last) ()) - (t - `(ecase ,order - (:most-specific-first - (setq ,name (nreverse ,name))) - (:most-specific-last)))) - order-cleanups)))) - `(let (,@names ,@specializer-caches) - ,@declarations - (dolist (.method. .applicable-methods.) - (let ((.qualifiers. (method-qualifiers .method.)) - (.specializers. (method-specializers .method.))) - (progn .qualifiers. .specializers.) - (cond ,@cond-clauses))) - ,@required-checks - ,@order-cleanups - ,@real-body))) - -(defun parse-method-group-specifier (method-group-specifier) - (declare (values name tests description order required)) - (let* ((name (pop method-group-specifier)) - (patterns ()) - (tests - (gathering1 (collecting) - (block collect-tests - (loop - (if (or (null method-group-specifier) - (memq (car method-group-specifier) - '(:description :order :required))) - (return-from collect-tests t) - (let ((pattern (pop method-group-specifier))) - (push pattern patterns) - (gather1 (parse-qualifier-pattern name pattern))))))))) - (values name - tests - (getf method-group-specifier :description - (make-default-method-group-description patterns)) - (getf method-group-specifier :order :most-specific-first) - (getf method-group-specifier :required nil)))) - -(defun parse-qualifier-pattern (name pattern) - (cond ((eq pattern '()) `(null .qualifiers.)) - ((eq pattern '*) 't) - ((symbolp pattern) `(,pattern .qualifiers.)) - ((listp pattern) `(qualifier-check-runtime ',pattern .qualifiers.)) - (t (error "In the method group specifier ~S,~%~ - ~S isn't a valid qualifier pattern." - name pattern)))) - -(defun qualifier-check-runtime (pattern qualifiers) - (loop (cond ((and (null pattern) (null qualifiers)) - (return t)) - ((eq pattern '*) (return t)) - ((and pattern qualifiers (eq (car pattern) (car qualifiers))) - (pop pattern) - (pop qualifiers)) - (t (return nil))))) - -(defun make-default-method-group-description (patterns) - (if (cdr patterns) - (format nil - "methods matching one of the patterns: ~{~S, ~} ~S" - (butlast patterns) (car (last patterns))) - (format nil - "methods matching the pattern: ~S" - (car patterns)))) - - - -;;; -;;; This baby is a complete mess. I can't believe we put it in this -;;; way. No doubt this is a large part of what drives MLY crazy. -;;; -;;; At runtime (when the effective-method is run), we bind an intercept -;;; lambda-list to the arguments to the generic function. -;;; -;;; At compute-effective-method time, the symbols in the :arguments -;;; option are bound to the symbols in the intercept lambda list. -;;; -(defun deal-with-arguments-option (wrapped-body arguments-option) - (let* ((intercept-lambda-list - (gathering1 (collecting) - (dolist (arg arguments-option) - (if (memq arg lambda-list-keywords) - (gather1 arg) - (gather1 (gensym)))))) - (intercept-rebindings - (gathering1 (collecting) - (iterate ((arg (list-elements arguments-option)) - (int (list-elements intercept-lambda-list))) - (unless (memq arg lambda-list-keywords) - (gather1 `(,arg ',int))))))) - ;; - ;; - (setf (cadr wrapped-body) - (append intercept-rebindings (cadr wrapped-body))) - ;; - ;; Be sure to fill out the intercept lambda list so that it can - ;; be too short if it wants to. - ;; - (cond ((memq '&rest intercept-lambda-list)) - ((memq '&allow-other-keys intercept-lambda-list)) - ((memq '&key intercept-lambda-list) - (setq intercept-lambda-list - (append intercept-lambda-list '(&allow-other-keys)))) - (t - (setq intercept-lambda-list - (append intercept-lambda-list '(&rest .ignore.))))) - - `(let ((inner-result. ,wrapped-body)) - `(apply #'(lambda ,',intercept-lambda-list - ,,(when (memq '.ignore. intercept-lambda-list) - ''(declare (ignore .ignore.))) - ,inner-result.) - .combined-method-args.)))) - diff --git a/obsolete/clos/2.0/defs.lisp b/obsolete/clos/2.0/defs.lisp deleted file mode 100644 index e0f2a047..00000000 --- a/obsolete/clos/2.0/defs.lisp +++ /dev/null @@ -1,570 +0,0 @@ -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- -;;;. Copyright (c) 1991 by Venue - - -(in-package "CLOS") - -(eval-when (compile load eval) - (defvar *defclass-times* '(load eval compile)) ;Probably have to change this - ;if you use defconstructor. -(defvar *defmethod-times* '(load eval compile)) -(defvar *defgeneric-times* '(load eval compile)) -) - - -;;; Convert a function name to its standard setf function name. We have to do this hack because not -;;; all Common Lisps have yet converted to having setf function specs. In a port that does have setf -;;; function specs you can use those just by making the obvious simple changes to these functions. -;;; The rest of CLOS believes that there are function names like (SETF ), this is the only place -;;; that knows about this hack. - - -(eval-when (compile load eval) - (defvar *setf-function-names* (make-hash-table :size 200 :test #'eq)) -(defun get-setf-function-name (name) - (or (gethash name *setf-function-names*) - (setf (gethash name *setf-function-names*) - (intern (format nil - "SETF ~A ~A" - (package-name (symbol-package name)) - (symbol-name name)) - *the-clos-package*)))) - -;;; -;;; Call this to define a setf macro for a function with the same behavior as -;;; specified by the SETF function cleanup proposal. Specifically, this will -;;; cause: (SETF (FOO a b) x) to expand to (|SETF FOO| x a b). -;;; -;;; do-standard-defsetf A macro interface for use at top level -;;; in files. Unfortunately, users may -;;; have to use this for a while. -;;; -;;; do-standard-defsetfs-for-defclass A special version called by defclass. -;;; -;;; do-standard-defsetf-1 A functional interface called by the -;;; above, defmethod and defgeneric. -;;; Since this is all a crock anyways, -;;; users are free to call this as well. -;;; -(defmacro do-standard-defsetf (&rest function-names) - `(eval-when (compile load eval) - (dolist (fn-name ',function-names) (do-standard-defsetf-1 fn-name)))) - -(defun do-standard-defsetfs-for-defclass (accessors) - (dolist (name accessors) (do-standard-defsetf-1 name))) - -(defun do-standard-defsetf-1 (function-name) - (unless (setfboundp function-name) - (let* ((setf-function-name (get-setf-function-name function-name))) - - (flet ((setf-expander (body env) - (declare (ignore env)) - (let ((temps - (mapcar #'(lambda (x) (declare (ignore x)) (gensym)) - (cdr body))) - (forms (cdr body)) - (vars (list (gensym)))) - (values temps - forms - vars - `(,setf-function-name ,@vars ,@temps) - `(,function-name ,@temps))))) - (let ((setf-method-expander (intern (concatenate 'string - (symbol-name function-name) - "-setf-expander") - (symbol-package function-name)))) - (setf (get function-name :setf-method-expander) setf-method-expander - (symbol-function setf-method-expander) #'setf-expander))) - - ))) -(defun setfboundp (symbol) -(or (get symbol :setf-inverse) - (get symbol 'il:setf-inverse) - (get symbol 'il:setfn) - (get symbol :shared-setf-inverse) - (get symbol :setf-method-expander) - (get symbol 'il:setf-method-expander))) -) - - ; eval-when - - - -;;; CLOS, like user code, must endure the fact that we don't have a properly working setf. Many -;;; things work because they get mentioned by a defclass or defmethod before they are used, but -;;; others have to be done by hand. - - -(do-standard-defsetf - class-wrapper ; *** - generic-function-name - method-function-plist - method-function-get - gdefinition - slot-value-using-class) - -(defsetf slot-value set-slot-value) - - -;;; This is like fdefinition on the Lispm. If Common Lisp had something like function specs I -;;; wouldn't need this. On the other hand, I don't like the way this really works so maybe function -;;; specs aren't really right either? I also don't understand the real implications of a Lisp-1 on -;;; this sort of thing. Certainly some of the lossage in all of this is because these SPECs name -;;; global definitions. Note that this implementation is set up so that an implementation which has -;;; a 'real' function spec mechanism can use that instead and in that way get rid of setf generic -;;; function names. - - -(defmacro parse-gspec (spec (non-setf-var . non-setf-case) - (setf-var . setf-case)) - (once-only (spec) - `(cond ((symbolp ,spec) - (let ((,non-setf-var ,spec)) - ,@non-setf-case)) - ((and (listp ,spec) - (eq (car ,spec) - 'setf) - (symbolp (cadr ,spec))) - (let ((,setf-var (cadr ,spec))) - ,@setf-case)) - (t (error "Can't understand ~S as a generic function specifier.~%~ - It must be either a symbol which can name a function or~%~ - a list like ~S, where the car is the symbol ~S and the cadr~%~ - is a symbol which can name a generic function." ,spec '(setf ) - 'setf))))) - - -;;; If symbol names a function which is traced or advised, return the unadvised, traced etc. -;;; definition. This lets me get at the generic function object even when it is traced. - - -(defun unencapsulated-fdefinition (symbol) - (il:virginfn symbol)) - - -;;; If symbol names a function which is traced or advised, redefine the `real' definition without -;;; affecting the advise. - - -(defun fdefine-carefully (symbol new-definition) - (let ((advisedp (member symbol il:advisedfns :test #'eq)) - (brokenp (member symbol il:brokenfns :test #'eq))) - - ;; In XeroxLisp (late of envos) tracing is implemented as a special case of "breaking". - ;; Advising, however, is treated specially. - (xcl:unadvise-function symbol :no-error t) - (xcl:unbreak-function symbol :no-error t) - (setf (symbol-function symbol) - new-definition) - (when brokenp (xcl:rebreak-function symbol)) - (when advisedp (xcl:readvise-function symbol))) - new-definition) - -(defun gboundp (spec) - (parse-gspec spec (name (fboundp name)) - (name (fboundp (get-setf-function-name name))))) - -(defun gmakunbound (spec) - (parse-gspec spec (name (fmakunbound name)) - (name (fmakunbound (get-setf-function-name name))))) - -(defun gdefinition (spec) - (parse-gspec spec (name (or (macro-function name) - ; ?? - (unencapsulated-fdefinition name))) - (name (unencapsulated-fdefinition (get-setf-function-name name))))) - -(defun SETF\ CLOS\ GDEFINITION (new-value spec) - (parse-gspec spec (name (fdefine-carefully name new-value)) - (name (fdefine-carefully (get-setf-function-name name) - new-value)))) - - -;;; These functions are a pale imitiation of their namesake. They accept class objects or types -;;; where they should. - - -(defun *typep (object type) - (if (classp type) - (let ((class (class-of object))) - (if class - (memq type (class-precedence-list class)) - nil)) - (let ((class (find-class type nil))) - (if class - (*typep object class) - (typep object type))))) - -(defun *subtypep (type1 type2) - (let ((c1 (if (classp type1) - type1 - (find-class type1 nil))) - (c2 (if (classp type2) - type2 - (find-class type2 nil)))) - (if (and c1 c2) - (memq c2 (class-precedence-list c1)) - (if (or c1 c2) - nil - ; This isn't quite right, but... - (subtypep type1 type2))))) - -(defun do-satisfies-deftype (name predicate) - (let* ((specifier `(satisfies ,predicate)) - (expand-fn #'(lambda (&rest ignore) - (declare (ignore ignore)) - specifier))) - - ;; Specific ports can insert their own way of doing this. Many ports may find the - ;; expand-fn defined above useful. - (or - ;; This is the default for ports for which we don't know any better. Note that for - ;; most ports, providing this definition should just speed up class definition. It - ;; shouldn't have an effect on performance of most user code. - (eval `(deftype ,name nil '(satisfies ,predicate)))))) - -(defun make-type-predicate-name (name) - (intern (format nil "TYPE-PREDICATE ~A ~A" (package-name (symbol-package name)) - (symbol-name name)) - *the-clos-package*)) - -(proclaim '(special *the-class-t* *the-class-vector* *the-class-symbol* *the-class-string* - *the-class-sequence* *the-class-rational* *the-class-ratio* *the-class-number* - *the-class-null* *the-class-list* *the-class-integer* *the-class-float* - *the-class-cons* *the-class-complex* *the-class-character* *the-class-bit-vector* - *the-class-array* *the-class-standard-object* *the-class-class* *the-class-method* - *the-class-generic-function* *the-class-standard-class* *the-class-standard-method* - *the-class-standard-generic-function* - *the-class-standard-effective-slot-definition* *the-eslotd-standard-class-slots*)) - -(proclaim '(special *the-wrapper-of-t* *the-wrapper-of-vector* *the-wrapper-of-symbol* - *the-wrapper-of-string* *the-wrapper-of-sequence* *the-wrapper-of-rational* - *the-wrapper-of-ratio* *the-wrapper-of-number* *the-wrapper-of-null* - *the-wrapper-of-list* *the-wrapper-of-integer* *the-wrapper-of-float* - *the-wrapper-of-cons* *the-wrapper-of-complex* *the-wrapper-of-character* - *the-wrapper-of-bit-vector* *the-wrapper-of-array*)) - -(defvar *built-in-class-symbols* nil) - -(defvar *built-in-wrapper-symbols* nil) - -(defun get-built-in-class-symbol (class-name) - (or (cadr (assq class-name *built-in-class-symbols*)) - (let ((symbol (intern (format nil "*THE-CLASS-~A*" (symbol-name class-name)) - *the-clos-package*))) - (push (list class-name symbol) - *built-in-class-symbols*) - symbol))) - -(defun get-built-in-wrapper-symbol (class-name) - (or (cadr (assq class-name *built-in-wrapper-symbols*)) - (let ((symbol (intern (format nil "*THE-WRAPPER-OF-~A*" (symbol-name class-name)) - *the-clos-package*))) - (push (list class-name symbol) - *built-in-wrapper-symbols*) - symbol))) - -(pushnew 'class *variable-declarations*) - -(pushnew 'variable-rebinding *variable-declarations*) - -(defun variable-class (var env) - (caddr (variable-declaration 'class var env))) - -(defvar *boot-state* nil) - ; NIL EARLY BRAID COMPLETE - - -(eval-when (load eval) - (when (eq *boot-state* 'complete) - (error "Trying to load (or compile) CLOS in an environment in which it~%~ - has already been loaded. This doesn't work, you will have to~%~ - get a fresh lisp (reboot) and then load CLOS.")) - (when *boot-state* (cerror "Try loading (or compiling) CLOS anyways." "Trying to load (or compile) CLOS in an environment in which it~%~ - has already been partially loaded. This may not work, you may~%~ - need to get a fresh lisp (reboot) and then load CLOS."))) - - -;;; This is used by combined methods to communicate the next methods to the methods they call. This -;;; variable is captured by a lexical variable of the methods to give it the proper lexical scope. - - -(defvar *next-methods* nil) - -(defvar *not-an-eql-specializer* '(not-an-eql-specializer)) - -(defvar *umi-gfs*) - -(defvar *umi-complete-classes*) - -(defvar *umi-reorder*) - -(defvar *invalidate-discriminating-function-force-p* nil) - -(defvar *invalid-dfuns-on-stack* nil) - -(defvar *standard-method-combination*) - -(defvar *slotd-unsupplied* (list '*slotd-unsupplied*)) - - ; *** - - -(defmacro define-gf-predicate (predicate &rest classes) - `(progn (defmethod ,predicate ((x t)) - nil) - ,@(mapcar #'(lambda (c) - `(defmethod ,predicate ((x ,c)) - t)) - classes))) - -(defmacro plist-value (object name) - `(with-slots (plist) - ,object - (getf plist ,name))) - -(defsetf plist-value (object name) - (new-value) - (once-only (new-value) - `(with-slots (plist) - ,object - (if ,new-value - (setf (getf plist ,name) - ,new-value) - (progn (remf plist ,name) - nil))))) - -(defvar *built-in-classes* - - ;; name supers subs cdr of cpl - '((number (t) (complex float rational) - (t)) - (complex (number) - nil - (number t)) - (float (number) - nil - (number t)) - (rational (number) - (integer ratio) - (number t)) - (integer (rational) - nil - (rational number t)) - (ratio (rational) - nil - (rational number t)) - (sequence (t) - (list vector) - (t)) - (list (sequence) - (cons null) - (sequence t)) - (cons (list) - nil - (list sequence t)) - (array (t) - (vector) - (t)) - (vector (array sequence) - (string bit-vector) - (array sequence t)) - (string (vector) - nil - (vector array sequence t)) - (bit-vector (vector) - nil - (vector array sequence t)) - (character (t) - nil - (t)) - (symbol (t) - (null) - (t)) - (null (symbol) - nil - (symbol list sequence t)))) - - -;;; The classes that define the kernel of the metabraid. - - -(defclass t nil nil (:metaclass built-in-class)) - -(defclass standard-object (t) - nil) - -(defclass metaobject (standard-object) - nil) - -(defclass specializer (metaobject) - nil) - -(defclass definition-source-mixin (standard-object) - ((source :initform (load-truename) - :reader definition-source :initarg :definition-source))) - -(defclass plist-mixin (standard-object) - ((plist :initform nil))) - -(defclass documentation-mixin (plist-mixin) - nil) - -(defclass dependent-update-mixin (plist-mixin) - nil) - - -;;; The class CLASS is a specified basic class. It is the common superclass of any kind of class. -;;; That is any class that can be a metaclass must have the class CLASS in its class precedence -;;; list. - - -(defclass class (documentation-mixin dependent-update-mixin definition-source-mixin specializer) - ((name :initform nil :initarg :name :accessor class-name) - (direct-superclasses :initform nil :reader class-direct-superclasses) - (direct-subclasses :initform nil :reader class-direct-subclasses) - (direct-methods :initform (cons nil nil)))) - - -;;; The class CLOS-CLASS is an implementation-specific common superclass of all specified subclasses -;;; of the class CLASS. - - -(defclass clos-class (class) - ((class-precedence-list :initform nil) - (wrapper :initform nil))) - - -;;; The class STD-CLASS is an implementation-specific common superclass of the classes -;;; STANDARD-CLASS and FUNCALLABLE-STANDARD-CLASS. - - -(defclass std-class (clos-class) - ((direct-slots :initform nil :accessor class-direct-slots) - (slots :initform nil :accessor class-slots) - (no-of-instance-slots ; *** MOVE TO WRAPPER *** - :initform 0 :accessor class-no-of-instance-slots) - (prototype :initform nil))) - -(defclass standard-class (std-class) - nil) - -(defclass funcallable-standard-class (std-class) - nil) - -(defclass forward-referenced-class (clos-class) - nil) - -(defclass built-in-class (clos-class) - nil) - - -;;; Slot definitions. Note that throughout CLOS, "SLOT-DEFINITION" is abbreviated as "SLOTD". - - -(defclass slot-definition (metaobject) - nil) - -(defclass direct-slot-definition (slot-definition) - nil) - -(defclass effective-slot-definition (slot-definition) - nil) -; -(defclass standard-slot-definition (slot-definition) - ((name :initform nil :accessor slotd-name) - (initform :initform *slotd-unsupplied* :accessor slotd-initform) - (initfunction :initform *slotd-unsupplied* :accessor slotd-initfunction) - (readers :initform nil :accessor slotd-readers) - (writers :initform nil :accessor slotd-writers) - (initargs :initform nil :accessor slotd-initargs) - (allocation :initform nil :accessor slotd-allocation) - (type :initform nil :accessor slotd-type) - (documentation :initform "" :initarg :documentation) - (class :initform nil :accessor slotd-class) - (instance-index :initform nil :accessor slotd-instance-index))) - -(defclass standard-direct-slot-definition (standard-slot-definition direct-slot-definition) - nil) - - ; Adding slots here may involve extra - ; work to the code in braid.lisp - - -(defclass standard-effective-slot-definition (standard-slot-definition effective-slot-definition) - nil) - - ; Adding slots here may involve extra - ; work to the code in braid.lisp - - -(defclass eql-specializer (specializer) - ((object :initarg :object :reader eql-specializer-object))) - - -;;; - - -(defmacro dolist-carefully ((var list improper-list-handler) - &body body) - `(let ((,var nil) - (.dolist-carefully. ,list)) - (loop (when (null .dolist-carefully.) - (return nil)) - (if (consp .dolist-carefully.) - (progn (setq ,var (pop .dolist-carefully.)) - ,@body) - (,improper-list-handler))))) - -(defun legal-std-documentation-p (x) - (if (or (null x) - (stringp x)) - t - "a string or NULL")) - -(defun legal-std-lambda-list-p (x) - (declare (ignore x)) - t) - -(defun legal-std-method-function-p (x) - (if (functionp x) - t - "a function")) - -(defun legal-std-qualifiers-p (x) - (flet ((improper-list nil (return-from legal-std-qualifiers-p "Is not a proper list."))) - (dolist-carefully (q x improper-list) - (let ((ok (legal-std-qualifier-p q))) - (unless (eq ok t) - (return-from legal-std-qualifiers-p (format nil "Contains ~S which ~A" q - ok))))) - t)) - -(defun legal-std-qualifier-p (x) - (if (and x (atom x)) - t - "is not a non-null atom")) - -(defun legal-std-slot-name-p (x) - (cond ((not (symbolp x)) - "is not a symbol and so cannot be bound") - ((keywordp x) - "is a keyword and so cannot be bound") - ((memq x '(t nil)) - "cannot be bound") - (t t))) - -(defun legal-std-specializers-p (x) - (flet ((improper-list nil (return-from legal-std-specializers-p "Is not a proper list."))) - (dolist-carefully (s x improper-list) - (let ((ok (legal-std-specializer-p s))) - (unless (eq ok t) - (return-from legal-std-specializers-p (format nil "Contains ~S which ~A" - s ok))))) - t)) - -(defun legal-std-specializer-p (x) - (if (or (classp x) - (eql-specializer-p x)) - t - "is neither a class object nor an eql specializer")) diff --git a/obsolete/clos/2.0/defsys.lisp b/obsolete/clos/2.0/defsys.lisp deleted file mode 100644 index c8a5f6f7..00000000 --- a/obsolete/clos/2.0/defsys.lisp +++ /dev/null @@ -1,757 +0,0 @@ -;;;-*-Mode:LISP; Package:(CLOS LISP 1000); Base:10; Syntax:Common-lisp -*- -;;; -;;; ************************************************************************* -;;; Copyright (c) 1991 Venue -;;; All rights reserved. -;;; ************************************************************************* -;;; -;;; Some support stuff for compiling and loading CLOS. It would be nice if -;;; there was some portable make-system we could all agree to share for a -;;; while. At least until people really get databases and stuff. -;;; -;;; *** *** -;;; *** DIRECTIONS FOR INSTALLING CLOS AT YOUR SITE *** -;;; *** *** -;;; -;;; To get CLOS working at your site you should: -;;; -;;; - Get all the CLOS source files from Xerox. The complete list of source -;;; file names can be found in the defsystem for CLOS which appears towards -;;; the end of this file. -;;; -;;; - Edit the variable *clos-directory* below to specify the directory at -;;; your site where the clos sources and binaries will be. This variable -;;; can be found by searching from this point for the string "***" in -;;; this file. -;;; -;;; - Use the function (clos::compile-clos) to compile CLOS for your site. -;;; -;;; - Once CLOS has been compiled it can be loaded with (clos::load-clos). -;;; Note that CLOS cannot be loaded on top of itself, nor can it be -;;; loaded into the same world it was compiled in. -;;; - -(in-package "CLOS" :use (list (or (find-package :walker) - (make-package :walker :use '(:lisp))) - (or (find-package :iterate) - (make-package :iterate - :use '(:lisp :walker))) - (find-package :lisp))) - -(export (intern (symbol-name :iterate) ;Have to do this here, - (find-package :iterate)) ;because in the defsystem - (find-package :iterate)) ;(later in this file) - ;we use the symbol iterate - ;to name the file - -;;; -;;; Sure, its weird for this to be here, but in order to follow the rules -;;; about order of export and all that stuff, we can't put it in PKG before -;;; we want to use it. -;;; -(defvar *the-clos-package* (find-package :clos)) - -(defvar *clos-system-date* "5/10/91 Interim CLOS release") - - -;;; -;;; Various hacks to get people's *features* into better shape. -;;; -(eval-when (compile load eval) - #+(and Symbolics Lispm) - (multiple-value-bind (major minor) (sct:get-release-version) - (etypecase minor - (integer) - (string (setf minor (parse-integer minor :junk-allowed t)))) - (pushnew :genera *features*) - (ecase major - ((6) - (pushnew :genera-release-6 *features*)) - ((7) - (pushnew :genera-release-7 *features*) - (ecase minor - ((0 1) (pushnew :genera-release-7-1 *features*)) - ((2) (pushnew :genera-release-7-2 *features*)) - ((3) (pushnew :genera-release-7-3 *features*)) - ((4) (pushnew :genera-release-7-4 *features*)))) - ((8) - (pushnew :genera-release-8 *features*) - (ecase minor - ((0) (pushnew :genera-release-8-0 *features*)) - ((1) (pushnew :genera-release-8-1 *features*)))))) - - #+CLOE-Runtime - (let ((version (lisp-implementation-version))) - (when (string-equal version "2.0" :end1 (min 3 (length version))) - (pushnew :cloe-release-2 *features*))) - - (dolist (feature *features*) - (when (and (symbolp feature) ;3600!! - (equal (symbol-name feature) "CMU")) - (pushnew :CMU *features*))) - - #+TI - (if (eq (si:local-binary-file-type) :xld) - (pushnew ':ti-release-3 *features*) - (pushnew ':ti-release-2 *features*)) - - #+Lucid - (when (search "IBM RT PC" (machine-type)) - (pushnew :ibm-rt-pc *features*)) - - #+ExCL - (cond ((search "sun3" (lisp-implementation-version)) - (push :sun3 *features*)) - ((search "sun4" (lisp-implementation-version)) - (push :sun4 *features*))) - - #+(and HP Lucid) - (push :HP-Lucid *features*) - #+(and HP (not Lucid)) - (push :HP-HPLabs *features*) - - #+Xerox - (case il:makesysname - (:lyric (push :Xerox-Lyric *features*)) - (otherwise (pushnew :Xerox-Medley *features*))) -;;; -;;; For KCL and IBCL, push the symbol :turbo-closure on the list *features* -;;; if you have installed turbo-closure patch. See the file kcl-mods.text -;;; for details. -;;; -;;; The xkcl version of KCL has this fixed already. -;;; - - #+xkcl(pushnew :turbo-closure *features*) - - ) - - - -;;; Yet Another Sort Of General System Facility and friends. -;;; -;;; The entry points are defsystem and operate-on-system. defsystem is used -;;; to define a new system and the files with their load/compile constraints. -;;; Operate-on-system is used to operate on a system defined that has been -;;; defined by defsystem. For example: -#|| - -(defsystem my-very-own-system - "/usr/myname/lisp/" - ((classes (precom) () ()) - (methods (precom classes) (classes) ()) - (precom () (classes methods) (classes methods)))) - -This defsystem should be read as follows: - -* Define a system named MY-VERY-OWN-SYSTEM, the sources and binaries - should be in the directory "/usr/me/lisp/". There are three files - in the system, there are named classes, methods and precom. (The - extension the filenames have depends on the lisp you are running in.) - -* For the first file, classes, the (precom) in the line means that - the file precom should be loaded before this file is loaded. The - first () means that no other files need to be loaded before this - file is compiled. The second () means that changes in other files - don't force this file to be recompiled. - -* For the second file, methods, the (precom classes) means that both - of the files precom and classes must be loaded before this file - can be loaded. The (classes) means that the file classes must be - loaded before this file can be compiled. The () means that changes - in other files don't force this file to be recompiled. - -* For the third file, precom, the first () means that no other files - need to be loaded before this file is loaded. The first use of - (classes methods) means that both classes and methods must be - loaded before this file can be compiled. The second use of (classes - methods) mean that whenever either classes or methods changes precom - must be recompiled. - -Then you can compile your system with: - - (operate-on-system 'my-very-own-system :compile) - -and load your system with: - - (operate-on-system 'my-very-own-system :load) - -||# - -;;; -(defvar *system-directory*) - -;;; -;;; *port* is a list of symbols (in the CLOS package) which represent the -;;; Common Lisp in which we are now running. Many of the facilities in -;;; defsys use the value of *port* rather than #+ and #- to conditionalize -;;; the way they work. -;;; -(defvar *port* - '(#+Genera Genera -; #+Genera-Release-6 Rel-6 -; #+Genera-Release-7-1 Rel-7 - #+Genera-Release-7-2 Rel-7 - #+Genera-Release-7-3 Rel-7 - #+Genera-Release-7-1 Rel-7-1 - #+Genera-Release-7-2 Rel-7-2 - #+Genera-Release-7-3 Rel-7-2 ;OK for now - #+Genera-Release-7-4 Rel-7-2 ;OK for now - #+Genera-Release-8 Rel-8 - #+imach Ivory - #+Cloe-Runtime Cloe - #+Lucid Lucid - #+Xerox Xerox - #+Xerox-Lyric Xerox-Lyric - #+Xerox-Medley Xerox-Medley - #+TI TI - #+(and dec vax common) Vaxlisp - #+KCL KCL - #+IBCL IBCL - #+excl excl - #+(and excl sun4) excl-sun4 - #+:CMU CMU - #+HP-HPLabs HP-HPLabs - #+:gclisp gclisp - #+pyramid pyramid - #+:coral coral)) - -;;; -;;; When you get a copy of CLOS (by tape or by FTP), the sources files will -;;; have extensions of ".lisp" in particular, this file will be defsys.lisp. -;;; The preferred way to install clos is to rename these files to have the -;;; extension which your lisp likes to use for its files. Alternately, it -;;; is possible not to rename the files. If the files are not renamed to -;;; the proper convention, the second line of the following defvar should -;;; be changed to: -;;; (let ((files-renamed-p nil) -;;; -;;; Note: Something people installing CLOS on a machine running Unix -;;; might find useful. If you want to change the extensions -;;; of the source files from ".lisp" to ".lsp", *all* you have -;;; to do is the following: -;;; -;;; % foreach i (*.lisp) -;;; ? mv $i $i:r.lsp -;;; ? end -;;; % -;;; -;;; I am sure that a lot of people already know that, and some -;;; Unix hackers may say, "jeez who doesn't know that". Those -;;; same Unix hackers are invited to fix mv so that I can type -;;; "mv *.lisp *.lsp". -;;; -(defvar *pathname-extensions* - (let ((files-renamed-p t) - (proper-extensions - (car - '(#+(and Genera (not imach)) ("lisp" . "bin") - #+(and Genera imach) ("lisp" . "ibin") - #+Cloe-Runtime ("l" . "fasl") - #+(and dec common vax (not ultrix)) ("LSP" . "FAS") - #+(and dec common vax ultrix) ("lsp" . "fas") - #+KCL ("lsp" . "o") - #+IBCL ("lsp" . "o") - #+Xerox ("lisp" . "dfasl") - #+(and Lucid MC68000) ("lisp" . "lbin") - #+(and Lucid VAX) ("lisp" . "vbin") - #+(and Lucid Prime) ("lisp" . "pbin") - #+(and Lucid SUNRise) ("lisp" . "sbin") - #+(and Lucid SPARC) ("lisp" . "sbin") - #+(and Lucid IBM-RT-PC) ("lisp" . "bbin") - #+(and Lucid MIPS) ("lisp" . "mbin") - #+(and Lucid PRISM) ("lisp" . "abin") - #+(and Lucid PA) ("lisp" . "hbin") - #+excl ("cl" . "fasl") - #+:CMU ("slisp" . "sfasl") - #+HP ("l" . "b") - #+TI ("lisp" . #.(string (si::local-binary-file-type))) - #+:gclisp ("LSP" . "F2S") - #+pyramid ("clisp" . "o") - #+:coral ("lisp" . "fasl") - )))) - (cond ((null proper-extensions) '("l" . "lbin")) - ((null files-renamed-p) (cons "lisp" (cdr proper-extensions))) - (t proper-extensions)))) - -(eval-when (compile load eval) - -(defun get-system (name) - (get name 'system-definition)) - -(defun set-system (name new-value) - (setf (get name 'system-definition) new-value)) - -(defmacro defsystem (name directory files) - `(set-system ',name (list #'(lambda () ,directory) - (make-modules ',files) - ',(mapcar #'car files)))) - -) - - -;;; -;;; The internal datastructure used when operating on a system. -;;; -(defstruct (module (:constructor make-module (name)) - (:print-function - (lambda (m s d) - (declare (ignore d)) - (format s "#" (module-name m))))) - name - load-env - comp-env - recomp-reasons) - -(defun make-modules (system-description) - (let ((modules ())) - (labels ((get-module (name) - (or (find name modules :key #'module-name) - (progn (setq modules (cons (make-module name) modules)) - (car modules)))) - (parse-spec (spec) - (if (eq spec 't) - (reverse (cdr modules)) - (case (car spec) - (+ (append (reverse (cdr modules)) (mapcar #'get-module (cdr spec)))) - (- (let ((rem (mapcar #'get-module (cdr spec)))) - (remove-if #'(lambda (m) (member m rem)) (reverse (cdr modules))))) - (otherwise (mapcar #'get-module spec)))))) - (dolist (file system-description) - (let* ((name (car file)) - (port (car (cddddr file))) - (module nil)) - (when (or (null port) - (member port *port*)) - (setq module (get-module name)) - (setf (module-load-env module) (parse-spec (cadr file)) - (module-comp-env module) (parse-spec (caddr file)) - (module-recomp-reasons module) (parse-spec - (cadddr file)))))) - (let ((filenames (mapcar #'car system-description))) - (sort modules #'(lambda (name1 name2) - (member name2 (member name1 filenames))) - :key #'module-name))))) - - -(defun make-transformations (modules filter make-transform) - (let ((transforms (list nil))) - (dolist (m modules) - (when (funcall filter m transforms) (funcall make-transform m transforms))) - (reverse (cdr transforms)))) - -(defun make-compile-transformation (module transforms) - (unless (dolist (trans transforms) - (and (eq (car trans) ':compile) - (eq (cadr trans) module) - (return t))) - (dolist (c (module-comp-env module)) (make-load-transformation c transforms)) - (setf (cdr transforms) - (remove-if #'(lambda (trans) (and (eq (car trans) :load) (eq (cadr trans) module))) - (cdr transforms))) - (push `(:compile ,module) (cdr transforms)))) - -(defvar *being-loaded* ()) - -(defun make-load-transformation (module transforms) - (if (assoc module *being-loaded*) - (throw module (setf (cdr transforms) (cdr (assoc module *being-loaded*)))) - (let ((*being-loaded* (cons (cons module (cdr transforms)) *being-loaded*))) - (catch module - (unless (dolist (trans transforms) - (when (and (eq (car trans) ':load) - (eq (cadr trans) module)) - (return t))) - (dolist (l (module-load-env module)) (make-load-transformation l transforms)) - (push `(:load ,module) (cdr transforms))))))) - -(defun make-load-without-dependencies-transformation (module transforms) - (unless (dolist (trans transforms) - (and (eq (car trans) ':load) - (eq (cadr trans) module) - (return trans))) - (push `(:load ,module) (cdr transforms)))) - -(defun compile-filter (module transforms) - (or (dolist (r (module-recomp-reasons module)) - (when (dolist (transform transforms) - (when (and (eq (car transform) ':compile) - (eq (cadr transform) r)) - (return t))) - (return t))) - (null (probe-file (make-binary-pathname (module-name module)))) - (> (file-write-date (make-source-pathname (module-name module))) - (file-write-date (make-binary-pathname (module-name module)))))) - -(defun operate-on-system (name mode &optional arg print-only) - (let ((system (get-system name))) - (unless system (error "Can't find system with name ~S." name)) - (let ((*system-directory* (funcall (car system))) - (modules (cadr system)) - (transformations ())) - (labels ((load-source (name pathname) - (format t "~&Loading source of ~A..." name) - (or print-only (load pathname))) - (load-binary (name pathname) - (format t "~&Loading binary of ~A..." name) - (or print-only (load pathname))) - (load-module (m) - (let* ((name (module-name m)) - (*load-verbose* nil) - (binary (make-binary-pathname name))) - (load-binary name binary))) - (compile-module (m) - (format t "~&Compiling ~A..." (module-name m)) - (unless print-only - (let ((name (module-name m))) - (compile-file (make-source-pathname name) - :output-file - (make-pathname :defaults - (make-binary-pathname name) - :version :newest))))) - (xcl:true (&rest ignore) (declare (ignore ignore)) 't)) - - (setq transformations - (ecase mode - (:compile - ;; Compile any files that have changed and any other files - ;; that require recompilation when another file has been - ;; recompiled. - (make-transformations - modules - #'compile-filter - #'make-compile-transformation)) - (:recompile - ;; Force recompilation of all files. - (make-transformations - modules - #'xcl:true - #'make-compile-transformation)) - (:recompile-some - ;; Force recompilation of some files. Also compile the - ;; files that require recompilation when another file has - ;; been recompiled. - (make-transformations - modules - #'(lambda (m transforms) - (or (member (module-name m) arg) - (compile-filter m transforms))) - #'make-compile-transformation)) - (:query-compile - ;; Ask the user which files to compile. Compile those - ;; and any other files which must be recompiled when - ;; another file has been recompiled. - (make-transformations - modules - #'(lambda (m transforms) - (or (compile-filter m transforms) - (y-or-n-p "Compile ~A?" - (module-name m)))) - #'make-compile-transformation)) - (:confirm-compile - ;; Offer the user a chance to prevent a file from being - ;; recompiled. - (make-transformations - modules - #'(lambda (m transforms) - (and (compile-filter m transforms) - (y-or-n-p "Go ahead and compile ~A?" - (module-name m)))) - #'make-compile-transformation)) - (:load - ;; Load the whole system. - (make-transformations - modules - #'xcl:true - #'make-load-transformation)) - (:query-load - ;; Load only those files the user says to load. - (make-transformations - modules - #'(lambda (m transforms) - (declare (ignore transforms)) - (y-or-n-p "Load ~A?" (module-name m))) - #'make-load-without-dependencies-transformation)))) - - (#+Genera - compiler:compiler-warnings-context-bind - #+TI - COMPILER:COMPILER-WARNINGS-CONTEXT-BIND - #+:LCL3.0 - lucid-common-lisp:with-deferred-warnings - #-(or Genera TI :LCL3.0) - progn - (loop (when (null transformations) (return t)) - (let ((transform (pop transformations))) - (ecase (car transform) - (:compile (compile-module (cadr transform))) - (:load (load-module (cadr transform))))))))))) - - -(defun make-source-pathname (name) (make-pathname-internal name :source)) -(defun make-binary-pathname (name) (make-pathname-internal name :binary)) - -(defun make-pathname-internal (name type) - (let* ((extension (ecase type - (:source (car *pathname-extensions*)) - (:binary (cdr *pathname-extensions*)))) - (directory (pathname - (etypecase *system-directory* - (string *system-directory*) - (pathname *system-directory*) - (cons (ecase type - (:source (car *system-directory*)) - (:binary (cdr *system-directory*))))))) - (pathname - (make-pathname - :name (string-downcase (string name)) - :type extension - :defaults directory :version :newest))) - - #+Genera - (setq pathname (zl:send pathname :new-raw-name (pathname-name pathname)) - pathname (zl:send pathname :new-raw-type (pathname-type pathname))) - - pathname)) - - - -;;; *** SITE SPECIFIC CLOS DIRECTORY *** -;;; -;;; *clos-directory* is a variable which specifies the directory clos is stored -;;; in at your site. If the value of the variable is a single pathname, the -;;; sources and binaries should be stored in that directory. If the value of -;;; that directory is a cons, the CAR should be the source directory and the -;;; CDR should be the binary directory. -;;; -;;; By default, the value of *clos-directory* is set to the directory that -;;; this file is loaded from. This makes it simple to keep multiple copies -;;; of CLOS in different places, just load defsys from the same directory as -;;; the copy of CLOS you want to use. -;;; -;;; Note that the value of *CLOS-DIRECTORY* is set using a DEFVAR. This is -;;; done to make it possible for users to set it in their init file and then -;;; load this file. The value set in the init file will override the value -;;; here. -;;; -;;; *** *** - -(defun load-truename (&optional (errorp nil)) - (flet ((bad-time () - (when errorp - (error "LOAD-TRUENAME called but a file isn't being loaded.")))) - #+Lispm (or sys:fdefine-file-pathname (bad-time)) - #+excl excl::*source-pathname* - #+Xerox (pathname (or (il:fullname *standard-input*) (bad-time))) - #+(and dec vax common) (truename (sys::source-file #'load-truename)) - ;; - ;; The following use of `lucid::' is a kludge for 2.1 and 3.0 - ;; compatibility. In 2.1 it was in the SYSTEM package, and i - ;; 3.0 it's in the LUCID-COMMON-LISP package. - ;; - #+LUCID (or lucid::*source-pathname* (bad-time)) - #-(or Lispm excl Xerox (and dec vax common) LUCID) nil)) - -#-Symbolics -(defvar *clos-directory* - (or (load-truename t) - (error "Because load-truename is not implemented in this port~%~ - of CLOS, you must manually edit the definition of the~%~ - variable *clos-directory* in the file defsys.lisp."))) - -#+Genera -(defvar *clos-directory* - (let ((source (load-truename t))) - (flet ((subdir (name) - (scl:send source :new-pathname :raw-directory - (append (scl:send source :raw-directory) - (list name))))) - (cons source - #+genera-release-7-2 (subdir "rel-7-2") - #+genera-release-7-3 (subdir "rel-7-3") - #+genera-release-7-4 (subdir "rel-7-4") - #+genera-release-8-0 (subdir "rel-8-0") - #+genera-release-8-1 (subdir "rel-8-1") - )))) - -#+Cloe-Runtime -(defvar *clos-directory* (pathname "/usr3/hornig/clos/")) - -(defsystem clos - *clos-directory* - ;; - ;; file load compile files which port - ;; environment environment force the of - ;; recompilation - ;; of this file - ;; - ( - (patch t t () xerox) - (pkg t t ()) - (walk (pkg) (pkg) ()) - (iterate t t ()) - (macros t t ()) - (low (pkg macros) t (macros)) - (low2 (low) (low) (low) Xerox) - (fin t t (low)) - (defclass t t (low)) - (defs t t (defclass macros iterate)) - (fngen t t (low)) - (lap t t (low)) - (plap t t (low)) - (cache t t (low defs)) - (dlap t t (defs low fin cache lap)) - (boot t t (defs fin)) - (vector t t (boot defs cache fin)) - (slots t t (vector boot defs low cache fin)) - (init t t (vector boot defs low cache fin)) - (std-class t t (vector boot defs low cache fin slots)) - (cpl t t (vector boot defs low cache fin slots)) - (braid t t (boot defs low fin cache)) - (fsc t t (defclass boot defs low fin cache)) - (methods t t (defclass boot defs low fin cache)) - (combin t t (defclass boot defs low fin cache)) - (dfun t t (dlap)) - (fixup (+ precom1 precom2 precom4) t (boot defs low fin)) - (defcombin t t (defclass boot defs low fin)) - (ctypes t t (defclass defcombin)) - (construct t t (defclass boot defs low)) - (env t t (defclass boot defs low fin)) - (compat t t ()) - (precom1 (dlap) t (defs low cache fin dfun)) - (precom2 (dlap) t (defs low cache fin dfun)) - (precom4 (dlap) t (defs low cache fin dfun)) - )) - -(defun compile-clos (&optional m) - (let (#+:coral(ccl::*warn-if-redefine-kernel* nil) - #+Lucid (lcl:*redefinition-action* nil) - #+excl (excl::*redefinition-warnings* nil) - #+Genera (sys:inhibit-fdefine-warnings t) - ) - (cond ((null m) (operate-on-system 'clos :compile)) - ((eq m :print) (operate-on-system 'clos :compile () t)) - ((eq m :query) (operate-on-system 'clos :query-compile)) - ((eq m :confirm) (operate-on-system 'clos :confirm-compile)) - ((eq m 't) (operate-on-system 'clos :recompile)) - ((listp m) (operate-on-system 'clos :compile-from m)) - ((symbolp m) (operate-on-system 'clos :recompile-some `(,m)))))) - -(defun load-clos (&optional m) - (let (#+:coral(ccl::*warn-if-redefine-kernel* nil) - #+Lucid (lcl:*redefinition-action* nil) - #+excl (excl::*redefinition-warnings* nil) - #+Genera (sys:inhibit-fdefine-warnings t) - ) - (cond ((null m) (operate-on-system 'clos :load)) - ((eq m :query) (operate-on-system 'clos :query-load))) - (pushnew :clos *features*))) - -#+Genera -;;; Make sure Genera bug mail contains the CLOS bug data. A little -;;; kludgy, but what the heck. If they didn't mean for people to do -;;; this, they wouldn't have made private patch notes be flavored -;;; objects, right? Right. -(progn - (scl:defflavor clos-private-patch-info ((description)) ()) - (scl:defmethod (sct::private-patch-info-description clos-private-patch-info) () - (or description - (setf description (string-append "CLOS version: " *clos-system-date*)))) - (scl:defmethod (sct::private-patch-info-pathname clos-private-patch-info) () - *clos-directory*) - (unless (find-if #'(lambda (x) (typep x 'clos-private-patch-info)) - sct::*private-patch-info*) - (push (scl:make-instance 'clos-private-patch-info) - sct::*private-patch-info*))) - -(defun bug-report-info (&optional (stream *standard-output*)) - (format stream "~&CLOS system date: ~A~ - ~&Lisp Implementation type: ~A~ - ~&Lisp Implementation version: ~A~ - ~&*features*: ~S" - *clos-system-date* - (lisp-implementation-type) - (lisp-implementation-version) - *features*)) - - - -;;;; -;;; -;;; This stuff is not intended for external use. -;;; -(defun rename-clos () - (dolist (f (cadr (get-system 'clos))) - (let ((old nil) - (new nil)) - (let ((*system-directory* *default-pathname-defaults*)) - (setq old (make-source-pathname (car f)))) - (setq new (make-source-pathname (car f))) - (rename-file old new)))) - -#+Genera -(defun edit-clos () - (dolist (f (cadr (get-system 'clos))) - (let ((*system-directory* *clos-directory*)) - (zwei:find-file (make-source-pathname (car f)))))) - -#+Genera -(defun hardcopy-clos (&optional query-p) - (let ((files (mapcar #'(lambda (f) - (setq f (car f)) - (and (or (not query-p) - (y-or-n-p "~A? " f)) - f)) - (cadr (get-system 'clos)))) - (b zwei:*interval*)) - (unwind-protect - (dolist (f files) - (when f - (multiple-value-bind (ignore b) - (zwei:find-file (make-source-pathname f)) - (zwei:hardcopy-buffer b)))) - (zwei:make-buffer-current b)))) - - -;;; -;;; unido!ztivax!dae@seismo.css.gov -;;; z30083%tansei.cc.u-tokyo.junet@utokyo-relay.csnet -;;; Victor@carmen.uu.se -;;; mcvax!harlqn.co.uk!chris@uunet.UU.NET -;;; -#+Genera -(defun mail-clos (to) - (let* ((original-buffer zwei:*interval*) - (*system-directory* (pathname "vaxc:/user/ftp/pub/clos/") - ;(funcall (car (get-system 'clos))) - ) - (files (list* 'defsys - 'test - (caddr (get-system 'clos)))) - (total-number (length files)) - (file nil) - (number-of-lines 0) - (i 0) - (mail-buffer nil)) - (unwind-protect - (loop - (when (null files) (return nil)) - (setq file (pop files)) - (incf i) - (multiple-value-bind (ignore b) - (zwei:find-file (make-source-pathname file)) - (setq number-of-lines (zwei:count-lines b)) - (zwei:com-mail-internal t - :initial-to to - :initial-body b - :initial-subject - (format nil - "CLOS file ~A (~A of ~A) ~D lines" - file i total-number number-of-lines)) - (setq mail-buffer zwei:*interval*) - (zwei:com-exit-com-mail) - (format t "~&Just sent ~A (~A of ~A)." b i total-number) - (zwei:kill-buffer mail-buffer))) - (zwei:make-buffer-current original-buffer)))) - - diff --git a/obsolete/clos/2.0/dfun.lisp b/obsolete/clos/2.0/dfun.lisp deleted file mode 100644 index 1e958a30..00000000 --- a/obsolete/clos/2.0/dfun.lisp +++ /dev/null @@ -1,606 +0,0 @@ -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- - -;;;. Copyright (c) 1991 by Venue - -(in-package "CLOS") - - - ; ************************************************************************ - ; temporary for data gathering - ; temporary for data gathering - ; ************************************************************************ - - -(defvar *dfun-states* (make-hash-table :test #'eq)) - -(defun notice-dfun-state (generic-function state &optional nkeys valuep) - (setf (gethash generic-function *dfun-states*) - (cons state (when nkeys (list nkeys valuep))))) - - - ; ************************************************************************ - ; temporary for data gathering - ; temporary for data gathering - ; ************************************************************************ - - -(defvar *dfun-constructors* nil) - - ; An alist in which each entry is of - ; the form ( . ( - ; ...)) Each subentry is of the form: - ; ( ) - - -(defvar *enable-dfun-constructor-caching* t) - - ; If this is NIL, then the whole - ; mechanism for caching dfun - ; constructors is turned off. The only - ; time that makes sense is when - ; debugging LAP code. - - -(defun show-dfun-constructors nil (format t "~&DFUN constructor caching is ~A." (if - *enable-dfun-constructor-caching* - "enabled" - "disabled")) - (dolist (generator-entry *dfun-constructors*) - (dolist (args-entry (cdr generator-entry)) - (format t "~&~S ~S" (cons (car generator-entry) - (caar args-entry)) - (caddr args-entry))))) - -(defun get-dfun-constructor (generator &rest args) - (let* ((generator-entry (assq generator *dfun-constructors*)) - (args-entry (assoc args (cdr generator-entry) - :test - #'equal))) - (if (null *enable-dfun-constructor-caching*) - (apply (symbol-function generator) - args) - (or (cadr args-entry) - (let ((new (apply (symbol-function generator) - args))) - (if generator-entry - (push (list (copy-list args) - new nil) - (cdr generator-entry)) - (push (list generator (list (copy-list args) - new nil)) - *dfun-constructors*)) - new))))) - -(defun load-precompiled-dfun-constructor (generator args system constructor) - (let* ((generator-entry (assq generator *dfun-constructors*)) - (args-entry (assoc args (cdr generator-entry) - :test - #'equal))) - (unless args-entry - (if generator-entry - (push (list args constructor system) - (cdr generator-entry)) - (push (list generator (list args constructor system)) - *dfun-constructors*))))) - -(defmacro - precompile-dfun-constructors - (&optional system) - (let - ((*precompiling-lap* t)) - `(progn - ,@(gathering1 (collecting) - (dolist (generator-entry *dfun-constructors*) - (dolist (args-entry (cdr generator-entry)) - (when (or (null (caddr args-entry)) - (eq (caddr args-entry) - system)) - (multiple-value-bind (closure-variables arguments iregs vregs tregs lap) - (apply (symbol-function (car generator-entry)) - (car args-entry)) - (gather1 (make-top-level-form `(precompile-dfun-constructor - ,(car generator-entry)) - '(load) - `(load-precompiled-dfun-constructor - ',(car generator-entry) - ',(car args-entry) - ',system - (precompile-lap-closure-generator ,closure-variables - ,arguments - ,iregs - ,vregs - ,tregs - ,lap)))))))))))) - -(defun make-initial-dfun (generic-function) - #'(lambda (&rest args) - (initial-dfun args generic-function))) - - -;;; When all the methods of a generic function are automatically generated reader or writer methods -;;; a number of special optimizations are possible. These are important because of the large number -;;; of generic functions of this type. There are a number of cases: ONE-CLASS-ACCESSOR In this case, -;;; the accessor generic function has only been called with one class of argument. There is no -;;; cache vector, the wrapper of the one class, and the slot index are stored directly as closure -;;; variables of the discriminating function. This case can convert to either of the next kind. -;;; TWO-CLASS-ACCESSOR Like above, but two classes. This is common enough to do specially. There is -;;; no cache vector. The two classes are stored a separate closure variables. ONE-INDEX-ACCESSOR In -;;; this case, the accessor generic function has seen more than one class of argument, but the index -;;; of the slot is the same for all the classes that have been seen. A cache vector is used to -;;; store the wrappers that have been seen, the slot index is stored directly as a closure variable -;;; of the discriminating function. This case can convert to the next kind. N-N-ACCESSOR This is -;;; the most general case. In this case, the accessor generic function has seen more than one class -;;; of argument and more than one slot index. A cache vector stores the wrappers and corresponding -;;; slot indexes. Because each cache line is more than one element long, a cache lock count is -;;; used. ONE-CLASS-ACCESSOR - - -(defun update-to-one-class-readers-dfun (generic-function wrapper index) - (let ((constructor (get-dfun-constructor 'emit-one-class-reader (consp index)))) - (notice-dfun-state generic-function `(one-class readers ,(consp index))) - ; *** - (update-dfun generic-function (funcall constructor wrapper index - #'(lambda (arg) - (declare (clos-fast-call)) - (one-class-readers-miss arg - generic-function index wrapper)))))) - -(defun update-to-one-class-writers-dfun (generic-function wrapper index) - (let ((constructor (get-dfun-constructor 'emit-one-class-writer (consp index)))) - (notice-dfun-state generic-function `(one-class writers ,(consp index))) - ; *** - (update-dfun generic-function (funcall constructor wrapper index - #'(lambda (new-value arg) - (declare (clos-fast-call)) - (one-class-writers-miss new-value arg - generic-function index wrapper)))))) - -(defun one-class-readers-miss (arg generic-function index wrapper) - (accessor-miss generic-function 'one-class 'reader nil arg index wrapper nil nil nil)) - -(defun one-class-writers-miss (new arg generic-function index wrapper) - (accessor-miss generic-function 'one-class 'writer new arg index wrapper nil nil nil)) - - -;;; TWO-CLASS-ACCESSOR - - -(defun update-to-two-class-readers-dfun (generic-function wrapper-0 wrapper-1 index) - (let ((constructor (get-dfun-constructor 'emit-two-class-reader (consp index)))) - (notice-dfun-state generic-function `(two-class readers ,(consp index))) - ; *** - (update-dfun generic-function (funcall constructor wrapper-0 wrapper-1 index - #'(lambda (arg) - (declare (clos-fast-call)) - (two-class-readers-miss arg - generic-function index wrapper-0 - wrapper-1)))))) - -(defun update-to-two-class-writers-dfun (generic-function wrapper-0 wrapper-1 index) - (let ((constructor (get-dfun-constructor 'emit-two-class-writer (consp index)))) - (notice-dfun-state generic-function `(two-class writers ,(consp index))) - ; *** - (update-dfun generic-function (funcall constructor wrapper-0 wrapper-1 index - #'(lambda (new-value arg) - (declare (clos-fast-call)) - (two-class-writers-miss new-value arg - generic-function index wrapper-0 - wrapper-1)))))) - -(defun two-class-readers-miss (arg generic-function index w0 w1) - (accessor-miss generic-function 'two-class 'reader nil arg index w0 w1 nil nil)) - -(defun two-class-writers-miss (new arg generic-function index w0 w1) - (accessor-miss generic-function 'two-class 'writer new arg index w0 w1 nil nil)) - - -;;; std accessors same index dfun - - -(defun update-to-one-index-readers-dfun (generic-function index &optional field cache) - (unless field - (setq field (wrapper-field 'number))) - (let ((constructor (get-dfun-constructor 'emit-one-index-readers (consp index)))) - (multiple-value-bind (mask size) - (compute-cache-parameters 1 nil (or cache 4)) - (unless cache - (setq cache (get-cache size))) - (notice-dfun-state generic-function `(one-index readers ,(consp index))) - ; *** - (update-dfun generic-function (funcall constructor field cache mask size index - #'(lambda (arg) - (declare (clos-fast-call)) - (one-index-readers-miss arg - generic-function index field cache - ))) - cache)))) - -(defun update-to-one-index-writers-dfun (generic-function index &optional field cache) - (unless field - (setq field (wrapper-field 'number))) - (let ((constructor (get-dfun-constructor 'emit-one-index-writers (consp index)))) - (multiple-value-bind (mask size) - (compute-cache-parameters 1 nil (or cache 4)) - (unless cache - (setq cache (get-cache size))) - (notice-dfun-state generic-function `(one-index writers ,(consp index))) - ; *** - (update-dfun generic-function (funcall constructor field cache mask size index - #'(lambda (new-value arg) - (declare (clos-fast-call)) - (one-index-writers-miss new-value arg - generic-function index field cache - ))) - cache)))) - -(defun one-index-readers-miss (arg gf index field cache) - (accessor-miss gf 'one-index 'reader nil arg index nil nil field cache)) - -(defun one-index-writers-miss (new arg gf index field cache) - (accessor-miss gf 'one-index 'writer new arg index nil nil field cache)) - -(defun one-index-limit-fn (nlines) - (default-limit-fn nlines)) - -(defun update-to-n-n-readers-dfun (generic-function &optional field cache) - (unless field - (setq field (wrapper-field 'number))) - (let ((constructor (get-dfun-constructor 'emit-n-n-readers))) - (multiple-value-bind (mask size) - (compute-cache-parameters 1 t (or cache 2)) - (unless cache - (setq cache (get-cache size))) - (notice-dfun-state generic-function `(n-n readers)) - ; *** - (update-dfun generic-function (funcall constructor field cache mask size - #'(lambda (arg) - (declare (clos-fast-call)) - (n-n-readers-miss arg generic-function - field cache))) - cache)))) - -(defun update-to-n-n-writers-dfun (generic-function &optional field cache) - (unless field - (setq field (wrapper-field 'number))) - (let ((constructor (get-dfun-constructor 'emit-n-n-writers))) - (multiple-value-bind (mask size) - (compute-cache-parameters 1 t (or cache 2)) - (unless cache - (setq cache (get-cache size))) - (notice-dfun-state generic-function `(n-n writers)) - ; *** - (update-dfun generic-function (funcall constructor field cache mask size - #'(lambda (new arg) - (declare (clos-fast-call)) - (n-n-writers-miss new arg - generic-function field cache))) - cache)))) - -(defun n-n-readers-miss (arg gf field cache) - (accessor-miss gf 'n-n 'reader nil arg nil nil nil field cache)) - -(defun n-n-writers-miss (new arg gf field cache) - (accessor-miss gf 'n-n 'writer new arg nil nil nil field cache)) - -(defun n-n-accessors-limit-fn (nlines) - (default-limit-fn nlines)) - - -;;; - - -(defun update-to-checking-dfun (generic-function function &optional field cache) - (unless field - (setq field (wrapper-field 'number))) - (let* ((arg-info (gf-arg-info generic-function)) - (metatypes (arg-info-metatypes arg-info)) - (applyp (arg-info-applyp arg-info)) - (nkeys (arg-info-nkeys arg-info))) - (if (every #'(lambda (mt) - (eq mt 't)) - metatypes) - (progn (notice-dfun-state generic-function `(default-method-only)) - ; *** - (update-dfun generic-function function)) - (multiple-value-bind (mask size) - (compute-cache-parameters nkeys nil (or cache 2)) - (unless cache - (setq cache (get-cache size))) - (let ((constructor (get-dfun-constructor 'emit-checking metatypes applyp))) - (notice-dfun-state generic-function '(checking) - nkeys nil) - ; **** - (update-dfun generic-function - (funcall constructor field cache mask size function - #'(lambda (&rest args) - (declare (clos-fast-call)) - (checking-miss generic-function args function field - cache))) - cache)))))) - -(defun checking-limit-fn (nlines) - (default-limit-fn nlines)) - - -;;; - - -(defun update-to-caching-dfun (generic-function &optional field cache) - (unless field - (setq field (wrapper-field 'number))) - (let* ((arg-info (gf-arg-info generic-function)) - (metatypes (arg-info-metatypes arg-info)) - (applyp (arg-info-applyp arg-info)) - (nkeys (arg-info-nkeys arg-info)) - (constructor (get-dfun-constructor 'emit-caching metatypes applyp))) - (multiple-value-bind (mask size) - (compute-cache-parameters nkeys t (or cache 2)) - (unless cache - (setq cache (get-cache size))) - (notice-dfun-state generic-function '(caching) - nkeys t) - ; **** - (update-dfun generic-function (funcall constructor field cache mask size - #'(lambda (&rest args) - (declare (clos-fast-call)) - (caching-miss generic-function args - field cache))) - cache)))) - -(defun caching-limit-fn (nlines) - (default-limit-fn nlines)) - - -;;; The dynamically adaptive method lookup algorithm is implemented is implemented as a kind of -;;; state machine. The kinds of discriminating function is the state, the various kinds of reasons -;;; for a cache miss are the state transitions. The code which implements the transitions is all in -;;; the miss handlers for each kind of dfun. Those appear here. Note that within the states that -;;; cache, there are dfun updates which simply select a new cache or cache field. Those are not -;;; considered as state transitions. - - -(defun initial-dfun (args generic-function) - (protect-cache-miss-code generic-function args - (multiple-value-bind (wrappers invalidp nfunction applicable) - (cache-miss-values generic-function args) - (multiple-value-bind (ntype nindex) - (accessor-miss-values generic-function applicable args) - (cond ((null applicable) - (apply #'no-applicable-method generic-function args)) - (invalidp (apply nfunction args)) - ((and ntype nindex) - (ecase ntype - (reader (update-to-one-class-readers-dfun generic-function wrappers - nindex)) - (writer (update-to-one-class-writers-dfun generic-function wrappers - nindex))) - (apply nfunction args)) - (ntype (apply nfunction args)) - (t (update-to-checking-dfun generic-function nfunction) - (apply nfunction args))))))) - -(defun - accessor-miss - (gf ostate otype new object oindex ow0 ow1 field cache) - (declare (ignore ow1)) - (let ((args (ecase otype ; The congruence rules assure - (reader (list object)) ; us that this is safe despite - (writer (list new object))))) - ; not knowing the new type yet. - (protect-cache-miss-code - gf args - (multiple-value-bind (wrappers invalidp nfunction applicable) - (cache-miss-values gf args) - (multiple-value-bind (ntype nindex) - (accessor-miss-values gf applicable args) - - ;; The following lexical functions change the state of the dfun to that which is their - ;; name. They accept arguments which are the parameters of the new state, and get other - ;; information from the lexical variables bound above. - (flet ((two-class (index w0 w1) - (when (zerop (random 2)) - (psetf w0 w1 w1 w0)) - (ecase ntype - (reader (update-to-two-class-readers-dfun gf w0 w1 index)) - (writer (update-to-two-class-writers-dfun gf w0 w1 index)))) - (one-index (index &optional field cache) - (ecase ntype - (reader (update-to-one-index-readers-dfun gf index field cache)) - (writer (update-to-one-index-writers-dfun gf index field cache)))) - (n-n (&optional field cache) - (ecase ntype - (reader (update-to-n-n-readers-dfun gf field cache)) - (writer (update-to-n-n-writers-dfun gf field cache)))) - (checking nil (update-to-checking-dfun gf nfunction)) - - ;; - (do-fill (valuep limit-fn update-fn) - (multiple-value-bind (nfield ncache) - (fill-cache field cache 1 valuep limit-fn wrappers nindex) - (unless (and (= nfield field) - (eq ncache cache)) - (funcall update-fn nfield ncache))))) - (cond ((null nfunction) - (apply #'no-applicable-method gf args)) - ((null ntype) - (checking) - (apply nfunction args)) - ((or invalidp (null nindex)) - (apply nfunction args)) - ((not (or (std-instance-p object) - (fsc-instance-p object))) - (checking) - (apply nfunction args)) - ((neq ntype otype) - (checking) - (apply nfunction args)) - (t (ecase ostate - (one-class (if (eql nindex oindex) - (two-class nindex ow0 wrappers) - (n-n))) - (two-class (if (eql nindex oindex) - (one-index nindex) - (n-n))) - (one-index (if (eql nindex oindex) - (do-fill nil #'one-index-limit-fn - #'(lambda (nfield ncache) - (one-index nindex nfield ncache))) - (n-n))) - (n-n (unless (consp nindex) - (do-fill t #'n-n-accessors-limit-fn #'n-n)))) - (apply nfunction args))))))))) - -(defun checking-miss (generic-function args ofunction field cache) - (protect-cache-miss-code generic-function args - (let* ((arg-info (gf-arg-info generic-function)) - (nkeys (arg-info-nkeys arg-info))) - (multiple-value-bind (wrappers invalidp nfunction) - (cache-miss-values generic-function args) - (cond (invalidp (apply nfunction args)) - ((null nfunction) - (apply #'no-applicable-method generic-function args)) - ((eq ofunction nfunction) - (multiple-value-bind (nfield ncache) - (fill-cache field cache nkeys nil #'checking-limit-fn wrappers nil) - (unless (and (= nfield field) - (eq ncache cache)) - (update-to-checking-dfun generic-function nfunction nfield - ncache))) - (apply nfunction args)) - (t (update-to-caching-dfun generic-function) - (apply nfunction args))))))) - -(defun caching-miss (generic-function args ofield ocache) - (protect-cache-miss-code generic-function args - (let* ((arg-info (gf-arg-info generic-function)) - (nkeys (arg-info-nkeys arg-info))) - (multiple-value-bind (wrappers invalidp function) - (cache-miss-values generic-function args) - (cond (invalidp (apply function args)) - ((null function) - (apply #'no-applicable-method generic-function args)) - (t (multiple-value-bind (nfield ncache) - (fill-cache ofield ocache nkeys t #'caching-limit-fn wrappers - function) - (unless (and (= nfield ofield) - (eq ncache ocache)) - (update-to-caching-dfun generic-function nfield ncache))) - (apply function args))))))) - - -;;; Some useful support functions which are shared by the implementations of the different kinds of -;;; dfuns. Given a generic function and a set of arguments to that generic function, returns a mess -;;; of values. Is a single wrapper if the generic function has only one key, that is -;;; arg-info-nkeys of the arg-info is 1. Otherwise a list of the wrappers of the specialized -;;; arguments to the generic function. Note that all these wrappers are valid. This function does -;;; invalid wrapper traps when it finds an invalid wrapper and then returns the new, valid wrapper. -;;; True if any of the specialized arguments had an invalid wrapper, false otherwise. -;;; The compiled effective method function for this set of arguments. Gotten from -;;; get-secondary-dispatch-function so effective-method-function caching is in effect, and that is -;;; important since it is what keeps us in checking dfun state when possible. READER or -;;; WRITER when the only method that would be run is a standard reader or writer method. To be -;;; specific, the value is READER when the method combination is eq to -;;; *standard-method-combination*; there are no applicable :before, :after or :around methods; and -;;; the most specific primary method is a standard reader method. If is READER -;;; or WRITER, and the slot accessed is an :instance slot, this is the index number of that slot in -;;; the object argument. Sorted list of applicable methods. - - -(defun cache-miss-values (generic-function args) - (declare (values wrappers invalidp function applicable)) - (multiple-value-bind (function appl arg-info) - (get-secondary-dispatch-function generic-function args) - (multiple-value-bind (wrappers invalidp) - (get-wrappers generic-function args arg-info) - (values wrappers invalidp (cache-miss-values-function generic-function function) - appl)))) - -(defun get-wrappers (generic-function args &optional arg-info) - (let* ((invalidp nil) - (wrappers nil) - (arg-info (or arg-info (gf-arg-info generic-function))) - (metatypes (arg-info-metatypes arg-info)) - (nkeys (arg-info-nkeys arg-info))) - (flet ((get-valid-wrapper (x) - (let ((wrapper (wrapper-of x))) - (cond ((invalid-wrapper-p wrapper) - (setq invalidp t) - (check-wrapper-validity x)) - (t wrapper))))) - (setq wrappers (block collect-wrappers - (gathering1 (collecting) - (iterate ((arg (list-elements args)) - (metatype (list-elements metatypes))) - (when (neq metatype 't) - (if (= nkeys 1) - (return-from collect-wrappers - (get-valid-wrapper arg)) - (gather1 (get-valid-wrapper arg)))))))) - (values wrappers invalidp)))) - -(defun cache-miss-values-function (generic-function function) - (if (eq *generate-random-code-segments* generic-function) - (progn (setq *generate-random-code-segments* nil) - #'(lambda (&rest args) - (declare (ignore args)) - nil)) - function)) - -(defun generate-random-code-segments (generic-function) - (dolist (arglist (generate-arglists generic-function)) - (let ((*generate-random-code-segments* generic-function)) - (apply generic-function arglist)))) - -(defun generate-arglists (generic-function) - - ;; Generate arglists using class-prototypes and eql-specializer-objects to get all the - ;; "different" values that could be returned by get-secondary-dispatch-function for this - ;; generic-function. - (let ((methods (generic-function-methods generic-function))) - (mapcar #'(lambda (class-list) - (mapcar #'(lambda (specializer) - (if (eql-specializer-p specializer) - (eql-specializer-object specializer) - (class-prototype specializer))) - (method-specializers (find class-list methods :test - #'(lambda (class-list method) - (every - #' - specializer-applicable-using-class-p - (method-specializers - method) - class-list)))))) - (generate-arglist-classes generic-function)))) - -(defun generate-arglist-classes (generic-function) - (let ((methods (generic-function-methods generic-function))) - (declare (ignore methods)) - - ;; Finish this sometime. - nil)) - -(defun accessor-miss-values (generic-function applicable args) - (declare (values type index)) - (let ((type (and (eq (generic-function-method-combination generic-function) - *standard-method-combination*) - (every #'(lambda (m) - (null (method-qualifiers m))) - applicable) - (let ((method (car applicable))) - (cond ((standard-reader-method-p method) - (and (optimize-slot-value-by-class-p (class-of (car args)) - (accessor-method-slot-name method) - nil) - 'reader)) - ((standard-writer-method-p method) - (and (optimize-slot-value-by-class-p (class-of (cadr args)) - (accessor-method-slot-name method) - t) - 'writer)) - (t nil)))))) - (values type (and type (let ((wrapper (wrapper-of (case type - (reader (car args)) - (writer (cadr args))))) - (slot-name (accessor-method-slot-name (car applicable)))) - (or (instance-slot-index wrapper slot-name) - (assq slot-name (wrapper-class-slots wrapper)))))))) diff --git a/obsolete/clos/2.0/dlap.lisp b/obsolete/clos/2.0/dlap.lisp deleted file mode 100644 index e50f0bb8..00000000 --- a/obsolete/clos/2.0/dlap.lisp +++ /dev/null @@ -1,492 +0,0 @@ -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- - -;;; Copyright (c) 1991 by Venue - -(in-package "CLOS") - -;;; - -(defun emit-one-class-reader (class-slot-p) - (emit-reader/writer :reader 1 class-slot-p)) - -(defun emit-one-class-writer (class-slot-p) - (emit-reader/writer :writer 1 class-slot-p)) - -(defun emit-two-class-reader (class-slot-p) - (emit-reader/writer :reader 2 class-slot-p)) - -(defun emit-two-class-writer (class-slot-p) - (emit-reader/writer :writer 2 class-slot-p)) - -(defun emit-reader/writer (reader/writer 1-or-2-class class-slot-p) - (let ((instance nil) - (arglist nil) - (closure-variables nil) - (field (wrapper-field 'number))) - ; we need some field to do the fast - ; obsolete check - (ecase reader/writer - (:reader (setq instance (dfun-arg-symbol 0) - arglist - (list instance))) - (:writer (setq instance (dfun-arg-symbol 1) - arglist - (list (dfun-arg-symbol 0) - instance)))) - (ecase 1-or-2-class - (1 (setq closure-variables '(wrapper-0 index miss-fn))) - (2 (setq closure-variables '(wrapper-0 wrapper-1 index miss-fn)))) - (generating-lap - closure-variables arglist - (with-lap-registers ((inst t) - ; reg for the instance - (wrapper vector) - ; reg for the wrapper - (cache-no index)) - ; reg for the cache no - (let ((index cache-no) - ; This register is used for different - ; values at different times. - (slots (and (null class-slot-p) - (allocate-register 'vector))) - (csv (and class-slot-p (allocate-register t)))) - (prog1 (flatten-lap (opcode :move (operand :arg instance) - inst) - ; get the instance - (opcode :std-instance-p inst 'std-instance) - ; if not either std-inst - (opcode :fsc-instance-p inst 'fsc-instance) - ; or fsc-instance then - (opcode :go 'trap) - ; we lose - (opcode :label 'fsc-instance) - (opcode :move (operand :fsc-wrapper inst) - wrapper) - (and slots (opcode :move (operand :fsc-slots inst) - slots)) - (opcode :go 'have-wrapper) - (opcode :label 'std-instance) - (opcode :move (operand :std-wrapper inst) - wrapper) - (and slots (opcode :move (operand :std-slots inst) - slots)) - (opcode :label 'have-wrapper) - (opcode :move (operand :cref wrapper field) - cache-no) - (opcode :izerop cache-no 'trap) - ; obsolete wrapper? - (ecase 1-or-2-class - (1 (emit-check-1-class-wrapper wrapper 'wrapper-0 - 'trap)) - (2 (emit-check-2-class-wrapper wrapper 'wrapper-0 - 'wrapper-1 - 'trap))) - (if class-slot-p - (flatten-lap (opcode :move (operand :cvar 'index) - csv) - (ecase reader/writer - (:reader (emit-get-class-slot csv 'trap inst)) - (:writer (emit-set-class-slot csv (car arglist) - inst)))) - (flatten-lap (opcode :move (operand :cvar 'index) - index) - (ecase reader/writer - (:reader (emit-get-slot slots index - 'trap inst)) - (:writer (emit-set-slot slots index - (car arglist) - inst))))) - (opcode :label 'trap) - (emit-miss 'miss-fn)) - (when slots (deallocate-register slots)) - (when csv (deallocate-register csv)))))))) - -(defun emit-one-index-readers (class-slot-p) - (let ((arglist (list (dfun-arg-symbol 0)))) - (generating-lap '(field cache mask size index miss-fn) - arglist - (with-lap-registers ((slots vector)) - (emit-dlap arglist '(standard-instance) - 'trap - (with-lap-registers ((index index)) - (flatten-lap (opcode :move (operand :cvar 'index) - index) - (if class-slot-p - (emit-get-class-slot index 'trap slots) - (emit-get-slot slots index 'trap)))) - (flatten-lap (opcode :label 'trap) - (emit-miss 'miss-fn)) - nil - (and (null class-slot-p) - (list slots))))))) - -(defun emit-one-index-writers (class-slot-p) - (let ((arglist (list (dfun-arg-symbol 0) - (dfun-arg-symbol 1)))) - (generating-lap '(field cache mask size index miss-fn) - arglist - (with-lap-registers ((slots vector)) - (emit-dlap arglist '(t standard-instance) - 'trap - (with-lap-registers ((index index)) - (flatten-lap (opcode :move (operand :cvar 'index) - index) - (if class-slot-p - (emit-set-class-slot index (dfun-arg-symbol 0) - slots) - (emit-set-slot slots index (dfun-arg-symbol 0))))) - (flatten-lap (opcode :label 'trap) - (emit-miss 'miss-fn)) - nil - (and (null class-slot-p) - (list nil slots))))))) - -(defun emit-n-n-readers nil (let ((arglist (list (dfun-arg-symbol 0)))) - (generating-lap '(field cache mask size miss-fn) - arglist - (with-lap-registers ((slots vector) - (index index)) - (emit-dlap arglist '(standard-instance) - 'trap - (emit-get-slot slots index 'trap) - (flatten-lap (opcode :label 'trap) - (emit-miss 'miss-fn)) - index - (list slots)))))) - -(defun emit-n-n-writers nil (let ((arglist (list (dfun-arg-symbol 0) - (dfun-arg-symbol 1)))) - (generating-lap '(field cache mask size miss-fn) - arglist - (with-lap-registers ((slots vector) - (index index)) - (flatten-lap (emit-dlap arglist '(t standard-instance) - 'trap - (emit-set-slot slots index - (dfun-arg-symbol 0)) - (flatten-lap (opcode :label - 'trap) - (emit-miss 'miss-fn)) - index - (list nil slots))))))) - -(defun emit-checking (metatypes applyp) - (let ((dlap-lambda-list (make-dlap-lambda-list metatypes applyp))) - (generating-lap '(field cache mask size function miss-fn) - dlap-lambda-list - (emit-dlap (remove '&rest dlap-lambda-list) - metatypes - 'trap - (with-lap-registers (#'t) - (flatten-lap (opcode :move (operand :cvar 'function) - function) - (opcode :jmp function))) - (with-lap-registers ((miss-function t)) - (flatten-lap (opcode :label 'trap) - (opcode :move (operand :cvar 'miss-fn) - miss-function) - (opcode :jmp miss-function))) - nil)))) - -(defun emit-caching (metatypes applyp) - (let ((dlap-lambda-list (make-dlap-lambda-list metatypes applyp))) - (generating-lap '(field cache mask size miss-fn) - dlap-lambda-list - (with-lap-registers (#'t) - (emit-dlap (remove '&rest dlap-lambda-list) - metatypes - 'trap - (flatten-lap (opcode :jmp function)) - (with-lap-registers ((miss-function t)) - (flatten-lap (opcode :label 'trap) - (opcode :move (operand :cvar 'miss-fn) - miss-function) - (opcode :jmp miss-function))) - function))))) - -(defun emit-check-1-class-wrapper (wrapper cwrapper-0 miss-label) - (with-lap-registers ((cwrapper vector)) - (flatten-lap (opcode :move (operand :cvar cwrapper-0) - cwrapper) - (opcode :neq wrapper cwrapper miss-label)))) - - ; wrappers not eq, trap - - -(defun emit-check-2-class-wrapper (wrapper cwrapper-0 cwrapper-1 miss-label) - (with-lap-registers ((cwrapper vector)) - (flatten-lap (opcode :move (operand :cvar cwrapper-0) - cwrapper) - ; This is an OR. Isn't - (opcode :eq wrapper cwrapper 'hit-internal) - ; assembly code fun - (opcode :move (operand :cvar cwrapper-1) - cwrapper) - ; - (opcode :neq wrapper cwrapper miss-label) - ; - (opcode :label 'hit-internal)))) - -(defun emit-get-slot (slots index trap-label &optional temp) - (let ((slot-unbound (operand :constant *slot-unbound*))) - (with-lap-registers ((val t :reuse temp)) - (flatten-lap (opcode :move (operand :iref slots index) - val) - ; get slot value - (opcode :eq val slot-unbound trap-label) - ; is the slot unbound? - (opcode :return val))))) - - ; return the slot value - - -(defun emit-set-slot (slots index new-value-arg &optional temp) - (with-lap-registers ((new-val t :reuse temp)) - (flatten-lap (opcode :move (operand :arg new-value-arg) - new-val) - ; get new value into a reg - (opcode :move new-val (operand :iref slots index)) - ; set slot value - (opcode :return new-val)))) - -(defun emit-get-class-slot (index trap-label &optional temp) - (let ((slot-unbound (operand :constant *slot-unbound*))) - (with-lap-registers ((val t :reuse temp)) - (flatten-lap (opcode :move (operand :cdr index) - val) - (opcode :eq val slot-unbound trap-label) - (opcode :return val))))) - -(defun emit-set-class-slot (index new-value-arg &optional temp) - (with-lap-registers ((new-val t :reuse temp)) - (flatten-lap (opcode :move (operand :arg new-value-arg) - new-val) - (opcode :move new-val (operand :cdr index)) - (opcode :return new-val)))) - -(defun emit-miss (miss-fn) - (with-lap-registers ((miss-fn-reg t)) - (flatten-lap (opcode :move (operand :cvar miss-fn) - miss-fn-reg) - ; get the miss function - (opcode :jmp miss-fn-reg)))) - - ; and call it - - -(defun dlap-wrappers (metatypes) - (mapcar #'(lambda (x) - (and (neq x 't) - (allocate-register 'vector))) - metatypes)) - -(defun dlap-wrapper-moves (wrappers args metatypes miss-label slot-regs) - (gathering1 (collecting) - (iterate ((mt (list-elements metatypes)) - (arg (list-elements args)) - (wrapper (list-elements wrappers)) - (i (interval :from 0))) - (when wrapper - (gather1 (emit-fetch-wrapper mt arg wrapper miss-label (nth i slot-regs))))) - )) - -(defun emit-dlap (args metatypes miss-label hit miss value-reg &optional slot-regs) - (let* ((wrappers (dlap-wrappers metatypes)) - (nwrappers (remove nil wrappers)) - (wrapper-moves (dlap-wrapper-moves wrappers args metatypes miss-label slot-regs))) - (prog1 (emit-dlap-internal nwrappers wrapper-moves hit miss miss-label value-reg) - (mapc #'deallocate-register nwrappers)))) - -(defun emit-dlap-internal (wrapper-regs wrapper-moves hit miss miss-label value-reg) - (cond ((cdr wrapper-regs) - (emit-greater-than-1-dlap wrapper-regs wrapper-moves hit miss miss-label value-reg)) - ((null value-reg) - (emit-1-nil-dlap (car wrapper-regs) - (car wrapper-moves) - hit miss miss-label)) - (t (emit-1-t-dlap (car wrapper-regs) - (car wrapper-moves) - hit miss miss-label value-reg)))) - -(defun emit-1-nil-dlap (wrapper wrapper-move hit miss miss-label) - (with-lap-registers ((location index) - (primary index) - (cache vector)) - (flatten-lap wrapper-move (opcode :move (operand :cvar 'cache) - cache) - (with-lap-registers ((wrapper-cache-no index)) - (flatten-lap (emit-1-wrapper-compute-primary-cache-location wrapper - primary wrapper-cache-no) - (opcode :move primary location) - (emit-check-1-wrapper-in-cache cache location wrapper hit) - ; inline hit code - (opcode :izerop wrapper-cache-no miss-label))) - (with-lap-registers ((size index)) - (flatten-lap (opcode :move (operand :cvar 'size) - size) - (opcode :label 'loop) - (opcode :move (operand :i1+ location) - location) - (opcode :fix= location primary miss-label) - (opcode :fix= location size 'set-location-to-min) - (opcode :label 'continue) - (emit-check-1-wrapper-in-cache cache location wrapper hit) - (opcode :go 'loop) - (opcode :label 'set-location-to-min) - (opcode :izerop primary miss-label) - (opcode :move (operand :constant (index-value->index 0)) - location) - (opcode :go 'continue))) - miss))) - - -;;; The function below implements CACHE-LOCK-COUNT as the first entry in a cache (svref cache 0). -;;; This should probably be abstracted. - - -(defun emit-1-t-dlap (wrapper wrapper-move hit miss miss-label value) - (with-lap-registers ((location index) - (primary index) - (cache vector) - (initial-lock-count t)) - (flatten-lap wrapper-move (opcode :move (operand :cvar 'cache) - cache) - (with-lap-registers ((wrapper-cache-no index)) - (flatten-lap (emit-1-wrapper-compute-primary-cache-location wrapper - primary wrapper-cache-no) - (opcode :move primary location) - (opcode :move (operand :cref cache 0) - initial-lock-count) - ; get lock-count - (emit-check-cache-entry cache location wrapper 'hit-internal) - (opcode :izerop wrapper-cache-no miss-label))) - ; check for obsolescence - (with-lap-registers ((size index)) - (flatten-lap (opcode :move (operand :cvar 'size) - size) - (opcode :label 'loop) - (opcode :move (operand :i1+ location) - location) - (opcode :move (operand :i1+ location) - location) - (opcode :label 'continue) - (opcode :fix= location primary miss-label) - (opcode :fix= location size 'set-location-to-min) - (emit-check-cache-entry cache location wrapper 'hit-internal) - (opcode :go 'loop) - (opcode :label 'set-location-to-min) - (opcode :izerop primary miss-label) - (opcode :move (operand :constant (index-value->index 2)) - location) - (opcode :go 'continue))) - (opcode :label 'hit-internal) - (opcode :move (operand :i1+ location) - location) - ; position for getting value - (opcode :move (emit-cache-ref cache location) - value) - (emit-lock-count-test initial-lock-count cache 'hit) - miss - (opcode :label 'hit) - hit))) - -(defun emit-greater-than-1-dlap (wrappers wrapper-moves hit miss miss-label value) - (let ((cache-line-size (compute-line-size (+ (length wrappers) - (if value - 1 - 0))))) - (with-lap-registers ((location index) - (primary index) - (cache vector) - (initial-lock-count t) - (next-location index) - (line-size index)) - ; Line size holds a constant that can - ; be folded in if there was a way to - ; add a constant to an index register - (flatten-lap (apply #'flatten-lap wrapper-moves) - (opcode :move (operand :constant cache-line-size) - line-size) - (opcode :move (operand :cvar 'cache) - cache) - (emit-n-wrapper-compute-primary-cache-location wrappers primary miss-label) - (opcode :move primary location) - (opcode :move location next-location) - (opcode :move (operand :cref cache 0) - initial-lock-count) - ; get the lock-count - (with-lap-registers ((size index)) - (flatten-lap (opcode :move (operand :cvar 'size) - size) - (opcode :label 'continue) - (opcode :move (operand :i+ location line-size) - next-location) - (emit-check-cache-line cache location wrappers 'hit) - (emit-adjust-location location next-location primary size - 'continue miss-label) - (opcode :label 'hit) - (and value (opcode :move (emit-cache-ref cache location) - value)) - (emit-lock-count-test initial-lock-count cache 'hit-internal) - miss - (opcode :label 'hit-internal) - hit)))))) - - -;;; Cache related lap code - - -(defun emit-check-1-wrapper-in-cache (cache location wrapper hit-code) - (let ((exit-emit-check-1-wrapper-in-cache (make-symbol "exit-emit-check-1-wrapper-in-cache"))) - (with-lap-registers ((cwrapper vector)) - (flatten-lap (opcode :move (emit-cache-ref cache location) - cwrapper) - (opcode :neq cwrapper wrapper exit-emit-check-1-wrapper-in-cache) - hit-code - (opcode :label exit-emit-check-1-wrapper-in-cache))))) - -(defun emit-check-cache-entry (cache location wrapper hit-label) - (with-lap-registers ((cwrapper vector)) - (flatten-lap (opcode :move (emit-cache-ref cache location) - cwrapper) - (opcode :eq cwrapper wrapper hit-label)))) - -(defun emit-check-cache-line (cache location wrappers hit-label) - (let ((checks (flatten-lap (gathering1 (flattening-lap) - (iterate ((wrapper (list-elements wrappers))) - (with-lap-registers ((cwrapper vector)) - (gather1 (flatten-lap (opcode :move - (emit-cache-ref - cache location) - cwrapper) - (opcode :neq cwrapper wrapper - - ' - exit-emit-check-cache-line - ) - (opcode :move (operand :i1+ - location) - location))))))))) - (flatten-lap checks (opcode :go hit-label) - (opcode :label 'exit-emit-check-cache-line)))) - -(defun emit-lock-count-test (initial-lock-count cache hit-label) - - ;; jumps to hit-label if cache-lock-count consistent, otherwise, continues - (with-lap-registers ((new-lock-count t)) - (flatten-lap (opcode :move (operand :cref cache 0) - new-lock-count) - ; get new cache-lock-count - (opcode :fix= new-lock-count initial-lock-count hit-label)))) - -(defun emit-adjust-location (location next-location primary size cont-label miss-label) - (flatten-lap (opcode :move next-location location) - (opcode :fix= location size 'at-end-of-cache) - (opcode :fix= location primary miss-label) - (opcode :go cont-label) - (opcode :label 'at-end-of-cache) - (opcode :fix= primary (operand :constant (index-value->index 1)) - miss-label) - (opcode :move (operand :constant (index-value->index 1)) - location) - (opcode :go cont-label))) diff --git a/obsolete/clos/2.0/env.lisp b/obsolete/clos/2.0/env.lisp deleted file mode 100644 index 15bf87f2..00000000 --- a/obsolete/clos/2.0/env.lisp +++ /dev/null @@ -1,200 +0,0 @@ -;;;-*-Mode:LISP; Package:(CLOS (LISP WALKER)); Base:10; Syntax:Common-lisp -*- -;;; -;;; ************************************************************************* -;;; Copyright (c) 1991 Venue -;;; All rights reserved. -;;; ************************************************************************* -;;; -;;; Basic environmental stuff. -;;; - -(in-package 'clos) - - - -;;; -;;; -;;; - -(defgeneric describe-object (object stream)) - - -(defmethod describe-object ((object standard-object) stream) - (let* ((class (class-of object)) - (slotds (slots-to-inspect class object)) - (max-slot-name-length 0) - (instance-slotds ()) - (class-slotds ()) - (other-slotds ())) - (flet ((adjust-slot-name-length (name) - (setq max-slot-name-length - (max max-slot-name-length - (length (the string (symbol-name name)))))) - (describe-slot (name value &optional (allocation () alloc-p)) - (if alloc-p - (format stream - "~% ~A ~S ~VT ~S" - name allocation (+ max-slot-name-length 7) value) - (format stream - "~% ~A~VT ~S" - name max-slot-name-length value)))) - ;; Figure out a good width for the slot-name column. - (dolist (slotd slotds) - (adjust-slot-name-length (slotd-name slotd)) - (case (slotd-allocation slotd) - (:instance (push slotd instance-slotds)) - (:class (push slotd class-slotds)) - (otherwise (push slotd other-slotds)))) - (setq max-slot-name-length (min (+ max-slot-name-length 3) 30)) - (format stream "~%~S is an instance of class ~S:" object class) - - (when instance-slotds - (format stream "~% The following slots have :INSTANCE allocation:") - (dolist (slotd (nreverse instance-slotds)) - (describe-slot (slotd-name slotd) - (slot-value-or-default object (slotd-name slotd))))) - - (when class-slotds - (format stream "~% The following slots have :CLASS allocation:") - (dolist (slotd (nreverse class-slotds)) - (describe-slot (slotd-name slotd) - (slot-value-or-default object (slotd-name slotd))))) - - (when other-slotds - (format stream "~% The following slots have allocation as shown:") - (dolist (slotd (nreverse other-slotds)) - (describe-slot (slotd-name slotd) - (slot-value-or-default object (slotd-name slotd)) - (slotd-allocation slotd)))) - (values)))) - -(defmethod slots-to-inspect ((class std-class) (object standard-object)) - (class-slots class)) - -;;; -;;; -;;; -(defmethod describe-object ((class class) stream) - (flet ((pretty-class (c) (or (class-name c) c))) - (macrolet ((ft (string &rest args) `(format stream ,string ,@args))) - (ft "~&~S is a class, it is an instance of ~S.~%" - class (pretty-class (class-of class))) - (let ((name (class-name class))) - (if name - (if (eq class (find-class name nil)) - (ft "Its proper name is ~S.~%" name) - (ft "Its name is ~S, but this is not a proper name.~%" name)) - (ft "It has no name (the name is NIL).~%"))) - (ft "The direct superclasses are: ~:S, and the direct~%~ - subclasses are: ~:S. The class precedence list is:~%~S~%~ - There are ~D methods specialized for this class." - (mapcar #'pretty-class (class-direct-superclasses class)) - (mapcar #'pretty-class (class-direct-subclasses class)) - (mapcar #'pretty-class (class-precedence-list class)) - (length (specializer-methods class)))))) - - - -;;; -;;; trace-method and untrace-method accept method specs as arguments. A -;;; method-spec should be a list like: -;;; ( qualifiers* (specializers*)) -;;; where should be either a symbol or a list -;;; of (SETF ). -;;; -;;; For example, to trace the method defined by: -;;; -;;; (defmethod foo ((x spaceship)) 'ss) -;;; -;;; You should say: -;;; -;;; (trace-method '(foo (spaceship))) -;;; -;;; You can also provide a method object in the place of the method -;;; spec, in which case that method object will be traced. -;;; -;;; For untrace-method, if an argument is given, that method is untraced. -;;; If no argument is given, all traced methods are untraced. -;;; -(defclass traced-method (method) - ((method :initarg :method) - (function :initarg :function - :reader method-function) - (generic-function :initform nil - :accessor method-generic-function))) - -(defmethod method-lambda-list ((m traced-method)) - (with-slots (method) m (method-lambda-list method))) - -(defmethod method-specializers ((m traced-method)) - (with-slots (method) m (method-specializers method))) - -(defmethod method-qualifiers ((m traced-method)) - (with-slots (method) m (method-qualifiers method))) - -(defmethod method-qualifiers ((m traced-method)) - (with-slots (method) m (method-qualifiers method))) - -(defmethod accessor-method-slot-name ((m traced-method)) - (with-slots (method) m (accessor-method-slot-name method))) - -(defvar *traced-methods* ()) - -(defun trace-method (spec &rest options) - (multiple-value-bind (gf omethod name) - (parse-method-or-spec spec) - (let* ((tfunction (trace-method-internal (method-function omethod) - name - options)) - (tmethod (make-instance 'traced-method - :method omethod - :function tfunction))) - (remove-method gf omethod) - (add-method gf tmethod) - (pushnew tmethod *traced-methods*) - tmethod))) - -(defun untrace-method (&optional spec) - (flet ((untrace-1 (m) - (let ((gf (method-generic-function m))) - (when gf - (remove-method gf m) - (add-method gf (slot-value m 'method)) - (setq *traced-methods* (remove m *traced-methods*)))))) - (if (not (null spec)) - (multiple-value-bind (gf method) - (parse-method-or-spec spec) - (declare (ignore gf)) - (if (memq method *traced-methods*) - (untrace-1 method) - (error "~S is not a traced method?" method))) - (dolist (m *traced-methods*) (untrace-1 m))))) - -(defun trace-method-internal (ofunction name options) - (eval `(untrace ,name)) - (setf (symbol-function name) ofunction) - (eval `(trace ,name ,@options)) - (symbol-function name)) - - - - -;(defun compile-method (spec) -; (multiple-value-bind (gf method name) -; (parse-method-or-spec spec) -; (declare (ignore gf)) -; (compile name (method-function method)) -; (setf (method-function method) (symbol-function name)))) - -(defmacro undefmethod (&rest args) - #+(or (not :lucid) :lcl3.0) - (declare (arglist name {method-qualifier}* specializers)) - `(undefmethod-1 ',args)) - -(defun undefmethod-1 (args) - (multiple-value-bind (gf method) - (parse-method-or-spec args) - (when (and gf method) - (remove-method gf method) - method))) - diff --git a/obsolete/clos/2.0/fin.lisp b/obsolete/clos/2.0/fin.lisp deleted file mode 100644 index c8de5102..00000000 --- a/obsolete/clos/2.0/fin.lisp +++ /dev/null @@ -1,235 +0,0 @@ -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- - - -;;; File converted on 26-Mar-91 10:33:34 from source fin -;;;. Original source {dsk}local>users>welch>lisp>clos>rev4>il-format>fin.;3 created 19-Feb-91 16:21:49 - -;;;. Copyright (c) 1991 by Venue - - - - -(in-package "CLOS") - -;;; Shadow, Export, Require, Use-package, and Import forms should follow here - - - - - - -;; - - - -;;; FUNCALLABLE INSTANCES - - - -;; - - - -;;; The first part of the file contains the implementation dependent code to implement funcallable -;;; instances. Each implementation must provide the following functions and macros: -;;; ALLOCATE-FUNCALLABLE-INSTANCE-1 () should create and return a new funcallable instance. The -;;; funcallable-instance-data slots must be initialized to NIL. This is called by -;;; allocate-funcallable-instance and by the bootstrapping code. FUNCALLABLE-INSTANCE-P (x) the -;;; obvious predicate. This should be an INLINE function. it must be funcallable, but it would be -;;; nice if it compiled open. SET-FUNCALLABLE-INSTANCE-FUNCTION (fin new-value) change the fin so -;;; that when it is funcalled, the new-value function is called. Note that it is legal for -;;; new-value to be copied before it is installed in the fin, specifically there is no accessor for -;;; a FIN's function so this function does not have to preserve the actual new value. The new-value -;;; argument can be any funcallable thing, a closure, lambda compiled code etc. This function must -;;; coerce those values if necessary. NOTE: new-value is almost always a compiled closure. This is -;;; the important case to optimize. FUNCALLABLE-INSTANCE-DATA-1 (fin data-name) should return the -;;; value of the data named data-name in the fin. data-name is one of the symbols in the list which -;;; is the value of funcallable-instance-data. Since data-name is almost always a quoted symbol and -;;; funcallable-instance-data is a constant, it is possible (and worthwhile) to optimize the -;;; computation of data-name's offset in the data part of the fin. This must be SETF'able. - - -(defconstant funcallable-instance-data '(wrapper slots) - "These are the 'data-slots' which funcallable instances have so that - the meta-class funcallable-standard-class can store class, and static - slots in them.") - -(defmacro funcallable-instance-data-position (data) - (if (and (consp data) - (eq (car data) - 'quote) - (boundp 'funcallable-instance-data)) - (or (position (cadr data) - funcallable-instance-data :test #'eq) - (progn (warn "Unknown funcallable-instance data: ~S." (cadr data)) - `(error "Unknown funcallable-instance data: ~S." ',(cadr data)))) - `(position ,data funcallable-instance-data :test #'eq))) - -(defun called-fin-without-function nil (error "Attempt to funcall a funcallable-instance without first~%~ - setting its funcallable-instance-function.")) - - -;;; In Xerox Common Lisp, a lexical closure is a pair of an environment and CCODEP. The environment -;;; is represented as a block. There is space in the top 8 bits of the pointers to the CCODE and -;;; the environment to use to mark the closure as being a FIN. To help the debugger figure out when -;;; it has found a FIN on the stack, we reserve the last element of the closure environment to use -;;; to point back to the actual fin. Note that there is code in xerox-low which lets us access the -;;; fields of compiled-closures and which defines the closure-overlay record. That code is there -;;; because there are some clients of it in that file. - - - -;; Don't be fooled. We actually allocate one bigger than this to have a place to store the -;; backpointer to the fin. -smL - - -(defconstant funcallable-instance-closure-size 15) - -(defvar *fin-env-type* (type-of (il:\\allocblock (1+ funcallable-instance-closure-size) - t))) - - -;; Well, Gregor may be too proud to hack xpointers, but bvm and I aren't. -smL - - -(defstruct fin-env-pointer (pointer nil :type il:fullxpointer)) - -(defun fin-env-fin (fin-env) - (fin-env-pointer-pointer (il:\\getbaseptr fin-env (* funcallable-instance-closure-size 2)))) - -(defun |set fin-env-fin| (fin-env new-value) - (il:\\rplptr fin-env (* funcallable-instance-closure-size 2) - (make-fin-env-pointer :pointer new-value)) - new-value) - -(defsetf fin-env-fin |set fin-env-fin|) - - -;; The finalization function that will clean up the backpointer from the fin-env to the fin. This -;; needs to be careful to not cons at all. This depends on there being no other finalization -;; function on compiled-closures, since there is only one finalization function per datatype. Too -;; bad. -smL - - -(defun finalize-fin (fin) - - ;; This could use the fn funcallable-instance-p, but if we get here we know that this is a - ;; closure, so we can skip that test. - (when (il:fetch (closure-overlay funcallable-instance-p) - il:of fin) - (let ((env (il:fetch (il:compiled-closure il:environment) - il:of fin))) - (when env - (setq env (il:\\getbaseptr env (* funcallable-instance-closure-size 2))) - (when (typep env 'fin-env-pointer) - (setf (fin-env-pointer-pointer env) - nil))))) - nil) - -(eval-when (load) - - ;; Install the above finalization function. - (when (fboundp 'finalize-fin) - (il:\\set.finalization.function 'il:compiled-closure 'finalize-fin))) - -(defun allocate-funcallable-instance-1 nil (let* ((env (il:\\allocblock (1+ - funcallable-instance-closure-size - ) - t)) - (fin (il:make-compiled-closure nil env))) - (setf (fin-env-fin env) - fin) - (il:replace (closure-overlay funcallable-instance-p) - il:of fin il:with 't) - (set-funcallable-instance-function - fin - #'(lambda (&rest ignore) - (declare (ignore ignore)) - (called-fin-without-function))) - fin)) - -(xcl:definline funcallable-instance-p (x) - (and (typep x 'il:compiled-closure) - (il:fetch (closure-overlay funcallable-instance-p) - il:of x))) - -(defun set-funcallable-instance-function (fin new) - (cond ((not (funcallable-instance-p fin)) - (error "~S is not a funcallable-instance" fin)) - ((not (functionp new)) - (error "~S is not a function." new)) - ((typep new 'il:compiled-closure) - (let* ((fin-env (il:fetch (il:compiled-closure il:environment) - il:of fin)) - (new-env (il:fetch (il:compiled-closure il:environment) - il:of new)) - (new-env-size (if new-env - (il:\\#blockdatacells new-env) - 0)) - (fin-env-size (- funcallable-instance-closure-size (length - funcallable-instance-data - )))) - (cond ((and new-env (<= new-env-size fin-env-size)) - (dotimes (i fin-env-size) - (il:\\rplptr fin-env (* i 2) - (if (< i new-env-size) - (il:\\getbaseptr new-env (* i 2)) - nil))) - (setf (compiled-closure-fnheader fin) - (compiled-closure-fnheader new))) - (t (set-funcallable-instance-function fin (make-trampoline new)))))) - (t (set-funcallable-instance-function fin (make-trampoline new))))) - -(defun make-trampoline (function) - #'(lambda (&rest args) - (apply function args))) - -(defmacro funcallable-instance-data-1 (fin data) - `(il:\\getbaseptr (il:fetch (il:compiled-closure il:environment) - il:of - ,fin) - (* (- funcallable-instance-closure-size (funcallable-instance-data-position - ,data) - 1) - ; Reserve last element to point back to - ; actual FIN! - 2))) - -(defsetf funcallable-instance-data-1 (fin data) - (new-value) - `(il:\\rplptr (il:fetch (il:compiled-closure il:environment) - il:of - ,fin) - (* (- funcallable-instance-closure-size (funcallable-instance-data-position - ,data) - 1) - 2) - ,new-value)) - - ; end of #+Xerox - - - -;;; - - -(defmacro fsc-instance-p (fin) - `(funcallable-instance-p ,fin)) - -(defmacro fsc-instance-class (fin) - `(wrapper-class (funcallable-instance-data-1 ,fin 'wrapper))) - -(defmacro fsc-instance-wrapper (fin) - `(funcallable-instance-data-1 ,fin 'wrapper)) - -(defmacro fsc-instance-slots (fin) - `(funcallable-instance-data-1 ,fin 'slots)) - -(defun allocate-funcallable-instance (wrapper number-of-static-slots) - (let ((fin (allocate-funcallable-instance-1)) - (slots (%allocate-static-slot-storage--class number-of-static-slots))) - (setf (fsc-instance-wrapper fin) - wrapper - (fsc-instance-slots fin) - slots) - fin)) diff --git a/obsolete/clos/2.0/fixup.lisp b/obsolete/clos/2.0/fixup.lisp deleted file mode 100644 index 13d1c52c..00000000 --- a/obsolete/clos/2.0/fixup.lisp +++ /dev/null @@ -1,15 +0,0 @@ -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- - - -;;;. Copyright (c) 1991 by Venue - -(in-package "CLOS") - - -(eval-when (compile load eval) - (fix-early-generic-functions) - (setq *boot-state* 'complete)) - -(defun print-std-instance (instance stream depth) - (declare (ignore depth)) - (print-object instance stream)) diff --git a/obsolete/clos/2.0/fngen.lisp b/obsolete/clos/2.0/fngen.lisp deleted file mode 100644 index 09e6d0da..00000000 --- a/obsolete/clos/2.0/fngen.lisp +++ /dev/null @@ -1,172 +0,0 @@ -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- - -;;;. Copyright (c) 1991 by Venue - -(in-package "CLOS") - - - -;;; GET-FUNCTION is the main user interface to this code. If it is called with a lambda expression -;;; only, it will return a corresponding function. The optional constant-converter argument, can be -;;; a function which will be called to convert each constant appearing in the lambda to whatever -;;; value should appear in the function. Whether the returned function is actually compiled depends -;;; on whether the compiler is present (see COMPILE-LAMBDA) and whether this shape of code was -;;; precompiled. - - -(defun get-function (lambda &optional (test-converter #'default-test-converter) - (code-converter #'default-code-converter) - (constant-converter #'default-constant-converter)) - (apply (get-function-generator lambda test-converter code-converter) - (compute-constants lambda constant-converter))) - -(defun default-test-converter (form) - (if (not (constantp form)) - form - '.constant.)) - -(defun default-code-converter (form) - (if (not (constantp form)) - form - (let ((gensym (gensym))) - (values gensym (list gensym))))) - -(defun default-constant-converter (form) - (and (constantp form) - (list (if (and (consp form) - (eq (car form) - 'quote)) - ; This had better - (cadr form) - ; do the same as - form)))) - - ; EVAL would have. - - - -;;; *fgens* is a list of all the function generators we have so far. Each element is a FGEN -;;; structure as implemented below. Don't ever touch this list by hand, use STORE-FGEN. - - -(defvar *fgens* nil) - -(defun store-fgen (fgen) - (setq *fgens* (nconc *fgens* (list fgen)))) - -(defun lookup-fgen (test) - (find test (the list *fgens*) - :key - #'fgen-test :test #'equal)) - -(defun make-fgen (test gensyms generator generator-lambda system) - (let ((new (make-array 6))) - (setf (svref new 0) - test - (svref new 1) - gensyms - (svref new 2) - generator - (svref new 3) - generator-lambda - (svref new 4) - system) - new)) - -(defun fgen-test (fgen) - (svref fgen 0)) - -(defun fgen-gensyms (fgen) - (svref fgen 1)) - -(defun fgen-generator (fgen) - (svref fgen 2)) - -(defun fgen-generator-lambda (fgen) - (svref fgen 3)) - -(defun fgen-system (fgen) - (svref fgen 4)) - -(defun get-function-generator (lambda test-converter code-converter) - (let* ((test (compute-test lambda test-converter)) - (fgen (lookup-fgen test))) - (if fgen - (fgen-generator fgen) - (get-new-function-generator lambda test code-converter)))) - -(defun get-new-function-generator (lambda test code-converter) - (multiple-value-bind (gensyms generator-lambda) - (get-new-function-generator-internal lambda code-converter) - (let* ((generator (compile-lambda generator-lambda)) - (fgen (make-fgen test gensyms generator generator-lambda nil))) - (store-fgen fgen) - generator))) - -(defun get-new-function-generator-internal (lambda code-converter) - (multiple-value-bind (code gensyms) - (compute-code lambda code-converter) - (values gensyms `(lambda ,gensyms #',code)))) - -(defun compute-test (lambda test-converter) - (walk-form lambda nil #'(lambda (f c e) - (declare (ignore e)) - (if (neq c :eval) - f - (let ((converted (funcall test-converter f))) - (values converted (neq converted f))))))) - -(defun compute-code (lambda code-converter) - (let ((gensyms nil)) - (values (walk-form lambda nil #'(lambda (f c e) - (declare (ignore e)) - (if (neq c :eval) - f - (multiple-value-bind - (converted gens) - (funcall code-converter f) - (when gens - (setq gensyms (append gensyms gens))) - (values converted (neq converted f)))))) - gensyms))) - -(defun compute-constants (lambda constant-converter) - (macrolet ((appending nil `(let ((result nil)) - (values #'(lambda (value) - (setq result (append result value))) - #'(lambda nil result))))) - (gathering1 (appending) - (walk-form lambda nil #'(lambda (f c e) - (declare (ignore e)) - (if (neq c :eval) - f - (let ((consts (funcall constant-converter f)) - ) - (if consts - (progn (gather1 consts) - (values f t)) - f)))))))) - - -;;; - - -(defmacro - precompile-function-generators - (&optional system) - (make-top-level-form - `(precompile-function-generators ,system) - '(load) - `(progn ,@(gathering1 (collecting) - (dolist (fgen *fgens*) - (when (or (null (fgen-system fgen)) - (eq (fgen-system fgen) - system)) - (gather1 `(load-function-generator ',(fgen-test fgen) - ',(fgen-gensyms fgen) - #',(fgen-generator-lambda fgen) - ',(fgen-generator-lambda fgen) - ',system)))))))) - -(defun load-function-generator (test gensyms generator generator-lambda system) - (store-fgen (make-fgen test gensyms generator generator-lambda system))) diff --git a/obsolete/clos/2.0/fsc.lisp b/obsolete/clos/2.0/fsc.lisp deleted file mode 100644 index a2670af9..00000000 --- a/obsolete/clos/2.0/fsc.lisp +++ /dev/null @@ -1,72 +0,0 @@ -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- - -;;;. Copyright (c) 1991 by Venue - - -(in-package "CLOS") - - -;;; This file contains the -;;; definition of the FUNCALLABLE-STANDARD-CLASS metaclass. Much of the implementation of this -;;; metaclass is actually defined on the class STD-CLASS. What appears in this file is a modest -;;; number of simple methods related to the low-level differences in the implementation of standard -;;; and funcallable-standard instances. As it happens, none of these differences are the ones -;;; reflected in the MOP specification; STANDARD-CLASS and FUNCALLABLE-STANDARD-CLASS share all -;;; their specified methods at STD-CLASS. workings of this metaclass and the standard-class -;;; metaclass. - - -(defmethod wrapper-fetcher ((class funcallable-standard-class)) - 'fsc-instance-wrapper) - -(defmethod slots-fetcher ((class funcallable-standard-class)) - 'fsc-instance-slots) - -(defmethod raw-instance-allocator ((class funcallable-standard-class)) - 'allocate-funcallable-instance-1) - - -;;; - - -(defmethod check-super-metaclass-compatibility ((fsc funcallable-standard-class) - (class standard-class)) - (null (wrapper-instance-slots-layout (class-wrapper class)))) - -(defmethod allocate-instance ((class funcallable-standard-class) - &rest initargs) - (declare (ignore initargs)) - (unless (class-finalized-p class) - (finalize-inheritance class)) - (let ((class-wrapper (class-wrapper class))) - (allocate-funcallable-instance class-wrapper (class-no-of-instance-slots class)))) - -(defmethod make-reader-method-function ((class funcallable-standard-class) - slot-name) - (make-std-reader-method-function slot-name)) - -(defmethod make-writer-method-function ((class funcallable-standard-class) - slot-name) - (make-std-writer-method-function slot-name)) - - ; See the comment about - ; reader-function--std and - ; writer-function--sdt. - ; (define-function-template - ; reader-function--fsc () '(slot-name) - ; `(function (lambda (instance) - ; (slot-value-using-class - ; (wrapper-class (get-wrapper - ; instance)) instance slot-name)))) - ; (define-function-template - ; writer-function--fsc () '(slot-name) - ; `(function (lambda (nv instance) - ; (setf (slot-value-using-class - ; (wrapper-class (get-wrapper - ; instance)) instance slot-name) nv)))) - ; (eval-when (load) - ; (pre-make-templated-function-constructor - ; reader-function--fsc) - ; (pre-make-templated-function-constructor - ; writer-function--fsc)) - diff --git a/obsolete/clos/2.0/init.lisp b/obsolete/clos/2.0/init.lisp deleted file mode 100644 index d44e50ef..00000000 --- a/obsolete/clos/2.0/init.lisp +++ /dev/null @@ -1,183 +0,0 @@ -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- - -;;;. Copyright (c) 1991 by Venue - -(in-package "CLOS") - -;;; this file defines the -;;; initialization and related protocols. - - -(defmethod make-instance ((class std-class) - &rest initargs) - (unless (class-finalized-p class) - (finalize-inheritance class)) - (setq initargs (default-initargs class initargs)) - (when initargs - (when (and (eq *boot-state* 'complete) - (let ((tail initargs)) - (loop (unless tail (return t)) - (when (eq (car tail) - ':allow-other-keys) - (return nil)) - (setq tail (cddr tail))))) - (check-initargs-1 class initargs (append (compute-applicable-methods - #'allocate-instance (list class)) - (compute-applicable-methods - #'initialize-instance - (list (class-prototype class))) - (compute-applicable-methods - #'shared-initialize - (list (class-prototype class) - t)))))) - (let ((instance (apply #'allocate-instance class initargs))) - (apply #'initialize-instance instance initargs) - instance)) - -(defmethod make-instance ((class-name symbol) - &rest initargs) - (apply #'make-instance (find-class class-name) - initargs)) - -(defvar *default-initargs-flag* (list nil)) - -(defmethod default-initargs ((class std-class) - supplied-initargs) - - ;; This implementation of default initargs is critically dependent on all-default-initargs - ;; not having any duplicate initargs in it. - (let ((all-default (class-default-initargs class)) - (miss *default-initargs-flag*)) - (flet ((getf* (plist key) - (do nil - ((null plist) - miss) - (if (eq (car plist) - key) - (return (cadr plist)) - (setq plist (cddr plist)))))) - (labels ((default-1 (tail) - (if (null tail) - nil - (if (eq (getf* supplied-initargs (caar tail)) - miss) - (list* (caar tail) - (funcall (cadar tail)) - (default-1 (cdr tail))) - (default-1 (cdr tail)))))) - (append supplied-initargs (default-1 all-default)))))) - -(defmethod initialize-instance ((instance standard-object) - &rest initargs) - (apply #'shared-initialize instance t initargs)) - -(defmethod reinitialize-instance ((instance standard-object) - &rest initargs) - (when initargs - (when (eq *boot-state* 'complete) - (check-initargs-1 (class-of instance) - initargs - (append (compute-applicable-methods #'reinitialize-instance (list instance)) - (compute-applicable-methods #'shared-initialize (list instance t)))))) - (apply #'shared-initialize instance nil initargs) - instance) - -(defmethod update-instance-for-different-class ((previous standard-object) - (current standard-object) - &rest initargs) - (when initargs - (check-initargs-1 (class-of current) - initargs - (append (compute-applicable-methods #'update-instance-for-different-class - (list previous current)) - (compute-applicable-methods #'shared-initialize (list current t))))) - - ;; First we must compute the newly added slots. The spec defines newly added slots as "those - ;; local slots for which no slot of the same name exists in the previous class." - (let ((added-slots 'nil) - (current-slotds (class-slots (class-of current))) - (previous-slot-names (mapcar #'slotd-name (class-slots (class-of previous))))) - (dolist (slotd current-slotds) - (if (and (not (memq (slotd-name slotd) - previous-slot-names)) - (eq (slotd-allocation slotd) - ':instance)) - (push (slotd-name slotd) - added-slots))) - (apply #'shared-initialize current added-slots initargs))) - -(defmethod update-instance-for-redefined-class ((instance standard-object) - added-slots discarded-slots property-list &rest - initargs) - (declare (ignore discarded-slots property-list)) - (when initargs - (check-initargs-1 (class-of instance) - initargs - (append (compute-applicable-methods #'update-instance-for-redefined-class - (list instance)) - (compute-applicable-methods #'shared-initialize (list instance nil))))) - (apply #'shared-initialize instance added-slots initargs)) - -(defmethod shared-initialize ((instance standard-object) - slot-names &rest initargs) - - ;; initialize the instance's slots in a two step process 1) A slot for which one of the - ;; initargs in initargs can set the slot, should be set by that initarg. If more than one - ;; initarg in initargs can set the slot, the leftmost one should set it. 2) Any slot not set - ;; by step 1, may be set from its initform by step 2. Only those slots specified by the - ;; slot-names argument are set. If slot-names is: T any slot not set in step 1 is set from - ;; its initform any slot in the list, and not set in step 1 is set from - ;; its initform () no slots are set from initforms - (let* ((class (class-of instance)) - (slotds (class-slots class))) - (dolist (slotd slotds) - (let ((slot-name (slotd-name slotd)) - (slot-initargs (slotd-initargs slotd))) - (flet ((from-initargs nil - - ;; Try to initialize the slot from one of the initargs. If we - ;; succeed return T, otherwise return nil. - (doplist (initarg val) - initargs - (when (memq initarg slot-initargs) - (setf (slot-value instance slot-name) - val) - (return 't)))) - (from-initforms nil - - ;; Try to initialize the slot from its initform. This returns - ;; no meaningful value. - (if (and slot-names (or (eq slot-names 't) - (memq slot-name slot-names)) - (not (slot-boundp instance slot-name))) - (let ((initfunction (slotd-initfunction slotd))) - (when initfunction - (setf (slot-value instance slot-name) - (funcall initfunction))))))) - (or (from-initargs) - (from-initforms)))))) - instance) - - -;;; if initargs are valid return nil, otherwise signal an error - - -(defun check-initargs-1 (class initargs methods) - (let ((legal (apply #'append (mapcar #'slotd-initargs (class-slots class))))) - (unless (getf initargs :allow-other-keys) - - ;; Add to the set of slot-filling initargs the set of initargs that are accepted by - ;; the methods. If at any point we come across &allow-other-keys, we can just quit. - (dolist (method methods) - (multiple-value-bind (keys allow-other-keys) - (function-keywords method) - (when allow-other-keys (return-from check-initargs-1 nil)) - (setq legal (append keys legal)))) - - ;; Now check the supplied-initarg-names and the default initargs against the total - ;; set that we know are legal. - (doplist (key val) - initargs - (unless (memq key legal) - (error "Invalid initialization argument ~S for class ~S" key (class-name - class))))))) diff --git a/obsolete/clos/2.0/iterate.lisp b/obsolete/clos/2.0/iterate.lisp deleted file mode 100644 index 212f819c..00000000 --- a/obsolete/clos/2.0/iterate.lisp +++ /dev/null @@ -1,1080 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE (CLIN-PACKAGE ITERATE USE (QUOTE (LISP WALKER))) -BASE 10) -(IL:FILECREATED "19-Feb-91 13:55:29"  -IL:|{DSK}local>users>welch>lisp>clos>rev4>il-format>ITERATE.;2| 65656 - - IL:|changes| IL:|to:| (IL:VARS IL:ITERATECOMS) - - IL:|previous| IL:|date:| " 6-Feb-91 11:00:58" -IL:|{DSK}local>users>welch>lisp>clos>rev4>il-format>ITERATE.;1|) - - -; Copyright (c) 1991 by Venue. All rights reserved. - -(IL:PRETTYCOMPRINT IL:ITERATECOMS) - -(IL:RPAQQ IL:ITERATECOMS - ( - -(IL:* IL:|;;;| "************************************************************************* Copyright (c) 1985, 1986, 1987, 1988, 1989, 1990 Xerox Corporation. All rights reserved. Use and copying of this software and preparation of derivative works based upon this software are permitted. Any distribution of this software or derivative works must comply with all applicable United States export control laws. This software is made available AS IS, and Xerox Corporation makes no warranty about the software, its performance or its conformity to any specification. Any person obtaining a copy of this software is requested to send their name and post office or electronic mail address to: CommonLoops Coordinator Xerox PARC 3333 Coyote Hill Rd. Palo Alto, CA 94304 (or send Arpanet mail to CommonLoops-Coordinator.pa@Xerox.arpa) Suggestions, comments and requests for improvements are also welcome. ************************************************************************* Original source {pooh/n}vanmelle>lisp>iterate;4 created 27-Sep-88 12:35:33 ") - - (IL:P (IN-PACKAGE :ITERATE :USE '(:LISP :WALKER)) - (EXPORT '(ITERATE ITERATE* GATHERING GATHER WITH-GATHERING INTERVAL ELEMENTS - LIST-ELEMENTS LIST-TAILS PLIST-ELEMENTS EACHTIME WHILE UNTIL - COLLECTING JOINING MAXIMIZING MINIMIZING SUMMING *ITERATE-WARNINGS*) - )) - (IL:VARIABLES *ITERATE-WARNINGS*) - - -(IL:* IL:|;;;| "ITERATE macro") - - (IL:FUNCTIONS ITERATE SIMPLE-EXPAND-ITERATE-FORM) - (IL:VARIABLES *ITERATE-TEMP-VARS-LIST*) - (IL:FUNCTIONS OPTIMIZE-ITERATE-FORM EXPAND-INTO-LET VARIABLES-FROM-LET - ITERATE-TRANSFORM-BODY PARSE-DECLARATIONS EXTRACT-SPECIAL-BINDINGS - FUNCTION-LAMBDA-P RENAME-LET-BINDINGS RENAME-VARIABLES MV-SETQ VARIABLE-SAME-P - MAYBE-WARN) - - (IL:* IL:|;;| "Sample iterators") - - (IL:FUNCTIONS INTERVAL LIST-ELEMENTS LIST-TAILS ELEMENTS PLIST-ELEMENTS SEQUENCE-ACCESSOR) - - (IL:* IL:|;;| "These \"iterators\" may be withdrawn") - - (IL:FUNCTIONS EACHTIME WHILE UNTIL) - (IL:* IL:\; "GATHERING macro") - (IL:FUNCTIONS GATHERING WITH-GATHERING SIMPLE-EXPAND-GATHERING-FORM) - (IL:VARIABLES *ACTIVE-GATHERERS* *ANONYMOUS-GATHERING-SITE*) - (IL:FUNCTIONS OPTIMIZE-GATHERING-FORM RENAME-AND-CAPTURE-VARIABLES WALK-GATHERING-BODY) - - (IL:* IL:|;;| "Sample gatherers") - - (IL:FUNCTIONS COLLECTING JOINING MAXIMIZING MINIMIZING SUMMING) - (IL:* IL:\; - "Easier to read expanded code if PROG1 gets left alone ") - (XCL:FILE-ENVIRONMENTS "ITERATE"))) - - - -(IL:* IL:|;;;| -"************************************************************************* Copyright (c) 1985, 1986, 1987, 1988, 1989, 1990 Xerox Corporation. All rights reserved. Use and copying of this software and preparation of derivative works based upon this software are permitted. Any distribution of this software or derivative works must comply with all applicable United States export control laws. This software is made available AS IS, and Xerox Corporation makes no warranty about the software, its performance or its conformity to any specification. Any person obtaining a copy of this software is requested to send their name and post office or electronic mail address to: CommonLoops Coordinator Xerox PARC 3333 Coyote Hill Rd. Palo Alto, CA 94304 (or send Arpanet mail to CommonLoops-Coordinator.pa@Xerox.arpa) Suggestions, comments and requests for improvements are also welcome. ************************************************************************* Original source {pooh/n}vanmelle>lisp>iterate;4 created 27-Sep-88 12:35:33 " -) - - -(IN-PACKAGE :ITERATE :USE '(:LISP :WALKER)) - -(EXPORT '(ITERATE ITERATE* GATHERING GATHER WITH-GATHERING INTERVAL ELEMENTS LIST-ELEMENTS - LIST-TAILS PLIST-ELEMENTS EACHTIME WHILE UNTIL COLLECTING JOINING MAXIMIZING - MINIMIZING SUMMING *ITERATE-WARNINGS*)) - -(DEFVAR *ITERATE-WARNINGS* :ANY "Controls whether warnings are issued for iterate/gather forms that aren't optimized. -NIL => never; :USER => those resulting from user code; T => always, even if it's the iteration macro that's suboptimal." -) - - - -(IL:* IL:|;;;| "ITERATE macro") - - -(DEFMACRO ITERATE (CLAUSES &BODY BODY &ENVIRONMENT ENV) - (OPTIMIZE-ITERATE-FORM CLAUSES BODY ENV)) - -(DEFUN SIMPLE-EXPAND-ITERATE-FORM (CLAUSES BODY) - - (IL:* IL:|;;| - "Expand ITERATE. This is the \"formal semantics\" expansion, which we never use. ") - - (LET* - ((BLOCK-NAME (GENSYM)) - (BOUND-VAR-LISTS (MAPCAR #'(LAMBDA (CLAUSE) - (LET ((NAMES (FIRST CLAUSE))) - (IF (LISTP NAMES) - NAMES - (LIST NAMES)))) - CLAUSES)) - (GENERATOR-VARS (MAPCAR #'(LAMBDA (CLAUSE) - (DECLARE (IGNORE CLAUSE)) - (GENSYM)) - CLAUSES))) - `(BLOCK ,BLOCK-NAME - (LET* - ,(MAPCAN #'(LAMBDA (GVAR CLAUSE VAR-LIST) (IL:* IL:\; - "For each clause, bind a generator temp to the clause, then bind the specified var(s) ") - (CONS (LIST GVAR (SECOND CLAUSE)) - (COPY-LIST VAR-LIST))) - GENERATOR-VARS CLAUSES BOUND-VAR-LISTS) - - (IL:* IL:|;;| "Note bug in formal semantics: there can be declarations in the head of BODY; they go here, rather than inside loop ") - - (LOOP ,@(MAPCAR #'(LAMBDA (VAR-LIST GEN-VAR) (IL:* IL:\; - "Set each bound variable (or set of vars) to the result of calling the corresponding generator ") - `(MULTIPLE-VALUE-SETQ ,VAR-LIST - (FUNCALL ,GEN-VAR #'(LAMBDA NIL (RETURN-FROM ,BLOCK-NAME)) - ))) - BOUND-VAR-LISTS GENERATOR-VARS) - ,@BODY))))) - -(DEFPARAMETER *ITERATE-TEMP-VARS-LIST* '(ITERATE-TEMP-1 ITERATE-TEMP-2 ITERATE-TEMP-3 - ITERATE-TEMP-4 ITERATE-TEMP-5 ITERATE-TEMP-6 - ITERATE-TEMP-7 ITERATE-TEMP-8) - "Temp var names used by ITERATE expansions.") - -(DEFUN OPTIMIZE-ITERATE-FORM (CLAUSES BODY ITERATE-ENV) - (LET* - ((TEMP-VARS *ITERATE-TEMP-VARS-LIST*) - (BLOCK-NAME (GENSYM)) - (FINISH-FORM `(RETURN-FROM ,BLOCK-NAME)) - (BOUND-VARS (MAPCAN #'(LAMBDA (CLAUSE) - (LET ((NAMES (FIRST CLAUSE))) - (IF (LISTP NAMES) - (COPY-LIST NAMES) - (LIST NAMES)))) - CLAUSES)) - ITERATE-DECLS GENERATOR-DECLS UPDATE-FORMS BINDINGS LEFTOVER-BODY) - (DO ((TAIL BOUND-VARS (CDR TAIL))) - ((NULL TAIL)) (IL:* IL:\; "Check for duplicates") - (WHEN (MEMBER (CAR TAIL) - (CDR TAIL)) - (WARN "Variable appears more than once in ITERATE: ~S" (CAR TAIL)))) - (FLET - ((GET-ITERATE-TEMP NIL - - (IL:* IL:|;;| "Make temporary var. Note that it is ok to re-use these symbols in each iterate, because they are not used within BODY. ") - - (OR (POP TEMP-VARS) - (GENSYM)))) - (DOLIST (CLAUSE CLAUSES) - (COND - ((OR (NOT (CONSP CLAUSE)) - (NOT (CONSP (CDR CLAUSE)))) - (WARN "Bad syntax in ITERATE: clause not of form (var iterator): ~S" CLAUSE)) - (T - (UNLESS (NULL (CDDR CLAUSE)) - (WARN "Probable parenthesis error in ITERATE clause--more than 2 elements: ~S" - CLAUSE)) - (MULTIPLE-VALUE-BIND (LET-BODY BINDING-TYPE LET-BINDINGS LOCALDECLS OTHERDECLS - EXTRA-BODY) - (EXPAND-INTO-LET (SECOND CLAUSE) - 'ITERATE ITERATE-ENV) - - (IL:* IL:|;;| - "We have expanded the generator clause and parsed it into its LET pieces. ") - - (PROG* ((VARS (FIRST CLAUSE)) - GEN-ARGS RENAMED-VARS) - (SETQ VARS (IF (LISTP VARS) - (COPY-LIST VARS) - (LIST VARS))) (IL:* IL:\; - "VARS is now a (fresh) list of all iteration vars bound in this clause ") - (COND - ((EQ LET-BODY :ABORT) (IL:* IL:\; - "Already issued a warning about malformedness ") - ) - ((NULL (SETQ LET-BODY (FUNCTION-LAMBDA-P LET-BODY 1))) - (IL:* IL:\; "Not of the expected form") - (LET ((GENERATOR (SECOND CLAUSE))) - (COND - ((AND (CONSP GENERATOR) - (FBOUNDP (CAR GENERATOR))) - (IL:* IL:\; "It looks ok--a macro or function here--so the guy who wrote it just didn't do it in an optimizable way ") - (MAYBE-WARN :DEFINITION "Could not optimize iterate clause ~S because generator not of form (LET[*] ... (FUNCTION (LAMBDA (finish) ...)))" - GENERATOR)) - (T (IL:* IL:\; - "Perhaps it's just a misspelling? Probably user error ") - (MAYBE-WARN :USER - "Iterate operator in clause ~S is not fboundp." GENERATOR - ))) - (SETQ LET-BODY :ABORT))) - (T - - (IL:* IL:|;;| "We have something of the form #'(LAMBDA (finisharg) ...), possibly with some LET bindings around it. LET-BODY = ((finisharg) ...). ") - - (SETQ LET-BODY (CDR LET-BODY)) - (SETQ GEN-ARGS (POP LET-BODY)) - (WHEN LET-BINDINGS - - (IL:* IL:|;;| "The first transformation we want to perform is \"LET-eversion\": turn (let* ((generator (let (..bindings..) #'(lambda ...)))) ..body..) into (let* (..bindings.. (generator #'(lambda ...))) ..body..). This transformation is valid if nothing in body refers to any of the bindings, something we can assure by alpha-converting the inner let (substituting new names for each var). Of course, none of those vars can be special, but we already checked for that above. ") - - (MULTIPLE-VALUE-SETQ (LET-BINDINGS RENAMED-VARS) - (RENAME-LET-BINDINGS LET-BINDINGS BINDING-TYPE ITERATE-ENV - LEFTOVER-BODY #'GET-ITERATE-TEMP)) - (SETQ LEFTOVER-BODY NIL) (IL:* IL:\; - "If there was any leftover from previous, it is now consumed ") - ) - - (IL:* IL:|;;| "The second transformation is substituting the body of the generator (LAMBDA (finish-arg) . gen-body) for its appearance in the update form (funcall generator #'(lambda () finish-form)), then simplifying that form. The requirement for this part is that the generator body not refer to any variables that are bound between the generator binding and the appearance in the loop body. The only variables bound in that interval are generator temporaries, which have unique names so are no problem, and the iteration variables remaining for subsequent clauses. We'll discover the story as we walk the body. ") - - (MULTIPLE-VALUE-BIND (FINISHDECL OTHER REST) - (PARSE-DECLARATIONS LET-BODY GEN-ARGS) - (DECLARE (IGNORE FINISHDECL))(IL:* IL:\; "Pull out declares, if any, separating out the one(s) referring to the finish arg, which we will throw away ") - (WHEN OTHER (IL:* IL:\; - "Combine remaining decls with decls extracted from the LET, if any ") - (SETQ OTHERDECLS (NCONC OTHERDECLS OTHER))) - (SETQ LET-BODY (COND - (OTHERDECLS (IL:* IL:\; - "There are interesting declarations, so have to keep it wrapped. ") - `(LET NIL (DECLARE ,@OTHERDECLS) - ,@REST)) - ((NULL (CDR REST)) - (IL:* IL:\; "Only one form left") - (FIRST REST)) - (T `(PROGN ,@REST))))) - (UNLESS (EQ (SETQ LET-BODY (ITERATE-TRANSFORM-BODY LET-BODY ITERATE-ENV - RENAMED-VARS (FIRST GEN-ARGS) - FINISH-FORM BOUND-VARS CLAUSE)) - :ABORT) - - (IL:* IL:|;;| "Skip the rest if transformation failed. Warning has already been issued. Note possible further optimization: if LET-BODY expanded into (prog1 oldvalue prepare-for-next-iteration), as so many do, then we could in most cases split the PROG1 into two pieces: do the (setq var oldvalue) here, and do the prepare-for-next-iteration at the bottom of the loop. This does a slight optimization of the PROG1 and also rearranges the code in a way that a reasonably clever compiler might detect how to get rid of redundant variables altogether (such as happens with INTERVAL and LIST-TAILS); that would make the whole thing closer to what you might have coded by hand. However, to do this optimization, we need to assure that (a) the prepare-for-next-iteration refers freely to no vars other than the internal vars we have extracted from the LET, and (b) that the code has no side effects. These are both true for all the iterators defined by this module, but how shall we represent side-effect info and/or tap into the compiler's knowledge of same? ") - - (WHEN LOCALDECLS (IL:* IL:\; "There were declarations for the generator locals--have to keep them for later, and rename the vars mentioned ") - (SETQ - GENERATOR-DECLS - (NCONC - GENERATOR-DECLS - (MAPCAR - #'(LAMBDA (DECL) - (LET ((HEAD (CAR DECL))) - (CONS HEAD (IF (EQ HEAD 'TYPE) - (CONS (SECOND DECL) - (SUBLIS RENAMED-VARS - (CDDR DECL))) - (SUBLIS RENAMED-VARS (CDR DECL))))) - ) - LOCALDECLS))))))) - - (IL:* IL:|;;| "Finished analyzing clause now. LET-BODY is the form which, when evaluated, returns updated values for the iteration variable(s) VARS. ") - - (WHEN (EQ LET-BODY :ABORT) - - (IL:* IL:|;;| "Some punt case: go with the formal semantics: bind a var to the generator, then call it in the update section ") - - (LET ((GVAR (GET-ITERATE-TEMP)) - (GENERATOR (SECOND CLAUSE))) - (SETQ LET-BINDINGS - (LIST (LIST GVAR - (COND - (LEFTOVER-BODY - (IL:* IL:\; "Have to use this up") - `(PROGN ,@(PROG1 LEFTOVER-BODY (SETQ - LEFTOVER-BODY - NIL)) - GENERATOR)) - (T GENERATOR))))) - (SETQ LET-BODY `(FUNCALL ,GVAR #'(LAMBDA NIL ,FINISH-FORM))))) - (PUSH (MV-SETQ (COPY-LIST VARS) - LET-BODY) - UPDATE-FORMS) - (DOLIST (V VARS) - (DECLARE (IGNORE V)) (IL:* IL:\; "Pop off the vars we have now bound from the list of vars to watch out for--we'll bind them right now ") - (POP BOUND-VARS)) - (SETQ BINDINGS (NCONC BINDINGS LET-BINDINGS - (COND - (EXTRA-BODY (IL:* IL:\; - "There was some computation to do after the bindings--here's our chance ") - (CONS (LIST (FIRST VARS) - `(PROGN ,@EXTRA-BODY NIL)) - (REST VARS))) - (T VARS)))))))))) - (DO ((TAIL BODY (CDR TAIL))) - ((NOT (AND (CONSP TAIL) - (CONSP (CAR TAIL)) - (EQ (CAAR TAIL) - 'DECLARE))) - - (IL:* IL:|;;| "TAIL now points at first non-declaration. If there were declarations, pop them off so they appear in the right place ") - - (UNLESS (EQ TAIL BODY) - (SETQ ITERATE-DECLS (LDIFF BODY TAIL)) - (SETQ BODY TAIL)))) - `(BLOCK ,BLOCK-NAME - (LET* ,BINDINGS ,@(AND GENERATOR-DECLS `((DECLARE ,@GENERATOR-DECLS))) - ,@ITERATE-DECLS - ,@LEFTOVER-BODY - (LOOP ,@(NREVERSE UPDATE-FORMS) - ,@BODY))))) - -(DEFUN EXPAND-INTO-LET (CLAUSE PARENT-NAME ENV) - - (IL:* IL:|;;| "Return values: Body, LET[*], bindings, localdecls, otherdecls, extra body, where BODY is a single form. If multiple forms in a LET, the preceding forms are returned as extra body. Returns :ABORT if it issued a punt warning. ") - - (PROG ((EXPANSION CLAUSE) - EXPANDEDP BINDING-TYPE LET-BINDINGS LET-BODY) - EXPAND - (MULTIPLE-VALUE-SETQ (EXPANSION EXPANDEDP) - (MACROEXPAND-1 EXPANSION ENV)) - (COND - ((NOT (CONSP EXPANSION)) (IL:* IL:\; "Shouldn't happen") - ) - ((SYMBOLP (SETQ BINDING-TYPE (FIRST EXPANSION))) - (CASE BINDING-TYPE - ((LET LET*) - (SETQ LET-BINDINGS (SECOND EXPANSION)) (IL:* IL:\; - "List of variable bindings") - (SETQ LET-BODY (CDDR EXPANSION)) - (GO HANDLE-LET)))) - ((AND (CONSP BINDING-TYPE) - (EQ (CAR BINDING-TYPE) - 'LAMBDA) - (NOT (FIND-IF #'(LAMBDA (X) - (MEMBER X LAMBDA-LIST-KEYWORDS)) - (SETQ LET-BINDINGS (SECOND BINDING-TYPE)))) - (EQL (LENGTH (SECOND EXPANSION)) - (LENGTH LET-BINDINGS)) - (NULL (CDDR EXPANSION))) (IL:* IL:\; - "A simple LAMBDA form can be treated as LET ") - (SETQ LET-BODY (CDDR BINDING-TYPE)) - (SETQ LET-BINDINGS (MAPCAR #'LIST LET-BINDINGS (SECOND EXPANSION))) - (SETQ BINDING-TYPE 'LET) - (GO HANDLE-LET))) - - (IL:* IL:|;;| "Fall thru if not a LET") - - (COND - (EXPANDEDP (IL:* IL:\; "try expanding again") - (GO EXPAND)) - (T (IL:* IL:\; - "Boring--return form as the body ") - (RETURN EXPANSION))) - HANDLE-LET - (RETURN (LET ((LOCALS (VARIABLES-FROM-LET LET-BINDINGS)) - EXTRA-BODY SPECIALS) - (MULTIPLE-VALUE-BIND (LOCALDECLS OTHERDECLS LET-BODY) - (PARSE-DECLARATIONS LET-BODY LOCALS) - (COND - ((SETQ SPECIALS (EXTRACT-SPECIAL-BINDINGS LOCALS LOCALDECLS)) - (MAYBE-WARN (COND - ((FIND-IF #'VARIABLE-GLOBALLY-SPECIAL-P SPECIALS) - (IL:* IL:\; - "This could be the fault of a user proclamation ") - :USER) - (T :DEFINITION)) - - "Couldn't optimize ~S because expansion of ~S binds specials ~(~S ~)" - PARENT-NAME CLAUSE SPECIALS) - :ABORT) - (T (VALUES (COND - ((NOT (CONSP LET-BODY)) - (IL:* IL:\; - "Null body of LET? unlikely, but someone else will likely complain ") - NIL) - ((NULL (CDR LET-BODY)) - (IL:* IL:\; - "A single expression, which we hope is (function (lambda...)) ") - (FIRST LET-BODY)) - (T - - (IL:* IL:|;;| "More than one expression. These are forms to evaluate after the bindings but before the generator form is returned. Save them to evaluate in the next convenient place. Note that this is ok, as there is no construct that can cause a LET to return prematurely (without returning also from some surrounding construct). ") - - (SETQ EXTRA-BODY (BUTLAST LET-BODY)) - (CAR (LAST LET-BODY)))) - BINDING-TYPE LET-BINDINGS LOCALDECLS OTHERDECLS EXTRA-BODY)))))) - )) - -(DEFUN VARIABLES-FROM-LET (BINDINGS) - - (IL:* IL:|;;| "Return a list of the variables bound in the first argument to LET[*].") - - (MAPCAR #'(LAMBDA (BINDING) - (IF (CONSP BINDING) - (FIRST BINDING) - BINDING)) - BINDINGS)) - -(DEFUN ITERATE-TRANSFORM-BODY (LET-BODY ITERATE-ENV RENAMED-VARS FINISH-ARG FINISH-FORM - BOUND-VARS CLAUSE) - -(IL:* IL:|;;;| "This is the second major transformation for a single iterate clause. LET-BODY is the body of the iterator after we have extracted its local variables and declarations. We have two main tasks: (1) Substitute internal temporaries for occurrences of the LET variables; the alist RENAMED-VARS specifies this transformation. (2) Substitute evaluation of FINISH-FORM for any occurrence of (funcall FINISH-ARG). Along the way, we check for forms that would invalidate these transformations: occurrence of FINISH-ARG outside of a funcall, and free reference to any element of BOUND-VARS. CLAUSE & TYPE are the original ITERATE clause and its type (ITERATE or ITERATE*), for purpose of error messages. On success, we return the transformed body; on failure, :ABORT. ") - - (WALK-FORM LET-BODY ITERATE-ENV #'(LAMBDA (FORM CONTEXT ENV) - (DECLARE (IGNORE CONTEXT)) - - (IL:* IL:|;;| - "Need to substitute RENAMED-VARS, as well as turn (FUNCALL finish-arg) into the finish form ") - - (COND - ((SYMBOLP FORM) - (LET (RENAMING) - (COND - ((AND (EQ FORM FINISH-ARG) - (VARIABLE-SAME-P FORM ENV - ITERATE-ENV)) - (IL:* IL:\; - "An occurrence of the finish arg outside of FUNCALL context--I can't handle this ") - (MAYBE-WARN :DEFINITION "Couldn't optimize iterate form because generator ~S does something with its FINISH arg besides FUNCALL it." - (SECOND CLAUSE)) - (RETURN-FROM ITERATE-TRANSFORM-BODY :ABORT)) - ((AND (SETQ RENAMING (ASSOC FORM RENAMED-VARS - )) - (VARIABLE-SAME-P FORM ENV - ITERATE-ENV)) - (IL:* IL:\; - "Reference to one of the vars we're renaming ") - (CDR RENAMING)) - ((AND (MEMBER FORM BOUND-VARS) - (VARIABLE-SAME-P FORM ENV - ITERATE-ENV)) - (IL:* IL:\; "FORM is a var that is bound in this same ITERATE, or bound later in this ITERATE*. This is a conflict. ") - (MAYBE-WARN :USER "Couldn't optimize iterate form because generator ~S is closed over ~S, in conflict with a subsequent iteration variable." - (SECOND CLAUSE) - FORM) - (RETURN-FROM ITERATE-TRANSFORM-BODY :ABORT)) - (T FORM)))) - ((AND (CONSP FORM) - (EQ (FIRST FORM) - 'FUNCALL) - (EQ (SECOND FORM) - FINISH-ARG) - (VARIABLE-SAME-P (SECOND FORM) - ENV ITERATE-ENV)) - (IL:* IL:\; - "(FUNCALL finish-arg) => finish-form ") - (UNLESS (NULL (CDDR FORM)) - (MAYBE-WARN :DEFINITION - "Generator for ~S applied its finish arg to > 0 arguments ~S--ignored." - (SECOND CLAUSE) - (CDDR FORM))) - FINISH-FORM) - (T FORM))))) - -(DEFUN PARSE-DECLARATIONS (TAIL LOCALS) - - (IL:* IL:|;;| "Extract the declarations from the head of TAIL and divide them into 2 classes: declares about variables in the list LOCALS, and all other declarations. Returns 3 values: those 2 lists plus the remainder of TAIL. ") - - (LET - (LOCALDECLS OTHERDECLS FORM) - (LOOP - (UNLESS (AND TAIL (CONSP (SETQ FORM (CAR TAIL))) - (EQ (CAR FORM) - 'DECLARE)) - (RETURN (VALUES LOCALDECLS OTHERDECLS TAIL))) - (MAPC - #'(LAMBDA (DECL) - (CASE (FIRST DECL) - ((INLINE NOTINLINE OPTIMIZE) (IL:* IL:\; - "These don't talk about vars") - (PUSH DECL OTHERDECLS)) - (T (IL:* IL:\; - "Assume all other kinds are for vars ") - (LET* ((VARS (IF (EQ (FIRST DECL) - 'TYPE) - (CDDR DECL) - (CDR DECL))) - (L (INTERSECTION LOCALS VARS)) - OTHER) - (COND - ((NULL L) (IL:* IL:\; "None talk about LOCALS") - (PUSH DECL OTHERDECLS)) - ((NULL (SETQ OTHER (SET-DIFFERENCE VARS L))) - (IL:* IL:\; "All talk about LOCALS") - (PUSH DECL LOCALDECLS)) - (T (IL:* IL:\; "Some of each") - (LET ((HEAD (CONS 'TYPE (AND (EQ (FIRST DECL) - 'TYPE) - (LIST (SECOND DECL)))))) - (PUSH (APPEND HEAD OTHER) - OTHERDECLS) - (PUSH (APPEND HEAD L) - LOCALDECLS)))))))) - (CDR FORM)) - (POP TAIL)))) - -(DEFUN EXTRACT-SPECIAL-BINDINGS (VARS DECLS) - - (IL:* IL:|;;| -"Return the subset of VARS that are special, either globally or because of a declaration in DECLS ") - - (LET ((SPECIALS (REMOVE-IF-NOT #'VARIABLE-GLOBALLY-SPECIAL-P VARS))) - (DOLIST (D DECLS) - (WHEN (EQ (CAR D) - 'SPECIAL) - (SETQ SPECIALS (UNION SPECIALS (INTERSECTION VARS (CDR D)))))) - SPECIALS)) - -(DEFUN FUNCTION-LAMBDA-P (FORM &OPTIONAL NARGS) - - (IL:* IL:|;;| "If FORM is #'(LAMBDA bindings . body) and bindings is of length NARGS, return the lambda expression ") - - (LET (ARGS BODY) - (AND (CONSP FORM) - (EQ (CAR FORM) - 'FUNCTION) - (CONSP (SETQ FORM (CDR FORM))) - (NULL (CDR FORM)) - (CONSP (SETQ FORM (CAR FORM))) - (EQ (CAR FORM) - 'LAMBDA) - (CONSP (SETQ BODY (CDR FORM))) - (LISTP (SETQ ARGS (CAR BODY))) - (OR (NULL NARGS) - (EQL (LENGTH ARGS) - NARGS)) - FORM))) - -(DEFUN RENAME-LET-BINDINGS (LET-BINDINGS BINDING-TYPE ENV LEFTOVER-BODY &OPTIONAL TEMPVARFN) - - (IL:* IL:|;;| "Perform the alpha conversion required for \"LET eversion\" of (LET[*] LET-BINDINGS . body)--rename each of the variables to an internal name. Returns 2 values: a new set of LET bindings and the alist of old var names to new (so caller can walk the body doing the rest of the renaming). BINDING-TYPE is one of LET or LET*. LEFTOVER-BODY is optional list of forms that must be eval'ed before the first binding happens. ENV is the macro expansion environment, in case we have to walk a LET*. TEMPVARFN is a function of no args to return a temporary var; if omitted, we use GENSYM. ") - - (LET (RENAMED-VARS) - (VALUES (MAPCAR #'(LAMBDA (BINDING) - (LET ((VALUEFORM (COND - ((NOT (CONSP BINDING)) - (IL:* IL:\; "No initial value") - NIL) - ((OR (EQ BINDING-TYPE 'LET) - (NULL RENAMED-VARS)) - (IL:* IL:\; - "All bindings are in parallel, so none can refer to others ") - (SECOND BINDING)) - (T (IL:* IL:\; - "In a LET*, have to substitute vars in the 2nd and subsequent initialization forms ") - (RENAME-VARIABLES (SECOND BINDING) - RENAMED-VARS ENV)))) - (NEWVAR (IF TEMPVARFN - (FUNCALL TEMPVARFN) - (GENSYM)))) - (PUSH (CONS (IF (CONSP BINDING) - (FIRST BINDING) - BINDING) - NEWVAR) - RENAMED-VARS) (IL:* IL:\; - "Add new variable to the list AFTER we have walked the initial value form ") - (WHEN LEFTOVER-BODY - - (IL:* IL:|;;| "Previous clause had some computation to do after its bindings. Here is the first opportunity to do it ") - - (SETQ VALUEFORM `(PROGN ,@LEFTOVER-BODY ,VALUEFORM)) - (SETQ LEFTOVER-BODY NIL)) - (LIST NEWVAR VALUEFORM))) - LET-BINDINGS) - RENAMED-VARS))) - -(DEFUN RENAME-VARIABLES (FORM ALIST ENV) - - (IL:* IL:|;;| "Walks FORM, renaming occurrences of the key variables in ALIST with their corresponding values. ENV is FORM's environment, so we can make sure we are talking about the same variables. ") - - (WALK-FORM FORM ENV #'(LAMBDA (FORM CONTEXT SUBENV) - (DECLARE (IGNORE CONTEXT)) - (LET (PAIR) - (COND - ((AND (SYMBOLP FORM) - (SETQ PAIR (ASSOC FORM ALIST)) - (VARIABLE-SAME-P FORM SUBENV ENV)) - (CDR PAIR)) - (T FORM)))))) - -(DEFUN MV-SETQ (VARS EXPR) - - (IL:* IL:|;;| "Produces (MULTIPLE-VALUE-SETQ vars expr), except that I'll optimize some of the simple cases for benefit of compilers that don't, and I don't care what the value is, and I know that the variables need not be set in parallel, since they can't be used free in EXPR ") - - (COND - ((NULL VARS) (IL:* IL:\; "EXPR is a side-effect") - EXPR) - ((NOT (CONSP VARS)) (IL:* IL:\; - "This is an error, but I'll let MULTIPLE-VALUE-SETQ report it ") - `(MULTIPLE-VALUE-SETQ ,VARS ,EXPR)) - ((AND (LISTP EXPR) - (EQ (CAR EXPR) - 'VALUES)) - - (IL:* IL:|;;| "(mv-setq (a b c) (values x y z)) can be reduced to a parallel setq (psetq returns nil, but I don't care about returned value). Do this even for the single variable case so that we catch (mv-setq (a) (values x y)) ") - - (POP EXPR) (IL:* IL:\; "VALUES") - `(SETQ ,@(MAPCON #'(LAMBDA (TAIL) - (LIST (CAR TAIL) - (COND - ((OR (CDR TAIL) - (NULL (CDR EXPR))) - (IL:* IL:\; - "One result expression for this var ") - (POP EXPR)) - (T (IL:* IL:\; - "More expressions than vars, so arrange to evaluate all the rest now. ") - (CONS 'PROG1 EXPR))))) - VARS))) - ((NULL (CDR VARS)) (IL:* IL:\; "Simple one variable case") - `(SETQ ,(CAR VARS) - ,EXPR)) - (T (IL:* IL:\; - "General case--I know nothing") - `(MULTIPLE-VALUE-SETQ ,VARS ,EXPR)))) - -(DEFUN VARIABLE-SAME-P (VAR ENV1 ENV2) - (EQ (VARIABLE-LEXICAL-P VAR ENV1) - (VARIABLE-LEXICAL-P VAR ENV2))) - -(DEFUN MAYBE-WARN (TYPE &REST WARN-ARGS) - - (IL:* IL:|;;| "Issue a warning about not being able to optimize this thing. TYPE is one of :DEFINITION, meaning the definition is at fault, and :USER, meaning the user's code is at fault. ") - - (WHEN (CASE *ITERATE-WARNINGS* - ((NIL) NIL) - ((:USER) (EQ TYPE :USER)) - (T T)) - (APPLY #'WARN WARN-ARGS))) - - - -(IL:* IL:|;;| "Sample iterators") - - -(DEFMACRO INTERVAL (&WHOLE WHOLE &KEY FROM DOWNFROM TO DOWNTO ABOVE BELOW BY TYPE) - (COND - ((AND FROM DOWNFROM) - (ERROR "Can't use both FROM and DOWNFROM in ~S" WHOLE)) - ((CDR (REMOVE NIL (LIST TO DOWNTO ABOVE BELOW))) - (ERROR "Can't use more than one limit keyword in ~S" WHOLE)) - (T - (LET* - ((DOWN (OR DOWNFROM DOWNTO ABOVE)) - (LIMIT (OR TO DOWNTO ABOVE BELOW)) - (INC (COND - ((NULL BY) - 1) - ((CONSTANTP BY) (IL:* IL:\; - "Can inline this increment") - BY)))) - `(LET ((FROM ,(OR FROM DOWNFROM 0)) - ,@(AND LIMIT `((TO ,LIMIT))) - ,@(AND (NULL INC) - `((BY ,BY)))) - ,@(AND TYPE `((DECLARE (TYPE ,TYPE FROM ,@(AND LIMIT '(TO)) - ,@(AND (NULL INC) - `(BY)))))) - #'(LAMBDA (FINISH) - ,@(COND - ((NULL LIMIT) (IL:* IL:\; - "We won't use the FINISH arg") - '((DECLARE (IGNORE FINISH))))) - (PROG1 ,(COND - (LIMIT (IL:* IL:\; - "Test the limit. If ok, return current value and increment, else quit ") - `(IF (,(COND - (ABOVE '>) - (BELOW '<) - (DOWN '>=) - (T '<=)) - FROM TO) - FROM - (FUNCALL FINISH))) - (T (IL:* IL:\; "No test") - 'FROM)) - (SETQ FROM (,(IF DOWN - '- - '+) - FROM - ,(OR INC 'BY)))))))))) - -(DEFMACRO LIST-ELEMENTS (LIST &KEY (BY '#'CDR)) - `(LET ((TAIL ,LIST)) - #'(LAMBDA (FINISH) - (PROG1 (IF (ENDP TAIL) - (FUNCALL FINISH) - (FIRST TAIL)) - (SETQ TAIL (FUNCALL ,BY TAIL)))))) - -(DEFMACRO LIST-TAILS (LIST &KEY (BY '#'CDR)) - `(LET ((TAIL ,LIST)) - #'(LAMBDA (FINISH) - (PROG1 (IF (ENDP TAIL) - (FUNCALL FINISH) - TAIL) - (SETQ TAIL (FUNCALL ,BY TAIL)))))) - -(DEFMACRO ELEMENTS (SEQUENCE) - "Generates successive elements of SEQUENCE, with second value being the index. Use (ELEMENTS (THE type arg)) if you care about the type." - (LET* ((TYPE (AND (CONSP SEQUENCE) - (EQ (FIRST SEQUENCE) - 'THE) - (SECOND SEQUENCE))) - (ACCESSOR (IF TYPE - (SEQUENCE-ACCESSOR TYPE) - 'ELT)) - (LISTP (EQ TYPE 'LIST))) - - (IL:* IL:|;;| "If type is given via THE, we may be able to generate a good accessor here for the benefit of implementations that aren't smart about (ELT (THE STRING FOO)). I'm not bothering to keep the THE inside the body, however, since I assume any compiler that would understand (AREF (THE SIMPLE-ARRAY S)) would also understand that (AREF S) is the same when I bound S to (THE SIMPLE-ARRAY foo) and never modified it. If sequence is declared to be a list, it's better to cdr down it, so we have some extra cases here. Normally folks would write LIST-ELEMENTS, but maybe they wanted to get the index for free... ") - - `(LET* ((INDEX 0) - (S ,SEQUENCE) - ,@(AND (NOT LISTP) - '((SIZE (LENGTH S))))) - #'(LAMBDA (FINISH) - (VALUES (COND - ,(IF LISTP - '((NOT (ENDP S)) - (POP S)) - `((< INDEX SIZE) - (,ACCESSOR S INDEX))) - (T (FUNCALL FINISH))) - (PROG1 INDEX - (SETQ INDEX (1+ INDEX)))))))) - -(DEFMACRO PLIST-ELEMENTS (PLIST) - "Generates each time 2 items, the indicator and the value." - `(LET ((TAIL ,PLIST)) - #'(LAMBDA (FINISH) - (VALUES (IF (ENDP TAIL) - (FUNCALL FINISH) - (FIRST TAIL)) - (PROG1 (IF (ENDP (SETQ TAIL (CDR TAIL))) - (FUNCALL FINISH) - (FIRST TAIL)) - (SETQ TAIL (CDR TAIL))))))) - -(DEFUN SEQUENCE-ACCESSOR (TYPE) - - (IL:* IL:|;;| - "returns the function with which most efficiently to make accesses to a sequence of type TYPE. ") - - (CASE (IF (CONSP TYPE) (IL:* IL:\; "e.g., (VECTOR FLOAT *)") - (CAR TYPE) - TYPE) - ((ARRAY SIMPLE-ARRAY VECTOR) 'AREF) - (SIMPLE-VECTOR 'SVREF) - (STRING 'CHAR) - (SIMPLE-STRING 'SCHAR) - (BIT-VECTOR 'BIT) - (SIMPLE-BIT-VECTOR 'SBIT) - (T 'ELT))) - - - -(IL:* IL:|;;| "These \"iterators\" may be withdrawn") - - -(DEFMACRO EACHTIME (EXPR) - `#'(LAMBDA (FINISH) - (DECLARE (IGNORE FINISH)) - ,EXPR)) - -(DEFMACRO WHILE (EXPR) - `#'(LAMBDA (FINISH) - (UNLESS ,EXPR (FUNCALL FINISH)))) - -(DEFMACRO UNTIL (EXPR) - `#'(LAMBDA (FINISH) - (WHEN ,EXPR (FUNCALL FINISH)))) - - - -(IL:* IL:\; "GATHERING macro") - - -(DEFMACRO GATHERING (CLAUSES &BODY BODY &ENVIRONMENT ENV) - (OR (OPTIMIZE-GATHERING-FORM CLAUSES BODY ENV) - (SIMPLE-EXPAND-GATHERING-FORM CLAUSES BODY ENV))) - -(DEFMACRO WITH-GATHERING (CLAUSES GATHER-BODY &BODY USE-BODY) - "Binds the variables specified in CLAUSES to the result of (GATHERING clauses gather-body) and evaluates the forms in USE-BODY inside that contour." - - (IL:* IL:|;;| "We may optimize this a little better later for those compilers that don't do a good job on (m-v-bind vars (... (values ...)) ...). ") - - `(MULTIPLE-VALUE-BIND ,(MAPCAR #'CAR CLAUSES) - (GATHERING ,CLAUSES ,GATHER-BODY) - ,@USE-BODY)) - -(DEFUN SIMPLE-EXPAND-GATHERING-FORM (CLAUSES BODY ENV) - (DECLARE (IGNORE ENV)) - - (IL:* IL:|;;| - "The \"formal semantics\" of GATHERING. We use this only in cases that can't be optimized. ") - - (LET - ((ACC-NAMES (MAPCAR #'FIRST (IF (SYMBOLP CLAUSES) (IL:* IL:\; - "Shorthand using anonymous gathering site ") - (SETQ CLAUSES `((*ANONYMOUS-GATHERING-SITE* (,CLAUSES)))) - CLAUSES))) - (REALIZER-NAMES (MAPCAR #'(LAMBDA (BINDING) - (DECLARE (IGNORE BINDING)) - (GENSYM)) - CLAUSES))) - `(MULTIPLE-VALUE-CALL - #'(LAMBDA ,(MAPCAN #'LIST ACC-NAMES REALIZER-NAMES) - (FLET ((GATHER (VALUE &OPTIONAL (ACCUMULATOR *ANONYMOUS-GATHERING-SITE*)) - (FUNCALL ACCUMULATOR VALUE))) - ,@BODY - (VALUES ,@(MAPCAR #'(LAMBDA (RNAME) - `(FUNCALL ,RNAME)) - REALIZER-NAMES)))) - ,@(MAPCAR #'SECOND CLAUSES)))) - -(DEFVAR *ACTIVE-GATHERERS* NIL - "List of GATHERING bindings currently active during macro expansion)") - -(DEFVAR *ANONYMOUS-GATHERING-SITE* NIL - "Variable used in formal expansion of an abbreviated GATHERING form (one with anonymous gathering site)." -) - -(DEFUN OPTIMIZE-GATHERING-FORM (CLAUSES BODY GATHERING-ENV) - (LET* - (ACC-INFO LEFTOVER-BODY TOP-BINDINGS FINISH-FORMS TOP-DECLS) - (DOLIST (CLAUSE (IF (SYMBOLP CLAUSES) (IL:* IL:\; "A shorthand") - `((*ANONYMOUS-GATHERING-SITE* (,CLAUSES))) - CLAUSES)) - (MULTIPLE-VALUE-BIND (LET-BODY BINDING-TYPE LET-BINDINGS LOCALDECLS OTHERDECLS EXTRA-BODY) - (EXPAND-INTO-LET (SECOND CLAUSE) - 'GATHERING GATHERING-ENV) - (PROG* ((ACC-VAR (FIRST CLAUSE)) - RENAMED-VARS ACCUMULATOR REALIZER) - (WHEN (AND (CONSP LET-BODY) - (EQ (CAR LET-BODY) - 'VALUES) - (CONSP (SETQ LET-BODY (CDR LET-BODY))) - (SETQ ACCUMULATOR (FUNCTION-LAMBDA-P (CAR LET-BODY))) - (CONSP (SETQ LET-BODY (CDR LET-BODY))) - (SETQ REALIZER (FUNCTION-LAMBDA-P (CAR LET-BODY) - 0)) - (NULL (CDR LET-BODY))) - - (IL:* IL:|;;| "Macro returned something of the form (VALUES #'(lambda (value)") - - (IL:* IL:|;;| - "..) #'(lambda () ...)), a function to accumulate values and a function to realize the result. ") - - (WHEN BINDING-TYPE - - (IL:* IL:|;;| "Gatherer expanded into a LET") - - (COND - (OTHERDECLS (MAYBE-WARN :DEFINITION "Couldn't optimize GATHERING clause ~S because its expansion carries declarations about more than the bound variables: ~S" - (SECOND CLAUSE) - `(DECLARE ,@OTHERDECLS)) - (GO PUNT))) - (WHEN LET-BINDINGS - - (IL:* IL:|;;| "The first transformation we want to perform is a variant of \"LET-eversion\": turn (mv-bind (acc real) (let (..bindings..) (values #'(lambda ...) #'(lambda ") - - (IL:* IL:|;;| "..))) ..body..) into (let* (..bindings.. (acc #'(lambda ...)) (real #'(lambda ...))) ..body..). This transformation is valid if nothing in body refers to any of the bindings, something we can assure by alpha-converting the inner let (substituting new names for each var). Of course, none of those vars can be special, but we already checked for that above. ") - - (MULTIPLE-VALUE-SETQ (LET-BINDINGS RENAMED-VARS) - (RENAME-LET-BINDINGS LET-BINDINGS BINDING-TYPE GATHERING-ENV - LEFTOVER-BODY)) - (SETQ TOP-BINDINGS (NCONC TOP-BINDINGS LET-BINDINGS)) - (SETQ LEFTOVER-BODY NIL) (IL:* IL:\; - "If there was any leftover from previous, it is now consumed ") - )) - (SETQ LEFTOVER-BODY (NCONC LEFTOVER-BODY EXTRA-BODY)) - (IL:* IL:\; - "Computation to do after these bindings ") - (PUSH (CONS ACC-VAR (RENAME-AND-CAPTURE-VARIABLES ACCUMULATOR RENAMED-VARS - GATHERING-ENV)) - ACC-INFO) - (SETQ REALIZER (RENAME-VARIABLES REALIZER RENAMED-VARS GATHERING-ENV)) - (PUSH (COND - ((NULL (CDDDR REALIZER)) (IL:* IL:\; - "Simple (LAMBDA () expr) => expr ") - (THIRD REALIZER)) - (T (IL:* IL:\; - "There could be declarations or something, so leave as a LET ") - (CONS 'LET (CDR REALIZER)))) - FINISH-FORMS) - (UNLESS (NULL LOCALDECLS) (IL:* IL:\; - "Declarations about the LET variables also has to percolate up ") - (SETQ TOP-DECLS (NCONC TOP-DECLS (SUBLIS RENAMED-VARS LOCALDECLS)))) - (RETURN)) - (MAYBE-WARN :DEFINITION "Couldn't optimize GATHERING clause ~S because its expansion is not of the form (VALUES #'(LAMBDA ...) #'(LAMBDA () ...))" - (SECOND CLAUSE)) - PUNT - (LET ((GS (GENSYM)) - (EXPANSION `(MULTIPLE-VALUE-LIST ,(SECOND CLAUSE)))) - (IL:* IL:\; - "Slow way--bind gensym to the macro expansion, and we will funcall it in the body ") - (PUSH (LIST ACC-VAR GS) - ACC-INFO) - (PUSH `(FUNCALL (CADR ,GS)) - FINISH-FORMS) - (SETQ TOP-BINDINGS - (NCONC TOP-BINDINGS - (LIST (LIST GS - (COND - (LEFTOVER-BODY - `(PROGN ,@(PROG1 LEFTOVER-BODY (SETQ LEFTOVER-BODY - NIL)) - ,EXPANSION)) - (T EXPANSION)))))))))) - (SETQ BODY (WALK-GATHERING-BODY BODY GATHERING-ENV ACC-INFO)) - (COND - ((EQ BODY :ABORT) (IL:* IL:\; - "Couldn't finish expansion") - NIL) - (T `(LET* ,TOP-BINDINGS ,@(AND TOP-DECLS `((DECLARE ,@TOP-DECLS))) - ,BODY - ,(COND - ((NULL (CDR FINISH-FORMS)) (IL:* IL:\; "just a single value") - (CAR FINISH-FORMS)) - (T `(VALUES ,@(REVERSE FINISH-FORMS))))))))) - -(DEFUN RENAME-AND-CAPTURE-VARIABLES (FORM ALIST ENV) - - (IL:* IL:|;;| "Walks FORM, renaming occurrences of the key variables in ALIST with their corresponding values, and capturing any other free variables. Returns a list of the new form and the list of other closed-over vars. ENV is FORM's environment, so we can make sure we are talking about the same variables. ") - - (LET (CLOSED) - (LIST (WALK-FORM FORM ENV #'(LAMBDA (FORM CONTEXT SUBENV) - (DECLARE (IGNORE CONTEXT)) - (LET (PAIR) - (COND - ((OR (NOT (SYMBOLP FORM)) - (NOT (VARIABLE-SAME-P FORM SUBENV ENV))) - (IL:* IL:\; - "non-variable or one that has been rebound ") - FORM) - ((SETQ PAIR (ASSOC FORM ALIST)) - (IL:* IL:\; "One to rename") - (CDR PAIR)) - (T (IL:* IL:\; "var is free") - (PUSHNEW FORM CLOSED) - FORM))))) - CLOSED))) - -(DEFUN WALK-GATHERING-BODY (BODY GATHERING-ENV ACC-INFO) - - (IL:* IL:|;;| "Walk the body of (GATHERING (...) . BODY) in environment GATHERING-ENV. ACC-INFO is a list of information about each of the gathering \"bindings\" in the form, in the form (var gatheringfn freevars env) ") - - (LET ((*ACTIVE-GATHERERS* (NCONC (MAPCAR #'CAR ACC-INFO) - *ACTIVE-GATHERERS*))) - - (IL:* IL:|;;| "*ACTIVE-GATHERERS* tells us what vars are currently legal as GATHER targets. This is so that when we encounter a GATHER not belonging to us we can know whether to warn about it. ") - - (WALK-FORM - (CONS 'PROGN BODY) - GATHERING-ENV - #'(LAMBDA (FORM CONTEXT ENV) - (DECLARE (IGNORE CONTEXT)) - (LET (INFO SITE) - (COND - ((CONSP FORM) - (COND - ((NOT (EQ (CAR FORM) - 'GATHER)) (IL:* IL:\; - "We only care about GATHER") - (WHEN (AND (EQ (CAR FORM) - 'FUNCTION) - (EQ (CADR FORM) - 'GATHER)) (IL:* IL:\; - "Passed as functional--can't macroexpand ") - (MAYBE-WARN :USER - "Can't optimize GATHERING because of reference to #'GATHER." - ) - (RETURN-FROM WALK-GATHERING-BODY :ABORT)) - FORM) - ((SETQ INFO (ASSOC (SETQ SITE (IF (NULL (CDDR FORM)) - '*ANONYMOUS-GATHERING-SITE* - (THIRD FORM))) - ACC-INFO)) (IL:* IL:\; - "One of ours--expand (GATHER value var). INFO = (var gatheringfn freevars env) ") - (UNLESS (NULL (CDDDR FORM)) - (WARN "Extra arguments (> 2) in ~S discarded." FORM)) - (LET ((FN (SECOND INFO))) - (COND - ((SYMBOLP FN) (IL:* IL:\; "Unoptimized case--just call the gatherer. FN is the gensym that we bound to the list of two values returned from the gatherer. ") - `(FUNCALL (CAR ,FN) - ,(SECOND FORM))) - (T (IL:* IL:\; - "FN = (lambda (value) ...)") - (DOLIST (S (THIRD INFO)) - (UNLESS (OR (VARIABLE-SAME-P S ENV GATHERING-ENV) - (AND (VARIABLE-SPECIAL-P S ENV) - (VARIABLE-SPECIAL-P S GATHERING-ENV))) - - (IL:* IL:|;;| "Some var used free in the LAMBDA form has been rebound between here and the parent GATHERING form, so can't substitute the lambda. Ok if it's a special reference both here and in the LAMBDA, because then it's not closed over. ") - - (MAYBE-WARN :USER "Can't optimize GATHERING because the expansion closes over the variable ~S, which is rebound around a GATHER for it." - S) - (RETURN-FROM WALK-GATHERING-BODY :ABORT))) - - (IL:* IL:|;;| "Return ((lambda (value) ...) actual-value). In many cases we could simplify this further by substitution, but we'd have to be careful (for example, we would need to alpha-convert any LET we found inside). Any decent compiler will do it for us. ") - - (LIST FN (SECOND FORM)))))) - ((AND (SETQ INFO (MEMBER SITE *ACTIVE-GATHERERS*)) - (OR (EQ SITE '*ANONYMOUS-GATHERING-SITE*) - (VARIABLE-SAME-P SITE ENV (FOURTH INFO)))) - (IL:* IL:\; "Some other GATHERING will take care of this form, so pass it up for now. Environment check is to make sure nobody shadowed it between here and there ") - FORM) - (T (IL:* IL:\; - "Nobody's going to handle it") - (IF (EQ SITE '*ANONYMOUS-GATHERING-SITE*) - (IL:* IL:\; - "More likely that she forgot to mention the site than forget to write an anonymous gathering. ") - (WARN "There is no gathering site specified in ~S." FORM) - (WARN - "The site ~S in ~S is not defined in an enclosing GATHERING form." - SITE FORM)) (IL:* IL:\; - "Turn it into something else so we don't warn twice in the nested case ") - `(%ORPHANED-GATHER ,@(CDR FORM))))) - ((AND (SYMBOLP FORM) - (SETQ INFO (ASSOC FORM ACC-INFO)) - (VARIABLE-SAME-P FORM ENV GATHERING-ENV)) - (IL:* IL:\; - "A variable reference to a gather binding from environment TEM ") - (MAYBE-WARN :USER - "Can't optimize GATHERING because site variable ~S is used outside of a GATHER form." - FORM) - (RETURN-FROM WALK-GATHERING-BODY :ABORT)) - (T FORM))))))) - - - -(IL:* IL:|;;| "Sample gatherers") - - -(DEFMACRO COLLECTING (&KEY INITIAL-VALUE) - `(LET* ((HEAD ,INITIAL-VALUE) - (TAIL ,(AND INITIAL-VALUE `(LAST HEAD)))) - (VALUES #'(LAMBDA (VALUE) - (IF (NULL HEAD) - (SETQ HEAD (SETQ TAIL (LIST VALUE))) - (SETQ TAIL (CDR (RPLACD TAIL (LIST VALUE)))))) - #'(LAMBDA NIL HEAD)))) - -(DEFMACRO JOINING (&KEY INITIAL-VALUE) - `(LET ((RESULT ,INITIAL-VALUE)) - (VALUES #'(LAMBDA (VALUE) - (SETQ RESULT (NCONC RESULT VALUE))) - #'(LAMBDA NIL RESULT)))) - -(DEFMACRO MAXIMIZING (&KEY INITIAL-VALUE) - `(LET ((RESULT ,INITIAL-VALUE)) - (VALUES #'(LAMBDA (VALUE) - (WHEN ,(COND - ((AND (CONSTANTP INITIAL-VALUE) - (NOT (NULL (EVAL INITIAL-VALUE)))) - (IL:* IL:\; - "Initial value is given and we know it's not NIL, so leave out the null check ") - '(> VALUE RESULT)) - (T '(OR (NULL RESULT) - (> VALUE RESULT)))) - (SETQ RESULT VALUE))) - #'(LAMBDA NIL RESULT)))) - -(DEFMACRO MINIMIZING (&KEY INITIAL-VALUE) - `(LET ((RESULT ,INITIAL-VALUE)) - (VALUES #'(LAMBDA (VALUE) - (WHEN ,(COND - ((AND (CONSTANTP INITIAL-VALUE) - (NOT (NULL (EVAL INITIAL-VALUE)))) - (IL:* IL:\; - "Initial value is given and we know it's not NIL, so leave out the null check ") - '(< VALUE RESULT)) - (T '(OR (NULL RESULT) - (< VALUE RESULT)))) - (SETQ RESULT VALUE))) - #'(LAMBDA NIL RESULT)))) - -(DEFMACRO SUMMING (&KEY (INITIAL-VALUE 0)) - `(LET ((SUM ,INITIAL-VALUE)) - (VALUES #'(LAMBDA (VALUE) - (SETQ SUM (+ SUM VALUE))) - #'(LAMBDA NIL SUM)))) - - - -(IL:* IL:\; "Easier to read expanded code if PROG1 gets left alone ") - - -(XCL:DEFINE-FILE-ENVIRONMENT "ITERATE" :PACKAGE (IN-PACKAGE :ITERATE :USE '(:LISP :WALKER)) - :READTABLE "XCL" - :BASE 10 - :COMPILER :COMPILE-FILE) -(IL:PUTPROPS IL:ITERATE IL:COPYRIGHT ("Venue" 1991)) -(IL:DECLARE\: IL:DONTCOPY - (IL:FILEMAP (NIL))) -IL:STOP diff --git a/obsolete/clos/2.0/lap.lisp b/obsolete/clos/2.0/lap.lisp deleted file mode 100644 index 4dceda84..00000000 --- a/obsolete/clos/2.0/lap.lisp +++ /dev/null @@ -1,364 +0,0 @@ -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- - - -;;;. Copyright (c) 1991 by Venue - -(in-package "CLOS") - -;;; This file defines CLOS's interface to the LAP mechanism. The file is divided into two parts. The -;;; first part defines the interface used by CLOS to create abstract LAP code vectors. CLOS never -;;; creates lists that represent LAP code directly, it always calls this mechanism to do so. This -;;; provides a layer of error checking on the LAP code before it gets to the implementation-specific -;;; assembler. Note that this error checking is syntactic only, but even so is useful to have. -;;; Because of it, no specific LAP assembler should worry itself with checking the syntax of the LAP -;;; code. The second part of the file defines the LAP assemblers for each CLOS port. These are -;;; included together in the same file to make it easier to change them all should some random -;;; change be made in the LAP mechanism. - - -(defvar *make-lap-closure-generator*) - -(defvar *precompile-lap-closure-generator*) - -(defvar *lap-in-lisp*) - -(defun make-lap-closure-generator (closure-variables arguments iregs vregs tregs lap-code) - (funcall *make-lap-closure-generator* closure-variables arguments iregs vregs tregs lap-code)) - -(defmacro precompile-lap-closure-generator (cvars args i-regs v-regs t-regs lap) - (funcall *precompile-lap-closure-generator* cvars args i-regs v-regs t-regs lap)) - -(defmacro lap-in-lisp (cvars args iregs vregs tregs lap) - (declare (ignore cvars args)) - `(locally (declare (optimize (safety 0) - (speed 3))) - ,(make-lap-prog iregs vregs tregs (flatten-lap lap (opcode :label 'exit-lap-in-lisp))) - )) - - -;;; The following functions and macros are used by CLOS when generating LAP code: GENERATING-LAP -;;; WITH-LAP-REGISTERS ALLOCATE-REGISTER DEALLOCATE-REGISTER LAP-FLATTEN OPCODE OPERAND - - -(proclaim '(special *generating-lap*)) - - ; CAR - alist of free registers CADR - ; - alist of allocated registers CADDR - ; - max reg number allocated in each - ; alist, the entries have the form: - ; (type . (:REG )) - - - -;;; This goes around the generation of any lap code. should return a lap code sequence, this -;;; macro will take care of converting that to a lap closure generator. - - -(defmacro generating-lap (closure-variables arguments &body body) - `(let* ((*generating-lap* (list nil nil -1))) - (finalize-lap-generation nil ,closure-variables ,arguments (progn ,@body)))) - -(defmacro generating-lap-in-lisp (closure-variables arguments &body body) - `(let* ((*generating-lap* (list nil nil -1))) - (finalize-lap-generation t ,closure-variables ,arguments (progn ,@body)))) - - -;;; Each register specification looks like: ( &key :reuse ) - - -(defmacro with-lap-registers (register-specifications &body body) - - ;; Given that, for now, there is only one keyword argument and that, for now, we do no error - ;; checking, we can be pretty sleazy about how this works. - (flet ((make-allocations - nil - (gathering1 (collecting) - (dolist (spec register-specifications) - (gather1 `(,(car spec) - (or ,(cadddr spec) - (allocate-register ',(cadr spec)))))))) - (make-deallocations nil (gathering1 - (collecting) - (dolist (spec register-specifications) - (gather1 `(unless ,(cadddr spec) - (deallocate-register ,(car spec)))))))) - `(let ,(make-allocations) - (multiple-value-prog1 (progn ,@body) - ,@(make-deallocations))))) - -(defun allocate-register (type) - (destructuring-bind (free allocated) - *generating-lap* - (let ((entry (assoc type free))) - (cond (entry (setf (car *generating-lap*) - (delete entry free) - (cadr *generating-lap*) - (cons entry allocated)) - (cdr entry)) - (t (let ((new `(,type :reg ,(incf (caddr *generating-lap*))))) - (setf (cadr *generating-lap*) - (cons new allocated)) - (cdr new))))))) - -(defun deallocate-register (reg) - (let ((entry (rassoc reg (cadr *generating-lap*)))) - (unless entry (error "Attempt to free an unallocated register.")) - (push entry (car *generating-lap*)) - (setf (cadr *generating-lap*) - (delete entry (cadr *generating-lap*))))) - -(defvar *precompiling-lap* nil) - -(defun finalize-lap-generation (in-lisp-p closure-variables arguments lap-code) - (when (cadr *generating-lap*) - (error "Registers still allocated when lap being finalized.")) - (let ((iregs nil) - (vregs nil) - (tregs nil)) - (dolist (entry (car *generating-lap*)) - (ecase (car entry) - (index (push (caddr entry) - iregs)) - (vector (push (caddr entry) - vregs)) - ((t) (push (caddr entry) - tregs)))) - (cond (in-lisp-p (macroexpand `(lap-in-lisp ,closure-variables ,arguments ,iregs - ,vregs - ,tregs - ,lap-code))) - (*precompiling-lap* (values closure-variables arguments iregs vregs tregs lap-code) - ) - (t (make-lap-closure-generator closure-variables arguments iregs vregs tregs - lap-code))))) - -(defun flatten-lap (&rest opcodes-or-sequences) - (let ((result nil)) - (dolist (opcode-or-sequence opcodes-or-sequences result) - (cond ((null opcode-or-sequence)) - ((not (consp (car opcode-or-sequence))) - ; its an opcode - (setf result (append result (list opcode-or-sequence)))) - (t (setf result (append result opcode-or-sequence))))))) - -(defmacro flattening-lap nil '(let ((result nil)) - (values #'(lambda (value) - (push value result)) - #'(lambda nil (apply #'flatten-lap (reverse result)))))) - - -;;; This code deals with the syntax of the individual opcodes and operands. The first two of these -;;; variables are documented to all ports. They are lists of the symbols which name the lap opcodes -;;; and operands. They can be useful to determine whether a port has implemented all the required -;;; opcodes and operands. The third of these variables is for use of the emitter only. - - -(defvar *lap-operands* nil) - -(defvar *lap-opcodes* nil) - -(defvar *lap-emitters* (make-hash-table :test #'eq :size 30)) - -(defun opcode (name &rest args) - (let ((emitter (gethash name *lap-emitters*))) - (if emitter - (apply emitter args) - (error "No opcode named ~S." name)))) - -(defun operand (name &rest args) - (let ((emitter (gethash name *lap-emitters*))) - (if emitter - (apply emitter args) - (error "No operand named ~S." name)))) - -(defmacro defopcode (name types) - (let ((fn-name (symbol-append "LAP Opcode " name *the-clos-package*)) - (lambda-list (mapcar #'(lambda (x) - (declare (ignore x)) - (gensym)) - types))) - `(progn (eval-when (load eval) - (load-defopcode ',name ',fn-name)) - (defun ,fn-name ,lambda-list (defopcode-1 ',name ',types ,@lambda-list))))) - -(defmacro defoperand (name types) - (let ((fn-name (symbol-append "LAP Operand " name *the-clos-package*)) - (lambda-list (mapcar #'(lambda (x) - (declare (ignore x)) - (gensym)) - types))) - `(progn (eval-when (load eval) - (load-defoperand ',name ',fn-name)) - (defun ,fn-name ,lambda-list (defoperand-1 ',name ',types ,@lambda-list))))) - -(defun load-defopcode (name fn-name) - (if* (memq name *lap-operands*) - (error "LAP opcodes and operands must have disjoint names.") - (setf (gethash name *lap-emitters*) - fn-name) - (pushnew name *lap-opcodes*))) - -(defun load-defoperand (name fn-name) - (if* (memq name *lap-opcodes*) - (error "LAP opcodes and operands must have disjoint names.") - (setf (gethash name *lap-emitters*) - fn-name) - (pushnew name *lap-operands*))) - -(defun defopcode-1 (name operand-types &rest args) - (iterate ((arg (list-elements args)) - (type (list-elements operand-types))) - (check-opcode-arg name arg type)) - (cons name (copy-list args))) - -(defun defoperand-1 (name operand-types &rest args) - (iterate ((arg (list-elements args)) - (type (list-elements operand-types))) - (check-operand-arg name arg type)) - (cons name (copy-list args))) - -(defun check-opcode-arg (name arg type) - (labels ((usual (x) - (and (consp arg) - (eq (car arg) - x))) - (check (x) - (ecase x - ((:reg :cdr :constant :iref :cvar :arg :lisp :lisp-variable) (usual x)) - (:label (symbolp arg)) - (:operand (and (consp arg) - (memq (car arg) - *lap-operands*)))))) - (unless (if (consp type) - (if (eq (car type) - 'or) - (some #'check (cdr type)) - (error "What type is this?")) - (check type)) - (error "The argument ~S to the opcode ~A is not of type ~S." arg name type)))) - -(defun check-operand-arg (name arg type) - (flet ((check (x) - (ecase x - (:symbol (symbolp arg)) - (:register-number (and (integerp arg) - (>= x 0))) - (:t t) - (:reg (and (consp arg) - (eq (car arg) - :reg))) - (:fixnum (typep arg 'fixnum))))) - (unless (if (consp type) - (if (eq (car type) - 'or) - (some #'check (cdr type)) - (error "What type is this?")) - (check type)) - (error "The argument ~S to the operand ~A is not of type ~S." arg name type)))) - - -;;; The actual opcodes. - - -(defopcode :break nil) - - ; For debugging only. Not - - -(defopcode :beep nil) - - ; all ports are required to - - -(defopcode :print (:reg)) - - ; implement this. - - -(defopcode :move (:operand (or :reg :iref :cdr :lisp-variable))) - -(defopcode :eq ((or :reg :constant) - (or :reg :constant) - :label)) - -(defopcode :neq ((or :reg :constant) - (or :reg :constant) - :label)) - -(defopcode :fix= ((or :reg :constant) - (or :reg :constant) - :label)) - -(defopcode :izerop (:reg :label)) - -(defopcode :std-instance-p (:reg :label)) - -(defopcode :fsc-instance-p (:reg :label)) - -(defopcode :built-in-instance-p (:reg :label)) - -(defopcode :structure-instance-p (:reg :label)) - -(defopcode :jmp ((or :reg :constant))) - -(defopcode :label (:label)) - -(defopcode :go (:label)) - -(defopcode :return ((or :reg :constant))) - -(defopcode :exit-lap-in-lisp nil) - - -;;; The actual operands. - - -(defoperand :reg (:register-number)) - -(defoperand :cvar (:symbol)) - -(defoperand :arg (:symbol)) - -(defoperand :cdr (:reg)) - -(defoperand :constant (:t)) - -(defoperand :std-wrapper (:reg)) - -(defoperand :fsc-wrapper (:reg)) - -(defoperand :built-in-wrapper (:reg)) - -(defoperand :structure-wrapper (:reg)) - -(defoperand :other-wrapper (:reg)) - -(defoperand :std-slots (:reg)) - -(defoperand :fsc-slots (:reg)) - -(defoperand :cref (:reg :fixnum)) - -(defoperand :iref (:reg :reg)) - -(defoperand :iset (:reg :reg :reg)) - -(defoperand :i1+ (:reg)) - -(defoperand :i+ (:reg :reg)) - -(defoperand :i- (:reg :reg)) - -(defoperand :ilogand (:reg :reg)) - -(defoperand :ilogxor (:reg :reg)) - -(defoperand :ishift (:reg :fixnum)) - -(defoperand :lisp (:t)) - -(defoperand :lisp-variable (:symbol)) - - -;;; LAP tests (there need to be a lot more of these) - diff --git a/obsolete/clos/2.0/load-clos.lisp b/obsolete/clos/2.0/load-clos.lisp deleted file mode 100644 index 8ba7e9a2..00000000 --- a/obsolete/clos/2.0/load-clos.lisp +++ /dev/null @@ -1,42 +0,0 @@ -;;; -*- Mode: Lisp; Package: xcl-User ; Base: 10.; Syntax: Common-Lisp -*- -;;; - -(in-package "CLOS" :use (list (or (find-package :walker) - (make-package :walker :use '(:lisp))) - (or (find-package :iterate) - (make-package :iterate - :use '(:lisp :walker))) - (find-package :lisp))) -(export (intern (symbol-name :iterate) ;Have to do this here, - (find-package :iterate)) ;because in the defsystem - (find-package :iterate)) ;(later in this file) - ;we use the symbol iterate - ;to name the file - -(defun load-truename (&optional (errorp nil)) - (flet ((bad-time () - (when errorp - (error "LOAD-TRUENAME called but a file isn't being loaded.")))) - (let ((filename (pathname (il:fullname *standard-input*)))) - (if filename - (make-pathname :host (pathname-host filename) :device - (pathname-device filename) :directory - (pathname-directory filename) :name "") - (bad-time))))) - -(defvar *clos-directory* (load-truename)) - -(defun load-clos (&optional pathname) - (defvar *clos-system-date* "7/14/91 Medley 2.0 (interim)") - (defvar *the-clos-package* (find-package :clos)) - (dolist (filename '(patch pkg walk iterate macros low low2 fin - defclass defs fngen lap plap cache dlap boot - vector slots init std-class cpl braid fsc methods - combin dfun precom1 precom2 precom4 fixup - defcombin ctypes construct env)) - - (load (merge-pathnames - (make-pathname :name (string-downcase filename) :type - "dfasl") (or pathname *clos-directory*)))) - (pushnew :clos cl:*features*)) - diff --git a/obsolete/clos/2.0/low.lisp b/obsolete/clos/2.0/low.lisp deleted file mode 100644 index dcd28cef..00000000 --- a/obsolete/clos/2.0/low.lisp +++ /dev/null @@ -1,194 +0,0 @@ - -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- - - -;;; File converted on 26-Mar-91 10:29:45 from source low -;;;. Original source {dsk}local>users>welch>lisp>clos>rev4>il-format>low.;4 created 27-Feb-91 17:16:47 - -;;;. Copyright (c) 1991 by Venue - - - -(in-package "CLOS") - -;;; Shadow, Export, Require, Use-package, and Import forms should follow here - - - -;;; -;;;************************************************************************* -;;;Copyright (c) 1991 Venue -;;; This file contains portable versions of low-level functions and macros which are ripe for -;;; implementation specific customization. None of the code in this file *has* to be customized for -;;; a particular Common Lisp implementation. Moreover, in some implementations it may not make any -;;; sense to customize some of this code. ks. - - -(defmacro %svref (vector index) - `(locally (declare (optimize (speed 3) - (safety 0)) - (inline svref)) - (svref (the simple-vector ,vector) - (the fixnum ,index)))) - -(defsetf %svref (vector index) - (new-value) - `(locally (declare (optimize (speed 3) - (safety 0)) - (inline svref)) - (setf (svref (the simple-vector ,vector) - (the fixnum ,index)) - ,new-value))) - - -;;; without-interrupts OK, Common Lisp doesn't have this and for good reason. But For all of the -;;; Common Lisp's that CLOS runs on today, there is a meaningful way to implement this. WHAT I MEAN -;;; IS: I want the body to be evaluated in such a way that no other code that is running CLOS can be -;;; run during that evaluation. I agree that the body won't take *long* to evaluate. That is to -;;; say that I will only use without interrupts around relatively small computations. INTERRUPTS-ON -;;; should turn interrupts back on if they were on. INTERRUPTS-OFF should turn interrupts back off. -;;; These are only valid inside the body of WITHOUT-INTERRUPTS. OK? - - - -;;; AKW: IT'S CALLED, BUT NEVER REALLY USED, SO I'VE REPLACED IT WITH THE PROGN. IF WE REALLY NEED -;;; IT, CAN BE TRIVIALLY DONE WITH IL:MONITORS - - -(defmacro without-interrupts (&body body) - `(progn ,.body)) - - -;;; Very Low-Level representation of instances with meta-class standard-class. - - -(defmacro std-instance-wrapper (x) - `(%std-instance-wrapper ,x)) - -(defmacro std-instance-slots (x) - `(%std-instance-slots ,x)) - -(defun print-std-instance (instance stream depth) - ; A temporary definition used - (declare (ignore depth)) - ; for debugging the bootstrap - (printing-random-thing (instance stream) - ; code of CLOS (See high.lisp). - (format stream "#"))) - -(defmacro %allocate-instance--class (no-of-slots) - `(let ((instance (%%allocate-instance--class))) - (%allocate-instance--class-1 ,no-of-slots instance) - instance)) - -(defmacro %allocate-instance--class-1 (no-of-slots instance) - (once-only (instance) - `(progn (setf (std-instance-slots ,instance) - (%allocate-static-slot-storage--class ,no-of-slots))))) - - -;;; This is the value that we stick into a slot to tell us that it is unbound. It may seem gross, -;;; but for performance reasons, we make this an interned symbol. That means that the fast check to -;;; see if a slot is unbound is to say (EQ '..SLOT-UNBOUND..). That is considerably faster -;;; than looking at the value of a special variable. Be careful, there are places in the code which -;;; actually use ..slot-unbound.. rather than this variable. So much for modularity - - -(defvar *slot-unbound* '..slot-unbound..) - -(defmacro %allocate-static-slot-storage--class (no-of-slots) - `(make-array ,no-of-slots :initial-element *slot-unbound*)) - -(defmacro std-instance-class (instance) - `(wrapper-class (std-instance-wrapper ,instance))) - - -;; - - - -;;; FUNCTION-ARGLIST - - - -;; - - - -;;; [COMMENTED OUT AKW. NEVER CALLED] Given something which is functionp, function-arglist should -;;; return the argument list for it. CLOS does not count on having this available, but -;;; MAKE-SPECIALIZABLE works much better if it is available. Versions of function-arglist for each -;;; specific port of clos should be put in the appropriate xxx-low file. This is what it should look -;;; like: - - - ; (defun function-arglist (function) - ; ( - ; function)) - - - -;; (FUNCTIONS CLOS::FUNCTION-PRETTY-ARGLIST) (SETFS CLOS::FUNCTION-PRETTY-ARGLIST) (FUNCTIONS -;; CLOS::SET-FUNCTION-PRETTY-ARGLIST) - - - -;;; set-function-name When given a function should give this function the name . Note that -;;; is sometimes a list. Some lisps get the upset in the tummy when they start thinking -;;; about functions which have lists as names. To deal with that there is set-function-name-intern -;;; which takes a list spec for a function name and turns it into a symbol if need be. When given a -;;; funcallable instance, set-function-name MUST side-effect that FIN to give it the name. When -;;; given any other kind of function set-function-name is allowed to return new function which is -;;; the 'same' except that it has the name. In all cases, set-function-name must return the new (or -;;; same) function. - - -(defun set-function-name #'new-name (declare (notinline set-function-name-1 intern-function-name)) - (set-function-name-1 function (intern-function-name new-name) - new-name)) - -(defun set-function-name-1 (fn new-name uninterned-name) - (cond ((typep fn 'il:compiled-closure) - (il:\\rplptr (compiled-closure-fnheader fn) - 4 new-name) - (when (and (consp uninterned-name) - (eq (car uninterned-name) - 'method)) - (let ((debug (si::compiled-function-debugging-info fn))) - (when debug - (setf (cdr debug) - uninterned-name))))) - (t nil)) - fn) - -(defun intern-function-name (name) - (cond ((symbolp name) - name) - ((listp name) - (intern (let ((*package* *the-clos-package*) - (*print-case* :upcase) - (*print-gensym* 't)) - (format nil "~S" name)) - *the-clos-package*)))) - - -;;; COMPILE-LAMBDA This is like the Common Lisp function COMPILE. In fact, that is what it ends up -;;; calling. - - -(defun compile-lambda (lambda &rest desirability) - (declare (ignore desirability)) - (compile nil lambda)) - -(defmacro precompile-random-code-segments (&optional system) - `(progn - (precompile-function-generators ,system) - (precompile-dfun-constructors ,system))) - - - -(defun record-definition (type spec &rest args) - (declare (ignore type spec args)) - ()) - -(defun doctor-dfun-for-the-debugger (gf dfun) (declare (ignore gf)) dfun) \ No newline at end of file diff --git a/obsolete/clos/2.0/low2.lisp b/obsolete/clos/2.0/low2.lisp deleted file mode 100644 index 0c648b9b..00000000 --- a/obsolete/clos/2.0/low2.lisp +++ /dev/null @@ -1,144 +0,0 @@ -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- - - -;;; File converted on 26-Mar-91 10:30:44 from source xerox-low -;;;. Original source {dsk}local>users>welch>lisp>clos>rev4>il-format>xerox-low.;3 created 27-Feb-91 16:37:43 - -;;;. Copyright (c) 1991 by Venue - - - -(in-package "CLOS") - -;;; Shadow, Export, Require, Use-package, and Import forms should follow here - - - -;;; ************************************************************************* This is the 1100 -;;; (Xerox version) of the file portable-low. - - -(defmacro load-time-eval (form) - `(il:loadtimeconstant ,form)) - - -;;; make the pointer from an instance to its class wrapper be an xpointer. this prevents instance -;;; creation from spending a lot of time incrementing the large refcount of the class-wrapper. This -;;; is safe because there will always be some other pointer to the wrapper to keep it around. - - -(defstruct (std-instance (:predicate std-instance-p) - (:conc-name %std-instance-) - (:constructor %%allocate-instance--class nil) - (:fast-accessors t) - (:print-function %print-std-instance)) - (wrapper nil :type il:fullxpointer) - (slots nil)) - -(defun %print-std-instance (instance &optional stream depth) - - ;; See the IRM, section 25.3.3. Unfortunatly, that documentation is not correct. In - ;; particular, it makes no mention of the third argument. - (cond ((streamp stream) - - ;; Use the standard CLOS printing method, then return T to tell the printer that we - ;; have done the printing ourselves. - (print-std-instance instance stream depth) - t) - (t - ;; Internal printing (again, see the IRM section 25.3.3). Return a list containing - ;; the string of characters that would be printed, if the object were being printed - ;; for real. - (list (with-output-to-string (stream) - (print-std-instance instance stream depth)))))) - - -;; - - - -;;; FUNCTION-ARGLIST - - - -;; - - -(defun function-arglist (x) - - ;; Xerox lisp has the bad habit of returning a symbol to mean &rest, and strings instead of - ;; symbols. How silly. - (let ((arglist (il:arglist x))) - (when (symbolp arglist) - - ;; This could be due to trying to extract the arglist of an interpreted function - ;; (though why that should be hard is beyond me). On the other hand, if the - ;; function is compiled, it helps to ask for the "smart" arglist. - (setq arglist (if (consp (symbol-function x)) - (second (symbol-function x)) - (il:arglist x t)))) - (if (symbolp arglist) - - ;; Probably never get here, but just in case - (list '&rest 'rest) - - ;; Make sure there are no strings where there should be symbols - (if (some #'stringp arglist) - (mapcar #'(lambda (a) - (if (symbolp a) - a - (intern a))) - arglist) - arglist)))) - -(defun printing-random-thing-internal (thing stream) - (let ((*print-base* 8)) - (princ (il:\\hiloc thing) - stream) - (princ "," stream) - (princ (il:\\loloc thing) - stream))) - -(defun record-definition (name type &optional parent-name parent-type) - (declare (ignore type parent-name)) - nil) - - -;;; FIN uses this too! - - -(eval-when (compile load eval) - (il:datatype il:compiled-closure (il:fnheader il:environment)) - (il:blockrecord closure-overlay ((funcallable-instance-p il:flag)))) - -(defun compiled-closure-fnheader (compiled-closure) - (il:fetch (il:compiled-closure il:fnheader) - il:of compiled-closure)) - -(defun set-compiled-closure-fnheader (compiled-closure nv) - (il:replace (il:compiled-closure il:fnheader) - il:of compiled-closure nv)) - -(defsetf compiled-closure-fnheader set-compiled-closure-fnheader) - - -;;; In Lyric, and until the format of FNHEADER changes, getting the name from a compiled closure -;;; looks like this: (fetchfield '(nil 4 pointer) (fetch (compiled-closure fnheader) closure)) Of -;;; course this is completely non-robust, but it will work for now. This is not the place to go -;;; into a long tyrade about what is wrong with having record package definitions go away when you -;;; ship the sysout; there isn't enough diskspace. - - -(defun set-function-name-1 (fn new-name uninterned-name) - (cond ((typep fn 'il:compiled-closure) - (il:\\rplptr (compiled-closure-fnheader fn) - 4 new-name) - (when (and (consp uninterned-name) - (eq (car uninterned-name) - 'method)) - (let ((debug (si::compiled-function-debugging-info fn))) - (when debug - (setf (cdr debug) - uninterned-name))))) - (t nil)) - fn) diff --git a/obsolete/clos/2.0/macros.lisp b/obsolete/clos/2.0/macros.lisp deleted file mode 100644 index 4f6a294d..00000000 --- a/obsolete/clos/2.0/macros.lisp +++ /dev/null @@ -1,355 +0,0 @@ -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- - - -;;; File converted on 26-Mar-91 10:27:21 from source macros -;;;. Original source {dsk}local>users>welch>lisp>clos>rev4>il-format>macros.;3 created 19-Feb-91 13:51:21 - -;;;. Copyright (c) 1991 Venue - - - -(in-package "CLOS") - - -;;;Macros global variable -;;; definitions, and other random support stuff used by the rest of the system. For simplicity (not -;;; having to use eval-when a lot), this file must be loaded before it can be compiled. - - -(in-package 'clos) - -(proclaim '(declaration values arglist indentation class variable-rebinding clos-fast-call)) - - -;;; Age old functions which CommonLisp cleaned-up away. They probably exist in other packages in -;;; all CommonLisp implementations, but I will leave it to the compiler to optimize into calls to -;;; them. Common Lisp BUG: Some Common Lisps define these in the Lisp package which causes all sorts -;;; of lossage. Common Lisp should explictly specify which symbols appear in the Lisp package. - - -(eval-when (compile load eval) - (defmacro memq (item list) - `(member ,item ,list :test #'eq)) - (defmacro assq (item list) - `(assoc ,item ,list :test #'eq)) - (defmacro rassq (item list) - `(rassoc ,item ,list :test #'eq)) - (defmacro delq (item list) - `(delete ,item ,list :test #'eq)) - (defmacro posq (item list) - `(position ,item ,list :test #'eq)) - (defmacro neq (x y) - `(not (eq ,x ,y))) - (defun make-caxr (n form) - (if (< n 4) - `(,(nth n '(car cadr caddr cadddr)) - ,form) - (make-caxr (- n 4) - `(cddddr ,form)))) - (defun make-cdxr (n form) - (cond ((zerop n) - form) - ((< n 5) - `(,(nth n '(identity cdr cddr cdddr cddddr)) - ,form)) - (t (make-cdxr (- n 4) - `(cddddr ,form)))))) - -(defun zero (&rest ignore) - (declare (ignore ignore)) - 0) - -(defun make-plist (keys vals) - (if (null vals) - nil - (list* (car keys) - (car vals) - (make-plist (cdr keys) - (cdr vals))))) - -(defun remtail (list tail) - (if (eq list tail) - nil - (cons (car list) - (remtail (cdr list) - tail)))) - - -;;; ONCE-ONLY does the same thing as it does in zetalisp. I should have just lifted it from there -;;; but I am honest. Not only that but this one is written in Common Lisp. I feel a lot like -;;; bootstrapping, or maybe more like rebuilding Rome. - - -(defmacro once-only (vars &body body) - (let ((gensym-var (gensym)) - (run-time-vars (gensym)) - (run-time-vals (gensym)) - (expand-time-val-forms nil)) - (dolist (var vars) - (push `(if (or (symbolp ,var) - (numberp ,var) - (and (listp ,var) - (member (car ,var) - ''function))) - ,var - (let ((,gensym-var (gensym))) - (push ,gensym-var ,run-time-vars) - (push ,var ,run-time-vals) - ,gensym-var)) - expand-time-val-forms)) - `(let* (,run-time-vars ,run-time-vals (wrapped-body (let ,(mapcar #'list vars - (reverse - expand-time-val-forms - )) - ,@body))) - `(let ,(mapcar #'list (reverse ,run-time-vars) - (reverse ,run-time-vals)) - ,wrapped-body)))) - -(eval-when - (compile load eval) - (defun extract-declarations (body &optional environment) - (declare (values documentation declarations body)) - (let (documentation declarations form) - (when (and (stringp (car body)) - (cdr body)) - (setq documentation (pop body))) - (block outer - (loop (when (null body) - (return-from outer nil)) - (setq form (car body)) - (when (block inner - (loop (cond ((not (listp form)) - (return-from outer nil)) - ((eq (car form) - 'declare) - (return-from inner 't)) - (t (multiple-value-bind - (newform macrop) - (macroexpand-1 form environment) - (if (or (not (eq newform form)) - macrop) - (setq form newform) - (return-from outer nil))))))) - (pop body) - (dolist (declaration (cdr form)) - (push declaration declarations))))) - (values documentation (and declarations `((declare ,.(nreverse declarations)))) - body)))) - -(defvar *keyword-package* (find-package 'keyword)) - -(defun make-keyword (symbol) - (intern (symbol-name symbol) - *keyword-package*)) - -(eval-when (compile load eval) - (defun string-append (&rest strings) - (setq strings (copy-list strings)) - ; The explorer can't even rplaca an - ; &rest arg? - (do ((string-loc strings (cdr string-loc))) - ((null string-loc) - (apply #'concatenate 'string strings)) - (rplaca string-loc (string (car string-loc)))))) - -(defun symbol-append (sym1 sym2 &optional (package *package*)) - (intern (string-append sym1 sym2) - package)) - -(defmacro check-member (place list &key (test #'eql) - (pretty-name place)) - (once-only (place list) - `(or (member ,place ,list :test ,test) - (error "The value of ~A, ~S is not one of ~S." ',pretty-name ,place ,list)))) - -(defmacro alist-entry (alist key make-entry-fn) - (once-only (alist key) - `(or (assq ,key ,alist) - (progn (setf ,alist (cons (,make-entry-fn ,key) - ,alist)) - (car ,alist))))) - -(defmacro collecting-once (&key initial-value) - `(let* ((head ,initial-value) - (tail ,(and initial-value `(last head)))) - (values #'(lambda (value) - (if (null head) - (setq head (setq tail (list value))) - (unless (memq value head) - (setq tail (cdr (rplacd tail (list value))))))) - #'(lambda nil head)))) - -(defmacro doplist ((key val) - plist &body body &environment env) - (multiple-value-bind (doc decls bod) - (extract-declarations body env) - (declare (ignore doc)) - `(let ((.plist-tail. ,plist) - ,key - ,val) - ,@decls - (loop (when (null .plist-tail.) - (return nil)) - (setq ,key (pop .plist-tail.)) - (when (null .plist-tail.) - (error "Malformed plist in doplist, odd number of elements.")) - (setq ,val (pop .plist-tail.)) - (progn ,@bod))))) - -(defmacro if* (condition true &rest false) - `(if ,condition - ,true - (progn ,@false))) - - -;; - - - -;;; printing-random-thing - - - -;; - - - -;;; Similar to printing-random-object in the lisp machine but much simpler and machine independent. - - -(defmacro printing-random-thing ((thing stream) - &body body) - (once-only (stream) - `(progn (format ,stream "#<") - ,@body - (format ,stream " ") - (printing-random-thing-internal ,thing ,stream) - (format ,stream ">")))) - -(defun printing-random-thing-internal (thing stream) - (let ((*print-base* 8)) - (princ (il:\\hiloc thing) - stream) - (princ "," stream) - (princ (il:\\loloc thing) - stream))) - - -;; - - - -;;; - - - -;; - - -(defun capitalize-words (string &optional (dashes-p t)) - (let ((string (copy-seq (string string)))) - (declare (string string)) - (do* ((flag t flag) - (length (length string) - length) - (char nil char) - (i 0 (+ i 1))) - ((= i length) - string) - (setq char (elt string i)) - (cond ((both-case-p char) - (if flag - (and (setq flag (lower-case-p char)) - (setf (elt string i) - (char-upcase char))) - (and (not flag) - (setf (elt string i) - (char-downcase char)))) - (setq flag nil)) - ((char-equal char #\-) - (setq flag t) - (unless dashes-p - (setf (elt string i) - #\Space))) - (t (setq flag nil)))))) - - -;;; FIND-CLASS This is documented in the CLOS specification. - - -(defvar *find-class* (make-hash-table :test #'eq)) - -(defun legal-class-name-p (x) - (and (symbolp x) - (not (keywordp x)))) - -(defun find-class (symbol &optional (errorp t) - environment) - (declare (ignore environment)) - (or (gethash symbol *find-class*) - (cond ((null errorp) - nil) - ((legal-class-name-p symbol) - (error "No class named: ~S." symbol)) - (t (error "~S is not a legal class name." symbol))))) - -(defsetf find-class (symbol &optional (errorp t) - environment) - (new-value) - (declare (ignore errorp environment)) - `(|SETF CLOS FIND-CLASS| ,new-value ,symbol)) - -(defun |SETF CLOS FIND-CLASS| (new-value symbol) - (if (legal-class-name-p symbol) - (setf (gethash symbol *find-class*) - new-value) - (error "~S is not a legal class name." symbol))) - -(defun find-wrapper (symbol) - (class-wrapper (find-class symbol))) - -(defmacro gathering1 (gatherer &body body) - `(gathering ((.gathering1. ,gatherer)) - (macrolet ((gather1 (x) - `(gather ,x .gathering1.))) - ,@body))) - - -;;; - - -(defmacro vectorizing (&key (size 0)) - `(let* ((limit ,size) - (result (make-array limit)) - (index 0)) - (values #'(lambda (value) - (if (= index limit) - (error "vectorizing more elements than promised.") - (progn (setf (svref result index) - value) - (incf index) - value))) - #'(lambda nil result)))) - - -;;; These are augmented definitions of list-elements and list-tails from iterate.lisp. These -;;; versions provide the extra :by keyword which can be used to specify the step function through -;;; the list. - - -(defmacro *list-elements (list &key (by #'cdr)) - `(let ((tail ,list)) - #'(lambda (finish) - (if (endp tail) - (funcall finish) - (prog1 (car tail) - (setq tail (funcall ,by tail))))))) - -(defmacro *list-tails (list &key (by #'cdr)) - `(let ((tail ,list)) - #'(lambda (finish) - (prog1 (if (endp tail) - (funcall finish) - tail) - (setq tail (funcall ,by tail)))))) diff --git a/obsolete/clos/2.0/methods.lisp b/obsolete/clos/2.0/methods.lisp deleted file mode 100644 index fa52befe..00000000 --- a/obsolete/clos/2.0/methods.lisp +++ /dev/null @@ -1,1304 +0,0 @@ -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- - - -;;;. Copyright (c) 1991 by Venue - -(in-package "CLOS") - - - -;;; METHODS Methods themselves are simple inanimate objects. Most properties of methods are -;;; immutable, methods cannot be reinitialized. The following properties of methods can be changed: -;;; METHOD-GENERIC-FUNCTION METHOD-FUNCTION ?? - -(defclass method (metaobject) ()) - -(defclass standard-method (definition-source-mixin documentation-mixin method) - ((generic-function - :initform nil - :accessor method-generic-function) -; (qualifiers -; :initform () -; :initarg :qualifiers -; :reader method-qualifiers) - (specializers - :initform () - :initarg :specializers - :reader method-specializers) - (lambda-list - :initform () - :initarg :lambda-list - :reader method-lambda-list) - (function - :initform nil - :initarg :function - :reader method-function) ;writer defined by hand -; (documentation -; :initform "" -; :initarg :documentation) - )) - -(defclass standard-accessor-method (standard-method) - ((slot-name :initform nil - :initarg :slot-name))) - - -;;; This method has to be defined by hand! Don't try to define it using :accessor or :reader. It -;;; can't be an automatically generated reader method because that would break the way the special -;;; discriminator code which uses this feature works. -- Probably false now 8/21 - - -(defmethod accessor-method-slot-name ((m standard-accessor-method)) - (slot-value m 'slot-name)) - -(defclass standard-reader-method (standard-accessor-method) ()) -(defclass standard-writer-method (standard-accessor-method) ()) - -(defmethod print-object ((method standard-method) - stream) - (printing-random-thing (method stream) - (let ((generic-function (method-generic-function method)) - (class-name (capitalize-words (class-name (class-of method))))) - (format stream "~A ~S ~{~S ~}~:S" class-name (and generic-function ( - generic-function-name - - generic-function - )) - (method-qualifiers method) - (unparse-specializers method))))) - -(defmethod print-object ((method standard-accessor-method) - stream) - (printing-random-thing (method stream) - (let ((generic-function (method-generic-function method)) - (class-name (capitalize-words (class-name (class-of method))))) - (format stream "~A ~S, slot:~S, ~:S" class-name (and generic-function ( - generic-function-name - - generic-function - )) - (accessor-method-slot-name method) - (unparse-specializers method))))) - - -;;; INITIALIZATION Error checking is done in before methods. Because of the simplicity of standard -;;; method objects the standard primary method can fill the slots. Methods are not reinitializable. - - -(defmethod reinitialize-instance ((method standard-method) - &rest initargs) - (declare (ignore initargs)) - (error - "Attempt to reinitialize the method ~S.~%~ - Method objects cannot be reinitialized." method)) - -(defmethod shared-initialize :before ((method standard-method) - slot-names &key qualifiers lambda-list specializers function - documentation) - (declare (ignore slot-names)) - (flet ((lose (initarg value string) - (error "When initializing the method ~S:~%~ - The ~S initialization argument was: ~S.~%~ - which ~A." method initarg value string))) - (let ((check-qualifiers (legal-std-qualifiers-p qualifiers)) - (check-lambda-list (legal-std-lambda-list-p lambda-list)) - (check-specializers (legal-std-specializers-p specializers)) - (check-function (legal-std-method-function-p function)) - (check-documentation (legal-std-documentation-p documentation))) - (unless (eq check-qualifiers t) - (lose :qualifiers qualifiers check-qualifiers)) - (unless (eq check-lambda-list t) - (lose :lambda-list lambda-list check-lambda-list)) - (unless (eq check-specializers t) - (lose :specializers specializers check-specializers)) - (unless (eq check-function t) - (lose :function function check-function)) - (unless (eq check-documentation t) - (lose :documentation documentation check-documentation))))) - -(defmethod shared-initialize :before ((method standard-accessor-method) - slot-names &key slot-name) - (declare (ignore slot-names)) - (let ((legalp (legal-std-slot-name-p slot-name))) - (unless (eq legalp t) - (error "The value of the :SLOT-NAME initarg ~A." legalp)))) - -(defmethod shared-initialize :after ((method standard-method) - slot-names &key qualifiers) - (setf (plist-value method 'qualifiers) - qualifiers)) - -(defmethod method-qualifiers ((method standard-method)) - (plist-value method 'qualifiers)) - -(defclass generic-function (dependent-update-mixin - definition-source-mixin - metaobject) - () - (:metaclass funcallable-standard-class)) - -(defclass standard-generic-function (generic-function) - ((name - :initform nil - :initarg :name - :accessor generic-function-name) - (methods - :initform () - :accessor generic-function-methods) - (method-class - :initarg :method-class - :accessor generic-function-method-class) - (method-combination - :initarg :method-combination - :accessor generic-function-method-combination) - -; (permutation -; :accessor gf-permutation) - (arg-info - :initform () - :accessor gf-arg-info) - (dfun-state - :initform () - :accessor gf-dfun-state) - (effective-method-functions ;((methods . fn) ..) - :initform () - :accessor gf-effective-method-functions) - (valid-p - :initform nil - :accessor gf-valid-p) - (pretty-arglist - :initform () - :accessor gf-pretty-arglist) - ) - (:metaclass funcallable-standard-class) - (:default-initargs :method-class *the-class-standard-method* - :method-combination *standard-method-combination*)) - - -(define-gf-predicate generic-function-p generic-function) - -(define-gf-predicate method-p method) - -(define-gf-predicate standard-accessor-method-p standard-accessor-method) - -(define-gf-predicate standard-reader-method-p standard-reader-method) - -(define-gf-predicate standard-writer-method-p standard-writer-method) - -(defvar *the-class-method* (find-class 'method)) - -(defvar *the-class-standard-method* (find-class 'standard-method)) - -(defvar *the-class-generic-function* (find-class 'generic-function)) - -(defvar *the-class-standard-generic-function* (find-class 'standard-generic-function)) - -(defmethod print-object ((generic-function generic-function) - stream) - (named-object-print-function generic-function stream (list (length (generic-function-methods - generic-function))))) - -(defmethod shared-initialize :before ((generic-function standard-generic-function) - slot-names &key (name nil namep) - (lambda-list nil lambda-list-p) - argument-precedence-order declarations documentation - (method-class nil method-class-supplied-p) - (method-combination nil method-combination-supplied-p)) - (declare (ignore slot-names declarations argument-precedence-order lambda-list lambda-list-p - name)) - (when namep (set-function-name generic-function name)) - (flet ((initarg-error (initarg value string) - (error "When initializing the generic-function ~S:~%~ - The ~S initialization argument was: ~A.~%~ - It must be ~A." generic-function initarg value string))) - (cond (method-class-supplied-p (when (symbolp method-class) - (setq method-class (find-class method-class))) - (unless (and (classp method-class) - (*subtypep method-class *the-class-method*)) - (initarg-error :method-class method-class - "a subclass of the class METHOD")) - (setf (slot-value generic-function 'method-class) - method-class)) - ((slot-boundp generic-function 'method-class)) - (t (initarg-error :method-class "not supplied" "a subclass of the class METHOD"))) - (cond (method-combination-supplied-p (unless (method-combination-p method-combination) - (initarg-error :method-combination - method-combination - "a method combination object"))) - ((slot-boundp generic-function 'method-combination)) - (t (initarg-error :method-combination "not supplied" "a method combination object" - ))))) - -(defmethod initialize-instance :after ((gf standard-generic-function) - &key lambda-list argument-precedence-order) - (declare (ignore slot-names)) - (when lambda-list - (setf (gf-arg-info gf) - (new-arg-info-from-generic-function lambda-list argument-precedence-order)))) - -(defmethod reinitialize-instance ((generic-function standard-generic-function) - &rest initargs &key name lambda-list argument-precedence-order - declarations documentation method-class method-combination) - (declare (ignore documentation declarations argument-precedence-order lambda-list name - method-class method-combination)) - (macrolet ((add-initarg (check name slot-name) - `(unless ,check - (push (slot-value generic-function ,slot-name) - initargs) - (push ,name initargs)))) - ; (add-initarg name :name 'name) - ; (add-initarg lambda-list :lambda-list - ; 'lambda-list) (add-initarg - ; argument-precedence-order - ; :argument-precedence-order - ; 'argument-precedence-order) - ; (add-initarg declarations - ; :declarations 'declarations) - ; (add-initarg documentation - ; :documentation 'documentation) - ; (add-initarg method-class - ; :method-class 'method-class) - ; (add-initarg method-combination - ; :method-combination - ; 'method-combination) - (apply #'call-next-method generic-function initargs))) - - -;;; These three are scheduled for demolition. - - -(defmethod remove-named-method (generic-function-name argument-specifiers &optional extra) - (let ((generic-function nil) - (method nil)) - (cond ((or (null (fboundp generic-function-name)) - (not (generic-function-p (setq generic-function (symbol-function - generic-function-name)) - ))) - (error "~S does not name a generic-function." generic-function-name)) - ((null (setq method (get-method generic-function extra (parse-specializers - argument-specifiers) - nil))) - (error "There is no method for the generic-function ~S~%~ - which matches the argument-specifiers ~S." generic-function argument-specifiers)) - (t (remove-method generic-function method))))) - -(defun real-add-named-method (generic-function-name qualifiers specializers lambda-list function - &rest other-initargs) - - ;; What about changing the class of the generic-function if there is one. Whose job is that - ;; anyways. Do we need something kind of like class-for-redefinition? - (let* ((generic-function (ensure-generic-function generic-function-name :lambda-list - (method-ll->generic-function-ll lambda-list))) - (specs (parse-specializers specializers)) - ; (existing (get-method - ; generic-function qualifiers specs - ; nil)) - (proto (method-prototype-for-gf generic-function-name)) - (new (apply #'make-instance (class-of proto) - :qualifiers qualifiers :specializers specs :lambda-list lambda-list - :function function other-initargs))) - ; (when existing (remove-method - ; generic-function existing)) - (add-method generic-function new))) - -(defun make-specializable (function-name &key (arglist nil arglistp)) - (cond ((not (null arglistp))) - ((not (fboundp function-name))) - ((fboundp 'function-arglist) - - ;; function-arglist exists, get the arglist from it. - (setq arglist (function-arglist function-name))) - (t (error "The :arglist argument to make-specializable was not supplied~%~ - and there is no version of FUNCTION-ARGLIST defined for this~%~ - port of Portable CommonLoops.~%~ - You must either define a version of FUNCTION-ARGLIST (which~%~ - should be easy), and send it off to the Portable CommonLoops~%~ - people or you should call make-specializable again with the~%~ - :arglist keyword to specify the arglist."))) - (let ((original (and (fboundp function-name) - (symbol-function function-name))) - (generic-function (make-instance 'standard-generic-function :name function-name)) - (nrequireds 0)) - (if (generic-function-p original) - original - (progn (dolist (arg arglist) - (if (memq arg lambda-list-keywords) - (return) - (incf nrequireds))) - (setf (symbol-function function-name) - generic-function) - (set-function-name generic-function function-name) - (when arglistp - (setf (gf-pretty-arglist generic-function) - arglist)) - (when original - (add-named-method function-name nil (make-list nrequireds :initial-element - 't) - arglist original)) - generic-function)))) - -(defun real-get-method (generic-function qualifiers specializers &optional (errorp t)) - (let ((hit (dolist (method (generic-function-methods generic-function)) - (when (and (equal qualifiers (method-qualifiers method)) - (every #'same-specializer-p specializers (method-specializers method - ))) - (return method))))) - (cond (hit hit) - ((null errorp) - nil) - (t (error "No method on ~S with qualifiers ~:S and specializers ~:S." - generic-function qualifiers specializers))))) - - -;;; Compute various information about a generic-function's arglist by looking at the argument lists -;;; of the methods. The hair for trying not to use &rest arguments lives here. The values returned -;;; are: number-of-required-arguments the number of required arguments to this generic-function's -;;; discriminating function &rest-argument-p whether or not this generic-function's discriminating -;;; function takes an &rest argument. specialized-argument-positions a list of the positions of the -;;; arguments this generic-function specializes (e.g. for a classical generic-function this is the -;;; list: (1)). - - -(defmethod compute-discriminating-function-arglist-info ((generic-function standard-generic-function) - ) - (declare (values number-of-required-arguments &rest-argument-p specialized-argument-postions)) - (let ((number-required nil) - (restp nil) - (specialized-positions nil) - (methods (generic-function-methods generic-function))) - (dolist (method methods) - (multiple-value-setq (number-required restp specialized-positions) - (compute-discriminating-function-arglist-info-internal generic-function method - number-required restp specialized-positions))) - (values number-required restp (sort specialized-positions #'<)))) - -(defun compute-discriminating-function-arglist-info-internal (generic-function method - number-of-requireds restp - specialized-argument-positions) - (declare (ignore generic-function)) - (let ((requireds 0)) - - ;; Go through this methods arguments seeing how many are required, and whether there is - ;; an &rest argument. - (dolist (arg (method-lambda-list method)) - (cond ((eq arg '&aux) - (return)) - ((memq arg '(&optional &rest &key)) - (return (setq restp t))) - ((memq arg lambda-list-keywords)) - (t (incf requireds)))) - - ;; Now go through this method's type specifiers to see which argument positions are type - ;; specified. Treat T specially in the usual sort of way. For efficiency don't bother - ;; to keep specialized-argument-positions sorted, rather depend on our caller to do - ;; that. - (iterate ((type-spec (list-elements (method-specializers method))) - (pos (interval :from 0))) - (unless (eq type-spec *the-class-t*) - (pushnew pos specialized-argument-positions))) - - ;; Finally merge the values for this method into the values for the exisiting methods - ;; and return them. Note that if num-of-requireds is NIL it means this is the first - ;; method and we depend on that. - (values (min (or number-of-requireds requireds) - requireds) - (or restp (and number-of-requireds (/= number-of-requireds requireds))) - specialized-argument-positions))) - -(defun make-discriminating-function-arglist (number-required-arguments restp) - (nconc (gathering ((args (collecting))) - (iterate ((i (interval :from 0 :below number-required-arguments))) - (gather (intern (format nil "Discriminating Function Arg ~D" i)) - args))) - (when restp - `(&rest ,(intern "Discriminating Function &rest Arg"))))) - - -;;; - - -(defun make-arg-info (precedence metatypes number-optional key/rest-p keywords) - (let ((new (make-array 6 :adjustable nil))) - (setf (svref new 0) - 'arg-info - (svref new 1) - precedence - (svref new 2) - metatypes - (svref new 3) - number-optional - (svref new 4) - key/rest-p - (svref new 5) - keywords) - ; nil no keyword or rest - ; allowed (k1 k2 ..) each method must - ; accept these keyword arguments T - ; must have &key or &rest - new)) - -(defun check-arg-info (x) - (or (and (simple-vector-p x) - (= (array-dimension x 0) - 6) - (eq (svref x 0) - 'arg-info)) - (error "~S is not an ARG-INFO." x))) - -(defun arg-info-precedence (arg-info) - (check-arg-info arg-info) - (svref arg-info 1)) - -(defun arg-info-metatypes (arg-info) - (check-arg-info arg-info) - (svref arg-info 2)) - -(defun arg-info-number-optional (arg-info) - (check-arg-info arg-info) - (svref arg-info 3)) - -(defun arg-info-key/rest-p (arg-info) - (check-arg-info arg-info) - (svref arg-info 4)) - -(defun arg-info-keywords (arg-info) - (check-arg-info arg-info) - (svref arg-info 5)) - -(defun arg-info-applyp (arg-info) - (check-arg-info arg-info) - (or (plusp (arg-info-number-optional arg-info)) - (arg-info-key/rest-p arg-info))) - -(defun arg-info-number-required (arg-info) - (check-arg-info arg-info) - (length (arg-info-metatypes arg-info))) - -(defun arg-info-nkeys (arg-info) - (count-if #'(lambda (x) - (neq x 't)) - (arg-info-metatypes arg-info))) - -(defun new-arg-info-from-generic-function (lambda-list argument-precedence-order) - (multiple-value-bind (nreq nopt keysp restp allow-other-keys-p keywords) - (analyze-lambda-list lambda-list) - (declare (ignore allow-other-keys-p)) - (let ((metatypes (make-list nreq)) - (precedence (compute-precedence lambda-list nreq argument-precedence-order))) - (make-arg-info precedence metatypes nopt (or keysp restp) - keywords)))) - -(defun new-arg-info-from-method (method) - (multiple-value-bind (nreq nopt keysp restp) - (analyze-lambda-list (method-lambda-list method)) - (make-arg-info (compute-precedence (method-lambda-list method) - nreq nil) - (mapcar #'raise-metatype (make-list nreq) - (method-specializers method)) - nopt - (or keysp restp) - nil))) - -(defun add-arg-info (generic-function method arg-info) - (flet ((lose (string &rest args) - (error - "Attempt to add the method ~S to the generic function ~S.~%~ - But ~A" method generic-function (apply #'format nil string args))) - (compare (x y) - (if (> x y) - "more" - "fewer"))) - (multiple-value-bind (nreq nopt keysp restp allow-other-keys-p keywords) - (analyze-lambda-list (method-lambda-list method)) - (let ((gf-nreq (arg-info-number-required arg-info)) - (gf-nopt (arg-info-number-optional arg-info)) - (gf-key/rest-p (arg-info-key/rest-p arg-info)) - (gf-keywords (arg-info-keywords arg-info))) - (unless (= nreq gf-nreq) - (lose "the method has ~A required arguments than the generic function." - (compare nreq gf-nreq))) - (unless (= nopt gf-nopt) - (lose "the method has ~S optional arguments than the generic function." - (compare nopt gf-nopt))) - (unless (eq (or keysp restp) - gf-key/rest-p) - (error "the method and generic function differ in whether they accept~%~ - rest or keyword arguments.")) - (when gf-keywords - (unless (or (and restp (not keysp)) - allow-other-keys-p - (every #'(lambda (k) - (memq k keywords)) - gf-keywords)) - (error "the generic function requires each method to accept the keyword arguments~%~ - ~S. The method does not all of accept these." gf-keywords))) - (make-arg-info (arg-info-precedence arg-info) - (mapcar #'raise-metatype (arg-info-metatypes arg-info) - (method-specializers method)) - gf-nopt gf-key/rest-p gf-keywords))))) - -(defun remove-arg-info (generic-function method arg-info) - (declare (ignore generic-function method)) - arg-info) - - -;;; - - -(defun compute-precedence (lambda-list nreq argument-precedence-order) - (let ((nreq (analyze-lambda-list lambda-list))) - (if (null argument-precedence-order) - (let ((c -1)) - (gathering1 (collecting) - (dotimes (i nreq) - (gather1 (incf c))))) - (mapcar #'(lambda (x) - (position x lambda-list)) - argument-precedence-order)))) - -(defmethod no-applicable-method (generic-function &rest args) - (cerror "Retry call to ~S" - "No matching method for the generic-function ~S,~@ - when called with arguments ~S." generic-function args) - (let ((*invalid-dfuns-on-stack* (remove generic-function *invalid-dfuns-on-stack*))) - (invalidate-discriminating-function generic-function) - (apply generic-function args))) - -(defun real-add-method (generic-function method) - (if (method-generic-function method) - (error "The method ~S is already part of the generic~@ - function ~S. It can't be added to another generic~@ - function until it is removed from the first one." method (method-generic-function - method)) - (let* ((qualifiers (method-qualifiers method)) - (lambda-list (method-lambda-list method)) - (specializers (method-specializers method)) - (existing (get-method generic-function qualifiers specializers nil))) - - ;; If there is already a method like this one then we must get rid of it before - ;; proceeding. Note that we call the generic function remove-method to remove it - ;; rather than doing it in some internal way. - (when existing (remove-method generic-function existing)) - - ;; - (let ((arg-info (gf-arg-info generic-function))) - (setf (gf-arg-info generic-function) - (if (null arg-info) - (new-arg-info-from-method method) - (add-arg-info generic-function method arg-info))) - (setf (method-generic-function method) - generic-function) - (pushnew method (generic-function-methods generic-function)) - (dolist (specializer specializers) - (add-method-on-specializer method specializer)) - (invalidate-discriminating-function generic-function) - (maybe-update-constructors generic-function method) - method)))) - -(defun real-remove-method (generic-function method) - (if (neq generic-function (method-generic-function method)) - (error "The method ~S is attached to the generic function~@ - ~S. It can't be removed from the generic function~@ - to which it is not attached." method (method-generic-function method)) - (let* ((methods (generic-function-methods generic-function)) - (new-methods (remove method methods)) - (new-arg-info (remove-arg-info generic-function method (gf-arg-info - generic-function)))) - (setf (method-generic-function method) - nil) - (setf (generic-function-methods generic-function) - new-methods) - (dolist (specializer (method-specializers method)) - (remove-method-on-specializer method specializer)) - (setf (gf-arg-info generic-function) - new-arg-info) - (invalidate-discriminating-function generic-function) - (maybe-update-constructors generic-function method) - generic-function))) - - -;;; This is it. You have reached the special place where everything comes together. This is where -;;; we ensure that the metacircularity will bottom out properly. Remember once again that the source -;;; of the problem is that the specified behavior clearly calls for the process of method lookup to -;;; itself call generic functions. This implies that for a given generic function in the method -;;; lookup protocol (compute-applicable-methods for example), we can end up in the unfortunate -;;; situation of having to call that generic function in order to call it! So, we must arrange to -;;; snap this infinite regress. The strategy taken here is to identify a particular subset of calls -;;; to method lookup protocol generic functions and snap the recursion there. This subset of generic -;;; function calls has the following properties: - Any generic function call in the world will, -;;; eventually reach one of these generic function calls. That is we are sure that if we can -;;; arrange for these calls not to recurse we know we are all set. - These calls themselves don't -;;; recurse. We arrange, by magic, for the method lookup and application involved in these calls -;;; not to call any other generic functions. - - -(defvar *magic-generic-functions* '((compute-discriminating-function ((standard-generic-function) - (standard-generic-function))) - (compute-applicable-methods ((standard-generic-function t) - (generic-function t))) - (compute-applicable-methods-using-classes (( - standard-generic-function - t) - (generic-function - t))) - ; (same-specializer-p - ; ((standard-class standard-class) (t - ; t))) (specializer-applicable-p - ; ((standard-class t) (class t))) - (specializer-applicable-using-class-p ((standard-class t) - (class t)) - ((built-in-class t) - (class t))) - (order-specializers-using-class ((standard-class standard-class t - ) - (class class t))) - (compute-effective-method ((standard-generic-function - (eql *standard-method-combination*) - t) - (generic-function - standard-method-combination t)) - ) - (method-p ((standard-method) - (method)) - ((standard-reader-method) - (method)) - ((standard-writer-method) - (method))) - (standard-accessor-method-p ((standard-method) - (t)) - ((standard-reader-method) - (standard-accessor-method)) - ((standard-writer-method) - (standard-accessor-method))) - (standard-reader-method-p ((standard-method) - (t)) - ((standard-reader-method) - (standard-reader-method)) - ((standard-writer-method) - (t))) - (standard-writer-method-p ((standard-method) - (t)) - ((standard-reader-method) - (t)) - ((standard-writer-method) - (standard-writer-method))) - (method-qualifiers ((standard-method) - (standard-method)) - ((standard-reader-method) - (standard-method))) - (method-specializers ((standard-method) - (standard-method)) - ((standard-reader-method) - (standard-method))) - (method-lambda-list ((standard-method) - (standard-method)) - ((standard-reader-method) - (standard-method))) - (method-function ((standard-method) - (standard-method)) - ((standard-reader-method) - (standard-method))) - (accessor-method-slot-name ((standard-reader-method) - (standard-accessor-method)) - ((standard-writer-method) - (standard-accessor-method))) - (classp ((standard-class) - (class)) - ((built-in-class) - (class))) - (class-precedence-list ((standard-class) - (clos-class))) - (class-finalized-p ((standard-class) - (clos-class))) - (generic-function-methods ((standard-generic-function) - (standard-generic-function))) - (generic-function-method-combination ((standard-generic-function) - (standard-generic-function) - )) - (gf-arg-info ((standard-generic-function) - (standard-generic-function))) - (gf-dfun-state ((standard-generic-function) - (standard-generic-function))) - (gf-effective-method-functions ((standard-generic-function) - (standard-generic-function))) - ((setf gf-effective-method-functions) - ((t standard-generic-function) - (t standard-generic-function))) - ; (gf-permutation - ; ((standard-generic-function) - ; (standard-generic-function))) - (slot-value-using-class ((standard-class t - standard-effective-slot-definition - ) - ; the first t is a bug - (std-class standard-object - standard-effective-slot-definition - )) - ((funcallable-standard-class t - standard-effective-slot-definition) - (std-class standard-object - standard-effective-slot-definition))) - ((setf slot-value-using-class) - ((t standard-class t standard-effective-slot-definition) - (t std-class standard-object standard-effective-slot-definition - )) - ((t funcallable-standard-class t - standard-effective-slot-definition) - (t std-class standard-object standard-effective-slot-definition - ))))) - -(defvar *magic-generic-functions-1* nil) - -(defun - fixup-magic-generic-function - (gfspec early-methods gf methods) - (flet - ((get-specls (names convert-t-p) - (mapcar #'(lambda (s) - (cond ((consp s) - `(eql ,(eval (cadr s)))) - ((eq s t) - (if convert-t-p - (find-class t) - t)) - (t (find-class s)))) - names))) - (let - ((e (assoc gfspec *magic-generic-functions* :test #'equal))) - (when e - (push (list* gf (make-arg-info - nil - (apply #'mapcar #'(lambda (&rest args) - (if (every #'(lambda (arg) - (eq arg 't)) - args) - 't - 'standard-instance)) - (mapcar #'second (cdr e))) - nil nil nil) - (gathering1 (collecting) - (dolist (pair (cdr e)) - (iterate ((em (list-elements early-methods)) - (m (list-elements methods))) - (when (equal (early-method-specializers em t) - (get-specls (cadr pair) - t)) - (gather1 (list (get-specls (car pair) - nil) - (list m) - (early-method-function em))) - (return t)))))) - *magic-generic-functions-1*))))) - -(defun get-secondary-dispatch-function (generic-function args) - (declare (values compiled-secondary-dispatch-function methods arg-info)) - (multiple-value-bind (fn methods arg-info) - (get-magic-secondary-dispatch-function generic-function args) - (if fn - (values fn methods arg-info) - (get-normal-secondary-dispatch-function generic-function args)))) - -(defun get-magic-secondary-dispatch-function (generic-function args) - (let ((e (assq generic-function *magic-generic-functions-1*))) - (when e - (dolist (entry (cddr e)) - (destructuring-bind (specls appl function) - entry - (unless (iterate ((arg (list-elements args)) - (specl (list-elements specls))) - (let ((class (class-of arg))) - (unless (if (consp specl) - (eql (cadr specl) - arg) - (or (eq specl t) - (eq specl class))) - (return t)))) - (return (values function appl (cadr e))))))))) - -(defmacro protect-cache-miss-code (gf args &body body) - (let ((wrappers (gensym)) - (invalidp (gensym)) - #'(gensym) - (appl (gensym))) - (once-only (gf args) - `(if (memq ,gf *invalid-dfuns-on-stack*) - (multiple-value-bind (,wrappers ,invalidp ,function ,appl) - (cache-miss-values ,gf ,args) - (declare (ignore ,wrappers ,invalidp)) - (if (null ,appl) - (apply #'no-applicable-method ,gf ,args) - (apply ,function ,args))) - (let ((*invalid-dfuns-on-stack* (cons ,gf *invalid-dfuns-on-stack*))) - ,@body))))) - -(defmethod same-specializer-p (specl1 specl2) - (eq specl1 specl2)) - -(defmethod specializer-applicable-p ((specializer class) - object) - (memq specializer (class-precedence-list (class-of object)))) - -(defmethod specializer-applicable-using-class-p ((specializer class) - class) - (*subtypep class specializer)) - -(defmethod order-specializers-using-class ((specl1 class) - (specl2 class) - class) - (cond ((eq specl1 specl2) - nil) - ((memq specl2 (memq specl1 (class-precedence-list class))) - specl1) - (t specl2))) - -(defmethod compute-applicable-methods ((generic-function generic-function) - arguments) - (labels ((filter (method) - (let ((arguments-tail arguments)) - (dolist (m-spec (method-specializers method) - t) - (unless arguments-tail - (error "The function ~S requires at least ~D arguments" - (generic-function-name generic-function) - (arg-info-number-required (gf-arg-info generic-function)))) - (unless (specializer-applicable-p m-spec (pop arguments-tail)) - (return nil))))) - (sorter (method-1 method-2) - (dolist (index (arg-info-precedence (gf-arg-info generic-function))) - (let* ((specl1 (nth index (method-specializers method-1))) - (specl2 (nth index (method-specializers method-2))) - (class (class-of (nth index arguments))) - (order (order-specializers-using-class specl1 specl2 class))) - (when order - (return-from sorter (eq order specl1))))))) - (let ((methods (generic-function-methods generic-function))) - (stable-sort (copy-list (remove-if-not #'filter methods)) - #'sorter)))) - -(defmethod compute-applicable-methods-using-classes ((generic-function generic-function) - classes) - (labels ((filter (method) - (let ((classes-tail classes)) - (dolist (m-spec (method-specializers method) - t) - (unless classes-tail - (error "The function ~S requires at least ~D arguments" - (generic-function-name generic-function) - (arg-info-number-required (gf-arg-info generic-function)))) - (unless (specializer-applicable-using-class-p m-spec (pop - classes-tail - )) - (return nil))))) - (sorter (method-1 method-2) - (dolist (index (arg-info-precedence (gf-arg-info generic-function))) - (let* ((specl1 (nth index (method-specializers method-1))) - (specl2 (nth index (method-specializers method-2))) - (class (nth index classes)) - (order (order-specializers-using-class specl1 specl2 class))) - (when order - (return-from sorter (eq order specl1))))))) - (let ((methods (generic-function-methods generic-function))) - (stable-sort (copy-list (remove-if-not #'filter methods)) - #'sorter)))) - -(defun get-normal-secondary-dispatch-function (generic-function args) - (let* ((classes (mapcar #'(lambda (arg mt) - (declare (ignore mt)) - (class-of arg)) - args - (arg-info-metatypes (gf-arg-info generic-function)))) - (methods (compute-applicable-methods-using-classes generic-function classes)) - (net (generate-discrimination-net generic-function methods)) - (arg-info (gf-arg-info generic-function)) - (metatypes (arg-info-metatypes arg-info)) - (applyp (arg-info-applyp arg-info))) - (flet ((net-test-converter (form) - (if (and (consp form) - (eq (car form) - 'methods)) - '.methods. - (default-test-converter form))) - (net-code-converter (form) - (if (and (consp form) - (eq (car form) - 'methods)) - (let ((gensym (gensym))) - (values (make-dfun-call metatypes applyp gensym) - (list gensym))) - (default-code-converter form))) - (net-constant-converter (form) - (if (and (consp form) - (eq (car form) - 'methods)) - (list (get-effective-method-function generic-function (cdr form))) - (default-constant-converter form)))) - (if (eq (car net) - 'methods) - (and (cdr net) - (values (get-effective-method-function generic-function (cdr net)) - methods)) - (values (get-function `(lambda ,(make-dfun-lambda-list metatypes applyp) - ,net) - #'net-test-converter - #'net-code-converter - #'net-constant-converter) - methods))))) - -(defun get-effective-method-function (generic-function methods) - (let ((combin (generic-function-method-combination generic-function)) - (precomputed (gf-effective-method-functions generic-function))) - - ;; NOTE: We are assuming a restriction on user code that the method combination must not - ;; change once it is connected to the generic function. This has to be legal, because - ;; otherwise any kind of method lookup caching couldn't work. See this by saying that - ;; this cache, is just a backing cache for the fast cache. If that cache is legal, this - ;; one must be too. Should altering the set of methods flush this cache? - (let ((entry (assoc methods precomputed :test #'equal))) - (if entry - (values (cdr entry) - (car entry)) - (let* ((effective (compute-effective-method generic-function combin methods)) - (fn (make-effective-method-function generic-function effective))) - (setf (gf-effective-method-functions generic-function) - (cons (cons methods fn) - precomputed)) - (values fn methods)))))) - -(defun - generate-discrimination-net - (generic-function methods) - (let* ((arg-info (gf-arg-info generic-function)) - (nreq (arg-info-number-required arg-info)) - (metatypes (arg-info-metatypes arg-info))) - (labels ((do-column (position contenders) - (if (< position nreq) - (if (eq (nth position metatypes) - 't) - (do-column (1+ position) - contenders) - (do-methods position contenders nil nil)) - `(methods ,@contenders))) - (do-methods - (position contenders known-outcomes winners) - - ;; is a (sorted) list of methods that must be discriminated - ;; is a list of outcomes from tests already made on this argument - ;; each outcome looks like ( [t | nil]) is a (sorted) list - ;; of methods that are potentially applicable after the discrimination has been - ;; made. - (if (null contenders) - (do-column (1+ position) - winners) - (let* ((method (car contenders)) - (specl (nth position (method-specializers method)))) - (flet ((determined-to-be (truth-value) - (if (classp specl) - truth-value - (some #'(lambda (outcome) - (outcome-implies-p generic-function - (car outcome) - (cadr outcome) - specl truth-value)) - known-outcomes))) - (if-true nil (do-methods position (cdr contenders) - (if (not (classp specl)) - (cons `(,specl t) - known-outcomes) - known-outcomes) - (append winners `(,method)))) - (if-false nil (do-methods position (cdr contenders) - (if (not (classp specl)) - (cons `(,specl nil) - known-outcomes) - known-outcomes) - winners))) - (cond ((determined-to-be nil) - (if-false)) - ((determined-to-be t) - (if-true)) - (t `(if ,(compute-argument-test-form generic-function - (dfun-arg-symbol position) - specl) - ,(if-true) - ,(if-false))))))))) - (do-column 0 methods)))) - -(define-gf-predicate eql-specializer-p eql-specializer) - -(defmethod same-specializer-p ((specl1 eql-specializer) - (specl2 eql-specializer)) - (eql (eql-specializer-object specl1) - (eql-specializer-object specl2))) - -(defmethod specializer-applicable-p ((specializer eql-specializer) - object) - (eql (eql-specializer-object specializer) - object)) - -(defmethod specializer-applicable-using-class-p ((specializer eql-specializer) - class) - (eq class (class-of (eql-specializer-object specializer)))) - - ; It would be most egregious to use - ; *subtypep here. - - -(defmethod order-specializers-using-class ((specl1 eql-specializer) - (specl2 eql-specializer) - argument-class) - (declare (ignore argument-class)) - nil) - -(defmethod order-specializers-using-class ((specl1 class) - (specl2 eql-specializer) - argument-class) - (declare (ignore argument-class)) - specl2) - -(defmethod order-specializers-using-class ((specl1 eql-specializer) - (specl2 class) - argument-class) - (declare (ignore argument-class)) - specl1) - - -;;; Does a given pair of values for { } imply a given pair of values for -;;; { }. - - -(defmethod outcome-implies-p ((generic-function generic-function) - (specl1 eql-specializer) - value1 - (specl2 eql-specializer) - value2) - (flet ((same-truth-value (x y) - (or (and x y) - (and (not x) - (not y))))) - (let ((obj1 (eql-specializer-object specl1)) - (obj2 (eql-specializer-object specl2))) - (or (and (eql obj1 obj2) - (same-truth-value value1 value2)) - (and (not (eql obj1 obj2)) - value1 - (not value2)))))) - - -;;; Return a form which tests a given argument against a given specializer. - - -(defmethod compute-argument-test-form ((generic-function generic-function) - argument-form - (specializer eql-specializer)) - `(eql ,argument-form ',(eql-specializer-object specializer))) - - -;;; The value returned by compute-discriminating-function is a function object. It is called a -;;; discriminating function because it is called when the generic function is called and its role is -;;; to discriminate on the arguments to the generic function and then call appropriate method -;;; functions. A discriminating function can only be called when it is installed as the funcallable -;;; instance function of the generic function for which it was computed. More precisely, if -;;; compute-discriminating-function is called with an argument , and returns a result , -;;; that result must not be passed to apply or funcall directly. Rather, must be stored as -;;; the funcallable instance function of the same generic function (using -;;; set-funcallable-instance-function). Then the generic function can be passed to funcall or -;;; apply. An important exception is that methods on this generic function are permitted to return a -;;; function which itself ends up calling the value returned by a more specific method. This kind -;;; of `encapsulation' of discriminating function is critical to many uses of the MOP. As an -;;; example, the following canonical case is legal: (defmethod compute-discriminating-function ((gf -;;; my-generic-function)) (let ((std (call-next-method))) #'(lambda (arg) (print (list 'call-to-gf -;;; gf arg)) (funcall std arg)))) Because many discriminating functions would like to use a dynamic -;;; strategy in which the precise discriminating function changes with time it is important to -;;; specify how a discriminating function is permitted itself to change the funcallable instance -;;; function of the generic function. Discriminating functions are may set the funcallable instance -;;; function of the generic function, but the new value must be generated by making a call to -;;; COMPUTE-DISCRIMINATING-FUNCTION. This is to ensure that any more specific methods which may -;;; have encapsulated the discriminating function will get a chance to encapsulate the new, inner -;;; discriminating function. This implies that if a discriminating function wants to modify itself -;;; it should first store some information in the generic function proper, and then call -;;; compute-discriminating-function. The appropriate method on compute-discriminating-function will -;;; see the information stored in the generic function and generate a discriminating function -;;; accordingly. The following is an example of a discriminating function which modifies itself in -;;; accordance with this protocol: (defmethod compute-discriminating-function ((gf -;;; my-generic-function)) #'(lambda (arg) (cond ( (set-funcallable-instance-function gf (compute-discriminating-function gf)) (funcall -;;; gf arg)) (t )))) Whereas this code would not be legal: (defmethod -;;; compute-discriminating-function ((gf my-generic-function)) #'(lambda (arg) (cond ( (set-funcallable-instance-function gf #'(lambda (a) ..)) (funcall gf arg)) (t -;;; )))) NOTE: All the examples above assume that all instances of the class -;;; my generic function accept only one argument. - - -(defmethod compute-discriminating-function ((gf standard-generic-function)) - (let* ((state (gf-dfun-state gf)) - (dfun (typecase state - (null (make-initial-dfun gf)) - (function state) - (cons (car state))))) - (doctor-dfun-for-the-debugger gf dfun))) - -(defun update-dfun (generic-function dfun &optional cache) - (let ((ostate (gf-dfun-state generic-function))) - (unless (typep ostate '(or null function)) - (free-cache (cdr ostate))) - (setf (gf-dfun-state generic-function) - (if cache - (cons dfun cache) - dfun)) - (invalidate-dfun-internal generic-function))) - -(defvar *generate-random-code-segments* nil) - -(defun invalidate-discriminating-function (generic-function) - (let ((ostate (gf-dfun-state generic-function))) - (unless (typep ostate '(or null function)) - (free-cache (cdr ostate))) - (setf (gf-dfun-state generic-function) - nil) - (setf (gf-effective-method-functions generic-function) - nil) - (invalidate-dfun-internal generic-function) - (when *generate-random-code-segments* - (let ((*generate-random-code-segments* nil)) - (generate-random-code-segments generic-function))))) - -(defun invalidate-dfun-internal (generic-function) - - ;; Set the funcallable instance function to something that just calls invalid-dfun, that is, - ;; arrange to use lazy evaluation to update the dfun later. - (set-funcallable-instance-function generic-function #'(lambda (&rest args) - (invalid-dfun generic-function - args))) - - ;; Except that during bootstrapping, we would like to update the dfun right away, and this - ;; arranges for that. - (when *invalidate-discriminating-function-force-p* - (let ((*invalid-dfuns-on-stack* (cons generic-function *invalid-dfuns-on-stack*))) - (set-funcallable-instance-function generic-function (compute-discriminating-function - generic-function))))) - -(defun invalid-dfun (gf args) - (protect-cache-miss-code gf args (let ((new-dfun (compute-discriminating-function gf))) - (set-funcallable-instance-function gf new-dfun) - (apply gf args)))) - - -;;; - - -(defmethod function-keywords ((method standard-method)) - (multiple-value-bind (nreq nopt keysp restp allow-other-keys-p keywords) - (analyze-lambda-list (method-lambda-list method)) - (declare (ignore nreq nopt keysp restp)) - (values keywords allow-other-keys-p))) - -(defun analyze-lambda-list (lambda-list) - (declare (values nrequired noptional keysp restp allow-other-keys-p keywords - keyword-parameters)) - (flet ((parse-keyword-argument (arg) - (if (listp arg) - (if (listp (car arg)) - (cadar arg) - (make-keyword (car arg))) - (make-keyword arg)))) - (let ((nrequired 0) - (noptional 0) - (keysp nil) - (restp nil) - (allow-other-keys-p nil) - (keywords nil) - (keyword-parameters nil) - (state 'required)) - (dolist (x lambda-list) - (if (memq x lambda-list-keywords) - (case x - (&optional (setq state 'optional)) - (&key (setq keysp 't state 'key)) - (&allow-other-keys (setq allow-other-keys-p 't)) - (&rest (setq restp 't state 'rest)) - (&aux (return t)) - (otherwise (error - "Encountered the non-standard lambda list keyword ~S." - x))) - (ecase state - (required (incf nrequired)) - (optional (incf noptional)) - (key - (push (parse-keyword-argument x) - keywords) - (push x keyword-parameters)) - (rest nil)))) - (values nrequired noptional keysp restp allow-other-keys-p (reverse keywords) - (reverse keyword-parameters))))) - -(defun method-ll->generic-function-ll (ll) - (multiple-value-bind (nreq nopt keysp restp allow-other-keys-p keywords keyword-parameters) - (analyze-lambda-list ll) - (declare (ignore nreq nopt keysp restp allow-other-keys-p keywords)) - (remove-if #'(lambda (s) - (or (memq s keyword-parameters) - (eq s '&allow-other-keys))) - ll))) - - -;;; This is based on the rules of method lambda list congruency defined in the spec. The lambda -;;; list it constructs is the pretty union of the lambda lists of all the methods. It doesn't take -;;; method applicability into account at all yet. - - -(defmethod generic-function-pretty-arglist ((generic-function standard-generic-function)) - (let ((methods (generic-function-methods generic-function)) - (arglist nil)) - (when methods - (multiple-value-bind (required optional rest key allow-other-keys) - (method-pretty-arglist (car methods)) - (dolist (m (cdr methods)) - (multiple-value-bind (method-key-keywords method-allow-other-keys method-key) - (function-keywords m) - - ;; we've modified function-keywords to return what we want as the third - ;; value, no other change here. - (declare (ignore method-key-keywords)) - (setq key (union key method-key)) - (setq allow-other-keys (or allow-other-keys method-allow-other-keys)))) - (when allow-other-keys - (setq arglist '(&allow-other-keys))) - (when key - (setq arglist (nconc (list '&key) - key arglist))) - (when rest - (setq arglist (nconc (list '&rest rest) - arglist))) - (when optional - (setq arglist (nconc (list '&optional) - optional arglist))) - (nconc required arglist))))) - -(defmethod method-pretty-arglist ((method standard-method)) - (let ((required nil) - (optional nil) - (rest nil) - (key nil) - (allow-other-keys nil) - (state 'required) - (arglist (method-lambda-list method))) - (dolist (arg arglist) - (cond ((eq arg '&optional) - (setq state 'optional)) - ((eq arg '&rest) - (setq state 'rest)) - ((eq arg '&key) - (setq state 'key)) - ((eq arg '&allow-other-keys) - (setq allow-other-keys 't)) - ((memq arg lambda-list-keywords)) - (t (ecase state - (required (push arg required)) - (optional (push arg optional)) - (key (push arg key)) - (rest (setq rest arg)))))) - (values (nreverse required) - (nreverse optional) - rest - (nreverse key) - allow-other-keys))) diff --git a/obsolete/clos/2.0/patch.lisp b/obsolete/clos/2.0/patch.lisp deleted file mode 100644 index eab79094..00000000 --- a/obsolete/clos/2.0/patch.lisp +++ /dev/null @@ -1,143 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE (CLIN-PACKAGE "XCL-USER") BASE 10) -(IL:FILECREATED "19-Feb-91 14:09:19"  -IL:|{DSK}local>users>welch>lisp>clos>rev4>il-format>XEROX-PATCHES.;2| 9876 - - IL:|changes| IL:|to:| (IL:VARS IL:XEROX-PATCHESCOMS) - - IL:|previous| IL:|date:| " 6-Feb-91 10:55:16" -IL:|{DSK}local>users>welch>lisp>clos>rev4>il-format>XEROX-PATCHES.;1|) - - -; Copyright (c) 1991 by Venue. All rights reserved. - -(IL:PRETTYCOMPRINT IL:XEROX-PATCHESCOMS) - -(IL:RPAQQ IL:XEROX-PATCHESCOMS ( - - - (IL:FUNCTIONS OPTIMIZE-LOGICAL-OP-1-ARG) - (OPTIMIZERS (LOGIOR :OPTIMIZED-BY OPTIMIZE-LOGICAL-OP-1-ARG) - (LOGXOR :OPTIMIZED-BY OPTIMIZE-LOGICAL-OP-1-ARG) - (LOGAND :OPTIMIZED-BY OPTIMIZE-LOGICAL-OP-1-ARG) - (LOGEQV :OPTIMIZED-BY OPTIMIZE-LOGICAL-OP-1-ARG)) - - (IL:* IL:|;;| "A bug compiling LABELS") - - (IL:FUNCTIONS COMPILER::META-CALL-LABELS) - (FILE-ENVIRONMENTS "XEROX-PATCHES"))) - - - - - - -(IL:* IL:|;;;| -"Declare side-effects (actually, lack of side-effects) info for some internal arithmetic functions. These are needed because the compiler runs the optimizers before checking the side-effects, so side-effect declarations on the \"real\" functions are oft times ignored. Fix a nit in the compiler While no person would generate code like (logor x), macro can (and do). " -) - - -(DEFUN OPTIMIZE-LOGICAL-OP-1-ARG (FORM ENV CTXT) - (DECLARE (IGNORE ENV CTXT)) - (IF (= 2 (LENGTH FORM)) - (SECOND FORM) - 'COMPILER:PASS)) - -(DEFOPTIMIZER LOGIOR OPTIMIZE-LOGICAL-OP-1-ARG) - -(DEFOPTIMIZER LOGXOR OPTIMIZE-LOGICAL-OP-1-ARG) - -(DEFOPTIMIZER LOGAND OPTIMIZE-LOGICAL-OP-1-ARG) - -(DEFOPTIMIZER LOGEQV OPTIMIZE-LOGICAL-OP-1-ARG) - - - -(IL:* IL:|;;| "A bug compiling LABELS") - - -(DEFUN COMPILER::META-CALL-LABELS (COMPILER::NODE COMPILER:CONTEXT) - - (IL:* IL:|;;| "This is similar to META-CALL-LAMBDA, but we have some extra information. There are only required arguments, and we have the correct number of them. ") - - (LET ((COMPILER::*MADE-CHANGES* NIL)) - - (IL:* IL:|;;| "First, substitute the functions wherever possible.") - - (DOLIST (COMPILER::FN-PAIR (COMPILER::LABELS-FUNS COMPILER::NODE) - (WHEN (NULL (COMPILER::NODE-META-P (COMPILER::LABELS-BODY COMPILER::NODE))) - (SETF (COMPILER::NODE-META-P COMPILER::NODE) - NIL) - (SETQ COMPILER::*MADE-CHANGES* T))) - (WHEN (COMPILER::SUBSTITUTABLE-P (CDR COMPILER::FN-PAIR) - (CAR COMPILER::FN-PAIR)) - (LET ((COMPILER::*SUBST-OCCURRED* NIL)) - - (IL:* IL:|;;| "First try substituting into the body.") - - (SETF (COMPILER::LABELS-BODY COMPILER::NODE) - (COMPILER::META-SUBSTITUTE (CDR COMPILER::FN-PAIR) - (CAR COMPILER::FN-PAIR) - (COMPILER::LABELS-BODY COMPILER::NODE))) - (WHEN (NOT COMPILER::*SUBST-OCCURRED*) - - (IL:* IL:|;;| "Wasn't in the body - try the other functions.") - - (DOLIST (COMPILER::TARGET-PAIR (COMPILER::LABELS-FUNS COMPILER::NODE)) - (UNLESS (EQ COMPILER::TARGET-PAIR COMPILER::FN-PAIR) - (SETF (CDR COMPILER::TARGET-PAIR) - (COMPILER::META-SUBSTITUTE (CDR COMPILER::FN-PAIR) - (CAR COMPILER::FN-PAIR) - (CDR COMPILER::TARGET-PAIR))) - (WHEN COMPILER::*SUBST-OCCURRED* - (IL:* IL:\; - "Found it, we can stop now.") - (SETF (COMPILER::NODE-META-P COMPILER::NODE) - NIL) - (SETQ COMPILER::*MADE-CHANGES* T) - (RETURN))))) - - (IL:* IL:|;;| "May need to reanalyze the node, since things might have changed. Note that reanalyzing the parts of the node this way means the the state in the enclosing loop is not lost. ") - - (DOLIST (COMPILER::FNS (COMPILER::LABELS-FUNS COMPILER::NODE)) - (COMPILER::MEVAL (CDR COMPILER::FNS) - :ARGUMENT)) - (COMPILER::MEVAL (COMPILER::LABELS-BODY COMPILER::NODE) - :RETURN)))) - - (IL:* IL:|;;| "Now remove any functions that aren't referenced.") - - (DOLIST (COMPILER::FN-PAIR (PROG1 (COMPILER::LABELS-FUNS COMPILER::NODE) - (SETF (COMPILER::LABELS-FUNS COMPILER::NODE) - NIL))) - (COND - ((NULL (COMPILER::VARIABLE-READ-REFS (CAR COMPILER::FN-PAIR))) - (COMPILER::RELEASE-TREE (CDR COMPILER::FN-PAIR)) - (SETQ COMPILER::*MADE-CHANGES* T)) - (T (PUSH COMPILER::FN-PAIR (COMPILER::LABELS-FUNS COMPILER::NODE))))) - - (IL:* IL:|;;| "If there aren't any functions left, replace the node with its body.") - - (WHEN (NULL (COMPILER::LABELS-FUNS COMPILER::NODE)) - (LET ((COMPILER::BODY (COMPILER::LABELS-BODY COMPILER::NODE))) - (SETF (COMPILER::LABELS-BODY COMPILER::NODE) - NIL) - (COMPILER::RELEASE-TREE COMPILER::NODE) - (SETQ COMPILER::NODE COMPILER::BODY COMPILER::*MADE-CHANGES* T))) - - (IL:* IL:|;;| "Finally, set the meta-p flag if everythings OK.") - - (IF (NULL COMPILER::*MADE-CHANGES*) - (SETF (COMPILER::NODE-META-P COMPILER::NODE) - COMPILER:CONTEXT) - (SETF (COMPILER::NODE-META-P COMPILER::NODE) - NIL))) - COMPILER::NODE) - -(DEFINE-FILE-ENVIRONMENT "XEROX-PATCHES" :PACKAGE (IN-PACKAGE "XCL-USER") - :READTABLE "XCL" - :BASE 10 - :COMPILER :COMPILE-FILE) -(IL:PUTPROPS IL:XEROX-PATCHES IL:COPYRIGHT ("Venue" 1991)) -(IL:DECLARE\: IL:DONTCOPY - (IL:FILEMAP (NIL))) -IL:STOP diff --git a/obsolete/clos/2.0/pkg.lisp b/obsolete/clos/2.0/pkg.lisp deleted file mode 100644 index 7491df0d..00000000 --- a/obsolete/clos/2.0/pkg.lisp +++ /dev/null @@ -1,81 +0,0 @@ -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- - - -;;; File converted on 26-Mar-91 10:23:29 from source pkg -;;;. Original source {dsk}local>users>welch>lisp>clos>rev4>il-format>pkg.;4 created 1-Mar-91 10:10:26 - -;;;. Copyright (c) 1991 by Venue - - -(in-package "CLOS") - - - -;;; Some CommonLisps have more symbols in the Lisp package than the ones that are explicitly -;;; specified in CLtL. This causes trouble. Any Lisp that has extra symbols in the Lisp package -;;; should shadow those symbols in the CLOS package. - - -(shadow 'cl:documentation) - - -;;; These come from the index pages of 88-002R. - -(eval-when (compile load eval) -(defvar *exports* - '(add-method built-in-class call-method call-next-method change-class class-name class-of - compute-applicable-methods defclass defgeneric define-method-combination defmethod - ensure-generic-function find-class find-method function-keywords generic-flet - generic-labels initialize-instance invalid-method-error make-instance - make-instances-obsolete method-combination-error method-qualifiers next-method-p - no-applicable-method no-next-method print-object reinitialize-instance remove-method - shared-initialize slot-boundp slot-exists-p slot-makunbound slot-missing slot-unbound - slot-value standard standard-class standard-generic-function standard-method - standard-object structure-class symbol-macrolet update-instance-for-different-class - update-instance-for-redefined-class with-accessors with-added-methods with-slots)) - -(import '(xcl:false xcl:destructuring-bind xcl:true) *the-clos-package*) - -(export *exports* *the-clos-package*) - -(import *exports* (find-package :lisp)) - -(export *exports* (find-package :lisp))) - - ; (defvar *chapter-3-exports* '( - ; get-setf-function - ; get-setf-function-name - ; class-prototype class object - - - -;; essential-class - - - ; class-name class-precedence-list - ; class-local-supers class-local-slots - ; class-direct-subclasses - ; class-direct-methods class-slots - ; method-arglist - ; method-argument-specifiers - ; method-function method-equal - ; slotd-name slot-missing - - - -;; define-meta-class %allocate-instance %instance-ref %instancep %instance-meta-class - - - ; allocate-instance optimize-slot-value - ; optimize-setf-of-slot-value - ; add-named-class - ; class-for-redefinition add-class - ; supers-changed slots-changed - ; check-super-metaclass-compatibility - ; make-slotd - ; compute-class-precedence-list - ; walk-method-body - ; walk-method-body-form - ; add-named-method remove-named-method - ; )) - diff --git a/obsolete/clos/2.0/plap.lisp b/obsolete/clos/2.0/plap.lisp deleted file mode 100644 index 49d8b833..00000000 --- a/obsolete/clos/2.0/plap.lisp +++ /dev/null @@ -1,309 +0,0 @@ -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- - - -;;;. Copyright (c) 1991 by Venue - -(in-package "CLOS") - - -;;; The portable implementation of the LAP assembler. The portable implementation of the LAP -;;; assembler works by translating LAP code back into Lisp code and then compiling that Lisp code. -;;; Note that this implementation is actually going to get a lot of use. Some implementations (KCL) -;;; won't implement a native LAP assembler at all. Other implementations may not implement native -;;; LAP assemblers for all of their ports. All of this implies that this portable LAP assembler -;;; needs to generate the best code it possibly can. - - -(defmacro - lap-case - (operand &body cases) - (once-only - (operand) - `(ecase (car ,operand) - ,@(mapcar #'(lambda (case) - `(,(car case) - (apply #'(lambda ,(cadr case) - ,@(cddr case)) - (cdr ,operand)))) - cases)))) - -(defvar *lap-args*) - -(defvar *lap-rest-p*) - -(defvar *lap-i-regs*) - -(defvar *lap-v-regs*) - -(defvar *lap-t-regs*) - -(defvar *lap-optimize-declaration* '((speed 3) - (safety 0) - (compilation-speed 0))) - -(eval-when (load eval) - (setq *make-lap-closure-generator* #'(lambda (closure-var-names arg-names index-regs - vector-regs t-regs lap-code) - (compile-lambda (make-lap-closure-generator-lambda - closure-var-names arg-names - index-regs vector-regs t-regs - lap-code))) - *precompile-lap-closure-generator* - #'(lambda (cvars args i-regs v-regs t-regs lap) - `#',(make-lap-closure-generator-lambda cvars args i-regs v-regs t-regs lap)) - *lap-in-lisp* - #'(lambda (cvars args iregs vregs tregs lap) - (declare (ignore cvars args)) - (make-lap-prog iregs vregs tregs (flatten-lap lap - ; (opcode :label 'exit-lap-in-lisp) - ))))) - -(defun make-lap-closure-generator-lambda (cvars args i-regs v-regs t-regs lap) - (let* ((rest (memq '&rest args)) - (ldiff (and rest (ldiff args rest)))) - (when rest - (setq args (append ldiff '(&rest .lap-rest-arg.)))) - (let* ((*lap-args* (if rest - ldiff - args)) - (*lap-rest-p* (not (null rest)))) - `(lambda ,cvars #'(lambda ,args (declare (optimize . ,*lap-optimize-declaration*)) - ,(make-lap-prog-internal i-regs v-regs t-regs lap)))))) - -(defun make-lap-prog (i-regs v-regs t-regs lap) - (let* ((*lap-args* 'lap-in-lisp) - (*lap-rest-p* 'lap-in-lisp)) - (make-lap-prog-internal i-regs v-regs t-regs lap))) - -(defun make-lap-prog-internal (i-regs v-regs t-regs lap) - (let* ((*lap-i-regs* i-regs) - (*lap-v-regs* v-regs) - (*lap-t-regs* t-regs) - (code (mapcar #'lap-opcode lap))) - `(prog ,(mapcar #'(lambda (reg) - `(,(lap-reg reg) - ,(lap-reg-initial-value-form reg))) - (append i-regs v-regs t-regs)) - (declare (type fixnum ,@(mapcar #'lap-reg *lap-i-regs*)) - (type simple-vector ,@(mapcar #'lap-reg *lap-v-regs*)) - (optimize . ,*lap-optimize-declaration*)) - ,.code))) - -(defconstant *empty-vector* '#()) - -(defun lap-reg-initial-value-form (reg) - (cond ((member reg *lap-i-regs*) - 0) - ((member reg *lap-v-regs*) - '*empty-vector*) - ((member reg *lap-t-regs*) - nil) - (t (error "What kind of register is ~S?" reg)))) - -(defun lap-opcode (opcode) - (lap-case opcode (:move (from to) - `(setf ,(lap-operand to) - ,(lap-operand from))) - ((:eq :neq :fix=) - (arg1 arg2 label) - `(when ,(lap-operands (ecase (car opcode) - (:eq 'eq) - (:neq 'neq) - (:fix= 'runtime\ fix=)) - arg1 arg2) - (go ,label))) - ((:izerop) - (arg label) - `(when ,(lap-operands 'runtime\ izerop arg) - (go ,label))) - (:std-instance-p (from label) - `(when ,(lap-operands 'runtime\ std-instance-p from) - (go ,label))) - (:fsc-instance-p (from label) - `(when ,(lap-operands 'runtime\ fsc-instance-p from) - (go ,label))) - (:built-in-instance-p (from label) - (declare (ignore from)) - `(when ,t - (go ,label))) - ; *** - (:structure-instance-p (from label) - `(when ,(lap-operands 'runtime\ ??? from) - (go ,label))) - ; *** - (:jmp (fn) - (if (eq *lap-args* 'lap-in-lisp) - (error "Can't do a :JMP in LAP-IN-LISP.") - `(return ,(if *lap-rest-p* - `(runtime\ apply ,(lap-operand fn) - ,@*lap-args* .lap-rest-arg.) - `(runtime\ funcall ,(lap-operand fn) - ,@*lap-args*))))) - (:return (value) - `(return ,(lap-operand value))) - (:label (label) - label) - (:go (label) - `(go ,label)) - (:exit-lap-in-lisp nil `(go exit-lap-in-lisp)) - (:break nil `(break)) - (:beep nil) - (:print (val) - (lap-operands 'print val)))) - -(defun lap-operand (operand) - (lap-case operand (:reg (n) - (lap-reg n)) - (:cdr (reg) - (lap-operands 'cdr reg)) - ((:cvar :arg) - (name) - name) - (:constant (c) - `',c) - ((:std-wrapper :fsc-wrapper :built-in-wrapper :structure-wrapper :std-slots :fsc-slots) - (x) - (lap-operands (ecase (car operand) - (:std-wrapper 'runtime\ std-wrapper) - (:fsc-wrapper 'runtime\ fsc-wrapper) - (:built-in-wrapper 'runtime\ built-in-wrapper) - (:structure-wrapper 'runtime\ structure-wrapper) - (:std-slots 'runtime\ std-slots) - (:fsc-slots 'runtime\ fsc-slots)) - x)) - (:i1+ (index) - (lap-operands 'runtime\ i1+ index)) - (:i+ (index1 index2) - (lap-operands 'runtime\ i+ index1 index2)) - (:i- (index1 index2) - (lap-operands 'runtime\ i- index1 index2)) - (:ilogand (index1 index2) - (lap-operands 'runtime\ ilogand index1 index2)) - (:ilogxor (index1 index2) - (lap-operands 'runtime\ ilogxor index1 index2)) - (:iref (vector index) - (lap-operands 'runtime\ iref vector index)) - (:iset (vector index value) - (lap-operands 'runtime\ iset vector index value)) - (:cref (vector i) - `(runtime\ svref ,(lap-operand vector) - ,i)) - (:lisp-variable (symbol) - symbol) - (:lisp (form) - form))) - -(defun lap-operands (fn &rest regs) - (cons fn (mapcar #'lap-operand regs))) - -(defun lap-reg (n) - (intern (format nil "REG~D" n) - *the-clos-package*)) - - -;;; Runtime Implementations of the operands and opcodes. In those ports of CLOS which choose not to -;;; completely re-implement the LAP code generator, it may still be provident to consider -;;; reimplementing one or more of these to get the compiler to produce better code. That is why -;;; they are split out. - - -(proclaim '(declaration clos-fast-call)) - -(defmacro runtime\ funcall (fn &rest args) - `(funcall ,fn ,.args)) - -(defmacro runtime\ apply (fn &rest args) - `(apply ,fn ,.args)) - -(defmacro runtime\ std-wrapper (x) - `(std-instance-wrapper ,x)) - -(defmacro runtime\ fsc-wrapper (x) - `(fsc-instance-wrapper ,x)) - -(defmacro runtime\ built-in-wrapper (x) - `(built-in-wrapper-of ,x)) - -(defmacro runtime\ structure-wrapper (x) - `(??? ,x)) - -(defmacro runtime\ std-slots (x) - `(std-instance-slots (the std-instance ,x))) - -(defmacro runtime\ fsc-slots (x) - `(fsc-instance-slots ,x)) - -(defmacro runtime\ std-instance-p (x) - `(std-instance-p ,x)) - -(defmacro runtime\ fsc-instance-p (x) - `(fsc-instance-p ,x)) - -(defmacro runtime\ izerop (x) - `(zerop (the fixnum ,x))) - -(defmacro runtime\ fix= (x y) - `(= (the fixnum ,x) - (the fixnum ,y))) - - -;;; These are the implementations of the index operands. The portable assembler generates Lisp code -;;; that uses these macros. Even though the variables holding the arguments and results have type -;;; declarations on them, we put type declarations in here. Some compilers are so stupid... - - -(defmacro runtime\ iref (vector index) - `(svref (the simple-vector ,vector) - (the fixnum ,index))) - -(defmacro runtime\ iset (vector index value) - `(setf (svref (the simple-vector ,vector) - (the fixnum ,index)) - ,value)) - -(defmacro runtime\ svref (vector fixnum) - `(svref (the simple-vector ,vector) - (the fixnum ,fixnum))) - -(defmacro runtime\ i+ (index1 index2) - `(the fixnum (+ (the fixnum ,index1) - (the fixnum ,index2)))) - -(defmacro runtime\ i- (index1 index2) - `(the fixnum (- (the fixnum ,index1) - (the fixnum ,index2)))) - -(defmacro runtime\ i1+ (index) - `(the fixnum (1+ (the fixnum ,index)))) - -(defmacro runtime\ ilogand (index1 index2) - `(the fixnum (logand (the fixnum ,index1) - (the fixnum ,index2)))) - -(defmacro runtime\ ilogxor (index1 index2) - `(the fixnum (logxor (the fixnum ,index1) - (the fixnum ,index2)))) - - -;;; In the portable implementation, indexes are just fixnums. - - -(defconstant index-value-limit most-positive-fixnum) - -(defun index-value->index (index-value) - index-value) - -(defun index->index-value (index) - index) - -(defun make-index-mask (cache-size line-size) - (let ((cache-size-in-bits (floor (log cache-size 2))) - (line-size-in-bits (floor (log line-size 2))) - (mask 0)) - (dotimes (i cache-size-in-bits) - (setq mask (dpb 1 (byte 1 i) - mask))) - (dotimes (i line-size-in-bits) - (setq mask (dpb 0 (byte 1 i) - mask))) - mask)) diff --git a/obsolete/clos/2.0/precom-browser.cl b/obsolete/clos/2.0/precom-browser.cl deleted file mode 100644 index cb7bad35..00000000 --- a/obsolete/clos/2.0/precom-browser.cl +++ /dev/null @@ -1,3 +0,0 @@ -;; - -(CLOS::PRECOMPILE-RANDOM-CODE-SEGMENTS BROWSER) diff --git a/obsolete/clos/2.0/precom1.lisp b/obsolete/clos/2.0/precom1.lisp deleted file mode 100644 index 76d6e88b..00000000 --- a/obsolete/clos/2.0/precom1.lisp +++ /dev/null @@ -1,31 +0,0 @@ -;;;-*-Mode:LISP; Package:(CLOS LISP 1000); Base:10; Syntax:Common-lisp -*- -;;; -;;; ************************************************************************* -;;; Copyright (c) 1991 Venue -;;; All rights reserved. -;;; ************************************************************************* -;;; - -(in-package 'clos) - -;;; -;;; pre-allocate generic function caches. The hope is that this will put -;;; them nicely together in memory, and that that may be a win. Of course -;;; the first gc copy will probably blow that out, this really wants to be -;;; wrapped in something that declares the area static. -;;; -;;; This preallocation only creates about 25% more caches than CLOS itself -;;; uses need. Some ports may want to preallocate some more of these. -;;; -(eval-when (load) - (flet ((allocate (n size) - (mapcar #'free-cache - (mapcar #'get-cache - (make-list n :initial-element size))))) - (allocate 128 4) - (allocate 64 8) - (allocate 64 9) - (allocate 32 16) - (allocate 16 17) - (allocate 16 32) - (allocate 1 64))) \ No newline at end of file diff --git a/obsolete/clos/2.0/precom2.lisp b/obsolete/clos/2.0/precom2.lisp deleted file mode 100644 index 0c763a45..00000000 --- a/obsolete/clos/2.0/precom2.lisp +++ /dev/null @@ -1,12 +0,0 @@ -;;;-*-Mode:LISP; Package:(CLOS LISP 1000); Base:10; Syntax:Common-lisp -*- -;;; -;;; ************************************************************************* -;;; Copyright (c) 1991 Venue -;;; All rights reserved. -;;; ************************************************************************* -;;; - -(in-package 'clos) - -(precompile-dfun-constructors clos) ;this is half of a call to - ;precompile-random-code-segments diff --git a/obsolete/clos/2.0/precom4.lisp b/obsolete/clos/2.0/precom4.lisp deleted file mode 100644 index 06a17cf5..00000000 --- a/obsolete/clos/2.0/precom4.lisp +++ /dev/null @@ -1,12 +0,0 @@ -;;;-*-Mode:LISP; Package:(CLOS LISP 1000); Base:10; Syntax:Common-lisp -*- -;;; -;;; ************************************************************************* -;;; Copyright (c) 1991 Venue -;;; All rights reserved. -;;; ************************************************************************* -;;; - -(in-package 'clos) - -(precompile-function-generators clos) ;this is half of a call to - ;precompile-random-code-segments diff --git a/obsolete/clos/2.0/slots.lisp b/obsolete/clos/2.0/slots.lisp deleted file mode 100644 index c21c00d6..00000000 --- a/obsolete/clos/2.0/slots.lisp +++ /dev/null @@ -1,261 +0,0 @@ -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- - - -;;;. Copyright (c) 1991 by Venue - -(in-package "CLOS") - -;;; These four functions work on std-instances and fsc-instances. These are instances for which it -;;; is possible to change the wrapper and the slots. For these kinds of instances, most specified -;;; methods from the instance structure protocol are promoted to the implementation-specific class -;;; std-class. Many of these methods call these four functions. - - -(defun get-wrapper (inst) - (cond ((std-instance-p inst) - (std-instance-wrapper inst)) - ((fsc-instance-p inst) - (fsc-instance-wrapper inst)) - (t (error "What kind of instance is this?")))) - -(defun get-slots (inst) - (cond ((std-instance-p inst) - (std-instance-slots inst)) - ((fsc-instance-p inst) - (fsc-instance-slots inst)) - (t (error "What kind of instance is this?")))) - -(defun set-wrapper (inst new) - (cond ((std-instance-p inst) - (setf (std-instance-wrapper inst) - new)) - ((fsc-instance-p inst) - (setf (fsc-instance-wrapper inst) - new)) - (t (error "What kind of instance is this?")))) - -(defun set-slots (inst new) - (cond ((std-instance-p inst) - (setf (std-instance-slots inst) - new)) - ((fsc-instance-p inst) - (setf (fsc-instance-slots inst) - new)) - (t (error "What kind of instance is this?")))) - -(defmacro get-slot-value-2 (instance wrapper slot-name slots index) - `(let ((val (%svref ,slots ,index))) - (if (eq val ',*slot-unbound*) - (slot-unbound (wrapper-class ,wrapper) - ,instance - ,slot-name) - val))) - -(defmacro set-slot-value-2 (nv instance wrapper slot-name slots index) - (declare (ignore instance wrapper slot-name)) - `(setf (%svref ,slots ,index) - ,nv)) - -(defun get-class-slot-value-1 (object wrapper slot-name) - (let ((entry (assq slot-name (wrapper-class-slots wrapper)))) - (if (null entry) - (slot-missing (wrapper-class wrapper) - object slot-name 'slot-value) - (if (eq (cdr entry) - *slot-unbound*) - (slot-unbound (wrapper-class wrapper) - object slot-name) - (cdr entry))))) - -(defun set-class-slot-value-1 (new-value object wrapper slot-name) - (let ((entry (assq slot-name (wrapper-class-slots wrapper)))) - (if (null entry) - (slot-missing (wrapper-class wrapper) - object slot-name 'setf new-value) - (setf (cdr entry) - new-value)))) - -(defmethod class-slot-value ((class std-class) - slot-name) - (let ((wrapper (class-wrapper class)) - (prototype (class-prototype class))) - (get-class-slot-value-1 prototype wrapper slot-name))) - -(defmethod (setf class-slot-value) - (nv (class std-class) - slot-name) - (let ((wrapper (class-wrapper class)) - (prototype (class-prototype class))) - (set-class-slot-value-1 nv prototype wrapper slot-name))) - -(defmethod find-slot-definition ((class std-class) - slot-name) - (if (and (eq class *the-class-standard-class*) - (eq slot-name 'slots)) - *the-eslotd-standard-class-slots* - (progn (unless (class-finalized-p class) - (finalize-inheritance class)) - (dolist (eslotd (class-slots class)) - (when (eq (slotd-name eslotd) - slot-name) - (return eslotd)))))) - -(defun slot-value (object slot-name) - (let ((class (class-of object))) - (if (eq class *the-class-standard-effective-slot-definition*) - (let* ((wrapper (check-wrapper-validity object)) - (slots (get-slots object)) - (index (instance-slot-index wrapper slot-name))) - (if index - (get-slot-value-2 object wrapper slot-name slots index) - (get-class-slot-value-1 object wrapper slot-name))) - (let ((slot-definition (find-slot-definition class slot-name))) - (if (null slot-definition) - (slot-missing class object slot-name 'slot-value) - (slot-value-using-class class object slot-definition)))))) - -(defun set-slot-value (object slot-name new-value) - (let ((class (class-of object))) - (if (eq class *the-class-standard-effective-slot-definition*) - (let* ((wrapper (check-wrapper-validity object)) - (slots (get-slots object)) - (index (instance-slot-index wrapper slot-name))) - (if index - (set-slot-value-2 new-value object wrapper slot-name slots index) - (set-class-slot-value-1 new-value object wrapper slot-name))) - (let ((slot-definition (find-slot-definition class slot-name))) - (if (null slot-definition) - (slot-missing class object slot-name 'setf) - (setf (slot-value-using-class class object slot-definition) - new-value)))))) - -(defun slot-boundp (object slot-name) - (let* ((class (class-of object)) - (slot-definition (find-slot-definition class slot-name))) - (if (null slot-definition) - (slot-missing class object slot-name 'slot-boundp) - (slot-boundp-using-class class object slot-definition)))) - -(defun slot-makunbound (object slot-name) - (let* ((class (class-of object)) - (slot-definition (find-slot-definition class slot-name))) - (if (null slot-definition) - (slot-missing class object slot-name 'slot-makunbound) - (slot-makunbound-using-class class object slot-definition)))) - -(defun slot-exists-p (object slot-name) - (let* ((class (class-of object)) - (slot-definition (find-slot-definition class slot-name))) - (and slot-definition (slot-exists-p-using-class class object slot-definition)))) - - -;;; This isn't documented, but is used within CLOS in a number of print object methods (see -;;; named-object-print-function). - - -(defun slot-value-or-default (object slot-name &optional (default "unbound")) - (if (slot-boundp object slot-name) - (slot-value object slot-name) - default)) - - -;;; - - -(defmethod slot-value-using-class ((class std-class) - (object standard-object) - (slotd standard-effective-slot-definition)) - (let* ((wrapper (check-wrapper-validity object)) - ; trap if need be - (slots (get-slots object)) - (slot-name (slotd-name slotd)) - (index (or (slotd-instance-index slotd) - (setf (slotd-instance-index slotd) - (instance-slot-index wrapper slot-name))))) - (if index - (get-slot-value-2 object wrapper slot-name slots index) - (get-class-slot-value-1 object wrapper slot-name)))) - -(defmethod (setf slot-value-using-class) - (new-value (class std-class) - (object standard-object) - (slotd standard-effective-slot-definition)) - (let* ((wrapper (check-wrapper-validity object)) - ; trap if need be - (slots (get-slots object)) - (slot-name (slotd-name slotd)) - (index (or (slotd-instance-index slotd) - (setf (slotd-instance-index slotd) - (instance-slot-index wrapper slot-name))))) - (if index - (set-slot-value-2 new-value object wrapper slot-name slots index) - (set-class-slot-value-1 new-value object wrapper slot-name)))) - -(defmethod slot-boundp-using-class ((class std-class) - (object standard-object) - (slotd standard-effective-slot-definition)) - (let* ((wrapper (check-wrapper-validity object)) - ; trap if need be - (slots (get-slots object)) - (slot-name (slotd-name slotd)) - (index (or (slotd-instance-index slotd) - (setf (slotd-instance-index slotd) - (instance-slot-index wrapper slot-name))))) - (if index - (neq (svref slots index) - *slot-unbound*) - (let ((entry (assq slot-name (wrapper-class-slots wrapper)))) - (if (null entry) - (slot-missing class object slot-name 'slot-boundp) - (neq (cdr entry) - *slot-unbound*)))))) - -(defmethod slot-makunbound-using-class ((class std-class) - (object standard-object) - (slotd standard-effective-slot-definition)) - (let* ((wrapper (check-wrapper-validity object)) - ; trap if need be - (slots (get-slots object)) - (slot-name (slotd-name slotd)) - (index (or (slotd-instance-index slotd) - (setf (slotd-instance-index slotd) - (instance-slot-index wrapper slot-name))))) - (cond (index (setf (%svref slots index) - *slot-unbound*) - object) - (t (let ((entry (assq slot-name (wrapper-class-slots wrapper)))) - (if* (null entry) - (slot-missing class object slot-name 'slot-makunbound) - (setf (cdr entry) - *slot-unbound*) - object)))))) - -(defmethod slot-exists-p-using-class ((class std-class) - (object standard-object) - (slotd standard-effective-slot-definition)) - t) - -(defmethod slot-missing ((class t) - instance slot-name operation &optional new-value) - (error "When attempting to ~A,~%the slot ~S is missing from the object ~S." - (ecase operation - (slot-value "read the slot's value (slot-value)") - (setf (format nil "set the slot's value to ~S (setf of slot-value)" new-value)) - (slot-boundp "test to see if slot is bound (slot-boundp)") - (slot-makunbound "make the slot unbound (slot-makunbound)")) - slot-name instance)) - -(defmethod slot-unbound ((class t) - instance slot-name) - (error "The slot ~S is unbound in the object ~S." slot-name instance)) - -(defmethod allocate-instance ((class standard-class) - &rest initargs) - (declare (ignore initargs)) - (unless (class-finalized-p class) - (finalize-inheritance class)) - (let* ((class-wrapper (class-wrapper class)) - (instance (%allocate-instance--class (class-no-of-instance-slots class)))) - (setf (std-instance-wrapper instance) - class-wrapper) - instance)) diff --git a/obsolete/clos/2.0/std-class.lisp b/obsolete/clos/2.0/std-class.lisp deleted file mode 100644 index a07b366c..00000000 --- a/obsolete/clos/2.0/std-class.lisp +++ /dev/null @@ -1,997 +0,0 @@ - -;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*- - - -;;; File converted on 10-Apr-91 22:24:19 from source std-class -;;;. Original source {dsk}local>users>welch>lisp>clos>rev4>il-format>std-class.;4 created 20-Feb-91 13:07:14 - -;;;. Copyright (c) 1991 by Venue - - -(in-package "CLOS") - - - -(define-gf-predicate classp class) - -(define-gf-predicate standard-class-p standard-class) - -(define-gf-predicate forward-referenced-class-p forward-referenced-class) - -(defmethod shared-initialize :after ((object documentation-mixin) - slot-names &key documentation) - (declare (ignore slot-names)) - (setf (plist-value object 'documentation) - documentation)) - -(defmethod documentation (object &optional doc-type) - (cl:documentation object doc-type)) - -(defmethod (setf documentation) - (new-value object &optional doc-type) - (declare (ignore new-value doc-type)) - (error "Can't change the documentation of ~S." object)) - -(defmethod documentation ((object documentation-mixin) - &optional doc-type) - (declare (ignore doc-type)) - (car (plist-value object 'documentation))) - -(defmethod (setf documentation) - (new-value (object documentation-mixin) - &optional doc-type) - (declare (ignore doc-type)) - (setf (plist-value object 'documentation) - new-value)) - -(defmethod documentation ((slotd standard-slot-definition) - &optional doc-type) - (declare (ignore doc-type)) - (slot-value slotd 'documentation)) - -(defmethod (setf documentation) - (new-value (slotd standard-slot-definition) - &optional doc-type) - (declare (ignore doc-type)) - (setf (slot-value slotd 'documentation) - new-value)) - -(defmethod documentation ((method standard-method) &optional doc-type) - (declare (ignore doc-type)) - (plist-value method 'documentation)) - -(defmethod (setf documentation) - (new-value (method standard-method) - &optional doc-type) - (declare (ignore doc-type)) - (setf (plist-value method 'documentation) new-value)) - -;;; Various class accessors that are a little more complicated than can be done with automatically -;;; generated reader methods. - - -(defmethod class-wrapper ((class clos-class)) - (with-slots (wrapper) - class - (let ((w? wrapper)) - (if (consp w?) - (let ((new (make-wrapper class))) - (setf (wrapper-instance-slots-layout new) - (car w?) - (wrapper-class-slots new) - (cdr w?)) - (setq wrapper new)) - w?)))) - -(defmethod class-precedence-list ((class clos-class)) - (unless (class-finalized-p class) - (finalize-inheritance class)) - (with-slots (class-precedence-list) - class - class-precedence-list)) - -(defmethod class-finalized-p ((class clos-class)) - (with-slots (wrapper) - class - (not (null wrapper)))) - -(defmethod class-prototype ((class std-class)) - (with-slots (prototype) - class - (or prototype (setq prototype (allocate-instance class))))) - -(defmethod class-direct-default-initargs ((class std-class)) - (plist-value class 'direct-default-initargs)) - -(defmethod class-default-initargs ((class std-class)) - (plist-value class 'default-initargs)) - -(defmethod class-constructors ((class std-class)) - (plist-value class 'constructors)) - -(defmethod class-slot-cells ((class std-class)) - (plist-value class 'class-slot-cells)) - - -;;; Class accessors that are even a little bit more complicated than those above. These have a -;;; protocol for updating them, we must implement that protocol. Maintaining the direct subclasses -;;; backpointers. The update methods are here, the values are read by an automatically generated -;;; reader method. - - -(defmethod add-direct-subclass ((class class) - (subclass class)) - (with-slots (direct-subclasses) - class - (pushnew subclass direct-subclasses) - subclass)) - -(defmethod remove-direct-subclass ((class class) - (subclass class)) - (with-slots (direct-subclasses) - class - (setq direct-subclasses (remove subclass direct-subclasses)) - subclass)) - - -;;; Maintaining the direct-methods and direct-generic-functions backpointers. There are four generic -;;; functions involved, each has one method for the class case and another method for the damned EQL -;;; specializers. All of these are specified methods and appear in their specified place in the -;;; class graph. ADD-METHOD-ON-SPECIALIZER REMOVE-METHOD-ON-SPECIALIZER SPECIALIZER-METHODS -;;; SPECIALIZER-GENERIC-FUNCTIONS In each case, we maintain one value which is a cons. The car is -;;; the list methods. The cdr is a list of the generic functions. The cdr is always computed -;;; lazily. - - -(defmethod add-method-on-specializer ((method method) - (specializer class)) - (with-slots (direct-methods) - specializer - (setf (car direct-methods) - (adjoin method (car direct-methods)) - (cdr direct-methods) - nil)) - method) - -(defmethod remove-method-on-specializer ((method method) - (specializer class)) - (with-slots (direct-methods) - specializer - (setf (car direct-methods) - (remove method (car direct-methods)) - (cdr direct-methods) - nil)) - method) - -(defmethod specializer-methods ((specializer class)) - (with-slots (direct-methods) - specializer - (car direct-methods))) - -(defmethod specializer-generic-functions ((specializer class)) - (with-slots (direct-methods) - specializer - (or (cdr direct-methods) - (setf (cdr direct-methods) - (gathering1 (collecting-once) - (dolist (m (car direct-methods)) - (gather1 (method-generic-function m)))))))) - - -;;; This hash table is used to store the direct methods and direct generic functions of EQL -;;; specializers. Each value in the table is the cons. - - -(defvar *eql-specializer-methods* (make-hash-table :test #'eql)) - -(defmethod add-method-on-specializer ((method method) - (specializer eql-specializer)) - (let* ((object (eql-specializer-object specializer)) - (entry (gethash object *eql-specializer-methods*))) - (unless entry - (setq entry (setf (gethash object *eql-specializer-methods*) - (cons nil nil)))) - (setf (car entry) - (adjoin method (car entry)) - (cdr entry) - nil) - method)) - -(defmethod remove-method-on-specializer ((method method) - (specializer eql-specializer)) - (let* ((object (eql-specializer-object specializer)) - (entry (gethash object *eql-specializer-methods*))) - (when entry - (setf (car entry) - (remove method (car entry)) - (cdr entry) - nil)) - method)) - -(defmethod specializer-methods ((specializer eql-specializer)) - (car (gethash (eql-specializer-object specializer) - *eql-specializer-methods*))) - -(defmethod specializer-generic-functions ((specializer eql-specializer)) - (let* ((object (eql-specializer-object specializer)) - (entry (gethash object *eql-specializer-methods*))) - (when entry - (or (cdr entry) - (setf (cdr entry) - (gathering1 (collecting-once) - (dolist (m (car entry)) - (gather1 (method-generic-function m))))))))) - -(defun real-load-defclass (name metaclass-name supers slots other accessors) - (do-standard-defsetfs-for-defclass accessors) - ; *** - (apply #'ensure-class name :metaclass metaclass-name :direct-superclasses supers :direct-slots - slots :definition-source `((defclass ,name () - ()) - ,(load-truename)) - other)) - -(defun ensure-class (name &rest all) - (apply #'ensure-class-using-class name (find-class name nil) - all)) - -(defmethod ensure-class-using-class (name (class null) - &rest args &key) - (multiple-value-bind (meta initargs) - (ensure-class-values class args) - (setf class (apply #'make-instance meta :name name initargs) - (find-class name) - class) - (inform-type-system-about-class class name) - ; *** - class)) - -(defmethod ensure-class-using-class (name (class clos-class) - &rest args &key) - (multiple-value-bind (meta initargs) - (ensure-class-values class args) - (unless (eq (class-of class) - meta) - (change-class class meta)) - (apply #'reinitialize-instance class initargs) - (inform-type-system-about-class class name) - ; *** - class)) - -(defun ensure-class-values (class args) - (let* ((initargs (copy-list args)) - (unsupplied (list 1)) - (supplied-meta (getf initargs :metaclass unsupplied)) - (supplied-supers (getf initargs :direct-superclasses unsupplied)) - (supplied-slots (getf initargs :direct-slots unsupplied)) - (meta (cond ((neq supplied-meta unsupplied) - (find-class supplied-meta)) - ((or (null class) - (forward-referenced-class-p class)) - *the-class-standard-class*) - (t (class-of class)))) - (proto (class-prototype meta))) - (flet ((fix-super (s) - (cond ((classp s) - s) - ((not (legal-class-name-p s)) - (error "~S is not a class or a legal class name." s)) - (t (or (find-class s nil) - (setf (find-class s) - (make-instance 'forward-referenced-class :name s))))))) - (loop (unless (remf initargs :metaclass) - (return))) - (loop (unless (remf initargs :direct-superclasses) - (return))) - (loop (unless (remf initargs :direct-slots) - (return))) - (values meta (list* :direct-superclasses (and (neq supplied-supers unsupplied) - (mapcar #'fix-super supplied-supers) - ) - :direct-slots - (and (neq supplied-slots unsupplied) - supplied-slots) - initargs))))) - - -;;; - - -(defmethod shared-initialize :before ((class std-class) - slot-names &key direct-superclasses) - (declare (ignore slot-names)) - - ;; *** error checking - ) - -(defmethod shared-initialize :after ((class std-class) - slot-names - &key (direct-superclasses - nil direct-superclasses-p) - (direct-slots nil direct-slots-p) - (direct-default-initargs - nil direct-default-initargs-p)) - (declare (ignore slot-names)) - (setq direct-superclasses (if direct-superclasses-p - (setf (slot-value class 'direct-superclasses) - (or direct-superclasses - (list *the-class-standard-object*) - )) - (slot-value class 'direct-superclasses))) - (setq direct-slots (if direct-slots-p - (setf (slot-value class 'direct-slots) - (mapcar #'(lambda (pl) - (make-direct-slotd class pl)) - direct-slots)) - (slot-value class 'direct-slots))) - (if direct-default-initargs-p - (setf (plist-value class 'direct-default-initargs) - direct-default-initargs) - (setq direct-default-initargs - (plist-value class 'direct-default-initargs))) - (setf (plist-value class 'class-slot-cells) - (gathering1 (collecting) - (dolist (dslotd direct-slots) - (when (eq (slotd-allocation dslotd) - class) - (let ((initfunction (slotd-initfunction dslotd))) - (gather1 (cons (slotd-name dslotd) - (if initfunction - (funcall initfunction) - *slot-unbound*)))))))) - (add-direct-subclasses class direct-superclasses) - (add-slot-accessors class direct-slots)) - -(defmethod reinitialize-instance :before ((class std-class) - &key direct-superclasses direct-slots - direct-default-initargs) - (declare (ignore direct-default-initargs)) - (remove-direct-subclasses class (class-direct-superclasses class)) - (remove-slot-accessors class (class-direct-slots class))) - -(defmethod reinitialize-instance :after ((class std-class) - &rest initargs &key) - (update-class class nil) - (map-dependents class #'(lambda (dependent) - (apply #'update-dependent class dependent initargs)))) - -(defun add-slot-accessors (class dslotds) - (fix-slot-accessors class dslotds 'add)) - -(defun remove-slot-accessors (class dslotds) - (fix-slot-accessors class dslotds 'remove)) - -(defun fix-slot-accessors (class dslotds add/remove) - (flet ((fix (gfspec name r/w) - (let ((gf (ensure-generic-function gfspec))) - (case r/w - (r (if (eq add/remove 'add) - (add-reader-method class gf name) - (remove-reader-method class gf))) - (w (if (eq add/remove 'add) - (add-writer-method class gf name) - (remove-writer-method class gf))))))) - (dolist (dslotd dslotds) - (let ((slot-name (slotd-name dslotd))) - (dolist (r (slotd-readers dslotd)) - (fix r slot-name 'r)) - (dolist (w (slotd-writers dslotd)) - (fix w slot-name 'w)))))) - -(defun add-direct-subclasses (class new) - (dolist (n new) - (unless (memq class (class-direct-subclasses class)) - (add-direct-subclass n class)))) - -(defun remove-direct-subclasses (class new) - (let ((old (class-direct-superclasses class))) - (dolist (o (set-difference old new)) - (remove-direct-subclass o class)))) - - -;;; - - -(defmethod finalize-inheritance ((class std-class)) - (update-class class t)) - - -;;; Called by :after reinitialize instance whenever a class is reinitialized. The class may or may -;;; not be finalized. - - -(defun update-class (class finalizep) - (when (or finalizep (class-finalized-p class)) - (let* ((dsupers (class-direct-superclasses class)) - (dslotds (class-direct-slots class)) - (dinits (class-direct-default-initargs class)) - (cpl (compute-class-precedence-list class dsupers)) - (eslotds (compute-slots class cpl dslotds)) - (inits (compute-default-initargs class cpl dinits))) - (update-cpl class cpl) - (update-slots class cpl eslotds) - (update-dinits class dinits) - (update-inits class inits) - (update-constructors class))) - (unless finalizep - (dolist (sub (class-direct-subclasses class)) - (update-class sub nil)))) - -(defun update-cpl (class cpl) - (when (class-finalized-p class) - (unless (equal (class-precedence-list class) - cpl) - (force-cache-flushes class))) - (setf (slot-value class 'class-precedence-list) - cpl)) - -(defun update-slots (class cpl eslotds) - (multiple-value-bind (nlayout nwrapper-class-slots) - (compute-storage-info cpl eslotds) - - ;; If there is a change in the shape of the instances then the old class is now obsolete. - (let* ((owrapper (class-wrapper class)) - (olayout (and owrapper (wrapper-instance-slots-layout owrapper))) - (owrapper-class-slots (and owrapper (wrapper-class-slots owrapper))) - (nwrapper (cond ((null owrapper) - (make-wrapper class)) - ((and (equal nlayout olayout) - (not (iterate ((o (list-elements owrapper-class-slots)) - (n (list-elements nwrapper-class-slots))) - (unless (eq (car o) - (car n)) - (return t))))) - owrapper) - (t - - ;; This will initialize the new wrapper to have the same state as - ;; the old wrapper. We will then have to change that. This may - ;; seem like wasted work (it is), but the spec requires that we - ;; call make-instances-obsolete. - (make-instances-obsolete class) - (class-wrapper class))))) - (with-slots (wrapper no-of-instance-slots slots) - class - (setf no-of-instance-slots (length nlayout) - slots eslotds (wrapper-instance-slots-layout nwrapper) - nlayout - (wrapper-class-slots nwrapper) - nwrapper-class-slots wrapper nwrapper)) - (dolist (eslotd eslotds) - (setf (slotd-class eslotd) - class) - (setf (slotd-instance-index eslotd) - (instance-slot-index nwrapper (slotd-name eslotd))))))) - -(defun compute-storage-info (cpl eslotds) - (let ((instance nil) - (class nil)) - (dolist (eslotd eslotds) - (let ((alloc (slotd-allocation eslotd))) - (cond ((eq alloc :instance) - (push eslotd instance)) - ((classp alloc) - (push eslotd class))))) - (values (compute-layout cpl instance) - (compute-class-slots class)))) - -(defun compute-layout (cpl instance-eslotds) - (let* ((names (gathering1 (collecting) - (dolist (eslotd instance-eslotds) - (when (eq (slotd-allocation eslotd) - :instance) - (gather1 (slotd-name eslotd)))))) - (order nil)) - (labels ((rwalk (tail) - (when tail - (rwalk (cdr tail)) - (dolist (ss (class-slots (car tail))) - (let ((n (slotd-name ss))) - (when (memq n names) - (setq order (cons n order) - names - (remove n names)))))))) - (rwalk cpl) - (reverse (append names order))))) - -(defun compute-class-slots (eslotds) - (gathering1 (collecting) - (dolist (eslotd eslotds) - (gather1 (assoc (slotd-name eslotd) - (class-slot-cells (slotd-allocation eslotd))))))) -(defun update-dinits (class dinits) - (setf (plist-value class 'direct-default-initargs) - (remove-invalid dinits (class-slots class)))) - -(defun update-inits (class inits) - (setf (plist-value class 'default-initargs) - (remove-invalid inits (class-slots class)))) - -;; bug: :default-initargs aren't updated with slots are removed, so -;; update-inits removes initargs that don't have corresponding slots. - -(defun remove-invalid (inits slotds &aux (return nil)) - (dolist (element inits) - (dolist (slotd slotds) - (if (member (car element) (slot-value slotd 'initargs)) - (pushnew element return)))) - return) - - - -(defmethod compute-default-initargs ((class std-class) - cpl direct) - (labels ((walk (tail) - (if (null tail) - nil - (let ((c (pop tail))) - (append (if (eq c class) - direct - (class-direct-default-initargs c)) - (walk tail)))))) - (let ((initargs (walk cpl))) - (delete-duplicates initargs - :test #'eq :key #'car :from-end t)))) - - -;;; Protocols for constructing direct and effective slot definitions. - - -(defmethod direct-slot-definition-class ((class std-class) - initargs) - (declare (ignore initargs)) - (find-class 'standard-direct-slot-definition)) - -(defun make-direct-slotd (class initargs) - (let ((initargs (list* :class class initargs))) - (apply #'make-instance (direct-slot-definition-class class initargs) - initargs))) - - -;;; - - -(defmethod compute-slots ((class std-class) - cpl class-direct-slots) - - ;; As specified, we must call COMPUTE-EFFECTIVE-SLOT-DEFINITION once for each different slot - ;; name we find in our superclasses. Each call receives the class and a list of the dslotds - ;; with that name. The list is in most-specific-first order. - (let ((name-dslotds-alist nil)) - (labels ((collect-one-class (dslotds) - (dolist (d dslotds) - (let* ((name (slotd-name d)) - (entry (assq name name-dslotds-alist))) - (if entry - (push d (cdr entry)) - (push (list name d) - name-dslotds-alist)))))) - (collect-one-class class-direct-slots) - (dolist (c (cdr cpl)) - (collect-one-class (class-direct-slots c))) - (mapcar #'(lambda (direct) - (compute-effective-slot-definition class (nreverse (cdr direct))) - ) - name-dslotds-alist)))) - -(defmethod compute-effective-slot-definition ((class std-class) - dslotds) - (let* ((initargs (compute-effective-slot-definition-initargs class dslotds)) - (class (effective-slot-definition-class class initargs))) - (apply #'make-instance class initargs))) - -(defmethod effective-slot-definition-class ((class std-class) - initargs) - (declare (ignore initargs)) - (find-class 'standard-effective-slot-definition)) - -(defmethod compute-effective-slot-definition-initargs ((class std-class) - direct-slotds) - (let* ((name nil) - (initfunction nil) - (initform nil) - (initargs nil) - (allocation nil) - (type t) - (namep nil) - (initp nil) - (allocp nil)) - (dolist (slotd direct-slotds) - (when slotd - (unless namep - (setq name (slotd-name slotd) - namep t)) - (unless initp - (when (slotd-initfunction slotd) - (setq initform (slotd-initform slotd) - initfunction - (slotd-initfunction slotd) - initp t))) - (unless allocp - (setq allocation (slotd-allocation slotd) - allocp t)) - (setq initargs (append (slotd-initargs slotd) - initargs)) - (let ((slotd-type (slotd-type slotd))) - (setq type (cond ((null type) - slotd-type) - ((subtypep type slotd-type) - type) - (t `(and ,type ,slotd-type))))))) - (list :name name :initform initform :initfunction initfunction :initargs initargs - :allocation allocation :type type))) - - -;;; NOTE: For bootstrapping considerations, these can't use make-instance to make the method object. -;;; They have to use make-a-method which is a specially bootstrapped mechanism for making standard -;;; methods. - - -(defmethod add-reader-method ((class std-class) - generic-function slot-name) - (let* ((name (class-name class)) - (method (make-a-method 'standard-reader-method nil (list (or name 'standard-object)) - (list class) - (make-reader-method-function class slot-name) - "automatically generated reader method" slot-name))) - (add-method generic-function method))) - -(defmethod add-writer-method ((class std-class) - generic-function slot-name) - (let* ((name (class-name class)) - (method (make-a-method 'standard-writer-method nil (list 'new-value (or name - - ' - standard-object - )) - (list *the-class-t* class) - (make-writer-method-function class slot-name) - "automatically generated writer method" slot-name))) - (add-method generic-function method))) - -(defmethod remove-reader-method ((class std-class) - generic-function) - (let ((method (get-method generic-function nil (list class) - nil))) - (when method (remove-method generic-function method)))) - -(defmethod remove-writer-method ((class std-class) - generic-function) - (let ((method (get-method generic-function nil (list *the-class-t* class) - nil))) - (when method (remove-method generic-function method)))) - - -;;; make-reader-method-function and make-write-method function are NOT part of the standard -;;; protocol. They are however useful, CLOS makes uses makes use of them internally and documents -;;; them for CLOS users. *** This needs work to make type testing by the writer functions which *** -;;; do type testing faster. The idea would be to have one constructor *** for each possible type -;;; test. In order to do this it would be nice *** to have help from inform-type-system-about-class -;;; and friends. *** There is a subtle bug here which is going to have to be fixed. *** Namely, the -;;; simplistic use of the template has to be fixed. We *** have to give the optimize-slot-value -;;; method the user might have *** defined for this metclass a chance to run. - - -(defmethod make-reader-method-function ((class standard-class) - slot-name) - (make-std-reader-method-function slot-name)) - -(defmethod make-writer-method-function ((class standard-class) - slot-name) - (make-std-writer-method-function slot-name)) - -(defun make-std-reader-method-function (slot-name) - #'(lambda (instance) - (slot-value instance slot-name))) - -(defun make-std-writer-method-function (slot-name) - #'(lambda (nv instance) - (setf (slot-value instance slot-name) - nv))) - - ; inform-type-system-about-class - ; make-type-predicate - - - -;;; These are NOT part of the standard protocol. They are internal mechanism which CLOS uses to -;;; *try* and tell the type system about class definitions. In a more fully integrated -;;; implementation of CLOS, the type system would know about class objects and class names in a more -;;; fundamental way and the mechanism used to inform the type system about new classes would be -;;; different. - - -(defmethod inform-type-system-about-class ((class std-class) - name) - (let ((predicate-name (make-type-predicate-name name))) - (setf (symbol-function predicate-name) - (make-type-predicate name)) - (do-satisfies-deftype name predicate-name) - (setf (gethash name lisp::*typep-hash-table*) - predicate-name))) ;makes typep significantly faster... - -(defun make-type-predicate (name) - #'(lambda (x) - (not (null (memq (find-class name) - (cond ((std-instance-p x) - (class-precedence-list (std-instance-class x))) - ((fsc-instance-p x) - (class-precedence-list (fsc-instance-class x))))))))) - - -;;; These 4 definitions appear here for bootstrapping reasons. Logically, they should be in the -;;; construct file. For documentation purposes, a copy of these definitions appears in the -;;; construct file. If you change one of the definitions here, be sure to change the copy there. - - -(defvar *initialization-generic-functions* (list #'make-instance #'default-initargs - #'allocate-instance #'initialize-instance - #'shared-initialize)) - -(defmethod maybe-update-constructors ((generic-function generic-function) - (method method)) - (when (memq generic-function *initialization-generic-functions*) - (labels ((recurse (class) - (update-constructors class) - (dolist (subclass (class-direct-subclasses class)) - (recurse subclass)))) - (when (classp (car (method-specializers method))) - (recurse (car (method-specializers method))))))) - -(defmethod update-constructors ((class std-class)) - (dolist (cons (class-constructors class)) - (install-lazy-constructor-installer cons))) - -(defmethod update-constructors ((class class)) - nil) - -(defmethod compatible-meta-class-change-p (class proto-new-class) - (eq (class-of class) - (class-of proto-new-class))) - -(defmethod check-super-metaclass-compatibility ((class t) - (new-super t)) - (unless (eq (class-of class) - (class-of new-super)) - (error "The class ~S was specified as a~%super-class of the class ~S;~%~ - but the meta-classes ~S and~%~S are incompatible." new-super class (class-of new-super) - (class-of class)))) - - -;;; - - -(defun force-cache-flushes (class) - (let* ((owrapper (class-wrapper class)) - (state (wrapper-state owrapper))) - - ;; We only need to do something if the state is still T. If the state isn't T, it will - ;; be FLUSH or OBSOLETE, and both of those will already be doing what we want. In - ;; particular, we must be sure we never change an OBSOLETE into a FLUSH since OBSOLETE - ;; means do what FLUSH does and then some. - (when (eq state 't) - (let ((nwrapper (make-wrapper class))) - (setf (wrapper-instance-slots-layout nwrapper) - (wrapper-instance-slots-layout owrapper)) - (setf (wrapper-class-slots nwrapper) - (wrapper-class-slots owrapper)) - (without-interrupts (setf (slot-value class 'wrapper) - nwrapper) - (invalidate-wrapper owrapper 'flush nwrapper)) - (update-constructors class))))) - - ; ??? *** - - -(defun flush-cache-trap (owrapper nwrapper instance) - (declare (ignore owrapper)) - (set-wrapper instance nwrapper)) - - -;;; make-instances-obsolete can be called by user code. It will cause the next access to the -;;; instance (as defined in 88-002R) to trap through the update-instance-for-redefined-class -;;; mechanism. - - -(defmethod make-instances-obsolete ((class std-class)) - (let ((owrapper (class-wrapper class)) - (nwrapper (make-wrapper class))) - (setf (wrapper-instance-slots-layout nwrapper) - (wrapper-instance-slots-layout owrapper)) - (setf (wrapper-class-slots nwrapper) - (wrapper-class-slots owrapper)) - (without-interrupts (setf (slot-value class 'wrapper) - nwrapper) - (invalidate-wrapper owrapper 'obsolete nwrapper) - class))) - -(defmethod make-instances-obsolete ((class symbol)) - (make-instances-obsolete (find-class class))) - - -;;; obsolete-instance-trap is the internal trap that is called when we see an obsolete instance. -;;; The times when it is called are: - when the instance is involved in method lookup - when -;;; attempting to access a slot of an instance It is not called by class-of, wrapper-of, or any of -;;; the low-level instance access macros. Of course these times when it is called are an internal -;;; implementation detail of CLOS and are not part of the documented description of when the obsolete -;;; instance update happens. The documented description is as it appears in 88-002R. This has to -;;; return the new wrapper, so it counts on all the methods on obsolete-instance-trap-internal to -;;; return the new wrapper. It also does a little internal error checking to make sure that the -;;; traps are only happening when they should, and that the trap methods are computing apropriate -;;; new wrappers. - - -(defun obsolete-instance-trap (owrapper nwrapper instance) - - ;; local --> local transfer local --> shared discard local --> -- - ;; discard shared --> local transfer shared --> shared discard shared --> -- - ;; discard -- --> local add -- --> shared -- - (let* ((class (wrapper-class nwrapper)) - (guts (allocate-instance class)) - ; ??? allocate-instance ??? - (olayout (wrapper-instance-slots-layout owrapper)) - (nlayout (wrapper-instance-slots-layout nwrapper)) - (oslots (get-slots instance)) - (nslots (get-slots guts)) - (oclass-slots (wrapper-class-slots owrapper)) - (added nil) - (discarded nil) - (plist nil)) - - ;; Go through all the old local slots. - (iterate ((name (list-elements olayout)) - (opos (interval :from 0))) - (let ((npos (posq name nlayout))) - (if npos - (setf (svref nslots npos) - (svref oslots opos)) - (progn (push name discarded) - (unless (eq (svref oslots opos) - *slot-unbound*) - (setf (getf plist name) - (svref oslots opos))))))) - - ;; Go through all the old shared slots. - (iterate ((oclass-slot-and-val (list-elements oclass-slots))) - (let ((name (car oclass-slot-and-val)) - (val (cdr oclass-slot-and-val))) - (let ((npos (posq name nlayout))) - (if npos - (setf (svref nslots npos) - (cdr oclass-slot-and-val)) - (progn (push name discarded) - (unless (eq val *slot-unbound*) - (setf (getf plist name) - val))))))) - - ;; Go through all the new local slots to compute the added slots. - (dolist (nlocal nlayout) - (unless (or (memq nlocal olayout) - (assq nlocal oclass-slots)) - (push nlocal added))) - (without-interrupts (set-wrapper instance nwrapper) - (set-slots instance nslots)) - (update-instance-for-redefined-class instance added discarded plist) - nwrapper)) - - -;;; - - -(defmacro change-class-internal (wrapper-fetcher slots-fetcher alloc) - `(let* ((old-class (class-of instance)) - (copy (,alloc old-class)) - (guts (,alloc new-class)) - (new-wrapper (,wrapper-fetcher guts)) - (old-wrapper (class-wrapper old-class)) - (old-layout (wrapper-instance-slots-layout old-wrapper)) - (new-layout (wrapper-instance-slots-layout new-wrapper)) - (old-slots (,slots-fetcher instance)) - (new-slots (,slots-fetcher guts)) - (old-class-slots (wrapper-class-slots old-wrapper))) - - ;; "The values of local slots specified by both the class Cto and Cfrom are retained. - ;; If such a local slot was unbound, it remains unbound." - (iterate ((new-slot (list-elements new-layout)) - (new-position (interval :from 0))) - (let ((old-position (position new-slot old-layout :test #'eq))) - (when old-position - (setf (svref new-slots new-position) - (svref old-slots old-position))))) - - ;; "The values of slots specified as shared in the class Cfrom and as local in the - ;; class Cto are retained." - (iterate ((slot-and-val (list-elements old-class-slots))) - (let ((position (position (car slot-and-val) - new-layout :test #'eq))) - (when position - (setf (svref new-slots position) - (cdr slot-and-val))))) - - ;; Make the copy point to the old instance's storage, and make the old instance point - ;; to the new storage. - (without-interrupts (setf (,slots-fetcher copy) - old-slots) - (setf (,wrapper-fetcher instance) - new-wrapper) - (setf (,slots-fetcher instance) - new-slots)) - (update-instance-for-different-class copy instance) - instance)) - -(defmethod change-class ((instance standard-object) - (new-class standard-class)) - (unless (std-instance-p instance) - (error "Can't change the class of ~S to ~S~@ - because it isn't already an instance with metaclass~%~S." instance new-class - 'standard-class)) - (change-class-internal std-instance-wrapper std-instance-slots allocate-instance)) - -(defmethod change-class ((instance standard-object) - (new-class funcallable-standard-class)) - (unless (fsc-instance-p instance) - (error "Can't change the class of ~S to ~S~@ - because it isn't already an instance with metaclass~%~S." instance new-class - 'funcallable-standard-class)) - (change-class-internal fsc-instance-wrapper fsc-instance-slots allocate-instance)) - -(defmethod change-class ((instance t) - (new-class-name symbol)) - (change-class instance (find-class new-class-name))) - - -;;; The metaclass BUILT-IN-CLASS This metaclass is something of a weird creature. By this point, -;;; all instances of it which will exist have been created, and no instance is ever created by -;;; calling MAKE-INSTANCE. But, there are other parts of the protcol we must follow and those -;;; definitions appear here. - - -(defmethod shared-initialize :before ((class built-in-class) - slot-names &rest initargs) - (declare (ignore slot-names)) - (error "Attempt to initialize or reinitialize a built in class.")) - -(defmethod class-direct-slots ((class built-in-class)) - nil) - -(defmethod class-slots ((class built-in-class)) - nil) - -(defmethod class-direct-default-initargs ((class built-in-class)) - nil) - -(defmethod class-default-initargs ((class built-in-class)) - nil) - -(defmethod check-super-metaclass-compatibility ((c class) - (s built-in-class)) - (or (eq s *the-class-t*) - (error "~S cannot have ~S as a super.~%~ - The class ~S is the only built in class that can be a~%~ - superclass of a standard class." c s *the-class-t*))) - - -;;; - - -(defmethod check-super-metaclass-compatibility ((c std-class) - (f forward-referenced-class)) - 't) - - -;;; - - -(defmethod add-dependent ((metaobject dependent-update-mixin) - dependent) - (pushnew dependent (plist-value metaobject 'dependents))) - -(defmethod remove-dependent ((metaobject dependent-update-mixin) - dependent) - (setf (plist-value metaobject 'dependents) - (delete dependent (plist-value metaobject 'dependents)))) - -(defmethod map-dependents ((metaobject dependent-update-mixin) - function) - (dolist (dependent (plist-value metaobject 'dependents)) - (funcall function dependent))) diff --git a/obsolete/clos/2.0/test.lisp b/obsolete/clos/2.0/test.lisp deleted file mode 100644 index 74c921f2..00000000 --- a/obsolete/clos/2.0/test.lisp +++ /dev/null @@ -1,2880 +0,0 @@ -;;;-*- Mode:LISP; Package: CLOS; Base:10; Syntax:Common-lisp -*- -;;; -;;; ************************************************************************* -;;; Copyright (c) 1991 Venue -;;; All rights reserved. -;;; ************************************************************************* -;;; -;;; Testing code. -;;; - -(in-package :clos) - -;;; Because CommonLoops runs in itself so much, the notion of a test file for -;;; it is kind of weird. -;;; -;;; If all of CLOS loads then many of the tests in this file (particularly -;;; those at the beginning) are sure to work. Those tests exists primarily -;;; to help debug things when low-level changes are made to CLOS, or when a -;;; particular port customizes low-level code. -;;; -;;; Some of the other tests are "real" in the sense that they test things -;;; that CLOS itself does not use, so might be broken. -;;; -;;; NOTE: -;;; The tests in this file do not appear in random order! They -;;; depend on state which has already been set up in order to run. -;;; - -(defmacro do-test (name cleanups &body body) - `(let ((do-test-failed nil)) - (catch 'do-test - (format t "~&Testing ~A..." ,name) -; (cleanup-do-test ',cleanups) - (block do-test ,@body) - (if do-test-failed - (format t "~&FAILED!") - (format t "OK"))))) - -(defmacro do-test-error (fatal string &rest args) - `(progn (terpri) - (setq do-test-failed t) - (format t ,string ,@args) - (when ,fatal (return-from do-test nil)))) - -(defun cleanup-do-test (cleanups) - (dolist (cleanup cleanups) - (ecase (car cleanup) - (:classes - (dolist (c (cdr cleanup)) - (let ((class (find-class c 'nil))) - (when class - (dolist (super (slot-value class 'direct-superclasses)) - (setf (slot-value class 'direct-subclasses) - (remove class (slot-value class 'direct-subclasses)))) - (setf (find-class c) nil))))) - (:functions - (dolist (f (cdr cleanup)) - (fmakunbound f))) - (:setf-generic-functions - (dolist (f (cdr cleanup)) - (fmakunbound (get-setf-function-name f)))) - (:variables - (dolist (v (cdr cleanup)) - (makunbound v)))))) - -#-(or KCL IBCL :Coral GCLisp) -(eval-when (eval) - (compile 'do-test) - (compile 'do-test-error) - (compile 'cleanup-do-test)) - - ;; -;;;;;; - ;; - -(do-test "types for early classes" - () - (dolist (x '(standard-object standard-class standard-slot-definition)) - (or (typep (make-instance x) x) - (do-test-error () "instance of ~S not of type ~S??" x x)))) - - -(do-test "types for late classes" - () - (dolist (x '(standard-method standard-generic-function)) - (or (typep (make-instance x) x) - (do-test-error () "~&instance of ~S not of type ~S??" x x)))) - -(defvar *built-in-class-tests* - '((ARRAY (MAKE-ARRAY '(10 10))) - (BIT-VECTOR (MAKE-ARRAY 10 :ELEMENT-TYPE 'BIT)) - (CHARACTER #\a) - (COMPLEX #C(1 2)) - (CONS (LIST 1 2 3)) - (FLOAT 1.3) - (INTEGER 1) - ;LIST abstract super of cons, null - (NULL NIL) - ;NUMBER abstract super of complex, float, rational - (RATIO 1/2) - ;RATIONAL abstract super of ratio, integer - ;SEQUENCE abstract super of list, vector - (STRING "foo") - (SYMBOL 'FOO) - (VECTOR (VECTOR 1 2 3)))) - -(do-test "built-in-class-of" - () - (let ((lostp nil)) - (dolist (tst *built-in-class-tests*) - (unless (eq (find-class (car tst) 't) - (class-of (eval (cadr tst)))) - (do-test-error () - "~&class-of ~S was ~A not ~A~%" - (cadr tst) - (class-name (class-of (eval (cadr tst)))) - (car tst)) - (setq lostp t))) - (not lostp))) - -(do-test "existence of generic-functions for accessors of early classes" - () - ;; Because accessors are done with add-method, and this has to be done - ;; specially for early classes it is worth testing to make sure that - ;; the generic-functions got created for the accessor of early classes. - ;; - ;; Of course CLOS wouldn't have loaded if most of these didn't exist, - ;; but what the hell. - (dolist (class '(standard-class - standard-slot-definition - standard-generic-function - standard-method)) - (dolist (slotd (class-slots (find-class class))) - (dolist (rea (slotd-readers slotd)) - (unless (and (gboundp rea) - (generic-function-p (gdefinition rea))) - (do-test-error () "~S isn't a generic function" rea))) - (dolist (wri (slotd-writers slotd)) - (unless (and (gboundp wri) - (generic-function-p (gdefinition wri))) - (do-test-error () "~S isn't a generic function" wri)))))) - -(do-test "early reader/writer methods are appropriate class" - () - ;; Because accessors are done with add-method, and this has to be done - ;; specially for early classes it is worth testing to make sure that - ;; the generic-functions got created for the accessor of early classes. - ;; - ;; Of course CLOS wouldn't have loaded if most of these didn't exist, - ;; but what the hell. - (dolist (class '(standard-class - standard-slot-definition - standard-generic-function - standard-method)) - (let ((class (find-class 'standard-class))) - (flet ((check-reader (gf) - (let ((reader (get-method (gdefinition gf) - () - (list class)))) - (unless (typep reader 'standard-reader-method) - (do-test-error () "~S isn't a READER method" reader)))) - (check-writer (gf) - (let ((writer (get-method (gdefinition gf) - () - (list (find-class 't) class)))) - (unless (typep writer 'standard-writer-method) - (do-test-error () "~S isn't a WRITER method" writer))))) - (dolist (slotd (class-direct-slots class)) - (dolist (rea (slotd-readers slotd)) - (check-reader rea)) - (dolist (wri (slotd-writers slotd)) - (check-writer wri))))))) - -(do-test "typep works for standard-classes" - ((:classes foo1 foo2 bar)) - - (defclass foo1 () ()) - (defclass foo2 (foo1) ()) - (defclass bar () ()) - - (let ((f1 (make-instance 'foo1)) - (f2 (make-instance 'foo2))) - (or (typep f1 'foo1) - (do-test-error - () "an instance of foo1 isn't subtypep of foo1")) - (or (not (typep f1 'foo2)) - (do-test-error - () "an instance of foo1 is suptypep of a subclass of foo1")) - (or (not (typep f1 'bar)) - (do-test-error - () "an instance of foo1 is subtypep of an unrelated class")) - (or (typep f2 'foo1) - (do-test-error - () "an instance of foo2 is not subtypep of a super-class of foo2")) - )) - -(do-test "accessors and readers should NOT be inherited" - ((:classes foo bar) - (:functions foo-x foo-y)) - - (defclass foo () - ((x :accessor foo-x) - (y :reader foo-y))) - - (fmakunbound 'foo-x) - (fmakunbound 'foo-y) - - (defclass bar (foo) - (x y)) - - (and (fboundp 'foo-x) (do-test-error () "foo-x got inherited?")) - (and (fboundp 'foo-y) (do-test-error () "foo-x got inherited?"))) - -(do-test ":accessor and :reader methods go away" - ((:classes foo) - (:functions foo-x foo-y) - (:setf-generic-functions foo-x foo-y)) - - (defclass foo () ((x :accessor foo-x) (y :reader foo-y))) - - (unless (and (fboundp 'foo-x) - (fboundp 'foo-y)) - (do-test-error t "accessors didn't even get generated?")) - - (defclass foo () (x y)) - - (flet ((methods (x) - (generic-function-methods (symbol-function 'foo-y)))) - - (and (methods 'foo-x) - (do-test-error () "~&reader method for foo-x not removed")) - (and (methods 'foo-y) - (do-test-error () "~&reader method for foo-y not removed")) - (and (methods (get-setf-function-name 'foo-y)) - (do-test-error () "~&writer method for foo-y not removed")) - t)) - - -(defclass test-class-1 () - ((x :initform nil :accessor test-class-1-x :initarg :x) - (y :initform nil :accessor test-class-1-y :initarg :y))) - -(do-test "Simple with-accessors test -- does not really exercise the walker." - ((:functions foo bar)) - - (defmethod foo ((obj test-class-1)) - (with-accessors ((x test-class-1-x) - (y test-class-1-y)) - obj - (list x y))) - - (defmethod bar ((obj test-class-1)) - (with-accessors ((x test-class-1-x) - (y test-class-1-y)) - obj - (setq x 1 - y 2))) - - (or (and (equal '(nil nil) (foo (make-instance 'test-class-1))) - (equal '(1 2) (foo (make-instance 'test-class-1 :x 1 :y 2)))) - (do-test-error () "FOO (the one that reads) failed")) - - (or (let ((foo (make-instance 'test-class-1))) - (bar foo) - (or (and (equal (slot-value foo 'x) 1) - (equal (slot-value foo 'y) 2)) - (do-test-error () "BAR (the one that writes) failed"))))) - -(do-test "Simple with-slots test -- does not really exercise the walker." - ((:functions foo bar)) - - (defmethod foo ((obj test-class-1)) - (with-slots (x y) - obj - (list x y))) - - (defmethod bar ((obj test-class-1)) - (with-slots ((obj-x x) - (obj-y y)) - obj - (setq obj-x 1 - obj-y 2))) - - (or (and (equal '(nil nil) (foo (make-instance 'test-class-1))) - (equal '(1 2) (foo (make-instance 'test-class-1 :x 1 :y 2)))) - (do-test-error () "FOO (the one that reads) failed")) - - (or (let ((foo (make-instance 'test-class-1))) - (bar foo) - (or (and (equal (slot-value foo 'x) 1) - (equal (slot-value foo 'y) 2)) - (do-test-error () "BAR (the one that writes) failed"))))) - - ;; -;;;;;; things that bug fixes prompted. - ;; - - -(do-test "with-slots inside of lexical closures" - ((:functions frog barg)) - ;; 6/20/86 - ;; The walker was confused about what (FUNCTION (LAMBDA ..)) meant. It - ;; didn't walk inside there. Its sort of surprising this didn't get - ;; caught sooner. - - (defun frog (fn foos) - (and foos (cons (funcall fn (car foos)) (frog fn (cdr foos))))) - - (defun barg () - (let ((the-test-class (make-instance 'test-class-1 :x 0 :y 3))) - (with-slots (x y) - the-test-class - (frog #'(lambda (foo) (incf x) (decf y)) - (make-list 3))))) - - (or (equal (barg) '(2 1 0)) - (do-test-error t "lost"))) - -(do-test "redefinition of default method has proper effect" - ((:functions foo)) - ;; 5/26/86 - ;; This was caused because the hair for trying to avoid making a - ;; new discriminating function didn't know that changing the default - ;; method was a reason to make a new discriminating function. Fixed - ;; by always making a new discriminating function when a method is - ;; added or removed. The template stuff should keep this from being - ;; expensive. - - (defmethod foo ((x standard-class)) 'standard-class) - (defmethod foo (x) 'default) - (defmethod foo (x) 'new-default) - - (or (eq (foo nil) 'new-default) - (do-test-error t "lost"))) - - - -(defvar *call-next-method-test-object* (make-instance 'standard-object)) - -(do-test "call-next-method passes original arguments" - ((:functions foo)) - ;; 2/4/88 - ;; The spec says that call-next-method must pass the original arguments - ;; to call-next-method when none are supplied. This tests that. - - (defmethod foo ((x t)) - (unless (eq x *call-next-method-test-object*) - (do-test-error t "got wrong value"))) - - (defmethod foo ((x standard-object)) - (setq x nil) - (call-next-method)) - - (foo *call-next-method-test-object*) - - ) - -(do-test "call-next-method closures pass original arguments - 1" - ((:functions foo)) - ;; 2/4/88 - ;; call-next-method must pass the original arguments even when it is - ;; returned as a lexical closure with indefinite extent - - (defmethod foo ((x t)) - (unless (eq x *call-next-method-test-object*) - (do-test-error t "got wrong value"))) - - (defmethod foo ((x standard-object)) - (setq x nil) - #'call-next-method) - - (funcall (foo *call-next-method-test-object*)) - - ) - -(do-test "call-next-method closures pass original arguments - 2" - ((:functions foo)) - ;; 2/4/88 - ;; call-next-method must pass the original arguments even when it is - ;; returned as a lexical closure with indefinite extent - - (defmethod foo ((x t)) - (unless (eq x *call-next-method-test-object*) - (do-test-error t "got wrong value"))) - - (defmethod foo ((x standard-object)) - #'(lambda () - (setq x nil) - (call-next-method))) - - (funcall (foo *call-next-method-test-object*)) - - ) - -(do-test "call-next-method passes supplied arguments" - ((:functions foo)) - ;; 2/4/88 - ;; The spec says that call-next-method must pass the original arguments - ;; to call-next-method when none are supplied. This tests that. - - (defmethod foo ((x t)) - (unless (eq x *call-next-method-test-object*) - (do-test-error t "got wrong value"))) - - (defmethod foo ((x standard-object)) - (call-next-method *call-next-method-test-object*)) - - (foo (make-instance 'standard-object)) - - ) - -(do-test "call-next-method closures pass supplied arguments - 1" - ((:functions foo)) - ;; 2/4/88 - ;; call-next-method must pass the original arguments even when it is - ;; returned as a lexical closure with indefinite extent - - (defmethod foo ((x t)) - (unless (eq x *call-next-method-test-object*) - (do-test-error t "got wrong value"))) - - (defmethod foo ((x standard-object)) - #'call-next-method) - - (funcall (foo (make-instance 'standard-object)) *call-next-method-test-object*) - - ) - -(do-test "call-next-method closures pass supplied arguments - 2" - ((:functions foo)) - ;; 2/4/88 - ;; call-next-method must pass the original arguments even when it is - ;; returned as a lexical closure with indefinite extent - - (defmethod foo ((x t)) - (unless (eq x *call-next-method-test-object*) - (do-test-error t "got wrong value"))) - - (defmethod foo ((x standard-object)) - #'(lambda (x) - (call-next-method x))) - - (funcall (foo (make-instance 'standard-object)) - *call-next-method-test-object*)) - - -(do-test "call-next-method inside of default value form of &optional" - ((:functions foo)) - ;; 5/3/88 - ;; call-next-method must work inside the default value forms of the - ;; method's &mumble arguments. - - (defmethod foo1 ((x t) &optional y) - (declare (ignore y)) - *call-next-method-test-object*) - - (defmethod foo1 ((x standard-object) &optional (y (call-next-method))) - (list x y)) - - (let ((object (make-instance 'standard-object))) - (unless (equal (foo1 object) (list object *call-next-method-test-object*)) - (do-test-error t "Got wrong value")))) - -(do-test "specifying :type when superclass doesn't" - ((:classes foo bar)) - ;; 3/23/88 - ;; if a suclass specifies the :type slot option for a slot for which no - ;; superclass specifies a type then the inheritance rule is just to take - ;; the type specified by the subclass - - (defclass foo () - ((x))) - - (defclass bar (foo) - ((x :type number)))) - - -(do-test "Leaky next methods" - ((:functions foo bar)) - ;; 6/23/88 - ;; Since I use special variables to communicate the next methods info, - ;; there can be bugs which cause them to leak to the wrong method. - - (defmethod foo ((x standard-class)) - (bar x)) - - (defmethod foo ((x class)) - (call-next-method)) - - (defmethod foo ((x t)) - t) - - (defmethod bar ((x standard-class)) - (next-method-p)) - - (unless (foo (find-class 't)) - (do-test-error nil "Method leaked."))) - - -;;; -;;; some simple tests for initialization protocols -;;; 8/5/88 -;;; -(proclaim '(special x-initform-fired y-initform-fired z-initform-fired)) - -(defclass initialization-test-1 () - ((x :initform (setq x-initform-fired 'x-initform)) - (y :initform (setq y-initform-fired 'y-initform)) - (z :initform (setq z-initform-fired 'z-initform)))) - -(defclass initialization-test-2 () - ((x :initform (setq x-initform-fired 'x-initform) :initarg :x) - (y :initform (setq y-initform-fired 'y-initform) :initarg :y) - (z :initform (setq z-initform-fired 'z-initform) :initarg :z))) - -(defclass initialization-test-3 () - ((x :initform (setq x-initform-fired 'x-initform) :initarg :x) - (y :initform (setq y-initform-fired 'y-initform) :initarg :y) - (z :initform (setq z-initform-fired 'z-initform) :initarg :z)) - (:default-initargs :x 'x-default)) - -(defclass initalization-test-4 (initialization-test-3) - () - (:default-initargs :z 'z-default)) - -(defclass initialization-test-5 (initialization-test-4) - () - (:default-initargs :x 'x-default-from-5)) - -(do-test "shared-initialize with T argument and no initargs" - () - - (let (x-initform-fired y-initform-fired z-initform-fired) - (let* ((class (find-class 'initialization-test-1)) - (instance (allocate-instance class))) - - (shared-initialize instance 't) - - (unless x-initform-fired (do-test-error nil "x initform not evaluated")) - (unless y-initform-fired (do-test-error nil "y initform not evaluated")) - (unless z-initform-fired (do-test-error nil "z initform not evaluated")) - - (unless (eq (slot-value instance 'x) 'x-initform) - (do-test-error nil "Value of X doesn't match initform")) - (unless (eq (slot-value instance 'y) 'y-initform) - (do-test-error nil "Value of X doesn't match initform")) - (unless (eq (slot-value instance 'z) 'z-initform) - (do-test-error nil "Value of X doesn't match initform")) - - ))) - -(do-test "shared-initialize with T argument and initargs" - () - - (let (x-initform-fired y-initform-fired z-initform-fired) - (let* ((class (find-class 'initialization-test-2)) - (instance (allocate-instance class))) - - (shared-initialize instance 't :y 'y-initarg) - - (unless x-initform-fired - (do-test-error nil "x initform not evaluated")) - (unless (not y-initform-fired) - (do-test-error nil "y initform was evaluated")) - (unless z-initform-fired - (do-test-error nil "z initform not evaluated")) - - (unless (eq (slot-value instance 'x) 'x-initform) - (do-test-error nil "Value of X doesn't match initform")) - (unless (eq (slot-value instance 'y) 'y-initarg) - (do-test-error nil "Value of X doesn't match initform")) - (unless (eq (slot-value instance 'z) 'z-initform) - (do-test-error nil "Value of X doesn't match initform")) - - ))) - -(do-test "initialization arguments rules test" - ((:classes foo bar)) - - (defclass foo () - ((x :initarg a))) - - (defclass bar (foo) - ((x :initarg b)) - (:default-initargs a 1 b 2)) - - (unless (and (equal (default-initargs (find-class 'bar) '()) - '(b 2 a 1)) - (equal (default-initargs (find-class 'bar) '(a 3)) - '(a 3 b 2)) - (equal (default-initargs (find-class 'bar) '(b 4)) - '(b 4 a 1)) - (equal (default-initargs (find-class 'bar) '(a 1 a 2)) - '(a 1 a 2 b 2))) - (do-test-error nil "default-initargs got wrong value")) - - (unless (and (eq (slot-value (make-instance 'bar) 'x) 1) - (eq (slot-value (make-instance 'bar 'a 3) 'x) 3) - (eq (slot-value (make-instance 'bar 'b 4) 'x) 4) - (eq (slot-value (make-instance 'bar 'a 1 'a 2) 'x) 1)) - (do-test-error nil "initialization in make-instance failed")) - - ) - - -#| testing a pair of lists for equality bogus, '(a b c) <> '(b c a) - -(do-test "more tests for initialization arguments rules" - ((:classes foo fie bar baz)) - - (defclass foo () - ((a :initform 'initform-foo-a) - (b :initarg :foo-b) - (c :initform 'initform-foo-c) - (d :initarg :foo-d)) - (:default-initargs :foo-b 'initarg-foo-b - :foo-d 'initarg-foo-d)) - (defclass fie (foo) - ((a :initform 'initform-fie-a) - (b :initarg :fie-b) - (c :initform 'initform-fie-c :allocation :class) - (d :initarg :fie-d :allocation :class)) - (:default-initargs :fie-b 'initarg-fie-b - :fie-d 'initarg-fie-d)) - (defclass bar (foo) - ((a :initform 'initform-bar-a) - (b :initarg :bar-b) - (c :initform 'initform-bar-c) - (d :initarg :bar-d)) - (:default-initargs :bar-b 'initarg-bar-b - :bar-d 'initarg-bar-d)) - (defclass baz (fie bar) - ((a :initform 'initform-baz-a) - (b :initarg :baz-b) - (c :initform 'initform-baz-c) - (d :initarg :baz-d)) - (:default-initargs :baz-b 'initarg-baz-b - :baz-d 'initarg-baz-d)) - - (unless (and (equal (default-initargs (find-class 'foo) ()) - '(:foo-d initarg-foo-d - :foo-b initarg-foo-b)) - (equal (default-initargs (find-class 'fie) ()) - '(:fie-b initarg-fie-b - :fie-d initarg-fie-d - :foo-b initarg-foo-b - :foo-d initarg-foo-d)) - (equal (default-initargs (find-class 'bar) ()) - '(:bar-b initarg-bar-b - :bar-d initarg-bar-d - :foo-b initarg-foo-b - :foo-d initarg-foo-d)) - (equal (default-initargs (find-class 'baz) ()) - '(:baz-b initarg-baz-b - :baz-d initarg-baz-d - :fie-b initarg-fie-b - :fie-d initarg-fie-d - :bar-b initarg-bar-b - :bar-d initarg-bar-d - :foo-b initarg-foo-b - :foo-d initarg-foo-d))) - (do-test-error nil "default-initargs got wrong value")) - ) -|# -(do-test "initialization protocols" - ((:classes foo)) - - (let ((initform-for-x 'initform-x) - (initform-for-y 'initform-y) - (initform-for-z 'initform-z) - (default-initarg-for-x 'default-initarg-x) - (initarg-supplied-for-z 'initarg-z) - instance-of-foo) - - (defclass foo () - ((x :initform initform-for-x :initarg :x) - (y :initform initform-for-y :initarg :y) - (z :initform initform-for-z :initarg :z)) - (:default-initargs :x default-initarg-for-x)) - - (setq instance-of-foo (make-instance 'foo :z initarg-supplied-for-z)) - - (unless (and (eq (slot-value instance-of-foo 'x) - default-initarg-for-x) - (eq (slot-value instance-of-foo 'y) - initform-for-y) - (eq (slot-value instance-of-foo 'z) - initarg-supplied-for-z)) - (do-test-error nil "initialization failed")) - - (setq instance-of-foo - (reinitialize-instance (allocate-instance (find-class 'foo)) - :z initarg-supplied-for-z)) - - (unless (and (not (slot-boundp instance-of-foo 'x)) - (not (slot-boundp instance-of-foo 'y)) - (eq (slot-value instance-of-foo 'z) - initarg-supplied-for-z)) - (do-test-error nil "initialization failed"))) - - ) - -(do-test "update-instance-for-different-class" - ((:classes foo bar)) - - (let ((initform-for-x 'initform-x) - (initform-for-y 'initform-y) - (default-initarg-for-x 'default-initarg-x) - (initform-for-z 'initform-z) - (initform-for-u 'initform-u) - (initform-for-v 'initform-v) - (default-initarg-for-z 'default-intiarg-z) - (initarg-supplied-for-v 'initarg-v) - instance-of-foo - instance-of-bar) - - (defclass foo () - ((x :initform initform-for-x :initarg :x) - (y :initform initform-for-y :initarg :y)) - (:default-initargs :x default-initarg-for-x)) - - (defclass bar () - ((x :initform initform-for-x :initarg :x) - (y :initform initform-for-y :initarg :y) - (z :initform initform-for-z :initarg :z) - (u :initform initform-for-u :initarg :u) - (v :initform initform-for-v :initarg :v)) - (:default-initargs :z default-initarg-for-z)) - - (setq instance-of-foo (make-instance 'foo)) - (setq instance-of-bar (allocate-instance (find-class 'bar))) - (update-instance-for-different-class instance-of-foo instance-of-bar - :v initarg-supplied-for-v) - (unless (and (not (slot-boundp instance-of-bar 'x)) - (not (slot-boundp instance-of-bar 'y)) - (eq (slot-value instance-of-bar 'z) initform-for-z) - (eq (slot-value instance-of-bar 'u) initform-for-u) - (eq (slot-value instance-of-bar 'v) initarg-supplied-for-v)) - (do-test-error nil "initialization failed")))) - -(do-test "only needed forms should be evaluated in initializing instances" - ((:classes foo)) - - (defclass foo () - ((x :initform (do-test-error nil "x initform was evaluated") - :initarg :x) - (y :initform (do-test-error nil "y initform was evaluated") - :initarg :y) - (z :initform (do-test-error nil "z initform was evaluated") - :initarg :z)) - (:default-initargs :y 1 - :z (do-test-error nil "z default initarg was evaluated"))) - - (make-instance 'foo :x 1 :z 1)) - - -;;; -;;; We need to put these class defenitions in top level. -;;; - -(defclass class-for-testing-change-class-1 () - ((x :initform 'x :accessor class-1-x) - (y :initform 'y :accessor class-1-y))) - -(defclass class-for-testing-change-class-2 () - ((a :initform 'a :accessor class-2-a) - (b :initform 'b :accessor class-2-b))) - -(do-test "update-instance-for-different-class/change-class" - () - - (defmethod update-instance-for-different-class - ((previous class-for-testing-change-class-1) - (current class-for-testing-change-class-2) - &rest initargs) - (declare (ignore initargs)) - (setf (class-2-a current) (class-1-x previous)) - (setf (class-2-b current) (class-1-y previous))) - - (let ((f1 (make-instance 'class-for-testing-change-class-1)) - (f2 (make-instance 'class-for-testing-change-class-1))) - (change-class f1 (find-class 'class-for-testing-change-class-2)) - (unless (and (eq (class-2-a f1) (class-1-x f2)) - (eq (class-2-b f1) (class-1-y f2))) - (do-test-error nil "change class failed"))) - ) - -(cleanup-do-test '((:classes class-for-testing-redefined-class) - (:functions test-x test-y test-a) - (:setf-generic-functions class-x class-y))) - -(let (foo) - (defclass class-for-testing-redefined-class () - ((x :initform 'x :accessor test-x) - (y :initform 'y :accessor test-y))) - - (setq foo (make-instance 'class-for-testing-redefined-class)) - - (defclass class-for-testing-redefined-class () - ((a :initform 0 :accessor test-a) - (y :initform 1 :accessor test-y))) - - (do-test "update-instance-for-redefined-class/make-instances-obsolete(1)" - () - (unless (and (eq (test-a foo) 0) - (eq (test-y foo) 'y)) - (do-test-error nil "default behavior failed")))) - -(cleanup-do-test '((:classes x-y-pos) - (:functions pos-x pos-y pos-rho pos-theta) - (:setf-generic-functions pos-x pos-y pos-rho pos-theta))) - -(let (old-pos new-pos) - - (defclass x-y-pos () - ((x :initform 3 :accessor pos-x) - (y :initform 4 :accessor pos-y))) - - (setq old-pos (make-instance 'x-y-pos)) - - (defclass x-y-pos () - ((rho :initform 0 :accessor pos-rho) - (theta :initform 0 :accessor pos-theta))) - - (do-test "update-instance-for-redefined-class/make-instances-obsolete(2)" - () - - (defmethod update-instance-for-redefined-class :before - ((pos x-y-pos) added deleted plist &key) - ;; Transform the x-y coordinates to polar coordinates - ;; and store into the new slots - (let ((x (getf plist 'x)) - (y (getf plist 'y))) - (setf (pos-rho pos) (sqrt (+ (* x x) (* y y))) - (pos-theta pos) (atan y x)))) - - (defmethod pos-x ((pos x-y-pos)) - (with-slots (rho theta) pos (* rho (cos theta)))) - - (defmethod (setf pos-x) (new-x (pos x-y-pos)) - (with-slots (rho theta) pos - (let ((y (pos-y pos))) - (setq rho (sqrt (+ (* new-x new-x) (* y y))) - theta (atan y new-x)) - new-x))) - - (defmethod pos-y ((pos x-y-pos)) - (with-slots (rho theta) pos (* rho (sin theta)))) - - (defmethod (setf pos-y) (new-y (pos x-y-pos)) - (with-slots (rho theta) - (let ((x (pos-x pos))) - (setq rho (sqrt (+ (* x x) (* new-y new-y))) - theta (atan new-y x)) - new-y))) - - (unless (and (equalp 5 (pos-rho old-pos)) - (equalp (* 5 (cos (atan 4 3))) (pos-x old-pos)) - (equalp (* 5 (sin (atan 4 3))) (pos-y old-pos))) - (do-test-error nil "specialized behaivior failed")) - )) - -(cleanup-do-test '((:classes class-for-testing-redefined-class - test-obsolete-class) - (:functions test-x test-y test-a) - (:setf-generic-functions class-x class-y))) - -(defclass test-obsolete-class (standard-class) ()) - -(defmethod check-super-metaclass-compatibility ((x test-obsolete-class) - (y standard-class)) - 't) - -(let ((foo 'nil) - bar) - (defmethod make-instances-obsolete ((x test-obsolete-class)) - (setq foo 'called) - (call-next-method)) - - (defclass class-for-testing-redefined-class () - ((x :initform 'x :accessor test-x) - (y :initform 'y :accessor test-y)) - (:metaclass test-obsolete-class)) - - (setq bar (make-instance 'class-for-testing-redefined-class)) - - (defclass class-for-testing-redefined-class () - ((a :initform 0 :accessor test-a) - (y :initform 1 :accessor test-y))) - - (do-test "update-instance-for-redefined-class/make-instances-obsolete(3)" - () - (unless (and (eq (test-a bar) 0) - (eq (test-y bar) '1) - (eq foo 'called)) - (do-test-error nil "imcompatible class change failed")))) - -(cleanup-do-test '((:classes class-for-testing-redefined-class) - (:functions test-x test-y test-a) - (:setf-generic-functions class-x class-y))) - -(let (foo) - (defclass class-for-testing-redefined-class () - ((x :initform 'x :accessor test-x) - (y :initform 'y :accessor test-y))) - - (setq foo (make-instance 'class-for-testing-redefined-class)) - - (make-instances-obsolete 'class-for-testing-redefined-class) - - (do-test "update-instance-for-redefined-class/make-instances-obsolete(4)" - () - (unless (and (eq (test-x foo) 'x) - (eq (test-y foo) 'y)) - (do-test-error nil "call make-instances-obsolete by hand failed")))) - -(do-test "slot-mumble functions" - ((:variables foo1 bar1) - (:classes foo bar)) - - (defclass foo-sm () - ((x :initform 'x :allocation :class) - (y :initform 'y) - (z :allocation :class) - (u))) - - (defclass bar-sm () - ((x :initform 'x :allocation :class) - (y :initform 'y) - (z :allocation :class) - (u)) - (:metaclass funcallable-standard-class)) - - (defmethod slot-missing ((class standard-class) - (instance foo-sm) - slot-name operation &optional new-value) - (list* class instance slot-name operation new-value)) - - (defmethod slot-missing ((class standard-class) - (instance bar-sm) - slot-name operation &optional new-value) - (list* class instance slot-name operation new-value)) - - (defmethod slot-unbound ((class standard-class) - (instance foo-sm) - slot-name) - (list class instance slot-name)) - - (defmethod slot-unbound ((class funcallable-standard-class) - (instance bar-sm) - slot-name) - (list class instance slot-name)) - - (setq foo1 (make-instance 'foo-sm)) - (setq bar1 (make-instance 'bar-sm)) - - (flet ((test1 (instance) - (and (eq (slot-value instance 'x) 'x) - (eq (slot-value instance 'y) 'y) - (equal (slot-value instance 'z) - (list (class-of instance) instance 'z)) - (equal (slot-value instance 'u) - (list (class-of instance) instance 'u)) - (slot-boundp instance 'x) - (slot-boundp instance 'y) - (not (slot-boundp instance 'z)) - (not (slot-boundp instance 'u)))) - (test2 (instance) - (and (not (slot-boundp instance 'x)) - (not (slot-boundp instance 'y)) - (slot-boundp instance 'z) - (slot-boundp instance 'u) - (equal (slot-value instance 'x) - (list (class-of instance) instance 'x)) - (equal (slot-value instance 'y) - (list (class-of instance) instance 'y)) - (eq (slot-value instance 'z) 'z) - (eq (slot-value instance 'u) 'u))) - (test3 (instance) - (and (slot-exists-p instance 'x) - (slot-exists-p instance 'y))) - (test4 (instance) - (and (equal (slot-value instance 'a) - (list (class-of instance) - instance - 'a - 'slot-value)) - (equal (setf (slot-value instance 'a) 'b) - (list* (class-of instance) - instance - 'a - 'setf - 'b)) - (equal (slot-boundp instance 'a) - (list (class-of instance) - instance - 'a - 'slot-boundp)) - - (equal (slot-makunbound instance 'a) - (list (class-of instance) - instance - 'a - 'slot-makunbound))))) - - (unless (and (test1 foo1) - (test1 bar1)) - (do-test-error nil "slot functions test1 failed")) - - (slot-makunbound foo1 'x) - (slot-makunbound foo1 'y) - (setf (slot-value foo1 'z) 'z) - (setf (slot-value foo1 'u) 'u) - (slot-makunbound bar1 'x) - (slot-makunbound bar1 'y) - (setf (slot-value bar1 'z) 'z) - (setf (slot-value bar1 'u) 'u) - - (unless (and (test2 foo1) - (test2 bar1)) - (do-test-error nil "slot functions test2 failed")) - - (unless (and (test3 foo1) - (test3 bar1)) - (do-test-error nil "slot functions test3 failed")) - - (unless (and (test4 foo1) - (test4 bar1)) - (do-test-error nil "slot function test4 failed")) - )) - - -(cleanup-do-test '((:classes foo-sm bar-sm) - (:functions foo-x foo-y bar-x bar-y))) - -(defclass foo () - ((x :initform 'x :allocation :class :reader foo-x) - (y :initform 'y :reader foo-y))) - -(defclass bar () - ((x :allocation :class :reader bar-x) - (y :reader bar-y))) - -(do-test "slot-value/slot-unbound for pv optimization case and :reader method" - ((:functions get-foo-x get-foo-y get-x-1 get-y-1 - get-bar-x get-bar-y get-x-2 get-y-2) - (:variables foo1 bar1)) - - (defmethod get-foo-x ((foo1 foo)) - (slot-value foo1 'x)) - (defmethod get-foo-y ((foo1 foo)) - (slot-value foo1 'y)) - - (defun get-x-1 (foo1) - (slot-value foo1 'x)) - (defun get-y-1 (foo1) - (slot-value foo1 'y)) - - (defmethod slot-unbound ((class standard-class) (instance foo) slot-name) - (list class instance slot-name)) - - (setq foo1 (make-instance 'foo)) - - (unless (and (eq (get-foo-x foo1) 'x) - (eq (get-foo-y foo1) 'y) - (eq (get-x-1 foo1) 'x) - (eq (get-y-1 foo1) 'y) - (eq (foo-x foo1) 'x) - (eq (foo-y foo1) 'y)) - (do-test-error nil "slot-value failed")) - - (unless (and (eq (slot-makunbound foo1 'x) foo1) - (eq (slot-makunbound foo1 'y) foo1)) - (do-test-error nil "slot-makunbound returns wrong value")) - - (unless (and (equal (get-foo-x foo1) - (list (find-class 'foo) foo1 'x)) - (equal (get-foo-y foo1) - (list (find-class 'foo) foo1 'y)) - (equal (get-x-1 foo1) - (list (find-class 'foo) foo1 'x)) - (equal (get-y-1 foo1) - (list (find-class 'foo) foo1 'y)) - (equal (foo-x foo1) - (list (find-class 'foo) foo1 'x)) - (equal (foo-y foo1) - (list (find-class 'foo) foo1 'y))) - (do-test-error nil "slot-value/slot-unbound failed")) - - (defmethod get-bar-x ((bar1 bar)) - (slot-value bar1 'x)) - (defmethod get-bar-y ((bar1 bar)) - (slot-value bar1 'y)) - - (defun get-x-2 (bar1) - (slot-value bar1 'x)) - (defun get-y-2 (bar1) - (slot-value bar1 'y)) - - (defmethod slot-unbound ((class standard-class) (instance bar) slot-name) - (list class instance slot-name)) - - (setq bar1 (make-instance 'bar)) - - (unless (and (equal (get-bar-x bar1) - (list (find-class 'bar) bar1 'x)) - (equal (get-bar-y bar1) - (list (find-class 'bar) bar1 'y)) - (equal (get-x-2 bar1) - (list (find-class 'bar) bar1 'x)) - (equal (get-y-2 bar1) - (list (find-class 'bar) bar1 'y)) - (equal (bar-x bar1) - (list (find-class 'bar) bar1 'x)) - (equal (bar-y bar1) - (list (find-class 'bar) bar1 'y))) - (do-test-error nil "slot-value/slot-unbound failed"))) - - -(do-test "defmethod/call-next-method/&aux variable" - ((:variables foo1 bar1) - (:classes foo bar) - (:functions test1 test2 test3)) - - (defclass foo () - ((x :initform 0) - (y :initform 1))) - - (defclass bar (foo) ()) - - (defmethod test1 ((foo1 foo) &aux aux-arg) - (setq aux-arg (list foo1))) - - (defmethod test1 ((bar1 bar) &aux aux-arg) - (setq aux-arg (list (list bar1))) - (call-next-method) - aux-arg) - - (setq foo1 (make-instance 'foo)) - (setq bar1 (make-instance 'bar)) - (unless (and (equal (test1 foo1) (list foo1)) - (equal (test1 bar1) (list (list bar1)))) - (do-test-error nil "defmethod with call-next-method and &aux failed"))) - -;;; -;;; defconstructor tests -;;; -(format t - "~%Testing defconstructor [methods, default/initform, slot-filling]") - -(defun check-slots (object &rest names-and-values) - (doplist (name value) names-and-values - (unless (if (eq value :unbound) - (not (slot-boundp object name)) - (and (slot-boundp object name) - (eq (slot-value object name) value))) - (return-from check-slots nil))) - 't) - -;;; -;;; [methods, default/initform, slot-filling] -;;; methods: [nil, :after, t] -;;; default/initform: [nil, :constant, t] -;;; slot-filling: [:instance, :class] -;;; -;;; supplied: [nil, :constant, t] - - -(cleanup-do-test '((:classes foo1 foo2 foo3 foo4 - foo5 foo6 foo7 foo8 - foo9 foo10 foo11 foo12) - (:variables *a-initform* *b-initform* *c-initform* - *a-default* *b-default* *c-default* - *a-supplied* *b-supplied* *c-supplied*) - (:functions foo1-test1 foo1-test2 foo1-test3 - foo2-test1 foo2-test2 foo2-test3 - foo3-test1 foo3-test2 foo3-test3 - foo4-test1 foo4-test2 foo4-test3 - foo5-test1 foo5-test2 foo5-test3 - foo6-test1 foo6-test2 foo6-test3 - foo7-test1 foo7-test2 foo7-test3 - foo8-test1 foo8-test2 foo8-test3 - foo9-test1 foo9-test2 foo9-test3 - foo10-test1 foo10-test2 foo10-test3 - foo11-test1 foo11-test2 foo11-test3 - foo12-test1 foo12-test2 foo12-test3))) - -(defvar *a-initform* 'a-initform) -(defvar *b-initform* 'b-initform) -(defvar *c-initform* 'c-initform) -(defvar *a-default* 'a-default) -(defvar *b-default* 'b-default) -(defvar *c-default* 'c-default) -(defvar *a-supplied* 'a-supplied) -(defvar *b-supplied* 'b-supplied) -(defvar *c-supplied* 'c-supplied) - -;;; -;;; foo1 -;;; [methods, default/initform, slot-filing] -;;; (t, t, :class) - -(defclass foo1 () - ((a :initarg :a :initform *a-initform*) - (b :initarg :b :initform *b-initform*) - (c :initarg :c :allocation :class :initform *c-initform*)) - (:default-initargs :b *b-default* :c *c-default*)) - -(defmethod *initialize-instance :before ((instance foo1) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (t, t, :class) (1)" - ((:functions foo1-test1 foo1-test2 foo1-test3)) - - (defconstructor foo1-test1 foo1 ()) - (defconstructor foo1-test2 foo1 () :a 1 :b 2 :c 3) - (defconstructor foo1-test3 foo1 (a b c) :a a :b b :c c) - - (dotimes (i 2) ;Do it twice to be sure that - ;the constructor works more - ;than just the first time. - (unless (check-slots (foo1-test1) - 'a *a-initform* - 'b *b-default* - 'c *c-default*) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo1-test2) 'a '1 'b '2 'c '3) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo1-test3 *a-supplied* *b-supplied* *c-supplied*) - 'a *a-supplied* - 'b *b-supplied* - 'c *c-supplied*) - (do-test-error nil "non constant initargs failed (~D time)" i)))) -;;; -;;; foo2 -;;; [methods, default/initform, slot-filling] -;;; (t, t, :class) - -(defclass foo2 () - ((a :initform *a-initform* :initarg :a) - (b :initform *b-initform* :initarg :b) - (c :allocation :class :initform *c-initform* :initarg :c)) - (:default-initargs :b *b-default*)) - -(defmethod *initialize-instance :before ((instance foo2) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (t, t, :class) (2)" - ((:functions foo2-test1 foo2-test2 foo2-test3)) - - (defconstructor foo2-test1 foo2 ()) - (defconstructor foo2-test2 foo2 () :a 1 :b 2 :c 3) - (defconstructor foo2-test3 foo2 (a b c) :a a - :b b - :c c) - - (dotimes (i 2) - (unless (check-slots (foo2-test1) 'a *a-initform* - 'b *b-default* - 'c *c-initform*) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo2-test2) 'a '1 'b '2 'c '3) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo2-test3 *a-supplied* *b-supplied* *c-supplied*) - 'a *a-supplied* - 'b *b-supplied* - 'c *c-supplied*) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; foo3 -;;; [methods, default/initform, slot-filling] -;;; (t, t, :instance) - -(defclass foo3 () - ((a :initform *a-initform* :initarg :a) - (b :initform *b-initform* :initarg :b) - (c :allocation :class :initform *c-initform*)) - (:default-initargs :b *b-default*)) - -(defmethod *initialize-instance :before ((instance foo3) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (t, t, :instance) (1)" - ((:functions foo3-test1 foo3-test2 foo3-test3)) - - (defconstructor foo3-test1 foo3 ()) - (defconstructor foo3-test2 foo3 () :a 1 :b 2) - (defconstructor foo3-test3 foo3 (a b) :a a :b b) - - - (dotimes (i 2) - (unless (check-slots (foo3-test1) 'a *a-initform* - 'b *b-default* - 'c *c-initform*) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo3-test2) 'a '1 'b '2 'c *c-initform*) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo3-test3 *a-supplied* *b-supplied*) - 'a *a-supplied* - 'b *b-supplied* - 'c *c-initform*) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; foo4 -;;; [methods, default/initform, slot-filling] -;;; (t, t, :instance) - -(defclass foo4 () - ((a :initform *a-initform* :initarg :a) - (b :initform *b-initform* :initarg :b) - (c :allocation :class)) - (:default-initargs :b *b-default*)) - -(defmethod *initialize-instance :before ((instance foo4) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (t, t, :instance) (2)" - ((:functions foo4-test1 foo4-test2 foo4-test3)) - - (defconstructor foo4-test1 foo4 ()) - (defconstructor foo4-test2 foo4 () :a 1 :b 2) - (defconstructor foo4-test3 foo4 (a b) :a a :b b) - - (dotimes (i 2) - (unless (check-slots (foo4-test1) 'a *a-initform* - 'b *b-default* - 'c :unbound) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo4-test2) 'a '1 'b '2 'c :unbound) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo4-test3 *a-supplied* *b-supplied*) - 'a *a-supplied* - 'b *b-supplied* - 'c :unbound) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; foo5 -;;; [methods, default/initform, slot-filling] -;;; (:after, t, :class) - -(defclass foo5 () - ((a :initarg :a :initform *a-initform*) - (b :initarg :b :initform *b-initform*) - (c :initarg :c :allocation :class :initform *c-initform*)) - (:default-initargs :b *b-default* :c *c-default*)) - -(defmethod *initialize-instance :after ((instance foo5) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (:after, t, :class) (1)" - ((:functions foo5-test1 foo5-test2 foo5-test3)) - - (defconstructor foo5-test1 foo5 ()) - (defconstructor foo5-test2 foo5 () :a 1 :b 2 :c 3) - (defconstructor foo5-test3 foo5 (a b c) :a a - :b b - :c c) - - (dotimes (i 2) - (unless (check-slots (foo5-test1) 'a *a-initform* - 'b *b-default* - 'c *c-default*) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo5-test2) 'a '1 'b '2 'c '3) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo5-test3 *a-supplied* *b-supplied* *c-supplied*) - 'a *a-supplied* - 'b *b-supplied* - 'c *c-supplied*) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; foo6 -;;; [methods, default/initform, slot-filling] -;;; (:after, t, :class) - -(defclass foo6 () - ((a :initform *a-initform* :initarg :a) - (b :initform *b-initform* :initarg :b) - (c :allocation :class :initform *c-initform* :initarg :c)) - (:default-initargs :b *b-default*)) - -(defmethod *initialize-instance :after ((instance foo6) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (:after, t, :class) (2)" - ((:functions foo6-test1 foo6-test2 foo6-test3)) - - (defconstructor foo6-test1 foo6 ()) - (defconstructor foo6-test2 foo6 () :a 1 :b 2 :c 3) - (defconstructor foo6-test3 foo6 (a b c) :a a - :b b - :c c) - - (dotimes (i 2) - (unless (check-slots (foo6-test1) 'a *a-initform* - 'b *b-default* - 'c *c-initform*) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo6-test2) 'a '1 'b '2 'c '3) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo6-test3 *a-supplied* *b-supplied* *c-supplied*) - 'a *a-supplied* - 'b *b-supplied* - 'c *c-supplied*) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; foo7 -;;; [methods, default/initform, slot-filling] -;;; (:after, t, :instance) - -(defclass foo7 () - ((a :initform *a-initform* :initarg :a) - (b :initform *b-initform* :initarg :b) - (c :allocation :class :initform *c-initform*)) - (:default-initargs :b *b-default*)) - -(defmethod *initialize-instance :after ((instance foo7) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (:after, t, :instance) (1)" - ((:functions foo7-test1 foo7-test2 foo7-test3)) - - (defconstructor foo7-test1 foo7 ()) - (defconstructor foo7-test2 foo7 () :a 1 :b 2) - (defconstructor foo7-test3 foo7 (a b) :a a :b b) - - (dotimes (i 2) - (unless (check-slots (foo7-test1) 'a *a-initform* - 'b *b-default* - 'c *c-initform*) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo7-test2) 'a '1 'b '2 'c *c-initform*) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo7-test3 *a-supplied* *b-supplied*) - 'a *a-supplied* - 'b *b-supplied* - 'c *c-initform*) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; foo8 -;;; [methods, default/initform, slot-filling] -;;; (:after, t, :instance) - -(defclass foo8 () - ((a :initform *a-initform* :initarg :a) - (b :initform *b-initform* :initarg :b) - (c :allocation :class)) - (:default-initargs :b *b-default*)) - -(defmethod *initialize-instance :after ((instance foo8) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (:after, t, :instance) (2)" - ((:functions foo8-test1 foo8-test2 foo8-test3)) - - (defconstructor foo8-test1 foo8 ()) - (defconstructor foo8-test2 foo8 () :a 1 :b 2) - (defconstructor foo8-test3 foo8 (a b) :a a :b b) - - (dotimes (i 2) - (unless (check-slots (foo8-test1) 'a *a-initform* - 'b *b-default* - 'c :unbound) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo8-test2) 'a '1 'b '2 'c :unbound) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo8-test3 *a-supplied* *b-supplied*) - 'a *a-supplied* - 'b *b-supplied* - 'c :unbound) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; foo9 -;;; [methods, default/initform, slot-filling] -;;; (nil, t, :class) - -(defclass foo9 () - ((a :initarg :a :initform *a-initform*) - (b :initarg :b :initform *b-initform*) - (c :initarg :c :allocation :class :initform *c-initform*)) - (:default-initargs :b *b-default* :c *c-default*)) - -(do-test "defconstructor (nil, t, :class) (1)" - ((:functions foo9-test1 foo9-test2 foo9-test3)) - - (defconstructor foo9-test1 foo9 ()) - (defconstructor foo9-test2 foo9 () :a 1 :b 2 :c 3) - (defconstructor foo9-test3 foo9 (a b c) :a a - :b b - :c c) - - (dotimes (i 2) - (unless (check-slots (foo9-test1) 'a *a-initform* - 'b *b-default* - 'c *c-default*) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo9-test2) 'a '1 'b '2 'c '3) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo9-test3 *a-supplied* *b-supplied* *c-supplied*) - 'a *a-supplied* - 'b *b-supplied* - 'c *c-supplied*) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; foo10 -;;; [methods, default/initform, slot-filling] -;;; (nil, t, :class) - -(defclass foo10 () - ((a :initform *a-initform* :initarg :a) - (b :initform *b-initform* :initarg :b) - (c :allocation :class :initform *c-initform* :initarg :c)) - (:default-initargs :b *b-default*)) - -(do-test "defconstructor (nil, t, :class) (2)" - ((:functions foo10-test1 foo10-test2 foo10-test3)) - - (defconstructor foo10-test1 foo10 ()) - (defconstructor foo10-test2 foo10 () :a 1 :b 2 :c 3) - (defconstructor foo10-test3 foo10 (a b c) :a a - :b b - :c c) - (dotimes (i 2) - (unless (check-slots (foo10-test1) 'a *a-initform* - 'b *b-default* - 'c *c-initform*) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo10-test2) 'a '1 'b '2 'c '3) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo10-test3 *a-supplied* *b-supplied* *c-supplied*) - 'a *a-supplied* - 'b *b-supplied* - 'c *c-supplied*) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; foo11 -;;; [methods, default/initform, slot-filling] -;;; (nil, t, :instance) - -(defclass foo11 () - ((a :initform *a-initform* :initarg :a) - (b :initform *b-initform* :initarg :b) - (c :allocation :class :initform *c-initform*)) - (:default-initargs :b *b-default*)) - -(do-test "defconstructor (nil, t, :instance) (1)" - ((:functions foo11-test1 foo11-test2 foo11-test3)) - - (defconstructor foo11-test1 foo11 ()) - (defconstructor foo11-test2 foo11 () :a 1 :b 2) - (defconstructor foo11-test3 foo11 (a b) :a a :b b) - - (dotimes (i 2) - (unless (check-slots (foo11-test1) 'a *a-initform* - 'b *b-default* - 'c *c-initform*) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo11-test2) 'a '1 'b '2 'c *c-initform*) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo11-test3 *a-supplied* *b-supplied*) - 'a *a-supplied* - 'b *b-supplied* - 'c *c-initform*) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; foo12 -;;; [methods, default/initform, slot-filling] -;;; (nil, t, :instance) - -(defclass foo12 () - ((a :initform *a-initform* :initarg :a) - (b :initform *b-initform* :initarg :b) - (c :allocation :class)) - (:default-initargs :b *b-default*)) - -(defmethod *initialize-instance :after ((instance foo12) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (nil, t, :instance) (2)" - ((:functions foo12-test1 foo12-test2 foo12-test3)) - - (defconstructor foo12-test1 foo12 ()) - (defconstructor foo12-test2 foo12 () :a 1 :b 2) - (defconstructor foo12-test3 foo12 (a b) :a a :b b) - - (dotimes (i 2) - (unless (check-slots (foo12-test1) 'a *a-initform* - 'b *b-default* - 'c :unbound) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo12-test2) 'a '1 'b '2 'c :unbound) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (foo12-test3 *a-supplied* *b-supplied*) - 'a *a-supplied* - 'b *b-supplied* - 'c :unbound) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - - -(cleanup-do-test '((:classes bar1 bar2 bar3 bar4 - bar5 bar6 bar7 bar8 - bar9 bar10 bar11 bar12) - (:functions bar1-test1 bar1-test2 bar1-test3 - bar2-test1 bar2-test2 bar2-test3 - bar3-test1 bar3-test2 bar3-test3 - bar4-test1 bar4-test2 bar4-test3 - bar5-test1 bar5-test2 bar5-test3 - bar6-test1 bar6-test2 bar6-test3 - bar7-test1 bar7-test2 bar7-test3 - bar8-test1 bar8-test2 bar8-test3 - bar9-test1 bar9-test2 bar9-test3 - bar10-test1 bar10-test2 bar10-test3 - bar11-test1 bar11-test2 bar11-test3 - bar12-test1 bar12-test2 bar12-test3))) - -;;; -;;; bar1 -;;; [methods, default/initform, slot-filling] -;;; (t, :constant, :class) - -(defclass bar1 () - ((a :initarg :a :initform 1) - (b :initarg :b :initform 2) - (c :initarg :c :allocation :class :initform 3)) - (:default-initargs :b 5 :c 6)) - -(defmethod *initialize-instance :before ((instance bar1) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (t, :constant, :class) (1)" - ((:functions bar1-test1 bar1-test2 bar1-test3)) - - (defconstructor bar1-test1 bar1 ()) - (defconstructor bar1-test2 bar1 () :a 1 :b 2 :c 3) - (defconstructor bar1-test3 bar1 (a b c) :a a - :b b - :c c) - - (dotimes (i 2) - (unless (check-slots (bar1-test1) 'a '1 'b '5 'c '6) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar1-test2) 'a '1 'b '2 'c '3) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar1-test3 7 8 9) 'a '7 'b '8 'c '9) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; bar2 -;;; [methods, default/initform, slot-filling] -;;; (t, :constant, :class) - -(defclass bar2 () - ((a :initform 1 :initarg :a) - (b :initform 2 :initarg :b) - (c :allocation :class :initform 3 :initarg :c)) - (:default-initargs :b 5)) - -(defmethod *initialize-instance :before ((instance bar2) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (t, :constant, :class) (2)" - ((:functions bar2-test1 bar2-test2 bar2-test3)) - - (defconstructor bar2-test1 bar2 ()) - (defconstructor bar2-test2 bar2 () :a 1 :b 2 :c 3) - (defconstructor bar2-test3 bar2 (a b c) :a a - :b b - :c c) - - (dotimes (i 2) - (unless (check-slots (bar2-test1) 'a '1 'b '5 'c '3) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar2-test2) 'a '1 'b '2 'c '3) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar2-test3 7 8 9) 'a '7 'b '8 'c '9) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; bar3 -;;; [methods, default/initform, slot-filling] -;;; (t, :constant, :instance) - -(defclass bar3 () - ((a :initform 1 :initarg :a) - (b :initform 2 :initarg :b) - (c :allocation :class :initform 3)) - (:default-initargs :b 5)) - -(defmethod *initialize-instance :before ((instance bar3) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (t, :constant, :instance) (1)" - ((:functions bar3-test1 bar3-test2 bar3-test3)) - - (defconstructor bar3-test1 bar3 ()) - (defconstructor bar3-test2 bar3 () :a 1 :b 2) - (defconstructor bar3-test3 bar3 (a b) :a a :b b) - - (dotimes (i 2) - (unless (check-slots (bar3-test1) 'a '1 'b '5 'c '3) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar3-test2) 'a '1 'b '2 'c '3) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar3-test3 7 8) 'a '7 'b '8 'c '3) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; bar4 -;;; [methods, default/initform, slot-filling] -;;; (t, :constant, :instance) - -(defclass bar4 () - ((a :initform 1 :initarg :a) - (b :initform 2 :initarg :b) - (c :allocation :class)) - (:default-initargs :b 5)) - -(defmethod *initialize-instance :before ((instance bar4) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (t, :constant, :instance) (2)" - ((:functions bar4-test1 bar4-test2 bar4-test3)) - - (defconstructor bar4-test1 bar4 ()) - (defconstructor bar4-test2 bar4 () :a 1 :b 2) - (defconstructor bar4-test3 bar4 (a b) :a a :b b) - - (dotimes (i 2) - (unless (check-slots (bar4-test1) 'a '1 'b '5 'c :unbound) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar4-test2) 'a '1 'b '2 'c :unbound) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar4-test3 7 8) 'a '7 'b '8 'c :unbound) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; bar5 -;;; [methods, default/initform, slot-filling] -;;; (:after, :constant, :class) - -(defclass bar5 () - ((a :initarg :a :initform 1) - (b :initarg :b :initform 2) - (c :initarg :c :allocation :class :initform 3)) - (:default-initargs :b 5 :c 6)) - -(defmethod *initialize-instance :after ((instance bar5) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (:after, :constant, :class) (1)" - ((:functions bar5-test1 bar5-test2 bar5-test3)) - - (defconstructor bar5-test1 bar5 ()) - (defconstructor bar5-test2 bar5 () :a 1 :b 2 :c 3) - (defconstructor bar5-test3 bar5 (a b c) :a a - :b b - :c c) - - (dotimes (i 2) - (unless (check-slots (bar5-test1) 'a '1 'b '5 'c '6) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar5-test2) 'a '1 'b '2 'c '3) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar5-test3 7 8 9) 'a '7 'b '8 'c '9) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; bar6 -;;; [methods, default/initform, slot-filling] -;;; (:after, :constant, :class) - -(defclass bar6 () - ((a :initform 1 :initarg :a) - (b :initform 2 :initarg :b) - (c :allocation :class :initform 3 :initarg :c)) - (:default-initargs :b 5)) - -(defmethod *initialize-instance :after ((instance bar6) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (:after, :constant, :class) (2)" - ((:functions bar6-test1 bar6-test2 bar6-test3)) - - (defconstructor bar6-test1 bar6 ()) - (defconstructor bar6-test2 bar6 () :a 1 :b 2 :c 3) - (defconstructor bar6-test3 bar6 (a b c) :a a - :b b - :c c) - - (dotimes (i 2) - (unless (check-slots (bar6-test1) 'a '1 'b '5 'c '3) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar6-test2) 'a '1 'b '2 'c '3) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar6-test3 7 8 9) 'a '7 'b '8 'c '9) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; bar7 -;;; [methods, default/initform, slot-filling] -;;; (:after, :constant, :instance) - -(defclass bar7 () - ((a :initform 1 :initarg :a) - (b :initform 2 :initarg :b) - (c :allocation :class :initform 3)) - (:default-initargs :b 5)) - -(defmethod *initialize-instance :after ((instance bar7) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (:after, :constant, :instance) (1)" - ((:functions bar7-test1 bar7-test2 bar7-test3)) - - (defconstructor bar7-test1 bar7 ()) - (defconstructor bar7-test2 bar7 () :a 1 :b 2) - (defconstructor bar7-test3 bar7 (a b) :a a :b b) - - (dotimes (i 2) - (unless (check-slots (bar7-test1) 'a '1 'b '5 'c '3) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar7-test2) 'a '1 'b '2 'c '3) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar7-test3 7 8) 'a '7 'b '8 'c '3) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; bar8 -;;; [methods, default/initform, slot-filling] -;;; (:after, :constant, :instance) - -(defclass bar8 () - ((a :initform 1 :initarg :a) - (b :initform 2 :initarg :b) - (c :allocation :class)) - (:default-initargs :b 5)) - -(defmethod *initialize-instance :after ((instance bar8) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (:after, :constant, :instance) (2)" - ((:functions bar8-test1 bar8-test2 bar8-test3)) - - (defconstructor bar8-test1 bar8 ()) - (defconstructor bar8-test2 bar8 () :a 1 :b 2) - (defconstructor bar8-test3 bar8 (a b) :a a :b b) - - (dotimes (i 2) - (unless (check-slots (bar8-test1) 'a '1 'b '5 'c :unbound) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar8-test2) 'a '1 'b '2 'c :unbound) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar8-test3 7 8) 'a '7 'b '8 'c :unbound) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; bar9 -;;; [methods, default/initform, slot-filling] -;;; (nil, :constant, :class) - -(defclass bar9 () - ((a :initarg :a :initform 1) - (b :initarg :b :initform 2) - (c :initarg :c :allocation :class :initform 3)) - (:default-initargs :b 5 :c 6)) - -(do-test "defconstructor (nil, :constant, :class) (1)" - ((:functions bar9-test1 bar9-test2 bar9-test3)) - - (defconstructor bar9-test1 bar9 ()) - (defconstructor bar9-test2 bar9 () :a 1 :b 2 :c 3) - (defconstructor bar9-test3 bar9 (a b c) :a a - :b b - :c c) - - (dotimes (i 2) - (unless (check-slots (bar9-test1) 'a '1 'b '5 'c '6) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar9-test2) 'a '1 'b '2 'c '3) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar9-test3 7 8 9) 'a '7 'b '8 'c '9) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; bar10 -;;; [methods, default/initform, slot-filling] -;;; (nil, :constant, :class) - -(defclass bar10 () - ((a :initform 1 :initarg :a) - (b :initform 2 :initarg :b) - (c :allocation :class :initform 3 :initarg :c)) - (:default-initargs :b 5)) - -(do-test "defconstructor (nil, :constant, :class) (2)" - ((:functions bar10-test1 bar10-test2 bar10-test3)) - - (defconstructor bar10-test1 bar10 ()) - (defconstructor bar10-test2 bar10 () :a 1 :b 2 :c 3) - (defconstructor bar10-test3 bar10 (a b c) :a a - :b b - :c c) - - (dotimes (i 2) - (unless (check-slots (bar10-test1) 'a '1 'b '5 'c '3) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar10-test2) 'a '1 'b '2 'c '3) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar10-test3 7 8 9) 'a '7 'b '8 'c '9) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; bar11 -;;; [methods, default/initform, slot-filling] -;;; (nil, :constant, :instance) - -(defclass bar11 () - ((a :initform 1 :initarg :a) - (b :initform 2 :initarg :b) - (c :allocation :class :initform 3)) - (:default-initargs :b 5)) - -(do-test "defconstructor (nil, :constant, :instance) (1)" - ((:functions bar11-test1 bar11-test2 bar11-test3)) - - (defconstructor bar11-test1 bar11 ()) - (defconstructor bar11-test2 bar11 () :a 1 :b 2) - (defconstructor bar11-test3 bar11 (a b) :a a :b b) - - (dotimes (i 2) - (unless (check-slots (bar11-test1) 'a '1 'b '5 'c '3) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar11-test2) 'a '1 'b '2 'c '3) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar11-test3 7 8) 'a '7 'b '8 'c '3) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; bar12 -;;; [methods, default/initform, slot-filling] -;;; (nil, :constant, :instance) - -(defclass bar12 () - ((a :initform 1 :initarg :a) - (b :initform 2 :initarg :b) - (c :allocation :class)) - (:default-initargs :b 5)) - -(defmethod *initialize-instance :after ((instance bar12) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (nil, :constant, :instance) (2)" - ((:functions bar12-test1 bar12-test2 bar12-test3)) - - (defconstructor bar12-test1 bar12 ()) - (defconstructor bar12-test2 bar12 () :a 1 :b 2) - (defconstructor bar12-test3 bar12 (a b) :a a :b b) - - (dotimes (i 2) - (unless (check-slots (bar12-test1) 'a '1 'b '5 'c :unbound) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar12-test2) 'a '1 'b '2 'c :unbound) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (bar12-test3 7 8) 'a '7 'b '8 'c :unbound) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - - -(cleanup-do-test '((:classes baz1 baz2 baz3) - (:functions baz1-test1 baz1-test2 baz1-test3 - baz2-test1 baz2-test2 baz2-test3 - baz3-test1 baz3-test2 baz3-test3))) - -;;; -;;; baz1 -;;; [methods, default/initform, slot-filling] -;;; (t, nil, :class) - -(defclass baz1 () - ((a :initarg :a) - (b :initarg :b) - (c :initarg :c :allocation :class))) - -(defmethod *initialize-instance :before ((instance baz1) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (t, nil, :class) (1)" - ((:functions baz1-test1 baz1-test2 baz1-test3)) - - (defconstructor baz1-test1 baz1 ()) - (defconstructor baz1-test2 baz1 () :a 1 :b 2 :c 3) - (defconstructor baz1-test3 baz1 (a b c) :a a - :b b - :c c) - - (dotimes (i 2) - (unless (check-slots (baz1-test1) 'a :unbound 'b :unbound 'c :unbound) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (baz1-test2) 'a '1 'b '2 'c '3) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (baz1-test3 7 8 9) 'a '7 'b '8 'c '9) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; baz2 -;;; [methods, default/initform, slot-filling] -;;; (:after, nil, :class) - -(defclass baz2 () - ((a :initarg :a) - (b :initarg :b) - (c :initarg :c :allocation :class))) - -(defmethod *initialize-instance :after ((instance baz2) &rest ignore) - (declare (ignore ignore)) - ()) - -(do-test "defconstructor (:after, nil, :class) (1)" - ((:functions baz2-test1 baz2-test2 baz2-test3)) - - (defconstructor baz2-test1 baz2 ()) - (defconstructor baz2-test2 baz2 () :a 1 :b 2 :c 3) - (defconstructor baz2-test3 baz2 (a b c) :a a - :b b - :c c) - - (dotimes (i 2) - (unless (check-slots (baz2-test1) 'a :unbound 'b :unbound 'c :unbound) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (baz2-test2) 'a '1 'b '2 'c '3) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (baz2-test3 7 8 9) 'a '7 'b '8 'c '9) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - -;;; -;;; baz3 -;;; [methods, default/initform, slot-filling] -;;; (nil, nil, :class) - -(defclass baz3 () - ((a :initarg :a) - (b :initarg :b) - (c :initarg :c :allocation :class))) - -(do-test "defconstructor (nil, nil, :class) (1)" - ((:functions baz3-test1 baz3-test2 baz3-test3)) - - (defconstructor baz3-test1 baz3 ()) - (defconstructor baz3-test2 baz3 () :a 1 :b 2 :c 3) - (defconstructor baz3-test3 baz3 (a b c) :a a - :b b - :c c) - - (dotimes (i 2) - (unless (check-slots (baz3-test1) 'a :unbound 'b :unbound 'c :unbound) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (baz3-test2) 'a '1 'b '2 'c '3) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (baz3-test3 7 8 9) 'a '7 'b '8 'c '9) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - - -(cleanup-do-test '((:classes foo bar) - (:functions make-bar-1 make-bar-2 make-bar-3))) - -(setq *foo-a* 'foo-a - *foo-b* 'foo-b - *foo-c* 'foo-c - *bar-a* 'bar-a - *bar-b* 'bar-b - *bar-c* 'bar-c - *supplied-a* 'a - *supplied-b* 'b - *supplied-c* 'c) - -(defclass foo () - ((a :initarg :a) - (b :initarg :b) - (c :initarg :c)) - (:default-initargs :a *foo-a* :b *foo-b* :c *foo-c*)) - -(defclass bar (foo) - ((c :initarg :a)) - (:default-initargs :a *bar-a* :c *bar-c*)) - -(defconstructor make-bar-1 bar ()) -(defconstructor make-bar-2 bar () :a 1 :b 2 :c 3) -(defconstructor make-bar-3 bar (a b c) :a a :b b :c c) - -(do-test "defconstructor/shadowing" - () - - (dotimes (i 2) - (unless (check-slots (make-bar-1) 'a *bar-a* 'b *foo-b* 'c *bar-a*) - (do-test-error nil "no initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (make-bar-2) 'a '1 'b '2 'c '1) - (do-test-error nil "constant initargs failed (~D time)" i))) - - (dotimes (i 2) - (unless (check-slots (make-bar-3 *supplied-a* *supplied-b* *supplied-c*) - 'a *supplied-a* 'b *supplied-b* 'c *supplied-a*) - (do-test-error nil "non constant initargs failed (~D time)" i)))) - - -(do-test "defconstructor/only needed forms should be evaluated" - ((:classes foo) - (:functions make-foo-1 make-foo-2)) - - (defclass foo () - ((x :initform (do-test-error nil "foo x initform was evaluated") - :initarg :x) - (y :initform (do-test-error nil "foo y initform was evaluated") - :initarg :y) - (z :initform (do-test-error nil "foo z initform was evaluated") - :initarg :z)) - (:default-initargs :y 2 - :z (do-test-error - nil - "z default was evaluated"))) - - (defconstructor make-foo-1 foo () :x 1 :z 3) - (defconstructor make-foo-2 foo (x z) :x x :z z) - - (make-foo-1) - (make-foo-1) - (make-foo-2 'x 'z) - (make-foo-2 'x 'z)) - -(do-test "defconstructor/shadowing/only needed forms should be evaluated" - ((:classes foo bar) - (:functions make-bar-4 make-bar-5)) - - (defclass foo () - ((x :initform (do-test-error nil "foo x initform was evaluated") - :initarg :x) - (y :initform (do-test-error nil "foo y initform was evaluated") - :initarg :y) - (z :initform (do-test-error nil "foo z initform was evaluated") - :initarg :z)) - (:default-initargs :x (do-test-error - nil - "foo z default was evaluated") - :y (do-test-error - nil - "foo y default was evaluated") - :z (do-test-error - nil - "foo z default was evaluated"))) - (defclass bar (foo) - ((x :initform (do-test-error nil "bar x initform was evaluated")) - (y :initform (do-test-error nil "bar y initform was evaluated")) - (z :initform (do-test-error nil "bar z initform was evaluated"))) - (:default-initargs :y 2 - :z (do-test-error - nil - "bar z default was evaluated"))) - - (defconstructor make-bar-4 bar () :x 1 :z 3) - (defconstructor make-bar-5 bar (x z) :x x :z z) - - (make-bar-4) - (make-bar-4) - (make-bar-5 'x 'z) - (make-bar-5 'x 'z)) - -;;; -;;; 11/1 test to make sure reader/writer call slot-value-using-class -;;; -;;; ********************************************************************** -;;; This test codes will have to change in each of the next releases -;;; ********************************************************************** -;;; -(cleanup-do-test '((:classes test-deoptimized-slot-access-class - test-deoptimized-slot-access) - (:functions test-a test-b test-c) - (:setf-generic-functions test-a test-b))) - -(defclass test-deoptimized-slot-access-class (standard-class) ()) - -(defmethod check-super-metaclass-compatibility - ((x test-deoptimized-slot-access-class) (y standard-class)) - 't) - -(defmethod all-std-class-reader-miss-1 - ((class test-deoptimized-slot-access-class) wrapper slot-name) - (declare (ignore wrapper slot-name)) - ()) - -(defmethod lookup-pv-miss-1 - ((class test-deoptimized-slot-access-class) slots pv) - (let ((pv (call-next-method))) - (make-list (length pv) :initial-element nil))) - - -(defclass test-deoptimized-slot-access () - ((a :initform 'a :accessor test-a) - (b :initform 'b :accessor test-b)) - (:metaclass test-deoptimized-slot-access-class)) - -(defmethod test-c ((o test-deoptimized-slot-access)) - (list (slot-value o 'a) (slot-value o 'b))) - -(let ((called-p 'nil) - instance) - (defmethod slot-value-using-class ((class test-deoptimized-slot-access-class) - object - slot-name) - (setq called-p 'read) - (call-next-method)) - - (defmethod (setf slot-value-using-class) - (nv (class test-deoptimized-slot-access-class) object slot-name) - (setq called-p 'written) - (call-next-method)) - - (setq instance (make-instance 'test-deoptimized-slot-access)) - - (do-test "deoptimized slot access should call slot-value-using-class" - () - (unless (and (eq (test-a instance) 'a) - (eq called-p 'read)) - (do-test-error nil "reader doesn't call slot-value-using-class")) - - (setq called-p 'nil) - (setf (test-b instance) 'c) - (unless (eq called-p 'written) - (do-test-error nil "writer doesn't call slot-value-using-class")) - - (setq called-p 'nil) - (unless (and (equal (test-c instance) '(a c)) - (eq called-p 'read)) - (do-test-error nil "slot-value doesn't call slot-value-using-class")))) - -;;; -;;; 5/3/89 eql specializers tests -;;; - -(cleanup-do-test '((:classes foo bar))) -(defclass foo () ()) -(defclass bar (foo) ()) - -(do-test "eql specializers(eql and other methods/symbol only)" - ((:functions test) - (:variables i)) - - (defmethod test ((self foo) x) 'foo) - (defmethod test ((self bar) (x (eql 'a))) 'a) - (defmethod test ((self bar) (x (eql 'b))) 'b) - (setq i (make-instance 'bar)) - - (unless (eq (test i 'a) 'a) - (do-test-error () "for (bar (eql a)) wrong method was called")) - (unless (eq (test i 'b) 'b) - (do-test-error () "for (bar (eql b)) wrong method was called")) - (unless (eq (test i 'c) 'foo) - (do-test-error () "for (bar (eql c)) wrong method was called")) - ) - -(do-test "eql specializers(only eql methods/symbol only)" - ((:functions test2) - (:variables i)) - - (defmethod test2 ((self bar) (x (eql 'a))) 'a) - (defmethod test2 ((self bar) (x (eql 'b))) 'b) - (setq i (make-instance 'bar)) - - (unless (eq (test2 i 'a) 'a) - (do-test-error () "for (bar (eql a)) wrong method was called")) - (unless (eq (test2 i 'b) 'b) - (do-test-error () "for (bar (eql b)) wrong method was called")) - ) - -(do-test "eql specializers(only eql methods/symbol and integer)" - ((:functions test3)) - - (defmethod test3 ((x (eql 'a)) (y (eql '1))) 'a-1) - (defmethod test3 ((x (eql 'b)) (y (eql '1))) 'b-1) - (defmethod test3 ((x (eql 'c)) (y (eql '1))) 'c-1) - (defmethod test3 ((x (eql 'a)) (y (eql '2))) 'a-2) - (defmethod test3 ((x (eql 'b)) (y (eql '2))) 'b-2) - (defmethod test3 ((x (eql 'c)) (y (eql '2))) 'c-2) - (defmethod test3 ((x (eql 'a)) (y (eql '3))) 'a-3) - (defmethod test3 ((x (eql 'b)) (y (eql '3))) 'b-3) - (defmethod test3 ((x (eql 'c)) (y (eql '3))) 'c-3) - - (unless (eq (test3 'a '1) 'a-1) - (do-test-error () "for (a 1) wrong method was called")) - (unless (eq (test3 'a '2) 'a-2) - (do-test-error () "for (a 2) wrong method was called")) - (unless (eq (test3 'a '3) 'a-3) - (do-test-error () "for (a 3) wrong method was called")) - (unless (eq (test3 'b '1) 'b-1) - (do-test-error () "for (b 1) wrong method was called")) - (unless (eq (test3 'b '2) 'b-2) - (do-test-error () "for (b 2) wrong method was called")) - (unless (eq (test3 'b '3) 'b-3) - (do-test-error () "for (b 3) wrong method was called")) - (unless (eq (test3 'c '1) 'c-1) - (do-test-error () "for (c 1) wrong method was called")) - (unless (eq (test3 'c '2) 'c-2) - (do-test-error () "for (c 2) wrong method was called")) - (unless (eq (test3 'c '3) 'c-3) - (do-test-error () "for (c 3) wrong method was called")) - - ) - -(do-test "eql specializers(eql and other methods/symbol and integer)" - ((:functions test4)) - - (defmethod test4 ((x (eql 'a)) (y (eql '1))) 'a-1) - (defmethod test4 ((x (eql 'b)) (y (eql '1))) 'b-1) - (defmethod test4 ((x (eql 'c)) (y (eql '2))) 'c-2) - (defmethod test4 ((x (eql 'b)) (y (eql '3))) 'b-3) - (defmethod test4 (x y) 'other) - - (unless (eq (test4 'a '1) 'a-1) - (do-test-error () "for (a 1) wrong method was called")) - (unless (eq (test4 'a '2) 'other) - (do-test-error () "for (a 2) wrong method was called")) - (unless (eq (test4 'a '3) 'other) - (do-test-error () "for (a 3) wrong method was called")) - (unless (eq (test4 'b '1) 'b-1) - (do-test-error () "for (b 1) wrong method was called")) - (unless (eq (test4 'b '2) 'other) - (do-test-error () "for (b 2) wrong method was called")) - (unless (eq (test4 'b '3) 'b-3) - (do-test-error () "for (b 3) wrong method was called")) - (unless (eq (test4 'c '1) 'other) - (do-test-error () "for (c 1) wrong method was called")) - (unless (eq (test4 'c '2) 'c-2) - (do-test-error () "for (c 2) wrong method was called")) - (unless (eq (test4 'c '3) 'other) - (do-test-error () "for (c 3) wrong method was called")) - - ) - -(do-test "eql specializers(call-next-method)" - ((:functions test5)) - - (defmethod test5 (x) ()) - (defmethod test5 ((x (eql 'a))) (cons 'a (call-next-method))) - (defmethod test5 ((x (eql 'b))) (cons 'b (call-next-method))) - - (unless (equal (test5 'a) '(a)) - (do-test-error () "for (a) wrong method was called")) - (unless (equal (test5 'b) '(b)) - (do-test-error () "for (b) wrong method was called")) - (unless (eq (test5 'c) '()) - (do-test-error () "for (c) wrong method was called")) - ) - -(do-test "eql specializers(for random types)" - ((:functions test6)) - - (defmethod test6 (x) ()) - (defmethod test6 ((x symbol)) (cons 'the-class-symbol (call-next-method))) - (defmethod test6 ((x null)) (cons 'the-class-null (call-next-method))) - (defmethod test6 ((x number)) (cons 'the-class-number (call-next-method))) - (defmethod test6 ((x integer)) (cons 'the-class-integer (call-next-method))) - (defmethod test6 ((x (eql 'foo))) (cons 'foo (call-next-method))) - (defmethod test6 ((x (eql 'bar))) (cons 'bar (call-next-method))) - (defmethod test6 ((x (eql 'nil))) (cons 'nil (call-next-method))) - (defmethod test6 ((x (eql '1.7))) (cons '1.7 (call-next-method))) - (defmethod test6 ((x (eql '321))) (cons '321 (call-next-method))) - - (unless (eq (test6 '(other)) ()) - (do-test-error () "for ((other)) wrong method was called")) - (unless (equal (test6 'symbol) '(the-class-symbol)) - (do-test-error () "for (symbol) wrong method was called")) - (unless (equal (test6 '5.5) '(the-class-number)) - (do-test-error () "for (number) wrong method was called")) - (unless (equal (test6 '123) '(the-class-integer the-class-number)) - (do-test-error () "for (integer) wrong method was called")) - (unless (equal (test6 'foo) '(foo the-class-symbol)) - (do-test-error () "for ((eql foo)) wrong method was called")) - (unless (equal (test6 'bar) '(bar the-class-symbol)) - (do-test-error () "for ((eql bar)) wrong method was called")) - (unless (equal (test6 'nil) '(nil the-class-null the-class-symbol)) - (do-test-error () "for ((eql nil)) wrong method was called")) - (unless (equal (test6 '1.7) '(1.7 the-class-number)) - (do-test-error () "for ((eql 1.7)) wrong method was called")) - (unless (equal (test6 '321) '(321 the-class-integer the-class-number)) - (do-test-error () "for ((eql 321)) wrong method was called")) - ) - -;;; -;;; (5/3/89)Testing :allocation :class for funcallable-instance -;;; - -(format t "~%Testing :allocation :class test(for standard-instance)~%") - -(cleanup-do-test '((:classes foo bar) - (:variables foo1 bar1))) - -(defclass foo () - ((a :initform (list 'foo-a) :allocation :class) - (b :initform (list 'foo-b) :allocation :class) - (c :initform (list 'foo-c) :allocation :class) - (d :allocation :class) - (e :allocation :class) - (f :allocation :class))) - -(defclass bar (foo) - ((b :initform (list 'bar-b) :allocation :class) - (c :allocation :class) - (e :initform (list 'bar-e) :allocation :class) - (f :allocation :class))) - -(defmethod slot-missing ((class standard-class) - (instance foo) - slot-name operation &optional new-value) - (list* class instance slot-name operation new-value)) - -(defmethod slot-missing ((class standard-class) - (instance bar) - slot-name operation &optional new-value) - (list* class instance slot-name operation new-value)) - -(defmethod slot-unbound ((class standard-class) - (instance foo) - slot-name) - (list class instance slot-name)) - -(defmethod slot-unbound ((class standard-class) - (instance bar) - slot-name) - (list class instance slot-name)) - -(setq foo1 (make-instance 'foo) - bar1 (make-instance 'bar)) - -(do-test ":allocation :class(:initform/slot-value)" - () - (unless (and (equal (slot-value foo1 'a) '(foo-a)) - (equal (slot-value foo1 'b) '(foo-b)) - (equal (slot-value foo1 'c) '(foo-c)) - (equal (slot-value bar1 'a) '(foo-a)) - (equal (slot-value bar1 'b) '(bar-b)) - (equal (slot-value bar1 'c) '(foo-c)) - (equal (slot-value bar1 'e) '(bar-e))) - (do-test-error () ":initform/slot-value failed"))) - -(do-test ":allocation :class(shared by instances of super and sub case)" - () - (unless (eq (slot-value foo1 'a) - (slot-value bar1 'a)) - (do-test-error () ":class slot should be shared by instances"))) - -(do-test ":allocation :class(not shared by instances of super and sub case)" - () - (unless (not (eq (slot-value foo1 'c) - (slot-value bar1 'c))) - (do-test-error () ":class slot should not be shared by instances"))) - -(do-test ":allocation :class(slot-boundp)" - () - (unless (and (slot-boundp foo1 'a) - (slot-boundp foo1 'b) - (slot-boundp foo1 'c) - (not (slot-boundp foo1 'd)) - (not (slot-boundp foo1 'e)) - (not (slot-boundp foo1 'f)) - (slot-boundp bar1 'a) - (slot-boundp bar1 'b) - (slot-boundp bar1 'c) - (not (slot-boundp bar1 'd)) - (slot-boundp bar1 'e) - (not (slot-boundp bar1 'f))) - (do-test-error () "slot-boundp failed"))) - -(slot-makunbound foo1 'a) -(slot-makunbound foo1 'b) - -(do-test ":allocation :class(slot-makunbound)" - () - (unless (and (not (slot-boundp foo1 'a)) - (not (slot-boundp foo1 'b)) - (not (slot-boundp bar1 'a)) - (slot-boundp bar1 'b)) - (do-test-error () "slot-makunbound failed"))) - -(setf (slot-value foo1 'a) '(new-foo-a) - (slot-value foo1 'b) '(new-foo-b) - (slot-value foo1 'c) '(new-foo-c) - (slot-value bar1 'b) '(new-bar-b) - (slot-value bar1 'e) '(new-bar-e)) - -(do-test ":allocation :class(slot-value/(setf slot-value))" - () - (unless (and (equal (slot-value foo1 'a) '(new-foo-a)) - (equal (slot-value foo1 'b) '(new-foo-b)) - (equal (slot-value foo1 'c) '(new-foo-c)) - (equal (slot-value bar1 'a) '(new-foo-a)) - (equal (slot-value bar1 'b) '(new-bar-b)) - (equal (slot-value bar1 'e) '(new-bar-e))) - (do-test-error () "slot-value/(setf slot-value failed"))) - -(do-test ":allocation :class(slot-exists-p)" - () - (unless (and (slot-exists-p foo1 'a) - (slot-exists-p foo1 'b) - (slot-exists-p foo1 'c) - (slot-exists-p foo1 'd) - (slot-exists-p foo1 'e) - (slot-exists-p foo1 'f) - (slot-exists-p bar1 'a) - (slot-exists-p bar1 'b) - (slot-exists-p bar1 'c) - (slot-exists-p bar1 'd) - (slot-exists-p bar1 'e) - (slot-exists-p bar1 'f)) - (do-test-error () "slot-exist-p failed"))) - -(do-test ":allocation :class(slot-missing)" - () - (unless (and (equal (slot-value foo1 'x) - (list (class-of foo1) - foo1 - 'x - 'slot-value)) - (equal (setf (slot-value foo1 'x) 'dummy) - (list* (class-of foo1) - foo1 - 'x - 'setf - 'dummy)) - (equal (slot-boundp foo1 'x) - (list (class-of foo1) - foo1 - 'x - 'slot-boundp)) - - (equal (slot-makunbound foo1 'x) - (list (class-of foo1) - foo1 - 'x - 'slot-makunbound)) - (equal (slot-value bar1 'x) - (list (class-of bar1) - bar1 - 'x - 'slot-value)) - (equal (setf (slot-value bar1 'x) 'dummy) - (list* (class-of bar1) - bar1 - 'x - 'setf - 'dummy)) - (equal (slot-boundp bar1 'x) - (list (class-of bar1) - bar1 - 'x - 'slot-boundp)) - - (equal (slot-makunbound bar1 'x) - (list (class-of bar1) - bar1 - 'x - 'slot-makunbound))) - (do-test-error () "slot-missing failed"))) - -;;; -;;; (5/4/89)Testing :allocation :class for funcallable-instance -;;; - -(format t "~%Testing :allocation :class test~ - (for funcallable-standard-instance)~%") - -(cleanup-do-test '((:classes foo bar) - (:variables foo2 bar2))) - -(defclass foo () - ((a :initform (list 'foo-a) :allocation :class) - (b :initform (list 'foo-b) :allocation :class) - (c :initform (list 'foo-c) :allocation :class) - (d :allocation :class) - (e :allocation :class) - (f :allocation :class)) - (:metaclass funcallable-standard-class)) - -(defclass bar (foo) - ((b :initform (list 'bar-b) :allocation :class) - (c :allocation :class) - (e :initform (list 'bar-e) :allocation :class) - (f :allocation :class)) - (:metaclass funcallable-standard-class)) - -(defmethod slot-missing ((class standard-class) - (instance foo) - slot-name operation &optional new-value) - (list* class instance slot-name operation new-value)) - -(defmethod slot-missing ((class standard-class) - (instance bar) - slot-name operation &optional new-value) - (list* class instance slot-name operation new-value)) - -(defmethod slot-unbound ((class standard-class) - (instance foo) - slot-name) - (list class instance slot-name)) - -(defmethod slot-unbound ((class standard-class) - (instance bar) - slot-name) - (list class instance slot-name)) - -(setq foo2 (make-instance 'foo) - bar2 (make-instance 'bar)) - -(do-test ":allocation :class(:initform/slot-value)" - () - (unless (and (equal (slot-value foo2 'a) '(foo-a)) - (equal (slot-value foo2 'b) '(foo-b)) - (equal (slot-value foo2 'c) '(foo-c)) - (equal (slot-value bar2 'a) '(foo-a)) - (equal (slot-value bar2 'b) '(bar-b)) - (equal (slot-value bar2 'c) '(foo-c)) - (equal (slot-value bar2 'e) '(bar-e))) - (do-test-error () ":initform/slot-value failed"))) - -(do-test ":allocation :class(shared by instances of super and sub case)" - () - (unless (eq (slot-value foo2 'a) - (slot-value bar2 'a)) - (do-test-error () ":class slot should be shared by instances"))) - -(do-test ":allocation :class(not shared by instances of super and sub case)" - () - (unless (not (eq (slot-value foo2 'c) - (slot-value bar2 'c))) - (do-test-error () ":class slot should not be shared by instances"))) - -(do-test ":allocation :class(slot-boundp)" - () - (unless (and (slot-boundp foo2 'a) - (slot-boundp foo2 'b) - (slot-boundp foo2 'c) - (not (slot-boundp foo2 'd)) - (not (slot-boundp foo2 'e)) - (not (slot-boundp foo2 'f)) - (slot-boundp bar2 'a) - (slot-boundp bar2 'b) - (slot-boundp bar2 'c) - (not (slot-boundp bar2 'd)) - (slot-boundp bar2 'e) - (not (slot-boundp bar2 'f))) - (do-test-error () "slot-boundp failed"))) - -(slot-makunbound foo2 'a) -(slot-makunbound foo2 'b) - -(do-test ":allocation :class(slot-makunbound)" - () - (unless (and (not (slot-boundp foo2 'a)) - (not (slot-boundp foo2 'b)) - (not (slot-boundp bar2 'a)) - (slot-boundp bar2 'b)) - (do-test-error () "slot-makunbound failed"))) - -(setf (slot-value foo2 'a) '(new-foo-a) - (slot-value foo2 'b) '(new-foo-b) - (slot-value foo2 'c) '(new-foo-c) - (slot-value bar2 'b) '(new-bar-b) - (slot-value bar2 'e) '(new-bar-e)) - -(do-test ":allocation :class(slot-value/(setf slot-value))" - () - (unless (and (equal (slot-value foo2 'a) '(new-foo-a)) - (equal (slot-value foo2 'b) '(new-foo-b)) - (equal (slot-value foo2 'c) '(new-foo-c)) - (equal (slot-value bar2 'a) '(new-foo-a)) - (equal (slot-value bar2 'b) '(new-bar-b)) - (equal (slot-value bar2 'e) '(new-bar-e))) - (do-test-error () "slot-value/(setf slot-value failed"))) - -(do-test ":allocation :class(slot-exists-p)" - () - (unless (and (slot-exists-p foo2 'a) - (slot-exists-p foo2 'b) - (slot-exists-p foo2 'c) - (slot-exists-p foo2 'd) - (slot-exists-p foo2 'e) - (slot-exists-p foo2 'f) - (slot-exists-p bar2 'a) - (slot-exists-p bar2 'b) - (slot-exists-p bar2 'c) - (slot-exists-p bar2 'd) - (slot-exists-p bar2 'e) - (slot-exists-p bar2 'f)) - (do-test-error () "slot-exist-p failed"))) - -;(do-test ":allocation :class(slot-missing)" -; () -; (unless (and (equal (slot-value foo2 'x) -; (list (class-of foo2) -; foo2 -; 'x -; 'slot-value)) -; (equal (setf (slot-value foo2 'x) 'dummy) -; (list* (class-of foo2) -; foo2 -; 'x - ; 'setf -; 'dummy)) -; (equal (slot-boundp foo2 'x) -; (list (class-of foo2) -; foo2 -; 'x -; 'slot-boundp)) -; -; (equal (slot-makunbound foo2 'x) -; (list (class-of foo2) -; foo2 -; 'x -; 'slot-makunbound)) -; (equal (slot-value bar2 'x) -; (list (class-of bar2) -; bar2 -; 'x -; 'slot-value)) -; (equal (setf (slot-value bar2 'x) 'dummy) -; (list* (class-of bar2) -; bar2 -; 'x -; 'setf -; 'dummy)) -; (equal (slot-boundp bar2 'x) -; (list (class-of bar2) -; bar2 -; 'x -; 'slot-boundp)) -; -; (equal (slot-makunbound bar2 'x) -; (list (class-of bar2) -; bar2 -; 'x -; 'slot-makunbound))) -; (do-test-error () "slot-missing failed"))) - - - diff --git a/obsolete/clos/2.0/unchaged.lisp b/obsolete/clos/2.0/unchaged.lisp deleted file mode 100644 index 4116cfd3..00000000 --- a/obsolete/clos/2.0/unchaged.lisp +++ /dev/null @@ -1,22 +0,0 @@ -boot -braid -cache -combin -compat -construct -cpl -defcombin -defs -dlap -env -fixup -fngen -fsc -lap -methods -plap -precom2 -precom4 -test -vector -walk \ No newline at end of file diff --git a/obsolete/clos/2.0/vector.lisp b/obsolete/clos/2.0/vector.lisp deleted file mode 100644 index 5f613f84..00000000 --- a/obsolete/clos/2.0/vector.lisp +++ /dev/null @@ -1,368 +0,0 @@ -;;;-*-Mode:LISP; Package:(CLOS LISP 1000); Base:10; Syntax:Common-lisp -*- -;;; -;;; ************************************************************************* -;;; Copyright (c) 1991 Venue -;;; All rights reserved. -;;; ************************************************************************* -;;; -;;; Permutation vectors. -;;; - -(in-package 'clos) - -(defmacro instance-slot-index (wrapper slot-name) - `(let ((pos 0)) - (block loop - (dolist (sn (wrapper-instance-slots-layout ,wrapper)) - (when (eq ,slot-name sn) (return-from loop pos)) - (incf pos))))) - - -;;; -;;; -;;; -(defmacro %isl-cache (isl) `(%svref ,isl 1)) -(defmacro %isl-field (isl) `(%svref ,isl 2)) -(defmacro %isl-mask (isl) `(%svref ,isl 3)) -(defmacro %isl-size (isl) `(%svref ,isl 4)) -(defmacro %isl-slot-name-lists (isl) `(%svref ,isl 5)) - -(defun make-isl (slot-name-lists) - (multiple-value-bind (mask size) - (compute-primary-pv-cache-size slot-name-lists) - (make-isl-internal (wrapper-field 'number) - (get-cache size) - mask - size - slot-name-lists))) - -(defun make-isl-internal (field cache mask size slot-name-lists) - (let ((isl (make-array 6))) - (setf (svref isl 0) 'isl - (%isl-cache isl) cache - (%isl-field isl) field - (%isl-mask isl) mask - (%isl-size isl) size - (%isl-slot-name-lists isl) slot-name-lists) - isl)) - -(defun make-isl-type-declaration (var) - `(type simple-vector ,var)) - -(defun islp (x) - (and (simple-vector-p x) - (= (array-dimension x 0) 5) - (eq (svref x 0) 'isl))) - -(defvar *slot-name-lists-inner* (make-hash-table :test #'equal)) -(defvar *slot-name-lists-outer* (make-hash-table :test #'equal)) - -(defun intern-slot-name-lists (slot-name-lists) - (flet ((inner (x) - (or (gethash x *slot-name-lists-inner*) - (setf (gethash x *slot-name-lists-inner*) (copy-list x)))) - (outer (x) - (or (gethash x *slot-name-lists-outer*) - (setf (gethash x *slot-name-lists-outer*) (make-isl (copy-list x)))))) - (outer (mapcar #'inner slot-name-lists)))) - - - -(defvar *pvs* (make-hash-table :test #'equal)) - -(defvar default-svuc-method nil) -(defvar default-setf-svuc-method nil) - -(defun optimize-slot-value-by-class-p (class slot-name setf-p) - (or (not (eq *boot-state* 'complete)) - (let* ((slot-definition (find-slot-definition class slot-name)) - (gfun-name (if setf-p - '(setf slot-value-using-class) 'slot-value-using-class)) - (gfun (gdefinition gfun-name)) - (csym (if setf-p 'default-setf-svuc-method 'default-svuc-method)) - (app-methods nil)) - (dolist (method (generic-function-methods gfun)) - (let* ((mspecs (method-specializers method)) - (specs (if setf-p (cdr mspecs) mspecs))) - (when (and (specializer-applicable-p (first specs) class) - (specializer-applicable-using-class-p (second specs) class) - (specializer-applicable-p (third specs) slot-definition)) - (push method app-methods)))) - (and app-methods (null (cdr app-methods)) - (eq (car app-methods) - (or (symbol-value csym) - (let* ((specs (if setf-p - '(t - std-class - standard-object - standard-effective-slot-definition) - '(std-class - standard-object - standard-effective-slot-definition))) - (slist (mapcar #'find-class specs))) - (set csym (get-method gfun nil slist))))))))) - -(defun lookup-pv (isl args) - (let* ((class-slot-p nil) - (elements - (gathering1 (collecting) - (iterate ((slot-names (list-elements (%isl-slot-name-lists isl))) - (arg (list-elements args))) - (when slot-names - (let* ((wrapper (check-wrapper-validity arg)) - (class (wrapper-class wrapper)) - (class-slots (wrapper-class-slots wrapper))) - (dolist (slot-name slot-names) - (if (and (optimize-slot-value-by-class-p - class slot-name nil) - (optimize-slot-value-by-class-p - class slot-name t)) - (let ((index (instance-slot-index wrapper slot-name))) - (if index - (gather1 index) - (let ((cell (assq slot-name class-slots))) - (if cell - (progn (setq class-slot-p t) (gather1 cell)) - (gather1 nil))))) - (gather1 nil))))))))) - (if class-slot-p ;Sure is a shame Common Lisp doesn't - (make-permutation-vector elements) ;give me the right kind of hash table. - (or (gethash elements *pvs*) - (setf (gethash elements *pvs*) (make-permutation-vector elements)))))) - -(defun make-permutation-vector (indexes) - (make-array (length indexes) :initial-contents indexes)) - -(defun make-pv-type-declaration (var) - `(type simple-vector ,var)) - -(defmacro pvref (pv index) - `(svref ,pv ,index)) - - - -(defun can-optimize-access (var required-parameters env) - (let ((rebound? (caddr (variable-declaration 'variable-rebinding var env)))) - (if rebound? - (car (memq rebound? required-parameters)) - (car (memq var required-parameters))))) - -(defun optimize-slot-value (slots parameter form) - (destructuring-bind (ignore ignore slot-name) - form - (optimize-instance-access slots :read parameter (eval slot-name) nil))) - -(defun optimize-set-slot-value (slots parameter form) - (destructuring-bind (ignore ignore slot-name new-value) - form - (optimize-instance-access slots :write parameter (eval slot-name) new-value))) - -;;; -;;; The argument is an alist, the CAR of each entry is the name of -;;; a required parameter to the function. The alist is in order, so the -;;; position of an entry in the alist corresponds to the argument's position -;;; in the lambda list. -;;; -(defun optimize-instance-access (slots read/write parameter slot-name new-value) - (let* ((parameter-entry (assq parameter slots)) - (slot-entry (assq slot-name (cdr parameter-entry))) - (position (position parameter-entry slots))) - (unless parameter-entry - (error "Internal error in slot optimization.")) - (unless slot-entry - (setq slot-entry (list slot-name)) - (push slot-entry (cdr parameter-entry))) - (ecase read/write - (:read - (let ((form (list 'instance-read ''.PV-OFFSET. parameter position - `',slot-name))) - (push form (cdr slot-entry)) - form)) - (:write - (let ((form (list 'instance-write ''.PV-OFFSET. parameter position - `',slot-name '.new-value.))) - (push form (cdr slot-entry)) - `(let ((.new-value. ,new-value)) ,form)))))) - -(define-walker-template instance-read) -(define-walker-template instance-write) - - -(defmacro instance-read (pv-offset parameter position slot-name) - `(locally - (declare (optimize (speed 3) (safety 0) (compilation-speed 0))) - (let ((.INDEX. (pvref .PV. ,pv-offset))) - (if (and (typep .INDEX. 'fixnum) - (neq (setq .INDEX. (%svref ,(slot-vector-symbol position) .INDEX.)) - ',*slot-unbound*)) - .INDEX. - (pv-access-trap ,parameter .PV. ,pv-offset ,slot-name))))) - -(defmacro instance-write (pv-offset parameter position slot-name new-value) - `(locally - (declare (optimize (speed 3) (safety 0) (compilation-speed 0))) - (let ((.INDEX. (pvref .PV. ,pv-offset))) - (if (typep .INDEX. 'fixnum) - (setf (%svref ,(slot-vector-symbol position) .INDEX.) ,new-value) - (pv-access-trap ,parameter .PV. ,pv-offset ,slot-name ,new-value))))) - -(defun pv-access-trap (instance pv offset slot-name &optional (new-value nil nvp)) - ;; - ;; First thing we do is a quick check to see if this is a class variable. - ;; This could be done inline by moving it to INSTANCE-READ/WRITE. I did - ;; not do that because I don't know whether its worth it. - ;; - (let ((cell (pvref pv offset))) - (if (consp cell) - (if nvp (setf (cdr cell) new-value) (cdr cell)) - ;; - ;; Well, now do a slow trap. - ;; - (if nvp - (setf (slot-value instance slot-name) new-value) - (slot-value instance slot-name))))) - -;;; -;;; This magic function has quite a job to do indeed. -;;; -;;; The careful reader will recall that contains all of the optimized -;;; slot access forms produced by OPTIMIZE-INSTANCE-ACCESS. Each of these is -;;; a call to either INSTANCE-READ or INSTANCE-WRITE. -;;; -;;; At the time these calls were produced, the first argument was specified as -;;; the symbol .PV-OFFSET.; what we have to do now is convert those pv-offset -;;; arguments into the actual number that is the correct offset into the pv. -;;; -;;; But first, oh but first, we sort a bit so that for each argument -;;; we have the slots in alphabetical order. This canonicalizes the ISL's a -;;; bit and will hopefully lead to having fewer PV's floating around. Even -;;; if the gain is only modest, it costs nothing. -;;; -(defun slot-name-lists-from-slots (slots) - (mapcar #'(lambda (parameter-entry) (mapcar #'car (cdr parameter-entry))) - (mutate-slots slots))) - -(defun mutate-slots (slots) - (let ((sorted (sort-slots slots)) - (pv-offset -1)) - (dolist (parameter-entry sorted) - (dolist (slot-entry (cdr parameter-entry)) - (incf pv-offset) - (dolist (form (cdr slot-entry)) - (setf (cadr form) pv-offset)))) - sorted)) - -(defun sort-slots (slots) - (mapcar #'(lambda (parameter-entry) - (cons (car parameter-entry) - (sort (cdr parameter-entry) ;slot entries - #'(lambda (a b) - (string-lessp (symbol-name (car a)) - (symbol-name (car b))))))) - slots)) - - -;;; -;;; This needs to work in terms of metatypes and also needs to work for -;;; automatically generated reader and writer functions. -;;; -(defun add-pv-binding (method-body plist required-parameters) - (let* ((isl (getf plist :isl)) - (isl-cache-symbol (make-symbol "isl-cache"))) - (nconc plist (list :isl-cache-symbol isl-cache-symbol)) - (with-gathering ((slot-variables (collecting)) - (metatypes (collecting))) - (iterate ((slots (list-elements isl)) - (i (interval :from 0))) - (cond (slots - (gather (slot-vector-symbol i) slot-variables) - (gather 'standard-instance metatypes)) - (t - (gather nil slot-variables) - (gather t metatypes)))) - `((let ((.ISL. (locally (declare (special ,isl-cache-symbol)) ,isl-cache-symbol)) - (.PV. *empty-vector*) - ,@(remove nil slot-variables)) - (declare ,(make-isl-type-declaration '.ISL.) - ,(make-pv-type-declaration '.PV.)) - - (let* ((cache (%isl-cache .ISL.)) - (size (%isl-size .ISL.)) - (mask (%isl-mask .ISL.)) - (field (%isl-field .ISL.))) - ,(generating-lap-in-lisp '(cache size mask field) - required-parameters - (flatten-lap - (emit-pv-dlap required-parameters metatypes slot-variables)))) - - ,@method-body))))) - -(defun emit-pv-dlap (required-parameters metatypes slot-variables) - (let* ((slot-regs (mapcar #'(lambda (sv) (and sv (operand :lisp-variable sv))) - slot-variables)) - (wrappers (dlap-wrappers metatypes)) - (nwrappers (remove nil wrappers))) - (flet ((wrapper-moves (miss-label) - (dlap-wrapper-moves wrappers required-parameters metatypes miss-label slot-regs))) - (prog1 (emit-dlap-internal - nwrappers ;wrapper-regs - (wrapper-moves 'pv-miss) ;wrapper-moves - (opcode :exit-lap-in-lisp) ;hit - (flatten-lap ;miss - (opcode :label 'pv-miss) - (opcode :move - (operand :lisp `(primary-pv-cache-miss - .ISL. ,@required-parameters)) - (operand :lisp-variable '.PV.)) - (apply #'flatten-lap (wrapper-moves 'pv-wrapper-miss)) ; -- Maybe the wrappers have changed. - (opcode :label 'pv-wrapper-miss) - (opcode :exit-lap-in-lisp)) - 'pv-miss ;miss-label - (operand :lisp-variable '.PV.)) ;value-reg - (mapc #'deallocate-register nwrappers))))) - -(defun compute-primary-pv-cache-size (slot-name-lists) - (compute-cache-parameters (- (length slot-name-lists) (count nil slot-name-lists)) - t - 2)) - -(defun pv-cache-limit-fn (nlines) - (default-limit-fn nlines)) - -(defun primary-pv-cache-miss (isl &rest args) - (let* ((wrappers - (gathering1 (collecting) - (iterate ((slot-names (list-elements (%isl-slot-name-lists isl))) - (arg (list-elements args))) - (when slot-names (gather1 (check-wrapper-validity arg)))))) - (pv (lookup-pv isl args)) - (field (%isl-field isl)) - (cache (%isl-cache isl)) - (nkeys (length wrappers))) - (multiple-value-bind (new-field new-cache new-mask new-size) - (fill-cache field cache nkeys t #'pv-cache-limit-fn - (if (= nkeys 1) (car wrappers) wrappers) - pv) - (when (or (not (= new-field field)) - (not (eq new-cache cache))) - (without-interrupts ;NOTE: - (setf (%isl-field isl) new-field ; There is no mechanism to - (%isl-cache isl) new-cache ; synchronize the reading of - (%isl-size isl) new-size ; these values. But, this is - (%isl-mask isl) new-mask)) ; a safe order to write them - ; in. Stricly speaking, the - ; use of without-interrupts - ; is superfluous. - (when (neq new-cache cache) (free-cache cache)))) - pv)) - - - -(defmethod wrapper-fetcher ((class standard-class)) - 'std-instance-wrapper) - -(defmethod slots-fetcher ((class standard-class)) - 'std-instance-slots) - -(defmethod raw-instance-allocator ((class standard-class)) - '%%allocate-instance--class) diff --git a/obsolete/clos/2.0/walk.lisp b/obsolete/clos/2.0/walk.lisp deleted file mode 100644 index 2172c050..00000000 --- a/obsolete/clos/2.0/walk.lisp +++ /dev/null @@ -1,2005 +0,0 @@ -;;;-*- Mode:LISP; Package:(WALKER LISP 1000); Base:10; Syntax:Common-lisp -*- -;;; -;;; ************************************************************************* -;;; Copyright (c) 1991 Venue -;;; All rights reserved. -;;; ************************************************************************* -;;; -;;; A simple code walker, based IN PART on: (roll the credits) -;;; Larry Masinter's Masterscope -;;; Moon's Common Lisp code walker -;;; Gary Drescher's code walker -;;; Larry Masinter's simple code walker -;;; . -;;; . -;;; boy, thats fair (I hope). -;;; -;;; For now at least, this code walker really only does what CLOS needs it to -;;; do. Maybe it will grow up someday. -;;; - -;;; -;;; This code walker used to be completely portable. Now it is just "Real -;;; easy to port". This change had to happen because the hack that made it -;;; completely portable kept breaking in different releases of different -;;; Common Lisps, and in addition it never worked entirely anyways. So, -;;; its now easy to port. To port this walker, all you have to write is one -;;; simple macro and two simple functions. These macros and functions are -;;; used by the walker to manipluate the macroexpansion environments of -;;; the Common Lisp it is running in. -;;; -;;; The code which implements the macroexpansion environment manipulation -;;; mechanisms is in the first part of the file, the real walker follows it. -;;; - -(in-package 'walker) - -;;; -;;; The user entry points are walk-form and nested-walked-form. In addition, -;;; it is legal for user code to call the variable information functions: -;;; variable-lexical-p, variable-special-p and variable-class. Some users -;;; will need to call define-walker-template, they will have to figure that -;;; out for themselves. -;;; -(export '(define-walker-template - walk-form - nested-walk-form - variable-lexical-p - variable-special-p - variable-globally-special-p - *variable-declarations* - variable-declaration - )) - - - -;;; -;;; On the following pages are implementations of the implementation specific -;;; environment hacking functions for each of the implementations this walker -;;; has been ported to. If you add a new one, so this walker can run in a new -;;; implementation of Common Lisp, please send the changes back to us so that -;;; others can also use this walker in that implementation of Common Lisp. -;;; -;;; This code just hacks 'macroexpansion environments'. That is, it is only -;;; concerned with the function binding of symbols in the environment. The -;;; walker needs to be able to tell if the symbol names a lexical macro or -;;; function, and it needs to be able to build environments which contain -;;; lexical macro or function bindings. It must be able, when walking a -;;; macrolet, flet or labels form to construct an environment which reflects -;;; the bindings created by that form. Note that the environment created -;;; does NOT have to be sufficient to evaluate the body, merely to walk its -;;; body. This means that definitions do not have to be supplied for lexical -;;; functions, only the fact that that function is bound is important. For -;;; macros, the macroexpansion function must be supplied. -;;; -;;; This code is organized in a way that lets it work in implementations that -;;; stack cons their environments. That is reflected in the fact that the -;;; only operation that lets a user build a new environment is a with-body -;;; macro which executes its body with the specified symbol bound to the new -;;; environment. No code in this walker or in CLOS will hold a pointer to -;;; these environments after the body returns. Other user code is free to do -;;; so in implementations where it works, but that code is not considered -;;; portable. -;;; -;;; There are 3 environment hacking tools. One macro which is used for -;;; creating new environments, and two functions which are used to access the -;;; bindings of existing environments. -;;; -;;; WITH-AUGMENTED-ENVIRONMENT -;;; -;;; ENVIRONMENT-FUNCTION -;;; -;;; ENVIRONMENT-MACRO -;;; - -(defun unbound-lexical-function (&rest args) - (declare (ignore args)) - (error "The evaluator was called to evaluate a form in a macroexpansion~%~ - environment constructed by the CLOS portable code walker. These~%~ - environments are only useful for macroexpansion, they cannot be~%~ - used for evaluation.~%~ - This error should never occur when using CLOS.~%~ - This most likely source of this error is a program which tries to~%~ - to use the CLOS portable code walker to build its own evaluator.")) - - -;;; -;;; In Coral Common Lisp, the macroexpansion environment is just a list -;;; of environment entries. The cadr of each element specifies the type -;;; of the element. The only types that interest us are CCL::MACRO and -;;; FUNCTION. In these cases the element is interpreted as follows. -;;; -;;; ( CCL::MACRO . macroexpansion-function) -;;; -;;; ( FUNCTION . ) -;;; -;;; When in the compiler, is a gensym which will be -;;; a variable which bound at run-time to the function. -;;; When in the interpreter, is the actual function. -;;; -;;; -#+:Coral -(progn - -(defmacro with-augmented-environment - ((new-env old-env &key functions macros) &body body) - `(let ((,new-env (with-augmented-environment-internal ,old-env - ,functions - ,macros))) - ,@body)) - -(defun with-augmented-environment-internal (env functions macros) - (dolist (f functions) - (push (list* f 'function (gensym)) env)) - (dolist (m macros) - (push (list* (car m) 'ccl::macro (cadr m)) env)) - env) - -(defun environment-function (env fn) - (let ((entry (assoc fn env :test #'equal))) - (and entry - (eq (cadr entry) 'function) - (cddr entry)))) - -(defun environment-macro (env macro) - (let ((entry (assoc macro env :test #'equal))) - (and entry - (eq (cadr entry) 'ccl::macro) - (cddr entry)))) - -);#+:Coral - - -;;; -;;; Franz Common Lisp is a lot like Coral Lisp. The macroexpansion -;;; environment is just a list of entries. The cadr of each element -;;; specifies the type of the element. The types that interest us -;;; are FUNCTION, EXCL::MACRO, and COMPILER::FUNCTION-VALUE. These -;;; are interpreted as follows: -;;; -;;; ( FUNCTION . ) -;;; -;;; This happens in the interpreter with lexically -;;; bound functions. -;;; -;;; ( COMPILER::FUNCTION-VALUE . ) -;;; -;;; This happens in the compiler. The gensym represents -;;; a variable which will be bound at run time to the -;;; function object. -;;; -;;; ( EXCL::MACRO . ) -;;; -;;; In both interpreter and compiler, this is the -;;; representation used for macro definitions. -;;; -;;; -#+:ExCL -(progn - -(defmacro with-augmented-environment - ((new-env old-env &key functions macros) &body body) - `(let ((,new-env (with-augmented-environment-internal ,old-env - ,functions - ,macros))) - ,@body)) - -(defun with-augmented-environment-internal (env functions macros) - (dolist (f functions) - (push (list* f 'function #'unbound-lexical-function) env)) - (dolist (m macros) - (push (list* (car m) 'excl::macro (cadr m)) env)) - env) - -(defun environment-function (env fn) - (let ((entry (assoc fn env :test #'equal))) - (and entry - (or (eq (cadr entry) 'function) - (eq (cadr entry) 'compiler::function-value)) - (cddr entry)))) - -(defun environment-macro (env macro) - (let ((entry (assoc macro env :test #'equal))) - (and entry - (eq (cadr entry) 'excl::macro) - (cddr entry)))) - -);#+:ExCL - - -#+Lucid -(progn - -(proclaim '(inline - %alphalex-p - add-contour-to-env-shape - make-function-variable - make-sfc-contour - sfc-contour-type - sfc-contour-elements - add-sfc-contour - add-function-contour - add-macrolet-contour - find-variable-in-contour - find-alist-element-in-contour - find-macrolet-in-contour)) - -(defun %alphalex-p (object) - #-Prime - (eq (cadddr (cddddr object)) 'lucid::%alphalex) - #+Prime - (eq (caddr (cddddr object)) 'lucid::%alphalex)) - -#+Prime -(defun lucid::augment-lexenv-fvars-dummy (lexical vars) - (lucid::augment-lexenv-fvars-aux lexical vars '() '() 'flet '())) - -(defconstant function-contour 1) -(defconstant macrolet-contour 5) - -(defstruct lucid::contour - type - elements) - -(defun add-contour-to-env-shape (contour-type elements env-shape) - (cons (make-contour :type contour-type - :elements elements) - env-shape)) - -(defstruct (variable (:constructor make-variable (name source-type))) - name - (identifier nil) - source-type) - -(defconstant function-sfc-contour 1) -(defconstant macrolet-sfc-contour 8) -(defconstant function-variable-type 1) - -(defun make-function-variable (name) - (make-variable name function-variable-type)) - -(defun make-sfc-contour (type elements) - (cons type elements)) - -(defun sfc-contour-type (sfc-contour) - (car sfc-contour)) - -(defun sfc-contour-elements (sfc-contour) - (cdr sfc-contour)) - -(defun add-sfc-contour (element-list environment type) - (cons (make-sfc-contour type element-list) environment)) - -(defun add-function-contour (variable-list environment) - (add-sfc-contour variable-list environment function-sfc-contour)) - -(defun add-macrolet-contour (alist environment) - (add-sfc-contour alist environment macrolet-sfc-contour)) - -(defun find-variable-in-contour (name contour) - (dolist (element (sfc-contour-elements contour) nil) - (when (eq (variable-name element) name) - (return element)))) - -(defun find-alist-element-in-contour (name contour) - (cdr (assoc name (sfc-contour-elements contour)))) - -(defun find-macrolet-in-contour (name contour) - (find-alist-element-in-contour name contour)) - -(defmacro do-sfc-contours ((contour-var environment &optional result) - &body body) - `(dolist (,contour-var ,environment ,result) ,@body)) - - -(defmacro with-augmented-environment - ((new-env old-env &key functions macros) &body body) - `(let* ((,new-env (with-augmented-environment-internal ,old-env - ,functions - ,macros))) - ,@body)) - -;;; -;;; with-augmented-environment-internal is where the real work of augmenting -;;; the environment happens. -;;; -(defun with-augmented-environment-internal (env functions macros) - (let ((function-names (mapcar #'first functions)) - (macro-names (mapcar #'first macros)) - (macro-functions (mapcar #'second macros))) - (cond ((or (null env) - (contour-p (first env))) - (when function-names - (setq env (add-contour-to-env-shape function-contour - function-names - env))) - (when macro-names - (setq env (add-contour-to-env-shape macrolet-contour - (pairlis macro-names - macro-functions) - env)))) - ((%alphalex-p env) - (when function-names - (setq env (lucid::augment-lexenv-fvars-dummy env function-names))) - (when macro-names - (setq env (lucid::augment-lexenv-mvars env - macro-names - macro-functions)))) - (t - (when function-names - (setq env (add-function-contour - (mapcar #'make-function-variable function-names) - env))) - (when macro-names - (setq env (add-macrolet-contour - (pairlis macro-names macro-functions) - env))))) - env)) - - -(defun environment-function (env fn) - (cond ((null env) nil) - ((contour-p (first env)) - (if (lucid::find-lexical-function fn env) - t - nil)) - ((%alphalex-p env) - (if (lucid::lexenv-fvar fn env) - t - nil)) - (t (do-sfc-contours (contour env nil) - (let ((type (sfc-contour-type contour))) - (cond ((eql type function-sfc-contour) - (when (find-variable-in-contour fn contour) - (return t))) - ((eql type macrolet-sfc-contour) - (when (find-macrolet-in-contour fn contour) - (return nil))))))))) - -(defun environment-macro (env macro) - (cond ((null env) nil) - ((contour-p (first env)) - (lucid::find-lexical-macro macro env)) - ((%alphalex-p env) - (lucid::lexenv-mvar macro env)) - (t (do-sfc-contours (contour env nil) - (let ((type (sfc-contour-type contour))) - (cond ((eql type function-sfc-contour) - (when (find-variable-in-contour macro contour) - (return nil))) - ((eql type macrolet-sfc-contour) - (let ((fn (find-macrolet-in-contour macro contour))) - (when fn - (return fn)))))))))) - - -);#+Lucid - - - -;;; -;;; On the 3600, the documentation for how the environments are represented -;;; is in sys:sys;eval.lisp. That total information is not repeated here. -;;; The important points are that: -;;; si:env-variables returns a list of which each element is: -;;; -;;; (symbol value) -;;; or (symbol . locative) -;;; -;;; The first form is for lexical variables, the second for -;;; special and instance variables. In either case CADR of -;;; the entry is the value and SETF of CADR is used to change -;;; the value. Variables are looked up with ASSQ. -;;; -;;; si:env-functions returns a list of which each element is: -;;; -;;; (symbol definition) -;;; -;;; where definition is anything that could go in a function cell. -;;; This is used for both local functions and local macros. -;;; -;;; The 3600 stack conses its environments (at least in the interpreter). -;;; This means that code written using this walker and running on the 3600 -;;; must not hold on to the environment after the walk-function returns. -;;; No code in this walker or in CLOS does that. -;;; -#+Genera -(progn - -(defmacro with-augmented-environment - ((new-env old-env &key functions macros) &body body) - (let ((funs (make-symbol "FNS")) - (macs (make-symbol "MACROS")) - (new (make-symbol "NEW"))) - `(let ((,funs ,functions) - (,macs ,macros) - (,new ())) - (dolist (f ,funs) - (push `(,(car f) ,#'unbound-lexical-function) ,new)) - (dolist (m ,macs) - (push `(,(car m) (special ,(cadr m))) ,new)) - (let* ((.old-env. ,old-env) - (.old-vars. (pop .old-env.)) - (.old-funs. (pop .old-env.)) - (.old-blks. (pop .old-env.)) - (.old-tags. (pop .old-env.)) - (.old-dcls. (pop .old-env.))) - (si:with-interpreter-environment (,new-env - .old-env. - .old-vars. - (append ,new .old-funs.) - .old-blks. - .old-tags. - .old-dcls.) - ,@body))))) - - -(defun environment-function (env fn) - (if (null env) - (values nil nil) - (let ((entry (assoc fn (si:env-functions env) :test #'equal))) - (if (and entry - (or (not (listp (cadr entry))) - (not (eq (caadr entry) 'special)))) - (values (cadr entry) t) - (environment-function (si:env-parent env) fn))))) - -(defun environment-macro (env macro) - (if (null env) - (values nil nil) - (let ((entry (assoc macro (si:env-functions env) :test #'equal))) - (if (and entry - (listp (cadr entry)) - (eq (caadr entry) 'special)) - (values (cadadr entry) t) - (environment-macro (si:env-parent env) macro))))) - -);#+Genera - -#+Cloe-Runtime -(progn - -(defmacro with-augmented-environment - ((new-env old-env &key functions macros) &body body) - `(let ((,new-env (with-augmented-environment-internal ,old-env ,functions ,macros))) - ,@body)) - -(defun with-augmented-environment-internal (env functions macros) - functions - (dolist (m macros) - (setf env `(,(first m) (compiler::macro . ,(second m)) ,@env))) - env) - -(defun environment-function (env fn) - nil) - -(defun environment-macro (env macro) - (let ((entry (getf env macro))) - (if (and (consp entry) - (eq (car entry) 'compiler::macro)) - (values (cdr entry) t) - (values nil nil)))) - -);#+Cloe-Runtime - - -;;; -;;; In Xerox Lisp, the compiler and interpreter use different structures for -;;; the environment. This doesn't cause a serious problem, the parts of the -;;; environments we are concerned with are fairly similar. -;;; -#+:Xerox -(progn - -(defmacro with-augmented-environment - ((new-env old-env &key functions macros) &body body) - `(let* ((,new-env (with-augmented-environment-internal ,old-env - ,functions - ,macros))) - ,@body)) - -;;; -;;; with-augmented-environment-internal is where the real work of augmenting -;;; the environment happens. Before it gets there, env had better not be NIL -;;; anymore because we have to know what kind of environment we are supposed -;;; to be building up. This is probably never a real concern in practice. -;;; It better not be because we don't do anything about it. -;;; -(defun with-augmented-environment-internal (env functions macros) - (cond - ((compiler::env-p env) - (dolist (f functions) - (setq env (compiler::copy-env-with-function - env f :function))) - (dolist (m macros) - (setq env (compiler::copy-env-with-function - env (car m) :macro (cadr m))))) - (t (setq env (if (il:environment-p env) - (il:\\copy-environment env) - (il:\\make-environment))) - ;; The functions field of the environment is a plist of function names - ;; and conses like (:function . fn) or (:macro . expansion-fn). - ;; Note that we can't smash existing entries in this plist since these - ;; are likely shared with older environments. - (dolist (f functions) - (setf (il:environment-functions env) - (list* f (cons :function #'unbound-lexical-function) - (il:environment-functions env)))) - (dolist (m macros) - (setf (il:environment-functions env) - (list* (car m) (cons :macro (cadr m)) - (il:environment-functions env)))))) - env) - -(defun environment-function (env fn) - (cond ((compiler::env-p env) (eq (compiler:env-fboundp env fn) :function)) - ((il:environment-p env) (eq (getf (il:environment-functions env) fn) - :function)) - (t nil))) - -(defun environment-macro (env macro) - (cond ((compiler::env-p env) - (multiple-value-bind (type def) - (compiler:env-fboundp env macro) - (when (eq type :macro) def))) - ((il:environment-p env) - (xcl:destructuring-bind (type . def) - (getf (il:environment-functions env) macro) - (when (eq type :macro) def))) - (t nil))) - -);#+:Xerox - - -;;; -;;; In IBUKI Common Lisp, the macroexpansion environment is a three element -;;; list. The second element describes lexical functions and macros. The -;;; function entries in this list have the form -;;; ( . (FUNCTION . ( . nil)) -;;; The macro entries have the form -;;; ( . (MACRO . ( . nil)). -;;; -;;; -#+(or KCL IBCL) -(progn - -(defmacro with-augmented-environment - ((new-env old-env &key functions macros) &body body) - `(let ((,new-env (with-augmented-environment-internal ,old-env - ,functions - ,macros))) - ,@body)) - -(defun with-augmented-environment-internal (env functions macros) - (let ((first (first env)) - (lexicals (second env)) - (third (third env))) - (dolist (f functions) - (push `(,(car f) . (function . (,#'unbound-lexical-function . nil))) - lexicals)) - (dolist (m macros) - (push `(,(car m) . (macro . ( ,(cadr m) . nil))) - lexicals)) - (list first lexicals third))) - -(defun environment-function (env fn) - (when env - (let ((entry (assoc fn (second env)))) - (and entry - (eq (cadr entry) 'function) - (caddr entry))))) - -(defun environment-macro (env macro) - (when env - (let ((entry (assoc macro (second env)))) - (and entry - (eq (cadr entry) 'macro) - (caddr entry))))) -);#+(or KCL IBCL) - - -;;; --- TI Explorer -- - -;;; An environment is a two element list, whose car we can ignore and -;;; whose cadr is list of the local-definitions-frames. Each -;;; local-definitions-frame holds either macros or functions, but not -;;; both. Each frame is a plist of ... where -;;; is a locative to the function cell of the symbol that names -;;; the function or macro, and is the new def or NIL if this is function -;;; redefinition or (cons 'ticl:macro ) if this is a macro -;;; redefinition. -;;; -;;; Here's an example. For the form: -;;; (defun foo () -;;; (macrolet ((bar (a b) (list a b)) -;;; (bar2 (a b) (list a b))) -;;; (flet ((some-local-fn (c d) (print (list c d))) -;;; (another (c d) (print (list c d)))) -;;; (bar (some-local-fn 1 2) 3)))) - -;;; the environment arg to macroexpand-1 when called on -;;; (bar (some-local-fn 1 2) 3) -;;;is -;;;(NIL ((# NIL -;;; # NIL) -;;; (# -;;; (TICL:MACRO TICL:NAMED-LAMBDA (BAR (:DESCRIPTIVE-ARGLIST (A B))) -;;; (SYS::*MACROARG* &OPTIONAL SYS::*MACROENVIRONMENT*) -;;; (BLOCK BAR ....)) -;;; # -;;; (TICL:MACRO TICL:NAMED-LAMBDA (BAR2 (:DESCRIPTIVE-ARGLIST (A B))) -;;; (SYS::*MACROARG* &OPTIONAL SYS::*MACROENVIRONMENT*) -;;; (BLOCK BAR2 ....)))) -#+TI -(progn - -;;; from sys:site;macros.lisp -(eval-when (compile load eval) - -(DEFMACRO MACRO-DEF? (thing) - `(AND (CONSP ,thing) (EQ (CAR ,thing) 'TICL::MACRO))) - -;; the following macro generates code to check the 'local' environment -;; for a macro definition for THE SYMBOL . Such a definition would -;; be set up only by a MACROLET. If a macro definition for is -;; found, its expander function is returned. - -(DEFMACRO FIND-LOCAL-DEFINITION (name local-function-environment) - `(IF ,local-function-environment - (LET ((vcell (ticl::LOCF (SYMBOL-FUNCTION ,name)))) - (DOLIST (frame ,local-function-environment) - ;; is nil or a locative - (LET ((value (sys::GET-LOCATION-OR-NIL (ticl::LOCF frame) - vcell))) - (When value (RETURN (CAR value)))))) - nil))) - - -;;;Edited by Reed Hastings 13 Jan 88 16:29 -(defun environment-macro (env macro) - "returns what macro-function would, ie. the expansion function" - ;;some code picked off macroexpand-1 - (let* ((local-definitions (cadr env)) - (local-def (find-local-definition macro local-definitions))) - (if (macro-def? local-def) - (cdr local-def)))) - -;;;Edited by Reed Hastings 13 Jan 88 16:29 -;;;Edited by Reed Hastings 7 Mar 88 19:07 -(defun environment-function (env fn) - (let* ((local-definitions (cadr env))) - (dolist (frame local-definitions) - (let ((val (getf frame - (ticl::locf (symbol-function fn)) - :not-found-marker))) - (cond ((eq val :not-found-marker)) - ((functionp val) (return t)) - ((and (listp val) - (eq (car val) 'ticl::macro)) - (return nil)) - (t - (error "we are confused"))))))) - - -;;;Edited by Reed Hastings 13 Jan 88 16:29 -;;;Edited by Reed Hastings 7 Mar 88 19:07 -(defun with-augmented-environment-internal (env functions macros) - (let ((local-definitions (cadr env)) - (new-local-fns-frame - (mapcan #'(lambda (fn) - (list (ticl:locf (symbol-function (car fn))) - #'unbound-lexical-function)) - functions)) - (new-local-macros-frame - (mapcan #'(lambda (m) - (list (ticl:locf (symbol-function (car m))) (cons 'ticl::macro (cadr m)))) - macros))) - (when new-local-fns-frame - (push new-local-fns-frame local-definitions)) - (when new-local-macros-frame - (push new-local-macros-frame local-definitions)) - `(,(car env) ,local-definitions))) - - -;;;Edited by Reed Hastings 7 Mar 88 19:07 -(defmacro with-augmented-environment - ((new-env old-env &key functions macros) &body body) - `(let ((,new-env (with-augmented-environment-internal ,old-env - ,functions - ,macros))) - ,@body)) - -);#+TI - - -#+(and dec vax common) -(progn - -(defmacro with-augmented-environment - ((new-env old-env &key functions macros) &body body) - `(let ((,new-env (with-augmented-environment-internal ,old-env - ,functions - ,macros))) - ,@body)) - -(defun with-augmented-environment-internal (env functions macros) - #'(lambda (op &optional (arg nil arg-p)) - (cond ((eq op :macro-function) - (unless arg-p (error "Invalid environment use.")) - (lookup-macro-function arg env functions macros)) - (arg-p - (error "Invalid environment operation: ~S ~S" op arg)) - (t - (lookup-macro-function op env functions macros))))) - -(defun lookup-macro-function (name env fns macros) - (let ((m (assoc name macros))) - (cond (m (cadr m)) - ((assoc name fns) :function) - (env (funcall env name)) - (t nil)))) - -(defun environment-macro (env macro) - (let ((m (and env (funcall env macro)))) - (and (not (eq m :function)) - m))) - -;;; Nobody calls environment-function. What would it return, anyway? -);#+(and dec vax common) - - -;;; -;;; In Golden Common Lisp, the macroexpansion environment is just a list -;;; of environment entries. Unless the car of the list is :compiler-menv -;;; it is an interpreted environment. The cadr of each element specifies -;;; the type of the element. The only types that interest us are GCL:MACRO -;;; and FUNCTION. In these cases the element is interpreted as follows. -;;; -;;; Compiled: -;;; ( macroexpansion-function) -;;; ( ) -;;; -;;; Interpreted: -;;; ( GCL:MACRO macroexpansion-function) -;;; ( ) -;;; -;;; When in the compiler, is a gensym which will be -;;; a variable which bound at run-time to the function. -;;; When in the interpreter, is the actual function. -;;; -;;; -#+gclisp -(progn - -(defmacro with-augmented-environment - ((new-env old-env &key functions macros) &body body) - `(let ((,new-env (with-augmented-environment-internal ,old-env - ,functions - ,macros))) - ,@body)) - -(defun with-augmented-environment-internal (env functions macros) - (let ((new-entries nil)) - (dolist (f functions) - (push (cons (car f) nil) new-entries)) - (dolist (m macros) - (push (cons (car m) - (if (eq :compiler-menv (car env)) - (if (eq (caadr m) 'lisp::lambda) - `(,(gensym) ,(cadr m)) - `(,(gensym) ,@(cadr m))) - `(gclisp:MACRO ,@(cadr m)))) - new-entries)) - (if (eq :compiler-menv (car env)) - `(:compiler-menv ,@new-entries ,@(cdr env)) - (append new-entries env)))) - -(defun environment-function (env fn) - (let ((entry (lisp::lexical-function fn env))) - (and entry - (eq entry 'lisp::lexical-function) - fn))) - -(defun environment-macro (env macro) - (let ((entry (assoc macro (if (eq :compiler-menv (first env)) - (rest env) - env)))) - (and entry - (consp entry) - (symbolp (car entry)) ;name - (symbolp (cadr entry)) ;gcl:macro or gensym - (nthcdr 2 entry)))) - -);#+gclisp - - - -(defmacro with-new-definition-in-environment - ((new-env old-env macrolet/flet/labels-form) &body body) - (let ((functions (make-symbol "Functions")) - (macros (make-symbol "Macros"))) - `(let ((,functions ()) - (,macros ())) - (ecase (car ,macrolet/flet/labels-form) - ((flet labels) - (dolist (fn (cadr ,macrolet/flet/labels-form)) - (push fn ,functions))) - ((macrolet) - (dolist (mac (cadr ,macrolet/flet/labels-form)) - (push (list (car mac) - (convert-macro-to-lambda (cadr mac) - (cddr mac) - (string (car mac)))) - ,macros)))) - (with-augmented-environment - (,new-env ,old-env :functions ,functions :macros ,macros) - ,@body)))) - -#-Genera -(defun convert-macro-to-lambda (llist body &optional (name "Dummy Macro")) - (let ((gensym (make-symbol name))) - (eval `(defmacro ,gensym ,llist ,@body)) - (macro-function gensym))) - -#+Genera -(defun convert-macro-to-lambda (llist body &optional (name "Dummy Macro")) - (si:defmacro-1 - 'sys:named-lambda 'sys:special (make-symbol name) llist body)) - - - - - -;;; -;;; Now comes the real walker. -;;; -;;; As the walker walks over the code, it communicates information to itself -;;; about the walk. This information includes the walk function, variable -;;; bindings, declarations in effect etc. This information is inherently -;;; lexical, so the walker passes it around in the actual environment the -;;; walker passes to macroexpansion functions. This is what makes the -;;; nested-walk-form facility work properly. -;;; -(defmacro walker-environment-bind ((var env &rest key-args) - &body body) - `(with-augmented-environment - (,var ,env :macros (walker-environment-bind-1 ,env ,.key-args)) - .,body)) - -(defvar *key-to-walker-environment* (gensym)) - -(defun env-lock (env) - (environment-macro env *key-to-walker-environment*)) - -(defun walker-environment-bind-1 (env &key (walk-function nil wfnp) - (walk-form nil wfop) - (declarations nil decp) - (lexical-variables nil lexp)) - (let ((lock (environment-macro env *key-to-walker-environment*))) - (list - (list *key-to-walker-environment* - (list (if wfnp walk-function (car lock)) - (if wfop walk-form (cadr lock)) - (if decp declarations (caddr lock)) - (if lexp lexical-variables (cadddr lock))))))) - -(defun env-walk-function (env) - (car (env-lock env))) - -(defun env-walk-form (env) - (cadr (env-lock env))) - -(defun env-declarations (env) - (caddr (env-lock env))) - -(defun env-lexical-variables (env) - (cadddr (env-lock env))) - - -(defun note-declaration (declaration env) - (let ((lock (env-lock env))) - (setf (caddr lock) - (cons declaration (caddr lock))))) - -(defun note-lexical-binding (thing env) - (let ((lock (env-lock env))) - (setf (cadddr lock) - (cons thing (cadddr lock))))) - - -(defun VARIABLE-LEXICAL-P (var env) - (member var (env-lexical-variables env))) - -(defvar *VARIABLE-DECLARATIONS* '(special)) - -(defun VARIABLE-DECLARATION (declaration var env) - (if (not (member declaration *variable-declarations*)) - (error "~S is not a reckognized variable declaration." declaration) - (let ((id (or (member var (env-lexical-variables env)) var))) - (dolist (decl (env-declarations env)) - (when (and (eq (car decl) declaration) - (eq (cadr decl) id)) - (return decl)))))) - -(defun VARIABLE-SPECIAL-P (var env) - (or (not (null (variable-declaration 'special var env))) - (variable-globally-special-p var))) - -;;; -;;; VARIABLE-GLOBALLY-SPECIAL-P is used to ask if a variable has been -;;; declared globally special. Any particular CommonLisp implementation -;;; should customize this function accordingly and send their customization -;;; back. -;;; -;;; The default version of variable-globally-special-p is probably pretty -;;; slow, so it uses *globally-special-variables* as a cache to remember -;;; variables that it has already figured out are globally special. -;;; -;;; This would need to be reworked if an unspecial declaration got added to -;;; Common Lisp. -;;; -;;; Common Lisp nit: -;;; variable-globally-special-p should be defined in Common Lisp. -;;; -#-(or Genera Cloe-Runtime Lucid Xerox Excl KCL IBCL (and dec vax common) :CMU HP-HPLabs - GCLisp TI pyramid) -(defvar *globally-special-variables* ()) - -(defun variable-globally-special-p (symbol) - #+Genera (si:special-variable-p symbol) - #+Cloe-Runtime (compiler::specialp symbol) - #+Lucid (lucid::proclaimed-special-p symbol) - #+TI (get symbol 'special) - #+Xerox (il:variable-globally-special-p symbol) - #+(and dec vax common) (get symbol 'system::globally-special) - #+(or KCL IBCL) (si:specialp symbol) - #+excl (get symbol 'excl::.globally-special.) - #+:CMU (or (get symbol 'lisp::globally-special) - (get symbol - 'clc::globally-special-in-compiler)) - #+HP-HPLabs (member (get symbol 'impl:vartype) - '(impl:fluid impl:global) - :test #'eq) - #+:GCLISP (gclisp::special-p symbol) - #+pyramid (or (get symbol 'lisp::globally-special) - (get symbol - 'clc::globally-special-in-compiler)) - #+:CORAL (ccl::proclaimed-special-p symbol) - #-(or Genera Cloe-Runtime Lucid Xerox Excl KCL IBCL (and dec vax common) :CMU HP-HPLabs - GCLisp TI pyramid :CORAL) - (or (not (null (member symbol *globally-special-variables* :test #'eq))) - (when (eval `(flet ((ref () ,symbol)) - (let ((,symbol '#,(list nil))) - (and (boundp ',symbol) (eq ,symbol (ref)))))) - (push symbol *globally-special-variables*) - t))) - - - ;; -;;;;;; Handling of special forms (the infamous 24). - ;; -;;; -;;; and I quote... -;;; -;;; The set of special forms is purposely kept very small because -;;; any program analyzing program (read code walker) must have -;;; special knowledge about every type of special form. Such a -;;; program needs no special knowledge about macros... -;;; -;;; So all we have to do here is a define a way to store and retrieve -;;; templates which describe how to walk the 24 special forms and we are all -;;; set... -;;; -;;; Well, its a nice concept, and I have to admit to being naive enough that -;;; I believed it for a while, but not everyone takes having only 24 special -;;; forms as seriously as might be nice. There are (at least) 3 ways to -;;; lose: -;; -;;; 1 - Implementation x implements a Common Lisp special form as a macro -;;; which expands into a special form which: -;;; - Is a common lisp special form (not likely) -;;; - Is not a common lisp special form (on the 3600 IF --> COND). -;;; -;;; * We can safe ourselves from this case (second subcase really) by -;;; checking to see if there is a template defined for something -;;; before we check to see if we we can macroexpand it. -;;; -;;; 2 - Implementation x implements a Common Lisp macro as a special form. -;;; -;;; * This is a screw, but not so bad, we save ourselves from it by -;;; defining extra templates for the macros which are *likely* to -;;; be implemented as special forms. (DO, DO* ...) -;;; -;;; 3 - Implementation x has a special form which is not on the list of -;;; Common Lisp special forms. -;;; -;;; * This is a bad sort of a screw and happens more than I would like -;;; to think, especially in the implementations which provide more -;;; than just Common Lisp (3600, Xerox etc.). -;;; The fix is not terribly staisfactory, but will have to do for -;;; now. There is a hook in get walker-template which can get a -;;; template from the implementation's own walker. That template -;;; has to be converted, and so it may be that the right way to do -;;; this would actually be for that implementation to provide an -;;; interface to its walker which looks like the interface to this -;;; walker. -;;; - -(eval-when (compile load eval) - -(defmacro get-walker-template-internal (x) ;Has to be inside eval-when because - `(get ,x 'walker-template)) ;Golden Common Lisp doesn't hack - ;compile time definition of macros - ;right for setf. - -(defmacro define-walker-template - (name &optional (template '(nil repeat (eval)))) - `(eval-when (load eval) - (setf (get-walker-template-internal ',name) ',template))) -) - -(defun get-walker-template (x) - (cond ((symbolp x) - (or (get-walker-template-internal x) - (get-implementation-dependent-walker-template x))) - ((and (listp x) (eq (car x) 'lambda)) - '(lambda repeat (eval))) - (t - (error "Can't get template for ~S" x)))) - -(defun get-implementation-dependent-walker-template (x) - (declare (ignore x)) - ()) - - - ;; -;;;;;; The actual templates - ;; - -(define-walker-template BLOCK (NIL NIL REPEAT (EVAL))) -(define-walker-template CATCH (NIL EVAL REPEAT (EVAL))) -(define-walker-template COMPILER-LET walk-compiler-let) -(define-walker-template DECLARE walk-unexpected-declare) -(define-walker-template EVAL-WHEN (NIL QUOTE REPEAT (EVAL))) -(define-walker-template FLET walk-flet) -(define-walker-template FUNCTION (NIL CALL)) -(define-walker-template GO (NIL QUOTE)) -(define-walker-template IF walk-if) -(define-walker-template LABELS walk-labels) -(define-walker-template LAMBDA walk-lambda) -(define-walker-template LET walk-let) -(define-walker-template LET* walk-let*) -(define-walker-template MACROLET walk-macrolet) -(define-walker-template MULTIPLE-VALUE-CALL (NIL EVAL REPEAT (EVAL))) -(define-walker-template MULTIPLE-VALUE-PROG1 (NIL RETURN REPEAT (EVAL))) -(define-walker-template MULTIPLE-VALUE-SETQ (NIL (REPEAT (SET)) EVAL)) -(define-walker-template MULTIPLE-VALUE-BIND walk-multiple-value-bind) -(define-walker-template PROGN (NIL REPEAT (EVAL))) -(define-walker-template PROGV (NIL EVAL EVAL REPEAT (EVAL))) -(define-walker-template QUOTE (NIL QUOTE)) -(define-walker-template RETURN-FROM (NIL QUOTE REPEAT (RETURN))) -(define-walker-template SETQ (NIL REPEAT (SET EVAL))) -(define-walker-template TAGBODY walk-tagbody) -(define-walker-template THE (NIL QUOTE EVAL)) -(define-walker-template THROW (NIL EVAL EVAL)) -(define-walker-template UNWIND-PROTECT (NIL RETURN REPEAT (EVAL))) - -;;; The new special form. -;(define-walker-template clos::LOAD-TIME-EVAL (NIL EVAL)) - -;;; -;;; And the extra templates... -;;; -(define-walker-template DO walk-do) -(define-walker-template DO* walk-do*) -(define-walker-template PROG walk-prog) -(define-walker-template PROG* walk-prog*) -(define-walker-template COND (NIL REPEAT ((TEST REPEAT (EVAL))))) - -#+Genera -(progn - (define-walker-template zl::named-lambda walk-named-lambda) - (define-walker-template SCL:LETF walk-let) - (define-walker-template SCL:LETF* walk-let*) - ) - -#+Lucid -(progn - (define-walker-template #+LCL3.0 lucid-common-lisp:named-lambda - #-LCL3.0 sys:named-lambda walk-named-lambda) - ) - -#+(or KCL IBCL) -(progn - (define-walker-template lambda-block walk-named-lambda);Not really right, - ;we don't hack block - ;names anyways. - ) - -#+TI -(progn - (define-walker-template TICL::LET-IF walk-let-if) - ) - -#+:Coral -(progn - (define-walker-template ccl:%stack-block walk-let) - ) - - - -(defun WALK-FORM (form - &optional environment - (walk-function - #'(lambda (subform context env) - (declare (ignore context env)) - subform))) - (walker-environment-bind (new-env environment :walk-function walk-function) - (walk-form-internal form :eval new-env))) - -;;; -;;; nested-walk-form provides an interface that allows nested macros, each -;;; of which must walk their body to just do one walk of the body of the -;;; inner macro. That inner walk is done with a walk function which is the -;;; composition of the two walk functions. -;;; -;;; This facility works by having the walker annotate the environment that -;;; it passes to macroexpand-1 to know which form is being macroexpanded. -;;; If then the &whole argument to the macroexpansion function is eq to -;;; the env-walk-form of the environment, nested-walk-form can be certain -;;; that there are no intervening layers and that a nested walk is alright. -;;; -;;; There are some semantic problems with this facility. In particular, if -;;; the outer walk function returns T as its walk-no-more-p value, this will -;;; prevent the inner walk function from getting a chance to walk the subforms -;;; of the form. This is almost never what you want, since it destroys the -;;; equivalence between this nested-walk-form function and two seperate -;;; walk-forms. -;;; -(defun NESTED-WALK-FORM (whole - form - &optional environment - (walk-function - #'(lambda (subform context env) - (declare (ignore context env)) - subform))) - (if (eq whole (env-walk-form environment)) - (let ((outer-walk-function (env-walk-function environment))) - (throw whole - (walk-form - form - environment - #'(lambda (f c e) - ;; First loop to make sure the inner walk function - ;; has done all it wants to do with this form. - ;; Basically, what we are doing here is providing - ;; the same contract walk-form-internal normally - ;; provides to the inner walk function. - (let ((inner-result nil) - (inner-no-more-p nil) - (outer-result nil) - (outer-no-more-p nil)) - (loop - (multiple-value-setq (inner-result inner-no-more-p) - (funcall walk-function f c e)) - (cond (inner-no-more-p (return)) - ((not (eq inner-result f))) - ((not (consp inner-result)) (return)) - ((get-walker-template (car inner-result)) (return)) - (t - (multiple-value-bind (expansion macrop) - (walker-environment-bind - (new-env e :walk-form inner-result) - (macroexpand-1 inner-result new-env)) - (if macrop - (setq inner-result expansion) - (return))))) - (setq f inner-result)) - (multiple-value-setq (outer-result outer-no-more-p) - (funcall outer-walk-function - inner-result - c - e)) - (values outer-result - (and inner-no-more-p outer-no-more-p))))))) - (walk-form form environment walk-function))) - -;;; -;;; WALK-FORM-INTERNAL is the main driving function for the code walker. It -;;; takes a form and the current context and walks the form calling itself or -;;; the appropriate template recursively. -;;; -;;; "It is recommended that a program-analyzing-program process a form -;;; that is a list whose car is a symbol as follows: -;;; -;;; 1. If the program has particular knowledge about the symbol, -;;; process the form using special-purpose code. All of the -;;; standard special forms should fall into this category. -;;; 2. Otherwise, if macro-function is true of the symbol apply -;;; either macroexpand or macroexpand-1 and start over. -;;; 3. Otherwise, assume it is a function call. " -;;; - -(defun walk-form-internal (form context env - &aux newform newnewform - walk-no-more-p macrop - fn template) - ;; First apply the walk-function to perform whatever translation - ;; the user wants to this form. If the second value returned - ;; by walk-function is T then we don't recurse... - (catch form - (multiple-value-setq (newform walk-no-more-p) - (funcall (env-walk-function env) form context env)) - (catch newform - (cond (walk-no-more-p newform) - ((not (eq form newform)) - (walk-form-internal newform context env)) - ((not (consp newform)) newform) - ((setq template (get-walker-template (setq fn (car newform)))) - (if (symbolp template) - (funcall template newform context env) - (walk-template newform template context env))) - (t - (multiple-value-setq (newnewform macrop) - (walker-environment-bind (new-env env :walk-form newform) - (macroexpand-1 newform new-env))) - (cond (macrop (walk-form-internal newnewform context env)) - ((and (symbolp fn) - (not (fboundp fn)) - (special-form-p fn)) - (error - "~S is a special form, not defined in the CommonLisp.~%~ - manual This code walker doesn't know how to walk it.~%~ - Define a template for this special form and try again." - fn)) - (t - ;; Otherwise, walk the form as if its just a standard - ;; functioncall using a template for standard function - ;; call. - (walk-template - newnewform '(call repeat (eval)) context env)))))))) - -(defun walk-template (form template context env) - (if (atom template) - (ecase template - ((EVAL FUNCTION TEST EFFECT RETURN) - (walk-form-internal form :EVAL env)) - ((QUOTE NIL) form) - (SET - (walk-form-internal form :SET env)) - ((LAMBDA CALL) - (cond ((symbolp form) form) - #+Lispm - ((sys:validate-function-spec form) form) - (t (walk-form-internal form context env))))) - (case (car template) - (REPEAT - (walk-template-handle-repeat form - (cdr template) - ;; For the case where nothing happens - ;; after the repeat optimize out the - ;; call to length. - (if (null (cddr template)) - () - (nthcdr (- (length form) - (length - (cddr template))) - form)) - context - env)) - (IF - (walk-template form - (if (if (listp (cadr template)) - (eval (cadr template)) - (funcall (cadr template) form)) - (caddr template) - (cadddr template)) - context - env)) - (REMOTE - (walk-template form (cadr template) context env)) - (otherwise - (cond ((atom form) form) - (t (recons form - (walk-template - (car form) (car template) context env) - (walk-template - (cdr form) (cdr template) context env)))))))) - -(defun walk-template-handle-repeat (form template stop-form context env) - (if (eq form stop-form) - (walk-template form (cdr template) context env) - (walk-template-handle-repeat-1 form - template - (car template) - stop-form - context - env))) - -(defun walk-template-handle-repeat-1 (form template repeat-template - stop-form context env) - (cond ((null form) ()) - ((eq form stop-form) - (if (null repeat-template) - (walk-template stop-form (cdr template) context env) - (error "While handling repeat: - ~%~Ran into stop while still in repeat template."))) - ((null repeat-template) - (walk-template-handle-repeat-1 - form template (car template) stop-form context env)) - (t - (recons form - (walk-template (car form) (car repeat-template) context env) - (walk-template-handle-repeat-1 (cdr form) - template - (cdr repeat-template) - stop-form - context - env))))) - -(defun walk-repeat-eval (form env) - (and form - (recons form - (walk-form-internal (car form) :eval env) - (walk-repeat-eval (cdr form) env)))) - -(defun recons (x car cdr) - (if (or (not (eq (car x) car)) - (not (eq (cdr x) cdr))) - (cons car cdr) - x)) - -(defun relist (x &rest args) - (relist-internal x args nil)) - -(defun relist* (x &rest args) - (relist-internal x args 't)) - -(defun relist-internal (x args *p) - (if (null (cdr args)) - (if *p (car args) (list (car args))) - (recons x - (car args) - (relist-internal (cdr x) (cdr args) *p)))) - - - ;; -;;;;;; Special walkers - ;; - -(defun walk-declarations (body fn env - &optional doc-string-p declarations old-body - &aux (form (car body)) macrop new-form) - (cond ((and (stringp form) ;might be a doc string - (cdr body) ;isn't the returned value - (null doc-string-p) ;no doc string yet - (null declarations)) ;no declarations yet - (recons body - form - (walk-declarations (cdr body) fn env t))) - ((and (listp form) (eq (car form) 'declare)) - ;; Got ourselves a real live declaration. Record it, look for more. - (dolist (declaration (cdr form)) - (let ((type (car declaration)) - (name (cadr declaration)) - (args (cddr declaration))) - (if (member type *variable-declarations*) - (note-declaration `(,type - ,(or (variable-lexical-p name env) name) - ,.args) - env) - (note-declaration declaration env)) - (push declaration declarations))) - (recons body - form - (walk-declarations - (cdr body) fn env doc-string-p declarations))) - ((and form - (listp form) - (null (get-walker-template (car form))) - (progn - (multiple-value-setq (new-form macrop) - (macroexpand-1 form env)) - macrop)) - ;; This form was a call to a macro. Maybe it expanded - ;; into a declare? Recurse to find out. - (walk-declarations (recons body new-form (cdr body)) - fn env doc-string-p declarations - (or old-body body))) - (t - ;; Now that we have walked and recorded the declarations, - ;; call the function our caller provided to expand the body. - ;; We call that function rather than passing the real-body - ;; back, because we are RECONSING up the new body. - (funcall fn (or old-body body) env)))) - - -(defun walk-unexpected-declare (form context env) - (declare (ignore context env)) - (warn "Encountered declare ~S in a place where a declare was not expected." - form) - form) - -(defun walk-arglist (arglist context env &optional (destructuringp nil) - &aux arg) - (cond ((null arglist) ()) - ((symbolp (setq arg (car arglist))) - (or (member arg lambda-list-keywords) - (note-lexical-binding arg env)) - (recons arglist - arg - (walk-arglist (cdr arglist) - context - env - (and destructuringp - (not (member arg - lambda-list-keywords)))))) - ((consp arg) - (prog1 (if destructuringp - (walk-arglist arg context env destructuringp) - (recons arglist - (relist* arg - (car arg) - (walk-form-internal (cadr arg) :eval env) - (cddr arg)) - (walk-arglist (cdr arglist) context env nil))) - (if (symbolp (car arg)) - (note-lexical-binding (car arg) env) - (note-lexical-binding (cadar arg) env)) - (or (null (cddr arg)) - (not (symbolp (caddr arg))) - (note-lexical-binding (caddr arg) env)))) - (t - (error "Can't understand something in the arglist ~S" arglist)))) - -(defun walk-let (form context env) - (walk-let/let* form context env nil)) - -(defun walk-let* (form context env) - (walk-let/let* form context env t)) - -(defun walk-prog (form context env) - (walk-prog/prog* form context env nil)) - -(defun walk-prog* (form context env) - (walk-prog/prog* form context env t)) - -(defun walk-do (form context env) - (walk-do/do* form context env nil)) - -(defun walk-do* (form context env) - (walk-do/do* form context env t)) - -(defun walk-let/let* (form context old-env sequentialp) - (walker-environment-bind (new-env old-env) - (let* ((let/let* (car form)) - (bindings (cadr form)) - (body (cddr form)) - (walked-bindings - (walk-bindings-1 bindings - old-env - new-env - context - sequentialp)) - (walked-body - (walk-declarations body #'walk-repeat-eval new-env))) - (relist* - form let/let* walked-bindings walked-body)))) - -(defun walk-prog/prog* (form context old-env sequentialp) - (walker-environment-bind (new-env old-env) - (let* ((possible-block-name (second form)) - (blocked-prog (and (symbolp possible-block-name) - (not (eq possible-block-name 'nil))))) - (multiple-value-bind (let/let* block-name bindings body) - (if blocked-prog - (values (car form) (cadr form) (caddr form) (cdddr form)) - (values (car form) nil (cadr form) (cddr form))) - (let* ((walked-bindings - (walk-bindings-1 bindings - old-env - new-env - context - sequentialp)) - (walked-body - (walk-declarations - body - #'(lambda (real-body real-env) - (walk-tagbody-1 real-body context real-env)) - new-env))) - (if block-name - (relist* - form let/let* block-name walked-bindings walked-body) - (relist* - form let/let* walked-bindings walked-body))))))) - -(defun walk-do/do* (form context old-env sequentialp) - (walker-environment-bind (new-env old-env) - (let* ((do/do* (car form)) - (bindings (cadr form)) - (end-test (caddr form)) - (body (cdddr form)) - (walked-bindings (walk-bindings-1 bindings - old-env - new-env - context - sequentialp)) - (walked-body - (walk-declarations body #'walk-repeat-eval new-env))) - (relist* form - do/do* - (walk-bindings-2 bindings walked-bindings context new-env) - (walk-template end-test '(test repeat (eval)) context new-env) - walked-body)))) - -(defun walk-let-if (form context env) - (let ((test (cadr form)) - (bindings (caddr form)) - (body (cdddr form))) - (walk-form-internal - `(let () - (declare (special ,@(mapcar #'(lambda (x) (if (listp x) (car x) x)) - bindings))) - (flet ((.let-if-dummy. () ,@body)) - (if ,test - (let ,bindings (.let-if-dummy.)) - (.let-if-dummy.)))) - context - env))) - -(defun walk-multiple-value-bind (form context old-env) - (walker-environment-bind (new-env old-env) - (let* ((mvb (car form)) - (bindings (cadr form)) - (mv-form (walk-template (caddr form) 'eval context old-env)) - (body (cdddr form)) - walked-bindings - (walked-body - (walk-declarations - body - #'(lambda (real-body real-env) - (setq walked-bindings - (walk-bindings-1 bindings - old-env - new-env - context - nil)) - (walk-repeat-eval real-body real-env)) - new-env))) - (relist* form mvb walked-bindings mv-form walked-body)))) - -(defun walk-bindings-1 (bindings old-env new-env context sequentialp) - (and bindings - (let ((binding (car bindings))) - (recons bindings - (if (symbolp binding) - (prog1 binding - (note-lexical-binding binding new-env)) - (prog1 (relist* binding - (car binding) - (walk-form-internal (cadr binding) - context - (if sequentialp - new-env - old-env)) - (cddr binding)) ;save cddr for DO/DO* - ;it is the next value - ;form. Don't walk it - ;now though. - (note-lexical-binding (car binding) new-env))) - (walk-bindings-1 (cdr bindings) - old-env - new-env - context - sequentialp))))) - -(defun walk-bindings-2 (bindings walked-bindings context env) - (and bindings - (let ((binding (car bindings)) - (walked-binding (car walked-bindings))) - (recons bindings - (if (symbolp binding) - binding - (relist* binding - (car walked-binding) - (cadr walked-binding) - (walk-template (cddr binding) - '(eval) - context - env))) - (walk-bindings-2 (cdr bindings) - (cdr walked-bindings) - context - env))))) - -(defun walk-lambda (form context old-env) - (walker-environment-bind (new-env old-env) - (let* ((arglist (cadr form)) - (body (cddr form)) - (walked-arglist (walk-arglist arglist context new-env)) - (walked-body - (walk-declarations body #'walk-repeat-eval new-env))) - (relist* form - (car form) - walked-arglist - walked-body)))) - -(defun walk-named-lambda (form context old-env) - (walker-environment-bind (new-env old-env) - (let* ((name (cadr form)) - (arglist (caddr form)) - (body (cdddr form)) - (walked-arglist (walk-arglist arglist context new-env)) - (walked-body - (walk-declarations body #'walk-repeat-eval new-env))) - (relist* form - (car form) - name - walked-arglist - walked-body)))) - -(defun walk-tagbody (form context env) - (recons form (car form) (walk-tagbody-1 (cdr form) context env))) - -(defun walk-tagbody-1 (form context env) - (and form - (recons form - (walk-form-internal (car form) - (if (symbolp (car form)) 'quote context) - env) - (walk-tagbody-1 (cdr form) context env)))) - -(defun walk-compiler-let (form context old-env) - (declare (ignore context)) - (let ((vars ()) - (vals ())) - (dolist (binding (cadr form)) - (cond ((symbolp binding) (push binding vars) (push nil vals)) - (t - (push (car binding) vars) - (push (eval (cadr binding)) vals)))) - (relist* form - (car form) - (cadr form) - (progv vars vals (walk-repeat-eval (cddr form) old-env))))) - -(defun walk-macrolet (form context old-env) - (walker-environment-bind (macro-env - nil - :walk-function (env-walk-function old-env)) - (labels ((walk-definitions (definitions) - (and definitions - (let ((definition (car definitions))) - (recons definitions - (relist* definition - (car definition) - (walk-arglist (cadr definition) - context - macro-env - t) - (walk-declarations (cddr definition) - #'walk-repeat-eval - macro-env)) - (walk-definitions (cdr definitions))))))) - (with-new-definition-in-environment (new-env old-env form) - (relist* form - (car form) - (walk-definitions (cadr form)) - (walk-declarations (cddr form) - #'walk-repeat-eval - new-env)))))) - -(defun walk-flet (form context old-env) - (labels ((walk-definitions (definitions) - (if (null definitions) - () - (recons definitions - (walk-lambda (car definitions) context old-env) - (walk-definitions (cdr definitions)))))) - (recons form - (car form) - (recons (cdr form) - (walk-definitions (cadr form)) - (with-new-definition-in-environment (new-env old-env form) - (walk-declarations (cddr form) - #'walk-repeat-eval - new-env)))))) - -(defun walk-labels (form context old-env) - (with-new-definition-in-environment (new-env old-env form) - (labels ((walk-definitions (definitions) - (if (null definitions) - () - (recons definitions - (walk-lambda (car definitions) context new-env) - (walk-definitions (cdr definitions)))))) - (recons form - (car form) - (recons (cdr form) - (walk-definitions (cadr form)) - (walk-declarations (cddr form) - #'walk-repeat-eval - new-env)))))) - -(defun walk-if (form context env) - (let ((predicate (cadr form)) - (arm1 (caddr form)) - (arm2 - (if (cddddr form) - (progn - (warn "In the form:~%~S~%~ - IF only accepts three arguments, you are using ~D.~%~ - It is true that some Common Lisps support this, but ~ - it is not~%~ - truly legal Common Lisp. For now, this code ~ - walker is interpreting ~%~ - the extra arguments as extra else clauses. ~ - Even if this is what~%~ - you intended, you should fix your source code." - form - (length (cdr form))) - (cons 'progn (cdddr form))) - (cadddr form)))) - (relist form - 'if - (walk-form-internal predicate context env) - (walk-form-internal arm1 context env) - (walk-form-internal arm2 context env)))) - - -;;; -;;; Tests tests tests -;;; - -#| -;;; -;;; Here are some examples of the kinds of things you should be able to do -;;; with your implementation of the macroexpansion environment hacking -;;; mechanism. -;;; -;;; with-lexical-macros is kind of like macrolet, but it only takes names -;;; of the macros and actual macroexpansion functions to use to macroexpand -;;; them. The win about that is that for macros which want to wrap several -;;; macrolets around their body, they can do this but have the macroexpansion -;;; functions be compiled. See the WITH-RPUSH example. -;;; -;;; If the implementation had a special way of communicating the augmented -;;; environment back to the evaluator that would be totally great. It would -;;; mean that we could just augment the environment then pass control back -;;; to the implementations own compiler or interpreter. We wouldn't have -;;; to call the actual walker. That would make this much faster. Since the -;;; principal client of this is defmethod it would make compiling defmethods -;;; faster and that would certainly be a win. -;;; -(defmacro with-lexical-macros (macros &body body &environment old-env) - (with-augmented-environment (new-env old-env :macros macros) - (walk-form (cons 'progn body) :environment new-env))) - -(defun expand-rpush (form env) - `(push ,(caddr form) ,(cadr form))) - -(defmacro with-rpush (&body body) - `(with-lexical-macros ,(list (list 'rpush #'expand-rpush)) ,@body)) - - -;;; -;;; Unfortunately, I don't have an automatic tester for the walker. -;;; Instead there is this set of test cases with a description of -;;; how each one should go. -;;; -(defmacro take-it-out-for-a-test-walk (form) - `(take-it-out-for-a-test-walk-1 ',form)) - -(defun take-it-out-for-a-test-walk-1 (form) - (terpri) - (terpri) - (let ((copy-of-form (copy-tree form)) - (result (walk-form form nil - #'(lambda (x y env) - (format t "~&Form: ~S ~3T Context: ~A" x y) - (when (symbolp x) - (let ((lexical (variable-lexical-p x env)) - (special (variable-special-p x env))) - (when lexical - (format t ";~3T") - (format t "lexically bound")) - (when special - (format t ";~3T") - (format t "declared special")) - (when (boundp x) - (format t ";~3T") - (format t "bound: ~S " (eval x))))) - x)))) - (cond ((not (equal result copy-of-form)) - (format t "~%Warning: Result not EQUAL to copy of start.")) - ((not (eq result form)) - (format t "~%Warning: Result not EQ to copy of start."))) - (pprint result) - result)) - -(defmacro foo (&rest ignore) ''global-foo) - -(defmacro bar (&rest ignore) ''global-bar) - -(take-it-out-for-a-test-walk (list arg1 arg2 arg3)) -(take-it-out-for-a-test-walk (list (cons 1 2) (list 3 4 5))) - -(take-it-out-for-a-test-walk (progn (foo) (bar 1))) - -(take-it-out-for-a-test-walk (block block-name a b c)) -(take-it-out-for-a-test-walk (block block-name (list a) b c)) - -(take-it-out-for-a-test-walk (catch catch-tag (list a) b c)) -;;; -;;; This is a fairly simple macrolet case. While walking the body of the -;;; macro, x should be lexically bound. In the body of the macrolet form -;;; itself, x should not be bound. -;;; -(take-it-out-for-a-test-walk - (macrolet ((foo (x) (list x) ''inner)) - x - (foo 1))) - -;;; -;;; A slightly more complex macrolet case. In the body of the macro x -;;; should not be lexically bound. In the body of the macrolet form itself -;;; x should be bound. Note that THIS CASE WILL CAUSE AN ERROR when it -;;; tries to macroexpand the call to foo. -;;; -(take-it-out-for-a-test-walk - (let ((x 1)) - (macrolet ((foo () (list x) ''inner)) - x - (foo)))) - -;;; -;;; A truly hairy use of compiler-let and macrolet. In the body of the -;;; macro x should not be lexically bound. In the body of the macrolet -;;; itself x should not be lexically bound. But the macro should expand -;;; into 1. -;;; -(take-it-out-for-a-test-walk - (compiler-let ((x 1)) - (let ((x 2)) - (macrolet ((foo () x)) - x - (foo))))) - - -(take-it-out-for-a-test-walk - (flet ((foo (x) (list x y)) - (bar (x) (list x y))) - (foo 1))) - -(take-it-out-for-a-test-walk - (let ((y 2)) - (flet ((foo (x) (list x y)) - (bar (x) (list x y))) - (foo 1)))) - -(take-it-out-for-a-test-walk - (labels ((foo (x) (bar x)) - (bar (x) (foo x))) - (foo 1))) - -(take-it-out-for-a-test-walk - (flet ((foo (x) (foo x))) - (foo 1))) - -(take-it-out-for-a-test-walk - (flet ((foo (x) (foo x))) - (flet ((bar (x) (foo x))) - (bar 1)))) - -(take-it-out-for-a-test-walk (compiler-let ((a 1) (b 2)) (foo a) b)) -(take-it-out-for-a-test-walk (prog () (declare (special a b)))) -(take-it-out-for-a-test-walk (let (a b c) - (declare (special a b)) - (foo a) b c)) -(take-it-out-for-a-test-walk (let (a b c) - (declare (special a) (special b)) - (foo a) b c)) -(take-it-out-for-a-test-walk (let (a b c) - (declare (special a)) - (declare (special b)) - (foo a) b c)) -(take-it-out-for-a-test-walk (let (a b c) - (declare (special a)) - (declare (special b)) - (let ((a 1)) - (foo a) b c))) -(take-it-out-for-a-test-walk (eval-when () - a - (foo a))) -(take-it-out-for-a-test-walk (eval-when (eval when load) - a - (foo a))) - -(take-it-out-for-a-test-walk (multiple-value-bind (a b) (foo a b) (list a b))) -(take-it-out-for-a-test-walk (multiple-value-bind (a b) - (foo a b) - (declare (special a)) - (list a b))) -(take-it-out-for-a-test-walk (progn (function foo))) -(take-it-out-for-a-test-walk (progn a b (go a))) -(take-it-out-for-a-test-walk (if a b c)) -(take-it-out-for-a-test-walk (if a b)) -(take-it-out-for-a-test-walk ((lambda (a b) (list a b)) 1 2)) -(take-it-out-for-a-test-walk ((lambda (a b) (declare (special a)) (list a b)) - 1 2)) -(take-it-out-for-a-test-walk (let ((a a) (b a) (c b)) (list a b c))) -(take-it-out-for-a-test-walk (let* ((a a) (b a) (c b)) (list a b c))) -(take-it-out-for-a-test-walk (let ((a a) (b a) (c b)) - (declare (special a b)) - (list a b c))) -(take-it-out-for-a-test-walk (let* ((a a) (b a) (c b)) - (declare (special a b)) - (list a b c))) -(take-it-out-for-a-test-walk (let ((a 1) (b 2)) - (foo bar) - (declare (special a)) - (foo a b))) -(take-it-out-for-a-test-walk (multiple-value-call #'foo a b c)) -(take-it-out-for-a-test-walk (multiple-value-prog1 a b c)) -(take-it-out-for-a-test-walk (progn a b c)) -(take-it-out-for-a-test-walk (progv vars vals a b c)) -(take-it-out-for-a-test-walk (quote a)) -(take-it-out-for-a-test-walk (return-from block-name a b c)) -(take-it-out-for-a-test-walk (setq a 1)) -(take-it-out-for-a-test-walk (setq a (foo 1) b (bar 2) c 3)) -(take-it-out-for-a-test-walk (tagbody a b c (go a))) -(take-it-out-for-a-test-walk (the foo (foo-form a b c))) -(take-it-out-for-a-test-walk (throw tag-form a)) -(take-it-out-for-a-test-walk (unwind-protect (foo a b) d e f)) - -(defmacro flet-1 (a b) ''outer) -(defmacro labels-1 (a b) ''outer) - -(take-it-out-for-a-test-walk - (flet ((flet-1 (a b) () (flet-1 a b) (list a b))) - (flet-1 1 2) - (foo 1 2))) -(take-it-out-for-a-test-walk - (labels ((label-1 (a b) () (label-1 a b)(list a b))) - (label-1 1 2) - (foo 1 2))) -(take-it-out-for-a-test-walk (macrolet ((macrolet-1 (a b) (list a b))) - (macrolet-1 a b) - (foo 1 2))) - -(take-it-out-for-a-test-walk (macrolet ((foo (a) `(inner-foo-expanded ,a))) - (foo 1))) - -(take-it-out-for-a-test-walk (progn (bar 1) - (macrolet ((bar (a) - `(inner-bar-expanded ,a))) - (bar 2)))) - -(take-it-out-for-a-test-walk (progn (bar 1) - (macrolet ((bar (s) - (bar s) - `(inner-bar-expanded ,s))) - (bar 2)))) - -(take-it-out-for-a-test-walk (cond (a b) - ((foo bar) a (foo a)))) - - -(let ((the-lexical-variables ())) - (walk-form '(let ((a 1) (b 2)) - #'(lambda (x) (list a b x y))) - () - #'(lambda (form context env) - (when (and (symbolp form) - (variable-lexical-p form env)) - (push form the-lexical-variables)) - form)) - (or (and (= (length the-lexical-variables) 3) - (member 'a the-lexical-variables) - (member 'b the-lexical-variables) - (member 'x the-lexical-variables)) - (error "Walker didn't do lexical variables of a closure properly."))) - -|# - -() diff --git a/obsolete/clos/2.01big/CLOS-BROWSER.TEDIT b/obsolete/clos/2.01big/CLOS-BROWSER.TEDIT deleted file mode 100644 index 21d02b63e25fa40134ff8a7857067c00f8e36a38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28277 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 Go&N`$+@%Nr diff --git a/obsolete/clos/2.01big/NEW-CLOS-BROWSER.DFASL b/obsolete/clos/2.01big/NEW-CLOS-BROWSER.DFASL deleted file mode 100644 index 1add0989dd2b09e754a8bdb6195513ec3a56f8c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61916 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 Gd;bOBLi|1e diff --git a/obsolete/clos/2.01big/boot.dfasl b/obsolete/clos/2.01big/boot.dfasl deleted file mode 100644 index 06971f5f009b1f0323458cd9f5ec007bdbb995e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29346 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 diff --git a/obsolete/clos/2.01big/braid.dfasl b/obsolete/clos/2.01big/braid.dfasl deleted file mode 100644 index 6d0d54fae41c23460832a459f93baa576e091124..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14525 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 z

-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 Aq5uE@ diff --git a/obsolete/clos/2.01big/clos-env.DFASL b/obsolete/clos/2.01big/clos-env.DFASL deleted file mode 100644 index 34289504d87366d81662d09b5ae0b68bf99c675f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42290 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 ActLzvs>GY0e_E3U;2JFa;nVK@ey6Xd)P8(O+n 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 UqnB|QG<*l|{th1goGO#lD@ diff --git a/obsolete/clos/2.01big/compat.dfasl b/obsolete/clos/2.01big/compat.dfasl deleted file mode 100644 index f0bae0578e36014cec236ddfbe01b0285b1b887c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 299 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 diff --git a/obsolete/clos/2.01big/cpl.dfasl b/obsolete/clos/2.01big/cpl.dfasl deleted file mode 100644 index e43341403e335f92c21cc31b8c994a19fdb6c577..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6441 zcma)ATWs6b873)Nwp=?=66aFYPSi$r*DP{ur&$v>a79scD2XCfkxuL+U8>khX3@Ws`uzb9iq5_51&y^IX%gr23@n`RVaYI_JyI6sBhizH`}}FQ1*sji!C);Jxq7 zuo1g(baH&^m4Wo@)7e~MATyqy9?j;`1EZO2exR?rXJB+X(~WPR?`<{ewvOh~sX}_p zcOpGDmClc)-q`Q!JK_tcN7Lue!iBv@jvUpk56?2-PS=ek=5MMGtGRyLZ}Opfh4 z*mK`L*mSVJ=SX+!+WV#VxRxvjKQ}fWu2l5&`U=_UKqmcaI)f~o$BEKUicNzNQhEQJSKBIUn)8!RW~?1^1v&&i8dB($1SgyUSnC-6vyqM{Wh-k z(YF$w-t|oBN^z5_i{U_69*oPTqK8ZK_H~XHm~ugg28qe|9Y88=vw$Kqdmn zq!BqDO3FZHX+Z#zlDck|irc~wxY7(5LkT%a>5>iJftOYYqXZ{Zg8XmCtykDy;)dRX zwgb@}rFV-SJRqXV$S%DZr5$D>rZRmDiC>{F=$JN{Cif`#~b0DmVn6qA8jq2^lr!GDZwj zj<CDq#*;LFmFgzf5t!MIs{`_I0@PERdKRSJS~nvn55R@(k0O+~_rh_W>gfSJ z6a}qpC4Qdx9qpwBXKBGf{2XOMk7%Zxq%Q>0MW0Ul=^|Y_VKM1q|Hjh7E;v_67{ot^ zhk*S_iK_jkzFuMH)ANCQiRgPJN5nwu*XIop!16r18=3=B9CChj>n zWA~#t4J6@VHWZQqmJ6_d8#m z5dl*i72bl2bkAL!BTtj=67&yX|6Ak$_It4Z4C%psF9-d7q<3zP?1z2mdrhJw$%dgP zq3;G44@V@?l;`H=xU1wactun2w`i&!jvR&uPfZr3TXZoy;CKO)PvPn*>If8znCoop z!XZ!KVYc13gM4<&03ad26D0tqJZJ>aTy^k}c;uv{xV?9%gKgxDzssZIz`8DyD3aMGrA#DzSp za`ToaLc7Q~5I=eEB;`H=ym+Yu*tB@lTDERkx1%4%%Dba{<(S*Cchq>-t;=!CdwMx4 z+$?_ylEbyp`RGNF}PSDn=1(jFI6qvfz)3n6PO@9B_%)< zdh!J3J4ty^PGUA>$E<*yOzIFHFbVNKbP#`G^MxO(>^op3!&=LO%o)0da#-4yepaj-8+)Oeav2TgjmYbRk%aL)gzQXrqt$ zt0ZIV=dIw9bwim~P*S!+gp-R|CUMrTI-`^vFvTc;iYd)CdG8j=j^k7?!RRUBmU^vx zMCD(yr!&I6J8|0AU_Qp*R(UoAl~yO5D=KU(f1(IW*Vkq_l4)EAg-xQWBBKW1MbSW$ zbWQ4W&k+A4@t-FC1o0mw{$AqWP5iqk03!NL+Km0(0>-SHBA85UK6bIZi@!CY+SIKr zsET(fCM=i#qWot2L}=~3D76uf4VNp5us9sOWi6}o>Lsge@TchXZG~qCaPjt%!ruY9 zweokAJDPB zEnqI{y;+fUh2DKg@9hf3lb_jAJF^J|s?|8ScYSSuBa=X&!$xaI4XvvpEEStHigmK# z(8$DdV5>XOs3Ry;13(rKuwuvu(2kPwae#Tb5l!?i@#EtY_PEX-za)Op#Bt)^PNNPS z2x**JIRlgsOHcmmql{ot+gY*FdmT&E@fjd2wpn!}YTR?d8oXJeLJ`ikdTO;F0Fqr= zgP+Z(v&LsD%eFAzjcCV!{)Vn3fK;jYm^~pTj~R_JPEc$-V4W_eFS1YatDxfG9NZ^}0|4w5YR@-x%v924yZQGT~n+&=r}Y^QIXfcMW{&`U)m;UoA4FlvFy z&gHV_*RAoLeFG}U-o5b$dTCqgD#)+JcqK&b(sv`)0-2|8Wcwnw}a% zYe^N>k#n$AG|Z|2&5FM9yf1~H4qi*;#(cT-xpWTgX^dG|_X7#uxF0NyYoO}*7-jK8 zu(XbcI-Vzp^=m83h4f?q%M#dB7hPEP=h#j{9ugKvnB$x4Jc8ND$H(b?x7n>y{h+^o zu!{|t4=jQY2mwrcPKpryYe|lGB#If(6nADh2nnejy`upSC!qCg*$35%q(Cq>hm!Ca zMcPO92$)fZnEszK|Qwr}KO0Fr81c@lN>CM*U=TJU2R%fi;CUwv>unQaM24 z>Z|c|9uj%7k=YUT^te*QWu ziW(#_98Q9PxY*gmt(1x{)YJolWYC?j(^*X!G+g92M%|85v2WcGsp;u-DwnUQ@WH!m z0R74WU+N6nsogO3jY{@X7gjy+RbeBD($c<~qB|g$b##!>E)s4gVf=i;Z@mvizdA+5 z@ekU5^?r+(1I2F%+(MFR>~i$^RQE5#$Al?_N`AAfTq%GhwN{W@xSD-{%lrawWo zWk>u^0iEi!Ty=7e?}A*9=jqiK9rW?fgK%{+$Onb?#Wr|Q@w8V?_5^tV%66#mXa}n~ zVI^p1(at)g46Y~UZy-tpL_?;eR7L1ah^E3nMsNN--&3umzLDvxZ&0$McdRp;RXvwGO2sg*T|))Y9J=18CsMnn=(y~r%?(yL*u~XCa3yV}+saEvr(#2A~Zo18%Yxjwr@h@71 zUh9s=-Ee}WiXc_0%ga?wkf!g_*Am&0#G6A?kkX`}(bx~v0l&)!c+wCX>25Mx-(*&& z;jr|j{8*kzpC?BfOl_Igy181D<@808vzm^Z?xjg?)2+2735P!s1;{xdMIiIo`7G2u(rP=a46{#=NB3S74>@fN-@-9;&k)8ehgq0C zh2ya(9NuU!9|||K(A>HK#WfM;nhm#O!F*Z7GiIw*W3~z>&LGHS_9$i6SaiR3ovIs63G;@yO#Hbw^o`I5A|2_9>A? zRS!2tU_~}!2WVNOiXY(`DbTn;8w5zfs%UFTj@Y6of}%w~iUI}tQRE{C(Dp~a`6%3( zS-u?0Kz~a}+@0B(+1c57E!Twlv528WvS;UKW-|*)c6n)jc}Y2)T~HRY%L`K(%$@1aygr{@Sn8jhS)8BBE@b+rX0wa^&-5JbpU#|~nw?x+?7^kydz+jZ z{;7q`GC+Bs!gLniY}kAapA+Hutgjm9*y6`;D|5i3pV zUe7h0NTu!Ah?#gsWG#C@D+9J)b601^*Yvkx>RFpvb#KB%BpusV-Su{ts|z@nRD)G% zFX>oW*~3-N=k`UlLEY5RW+Bv9f(0<7AI&skYiLK$An4>n?bY$6Z#aX%VNd9UakT<|4Ni7|-qRbCqJ%ABIb$|U%;Lx+-T#J0Fc z=UU64W**mV%S>u!T6`F{(#BG%8Lin0?jD1!lTJooY`hb zCaaQ?zn=4_M$%y0)E=0(I$C-#RMM;zrrw8Ope-3@ok-HzYV3kT!k$v`n|1&Cx@zm_mNx85?{;7c2EX|wQ;P0$8NT_DnL zB?=w7cv1#(naBZ|xNcg3&h5)qzzx2#g**Ix!yv`@X~LvHFgV&mca<#3azRSsmRUHE z5G9zJc`IPaognXuCA-0sf$fB}RrsuW=izd8igm=Hf>T#ID@K#ePV;rHE0ovz`CkHIZ_az?$yzn_}d@yQ-oHPW4YEw+0 zyE+&{H35ROp8{=rL^Ul_kMImwQJ8xm^CMXv$PU~?hFXT4lortkfs-e+WmHeIZOhKU z%x7y!>$o<~j0AAE7}^k21@d^x&7liK<(@*x&M(bm=X!?oxtG#z zMmaY*yPQ$7rq0Og^cl!Y4QIe}L?q?zEic%5}nIIW1uV&2oZV5rG~ zs5%MLO7o*5l{P%08d10|ZyM^I?*+IJHVOCTozQHH`Hvth3y+u4b%UzmXxRTWj{(6L z*4-rZ1mHUZ*@+t=Jn(50-m zRV{%T1^#4}a_z03OTSSi`2MLX;c!_MZ>tid?bvO|o|}*q-QXRSxDCoGpQw~2F|(N; z6jn^}WJ}SMwyhS(YUW3@DbI^FD{|2akcgf2$1HiYEjZOyv}8TFK}bx6!FX`9@N}8# z1}zp2l;P`^4C~)7gV!uM5!@_E8w~17GhRF@~n4SfpYoiG;f*`Af-o& zGlecomLLnm*=7ol)hLSVa0n~F4^jB#k1iH|!e!G@O%$z}DA_Cve%uP&1U{2XexgQl zdyQmRM(covR?Bu_1LS`6|EP1-cPeFxP&(XObuE4mlqf?bccao241)2K#?E`hr3U3H zcaoe&1u~fo7*2#~WfKTR2onFvhj;jJga#qUjA@8&?+_HH28{WHHjWK=YCm%R8^ax2DFnWt z#4i06aFtww_$@%}t<8jp{1v7QtP@=b{fwQ*;To6lJw9A13xamd!Q~4a|2p9Pqqd&b zY(i%_`c*{Rni?&kCpr2AJBPgOxQa@EFo4D10qo;K5Ofjb%n0rSu)f?W07CeJUBKaQ zYz2o;*_$}v8N67v5%_@N_v$O`J00wt!end)q%ZTij{ED;;w%)W#re$C%;}k_Nh(Q5 z{6{ED`dp>6h4)N1Ri^vNVF?RU_S9l_HnWuJ*|j)DvUBG$3rot(5)Lejz&#B36Hs!e_GQG>8z-DGMXESq4i#;un!Y{5u29HDA|E4OAk#Fy;zs%FFD%~+Y zC_HcAi{nmmvovm10|3Ja`;Rt#gM?_KCnsk z9dl32_;_z6VFy=l+VEnx9qlR)4Pgf% zpgfRNfL{mr(};eUsE2nEBn3T*KTBN2m#Lq6L)D;LU8A;TKea8pZ;lO&@HMhwSRIH& zHLxRn;Nc67BIM!USF)zBrfIfD>*Y~ zYQLL%=s~&(q<=t*L~9yYQn@aSEf1;qV^FcC3qDBB zNVq7~!X^l4LAV{ZX`#AGb#x=9+x+!7PA!$}KNfbQJqx%ZxX?sp!SvqD{8NS8z7V-q8zxk-6^W_n^~T0S*CDNl{h zOb+MdQ&2B|E1ZhG@HUePd#La{AEd$kfE}_+;+T@aXu|q5b{`4xP-M8Xg}z zF_QOV+v8mgsR{zalewYk+)24NcQT)wIyvsP=01;@_8I|00td6_)yout}cJW7vC#h66#M2@aM+F zBNPjsE_r%+DGXtoB-@YIfvh>#TJtz!zwL1h!5R1c`~TnBoPgSg3Drk1L_1>FYL=@nT_< zQ&f#3TGBM)s*#r3VLdHsUqUg$zEs3arg2q#Da?HjG=9x))J>zOvJDu3jOrjpQL+x1 zvQ#dQV|hI$$if{!msTUMxozx9t3NBr#fyd7L?)d`nu+z0-;`3*-9CFaHqTux&`_r& zdkiJ6rZ&P_H?K*Wxog-uk+q6jiWgjPOf?<75mQ%z&BU8G3)LM-HI;@k&`Z(IUKRwg zro0=goTZ%Q^^U;5mv(7cR$dUcQ@&YfpkrCiiDl!dFQ-H)rvn7(?|;=9mSI^9HORh- zNiA63S6Lk2*j@VK>1{l)>;g=c56gv|5`g`Ux~YUwMz};XH#7);!({w?0PPJU6u;8gw@x_H;>;!E&Oe-E8Dq|zYDN-}I;E8g;Rwi73sXYKg8 zfHzk&v^1VIR=fcfwY^C#ttP4bZ7e5MB@E>=II|XpyP~E0eZ5*b;xpmW!q5y}Am)A^ zI=fH=PqAH3v5q5b_hA@PXC~C7k~Wjft+V@rP}5jinZ5ld*p3$L>C`j#Mv%-Z^{`$K z)t(;JP?K87=RgdIFjTh!WH@`Pgbd~uS^Ik2%x~aUR*m4HZ5bUJJ8^PI9?8qA9iNE1 zM3l)SRe}t$SP=Vwf`DZH1FOzM1?S+ek*f7osIsn=#Qqej*uzM+h>hp&#!>9`T|W6< ze&Q9#=)2oVJk4pBSU<$s|geAOe|3(^gI% z%S~J3CuOclho(oy^YZlb6FJ#gtvob5oST@QlJn#8_yo33`GuXu3suYyGRUVrUz(S> ztMF9*3-HzhY)ojn3i^sm4mSLXW$tI0ci09HlIegXUIlek1~pOv*PN=|*PUF18WyNy z1Td_Oh@~pZ#Gs8bQ75Az;t@{T>V<7^0S4Kc55%~d(7h@T?AjDpVyZ7~CVaYjMAbDrOg+le=jG0!Cu)#PR470%}VPrGG)e5E9#aef<;1+hM4&=BYY=#I2 zNN-CAQSSm}9Eo4`h@v+X3!wJdF_0nT)h|#{^eN3kuvrQ~!8 z8aH~q+-^m!dK|J~MLut?slq+;`%%G1Ouv^lLS za;t`_K=56_oQBSHLZGfN_a?R?hw+46E5k2 z$JyxpEWZV-2}5lZ_TX4L>2xxqB91e60}}li+lQa;@z2Yw^#wTZjbveHcpH5wGm{Ld zUuWV|(6C-t;=!=u)3sFkD3t3{2{oiCx^@(FNE#~E9nL_hTZ5v>+8<{7c0py08H}o- zv+K_jkAmhAmAQMq?3`15j*e>I|C~`rp)hDNalXscjaC? z*MFszssdb+UZcVZsX}4{ByI|&K}tiEhACAW8enp;9oZR45Nd4Es#&p#Vp-QZLRQ0f z!lg~>W%+H)tWB`vQ8pQ7hYqpeqriKI3Hu>Wfaha7T)Vgm*%UWZX?_~rsDd>(!?t1p z<>Ak@(b3%Lp-~4m!7h@AYe`eR22D#$zZU}uQRl?@+e9oRle$E;hww99_ zo0*!HPvqp>$g~CC&%sp|ErSQPtRAjx+P{JCv+2$u*i;QI3^)1)S;4;txo$03H-d}S&G>BmrMc7Maq5?CobNFkrTJ!qZqBGgpNMa1ZlBpG(uv%@ zXvDk=bK9W|2yy!@L-*czb9wg_6>({C?sAOgSkUP+D9u{0L}y3NTJI8FU8K3Z-npQr z-?SF3Y~zxZ^(-0h#pm`JVz!B2VzbHa22Jsz*=Tw?pyPK;kLAraE*jF!xlg<|_4!?~ zd6~$@#2D8=1}GlOOSpjA&0~0|ov2X`b^{HR4Nza~b*DwULNI{b-HoXlZUGhxO-dr6 zYau15JK7{wi^tRg@>2tCsu9Ku@CPVPMiQ)sWJ<+~x9DEH{{YCqMq8Z9pw8T07TCnX zXri^Q6gD4Pa?D+a^E|=^@w1nIcEB{%WWZtNdKkW*R2ip1dQOzEHl*l!Nt@w%{+ibF z6U_b*&!$kPC`mJ8glmx6?qZ?S7?%N4xIs8YAsIjm`E)Lyn;aRIPtD|q$vixh@*|Xw%q(Xb_ucB4Y<8iPgtDRodn%=ZI+JW;8Dbk{i0_T`i>Sw%H3O_I z%`qs-HZk-@UUXKVE->VbvI3SJgs$kg!hnX6&%yp6N;Q&)K-6;py|B;Ra%gr)alL>M zBYFJP+K~_7t6eDYM|Yx2;NcJ`d|JZBRRF6=UMfn6zL>H&$tcj=WJ^jA&6k9^-OCKz3XN05T*I0Ey!W zfJYfsN>!9G8y$#2z~cUd<4$;hT7^47K_YU2e#njvfe653)VOT7z(SLiOnl_j(7tm{4ixedgq zh?0u<(ulq7Y!m|?H9>@{1O`v*AlwILxfZY54kbxF>?PX_0(14mw_AW8hBB`O z?+O|EXT?hre*eVruqw7syQZYVtE%w2ERB0r+|iWwt$?JGW6!Mv4Pvgda z%Dtg?*%+1>FTD<HXg9jjkv`RCa)kFfE5Y;-%zZ(tMT?fihdId8Fj6Rh=VHrdBS zgH1))bdb$F!P-07zRm2}X7=1Va7u>YPTxx#poAOnfZ0?EHq^o_6!N`inSXMpbl>To ztPt_ih8;Uy+`{s%X5!52_3U^Je_th8lj4!$m+)<%7J76&I;|o2aYP)9Y;) z0gY&hzpP!&<&$*1STe49z|2WFJ{p*4aAGAy^znchm!4pkbGkPF;T}uo72u-tQwJ)7iLilz9@C9LC4Aw!s z_Bm+V;r}vR^)vS*T+-^GZiZsRkgMUb1f3@MtcO0Ag4hKO*M8R+f5WH-wCpipiYEW^ z$RUu#W%*ayp-#(66Bt@7yhA7!UtlWIQHbJEbbA1HfpshC*_?*m@*(Iza}qWxV>lX! zNnf|FTGuRcb-9`aYI1_%SVk7&G^DEWB#&vAhEu*UfF* zry#L2_t>IIrDaK3M3ER72lnUAu_)w~G@YK_Z0C}GF>ZEtEWT=XTHa$f%#QiK@+3sH zTrB6-o*1VBss=h*o!rp^!r8`~W;-zpUk9_D=grPH&33yg+kP8Ot8*{S{gc^FbKIWa zOka~Py0p2ugHDI@)|{Vr;UiY<4r{TQhf6X&MY9Rl)U@@Txff@A&gx4uYJ zH%w2vSiKBf2E|2PT5hmuTpMzgQsxEa%EdUbnG*CmxtitvB>IUYf4^x#f3T!I9hYp` zeFoI1ue`Lyf*am_bRVJxK3_>Eh}icrJ6O){DQ7v(euVdBoIQn~LAa^z5Fh|VBGZWh zywGqzA*y+RMt!soZqn9-0#4-`Aj90-aK0WG=>j_Fj7pC}p-NZNn8y%(P1r;O6pQyF zS+NO|C7R)V%wEOO@M?M(3s%Js>BY>|xCxoSl4etTO zp}|@GwEzzyZJnLl6%cPwAAL~sUW@45W{AEOi+3!%0@{Dz`rKbeuScRh9;^{gkk!E} z2!Sffy8%o1B^N#L=w0Ebwb)!=cFA298|Y&LDL5DItbq%oWOV0gz}E3$H5E!~^w7rK z2cT~&zoRA5fZuhb;f2^>ZdV@slDZ_wmzGq+!+3vfR<>Z5b+m{uNupR{&3hvvh3i-+NZNv{slrj!`sCPgi zKJkLhqX#K)!hsM%A@o!YPm1C2424LQKTAfkJ#x- zIFj2+yVw>g76vqUT`WI3o}L_^nc(7s@gj&r>|GKs&CCfAS zF*j?TfHSN3t&GEuV&y}PAU4t_58(qIUeWz9<=%iazs2J0CQ;=-zY*zG&SN)-{2cgH z`(dgIDXp_vpK^5oOKb24C`y_zRMeZG#)V<{ddSoUGil5V()MDZ6!#e$njW?waziY) z*>n(?3@;;HPL!|Ihn^4s3E*_>u2azWTW}=unHOLX-7Z$#eG^p0z<=wxh3*XRCmH6{9R#Ay#+y2yb_IhQ3I#9v`%aoxW;o8>uwI0Jvs$5fv9!~Z2h0n0eXQVQP;65$4e~z907R%n!c;PRci3f$ZaeV%Z GFa8J9&*i27 diff --git a/obsolete/clos/2.01big/defs.dfasl b/obsolete/clos/2.01big/defs.dfasl deleted file mode 100644 index 1684e017af8e62908a28c7b21a25daf4289469fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21496 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 diff --git a/obsolete/clos/2.01big/env.dfasl b/obsolete/clos/2.01big/env.dfasl deleted file mode 100644 index decb1a80d8f531ed49f3a823367f1bd7e698fb94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9243 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 M>uaL)_j~vL0j@jq+yDRo diff --git a/obsolete/clos/2.01big/fsc.dfasl b/obsolete/clos/2.01big/fsc.dfasl deleted file mode 100644 index fff65ea98c0fc3d115c268af26e4dcdddcb63db3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2116 zcmcgtO>7%g5Ps{BCTn*S2cjS)n5;m+r7wz8D&l}#UU%2&${Vk>yHQ#WNU6Q4tvXrD zcK8uOAS5ox5>2C`9i$#X;>ZOqNR_y8XLQ z@d2B>W;nVL?Y5h(u%k!&z4m@j--$YUH`?#iLVX9n>mQkZ`Qx{4HTP~7!w=d~r&nw> zyX{)k35&H>)Ge+oEf;sXwI%xcW?u6j39WU)?Os^dx5D~f*sX7WctKw&=w?_8cW)qJ zzEHS$LC>$Qy4#t4Ni2*`3YlYur}8afyM0#oV!*pw%JsF2>AxVr$6A2Q|1JsMkSTh0F>rv z^P`7@b{;b4&@;W|i7Jr|eF|t()XY5IjY%=QY74FH-5d37y}76Vo75@1brW=_Ha!b9 zj}KFEe>^EZ?yJPkD`LY^Qb@U&DC7s`sVZSxse)H1%bh_QQ1Nw?NlH2PWHrLvW0!WC z^0GAcCzb{|c#$UHH!R|%x06PFE6sgru1S+dOtP)cYN3MX9h8ULNp^0WhCVkOsz;}P zG+@soW?oK7#pP~kGzp33pk@)ENx(pBP^p)*CA%UV`yHBA9143du+;Gx2|osyyb5$Y zI_xj;;TYs_p^m@mS$=@vNxOov-nzVl>^tnnv>cn3`olpZ+obhy*3mI*YNX6q$v2K0 zprl}Fz50(n7&-22Efku1o^$bO=+^bde@cxGpLp3Zy=2L^KGr@;0sR(?Vo#x5rW zi%)@I_HP73sTq4Np-7f6kMH)gv`lQrqRp9HSCaJzJTkvZ^9^`i@Ycaw0PpMI=;$ve C+BPo$ diff --git a/obsolete/clos/2.01big/init.dfasl b/obsolete/clos/2.01big/init.dfasl deleted file mode 100644 index ae72d64755cdc31f60c1fd50c9087af37618a6c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4939 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 diff --git a/obsolete/clos/2.01big/iterate.dfasl b/obsolete/clos/2.01big/iterate.dfasl deleted file mode 100644 index ed34b9aa5e6dea3ae31142302f6b94f91ab1eeeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24151 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 diff --git a/obsolete/clos/2.01big/lap.dfasl b/obsolete/clos/2.01big/lap.dfasl deleted file mode 100644 index f587ef04415a6290c592e85d1e3f3a4f7d2bcb4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16250 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 TlNJ&n3)i8n&rt7wzJC2LnV4ER diff --git a/obsolete/clos/2.01big/low2.dfasl b/obsolete/clos/2.01big/low2.dfasl deleted file mode 100644 index f0e021c7aff23dc8fe2d14f1a33b93aea6cd2616..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3281 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 QKoMFA6tChEBTGyF2O$0H_y7O^ diff --git a/obsolete/clos/2.01big/methods.dfasl b/obsolete/clos/2.01big/methods.dfasl deleted file mode 100644 index 0d99a4ea18de02afc1db88ad46a538478c162462..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39695 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 Yi8+v3gZVT~SXu4GKLKb-@SS)550MFF3jhEB diff --git a/obsolete/clos/2.01big/patch.dfasl b/obsolete/clos/2.01big/patch.dfasl deleted file mode 100644 index 23d002f89a7ed9a65a382eea58c91d3e2ef5a2f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2835 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 H_3Qr+;8@oi diff --git a/obsolete/clos/2.01big/precom1.dfasl b/obsolete/clos/2.01big/precom1.dfasl deleted file mode 100644 index 13c3abd21a45adcc64ff9df95480b0d737caea27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmZ`#!EVz)6xQh6Q??gOOQxfg<8(0+1hcc*a6g=>uj5-o7i$3M1_!g z;Aja-0d0{uz!&tGwg-L&z9Z}=jf4>FVKsX1&6_uK3^Fea3mHK_>@galU=)X=80`fS z8U~}tr)W>q(d(*XzF9x$4fZSaRTxBZh4qG^A4Ig`vtU?R%@-#0fjBj0h)pXF)c{{ybX%Qr%+x50K6{ro^4Fs=(nWgxO?8c=w8;ple6VI zoI1QDAGgeh7jMn(($0B3H9q?}ANod=|IPdou`DsKzuWOpZ-D*|C=EbL1awo{Z?~|x zhM%N(0&S6mLw4}Bry`t%S_@;<(2Y8tMkI%qMLoNT-C6l`F(X3FHgprK7I9oCm)<2d gafxoJ*uo8LyTT^qpAyArHnxd{tLl~Lm-~~+ZzS%{#{d8T diff --git a/obsolete/clos/2.01big/precom2.dfasl b/obsolete/clos/2.01big/precom2.dfasl deleted file mode 100644 index 633f8e42a00b21bcac293b3683a79e5cbfc71dbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19835 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 T5mN~<>4@ov5PXC+6BGXh93Hkr diff --git a/obsolete/clos/2.01big/precom4.dfasl b/obsolete/clos/2.01big/precom4.dfasl deleted file mode 100644 index f547707dd56d5521966733bbbaad5df2b57fc9ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5577 zcmd^DJ!~6g7`{879oMm4JGs&zxAbTWR8{QSiSyeMg9I6|ZBv`0hyV;@xwzGxO6! z>g|PcWof81v$#+!SJa_msk}JU6$%e6RMcX5E*c`s*@!3CFuYh%3rp&hcv+pAR~M%W zcRIzc0dYhvs&m(H(a69+cc&QXAB+wRM#3S_sFYKTb*+K!N&pePRN z84Pz1_6&qP>z`_?jC-2F&jI@JFPn`AV^Zv*6qi|6dsO9PN+zd0)T;b=PR=q6O@5zY*w!*lq5sS?%rU(p7|;6B z9y{6B{s+Ctzy7{0{#~Tg150jgA$Qr)m4}s#G!nEt9*oOrIV3zjX6(rP3~nl( z7{v;>=fE8Y_v_%Md6;$UN}!bTVvwGKXx1m7P1qDUkM1xw;XU23iQH*ug@f7(Pt!92h0A8M7TV+qE zH=jP9z2U+=F>5!}6Wo(Tjq$TwqQ(s;TdCE@a2#}K)i>(-d4=`lf8! zhBpPR$%oug2(+MYz39;Kl$_27&S!_Ho zF_zCJ#?u$O$fdu7pNik$H7b6@tEBsM;Pf5x=%|cxa7nh{ff&tQO$G1mKjR7qZRXZ( z2o?bj8CVxm<4Qg`rpUodk}@s_$FiAt#4y>Zj!I{P!v+wb1EL5!2tYUCZL_7oDILbV3d6~jB+R_Hmy2DazQ1D6oNn$ zsnRl$xAV8dh5E1KD2ydcMFA?W^7@%T}P~(L`D$df+Ipm5b6q6LiBoQhg6rezz zztTHvD=q|F6ndZ+`k?bXqnx%LUa_Q^Jo z=AGKA{XKQ|>6az09s+F`0xh0PNjKgO(@6A&CX3}}lSO{7pS34y?%{@>ZGP5~sQKzm zmLND#4D9&bgD|vg76yJJ)S4AU{WdYzc?%}W5SW0#1(-y2=z_p82sjNzIAth;%L=TK zFoE+kn4to6mcuL&$Y2ri-}oc@2c`<}mI`1_v=PjZjmQxroY81*?;NDH-bcP1Z{o}D zsll7nK1*vT1`^NC*zJQb z(G7v)Fj-F{2nqV#f0NaVZ&P&$e76|_dfdgV+-XS!B?_Pd2Fq=wLKhm!J^tlz-Ge|n z(T8DM-D{20)Eegt7nFT6A?n&mZIz#S4qe+Opjxor5>%;YQ$V$#zQ@Sv*pmvj z6k!6xW)cE@Fu5sgid(d>zf&i|FK^X}@T(a$5zJQ1d_}iXyO}lbKmv{w@gI=j;7g#2 z{d>a{zPtEW0;Fvd9O{DTARMq>d^<${Oi>-*2U+(?IM82y{Q-KKRWph&Abc0XmmwU1 Oa4UpAp;6)W^}hfPi(D%J diff --git a/obsolete/clos/2.01big/slots.dfasl b/obsolete/clos/2.01big/slots.dfasl deleted file mode 100644 index ef784156d449c22ef25a83a57bda101008ef986a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7704 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 L@wy-S;Di4UBX8va diff --git a/obsolete/clos/2.01big/vector.dfasl b/obsolete/clos/2.01big/vector.dfasl deleted file mode 100644 index 71697f84e38bac70de6b398bec245f9c5f3664dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12286 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 diff --git a/obsolete/clos/2.01big/walk.dfasl b/obsolete/clos/2.01big/walk.dfasl deleted file mode 100644 index 93c99e8fb0f7d622efc414a1a478252081aaabac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19578 zcmc(H3vg6ddgeV>Pe2llka>uQ+kn9aS{Mv72HSA^CAy_nx2$djL~q}~?o4<8iLTzh)b6fKZ~yLX4G-;p zKAAb*K*f)4t&ThTcJ-x_1F0kKj?|HCs{csx#m(+*JKcd)SE}bQM%=n{=fj)bTOZlA zedn&N+Zw7Hz43?)YIjVe2m7So!w=ooZ`-bI+jeb#xS{&9cXDrPRYx`an@10qmK%0$ zbr1BO@MKcYr7|?99;(Q_K3v(@9`z@}v1sm`8dBxC-x;1Cj(S?X{$}sqpi;TB!{r^` zNOQ0)HyUc5`fvkn<@{qJlNS9YfET=c&-vamjr^1;b_n!usw-jOKZfN z2+|<-cxQ*_QLU#j*4AQHp^qyXj31$$v|`ldhPO* zJIRc6cW067Np|)1LLigb{_fuF%lE%r?au#8WuNQr>&^D0vIFj}-faIs-(VMs;o%qE z0~p62iN)O{$;rcz@2=h>DGZo7p6Y9GyMaf4>W zX^aFpnIXS$E4fTg9#z0U%vJXmCs?h}2zNBfdJ0NCA?b`SJ*r}{zbVpKqT z;5$3bh(U)3yMbo+K)<{9`K-;Z-o6HwlKYrRM?4+jM9AZ9-`f(5l28Yu`@(IpD7~?` z^c#Ao+OIB!^(WPpX8oya=|eS>tkNy>Np=p^oQu_{q4Xh_ltzn7YbQhcp}Ip$CZjBN zTqzBk7)T`Miq)p;@ehx5eQZg6y-PD!R%x2fQkgra=Z34+t!wf6+hVM2x#7k3s{_}P zXzu)QRdaBEN31OXHI65?QUP>3;IT?qm}^Q8Kt0ypdB&bFXwVk*M$D=NEKq4AnAo@p z#;Kf#kKcprJX@LKDh%Yz`_1)iht~6S_~Do&zw^u&5V6Pru7$;6aPB+fL2X4TbvLF_ z(b}G9ZHu)oKz?yNm}vA^e!9}C%)|Bob~zQw01Ski)=TjXy}rIq=K=pBKi~!o$ejwK7B{D{e{4YX*6Ny8 zVu>EeQv%B598AZuAOtC+nV$kx7RL9t_+k-{O|hrIi$w=pyv;$UE_HCJKi0b6S!#e) zOYB0?L>mmPK$ZSjOKUh1Y+GsWUO?kb0LlV~)Kl3ggtClrqPO?VJ(PUi-1CyT^aWG( znR{BzJ&%~iQd8*|jpk!MuCWEEb3n?Y&q}{lc<_$lWm#q#Pq{2MFShCI-C$LuK{r1} zb*QY+O>c~<`52XO_B8UM)M`Fn_JFDGHTNtv_bdcbrdP08B~9QSY;GVODpl zi;$a3A^}q)O|GF;hmxIX4`^q{N^+Z5peVl|R*Bh*C&IGOAxz!(Sr=U}q+ z_0XOLtSF*F%gucYiCj0$`ziTTb3G+j%?3)|C41c39uLvWd3y1C18wy3I*By|#;l^Z z-$GS+AVw@4Km{bwtm-v8y3Ed}%_sMp2bxh|;`g>SA}tI0z42fJmB7+hQ1|bUQ6$Tc z{$$<{n)`F-N&#r8KNj5=Y)e?CHxcthye+UJDL^ ze-(}>T2-=qV@w)@dNm@Cv^?VV1tamt$z9z+kNe2pkVn;DM^iULet$MbLBPtLGz)) zvXaEI5=nSa%}3`nUdth8J5+F5F3MwER$iw3xVW<$uK7n z%A~I8r#{0!%b=I$hRY(%T3N(E@_FlHt)#o&2r!`avvdziYZ%qMQGA4W6x`>HY%urL zfEYDcYuj7kB6-+d=G{VkKQ;v|%7dnrHo=uUH@qM)*wgc(o4LqlceQOmcst`X7#?3Z z8n6s-k=I2AgJ)^!A?G74mi9plF;^0=uUC9tCDcmp#e9}q+aIS1CR{vQ&8m9y{>5g4 zY_{g?Hvg==ilI_ zzo#ipSyGO@8!f-8#B2hY-{$()(3QydM(Wrv-#eZbjbciy)_+)$hU4~1a-v&QiAye} zFTaw!)P1?o=1ThNE6FR}SM8E{Y2FK*NnY#55@vMNGEnRTI%>lsp;IxJY948NCFasq z%ShxjQeDMrMxtjZrz>7t@JK^;OXkUR1=D$|NN39}Ckz@$o+-SYYGO`aH_0cL0_@N6 zQsvw%<9(669k+MPas8m#RKa7NDfM&u-L0Jb!M&WkU(LyT1;51F>RawMYv?@jPnD&4 zqoD0{`s)nl_lO4&t!iRp9#MudUts7qkPq()#6>`y6J$6GEI4^U6L$r44-1tQsK`@> zp;g(?^5CxC6`U&?O9Y*WF{CA4Rx|keV0b-THa)z|p6f??k*QkXn3N^H#pJ8w5o}(P zal*>VqbzfbVh!UM=X&utWr+~2$f6*Q5lk0Wo%x1-mhZuo%&)>f zFBZ8uxWa@HoKTFZ;7(dgLD>`SP%2oCh1OzZ4)u{)~ z<;y^#&4fZ2;q@Rn&K%2z1#AsQ1LQ~FCgS=-pgs0Ow8xV5cuL=s8(!{DW;YDDkERCP z1F4=9860D9*!Jc4POyS8sO4u#ffMWjDKa)C6agSC7Zn=@h%5e)QlV0Rw;*vmOEygs zwB(u@3%O=`%NYyj-hIZFGZxM`(7##Xj3~{$a7H}m-u++M^8d%^Gs65=78a&SQRLc( zw@o`o>o3>{H%aj~%}tcND#@25IVj0qNw!I{N|H)W)GsCZZ<5@Q8hmCM5ZNNnSHIy=ZPaVs46=n|7I-?l(8Nkf#}pkj83L zlpQ9+j6h6)UQWWO%x8xho2k9no>Adf3yq&g<1((IiVRxIK7op)@zFx#!vvXXsBH(@ zRx;#3%!1oiXxf6NC8(g5KD4Z`S_;g^3k@l1pa*yk4-`t*qO_(x+5r#Ng8>ske}W(_ zF0`mY3;3yRu?|$IPxBS(pK0VoC`iTs8zWco$O-RW3dr;D>gR>l{~fI>tV-(fSB0t{ zp^6r`C#Za~P<{#J3)+H-_O_^}u`Sj@)!!{t|3}V#LZ#;mrLUtC(|I3N3>7NAVpl|| z;sg+0#t65xM-pMI10F1_?LjN(K~0Vq`aX-ki)Uy^&Gr?VJuyQwdtTl`v&Yb^ZW=UV z_ErM7xzKLI4B&8*8=+<^fq%8&PiIkxU(>N`%Y?rTwo$qyJ$(O^tqvMhkdQJK9L4e_Lqxmy}htRC?XfmZFG^p7tk&w%5!a zYWE@9iOhx@rOjxe%^!dQdbp9=nT66fsB|w$vUXZZe*-1?BYO(8T6=JwORuy!W@ZjZ zuALI4HK85HcRcM;oWn!%ao{K$zo1zal(q&SS6GER&|wiz-#!V!nKtPDkTl(drd7_G z6;i$g0bECM3>o8+}IO5`O_#P{rQDV-Ub9F0*0-+@|t5C9$m z0Qh*M82NrY)+uTMzfj<5rwWAtVikUpFH}FV3uz3B_mn_d3)O#0L-8y3$s?k|M8EH$ zi&aanZ{^OF$*VOgbd1LTRX{o7sYdvj*T`ZDm(+&t#++UI1hpQ zY8Q&|)V@xyL}Ah-v+7X3Z}A+pQ|^2XPsjmv0o4>ZCIrKluLd4l2O?S=D$X6xM~aXC zEdk;y6Oa-$BUu;%}!XvYK`;ucCF@#ZWrL>v5P}Hhx?(xTJ|+;3w9U+!j18 zOh~8#%{8@=_PUmm1Uy#H zx6Os(>}szNRVF0dUdrM2QV9-HxE)md@E)Qbk?{{RrOD8*>$J(Sy7WZ{ExF8)nETZD zgOWj^K52Nv&USS=lU4!_-f-xKW|Mm1v^aek;`ALM*jU8m=R)%Gm&}?zP`$=JzxVL+ z$uvFPW7f#(J<6i2eJD%q8BOo9XmBo#KuP*?`ikN8WlDfo4Tn;mQWslvbzo$yJ#0+T zPUxu*gJIqXjXxGv++<{Ir!VcBE=kwIatnf+JgpENjq2)<3l}9Wo_zI87)RY>-@sKN z8cMf^x{RT&G&hYzhSKX4!qK_m`hoyVzi$drahV$yjjL2`QyI%ac2{~l0)3~g)d5?Ac*r0 zwkFy_?a}6KvMI~v-qia@Mh+Ntnzv5()s;@Bn|@ta&d*AI&gW+pKWq5unrynEK?J{j zx#>nJ6Zr}Xnr`TL&6Grhqz4tliRhHhN00L3to%(Lm!^}&U$l{z2#@9OwE8zPEl%rn z5HPJW0Y4BllhsdU%Zly@u!v6AJ-yA0iL#Gs>X;RM|ID};x-tJ;=tj8zW+j9J=A6efsaB8Zr~2X`-kGQ1Ff?74bC+1A3-l_?2C46pIfQ;k5F7;-B6%+c6Aj4eAQ&f=OhpD zwdc*XeJl#EJ;enV*nLFU;~1B|uT$^8!}7|t&+xOzpV0n{uhwaQCDGEPyZ=P0t2-%| zAvbgM^hoO2?kwV_F#UWluD7SBHygn<&S}@m@)zqU)04~&0t#PKbKISCAL&i?Q^@3a zw)c5=8h^MLM%U_aFKjk&0mcD=+@dfG-&S)X>`rEJ7qIU|ck*bm8$n&1W1SzKZ)^G1 zheXXUh@n*}ZwZ9_npbtQd`^vTG`zZ3*AahW8AF!Szm|~FP}=9OhOXh_l&scM;|4mY z{bY;}j5M7QYn($7cROPoN4Dk-fKjLM(3Q`BxP0<(>EvO3lC1728_ZGyQ(XD|&r(Lo z_`Qaqyr^MiGJuY_S@|bNnqRfDZ;NZ;7bsRC z;%cY8G?S4$*gLhe;fycla2+}rJ_}fy5%RM7i3QMD<}M%@T3R^vwro^BDmdL-krt^# z#5=wd;c4`SdDqjzz(@}i?_pUblnlYzaS7@M&lrA(wc+@o3{PtCUCGKO;M8`sT*0o4 zt(cw=7AEWi?cnJ~C}DXt5%LGxXqQ|b2}buOLhRJ5?=K`A5`dAPgY3U{@gUDo?H10` zW=O4pn?$}f@PS=KDPFcG@W2$Blad@HvW$5DBz&|h_jDT zR(4h7O5+X~6QBh^st)AN@vG%3KPK?_`2&86SMtdazsUBYmh;cR z!zBpcgZ8X8d{b{hX#D|Uvf(8u4OH``HY=$4Jz!I2u^b-M?JS=cPsCcSOO(Z)BDOGR zhgZ$Q9J&c0v$}v$1g}Zpl{ChmGW=8H^}e@Q1X&MVey<(~3ZlO8HBc#^vfd5d>%%01 zg1Dtsmv-Z=c#ik)gr`?%_L6wrn?(b(DQ>HMxo3 zE{K?2aGA?BwIDZqup>>k?9;Gs8M@WmmpXwv^Sd0knH|;_*K^yFS=ejX)_z=Xr`x;e z+&|Er$&eM7&UsTR7jRunZVPWZWZ;1O8e@Dl2qs$1^a06ul@(&y6uAkCI8MeaiqN@# ziOBotJv^_Qywy-y5q$+F3G+t5yp^zZ?AXE-ea+B)oImIF)w}2>B#GWAqWO;7kg5|K z3tXO}X8;%Q<;V=`Pj_k<{T0sp1?kjU9f!YZ!CWBzSQYQ8aK{o*u{~c;_cy>=y1k*_ z191dP32c7-H><2edu!MVsi%7xZ)!7*+wC0p)=cB_9DkA@lwW`97)1&IevMZjzsK+@ z@Iv=7Sb^<3>s2l?f%p%5)7Sb5HbYs_x>$vpnXIS3CMi( zCDY{*kg|4uJdeCg!K+nqyi4t|6>>MkY$4lFaegLk9o!9o4w_DmyUZfnlr`+Uk(ia*yG{ZMU_+SB_OeFKQ^l1m3+~dSHMIU8|jgkm6 zR5GvNG`;_lo-p9Y-7r)q?-3pjJ%dth<^K097EfBz@lC5@Bz+3UhfXn-ZST&hFudE9lkZ4-7~5w(=I_y6i75u@qb z&WdbY|B6V%bDVsd;pEm4PO`01DE`5y?3q7ZNrl?=lBc<{mja%35()OOZN!Br`rskX zmPIe)D_$SvhBwP8>0tIqs;_^5T=f3lo)nySEM(TEBH4EoABGJ;Dy#+J3y{ABhD~S7 zo_ztM-&OX?V8vv|h2ZQK{J|unpR6-GEU;pvEU-J~1eWHkSLY$QXF||DCrGrK@M=pz z|1I=zqPTh{6j#p)Fr!$XM{(UuD6X3mB%mmP{y=OCpE~7%u9*qFHFE;W=xwke>D7Sb zL%fPDFq`ZN17B0%CcUBSmz#VcueIH}(#%T8?Lyq}su7N~ur3MK6ymRL<}No<+5am6cMoRq7FNPm9H zRT4G$phn%I?6;UKoPAA*IY^1VBWlJTHDk5rT6QzE*EBW?uYhb-1|}gFtth^@ybxcU zrW<_e3c##L3%-5>1BVD+Gr~g#s3p|JB6N4aB?AV zyHsv7s~+LXkGGjS*Hcd4;Sf_<=x?efJM_ahgdArW?Ce=*d2|y7XK$7$zXdUzAo+yw z>iQ*CJ=xZCHVm&VeKmcp`CE~(hnf*hruB@Sv{z#_ypGZrcqd~u*CKDUMAu(E9ZlCi zg-`V^kNt>lM==b6*+kcEIV*9HFjLX`G6c8h(VGA2y|VmTsvZLq?z#w&OuoVN$yN-Q zPiHy1tBWM00ZRhr>j|{CwCry%tDZJ9yhYL8ku3^71A3anW+yqC%~GScf7$tBEhbw) zu>o80ee{*r4IR-=2^z7TLM*d%Qj8k1<KnK8v%#hV~&2UnQmpUuUJjL0d2xne-! zE1M!t$x>VH685!CUYSh()-xh5d?P?zSZ=PZqXL*Twtm_v6~}b$%g0EeoM{=4F|)pR zB28U0O;e|xWRu~Xqsr>C%e}dfFwtol)?Ysnp^LVM z7am(L?wUU^;u{jHV!Lbb&umYNJh$Rag5_@MJM^MxMWt>2;cw-ajtctT1eV6>gB2|& z&5ZmgpKItlSUWe`7@oC0W?8T+9S61lD@{)M4=MV`OPvhK|c7mOh`sSLgP3QTU8!MwHpzfWKiOK9jRyD7YI=<Ol~9F=$1y%G%El%T;|4T$pWK;-)S;`cb|Nt^4w#<^$l( z#`psSn|C7T*%S>~!%Q2`mMZFhw-HN3R7UTmx#_+oJjJZ4p;Y_C_Pq^^f1J%FPS?m> zaxmeBrYk!Tut6Opz0O6#^%v7k^_PApqL9PRoW%$Qw2b^1mI?nA{&W>?Dz=zRE2oSZ zbCj`?6eE4>89o*a#2Uyg-^YRnu~++m`$8HKCrY}UGQkqAm}Uu`mp@)lD9d4O#nFtb=1wYk*IY|U zj@x|jRWtd#nObG8T}JQPYjTo4T1GDu+~j7bd2FZI(_m)A{d|uX_H*PEWy~JFAEo^^ zT|7AmtHGfRvq~=UtJigcp#MGrqv&L#G47+4JS>Kp*KgTHhMlvAcogPu=r)D84BrJq zXe7|e7pwU*-M9{EU~KaziTKh1H`Jxp4i8()$VP7Y@fvfdcq^Z(RWehNHvN4TS^a%6 z)Q{U@b=4Lt(mQ4z1i?m*^zh$7m_Vw$I5|lu0>l&(vWXr&K1V6yt;ruTQ8*?xUdVpH zSr(}GM4(I&DA}`o&}Sxl%v33{TsAZ}qvo+KX3si&_eq7gJLC|YS6FZer2cNP(2OmC zz^pUI-JmpEE0Kx0i31GBEaITAl2cX?~jDv9|^yAV)z44=)$&5A9u6yHVnsZL_Qjz?MD4+ zdcyOO&4}dz;1Up1zsX9S9*^3I3lDem1IiOj!5>FC$+91;vU0waUCo96vYeCe>tEn> zmv{~h_#R@I6iE-uB?I~?rd>G4iWmRXjN_2Y?G87}Z|o$yx>6_bt1<)Wz7%4}eMblB zCw=-iyI<@b-%(@vE;@7iakD>6(JDJo`+>&sNgC7@a#BciGb_D%G5K!XF6L%a* zevyb!$7x@x??hi}fTF6ijY~hF^uj=2vOp;}g6&e2%HW55@KGFo&!@lP&hraCho2Yf wwtg)LV?Pgy%`znMfzU(z_lR)C`pKeayI&wC<$p0aXN$8h~VghXIKOC=$?204o9f1~?dSLBP8K zYXr<1U}Qjo0TTo;p~=CZ-r-0BKkRp@bA#m{Eoq WX4c_{D&~mdjym?pZ8vR5jkjKtkpcO1^%vRBH8l1e8OqO3%z z&Zx9>Mxm77@BjCG|9GFzcs}Eiu3{k20Kfojk@6my&bFGkQDz1L#PkGw0qQjn6E8su z#lS>WB={;lr*p5<5!UMoao9i(c^s6%&e&R}MuJ7CQDJhyupk}i09upHlqvB|EIz`+ zOz$QOZrpPhn1xC=*;Dv%c=AIA@Tnv%WntYR?KiTy?H;|P$7u^QAs z5FZL{S-DF1qK*+vj!Lxw2bv!phTuPaL`RuitJNvV7E+-t(|8CNtuXmO`-i19gUefS zr1XpLjS5gmPo21%A$Z}HWa6$M;lw6axBgR$`r*N} zDzgXa-~F<_WJAs7O%bO+<4w$fTPynD_6C)>}Af_p5m2H zKRF$s!hs+mM0n>&1{$~YNWnT>Y=YVKX=K1PGc_Tca1`$v2(0l>4~Q^-J^d8V85rPC z5ju*-NqbZVO%x08<9!%Ok-oFV;@&;Ez}3X{r*N?2v<0u^=@M+EwAIiPOH-Coy~96t zyoYuhub?@M@_VnKRyT81-24tKGZ6LxF9sNqZFW;?T)jD40W{#|t{N9@K=Q1oOyK|y zOhI_r`D{ZAet07zyh4PJHEhX2$2`HORU%Vxil~nn9n8A?3CjWrqjiS~ejHxer$zWC zj$6OYp||tjmXp&Ho2y|4ES^q>qhP+;l%Cox&<4OyKf>g|N!)1j+zwYC^zdG{zoELF zF!jVzZ~fU=nAY9$ItOgtM&n`f$n5X>O+0v_M#%g(>D%{Fp`V@h zF6yL2wP#>NS58hjN#fX~tDr?RukepkHAA?Qe$OnUAtvgR9yRPKu=z1wrV0F1)DT|8 zxBhWQg0j)ip$o=r1ngACfzH^42kHzCrNW1rFLA46qKieLiPnA7zPnCS}s^O&C86O7W#o*>paO)>CzV@{Q-iQLtLUZ7%aVj9@`^0jl3-BqN zvH~LU1P>UJ+#U(QU6{LoGf24l(^*uX2oNopmrRYogl{p;(rt#ZVw=){4d@71od8e) zKnh@T6)zBY0pCP5I*eBq03bjONT~s9IsgN1w{&J$O4RdA<`bzkoRwWyPdmK*?+ zLmPq@m)XiqjLD;4qEmS}U5B>6O?$&N06@?dDQudGby@Qxlv0Pql6*5%Q!nW3? zklZRC8M*B^TU$d^t|YTTvBGo6*(tvWPz;jK)3S6+f)#iB1jz-oS_?N_#Bh(U%0OqV zCEJu3h)pc-O{#UEDX#R)M4p5f+QG=XE8WAVR`LVK2=4cmwEHFR1J}>CN>>Uhk^6Fh zrpO2)u$$H@@m}s^%X3V5K{b2~uXnrbdB&Pz=J7;7fqKQ`XH9WME)ZGMOEZ&V-G~yv zdDcSqwc{x)O8Kqo6ydF{bBbYW1?c4pzC(YA);&x6v1V;`-(XtF%H?|h@Y>$qJ!JBg zOVvmjyg+l@m{Pdb^|y3;r}Hz8rCUfEIO?-uhyg;yDz8a(E<{jc$N3sS%EE@PspPec z+PnU2IqXzUw}~9?Mom|ke0yrfQO^MgGTVbseBkj5BhE|;(L5gD++SF{x_aSqYl(K7 zcm>s3rFyeN`9Z^JsJ)I#&hbv`ku|yAOe;yJE4K~+1z=d%EDI$-GwALcVc4#1(X1vw0A}HR-c>M-dVQB zGq-7n<1RKbSd#qsOsy{wD|IRL^gMrFc-(`)Sg*Zf#yPLN4{NL=--u20+|r2y^rz!# zEoY3|fLnW$9Z9>--v9f(`v~CgBtacm9O8RSm{TW3WP-(Iv^R*bs#~ZwvJ&l&?&Q7Q z;G^>A1>bg_pMf$tWqWT*1N92>@B4=%$zO@;)gr)^HEcR_eQ{?{Jp(~yQ-=0tMZx)L zu)PespJn6R=kn;j6SaA*Z|sHsJu3sd;CNrgI4-+>KP$pj9K4A(8|S!DlIe~s^gEfy z@{TG!bx@xbq72MJew)RHhG_kwPYo-z99qI;@$j{mz?WK^+F<%nnqw>9!6(GZk4=-o;#`U#2D z1a%I1E8iTIfHM0)7;@loOqr;SFn9hSCGaV^OT^DX9DOPS$XeiG!`OVPV^cTRQ~|zD zcP`b_V>fRxU3KavbijKNc_P|)lgycOfCMI9_r)%#e6x%u>st+TejLKJDe95<f)Rp z%Dd+W4z7{?s?A#Cv)LDseFyw(Qm^5sa=f2n-aW~l6t8e!2d8$98AQyWDh@{EN2DJ7 zvcP{CygG!(Flm!!DsgOQ!M7cD(6EYu+06d5IzrruK3iZU=%JMOb2YNN&vD^b;#QfQ zq1j*W!2ki)G6bzhP6eAC7f?55gTaX{ZZ(Uo9;e#KK#>xjbE|b8&S!x6PUG|26^a}h zraD=ktQ??ePdr&X%B1wYi_(l89{zp&3W#>bm;d*OnBwy!Q2eL6t>@)V`DB17kyp?N zJbLOXzyOJ*0XzUd92p5P;mN+rf_w12NV4c26g>)plE~mqsCO*j4F%%x0P6pPEI5e` zXR#>iF#clzKLT3nfIs4^$qTb~?HA{>&SLW&eK0DgQAe1J(aVZt4T!6Nl(;dNZC#eei|Cs^Q8hTC|oA9A}|GvNPq&o%0EGDyn-1c)2lQ+KTarj9Sks` zYy?q4ot_X#2S{)xnl5rFEwSbD9Zx|56+o*4x_f~4F4$}bY%@YmVWb`YZ;ULsG@DO! z53opwORxX`duFCJIeTo-0UKbmfkfwYI17s21D5o2-+zQkvw?$}Y+6e;Rxvl31;;Hw zwL$!mY)fBeX5wujn6EMd&Cg;$_webhRCvoM;7iER)gxr=oj+t!B@_d%rzH_nQv!C# zO%|!iz9~+lRH6$-mr@{)MuvO@2zv-!0|ZJRVYY)vj-)2q6m$tjCX#cQ>Og=tK!DKP zL@AcTRC(LfuP|g*pO8NoR*2?eszaHb@Ol_*i<%ANh6URe``gm=s6ZT{K+dxS?pFe? zy}VO%8DkT2h`$!LRuUjsDl%1ajRyZ#Opm=+8b4MFFhx)yc>pO-Y%Fh~ln!wQA@r>( zTT83<%c@1oYq-l3%>gb%f^t#001R-a0!P>da(i&OF)GNpkmf0fiYu%jRG>ydFuca0 zukyOSl{}4V3CU3?%iqIjdhg{Q0JLxVh@_g!rie&WAQOnJYFYtbv&pg4&V9d6M%&od zJ|!de$fvdaGTj9;;(+hmuw#o9rh1mCHo#OTY_lmR4T@G;UH|s^fD{<;L1=VX0gCD# z!v*sfsDwveXR(1}p1JJE{GC3yWEnhSkBZ%F0v%nMxIh$A&vLR!HDec2_X@rC3Vrqp_n4W^t**PXIRXngOjhkLuPXa-=F zL_(EQu@e zXt5o+tY6jQN%|*tB|xeRz|krfX=9_%fl+8Op3;_(zq{VH1mjO+pYP@=I7ucz~Js;{QsEQ%Ru!Y zBmEEo3m8uC;cjZ1Z=v^9#@}m7=`X|Rw}{*2tMKrqaPtQgW(D9FE}~W0dvvFk%Oze& z?~F`18T^R5L>HR=>!BD;7z5xEBO_rYqT}U|ih>XqitT#2nQZ~u03jwyS)?{B zptHu-?+6W2BaZ-Ve72ENp|^cu$fjj)Yg3X@zWyGWe7_0K=6}4;+q4CuirYU0$YznS z93xoH*E`Ahdk}j8@F@za#T60>s^Et1v1;qY`x}hB~^5e2=L-r`#v&C1`WG37688C?5HLLiGP5dWZ_E zfbb%0a+Mn&`jWD3sF?@MOwol}2_W;LeqC4U0AHIc6v2Oto8l^3q;Sti(KfYY7>N5A z>k)6S>5X(X%2&SU^_R_Qw$m9_KERzxP3)@z0T4ugCeAaneINM8x^r9XR&DIyuW*VP zrYm3=YRYVrUkA6uX}F>3?o_DDFqkUVN7bN@Lw^YzBXmSsX+6OP}L$Upoptz>p? zJeynqfb#X*o*o8OIyh7tKO)Rg-Ybp&UC;X*dZ~t|4!m5;ee*JpBpnpeHn?Zmrd-%> zz+fRBhPD)kxwkNl2_n}j-R|24qynOyFJk6j)b75hJ*cXuk2f6fw(vgF{5!7weO&k9 zxc=L55Tk)ncEj|$1}qXJe|{{fY^G46`h8gC*u;SP`AfE6=0pm{olRc4o_=}!=u4x& zv)p`hE-@3zO4SvYD<_THrxFWiBV=Ex7A`nco%_>q*d~8G&UQ=j)$L3wK%<&P+9tC> zB|SIaM>a_)GRW7+3+RQ^_S-ZgzjF5p%j}sXrHcHe>vksj4wC~XZx)pv%`X2wS3Wr& zbA`8wW9B;VqRq|xL)t_IjtuDsvj2KnIljJDKG!VCyCdrMJ!)XM@tCd zV}f)7*CIvcOATD5Vn{W zi>0t67Eew|?mhyB;DEj!yY>D3fzlgg+G`=u7%;G`Vp5v1PFbSognK`ww`7kWx$dw- zAu+P98ICFT&n*1C0kY1R&H|*E@8=~Kh5wC!RMTWeSKk;tl7PWnMb~ofH-UIpVyvDX z7%v}2*Wr#TDgu$v8-q!u&U0I^0aI}qeg{2UxRvW)xSN;r6Q>!^zSvAf_bGq6r` zQV_9J=taXGm3LsMIoxr^?3-aPJ^c^pUjf4@BL#$B1vLVdBwrP2FOy;{c4k1Z)` zI;<@bKZ9}S-?#GB*uA~3#LWV#W?ueXRup~y^vH@s!)5NzshY|~8ks-!&NjIuzvm?Z zVnPoKCEF#W{%^Es{*$UX*S71J^Ymf(Q;=$I(qc~@eXj(be%W~SmecMvucf%eYTM_# zA-VIa9o84=g+WIOR5(=@A3(!jQp}Xw1q{DE zS9*Vde;*7dNC)06>^exjIK^^sP&280kAIzc{nK@wKHa#Fg6&QEr7Ph^e`l^QCm$ln z*Fn(_DD65+KM%GrYClBV^AkJa8rR`{hArl&$Wq?vIJU9s#BPOL!?Ym5=2#~!mfl6|Pg4&w_ z{3Oa1Xt^?Wle4QvD2A#wd|cT=K^>aUl$xtw%@aO2H7p|aQYOKd3X@v~!*CQXH}6$w6OS~T#5eLd zf0|#*T#B_cVm_}8y;^!^n=1w@=Xmtv&L4MIG+@rp%i&V*BR5g`c1}!IiQ7P_VJ$fS zPLaD9N#Q8>GU>ck+7lZ=8K)bc^9zlf3!y&>qBJiSe|tmajnRJhMI_t*j2|C#T6xvI z8b5WVUhA5DBlQ^Pl@7sKxxv&A7v7TV?6GzFei($PG)v@yuzkp-;g?>BR52FGK+Yo$ z)?9378-7TNZ!P2_9=WkBXKV3!Bj35!p3+l_IEr$ZbcQ$Ks6|WsLh88i*bc0q930V< z1T%C^OK=*!XHnF1lkh~)Kc&WoZ-!eZ?#O$LStb7B6r2qh${_M!u_#d}GIK`;%*e{0 zQU8kN$8dY)@dy$VZ3J7dxIN=kQW(>H!?OS%^K56d7&*4=+^U%B)#G-I`szq&TLC3%}oSaWlK-PU-`h zpSSG-88}IkO`PVyI~$Ixo2(2LIVk3R-Kh0o`a5<$tju_UFzhF=Xh&@sPm_8@fPqfy z06qM5S8k)!;(Bn3Qbz$0;6~MgF>_jsHt5 zZIN5^NJSLd!K${tWq}7eYwWC)j7Oj0&8yw=ME+dN zf-iR}qV9wiF0BL^JC#MSGn9Eh~~F(q>tDJy2(6)RjA;Px$Z zGD_jIPR|_mf$U}DtaY{_#{=cNO&)&pT254Fxf5zH34G*fv- z4i+0-2uM>qOxY*>uuINxX#6gvLFUhmG<<%Euceoe{Tf#45A7*8ldnyC2A1vb`Nk^o zhN8j$lnta@FZ00T^K`z6h3VP@DazGESa%jKT9Q+@-o{F#7ML31Hc5R$KpZ?`kaiqb()4e`hY6Z6K0)}6< z%{pd5&Wwkn<;)ourwejk`!at~{EwX+Y>-Or0@ja`Dh2#=b^X7MJW@ zrsbaWOtuM|gZ&t|-r>?+(TX!%=q&LXn< zBM#WlZ2&2)AC3Ovuc}bB4~+?y&a|$!!MDmDp99XiUkd=92UXzmsga&ifT6nPlA@2* zeL9t26Z3Nu`p8%MfeHw7F_rc2v0XO}c|rtV10jPxE=Ryuxn4JC*XX{He?x~c0S-KA zv&(`y?9*BvO5l_fx*rDG{D|MXM%v z$>)%^Qs|O>JGrbOKj!a14Zz5+3l6hL{W(VzB*g?A)!?D6H}e)+$$N46Tf7iZ|J@`; zc~kDZuzl8su*@RGs83I3ZSB@9Uf^Wp3JH{rIBrVx4PD6V{V6%ladrY@+J! zUYDPz@))E~bcE<6QQ-3h1^G@;QlGIJF2Cps$@&>^k_Pp;;nmAOhuMLhp0X_JYC2Rh zj|bGjF6t0?%L52WDXXfy#+u`QBBg7&;*I5S`t6Myl9d^(jV~B@U-Db`=GGe)W^o7X zK5fh6_rzX?TS2==S7go@;S@m&r`<@80|242@hiG*v-j%C8!J$PoexToGAH>UMa|ZV z%zPK$T|PmXme*-V8)r0_=36V$i7AsYz(+DyB9JnX#05q`ph=`gdkb-HWtZAi_nYq+ zW+Z3#Q9qO3_MV6D2F=hAm(NJT5Yl~ct@vr3Z7MGm2|!rOz6fI$lud%NIR{7}7yt=v zK=S0<&2VLa)IZzKG!(esslohl&s@(tx&kV7MGJL#TG&Y!ispO7k>EA1|5w9xqhJic zhwligg%KfxASnQ<4@j{9V@$fmoJtiDcivyVPoul6+gEtWer)~p(dTme)ESu02sDi* z->nER;B2O_ao*rf-^+Pi_!6H{W2{}X%%Hf3T9)^S`EsT>aDF-d|#{(_xJ zuZ0~?{)K*J<_jV7TuO_@0Y+spUFv~Q7Z1-FlBXQ%5#~>A3J2rwKi3YW8)@6^{K(ybfwjpeTvq#d~t0Es?Qp5to@TNBH9k`yZ8f7Gf9m_oFP9mh=Y9mDWT7?ZOA_` zm~cWsUZt8iSRx7o#%{f zD}hE`IpLUkQm?^c{M_k3(Dj$q`*KIVRL`B$*N5_a`9Igksq+GZi61~w!1%jYWBrpN&R zvaw+58WHO}HN!2BvdR;#7kjD=!JQ-QZ*pUsE{{s%WDbTzo(yU^3+%EGtkDne z;ZD^jeqP{;Kt#&T+d+30Rc4hRspWGp@->5!hu4Nc{e2m`;~(g%(Gfhf(N_E~%IiEO z!v>D9yv>vYZ8F{`xGUr2XLiuQr=GVSg33lgdgq&nOXbD0ifYH7g*RVJc-@fw$6$F7 zHJ%BUkvahD_*spli;nnjv(UyIcy)OCpaQ_Pi9z#%OT~HDl#F3eEfJ|kMzAA>k{wX1f`qDeTC*T2rD$7r)it{zBpZ3A-yf;?q^ zqA^|wBnz*}TptEAE<=H=k^JVhFQ(q%mTB%Tj-2WWVMU0!yZd!Pv0WhXj^YU%Z^@-# zh1Pc4+nBWZ_C@d6;PZTwN@s^vo>wv|RxPJ(ddB4&cB=|!r;QRi!U0o@z{YFV#Shp6 z^P|eC?|-Ny4R-7weYAekk*-?UI_V!k{?aG83vR)vX}76*P4k`b768_ok1?Ykg&bB9 z&E`xweQUFP{M2Mp?)~-^_A=|X&8G^zRW9T7ZJ3_C-RhFjTEMW8n@y{GT=o+&vFb($ z@Y?dS80&r`WyH?q*BeW99ZT`-@#UH;4bIKZHG6P#>qWwDdKxk}uZ}c_hre_oxuWQnNy6;1^9Lf*7 z%R2dQ$`b{nmT~vx{nd~vej+K#$KBv>!T6(YzLoE@fQ=QT;?gD-drq5G|VOVXhCoQGaNXvgPV#}FJ zBe@f$f|oo?d3m|z(RGSubj_4PTL*(Nq2r?12~lB92Z^x?konzCmmODbF;_u?67ac7Gr&ss+4N^| zqFB6uLw>-&Za>ors)2^e$B~Irajm+tXTz!CYt%h+z1cAv4ci<8t#cnIC(4X&hy0tU zG0@KXIPFkwe>=={vSt5pt*mU;0i#vrHwj<>PEx&}Y+O!uBy`^2gqviMmIMLb3jQDB z0J?;yOB4kEk0f*w?17gDVW6+Ods{eL_f-mbd%h)c;RV)Bg=F{$Ax|AN4T(g3t~Un8 zSs^12gzj*I^f@3*4jXf;XVo3PVH}{Z_onZB+E3)XY4eH4WN#7t@zdY->wmP8|GoI< zwbD{@vp)qRtk3olCEw9)8w)&jR3K#L=G~u~lk<=%J4YqeqDF^_VieHcTabG0($QNx z)NB4uxMZRGj@SA$ zl9B0jLOJ0#s+`7eW%^sWK}F8-ujh_g+_Va})zEs4NU0{)Qhdaw|JYmQbYWUwkE8z# ze%SgA74ug#{kHP&#}0~C23Q*$P5-7`8=-5 zZs=+$OOwb=`4ruCw;q}MSq-6`S@lKhTS`Yc{K*%|eIDyg#WNH?$DJ~Jh)y_+DL4&N zKE}=YHQ`P{dT*E7{HV95$T?>cbO$8CjAgS#SSg%{gh=yGuN~MdWZtdVotzbK0IK9H;v-NoEITTxk*GvNC#>z=5c-=xbNl13CVYj`Z8MO5I(8hTgh*Yr=zYtvtZYZZZc} zIdksFag!CFn#{>yrFNwdxMFqHRN^m7;I)TM=pR7HwddUWbkb{;lVOLXqOU!%KAJvcGFD`Ha$v)=9lXN0$8J{iXwm9-@N;-oLGWIw3T+fI6S^G&?<#r4Vi1$TcIzk4Zu_0Psv$A@?C z{^EK!Ym^xBV}ozt>D|3w@7AuyUH`F_J@D%8Z{7Fo``4ac{N?!Q{oR9s_dl=3-@o|R z{6>QO*$CiCZ4p}+}skb8~ z28Qh8_?wqajMIi9rILoO#Ubu4TP{&WqGZ&DlKTYARtytqvYYb!Bji3oGqqzMjhTo{ zh9d{lIom`RyShM~@{@f%7-zZ~YMgyzQ%9}%CMPT|05vV{L9iZE(eW2sri$dW6ge

nG`^b|2wU$Vhb$e#o5S1LLE8)t_=3NLMaoEcJYda*#sRPsqoj2BT2t0z5Zl zZq&)$udW#R7EC(vZd}2@fc~M_I8XYS_q(T-b&6m7xW|gj?%2?Nw1?T_LiM^*!tJ_l zTKLR*?SFKHRHoEMIz4}S&mcJh464%4S6b1YGdSY+Np7Toc`0_lVqu?J`w8inNiS$N zCT<+@y`sP|lG2bbsO}$nq+k&~I9rn}n!2Ga_?w7)t5{QWRdD(m$HE?2MphsVtIxL@ zJvB6Hb$#7mwoY7}{_Z&2i+Fdvt64L4M-e+C%6ki`WP{68M0(0zy+7u#tE2n3@nUM8 z#gq%52F{F&|aOzKEP1E@VJ{c8~=#)AV?mBO>yZ%IWW9^cF zFu-{A!|?3guNs`WB;Z!kxd(JkxctU&=P4^PW8sILfQwAnwFZ?dAl$9#f4b6Rl8J)`iwRI+FL=fc1}4cov+&pJ*w zRdNy|h5N|8Ee0H{eo^E(ka_U%hA42Q#&Ad+ZD|N2iAI`1@WOO7dfSo*c&iH7V-EX@ zjurZL4l6~Paj{C!BsD}3Y8F%qgnR<}$d+z`rZ2?*@Sextmj!xWzy50EY70D+1Hq&y zQ;{$W?MO2oQidWR(|J`858_zm!K2qww=+A5u7|t4I3s66j_wh5^?}50mpgYyj@r;3Hf&M#FTtc6&1 zyhYeUoQKRsZ~ed>L?Szx(Uo_tzQK z201T&zXJb7+!=Ucohtt5e%QmZM**Qy3ok}7*CP;f6)$dC|4Y9Raa8cj2bY!-i)TqM z3g{w%P5J-t=KAG-ds%=ZODCN9YwfU;tg*D3VDfD})?|ymGmtcM7^ju|nQWMsv7Ms& z{+x``qZUO(-lbolxEC2I&BH&e|H=NT4gc|InwIQ=oHVX${&}{#a_=qqTFYxUPTq4@ zzJ-ARjBl2rGg@W7c}E7R z4;PtCxy$SNEFN_T`lDWS;<3B@WuL{p$e>Gyt#Y#TH>|{W_pco6WrJF-X}++2J@72~ z&p*?R!{$K3u0gWf>OrRTW=fK29yqAv$DY&w8lfY%;p2>C+e>)G8`!!!Z`dxCk za@^IurMb#+^iikM&|31&vBRx^XA{x~dXI)~{!y4H(m2HR{xe@#f0XKaen;V7@Y=ZZ zqdzAPU%mgk+tc|l{r)2IDBV3of|1RO22&hlR2c}y3{i8 zEh*x?%krP>d3Ski+;LmQy)`r<(fNgEG)g-+o;3-~9W|ZCN zO*EUIm>bGuD!k^!7iUwIrl?mrveDQnsv<`=0l7>U8vN)Bvz9K~`M497mhXzo^)yK1 zNuDcN3wX!rn9o&gdYvCbU4~IW6&o?zd@8owO--=ps&v*|$|OernT;-ml?b3YwEc+@ z6e#~$Ff3K8qf}s}x=_o1yaLP^G0+=5aA(dL^wucHed)V)i`C-xW|&gpfq~7>QGPu; zy7ve}aTryznbf8Tz|u*R5-G3g<&10}3#ZYeYpK4J=NR0m-O&^$YU$&T#wm%gLGU#h zY?KE|>(iRh0_J%$-}sqH(nWY*0{5W&WM2IY@sG*bsdc_5-4Ml;*g4nkF9fd~y0$9=`K0HauRe2hbDB=3nlxjM`kk7R#D3e zg34tlY>%H_5Z5sY^}H3kYKz%mS^5%fFfOURTA4ulJ)a@}rgr`9BlzN?B@A8W*BYA3 zgL>xTaFR

L@Y2G4m{qst$RK;m_d!jLWlo*g8A=1*x@;Eoa8&k8-sU)G+HpeWdIB7w?$IQztW*Zbx z`(uIIfFL-LC4+*&Q;s0ZaC5Comt8W^jCPozb&Z1vC>S3(1fmCJh(?NhqG@MqIf$|l z)lhu>K9r5N17QX`IU(X5Ky{JXy)M4fdBpqQ2?c!{0uarsl}KkbrK zt322l?@=K(fBscbC9SHF;9K`EVji6p3b|AB zlW*N1B@|_NXReQh7n?gW*911!*U!X9P56$>6i8R?9=j_B>-=_xUKh>)#sGaI zsiNZsf@_csFf;p$2Eoz)=(uTd#r^?Ly|J^BWXcA}|Df2?-wiOmsx7z-i1|Ow`CG+o z{7)bB1LcgkYODY&C^?;BWalr1FF;+1YeCbO=qW%L-_>mA(I8@%84HxzpKqBv_Qfi_ zDPhR$Ziq@hLXN21o@=n`yH7-Fa`3~ZqU}hs%s`dbJc`nA3Yh`5H9Hyij0gb;qIEvk zgc_2Br1x$Trorr99<`ZYo2{n~U1uVyiFzhF(b^+Z!u@kgL@nQDvNKkgQ2cD->y@flSA$9Z6|?Ca-!)J$=Rf$PviBL)^o5a}x&$Wv z)VtK05sIgnXruHNK+`m3zu7-B^skow+LF2ZDWp^XPJb*>g?jfVBO*Y+5(wYVe`v{o z=b;HjU8nqfC)CxvchQ>EXm=Vv)2&?~X+Yeh_k^%^@IZkm$chXMbQ2J$$IzIHTI=Md zK*aty3KoYwKF0@7??8$x*AG#xl9Uj;x0qgNi^Nl33ZM)=*}chlKtBn)#xK;`hlgOe zXXNJ?1tH5EJH+aex3XN+&qWLykZ#b~IEwR`;lbLj*y+MYfmDMafKdX#@I@ltaY%rN zA9Kw;i)*B~g=h_bowDi{z>J-(R;#`)AITdD0=#j47bDwSTdKd?( zkp1KMJr%Ff>+q}D#m@D<>=MV$#PtBrHR17x!LDB#SDi&5XAqM=dGDANgsq=lADu@g zaXzVCNr6&iYv~i6ji(!eo}Hh4zk3k*Oy^@c85{NMnd2(`Uh++k=OTiPid+Dkhsr%Bk%u zZCme2U=Tus=kmwK0RKk>MzQR6Rx0uj#El@wE_iS~@!9ligmgIkC7YAdt|0L3*$;M^ zFQxeg>yb>nyP!5mmBppk8_@|=+|Y7ZHGm)Kt}GA$ZZacM(* z_XhV#4wGvOQWIaJ%`b(N12;btyZ99qns}v&SNuyKzuRN1LuVVmxO@w*J>#Q$^8Feb>c=T3Qrp+uZgFdf|?`w{}7F)sy=lXymau# z1;?4vfi@gZ1Gj(}O=I!0^@N;`!pha@)te$KhxNFT+pc~7l}XTw`K##d;#N-Rdy(%I zHxz{^??3In9t)1uRsK1bzGF@NF!4EIoG2GXB2{H_9M>>aMZfaeyeVU(m8 zeDf11w}W%0P|i4^M@&Ou1?EN8 zzyzX*)HZ@GgF*DbPhQ-!m9!HQ)69zUxeaiX;$-vNC4JHVoF$8#nE(%fbLfLhIWY$d zkfHuw|KiP!!#TcVQ^t&;XnpIFWIN-VqnB;@T%)KBnm|{avsOEXvt71`BXWkB7YuH| z(I-iY7pW#GF&4ny#l_M^3%J|x7!EP)F5*@Y4li{RK!GVHGJdg_b2y_~o|`*iH+5x5!*Xw05VHoLk6U`8kLm z?a(iqDu}IeP;QykkE}vzDs}F|GHJnZ~O#{ zz#PZJL%W|mtA9`0GV0kwwsn!qDa=mqH%1Tb1Ppm0I9hC#TcA_XK;7% zc>eZ=DmU0u8%HVFO`OYreC`xFVd?Q?*#eI--b{KMy1a9WmFA`+irs(1RVFRlcGO@i zNwUm*n<-1K{1%c|dvNV8U;r=%oer^$xjyG$(wu0FqC)Uc3TRes^7O-X3-Sd1DjGuL z><2~C?E|&_>h!^OquCB+kVxYoAwtloD(0z3BB;wi zl&d>S5zAxcfR!{&6(7#^wPZn(;bTi}?3ExH&BApR{E)C?ESV6adJWz#Hy?$k z!2F> zd>#5_*fl-6r|&5Brb*Hp@7YJ1ZbQ+3ISjl>!x^p@XWQJ|hGYdf4^xwehim-W+ojyB zavG$Sn9Q&Hhj%s|I><+GUP!AL zo)-yI>g@I~me1h~Nb4S6Sr1csQsfyc|C7@%t#|mN$mQ9m++K1DtXx@X6qB|YY2uV! z*O+~!ZvMAmWk+J{KZ(8Yv;hGP^4MuUb^Y08l^m;$#9Gtasb)1V4yfysZ%T*XJ zH8h4GbmZCE=<`lNsV};{TjGg(Khrjbk86ymeQs)RU+@1hye+KfD$J-j;R?cI70%bg4PL=g5w+YSwW;&|uriyNUF7=_-C>>tk*&a4HOvBk8k>Dtz8m zy88jD^QtQ}*k;Pq>hFQw8^O<e2&Vn(36faqMDRyKbQsMX?KYMH6^r!nT=;?W>AhXkvP??!Ug zk1~>3$}nm-g5RaKn%aL#Z=GMhT6?EB1fOA0m1DahVlQk;ui+m$Cqo>yk&ed#zs~=TW6PxmVMPT4!Jd zg7VJbHM@{PfXMZgfhLV8h2peq&QRwy!N=?D0RGIy;A$Jd7U}y|sx}rmRp2w$hDki^ zG@{o9D}edYn?O&(y~mzBn#ScFnX1~CLE~U)T;mo`8UG!IIB>n6HOYo18m!pD@Bv{Y@#iy|e;ieC=R3n82N_x})86~|nmOZLz(?$*=+eWqq+=;P8;%{_ z6th1c*Y}^#M8)bA(D`Pm!|&I=!2eEW9n;(8`3KS#W2F}e(EEV`T7nsOvdlr+3=Y(f z1YWG(I?N%ED>jIeD((;2@?)G5T^t*?s!!j@VRZ)>qhQ@S z7;~ljVZR`N;ZIBoS=T(oX9Wr8@f9vS-VGz0n2Y&zQg0Z{*cs;hSE1kmmJ}-h7^2w$ z!xCsL8LcK#$0;#1a1Y86C;XfoX^!=$kS+&RVGUOl$mBK_75`JZIM-)~6KlI+5y6>B z9!oy(;&^^mUV66dpKStlEC=Td-k7_2(Wc1n;P;HK_|c>^utNMbMUjG_)nPc%M);qf zfwJ&C`72o4#0IzqN;MWdW@MC70-t0b*sBJl9=RV~NX=3NTl!1p+#TkH%e59VmzC~86UV)3B8 z!g9{JKg&NQo{C>)W16>t(i!q|k=8_GH^S@)WAv){NzvTomlPLK-sWMQU*gP(kS@|Y z+&mHF-kryrCm(9dHe(i7$Z%*YFdm~azS`})^95pzr@FHTO18U&9 zKCS(t*z7PSCox6fhk4YLUXF8Hwih~5Oco_%(HO^YWfGq=$z-n1%k*C<9VAQi^57@( zMmF8iOhy zI}aAui|EaTQtA1joTVrTrxF4FB2pQ zzO1M9zrfJm`t1+u!oJJZlLjQIua+O5v*q^1UyQ4PmJ~6)GT&yYA~G{b0iY=RbvO*8 zJkbnfC~H!y%iuUwOQ{QaQKPZvH}=1xqjg6XL|Iyd1N!16+ul+g;vjRk6uI%{IR~S} z_kIp5Qk8i&mPiJE%7lH5oPFl6w!AWCPVpe-oI@1ldY_ch&9hD#T%yCL&gwjFb?JS+ z5KHNR{2XhGdj7p|rU`}ylwy71fe8<1vi&8g!aROUKJlu#XIy)3jv`)EfHl8)QI~4u zVt7J6;Z&8rZW#|w9X6L<;?}Wv$Us(We+y(ogxiQ=I+~bsutUwpQRu<@ypIIFr2+QX zaddrAdc8Q6x@w0zp3;mlN)S=b9)7ABc~5n-%%4S0HUP@V8@PGAO*?-K>=W7MH^`$w zT2^j&Bq<+d=u^*^>h^WrkALFW#>!!$;`JD9XIVqVX;z`ar>_I_*u(X48PSu$wJ5!HLspnH2KDynz~3Hd*J2 zzynCKX;?yF)A#sbg7jg6V-CZo%ECcyWe*qX&8 zIpt`#yKBdK3)qtoNi`h@X9b#w({os}5CwV)e6RGAt|kLcwS&H)41{YQ?BBr01@dS) z-P7Mq`L}o54%i1|`Xp=`b>i#`v7*ihvy4H&5!O$2p^>wlGh9 z=_dt=WdP-Q4lF|1tFCH?P9gpL-Q_@0F}rOnJzAZ1JNMO1@zuEs(5JEWV0n8vo2<0z zorvrlODm_(@=03VnIg&7SJtYXh``1lpfHo;vN&n_a`Eu2mrdJ?6ghHK<>lQQ7QI85 zJca+nn_jt1E#!QY#Gd?4S=WbIJ)yCp>k7H{3^c=F_k)~X^$D%melz>Ra@x-H;?92I zQqEQ1PevK31a7Te z$v0fO7+s%PSpV1IQqPZ97hM#cp@UGb(GjzSyc$CidY+rX_f>rW`0;`2iz7mUbOr8i zbxJMb3>z5vhw(U_{YoJ8Uv(Vt%Vl84-YPx{Drz-)o-tR#-LurkGM-G|J1Ab7>w6Pn zo5rCAMT3lmIQanzZ`+a5C=c}a*-NWQ(F<@hZTIojR+3haN9!lSDS2xkN@x^>##>b` ziSqu0n)y;=sO7mu(#yCrXp~XC48cpStKBd1Pgish`NU~H@K}9KO-u}jewx3Uns-x5 z+PvCX#=VC-k=^e5&zmTM?TK2Hc~6$tS^*<-t#lNVm?fGI3Nrp|X+(%T)Z|k(wsO~! zLe(FH%vXOsMnC8Li3y*y3Y@M}2~b=x_8?el{y-O-QP!^4{zlWBBb3ki#hqa~LaMQo z+xK6Oe)cOm=kWPIOdijc!)lxQ075H+3yATt!UAprf&dO=D}I;sr(-4If^q;^YF^AU z{inIBc(Jq!ea@IwN$~}aVhd#z^PI`_18$Y4=P#bW+uuknJaO6%Sm$7Z^jdj+R=-l% z?Cgi?KP&LzfIq|W4s_y0DGYAH_rbf9EkxaUkka(zlqP1q_}Ao(h74SJ^OSK=1)WoI zm@Yvg#^9F(&jHslBceotF+T8GI|d8I0h)A)94g=jO0i!}$Xr$M6)CxrHxJS!Ot00t z&+Y_!tLl~TT9YNr4r`0sQ-VuWYr#nC2BPI*9sO)yahs}ZiNfom!1LD{=;!M~UZ`Fz zQGQ+0V8hlJGT+B|x=aZjqxUwUOIFs%|HR-6OSx;#6;z@WFA~Yb3YC|OOm~F{fuGpt z0uOok5!*{*`jz`=b}4w>Jj10JESsTeDu3MfbrbXxI~4||2(}~o-^R{|Qxez0ouHBv z2J0yds~+={QDp?D9WTwWZbqHbIAA&W@}!L>pD;Z!)zPmEOjUP1Ro#`4x%}SLy7sT^ zYB00*EW7%DC4=gt38hM?1dfunV#zA@Yp?4YZmu)tyB!rxAw(Ke zlFU`*8Ox{D?}>CGl(q7NQaS#C-%G@eL4)Mi%+iP_$6m1Z_#>QjOdL!$K)8gD1qN zYm7M;>_<#R{n_5CHA&wMQTtZvm3ocuwpgbM_h~9}#J+y*`FP+WF_1C*hUV=uJoKAuDBfr6hoSYCKyc_ z>{!H_)=fXB`}AsUdR(-YC5_kgybWa(Yk7Gb<}t5EYReZrlnE18Hx9b+_*PW8`8+o&nfq-@`%){L zN%c1?3{`vBqr()o-Zgs%0T2mDS+TNE#*<0JnC_acQy8n%+-2+5sNwC)>tjLeV{R83 zN`97<7hsa83-hzP zVg)+W&yLcRqFHfen@B1BJy=jglMx86js{Sr`r&U0C}P+M1j9lHO7_M99q!-22%?6uD*#$% zF#sGufvJ(7+QHV@t8qYrH{Q%Wb=~Kg5*RI!3OJ>S06nb;;=VK($5!NUTxoalK$;%V zHUblmKsIhFy5X#6gv4`xV8TKXAhsg`%$k(K3c^tsxgr1!(L}QWmlgArB((D zE0)LKuKYPletC& z7hF(Cow-Iph&E{dU?Kcpw7Sd_pc+_@t65#25IeD@+5wuRf3Bl zhqW#~z@+gtpEa#Uc>0xU)jw`h?Kz#o!l0U*Z8Wm_&au$4$y{s%sFF^_=?xafgV6p# z2Oznk7CnefssqKJy`XNq^Lh82jrT+fw!4jt(IN~!dDOws-A}kPTBM#2a|S&f7aEPy0u~_o%;;g!mJ@$PxKn_twlzsBW(4 z0Qx>_bj|j&sCmPMY$@Tjtb%EB^bn}D>{q)X!4}i1$>bu*GIRXOL+mO|qmL)5z(2hN z9Kia(CKY@GADtlZPRKK()%4;+FrmdEHF>j5Jp+-!5@$ljp0>2d%JQ_(D1Z>AvEHmsz#l^ zpLm6b@ofM18N&>+KF~=<6kvmTpp)(jq=*)w%ppg-jnP!L)M2!gyD!Q;Q^URcQ$SO@ zzvu=ig6XAR=)m`@q=;{nxoiy^%&Tm(W;rH+K$rYqn_w{VhwKU> z;1tFCR3AHZ)sku`%l}~y)pB<1)TWbaO=|}GEAz^A?3cK^XXK4oQMZ!z?Unbi*Ew}X z?+Y$~gOf~r-Bi7|LkZ<$M)&JQ5c`c!7qAl_)>N(A0&A|2=pdnz1E2@Dyv+<;@7r~6L*NV5$KQnJ>IvvHi^U2wwDfVSMv0}RkH6nBVe)}&7rWuYIYZ>*VJ zDot|IREd-78Zs3TPVV_SJ)ajq3E8@kZ7dD=R!lXoqUgaGdOV8-T*FT4-Q?9Po-{Ud zZr1Pr=m;6qi8a-0G3s_@9ZY5LbAV3Bu)-lbwrDeh-UgO`?>XfB!dc8KkG}230yq>z zAo}gz$axM1F&W-ye9Hd%D=q0G3oZYAjkYWYxcoF~U=YUlL*k747ABfS5h@n${e z7Ngf25uw{J>jfS9Q$+7N$g!Wl2f>s4#gyW(;&DaEp95JTr}?T}aEgkud_Hh{X`zwJ z4%n_6|FIC#cAR2qE(_|r9~T@l~_g?R_Cjs^GDQvCmXvcyP`y!1#5SB%GNoRIO<$l?wFM#uk&X%D(6~BV zPu4d$+Ic)j!>xnK{<)?!n5+MTL;AI;?K@irs!h!j-k)9M4$;}wdk{`wp@GqEB_yMsvGIoU3R` zen5W-FC0E$WWrciSa!2-;$6~j1@iCJS9};FhGt3@!pxlNNMPSm$`FTw$6zE}&RV(H z6HkQTU0$q6_L9*1HI5>*Q~}*N;#rV|M7(r>Dmkk;f*C&5l$|#Tp8o9i<}r(Pde$9C z%zTT{&5c7ls%Mi0VkT}PzUafn4IXX73_>4wG7D$sH{ONL$dXGjWLEhA-##Y?3&QZu zg3$6zvr0SIF8K|(cp=>*ufuVM4UqgFFxY8HJS#ThmUYuT3?-Q)?EYV~cX`9Nb;5y(9LoHTJ%< z?-c^7-5TJsLHij+A=@|k!>ulyB3#4di&E6yhcr46pM|5E1OeFS+{2~^1ak}vwaSJ$ z1HvJNl3K$jFjVBkA8^iK79GR4xn!|#49(S=;l~WqB&XybjV)rReJKuTo}-lVM!&-v zY+Lw8qKrXklAqQ^$gxrKC;F3m2Dk`+=o4(Ek8!IZrcJ_J>*y?-q&s&bQi#kAV{k%B zxVbq0M9Q?kns?lcUckGN_h5%Yk@!`+Wb|E^Ie*ye%2EH*5%EzMSXGa+s7NG(ijj@o zh@EL%gM)Zm_!-cK(qSb1pm4F)%^PkjL3Kyd&ePJ0xM=o*I6{tTTXYlO3>$Qm@+7+5U$I5w+&j=|EE=Nmc6*GS5yT|8jSgs1`vp_bTf;J^Ynn#^Z2 z^%5RT`_V=2sx~bi(49*yl#;FLNOGc-i~jN)Hz~r`tA6iNKK3+W;U~TEl<7SX?J$j4XUq*S0|ulLHI7~-ilp3s zQ7~UndG%GF-&9W=bCpE`Z(H2EQ9G#h*0*aX`!1DW2BRKRl5=drn1dT@Lyh-uy)_?r za}haEr1JB1b|BUz^M0kX=geu!XMQ*}vSj>~-!KW{YZ>~BDOUijgGc^;BA960KXJJ_QK#?J>eejij|zDMB2F!&3Mn610; z#J^b7|H;N*^bg6A;*$KrNZ&`!PG?j6g#S0v&Zu&59QCGGgpjpJubW)G^d=;5-Tua3 zW8{KbTUITzCB2iMs;g#H=~!W#`G46xEPdne>s(7j!>y$xFeF`8a|}}qILt1?`JLw+ z`8Uz4@$-VH|9uZ<`dVC8TXtpqnA63cckk#|?e+2uNohOREd_c0u>7MsbiJUD-x#%% zl*FMTJ?`4*H&Q6Gi+3>R-Zw|w>GP}V9nJKsiFfj|?9Iss73HFusxra(Vw$wVGequt|{pM|89_bU4XObI?n+gs(j%{|MS#r%EeYsnIQh{n44Ty+a($)*yHkaeFS ze#VqZdKY2}hHN%*6?cBcW$3J#>Q4N(vkwa9o-IFEhJ`~+__HEr_zwVpA|AAh#l{`( zDYYg3q3aZ(f)t6iIPxbW~HG z$!B&Qr=gHbYCl-Ze8czxZ?V9|NaMn$G$#jxrT?x-`sE!xXf+`mdJOEJf@T<11o@|b z*1kGKMbY6P>iW8%3prgBl>z=O$PqIE_;jx6ofBH!0mZES+Lq0s;VtBrGM6{Vh%<)B=sV7yaB%Izr) zP49cy$xn0O&4K$BiV2utI};>E2M3OMft_-_VzqRHM|eqcLpHL%dP8v>xEvU)&(@ue zSybD{XmLF+XIN>8+Y>DA{x;NrvcWBXh+v0CGW^>prw<((F`V z{BtX2EE@qM-z$bU;|4&M>vd28uw@;Xqt4IJk$g5&m&2KE-pM@#9KPySISp8uTLlaB z0gud?{RMH~sPG-y0Jy@v6PF~%tx2{_srxKuZZ-PyKD#YUIuI1+KY>XilmBxI`>9K9 z4@GoCnxa0Tt~l_W56eHHO-^X@OIErI!1bw5XI!PLvG60tgT(n3puh$v>Gs+N;C$>g znC2M$P?a)m@x(H)zcC{P!D$Q`;N3+aY2dQFT-fwZWtI?e`Pe-sa8oCPULQAVJgS1i zO?NmIL9B8Tak|9&GFOS|lit_Q%R}#h)JOA^jNj_w?LWpl@XwFd0A?l({q_N5f>V5A zgV)Qofc4*@6jc|Y2gQqs%l^)WY3}7S9>KDmdo!HV<1*IxpO?&=)8E-~FO2cmLq-F> zv|lKP8avgI&d8OQ%f$nlqj1rm!9m34OfBjpmARUc!ZF2klZY2otR{(n!_97o^9KcU z2i{L9kfqiRgK(ywfty7-6zy;PRhuB78-xTRK{qKN>Lji1$*g+F9uQNYMHx!wdvH`_ zn-fm#6azksGS~I=+q7=qt2Gax-B0P)t(NZ)WL}RFptDL}aDyuiOoU%}Ra^tQ*>KL0 z5K?g?ctu6N*wi05@ zx~RjPn?TG+nf4RH4a@{bLJ5pqXMyP_`0e4lClscQcI>#Jk z3!c>LG1eS-lj=(`;Y)F{uYtu>o#)x+KwBf%yufw{)gz|yM@5WPJZ7n3cx2UBZ&|_( z)gikhg#eI%t-;tnL2bU$6n$v zHxg{7&A?~aC`f!0cy8UT^w9@~tx}r+fgP!s2_F0E{#r}*;idKS25e_DbO`;E677eV z+065fxu2E?AX4v}{I;y$k~;Kn4w|0_R5?n1OYk8k57qA(i^l9UkY!4`MXwUVHhmk7 zGg?P~?(S~`xlHmJzV|$$<55J}DzT6pEOZ_48O%48vHvn_iVxXPjTFpvP`pqr+DNJ$ z@RPFGIPV7*S`-NY;i%XM^ZiNJnR3%1(gPc!z#!wY$Eub0o5!*d#Cz>rh$rfc9<6mQ zhn;v2odfBeYH8kCo(>u;s#4>jt%uLb3H6y z;?3Qg;1#)bS?3Ns57t44B$fG@5G8sxn_=-es9ieyyg(C${b-(l;%@;R5u+6E$8uMPIa;wn6C^#o}aV-o}DCWXCvoFw6j& z@unNIffcB99r_QfOD9;{U4n!Ob{SnwdV_`xpBww}xx9(GEm6f@YMo$WW&Sw_!U`Rh zq+I!uf*TkZ(6XoI+3viDDmA1E?G_#?&b(#ku3JGuu8ioH7CDldLIZ)Tn!ZT++o90PD!$#ZJNG+%%)RMOOXx)W|11j(8i-Q**{vU?a_lM z7#n~r#|q5ozyK;Q2)F78RKdu?41fYCNZu|^59jI_R5s&Jm!4_$NZX)vt2|<~m0^*- z*W~%6qzDn4%5CSF+aBTCb82wb9<`UhYTS2|jMJ-#Lh_|L1rFot4!T;(GXuZ2f2Dfs zGrpQi;JZGmT%kZ&q!ZbU)n?0Usz`^<{WS2qkg&{HFMEzT5Wy3@sWA^_g>H5=rp+4d)27u z;rYUPKArZ%qL?VeLGx&KipzV0a;vV-&)E}&UG53roz9wgYQ_5wcc~*;WBeY<=bZT~ zSQAgg7D&5D;|x8{i4lG8G@c(-SC+^8zW@dj`R$nx;FUr`q9fr*b)+MtiAh)&8U`eN zEO7u-kPJ#uYXHluM;~xH@E86fJOO!b$skEkqUD9I|4t4+lFYzg>6CjOP>o^)_DCs7 zIst)W1E4w7lLZ8tvh zR^bZRb{!ogHGdsJz_tqwlao+bkv(|;Za_4|w|m9xY2W~wiguJdKq;vq;DOo;c%aS$ zcmSLS*=gu9-?ZX(XeNy|P8Fv#2-1kv6myCMAZ?VzFt;+65ncxk*D-W#urH^*z^?eXGxL%crT9WRjg z$D87XEE;(qi%8x8Z;SWHtK^;W3VDmXA^`}%a`BMhT=Y~3y`+mHjsQTJC;-q6DCK&2 zW0;@>fno;0!>Voiy4LMBYs1tMYeC?|nqNw>N=(|eSW4wph!M?8VhwtjSOaA#)*9JH zti#ANc@xNa&%AfhI-NimHh;?ds*bSWs zdN&7z-auKs1Af`^Te!?_y8@P0r7fiQ0zl^V^O|`@td?HR>7WSF+K$PC(9=q1EsLK z2zx<4B>?$MZPVlc!SErN0G>l}3NQk*#=>c2-1cUBi=EhBH3b+!*-QLdZZ0*MHRfL7 z1iCj)q1Mc2qKbAFK|>eeK#6B z->WZTi|VW8g!+<#yuQY^nD2xp>pKK<2%L#nh~|efz^LY0V}1}h@G}Mg>AiKq0H9hl z0Jy-(aybwL04xB#(eFtBNd6E2!~wjQ0zh1=@V2(70kmtBa0P&Dh5-QGX#ij@=n4z~ z4h{E3T7Y4bgF67U0vd+V`tN_i7$%6u*_@V%a1{gEk zzEOe&fS~h^z|F|SEdZKt3jj|5?_~i{NWqoT|Na7kg7rdt0annLEUow^IRkzHS?fq3 zSgM=2OtR0QNk9Q1&$iYaRTh9S2n2pe2Y}U7bfr!idfd*ALM2CE8Oy=o)6NhJ{R?P+ zCj;DH_aBWwJE@Zt|DpuQzbJuWDM|pau$`UXby4~ZvBEh>opQ{;ETue&nnVzRq|*SD z!T=*iz}&_N_P^KP|D*qR2?+q630L?ZsSlHT9^WC3^u94z%_xPU=&9L)Kh z&=OfX1-1dx9yz8Wh}zx!H@YIW+{aXom}6oJ5HMb#|BDy+|DI3VtOUF7uRYQL3@mK{ z-xZ!o3}D6GJ0v%E>(Gr(u;Ra;kvuRE)M|OfvyqTED0KeFgoX8Y3`_(r1CxNyz)0W+ zf*N=Uycb{rj|3FJX#obXSs)=`%|e#4Q6#`s!Ygnl7%6ZGMhaN7kOF&P=bsTcVey`r zG&o&{1)BkvDb-CZU?{Vo9?IUe(gY|SL4X(lX>b@E10W3@q;o*Qw1{$ZQg84vE=#}Q zn?XQo2BY_w)%6={W^Ln_%w(GoDkOh+gLBj&DUbqpQ9j^xW-}`UQbPt>6 z8bGxjpcLEE#M4IZJ!s)rq<{*4NK;YL$2oW{l9Aia`bfPMd3ie4@n-3osG=ZgLA?PfVLx;r_Hnh9us7MfdV;T){ao%ha?)<3l`;2 z4cl2Xt5&#K5E?MRya?>SR!gyIoiY+J0ZxkS1tJ{AT|3HrcNL@--U(|7Dg}rE0?yfB z{(I$UJ*hIN3gi*6fE@)d%ol(YScSF0aa!hC z9mAku#bXpnP>>@4HBf+hr!NAf$jRZV&`;za{MI`65pO0 zq`BZ@pmiu0g0;0fp=HG(O@Y_V5llsnssD_%D(r6Xl_aN7C*(05Su z!037cbn;=|tt<^X;8T5BKf z6{HhFsM6v6@Y>Xp+IMhh#V)ZSQ~18GIPvY99$Y|jh`;uHajxIFCWuo3?(PXqK< zpnw>`%_k&~G+2nw0~q2U@qC!&K)}P+-iJTLvY8O^+O$91!;*?ZiMdT`*-|J6V;5{7 zuBk=DR4_B*7wT8wL7c)9HTh4q1v_FSL67)CoB?n=NghF=w*sL<2}0H|w>b`o7NEos z;=RCixE|Qs7~F6s=p>tgFK|}mZUC<&6U-WtQp|zOt+xv52zw=HG>UHov&Rh`nLtu} zf}j-hYA?kA)3q+fDS%~3T>vr$sB=e@{{XO+1C#p58z~65ZQBCxgiyd5xh94aybq=) z41ia0`muVj6PXm(inR*2;=e(z7~`a%%!*WP2RCO1#=tINGXO`tL~RagCM&+0URJ?c z^@(5>*9e@&p13?U|ZaljXTAi=p-On(@6Km=TKHS5!VY+ zc&4UhF@;G;{8M-qQ+GJ4u-eaRgApSlT7?H_rqW1Bs@;wQpmP9*Rjv8}SgSdb4jCNa zwOZ#ePf>tTUNR$)n*>-RHJM1LgUN=c#0M;rTfCJDW;{%Y4 z6Ss3)kV#eG&LJGounGqR04ifuQ^TocY~&N$P8P_vGUGH-6=%28N9iQVJ2pu;0M;tc zxI<>DRgl~{g2ve&7^@#eod5<%8WTU3#t~zuacDJW3=d%Bq>)4(yB%3sC&|UKNuu&7 zNVdjuB$Dx~Yi=8){OYI^f|Q*D+v*ez?SnS%T{Vqg#!zF@s>W`&6Zz>Rp}ICngeL__ zg2c57Tb1hFw6z_!XaQgJ|x4aXAWv2De88G^Ru+jf$ONj_uNYT&0sHVhyc z4+CPW=YZ@_)g6wlf0ThFu=nwJswAKn)XPq4ghPJHoEHaE3obfG*kY%j4`aFZ_7>U zByDv`NR4Ay%HS3ZAYlap_yH)a^jpNO;x@yYzttWO2#~GXTkr9Km1evQS+LrS0k>6S z^)dQb!YVSMu!g8a1#FImfB^u*>e;FvGeft>16E~g-qv3?HO2$<0u*6c7WPR z@&F8OttEw9Q!Ry6+aW5jpezI~B#T=IGWM2xOkh=SOpq7HprpPnugY-@xaFh>ZX>LP zTa?lW*^D|jT?oKf_5?ft#;pma!vRXD5_Jl?kMcxyLgH39K;$!yoeY+{WGe>1;})Ta z4>%bM2M|x0?4TH*s-$dqKT6lREzl?Na)ftNhg&VY)KqH&jm zwAD&3uGo*eA1q{L>nwSE^vtm!YYd-c=A!{B8{yZ(18@LzSAWTLq}M>AY#;yzfHj2^ z)|jy5o~|spZOmAjk#(2$W6|VjGBaeg8zt+m`l!x;{xF0~mjo9!NxlyxYrx46WO4HL zcA2cPBb2h2M#-Bb4H@_reFQIwlbr$mAxz{hi790upuYR>z2rs^KUZOu0N_}M58xz^ zk2c1B7@9z97hdAE#9o1s*D!a&Q|m#&(y+HfokEnQ1jDK`0Y#ZiMkF1OVXr#M@RGzs z;ugeW9w8c6l+_6W00S^ddBbEp|Lzs!Br3hIoZlx7c%bP!241S>1>)DOcuH}U7KH7G89y5Oegp7zC&j0RT0IWUHp}#H=hgF`<|i06WUf?~LLJ*lYL$78~@$ z&ctGaOt*b-tPm6P8Zrg5ozkPhp;{iJ78Cx7V^lK6&2Lk3{2^|vMA#LT(z#h#YAw=l zh?DXBtRFIkIjWLHN(gUh35-?=0z*Fy7eRok%E2gWa4?u191OHW9?`eq)35+6{~7{v zkhcZ^fZ37Lc&q#o@k?)&|5UxnE@l*@cl^it$wD!~2{P*t>icMLB+4`)s0S^X>ra5P z*BHHJuT~(r4~h?8aEa=SYA15sXVEGHm>oeEx z&;n(KaSrc;Xc=gBG7XxgNrmP_Gog9WjA&*wADSP{g62rGp;^+bXl^uHnjy`T=1g;; znF0Ym_%nN&6Bc~tPcx@^)I16$HOKHy&3@)iv#QzDoN8t@i<(Q#ux3>At6A2(YK}Fx znr+Rq=36sC0j^15t85N6^|EtWU+#_QFOZ!GZBhZ66c~Vv@05VFcO_spFPjY!%Z4Qc zwAof5ZLT&yA*Rhm0&6oG0^96O-8O5Ro6X#2wZgUe+x%=MH%FVt&FE%tbGjMaY;LAD Tuba!w@8)x}x_RErZoW1HTyx%H diff --git a/obsolete/fonts/xerox/Helvetica.Bold.cd.Z b/obsolete/fonts/xerox/Helvetica.Bold.cd.Z deleted file mode 100644 index 0fbab49b125cd0b172beb0a6edc583bc369f8b68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158457 zcmWKXc{J2*6vuyKhMBR=jD2Sq`@Sz(24jsHlB_j}EU74ph?!x`*vGzvtdUYk(rWB` zmK35)wvb9hqb%?H-@WJD^PGF`bMAA_{ocOKwjG>jqq{l69WKVxh5+g7doYQ5o)`+ zF2B+PB+8hd_Y9!C$`W8N?B*Ijkw;b8f0JgMvuS-SoSwx5rLfPirMj_**KxuBu9biYjoYP> zHdEjCz#Zl4?{`xH0K~?P>5^9OCzKKt zBct+pHj_PMqXhNu$pWBhtsyLr-gf0JHiE$g00&IWh-pqtExKChG`+=2Z$_WCPV0G$UScEX5AdQFnhcR7ZXRBuHe);SGnZO6xcapI2D z-)kSSrgQKrr^C(Ye9akdNQVx2i?=L3v*z8JrL7^$_~m z8|AwC;@@Onf$$xM?@a2`o(fVXtWShGr3M=_IT?;BU{FPGOXXJ9m18TQMnG)fk&62Z z76T4|yp}FKP+QwNHDay2^zEBD&@ZHFafp47bR1@NJ_m`66Mx2@P3Iu z{XStjbg&Y$Vf!<<&T@Fr``dB7FIT2F=`sPDl0NU!7TF?~xS-{hy;mf3@f=s{7{{lI z1Jh`W;A9z-{+h>WFrm;Ll}tfW1P`uV7P zla3ig4DV|pEX!k879VY-bV>L(vB9bXEw*&jOmUrm9;R9_bc|+(fWIvduJQ=m)R4@7 zuHQU0jOD`+&3~=OP<2}uERbp^Z*RBtT95rQ8*uJdU$5%Zl+qCfH#>+9$^c(hU1~_x z7eH+QIvrpVX@y8xHtjEflpg>@VZ9Y`snN28#}A7(rH`WQIechcQhzt8Mi7RhlRZ%; zg+Z~`s{qJt#+x--vZ~eRxx}%Z{2ITc03?jFKB_aG;F9Y3>O3#>H&KOGTb7e0%&m&F zl|Ph|1_~>YCkt&!jZMJiG7bY$s?Uof8vtvR_TQY?RCWF?aasEw$o>O^~h8%}f~H|I1AFWP#*x)iT0rH4ZR z=t@v0B+bdfz*G)5K?6kc@r8(A%bePTu95qj=*p!Usn;-KZ3(tOF|l9c9IZc)*Z=xl zth_-7)ch(N0c?+}HC89$0?7`|uuxM+mrvrW-9tFXKtVwE7PS7Q+Sh3LjY!~!zuC->xVY;Zt@Q}C{hS%^N# z{=JkVKRw>l0aWjGnqZ!tH@p;VL+(F;V-v_BuoFGb6m>P<5^P`#xCjS-ob-6KBYpZp z?R57G97)#oK634n1}b={#&5h}%3sl}3hr^9y@^8eS2F7mb`NiEYCboDMr$8)R%_;u zy}6?XFwWTC;!G^M{~NDFGM*}SMU}<|EMI&ginHRoR^}(sz$19a+u&_$ss{!m8~tFA zT1YJojksV2$dHWxPNc_oR3&GpepogzWcL|)bmQ63rysZeykzn`j_N!9d8_!(t5xU6 zx2A?Z@4oo+dNchhFW1ZFy4J9qcm9R)@nRm$y*f_=_n;O8d-9*o#?+wzxf`!lhtfdU zl*pPNYQY}1Dz~<>+N;r!rJ>Kqtr7u1=>j~{!4A}gjH*$W7i6E96S#wyannQSDDND< zsB@~bzNa#J^MPZ?t*zqU2Q}EgQSYhM;gmO*HwUFkj;kz04G28?M%gJm4{*a6dY!7= zkCT^AyQio7Xe+<&)sL zj=_(HKs*nTPxTJ7zis#N5+4KVtvu77YePI6YV+x+n40JI{gttFhvSRl>q@Ms^I$zv z=2-Hg28&hjB61sWQW`|3=)8ELUZoUn&EPb-KzZv{sXJJnYXK*}fZ)ikRJs0ZnJNUf1t@&=HBzm&$pbu}z@#!pHJr>WvOE)HvOtCz1^S5X(c|oRL&tu)C z5-K;#zx4`xxp*XC2hfaC=&AAthSp|t5zBhu)7I7hs>82BB{fY^;cPT7Aw5u zcn0(C*TUIwI0FUnNBw|I8k6oW9&WeICq1fg#c_a%Y&G{7i1JR3K4>;uQJ4w)Flmo- z^9h?%*e&)SNC&TS1<=lS}~2%@W*a_NhXK z5fUr&M}Pa`0b)D^YmMFHVs0YfZA4BQ5ok2{P9}01k+@cgSR!!DO%jX>XCTA(iBK&7 zu;~HI(hwLH^ax9a68vP12mp~x1h}I&5u2MNi?MiCSb|(XLa84t(MZk6^NIqPVH6M%;RXXdryNhS01qP_;cEaxiy#dkhW>z~VBGNx1QeNc<_iVr zgKlnGNoXZ|`X>WK1ONqM@!FcJWSS9@;vvv96)1+KRtCAbuj*QCBESHz5(~y6lIQ91 zeJhA47UB>UkKN3B>%3 z%2X5a+hrkt+XDd**aZ;|h8C33h`0uWNiz^#9y##0q=NdOOnuAxLe&B_w7%VBl$-L1}tM0BbXAzY$^EgV-au#S#%< z_fpiU(yR`IF$^}h2VP`S`c^1$a0IK7yb^qoNklw=z-*WGEk%JR4n=wnMUnPJ#BO_D zZrg&uVK5ICKqVGi(5t8WtK*r~PMqakjM57prI-54&eLk##gc%*8X>-nIFSs_erN-X z+drfvmRV3@1ZdEJvhMWS=Y>XY)T)8piajU-$-Va{r63p$=1eMv*Ll>J$9=4cBi1g; zR3v{)>7pkbjn&2NrG%OQSO?!T(f2i`OPZ!i{O+d~iQqs?r(2TzX}ETBi%q6TT3n|C9O%AqC?;V;U0{yspe5GouhjtCWP zArHh&s&k8T5J*^hQMECxA$}7!_!sttkV*_I3O6dJRTnLrqyy#Uiy=8*{z9Rf4MSeF zHm8fjQwn$b5I0%*dnu2{pFchfaoefQ5bDejTF98SFHfR1b_Jnf45zaGWF^ri@E6?& ziS%US%DU(#8POQ%CU4Up;AdEMpG-4*G`H{;C?O1Op#`(u0q?Ch*W9YQ#mWbe+9+MZ zS#UlJUuydDiTUgk?7t^g;w`w@MkDVh_TTiuyHFjjC+@6fwOL2ySw{tNKec~ZZRy=YmaX24o1(_E0B@tTxT%7~0fg|iA|o#CThsB;sl^4s zC1)3@V2;G(=t`HTj^0t(766QUQvjr;h~Gw>)I~OUWEtU_-17>j=uJ~BvUE%{`#_T- z7p#t1VKJ7vw+@b5D_gr2%EW8OhJ~Jo0j8Vac>=j)6&%VL76pXuW681D|6d!cDBzW5 zHx&2^0;mYhB~Xtzwf|0HoXD#Z7I45obc$DCj9%IZCQsjaWWLG1kJmP5fZ366+*wvW z1UKo%8+(62cLA8xU*Im0R})E_3(17it9u>f63Pp~sFL4>`n3~*5=^>xP^+v*ii@cI zK@i2ICo}mzu@+vwC_~WTEZ0rxn2PEE<2!)$s_UE`4Mv3P^|@j9QvStconE8E#zM^g zb{dIwwG|=G;CbFF(?XSKbIDz4MzpWN_sm{(VIOu`lyoua@x)6xJAn3l`NJC~#fR7g zBRH=iygi-ZzU|HEJ|Dd zP7av(06|Q5lSp$*qq;r(--vPJ&J{1O(hBX@E<>~m2H)em+{T9E4DX6Nr${!8k8X^kc_zp( zK-ib37&@fF(*+9y>Nh7I5{CsxCIped_r=!AHp)yP#k-CY)=K&9QBd#~8R?K|_Pab! zmCn|XdbEnz7tu})Wmn&ys7Jn2bspEAbG-bo^=b*loFC`?ifpkt@ZN*kZA2XjES6z;-+A^nUH$_+q;+}( zU3@6nmmSl_=>tDapQucqf^AwYq!ll1^c=0$u_e8|@aipMF#CroGANX?Z93|EnKG_k zcrZL?ED9h}=6cnO*$n2+I=%JYn7e%gRC9a!F&;j_4HM+2f^8|^zL%o!eU6>}ymbH? z3muUju@*}C2+ zK@kpymKFSR`CRGCbB@v9COvb&Pyn6acMPPPA0szNM&et+JiZ22EH;RuQF z;pOfXjTxG11c_0f?L+B2E5;(+JtHfoM%*u0P;fcohfiI4R6+!e7U7W-eI!xKw*0V`~UY;Gs zNN1re;Gc6RTW@AniS1EiibmV>GRX@5jY7f|KW?9&JBRP3*9v9! zvRFacUrx;GxfZOI*{FvyvMW+dH$T)341Al5-=z1w5KBXt)bnk$lQ4yIL7g3DwTAr# zVbk%Vp(UXoZ$u3x*Lx&qcXa;vjpM(YdGO{3?YZNjFTKw5xnne%r{uSE@b4f6j4F*{ zHTo0zcthvTdh<(rSQtp7A1ZcLO_Xch1GX;Awmuo`7u&d8G99 z4TSq&M7kQGhI2qa*eyD?o<4l9z8}F|4wx_f0DH0=qgic5EQK2k%qj~2_UM`glGoP< zHQw5Nyb)Vec*uHB^`=A)&=WNG5WiS8(tEX;tonA=gU2ke1E5@<-<+A>V)3u_+`qQ? ze}FeAI*7s~QoKCs^*zX_Q*MTL5{g(aiu%Dce=<$))#&Jc^EVK!`_+&lU32xmQd^cn z61gTM^K1X0W5cAK+2Nx@+c6Q?RM8{komWlOZ{RcgO_S4lF$W~Z0c!jEVsJL8u=DcG z!pnB8zby3LH9HMIOXZ$PJ{Y%P^#Swq``52+{6x&P3s)aL#Ix@MB;rqYGM6^MX1Q@b zK-dAuS7hs-X`Z(&CjPz(GQsZkvCZD)+6M_E4~i^&-43(8mf486f`K3HS8oEkQi=

uBj!D4mW7BUki;eJYHy+x~J}pp~STDKLyjcW&6b(q>Zb z_vq(zXADP{Fc`09d|wGraA_fXoPLtyll7fl+0+=el17oz5C z=n~^ayC63;SNoR@$1g^Jr39X_J2gZhJ8uVrEzvqW-z*^JIsMV-!C7_<6dOADeD zB1JD+)g%E}hO#Ne_NPRM#VfZw1t}o`O696lK)dVe{fYB`QdN{ziKj6)SMduK7O|Gw zW018QJQm>I+UF-$@VF-GiG(jc~)q+|X0zp|$vh2h0a#={5Jd_fknXUc6$4*^w0awC;S8{Uu#AneC z?sv271UxGbF3|p7RfwxDF0{rnZM-ZGmA-uGit*UT%Q#|EtWk%_kA>?F4=qn}pVkXg zOzLS`MYx}`lAr}@OP5hzv`}~HHnFMJAuBD}(mPFMDd_b#i)1DsYB15rDUITseloIzY4?tS!kv&RQI*_ZuV zXRi?y(3bU9^`oseO8qct{{WXJdq1?w`mXlTI;n7n)o&f7?)fz%Syo(Fd)O(sB<219 zdxf#l^~^*3ptYq-R@g7w_C?(Yx$7^}TdE~K_L3TtOR6lr-|Z6@<)w8}=C_!$nfzlrJ?rPEX)R|!YjBSw<$ zH)+B%VLfhx31edNzlNh^%m_PQ&BBBU9n#E_Zz!r!J!>Bi0se)*8s|$kYC4fuUuo+M z7tXRBhX^ISGlRrkrbd#ENfb!%zqX(P~?lHQ1Ih0qzllvLiJe0{NX}c6nhLWt+4C zMX9IJA~^h*8BEqFail`wR&JXLpWw9|B9r)3!B|vLy0fGuhgiM|WKBO&6umpKjgH-- zc1v-{fL5z3x^p7pZf>{9Chi z_Kc@&tKx{dO8MU&9{W_mRh!Jg#>)WR?qy>Dj(Le3jDLR#a2Vqt!A7L0q>wlR=Ioaq zE)VO0?gBE6oVlF7WygU?4Y*s|wSxNkpOnJ=#roz88(Y>dD$}q691Pn{Vyp?*R|i4u z+AR+??>kj|d~rdr^atJsM~-5$YvZ9NxfR0XL`4ecMV|P zThbx(S`(lc4^PZ{5k*gPl zm$sih})?GIljjeGXzeM2nkDN^Ho1wyw3D#y3cQhIVaX14rz z^VLE~MVh7`{%Ju{29s~(+HvaI`GGNKL+b`^X%S>;e`I83anDXv-N<@{aW4ONJS@x_ z?Z@*y%zlzTKt8fNV=n8FiLFX<^0gX8&S$b@fyl~Dn6yB7reS(o!D%hqwh6sFS&hG- zSF7J-Z6lPhzm5;~+dh`c39D-IU+6*eLDavCOJ0_@Y`*k?f0kX{n3#pJlpw^K$)T1I zQ4E>)Hc2fk!3k?Gd)4{wS$Y1)>9(#$j-pda@~^9NA{Izs5v^ZNW0K!}Z%#_5X_~Dg zOc{~~P=riO!--QS_M;tg_SFDWDhljj!YdTqT?n^AhL}Kjx`&#P3H8t+FbNAiIhR&o*LwNovsa;>IV0q5iGFp`MC0BqbQD- zOHvYSRVKiGuW`_WrU*dfy*1Ntg@GpKM>CMv(}2ur!%4@H*d|3>jR}OnrY1E**5%}$ zZL){1%zI6i6cZ$e$sMxX`F&@{)Bn0`$!;8+JfkoaRHP;6_bRlI;y(6w$o7&3*Tssb zh0a8M-L+l$N0Rg_#EY~d=wJ1;s4FP)6&I0=`KfjU~kCR zC*QRr_Kj9Lo*HuVd;J&v+l^CiAKduR42cLho{v za3T0p&&es#7jW)=6C;^#o5Y8wqb8r2^6B$$L*gh+Fh`5kzT~=dFS5x&Nv?;zy$T8i`G|dA zOD*|zFWLUkET*?BIgSXovivE^URw^TBQxpfx3;7xPEmj-oboB?c}3?#@D*p7=M+kz zkg&VF?=;spzK_JO^g4NK@o+GUVE|Hsq0}Dj6k02L$ ztD@@p!Xt8yAREU}9|CKz!vU?9;0?Pf!FX*9s4PKwfxf5t`)UApX;V_L>1qF%glg>} zx3d3bu6m>w7T{i%i+h-f;VbJjrS28B4oSI+)~O4G)N{v)Y8fx>qO5&|ILxD7SjdWsc<)c(UXs5*4pYDam5GHK(VQ;F- zdp=NkpmQPo_?HPM!_SO?L#@1r&Hk}tZzQ>?Go@y^suD9ai9(BQ5lSg~NGbuLZF zMQ$B;v(D2|*3my%1W*XcxB6|yIpYopovid~>ElgX9hpPfWPbkDj#bpkBPuLW9@52i ztmFE5jp2fM$;0=_*^%p3o=|bQcBe__F+sb}k9}#LS1LQEDW>B#KYD!a1)Xbi=O{XP z4sZK~GeAB7JOyWn$KjvV*S*sDm=@Vq;%`WXnmB(PDZcG?XY$*FYu#7r0vwI!*ip<5 z#kAOyGs=bmxyjDv+@N=l_6+#lLCP<0oJBFcA9yaU=JhpCDGd>dOeU;c#JHc` zMU+#53>QeBzOKrDYqn{wF4obsgQ(RxH4$`caPJUW?HY_&XVA964#XZ(;@BafbHdD0 zl?`BC(+;#4kVtPVKh{J3<)&IcH)x4!meSfW`s5XH>|g%Po=p*mHqDVr0&LDhsE zwc+EONQo6`rnlfWuMr2aT>C5VQM4$AVHTBJCuri%j1MI;q~h&UHI(blcOcFK|Ef?#}k@&!fO!3$CCer}EKlqQMw@u^Ds~^1V!0 zj~q9~`4?*!#KCh{J|dxYOt9GMYar})g?>c*%9yAa?&>OBz0yK2*?e5`1rE%2_^MJ; zFNJqp^A@glRpfGIU`u+^xS^Nr;;LjrRZK+s%DBZxyJtb%>eU6DsRk1oCU(#@d9!M> zh#dEE`(k_DHKp&>_w{lWD0X7U6@z6Cs)Hj6+$YWzANLN{G`rUkQ6%)v%gd3vCR=*% zLByRm6Gm5#KUp(sxHtN{_O$kJvit?BmlH-LS?LN*lCP(HyJb00 z&D~dSCzH_l(QVXv7$)@T(dIkKV4A?gc)Kj1=X5y7@!8 z=VhciT|x|7FY;0Ato6hHwQM2c>E}~HI_HLt-7aPQ)qiv4n4J8bjcj$k#*_VwM}zvy z1mRGAokpJF&J5VgrDD_2%WOdX94kQipeAG^oBiF{w+_~pJSdTxVLtk68=OI{s9s7h zqi{nW+vc3(X5y;td_>6=Y9|IyWxz2Y5WT~CHTn|A9bUTSN}ks z`ih=MY>`ZzD3f!3Ic0kJp8AP=gXZLq7nXyofC}|`?Hj%QZ&f=kO%+HqTX!0`p=Yi9 zS+wskA=g%eskqs&V^@a0KX-oi?Z)5Rs%Ez3wDc$0&(8OMzK4kuzd9?{ewo19WnPra zWeGwi!KjSy#j1L(>=~KnEPK7d@0_AJaE&p5U*1JP5tQ_4CK9ZrgaetT! zm}c<^3#nlKwxVa>4L-YiUzZbGEq!YC#}f|;JiqD&Iim*ffmTq!XF|X*Fy4jI8Uye&Zsn0Iyb`IRzpNK+GZ+fuRL5X zy2A?ZzYJwwAg6z~fOKHaIH;T_nyC1OyGG^6SsCUpd}>R%J|b|V^Wkrysl~|s)XdAs z<&FiGf8?TQ8l)jy-`sQ5NEESnxYX2uge3{R@qHHa?v^P@J9Y16`L$La3MZ zoH168hut%!*KTPh_wei;vPt_$cv)#VnAe`|hx}V+yO(y-Jv=V`RWyh0*VO)eE|Dv5 z-nO&2NQ8i;*}WXTB%#7R*YFjjZN2L~7+=;0zGXuud@fn0gdbb! zINb2(fqqj<==iPwV?r2pT=U9#(;7vid*tz7Mr9Y5SrUyrkW*)+nIq1Ae_Et7rkZn-n|br1UvJFq zAF{_Ixhxsnv5+Q>?jcMOZ`H=z;YRBxcZ+5ej|Kk0Wjg6>MD7eu9lbcG`CWt7=)G$R zF(-P$IQ`193gnF?KkP?&io*R4A%zWenIs|NOvtEPp6?UzpSNY}ZkshoFXQ_A4241;@CWDO{gBw-Z)AzeSr~i{Ct~?f57CyubOeCOAx+Wf*S- zc^vH2bp?mTaGmXLKenW?n2;4?_k;f|qmh+`M3vCgqX$vrJ({dP8pByJG1Q-iQUlfy z8AO-}19xoe+o%3BQS6U7@#3lNmi#BVPy(PcUhZS1aP1jXKc7HM?!<+Y+ElC1jrH$( znCwn5(<@bM+jB>d8}Ckh&3Ty{2)t>~pge<6;#azrQ>nz;&@_*EUN|5ojx1Mt@7t#9z6!;By_PY{Gp1@#^P{JC*X7SS3wNER zXzzC}2%r0R^&h5mQ2w60y2yPyX~?9g?49;;m&7&I*KQ#r?PaeWH0&ikO6CPXslz4oH*tRna z5r{lFuw(UMx=UiW{=szLKLl|@{>&w>3vMuh*Z;O7zuioJ9;o0SiXHwNhWPdkb+&nT z?kxJfylMOQKc=1WJMm{frpA1s&2c0?pO+6zoA9ofz4G(x>!xQ`f6fZHV6q;6n|-Y` z!Lk6B3$k=S6b~P?$o}3}`^djfJNF$iS2n-PeNIb0*8J*byJ}m(&iLU>yNq{y@2(m4 z-OkqIJduOy`K*JAH;7$(i*@0Hik}+5JNT;9olV$HgzX7k) zFWhQ>#MvTYyo3foX7zs>?`xp`?Fogby1sZU_3B6Cpf#uCw-=}Y)qh(CcU=vdGMTZx zQ-P6LbkppEo|7~6ksq%b11Q-20-LnDitiSp1RbbrMg3xp?X zQFz}xVN>oGrwgROrN@ze1K0~WglhibTQ$m9n8Ltgpq?HASU-|8mbOdT{ON_oapw^)Jg z8wH1r=XP|>;%5F~B&<2({sgf~wW?Z0DBU+*cLy>*|Fm5BQ(SURiX11w``a3?cS;(- zo_?rw}4P~blDe>H<@b!R~m>yP8I=f zzfb8CaLC*iuL1sj;Y%os?$OWSu{p0^8hmv>7I-D}*am35=sE_Kp?i>>Ms^e6Lb#bs z(N_B?5~stK07q}UDAP~x=>Ca$xXQIlU-aH)Ld#W+EF^#y$U!&R0k*x!dBQ>(I8nt` zY5$03-vhWBKu``_Kp6&MFZ}=dTZr31{CAswTrLk12_=D&Q;lTvBl+1Sv`Zo1aW6yS(+PW3+~%xTNtQ64(RQk#)y1+mQ(C+ z%93ujQAhiR5;WS5ZUcLH>eCc03xERO0&@$VD7dr));2Vm=XWbGwG@QE@3C^TEGy#d z+B4OF4j*3VdoM5IJ8qLH9X?Sx$3_H^f!+R}Q|SZ*-3>_*k|b%Yg}u75#Q_r)_1nyQVu)`E zK@f1J&*nawld)#U6)Mjpx*=PsVBbWvOH=)E0K3@1qd$!AooDL3b5dldG zsKcr0jRcwb_&mOP&ArpABn~e$U~@s&tqted55YYT-oS(dAfvzcs6cRkZZ`gM_1*1P;G=C8^#7p$aDjnI!54 zo@CU?N@VL5j5@+oZuQ5q1Plz~>92&3)F?W#X&&es{0id&ZL(Jqu@yvZHvyWoELvDL zj(Sc!xe&D;uDD?9!T$OG&T(+_(lby!A0u+~JH8=N%tKy>rs0<}ExSU!B@?(^Y-F(I z;YQMGvX-fgb{8M;F`;`z0iP_wE2KJmUs2p)W>173VRuIFOe_4=#ZE!BI#-h=lU=(( zdlqG$gZjHo4h)&AO31yWqA%xk(AV5t;d#^0(nwdh%c|H#Npm#22vjnqZ~+#eB$l$D zT`m%uM{WPYMynCkM|H5v=Oq#!RjBZxLyY83ByG!QD4kz8u7m_7RaMqai{Eo9Td0W= zQzxcXTrd)RbaEU0bi82yOzB-WD># zsEZ}|7q{o!!s&(NmgEMUAOv}lytHt?=dz1IgH5=L6ATi;!Twd_P3opBU>oNkD8nHh zo)9T=m4k)S*5Y5qy;;4#nfl9*!HOM8eS@lNdih$^W%SghfJ~YTrE^sbo>mD32wgi@ z0S3DPlIdn4lCE_>Sq?-r#R6J@%k+Tan_;+3Z+MQQ(!$%#6ZX??)m2n5Z|Wqerw zdVqQCsOH#bi~+jWGDo-7&_ph~lV>T7+SNZDNC05R6&5N4(m|&b*dAcg2l_`L@=wu` zXuJGZxb!%b@rQjDFp_DpSXQmI|Nqn)b%?%X^hD7(_H$peE`? z)4C#r2xxC9q0ZwSEsGZHYo%X@1;-O{{=^rYJKv^gDN-F!SMGws8Bu=&NzTLQa5 zW_);qqTev%tB{l2BFxex}bZ0YXEgMqAJ z9gj)D$4_-)=*K@DUMt?0FRqkQ#By@IUVPQ&NI*?>>vw2P(08Y-$4DUH763-J6ydSe zwVm`_r1jD+%TOfiG!AtiXJvPM2{nUL$a3-*Si?DH;g?JW80Z^eF+|5_bBV?lBBZTN>&s` za=`9KR-C`geY+1?-=vj5cKs-cLiY*W>+@l$sg_pnL*=|b5w!e7?KyJL$V~yK9u3P^ z6zQ6zx^QO+l*b(c$sWl=uWls9*k{Wp%FSGgMFn>hP~97|Rqd36JA*_T&nUuCc!&(g zu@0yH>jv5Pg&<+)-NB z*fqJ&iN>QktEr7-UBM8Iv>kt3S%H|K4XSf)O#E1hX%f`xMup=;a(B9aJaltVUhXC2&&kpYR*fP0AO zF`V7nNw1uj-rr8U=3ntk%+IoYDDh^>V(q0vKD=z2843|XfX2s8E{KW;G^0FjT)6`# zz#ZLq(reBZHBkg4b?YIJFK$Ju5Ug)## z``OMyeB5BPrQTegB}5nPCBz5jK>zAoyZX-aJ=Xpq(9fX>_bY_9S3_FQ>4?hX>PbRG zkr4`HtSwnk9d}*Zk1nQ|_&WdWk1Nz=n57M*uq_}Qjm$-E;LO&JC&C&j5CeQ!_L6@l zh?Iw@o8q*zVeud0%tS?|kuM>dqOzL>ry=>j{MZVcgo7LiI>M8)Dwc?8?PJyQNhvbDC4-EJYU`f&ohqa1n(&;BUyYK-3|`OX=GmjcX+@RA;)`1 z>_8zQ&33QR;q%pQ8ywNDkzbNXa)~s}V|Jl_xmx94xCq`owR_nPGR`0;i`gh#_dLZ! z4daSup4`sAw}eHy$cl4c;Qb{apz}yPSlPj<;K8!;^J`eK@|sHQbF_G^ykn6U8$j!O z(!^KJ|1!Yg3!Ve`U<(j0<2VCBBtd%^P?zwcQOD;b7@MyL%mJ#_-?V`ikg9c@7C>WD zP0(o6fq_-Q?Uq0}0Ydy~2{=g{SuMN#@39jl3G%rT9K2>=}& zi)()uCc>^{7Z}DK!SO#oYN^~J1;;95mDS*Ol>G_-kmkgGtN>yqcgg!rfCOT*cz~s;|FL2oEXP-1gB_EI{0emQAh43mn|k0BvOfqk21+5zmn*T@PCy}q zI}kn;HW&rM%AkPfzX+ic!#%@jP?R$tQIuifAHqje(E$w$@?*1-V}?QC4hS9AT_V{H z8M}c89*MByDR|%>lwGDhmDwIl!3*(?ki4gmeL4dRf)`+mT$1O@U$pYDf z?k4mVfeNKWfx2qALyB>aqvJMkwGT=M(`0J{ zWqyI2I2&+aD4UEFH}R7^P?W?o?8+a*D$`G8oOGkk;7p=W$i;G5kl@ATkNZl8 zPF4Kp&7A$-N{@AqU6^xpYa#bvcvU-3dc1UMRSx?heLv%;^cmL4%YNL+Oa10n5Is>) z7_h25?`T?{Hb#-FGu3I^$o%Z-(rPtm$KriPlE_n*h7-0VebMX8ttB)OT)-zHlNnJ7 z9Tv$>K3nN`D!+r>(x-ReFwd%93E{tRDrH~JZpB?ordw(g%MBowKuoL!kQ!Samwe8( z0sy~I(g;bdG-m*?7OJUQ->Od%PQL0;tbO;fa?}xaCOPej$#7koUiu+df|3QECRN$d z5A&itMe7aaVKS1cmXwS_G88ahSMxBm1)mM22|jHt;JU+o`;jcGHY7@n0QkkY2;Wq$ zG2MZ+)|#jD2*^Ce$i4wy%efY?8nnme=WjmW2d!gQwcmT9g)5V`-(Oad8o_;33aOAB zIc=D5Pk|@6bsHvMegCd&Ae|QiS(DX1!@}IDQ|X|a`sEf7`_3Dy)av4g;IBB2QG4L82N(#ht2R;9}f@@XH~L)gTrSszS1b}XyO zU$PxYzD{LYik!0QObx2&LEF42SXWJkCAEzbXm9L8n&YFY6-O<`y3=moC611zl9ldN zm?v5hfYYO%NXCBEy}A%o%4hJcvVz6zdzPd^XAcPz-1XAh<+aO7!FYWcL>=4dG3St+ ziRwqep^iDcer4{M8#kk=N7bkMFO0=FB`Z=bV}I%$(=G zuHT)SLeLJHPYvF<_{@>6fu!NvWOLay2rjdAV9~w+k=VHV#yE-Gq~MV0v@4l(!-cmm zUIW(DTgjTyH+AWuuN`>)&Nw;@Janob;Rj2VDl}5UH7}AL0B(SrkSV^h@cGtKx%n6L z!ee%+Qr)2?zOUYL7=}%`oLcVAPw@RNDAOmP<%BHN>@QEtNp#3Vy2U4c2w`5@t*7me z{*%lYcO1^i3rP@y=0>rV-Ep-S&RH%Et1#Ki-p3#^(zf!COV!*{?`C&#VJlO%h==6^ znvQo<)OFS-OPU_V#ZrGs56eap^zU`U_FpObvlW;=E#nW-rjLZZCH&P-cVBZYj8)eu zwsj*!G5QCMG!sIJgWQBmh)ZSWJWMDwxne^w^LcKkqaH+=z4DM2oLTE@K$#>PD+%;`&(8*yw9;J1LS{4-o3MeSN8Fs!&MkgR2#qSQzl=esKG>Rv0QR-Bp? zlu$t<%Ple-n(3CQbITrTs#xys6b&D{5_u$O>} zblGS0x@l;WMAYN0G12t7C=R*Aqc_&FdYt%2r5B1oFEMC;{B7dKFetU@g&~Ca>F$$% z)k(3R=G(tZiW5hNQxM=93ditXxta&VWD|WG7MF>+lTm9)D%c~x!!R3QNqJV+uMn7o z?83^?UnkLv)HdKSy|I!aOH9^Au}s5oISF2wiy040<*(jMVer+>OeQVcAI;J zc&(`I?huu(gD>DIIUUpICm+qsfeAh3?0pj1qXiph@XZsE%cSfqy)co3>b6X?E0qLR z3gTV`$RrD4Z_@?VIWoV2M2FNZV@~7a{py&hdU=xg^o=qpbm0``y>O?Z%ycQ-qZ2PyK}{2M-q ze6#svR>=R&5a?hfQ>!?4gM}DU4|u|?GXjJHQ=^P~dTRNr|7G`d@nJ;Bt9pv+C3eU$ zy9Q9JUWSE|<`Z}S?)*dkT$2n?DUwbXqQ%j?dszG%JRn^DepzoQ)QYZ!Z zY?0h9vvV8A{2V^iu2ZvOIe6<=;WlwT&+b;Yx&3GJNlu-U=b8IQF+n>)_V9Q=8)@B0 zlFdMc)a0C|^;4dpt z2&N%#x~AiUWWv_edTe4qL;f4TY-0B3{M%Y`M3cGSt|EUL7I6Z*18FxStHs{;PL-57 z+`^>bplc%X!Q%m;6+7}CM;%SSMBu6&NlouW&?Blt8Ap*!OD4Fc`+- z2R>553+E|qHW6E;fd`vSR?(^6pQf7Ldn&!m*sr5`sO~Z85Nz$Kv`@k!x5Fg~qn9PX z7fgMKse)+}NETvd&HCN0mlz! zAJ3azM9$zdMRis&=XulN4L3zE+WT=hy?X@RuZnepj8C)&*$Zts^*mYdrsFE6!*nWQt3hY;C(+u zZu9_;lG)O#BzWA|g3$FQd&K7iZm%eu9)jf2@wxL*1Jjf2{Bf>eB~RaG!NY^%TVqRI zji<-A&n?em(LIRGmc2B&WxtD-vEe%hglDpI+DOwxPc)mJP&l(8=`(uWO35R>ewd9w z2m`m8_HyR0L8~v@Dyf}@Z=@-n=+TM@p2GtZ>S9}O!kLE4a$48P8H(QjAdJSHZ*BN# zIc_^G6Xj$`gr6roAaZvV?`^csFowGB$D1-araD9lFOs%FYonzXS=v$^+=C|>8cD?P z35&{YRF5LJ`);)1!ZU7Ci)vFM=5$6X%^N*=pd;;#e_hq>3JMxGMHH%r)drB_lpQ`w1f<@afl$W;VXcEV@#?gau@(k>;#}@A2bxKKk?`@p;Duq5 z)u^TD%Xx~*FV5PO#8Td`{NSP6a?a7P%#ypliQMzoI%3tUC%2SjDjfIYWQ+Q^BrLyX z`ei0meZhrj9mTUV7I(eFZOmC*Yb%c24<0Wf-|6-1y01}HW{;RMwiN}D)#S7Oe9^3@ zkyWK@-o}o-c^tDC3Z5>KW8!c7f>A9}rl+^w;SLYsU{x1XDZ1UDrp&HFGS&Xh^6o}# zwrjg1C+a-0{Pk>=jP*a?^E*~tyca&E&RAWLMKraT>--ESc!+WyrzjSsT&7ER(6vYhfwuHjJjG9pTTGENxd%O|$vMf)8Ao(pBpMZ&wOi{TrrmnG93AK(9kLtqIuznUMZ3ZsyMhIDzbYBV9tjtx1iZHW zmZm+GR<*mMo2MZHP>c7n?#p)|>bhCeb2^%6dcLI~uMs$FspPWapMvtj2VEV~UZZ*k zKRRxBjRz;+5LvK9`;N-$B@7;^5w^JFC?*wRciv17%IDD43LJ9Cc^gck-G(t!p)5ii zK>9MqzYv^)^|e#dEhpD>GI!Pa#+tuen|haO->SmdBTV)mh{Tv8;1_Fvi&;e1#h$z`Pz095PlEe$J}6G- z9sr55R#oXeH50twbz}En>IgDmln%hx2>g(Jf2LD@QI|>fT}om}#Nd3Y11wOvV4|c- zNmdU^{1sP2FNT{8*G-=($jPHCP)r0R(E!SEzg}<|)27&U=ziNe^9-3WrszqX zEpb?{^B6ixba<$Em{ddDNl8ryt7v76V-=h9<cws`}@BY1{=)9w9#R^xI^rK^*yMI)6rw9=pR37ST?*fYk z?W>QJKSugEdFH!z4vb%cUrN+((Vmk>cuLamwq_hYlRYwg6ZDl!@o+ArY422A4R(H( zVj7u+HV!vCkLomHIV{>Y^BG>PI^ET|tPNJzUXr773Tpmx+4MvwXE5Efml-v6Fbf@E zs57MzL|GG)u9i2u$`iLSWjnGW+1{ST?M%TwvD0+rHv6g z(xJi~Q$>rJ5bzw+_&GJ*+l$dEOlH6vE!`(j<_h!$;1pRguT>xaln&!~Q`v2-h*Ka2 zB!~qmmsRe3Qb0!TeB_3Gn;#BoiQT+R4{aetn-kAH-Zt!{BuX_&jNFfCVv}67($?cD z-nK89HGFh2JK!6pV>*|eu%6xmnb%hY!n(cUFBsW$==ewp(eTz z)PwfIJ%g1vfwGcSP>3GiTf$)Y<9&!CBx3NDW67!T@8L6w1iueTW+&D)q?qo_FR|g} zDm#CQafBA`JjdmtT2am!3d;SgQrU?qrhVv@T6p=qdA_k4^Z(;%Bmk1w3C|086JR!SVD_&toVsq82rAdsY2QeeIIvh`-Lr-&M-V#?I3wa zBspWHxoMX#eOi%pT-~0^e`T@cJO4Z44VDy@U{Aw`{z6?k7M(cHq=RcStaB^*6XsZA#02iRWUPkJAOH^;fsd;mMxLaO=N>E1%OA~<{ z22F2$uX;fGvR${nf*YnxS!h=RBr#EFg*MR5=*qK2h1+sP<#X1R2yR+T>~D3*ijQs^ z-<(0pj{h~*yDs2GJ>HoFF}21GQr=2klHAySKJ_A)`r~)W`pLq#(W(y$hCQ7b%4ddY z$%yPwod?~hUiSK#1EK;D@*5NbINT8EKvvRa9Dv%AWl)52bYUDCrDM>PGZR9jkc{AZ z&_sWFi@F-JxPA)>^CtU{Yei%?o~<$yp@-#=1Y^07U9V=8{4*iu;u<(v2oY=-9nQvu zDyHcnHB=p;`V}9yP!W?|9Rec0c-%&X?q6D}RPGc>@ZdN}Y2C~4 zIo6+|%5tGTT9$I#^5*AMe+SCfu zxJ7XZR3giEoq^?CDQny!*9}RScK;8u2vo^pxm`fcE&eLLuHBH^Ft1(spik7uA!a!Q(?=9kY<*c=-Q;)`);}?c9 zwhWE$d76G_|5`O8#Pu(j=00%S!{Nugz&X5Whc~G%ka)VKP|+&Zw|Cmg^p=b$u-gyE zIwqY*#)`bn*2^jRlKk)kb9j@BKTkKne$y_n!vg{_b`q=m&;Fo&kolQm&ElQuyLE|G zhE>xHZyk2X;WL+WxQD6iT}5>pRfg6iaS0ScKB6|ZUq>&J$?&wgsucB!aCQ%o66Awe zn3tDbYUf^WlAxjUTDz!GFUjt9@3M#PCmx2irlur!?(kzjDah;H z1hgjp#?f`2S55{`{3oR&KG$|=$Wu2s{jFKI(?Wd9p=74|o}lA?n6OZvPeuRHFgk^3 z`B?tphXwJo;7iSKKgDMfF5N%G51v!_bbk0He(_Q*w&t+zA4N-x%q>aDYFabd_=Km6 zIfuIY4DUN1eIdS-?fCU*q}x)Pvl>3v{XL7hdR%j2uZ88A&&O|%Bp%Rt-NZfiW`9QJ z#kBa=?$-yuo(-#@=ixX?OhvD#kJfjD4h4h~PJVwp3J^nCn`c~JKwPVRVSOYBtmX75 z$8p%R4~p2+_iTpWwspjx_aOitiZ0*EAWCt^GlWkC#D8=38x@8hGpIcAdF*SPo@6_X zT-TS~kZB+54_S3*7nDyvta`71^GoQ}Ke>faYP!BSF3RE3%kiX%z1HrV+pxXX!=~?x z;v=G$WgouY_&f6O!w12`R;8=Yl*`A2ND$NDL8|cbDc@H@%~cU;hs=Sy^x>qR%tP(a zO7+J9+Ij)HwB|hjnFMCMDf*Z_@_LKd0XfT*+RpaGUi|9%hn&f{glgcmnF7H?S_?^- zTHKc<{}E$!xb`dEs72}6FZ&>_rK(B*Z(&EtgAEa?(co#n8=UtKeLuPpKhD^-UH(G&s&_ z9QFB$gsOkfLjb?1V|2*QO*|G2Nm*FENz-a^K{NVs*Tjf{_7ci=Z(;RyN`m z_KGChWq=7YN)IM>GGRnmz{G7Ulpv@9+$;n{ve9?X2?05*1b>r&k6^S0si*?ppqqizzn^)Mv=S{QsGk+1WYr8z%x0iOn0F-WlK!dsf0180 zphQxnl%c(84%hiJ;n$XO`QBfqsQ_JfCGRdt#0g7;Azk3)DMzhSJ`a!4EJ_@&KqRv@ofe9Usmsel;sA-hNg z1q+r`;@Fj}G8Jf}aizW+2A9f*k+LLs5zJn_@mO$bM{nHqi-c>FC6aG>s|?ThZ;ynJ z^NS1SFh;z;}qz^b`M>-YI6NPIV{phspUGo`6? zVSdNMvwLP2@VqONczf)f>Q$JOwN;6uec}I6H7nZ6$mc=H(={l zs3ZI;J_=g)b(47hV)f2#WSG31p42i-XYI3{Q@Xw;f3h79I#)|s&<&7bJ`=n*ot)-S zDZSRu;rL@(6N#cr);TS^7o&5rrxm}|{hyUCt(LluVQD5{=+ox6qi_1s>cj~kk#XsdX?;2Y3DGRt8Roe;`2jnJyTO{oX ze2Pxe`!uz7$n`5ieX5Sa?gyKEkb}qiK!VfM9#LSdJrXhi2pB~0uD$V7l+gV$nL-p! z3NK*_C5q#7U2G=OL^`uW*J?{d$FhUhYFBN$*jlQ+o6~4=Z2Q;61s^uDtxZb{*W^H) z6K@GTEWoaD5Zy&{wWj~!Wq*NO(b>0VvvPT+OT0d6`~x5rC1iGihd*1JL3d3wq2{H- znz*CP^P9ilzE@gDg6>$oVRwI$M|kiC<(|Y+)KVU|{^QmYs)CgD|DL{JD0s8(JOA{4 zLEZZAcR|So1M9!e2oGL|uAjVnTJXAe{qNbcAFn^GU)~B4BW$ljII>O~^gM)cXXD#hL~`Mk8%jRvccJwL;yjw8{P_lRPz+U(#|E!_ zj93xI9V1`-peTDoRQ_o}QObtEc|vW`rwtMLj zys)7Wlx|oezNsyrVOXrNd8D>U530B&C9LUphB@u ztPC9Xl|1peuh_8IUr98X`V0L`KGbj-KkM#q}*-X%l7Q_P5oJ%LWjw z2=RSLoiy#z`4gS{Q>b})9jlNm>PB7(ZMD^HCF}0rud-18g1%drNoBf)g-N=|KWx`X zyVaoOwHVPaX6Up75c}_UT5S(T4~SXfcN~MLRL!MO>Se9UEqtsRYeNNUo>aesKCLwh zu)>0e9yKlO$OVtz54p2Wry$*JT%TRA_DRg}bVo7x@T2~m7dz_&mA+r5u7b3rEmdMe zzptvcqPLF1qGq#8rr^)nM{mXHrk>h=ZHURPV9k1=>6e*bYOdO{?n&48rNFiFk-|3t z#rH}tN=v`}Xtbb~MX8*#8+QX>Y zXHCHJIZ3cz$eYHP{{UX~Qk@GxT_Z6VRc~@)XL(bV zZ6=NxE7S(g1aDpANT8e;@M54apqRhc0C45qUk4LVa}@nSonL!VE-$Sa(2tx@%>oc$ z9qWxC=9b)Fge3-}T1gjSMQ|(uL+k5YW|N8JA$3CpXSHE9;_nrFB_>a1e(5k$yw5B-fl9A&fO?<=jY%Px*Rok~fk^50y-6vIdKp*l zD#E)5V^aE0(_Z$!olW0Qf2mg9;BpaZmdSEpn3U8w5WG)1Cb8BgT>I9IC9?Zq58EM? zqPDx2MZx+h6M67ar$CzI&R(>l@p}Kk{*N67+gADgt_xGpsL{Sz2UW`AjG)H_O$teq zKythQ5n{KS50FiCuOIyFP*$m&JBY3l!Sy`eohy_K%`Dtqc(!(T#C9*+l%a0WBiM0d zPGHuedkkgJjthSWbJ~MY;Q={=L{pzIF*_{9d~D<)4_p!ONfJE8OL#ARN3Yj>B#!IBej~>(T_NCg(s0mY5rCzy=yFn&#&A| zxQ?%m2S?{zj;lLeIp-O9DwRCzz78DAZhLxtgB-UhmB^i{L!C+^*N*DFg)b-N&qHkIZ4W9spa1!> zaPnKp{rv*<@fGpAi7oH(QS4T8JfTD*$_Siu%492~iJk0P;L{(+2 zxXe=PUL)GKvj^~3E=<`{dCR>?U~z0c59v~%+^{~2P-YmJvG^OSeD|AfePw)z&DzG} z^M2*}t7-UG=aBcGeg~hgU6SE{C!9|yzw+9OnF~~IyIO5JH~+O}$Mva=!YE>OIiL*| zszS4(!0X+0u2{a=s)NMspf{W#y*XQ)HizFr0Csmy5LfQ=k8z2 zT#p#gyCZFaALcP5LA)Igcx1LtkO|7&@Lv$_;6ZkpJzL|`!j*8_EV{XANKw$sT9#W%)VeEqIM31dFSS;f7zHts*4-rw3B2ve}u67;EOVL zox(^S%R>j{d9Ys&mAEUWe*AwlkIy6?&FZ7=7)WNoW?8F)6a^)}U0$2~o zhvqM+e%94}-XEK&d3eGf)xoc2vG(T<`{=8&f6)TdBk@zrR-I%*7lD_G;dF`WtOE1a^C)^E6F$ zH5m2I)`Kgz5_9bdmF>FZLF-+qF!gbF4k?&KaK#mrCKw8)iRR_z0?}M^34@{Z3(+g;HX_FJuYq5Bz=k)MG*OA5ik(B&tN# zjahO%gwW*x&uNW_^ouYdK>IiYWGD)C0innyC{sa$LOwt;CD*k;lV|hikJ#Sd_ZOla zj~)iWS8T)jPSD~u>xt2jgUou2602wS{c`-ou)yMbgFq;!fA8DtPkELRG5#QkeUMtV&? z;1-z|56nHOV!8%f$!fd$Y?s*GtR?EX`iP`lKas>*8dcSfJm6NgZZBWieTE$|>M+ zO8uMr?`9NF;LemueFGNWZBHtyGO*Cb;4Y=>&?T>~_5TuJi|x3FvJG$TEKh^b>ngY+smNA)9@ zFqk^pEdvom8Vn=tTK_>^4fl5T(T<(qr+KAVuIgSdC;>Q8@<-g&44|1KEP!rG-yl%7 z^teXc?Z#QTPgEMSGZo4?kltpf4Y$)r9{0z#ljw@M+p4{8(3Ax2`kxf4U4RFq>In6t zS-jRiPvl9HeLC)J6Nwtq-X-?R3RLHxLTo4$>?Ty}S(zvhR6S5z+XdqCqTGbSDcSqy zNizHQpViGS#DR|(+q6k9Pe0O(t9;1r6ZvzS`q=}l-l)qNarle!#4bHY2k8sm!3a6@ z0pS5$DHhpG0uGX*`d$y=Qi=F?(#iyUCYv?&k2rhnXRN}6s6O255(_tIC2DNc;h4sP zV0Y0lTi)&{!oC2XAcrDStgBuLj{9sL_dIav&-^ou-d!E@JL>)7rh3ZhBez!~tg8+XV08*lbtj{o)CW0R~EStD<=KLsP~U$v>N zau!KC#D!q}ilPc{R=S-m5y34V-N(B8;!|IFw#2qU?3%hX`To`;#|*p!joYGS zR!Vk4@;=PD4LayMGSyE-lJE(rXJvoZh!XtI8Xe7R8Y|xSl8$^&yM?Mr7>~Sd!a=S( zgbk0d+~u)>IXhV~_ObmqLU2o{Ubit=g>Pv0#i3~?E1T6=pb|i`oKRf`BZW^%DM*IX z6jc{%(I?`t08MDqnBh)FRL0)xlUQaM1^FjdP<*A2Rx%}4%L%=Yx{3|y!xqu`q%vuU@U|l<f?kBz4VYp2;*pZBM)1bPMv|C7*F?qO5O|<_pOua}XQMGw6H9>FPG_f};yta0=Ek zF!z!dV@R9y(L)O=_ENQ%<)CLoVo9M=SAGzJQ}c?st==${CCmyVVF9k zjoow8TflOIKc4mpY^ksC-oS6~m|?E@SG4}R-_>0smXlpw^lZk@XaitJeGiJdVR@En zM4la*8)O&i!Z;TDm|cBOi81DSa)(md9;%9$gGLt;xpv8<9PjmeP=&?3HoAz9G=lNV z(1va^LQ$LAT|VU(vLH0}`==x382^s<-zcVXu zKGQIEFtEo;m_qq>a&C}WLq8Nz*}oF3=i$5Drr{hRiN}+#*%uqSi{57Vcl|`!wA!i; zkIkHfejx+MwMx0d-G{DualIQhw5ACoQDfb*Xb1mBX5BYqy(27H*tGj zZ!R*<;3wqO^)xNC4XwO>Vzl0LU)kF>y^T)STwT45$WhaLP_!Ml#D6&?*I9x1vk{pk zaiSr1kqhx5VX^@mnIUR^!XmBI&Do0}F8_`{G<TEB|4C1 z4wk?d)w{+8MLFuvstzHK=o>3|IkF z&3k(eo%lim0nvEdlVZ{Z0N&jaEI4F!-(Q2rZcBEi5)!ctjL~(Zt`MC)G*_FW1Rdi5 z92HSgL}oaH35|))UX6~l8$?`pcy{~CRq|-!w3ZEeXSTm8>0vui3o39 z2+-FHa1~2RVHs&&k^)ostgst)&h?I_PdrIn;ZPuF`U8GW9WX}G0gB!v_`Q1|;;s|m z&C3MPQTsqWrmGy*ya8l48^EPPhToY4VHf;>xm#SoOehQpQB%d6);~1`Y>eoD8Zr|6 zqCF^;&kC5x+aV$CA_4xzf$-t>Kr9avz?xIm(_2`P8sH5q{$>Nd@{kdS(0#`KPcCE=aJX)2SDO2 z?+S1ku>kWKq>Bt(K@-3QS_ZI=rNomxf&gb3>@TQlH&{bag7f58k zOP-KALIT4R0I($#0mT7E3Uy{MV2Mc^29kk{Q*&Rhg%Osxz}^r!c6FeQ-xzXES`;Zi zs6_vI&U80e{`dh5oV<1?PWjOhdUxXn4E+#?M> zr1DpeN~7vOk0L$S1(=ppxv&_NZKM)QYct{i%m;*FOy& z=#K{}sb0Ti;MNO0>h{V-W-WDX?{|1^v7g1SX;*~THZ9M)jb0;A{JasiAD3n9XS~tR zwf1e>k-mju>Ky^gl}@vL4;*eZB=TxbaqJzP;V#fOm@mZ|qI?{tWS8tR{jX^Uo~#%B zPQ{&)UkRc2VCSGt)LZieoT&4Fv0jp_ww)xLv_!T@U~quQay($HCCboc4(a_*677(p zeha6dT#;bOjp;+B4!TX8fobZsqvHcLgoPGZH1LE}1}NOeTqV7LF?nA1nCFaMPaB9b zvEO|lY5z`JL5}8dki~LGOqd(POe@)srMXRQ^m*wG>q%{o3o4?BV?>M^G!L=c-@c~m z+sjZfxXOWx${ShACOT5eV(GC%y(JD(oG+-G*k;RYOm`}W%<;J2kTqjZgrYe^w$6CJ zm6Y@*{IQ;_YF8BL;1M!3+r*u1V7E+> z*k#6%IF&TF%M zSH#Se84}l8lD)n?^|G23rk_lkEEF3}2A3=4-wT)#;7Q@J@zYQbhAAh;vLc*T3f#V-d5|jWvI<$)6ADWhEytQ&Qj>fP=e3EFNKl#=%2Fl6 zKfHZZ-3h7)0-%6*+~^z}!5!B3%otaH)|d{6al{J*A}xqrH} z3t+zaGtl=x-{HJF?C&gY1&P6#xymeF2-1}v3ez%zbQJn5rC3qbqq?N8`_j7w-b54o zFh$)CF`i*ysjGnj4Rr^lj2|Frz7JazGrc4QV72+elwEWllLeB17sm!f(jQGX1;Bbd zAB@-cMKRh*n#2J56X@^snPSZpZhc1GIrXek{8C(X39dw^9{I3Oat?>ppJ{Ith?BH~ z5e*}DjeSaB^b6_NB&_0k-T9}co`v^;OWg_7*SYeDKz02j(n9;j}~ij_mxj2o3T$Z{7IfN4#81 zk4T0nR!9!88X=f>^RE-4cvprEpmOFST6+7Ij_P7f({0t}MX4`P)Q^5b;uc%ab(HqW z$+$ZtMJQXyhO(ye?&QW_%Kgo*U7T78JH%qF(?vhMm`c788MFMpA1}l5RM6JgeWca- zTcc}VOCNGdbi_JfnMQ)j*+fp3yB;BYvJ>+iQTK7~Yv+5!cj?VkybGDux#4{oHJzGYy(mnWu?{b~d` zIMuU>n%Q=a;(o?bHTosJl4z^|c&(rBm?woDk%p3IV)_wq#7*jI@VYSK7FxKtp8sHqtm%@-kx|F4@1E0HY#i=+Z$u zuXcT(3AKpWo{L3fKh=BZd@dz&t98b@NA$lJJ0nNV|4Fg^?DDj&6yMA~8QHTqOvmY@ z`t4tc4P~$EEtUeb_^(kpemkNRIaFy*Y!_0?CKwEhq{I=LRG*{_a)5tFEU`0`pwIDZ zyZnh-nk@SjXv309qau{m_F5_2SEmQ2O~-p98!~j?dDGO-ZPV4>LH=$I!!Q$nw1gCW zdoyxS#5_ZLIFqCr2a}6G1p=!AST^E>U^@=*qF-%pXv-Eg#^h((?L3^Ok8HXK;*cC* z^s4l%k!e7-!a?(kp_Rp`&wYmJwATJi2b|ej%PU2_g8rO zn$A(1WWVH}wAH!uzBH{g#Ry7Y2XoGn5Cp8kbUAH`IJj?mxJA*FrL7%Yy@^g?+w$QFU?FELA$zZ%nQ;rV873ALRh|;B?t@38 z!o9T-uou>12pm7lLBi1RcL!6+x|~{l5q^=!FDm*=oaOhKfKUaA2k6IHXV|~s0H2b( zZ{dZBi=#uW0vD9=dxN&ZQE#M7N{n{bJ3 z8@5^!nz+VD@`P(GK#WIac!>VN=2TS0CYNg&f+9~`Uq5EU)K4fGYkDail|#!wu|T;) z%756jarBN&l3gEnhas$p#PvS=pn!K!eTF z`%QJ5m3X%;dws4P{k%Dcbdi=1M6`ZGJL?G*?TB#1+Tq3mzpnw{N zAOnRnf60vQn>xkn;c97u+U8rXf}zEuSgAYC{@6f7Q;3B!jVseycCNiUt7yvj&q zbaPjk$nt2)HMg0Asto3H(~;HODFa;*jAo^Grj#+Z0cK)^7KDQ^U)Ch%ArOLK z0DzfzJTg4F4h3Zv7>tYc;U!#;1V04}22p{BA{CtoPV%5n!a9 zFG&f8Oi~+RleA5WJV;=X3bmA(VQR63azctAyj3)dKY-3K%HfC7N^6f zp~~QN;57OjiKEUFk7C;S!k~8ID6E}pGKfHx%;ur(%yyzJAd;U>?~ zQ#VbDA2FyEC(d)^RdL`^-cDmdyp!9BwxE*z5U!oo&U`1nbKiOIBml?&tdZ5ofG5Cn z;3@DdcoIATo-K^NmoXxXVdHs50AmPmID{BQ#4~E5Gzmr&4(ED!hzv-^lRSa1tX9yC zSQg2lMnzJ{WFh8i*MMs>Ba*R4NyGr`b&hcISddcrLOn_HhkMfp=Se{TK=AChC!8qaruo%wp6KMfE@_EuM9wL5EzvoGe4)+0Th#e>TJY1;n$IO#VqWF|~ zIz9mwSi*4CvGdzT^)!-MJu@TEfVm5vqM>m*VOexOtrH$kn?wdg^a=XRfP6kbpPNsI z#v@?v(*CMLa4Sldsi^l?{i{WRGde*r0EP<4E8thgU?nA_VAB=KHj)>~k7mYzS2o5O zX(0hu2FK6hr_oOpMwc*MV&-a>P$vR*CL}w4l#uUi1gKYD&%3<&5ouaGZwf6 z`?Tdg|DTa8@#d71pqBWkci?f1oOdoMSVOYV26jqS^$;AOI0Oi2ezGel0j+>0jurrQ z%=#v7;u7M2;D8DkWE~$+js(P@5dtwl${o!z0M^YEXe&zB1&iTyhGXQI6fv#TtYQ22 z1S@XTJ0>TH74uq8>LaQ9^ho~J{t%@I4MY{9oNxupe+oannC6bn$ecn6I)PY%IzhvM zsW6a+kYWnT*JN%YCvFo@(2LV9Y#8PlgqY1HA}Ud|x~3KM;zR}=ByK@XD60$J5+JlCL6#4~7dtj~Z>n1V<>uWqP`3)p4kGE(-;dNO60 z6I{=)r`=EydXcgEZ9Q3mV^4<$)^iXF?dW3g+`t-)kOE~YGlSInAjPOYm@9M~!sadG zAws}Hb!>X-GFgXHD25{yy1=4WIXKV|ijAg`pUdEL&`a^*CkZ(?&0f~>Qx_T@VUVe( z79MX4S)UsNYX%EtV6h@vp{meiC|%~l@hw7i#D|_450Ro3(gPH_K?22aLam{F2B=;e zvBL)QlSuRV zDa8|Dqk$DZR6L=Mz($NdmlVi~_!bw+U6U|DrPLv&Q`CsU3qPQQFzL8`nkO@ZyDtcpEKEzmkFZiH-F!#j~9U5h@yclAxk|#i-UBf`DLeL|E8oLg1hm7PC(hO18 zm^??KFi{%BOOyt|ru69Ff&h`Uh9f)CIYntA6owVO zY#2bZmNvu?21&&pu@kLqnAe)36%X$p)I$>mb&Hye&-fV$2rx$i!po6>*mA_dKAb6O-WaT33C|5KGE6Lge&HA?0+yJY_7*qc|zyQ;4Vc1lP*@B&mE^ z6sf`>E<{cRA6>W5M+<{dyfIn-1bVk8p(?Zx4T%6!elcXe$wwB;aaUK*?a&Nl2jfXlxQ9#2nSpL+0^F zJ%NfagcV7>99IhyR!~z75!B>+1XlPSAj!N$d*UBpcq)1X$G#&u2`H%ehx2nM$s%k3 zm^>=EWDt4%mYck#;lZGygM!gZy9aGd%^=CC!JYn@Vo|h(#S`2 zvQFwGDNXh@g(Jek;fQbqe6;~P20^gsGMOOn+MqlWHcgdo_CIu9&=(cVaLEBSSt`5uTr+c zfJ9a*+^TvkBBB+Ah;yh*5TSs7ELVOJjS&X6mPdW!8DS*bg-QFiE^LnR#2>)W(cieT z*d*K$wapks{=w04#9&0^Cy*G@K5S`D!WIFGP=7Q*5)hz_2}HPb6XLc=v6M?gJXDM* zMj`?<400Mx4NnUFFpqJW9@ujo{eknD?UwSV! z0JtgcSBXn1rPNBy0X11bvZZ>Ij!8@cWGWKke_WVSPkG-j$Z z)pYPof2KRrD#YY$=3qHX=7}IWnVT~}KFgtcI#ZrZL0ng@ zv)5U=Vne~4WKOCfDh9VR+nMg{cD76Coeg&U0l+hS2r}yjkgBRyd_b@ufBos@)n}HBZql$J5##@iY*i?J{uvPKBp7v^iuQlI{VGs75$7`~mvXM9B8^ z4(UA=N|i|Ikh=)(DIW5B>ZagOA}J?Z4O5FL`pGEe9PwnC5ZtGw3ixS3VtO(^4StbzM;ip-R8A*8tKpp- z3}Yk*)1YqF$^nZEIanzoFE$EjTYM2|X#v!YzyMW+x)A_mITKQ-yU!LX3pMh=08sGR zB!m>5&j%_hg=r;`!CC204*>%}#={^$1qkZstz1y=0poyi!0>J!Fb)_7V2oxf!+_zP zmtzX_W2olC8EW6;N@yV)qk>V*s6dM902Si<==3_E z_DYbGK`REu!eZuDS@Espg03v*fI~pli!|Ao+oqu`@~F9>4C*t$6CejWtFXajC6|yS zYFMO+`kx@7ek<@0UqpNWM=vY`QRtPzP|K(%RMwAU(tO(Vh*mB-?Ko1c2hcOXs9|Pc z{x!2qsUisG-_k;rYK35>g44#5V;op21*LWR1;T~Ugjxyps0S%7gc!GO@pm3P4W7W% zU#c)QmtIz$L$#*~*^9{4fugk2wJ102)Bk6EJ{5flf8Jlv8IbyqR+VH>InV*wdz3Bp@%> zRENh9aa`qclBNb2AS2b(Rzf}%TEzoU0F)7q5UmNu18&C4K|6^9)C0n4w3B#1p9Lln zPD7{80RRCP)ji9eB@X}$;HKybS`+qEXw?TGpNeuRT%06aPUJ?NWqos%^UJev(m45X zK}$C$fD`#rnB-Qz$O0VIE1c?7@~@^-wV329e5$94p6U@abNa-LTgET(mq%5j>iklv zy0>JizAx{VPu2RR{IaQfS=n=*vKkgciT{tQWfozczyriuI2B_R`ht!n$u{cqy5`gdk)(^0VSCyGsxtOcsBA60$)%8RvLV!|{5FNri7oUIC$0y@+ zu==Ws5b(u?kc$|VTG`AA}Xv6RtzhJwK{2Gb+95pI;J))BQK;f_8Wsz)hO&)o z3aMf|afHBoj4-^a_YabcAK=D^h-hr!0n`_>7)TI~)yCS`kg>v8aS<=p5yp#5YFeJC zUO}OE-}516h>Ovbv&XoS#8tS9L`Npzu^)I5(_6)d)ER#FGX&@q|V+A}pTf35=)5bK|-3 zBz@W>SQZ_ZMuoeA$|k5)fx=yTF)`h2vaJ{zsu z3fAZAv-O#FJ5I6vD6a+c~-GG`vy)B&8p=x#$xi;P$vu-!To5j|_Mh9TvG6jjQpwvW& z;W0!jW@HzYI2mc~A`qd#6YIo1&pP1&uvgj*UzXO1?;|xN)3_MfRz(JYbCb}^=O7Zt zq88mnFgA1rSBQxR1^@w2K9Gt|K9@St*0En43>Ja)jD&_gS%F^9MX11aF@gw%gi0?* zU+$VjYjUC=anKTY5JDHNsn64Aq?OWI`mDH0Tv-;W&rGW!V$=Hi?6juc0C}KRQL832 zG||dxWtqK3lo6z}CWo|Pl_<;@bmQC-E)|$-YBT0q|H!Xij$o;OfM-Bc0(12TINymV z;h#0IEk{&@2x*dN^p%Ms0{p~v(eCDnka-IMIIHRtpSL!a8f!N>b)C9?-aZ*yEw~r7 z$|Z6V;ks%yAyU6IEQEZq$(T#vC+b}q4K0LJ; z<8|^%c}?Ij8R3jl#-0s7(U(w603X<0E3XY05o44Q@dSD;y_#N?OzOo43^pMIac0~h zO%zYBu-DkD>~;1^d#$~Sm(Gjar5PjcHOGj8nZVHqItT#()I$a?R*<}DI|u-*i~@ki zYehhbBLL6>#0q>50)WKuLlf!J1%kq9@oBRH$?XONeB_W;t50Fxc?w!wm&XgPpkCV%{(xm!_K*bUOzz3Oz#EURC z7)y*D#u{UbvB=nAY<2+yAqG^*1tUOmAh`saG}f@w69lOAw0c@>DmGP0E+sdUo5|sN zdIBZ|q!-YXySqYwb5C5JMT&(qa` zHNcsV7@^P(AtXQwL*Uf!6=4w}$nHKlexD)lp5iFjdfg;oRxl-)5zGc=L>7XXz?8^N zIoV(o(5@g7@Bylk&B!J`lAj%yjF6>h97%B#ahha1o!d?O*dX+{+Y2r2qc3cfT2 z4;2rPreOa~EQ6@P6BQuiq=_0~$p^#(l&HE0ct8>rW0ViztqkvG5aR$2>Z76p=LRly3LB}VnL=8p=Ws|a{l%i}D^%w8~K+2v2J^@b5C~9NMDeFpk zP<#Uh0mlGE$5b|t8jP^Y9s@QYSXpig1j3Tqm1W6hQdM>@9<|-vj)Y=TJT3i}!itOr zk0O+AM`xrP(oN}}bf?)U-Dnm_x0*fDp=MvRs@c>mX;w-Ho1M+JW=*rTS=Ovh)fHoKek%@SvUv;Vo$Y;u-1JDlasHfN2q&e`Mab2d0DovqGBXRou+ z+3YNJ7CXD0)y^(wZ?oUo;%s+zJR6=x&R*!0v*%gntaa8qo1O*Fwr9n&<=N?Me0Duc zpYy%65I_u6g!fUF&gl>U$kYe`APL`w^Q(Y%K>L4*6}SR|kCxdl>kQTRx!BZ53O}K& z#?J_C#vu9G!5C@rJ}CyH^bYHzM-KXzM z(;=jgOH|MnXlU9qt(q1KdPi&1qG{KO7>3kA{v@Jk6PVLJ7Y#;O#yjm1!N;+=q0`D~ zO)!4iePZLLqPRrZF^LUg00su5Vn{K6qNp7Rpc6t6jarWlpY~{@P+Zi$0Kj$;CKN*c z#HA=q+SK-EXb6+q>Px0}XLG5Y-S`ygj7Wq~t^VfBC|DpGI1gC0K?GOrNm0}wtA*9( z5L~s$23xI8NmUD`vnoaeiVrO%=K)6%s|WxP)+!W$b4cG>C}IpI@w#JbHt6f<36RCZ;$ATV^PF4P zMjl}{?OK%G4+&y)S!60u1g;5{#d~eNmL4H&7(OWMb~Yvex=m@ZvuJ-YFr*f92&6TpZl}7ClW{go`aOA!B>C+1L&rG`7qHnnC~|au)!A zHwgfMI0AqfoY!dpP<0pptnQ2t1OVgR<$?eJe5f^A365k=hXR24HGEe97zgkX z3phVW015y(OP-v4lcieWROsRGaHLYa0Kfxp05Fm`0L-`uP)17;8q(5b@xgFtG%acn zuUl3bfCCl^yI^ZbEpNAOzmU|6GXc5)Wpv6hEqswS$=h~xkstz4sdlOmd90ju-b)p9 zYxA)k5-rmwMoYE^>;e`F;9!-xIG~1!6Q`vi;zj|xP~8F~z*OV_^46vLxut9X@){U^JR{Xe;w#mU_->6vxwi-w?XBw8 z#euqYaj0$q9IRW|1=GT4*~|h+@NbP1Oj1vUA@Up3$<~inL_m0ytQ>E)JS&HsYSwx~1X5F0KMbOMl74 zM2FjtzyTnBd?zF%;S=G98iv9B-F7W0KwnEv3H-LB!_h%<&TmDyNTL?u{-S|9mK;em zaHl4m3>w6D3wH6{Qd&+>Ubhhs0LKfLqvfc5%2S7*4;Bo@-Fmt^C?JV!%!Y!VTYO!O~)sf&suS#1@Lc!-e-x5S9iB z0}ykC1mOS;8v`pGFg>AHu_!E8LV`KKF94eRf_Q)lsI0jbFlsK==usL%z2b0ghe6*ZwcRks@gA;s_@IDYC@N)YMXpsJ}=?9NLq&M1I?-0h$!e<2nM>o zih%Avx1Srg(K3AiZ6w& z*h~-TuOdnIpKx2+bn%u|U4+F|H>#SywCdI^v$}e}uP#s*t4q!W-NwPZ`=BWlD(@l~|_jqe!%z+m`0;YS{o#|dX6Rvi$Bw5(fk>u9pkKtPgo$I}C&uz#8YbrcFYDIGYeRmEP_b~r)2HSm(alaqvswF-d)5I@N- z+L>WXO&C;nxNBvYXU?k}mqwZk$_nX^E2BaoO|RZooi2VRj03z{p}OXYG=?tLC*>Rt6N zde`c~4><3VcPYH%-Er)9*Fxpp9bLXAL{J}s>US3wn@43r}A_iG5gK_X(2!wlA1JTfwnjThe6rKnX z)J!hC%j*E|W~IKnQKBbrlb6G*l2h^?d8K4U-iX7Hce)D?fI$3sd%X1Bi3AYQy*l7s z(U^(?yc$hK!G9OVYvzqL1Z@NPSwdh@oRDog@Qy|u59s;6CE&1}!dF8x2UNY|o^Tk`^ zwF}OxcAE6eW@US|z&p9LfiaNyneie{AZqIn}V2!2N(0KfwoY-ZKJIlU6*MREC77Nq=UW(dED z|B+EqO9;HJ&}$YeF5Bx0g$QIF0vHj80EPx4fB}Jc&m4CJl-9Lpuex`2#J3`A`mOXh zwOo>f9tYW*_^3!Md)>Xw-UZ&eSKjNrg!Xnv&%N&%axZml+#5Nfu6=taUfW(P&ZA4> zW$jH(#63HaVxr2bzL(wWkmOtO5NWEokldl7Alb{ey7$Up`snux zI5kZ`8)D;oim@l7%%!}=ZgB+3++azsPLOvNF9d(R=s)jbxOE< zd5H1e+@X`_D!1@d_$_<)fDU8wtHjB$8w zD+OU|U$^fT0?#_=ZSQS7_aGk6O@+sE>=F9x`}$%+p2&}pXE8$F!Z&Hx_!G7uD}*fw zTEJ3>B?SgGey@aN-^j1om-0L3BD}GE!2vU=7zMwo5uui%_c%s^5h;s*naA@u3cSJ1Bc z4-#``HP)XqUJ%hxbo({><$fiOvA{7LQg0$R^kmjIJPk-gZ2m4-;fC>N6Sa`Md`60Ctl^Ow)J}bf!VM}X7 z_#w>s%zn;Y@*l5Hkg#v+AN+AG3Sff?!s#^z0AQhch!{j2z7T2?L>>i%*Pu4xK?(i! z5W)d9v2XxR%I);=x(TaSbi#=boN!Q>f@Bx1P0WPn6v)Gf!19pFfY@d0Ha|n8EveEa zO}GGh6fWo#KwrX0VXANe^fJ|r6T~3Y`a+U{6oV&gEc|i}3L8EkRb|$+@BtKufEH#8 zmxVn9Z{gA<{`1O87tXTYgbQUOK&yfPC2_&xL5DKDRwmb{u*}24LLfjP3^TG$IzSl> zWJU;nSOC43Wraf$B?JU0vFn2CC2fHogl)m!;8{c6Q^=)&nEhfsW50q;z9%F#==tth zmi#?^F<#G|Cx-A2A;w}(EU;ilkK*|C$;wsdQON~!>8fZa531^Vm~nrlZHjZ&EU{*A#{as8R_KUarT7yGu$weiz~Dn zj(f^ZeZ!F8Y$5PB>8UEqMl>ZG5wO&PtJw22%;dOBorXC+?%|#1@?kyvZ;gZo^~}TM z;iRXX5An(L>;@A+E5p3u@9-lSJh&N7o?J%m!+DfQ=q@4X`9fe2pN1(tcL?5vr^T@| zAwCUP41%7z0t_*9_0?7gB|%(9I+h^}&G0RF;o%>CdIE^O!;WABFM$|1d>N^RWFx>Q zTF-y$zjf!y+5~*|Ja5E~P#N(f)ZfZbc@ZZ)8N#;V>@ZUyH_RQz04O1sIt;`lvEN4x zF%O9bPfX@HeFy{w_Qy*i18VZ}I>sLP$2|mEhYlME6J~me55Hex!>^cFGGHVY%Dj4z zo_EhMv3i9!S+>abV#`n;22H*1C}aM>9v_GqF%c z%+-lB={1SFf{u~z2+n1#!zS7O@H#j?@sNjw&t)z5sON3mkMd2uF3vpe>=r|Vox!S zshZ?VC?ROVzP7;Pl3kGTgg`~WBRCli4E#iUO~hcA06s_-dn%a4!Qz+Au-JsKRnXa7 z6SfEqMJ>b8zyy;mt{QBMA4c`JXaVMdL<#^PT)|(?0xXySfI;T?S~$r@@=o2w?I;Wc zb&xuE3<&+*18l=DiHosp(UwVi-|>(B$$DhYWy~@T zMy!k*6({4Q@dJQlY^pk9G>t{Z9OJ0*#`t1PHMVk8jA<4K%9#ZM$}-mW*$CXaICaLD zzn15UBIFC1bA?Q-5allLU>^e2BP3>X#k3|@3D5xNr>>T3%Zgy=Zrc`YV*(*FByBt) z`;L^2$Hr9%vGIY+2xjX#bWyt`1Eq!nfCS|ikhL|6Dt~$!j=&%U5TF3i8xfAcFTN{) zJb+8@;}y~S7(=iWzz|&$sZ0SSl0uW!cJ6p^0FomfKlhc} z17IDej#I~{W0VOrC2~YM4jq4v`6kPw%`vm=nK9{@1X_+o5R+pYN96c%?9KxKFpePt zietpFm0)q)IF{m}PW?Wmo%&~UED#AODUwx153PmPz^;ztNY*WxP!J+9Pi_}s4Yd;l zn(w@wvXAkd?_=~a`j~t?KPE(ykHeOb-P(lrSQEC+xJj*$0$67srjAg?dh9%I9M2if z5!qra!qMPpkU(ZIb&_^Sj{pV$;Zfgt@4R3}bk)z00rQz#=#kg$2k+0_-1v0qcxBC81{`OzI?G!k)2Gi%wu8B$jRn^a!GX(6#}iZ+t45 z2v!b&rsxerVda2E1}69tnhT?s1{~}K)|6@})DDuPOd<%K4RQg%SV#7vwGe;@zymZg zHQ|p80B9udY-k9;gD&>)bbCIh@#}OA}U#&KuQKF z0TqA;D}hvU5Mh^qRbnN#l2XZOf;oaLIfu|n-X&ub_{jGNG$~L z!3*J-d}p8t01wOq%;YjcG8u^=OWY~8l9|b7h8>gR0M=wxDlQBJwg{erH^UA|jyx|C zEHD(x2i;^;ZAZyd(0a|*c?zn@sM;5Tr{K#-vAZUqlTFD6BToT?afhTvE-jic&feq3}+|C(DzIwfN+fKtTzgOirFNMsKzV<%3i0C=q-RF;pr>V2%dqJ`$Kw+5SbJ+|B~=t50t96M0P3Ko;5hIUoRkO3NJNhvL|~%~Qg$xwZaf8q z#(zO;v4kLRI4p%l98Ca5z=KjUJ%OuK zQx+^ll|PEn8;^p3$+&<-tSSqVfd}OSr{WvMQ^2X6ypWY?3p*x(fa74LbW}tlmX-A< zo&s0QueLj&TM#Rc6Ld=S1Vn;U`B=MS0xRQ{rwM&!Z5@_jhtyoSC(sibN|2@#LUZAo z@KjbU>K3Sq5)niKJ=ug%WU79UP{Ik+IzckHF7;|tMkgQ=60c@~9YWtBo%9db!1xm$ zub}0S0>UL)%vui9DHa!oJ0@R(RC$^JM*tqQ?8FIIWl{1fL2mUz7(Z-o=yuD6T>?@0 z)6hp|CQy=3OCW|D1CFVte4pJdG;T!6{sd1#bHS4kP5uWk41fn)gv9cJ$2>3~U?ymn zM+kM-kODK=C2KIsDuEId4m*TeGIYUX11;$z4+uEPmE;pb8KO_j)N2<>vYE4Rj4VWl*9%{grSqD!3DEdzA7?nwRP2oO5<7JU?913ItT#DP6B{* z;{ZU`M8g>wgdGO}@TR}ZR^Z$8F91CJ3-AO40D^<3u>b&2Fx^=RXio)z+k*ih3cyD& z1@IB34hH}k&H=z6a{$QTAOK)PhzA6~w-EtgkU;?aoDu+=2nB#6K>@IEQ~+dc7XWtV z1%Lt}i{Le3089dK1kZ&AK=!Bs;BjgI808!QC^!dzzUcuVSt!g|8RRJtfHZ)jVD%RP zAUH(;Mokg`5sUO91TyAwc_}Z?FJ35-b31 zW(&aV;R4W2xBxgVE&$#K{Xhx<1F*fr05~o%0D^~~LIwb#kO4qD9ux!*8i41524H)q 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%0ATmR9?;-Xeup8u?A@))+yef z!^sGJ*_Pq#_O!us_PvPY2>>YPJz`I0;ik^#B(mq+Tog1#!9=q6im68UZM4-?G*ZbQ zM^9#XX5OqUj6*q~oiky&mg|z@veNdFF@Kn4U{3JOy z?4fH4d6lu84TwPwffGLQS0m z-C?A>AJft^LlN7DKhD*EX=JE&w^rdb(FPo zhP;s3&DsRKLEf9plxwE0!rR&lfyK#T*Uj?xvI2RQ{8`hTspyR3lSNR(qeT9&=>24c z{C(u-$zFOGzfS&r@ZXK2(bibtr@msVGvM~6m5tC_Fz1j3a z+julyf-*Q>UMl*s>ds_=@oWBxfo8yeMM<(ZoXfhKcriz(F&6xv8=f$0RNQ&K%?zpA zAFBIj*fYvKiU;iA$|V-eYuQ)_E0$;rDzQrtB3xT=8R<~))G?B~FJTP%BI%Nk(ezvA zC(0w-8_aCaC(2XYN?={aIpm^|nbtr3e^55sx$Elo??h;8y|nz&|N9nSJ;(JF_)f%a zZEdYx+W+(mw_Gw44}3B6uy2BR{T}eID+0GxPZuE+eGs>$zXiUhp8`MKXAft$dan3J zxwszLRF7ckv9zV;@B7c05BQs}YQuer=C<}t3#Mm{zx40Ya@REszX~y9tKr%ZkM)4= zx9z(9ja$Z62&Yxk-#5J5QjbX3nWvXEWYb@&C*C8ASc({=Th#J!|)54U0ex<>;K2cDyz4EP!v zqxOlqwn>qdKALr=C*naXX_L9X!`J9roXf5FxyV zF`P8aw5wpE=wRPsWO6 z@bTfgxDfN3qBY8mPD!N?MaLMi;9ZfM@??i(28OkvHq5m2Mh`1z79|}_5;b`^Z)WpM z;mp)b34;iuG`-9X=Kd5J*JNAyqv9MATvioFb6=F@(D{-iE+ep*9?zAao);g9+&cp& z#&N$0J|>r8f8tAOe2ea*a=3x0T&}0%0;$1CyF!yz$c?MnFaroC2KVsRDF}QW)wP+w z+^e}q_vb!ZOdd|)x8&RrD$n>d%UdUnmMR^R(xpV@#}uh|-k`)mf~Suf5bjE-}R zQDk~Qq(ugOgmXQb8(sTHvb)Ir(FwDRSsjDKSsQuMY|3mhluROZ)-OJNcEfDuY}V}N z*|ga)jvtkxDn|^#$}PUZt}D)%?ep|;ybTu?W@uZZ{2eoNSL-z?i)FjW@6palY~gGE z5${-rit!#&WescHhMRzWbh2aRPQ=3GaL?yBuQ9ASy%$iu{ zK*x5YjOlQABk7E+1^GW!^Kjd63&e_3&4wZT6e`o=;bD3LrOIe*q=NY*+Rt-ClAq^7 zm7nJ!^JGtn;(gEG9ep##pzr3-qBr7^NoYO7m}m}}xM!IgH8J@cZ;Bf;95iJbl{>SW zy_Fy0abZ>>jgULQi8Zu|3<41bab71#;IhMZu>w?@4uLl%AI0auJCbE(viB7D3@jmf zgDXKF&;@)o>j=J?rGal}?~b=dRr5o0qLD?p+bB;B3#D76I3j$=W{4?O$!v%f79T42 z%98BtrXKizaS9~HbiU1gWAc#)SCxqUC-oHeaHImMP~*$SYi(z`mVUaT z)WitATHRhvS6_0|A*_MQbhLlX|yr&I&PXTHadgs zc5Am;iSZ(uY7?T#QPa(6FV}#wm^h_ReANnf*&6n$!F;v5SCKY;YxVFb|9o1&ObnT& zHp5%1Z^+r(?bQ|P3sKP}f!1*)!B%zZ|MF;oXrzn!60+DeBs~bd0=*LMqh4laAwAUb z$l%Z}bz<=xa*g_z;}-lI*RQZ^b}g7dbr5=Kd>^U>7NQ2#r;zK_1A(DVQEG+y7?NBf z2prT;9{bJEeYD2G8N*ItW6MK*E&n#zmN2j0l8{NhfPCHln<3Hbg;QYUUiHiJD>>&P z%K#-RzLy}&-PSU#wUs|j*PZTn+H{rz)YsKF)%Vr6)DP5m)mPQ~TkfeJs-LMJs~>N8s(zwA-tw=yx#hNc zQT;~U)AC;ZQTMv@{+%Gk5PHPT6r#+`T_euTPZzn>sV!%GpY#(Hy9z#}Zd8ZESlzMU6c8Z*W{UHyXD|XxD={y%qc9~0~xX$gA8z~GpVg;Y+J-01?^_@?iO@xfKeDf-$!{AZ2c`(KX+P za6^17MjL`4~cj0Ep8VxW@_L=4!|x za}}yGqwRA>#8&9&lPG>_v*M6gs$fh#jD^tr!%w4^26*G&#UHf3PT90$^^-b&D6{0H z`9GB2@OyULjsWFx#UnP5^hTUNd<(2ryg~As=IGa_DCt{DKTlE;Z_bqgpC_N;zhT}v zdKDc^_31e?_e*(NqBYc+^7}Y^%b!zfL1@hLk_)`kMoY@6=C3u=n5kyc(C0bccVX%2z-Oo9l`9=!4{{iiXE~#I&Rk{%dL(QwgcR=b3Xt?hDN{b)5 z{R215Nb{qpAG#OU8_yHwYgaCXTlXK$)`45jPqcdU=j$BSq4X29R?N@0dfVsgAa~v{ zbC?g-g28&HgZxjgAnRb~5BAygOQ8RG&C|_Y=AF&`<|R5F^GNg1{)#aeY~0vz-o&te z=N7j$klI4zJU=*kKE6M)zd9pf-UU(x@oM^F7CZmNFJ)fO-+F${`UnFweB=Ce`>c8T zwtu%bYTM1@40GnQ`xAHC&9UZ-=C|(r(GT?7kxJ*Q5iP9~(_BbTq+&i0LKn?Vhpnia z_ks4JOq%8;y8E^+h1bo8B3mHk^z%?w=*<2mMAdxv{B7;K)6dLz&i}7JUZ69}DskaZhZ!Oqtv<~~S2JtjgImf5xg zQcWj8x&uhqAE}8eQLv#+`~1-`=B8GE46JV@78-$A*p>Vp{y11u#136HqTC^3r_bzlHHtz!u5hcpU|VA*!>`@d^tuf!uvAWa5S*e3tu zE9ZBb!BXds`dL_MFbZ}vjozT*hYb!gmC+Zq3ha1+V2LieIm0K znRIdJ$JpNC1~EuOijK~{8t~$2&$ht7O$D`@)ELzq6=@G1fmGM;i-Y1F;A*V%#PQ?= zjeXF0!bspp9U>WrPcU<$K1;bHx*CEPFjGkaH_q##HMUpCk42-9k5UuAC|S?l=wyi8 zkME4>!rsYR+q~Spl|mxy6d&!nAbwRK1-8%+&qm3>_H|~J!}>BGP1JBVW3|FxVa=-? zj?(NKJ}&xGl)8G&;7u`ioHP`m2+{D$gW*mUIO#5SRf`3F~ zwcn<)G-I_Pnp{mw=NenB?&C-XtxdVyy(p^C_~@5v{uMpPUlx^E1cA=;tMjyEwofaucrD0(y}+xj#oL_0OFxLi$; zre71GXe<_8m#QNj5=8 zyBKd)%oNq$#61?x#ujQk4I~rKM29$Kn%B@XWKXP;eeo09LN*x>d1mWhVK zqm|*N-#a!{{$YAn(*i#aZ5K7{VZMSpXrTH^yQTSCb4Qc7B24p#DSsR+H`Tok2Q>ij zR2;7EZ}GO19rZlR74vS5f@ zw~#{%TwoC*UA9tY@H@pMOIY6;7G~kJC^7dMq{HggLDVwSGG6f2 ztOKbsf3^|dav@MNKXY4SR~M%=e!u5cT1#ToJGI*hTAuNF?xWelwdaN<)xH7SCR<}2E=k0Qn z@*pE{AsI9jmSGFpWeZ_`d43hX0c^Z1XTfW*Nt(B?daz(&t)^FVMzl_ILvtNov|zs= z&4P`_CP^e&h{?7}I{Q|qGIRINqH z2=a^VqQn$gyMd)yh4iwDFuc03%0~F|5_18$)jq zky>EpyBhgcyWTom?piKPA#KXMfnf4JIV?C`P|U@aMjrs9$nx2XilekY2`BApwto4r?B+|A!<#CC$YyR4}0d3<>ZJdUvHm=iB9TzL9jjNE*#?7{ul6FXQMV#4#w?BY zj(UzZNt>Y2XdkF5xH{Td+C`e5WHk-eSV^0u2?(&pU2-b8(=>hk0vejufQ$y?D0wt` z6c}HrRMb`idpLagl2gw%t(i7FWrFCS6_FP;u1#i;-7y538kPi_AF_`YN7F?O(30>m zW_q16xDr)4+-n*(Aelx{m;$fVr>26d0l#NxTPCON8jy1|o5mvA*USdwM=2HDVJxh1 znf5PE8^<`Kj$=uD#;M@cx*Cv1lr0l4MHSpGIaueX`hD1XVwX$R;P;I>>D1^NNH zY3EUU*G?bu-SXp8S81B`>zzts%8*;MP8t!WPgkWpz^zQ4iCCJHS9jC!?>q^=U2C2r z5vJ5&SNOvGX8DQ0>B$3_A83-I2>QCEFLd#IZ9-+4w}(8;z9)os7nev6r)f~W66UE& zwE8dP@{P_*L2q$Y zdh<1#xd-x%DJJm$2D~ZbW6BsWcUHNit~abtZGc`$Hyt0QI}mH=XuIv2o~gi)7{gIn z%b0}1J(kgi>Q+OY>Q-=^zr6w7fL_>bOIjnh(Ohcu$aFG|{E9vW`bw38HI|Pb)CeG7 zpPV84jIEyCg6&X!iO{Z|@ri`?s${jOu^pOL$4mT+Zp{&|$#yydi~#7UIg&-ok8aL) zey3ifTB4+4*pqxJIX(G5gQETA+0XIuo@34uvZ}Tf&iisC>(b$xmtI+Xk2{thHkGSj zb~bG4z4rGE2f3f_!>-Pll%W*EW9s-GsJdFutJ1c~vo=fEf_zJKrs#ioblld^TJpc7 zbTXx_k>2DYhSjX4NEs0}h|T9BIvre1ElYcp4duJE+Eq~xEZjXVqp#*x_oQG>V90sF zP;#EANDA(CZBnNM{f!fhJ|D=$6%msd?NZ5%Y$8?<^nk*>Qp{km3bPb0oz7AqD8__< zE6rVM5tl$V6(ILN>3S0%O0Dx{Q+!xe-=koMu07-jxVv4eec$N!x_MP63Vdp&&p9#n zkFi8qV4GPM5}R2Mpqp7h5LPdfk;YKy+67NU+_%suPF1kP zp>g*x^MP1-WLM=bbJx>yry089e=T;T=8|s7j$7Gv^@K89!(oq)_VsGlJ}vO;d5EhU ze_r~5Lp^adddUdnaPa* zs=YJA6udL%6@Hue*zW0~cVsE37JKb-cE4BRMT5BtPoHLp_Lm@f<;2|GjW2|J>9xxi zb}dY8;KcDUV7asuhYz-xYB zl;=H{{>;E34|Pfh9X>M1c+nT5{hM(R^&f-67-MK!{$;r5i80L$U`$CSKpTOV!Z)*y zGG&+&7Y(eEn4kK0cQxft=4m}ip{m~ves@Q+zuyFO;=G11a6*Amoe#z0|{MOJwk zV>?(kB*EWE-c#;|$xVi>Y@ga~#^cW8%Z2$9e}(#k z4(sY<{Ey+qd_B_Ej&}BAo^bxcunqsl2x2ZC|HVLehco9`hw;0bzb<7UNImY+yipd7XCj$4lpy_Nk5jH(FprK812A96b zqZ_yk1%98SYrsfrw{xYQ(p_sCb#7pJm>PMfpr$O29z(xIQ!G4dbC}_o-_`wFVK+2H z7Khhll_rd4UAT-d^iP$oA7;jIZY8YK~XM`zD zbss0=YoATNo_a(2r{}zf9T@ka40*t8ggs(*<9&(eyV1S7bsD?ps53c-F7+LM;C9to zK5mmZUv$6V6Z6RU$kcb{H|AGnKf!sjVQ@by4yJz=5$R9T7%{Zqqx~~ZDDaq84jyK2 z3dU9ZlnUhPTsvy!@>S)jbW20642429))~*{vGwubk%~!Y3bR|UlHDzbF<@ni8nL=y z#w>NT1I3KRq3$P{6r7$6K)qqwu&fpPj)%5AcKOKM>2P9gQ)B6Ubk#Z$rV9PXxN04T z5lV(tCo_L|>7VrrlIld^eQYx$A{E_~IQ6W~{+{m&eoBx1?A@?UGwz0hdyl-jjNmS9FISseU8@ zYyK*I%IQR4Xy7}fzsE6T>9H%wOWjwHYOF_v;57{US=ub~5na~x$^5Bi=A2hzyA_&M zgeJf5>?Gypi>jm%Lk%;CdWGNjViXOe;iF$n3W%cqHG#a5bJSFk`O#SM(?n3CanuQn zi*l`98l4(^d9I2GkNT(VWN1s#%IJ>SAGP0bqUm3`d#LZS-j4TCd`W*98=F5~?x5aa zU-&O~hd%3!cB?ir+{Unc%e{-J-E)jcYTM2-BL4PB0sRG{=@pP~tb2$btR2KJ&^ihh zq)i?FrVT2tMTq)e8c8^HUg`4atn9Ywph!9KvDU@FVrlh@+onn$@@%5%>ZmfijtF$9 zv*A(aWd)-@Gn$CiL}k5Pk|F!NIEJ`e3NZX5s)|h&IaN@iYRVpvHfQJLy=7UlH#$DB z>>G|CEo^RC7Ma1-BJK+sSwg_mOg&?<~&A}fr4 zT9*^Mii6l=fpY8u9B=gDsROazj&(#2$MZxSyMfrEq{G%UIg$}B$4E0|_lLMZ1A8x2?j_xsAL8k4pQ)t><%#$yMtiGwjL>9E9rh_-7a6~IK{S>cVd4-I)moQ{+l*S zC?Z1GPa-PW&wK4m|FJ5Cvqm~DHL(d^U~agzvezQ$r>?OvO1$*Hwi)K$j)QLM>_N9U z_HX#0TMzq;^kKsm$uj8ywpL%0^-K1(0NavtpaQzfu@{#9v7YWMiAnaGZW=qRU#8l+ z?n7t6_|0-Vb}`$5J;yF(FR=A#|FR4M_p={(`UGVWTNLWpm6W?E_%vBE5fK=C4+Zp- zC1X2e*gL%)rwZ#_b2`{vR)WzrnZLGUvRZ5jSzWgB^ij|Z*$a#zwky?%ZCjFvNMpAe zUt-I8PO!7tU)f_047QijPqu{okkmALFZ&O>kqVjqVvg>qr2kc_$@acGP zuYBpF?1Nw$SRHS~Z$~>dMdpd^XA+W2!!4p@)RJW7Qt7XB?wr<9 zJTz85ovbJ!sVPFu%c`zqA{;Ik9|T7{T_Y<4SjDF4Z^#dj_Yp*|AK+LgTi$tSBv6ai zIh~x&f#0ZmI8K~qn0z4mu*;)X5Fv~Uft@)?y?^5Sy|(*Nify?{idGm!Z(1_)oRPAd zk_h@)c_8UO`o->)8hMg)odLe3@l0?ODHJ&xcslKT?t=7T(xBCQb5V9d1C;$@R2;O? z`ef2>a8)<&?8|ehBzV+)3eb^3IwReZ1Vs={pHaftQA5as2J(+(A8SRz<0OOIw6xcd zEnsx%X_Bwid&)7y)6h?pS9>cWnnH@E6Wed%XQ&M(uY2C*%uYKUo1cz8Ql@fwI^%2< z;^Cy3a=N+ds1K21}>XvMG7?CAv=FPQAffifDc^ClQeX zni=PJzF)2b4#hd`3=8~uOsD5?4+(GUd>UG6{^M*8{5$;jSux_pk$mkpLshcZM`{Nf z#*sZ<(eG7HD2PLX$)Aj#JA?CDphl56Y*$YzE1^fRrg!`aQ^vf#rc5RdIxqL!u*w5w zQV{H(=M`<$bB*dUQr~l}EIsyg`ae)UXN;4AC{ZwaDTQTl&De@*?yNY#-1 ze8aS?G8w?yqWVGSPBpChe2)cG4l`VKlwyhrq!o;0w$6pbR>hyKq93b~t1;}kTy?m1 z8&^LXG%~_^+oOcHa+p8v8}Zx_p83c4l}V{~bPeAk(tanzsQi%3PKdYJXS1Jvx+1=*zD*Z!FqT6^ zbZ;@|B~!WLh^rbY6{XNSpshuEZQZ2EXczMjg}x(>*8d{vlfLyl?;Xb7nD&R?nhq1& zG1Kc+=g3!A*8V7n?Cd_q(bQ*e5bd4UkUpkEUU$=+db7#WZK=80iLdf*w?)p_aSAz) zhz=YIMaETybkbj|ojYxbQtU;W`}Z1nI)}U?HuQEE{p;^%D9`zJ>PW9L__?X*4=

dTHVZ->4+Iy4sr@X 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
  • SHWvK4uuxtBxm)wZs*aQ- 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%0AKXGuUXXrSDi`n6x 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 diff --git a/obsolete/fonts/xerox/Helvetica.cd.Z b/obsolete/fonts/xerox/Helvetica.cd.Z deleted file mode 100644 index 81c1873a3595a4b0aa36203a9b6c38e7fec31989..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152331 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 J8dqH z&Li{@Z?AjgB~9PhP+!!m#VG_I;r~XxR~m3AjeIiiN0xr=Jb>f_cmf9OpH{>3<*)QD z6v>$0k(B8j37SrksOcR^1f#Y30h~Ql3OW}hJf_kqjjo{{QrzZFu*8l12dnAyhChj< zn~S&t`pzxQINs3hd}T7*;vcPaCJjT|@-TER4@1u@&%H!)+XnN=eL2EHYX-q>e~?P& zB94H*bKF+3J+xA?+`>5N&ohLKx+&k z;Tt#fTK?No^vS(JzuezYFZ6xS(7)0meoN0(8T1?e+}ZrC<+pTe-rWll-~C+@-V+53 zzAv4Q0KO1@df(fx_wBuQ|I6U0D?XFSRFTO{6?Bi^@Aq46Zd>1DwMV{AQsfKy+Inoe z1K-jH`hnjyB>2g#c#mp2_|OPL2N8%=Rw@kvp3o3WiHAF;J`pqo>T$3C1E>cLf#!p_ zGEbTRLTE5;GG8uI^>ZKwN7QOS1YKRa01*`r@TlhF>V;)OtWnlHo$;o$~BFS=CPYm?enJyAev_b%G4S4HC& zlBzzKv6kl|6up>F9Z^LIblFCQ;`kAGgs6O@5#3 z7rx}YOELib_l9n;pPK`=m$|P`Nk6vRzO~PsKlr)6j?e91;Hx>Dh2gvUl`V&F!K3>K z{a$<3j!%egv9Fo}@3bqbPuE)X{yx7??~g@4Nm>h{)cy5G$v``D?xvH{yG+v$sg!v6tYNLiZ^Q2P?T#Sg*a`WZjPzwgic zf-b`3>NoskGRrc~D*IclW~=n?@?Gt`q9pCWVXav2@%!{Yf6jlt?feh#WIq?LL^=vQ zucP1z_y}_Ek-VH7iBQ5SEz?$8Tx1>o&k;dk-<=`$Tz}lp>ty}0t}zey-~Aq}{u&pt zN+3x!B%U;zS}T?lAC^wm1fCG_di`=gpNjXV5OhB=e}Rt%`^?_4&#dL9YKpo{TdXok z>GY7mAYKUS%-mEnz716;`M(g5e|dUozx_Yo5LVd9#c}@*Jo*1{p0jCs_S>ofyJ=d* zeg4&uZ$rep{-%HLpZM>hV#W#qElT9XfAMc`?bBieJ;6s}XgVYrqcI}?ZiMqsNErVs zHT3^BRuqTCAX)aLfT`%s%d11ZZrP@7{ZGLZk@5p4xCwwSV^eRvnYfOtfB&t9P(83f#% z%w8{!YQsXx+>rmXNIB-L2J8(pN$<*Ep#juMctj)=IEfEnZ-rA*BVbh22qF={f;mKJ zLcmFb$UC2B}5>0{?*5h_lunP|foJ&;t@t@DU*sj|7<~i|1PC^Y!`QfNj8s zQF-9!@&!0J1Ui6R{VzctG#~-kvRkRZBa$mTra_bqBI%^{vL^JQxDZYbR#bB%{^5hb za_k^BI!K&X3F)Mf#?q+c?E-&+Nf=uoH~<$Y45S5u_J9zvz)=(zf(BtM(Rzt9R8bBd zL4}*+=0p-11!6j~JG?G>gsY?zxCtBx`~n<6sSPO9g-Fj4$U6k(C!`WrmO%!trnPk* zDK-d+ej{)xgcqCzE;SvI2ddZ7Ys|HL;Cd}OVh`j8#slF}??8!HJJ6}nTk6xOM+O;z zs{AHCO8w636=zFf;hpOpiXclXcOcK<^+9$ zJHd(FJ+S?t4>YNG1c!niJECAnP$?)9Yzi_3pMpujs31~sDp(YR3Q`4^f>Ob%U{(+- zcolRCZUw!9T|uj$R!|m4kN6a!(=1K3F?$E~2%ysE^A<4?jx2ek9Ye)P*3uyp%={3F za>@sF1CvIFaAYwb=^91^h=I1?MMxd7L0Ai-5r7KoE*0{VyogJck+#@WyfFcAcUXpSV(WzZb6K|l=D1#?AJkt54#@M$tH2pXIQ zB?-C#*WjK;H=r6^8%YjigA9c;0d9~ zp-Le~*n-m|bp&n=f*dVMEQV+<4!x2XR4&!0>1dhew#kWeQ^mnTAYZoKQD_7se$G}Rmf#%6;l6hg}6d(3t5n=kTiG;_6e&+Edh*We4jm z3WM0-ieaR%QZZs1H1G871m3@e5Y292Rg0Z(9!1G)TZW+K*uRZY7F zLx>qPZY2m$gJ_OXoS}hch#J%oG6jM(4TmR#Gl60xZfQOIQ2>PMfmNKLp{T@A&>{R% z!Zdfn9fRb+l>}VaDJTXzG#iALq4MESh&cii0+N_C!+~6dr7&0sOfm}$lZr_)f^0y{ z#ggPLur8?$P!IAmp268+06>pZ8$=uoWZopTL1D?hHvphn5CDi91OTT10e}^t6&O1d z0Fn+%gqK4BARF*+;4~Njwhjh>!IA+Wm}dZxJ-Bs<0za1nz&+&vFj_(YuniFaNhJh8 zK!PBkdLRh!Y!U##1#to0K>+}I5EqPU762iK1wa!3C(t@v0MKhv2pb0mK(@(lAX{hv zfN&ZB^dt=et;hl3I?x~#4juqmp9et3=BU7HfB@JaAOPV2`#}!Cet-qAALyiT4-o)S z0L~!-kaBnmpdKUuJ~;`14MGBdHk1Ht4<-N^hY5fh0Ak=aoB$M-CIE~>JWVu#0-#Hx z0NepU3D^e;faS0Puu!M~L>wvrqk#%QN2vl3KePbg8!Q0RL;L_d$pX-@xd8ABE&#Nm z3jn+00ssjp|FICFhb#oi(WF7&FljIZ2p%v1(g2)81|W!#0ZA z$N)5KG62+?3;@kS1Mo-D0Dv1b01g-pz$;+3)Kt;{qyuJ4`GD!cLSX~&2ACeK3pfB= zG*b;B0Sdr)-~bd4IRMK;4!|+M=t4+f$w`;25B<0ffUm&=P+MAI#N<2x1SNe!?X4*% zVwEb;Ux#S_S9mwbgAX zO!x?HkMrW~f$QS-CVpZ{Y;R7H_ zm@tee#}1GPCnAjTq`JU~r^r)8tOUfcghL@A$(JOCIBsT$V1{UIzn6l6T@-;w9-EILbHc2%#?zG6|`FxTS6|AA72+@rO`|Xok%%|bp{f0W z2gznxBcva^h>^wi0P~T6P+9Fygc61k*F?K2?{tx-XZDW4oomV^(E&^}aTsM1 zav`gTzXA;itw2MtMh;DAJ1&{2<1InIGL_J;rieT}2cYCD=Hx+;9F)mQbJsq#)dc4}5i@!rC=u@+}U1DQGuH}oq}hL6REfo1X6tRI{l;}{2Hscm9sYAZF88pRW^zxbRt zLMH;CAY)KB#*3N{#Sl-!odH%MPmtPFif0>x9#J4Mlr^B0aIn~m0H*-hs1b>h($R}m zNq!!NMv)?3jyV>zqe9#^f+PBbV1V!<3(}{;Naa$}5a0g2gADqKvWPKQ3Fvv^_={8$_-ju^+T zMPo4+^=e8ou_AI&9gL6F;Kvl0WKwHb6KErCy;)XkL#;(+(|qV44nt~##Z&qY^MO)4 z03cyb8%2r257DW|vYjAEq*z30DHig9&+#e-*uqhG(xwoT#R8Dh(Fd?}Y&tR>pN>w) zs3X*I>L_*0WZbokj)1MJnB61jSV==E*gYs=2o1niSgR){hCyv0VFmywMYLm2L*__P z%xSnfUMXQrSihBgt^?_KEHCPUcGoA`Z;IS&jf_Q2rEcPNU zraxk$No|mmNUjil4vO3?c0}Z>002<5<$MGianC#1LNqAb^qL@^yuP7epm46SFSdV}YYW5q*hK+##wK zB9h;Wufj;-7pet9!8V{u=8yn>Mplt3p{+q|?etfbbDIA9dNL2`d%Jabb`O0#D|$NDfOx zEccbbVbvbI37CC2|ybhtxynA+sE)$Wmk~k`H-`R7JWXS&^nl{?+~woEU;IIn_D>RV1Rv z#s}-V0jgqzIUa-(3Ir(Rj0Y*vc#JoZE7%cNNQH$9h#cOBMXw(MU`VQO*aAq z!PO`PcT(rTbL1tGABm1^WoQKcjyJ}IO4DXqHK$2OsOaQgVX21)LnRn6973{)MM74U zkDtbpQ4D48z>;`3PJ!o&-y$CJbrORRTTB>sZ|g{VWD3$CIgjK?QWt-cK1s~YGA<`M zkwlC^O;Am`z7LTQrfy?_gzUXJ5mz}ItEEMi-dI~7PpChVc_een4J%$d3t>ntj z0x^P%@QAo6gcdFevISht86~{XQlKfqf!c(u6iCH2X_nkbl+J3CugL(VZ1O*en*>l= zLjq5^Nk2v4X`C3eFoeY#>>W(47Xo)lI)cLrKZvm0bK8Sf73QXHc7WnkF*Kf7vmO46 zmZAxH3b7dc0M2rulF`T6ir%!bph#E@#1WkzibRa^f5VJyS}fL>k?*i|)96DS0*LH3 z`YW<&l?draA)=`<>+nXRD!L+62#F)5t$6WBbVmXum1aRn^$mZrBI%@zQdTLUlzL;uB(Ie2$TQ_UZ_J~^17UrcU?BaLha{JhdaNd9| zGml3SQdzCaQ<}H{b=abf4&d>q$fsOdeeeo9XN{D~sYkX!w&8&!DhZH7$UsMCO3#B~ zIXM-v7%DQeNR>dcH^h#}?)0$E8=c2gWf<#7=fT2Cl5NCMn>H#`HW0da3h_#|B`a)q z%KTkhDjk6*7@8Ot=}bY7Ur2?qZPoRtR^lQ6RZEDq1wbRuLEBM4d;@e$%)4<6Tyjd% z8(K7dh`yC%1=`M6WX)k{nqzH2swgBD8Hh@ftI?;pb;u-5Vx<#irQZt(nXJ5@03Q8K z`YM1VLq#M!6(* zU%s!*&d7o?5sy$r8A)6cCJa5~)QKYz62WxnA=N^wjKAN8F@>N2up!Viq#004a|Zdr z{pJ0tS`tZ4I-$j8Oghn^m2c`Y4H@4zdP;azz6x7rU1V}$Zh%7Vue9a&OKqu#a9X-8 zT^?^s`$f7Tvq-nxEZQyWmUzp%rQR}csZ_`SIMB`n<*-xUc*LL46Du)6C!UEsh?4~w z;tD|-YFti+PB|$i+@qTWb-|E&CK@9?8CW!ChDh+s^)aAlpfplCKBCa&IZ$*7r}S^h zM#LG*E@BrM#!LZ{U|n(~T$hO`J_s2`)m0SB!L*^)61gU=AA$$N!gqW&wLersvo7;i zPzy0Zyevu>qUKxkEi;AkatWW>yE?bxA%k!nNOLmD33aEg(oLx;V0!)u+bVj{ zB?(POL8&5M>Yff;#1cH39ZGTexcmzlFeO8Op#kOqlM(U1{Du%Oi(6(09a`?<=0u^e z@ud(x2#3B5<`?h!mg(v)dNAuY>pq}hN{~7BLaFG4z>0XtAxA`z=-839u|kMLC{TDd zK8X8{E`){Dt87kcm{>^JMGOE0~<>a#E(Ga|tF9a~=KR}FW%PVp5BvD-X z2_L|WNR64s6cWh*)0jz2zT^^9sklxgM!83PlNd_{1X5y9nSUWlkTA*?Ad(Nnf}pBb+ZFiE>0a0>t8~f)a`)ADKXfPn<}QUq{JYz!@|^3^A)wBg+Xz_1bfxR5I~k z_8G3pS89xw$qcA$GGBWdjFQ$T(*aSR;hLB++BmDsSf(-vlS#AEWVW1cnVig2rmG7i zi09HaaU<@RO_4+(sB(D85sO|Pwi`>3kR+KSwdKuI*Z_T>I zTkVfP-5gVnxuL2}bh+G@#je2(k;69;8^U5hMa-Ft5Uzxf!#t_AN=hW4T5C`!;nTvY zJQb-dV=#Fzmi0_A2303_X^4Plx-;3C5J-@OI&%?%&Mau2GuN32O;Z9H=611g@@DoY zxtaUO1rSIumbrk_LTFfoObyLkrVl2sXaNX!9Wu5P42nRC6Ky;@&zN)UJl00~JY z0u;96i3~X|516G0B;c4)6S2G^TrMEgTZD>3ME(hBrE=0zwaFHmWxUwgYG>1R9RWiO z9eNN)&0-f))59_W!(1jS))H2V%`Nf?O6Tw}CgnpU$avDJ)1=oQf$NECqz zL8Z@;_&RkAiQp0|ub#+I3MFFnf=X)pZZ{qx&<(Khogr4~|45QRECY(`M%$~bNmi_U zEGtMNZ6KCo(ko>$*pzEFn#P*^m-3=1?XRg6on=&1Z5xHp3|7THbl1xqvFB2>{d7W)P4 znKFhuY6^g)h-lno6IB+n!(dKZGv6BCN9W|^Rh=Fbs|2`^V#m{~quxm;tM&}8a+Pz_ zCW=#r9`P7W#9Z{jwLQqPLX%Iys^W3dPS5LPLMj@GYmZwO!?0F0dF%Wo8u5v9Mss`< z+ct_D_e4s_^Ic8YCx=LIK!A~yM#%|NX5M{AD0Lj)aWfaZ#FymbrnM73xsSxZgX?!O z3i8h_s`I(DyGNT(j|oVbgc0nfdLXh#^KeHATT(Vbr)=9HkX+88Tq;qA5ChpkjHb^p z|84o^rf5eqB@p0wFmA4`ZEh^Wj5K&bxT{ahhk33n>n>Fv?$SD5_m>s8JQC96b`EVL zHu5ax`xVd5sXXQOm3uq~s1PIh?XDrOQPxfK`BWRC^i_@&{M;hp z`HRP4NhK(#JzA92-KJyZmtU3k^iUnV3=2UyIjM;Z@`70~5mel1e#DHmB-=5^s&NiU z$Sr_QoxQ?1roPU|Vz`Y(S3{XG7eKi-oD#&9@98!}gUuUNKVh;LwIhH_5Tu!7bDGMpa!*PX?w7d>>+y(OELywbQ%cp|;%aA&kJip@9?8fT zmm0h+sa1$a<Vus~gs2%HKG#)3n-+nZ)_M%liK}|eJO6Jrq1n!q1Hi|^Qa4Z&9F}Ul< z(9Vrf4a@R${Lv7IoAi73g~D9pfw3?C$|Ry+7-~KKj343~b81-yR)r{hvW~j1_fe8M z`$z%Gs=vxD&e9>cNu5A7vE}tU94z9inVIlz+2`_C^0Y(`P-i-Z_&8@nK~o3a3tNM` z>8}&gzgHycJ4F_!MbbsXdZQ(BzZ;W}-ZVK1De{n4QfU{&?C?nb5p)rH(NvZKgTx1c zm2Qi%%Kk) zL&gMw9Nv5d)-MA~lW1IUP+33vlO57C@U+K`D3oD6xqlcA#u@70Qg;MIz~?HC5m}Tx zC=OR8N8rZt35&r?1A-D1P>7ro2u{)oKZJ@i3sVS3n@!k7P7|AcYyg)NP^>Qwc>j`m4w2J|BwXT+EkEk&F1Yly`m0l;@zii_ty>#*~0u&J|oh^sy> zvHm9Xq&z~$p-xyFS@h!KUtL2+`D0PV!fdaowHG$zi10ep3N(_Cd3w0A7l@^y3gTHJ z^6}t^e;53tUeaP}7Whf5fazAsr^+lK*dXu&2Vyl+B!U)2i5~;_L4J$5Igm+1n&ja# z4sVL&4jR7v8bZP?vBC9Mia}Hw@J~R13a$8o!NVRB2lTNpNi^HtPlXF8WnbfCMU;7Alt^Nv+BRq# zAR$q>-P{-A3buiQ3Mp&^$zlb>!`pZ`8cgKB1 zj5J}dsW|%(d4Ogq`K)^U%~f7}1e+a{xmr}zYA~(ObYifE_V&sjtq@Rf#01EpMthhZ zV@38h_(e#{;vWByUXYL`-x;kT_(#BMWn`v?1jvcqDnMhg0cH?=M4}|a%`?@#$5r>w zQg1#=an~2E8ctS)Tp(Yv_$E4X+oLTq+|@K<7V^7eth)sr+&v8Y>MUtKaC&(@jj`IS z{5F5Z8xf?y&({2OLF1(I((o7W`4N}$K%0A*>LPqrY%A%{@D~sPN0}}AHJ3k-vsT!$ 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

    >V|x8*q|C07U5-SwRBo~`4V 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�S%#>;0Bm#ffCy$Sc=&TLrQsJ_QJox@3Kg%ZO~He z0New$pa!9b?#rF=`v^)xmD#Nd77P|#B%u6u zxNxODY@P$*fpA-I2*(JF%K3_bW|wyXFUsd~Lf|n8M{;ZxsGQ%8z7Vv;I3vagFE}TN zC#^9Sz!p=G(5D_AxBjhp+63p6&~dPQ-a$c3M zkrRj70{bvrX)u?$4G*UQ_{Z=m;TL!Vx=J7$T0*39cwt5apHc@uc#ZHL}BCRF}2Hsm-mJrXJW$1WmI7ZVT9_0iL7JN@QEvGEA2Ih!uLp`LtOALo4#0R=q`T=1tyu-C>xoG(e8taD_F^A$IbSqLE2hs)l z2omJy$%Pk@<8%U^5aDG_er^O(T#Z~e^m?fWG=^iMbVSwzDg}AL`MR`-{rd%{HLwj6 z%=uM14VKD34u1je%e^NEvMKoy-#E_G zP-kCXLMuDh80G~T;`m80fqg)jLy>GsE8O4My&)2z4%Nmkg0iK{2r5UgAb+V$nG^Iq z;W=0+CeO92Hxxd`mbVGi3-*Fj4!#G5lmS3k*)lY|%o_0YOOvaS`v%p?x#H_w<^elf z+L~k~qG>P)HQ~}YHqIWUSHgWtm7tCC6R}I-0Dy<&$q`HUVcJ&pd<&)9uoO{7sTOoh z3{`fUus{gSkroLr%`=QF1%P{;tvOoI|KJcfSTMc?7n;?;zZ6p zvEI@^4Hnm{QZjVLutWA6$Sixx=1+<(|7^M9(jgS`h~?-t&`hLz z-)BevNVWcE7{p-_5pN9x?sCBZaX1V(sQ?2a*ykKJd}kwc(EEVhLq8zX5IFE!3;~cM z9>S2olN@f~KN)VIRDlPW<>UcGZFqplFq0%+;I;uTkPhbqD&WT;C*f#7S{MTygJFOH zI2H(1faHR(cxwS*KtT{-{68W_gdm%a5b%sk7$C|E0|dATyKYgoriqc4w^=}lv2nG< z*)pKYJ9EnT&j}~MacsJb_+(BHDh0Ngkf03}XEAQ-L)2tXCttx*Dm6qJB^c#vQhOc{7DuM89@9D!y6 z^_)`(RRC$D%5IG+a1yQtP_5N~8aSR^9uK?;QD@6Z9Z(k004`c<0G1-!SsK7ygeF^p znn1-dE#Oq?o}o5?mVt0+1D0@Y;Lwp1@-NtZDq?*{UI$2k>i}W;x_~8A7syc11tM(p z09u3|TZVc7LqQ)1f#?I0S^8`oY<++laTw_LGXNCC4S~BkPBwo-^IqUAItk4tzGLh*5Dt?KZa@QzAv9GpDAA~|6D#-KFZS;mdRlqAPKd` zop!?^{Wv0d=2GCcUsC>*2P6NKN2dHMpRv1Z3b$oK0pof_S<*FkBQGdOOS9!Ws?_5o z7SfH{D*vWJQO`7nW6HftF(2(XMQ7~J@>&Q#QVVfP*Sd=|f}an%1m{&c5Y-j^5Ll>c zg$vC6?Jg?J(8S#aB|knX#L(8@|LIHVgSw5>=9! z$F0;ypsT(^7TfPD%Ah=TIwH?$;+2~cW$^8)Z&h5$FS#vwG+ZQ<&LlUYIwDOq*?%ep z?z&m=JVM1gcuOvE8{{2R^AM01ZdII4fd`$ByMf(x=WxD}t^t*VCZrZd;SX12q>>Hr zKb>5}mz}QK#n~ph?zpU?dyxJz-fCxKOQp6@1Io9w911q$yRhwUNCb?FN?ymd<{Dbpw$>+@JXB5H7M0+?IJSd#FpAMurueMvkHPk}c3o6eN`w;p#wi zbwpYUyE;I!wF2RmT7gjHLVB!Jl?E1VfgW%p!N<@m*{g6JyVksQ3vTSN5;^UnUXrGu z=il_d={HeFLQPVJz;L`<=;6>99;mmg_&%`%pH+~6jCPh_kAS)CHi5Nr3Fy9*wzIbL zO~i$QCRJaz3{ATzKZqdkTF%Aov)s`FO2(3YLEcRgKl|(K5}pY9ixs9QYPR~Dn6kZE zTmZ+UT#DqH=sfat(n%!==mpMQcLJ1yf}?P9)aAY*IT|fy&Lf2>S8zA5fx-fmoyfU3 z6h++J1AL@s2KM9|fTdmrqUIo!A_;|1@@*xsm+dp+2J&(dMN8l?k2yp zsL`|FD`9J)10Y4ngm)JG+&Vih7r7(2z(M8sm${#LBPoD#kQqqXM}<*>DM6II%q4y8 z#AwRJW3iOkV|sQWltfAdC6p3QAy6VI$&@5^$v@;tzHRp5ud^@WfcL|vp`bvcp%vfX zLnRavg-9u-fRu7d8HGY2Q!3bJ8kS0-QmXTDl+#Jkx$b(Ug>Mr$93`N#cxb>4><{<) z*mTd;glO1s;l8VxrUtZ@^20sbu__}AsgP@&^4znPjKQBEJ(B50T??~wFi<$ARhrOE ziF67Q?j=b^_wbeAoy2>{X6U`l(ZUB5;lqOzN29&WM?5X)dlb0(8mdo=A}JBrgNSsB zROS}_7%I+|UtXYlpf;Mv@xJ@0t4=|!{U6t!v>8fE+P$<{%7wH!%3Y7I6n(5#>JRrH z8P#b9(4zbnhaHD?${J;Z;+L%eMCHEqu{Sy%MMaFG1XKE)o~z!r{g!N|@`vZVe^Gpz zy*cl-gjN1ARDjSrDjpHQH|@6NH0`#4#5pZ;?|b!AE+|@McZ-Nn`<*{Vz2y5CWt7~D z*+TiIrm6mRTB68Nmz7^SrE^d6aq@qMPh>rkforRJnMPu4MGTKg-Z!07Sxdd>N>CZI zrg9V>D|Jou5FTPg@h_KO z1I!iU6jO5%-ZfrGXKSZguTIH%H%-ZU#ENPM@|}7s3g;*<{1CgtEsDR(BjM1Zcs>oE z5ya;Qxsv2W+@ORe{znZ-?4SlD1|)u=T%%TcEl{pg-SxVt7{FdQBTEV*ra)hpG9S`e&|x|T9d zousa%+~#{vwcx2r{X~6Ay@{Nmnn_&5+*P@Vp*ggm$3+<8)-Ei^Jz0$7^9PJVSM>(*%SqQpQE%wK7x3(2>e!yk+W7 zZ1oYJG3;Oos76&La+K;z&PU>+pattTdJb=>!Bp`Ii_~?SEz~$<&5nu{sFjp5O;9}&lqsMNd^d9RZcRmv&KVj78Rg>0uJk>$0X%I1kc z*>0+MJ4nR=aEzLQJV-M!?Ze7C*~khe{_s7=D;C|$r*6w%ktps#CFw>|K^%kJ@=z22Wi>V zW08L?g2gJeAcwRh^Qmk|zW_liZ=4U0z4(sw9J1KeAx&809l|j=83olCtoW^V3Hb{V zfcz76Pt%GAQ}HWmChBbLWsiK54J*y9yKGsls!qg{iM9 zuJE}h%}2ecAn+A&H#x>y1j@AWpHKEayoJaKHcaKeQ-O&_WuFN><%jtY#F z`v^^^h42k1?^OV_xik)%kI-USJ+pHqgjn1of@D-9VG!=m(qAE}Z zSB__n=cf3mE7Vz>mY0&C?izc?T|G+GIR`0A3x$-UJp`!1J5Xg>vny3{*yL{96}~`~ zDD?=w)~LVElTM{%BSZz)1mAPVji{S>uUywqX0%IuA0v%vVAQIkA)ALAirZ19*w!ef zqJXBOK)SFi%~_K!qX6h~$W~CX-n4UQUs?dohZaQhrv=meXkoNKS_mzIMxce#!f8>o zNLmano)%3@q{Y#aXuN>FSOlN1%7AhP&4HHa@Cgy;AaDP{K{q-?#?(1Y^;v}>mPnf9 zTSHCqWwUwsCv-mfCExkvt~{eKB3q{@W9y@(5V4w7v?}%W!d}F28WbUq@eml535A@Y z-HLu1IhAZX;xJQMKPkw{HJt3*?YbjR4drZ}y`iLOcHxfnb&HSNBNg{h3v9M#t3dSOm* zmRef$oRG4KqzT4}Y$EJfroIXM<_SbTv3hfhOJ1Sd$)!?N`G&`CwYqE_--# zZ33FWG?i>3LXS^U6pEzwi0S(L$PB4abb4pa4pXfD!paMw71+vc4Q)a=B29Qr=v%1& z)UI->AV<@0#w@Gfj2S`Is=7G5QC8Lpi77r}$=jP$j?(6>R8{0{Rm(+ra>3zoVGmqI zxzzpAH9q_9C{Qv+LZ;Puxtwsk#M4RnHrGjLj^m2Nh-CvDMKFCaGb7U{;hMiCCRKdH zOHpru3{$G0KXR=xWzd;kxpe2?9PSOTpKgzM#Q2qzG|?cEoc2WMgY$GU8v9ZCeuXYI z7iFRO6~%AHEz_Z;s8$?}!7uar2;482R_99h%KcL@p(83BQ=&uVPCpPe$Lxr{%T>*l zgq}{qQI-wZHXBDTfvsQ*_>k_245Io`PgQ8)p3;MpQ0gfC89jvhg#L>Dg8qg+ zMSn}5q_ffE@xHW=^!kc8>Sy}AZDHzttw3y=<}*qnl_EK&%t&-{NTHg06{I*|Ix4ON zU9FJLER?k1WASB~vBYU5865WTLc4l8gM{|+QFaS@q<0bjhLWk0S)imgfJsB0rdZ1o zR7z+$$m{5QT()Lk9v)A{_Gx9(q@Ck*vZKTuscHY&_VPItN;4j$$S@dWIYu{@9ED?~ z#&)Ji2jzH{Bkgbwv_+Ie;5^dab~DOCL(o$;=t*RuleyM*g{sV1O^o9cTrwYqv5&%G z@yb+}CUP5i5xfA}Gd#eDloy3V6gS2riaW!V;lc1`crkn#6LddDFg1YDR47^zLK&uf zrfXp5oSssbP|qn7LMPM3qgGW*BwtZjuAgm+P+z3YRL~%UWQ^x^PIdWG*z2xpY@hrO z@sPt!tQmYnFJxQ*KhR&(U($(;F*=D+&M0G0*fgk&aXOtbO)q6sFe(`g#ydL5sAZ5D zRSYKMID^Kf9>{niR6=!PJf=G^hUr)N{i$M(=NV^{S{N_s7Z{AVi;T3`Hbw}wozcm- z#JJA5%IIQTVRSQE8Mhf7j2^~iMjzup#yv)4u2OD4gBWoRPf+BtomSryuCdoBw33A} za-#=%5DY&-ZpJ>@MB}6KwvfH;3kpAjKP1s1(pfTElre29#?VPnW=Jv=7?%oV8DALk zj0s6JHc&E{G|#B3a1iE2tTGPpEsRjRW0L2Se=*eTTkX3=q61dZ7wvVUFQANQhTQQf zy_kD3zf;%!_o!(o0pTJP4&%UQgBe!kVQNvWvkO%hv+ZG2!)8VkLx`zO@h%i)dKHQ> zFXT%wC83f`38)nFYI;iHA*Kvdjw#N>F_oFpOckaqvyCFp^wuk4oCk{;O5kvL14D-? z%p`*90lI}Fu0xfml&*Ko^?-e6p0CFUc7$7uH8OQUm_cd}H8I25m<_U1i#WMC3WtpN#SrZ+J z%uQKINUgYmeUodh_}k@)Oe?tsryIb7D760%wXcallt|X0KPqc+&m`PIe9dZcQx&+H z&`HBPUQAGFr%2g%xTIx z)?865U_ttyF$}zdUlyH+u?nkK9Hwk|rJ8S;1gB;*{~3?#ROha-HN~zw(`(P4LWh%E z$&D~`j6C_Wd77B6Xf7iGm!eWZe{Dv!Ks!HV94^R8>0usbHZnbt;ml>`5>uP`m9|T< zNeqXbND-zG^juVq=E-<2!%Uf5%r((ToySfB6qJunKzwQ@Gttv3B?_CO0Bi#f!27MYUG!EkYW!bmBoPWxGbwl7Ud*A$>xC)$Zl zFm7a6G9&`;35mpKu;nJg*kpWUNIOU4gdviQS;hieN6axEkquZY3`3SN%Mq#1x?roz zdRwT)`cF`kCBzV5+(=ht_2gMHlvoO^Y}8A}P1Jp=G>bpJB+uBa9Y4(ACAN{v(?%kH z=C3jh*sc9$gH$?9T~Cc*rE^BHR#IbF39M*V5-XmS%!*^Bv8+{6Sefjr=zv8OOr46& zVI_qsC*LfXx3I>C<1djL?E47eu!KTuxCkqjd6E1@*}>5XrxJOq&@4?OY8owW@VIB->~II4Oy_!@79YH-|fat*oE<(wwL`6Rho)l9X< z>$^<{>zd+K)^*mNVj^NEgr=&4s-y0wUt{SAJd7O!jBqayOHN%#EeUh=IB^*t8^QCG z8r+k#1f&K2I(~^;+UatF3bqC%jeQeouFmWD!&d_H$#>lEqG}aOm3$n<3KnPY1)U|A zMrLqu6NFd-tOZsbn8-TH%3!6lstdleB3Ub}b=E5DCu@zh!TQbGWc^{qvVO6)*>|&9 zp?olPJ-U#&MNEz6OBrAO@2W*uisWSGwvZ;MgFdWKX7)(^gDu`J24yY!4_WP`rdvV+ zBM0b`?2();SDBvc@=rBcCrFqNd@kgu5+7T_L$oX5fzct^pQM&eu#8gf4Me@&Z9z5r z{KPMG4IvrT2qhl1NC{b`W|ho%?wD>7DMqG!V1b&wW#x0V$8IYO4ikCo3gfXJ8tYW~ zjpqPAh{7t3p?|7wGQ28drP#X*3^3{~Lyz$h@q&^WbRD58lj~LJ^zG1g#cAgh%|pqT z0-1bmxHghmOe_N*uo-@n*}=TQ{EwMYd7YV7d6jvId8|_Sa2PAUvXPNf*~KiX%&si1 zOs_1d%&aV}%wnfM%8e5^G`fge1~CF?P_>dXv){eICz=<@au349XQkLO`}OUZZwnom z?#%Maqm_-74V4nmbCnlt<5NAE3FK||JJ>*8%=Bm0R905T^RO!U<9&$@D)q7zmG&^O zl*?G&AT;|X&A+e(^_986e8KD^XcfLz6&212t_{f&@21}`K)AWPbO7&Ay?453PyrI%gK>vD(^AN(_9l*Y|c_1 zr*4q>th^u?;6|Cg-1_04WNBzZ;bLW*?Ze8h0@GNfAPZdv>5j~%i$48HxZMXP-7bJ62$r~PPS+#%ed9h%R^^qv@~-?NM3F3-Ab`4NS>=&w{1K5 z7-Kc=xYM-3C~f*srIWHzfTK>q{esub*Ols3HMu-h*XRmW0Hd7@SH4E?%cwEEqcst; zN6pVmF<+`&syt2!%QdvVRY{}+R_2(~K|c?lWX}Na5$_lb^-5+j{-6H|^fqco`WX4K z%q+P`Fi_Z0z_W^(VVT^t$NOUG^P;V_OPmes;rB6zPL1^Po|p5Wa1p1t3nx`j7Ts=GScb{^Pdww z;C7{*w5557-yb=yz$F`kvGu*%Q$IK)cT5$=_$lZXra zijGk(1V&*6fpNuyz%U0G?sN+RLDDd z8JMU7@>d5X%7B<^O!b#c(dzs3SB2u$hpGeFUj}#NdMX=|!zc%F&tq~5%F@Ov->H(L z7R5VDCe1`->8gfNiJrOvPI+>Ol6LhS*=? zD{-1Cy-Ia<>yEdTprVKBlDCZt0-`AP*kX$nMPu*1 z_h@2CqOrGFW7j0MfKp`vK|p#DRK)ahDVO`FmrL)xToNz+((AY1kKgPp%QElGFguR# z`#jG)H}GhVp-uQ!;DQkTNk;u?NayB@8HH7G{@Jy^E5kiDq>u;8QUZpSvbWH=IR~% zco-AzVAb$vGR)`J_?N~R`aZOcrDc|@qocl0WmJw2c7fjIwa$3+V1j3(N4)Qr#-^xp zqdgw+sV|HR0|wDoSNfLh9{AFiWUVMzfp75-vF0pex@A;sKou06iLk7^Mxa(U`y3sc z%QV1TqhC$0tPMsaQh!wL!tAAQ9^5>*K)+9~_jm}V&4Uv@dLEzaeq+}fZ9|@`OLl8E zc!l~>>4V8P{aTeov?guG@cg%?ZG|ij`4CRf$wP6&N!G7PuFm_NUeNqX3Ih&jEcULd z-%Ae;*ooOi-yGKHv7Ih-$jDiwR|akvyy!Md@2n*yopw~xG0rfbkCpp<-xjVUOwpM` z0=g@}rLO?CIHy>iqc5X6AuiC zlzk>;DH~Irn=^*ufWoS>l;vjSRk1)^irhaMhyc=%`;7dm6b7NdYD6%w3lRuxL`OsH z4R0YPjsMHG$a|OVWnAG&L3}}o96PGobS_!1p!iVSDPELCT7SoD!eB>#Un*TTOpH80 z3#2-h{5DT$?uvCRiKklXP10L+ztN3#@G;f45bH)%f&0e#%PDQRv`zlQ_MS#*6M0z; z|I3K6^dZB6Y@n6+oZg;%myQN&`GAfAk5A})0P3Ef$~QVY&^Itg&jQd6Ie>rFr8Lj9 zzO33*2cXd?8s~&bt!oOryk>gj!GK-no}^HC5W%OYpZ0=cL~kn2A|I#caS5@?gq|3K3`C?N@0dg(H^CeT*MR+$f2iP!xSs3$ri}W?i}ebvk7GQ zga$KYw4b&4rUTB8agmIi2KQp=mL-RkwwLS(SDnURcdt0QEfV7FfX9Y4P4iga=b$) zJlk~1nVI{+_}N~@4(wj^F2?4tJsWM(78&!s8pdr#WcDlrZX|H%@-i&gk|bkXbaNy< z2k}Ikyu%#?j7bKc@rv=1@rFUCy<}vWc{0{8Rx|o5HP~Nn>)o0O>Lhz|1>@$xKBFC} zP1fz<#TXyd&GdJO4F>hgxqd8TuHQ>~kjJBOYa^raJM~BlXUWf5S^8u>pqZwujhn!~ncp1wruXsB#+#90 zMnT?R-Ao_~{ZoKFG=kaD6guJI{0jRXc)7YHIgZJp3p$Q8J){42+s-&!CCyCm+=)r^ zj(1)lC>rH9oVL|W1g>r+qBniQs8`+=SR(3N$M~~pCw7*KqCX$E;-@ z(>H`vg|^0?0fC*=HaMda^GEbwPK+%FWAZ)jHnfHnwoKF)W8K3wr0)?&E4ab)g#FQr z{mY%JZP841`o=A!Hj9j=0SyeM|GmxEhGsv}cB&=4;ehXx`g#YG&2PPTCzVCYvD=Lb z%oYlR=zm(!8BO&wF{_Xj%LmgFyh+Sg_2gJ4y1)25@z3$Gp^UW#fo53GqRx6Hb}1?k zORul4*}*)R)6VR&-CU_8Y>r+J-ICU98wKJ4Te5`?p#aPRLNv7g50P)W0F3KbH(mBV z-5NzclWc%^1Nl86ATAKoz0Z5qO@vi$g%HOQjqU}0KsaZ;GuUqW5_P-j5@Ut)K2v$@ zGlM>i+FZd9I8->lKvb4(3Z?Z8t~%m@vwy>+v~h#KGmmDLc~%*AG7HAGMX|k8X@Tpl zn-np9-VoM#1}}IKl&ii*^9F#ZTcFPhg*i|*H9=YRh*D_NYWcYPc+-pAZs-1;d8$&4jX~zJ z4&!@G%^_9scLsDA2~Bm)Q$0n@wOA?4yp=ccpr^I-G5jBoKxjRyx9Z<~LdlxI>lHHw z+ncgsug5ZyT%3C;UFhySz~P|^+koB%p&!WU}Z>N8Qss##giQm{%{LG^)@ zxh5hp5c&~P0Qo&01ijis=HYK2Zj^fS^2>UAcX`u8Kw zdYN|h`wtm&jf3dnsXMUescVg}7-r=r>{CQkX-0C4p&$#yN7kDU?M5?7J|Jo^$FnbN zd=0MluAt(5(`il!UyrSj+eTbtCn(SGe*If|tnawK!tEl{BI9@JM>^Ue&a*tYO~=nE z$MlPSj;XEw4C*;H$}rgDxDhHlE%2actn)~3ltKQ=18w`;Zm)^4JhzRG2sOA)RoXYL z0;AoSoE{kt*ETeC)(~!&Vjeho-G~~DaSojfne4Pra|@k}HjJKh4E~L!1jkRtqrJ$9 z=x*GNq!R>NGQ1c;XW7R1eM37SawmgRAJ-O@rW);x!dZkB?RM$039%{<{N&Y>c_DY_ zxMRBhFxl31;!T^Mo$f~a@TRIv@4BXxB&fyJhP}BKMmm+d>}8}c2514bv$b%@b2l8&8>w1yUgoUHgsF2)TL6PF)tyH*&m z8fP->Z-YEZW}uH&Fwi$y@huNr4q~CHl7Xkd_OTwDs!$33PCbEY73{!z)Y5{?Gp)b~ z4fVYLqvN1eWOUC!y;~m#I9yCUwju;;^=`+93>ys|D^h{qg4r41#`UwZ!H#wksF=NMU zFF0kg&F!+;+Z%J(ZfU{ptJrJU@}YcoF}skR$1Y-POEt(+wvOkRf1RJVb0ymvSR8GVQ(^IEH-E=)wZQT4-b~$c48i5PC2}TZ%$c(fey9cUKk&! znyoAa|2v7sH5)`5&D8%3KT&@cp6PFzv=6bP{!#2E<`Ji)hW^aL7(3#pX!}&t=qu3y zEhi#JOg|wO>pM+fco2}Q9epr?wb$u5=2GR`!UB^Om>ukQhR6FOYe7W3?>svNwld)v z^%dKkvJb&esRL*eq4Y~xAK9_qhkS{$T^gAh793^4Crv+1YJ&#ja|GI zlxn$=QNpv3eRSo>*91daO^pboRtIZ z?Jk_x)^8bZoOg^&m>q}1s6&wnL=agKQ~%rCpQEf;S@?qyz!^&q<^*xJV@gftjT*9x zkPX@Y!t4B=+s1KXIjshXoG;6|aIFT>oOYrdobz0CBRC-(e&b3`9w(HuiWA6L&FLU~ zOq#=V6MobzDmW#a@A%z?`X#As>sVWeE1Q!O zUW;QdXTR3FfVX4Ivxd>1nnHY=;@UZ1>i(_i0H;~%DXR}YNeqwVMXm9upn+VT*mbYqN( zyx=J3g3QesYNY-%>Z+mv_E9b55N6vN3*p|JVS^F{6YmTAiT%DW6=#xn1N};cpjQ< zf-J-2wSLl{f&9%m#j&1>fS%^qPA!|FLoaYh9J?u-Df=mDv&)nyAOfKuLEZE)o1mXS zj;WmqxQvdeJ)C+Jo#a)O{bzQ-)N2C)C)GO5O~i3p|Nl}bch_AtRB)C`LN=;6ClPi9 z3+;E;0c&FsZaQuO$y3`ob#0f8_8^8JClMcfuV8+dvP|{;aL|vO2E?A=kDP1B1;`c5 zM^2x2rI$8BHC~E2#;Kl?2PZ~Iv;O4#TlgnuClUqwi(}VyjdPCUH03b0V(JoyJg|P! z5!ht&jP}y{7-gINQOX9a(`4LolM=1rOzqCbv2hdZ3)ESZ6BzkT!%?Tk9VVtKQNYxP ziSNuvXbtWwx(2r;lRK45scSwQbZ3ATwHn8sxaIXI~wB;bzEsl;vcsoxjC?4}O4-UGLf<^#7&;*ZUG))$2eG zPaT?4GrvzAowD!?Fg!k`WA}&tsi~h+aHmh%eF(s_)g&C=>fVnvkJ1>djCpV38zVz{ z#)wNe2!mBhqz*(s%G(+f+2S^+=fEA*yN{hjT60ya{7`OOKh%DUc=R9o|4r@l_&60} zbU$B@`+aPw7Ft)Mb9m}4Z7F1`hfc_aU7}p?xkzj5p^#SgZ=EvAAi0sozKnZM_)RQX zFB!hZyvsg;+ET?P#o;Z7I&H*ko>$zoIAKV6Rg6DVOHM@*D zVn`*^$#q;dnMJPWa>$cpfV`30$ekj$ayM}sxEnA&dQD9r{@NTBi?f{I;w%B~6TQ=>CpTjZR&E{% zp5l%+_-7t6C}>P^Cma0Qe6Dg?O-9oG(nls+5|eW>-BvnW=`1hl^D=?>LWJ}kTz6oa z?gs4Px&VQduAHMe9sRadk(8(jbCyYEJSCoTbLI8=bOyhXPZQCGX)218c9P4Z*;g4_ zqgt9;&(fY^BDASZ0?hn9%f~P&?p62$@o^Zdj6(sxCdt1Ya&$wyf zIvGpcrL^bVSKPTxG$>Wm4B z?16cQnD8M|E@n;UUN>YJ|7Wm`=!x>BLL#imtJx#IYI7M7Yut;=rd4ERu%e7NdWTbw zV&Z6;24hT?hcV{1k%%-H;MeBJdw^6J_@_nDh@ihf>#gS=3M|!(6BBi=HmxsO28H${}OYmS>w5MvbFI zQU4*g@mhJCc%AlLz4Jfb~~#{%A9*gP(e$>Z=CJUUOvo8<9%Jf4U*#gp(9 zJQ+{G6NASd2FLcL18hql?n!30?ag#>%@F({KOSq;9MJ#vau0*3*@idIyW)rTG@+ zC1PZ&{pn&h_i_K~4E(KZM%H+rvBQw1a2sx1IN<|Eo8) z=!Wy(iM^c%Xdis7CnkwMd)(;vErE%rzya>RA?JZ}z)N1pz$@PKpgsM5&CgmCecYZu zf!>bKJU18L&~Lo2ydS&`%wN1;jAG_x@3%Y{2g<1=gbYvzevfVMH-wyKvIqydcZs^d*}!wXMU7rFFiUXDn;EZ z_dApw=O6A7i`+)PWco1iy!ZFbF!T$XwUoyp@54q6U)UI@`2nFAyzv{l-c%591uyq| zPmTn~Rx&>e=%S|q8AHp>EK(AHbRY#t0xVO?Qa~^Ukjz&A?euWOoHcs@n_Sm`RBIg||kQrsrUb0U3G;Q|#yAKI*foND_$i zBqINHV*34)x1-{BWxAHzb+A*e~bzYFxI?@h#L z4##*2b2%1+rJ_d+uOdSE#{;2?mYvnnY%VVjz@p zMzw=2iNi}n_A%m(2N=qx$Mo0yEexppFr(gMlmX&17|-|tRV&F5%47cXSV;Ru+;vPs zz(c;bb5;o#;gm9l@}^$z@F55CJT33gQ~A+ABKXSVn@s2OJuOp#e10r)H9v))4H!=6 zkrMc8`D=h$L@9s7U@h=2JIbh%Ur=4mzvd-!lv3MtoI!8-Txs**#847br+`DZANKBv zoj5@I1)S%~`r>G5Zc)=QMs7S$-hPjmX(zs;mk%#_I@R*J(F*3(bU*69#u*%Cq&Iam z8pVv@|6zL(g)TAayi8ZHn^?_tnGrCbfTG31knCO^mCG-eNmoNhnx#L)iT!WYqG2Wp zXtu$-kXoioR^HCOkC1yy5tI0-Dt~rb`ya+{n8$M-HT`Y;p1hnt8o0K0v%&4MHXXFh zE|8g$pc4VpgYN=aChlFEbnnDJ2R+*REVDrwO?Mi-`cPj9rD8Nu27 zikpW!jQppot261!4}Y=AZ*(AGk7`1IRNrlU(Bd+MC-AjpO4(VZVXF@16R()8u& zE7Mn}BW->Tp8+?Pot<8S-kcVV4(IDY?m{%W0ahJwT}ZZ-SNTh{E<_Ki3o)|Q1-TKr zAU8x8a#24Ht_LB(`T3JU9YGn;z1!}rIW+os6IB1>^s$)V;HPj%K-jhEn4nk~GO;jX zPdz?f4eSSzRylnXWp)(P4L zt%6O0HbIA=SI{Hq7mRzEgJ|4-lVcu(f^rKyW(2%*Sa2z8NH8iG6KoUI))NHZspA5? zfGD5|WD{}BdI5&sDBuX11Z;tiJ0N(GI3b`2rUg%$g#xL7ERYFE0;PZ%;D4unC2s5p3J`g1HyL$L*J*oL2Sm~L~O-(5!JmR#OBg%_=!~qw+vrM|7rrry)#rw9_x zR&}Oi3y(DA2s={pgayJ};TmDSuu!;4SR!04EE294t`!yw*9kjQTtjd8=KC53J^~uD zyKx`L<3u0w*UCssK~{^9$6Cp57v4rT3Eh~H9D`~%lw>YGMe*ew>C$qn2j(fEr zlT(VR<)rlkqF%X8xy84l)y$DqA1DB6V`p7+*>uqQrkEag4&N9(#o7w8#KWc^)xFM% zK|O2VCoC517iweZ&_TX}P>XNJn?THMS1|5#OQ~A&4)ST?Zt_0zIpH7VQ^K>tzlA%= z`^ksMmxbqrLfQtidqCq*wb?DRKa-`@IO(k6t+&swy^39w!;Xz~lNX8C=_ z`kSkeJ1_$<`Cu)=Hff3Wp=EdFXCWEtXnBD3pU_|ACkhaqhX#s#LWr)xqRdu1XqYHM zWYYafxZR`AV6Wk|wGXV~{jH5m-SIglOu*rbNhUGYSn2k3)va|_qLIu~880|@*4bOX z;?xIhu=lY(?u{0eh(gRUqSP&jU~|zo@Olr%-g-QFnaI=H3aqbJmfqAp^UxKZ)^n{D zc3QN(HFD~p=Ku_A9g0=5t3`=p{g`5rgy1x7#T|3|EVP)a(ZPv=La{_I7o54RkeiZSCsmYVYEUwscL4q#}t(E^6qK ziIgIRNGR&>;)&)(DP1$7S&={_7O6x#MT;V>XoqOGNG;kcIv~=B^1Akkc8UHFEr|Au z4vNaU4vUV9{uCV&ofI7toffrr{ZDjGbX0UibY9fabyjp)bV=0JbwPAObWOw+-4I<7 zT^F4a-4cmJCL?*FF#U9>rn@qc&=r$-PxlBo>)(dJ1g}N=;`6LjggT%W@TD{WFY+(* zA8e}?FjGB;e*y`}O@KP716WGz19}0d*bT(+(P_mEO+ax&3$VW7r^r?3x2TKP#nTh( zilJiP=KnwhxD#*{yNOqbU+~>m(fKEYp_Ho7DCTco>_D3M zY!!#@1dQ-vgbu?ahC8|Yx$%zf;M)BK{S*JsrZh&0I91#@aHJ^&oI6^_0;aQ*lbIrV z3iE7L8k1$4!5j$BVr~x0VLsm!-8S1e+L>Obs%sTr$J~qqKnC;u&~EX)(mrvc%Sl)o zykG1GGCUJOPV11^CV{Vm7jG4t+VDrOIDgXb(M!^`=J>lB{-S59~K6i5DQ$>Kz8>vy-{&#=#=P=Nz#f1@m)*W zsBip3%QX0IaZmz!Lw(>; zQ!zaXWPwk=vUw>kwRtUmF2+-rz;-<=yMx#_y3A=ZKE-m^$Pe*jv8z)l$ovz9a_7=L_J)B+qJ1a^C-or`ti%lVOH3+zGO};OJImNnABkP!Lbont z8|1bj6e4&3843frqxulorr8y6$VSL890Bqrk&qB8Bm@)oXpI46FXXWe3i53o3c`d( zZw(AHgz&c6Nj#xTrEuG4-5cSpAiK3R2t;NS=IESmOb#=Hq{7TV?yET@E$(Ni1?1cG ziD?YX4`Bt-H?sm)M%IvmHS`v1$e)p3iJpnCA^TQ*PKbrhz-=Kq6+c7mAfLL+^hcqc zdVdz%>l_(=w8kECt9n_XJtS-FB-I6^8yEp(bBZTbGvo%u9I_I!6jD=95)JXo1eYmSY5h!Rd?eGElf=CcL1>}t13h~rI?KKw>d<3e zDbOWDP(#DySeB0ohE{^$l1jN|+tyxzvoXRFEFR z-}z^l`MCzAM!TJ&FiFu9-V+Sc8QNW%o6CNQCFd4x4=HlOj8(AAyC&mYk|Y-Q(rXQO9rv8$8A@p1@Jx$qWdj#3P6y>y~dHi0y_ z&Z_U+g?nC?2;~*&Prn~6;gA41?rweA?=VJl)6=SOWh*Y@~8t>5Ta6V zqmO+l@E4ND63^-Y=|0kH38yha`c6WWio9c_=b>@ZFOo6Q3n3s)mgd4zrHwstCg!bZ zDM~1WJ(lj0z@>!x_IhcA+r-%|hSEzCxpWx0PRb)8H}OcMdI#wtijdT0ziQ=*W+t6U zNF}`FTBh?zy~dX$VRn}!9pK%MjlOx^OG3#~QrqjNz0jOzlD{UN)BL69rGrwPW!t3x zSreq?tdG{0q}Qa*;j=KR)E+t^1%!9O`uvnUkWNaqk|)xC1pi2PO7x|9;5)VOiR7W= zS<578=W3<2wE4Dh2jU+zslLuTgY^*p!}xeME$JHc!Nv%SF8g`Y6qy_ECp-}GW8*uM zrL;I%r^z|T7}-6^R{L3!gqjJ~PZq3CpfmoK0#OXYbBVd^oOEoNCFiI`%`#h=6m}l! zAp0tbmD<{$r(Of`m2a%wB2{=g$#-CZ@Sm+};)&yp5P#e(bb${s*VExPBilI5ApX@;W1F)i8lwFWrmR$h; z0Iq_+oRWN%v`X(PNmu78X&dw^>2m)Cl6=z;`4nj#dA#~D@)YURJ;g^(JNUK zcJ*RDd)MBLB z8OJBGGwuN9_D14()FYf3DLX^zm7VcQ?-5QTPlc)F*rNW9Pb>Z>KO{dO|C#>~zF+QZ zyjPx`@do_}w@ZHCkuH3@?L3G_{mMCNKr2cF#tI#UiNZ`_4k@Rg6jlm^!dme^`7(u_ zB9i$OU`+g`{59-AIGwj9Y`@EU_x~t9p(t`;&pU%~-@_*TDSOaHjQ5Q>X&upL6FZ_) zJ;7OUjSS0R3^CGOsg;(fz!gvReE-@_Oh!GE6_7Y74a|XLDpp>*bR`>cB7NK17AQ8s#Q`i*W_>Rbbv) zy#r&buT08;j%Hq>X5fqKKhhR4n85f%o7s1p86Y+bYgS&#vsa?WpBlLPCE402y(^bPTfj20R8!@FTocA2 z#aqQ`ulEWB`GaC7p+;cMxlcn)%qZ3>ekeXeexo=rNO||t+0poD(s+!{H4Ty+U0$>6~mQFgmcRE z?!|(=!gZZw#V7m{z@>q1*|wqj9Uu+_IRkE8D#J1yZ3oi>E48#5f%8NUDb?x(1oWtLVbUOV9y5rUGJ%Y>V&=Falyj0x1#RX)m(NW0j43op zwqWk8oGZ4PIo_-zwhA60C787J{mnI=IUKY(vP^K08$$LC9pul^Lh8NSu#D)L&!P^Q z5oDOFA#s)uYzo9hty`_9kD44k{AE8YMw}5`9f|>u#oS1n4UQMPvQf|dI3_JntJyA+$ zYQfS5W^{SFGwPY{nYo!c0x!62Mn!0#tW%`=8S~Q`F#H+^GyY}7T@OosVSqJX&pQJE zW!4?+_z8%CW?^<8-FV!QzlFYnzZ%5G)BS$VIA+-wJPF%89q#cZx6uD(N;ciJJ z7^S~;B@c$w-OK!j{=S(=FDh0QSf?6h;G8FeeFydps3t~8kGQ)iV>-`gj&RHMB`BI( z4eFa0R#maQmcATOPycUbBRv%Lc}8XOo@_aEK`9A*>)J`zH*n^AM(tTw8y2Jb+dyGi zgUhbfR~f3Zi9_^%Ykc@cq~WRq+2$&|;cA01dX8Tef=EB@cQV8|&`wphyr~~G?4;T` z;rNsF!RXwRXz*naj%z1`}U zr!uJ?qu*%K8u&r|o9a;gt7R7b`o z8&|5LIDsl#ej)MS@h#H^h(h@U=!BL8*5Eqn?^Ku4{!qtMEr1HC)D1V@Ai2TL0HxEFx`-K2XPA;4)=0OvOiWiF7rWAwpfn2wuGX- zz$uf)j@KA!%!-0ZS*toW_O#Wstkb?zorV<3=6WTvT^N~cKz#uZvq)MVYkU?FirR&k zS|&qlvbxgj4J*=#>OH+Ll~KHH#BA>2rmMLrFi+rr3>_u0C3vP%agdRjd6fQ#t@E^l z*BU@JPN|*7(RG0CW+!P>Q6_?_T ziUT5|{x*&TgwSQvzp;K*o%V+Od>}q`HSkgan~wF}z<-k%7mhKiD)g96cBtVW4~8)a zmEXorFy@rwEk#OSP}lrLlnQ$hB~&+gi`92Qh6LbX$XBUh7Rmer5?->Lpom@%|N4PwNQi6E!KJ#fEjR=vr`uc|CN!gAE`xcVsiw@|EZOM0j- z0S-B>m_E>ZLH#cKl6v!4CBUYc=v-G%s&A^F&fM^!G5(?-%6WuY3AR81GBcc@Qng32 zN8~7ysx+Lg8jDGB9ghaSsu$Tm)Plf_A#GMV@Bn0Zgr;N+1<#&utpX#uW5{1>FP{x5 z$^0su2guCK1GWl70FPv(!8-mGqtj|9sNw7v$jTn{>^8K?Y>j87$8U4&nxe!?Pqm?G+QtRiHA>jg8C7@RmN($Ulb@*e8gilzj+or`-b^R9Rqw)SxhGw zm!+Jt=$VaT@1&;#y|d3dJ1ZlB*4d%i59Gwzq2^I!!)*O*C@~Ni!Jk%(s?Ms*`Hq>D z{0gJhvzOJi{Cvu549Mbj2A~}Mu-y9GV}Q}t%wUppjoDlIBVeuBW&_3S?W7yng-u~D zQ?uS{P6e$u+Y|ghRD1L)v?NtNi&oQ}iOyVF(MX`nG3WnJwl-;Ijdf^!&%A9T zo)L82!>1EHx%6&7AMyq>ovo_Mv$L_t4Q6;GbLenTBgKs%CbW+4VI2;l^$mkO%yyfw z>4&rb(mv9j%%(yg0JnsC{1>xC=cUCC+`EWjKIn-v!7?z zn;i?&&Q^O7EKTYz6cjdFr+v+On)pYBc)%(+#QJSVuG!Zt*~*i)7Ybf&HD?*mdDQeN zUGQJCyh>v{FB)txbGFYzTA9bmm-((zBl*^r??v-O%Bm;Q8$QSBcC$bEPt$WeI~cKy zM)c<<`0Qu!FV0^28oOPX@~Qy0OWwmiTL!a`PfsE+qN zqFyJA_q|2;ojVv6%WG%s_jU93oI6f`0{Rp}3i~Tv=9)YU=Qz?=(qHt5{<-v9tON>) zvXv4>B>L5f6OjhMbNVZFuGvAgWtMaH9=(0)^?Gr0d-Q;*OS4??X`G`Io9aD0`IGA| zY)wPz&B83eEe_@??Em45?S1BI6*-^aBaNt*1?Nb zRv_(tZZ4a+mwu_jMd>=wwPhJI1XbuQn0w9~G02`hjLDrXpC!!|%xOt$<}T5a9g64v z8oo5pZxNCYb1;(o{P$|+!h zen#os>{Hq5XPMQnl$xIJml(g9ds>OI_+##G<3#uBxh`V}B`_#~0@EkX<06%K^dzPkgc;@6&}sz^JpMhg_&t}HLk0+KC+51zI`fE$Gjki% z7QPYnG0b1et-Zh6#-l>vt(N&-$Z8{ObC0U&E&mNa$>EEeqA3bf;#R~upSIHBeYGq( zXN=WB?(q#h9OOV79`hJR5lZG)64uTa&##+r(+QcsZyh#Ir$)?AsiNjjM1~J5SnsUM zRoyfpREs?%Xqk&M9vEsH*gXBhiyXXV?jLn$W_#1YlpEeXnK^#?N&m&dZHMNg=S@=T z=kfE~<}G}~D0$2_a`=4hK;(SnJWo{-UB-GB_G0K1;RvAwn>H^Q$XK`9g4)EJw`o3( z>m7JrlW1NXX%|w0z3y=#?KtLkMN$(2SD76Ib%G*r^!d^G?elf>o8Kkp%{KY^z%Gre#(C)3M7$>DXP8S9&^X ztTZ~NyY1Hy8B<2XUD=UPa?UKlN5cxPFxrJKsD5U!rRq5nYwBejN$zxu@C?&5Hic^3 z3?nr{OrepRVc$wujk(5JW1&gWBx|1Pctezl=60EyRLh?YDw93Nxf-R~8KEgXh)p%p z>x{8GVp6P;;S?*EFr^y#%5ry!xoL8x=JvSM{HgD3u6ugD=1XoP{r2vU{%HKE7NvFJ1~d?(eD61=-wYDGG>IdcVa*>U#GLC!W13R}yup?s zZ5t@ukwVba8jNcI4M{Vq8Pebk*_!3-EgGI?P}8dsXqGWMH08uj%|NrUrb%Nk-lBOp zu~E~$rBQQXyjJrKs?k(y$~5Kfu1PyI8#HS*GbZaaYcvI#Ld|N8k6FIvuqI3MC)iFC z2yHZU-JSW%S&uqT%qxeAC%0moVt!@aO~2a*BH;dD2Y%328Xr#2Zt)#>A6qlOJtu$gD#p>)5AYx6JMS*7nQx7`$k^PAW&EK1pcPE- z9>|*`Fs}_;JKxZRkS{W>XfA0484)FMtV z^@|NHd5UlBiFf`yxxJqPy$<08Pa;0J`m8yVIEsPQ^`s4?ELY$1sYSh;?M!>;b+)4_ zdp>Eg(aC-L7&i~%w?+_y>JMx8Zt^@e6gS@46p#GETrfG%N9xOO&WMaz2q=zoctzuq z100eTPR+N|IE|0yMklywhsm#Kca&eLxeKcXq{d&E>%9LN3STJp=JfT46?&JF5=x#tucBx zKF|CaYCL>CDFm7%v=blNr0Z+jrv+xlJdvg;3$(Fo$kN zcLCL-7Z;|79f!ljxx<=;+Ps;CqJ}*SSE*|omJP=_%NOR>ztRXhgbRVgOPWkrPfIXZ z(ltUToVifK`!;)k5;Pq-|Gf}IpUm83xzFW`4^XC5Dq&+!e=$a9%Yr>L*XH{?cI3#& z_xV*YpONIC6FN7DSupLwj)hkXFBje{q%CADyj!>;f4}f?;lsk`g%7k(3ttz$EI_c| z7Je@LSYSH*TF}u#w7Dj_T9_89)t`fFzb~M)zZVR(dRnyBKx?Em)f#Kfv>2_q)=F!s zU8Y59ZMD9oCR#h~{SIsGa_xT$4qAJyh1Oa7?*d!!b^(NZYBOP%^p+M>3kmdH3l?-g zZJ>6gHjSQ4XA4s3;o2~5q}E>>pbgf}Ere)WflzIM7$AbpEz6*BR2kB7SD$19e()Wy5a>T?>IYt>}zfT)#>86%+y)(wgW1 zdI_My^+}jA?)P%Qg{qy_p0Vr$(!rSa6TJso4YXgU!n_vly{6OUl>Sp~0Ss$( zOz(%jXw;jofHJHeL2JCIr*mFM4JV7?5#IyVa9j9q z?fp!2zt|F6W!R&O)q9~G z(|!+ZS;Q{xwZ-Z=E>5TP=w43P?J9~trQf<(2YqJKqq`$vQG8pca8XbHj!6R8x`~ki z*aw@VFpA#IxH~4DF4VKWm&98vJ!6ZU2Y!{RdzgYGg)JQIX{%8Jn{{CWk zsM+Fgh^?-<&IN6BS(=^^*o#x51W>U%clpvHBIpQcrwFobG$j9njS+l3*iR&|AC%f2 z@W`KD8o3+~(=UJ`?!}Y=mJ_d*D=_RvpKYA6i?Ph>R*nloc`P9_o8Gm0OLB6 z)IABc1y$6qCQOMUp+VarkdWK48Fz4MxaF0hJgdRgjPn=@dal1(gO#6$OS;N(?r-Qy3vNkQIyD z#)5Dg<w;r<_uSocPkf*6_x&l_(XzR{FBtq@eYWW2-8uPO>zJml z%=L>)imxu3pFX5@;V4SaVw#_k4C<ya z^vLC7dYtxc`_yC*GRc?!(>r_Y$5gB=>dfPl)ze%k>*8yWdHzXnlPq4&auW&6XMg1F zE;q_&Ohfujwp^b6$9vuT=EZv+=g!MOnCDU0Nm(h;P41K;6y!xKK*FF35P~=Af+9$e z&W!ey&)5xv*gL}@vDz?5CuFl+k(M&#wVX2K#O@HNr}Ke+M_Hja0+JwiRKX@r9r8c{ z33;XPz`InQpr`@*Y-&P0K`(~eAeZ-HcO#T4hk;5j>q55gJ_Y(H9CtQ=q#ZMayp%Np znbyXTQZVLr)WihRzSk5|q_qj6zhyJTVD}ct2R$?JHx`f`n=B!W&1jIcZ3O`oFpvv! z){x{2g-||12~5Qfkk;)Cad&os ze1N(@61TX5OkOw0@!dN?YB)0Xw@lp@caY8P0dm7VAPAHvWL?1v^yb(FJ_T=xwft^~ zvI01R%=}<)9|-D#FXZicKah3p59!?!0D5TzLP})ciPfY%HK zY35;&V9*;R9J1a{SKI?qxc5M=?*rHS#$0u~pm)!EK2IkBWj6%SS=} zn(u=Qc<%#Su=~OD?g#nl2f&mcfC#;#A-j$pf|w{ChOBNmrU!wTj+}M;5$hK)oGI;uRw9wWXLx?Mg0`W z>%I`@G|0|PX&@Cm4Z;n(20IRVsiZ^BozDPMss+(eaEiCDifWQet<5q$@lp5kjBV8< z$q7cC*>s{gYg}o4pE`~)6HV}xzbZEdxnl+d^Ji|G31;ME=4KkZ7H32=;u%5q{0s!L zIHLs-z#|U(LytAPS4ASP&%9Ooq5x>T_v!T9?pwc4+n$=hz%az z2>G;Y5IN=)K0eDffLw|UJmd*)NZmqMs!gn&2=wTYBvu#&x<0fR>#rQR*na!$i_{jV z-w3nWv#zWXw!MUGIr262B{+t%(0GFUD7u80Y?Rw%X3J^Zc|0&y+7weK2!Y_~HrtY| zYk|xcjk_%q{cG|E$(P3Eo1$&dcGzH9=ebOUsJG4i2W12*)iIxWf|_Az=RU2*bF?2GzO8 zz70I+F%1&TSeCW67##Cply(k|gn(!k>$w{o0vYw4VY}T}mTI`wJt1&7YMxM^HyeHWi(cNd?hb{Fr3V}!qQiD|ZSttrog=A1IEFKY1i zR)O3ML?(W_@KVuCW<=REga*^_Y1)Ya;Y*cnTnGv>0DaIOO%P>nN!1`+$eL+z83C}9 zBysDjM%m6vG$?5_c7|+H9ym~*rPPa>J~Y1QT$Gx4>1<_efL!l6MCE{jnG`yq@x0T0 z5-nc{+0sf;{tWt#g;Me;8;Jr(yFRFz6dDefLfc`bUAJIU{cjV-h78r;qXrREb&Jj! zAb|i=Pq3~f1p0jR3-|3J%{CpPU{5WF^qx`}QLej5N}34UR!5MKoAkXC9WWN~!~qzj z5}CWTOsOu@2zfwxUE4c!C3lZwli!ER$8fLXF!Do1GTcADPtDEuFT^MGTR7E(9p@oG zO7WDx(!bT<6-=TqS5r&gTz`eKM3GQ_4M-{U-c`zvmJE+I%2mobrSR+x%6ak%#TGA# z`rbF&cAs*O@{n?u@|g0bq9ywu%1w%xvP}7p@{Dqe@{)3$@|yCB@`Cc7a+_j@^q`oh zoX@o7Uy0BBhl_)*(L1X?>uW*&m{u6sAFQT^AB-yWC^R3bqt;RzsLCTPwQfz! zX7mWTDyK;+zn#+7gPyXUvYhIpVy3!EAHz4~eMVId5b)W$QUbH7&o3c~o#tZDWZ;mW zgP{3;LiqaUSZ>-Hq4WX4I<#Q2q)J2TD4B-L9@q9QwofLP5LfnuBzV>AReCctY&&EY zRCm{ct-Voo7b>W38WV?nn=>Ar&=Lci)p#HNw@SxX7I&NatLk0g9cqfhEvjtLI`tfq zRrT0mOK@pjqvZ?ge(lE&MSaQSH>oewL?#dtS~JpoJy2I^ALc{Vhd|-Bo)(O$n=2Ia zhpJj_?9$UKcK+=8)%~hdWaJlE3+QK&?(InRfjbzrRTTR9Tb`_&ck_w8imTsg0`uBx zQy-zEW7=nS#Wjq&cmKsqV_0r(rt-yhS2(+4xoNKLRn<{>x#$GqRUh+j{q}(?+)8nktSj&YNlI{J}?C z_Uex%PgF#BFGXj@Q4nQBkT^p-E`M(D>Dt~T!iGD<28 z6O&cUBgrnYZ0*EkFQuO~doVX>+CkyjDANOPTJYIF=dHnjZE`5My}I>D$KemyNzJ~S^Tg~9OoBScl9Pe zC=9oXXey0=G?`xReKyaqb>KwqcyGSKv#fL))W?Q+aJa5ofIl`g9#h`*Ac|DkM7mr- zYlzWoNbUChp&NtjR&`ZYQhuRwHFlFqoKG%7cxv;8i{z75%e40}d-`(9b=4r+RhlCm zlQZ50Gm_Q#m*!vVO2^~0hHG#z`Y!s{hMn{nYI^xZh+?!THHCbT>fmD@a3R%^PPc)! zL{T9DwzbAcWnW*j!oZV_)3Gv%)Pzare?4!&(Kb^QW}9gud3UdgSzOF-L`Lc>G}`EIt)1gu!;}Ml@%sWiai_tv?to5{FII6o z9uLA`C+V%Zd+`vsM%&*wercG&S7;ZGCT|hsa6m|Y+wV=jSa*Me3AK1+0Q5N^_hKB= zX`4rqC{;#;5!8;W4R3R({-5F`dk$>l*S9+61b(oh=oV(YQrrnrvh?tUv8l(*x@#)Su|TRjCfd(0{=vITRm`^Q6-)UeHNeHn#uK zKck<~pU?y7+i?%+FDx88-|Y{h`=XYcNLoGQn{?bL|T(`gK zTD@HOf zaN~XIpl3m-tg?R#-s~xz>-&)&Z5c3o!uc?qX;*^_oeh~ik9q76ILkrCXKhyzTlp$I zBWGCrq(^53(;yn5G>vF0!rz($X0KILEMT)w0?lCuHaxF8O7}uWR`GPP)Yk=-Xn-_0 zVmor0c$M^S^6;o^@8f>E12$>J_Bu+QsG`{|5$9$r0!@%*v*okJv*%|^W&_}5vtu)! z6o?C9HX`6VxZX`UYq)uXFSs=tB4^}l+B{3ALR`#@wjeuZX~z#aug{F*8pj*QOR_%W zGxZz&7=faYf~IOS>G(IZn6V34M~Ci1)*K#Y+}}W(J*oFF=Ap%Nn-nN}wgho6bvXK# zb&{PiX}BGsA$G0Db1YrVY}K#KV%uM+l@OI{cW>Mdrf8+2EI%UPfx{NlEwh>AmrdQ6 z{tAEiz1icZu=e+718x6pIzhTocL!8hzH1Q`I)QLKXo6g+Sf72j|BvnRY!(UIzOu)~ ztjXSDw=b+v{>SW*W$&0?lZ~3<0t~eF<&En4B?1s=K$&CdfxIGUY$`qA?K(SJ8(UH2FEjB!?r6 z5dE)^$}9)$lYx8q@55zTt)mO|JL|ThO0#Y^fg&!IpS(|HjP}(t7(F!DNlz4k5o|?Z?A}OV zkcqI9)A>^~^KNQkUn`Y^)>Y6LH`;ssa)vp`kk-nWCtPzVA{VKgtt>&GZ9haH4{@;B zxkrf)2X1;=)(0#2j6fT9vjuk2F7@+I%=yJn;o!TUox|9)>3bd=JIq;B? z>UD+YP2UPm*fVSrEc-nD1FAi-exB*)vlfl~J1!u9;8XSeToUsh)IA*FwsN-1;$14F zU97q%f#3W_F*^;;F-R>mgBQvxG)T9vja%1F`?nAcKg;l@mMgBYXF%xE!Vx*jxS{!O-Ga@5~6 zZDOkV;c!a`FLG(TF|&>KC4OGjgis7Qzo9HF(!~1U(UiB7&wJW(N+%!q|2NszYEgPW zPL4TOnX+vq;(pve@Y7b0C#02z-T|5BxuA4fb!Ow98>n?t-d_PBp%k}KAUbeJepm_PFGSOHek;xhKeIJu;} z%LnC9a|!cUX(#|jPu%$`u*?u%>Oq%vp@Y1AI-+6gsV=SI&ho}04s%C@3sc*M%GCC7 zo{Y56D5fwAcf%^kJ(ubNOeYw;4rcYE+J8=j3}^2`)g2~QgRNId-s67aP@nrJlrHE4 zzcw&TO(RO7TUx*OugzSd4bwg`KQg~CE!#dbzcIfu-!_Ke?om(pJ)&CqL0Bho#x8O! zE2OabH&d3S$ok9tN>^sduvA%pm1!u{#U@SG35=)(>#ZqBuuuv>bmLY4`Y?%E< z);s;j^h1#k>3;EBSbdcnF=&(Gx_uzs=w>VEkwgJoyuQNteYBhCjgS?3a>y&i^k%!N zH&xK#se>V%pQ_s!9P(C+fb^iW_ipczy3MuYh_FR+#ne=P(SXq8A(J@t)^ol#IQV^4 zOk5H58CaGhyiB+C`5g|tYVCqahs)Me=-;y!Y!6Rv!E7Fi(kLR&w%)tcRFSJ8-#DUN zN`oVgf|RuzN<+=-8uNu?%B6+#s`;#k14FR&TDsCX);Xnp6D6#ys$$j!Rw;|v?8kh$ zyMSf3shWjj<+4(?S&WpCE5P&M7`ySFbx$Lp1d7sMtw?nzsyn>AvH`6?C`Nc>$fOsx zM^qh7yM;}yLchhiUt>#<8JPWo+N8?m+7hHQPdE_*Y3Biod1 z#@@s>VQ*m@vklmmY#TP3ZOb-iTeI!iPHYRdGux5v!nR|(vA2URAFgaKwkO-0?Ey{_ zmPKAdUe&;telAOc-P)tcMzC2k>g+x25Ox>l9-3LdnH|MWDc{GAZqi{#vt!u@*hj(h z9%09^kAc^UXD6`}*)i-?_I`E(JA<9V&Sa;tv)SqFEcPjO4m+29l6{(;n_s|o8wg|* zpzg;4DtyW5)JL`KEq}1Hh3~5b^{PSlMtG!iRFxeIZog)(I^BWYO@0h&ee46v1!Guw zB?IO}Ek?LhZB6d0+pF}fHVL*^Kcaj+FNf8oUq(K~3fnfq{*KKmKh3IP-R{A&`Y`3J z^I*=p%yx+_V*O^G)>dG>K-l48Z1Aj38o;)9tq9?sa&bPZ<%hpU`$V z8mtrX1=iS7jiV@~$L>6yGV93fuduLto3p`puS15d*y>sOeYB&+9xH-%J7S^ADZ`yf z3e2`#ulNkBvX$|&w|&hn^L@!yKdWwg-SZ_|5Rz@V4JPAd?NoGGm5pToX76SHVgF+P zWy=CGzzwDoMFEH(fdMpzTayx?0w@F8V{kwnPy;l8=rJvzp2}-h1Q38W&`8~$x&bf% z^Z^ur1oQwMKo!sg%twOR5J13!0+xUk5Y9#e)v-qt<)WjL*TqW3)EW3pS*X+|+*8_qD23s;f7q)&14r0y~^?E>mcMG5IKvE#XJUV|1h`y-|`>2zs-K={wIGGPYk`DXI;k)4ciuP`-rhK-?xx- zvh8@jK?O9Ocw^uRArEi{3V?aw46q&Ciqn(=sl*k)B5xJQC|?KuHelIT2hOsWfi>VZ za22=%TmuT(L)2TqUEncrAGiTL1pWc812=)^;C?Mg(NqZg3Xl)H1s1{QFHp#$y+=JH zG#!;@nHQTI=_+ghBGq`6=2er$L!HRFgU$6$Y&rU>+>+ERjGUoV` zcb`2x`UB7)w(KJJBkMl{?|=p11K`Bj3J{=7mNUnZL+LaqJD+lO{Op;@ zz;8T@wHtqul@MkzGS1Fpea9BEHlCYiKVp=zB{ooi)53ugrc`^_AHiN@R>J-~>aZ*7P{8lBXw4>r zdwCT9v`g8kiA7Tl7g7tUtt46YB@pv~gSn*)YuBU$-*xtI z!?~L{C+TLEvcpWea%+9X@4-zry#t52N4T-vcMy~MO*RwTj>@Za+~4pebg=hhXf^tF zU#gH_ZEiD<)OkJ2z`R41d%Pyc7Q zC+8IBIj5iN#!=uxxN_V}++prd&Nt2|cY-^{{mU8Wj&P^AZ#fk17Y>#ChePK=xg;)& zJHu7v(uP#HiwVW?+2luoJg&;#Pq>G(gB!C0{4tA!OzUav!8)hX>-14lO=-$*`?PY->G%JfIL(}9zmXnZG_W5CWR>xXcv#*6Ky`%8$)fpew#g1~|V9!SswJv~ldfH6>bww?&wWo&X6_N$`QB!~%AfOcB7qL&fR7f1b6`7P!_ zuos}7??*Om(`-{}#htk~Fmf@JW5G4yX74iPPKGhA^f-c?aa*qc#w~9S$pV;8;@6Go(=e>10qF+TM9=%nghRQs<6L~p-|;ge!M;zx5@8K5CI9KSp4&07mH3<2 z&{e~{H|a~(9o1|*#WUbqP)-mhmoU0330%hf?#w;!L^+fHA}d*j2Zlor z+PXJA9AE%eGA64CY|L^ zjP1ycwGjW*NN)^QX%7E4YiHdfcn^C+o6Ou2V>LrURu~Xv261+i@4BPsEGV~0--m|g z91c9vz-4s=p)skEZ-={a?jA`=>H#SrC?q=g3;Uf_YF)favb8Vr{$!3df$+EgIjUyv zPDSM$zZBLR!MM-z!SBrX>u#-BDg0ctN&Y?4b$V(Oa;{+R@I|+Qa>hc!vwql!9`P#> z&KU*k&2x;EfnIr9bEU3s-6#u}^?>tmAe#4a4$IJ^-9iO$kajmoCZ$O|zLrq-4bnS2 ziauAMk+OO2ZGS4~V$)AoqY4o@HR;EcO4|tYx1ak-&;mGrwb8(6T z0(&ozzd|#3SIF4p?y=ucEr_Fr84*bcmw&~C5~u(f;8|=vKny*K*~TyO`=NW#tiZ;B z{}4qCeTiF4kg7{V4k-vhwE_1?UXy3If$ zvx<+)N@TVpj%=%*J3N%g^l7`xYE-E0x?sO7|97tww1eNqm&$kXXF@~dd-<>ScJga_ zTf)@ogP`emn4e9##82Nd!k^@i@kjX0AhGJ&;6d^&3cEHO8bQI#4KSI&H=br&)6VhU zFEh`wLRr(*+Xi&z@~itPK6r;hVQp662=n~F>cBh2EySw6f4R#W;FDAQYy46E4gLiG zI{y~`CjUbxiLXv?=Rf54@E`G`_;^CkP#s4w|&>TCWh{#*VV{(JsA{zv`? z{%8ItaGI+jwxm%q=e(+AjhfA`8`9JwEHZ45){ay;Pr`iVK}{twF3C#ISjXM37OrAbhOCEm@s$NMp+*6^{ibfQmq05%D0*dHu!E5?CyCB+mSq7 z7@L9?EK~*gKdQ13Sb+ko??Kk$gBFc*TnllEIH?$R3c-raI)5?yP?~?r0BL}vQ~E6m zwPUp*tDM;EFKDj~6fBauH&%UkzNdKgS3ib$2G|!VF1!019#M@)B+ zd3SYlh@CC#q|s=FnqH7;rB?bqovH5M>R1z@Y0d~DC`O+ZBnsrBgTS8qalzllOu?>+ zljt15KK7KLEIvnYTtJMEw#^qf`aD+_90~@C#vt2(X0Mu8=*CN+7^g-h)K8H^Zx#TIpZI-q4b|0x_f>!El_t7IUw9Uzo)=h+ z6jTN=e1=Q#BII|37yop|Ms`H%89_>Uj^Hr+qyT4^D>x;1D>x1A857hG{Xpak;sfif zTl}z|B4qpUvF@XSf9FbwSqKFJ+xS{yxL~h9Rk%+87lJbDLZt9@g`l@dkhrsYynFOw z`k{$Cf=YpbP+i%irBKB@a6hP$aQ5n2{6hvP)L8JI6@BR&57T$+j6WYf-hFjCA92|*kfy_Tm^fJ zd#MuIt%wwfRM|@!ExKJ(w$RNd(wfj&SMvQPj!*rR$V1clDLJR)joNjOI9c(xcd`VEuPc&4$^WN6!`>C;i*|v*l?6uQ!!6*ZZ5}4-&{k#G0mHZoWbq z?HEu=**M;PNuPdZwvZZ~#;21@SRge@iSKKq1-W+MkCF=eL(JB+ZG5{leUXmnaGIe= zs}?0P7NJizD!6NMw9Q5LP!^)id}m+xj+dx;QZ0-|%7Xiby{@nmg$g#SI*J&v+eE`v z>qt_$tq9iSE_y0FBYZAA!P_PJPgq3$ckbS$a`J#Yr@57S0m!12RU7fC{Tx23O`U^} zz(aF$pIA3l^r{q*k6JGBxX4f!0(`jroF_MMKYem`r9!GwWatr_tU{oF!>^ds1tzPw zsVA%W8XZ9V)q1byVfGXxpcx6-@97RsjbIpm zz?p;nw%Z^IhECr)ldwo4gKEx zt&e6f+M73r7g0EnA+JU(T|D_|Z07iHA+L8vWYTO5rHJ-X!^zhuY6L31QuMR$L&bmy zA<7$p@B<3;Yb!(|(f+A&(Sj(P`bxNo-_yPYfcEar_$YiPxPS+ zy!cFk3qB6{N950V&x+9O6C6&>oDKE;BGMPePGC$uNA6D^pxms@1^p)qXISy=q$qjU z1oZrAJIuV@e2BdD{0(cx+Wj752yv^A);tbJJ{{2NS4cQU?g9ye<=6#Vv%+1eM}mY& zr-S1I6R-k{&Dbr4aZOgP3D|jC1{QRipI;G8Brn+dXqjWe>AlW(E#8OUPn{=72?8eG zb{hLJF5}!toynXg51bF3 zZ=821daLR?pM>3&>NP)}q_C}~Xghs}uXkjt-@m7x6r_kEHJ#>vx_*qyYH&}mns=DD zpI;(P%}>rxgWFd7=S5W_w#c${QItG?w{RaX9>d`rZ62w`fwscdisi}W$&Zx1+{O92 zI#!*2?bZnE#+Rvg13%^@Z{!3FB8q(n5oZn+sTiQA5Vz(z5qqhwb@%-BG@g->#~nK> zV3!2nwe5uW;Q8h_|NrJ)geq0LCdPNW3j>6knXl(9+;R}lRNRH_TX#(qgnpaf;9J%H zd%m3An$1>b2(HGiTWO_LDZrbO>{gprRmuW2HJMehW7*{Aq9>=^}Xtvq7)_Jp#w>F_O)~(WwqwiHdND z#@)6s%iX@f?h~a?}&a3pUQtJOq#&guXh|-SRXsOP?!+6aI*QR<|5^m z2}on@yNtV3J6^YUe<4F!J5(NIc?t8KS4-E~agY)-dU}LFc$3TuB31M8_Vv3uR%>B( zULCLdV~K-Jk%qSQ4p%pcI3%-1t!tT+~f@eQ8|RK-A}tOeK*?5Wi8SRTAUj7(kGvwI^)Ggv>bQWlkM>x(SRFr@v_sYPs!S6R?8 zRZ)gC3l#2+(wNstKTE#V8gh9ZH}ORahemhQMMhpvbOm`(5g6L$CQw<~Gs6d?jQXwP zgPE-QzOc`BxuKBjjrUEH3NO%`+n@oiTiw!X)IHQQk*^mnfz+}4bA^w4uM6=7>!Ns*tB!f= zS%QffTH6OOp78WI=UA-+cS+f~et=cp9Qm=QTHA)U;bA->c%Vi!(W`ORhGRiFxcGh! zO$``Gp%iDW@NIS+>8Ws6H^_sw9N(^gZEOvHX(BRpf}-tVx+o1OGd!;DrF2|fR{6O4 zBc)1pX+WVo4H2Ursvll?2@ziTXm^bIak~RZ?L9H-Xp@?%b=B0#xl^~RdaH=GPkqM1 zug{N#x7yZJjUt8?pQ{WlZbQ(^Bb7!c<5k`iuBn&?1i@eWNK_={BLP4~i(0iO$oPN< zf!k=4k^NKf#o!V!UEZ`mSmwjZLsxOl$u%A&09<{?WemXfpRGxxneDi1AR z!6~NrUM}eRtdeJ5Sj}`&s}-oIiT*+!Ebb_Dgv!s#cCKE)Mkcr7YFC-u%1ZlN6A`RI zz1Pm4Tu)f0Q~LD7fQ^_#z$>59u73jmp!PF$H_XyL4dQ#Hi8Z|rs`5*fpl2>@>0pn{ zQfr0k(xi{#5@IQ?NqtFfX;hUFu_ix0&n4+BfmZyBtMaI&PQL!qN&g=Hd60*#xwK^o zEw8*JyJWVcw1ixOE}1W3z@yMhDoa{R4yu0^9n>L9muWxIKNgABTUvc9HRq~A6!mWs z2KBrJ#Z}wWoKjyewvlc(beXD^zF2&*_sL>wi!JoY;tN>#F3N>}ObwuS7UfFMGbppi zG;b`b&Q%T++FR{FQ)LL|OTQLl1!#Hk;`-b%P4VK`%nj>%k9O7yFa<#M5*P432>-A{d@CT4`|y;(@hv;)o{A% zLedlnD_sH$OYBUxb9Ymm0W{Z33o<_)5-hNfc5^=vI&Wbu2>CalJ|tf8cZa#{Z<(os zVzgu7B`Ygaqs4-Rh7$O}NLm-k$=sNn9Qj60a>keUH)|<-6LZ(rjjFjh-<-dMRvS&1 zYaQkb|ANs0?^S;z*4$Rv3UHdzt)<;sWJ8%NkSmwXl>6?&KA{z^s9f2tbpl+w+WcKY zUMT?Wfq$3qW@j|A$~A2ZNpaL3jP59b|B$ZOc#x1$!lh$qER%eE;D)bNU6p~rU;jOp zlb8a-W2qV8JEoU66nIV3KmlP=0pdn&el#x2n>k-wT;&x1aZ$>+tGj1hdB;iTpWOKb z*22wnclm~`wpuS$q=Zjs=z>J{UL4!UUDTNS2|hdDt$sDu zdX3PtEnTk7Eqg2%k{Y-(g;NM$w?7N(Ja4=+@&F+@1Zcrk8o~Nm#^IZ6qCy`#0V*dE zIM|iOONr+j5|EYE?oLK^)AZ&mTUwvaebD^}-{OB<{Wk0|gjLA^j6-f~fX#iK2-Icj z8Zu8EAwHy_E~d>m!8FB*Fm16{@E<3X7#>urt|mr`H;UE5OvF@}NXITV9QA7Eztqyy zjR6J(nn@dOBW!QJwo)zb0RJc5LTD3jK}hIiYsZJYYI-_{Ic_iJ%onFtRJLaS-0vh- zhB<@RaTN#9cZ$#8Jj7Q6y~NrjkLhgnO|rwW-gw&PIMt?|VIlu0y-sjv9#q;}X_I)U zx2pHa3++*>&;j292L(qfOQ+RP@jI9il@^I@0zf4QD;UKV<%F2tP` z7mGD9MdCE;67dBwV`qgJMJN@Qi_eRz#g*b3ag~@LZYSf#=ft((FPvrhqzbVEv^%fid)4^;s$YxctTt+o)(XZr^GX2oR};g7gNQv z;zlt;OcF1|Z4WaJdgLP%KG*-(C*J3cia%ISK((Kxv}wHa>D&6j$4TpxkJ8z%K0kc= z(qj8Awk_KK@j;_ccFX#*4$Av#DS2j$8XGE|LKK%w9rjHyFi&f}9{45r`}{@>(`T@) zIdo|2b>G{*8+|{BZ~5B#-}7}q2aH|woyd~T@J+z^@&#&{a|Yw``31KJaEti4@!U^Eua*(}ES#M{SXSOti4A$kU2mxb@@ZW>aM z8j-Mso>M$sL&PmGewLu?6YA0#*3_NUUYuazTCT!!Qj&1vTCDM_B`~oXb(=$N%*X^`Z{xOMdw{4OUj`_T<^flU) zt!LcfIa3O~Tq+`ReMH5g?VLmvrM9tQZqtXcv-H#SB#FjQiey~0f1zr`rQ!@dQ=&Qd zv_V$1WnrGR5q3i{J@N5Tc2b=B9*@= zX=x-%qU47p&=L9GaYh~yHDBj2_TFgm=5`jc6WnQu*S(Jz+QOd`XpHj1xt)qqHSDebdS5m4!Ou3V*! zqmpzN4QLC`ex_X5v=SXw6qX@yRLv(I&)t<+L-npLEdPYB%o|CZ?OX zx)-D_p~2cOHNNc~(kS)NLx3UW2_zDU;svDVHuE&>(P~!6)ZyZgG)j6*vtN2qdPzDiMax$g+{0BDtRoZ^ z@lrwnUK%WnC_E0($8TCr&72!Iw23rlOFtkY&HE<|Z63$ROCM=pJK?AG8{%#sFXf(E zkeXE8N;wz2eoBClN>74RxI8IUTF!&2ERUN6OX16?i<-+WWUb|4>3~#Y+1rv>Q0Hl{ z_t!b3!C2w2lxVw+XC`x5$ib0XqE&d{GF~xJYNagc%CQJde2X}a(1R1qcH8R0qb%#w z?Tk8n*OXo&+{203!)oP@57eELqr#5*@3}-a*`evPTqxDLbi?vj{Gf$ha9Kj&@*xZ6 zx$>~SvEkz?2_@Fc2QH7l9>giDBDkSvmFm+euu@ZZH9xAa*4#tyb^L?1)WrJP_(icR=J#cZ zotv#5wI*5jFQ058E?0RDEuX-GGk-id{oJEgCyZd0X$KdC;-btV)eixOfP|51LN>mb zv7NeU=;fR}hpG^%+p*MBx3ri=D*+>Vzwj59zw#HCuPiSuOP0mU%gfT`H;THhC3|dB z`<&Oi)*62F(WCmxH_G0LJ&}Km5@|TRFa=kuKAFncc_gc1@q~6PJYNT^e%wN#gFSG( z(8%$xs$SSvScdjr)lC+kmpf#>F0Uv{at19WId;MKLX*tj!G2rESU>iI6jZ8gvRGD; zU4b=qDc4v!g?w8^B@jA?V7|>;9Yf7E%ttLA=*Y}?b@%ji^~A!Hs>_k?D7V@`q_x50 zW&O6Cgt6dC#0QtE2#sAU`0skTZ^n7TXcumcvRU@x$nw=3kcG!#9VyDA{XQ zMMka^IPNnmOHo>hSh-~X&)#p~9jUK$$m|2>yOswH^#-rT=xlwDM_ebcM7sxiYtjg(#k(8%PZGb zL@QTUZm!&4xv}za<=)DpmFp{ySN>hO$yyqF4jxazTR>jbn&(v*X~`YMU^G;Y|JhBa z7?&7Z#@HEKh9_ny&7-SR$~64ps(xsn;0%{!sCGHLq`NrfWy0B%hr4IBwp!}#RbGuv zj9rmR)=!CoxA~t*N^w1tq`iu)PH{!;4X@5j1Oe=tF^TJ^e*2KDR0H1-?ft7+?^n)P zc`f~cE9!sBj5n{3KbzurP(l5sp#W`fl$%kMa%`onmciODa9dRqMho0mSCKncHH03k ze$)wx@9IeVb+p3)ql#0sWcesg=HijX@Kp_BX(5`LM%g{$axezq&1aVP@`iZ93w7f$ ztJwIXt0dZC04o5RL4G7SHh&EGh)M*A;v29Q${F$NiZlSX&5s%?_|OpVre7c-@p&R( zw}`esQ7wxK+aHpmW_S9yEwy z+tWfCS1VWBR|j}jB2YaB0z0}0f2Kc~cEiat<;X^CBK_uX^%GcJUZ7PBrDFS|&P+ z6=Q}(NDHRm31Q#O`h^(G1l!wpf(-;HW-j*l1#nc32|U43n}Aj$v=#E^s$yY=l{4)u zi_N~j>ZRnLSQ?1K;M#3@8%xoE*A#BKfI9=J-WuZZ%C>HPDZ$FgKC)` z(##Urr8y_JCC`~tB82pZKCR#Y`7iPlm=+{xTDR`h!mHC2OU${paqPT^adP%I%Om|= zmCr%ym4c>?xCO!Gy3IrIOkU#!rH9Ps+6LQ;?e6frX38=;uX40Y|NNW{ZXB~-D~1KH zZA-Ekk)I1&OLHh}j#!H?k6hcoX0sz|Z3Pj!7P@w==O>xX@e{x(h_H6f7Y5IQ+>1!7 zt`wwRqjV)vuJ~GpUA*UGFIwj&Ho58LtmUrllRv%odPnZs<<_0Ze_IRJuxtLpqBXhs zKwQaM8TKvx>{{{KYx;$?b8A&=6>Fty*nR3Ku_Rlivo#v4SxS31yf8^5ZoUFTw|1hZVds`7d< z#_pxcDa6D1m{U&CX(4~lnV6H5eY7HSWwGb=`D;Jjf|ROL)I(3f`?mg$_AQz8(_F2O zC`;+v8lGF?>WjVBPqI30aV~MzBGJOcT)FZvyi#K__Fc0_N@n$h?yydhlF!*VTb{`= z>!+3wqN|Dl_~I_%L4V$9lO$uPs48G+aWTvM_=I>dHeY_OQg^BLIv&{U>g2a7yZ$5! zJ5Q<{uf(2G5;c&N*Y}Jni%1NGMo7nefmCDy&}i@_&7t%?$&z&8$FZ0S{q;=?&I?-> zehJCP%NS9Ln{kCm&&NmMA%cd`2R6<=HXC%VI04hVXRrpUdX;> z$&#grY@rfuS}ai{vHa?08^+&p-(+?fU%0A}6S!|vX4311$%cmw#{aRols)DRVo#<}%HQXQyhSQG4C#1byfMAA66E+21&txvMY zIzJ1>AHdpROYl$d&RA=#6V?^G8#9?6Z{qqm4{wUi!uw)>bv?qTm!;ubvYv$fdEd}2 zBQbO26t*n>43_C*>V6J8(uwVLxe|tr3BHKkFaG6W2hQsQ3Wvsb;eH{Mfj;Sd!-E5D z8ZXmkdPngi_+fnPL(5?tz6IHOZU!GSqgf+@C-;%?-o0czphCkZw1 z_`So~QbXX;BMEdBa^;$u60;jgCu z#$USn7auQV3AFCERl2D*6nA>^eEVSGPJon8d+s@wIS|+7g+yh2Y+pIxrGV&KGCZcW z2ckmi91DwdO)$agdeOsSxQm)bxrY?Ju6g6;KR&P;lu_M-h|!;WaPI)tcy5=6Ytw$o zV*GZmgIHJbL!~DkpE5Kq=F7lG&WZ>%xJU-vaSMBveRzC9>0f`Yx7%U4xo^Y4FDTE` z4m@c$hdG;__wGl1zOS3^CnMq+DJ%;qKM01|${WKP`DK_-xuK5b7?)zsE{~@;%m9W{ z{%1H8Q;Si=3FD@pmxOg-YTU(fW^=#wq;T$<*XH8qWT0FYr{*P(8x2>))nazwUSq=N zG*Uz~f0pUOBTo`J8$vphQ{ zy|B4>Ppp>y9&BvgOMDsr)m%CL8NOz2Kel?V1YdwZRBD0!WL%9m$JXEp-kJE4xuaNJ z>~U-(zAXMd9*Qo1d{7 z*8{toE0G<|<%KUNa=f*Nj5}Tp*deKNpb>n~anwS}I6Fo9Zpqv1g}HOmoH_O!V{Tf~ zaWwToI__JWqED5+;y{?GyP^svPw$3|g8BQ?7AZqV&ANOpo_@JUvHkIVnNq~WBQcjC zaZ>)_0k~i6>0jf)9h!#uSdN(Oo!35o4awQ%mHkr~oH~sAVGtfEEF)9^sVglT%*bdA ztRl19B6EiO6J?Zh#LWa@_+~UG+qj2;FcUv4cY0 zA2=eVyW3&ES|EKMTZ+q@4|%SC;e}PzF4Q#S`P;3Wsy(XaX>vl`4++rDPXg@yo2n6o z5WYl$uw!d9p;K+Eg$NPz+VgL=8d3)d1gD{gF?Cn~*6(g48cUp4@C4^GKQ^GUCjlFiQbuG@VzO9Z> zjZER22bnKds)Qk>6=9&TRT%hYM@z`MB@C28)V;W}edY~XA^;370;z?-0QxJ=_CVnX z;KxfbKq$c%Qi+MH{_|2C$PUOQz=Zn6Bmlu!8Nq)CS4iDW@q{ok`Kit13}KppC(IHE zggF9;a-9(ZJ4y=s|QRIuM+_<`mc^W zj7`fC9VDF|^1p%eZX0-dxDAY;54TlHMS0zcfOauakI%N9XbWx&YI_rjCZ3f(-=>yv zrcFKBVhSkiCYr=gl)6Y8P5GaWY2$S@U&i$3W7Q5Hwzz%QK>v1|Yi4Lug=2-iPn7@Z zls2K^)bi9e;o8@wkGey~zTwph9B^L4goO74e?6RS*yFgtx-vPB;4Jni3BOarc04zN$=a_NRA{2k~1lSs7P{7?`$*7cgp)qq#7OS z|3%!@?=|>Oc^4@f-Bo?QA}wcqc&G5mv5W&nPUw-e;$4l#l}1V?{ZZw&CyE}2^|_60 z9a2kFN$nm;dl5m>d=>s`=U5a;eN1a?D?{^DG%1GU_eul0dV>^3x<$HX=y@rGWL9}# z%zKQS5j(iNciiDzgMNWcy{+=h#XWMn_g-pDiOwR~SmlsJ4Dv{iN!g@AQZA{8lus%q z6_B2go{>sOWu&L1=cJdUa#AI!l=O_^gA z1UE+$1;(EeUy-cG9~s&$C*OWcCPL{|FOj5mX)8wSl4Hj;qX2O#i9#Zh9OT+G!cllq zGiio2MOt$o4ABNd7?cr`&j$MMmHj*;!$G+(VT2bh7U)K zC6)*Dvxcq7aqTwb-@wMK0N*)%X5s+(Q(q($mE}ghhS|V)kPUMWk-f;CWDs+Z>`nG1 zNB15kpY9DH`;m{41Ia$*hcgpBN`+0C!Q}UuXUS*C=g1+@@fh+{F&KY(#BTJ|%pgvI z5KV?R$4s2A(8CvszAn8+wkP)#l#1lOk{;9@vTv6f^lwQf8^IIE=oshX6!KlN9KZdDdB% zL+_*%ppvF{kkAK2V|SPA8**bDy%JhwN1Pa)lV~7+MFhkgzeveHo?T0hGyL`l30+YX z$w5?+y-Jygn=wKG_o1Wp{zI+3WGSUJyQky`O<2Iqn0;b{V!Wqr%Dba)#%SGlPC^BXCOb4po@`urwv-kwPgFU6X9>kHXdm^ zTggr2X1&wlc!|b1v!^RROeosLon#YA@>>-7Y3M<3e#DJ1MG8sAsmNDL zh0?UQIVQ5jg(7hsEjI$yk|~CECdi9^=SC)>v#~3^?e!8`GU>ar3r#5g`J5OS!bd#Q zmslGlvI4*I>N9z9kVh7f!zmBQAUT2(LJ6Z>qM$z9(UBH|76A4~>l}v^7(cZb3qe|1 zqPJgNYuRifRMD$gRgG22lzS9r)qTo%)m=(!)k8{0RXSy;DwQ%-^?;H~Nuy*_k|=qU z97;Z=kWxT-LMf#bQJzssC}k8z)lO8-w6w#DM4+{Ts=`=dAi*~kCIUFCjS>1NQM*qIbpiLrnunvY@mLl7 zFlB^-r9@*(E2=wgVt=BNXH0N^d{5OjwLicTD0Y6S*kI&+>?j38p;Mx;^OQFaK2d@{ zv^L+uPE#y#vy}7Ja}*MVNGW+nrmRzvuvIW+*I4W(g z#-;r30Zj1}0dkGPr`VqaDXSD3MVAzd)*9Y9tUWAEm7;E=st(Ig<){g&8|ULQq1s;?n2aLEQOMWrBXzwVpL_SIQ4ita{4;joVtNuw|j&= zIr$7_O|_x=)bA#(7Wp-3r5?ou=79$+amO*jE^afjSU2kJF86$Y>mCf*U93{Nw6VsM zdXPxV@}tfS?WNjL_fa2AJPy-Jt!(aT-gf$JGpZTiZ#uGPMA+2WM39b{w{R|1F6bWB;Kn|?pC8x;COc$=o={~)_dx2G znZmzCUr@zvR8YTtcuD;UucT%Qzj|aDbW646tXJS~(R-?wWDH=9)Rlq#uHh{eyWdio zT5}?G)J90L5TP+C1O*kUUT(eB!nD)UMN?n53{b6Fetp1Fhp1V_OuHW~>7t|5mmZK> zD77W%V9P&I_m-z0(q477T#(h$#Zw0li-?s`7q8Q(p{*ifGgLH%L*-KM?)7a&q*iX&Gzz($d;80!M!MLInVA$d&`G4`fVsOsO(el~t2l5V;A$lEOl? zI}{l0PKyZbCmc@OO1?$$w<}0vY8gPk9ud*^)LRs0TA;#ySS%$(bsJ4uwc%CI{mK@` z{@Vlt)x6fW50Ks^t?z>_)I#ZQN#VTK;}G?_bhqfkbWuH;8BLm&W#`)(+ImyxGgTdC zOY?bH+tS^_OKlQ!qA~XCsx{vh0g_=bfGj2o1h#e*@rA{Kf7Exn5&&+u*a_v(8zEQ3 zR)Fuf6K4!m2jFLQgu|IZtkVc?BK)#b z*E6l?W86Xih#XR=b$d4o=CXt=!CW)yLlGwso##{`kY&lnks;I>iD{&p^1cl_AG$FhC!Lt|NTvbxNCt&c z%-v7#L^;F%(7d##O`~Q0lRB!$qkW@&r4{5wXl~M~4$LAQoY!e@Ot@41s9it7$0wtnp5{;p(S^|u9oa+b1bqDpjj_K^SkK_&Vk>N?#J zIYPTdH-s$mudPL@(N*Y?wrX_zYYqBz@-KTMxDH*L-bo8lfRCYQ^ltt@IqI`AL@%y6 zTcd%tqH~GkG$p!+X8gon`X`z#{RN$CXi#?K&<+QaBwu<*QK2UT>hEs-X{|Pt9n94e ziLx2{7&n=nr?)^8yLcr%zn4Q>GIen{O=r@!n*?T69r)#sMOk3NG3nME+Bwzpbj!>o z+In}VnMfz6CpFAXwgv~#1Li&s!SDyj5yV-)-&x}4nO*ZQ^{G$VKyEteiXmfqe{4ZrgMnte|y zpF#H5qLiA==op$EeSxS#ccFWejs>f~tFbXjI+K-dHH|vx|DIlX>18PDPOaCG(tX-? zb%*F*8r$fJ`;hc&rdQIJOzmHsrfbh{H`zU(*+}ZpHQ6yQqGB{(=wvegaOfw^t@8r? zGwsIqX=HrcH1c2HG;;meWk;vvW2H)FnW6NO#Yo}YE+4~vo-ah*XA70?2@fjJ6XZ%%{oC^J%;Fug%kFMQzRW#CcEIf-d#> zl=*p;)cLmV722xu)!O($G(EamJRgVJc=x04J1upd*uqVs8aVTto#X5##f z?KkEb?l0%xo^ro5dtnfIArpl_q|=tt(AZI8`I)Eu8D;6eI{`4EL$ z?R!TXwSwnohm7Fg>GSxM_P^CqLjbe`^_Lzs51W5V$IM@v7pKR}SJ203aq}az_o##k zJy^0^RlCBxnL#5xUdCBjdH$uh>U`H_^?CgVK6Iqbj{7{?K?MHeS6Zfe=6tCXNL!wF za9*8{lwO>_l73Yh5rOCok3>0isMF^U4^Zd-(k6%i{h}rw^-GyZTYhYx9AC3Kc(G<5 zos*2db>#Ko`TF_)1{&s91{>$=kniX3LG#GVHgMi>*a&`d9yy;$S8KVM1yN8-cA-tW z{u{vO9Ut902*Fq}p2**sJI9^`k4an`ftTFrjx4F1N>^c=mv%Dn^{y zd6eND{`IkjA%6Y@BZzTJ6hB`j8D3w8XhNK0q;3ykNF&55+tPhvS2C*Qk1{SZRv_8_ zVVttmFiu;hvr@}HGOrJJ+iP@m)cj8#S);6=E4n+U9|`3DJ)vTfqLEgdUK~53JFDP) zJukEP$yAs3RPc$Rlzy$|_+rm~YgFm*mlx$;ni(-JK9kn=c706zPs%T=Rcslfl3}A& z#ppk40ma)y_0}+Scc1K4R6E&wS>j}`>cEcPJ?Xo9e~9nyHAI>AYD4G71E#(FZ5F** z61KgLqjkQuQ+2+0q*CuBa)@ynRp)!rd5EEi%E@*YGwe-;)i5l3|Jm0vF7!?@<`{Se zkrCcYV2~Lk#-&~ggU+BaW*Jn*e4pQl>z#-6XN*@29^*A*nNh)5WrWmLGx*RMlX0SV zp21=;7;MH@#&^aSMxE~@V~FvF@eOfUYl!iIKF%0s{ADmY1{j`@)fXk5l}0i`q}v$ky{!z>-Vcn>UO6V@V9#iPO7)CyjGv56#s*^@vzuvVzQxdC zYB3F&v-XP&Q>MP{0{R8Rg87_b#RM7aj5Wr-)JldPGsgZ8LrENKKML6=3c0LX_ClVx zy&hdoy(oqx(<|G5wu7O@+%=%ytHj*VyMwu%>B~IA43Sn~$}%l_yBWKC$>O~X!`>}O zhh&hU)jRdZm1)@P0!bE)LDo4lwR-0{IIY;gQ zuN^&%zMhKeo`n8O@0*OC`D(2-AE5a4etc&OYk9Xc8lsR2>w{X+D#Yv!gwvRNVHD=l zsOH!t(ie`0(!$dz<^*$`+06)o`!Z&SzhI5vIOg}KU+EzVU(%&DLKI}7FOu^Y*i2}3 zQ#7Gn!~ZKYwVi<9g?~u@HF|cN*N(eALGXJ}+Jy>&{}5MTjWgw0>vpnGl7Z3&^UiG0 z{LgClPa?w?C*BQ3j1fk$@BV$DyeSotQeEvAT>cK*#bV%1Sl5~#cAK-TS%L6;=3QpF z^L=I-GnJXl+{fx`@^{$}-Jy)SvaDDKS%+BeP_7I(pdDC;SxziRRtnRfWzRawddUzS zaz!6gIW^#p=0W|ge14OE)$b9wGKm7ZT%s~DW(_}__Jd5agF zMvt6k=bLLDPcYZ~U5MI~)csTMcAnII?oqi{J{fv3uSdHB9{(A30ivsE41T-%_!YO#{)@9R-Y_z%h6E*j!@SX>_p((AQ zXBkE46#1&&p2x+$HNAg?%g_&v>UsrYz|{dh zn&kZ+QN7fj)6CecU}iHE<(oXjWHCAljXW)wEYHyqwZ7mMw5r=j^b485kxF!L$w9)Y z85Fu}YWVpf#--uvUVGf>k;^@&_Yb3SzAtNE_1wcrJbN(ycx-Q>cLaG99L#W{KAuB! z>f@7Ev7xnR2Dd+>p?5LPpb2wz#~*g{uDxP)l~kiNGp6QkFU!!IDl;%CXiT?d(gXB~ z_F}b%XkDCBXeyF`{`9nWG&<{&X=>ShZwJShwH}&hZWQ`oz7&rcD8yqPSIJXXKyLdSRzki+hemH zwa>A{V{&`i(%+zmWZn&@d$`w!7<^)N?0VZPy={{v1>jhJguk-(vF+IdtS3$wv^Dz= z%N7}eD@q60mdHn;Uy`QK>K!xanHX{Qdsg4|j}>IpM%FgA%Cp+aq~i+gCv>HPOi^{1 zGTRvWHeHP^MPHhn9^elAstxSXX6IqFsRPZXwGn-HaE9zyR%1_J@vDNNF+46W{trtg zzlVhy`^}n94lumZ^NnQ&dz6GISP!o2ML1pW$vBJZ%hRt!^V%xV=sgFBg1Out?o4ja zW5oR)0xPvAtzD@0LHqM^&6sg^1A4o}C$`9w5q50WFnfp{%+Bt~K=4^xGf|eGW^VU< zo4XNn>P&b&5dW=%pUz9XbQR(Bm9-xH6zvET1P`JsG6D?Cdnfa6vQa*_+0j{f_cnu* z*l!^>lP`k^_UPjWknQ&-WZ1{sm7u6~&mGz9zty?y3-BH6TWB>p@pNDJ8`ds#9V?>Z zEvurvqdtAW!Lc*3nPtHK#m+?6kC?Js3e4GEta`RWXL)Zg>uQ1>`+i#-d-`$=o69a& zTVyACL?f^D9BBHP^w{in577QI>266odYk(j^uC25_G@%Vo8yAWlkKQe?Bi^2eYb@- z2jdF zL<8$tyb;<2?KysYcso0vExDjsBfa22_nH4aYl7azPR5n78(BsU5^Rn^;IT@!+QLVc z#)2QxjNQq4j(m)^V*BOyv7!w6p*KCqvKz&+l%(Q%vLwpU^$VR)y4};b@UAySydB-c zc!O?Tc;8!#ma0T9WDqCW8`TGrE=_bV^!1&R>|OY{(79kf;EZZt$RB>cP=Urty<0dh zb*(2lv#+Ff;RV{Urd;hd>N_ireb($6TWe^8ZESLjog0rC`^KI?!|%Y^rzOSM@fP>l z$_sZEf~flj#n2V)DGTy!*x;>h6}nF46H$!x@X(oK1^8(|3U#H*uy9`VZ+UE{ zM($e#7ANt-izVZGs&*pzZeojx=QE=XMT}LqehFG8HS4vu zITWg}bFmL%)T=M9K7QDKw+cRdrmrpie8rHA?o*lT39vkb%%aqykFdnzE~VucAv?sz z{wjYQh{|ehv0L;@+_%^@;J27!AwB$aL1>Ydp}a6Ku)mn1@j|!g@fS7eVeiHA_Q+D{ z;g06witNQd3&$3V27E6EE;WkO!-G8yfWZ@^)zt5=SdV0syC#lca z551G`TRP_0GxMqCW9-TLzsl3>-h!{nv+Q{CwZ)bWGCQokbFtCHzmLH#t(RJKf7iTt zVD^mByTyVI6g**22l+5_PnG0Q^2E(EF3^+l{rSzEi3N)Ri$#mMsN%)JfkTVw0|7m0 z$QMxla;?wQH~<#@URGH5~>GqXnX#H-s^4D!^N<%y^BBT zv_((k{NnEgm&J|6vm@`lT^9QWgnO+{@}M`zMOcp3l(MdxPJbS}@3CKb_z>*An~B!2 zLKww6JJ|(qp?DBac#rE!z2k{j5@L-T=r2ioV>#aMV-+zDhXz|?jGZpEQm?&ZX)axS^1+j9~RIdF`wJ8|ySY#UMWlnle3k-%Wj1gJ&q zDYe;#VOh#yf(GKm|3)6+{D%(UD5}e#p3Vd+`ql^F6~xpqAI*zi1S$?W7T__aGFeht zN{26UCU11PA8Ihd5Yj{OUGB!8%rIf5Cvq<1KOvIeyGqBGo|kUZD@VlQk6lgT3|x#n zSt%iX0)}=02QahE{$oytpBI%o5$4&Pe2zSx&!NqQ&RB8`>sha#zy34y zltUeH#IvUA%J$=*1RvnI;t%29IJ$AR*Og}an=9AVac=6r<*Z6;nDv)Fec!~n_kIUv zcN{B+X>l>Jyu?g*zLzih4@5yerr{lxi> zBa6p!?qw8Sw8YrvSYrgV&9M6-Q=xX41e0b`rNo^bJ?B=n{Cw0zcd7k73GLn;I6K1O z+_OkSW^ybuRydD2p)=x~JWk&051G~+{b?JHLV?KTuN>DXVa&@#XU;E9d_fh*8Qx^? zj(3qGOVx1v&CgI^+~u6Zc>N4!BH4F$*tsk~-?fZ{wH|EX##Wl4hYiBctA1^|lxzE{6ENr6rOY=N2P1gIrQRZyfr>y)-!+#sj zU%w?2VybUat%30A*^!M)hzL6D&v=fjKs><}9L1Sy82aE6QBjr^2--r1 zPXX=%!v`16z?r8l*_#!eK7os7BznLRRk%pRy|BCauW^g+UuWB+ebk0gp*Sy-_=P`F zsTyTV*~JVZr=VD^@v^arbq?>E!5qZx(6`{sVLnuE$3Dh*55^4UjW`Zl?kh z&#gEeN8HC>5!UM{nmc&%81~@6WBDUk^D;N@TKsltW2~)y6SM{r!RN{64|4i4DUDCi@2VS|L3m`UOC6J>%ebYF zCTyd{CFjTfu!cD`QTkG_G@A3J^tlyfDc*#%6pSZ8IezIGerD+p&fRD~c4Em5`>3G` zFN^ZPeli(e^2QD=<=`#L29_QhJ-w=rrHP!~*FL8t^bYTDcn{z0f6{s;v1jfQEEwz3 zcDwDa$M%{GiAS-Rxx;P4bDFguQ|p%^(C7){f_zNYTzIi~-LD53@hwZkUQQDAV!N=_ z<2zwpONt0{!}d9RHO=~E@L+oe#t!F#A z7Q80uM~Ihr*99%iDULNSgE!83HFu9EmDN54&1+q{>xJL+_xovUgXZ7OX#`3Nxzo{=T7kcEp_9M&+OL|;Sn$mOF501 zbGev|v2dOg@4>{!rL;0l?GspM>8m_MF_{#AMTMi6&`)pj&`&W-o!lJ!VAtrXO;y!O)9q%x2karp@F?y7D7W>~)ATI>_#{Jh|(;m$XVIG>9RgepN zS1oL}Kk)RqkYdN;*W56qdg?lJPZXM~o*MpSPgGu>dMe3VJ#{clb9wYl?(yI#8)77c zOjLwcG*TZ*ol;K~SJzxd;Mqo+%lB`nhFe9cE$@j^Sq8bY%tY+@`NocHq~pD9%N*l| z#OtD8tM3D6N?6SUOv0NM>lAVf*|z@^nQ;U)*x+^0j5F z<)=@?@ltq6{H^6X%ZS=L%hAhw*|PYU<$KFlmQ$BgmhUg$aBvyc8WhE6EyM9SP=9Mh ztfFvl)MvGpE7J!tG2L|@#vLQ?PKuAbThL%-{~LPa-afQbW;J7qJy731#6&E-8+m8p zxzFzsVxM1qC%Q7IUy7R*AD`8{ylT|4e1X*yeXAdbYah~(q6}ELpNu+nPwkS%t1Cr_ z+J(`-gAus1wYrQe9i6(=(xJIBRyA44c#I#hcdNhxX7f0jF^^lkYn=Ie5V<<{~?xeX{6K>7M|TG&xU8>T5@weY}7#LhB|Opbyw74X_uLts~w$7VRL^H#86ZV`gvjf_JS=H2URnNE8IN&YsLJOrkK{jCdBppzm&QvA<1I6sU03@3?(uXQ4p%)h z>S5Q%dFHRneD+$#MBuNjd`wP3IC620&fEucyV8FQ_w(MYNb8U-NZ4vkD#rT zN0zs*oag=RQ&|z`y)95*xwK+7i^}>TT7_}fs#>{bOkPgS?z$7@xr}jt=e1I@5?dHO zSBbwf*N6$iGn~E1pH_-Yy~xM#zxBkJ#&hwQxfKb-voeR3q!sWjCr76t616)*XWS8n zSvgU!gu5BG1GlZMAM?<^YGqqi*xWOPnw9V3+39VdYv! z%ZeDUX{nbd+&jIjjy=AzYlV{zUnxOjvM$aVD{b(8?hx>hhg8R}t9Elc;43^|HO18_ zEd}mJxl!&H%ogSw<}0S$g*`Wh|W94#!k%D&#$=TzO1*7 zIa?8xY;Jf}&0gbG{U)}Acyfd>98l*o9NSS;e|YuAs&$y}>SmDx_0!1BRg)*TSFd%u ztvZc_7kjMQ$9SzK)%&d8f@(d4REJ&;Tp#^G(xb;X#~5C6rVhSHkbJ6y7bvgh^b{P* z^MbVCzQq^(dpJbfKdE5B=jPN4szT^Xw%R+Cqg zRuflSR@+uvp+2OnzN_zk4%7=Rysf|4bswF+dRE~;9opX+QYuufD~vgTl=ZGm@W>Lp zWA*GB|6$)Se028Ytn^rRyX#7}(eualyubyk1@}D7%5}NQ^y9LckM*aHv@N~~PS3;G zOBXoDL^ztim&dN2Q5afnUp?~{xw^6Xd39^`&T5oq*Xlw&3hKin_JaxZ>OV;RcF*jO zBF};QZP@1rXRjcG78)%z+iWHoZsP^Vd})z9HX)e|7{bX&w|Q+%0r>c!_Gw zH&E4UHHKAx_z96Z#moxjBGVlB1gZ~fFMl6jQ|oP3(L(^x5n2CGPWUaVrR&8v+2Ol`3@ca|WgZp0mas2-jxp31$3p ze(GUI*l=&Qb=ReAYY_=g&P#qI|1Ce7-@uRJH}R{WKB#qT6PyVq1ZxL}0o!hGIYIWY z)~oKizHJ^4l59_e4E6CpC?41PcBM3bi0>_TOlywx3$|X0N5JEeT`SNMIT(z!K$ zW6|CG8Q;(R9U0%cCy`(HGVPApDNlFy7!kYV|Ks=Vfho~@{_&f9h1TeNyN*!gEWxhh zz+|JZ_}ZG79rkerrFYbF{r*aL3R~bJ2#ZsK=1j( z|H*-YIYzrLTJ8wu z{ahkL_{DA<&**70wsWevBe6NNqxnxyD{^R9{gp;%@`SJ^&&W2F_WtgjoAsK5SL+}3 z+7yTky{h|ImxH+~eb-OFAZ?B2oK)j@IeG2BGA1!$%^@b`u&l|LksdN`e)r-6QGWRc z*L(Tu+L?j<%fo8{!7j^_uuw^5Kz2|lEdlnzqi)ge^@D|z$)iJ0*$pgU;gLp=TmA?^ zTX*Lj+^+3kB|BITLkUJcUbheb$D$gM7Gl{V&4(iDde>MAgv_3ASBUNIpL&&kV|g7% zh7me^}zeB`tZ_K4^+wCq1)hh8_QL?qtgJUvLYj3f) zI(OH9M#!zx$HiE=l}xC_L~LIl3%k5Hw5Yaj@29b@u+G%igKb;C+u6N1O#XsZUKEp; z?G#@JL)mX&>kav*W`)*k@^6g(UE5ca7WNH0gf&Rme4~gdt#|)q4N2RN^1FrwYrabn zd24HBBOd$iLB7eO0|ADWJ*nP{Yw6y}BP}6UZ?>GBU#m^G?MY)32JSALS!!g7E_`0d zeEm#iekwMxRAgeUkUF&%vMwv+7{tgvm0vtyfmJ$u6KQW(_FT`sv>S~F$~C6tWUzNhTRGwC4hCSs3~}|o4EO#^~&|1 z=8zJ=x_WBk`pb2rd9x2#D*COHk{9$83ft;pp|T=A3omD+;Vt z)y(xXd23G|t*;J~Gc1NZ&KWR{W0v2~H7Bh z*u90OO8nY3$nqkTrSLuAR;)yttdJL9P5ASNM+E2dYQo;avV&$j^r8K}UMhEpGqgOk zIP`n{=X%8ubBI191TuzbLn7e(&=)KK!a-qB41|G_peTq8Lx9qt1h@^90u?|RF!;1A zs07M`J3vKH4crb|NhyOGpenc%R0nlHO)w0x3)BU*L49yHXbkFswL?arIVcWVf^wi0 zr~>W9<7eoHw z%OUQNGSEr&1OKf5xBhqi6nGLm0|tSo!Lwj6cmzBFo(IFg5bzv$5xf8%122J9L*d|M z@Cq0WMuJzt*F!O29C!n~4&DM|!Q0?9Fab;g6T!P6ZzvwT2i^pe!3W?S@FAE6t_P%o zDPSh}2+RR9z@?!)FdKXf7J)~>e6ScS1WUnm@F^GyW`SkkORxZ}0H1&_z+CVZ7y-Tp zpMiA5I~Vc?AsvZb-`X*IBql|P|FsKGZkq&%05VEq_egM9AF0*7D^I=i<;m5 z!1ovW3y*gh^dpLR!*W~){T$%jrrYqtyCX$Az_0LCgxAATn1l#iv>L7hm)6n~tqyF2 zX^2{kKY?GBi4>)R?XWH3v#{ZT>u^vAD}QH=%*v0L3jKs(z<$?2ImU$|*dY8T%f9AX`uhO9(54=+{{~>WvJ+GgX*i0^AmWfGY~M!0W74+DB9>x(g!d3-Y@MS@y=>C94*nis%ZXXp_g9#se4HrnyxvG736MgM+ z5E|v}0`i4w*ZuHrp&No@0quB(lz)i&)X8u`Q#r(72`cBm%7%KHITxGA+=kNeo zQA5$T>wk5e1=B8<1D>feE`*pg!XIC_uUZ8C2JAk!Zr}I$eya;K8~(y;T{q$O0U@gS zP;Yt#cVQ{Q#;{1?2Ej9(NvORYpAVV6bV*Vrij+g|W*zJmjW`(MD+KgX5>M3-tahlo z2}3+;Vc^ZdX8{AY?}abx3Ij{K8N$miu?K~LyEI{l)+`K6Ls45HV#1J5sR-aM)=Y2| z5qA>-)S&n+jT<7sYauluN0D<%BEYeeB0$zH5r{4=0@a5Bm9V=Rr-kBmVGzX|2GxTB zccAigD-5s=2|Wh~ehb5aS`j$JQJF3|k7J{T8?+~sKgDQ5y?U5AFBYqO1bxT2SMhe*T$Pk7X)j%u&Xh0w~Nd|zZ z4T0F*9fz7L+-I&Xfu8V1Ab+`5WG5i>@qKB&*dm~iqXMi+CT)bsp*>$j+~2Si=ECa5 zPAMKZdCKXa*dE9WIDdnKDA-_a>ry01pE=2rGL;^b4$`BVQ-Xs;)`J0{YGdBY z>ct+prgxnN_W-6z9I!_r!QiEn%tsF5GoT{$LQX~KIzR_@Zy$2py7yTs37|RZTiwk` zfMNn|g$%AD0Jtc9=R^4mZQ5b0h(V~&xZ+w^+{(X}6NJeQ zTcOv1nbE6=Y8SZZithXdedCWXdSm@9d5=JBY2&yYZ)0U+d4s=iNkRrxq z^~;m(+xA}cGMBJBtk(iv7l_Fy#571M{BonWos{1z(FdxxU~NA!_=b!}tMY5|H}xxc zlYpoM4oF3Ol?QMAPrUM;q5eA$EWB z|Bw(-Fu(d#El*nCC`c(p{+H}F;E%kAxYFGhID$c#?83>4`br>BF+wg5$g%pOAfuqD zptE^n^Sjvf&3izE+h*Q4nF9q~VTmVFYV+isd z9rbsc3Y$%vjhoGz@1cB1{urWevtMEl@ZVl_pn7x9E|sG!g_oPUGJShPHLi&}OWrc` zRNNtUWkY*^uK2Wc=+W+88f;4Mpw09VC6hso3PqZQyihWrt@!Uq2tWcfg{7=ux`ARA zVwFlTT}tpA#H(ikFkKe#2e1%(p+wt!3Z2CR_o4Y^1)P;!eAN#;g8a?C0y?H9awO>< zmA8t1#Uv>=y?>%>G7~$;HqOiMmlOpIysBg69%zYgNuq}gDt^gJDEyI^*;1E~-I~5k zwOQIw-0BO)K26%}=GdCeTso`UlAoCx0R;6w7~)-6pWolln-vXY#rK? zQjkz+-$pcZ+R8r6MWhG2ZixsT+4A4wB93mo+6delJEF0*U(R*k&dt4BI$Qc%hSG`_ zx|<`)=lpkD7(3~woDtn4`40$ji@st|LD5)2z>dht#cjPi5x-?vf%eisT-`!~k^m8w zN4mLHW&C^7+lVLaX%e%w@@P`hNt~$Arz8ga)9;crmLgb>8=TwXZ44o_q_ypQq1q{1 zPq%Jt?U8#YTe79@V4V%Qi|TDiTB+yhwP`%{7`a%o^-kmAR{55$>7Tcpt7eLgTa}vE zE|+ZesAz7b9on_!=X7o>YR84GoD;g6I$PRXKir%Rj~X78-)V7YYg+o3><$Smlp8yR zYK(4u+PWY7$^Mtj3~WLrYv&=GzY;tRCFKO+Na0XL@|M^Qca00OP22EpfO3#XwBGNH z6T8f|7>~xcY&0jfmbY+QD_gqzO(i9c{nvHRjpF#G-9>mCuywLy*LD5%ZE=7?{1*iu ziBp?W3c8!xoAL^ZRu{JbK+={c8S13yWU}>j>-^@hVW`sBk*8{yEq1`RFCo4%U&3Um z9x=~&(kEq{cb0CIZ7pdM6Sv~eJ&V3_e$!E}Vk`B*KfTt|wlTsIag_M5y z^crH)D>V%U9B_Ghj(SyorvDT69$-y0UA*|DZ+b$2&=YzWLPuIC(nKjX#0H2Wq6lI^ zvCxZHu@?jp8#Y7{5LAi^C@3}rD=63{3F#pu|MkB2z2Eo0&vWm6HZwarB|AGad(N5P zIWtSFr?h?EWOJd*X?Rid52(t44*Ia2kc+U#>XP#y$;7%5^$VG7P}(z7l(kb8^vPTy z$b-HKf<#=5K6YfQrrWEq8^(pH*EI_*^~!CMYuuP3jxeZnCN!;thx-UqtY<($`v$Zp zqJ`}iUj^IX@nru6UyKfDjVNAMHc zF4`{27EK|G1V07)M85?4MdhLcqC=uV#~S1gpsDWxz5x%=2@GII0$*U406PvaX3;2D zigXcRzRSkhR%VKXhJE}R)S&5JrT^o2#+-$ zYXnXZ*@o*+Qi9fB6Fo=Y6xE4(Mb||s)Mm&r6is+H##5rxqB2GqgF^KH zOehoZVG3GiJhVD7z|uD8P^c|o!6lIpxfhq`+K0UZQ+b^G8i6$#ZLW(DiU1Ic=Hcd} zNX|T5|M6W5uyFy%Z{)aO$B+xUh8CluFiJk<=-xn_Aw-1m4ZdwUT;Ca&7X+vHJH3x0 zLkPTD)Y=$s^NKXaEP@=NGxT)Y8+{hKQNtfOV#E}GBa^NXA=*X>_Qs55Xqu*__)5{Q zsQ2UNMGTS+o(L?(*>r2Mt#}!lBc@So@MN&`bBpLWUibE0N`SbPkV4gj>XOTh2d24f z{DK=NnE3rN#9(z1k>Z~awr{C}iQoJE#?M|)dlofudo^m7*qR(IUMgN&`^yjoO#Ehw zT{k8Xw=-SEiB^!wp8)#paia`ST?4lm+)KMbrKk(;qi=AZ)jRC~3aTT>6@{R6F8s3I zV131=Uc^GvZ(CLAB$X}rCU~+yN-Pt9H5Z{j)ij)@XQR@z$Okx_IUWgn#aA3l$f!Nt zrO!qdrcKuNk8<`IrLAXH&&UltH-U}Rr5#)q2w@x!YrLayH4VUJi#D)}9*N$8t?(Ha zye7xYI$k3he$hC0TalfC=q>sOjsWw$$d593X8s-=bP}XccjU_1hrKvbwm_w}k9A;qv(ru}*Y;woa8^uBs*<4uG83siO z<5u_T!hD^cVLM4kgo|X9ag0rXnn?tx6`*jP zEH?g+;8ZCSw~OvC(RO2@0we^Gj65p3pk-kIC9*M z$c2(v$soc6dJ?=qazL<15-&-V_!*NKbiyDw)yMfWrI08!wv z#xRHlhAHiEYCAk4wn);&-1N7MujYm+LE?4LC&y!q6WStJI91`eV#AcA4KGCfH&3sw zGp)(GycGfVOK=a9h|{S7OUgfX*~~aLsVjF@>i!X|W)30dw{+%^I*AUPA)EdgK%ypw!@W%*~Y>jF$EJV8jH}Ddc0=z+umKxj!T{tyd(h>ZYXdr${#^4eG$YmSv z^lx9R!yzz~!ZuJO@WD?fzF)H!rg;ZNG$~c8Ax#%7Up9|!7MS98ih7#+Y^8&iPU36J z5UoD!W>D(V;bbBm25SIW@&|}CeuMd_&7dj-+sR%B z)Y$iAq!5i=rm;hG%ePRdEesXT5U!aKB21Kq36rD=QjTy;@V25Cevh7l*$Bw8Buzth+F%Ssfw)eMaO3MKH=vc;zhUaR zMp7xtmJGwx$`%S1{{~c8&fKT14SdDc>@rD!I8UNYvnMPgl@f#?GI|KEhgAAOBmgtCVIC zT7^AQkNg_FEcCF+67+@uFBk<{0^>l)EmTu94~eiUh&y7;chGzA$6N2&_!TtWwQ+n2 zdV!gPUY*B@fb%8`c+OFlkJEVd+Iswy#tkye=~Dq)hku}tcE03om;KQbjNj6>MqkAR z$zo6)n96rs=1lQ^Lc=D`zjny>$PUck&a0YXg?*s6O}1BdSaw8qRCY{e9mwPpQ2OXh z|0v8U*>Uuzigs@VSek$U={N*9RK0a!+ByVCT$+hN0`i6~tTB3@_BCY7pMsl6fUd5b z^AR~Yca|p-eDk{qqY)Ep$bt{&V#T^*-+A3p8>}6uzh#Yf4>;dt zLnIAo_HsM9gM6Air+Cm2ZO*}6p2z`LCO9~>IojME;Ud2}@l)fd&=|c6 zVnK0Cg3d{c5b_6hB)m3W#PTNQN?WCOrGc@5IByx19W9@YU`QOGapw!(x`+|nZkLyg z9~^&5zhn%39z};y7B84=v;s56a2OO=?(c8pZ zhDP&|yz2ODy>{N!p&LWjhIS0q4P76)Fmzg8Bd?ZU9;%X`m7kZN8>*F8$_s}owrX=UOt5?xUyw&$0;?Z6bjPBmpJv=oH- zdJ26WKE7s2@H``h1XYAKQP^VFybWN^UiOIRg|Sq$xm)vom~1qgrl^5YO^%{oJ1v!l zby2)EiS)R4`IF9L{}1Cr)Ind zg#ojY=YdW~uTyO1nWK-$GZY&YhvXl$H!F_GZ)1hXpqr+~+j;&$NW`Da58B&##shaS zg^FeH@GMc}Ddd!pJe>askAVFkPYXnVf;pQD zIZS8fOFDo7t#32|kHW{CQ1~rAf^B*Ol!Q0uoCf{yO8o{fIblV>&5rv|0KuTmdm8fsiK0 z7b*k^6OP0-U?ug1c*jSfE}b;zgb4$J@1-G2eXIed={2l!*U;IzQii3$w^J|SPn z9nr0G9>*1~khV-FOJ@qpq?*DY;V`%}*$$c}8zy_`Hz&Jw>L=U4t;ulVa@w`Y;X)gx zLc<-AuOoyd*y0I-^R3Cj$$`mNaETX_>qPe_3x!Q^{tuInCgY{+L=PuPjIqhq$p-3s z+7f84=JVqYXm^AI`aEu{NDa>8CMI?9>bZQGlil5PHKv!Vi}!O{9@G+We8q*C1uiQCzpyu7;9?cKMH1MZGy249|M+< z{oL4~4RGOkLXuFf!Na|Ao{vJ{c{tVrD;W8?FPvmnrx`09<`ykjBAl+%EWB7}ubfM_ zQ({B`LiWU-h1lsX%8W2KC1tO#^%CLNi3?gK6AGHPvz3yEi&XB>?4u*_76i1pvr?lt zSV;#a$_AmC(t^-pJ|D%zl}z|5t;re_HChSqnTfL?)OuOZDq0Y2?PCz4M9&CQ)=N1! zAEl4-j&Lr$Rfxd*z-2kOSU4?RsUuP`^+eyvfw&~0FLXKBD=J-pG-iv|9-D8Mx@NxJ z6th72)hI(4gW9F!LMLYxDO>TEwi}BMh3r>WC<~MrtXI^q_#wGSxp>W>*el8o8o0Dq zc~p|8ELSEGUpzRgOvdh(8j5}yW+Pra_(o>+9F>s4Y|1f_7XE1AD8mCZN}Sl0B6!1C z(R|cdQ6Ki4$jmOEVn>(Yi0r${Cubj!Pl`~83ejsNo4iLeRC*T9drnkZ(<$B>(SUxc zbfmW`1Mx4EYhd18A)<07U5Av($g`s5`P#It5$7o~@QsLvo+(F_W{4NcKI}=6MB|#6 zF`<^95$Ph%ig>tlqF2{mT?_Ep&0bq;ZTVbzUum!Wt~8=n!uLHRD!Iu*pA$_ewWrwS z5+!kJ5%#6>0l7kyg?y+SQra-jifov0ofpYK7P3z%hUeWS7nZa(9dgV$FomyDXy(vF$h8X?l4O#M^_PpvVk5FMp& zWHVtb_Y?eN2~$5cmQQIyB@>jXuqhUrHWfETpVB9+otiy0AC)mB!{(b(4ArWJKr!^f+)eL^vLq{5wUo1~nqsuI)Of7r{wbO$LE}=_z=C5_3x!PV zWyAj6sueq~iT_=w*;-a#>BbSOg!C>)FiL3xtp zDF{Xb+|TCiV&=`Mm3#6j&qSew8=^dMh0iiU)6{3`p&S`#K(|lXP28GFg0E*1_)5c+ zX7~vQr$PypOnrhTWOT%j`cU)|e!l5i&&Z(!3PUY7O!+=VVCdfdOvO%pAR}!%rXGoQ zP_BvwrXEk-5Xs=O;wgdB6uvJJ%q&)d5v3Arh>WM*vYoDTcEMxDPI{VwD?vRqxW>vZ zLwLxpY(bD#JgpS6HbSVP9RiR*^^LfZZpN8QZ=RY*e@ed2EQRr+2?|LCRAlijDI)d< z^nqcjLTKO{Hs=OmBG4FY$)B|fmtUnaXVn9q97Et`!g@q6RU^+;HGnCVLA!6k{smqU z`iQ?2O*gAR7ronVMn%Xsw=LoM0T5c&Ekhv;%>g(k!-0LAbmn6z88`whP8&Qc&Z0jR z?*IlIcNhcbz=+tmkt3{ITB=&A%9T)r8X6g@HoBlU zKrIoZ+HbwN{yGkQyzW z#6aoJN>#A~3Xy_)X3<|?XyJbJ4$VJx)wBGy4%CM?pWduE(5d>&zTFVzrt!)R>aU-n zn(-^k?B#eI=BK|i5D_2U+$Aa%4XSpEhE$8CZ&YtpA64&F?^GXD!>UiJM>k)q9;&{n z9;kk(x^C_k{Z@Tf{Zi@m{6v2mhYa^=e-UV1t>tB*Q)E-<3yM;VJ~|Ll&zt&`rKiGN zkB0)Hcrl6rlw9>iKN-82|Jo!Q@d{PPBdMREA6+}bvqjsYb2m{tAJ1F0#uE3sKr$Qv}ar@|)BTUQ0b7HI=`Z=QL-zY_)o|Y#DmDOmMX< zAO@wu4@Bf{y0L_ewL(Lt$*|puCTtV(Z|F|ui8D*kW@gtEcvqELiuMl@B1=ggm?-IUb z?$kSGDo4LmgfVfj-AV+13vM2N9HGgJA5#?A088fw>QUf>846?z$oko?XMEXenBv}7H zU&CC4tfLdaEfWH4T|t0t7dQg#pydf7q+&4vwlg4rZLYJcS@0KD2;e51o{rE&?8emv zdcZRkB5dtIgxjYczS2n~!Ww)c;Q0{&*OLgIAc(L%hP9^$;>}_r2*fe5(2NKsjMpj_ zRBM^D&BqXts)C!u1&M+&Fx|5fO$J`e+>n$)GF(?OASZs^T%o(9S~WiN+>em*i)>qF^45irPdaQ4%34tifJU(5Z1r%+>nqA~yURx-1zLNGOX`i&Sfw zRgyHOisggP=4P#0dPX1+=tgLHhl*_7Z2BxdFj%TY+B|v)@jCNEaC%+3gMf8Fa(OG- zVS}|U{FN^j$FqN4B#tu^9~&7LN#QUi9{Ol-76=m}N1^4B`ka-KMjSRrd?YopNov8l z!pMuth_vNwh@8gBvXbGlA_)+QiiZ3bZ}DYwTC8{^hlw$S)5OU&V~9Z#tV`2C=*%i5 zC>-e&7^&ZjTjFUwW80!{)FV#KQ_b-F>X%YvzC5LZ-aK&_KaHaa<;*-z=aE>P(eN!* z6Jei3pQ$$(Ct*x~L!=Y?AOEq23L;9Cl|lH0EAm4@7NiiI zFK~ol`+>3~KV!TM$KtTD=eK+#lBo9DP8G+4%bcXq^eC zf!cxbWkKPe@ofded|>XiE)vb=glWx0&cLyx9I3z7OlcakQ$zlLJz8~%3=>$F{I^6O z)^Ngbg3ZxGyBh-YHga1*yIGRoA!Td=+Ce+gjD48yF*V8<;E<^2QT^TtaqDfCH7}=8 z)E}D8m7!qG5UzI3_U%?%tqegBflfJrFC}as`~ueOg%jokxrR1v;lzjZXV4?oIT-Et z0dE;YL={fK$^v6>o-UnO5J8Ykm1=DTOkhRXPNz=Zryb%PPN36|P*(044aW-mupL43 zQ8tr)7}{3a*1zY!*I40LGjiq?3Y~6D*7sCv9T04Yd?w0_6fv5o>^K_;|M(U3G%Xb6 zW4M`iu0_NI1NeGPGR?FnR%}}oPvh$rq6=)S$^Y#S2q#=tIG7R}Jc-uJX(@BmT65`W z6-)IWS3!rRS_|Xgm+Q79?b-$FmjB1S6KUzNG@KVT3d{5VuQOUzR#B4Mrlo;6kIIX3 zfc{VZ7`m)N^MBU(5oy}e)#CruSb;MshW8Id|8wqUJQF=)-6XD35g;`8YLrOnkDTtR z)*6%SnR*G2+n4YDj^3B=+O#AyF^z3n4@GTj6_il?G2tGmy~Av`z*mPjfAc%IeNGLf z%p?aPKG|uWSP{&n?r}8^W~m%|ICL$xTFX%M)##S;pJVMbwN@k@XxyhQdU9Bwfmc0n zbQ@pftE1Lx*J{;m)5`GjPV=KO%WoL#k&bumNY#b&r!xM#{dEy&)ql7BzhPZOD{Q4u z7yaKYEXSQk*|O(NgtPt=3THV$goU^gx`~7t?y%(K_l+!uChFBh&h!j|J~~SLkB=42 zLk~v@PwS%-A)01AnmtDyLtOVBI6?F=l}i_vLh!W>x_1XF!43qt28H?A2DbW zGMsxH4FwR(R&84}UD8T$rFz5dpUyHV{zCohPh)Q&9E)o;+TdMU6RJ~NBY;f&`gAYo zj-gMesD>w0#_U}^`-AT3zQ1}x^-#-L+0QOo7Y8K~3`Bq1vsgHGu%Ep+C7o_S?;#h_ zZJWAmEJf2Cn%D4~;=0~$t-KXTry6qTtyly4MdzN?es?0{WQScunPHz&#FRj~=FA+M zc*~fSwMR3aIBf};9`Ph&%}KrAq&akBRcXlED@Z|7~ykRWY8K@zz?}l!n-@=+_;$n=hO%Hy~I#2jaHOxQH7= zFVym(j-~}`%AjJ=cJjZee{W?#-fhB2Hw3<);ZMS?}(QLy$R z8Tqf{;F6K^a3~xjLxvmmvoX<(4#$wes%He_Rrg7Z0R)-lOa7#Z6^{P zN2iKyR8!79q-y+1;+7dCICn3bZQ*EHokoT2j{47E(_d{67^_4Q#Kw}(Y+Jm82^*4I zCSz^oIFLs*;N$tW@;ez%sQNl&@Ne3*{~6QA8o>YCO1q5BC%4)kgAf>>{u7XuY+T;>?$s6i3nO6#74!_kf!U5W7KB1t`s}T&r8_!EEL5ZYXDpJIjVOS| z5sX#0FYl^Wjs*Z(Q z|8GA$=EJ=*X%^-W(QlhdYT+6_bHc*?QuP0GUtsP1PM}Nk0Ie2WfCLd`IjdV-+c`a) zB`f+I8(q&rI2datu(h?-TFWM4G~c++(UdH1dLE83#zitblLrR8$s)U_pXv{1p~ZG) zQT2!a%Dex{#5u4%z-}OfDbm00@AW@Yat`<_CBKvXx%5FcD%dK?0aRycAT!ND@9*>f z4ZWI0#tPsO!a{R&rVu1Bj&O(N)N$CtVmAncIG_*w!To{V>w?A!6NErcP>@6d`E~RN zjG_x*ZT@upZ#efLY%LK8y@&S(Zi8EgsXsdTx}XbKCaf2KmX3-{;S&Gcf$HoFszhzD zC5QR)HrUo{4}6z480C5fpL^l^>;}JKe=)srf&w*8+)N0wB`B;dEsuWMs(ZqYTx#zJ zs$rCl3M%NZ<^+!=yFe++|E0};=K=dT+R}M+jZ0RX4H)$;m06l3D-9YLymlE?w#Fb`FY!=T)1;Hglq_)y< zskxH#zjAMjOe6{f{3devc%M@1BlO!!P!dlYM^F~t)HPwZYf%|6`Usk*{>oeb_w!$Q zt9k|%5eOr#U9g4xY6#rJ-P3+rM&sA-Y?~q`1{+ z6!HKj#ZvQ8hytHQhEz5Rq{5m9(>X8K1w}l=7F%SR>4Pqt-*+Dhen^988h^;m5xi|8iqrr-sQNb1_gU^qnXN`~Dvs zGO^86?0|*=9ch^hjj()1HC|Yaqx^@T5oN}bUC#{B_tP&jS}pppSdDeyDx?Ah#NPmA zKI;9;S4wyUC4&{zznqB*!cgM~1iX&-FMnQ}@t3>*z;*m@ zj!gkma-fs3#)mSi0g3p>nG|~iSE`}dTX~_7*Ksh}5YHGxb)pKJ`^x zOJ=MLjTnpv2txoFz{E(r}v*8ut z4YjW?$KG81;c>&|H`ldRDA4hY3mp~C+mG}$AG~6pi`d=%2P-vvzlAz7G3hycA+M6S z!$~$Yd?CNm{k#z`0KN(z%rF(I>>ur33&rtPQ$N( zx@AxH&N`V>IMkH#?c-H_w_K<-UwV30e2yRJ+Q;AylRSZ+%Sl%8?6$TP3fKmkQ1J#; z@j12m(x*$jBrlgE*ijI8%GE)AAQm`8`2rawckG#;pDJ5D_4>j`6bgJ^x{R-tHM|{I z4YKnmU27@}Ah%V+`S_)=XY!$(D4HYkss#-kfB9`~8u* zEk*!KntP4=?Q{I>n-V_0n7nN-!ol&2j9=S&{bRzu!@rPi`HO#6%)Hi&++)jc?>oVu zussGDR7c)t)ZW&?oM;F4`0ghp9mRCiQ|ea(RPX&xkOw-xQ_R|9-40+8(KZNveVo76 zz{_5j22xHRxDs*miTA9qIZ*-BpbgJ~!IE1q0-Sx$z5LQVx!;mauaYAxHoZ<=R?#r9Zm0eJ_vy*Aq#xF1SGW&m@O&CSZOkNleB91V zlMa{YPiy*|=sf%Omz9BgZ;!5?^Yr#u8f$O!$CJXV@^5ANADh1KJ80DW@QlUUKJn6l zrxf=ucepEgmAP)aWOyBGhxE%%2bFyE?7AI_-`9D*->!9jYEeFZx$N%L$1lt7seTGS z-Ba^~??3BAmE5P*I3TS`8oL7uOWV#-(sR*^=W|XF;`n(wy;WHECXFUX6vE-x%#_vQ zeKD?RR;SGX*x%6cqAs0nvil%jog0wgT2kmSH!>keR+Z3KSM*^08QMCJbEzq0ui&6I zNwJ2Ny;ANaZSTIyK^96a*NAX$Ah}PE1cG&^iwRHDv!@3j+dAF9}nZ|l+JpwN_gT# zuZ4+iXJ7i(IhL;@E=+&Z^K{c4VFiD;-jDCLH=g0AzRlgaPu7YnSUQkpM zbm#!ayo}4K3YCb22i#1*JE=XNue6w3*?wr1564F(;E40%`9z_y{xd3Xz_%#Q(^zE`LRgP-<`9F$$5j}vg zs>&zF`KP2uoiGVK?;q@va6hYg{z)sq+ykku zG{-i;N93;`K~csFi?<39B$PMXVAP3+NYeV)?BCN;{Wfh=qpc0^MQzCE4-R*FQrux-$xQZc!Nx=-f;N|(QH`}+jSzRm5q9=wiMWmL$0=&t?Ku3fyA&zh)!_O|a1 zG>S4Ix8PVCic?qGS@@azN_sDP(?nZTcar%VX4mwm^;yl{Nnl&^Q+TV1QYOi4G7m+H zIGyh67=6tj_x4%NfWyvj%1_gYSyni1!l5KBOSb$Astp3(Sa|B*v=UDhaM`{z=0s>`30Q3DVJTcYpxj;GO1?=Ne^Vo8V491<58IJO~3yU4ht zFTjZQ1UT-mKmpAb*Ph#M28Tx1tj+XV_%pZdde^MLRO+I4x^0^%InisfJoG6Ki*j!o zr~gTNa7RP(!x8q0B1F~ES?xo{ndq~ zT$B@m3JBkpx3|Ik?pQ5KAE5>1TzL!CP+Mz5P*z%l(cg{k)&6{Ezy&2bIf#LDfXna7 zA0blUc~}Skd`!%z`$h?^M<0)0Ipei33A4GmxNQEhM(;5>W&D0;5el)+yGBt`-2SDF zucPCQWUo{7@Ro?qylMURnjvk@SB?91Pkw(lXY2A=E&FySb8k+T$R06I%k!7{;#6z4 zy<6ZbJ9@um-1F1qvp0saj{8%iYL(2lzD027=a(Zo`*%=IRU*1Jt3S2(Z>GIBnv8zo zdv(*NEuVH)y2>nfJY0}f=AL!A*f4+d)}>tl7rMPLdAn7?&gRCQr*Qzq7eMg^@(a0P5c~3* zf-{Mx?`IUb#}=MhUl?+%aKR{e8*Te)f_j=w`{Gy(Xr$u(-1cM?q0d9G(W2(-+xzHjP0L`fj)_*Nl6SVP4sZOnR&k9 zIX9hs{ctm`&Tn5m_}pyUxs;G=E7KcRDQ^Y`+Z3#VBh=ejQ}pWbuO zSGRn=$)Wnha)*QE;Tn{Dc3A}ep#2sd>n#WNR+)LqoxH4RKJpUomcwRYhxT$04woF7 znNpgcb2ND2QTLt&o;?dv@$l!)GM78i^69pNpQ)Z2wh{!o;KwnfhHV+VEmo;r;qeXU zKj&^MJQntaS{!y9)xN+;cECHCb$;l0rm5|X0NMp>cKEFm7mvHhz;W;45(<~qSUOFV z0QPpDM2;Y8HEd<=RENOex3VKXd56tBO0H%AJeq`xn%2KXr{A-rzh}X4Ixxz^^?DvM zJx-ffdg_zsq4&BrZ&TKyXc?&Z3KX~E`Oqo++|%cvqr*Rr`0E~hk7o^CIt>k;{%&2N zI$kl@UeWTM`Xbh@TYgaLS?T#5VN_mW=>#5FocZo~MzIC(4^*DJXqLKO55M|wPidu5 zP6e*&^iOMAe`&SJtx9rS)sK=Y-yyImB*3NCWFzP_+SaUn-ftHebc`0sJ5Z)U|%|6Oe>C>57P0d zGsFQi+6I5^ZVeDvXV4+gtIb8FS6#lNSju}yP3NQ92~;mY^=N~CxSq$CTL`#C@Zwy= z)iWk3!`!Ro+LXk?@}XT1PDuT#cYS!` z>W8@NZ&x3BcjD^n=~tC+^`6_XAa=w_Ge_@w?r__wZTup?s!c4m?Tnu`$C*Lf!u5in z8}bXL%5$6W`Zm4ITq9e@!v(-=1Q`_&jH;t%3qaK{@nbb@Fq*B4hxpN^Grz;D?9p!T z%$r}ByAf?X^lfH(+-#%WbRa^-XJ|H0>Ma-9JqoM;$*DJAWV7u={pBAvH3^%Goq`wI z8fQ#U+xi=xJZvD-Z(sjROCnO@PqO0QH7v9+j?3OeMnLnuY`ZuOnWjr;&%AWfruOvP z&{NZE3$1Bh?E009nwDo5SsZIhY-&mvY$|!uwC`8bF5Bk)Ud=^|ZZDq+r#2@)X+GW3 zTvgUw{jT}U%sXc%n=dT7bLz6uo?FcA&%=>X1}_8#NV?9t&P?Zq*hl4aoyAVM8G6Uf zxEpF>^bo+6>l#}o^gJ2P5+ zZ(K;^Fg{(LHyL%TKIooHhTcvNWBY-7?zJs1XWmaYo%ut%6@hUH@3?PjMzbCZ+p;>W z58Xx>yN^C)(+YfGgWEpVj0wWcLJu`}%~?Z>0mxxEjF5%Y9TU0T-K zGUNTDRofm`h3j?94fVP4(C22$dV{E=Hnri~9<`)CnraCt9DT4n_tDOXdHx*D6^mVb z&X}1*xpcL(?ltH>e8p_@w$3H3wC;CzWAg6%pSgc3!uhnptm&s*#PO|UjaiA_-OkaS z-81!)dRsD2G3s_l+t`D8?&7Z+k}Xn$FHK6Lb8$ zdByF$;SIexzvlWIw{N*J7yiUT-=x#W-F=;Q$KENUJiH%&4Z6EOXzs@sPY#;S?9l9e zajI+K#u(=tPNlu>38xr`&(dt?JPQ+sM)yX_U1-G|hM1%&t()6b*2_KcczZPR)|GDJ z5*_3CTAhmLdUu~EFkYs%yWG6zaFb!+-Op%cI($JGqWis-PO&HHKb2vGjQb3q z0D^#7KN^McxtpJ{VCjKJcf53R={nPQ19d+&(KrILs2|JGaen^F^$a)a>SNyo+RFM4 z_q(06h8D)|0K$l|$m@Qg=iQJgHstftdEU#Pi=Pz{!1TUn&SNjr?O%1+Y3F;iBgtUP zhtO<$^NHThq~7PcNw4P}eB9-AW68*k=ZmIc{X6I6(c<>BRbs*z+(ALo;E$2c=MP@G zB+yjv{ns9N>T~1%+Qse9Z*{f2k0^9OJ{dJG934U<-uleZm7nT;sz1wc(UW7hVjjL{ z+M2$O6Nm0RbNAtu`&Ya@_uE@E7|=$pbk|2bP0A&v=f)n0soNI@`(Yv+rM!9qS` zDW9>9&xkSs=T^?Y#%IK@nE#N^c+6+quz^>jf)oyLiqe}CrMD?c@5)>Ds}Jmgnr`YTJq*Q z_lWc*@J1cPHgv;DY{R=;;(mO?6Joibuh{6EWYC7NAmDjuY->r@C$5l}P^My5;*zXN-fNk^2f!)M*9*=*y_&eZ*=Idqfw{#a^%++h{4J4yT1A4|)z zqtz{P>cs8DAWp{rdC>nS+@A5$mZ94pOK*dz8YZe2!UO_-9kRy%2jKDqv-Qw*0P@#U z?x3M=@WL2;=)jVdNTzQHgrrl89Nmd5bFkb1i(&3-(-Wja*#c_Oep42oU!Ta(c&3Ml z7bG1JAfNM5LIx(#{Xz#FpsGHDZy#je?#hp=&3?Jc53}TKhR#}7o zPkL0+u_LBa71mep7e?bYx|L5xNZq*_jd3WmRzGFSGG*CDS?PV*2*RNAxw7%6K0od3 zxfmNSrl?-S+^v4;0S{5|w|3IA<4Xe|(xj=5+9T1emp>qEbl# zm$ESPhC_AQ>~(_TN|{P+e=Jhdj+&EFAK1B-l1ziw;C~0y^-DJ)gVG$oHMB1h0Se0K zV*XG&)1ZhoOr><`&;L%{0KPlsFUAmV;H_yN zf9Pr5puS`8=NJD($j3@%9x#oXu{TTOZn~9@q2M#nM-Q}5M~nkma~{{;2xP7Yj{8E) zI(?DTvf6wfAnLGYNW8Zr;GzxoyYj0BltnWTP;B+gHKmRM^T$EQN`M(RJc(>Z4;p=t zgh=%^*?%#&rO0PZ&~6=*)5DBYB^ozeyn~wBX!%ALb(jxA*caIinKnhI_q=cwg6W97 zEp;ikO?-1)x5cy49^m+x?uZorv{#YgtsuwSlHH;eE*T>ksjuzAEy~-6BAZ~5l!f!L34jlO?qg+%DF0BLAmg_To zd>DB1QKpZ-8lH}6M=eHE_#gzyYC6-p9DZVuuEj-u#-pk9y4z()JI+>%#hPVPA=>v4 z-CkI!qmDtb-hq+T1p(~6N&X(?nBhTvf1|4&;9*`@zitd7iSTFzk??M9%i;WK>6o~D z=QTyWe6L+yd`Mk=hT1g4mtU&PNtGe$M||f}ecD_3))Hp^-oT7IGGy!$8wR5KvB zL}&B-2%+k3*1m#kBk(FYMxx*MoRq50tDYLJpG}uczuL~r3-G*%{J>FJ)5v(WTTSt; zJkJExrTff5)5TRE5UCbVQv3GgaW>l2l%c^pPT<}UUZ_z@%^vhV_w~V_L#2)DmX2>FNbpPd#J2>-v-0&Nl~EOdavfsp0sw$S!XKk z3Uk&+642gZ#>BBrfdE~lZxtS>tC`krI86C9;-c`x#_#qyqNKhP|e1VM_wb* zNG>?B8-Lu8m*mrZP(SSZl!Xn4cJGr>6z>M=QN4m>fG-s~RO>*SAUPM|?i`9M{m!aMA@jal|M^6vHht1iti?r{+ zp0Li~ntQ9m?9YvD%06N}t>xGguShsC0MgC?QQqN*0_aVf3NB^h}PJ0 z{s5a8{_N!%vy`#xIcSe=)ban1qO%NW>g~huS+HWj=!VgaBc&PLFuHMsf|Q^L*kh!0 zDj?k{jew}5L6B~c{|KcFP*gBq-cQe`^Yxtb`#tx4T`-;xQCi1xY*pdn4{f$U1%(B* z9RNkk$-=v29f;yj2b+k5_h$6~Pbk=W%R1k|D*D{X}s?O z%nTBulvZ(II`A(Qgt4AeOqhz58B@YvV{BCl1W1p+u^I^g-73{7xiK7MxYHrDmuqw-`TD5xy<6ZKhv;od0)+UF0 z#qj>@F(v?vSgV!16H}92n9*c4*eIrYV`r5=AyT%@L1hFZaJB1wVnyn-0@WEwI0hOf z7f&JcH!gZu)pOjy0B4es!(YErM6_a0?6M-e@2}e!JWZSpAxd6Kz~LHa{d%WdghJ}EfxZyU3d>q2!jL9{E zjT``zq5ytcd=pXB!-gXyL&f#9k&Ud<; z(9B3qmku$j>(YJaA|+SKjNSWa%I=2|cYyZF=L?R6!NU;fO@3|C11;e1J>c{QFzpup znx*hcX$x$Y!j&opkm+p5MuJMJo0#7^oCc2_D25z>(rd#Rnk%={90dWaI3ZMHTjV=4 zV(G%3(o1Di+0z;jzWlOc`fDT@11>5SxOqR}Bt2L_?ij+g!H>VIqwCWSGx7{_m@2kr z#SAD(^Wy-B9Sx6@mIm=HnigYyHQCNiqw=scK;q@{83SfZOXDGSONoTA7cjFJ3LsTp z5<{kDd@kpvjT4b(Gw^@>-X=>tz+XZpmac_GInrjinfV^Dv=)UYi_;_aYJ{5OaCAw7 zig~SZ&ZgX5`!YF7T5|t1koI+^ItZl~PErWtqbLO;(*R!DLYo4hr)N*T`gYc81kvro z>AU8d1}xj6Zyf_S=YcTngnk_ApqcbUM<)jrV+{c~{KuRaIEZdrz@_YH2U{Kz+@{}} z1NxbO&7>{nfNNI!uq4FJuq*o0w~ zCl18{Tl!;u2$6y6d^Dt4+8|ah1aKb*`N_a3HrtQP{y=s~4$v2N-Q2sW?#76Cz!=Jp z>4W>Eypm&0tvx!Pf5i3d^*&7kbG4O$M{S5FA?vaQuY3or@nF8A2L~r}av`p&t=ZObT?#;Tn5MMOiKb--RNP&IEQkUYNRqNhZ+YF$>{(f;M( z`YL;Py}x~#KTu7x>DDVI z#CRt@Tj9qH6#9Lqo2JC$sD{1@fHaI+mTm*h=Fggt5HV+*nvt4R)w&1*rhEcDqK>@*aGtzWvi@G=$&HCjU`tCEOJBu@xs}}WF zm4e71rkCO~!$=#Sh?iLw(@Q|Ha~DDi(FB?5wOlhcpR`Ou#g%+|t+GVot8C#J{7 zY`o;qkKghG^$&lAFUCTswi|-`njISB3VnSZM~d^3G=>1?Xh7GpmICK4iTmBhs+bT= zX-)y1;svOHbO=(8G^g43`$+Fz{aM1S)TGvV;L4~f4!t7xt;4?HJA)$iL zg{ISkQtdM2eGZxn6^G=+3#bnh`#ykAg7JMHY^bV4WqA6|<93jAETn^?ut#$E`7fWiZ zZ`z%VE`IJ_FwiU110{jbaXQ(X?+dpQ z*i}fhVao**St~Nn{UUf8L_6;AEX%HnJP(QZ@cM0A62LLdpjQi!xSQeOSlwh$z7pIo zoTFqVw8ZNXQ#t~k*S|_k!8qZvW%)Ki6A$Tmm_x9-6R91WY82pWt8+REcu&f?t;Yvw zo}%nGb4_V18FTD`-OC3VX2elPU%UYTpt8L#SRh)rKq?I*SY^rn$-?`yO$bKqx6i`*DJqHZbe7*> zuLZEp?7|GLVhDS(m|Qy&7AN$fSpKEZ5I98r*%pb0-f9^+XKQl65^Ob@B-jC z5L!<+q=rN3h{(4NkEDiq0$R&5IDk8lgqWZUr{oi1+yF!!5)^@s3)XwrJKzZYfnh>l z{bdZ|JCBjUx?T*FlR`moKMIa?lpGyNMT;I;v{G6~oK93;3WM^I7zM(2svJcH*kbP0 zRzO)bU>`EDE=w-11CTBj$CG0y$xIFc(y41G7qKy_u++V6{3}H8&pG6XqM0mp{{Rs%;3D>VR z&K|re#-#0~{`zjCw^aBby%bZtEf4j|E-=wDgx%sXFJ4*#@G+`H{8}l*$F>L|++RCP z$M`M9RoM$l^ey)-+Gm_s7!P)8Jwl()f*h%rlJT9Wl#8oMJlrspEF0ukMGrz?P{x&T}y3PW3=a0r7yOcyl2%@ z5Q$GLy(PUcKm&lg96mluR42up7Hvso*mzw%;Hsz%fNkeOAEq*gf{i6lzrrZk(_0{t zHP1tJV*DK_mXK~m)~U0jMXU1<*8)({0lhtT31|L7dB{gK1heN)BiSessmr^1$SA8Uv>CA8VndjQE{4RIB*@Lv4$c8`dsuz3%Zde`e$4$QBcF}9H#efPUQo_DhhLVBS zrScimqpCj50#LPVlcrY7ca}kTdWUAZ;&0M@%8#SI3=AV!C*GoI4r@+i2Xz70>#`c& zSzhO8hJ@$ZeiAUfv?x(nQA>mOcK>45Mi(PsG5HgGo{)avDW2Y8^+g`W=WXkAXjW~& z{PVJCm1B28K=Gi(Qis$>X3G_)l0a|J177)8u}kQ&jeMkZ& z{!N{0NB#YUW;KWL1LwCjukxMJnL2NaN_PWCY@=j10opA<_5*DzHsoO(0I-8eMhGBS z5cre}sEC58@kl^O6o@2w;iN8+97dpRy0m{2fi76TCD02AqBG~x@8bppNpAIrC>t(+ zw`daNRUZSt4LBXNqlA6A)DU&f;JWiM9*GA5k$>m~djH!Idw>N0$$7OPaG?CQ+Vv(K z{@Z?LVvZ`FL;Q^<{NU(S9;uhE zs09I82Ozj>RwbM_NEdUHIjPJ%z~Kuz80q^4G@f$DH(Ce#QlU@o2y_f^6RL0|BxQ0& z=fD1?%0g!QLM8;)ZtfMff@{POq%2$V@^1|G8zkmG2F4<7*XkN&Ht$Y+}pJn>B-yc_)xBlM3=1)hYZ5P|yx4ZmIJ;{1MX6sO_Wz z+}g6#Nc@+VfSY0QD;o8BXD=J|fTqGdaD=nvlgtdv*xbxWmzPL>m9Frs{0os7`CPlu|Y+Dp3-o!mi1B6ymHjN{a&d6DPVUh=+A zXW``@Qm7=FLp~cm1d!r$_r94)yPYUk)r+VZ?FN*)G)A!`$<8h;@3I8+3gJkk*OV%E zr;)0=Rr9!l=M>tRxz=Ha(3r>?MRc6>X@lN}cs2&$KqZYcIvm`$Hg z`zfg4(bcB~}UMlvw!}wjKW5i_*&D?!-lkDOUk_Ik%`A@+I1s{24 z6_Q}Bud-)B;my9xMO71l+QZ77`le2sS)C)bGPVVgd)66kErz%vM^kol=|AML=K8Xk zliP;cXtch# zW8v4x{Cxxc<=2bk_9&e8?wz|wHD3d;6OT{#oQR|;P>J|+otOv?=hyk-9=_iOv#7tc70EkeB+ zV9Q#)^Z0B}X>@wqu^4Ro-S+S4ik^fh(xrV6ey#5Q{55Hd2ghQ6N?)CnQzz5>r3a0n ze_y`xa+o{3cqa7V<3;m+=#RO-7)Jdn?a!}%L;CPNKOmc*0_|>G`0HeOmUMs0iVgqo zdPVB4_UYpX$NxTEdce@3KL6_1?)`F|IG`%A;!hU;Uq?A>^DX`}u?`MM@qgE#U$CSV zy3qmj`BtYNOT^NES+d@V0hagIiW7JK&6q=MKlq+8l73~xVml(ybVQ`zqd!KI6htIe z1Kl{+c zA(gPVzpL5P+7Ou&itM9a&au`=mcqG_tyume1QOOd@7H~;$YC!G&KEVRdnX*WK?p$Tgk*&xoGj%Ln4LbOzJNZZ8GKq)pO@pcG+5L=knebIRamTMn7Y{JS^Vs^Z`Foo!ln!!UX&0DDjT9*Zvx+eU16wnyYvA8Z4Z(9GWnd$)PE zN!JRC6}ZX4mJ^-Nx`@T9#YrJNA_0zsF`9tp^DP8}R|LRq9tTkFA#4iusUYRcBF=tC zp5Eg89=7zWQ3!$Cyg8oN0Kxh5mbWhg8|<(lkc_`1;e{tv2w*+UcH^J+ab?r~&Y5v2 zd1rTh!Rm_;*y%Lq>Z5XwhqPIB__h-9c6tn^KqQ(gE6r~*CpwhuhSMK2tu;y^3L%W^ z$k9a14q|FT8xWQB`kJE(7rAfjF@m_6FM;{gmtTVqd>B%u|HT9vUyr^eCQhIDDW+<; zCkEH1J5e&AuayqvZ4uYH`Ix@+^fhPVBh-Ih;$Rw;KCFDg9xm7G&s>YRTKg(Kz0OVz z0E(l_dL^GSI8zFsfGer-dea}6uxBkg z+H?tmHZ$InL-ux31E_0M=61r0U}vO^JgTv;T}8$)sWGZ;PkPaMysWiGnlEXdJSx9C z78g0E6?U1!LYlC1v(X`deEE6(FpqzM{01S} zb$(2ADZEbp64fflZ>~8~cCJX{0VKBH-H;ch8v>7s%V#E=dzb8yc~DNY`M6F$nGh>I z5@#XC-7MVEAS{LZ3AeRDOo|Nm@~P7G6fx*xf|5gu{q}%(gZgW|l&b`1nW6LJQTdMXH{Mwe6lu5+fwY;QWL$fhQGZ|ACLr6!bbE?>;Iz7GD+ z*w8)ozR-JP)hnq5+wb>OEmKR%-*c#irFK%`m&AgOkB>ENB={g<6&ljE>{2s2uYLsDLnmq^mFg zlB%4aZB6~TK=)Vd9@yl4k~Ox(JM&L-oj7U?wQyMGt@qlzPV$Lr|Nyd;CI+-M|t4; z!&tI@rf0uC!^1i{$!Bz@I|ffPY=nfOcu&)zAoTg$la48cTS9R!16i0!HKLbO^f?(_ zXqL@DpBiJj((Z44BO4ns3;4|989rn{@ruX#PnD&jVa^jrX^(}!C^7qG()frm;xl1+ z!fM;fziF0rL?Lz3ic$m0))V>}{N@DQ3nF|!N$<#*1Db&b+uBny&pn5?Bt$Pf*GHQ4 zL9^(E#W^iYFu%(sIX}LWTh{R`vHMMv426G{$1$zZ?h>`Xr@7Efrf=-TOwH-u`{+CN;?rN3t3^|=P$@k(p~W-x_`b@{WnvgY z#}mWB0u%57r_bY=_TvJhb^p*r_q`_CrSO!eWS54XnLBy&4`^Y)5y53DodAgzc4CP_aKYa zP56w#Jd?>ngmXSO8yO?*i9yrAcdlYBALZQ9FO0Dlr2$Atf}*g>wEl4>VH9^kuR`4E zgECH^P$I0Do@06;%97=J zkzq93Qop0GJ1~HTWh4tY+m~d{Kn>&baZLR&0nz4xVXuXMg;^44L3k1~&=tP?W^c&} z3ecpUBj6E$AH`}K_8V%K3Z!r6vNlt!Fs`|*D~SNs0|7iub+_hX@qgidm9(pf5E}ys zwAru*`c@^;t{iXjb3POBMG&B@L8=wJP9IHf<#X@&< z?|*eIp(O)7(;FP;lz^V}NM2yC4^*IyBqGtP1#`qhiw|xA z+O=qPg1a#URa#2yGmMiet&Tk5xkheE{KtNvMm+`od@l0jV#Ps;op6z@`d9LS(bj#L!-1+@D7{ua_q1-@% zlEIJkFJeDTKm!b*BzHp~-x5ltkye-Qt1(v82d44Pj37T=CVUTU(*!Ue;jy4FEE9$J z-qje`!F$Vr+KpL2?98u`G`h1;%13-8GhUc7WUkLl>53NbgV+P#Ss0RK2Hw{LfnHW7 zOW+cI=_ejZttJ@pCmv?)NVNEqkdY^4#ReR-db7`KBb9xpi#d6l({}D3|_9 zj$AhHo@DyTG^L+yp%-&5^_e0a5)rV4j$Koxob}e z;g2e2=+3m)V&g+@J}R7;efubW#o41ecC@7ft&_I6BAALq;V+Ti%wc;AaW znq%*>9LlV_90n~K%G7Y20s(a-wduRaqIxzrgGfGY_*zy;Qx57A=-t(FyQ0DPceS^! z6cvcQzjg2OrTH{4-fP0FQfFF^wU6+f>BACTEQ*egQ|_Y-nTZ_DqFCrwL1y;4VN9w=QyL95oml)KwxHcN8-oclMJQ$bg$Ad?R&^H15W9$6>H< z^%%tFN_jbqf`-22_4K0F*nbY)r`OCd%$_#9ix%>GdMuf)&pb7ZlmLti+2l*sD>0l$GO!;4We&X)mT z0tB1@TQ(2vxmdJc_8;VlhUoqV>To13WNy5=qVTESr?|OjdL?eMpTH^~Pz(jozc$Z=m@=QtL<*e8(l04F zB-&K#m2VC!=B>VD|0j{8_j(Cwx*-zc&>FHX_Q4lEbU)*$`Ym>QR=4JDG*Iy$K=c?x zaKRd^RbC)k<4#vhnqjKCPqz4YkVgGGI$RRiEHRBE6FS4S8s!7dTjlF}7gtkK%eVF} zq9X8oOM5#yDc{9)t!hcU&9F(ot!xa&iMu!s#LZP+3EF2rR|Edqi{EvxFs+?^`Iv3q zQgi+XVnJw9qpuB4b!92CgVAyU(FR>;q|1*s&qAZg6~OO-fy4KFjy9j1u9e zQ9t&%j#yE(i6y*FHVk+yR-y)>O@a<_`J@a>9eU9N%9o zJ5t~W#8?FH0t=LN>pveKfcq{0dFPBAcv0x?TV8=gTBeTdazFH?0u@Xn{#tV(3`>7mclGfGp{&v;qkG0snQ zb22dyi){Va?K7RL+ZQ(~-;(tKg4VD&E1K4q3=@uGsKJqiX`j{xaGiz;bDQ|ENU|9D z^{)!C?^hMTifBR^FFdSWVd_R#XPNDk{hKZ-8VWh`T}CuCwZ`SrSZDzlSTa$7MqO;C|~3_ zqd=@|;$2E%LSFs7kD)Vn7H4l@uZFm(v4B@y8ezw~IT5PsZ)gk)_oW-fyx(}ZY-A0Nu_s2(QUbgy><@;UN{dVbo9=807EJY&A zrP9WV*iRNQilx24!UYql;k_nVa{03}@`mIxzS1Lje>g|2_`d1w-K&Y8H>*w4?jLX- zSKA^2^J`vKO~H`5Pcl(4lKxyZ_f3<_?y70l!XKyRqizM(P5D*-Oub!)LR23ltCf$} zoJl->D&K=~zud0HSC#r*o95&WPDFZG!${NUw1_ z&VTD(y>9w~k4R4pfnVj)A}M^6Q*;wfXXOgsyhEcW3aNZ=X<65<)>7nS>A$;K=AYtZ zwm4dLVAg9p9bLA_DOfLr@M5jtIUIJ;r4-g31co_9p&TFmwT?hn$tI+dv{w+f=JCzi z56!%G7tfVdh51IaK--4hI1_>d1g1Ub`lfGWAPpd{5}AGYUroJvO+0>ZBRZ$!!I72I z0E0`FOYJ1%>~?!5BdZV{%~_=t%*0#dH-}ioD56f|Z7qHdPi*h3WGkHPZ;Iq{MzlGF zYgAvS?Qy}VRQU91;e1DHB_#Yr+rKv|VE%InpVs@bbZi$s-zW~P4vh{&638=kgVL&b zCdD^9L08{!6s~@83c9-Rxjer{6mB?~qqk7oPFwW4vnZ&}LD{R_0eEH|fR&PFFC|0g zxe6dp`(R2E1^7t^=IhyI$h7$2Iu4oO{NaN>h6cX-l!HE{7MSvI9#*Q6uLuUg8JZwi zGW}pL>L6f(WV-n`EyIy-F6I)v{bH>?m7N6UN2>zoF7Q~1h|S(BP38UH6JJR3&euy4 zUl=xBWj*>(9@Q^y|L${3jaAl*+<`j7Xm9=LSF6Q)7>7Aa|UwUkwH zEx__J>83<8>=);~KYSX}z262XU7y>9vPwV%%I+u5MZKa_>s0>U^ehk6L9PYj^e_azUxfRBpD;F zjKgVV#(=FMF(v*m;mOypf#cHztCa^i&9lu`;zmrBjeJdT+N81IR%vMs(vW0p2#KFm zc%)O0U$fD5l99+*MCg)Q1R53-1ag{#>fxC;0Eza%^D$A^tPjIEGnr$PkckHM(;L2& zZimv~!Q<1#L+-+6;J(^()(t52p<GT*j$(k(~3i)y115V6@1TfPV({q7ia}6qkAW z5FD?vzXMuya^kaL{3@asAZ1V)d(fporM1_oEj$!9P-ZYA2h)uX^*61Zfo;Ur_pJ(p zFj|0UOgr<*Zv3DP+W2t?7;B3#lCY;yRM~{-j!*qjlXZB8tTwi@F2SaIa|hO zQ9d6Uh{IRlnt|w~ex??OK-ORVO#Ff$(XIox+v&i&0-&&(Iy^%NO$pap043fFJ{Dv+i^=}hnx0FLJ3xH{qjn&)IY268O}m|EhMbj{W0!fTfD^jr;z z#(Ufmp8OT29nuKU-dhjh`~)gI*=*h9-57)@<{QMb#ucL(AoGOj+g+P^KjoMoZhUXI zGDrS#V4@lxOy6mhIg8RLLCpgd*yBE~n&wYYD1F0ZMus4M%A|iVdqAesbU2U{1T!-X zWTfNM&LBDkaoUf{q%DK?+N1rAm0{}0W;Q@vctqUFp$*k{;hKnM_#@TW9ekZCo_6-0IMKv zN{zTy(BRT_C7VhrskK~?3It;4F^QwyFn@6}JexL}vFJ{L2VaK`jla}_wkn+JTvLKn zHSEc2=yW&*w3`1WYZeVV(;iu*;#W4Una%-AwpS|xYIHQLy1p^&@cyEy?)yUF+MOqUjg%v?Dx2&Vpy3}S^a#;8A5Q9t`+ z{X(g(;xhr=H|hpD&#pE=VsuL|mHio%FX0Z@gL(qZ9w^TBCs(9tyUR!XG{g?{Mp|=s zQVvjo;LmjvPyPdcI!{X9DI*Vk!Svqv;->yXd5`Y$XN{%FdqvCa-8J1Sa2Vs68x4nZ}i18TSM3_rohZ50upp&E%GpPc|;%EFL+H`?!689>hr8F!1i2L_@=B=iW7g>^DDSq@Nq!*#3iYxYWPJ4F9jFT;)tG#0Zm1#I_B58*VnCf^=)j>Ir9E5(?kmw^H~q^zdln;*?GaOj zw4s??Q5p{7ZDCm~f4mjIb{KJhh_8NoRTy35AlnE+=)@V9Jjt{Fjvh2UbE2nk;UH6M z8t(;h5FX$z6^#RqqU1;@h!2c(2bY_Jf^r5B(@m}{c($GNZS;SZZgW&zuTfpn@h_{x z3I(*X{2({@d%t$k?XCIkFkY7gw28 z*AvBk?8cse0a)tVwQrm}_@+zL9f=5|+A zta1cP4mwA*6vayxqR@tDhk%}%@6}`dfiC>>RWbfAD&IfCbm8Mp(PYzPrZ$*Zs7XWQ zzU^JR3x>6fr zuD^z7TNoR5gunCf{Uu+?e&EAzA?27eve;7P$gMtN*c>eFQV^slb!miaO=zcupTf5` z^0x&F5X=n`Z7K1^aJw1vS8GuV>{&F^ObY639Bnaj79|s?;mJVaH+Hi&t}Jl#WM`X5 zj1p~T6`a@XvUDgLniap9^&=3jEvS*t5`7t<&{J@Ck;_rOc3e`l=dRE-J{6$yczlG} z`l2crbqu;Yypu+Io#9?Eb}bzS-f1RC8%qtPwu{P`mA4nqHXT)v> zOuI4Q)q(S9?aFGuztnFXn|?oT-AA;oF`3kvL0Jw;M!Jw+qKp{{jrE4Bl9%=VwNnoF z9{ko$4b$s8VbT?ZHVvK#y2$1*fKPMr6Xyu`-}3$QN`mk7ZuQ|u3zB0$e9oqg0u{Yy z*3b0ri}}DTo+%+;+$pc0BP(zB%%L?Pe-fj&R}ijnJ+(n72?iB;J#bzdsu{eefveyy zT1}N^I?Y}$ho1>@jG150YOvzVem87))v)f-4%%m5_|llu^+ydN*T&qgKjv{!W)dGH zV8*hu(qpcU)%VdH(>bR{(g5430O2YpOdHf@D1!hJ69GyA0R%0y}j4XWSqKk2_>x!?f>%k zSXzO1UjCVe%!Bdi)wgI*#=LaloQfQQiN|y@>*$cQy zpRH5Trb_gsgS|IBm{8+yD->R*;AOKP>#>Ykfa&h*zatW^TrXG`H5yBqqAHvvkHk*x zwVh3j)K1;!`Gp?so+9)7HXj|EisSi{Jeo6g`t>YOTmAYk1>wiqO;i7F{NlmCnu3J= zcEe9i!NdL(;QyQY`4#*|TYdWP4Ty{mWSY4haMxj;W^V@->IhA9w}ap6C`_}2A%b+0 zra2UmjXF=Jc@$9}b?T?FCy0-_kEhcH#4ZMGq*m~_VK-+YK=@crAU798xxOU+ZyFy~ z0%lK#yzJLs<3H-~P7-jX!M1*jx(g`0B!j@wBz@YFryrOKN7ZJMKZs{9@y)~pGPxTl z%n(lQQAVra{nEnJasL$8ZDNJNKe$^vEV1+MjN^&mnts+yzqFJTV_HkrAe)Rq#Ee}S zGIVr!#_NRVZ4wjz9T|Q)^l1l4<_6okKI<=pJlz?6U) zEKagy62Q{Tv*zNj66mDaE(BHT0UDr48W7@`e%??;# zI@L4fEf#p_2qp+$3qa!0Bu8Pui~d_b#^ypKKp=xLsC9|H)N7?cG6W5*C#p%^iP%^_^38LpuA9M}&Q_j8t=<%9KVQOj z|9B9G`pcc&{2lQ0Gi!Eu9L)an((L(tc4KJmwU0_H?js(X<{9r6S@Pu8-1#|HZ`Ox> z@LXE#SPJ>Txg<2qk9B|UIeqg6ucY+SsM5#%$9zjV(0h2pUi7k32;F1RJ8wJWez_km z)_#q25BsyUax>)Kvp}XnFhgm0t@G$Nn}fKOrQ28ATe-6Dz@=-Bh>xXz0}R%>c1(Z1 zwZs#%mU?d?Gy3F41&$F|+A9rS#Kcfjn|a2tn#aI#Vbw>ohcM=*A=|Wt8pox z6~}OQ$q>sGs;H)^$FC(r<%kzP%uv(sbLN78A(5c6q5?Jn%W}$g25Iz>n1)<)$}*-fMf`yYB@vM0F^~h6M~% zc6W9Lg@=0Vr9Y#~2CwxfW4MDKyAO0eTMpu1n+osY4Qg5|?{5zZ8d!t>Xf5OqUu&5+ zTnM?a4u00(7&4Ib?fZa5sQUU!XOCux(V8Ar9ZA^X$rxLf*ZU1ItJR}k$y@JE`szPh zy3R5?_7;=9F8GYin3=R*0EG}=1Ty(JF}}x8)`zQ}f8@)Rsa-6tl&)T1G>cP;=ffOJ z^*RL!ts|6UZ-xzE`Y%Kc0Ts2K;R_#wr<5NoLP&3&keKf`Lc+4~AqO?hT)%m&`loc1 zXtkf31y=kEak`j5JrE!mIQ*FX6KuA2udaqztF=1svFD#(RDr3Vp7UL(x=3y-^NaE< z2fM6G+jSw2Yp|wKsPlk-E*!dHR1&FE^X09tYsu?B7Ewk6Z|~JQ(B6!|Z@S|WA4lXi zN4zrgUE2v#7iqmnjy#T(+Q?YkdMkb8F$Uh^?SpA$8X4cc{p!v=Hvhy6@7#)+Hi8H~ zg=MO`I-dPm?+!%cJ=yGn@#;b_q!ic1ev55atinrK1v+Nf$G%8d5H{Z-j*8P## zzV{;026oKh{^TW^8u6dZeg6MSBFTpw&8W$={04I*A0~?b&GAJ=uJO44$}fV7ZaFTYZ)`J0m=9k#pcBtDAJ$|s?1c2- zbkZ_0CrF{Z(`**ZN(9r1TV{#5xkf z4;m7rTsjQ7i-whp?x-y8k!iPlP61a6*@e&orY-j`CvvoBvS>9Y8rjsOh{j^{Y({ZT z=j}|`FY3>>+DyDLrPI_Zl%19JLi6h0HeI9QhTv|`F{Nnh*}>CH7KdimK&ej+#+}WP z@aGSUQG^y>0oDQM?k?ri!1OH!=_aP+CtIu^dS((YUJE7rmiE23Yl%#kOL9eas3?4T z_)o)1ykfdRqq%JFP#`&JD*-M?kLK9E)~;OFrwd%SSMk6lZ(GWV1t&>WOm(S!iu$~j z4t6PE<=-g^QNG_C0vO%6$k*9>BP6obj#*}#vs3k{AayIJL44zX0cr)6`i@HsI6w}- z2<$2zIY`b35aWt2iNH7KvdOpya=f{nHZ0PU6oUXc0v-Scj4AX-AHiw&5yOBx3TpQe zet>(x0q_7mxdqEt#N-kw`%?wg2pz2sn;hq{cPs+XtP~!}#_N$3Djvy(yU~#k9K3i( z-X7SoZt)KQ7i-52!XGOE@WvmlSDwbY#cVOP(K7Pl8VA5UjVBwWcv4u$ZW~RxS+2)& zSab0{PL}Vm*l}CzS?ns!+sE;XI~#HN>j9Vl;&p73pvJ;kUO9dd7vtsIv0nbfmgP)2 z44{w#=8%HMQILDWX)$%&i$g0gz|p*ze+)B#r0|$01bMl7;L)TU@qx(wa)&M6fdIs4 zqCCQ30?`nFRJVCsAt?wzpujL3MW21P%O)X&c^aWAv5KU_%0@|fZ!DjSv{IUW4jb^| z7WnZojmO^hd6d>4s|W~yd>)()=q~ME9-JNM-Z$|Pm^bM8IfUNsv9LPGv*8{z2}c5) zHN!gQ0{RX6p0l(Y`YM25r05U>D9XYvAG(SrtD}SH4f-V;!@>b7Ed+3(yXXU~hOQ!U z=$E+!uAi?SoOy6u#CpOfy3(VNuIN^y4I3LRR<$u=TSh3hPyhlTUi2WZY3aOOMMyoz z-(1lm5|QnL`_LM;hfrd>*kVd%0?1Q-I7}*nBO>@T3!(`I0NHlwlI@xf0c7cFx=~vN zusizCoX&)7S2>7lYNyKwnp2Gc*+v1Yls6uzv*{~{n;r!qr_5`nzAPn)o<>Fj4m|2_ zv_jgacRCl0Eb$j~xP5i1?kI(2kxV4B zt3MLG`al3G&T0ceBA}`unG?yY5&)bFvuPYde(PN8n6WujAFv1RdV8>H+gZ8dKLqVTZ=r@L z1qXQGDgwV=45|nO@i(d>NGnHkimvovB=ye7(0M8BL)Upw0W|CjdybG5

    #&|mUVclbt#Cd@|OsTSj@ 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 A#sB~S diff --git a/obsolete/fonts/xerox/ITCGaramond11-C0.ac.Z b/obsolete/fonts/xerox/ITCGaramond11-C0.ac.Z deleted file mode 100644 index fb85bde7e4d606a5fa7a737786e4d5b760d87424..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2163 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 diff --git a/obsolete/fonts/xerox/ITCGaramond12-B-I-c356.ac.Z b/obsolete/fonts/xerox/ITCGaramond12-B-I-c356.ac.Z deleted file mode 100644 index 1fb6daa54c292cfdf999e0dbcf1a9ae4ba68b375..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmV+x0qOo9osbY100^)k36&v7!pI5J=8YRN03u3^2xCD20VDhbI5iOfhKK`H34oS> z$-seBrcM0!ucOPC5m~}?DRbt^mNq5U%n4v;PM)5kv-@bKN cL;?l?0T54qymj3}(02`Wvj{pDw diff --git a/obsolete/fonts/xerox/ITCGaramond12-B-I-c357.ac.Z b/obsolete/fonts/xerox/ITCGaramond12-B-I-c357.ac.Z deleted file mode 100644 index 9b1917a945ccbc19cc3615e17b9a5d021be0e1ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 305 zcmV-10nYv(osbY100^)k36&v7!pI5J=8YRN03u3^2xCEj0VB)=I5iOfhKK^934oTs z%0K`E{OOzc?;lD41Wp$4hpS`60RRe|T+lC$&6f*K8c22HCr$$=1N`g5(&YgF0$%>K z*>WmXmsXo*)jAWER+~I4eeF1u#@LAh#B4jewPV$`0N%EhyOnNMyH@c|)%%n0Rk(4n z&J|pj@Lj`s5${#pm+@b?e%(5j3^+2|#FZysUYxlzWX%#ShXx%{bZOFoJr7o0nDt@T zm_NhjEW7q<+pTfG){VJq#{f`YMvaI_Vk3!@Bz}@;s-^Si(B-C*s7m50iL9b)-_E_e z_wV4tiyu$Ey!rF!CAK0!01yE8@L?8+Pao!j`uN}Lk59lre*OZ01Au^25ikHS03e7U Dc_xtV diff --git a/obsolete/fonts/xerox/ITCGaramond12-B-I-c360.ac.Z b/obsolete/fonts/xerox/ITCGaramond12-B-I-c360.ac.Z deleted file mode 100644 index cff07a31f8b74db2b95a184d27346c901d6553fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 190 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 LfN)mSbx^qleb7I| diff --git a/obsolete/fonts/xerox/ITCGaramond12-B-c356.ac.Z b/obsolete/fonts/xerox/ITCGaramond12-B-c356.ac.Z deleted file mode 100644 index 4e1279c0a6de651dc4fefff94b3d2cbab5de00d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmV+#0p z$-seBhIL%YvgN;jEmyvb*>NUKi8gNn$a#||O`kD=x`b&!)whlT00;nJ;G}_6G&&BD zxOAz`oiMKoWw}*mR-IjIe(gE-XW5`$NRiv3B!nz5AALT)klZ zMua<9Fx$O=$tE_t7;R&)5kv-_E_e g_wQd-0w7=j5CHS&&#NaO02l!G^e7sQTv9rGb+I0JLHW-~fQ6E}63Y z_fP87s#Ygb&8oGkOqyH)?CcpQ{hX$=!bZOFzO{YffSaoaG zkX^@yExGg8j!B_Dm54}UBZ-qFev)X4s`2B<)5kv-_E_e t_wV2(wjw|P5CHS&UlvHu{^f%9@XyOnPryKY`U1cK&@Yw10AK(B2p|uej}Yc*Pn|v^_6#Z%XwacVksdYbQ)yGCJDo;_ zic@M;syT@k)!Gs(ORHJ6g8l0CC)crN#g?6jmhD=JZQ;J%s`l*Mu6Fa*-JA4oT)KVr z2Ijj|aACqv4JSrCRdHj+R~<)&9Conf!D4STlj+PKL|&YkwNZpy!X_eLF@`0&@oksqg>ocZ$G&7nW%?KW=#fAzk;Gyp(B z#EUk=iyu$Ey!rF!)2m<4zPkaUbF0004#D`Woq7gHw9njL52%z1NXM4di=(p=E5Qpc7N5dc660K&|tP@_tP WDzO3q0)PNy-RcqnFaTd`e*FsBr6~{q diff --git a/obsolete/fonts/xerox/ITCGaramond12-I-c0.ac.Z b/obsolete/fonts/xerox/ITCGaramond12-I-c0.ac.Z deleted file mode 100644 index 72dd024c6e0a9fb7ece2a4a91553977d07b9b580..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2465 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 diff --git a/obsolete/fonts/xerox/ITCGaramond12-I-c356.ac.Z b/obsolete/fonts/xerox/ITCGaramond12-I-c356.ac.Z deleted file mode 100644 index f2117fde171ba20bd4ba945e4af79accaab3b2ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmV+x0qOo9osbY100^)k36&v7!pI5J=8YRN03u3^2xCEj03-YaI5iOfhKK`B34oS> z$-seBrcM0!ucOPC5m~}?DRbt^mNq5U%n4v;PMddB#NBQEOYaH`VrptCQ|pxo+dC&080*-MM}P z@BPd7?qI=P5r0)2mho7}Wg(xHoc6Hg#FrOmZoK(%=g6NYhpvpdv}V(sQF~Smnzd-x zq)*FEJ$rTS){C3I1u%eVRf)J*3Lj3qxbfp$b4mP#yt(t|(4$MAPQAMI>)5kv-_E@| c*I*F|6aWN(y!r9~2m}C@emnpm0N9g<4=a_19{>OV diff --git a/obsolete/fonts/xerox/ITCGaramond12-I-c357.ac.Z b/obsolete/fonts/xerox/ITCGaramond12-I-c357.ac.Z deleted file mode 100644 index b4eddb3cb2ad9336c749bda9238e7ceccedfa4b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301 zcmV+|0n+{-osbY100^)k36&v7!pI5J=8YRN03u3^2xCEj03*x_h=#wwcx1kt$mNZrR4wIu~o*s&}R4{khlbTew%{ z2BtgMZehHK^(N-K*zeoEZ5v1a3wbSK%91TB#?1L~W{H(Se~uWM^k~4H1*ayw+HmX3 zo?mZ{O diff --git a/obsolete/fonts/xerox/ITCGaramond12-I-c361.ac.Z b/obsolete/fonts/xerox/ITCGaramond12-I-c361.ac.Z deleted file mode 100644 index 7d239bda4de02a2e4459bf0ca4ad0b58000c17ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 331 zcmV-R0kr-fosbY100^)k36&v7!pI5J=8YRN03u3^2xCEj04-VtI5iOfhKL0;2!NJA z%|HML{4wbW;9oxg2mlCVN%P-7nl*3Y>}Yc*Pn|v^_6#Z%XwacVksdYbQ)yGCJDo;_ zic@M;syT@k)!Gs(ORHJ6g8l0CC)crN#g?6jmhD=JZQ;J%s`l*Mu6Fa*-JA4oT)KVr z2Ijj|aACqv4JSrCRdHj+R~<)&9Conf!D4STlj+PKL|&YkwNZpy!X_eLF@`0&@oksqg>ocZ$G&7nW%?KW=#f2h8`Gyp(B z!~gM5v{`keO>dw z6ktscJOyw7P*d{b#h>2^RVmY=#xck4$o{N9R88v}KOaBo(x&~Pq*75TK}CRhYK;Ye zKnM841c2iea9@7oC6HZHRr&WGOZ_Dv6@>CpSk;HZiDevv2o@zCR0X8SQfJ4B_5kuxjA8+=ndc^T(1$8plQdMIps@DsZ@ zc%Gb3?b(r$fvyCreQ+i!7HzUNMXP`bs$|xHVEuK`k7Jg}q*%tDmF7e$?FD9-NL|Zm zw%4wvt+(BB3nsYZihCZp=bGCTy6dW26ua-b%M!fv%FCFx+u}>_z2Dj!rM~_q8Zfp1 z7u>JG;UZkF!s!YFC7w!GL2BH~G3RL$PBx!JMU^W(r{Kp66Wy@U?J}IS$P#Hq7{&A{s8X{mT|^dH zNXP52sw`cnv_!?7*;LqGHg%D4Wfyh!Twj9hcF|QkmG;|5(=FUz0?A~z)>+s4wcma7 zyEov23l8_;bt9g1;Qt=HqogbS2zla^FJ5@#mkS)#R4iq6MN4?m5@EFD7%gE&OFVcIZL~y$ zC#l{^u6GiAv;-?-iUaT zs&6bN(Blg92*0t|g#h#$%McQINIf1wk3byD69}nCD)dl~S0D=GsAfN)N$Ou4C0uZ$nASM8yz&(Nj z0ALsk0UiJd7=Qr?5C8-M2yh?-K-8fOB|rh7fDr)L5r!PqC=6lv(T*Avp$avRN&#RV z0t5g&8U+sw7Q_<(WU~MW1cXj^ia?D90sue#hfY~KmI7!H6o7yPAP@lvG-?zXfFJ}A z3;~2D00IYNF~CR6Cjoi_z#mBkf<^}c3_$=v2tXhL5U{FIJ^(<9Ohp6`2&hp200A68 zzyJ`y`BII-B(6&Z1WYulC#k9x20+MY0MvNWT7Gk+0N^M`6>?U&qdMi;Q00EBa`3y9%L6c8K$L;#+f+~rDFsqp{+ z1jYj0?grL4#$l>Zb*jzi(w6|>0R#m8pdAPhpuOJxiVOe{20#E~sN9|JP|X9=1VmSg z0wJJ4q^RKkMmG?E*vUuiDO8sJx4bNsu1=|&Rr`Jyx?MuR0f2!35J2F?5P$&$pa20x zfZ!0>ERTDciUB~NpsBzu02&DqSf<9|o(C9jh~2y3@&1>ke_$?AbsA+4iw6+p!GVDR zpk>_N^G8^|s(}G913)l<%wz7dN-eBiK!^go0QkzAolD;<>#3jG>8GBo>|CTOm8nD) zM4R{c4}3_puE0=&X2mqAY zt!)KB@=9H5{C(4{tOme3|8d}=x^CEge9!{ZZ>ZQW+Zw28IH$I=xcYSJW*{z_bC->{9=w++PLm0mj|zt(Y6Q25{@D zO|5DGpxOY!)wX^in%H|9fT0lJw|uKz0CodrClpmPcM=w&BBLLq@tw%_*B+`ROqwMiDFTCfn&M0Ie(3@P?-- z+t-d#iZZ?tfJnNfjlR-IBc1ODGCHM;D(Rzl-s~NL>6tOT($bS2xC>w~0ANAW)XTTX z!X9)2e4*UTCN;2u1_X7#3}O*qH?Y~=E&@cD>s!n7_z(If?ZW_oST+FwLjZse?wJ5s U)BDuN&$SW1+3aiq0;>P4B|c{LRR910 diff --git a/obsolete/fonts/xerox/ITCGaramond12-c356.ac.Z b/obsolete/fonts/xerox/ITCGaramond12-c356.ac.Z deleted file mode 100644 index 7941fd501bbad67cf72e4a6c5dfd1110fb108bc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275 zcmV+u0qp)CosbY100^)k36&v7!pI5J=8YRN03u3^2xCD203-YaI5iOfhKK`B34oS> z$-seBrgdD&vgN;jEmyvb*>NUKi8gNn$a#||O`kD=x`b&U6^)J;1pp{;vgpx?10*KZ z8Br)pt1@9y#adIVPOcNd;`G{+>`${n(GI1$Q|(o^S=oxM3b(7=x?%B-y~}s2Ub=n1 z{%sq$Y~izq(f3%iq9*3m;D0Yc7euiYs5vyt(t|(4$MAPQAMI>)5kv_ZloB ZfdYU4gdZ;+0D%C&%!3C21VH-m?EzxUf8hWC diff --git a/obsolete/fonts/xerox/ITCGaramond12-c357.ac.Z b/obsolete/fonts/xerox/ITCGaramond12-c357.ac.Z deleted file mode 100644 index 771d5a9407e04577ec4bfc5e4fe7361586647176..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 zcmV+*0pI=~osbY100^)k36&v7!pI5J=8YRN03u3^2xCD203*x)5kv-_E_e mL{tO@00J<6JOKjb$*U)zAiaC_@68v8zdiuCsRRT71F#<_9E1n} diff --git a/obsolete/fonts/xerox/ITCGaramond12-c360.ac.Z b/obsolete/fonts/xerox/ITCGaramond12-c360.ac.Z deleted file mode 100644 index 34e2bf98158132aa5b5b07b8d63c42a892ea8f06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmV;E0BrvsosbY100^)k36&v7!pI5J=8YRN03u3^2xCD203k{QI5iOf28mn*KuZ8- zAOHiYXmp%-0DuAj38?H@DKUXdm@;WbwE5CNPMrpB`kV>$X2h2fB}n8T(S*bn1P%xS z@DGq6AXlqi1ptgdf~i`u0trh9h(BO}0C)v!Rcu&5W6`QL!1ij{vuO#?rP>zmKe@a| BH1q%f diff --git a/obsolete/fonts/xerox/ITCGaramond12-c361.ac.Z b/obsolete/fonts/xerox/ITCGaramond12-c361.ac.Z deleted file mode 100644 index e1c06c38f084f36fde06b240f7338820bb33ea44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 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 aUpR8;D9XGGx;;R*f5<8?ryF#;%HaPh&))I? diff --git a/obsolete/fonts/xerox/ITCGaramond14-B-I-c356.ac.Z b/obsolete/fonts/xerox/ITCGaramond14-B-I-c356.ac.Z deleted file mode 100644 index bbb594c94dcbd4cd71c44bfcda82b478548f6a17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 zcmV+)0pR{0osbY100^)k36&v7!pI5J=8YRN03u3^2xCEj0VDhba5oVEhKK`N34oS> z$-se*rgU7%vgN;jEmyvb*>NUKi8gNn$a#||O`kD=x`cV)n5&Kf01yCR;AGKG9S2C1 zDnMsMp)9e=glSc4O|CkbMVOZKYVuXOK@)mt{N->!V^ z{tX-W?clSA()5kv-_E@| lSYi82LKFW>C(VS2OUAWTyXNhF;_GR0EpRAK$So=5dawAGN;pj|C~OJ zDzzijs#c@MoP$*&PIFx&`s@@IfPiGG%9g#lmTFkGZ{2o)5kv-_Bhk uECK`o0T53frGfJ3$D>@3zPK$AOvv diff --git a/obsolete/fonts/xerox/ITCGaramond14-B-I-c360.ac.Z b/obsolete/fonts/xerox/ITCGaramond14-B-I-c360.ac.Z deleted file mode 100644 index 970e571858c247fc0c65683fffef01d8ceff0f63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 zcmV;%06G63osbY100^)k36&v7!pI5J=8YRN03u3^2xCEj0U=5Ra5oVE28nb8KuZ8- zAbhP1aog4 z#09Xm>({Vj%jVttK^_FO9smd+pkVOUKcF7qQ^1e0U%&H2~%t>=6&xt;NMhq&H=ue|Ok>*sY6Q|IjPMb47Ozk)pXjiIX%i26kmaW;eZr8${`&BL2x^eGH%`29#-M)19 z2DUmFYhkU2xhD3CcQM+=kOfC3JlSw%#FrIkW-PfgWzUvDV-~HMH0RH#L#H0Sx^(N) zs$;X3?V2|1*|=-xzOB1A@86G22Y)@>cJbZEeJ2Or)^YRA%cDORKAm`V!v<8cbO`_f z%!mO5+#FB7y!rF!)2m<4zPj2 uCV0St06YXhLjVQ@aKHcq900%p0SFubz$1Y40t`N2Kmh^2Zg0(3&EC5u=D763p diff --git a/obsolete/fonts/xerox/ITCGaramond14-B-c0.ac.Z b/obsolete/fonts/xerox/ITCGaramond14-B-c0.ac.Z deleted file mode 100644 index cc380da7faeed298f0e16a453f7fadcf1511f0fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2944 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 diff --git a/obsolete/fonts/xerox/ITCGaramond14-B-c357.ac.Z b/obsolete/fonts/xerox/ITCGaramond14-B-c357.ac.Z deleted file mode 100644 index 92211e14cfd24fb066882cbb0ee97de65f49b6f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 295 zcmV+?0oeW@osbY100^)k36&v7!pI5J=8YRN03u3^2xCD20VB)=a5oVEhKK^F34oTs z%0K`FQZ4Hk0Hw>82LSA0>C(VS2LSAK6yS2f$pguH&?EpLW=jE9V9`VXfG5$8P$T~P z7d7hCs!*?Dop?3o%&ie|>I7RfDA}gT(40N1m26wEZ@0$9I=5)5kv-_E_e t_wV2(z9K*X5CHS&Q5s0k{yfSB?c=*|PvC%j`U2nq&|j52H~{|z2msv4jmQ81 diff --git a/obsolete/fonts/xerox/ITCGaramond14-B-c360.ac.Z b/obsolete/fonts/xerox/ITCGaramond14-B-c360.ac.Z deleted file mode 100644 index f217ffe4d8b16ed2c7ed69811729f391b1bfd940..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmV;Y09gMYosbY100^)k36&v7!pI5J=8YRN03u3^2xCD20U=5Ra5oVE28m|`KuZ8- zAbcgW5GiB2ZJsk0BYHC^$J!jytjV8 V-X(xQuUolv?cy!0buZw!cL9W0JmvrZ diff --git a/obsolete/fonts/xerox/ITCGaramond14-B-c361.ac.Z b/obsolete/fonts/xerox/ITCGaramond14-B-c361.ac.Z deleted file mode 100644 index b23504bc2be150a8c51ff433b31613c647055cc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339 zcmV-Z0j&NXosbY100^)k36&v7!pI5J=8YRN03u3^2xCD20WDeua5oVEhKL0^2!NJA z%|HMNuB_+?;9oxg3II4@Nwej@nk@g_#5qwX&z?Jf+7uemCsCt9k^WT5lPON8HKEd! znltE9t4*;!)f$!SRIgQu4m}FCBUQ6yfr>q=mh9TJ64}OuTa@nDq;}=jeaqLaU%Y(* z|GgTR@ZhY45g*=~nDOGSjUhk&8kzFsu$R$R#w@tAVb6*|I~FaOv}MzrKdTPCdUWg3 zuTRHL&APU0+puxV)=m4i@7%w42k#BMxNzgdk1J2kTyy5OsGUcLK3nqv0DE%2yuKjf zMV;Woiyu$Ey!rF!)2m<4zP2Zg0(3&EC3E>C)xl2 diff --git a/obsolete/fonts/xerox/ITCGaramond14-I-c0.ac.Z b/obsolete/fonts/xerox/ITCGaramond14-I-c0.ac.Z deleted file mode 100644 index c87c32a834efeff58392838064647418a776453c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2881 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 diff --git a/obsolete/fonts/xerox/ITCGaramond14-I-c356.ac.Z b/obsolete/fonts/xerox/ITCGaramond14-I-c356.ac.Z deleted file mode 100644 index c65ed3a96f25e7e38c7a2af7343a49ba9db93ff2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 284 zcmV+%0ptE3osbY100^)k36&v7!pI5J=8YRN03u3^2xCEj03-Yaa5oVEhKK`H34oS> z$-se*rgU7%vgN;jEmyvb*>NUKi8gNn$a#||O`kD=x`cV)n5&Kf01yCB;AGKG9S2Ah z0D!8_oiMKoWw}*mR-IjIe(gE-XW5`$NRiv3B!nz5AALT)klZ zMua<9Fx$O=$tE_t7;R&)5kv-_E`J iS78we6aWN(y!rA<1pouEp1^_i5y1cehaLz35C8xU4u#VI diff --git a/obsolete/fonts/xerox/ITCGaramond14-I-c357.ac.Z b/obsolete/fonts/xerox/ITCGaramond14-I-c357.ac.Z deleted file mode 100644 index 26c056d5f669915bc83443e5df261a036fb00478..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 293 zcmV+=0owi_osbY100^)k36&v7!pI5J=8YRN03u3^2xCEj03*x& zAOHfZ1au5=62JhH2LKFO*|LC12OUASQ~>jsE1CoV7%(ZIN+6mD0H_R_v+2KoO`SrG z+VLsXs!(IjxhfH-Ij#{89P0#DX);x1%UV@C73^BKZMnXc8~5s5yLGAF)tfi!UcY^% zru{3J?cl&U2`5I3^{`{Zkl{X-9GUK9%a!q7)|{E|X3w1ge-<6OFy+&jQFB%enziVd zGbgHi8T4gDL=qWElq8XCL{d+K3m^XWltfe#Q%O`syt(t|(4$MAPQAMI>)5kv-!5?# rfdPO3gbz=kzH2~%t>=6&xt;NMhq&H=ue|Ok>*sY6Q|IjPMb47Ozk)pXjiIX%i26kmaW;eZr8${`&BL2x^eGH%`29#-M)19 z2DUmFYhkU2xhD3CcQM+=kOfC3JlSw%#FrIkW-PfgWzUvDV-~HMH0RH#L#H0Sx^(N) zs$;X3?V2|1*|=-xzOB1A@86G22Y)@>cJbZEeJ2Or)^YRA%cDORKAm`V!v<8cbP3=9 zfCUi)2)IeUy!rF!)2m<4zP2Z@&pSO)cPi1 diff --git a/obsolete/fonts/xerox/ITCGaramond14-c0.ac.Z b/obsolete/fonts/xerox/ITCGaramond14-c0.ac.Z deleted file mode 100644 index e21df0e481b5b98bf507867fdc1b7d67e003a134..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2684 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 diff --git a/obsolete/fonts/xerox/ITCGaramond14-c356.ac.Z b/obsolete/fonts/xerox/ITCGaramond14-c356.ac.Z deleted file mode 100644 index d4681ba201978638ccf719e86c171bff7dc55064..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 281 zcmV+!0p|W6osbY100^)k36&v7!pI5J=8YRN03u3^2xCD203-Yaa5oVEhKK`F34oS> z$-se*rgU7%vgN;jEmyvb*>NUKi8gNn$a#||O`kD=x`cV)n5&K#2>>W?vS_D{10)In zFjePHm{x_d)G8CJPOde*_7wY*Y*4d9tzK0Nc4AwcXt&1g%64wpx_GnNb-NdC-miTl zz7-sJt=_+55tmhbmT}s{kO4cEJDG0e#FrOmZoK)i)5kv-_E_e fS78we6aWN(y!r9~2nYZMfIR^N>_Gqk(;hv2i@SoH diff --git a/obsolete/fonts/xerox/ITCGaramond14-c357.ac.Z b/obsolete/fonts/xerox/ITCGaramond14-c357.ac.Z deleted file mode 100644 index 7c5a2761c502c4425643aa45e61917dfa2f303cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 zcmV+)0pR{0osbY100^)k36&v7!pI5J=8YRN03u3^2xCD203*x5u9|nv+2KoO`SrG z+VLsXs!(OlxhheoIj#{89P0!YfPiGG%9gddb}Cr5Z{2c*J6G;ix_9kT#k*H;RK9=x zN>vMZa9hHHcNSKh7%Sq(ha<;@JXvyG%9kzY#k^T_U(TOB2L?S_wBgFAGpFvnI&|yN zGHFg+3A46DL=qWElq8XCL{d+K3m*>Gl*CgKQAtciyt(t|(4$MAPQAMI>)5kv-!4%V lfdPO3gbz=kzKuZ8- zAb*0CfEdm2B0pZ{ejSaDXjbvuM@Ub=r1n+_ZL= BH68!} diff --git a/obsolete/fonts/xerox/ITCGaramond14-c361.ac.Z b/obsolete/fonts/xerox/ITCGaramond14-c361.ac.Z deleted file mode 100644 index 55cefc3d542b83eafe8eed7e81a89355dbd27af8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmV-U0kQrcosbY100^)k36&v7!pI5J=8YRN03u3^2xCD204-Vta5oVEhKL0=2!NJA z%|HMNGHL1v;9ozK035KK+43Jvmj7(toS1VbPn|w%294NrXwjfYeJ0(x^k!3xx^d~c-P^YBUA}+) zS_M22Z@&pSO=_)4R diff --git a/obsolete/fonts/xerox/ITCGaramond18-B-I-c0.ac.Z b/obsolete/fonts/xerox/ITCGaramond18-B-I-c0.ac.Z deleted file mode 100644 index 0dc26d371d491000d1b32a20b627e35d4ea753c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3523 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 diff --git a/obsolete/fonts/xerox/ITCGaramond18-B-I-c357.ac.Z b/obsolete/fonts/xerox/ITCGaramond18-B-I-c357.ac.Z deleted file mode 100644 index 73000d84409a44304fac5b881af80fbe93ba2eef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 315 zcmV-B0mS|vosbY100^)k36&v7!pI5J=8YRN03u3^2xCEj0VB)^*fS9ThKK^X34oTs z%0K`H0BGnK000311x_OP*N>%300>S-_;;$~fSV3ZCiq9Mqkx+^TmBScQ{c~+9ivA4 z_fM)+s#c?7%{me5%$i&y?(7*Bz|f*)2UI##wk?3IW#NXE%av|cyH@dDt=d+vR=#lo z&lOyk@Lj`s5$|>Dw`1e3ivKc>?3gm-$(Z|EmiU; zi#5ZREW7q;+o^G{mi^TyfS)mcMnojhk;F?9O-X!3wYl@>aA!%RC9#%7ThOy>-_E_e z_wV4tiyu$Ey!rDIZxJW}2tfPy?p-2)Pd`3<0uJiyx6i*mf%*Lf*d74`fCB(L06>t{ NdcXi+;DZ2w0041ymP`Nu diff --git a/obsolete/fonts/xerox/ITCGaramond18-B-I-c360.ac.Z b/obsolete/fonts/xerox/ITCGaramond18-B-I-c360.ac.Z deleted file mode 100644 index 63f9a8c9d92074a7f7874e460b0eb5d7e96d99d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 zcmVh=1@!eDF^tAOPSV00Zz30T2LL$8sG@_G?VGW+k!(FctxXsx+^n)f%%a&97m{ zmOY!cFWY}^#m0>L0N>dM{pv=J*x;*Oykzxe-Rie3SjB_)s{MC3v0BFXM%N`B@j%@L pn9E}2%hl^vwHO{dj+w7+?}z~`!?rq`v+cKwb*lz|fHeTu000LSWJ>@5 diff --git a/obsolete/fonts/xerox/ITCGaramond18-B-I-c361.ac.Z b/obsolete/fonts/xerox/ITCGaramond18-B-I-c361.ac.Z deleted file mode 100644 index 7e3922abfb93d455f1db6937c64d9a3ffbb58cfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 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 ITMPog77<&I#{d8T diff --git a/obsolete/fonts/xerox/ITCGaramond18-B-c360.ac.Z b/obsolete/fonts/xerox/ITCGaramond18-B-c360.ac.Z deleted file mode 100644 index 7d598976e7b8c5de42b044272f2d110d765ee249..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmV;j08RfNosbY100^)k36&v7!pI5J=8YRN03u3^2xCD20U=5V*fS9T28ne9KuZ8- zAOHpdOmqw&QJ@0=5&o@NDe(b-moaBfWEs)sOOz^iN>p(3WJ;P5iM~uK@q)w?5^qQp zLVy7vK>y(V!}pILAVPo`b=}(aD*#3(2|T!(m8@5=gvRnK3-=$Vf873I0|Y=VTdiE* gew9l%EMc#G75sJkb@1K0nD`Pxx^d~c-P^YBUA}+) zS_M2KntK` zAb?J diff --git a/obsolete/fonts/xerox/ITCGaramond18-I-c0.ac.Z b/obsolete/fonts/xerox/ITCGaramond18-I-c0.ac.Z deleted file mode 100644 index 90dc8a330f128347290a466877390d3ccc030adc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3325 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 g{52j`S*2xNG5W*JdKkI#-L}|Lk`kX#fBK diff --git a/obsolete/fonts/xerox/ITCGaramond18-I-c356.ac.Z b/obsolete/fonts/xerox/ITCGaramond18-I-c356.ac.Z deleted file mode 100644 index 068da7c1339811045c64ad7925174a4f833eaa0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286 zcmV+(0pb21osbY100^)k36&v7!pI5J=8YRN03u3^2xCEj03-Ye*fS9ThKK`L34oS> z$v^-C008O8vZc#^|6H)5kv-_E_e k*I^L}7ytx-y!rCz2?ziNfIR^O>{o&T0FHipl>k5h0ABfnVE_OC diff --git a/obsolete/fonts/xerox/ITCGaramond18-I-c357.ac.Z b/obsolete/fonts/xerox/ITCGaramond18-I-c357.ac.Z deleted file mode 100644 index 6052cdd5b891a759800cd7df2046aa07af479b9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmV-20nPp&osbY100^)k36&v7!pI5J=8YRN03u3^2xCEj03*x@*fS9ThKK^L34oTs z%0K`H0BGnK0004(ClUPX#}ej&lM()%>No&qgOdsV(d#I{=Ej+vZK?8|NcFF z8g;7Es#Ygfl}R&e#GE_50th-(?0`y##Hs~=Rcu?YZ?nd=I(KSas#4Y7y_(l;U$}qe z2BtgMZehG@_jXjQ^)TPWju%I647sx2$r2f7#tfA+ThE$1TlPB|aB0D(38yx^8u8`U zk6+6sJ==6`)UUbn1km$k&xnX5Hj-FL;wXu$qAFj`ysayVuOz~f7^}JU>)5kv-_E_e z_wV4tiyu#3qAUUg00B_X-sOSz@Yl;H&>+5j`S;Zmc#pq-djbN00{{e8p$7~A0tyHM E0CF~vKL7v# diff --git a/obsolete/fonts/xerox/ITCGaramond18-I-c360.ac.Z b/obsolete/fonts/xerox/ITCGaramond18-I-c360.ac.Z deleted file mode 100644 index 9fc95f7c488754f86a16d6f243b03d3bcbac37a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223 zcmV<503iP#osbY100^)k36&v7!pI5J=8YRN03u3^2xCEj03k{U*fS9T28p!C`suyfqzh`N#^-9<*0JDJE{#$z>t^&w*C+Cg1wlDx;P|vv$yzD1?ralu+|dzB0{|ZzTAly^ diff --git a/obsolete/fonts/xerox/ITCGaramond18-I-c361.ac.Z b/obsolete/fonts/xerox/ITCGaramond18-I-c361.ac.Z deleted file mode 100644 index a03c4bf2b6ad329c55c45a1b39e7ad134a6acc36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmV-u0hj(CosbY100^)k36&v7!pI5J=8YRN03u3^2xCEj04-Vx*fS9ThKL1T2!NJA z%|HMGI}ZHE4?qI|5md?q@bBMDl{Ig6%&Ai%&z>}G0u4Hp=+K`%k?K@>lj%&SGNIxW z3RLP&s!6df)!LNnQ?F6MPAzJ6Vp*SJuaZq`mMz+~aF4o;c$V&5qgC(L#hW#5UcY_i z0^T~fYvHel!zLapxba`dfgekbOqnob%abuzHhh_LX3v`ucNYDbbZEt+QI}SIn(=Da zt<|Q6t+_U6+oo}|)=m4i@7%w42k#BMxNzgdk1J2kT=r|{vD+?&P8h+zejNi`2ao_| z!~gz`5RkwD06YK;C*a@$12hoC7$X8O G000Kr{-ZMh diff --git a/obsolete/fonts/xerox/ITCGaramond18-I-c41.ac.Z b/obsolete/fonts/xerox/ITCGaramond18-I-c41.ac.Z deleted file mode 100644 index d9550299f5d9b18f726e3c500ad565f49f6cd390..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117 zcmV-*0E+(~osbY100^)k36&v7!pI5J=8YRN03u3^2xCEj06vNc*fS9T28mz2Z3Iz)m`=BQK diff --git a/obsolete/fonts/xerox/ITCGaramond18-c0.ac.Z b/obsolete/fonts/xerox/ITCGaramond18-c0.ac.Z deleted file mode 100644 index 33bfdfab486238208ef63b0f8b06c31ad8a11f68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3065 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 P%CG z$v^-C008O8vZc#^|6H)5kv-_E_e icdx@D5-73L(-RN?3_yDV2ik)HFdv-z`||-23x$RN diff --git a/obsolete/fonts/xerox/ITCGaramond18-c357.ac.Z b/obsolete/fonts/xerox/ITCGaramond18-c357.ac.Z deleted file mode 100644 index 3656032686a4499509b74723816782bf4cb33f8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 300 zcmV+{0n`2;osbY100^)k36&v7!pI5J=8YRN03u3^2xCD203*x@*fS9ThKK^H34oTs z%0K`H0BGoVkpKXf7ZLpH$MPkB11BT=JJoT3%?2kE{G-=VfK8kieF~{5uw}=m694^! z3RNoAr&g~{v?`OP)`&WJegz^QRJy_BP7j@Vf9<-eZ;haNn-aOuOR6Jt&dd9`cM zuSLfuJ==6`)LnZ5@X1>uB8iP8R+2bM;wq`glPh=IN}?-?uOz}+PQAMI>)5kv-_E_e y_wV4tieF@Ch_{Pal4L^aR@5-@l$f0C-msFaS6J5J(^s0*p`q diff --git a/obsolete/fonts/xerox/ITCGaramond18-c360.ac.Z b/obsolete/fonts/xerox/ITCGaramond18-c360.ac.Z deleted file mode 100644 index 6acb6580951660f9472ce4a4f29d4d7b74c3de33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmV;Z09XGXosbY100^)k36&v7!pI5J=8YRN03u3^2xCD203k{U*fS9T28nP4KuZ8- zAOHm&Q!W7D0KkKk9b3x$M+{~}nI~;ZOu#ayP5?YxMnoCWg2WOMX-M=zU;!XN|KR<@ z2Z#^=LVy@eom%xO00smcJdMiLDpo@O_?5j{^&h8y*Z=_tJ60-Hvu)MhWy@eIKe+@F W)Lnbl?LSO_1w*yl6>DF7Y2^Z(Yd%c? diff --git a/obsolete/fonts/xerox/ITCGaramond18-c361.ac.Z b/obsolete/fonts/xerox/ITCGaramond18-c361.ac.Z deleted file mode 100644 index 48891c2f112d420f431402584593470d4b10d6fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 351 zcmV-l0igaLosbY100^)k36&v7!pI5J=8YRN03u3^2xCD204-Vx*fS9ThKL1J2!NJA z%|HMGJ4XD+55NKd5md?q@bBMDl{Ig6%&Ai%&z>}G0u4Hp=+K`%k?K@>lj%&SGNIxW z3RLP&s!6df)!LNnQ?F6MPAzJ6Vp*SJuaZq`mMz+~aF4oOIoD{_x@YOey}LJS->rYU z2L3uYY~itT535bgm~Ughj{!#(JehE1!7r+puxVuFd;)@7%w4`yLLQxbWi0k1Jnnnt5#Jx}gVGi{M{BoYxVcj2J*b z&F|pDiyu$Ey!rF!)2m<4zPz^us{F}1Q5W002mboqnrQ$ diff --git a/obsolete/fonts/xerox/ITCGaramond18-c41.ac.Z b/obsolete/fonts/xerox/ITCGaramond18-c41.ac.Z deleted file mode 100644 index e29fee37a2f31b8f496dbd18fcd0e9bb007734b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117 zcmV-*0E+(~osbY100^)k36&v7!pI5J=8YRN03u3^2xCD206vNc*fS9T28mz2Z3Iz)m4KF8) diff --git a/obsolete/fonts/xerox/ITCGaramond24-B-I-c0.ac.Z b/obsolete/fonts/xerox/ITCGaramond24-B-I-c0.ac.Z deleted file mode 100644 index add1317fc7a1d21d84f225a9a35bfff6aead4ed3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4751 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 diff --git a/obsolete/fonts/xerox/ITCGaramond24-B-I-c356.ac.Z b/obsolete/fonts/xerox/ITCGaramond24-B-I-c356.ac.Z deleted file mode 100644 index eabf7ac22e4f9af53c206b67835ce0035f720035..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 305 zcmV-10nYv(osbY100^)k36&v7!pI5J=8YRN03u3^2xCEj0VDhjcrp z$v^-CRO#x-vZc#^|6H%V%eNyeWnGvR%lzIS$V$YI@fF5vs&wly{p%3U$lG! zgZ-OVFj>NK4Xahmma$vMa0f%CJK3(}%ZDrP#k`nvW6zI4N6svoa%sz?Q+HPVnRRH_ zqgTsrJ^OX-*tB!oZmeKcp`=RzC#hOc>PQAMI>)5kv-_E_e z_wV4tiyylzB7p^f0Hg;7fW7s4*tvUk7c<+?X(U#(c_ z2DUpGZ(+TM`6l+e81US`T^mP!EV(0O%ay@qwz@guWzCdB3l>e7v|-bTQ7cx>n6=~4 zuuI22Jv(*n)wf&cel5GSSh5qDN{uQJkwi!mIZ1>ik=NDd(4*H4CQ+EgVG@Z+-_E_e z_wV4tiyu$Ey!rF!(@QKy-~b>1z~IY|A0J561@Gz4-><)Z)Cu|VCt!aA3TPhz_!UT? beg_f|A3p%_5Fu9t81NoE0AQ#g0B`^RN#~H> diff --git a/obsolete/fonts/xerox/ITCGaramond24-B-I-c360.ac.Z b/obsolete/fonts/xerox/ITCGaramond24-B-I-c360.ac.Z deleted file mode 100644 index 1a9909b6b82444a26c7013d2b15fef96fbdc8984..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmV-00nh#)osbY100^)k36&v7!pI5J=8YRN03u3^2xCEj0U=5ZcrptnjdFOaEORta^3WKW5jy4IuINti2H2~%t>=6&xt;NMhq&H=ue|Ok>*sY6Q|IjPMb47Ozk)pXjiIX%i26kmaW;eZr8${`&BL2x^eGH%`29#-M)19 z2DUmFYhkU2xhD3CcQM+=kOfC3JlSw%#FrIkW-PfgWzUvDV-~HMH0RH#L#H0Sx^(N) zs$;X3?V2|1*|=-xzOB1A@86G22Y)@>cJbZEeJ2Or)^YRA%cDORKAm`V!wdp+=_tS@ zfCexl2IzjXy!rF!)2m<4zP0tEmF2NLlhk%kc=0008u tG1wqJ5e?u^M91t1z&8&>Pwnlx?VoT+o?#GXDQ0u8DYgMddJ2k49dV1PsjHls?N lN>!>v3wjW&w>d$(Jb1xYXQSjD_{Ts diff --git a/obsolete/fonts/xerox/ITCGaramond24-B-c0.ac.Z b/obsolete/fonts/xerox/ITCGaramond24-B-c0.ac.Z deleted file mode 100644 index 41035a44c5e698a23a295125dcc4129a3191069f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4342 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 diff --git a/obsolete/fonts/xerox/ITCGaramond24-B-c357.ac.Z b/obsolete/fonts/xerox/ITCGaramond24-B-c357.ac.Z deleted file mode 100644 index a0d8b60a8c56a179ee74e6ccbf9c29cc51e99ea2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324 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 W{tlPQ1G7pY<_sY_IQYBoh5rX!`)_ps diff --git a/obsolete/fonts/xerox/ITCGaramond24-I-c356.ac.Z b/obsolete/fonts/xerox/ITCGaramond24-I-c356.ac.Z deleted file mode 100644 index 073916530444d9aef0507cc6b9f63e51f4f82410..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 299 zcmV+`0o48 z$v^-CRO#x-vZc#^|6H)5kv-_E_e x_wV4ti%k}hfC4}O&;tXozCHW*Kmf!iKma{B0QbQxO`snJ0RM2{C*XSV=?4g!jJ5y( diff --git a/obsolete/fonts/xerox/ITCGaramond24-I-c357.ac.Z b/obsolete/fonts/xerox/ITCGaramond24-I-c357.ac.Z deleted file mode 100644 index 0dcd7d765b88de9a37601354a6f333a09cab9e19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmV-U0kQrcosbY100^)k36&v7!pI5J=8YRN03u3^2xCEj03*x{crp; zi(xmG{g`%S(6%w--rbt_Yu~YPizPdeDbtrsBO;P`GomJmtt8^QO1-*uySya!lITm~ zuj}B$iyu$Ey!rF!)2m<4zP)>izz7%s1OQn5`}TnVAfSN0{r~s{nBRU9_$T0j049ha g0Q&J~pn?!GxZeQw@c@8@SrJeGeeeL#VTW)408}WQo&W#< diff --git a/obsolete/fonts/xerox/ITCGaramond24-I-c360.ac.Z b/obsolete/fonts/xerox/ITCGaramond24-I-c360.ac.Z deleted file mode 100644 index f583e983d0612d02d101911d0e03fd590c66a6bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294 zcmV+>0onc^osbY100^)k36&v7!pI5J=8YRN03u3^2xCEj03k{YcrpvE7cl_8x@iZ>1@Jba0f{Ih z3PeC*YQ(B)v9{d`*DF}DWX+;Y%+_sVxgY2bygM*&0JaChy*==cErAb?01yb^P2%9f zR3%=`%DC&-wqeJXJ)3sz;ncQt1K9snS4VA!l|#ag*K#$C5; sXX5}41RGsi^^er6TML#>J+@WswYPr=JJ9=Nz2T9ESFSpPwnlx?VoT+o?#GXDQ0u4IUXVINUaVE`qGpNv}PM7k8 zN|dTmt4Ogb)ymZAQ?CG|b`<-Q>r}90YnmOqwk+DVYTwHBn)WMQxOSuB4ZF84-?@4L zR~3Afa8|=x5qG_-_$=ecfgul;T$u7<%ZV{Bj?8&-=gOZiht52Dv***GQHxehnziZF zuvf=!J^Qun+q7}p&dqzbZ^xy9yB1!XxNhUUk^g4fn7L-<(47aDKAd`C1_8Qs6yOqo zzz7ioaJNamy!rF!)2m<4zPx$jgG3%8AP|EM k;uFyT{zP<)0}*+0Vub-jL`I4t0su&nM-D(_gGZhO097NiHUIzs diff --git a/obsolete/fonts/xerox/ITCGaramond24-I-c41.ac.Z b/obsolete/fonts/xerox/ITCGaramond24-I-c41.ac.Z deleted file mode 100644 index 62d2c35895d6edd91819878ae8dc4f87ca10e782..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmV-`0Du1Pwnlx?VoT+o?#GXDQ0u8DYgMddJ2k3+VV1PsjHls?N iN>!@F3j_=R0sxGw*RDVS5P+~1900Rmg3c^^7C>4nO)2&O diff --git a/obsolete/fonts/xerox/ITCGaramond24-c0.ac.Z b/obsolete/fonts/xerox/ITCGaramond24-c0.ac.Z deleted file mode 100644 index 98e31c3a3c30ae159eca8f2c5516bda4972f8b46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4148 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 diff --git a/obsolete/fonts/xerox/ITCGaramond24-c356.ac.Z b/obsolete/fonts/xerox/ITCGaramond24-c356.ac.Z deleted file mode 100644 index 3e253bfc418215fde10b505705a1250398fb9f75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 295 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 jB<{r4H|yz0mE#QD2N~_Pd@#{&t~4}_+H~0F z$v^-Ds!Zs}vZc#^|6H%V%eNyeWnGvR%lzIS$V$YI@fF5vs&wly{p%3U$lG! zgZ-OVFj>NK4Xahmma$vMa0f%CJK3(}%ZDrP#k`nvW6zI4N6svoa%sz?Q+HPVnRRH_ zqgTsrJ^OX-*tB!oZrp&%o|ab~03aX{7tG_xlPh1&d~7a>#F|T=PQAMI>)5kv-_E_e z_wV4tiyx~jA^`=!0Dx1^e!ctl0Kg0{00{ni`2-xKUk?WW3;_N02M+)PzPBHM{s92! Cn2US> diff --git a/obsolete/fonts/xerox/ITCGaramond30-B-I-c357.ac.Z b/obsolete/fonts/xerox/ITCGaramond30-B-I-c357.ac.Z deleted file mode 100644 index 1bfec6f1e93e802735f0b52508470b49011ed1a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 330 zcmV-Q0k!@gosbY100^)k36&v7!pI5J=8YRN03u3^2xCEj0VB*15HS$|hKK^}34oTs z%0K`K{(0ya0Du9M00sbX;IC9i0WJXul-Z#lkB$U#UWf?*LMjwDb2=azR0vA|5dZ`| z(6Oq-fB&pn#j3R`*RB(}(zFRSV$Yvtiylo2pa4EGY}tNIJGX3Iuy?!W)w*|UR=I!a z2DUpGZ(+TM`6l)ox3Aa5j~heo=$P{4u$Ql9j#wG9e7v|-bTQ7cx>IJE20 zuS>^1Jv(*n)wf&29zC{Wfwnn+M?@r1lEhCEZ%H(UwYl@>bC*eECb5}BXV9~2-_E_e z_wV4tiyu$Ey!rDIpAkp^3;;Oy@ZZaa4@N43_Ve?{-~YZofeZNYC!l@=4k)014g^@> cg8TVLzDVIs*8|G9Lg906KW=7iS{Ne=aw~oLS4JKb$*dMo@Xv<%FFOQlan(w8GAa3MBrJ zXh&i!iP#Wm03;EZL~s)ENc;l;0)QX<%zpTX55R$c{r~`C2?*GLf8fA=fF~9MJhB*Y zpv8b;Ej}D?{fTAS_Ab1Ldn5Xlj3Xj~j}a?J6uVg>90VJjY diff --git a/obsolete/fonts/xerox/ITCGaramond30-B-I-c361.ac.Z b/obsolete/fonts/xerox/ITCGaramond30-B-I-c361.ac.Z deleted file mode 100644 index 6dc98ac4b616b336b52fce4b27d4dce8674f558f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 423 zcmV;Y0a*SYosbY100^)k36&v7!pI5J=8YRN03u3^2xCEj0WDe)5HS$|hKL2I2!NJA z%|HMX{I%#v;9ouf6##JPNK@j!e>H2~%t>=6&xt;NMhq&H=ue|Ok>*sY6Q|IjPMb47Ozk)pXjiIX%i26kmaW;eZr8${`&BL2x^eGH%`29#-M)19 z2DUmFYhkU2xhD3CcQM+=kOfC3JlSw%#FrIkW-PfgWzUvDV-~HMH0RH#L#H0Sx^(N) zs$;X3?V2|1*|=-xzOB1A@86G22Y)@>cJbZEeJ2Or)^YRA%cDORKAm`V!w&qFV);)W zfCm65L<}I{rup;e)2m<4zP1P=n>`C(H;Vf>?DI{(!8Of=vCKw^|z0P^D=I?e$A1ON=M RosbY100^)k36&v7!pI5J=8YRN03u3^2xCEj0X~Wl5HS$|28nM3KntK` zAbU!0Bua#DaP5kk$UP@_tP gDp3Q01i%1*)5>+LSFT_H5TF34D_EdC%YNM&7C~n)x&QzG diff --git a/obsolete/fonts/xerox/ITCGaramond30-B-c0.ac.Z b/obsolete/fonts/xerox/ITCGaramond30-B-c0.ac.Z deleted file mode 100644 index 5f955ff64fcc9f9f555c0933ec383fbef86a7bf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5165 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 Bibwze diff --git a/obsolete/fonts/xerox/ITCGaramond30-B-c357.ac.Z b/obsolete/fonts/xerox/ITCGaramond30-B-c357.ac.Z deleted file mode 100644 index 36cbc9e24fed13707d0e699312e8eba9a6f3af39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328 zcmV-O0k{4iosbY100^)k36&v7!pI5J=8YRN03u3^2xCD20VB*15HS$|hKK^{34oTs z%0K`K_%-Sn0Du9M00sbX;7?UY0WJXul-Z#lm5u~*UWf?*0xL{6b2=beKtPA25r`h> zNLAv$e^skq%}RAE*NIzc+WZ=^=TEXlkD>)o;GVLzYrUeCOP20eyIk>R)vFb2T)%Sx z*A;x1a9+cE5%-15x2s~uj30MwJXtbW%T_T*qBpSQQyt#9^ZzC>~$V_6h=h(Ar-_E_e z_wV4tiyu$Eym^Vv2qXXo09^a`?&H4)1AqVn_VV+?-|wD2feZNYC!l@=4k)014g^@> ag8TV5fIk30=mS>-7yt(V_+Y4Eh8F@W{gSN! diff --git a/obsolete/fonts/xerox/ITCGaramond30-B-c360.ac.Z b/obsolete/fonts/xerox/ITCGaramond30-B-c360.ac.Z deleted file mode 100644 index 2070f7a767a6d67b0d43c4e1dc42c57b7aff389a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmV+#0pDX037QWKw<>|765eUN2Q|xi5XzZq-hhU&Xg-B-i#RGr^=p0bw*Smv4%u65;sZo zg`ff;iGTzG0H*cdzpGxs0q_cM>_2>48E^oQRbbY&TzQz~XBI8lx@p(8WvezK1Gy0a z1Hb_QL58alvqt0^(JR=0V()rI%T+G}w|(Qz#XA{qWxkj#%l*fX&scwWPQy{n7OOyrpY`0gck#cQz0y^_Id*IW5u9sfZ1yp3-NSib<|}$^ g>C>tIp=Ry;b#$!LYg;#qo$~R}e1R_y&YXGqhzn_gZ2$lO diff --git a/obsolete/fonts/xerox/ITCGaramond30-B-c361.ac.Z b/obsolete/fonts/xerox/ITCGaramond30-B-c361.ac.Z deleted file mode 100644 index e5acedf2a055c8ff473db93531c075a634b82b88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmV;L0cHLlosbY100^)k36&v7!pI5J=8YRN03u3^2xCD20WDe)5HS$|hKL262!NJA z%|HMY037QW;9ouf6991NNK@j!e>H2~%t>=6&xt;NMhq&H=ue|Ok>*sY6Q|IjPMb47Ozk)pXjiIX%i26kmaW;eZr8${`&BL2x^eGH%`29#-M)19 z2DUmFYhkU2xhD3CcQM+=kOfC3JlSw%#FrIkW-PfgWzUvDV-~HMH0RH#L#H0Sx^(N) zs$;X3?V2|1*|=-xzOB1A@86G22Y)@>cJbZEeJ2Or)^YRA%cDORKAm`V!w&qZV);)W z00$@|Uc5=Zy!rF!)2m<4zP0EGV^osbY100^)k36&v7!pI5J=8YRN03u3^2xCD20X~Wl5HS$|28nJ2KntK` zAbU!0Bua!!CL5kk$UP@_tP dDp3Q01i%1*)5>+LSFT_H5SZ}wD^Q?ixdMHkFUtS` diff --git a/obsolete/fonts/xerox/ITCGaramond30-I-c0.ac.Z b/obsolete/fonts/xerox/ITCGaramond30-I-c0.ac.Z deleted file mode 100644 index 66fe0025824ce32cbb05f21f70b7eb814608facf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5530 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 diff --git a/obsolete/fonts/xerox/ITCGaramond30-I-c356.ac.Z b/obsolete/fonts/xerox/ITCGaramond30-I-c356.ac.Z deleted file mode 100644 index 2046050242b8490d2f59492eca7a564fbdd74630..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301 zcmV+|0n+{-osbY100^)k36&v7!pI5J=8YRN03u3^2xCEj03-Ym5HS$|hKK`f34oS> z$v^-Ds!Zs}vZc#^|6Hr#pGZ%sRAX*O^;)ezh6aXIY?Ug{CE%RcqU^6XE7u>y<9pw|2?m-ODv^T)%Vq ziUk}|ZehZ1`wBL@7;R&CQFm7TnRV#Y zuvf=!J^Qun+q7}phTMS4o|XjwGyrflA}*N7lPh1&ym{DM5{EgTPQAMI>)5kv-_E_e z_wV4tiyt2rSwsQ}fB^uvzCHW*?ZFTy0LVQ6`2-rMmk$F#e>eaD2#; zdIemU@Lj`s5${#pm+@b@f;&bI>v%Ba%91ftzRWqW=BuA0P6pk%aOuOR6Q^Fhx^e5r zo?lyzP1|&B)VEdVX1&|>*p3AN1RpLDk;F(6J4vJ^Q5e?e(4*5eCh?d=WD=7}-_E_e z_wV4tiyu$Ey!rF!(@RuF00A%n;NZ)TPagmn00b7iug`zJ|N8`3u%CbZ6-eNL1_Ic? bfCe@wAAkeI=K}yMX+=N*Z~%ahh8$)H3E!3k diff --git a/obsolete/fonts/xerox/ITCGaramond30-I-c360.ac.Z b/obsolete/fonts/xerox/ITCGaramond30-I-c360.ac.Z deleted file mode 100644 index d053bd422742ea9410d1d7fcb23ec499879cefb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmV-%0gnD3osbY100^)k36&v7!pI5J=8YRN03u3^2xCEj03k{c5HS$|hKLviKuZ8- zAOHy+0sLE;4?qS09X$4nGjZj=mKtEntX0$BO#mEpMo4M1CCZo(QlaSilY-8O3MBTB zC`aNdiO>*a03;EZ#F7#5Nc;f+0)P+v%pUlMFXBIc000g62gvIOa3wLo6N>=`SqvD^ z0$z&`hf059=faD4H=b|rELyc}-NKbi*DhX< zdp-K~7?|H+wuav({bIw5*k#q=9fZ$gWZC6@@s1f*9gmg^^+3iosbY100^)k36&v7!pI5J=8YRN03u3^2xCEj04-V(5HS$|hKL2A2!NJA z%|HMX{I%#v;9ouf6aaAONK@j!e>H2~%t>=6&xt;NMhq&H=ue|Ok>*sY6Q|IjPMb47Ozk)pXjiIX%i26kmaW;eZr8${`&BL2x^eGH%`29#-M)19 z2DUmFYhkU2xhD3CcQM+=kOfC3JlSw%#FrIkW-PfgWzUvDV-~HMH0RH#L#H0Sx^(N) zs$;X3?V2|1*|=-xzOB1A@86G22Y)@>cJbZEeJ2Or)^YRA%cDORKAm`V!w&qFV);)W z00%H51`u$wy!rF!)2m<4zPosbY100^)k36&v7!pI5J=8YRN03u3^2xCEj06vNk5HS$|28nG1KntK` zAbPwnlx?VoT+o?#GXDQ0u8FOL%%p32k4v-Qz8VLP@_tn g8dYKj0tkQs0JpU(*RKG;03a{{kk_z5)0zb<7BW35?EnA( diff --git a/obsolete/fonts/xerox/ITCGaramond30-c356.ac.Z b/obsolete/fonts/xerox/ITCGaramond30-c356.ac.Z deleted file mode 100644 index 2ff79b895f67c9675f39eb121e18f4d9876a4fa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 300 zcmV+{0n`2;osbY100^)k36&v7!pI5J=8YRN03u3^2xCD203-Ym5HS$|hKK`d34oS> z$v^-Ds!Zs}vZc#^|6Hy<9pw|2?m-ODv^T)%Vq ziUk}|ZehZ1`wBL@7;R&CQFm7TnRV#Y zuvf=!J^Qun+q7}phTMS4o|XjwGyp(AA}*N7lPh1&ym{DM5{EgTPQAMI>)5kv-_E_e y_wV4tiyt5MSVRH|fB^uvzCHW*?ZFTq0G~a92I}R*0I(kp0RQl~2Y`C{@dp6%!HnDh diff --git a/obsolete/fonts/xerox/ITCGaramond30-c357.ac.Z b/obsolete/fonts/xerox/ITCGaramond30-c357.ac.Z deleted file mode 100644 index a0dc6681d07b5700c3afbb7a74a048e7b69ab4bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329 zcmV-P0k-}hosbY100^)k36&v7!pI5J=8YRN03u3^2xCD203*y05HS$|hKK^*34oTs z%0K`K{(0zl(EtDh00sbX;IC9i0RUVshzX!WKOP+kYM@03rau zd7z_JiU0mxy_$8a)vjJAcBN@EY($?x%>p=@RBZu#V${k709I{Xvvn6+cq zkUzt|EW7q;+o^G{*4>)-YqA{+01!@GA|i>ABzBTWOQNu>(4$MQTTG%ciN_=&o6fzv z_wV4tiyu$Ey!rF!)2o-5i~s^)0KmncFTXwjFaQWFfN#G){r~t8U;%&s`Db8(2p$+< b0|XxE;CulJ;12*kctt<~Z~%ahh8$)HgeH;1 diff --git a/obsolete/fonts/xerox/ITCGaramond30-c360.ac.Z b/obsolete/fonts/xerox/ITCGaramond30-c360.ac.Z deleted file mode 100644 index 8279eb35243735c6f2edb2a6f5a34a7da4bc35fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmV+r0q_1FosbY100^)k36&v7!pI5J=8YRN03u3^2xCD203k{c5HS$|28sU!KuZ8- zAOHy+Q&Iq6!DGK#DJ6bviQ#3;h%*61xG50=O8^j3q2TGWWkdxMXGnw?v64hv2q*xO z2uL6RU{?SAo2nHY0Il$@GWb|kU|9fFIf&))^&h^rVZn+e%fM{ihz!(5WE&9&00bDO zMywhUYecPF|9O>*m9Aa8YO%7_`j#@>xoGd6O`CZ#KRjRk!3jNDFj|R#O#?zuIP2E7 zi~ogfocVF)$P6aCZChD3=FOV(p4Q!)Ut8mH2~%t>=6&xt;NMhq&H=ue|Ok>*sY6Q|IjPMb47Ozk)pXjiIX%i26kmaW;eZr8${`&BL2x^eGH%`29#-M)19 z2DUmFYhkU2xhD3CcQM+=kOfC3JlSw%#FrIkW-PfgWzUvDV-~HMH0RH#L#H0Sx^(N) zs$;X3?V2|1*|=-xzOB1A@86G22Y)@>cJbZEeJ2Or)^YRA%cDORKAm`V!w&qFV);)W zfCd04L<}I{rup;e)2m<4zP&VB|$`oRlE|fNTi4e7GzC diff --git a/obsolete/fonts/xerox/ITCGaramond30-c41.ac.Z b/obsolete/fonts/xerox/ITCGaramond30-c41.ac.Z deleted file mode 100644 index 21eb2134727eb21a762b8a5556843504e2bf8cc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmV->0EGV^osbY100^)k36&v7!pI5J=8YRN03u3^2xCD206vNk5HS$|28nD0KntK` zAbU!0Bua!P+LR{&rD5RmY7E6}rDxdK5WE$#pS diff --git a/obsolete/fonts/xerox/ITCGaramond36-B-I-c0.ac.Z b/obsolete/fonts/xerox/ITCGaramond36-B-I-c0.ac.Z deleted file mode 100644 index 4fe8ccffeec1da9d109ce843bc00525a40381217..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6700 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 DJB*Ko diff --git a/obsolete/fonts/xerox/ITCGaramond36-B-I-c357.ac.Z b/obsolete/fonts/xerox/ITCGaramond36-B-I-c357.ac.Z deleted file mode 100644 index 96a778ce423d9482a6c46efaa9d0f8b225908e3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340 zcmV-a0jvHWosbY100^)k36&v7!pI5J=8YRN03u3^2xCEj0VB*1us0C^hKK_K2!NKr z%0K`DI|2{@-~fOG00sb%pmJqP01sjU7|}0I#{xGu=%i3nrpuf%3;gprQDy`HKo!)i z`S0IUl~u2H%&Jvl)(HNrcHQZ3%2)ss{INTGK*iIuW4Xo^I~T6pu6MQOy}Ea5U#fKR z2G%>6Z(+ZO0ozTCmGM@`6aO||O!=(j$Cc|^hU}Gd#LJOA0|4DQvtZMNQ5#l`n6=`~ zt|!But-1DT+P7_|h7ESG0RX=d0GEhJq9lo;B>Ix*tg7?p(B)E-SWTieiPxfQ-_E_e z_wV4tiyu$Ey!rF!C1N9x02lyp@8iRtA0G?=0uS8N-!H#EfB5zhuz`O575JZl2p&jZ mfcYipAb$ZC@Xlz!d;m;??$ty90&oC;4*>jtC}N0w03aO76`pPY diff --git a/obsolete/fonts/xerox/ITCGaramond36-B-I-c360.ac.Z b/obsolete/fonts/xerox/ITCGaramond36-B-I-c360.ac.Z deleted file mode 100644 index deb04f246f43e548ce4f76c79fcc07fbeb3bfa77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 500 zcmVgosbY100^)k36&v7!pI5J=8YRN03u3^2xCEj0U=5dus0C^hKK>$34oRW z%s>DYIs*9T?;kz@9{`L1(7_+0i7Z_L03nm6O`I)Xis(7PA3LBrKh7+ARASDT8G1%k zAQ6qkWFTRH%){UVu#R6RhLs4eBcG0cfCZ5F!(RYE5kLHk2N%GBfB(V)!wWAWum}J6 z`33OjU&OL^;hqg}=xf>lfxfnVTUIVzlXvr$T{(9%;C`D4=araPBIB`;Q3DDM0FcRv ztOLZ3J$4{m1|Vt!(5;&_fU^@Hvvph7a^1{&`T7Mcc(>@ocK<0J*qE@|$N(mH2~%t>=6&xt;NMhq&H=ue|Ok>*sY6Q|IjPMb47Ozk)pXjiIX%i26kmaW;eZr8${`&BL2x^eGH%`29#-M)19 z2DUmFYhkU2xhD3CcQM+=kOfC3JlSw%#FrIkW-PfgWzUvDV-~HMH0RH#L#H0Sx^(N) zs$;X3?V2|1*|=-xzOB1A@86G22Y)@>cJbZEeJ2Or)^YRA%cDORKAm`V!x8*lZJ7^% z1dkB|2)IeUy!rF!)2m<4zP06266@Dc#*Sjb02&sgX|M27$afCDVL_&`L) zxOhNBZn!vrgnsBKArCGFARz`83K>z65(1E+kpSQ^P?AnE$pZj8MnnJr2P7HM2OV)a z5sUyJ@ZAp*0`Z51;JEbRKl}jD4x0cxf{q^mwCDo>#{e^96M)><2Ot9gkOQCq!~jg7 V00492hcf~IhnFz?Akm!>-3e&Q*hByT diff --git a/obsolete/fonts/xerox/ITCGaramond36-B-I-c41.ac.Z b/obsolete/fonts/xerox/ITCGaramond36-B-I-c41.ac.Z deleted file mode 100644 index a9673e1c5752de25056b13c2347d5c13f011a7c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 zcmV;00DAu)osbY100^)k36&v7!pI5J=8YRN03u3^2xCEj0X~Wlus0C^28nV6KntK` zAbiP@_tn n8dahO0ttWt0JpU(*RNf{FulMP9ssj&0Eh+3R$|$+0Md#Dv6M3Y diff --git a/obsolete/fonts/xerox/ITCGaramond36-B-c0.ac.Z b/obsolete/fonts/xerox/ITCGaramond36-B-c0.ac.Z deleted file mode 100644 index ae4c196bc995c94b38addc54f6c4c97c9dff30f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5979 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 lZWD6K{B)|VvFYB!k; z$v^-D{AKINvZc#^|6HoP2LLz#-~mbi6j~yn zSpWcmoe_t&)H*XJR<1U^?gTrLY)-L0(E?Q~lr2%LJl$@U+ZC?ataQWL&0Ci5*}Z_j z`o$Y~?BKYC()5kv-_E_e z_wV4tiytrcSwsR4fB^uvzCHW*?&HH}55{VN`tShc&tD&XeK-K%;8B1C;sF4F`N5|i IdjP@!05^7#8vpTYosbY100^)k36&v7!pI5J=8YRN03u3^2xCD20VB*1us0C^hKK_G34oTs z%0K`M_$lfr0KfqN2>=WL5aHh%mM#H2kO^RfziJ%|oPXTIDy(|~|*I3oZc z06;;_`!@b?ce7ea^?0SDj#06!mw2qK6c0xM6OTmS$7 diff --git a/obsolete/fonts/xerox/ITCGaramond36-B-c360.ac.Z b/obsolete/fonts/xerox/ITCGaramond36-B-c360.ac.Z deleted file mode 100644 index 7afa5f2d99c3158215e3a8cef57366a3014be3f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 346 zcmV-g0j2&QosbY100^)k36&v7!pI5J=8YRN03u3^2xCD20U=5dus0C^hKK=j2!NIV z%s`IH{{ag7513a#;I@L<8aF^7a9;0*%?FI_TC{%I zy8T)g&|Ja;?}7ve5*SE82tIJtY7+pU%3&FY9UGS4S+iv=4>%w?>t&mlABa{R_FdYu zo)b#1-G|v z*uVeMg0Eiquywn52Xdz_xP4}}>9r!4h@ir9%gx`O<@^sc;O~OHRo-=kZ5P%d-aX>o sGk-mEmNQ+=CtpPM-M5uPwnlx?VoT+o?#GXDQ0u4IUXVINUaVE`qGpNv}PM7k8 zN|dTmt4Ogb)ymZAQ?CG|b`<-Q>r}90YnmOqwk+DVYTwHBn)WMQxOSuB4ZF84-?@4L zR~3Afa8|=x5qG_-_$=ecfgul;T$u7<%ZV{Bj?8&-=gOZiht52Dv***GQHxehnziZF zuvf=!J^Qun+q7}p&dqzbZ^xy9yB1!XxNhUUk^g4fn7L-<(47aDKAd{t2>;fs{Fe_v z1dkCf+8j^5y!rF!)2m<4zP}Y FQUaJ<+=l=F diff --git a/obsolete/fonts/xerox/ITCGaramond36-B-c41.ac.Z b/obsolete/fonts/xerox/ITCGaramond36-B-c41.ac.Z deleted file mode 100644 index 4aafb785bdc3a1e642daa8c5f6d9ecbc9e33ec26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmV-~0DJ!*osbY100^)k36&v7!pI5J=8YRN03u3^2xCD20X~Wlus0C^28nV6KntK` zAbPwnlx?VoT+o?#GXDQ0u8EjM87y43Fy24fPh2@Hls?N mN>!>v4FnPZ0|1Vz*REi_f@ykTEIa^b&yEesR-#$7aK{3Jy)T0R diff --git a/obsolete/fonts/xerox/ITCGaramond36-I-c0.ac.Z b/obsolete/fonts/xerox/ITCGaramond36-I-c0.ac.Z deleted file mode 100644 index ff1c8bc9a89d33228e7cac3742582297f52055a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6505 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 QAcYE0nQe_xG z$v^-D{uS!TvZc#^|6H)5kv-_E_e z_wQbtMI_(=7yxkR)1zOnzCC*|R0*Jm2LKKL_~hZk0HFIL4gmk*QD1xJnWrBBVE&F+ diff --git a/obsolete/fonts/xerox/ITCGaramond36-I-c357.ac.Z b/obsolete/fonts/xerox/ITCGaramond36-I-c357.ac.Z deleted file mode 100644 index 5832dbc6d1cfb8cd4859dd788bceb3ec44fdfd05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 338 zcmV-Y0j>TYosbY100^)k36&v7!pI5J=8YRN03u3^2xCEj03*y0us0C^hKK_834oTs z%0K`DI|2{@-~a#w00sb%pmJqP01jdT7|}0I#{xGs=%i3nrpuf%3;gprQDy`H1OOY34oRW z%s>DYIs*9T?;kz@9srC0(7_+0i7Z_L_#l&}O`I)XhUhuLA3LBrFAz0~^ySBy5fw-* zBXJnW6Cm3#@Bpl1*NI;xnw-d|;}2i~B!2K008qpO|Khog`0w9WU=RMmi`exKKfVCq zMl>1VklV5W0(Cvxw(HuqCgI8*TNfC(h$e?Kn}79RUdeZQEu5 diff --git a/obsolete/fonts/xerox/ITCGaramond36-I-c361.ac.Z b/obsolete/fonts/xerox/ITCGaramond36-I-c361.ac.Z deleted file mode 100644 index 1d528db12570b000aace54a9c24caea89c599096..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 464 zcmV;>0Wba^osbY100^)k36&v7!pI5J=8YRN03u3^2xCEj04-V(us0C^hKL372!NJA z%|HMb{1xj+;2%B!832UnNK@j!e>H2~%t>=6&xt;NMhq&H=ue|Ok>*sY6Q|IjPMb47Ozk)pXjiIX%i26kmaW;eZr8${`&BL2x^eGH%`29#-M)19 z2DUmFYhkU2xhD3CcQM+=kOfC3JlSw%#FrIkW-PfgWzUvDV-~HMH0RH#L#H0Sx^(N) zs$;X3?V2|1*|=-xzOB1A@86G22Y)@>cJbZEeJ2Or)^YRA%cDORKAm`V!x8*lZJ7^1 z1dkB|2)IeUy!rF!)2m<4zPPwnlx?VoT+o?#GXDQ0u8EjM87y43+S`}fPh2@Hls?N jN>!@F3D?9*j#0FhE(=1xG9mFll diff --git a/obsolete/fonts/xerox/ITCGaramond36-c0.ac.Z b/obsolete/fonts/xerox/ITCGaramond36-c0.ac.Z deleted file mode 100644 index 2a64e8f9a360ed4074c8906947087b3b6e097e73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5712 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 ban&|(3$yoI?g2%r0h_wgHJW_mGywkxs*d`s diff --git a/obsolete/fonts/xerox/ITCGaramond36-c356.ac.Z b/obsolete/fonts/xerox/ITCGaramond36-c356.ac.Z deleted file mode 100644 index 1296250e9974b30246874a347ca3bcffce4cd0a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 299 zcmV+`0o48 z$v^-D{uS!TvZc#^|6H)5kv-_E_e xcdyMN5^w+v066pL&#O<*emxkf1m42~F#rAd_b@!_#{qyp9032VS6+Ge0RRhyj$Hr% diff --git a/obsolete/fonts/xerox/ITCGaramond36-c357.ac.Z b/obsolete/fonts/xerox/ITCGaramond36-c357.ac.Z deleted file mode 100644 index 37c96ed76c7bba18418385cb94485bfac0a4b156..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328 zcmV-O0k{4iosbY100^)k36&v7!pI5J=8YRN03u3^2xCD203*y0us0C^hKK_434oTs z%0K`DI|2{@-~a#w00sb%pmJqP01jee>=&nFftwn1Qm84@Wlos|{`H*5GJ;M8HEaI+ z7ggodsvWOlm3TFRKdM_X`kN9KzyyEn${tYRv}{taq#Cjk;H=T)Thq z2G%>6Z(+Z54_j57mGQ*BixW#O3%T*+xs)Aq)f}<%W6l6PZ@vtev|!VOQ5#l`I5X?W zu47}KU0QZ++NWK64Qv2F@81#;NsJ^Bl*C;Ul}%mFyg6KF5}!$gCNY}x>)5kv-_E_e z_wV4tiyu$EyhLdP5C8)Jj=lT#@Bx4UK)}KJ`1s%J&p)4lhWq;knBRZ`78qZD_8F+) af%FaV05Jam^I%j27=Q-={9veIh8F_7`;-0v diff --git a/obsolete/fonts/xerox/ITCGaramond36-c360.ac.Z b/obsolete/fonts/xerox/ITCGaramond36-c360.ac.Z deleted file mode 100644 index a0f04688be15d21ade143bed347a023021a284f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 335 zcmV-V0kHlbosbY100^)k36&v7!pI5J=8YRN03u3^2xCD203k{cus0C^hKK=P2!NIV z%s>DYI;#A*0YC?Tj8sbW;L#;anGtEWoZycgP5=}D?Ckk7Xv>HSB<_%iM`A6B-Vk5_ zbP)hmKmdRR!20hWJ^)?)f$ci>A0Vw~uYyr~6&%$-;Isw;)-@lXuw~1h-3pBDR+C%7 zffPIt7)U?}JYbCoXaHl!V+D8p+Lhl}v5gH_9dNO6=K+ozKiE9F>$$O%|5?V{*umz| zoHu{&e86$n17l17!`&6@VyhB=C#K4HYgXfvFX!!Q7H!|ZegU}+09P*Ee|GUQ*Xum` z+Q3)?#4XJHZrAJo(2r*vTp|Jr#H|`fi(2{i^4+292lQRK^{$6p_lSAVjO9#L?Xefp hd+}X$99Lf1M;3m3dDm8W;{|}8dFe5yo?!|C7ZLwfnuq`Z diff --git a/obsolete/fonts/xerox/ITCGaramond36-c361.ac.Z b/obsolete/fonts/xerox/ITCGaramond36-c361.ac.Z deleted file mode 100644 index 5c192ef7552968c7a2e067b92da1e4b40cdd70cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 453 zcmV;$0XqI4osbY100^)k36&v7!pI5J=8YRN03u3^2xCD204-V(us0C^hKL2+2!NJA z%|HMb{1xjM;2%B!7663kNK@j!e>H2~%t>=6&xt;NMhq&H=ue|Ok>*sY6Q|IjPMb47Ozk)pXjiIX%i26kmaW;eZr8${`&BL2x^eGH%`29#-M)19 z2DUmFYhkU2xhD3CcQM+=kOfC3JlSw%#FrIkW-PfgWzUvDV-~HMH0RH#L#H0Sx^(N) zs$;X3?V2|1*|=-xzOB1A@86G22Y)@>cJbZEeJ2Or)^YRA%cDORKAm`V!x8*lZJ7@M z1dkB|2)IeUy!rF!)2m<4zPjzkaq1CK->xFpdJfbby^4*+-|5gY(GAQ2b<91sy04-OC!JHP-iz=FrL7{G#u z$he>(HUfa-KnpsNBOf{9@ZgLQrMMsfAetBv9soSBVTTbR@ZAFs0`S920Q|wvQ2qb_ v20lIj5Dqv_HUo@_HL7?BASxCD$VE-C2|ylzmiP@_tn j8dYKj0tkQs0JpU(*RKG;Fts2S9ssjqfvW9T_H0-HZn-a! diff --git a/obsolete/fonts/xerox/Logo1.wd.Z b/obsolete/fonts/xerox/Logo1.wd.Z deleted file mode 100644 index 54e8726bc564c948f2b59616fc8342136216000c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmV;N0Av3josbY100>Zk$&({bVgOjkuwg?W2?78BA%uWEhYA;_fGClofldy!Fx(h% zq7Vc{91a@E(PV=i4q1&H2mpb~<2^1b!{&qnVqK03?n1a^=cU0A8j{ zc?iJKWl;g>0`Nzx(x6>mR>j)2EX|orTC!wlvufL*Dc_zvY4ar3s(1lZ?P3)`6|O3? zIt@J7P0Pao5Gzj1c(LQgkRMBq47p~|JBWR%o$2&(V2phEVjMgZBj>0EGV^osbY100>~<2^1 z%|!rr0PFzZ1`tCg0AQNLm~v&xJ1%nq(8+VB&z?E~_yhX0DAA)vlOkPOlx5G0OqoJe dN;PWLt5&o6M5(na)~{Z}f*mWi>{yg&0RT=oGaLW_ diff --git a/obsolete/fonts/xerox/Optima06-BIR-C360.wd.Z b/obsolete/fonts/xerox/Optima06-BIR-C360.wd.Z deleted file mode 100644 index 0ec03c1050ffd0c2b2c66f1a8fa6d940122378d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*Y5Lm>*kj1ZS5@Rsop?wX56Qc)fi=v7H LLjaS-mPv{LzDf^< diff --git a/obsolete/fonts/xerox/Optima06-BIR-C361.wd.Z b/obsolete/fonts/xerox/Optima06-BIR-C361.wd.Z deleted file mode 100644 index dfd7b2e3081e41a0b304de4a8c233feac103dc2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162 zcmV;T0A2qdosbY100>~<2^1K5@iOExDO(p<JFR79~#-8z-4*REi{iVaIvEPy*_)846xcJ0=)Y}K+Y+mZ+XyF`fQ9n0`g%|ieH Q3vTI`FVQ~$5dS&M5P2y;n*aa+ diff --git a/obsolete/fonts/xerox/Optima06-BIR-C41.wd.Z b/obsolete/fonts/xerox/Optima06-BIR-C41.wd.Z deleted file mode 100644 index 6142d5f81d88c6a3460575334b1596a2fef34c8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80 zcmV-W0I&ZaosbY100>~<2^10vL(xxE@Q%+DYGU`m={@I%xSadO`i-g3S|fvq8p?D diff --git a/obsolete/fonts/xerox/Optima06-BIR-C42.wd.Z b/obsolete/fonts/xerox/Optima06-BIR-C42.wd.Z deleted file mode 100644 index d63e9421e50818340ec4e7c7f933aec503487ef7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*YP)K57$l}*Eu`v*6=xCe3;J|cDK$!sm DLpBWQ diff --git a/obsolete/fonts/xerox/Optima06-BIR-C43.wd.Z b/obsolete/fonts/xerox/Optima06-BIR-C43.wd.Z deleted file mode 100644 index 2dd8aae59dafe22d7fa22ca92b948c7bd89e3db3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmV-20L}j&osbY100>~<2^1;OOn I7{ieO0Ef;G`~Uy| diff --git a/obsolete/fonts/xerox/Optima06-BRR-C0.wd.Z b/obsolete/fonts/xerox/Optima06-BRR-C0.wd.Z deleted file mode 100644 index e678c10c057afb698eb5cd3fb645036a3e918376..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 231 zcmV~<2^1{@Io$;mC%K`t@tHFioSL4F@$-xwT`r hmj51hO`GAcwya-YZOe5e;>))g>H@7a_guY70RWi^W9R?? diff --git a/obsolete/fonts/xerox/Optima06-BRR-C356.wd.Z b/obsolete/fonts/xerox/Optima06-BRR-C356.wd.Z deleted file mode 100644 index 224abb6e39560d3a2bc5b326f988224fcc576f6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?cyOG*A(LO%#Ku6Nfuo;6fpG?7kD_TC E0Bg4nZ~y=R diff --git a/obsolete/fonts/xerox/Optima06-BRR-C357.wd.Z b/obsolete/fonts/xerox/Optima06-BRR-C357.wd.Z deleted file mode 100644 index 8aa5cd20f9ff7324c0ba4dc36f63c5bbe5645519..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmV->0EGV^osbY100>~<2^1UzzraVOaR0@NiF3{n|EI71hBIw&!0Yb0`M0UsL`TGk19>d)M!heBbzpj dy0ofPt5~mU{h4yB*Q{W_iVaJ4tXZ-+83HAdGRFV_ diff --git a/obsolete/fonts/xerox/Optima06-BRR-C360.wd.Z b/obsolete/fonts/xerox/Optima06-BRR-C360.wd.Z deleted file mode 100644 index d7c50952805b6212675a6243a45774e2c6f675af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?5Lm?0kjbxW5@Rsop?wVlAEO6ri=v7H KLqJ;$Cj$VucMlT) diff --git a/obsolete/fonts/xerox/Optima06-BRR-C361.wd.Z b/obsolete/fonts/xerox/Optima06-BRR-C361.wd.Z deleted file mode 100644 index 41995838e0770d581e6df9c87323efb756bb9c68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmV;Q0AT+gosbY100>~<2^1*EMvB0h)E`ZJ2!9Iyd$&cOq)ai1SR5AsL!JeL)jb#fT>fL!;ngy z2_RI}szsIl+&Z-@*RNi~f*mWiELEInb)HpQ)Q!zQ0O0<4YgVXTqFarUrF!UX+`n@f N1~%(bCCt1i0RY>KLJI%@ diff --git a/obsolete/fonts/xerox/Optima06-BRR-C41.wd.Z b/obsolete/fonts/xerox/Optima06-BRR-C41.wd.Z deleted file mode 100644 index 8adf037c3f56f4b7c0ddc203edd464eadf105320..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImNYosbY100>~<2^10vL(xxE@Q%+DYGU`m;k7;%$f71&7VF~@}$NS0Dz<)p#T5? diff --git a/obsolete/fonts/xerox/Optima06-BRR-C42.wd.Z b/obsolete/fonts/xerox/Optima06-BRR-C42.wd.Z deleted file mode 100644 index f2aa3a91a6b54dd8fce4089e6c737e8f26213875..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?P)K5F$mG{Gu`v*6=xCe3;J|cjf|N4= DO`Q%J diff --git a/obsolete/fonts/xerox/Optima06-BRR-C43.wd.Z b/obsolete/fonts/xerox/Optima06-BRR-C43.wd.Z deleted file mode 100644 index 225b0585244070c64223e59d017c1f307bad64f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?Q1BLO$mG{Gu`!tNaDOpF8p937o`-yG E0B6n*)c^nh diff --git a/obsolete/fonts/xerox/Optima06-MIR-C0.wd.Z b/obsolete/fonts/xerox/Optima06-MIR-C0.wd.Z deleted file mode 100644 index 851964f6dc423fa3a2483a60b48c957af03a9ad8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmV~<2^10EGV^osbY100>~<2^1{yg&0RXrkFxmhB diff --git a/obsolete/fonts/xerox/Optima06-MIR-C360.wd.Z b/obsolete/fonts/xerox/Optima06-MIR-C360.wd.Z deleted file mode 100644 index 2d54f0ee1e54f341d2ffd326114efb64e1e982b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+T5Lm>*kj1ZS5@R61&{Y3}A%STE7sp}e M28JapAKF!&0nbMe+5i9m diff --git a/obsolete/fonts/xerox/Optima06-MIR-C361.wd.Z b/obsolete/fonts/xerox/Optima06-MIR-C361.wd.Z deleted file mode 100644 index c4e570298f79009fb60d4f45cf002ee79bf5e337..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmV;R0AK$fosbY100>~<2^1*EMvB07)mApGdFMAG$XU;Oq)ai1SR5AsL!JeQ`sB_fT>fL!;ngy z2_RL~szsIl+&Z-@*RNi~f*mWiELArE(5kh$_G?<3cL2n_1J^8o9e3{*-60kx)jt3L O3wHU(tWA}E4>JT&T|S!t diff --git a/obsolete/fonts/xerox/Optima06-MIR-C41.wd.Z b/obsolete/fonts/xerox/Optima06-MIR-C41.wd.Z deleted file mode 100644 index bf21c2b1c36f4d5100d60859a507699935e72797..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80 zcmV-W0I&ZaosbY100>~<2^10vL(xxE@Q%+DYGU`m={@I%xSadO`i-g3S|fsA{&$d diff --git a/obsolete/fonts/xerox/Optima06-MIR-C42.wd.Z b/obsolete/fonts/xerox/Optima06-MIR-C42.wd.Z deleted file mode 100644 index 7f14b0f47e65735e2a138910ef50d6fe84c9602a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TP)K57$l}*Eu`v*6=xCe3;J|cDK$!sm DLB~<2^1kB>Yu2s+0Gh368UO$Q diff --git a/obsolete/fonts/xerox/Optima06-MRR-C356.wd.Z b/obsolete/fonts/xerox/Optima06-MRR-C356.wd.Z deleted file mode 100644 index 78db5164874428773de363ce7e3ec13a7e75d807..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-cyOG*A(LO%#Ku6NfrCMd!GXzuS;9Gs GhY~<2^12^ z;U56h0Neqv1ArMo44D9s=?0}rmN)Of+zEiE&z?Yk@+2rUsL`TGk19>d)F=QqKT$Sq eDs`#VsaLaN-3nAC*RNW`f*mWiEZMVVb20=FkueAW diff --git a/obsolete/fonts/xerox/Optima06-MRR-C360.wd.Z b/obsolete/fonts/xerox/Optima06-MRR-C360.wd.Z deleted file mode 100644 index b3e72dccf01a5b795b9365903b5cb8138b662d95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmV-70LcFzosbY100>~<2^1~<2^1*EMvB07)mApH#Y&?vFS#p&zUxf01!&#=g^->8K$zS3qaGSE_EfH zIuk%Dt5%IJ1~<2^10vL(xxE@Q%+DYGU`m;k7;%$f71&7VF~@}$NS0DS}>kpKVy diff --git a/obsolete/fonts/xerox/Optima06-MRR-C42.wd.Z b/obsolete/fonts/xerox/Optima06-MRR-C42.wd.Z deleted file mode 100644 index 6257198b6927efc04d73243b4e8d458d53065918..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-P)K5F$mG{Gu`!sCmuP G4~<2^1x&ZhCz#brmx&X)mKm-6vl!sc<)LFA;&Yu8)3JprMr%ro1-RKMj0Fz7r!&XX- z8TBRrrgs38gQ~S@SEfLtGTrJlr&E+QtGsNvHYZb-Od;7MD%U7WCS9E}W$M%n0Hr9M zW{sM)uvC_RUMdE#xH03$jw3^!EV(k}$tj8cTpV<5O_qlwOGWC}FH*!ik$%?9+KuJc mkJ(-Z;1@CM+YGs_bsakufIDlqo^}jCH$!TobDCK@)++$fa$?^A diff --git a/obsolete/fonts/xerox/Optima07-BIR-C356.wd.Z b/obsolete/fonts/xerox/Optima07-BIR-C356.wd.Z deleted file mode 100644 index f694754df4cd8a71cb5dda20c70da1d130f472f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*YcyOG*p_*UU#Ku6NfrCMdVF}X)W(ntN G9!3C%Tn;|~ diff --git a/obsolete/fonts/xerox/Optima07-BIR-C357.wd.Z b/obsolete/fonts/xerox/Optima07-BIR-C357.wd.Z deleted file mode 100644 index 2619347f9f66f7602cdf5d911d9eeb1af251a54d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124 zcmV-?0E7P@osbY100>~<2^1d)TqjzB%3yk ey0ofPt5~mU1^P6r*R5c`iVaJ4tl6?Kb20?V$}!CV diff --git a/obsolete/fonts/xerox/Optima07-BIR-C360.wd.Z b/obsolete/fonts/xerox/Optima07-BIR-C360.wd.Z deleted file mode 100644 index d52c40fa9fa51fcb691f80f7f1454091483a7d09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*Y5Lm?0P|dGv5@R61&{Y3};RKTb569tv N28Jap4V(@dZ2<7%5h?%x diff --git a/obsolete/fonts/xerox/Optima07-BIR-C361.wd.Z b/obsolete/fonts/xerox/Optima07-BIR-C361.wd.Z deleted file mode 100644 index 30dd0f9fcb41d3390ed479305bf76e60ec70d173..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmV;Z09XGXosbY100>~<2^1*EMvB0C`%@QKR0jM{3EmHOq*2z1g+vzsL!JehuO5q6hJwbPk%~9 z>T(zWt4gI_r8>1M*RNi~f*mWiELZ@C(5gLTGcDV$I%fiaG~<2^10vL(xxE@Q%+DYGU`m;mgt%$f71&7VF~^0dbj0DK`I!vFvP diff --git a/obsolete/fonts/xerox/Optima07-BIR-C42.wd.Z b/obsolete/fonts/xerox/Optima07-BIR-C42.wd.Z deleted file mode 100644 index d0e9ab501ca3fd39093eb868bc5c3610670b1419..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*YP)K5FsOHx-u`v*6=xSTZu!QN@1vzH` DQ~<2^1b!{&qnn$d03?<5GN?+JE}6_! z3g8Zab^u(K1Aqy@)})XCgmszfX4tM>P0FmoawS8RUEu~bc@}_FsWzoxtuFu?xNQ^w diff --git a/obsolete/fonts/xerox/Optima07-BRR-C356.wd.Z b/obsolete/fonts/xerox/Optima07-BRR-C356.wd.Z deleted file mode 100644 index 1586b2e2218d66f6fae435bad4bf60d6fcace33e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?cyOGbp_*UU#Ku6NfvcY(i17wvkD?m` E0A~<2^1*P|dGv5@Rsop?wX56QcxMOQMzo LLjco(Et3=h!F~`f diff --git a/obsolete/fonts/xerox/Optima07-BRR-C361.wd.Z b/obsolete/fonts/xerox/Optima07-BRR-C361.wd.Z deleted file mode 100644 index 2a02146ff1786c84afda916a40b4503f22cf6dbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmV;Q0AT+gosbY100>~<2^1*EMvB0C`%@QLpN{QJS4N{Oq)yq1ZCn=sL!Jeb=kDYRHVytNTbdK zpo=QiqDp^imCALi*REi{iVaJ4>K_1S)7n()746QPJg3GD3xG)7x~<2^10vL(xxE@Q%+DYGU`m={@I%xSadO`i-g3S|fjlN(?F diff --git a/obsolete/fonts/xerox/Optima07-BRR-C42.wd.Z b/obsolete/fonts/xerox/Optima07-BRR-C42.wd.Z deleted file mode 100644 index 4b88cb54fc57ee5d3e9fc7d0de390003e5ae072f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?P)K57sOHx-u`v*6=xSTZu!QNDfHDIB DM&u1~ diff --git a/obsolete/fonts/xerox/Optima07-BRR-C43.wd.Z b/obsolete/fonts/xerox/Optima07-BRR-C43.wd.Z deleted file mode 100644 index 67e9552c5a57e458da84860ade6fad0c5c0cc487..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?Q1BLGsOHx-u`v)}XsW-*aE9Rki-fZh G4~<2^1=94-i9L0ALaUaPs6KmH=kj%gOVmPXIrI0v$S2C(fN_aE1Z^34kmB!vNd? z;0CJIlqs7|EoYV6P_LMVHjTQJYuKhsPtL63l4aYQVOK6~Y7;=%qAGcUwF_WrTB$Vo zu7o*t>dM0^T`C5!xH03$jw3^!EV(k}$tZ{VTnx1B%&LDR=S2!2=}yE(Kj#%{#6NyW{rEj7_M*)m+(jxPXG`)7{; diff --git a/obsolete/fonts/xerox/Optima07-MIR-C356.wd.Z b/obsolete/fonts/xerox/Optima07-MIR-C356.wd.Z deleted file mode 100644 index aee6efe46a1af654f33db920e3d20744f7d93261..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TcyOG*p_*UU#Ku6NfrCMdVF}X)W(ntN G9!3C#ybdn_ diff --git a/obsolete/fonts/xerox/Optima07-MIR-C357.wd.Z b/obsolete/fonts/xerox/Optima07-MIR-C357.wd.Z deleted file mode 100644 index c2ceac3ce07898812264bd2dd44c60fa38bc1075..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmV-^0D=D>osbY100>~<2^1;X6gfCvCLfEZQ*FcYOpmM&Qyipdi|&!0Yn0_`bssL-QElOkQJwCT~6KvOz( gDwV0#saLaN-5M0C)~{T{f*mWiEZMVWW3F5a0L#)aX8-^I diff --git a/obsolete/fonts/xerox/Optima07-MIR-C360.wd.Z b/obsolete/fonts/xerox/Optima07-MIR-C360.wd.Z deleted file mode 100644 index 6a7f7b7611a4d6dae244e69801c29e827b39fd56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+T5Lm?0P|dGvVq+k{&{Y3}VF{A~kA$-i G4~<2^1*EMvB0C`%@QJ2!9Iyd$&cOq)yq1ZCn=sL!JehuP!?fT>fL+>lD0 z31C>&szsIl+&Z-@*RNi~f*mWiEY(8*(5kh$_A7utHX#9!3n{Ky07UTOElNZz08BP9 R{T&RLVPUf_1uHHp7y#h>KX(8C diff --git a/obsolete/fonts/xerox/Optima07-MIR-C41.wd.Z b/obsolete/fonts/xerox/Optima07-MIR-C41.wd.Z deleted file mode 100644 index 5bda30c2e3c0f4d8f1eca020d65b5ee1dc55aa15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImNYosbY100>~<2^10vL(xxE@Q%+DYGU`m;mgt%$f71&7VF~^0dbj0C<5Pvj6}9 diff --git a/obsolete/fonts/xerox/Optima07-MIR-C42.wd.Z b/obsolete/fonts/xerox/Optima07-MIR-C42.wd.Z deleted file mode 100644 index fa45e73080e3d59f891a0ddeb74696a3ea59ba68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TP)K5FsOHx-u`v*6=xSTZu!QN@1vzH` DQY8-O diff --git a/obsolete/fonts/xerox/Optima07-MIR-C43.wd.Z b/obsolete/fonts/xerox/Optima07-MIR-C43.wd.Z deleted file mode 100644 index 92e65aae8bedaffc8d70bff80241ce29ad329bfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TQ1BLOsOHx-u`&1{zpwrp!x;t#771r1 G9!3Czs1CRQ diff --git a/obsolete/fonts/xerox/Optima07-MRR-C0.wd.Z b/obsolete/fonts/xerox/Optima07-MRR-C0.wd.Z deleted file mode 100644 index 9b1fe80f03e202d0be839712fa98f2dcdf2b3c83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 232 zcmV~<2^1b!{&qnVqb0AP9vU|3L~<2^1 z&qV--01yG-1`xw40AQNLm~v&xLoRay(8+VB&z?F1JOKK$DAA)vlOkPO6lKqgOqoJe eN;PWLt5&o6bc(gB)~{Z}f*mWiELoQ*(*gkP=rJPz diff --git a/obsolete/fonts/xerox/Optima07-MRR-C360.wd.Z b/obsolete/fonts/xerox/Optima07-MRR-C360.wd.Z deleted file mode 100644 index 8e20c31808644724e74d3ca6dfd3ab857e53c7e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-5Lm>*P|dGv5@R61&{Y3}!GXzuhr`*Y LfnkZrNg)ORvxyG+ diff --git a/obsolete/fonts/xerox/Optima07-MRR-C361.wd.Z b/obsolete/fonts/xerox/Optima07-MRR-C361.wd.Z deleted file mode 100644 index c6661dd0972448aa94f058b48a2f55db02afe700..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmV;R0AK$fosbY100>~<2^1*EMvB0s7oe*LpN{QJS4N{Oq)yq1ZCn=sL!JehuP!?fT>fL+>lD0 z31C>&szsIl+&Z-@*RNi~f*mWiEY&{%(5kh$_G{XmIeAi*D;59|yLO8bsf)=bCIEi} OyX;GLEa1b0{W1g}-9m~0 diff --git a/obsolete/fonts/xerox/Optima07-MRR-C41.wd.Z b/obsolete/fonts/xerox/Optima07-MRR-C41.wd.Z deleted file mode 100644 index 3089ebe755b1eaad41d02f13551406184fc9eb5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80 zcmV-W0I&ZaosbY100>~<2^10vL(xxE@Q%+DYGU`m={@I%xSadO`i-g3S|fg6B|$f diff --git a/obsolete/fonts/xerox/Optima07-MRR-C42.wd.Z b/obsolete/fonts/xerox/Optima07-MRR-C42.wd.Z deleted file mode 100644 index 58f54ca7d475d278af21d8c7e94b75b2371d3cc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-P)K57sOHx-u`v*6=xSTZu!QNDfHDIB DMRW~e diff --git a/obsolete/fonts/xerox/Optima07-MRR-C43.wd.Z b/obsolete/fonts/xerox/Optima07-MRR-C43.wd.Z deleted file mode 100644 index 95ccddbf43801acec6dd7d84b56a980871bac67f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-Q1BLGsOHx-u`v)}XsW-)u!6yXMZ#H$ GhY~<2^1~<2^1zATR*{ diff --git a/obsolete/fonts/xerox/Optima08-BIR-C360.wd.Z b/obsolete/fonts/xerox/Optima08-BIR-C360.wd.Z deleted file mode 100644 index 2f288a0e3907d4d6608fd28eef6d2b9e9b975325..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*Y5Lo2Gz{{^|5@Yb;p#j5{27@WA91flg ID+7#J0G~JykpKVy diff --git a/obsolete/fonts/xerox/Optima08-BIR-C361.wd.Z b/obsolete/fonts/xerox/Optima08-BIR-C361.wd.Z deleted file mode 100644 index 5ce7100f0de9a723a9b0453e79d229b45f039bb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmV;Y09gMYosbY100>~<2^1*EMvB0xJ)JhNH=fVge0@)Oq*Q*1nuHesL!Jex!LpwfT>fL{*X$Y z34mMGszsIl+&Z-@*RNi~f*mWiELBVZ(5kh$_Nz{+p#a1UWs@%1tpKXz&0DmJSOBtY V$^uL{Fhj#;U8VxCI91Wb0028VMq2;? diff --git a/obsolete/fonts/xerox/Optima08-BIR-C41.wd.Z b/obsolete/fonts/xerox/Optima08-BIR-C41.wd.Z deleted file mode 100644 index e1625c8155fbdbea8debdc8b16f64c4f4bd9824b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImNYosbY100>~<2^10vL(xxE@Q%+DYGU`m;o-Z%$f71&7VF~^1P6fAy_pY_5c6? diff --git a/obsolete/fonts/xerox/Optima08-BIR-C42.wd.Z b/obsolete/fonts/xerox/Optima08-BIR-C42.wd.Z deleted file mode 100644 index faa99bc326f747dfd1d2f1eb78712e5e17e7e065..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*YP)KrN;N{mfu`v*6=xRI6z{70zfyo&F DLWT`M diff --git a/obsolete/fonts/xerox/Optima08-BIR-C43.wd.Z b/obsolete/fonts/xerox/Optima08-BIR-C43.wd.Z deleted file mode 100644 index 038a0d9d546d6b2f6c9486c8f4862688b48b8c36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmV-20L}j&osbY100>~<2^1~<2^1 z+(}x~>r|Oj6RTVd$)#fek0V2#EV(k}%a$`^zHC$IW1nzoP7P&QB~CX0+~8EqMCW3$ rLz8NrJ^AhC)QoBCW@r!YozKfu!u1y*hHTFM;Fc?W_BTUW1Oo#AY1m`~ diff --git a/obsolete/fonts/xerox/Optima08-BRR-C356.wd.Z b/obsolete/fonts/xerox/Optima08-BRR-C356.wd.Z deleted file mode 100644 index d7969a23ae7b4d6b52ecacfc2333c032aff956e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?cyQdGftO#`#Ku7201tyT!wV+PoCmCJ E0An5wYybcN diff --git a/obsolete/fonts/xerox/Optima08-BRR-C357.wd.Z b/obsolete/fonts/xerox/Optima08-BRR-C357.wd.Z deleted file mode 100644 index d5a23ff3fb125021a2aa76890b962518f8ccadd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmV->0EGV^osbY100>~<2^1d)M!heBbzpj dy0ofPt5~mU{h4yB*Q{W_iVaJ4tXZ-+83I;bFaQ7m diff --git a/obsolete/fonts/xerox/Optima08-BRR-C360.wd.Z b/obsolete/fonts/xerox/Optima08-BRR-C360.wd.Z deleted file mode 100644 index b944a2231cd7f0300cf8ba4188dd2164a008cf3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?5Lo2Gz{{^|5@R61(A2hxA%OW%frJ8s KI%5kDCj$VY`VI2{ diff --git a/obsolete/fonts/xerox/Optima08-BRR-C361.wd.Z b/obsolete/fonts/xerox/Optima08-BRR-C361.wd.Z deleted file mode 100644 index 86c4704e58e1d2c1f9be1eaec9dd1e377adf0883..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmV;U09^kcosbY100>~<2^1*EMvB0xJ)JhOgC@Z#3ZxlOq*r^1U2JRsL!Jex!LpwfT>fL{*X$Y z34mMGszsIl+&Z-@*RNi~f*mWiELEInb)HpQlqc0t0N{qQIhX8K09EkfEm}n^09iI= R{T&RLVPUf_1uHHp7y!WwK(zn> diff --git a/obsolete/fonts/xerox/Optima08-BRR-C41.wd.Z b/obsolete/fonts/xerox/Optima08-BRR-C41.wd.Z deleted file mode 100644 index d30f68efea547f77da49becf2c124a927904c1ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImNYosbY100>~<2^10vL(xxE@Q%+DYGU`m;o-Z%$f71&7VF~^1P6fAy#D`?f?J) diff --git a/obsolete/fonts/xerox/Optima08-BRR-C42.wd.Z b/obsolete/fonts/xerox/Optima08-BRR-C42.wd.Z deleted file mode 100644 index cf016b038262eacfdb8bfb01cc66ced8cf3ccb08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?P)KrN;N{mfu`v*6=xRI6z{70zfyo&F DLCy_0 diff --git a/obsolete/fonts/xerox/Optima08-BRR-C43.wd.Z b/obsolete/fonts/xerox/Optima08-BRR-C43.wd.Z deleted file mode 100644 index 6c4d04450e2d702689c21627bcf9843799e0bc04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?Q1A|8;N{mfu`!tN&_0`?j9~>+kD_oJ E08^O_*8l(j diff --git a/obsolete/fonts/xerox/Optima08-MIR-C0.wd.Z b/obsolete/fonts/xerox/Optima08-MIR-C0.wd.Z deleted file mode 100644 index 4422e7f94e844bbc5107cba4fa45581481dfe85b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmV~<2^1=0LlS4 zG!?*0sV7e|Jwz}n0Dk~NeFeZ&tXQdH?U4<;w&qMTEmyV#0I4b6wLVY!bV>w3U#fk< zI(5pFY0Wz*?NXImxAEP^Eh7VvOnI{9%9t-}&dhnU=EOoVNxnIECRNd%>E?6;z)eoa wOmpF diff --git a/obsolete/fonts/xerox/Optima08-MIR-C357.wd.Z b/obsolete/fonts/xerox/Optima08-MIR-C357.wd.Z deleted file mode 100644 index 99b78bcc2f1cf5e2019aa7053894be7958a0d124..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmV-^0D=D>osbY100>~<2^1U1j8t5mUS&B`_C%C2CyiVaJ4tl6??&8}Pv0Ghlpe*gdg diff --git a/obsolete/fonts/xerox/Optima08-MIR-C360.wd.Z b/obsolete/fonts/xerox/Optima08-MIR-C360.wd.Z deleted file mode 100644 index 95f94777f33824f12c665cc9d65af602a0b01e92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+T5Lo2Gz{{^|5@R61(A0LAA%OW%fS3Y< KI%7-FNdW+)84mCO diff --git a/obsolete/fonts/xerox/Optima08-MIR-C361.wd.Z b/obsolete/fonts/xerox/Optima08-MIR-C361.wd.Z deleted file mode 100644 index 794b61524da2c69bb5106f500a13f55bd3e9a221..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162 zcmV;T0A2qdosbY100>~<2^1*EMvB0NKGbyLpN{QJS4N{Oq*Q*1nuHesL!Je%h~h?fT>fL{*X$Y z37}lnszsIl+&Z-@*RNi~f*mWiELBJV(5kh$_G?<3m;l7Z1lKG8B6sf=B_b9;Dx0bN Q3jWKGuvwRZ6Bi8(0HP8?KL7v# diff --git a/obsolete/fonts/xerox/Optima08-MIR-C41.wd.Z b/obsolete/fonts/xerox/Optima08-MIR-C41.wd.Z deleted file mode 100644 index 8de1e75a9ee361243c046f7909e222104ea97de7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImNYosbY100>~<2^10vL(xxE@Q%+DYGU`m;o-Z%$f71&7VF~^1P6fAzq*#I{*Lx diff --git a/obsolete/fonts/xerox/Optima08-MIR-C42.wd.Z b/obsolete/fonts/xerox/Optima08-MIR-C42.wd.Z deleted file mode 100644 index 7cabc9779b06e10c9b22cfe2b0b3dd0c54651b83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TP)KrN;N{mfu`v*6=xRI6z{70zfyo&F DK^6@# diff --git a/obsolete/fonts/xerox/Optima08-MIR-C43.wd.Z b/obsolete/fonts/xerox/Optima08-MIR-C43.wd.Z deleted file mode 100644 index dde1407b6988ea7f647195a65737f4b83e0a0b2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TQ1A|8;N{mfu`&1{zpwrp!x@GHEE3LY GJd6N%?hcLs diff --git a/obsolete/fonts/xerox/Optima08-MRR-C0.wd.Z b/obsolete/fonts/xerox/Optima08-MRR-C0.wd.Z deleted file mode 100644 index 2144949015a71200f6cb9d070f4fda6b2778451a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 240 zcmV~<2^1>t&1p diff --git a/obsolete/fonts/xerox/Optima08-MRR-C356.wd.Z b/obsolete/fonts/xerox/Optima08-MRR-C356.wd.Z deleted file mode 100644 index 25eb065e9e17db2bfd4919033d20e693c5d7d804..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-cyQdGftO#`#Ku7201tyT!wV+PoCmCJ E0AZdETmS$7 diff --git a/obsolete/fonts/xerox/Optima08-MRR-C357.wd.Z b/obsolete/fonts/xerox/Optima08-MRR-C357.wd.Z deleted file mode 100644 index 379c26a459259ea85e4a6194cb06c16a85b25f4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmV-^0D=D>osbY100>~<2^1Z1i&Fc47&i3c{1h7mMbyA+zEiE&z?Yk@(dtEXwaiZlOkQJwCPa*kba_c g>U1j8t5mUS&B_(1%C2CyiVaJ4tl6??&8l1r0OWfzcK`qY diff --git a/obsolete/fonts/xerox/Optima08-MRR-C360.wd.Z b/obsolete/fonts/xerox/Optima08-MRR-C360.wd.Z deleted file mode 100644 index d7861326c8ca4cfab36dfec2f9868271db60ce45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-5Lo2Gz{{^|5@R61(A2h)A%OW%fS3Y< KI%7-FNdW+%qYlmh diff --git a/obsolete/fonts/xerox/Optima08-MRR-C361.wd.Z b/obsolete/fonts/xerox/Optima08-MRR-C361.wd.Z deleted file mode 100644 index 06f45ced1d905224cd6ade18f97af1def5343cf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmV;V09*ebosbY100>~<2^1*EMvB0NKGaHNH=fVge0@)Oq*2z1g+vzsL!Jex!JS_fT>fL_K-@Q z34mJFszq!5+&Z-@*RNi~f*mWiEY(8*(5kh$_Nz{+m;l7ZWRou0tpJ$h&0Ca-SOBSP SrUFbjFhj#;T@GGcbT9w~YeTC5 diff --git a/obsolete/fonts/xerox/Optima08-MRR-C41.wd.Z b/obsolete/fonts/xerox/Optima08-MRR-C41.wd.Z deleted file mode 100644 index baafd8f8f87411bb5058df94b2292e2d1fb73893..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImNYosbY100>~<2^10vL(xxE@Q%+DYGU`m;o-Z%$f71&7VF~^1P6fAzaWOGXMYp diff --git a/obsolete/fonts/xerox/Optima08-MRR-C42.wd.Z b/obsolete/fonts/xerox/Optima08-MRR-C42.wd.Z deleted file mode 100644 index 95eba98d75e7baa6cc183a9bda40bdee46554a80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-P)KrN;N{mfu`v*6=xRI6z{70zfyo&F DKwb?f diff --git a/obsolete/fonts/xerox/Optima08-MRR-C43.wd.Z b/obsolete/fonts/xerox/Optima08-MRR-C43.wd.Z deleted file mode 100644 index d3ef2c5be149f6526ebca56e966f568a6e45480c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-Q1A|8;N{mfu`!tN&_0`?j3I%kM^U&9 E08nWSe*gdg diff --git a/obsolete/fonts/xerox/Optima09-BIR-C0.wd.Z b/obsolete/fonts/xerox/Optima09-BIR-C0.wd.Z deleted file mode 100644 index 19dc6f86b1e2343809fff85216a04136a4381a30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 248 zcmV~<2^1E>n2mjE!q)e99ZO0-bB z01ynci(9x*6Q=}lDC=ISDPx;T4~<2^1d)F^;ZK1nuh fDs`#VsaLaN-TKp|)~{T{f*mWiEZMVWU*cp4(kwCe diff --git a/obsolete/fonts/xerox/Optima09-BIR-C360.wd.Z b/obsolete/fonts/xerox/Optima09-BIR-C360.wd.Z deleted file mode 100644 index 1631c1492a559b1fe0800d19475c0911050430e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*Y5Lo2GAkVLB5@YZo(URe9gFy@%hl3}> JE(V@t4gjX|4-fzV diff --git a/obsolete/fonts/xerox/Optima09-BIR-C361.wd.Z b/obsolete/fonts/xerox/Optima09-BIR-C361.wd.Z deleted file mode 100644 index 159a1dc63a67c5af198a073cad6348fa6039af22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmV;U09^kcosbY100>~<2^16EMvB0SWYH@R5x$hOeM4DOq*r^1U2JRsL!Je+sO<7f~ivwESVym zIuk%Ut5%CD{mGT8*REi{iVaJ4tl6rV0Hj@OlPy@aHe~^jD=Y3<0A29nE!t%)fMGU= R{T&RLVd1kb1uHHp7yxLlJ$C>A diff --git a/obsolete/fonts/xerox/Optima09-BIR-C41.wd.Z b/obsolete/fonts/xerox/Optima09-BIR-C41.wd.Z deleted file mode 100644 index b405836f4647d0a1571541d183e584444a07e80d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImNYosbY100>~<2^1_yb@M o2*W#o0Hj>0vL(xxE@Q%+DYGU`m;rLI%$f71&7VF~^30KwA%?*qU;qFB diff --git a/obsolete/fonts/xerox/Optima09-BIR-C42.wd.Z b/obsolete/fonts/xerox/Optima09-BIR-C42.wd.Z deleted file mode 100644 index fa504ac52eb4ffa99f19370e1001c8027ae24245..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*YP)KrNkmuJmu`v)h(9?E@p@7-UfZZ7Y DM~Dqp diff --git a/obsolete/fonts/xerox/Optima09-BIR-C43.wd.Z b/obsolete/fonts/xerox/Optima09-BIR-C43.wd.Z deleted file mode 100644 index 7c1f5f34d6c36a79eab9b22c7f96a9ee68f4ac4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*YQ1A|8kmuJmu`&2?e`oz!h7iUCHi^R% G85jV9NDpfO diff --git a/obsolete/fonts/xerox/Optima09-BRR-C0.wd.Z b/obsolete/fonts/xerox/Optima09-BRR-C0.wd.Z deleted file mode 100644 index 5eca9f1e16b992db3224bc7c1671de94825c2580..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmV~<2^1Dj80I68c)Jc?Tb&E?K%%36^f#vNp@M?E-*r*)9RN zwjEse4}e2A+y0zdwK3hsE+YewOnI{9%9t-}&dhnUW|TxzNya(XCuz?rb*8+d({UA^ sp@~B3Oxv~<2^1u9uF-v3^$PBzfl3$1jqq| zVW^P+QUR!v5)eZ-0AQZXk#c3tR4#J@(8+VB&z?F1)B*alDAA)vlOkPO6hNq+BbhRd esWnQsoD2ZD2oD~<2^1*EMvB0SWYH@R5x$hOeM4DOq*r^1U2JRsL!Je+sO=YfvM9AESVym zIuk%Ut5%CD{mGT8*REi{iVaJ4tl6re0Hj@OlPy@aHe~^jD=Y3<0A29nE!t%)fMGU= R{T&RLVd1kb1uHHp7yvL1KY{=N diff --git a/obsolete/fonts/xerox/Optima09-BRR-C41.wd.Z b/obsolete/fonts/xerox/Optima09-BRR-C41.wd.Z deleted file mode 100644 index 52c64d3e45b71b62a80a4b1078dc8fcde97d547d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81 zcmV-X0IvTZosbY100>~<2^1lE=D^7ifruce diff --git a/obsolete/fonts/xerox/Optima09-BRR-C42.wd.Z b/obsolete/fonts/xerox/Optima09-BRR-C42.wd.Z deleted file mode 100644 index 58d7f20e700be6f8a34c78d441ceee9cbb1b49ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?P)KrVkmJ`iu`v)h(9?E@p@7-UfZZ7Y DP(BUK diff --git a/obsolete/fonts/xerox/Optima09-BRR-C43.wd.Z b/obsolete/fonts/xerox/Optima09-BRR-C43.wd.Z deleted file mode 100644 index dbfc9b796e804194878e808abe022f7f6b9a9c45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?Q1A|GkmJ`iu`v)}XsSQU@P;9QP2#W? G4~<2^1&RjP%Y{|QWzqEVEwA0lCK?G1z6?1?GbPce^YsN0y7;XUoYyD%z diff --git a/obsolete/fonts/xerox/Optima09-MIR-C356.wd.Z b/obsolete/fonts/xerox/Optima09-MIR-C356.wd.Z deleted file mode 100644 index 605f4f9137eecd5933e58ae885d6b7bd866c5d43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TcyQdmL5^S7#Ku7203U-3gAOxiP6A&W E0B3v+&Hw-a diff --git a/obsolete/fonts/xerox/Optima09-MIR-C357.wd.Z b/obsolete/fonts/xerox/Optima09-MIR-C357.wd.Z deleted file mode 100644 index e524bdaba5ecc9f78f0603ee2aa3e33e327cd19b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127 zcmV-_0D%7=osbY100>~<2^1u9uF-v3^(u}zJIF%)Cmv+ z2*XeTasWsLpb7v;fEbzqFcYOpmM&SQipdi|&!0Yn0__=~&rqRAk19>dbg5IM073yx h`SdB(rdX?H-Kw=~(3M`pavdwSEZMVW)1F<)769%#F^>QM diff --git a/obsolete/fonts/xerox/Optima09-MIR-C360.wd.Z b/obsolete/fonts/xerox/Optima09-MIR-C360.wd.Z deleted file mode 100644 index 80a3a47b5d65cd52d945cb58f122ea8067dca8a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+T5Lo2WAjhw35@R61(A0K^VGHx20tp2M Lb;cJ=20e-Z%E1sg diff --git a/obsolete/fonts/xerox/Optima09-MIR-C361.wd.Z b/obsolete/fonts/xerox/Optima09-MIR-C361.wd.Z deleted file mode 100644 index c2a58ad25d1f3783036525d538d956c5adeb0d06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmV;Y09gMYosbY100>~<2^16EMvB0SWYGYOgC@Z#3ZxlOq*r^1U2JRsL!Je{mBdff~ivwESVym zIun3Bt5%EJqssNC*REi{iVaJ4tXZ3(0Hj@uRxMJuRb>H?E6Zlxvt9u((W|#8ldu4E V*&GIduwj?O%G%TwIB-$M008JyLZJWv diff --git a/obsolete/fonts/xerox/Optima09-MIR-C41.wd.Z b/obsolete/fonts/xerox/Optima09-MIR-C41.wd.Z deleted file mode 100644 index df88c545f242abadb32c21a3cd7512b7a5597032..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81 zcmV-X0IvTZosbY100>~<2^1lE=D^7if50H1 diff --git a/obsolete/fonts/xerox/Optima09-MIR-C42.wd.Z b/obsolete/fonts/xerox/Optima09-MIR-C42.wd.Z deleted file mode 100644 index a039faca9cdde7b2e39af39e5f4ca18ee04aeb7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TP)KrVkmJ`iu`v)h(9?E@p@7-UfZZ7Y DPlgS} diff --git a/obsolete/fonts/xerox/Optima09-MIR-C43.wd.Z b/obsolete/fonts/xerox/Optima09-MIR-C43.wd.Z deleted file mode 100644 index 42efc235eab0c1df34371b75be5d79f6c3373218..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TQ1A|GkmJ`iu`&1{zpwr*g8<_NR*Az} GJd6N<-VX2p diff --git a/obsolete/fonts/xerox/Optima09-MRR-C0.wd.Z b/obsolete/fonts/xerox/Optima09-MRR-C0.wd.Z deleted file mode 100644 index 341b93aedca19a2cfaa8c271c0071162512c2e4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmV~<2^1g%0^|TR&;S5#0IC3RGZR26l`(P3l$pw=&z?Yk3f-x)Xbu2}a4rL|v>X6`K0`g7 zYSQG=lqjACxBx)bRsh3@_x z)jW#{fIYYX3JaFXn5AO?k0V2#EV(k}%a$`^zFaqGs>e3p$`t&0GhCc^0NlaJIOoyP sLW3UCOnb6h)2SP8t}S`%+drVMw!IKQN#foQ+8VIzlP$wx0bB238O9wIHgnUSh8T3~JjIEUn3;<9W Bbe8}C diff --git a/obsolete/fonts/xerox/Optima09-MRR-C357.wd.Z b/obsolete/fonts/xerox/Optima09-MRR-C357.wd.Z deleted file mode 100644 index ae0492fc5941c0e3d93ced9cfec87f793a893bf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmV-^0D=D>osbY100>~<2^1u9uF-v3^$PBzf}R)1c(8I zVWNXwaiZlOkQJwCPa*p?;!t g>U1j8t5mUS&B_(1%C2CyiVaJ4tl6??&8l1r0D(<3fB*mh diff --git a/obsolete/fonts/xerox/Optima09-MRR-C360.wd.Z b/obsolete/fonts/xerox/Optima09-MRR-C360.wd.Z deleted file mode 100644 index ca260877859f2c9348712c04e8513be1b3ddb96b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-5Lo2WAjhw35@R61(A2hzVGHx20tp2M Lbw(a$0U-te!R!ur diff --git a/obsolete/fonts/xerox/Optima09-MRR-C361.wd.Z b/obsolete/fonts/xerox/Optima09-MRR-C361.wd.Z deleted file mode 100644 index e24358618b690bcf808327706196875200d97a4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmV;V09*ebosbY100>~<2^16EMvB0SWYH@R5x$hOeM4DOq*r^1U2JRsL!Je{mBe)fvM9AESVym zIun3Dt5%CD{mGT8*REi{iVaJ4tl6re0Hj@OlPy@aHe~^jD=Y3<09EkfEm~zP09`hR S0T4{s<*>6hb^ZNYR51V{l|YOD diff --git a/obsolete/fonts/xerox/Optima09-MRR-C41.wd.Z b/obsolete/fonts/xerox/Optima09-MRR-C41.wd.Z deleted file mode 100644 index c189e6f344a902e828d35fa98146f2077bce87b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81 zcmV-X0IvTZosbY100>~<2^1lE=D^7iefS`l diff --git a/obsolete/fonts/xerox/Optima09-MRR-C42.wd.Z b/obsolete/fonts/xerox/Optima09-MRR-C42.wd.Z deleted file mode 100644 index 302911c81274a638be69df9f9dfc29d2058e3dc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-P)KrVkmJ`iu`v)h(9?E@p@7-UfZZ7Y DPR~<2^16gTkSxqq4hI10c9 z2*W!7{s52_U<;suAOP3{UYz-h}D%q$)37S;`fLc(uD1F{}+4AMesQ^;p1&XsR(!W5H zmUZivo8LnKFnM*GDnLwGcOgq&`LZ$q%a|`~&dhnU=gy!%drnz&nB|{#Yi8Bed8N*q zIw3FH$y7Dg(oI9_)?8P#SIN7B4-{e-)9H4Uhd)hjIY17&AX>YHWS3e1wr&9ca~@}6 diff --git a/obsolete/fonts/xerox/Optima10-BIR-C356.wd.Z b/obsolete/fonts/xerox/Optima10-BIR-C356.wd.Z deleted file mode 100644 index 1502f3a674fb9e380a69d528955b8787775ed13c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*YcyQdm!GK@a#Ku5?LAak`2jdE+oCjiU E0B)HNGXMYp diff --git a/obsolete/fonts/xerox/Optima10-BIR-C357.wd.Z b/obsolete/fonts/xerox/Optima10-BIR-C357.wd.Z deleted file mode 100644 index 4eb5152112df9c8d4d9c78d7cb31f210a6f7ba9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmV-^0D=D>osbY100>~<2^1uFb^#>3^(xKxqq4hoC>f7 z2t!#U0Sp7s1%NI<4DSGtiE@id0A_9ugUJ&>&!0Yn0__>#(@>#Ek19>dbg5IMDuI%G g`gCg3t5mUS&B`@s)U9B=E J!-}OT8~~_L519Y} diff --git a/obsolete/fonts/xerox/Optima10-BIR-C361.wd.Z b/obsolete/fonts/xerox/Optima10-BIR-C361.wd.Z deleted file mode 100644 index 7fb26430403b29177d35259270e4c7d2bb212651..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmV;V09*ebosbY100>~<2^1TsH6@zJIF%*EMvADXh0?aT{myq)Frd$Oq+KA1ij-^sL!JVAIJ@ESVym zI+LK)nm=h$-I|rF*REi{iVaH^DF9h#)5@}mb}d){sca4dFn5^Tu>joU&0EyXR{+#( SQUgplFhj#*T@GGcbT9zmr9jXC diff --git a/obsolete/fonts/xerox/Optima10-BIR-C41.wd.Z b/obsolete/fonts/xerox/Optima10-BIR-C41.wd.Z deleted file mode 100644 index d025e70468c0dbdc4f155994b5216484967057e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81 zcmV-X0IvTZosbY100>~<2^1EHV&)h=1<_JP-+l n;UPc(P^wJHa;3|bFki}yNpt4Q09#h##A&mp&z>lEZo$bAjNu@S diff --git a/obsolete/fonts/xerox/Optima10-BIR-C42.wd.Z b/obsolete/fonts/xerox/Optima10-BIR-C42.wd.Z deleted file mode 100644 index 7e164fc3ad475ad21eff9d732eae9923a46d963d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*YP)KrVFyPlUu`v)h(AV~sVGFZa0k<;% DRW=TS diff --git a/obsolete/fonts/xerox/Optima10-BIR-C43.wd.Z b/obsolete/fonts/xerox/Optima10-BIR-C43.wd.Z deleted file mode 100644 index c911ceeb23cd2af8931516813cafbafe7c64aee3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmV-20L}j&osbY100>~<2^1JTUN|w|~3~<2^16gQCJKTQG11YiS% z;T-^f0LTik1<*hc1Ob=;hm|&!0Yn0v$Tj49lZi0E7w&pj=Y`{sLS8 zpi5K wMw6bdD_W`N+n48l*7{f$?%xAr(8WZWtM7q10@P7yS+HCbs@X!KJ9dg)07A=YV*mgE diff --git a/obsolete/fonts/xerox/Optima10-BRR-C356.wd.Z b/obsolete/fonts/xerox/Optima10-BRR-C356.wd.Z deleted file mode 100644 index f8cb632dbea9e8fa45f9005f9e918ee94939e943..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?cyQdG!GK@a#Ku5?L6E_Rp@2Dn^~M2R G9!3CmdJVMz diff --git a/obsolete/fonts/xerox/Optima10-BRR-C357.wd.Z b/obsolete/fonts/xerox/Optima10-BRR-C357.wd.Z deleted file mode 100644 index ac7ec290ff9d621985fd5bb4d2845bd76ce79437..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmV-@0D}J?osbY100>~<2^13^$PBKTQD~1(*Va zp{xK~01N}r1%NI<4DSGtc{1fnGb&ZW+zEiE&z?Yk@(l1vXwaiZlOkQJwCPcuM^QR; fDwV0#saLaN-3k;c*RNW`f*mWiEZMVRbFKscuJ|x^ diff --git a/obsolete/fonts/xerox/Optima10-BRR-C360.wd.Z b/obsolete/fonts/xerox/Optima10-BRR-C360.wd.Z deleted file mode 100644 index 812a004a3a31eef0edba278bdc635c904673cc80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?5Lo2GV8E|y5@R61(A0K^gDLR_p8&&T Jh8;^&H~^kZ4}Smv diff --git a/obsolete/fonts/xerox/Optima10-BRR-C361.wd.Z b/obsolete/fonts/xerox/Optima10-BRR-C361.wd.Z deleted file mode 100644 index 53d8fd495f69e8be1a299622bc277d9c99a23dbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmV;R0AK$fosbY100>~<2^1TsH6@zJIF%#0YQ- z2*Yv!P^tt3fMv>*EMvB0=uaj9T{myq)Frd$Oq+KA1ij-^sL!JVAIJ=lgQ?RTESVym zI+LJP13n2--TJdD*RNi~f*mWi?9QAxdCo+O6o4$79OJ?z3&2g?x<%c91;EWFH@<-T OG89bK<=?|a{{jFhtV4tV diff --git a/obsolete/fonts/xerox/Optima10-BRR-C41.wd.Z b/obsolete/fonts/xerox/Optima10-BRR-C41.wd.Z deleted file mode 100644 index 8c2a3c10522d0a046f78fd162df0720bf244a29e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImNYosbY100>~<2^1EHV&4gn#b>fC%sa o2*W#o0Hj>0vL(xxE@Q%+DYGU`m;tu1%$f71&7VF~^4yY>A&vDQ%m4rY diff --git a/obsolete/fonts/xerox/Optima10-BRR-C42.wd.Z b/obsolete/fonts/xerox/Optima10-BRR-C42.wd.Z deleted file mode 100644 index 94556645d374720d129068f8f2204e149288e3b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?P)KrNFyPlUu`v)h(AV~sVGFZa0k<;% DO8yP{ diff --git a/obsolete/fonts/xerox/Optima10-BRR-C43.wd.Z b/obsolete/fonts/xerox/Optima10-BRR-C43.wd.Z deleted file mode 100644 index 9b9f105f7f0d3f1b43fca9114ab668199bdc574d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?Q1A|8FyPlUu`v)}XsX}CV8B?wF5zs< G!w3LkHVlaX diff --git a/obsolete/fonts/xerox/Optima10-MIR-C0.wd.Z b/obsolete/fonts/xerox/Optima10-MIR-C0.wd.Z deleted file mode 100644 index 88810ac961c836143b00d46f64856a1b1a760b61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249 zcmV~<2^16gTkSxqqVqSPDP} z2*W!7+yIajU<;suC;<2aUWVu(o93^)?8P#&B?oi!?X+OG}Kgdg#=(@H8WwlAX?{jW0zY1C2au!--&80 diff --git a/obsolete/fonts/xerox/Optima10-MIR-C356.wd.Z b/obsolete/fonts/xerox/Optima10-MIR-C356.wd.Z deleted file mode 100644 index c401a8299948064ac84f2f94bb503c83afb4a501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TcyQdm!GK@a#Ku5?L72gXp@2Dn^~M2R G9!3CwYz`*? diff --git a/obsolete/fonts/xerox/Optima10-MIR-C357.wd.Z b/obsolete/fonts/xerox/Optima10-MIR-C357.wd.Z deleted file mode 100644 index 5f01365fb17f866e35e3e5159e351b9d86a50331..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmV-^0D=D>osbY100>~<2^1uFb^#>3^(u}zJH?voC+`n z2t!!`wg4CgpbLOdfEeBZFcYOpmS$G2jL8!~&!0Yn0__<9)=;5Hk19>dbg5IMJCUY* g`gCg3t5mUS&B`@s)UIH+iVaJ4tl6??#p+}U0OqeUHUIzs diff --git a/obsolete/fonts/xerox/Optima10-MIR-C360.wd.Z b/obsolete/fonts/xerox/Optima10-MIR-C360.wd.Z deleted file mode 100644 index 66e7f0508f3ce792748d60e94c96139355d2fb49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+T5Lo2WV8E|yVq+lS(9-sngDKggR}lb0 CW)08) diff --git a/obsolete/fonts/xerox/Optima10-MIR-C361.wd.Z b/obsolete/fonts/xerox/Optima10-MIR-C361.wd.Z deleted file mode 100644 index c15f1440efc318f15741f7b5bbcfdbe179012a41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmV;Y09gMYosbY100>~<2^1TsH6@zJIF%*EMvB0=uakqR5x$hOeM4DOq*^11a;$6sL!JVAIJ@ESVym zIy1lpt5$tx{mGT8*REi{iVaJ4tl60WWTjmz%ck14U;*f|ISfGEVRX*|=(2Zj(Jo^F VEVHTdB{!Fc%aRq$craJS008IiMI!(J diff --git a/obsolete/fonts/xerox/Optima10-MIR-C41.wd.Z b/obsolete/fonts/xerox/Optima10-MIR-C41.wd.Z deleted file mode 100644 index e9e3bd827bbc01fe076dea6d568746f4c4c6f0b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImNYosbY100>~<2^1EHV&4gn#b>fC%sa o2*W#o0Hj>0vL(xxE@Q%+DYGU`m;tu1%$f71&7VF~^4yY>A*UrFL;wH) diff --git a/obsolete/fonts/xerox/Optima10-MIR-C42.wd.Z b/obsolete/fonts/xerox/Optima10-MIR-C42.wd.Z deleted file mode 100644 index 9ba96c80ac7a1a15bd21bf6df268b204dc51d270..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TP)KrVFyPlUu`v)h(AV~sVGFZa0k<;% DQ^pQ* diff --git a/obsolete/fonts/xerox/Optima10-MIR-C43.wd.Z b/obsolete/fonts/xerox/Optima10-MIR-C43.wd.Z deleted file mode 100644 index e53bfb1b317f128fd60c6fc5e05d23a247c81bfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TQ1A|GFyPlUu`&1{zps7|g8*X!n}oA5 G4~<2^16gQCJzfl3mgapFy z4gfa*WChp)Xdnsz?EshoVAABUl`?V8>;hm|&!0Yn0v$Tj%*vx%0ALCUpd0{d0Q?1b zkP<*Df>ULld}=j-kf{M;^b8AN830{pvvR}f(=1ezJnytz+0rUkSzLXhG;6jB0Ka&v zkTuJV>szHX%XX!TH~<2^13^$PBzf}P~1yBNn zp{xK~01N}r1wbf34DSGtc{1fnGb&ZW+zEiE&z?Yk@(ch=XwaiZlOkQJwCPcuM^QR; fDwV0#saLaN-3k;c*RNW`f*mWiEZMVRbFKscjVLda diff --git a/obsolete/fonts/xerox/Optima10-MRR-C360.wd.Z b/obsolete/fonts/xerox/Optima10-MRR-C360.wd.Z deleted file mode 100644 index 1e2d2130fbde6f49f3c399d816373a3fcb84f90c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-5Lo2GV8E|y5@R61(A0LAgDKI2SAbzM JL)+364gi#`4wC=? diff --git a/obsolete/fonts/xerox/Optima10-MRR-C361.wd.Z b/obsolete/fonts/xerox/Optima10-MRR-C361.wd.Z deleted file mode 100644 index d40c8a7237bf0eccc65d0871e76616d9fb2220e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmV;Z09XGXosbY100>~<2^1TsH6@zJIF%pa^gZ z2*Yv!P^tt3fMv>*EMvB0=uaj9SvPOmlqIw0Oq*r^1U2JRsL!JVAIJ<4gQ?RPESVym zIy1lnt5$tx{mGT8*REi{iVaJ4tl60WQl(v+%BI@3V0EG$27vA`n|I4{1yF@A-=bB< W0$65~8vw(IU2;2XlcVFJ90366enfTv diff --git a/obsolete/fonts/xerox/Optima10-MRR-C41.wd.Z b/obsolete/fonts/xerox/Optima10-MRR-C41.wd.Z deleted file mode 100644 index 65cfa03892a6fefddc2a4510fce23e5c51f7996a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImNYosbY100>~<2^1EHV&4gn#b>fC%sa o2*W#o0Hj>0vL(xxE@Q%+DYGU`m;tu1%$f71&7VF~^4yY>A&ONXyZ`_I diff --git a/obsolete/fonts/xerox/Optima10-MRR-C42.wd.Z b/obsolete/fonts/xerox/Optima10-MRR-C42.wd.Z deleted file mode 100644 index 258a03f558f994cb72fcb63ff5ebd6720dd2228f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-P)KrNFyPlUu`v)h(AV~sVGFZa0k<;% DNsbNb diff --git a/obsolete/fonts/xerox/Optima10-MRR-C43.wd.Z b/obsolete/fonts/xerox/Optima10-MRR-C43.wd.Z deleted file mode 100644 index 897fbe19f4e38df841900c1cfc737d700f4ed36a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-Q1A|8FyPlUu`v)}XsX}CAi$WwCgE(% G!w3Lh01QX~ diff --git a/obsolete/fonts/xerox/Optima11-BIR-C0.wd.Z b/obsolete/fonts/xerox/Optima11-BIR-C0.wd.Z deleted file mode 100644 index 63e5ca83dc00dbc3208666cf6634e2f8a3ab573d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmV~<2^1X3jvUo(;onP0WJi{ z0d!e_7*lN?BDgXDnX6u(dgaOu0Jo_G1JnV~4nR4!HhUg=+43a-T>zXedukQ{%Cc{b z0zJ9~u06hoApuBbvn|UQDosbY100>~<2^1G&z?Yk3Js7fs8OLulOkQJw5d-3!-A%C g>U1j8t5mUS&C2yDwXR^diVaJ4tl6??&E{kY0M%hJ$^ZZW diff --git a/obsolete/fonts/xerox/Optima11-BIR-C360.wd.Z b/obsolete/fonts/xerox/Optima11-BIR-C360.wd.Z deleted file mode 100644 index acdcda50233f9540daca20fe1e72fa519831aca3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*Y5Lo2G;KZ+M5@R61z|_Vl$HKtave4Fn LA%H1k`y@pGqt^~< diff --git a/obsolete/fonts/xerox/Optima11-BIR-C361.wd.Z b/obsolete/fonts/xerox/Optima11-BIR-C361.wd.Z deleted file mode 100644 index c3beeffb465273205d6cf12e211f90c22b6f5476..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmV;Z09XGXosbY100>~<2^1*EMvADctIurYBz7%q$acHOq+)Q1U=+asL!JVW5^6ZhN)9BESVym zIx|2Ht5$tx{mGT8*REi{iVaJ4tl60WbfsOZ%ck14U;!+%$qhhVZgkHAaI<%BQ8!}& Ww6kdsK;gqK?VYvRPO#vjjR62UzeGX+ diff --git a/obsolete/fonts/xerox/Optima11-BIR-C41.wd.Z b/obsolete/fonts/xerox/Optima11-BIR-C41.wd.Z deleted file mode 100644 index 52992b35570b6126155bfd13c08f7151a4ed8dfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImNYosbY100>~<2^1s0Hj>0vL(xxE@Q%+DYGU`m;nm0%$f71&7VF~@+_2-AyG9RH2?qr diff --git a/obsolete/fonts/xerox/Optima11-BIR-C42.wd.Z b/obsolete/fonts/xerox/Optima11-BIR-C42.wd.Z deleted file mode 100644 index dd777ed22a632c1faf57bdc6109742c42797ab7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*YP)KrNaN^fBu`v)}5Nu=NWRi~PPy_%f CY71%r diff --git a/obsolete/fonts/xerox/Optima11-BIR-C43.wd.Z b/obsolete/fonts/xerox/Optima11-BIR-C43.wd.Z deleted file mode 100644 index 404da8da3f196dcce0ce19884198f239e7c46a5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmV-20L}j&osbY100>~<2^1i_@% diff --git a/obsolete/fonts/xerox/Optima11-BRR-C0.wd.Z b/obsolete/fonts/xerox/Optima11-BRR-C0.wd.Z deleted file mode 100644 index aa440c40b93adac5b56c0a2dd8d128257cb5d1e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmV~<2^1 z2*W=B4gnYzpb(&eIRbzH;3lO_YAtEztZ4=SHJ?C#3JprMrkj>X3jvUo(;onT0WJi{ z0d!e_7*_$HMCp_zo2vn~0B9HXDS&c51E6@CliS&`HhUg=+43cTWpIbVb*s{CJDPyq z9u@nyFkDOkQrY~gE34keD02w4@egFUf diff --git a/obsolete/fonts/xerox/Optima11-BRR-C356.wd.Z b/obsolete/fonts/xerox/Optima11-BRR-C356.wd.Z deleted file mode 100644 index 07232a8c6170a5c3a785e2260cc00f75667e40a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?cyQdG!HHkj#Ku5?L6E_R;Ro{t)*A<$ Gco+eIdk*9P diff --git a/obsolete/fonts/xerox/Optima11-BRR-C357.wd.Z b/obsolete/fonts/xerox/Optima11-BRR-C357.wd.Z deleted file mode 100644 index df460749cc7ad0910ceb4539c800330937ea01b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127 zcmV-_0D%7=osbY100>~<2^1_1?U5W z;jjRO08j&92EZ~v3=aX2c{1fnH!4-a+zEiE&z?Yk@(hqnXwaiZlOkQJwCPa*!+xT4 h>U1j8t5mUS&B_(1&aGg(iVaJ4tl6??&%(^P5&&P5G?4%R diff --git a/obsolete/fonts/xerox/Optima11-BRR-C360.wd.Z b/obsolete/fonts/xerox/Optima11-BRR-C360.wd.Z deleted file mode 100644 index dd24643d45c6e27b1012c8b0b6179ef0d07f6b5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?5Lo2G;KZ+M5@R61(A4&gse!@h0)qmB KI^&k$lL7#)Xb+kI diff --git a/obsolete/fonts/xerox/Optima11-BRR-C361.wd.Z b/obsolete/fonts/xerox/Optima11-BRR-C361.wd.Z deleted file mode 100644 index 76f1964af6d5fddac3fe62fd33f6fa652d781e19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmV;U09^kcosbY100>~<2^1K4wi^)@F%|8Hu{^=RCr_q5iVg}f10B-Q&CF({jfOa+8 R{T&RLVPUf^1uG^h7y#!jKidER diff --git a/obsolete/fonts/xerox/Optima11-BRR-C41.wd.Z b/obsolete/fonts/xerox/Optima11-BRR-C41.wd.Z deleted file mode 100644 index 7eb8e5a1fc9d54874ecae812772efa415e3d0e6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImNYosbY100>~<2^1s0Hj>0vL(xxE@Q%+DYGU`m;nm0%$f71&7VF~@+_2-Ax~u~<2^1{Nf|)p%a$`^-mJMZ=g*!yFCI#*GS0g+6%XV5HL1-* zIwkK+n))$mrJ!?Xwj289~<2^1dbg5IM0EPig i`SdB(rdX?H-Kw=~(4AbvdL1jaEZMVW)1r;3lO+I7Q!^_7 diff --git a/obsolete/fonts/xerox/Optima11-MIR-C360.wd.Z b/obsolete/fonts/xerox/Optima11-MIR-C360.wd.Z deleted file mode 100644 index f21cb75fe029df1a4da61e26a88f24b9a9ee696c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+T5Lo2G;KZ+M5@R6X(9-sgse$3p1{nng Lb;bf_hh9Yh#nKPy diff --git a/obsolete/fonts/xerox/Optima11-MIR-C361.wd.Z b/obsolete/fonts/xerox/Optima11-MIR-C361.wd.Z deleted file mode 100644 index 12a4d465b9ccfb24650bd24b321faa65efbaef7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmV;V09*ebosbY100>~<2^1eB z2t#`SP^tt3fMv>*EMvADh(acSVK;Bu9452pOq+KA1ij-^sL!JVbI26QbR-#;B9Tg+ z830Aqsy?y)+&Z-@*RNi~f*mWi>`VY0)1tMR7U|lv)Bwb#W|J=2tpLpA&0ExrSOD#8 SwgXH!Fhj#;T@GGcbT9z=EJI`f diff --git a/obsolete/fonts/xerox/Optima11-MIR-C41.wd.Z b/obsolete/fonts/xerox/Optima11-MIR-C41.wd.Z deleted file mode 100644 index a582f62df95419cfcefc0ebc32c655de456714d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImNYosbY100>~<2^10vL(xxE@Q%+DYGU`m;nm0%$f71&7VF~@+_2-Ax~<2^16%a|`~&dhnU=gy!%d(Ik^nq`}HWy;#x*)C3+ zhj31IqZ7dDWkP#~3e8(HUC}iq_Z~iwOx@j@wJw|6^%G^!U*`&Gjr&jCb^+?R1prLT BX~F;i diff --git a/obsolete/fonts/xerox/Optima11-MRR-C356.wd.Z b/obsolete/fonts/xerox/Optima11-MRR-C356.wd.Z deleted file mode 100644 index 46c1a1149945807ad1813806cd24b628125b2783..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-cyQdG!HHkj#Ku5?L69Mq;Ro{pmKz70 Gco+eHAP&?3 diff --git a/obsolete/fonts/xerox/Optima11-MRR-C357.wd.Z b/obsolete/fonts/xerox/Optima11-MRR-C357.wd.Z deleted file mode 100644 index 424be8d2a949d8a33ee0a7aee4e6424dbd1f8467..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127 zcmV-_0D%7=osbY100>~<2^1U1j8t5mUS&B_(1&aGg(iVaJ4tl6??&%(^P5&&P_G?4%R diff --git a/obsolete/fonts/xerox/Optima11-MRR-C360.wd.Z b/obsolete/fonts/xerox/Optima11-MRR-C360.wd.Z deleted file mode 100644 index 1d08500556433ed43ae654a2604a05d5e2d72abc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-5Lo2G;KZ+M5@R61(A4&pse$3p1vv!< Kb;c>dCj|hqzYq@q diff --git a/obsolete/fonts/xerox/Optima11-MRR-C361.wd.Z b/obsolete/fonts/xerox/Optima11-MRR-C361.wd.Z deleted file mode 100644 index 6d78203102d084af49c2ce9655133dbca7c4fc42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162 zcmV;T0A2qdosbY100>~<2^1K4wi^)@F%{u^q-su^%r_q5qVg}f~<2^10vL(xxE@Q%+DYGU`m;nm0%$f71&7VF~@+_2-Axu#oApigX diff --git a/obsolete/fonts/xerox/Optima11-MRR-C42.wd.Z b/obsolete/fonts/xerox/Optima11-MRR-C42.wd.Z deleted file mode 100644 index 036a09ba686baf02ef6a973302ab42828857718e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-P)KrNaN^fBu`v)}5Nu=NWRi~PPy_%d CS_@JD diff --git a/obsolete/fonts/xerox/Optima11-MRR-C43.wd.Z b/obsolete/fonts/xerox/Optima11-MRR-C43.wd.Z deleted file mode 100644 index e252c33595bf8c7469841d524b2856c6d12d4b1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-Q1A|8aN^fBu`v*EXsO@AAi!9_F5zs> G!w3LmJ`AY< diff --git a/obsolete/fonts/xerox/Optima12-BIR-C0.wd.Z b/obsolete/fonts/xerox/Optima12-BIR-C0.wd.Z deleted file mode 100644 index 4a636f8a5a62eb39488e67e4f8a458722c91ffc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 248 zcmV~<2^1Rd-k6lUzFu5}2%a$`^-mJMZ=gldH{+v9TAx){=G*887Gbd!o yeleboD%$5T&$utkwS4t;?%xCZxC9_;asUu3<8sAF&GO&4Q&f{p6&Gxwwg3Qnpk#Fb diff --git a/obsolete/fonts/xerox/Optima12-BIR-C356.wd.Z b/obsolete/fonts/xerox/Optima12-BIR-C356.wd.Z deleted file mode 100644 index cbb77d5abf76c4b75f046c98d2d82af39ac7867c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*YcyQdmA(&s+#Ku5?L6{+y$%cV5N5PE& E0A!mC@&Et; diff --git a/obsolete/fonts/xerox/Optima12-BIR-C357.wd.Z b/obsolete/fonts/xerox/Optima12-BIR-C357.wd.Z deleted file mode 100644 index abc6d493acb00a6a4bfa4af832e18b55f16db957..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127 zcmV-_0D%7=osbY100>~<2^1uQx7dP3^(xKxqpcQ@C#rG z2t#TY0h9ya1^_oe3?TuKi4x<=J1SMe+zEiE&z?Yk@(e&vXwaiZlOkQJwCPa*)P7!c h>U1j8t5mUS&B_(1&aGg(iVaJ4tl6??&%(^P5&)}4EZ4VRx diff --git a/obsolete/fonts/xerox/Optima12-BIR-C361.wd.Z b/obsolete/fonts/xerox/Optima12-BIR-C361.wd.Z deleted file mode 100644 index 8a941be9bfc9408628e789c53c9bb7404192ca0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmV;Y09gMYosbY100>~<2^1*EMvAD7(*riZZ~h*e)NHl`Ft?rDvMd4I(W|%Uow5M@ VEj2)}umP8c&w35aSnyQF005?FNC^M{ diff --git a/obsolete/fonts/xerox/Optima12-BIR-C41.wd.Z b/obsolete/fonts/xerox/Optima12-BIR-C41.wd.Z deleted file mode 100644 index 817800e9f227e775af36bb12711370beb3be00ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81 zcmV-X0IvTZosbY100>~<2^10vL(xxE@Q%+DYGU`m={@I%xSadO`ii#?ZgNGWgH#f diff --git a/obsolete/fonts/xerox/Optima12-BIR-C42.wd.Z b/obsolete/fonts/xerox/Optima12-BIR-C42.wd.Z deleted file mode 100644 index a1e0cfb58dbba079113db2dace9886f2ddfd2126..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*YP)KrV2~<2^1~<2^1 z2t!B!Fae-;5zxRX0dfGi0{|t;au;Xjq)D?J0G~jA3Jn^R=f$HKhaJ5T;6Z>G0j3D$ z7C=c=0Ee&!xUe#SqpAV=0Pq)fD*$@{+654@H78nsV{6W=>9Qq5ss_5|Z6}v6T%Kul z78*;iaNbY=bjgLwQpw84)F7{PNf|)p%a$`^-mJMZ=g*!yryTmTa%qM%xdGtDxhqDS zIU`5Dvvaj=q5y`0-ksSlX1TI?3m?eFW#YkWq< G1_l6zJr0oo diff --git a/obsolete/fonts/xerox/Optima12-BRR-C357.wd.Z b/obsolete/fonts/xerox/Optima12-BRR-C357.wd.Z deleted file mode 100644 index 5b2d42ff4adec0e5e84c3580c2fc0378c794b5f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmV-^0D=D>osbY100>~<2^1uQx7dP3^$PBzeEAX1+WB! zA+?JD$^mc#fEyr&kO0IyiBaX9lqp~81hBIw&!0Yb2A~%dsL`TGk19>d)F=RIJ})+H gDs`#VsaLaN-TE`9)~{T{f*mWiEZMVWU*c2=0EJsJ%K!iX diff --git a/obsolete/fonts/xerox/Optima12-BRR-C360.wd.Z b/obsolete/fonts/xerox/Optima12-BRR-C360.wd.Z deleted file mode 100644 index c90904ddbaeec410fac77ca2e02fcc64ed1c890b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?5Lo2W5X`S@5@R61z|_XV{Di^i1Cs)S KI^&PvlL7#(=MRJc diff --git a/obsolete/fonts/xerox/Optima12-BRR-C361.wd.Z b/obsolete/fonts/xerox/Optima12-BRR-C361.wd.Z deleted file mode 100644 index 85fcc676618b9b8c7c1daae1e6de1ce4cc271955..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmV;a09OAWosbY100>~<2^1*EMvAD7(*t2ayM_~<2^10vL(xxE@Q%+DYGU`m={@I%xSadO`ii#?ZgNGV^kg2 diff --git a/obsolete/fonts/xerox/Optima12-BRR-C42.wd.Z b/obsolete/fonts/xerox/Optima12-BRR-C42.wd.Z deleted file mode 100644 index 5ddd5b8cad6bcf04fdacb3d56962fee18fea30ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?P)KrV22DRJ1E GhY~<2^1pj9wrZAVz>GDgi7D zpyVk^lmt}7Z^ z)UnIAFiiluuJWBKM5^PukX5#v41lub%9t-}&dhnU=gyq34yEj~rAz?BB!kw9u_n&Q ycXXnTIuwAc&$uzqy?hvQ?%xB+n7*x>EH$}(0t5rV?XqCGTQ)PNX~<2^1uQx7dP3^(u}zJHPe1PfpZ z2t#TY0h9ya2EZ^t3=aX2i4x<=J1SMe+zEiE&z?Yk@(hqnXwaiZlOkQJwCPa*)P7!c h>U1j8t5mUS&B_(1&aGg(iVaJ4tl6??&%(^P5&%(9G)w>h diff --git a/obsolete/fonts/xerox/Optima12-MIR-C360.wd.Z b/obsolete/fonts/xerox/Optima12-MIR-C360.wd.Z deleted file mode 100644 index eadb2076cbde4a904672d2fa3c78837185d43c7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+T5Lo2W5X`S@5@R6Xz|zL3$8v(PWud(T LLjco;?UNJ%!cP!S diff --git a/obsolete/fonts/xerox/Optima12-MIR-C361.wd.Z b/obsolete/fonts/xerox/Optima12-MIR-C361.wd.Z deleted file mode 100644 index e910416cb71df597e85c9220f6a8e0c0b075ab9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmV;U09^kcosbY100>~<2^1*EMvAD7(*riYBz7%q$acHOq+)Q1U=+asL!JVr^pP@hpE#(E}{OM ziqxf&09Tdx#9EcA*REi{iVaJ4tl6+RajM;^(`#Fn0LsOUYqMNgxNZRCbyJk@S%&^> R`U5byFx~<2^10vL(xxE@Q%+DYGU`m={@I%xSadO`ii#?ZgNGVT>Km diff --git a/obsolete/fonts/xerox/Optima12-MIR-C42.wd.Z b/obsolete/fonts/xerox/Optima12-MIR-C42.wd.Z deleted file mode 100644 index 784e0bfcd3589ddc0ae4de93a97f06cfb21856a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TP)KrV2~<2^1#g#^M7 z5`aShs9gj!a7zFb0PX-VX|mkKm^Wq0EC+z6&z?Yk{?vJ~C`MUDFAxk6Bft~@+)_FX zpaj65lK}il?L##{9RTgTW(C``t5S^i0N5iqGv-W|D;cUZAeC-Atar7#0kD^+n*e>r z`ddmj6aZaqwW_R2Ev4hekXcFwFu5}2%a$`^-mJMZ=gnA!PVULl?J%gCrDCLc6EaSW uGEYYp3P6_U+n3{7ZX5YCZp&Uvr<%-`8r(Vof}!3Vyk+XBkV+4>q?RGJT4yx? diff --git a/obsolete/fonts/xerox/Optima12-MRR-C356.wd.Z b/obsolete/fonts/xerox/Optima12-MRR-C356.wd.Z deleted file mode 100644 index 187c28f3448af40e9acdd85bd6f247b50ccca80e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-cyQdmA(&s+#Ku5?L6{+y$%cV5N5PE& E0AgDV+5i9m diff --git a/obsolete/fonts/xerox/Optima12-MRR-C357.wd.Z b/obsolete/fonts/xerox/Optima12-MRR-C357.wd.Z deleted file mode 100644 index aeadbb60a8df0b6c27bfb1d388b08ac6a02bdff2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmV-^0D=D>osbY100>~<2^1uQx7dP3^$PBKS=?S1+WB! zA+?JD$^mc#U>G2VkO0IyiBaX9lqp~81hBIw&!0Yb2GAB1sL`TGk19>d)F=RIJ})+H gDs`#VsaLaN-TE`9)~{T{f*mWiEZMVWU*c2=06~;87ytkO diff --git a/obsolete/fonts/xerox/Optima12-MRR-C360.wd.Z b/obsolete/fonts/xerox/Optima12-MRR-C360.wd.Z deleted file mode 100644 index 5afd6fd718e84716b35b5fb113926c652ec5a0dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmV-60LlL!osbY100>~<2^1~<2^1K55i^)@F%|8Hu{^=RCr_q5*Vg{(Qv}v7|Pkl-~ z+EPgXt4XC^r8>1M*RNi~f*mWiELZ^4(5j_YGcDV$Xlu3uFt?ptvMT|&(W{rJ8?pfW T)$|v*uwaIV@yawDm?&WY>J>x$ diff --git a/obsolete/fonts/xerox/Optima12-MRR-C41.wd.Z b/obsolete/fonts/xerox/Optima12-MRR-C41.wd.Z deleted file mode 100644 index 920dd62e0f31f7d590960b423f2f20c91667750d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81 zcmV-X0IvTZosbY100>~<2^10vL(xxE@Q%+DYGU`m={@I%xSadO`ii#?ZgNGU&I~9 diff --git a/obsolete/fonts/xerox/Optima12-MRR-C42.wd.Z b/obsolete/fonts/xerox/Optima12-MRR-C42.wd.Z deleted file mode 100644 index 607214630f3420c7621922e09d977778aefdaa33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-P)KrV2~<2^1P# z2*XeSQUS0RU>%@=g#wTPa42O;f-Pz0ta%8h0iQsB3MEKW=em|T%OMpK0EEl{g#h@I z8lVqU04P%h$gwg2uBu)G#0bmuK>)K>l?2ch07cWbHfyGO+43cTc4E7ZeQ?t(3IKm} z8qoRGt=q9N0O$h14J%xheOBI;Y>)EG%K$KI&dhnU=gy!%iw+I?=1>Ee3EHjcPc`YT z>i}SqowIV~p0Qa6C0cH@Z_agJ&$j)$_&{8Cb){CalI~Y}%|Qo%MYqsrqQmIA4F(qg Dmm_UC diff --git a/obsolete/fonts/xerox/Optima14-BIR-C356.wd.Z b/obsolete/fonts/xerox/Optima14-BIR-C356.wd.Z deleted file mode 100644 index 3dc063e13a859e86b2633fb5e6b133d91e946b79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*YcyQdGp`2gW#Ku6tL7X9v=?DX7&I7A9 E0B3RztpET3 diff --git a/obsolete/fonts/xerox/Optima14-BIR-C357.wd.Z b/obsolete/fonts/xerox/Optima14-BIR-C357.wd.Z deleted file mode 100644 index 8bb6b3f1736cfaa46e017fa8e76cac525c7280b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmV-`0Du1~<2^1?&!0Yn0_`c_#!#V1k19>dbg5IM0PF!x i`SdB(rdX?H-Kw=~(4AbvdL1jaEZMVW)1rl`^CkdE-ZOLn diff --git a/obsolete/fonts/xerox/Optima14-BIR-C360.wd.Z b/obsolete/fonts/xerox/Optima14-BIR-C360.wd.Z deleted file mode 100644 index 69ddd6e985a8144807ffb954f06fcc2280da41cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*Y5Lo2GP|mMw5@R61z|_Wgf+c}DWr2VL LLjaq@#z~3*w2BWi diff --git a/obsolete/fonts/xerox/Optima14-BIR-C361.wd.Z b/obsolete/fonts/xerox/Optima14-BIR-C361.wd.Z deleted file mode 100644 index 61dcf51ff4015e1371ba19fbfa3a488b4a15d2d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmV;Z09XGXosbY100>~<2^1*EMvADNJb_Ae>ZR1^e40DOq-zq1P$d=sL!JV`^XG{i>XswE}{OM ziqvJF09Tbx#aflB*REi{iVaJ4tl6*t+NE9F&ZgS7UIEx!`XE5v2XxD_1n`G1-=crY W20*bC#o)t)2PW1#6Y*f5gBb!wCrRJ{ diff --git a/obsolete/fonts/xerox/Optima14-BIR-C41.wd.Z b/obsolete/fonts/xerox/Optima14-BIR-C41.wd.Z deleted file mode 100644 index f60133eaf522e311f10df2606b97f77555505212..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImNYosbY100>~<2^10Hj>0vL(xxE@Q%+DYGU`m;u(Y%$f71&7VF~@?4jbA)H|AnObO DKiLec diff --git a/obsolete/fonts/xerox/Optima14-BIR-C43.wd.Z b/obsolete/fonts/xerox/Optima14-BIR-C43.wd.Z deleted file mode 100644 index f876ed4397d6bdc59fbd915a316f7ff479f940f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmV-20L}j&osbY100>~<2^1~<2^1!UJY;|zyq!UmeLCl11#H`G*h``=`!ovm0>RcuzD5*QJxQS zeg(nSZ43aq0C2PEcV!=y05D>-2icy>%K$KI&dhnU=gy!%iw+IirceWz3D%`46*Xy< zI57dhgp)F5p6iIV1`43u=--^_zLsqpxbcCo>MlzyB~<2^1ub`LEy3^$PBzdQm=1keVA zp}hd>2m<&6z#kxnsQ|=0nbH7&Lj(!F+zEiE&z?Yk@)U4GXwaiZlOkQJwCPa*_I{#t h>U1j8t5mUS&B_(1&aGg(iVaJ4tl6??&%VrQ696c3Hnac$ diff --git a/obsolete/fonts/xerox/Optima14-BRR-C360.wd.Z b/obsolete/fonts/xerox/Optima14-BRR-C360.wd.Z deleted file mode 100644 index d688d00de861c269875e32b75816dc39c6e3c9c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?5Lo2WP{yxo5@R61z|_VVz>>h6lECM{ K5YWbRQUCy{fDW+$ diff --git a/obsolete/fonts/xerox/Optima14-BRR-C361.wd.Z b/obsolete/fonts/xerox/Optima14-BRR-C361.wd.Z deleted file mode 100644 index 6fb3733b2d4e59797af4fd10577d456aede25168..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmV;V09*ebosbY100>~<2^1T35Wt@ zppXD3Qvw385+%x&Fj)>{6O*7#12u8VjLB0bfKWew_7u9aXw5n`aRpGyv?Z>dP>l|( z6M!nxqE(}6mAbVn*RNi~f*rdRfIqWn{l!ch6@a~(7Xrk+09Wiv0Eh769ePM?01!1} S1Q1NPWemGmLHzyO^Djd*NkHiU diff --git a/obsolete/fonts/xerox/Optima14-BRR-C41.wd.Z b/obsolete/fonts/xerox/Optima14-BRR-C41.wd.Z deleted file mode 100644 index d58236c8c6b9b117c002aa0e04a7963abef886c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImNYosbY100>~<2^10vL(xxE@Q%+DYGU`m;u(Y%$f71&7VF~@?4jbA+KX02mk;8 diff --git a/obsolete/fonts/xerox/Optima14-BRR-C42.wd.Z b/obsolete/fonts/xerox/Optima14-BRR-C42.wd.Z deleted file mode 100644 index b836b38820671547a72578e49310e90fb8364dfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?P)KrVDC5^Pu`v)}5N=~!*1}>|AnObO DNRJI7 diff --git a/obsolete/fonts/xerox/Optima14-BRR-C43.wd.Z b/obsolete/fonts/xerox/Optima14-BRR-C43.wd.Z deleted file mode 100644 index 8f912d4c7653a982b841bc7d386181cbc8e1f2a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?Q1A|GDC5^Pu`v*EXsKV#FoRKmOX9FI G4~<2^1c0s5>2 z&@O6J0FbaYT^S%)07qQ|JP7M_?9V<;$x_^ElV&QHEg7;z!L@8kv0MKD(Ccq+09&(IRGrUmR9%01lOrFiVOi?3TB7^ diff --git a/obsolete/fonts/xerox/Optima14-MIR-C356.wd.Z b/obsolete/fonts/xerox/Optima14-MIR-C356.wd.Z deleted file mode 100644 index b00c05bee49b61febb856fe2aad18a4417b8e122..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TcyQdGp`2gW#Ku6tL7btS>Bt9;oCj8I E0Bhb4l>h($ diff --git a/obsolete/fonts/xerox/Optima14-MIR-C357.wd.Z b/obsolete/fonts/xerox/Optima14-MIR-C357.wd.Z deleted file mode 100644 index 93108f0e49119c907c4a50c3baa162a5ee3fb12a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmV-`0Du1~<2^1?&!0Yn0_`c_#ZaM0k19>dbg5IM0PF!x i`SdB(rdX?H-Kw=~(4AbvdL1jaEZMVW)1rl`^CkcZ=rXMU diff --git a/obsolete/fonts/xerox/Optima14-MIR-C360.wd.Z b/obsolete/fonts/xerox/Optima14-MIR-C360.wd.Z deleted file mode 100644 index 3ebeec7527292047e9b5f0944b52c16f5ae20d66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+T5Lo2GP|mMwVq+lSz|zK8#FD_A^MJJt E08hIOcmMzZ diff --git a/obsolete/fonts/xerox/Optima14-MIR-C361.wd.Z b/obsolete/fonts/xerox/Optima14-MIR-C361.wd.Z deleted file mode 100644 index 73e30ff734c5d4c433ae987da217796ce3315ed1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmV;U09^kcosbY100>~<2^1*EMvAD$VMgrdpB>|v?sIYOq-AZ1cl^NsL!JV9my2QG?+-2!H`Ow z8K6(qsy?y)+&Z-@*RNi~f*mWi?97}v)9%#ym95JM0pLDZI+yHL0Dth}E&4}n02E76 R{2dHqf+2U>MPC2_ diff --git a/obsolete/fonts/xerox/Optima14-MIR-C41.wd.Z b/obsolete/fonts/xerox/Optima14-MIR-C41.wd.Z deleted file mode 100644 index b7410d1a55eb413a19d2df339170cb73a623fe99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImNYosbY100>~<2^10vL(xxE@Q%+DYGU`m;u(Y%$f71&7VF~@?4jbA(%2CqW}N^ diff --git a/obsolete/fonts/xerox/Optima14-MIR-C42.wd.Z b/obsolete/fonts/xerox/Optima14-MIR-C42.wd.Z deleted file mode 100644 index 9e37040c7ec34e5ef4bc97aeac8f8c326aa95418..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TP)KrNDCgHTu`v)}5N=~!*1}>|AnObO DK4}b_ diff --git a/obsolete/fonts/xerox/Optima14-MIR-C43.wd.Z b/obsolete/fonts/xerox/Optima14-MIR-C43.wd.Z deleted file mode 100644 index d1361e38f6749d89befeba4ff9c0ff17f246a7f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TQ1A|8DCgHTu`&1{zps8ZLkVL6hs0rL G9!3Cs_72AY diff --git a/obsolete/fonts/xerox/Optima14-MRR-C0.wd.Z b/obsolete/fonts/xerox/Optima14-MRR-C0.wd.Z deleted file mode 100644 index 596f7d3a5eb0ce0a1508db909f704477ba326a9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253 zcmV~<2^1;+f{XrQG4WB?ojkcuY3l`?V8Jap4Q&!0Yn5|o*9-AbIxjtU77BLJHKg#h?V z2{k|;0FX`w$U!w(Ra^ls1OVIgK>)LTwjMPLA^-}SL{qg~*^+7uyI}!@3hNfYAHPHY z1PJDqso}e_08rE0x13b~7%`ShN!eb@%K$KI&dhnU=gy!%iw+H1t55@&3D%uCx!q@~ z>rQHoZI3d~*sLJ~1+Z+iZ_ac{%dTyi^zY4M>kdo(w)j{91Rx`aHP_PXshH+AmDU#k Dl~!n+ diff --git a/obsolete/fonts/xerox/Optima14-MRR-C356.wd.Z b/obsolete/fonts/xerox/Optima14-MRR-C356.wd.Z deleted file mode 100644 index e77e77152d44e1ff77d3487c478f510aee8bc98e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-cyQdmp^RVG#Ku6tL7btS>Bt9;oCj8I E0Cfux3;+NC diff --git a/obsolete/fonts/xerox/Optima14-MRR-C357.wd.Z b/obsolete/fonts/xerox/Optima14-MRR-C357.wd.Z deleted file mode 100644 index fb8b935600ff6ee792299a3891ec3982f2063b3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127 zcmV-_0D%7=osbY100>~<2^1ub`LEy3^$PBzd!;S1keVA zp}hd>2m<&6pd28Em;l5)nbH7&Lj(!F+zEiE&z?Yk@)Te~XwaiZlOkQJwCPa*_I{#t h>U1j8t5mUS&B_(1&aGg(iVaJ4tl6??&%VrQ6952sHZcGI diff --git a/obsolete/fonts/xerox/Optima14-MRR-C360.wd.Z b/obsolete/fonts/xerox/Optima14-MRR-C360.wd.Z deleted file mode 100644 index 6cc2c7ebf142bd2a49933849629b851cf2454bda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-5Lo2WP{yxo5@R61z|_X5$CALDqQK?A K5YWbRQUCy>WDYw3 diff --git a/obsolete/fonts/xerox/Optima14-MRR-C361.wd.Z b/obsolete/fonts/xerox/Optima14-MRR-C361.wd.Z deleted file mode 100644 index 6da624f9e76e7f8ac577e76a7cbea6ca6b142cca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmV;Y09gMYosbY100>~<2^1T35Wt@ zppXD3Qvw385+%x&Fj)>{6BB?xn>K6ui^)@FO-KNMLh2c`r_q6hVg|sqv?;EZPkl-~ z+Okgot9^Q2r8>1M*RNi~f*mWiELZ^c(5kgpGcDV$Xq8?FF!zF7vMT}n(W{r}AF=^Z VD2)+-u;G?5@JbELSny&L3;{EnLrMSu diff --git a/obsolete/fonts/xerox/Optima14-MRR-C41.wd.Z b/obsolete/fonts/xerox/Optima14-MRR-C41.wd.Z deleted file mode 100644 index fdee537e280fa6c87e60513531e3f171c7f63e9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImNYosbY100>~<2^10vL(xxE@Q%+DYGU`m;u(Y%$f71&7VF~@?4jbA)5XmfdBvi diff --git a/obsolete/fonts/xerox/Optima14-MRR-C42.wd.Z b/obsolete/fonts/xerox/Optima14-MRR-C42.wd.Z deleted file mode 100644 index fefa8e304675a96b76d0636840a72f039bc011bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-P)KrVDC5^Pu`v)}5N=~!*1}>|AnObO DM;{Fm diff --git a/obsolete/fonts/xerox/Optima14-MRR-C43.wd.Z b/obsolete/fonts/xerox/Optima14-MRR-C43.wd.Z deleted file mode 100644 index e6cd2a80c603af741e1beaa62f3881222262f30b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-Q1A|GDC5^Pu`v*EXsch$V8F=0DRJ1D GhY~<2^1-)Jano&Ywzv3JppWfG(pKlkN#{;bMSK0SX0> z7J%N$t1#CAShn?PfEWU91Xvd~K%cTu$plb4F2E@PV$80MS`&b*nl4)oj1e_JjsT9< zcHI)7&diwsrq~tmqHtfShE-mu=~zgBwtxBl6#@X#N|&GkgdQ!rH0jf(Q=?w3I(5pS zp>euI98?JEl{$w380OS6=Ttm@S|osbY100>~<2^17N`j&T MLjc~<2^1*EMvADC{1PnAvbT@6e6?dOql>U3iTP(r_q7yWQtrm@&-$hN2AUR zFper!pI3ismCALi*REi{iVaJ4YK#D9)7n()H9!uVWCFw`1Gg-IRCn(ZO%*mk9h-#$ R1Rm_NP+6OG{QAXOhauDBL9_q> diff --git a/obsolete/fonts/xerox/Optima18-BIR-C41.wd.Z b/obsolete/fonts/xerox/Optima18-BIR-C41.wd.Z deleted file mode 100644 index 5f9d7342fe217bca89852eca789b5f7ccdf9d852..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81 zcmV-X0IvTZosbY100>~<2^10vL(xxE@Q%+DYGU`m={@I%xSadO`iaE?zzYiZqFX^ diff --git a/obsolete/fonts/xerox/Optima18-BIR-C42.wd.Z b/obsolete/fonts/xerox/Optima18-BIR-C42.wd.Z deleted file mode 100644 index 102cf73762620290bb6323ae82f422f7a5ba5563..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*YP)KTNu;te^u`v*6kZfZtU~ORKIpEp` E09$1a6aWAK diff --git a/obsolete/fonts/xerox/Optima18-BIR-C43.wd.Z b/obsolete/fonts/xerox/Optima18-BIR-C43.wd.Z deleted file mode 100644 index eb05afd23b76d99f43ba5c80b83abd6bfc987dce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmV-20L}j&osbY100>~<2^1~<2^1j0zzFpOpZB^PDpoS9O|&7VGl0tG5l=bnof16)Y@DS)E@$pX;( znFD5kaWrjOQYipQ0BHhV1gH}>z*aIprI{5lCjgrOec)!5MYAQ#fj;9_jY|dqHMeey z_CzV*2H-+)<(5_DHmY4x#-mJMZ=g*!)gB~q9G|Hh$GT&?|Q)Pe{ zpt)kKIV`CV%Bgm`o-EYo1=7Gf-{oxcwvgb+0TgEKPc`D>%3la@^_sJQ3U&#^o&uox Kz(N9|jAaN$4r_$~ diff --git a/obsolete/fonts/xerox/Optima18-BRR-C356.wd.Z b/obsolete/fonts/xerox/Optima18-BRR-C356.wd.Z deleted file mode 100644 index 7801ad7a5dcad5baa37a1ad30a761eb1922ba65b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?cyPSG!Iodw#Ku72fIPztrZ0>PoDvP) GJd6O9uMaW+ diff --git a/obsolete/fonts/xerox/Optima18-BRR-C357.wd.Z b/obsolete/fonts/xerox/Optima18-BRR-C357.wd.Z deleted file mode 100644 index 5527e63d22dc7e480364db61c9bd53b27279ab41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmV-@0D}J?osbY100>~<2^1d)M!he7n?SX fy0ofPt5~mU{h2eX*R5c`iVaJ4tl6?JajFCW=g={n diff --git a/obsolete/fonts/xerox/Optima18-BRR-C360.wd.Z b/obsolete/fonts/xerox/Optima18-BRR-C360.wd.Z deleted file mode 100644 index 4d18dc79da0c3c778e414569ba7e72412d65869e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?5LndGV9T#-5@R61&{Y3}=?kX;-w6lr M28Ja(0qv^J0PUC&qW}N^ diff --git a/obsolete/fonts/xerox/Optima18-BRR-C361.wd.Z b/obsolete/fonts/xerox/Optima18-BRR-C361.wd.Z deleted file mode 100644 index cd5602f290971c26ba4f5052ade822d3697e4d0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 zcmV;W09yYaosbY100>~<2^1*EMvADm`r8>B{y%{R3fwIOql?N1r6$x=+C1zrO6cVf~nINESdV8 zigci~09TbB#Y(knRj**biVaJ4tXZ!)ajM;^vuc1GHpv8#OD1kvmH<-a&0928*#K;8 T778%9u**Vsx3U2Y*e76y3~<2^10vL(xxE@Q%+DYGU`m={@I%xSadO`iaE?zzYibDtjz diff --git a/obsolete/fonts/xerox/Optima18-BRR-C42.wd.Z b/obsolete/fonts/xerox/Optima18-BRR-C42.wd.Z deleted file mode 100644 index 128f4db9179eb38efa81fa9ef41394fdda454307..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?P)KTNu;te^u`v*6kZfZtU~ORKIpEp` E09vIE3;+NC diff --git a/obsolete/fonts/xerox/Optima18-BRR-C43.wd.Z b/obsolete/fonts/xerox/Optima18-BRR-C43.wd.Z deleted file mode 100644 index bfa58ac52590dcd9af3252964543ee3a380138ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?Q1G7CV9T#-Vq+lS&{98(;Sb{m9*M&t GJd6N=m=7ob diff --git a/obsolete/fonts/xerox/Optima18-MIR-C0.wd.Z b/obsolete/fonts/xerox/Optima18-MIR-C0.wd.Z deleted file mode 100644 index c5e017dc33e956442961a1500783829ef9e68d6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267 zcmV+m0rdVKosbY100>~<2^1l5wmMjOx;Hr}E6adTC z)&T&CaDW^DFbR0Ux2t0S)B;=p%y;iqsyPm;G%Td0X8@l=gB~rqH0jf(Q=>jzQ>e|) zuNkJ2OwqJToWoEm6|y;%PTC-X0`RB0_~^W%Yx3^A+PG)|1X=>H2U{)*yf*|4n)=)W R-sr0-0?^fxs{kZv83KLlZR7v| diff --git a/obsolete/fonts/xerox/Optima18-MIR-C356.wd.Z b/obsolete/fonts/xerox/Optima18-MIR-C356.wd.Z deleted file mode 100644 index 5d6ddf771ea4dcbbe93f9ee692d0ba2bf75a6f02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmV-00MGv)osbY100>~<2^1~<2^1Im40Qp}6#(TPl>kzyR0*>u0G~jA3JvO0KsusBlOkQJv?#P@Y`FdL1jaEZMVW)1rmBb0q+~mM;MS diff --git a/obsolete/fonts/xerox/Optima18-MIR-C360.wd.Z b/obsolete/fonts/xerox/Optima18-MIR-C360.wd.Z deleted file mode 100644 index 06aeb2d5595a455aa9255c09f6502e76ee7a1cfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+T5LndGV9T#-5@R61z|_WQ$2x&6B|+YS LA%IO`^CU$8xla!S diff --git a/obsolete/fonts/xerox/Optima18-MIR-C361.wd.Z b/obsolete/fonts/xerox/Optima18-MIR-C361.wd.Z deleted file mode 100644 index b56b9fe3f5143283ab71d95fbc0b49c7578e5d1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 zcmV;W09yYaosbY100>~<2^1*EMvADm`r8>6gO|$L?N^1Oql>=1r6$x=+C1z*U1zq;6~G?ETJNu z>N9{gt5&OO^U0N}*REi{iVaJ4tXZ2e0;FAwR&Cb+LTpY6Fn5aFvOpmL&~<2^10vL(xxE@Q%+DYGU`m={@I%xSadO`iaE?zzYiaEBiQ diff --git a/obsolete/fonts/xerox/Optima18-MIR-C42.wd.Z b/obsolete/fonts/xerox/Optima18-MIR-C42.wd.Z deleted file mode 100644 index 92c99192d68efe4d96be37b8a91f903dd20cac2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TP)KTNu;te^u`v*6kZfZtU~ORKIpEp` E09oY@1ONa4 diff --git a/obsolete/fonts/xerox/Optima18-MIR-C43.wd.Z b/obsolete/fonts/xerox/Optima18-MIR-C43.wd.Z deleted file mode 100644 index 992235c554c995c979dca944a6c8f0b98b190894..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmV-20L}j&osbY100>~<2^1~<2^1{ap<3DL|nB(gM&^ z86ZXgegVb-khRrmfE)sV1Xw5FMF28o1JntyCBT%dOqa4z8=y~3uEScg9B6f|)jn=* zwygso6aY*&3kxtocP(JMn9(Gq|?*<`-zeIc?c UX#pNuUe%ogrT97mkOW}E5Y%pFod5s; diff --git a/obsolete/fonts/xerox/Optima18-MRR-C356.wd.Z b/obsolete/fonts/xerox/Optima18-MRR-C356.wd.Z deleted file mode 100644 index dfb2c8ca1258dcd6799e34809ff18f838eec9805..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmV-00MGv)osbY100>~<2^1~<2^1dbg5IMG=W}x h`gCg3t5mUS&B`_C&aGg(iVaJ4tl6??&%V^D5&%r(Gw=Wa diff --git a/obsolete/fonts/xerox/Optima18-MRR-C360.wd.Z b/obsolete/fonts/xerox/Optima18-MRR-C360.wd.Z deleted file mode 100644 index bccfe9194476e67078d8fbac3b24e3d48a17eb29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-5LndGV9T#-5@R61&{Y3}X#%GK-w6k^ M28Jafk`27h0OSS`%m4rY diff --git a/obsolete/fonts/xerox/Optima18-MRR-C361.wd.Z b/obsolete/fonts/xerox/Optima18-MRR-C361.wd.Z deleted file mode 100644 index f2657a4b15d3d1a8159ead291d5472acad9cb641..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmV;Y09gMYosbY100>~<2^1*EMvADC{1PnAvbT@6e6?dOql>=1r6$x=+C1z*U1#{f~nINESdV8 zige((09VKP#7ebmRj**biVaJ4tXZ!CVx(Og!=~D{Rnyv>5`gZMxn)@b2(@=_(NJXr V)UjDdu;IZ25$BzGSn$?53<0I4NN)fD diff --git a/obsolete/fonts/xerox/Optima18-MRR-C41.wd.Z b/obsolete/fonts/xerox/Optima18-MRR-C41.wd.Z deleted file mode 100644 index 56f254466d4a6a50bdcf685a6ca45876782442cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81 zcmV-X0IvTZosbY100>~<2^10vL(xxE@Q%+DYGU`m={@I%xSadO`iaE?zzYia1S2) diff --git a/obsolete/fonts/xerox/Optima18-MRR-C42.wd.Z b/obsolete/fonts/xerox/Optima18-MRR-C42.wd.Z deleted file mode 100644 index 6fb38defdc680d6d1f279db228acb93e6d6f545e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-P)KTNu;te^u`v*6kZfZtU~ORKIpEp` E09hps`~Uy| diff --git a/obsolete/fonts/xerox/Optima18-MRR-C43.wd.Z b/obsolete/fonts/xerox/Optima18-MRR-C43.wd.Z deleted file mode 100644 index b46621a2c4c9860474afbde26fddf1156e65e82a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-Q1G7CV9T#-Vq+lS&{98%VF%*^Zi&Mo GJd6N*#typx diff --git a/obsolete/fonts/xerox/Optima24-BIR-C0.wd.Z b/obsolete/fonts/xerox/Optima24-BIR-C0.wd.Z deleted file mode 100644 index b6b0ff198c82e7e8906d2dd6d93da5765955be53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270 zcmV+p0rCDHosbY100>~<2^1ET@2Uhy@UkEIB}o0Avay4)93;C99`EgLX+8KZhVWx4>SWnlI|#qhm8iJz#-L%eDD^by+re UA=CnnaWAzSXbkQI224QA5M)DZ;{X5v diff --git a/obsolete/fonts/xerox/Optima24-BIR-C356.wd.Z b/obsolete/fonts/xerox/Optima24-BIR-C356.wd.Z deleted file mode 100644 index 4ff19451d93ea222a60674303004b00174ea37f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*YcyRoDgF3&iiH(7Pg9gJc783>qZi$9& G9!3C~<2^1qe;1r;N1_-u9sghgDlrM7v(8+VB&z?F5umbwCDAA)vlOkPOv}MnWOqoJe eN;PWLt5&o6#EG@5)~{Z}f*mWiEZLVgRRRE&`7`_g diff --git a/obsolete/fonts/xerox/Optima24-BIR-C360.wd.Z b/obsolete/fonts/xerox/Optima24-BIR-C360.wd.Z deleted file mode 100644 index ecf6c6a32a03df01d2e6f114841fe857e676a53e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*Y5Lk4iL7iXMB*x%_yj?%j5e^9!mIem? M28Ja(2l`c=0qUL+4FCWD diff --git a/obsolete/fonts/xerox/Optima24-BIR-C361.wd.Z b/obsolete/fonts/xerox/Optima24-BIR-C361.wd.Z deleted file mode 100644 index 12ec78194f2788267bbe4bdc4299514216ec9bf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmV;Y09gMYosbY100>~<2^1uP^x?Z2tdn~En~VonMG!RQ#WtgJSDT|Oql@u1r6$x=+C1v1*l0HPNdUtFQFox z>QlfRt5&Pd@yV5{*REi{iVaJ4tXZ3m0;FAwR&7_EGXrRoE7zvBvOu{3(95l8U$X($ VB_$w$u;G^k@J~<2^10vL(xxE@Q%+DYGU`m={@I%xSadO`iaEKDo#cl`J1A diff --git a/obsolete/fonts/xerox/Optima24-BIR-C42.wd.Z b/obsolete/fonts/xerox/Optima24-BIR-C42.wd.Z deleted file mode 100644 index 862666d9fcafd47b4dbfb558bd1be43e484935b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*YP)It`pw6#rVq+k1K(URfp@oI*fs!)- DRvivW diff --git a/obsolete/fonts/xerox/Optima24-BIR-C43.wd.Z b/obsolete/fonts/xerox/Optima24-BIR-C43.wd.Z deleted file mode 100644 index 05b15c53a3577a5c1fa6161aaea30997049d281c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z*YQ1HIipw6#rVq@?@er~<2^1n-)-eRmp=@dZ diff --git a/obsolete/fonts/xerox/Optima24-BRR-C356.wd.Z b/obsolete/fonts/xerox/Optima24-BRR-C356.wd.Z deleted file mode 100644 index 1c3a2f85d02d9da80e205c385ab5908e84cf5562..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?cyRnYgF3&iiH(7Pg9gJc783>qZixm) He+ec4kbe!l diff --git a/obsolete/fonts/xerox/Optima24-BRR-C357.wd.Z b/obsolete/fonts/xerox/Optima24-BRR-C357.wd.Z deleted file mode 100644 index e2667a61a85e7962221e847ac526de516fc035cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmV-^0D=D>osbY100>~<2^1j{pDw diff --git a/obsolete/fonts/xerox/Optima24-BRR-C360.wd.Z b/obsolete/fonts/xerox/Optima24-BRR-C360.wd.Z deleted file mode 100644 index aeebae725f404e22208d2a6243c092a111bf6eab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z(?5Lk4CL7iXMB*s91p{f1{(+6P#4h{xJ NUIxYh$%I(%HUQt=519Y} diff --git a/obsolete/fonts/xerox/Optima24-BRR-C361.wd.Z b/obsolete/fonts/xerox/Optima24-BRR-C361.wd.Z deleted file mode 100644 index 6623d1189eaef246c6913d55c8746ee7a04332cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 zcmV;W09yYaosbY100>~<2^1%92?*a z2mk>uP^x?Z2tdn~En~VoDMn@hTsLpp#3i%mOq&J>67)Irr%{;#<{%9xfT`1$;e1Lx zdU8(Eq&~4yoyv8q*REi{iVaKFYXDeh)55Zeb}iKar)(w*Fjt#RyJKepptg6fPrrEs T;C)FzK;grL%M#TlSny(o668cf diff --git a/obsolete/fonts/xerox/Optima24-BRR-C41.wd.Z b/obsolete/fonts/xerox/Optima24-BRR-C41.wd.Z deleted file mode 100644 index 5c86783a04246167fcd95ba8c28b6c6427d1c2c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImNYosbY100>~<2^10vL(xxE@Q%+DYGU`m;;`$%$f71&7VF~@_dq$A+i%88vp~<2^1Vf*YFU$~O_jKG3Jpqh=+K%ypR{ZlKuAjg4Fb>; zkVU|r0FDCmv1%1SIj;fM1t=sS9oKLHf(ZyGfIt9k0g?%r6IOt{0OR5Y;CD0S&6h1- z2Cx)1z^B5&at0j-Kv!eK0EP*`hF7X(dI2s3Ad?d=*{g&L8D2^H)XUQVP^(VOdbR7; zuwToL4LhY#T&Q)vtQmk!fI6>N^88wk>8Zgk5*#CU Zvav7MlKh?hS9n*!>!cJ+Z@`4N3<0guaE<@~ diff --git a/obsolete/fonts/xerox/Optima24-MIR-C356.wd.Z b/obsolete/fonts/xerox/Optima24-MIR-C356.wd.Z deleted file mode 100644 index bf7e6dc6902cd4b59d55f87b50572eaa0e3028c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TcyRnYgF3&iiH(7Pg9gK4783>qZixm) He+ec4kP{8P diff --git a/obsolete/fonts/xerox/Optima24-MIR-C357.wd.Z b/obsolete/fonts/xerox/Optima24-MIR-C357.wd.Z deleted file mode 100644 index 8b2db7c6f744d78e4c7298eba034b91704a8bb4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmV-`0Du1~<2^1-JfLZ`HfEcy|&@KQ#P@Y`FdL1jaEZMVW)1r;JlO+HO{V-bq diff --git a/obsolete/fonts/xerox/Optima24-MIR-C360.wd.Z b/obsolete/fonts/xerox/Optima24-MIR-C360.wd.Z deleted file mode 100644 index a8881d1f0755cc1097fe3a6fd0ac36f4f92b2f03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+T5Lk4CL7iXMB*s9%fu)VfhhqkFih`{J LLjaq{wn>Trwf+wf diff --git a/obsolete/fonts/xerox/Optima24-MIR-C361.wd.Z b/obsolete/fonts/xerox/Optima24-MIR-C361.wd.Z deleted file mode 100644 index 5510824e9457ea1712e22656853aa06c32352743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmV;a09OAWosbY100>~<2^1MP^xSI2tdn~En~VonMGy*OE&{Jvbl4n%%3v>loKixXi=X?WeV7%G@JmZP+x`v zN;T=pIRdcG0h+a{SF2ycf*mWiEZMVPbK+cUldaVNpKJyTFgKW7vn>JW(yP~~F0%o~ X*`ybMu;G@4@gfZ%Er2%0Kpis#`6@wZ diff --git a/obsolete/fonts/xerox/Optima24-MIR-C41.wd.Z b/obsolete/fonts/xerox/Optima24-MIR-C41.wd.Z deleted file mode 100644 index 8e0e3593c75716dde93b5c65c492696a3e9be10b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImNYosbY100>~<2^10vL(xxE@Q%+DYGU`m;;`$%$f71&7VF~@_dq$A+GZw6951J diff --git a/obsolete/fonts/xerox/Optima24-MIR-C42.wd.Z b/obsolete/fonts/xerox/Optima24-MIR-C42.wd.Z deleted file mode 100644 index 56117b2d43fd55b7f109a17659b59db2bfa85279..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TP)It$pw6#rVq+k1K(URfp@oGl;ec=( E09fV@EdT%j diff --git a/obsolete/fonts/xerox/Optima24-MIR-C43.wd.Z b/obsolete/fonts/xerox/Optima24-MIR-C43.wd.Z deleted file mode 100644 index dd708f9dc5a66cfd8c4d7ea926de05fd62f27e7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z+TQ1HISpw6#rVq@@O{`UF;h9yi1{1VQ2 GJd6N^^$!RD diff --git a/obsolete/fonts/xerox/Optima24-MRR-C0.wd.Z b/obsolete/fonts/xerox/Optima24-MRR-C0.wd.Z deleted file mode 100644 index d487e4fd8a2d84a85193661da2b2fd273bb9f8bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmV+r0q_1FosbY100>~<2^1Vf*YFU$~O_jKG3Jpqh=+K%ypR{ZlAV*69F9OgL zkVOEa0G|RlvMOK>(sBX#X%!$(z#akE0%$`UU|oP@Z_Ntuz*Jh>us2iQeA)7)R;d9j z0S=ZkSb%W=h9wRFD>2(~faw875nu|z!(;dSbrhh`%Fm}>iUu&cH0jf(Q=?w3x;5+7 zDUIS9t@CBg0Bky|Udgi@fO1Sv1x|W9x96fkbGTl9y6@}XpqWdD8P0DE+J+syL_6S0 WfI6lH{Mz1WcOd}w{L&jR;V?r3XK>vB diff --git a/obsolete/fonts/xerox/Optima24-MRR-C356.wd.Z b/obsolete/fonts/xerox/Optima24-MRR-C356.wd.Z deleted file mode 100644 index 74ced308ba4ccd9d10768217f597ddc7eaed4a73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-cyRnYgF3&iiH(7Pg9gKC783>qZixm) He+ec4kDCp> diff --git a/obsolete/fonts/xerox/Optima24-MRR-C357.wd.Z b/obsolete/fonts/xerox/Optima24-MRR-C357.wd.Z deleted file mode 100644 index 3d439655e6b1527e60a29bf03b968cd101df4fc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127 zcmV-_0D%7=osbY100>~<2^1?&!0Yn0_{1#*-)WKk19>dbg5IMHG!gh h`gCg3t5mUS&B`_C&aGg(iVaJ4tl6??&%)HX5&*jYHdp`v diff --git a/obsolete/fonts/xerox/Optima24-MRR-C360.wd.Z b/obsolete/fonts/xerox/Optima24-MRR-C360.wd.Z deleted file mode 100644 index b3157e80c1927fc807e5e4ba05e4d83bebdb2e98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 zcmV-80LT9yosbY100>~<2^1~<2^1uP^x?Z2tdn~En~VonMG!RPd9Jc{3NsIOql?<1r6$x=+C1v1?)+RO+eG9FR}TY ziuB|jrAmEftxB~k*RNi~f*mWi?AHK}(5iK0GcDVy0W8@J7JzQBxn^4e7`AtB(P3r- WjI&8EK;gqJ4d*>7xba}d;}`~<2^10vL(xxE@Q%+DYGU`m;;`$%$f71&7VF~@_dq$A+tFlDF6Tf diff --git a/obsolete/fonts/xerox/Optima24-MRR-C42.wd.Z b/obsolete/fonts/xerox/Optima24-MRR-C42.wd.Z deleted file mode 100644 index e2fee30edc2247b70b94814d12259be9d03102d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmb22J3&B#fg|Aor-+v4EEdKC8x|gJa}Z)-P)It$pw6#rVq+k1K(URfp@oGl;ec=( E09YmtB>(^b diff --git a/obsolete/fonts/xerox/Optima24-MRR-C43.wd.Z b/obsolete/fonts/xerox/Optima24-MRR-C43.wd.Z deleted file mode 100644 index 7fb8abd6bb114ed0a8bb213d4ced51d531f184d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 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 G8HV_D7=ya*HL!_g&0iVR0DXtjou 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 diff --git a/obsolete/fonts/xerox/README.TXT b/obsolete/fonts/xerox/README.TXT deleted file mode 100644 index 2bc12d9e..00000000 --- a/obsolete/fonts/xerox/README.TXT +++ /dev/null @@ -1,3 +0,0 @@ -This directory contains fonts and font information which are to be used for Xerox internal uses only. Under no circumstances can these fonts be released for customer use. For information, contact Frank Shih, Lisp Development, Xerox Artificial Intelligence Systems. - -The screen fonts labelled ITCBauhaus are in fact just renamed copies of the font Modern. This is because ITCBauhaus is not yet available at 72 dpi, and so the generic Modern is substituted instead. Printers containing the font ITCBauhaus should be able to correctly render the file, however. diff --git a/obsolete/fonts/xerox/ShimmerWide.wd.Z b/obsolete/fonts/xerox/ShimmerWide.wd.Z deleted file mode 100644 index 8e15b00321df15ee58cab661bda468560725c089..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 640 zcmV-`0)PD6$ zK*oa!7dCtdGRH`Z1R7{e+413w86!yoC~$J4N{=*f$QTJEL4W`tnB@deXyUA*0s@Ti zlQV!wiDHTlkouykril}Z5(wbKN7Ysn4?qPlwJNQNSrZIk+jXP>3t+_pD4SD2inK)o z07%+5qQqGP|55rkfj|uc34jc20zh2=5dx|Jx_CywCjjIE*bp564n_dr0?-5CEdU*i zupPvnExR^q0On{1SToqLxA080RJ92dYk0_4Vk00smgOaNN|&M%%EqfrFcFy!i&4aKsshoN~-L2c2}(S%)2a-F*i| zc;l6KUV7_o=N_hX#HS*C_Ti_W1p)BqAAkZ9D1d<&AgCaN4z?GagcMqcp@tlK2%?B2 aGCJwOlonazjiC|AqmNfsiDbhG$4C((>-&oU diff --git a/obsolete/fonts/xerox/ShimmerWideMIR.wd.Z b/obsolete/fonts/xerox/ShimmerWideMIR.wd.Z deleted file mode 100644 index f15199512b64c6d2ad2e0c79278827ec48c1db30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmV+g0s8(QosbY100^*P3X&vEniP?8B?*xt03u3^2qZy(03eu6lxRWXtbzY1{hL6b z27v@X1~vhpE`SIDRR94Ha7Mr<0OSJL&=~-Z00#iT1)vAOTL3yglR8k!bg9#z0L(QF zux!8>0apYN2~bY}4*?+rY!IMCz?J|v0$dV+RDl3+0-y+ZApnVh6>*0OpdrA903ZW; z2#7LQz<~e^jv|&RGe8Xi5Cm8V@Jw<5cLB0`5a1yIh5&+Ncpe}@z=r_x1h_qXDFCbh za=->yCqOC#0R{pH3$O)1Bi=t50}xJpxbfo1k1J2ke7SSs0eB_H832_`(g8>`ml@nS Lb?eW=Z&yAM_NrAh diff --git a/obsolete/fonts/xerox/ShimmerWideMRR.wd.Z b/obsolete/fonts/xerox/ShimmerWideMRR.wd.Z deleted file mode 100644 index 14b49257807e8b6fdc5c3ceccc30508f85a73103..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmV+g0s8(QosbY100^*P3X&vEniP?8B?*xt03u3^2qZxO03eu6lxRWXtbzZ+{hKfV z9f1Tu1~vhpE`SIDRR94Ha7Mr<0OSJL&=~-Z00#iT1)vAOTL3yglR8k!bg9#z0L(QF zux!8>0apYN2~bY}4*?+rY!IMCz?J|v0$dV+RDl3+0-y+ZApnVh6>*0OpdrA903ZW; z2#7LQz<~e^jv|&RGe8Xi5Cm8V@Jw<5cLB0`5a1yIh5&+Ncpe}@z=r_x1h_qXDFCbh za=->yCqOC#0R{pH3$O)1Bi=t50}xJpxbfo1k1J2ke7SSs0eB_H832_`(g8>`ml@nS Lb?eW=Z&yAMg+x@f diff --git a/obsolete/fonts/xerox/Souvenir.wd.Z b/obsolete/fonts/xerox/Souvenir.wd.Z deleted file mode 100644 index 42cdef415770c11cad7d8b73c6835d3b2ac9a6da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1601 zcmWO4eOy!Z9suC)@9Z#++hAt{WdrUw8z8S2mrU&~p6<%ECFd53lDT7&4$&(H@nnUgBW=^b3*P|c45iFDEgi+!`tyC4}9oow3GftTPb0!OmzErlIWXVx9I~7($+$ zxbDAQWkwE#2C5ZmWQM9Wfv&gJ8Z*?ckx4v~NEi|csm@qnrY(dirQzE_f;FEjATT`(lj>M#jlgGCZVG&_Ns*Jqdk;dkhK* z_7iwPpftlZLRkx6Rb~T^vqgUrY`EcdNWxogm}b40T4*Pf7Kk<}SQ72ax4@gYG7Cxw z<2u+cpnMy!#vX?Z%a7DR!Wji{Ih34{V|j8~h`tbkKXS|2XdR}XIr;kX>KS|W>fsqj zUFN3KP^RlmwG|OGYvMGMbU-MV&49avd$`r4iW)Ov{@8!_TW>_~a0oTgtT#u3ZsACk zRs^jUZ#L+HBASl4KH4;QVR-e;xr?Kj{B!@pu8D7@_zA3|DA5wY_@U1n=U@_Nz;VB> z#s>!QmJRT!F6O(-Ki*E-4ew2!UGdT4_p`gN!0-I;z@H9dQ~uw$gBCvUp$1`2;1r}w z=KGJpNUO89JBJAN49ITAuxl_+|4y0kNg;nP-h)?rcKA8=V38(o%`n0qgb`nmvH@YUGz24!|>j$Y{;@Du@N>`W=8T#8#rN%C0 zNR%DA(5h8Q1!p^s4fs5)x}7-N9F#gmpTEL=Om;5HY7Rd9=G4(czur!*JlFL_S@W($ z%;Lx5Gu7*_sONh5=NDj0NULWli}5@RS7&e#FFIeFbHs2xY5kQN=3;wA!Lt6w8|pUJ zSE0-ejkz{_?m>I^ltl|KbxC)=5hL2@17^#A`WYY%BvYe6KUX) zKq79f8zbC4sJI-8NG3ci&KJushxyY?%n~X}eTA?Xy1yy$pyYi?oj_?r9= z@W5l*gP#}X9Ut#G3my%$Gz>p#+14lQ9dDXk42U`Zv)3azeQ3cCmVxug;*pZ(0sXq& z9Ydq9PFy(Q8EH%YDuE&BDG0{l8#sI>#TjLl={o@Q>k~QskW!_ZSW{7 z>0UtA!F_zZUBE`-#;9stA%qjOs3=ptT6*#*GGt`_RnAC0y!5{EV7o3O@K0p?_lwy` z%u|O{SL@1#?U56&#J_Ja`~#!Rz{(kwfD&Mn1F(~VY=MDWa``AIMIWo{`b)z7XlafV z(wkSlT$+1Eh|>t^%J!7^njv$c5`vL-f3vHgEO96ZH`xA1urt3o%B^~Bee$YtF~`-j zF>b!osBK=`R2i-}@**{-3!t22E^D{uCKl(a@|Suw)nV^^(mMgAu95Bc^iBQt>7nOpUl0Ez(@whEXO;EaGB0o1^R8337pR00MGfa^)XkN{*038)lcPGkY60+PJO!d>e!hJkfVJC rWxNDn4mc5@OWFWi0&ElDO1mD)@?Z+cd9&B```M{Gye{Cw03!|otx0M1 diff --git a/obsolete/fonts/xerox/SouvenirBRRC0.wd.Z b/obsolete/fonts/xerox/SouvenirBRRC0.wd.Z deleted file mode 100644 index 3461533e89490acdaa311081d265163cafd58335..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 zcmV+)0pR{0osbY100@9!%9AQqia1Fk1%Shc5CH&55I_KkX%QV-c&KaOKU@Cj5pYAm z0+4|@0(=R;O~5Ze00zVv04BhX0D=M(3NS~2p8!+>Tnca{fGh#tkSa~ebm>x}Kn3Iy zAW5nK8UvUN&>%pc0C@v;2skBR&wvI4P6T))fX#p$0^kf_H6Z2}0o4Xn8F0a+fMEi{ z4WK{(1>XT21Y`omV zfdcFkuwk-*NdorXRU^QPfDZxW1gOAM0IkRXkSkBle7W=H(4R|>P93>`Io26S<`Ezp l%(MZ73>XnUfHVP#tRs;e45omcH@QupUmd!`=>jmkbqMD?Wkvu1 diff --git a/obsolete/fonts/xerox/SouvenirMIRC0.wd.Z b/obsolete/fonts/xerox/SouvenirMIRC0.wd.Z deleted file mode 100644 index 2805dc0752fabf7bac39316143f3f3f2dbb13287..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289 zcmV++0p9)}osbY100@9!%9AQqia1Fk1%Shc5CH&55Fh}EX%QV-c&KaOzdipx5U4dE z9gu-10<;K_M?eBV00v+fAR<7B089cn39v>0kN`0Pa0>7uzzzX&kSa~ebm`InFrW(P zB_PYx0OJPq7=S=PDFNjKuoI9-0Gt5_24o0OML-Av-UM_RP-j3)9Rd&yz#%{wSpk{^ z)Dr-206GEb1_TiBCO{JbG6F1t2{S+(0ZRltRv=)AfCmB82tXlVr;h+OdPJOy{O27(000c}MP$EE)0AB)x37|)SkpN2quu>Vol7KNslOkQJRH@AXN(7J+ zP({F~0PhAg84y5#DgosLv=i`1K%4;r24DzKMgR!`-~^-@5Jteh0W}0b8ZbkEFadxB zU=nao0LgIzpiBTS0T4Zg36rN=0X_s!5D-Pch5&d3+z@c{Nq{2)b_Ccu1T$66 zq63r)kS;(X0XhVz7_dM94FM>y1~3x&pdzSRO!M rYgpsr!@ diff --git a/obsolete/fonts/xerox/TROFF.wd.Z b/obsolete/fonts/xerox/TROFF.wd.Z deleted file mode 100644 index 12afd1b0ccf33ae19e5eb09167c4edf85e5af324..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1358 zcmV-U1+n@cosbY100_{4ij*ftj0|BCWXhBzLtp@yNHHJ)0S^o!RLIaFL>V)1Py}Fc zK*oa!7dCu21Z0kp773i(sM2Fg8WJlCEZ{(6%8o2&%os^hpn;w!Ij)2_g9cHH2Nd`; z(j*8KBsqyrw1|Mg)T&oOiqvW`f!Cy9k+{@a6o7)W8`H|DF_f&p1q;4fMIw}KTLyX2 z?hWY|NP++YKupsbAPq%bh6M;{(L$?$5fl#?9w5Mk8Otgt9x+TnK!_5S<4{~+xPSm3 zY%KH1Y}kMR5h5%PqJ21kV#|siM-D()>i{CW2L$kJe2Hk%0Ztp2w7PWw*v30itYJ6+ zfZs$1NE4nw0D$5|2{1|yfO+~!&l3;;AU(ad>In(}z@EMwZvz0}rWFC~@OD6e!VEYM zMW+~s001MHqg4T#P^64u2>=iSIa(P&26+kq01Y%+9pC|P3jiR-9wnkS5eS9}6ht2- z7D3SvwFMv`Q3oKB*+BpB@=pT=^guukKuqLK02Tzm%K!=h0>A)4P$^{qO<)-SJp-V_ z3FVwsDjV`4O6jGWY-y^dmyR(&9-EF~Y7+n~ z>8O;n0#NI%w&sfKuDbTh>#x4{I;Ny7@cL!2wPFb@uE!E<=Ca5}3#^$G2}6(oSO5?P zFjJyKkpusPB7iFcERm!D?!*dhvh=Jg?Yr*A3-7%0UU@-96AciL0O%w+zySnw5OATR zP{aZNvH-B}4%}i%kq!U&FaRF|aKdeu6a7=iKMW8s1pzuF8Ed9aLMdgQS7uqrmR%mZ zrkH5PoMy~gHsNN=a4IUzpLXutXQDx5I;o<4!Xl@gKND@}oJJ>#G|5e_{Ai>Xow=v0 zykJ?TtDRzMGpnvXYIW9Gdm1*Brqbi2!?JE!FTHTTjq9*g^Q!K<%EEoOvuDa3cdpb< zWbFe2WCFkt7kfJqxTg%T!T?41>#aBPy8XA`m|w0rumRi)z(42wgTnyRfO;+_1CZ-V zs}y~R3jp;9z}-NFWN!QBxF-wi=c;f_00VFN|j zIf@8mN`x2y3r?51)UobG0C=4}WY@6W0bm9Z8-O4N(22y2>pAT3upR zyBavXlc7U|0koX`TmZrmS}||`vmz9)xI|n{FNxi%6&S_%#J_DRW03eq2nJw^0kA`4 zp`iljx)??++Hs3`Y#;#ku}3NGv5)Vv(j5nx$3hbFkihyQ9~Y^}KT_l$L~tVkXXQe))?nCN?vKNj8|G>DRbpUL%I@?np+evUP;Sn{m>o*_=9-> zaD#@~gCZCB2Qdclf&t(_a%AihpI*7D0VpA3{_qDpAV+`?_zMIAV1=YIA%JHH02j3q zfF1@whXI@*0Ie8+2nGOx0kmNN5fH#U%sBu!NQx2yfQO{|Ab>uYWB^YX01^byjJdHw z0J@OW6$DTQ0VE)tY7oF11n`Fdh(Q2S5CAB|DF75;Q~(PFhosQ3C~Qnd06P#s>}nx^ QZK#wYIF#59duTxb0H1$4tpET3 diff --git a/obsolete/fonts/xerox/TROFFFonts.widths b/obsolete/fonts/xerox/TROFFFonts.widths deleted file mode 100644 index feb89704c6c96980c7c32ece2f721655d9147fe8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6406 zcmeHLU1(fI6h3oiv%7b*=BE$a7Yi|h31%ajwEiH>%0u@Lk@%|o#jQw58z-!=8#w)PX>zZFJRa!y1&;=)c5+GF4N~#W1itHz$Q1nM zI~(?+!KnUqF|KoxF3|7lZRqblI5|-o8HE$z-LbyLEYj~u`qkMw{oVxLZ~!~oG!8N^ zXJ5=v7#QyR(>2K~q5dHZn1_cI;m=TK!oc!P$0Otm)JMV~#W$Q%#O^~q9|j#fI2a*f z553ZS?^BATj3OEC?~jnIBF1>{scsNd&f&a#Jlm{(?i-T zZM^sN2#{T2kTKqS`f=4UWLv{~=f^-6$<%8^9q{~6l&<>%-vVPq>@Y}}Q7%hxK` zsOSiM>BfmMNv)+yMA!HBwU6oy*=5B{In^gE#4AD+w^Lru6=_Kn@Dx8M;)6sB=#RTD z+|9}Jn>_2W`U5#L|Umf3zat*>oc;)yu)5?SoDkZdNkBeer-=J?uuwj}LDz^%IL z5#J8C>Pm>VMEqB|!+s>X9kQ4Gimbm#l-eILOtrx>SVaHIk$_U zxrq!@)!pu+4a>E7Pns5nQMvX}JzxGyhM8B-GGl2WLJ^`kpYd{K7>NR&r!dU1#`8Rh zr+e7#tmXeR!_)sSnVHzz4{{d+DLv>lZ>Z@y^w1q*$Z;yIWAYy{74uo&X1J6irD*}y$Zr% zP3$GPQxU$D%{G(0Fn_V?u0Zw%E(B<;|>JeuVfk7;FLWSVS8PLchyhE5krScF{4LJAEZb;`9GFM@UMg zt+|oZ&64%qi)GD?)~CN(OEQ+tI(>P|vUlV8>ilGOIzuVJe>in|{kU#s7q#OvCDoIY zZTlDF99@4C&k1jXkmzQbjBTjb%Z(@2`EOfvi7w5Mma*q+X@v2p+H1+25*N{SJd=0a z-f795+q10Ek<}*O8MLpQ4%V__r|dqFxidHYb>5!qd>AXE<;3k)tDIq8!{yE~u_u4; zYx$la`Z5A!0g-l8%NLZ(T?sApE%T6^sAODHN-p6o$v#kt8}~UK$6E7SKh8s<8Zh_pJ1i;q& NL1XOVdX2sx{sG|p&kX=+Ot!vhGg3{NbH_p zsf1**>#@`}%BIC83A@C(iK1;YN^SD$(0Z&#lZKV;u>A+0&pDsZ_)-fa1KL31cl*aw z!osUH$&CakR$Y*>z0gbRvnp3>e9(~Vxz=Q+i%Ii#jfs~H8I0Ki5BIkH4YhI$g@uLo z5RGqCaG3Lx&4+@?r9AgFQkiw`q6Hyhw>v5|zjar6digyu3)HD{v#jl0Aji+!iRTTA zSM9BeLfd5ii5$m$Qdd&vAHecKJqxk~lzsbWdluHBHl2^{%k&(y?d~)mdqQ5 z@aNrF5kgpfLHGJu*Ada5MHeFe?Z4N!W&D(j`k}!`9Ti`km{Curh~ucLX`Cn<+XQ9_ z7g|QVmS#8Khxa!;dS>~l9rI8ngxK7~E;Y7IZ0kcSELS<)g5Mtx;Ug$(ahV9MX87^w zc*Qs`Y?Bga6fIc>mGxr?jo%KYKv!&^5=RPM`YaJyY9bYw)w~oLG{E30B{vT93N8#g zNJXOgBrt0>kz)Y&9#f+9S zus7$mf*@pB+0Q+sC4omIMKV>d-j&N_()P?qa^^7i zCn@FAa3M!PD~H(gSK5VSYs9)Z_^;t$0M)CVMT1Z3!#uFbA&G|3h%MG*JMNVKL!(&d z``Er?!kZk!o&z04?MIZ#JPvkL5HRIyJqF|u&+r)Yjf*K`!O5)hF{?uZor3yzzHs66 zOkQEisElmtpfkyuEl;-3sZpcSsj~+rDu9$2aGCda07s2w` z3=C;gp!84+MY)p%8U)u1{ihxYOkC+20tq+xG@)fijCh1~VRNTBMuQxag}A#3EDX_6 z;Enkac{QXSh=Mn=B|lIW5#kfm>^HwxQ`XDb3I!}>Na4}HU8B7eFwDSyA}2J($q+va zY6rBqx@8aLLq<}&Vp#Xw7j;up1dI^*h_;r}pvPR1)rs{+nWm}t+~Z;^C&CskDU5Gy TN;S>d+Rl2yBMGEB>g4|eRJZ;y diff --git a/obsolete/fonts/xerox/Times12-C0.wd.Z b/obsolete/fonts/xerox/Times12-C0.wd.Z deleted file mode 100644 index 515b499fb7fa6a63c25a88454ecfb6c54f023896..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1393 zcmWNQi&so}9KgT7-`u8KGjwNaH6^(-lT=+Ot!vhGg3{NbH_p zsf1**>#@`}%BIC83A@C(iK1;YN^SD$(0Z&#lZKV;u>A+0&pDsZ_)-fa1KL31cl*aw z!osUH$&CakR$Y*>z0gbRvnp3>e9(~Vxz=Q+i%Ii#jfs~H8I0Ki5BIkH4YhI$g@uLo z5RGqCaG3Lx&4+@?r9AgFQkiw`q6Hyhw>v5|zjar6digyu3)HD{v#jl0Aji+!iRTTA zSM9BeLfd5ii5$m$Qdd&vAHecKJqxk~lzsbWdluHBHl2^{%k&(y?d~)mdqQ5 z@aNrF5kgpfLHGJu*Ada5MHeFe?Z4N!W&D(j`k}!`9Ti`km{Curh~ucLX`Cn<+XQ9_ z7g|QVmS#8Khxa!;dS>~l9rI8ngxK7~E;Y7IZ0kcSELS<)g5Mtx;Ug$(ahV9MX87^w zc*Qs`Y?Bga6fIc>mGxr?jo%KYKv!&^5=RPM`YaJyY9bYw)w~oLG{E30B{vT93N8#g zNJXOgBrt0>kz)Y&9#f+9S zus7$mf*@pB+0Q+sC4omIMKV>d-j&N_()P?qa^^7i zCn@FAa3M!PD~H(gSK5VSYs9)Z_^;t$0M)CVMT1Z3!#uFbA&G|3h%MG*JMNVKL!(&d z``Er?!kZk!o&z04?MIZ#JPvkL5HRIyJqF|u&+r)Yjf*K`!O5)hF{?uZor3yzzHs66 zOkQEisElmtpfkyuEl;-3sZpcSsj~+rDu9$2aGCda07s2w` z3=C;gp!84+MY)p%8U)u1{ihxYOkC+20tq+xG@)fijCh1~VRNTBMuQxag}A#3EDX_6 z;Enkac{QXSh=Mn=B|lIW5#kfm>^HwxQ`XDb3I!}>Na4}HU8B7eFwDSyA}2J($q+va zY6rBqx@8aLLq<}&Vp#Xw7j;up1dI^*h_;r}pvPR1)rs{+nWm}t+~Z;^C&CskDU5Gy TN;S>d+Rl2yBMGEB>g4|eRJZ;y diff --git a/obsolete/fonts/xerox/Times14-C0.wd.Z b/obsolete/fonts/xerox/Times14-C0.wd.Z deleted file mode 100644 index 515b499fb7fa6a63c25a88454ecfb6c54f023896..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1393 zcmWNQi&so}9KgT7-`u8KGjwNaH6^(-lT=+Ot!vhGg3{NbH_p zsf1**>#@`}%BIC83A@C(iK1;YN^SD$(0Z&#lZKV;u>A+0&pDsZ_)-fa1KL31cl*aw z!osUH$&CakR$Y*>z0gbRvnp3>e9(~Vxz=Q+i%Ii#jfs~H8I0Ki5BIkH4YhI$g@uLo z5RGqCaG3Lx&4+@?r9AgFQkiw`q6Hyhw>v5|zjar6digyu3)HD{v#jl0Aji+!iRTTA zSM9BeLfd5ii5$m$Qdd&vAHecKJqxk~lzsbWdluHBHl2^{%k&(y?d~)mdqQ5 z@aNrF5kgpfLHGJu*Ada5MHeFe?Z4N!W&D(j`k}!`9Ti`km{Curh~ucLX`Cn<+XQ9_ z7g|QVmS#8Khxa!;dS>~l9rI8ngxK7~E;Y7IZ0kcSELS<)g5Mtx;Ug$(ahV9MX87^w zc*Qs`Y?Bga6fIc>mGxr?jo%KYKv!&^5=RPM`YaJyY9bYw)w~oLG{E30B{vT93N8#g zNJXOgBrt0>kz)Y&9#f+9S zus7$mf*@pB+0Q+sC4omIMKV>d-j&N_()P?qa^^7i zCn@FAa3M!PD~H(gSK5VSYs9)Z_^;t$0M)CVMT1Z3!#uFbA&G|3h%MG*JMNVKL!(&d z``Er?!kZk!o&z04?MIZ#JPvkL5HRIyJqF|u&+r)Yjf*K`!O5)hF{?uZor3yzzHs66 zOkQEisElmtpfkyuEl;-3sZpcSsj~+rDu9$2aGCda07s2w` z3=C;gp!84+MY)p%8U)u1{ihxYOkC+20tq+xG@)fijCh1~VRNTBMuQxag}A#3EDX_6 z;Enkac{QXSh=Mn=B|lIW5#kfm>^HwxQ`XDb3I!}>Na4}HU8B7eFwDSyA}2J($q+va zY6rBqx@8aLLq<}&Vp#Xw7j;up1dI^*h_;r}pvPR1)rs{+nWm}t+~Z;^C&CskDU5Gy TN;S>d+Rl2yBMGEB>g4|eRJZ;y diff --git a/obsolete/fonts/xerox/Times18-C0.wd.Z b/obsolete/fonts/xerox/Times18-C0.wd.Z deleted file mode 100644 index 515b499fb7fa6a63c25a88454ecfb6c54f023896..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1393 zcmWNQi&so}9KgT7-`u8KGjwNaH6^(-lT=+Ot!vhGg3{NbH_p zsf1**>#@`}%BIC83A@C(iK1;YN^SD$(0Z&#lZKV;u>A+0&pDsZ_)-fa1KL31cl*aw z!osUH$&CakR$Y*>z0gbRvnp3>e9(~Vxz=Q+i%Ii#jfs~H8I0Ki5BIkH4YhI$g@uLo z5RGqCaG3Lx&4+@?r9AgFQkiw`q6Hyhw>v5|zjar6digyu3)HD{v#jl0Aji+!iRTTA zSM9BeLfd5ii5$m$Qdd&vAHecKJqxk~lzsbWdluHBHl2^{%k&(y?d~)mdqQ5 z@aNrF5kgpfLHGJu*Ada5MHeFe?Z4N!W&D(j`k}!`9Ti`km{Curh~ucLX`Cn<+XQ9_ z7g|QVmS#8Khxa!;dS>~l9rI8ngxK7~E;Y7IZ0kcSELS<)g5Mtx;Ug$(ahV9MX87^w zc*Qs`Y?Bga6fIc>mGxr?jo%KYKv!&^5=RPM`YaJyY9bYw)w~oLG{E30B{vT93N8#g zNJXOgBrt0>kz)Y&9#f+9S zus7$mf*@pB+0Q+sC4omIMKV>d-j&N_()P?qa^^7i zCn@FAa3M!PD~H(gSK5VSYs9)Z_^;t$0M)CVMT1Z3!#uFbA&G|3h%MG*JMNVKL!(&d z``Er?!kZk!o&z04?MIZ#JPvkL5HRIyJqF|u&+r)Yjf*K`!O5)hF{?uZor3yzzHs66 zOkQEisElmtpfkyuEl;-3sZpcSsj~+rDu9$2aGCda07s2w` z3=C;gp!84+MY)p%8U)u1{ihxYOkC+20tq+xG@)fijCh1~VRNTBMuQxag}A#3EDX_6 z;Enkac{QXSh=Mn=B|lIW5#kfm>^HwxQ`XDb3I!}>Na4}HU8B7eFwDSyA}2J($q+va zY6rBqx@8aLLq<}&Vp#Xw7j;up1dI^*h_;r}pvPR1)rs{+nWm}t+~Z;^C&CskDU5Gy TN;S>d+Rl2yBMGEB>g4|eRJZ;y diff --git a/obsolete/fonts/xerox/Times24-C0.wd.Z b/obsolete/fonts/xerox/Times24-C0.wd.Z deleted file mode 100644 index 515b499fb7fa6a63c25a88454ecfb6c54f023896..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1393 zcmWNQi&so}9KgT7-`u8KGjwNaH6^(-lT=+Ot!vhGg3{NbH_p zsf1**>#@`}%BIC83A@C(iK1;YN^SD$(0Z&#lZKV;u>A+0&pDsZ_)-fa1KL31cl*aw z!osUH$&CakR$Y*>z0gbRvnp3>e9(~Vxz=Q+i%Ii#jfs~H8I0Ki5BIkH4YhI$g@uLo z5RGqCaG3Lx&4+@?r9AgFQkiw`q6Hyhw>v5|zjar6digyu3)HD{v#jl0Aji+!iRTTA zSM9BeLfd5ii5$m$Qdd&vAHecKJqxk~lzsbWdluHBHl2^{%k&(y?d~)mdqQ5 z@aNrF5kgpfLHGJu*Ada5MHeFe?Z4N!W&D(j`k}!`9Ti`km{Curh~ucLX`Cn<+XQ9_ z7g|QVmS#8Khxa!;dS>~l9rI8ngxK7~E;Y7IZ0kcSELS<)g5Mtx;Ug$(ahV9MX87^w zc*Qs`Y?Bga6fIc>mGxr?jo%KYKv!&^5=RPM`YaJyY9bYw)w~oLG{E30B{vT93N8#g zNJXOgBrt0>kz)Y&9#f+9S zus7$mf*@pB+0Q+sC4omIMKV>d-j&N_()P?qa^^7i zCn@FAa3M!PD~H(gSK5VSYs9)Z_^;t$0M)CVMT1Z3!#uFbA&G|3h%MG*JMNVKL!(&d z``Er?!kZk!o&z04?MIZ#JPvkL5HRIyJqF|u&+r)Yjf*K`!O5)hF{?uZor3yzzHs66 zOkQEisElmtpfkyuEl;-3sZpcSsj~+rDu9$2aGCda07s2w` z3=C;gp!84+MY)p%8U)u1{ihxYOkC+20tq+xG@)fijCh1~VRNTBMuQxag}A#3EDX_6 z;Enkac{QXSh=Mn=B|lIW5#kfm>^HwxQ`XDb3I!}>Na4}HU8B7eFwDSyA}2J($q+va zY6rBqx@8aLLq<}&Vp#Xw7j;up1dI^*h_;r}pvPR1)rs{+nWm}t+~Z;^C&CskDU5Gy TN;S>d+Rl2yBMGEB>g4|eRJZ;y diff --git a/obsolete/fonts/xerox/Times36-C0.wd.Z b/obsolete/fonts/xerox/Times36-C0.wd.Z deleted file mode 100644 index 515b499fb7fa6a63c25a88454ecfb6c54f023896..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1393 zcmWNQi&so}9KgT7-`u8KGjwNaH6^(-lT=+Ot!vhGg3{NbH_p zsf1**>#@`}%BIC83A@C(iK1;YN^SD$(0Z&#lZKV;u>A+0&pDsZ_)-fa1KL31cl*aw z!osUH$&CakR$Y*>z0gbRvnp3>e9(~Vxz=Q+i%Ii#jfs~H8I0Ki5BIkH4YhI$g@uLo z5RGqCaG3Lx&4+@?r9AgFQkiw`q6Hyhw>v5|zjar6digyu3)HD{v#jl0Aji+!iRTTA zSM9BeLfd5ii5$m$Qdd&vAHecKJqxk~lzsbWdluHBHl2^{%k&(y?d~)mdqQ5 z@aNrF5kgpfLHGJu*Ada5MHeFe?Z4N!W&D(j`k}!`9Ti`km{Curh~ucLX`Cn<+XQ9_ z7g|QVmS#8Khxa!;dS>~l9rI8ngxK7~E;Y7IZ0kcSELS<)g5Mtx;Ug$(ahV9MX87^w zc*Qs`Y?Bga6fIc>mGxr?jo%KYKv!&^5=RPM`YaJyY9bYw)w~oLG{E30B{vT93N8#g zNJXOgBrt0>kz)Y&9#f+9S zus7$mf*@pB+0Q+sC4omIMKV>d-j&N_()P?qa^^7i zCn@FAa3M!PD~H(gSK5VSYs9)Z_^;t$0M)CVMT1Z3!#uFbA&G|3h%MG*JMNVKL!(&d z``Er?!kZk!o&z04?MIZ#JPvkL5HRIyJqF|u&+r)Yjf*K`!O5)hF{?uZor3yzzHs66 zOkQEisElmtpfkyuEl;-3sZpcSsj~+rDu9$2aGCda07s2w` z3=C;gp!84+MY)p%8U)u1{ihxYOkC+20tq+xG@)fijCh1~VRNTBMuQxag}A#3EDX_6 z;Enkac{QXSh=Mn=B|lIW5#kfm>^HwxQ`XDb3I!}>Na4}HU8B7eFwDSyA}2J($q+va zY6rBqx@8aLLq<}&Vp#Xw7j;up1dI^*h_;r}pvPR1)rs{+nWm}t+~Z;^C&CskDU5Gy TN;S>d+Rl2yBMGEB>g4|eRJZ;y diff --git a/obsolete/fonts/xerox/Times8-C0.wd.Z b/obsolete/fonts/xerox/Times8-C0.wd.Z deleted file mode 100644 index 515b499fb7fa6a63c25a88454ecfb6c54f023896..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1393 zcmWNQi&so}9KgT7-`u8KGjwNaH6^(-lT=+Ot!vhGg3{NbH_p zsf1**>#@`}%BIC83A@C(iK1;YN^SD$(0Z&#lZKV;u>A+0&pDsZ_)-fa1KL31cl*aw z!osUH$&CakR$Y*>z0gbRvnp3>e9(~Vxz=Q+i%Ii#jfs~H8I0Ki5BIkH4YhI$g@uLo z5RGqCaG3Lx&4+@?r9AgFQkiw`q6Hyhw>v5|zjar6digyu3)HD{v#jl0Aji+!iRTTA zSM9BeLfd5ii5$m$Qdd&vAHecKJqxk~lzsbWdluHBHl2^{%k&(y?d~)mdqQ5 z@aNrF5kgpfLHGJu*Ada5MHeFe?Z4N!W&D(j`k}!`9Ti`km{Curh~ucLX`Cn<+XQ9_ z7g|QVmS#8Khxa!;dS>~l9rI8ngxK7~E;Y7IZ0kcSELS<)g5Mtx;Ug$(ahV9MX87^w zc*Qs`Y?Bga6fIc>mGxr?jo%KYKv!&^5=RPM`YaJyY9bYw)w~oLG{E30B{vT93N8#g zNJXOgBrt0>kz)Y&9#f+9S zus7$mf*@pB+0Q+sC4omIMKV>d-j&N_()P?qa^^7i zCn@FAa3M!PD~H(gSK5VSYs9)Z_^;t$0M)CVMT1Z3!#uFbA&G|3h%MG*JMNVKL!(&d z``Er?!kZk!o&z04?MIZ#JPvkL5HRIyJqF|u&+r)Yjf*K`!O5)hF{?uZor3yzzHs66 zOkQEisElmtpfkyuEl;-3sZpcSsj~+rDu9$2aGCda07s2w` z3=C;gp!84+MY)p%8U)u1{ihxYOkC+20tq+xG@)fijCh1~VRNTBMuQxag}A#3EDX_6 z;Enkac{QXSh=Mn=B|lIW5#kfm>^HwxQ`XDb3I!}>Na4}HU8B7eFwDSyA}2J($q+va zY6rBqx@8aLLq<}&Vp#Xw7j;up1dI^*h_;r}pvPR1)rs{+nWm}t+~Z;^C&CskDU5Gy TN;S>d+Rl2yBMGEB>g4|eRJZ;y diff --git a/obsolete/fonts/xerox/Xerox.XC1-1-1.FlemishScriptII b/obsolete/fonts/xerox/Xerox.XC1-1-1.FlemishScriptII deleted file mode 100644 index 3d9f8c79f5a24238fc11bdf235898ff0bc926ba4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 769104 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

    ti65HeD& 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

    RWE|FfgkVR~ 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%0D!?_ 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 O)jqLj%AL`fT?+zSw|vw9 diff --git a/obsolete/fonts/xerox/Xerox.XC1-1-1.ITCGaramond.Italic.Z b/obsolete/fonts/xerox/Xerox.XC1-1-1.ITCGaramond.Italic.Z deleted file mode 100644 index 42d6fb4f249089a5ed2ebffe6737e467c2ce301a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200161 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%0ANA@Ai9$#iKIpiXv;N4ZDibA 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

    prM+&yF~8OamyIyW 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'l3(bdY|L=hoKk=mmZs>kU;kTcM0K4+jS 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�YErg_!5lmFI@QYnwf#+(+)ZOo;_J(W%4EWqFHKx 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

    %Ea&YOMdpAg-@ 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≫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 diff --git a/obsolete/fonts/xerox/Xerox.XC1-1-1.ITCGaramond.Z b/obsolete/fonts/xerox/Xerox.XC1-1-1.ITCGaramond.Z deleted file mode 100644 index 5815198fb2149633964a2525d05bfda79dc32e52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173151 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

    Zd8%BPTj%Dp6>C1Fv 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 |gzqRIYh{ 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 z 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 diff --git a/obsolete/fonts/xerox/Xerox.XC1-1-1.Optima.Bold.Italic.Z b/obsolete/fonts/xerox/Xerox.XC1-1-1.Optima.Bold.Italic.Z deleted file mode 100644 index 99d8b1da2ae96d8962fdb44abd3ccf94dd5bce4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163888 zcmWKWXHb(%6oxki5+IP!JA^7AO6XMxMVge*1QZ3N2#69Xib(lF=)Fp_genLs3Mg2v zp-B}(6|AACfT$6vO1aMLpPk*=+1Z)%?m6#sq;KTmL;%`{$swR(Q;vkun=89h2tr5^ zaK;-V@SxUww_xSnY5coe9gAd(!W0D&MIU%L;7E`c&&lg1bsj1{ej-JQx3Dr(fctR+ zvbx2~5vZXF*IAae<=2e2Bm^~5XF&i4p%koqrpHO{h?v-*ZEdZpr+2FMv%JY;Lm4o% zzE)MXZ@QYa0uN5~jZB3EHwEr7vl{RzCA5d&1=w#p+zc20$a_t&pHY=6`h}OyNaVXs zsvfdx_;??XTpW`ykqYN&FAp3X{BDtBv97C%9VDbK< z2*hR2t@X*rB3~FvS6l4PLy?$uxvZmkfWOiW6R*IiK|#zBQg<3+#q|sE5uqy&q-R;3(GO$K zJI01-qkZ&oe9&ig^UHgB9&9j}&Hv^~bYbx!D<1Okn?FcnjB-Rr6w?@Cq+V+{K(Of7 zKJjNX*c?6#vo%jm(;q!{d&I_y0_>RR3d3Gb2&7Jgmm@Ac^31shSFI8P7U*k4n(nIU zisnjv&q8ifHZfG^#_-aynzOt^uY|ZS&dML1N!L4|s|zEV-oPy>@PRKs#Bu{L7nygC z?a?zsjOKVQVeTpS9;6$~X%!vHJi27~)tFA0poc;!bp(Kr$0xfbsGRuTgCO9f%ukRH za`j>K#`BQ#$C30S+))^Zvv-P~gb&FnjWJN0|7o?j$<xagivw*h>v$DQw3OlA&S=g|E~zvx*PPZPUQHe!O>xt4Id{uF`ID0t z(BgKzmJlSEVwnPNrFXJ!w5wH*T zcleEfB%tk?qgt^Lkp!k4%Fr)pdylGLm+;P{w;-Ux?@=L9+gt&KDN* zfNFEX?n$r%nu!XQQCTr{f9OgAtX6&z~`^` zc=T=`B1QSfdIPbp3auxj@#Obah)+tUyn`1hnhS-}7wgUUXNFQUD`iejC-(o9p{Ed% zq+uwM`6JS=IHU)@dG$72_u()SSP!s&d`wKKe|7rmL0QSRG)=q1jMKb56%yinrdI=& zayR^rA;Y%w^fi(WZ6jbi8o?$WaN@P+&nkqD)eow^%`C%gr<&~fUPsrEi(34x_g30o z$R5T8Y#$piw-vQL#Hm>U=w;7|OSXSGG!q-HJDY3Jj$SgBFI44MRC-Wm=Mv(Sjqsi4 z|LRWPY17Ey8us3s3ocH%&IekboHZu~tHtDKdcWN{V4BcyG_#xq@nzw)T2^yc*#sHhvx!iCFY38il5^@a}Gyc(Qpc_Ij=TqOtFgG`Ek1>X@|@I5+aaYG+OU%y6o{ZTI?I<+(ItbM8rT zhBS2F2iuPYtiU4P^}5|Jg9kb@t{wV{0f!$JWHyzC;@=UO*Kw+l+;BQJ;!FvsQ-Bt~ zb4niftUT7#g=oZesxYgjS?ny1MnbpBQ91f8G?{Pu?X1?I3}oeVP67zfqZ=xN`>_cdY0~AA&p3lyTARuA3FaRf$S$C8q_)*fSw&3gI zP7gDMqb`6eB(aW}tq|Q=pMFG0GpRQZ3%Hn4gZaBAnHog4CwrfS&Wu30n#9i-vH%eC z`Fz9V!dJmCdY^dSJ@!)bkpChfOwI9&C}0*c6hY_FRT@Dx|Aifl0q=G6vbBzWYno1? zx4h11Zy8IJ!6{j}35&yGj?y?va;}y(swniBRo!W`R5b`xIU?NS1&5aashUmn7MuuY z8SfmdaWCnvXgmI+0{DbX-sf<_oRN7m7b*W+?d&6bHKg#9+aw4xt=tu=5rVW;lGHm+8R({ z%XtUAV3@P$X3<0^ur-g`2Ys9SFs!izF;$N+H<3VCN6@Qfn0SEL>%{&Uf5Evpe`a?x zHv!pP>x*%c1AvFcAnX8?wpskoP1F`i?(1f}9g?!vhl^nSlV~UbVD|uO6JQrmC>9-J z0T`;8GK!=mkU{_fD})B*JPH6&G@JQnlA&`~;FmBT*N*c-q#eM*VJW+oXby*C< zApAsy9@&D?S%5_b_Wf8GDWp~>8YW|Af=h$dCIWX8#}bEi{o^WRjhlIcd(+K3ht9(IiheCgQY&-;X|YCn6wEJ3 zQ6L-11ZaTN11KYal>j_vqA^)M2|FPF%yb@CSsrRB0TAN=E>~hHpEZq>RxZF)az4Rn zt{18)4_J)#;P6WY@*IU2^#V=N0&R|y9U|0|{nVwk%uc7K8_^Ae!9z9H56Je zCECsu*=!ftaTFi30Vq0|eof7zqY#q{xae6UTZqx1T*PRc34pp5sk;1W2xe9+1o(+2 z!DjLM9wC!KCQ%&db&?64o-w%S2dSx zZkI&Puf|1dk-IJCyMB}+iv$EfuWMqeZ0u{dsi>Y36Qyi3k@#RZMLi7&F>-$P=X+Tj z?@}x1H0e8N^pD3G^u-ME0o2b_L@XitB}eGX8S2ZW%xF3)Cmp+kyAjWVGOXj-2}yQH z=tvq6WSB^d;@aw^qpj6Ltkvm0Nlcc;kH<-=0DBCLjt1Dubi@`JKoD$?#Yy)mE%iwI z17S@F_V5!4EEa4lkAea`sRLA?Wb!dR*;75rRR5ZMvEWx$B#gjgW(@%xhDnIt1w5~W z;(6umgFQ^$c*3@RdPdZ!l+)jnY#C*HBzyR79Q{lNN9F z2h9=%oeJ$+$yp=VEX`s_4-^Sl5RA!3KC{*S6QPwxMJ7=9&g6+35NN0(#q~Y>xv=3CZ@hjmP@XC^NKx zGDS`+m`6?EYI~uauSwl1HBbNc!q>bdu^VazU<*Rg6Hy63wJL}_E>=}pXHMWOQ#Z)o z---;$0Ml=9Uej@w%W-_ms)k93A0dJPoCzg1In4vfZHt-rMe|%9UxNWmZ)yEbUSo7# zqdc0DZjd83kj(ZD$6g`$lm77dMGW9-5s+&^5zxiKE#el9`r;`D;-){pwg5&b^+2oX z(|pTgt*;)L-*qWUOo!~b5?RbvC$2Wh z*k`=#wEmoABqDjO4(E|_|4%js*s`&%NQ@>%FP6i!I}i+Pidf#yRHwN5WNB7p@N}{p z8W@uRjR3g25$N)IBLdCf;Qfu?@kt!l{>#Lk(Tiq5C?5|wyme#G-}o^xYR}(ihx^Ga zM(C@9=?Lp*()3D9DvF81Q2U-jB)RD3+cILUsO3s7j+CE$u%E*0l&yG!bFHnJkM9o^ zHV*Ml5^su66dYIY812adH27#55W_#<=56@!wWBfmfk1VlM!+PV_En#4xs225ubno*Bhp^l>S_F{-cd{^!jp4{}#rI02R z$YL@~@aUedZ;AUXw%KE4YSY+1dCB@k$=k$uv~4ox?H$nm1nr~7WoPp9a(pd&^;i&v zxk>dMrX}Ly>6bF7U*lPsSlnWbrf8ZG=%Y;Mt!wn*`eE>X*u?F=!`oqcOk)X~hs^_7 zcnC;=oc!eujg@k((C&pz9(}KDRzt5^M1~pq7EC0KOdG&?P!C(jk(=XK`wc;f-i2L{sw;$MwpG!!?bdDxl#rKj70J0<`Q|S($AZ(C}kK5JTzQ*N+}a;=3qzT;GZPy)m2B-#{0kQ zlrBCSf<5p35erUml2ejz!Dev8@8huT$o~d#o7<853>8&nS55no91K?XITYT|D*>Yz z#2iO6Bh@hDvnvy-+t|+%T{<^L3hdOw%N#toD`31ZU<6@#8!#8cxkqWYzTud{4cmWc z$_-_xiSoTay~85YuhH~-Z#BXW*`XOQwO1DE+*4ZiQwzG2FJfLljm@yEsm$+W=+Rr6HSYw)<_;hoCn?YBSByxcGt8V`FkoXoXT_rz{;pD{GGIMiu3 ze1#jetQ(DGK-Ttg=;qhlzIEIbpg_z)V@B+>qH>m~lr5NwwaI8u2XFfeDZ6;z6^gd~ zROC$J#}BCj)X99?2fz5U%|ix%3QH?UB>KjcGjWqn=Pv|*Peij|!=-de|BIz(uEk|j zAHR_ab? z1%v%OBY{Qax;w?Q#qbbGsv4AyZS6nf^69FH0Z~q7`31-JPmy9OJt` znRO}$m${l>z83VxmYkQ8yjk`s9bkj<0ODU|; z9edOoJ^J%aX7lv z2vAp_m=D}ii^dI0dQw*PSLhI8^~AHz3+dSd*l2+IdUkh>%EhsDFU(+dMK>D#r1x6d zZv<~c{$RdT9T@{)Vc$3T_MDj3UEIGgl;;&B9*pzClD`p5gw!)SHpDrnbW1QF*$)Iq zEKuveE_?9l zh1<=cmjjY+n*&$+P&O447RL(-2_M58|5jp7^{Efq-V4i`Mx0Mq21Wx zQsn&vtun81&)=wy<=yLA)$1A}BSTE?Tey3_QpB9tvW1WgC)ZqM-sYAfhiMB4HMg zX9;!D@kr6JKR+R+uJW0gIv%MlT>?Io4oPa^E;80>=h!(An6|dd(>@HLas(Y>?gCE5 z^dB%2pMX6eS6=0ai#G-+K$arPBvP=%S4;@2lx_?me7K!1quE{SM=#_oov=6ejf@YP z1Wd0RsVN?8VN;V5@7x=sHorq8<>5C45-zoWklV5VL*@E{5Mvkl=dXnsD$o>O7O32E zvrB4M#cN}b3=sIiaX5A>Z^x@@w61rxSJ^g04E>!fBSC{1GR-0T(|7M(tZte5YUKW( z*{Ordk-l9cM{BE`WKLXF2>RZ6xKjz7C?WZ|p8l2OtIs7bkUZx+Abgfs?o(+N`98yy zGx5|R<%fj)v#dyhZ#Qs5SeqS@Ow-*8$Gz>aOTU;u^JHAh-nl?vK-iKO>not$i@TQ! zh(Mk`xGt9k7rK9@-qbWU&HuxVi^vBz9sH(~OoCKS_kK(h{N#$i6E_;H0J8DX92+BhG)Xt4?~cfv(EFMe&Tc0IF@xJm4Nq=_%jXXN(hcmLtRt&} z$;Qi0KfHHU&McO%QO<>1|4j8`v#y>b7*#fm+B}0zBfHLRAUJ)+dops;k8~)?@nt*k zz>Z~W98#*2uiO&bbpKD!a=70@I`>>+t$WSj5YE3KfL>>_rf>#>y#`}92)n9?>&9m2*zpKtqXgr7$8dS3ua4I~V zff`>-O}_P#lp)s54iQD@TC42)EmXeGU*~dt32up|={iGc?|2$`4?L6^F8e}9zh1Z> zW8h727vfv*=6(Mu;@k1t4;XQVTY6HO(v}x3{RbBHo1XSktE8GvoXg=uDPNC(b6q<6 z;MujI2Tyx*>q-R2ZVt_d1r&G$4!!@H+yoyx7%wqv+BxuXGp7LM*b|ugdh>hU0xUEn z32PmUrAtXd=RLkkxLk4#dG<>jUv>NU1F@HUF(#{rPV5=KRey)8o;8oYw z+grg189somPXr{kQem4j7ly54@@txx{<32cc*QBDCP6;rLvvTkJ6E=PWiNt-~%tB)RT<(d(dj z6p%`}n6q{3vX)Y-W6)}3(Sp5xmh@6$YUTR?Lawrjp_zA0mcL;M@=~ z0guzdY*b52dGX}uV1e>On=N+v?9uROAmsz>T;l_sl*-3SKkehelst#26Z-;o3mCIta!!v#;BRX)Sf=7})fZjk zMF5;05i_PShH&AMV1g>VH7^c-%JRSd!RXum+Rztaxl?9OtPRY@MC5J0x*OHQCjmNX zgw>tc^;%JZSgchbW@ja4tGuKnSj%Z8shxBQiPf<7JA)oimuaVby22yClt3dL&q^dw zZ&zzND$&QiA0uD{s6>9Wx&NCyRf9_eNxjX_b4{6lruOlw{Qwb5%Dj|!nNP6`dBv?y zQdaQe>*r1W_rJl6;IHHf%Iua6q{)1%@^Q%3p?7I~8{Gd^aY2To&HS{2OIID|0k{M% zw%KvBL50Oe)(l?NEb7bpr*VZgfX;<F465y7_fTO zpwsR1Hn!r9&y-$L^n#WzpVg6uzXAYq&5zOJ4Y9AXJ>GC3K;g5+P^@>4VZDx@s`ew)lYxa?`)Sej>iv1z~3*sfaV9C}S9Uf^z+ zK<>n-P6SA7mC=JI`+My9EAODLLnx3Kv&cgx{=Osa!8bRNd#u%*6MIcnn}^BeB|9tz zqUo}W#+W{?_inGvoHv(MV7yW5GNCPSjszdN&Owu3XlWMZ{7deQ)b4-;v8oh(U=c>8S#(e(2xx~16X?EWRr~_v$1ve^ z#BQM;%eLh7Zj5^F!h+TjA5u|dsBQ6-{kIFz7kKD|^5^WIaZ%QO3>keT(iglB6YB%? zn#~;ZOkW{l0lVTE#Ng>Iz|LwlJ&s7FWhx}9>AdWk7X6Fh1uz>uIz5gBQ(eU>b>HVZ z6m<9L(Z0L=2j;#QeDMBRWYT%hA^@K*4C;y6UF|$K31s$goDl&*MPXcL1Q)REuO*o5 z+H(d12ig@KO`w8gij@!$@%&j6_}t&i_93_VO`Vzi%bL|qx*|qrnP35b^W8NC5q9XMzyZTJF?%y04)@rRK!WF zYKr=IUnDxsMR1UqkF~SW_}HcyCraiIEUYhG!p#>CKa-YA49pQUp}YvHJJ;Z;Gu}3x zC3jvkrw4?*`)lYkgTnd<#NQEJeb3L2zQPpCN{%I>ROi+T}F> zM(Tg_Q9@{wsQ5m-HxseFW}*kS<>Q2H?_1n4tQXdv@a8&2`^JUS>ADn8#$#6>r>i(~ z6rz?TB+azD&WTOF?o>)(zS$|(7{2gVDALXK7m{u}RlVjAjKkjTeBJvlwu0wMTUU0e z;A8H@_wwc8)sBt_{Fkb@QxH1S>`OVb)+5d6OF?c&c_u5GD3~l z--hTkJap8lzL(lEeH`-3)Dj;b=OwB6ZQHbRwBEM0H&$Zbmc@d^sR!`SsXx9;Zvy~_ zj35hhDTNuA|Gt!*uQ8XWUH5)2M;i~vON`#Mesf1s+9($s@VonNLpREZ)E#X+r|xye z^|#*o*nG7tbwXX`v=xr;@OW9QYWvz~kEH1fy}#`5V={=^a~zhYdQ6UP8No=?Sq3WB zT*?*A>zmgTT+9mCLd2(I&w$@zbW-zvK{tmH#E>!MEMH-S3wB&^?Ij|QG|*-TWR%)R z*m8pWEx#LU@fnR;cW()Mp3Gl83i?r7vS?S4qx`WIwdyzPC~PPWO=a_UqXRQrRV z>m?23V-&5l_2N{nb3ih}a_1KEP8K9cRzhdHOlWl}FbTp#Lr*FayN#+F>p z`3Acwym*zpHU-g6a`EG{=YFoKeX;~Gp{lJ3Cd|YN^yrH`;QG(sSt^roPZis{(kmo8 z#T4kDeUvM8@Ad59xoPSB>LYx4i3kUz6FXvQrMvBpu)CZin6cjP7hb9xUmme ziSnvanH?q6-UEMCT|@cgi>eC{-MlsMQevep%l8y#*cL#OABg>`gvx;{mbd+7C3cEtJ==*L?#fII+C4N~ri&+_ahB zOBeh$4Gt!~zs`7Q?Mim$(*Ul)wAyFJAou8x84LbH+-`I&mhb<$!$VLO#Z4 zIr|?nJOmQ*7K(=pPCh&qKS0n|99mFsIW3lGtfPtp>k_5shJ}Rac6$RFWwQH&dzCsh z@+9LyYklQ|pKFJUDjvE7YG_}{ZpNt0oxJ(b?Y}_}{e$N|-yJS~`p|uE&_`c2^Ya6{ zYeV6Y>4Pu@V~l8PsKtav1_#JHgU3^w=;210fE80~0g||3dFyu7fG_~}Sz5{He{e8} ze!W!x@D&FUc#A~ASBq@;;RrJ+npB3LG|_*4eALU) zrX~3BtAC`%qiJlo+_B}{g;&kn+E2esgcd~>ym|KOk-qNymk&)95t^`m`M+QHNU#Q5 zx9{#QY>j5Yjb_ljnCrLh)bKSTEwZOZ4LPkYrbsD(W9A2D5iNgUj5{Za8-H%dv@6U_ zE4FlTPk0i1>w2lTHzsVS{pLE(zPiJGOpNUX-E=k0d#gvi8NJrV(M~&t zJ}rTi-i1N?|!@QJJ^- zNkJ&SWSIRT$I(jVweF@oXu`~Ekv8!kK`Vvtvnb!`kVRt{Rc9?_jv>(nq853IO^!@t zZ!rvF(95r$et1@Kpypd%;RxO=#^$F?z74&-K$oW{xGt^4tf3xKz{*xr6{M&?5G#XNzpUHbEm9h0nhO53tZT# zmK%YUxO|5LAwD=1y^}u)u|wOT!+7XG5%T&Sr<6Mf!(%g2=gb>ruig@i{Cu!9HMU3w zJON4epWw}VIuP^BcA|;>Z?_kO?|*!xLmMQFBG|D$kTVC?h<=@e{U*(ooodBu{MOh7 zyFrEcBcCLYF-8D~PD&HR`aCdU!uIHG+yAnfYTx71q`T^z^EbLe>d;$9u2N*|6t}Ny z;#y_i<4(lkeaG%TIw~IQuB+?)Tq1Ej96v=tzZ*k;B=8hyOA*e$D#u=z=~-s~(^w?Q0QH_}Bt{=Xi&oTZIZXCT`hQzVW$y7^9`J~c;v=7Axl5S3Q zUJX3g&+5i*mYA%}=%wNLdZ=mcYW|L@Z?!8t=2l)zwO-z^OngiHyM(c*v~RsNGWxP< z_?LQi@2ZQ?q}Yibr6K*V=Rx^-Y}>}zrSO2QbMyFHhaORNzAL@Ec>!)SFgY!9%1=PY zqUG1IDo!?Y+nt+l@fxz?{b&5ly4&3|%`4yMKW*6NpEEzDqFejxz~7pS-WLQ2g>kOP zU6fqkY4U|aNk21pZW!m?rw=U(rk@i<(qk$=ECfVFd}%Rq>%YB&*LeQa7ale!`^?Fa zbxkTT@G`dKb)o|~<%jW5Ec+u>oG)CUN>_bbb@FPd-B0T?&mZe9DIN~Ay!w3YS zG*J0Vxj66{UJ!AQZkipV&x}TTnUZVx;I_JfzZB(CGn&dqZurTzyKrboT|e|Y|7&-r zX|(GM6DBbZ32w<8zck_t6FOhpNGDIUbbYc~P190-AKxyPN;@`@*+^0GG%MX!eP{t^*avMspXImc z0p;^-^7;r5UJOwfN}ELVivxBaz_xPeWm_seJGM$JDT@5ddb#+bS}rdrPJp6b;&i378a4p8f%L&3lr7aZTu9O zW*m0eU%F}H+rn|0H|Am^H{ktIIh-CUwQx7{r#Db@Z#iP%j{o|?Q4QD@|x)C=%;;WZfG!4yH zZ~yPPWna9GL*t3;pIUPNZs~45KTTvbn?^~SjX!JETi42PJjo9GCI%31dVWW&>#&9W z9#aJ93od6%k4F1lip}?QZfVmKdsC->DpS+!{_C-}S1;e>+^^dBNIh>D-fY9~zn^!Fb!RZ2TW)OK2arBF5vudJ)ojcAMR#10M^@EwW9gWOYYQvXzuQr?*KVIY@4XKR?f1p{IwHJKyXzL<(aQd}Dczvl`C~y@^JD3Y9n7#{FKP{+9X^ zaBcA$|2q89M$QMZ?Q?-4cV=FUwne_WdW0m!B61X(`v8{-!bT7EuDlcT$ z8>VdKXL!cWyjv0Il~Y~I85ulzPUN?vgkYp|!dGan!Ag^FQC&N$!7|&Jv>$TX{d|RQ zWiB_2sf#!wu#bQ*{yD}ye(VS-X?bCIDmYTOmt6PuMZSOOz=;o8!rBTvMdlFr^X*Qx zH#;6y7w5BS+Apc36NG2bW=)^x#^t8}Ve}g4{>Zd8uQ;Eq$uzg$-!r*)-}G#vVv@Mq z2IFWBvLHG!Q*PSmi*@{dRzGjjyu-E`yjV;3&63W^(I;ee&5w?U+fR>%#-wLh9zE$s+Gapc*70RC7-|ah!WBp~AuHMpWa9(dFt!h4_zfewUqoNIRjb z>z{->?Mj(8X1*VI{alZR-6|bp+>f!mbz5$C1<{9-LuTlT$AuMLeU-l(YEzW7)`XSsULyw%gzZbO$97;BFBQ-XuUbft z+TUVx7+uqXLGbG^aIs`_J11g zq$Ehb$qbZRSV^AB#nX5sxe{#oHoEtImBE5e>s6m_B(UI&!9}dB7O*;yA|>~ zn=HSIuu9xoy4;5Dez0*}U&Y!F_j^(BJ^IzS+<>;O<7fXu0ys?bn*a6dsD{s}p3iZV zw|(0evqMdjMtGD8cOcadD#b4Px)K9rR>$6JJUn`+AO%=9^j~uMWlBN2*T}Mqd4<2? zT0G@TQDX`zW#=jIe0=FLKM9@em-3MO3{i!9#}RiZHTe;UilT%tyjA#LL2a+J`OS|6 zizxi=!*VTlOACR;7fOj1Cx*xk0n!jn$l9sQ=d{m3rN!rox=h*WxCbUiG`4AtPQ?Yp z;l;lTiI)X$rhff(rOmqK!A2gWg1+#uJP%t*t0{it6|*;#7szRhoJr-Czsd0aJ<2B# zzu-+`fUblGa_)IBAGS6xPaF>mcHLyMoF{*WCf#MnGv2wP5Z5oN1snEOzrh!oaEj_c z(otf&NOfZfA~8u+k>RJSi8Sd`xN9}$p=6XTN-iZ$h8;3QV+|5knResIC2wBdeKsDF zDY{=U36VtY7;Au~Phm(-0C^EB=s-g*5bKsh1d@l3PhFS2mn)VS- zM__gkKWwi&PLA|6&5RK?Y`xs=nvKT=rQC4HaBVf>+j1Bwtn<*Fz{PZ@1(<(CA*Q%R z0g2?tNBKuI@=%0!A8>J4&wunE&xBMIc?I#`ac9hWlYB;T!Pbepayz^sA{jPXA4vZi z50|JdvoRVx=QSS5sH7mKudJZ5Nhz`5I|D&lXo|h>K`vD+N|_>Ev^J7V<({^l7URRa z<04Djhf~^Q*nvl-ITljc0IlZJGRn>ic`{A*Mp|O=sok^kN!)HagHt*^*rL?@x4N$Q zIUqc$mo#5w-r~!4jc1!0&=2F25z?=<^pqW&g?Tyg9~bnrdH&YVtTkWSl5d-`7Zj=O z;0A*hG*4!ypoMx7wKhidD#%bwQVcP=BaWl5lT-vxdU22WQx-JW`d$`vzmM4d=vT#; zFRku;pMCT_500*%JPF`vsP)ZcG`rO}JhABef7Nn->ijGahn?Ig<T#`rX>|MY7OUPdw7U%X9H{s~;T9-1r#gx(p$tk8PP| zdElw3$&s)kTU#-?I+a@c;PL$5Dj$rS3t)M1M!>flMLg(s&e3Ys<+`h!RaW~r+qQ|| z@Pft=-aZ%Eu*SM!`(m)KT}O~lwwlXKL(00&eH!pEY#*Glf>W%6iKei+(^%L z{z0I2xoypvsdkm*EVS+B?*<8c-OG8|q9pDea995R)={PYgIedJOiz~cTvWF`keJ44 zwkL5eg-ww+Pnp-%`M_EI(>bN{fr>?w$c!Y;%F`?U*I_5=;!uuuQdPeG%^Z`NFG|lp zb8WfGnJQ2Y@+N&ln<|~6h%cvkX(2P9AFzMb1fYNXRTRK>&;meg{%pkn)(nVl{na%E zMrLk%eK0Z_sCF0rMjtVjOr`%$YdRwN7h3OMVcJgpLs!C5U=z^C5^G2Zx*DlWNm-y< zh7_WgTRezwKBSlXxC;=_rQBn3y|^PMa`#d-=M#bUAHVsQaBa+2zug{I1*VyQa5i->Z;Z4d!s}e0%5nODQUO;N0a6K|OPoF<) z0a=zO;E&NTjfr$RCa5(hs7CFBi&B;HxNIIwGd!N6b$E{&ie$~fX%sKg41R(A5l0;-(`q-LPL^M>8VxF3Rd}oqR&kZ(d%)g3` zxUz(+Nl`No$tsYyQwq*5Es!qJ9XP$ay6H>>3$> zBXmLjwLIx{q9BPaR71!5!0-P=3VZz(3+55Q*8$YJt;4H1f{dtulkxWxud)FA6UH)>$2dsGMC57TC9>CH`HEI zc1U=;B9z5Z4ky=(yNG7Ii3dLj$mleFU!Z;cmXozb5x)yj*=(B2mSQgIxsbIaUn_%S za^JJ`zu40ucEl>7vNukE3wh*$%N;T89!F(IvH&HSIiG}7lYR^3_S!joROj0u`Q;Io)| zcqHGAo<7A6Q2~C7z)n|L{@d?@BkYR!7n5R0u2O;_h>y7atk4iDLERlA)`k2?BJmV| zMvf4ioCQ;o{cMg;h`J(`oL-n-i>5|jbgk#Q7(MFQGWV2gR|EDS zhiR_b+Ks^D!-B6n18j^(i*0-1o#ISx(_YKt9;?NhJ@85?G=ItG!=iF9AfCF=kL$U{ zD#wn+fs&giEt_5IgceUkw-WJ1<_mf=DQe%37BO=e z?P2iDx=i8L{g0D%>QR_pm^zklfzABO29CkM zOfk1HPRFq+Dmx|gpp+2Aj_xBR9CasUOzKhD$Ze#pKgVco{J_7Rr+Z>;9Q#Xz*+vWh zt=;)7#VcLUy-c~C?@7aWcClFn*OyEx#44Xe^NZHC)pWb@X|r49E2Lf9U^6GU`*V0C zf9m$N4De)guarWTJ^D;Rl2(M|P|1{Q+x~K?&Oku5to~$z`iq$ykHBjU0g3_YiZ<%u z3x#g)5xx@s9Bke7Fy|~jvs$dI9E0DzZXm@qr))rc>kG-54_E6u8^S2_I=ad_eUp6! zA*c>3x^S${SH`3tI~QQ9-flqCz_(2tA$U0BRETXOzE& z-E<1LSA6n|(>3RC-i3g-f`w6KU)Zsg7A%fZMaLAs5FD~ccJy3$KwIGaBO)jgl-QaI ze1<*FF8BaeFU(o1>nlMQl$E$*+I1+buGU_MGAu|-Iu&)oxgtok>SD;Ezc^cn{sob%%iY8Bnv%Z1tW%+i*uECjB-nGK2CxWOGSZD*Ruz*5&-=YMnWRx-}S*5(L1`R zRBi z1Fd)dn{m_0%@JM_hE|$*?NWaph&~In;OeOemWZr04{?+QuJdDw87!c5PCV%)2dtkD zM`uMJ7m2_DSz*`;o)`Kc3R6Py61DM1b~yN;56ZB#>wHAK2CV2DKXFeTM(5!N^ZKx) zlWlNIQ<$~10O+@YHCZoExL9x>1Qobh@$}(JwQex192e9`*y^oz777COOpcuoj za0%ipC6)}Pq1jPbE1x7Jj*Ex{7G@|GzFzd2M7^#tO(Din3l={iEm0^9s#$>4o7?un zpX~!mnr>wy&zF7@M*ShZmj&~qLS~j{YA#iYq_0_Jtzo0#LEK?UPR;mgCw4O^RyqGf z+gRg`^HSjcZz_A`EU!5+=_S66Q6ftWjFkf01Y8HU*15r7o&X*u_4e+6z~D(c0<-OM z%=7@jj&#)S63ckpUYT)g(>%Awk;`^xtszKvp8BQ4!NUuhjnQNUAAQrU{BW&V`hhKH zxYjAlcPKrEtgj{_1uPuVuflY4^xAn@M%jz1ys?N~AL<;1^{D7pUt^z_^g4{=zlhet z5MXzlL!KdIuqpF8e-LZwTBBPN*iN3}hdUC$*Mpxggp5Eyescf=5Q7LZx=AK^2 z5n`s+?zK4XZN<9ij-_~U*kgFHkk8f>E;9O~QTTuBmGU{xcy zbNPcp(#lq11@NnL^41{*88rujt;!2>YNQ%8|2T-99aYk@%>GY#N(n~)Z!Pedr$a{J zj~au9Hx~aG%hHVG}xGJJu@S#VkA=)ZQw6H9q_Y{fbLkQ7=kfMIB=4zg2o|(D$pWiv} zd*Bfq&o7Aub18?A*s-k2XwL}O#LIH7a;q3&Yc>E&O|7YpiLI&-_>d5d&_QyW85S&T zBHNA6feL$GxY>DD_K~aT=o*AU)}_?wa}3!_EcJq>R0#ld(5oF2Cu9pJ*q4j&AlDy4 zfjG+=sYJAYEyumJ1T>yTxOV03^ZBw6$%=F`>7p=Y&7}XdKm1jL;C%*Wc6|g2zrK6$ z#XYYeXJCj!cp9+Z(t3kNnS5I-gn~7w<#nE3U_HJ5WIvVG+kg$w>zxP6!@&g5Qx_yd zdeMIqa^fTT@3G-ENf-sDTt|N6ydN-XfSrnxKv(F4Zq57M@;Ds$42$5KdZ|YC^%#36 zT$CJtmr^VM+BCC4|8K#}dQ}ivcMklA(}VJG3ST6{qARAPi|A8~o|5xAA@85SOj7Qf z2b?@M7ry?fEwD`WIqUek2MBBaN7#N~VO?Ph=3x-YA<8mav{ieJyC04?Z1F)x;(h#~$3`H`mda?8qD)u7z-ikC_rWG`lFk7*3 zGhFKz>*r;YyT4!@hJP&U`hmniJMXI2mxTOjWc50TtG;uR3&0aZZnhZy4W+U<0|!+7pn#F_HK(?RRdMF^>S<|_Z&)r9q;a~rr!E} z?;ernsru+qCYhC7$@cM1qv?C~-@LywHmy>>XYE*RynU_Mt23;zLNEsQgDl<}%Vh*C zTRqF16wxL&fPpb@6T4l<1`D&6WIz?LFIXf`3{`qQk`r6@6z#xvPJpPYL=dGD1l3?+P|PfKHM63tR=LfY@UKQ`)f5fZwX@NJ4KAm$O**khm63o z(8)7jq)lSyMoO3@to)NmYB(@`^JcWhL&<+edo12TjaSHrd1z{Vl_^_5W(2UMQyC+J z0bY}KXN;b5{234Iifu>F8~(?8{~+-6KXBQ73Hi*i`Pg@HxL5Q+Cr9Cd-z~WCOId<3 zV-@gL4#OCuy?5Dv8+^Q0$c>V(X;fNPuDIe5IRjF!g-s&NYClDzym0Pi`Sa^ohcT|l&;OinnQbT>u@j>Q|3nq zN5SnssY7}2c?-aR7G|t|0UNBEA~P^*(fCfUiL&rjeyTTi?6G^=zIOJgK><2X;^R}- z#0`sT8%*8bPF1z2G>)p}btSDGz3e<+K4Bp)B(RK?p=i|V^2VArXh$#LT7Km+iq4w1 zh-5KQ&0@`yswOseSaB9Qyj37Y0%r5SUzzV8HEo+$9klb!at@hSSW-vOhtX@!NCb)* z2)_N=Vl%>VSL=I=s0qeF8pI*%qTKRAiMP}$L$;S({-4oVSTC5buk^%-{T>=cb`0u^ zcMXSE%y$t*{%xPL1+Fv;Pydu<7nVDP6RY~TcyKhrDWZ=J+6qIYX#NSUL7Z;#1qFUi zO@@8RY~l6{=Cw8;xY3Y(W-AvGrFeT}aM3DjWa*(bC-PJ?;&usV+xin>E8Lb?#=J@8 zGq7&Y_WHN(!`8b#mVDz+t-k2j1+gn737PG^SlMY}7;(uN{_Wc9Bjy$7AoQaMFt2-v zJFu(~&^U-9XECu$3+GQ1I|NliYc@qckqykW#riZSBt+oCpAD?cEjOtfK*!70Tfg~8 zjt?{I8qgtD1Ks87_FXqFVa&zj4-9Bd)$Z!qq&X@y*GNv{oWDzz=L1Iqt=C% zz$$0(nR8X^BnA-1eedf06m;rY z(grttp=L=mHX`z5DQrF>^vB$?WGy&KYEexMiu) z17>Wvs4KB0%r|J@{k~I?0Uh6|FaR$Oul=P~FZ5bzpdmS55_{xG490g7?!XY*DX_fB z$Xw_kud=W=#$Jx4H_*`9{wsRPAUe|5&|2z#N(3gDrkv{RMtp<9(`s!OS)(h^+|dhr ze3{7OC<|)|#*DMAEce#mcP~y@h+(7-m&QON+)}X##kn!k|kYb z7QL3~PkxMJ1Aox83BI;^M&rG0x5X4y`UTqG`Jl=D?aR+0A~zQPAvo8oEEhmv-Dea( znlcgheAtVr+319*xeo)sG$d4W6`?7ZE<7E0b=%RNc8K_mH6>@J@NMBe%+sm9*#yV1 zhP+6<$2$^leX63V`q2gNzfnde20})xL{bOP2%J)Ne>j9KS@;mX!wZ|_C8%@B{!5hP zsoK;|7Lk>15<}LQ8q;e|w5dXQsxk~6)o0xUm$V44cQi$(YF@7GXx*q&1rzA1S9NwP zm=hV2zijbaTBggTHL(7}C7@_GA-%+Je5SeBhRrLbOwd|MZ8)2>&lQH7@tGhfq|O7++3H*R})MRN{XSM4BS)#2Eczz7hZ6 zy(-^OBpF@<0RQ#q_G!PdUGb8sL4zQ&CU0d%=>CJnLYoMu9A1hsP3?ELueGgDydY#m zbe~ggCjX(XSsJyxv6StUj5d749tETu^&I{1Zpwb2;SMZG^3V%^s_S`f>v_I1XWN!x z!IQEQ-=It3J-#RL`?jGJ1B=GO{<+Es8IXUP)qEKX?eW>)Oy^b(AF02FR}(8Hwh7?&5I# zG=%*yMdMOEZ^E;8k8cMy4`rC-n@7$EMc|!=$2EXQ1Hl2~uW~lZH0*v-I&i+LRY_W~ zmT|_*H!DbI93s+(FNv{fA?Ct8e=Mlw*K~~J@Kpk2zMlqb*0g%)-}%d=htcF4=l$7x zQ+;KK08mALg&TO&i9z*ygLZ!})Es^eCMb7J9-y<;?)Ft0BPGTu0?Qk+BHf-2JSK<#VHjx$@y5diy{&l(%2s zpFtUKU(RdMi%H65v+~!M9+!Qj_vsP?YT%8VM+9ikpk4Mg_Jd>Pd2HrSmC6Ei*h_B|lTfAG&6aMdT+!OO=)kP1-a5fcuWO;8*IChFul zqJbjdYqX;`6NR|INy*v)qL}2@T7?f(EcCMz&lgaso$m1BXt@^QXYREJ&}-U9+P4Cp zIZEpdCcTA?^ho=yjRPKlBf*;`uGPuMZ*Oav8wsO5-q@(ZQ-k=l)6F&Z4bXEG;LS1yr`s zThnQV?f$HelNkAPFqU* z2mbEGw=vupQk8P3j6Q3F`Zm&M>kR3pya^q!9#U(unP9v-M5#}XnQH7R*Kp6jF^Xp)9s%sYJo~ZLDZ_0ou(Ji{EOtwHVn^ebR&KC;F*xPseboH5A zpc82Xt&fi4;|Hcu% zVN2aQ){9Okd2%y{c-LO=j4b)2fh3up%KN(IkvLVd-8<_8-7D1!(y-6yh7Vscvk^_3 z^{)NP`Lvd;fEKMyMwZseC8QC^H#h7lU3GkKFkivjm7NZ5Sb*_XZqDZ%s5%Jm9L`ia z>elk9?KCz?dpDc9-dt!ZQKofrg4HG<&#If*S~Asgxn3k*4M`$+;TD0Z!so9j?GY zD3eK3VmzeE#tc?SjEJzedW3r?(-$AS6Q_nb$sC*@sPWIa?Z)!ln?D-oakYxUS;3sm zO_#)*A)=g)Y|knC6MGaiUAx2<;8DLPy29o8k12c&@#j%MtV)D7gutV*q3GLwD zz>rjl{Mi0K*PAX5ZH9)J{zT~Ee_(YAuinhZxf$;=Y>>EzsPa(_;C`W?0`D%5oS{C= z7@Np_8bD(8+bQxXgR-|+e&O$-916#_Wb3|1b}`;**xECE%od`sY;N$sW7)npw9AlX zAfSe<3DUtLYpFK|l%esUO!E)A5{5nUi=xz@bbB_%iYMM=JIM!9tv0Aev5sZr8lIR= zcx9ZXhC@uvYd%S%0S9VQRH-#DQvcyrpar#@QQC>pEv)z`EfyTirz)v%vlHdTcWokJ zLfr^q<5i93Q?s1c%hu`~InF6KMJ!L65sFWszYNu!u;vC>p_;&N3k_I1zvgmxNdjg7 z&a7RHCNzem*n4U7`yG zNJHV=*o7)yit=efF0;EJS^ROzu6Fti&WVM?D}Ess%ICTc01$FK&x^!s-j|sO|1~IY zV;wp0`KU_O3z}9OYeFHw1OG4BJJx5G%7`Vf z=i02Afg~8NGt1D#@GNHYTBN|=+o(Jvwxap=!zG(qyDkB@b*J$5bL4QM*_Ce+lWzU$ zf+|$S!tlWwRHiC$Xgrk;+;5;U_ajGfbHOSZ?yP-SjEfUnW8d0fNG+$fj6dQH1+ zWm>4~2b=J-O`fi*qox|kPsw*>Mb8oDR<>}lT^M1mEvRY@CdHBjT}23dPl;$OEdY*75Cmj=V`+lZ9svdmx{`wa z&?@Zye;mB^ICE?5AYr@wK~bHvd2FtcBPoa z$|JH8sK4SRUP%MsB|vLZ>mh{dSQUxzhtSGl@WKxv*h*Nm^$iR+T<=Ti8Hnv=+`Ps1 z1O9PZdP~WP9O*=J%gd4K>@%#HLfWw`*59l+v#P)9yZX^Q7jYLbhbfg(Xx+~Mi+RTc_seJ=)t=T+YxxRq-hmd$aBVs@?S!!?!lxDDxUT>`T0zq zOucUnPRp~jC$E{PNQ`LYp@}J5LUG)anN%Z|Fm?ugtCkaKA^Qi@R-n`fLgQn#+OZte z30!5AVxCNit;5kkc>qpq27M*)xPk>CLU;Fx>Oib5=Jx>CK8-B9G5{j_BgH3=)qc&W zMNxACnUS7+qroL@j&{;hFK4A0eEHtmOhL_?F>i^XoL3!{4I;)>dIALbO(_ir%I_1U zTqV~)%TCYRoY}>9kI4_5AC1vyUi1SUK(t$`thqM-twOH!s{97EvU~yGZEiyCo%nDr^ueGBO!x{z77VcOh zWO!bTp;}AuAinou+3rywA9)TkT0Wr_;#0LW^Q4g9h-gHr`OOhc2t1XvvPhOE|3}r( zk)CC#2s?({hz&{emU7lO72FzHNDzIubiJDw?Nx)40=A&YkAyRxpMwM`j1Qp!y!SK_Ck^57k8hj!Fh0^RQik2-g zQ?0$S{JySf{=riG!#Zhrjs(eN%H4qP?S^-zJcFjil5b3$&O)d^M2k5$pW1~|8wb7xa?|G zVFs_;;#kYXB6$uw>Gn4v3z6b;7#>JI53l{;AK)kq?df4ObozWvyXJ=3nivvsw0 zi|}V&L#`qtXXOl3Og92tm6`n%rV_7H=adcck6BD02t%H&X}L_=B>#ImDrg&fJ{hM3 zAtuS+(R(WR{oZBZ=XMg|!RCJmBF*4U@uaF7+~6APNm{AcJT@%?&2=cc-`Ica3lwsN zlrcGw+4Zk3_wXGrhj~MiW)rkt-A@{S?!WsrOupnMg5_1;1DqQ|L;tsbl{Q$>lVJQBDuYE9yyDt3@QVk!hgKS?yI@)r(Cvwx z(;z~~ah|K^K4Jkvj8)G=HTaT$PaqV5*7uKio-7a?(_i<9D+;_gfcoZe1A;`y9?0jR zK?dj41PSg8Y3N7grwfRM;DJ|D!qf*P_%_*D>QoquhX5I|@oLTz- z*#vF=YUbaIBnvdZiptp@l`^$G7;hmB<1k3Eqs}U|05nY@OICmU&af#5y#~{aI0?or zqLA5bS(7J`SV1?Hj_cpfJSR{|-DMfk7|6V>Y6Uk`$h8%aXpEoxby2jsD95acDgpzb z<=1i+%!!hg>Ehh6iYUwU&a6OJZ_vvK~$B)HvgjfSu(0EvHC)EskhTwl6je!7qv0Y5_E{~r_1JZs|Nz5 z`*vL@#CzPoM;Cqoo(Ah8!TIjHq;D$v+eqk5+awKodj2htH*@jLThb+kNd+0PSx8L- zU@la?Db4TO@Zb9D+6}-`sG>xA#<#UlCExVYZ=0dYw7ru>|8*#E-BqW&9(BM9gmZ#{ z(26O&r`I!luZ*~8@Ku8uD0>FRz2ycBO2D|boWfnocD&M+nYR?b1Q5wgZbNVljp;Yp z7$HYWSuSgm*UhPKz(JnYKHsy(Z#S}nu;B1DJ|zR+?1D9ZC58Cx(lxPv`WMBMWk;~1 zvsA75xmsDLG-*@jdJ39Ezb}iELr8U;aZ}V#Ya;L#`@q$( zs;l0@tiLOCc7R~0Y!o4&q2olvKc$3wKL1O>#8VV5R&5wBEqODAHOGTdx%!Ta(L!Dc zCyr!%9(Yh!>3D+^LEQs9#2|MdNJD$hwJa>hp3??UC^dsMTpa}t|lzNdAO zI;WSfF4xYPB)0cUmqi!vM`xjvtB9e%AWd5#Hotm<J|y&8pXb5zlP?oO&QXC!8+7@Z8i$Jk4zG zK##t-bu4AhvMJ?d!BiMuZw`IQR#9B}lTW1!G*gMbQm?%OXn`N##LPX4g&%s# zJ<(N62nIxves?Q+z#M}s&VvFqw7XZ(-zuwiVO#g0S(C#K)`a9^#n1$$kPx5_uGGYp)u3{c=K$|a(c^|5b&_Rd61K{h|as46gDKdUk}?}4D0@iT@K?5 z>RcBSh})}gyB~_f2>17Qd#mSqJ@@mU z-zsx^jowRqwA$1mxmQRYHmY9>OMe7~b&C2IlQHUdzGZxNV~xuO&QR37mHFg}U;TFo z9omDUx@+{d%O2C&dbnYinXe%0k0$4*dlu_Gb+@vMc-aYf1yo_!yItRxfrt#gS zdc7T&`Hs^0>eXS~FPiBT1d@KZZSB78PV@43pGVGbH`~pEo_yqC(Ic}rG4S;n zjOdttS^OK9TXOx=<-n#}zxG5O;A-?>35>Lq0POH9Er22li`!pF;{B-@(%lo3^dcyidC{f#lro;$inQETK^FekvG zK_GR1ea$*OVpeU#g+j0-HD!md*>{DZxT$u1eugd=sfJ3wEohyCZY|VpwYD1xoAsXv zq|b9(7vYy)?L^6rbnBKni$#t+I%vi6MULA&?CjzBiQGTrNs0g_PI*)eu+y@Q{L6-0 zlnWfcQcwbG#Y+cTvlh>rmlVk5?nqBo3SOizt&ZLNwN)hVmwt@|bFpR_&M3dxQ+PIl zK3Y3787Q9M>m50#pD;d>^cg#@UXlz{&7ADp-#S*kF7aNA7yU*Sv7Y#HcU}(tjC9zl zs;RN?{_tx!I&qvTWHnrSW=7J*yT|TUSBWI4XFa{*n10J%T$URwR=+YexZ-nycEJa*l1m#ZNcz`oInana&<0R9Y<_Q2Ez_-#;Q$xPx z#?UL$4aZ=vn>Mha!7~Qm*-JK zZo$sYfbso1cL8OeM4IVv;(vacn~uRmO&2|m3EX~cx#Z>s-N!Bw*@HCmY-#TG=bHvP(m@y;9V z>{GQxdmkQ(1>no$k;e%9+MhMJ$731AhkaHr8@B0!T{nC82=EoDNiZ0C#&8-YCg{&t;`&hcG*H_)~!RDds zXLuEqLvH=P_SU*7u66(I@)bwD>9l=soaLJo@A78%=WT|$^M?NzcD5Z!y`rdL)TszOr)Vd~X*>e{ zn?vdJNrQL&Cuz8M($lj1B}zWy`k8&mw7l`W*NfOwhva*Y#v0V^giMpasJ$AO@BX7N0u(;@aqD@-uH0$Z*PhA4$Dixkniiy=H{i;!ShP&sp_*3P(9`hlr-SSWHKP} z>td^+mS3J~bfDsQ^CefwT#&c$$_2)})aq}CxbpWoN@$OGiPaXEZ}-CE&tA%zxb`25 z!(!xd?_ZIf`m+=Dlas}hQ-!1njnNQpNZc5tA^5O7k@U)g74e)8?SdH1d;aqHaYlJ(2U=U46q^9cQ} z_P>S;=!!>YiGBW}_lHism?4;}6TaDUqvT2BS>_vsvAaa3}MXFS|(CXnwdT08~^1}Ua6V^_2EJ4h#Vx739yf}djT_v)Zl+VQ$Qe-@W!z%!`@g**ORLA z4cd9&_QSPEed0eC;qr^;IUSctKrqi=X{p%pjlH)=h2X6yJ~a{|%huwiA-R57`WcTo zOL)=)b`1Fw7>D-kc_pn&iewHW8S*#3JL%yQe%<=;Pbin4?V?)D%T(tU92>IGu z#I9SyM1EtCbA?M;5aq-H)X**4{RSaX^843mzm{6v-84 z7wLfrm0_o4u`wFkDO4&lIZQzn%Bw;xZpj(_R=zo9o6mjK?>E zUm{b8?dGlnvOH8ikoQDN2S1!6rb1_+AB0WAeZ8RRYUYgPBK%lAos;+r>ZUX0PAkz^ zX6%SDFl>kXKf{&F;(+31Ak^RvQI5leX#f!QQtx=j}Zj8%P`w964MoS?3?wM2%~y=I-zr&+i(5g4+8f4jQXzpK#7ARy)m4AcrT{Nd-jq;`?RH`9|IUKVcFOJ7X2OCk?qV;GA-~i;6{6)e)1_m78mo8$_IjxPo)~gqafW_^B7`M%Uif*9 zD@1e6b!QibC)>7N2_yGxQ>Fg^<_^^ws7=2`;UeCuBt4$39}q(G%n z;5}J={A0#etx$y*APQ|jbHM(|`R5UHba6_4m)?R^ogI9q}6IP-A_gR~Y0pe#A`@t!DLrXbX5r*S}dtq$@w zb>OS}N5cEjAiW=-a`kLrMT zW?z2v$HwY1_nqLC1reXR=_)#vfz4R2!4*hF|J@Esy0{iC-IWG^viuPOQwasT@EI^a zl1a%?d;6m%FdQ3qUrRdygttez{o9CzX~dOlA%MpzqaQXBt8rAH9hISE@RtPh(1zrc zq-A9mz7F@1>CGxP0qy>WK)iJmrM<(ctM?nuDs9%l6BzwkZqlk0=Hv(*oXEqoMQzLXS0((d0Ww))oAP##d)1a||mB{l-MI=*&;bDj(g)mtTZg zD0ag+Bk;YL=lf;Saz~h0nszE)1xJe5?YFIrOKi+$CrEWs@z`m~s2uj<9(lunjAXuQZ%I74Z%9jTAxri*=NrN1-o(5*q}bj_mCnxK!ywm^p4LOg33m zCoTFW9c?IVA7RJ%pZ0~@-~C4h>S7prWHU;s?lbI3baud;V)l$6l#6ySr6>yqXG$%@ zd^dLVIE-P@CAZM2m|n*G_8zuvPx+w>pS_O56Fa?r!;xw5kUYwyhbvb7FxC32%_xJS z!&LX(At@h6|W zzvw$lau@Du-;l_7WnkU4*?tv+Xc>Ltm0IuDc;S+!=zarJXUwAzJ(13|{ zcZWzfo|vA0STUpy{8kMuRN$ zKyBeCg<(+pfKJwPMl03N6on_SQOI5J7_ky%Tg2<>R7Uh<-)D;VW1A z5j%>I*!+XABNj^X2;GyY>!7kh-|R&Y+mr&E07Y~d{;h{^E82uvSYb0Z7q_)ni!~|~ zJ@YRyCX2Dwz9kihwZjOf`y^5e*L-;<$NkbXQONKEZs~gq`(KR9IPe2ToDAm+_c#nQV;4BkF~$ouZ^PT>$*Y z(9g-k;bzbAWR5b^BE|Ze8ohjciT`zP?==LD!n~Rd97$J=>ZSOP|H&rBp6*EYM$;p^ z{u6o~B#uH*Mb+JiSXXQJ1S?WlcGDoPItDLnZFj8{uDwvhXs0+#)SCo&4> zk71PyLhq3EM5*N%3J=>~!^(&w^(ed{PqWiOw=%Qu%l-A3ptOw_sVsII>uB5N3}fv} ztuDT6h3ap>TLg(FKkC2tJXa$SP%Dl1qHX@UK&ynf;KBLv1%s?KT>X>GU& zX>CsFPcA`K&2ATy1>C||fPueEG^Ul%_Z2DSGX}Z_SP?SCWQ#a$UK+RDO!ozBA(J(% zWC%m5>3`jkNe9O=(WLD|m>?a|O&yjTBCUHIG(wPi$EZU(pplvW$|0%Rs}TTU&-ReS+AJ*vh4c zbbn-@mwnB22L9tL%`4^yq^87{$lrNk}SfUB3o#=sCY+7aY0^#-9sy&resZU}O``bv_z%*qr; zvGm_Wxx?H1E95-L20+(AjLyyipD+Mcod#%!=>hcsg&*MR!3u~$u0aq;FkUeVz=mLe z86!CG0rYV|a#oFd zf_0k1Estjc!+-`P7m$XR?NIfv2D;xH>Zxk+L5QgtP-VYB7MOCv8@; zf5rdGU~)#Uj6mUAt_EoiVnKgd3fW@QS@D5dtV7x#MH8-eUPG4*tVDSCaXn|C!0)D8_>P1#ZP_hB#cesP= zek`yL*por;{6b|vdXx7H1{AGa^V z7db-5C3$<0fyCNUtyr$gLygR&sJ+H8(83(02q3vlsoJT=akVR`D-ZlNDX6ORDEcc1xCg-Kj!|1(AF33oUhJHu@B z&}xE(5nqfseTZj21JNu4eCxrw=03-17{5Hh3}Ne+1p^BoJ$qdttje3k&A`oD^M~-q zHCP0B`P3ro^^S}?DNLtBK#Tc;vWPjw$Sa6I%;pf&q7hG_)Q_*o?%x3{Hsy`n)-xoQ z+*X<9Krw6oK#r<6B_x@Z2I>_G!hZc|K4SKHooVQ1CI)&i9%x|Qqg2GaO~rEiV)k8U zXVvSEH#jteV8qK(b8D8W*caF{*02?{g%PDh^}-JdYy z#aiVHI~>rCN{GrHOr zJxmVyS#y12i7*SUd#~^FwTOOM7uM1ruJMVU6zVfo8TM>Bs57$UZ_c(FZSV-z5%tPj zGh!1b$k`uSCxvQuDOzMb!LgZ__lto9uq1q%9HcGa40pzv&ikW|lh5OhRO< z`OPpZ-9pVWT}CebGU%_sNnUT9>BqPfm!#Y3-rq+?b!Ip0+*n<$jvztI{Kb?Bx2b2D zO@e@7{w@TGUcAthhfVV_$|Sbzf+m1srizS5r{fjn-A#_Bo8CDG#fagbph`fWKnmj% zHuyD4vlB@GVGJxEmN?Qz6@4((B6m+D=3# zRYfLn-XP}nWE-M~Rx)B{B=Gua%80@ynPOh zy8X}EXKIEmvUUk&NjWE2(2xqko`C$bK(nyHArd-OXJy+R*+68_8+8ZM^|!t>WLWYZ zf!*Yh@TufQ7`v?@Em769fX*HLK5f{IKc2v$Yl~q@8JkY^%UR{1CDk(l@x%g66gg}l z$(11hkVpN5g~22(4X(e2FT4?U%*1Qoah(Q@p|7B{uE3ofy1c;bMdN7@NuROlMqIeKh{5SEytVvrDFt0d1q) zNKK&ymRAbJL`yxKJGav!#acDliGylHG5w29ri)nll>090h-4Dudk8a!8GQ2h zcqe&hO;vh>;-cjs8%ws(D=U@>Mj4pS-Hxh*d+TVDzPD_}c%AWE1>G{@iEEN3 z} ziXm@}?p^Pr=NxV35Y+{AR5}drSA90E$x%-#`lunq7f6n;{;VAd$|t0Jbd6@)!uo&Z zw1Bx)Tl+b>sOL8(kC8zK(kdQz=;7+Zr7T3m2D$5k{efJYWol+aKR#W09*Nuk^pbgZ z$66yr#(C*>oRK?8uSC_1qVm%;z6(=l>$qpY_G_ zMzV=#G#x;5vG&_PvK^xRow=>W zz^A(o{%e}@dRblGhdRmysM}fAySD$Y%vaV4hi4(iLd;*ON8^Zk4otRV?}p|`K|Bi| zVIUwJbOING&d2L;lXqQwadIr!#-~n~MGG(;q9oEJM{Is2>Fd|6r?r0aZMnS zr05iMIj%6!@~DrM`tZUnwkfXu?Q%e6sMIiv0BZBrqN%GDNOJ}r6PB1pD-?%V4#CwE z4Fbd~!=UY_y18?bmG$4bd=Wp8>&}=`(~V0GS`!tn)S0gvg>{uuDAJV)M_+ zXtr+=qs?D%2$>YlW#z;NK}}{k+RRob!gS8E zT!?4jvwf=NsB?&SA!|k!Cv1vep0S0*DYTo(MEPGSX0=VnuWn=0F+w8cRS%p4suC{> zBHz3bo-;F&LjvCv3n_$JYLS-t{IYWsV!>v=aVhtLq#C&hG!f()G3ltEbJu16-3~f< zZTp06zRwO^>ss?hqEJ}kB{$*DSq(8ffcQpU390N=kUDrp=d)PyR}(PhV3#wqfQ zm^`n-wt;D4c1dTeYXruHWWrcsTs;D91mMUmTiu*Kwq+uEl!dhj#$@Eht~9r&0QYEa zb;Prnv7wJv`-7qOzJHjN435X;=8rYR_}bt1hT$_Z6>{~Y z!DKq;mO?tqSCC<{A%nw2>J9rbz}?rxdHR{(J;k?2AC+YEbI;&vZ|PdOfp{O^8KtmH z9m=F3cIx8Am_e2c z!u75@x34km@z3peeImH#{4v(A(RQu94nkTR_0GB3l$=#VCnC!q82QIX8g$&Xp7<$oVi*PQYdvY?~dsD{gR;WIR3e!YGW~e9)_}wCy#1lrAZG-ot8DX z4w8et~!^jL~G1IsPL+o869 zIQ-}wI~q@onwvJsRcRvGmVth%A)NW;f7(8pAA<`6bl>cQMOT!kdHSW^z#dgHG-rZ_ zOwIhVJZr{=oQTsSp?}iY{eJp(T8`uv_Updl00vI7B6(T1!h{OVC#UsH)c<}vIdaRz zee@U@tf|r+*>Ew;N^+N2EU+Ka+kclSu@q5ela9sBLn$0b41-4B--%v_3){T-AT&my z`Ud}&|EId1_cxWuM z7-Apo2G4lnlX;6u$cy9VsLoZcA~<;uJFWMepaL&7qE+iS6MjCMd8G7GF@+c-y7lW4 zwDl9wdzPz_#sn-4O%{}ma)%)JUMV%X4{bWr3b))V@(uIB!63nSxw_?md;=0naU6T4 zJ^~jSuTjepub`bTl?80NKezAd(qhLm(+#BFxpQQuy$Vdty2wW@dCTVqF(aHAVs<{a zJ{3l0Ci~_6SJ?9=N8q0EXsQ^##C`V5O&|p!8{260kT#ViVIaR1s_j z-^f70zg&O$tduyHJ^#E|`!zf$UF>nz>7)o_1eECWxrvE}#9z^@$#B=9%Y5-wJX$0C z$B*xm6_jIN=x#S3dWFgIDwImjPQV>|oJX&GBPlHk^9yY=#xAJ>i~c;O!8`H39%n{9 z)!Clkbn7$Z^bweVMV9xgw~WBy9G#>GMm1V3Gf*88%1OQuTDe()F(K&mlxWOcda?Hn zesvKw{y-8m6B4l2YDy7|?bv}yuDai&&((blD6=rU-T_9jQyMXLuJ5Blc3{<<&{Yny-1MHJ zya6)oR`LcE9|CYD*2Tq|&~O!==;|ivT@rhiEd8b@nwsR9;boGudm2d4$kaM*Gv zb02q!WLaCX+lj%-dX}8S$k(%3qJu?;Fgzfcc=6uQAV@+qDT6mP z!rl#9i741RqPMBRj-Ng~;L5J?qc$7}K|U(`9rw|^%T++r4Ptymu@#a3`D^I_4tjPH z_s{^KE&blmUO*sr@p7F$Jhww4Y>y81b}nEzhoQqp1V*8FCdlA!x_sTl>(W}Cz-?7tWjFk8sfP+E^O&-<^CHM zS%h!mfg4D-N{~~~&t-gP8l^aRUD^zkr$em_&D*Op3ufNYK!GL?xIewR8VVP%i&5$8 zV5ZcoaJYkd12^fWx2bNiWHp;V)2@oj!~3#Iq8U}Wqoa%xGbM{3=@x{4W<|7Z&s}d= zbx8{qI#f;#xNgTz8?z4rCR|2b3Z(o-L2z|!qjMZ7uu^#sQBr)OPH8KaY34Uka>Ecj zs;^iT3?7!o=COh(L~~90P|&WrW;W%VZLH(#7<7K?To#8ZRA0Afs4wtGlEOihQ(z@)Uf zbNR>%KneYJxFWuF+(jdSmhA*)Kd%2Qm_uQL$q82UJ0N5s944lpm>F5|93zBgG>F!D z^_MlZqCB2^$lh}aC$BTqB(VYdGv?Naf+S z+|fc7%v(5ItJEgVS&9X)$}u}^I2sr5Cz4j5QH-3E*tPrtS$T*PZrRT8?IXk!L^*Z+ zB7Y0UxGNXb1gddnbzt5T;FbU#uQq9pWy^o_RLs^3% zG}=?ly8`|dB@3C)nV<~7gkV<2GkylI@OT0-?%RDYsnb#$umVP$jdNJvi*GP%V?fT zmM1V%ZOO!+ncYA2+Fj3MKlQXEp7J{5j5-LW#Q;7+FFcT63I@dZ0!=mzgms=92`Dn0 z#wroLrzbPGdYC*T0KsZ>I=0Wr=kjnzXmy3L07KAivfVx$EWTbu|O=G?bf^XUsPm=!2aO{C{;enC=l`3Ha+ zWP{)LRhoSiaV>p}EwMEbfQrH>$tZG}P!fGhI0#9HN*pVABx>dEAMmWm*QTT1dyqaF zbxxazZhBp3u|!UKF1<4a8IZv&DegJJ5t^2csJYXc9#!ZdLlA5)l?T9^Tg|fxQ2vDw z|3|2Y4JIvW`+U9|Cd9#K#vk2OJ|v@+Bd{K?FZ4T#=rI5ibu_^6UC>S8 z=_IvR2zEck)g@<9BD10$nTGF@&&Ei-?TO0eD8d`uX6bldvBex=rB0I{O7vNWn>kkV zqho?}lodP;lxsN-xRRu|I2R8$QFF9?9iH14>*s$HXMu3Cs3WXNfPlZomxie~sMCS< zfdP^+UEz>Cw>%}*Gg59Dv6P$n&x34jT$%b6VR?9j?lCz=c-c8mh6Ae@$&;%`oV^KN zN{@Hw+=h|oK;gylpXV@wi+M6SFI-KgkM{3XP+?u8eU%?>-cZjc)Jl$=f`m-733bYy za0&eO6hRJkzFWY;hboz0hJ(0IdEW}T@wfr>I%i95SC@<`0;cWPAdPwE_JzHXv*jm)?0NePRo4ZeIIn==jvh_sB*?D4&7 zUNoSCeUmX@C-MX$Eh#7-QZlDC96J7Ih~&8#wiiyt;Lk;vM#0-fNLA9J@A)3nZh*#g2A0oW zU{rDs1BTrSmpol^Sr}tSE&AAFMnE1=jd@oPA5CpkYRN8vt(UcdldZMQ=7q)*QE&z& zF?~;@whY~2U>5jfPikO^ddWbyZ4>k1plmEarRK0;o?#~ecXy`!Asg`OQ!)*M(2g25 zMH30@mogqyKB;PZ@fOaa!fRVZ!Yr6Omc7p~8dWo7rh>V;j`~B2#;uvM&oIv}zf1bL zc}&+zaz6MLEbWrUb^J#S8EQJCiFMb%g~Yavw_sM|(oXDwQZ!P$w1xS2!H=1lN!QoE zBN?K*k^S6(FnI`fSGHgUB}qeK01(l~z?GIAjfru3`BT^gDMe38+=@Ts7h@3kx=d$_ z`#(Tslu9L1Iiamu=#@8L9f@&b8rGcy9Q~dkb%$S>a5*{c6EmObDCsxPG1=t2|M1yh z^hY#~Y%3l;tYNmJ{HpP%^=A-v2-Xk+03?wfseasZ~`sI0LECwsShS342(5H4R=Ft9@He;j^t&E4j zn0jV{t{UdZALEg;fXd%Q5Wri@d=&sz9tO)AeVhQTBW(Ei$1JucoTY_AsKm=)v5=Lj zKF^-o=HDC+uZc1_7{6cvnub%^*j5Ef>3^yig zB(jTc%=*2IVo7>c2(k0nSUq*t9BQND835q!pok4@j@yUcXAI5w)1AY6;|O(sqm{pu zf1e3+!=Rb02v`#19r}IAXVcv@#qv|qkJC6lhEz04$meZxDbQIA3|#x)XJQVxuz#Zq zv#2KTUu!Us5@}-t!lvj!Z3?&p<*KfjHi4;J(zG+(q^zRRt1<+fhY6Kcc|7%o)&NUL zq2Fgu>!N1a#e{;*rD}YYp(VdgZ*feI1^-m?-c!1TR8>e-IfJJ6+kQcCExVS)7+u4B z`*9qBXx)WZP8;DW2QKulv6X4l8i7asus9}LjJqnGP|eXjch5p^{9j$70LG(xKe(ly z1m;#125;|R98v%pSqf1!3}$i+3*^Qz#E2LJ9+HN+biVqRi&;x%tn|_n)@uChBssd8 zSi{Do#zzTT4PkDw^=A4r$I?a}TJEhTw4r#i9X!}-(%F^p!Sj?Kc3I+Xm=w z0SY6Gwz9&Z#=*p4fahp8OmeiTm12yPiQNro3Y|YIzeR#1-m*P~+%a_m|MtRO{%f%g zX}(Ep0$rN+d=o${17sG;An+A`a`NSye_E?3c@lLEh1Vogrd-pfmvrv2=ciY$#aLdX zt{|Jyc|U-h^jc(9uc?$+U- z0Wp8t`dsdVrT~W736~Hyf~D7(oGY#ix&+`nwmy&yH?ph)PaxU1DR~&@%I! zOb?2H+ccv zQoagT+E>iJw`1uJQ+e3q*}}^gNoyox>S5fLbRA9ss|SnirR?-mW3` ztfK1a(%oXqqQ?B*U3#oreIqr+d$ZU?VKe)_@YjNVWTPJZyT>bRILfzd-id1;I9&?l zonRr(bpEQ53aM;lLEG_ucHty>g7qK6TUn}TY-}U}VqZMdD^%@WTPdtP%r$tb3-{i{ zqHT;zAmri1Aujv$?kK7?DXit8hNb%=2Og=4F!;})3!0EM_E#gDRK(FJzB|Q?$%%dMGy;4vu;#soBQJP*ZBik~X;G z&=?LVUU&yh@*n6M_pVmhc)9=^WnZQ%n4^9SCykwkRM`Bb;8`}`-zxvs4a;&Wm)H); zAmtnvqQcoThEI0Oz7So4c9KP)p+v1t#(9fLsiL z-?R{jL1{BWW5?3dyk( zJnQF&`cD+K6@VkeWZLjcB>XX1Dl`{ja=A_G!AXyVYRw0o$*(nzr*oM1VFYOA!gS-m z6pG$2hSg43x>bJIiG7+^(+ZsF`YKlZo0pjLu6_peB{9U8O@lc-+gr^pW5$6xR6!Ob zLvAAQ*D0JlEbKV>zgJR>%^ydf;R|Jd^H?i(jub>S_3BtxO`7HvMDe>H^7%GlCh*6K zv%BX42 zKAr48$oBG=T0X-dRsVBPgV|itp-SE0#_LZAZw${fxWg0+DWf-&`8K6fZWE=$3{uoAspo9mGPRkYR@0^W zglelTJpGzq*0S{ zG5#h$l0s z#s<<&ii(TsYAjrW2ClqDZlZ`@AJY;e-@7|RFThjz^jRoWiZ=7_@cR0&%{%Q z@l>A*`g3v){EZ$^#DcR#RHtf4mLE)Mc@5*d%3}FijuD@O3m6%@r7p-u5g3)MYWY;w z_HA(1jb~sBJo4#uZ6Q4{C|8j&AsZ)3ONe$%Yr8a%Rh7#je@4vziIPmO^`8L|uoF}+ zNo5(uEmT(3O%Ot@KX3mNeQkU9Hb>E2vUr5UDM{)dO;&Mo+tY^Br|SCEUloT8Oi{uE z&XXx;SdVw?vl7t076N9L;hFKOe+Qa1kOnL;vO8bsgH%0d%JuEG9n{8x=NH@Q;z6Sl zcqHP@;6%bskuK%;Nq>?2=b*)WSs@H&0_BadpVdGjXKXqtx+q>hTq+-BmC0!El+eZ` z_h6Z_hWF2o+QVTrM5L(!&?&U%yX1D2GQk02iPUol@vbrw(~-4JSc6lUoJW_n(>}Wl z9h3e{jdz$fxVqQizZAafVSopR+a%ZE^gC+uM$Z5iQyb}bZSsT;V2LT2@mJrcDt6bC zy=j`FH~SxHm+(&)x=yzru3mYCQp#F;?(s~}#t?L=g{&h1UZAm%?2ZHq{2P((ANMmC zLcjrZ@fZ}0{to%%uIK9y2M9{6M9e_=Xr**V4F1-GiwoiZflqMP9U!VGv7H*j(Ss}l zVDy_R_K|Y_NjRVb@OHty6M|JvvcCX{Zu%W;Rx3&%6!v{|pdzV|PJOHC>A078hljOy z7P5QUiovKfrm9XA(*>o_G=;Xv?x;sStp0ok|BN?n~^L8fM4O#CKIxB|H2OFmX)>6iGpFH%K>kf1X%;T=&MZ9yix0|6Jl<> z^7IffshWl)m!y#c1o_;bV{Q;l7MEc8Fzbbp@^YrijaIf;?x+AR$Ax<9j!-^=q{qHg z1I1sEPUillGNq8kI*StX9$QtILON+L(f?P;+w3B+c_7gkYj~7GD$9R{u#(68uX8M) z`6dE6e2%qVaNBskpUkFU?&bK3Cr$}tzWkTfPTL7zw7NY%WdE>gaOzp&{ru7dt5QKx z^ACAAI%&5+JiI_=?_my-imsYY<;V40x0_DtjE*^uHQ|_RCF zwcGqkW)Fmb2e)tI4=*wKr%~H7i&Ijsr^J1)7_}au(AG9O#139p|L*vidYPZT&fE^D3aa#6Za-Mn=l zVph`G{umcWF;M`y3Fa%7A&9zZoD~vCcG*f%ieI9MnUzmKiN%2R3*J{MjftYT&|KHK z=Ot-}7T_d6?-`B52>_+ZN z>-4$(fI#1wj@0W|dKGWY`cWavU6CgPodCAvnfYgToFX|o6zsUu{KKQOv-D)&`LdlY zzfe4WGW_lpvTFx^J&3|x+!8S&oH@c)i8`iXc0 zaoZtgKB@?#IS3|rq5rV@A|(v|E%!S?7sZ-M6VKC^<6}XK->7c!xTDOUm~iLTV@QP2 zrF@cySl7{f@8h@Z>b~vx#OrFj`H$3kE8uCaun^IM^>lb0qN#-_7^g$*6Zz+Nu|lg~ zJu!As`e62RgtzQu(<5 z<#5Tex&s3E2YGy$R#2(tFX(~D^x97w#^ zM>r7p4TKDi229{uxNv~kj+_{b!b3g+2w4CFfXEJ7Mvkce@?Wj&x4aBP*O~W;u;V|% zyGMeMcSLfZ^GWcb*cdMcsc~`zh)%H1EqDcm@v6z^)si@$gc0QQV z>PMc@_kA5F;NYziwkAfiEz!PrGvoHrNZ`YG-oH2fBb6kwez}A#ZR9B|=P{yl=+9pe zAKq|edXJIW4kl;_w0`*-5GBySR$yCQ4Smr(zZw+25yTpS!^ofc*Z;Ts8pFXVvC+G9 z?nJwAr2y&?z5HqMp-#(|9Dm~;QIfW2sO4*3DNfmw(Y)QnGdJ*iHON5V zX8%LFHc@j$&~wWvdSab)S@;B08WiRS?DK3633jqx_45TlX(-ZlO7ay&# zTiuA*_DV@+vrm1Oo*nmjUnu`A>BKZnBPTDH(Nn0l%&zd=BMGO2JlM2hsZ*?foQ z^edp_{HXVnT{2z`m4^rJgZ57U*n4Wj#YX}{XVkY6iR*#=Vad)4YZmLE3VGseRQsoQ zWrGQT<;pTsz;J9>VTt;Tc0NCL9}pR&H~;jLdXtwChs<27zlpos`=50&P1>D}G_x3x zerJDvC-|ecb0Yr)`^MQI;QHy62#J_^0}@x&^jpz|sUlqTfS>kNKV$je$kXGF%U*Hq z(lJ4sd~#Q&So{xp>%nACz9bx4f5MUYiQ}t=&BpeYFp3!+6*OgjDfhu&Y`aid?=1k1 z5{ufxLTdzXzkI4t?lS>--&)CIJH?6yF1Whp#CgUg?;X(c0#4m*ieU0s8g z35q|khGk-wL+drPuHz${=bWYq7&xN%v3z-bzU_8?dChzCgS`WXT{*;q+)0QsA2<9bCTs~!68S*6hy3#!ctFb4mg&=ZNfFvxz$v0*G2W2rB;SG7kS#oT_ z)Cn2`RB<8eafk9Gv^tYG;xZV^R!Yh*$?zjPhscet;x>7Jr4)(Gy^dBzf+(p=i36eS zDjpAOK1~@u%k<(p;=gFCSktF$R4NC9*xOItVV#Lm3`F(O*x=yYtQwd&M#{Qb+M3o? zuYY)Tcv#J7FX6;G6&H@!yaS0Xq(4W+=hz|cXuh}UZB?r*&tx@9yaWMi{o1o&q?=$n;C;!7HyZv~V z`_HF$rlKv95Fi##c?(4y{NNW(N&<3y!(LNk`tm70K#4kT|&)EGz`(*Hq($8wERY!b|TuKJr?>|E8jC;p`b{Jnof4 z_s`=Xs{BU9U_3&s@F{$HE)YbtnyWwHo%jK-he)m4Ec7>P=d)K^>vVK?&ynDkkR5hN zb0qdD^+@~IN5^kt(Xw*F;;#qUn1)=w{f2X3RC_)WJft_tbV|&L;eyQhRY@-sf34#| zKzAv=sEJFL5~jG{Rkvn4ZCnq~dloXf1(avY86jQ6&tml{R@L4O)N|F*b{Ub29-GV< z2eN(Chojyz=SE?K?mcorvNBA?_higbDE za_r!;0ef?}ssH0-^m*?$MDb~F3r}o+|Dsa%fwDz`5Xq9C5eNtFPxzu)qr!b4CJ5FU zBg(*%-#kN%*$SxkM~$`w%4{@}CTiyACSJ-$;ptBnD72%`wL=i}WJ}mSvT{Wz2NJd- zkyc8gvtRTa?i3}dRZ0S#)aAPkSWmTGszsP`Ip=~INluYY2%wtmhw$B6kmITnqv6xD z7{dWls^>yxE6iJ$9RSy_23efmsuDy-K9$N_s~fH`adj9!SC%VlE0%MlN&Gyn!%T@9 zs-wC;)gfn*-Io#v`rYs^y4DZr%OvX}0#ok{fXaL;_otRW$AGXxQ?^N!lFre7SZ@`b z6d`cynSvpKx~nZL2H>GhUN*%_(sW%TN+9Q)!vGJX9dW4i2vV_mrz|z#Y#B`|4O{Xh z7!voo4Ej|f)Ntjv$D?sOpKIG37Y-hOWBl7&c<(U?6K;+N-0(+JIK+2o#9M`}*a3<5Ry;;KT;NR_xPd`-N&B@HF z0w)sG8xBrtr_NN@TXacLY?Gt3n_ zNtxiM;uaf5gOB(5NU*fsof4a?$Mjt@g`%Ekk@2yQS^d@_oESJSH}OD(fjXT08C;gYD6b4#@^LUrPg?PPdAJLN+q9rM_}2W= zB+Ac;(DC?X*(s?rS3Qxf%Mc>ia7&NMRv*GR#ubpT!?#tw^qNZ5_l^%=HbnI$<3+hZ z(g2l$$zYNE&;LS|@k^cULhRpAQ-yIe4%#`ga`dDVL~~Gv_$E4gbSgKhS326prlcEU z6JtFMwpIHilxeQnA!X^JfYh^*^oO_aG=2l)w$%}_Y`SfqhRKChN{V{l$o>+|YJc;2^L=T6LsGeER%RV(GDN9D$>mR2qdip3{qZzopdSfy z_nrePJvSn*^4laNI$;|PXZeFO1bOZi-%zfGT3~Yay9X?6z<_01oX;2;gD`RJJ&yqg zTzNMLr*PX%7F$(x1&3L=t0f!ju3X?&>d2`|2@Iq=s+QW+y6W8MCg}Q7u-+?L9f0~n ztrW`W<`V~Lw{R^^d9yo;^r%&_0j}6Z<6XhoMu-)~+mot0qgMj!L#=FA0VMxPDTI5S zfu{AJjkfV4>*2x6y!wR zp}Z({AgtnsmAt7q!|`#PB>z4a?*(#DbY+5o&H%*Be7>*HSf-*>im6JJ6j?jZgCl_W zpWC;OitZle%Qeij15uo@kJ_=aS7CklN% z`gEO2d0meKKooD&)w<-%$u>evO;hC92*}`{Rh&N_$(k)AGjNCJc8l;&?r1#Zp3qf@ zG9tX{2nL9-Y!6eS^L$gcX)jpcXaOi{>Fq=J1*hJJSZTq;Un|zZI~0Gfm@g>m_}rDS z6(f6?pqD%fh9h^oQ=hI@n&O1cnC!n;H14tYQlQr$3XM+l|im~vhg`;i>W;)N*J$ctR)Ed4{W zImE)DZtEe^7qH1wgau>Pr9@TW^EX_yCqZlRkN#3`q@UZb}a+; z^!y8-=BKKwc@#6L=;6bR+d6;T_AhL8HcrrD$L{4tFJ(G*Y<+rA?loElH)Wh$i@9*3ua>UP2GTJiQjGsu^3Q;Q2p_M{Ni-3b|dHa>Ua7d>i5B!dzfH@$pYd|wJ=j3fYgWoPK zSg$9K5I}_@;rWb2&^CR-YTGDWbVh~TDR%%dJ4Jlzi9LCUtF#Fv&n^5!5fiVWn^bWL zVyUnx7PfFbNI;yIoz{~8=OL2^P`0;lWfPdv)+_{WOz-d*j+c8sYJ$y6_HuG8 zKGmL9QkAp(Nv(CJ{#Uge^52TA70!yKAvncfPsgrs^FKvI?Cw&|A&#CCWsX$}lGiUG z*HQd5UE|_>n!K2*>r+Vf@3K**(M`5MzlN{p!AF9lIB#Jeaiv#R1L*&vIr1nP_FmZ8 z1Ly;4hSLDH=Pk7V(AvmhM1Dbw&JXzCeyU^%d-W2DvA(O9*j`N<7*q?Gq@8VcrEf${6w`^`OM;xjhoM!*- zMe~OnO(Znmw<%+qSJsS)YjE->2tl0f!G45WzwslRIAolo^YxYxFTU)Tayx|;FqGKu z3y9{2PVl)1hz1l)Pgw7ZwdaOT(z~dMwikS!c;dn*x*^(W=`8SUsvxQ~c>hCn$?90R z>zU|}g3F2UeTDXvbi+|kXnPAXtoMRBHVg+uduR;i)xVTgD z51Zl1U&D3zsC)@midM-?)n&q|rjK{nEFz=1F6vAB**najHVr)k;*cU;sV^>MQ=Or! zUJ3x^3V!sYO#GNp>pjb$eWu85A-l6E^coo3+Bg-ekv#bh)oEs31R0<=`FfLxsa*&} z!?CZaxXRxjnh8lhwSK0317T6-bf8>j;}YZYmC^oXbAfxkpM~#NwXRc4j86?_QU2(j zR3?KEStyK4?uiP6Y)ml&r?wa-?GxXwSn;xc%m#p^2LK%b?! z9jgo@FnH3LHf@?9x@_5%<8sJmQwJ)1Rrwu6Lk~ zE$K}AFc=$gUGQ$~XLVVO|E<)Pgea6_dWa(dpxBm11V%FPF`Qy$9o&L8fNNR%0UB5d zr*_dn4kiF~Zu4dKiyY33c73cN+2g4COa*G`5uXNJ>x28bq! zQtv?SA%g_Ph`Ce1jK`_cAsl*$r_eOz90>T1s@2#HqA?k z#;^|$@7YgtY0Gyg=Zuy`kLe+&hQrCivLWb209kwVJAD6|;6PaldtA_Jkn z82~L@Q&Ns9a~i5LiofgqE&fR<1s5Ss%B7S*B1GMooYuLf`jBL$ce znv8XkGi3lk%LnA9<3D7nL(pae0JWqTpd&&Isa4c^FgHBZMP7`IK+zfwh7b6TQbPlY z;5s~pLKu1n2?oNnzUcs!#AN7zj&2|Y3F3NW08|lCpou}`t`{NxEkHQql`Iun1Uaz{ zZo#A0(Dtfq`Ve)@ioNwa2Lu=EDV5OqqfUrnSA-x3<{!d1%SL)egrcGy?(-iElNwA? z022-oz)}qndV2a$;>iF@4@8IEen@7-IRG#%5D-@rW7xMJ?)?o6Imdg;P0Iv|G#z{v zcjK{PL;^(z4>)AxEgYPQJw&hapna2IBF&&^alhR}U`K=neKZf-3Kjy-Xk-BLM65s( zAudKt3A`em1&r#kp+}T)w{i`@EstITED(0Ie+(|_$PK)*H{*oBlX3q#h+Agw3l7mN z1>(EgaloLT!qZV;1Nn770{}=QMyZE!W1i#?`%f}_ zOsItx3gpFT1$0MIBFkLeSZH=q)w2$va<=9dSxW?T+?xl#FUo!ZAs3oB zcb&If7O+GtV1k}J8~o`Mj^NMXk4 zwzBy-cTCkLD>hvswQld9GWsv>CxVaoqJho=PkQ7T`xY!ZMK*bv6A94t#XpM3nfZss zGP!XuKT19a-yq(2F+feIsNn0!r7ff^LE+V)4pl4Xe_IdNO?^+#QkP0*Xf%enkAvG~ zb_+1ViOdr>eG~?8%60a5sz?-Z={1PsWZJq>8C#qytaSz@dhQkAs?CRq%k>DZ5ZCkz#J4tNQ*;hQYDs!*#&Hte)8owHEFOochG|J~XRz5kWA z#aY8W-&(2bwsU4Qk$)g8IxOT^->Y5sV+6e2ncC2H0e_P+o_IG;^Q%e6>t`%{+{+1^o-6){mZ_W7WJQo?zZ%omG2jiH(ZxnJD8#nvC@X3CSqf91}z2;2imum-MhLonNQ7C6t z^O^Z&{eO$UkI`@Y!cgCvDJ`fP9Pshb#CfzzV%rspx~CkJOC+)PBhhowwaeF_V_D_V zcd{Q{@r)?Hk^*&!Hn1yvIVL_wrPQ?yI)oF*f&>uI=xaPdSpb{>CV`Soz`5juY!kI8LmxRu=H_-}H9>_xImoV;Md1+$^D4zm#n{z>}iK(}q7Sb&$# zi5ZDyZ3hWmieSI&aG!WggKQ%dIm1G{v-`)WwF|VJ^E=UCqz?VxHy370*>N`;8Qd9h z2fi5Ubm_caK4+V1&xKf)djUh0AdOSo8<1t8$>tB^;6_%}?eBs^&cYc}xR0T)fh69k zPsCFNB+&AJ7x-&k#Q{tH`;kE8&Jz{OW;(^l?`lG0-6V2^?L=(&e4vWTimz=KF{Isl zzEYG?GiC0YoyQ?dL0d=7m7<`Yr`%y0x>Gjk@u_a0D;@$r@$(0m6p4YsLg7U-mcy!) zg;U*{ZzGxMQ6(7jC2wBys@a%Mg}arKO!1bhaP)$_a3neslCdJ#de>2fe$3$={)b7OS zAoemA3a(weL3`ah%vkcnBw!=av`X@meW==WHf((JmyrM#*+^Z-f+VQXjra*P8mqZK zZRRRXnlAKyl5 zM66O9!QXir`Wnnq@pi(z!Rm#`kns}dK0f((Jda4&q+az*X?*dXAyH{`K&|0MK_qyZNH)~FdjUsX{xhj~k(%`D&b z_Q!Np?Yk3jjMReZGy}i!oc`aBiS}GvH}Hl`V`$`F0p6vr2H*oJJ+o+Nfs4LsE{ppk<;*9875}m^oZA7gplokYEB?vNV-Wl=GPg;EdnXCDiFE<>n~0 zVmma~k`OsJ>R&2t=QiA`J1o}(z4LCgtgHCv(%nlt9M(j?7rpyI{MvT5$xXfE`I>KE z!n=nj<1Fa8gB-kml@J1H(R^{wO)ZL0EyABLIH5!u3!i~J z$tv~Lk7a3y)XFc+=l{68yvbpf&wx1K?uR4PR@HoU;Gn-Yru8{oDM$Z4;~`*{V4r)6 z*)LP7lDR!O`DXvPgz$jQ<0BvoZiJ>RRZJfg*$RDu{fJ(`txZo$`d$X)&&J?@SFp3whw^`E?mFP!3GW0^ZRh;=io!|G8A(&Q6pxL&8+ zAj|zyK=v0)*%|0(b2+}R8%h&VT5e|FvDIYX1UXcuT4@dojK*jE#%ki4YWlbv()?$`a7O+j~_78Y#N5B|B7cJ~#c*qeAivB@<&8vI)a3 zag0c5<_?k(!X@f*^#GBxlg9ge<<*v88v}Dk1rB^S1i6X}eX4{Ce=>(&GJRflN71B@ z;QC^iH#z2cKes<;fhmT0WF`f3M_*)zY-Iq+Kb`i9ZVs|xX zv(fM@IYUEuEWVv1)!{m-iueNWlF8a583hc$aOgpLTsaiK> zHwF4{bF2z7)K)Wl*k<>fm69b=D@GeXXeO=WrBDNK7_O%et4jPpP({Y; zSFfwLp78`nP$SBo`K)+Jad_wzFIPd;_{eR4=3@QnIG)S}L_np+x>;#?hE!g8fsuGw zjP~%tUJ`xfLfe0GkCCis!bVNE+aCmLy)9M2kDNp~m(K!HHBG7eTHQS*$ywHj+N z1q;Thh-D(e-@=(&WPCj=V;NCM7gGK^@vN)s8tL!YB z1Ki1>%@U-ZsZ5w9*^Kbd*Ub7MJRUM%=|dOb+gRvByO-SEKf}+TELN@!4KW;5&G7Up zm*Ss>OEx76spi+|E9Q1~_^tgbS^6DrOn+^N`g6tjWcELL?VSr`JiFic2NFBNIeFT) zj@9@dB?amE^JpaIKM+>gVZxu5Lx zGfsGWo0~x9gD5?h8}!jvm+M4~jCDa|tZmQ6|9;j&#%6W=Na6M(Ajr+*E9CrdxBIhU zI|s?6CY@&tgW=CUGPsYEMT}nVt^VDt{GDr+ZPl4}DakR)T=wr@Y2k`X=nNDaNr)LZ z`7;EY8t85nEG2vw*z%ltdF8)i#E;E`#_^?Ikt^;Y$DPyOAi_qUGs(BRDX{dixQjFr zml%c?iSjQ;1=oREy8lyj6<|$$Z}^UFtb>lhMt6gNba#Vv*9c*wVbq!$DI$mp2x51j zf`}5fC<-D5A&T-t0TCor{`)`ox%ckYIp_Pn-E*Jkyx)1>TSI$$&xSRjAq*R}^Hjq- zA~VU$v^>m#BXo+i0MXfGzx|SQQo_@AITpH{p+S+JGQ}hJ5RQXtyvB#HwSciW- zCxCrVNLA>hPnNg0EnV4Fm}4%0rO$3QSVuaXJ$Iou^X(;baQEialb`%HyN%4=(YClI z)N=8?C}lw0>~y@n?U&5dzI*QjF4W}p+tjz{zR0~Jh%!^6(AbX(Bffk&meqUjda2fc zdET2KU)wkB5f9Jxl$tEVIJ--P)zO9reRltfwt<_F|0iU+jzuV1c63*2y>Q&ww|f+P zcz;X3?R%4`@!$UuzI!g$P>1D18P*qoW#zE+Z@Xi%zz7)##|yQ{f*&b6`R zm89^YfhXv>7ps6NjLp3w;dVUx{;^5iI#}=M2Sagux8dcHm^mZMK|VoIPDA3GI`~PY zp{huAegMpWLDHfTnWr+^CnQu8WR8Pe_9718dE`cD27*oo!SL7YscEZV=c5 zrpwsBR(oYOFkN)1@%-hi(t~kG#G=Tj9=|x>)7jr_?CvF?tw;YRkY;L?nwN8!5jWNcK~_hpr3{( zZTY}<+SL084gSv39Aj1UianmHSEOD`>o}s`l^=$B z(>&shYk6vD^L=_LMS5gan-*k2Qr_CO+^%s*&~Y-3yE^nn(EONdg(Lml$fr3>hIbO{ z!FD%hJoErfBP?7NcJqYxaMLsKnmFS(4ags9#^T011se7>mGPZ3_f1E}GT*M8UIQ^z zdS~Yju5eAecIf!8_u5jnr4JQ+knsusDN=-4a{6VN7f77|UruR?5#~oPg_8#Uat$>2s!YF3y|ZK~qET2WKgJ zG_?~?%kR$qsj05L(>1;Fc^5>Mx46omEfuLoY$$+@7DhTUTsj8b6ME^J7O&>4NUhF5*d>-r@m@-wVVpg1cCc$G{!Kxs&FWc^Y`?SGiOJHFkI3zdK z%|&wMafn{G%)+ah7g2MHTNeH=t3Pv{0wTM?LgAh9Z3PeOA|m}ZHB&x4n6tBdsO{7L z90~|lVp|zplY~~MWf#tIdFc%0a}w{vPQB=KJ*l4h?Nw9Kt6M&^GHE0KdFaCEe33}C z>t;_p&yW60DoE$jXEPsxk|!#!;jhL=|D^|BJ^@00LPJE7`IL?&c0Qda^%|Buok6_v zAH%wFvhAfQht7JfdovNPBbQ?pj2u&)H~&4q6L{<|E>`asxD(z$iKWJfPHA(h6y8RZ zBvE>6NzyPn9P>vZTi8>>KHC8QL=OQUcrCv}_kAG}>nb6$O%yY}n^yn%dE;Tf-1I&+ zCQf&m@-lW+!5b~V!6%?U*Z6UG*mm#1M2?FTdY<>M<6HkUdwoM{rp2zTv8*(jz4; z+4tyk2Y};BDXnXXx(=yB+Sb{AR|wKJdKYWBj{9%i7!qqn>itu`VD)>`(BsRI<2?Zj z=WCk|SaQ+k5nm2HpJ`N>vwY8vc4!a(BC=kw$&OQ|{wq*FQl=K_iz$ERK8>ERpKZ_Z zRM!>-pBBxx#Z|q3{i4Ft=!bT`g<1DhmwjYPlG_slw><}4AFvO=j#Q`=1wfv$zEG^j zr^Gkh_A0~M{`}LLxi)t`7xU*!=0An-I|sgs-VG~!;MbXFYu$c0U+?fitsm<{gP&dM zO@)t{aBj%o#B+xmm=vQ&HtBS^_hNelByC>;*saEU?b3mYlk>41YnQJ335Je*7|f8IAQTRW)lT53`7$d)n@0Eh zAQz9+ML&OHd#O^S>wJJV2mry<&O@&*>Bj_`gbB=^6xIj_i{|39YrlYg$6+NCof=Cl zjcy&=Y-i}LSO0#V&>>}7pOzsJML7Lv_Kf79jPd=2OUO|2=qnl$)O<#!KkDl;Yb43a zZ*}-(wrrch(Wt}A4W7SaKq2h+JXuhdR+Oj3P5mL@VP1VjwLvMq^XX*Ug)(vZ?IzCs zQPn6zeeq414e?xxtK7`!uC!>Vc+YB~O5fx5y4SYX9A&*9RM761_H?l(vBYg-=gzMhm({l~zb^Us&P9$6{A$C8iKG-~E3pl2@!0r(I9$WJG(v;AuYiys} z-K>VD&Yy;BIzYm?&HC2tUk+ulm$Nu4Hs$K+L!XtXexFY^d|VSs(jQwmG%)0RTgkGa z-}++y&L~*u(69DyFKH#AZ9<7HHtBbpDoY2z5sm-Wn@?Ok^GU|%WFnOV4%qW`?va4j zmd>kksK=(fdOuxmDB9q?m@&3>%Yz9s(!bdJ#Ku9WAN2*b$%wG}=n`Ll@vw}#T!GSJ zY}o*yS3dnR`FVlw%_Mi8Pl~!!%*_3v!)tEP(GKzBpr|bWZE}&_8fs`9IL=L>8$hBOYBJc3|J6y1ZA~%|v2mXUlJ#uiMa~>@ zk)vukHR|d=57wyPbMs?({__)|l0Df|i8`_!3G$y#7^W3{lb4?4eE2UQ`NX-XA&pqE z*os>S8T#XwQ=cU7Sgndz5Rnz<5^lUdR9<&Vb4KKDeF?s%6FnQO9}diHi;m+S54FXH zUVaxRovXo?*bKV&G1O3CrNrIC2cskvmKEFxk?ndbzg*X5RPt8j#j6%6Cl_;uscN5R zf)%cDEL`aH3C7uB>4J-oTzxTVx9==~GH!Uq{VA-o#M9H9f;|oNcK9rMu|M0xPfu>U zYZ`Q1jkyVW=R>?!?N?#3{pypO!%cc--GNxqc>Ngq4)<4y?KD*zvK^ zQw-X%{;$pzw`LRQXD*)!d&Br|?A&SbJb@46zeIDdkIXfk9mjvkvApROc_=YNkQ;G& zeDiQO=hm^yk{(-*@0)~QVaa`6b@zU74|(LQ#QRJgQ+1M;Qr={JY4Osy>Ol}6I#^|C zZ`V_IQ02YhLEK5NV*888CcUbBH7&Cf4yN1lJgJv80H}+KnrFHBhgpsN^BpYDq%qu8 zZ}~oPp{_l!_{1(ueqd$x0bYHw;mEhG_fI*7URSfQPtqeNM6SH;DPDwf{}HYlXer#y zJh89zR_BEOwZ~5-B=h{!n(gUoJ#dw=w&5z#A;o5~gdUAZ3%TQwhb@JCA#?kmRc&4a z6cuDOboGU00DXwW-sTng+P zIAf#wsJkoB*>m&BSCIvkV;^uQ$QSMVNpgU2!ih8OfA`mT`N?HJd?gjWVZL)g^_Jy@ zA6GS}NZ&s#n(iF=i+XX4admgn>CXP#m$irg-dV3b6LViUrX=XKn%(UDlMBY+tEIGV z$9>2CeF48p3Pul7<*!|_Xl^J-yov74s@d-*ednSkDRt}z6u%8sn};j|A>-QRxWvI3 zher=*V1U`;l_tzFXQ+c+j0-D@=kwgGpaJ|?V&&w4mUHn&xs$DR`WMgHC={%K+xvXN zr-ZWgzQH9Q58hy)FC*TgKi)C`d+VFm<~8sT1 zTC`a7+TyK7R)$@(+wrQ8W@$G+i7AF2MCADoiTEZb8FV&040ze$51Eb0T@wcnUVP=J zsQ>Urm{?K(_UYx?B0bKxAB*b2!cX8mFXQgB^zCBeAfsP#broN0TmzO$&I9#-PIt>Q z)fQe$uiMD?0S}wxBLgVEe>keomB^AXd%CV)?JJzSP(?eFEc&UMk1kBgg@^^j@9kB5 zsid$k;%Uv>pDBf1%)*xnOJ-cdq9^yddP_W3jDdWW7m65lOpc<=+e@e)8~@$UUzKtVz?&RiPVZ~Dk=F`i6y2rT z+<30qnvADc`TGf-o$T*fBn6-^Y_C)V!6xRh3VDho!>0*+e6OEy0&+D2^5kZ!w>wV{jJSO zA%5<(%*uIDbi&pH+@!;@5ahJS%Mqwp58S&-vv1Lyr1SX^@PWG=oSk|O zcaQzBu=8TeErWmw8k{66bl*hpb}4=Rje}_`EUIb1@AJ%bh(R59BQgPI%i1M1*A&f1 z=kG8yX2kFwSIjg1TNDa6zGHeM5Ywi15%0DKES!*ka6s9Ad{5cJHHN4h06KY8HEsFO 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 E56P5ZNB{r; diff --git a/obsolete/fonts/xerox/Xerox.XC1-1-1.Optima.Bold.Z b/obsolete/fonts/xerox/Xerox.XC1-1-1.Optima.Bold.Z deleted file mode 100644 index 20aa00f40fbf0242e318aae95ab73a26a47273f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152955 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±nx<~ zl6Ja4${!kijat0rJy>brhJzWOSf_!;#(*J**CiRYfm0w30E_FULza>Mk_Sd#A=@e( zB0Y_dPo^2I+K4vj8vI|3c|g`W8RX62)RI%1R~Y3*-!6MNxN-3vi%!VNSklHDllLak zf$1ARR^}VEffM5v*?ij!Gd^z+zUtKKZIe543=L|^?oWQ0{5bi3@Ejx(z(FT~K2Cn0 z{4x1+^4H{llXh0OHphaq41XGfrY=Fc$`5VW6x(U|4r~a51sa0BP5!ZLDKP}(G7SMH zk|DtSF$9=6$bn8n^-?g10Zm)w5#|{fX?SI$Uw#S5$_ml_WP>qi!`9!EtksVALNFAx z0dz3Hr*-+%o=X2Izp22ffT>_0ZuAS93ZDv@ikym=ik^y^ikVsgY!DDYHe6Ydm^76# zl{}R;l{%F%l|GdP>>Wky*;<~#AMXe4+L|Pc5Yp|Ugb|DLg}cVeD7wl2eEK|pwB`!u z(1lZ}!V=1d3BSbb6@|hCVL9%ciKE}mvG$7FV{gXpjg254jFk%?k2MRwjCF#=J|)7) zO);=CA=Y)T4kNmSA+5Eo$zdo63MANgqi$i0RGmP+E#OXZrbegEFvq6; zaPOHb=}{9g6QZfT6CD8V>kP_<&YGHI+Oh>x%BlS$s;T~L?G&*ZZ9t!*59fe025-j> z3Z@(;EL25txWA?j*a!LlPTe_W%ifRLJ9S`c-_)L|{Zsomd#7*!cCDpn_2lU(Uta#? z*{L&Ar=}877eL3S@_i3Z9i6&oer@W=)Xk|IQ@5vfP5tt@K6Q60(td6#06>Cc0lwEa zrX}Giq}+Cb_c!Cs6thIc>#G^UE+a4YDf9Ip|6Fv$!kbL>c?@1g&a3w$GfV7fw`zmQ zsI*Y>gX|1=O1;%^G&$Szq1XM|6jnObgEzF|GZQ(TN>0p7C--~B;IhaTo$c`CWVg*~_$$%)*~dPc?I%woW{0QbzV!f3Uuq%u1^z4;EWD%=3TXUv#U)o5YP| zUGdf8<Q~axy8s+RAm>q$DfZclnCxy#!`j%5?a2+H@!*bXt%x+YubF zWAIa4z7IU$jejNGdU<0;V)KT22g$H_P~} zK~8b4$JJ>lWEK>fx|0-;UtmjQEdu;sF>S0k7a4@A7u5v}ltEx!5!Ju0*j5C+LP;D> zg=j#LtUua9rzY}&6J z9wAYzdX4%LMyg%~pY~e`$0q@^a41w_BuSH`N-`wS@tP%>5*Z|0V%WAyvRe$7U{Xya zt!}TECBrX=kF~xw@qt~0UT{5xStmhs#id(G#LX>%%EaDrC%Cbdr{tA!IdQS%8nnmZ zI>IAI1qUHpB|hR~f!PLYy54&ogZoHk;9lO|rqi(VuB|~<7)xJ&$uiet=|Pe=9#N7q ziPLf#P_92NMlucCXQg+Hmn=g2)kyjQzAtq3wXXk}8i0yGcUT96dpLWAfxJ$Ko7q0?e{=NiABGN466kr8 zCpj?4X^v&^Sx&6!4eljQ&^R>pD(7MT9Dtqf6ZZ*sNhA{}gZ-R)(}`_gSzm)L)#glA z4rAztC8ws2NzCCVBxu7^5@N_{$#cmy&Js^QYXi^?PEgDh$q`{T{2z%=`whvPi31WX z<$2Po$)}Y^Bv8mh$#C*`?i0xc&U48#V0$UKAbBGRntmrj8B}nG5mnrFZWFhai<4rd zrqVhtUW&_IZC=S8HSXkY{xFzcUIp8oG!+0R|@jB!9&@H9XdmFDVEtjSl zp{LAjs-$7yOljRxPvf;^p8zEPhK3THTs79)>@mqQ{ra@{Pm_LYG;U1eXc*|(r z7Sr-*fSv9L?w9^pG9Vq43fGaP34=q@XJy4ww(%CJ{a}MZ94Ib&d3p5~lGG90Bi$U`XC^B@Lx5YoEkdT`dDH^4Tp1RsaM7!1;y^3{by@0i0Mks0{?S{ch8oj{q<>NYJjpzqVLdAwl}Q)msuEQmIV{ z3c#SFfhP|JB-lCzFlTX~$ozm1JctiA1vt58pw->?HkgB!P!-Z$(8jfvpjU>LAdI;c zXunhpwF2};tU*~ot=6F1029~-U_sk}>Y=uvT)G%)2Xdcs39$nhz;*!3*dBC8YTa!Q zqJUgN>_INwHX#lG-`5c+&k=OoY7wXysCyCUx>ZJgFStJX`<5<)ntW5+B>;xQ3{+0t zZEiGPGWm>IL+$L|xWuaSrl5g3w1UpBq%~8m93mOYZZN2wy2>ir<4^}5JJV&D-(}ggj+6KygnB8@3M9MH_4yP?$Dp+Rr2ft9>-C* z&b^4NFC@q1SwtrFM_D(03F|I9J~klufnbb^XMJ4Fr9AJx=d^ok03Q$)5##*ZWirT_ z+7rSf(^R6g`xCu?NsnwRg(RzD&38w#5TtU}a+`qQEwY#06xng+LU(k^L=-gbZ^Q*k z5A}}U=E~F11h)pOa=1iBM0>>d_aofIGV%Ic_Eze~bPAO(`_o`d;dI!tb};CpJqS7} zu@~!~y}Bg)HXH1Jg|Q%WW?hpO8fVed8A9qxg1_xy8J)k9PU0RT$e@R0fYV2rxzSI^ zJHbX-E%meQDOqcGZQ5B`C;3e6R?Y?GN)PQU4 z)Wp9Y`*I?NGAH8_`bmXUL-`^ji2S^)h&oPX6!_cjmHmXYb{~*68ers%4xIe%aAZL? z;e@Qv*h=nXbBN%7UI1HRGcjVz>Y9h}%{*eI1XRvcnwvR5*-G6PQrU>#`*GSA46 zv)FE|;r?y>9C@Mfnc6%#nV|2!*S&^dBJbh$K}zJC#YbeO!1vQK3;FHtI~g@{U3Wr? zoxItpQO>j9?C{teI6JZmTW5KYU5EU1@>JXrd*7 zE?#eK@J6;<{>~(q{SrSc?;4Af4|4t6*Ll_sb;6_L8Pu@VhX)?k;S+@NrG&TBJ7nW> zGlDhI-!_1MUiO?Rm+zOMe)pT{2Jhgh!PcR9XuvQS!ZE!n< zIRy%FRE#XKP~0S&0s*Vo7QU}S=`P>u*6Tb3rU<+@vrbVu!mddNcji3Qf>xXRPH{3nD_$N6#3!j85wdKi%rbzy}dQO@_u%V!_#TVmcE+8%Eb1P zqT!@;`_H(iUJ6@-@LKP>25U^K$;s0H78`h@O{CFDtYvT$K}XGdP!DLgZ7q%$=Ij(7 z@9bn4+Kl)Pa;9)9-+R}z z?oPJ3JJUWZbaCpfk#i)!aJ!mr-mX=5WHM+Cz);ve)j{(UrHIyW*~AXojGc<#NRx`* zWC>O&6nT?3(P~9T)&|<9>t>PS-t-gLguL&f!vCir({?E~)BaKn)3z(-6=T(8+8nU&UielqLQ6L#(ZWZDX`g{# z)-#4_7^el=m_yD)A%#tg@Y+L5i_8Yr=miS2!9~Tztec8!3WV}a))xt8(+1iD1z~Ih zZJ>FDJg(i?{;nj@Yy&NC;)}w9My7oO%KHk`Y@>Xuuv4CZqfJP(G9WBU*i1XlC(|A& zPQdpAc@8QTXqgTM%2SGyzGoCq84F_&H>EA#x_y zR&SssDXZY-$`!B}9$1az&?7tJtOd*`QU3I^SeTlipB>}P zqB2F9p!^%CIaWEPSfNBJU*c~l2T}3LOywnI6Y8RJ2DsyxO*qhBERRuGGpA-I4|p$y_CNiy(CK@|B=_S-bUZ*65?XI+CA=PJmZ$hx9X0Bi(NC5wv=|1+Tp8;_xS&@&15H|f8kxMm%uic8hEx7qLP|Y z6A8x!jdG$aRB;3)+Ok#rLHSnsQTa~ktMXC(0!JXtKv@hkxq$JAnxObRnx=5_@Hah1 zdqLgK&$DGP-cWB&pQ5Z3F-UjmxguExWn?R(FMGMm0OQ`;ItCusz#uU`G`Ycvj8ajV zEq*cqe+ISKK7QzE>NWH8g|g}l%*wp;g&X`cFscFDwdX^o3m4np0vn~Sgc2DVm?->y zS_9*p@}zH;N<8|%)N~b@@jt!=;AU$NAyIXP7N2@+`X2^|`=ji4)r>4cCF^Nc~l64n-#RF=hY>{U~eR7#m8i=-meU832n zt#7zDm8q&_Y*6)t7K@Hn+)ry!$-7}4VA{#-1bl$W`NG9Os8v;{Oj0XcoJcXSa@8SK zMDGTeL-PZK2mf1kTZJC$?Q2duqxwzl5!kW|#!5^-7gsY>ssa&X8D(UMk))a{elIR& z>?V;MV^vJXc(*elN;Rb7t3p*HSX&O2{!=-EWvN=zr^C3aBI>B>Fs+m9#(JX4R)|zL z$&;$=-f7joVX3N}C09MDPgCWKGF0x7Kd8xVo4rCYH);2c+f>8>B7+=$1i6-9X8QnD zta?n#z+_?O>)qf`nuR(BW}`k|Xaxj0CjoD!PQas0j8Y9yM8;)TbK0QtQPM5&TG2

    aopyXgiojUbaLXOpAe`P3G$n*;T5Ek_^n*W#9ZH+UNnA4DBkCINM!qttFI#roEKs_c9jkcwSsNX94Rd-c!DzR#n`jLvPn(WS2 z%WcYoKB+=fbk$$-H>y;1lKO+ni7=@aslTZF7!=hv)jx~}s(dw1{adw0ovdn0PgRww zGwaIKot{6a*j%{UDY-`N*ZZMK2qQ9tKr4i>#rAX4y=oY3cd>mPjP^XkkW;4GuTsE{ zs|)zZt|Z!3bzJXXuyaG^w41=ON|WGf1uRR|>3LOkAvsXZRNqu(izKRhs+|p+RoA*6 zs#uJtg5?Z1mIWt4eTc?UNz~AB*x=BXbj3FAu)`tFQ89n?BI9;#Ch;QU29reOG7MRp zL>!VpV9a{NEGZ(e{VI3Zo+iHTDYo_J?1U_2oMGB`okqZk*VGlTcis2GeADf_01xI} zGsgB^_krM}eh*FtY}~D?-CLWK;yX-Z4N`;Wz%(S0X2n;Yl3=h+11P}Of}Qn*GyBMc!!cPyko$n z^+EF?s~&tsY?|hWidd5+hiS4VBQ&Q*qBM>26&e{dR+Fa=PJJ|;qzTc8RadtjWWh8> znxmw7pxvu9a1Bp$quvXY+~#lUqkdv?%60^sz+O-71~6t$1c3Xlxl0S;Ys3o84qKJR zhLDAkYicz0nw3C1#yd|;oKx1jHXMWk z%2SspTR+W_%0bN;T8d`gdqlHUe98T==F#-(%JYo27+Y0+jAd-!a)lMxL&6}e;4YHb30Go*U_52#4HntwiEsk+&c z-|D5!!c=J8;6B=x=&_o=U>Df|+Kn~M+NeHc-sUB_RF zZwBhSkEqb1O|ELq%)PX`Exsf4)Bf7+uriY?Yy*^w$9?rM0-O6-J5m2>YhlMt_D|V< zufMcV3Q4hl37fZ7zW3T?7cg?3BVd3LR~&-2x)JBa1}31%)HX1RCZzvB&bxLmNV(5bljk2Xra zDS^}+iy7~JU-({o*UU|~SNoc>U%N$XJ@HL@Sev7zYTx#}aP{}v<}V^I^IW5aTC~85 zw9O_b*v%%c+D?-SZH&$fh^MufMF|M0)*XG>ssTv9!Vc3}>b3_w);4nY!YrkHFBWx2 z>Ko+=v9s<_E3H-G{ZX5uWf?uI04cH}j8clCuQ9%$h60TY*JSj7l2mte>p}Q_tOZyrUc`7voi+DMU9Emlmn1srg>c$a z=+g9eZs8DG+Ti-yD@MFt!{*d&h=iSGPj>oEzFQlZy^i0KU8UKri^sQQyJABp3kFOO zR|?*FxdT^noac6xf}?@07VE6;d94wjMOj3}Po9AF)|HBz!gy=OmMQ(xCO=m`=dUKt za^I^UWz)Jm+nnBQ;j0)5mA#5hq;fupBDFE%Tl{qy0`Rf#uC;Z)*I48T@ELQqh?a!q1w~7A4Hd3=^Q3!ymL;s*ZZwb zqm48DPq&cKl05^|T`HR7gifYeEuYB|tExk1yk}&bFA)k3Nu47&tqX_jQb^FZz&g%K zC~9VwgPD2Xojm!cCMbLd=ML3+_?8Ylc}Ev$cTYE|+E03L;0`H0 zGlk+mS{(=CsY~eegtIT}a5JU8Su^G{J6Dae@39=EZQXA0a;{d_u5HyeaZM)mihaGg z=})x9=ntX+y``3DM|Y5xq6`Fy!5LrO#oM8Nm6dQR%bA} z0eyOgJ)@30Jws4(dtVvbN_{i{R;0C#3G~#cPr70ipj$=8YR)8=bIWELO>A_Bl{x9S z+%&H*qMxGN^w%@o-e=kuGuAp!9v!O#0ng7F6zk~7{n})siXg5=m?W&T*Cnp=-Hb4&?N80K{5LRh?Mw3axCFD$ zT)~WuS6=#272JOh)4RY(@201ZTCX||n_=vHz7YXGZ* zMdf@h4zhpDUF1=~GoEpnG}lDe824tm9t+>?>P3P&XoygU(d0<)VP3Nv`Q`c~v&2L)`0pP>_> zD43R_huJ0RSMk5Qpkla_B9Kz%dRnc@r>TCOt04yRTcVP)qrXTFjtz?zf#@Sol8y* zlj-aAQ~Fx{9lBcYFtb6g(-#iCOQp#X`g|UG5}S*igo>6s8Be@NQT6u`JNzmYYmzec zMM2s%nffx59exHVFz1`D!0H+DW5OxDJRwHEbH=D3hW8uyOefbp)<4p_aGW_xy+Xfg z=9Zped`Ev%e?vc|Yt`>2wd+l0PkMEFhV&KBoR~Q`1oX}jcJi?%uzBOmb7YVDW7Ab@Z53x`Ovfhalhb-X7IvUId&pJ#x&7vot&VX`}laI6(_Q=`T*(&{mI=dOG z*}NHxS;NV9q&u3my1vj1%@=XD=Iu;A_ckVp0ZyvGU+THs95|W>@&Y~X8CFA?dfQr! zGWCP$X7v(SzxyVCC*MSyk9A^nuf==A*wHVNufp6}tk_tO5$DWy%$Dlki;ff0Xa5AH zXtHKW#2cEnS$BPuwwRVGn)8kwJs$Zta)x^52uRFm(CDR^Sbc|fJooermVX;lU;JjKRNp%Lc4p)3`B6jdQdZ{dsfLxaeX|>8 z-^}dLPS2PnIA{K6n!t`7%}ij_RQKJ?bdFSOvM@x(F1k41m6zC+g-NveI?x%!pQS5= zvukIM&A@^2cutQ{hiThqWwV!O`)7Z!RI{F=8MBtDq}l!9v$OJ9n_Q%RQ^MNx|4i+5 zpJxhZfqv1P@s+S@W^yQ2EqmxEyVAP0xg^>|CcW}jhn`73J^OstMi)72t1C!9F|$~o zBxLd2#gadpKp-|?$2S1IYcjBPvN8l!`tJ$^gKmPN zP2;9wftCJc6h*_k8eFR9*dBk|>aaP6+ezb(%N~PYSX{z4!%j|w&K20V_sCo}gr&~4 z_VANZ*x&nJdN3;%`0C=##bfqZ{5lhgw@Zzo>lXOBoL#0n(;g-CAd}%cEmD`eo7z^d z%ZZ$em4dro_qffgYYHJjY9)* zXFdMGY?@;-9jFK5uA&db#o_LOuC{iiD3fS&v8KXR!+|y$AKw=|Z+`knuxTIyZ-<|h zX}x?S%`UgTh9|E4(|3;J?-uDxR-Z#K92IlXNpF^E=462z({@{6TJ~a^akF!;QESO| z`oFXO39t6wK9_6q*PI#J0Od*9Ha9zW*jtR4nbXc;EsxAC)guIC^@+Lkk#7|O;8Qj| zH8(N$tFxJr4lh(q&++FvCeCrVbL_clBx^1XXI7H!X;v~kceOQTWz-~j?mA|0?xV#O z(mxo4WmAhfg*123v;uL`xM%M35FWN+?#o;e6hBz9G;OesS;tJ`{+T-{SSGwb(&zD; zz1$@x-aYd6&~GA9)dFj*lks=)cauH?Iy<`=d z_W@w8i_ln*v$GNCMZB?hI_u8X!paXO*T( z)qK6?tHPeWZa%iRWWH!VI%)0vhrYth5U+atG#u|DTkM&#a=vV8g^y=S#yl=QZT^wq zvF?@Hw!@8KlNvLh9JXRUcD_QlYxLB}Hg59#X3j-{RpAd=0WfP$Qr)aA8VeAe1N4n{ z4QnWt%6$`!Y=63HUNe7{shzJ*cS*m`wQ1EV_D#s(KBF2uyJhgk^#emkm$Jg;Gf`jC|&AeW8nN0 zQ2737>C6&5s)w1p6B1j7v zssvRa7-3~L$#s$M8qUk?3nlM3H}F(RN#@43{BvKbEM?D~1Aw(mPqK&FcH=%-xB+;T zlr1HXk?S|^B!8C6+wuUiNp6}f+lZ8XE3@6$gG|a*0@>D^Zj$pG$lKBhw$^1c66oP@b=xL6cMOA!0GF(9Ba`Kz+l}v@%G;8&{~6gY zzQVXr#$I;7w^mjOk}1b0RXwy zrDs3u{V(A*SSGrj;!ee>i^VznmlZZ9DnZVk`yQWBY(2Hb8cDt$H{YUZe-ahIjG`Jzky!)T~l5IkBn@fV>-(U_)92q!4w5A(?5i!#*(0Z z8(bi`1HasUR2`7hmV*v%xZFDRsmeOxN7cNH1NkiZ*H)D52bpE?7>d>_A$Lv1#Ouk* zlzfq|A!|VCdWKW=TkFUq@F?~ha0kim#tD^E#V0o^L>&0DK{wP~=DtQ3nF8sT*&-`- zE8Y6ajSc#P2FZ4jvrpQeeJ&%2t)J>t@Rf-=TR-(3fjclZWhj#Z)*oChBM12oAJg$A z&+WQ0B_~gwnwYxirg;tn>7R0RS2Q{Yts&ch`IBUxP08teN1TK9k>B>_k%vxho?@Tb zI`wD6lZ5`QiSfVOE+v!?R7|~;=YpcUsUufT0>Hk|NCktbGXqcLX?=y-l{Af?a7=2${mFNFV?p2X)(hE0Ih-2OdE`9meG7dWb6r4!rF5(zD(j z4xZPhS3ZI+0vBX1opC&1Gi3wq0?+#2;Jyix^#`8FM^7D!N1fdwOWx5`oB;0C;WLF( zyLZa~4d)7FbwT%$ABmj0FA5MqsGtBc)D?h0{VjfXg5;{rbr*ARpWapU09$;qMUNE@;O7bqir13s5xdJ9~u7Hc28!)Z6 zA0)W%2MO&5fsb+rK|;GbunFn`CQmSVfxLMya2wvh&a*yXJ$=CCe!x+PAF##PA25Is3PWhkgAqW0W&}tOGuYBI+|X<_3x2yl^p{x6BBe||ckS{I;!38{xyBc&&9L=`0VHNxE7vXWPjcHdefqk?dc&@iT*Zsix3!FqAXJ~qY|7u( z_{9`At>-&1eP9AVZEG?-{nY&iTF(TAO0;~8o0xuN^3A{~>elq+Gy_YUzCnOwqC`y!+{~)%Zj+c}3D{cCro8bs3w8+Il(r{QC`F3C^1S?MTCmTD0>+q8CEmQW}uBag*KW%yFe{ z<{8;u6hC)G%P?yXiXPG(a*(1Jt=avqyu7Rp6WAOm(a!1QGTkf{TFlP7b0Xr&>Ep<1zJwe?F4N9jTT>mD_a&EOtGGA34h0`*7s1 z>K)=A)tMw|(B$y3jBmZKEMfK)?(eN?hgIu@4beFYhdX+&X&0s>_-Zypci2_j942ns zt48y<)PvmP4QFDYI~W-vSRmZAPZ)H#i5M6PPljJt`tG@+Jq?S2rv{!1F7|n&m)ELd zAJs8QIpKW{SVKjXk}HVeQcKiztJbv z9WlFc7#PrK8@#QivK}A2xiLYx5rsCp?2+TwTdv|8WB8;Q*Bwn7goJClStX}dwrhLa zb~G8DLHkC&-1jjf*>B#!D|Tn&>2}BTCrK(ex`Qro1ma5anv7KF!gK4wDaR=vhCdB^ z^dzF+5KorQ=05GbhV~!)5b>s-k9<6O9!sfd+Y_U&re#o6XZ?8^)-hRPkz%B$-LTkn z_mrYV!%0`!HOfXRVv5)(!WGr&P@j(Vw&U%VyeB&@Su8Z(EJRSZW3X*r6RneWJ>1D_ z=qaNMlkbV~XuZZSL4%XOiN1A*hY;Wh>raXt9;L4>=T;OL^GNl!#^pf3lcat=OK2j7 zC}@~Q-&C{@N`U2*YCxWsqC@4Z-<1O3^W+cErz%JDAAr!vK%m1ap3FUm+ ze^xh~Z+2mhzM?QGYp%Ibi`fn3)8z*4_dxR57s>&hVLNk81J%HOG4)Wtlq#XFQdg+g zsn@`{0rG#ybi}$dz2l&Ya^XYj6zCNYceybjOvSW$5IUxO1~rR&WE6$}g@1!juc;n< zi%G+Wl*aEdjBF%04@m~$<%u19$_D&*>e8_Q+(!z|d7b(f?|?0+U8I64*1rx$cFd z4r!RA4}mniYl!b@1bJCRl2~K3wT{x<|Ga5)-;E~!!6!|JnqHae)5-}T8@D^I%{Sjv zo?qZvhU~pb`Y;?$e0unayW)iEM3&5s1ly*S_H|GNvDOqaM(C-q8ic$Y-a$OqH5AGp zY{xvl5Ktb4|BL&O4ju_LpN6;OodyXxI_-K;|3N$IwPRl~rt-mksdYKDO|(23acDCQ zNP%j`(~yvBvipawDZC3vOqnJXE1pgnL8hc?bw`@Fwox_O>ffmL@7`0ZjyamSrI{B; zFPu=he!{+yGF)d!8-9H7lb<8D5=bRA5`lwNTA0Sf=;cj(r&v8U*EQmES;4?+jTfd87Q>jze=v z{+02`{hJ!yBgBnp9v1m4gC21_Y7vp(ZddnThQ8wSp_C-=_5>b zsZeuFa@6Q}y#rmJl@D|cf^mGZ%CyLev{0Xlv|HA`v8M{IWf#;GIAT#|wYn`qXbZ}# zVI)3FwNFRe@oRf1&5fvH`&`B zE{Z#0SSWi^R!42yNgcH^OoCTr1EV>zVbEvTFU;R1^bYtMen%;^4ng zGncN=He|Gq|8t+Dx6_-;wQ2+0koI5IW@sgwQnD)IR!T;Y;u^1A{=OM7UX{N0OQ^ZY znLfnvL5L}}5+X7BfD5BYI;%)opx*y0XyYkrxKk}d)uDM2!Wx)$dNe~Cz0L!DslhDA z5~iqgGa%nS9%k8br0o^m2ppaF(|t#8qyMCh>kg4B5MSsQ@)G^l=n5d=Wjr)lX`H^; zf572k(_i|&41h6^u}e*k5rZ<9cR}nZq9V4-ht;mz6`JhsmF>&gsEzxGco{H@5bQkH zhaQ4gA&bxnTe_Ud;BNe1j(l6YowbzGY|7Fymj_8BKnrigZ{Ux6_ zmu@$pv__R~H?FzWl&gK&_p-H*;UPqZ;dJ;-3$+#pityWx^Oo38baikpd+1Iy5E$XRC-gAWvHwdf)7F`VC-}YZ|K?Qjr$v@6hv1k6u^8FtP|v$)iQp zKB33a|D$8u#*rIs>XnB`3Cc2b6hon6O6dZ_!TfXRC;G4K8ip~fnNg;Gj-hzsPA$zU zm41;CORr>DwuHJG^+~szx13@WG2$9GBRX>s1L&?LuRSIv7D9Jz48s)rR3Sm9_hnvXO;?j5LJn7^gD6cgQ) z-*BPviISk)0?PugA_tO>w6)b$*?!RaPWxPWz9h@#VZ)=;WQRwLL9bBv4Js<$n=PIq z;ThS}qh^?rAP+~{wdysKoz$Qv%QJd3OwPk`;g4Gjh_)ukfVv;ITsW2%?ovFs`aM0hU!>mkKVm_rV z+PpmRoZ1X>6tsa$=udb}{3X0solV{g3K^MVaLW0X`HnJ;BX1}w?uIz4in^NC5>3#S z>>*x2y@KDx8)w}9l?MkGJHp(KHE1awqk$Tc_Xmi|M(>^aQPD1F@XxaVEJ z4K*^;r!GRjx?KZu1^V11ocYK23UtuUclbpO#ikP$?iz1YG1ogY(l)j`E7c+70{SGg()}8;YCB8^!zB5nAx=eSGsWJjVfyBs%qtG`OuSuW zs^Z4L`b1{zrY8XgO3PG8_Vth}4yuS@<_MF-9Agrh6HEegk~zw}%$#D9nd3|f^9qy7 zoMtka3?_?7XL6V{CXYG8|!zl#op~q zk^HtDGCn7mQ;~(t24>h-PqIhCY^gXz~^_EzR2LI+IY_$CNVRe!Qed?n}%OyBOv}wI=~l zOk0x(W(Ztm=0krNGmLo%`~)%sm>Q+8dcJfg;k}u@v(A-G6v(*%#zWjU zeWYh<&1H+fI=3=-`*d4Qw2!wM(;M{fTO~Cps@Q8RcJvY@AnTQmFkqa_IfwdIjX~8b zhm@Y{1nGA`lu|}2F0Ilc#IhmXq4t5hUx1Cx{x-iu+OIfbp#PZsVRQbkC$)+IqjTs#Lruk8y zuWD%Iy_s6)yMaA$D~&LfqdparUsXOSpGO4bAylvHeo<4c>wv!=yLu4W%Fi{zg~EFX z-?ZU1zn$~+9m4OytdW0a?s}NO{{fZL2%ikalq_S9r@Jll&>rfx&kA&q>bCq=^PmNr z+`Ytpq*}7=P;IiUCm08~8@tZjRHGghR&U7Kv}5N{8qvY`c1BsD)^V(Xx63huySpF5 z+<=huv7`jmC+-R(PYLHy4-T)5Ob=dabENYJ4>46_>iyO1_XFSX>yV`W!{{L@k?;Ui zEqz2gV_HJClON-Qd8?D$UhL6e!xZ;)Rz!zLO@$#+(=5NP%f+0p|EJ$XV%1$IHIwcRr<`&K zKT_^G^6=Ptj-vH`aQ-6shO^($-c!NEe9DW?|B zK#K%Rs|nZvg*52i0jQb$QF;}lpVh@krVp@^=y+BleVFAy8)6Yz1Xcpwfo53V89KqL z_a3pl%$j16S+^(@mJFgZw4$~a4d@~I#M_o3jllbQCzf`S@z`KmOA)g8i? zJa^x>)GLf)JQ~|qqC;6KMNs=n#)#DNNn#WcLweP|)+0idnEYVeq(5Rg?D)p`-0VX8 zW}}nUsqCu8+xNTU7-O24k^ToAlB-*`!1AIUR7=!XHF=JK(tC;K$A086I&}w%OFDZ0 zr0`3hq?|*&ZraS|p|`MKmV}ftQ`GUs?DwSGChGXLCXCJdrW{gx>qa*C><-VZajUu9 ztB4CI_fOeIbH(&KD;>8ymgpD{i!g_6J(UXEde8lL-3fxy9y#W=kV?owpo@i7>0z15 z_pvUqNUSkdC_A2hgdIr_W{?6Z=~xXUW>dXYsShln%Y**F@V>yq_WQUh=*a9}69bL{~FR;1nMfP5`Wj2c~WJ}od?0ttSy=U2} zm%I^B`W*W@`>e%1cDsTmpm{zO;wB|Y=U{LQ#{v36@5!(vf$HAb=-`ECP@x0UQLL}!M zJd)#9W4R-a(@>s_=9jmRH<_hy{^xDrZPP;bjk7)NG@UZAHV!JqKPB*8I)62neS~&fj0nR0k4XK~g#Y#~AkNv;S zQTAzYTjQMf>~oyA>>AD#rqez<9+Dogcf6aNr8OM{L#k4)ZB4?B{&6(%$IcGQm&Maqw^FK}u zyN**xyR16Gd6FR>TpYa9c^(x*nZby`$g9Wb@MQ0RYv@JBZ{m@PIT$~@R+s7!>tEy; z>SN;KHTl4wWd6G@)!8E}4z`AQZt%FkusbF8g;j2p3!=hoH@>S z&N|138^o=r(>dRpPSP=`%`->1p|o)Bx26bg822bQh8xL^H3gHZ@%|yu(dx8voL0uZeq4!2=hx0#qjRL=)_d(Jn2FD z)59*LB5o8$8}pu+rgxTQvLSCKg7_$%j(Gqo=BH_rMvBdQqS?6R_-0HUD~Ed?Rgtzv zNW*U^U3V1^j+TTme+_SzKVI^eTJQVGXz5rK!=~{c{ocpwV+Hpq_wGr4PH5VQa~5{)!3qZ5hV}v9IBX7wE9H_o zpV%}G#OEj@isCooIrN@Y&pM8&7<8e2A!Jd)S>@<5?%mFAZc|xtNgLrY_dToGurlo# z#PDEpTo57?BM~4>X6K6}0>`^@E+_^CX|A#t<`(>;P@W`>rJjf34_urUL zM*g6Z;x}=T(#Fkch|z~o{}IRZ0n|1}!sHZjY4=$7p&=P6hLq!LNc-GB8tk0u)`O-Q zxW6m8RMLoQq3x>k$3zdo@cwz#X}%K$o*yc!tlsea>szs>E#j~Zy#Fu{d#>kU`@iyJ zCqJaCG=E4xKiyGy2NkdUhgaSFESI_>`Mv3iX??oX?i9zYvs0K&(lM7rKMQR!}KuO3u)?; zgLV=6J8=$#D&7b?fcuLRFzY`XG>hWZ@M7rKxP>&iQ*{xIynO9DZH>H8`lvo(=N(Aw zY`l9SCCKMxz+I~an-Y_UrOJB~3_~WrM(9=m9suTrs#CAZzPnA4ZBU4PI@W4OyB4>r zVM8k$wW0QSUr~F3qsR(o4e7YmbffxFWQRklm;SyT{`$#w9hxl#2w@%FSHGNoUWD_z zl-^X<`UMZC`O^-zGW2hkoe9wOT}O2)JLbVNnGyfZnDvqR*ji}@u87EZEN0`hg;q{X7rMC1zme)~f_b@q18t@>a%)Mvi7+v|jVx7S=PZ}zeIVYj*3!)|df zu*<)3uUe32b1vCB^<-83X5_VLoeSM&lfE(xgkO%g*@fovBU*FidCa_nGc+fYl@f7H z?(9d4&D<~D2eN)4Z&(aD&ni8EOrO4e0@_tu+|)nXkL`z-IbdUHpJ(y?nk-WP*V(cD zq5fa9zh{5WhTD{J{EyV}&hzB?zTDv1S{{tA$RD4a;U=of@)H=U{6R=8Xo92$K0s*k z*JuCEzDiZ+&ydz;H}ZM957|CNTf?V_yt=N*tm*g7l9GqG5VXVW*I2(`moULP+4-H_PglkbPJ$)_Z(5{Vf%ahvU<@iCpHOH~%%&mwy)J z!}sU=@sHwLS%>-Gn)ri9Nss#9^eoaVE<$LxI%}IL_~W3%kP%;##-*F^shn5Mn(Ys9 ztGr)?2#j{Q3BS2u4;EYs$V|Q25q7DfaT|3D+Klc^%)*awyYP*M|8X6LoCxP;gkZb_ zp0~ni;X+1M)3f;3>C@d_gnh#sD+2a5>4lHJDIXjBfq8`MZQI{?1MN0@EJlXu-#A~! zDm{!}BYefZXKlwtX1?pe@w@qX7-hX|ZWs&7|?huhr`Pezlv-dAY z_w$e8hxq$?{z3dWA8^09l}^gIBdqtVxBOCW1^3eBtofqNlFH#<5{GKfMWWNc1M7 z2YTB38J!7K$0Bn^>2{f>5j9aaX2SkJWgN zDP&hPt~KdWiQd1C6ATV;-G=n2*7QHSzKjSjYSsLirDn9S0w8PDAhhjV1}1rQhu;0p zE_^xnSj?G=LXu|r(zFgo(A%y6aBuT7X#c}bb-rpw4DZaJ-3J@KP8abW;r?R8q#Nk- ztQX19a`v17rJB{nlE<&LbNBHe`>@}Kv+x64#irt|qa~NQ2N*9PMf^;9JcFl;9}e#l z6%9gQV6TpS@g3<9t-j2e=gi(%Rx_u^Z${CEZ5*t*JGm{ic3LLs@n~#p$3#vQk3DJ4 z92ZqVF!_>t<#E`~q|Fy}4{5;}>83r2UVym1fITq1w{&+1jM}L1#hq=->1; zivJ+@k_pE{;6J<}!$v-vHrHY%?=SEaK&ak=AVKVKDoKP>Qa&O$i4PO-bRz^W9HRvh z*rS3Uc$48ML4x1~2|c6<@a_Hfug%KQWNBo)7x512AAXn{zzV~swx4utLm9I_ zO1@GT=J4FzdTl5_RzH4``VjGuppLxNbsfBPtYmw5d;Xl1l@uT!6k4C0a5^T*RY_miy$Bgh=NhUh`_ywu9rp9 z^R=A|z%}|kmFe2uW+*fJ5RXDXa`v*mJhIsmi24)y*Qf1hpvTs}XC8(PZ%%~UmtYxY zn=R{2ID(@cdYxOm)AH}Zs!rXj6PO}5K2{u7e88%2ynW0gKa+O-m?r4`yuD|8&!ZZT zESX&NC#9CSl+^&W75Lnr}CzBep`n3gWbO<$@|p@2^c$89wf3yG|OOPYp%s z%VcSxxIy0i88BI-c?^&z7&YWdA$d#M86N0xlk z1O6GllrCw^279H5y{V&-3Paqo5=!sMT8Botka9Gd`?7YS_dTbfem&^8_iu|(x1){D zv%6nZ&2B5FeL9znJ7hAOypv#;3z-ub?+9$-eEdYx z{0*;R-<~~eVs!blJU?};!DHl!?RxctpiJzPNf;bin_|0HNe@!VWAT*rkj?K|TPIga z-3as3vQ9E{K|?#{6-a1qV*9N|%XzyV;|gJKbA3UM(EEk=Y5h?BB^#spVa`I_ruk2u zcha(4N}TnONfVN8R}^OAt#w?VrykAbOlkynrTj(jevWR%SAqS(SEfG&-e;w|d!7)xKu_^{)4| z_C3LKX|zll#H-HBtM_!kgi_j=QrwKS Pswcv;IeQ^w*C-YUOa`!%)PpynKd#Utj z{`GwF{K?#x^WC~#P`)~jWEx8_KWL?}S7SJP-ahm9zMoCj_T|HO7~F>Op?0J_MvVA~ zexdn|)KaR4)C7#T%3S<%s(b!l9#3~xDS#c}d}S`T&5qhWoJ7;x?LX)*czEeFBb9!X zzS$ks`zCF4GN<8ujUwdD2{oZXnpg5!>h4{|wc9-YgjjfELeM5RitEt5mmAU*CPv7$bL@_v|zb_-d>;^|SSq?svrmp$k1ph_(1TE#2cnkEtm@ z3^=6=gRL~8O5n$YS;9{^8~J>;y} z8HJ7szQexn`m59)p8nQ32(<;uIK46@2XArc^X4bn^Ne}c{FIP3KPkK{ydoqEr-fZq zI7Bb$6F}sY8DHtQzgWP3Mg7<$#H~Y~%!!0i++S=j{*tiP?eH#t7a}Li>r?N2@Hy6e zzOKBQ)i9sa(89gadcAQ+&m)}boP=MVR><2&9T5&f{Xp0FBfvwC*<9U$KARJ*O+x!t zs*k!eF5`>v@F>uM&-gA}6CTK)RQV;m&pHeLrg9+vpRmv73OGNGcq>H82C!cXUxaD_ z5{}>^vi&1TD0J9m3Fyj*$Ay9A79N7_sb2Yn>=#ysG})66INjFgH$CEL+rDq^QU1)R zEePM9MSG5X#xWAf%zrufwP=&5hSF_q;^$DtO!Ig!QRgq`zZ*?2KoPB|WI`!fVY5 zdYuScYwU*pQsPzJ-S5J+98=*tqMz2-6&?5YZ33E0n6g4n`9l7mjE5%MO+d}PewMSc zUxag1&yvlx^3CZ!0hS?Kg3tw(ke9+692b$7D6U|?$X#?^3(z`a}%T50J=}N=v1I+9R*Fs+sm@T0^2} znp5ta@B`^V`Ity!eq3}}Bo_JCsgtgjy|9`VVQY;CZi+fZy&{}w+rUHNeUUkT4Z9MQ z$9;ht5$@M)6WtKq7WIpQ=dmI>_@CFJmm;P}Yj{9}7h#ZJaRiY_G*`+(YjnqPmqpVg zsp!JY8v2Wf9C=vKCGZv85xp1Py98aBnu9Oc_B;|@X%}U;m^>938#nb=_dQ4#mugS` zm%eWnRIb;u3YO;|;sWO-^Fi}A^M}A3yS+TE{PU=VAz11-&+~O^5wS0hu5Y!lxX;mH z`vSt(c0uO2<-$qBETW91>4IIdt2-<#!q;+s%Yxg&cSpko!v*oYcwTAbb!~WZ1!lZZ zj*6uH;}_R@s#o$bqH2+ks9sbf3R|cX9a%t&A{KrMk1oV4gfIAIcN%|&hRqIc`3qd> z&-96D4n)~IWVvK4kj><*%hPifTv6PexAy3|=P#JMv`-9kGSsUZw@;RUv<7pRiiN*r z6}xT9ipC9jABJP*FeGPUBylgXniWobLhz*hN{I6mlDuiAEt;Gu?%K#pXxaS9>9&Op z6CYU@RGSxmVKhDD2#(|LiI>53P7_WO&MyS_93mBtzo>uXVeS&uQcQT%f6gk9P`*&S zkVt%d;p9Rfs$ijL!451{=0fg*Qdt(5j`tKUd;$HVk{0q1DGRYi8CkWWxP{1t*ah*z z@2 z@FI0{+1kk3hzj*nyE7q(*t2l8>^4X-dWGE}KjG0)7VW#6bIibb`)$J=)B(6<(=A0m z>wA09HDqW&>f6h%Dz0PK%P%2M5>Hw_^iW;A9N^}ljMZFJ#oqNXakq0BG)aZ6S8QB- zZ<4(?%;+KVa464HQY-cFOZ^iS*0y;=D&n6>Y)1j|Sgi?C;;b5!gV+oqHQ8&xh2b=F z;rC7>J^K0G!fgswz=1>-DwmPQPo_no-*C#~U<=-hcSIZ8e|8pd^=P*^|LfGK!`jFL z{R+Byvr4a1Wip%=ImdsOwheuc)I**&k8s9J=po@4gbZBtde>3R9~LJgUS&New4r}e z*7Skk@xoit+s+eDGA8 z&+=CSV-5j@T5PLLrPU5Qrx%ZN%E9+G{0(!v2>#)WfVaD|j_#BRLW ztaMTJcu~c*#dqbV6)(%@P!2ncg)G!3(Jhhkfe#9_03v%NCv-0%j($8Cm6qb~vBe|W z{BMI{_ptNr`O5TSrJbI;ePI;n}e{%@|}k!?MDWX|l@@JYxXnV&<#%OQ=GQZH!MBn0ZWKxyXRd`8wu;PSe ziKt8@%t^$C4z$hQD^e5=sQ;QFqa*gs<&1UMAk1zetau@dr;klJNSlUB;s&zC6irKtpcrC0@1tanVEM zD>?@KeB`ON{=VyK`unb3yld4tHgxrL9n<5v$I+_JvDY5Eb$(YfJhqHq4e5m?iv*^z z$RJHq%kA}0h*iBiHa9F@yq}8-cka@ZpmP2%MwL@^U}^Gr=<-`j!P~}YD*ZK4fr2Lj!422wCdI^1n(@WxC=z(U<*zfx^y$(sf z`cL%r>NY01cf5BO_RZBRy@oC8kklown%>0l>G9SM-(%^By13H!$}YjrlU;%{rgdy$ z&_zq{YD<x82!*FqMVm;t4 z^3RpGabK2i09C76$2oH=L0pI|CM$V8=v%5RX2QXQZ^5@5I_>@g``e-%`KG>TzSPMu zjljKQO5t`_mRyFL&v-0SFQ}}AdYX*wqz%8e2)Fs9y%tKRpm|rb>-YSv-_xjF^K{?K zfQvPmK0p04eOeCQF+CoZggAuwS(DN~t`z6D7ZLg4A9<9q=Cn%6TaSi%7t(LDvl!bVt zb@c^yA)zWRYJ+vP|8k|JA)yz#MoTofiPg${CMN~_n)#-<1LN{ct};J%8NrWRzOQn0 z`30>P^reT}{)d;*IN=fiPY5J!_w`6Z+_wsuue9V17xq*uUbaxsfFV93>T7QwyG}Ys zdqnUmgEL%fbavG@k7_wlx=MO2pyjJxjKy7>qg_w6UhuV>`y{6e+%igHsE>R*B`Yjx z%c$S&yV2;MtEiCZVSK8v;^;JjanuBw6$(hfLTPwIfGAyK3 zcPuRLu)S@0s=ZTA4Lk|=tv0f-OO2T{ z5vfo-BY&tw_@9OMYk#h{$E;SLgFA@IOfVi_4sPQ#37^5@!#7&SD&@E69ws`Jm?$aA zi}noljTY7rhi_79E_Uzzb4b&1)%?Fa-ONLKkB+`vdP~7XX&yhe=S755CVJV92P@xy zTDJfy){fE$JDO?WzPKAxj}$MbyJp=qU+Jv(Q;j-VDk%#<9gF*V)!PLoX2BH2I(XI0 zCth2`7{Bb;PJ>(K8e*D~me{vUM?3}b_o;%672G;uk5g>E8Iv0o?6dBpg4~Blu=c%L ztn@G#T_`7-M%>BXR=@MqfARy0a1(f(tmO&g^vsCp`erN6wd`BjG0HyT-^>2uBOAzm zLE=L~#o%w%PqfqXCzLirj*0^n1Zv90hCw!&xa@9(rokUTUpd4))PG_84sn+fMQO9u z3z(8^uSI%bXq_vdWb0&7DXtWc!S%+!c;t@31X=l z{mLIzs+f(Wi`@}SvDkC0o+Td18m#AvxnjKdig-fY2X=!O#Fxd>;;UkzcuKr1UKESO zQt>tMs`!RjBEBgWh_8!pi8t;r@CY=tA~rUx&3g=63%%O5)|z>=9v<^~0kiU$GQEkg z@i^#dV(Fab;Nj?Ts{0{w*T#vS&6Y_jt{%5~o|(*If8snm%!P9B<_TYq?0J6=`owSB zwp651ga=%*!BbJv=Nj#iV(E^E_vrOb^te%-;*khX^Vo+-_aGxOJua1h%5j}kc1wkr zKtAj=7wR_{d;CFJRG&rWYV%b55Ns7iYUK2QMOT1n{PUS;n^VqauvGnfU<|KSH{kxl zJ5*IB^9=U%zCPg5s2t%R-<7TBdwVcoL~SIMVp6(uxp=E(W1S&AVgl(V5yjD(70ljR z8#y@D4FvC!RJjXu>#XNDy|%QK=rac_oNMt{H&VxoY#$8{obC)pRpwm@~vVBdJH-{t!AOpL!4V=mLIcWq}sS!|~1X4p=3c z-b61qp0af=ew;*%qwF5Cn0u8y%j1=z7ank1OV=ry90R}VR`VsA#Bzx)v0h?GSdt{y zM@BR)!Jq&aOiREEBy$oweXFI58x|zC@>eBADN7Qjx$TKB(EgTB z$Ntv_1{IFd^7(eJrzTF5*2^wZDE>L6hJO${fKs$>NphFA9QBm$lW#T5RcbH2z*jr2ErBT$*Ci5-mcCF;h&#t16J}`IF!Wx` z0jWXp!o60RDI9}F(|7PqK!bZ8GR%`Ig+ktyT3=vF+a2tUv@$kZ+9-0QweW(J4Qc|Z zd3Fv=D?<=?Ra$aY*GwzJAy6!pY`?0lmC8I|8}lT_c|tx#EB9uQXvrb|rBoW+{2) zmsCZj2Q&xyB5jj?m1eJGt>mtBOY>HiM9tEH+*XVa!e&RY;x}#Iw9vXx_>&Q;hPt+) z=|kkGl(^}ga%3QJ6Hnz>>dVs542D@~B};dY#|@-X?Ij1`kOsu98Mmp(PfOXYc_Mi# zs7=Yx=bFQuv>Kn3SU(E6Iy!V zQ_hJv2i%%8W2IJdeC6iKXX%ZV+bgNP{>LXvvgskE>I9FWxEVy)qacCNYpoQ89Qz1o zsYSpHZ_gw3F#mKNbqN&c$G%nO9Zd5#hN~e_NR&n(?0s&&t(yA!%3w+w)kovA^7=|Z z>LGO>jWQGY)dL#av;I}01Jbx+<*X;6u50z+o8)bK9}siT}2h_@jY+TDFsH# zC6>$KkRidCz-V<`uyxgVb=#`xYF=n@gp$XJVWbDiJ7J@V+%vrW(6&+gRqJA-(Fkv3 ztTM<8*8$Yrn%XY3z0jfL1 z@hux!#&~4t>UM)@^aAvdnaT#3&L+hhnwJg6t3R)F!BNg#@EgdO)t_dY6w81LA6)*r zP1vR}MJJfo@x1|3YrA3##oA~qtwkpoU~3ixzmy-M{A05-EJVd~^*Cq(Tdnup zq;XvxMER|!)<+ZzR__=LDoX4Ub4pfIlzwNIgL$1^)is3wg=E&A zvRAV|G=7<6vX0kes28wyOML4y5aEanbvZtgca3{^R)K$r8#t?X4a(ml5VM!qM%Px@ zTd&>xKZec%tcf>{;|JU5Mg##-xqzBb@Nfs zZ}-38Vps;;dhBy?Ds%)PtkV0GD`_z<={|y({7U0E0g?Lk>gGUKox3>&m zjDLiG0?u0+Ldu!ws7QrkGrL~md$o3Tj6PGrHsf*FP*ic+IwTb9KSmxpRJSn1AJWI} z=+*6A9E!WhANo5sf3h`yX(%f2Q`7gcwITCUpPFE3SdT|@0qkb4H4r#rJ0g$L!-ot{ z<2U0UBDdfhgZ2#{8lJ(D@V~M1cp{#R|D03r_$s+K@TK8hH=C!2dZQ;+29E`vdcI=T zo60E9vEkwUm3vdU_z3&xiIYwTTyORr=*_>Z1KjL*lyk-OVfnnW7OvI$&s zJ;^U6-aDYG(jj^{;DVo&M_%P}QC;QDW}TOvxGB)}#j){o9y;-6Y;4d|MB&U|@^h{#1)_4?NIBsaNh*2C+^OPlreeRA@M7HJ}uL~M6=ygQ} zP0CCP2|Yur1U`XOlGOEy@RhI*rW=n8?Sqvgl^kk+68;jt7XieIKxyJ1f;$32lp(^1 z_7~)dzX`>*3Pfe167d(|A3=_&O4J|<2bwC?h!1{)Jqyon!`eTY}y3?A_#VzwW|2NFXRn(PkZ&#JSZ48GezJQ5OV>qfkU ze}CAC*m^J;>H2xq4UT8U<(Mn_h)lPDwm^e>3?`4Ijn$(X!E599o;Sl`53*n)F!I%`yK0)cw*l``&&5ibNSHU{&&Tn7 zWK2Hs5wU=nM=T=FV+x5S#FBhDXaiPRY7E6D~k3R5uj4=p=^yisPc6z-`I_`-@2CxG?40Vm5Y9=LotQC<;;K5?&;Qn+SIZNiw-Nfk z$CG0-V-U>u6GzH2Ti#`%%#J7)-A;Yermz4{K%Q02A5M$elQVp^R0!f>& z4%mbCBgtE_A!FxA7Fe17kz_5S7?Nv^Hz~Nti!^_)`NFmMDAG1;dWvp)wXKEIw|*Dw zFX#!J2RXOSe zOE5aM9)Gk9N4hkCAz|cjq`jImBuQ|u5A0H}PZx0&${r>kh=rMdd z$t6B#c)oBjuVTih_a%?uz z=TVqmvw6q)P31p`>u9#dZ{ky>zr-%}s9B_nG^wzNy%R<%@|PzqquD<4q>>BvsOt z17dV#pkFNyJy{%d`U_fzwA|NXIpF)+nree;V)}0KL^gfipH-fkCz~)lemYzRV@$ja zeFjI>s}thDIAC2&b${@19lSrr^<`t}&baj}7T1z`gT^w3L=&bx{I1(GNrO-2S9Uu% zhhK~gW1jqO7I*Q`h7Bia8V9`Ca>!troe+m_Nss2E5}(Q^kL0*t9&tF25B3k*sKS&} zSJ~zBIKJ-IkEk5=rCZ19r}ckCz1sg>Z>gH5YGAbSi4(Fb{!yW=A-$0|oRubM{_A-? z`}ycZLu|j2RMiKHw7RsiEL20v(qHA5-5ZrB8q9>ZfggQcuCH5NexC4*Xzy4YjPfv;BR6O}frHY>Z`1ta<;TGt7PFV>c4->BSBnCd+p9qIQ- zHR#!vB7Cc3mx_=dA2dKuF_30!^d0mvf^j0 z`+%|zU9yHwUdI8MpocHKw(62P0%7nCpTX@Y(iRY9*&j#s$kt?&!!JAj0k=%sv?Eh( z$WCNu@^-Qd`R%o;j!Y=O!+euF`5)jxR?(AvKB?)u9WMRLL>hQ&>a$&>;J60@Xptd+ zdT@v-1n@Zw0fIX>fwVywum_-BlLf-}E?)b6XsPc`}94)57I@+JpSxAAGx$9W94$88qY zTNdrS>4)w88-56%k<7s>v-_sakU{q6rf)oro=%B!dvj;@X@BNy;`F&$f0^Xz12V@p zoSB^_Pmw3dF|)U3x0|OvO_=Qr3Y-o(A29vzWLf5w*+;XMo8DJ+T&1V0!Mgf$rIUym zo;UhN>m#aC`!wHGj!(lhPz4q5eI?|?x8KNL$r5rETvi1>bPqX)*T;vA{3Flc{~P*6 zww9J2{y{!PxJax9@0?1M?#5N}XR<0qg`z?EMAoFpZ=TIL-+u@A8mN85LQehlb|;FP zT6gy3X3FzQb(yUcthFy9?jlpqIoW_>Nf{hBrbO6VQS2y>h72gsdp{~KlywB1sN)g# zH(Z<-5Zox1Bkq*l6i>5zf;GjSVoM36I8dri7*UAj`jjWf z%qganFv?-d7Rt(*cr#r}l2rJyPepe;54iTGI`@6<8bMx_DbJZI{Lz)){HqI-_@}Gt z8PNUQxyV`}8P89?Qgyc!- zaBKZfT@lC~(QD1d-A~I3r!3PvD#YYV+58&IG>2k&=k(P5*ZlIHm%UeYY2DuKrtjLV z>+cW^^-Z1Y^*xW$3hndFv)zBNOZ{N?wu2jA{5F-hR=Cnmv5;@4yi@F=T)Rx0JJ3D0 z?-$yoI4jNX)zNM+7G-!-s|YSPoKsA$d|csLafoz)^k5t^e6v7ebe-5ZsxZPIW>$vh z4^eh^pSIsn-9|C8|CZiG*(5Kjp;LmpH^+ZVr&0zf?Z~|5-`y_o5z479eRb!Sj;Q1CH0 zynC*4J+3g;RgYYC0`@C@7ok&Kld3`0qTaRHK-H#hr0&nxq3Tg}sru9{R0FCZbraQ? zx|wQ1-AXkBr|w^PVpJf1{W`j8R()&q582m-_SE+(VHz7;!!*t*hiPyXhK4mgMQ%uWG*W*R&^f zy!hXM7xlHudpWLRnA~aVt=?6YC9^l+b@_*E40W$ej%}w(JkPw=b@rG(GGres7oX3z+hNCm3@Hyt{+Y>wT%j&2Z#V2-1w}MIp!~{|! z&8sP4tWV~#L; z#7rC-iQ6-0c0zr@va+r}aPEM4fVJP8;rZY>UEOEux;AI43>O0O-W^gcDSsM1cgIb5 z*zB?-_WYdG9F1zXK&Nh7a9nV1kDL28YrEjQV87tD;IOb`!D(TU>aoD0ws^1tqV0&! zlq^&%%H^280~W!d8XLvx#7oq)H7ZOlcLz!K6SZZF+4)VDCUeN+i#L7d;^Z=ba+%-Y z(!zcA#wK&+maqkw+^^@+3!lslZD`j`=9G7B)~Kxq7DBbf_R0%giY9YTp~)vUE;v%- z8cgPLZ0`e2)f*Qw%z5T|3tUGeuA3R|$k>bbCM;m7RD1z>LH!u=cRx+$_jof~vZ z&ep<=-Ur`*yKufkSJ&$OB1qKT3Eb;Ca90JhWBhN8D&{Hi=!B%nv*~;P2=-eAMRybC zbe|sPa_os(M{vxo{;vA- z!@I`W3p>ZvFhdLSO+Uw1N;YDKu{z~-W5^dO1t-^1 zBUq#uW4=*>k;1-6a3Fre{KkC8yyRmmxYC?xQ0&bZ+2gX<6%4~yhNeIp zp!6-s(@u=z7ls!IuSOP9?lQ1CnCD}y`5S4&!#cE23x=3d8)MAxxoFipz*d?H=H~)= zfdtmYlqN;Pby?C%U^X;yO(v-w{Q&$|e}#6Lc9qtPIfct1G2=q9&7jYxqEyp|!w)iP zk6y}j-l3(_tU<5OljKjZ2Q)}WZbvRnQR<9a)b@7Jozok#UG^|}gKq9k3h2W4!J(Y? z?!i-9RYwKQk=)er=fl#=CmqE{VaIYH9~}P86O5Z^mtp@&*U|d5A4MuDyrcuD$)>HC+R*Kp9Cf5@iN18)u>4(2l7kiuk&7*27R^ZD%7g8Race1@KPPRr9t4T zNLMhDfNk>VY&QC>`%A`{Zt_0k!$r{P)0A#SU!wiiHKc=@5W2PWZ{5xGzN1^{UzLB! zxY8}@JLo#}e(fFfVCjD^PeCq1pn%T)EgFkMt1?lY@<83ulcowlyR5F8`$r`R3#tOB z9zOPXSC^TaazeOliIh4}e{J!aIuPu3EOo1%uA3&{psWS@9clv(kWIj=j!ww^WAP38 zpg*Glpm1~xKnFJJ7y`$(Z*Ne7?%it)dLWtr)4Ha>z7tVJ{ z33@YH0a^*VverPk>1H<@;DwAWu(;h8&`GVAwFBI`24PB4c7T3^uB`6FE0Bfl09czk z0t}Ep=>)6*mZ{D_-^1;|KNA;#0Pfcn7z1>G-SA#5(d@xz)0yh^YOral{d7NFF!5kC zYvPXarb$@i-yJ`?pU#Twd&jr+t+r+t9~y`r^oVx4{PN94jgxSjYc=wKSGkINc8SWz zk*oVk^AZxH;Gfn1T!{7faK~-)jxn=G*HloM3GnD`tLo=VKP0-{+7D*ooZ}D)$d@AKBls3ke&Qg@ZL>b&v;M0u_%T-kSuWbC2NF-c_ zFBWC0q`>#~U5D#fQi{46P9e+zkSA#Fo#O5Lm##_Olx&dX?6Awv4CNm|NK=Zic2F#* zqwG>d!&8OdN>dohjET|J9u5ja%wSkBsu@jCLr6bnNg`#t2>97y|e4M$=6O#wePMh{=DAd*W+{L07n;21f4Y_ldvJ z5Zlx6yj%+XAmgANFW8qMqSs|$)lN6e1YMemv45*G53O*ag~uu z%xL(Bcf66xc-yGK&_aG~0e=yUk(uPa#|$IJl~y&_FYrrd4r8RDSL+djHTu3sJaV|V zh~W>9?S8_LT9jI}Wjv;qF`hAOM=coRbj8Kal!|E9u*0IY!+%!F2_06Bgx~1fK3a0Eb{1KjHb~*`HS!)3`{GE@hS8({hCT&#Yq+G z8!7sYWx9tBW(f6L$LkY*HjA9jF=~QoWAHq*%C{T+o0}FPcgLS=oGME9TiiSvusG2W zv=|o=yr|B=(BID=SoCW-wAfFd88RH~r5|6cfUChe=>IXcGLDgsk$y4;=-SoW`u;L3 z8K1gfi%5FHBH~%nB4YgFB95-GsL&`b{yF@dQBZLcEVqgAIj4nj*8DZYB_k4UdOn>J zS+CL!c(}iBOgXw=VJ;4S=}ZV?Z`)qEK}Mre-Jeal+L1i_W=T`!Fm*U~R6YG!^TomTMHZuf zVq0IxV)x>vQOLv^#jj;x@du-y{(#Y|b#k%A;tl=~R(f$V&JF&%g^%)I3`zSnsfTpZ zq{XFzaSE#?uc>7y$5)36==Eo?nwW3>qZx&@U)&Zd5eH{ODmK?1t1c5+ZSd2-8gT7c zAT}sx65`Ij6+LQP@n69?8;9bWa1E~_mG8iA+m_L{@;X~|(#|kTO3pF;i=&x&J>>@v zR+Pxy?+JAfslP<<4cKiV^3$@Hn90nG%qvV*+i@kk))4uKZ8w-#DsM1Z<`tRV`VepL200Y-bV%4`K%b;g1AJz3BJ8deKH#j|ax+ zG54zbD`8(q>j1vP2Zwn>hDg;~nc`GJ1R}oIb@3JRoJP@IV$oCi=sp6yxt*jk3HQW~ zGG4;FnWEn4zCAQ$!<&!b2t7+Pd};gyVmA`SoNYG5e?*+sQhYjq2z)$&*zjTiG1xMJ z_+~kP=-fGg*y}TZP=uM`>t>-tpL2dA9Pu>fKLmqmg}-$1uvSg9>=51S1ycdpz&t?v zTGPawLAEg0n9+T$Od-?Iv6V??#+K~$i7jC?Exm4K8omwNzkjU!`u5&&<^%%EOi(~G z;fPVDA%27@&vMtMA`nbG0u1>^oO)!4PYoDFgjQ*>goBzalFBGzX%IT}o;ivT2QM(` z^KYM9;yFxX)+dA!%arJb=P|zw37DUlb}R|AnYq1}&PXcx&P*!#$rQB3mLQvwO6mub zN@V+DOB`vigkGj4ej^Jyq{|9m>9A%I{wz%vR@MQ(pEZOqlQY9NDwyHp zN+*~y;Pl4a8RlyW95D;lmjKqE1ZIvDi)q5LV1?{6XR(+pWl69J7*D&Z=UaVby>&dBU1vma*W7eS>cJLa@fBtn~0W zRuapKbsbViqRkoUie~@K#>#yeay4Hk^f8N{yoCF(MuHEGe8F((Go>?mF@39;q>_(q ze>8uMqFFWl09c=Y%sPQ?ZJgb4Zodpu$Sf#gqGqsv3 zKuKwN+qOj<3&YA&7-R8RS*&oHQ^+tA&Kh7MSpCeXK5^*XJ_LqIAq?;9^3!xL#@uA$YFvL#QLhAv97Yjc%%t}faVD_@A9;x=JusfL@Oci!$)hCuR zJBKxkyD6v0{x|g+^q_&Tf6Yog3(b*0;#>iCyZRA_xXE9$`?8l^iWr`KA{>P6LxbDi zWjV5A`qIGCvsk~tV}6Y#W?o_KWIM3j*<98Qu)f>be>9_PYT;2f_Uy9Rk(tQu9x_s= zh+)P49&Qkp%(^z5!ZH~0WP7lWvgKOw!%9-Yi1=>O@XE)*)_PQ3kv_9)ai+ofMiuVI zu=1kNm9KSm4@P+@^Ll^q%yuWB2YHp2RZ|B+3JXgNq-?)zma?q|)wyfKcWlsk=#?3j%I%MklcH2a0mWrG|eopCHAc_op7}i9H~x4izPFM29sY*d%x-0`GVi@hLM5}l;j>DJi%95(#*ITa zk^R&+rGJ`5`5r?p)Re*2mb%oFb?>P8?f2jpknzY1f!7Fe$eoGgY-s(}`1XjWmF9f~ zu@0jW|97e3NSe*V!S0X~$m$CoNIC83BR$Xvc^dmDQdh$fK~&*q>my{9L`AOVp~&<{ z-FhizZ7BQf`-t9;vC1e|JV~Re#q8c4~Cxh4Te5!S4p5y(hFJY zri-9P=px#}sqFW-Pa~IdPuUaLQgenBKq4aHhNC5%L}cM(midYKh6K(zv1d& zG}=Yv0>-a5302%0+CRvq#qBJ&B~cq22;TIRX2x?IXSiNJtOR%%u%*JXN*mJi!V5jta_W^mlU5LG|krJobQ$` zaYowSb3u-x&Uuj8MuYu&I*7kOTR4pK8@pe=)J=+WZ1K-6ev$aCliqK(7EHJG8#`?1 zE1Pcig`LbXLmW=5x8H}vGz!@QwxiyLTpnA8HA;|GI)uC{7tUd^cOgH>1r%QzkiN77 zaY{jnGtWNCIfYW=?3~u%U^AkSmF4Y?IJVg)EZd(`+gwp7%@}2G5!Y|XSS$VaGd zss$&%`3ADJ#fCG{;KGq#{7hCp@}5oWwdXi6I@xHv#b^)vJY`>=Ip;Y1>C~;(tw=dW zMDc^>-MvlJGoyN(cB=VMM!`7y-N6vf<|o^b?Ga~@k2&`}^EpBBu3nQ7vBedsraek> z|5@sS_XP?k>c!9U?j|o}R;B)pMg?R+w6gDz{xcza$KBAOFS3DPy8^*Bi8w2q!-?K` zywoqUhlXzDx=kKbTFs7DX0wm77CA?dyN9})D4Y#FAt#SG5jfYaN$kjd;ah$KS4|k{~EV2Z@VL@9h^-_CwMpKBX$>OkX_FiuqkpLc;Rnc|f6?>bO8?!!ls7h1iL$*n)jBZfppI0AOY z7!i#8%)Y{b%U$A}TS5^?3QHM)Yu|vX_8LwUu@UOA8gW+%f6T;re#9A@s0Y4Amlf!S|~5| zJDak^FN!PGzj2&3x5Q>cuv1In90-=m?o>U2ysVtZ`LyJMJgTL%bOt%cez=4m)#6|| zxl8}~KU&(obd9iSsc7k3@B5`XPT5lNq8aDPpz)H^lEQFYV;7rVP`9*=v#Z!3ECyO4 zZH#j733<}i5QowtsEzigse^6%-JgWg?%h3cZO{=liv+x)QSQBxdr2sR-i`=3==3or z`;Sq5p`ap6-i&cj69P)3?zej9nRdJN85RgPE`Br_SY>mYOa?ys=uBF6dkwi%d?9oD zo)Ncmv$9La)*4CA80k$t#xTP{YQ$um97hfIjitb$&y~$SWCXDMKdjKW%HBGtraazPyKo()(0GUQsdAAmnK^=T;qHL9 zAIgB9a{mRrOAL)i)1~JkC%;VizA}f#aCwB^@Hj3VmB1w;lelTzJ)Cqd^r2C;XO9Y0 zo2$jug5KahsouoZLv9)|=3LCW#YJ=PaILs+sr7{W+$5Aam)d8^%?0OtBCHKXaALEK zk3ID)E7qJa89$WvFXzSZ$y3Qj|Kh5l=csEF;zntO<)%GW$5AE&-g!I6A1O#LzvDud z|8cht$}9&%+ql!1FXVmP;tIn-V5yyTbKYb;YU1{R;ND5<519e(CLiG0$P9G)j%O4X zsU(hEbfiHA>o|Cfd)t&N| ztD*VJk1OUzZ_1Au^^C=0Z~5n_moD#7T_uH&RXSItB2;n9V9mfhwmbv>t}viz@Hqd} zEa{f|u6#M0>Wx3MuEqRV9?g9pEN0J+VH)>EUuMeJSZK5_V+c^7aR+X@>^iQWwXj z$QSZxgRhol9LC40H`+H!TThK4THY=XjqQ(l;rDUuNCII@?U5|+R(t>Q)oovUc6|4 zn({(=pTckQwp9N&L0it?4c==fr-qg+vwa+S^?uyt33&1R^_&@y4#z&y?G^Ga2bQ>HY}eT6XQl!=*e$|R3{lXc2;KIX8}^wdVd zQ7(NXIX#zS;jn{-kdsWBteE9%^NeCAmfITSR)Sv5ED!Vc6e_Qvc&lTS(CfT)P@&gy zHYhJ=a}c~`Y5P(?$BU!A(TR0aewI}wn;*4X)y>G+q0FKs=P#Hm6W<=bzVhtAf+ul{Z;gt2}eznM0pYEf_b@IYh!VD6(zm7=UF16*mM~=#VwND;zRUOP4Um=vA ztfcr9uavKdl}cCYPdr;;Z$~IAA1uFqciZ3U_eH^sFvjfz%(TF3ik4T)_D=8153QHe zzmsdSGgr+G>g71zib8)O`M&ye@elqfYNU6p_5petIfY`>Q;V*>4?%a&Zsdibr{-AM z7w0v2BO0Bmo~(KFwkLqg;=TLbQM2dd9;BM?tl=)A*R%G_KjA5nGR>7po>W=VPJ1DG zeU7VWpYBPNpiN}Fh`g0L!<#;SwTWB!=n2`%b3Dap`6-i6D|wj#_1dKGXxy2f=-|gw zX`4v}uPO@x3^wt>XyYr;M-+3We+u)k)eAj}?pZn3{iSuP@H$e8unBj!)xTd4ygPN0 zpbw*9q_|;uT|VvA`troeA%!m$ezo70XIFk^eV3J0W~~rc#B2!ZiyUQ8iL|hC+9Hdp zL^=|(j3%u3%`5SQ=wJK(N6)VQ6`SY)edyPpT$!}4H--kLs{JlkiKc1FRkV{Bm;E;~5)cKJ4og`PcXt^sn$Wo1}{_ z=mYs~+8-x>dnWKhJ>&R)SK3?i45av&LRZh)aOa98+H6L<- zrnY;&g;%X}+Jd&rXa0=&3VNPTo8zshx$stQUkP(xL@)Cu`5L6yj~u>a<;>G)`9)p@ zU!YXQ7xHVs;ehW}|KFZl{Wp_7t8OMiEVq)jJ0Ij1aiRQHz90NTpQ!m?IrlN!Ub)?3;P0eS+`dF!8&z; zssM|O?D3>23uuUB(mq=B_)*?hu4{!y1ype0+2FI-u}a-G=r>Y&DK+QKilM-+hTMon zw&TO()C7NUFA@|4xRtERI(roBf&6Jf{e_bP4{*+LfmXcHWff&*+ED;mo&oi!i0Tg& zGzRV$G=TS1*Ky2^*Z5O`-qSen3Tr4(EF9+lq;~#8P6m0Bccz zuE*XL*b6q7XA05Seq?ZDH z!DfET_#p+vi!GS6m>?`c~B5BsGLc3NO;!GyHZJYW%kP1V@ug0d2^P2hvGfkV) z2IPNoSDV`e&BO_!ccbacsduykZUPy0{RK6_4)zDxclx514q|2PlVK*NoA_kdthl|Q zpBO-U``o%1i~7KyDO_#p;@cDky~;w#fCUmQHF*+I$|h7aK*|5msKg{ z@qD=gJt$X)eqd#dOHlqP=y4jm(vjmKr>tg&3-di=UoUTmyUjaeFJEDr`Sm^D>}MAL zyeBbr2Y+SKe(;Fl{Mhm?+#vZHC!T5|59(VI~e zv*u3re-{@7-$umsjU;nn3WFuMkIrsItkC0m0{i(K^ooE*@(?mfIzsJg$Ueo;9niI9 z4Iv}tkh~XBMHq5VNvKk_K9}|EU#z^)(M(qOFBT?*3hi-nJUiSux!(fK`2^+ff?mQz z$VTw}X;$SY@aRVloje{esU7W#>bloKI`GO>=qi*N?cuBQ*K23ewh5K^TVY75wNM== zY80TV8v9n1h6h#xaLz(a{ubdUqPuXjP@#1bUzCo^gs0mIqw{a5EFTQB6+Dq1UBp_QLo4Pa{cEIN?c|385f0 zLpUuw%byj-j(!w|yxPc55Nf;rvD~`tG-<2Ac|zq}8^cS0MPMV^N6jG~&bOsFK} z>N%|*5e^2Nu^()v%{k(N{boo&x*ZPj=Bw~C7@%l@o8tFe&lGGB3Y4r@QGBZ>yZ7&3 zMetj5UY}gIKKz(SlV80rTx`C=mUh1+G!?Qc`&KkoEsJ*`HubAY#f+CvX4Q^xemD1I zCXR=-QVPRvC9UQNbiKS&R9^Ou{2JGo6k%Exz4&NFJ|+Vb+TTUcKJ}%%o?B9IA^*&a z{GJWf^*qhv$=PPHGG!&Z)bhV=FHpJdazuVP*gGJ4T)dJ!E(=ZTRe*k3c}sjktP{Kt z42(7iDpwy0>IDsgYlJLNf%@`R)av?5sO?C_%+TwPhNdTytvx2%2=&htp)e?a`l;@1#@oI5`G%n zwG_KrH?G<%UcIn-uZp$$bhT5snIAiTAzji`AnaW|{Tu)i1Tw0F$MD7eHvi#vjd}T~ z_LQ+YPHw0^$YZjTvwPBDBD=c~cVZ4)X=e45{J+(s8GlyC<%p{x3I_#ULVdwS{^&C8 z)#ue`tM#ijtHz?b)y36pB4WW?kRFEd}{#Fadh9K2=quag|dLB;vXc8j&DLMg)L=1+~O;;nR3(n zaDDUjo2!`u9Z{x00Sc@OAQ;7QR4Hl<0_AZivhidsY>`8T5XBA%=ZHd^bs9n z<;&yx808@I(}LJ~(|OU6rwmb|;H4<%>O=@bRHQ%^y%w#AT15iUI}u;BDiVr#qBT*E zNFox8R$x;-CZVgo-$ZB3OHR<^E@FR)UK-}B`~#;C9B9LxF`vCqWpz$DaNlX_$#COK z3gRsQ@)FxeMI27mgsO^zG?MhR#EUCuY!_EP+0$3_#D=~*h@QTlzA4)TSB%7=)Zg1` z63oOKY%IiH*;(1v;=P)-V!w}__qK_RPC1Hud5DmsWqT7{#V%sc?C9EkgFD5aq6mt+ z#9JS`X?lyjsN@R?%La)1R|7Ru995S6pGQ$+m+S4>S6*q@C|ugOQ|^HHrF@aF)$zDk z?0ZtIr2!{p+ng51%AFN!y4>kGCteS6q(+Kk!KrXD^uiT>g!lqDJSsjSJ}f>YKH{@q zEFBgi*0;y|1c?2_@!QhH>Vk)SA92e-^|GfJ<($?3P^@spP3$3lluHVJB%UQXh&L-0 zifae$#4iVZ_)dI#v86bR`buOjcHr;hZWSAgYs5X8Tg3HZeenzN$R!=|Mln;RS*$76 z5UY#Nn74`9KKH_vz_E5Q6dackcZu(~1LDfyKJibHs=W#mF20Dh3{4gP5Z#8NKbYA_ zAX`2@sggi`9*S@cxY1Ma4Ld9L6Qs{j3H#YhwQ@gL++F`-6}=?QBjd%SLaV&&2uLC} z)wua9q;>R59Jj@J4j#y-wM`7~QBx9K^!b(9LlOU-9TdE!s-7dWmse0SF!eA2~0m%Q8OBhr4U zP{g*SE!J<`n!`ORY}o`cOaPl!#U3Sff*itWG4$yC^0-)j^Dn5mU<1(p;i>A`h^Unj zqy(pfeA6Oo5fXJaMh5+k2!$nBJ*`Z3vAw6D8nW-FW|*?hlT(4`l`rk5UOi5s5cXw@ z1|JTd2>9I+t6x@SSw<)kFN!ZoDertI|Tdk6))S{A6%=QK3b+)@>sn1C~&Q4kV3eS z*r#kceU@P1^lzz*(&K#8-p=eqplr#6?2fg-YhNL5YgdYAml+<_OKRM2!#16u@FgK@)aLu(^z-7~1QZR|_)EsJxdu9Sy;Jc1qf zGogDef`=>aSc~Y}*_$$=#O$by14~Xq7A=9U0BrXqIQs>spS@{F7un5r<_^?qIJs0*rs7h2M>Jsf|auQ96vP4UwCefB?NFvoYNc1Ed zC7UHWk}VQl$=@{tiLqp>#8hG=k&`y@r> zzLGtXBa*|CW0L)nFiDW)kmQ8qfaItoLUKytFNu_dNKQ+ROTs0wl5>)Sl6c7(Nt`5F z5+yk)NswHWT$WstbdE-RpmkiAwwN9Bka8dFDPQAt*O0HAdQV36xJ>Xf(LE<;(bwH) zEsQ3Ed$kVUe`@l^D95WnW`p;4$SJ53&dnxtiM$NkkSQ5AzO>^!?1{Fg_ciZfFv{c~%Sz_o9%ZR1<0m~RRT+5# z+Gcba_FJ+dIRdkQSVq1(y~R65mm=K;$#so_VI=k@445}mEKynyKg$Gr#q_E@RNLhJ zo+`=NJt|Tvhrb+JbFl!|U2(Bne|i)FRf;SFw|*`;Hy8jNl?62pG?brwv; zyIkf9W(u41iuE@(UX{oIbWjeP$oU1zr?)SH|(R$W;uGa^z zEe{VrurO&c)`RVW${7Fo&@bh8_NOEnJn9hWMj%u4e7#lo=(;MjT&6%WEGd`S12vNg z081N_L_)`d;!GxW#a{2$!|D0P-4YRaZnR6P);~M5VFA$HCOzv5RxaKuChjH&WPTYb zDo7-m>n*U`>)3T4=eBNP54~OqM^dKyR?-0NT|aC{ zckQZUu3v!;t)s!7xpxgKxer}g7kfEv3Q~W&u6+2_HShIm8Q=9ix~c2VP#>tDbiuln zKH&WoHs$quJ^0~`mtinr-8E#{USo9)+BcvVq(JoC&EoYd zg3$FM*_4+Tq_%7?k%8(GU+Tps9CaMk#k|`s&YhGT(dceAr_bqSt zb0?(QJEeeWz-UOQAPod``fWE?lLi8}@9vZaj%7)MRO}3?>(WW5qyf^k7r=FCsGc<7 zY$^@Vb)`WSB?JhEL4aE_5Wt{0OA>i6>4$V?h zP$%LPxxF_(o`4}`Rbg_VW>gM<9+m^5mE-`Pt{iZhA_wYI<$zEy za;e{R7MybuoRXK716JhS_R0eXjtQmZf&aAS!L8oNfk0u9*DVi5Aj<>qP2_=lfV7^H zTdk}-$lr$OSxF_NzBAqHW+gQSE_0Ao014a*z<#I#AOwl%i`x|dDNsQxy;lJwr7HmQ z=M;cUFjGtv00Be+xY?-y?2L*4m!^ZnZv~)RT0<&d>M&hLM-f=}o|kg(r06PwG&My) zy}?kg#8eS%p(2n^SNiOA4DQ(w8R3?GZWH-~tP(J2q6GXrrvz*>l>=%X+CbNVdikmi z<8qOJqN)vatNersd1>3{gYsS*Qf_jjUV(l87f^`sIOiNzFE0c9vj%`yz>d$%gvzZ^ zPj`P-0sC17c%Xi7%QeG^_yGCQ0u}Yp&%(j0iXpN|AsZ}9l{t{5O4PUbNnnz?lo{oBTl>ibKU1V02E03tazsW zwX8Q&Vd-%DXO!ZH&-cwcz@fL!^k!8#9jP&e!TFFpW>8D8VQ7FE!;gy`^MT5?_c zC+zI6H>&?n*jqqF)x;0OvwgRB*EJRTe zyFu(nLIpbr1q_g7gN23Vz5bu`yzl#c=R4;+zcX`Z=1%u7W~QE)Ye!+Y02ZSzvK>SL zcj|)X=EK(+udxnbqnZre#Lx_WC^)Npk-=g_0G1FEUZ!1VxVSjL7=TPM4=TIlyo-V>GjI--r2uRu*xEq32>uB9@5Dv}>oXxj^%*;B|MS!SUCuo*y zb-!m?$5R1Mxc2@$P(XDac-r0_p@Pg_p=UA&lJ$6Jb4Gm@M2VOckOO>I4nE zwZgSWuc|G;A)4b7UhI*1Z8X}B3&(0@Ek%zJB6#|`!CxG5M(5fq5q)1<4n8C zmDRv{@W>>UI7&Z3-D)Z(XVI_Yo`8GslgN(&4v3JC!3`_`$A#la7vX7PJ{U(1gJD>Y z1qE=w$^>q-Bn=eo+XE>kSK-fXOCmG(#A0%)hG?l>CaGAUfupY0w2wM`^Ojl9ac{R@ zk8PAFax{ZrgW$!&9$_2Y>bL!V_UAe_$_=Ym=Nwdm&d@UD^NGv8&xeB;|abm`wMnG@YwAmjMWYY z^TGvT6C@Mz@NT-cW?jNxLK5O7TyJ<0QFN7hT>HI?BXgrF;kIFFOzep8yYQP(LDZ~_ z3cl<;Y4U}_*K;&;WMV}pw6&~rpK6Hw60}5*mT^U~m1u4k zRcfJVquSC;dA$@$96R1MDkU&wr^-75-NOW4Gb=?l%0##Y4~j?x52Q7Uh_V6hio11> z;BCEa(WTJ&KnacmsI(cSHE=o8)vj8nlGD|eLPX(BeHLViy8F7Bzv_BfG2aF@tX$UT)x*ZGUeRP#Pln!3Z{~A*ITK{`%XLh^^zVC$t)^Z z&AR5%>{I5Z%>r z*~Z&Gl{{b{w1P_w*@|t%9^$0v!-h&AOSD2fB=iw`i@you7}s$pbY<|_-ck4@MJKE} zU}bR?N7_U9CEp+QLKsS)rj}7Z@F;X5#x2k-@DMTTOOE~tSNM_kgpR1ExDw*!RChv# z*pQMzI!c)o2%aXu?@DhJ$BW~{L`;l$n)+dVIxUWoDlR4bVp_tZca?arxD)IaOW-+i z5`HD>HU0r^pN9Kd^gmzlzr*}+J!+Y#96T93b)PV~LK}gUpdO+K(E&aIF}VXg1)Z?@ z1!xv`0})~nlzVLgPrz?dzx#PS8zDg579?_>sfE(@)enl<_+*v$Z%2ssj6G^*RQ;Y) z#kU1mpzSYI9$U5f@Q+264qv>i>375odOEEguV%J|kaT9B9SU#nznhk>^+=4P8~9Tp zc&EeGj`4=p6UAg`=VI3pvE%n2Vi(Ld+Hdh6b~0{6Yw~qdFqwWWkEjUV%pqQ9k<0NFC z;KUoZz;Jkle~()ywhLAg^+ySZSJX&A9K!{ZPsAM*4hPt**zkh9W1T%C2~mP_op#=R zh^)9TpK#6GclsjaKP^YM6Tin<=~zzhCSKuaa$EO!MiOB zz#CbIUQG4?&!Np=0_%$3$CHDyJOTI$I(6c0C$Ng}S)k16Ocaqs0$2cdLeP$Wk2|h? zTw4S}H(1ird*2K#p1t!cnM0sG-qW@Neq^#{HoJY^ zLjFP8iKCW%MD6kIBQqtlOoI$x6&9r7{s`P7_Cg90dC6`XTk;Xb!N2F_Qd>b5T)S+z z??Z5pUj>h!4*2bneexWXPP6r@hq3(mk00rmm`s0VylMZxBck|sf%f}e1!-~#MZO_(hq5mavFN^%7; zyoY6MMvVVr91>9|K`RP)Uf40dGDO5IQ2np50TQtk+(;!B)c^`|9=r!D6+gntCNe^J z8fi9tcB)-W5V3(PdKm8eNCY1)Ka4|zkAR6kA_4GdsF7?Gx_u54TV>`dsb?OO5b=s& z6T%)`MSY4;1{aa$pavv6&BGy*ofcsICF-dpeyt*$T7=L-tHu=%9#{RepJgt9gXkV` zoD1OI@?KI1_o{ZVCwU`xx!6}cEb$Y6lZ;5t2?l9w1P`1A<-jhuPH>oK49|JSfh6z; zOu%^=0S^GBI0iONfJC^Jo^ba=r+9xPHFEo*C)`bvQ5aY2hJC#NF@P{L0-Gb@x&t$M z)His2nk{idWr+zVvjchoS$W8=y5{grW`u9*lF4&Igb0W`RbTS%1f z55x%@M~L6VfnpvA7KeyKVK^)v9625KMtRdrZTdm89%@KH zJoRGg5Q?Jtf{(|(3v@-lNAgXj=tCmd#?KdS<$s)fVmydB!LLMDqs~r#;~z3;LVR92 zi8@%QFmg)WhCdT1P=7gDjHyfAo}t)^URe*Hh{XyT`AcURZ0f8XTIdSbJ^%&|AvHi^ zq+H5J&<*e9YhXVF={1QSKR$d18k!0!%EQcP3={RGmyTm>8#I>zv`*bjiTRm-j*2r; zA5or!!mGJT7Sa*Q66p?3oj4XlM43woti@6uwMJ|yZEkuD?@^wL-K9>_;}Tox5wW+_ zLCU~*N*~SK6aSw4xb;<5sFa2|=VTxiQnwF2?D{gB-giGHlp!rowxzg=f4F21!?b4My zO*9kHix4H!Wt#64QqjAmkxFz7WlEl3Asx@si*UcZ2yswKRw}_Bk={dZlAcwnmFlAE zrCGBlq$j1Ci#_g;Fa2yfl>G zDh=SbIxXja#N3i1wevbU&H)OJnpKdJey*vZMh27snn{D0w0`Fz=zr# z`KSLme4=@pcLu>mqJi#J#cVWq`bodx48jrN`uPkZ>k1l}PrZjJZQHfpVHG0e*%;vQ z`5hKoi~$>V4&BqU#AHul-eKLR-eFB(+FQyOB})t#ueT4ufY5BGkO{22eJPS#gatuh zNGWBuIzvtFsuE0li^76C@abtR=m(BWul}U22)|OK8KfrHqpN9u5!s?DOm*yuTJQNY|i zA>FGJ@fd$q=+9dqREyeAx6N}U zc3ryhOH$l6%$=AEoYUGEJXba6iSFh2LMd~Hfu{BjaDQ$ZcYiLci*%`+_Dpzn?tt#Y zg00q2u*s-3YOCoSaX0TB;ThO>lrOzlJ=ht74b}OaJn_a5Wno*qh5&nY1 z%A5HJ<<0J;A7a^ycdY32xrh{_3~(WebiCW=1VxQ`k)^!1-n`B{9p8!F;@u|qK)#N` z#0V@`Gpe&~=GXc!R%BxC(;mpTXRl|P&SOQ1Va`hXgps5O5eteERZxhS?O+JCFZd)0 zyQF?DkYsBBRuoH;dFuGHKzm-{SFT#B=!5XIcZA_)5tfpyra)+Abcmc(53%TQIq0}P z6dgCCkU4WUccbmb21BbIA_hpFiI{i#(av=c%_tHf6$IcV&-m5ATe&EvQ z2YQaif=5dTS@XFtl>keL*HR!P&jXM*|A!Dae+c%!bDpJwrHmtA;o`N*=BtiLb+*ih z&zH@=!i^)bl&wYxum;XY0UUe6{7GT6@)}0WytQ08_Z2Q#tzmx8d?R7s{O0+n`Hv=J zYc~_mPUzk8vD)j2-!gt-pMm}I>7HWpG+j(yEiWdYWQh=8=E6Dc zXgQjK>A+hGBqslw5h3=7m1L?ilfPvEj>2ip3NZ;$DV}#bD%&dl@HW&^08Y!c(9LDR zvR_zb8PQHhAq$SNSw<}Kpcc>-ObskA>{(3yVe)Ineod|Tx-3*2E3*PryAoj(2(>&X z>n5F-#iV`FDr})bmt>D+*JMOYD4a$aT+(4+yS^JPb){IRQDgq1;v{aV?3}rmtZ@%F zEEeW4nKF9N*BS8wZ|HYe!z@8v-QOi|ud(?KGitSp33XPs-#95f6!Spdr{AgnhipA$ zQHxs8Rj+Xnh-r|zEM73S<215HTqBOh-*wSpd}9h!24MPz9Boj3L-`~aVeX)&F=EB2 z;489rz?1bt+@cq6lf>5&lol=#Yh@!)sO11?lW8s}GE`;mgj1?I3g4M32kw}Ql;*?{ zP={=V?82UIs2?9Ie#fg7yAu-V|HzCNt}{X{trs@Slou!>$AxUX(?Xi*N*Q+{R_wG; zUo5|nww=A8zhJw-lKaxtLFF=wAXIRkcsET|##;zqh)K9dRjNBXbxeQ7O$lgIG@*7} zO}0Oj8mB!#(Uf5q1O`ovq=nJ9jeGjYj%J5alkGcI;-OL52y@#)&cb>~Q&uAEL2vbF zR({7b$9Jp#T>g_rUdUb`fvpR!?~-5rNt1eceg` zSpMl(AR~y`06fw}fJ6tB;T2w;ppl1#DPFB&F*rGcr$y6SbUym^a?&9zj7fDZ@IWJP zvrs(q-K=8f9Zbde1k(>bfh5TwjIBk1G8oS)gTGjqVul0GtUWVzf;}_NtjUFmh2IN5 z7seJw7e*F7fdMeIAWxVwn<1uxIQBY6A_kMUQT(7quv+hS5|Y6SF%Du0B8O5MAhsgR zHOt$l@m0Js)p<)Lg&^PWGD3GWt6!`rx+X}rzbZ&K1#*sN!vwEbiv;6CpI67RLsDNZ zJH5Ecv&l1O=0e?3qn;>_-A$gW(q1l;-?fD{?esRQQFgB^NQ?&5%Z6s!^GYAeci;fcI+pQo|{0XFr&utOawr^`(A%?V|ro8=SsN(=dPC{+j;& z{TtdC{Zv|%>7f}P;em9~Oi+xESeU+tMxp<+4=#Nnt62QQ&o=9nA9fs%NPqs%xlUP>EBY{L5!;C-s!6qV>=lq?Z;h zEgV(M=I5fj5H*fm{y}UA=HIsTdN|!rbJ4g}MC7n!>^^M`cai z)b$Ltpkd-7#APX2Q;Np5-b8=I#7eiV2%0V8*CPfoUmYpP-DsnTHA*5_24psH%woyx zTZJEikDRXXFT%Y0-xg04Vx@e;e8~nSC-g3TZKcZ*!(R8`S?Nb$bk^V25TFdv?pHpn zLjcn$^|`Ay)0!^tysl&-)kB~tBybFRhC;%e)>dpLax2a=C=*#0i3INvn*LwmOZKFi zC_qz2!MtFY+XX8wE(~Q#MrBtypFym_AT!S(3SmzCB4spK9b_?w23)N}<95h37!1te z#{dlo17ctdApnN~A2pd*^QP>O29{XBMq)uL3Jbp!h=u=Q!KIy8;E&ok=Y_UdISg~$ zowY>R-&ihgJU)&ci($hY^_3?>G1(_-V7@vO1%Z#S%Pr?R5Q=%ihTuHKVh+JBNie6q z5EXhwAJOZKhcOjAaDeZfqABCSkw`qa75M?iZ16B%ga?CDrer*rhk3vq&V{I-Q;QLJ z_9U!-g!$-hxQEU@K?IQCz&g1Yu^M(UxC-AkzGW|B2t|Zt4TxapXT1YFQAe)F`h9joZ?YtT*2nCqqiQKIkG&44 zBbir8!1QD&P95q0LLE5^8gXRMgCc|3odGC>78#t!l7VLkLpjM(2{$g6f};RK_|~l1 zof9ZaOA0KhK!N30wFIdE13s{>tNv2DMZ2#0*QP(ygxNB&>eMS&ecC$59r$#uZtw?n z)6xZ77Ae!J@qS_(YyS(|4NCR?pKdP=OZAXoPB5qb&Coo}h)YtBe>ng?ZOye7lN0Q^ zrkUv_(M!*%L$Q|XcvcLg~s-NW1Io;X(NppMTmyA*f?N~9AUGUz3! zD3D3t0@EdnJ>}HTr|(_A1i6-_E8M`*z{Q9+YTuYHZ+(*9xW!&f7CX@E%Il##P$@Kk z-nm%QO9da44WMSiUzaTjRP*O#Z4&~>N5uFyAYLioil(DC!8GoC1UEQ=_J6?ZRF5dz zr^D<2xSSLGQ};Iw%xwN_t>NaN6xMr&2=M@?Cg!^-pSdUS$GhMs<+hZ4ug20zv(3tP zX$19-tIh$=0mE<2%$4YNW*8kUf0X$v+IW|iLKm&TckBEf%SE2Md`;wFpSHiFeGm(f5S!p4Jg)QM4T6jPC*6=YC~FI0J7c z+Fwl2+`0qFRVWhgruL12Ib@g?prI1r6RJ)|Sa4_@=?)&4>WwS?Li&=;^x$o0@+Ut|3L0cMu#@z=lDw1j%c|8MAF^S|~B z#*Zy*JgXPKBgg)e22vJ|aCJ6iY!M-(AQIXH`iKaSoU=FPl6*Sq&IAq|2VuTSGOhybU32jE?o zKVbl*fgiYbu-rq=;OiU_mjg@jnEU16clnji9Xj@9PZ;VNaiiY`^8KqGUk=~G(D$ph zP;{++5>+VHDn6Y3)IGj`+v(r7${>B(SVZ~TC;lqqmytW1l~gJBI74dpsdwGZQf2gG zJ_f90`VhxmOrxv7{KfComoSef6z{`X%?X$N2OU>Ct{(Hr1;eDjy;UQ%Wvq!|$t7|N z(U#Ly^m*$4t-r+CG5W+loHipKm}NfXDMSD18KhXs5BzaXI_D(k-_#9Q1}t~6wfLut z9Tc)=m&ytJI*Ux36L`f1rKubA8}vA6M0U48BpZ=+(*Nd2OYm2JMED}IscJLWlF%_Z z;r!R1)2hk%57#50Uj*Y1-CNI5A-arSwt$c`oIf8*{GWWfET6UAPH{>@q^FFU16M0w6jnTbPrG8pH4dqngHU-A<_`@ zaig)XOP_^>+@9XJmX{N>d*V>ee&PQqQLx*8wP`ILq;6B;=$-?wuHC2p<{Z_jH~yP< z3VoKzlKiWSZ466C%Du_2&5|n9tQYWyG_8BOVM#SOlO6}+j zcWN%kVaxzG_X)EfxJ*1Z)E`6BF0#tO|62!fP>eWi;Sny69=6~GP2#Sr2J6hy5x>?f z(XfAMSwMfteWRAHeAT$`#deTP&!nfov*v(L3Cf=nF}IbTvfWUzo}jppjGAFCed>@ms_ z{o;FtH@@Faaoc;lGPFE%gmIrn2S~Y2;!^xA+O~a_dv+e#l{RmDUjL^SKj+`pJ?8Vb zZI@`>Ezn&y90@9Uz(MWcNAee4vfod6?%FCTAxewy9aMk5-N%O#g*y@oMIt-#&{ld(Rs8K#vIj zy8iuN>1`VPUGgt@nve_nwWF}f@R~UcieWse7{-epgH&*B`CGOGI&B_FcU-<9(3PG6 z%TYU`?q%y~>uDQkckA7~xwCuC+x!_V+lzrUHv9{i3uG8QVwjD0V3gaPQ zf&SMt47&{gJLNR6Ht(W^)dpu2;b@n=7j{PJxACfD-;ala&+;z?{}?x8`{8-2Yi{6y zzM__35DMYp$s+m+2v44&=>v>km{FU{Cc5SEJCwYD#WdE*7U01AHx3H&C8&n$X4y3( zZY22$TPs};{|A){tP*3;{|IFYf73yna6}y)f6EqVbLqp&U(fafy4fdu7w*sUAxz)@ zwz;a23k2Gq@Ne1u;Q#jJs^;NaBZnjLqg<5hd4KEpps9~u_O(;IdgEU6yA&#P79;>9 zGf7eTR!U%HFm}Z(VF}4hZ`(rl%S-Z$>?)2;>MzzGSJvH?U<_6$-`cPMU><1#s5I=M zkxZV={+Ff}J&mg>m*gN~XV4c8cfz}oCvac*t43k918$eKiVon4;olaK-_D&WXq=&~ z1h0{LuryUHV^r%c`xH$E_R%&i4AQLO6oz1zL8wk3bi9U7hCbnU5$ul*t9sSLQsEZu z$T>&JhreZAb;NKiuH>v-@U1S~(!5~yZ~Px55p~}JmJ|T@kd3@*y(J#c386YdpBj8& zfV*DTLObBf4I`vRT;sl6U5YyX+%E;ggTE#&k0;0w&~_AjV28rf!S`}cay&Wf!~e0@U~|E+WxvzQa5k$ zZ)wOmxFQtZtLwVBl3#)%%9o=q*q49`>AKW7kinZ6oadt2&*K)pAE9Z#N{C1|5wih> zgitV7#K9vqjMl@;g4dG2%8xk;$zTq#3ho{2xbHuZ3M3ElK*JgyOj~O3ZCIlMZC8Ql zw_#~e`i^D2eB781~@iQ13Q!t*EH*TAXVU!X=&fIyr8y8w|Z`k&Z2-jgk|P( z_|1?3a=^y`c~8V-bi(}qH5E(Z4`K z)HA8jzbb(qX7?Wqp%S%ks8JPf01`~0;m(oZ-c$<~4yzD0*%Wgde0zZ>!4@9zdqF-d z2hjpKe3bXN$@6DX!|?Gr6c z)gRFws64hB;e9oC1WT+R#$AejR4Jz=#{-l+2e{|w0wL%{0JPGTZHk*>x@ss}9#nb0 z*7m_VI_4EtQom5csjzHEIsEoklYf(XDyN^jw;817iA-6&WE3fujRGqU-P8}4y_ceV zCe*Sr2XjS)Yv){A!{!NCXTW9ux%&*KU^ckEp) z+lZyM-`w86D*{I&tzXVVBZ{8yoYD*IM!e@s$0^Kk0wA3d1$4Q0runCO=aerc;h?jry($I@VBLpC8f^Xr!Flo+6SHU7`(Dn z&fDDWP#_B&T@F%5$}JnYa8?)CgyxeKQ>%WQY}{~GFUM)8d~@TW_-C?oa& zFI-#Y&Eum+xcAoKMk+W*;uG-caAq$xSY_*XoHX>OPx->OVqK&Pnx_eHYy!AVuJ~}^ zK9F4U%2>Mc?SU%XiP1GKL{x9lm5LIrK=X+>*AsItv9PC=I1e& z9h_N<6(uVR-QwO9jFk6o4<5$!1!&AZxw`;79Wl>l@;e+zbHnYH#aY;5Q=X*&;ovY} zE`G<)8VZfbvyr1XM9|87Nt21J_U!=^Po50Twf@KgXZ^UpPTQmt98b;-v|FjIboWX4 zMmY0;K!FTtdcM9F?Y}SY4~lqn`p|1a-uSg&N=`J#`b{Z)l!~9U+mxA9u*`;p3?Oyn zp)+-d~iITHp9ERY<4Q3_BkT&8E$I|V@W;ad2fv2bvP;*_j;YQr;{q5u0Tunfw> z48Vk!PfSF~s(cOShIon-0QHu6OBSEs?cNfJ%<8jvifBN9W$jImmpwK`IwHK4BVlrg zkp+RzP5h?LTw49mD&}Wt=8Gz(fURVkkgzWdm4}}{-2CWnk%7GK33Y{MPu;DjD$4hs z)YS2O=Cyk2z~L9sr<{8qdF2AY>OHCJ;rTq^=v3926{qw=o;_cAYpS|+?U`J#8?ZC^zJ=v(d5~cuv&2Rb<2j= zvWoqy6F|)Xsmbz*XLtHhLG9RzChND)x-)MH>L&L#*^bUEOOo-`rU3|PaC_QoXnah% zx5P;OK*g?b4fP)-%WPgq%5yDUfeShh!1BpU3GF3vT}MH?u0N|t(CE?7WTlo+lH(O5 z*S$?w&-HnLo4tjC(Z1#tv0l%2B@8!CbJ~%lgD&7oQIn%6-nU1-?-=3g8N0=211g{Q z{RC&U{8$M=P5S+31F8XvQ?(LN!Dtko)ODom`<6^GYT4oX{@GrE2M<(L2kq4J$=@Bm zgvE}tdUye}pIdh<@LHE>aRB=F#&s^2-`@yX;3-)%_PpC}4sOIJIw*gH zIlyT}duq3u?(q|Y-}#jtA77@bBC)$A2X8V%lasa-t*JE(FFn@xGIf`<29|2~IJQO| zp`KbfRo{DO%wP!Y1$3debj*qaJaDw0PRrw8biRN8VmDhAt4>T&{+V;}&-G(c>@}1woLsfhAh~{zR5>auFaPn4yv}_y z{Ae4?VKZ@-$J!TZq*Sz(kBfU++=?6CF5Unr_-O%6@W{)qA|%mxlTr3}8phDf!W7!a zq@|8%co3pO4zyHTBJvW}IK^QdEt2;CKICxDt9OBOrICJqY>C~=o=z{;Nv+(m`$0;( z`&*G$j$boeFx=BuBfwo@+OqEVEa^}jM(qHN0A+B}r%VNI(u-)!S zIMrtVW9=o(!t*g3mKwc(>KiBT7W4My8ne)Ri%E%r3Jef&<0^dlHs z;+>)R*tmE^`@!ikwXfv7tWo+txx>`q)Rw8$0 z!XSRjjYiIwRPTzdLn8;H9~#Lf_oBAdA^)6gTmhZWPf1AAP-}Vi=SX_uQuA**7n#o- zd;~{7&W%|1-0a@cy=gVJ;`=NK7Iq7T`#62fUG0{`9^=%-26pNz)FiLf9tf{i2*zBO zLTpB9YEs~5Klf?t=Y{sEmptY_nc}v--kR)XaC*K7^;M%cMQ+;r2z}oglhYsTM)s$V z){S4;YyPBPHhqm)KUSPG)K0xGe7LKY@3&=c$Zg#}4{XxAszPiBI!d!kEAI*l7i_<2 z<%kdMmkk};QKGIcx2Hr!_{+HZ41UpvB2W7&%9ew1+Kcq}>@wDvMsju?)%rly*pLKp zDJLtE1HCk~xYMZe!V2dI%{X@HUJ5sl7=2{kIC{Yxowd^wpSQ28Mr}|N9gTSn%fC(#sV&H8@AOj;3axT2S$4XNbAiEXoL`1gdO>$ z9Tk3($k<~;G+Zn4(=L-04f*j6`C1v-5;MZKgI116Fx_VLJlJB58Q3upi0joD-~kkk z+RiH!0ElNvl}u6hs@vAMEYW?PVjwX;vZTjgeMNwUo<9N-mxK^1^jWkG5Q)f-tzGA(Qeq$Lp5N&+mQLVh@7fu?iv0c|`$;VZX< zlF8m#QcQVSWF#rsyQ**p4`fKdtqp~ial4$-6&&K$ZhVL8_06`wYPS?I>j9EOjvxi&UWLdJ|oo?b1;2{7d&iXe*RHSQJcrP^s zP{IKfF|gjRnnXt6x@i0V4A@EsY_kV!w@0ecoM`-2!MxtGrURy-0p+|_t(HNpRGQh( z5`-ckg&#oW^=c^&m|`wzCl%-`U)KL*p*6#+px`SaUX`<3%OehypJ16O#G5G{(fS;% zrG~F;Z`JZSUCu2$FiERucdRffMp?BUP`s%%04gUPtK2=cG~+9x+L-pCm5Sw+-l1lu zax2sPmt;g#R}>Uhv=xSxIwv8S`4X!Ajq1Ge>UOXyr*4`*#%~~GzoOFln+EkWg`F;CR~H)s4Ia8P z2x7?d+Igv=^eWqTBmfzMABSm)KLe@OQ9UzXeok&J>L0@_q`N> z-;I*6o^nK@bT8Kr<(ug}rx_u%qVyLvM%Xws5YD99 zu`{(O+*5mIP6s|ez4Cblw&E07J7}ZD>8Doo@DHcfDlOvWolfv-nmJ&Rs&s18>Qg7v zPc=u<^m+rMe>PDX53avup?l&W$%*FoKzn1=>5Z#T?NU-I)o&_yJ{9unOeTR+PN4Sl zHKG!l^{jXAn59|8pR51LOt9vJn4L|(#d(!~cbBXD@}l_{UYrZRIQe|dl-EVh&-3WPB>~8#-Ghp>O&5j+ zNuo;^MD)e`I;p+RT5k%@6P4vZ>06OFR+M(_R1K|qI&)*%rGT~ziE@h%Fsy1S4USfx zPcpms{N?#X0gTnO6t^1In_}%Zkldv$?zb;AJ-#rWewiwN(I4$@?!PzYRY+O{Z7@~q z*?=S9?eCqUw1*o_#~IDU8JTj7sO|>g9JjES8XYLj9jO*k0+qRNqnQEx^8{$Cf!0nZ zTE_r1tbZQxEV-E$C55X}!@|;+Uyt5olD%9bJ@7^`xKTWCy{w_-x3%RPIcy10GiCXj zeZ<8$o1zN`uA>JP=bm5x)Nw2SpNq2cTR~V*zg(mA_T@cN)II~PsKCpK2d*c!wN(A0 z?R2_R*4`$g-C6SMW@3S5Kml-!X!)(QSnU_}j`HoDr;*mnHF|&1#6PKw;=8i6yS)Kq z{k)Jj4-S4YxEk|Q?U~cv<|PTTa+MLAMIUP_^fOP-{-Pa-x*H@=i5$K^vd2ccye-Uh zao5ai*Wy^29Ic_ggx{{c$ zq_^e*{(#FO-ue4*k%Xw?jeKB}Xp~{_z@jCe z*%)p~(zLc+!uzfNv-82TLHpiic95tkgl!)mmBF5}<55c%vvt%_0pv)7Tv^($x!N-`r1(e3tl% zc31H#!9c72g?0t0E9kXlNxJ*Q66b&*FdEW5vaNe;uh)~4dbx-d^oE#>D!p+MXlM3B zj?gA*yJu|!f7R-RisbG*Fc8<~R-2`wmiAiu_wp2Y(rsRiY0ym^I7?INqWSKU(4Mlu z3P%8?HsJ)&&V7Mk0?E=hHz zcYmZ&{|Z%#PtuzeWD5NJik?Pa@_1m|RRfQ2w9w&{T@fLZw3cnO76(UzE#|f*NIjn% zt%bQlEcczXKzGO5uq$nEtCd=M3Kk!z%k{TN74c~$2TVA8pn33_=5m_IUk%OGcK)eP z8-CyUTjg}p=>WM8$Hw2++P&k@!Pjl?q44+giudgW?|x6!K6({`o{1Yr#+MyEo4djA z?Q6M`^Y0IE>RZa2fWf2bjE$RPVwVj0jruLkcVAMkxAc-*>}j`n=4aQ3!`u3kyVG(G z6~r_wO+H|kt)rmi@ATbqI>z5;NHUi-CeKP0fA`y-ll$#^J#HlIUeW>NcdteMu1uEK zJxhC^&rUumR%O{47xLF$8V2Q~I-5rmmt-U-yWSZZ{r1M&Oz3HVb3;8b*fUX0>4>=# zP*MNZwfoXwIpurAMD`m03R-d+LGvVMA{({khsOjBk@U9V!swk>L-j*`aY5-#KA)*& z$!i8x`h%A>(w*;^{XDlQ{f={3BW|esrE3cFhoA9pm1G*{!r0|x=Q~4*3Eghq^&W}h z!LgM;iCtrU6Qf5Sc;0c2*@PZ{XE)(zJaIHYFLq_c1)m%jbvLngY}hxIai8QrvJ|D! z@o{zJ$)+@)iLCbM-;GaVII=%$n3H4flTSvnebFn%Da!`dRKPcDnqgOPj3)!iezShK z-`~zq{^~iS={DyxLgBlr?f9(|RPnt2#{;n|``C}fktw`yPv1!D%)=Pg%+$wB0YYiB zZi=g~=Gga<$*NuMca96@%d#g{q+S)e!k2JyzD%xAV+E*fnu(sWSjhD6h&eXVqZ;pO z)+hS&rXrXr4iSpX`+5`ZixX42&rXOwTd-=n(x-_<>jos=G^wQ;h>?E&5VE`(Op-;a;jTkMNhx)rv4=N z-UEnhPZra=S&W95&tB7gWTP|tbNnMRDlA<3S8n4NCu)Mvocp^iGIYa&N_LpUez&XY zcyeX!%dQ|bF1^7z+B~%nEd+*6wLBCaz_&xka-_fWe`^rhdI%5kX2nH&^QH^Y zUwTxs95$2}%@s@s8lObE`9}l{LYfWt{UDjMiUs)Wh`L#UnnYR96nhwnu z(BX#>{+eOjJb#+o8ztl!9EFQ`SB>sPnsI62x_AyD&)K>hZ{VcehdIJij&^o!1m$~> z4Ty{pLZ9O5Mj-E0$HiovX7?#3_{HWuM8>5O9lcm|bdc*wUwSCT?Icc~zH)#j?`RQM zycd2F{n+MCe|8?RVdKMcgvx`>m$BXJwHr4U*_Z%n@JX7DC_-a#`*eZy}Ag}cSKhHCjn3&LaoyKMUyA*JApu?=XvG> zeyplm9-T<2_`rR2fa8Yn!jyQoOrr`5b6 zZdGFC8McOTUQOrnPL2vPFSo&ViATsB!e$JYU)1u7hHcm2L8x%rouUXHw4D=TL0T9v zD0UlhmoI!6N|H;Uo5`;G?j>~q3Ll^fT|WD{Dba$Y2!6ZYHjp|gXAgMcj7J!49&UFp zE)TuvhC(V(%q$gE=b|6-cH>uZah~dqdEjKp#BpmEWMC^XUC2CmBJom?rkId&3T`4LD+aD8l zm*F^=T=UU5%>%{EA@#C?&Q-fdqa9B_EI)$_9@uDshF-A_Y68at>oqpBpIKw{Ru`0i zT7Ghj`x`24uv+aL^&q4W{|0?@@QtxjAoB;EmTwV^%iP>_=OxdJV$!kt8)Ks>^|3rS zjGF|j9~N$J*PeV(uIsfWp?Ke8`JqteinYrr=zQ-_(2@@A;)mrh$ve*gtpF7uI1uhI zVW1tCx-$pZ%G&MPImgtj^Abm00qWQDrntP7R@b7RzPknAu5vgn?^^>kt3x`3 zYdY;%(z?Ol{@^3_aN?5P%X~cbJgMm&>2U`WJ4{di)9eU)3t}rbVZ(N}e)F?GS+wPf z#d}B-YAf_pRnofrPGup$;}eA7Yfk1T@=@tj$Ks!5*F0kq_KU_5K$_XCBVv1HkcjmmQdmxvx1h z_f2xl%o&>d&XF_Hh@u~w`-&*!NFn65C`r_ui4H`LR3i#WBT7>J_SgP-pY472?0NUT z-{bQ&76D5jRN|O$E@T2;ixbQOI4%;c6%k!@ttAkm6!nJ)CqKKRVZc@F3>DD03SmMd z>Dt%j*$MKAaSP2%<2{H?kY-15U5E8OsPXH3=>Z=wF9e8qLr*6tNf7BIf338xIACD_ zl*Yk>kk$tjhU_wFaL3hd06CtO9@B-h_B#kp-maj1KZ|D zgJ4Qr#Rc=w7Q0OKqw!?AW`#&rgb4EP!=rumpCkB$hT9BZI1TYH)1V;0GD=ZwSfP~1 zxc_(-+3Wxd8hr9ooM zPM*>f1K`^LkDqUMdSVptB{fl>ogLtjVEkBtpz)@Mz=;C%&r~=K@*R+*()0oJApln| z;8W(fmnQ1(T;gz?c6q+>VxVp+^=%qfvBPse<$Pr62|qbF$P)@xlTwkV%nHjU^&b~< zsjZQ6Mm5|&N}p73a(=6jV?`TDv+&M@pAp9wX{A5Mo+dm5>oY;#)e7t7?4?5O`fr%x z+75#jTj&J2z~3hgw=sany{HjRJqfOG7tnNWSWN3sAWxd{M>&#Kvu+l=36Sqbm=;Ls z1$Yp1cVj{Nq3sWAB%Nms^P(xR8#GE`kx#W8&B0bUW@t_DD}gfYt(}08MHv3L-Fz@`l!=nXq;w-MIUC9fm|o;#^}`#G$luoo2q=^CIGq=xcSG%H)DZ-um71f=Ne{>-` zXBKFWm`xD@aazCa;0sfpeUyQMv{UNMWzJy%UFNVT4EgM8%7XmS9<`L902`5XYUqB} z?Iq&7Fzx$pzUoL1+W8GDQK#Tzmn~&7&9BdQ`6q2mG}yLAH5kLG0(QP&9axm^v~HfG z#f)lPX#0M3)4i;&DLxYU!3HL=?ucwwz>JfpO(wZmq%Ia))RoOW=3Gb6m8*|smX>5Z zLgtBEf}pm%=zEPt)iez3vd-s{A6c+L#3!BLY$NJyh;Jkqr?(x6r07?en&dw=8{U z!yB|zZxv;+o__IH7$cBcaeo=rig||o(x$bUhr+tj+RC}u4hb2_-Zj1D=PTVu+x*QS z6|!2gCCd-2DUBdm*V9kR^0=;TtYkgYKJi3Yv$ov~3Ub!hv-Bb>1|0edf6@(eSjX#7 zM)b_=43|Td^TiyrZ8j$g0@L$+pe5YD#b`r%UX4)j21fA9?u*A|^y7DNfGijGh=&Gx zpaW=A_Xm2@;Fx2nLwb18c103FH*tv|x2BKBGiV*ODJd*vT){LkA!=hgjQj7AmgowO z4mtqfWXBKWP4|Xhmy66WIlHGbvSo6fCVoXFScG8H${F&J1JMmgjsB81)&Ju7wg8iE zc&Pbk1SP`qutql-h*XI=+U54;)u?CC?+^qH5yvy3Yi#v4^!S-ODi!Qc@2YG&)%u3XLf7XV$k|`qqy_5 z^(hm~4X^g;ns1DDqE1_dBAhtyQ;Q{LG$^4dh<`M-EMz?15q}2&a~;qUK^$>--X)*D ziVHGW3A&otkk}F=x(L3@fiLx9VkPuPcR+F@@FHS+o;5He*D8I%WOzm8_-`7821euK z*Ta1gN<%Kc1Q8Un9_xix|OfT4F@h8!Oyb93XaFsH4v*gjD(1e zcDdhn>Uxu;{fB<|`s^r^^T#oZMYZBkTc}^^)lT!2 zr0VoT6}8=;PIJEdk6fL$0**J5AFOUbZa7en@mWzB5mLcKX38VlQ|$PeZV^PxU6*IS z6R)X#Uxm{Eob9VR5RRzY@1qP8tV~I}eoRi8dd49FeW7(Zw@TDdA(Hd_L!=w*HxAe9 zZcC4=>XRuw7sq6U$3OiBR)3N!E1Bi@_xjrD@kSb?AH}nl+d3mm8&*f;4&wPhG=IS8 zC1@9T(7h^DHJu~`zKsyc7WTYqA9VTTuUI`*D*&PaK@V~5dM2pAY+wSe0q+j@d*|ah zTWYwu^{c*ja2BvQSahj3gOsZ8Y>zSJxFEb1!GBn-$|WN{>2@JP>M{yM18ChkY=1Yq z{ttZh9u0%ywJuY>EAtm#p#R1`AZFvF@iTTFNT*sn{l(*j*}uS}QNbrOI;vJDnQZz_ zP;_q#hfo-vNOSznmh*;bG)b-i=N7TwHeyD14K=L}U#)9ucge;l067BEhUfw&JYYnU zHSz)i^n%u+IE;A#A;=#lHzb$2pV2HJM9cHTe|ov3+#$od%Kf&bu;o#&ucDMzGL(lX zEC%2qfl$V=-;mGyxI=s_V&xII;E#rhh2%FqNu>uh8UY(oe%e5yAN>##LplA|)KXPv z4e$(H(ISX9+Ixrz{Hie!OMOy8dB;eaLg%C_13;t4BY#($oPWvzTkc1$BBX00$MhhjQ z%JA9X0SMy7>8>M1pR#g9LG`EQHRz>$Z=pMdwfo7hR{$v*{?(_QC3r+9Ph2@30Ie0B z(DYtrBud%8kURQO@S~x(VPlRMnUtCcO<%LEywe%mh5i~q;X-~r9Bk{1*?P(Rbu9Pu z1Q8HoK+vNSe%i~a5C%5~?U)eo)DO6v8jj&Q1f3gtWB`M!1ME95E`quc+s?)uex|A` z{OuQsdnD#JLk9FONBxR!+69>oK_W(6g^9;Lo9&k?MTJ6@B>iakBb~Io@ip#qA2XX0TqIvf}o z6A@A$|CR|ECi zQ>7eND5i!rqj1cPTc4&jU#xy4gHska>l1++7I!{I<sLX(Lz5UbpfjnnEgSD5o<=E zrvS)hh&`1L!ukv>_;Xta?(01xvb!(T5w03kedtTvXM*NM268qQg@%JmxNd z3-q`lcPX9A@(6ht`RdJr>)Uvh_AmDn3Zx}oe!u`ORj9*3AqT|7gLZ){l0pJ$91Q-a zmMrl_nXLjOk)%EcML+U~=cfPRc+cc<)gTSRF%ijmrAeL)V-XS2Qzl`VRF3?rqopu> zzwnxNFh+q=Zm-2&e3vZ+S;gJu{K0rRA^ymYN>kf!ll+uDd^b1z;mbRjbgX1b5t?nL zN;5-e)Un3axB?}V&J~NVMhlk6#u;>N_HIE}scDndv)d3W(~~GI-L#`L9+3e<2DmK% ztq!lxmkLaIU7HGtWCQ^FI?7C$_c6F+ zCk4FyaM;nWc|kIj1M-$plsjFkZ8+||>iok%zznEFINvmgob>;|k)EMfOxeoAR<5x2pAnVq?h zcpEt$cFW9-3;wZdF<4%|ATqsRkH|Qv;YsUH!Ne~0zy7lX)!RVV=_#ihw&wKr#Bi6& zEQyX*wcG1*=l_)mO**Ns|!+iC6niAjDl^N`(TZhs@x2P@Nr*!BwIV{!ew zai5iD!f8v;xVS?gm=*D94Wp^DL$~WYW3`iILlM_hG-Uvcet#zIHv_bl3TfbBKm7`I z5~>z6h8122s;M+%M6NTtc#m=?^(*Uv+?e8rG&%YalYYD@kN09pZn8%F_{Zf+$ZSoWV-)s5=McgyTwhxgb$S=X<;b@a*V>|u`NE}sH6S%{owAOs9-nfZ-3!o!Dfff9L>qfd3IP|s6YkQ?rhVNwY5Wm})(1Q~PlUaAGRJEH!eiiO`VZQ{E>-Bbf{1@#T{}+n|Ja}b(gyx56Qh5In~w7h z3eCs`M&w_^`aXY|NfZ9%7CLvi@@_zi#iW(Ue|o0_Rj~|VbT1kx()rgO3!(1A({`tH73tJdIR_3V-(Pk0hxlpnUM8_v?j1kaaw0?TC&pUoQRPqY)2b&!L{S%Ll1M~Q;m?S5>2UYlC@W1S- z=&gR$HR!bkzI_Pc74i@${s}#~JQjZ1K&^s&?XqL z(9n}(ojw=T?=M+l&&v$Y={!2My_s+RV5nav(XVXxU)9tDYDdNT(`9Lu=*pYz2?v&n z8)}L3GrN?bl+Ke+c>fFkv-zTP>I^B;=Y)xed*598Zu|S`il4U0BV}q>-5*ljXp{=l3Khp~AQmwmW_Gbb(7}Z0EoKGBO6W;P|bDMV_|042vo!z+9pcdR3xpiLr67!nDg@4h;NmEMuLME%t zhsCdUyppu7e@51S7B+0r`yOQ6qY?kjc-OG-^ivk=-H&t8zlOGSDk?sFPw{=;Ze{Ud z8@QNRvKyZLw{wlzGPZZ_Ghl1{1;1)Ok&YfW=8sF zH%~mecj<=`?Cq`i<4ixH}?04yr&;5z_Z|zb~+VuaPRh8ak08~!t0b-E? zAN9Hw4k8QmEd9ZR@d{HSMZ&g77Tnrve;eLODOaRmvwKxD4_|t3bw>9)zNKIiu5G!fU6j)Z^@cX?e z31LCO1)}?$@7@5ky}47sN&JBZutS9CbVG6P9tzURm4A$ZLhnT#NkuU zU<}4IjA}VJnU=LeFev^f`D!i=o6}jRB}Ol9>zEQSG*WQUMu;h$%`Cq5P~r zq1YyR!r~+;g#BdIG-x-}k>;KXQ{Sw^ zr{Zy=VuxI#@AgbXKr{^(PwkaFbAAlD}8tU+CykOjzZmflP2``(^NuR+tt=z=-|w6C=w4*`p-=dC zPh`#OM7>N`yB;q&a1a|Iy>E@ z0lfp{;FPPl&!743C(cix0@W!z6By$(PJivV`wpp>rq7nRtJ`H3sj(~xb~{yz{Q#8$ zx@Cgl-2s{hT?8Msp#2!F+vlVJvFRhVj23iH|9*!-LE7JBI5iw`jElH|5n)C60dTqW zhic7cR{F1})3laax7E+6x${07ctWKlRb86Ed8*m*qp9H-^*5C{QEyq!1w|)ZAnYAa zt{rDD0Ma|&Nk8=~OsyZOFI(U}147fqR{15;;I#7R+O5UM_M97C^l(3d7emiZ74ppV zMPXZqe`91LTnnrUC=yU4Ncb_p6`a%xL*QNO90OgHLS223p))q=Tp-t&YUd!q4NAWM z$t)X?LxR*}whLqKo#XE=5CsHH9;l}mnbWF4bfKFfeIyU_JLC*pe;~po-Lcv4$N7qg zvlpv*s)TkB)k`1-q$r~mwis}}I-_;iPailuwGZaPnupKs{!O@@BM}vrjiG6G96UQoWq9RL!*q98%!KQ(1zfOxu*0IeAKE z>{9HS$mz^792{@<3usN}p$Kee?t{ZhugAH7mjM7T0T?rq_RTcXUM~HI5Vpv?>mPLL z-KHCN$t9ipFn6Ar$tsZ~0kLH^I4d2dU=})hDC?dfkUHFJBL>#y&1du?0{GODEdpvB6Rl(2G z0n4-?Q31D_>H;}l?3}L~d z+71p-Xu+9x+3(++Q|H3xESK0>L}EpfrF(SHg(%k-e1g{xrE+R?1{FL-t}LG`z{h*N z1a+?>BNPT1`s7Ftolhk@#6b_8+5!DQxt5$lQqvlbA@-ZVZ^t7fZl%Si(TGtD(-k*; zG|l}-EW{Av0{Z4&fGr5hc>#^xN9oi|#=SX3Fl1Ta2+fxZQVIz9MegNldq1&K zT+4MGkfD}@dIniHly+*P*xmcCXqaV2N*`Mlgd{PBhq=_HX$&oV`7T8Ky4qZ0jJH0G zM?N|kD(m*_S^x}jT@3wz>Vmbn?vfhgp<{fbS%`yd$|MRALy0~m%aSw&N1tU=WkE0P z9P}yfl4t9j7J@ZdG4p}Oi!b!G41C&_g_uYFg6IL~gND*!9byx5QOG=}0X}~@eYnMJ zQ&vo#nemNVLL3S_I=64>b9CoiVl)YfB_b~|_@ZL}T-LK4Yw)MSTnCQ$$M7Sq+zOe4 zlb4&trp>kfg3L+O+SBs^&bKEpvzu6_phu-F=<}<$uJFES_n2li-e%giC&s zc_IaUz+Z6tqY%GBen5tO)>b^M`(!lxi_D*rZk^RH$$x1V>UT7lJI);SK)KF82BWoop$09=nPgh6hD0XXRX1@i(4fFaRb(X z>21Pwng`Nl2>j`Y1oERbppK4}cc6rjLSy7hmI0bVWb~}eAS^Y=PsDkzK~vGM9jI|n zoeNw(1r;#9cm+H6BXmaD?+@i5OGj0gAUGzcht4}O1a>uU%c*?!QwVU^sm$J)D2urA zaRS_>7@6mBn*b-C_S?G6&Hf2<@~)uIn|Qi$214tJQkY!v$044Ll2uIXR!&6Pv0N72wt?3+!iC zE`c@N52O5(*(Z+`n4t&pi@0~VBf*JZlsx3L`rPc11Ckyc) zF^^3C!sXE-nrc(-dH`AqNXv~B=nbu>!jjz!8LBvBx_hCYTvcvX=@#rDP7aJlPX4aE z+7S3sYHCt6^F6&fc>k#5kVt><4Pm;hn8xw?tAr1V))PV~erxmP&j7wR@YVO@uBg7+ zXxi&^jw~WsYYYTT)68FE$xvk?nFYfDNTSs#JCU%2ksTqt<`s0ml%LxT$ob)q`(kta zCJfml-clFf#9$}yiJ;bDPa)NN0%E|!-en{UHl-*wSlaGVwZo2++`A_P? zyu)d+YKGfZv8wdRY_|^1H7_ru3m7<2r)o{EGI*DdU|&)V=D7iN$R>(aEF9#~;{kCA zj<@hBDVGa*=n+tIYxTc9Plu8_K4I&gl_k2xVP&2*C2eL)r!G7{Ds}>;Azc`j|1My1 zi-;Ab1Rmw5>F2-V?dNyrd_y9;9jKQ?eOPtamJ`FHPxddd_t-6FESIS;z2y7qHj$!c z0|MLDw%51pA8lJZ6XTIW{roiSKwUlNxTC0D+PV3UH!%G{ukq$pSi2!!|C5i4ocf(v zCxcO;(5yk98VP|D4?n(2;}9)KDq9EmczITd0rk4ibS%L7(t#1sOn| z4yQ%}d;=U8$_PSYqtnrZT7;;EJZ|z-M`<~U3}2@Hhc+!2{;KgGMDo`4Eowq4?7Vd( zPST5v(D2RR*pvG?7=Qvr;tz_{4`L(JElUug>`y;21*>?z}X-q0RHe?F6ONn;a8QMPr?> zJn8pQ#fC#?w9f37$f2o7fLRv(^wtsTY19#Wl|ruptXJB7z?NASI`s8igizvl`LpxE zLeL0~C#g}9*zMJ4jVFzb?b49R{v6^WN0OiM8)DyplZB(-@G?Jr9}I3Wb+~g`BUa+Z z7|*A>9Pdorz(U)0z>SUPwd;XkpyboN?PxUn6L8gGFR^;b`M1x$*Vj8T*LY#&XfSl= zWAvs8Y@z~UGiow3axIL6H>s+BWw{?yHf)L5wl<834hEnqh!`1Y1=gllEWgZ0!p9&R5trbWkMT( znB%}iGg*KRdhpatV+H|~Gt3H6hPd7WvI85#G=GacX?Ho(Vt`8kRh0d zOvFI=yd}0EagnGG`jgCu0na~Gumsjf`k(>|;D>|JG@OAV@V87SC&1Q>|G6&)b_g3O z0MU|cVC|V8zhohx%DPTHA3LcxGa1TuY0s%7z&Kcp=3E?R2X<+Jfe9V;8f$v8k%xQJt*N|Ycr8eM2f#9LjW+x^DrI6ERFNj7^ zS$!ZT15yQv;GVk!!NbL_9i)}50KHXcn$t%BADi=mT`a02+hMNYVO-p&XokChdxX+! z2#d0fAWT45T&wPKJe44jE&CalpR%)wzyQ*e9a$2F@$IO26&Dt$#DereI0t9}$EX<= zsIhuQk=*6d#M?2o1_lgdL7_==Ps_KVWCN2Ws2oU^#7kry1;qgJ!%#d_9mhv(p#S3% zg$&cH(RS>bGsYAIRl+f>GJwr2Gt)Tpd=~ssC{Ufd>|W+A#!o!?>IC)lxLOm48MD*r(Z@-ZIOuLTVNf8V z-f4MRd6U#;8lWwPy}_~e&tHIz!lm7qyZy!EnjfHODT0sq>@)!R3BD4#>dceMcmi-a zBY(>J&~1`A3$2J#1st#?kmxAKOAD9d6$PLb)i3YXG}Dwhn?{V~=I8;v=Ed6hO@$N5 zPxQTMAZ|pG20JwQi*cb^Zz9+rB|Pmo!9~bVlB&%FWr5X04ax_Z}E`9{fmHeBj<8?`OfK7v1twBp}S=N@2 zlLii}gp~D1!Pj%xa_Xf_dli{seh2^hHH?wD$oEqF`m13trtIU+@Db(1OG<~@na^x|TXYHgJAn}J!uKUl};h{Q{`UGIa1 zW#2j0G&al+ZA>5?uUnk9k)m9jR*DPI?vI=Gh&k~Z8NCgMVkLr$0csl~O|?chzukDC*p|_}()7TlZHn^f z+5OY4KXB7cVG}w=&8*WQoh>_v#;bRmlJU($O>~=3?lYawXtCPeNJEL7PY`uz%6!~_ zBw4!9y!)<4q|p{8Iwr z3nHdo4e8OaPU>+LZf8={N)rpz$orcN2&hs_L$q>Zbbq9`;2huJG5z9GlnzCPD5t-n zcG1l@dJ|VDx!k4_j3N~Qjwv3-Jsasp-WY=gtc8iCM(De0f*ElNADCyvWdTqFo*}q6 z_@Y4_$zom=B0vJfdO(AI?^n?W^N{G07~n94`r88@3C&M*CU>G36} z_$!p-Uy)%ra*p!nIu>HQ4#e)l+e9=}g_=aw){HG_r zm98=KSI_Me=NPvMML910iD_eUFBWAq04WZJAqARBcl`7Ptr1XqUq<`8^!@UYw!59- zH-{f`*Pq>_1v%)TBpJg!N7w8NQ}#3(-pgxyUiA|WK0+4QeN#)M#eZQ>p$N$+&qM?k zy|K@>0@O>_>Drr?_Y03g#a(d8AmzKqB7o|8Wx?D*_gb~uYi5Ie1%Vpp)IoWlp1t>| zR<`APu-5v@REh$7PB+}_O?PlOb?XbyRmMTq>n|tcdk#E99XP&>JJO$=Vck2{L@yH)_*108nC+{g22U~aQ5`C4u0n--nlElGeIQ7A-stZ>21VfaD4 zsP)hlsM;adow3-T_eR~H_e1L}Rb2E-Japd9*;td(FIFetNoGEd{VQOj2ss-iN@isheh3X zwX(@qsG~ijP55#lp3XbbeAf_*PPUjhYoC9_V;yaQ4S#7@6sLCZRh(s@#In$A>yi=7 zZrfCZo9OuI`yLA}#~3J!YS8Rnh%M@1^6HLgk<z*k|q@7(d1fjV!RIxd-e zQ0|ZS(yCxgjrpldExvct>6Xv0mkvdm)ACdhAKgs5nl=qR$6Pa0H~mJARo?5n8p8}J z>}uJ3%yer_&cxEy-ICH9)>D)JIlvTBm8}BAbg@HjLaEvzI5JvOAx56hnHM7EiTX2e zo+!s)mq(9k@>!vLH}~ni91o5Syt*G97^ZI;)Wxp|$o@MYU0SA~wh_)hM2SU$7N zrOQLah5Gi;|INEA_;jwQA1cloAGzhOOo>zS=Aw>+1f$F1;V=13D32FH>fUS~h+?2^ zg&JCqPzZfb(eWmIXn&cIRE|%#^S~V%&k))L5Flbp70{rpFX{>18@W2C2CL*RM}!?b zli=>0)cdZr;wc$lcniqcAl70R@WAHfvh zTs6UPSy2dM`O8iePUGQ=VEE{XZ`sB8w?8}*1>X0l|81?!$!K26K&=vr=@RSQu(W6x zq6(;e7Vqbca+T%nrWAaRcRX`3uoESh0SIZZt(H;iKISNALmlz5XxPlWDBI4dU2H?0& zPfdlu1U#K@iV$uDUE_zMO4w!q9VyBM*HxWv$-i@7{{0vM{t1wDEnK0l(p z>H{a8WThdw&A658d0G!ij)rr1f2;Iqb@eV6z>(N2v zleZTbkSc~9eca=e1^C)XtpCHCX9k+*y1cRmkWYEr=!FBisK`dML4bW3x9A<)LX88m z09Qt;>G=91y%ha)Q$QfXd7dRy-s@fChNu{d3g*R4d;<%peM^CU2MbgYj{`8V3sP?a zt}&)%-j_gU=Ckf8lgra2XwXH@$(^OM-h9wtbuBlMV~{v31%~c zKMpA}G7fuGnK%7q&#}*{Oo5NpBL`J8_QHzwI;jmjVqK-iyWVD$68lc8%{2e;?5h=@ ze^kTYD+gNmy*JY5|BY~NzyXNgD&;q1J#173s(8G)T!s}>CAv{L?aQJrVvnOEm)=@= z@~FACr+)(js%le@b`|?>ft3N2VRIkS6#t-%@N(>lv$*yV$k2ZQ{$z!oug5WW3>(hR z;d5`-J{Ca*dLE?c+TjLRzpe^Zo_+r4*VZGIZ;hZWoNZWuq?N6k?eMaoWpZ9DMu=W8&xro1Ut)a6U)gJb2*G>0M zs$%u{vk1+X%JA!p&JPDuGGyP1@aH{yRgg0AK=$~lt55j@qPB`KfY-y)vu}?{Il$t+ zJ;uN9=$g!)9rq`sbZq3)M}LS~2_#gMZ>60f@%DFmFnYgwXU}m3KmDeoi7=3ox@_39 zpva)e1$^Jj@4DaGvQZ|5dZd!IYDa*Qzm3%CfqJO9cX1;sg1-i=yXMnmu=sh3Yy`Tk zDI`k2?qMzBCn;hd`-H{?c=P74RQM2LUvLKVLT)d>ry;Z``t&|^% zyT?hx(M0+#;mG=>Y2IGY+iyaYJYD<^F7CLpM0mJVH{h}>7hUSGq^J&2xiNOYHIkRub{+0(8Y; zg3l+$UElMOI@FN+T63ENPXg$7ierviOUV9!+62#^R5t{}+1wj|xcSb=wqys+C&+>t zPT-1tmhL+H&LlhP$_AcPGmQ>ZVCS~e^lOa8dE$BFJk_RczR?e$a`y(EW3^k_sTmVO#Bnw0ZW7F+NG3ypp1lUHq8($H-asX#xic|UATiiQ8)}gJ@FGMYKOOS9q!PtD z4NCVtW9miaPT<&aQYAr~N53*Xh@mrs!BENA_hi*qMfNvex~>$};?ErONhmT{>sxY^WM2H`)tA3WgPF5l}| z2HlJ@SGTBo%8HVj+>W;9@3&#%&em6kRZNh@>eJSJHY9W5r;)}O_&v-_C9TEGT`@f@ zh!m+A{@(%dPVS3RmjFr4i=L_a ze(yDuH{t)d{@Re)%B-j7X-pxADVQi?$S_Za_5iB%#YprbV+?P)4N*#sVeoLFNIS2n z3qk@)np<_UuXUmSQB6oV9(z4 z7Z@tno-l#fwfrMJJh5|iQ>t#%z9X}?rMFQmXb)IIhJwb3*+;%)ZV@k(%5*}w$4waA z-H_3xBo?}~&Mb?Lmwgb=l^RRs@#{ncRVWkwvx)@IV#KWlhrHo384kz?tT8I56XpTS zgICckZxk7geY(|c8rfvH(l*uUh^cxc}&y5dCo-Fg1hdmyIL|3n8 zz;cJht2j~PXH>OV;&Um+>36vR%=mb;D)EJ~z>}S*!&7@!L1)Bfe{dk{BHOu&HSIsY z5u3P*roN1>VF34_Av9Vj`tmqr(G0Ar2R%xY;#E0o5#clCC+~CKP&B*2l^eF>vwOcC zY)gTdQ{h!yQAEG;YXXAOZb~0>h@e%J$lEun&rw?_X4p|Usw$kuMJ}We36uH1{%l-+7g!;dX`0N7U z0`|p!$xcD)KTl>3;jIusV@_VntHb!>Mp{RKT@Iho6lb`IxTcl-h zoybqfF#x+*J#^mMIQCihDxNOM*bsnLSDz#fPxKsiw&s4>>Uq>w_vy=&PDn-(Y5bkM zV*6eEU{x<-7tCFNeyrFI${UXD#Z5isbWiJ*{U*LgG>JU&4N_@uWDBDYP465$mc94s z?apb`fIY66^citABuMM2wbXA>fZj74cXrypQ?&>(=Y3Ol)Ps!+f523a<3taFCeB#h zk|g3N?k@=l9W+KwRWr5sm?R5zg`s-_#F+31aSfPfZxEn*0^Ue- z26`+1Jn54ihW|1q?o*DwdlBYb8rGlGeZ33nMki}m&RBf-emhKTE{MPS&J1scyx8`i z-pcbswe#BDWp;x#4+)r3pZr9RGrds8&^y9~$9w=$dp(}4SoB#_#qPxG?@+bM>x)qD zeoDiIsvAD0eEv(0uglXW9ugLzGEh4X`&+Nq?rG=6F7rLLcv5Enk*&<6#C9=k~1#$Inn(Hn)aH<{8P}0E7KMOHG;Bq5WUoNg0zcM)OoVv_+VOH$G%GP z@w9TRU7zEJX>A>Qai=fSI`>i7xj)k>;y!l-cy2#az~QB?h4DmZ+#q<5lEO}*=EH^q zqwF^MF98UW=krPGC`~K7h4=QIcs>yeH-PWwRJMTY6(R4l>cETO4*N~O&$Xg2V9&>K zKGJSw*v%q<*%rOGX6Ob1ZZp1?|B8NG-u}44?K?nW_$0bzc&sQ6kNbeGr<2Lmv-iy1{I&{MQdtKjN;>-R(miMS6bbM+sF zUxr^|WZAg~rk1B9w+5WzjvC3SBwU6gb@3UX=O9dSsu4Wmjqdp=U9>*<9FeUjs>#~D z5MyvAJb%v+V{s?UT`A8pf-_UpL6YilF>pT@7m*Q!Ry}`m;k#8LC13O1`K+7OrhFh3 z>U@%fW_q$h(jV(kBFCuCS~7k71Mbna+5W7}XsPk7RFG_uO}QC8S7KT(;s^5}_@iKy zu9teq5%frYrO~Fb9BS(dL!N{s$h0^i!Et7dA>WmW%7f4!3K-G z@`N0!_TpCXkWsX&==hbAcL}BCb)TNUj`~mHV|}^*>C=mRJ}Id|XR%%KW2w;s_oNZxBM-ZZ6h8??1k~NPxGj#}|}$!6$tF9ab1zxby6s zOa*@T z%?8SnMi7@GD3(&mUAhh++Ja&u8Iy)Jqv-IruYEV8Uk#FvRw~Mf?o}2Z;WbreiIxpc zQ%2u(p-o2&{PLvl;C)Ude7;o2Ov(dkevmFP*-o&8PCYPZNxDN#h@3GcaUb6PjQGwS z_(8!Eblo3g(fIA%0=evi_~q9V+f5&s8p?*7{2w;%*B2z1yc*XN?}^d>kbe0`-^~}g zSaQgz#OpRUtv)T%A1gxikrH7%x(;9U9lf^sS1*hxx>tQr<~LuJfAC>_Z$$j#K&!0}0*Cx#?`2-~o(2)nKMG8+z@wDqQ!^I;9{@3!gx}_=z zM5bO`Nt(_Yv%c!@orG5(Vj2+dkL3|Un=g>lnwPLpQRBagOU9%@ku*MLA?f;dD)~N* z!$9us0#sYTxFWs%sm}g^O7g$|{PcG!w|1GA@lW3*y#3(Qyr7u!U}^XZ50h)U?H`~; zktBa8-j_3`c`f@sl}*b0&k{nOedMdfytEH#BaoR%EU0}5`BXJ?Z~Mij+YcO4d2h!J zW04dnk0ZUGG@94JLcU=ED%UPM0#iW5?1Kj47zM4<@FZd!5o48&Db~FCL|do>JVrFs z$Uf>t2}D-hT|W1-hiYy9?#swdh~LB$(-M~G8b%MKjiMgC4a`0)&S%?vL~Zh8M`uB; zWBHoh?J?ZCNh;wVFHB$j9J=T*Nok;#?SEViI4W_a=wnXX3Df-FI1bRSi!uf6dmy8v zyDvU&$MyJMsj%LUGk<*L_s6&Y2VDuG_BefUN15a5>qEYf%TgaXLVmGvoyLJ`s0OFq;O{4Q8PJAzL6K?T?$t@k{9GNc{+ZO&*bYXp0tyz`YB?i#FYV=Si6wl=#;;mAVeVng;+t&Ox?h{XBUNAUTm4D|!ilE4 zNCd-$b&QT$Nphl-l0b=4mQffN;gYgw78dTxenETeTOOIqzbh;`ON~JtDM%7+PwhzV zY^XZ;u7QbNowd01vKUl5631L<^ixn^5L~dFLKqNL(5w{Fx%H}CCa+2~M4W?Ciwm0e zn^R2lb%V8=k3B0$Et?}`4h%pD5gjqJ;JKA!etYM)i4)?R)0VspwsBxxjTEK>*f=Bax505Fr^=TJH{N^3b7U`l^3sl4eA0Z{&;pT0ao#Y?6YaA~@Hy`Y=lV7iYkp+7Ly z@`Lpn?c;mxZ{8YRiM{vdM(=yHn^PSS22MZm#6MI(Y14|T`Q`OHz^!ms|uJ& zk$U8lnC#NcXt9s8wX}LgZmEarewB-U&!!+P^;DdK;1D)=c+fS;7M%^b zKEdS(r#gKdi!bX^QM2xP0SdaOA=S0NQP^=irIaIxnWG5au3LD3i9!%#~t5V#z~l*>W*3uJD8v4Th18Y|20E2do* zJIua01OrO@Z@{#>BkuEC%sol%)JT6}C0Ol0Z2+MTISEgLh&w74?Jz+g5K-n9kT%$U zJfB%LyY~RHo9*I3{Je>HuV)seZMerpc)?+Ho>-D}`yX($C%M7EHVO{#?E@u>0tT1^ zfE*lvxlg&6JE?FE-~d)a;l6}}&ssa<{zTX(*aM+Zx|t*X!jb|G5CZ}OIB*Q~N#{U9 zPK?_J$vEx~+DM6`4Po@VnRsRbsXHyxxklt*Mh@a#Wb|#srMN0EfO8HUh#0^@(ghsY z>^A_TP#22_ZM4HMK(AF%G#E|zj?uLMqwttLWzu`|eqS{2_{H)L4&1ul!Be2_J_Xqz zue-eq@6>2*a_UYAO1qT+psl)02A2XGz`A$Nq*wsF|FXhAU{#)WEjsd`0?!zl1ZhI2H zl&|1V?^+HT1O{gBy(Azs@mEQg;lszhF??W7#WUt(H9H0OTF+a#U$H6s0{~jU3lRWs zV@gCBBtYS1yjp!QO1!*9(7yJHy>71rKSdY5#yjL2z$4_V41waDHv}R^Lm<8942JJ2 zz$k#gUNo>k`NqqCs~umwi_x~p;cLAU@`5~o63Ejo=gB$(Rp0}9yz!pM4_3pw-hOVD4W^7dB#exoSz*aIW)%sTR6v@H*y9lk@Y zPm#$JDC-Cyf1Wt+!aU?VPT^gHS+9%Bhw}gGC_lXKxfFcGYr&`TYRQ>p%xBSzFDAcH z!UNd61#iKV3K8WZPc6s4ZEqe2Fc84@FZ01ckmb>v#(bf<3Y*GbBqdNn>;j_z01LqU zJONAqwuu!eLe$mFu%!#}N)3iFiHtMu>yOFvGXS!=uZ8USbXj%G&JZgAa*cTwvBjolu z#Ow;LYRozWZ7=1<_VB=K-`d9&A2Hsf+UF2Kgw)L4M-e>f1#Hbg1X{7d)e!gro&{j$ z%@($LToV1-q8#i9VDZ`}(Nz+3EBoHU0fQ0jS(NuDL7j~O(+dE=3jmwPhm=t|@My^d z{Lk@_9L#Q^b3<>CS1Q@cI#Q_sDoX>9(EXYT7JhgT)ZEPz!GaGA$PmW^@PscI`0xUl z1L6?*p@ET4o`nWE0AK~lCa;u=7%Sx`C{sR^U*$*nRDPCk5;w1O1->F;b_h>d3!?s} zw*xq!t6m)G&{$b&v?alzk-10<#K09o75)1irM$(&hHM%eRXly3YE?0&Y=^TTw4RJp z{vtX=QWl95ohDZL^EfvLw)_fummV^w?#)14J$xlveEeR4YyW6nhUlxo-i}`4RcfQf z@n*CH1?JmzYU+*FL7F95%tq>j@VDjZaWSWm->=?3PtPAwx2si+U==(O{nR@g`E;Q) zy$H^_9iguB?EG0I<5;-stNmp+#Y;|M_VsZ)lUH-^&)44FcU7e2(-+tKx&b^>yee(K z!hffKsHqc=IN#HVr#&PI_Q40fX^khr9SMRIHA8p29S%uOGQz0i(6IucWq#-jf#w!* zM6r@u^gGg|iRc&m{$uH6Tn`oE=D9U%b}h)mjOZy!K9U#`6q0%o<4ImH6XK-$yIG|6 z;soS06$*=ZI0%F4Jd3`IW@>&FB{F|WOJrvt!*Gt3rRz}@Hc2w%fKYzfE0-X~I-H`^ z&ldn37gt8k06hDW+s2~jb0N>y8cSxui|6d&JeNCU%ztAR%u1(6nbiG_9xEA5Je znvrF=fwSs)`cY#3;4>rlza!7$An0qXF z8JpaElV2CmzY&C9Vbjr+FSeo_5W_U1<3_@7aR81jGd4 z?yOmcNMn3ohB;5_ya+Y>!>*Q>K-PTOu+(=#q8?2#xobofJO003R*zLm2eZP> z>Oom|-}*KVtiR#GioSnRJQZXvvHpBhJ1QbbXq>YYKx#MI zDEfI*5G=;+DP?$UIKA-8ZDxjVhn+Z;0NCjR>D@PuJus;j=3@zO@UY?u3hxxB>14Of z4x(n;^tRW%axLD|MSCm)zz2#_XA6lnsg3(M=-R(b^2dQV0)%S0ce7ISU{QDRq&e(4Eh@?^?^>nr`~9Y2abp0-k2 zO-ou|VV^t^^I6WZWr%l^EjcABc_&rjnZ`$KlJLj+9gX`#pmH)%)2>+~w6MPj$&U9` zk+zf7f2r|Jt<0vdkv~}fxki#k+4@82BMWCo&T0e(YJRBu`(>P3sdX!tCrR?T?iWVi zKK>+^j{(Mej%90{$OP&)3~0)Fnm(C-{3~Wv3F^3X)u_LfG|yxIy;)}Kk3fYt2T%x& zop$=@YOTo~D)PMlm1oN>J89`KJMlXfcaPn&V`qo!aX%1`A8H}qo3mH(qraS|{k-;< zF0hN+dYzHV2hNxWJL8KB$F*gkzac~GUTw2MypxUH&##?2JN)MD&gNYv&-KU*+qw5* zzq(oW*Q3jZ=RWEGx;J{j+3_a-5sOn}wL^3EPS`iS2any-e?Uw+{UOegx6>T)_*wvh z$Dq&4Xh~+ppF#FMA$0V$Fl_9os-1Pn5gW&_0*N#qC5{VP16+ZDh+|jCUo!5PbD3pO z=5I(`aiAG^S*zqbibW$g7#Vg;QrwXRz++`9$9r!3nmb{eA|C%u*?919MVf1ZWYOJ` zkE#@%)F$)L5<|wZ(Sq*)kS}oz7`O*%PikC>Z}&4`9E+4%ll9449+XRt_AvK$cTRTg(gs!@ zjZ^LuSSZzsHVx6h5#3zN>-(}Nd_QOsm7^$J)LMSYMT^+(u^U`J&EQKkA`*S1Rv-Ev z0bc-ahsd&65;9$aEV!4x3BBmSA=o?+hC(B7?Qxepd^HmqooYibZF*0NPUT{l+SB^2 zeAE_XHg0ah6fBJGRE`UEHC1aly#Q?*pbFD$nz1!n>mI`r+h^(wr!pDHhO2%d%lCT3 z2se=~eRd9Kn79!H>R@iK-AEMkztYei)ZBN-h4$W}RPiRN{X?@}8aa;u4gfL@TX6Vy zX}%5Vrq0~gPu4#;4i7QVRN_ZIMqH(u<1gn1o#%Tt2OmhW?`nQN=hj&aE*_VC=xH75 z_M`y32Eh@1Y;sL8@7#`S49fk+}ke<o2)4 zst6y2mZyHBgOW<`Yg(&V-Q#${KFeJ$W&O!&n`8fZNVMv+HJVDE5KYcccd6c~$mo-- z*`y`z9>|{l+w&6@84s9#vws&XcP6T-My-GUpl7PvfqHx#lc=>vqfGqu{TsAt47Q)) zcI9bPD0CE6Zu1vvfsuF?V0Td{HXCfBAfOu$M}x%3coYja8!Q$%N&^6nV*x}_K) z?VxkqdwJR}6L)a|j)Abk2rPw$xa1%L)H34p=?Bro7a0!#`4 z&7$XUo?~$6F`(`IH56F3DmWTlfN?Ak%PbJCD3D51`vNayEf>hVE|9xdAe&jZ&l+^2 z!F^pf+GsYMot+5hMMOeP1w}pGMf$Ic47ZDnM2n5B0mo>})Y;-sbinPKGeu8ooyqnr z$T4OYe=N({2obU$M4?F#igE7Jrp|DAMk0Y6Nd>>~Y0Qpf2=HFRXXum{bopmSoK6!) zW(sbDb4b+DmH1PEVgdJ(k7ioFF1JV<$L&i!PU8eqS1G^nDJvp?R%5gXF!R$`Oo`yP1hm00L!4|aVn}}V&?w$p^H8iU&cod6J%~>&rPOGXAnic`Kb#Soui>+;eV=DcFyB{gS_RmO}2i2~vz8W38j;!%$`(7POh z1aqG8bKBU_$ke*H)T9nN<6NQ+7s`;8w($&p7>zP!b9}lR`svq|Px94(T%`IMcR3S6 z6Cf*nH;d++w;4%aGf-w>4CleiPOQr<=Td3RQXMYd0Imute2Oj;_4!`T8BaO9Zv&p3 zK%@iVj@Oq$TdKG2eE4mmWmK+zsb-&aw1#9>LZg{%nTZoY1 z%~Bq|N&>sWth-_;EbeDuo|S`WB8ne)Yv6bcz%zC#oP_4L?ffO2FY+MSBt+~(U#Eemnmwuu zM5cu=%gUW72#-r6UTSEKDWY$6k;HFm7~Ir6a+8ivOiUpwU+NM**LBRa>%^@t`{~Xf z0%@gL5wy%sfg_##;+?#ggm}0C*BjhmTnEQAh@`4ztz6xT%#WmDKjShZNtlJvfAsGT z00=hQWsB`{k(L+HoRcQsPGd*Q4iK3!*I~_7r!*7(;2H^BVD4^m6{`7(o*SGS7*RpZ zXqxnI$RI?_kPRpKiN%phRm5AJw{_weX-sB1o0+yS8iVUDt@*9PUXZQ5)KD{=-d)k) zUVfhbajhC-eBy_VE$XO>8lgzry)Xrb8 z+JH~tyPsQE@;K6AXf0k0=s%lZw1wRQ$OX&6e9|BzbC5=ZiXRRJ-XGNeGPp*ENaQOM zo&{bf3Nh>oj)&I1Do&0p>s(BayL6U2JV)EZ7h5zOa%Xto#R$2$dWp=s!(M6{Rpy!_ z2|5o$^}ZGxjy!029dkmo-|*&T(e1~UU;C-;&-Y0wOHku5HHUVKl0JCH&wIs((~I%s z8w!;zu@z5!z9w{B%&E{BcGU-W40{rbhOw@`KYza5lNkMDI6ARSHDFmb6)}Iz#s9qc z(zSBH%kV1q=+IhKpkI3h=F#2XyQ6nhZs2;rr#HCy@^tK2#rZ9qD#mVSCjN4T*&BSR zi)JHLW&)-=4k?ev6+?oT18-C@JLg6RcXb+fbR*`Bxv(X;u zI*d*U9jt7fskoe3CoKlmdRAuTB;|NF=3~$WIfI2&Vp!7Pq)1tm%FCQY{)WAq#Ktz@@)A@Q17_gkmdB%yN#YU85gwXXDYIDb6e4mR17LNYHa@2 z@IGlV`bACsvud39@7X^BY#P`fIeoEsI=g4OqAW1+XdITBAGLfHga}Q`Cw*N_Z$)cC zRMy=CZ(zEQ6An$ZZlN+Phoesj9r=@gSg-F_(}?uo$OQM)p^J~lF}#z8{nO$75flB_ zKFse*E5l#wPdo$5EGQ-u;zneRT4m6>Q}&bwPTfi#Y0jZa=fWROpe~LXUmHt#M7c8; zohXgNQWnl^kUsn%nXZ#UUd5Qr#K5Uo@%iK-(N~&%;GWAHd#ec_>&JyvEHvg{9a&Tv zK396a8^4+gCw3}t-LMhA{C6h{x-6!2Dp@%!Piv3#IwX&$CJQ_9Vf6J=IeP!7Xw`sC z!At8)n!zpiS7#_(sml1IpFHpj=Uk8t`I5YLh60H@^ArAdFZbq45(B`UuYk$Qz^15? zsBc`Zf0AUXk=XElIQ%a&Wp^~qM;!29X`lAYaR^z2+f7e1wuuJuY>vYA`of&%Jbm02 zxqm+Ho9>~@u<)GP%sQc#$C_|+!-HUuH73cMKwY{Xkplj@w6E=?`(I(!Hyd5~_QbC} z>!bXO$p<$e#&_mMamknO2Y(c&=@c!Be?494#=+J(&WSy~5?`}#?JrK;iIcte8aEyC z7%9m-MbC}Gcc1>uu0FJ0_6HkPmNVV9=4$1vwJ@lQghkoQ;74%0Xq zIOUpLCwhZ+G;QO+Po!W)H6z34g>}PQ+|JvXQQI3YTe|=L7xCf6&pOVpSMEU{6h5GR ze(n5sl|<;1h(s#W;Q_v45;)}4v%yAQSN z4IJp;)*XxG`xTx`yT?4^uFY56NZgfv^qV*8&-A8Z)Oawm8G zSsv+ogo71OA{4W+#p{xPH;n&o`ux@3ZkR^@@H?66K&L0d@wB8SX&`AK9j0JbTg!y- zqf}o2Uy{Vv)b2vz3$kpC_!l2ggLhH%jVxi(fK`GBL372xdMf_-K*mkW>gKcqXmnk$!wS&WMkv=uoR;d^*$y$xQBZWT?yE1Yo`5>hI_Dzw~sb%jq=s`n$ zDnF!Yk{R(!OHfRKGf zwbxpcayt0^Ozt7z;i5=}%XgJIB0zT}M_d0i3A?T|xCL+cH2Sd6?n1~}1;m&vzUHSz6f}!E8czw zHGvNri3cPmyulA!nBLEc!h^LwNCGVFfL$`I;J&J0BaD1)8OO7j*51Wc^KOZ6l1Wpw zw^_`F*xYQ6zGSfla#a#U?EJOtC8pwH{|wEi-CJ5A<+|<+zA^G2QZnQon2i;tpls2| zV!7~-p#2?1!LrdB#7k?Z<#u`7uUK3{4sWN3TmC0@>AglKk|_f_$X|jpueEv|VjUsV zlT?t3*< zmjWBUhxnmKBMeiDn0*=PZ?31`6h)uSn%dT1mbnD#xWwp2CkNS>d%=6X?+e7UKQ*hk zRnru%FCFzVG=pRFJ19-%LI+>ErJm&YuI%4lh1%L7J}=7tWJQ>Ls+J+rB61m)YQ?bO zG1V-uTzY5houbR&dC#0=BjZcwPlWX>pu(CWwH#aubOX-LH!CX2U)x$NWO2;`=@#Y1 zY?QCSG~JMyB;N+@@19qXd6>!wQ82ALhR$4zG6g+b%jWJZ8na&IY!YFt^~1S~?0caq z&o>~&gJ5X=i9Ry;98gtG*h^X6>p4S}oI**AKEMX0stUxy!NCRdtQv3A z>4#U2O}bZyMc6;WmZdrcK50uHU>y*)h_F=S_mpb02;f{*fA-fUL2M{kEPHLJl=BYn zRiO{m?ac61mXe{infAd-T+jFgZ=U?fqCZ>l$WiWQCp<3c_MQ78|22p_QnEj(;d|0B z&hq-`(&9F1;5t9)l>?>!*bNBwr$|$Ro@2$1vyn{cEu%I*2jR!^XEzWZDQF*s>vHmKW{p`j02v1_ zJ_S9TBVI+A%aP)@ja&1Tw#r(`WSZs$Ytm|C&xTb-G5K)S% zPa1o3j1*eug3M*kT_=>M^r5~ScBrhD&y>FD|8r34oI-CXwhjf*yp@Uq>I!#EWiFj^$vlapI(IVqYbi zJE2Y5vcrw8FSG%<30_!-upEc-y5;-9eJ4Vksp)&{61<-itoIc6>ePo+?@RHC*~eRu zFeEkC(*3j{okotGGY$X(wCk5OufQ)?@>kec%w;Y#H~V#@DmW8pV#O=loeEeIP;nux zL#UeF3P}w#I@(cqHr^GTqD)$f!P$u?ipN_<6BtAQ?fOl~}bnNA;48j2wx?T%k&s1AZSnxB`Qvp}Ff@J+ikg1tXLXkJlU)vN8GXx61O zF~WqYUMS|9WMoPPpE#ocLV(*2-VI138|4oS6(Ui-$a2;;AKdUg#wv}-%Brk!*(6;- zze~xsl-*}BkwKmw@)t7&F+BSt!TofsAvpR0iKJb>mjaQeUqI&eM-H6ERZT=i@=mTK zucQ8(1Uv9^HVRwhLywGb3s*|3wWf=2N#FQ!weClC<-VjLTtmy*i+-<)uWQl5?^Et5 zQkI)o7LkiI(b1f4D2PhG5fC`}czRKGriF(Dcp4+$0yxzKFkRw_2N%SBU881k{$%5j zmMGswF^desCV45(HuNQ$qLCU&jcXc>>4i&wFtP7>i9&7Sc}ejna$Rf=b;KpSefQ^g z+ZMKi>lIV%Z}Gd^)){LBL^3>K8O85)tXA^;DtB`ojIq1$k1mMKefEy0xpyQ3`IEEO zHMU`UDNP5lyO1~+JQ!qFLfQzVlQK}a79PSInbK5*@(_Ns(H@X?bH8+ENsg*=CJdC7 z%<i!cVEguCz-O+bK5f$UYk4&*3y@jl7mRDrT>C`9 zU2Vj>Fj#Dm__Yg-iav*AlY?>y;sbpah1WjIs7G#A;mMCeE@6_ff``d$RJn=atWggu zsVB)&F0+)+t1qyuy(m=Ux%?1W^qhW8!$@(bg3CaGn=(dZ<}eq8JK;ia3VOj zu<>?K?<>KgBLdky%RVczKHV+N5UQR6aWu6!9GHdMigxAnIV^AR0oa2e>tc;WvBzCU|g$ z2PI?YyDn`L{b$-AoT1B>_CNGIr|c#H_W6NpY4C?AbEm-BtI@f#(um_c?d9ejmEk?H z8ZvTirlR+5yEcXwUDoh!88Q+`m(3}Rxb`?jUK6=P3&o?R7xc@aK%2;iW-}oQe)Y%D zsH8~b7uH>VbO6mmRUwiI17!R%M>twyE+qnvyhygMqj-NkFf^pfnNj@aX-e?3Qndu* z2lTo7{x@Gcubco3@ zLyZH{yFf6qVgs(-@T7h6okwyLv|q5dYbplkC+(f;Jj$oh+m!}{YPV}sOK}1NwUH?M zC<6Nen!&vlr8_78%Bs$I%f6L`+HKM;=I?V62rJ19m%ei+z$Kx%-Ee~-9Toa;{-n&= zyN>fEm*N7AlINO2BtQ7M#N^-RdmfViPDV!TNWc-twcvEO`j$c5DQ2-vESF5=(L{@$t>wDs$$lc}CMyU9M3WmzS@ z6|M&bVPAzMxI2Qh-b?+6I2G9R(e%z{-j$-KS^}tIbYqk8ryB|rYdfI3Cheq`E}@l| zc~u`=C+{*094Ft@I8AuUY*P~2c{YjiXc{s^U-RmD*g<*0l>1Z+|M@!{Nt4;i#Scct z-i=-twl3RiO4JI9q3`M0!~ zcCx)L$D0mUq$URrW$>s<%E;BSiV{jyAEQOb471XIhAbW!N&9I_eU66pa|AA`+NBS7 zh#K{U=<>8JYCViy8eAtIl!iYM6vNe<@~-a9oCw#&w)yFQ#jT?%J;iy*Snl^Gc69De zqESCxm+zqHda_?f2Pd_kq04Xk-r6oxxl{IWf4Q!}iTCy+nFgKmd;L2f2VBH}ucDc{ z9iJA&bi|}Oi-XiYGEEG|%!uTNfHi`wG$!qj>-{zaO2Ws{9J)3!5i3=ZgK6edt>d8GD ziu%Kbe_OFR(_&X=eXP0kzwslpwtUPHyXy7R0%Hzu{DH@~ntfAmak-6j@cG>^KAC&& zu&4wE(IaJCgRM@xL?d!i4Xk7VSnr=^(u5)%^^&tAY#F3`3kX~f{_rz^ti- z+*ReH)w6e#HEXi@jq6p+Etqksc}%iWn-vU#=!+{QvmT@5I1_gY@?(vd%(LiG-Y<^E z3TPo|sle1P6V|6onoEtXiAsTK9Sq@CS04pTZmmY3-zb$d?scS@NA_+|^q<-M?W`k9 z7?Aq$#t81AhPy?AgN)3LkGCZ5j)?qIK98~l|Fmu+stYr%UmLy2VDM>hPNtn2*E1T? zYr!iXztjMs56|eM7HHS~$= zo0JIWRuX`n2BN;-v{KUxbM(JmyrcGf+sFWMq@fDlN{LjiD)?j`d~>+2`KFZtnAU?g z*Zo(;N$X+xj*9Xd2E#le(^#kFm?#)@C>TapGD;vLBayo}BV%|%vwL3BjWOlE8pR-* z?`W}@O%Vc&7aOmZ3_7Wmi=M6+n-5H6mkf@(AO^oez&3-(f)GrMUra45&FZ9Jq4(iJ zt&AgA{YBe4gkD&>Z*lIU@g+ln#|6b`*Fv~H7VJBJ#<4Q!VXp^E?}K#N!SQM;his@5 zTEM=hESBP18DzCmUl+HJ`IC51ImFiB>F*ghvF>3OU4ZZFnO^B@P3FW)d!46dt*@Hm zaZQxb@;pjxrL>*mq4~JgHy{4^+*ZFJvKX5NE5ekY58 zHl>yFldLyY)mQ|8ATxceS+PgGWoc8hthdgYi~A*{8Eu-q`{l~}wrAWOuY|mo_14V_gnd;^KR4l z7^%aPKkpgwtay2zUOgLs^8L>{hx<-6zU;c8~; zl)t7u?-0M!moS67^q*bD)+N>b&;46w4#+i$3TGb*i{-lfdP?93t-K(|{%D{Lx_Ro% zMqNMW9rE$mGt>%c`fAYk;&0<^uak3mpZ1^6H2buno2eAk__?{TUBd%!JN)>S znZX39bg%Q~yvu01qTO$cyA>LchwtsGmRaWuhck;!&){VP8yo2)a*nacYs+5b1n$)UPdhN9?ypXWiFbkB29hafl$(WH!z=G zQ02ve<0agMQH=+K)JOIeb>Zibe-sS3ePh&UfsANj+9CA3K`M8cylMT96G{Dw$Zc(zQT|?^KN&Wh zosT9BzP%Ule=v8#n}2|}^RZ;_&(rU)CX#D``DJ`xeo?yLttuxPq?+nhKl%9g%1ex? z5D!~gE-4NPt2Wv>@k>M6C>4?woMcc911@Sdess*6)cKuPLMS7KL~h%c8f;NI-i3&K z`w}rx)BAdq&%lMlTaza;R5@vxA7*Lt_Oq@={aO+fsykVuH?$I=DeJR^yV%X47HVmj zQhzH0H}2a=A-@k6**XyQ-u(*l!`}oSjQN02x}_b zd)$`pKX6l0Eb&8_VZzO|0yk0OJqlPnsd1O1I0ErxLs#;?(GTw8vqb9KXSJNgQ_nGm z1h%9w!trZcr zznN=S3%h?vBka@5Z<3hgm!nT$%(k^hgu!#xk$-21r=n~q;pa3(UGG&i-L)#h9G-4HP$EPq{p=0OTKgB*F&HSr{s4i&CCAR+9v?-d=e3Rd-A|UirXFgGe zz^V9bhrURyTbdC)i%z|nn>~^x_fjrPeJJEj*XA{w9<-~ux;jAeCHKpw%l3Z17daACj z8+~~8yQVo$c+A7%MD;iJpLm^p$jDi_rclw)hv#m@*FU~vZ71d{aCYqh%dKR;@*aCk zP3%G7MZHY9X5#bKv1gO#I&&KuHJ=DxE_9@*8rsYMIV1Docx?PvkIio0+J_$te?C*H zKH_}ePp;$k3dwb2#KKwj$*G7=woLTbjJ&sHcW#nYWHO0Ouhd)h5h))2nv{oY#E5i` zMi0xb7;zDJfBMgXsOq8%KXlk9b$%QWR&Y92X>|XRL12GGJ^%L;!IiEhgAK~fWS^L`GSV`{fP{eBU<9*4;t8|bBZ}I)-DF+u%g$l1d z5&oDM-dMNJIWjc-d_85cQvA${-O;`2rY$4%53k+A^J`~*jC_8$Qvb=hxbRs*m0IQ@ zlf6#Xx78|3!uyjAck__b#LNbT z8T)Ex^irimV7X&m0qEzd!zK?_rN3Ft<~OYA7`++XEq`fx-_bkc#@$Dxam>Xth1%Ek z!ivIjgSU)$c!T~b2vt~|_;yn#7>Qf|vDE4OK+gDO)9&icb!)HLd26*N69JxHMn5_w zEuMCW>1hg`OJ~A^8+ZJ1Cksu?;(X=2*G`YU(~O^%F7#}Sh^=_cdS)?)-H_{frTtTn zvDvkwQayXP_d|c_@GN2=zTxlV zcfXuFe;-b)Sc?De%zDM;oAo=1iSkGP2*zp?)T8Nks&P$y#<;1C%53Gw3K?0*5e zjpcADu)X^hg7M&i!2)WeOS`PCt>%*?NIMN-EU+YKToSq5ieC`J~0H_ zzracnd;!WN4pxJ%-D`>Z?!Qr}jl+K@pwxL1c?ShY99AbAf?rqPE+x9njt4cKlQjA_ zGKOk!U^4+46E3?ViA+A-nW(~r$Dv3xb()C(Us*C=jcnncpaXmi`1&7DvXT?QaxV#5 znfS8?bsBNh)KC9i@&;6{nbXhZFrzX>2>zp6OiT#mPp~fI&=jaWyX145l5eLW$skKX z=(DT&oXaLl-l6DqjmzlZ0789fI*D9i32V?lKo%t@@h3BZD02}3JxxmF)n>rElY|*x zHeQnuOOi*|gGH4;OY+HVJ+ch7-T6V+4U86%k_zpCuT^bFVFFE_(Rhkqu3`6>`X66@ z!x=L5Wy|ooKTYdgEt}QOKIya0`p2PpV}Y*t%3Z}PyvXOmc@Vrl!w$zH6@UT zU&}pL+lmWmS~#W{l3;hV)at1Dkc&YUj!cKpsc!~f32`c#?qtZ0BeJAU4h!kJF-WVn z8~;Y6K+3D)UU-g-NbRpNm724mcHI2fexf>g3?X&fjKx~4G3tkFv5eV#v8n4rZO)a= zYF})X>aWMeX7mjTR@_pOw&o2 z+7%wDXu77>zL9_!EG%W-H*mVBIr-DGVkB^qx!|V~;>U)xNB{Ww?UD-e24U!hbCTqc zm>hI;SmxVkv7h@-FRrnJ{mtG z)8HuVCw9%}O^u=gW;V?*bN=>amfSR_UWlKWzAzH&3wKNuPB*YB(EXQ({g-D_TTuL= z-A=K!wn>|LD}8(6gq5hOLackZskofcD~xX3r5Q4D!MB_v$m*^2&!6;E3u6cMWO%Cb zYEA%4%p!emArK+1;qwZEp?;&vd|xD6!KYj=@$nXOJW@UD`ZEnHlkW5~w7HCs@o6#F zWiHar!0G3h^Z}}BR$7us7B7 zq~sK3{GUuP{Q%dH)j$#(bAFzs5g!MZ>F}D{x*&lor#yoVSr-=n*#C*HCYDdn*rM-@ zCwWNOm~7Pg`^#!6btRv4DhxR=i~3n0eT`ITC%pdEmnd2G+T6DT7lQoFQ0qJu=YOSH z-Ywu_Il<3Im;b|4DWbn1|HrVeE44n1?gRKOsL0aODX+BUxzX;j+dS$j4ft>vL|y{=6c?V<94_OuJ@ zp)xLUKd>`SnSa=b&>3U*gx0@~W)f1E{u<~JN($``snbeAV7Ql0xi@Q63XMo@AiieZ z!sh^`3nPD14%8j%LElC5#$|6T1`6k-X3OWia6R*fBql7bQ4zd(DVbBoMXmgb~J zJB~*5s2lZ5Zc2rwlUdnp|3{-0M~UD3ncYO9)Mx)GSJkX+bU^p=0o9zxxI4?FJ>x0= zevimV0e^?wNsB)`B3xf!IXPUugNJ^>=ip}cB``#%_s5o55`WX-BLM)s5Qe zxsi3RbtQ_iI)@)o)l~R%rGK3EP)8gB1#)X-!#}o%s2nbkpZ~p(1duWf%dF2B$l1OY{)Q6IINFZ2s5ImYA_;%!JM5M*CZ+R6!$N;v zG$=WUc3|T~n6zrrHKJI!$sSpe6uj&;L^AT=`ugGVl2K(?JjZ;DX@e-BZH7=%u`Omw z>PI*DLSX^5#ygqCrjKeUnkQhX4613QNHOdV)mSQwO;KGVCrcch%6rvTE2b;9g?6@L z6q!$Lk_UWr%#obwkN7NR;jdpVhe$Q}nA|R5^ot=g$xivd`~Ko7B;o)1z)GY9?@v=D zKZ=*gHsuik_m%M#&f5~~=NCV)#jyR#K$=w%@S}+TQbPSo2&x+ML6AK`714izNFK$^ zz)bvH+J!WaSdN+cax1YjfMp`$cAhzKf`JfBGTVRE+fiL%Ib8=EQu25+pBfx+yVK1ZIsU3c@ z-;1(H))#E4EO0Z=JCT=O;AXkw+=6({3?_(W2awio-NQC59qPfQ78XjkzOo&0=|W`C zv>OoR>9Z^&U+%RJrc$$YS3)OHIM&f#qx1z@k?ThweGN2q`t$ZN8O@X)%9x+~X_uN)eZy zG2M4Un)jA*YJt;IL#<4B;gN=KH8Ki9*LW0aWyr-B`-3Lz{fl8{lq82bfhg0I9{M%y zsNQt~zS~dNA|*-jaWN^#&XaDEA8l5}G>T+&nGFGBa*-0pV_@T5*cr%O0Lu{>lffa4 zStlMm-EQ{x_4^_{D0ixZBLv<^N)y7bBqOM8g94_#teVY_`5)nykPQI`ljZg^_4V@$ z+NW;x6=|@PqF$d{+|@ticIZF6X`@r<94CTH#$D835buL%isEm`&v{zh>Ha?7DM+D~ z;!>g**x@Fkz^Q5CC@QbOnQY>C&I1NCldu*?`#CKd>?#y?3Wv-{o^71P@=0XozZ*_@ z@XC3nmj0v!`gwZ!uT~m)%At|+;wwbYw@1UFy{@+HB1MW)ZNNs@0|?DH_OK`@aKFES z3+HhPf-n7=kORIF3QOIuF*6V9r$qZJgGi6Q`F&n8ZjsUS<_sFs)~FF_c&0v>po{wl z(~7~x{*(rj*Hj#?71_2J7RWJ29wGvo5RAz$1rYmTWD-HXiUMb%)q#gN91N<1b~$(W zYNS>;%*|v{6G)(ECql_(IKVM|d(npQ&yH}perl(RgzS$QL{MYx0DTgHJ4FTdG8{Fqs#0s&BV%z?aGJcL z&Rx9!$+O>7#KL|FOAeg5E2w3@bA+nAgqTZy(5RR&(Dj25p~B?*NnQ=*!c5gb$U{N| zKv59+-|{&MszOWkM@0TR#FM!fa{Pb|^IZ~zs1&vkOoNtTtnxHR-UbO#GM;oH5WKNK zj@}E}FUF+QLJSEp^88HbDe%hcQzz66B|by?o?iA`ClB>NIGh9!9@XDPj#L)t*5vTqwRoUdY{%-sJFzew0KBXuimIA5?v!RESUR$+t~RYkJAWG_5W`U$5c!gx)a&&sXv z^zmp%(LbB7e@boJ2%DbZG|#qsn2aLeZ0SgW|GX6(Jvr*D8JFK$x&As6d&V&Mtxhgk z_O=zu_tU)n1p&*{iyzGba05>9RReiV?2b)YEkas3(mnYbz1694pIK3xxKu%|bT}b6>huK%Yt!tUi%A1k z0yhl#bgF)HAP;HMFdERV;C?g{9$6NJh~bP}j5{$V z>{VElZz(}Lzi2U`F!brZ-R%T1xs9u)pN*GjS)!rti7%?xKJO_e?p0q+TDey=D$(*e zgz68QlqJDADt0EkU@%LV$4-G#uucxH;(G>8+l8IzRJ3=?xipp7YFIay$P4yO%_A@eb&JR zCSLFo9b4{MOG=gi{ex4qXLj!Be!%|W&GX5cXB=TI{U;AjKD_~dO#Zpn5*TvVzULsU zRH1P4Z9q=AUKCotIYWYo@qeBgXd*ku`TleIb=e6anJfcH%7jZ5N8g2Cp(&5XcgSn= zwM=}Uvp+G|+NXRdD7LtuA2$cJvhX{4(S);hkI20_*bUmT_p`ckf0$l%Mm6xD%pLY* zhvYw369-BKxCwxo1DFFHfx9NtlZVpsz{GNgLb*Wv2U7?fnB+1wu0U=~IDQsShVLi$ ze*{~EnPvyG)I7DDNj0M$ThT&Pan znXVQ{pA8%jFe&DLQS5_%nHYkeKB4{k?-#{HUxE?bSLMl|_*oW3=WjnfNK)9NO4_V(h2m+2i{Y z$Q{dth9HGTT*q`MK};R?{w7IfwDAJG#$>NK$t?GN?G08;$#LlL-ak74mq*>Dba`Cf z9{j7db#ca|*wdqm)6Zl(ZkEIJ#3xLh0_3W`wjzN-L?9w1R;0@$0?LkMrX_ z=e?eDp64#wlA#@s@@&qMu^o5qLUEyPN9U0&xK-(WS2%RJxS7y{I{0~s15v43PCie( zp7Tg}KYA`M_F3k;64D@E-ps(_#`^)$-HyuSK$>z~3+6Nm(~B4b;clPcg|69HGCAlL z9zX%Bo8fZQEZDLa->_td&^NsRln8`pIXZWVWY!m1M*v_69!!0il%R&reHD{>)}l}@ z&6pzqjD07p;LWE#6nU8{CZ&L91Ey|U%lJQeG5x3|>Yu8w?R^u6C1{*r*vX-_6jnV9 z*wC}EpgAuHfHjEkmUcp?^3!j16BK`w5)w;T@Fi1Op1>h26P(wNQlB%Q%sDCM)1FGo z&NH%%`BIOS@-rCv&_vAz{xN?|b@5ASB>3BVV1VWy*GX#Ppz>M zU0=T|M>OSdk~0*`KuRtqp~QMGr;5s<77Z&3JV}IOw&Kswf!|pJqUxvJ7F9k2`}T;O z^6B9VLs9W6>q#q__NZIaGQFD;^)=qrr-=JNcLPGrTyNgB^eg(oAs zRx_2n-jlq)AyxlGXLg(5%1u0n_^draM&aT@@vKKS#g|)sc2nyYpk}b0|5ya^aI3 ztY<%>(5stDem#_q^&xb=1$V|eH#pV8B_3I>$up^x=ny)*Cj+{c=Z4>SeSOG@h7CEr zF2%xPLrxJx@YndWy7H%l!`ycYG2%Q;L$E}KHSwm0Z@x39K4`57Z;*^*N0uL+oU=Z5 zGG-J3i?e<=$Z9JJcmHgnD$~n`9EhhfMgX9lJvg82_qf0XO}0fW84a#$BOw+*xEMU0 zWLNq%+3~EfrJ^RI(7q&|rZrJ6ndU;mFqBDTNer#bzXDsfMkVq(qhEz9(mpJ{AKiPG z6!#O~SvRDOHxEww+ z8f>d$8tzt3m!l>L{TA9Z#rleW%z@?%at|wRE3&AeHSwI-K1nK`cS5`Ki)86ux?TJ4 za@dX>_3SoMZr;i=V;kwVQ_7G6gBk2u+A6I=8lYgiXGO|PWE9CC8F0N{!@btGEXGKy zis08^W|wUL9UA5^jnxl?H2KyP0?OA?Rpn5O&csJ42lZH!bbX0?CFHDJT0$B7EocR) zhHsBtF0%X+h29aN+Up_*vQc#QXSTa)av3^uzFp4I?ESNWfySm)y zF}rc1_FTo`R)Ai${*a4(t3F56bZI#Q13-*b#FQ%lENc>CZ(SU1qCq&J3sw``z|bJ* zyOG-xd$tNOh#bBb?)&gdNHMqI@2EgFq8%>Pk#5^UIcm@7R_zyXpXznL~mGTe7K4C9gBBN>wCkH(&>tD_Ay=3fHqoYz2W!v zU&w>a_PZcHPE9e+&zwftnvW<<)w_2sqi9re1;k4K;SdykkD7NOkE~N?$}Uaqc}pZX zq6L=A(8^@m2AVT-mx#c(W&IkF?jM~_sg}n`#kXGvpOmtdRkAM4FFGYWC&m{KX!9jh zBM&md4WI`EQ_A_oRi!E%^%^GHFtPh6E$VTEz2ysDJ~%xjj8A|9=<2xo9>_5a>VCa-i7W~Z*Bv> zl6?6!Fl9!?T|=pEH;lAky#vHRVxZ9{$La-?^&>+;s(i%x@|E0ghQ5mxnqq1+T{h}} z>oPJG6XdkOHR25ja$W*PCgC55zTOR8I-j&r;CidEwpJoXqxwMEvAS39EzzO>U*s!J zy?2Cw3wMqdq~Jpb_gGF!eQ-Zf|F^=%(XD5yfgFY9_KwRNnjlD>l3Z{%NM&^`AV2~@JhH;{v^}kWpR)E>heP?SaKM}nxBs>ti0l9 zqC+t#Dvcr0;a0)-ox>aXQj=II8YA%w>qxm%6!`XiwRZ4*^vLr!&9NCofp|WA>k!Yz zzP@J|Mxp)lMQyNDdzjX{<|`))}GfcAPS11D4T%pqVBgylwWohph2h*fv@_mr+ z=1>jE!DWjnyzYv`U62$PGz9Rs7r(=-?>E1D5}9atT+dAkG-VwVq3_mUJ%1{6Nb+c8 zo{`mgLl2!8j-FlglB~Td?YIF(mr^jIOnfOHJ8aRHP|b$9k5aOs8ecrU(FEAno0}8b z3r-&@rsKu3p0U|Yt%6SRot}`$pnx$s!?=Cn55WEza3;R74MADdajT|8i^jWJYNkPI z$GtmE3^D7!4iwHz=1GWsf$CDnUPy*?sE$<18^I66cyZ+97u6pl6JFJo93Y(H9&!_e zb~rYk07V=d}r+>rfm65Fh{eplHTJbA>FrHpj8 zp(2g*a!R+MGeeB^lX0W3pEQ{X-J6-OcT19)mH%tfBFFojUxI3^a)OC~m1~Cu`Fy}dN zIsGYb!vGQh(Pe0>umKdW>3=HKOYpc6+zQuqAM@qIr7p zyPof9y2+9a7W0Xm@6v*B46FQm&qb#(a?7ezGkd0t9Ws!EwIDZRXJ3frjIuKFI#8IK zWXSu&fLB~MC;>JoRM|{aFM~OpC~K|aNP)j@mLzvT_+-1qyC5n&60YD5nB_&0xikdh z+iSvsRS(N9rkWbA0DDx58AicOrHuCh0&$JRY7;%|o^ zV@>l00#|=VmX51Sseb#WqhNia!Yv{-xfA72xu48>!~0$c!&M0S)?MWG+=n0t|Ibak zHzPU!SMM7U6k)zhv{2}hJ5~@b)t`TTdx)CBq(`6`K|#jYRfw{(d8$;;?Ls4>FoFK+ z=$H(*LM~X_^uC6|cKghc$pq-MT{Gox9T8JQ6{EzPl-&0_bh>Tv&*%rwe5O7a}?zv;nfA`U+zJ4$6?~Ajs%V`J^)Hg70v1So1i5AI;4QpP4AAkDb zX3Qei{ao&HMkmrdhbVIImGbjhoi19Zv>5PheNKnQl^j5Ji3 zxBBdggjZfGocZGSeZeqzUT?TV!-TVroY_0pnwrPsI6vU<2cF`Zh9{bl zCiR}YHIzll=P)1M$pD@CrynwxuW2Qpz~&5GfZrKrK?pXqqV6NZ%0vvmFf=kDvGxKA z8==e_MIhS(fxIgavJHVZw??fIuSK~Z#q`52h)46~V@ca04$8A*=1yf=ypEJ?WnfD7-!48ZJU3f@Ewf)L63JMA;e-1m?L% z`u(mUJen`Yq*EUT=_aMI~C}2mGS)CtGSq^4!j6_nnaEoB?_l6V$$a@x&UX>Q#*v|%uxer3t{m?D zcL(_=FZ@bqLhi)6Ggsb|U`q_I&?@_|I7OMmKdPuUsX03o03kuh5kr1{!q^#3Y8%rHKdF(G)V5^7S~IQ6yC>O45bxmy=gNI4P|RH^ zAQbYpUZkGKXC#-aRJZCW!y?tSs+_b8h=~df@Cr{)P;HQV0=@uZ6|x_J8-hx`7;cSN zNF7E%M|(xGNq(>aG)ZI6VjtZ4i%8(=X5f576-f+8#xkX#WCjQG$oC3~Z@5L?Xwqi; z#^vh^>)TxvwZ#v8{)IsjA|Q-7VmVSpKz3qA4x;mk6?4F@NRM?%+yIFxP9z6oAF!H1 z!9C$G2hP=h2Z)nGoL~;ki%&o7#&n&!F^ut2TeD#xWB=+a2^vwzKPSc^MmF?Rc#+>g zELw5_bGrA^c#vBId=QJK|5R_6U|tzaAZvUU>^1Z8Br`Q8x9>pXzUbVTOv5)T2H9LB_h)oaJu7L6cD|SwyG{eoe)1}Cmxnx8{?@*uA<{%V z;9UgmbfviLCwZ2+*!YxpC0roww5oSNQa+=Efl&DmPEy*j>* z>_D~xK`QSd(9wUT4Xi-;GmhC$Rw;T}l82wdUE-HmH>pK3ujoTMkPkJ9lQJ>m)w@&f zA29?Q_Ql)+z+x~64g(nuhK@kFI+$gmOn12=3W zB<7|Yi_K-T0Rr(C0Gzw+HI9!Kv}IxX&>0OXWBcmpMWoQsn!U32z@4s|*u(I^FcYK+0$m8Yzlf@#PuAgUH@W zfnEU&4Jy~56`=4p#Mx$0ZAo`$p`p)ag|u+OmU3)T)#Dn?{D`A8XqAs3^5hL=CWWJ7XU0W7hha9%3q zE7b_I&*nWwAmn7Iv^qh^bd}Q6Uqgw?P_62Ll7x4IcF2r0-eXCRC1e z4L}=i=2`1d=Lf4E-gi7BPXh0MK=cF*+W-Av`a^GHpvebL)y6RR(M)eh5_}~^fGAa| zjSHTVB}cA0ma)0=oShJ7^Z{SIPSPhhnD@Y-`ll@Z$l=Uajk=DjeEIdo7Tgu1BRUQI z!p`K^hSzN3&MF=a^_Fp>V~Fk&V>>2~mNgCa&D77_tu3X?<01QI6z zXecD;mcygJSK5P)r9r9lgjJe!XdfA4WIc_gDpoy#<8{aor4qQ3Xt! zb;ag?V}@k#M75vEK+gEDPhpi~88N2ngE3(qlmR|y0EyfBDO~kwR<++6Ycc=)^b@T} zanCE27Qikb zox&>hk_ICxsQ$zk>$KXk9bP+i?*#o;=y&Ca zxb!@L`Xl@r5bi}h(=`o!>T4dm0#T4|Yu zXQEZVG;(#(@1?!2k9Dck7i=-M#OzOJHBRsIg+eB9&DMDjrtxDR@>S^OiWZ{n^01tW z)Lvx8Enzm%3bl$jh#U6p5lLJhIksps=0XDsd`0~(6iGM3L&_crRo48ixLNOJIug=^ z$KYQgVAlW%K10ah4Y&sXy6jE3M-=d)`l=~mvo%1FdE>{w2jhZ!zoHr2!d#)A+n#KS zC;2+Nw-wVp@rlM?@V0JWRw1sVcL=L@{Aix`a3J6qj%KJyTs_WYK^+pKPk!eyrT^^E zC{;zfr8ZqN)T~5G`R7=p@+Jo%%n}57M(SrItTT;5PA(h&bvdIWP1qTb-9oQ3I0(8K zg$RxaO1h0|A2yypN8dY2Af%iW;54@crC{Uq@ov<`$&HXYEt+Gb&0<#XU~cr zAy-UX8y3_c1iOR#@eeI~NB8IP-v<*?1a|P?+IBuijrK4Y@<9f)#|26ur*JmhvwIK$ z^u?0Y=&;%JL8$-h53n)lp#QJ@)A4`vsNaJ+^&RqtyipJPQ_a&|&A5&Z9$pEOqo2Is z%m~xs?7{%WflC*zG{t+;p+%e=Tyi$Os`of3Nt??3188m0HAcn6=}>LJ|YI zKdU-v2!y?IkRv-ar@d)V3w0`Ap{tgo#B%^gK4It&ui6@_@~m0rmlTn>H-hjm-v+7D za{dA{fALJW`EN@F8B|7TH}mPI*Ud8aeCVM$o3q$JA-y-til)z0mABA}uFv#OZ^f16 zOgm{u_O$7KI}5EsTMMN;NAh9Vbs}Kx_3Rddrs4r^$>zPSd3?GVZQvXfzan&_1C&F6k5UkPw!=I&iA1SJb{xcpB<+{di2$ZQM>(sHP)uLRVKFP?=5*@rNq=#z z=CNkkRM@I+ex==p|FbID{)o3;2i?4S*UdfxIjqd%0p9U1eD@}I+OGMuxuz{>o-rG6 zJySjrC&|&`_!J-ck&WsLOxGdD6*|ZB#W%N))>X12ntY$$Ooc>l^R`*8-XM%03NXxm;(Z7vcUaRJ zKkGRgfk#4}7-Dg2B9D^MNXx{>|cNvF!b{L@;%k@Cf7f8rQQq7)4| zM!F*>&Ck}@8(9Uhi9E0M88Qrn`GDXj^cuMCg&YAGFx3JGU$QGe&rtaLR2jLUsadCy z=n(0f~{LP$%!|8b6Wg*_wkT%fIc)RcD+FP z-ZhyN*axuBj}`@2!>reVeo)&qIR!C$r!Fyn^(%q~LoA#P*@0xY^o`O(A?J%`1_~_R zOct^YJ8%Pvi#af$1$?$LEZbGuQTSVR?c}=vdDGZvmVDDnGU^@qP6y0%oMh?%89zGG zURH__(75<>axzUMeQbH^uOE7W8c#g!P!M`j5D=`$k*0W14c_EG#C|;te9`_^y=%^6 zQ_4-PEAh^f{GlPWuj8BztS2t9d1(S-vcPTgs1ePapBeKvejL$ViAOT8!G9=xWS zw&m1%8Ph_V+P-M<&!0^&k=^1eM-|Y-pk|>y01MglWo>9elFdEtQY84^zi54se&@Rw zL6NkqThc~|7gldQA^wkjki_bi*SuZ4#Do*OBuXn|p4|OU+<;XY9XRyog!`-S2m`2a z=ALz)G~k{|k{-@(-)fcry~^*Ipl>&|e`|Mmi`avvKY~i4tKat*pELV!emAqXRmej8 z==bw*&1U(r^HIdY+?;6Sk1IZ#%6YssslxDk+J>4}V6)N>h-#I(?i3x{c^r{vAN41K zCG~`uAIB|$$2lLKmlR3D3}~t5du3pcn|>H%sZ;p3{16(Oq^;BIQnNADY5Y4XkY0ZC+PKJQG4wr@e^N1QWBPH5a$Lz!)}`78>5%r@)RB_%NS9E82KtQm6! z<95|MACft$o-cg(18yKbeEB>QR085P%s+Q+w~RWrp#_w+ql95tS3+Dz^n+#S6@K3a zSbj@{$9V#(Z;A2CaZiFZSMP%HkJ$hXjZBn5jvEZio|~&-%iFWnqj{7B$1)gFWq`Yu zaQQ%FR^k%a5HiM0f~%|rHnnty_k-5BT}iR&!$2Y*d#mH)j&?WwwZ^m%%^CiA*vfA& zUYJeYwmaTh(S$+q)!gH4(W0d?g7ry7!E99=qxwSiU)4E3m3S(@?_47TRWVmTR{YSG z<&SBQYxh^5sBrdSs(v%2h6NZkG-!Ut4 z_fQo8AY=AI#lrUawW7OZvV#p;8GFexuVN}p_R;T){>9l3_O%teRxa(8X|-&W{A(V* z(*eTG?_rO&3Di-7bffd zMY*ERqNnzUWg&S=J0>bSc$^Tkm%TDQUPh@foA3<3=vA*wN(pPLdxP5Y&jLZxSG|*A z(PBbO3o+BV+zv>6lO$E8&dQ3W;N1Tx1ei&BU8lUKg>33+H`1VYfr(`oJ$7dq?s0|3D{wBfQAQ$~nO^a@`0^9JZfB3@KD4PHC%qI56b>q@Y1L z5Qh_+ZJ^Y@<9z;gcIP1Y;l)>^_ZO9sA-Ltn)Q@&-ZGAjKfUiO_vLE$2B&a{L*upvL z>|NpVA-|4u=kdIZBpJ2%$uaU0c1|9Vl^;cVLB1Y&NXPsqP$wYTVZi8|_?nY%&uyxH z>gXVVuseU~@Rg>EUS|z=)eAejy$n@D>PwT^)T3d~o|u2eHI6zp>5vni3d&7O`r}y8 zXn^so#dN-y=hNJzd$RqhF}09`PS?SR4s|bbOUg}z9E}{>H}0c}z`dN3*|^&&uT!>ej4)=P#8Ik(M{nKRr)U2q2@3!1)0XcMTpub! za3i4DI5IW6mR%zw8dK%}>#W!8eN~n5BK)GVN}uR1$(SkEuP||{6zPdXnDpa<2NfY$ zIt8R5|A&QV)`QxN%g_ASSNsS9Tv|swgmY@zyIF@Gk%d;Wj@mhIZ5+6N9Eou25`5E< zwJ_W5v`;_qpWNI_`m9gy>#CC*cAF``5X3a@Qaq^Gnr!0rcu?_Psi^nXi+QJm$*KTX z5h_9W_;bL>x0fv;p9_qFNGfJO?@jO3L=+6U`V9|>CVZQnoqBm9bD#h0i`?|QSytWM zI}BO*xjmLml8-y7`0u{De?*^qO13QXn4Jh%IJC{dr=BkVKp9T4fDhMau~}d5f`hcb zc@Wl{?E^=dIr*3<*C?x9F z?5;6l%B+GqMuUX`L2%Q+WHoO^_&&({oPNJfMwR7mNa@)z6g8UPcoyQqN;0j}1CmF} zPb{4=6X<{YvN0?7>cQc(-KqC0Lzc;gs-~;Kh7HGGdYuI`Gj8QIosU0P@qY1l23E(d z2orESFT^*02kg5|4L(|(D6oHA*>;vDZ^1InRnJ7B_n!QohUT|Lj?{@6B{&zwm#55j z&uceIuEnVsk1gU~qEUEBO3vS`RS&^jHM!hnT58HgUmu=7&kE%-2XiV0)s)G=Wwa8*Irr*k*UIbTMfnf*u~J88T$>-xaV06ym%*W> zXbbck%BgLREn+B;_P(rZ_rH#{iSzurSKpQu7cM)QdcURT|NHA@x8kLwDITP_TA(rj z{W8AWTDK{$3Jv2nzDNJYSbL0}uI^7SYFQ856W0Aq_5`_3=Q#f%WpEGELe&aTi2emUdo13kFLB6o_v-2}HYI zz73Qz4Um&O-i{V?I`~hXqg~G>FzHtuHTtzd_F>$r@HC8%eahaaBo>0#OA(+*trOYK zN8=Ql#J4SxVgJ@Vw+%LTA~sI8WdxI4!B37>s{&RsKL;%?G84Qb`GJnx$iF;!{Opn( zTSvM5#W$p@lx4etG{jXR*t$Y0EKpUUOMP>PnCWCYTsEniR^bgbpCwbylG5H>iUMH0 zbK3fsijR7yMR^Rl_p3kqGR(DBaa$y6FEH<$Vr-4>T}3<~*S4!gbQ1sKeN$vr!l>6( z+rJNoj~kT768XeZ>K`SJ5&2~*Clxg1e=OjWe~Q2Ffqz}%FP|wUryjfV(j2ZCA2ZC-*L>-< zF^H@&sAEe!0+vG~^@IxNRVpn=^&J0>JkJkbeujA5UHULEadEf0jO)6&y#^s^bPT_u z7m_hP9{EczwEWuFuOn+@<*+4kUg?*mDBYUGg{I`m`E=KVo7Ed@7HylG(3}e))0pnf zn@a})w;S)|RG+Mc1LfQeBBNE>4>luo z%%?buSju8w=4<+e2jtwBjBn{u5j3D$r0LqwG^flgWJ!F?q?d_$rqcT2;cV1j3bDKV z9SSWEa+xeZS2mXu-8ie-8wuD(1*fXiX0fQ`LJgoePhnOcfve2Dw7=;E)v`>GGvw70 z(3Ql~7UA2Eki3-lNsLWNIUo|3;4lxo?&Do?x#gHm=U$OoTRECyfvOO}R91Lr(4P|k zZY77~#hk~ohd`{Y*Vci)r_Vj$Q!LjNdl4r#jUFg()rI8gH;DZCfnQGl^<4H7yL2lD zE!7xWoAOZ){e=@!qa!90(+s8~@Wdhh~vg~zeSS!<&vatjFi6I+k%Iefcz)M#p_!|QN{sW-X&%8}LM zcacY2#D$I%pd4IW^9dwScOh)r`mcC9`|EYcJj)&T*?R)K)Qp;N!ZtgV0qaaj`0qrdr1Pl`8-!o+SiWrRsF|=kH-`d> zm;o3IG9q=FE2_dIIjXp&K;oTi5DG);2o`P}6TmGHTWJ2KDIqc5t6onwu$-S;iBx4E>$o zG4H(y8iu|`X+coifypPGYAvwo2wSzf-e`}PwoouoDG))THc-r_vEJftEhVVT7D54x znka|#O>0MV@I*dhQsN#}*VCh>Y_v`4(_~;GkWwEn;PiT_tQe=3@`?ak6}F*#*X!+s z`2$XFKmBy`TxpIZkF7PB0)eKOb%JZgYrBHxUMYuJ^&uN(l2VEVVr8*c_0>$q~P-7&tA!>vCP%%Q))WO!ej@0_aT ztTfTR#J|8bWHy-Xr*w>xtMtmy{ZJ<3RJ)g^^r7-qH0H4M`~oW#Yl@=+Rw6NiX82S_ z5Uz<8NaUgb?7z|h=^y4%qrsY9xrRC@ZrtPMo@JCP5Dr=anYsrllf-eTK(Rt=#4QGggfTo@m>;K$keeaHuQ#$4g%0^{| z7Ce{Z-WgFLWlI77=)s0@p$sSMGQNUX)oI?*)|ovRgc#07HoRiBHr=HV3N7Sd?kmMZ zFudbxr6ijl*?J*)HXd5k&|{!EjSfzXQW`=vJ_udg**vmxuI{YbCbb@AFdy)NL z3M=r5ut|-dRI39rLwo>SN7g5zYxzx4Vk9({~)B=5uKdmY!B64CDb z*Tl8kw3Mu{nJ=}N2bzKecQQ$Yt+tfC*IH}MTLg9Q)RWAH9rgO;bxb_e6k^mGN>pIf zD}u)Y<bDPPq3u)T>rVM z=qf4&5lYY=bPWmttj*OkStbdj!hynLklt!_m@hqjF4+_zTtzJPm6CB|#!|W%p;$Pq zZxHo-cU8TzjE{njnqdR-A9&b3uUWB{X`j@MfGo&6=*jA{jOL!83(~vV@+v+L7__h@ zVy4`2>6zii@3i_RYqM%4=or|@RG_LVO-57h`s`S1micFAT38~q-pGVOzp^!bJQ)I} znDwV;VWQ1Y!j$78l>mx{EcGn93x!dy@>SVQ+lPD3gT4?0|dlUop8#q8LV}#Qz}8 z5O!m0d?tbP{*e~>UU+5e3o=w=&WUQ?2QJnFLcaAzunV<*A_D=F?;!a3IgZm&0Cw|8bY52(C&aZ6cwO zDv35CK`MswxWR5LJVWNhrb@u2RU`Yc~!Rcp*A^Ia08z3A^RgbhvRMa#6j{g+*mF}G$nLDk(Si)qd2#!G>(+uo6Dmlu3Bn_9 zU9#DXtwn}ZUD&?c7)F|gN`ZPX&d|^WmSsdMNoU^$t2&6-*1LVufx?6+Ec6TF|O;_s3K31C5`vvP@{1h+IP-Lb@%hKfkGNmAuV83F5 zI3jH%qHfp?*k;_{O=xZM3fQ=ldZ=)%d)UNlmX|4nBAmrp`$uA4*ho%zP(h_A38G#Q zV3T;0h5!qvStv4=Y@KkbkCG?}WlbkEL4L~3136c+E6Woz(iWma2!!~B^MXF-5dm2- z^z~E@@E;9LL1|^9xtSI0XKuRMCXyIRO1H(4sK!Bb*z%3lbKn~zJv*%y# z0Z0V5l*{dxM<#>-+sX>E#%Kcj8BZnQIPPdLN*}A3D9I0;k&^)b^~BT$4giK);(#}T z4EG@ff^uI4B1xqHHev)YH4MQmoB^oRw@llVNZ_p!0p1n~vX)Q-nn5}sP4Ii3EflD9 z#riEfpdMnO1a$$|Vlx2mx17Kr@h6q!cyMA|E&yb416iES!JTvzmt6>h164BxcgP=XM9w2VX2S6L}Bgnpo5akpM;#RT-q5(I^4JDDaaw13*Z4Xpx z=PPyI;xdp`A{^%gSO%7u-xo);3QP2y08DQ$9o5Ki{Huq#ph!jsfS>#>01p0Umr7tU z({Pb40n9_lu~boz#QP2}8_92pxe$-rpM<`CkONOMf{us@r#H!1{0ex^Cf|r4CupRK z$C08IH$k-$HgDyC9o#}6F)Hl{WDO}~l;9JmiMdT^xdXIU{-)1|BaO((FP7W z+o{#P61MTi_s5UGT&^_Ux~Sorn;V ztF@j|_ggnRqDGlyp%|_3q}eb?q(|HNS{e@)Hx6_`dfx>TiEy$d^bWf^p1{!l4bIk7y_8PHL}1_!dRSwiG#X>@a*&%+Qr#hx zYCX~@GAoO}l?a!^M})Op^P|boJP-g$gHz%@er_f8X@1iGZb+()?^;<9UUTHpE3w{u zk6w-OGUaj3ERW7nmrZ@Ymj9E!3LoOG)egJ!7A+6WDSq)t0+@ZT@$r;)vr?h^BNkFj z-r%#}9FoG0bbqjqmlKL}ULqh#OCbS<5@}p(F=Vh&TT&dNuH2qE_I^o;B7SMlTN$ZK zLCZrYq5{7Les2;V(QDoYC2HBx<0u9fg2%vVea~M$5~SKr7Kpy&3UEKWOv8f?Wb#UK z-*8kRH4JW5SUPY+l>|>Kp6I}4M;&!T3p$21;=_4ac8-2?$bRK3jH52?mbr4&obTUK zE9iUZ%R?q)e4_{GJkIyg!p*wfYp!Zq68P^zhP6j$;z)o3w`UShcxBIt)tJw%1W!j8 zVWo1j>k$=_)u_$5u7p#Q_N0{-*A9u=_fyiD74~0D*j6v(=%q#u;PC|5j-*}>w?eot zp(&)E9I6q71|@pYcvMPJGA^;eaF6YF1eC&rCT@Llp#Z$9IKJ1raLha-FQ{VYk)-DPT?0s5HPodKK{5j3*14oBDH~RZ__#n3F zf>0@2ivX5)L7B>1b}dUAfS!*OXmmD?eujNgcvYJR=t}7Vs#T(8K%pzl$d)G--$j%F zk&6I$M_4h$bdD`-=0>dVuE?|#)L3Kk6@Z)vcb~rF4V&N%{4iLsRfgd8&})W-er1!J ziH@v)iyphf5!sF2t&6Mo4|QIBC`k33hF7gFZrsS_3TCO4;>6oDvjRNRnzV5tq(%K? zZi=o8zIVvE{mT78t=Pqjk5JNkaV}6c+J?fP>@Lq3_*iu6hw^2u?UgXJV#L;~2%Oryx3IS<51UBiU@`G3`gC>W?Uwf| z*B9x@{eMA;QM|zpYR+Xc&*K1Q@%Y?939yN>@7pW~qfDgy0D%2f zF}l^%4#fZTeHthfGn-_<;xVSuPJ|Sp!nz0pSn=aX~aSDd{U&$;Re{}U?a@;51xD0m6ckBZ zoau)ZSLx}5L@0AgWCy(R2Yyf)t5k9zp*xa;M5N&&b*?d5zUUZ>BIscFG@K3>*RNj3 z8LzHU085&3aBAcNNn5gZArFV#!d*3)VF}q91L(t~-$O6$oSsthbZq7;OXxO`n~+ioA1s>{tq$`%!0h{C>IPG3mJ$GG5GjVaXl5x2_4IY5{R;m zhTGkpl!0u#V5b9+5sz`{m?^KrKM*XW3z(>}olV%(Fdkm$>}S0|ipN(`UTqBcwlHL`>Bs&=11VN8B@qEU(W%^#+#YZGK2i}H2@g>McuTC6VOl3q_7i8bo4v&qc^SuhVNp5r z`hbJh)#3785jJ96yS}*lU5^4MRiIunzHiS68Ghk;t`z4q#2WY?WlF47 zf)Rl?DC9Z`DM${C*YA^X0d{qc7X&W6Z3u>U`ZFsr2dNYjs}EQh!wfQS{f^0g+w+Wh zz65qbOv1m_il53f7v(2D(IPdEZL(Pk%r`dLWpljE!4+YkhjP@Yphf5A0}=&&nTELE zsJ3v)7-`pLJn`?aWy~&8Y7&0gkR58R1lT|qYvf`&qPIf8HtKa)Tl$a9+)I}1>cct9 z2J99tDN_ZB1h`B}XI)@kktX#X0*$VEOrO_Fgu|CV{Q52t4r)`!~32mf<_~ekZFfoo!b`nZv zT@y;wQVJfQAM=`kZk|Rw`-S-{?E}Izo=mFJ!jl;|S!(zQ?ET!2PL(R^)k&5ZgZUAsqFs+e z8|0>6E_W>Qo3_%D$DzS+rRmATTa-gnfvU(tcgZM7=KcxKug9mcKiG4p9yk^o*Ol>w zrS5CPaEH9@cdlwP94Zy$I^VL>tskK4u6K0{a|`AC2i0g3pL}DzhQ4Uw%X8_VSKO*k zhO5;unl37tQ;Cov!{UXM3Ym253An$*WaE8QO+AU%qS;NT>v-?Z$fIZHsEaQt$*<@mj$e8+Ti&r*bmTpX)8wq@p zS~1j=>u;pDMe6X@$!PwtszjTw4ner}GIY;P?wM@9^6-z(sIJ;P!=&8;y4Ox#dtC*KEiE9ML4V_rh8qu#?At{>Jv+fv_l5U(~SGyI_z)MKcV!*jTCI=w~k zF7$&o9;4sCEm~nSSx6lnG~9RI^?AG}rvTGSBJb8?tY@l7o(Z zHw`~^sV(nP>*$+xdYW)dZyOF(jotAcqS2t_Ri{s&dtA?Zg@&gvKaykv@!&8~8LW`B zpzbGM2S2(R{Z}Z6I(z!mN!&D22Iwtbk_vV}h%tVKd4!LOs2Rakn@H8gk}N6LHU1>; zMxKh?^FuRaNRs`uU)(u5bz#5fF00_^2<25LI@Pe)abMXPX=Infp*h^wd6l9kuKbuU z^z^kqs#5kit*Z~I#FBbG_kYg;Su50}YHl}E=TA+=h%#s8o>=&mBsvyyj@{{u>>0Y3 zZ!b+ZsjJ!D`=+$!u#j8XD2mm__AB~#NPWUJ>a$(O6i68l=OaS-kDt6Qs73th2>NTCUWo-j;;UcN5UUOUt* zJVK6^X^sAfXXwB1mKBW;qux@3qW#D8=TzbRm+HZ`5x<}thGIVdKs@nu!F*E|QPrX5 zznPw;*|zFFmDf`n7$zO&c~2M1fM*JZ=Ke4zNqJl3oBJPSMWg1ShUl6$1fkD6&q>&& z@pacIjeeALnN=XpK;ivRhIYUB!W+^DyH82w16m}k`>R(|Ycu~edhiD+=<*uydBU5K zj?XpuKir8Pnr3fz<-b2a5|hih5L+R)mMY-ed~E3gFfA4|S*EY+}QFyV0tg$p_@yjjk2sjP>JgxK|4gu!>_=n`1N$e-#&I;oC| z2<68T_|uD=r_#|BC#Yb@*H7yUKXp4W$PDdhnvPYRA{@R#tH|kE5LFMx5&3>vBr?@A(hH~Tj%lf}9igR@0~Dsz8`8ECGf9_eTK+?jd$ zKLCqBbieHmp2Ps)C`ifJJ0%|ePHeNaG28SYP`PS3dmRbD9Z$u_+pPaBED;#Yu+c~~ zN2{j40OF|+Y$5-EyW^tq%=p^6yAS|o0J6d8X60?VDc!7YQa7)gmp3|vzM|-Lfw(|O zGDZfWi?&XqRs0n_T6*hzB|vE2Sl2`yl#DzC zilW|Fm0Ds!!@0s! zKqq1x&kGh$)hYEv+xms9*yugRM&68?>m#{-!TGhLs3Q%N>cgnOz^OgxwnZU!5<8w4 zM2n+=1DTj`;wkVHUNsrS^X@N6Q;L)95NIc~uY_gP$6)CZS#gRl^c~$clE#k1L;2vO zaK<<$oFt7HM{0oh0pU04FT`Ljza;l|ImtgL=KiUg=7Rn7{xn9l3E-jk6-B=frc?sQ6T7jq@f4Ej)CW zz!yNNfL*r@@6H6E!6?4CaiFh|364$;;tyuBp_Q`;>hUyTO^Ejv{*G=!-ZM!=e!2)5 zM!HXdgQ|m2+lXK;rxC;ntwslcltnF4KUCq`0n^C?K&6UIc8H{P)+i=>x4jPqw_>t4 z7MOw@0D7H)3Sj4@<2O>IKr<9wl2l%TWkhO%)??msZV5ILR1b~66QN*c5L2mk5>$2w z8UX5Lk}XJ>XK7&)c4r4@h1T_}N^X_=UXqoSw{}$KEr5U{(ZYt%z zowu(I2R@*Kkb!8E^gA*+myq96rAyn1%;R>pHVT}}ulr=@i$2I4NgPeL@F0)1dqZ+i z++p&O@$oe39{2+F#f(UNvE-yF&0r~xAk4olB@21+5HrrZKJNj*&xE~%+j)pPf8^#o?z zBeb6Tp_38Y^MB#?WEE)utSCk_%|z2>qth(VZrH*f>`lcnWC- z`SH9LgNW-9v1kT2j6&7S%RlMe*$eqL#XHBZ&P2cS==jgeavZW+7$UL*03rp=Fc|3q zIvL6vW08c8dO=Ht&}q(CS_pvB9ajo{OSYAB(#n-9JRB`HJJ^xQo3qxlUoO-TmUxep zhR|azlIi(FD0Fb2z0aRyb0(p~w8DXabSx6NBJgK&P?hs82}x8&_7brtF`h>R`If@V z2p~Ptjd9Pk$lUYkIS{xzW)1M3W6vJv-Gx}8t|N2+(^7=B5w=n8gG;~xp;&N0YMe93 zFoh2QG9mf6Q4CI;R8=t&qbOp>x5v1<*u3mW?1LBwE`<0omWXkTB~U^?7>(9LO-zQs zz_w{SG#p;FwBnT0Vv$QI#1-NMcLs+V$JJ-tm4Zq^ol5Qz#|dOg)&uh?zyO!gH7G2_ zoijjjL&Y_v@K_o1LWLa@K8yK-Il&$?MO7KENCE`ElvYGhwez4;fhYrF_#2H!XX52C zE5TX?G!6$Vrt?6sh9ThWh$lut&!FZ3ky!b`3d-*gco??CYs#VY0T~o#B0xA)!6<%7 z)CiK;)lcpL2Q6&9GXNVT4)WSR>4qT3@xBrrEDHnY-=KJcxQN}YHeqYn&fO+%)B7pDKy*$o&>g=CuVn2+U*bk+ZCotJ z3XznNoRn;v)8gVb(tW~~g+})$-N#~rhfHN_OF@UB7 zuE_wc#sMi9pdSE=#m}SsVIZ+k=qOM^@QTIB-@u>6bU~(6KJJVX$IcbH7 zaZ7dx8-QD8CT&TvWua@3B^v^(3A)A};D?c(3US~8*gaR1_SNGB+L5xXr+BM09j=s8 zM(Pe;ku5o=xGpY_w@0(cu_7<331ohV*T6pMCf09qeUuL)z>L10J-QzJg0JC z7KtRvXGKGrA;plYECDu5n96#!;jq8(RkE8xHuX=vp| z+FePaAj@`J3;|{t03baH0DzVO0HkH3nQB>R3|q#c(3S;Qq){o2Yy`3lTxN{;d;GX+ zl&%WIj{`*Lk}g}9DI?rvV+DBGy+K}v$Fg~F6J!wah{Xgrz$sbzG3FsIeiKm1TiE&H zWTNL{2Q;(}&SCUr`RNq40!943aNMX_atBxR`TsB}x~iIE=XkO-=Sh2OBp)3U7srMj&A_ zQ#nB?+)Mm5`WOEa(S{@gfFL{a8=X@6rQ6y!7`$;wV3eH=GIWICkd;Mnp*x@xaX_NFtV~r2!}4#xW0Y1UNdgX~%-n zm8!tA;RpjlBsbF#2846KeZ^674uC|2GCHRGfHg-Akvf)I@F^;Sg1Uh(p#nJY!fi1Vl3o0nm)<1PIWXNiYEeG%N%M zM#Vlrb%Kca187WN5kQJ#fX8&KATcGY;4m3TEtixzSP=EWF@O`{COQYe07jx2 z(`ATyD-II_*`=-u_}sK^+D@^X zxYOII?v(O&LlfM2WNtl|35?2^<%f2G$T@vT_6NFv-AqJ_I--$!QxuI8;Qdl;28itT_c<TQyJNhG{w?CZGq@d@2AHAkwquS zB7r^yMij4FXYEsDR}hWNi#=s47fHU&u$Rv)s$?`-?V-MfSBfPFC*|jTN=De zGi0-;=N$&ZLIF$rdulXP9NU(+mzOdxmB1TXemTaJLrWKR$E0&rWSU94502F)AFS)HQ=atO#tZPS8OZ{sFasGpZ3{958qA%s3@}DC~m+pWJEqF^xzLQ5RC8=StiM zLxaevw@?zEF{ukpJ(z?#)HJ5Rip~5hqg?PyE*8I2k81qv_4rXokAPG!WbuQJ(%;1O zaRmiCeAF%_^2(#;*Bn{~K`anPOCIXc(pm}odY3>W&Rsg9bw(ZaeM9{yuROKhMy&{% z8lDA#(bs|^^aI9?GLPgC9m0i?qr;2ae-g}I3GxtA5SWeskBo$R;UNqS;nKH$~P6M5>Cii zQ*p>HKQjN32IWtJq#>asi^wXW6QPN88O2+ zLa2ey(zA9$O^e`A)s$w+@z4)-rD~24qPi(d7H~={h^(ZDdf>BD@*I_@a)>6XPL&Sv z3#m!uNK_>F0=A0hVKVWXuu#MxmTPWQ7R4^4f?}-Lg@6HUCtcK{lda`tp>tWD^eKoC zZ=*0pmf|eq6au4L&E}@hF=r>)3}2=#A(qFl6eVrb#udM$TuM!JrIgY=LP#NC znmN^W*i6}-E>y&ZywjP9`{-ibMuS|IpM%9sPo7^ZW za;_>^1$@&30N;E7^w9ulP6+9S$!sJ6=M=TgIXP&;h`0`*vkW2QG;{bldncyVGQ^)V z2GKU*K@2)eAl(W>=MiM&Rq_HQ&{b_3P)qJbp=w?!r9Ap*^7cao3_8mtq_yJ!P9H4vIlA zK;jXazIRH!U|lvoSg5qys2ni~y~H455HaFNR-j2f9Ak+D!KPuy z2dw(g_%ugo4Tbp2~`~c?kc9L@nczF~r zV{&5&Ven9zz_;inSBSKi$8q;jCfMseKlXY90AJDij-|+z`FUtqMlg^Fe83e#4B`hs zZary?6t)Z`1yn*u#1LpC=3sIO90k`P2*5l5lJK4gO`Iv$lk%mhiX2jk2uC6iJW_0k z(8|gYok4n|N5nP+0H%SC8~cDQphH+2o&?wjRRSHtCegN#N?0CX8uAF@hVcPNsVNX& zNG}Ks?F*kJC}Mqqg^+5^xRnpShvfsJVM5_%7;Dufc-*Xp|GDhkE^(%0ZD=&WNOY~c z)?ll!6<_l}S{_`FdT!SmJL@B{VK8jv*{ltBZn*?xYqNFQN^PaPX%XuJ`vb{MwRPLd zZSA&tTfeQ~R&MJkF^j-203}oiK#Aqncw(ay&HSciD(so#)Mm^t*3!;1Ob2% zKmc&2Io|#%1OO925$@s&=OO@jB66o7*WKy6geXB_rXrvH7s`}cG7Dyu+FE9lFLnSEG*1?x9HTI=VU@4niKH zgHWP^05V;@g=W6qYP}NSWhS6$umb5%g*+}FZSAVH+H5{%8^f4&GsVx9)yxx#sBF~H zOeQIcoX|^T_eJ^%anMSUM0=D92$HA;GIyN;(kW-E<}PDIy}-N*hhqRB8>ox`&V*$* zf{T*!)Jbd^(=>b0Eu)?%@=1;iX~NX3BP$MaH24M7##$QJl%R}xPq#SU5l*z#lLN zkT}FS-U0J~VUe!l8K5yZ<2?Wl0UCq#%&X`S`2nknRbksc0609>QFH;<_d3DmJh`wJ z&LSh{YM(*jgu$jEo~q>$7DWwK?=ZSZ!op}85p#gtUR?zU`v{mqsLSH8Il>`q5%vr5 z136-~qg)1_6!$4}ehA5%2(54_*x%rUJ>rV1x>;)J8vJS|?H<-0Vvzolq7_XU9he z>2J_SGt3=OaUg9WDM3T50wl=T@Vi=38aw#L*s@cc}Z1j`xMb+GR zK_eTIbq$I84KIqJ#yBeA-4kY-Ho;$U^ zFvKuES^N=DmU3uV(6(M{g0ho2vCZI6bNZ^`$=+z5iDjfRL6x9F0F?#JNoCcoRoT+q zR2FsEIII#Fn@A5?Sph_;$*Qz8aHxXlsO8f#1 z!+1f9Xj4EOQf6BSIzz-FeE+XX3GSy*(aTAwuQKxy~5OHS%|vX z%`7(&ISZW4*IelOiTPGJfh_=V!#5ZJga)}a(S{P;?1lgkMIiuS11vYO+2~D)K@D&t zICB*Mm;sO*oQa&y0N{D~&>0H+4Sa(GK->V4ka9o(cqxYr1qWA50-y7U^Y!M59B>zJ62LYHxKmZy6 zkQ)d9Hvpq)tK-_47SJv}yVRt0Rn6Ez_3ywYWs`@CAX!lDVgdegaPD3ZkeyLv3cleI zdT$_qOh^6!1&WpeV?vCBg+Ny3Ite)@`&^gwh;rNrWlWw z>yzDc)R}27sAbi#s@f79TBMbmylI;daasx&1pc?G>0X=XXnSI8{nWEp2n%cvdK^*kYUxu;0&kakU5sck}BYW)o>m|CpR zgh}hEZE${SqqH;(%n1#H{PENH)A|q6S7HokEj+@rk)ZI1s7SUEdliU)m^Pzn)ih07 zGtsn?S|aU8u1))^y*FfPQyeEPiG$ITheVmYH2&l$^4+sO?I1q$7QyxG#;6$?^+Nqk< zFJ(!!q&n>S_UKT3Ln>A4Pnt49BrjbXe;TAEZ9ZDq|R$x0BMHu=6uvM}k z2Y~CXMM8VKxAmdINV6p_)rbq)0$@~lP#1wSink^W-p+^8*Fpc=Q$j3zat1prQ}^t{ zv1X-rEIH^MP9DVwA7Rx9MYs(P4;FB(1R0lg^?i$?%&r0|(+Kv6sEHfFE7X1P-zFLO zw`3WU2JfOON+q-s9)HN89M64c%;jYCf%(^EUyKkG4*jh-s_tQgIQyhtL>e+3CX4fG zyh_RG;$?7enDjA}!u|zCQW;6$hH(A2=}KfJz7iTm$#F;caH|Ss2*2e3_i1T=Q?ed? zN`E?B#3dC$ZnC(H-!v{)u}%)*N{S=!(-l#6s5N08#|bEeI;)Q{e&B%kp~4y+3bYvG zE5xzCPzt^;^J(@<9c~*3V==niUgT3vmt2uc;ipnS8BonU3{*fK;3)z-o33q=|U%22uBjO;jXSKdLOrDw>b=D4fNI&Ogyi;>5T%It9$l>7-lE<+V}IqJEe z`bR=S#)#O&T!SoXepuvYB+U;z0Irk|K;7j5=umn?pb)MvOKuUTHsXN&2W)a%p%Vp9 zZbt-^>%^!M;8XXLoJvz}>Jn7Rx)i9oF7qO>%eV<2Hb>aK=LhNS{J5cr|cA(Xkv%S^5__wMDq#CM8Aa#5H4 z)Q9eeLY2F5DOI*|4XWZ?ST07_LFtWH=UPZ|xem1ZsrvQ?L80tjPE;WRC|wK5Be%x4 zps4ONbt$<;9Dpt+x0!3xop%~^>pj%m4#6n%$^&I#Xk1{k9QKHHi7Hcl+RC&Ox-w6% zz0JVgHzJVx%t}XmBMiB`oYqdYlu4mT*}|d4tUHC)E&?y}x0z@($eA1QX%U=fBT2); zNXl&M_Ij8Zs7$%;mt&QQAA3gpHSW62w!H2vQ-E_ge1Q-=18L-Q4alGdjWB1@ifJ z%Q?W^`x6vvxLdrc>l$}qnI^$n<^-psi-h3Asc-AM_+;0`WmZY=}L=o8E{rOSGAY(hX$T3g zV$~ZFXA^$KIMAEh1`cl;cD<>02=Tfh0#zl{?AgSkx$~@OdIBR@yfq0?$5}_&hOLb8 zI&r%?G~UkMgBQmeV_b4lbsz}$K{hNQPE~;3v{-O>-(KrYfmwSKnKI&)K`41;5Xa41 z=d<>2VBg$S>@nUh87>IId&gp>;GOYed9}PZ-VUXXm%It)-Lynegb}0`4n)hr%)97) ztbKSbUxBK(*N8XCt4AxL9yg;X{)22pop;U>cnRs;ITDmu7Ar6L!q02;0`&GFxV(wg z2``T~(R<--G@>^fjU3)a<9bt7u;xATazN#qB83Bhsvy(*gs^WOF7CXCi~Oc9ZLebi z==1)0OTD|QEw7;0%X{Ov4_fsuyoZ3fNXx+yupMbRFaoBjW)4h1a3oNr?Nvr_dlM&m zv}f=_kpB&`a}^qg-m)oKY<&p9!j_NF2DRB71O>bAjE zwc{XkW+a|kMAn~Uh;k7Lc+L10csIUqkB)DRwGY8T6Mi*&0iCkH0l>CF&zXi*t?C_E zzOp~t-v5J7_4aD53e0G}zz9O;sl!MSvUq#Q3iy5@4U1LJSD|JC0s3YSgud4ZIwzR7 zaAH*BQ?-0uMJQjjUxyd#RnEhB2{Z1TXB|S^t&`?!@CXkj1m6?ch(qTK0qiUKyZ8e6 ze7<=Lv#%Wm?b|zBau!aIYJ93jBWYFgYvz#rwj3s=rq!tLf(GgPiWu|Gb5(J#3Han= z4e&c6BX!(32)`mx1R#Aw!28FfcT`56wZ_MPK#gM=vE#@hSQI`0$QeHx7w@=3_hIb9 z5XyM_lBdF60i6;n#x5ZKN9SEF!oqAZG5^4*A%sUX! zJ3KGau*s2agXa^rmG*g=UBY^Dg-g-j;WNk?%uIr8fWKW$2M;ht6{m6Im~m=5l)fj> zrf&<_<)bQC0eh3cPpn6C5YR#0Fv&fFJIVIC7^WH>jJ1Atp+T+iS^kLa6BNASE( zJ7EJC*duBI<^h*{#K2Nl(?l6q2(08pgc*PzoNi#a?;Cjc5eLTlY#IrBPv8>j^CF6p z9EqaD_53D#j1@&bf>Vo(2x+n($P&Z+W&U&&!A*%EFo$voY*&3-x%M8M zlHY+qE||oN^`UT5IXhR+3spfU7+qqng^KJk4j1_dlHCosvquQl05}=1KBhk~Cz$gF zn$@tQ{y==ep|Pqi%&I?O$C9$jK%#=RJCB_sgZx!?v_-r^ji4zWuG}$}XVryu1|!r` zaNG-NaIc3N+{4pbT!URc6iy|cEn?v#ny?@s1S7tYH75rk&om$e^=MomzG105Bd86s zCb|y(LT;|qH_u>ruz{@CGYy8M=0G7lzTh;hM6U+*7E!arP23%y6`e;aqY-D0C!8ASLUT*O6u<#zNI^kA8hJs2En;l!N2ENOj*i|NCk zuXZQ-lIesL3c{4Nd+=W(Cb$xYil`5CrW@E^rb@&k6GCLQG8V*#0ottau9cN|7*r+L z=O#CH*24jVjVtUY5)0!nw8Hl}OY3FOQeY`q8&)~k3G4*7FsT7?m_0zcH3S#|KN_sS zKp?e%Tj6m~&#z)kF3c>o19#c-!gHOzrv4F@E#B}Fl8 z2^HlRVIG_f4*+TpgNWLLze0N|!UIHX42BTVJ1q(j!U^GrfKfG3sykhXtcxlvXK zMg^M;O92!w7;=q=M|kVq32#Av%;jonb~O2CCkjXF8@km zrQY=vHa+VkZ4b}}A>|vEC&qx-iQB2`67{Z}cnbD;aTDXr7#ajPA)(OokfmhPKXyc_ z3NvD|@cE1(U>UFstPS}ymEss70ALMZVYFKgG(W}NLd%4(?c(FO@I#G?PsOIEDrRT;ia*7j;$^0%cvvhfE*85p zjm7QEWbv<^N+|dkMo9L9Pb@k_Nx&dT7nt1cN(=#>gKTaY6I>G5q!a`LrNgKpJ3%lYP!bY= z66yydgJaE>CS{N=co+a{@C=wk6U64wV2Fj;4ZMrXI0c4GaW09ok%Ji-Jd8OzLc_y~ zz)*m2wG}8SG)4wAfz6@XD3zc&+#Qx4)HR#K_{-xcgmX`$D3px53H1V=gYr;-piE>L zFVsK@FJq=G0zqc%OiC$;j0FfJV^u4nrhbr0m>5?VNV6q3D9mBSGLTES7$a8d2bKY} zfzucrvOHiKzYrlsh6TaE)VN-A+3*xl6W=ws4{0KpfhkKf;5m4g;v-_&USd_YpTTpe z%UxmW1vCK$U6DjEP?g0RTMB3bYvYE1bAac-M|@%MjY&1?hw6ip;9)Q^tR1LpII#`7 zlma!eo8WxlImiGZn*h@Sn0yN6T0D#5uSMbAOY%m)Xj`L$Y2g`BMkYy0m_1DY6B;1hd&h1NxX+(_I1pe3-Ba z6@q$!`IrfzKW-=?5Zni|qqME)1gREUO8WSD{! zS>m=)$|27aZX@-A*Fh2aAAm>(04S2D3612}0oo?XaM{QlW`&c+Lxk!B^SD++MivsV z1?mS~8(Zr&b&b$Qt|K^(X2{E!vmv<9k?fiyJxr2wFcQS^!tFSZQhlJ2RF4zK^WxTx z<`|U5elRvv2!uQE1_6S}EpFU?s2{iwzQSvVFARQ*CXh=;)WuZFHr+(YATcI4+frPh zl934$Yyrv~w?=wQgbE=XRWwM>2lv4&*>g!f9th+U_le{HIf3s%PT*b|KirwH23CRK z3b?=lbs8W!5CAqe1c1>E0e}>68c5O=07MN10AN!A0NP*x5F!Ai3I(&zC&B?BMt1;6 z-XH)T3O+470@@7$FrP&LIBpUEBZLG1`9=W{?oa?E3rAPwdn0?*;Z#v8QFgG6nP`2k9i>1ZMNEriR1-kD>4sTq*~juQs~|wkjE#T5h*`|})Kbde zBgQglAHN-$A$GS+kyt1Ya9+x>B(v5vvbCV1YBG4gp7R8kS@wb)d3U*SXtJbT_&ZHj zX|%xb;EK|AA<{YA-FXN(s~R!lKw#)FTwq17`J1;97kbTnN4$Ij6JQVpiJNAZ8i7ot zc`H4vGLDATwSXV+mLsOuVte#4ttNxInx-b9{U8V2Ym&c5JI3S6xV}x~S)99#80RFa#+h(i z$hg@*eq7_@Tb&d=@_> z6)_X0Xb_~Br9OZHgga1MdmnBfbG7!Bd2pKu%~G&|QB3B3f-1DQih3M5I0>qpG)*gV zEg6zvadp0&tj7q@>EklZS75NOXhkci%UcxQ_bfRR*2qJQMbTAxfWiYhiff7opt71K zbWrg-OdcSBcM_B_PfR#Rb**P$1Z0BdkTM}ZdLCjBOUj@Ttp^{lCwQ-x3C3FZf|SWf z0)kN69sXfOV=DhGCX2ZHL9>@Eb}^FLf`qToD9Q|x0w!`&<+uR6 zh2exy&xsxY@+yS+zwkkD5=^yQDv7REElbGsfsImd15u?^H(XNio4NZ?ZuK|vG-8le zSK1>n(c`(mSYAp~kC) zNyJPQsR_OOB`TAV!GcOz_UWpax(YH5l&aLlry^904-!OZ27(Wthwn+bTZFnhSv@0NGXE-Ff$pFJv;v#Esh^2!!BS8{_KP3Ep`#=m#zpOLaT+1 zq)5HC76^6;9`PAiPBDw1qJX!q5mO1q1_6gsVclVMk|xv7L#O!xpbo$nXe`X67PB2sC#%{; z8Utk^Q#x5Z=oo|s#=Y6VAV2>A>H$!X%xXHp{mgga7(+ZFR}BnChMf#p*X@#gy?3UZ zb4}97bc9ghmCU}tB!2)Y09$nQ0*b?f&Xz>)%n=seD(77kGNCAmLEw2H6QqdgRBXdb zFf+ji7?4sz$B{8##3CCpmY@f`9cro39DkliB(wMXP)Z;yAXTj^A_VuU_p=shNE5tN zS+bq4>%dmBd*Aa!L+U&a0gKd=vr4kdkv{PDNe}>*0k{*~sVhQ~o?F~$>@Q0Q0`%!w z5AnHOAV60m5b}yB*_mzs0wMjgekdTMrPnAKO!`kjeF%4inDGGl(KX=`B4VJpcusf# zWKvq8WdcZ=gFzqel-voQ(oX59bW?gN&6KW6L#3(GS81!XR9Y*ImEKBcrN7c%>9F)v zdMRBh8+m;IjM78tl=PagB@K=6NryXj(&|?!WNXbg>Vc_A)1+H#8Kc9+P8zz3Gyc&3l7W&C!6QjQhq0isEWT}4Nn@ofBn z%{<^4@2#(CH-bm3cVv`iBh(Rx3k1Ro05728fKbdsl4x#(ha{4b-ofNJ0H6bgRn6&` z#Jl7T^&>%DAb?Yj3xv|J*ef{$x>z9Kd7>57RDN#6%vyxa3Pvmh)09+V^fdTObs=1N z_$*NV0mT4DD_b;8v%jcPxGwaiL(4$pheNvp=s|G)hANkm3k!l&AV6KGeBF^~92XJi ziR0ZFPs3TiK@*bM~XNt6=w%z=# zCD=;Iw0@M!0RROpOTZGn8vMTE5z8w%GdDu+A?e^oynGxNybS@Ui<*-F&5h>xMZO%c z!eMNqc*hp2Bk(Eg9+s0n<*Mql*Mm1=2;4qEn}}kMmH^=ey+dGAa4eo5sIDFl561dj zVDMO+qj@kFRWyV5S%)Ato7e&X!cY{7K!C3Z?E?uLGwQiK58a2&m~=#*#b2pL)Y~qX z;7q$klj{)dBMNg$dFo!vOhoZUD^g{bNcu1-^AOjFDbZr8?t$m&lJrr|&S&R9>TQg~ zswLsWT{W1yXt8euYL`5f{qXHfaKR#Vk9b7eIja|xDJ5i9L0B=4gc4^DVmev@blJiR_>XB~pgXEX+>ZfWd2aIwDFyGz|e zhoHWo`l0vWD`_8aDCo06)Y=+ES0nDX7m6@OJ;3KTBt&IuN|h7Qr;*Ej)V^}KZSXD{ zSGN>lP%ms5vk3f# ztHr>1(qL5YJt$^4pSz1OV#!DwD~)v{Ze#HXb?BxVwacQgRJV3qo}6lKM5tOpBD3sh zbv_>_1317$)|x{CmLuHl)HbTD>cRvAUW;<#r#Xgr(~yp{1+-jpoj(e=r{~^)5YwZH>M3 zcc!x-bwnH;Li^TW`?u3no~@yp2n@CL;u`T4b)`}O9aGklYYRX*Vh>HrR9a@9`_K8n z7^d4=oOQUyVF;v^6H)3RVdt8(=~i7?kMdyEW^0cpt@?Gn7Fkv{+3r1)i`K?Sz?r$e zNP9dKa=0G=I;jAnO`6(B@2s9xd9#SLOSoeIq3XNJeH(LX{fVYTfcT_gjNpWJNqW;; z*LA1P({PKrtzYgfP@;&h*@lqtEXuB?HZxtA5ng9^wH5PQxpwA|_;%{ofyZ<6^7-;= z)w~kQ07Ri5YLjSMm91Cy?Z(o38oQ6$Azzs(Z~(V%wkH zd`M0B9vQMDSmT=XiFYc2JM7MNuFdKku&iCvu#F8`zn8V^Q&Eg%qBbwCogOx8Kn2bk z%Cm8yq69;I)+h>~^$TNY9jQKA+r}i-r(LDBrCL+%wC+@+#h%tv>xzV^T0}{ejFTjG zQ7vnq9iL1Jv!baHLTET5)^wx2&$oJF4P;@vbVVGNxa)=P<$8BrvVmPwtie2amN-Xi zL({gcyLY6_WlPh#-c7Qm@ zL`^}mYV9hJ&yu~YJPW@x79HX)W@M}6zw@I!{Ovq6V*U|VOXH`W2FNozi$j5U!|H2x zJ?&qC^WtXPu~}sLiJJze*0ih0`&am*vQ-$&y%jz8Uy+TP-FX0-)q9eR$DSlw{kVu< z=^@rWpWC|$sKR(%jUZ=rzIG%J4K~EK#l~}?9udbPKTzoqaNe!fVJ!uNSf{NO*Rkt% z>W7nm&~sXVwl=VW!j*@DoOS2)x5CFlUF%YwGnFY8Plo^w!Jt(kuC_}Vw5QPMk_8W# znk^X)T2W@~2m7J8k%IH@cz2*BVQc>L1}Av66`ei+DpXw4o)1T32qxL90!#>{V4N^% zjfDmSEphW9MPPWH+A@eeL2?v|b>4$R^C2o%(NLXSgDqw-n{2Bb zQ!vmDjjl}S!zg@ZSbgGg*}Y6M4_eP&%PTgntt#QaT4xR*9^v>lQqR$8~abX7+rlQrv8+Vwb9WgjAauL7TouG{<^ld5Yr4(9zqx z*&c-!QuSlmO0X*~Q`>0TWKFsw>Zl9L5oachi_L*dPFop4I|9IG$|ecMCBNBI%l9nS zJ!(;*ji%|D*w9*5vL}7MoQqvXz*}3;%Z@oTx6Qy0oMRnTgVP0?e;K!l+a)r=_W0WG z8acE%ZpEr#vIf4ab{os&rM>kvA$X3+?Q@+jw3`{J>-)L3P`#2i1 z+wkpDA*_W9spWuN`Xsql&+PRRmRl|< zhZ}&3c4VD+#;TCmsgI>6x8zdzp@Ji*h#C5 z5AFb6+&KWS3lNY8Kv0n|2ypQ`7X}aFD&d6qV31)ceEjO#hK09G(B^hZSa?Ov`D#tc z$E42vjo>B1 zDC(S_-8*M!H?%tj+TomXiDm38{eY%PLuFNA$TLWwjv5>>tFQ@0qLgtPLQ^PC)f=#i z2f*RvRkvHd0rc z%1fuB5zFJ#qHT;uG(^#jI;c88vb{55Nc%9p51u35PMC-cvE86ZNPFNCZv%Ob#Tz5( z^MD}Srr%p20E+YDT9E}vIqSMY?+&U60@UAZ?ek03dBiK!nkkAT2Npx(E%BD;1Up!Q z9SMx2o3J5R#l(=rD~uagfLsWbr^zzL37H4H2=Z;2 zQ3pji@K-P=QUQ3G_=9Zmizp7oBWx5Ti~~xnA`$^%5qv{f6qU6Jnv9~-^Yr)jK@0<` zJ3@#+m1Y7gmmI2XAmRjf8Z97JR)kQY(CCYxJ`~rgQvF`cYuLm6s0ZjH__lL7Q&;B=;ExS9vK+nDh#`i*BPY6 zlmk*DyGLYAo*zg)8IC&Cp>@&vWWK)E67-$2^|lk}+3NwkFF)0CSX#O}7M5<<0Cwq6zy<`d5l{?3k+KUc)SpVI2#5koC@TE-f9AY* z&hE_Ix%bZ7c{6uszEAUGGZI6$YK24j9^P}%Q*}}J-u-MzRc0F=9gx+6%c02|QDXxy z@BQ_E>D*C0j#)kGf3hjQyeo%!N%Ro&xdTYLR`b@?X5w&pGw$SBn>x0>ibw8ad@ucU zPnVh48WTu2UfBP^#cwmnqou14;a zixMrJX^F*rxt`E2HU7Cvt>ImO%cuQ*oY5l0fA$OZ7F{2qssyrQ&LSGV@Tt3 zYl??|wHv_L#|kf~s7I|=9pjf^xJxfu&E1syD;$Y>gv>pto?anhb4*K)l-(S{6U$l) z{e4g9rNS0mgkiz>V(kyH^(u%^#vfa5<)~kS>1+upmsZTSo5oBvz+nxiTFS0thEJas zSU?>wix`JSl84%&93SC=8YZ`{UJ8hOd*+i9dpPnRpagJ4`U!m6?!Z)n$PJPRFc-+& zboO#Ssbd1h8J@jQEsfrP-n}NXV*BhMZt(!;?oW@A^&>`>n5b*7ms9Q!zp|)NpEt_5 zVK^-EZ1Y`PYh;7ke?HU@ohu)P!{nUfKN_08T#Wjv6ee=tHxEcV=@O;M3q~Nd4}`c1 zoOnv@tJRp`%?jQQGWO5Q_LhEH@d=*@-`LMw3#U5ih5v%Wp|8fj+mtl~q}@&bXuY~> zbU4RkD)ccSXR>I{H`%7E{NZM>A<_N2`mmXSWUH(te>|thSC`WcH5(nA+xoI|!TBY; z2Gv^6a|)XlsHHdb`ShYs*?9rc2%U#KAe3+RRT*W`P801A+XBl~3nn^o+$$*HwL=_Xx=!jtt8%S+``kTJSvIZ|nCL!LO~mxK{aw z@|fCGdiD6HoxW*=^NW71rT+qVhPDzf%tqNQH1D~=eGlh97;3mo+^l`P&UclU+Ix7t zspvWK>G*&R&(`A&#H{nfI>ox{3IVAPmJZBszq2S2T?g04X%83;jZ8a@pWj0|Dh=V) z_na3f>-k?ZP90`Fx~#WnQm}3_N%k~*?{T(*Z!Dm{bW-h`6h7$$!FJT$vG`+Y-mc-cr$@Gqg9qtmMBhZk3#ndhl5rbj|c+FEIKZQ=e0MXWu+} zeejbi-$x4(i_u}FX}`yt>JRMi&GU~(=U;zsWvMqtDg5*k$_H91X}+($4eHH$zL0D; z#~Z+*vvr$1=`Vx~4j9H}9=jf;pzh80)o#}2RAaeT7)ryyLr%=}p6FW0y3Jy8|K2$Q z-*AZE?~y1Sp`{%8Cr!~N-vTGDn3(9i`r&5|j0ve#Pk6>Vyn%pHY$ek{zfW2tJ{v5b zJCB!hmHKDJzqe<7gSFQMp8Vm(U2z_00AD`;&?wxv`wK2Et@X?X)D8yP|DHQ{-a-w} zi_bzndcGe2c8%OzT;YiI{N|Nw3~7f>8ss`mIMNB9y>jt)r&3A`>yOq4`H@Vy=pvHt zqT1~Z|9I`Q=q;#dU7>Nz$wNRXWXLJFJW~)cU8zy!<$S27_m~_%z$L|+<75{N6r5Fd zPx9hB6=cgr6uML7AE9QGjlB1CKxcmW<@B$}#3!b3R5!_S7&FE{+;IGPQ`{Fd^nU~2 zZ{$2NJ$?Mo6UUP~`~S>yZ1cj3rCPr{Dg1Kx=Zx|9qWlt5TI=eQ<}Xiv2EpO8!bkM1 zwVc|CPOt{95%2^6;6v`jfm9p=QZ=0_g0hX@g>Z z9P(UiJxiF!STauGl__gMf3ozvrHNUf$(4@++EuT+oTPm{-gF!;^A(r$w7TYVS?#n4 zkY(~9Cs_Z9%@?nOsZXN#9dB(-Wz*C}|9skaNH~A!jhiZ` zp4R8VC7UFIxlxUqKOA98-D*8x8Gz_=&oUbDOAY?5>CX(F+Gp&!VVEyaT$LW6=_$@_JXe0~MC7$If3`^S-$QCcuI0;Km zD%?=XaWp&cy_tzI@-zz5%*(Z*z}2d6HpkfpAFc@3|do z1;PdIvS9P12EvrZ4VcC9NJHYp(~oZo*Lp2la4yROls=IeobR~=xs+v%tArzb6~0cT zgmvG5URHiQG2%msPd zv6J)=Q7#ysXK77>5_RyI&df#MfSa>CT6Jj&`0iQAmf8`>h_LlJ` zWEcMp?+_p}jK6}ME(n!>+d*H07;)`&G>jz7z39{qqDfTlkp%5VbU*)YOnR(g+OD0w(NQbls zxLIX-?H`4CTF%4fA!qk{xx_&4)d}WCeInkOYe|;*HC&ea-qw*b-ugFm{{8W2hmokL zklLA=5`jS4J9+&A!%XbdR_L|pZ#3~AS7Li3snuN*A+PLKXTGlO@%$NdS(l7*xY6_F zrAF=a=NmiK%s0c~(fxM+EmU|zpT}C)+;g(_l&+HNg15`vS2^FfGuQH8dT^6oN4OC$ z{9nG#D5uM97+0nuIDHe+XcHGK^;f~Jtg6cA$RDh2bMrv`x6nU$Y`NcyJD*8q4kz%+ ze^@c~`cxHro1;mQlR?K!)Ie%QM^J{t$SIdY;je}6*utvU8<kejcO#+pq6vgjMX zb@u<6Jy?-2C(;(P_x<)}09tga(0Jpfof;T;K#|2Rg+yeGgK=Brr!gx#ygNT#TuJNU zc>Q*nmk5$Cne|NV*XzQfBSUh=Z6~fI)+BtpV^bS?Zd9gax$(}kBlZ98ZbfIx!rz=+ z&V%pMi9v#sXF7s3@WXvKTAF1NFIogZE99Rjm2UCZ{3%eq7P)uu8)^IH`f~qIUWM@P z4B@`g*IoU4%Lj)>g65t@t?s|^I(p3F@!2)-3``2mp}l;)-N`GX+#_O_YB#osz?^p% z(XG6MUse*?9shC1Y}I(whWNi?g^L2p#7| zAQlfZVFz_Hi!Q91rKQ##`+c+2>KCnVB>rNXE0&0n=$cyp-8VUc%$UX%IBtd_+$YYy zYQ*Kt-qQ}rRX8f45$|t*Y`nJ2Db4uTd}yQmT86`S)eY&`$9u2nuEm69&r6em8p0GL zHY?e7?cP=4veqc=wC8<9bFZ|wfN z($PyH^;|p2Xkp*pwsR4_ZsnORaTa|XO`?giu-VqS^QmSdz!hEN5?d8o? z!bI8!d+Nu7M=3~Uu5WnpMlu%Ry9o{fcqv>zB#sm zlAo|l6}=Z;6wHjpo9?$f=?+IZOC5!g##3_96qYg3exk zVDV_iaOs7eFmyHBifMPq0hZqF#*XsLD5{$1r*_x`Jy#1V>9- z|7)Myk117Y$0qP9GTFhqR?a{;Lu?0k1nTuk2d3bhVV-yf<=?7^J@&ec_2YU`yP29~ zUd{dW-e^zg)9X*IbR6V+NEZyZq7DS>z9D(k3t#oCKZxj(S09&%OLp_Wq;NlS>(Z&b z=E#4H<5INlyW*d4KPo%yf5di%t##SnGyNp_1OL0?h8f6wt2XO@3}+Ic3G zbXFdfwKpU@ZZmlE%{|UDRU`O;+dT!_nIgTwLvb2E70?PN?q5plE8fvWmzi>5#?iQy z!Q$7aH1YrHn%|U~{IpwTnx=@6XHt(`_!-+O{#nSdRKlx7F0u)7c+5!e&TNCVuW@t2 zsarOer_z7ih{#cD>gcKQ^&kB#{_R}hr}pGBFVx0`x@L40)Kas3`svT!-#-f)`y8cV z7rO%wGnFl1w`a7*9GHuaFYYD8)C}DTr5yS7>6WrkkytN=+U&j&mmqMn%EJC>NBGpx zqVO~TpGTWXeFuW#%XG)O*1YN{_AcFfHkX&DB=d?ky5_yp{ls<)8q}Tz%hhieSt>owww6f9ut?#M*nCsqfdeg(B?#oZ^ z1}LKnx;GZ8(-jqTSXp({7_$tQ1PY;J{jrpFoX*PTotK&ML8qQ3nbJF%2)_~ z>FfLjdnEpL$#TSeM7Vv30T$PsiEBfd|1<(91}y>lC#CP&k_lQ2tD}GVT0WJ)wWjO7 z8EM}9q-tRM3Hl;AJMD0_fXz+0+n$!stzSqQ3v7M@9f}jiyy^#!UOjn&taqSbJF6=! ztBR^SF(?u%f3(1CB&j287V+!FM<9g%Bh1VE?C{Q^69Wj(#}8~QFYUYeaSE4C19_=3 z!$Kr@pgDxs_@^N5c-t@Xyd_P{Kd~`87ptQe!ok;+eRVP%Q>%cDhY3!f0}od#9J@q^PX6(`rMM?{2H%Sd_Y#m*u$u1Y59+L%B2a; z>yC+1<90n)zI$HMy$5IjH=Oj=^|tz(spy&cl+k~pj$0opUgbUg`wTa{`lmh^JDEw-U=s9+>2P4!WfL5fE3DJqPcB-7Pk& zY*rhH2d%!xR(SQQjOJ*EL>~;Eu0X47e-#T_A}>%S+!lnbz8m&oy9yw&K)RZh=lhxc z!P_l&u7@mtD7kRxtN6$IFvQhA?}6{FO6P}g=C8lcAzTNK*A6zPy{5c-HlR1j^Z1$|t2dWLWHpEV zr~Bi3^gkE2!nVmuPlstUL#sX7FQXUJHP`bm92JxnZ+gYMRT%#DEpS$E;KYn!ygJYB zAFs#$Ik@q`X=&7#RK5SA+tWW^KhfmUj+9$dMupn_8-vj+J{>Ao#$J_m*(*m6lkT5v zvaldM`eSlA57yW&EQr)# z(RF2Il~g`1sSS)_m9EMh{QX}=JOMyYk5ixwvxiQLO4Yr>z%zSy)-nE~aX{*w9`M(d zkHI$Ua4$*=DVd3{YC-;$f4J-wY5eiF4Gbn8-v&UTo;vjcv}5rEE1a0bW) z&;KJRTpJScsg0%ply2?oSg_t#aQy_}8KDH^Dxj<+I-tFj70k%{yvkMB z3X_LX9|H-Pf4Z&?%ySt>I40lSEu2noFIi3*IG&4p!aYJw!81G_DjOc3$6QozZXMgc@(_lrSXO0QzJz%zQpl}$;r&}sr6 z9&ke4MqHJL-ye7JK0@r+3i<7>wA4e*dlg@$K41HrWl<4y@YdrHv3EaCe~Np|RM(;l zsTfHvgk!6It1V|t0E~NAANBYW(_4T470tMJ?2&`{x?W9A!Klpssrz>h6ntO5&=q5= z!@p{|UuqL&y7XRYn6VNXmMw3TUxIpfeCEmN&xJ>?ZTu*5dcPfd>EXlG{GA`JFaG>h zFz$TUz4O$vL`x06122Xde{_37{fiYlPT8hn{u#VZtA6bVRn9XzTW+IN-jnD(W1YGy zFPgH^H5<~n=JQXP_3?o3m%G>Rt6cuO{U`8d5&o&9OcU<9-_YM6=iflvUQgN5%xLNF ze}CmQh>-RfqP@(gjh}eaf0_T)1dV-u-Qe7B?-HcrI(qwEX-d;$%hUxg>=)gyckcXC z7Kfq_M_Qz@H{f*M)R`i8nPzpw*AArEi{ze|1l` zN$x_!%jr6qPgVx{%>?rMW!t)VgJ+zTp`W?5t3?ln{o9IwS3O^@ZCu&-{Wp9!u&oXE zR#U2XlO$wR{Ct@CuDxw3e_@6qu%oEV9{!AREM8nJ&|Tfuje8J~+}lwpTqk z8UfPdJ;Q_#r_atA4j!+pYbg2Me%-^O;q&yJ)kHCgUO{X3RhjKKS4U{|?|y}=J{W-7 zotj`_1=IPO51@*A{2#%#Kh<_DnvFs5&`dicsjR_vk@tCW3xJ|nwH-Zn{}05OiEe_B zhtNANT}tFslovzl!mpRdHGD$uzbk9GR@;EGXp3A-Iv}%Lf(hJFnu)k})#b?rzQCQH zR%-Iau!y#lfu_WQU~|qdyD4w{c!reWN+&X3KNEU)?vbZ0B6iK}S5nWPhws-bd*b@X zB2tel<}d@R{(Y10y&7<=FbQw+T+r0zO|3p~9jo@^#t~YH&Y^}|MYF|*;W!P!YfdE- z2lt1oav~)uX1_a)qXLvIv!JnDVhM-NCg+uNtcd>GtO+s?Z{PN?q1Lr00)=sf3r`y7 z8^BK2SM6Q~mf7dx4;o#zlA(HOWS0D}KHfH3_+{qxm*1SS!V)FdHoEir7vZ(Nhl4my zNkMjpVW;L zAJ%^R7C+234tJ`(o+>Ik*AlMYqj%FjQZw>mkb@C-yOoUbOs7>_TTju}UN{8O8%f)A*0(KFFdn-#xAYyUw-#44l2-7n)3R;gY^F^3#?t$uhudZk4oAAQ z=FCY`Tg?<>hMiQjtCi1%i4SF^Zzf;3ccQY%Rabf8@A)5{&3*JCVNnn7b8Uw=D$exu zNQO{H=noGSr9FDMcj^K}3=e1-e4OEJP5$X4-jnl=Bx$GZG!b`PICAyVg@2J>z7Yn- zK8X?T)-}H{^FIpRK2(pss<%+2QES~cK=_c{dygZi?nhK?_~SUTcKh_cPFj5SGCmDf zeokD7wc_LYUto`0^Tdpuyy%NcY94O))VI#nv>3@-cE`-FD!-=dvSepHE?xN=wU<~t zDp>)$@;C?SzH^SDHb@WRdt+sod>na;ep+isV2o~&4C1=r^+{!f$6=RE!z3TlFPY9z zr|Ie7vS&eTklsw?*!2d8Q3NI1$sX{LsC2W8hxA!Fdn+~ zs>2vbR33&7BZZ0#w3bFOER*lheJp$|tO_rgp3zo{bxfv21VU4#mOYJ~i;T`Y97#Gx zYfrkZnB?7>RGai1IVO>y{T9ZePFknLFXkIs1enXIbqOufwHe>cQ-~|{6f1K_Lh}2h zEyFR%4Z1mlD!fg%W+VvPGXB!dg>F;hsL9DgbXSHafx=i$F->MF!HLTzx9KRgyYv$e=0-P%bwS)BN^Q;lS^g;#@?=sJvih90AkVaP}< z7-RgTPcZJ{N*N0&c%U)`1MkCa(l;=jlDh$K1GbPoP6tvTGDB&-DTh*|geP!IStMpI z{T;Cnhe;4r@58CPZ;@6>)5PQXQ5n*a>HOQ`E7a4J!xDe-3ItTFyb&LzlK#zu%{W6Z zq)Rx-i{Hi7=I*$smrUT$%%4R9qT^IE)o8Q$NYMa(W@8G)>0*k%ng~-6E5?-JmtaaV zzhs3JkeOGCII3eNBdX(Jd1^DnnTRHrZSfKCfwohEsi_J9r$G-rTzp5xN@yXXxPa}7 zp~8*FapnvQ=9cA?lH;m2%oD}-l8lmctBzD`T6|=bqbrkyqcEFOB#J$m$MlMY#Z&^A zl}yFr9qqsPT~fL49!f3bwxXMUf&`$mUy~pyVERB?jZv+vK)8ZEXi`h$$#|G+$S3Q* zLl=ljW2#4+GjB7pm^wK}RdbnGW(ghb8cTy4_XSw#n(_-W^?A-qA2ENdJxi>`a+nPn z{!CZb)0qwuHjX>mO!PSOR@Swwn`(mvpJ7rG6QmVq2MIefJ&bMgAI$rGOl2t-V;L~r zn5j~1%Dl#;N}Oe$W%|**9KJ`~Pgxf~?Vgi&+M2?DOSf5~1dJnpNR8(|np+&l-FeLS z9_bB!NR*n+gjtfkhwO=W#c$6;x*+uHpBTdDOH z^UTeZA*vy>(Gvq{&V7aG=YND|n$_fMh+?px{6YQ@$XQDGSGXl}cby9IaUY zFb8w(SlikqD(BExzDlk{KmPZ~B(C*Z0tu)Qq6=4|C)f5=@S6;T)d&jWgINfz4~Sn- zUDijfagC2!6x`dyL}wEgAL{`XaFunpWC1`j%Z9bg6k*X=&Df*4vRtWK$O!&?z%cl& zba&iGiz*)z?7#2^q%p9M#oLwMaB7H$_q~i+>KN3vdTB0cov0 z+A!}PEivFbr2tWH{ukeXT(>S%-AofnSK)I+8)1?1ck)-^rEaz~q6di(PF5l3(4e5O zMLw+-)tAeG71Jaz2(ljQld?C+qG`nGi7Jw=q9~+B@S#R0<|4X^R%=j3(=FAb-OBx_ zvaKWmd1JMo=IgTTS*@mTo<@rhu}vlu#GN9@;-w-WsZ6aFe>9mtz9Sxb4l4l2+mEuY%qK&>s&8YL;F_rI7SQJ5ik&Ju^K~93Q(> z4s$Ad07a*5A)`uF7&hRcI2({dwkUmI{$4^VDOc;mKKoL!(gJiw=@U(t(ie!n+;ixN zJUxV5={SvBx0GKQFOZ1B3xo-?XnBPmJQXw#tMe@VQk*26rtPt<^gBH=GtKli=n5X< zPt|WOHHDjbZ1JR|+;VP2-s7XBJx8af6@fwt8Lp$~4RVx}2=R>eRUs_ouE30(MuH?*otxt2(%za1l)~xPf;`=`5+0LGkm+f3 zm{5X}#%)kZ`8Jp)aE4~-7E{PhS;nn^sv-1Tk&q>mEJ7eAD`7{Am?xTc0?6mKe={Y< z>zHe*1;!{wO5gFRszBL1@dv3OAtP5`BP(~>wJLW#q9`6nXw};b`o()iyO{b8>?SF3 z;gsA^QP~RE6z@*uh>X+9sI)Q(T_nY$j1`5Ua^+5i*W{vI1=5Hpn^F?Np0;D2R=OY^ ziM^9%f@_wzpVk$+;!iP87IKmaMTsIc;%G2Em>tGbVnA9M<&a$+ErPL`q#g&!iA_5d^h$7AXm7FML{uZP>A(|cdBF!6om4?hv zPf5h+A_H)dWhW@nWySRShRgKc%!8%x&|Mi0G@G*X(spHs%2K&jBgvm-y1|07qa-^_ zwZw@sJ@QlfTS>pN!K}(4A)1ek17BNkw99d#O-2LXw#t8L1Iket9B;L6Y}s;3e3?aA zV%eS4Ga1cgx5^HdxzWbTexRx)O2oRsnE11$c9@v>CuR4`TFI`~qkJAbLbNdGi!?n% zTd-cJet}P(e!<(cXzzMemuv&C*|Grg1}REA*2&DZGTqk3gThcB#L*S6t97fVVWdl? z)NGUQWW|VnC5>lQ`!A}@@a>oVk}-)qoPG-O((x@{j?h^f{z$&^Z@#C!TSE0U#+l{8 zmhR~C?*Vr1s^zasuxYjF0_BKE!SZOrqxkE(Y+b6rQGqdUsq(X!D;k%Hhtp4j3gt1P zIYO~Iodi*t%5)CwbxBu95#3(0+y6ESReo4wCRB>gpj=PisGL~7>DrKPjH8*B#fym| z`OyVFjOYRdO9Wa{Elcz>ZCUx~ zpz=a=NI4E0RzBq(QEpZ)4N7{yOa6#HjvQ6`uA+qco=8U8N9tuAP7i~+l-cb^hZni;LUrE&}zs1)h-+VpO~KJ10EO#8^dPs&N6T;8Wk;T{2Y@=jQjDVj0h-0nT8Bz! zKvNAL0B`vN@?Vw*=Fg?IKtcop97_G0uy4y9pxR|75q>RVZSejvFFPF zE1xgtVGB7pyQ`rw3~>qND0#j)bU;WQnXV|NvR+Py39_RzAE9pti?Z(o@1mdqJ^FXD z{s~`KvjYoIj8qBkne^xcXOt2TTns{7VJ}y9B(gSM7A@^gl)o}0`=Ir4kcm*i3ZxvC^d!#+rHqPZ;^K~ zsKWMR*Kk{T?j*}D21CK?YN6~9Hko}3lwgao&CPxSNfbeLkKp$#0y~*4rlJ&uWz*Og z_Tii!+XTliajPUVN7Zasm_RuLdqCJlO*rd@jsiYgbgTHX4G#MuLtgx|!?Dsy^W9Wt zQoMkH*ghpS{C`4^-5Q9SSa-h*$!|gmeHrXI%G1zQz`kc= zAi>cOaVgP*!|^B-N~VPxY)=Xoto!>>z?6Aj97&97>esC~__nl{g9< zWsVw0m7~GoMx{Ag9CeNkN0TGZ(c>6$3^>LdIgTkun`6R}KKvJS4b}t83|zEr;kJ5;BOrGcJ`c?dJRh?HKg$ud>o)G= z7}!^{c0h+pN__EPZUmUx2bf&JyYDiz6}hw_Wh zz~B`p#p?L8A!p%5ph%2i>K)#noN68r-U>BWz}YRT%tO~W!pM23wb(z-Y2gbo)$m2m zEkE&!TDfe#{7`G-C3vJ~l)rwsKtnfV482VWg z0MOiWH{_-HK6CDry9Me&7C0xx&RBoq^h9_1*~Q1lS29nP;1BbP6-YOhhS!iFsPZ`MKNWFP@rD)SFtI1RXH3ir^4R$ z5IieVu%g0t1rDh&OkL$A*fOF^ziUSpg3R|qz?UP}tFloCu zq`G|qZz^m*bFsgo>o(zej6ToZ{&6zLMi&!*LudSdg0>OOcm|75F#y z0r68@e`G_r{TlmDjKLXzvpE06Y@h@1v+yb7Z8+W?1-~M8x58FV+wK`B0mgkFK?R{c z@-EOc`0t8xp6{?{94f>Hstno3^=GrF>}FINY1>jNo#oHM&WNq@ z>J-I^ypr3I8-iVh@hjlv^M%^sUkaV&b1Ed^o6$JfA$wl=KFB3o*_dM$zw8#|2ce;c zu%ZY<1Qd@x4LJwG0c8a^U}nz)yb|I88XPJl0vbq!qX930$Bw3OYcUKEj94U?BX<0-fDDxn7?od6b>uOL z%~a5cC35rl0Ra(ypj5$tBnV(&f@%5^#VEJ|F}m1MXZpr7d15uD;U1WpNq61}+0UMalqufHFcB*fP$6+_RSjU?@2t zTtNclmH1Vc@r%3ce2!z&F!P}%^i$kGr6l|X27 zb9Dg8s(I*Tgf8H25}=^R1#!^>su6lX20-WDaaDSNin2bip00 zJLnhdnBJnM6f(Cqi?4;Zlkh68G^O(k{xl z$#MckB5=VCR=ems4rN$SfDWtUr(}LqJF2(`+^q6Mx=Hs&)?)tXjaDu4twmfWJw}~L zxnHG?&Gvm%b=LVwl{a577rOX{!SgC*<`b9csv`8;Dqim@N-b2n$&6^s_*;W=}5~<0As8h_#L>0oV>;nQ8nslpFjLscqnD@!fG#LSPyL%OL&J8oL-?Tz-NH&Z&C9^&bW&R+i%Cu80kh zDrHQ%I^*YwVa^MoxxBHWvBh{GQ{NVD%;aOz>6`9%$SxKty8nRCR4dv2R{JT-s*9Qm zSUz$nVH%;~@Q<1+w1=Ka3c))$G9-LZDjLNG*U0xU&D?Xz)BH&ZnUw!Z0umm8A3ZJ+ zDU@sE2r!yuXDP3=N<1aKoi&hoNeh;=&3nSY5@;sm5!!{j9S)>zkUv{G+0gg7f>jO< zB~b7wa2I#PVH%fFD#!d!LKy$vG(?rnr-0>-HzbXydpg0yH|k~C`bw3_CZUOf>1YyG zLD<9v4;b^I`5QrvrL}cB-j@;p`ap?cj89z1%dwo8JR$2XvjRfL)*! zaB}W;>UKicI5~qg5TFmjQ^QlUUVhh_$0nQ|%>Gxcl6wzl;JOVPBT3hY`yzs6YGPdv z1j*Mdo5hV9mFMEcdVB8tEO`cjs1 zaja;D`o-gKc5JWybJo3T!( zlV~3}M6}C$ z)1R891~(K%toiw-kQK6Xj@^Xijj)mxX-4JbN_i*FprnaG#v7#25 zy|k|2SJi$@eu?J@iIO6hQOWz@p-3F|YRzcs+X{R_x6?kv8TELIODfuq~(zSN$YckPdv%PIGfE^jCwr7sS`_^LhBfmx?->a_)FQ7GUM)aZFO4)lAj& zX&TYP3T`oXF@H$>64{hlx5^qtY*(fbGCIRU)WKDNCPbS=D%LK5%88T6EM%7XWpExt z!CI-MNe4OM$-AgvCrkVsJ`(MSUWR@2_e46w$GOiMIY6JsBPmc@IP+^-fmsJ%u=X!( zdv&H{9Cv<^N`G06F^cfmD&m3rWK_iYLA*^wA$#0a+@8NEgv{O$7vi^*H5F1#wgTTd z3^~-~r-(Kaj#xDlKy))<8r%c+{C~K6fr0_b{E?1^lt08wE(m5@xvh;!+%o z3KTg;d#w4KoSuA)rU<|2)+y9k+e>_kJXsrzKU14%(@Q*Gn_BAz>W6S+B!V8GD!&(K z5;g94h!~#s*`=j=hv;LrhA$>)fl)Mdz9jwK^b(zYl#wEflGb81G#(g$lT#n4D$x6# ztCFje?P*V4UjjW&IE~wmQnio8D+-)JfpSCT0&awCSR@T=gmBm{j{ji&xnJw?(G z3pbkA_-r{uA5>(b=c&8ZEX@|Zv!DaTFtME58~TI?ibwqEBq1kBU=&Z42(IO%PU9>r zBr-%YMpFbSM(ObqxLO|bGS?D1sv4yK$He40JMNb_lA*1%ix38%qMfDr$QVc+|MAE+ z=rOn%tX=#IY7zokX7JK7UimlgQ)B#}E|k z`y5M2EyzOrK;|+mj;-aMU1vwI6cR7_FU__#nx>}lG`vg7QImI(|XZ$7kEyE58mJ*oCM{Ac!hsn{%`-I=F;TFlso!-kHb;%Rdu$n_v zzrvqd0;!c%wA>Z={Vrml(=8&<6%ziV9A|`5&INxzS zio({vO3v5Ktc}!vXCP$qn=t|^@cqtlbT3!l;Ug;T)>SJH3eDp_s*QkB^$)$I>*ed^ z>J{r{>y_(e>Q(C%>Q(C1>(%O&>b2@M>b2`N>-FpP>J964>y7Jm>PNU5d)au|h}V~^ zS0v4&h3f_CU!alo8|oai4CMfdul@iEUmqDtsCVR+J!HmHZ%J&)33P5Ea_$Qua+xo)K~o#+~+porGc4Msi;p?^GD{Wb%Dj{2Z*~Q zjZ{@-#iV2YFL=gfB6*i`ZU6r-Y2AilJDbWQUZDx3BW7iJM3ZRFCAGXDodX(&JTxOn zkg!|v&pb%h*M;7@^;0Sx7I0@Hei|lA?x)BkmU|_KL|Fj9E#M{(SK#w74@>{dwpm~PgFVPLEwC|yf1Dew?; zPq`=%g%?STx9PAsR+m>BqTlW5=5z{~ubD1z!3*IdqJ~P~VBdh>f{x2oq0i|h2)rar zsZ1ry7@I{w=pLdm^=#z<{vxAdVRh^cgBMJFw=AJnXZN_rphG;0%ESk`SR}2Aqc}Tq zv7#;RflxYdf=g{HEv-=8?-pF}t4NtUvKpiTu1~AKXy?&C!5E}LmOEpz+NMDu!@l8p zLV~bQ#vS}8n4IEW+?>*9u%EvVx1cmn1mSxw#ab)iasC-FMd>;CCch+EO!c*s9(EwV zR`Octi5#A=io&-6tu`}BUKD4>AEIEAKlMH-yQYASs{2|LBiNG^L^q=!FFaE9$z`x+ z+Eour6u6GdPM>lftC_W4^mtDGLuqjTJ0pk(VFh&oiga64^}~1P<4I>5vLmpeDWPOFr#=+WFgYe+@JfN<2V5_ z4Q>zI7Sy90ceHrP&r3=jx)KK^3>qThPcsXd3fL{si1A=whj(?EXVz2fm`Wg@Bi>&r z6P>Rvi3>xfX<;Zjm|T(u_sT(v5(wm8=g*`zc2R~vIB)8FgNy5@h7yuAvpq$IS)=@= z;Y)*)gp-62zdz_EwAK)8vEFbX$RCVwvy=D`-ykud*pneCd`6p+(e1yG;?m$5c&WxFmlUIgeXHU}t+M%r`2X58xwr|Pg5;7~P#TSnnN2RExEVpmo4 z{<`L&kbFY7?s4TeR)4VG8i(~`J-?@jmTr>G3^W^33tbJ;t(J;Bg>bdDC7mVmMrsXt zxrqgI(mK7>MqBft%YyjVksDORtakVO>I0e3xRY5dTORw2> zdF)I~h~%}C^vUXHmI;97(f_09x&zWkzCS8R2Sx0tQDeb|y>}BE_Sj-eG{#=B7er!- z3MeenL;<^~Xf(ZFa_PO?eRE0fQZ?<;+a)pOx4%DzUD#!3cFLPK^FE*V{Jo6L3w=Gs zeI1;m1aaR?L$!BB;B~~$=6^F!Bv*U)`pbE538Oq2Z<05`>-Dz*dnOfkAED&wWnE+^ zasHr_LHnB)B;QLCov8Oam(hNPi{mlq6G<1i*~m-W{aEMVFozZ$M#4>QLi~H<|8Wgy zx4HI+yIeb7f#XetCjJ4pq5Cnnn6%2R_NMARFumbsCcft;hkoRqG$~Dm z6cHdbd7wzt|bbx8+wQN0r2v|B809%?3 z0bRfdXxwQATx6O9w{ia&JJ&p?fS3=s4Pce!4E+fq170yufXi!UuU54diu*cgpSBp| z5_wkM=Q&EX&b}YK38QTGCR${zVU;?7p#{%Os%i_t<@Db z%_diE0_wqc^JVg_NeO5Ht_kt`lUhjdCNFr$St(i z3I;aOeq%vu{GdyW0HB@P%k!wV2f~1M?nVFx@OVVtcqkIs@2O3qn$Nh@Qo>3-Ge3EW zd`a4CL13ULXz9R5)3dEo%@1CK=-N~>+`+One^NRbLC1O%I?xVoQ`I5vz7F_`O_5vu z6Et=Wd~*q7eJcN0mqwS-lQ_G0$-s(6SldCU7UYQeSlg;b4})ov!dpeedbYLqP+&fr zdA~FgG-UM#TI%J^d5_7z1K*=iI@@_5&z4rqQ*`U;;57z0ZZ+4y=d?Co2WrjIfc>p? z>pe2aRqGf*fXYZRu(3ax?#i8N+s`Y}4+fIyalrP>e0D2{9*VAwDmmPFy6igVSv;ft zLAD^+HgmNhf>{srW)AE)+y1y*!*mZYF(9J5(zEGd++q5PhM4ZbycbTPW2leHBcZW0 z1iv8GykBPrnqObtjx|T#E*TG1K-y4hP?zd+dGx%#(yLb5q}ilZgoCY>cWz|?oZ5J_ z^-Xjgu%rEG|7yd(+TbdzYM;I1whL_m?Puc$X$qJ+J()f`phhi>BbF^ycvhFOi}W#^ zU|n7(PKS<%Ryp^T9)nLOr9h_5j<37Q zC6zlArG$S&fwA&;2Q>*XPHbB$-Uo!K2uJWavI-Oqsn|u@h`-r@%&6r;QgB%vQ*WaMnSevn~0`W8X zJteZXB6}lqL+zD#h6$U|1ux=vhC_g3c3sqk;_B=O2Cu2JyMySFJ%;VVurUv+;FNRK zuWU(X3EF4N9JZOV9+fXgNfQ*^hT1^{yvY)Uotl!Un|zA$*C)7!P0Pg9k8j-cH0d(?_-i_Tl!+grB~l1B+Wk^^042P+xN}H7Do^ zPu|8{5bM4`8XglP0(2Dj4Y!d zBec%PQMtPliwy&`80@sdapc32tLUSqS6#BSOdRv^FnkKb%KI5>g#UNJ6U0}P?mw5$nnL2Y_MZL=CHKMPb&dlOf zW-o@)Xf~ica>5wowV~!qEwxfmhT18pCbMq7#lWq&{jG)^qu6826u?kmEcl0ITeMD) z2F?TBebTUpzJ6JSbU5FRE-2mKSslEA@6PXN56n`a37k4 zab38s^i4E(dWQ1~6UI;F*a-r;-hxVC8+%`H7}v@>r1mCV1>n_o0lqzxnHuc|RYTzT ze}W?N)SwM{Cj8E>Hvj{a7W;VbsmaiI!4?4qx(C=SU@=M=m*@!s7&ME0i5^R<1dhg> zV+U;YYqw>bVU5+l$gUUE(2kay#v64m;qwGNf=Fne;3o(kY|!iw%!B1jDD-6BXdABx z=O^)B@L~MZ?Hl>_g3#*6*^gO1+;AgLE~0-$T1JdD$yIQrX^25*BY;1RW4-~5PH#t8K@BL|Rba)4A+ zRuVj5lMR6RM%;o!xkce`cf7%5X>Zp4qZ%KZ;rKT`xqr%b10^0Y83*J00AG0@2a)~$ zf)$Njz!9slZT|_*vkL`tg8VJnK`+yxoUQgIIf{pSU1$c*Se;SS+sW+YyPDNNKRi_npIUx>r#c*kLMVfa}mzg*O2 zU%Yxbu`5RZKIfO~UK=V(ViZL@j^Dy-WMyi}vNN?B5YL>Jou4^{qncoTA7;uCl>9lva(ULjRzSv9?4TMLzYCSNhD+IZN^sMHswbceU(s%NFvkvnA z9qedd=I`KYkwZ%SkWuZUv7s#nd4-izE-lG>!YZ1}DsQv}w&m9DspSiw7Hp|q)o2p# z(rV_iLbnoogyYpGz5U|#sL_LNO3eH|l! zp)y)voh~!=V7f-NzbzrSzGuut?{fLqq{UKYvdrJq^+%hjDR+l#0ICax#6S|*7ln!J zOTsI{%ff5ItHK+?l&1dBlDaOcdt!C-TybG!EA(T^&YG5}^#dgwS4)vsZ>o9HittX_ zGU4f_XTq7L!;P@iQs_VAQs}3YWx^x)nrkYG02gBO7We_K+&7NXA-gVv& zg!(3D^UVS!dXj>~PUVN`B<&vLMJBHCS&Ga!-1ig9hdI0pGS?CO&y^{8J}CyoJMC$4TTF z#3Y!LUWzVIhc|JvbjXWOFl;4QAvxGO{BMR22*rjQ;zaJN;H;mC=rO?|>TSOm)KV08*e!q6$K?$&Lo?QqRujog!{F||y0+)7B%yE+u6aexy@n**F8C6VV7Ah5 zBlh_%l=T>E|=eEc6d-Z&qr?@mV8C#EUQU6)uu3;0y zO4x|FjxI41yCgU~CuKYO4<5CPb$qhrjaD>a!tp#t3bdt2q5bL45l_ROhOGysOLt$D z0nT9uxOxcS(wpu11HPjos9;m=2fhoI(MV^0WF7EbD1H~rXza247lDbtuM?p6)j!oH z&E)N%iQuhCX7eiC54%ZpyV}~_Z-*6b*STIZ?G?0kC)X8g(xD#7yAlMuHw?X88_Gl zLjK@lc^hMYYg@7lHlKd1zc4o+%3yTnts+zj&s#Cr_pQbr>qtlK?lnZ??dWcW@!T-x zXPBKpDPATlwuy3^f z!&a3`bXjCZ@^>u;cX4#vl3 zfAKHvZa0)eRh>w=Nvw|c z3h@fMnEk%ByDwBd(%P#mfG>*6$#`i>hT}wJQ)Q~jGN!{U4C*Hr!m3P5 zHe*znR`FXN&n}4Yt`KGsWwyDtInP{T5~)GWE-T4+Seg)iam!-miB>1cJChtUr;1H@ zeLO?#N64ew_*K#3B!MNL3Xby5#Rxhy@{A>k{C%BS{Jzq45^PmWZCAInZv*oWgf+Gz zk8568m=$3yRKM+#>5{A$ zlr0MF>+Zn3fSlS6IxzE*vrfiqoBnOH5c3=2FwQ;YEdi#pS;Qu1h%!VYNDH(@<5tl| zLSFnWM83!rDH#lNxZ?QHF&nuGY4&i0n6R^bpko%3kF5Rk0={apUA>Z7hsEiYg)4@G<)G| zU7C|XM(oq-Nce`@UG_pBN~tC|P-78l%ozT9oJ=zf0&hFf{vLQSXt{ohWk$E*Zl#7>o<&EC)Z@Dgk209iaqXOTyip5=N-w603rzq;(Pa5{$sZBwlwv18s!pyg zeq-pxn0=D($uy#GzNfd(5SvuA{-vdYqR28#Z)t2`J?W0GeH9aGzZ!lp@Tj2Oq|47W z@m@H$^rPTF=gHQCt?2llCcnxpg*k#XfZnw`VF^Fc?FS-=#&kY-VR8=P1>MxPhxOi) z5<&&nxFUGy8*p^!Qu%K~;apkK^WwhnN$M7ds}O$7RQ0vQHY~m((WTPv5oW^i zBC8=5V){olAL}(V)_p53%U=ru@Au{|3YYL$a#r9-5j|B`a>y>%QonXdTX*QQmaL17 z@s+@K{$iX>ci^)GFg|EKZNu@m(+!1Y!awP5!jOnAfdclErx3(&3pMp5tE}nLthDEG z#10$CcgK6IB}#hq6V}-wv`%!yCu*~8GjAW@Bb2~hBA=pqQ~NNzsZyKX)P3MF%B(jP zY1f;26~7{UU7}uo1RbMqOb9Sv5td?Cgzu3nLI`3-7^Nu~TEWO!k;t1x9ibd)#?YgF z(a@41FR2X1*6?8T(6jkH>C%`v%S*Y(j#Tt=_BO3dW%vxbzV9rmE@#b zdm0@QCvN@)nUvzyj)SZ4&CTw4OwISL=i5i5b3-evbm;!pKVmxj)LAjoeEuo`mq-O2 z?Oz(A18*Xh4Z7AN>rWUx)VhyAyVMGi!?85f@F&4lX$|`{ryws^Glnt2MoCVW_2e~2 z>`x})zS3`k_B9hM7*50S7X&&m<-Z@Bg7(dRfv(qkfp!S55j!D^^?~|gJW!vGa30P^ zn%LQUzYgEae%iXvh>k6H%t3zaS|p4{UPBvdQzJpxv;e|d(O9Y_LjVp;MIJcB zHwr~>HzAACl=$caZ*h^&IYGdFdA!6y^k^<85Vhh8^V5XnlEY4$8*#+RkxW5HCcMT z|4Edh;+kgkGX%k*KlTDr4-waK0$c4$MtxCN7}x9X#ctL)B{-1nj7YIXlbUTuwW-)o z1F!A1O`VCA{mI1ex*W@Ul+siWgqYG8a-;aWh8aY^rrz!{tK4Sf1lM%rX7x+(zH<#990AmSm<3wB z>s87oHnVdbrVr(q@BwwF)HXF_WPP0P$V=^cS~wzbBvgDHvjGu0@^3lQ)kAkH9s)_# zcwc?I%G@#;F$g-0INp|!K^*imV-fbjzPg^WjV!wD6wGQxKy5Qea-u9PiJ;49LWT{b zSlUdWBC1DfN8%0ZMpT4`k(!bEk(QCh5inxy2z{g-{C*60WW7M^80j9FacmlSi(!ng zM*2oLBeaqJk=~Jk5nzNjQazGIkR$)7;kTbv-@}bnp z48s40Jc&Go)WW>$vo<`0-HCZXC?j@i|AG7;a!=xIkZiK9DT9521*-&%Z z4ks9i`0VaLPEFObT&~Ti{V_tL{Tz8A3WB_p*0mW6vHV|x-F?GN_7dk>q)ab%p8a+3 zJpEbg9^j?4I=iLO-Qy%%SN56ToJWK_HG)C<``Wwq0D;^biRJo9!GFL<%=1=A@iyQR z{dC#u@(C7(*O})i3jzKRr|>RF&r8qeU6gvtD!Gx+!(Pl7j0`0UkOj%Se5_$FW4vTx zG7p)b>`xY27AT97btg_)(4FIu;fMs;M#Sl&7Ig%a>!^lKlSSy+Z`>@qflilY$Z}*^ zGL4b-7|>mT&Ie?^45t&!DU_Xu?u3AWmSqk`}GX2o*zy`F=Q?y+YAr0&JA9&)i>KIqsw|_@zJD_ zL#(LcPT2;dJpB5RcE4e`7K9OaSi0P}ZlDrxkC{@VLvppw;ilANvH_3pTJYk7k+ZS^ zy)f-j+10)@@>Rr?tT1l9)-2*XDBFwH`}8MN?(LhRO9v+-(bYroYR@ecCP9{gSQ z5663Gik=``89FWdU3N}Z3A+HMOW-wXUa77z;Vp!wcS9D1S~UC)C%TELjX7TukeEBN zsFEjz(_{nPjrJuNj`=;fz4<1vj?B#e#r&%J4mUI3fPN`!mEYnY&AN`-ZczZAB-eRb zVK-aWcQfO|BHki9lh0LFal#_bU_<3WkW83nV>bGu$eK1lIvGZlQ{@xgYZ_YxD#0zh zOUx{zXKOE}TvUS6>%3HP9AQM-oCTvS`}-l42qoqM&L*oUMu4l&+2D{_bg(8Bu@8g8 zeTPuBHVKR4zq5an?~A?E{~1XtR!5%~-V~mfUl(4KUyxsxUy@%F{%Ld1am{9XJPYZM z?MHU#0LU`Su{<%dM0*(Z5v8UkRD(gr2A=Zj0YUc<2V%)1Tq?00MEpF&T^#rqU0jns z{0lP9I*PUlx1oKKpQ-fde~UT+saQv^^ojZ*PsC}^f6DQY6Oc+uFzPY*dznQ|`zQ*h z^UzL&w!>XpmtgnUZjm+Q9++1b{;&MGybJRK@=Sg=UAwA;@mO^kG7u$|z*%5DbQgfnE`KX`r07W7$ zNU=p{!D6mX3w;oguQjwaLa|MYYO@pV5BVK|=aTea$(yv}MWt~zic{(96)SQJMFcDq z;wbznz5!5&XGIr=@5S7yem``-e`V-fxq+})0O7&;hs6V&c?JaBg{3!F0;h;Dz7A*B zJC@IG!9$G8LJ*G#81-L{wtn-t60Nxo{F(!RF#c2pYAF1IFU z4nd>+24wTfxKz|u-e%zmpoMS_utXQ~&Kp)DN_geGXd#VP$s1Kv@x~N&ykzpKP#vE!m#Fw}cq8VhOo>eA56{gL0rQ24$-Ks_=;Ox3p9c!8b`x2{tp2 zNWK?%9TnQW$=)L3Ud1H^8n-2C-gFdw5R;1Vg<3@XscnsT3rWy%MMRk&vxtTNw{b4~ zWKC!{k@zDm)y2#_SvaM}fhT4w%0rn&#@2#z5hJ+?9mj~QwUtFOmzkgVr&yW*z5P`( z#<9Cw;`Cji6?~zMT&<&XogKC%ihH5od`LrRk(Xq;6?hX+D9-RX22bbxNdKy+;72e^ zfh1HpFeSLZQ~tTSWy z*?qS2G5YsJDYGES1ix4hEAno zX4L^qW>pue$&f_vOkLvW6uBEX^b6a1NAXEEEg68>s~s5?6F5U&Zy8hl>W)K$m7%st7=);`6%!TnzhoxeJCiyIbgLE6Fphr8P( zQAB3;@c-mpAHBt6@t<)2<_&@tNbSK#JRzS=7W2jYWSh>~l*DqFkf@AW>%&_>f(445Y&>y3_ z$!j8~Vq^U+cA8`3$hJ@_3N_}BE+U2oWmevD7)OQ`k0X1ESVVc|bnH#g9<9r{1w1s~ zuP_~JQ3LyN#c(4X@s&ce9LYWHM0VPQA0aRXf266S>*Rj*Z)9s}U=NL3OS`9d51!*S zJjVPL$8fHdCh|yP)9{>$MZ{B16arm8j!0=t#Pv}=6^{_Uy6+p-GQFg>gx|x{lxH>9 zwdruK(C_v4F%+=PtP6wa;V119*K5395aE8)SyPg$nJczV+$Pp5*;H#G+ahru)zOKi zZIdiASw1h*w-tU&`2!vlGg{-<{76_H-HEa_xJ_tC^hcLPf7tXwC|h^9aRNHi zG`0SzsZw8%YiU5$d}ezee^L7gr;una>B%#<1RU*GS(kuc5h31MjaUh(1b>4AgdglJ9wG*Pal71N!vjMvklr~Yyb==3em z&VY|j+6FTJ?pzQDw0ppo#O4f;?I+$uJCVIIrV=2TW+6w#!zn5JFy={dR-m2W{TLEf z*LL1e3o;?rkYtNh8@7!(LumH4wCz*h9{4uwnL_8k;*%ZB6lzos37BCj{jGmjN)7WS#aL*MRp7F2L$LINQ~3}eSkV*Yf{v zZ6agRgHb&sfcoWHI%FNlAs9keomRRp#uSt-l~(3mKsYWV@uDO!t9MK_dTkK51U9vxFchqxBJknW)sz>lprP`R18#`a+)rI-t7D5~$R(Lx^pW!$n zoqT_Mg;tNhqfs<6X{&8(<@gqhu1&x_A#oD!XgHNW9QVhQQvc9#FGLZ-$5Q>B)xM~o z1o>>&8%v=!YBzRL4D^sTY70BRsIP%6G+F*C$eb+I_?c(6`8B)=_HWN~7|E)Re3wkJ z65HP;e>6hE(t1`k?t|&9(XpNTQq4F22C^o1?Y!J0v3PH-X=Mc8+M7O+GZE?q?PbF_ zJ4fL+c3OgLwJU0hjgY1rJMWOgHf))wn5djs--||C_sXp+C+a5ZCmJRiCz>YyGBEG8 z?p@bw(%TajU~SR_#^>%mY)?}+vsQFf86 zm^5;*8V?zgg_tKHBVcmblI&8!YR!b~5^h?yF6yA{x}_Fm9{R)%C#zw&Goz%xCT`;f zv1ZP<8XR2LTf&5|yZWnMruUdmNXW8tma1ZLU%e#B^fkg5g$dUtH5r<5f@Fyt$fU3A zs?<-9wLM@;f_5e@N0kom_OqEh7<0N9>E|#R-5F@sPJe-3f|H0- z$M!UNPOjAd)*jLBY3AMZh!oDbW>ZrXGMO38cMhB6qw7LnXh%-|hI5*Pg8e*3@gOE{ z(tYx%gD$7LPnTl?qN%>6J}-x}3gQe(T9_1mH|RG>5&sgQ#nML-Sa)zlmaqFZ?E_Lq z@SZ{A6mtB_sNtxgsB?~I8Z23sd1D35$+oO(tc_;ZDXT+>a;B!Sa2-QP*YI~|J+pt* z_sUT#)t7a!Aep6dH1-G`5__!2+M~i)V_PSkydA@}e_(`@JGIrYv8*R{@vO&1DZF*# zUt<`IRF*N$NwAqU+c!Olgl(rciF~r(DOMUrCr5-vq+k||GCbK?9?go_T1aws+Bf++ zZuexHNg_)zxiHz?{>FGfI5$b52Rbf>@vF{bq6t)SW5h+AN5ZLz&)thI4%OEtRgqUF zf%3Y9goHf>8|+ouon6%kY3~)aMp=z4Q}$r8UiN5mb@Jil)5(>|XOoX7|DAj?nbUN# z`g3?A)DiLpWEmbQ4AZVe94U-Iw%KFtFD5o|WN=aaOKnN{xPFPNGjgpuvIsKuYw{-A zE)LX)IBDb{f*&FRd7anE*EW@*`;hG*$|cus7=A59ScI?bL+(ZxO&LzNEJa4_)9$U-N+~4{TsAO6vE13fUQPO#E=U_6eP}AKq zZEAql5Q-`IB=ulkrT;Q4gT={_Fsb~PtW01Oi`3nkHdU%9Z^oa%t&>-J8_UmEsSMTC zO5{w`(JX!Kyb?>f@eZKc-DKJJwS5sW!{!8%>wQFrYDtkBAkOW00zx_M%;)Mn?C%X$yfK5&P60c}H-I=Ys z)FShVH{JpAoFjUhw;42fs0A5mpwu9>kbQzr?&dlTl-YREIABLD`B`k9z#MC0@0Yw1 z@v`5D4)gKMSJfi9753s#X5t0F0lkj&fbv&HJ^o6WJITl{*YQ5b0!baSK>jSg8PKOa z;?~@?ETPB>#8kk6uLhz3KZvZbpG2hTwbJ{9%bU2QTqb<5+WV(yvy>%%B-Yxd1+u>$ zh>+8n_%z9?=&fV6#VzV{5lrw+(UCV&rl9->*vky2{p)?EqxJlzzknL@H_^eELfj9> zR>WESO~ww2msC)CGho<6Z~8Ovp1;gLDg2WZ7UyGg4&$2GhH0f8FH6QH3N&Q}aC=Df zwA}e4YDGk6P)nRDRFT@#whV=6i_bD2bbZ@c9#9qNS#=U=JS{EvpZ+Q;CIwIPGbqSg z;4G*^3+i}OyFM^jZ^TV+e2>InTx;?$-(?yviJtnsY~8pKDN*boFc;dhjocsYoboRK z`NzxCZ=?52NA^s?Vvz@?_e}@)#QGmLIy!xL+CcZj^w+6y$X=s=cM3zEjN0_tw6ehX zG5a*By(*up)0d|qkTcVVjjm0bLwhHl`@niipyG{pryZgHOvf9SYSd2LGP*Zis!{K? z-pioJ6!~=8%ZLSXr@yGb(R`{I-@ASN8}JG5re}OUPJf<0Y4vgXV$THp{j|boZTjS9 zb=F~!;lEE)eMTJ$opI^e=L4M?g=@~Z_4xNpOlZw$&k$yMe6xFOVSj-fd0p@>{h8UG zc5W%mV8$~4FZDAm-(ZF_%&`A$ST{pNz6JU5jvHroK8BU{eA;Qy<_g#?W;`oo=2%M>V@=}|alKb{uL>(vkDT!`n(le0 zf1oEG%rS9>1xua*dcyK2;7K#v)ys2FZl3OGfOhr#v*D=G)|s4{;%%NYrSSZjw9WZm zS2rJ0=VO;aKKGN2X1*|xe+`3JWc;;R6Y>(W8xDtjQ$s)w7=NG6Ykg(y=!*gw$7qlT zjfQkVDt&+JdbByEVK*EL&NT1c@Q`M3pATk}ZmkWO*gn(BYki@<2~LEx&(yS@>eZQv zQvVa757F7UN;iN!-oDe=5MqTega{yeHui;>`5Hlx8;v2SQO1y?V7?^Cc`!E;oYKtTEWaP)D+~3n?W{ftb^!5*MU6ew;LlN4~!!<2J;?aEFot6 z-5|Sr7la7$;v!*`sVQ-z*mcTz3dF{V&j`y%Tc+MfPl@vs-vA0Lf_p@uIU3D<%UWst z(u#t{NGnTUwcLEJA5r*tCSS2QZ6T~{TxpyVE5z@lRwK*Odt+1LHwwq9=ZFt831Ddo_{rcW zj=whZyEtX+*GyKR2Xiae5(`sib3?UUh7M%kCt#FEI{cJ*7%e4MSs;E=>6L3?ndKN7 zdV(I+Zdnt-gOvM688`nG6VSd1A4^lyUZ-5quu$Hfu~7a!^9ue+>dA1KdN@Po2kcmx zLBf&*9!h8BJi}GFW$N9`)0x$BCsvXEC#h0EQu9})j7^P`tAdpoPG4tYlxl(7jYh}` z%4)m+jMbD4CR@2Ur5o!m0x>?l*2lyM1PGiWrGpQbdCe^!$N7O_RxKi3xss`JB~Ig25}yD z%i)meEeDPAjF3DGj?rD8!^;}}w^Wwrgj|-S^dO4fF&vGNEQfX_`j8D4sc~#s7s7Yc|qA0{djCRYltFHv_Zn8HMHD_mcm2*HxZ*DFA@6Y zbzCz+1NV^H7bQSn6xt}Ol_~VTzMo15rSFzr!7KP4C0z7+W}R>oLvwakjF>&AM9s!? zyOp12f|OroLX|h!KW5NiEBwWdkwBGyAR-Z~@WL8*!|g_!p-{In$0XEui}Y~bloB&q zziqZKciZeqwh#IHs442`U`~9C?ki<{ZA@xxd~?J@oBgd{##*~vSZ=dgEeR8kcA7Kd z{I<|TfFpcs#v?+pIHG+Q^Oe$CD+S`g|6hfvX_2l03!i6-+*hVRJti38ZtC2w?&e$3 zl3eRz7h`|n>-$M0I?6lZm{z-qZ}XPX9G9<notavYAHo6W+t~v*xuEj%^vQqU__We`$mz4K<-SG*-q-Ku#!X5n4kj-L{hvmVw3b zhNpBg?Hs8%lj)pp`$qxFs6S^vNx!!;ZU2~k1;>s*0~jW6q@3AgUKsa{s6B5*VlR6* zyF2ZLsB-Al>~NN_#<%^&tmWLW;vRfi{q-!8q)^DXb-awqI-dSm9gk^R#=AA(Id?KX z!t%%L_t|=0R=4#;9k1OLHkV9XPxi(Cjc?(d^7X|ZZq}N!QBvnXMCTl4{1yDx>^{I~ z?#^rrxFY^%)CD^1c5~^N&!diWEd+n_{5cxhW$wIoPIe8C zj_{bP<9UHe9W04JdqPpl3!cLc{+^shrtz{zW)!V+D#HDwR^H3B@VUx425RdW%RlhI(B`#rgMuBmB8@fNcO%yD_Hf5dEf!`!(_ohs0i z)j9^^PxgD%skuI+U=SaOgbmC=F|Xil%0O-%kUXdc9NX})wx9P^cm%6E)JD#51bA&@ z8yFve`@&rQvI$ms7H?Ly2Y3M4EQWTGg*l)-=bxEs1QF6oy*w8(>nGbQzCM>S*a#fu z2UGz48H4!gHl}UoX_le(gk-Brsxnv8qUvhLE*1(wW29D-gts(qQ?Rq^;Ocy*k^#bz0j?ZOB4Q&xOhjlh@ z4xW-hBrbjUM*?15zt|7OEs zz6Wr7wvACRj~%uZ5+TL>{jH^Z7}XA}<4XSF(KIDSw5b;K;xig)c9J*giitnX1DlZA z#wWAylP>b|W3Pr^8Vw=&*gW8NC70^RO-xJ5rcTa_(w=f}%9aVg>e=Mgsq==;<;kH< z91-c$tcdh=){LZyf5%Ng{yBes^ayDu`mV`hu$M_s(b=e_U`wnp_ijuiVt4Q;f4joR zCNoCHY}G5S&veMeya|}&pJLm~$g{r~-Lo#B!Zb0z-7p6@mvcx>G4BHF9j<8JOFmNEBX-mUc0 zyzyMr)NcOoWy;AVynOxym!tV>zJh(4Yc$uw=;v9@D(6$WenF6`Ml-bP8aLPHQfwsTEYH3`43^kFyWWUmiU@%Os3;zc!|;{(#eY zuyA?#;WVmV_LPIF3oLmvSkre@x99&>b*kQ)eDQj~s{-r%cCoF>zuX^k54`$HpJ%sXV9u1Ez*P&l$Ds z;jhi_Q*BnA)^ZBZJeu0Wf#i)u^wBSFux@G_3&#OwP7gcCJ zP2~}BWd6F!Zh@rwZQfKhJO|dS)+3b@#+>Q4z@F#IS_mEsB9h*eoodPOhL7lqQOutD1e0l+C9}ll6wtBbui&Nn})i?^iY*U(?dR+SPPDtZ8t29ni8Yu zvjhVITkIQYOV=6u*R5e86i_M&#mDTP*LnyhCY1{iIZs%nO@u5gY@zR3aAy)14lW$% zM|gzIe^yMBDi^vb)eBR$lk8&)`LPLlCl;C(uBxiEtCXLnPJ<;lw@~GMVIhuod4Z{_ zCb0#7tJKlG3pQZL&g<;znhZwDWOx4QsYs|N=2F`R`yBr6ZUb6H3d(JSw=g}5e7bNg z-e~T9tBatx`4@L;;qAf?G&Cet zaobTdynX@a_tKqs=*GfE9!WgM4fX zo6|!|_1<}Wch$td5+U{09j6HlYQ3lsEy z3T1@0=$4qgw6Cq|tgjPEoD_jw!AgUj%u%)?dEU^s_y>Z$_&<36;${qYv5B@S{7;mc zYK7hw9E5fV2||~Kjx3^~Gh?%hA2j+choXr2Q;U`c3CIt^Va0vt&q5mN0_73jzRV2Q zR`p_$qtl${7$@p(G~I%;K>K8Aha66_(Acq9rI=?tZyg@!6MvTNT>M+8Utobdx2WhK zdt6*RK0kwQQT3);bDWSFl~!o@SP(iPL~GX_hh9A?>h_{Qdu&n9?pRYgern7g|7dYr z)F+{A^68>{`j_v&i++eN>U$Qo5tJOM~bl<>JlK?`~5_)nY88p)jAg+yr3IP}^N^(|(}!Tm!L@*^g|uF!d~uGe;LY z7Bhja#qO~b-l@eY*qKH3T>-n+4GfG5#~Nq{6sy9Z@*|B-m=)pXqRMDKI#DYK?Sxrx zur|yC+jOm9rs+Q#VEInyBvLM}!+jQhFZv=RSL73&Fh2-R7~5TL3oXfg1CQp?w`Nv- zTHMjhTs*c|#I}>2T&&)u++_-_-L=o|YIwu0pk44?5375mt3tmyD|E5Ga|$1Q(hHN^ zR=jhU8uFF!yQ_2Y*rE~UjgTIdZ)j;?gfZP^gxQAtEOah@y2x|;L1-(M>}o>T?kd*b zx9FdIVDbLQ*skB23*c3m8hQ?S*N3%wV0l?x0qfP|Jdc3-X6PqHpt8;>T#_R_n)mLM4Epy z{;JBzh2}qF0`>T<_4@Gj;Ye9LBBZ|(FiwZ`qep))+e5*PCOGXCIpFt;!U+dOEb?Jd z59X?}pyu+Xf|@Rryg=K{in&_sT>eo=S!&+#v)IDmoYOt1a_}D1KiR@Sooiv>HMi#K zsPJ$p5B=%7VeVV?GsM-g)2MCX3Ky4{cZdq6j&KXxSBaR_T~b%E0CC?&(Mos=vqtnY z&UEPzcHPnmti{rh(fTDDto70wvsJ7=cycT?>ExKyXK(w?2;e{IA7(LD8EqehrsR)8e!&ykUhGYg^{$*;BWh&P7Gzn)iE(S( z9npWrEfHfnk$k0~%a6U3!s}nci13rfOX*7{OM<1nW6l+lCA)T!ua4PmkpFv3%Ao+^1)Kat}|owUH(hsOG?b?v1>?-6>-eG%fsb1;+n`j=8nVtrLgFKmcIIb z3^_A$eEiGOjj?uA_Y!mTts-uzZ|TquEeJ>4I?MI#o=-_MG1GGS?EWGO?T0Z|a?3P^{9 zKp^yL;>5+n8!sFwpd;qXavP zI$m**BnQr@3aKB-6nP6A)3%f#4tfeed(%d*fGhnxw6|9F=#8EdiQuBl?%NudQ*oYl zPSG}DRp`twY8#d}ZNW9Lt~vE@=ylyIQ76>({g%MEneNOFo!F!Y&|Yc{mfm6)J~NX? zJa^bSJz09G#V{}0LUZr08E0P$oJi-j%9R#=xAn}I;h&>VrOu9-BX-8Y)uwvYShnJO z(|@sLNbks)9&`9N`HU&5d}@Y(`dcm$cD-tFCa$OA_!r1ult_(;ez{>6EuNxjkJ9K~ z_(Rean56rn$(-9~S-$3IZxt#XJ2n+e?r`WNspI2~NmQ+F50`TRy-l~{#q6)lepI7T zD`Z_<>U&X&mwg(0t9vA8A<{)IH3pyM*+pmNuV_|hotLxJ7nuW}6wMavpQ5JZu^CAP zobp3+vS>@@se^YY9Z4pcxv)7o#X7XgUFx~nKfrxzj+pesK<*=IRrS3Z($q7mHsS?! zpsB-Qh8j^kOQmGZQS)IRs5Lc*5TB_99;$m^fTPNr^O7dkE^NQMPTjtr<(H0`k)wR? zomiz3yUJ?K^1njbLg!(zmGiKw^EqM*vt-drvsUD2WC8?7{!cRoK2YBewKcVN8R_L4 z{ZH;{Yj@L{_G9Y4xe|$rvgg#YUfsFv5`J#X6v%|57WbIWO@*1yr9?5P%Q7r#KfHpx zm&*2g8DmcQC_m*^Padv*LN1FrGdCvlyyq(QSWmf!vf)E{$lNY9d{~eCL+#h`K6Pfy zKz)$@U23S}-Z{R}Wa4p|lS3+F$L0b%6X&A99-T6$N=%!3M>$*b5v@M^o_enLBQndrYo%BYzxu?beFKxL$bog`b zk>p3SA;|wUgDDq?m3F<8ml5}=N(1LAH0BcKwB~x}689v{Y0v2aEk#Xd(dSXQ13h2R z)u)e#yfQUL=D7LE)8#{|yZRiF`QmRo6dm{Fz8#%45AWj*mT26<57+mqhrzv^{?0in ze-c>At{@rPnMTT=@N`#jk0{3VRAsA=<FBFB%r^5g*{5>P+|{&X)YB}*Z4bzx`FrNI!L1H~MkmF#bKXA?;hVFrbPlC( zG*U4(ps((U)N4vH$W>o&kB}7P%k;kQ*&Y*{e?KiTpFHU+etj+L5<5@!+nUpN%qa_u?whN{8;?B`Z4+oG zzLdl!ohE6KR0z0p068ksUXFK`dK-DtR>&sihb@dUJOLt0 zIRqq!yq5m~Q#lD6&)WMb%F}OhP|lQ?VI|E_sh1*V_yrI%{)0cCSC@Y}kEA`Gm!mzI zm#4|llxZ#b3bd4*iPN{yh0W25&2X~%=RPgkQRyh3aruW3UGNhUFwQ=LZ1pjwdG{H2 zy^&+$qK$0q?;9A+KI&dnG71Urx!$fGt&Gu@32kweM@-syXtzHalR)C8D6O4R+Eb5a z{%ZByBR?fOWXg8|~?5n6X<`$1zMj&_vRC3%b%MT>w% z(jsYLv~-#{&Acs`7D&sY#UL-X`qGBfeP~`ZeeeogSTU`$FQ~I(N5E$?Wdt>d0J{Tw-F86akFM< zh5M3BWN~ycb@NDAbyvIGN23FF=%KnrC>JQXo;6F3oj=V%FY9aKC3Z*^n`AmB>(5sq|^V{hiEgA8KCf%FW;p0oM_>SszwuLkn$pVjQPic^{=d?dn zFKNbfCTh>%OpaEvJBdxRC_9u>pFEg+Pg^U#HW?7}F;?vSP+yu{mK;bwTr3;?XFwu6 zr1;2DO2q9rdQTvjJX|*@2t)?gmR#M z9&$Onmedfy`D&|;YG&0$k2yWE;t37;|K3PqpBfnR0V&cV<#fL1bzmy18*`qXM6aVO zcG^4q7A-y;7I>~7E!jes2j8CUbQGQIfTmCTW9aFoJ@htu7ad3MruWma^g((beSkhn zAEJ-ZN9g19Df%QGPw%7;(~0y6I+;FApP>`zt@K%X7`&0LEnb4@gE!DIn0oMP=jbf@ zDa;a`N$1k}bRJzuFU4Gmyaq}4=FMv{z0U>{I2Rh7B7=uNMOC^)YLCL6roET z68|LH)c_ZJ;mNIAkb5V36l&Pmrl7O{07s$UQ;a<6|F3W%CbA$S@&Tmezn6F~(XaX% z+5;^RJFp-M`O;mr2ci30{D*yM##e}fp2mWdb@Cp%gv|mmxLXA4?XW;hO&7Ia&`wo? zxG!AQR)W|-92OoRcc5Mi-;xn3feV42k0H(r0#(liiwiM(>=th5TuEh$AVvFC?Hzic zc(GX#lLh@0eUXRYyEJj3OPne{ES9za((@PmQ^XpV?Xliz3vsGKk$#aR5pHUn*F%^M zq>mN|Dgf9(dJEyrP9SStL2tL=JRIw718Gl@)J1}O?omh2!;2d$=o6G5APK!@0WH2E zVFUT-*{jpFFs?dkX6kJy@(NT%I1i5j^K;ZG5p#lKy<^93iXDa8Kx!8dBCR4ekg)?^ zZ2-Uq>wWd?dH7#mqy_U-Q*SmTJ}tR14y3u;Kp@RY+JAYykXV~SC(oo{y>o4mBHX$k z;D6|#GKj5=o~;eUDs2_aFFwr%Lb>oEKnl#4xA4)d3p{Vtz*5p6Qs72BYPC|3>y=qenOruyb@1a=t>0u3rKDeS*`ZWM-^}!f^LA^^%+qQJ^IuI)fI^! z3kcm0A|7BFv$d1=>_9()&%_(C4GEWp*H9kF%=gf{z7U}H7_uRut}7$*Kd^Oj8y~3g zL~cUxBEJ?2#KHU|tR$LrHY5tt-a_~5rHjff%77XO>7r-AyFCah445t|BLYpwRVwI~ zi-8h6k^e2YjXwn$?dhUJ_L7Lcv;3oz8d4&V=4|c9V5$+Ywn`ABD1IRVq6fR2db-f! z0#ejQ=QkKDr?7Zws#*m)ZRuH*M1#;pKk4Ooc1X}5|B4=4tUK@rph4b7>CZ{d~bPmqZJu3#LBTrdo*&%6?)fmivYcSw9$PC^2+7&iX5cnmCg&-q2Ug?FM2 zi-zJ&i%HXDv9`rYupAO%&%s)Ec=Hx}ErpAb3ndbQMF8mVPE7eQazX0JRN2wFMNhFF z#HR(Cs+Z>{@TuFI(j9ForUaJ$-s1m6A1pdHVh>|3K*T=jU7xzEYJBvOXaLw6{;9SO zx4>GOdjIA1N@QfgR|1@SEN<>0FSxl}hq58BME`j>CDM5Oy5cw% z3`JW&va1x}2hoH$Lv^5*X<=f&qq!Yf63e>sAcJ242o+NR>>=QxrwDpfC;_oj%Ami7 zGSDchEK!!G3eJ$!K#IIN7$K+u981##dG1=k89fWtXzv5S@8|;nV_F;Z<DpxU=9-cT25L5|43MYc^m=`q*((jiMCWlDCnjRH!`#b zTuE{by0N`b2asIv2&QlXe3hJl7qTwkwOs&hy$zUHtQ!F6IbFbC@&InZJODJ*6Syhr z1yb$3f#145pnkJ2@VA5?&;MP>XSTqnK8V#n426jQdehl!pS_}Y3 z906;61k?vO0@nB_a2^s1;MC#(avA`{0X<6b0NXnrFi49ByNCbeG zYu-r!^wJzO3CO#Y1Wa5?22)(sO9mc!AJIz%MnNx@G_Yprz|eTV*gj=xkxWnrARE{O zI@EH2hiOOja)JJGj9wn#B$^N0^XL~l0p8UD@GchuZy?jqhczj~$&_fak@#2K7$uJs z(@XZ!!>CXrD?Av=*>?-d>YDq`)cB%&Cne|e%it8T8qb+h!Wd<2Vt3AgajjY3JV$h5 zr1!wY$n-=!xR%#^QUY`_+fzoouT&}z;j3K+`t8^#NoC5#s)Z#Byp z|4NlJx*1Ey&oc%XRn_Mi?x=dkMMfh-M6;RUsL;v?R&Hn9QmLDd>kpXGqR%o!XZjcg zltD&?{AfC*Iat{iGr_QG-e9CNF5%$fRY*mkV&UEp8524Q8S5tMRPD^EP;S*^l6GJT zs4}HXxVbP^jZ(U=<^S}XwKT+zL0*KYz=Pq>8OY#&80E@O2^SGMmN8m5NoAv-=o+c@ z{kjHON|#~kb0=W&bN@5{#RxWgTJ9a@?xJpy>K7p2oW9G*I(MiWjGP)efqFC$iR0k+ zj=aM?quA7pc<|7sS}Q0Wt?9tC+3wk19_i`fy=P4OJPx?`s)8Gx0R|I>u*)!ZyDZ|A z$4RZvRyk&-%%jrg%=~~rGyMahK4l(BLD5zGb{o7=g?`@uW|(M7&ZALhaGiE`Mkeb749s zV=ylcBONs}XS!VUVbbLm`dZO&Xkc>4W{``=>jZ?g0wyJqE}a^Z-1m9@o2)AlujNW) zAbV=|CJs(Ws;}>zFe&T1((@3S+3Bf$ANu!9ww4e!2Q#aVJGs6$1ePmVEg9m!$0V;$ zv_eaUNGFC(;RF3g&3fS_3h4UrzE$UAA&N5F0lVg$gmyRI9Eyiw0gcg^n1A|5c@!*i zG}BJqAPW-#AI46>UX@2!7L`Gp72Mye-4)yHO0W1Qq*P21IM?%c;k;=T0%imp*hL=A zXjDZ;R$;})mpfv#K3GQX-ve~&P_cWHEybzW_|D&>RxL7}k+U)MMF>MN{Dzs19;$x}#p0B^MbTHaw=16arSGl88+AyFfg!1O)PoVk z%)keuZ#43ATwJ_+&b5h%4Rk}v>Ga!-XyTdqEDFBK8l#w@2-6bL-0MrD$;X-^_QZwt zIAG;hV55@EEIqlw@G{?Cb=$NekQ=D$_8%ZTkZV_+oH6go@?e1@590Xn`BlNE02}Q zN@Ufra#+)RS?`n`k$;WjO@z$W{j1D3dHc&ORW_N8h(}N> z!v#cD5A&cCu$&Q&;Q5TR##ocAQPwoe35jP-u!yWF7J)UxBC#&AD6Co5JZp}1a~`4} ztY0DNgS;EVVi`;OAdL>0PCfvAJ)TcrCb}@5m&38rVjrhfX0OF3ioM4jPyV@hSNv(| zW#Uat>*yfGuz) z>XPWX1f3BLt$W%k6sh@R6qk-pO-0~I>Q4W`zAsFx{NW-}6~0LiQ&{;=fKqS*sxnA( z;(fpq%YjS}V>hx2sZ74228$_^`g-nM?3hO%d}anB)|v^3$+^8_MPQTZ;^ZgPL~?cV zD$-P3r~4eCuC>0}u;4ip$r_!%HJw;IjZK|NWh)XtPbUp?Fq$I>N@lI42fH>zq6+v9 zD%|ok-W491_YS+He;Ibr>63XS{8D?B{?jPGbHvCn6Xo+^CZNnv-qi|h-LpI;)d6%P z8O)d ztYQ_35LPN%hLj{efe9(PQNYHpF|JS`>~zxs_~WP#rcz?$S#1-u{0XsE@{;W-q(%QL zr53|G>?-E3-lM*Ky+Xeh!!=Bc;d|*dP5S}$3V*GAXM);%B%#1Y&g}_x*?)m&#irsi z*dYJkq7@FI;g<`~N@FoU^i?{))t5AXuKzdCvA2dGT{<16p@q}G$uc?EfSG_klejbb ztkj0Rx7&+gj~AilU#zdbKWbx0s`_g1wDeacS4?=|X=&WRA@-@tedCANaBipnoJctpG%b=oh29!$+_dpX+Cj81Bb}6eNdmti|DWDo5(g3oPJv`{bfISG%q^ zD*{$P_@2U1A~uQhmgz^pbS<;rLiy~DF{ZjhUbW(?}x`65YV_KW^H(;AMNx=U*$Oc_}u`CeL1vz2o& zAi07!Vk&b4+2_&4@pREp_+WCkAaBMK)63B%+zra1ztH$26>FM6?ybNkSXD2M#F|ck zx;|*cqPdI5@yV|^d*9d752i1QmFxJSkw+hm3ag(Hsyl)+MtgWV#dM3QKa^{kmuO#3 zLoA;{BQ+bd%d}$KX>NDeM`d#5H3ApS&z-DLw1j`aNCXXbL8NYQtlgjYv`N`hlC0S{ zzAw)0Md(gvce5oq!pVIKEvejoBdD1pX8uO*l}cshBj_7;rCd;(wRA-A-SfAPJUe|x z*{|zg4t`2JAjRo=zoy(-lga>_i94`d`Mbzuwv~(`a1hAHS5e^Nm3RT`BeCAt9-Ta@ zrIpwm*n24~c=iXPiS&&TRi}R7QW(4At@Fn~u3woVA#}G!u2ylt#p7H{QqhNqin_gl zf{vj{IDz8tYSNtW4g1QR9CH~)j>%FX$DBZtV{{FG&TFOvO>olhV4!pIxK)L=90Dz) z@SgHreXHUH@Tzz+4cuGmZr3yt2Zjig&!cZ0G?#{Hzp`7U$_6H1;FuyvTIHOogDj(I0?g3M-_TUeUfCtk`E^VKlWzvrU192UdM81MTSf;)`BztM~-Z7xZ5^3Odzv*t7y z0T(aOR|L!eL#yn(6?`-6t`t3Yzf7QgzR@3CnllpdFa#z&&~>tzLo;x3J2-Xtm8pu> z38aIcf0hCB@80_zZb5O~#yGNkIXc3lSN$FK=92PopMlf-Vy@l;>&#$>LC+t>YNjSfkNj6%O(dqY&h8gu8 z-i5Eu-mbCbilZ-K11IA!A3$F|yr=^yp~W7gSQlUtdvizEQ8f}>5q{kFYEj$N*< znxFLpn*S+2mohi^_wQ3zLT(2?Wi$NrnSw$dv)YkfPcmJqf01{kUSG4G^9_5!bhkc@ zo5H=%$T3UgJ|P|BB8RjQaojw{Yvi*$OfgD5lA9E$s=gyP!rFujCpQAI+#aq4yqDY0 z#c{`B1KeTm5O>gMj61>|=SIN$xYOK0E`dABC2^;?oO&YnBA3jia%Z@B?mTyryU3m3 zGPo4(B`%B0ln-KdVKXOYN+?z1i za+sLpvW^*V!k^pUR7;gx{(dNf1g&!Cvhfqp$RIq$va{;gd{yxNIb?#So@4$29110^ zoO8eFfBU~8%DY}2*A8|&WY;B;6ty==T~%I5)#~IDJSW=fq21eO|V z_?qUN_mnt_4*LmFn|($qFyL6rn##Vu{W53sJkJ5?Ld%!EyM0m3xtv_}VN*zj0n&r( zL{LH)VbEcp%Cqx-lv6tv$`=s_@w#nwP;=lz5R$q-UQ8;M`7B@?`Dq|5;9suQR5+q_ z*uVO#jT-tiY!l9Fc?8X!J1o=Z5t&yjea1A3o2S)_ss@Y|6v{-pkY>M~?w>YRkdTgc zKW|h_NZrd+sW;DrPcLVmX2YDDd#x@mzs_?uh(4QDquWMbKBBpIiN5^6>~F4aTx2UA z{sDGNsu_M(vX4@$br4<@Nap;Md@p-k{->l!t0wy=$nwC;)^gu~IUz2^^C8Ft z>$=_dF|--X+-mE{u{J}wyy$aiGqPg`{nQx72_p8-DHxpuJ66?Z4)hZM56GxXTfg1z^!mHwesL@J#Ub7*-Mo^$@cU_^PY;<`J6~&7& zu_@SHeg=Cp6p|m7@mSg?H^!tt@K0bw@pXk9-V4GlQ6}dBA*O51e556dE?Dx%Tx|u! z-dE*MLR*F}Xa(-I`t5lH&dENXG zrRCkDnLk;S;getjv&ZALhqu~%4vAvUOYM|Ec#AFyt$3Og)2nh3alhmTcpN0#QsXe{ z?cX#KDi+FdQx@Io{QJ|t+H%wv%FjZy!Ou1g87gO%3-O0U4f%%r1Dx(I7wpT@Ae;;K zMKhEDEbDZ?WitAsss4m7qrpWB>2iZqj;f4S-Oj5+hX#_K{W2@pTPOFAJ9D3%NetS6*OpSn<86 zexA+D_J|Tbw$7~Mv9B-g>{NS^GUiCl5Y1%lG(WCFe6SE7LN%=UQQkuN1y^eAMj6(e zs;tsKHHzulL$B$K8vU}brqjLHE)G&rwKPIo%GGUqEbr1P**sG(=jhP3fe9?0PE5tc z1`ya?Au316Bb(+;pa!I~z7W@A;ZD+FuXNZ~L&@=-$>g09Mal#xeQw{NjEEv&0aCG} zivK3~gY~hW$?QKca*XU*%|w5wKRxe0AHps`-qXGTHJ{H=G*&oFe=~GW@j2!{`E$rk zegU#Gx6#lH-DIey(PUVq)npi|dY6Bm^BC(Yf0zG=|Bx>^xv~EV|2h8|KgQ$*|26*= zKb`lM4`Sp@$JkH#&BpKe`_;elUz&#%%_9_w{tCJU!{UDPFLI>QKTb=LsPc4v82=#e zF#iEdzJIwP33HfypMdB4vx|7AEmruz44sA?LGjZ01l?I=0q?ZpTgqug6v?$~x>?x0 zyFA@&k0B}R2-I@*1WkSh0S^GzI2Louj-L_{?DcOuJsNS?>Fya&#O>{vRr2| z{!WYpKW1trF>#M1|N9|n{$5uZK0trocfUlQpCR#zFG*M7XA5Gh)cBhGe8C*3nX#Xb zQrG1d3tpCnPU`WaQR)6KOO;w{&Z8)$4UzRIN(>g$#pvJY;?5|UJ{Sc(y=&z2b5)uJ z|ADFm9?G1ITT<-;-wtN)dcIt+PWrv5VN>Jg=h=Ctz|eXtrR5=5e$a|5@R~Z&z1;Aw zT#a~xp<8tXY$rsoH5K)2XCpjqYcu2|{`KWn&Pgppt19ctBu+Hx>9y ztz{?>g@Q2Rs-TLM&RG-WgI0+R!MdQkYe%ppsAF9fJj;PtMVb9ET`&z%{bTwSaYt|> zB)9CI;1%?tpt`%0_Z{ueHl@cC*Z2cH$^t0)ZM{Oj*GvRiLvWH(QzySH%N(IiO?KnP z1wZj|Rm%+x;`^!5#BZcK$s9CUASdv~{Wttdz(oBcprUQne&OB=0P;rxiZnJPyIeUV zBknx22harqheU?<3jK%d2`Oyr$yMx0>JrU(Ro}78y2g|#pf0%xBRb7fe=rXd!%#SiB2aH2 zy)+@{r_dTC1spFaK|Aj#|A`=u-`2^~@tsi;Tpg>fcCGTCEa3f;c}uCtCyrS-HX3{qLss3#k+Qa#+8)SOxxl~0@(pHJP&&2cGsc%f~}JKC0Q!>Oa9>}Pbv}x!WF?~fl#<9IMDYpZ$mgN zd_Ik^1?O9UJV|ybp1Rz?w8aa|1`(Ykfp7I(mA625@D~F;8_Kvyw(PK*8KQ(OaRk~r zQeaF+KCi4*T9`tP6z)_v5zZ%Hin1RpOxVo-C@f46;db!gH4)@!{te;L<;^i|;UMm& zxHZplFmg$OGl`L5sw{sM1P~xA^%x}6iZqU)EBt{Dmn+A3|v>f!sy$AD(ZuFsehKyKy>?Ln42w-<6 zzlCrZf!>jMRUDrIwkhBb{43ZJmJz0VDmrA2%1nrixpX9>t`YTlwFGtiKf*V{pp}`L zxMfpe+_GW8Il|1+0wWhyONd)0wEP&2T|u2M7VaDTTNnXa$Y1a-2%gcdvpCVxVuxl9 zGlnQLVG_AOCD^~puVG+5e`cI&a#sc^B<6{gYJxJUnPeHrrSRXzwjz+8mEE<8Q+R;#l9vLH3}>r;$Q8*u5gq` zrlM6U%FY`-mcLr>!S~I@1QI8HAf7X|%}4XS!d8#Xg!z$YVo8X)WG3xv{jA`}@JLJ4 z$d$2gyhHO;wCo5$*NvGfW-6rdt$_oeJy?O{tlJVu>G{k2ddT^S~%HWyx`6S7gVR+vL2Qn-F%Y?(m< zXQSnE%;@~JiaL*Y?0T!6wPRH}nrjC3E01%lNgRIrtKy;N3#%>!vb-~}P#y@Y0NPd! zv^rO}WPX&VrejwBf_^IhmHVk&U%^;Vl=md{A{LwBbO+k=NpE)d+ zu+d=%(`HXnf1EI=GQtF|2J>ur?|HfGT=BJi7Cgk#HDP&&4eBd#jdoke;*bSbupfla z1j%$c!7T0C7}zleU$TA$fFU9B5yj7EqUvr>&`vzh)-a{`Yszh$kwe^%+I!^dQe&db zRIIeW*u}{ZNA|hC!)-E9ZnOPc@ntQkEVY$JRt5GT(fADxz@ ztbp;Wp-Z+rVC7VI5dU=dr8P$ZYOPzyS?gR|TKgv8uJPA+Yr?hFZmYGnHD|$FsJp-h zBA9q~{umkFDQw|!1~_k6uURpxxydX1d)k$TUXq$5yzEz@N8!$@lEy`kgngBUe*y-B z(<W~?4w0-U*Mye^X`HJoegs+0 z)&8Uk^omc12%!pmxBK%xPXC(e(=t!pKd3vHemaX1CcMOPu5w3RNPdQ*VZ%Vn+mG@W zJXjBJ5H4QY0J8+=Zw$ST7{#9B=gjF0af1|!LFUZ0@2uG80|){id7tebF0nt`&I=7-wHo8PRy?x6|ZvD)(V#6#&8D<{{j z){ie+3ZvM%Ji8g6bvI$e`V6IE{qVXY15fb<)4Q$9*Vb3REAL!)X1t<48;E556x0&H z>kGq|3sxGBo2MqMJM)gOZ>${=3mk$jNu)R^zJ*FHRZ#9v8{m;k|1ecoVC(pabNGm& zSlw6UOlhNv>oqXej?Xj8wZ3xKEBZ1G(HIGz3-uC#C&BQ@-lj!_2j&N2LYSYfG(y0g zsi^`-U0k~hbBbe*KFXFBBx3Sgf|q62*J(2~`~9k_S1U_Ui&gf`!NtZ0&13(!`Z~|w zqgwdyaYq|x#9fzPecAD(LdeQjFwQX1KA|N@JpgR6#C74iU@c?anzXk57Alfb-aw)V zDPJgo{1IXJ(ge6eg=e<#`U9S#3-~tz<>|g_W{yA>RoY_xi6l0sWvUzVTyUFdz5ZbJ zBKa;jvcD^DT#s6cTQbD25K}m0ss>kL9YV-rms0+nY0-X<%itN~4L7`b=T5e)d#xW{ ziekv}uQhiG*=yVD&?S)+cVJKmT}qkZv(wq(M17Xy;9+6_FQ5G{s@7*z=n=bz=!CS! zxXMosw#8;brRb3dIvgSnWW=jS*9WRc_k)L~rX!8DS8qI5MQ?mOSZ`dR8;njb&>MGA z)*E*>b0zMVaV0wIyAnGh&oGZO11hXeexC0c>o+fKPDJ!VYdK@SwH!Z}TFytAT27T# zEyvM>v;l_ZZ6wQ*HXa**XBpDQZScE+0%>DZ_R@-)MpQFfsDk@Sy0r3A#tmgSYu)Y7 zAHvOY0KpfWB@ZqRX_gh=1FC=z3N?kwD?z+)qAl-w0>R%BYwsI#!<2q@dm^JP8q1Dc>-KJE#t0KhwJ>odCr(mF0H${m`^5PTC~4!_zk)Z z{@e&03>f^i;WTKu=8UuhlKkv9j9$aHi&w5DKi?v1Dl?NoR(nTmyOTF zQ;ezLz?EqI0v@70N*LZ7Z^G&nlUfgLN=A%)m+n%xK4=Nj2<7c$Iw7-Lt4!NJbB~31 ziZban^mgb#%;!KCTzxU9^X8+nY5X>=>*1> z?}(&TcyaGXbqli3Kd#R?ZCq(VCI8bS{Gn;wteqplJ#@K z_rxcL)tm1t{VWejlieZ_>m%Ov;-j|iW||9`J(_>#kPQdh_82`h|LI^*9YXtd4kGo% z2%~i}xqRX;?6}9NK&zGpwbsHTddYlhR~VCW=%|dyl8dv8?mL#(yJ#C$+9J zGD@*W9bfXF+}mfsMoygQ$fA39A_}M$P!x>gM_Ok8Mc@`e`{LcmXL}2AQ^qe_0PV z-9RN$TLjgAH^a@`YU>||{Rmrxo?J6>Hz?a|ty60td&M#EMP#i;G*U?*;KzV7OM;Lr zC}+e`q=a=_QmbN>cbI=Rg|va(h7}ArTE(pYwc#UNhQ&4euGSE$s>i10Xcy6MkH8B< zMk-Jjwr*RxYT)$SNbwqh`ia#3;oZy?>IXFpTNl+2)kRfH>Y|LvX4Uv%?X6bkB5wQ? zeM@hPD$m+tYym{hR)`FDt6`q8W!!4CwYU{ya>;OggtpZWeK_Je`<-TYt{_h<9?-Nz zOCV|NC<9ZauhyRhuX^9)%`QzqbwGWUwY`02YWd$fr4sby2FyFE7zK_KueK(rx0!FY zgt<{8{(`EixAkqaoVE+eM~H!wH-(=zl0Y)@=TVD2g~PzfTd*`i8Y3X{*OqyWYU&94$4jdJTl%v^!Lc_Nzk zCGmMNqJsw{3|e#hm}eCpOQ%r-WK|K!s>1<$Wcyh^yIXNzU=o#O@?T&i563QA2~pdQ(2c*~5gK|9Atx&}^KO@MnzoK-M>z~?phS>a1n!IFhl(yVzM;T_c=L}Dr45iSpK7v*WQ=#Las`@*k$I8>ZOMQ&>`EDtJ zlt5)&s`H~z>g-=@WU^7ksK-l^fw)!pE`r*pING}_g{5fXOY8K^m+K26ZDW3DmH2)j;zc3 zQ2#IKqfok68|S;G-fdxij3<%4cPH~=B;Qe9 zoZ&#~+5WTnnk6g1ZJ(_3i~oD;7#_z&v;T4h2 z_Gb9~A(%3z-ekEsRIk`9i3X! zF5?l`j0skSBQ3t51xv3gaiXSbm9+s=uDl5gR|qAIVE4}J9*IHKH`O;`x^yvO=uhSc zwoE7E%;yYo5O*vExM~&spcNaUuP=q?uUeyar z8U4_M-_r$6b&(YpOOV6nb>yp*Mk$-Ts-0_VkcOdc(02&zeLYR~gT?EAt$oHGQ8P zleSN;E9BYcUoy@>?!X>wrUu{NbZPrTtnXPZ+92G^SuLXF z>1nMN9qfdJ+Gu_3y?@-Ub3vn$TU*s`u9^Qp9k2Cu^Wi}6_G^LH)_VV#__th5=Y@c{~mjW#%}kojLJkXvQ%7qyv_4YeTS#4!dKw= zXH~$`D3>VygLGSKzpO}R}ayhmOx08+?*oh(&tEx24 zdg@^=HWN^5JGRum?im(mibN~T~o{~_nA!L<#$HtWp(8Dt$ixC z+vS|s+23q2ggxh)6(h{^CT_y03QdZcT67Fxc#hDbFZON zHQu#{yj0Xqft2e}>m!Aqc5$t3b?rBhrwOhT5MjlUvtn744>Tm{C|EC0cJR<*BO zsqpXL6^LFY?ufJea2XPqwWp$ONY&B%C7Z0`4ec=Bf(zzX#>yir+uRPG-3eew_bN{H zZ$o>hYsB{oh!1OYo$41%t6npm^`kTNwPtgu67iisd5hvd^pDd0FiJ-Vq0aU{G%{+{ zDDaiWrmuZaCUpHm9FpRhOV4v?8?PKbyeBccMZEH4kK6M8l}qIj`L>`KoiyOHN^Lry z2cdVJ$vGdM?TZ>+;fSBnehrfL#1qu=z0Ccz8mk{`sL3f^P2BSuX<)~(`F=?4Y5-x6 z`}Zq?jsQ2Q+|2kgSu)Ox`bTtn{^^xA#b0_p`5{vd@h7zYoN-8ao=u85MgQ5ij!$VR zz-Wgw`Pj#6YKk6na`GQXX= z!X{<65nRhIKUeK28P!1R-c1?7i8GiB^>)qg`T{(Jnlp(XPlM(Y*j?N!=xKQB#p_Mq zD`@F0LHpo6t(n$8V=tN}hvbe;n@?LlHl zzs;!iSx&@;(u(7H$*XYf>(S@&P4qINi1K!oe|~jT=J{1!+2>cC!SBJy z=U3OHpI=Qd{&ICl^2^mX@GnN zpbvEYH4NNsCm!H7_77Bu@6E4TJh%r?)Kw&E39kqWSiS_wO^sdBRX9_D^%g1$y*GUv zcmbfBB8#{!MU4ZTsclBVA5oLt{`KFYZWAyI)8enok9g14E@~5i6&Y~=rwytX4mfXB z;mu3&6NdP>_I&E|=|PZrb{68Z>p-|B6|n2K>$efO>%SXL4BHLe-2+?{zu-VtJF*+I z8@sy%J-Qped%@w#M)2-iX!x$jZpd!ZE}jy)o3?v+H)}U_HyKPL6e_M{vfWKU3&^g+ zuG6kdX{F(VHIW8SlC7H6?)%QyqUO7){3Ee%@yAWqgN=4aa4!IBdh%sYp=x8;=FZxu zD~V!nnDh9TI~l{<0=3;;!8Ei1AHA_sy>xuJ!FWeX05)xF9pf7*zSBf#k}~R%kpD%- zZZ&K$stU(Q6yvQ^b}#P!PjI$l43k@>2*`NBRy>3kvB4{3^7$QA!8cODWu!pqN;-yk z&>HptJ0EV&BFg>I&|3*wDy1}@?K|w5BO$$M?0tgP{;1x@@i}_Xvcc~Z35C!#&d>r5 znRb3u0+ge}9viruhNn+vs~m~I5-N@x|28{iB)=6Eyr$BLLZ6r!{#e*R%F)`{%)Fwx z&hV>tUGD4mJhOggJ!$=fT^$d)l))Cgmc4htVZdVp$-}+F^$qvJIja<^*-{5tuPZ`6yfx~YnfLEJorWDhR{q5{y&D!11_mAisQHeMcjL2R_>kKvaHnHm7`^um8Ch- zY&*+rXwKXtN159+H4|JQD6(9jC@LZdqTp!PzxuxqpZny)gUj)8Klhz`&OP6saFm#; zdr4}pN;078lHrAk==)2|BK|X9RBp=jeZ7g8&{ZWpO3u`kMe2`<;DWtBCk(;MJ$;e( zDc@{=f$wU5%F}7?)4~qU_V&GAd$r|3gdQ`q_sYs1Ci44Co}2(@o%nrdgd8NNFBhbJ zB?NXeP|_Z1Vgybz6Q(W~cwQJiDwQ#u?@uy;+&t zo?KZ1DL^c~+NbMmEE;=MU)wywdj0U!kf`KiWrI_RZa&`Y9=l>b>Fo-2i1JR&Ef$Px zdR{=O>F*(lkl9wRA&L;Fm3qZ!CdAxbuH41v64tF6k?Z$R{$a!=SnP-++(Ka=NPpVA zVh4OZ=$F}Mtl|UnX)fxYKL()@7dyfQ?}=B1NJu$N8(Y;Gn@)qx4$BN{9|2r5>*@P& z+iCd2NqfjEUnSf3jRShFr6GPUN(CMzL(}U92rpI$hMrs<0@-sdJm?VfGq-nB!?Thp=BRJ?6 z$gXJBNV#tL{xtaK3EB7~;iWFF;qvjD^$_bOTMeO7mm}e_@jp+zCnQL{c{K@sHf>jQ z%xKf>vD5?DJ)w8uv4bme2H=M2Dw7<;7bY#!<&`ewz3$D^=e;|pKTHqDzMp<>(lM>B z(LIfv?wRhI9+>_(ebdm^uRrhS)%&R7>3S3FbbsFHv<_r!x@;inSZ3oxUlgGzp-@yepyPc6MO?EboclVXKD(e9GnYu>s|wHjoSY}OCYq{ zKaff>8OD=)se^Ni4)6pUC}xSlG&`-``r#TXasK83hpRLzswd!wb9Bv8Bm-^~l zl9@BRcm108-69-xO7B_N4Vb;#4&+A3#UvR(LWD#OG0Wp2p=6wVR6PqjX{HjN*psKi-O zK6%B&SM7f*;retFYl`)W-(Q(Xv8zm?m|ad5o1z zW>K!TUTw{wz=^gEuP7JBM#to^%SfrPprPjk0n!PNz~3XslPf5M5r?$O&_!jg$n(jZ zf)=&y`eP}2C_zH~yUTg?h*K?Tq34GFV&J%&DA2*ab1mhs|z6^t9g|k$#1LvtNCS*zVu1i#b;Y0aKiK|o%*mWu! zg*0`@!n>K4DT$|l>&_XHGo?+XHXX{f!g?Mu{Aj(%Ncc$%h75z zPN8B&h6lt{o3By!Lc6R8UQn=|a>73lKl62xz1$k!NNo``qdV z=?V1}^($ih)g$Wuc(HtO>qnTs{57q4OoKjx& z7}Zik7EGiT8Z~5h=2*SG2h(?CC206ish!rdRQc0v@IdCVnO8nzNu#Cf4$|I`y-ex` zm_^-Z_ngR~3Lg>^9f2dJ)~Scr<%jFfd4y}%1F(pswD)L$0j9( zUz;hVs@05!L^L$svgoL$a^$r{-%xqc#h!Bd_p3Yt^Oa-F*3GJXciXp8eNWGW+bq6= z4uR`|I?zsP>I_r*Bh}Q%57JBB>pv62_m5HT-|wsZ#qjxzzREB)$X(fEl=`vJBw#{v zudGEE$^VM>mF#^fXAgZ;c-i77`WW;Fqznow_Y;j4?Y#s_=7}tU7{;S|Jdxq6OVrDd z2D#%iofqx%pQZWa{UZ#&AG%!+jCfpMo67NVXhG>{Vk zqqAXw8#DW4){F$jiAu21l%&C%m&OYaTA@+RAf?I|;mVaSmfPxzpGuy>hXUp7m+_*r z;fFMYuVv3>1sVp!DE*=f|-!}mN`#8!U$gQrnKEu7oiIYwZc%Z#-*kb=NiShovi+#~UcN^*^ z4mVzHJ%S?5w&FbTo_IlmGe{cg40=3zP*xXRUUu$YbO(IW4(*7pIq(}XC3!XEo!?6n zQ4fJ~xx{rvqSPKAX{mq@%DGP?5?(et{rm9RMLpELH!JE|Cjs08^Xx8`GxS-|okESF zdoZXyY_zTV8oC`L-TB0%cX(jz>Fg$&hR!gUM>C7>f)~-7=ttU2v^H%W{S~c4Q=los z_tN&#w$b%{U(tp%9gUf$MMu9lGg_zhKlFvVyAALr;o+MNPfGWIgj@qobjzLd@^tfb zU-R&k8H3pR-EQtx9e|=ixsnyqhF(8FZh)#3@_hjnanA{q02(jS0+m}{xRd}gJ|Yd0 zJ)|d^0Gc!Kq?DY9fOd=RKtxW#K_`VA1_I=uzk`YA!RK}Tqw6~FeWihl3> zfpIYqPx7aU`6%lp8+Wni@*upI+m zDhvu8(f^3e#VrM%uZc6N?G(gLQ!?se6O-sW1RmMb*Gc}}%11h2qBEVw{v~@36%&!w z2QZGffB1gGh5GohLkEvyejr{CHv`pJ2B22_$;tC$`1W0u_uHf=5iS4lyQg@=O&Bny z2i}VL*ZLkag$}6xfRUr6gs!2v>30=ehn+?T#-wonOt{hmm`~VUwAxO!$^S+XzQ)LM#d6!lBEwBCK4a}Cpt%)b-TQE&B~2p z=O;oXT6RJEXh9;KZPT^2r&os?qTUaW9$0?=pQd$z8nE8FVALJ6@>Ci5!ZjI0uN^Vs z;2$dgy!z^Kb$DQ;n{n&$kn>FVlg>xlX&7ZVy*6N)gRji1BUk2;T|a3lkJ7!K^=m7i za>C=Osdl9W8vk9pKVqCAGo9z)JLjBqV(yuVf1oM+yqvw>-trLN8A<=Zv;8e{U!bd! zeUBFc!phQ2&YE1B)57&V-Yj^duX)(U(MgY125VW7bDVS7y$-LNk@22RNcCuUcxFP# zx?BmdGqC%egheZ*dPf9&IMPh9fX;WM>P1_Lc;1wmH;3Gt z{3mT5*iMq4PnT4kcPTH<)0lsETzy_hN^@RkUVC0$;}>+-yyp8o^UOh=`A!p;a>IFB z3*-4$H`=C$qJDZIrmtCS0ef7e2cFU(Vw3*HASc@1(~R1?l0s76YTpY(H5Pr;b#x)? zBLr|rxhoh@qc=uA9?5zLO_!9Bt=IIX6`A?d-a!63>q-XA7f;71z~#b(&&-F>E5k&hd{_WJsxVnflw0qiBmh8;Bi#ci$&>ymQrSC+j>(C;uhRsLZp1Ps{NavY% z==EO{ePRl`B=tks6SzyP3f0a@e*A>K(pNH>Nf~I{HGLfS0p9SoXX4Dz%m;_IDlw+c& z=B{E{*LI?iF(gd?Vln}afas?<_ooN1O3q6#uH}2}57yVkj@VhD_GBM2kO=SoiuzC# z76$ls60Sy-(Bu0xO)RDA32i1k+3hfVvj)7CP+7H)J}n7q>LlEC1vOc8b;y~~2M9RT zA;Nz8CjyFKMIR=d7`LPMHu*?1rN#)iU7hJf;Jwc65s`Do5?!O=H=~YsYbnnVV3GH{ zJ`+NRuv6ywjtFnLwj-BurKLRs7ZbM-WaQvmPdo(N8Tj;v^e{!B*tN6 zx3m<-4Nz5YOErV;zlD$#7u9a7xz|K8gAx<9RQwG-CKwwxmO0}_iC@d+?ki%Is^#%> zW7eY`l=1OgniRs->io(h2VYw#eZb>zh}wLz9fa;tund%!Ia?%Bp`bp{=J+i7CsV6AW3yQUf4 z-GJsHchc2lcZFW79gG7ay?}ow1fte$W!!+A8Rk~z$(cxrLvO!aAA}~Bs%fc6PrWO@ zQi@KD(!V@?L{}KKO<(ewclXYI-2c<^loP5hOe^$OgngaHP|;wUlb`w5)~iK9P{Yc*H&_mRSaZ{++1yjgv+9_3Y}59!x_hutft zE=pG9ZvaJG26Xc(C3Ci5K2?X@IQ22vJdZG9Wi@D6O^_ipo@me>Ew~dQ$nQ0^B7?ky z&smd)b8N|uWaow9)F&-ZTMm%B;`Iow3+X2=q#6?(=;Tlc(sD^qNs**H}&~`YTFp!M!CE(|F=at|on3-sDcy!{LARy%5p3wzbOhnyLehd0eT47;I5sJb5?&zgy1LLKBFnD{ zy$V*CB)m%FSJ(E7B93J1NN-sB(c9tY=>N5`B_IQz=IuwrTC+k8EAI|nY;8w>Yv!ll zA%D-?N)K)E?*os_(`ty-uRr2Jn5!|$;$(A_W`MLb+Fr^o|3AgUgYZe1)KrGpkbkmL z)+?x)+32e(lQRZhf$7HM_{TX6AKMEGq3*iENlluc%&ZUQoghd~+$axH?MRc_hRPmf zNl{G$LJrPbJP86>uNHC$wI zkI!{QPh$zI4tX`{{L_k^Pr~>3e3WT*FO?^HBT+P<4&?zM%-bAp08<>SLHiruc;zX# zS$|sVnZiO(q>z)uj>y%IUjZVf%f1~E_m9DHmBKqB@I4Lpu8V&Xee-Y~pu`ynO*5!C2gN|3x7C17==ojBc}Ndxv5yzk zoLY=5f%s9y51gc)0B4`Df?TtEVd6xcTQs8-*~EP|7+ot_S>3JHyw zW<&%}Z_V7Ah9+5!UD$PZy3$~#gWdcsDtww6K+Ln&45G4cD2E$bJ?N7WOM%5xiSRqr z%%LmPHzp{m|EYoF4JFj9`wd=7f%LZ$Dp!K1EbE}iq=xUKPbR*Nc6d#Je}U&EZ?*Km zqt9CwiF$s}yo$b`rx>v&(Tl&3`DT)f+>O#fmSekVRyQU_z2p8X^p4XTa$eduxFPGj zbf-`yTK-pKNqiO)%)hDJj>U5mZnd+EIb<=?&b zwcjDlH8`)Rr30#;@@{H6~|UCS1oFCls(^SSf@T?ubUNQBb7!2@9Aq zqTE9j(NZI7FKB*(b%||uu?liRU|#M)*CqmGKL^-g>0X2a$+9GvxI$xEIEd43lC=kFV!}8TZ=6 z8J}|BH2-efeVAP;Id`kW03iWaNwz@P!_EA5F)m%J@%wLy_-e>T;rzoRLJXII0|-cJ zS|MvmfpH3ZMO1WzF}stXQ?>G1%D1)X#IVVemTJS&G+!5&i}Z_h%Sy}2%Fv^XxzMT5 zz`oa^M;H%@%Vkla&I})usj%=+rAl5`bI337nW}rD;kR=8yNw+Vo@G3b{0<3bgfKp< zUtlQ4Uu1+bE-|E{uQARu!WcIg*BOzF2u2j+CL@Ls$GFOfWn5%PXNF4MWemm|$1(u^ zPZcQ6hr0iiyYBQJ?U%9D;g+zMu`djJ;h_-j{1;mT`91WFc?qi~g1g)y;|hbKp)K`S zj8E>FQXk5apt+13#vxVYpKk*X#CT3v5R!_f{7i4XIn*TJRr99(db4^w45ydfg9@W zdQ8&ttCNMm9*?TIy~}6nMDgFpnlgiCOhP}*KUwY=_&$~~+COEy{7*s2-SF-9Z6$ZJ z<(eoZ_X>#BvRcldpH@zPWAySqn3iO*+}ULZxYIHjN{4Gno>@l1MipF^|CGOgCL2~N z4S~+Nx5M0kv$wL^(>#`kKt{evYTnDKp#A>ov)8S{-Pz}oL8q2GWm7@Iqn1_i%V(CG z<34;)5er@>E)#4+mgS*>2SmcgHF+p;IR(04MO1HCR;bgu9tHIIKJj_qw}XNQKVUcI zQozJzl%iN%xceE=CeSN1ak;9H|KM_iH}HCWsW*5E)z#awoZ1m+;~^KE2USkPtxc{p z&4cC9ua@nT% z!$uB)O<+cF2*jKX635UxVv`{B9;mY?n0A+8o9Q7fP8dtl4?+v&LQ7F174es_J~yr# zoo94&@Po^YIPn+BJP}Onw3c~&+9(HHYTDxz73{%$Ze|VR5*lEs5f`NlnHz9ShAGpO zdAr-3SwXa9qG^xEttx*Ke$@OXcr^bZ#25Y}h!YPmWznL-CyA=W47 z_4ZBpl|iw?BuArftvXEW23_WrlBgS_^O+}4FlRj9QPUKRng2wBn5X)72#KW0(SP`0 zX841P%vsvOoaOgsQdgLcOd9waQ-pXrPmE|B>cY$-ra2x+6?(N}wjsF^5Z-%t=omP? z{9?;j>1E9`@7gRDh(vG`qKJHATvY&No9Knh9*q>U z1>I-bxIJWsc_uQC`fd=G2lgf#F$0-%h|^5_${EDHrLP40d=SP8f3(b&DO4Mf?7*~6 zEntchi+7 zM=Y30q$c_{<{x>8CN%DWC(lqYm94TwZBiNibl#nhDvI#{;Z}2>#ERGobfsMgyiz9y zTLHLi_ifc~f0SK0BcZtR8xaiX)K2t%(Yh!hDJ0vAP;2TD7KMxC9NWEeRd~+|`r(B= zdsbG&(m#%0fs4qmygpO#u@ihr$a3X|*#4D#u|lDni}a(`D}_Qn9(!!P0M6-4A@h}d z_1`_}(m#az0N?D`ib{k#@U0#zsf}JMJ}XZQ`-HFe(A7??=tBC01FnzSt1`DmbRhr> zR|Na7^g_UZFkd-cQ=*pRun#HJ<=oNU7rDCNg2_T$){U|JYYbADt zd*trQZNO5JP*VLbv4<;PFG~ugtaNsEsr>;stX;xb@zaa84x&Biz3l)SH&i8SCE#Pq z#}%U+(h6SX{fcyb@e0;n=$+agCh(r4!1Wtk>0jZ74z5Vm z!}i)gi&GC2nidZ~Ee=Xm(RN^6Fcb&W zfqinIi?%Nl;$PT0luEn>&M5+1(9!2HA`-%CpkDQzbGMNf#i63{!rFlL?H=JAbzM-@ zQMr0Z&&5xB0ea{@fC#DwI`rH?LLbBt(FX-x%~3Z1b=GS;7=pr&83C+NW6*PTZ3h!j zLeDR;pSl?mrl9qGW*}*R6lw;V0>wF)gWdt>Eda8rC9n>(0%^b44+;SpNLT}v8w_M?A4lCD6an(k+CXe3h#vG@>KXq+6)l<2ony?5og8{Upwz#6(hr}AJB<4n z!$ssxW=#f7>BF`VX$_%Mwc;CyW0<-*o5Gy=30*vr;B*Xg0wv#cBvMNiIlPQ-OeMRX zM*Yq^i}D*gkGfn%Kp!eHCVqfXhh1XV;g?Z1Zl;#bwG8xkFxhB+h$?ru^pE6c+ep-+ zM4mVL#+CQFFh$y;gi^=jlm2?mCuedJ&O~(j#ZPKJRmVUFX-E>{@-adIF%T_5Xi*zR z&WxGkne}lE!P+blC)Pf@?_=)^y_WPF92@n=AE5%LG)m6kB9uk(o-9|E2g(`cpPxDD zi~oT*ilWw-U3o@R#7-}{#Ghm3HwCl$S-z-+`b#XSS~s*7P;Gt5q~S$4%e+v&KZ+F$ z&>~`4p5;iy9oF!0+O9maOQU5;%wi%Gr5S#yM#{7lGp(3n) zlUq%0qYfMUk2IMK(i*_y^ZRyH5qo5oN7UrJM{2+$G&yiG>hvrd6SXWAW~(!yyJxzN z^@cT}TgTGIZy`J<8(Fu8npt^Rslhguc4a*dg8aZbOCOr@V;y6CV)?UVk={71iD1@I z%oZYMEK(26+TDO*$v0^%XIxBbxXSWtdLTJ+lmyru`XJ5i1oSj@LiVV}H0zVzCDad( zJFGNTl4U9@#Xo^Xeq8RvV13QbFepEHn^jb`q`_g)YtZOcy|}nw*@b5%mYb~iX_62B zlNh9Z(Dm~umOqb9g)EQQmh3cp`?A3>vO=G3@}TrVAc!v9?}KYG#bmwX5&~UZ1X}zEQz&hc!O2W zE@6jw+OmJKPuRRka%BHyZ)Jd1fidMd&k|iFKmKfXjQx$xeE-+vCDx0bNuL;vesGfA zG#3{&J$eChtnw@PZox^&-2yM0n{nZ$H{KQtFV1pOm+{8#eU3QWh=3{fX&Z=w!t1|WwAY9 z=dk@zc-B0lRPAKbclL+8=aqDL8GGB)o;^WsJaIAf4$EG4KQhTuH+vOr=eK2&$np$j zu-+N`xkCU-5pKd;{K8jbP~ZE?4sE4JuHK4^Ts_I&l-p$0OK!7vWjl?XUmc%ENS;SO zbi2R~dU_N+LNi$!dYVfFc9E^VWs%v@1tFn6b%!t+s4T*f&eKDXRC#*9h|NuZw!-ke zrQ~GKZbH;+m+bkf)?~*!GP)wI(Zc43BgeAew2)v-BT*-Wvc=8JK!*WwpOzqZ=&`hH zPY#(`(Yb2t2vrnsPKG`uUT~}h>%ZzK+kCOV@1%791WeJZ?3AjvA#&j_=>5EV*=0!C z5$`9&)fsE@YKNho-3Da$*wP??wTV&m-lS2;_wP-5ZducadducUbQ_hQ~4YZovUfMUv zUSJm5OS>v;K-))~mfomfp?A<+v^d<5<_C$A6QGscXPN?&f1w{9nQ1~D`Gfv;9fD-a z`Yzefp3!8HBEvo8UokCO+CdgtQdEbwEUiO(Dyc(DTi~Mo zAUd?TE-qS^_7~!>;J`7Vk;1rWABYJ}uIMv5&(nY&@dpf9Ktcg(8nIrqch))+mJN86*zD8J-h!( z-{6etL~&>)F&ufC7AIbJFZdQGPwF8@FZ9SEEsopuWR3<+xz3Tpl86VVaZZs0=;xdb zbOy(6&XKc&w&7F`6>x4%S#q}JKcnTqCcyRfnyTRZ0GZHet4z+mC1p4w%wcYW^GG{4 z_%9@@;4h@3Khjlyj3tpt>4VMJuq4{99MrDoh;sJX32`JiEu5J#YHv{!7wL{aKNO1^ zM4J`dBum>-o-WK?xtySb!h6`&uBa+&15gll3QzH!F8XC-EBxCrKWS*;clGhw!e^of|;h; zXm3scOWC)Hat8dqKXaZ74VdbZ(^@LJC3V9CBQcx`%pZA^b**k#3><{vlM7ebS80E&I~VR)@{!v$(60Yr{njKHY5M z^SGIog8}1EsNMiGic0^W`4RF-woX{yBT-I{bYQ)+39Xw*Xhw$(_!65mKJHb z@-@WgERXmUmS?ZaNFaB6SRZ$IBy+NRsv>-@O9H6_He|bw!CObhLMQ!M>dTGXABdvx z!`OXxsoW1-8k@(>C8lvfn9LONNCnFlC5Nw{E2RW-+ec4g%Vmt5I;v%zF-z7X-CPYb1)6yOkb^f)U&N9%!dy~Rfxr{nfTBZVi5 z?e(S#m<6>@ZesswvhSw&wYI!FnNZbt!*j6or2sL28&8i*oizJYJQY7M-hd!a=p;8E z{MnqQfg2UB9c4cmNk*Bys~n!itS+TvMV2Kwz&$g!l^l!<fcdxibKP@`+!Mv8hj&Wfc(-65 zxV2&bTswHM1G`VVEL+?%cuW?(*?n!eaPpZ60t>qJOX1`AV*OJMZS>hj^Fo${HhL30 zHMaxVi@vWI-SKg4GDAv-drw*?uk{_KQj3jI+%Z$Or++)|W3b8jECPubUPsRL(vgl9O zJck`H)st^|EjGX)WB`*$0hlyT@Z2j#m5{)<&Ou@Jm{sw+k&Js*A2QCas-&&;#8~7!)<5Uso=W zy+0(;&AR8@g;^tD4^JM~sFWaM7dZWEhy~_c(fu15HQ*`i6{X|68!#%i-YmS}^^kVq z+o6HBZ!$j(@N-zG-?d)~0jR|_P5p!U7R{^JN3QHOq!wolp}Mv?+;g! z*Ewgm`T-B;6-LVPny_()`sR8cDe)xHYP^PXomjI(O`g`WHZR&QbF_X9iS2Tim+uB| zCz$Z!lgxNENi*SZd7EQbv`w0UAVRf1Ou8<*Bc;iicW=0H@CeTU{RM1*7T4h3n*^Jp zcOa&~sOaN;hJ50g?eAS1fbK^>Qr(YM?g;ECmiOhM6i@Jez)tZhrxvjChqxtuuty=DarM{?UcD1yE{g{u z^#i|j9`8(^h*<%z3tKp;rr(3DTVs9*~&?!^+CA5Lc;J8x;fcy-G;YA>vyZ~8(Wi3 z-&Us*I2kVMO}q@W)ap^#8PsKK@3=XUgXjnimGB9k(VZpit|%(6*k_jaEn|-7H^zxb zy0ggpX3JgcqBD7y>Gho#oBJuBu`uo$4PimcMD!rc4AhTYzhR3w( zY4MD1?&8&ORM&U&)YhX7gA<>(5S(sW>8zWs+sm4+$0?JV^%q-O-rZfld6JSgcS1+}MycD89|RDLxfPaB!?M1JAt@uktZ zSa(8j0T7!XJ!`R$dfu=1opRx6{gcW3(H#T~fN93ErPz`irmK7jf*b@%JDW8sO!^O$ z)UX3dYPbPY-k4lw-Lv34YzSCd;vC6&>E|-}cN9)Pn+&kR6A`vqXlb#omp{jjHJ*{X z*YF43km?n**Y2CCEV2VHh09uXtW2dpGqY?cWqsndw46dKH7nsjyz$xBtkLnet=1c| zNa=jFJkk-)dcgW5(seSBYl_)5mCxN;e?1{2nlll`iNPt`n_<$EH^%-Y{$6K}Duo6` z3T;p(pT5wM=8am^6|JL>#Ihqd%vL9Kr8Z(VU>k%nmPiecEuyh*9O{bh7-x7150i4M zyI{2=YmSZzP4+FjHzLNeC>k=>eb+M7HzbfZVESXnDee7tr8mn2xT9mO8d#hss;t#! z!=w81*uJ%-2C-#M7l`+`;qj^v5Z!#=YK~XMsWmBXTw_-(NFtT{B49r;Ox1Gs+HlF_ z4n(GZ6P!sYzGvBhU~JW!H>XK8O&A{MuYZBO@zwnA8}@^Pk&LW``4q`UBEyF%7nba_p|vK$uil7QciEs5vsR(}`VIGu zQ-D{y!ZmkM0EOX8DF!#g@mDt@l&cna%st2urkhE!W*q+4U`-eaf7$8`!4IOhln+%i zO2D(K%a7a1q~h2I;%6$^>#`FHZSNLsGUai%1N zxpK#``uDQBvX+)e1#6Oox$JR|E zi8B)|2K`G}c;C4egQBH6zDwp9L9@IFza>vo{tGI_2SGyf&fF?N1!l%fSX;S6)$&n_ zW@0GC8oaP58U6;}WP;=i4Bz3y%Np=9VnckT^8n49KiJofi|0q+@9=%Fy95_nelfm- zg-#)3V$i7fh#wNC+m!^dkWRoCXjlra8cX}{>Syp#=N{wJ7oOr> z=r0AO`z3CdOB@y~3}oSxpteo*;OCMp2GRw!{G&YLsbKJTSUvw8VvJDk@|S-_^)hS% zHlG+Ia4&do(Ig;%TLf2y?Y-YjGNs^xoCepTI}mw+u%w~@0aq5hI@yJe76=!P0~#Lp zhYUtL`|k6znPh$}UQh5qU?4~kPyj1u_%D5YOV3EXe<_%M2JMhvUU@E0sL1X{3O!ViA0UL(*-@K;o24+jX| z2|D<$&9|0*3nn!x@mV*mfD!3Bnv*^wxFRs{j8lkSP*CN9k%Ic@eu26mj}R-s@rMQX z__v21@b?H3_+x@5hP~Sze3GEt=>a~S|6XoKozAby{T`Bx*O2RheH<` zGu7f3>&Kxeh0?WTX#Xle)n5IwfLeW>{&Z8k&nL$q^|#JH54rBK)n2~8!5K~KI zRXRW?|6}rV;*ZH2X+zlwu#8=8uFgY-T;YCvgf0vp(VRQ=YIn}mt0OH<$6Jp-zIX)n z0+mncA3rVX3+@~!CIr7dN{Ar;MS@$;Hl@>hvdqU07igeYK#Ae%*SGzCbv|f(vzRY6#>vKW)Ct4sM+(_{scSRZOfQ_z>(<@+40Yj_+?N zS}}YUmITFbqF~3SrZ;!gCpXg#oTNJDjp)__Q@Uuo{+4CY`lij$+9qo=7|h*dZ<=jc zMxY7I%?Ar}ISZSHxo>Xwz&1Cvp=>m5GiS;)3EHg^>NCnNeA#4qU@u%hQ_!5R0t=$m*s!eg9SufdSaFYdv}EKobjK z3wjAsn%>;*f}si00!R9LLB>|f!U@5FtyIWC`U~h@ne>GQKbiTocoDGcR;l6yK_yW8 z{8^Jfn^ESXh@0{!x1OBy-+J>}wmfJ{X02D~?3T>t`7MLBib(0LkgcYs#2(X5$+RHSh78d*~f<6^{+*+}Y{P2|vln4!Ln^{KAiuuA}Dk-9%G5Y0Hl8 z4E&~U(~fkjtqW3Hg2aWHEn`b8A%ZZq<*QmN7}NP=u$x%0)w%p^VL`C@IyJg%D|2B0 z?zz<=|7SChoV(x>WDZk=2ydOoB5;oy8(KHjDa4f4e(ACiqk>Vk6eCH{S7^%&zIE> zx95rHy0GHB7hK2HzaEEICzF|V^(K9 zszZ?-OUCC>^ENha0$zpq=J7tUrVehs-GX~dcM{) zzg*KY&rN8XA3O4!^mFX@oA6W5n*yfbb>n$I5|WzE9lV_sGD;wsqJfoP!hVrY+iwQ< z_kG&l)xTr5tN)4TuKwl_^meMp?X3$PBijU7-1cvC{C2Cbck+R;HUY?#Ks=bM(OjhL z9nsLC-jvcYlBpf>t#!G6bV`$GRe7y>v*>B#5Y2;dY0IfdZp(6^EB4~Zf!*z~{;N)e z!#YvgFfq9TJ(xAQX5C5Eg(w14=(IUaZ90%qiVkFVs7=%lm`zj<%=ob!%ocb1@)mE~ zYQa8*zfJV6I@uk0usV19%eJ-Ku1&?r|F#clO!ytrP~UmtUp_OOdgpPRJiT0QCp&dM zaS!3amekHMG9=E3a0lW>4gy*aY)3s=s(1Yb6uE9cs9*%NtbDCOs__S_I-qru#cHK@MjMAbZ zSHJTPxT1o)&g36EyFDrg{_Y@}kMfKNNl+ugT*+BE@z3){Qr^&Tl+jUeVSgU1z7qb~ zuJa8z=6)~iv5P->e(1WcaPZxoQuMuR&F-={$}$aiE@T?-_?5iN{>7Nt>6|>+Hn)Qo zJl(O|S=*Ko5OR#+%w*g6^^xY{1NPN<>kcHN+0Pny+xfa9e#vR6 z<@f)Y6lkC{H>G83A08>B;?H$x>g@|<%V(dossH>ns_`=_O1XUl_a#|>Cfjpo45es= zC&Ll_Brw0B@`;@lx8W-cbupmtYBBj`-{-3NmI8^X*JVbi`Tyy953nYlZgF^aH)Yck z5+D#t=v}H(r57m*h*A_4rK+faf`El4B8a_UK?OnViVX`Y2_Ve|Dpo`gv7*uwLK42^ z{oVI@@BQxmKl{w=?97>Vrk!)<>jz6eDDC>)_W4NNk=T1_q}fSBC(1_p zF7m298;Uojtd-xVD=#}zMe5!t8%fT&`yz+rJ)p-NZZm!!phaBP&MTZmNu4p>~XL zGCN1q&ufk@exfznRz+C6msH+U{3ztO(P;DFnms{T@QYPj{=Vz`BRxMm=}l>z%K4&Q zPfs^(=Uk74L8dPcZNdeX*{uYIJ!~RCj@57e4D0nyhl$->t2+=9uw&F=jqcUVKZ|bOHTXE%JGx8Y==f!{ zf6dp?U|Nw``(_FGEq2e^zGD)y^V;j?0UsvmCGTfHR277=)jbrIKMu5R+qp2s-9u@<^) z{UEPUD<B zx3Dy_U;ZuK|1c?Ft1y_BJT`l$S$eYZrC)ml%kd295&MLm{ZV|f;&A{ z4DY&6Yfgwz-UGcB@zCja@fCegEUD&1V!V+YZ%xH;p+lGRMG)jbqy%o=IlJy^$N0@HXV#={FN-a1OboYo z*~U4#iRAy|-N{7djNzVV7xYTM)*cW)B3$|W)bB}SwolH%uR)DoEp1Obb}4+De9kO+ z_?X^|{d0C+<0$tSWz&~;vhVG?BxTD#j+dE@SC$x$hdk0B7rtOL`r=M%vyLA6(RWC5 zyeV7R)X6}7oIA6~TXh_!*1xQOdFRE&j`HtD=f9rgTnzj4;q-^oH$%-Iu=En~3ASbS z<(eAw{qN4@u)d;k{fA*Kq;uTcFpZe$c88XZn*&J1NrH|Tu+>%27I_*63 zpm^K5iGa`D!N+~q{%mdA`ukzsOScXFyUt}@=uu5!?=rqwaC&*!En2{FK50$y%VN9Z zE{j4gC6<+sd*l?1Sstz!M-GHs3b}NA-1z+DNZXdq;$!1S#t)BQxYxe3{d>`wq~d+! zlJCCp#pB_Od095piGY{@|M-RVN$JGa-0`QVM;?U+Cj!zVNu@Un8m0$4`x@ zU8*BOq9uV1og~qtPKxMVCsp*eQ=?#R!QbtOXmclwBZ_dM^mrwabbN`Kd|XxJesJ!p z$??hYSAAPw1Z^&{*-Vwj%uaSF1<016~g=wb(z}^z71e>e0<*S3ZhQ z8@I&jt{IQLy@D|dyXoFZM1!0~mhKRU033k79b9ACn$miz)nBxbyt$~TM%sNh$iFH` zv^-_L=+5TUF{_q^q6pEuTZ=^DqQ#=6q9vjzQLt#4XoYCGXn`nN6eo%mjUR~=#fTC` z38FQkRib!Nl4zyqk@0HLT2Y!PMYK+|L6j`Y6s;G9i84f6MH@w%MOmT{QMxEcl#Rum zC(^;6Y)xt{YxNTqivmPhh_}c9zf*Kj#1S159S|KB9TgoB9T%NwJtjIKDi!&Pc8N}l z_KHr5%0-o;GSM8-dC_iBiRhH*vZzY5M^r7kB)TfPF1jG95M2|U5#17<6;}e4^Ruz+JYGS(htp`iI6Mqoa7IVcM%%vv& zE$Snr;>hBgCf15<-9bevY$1M(tW2;F|9yHP-53gVdPQvSo zJ$0Ar8hHGuv0a;hg^${&;{3&dJT>tT(JS0`JR0*&#Kr~k+~H7hiAM%nR^TokRGcSv z=81K*?-)cUAPdCWn-h>M`$XsmOc$@wT`qo!>x8h4ffYmc24ZPrAF@h(0PiUd7RSOq z;#fU%YP?uoSFEGuxwinbH;-VseoKcG6OeJywKf(5vbyEBJv|vHhU8lGmlm zvxRXm^h;+aKDVGM;;qLqF+mTCRuwbE#rTh+?;htvMeZXyi4d$eq=#k=zo5MN#a@)&t8wi6HPs!qVR z`q6O-C&ZnQins)`55j&}zbiGR+v3EwV&cSSLIQz2@fx2%xDY{~I4#zs$Dy+(dXwy! zwjP@FgD?%xomlMYATEhHAkIKnBRWOa8NNIR+&b=Cv3i6lZn2(~t~p`&Y96x97gzUwAOEiiJU(J`4;qK2u?UTLgn&*uP_Ih%n$_=65IzLcJ1g z!jM}y1mL|=3lU5Y7Xga;VMrj%rYzP9g-Biq$iPfyY##3{bPZ=|a~6_>;=qjw9LOZ% zKplj`(!qiG4mi+>;=w!2II7@*n<^d*#^SO3@IcY)eIXvCQwTr@M*y1ocxaHoTSUOZ z2*3&RA{4M7<0E1TSid~76lgi?+Y!w@WfTd2`~x62MOH5kw7Jz1YQ$Jn6@toSUQjZ zZxIO)!VbEvgxB*(SUfv@HnE16y7?#uAA*@}n6I40II&mg+fn8bnj7tIdj6?bq3>OrjP1OAI(u)Et z`gTGEn3ggHP#0YRA9;jD-hSQyYcDDw=~Drj6pq0I)ABqqslM4tPl(E1ZC}pWIg!@ zd$Bs@wmCGTVd5JNFR<3TkrLDz!HBYl^@Z;{aP%bj+7M7LpW`cA<+f5hT>x5evT z<{YIIr~5Y^skcce7T{Pu>AleX6}Hg~5)dt|^SA+Ir^*0w9;c<1fXL8I-sL7=Bzs8| zk_-E*q+hZEZI<|xTP1G@8_-9yh9$L(5y=>49k;&X`U$1%PBedyDcJ|`Ih}dI3sLI;(sEy=TVuu`_RFP=G;cA+>_n3)T?@SkKG`oml&nN`fcl)i#r565GkgnQw^g zZui~poofIjS_6=fq#=RmH=91=wfyF9BW9VycrjtA_c{Je+*6%dPm41UVDG$Fwz)z~PavLm) z-1KhD!I->q*Ai*iBpDo(0^lPR02}Ensg>qOG>dVHv_M)1&hUzTuPVSZj=3vr(kls4 z37)h4*#`nxyJdM%nxSrR|T zSBS#E#xGs!uFzxEL(fogpr(AtKW2U`qyVSk&min!ErsOb92W_d!TKqf(DYO4;S6a4X z6WYc|mwp)WM(5(=okno^`bM*s!b;q?(mS#Q={?z9*@#4gbL*fS@Ie!HFK9h>8}?h3 zFdIv-+u+gYAU5i>_^zPEir}A;6rN%`r;+KR{05?{CMzat1mc@i_WBf`%%UZuFA2^^ z9+Wmxu8?cU{jySO564XXIJ4%L+KCnXcbp#9F6K+pd)Z3%!7mZ40wRsUflrWL&eK6O zIK475+6R)boGq}N>j4)a@*>6{XrH?T?I3;!f%q(tU^_**wsJwrVtO*^5xJ^!6T^?i zJt3i=aBRT-V{8DQEQO#HR6*}m&ObY8SE}Cs>OM6S_E1ceAvv(0bRyUux z4&)R0U>j@!4tq&dz5|w?1DUhDAXhS<>V0_54h7AFd z@>)}Dc93T%q$P`F5O!{AO!ymUK3Z&f9fr%zv=b;RDK+Tx?hv`9yv#mJI3deZz+s%^ zSBP%BpSoA-Pp*mK0!O(D+KpWRpAn}-N|Aq=mnxq{qJcztnynbDlP99dawWog`4Y+? z@F&3rG8tfgk$GzGk{?1(8f^Uj!0LeXIPOGhIz^&>bZ*UT3sgd?Uxg%>kFgAI1z4jX<9+X`AZH)aq5`qh`hg;uo~m-kt|pUQ)J%uTqbIWN#Z za?P`cw|CGVWyGq4str>!j=#j zGyAVu$fh?0SNcQd{$vYq2kR@PSls8>y8!zetpQk)FOkjEPm(4OC7p0;GH3V{n7L_o zD(>8jb2Cujj3ZyaEHjz1nlhehL>(>99ZO~CO$jS^<*TJofQxsNY5Jrv%;*FFUEp1Y zl*ymbj#JmaO@19uG;MZPwUMC*WbIl^GwcLCAjx;#B>>w2t_)X(l4i^tK}<;v=%j&( z^eqr>f%(z+K8_OM=N2VGVd@7B&W)=`>+-_PS}%2q-ImYKQAgzwJ|1+QUc~Iv27Cj|#f3uy-oPz?4M8 zzem<0jo7mmIl$Ou^hZ|jTsC#onF_JkEcU6X(^D?WXQ!OZ$v`5XCCA1UHmZuT)@{N} zoxDhE7KseJ)J@5JpiXVV!g4YH2F%1`{lMZ_DfKT$k*=y#@Qg10;dQPg}@)4CUb^|3z?NT@JhL||# z+v-fEoi>THniqL0s^4L1*`f?Y8#BeK3`DjpaAv0>!u^aG&@X^owFI3C-d4b#PytcW zJnt1!A2K)OblB;z`!XwfEXxE9$5y*65NEqo{TAT;+0B3enlWEfRb7mx*#l`s6N0D{>h2GKYO=RoW7s>l%GWIUHoZU~lNB(+p zN(RXhIUXxVJs`@bOR+^>NL?TgLLy}xIBO8_P0GiXoddj#szM(lf=~3|+98DBhwwfp~L&=?)MF z5R;BNV&;S?ZW>CdpzdGqvIsTX3q^|Jy}k7D19%lNUu5-ulNi04fVk0qMP`8Xo51ol~_-Xe)&s4Bo_WSI?#YSMl`tUQ z8y0_1O@SFjFlYqWQSq{PsUp^U{uzaD2qUa%cf1q_Qi5V(@zmHJ28lkWa0iyWr`lI2|{Jyx`P3>!DkYrATMWRuY`)rxbi9<(!+$6qt!?0)aTA zEMGzaaXqmLfrRRA_$OwWRi*gQD~|M}M}nDwt&(D8rFg0%{P_->VU!|}VtSg1SPh|PM@ z&@_A_G7T>yID+F~ejpF*B=SHny)6x=x^%({FYB{a-8K;m=N4?6*t7CDp7*)Dc-S)l z1d^$87{w@uo_&gJ`8s4QT*TSa$<&9tmE$bPrncFEQ`<(=i^Jnx5XbY888e@ z+n2GDO#AeSyYMiyjj)M}Nid0H$TV*Gn13zwAN${ap%TY)la<#AWuaHaWua!63^@Z= zPBat0(g~GZj#!GdNW5Mje%r(geE$Ek6Y*On2zsBz^%2YU@+WGc|JbrVpNLLO^1b>T z1QydMNaTcYT5q59zP2amWxyydmTuI7~8#1Brcl4sE0IzBh#Jg%`LufRLY!9_BId zco57xq>l%LFM*ry5%FLn=5D?jxVZ$&1CLSacrdJ|N9e!%4g1R7du%fvL^_1)6F?Nc z+&Ld!qCZ41B4X0U7da03a0QP5j_{^o3E(%7Oj>D5CmB=A6pom*ry*d-%^l$(9>EIO zNcMv!bw^dQfey0N{oim;g<*&t=7WG}b9clK`UjGSOzI{O*v1KjbSRu)gZ`7|{|);} zZ4^*pw(%Hz_SFi`xuoWNnIFX8}}jU5OLLi zU>Ss+HxNJvYYY*LZt)1Vkuk6|ry)^XI&?H`hwMN3!?O_39O;f+12a(_{bxS{{sUmrj9a1g2D<$dUR% z|G))v+`t9+eiXn`@%XP4|1Y=;up0>GKtN;bGr~V`FhrC7a`QrexiO_GvjZ>+MhI4h zyMf)|5C}Qa&-zJD$MzD~#^&r%(4=S3Nrmb#IW-0;9Vq+*8kOi(=eAH$+l zL6PuzY~~&$%goiiH6Um3N$M)KdiVd2^=Q^YeG^n>-eKiPnvTJu43hC=b#D&E8C(UL z@c$L(-!W<#k#H6C+Uj!lAo(ic|DB7zQF@{0I5N#GwyJKEE%7uF+)4c(6Z$*9R`7sZk! z1NN}L?0>`Vz?n{YQ3O=`d35?KqXvurce;;eDVf*c@iSa35|rF6W?5>2GT`Ve12=fn z>H16_KbcG6gS)tT*<4~HX5Ok~Az?OEkR>Ju&%!tXU&1r5C$c7TA9{r`4cmo5QlWZ` z8)yJzRU@U!BQ3J6q$6NFZ7%VNEMDCeOY7f|O+ctu50*MLU};UK*&>@H9szQSiPj_V z%qt4?p?rmZ(rf~@dmCjY=v$R4D9lFvPAMY`Tbbh-W-9K~DBucM3;!u;k5dycSOPFQ zP+94YM8zV^h78l>N5ClUtkEN&dCC=-Tj(fN8VaV%h?#$C)Jcp6D%cES`7b*Q9L3yf zTGOTNL;Xmp-ZQ=gqAef9STHnXXqo@TRu~%_X+a zWzzdA|AFiS5lB5&_vv(|(|fBjmpBa#>?o*BK|LVsO)K za7QZ|oHeq>%(HbTx?{V(qSG|PD$1Poqligh1Tc~PBwsxaqiwA}a3-iH7B3vk#+0;A zbRQ*LJ)T8(11~MApuN(Un9L%`G7tYC#00&1d@IQf6w?1{t;68Y-0n2)N;bEk{}>IB!zrtzid#3%zAr$8|AE# zCWa|b)ZBswUdmUf?5B3Ago8k4AXCxFk)-5YzW&B8wpRrGqnrjUs^lw7!$ij1zWJuJEe%>Op=?T(0FXBRmP>^KB_2}|PyjMzTx81t2nivz*bM-4Uq$5- z`X*nRc`ua;)&eTVGf#&hqycUs>7z7>8sYOOL+UpjVw zQ21p=EZnKdlkP$ zS#{=^_uW;4dE+P3m@UdJ%9q#wK0$-#X+8=)i#Uoe5BQ0XtuO%Jy+t zZ{+Fl|M@)7FvIq?5wRlow`7_dk}~~fTnWpZ*hac1rrCzCaVl=aqD`EFX)(;MY!kQWOuy@+AzhiMG+bBJPrS77jsLiK2d*?65hoxsxPd(H z%26?liy$oh7ahurex*|j6^LhZ-J|V1^6`xr)tXz-DBiQO7WxNbxn8hiK7N{d%`KRw zN`J}2#3RT@QBlnf+y$td@P?nYak8#stSyL|`YuV!8?g9y4Pu?kE>emv<29#xyeqG3}0%crUTP z#}7=mVrJj39W!Ho6Q^^ZP7AxaoaYDo&435&COX7w(H3~W8R>X1;qKa{+M7N=L~%Y7 zI~=BQAkvA6(Tq03O;hVN_^Wyxo*C|kXRu=p7UN=;9nM88QCLNo8KWLSg`ahIVcH9R z@JA6E-HGw*e~{;oh8CLPrtv%>ik~3UtP5je$h5_JF)>ZAYw-K^;yFJsEr_dn-|0BL zHcX3Q06{&Zjpebe#>IMyclte0k6Q((htouTRkC>6^&`3s+t*!< z&}^5G)L>KGw5u-qHU9Fs>2X`m%bZ9Lx+h+)$6fCS7l^GDYoSJQ)A3@UA>trBhS*dF;j8j_pBuR}TaAfR1)b4nm+26G6Wh{9kU#cP(Fjr+KHa8^ z^rCQl9MPjGx(2@*IV1MwdRI=jdI2WW5R+o@vh-o3LzP0=Xp5qF238q-@JsSL*_!vp?T>b1Z@w;6l z_^_Cm2&{kWVA?U$JQseVj<|*(#_*@;`9Sp#vd>dJ!lLqU_iADUuS&0yctCt8B61=I z>(AdhNI1V4=Trxf&U2S}{VPh`eqdTK@AaIq7M*V0L|nndq~{{r{=4D&8RjYQUG7?2 z38tN~Q6C07D@imMBzs|8)m_`B6gZd-WAYFf)3^vgLLt+|4u+aV2&OH8fK&+rUchA= zLLnt0f~^TSP-!5T=)vK@GV3K6Z?&zkb>gfN4%2bK1AC04YQf|iN9JR<8)9^@6Q-+? z;f2Ta4e(gF*5W~ek0JpeMFfogCIEYklNu@{fPCt0Zd!B192KiJQ;iiF=4BSiJcOgn|Nn5+)lVf!kaXrnN!B&TezLYYefyNSL&Y z1X?j&i_GODun!@DUQFLY3DdXe$KHQekTK~V87!*A-uih)Ga&~re~A@B#&i?Nm@Ej> z$N&do$)JEp!DMC>AVMgB_4y-jC8k%g5AwRZ6Dk2&SeR2R1uH!ToViQE@}Pk7!fu|k zhC1x1GQL0^o~^&qK^?BprUHS!&s|5{?r_XgYXuwmMuIJ)}>^^i2Nnw>qd1G5!oQnX%8i z=Pvk$-Rq+4oJ^TgzbUWAhZa{9eL*UU78dK0r7G&UYg6uOQfAgWY#ml|F%8nr(5Qmw zAuH5`&bbutsfUDr{M0Dtj2&@8=PiX-Omg`PotzL=@WhG<7^+N+A58+P;0<)=lBGdA{rXS5^S}&o|f( z!3bZ?E>|#`gMdE_3lO!{2{#A}wnej6G#3I5nAB>aOWkG> zohwYdp$>LKQ3EwR#3Cs>uZSB}{kbUV2Nm5>jUtz-Hty|bdQS!{j%2`PSLTO z`HUM~Y@X77y2$u+g0`A&5vpy0>P7{H3^F%7^9S5AWdMJP>sYIl5xZ|k-Ry1Igpi@i zLvv5tY+ssBbI8^N#Ky14@+lk~!0p2!0SkMwb(m^B3-E~DU@zESzERKE$iiI6+U>Gr zdobHBnhG=Q#)VJ-nvDa+7aT2L8Gy|6V7|-BlzaiMW#6lEuU!!fmLGG~Qg)pOjj95J zI`!cXd&Rr$`jf;p{u(88%rE9tz4Ev z^XWDl73kQj_k6`6qmt|zO=-gc?025Aza%xO zcD)x zf-X&ux*>)GQ`W)d@|=Eadz#H(lH6(0vzG&?i4V?t1uVZ=UK27VdEAN+3a)tlyuO9w ze@%Vtir0qJ1smpTiH_?FT-b>g^=d}c^$iSVjcdJZMBwxJr~M_3mD!x%mMx0KbFaTk zh@SLFT4ViWJgF>e#=UPfb5l7r@du8lT~1rpSmhN{k{J9GTzYo4Sxu|j^$LG3y3nWi zjBn2Z`5=y;;=;ephFRhCKLbaJ8@-bTsjq)QUE!lSI!Y5m#x9rZD@NQShZc+m1GVh{ z@w!M{_`=^-cC#C2AMjeHzGjCr%uSa*p992RS8;>ZCvZMzWvGkEsy=8%Y zvCfs=He%>Y0MxL6bp5XI+DX__Vo>|OTJiWT-(v$Y;(E^%RJi*f$HPx$V1dus zha_NeVmz|cuk3x9t?nOc_MA4u0}9*MxyKx5_6i?4CtX9LU~NP|@GM%W@OraZvXYws z+eh2~w*QODC%DPm1LlL`FAVjJL-VrTyFT5SQKLQ-mh>=RP?nLn<$i;)yP49t|s?Al9^wP z=nPzC9wRKC@>+|pH*zRAnsQ#b(hOCzoHx3q}KO$-!?x!%GY@P&hNJ2NGa#Xj+CnX>?BtTm;N|I&-};t zQ+<8krhrG@f*%$D|BdLu6CgZKfX8lbmuxLoQ)uSQ&d3H-u5ZsEpl-$GsS7QdEU3wJ z52;oUy$rn5*_KP25;EUtYlFtrqu5QwsPV{U(0;eK;A%fZl5SyFy&`)^!BcPXsUm0k zAorYVPjAfo8!qyGadT3odo{~AOsPO)HYpoy-5`8;b(k3RM8o4cF?)4rUGj!I8lakp zt54`x{or!n3I~Xj>Dh?04barSkn-`wGeeE=7oTuU|0_x__;+5kF|_8Tg(lr8kJqTN z@pCiE*L}Nhj>{?C9#`PR6;KH2dC(qL&@4dnT&Ww0RBV^R3E*h;oZhnll*MPpsku}$ zUJnzMQ1mC0ybw^?5EcHMlgP?NU0wM&D!)+!jY@MCcyDvKh8BuqGiB|ZJKjpy zZg7qIDPALav-f!r`77RkrmEqboraKS+Nvz;DE5H>DihqS=e&ys7v{Ttfc^Q`w0eLm zK92P%Y4Lk2s!PS<5{PgNBA^}qTEguD02^B>#9Y(T(Nek|%PLSzq$A{OzJ{wjs~ zYCe5Ql6(J=-6QF{-Qrnw;h4}8s?LUv2*49puv-9{T|u6JENtf{1*Peft1$OQj47fx z3o6cnP~1b53ZV2P9hwnHN&}9A0{tjSe%fmTaijilvktZfQOYqNuUKT8bTq+urWYW)cO} zNXwUXnXM&TBUsBT3|t6^%XY-233iD?TxOA}gX{?bx@DO0q^!tXK%H>ad@^WF4f2Rw zpYQT@-E6mGvx!A6v*^W9tfA^-Ae;7NkliJqZW*SQkU(?U(Y9vvBAr zdZ_CKRO{^1`m5;ie1bPq zhgY;^;x@F$OUY{_z$rg`v$pBtBa!OYLO~BzJ(>D7+OQSMZDj?3GMlq_0)n48KiXws zv~t)1PQ;CwOJ1_tzh<|tEP4*mC$7|%C~6BI_k@3Xc{Q~ndvQw-eU&34Hk)!?_6GCvJM7UY$j!oL z0FCD)<0(SK>WiwHC2^CLrZPgM!Gt6MC#viS^IEZ56UT7n4ygJV{lILRf}3Km1tW;I z9T#-P_3#f!_DuVR~RnTMsnk_&>5B)Ui zh6X{`w&yz_p3iU&ztha@tIRm@tjuibG*58Q$B;L>;6%SL0DiDN-8 zKW@7K**=K;$+iivij7o?TRtl;HZ4w|rR4BqUY&zYTd3pHCie4LEV~}dKQGm_U*DK% zkoJtQ#;!V-=IDQxux^v}I$pPh4z~j=K9e(RyyfDAnM!oh?>|Xnx345s^70IzchKzMXQ!#5qV|u-Y30U0*~|k%l(#A zu3K`!Gv3O_JPru}n(G6jI}A{LAKjb#b<@MIn5bmV1D7FoAe8g#*ZtqT)y(w!uYTQs zx~cA!;{(a$y|*9g)P;5GETCR)aMMIkHx!&XANu}5K$i-bYC;7kAtzF(v{}e46{_AB zs!4;N>egxY-=lU3btCKbH`g1M)*IiiH|?sQA+5JiYp`-^uo)06^m^bn#Cco`W_Ag{ z-ny$MwJynF{T~{3G0b?a_RvM++h!g>HTnUixU!{YPP&8~6d9 zpDsd?PE9e9O>vu>5=xs^-ET_lYFaC8N>Xc1acbTW*_>u7Tq?bn>sf4>FQ|LZ%~S}v z6-}wrqSlo!x^;kF*FpcW*m1%&zGl)GPAY)gAH-aL2v^^a$%SJA;=PiZR|dqls|YtV z9S;tOKMC3{3^c@8Q7%f`s?{Fr2gJMk>HiwsNpWM|ja0Zdz^c8EHMIK!rziI#pVSRJ zZV7lIQ1gF!kN>ReNqh03cwLJNQM&6QN>Y4FR%eu4+s=Q2f@eo`UMJ`hm`AoulvMaW zXefN3_?YR^#Bhl_sx*Xm(}@=foufRiNs9Me>u0-`uSNKZ4SdDPy-PkQx*AvmA-g@# z2Kcht{j?OJ_5--htScAISMF!4_VBU+Q~=R6J}U5j^IweuuGxZ!Tl1WQ=4XMdPA1x1 zd2jup2oOZ`dC9WBP-p*h$;@498LL<>A79o*v+N~1_l2@r`*9_$DK5{_oL}qK zVGuGqa)DWA_(y|_7K)K`0Vj%nXF^8<&Fyi0UA5nE7fjv0Uk4682}8OBh*|+7{nxa} zx2kb0bzHACu3T{$alLv@#9m8Qltp;>X#bH@HL9y*h~D%#AOc> zn*>Bw9JOsZcvY!I+*I9g{;gWgTczH&I?%f)fF5{Sa(M2>V^0Y|(bToBOhOWYvK&-! z^uy5AT(1Yn3bUJwLrkbZ`1^jtl7-6IU835qjh$Ue;rF`Gnogw^hA+!>sPK(C$rfnL&@c7qQmGc&t;hgnD>3sv04xf9`7@>IFT$ zyl$2{9caq$X*t*GJgYZc`dOQ9U^LH4P2P||1%$^BuUGV{^?c5(Y9^Z|x;P8mP8vL4 z^2K@Um)8m{*Si`(RBPK)GadPt=O0;2Zb;CT=FslXXG{B$F4kj{rn&R#y%zQ>EwASF zd`>#u_xiIB?fO@K*VlT&x0cD^wREsyZEe~gzEbfw(dt~#$=FViO)XMv_B^A z{=WU;_nRO3&R+VSIe;hgaPr1gI$}4qMC!3Ae znpH1{W-R^bzq{|kyuQXAknP$!QWy8rub<6Z!s<`_e0ZfxaOF#5%P(UL|MV}{oa;|* ztyjL*tEsnm>uBA@dHpYU|9t)8LDTNW=UeME@i|Yr2N(lg-D}MXuKhL)_*4JvXU>&B zZM(I$9_;$t{qxVfF9W;(RGR)B->ua<<4;87-worz*zp!n)?W~)4{Ls(zj-j5&a>A5 zMT5L+NiC$vk8n1;VH~$*o_<=?&y~o|PL7WglOj$%!pqd4OpFMx)WOaccpt%(I1cSLzEPNTEa|tNq zk5yF<;a#_1iUi&KvClmHnrCf(72#MM_1Y+Jq`wO9wv2aMN6#V^y;H)%B3 ztMQpwjW|CySX8Z_QLTTZeVCX;xjjEoO}lu+$IUsyv2lfI3yg!xOnaE%NyZYPxqBo|vaN**eTV;zB*7E9n@X*h-^6+#?&TX73qdp9_SF>LkfO z#E(x^pG-4#3!YeHj}G>l4ptk#fF)DylT$sWi+fGqYv=A{5FWWKac+}*`CDmI_g+XU z&6g}z%!}e)DtcOCT!~K~+0wpp5<=GKMqSeGl@XChcxKAtW0a+KB@+6mq2iWsGH9pu4bge z)E30sg1{B(;gBmqPpav$5ZTIQr>nHR@tQBa$Zu;lFznZi^i&?uTwoj=l}*i7N^&KD zMJlfTKdg(h&mDfczeux(>=(RC&2{FpvL*byZ>ww)Xjj^2k`c>ZRemtNIA z%=x^Yeed#XQi(ZkT&J+VD;Oy>s|42fC};MzuAtS<_u{(Aq$ z+z@DeDwnHf^Zw@I#Ks;fEJ%F6$2S=;ZL-XT_)erdvHg)pF36e*W<%2P;-gh0jeKw{ z-kp~fyL>E_D3QL_Q*-elByS(Sp)CaGC8&5x$o-G3DGDYPI()8i(F@kLfhj;G>tUB_ zlqv%>yYk1^G{iIhTtS<+D@4K4sTSVW9XjqOEcR5csK^=m!*7B?xKUSobl&nYIjhzK z+a`lhPc9}Q9^`UM)q~m#$7*ksSzud#*tlQJ@X{X(8&GE2h^HdMuu5{>Gc@fU#Dxi7 zO%Ns%hs6pk@Xr$R5YJ92SUdn(x(3=d%Vk28$}($mah6V@O#I(~z~wPXAVKA^wUB)9 zn6j2)gRoGiNPn!Hs&;_nIC}^CqRPGy@6g9Qf!5R0#*B>B$Qw4R{mvnR5oU5|u9$qE zSd~RfvH&~qq)@@klj~A-hZc)a)A7mG-`|6FZApH-(dyp(4#8EHIx`<_0u7FU$KR4;$z5*O0#34 z1;kStW@)9GKRd`!n_rB60Js=~|C=Qb;L`~dD=?joULCn-e~mFNqimD5QzG&Hej)Ua z8Fr7?ntKQXVYwnf&k4wx?v%v67_%?dtHH7t3$xKkg>+JECZyXC&0dT_$j=?kf~FF3 z2FD>2C6UmE-A6PQfE-C%L;kc>+^lYAohk$8*7JNJDI)RJbp9?krm8(jAQ3q!(k<}i zICQ5B>a55WE#REGW?2CR!0&a}Gmu};rI=NA7_6xDJ!|SC7qcR)}PF^%~MYn^0KGXQcOJ<}4C}Uwasja5#rPpH*e+SV&Q5w{r?cI(5hr zD`BxSdbv8!2~P^6CT06#UCgo^BGf}(7} zwJ%9#seHRL`$+ekQUJa7gv8~y_zLjKEJPgC6jRhj0d846)-%AEbGkASZBlz|a|wgU z*|#dw(0*JpI@8Ho(OCgi%cCu~odaU=ih+JnX{C${t3LaAnr7d81RhJpmCWOOr~pRC zsu;OIQ1VXCwAbO28`I0h$@|z9dNL|gf+O!_UfT+k44%J9q_;&q$%TX3+TYuA5b^;} zHZ$wFhjT6$*Is&$l;zwgd#iKieeNJWMAvE?ri%+K8_A8pTF6EPKlVat4P7>h6+?4$ zjcHHAf!>UW@_J`M5BBk&N)pHq5F&PxywhICQ4S8CHdiSf$tJiWD>=kHB@cPzKaxx# zbWT^+pwN@nQ1ik2CTst8fCbo=gFZ=38dr?$OV}l65RN7xNBuIFy5oaCd=2J(92a;& zy@Z8J?qs5l3d<$OLgyf)n;&+z8>ixoh)-+i(klw1BpLQY?```uEZK%1z5~&Vn?~LC ze15pR5p=W}sYjPSLI~|+NcG3XpmzhkGVjKE$ZgJjLJGOkPtSVZ8l%>fN1S>5I9-5t z^nJia$*AO02#)R6Yhg&N*eAeNK`huwnnHyrl~3P>!u zx&xxJ>o$cklyE%omNJ-}4l>NZM12Dgc&Lj;j)t)w3#3coJ#~{X-%oLx zc5qMeu6|4V!3TL^fN39ju#WoB?1s-!48~Mpzjd{l1Qd@vbKkLYEF}fC-F!NoJDp%_ zH6Ee~fd|YN^k-?+S)N0~$-raHxpy~gf2ZA?y3T<-SV!zLdd>-FKGLj^5-wKN&z@Yi z4WZEYWNTbI_w()S>b$!ZuDUkL1K|a*ulZ-fY`M8=pd%(~~$|ToY+n@4gdPyA8%KzoL7)J`evW zD4MH#Pg%q@(F^**^6p%OHKp@=r~FMCgIpe7MoCQ%E>&EAe!kA}XSeC+PW?QkXD*k_ zoJ#V^d|fc%7U}tvIw!G@X3<^C=`Y+0E)woHf`8mO+JLwebAzvK62RB!#y!0@qdmON%2<*L;Hg5~$zuc~oq=vwCm4{4<* z5mMA#_WV^UQy#a9cCJO8-pkj2rQU6P-SpW#J;|To?jJc*l}FU7g>p}is>fNll@(u4 zw05n284!LZUujEDKI3iAt6KHAn+0hB zvpUuAqh0mKdD87KBtWsopRkQXqq$ezUb$AbGd`5fMKr{=R-UOCD$XBn_l-;BU&A1Eb*|h8JRN2B$6_IDU7lxFw-Y0tcSGzMsB8aLphA;KKyFdMz<5^ed z6IeR7g!}Tb;J<{$^=siv|MT`2w2pt(y$HVC=&_)-Zl-cB+ArkV;Oj%j=2ma1D_ptW zf9A^XQoTKwq^bw(*tmg2#jK{f^vg~imne*dm(O@A!_rl1Ag_9uYu7Rt1#(Vu#%!)8 zQ_oI`G7dMbdeZtYsZszlW}-XdbY3Ut#obF%9R9%R5o0+;B&pi zWw)4{>%@3KwAy`qDPZ|LcJZ=^+wlCo{hIA`KKqvQxP@k};C&CsU`)c{IbxQSNI*hw zUS!gnNSaPrk3f`LWRs_V4(NvSknDTXr)^qt@SEf9t#_;wJ!Ug{?)7-NtxQ!lHLrci z?lan6TJQfMT;SYZPT46Vjwh_N>*2=;3~~|_Rc-Bsve|+^Xd%L)R+g_TrP=J;C|!c zR^)&lKxW|{L|c!Cg<_=Gkv`!m%5qo=?-LkI=BJtNH2{ih?iEapuKJ4ghn zAs{%Y-n@ZPWjl5qa2L@mHCDyR2GU7UAbrsQp)nDIbRc-UTplDM3)-cv{`VFCrCc3S zqyZwNub$_LJ&Qj9GD#D7hLwn|yCcgVL9A8Zz;jk-rckS+(iIG56tB=eusVi~b zvQrK;B({gff9}XO0y9Tc5WX@pjjDBJS*ae{Lu9_I0sNA@ZfnHt*Nr&Nc zG6N0=LXakMl?i5Kb)Rnpm2Dc8l5a{PB%_7bvS&`mTJcIa6x)wA>_6d*IE|M_*cJ4aRt6YpX>1x+ zs5C*eL3-x4T>74}(&)R|{jx|MqCCLPRma!R&zWmve&yon?{!kdEBlphb#mJ2b@>=y zV2HIRZI%T%D6FY+ZjF2us^hn$!F_3}&+?BxG)k~$>0QvTCCuhGOv*?XZa_7TTW!zE zcsd_APN1cl1#M=7ui!E8T%5`|o&drqk*C{U(HqP^D@fr$CU}y$fZ0{0D%q$N$GqS& z%8{(1f*8HlM2}@lL!hdV)F>RPBK|Wd@+Qo5UW9-K*AO=}buvKkW@U|U zF0-IvlA}sjCowSPSz^#Qv|=h%%Kw}0N7~x}q%KF3LVG#^*tK6NGkyF^=M%`cxps$s zn~rcKpR%YcXx+QT^VXcdK>j&WLV84KcU+;?0vnvZN0a#mkgiAa0Nc&V<+i`$PzGVE z^V;#vv&2j(iqo9qBw0jD$;jjV^b8`E9(o_4MU$I>nCqaWktgfS@mDp6vp67hbDRxx z2Hj#og37&>X&lktIb1_>G@)H!R1Scj+NrZNtYWkN#7X}^Lvpd7t?z#qDxX_=m*2O8 zygjlnoHbnLQ4F^67W`xpVbzRU2ifu124cw%6}rnkWH0-eT_M>TI(7Np&mkSytV=g> zRAZa5Ed$NYjIpbp&%G_Xnj>@{3r^i^x*&Y&1sPham8PVWTXlaf)lAlXJy|cVt;CUAJN?SzM=cEY_r1$2!V0 zfPZ%^v`V;fg#iT%HdrKo(^c$T*mYD<7+=GQkC{=H$2MgtH7_cKZOoj)S2XY18f<+Z zQbs>-1kwJ&%Zdv>oYX|#DnH4KwW>9RR^00^NOaXgwO-W`lrL^p#yqjMzr^o+N>?!) z7l(#wL}Ykkn>C=dVVdB$rAFJUJ&qb-zB532`Ywo9lB9;G%}M&gmyKL&eT%}(6@eB_ z%q>fs<#_oClc+m=0Y463SSFTwr3Zfa6aq5&0S2win*~>AjgztViBlI=)$cm8w%6wR zMZsFqS_SedhK;6c$?dv^vlbVXqJpz&nzvEVS6bK?;IoeCds3&pZ=Xqf#Z*i@TQo$~ zyalJ!zU+Q@W(m{ZqRi0S(vpB&QeF7mHg-3RH{5>CyojDWcgpQ{H|!`|>c!`zH)ozV zoVJU=%!=%j91WjCDCdvSNH!RcO>K?L(#OKBZW$bup$(P)3Y<0&iMg$2B{Lp*KJ%L2 zU4n4%Gnv&u$ad7TAl&JEiC-|$F9yv5O8rrrLZQL6#-IEyjwv2B{MQ5@#^U+JCm0t2 z9uWjGhL7-0d%61!;I{YZFQ(CaBN&QZFM2L?)Bl<5i?$q%%@^druj3Xqk7!opZ)dA6 zeFOH+s=P)LAowp$^ueL@^}h_oy9&)wttSK&3^q*HL(dP+Y_FN!kg{@9veFNZ*(>zl z;JwWcb z0bGCnnn-+J`KK>&Jzj45$Y;T3KB@FaPA<|Aq^#&aQq!C6kprlFa^6YKr{Bu|jbs-$ zHeaaR9+I7(y)AlI|%9ZQaUr*M7z@ zH@Zy|;xM^4TNBjH(+}+x{sl&6=qr+l3K+2l@;v4<0H)I3Ax7YEXbMHrus{ZjfsP;u zDFf=^+q88Z-}}6ac1sHK%I)Gn%TqD5qfHzsQrbsWd1~X|elkYBd^mHg#iXZUfl!_n(F#H5EpKp42#Q4!n(0kj+uXQ&3?c2er4pm z4EIf=GWF*d;urpVL)Rx3Oe070Bd@={k#_#gkDXUIW8Mq1&=$eHE|G=X%}?`{9MWKFSA`cn{bOkal-l-hO-ILS#pg;_>)DMWQSJ)SWnoRbDl83 z(-nT`Uq+M?z$(_t*sf86D+1i~h1lje*f|Dp@%@pw@8`L?dpskEq8}1z$$b4SyX4#* z6~bhYq;&2miDmrw7!pquL26`c4y{B71%I1Q2@O$3V97b9BT*7a;U%;Qd<9@jHb|d|=m7Ay3}rgICzVJf@Pp znIRS>R0C>|yA6ep))D2-QXuBJJx&_HMdla+5}m5>9-_Z9l&8j%YXKzS1#7_kPRkRg zi6lHHUQ&*LM3Xj(;QTB}qO}4)FB`#N?uiUeXzTnuCqT6(>J*Mi@6f-1&o|TgSP3BH zE(mHR+NzBP4*U^h#5yFA(+Gg}<%H?xPRoX7nUsJaq{v|m*^=6s25t23m`7eXks_%u z@l93Y3-T&Z;shdDDb%3u=$19_K0__aph+BSfCa_?hbaIN458^Z|3yPGNCXbXp0vk4 zG{?w1u-OneK(g4uauGyAA)_pDDtsSwfrcP{wgl1|9Gb8NNmQ`3Z9y9gav%K=gt`UZcDMTw+y(wf;&ha2$d))pEPni>AVM~r7`~b@lkxVs z2TAkErEP*u_{Ep583RvmIy>3_@Ze8$c_s-V0i592EQe6HcN*Dz?qqCh29?At<42SC zSXdzhRQ=8fc{2{5nN;KuThpy&Q~*kYa3E4Z037M+ z?~-YoE6|fEvJlXGrad}2*Od#hIUpgel<_6|?E@QFRwc`r z?1KCRgVj8*j&q;_AF~k@!S&1xnjKTn7=3i@E+BMGP3GVUa1Piq0MAjF0b&4o>Yol3 zWBQWL0p15^5&52Iku{oKoTO(Deao`IqI;8Btk0qXLfKd{hL{EmRm_5LXw1axei8VW z4cXhU!(X>GJQcvn;LM(k?;r!{`Z)9yQG>dRg5tXOGO-!Fof(SmYqg4A_LO%lJ8}Z=zhh$ z2JsEl5*){jn_gK`x>Xr{HGkzH;WF~H#7p;zB6H=&bLo>0Ko5ps%VNr~_j9vRmSXGO&Aa6mhM3$4D_G$Tx)Y8d}-Rs$=! zi4dh=y+QK-F40vUfE=ai%T_BZuxa*n0J1OUV~#O+k#}5n47QA)C3W!Zw~4^I7cmC1TljUkS%$l$ z;-VQx$S7Ih5OTCi{2XC2L%sr$OrQcL+$$aUiA?Y2GBL!Id+OpBr0DH~VCA2d*x>@X zXLpej4+KLS$Y!{4V{uoT zMn>3ocY*4k{ah6vj}tDH#@Doei8SFN_He&A+g(S#6b}deugmP5TcJoc2eel_7PJ#? zB3&{O^tH=Gt7JwVQRzPEnM1bZnz#$=3CX$~QIH!LeIh1` zo?HMXgk+_QFjLDUNi)#zzZF$0i2QFlTkWqN<%D`;s&HSv_-ATQ8Krsu{e1=%iR&6r0#2%fG(!tYL)GbvLI#s|zj;^Rt#3ewJTn&O9!c(!?x=mbl71P=0i4Y{i@_^%HSY8aVZxjJsPYm87zL(I`>)A9|%f( zhhQSfcVz77+bD{vn4rc<^!xK@b}CcsD|D3gLJs}z!dsRY6jTpl%VM~QcaRzY&N*Nd zHj&PWAX337@%J|>L13q>8_oA%7e|6Eb(KWQE7>o~?7u>%6%?rX!N7uo-Xw|&Ja4~| zc;XD0WhKc#5u`yRC1TcrpOxhF2*owm<8w6#i7@&jVfAi(&*NFCB{k@=2XdpJO~cus z7Y$HQAiy6`$XfT~RhNF_GEj;q`dbJ-+g1hf5dhN)xLV_%IE_2WgpLO)&QFpj=fB3i zZ7_fIny+*{p+dbQvRyE_ZxvUFq%F9(K}*_9Gdy2= z1PL!!j|o*h5q2S-j&>TX45$@quYBb22&PBzkTG|)_K2q{#5SCM{5XQ^eL<)%B;=P@l~K}0kdeDj4q_c1Og~^3ATgm=m#f{=mWUPj4m(%)_t0vbDkq_3z&`| z^mL#sb?#3rAQ1@Sd=dgkq-hsGg%9;!P5!(6spF1^2;X~!VKkW8k6xn#tSEB_4{+sI zZX}BVRkVhaysidtK%e?UQV#)i9`?HBnwpLVzDWYMq=Y!2oq`}KFqNqOsUs6_&r1Qd zkI;fXdWVoSEY_zUq{$Da;N5|Wrn{G~jmPgUmsdHb9xcsQZBEZaxQDgz2qFa;IjDvy_dQpZqWtw!ML;x1z2bu&)i7+b+U1>h-Zr?3%{4! zRqMv6Q>^cPF#-4vD{1?;4`xbME0rvg@8%v$v|?x zW7x`Jk&5U?-YZoS?a>bPC!2-z1UuHB)uJ9-`S|QVJecW&g;0TdXvn2@N$zW8X|m}n770b2mb-f_V=Pc zODv-vBt(No-x!tK&_k6swq^^XzZ7AHLBK*fyH>R~gGj&d%9bh`zCc&Q+3 zVM$Nhb`_X);f-&z>wK!jQPi*yD+hb z-q$B*$E`` z5D|S(Ix+^V301P4CYG=P6dX>}+cmU+LY!RYscXvGWuqywvNtU|yn z&G-W;`L9J}=ulRnF-SW=sMnD|6a0y@4P()SI->xjTYZ7G^d_|y&u^`wbmpJ(+xN$h zo+*%PB8ZE@yvV-og02^h$@6-E36R0I9Z~j;Fm87f8CR5WUA^8)_lHV`zbcEp6ZH4P zgi^Zk8FOD(CGmy^FZP|Gx)9i-H<61=6U_x{zb(=-QA8S_H+{XiwF2W!h-%*dfcQ9? z)l9AjjBi?on1r=fWro5gC!LwJANpf8<~K}_N(7`sW>YmzdTa_+XJL>>Hvg{BG5KmA zMAb60TNJ`wZ=I0_Oi1odxpJ^diCHg^!Isn!p%+Ab89a;cbWUKicX$ifwldC5kT3Iz z(WPx)>-SF-h2kGt(4Mtlyq1Z2NZ2EPvJgIv<60b+Hnk?s=|1pjqUQ17aBr1*o+PyT z7M%d{N8+w*vT6lW3o&K^T=S!V$vB8uA_X8=JhH&MxNqoV9u<#UUzlsAoL+5ROjqtH zco^4uGKz?!HlbBM<#k*|nT#WdB|E@mcoeJfOI+WkCF#ktR+t&G^a&X|7_L9npO$#G z^g0p81&r8lwmL}?CYB04|Ep|kv@@#~Vzs^s`z$BoSpe&fM&wI^p=i~9!7hEBH|?B! z+x9&&mUVO=^cLs`%oJc>CISGoP?D*D+0=?^`$}L+*-IGY%e(g3b|_>5jG>f*lcv&p z5y(M#{;ejKM6{z^#4M>y8k_@C1#45quw)|Zs8hRE_e@UdR4M_=zgD~(8`=_M&G%PT zUiDToQUTU(lLxJE;F+!=Y?S%8_t*}wga+js3d)l2nRJ*GIjB|Y985VRicZb;*jiaH z`wGQxA$IsvJN^MK`O;Wuor^==fK5jSNLA-mUps`(k(1;-e_2ZU zC!ngrO97(9jrJi&KzU1QTu4Xvqn%5OlI(6>PALY09nI3al$dNKt=j)Cuk*1gzwCMo zLgDoyW!HONSvLX?38+adSopoSw`A|D%;Sxm2u3;nWYOBR2Wqe7qCY} z0cIKk|5(r+NLT14WCGY+xoH0=0x(+*wLnB(4r6L*%Owq@n?O6+o)6=PX(%-pf#7}M zI(W7FXm4NuTfbarmS^iZ(L+-K_8EV2af5y4BD^9QH(!D3ypyCcmzebOB#@JTlw0J? z4eAa3{3`!rk^}62G}#~g8Ul%Uz~ZxC=X-wPV4^o*^_(*lRVmllozZFT3YKs_r!6*^#oz&#k!-tWWmeZ0iwI8gHk6P#gCG#DWZB&k?=^$1 z_T2usyHFU_bF;MvEB_BP$`mxw^KP~Iklc(Qj77v;ZOnMl!&D2!T{$5$XnchM9bNbP zc$NWkZaOq3gzjA!*@Y1Xm6p|v1`P#>ua5sr|D#{45ILE@HD5dd1GTN$16swmgrx$6 z#EYlxSgc;9D`)firIA+@qdKCBoa#fwZ{B#{JJot1j3h#HNxU1cKtSkw$>%r|oq>!O zZbwo<%el}Y!YU7fmeKap6PnF3)*oee!7`8wsc4pi|}I_|a_Ax@pYE(LjJ zOG2r|g)4LcaBR6->0I|_9+x%;Bs^17anpmibfdQ!U05`Og>WW>U0xbE89 z$UU{YcF`cnRTAVV{L?4BkM}PVY9CvJ9z413{^khJgZpj&3;*xM{ma)UAN~~Q&%Z83 z@9%J^GKQ=4qQM3wh{5@-f~%*DRT@7OJ}@z@zpHF^)Vrl`EI!KYCoa!)7Ob~*8m6gfk>|FoR`KYkt!o4kv>Qm z2xxx`4CMbd8jP~0%w+ps-VhLUarM1e*$Yw5^?fp(etWDQeyz8D!#9d8ardtNnFfrk;NDA-> zY}{{Y-xA37ygBkS-OJ3gyZ5K6adB@l+C0Mjp5af8+y#fNK3EB)V{QKitvIbR1Z13) zmF+?qaAUHQ2dIA_p-Tum7`iJ$96>rVy zCs%LI^L};?&@xuPqI=wA|K{Tptq_k|KO@btga?}_ntO7$^5D%ej0*#^1$^ykfp|ABjkckPvI+8ykC51SIhC1HSJ+ zMZd@wt;TWD$iz|qrXQNBf^&b>)HB(0s~rEFClSqSi~${MpL6kl;C3FLou;9HMa_Qr zRxr#UkbDzMYbfD>8;Hq>sD zTOt$-Wr@&A6!1{mqUFJTP?8?4B={7JM0Ejr0p}70!uMo97)wY*Nx{wca>JS*9uTep zG5LB?!b>3F;tncLvKH2w?up|9}9?x@iV1Y2~6oQG8eumKS7l3d`E# z0nLK4*-8}r-oYpj1zPsU(I$jJ%|jDU$|OL$LpWeq97OQLv6x9y1OrQSt}194z;ra{ zt+s=V@v#t;o{j+R`S_F#aCIH(1lH3L1m0w=Gc*MOz1gq!!0WdES%R3r0r#1b@K~#r zBySEv`wP(kcMveFZu5-c+%EL%K;=iE`Fk2cN$u^Z_p^ukg(dGvXWWKd)x5`W_30?z zP8T7YQrh<+R#P(ED|Ccm=dU{lA$5;fK}=pAwDbQAfCkTN?q{Dez6&6I&Mx^J!5-~4 zBNBduUYo2iJ8+ci;4^hQgnLod?Ptq7EyU0Byy0y!;(fQN_$%L&7r|obXi%_Utf_24 zNf!b3t@YML2)oplDHyNUV`gn`?FnTZy5~)>hxSe@{vJt_x|c4)RnH7Gwj6DD!(!2F zF}gykDTNg;ibF%Wo$~Ral28fKcjAc}+3w>X`$ec{CdkqZK^Ev97|%7A3^uR2F!EVg zB$6ITQS6PllkrP!VBosQYME%Q@#!DXyRG-PF!@hSA2x5PM45TAKe_RGtSebFv;nx7 z*0%P?K%E09`15P$*Jv-8@fLy&IXmJzD5FWPz+L(=)E(xXP?Pw~t^WG;eE z0SJ|wic-_36>;g|&^QYlmdj08-O~qD+s4y(6fB*t!F&Q2!si}O3P(1)&z_-U=SrS3 zztx_5kdJ+K#8-$bd;F)M1}1If6_13W{1Lk9mIha`2kc`Z;e@y{Rq!6v#nTSG!7W9i zzm>9Pp)kIJjJZK(b3)={T(!~{6|INyyO)yFiy3We0V)Jxx;K*_$szs zMM{zw*74x%l7pq0GFAn*koTfg@_K0K9##W<*4=&&(la7+OD&gw3~a;tM^G_0XE8D} zu_*_}TpT{=eRd=zpgoVOylH;Vv=qVyaWph?SR{Uex=`3%Nt4SS_2z@TAz?D^0-6ld z`2Q~7Pp*r5*KKl8B!Xz#PvC-Vz4o}j#QL*FnV8=qqA;b8>zep`U`ZB21EcXUDlzi2 zssZTes!||65+2QB?to&r{ImSC>_04HC*^AormW2gZ;1S?T7T^mte}R9Lmp{lsUz&3 zb&Xwtd$_}E2bnG7P}1QOXq8KEgc)j?hV2atLb98~7)gU*)52Dj9Ve3XHpWPfi*;+J zW|aS^5^w0z>-!tQ+#Y@a!qClog(0k0=HGfz-b)~?(5XbOwI^F}B5RfD#0L4wHuC)E zC18Q|1-WVrTZ|j?dj|=h8uyHG?-f2f4&!x;(zO|P?i-!$-b5ddagGwPCR|Oo4KkT% zAZxF>ecK&-!1iA2I~T=MpRBBllE*_$i7^297t4SPy)Eo@x@kls81|_&6tApsRu~Lv z{%Qgkm3+CwRD&J33>k-JtPxO0hI=nn5$3qoy&7dm;$xFJAPE>kc0EAG5NpChuw*6} zzR5!lf@b3%zL8C#59$oi5>Kr?Cb|x2aD^PeAXEFtwf>mnT*Th^>B$UP*LR?AK>U=T zljSke6|Ull3=U{Z&g;{XWC!#a7786>VHwU)v~exmvLp&wnSrV-y~Vs~^oBHZP>Ew3$; z;55O(TSt=?q)ca+r2>b%>n0F;il@n@+$(9oFB*#@{EmHR+`9^{nhZ6wruX{h4NqA^ z-8gDbuI#G)xs|7h^daH~Nmx*T`7)|D(J;DitXrpXSWRAY`0M+EXm|3XOHBgdQ3aUVYt{>*V`28@P;D)2uX~eA*%Q^$QFD-8FM0+gd5a4c!rC4m8OE>bnNCOU8t(@( z1v|tcrQ*wKj)F%du`1t6ujt53kJ+`Z%IZ$_kMd*X?!x6`=VVoX>MO^>+W&1H)9CkZ zSG_*TAQ!HxKA&j6(&L1if#;Kr-4)ek>Q7w-wYOju;x6{8M^2mKAhRA7(N113w$Gxc zR4!?!@~S5Ajyb1SXoMgArt4`3Vk_rrbo>J$0<)X~1U?j^N3L*yD164Zj2lXWq1U`@ z`|xV8gWh9KwaU;#h?|fS!MwM#0YH$1Q(5CfJjB$ZSZNzgl_@XZ4uQj0rdGa2-6URm z%+GG(Vl^;Vz?tlW6dy{_8G3Rvp-keytQmC-OcovPoS?~!?c;Q~Z9#sYCiPDv$-zAW$#sJjrxd)!AZ1W!v>XD=>%n9eKA`&D8edIhrWj+sS2l2CQ z-9S#AOoWz&OKf^O!8Y`D`F>%%7Dx@i{K%=Cj1L(Z+v4_l5@lg;Z7LmduM0iHeKWPG>IY(|%g*ZTcj@qHJ+L0>O7eJLUeau&&o zg4xrba_ST``Jw!z15!PTO1uj2KOfQ4C@tp!i?EGo>e+JDbmThyoz6n3_}6n?viT7G z2A#xUX!?;@vEZ}=JR)tN$U67Zza^DV35D#9IHa%Ci?I-btb(pIh}W5aaOu z+q{G0ymrPI7k-oH#M}Si5Q8a`m%4+gR!AIcy4TS|OOr0cr?y8rT`FIZ-7Bk+Q20=6 zFDH^TMmSU+zn+6$IPyGnQ}2t&F=gTed#7H(!}^f8u!7P2qzEfK-9#1ngViZ~ z((zJxL*9xoZzl6YctZFIcuCZ+ohLyiIx#C;^k(gVH;F5xj`aCsYp&RQqpDtb5FtXw zQkIAZ^3CYb-sUq{`ZqHGE;>4D94<@YePB2DNw}HcdtA5FGfP{sLAPI7H0d-I zw#MRlC%nm*S$i4;N(HXvu}ZJq<9R{(cwWp`_BRr*xsO_We#z%m@!#A_4R_%nsLF6c zgy!xK;6OW)^#v~S!u&NoW<&Avu3(g)no)jZpKnvf%k;Q=I#8apgi~qXWf3&}Jzej} zn8BA8G~XuFlzz1}rYu8&o_IoF{@5#h4{JZ&LOFf&KbnT~-G?lS{E_qH_T63!;2 zh{;t!COA@1FZt?_gFTWIo@#P6RzPLt%fXgzN3ge<;-|E85@P>XqAf71g)H}(j|3d& z%?t@zm#0sdq>qlkY?2S=#Czr9MoeZ#nv&yjx z)ODZVFcE@o$JM9Z=1-xUN%6TC&hNJVUq$C0&-DMr@y{-HVY9i9$lT`=BXUV>ZnK;%_WS>R{&@d&9`E<_oY!+_ z(KmM+Ds;dz13D+9tzR3U+ZyUY(vFM@d!I~?*@B2bO|Ze!q#JbSuRcEpOY2r4ASj&u z6vSz4g2(~_Hz3C^#f7$f43!@(_P5(G!isBJ0_W7H`+9^rVECKRGcrd3>&Lc{x#}H~ zTu>1m!PB3}m-$YE)B4uWN?9SHD|}azqvQ%U-~H|FhG50!<3Op2M{_4uJ}gBK*_>eMY)1240sjK1V6h6gv*G~) zj3fC4)S62%B&UZCPE2^i0)4 zchz}zXn5mJ(WRICqZ&ozLt`1#CNE-PJPxQVD)`p2ZOPT6V!MLC$+uP}G+q#Y9qB`cXm% zH<~Y2PTp1TB_Z_bRH~EPjdcqHwn0&Xo_lo4B=>Or{^peDVQAvFHDFfo*YaNHp61s- z%V&s^-6)ZNm=7XXwW^9PyW0L~PIshR0>#PD zS>Q}bq%?%N$ymLmJ>_^MHBjGT>bk))Rn2b-VX0h|Jo}aXV}F+O3O1>Jw^@&HOq_0y zwQ}Gy;2BMPsgPlk_eTr`a#{ew#!w;gl0!gF;#8=xQJ3snNW~PkfAXznmL9y33c*}2 zvFshA$wyl}{?7pqHKwU{WZZ?+g7%*mkO8Z$Y8|kj{MHgGhk!drdE|CK=i}+i8=Wk4T|VmAqCnQf|t@2B7wnn(;Kc z!PCv9B0y}!?59|IStEFxC*-+d#Bis^{;C|&jCu%>jjpceAZdK zkW3@8EjjNRF#N|_D3nCisD1s%9=cD$EN)n|5A6fuVIML!CN4UsOi6V?ZGdMGzrD>S zv!4`p1lMQ>C@*)`U=BnLRMH_-2)V>IqrfP->i3NJ(?;TkQv8?V7{>-?e;yJ_l?YBo zHtJ}1Y8%kl&zbM~e*ILAancb23KB1LcS6kyQ9_}ml!gKpuR z=N5_NU$WyY^?@;&lIh+d@4Jxqr;hJGumK6FXXQgy>=y>2Rmq3dU# z@5j_jq)X+( z;)^tP@;I?N%11|L4wzbmpUK)oRkWKs7aV|6&}3kc3cc{y*7;rqw3SIQ(etMBn<2iI zZ<1O$<73VX+@GT^ev>8R(aGaSiTj3{A=&6d4$OlK7cY4ZwJyhEe)^ia3P^){nJX2p zAf2wY1D~xvc)5NFgAL>=94Q;X^#6tf0;zN;7@ZUz0aaed(T)|%smJd7bnL|Z#|w5? zS0~iLb$Whj0->kt9}SKp}i`8sjk`sm((MTaQ657?hr(cx%8A@XnnJ`vwV0Z zrW;QgIx4pDvRAhW67aWhf{{O;QG4s>v7S)ZmfKmN+W9b<2m7@|%pSr%#JT^)xQrf z8YlE5wJpBzKx^wzi*zKPLj5D6=?QSwr^gWf*CD|`DxRQ1$d({1+W^&nPujFpWXfP;fc2ju`o zcQB3jHH`w@MctynwzFdx6+iwUcpBB+IW%DjTs~A)uO0_119+IR^yVhW2B>D`zBY+$ zNYK0Sn&?2*e0zc;k+psED{KX~+o1jqwj!CdvpO+$boI+&U+CAPQjLt4U%$jVm3Dh+ zkvAQ|lP(WsEk<>Gg9M)FjQ&IF3gF6eBL6lZT^#PPv}*r)T&TUqj z#Z=vIr!C=30GPg`Y&0Ct4|U!u71<{5_~8hbmRTJ$$q6}U0b zvo$FDKt+e+$%Z(le9qaaTf!ysWn&@)TP?z{A2-K+kqE7(v=zl|glUriitr|v2AW2A z+Zhnmn9_*j>jjeBGQ_QR4k3d-)6CmdvSx+c^fUxJ-O2@I*?~mhEPd_M+3S3vzDJG< zsu8B~H0q0-`h#&NeIK7d#Qq(BqcP170$L3OSGn+q-PPBe?6JbT#I(7x2(rEumIw~! z7-044?D~YePoao&U+A(_7(0;{NJoV&CT?;hsV_+|J2+W;q$4l?i{4n$$*EpfT(N1+ zsvKR?6vZni4Nd`xRZ!tYc!3n;6z$jsWD^uZLmX?n1Bw(%qQLU4{>l;gfkKc8n?Z$@ ze|b}^@n)Mnk5uv&P)V(SjygW(@x@Rf@`U?f}C(*B;UuJyCt!G^?e*?dl2nvVBnNBb+m}?UV^_27ON)s&Fk| zds`Rg>tM6sG#Zf8U1eYcnvd&+qmeu0e;^Tv(v>#Khd_#c%cxJIt|pr2393y%(C@wh0veeHV{hR{h+)n3&~#i_*9F{r;o%S1YxQwD>VC$8Uu{w{XlClvMFJs5z=Ob%1gGwE?BZrNeV8;dKrfVPV99^B$ zFn)66zCt_6_#K^Sp={3sV-QATuVfWzYL|uvY?Rdx0`)w(Opr*Jn?95#Ncn{Ye*dJi z;$;vmq`tD1ZXLUx+wqOoM`CIH2QOSfk}E;IytzsktyR6b5}EK5#7=uliNt`p1KI1@ zGnP4D{GkEgEpz7lpt}m{DFE>alHDyBaKtbPqkbK5_C*43ZUZ^s0S7QQi}3%<>%k#M z{beQfGN6UGP6h5wSo*WjneY^7H{quZ-3O$PG!F4*g)=w4bs9YbQbAU!^1Z(_faj#4 z9Q9x^%q--YjyBa(q;2U4^uM>Pe26j5-WJ}k#S=r`3y%BZOjPKI88gc8TNi4MFRWLU1 zfq!=0=Dpo}@1{&+j+wNC*NNfZ{2M=zL2oh3@Tg>e~#uz=S=?Rp!SY8mML0o z{AV|0q~LQ~DEPkYZ1HGe(p`UVu>&_k#np_*#};VDR{5EU`c`5ZZdiyKM=TK4535hN zV%1OO>KKZd*jyG&q*<{K$8WEVkKv8VOMgp8VhLw(zT2FUsxty8US#7d+933D-mh2H z`ojT_p51PfeqtC*RW61F8ESG^uZu$Bqkk&T4h__MN7`nYXEs=pF7EujXWqHzMH)0O z{UlfMdHZikSCrO|ZG*jAm1}TdpL|N=pX!dId(mE*?>ZuKy?^rR>Qlcs>k^?NRoM%_ zP8EA%-H7X+gO3b@S?Pg0zI%c7Q<*b2e>=E&AluuSZ}RFyai?*v_qEB%c1~<~dS0P_!uBOIJwKb6T^Wuv zm0G&%CruURpW0FrWQs`R>>Xsq!{_7%?QJS2Ww2XDoE9YD=2tB+%mu8sWG?jPD4Djx z-+8^K5D(dRv}{3Eb}I^-kv&m=FYNx%5hk8$F=ZB zP?jdl;=7EXMo8b{DlX)iblh`GwHQ84m8RCL>;t7j6|G{hrX&Z@#Vk1m&64Z&w{J8D zE5T_`Bwe)VE)TD7r^5*1RRZ7q1$xcT3)`q7y2Kq0v&+pf)uz8U5#$JgWLhi6u(*o0 zTdMArU=PhoGNgz5WMmu%30Zd^KiUX8m#Q!t#^$&F-2@H?-M#3;zE#W;yrBXSg?J3| zKB0BEWI<<()=v#s>koLvPK-V)CKZ7I3c<%18M1*!zH~7JvL2fF@O|!sklxgmNuz*) z=|`)tuwVsO2D_9G^|3~IBZYGYAw`e5FU4x(!iHrEp~78i^d}Hm3Xg57K&PQe;2*Sx zx^SN)!R*>j+HEnI75xhR@sJV6`mBWj&Z z3m)7Yq7{;+Y0A~O!h1NaBKf#WZ!-_$pGGZ85YltI&K1!dKo7l0-2X%X9Lx(+cDb6g zujdf;eIL4#&l?d*|M^_3m|HHxCtO$@3tc#+o%Zi|8h+`4>A@sj5$V%7@+_Y<8$pmJ z@~*H=lSzK%xlozhd*N_tQI(PDQvs>=AQ1gLwm+zS>^2fbOJxZ-I?vvR5OUD?$2?n!3qf|COA(GWU7}3PTdgUa_vt%JTMzD4u}PEC4UWT?%kF17eqyn6zuOuiS!zZ}Z&Od- zW~MFhVW>w5q<(O`%mg=PMHg|E%jbRp3f|B3&y-{4!uAC>#%@=VRLlGwGSE1dgZgPj zjIBaU<^(>hR~K>rpr{YLQ;J&8Yq8u87_7ZB4*ocdE#gH>a^8ar5;1?_a8P6}x{yYU zca_>km%{FZ{iH8a3MlF-ssLne#u0q6A*`8^$ef zB@iMC`FpX;nD2KK6t%t~w3TF_S5qi7G)kK7o%Uo+>`K3Q_?uTzAZgZdi84d;2+FI} zGYHpDH?dGoVo;+yCNTU9be;WTNtdELJ}@77F*d-+yp;?bM!+giXONvz;Y8d?sbl=g9a%D|1pKgh?3lFN-rkPTmnS_4tkI1svzE>$EKPz-e9ZuvgM1jXy z)Ki}lWP>8Cbq>G-<+NXD7Uni3D5%g7puMYV_wG`Tk8tZZFf6-JzGSglv%93qsJ|~a zS?1IHGyH9Dy_(HK@=JLBZ2Vw2;^sb<_g{>WTlcdHVsJ2FQLUic{JZK|RL5?V2VuGn!n=y_@c~Qab{Dsh6An z-8Mz@4x4MeL0%J50$nIdq-4<;*lX)m(_yi>-&x<`P>R#@J?AGx2B?`{lF(*^!{U)R z{=K9Il+wOOW_me#R0#`|t2PM2$Lt}A_37xY`k+cu!_1OKTXQJG7)2x-E&!HiHd$#Z zj5F-2!G@?LJ=5k@Nrc(jLFoV-4h>=`>fH*UwUO#EiHJDm1(_aqr0Anok@eC%gF&a1kLo2V#R@<|h%P>M5Jow*QWOtt_P)!4%8Bti<7EKsMaDCCv__0$C0W+;AzBg?TTe@k@}Jdq2oK z*FGX30{|fH@O}3scAgNB!?S_@0fw1!4x~_e1*uld4S)gl@`%zRz%&0U7s-;31OEej z`eXsm-ypWwQtULeA?LouakAqIqMe_~9|OJv6P@aXC)eMm;Y(E%nS>Ukd^{_fm0lsI z2}eQiFrx;dDY?zlU;nINpZbNN8SDXd>1rk7elxTL_=a2+DT}61Z85#ouKPhm5JHgW zCttO;%n#EQddl?BRVWodYlpR1lm`pNGbt891L(6ExQdJJmm&iNL{i(#EUl&F64;?} zm<5GHD#7ndBU}#U7`~tGisWz3Txvr$9W02zrnd{dhMaBDFZBSGl_YMKuJlnoqLkuYEBrOBnxQDJ`%D4vFn!9+Yy!I9Ktw8mr-5b(l5RFzkYAH41!NRk1QfEQN|HiIC*{{W);Ra^i7 diff --git a/obsolete/fonts/xerox/Xerox.XC1-1-1.Optima.Z b/obsolete/fonts/xerox/Xerox.XC1-1-1.Optima.Z deleted file mode 100644 index 451a292188af0cbf10c43a759f1002001d441959..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148641 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

    vZl6=^P3DUHmY5`K&} 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 diff --git a/obsolete/fonts/xerox/Xerox.XC1-1-1.Souvenir.Bold.Italic.Z b/obsolete/fonts/xerox/Xerox.XC1-1-1.Souvenir.Bold.Italic.Z deleted file mode 100644 index 58b5c603b9ec96d39e3ab8e5116f9a1a29b22589..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172908 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

    QUGBdYeryc5(KDp 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

    tM!9N3~ByI39?{aMKM7IFt>m&*S zv&CYz0mS#q6#pkOcie~fB4yz8+n+)^`)h1mb|MSU*@LH+6Ni%*ua*ykiQ`~@^5UB_ zq4fQbuZ$7&V6*XJ;Vw}pJQr^${7#6P*geWh8WkXR_JX=JKjsl;`9uaMucC%NB0N!K zD|oOlDWr>|#Q!7wkGzSQ5vl-3b?+{+*jM}a4L#+}b1{Mn@wTxLP^rF4e3E%WMBsao z!omMUcO&j$zVhBN#z~L0W5GbiZ=MDY;NM^;gAc_`Rxf5BvYFGSjBiD4jM<2U>0Ew=hI1pdys0xwb1glc24 zKqud%`V5j+UErGu#X^_GWd0oHE#{x{8akWOFRonn$2;M7K$h5^5jO13+{^fgdEPfX z@NrzeK9PT!*?`4h&a-wfn*{1$Y4oaobg4SCTF@@=7dHq!nVbF37<-qqD~^I6L^t@V zAQ8IjeZ~u7?!mv{VFa;Y7Kaa#1iwYA;v|BQ{Ji|Kn85KSwdDjc0R$%cY|eh7RQfX$ z1o4?k`RHE^>$t2O^PX$NH8IZ?b!^^F56QK1`f8t%RZdqE*9zRxHF96475q~Y4x#QY zzm>}q!Xo>{X)Z2k_u8k+XIQFH3}O9byJ-BV5OoCe1NMPpxAcMX5C=tCdKPz?Fe2sn zT)pbwMn*k$Q)@ZMji`1Y`dwWyx@_;C4*=Hqi`S42U zvYjw&`7lO=rA}RmJ|w;pU3)SJ1f`PFiUTee^yEyA+48pf_nWF^z^%Gc%8mXbzGr*W zSz7(m^)5;LI-YFkP3Y?&?`3AH`1JOS6|cU#pq^k96U;rha%}m~%8`|#75YMc#oXXw z&f#8*mIlaL?u)A)ND$$p1I}NZz!7Fo`JLZ>>fiM1T#e}l?5^m(^T)`5Pj`S@gWVVg zUdnmEJ&J!l{RwlPZV-97M5nhl#wuFNIkH#F`5Mn}eB0nAOKvbU=qYN9Yj`{h?>aao z;1iSx{)f?Nf9Vt7JubC&tLk5T4ZFW z&cUHuMhAz?P{c|(jjKVr{!bhV0^0jCbKCouGLA1!m=xDttsECbF;ZH$I8~KDg!NO8 zWS_10X#C4_Ysn|VIY$u)j<`-~v4mJH@4sj`l+;`#^ACPVj+8zb;22>Rg*g70*w)lY z(5xxI8S1Ew!B))n!xh`B})G$Pf>ga>#?>?FVauO=dhHenh$o> zpWQY|2&nzCI3e;jvF!-v)=gaDGiVybOi@ox-L{Msn~1RrU#q*IZFSJ8EGQMhM3f>d zS~dY6an|Cs!j^=Y&byO69&TMHY=EuXEMFu{^NfhG-UHj(^0lq#t7r ziyZszw6uaFq{%4&Q9uN!cUoAyoK^cthsMOBEpoc}6QyYNb9Git7~{u;B{q8`s8Xf= zPNjr@cJvOH?4mrdCGR;Hi=GoTty(#LWVNmqxyDSZ&35Je9Gzt!0KXR@ebce0^UI>` z#&W0b^Thp?+^fBriw(l!{%jMlzp?Lk=!r-zjaw1w>bJ#9D{nL3Ff?P^2A_aL0eV!a z9*tJQa&O+ZKyY0Y=Vb?x!0=bFcw^Xgbd!bCM$jYzX@TXZPCS)gDr@@a(cO{l^lKX1TT~wp$UETdzrs{TXe>Y73o60B?~Sx-AQ> zp6iFV%z3kVAR=32vg$TM2q+X)GV=qQ!t4}?4jdGIg*z1mWKo6b`QhMg^ zl>4CP3c##ujAEkO8b*Uf*T+IcN&J(%Nz$e`2cNO4Er67c4iMJel53A$lCzs@+1X|K z0e^@COGo8Ac52MKk+ZNCu#|wAD7WTa)C(Yh0zXcCh2E-x?%}>7WL!yofQGPp&2Y-D z0<&h6{$wHIpbGGLxT)>$#%fWesAmmNFa)W2_qn*`B35JGC6a9K3Bjl7DzVOB|HNwb z2~>xeBZ%h&x0$k)R#MlT*3YfEtvRp1;FAmQfOkQTvA!s5g5vn7{E@IS?4SCio(cf5q?swuz z!r$iOqTq4KPys~>EhnsM_-QmnG8GhwExC^huM9kr4FT;G_lq8q?=b2GCswBy3Kri_ zUu6$KSy)*%mOzB~`Y;7<%sflzfqR3=1Xohe@(b|ux;6vdR!bs*;PMupvHXWozlIg- z91RiWFr2f0@d(*p@d^ z?qLGl?&Up9lj+yfh8thjSC$<>(+#5y?dfGH%Z*`}$;KWg2i(MbTu-(|fYuv(H!eUC zN4*WxjU`cZg-{AJh~VvHx`O+Lnn*tN??jDofAIa{06dw`;GF-aF-Mz7`eg`PabX)qeDwN``R$``+J7IU7{&s$SEZbxMw4POq+vcgi zc81N2?6G&+zuUvqFnYsW7E(EQV`Qv5V44@MTkMwNp(PLFPX!Mw_Rsg-#Pf|^w5%p8jIJN5!KeS2_4%r{7`qgYUH7eG z`d?gFGF|RDkA$-m1^9B|5j=04XBuhq_{y9A^8V#@utz~9g@d?6b&2}Ho!6EZ2t%~H9u`vWz+JNS&`3fouYz7dSKD~* zO60snNbqrTGlJzKOqTWtbwUv_%D=zrxH*OSAp9VFBg|hdUUlDm(TiSv243YL6x=2* zmd7qWsu0PVI{Xl~v3`q}tA-u_r|zkJrxJc@ZQaiLeKsTe8}8z+*?x)KUcqagJNj?V z(D3|n*@VrK_YhHFP)!0$mK{Z3$ooW5JjbQYp>NYRjNt)mMl~Z3duQSC`Zd0R{dM9g zU*TdyqZ0n|#7>@)*qQhd^X2ldx(gFxLSuz`{T6$!Tw3^S1F<Ihq?|Yd;sBc>TTYf#z-zuTx7^l@c z88GV~x3-GCYV@+tjMwc_j-QR6$aCf!t9LpgLp=F3J?^S-q70F0{}`)Y2*ssEbK=k9 zSLFv5&y7?PJK*TG0MZvx=U5whVgoZ2B#IHft=1ch5J_(aiB7Iz#IJTASZ8R>%*GZx z4^Q$FwdqA4t(Jmfu;%gFZU)sh5eC)&%AN|h*OHk-o2_^pjL(>T8a~ZKalTDEcoN6X zTR>Sy!D^dp64xCb6=oR)W@q-7;`EhkRZUH#8k-xDnLOw;kevN%1sdaF7qgJIo zUVhU|Y`2BpytO$|q@ZS^b*;iZS2_2obF=MYMVn$7cU;kWmSA$bH$wP0`dON9?B&TL zTY~u9CjTvGe*b1t!%n#{b5prj72%O~RVl3yd33n(ts*4Ts9oW4vYzt8aNf8NWreMMX6qW>(egGG+_6)kc5AYu{Q2t%)H_@^b$0o#Dg{)MnkX>&6B~ z$@ewan4dW8*>Iod)l`Unrd><42-w8@LIkj-*dV#MqzE?0JQ=UVRA2o8MnQh2`M`E!Wi|)rhYRg`WPDflbj6bfZl3=6%JuNizx&y*bKJsUj zPpcbkE?JpVQ2u6oi1P_6B>Hz zDCr-vA#q@Cbz4e2vV5|N5Io(1?pWS687r>X;;kNLv%%%^Fun)ix*SdV8<&kWW;9@r zh)-@LX+JHO;G3lv4?j6f;@n`5iBE$i!;eIL(iUew zGC_Ey6$9Nu$Xh;m1zpev2-WM zrg+}CwWeOK7Up62hVrA#)w-+&uir;`{itR5mnxF-UyeoR8IrNlAWurq7{xw%m=e+O zOEo)t+1&Q-X)Ah6JSHLdX)UkATW~^75Lr@1t$ff#gGhob$H5Mzk`$OQ@*NqB8zSo= z4+nb&v{4esvzY6YX!3EeZwvP%k>LcHiOUq&l!%u#wo=1<{7-dNM+d)Xy@mNNO3P{E zMt-OdUj<6{@d(-*bqUst`K#QF(Qy8RK$Y=RKTlj8bVNxdiBNB#cl24XBh+T3VEW%o zUWcYYfr(!+1Gvs>9&HL#9TZW;Gg&qzxoKAK&lH_(S1Ey92xB$+>wZUZwX!KW!__#~ zt~^3U&eO{ZIrYOYgIKWDD=rjMst?MQVooJ@xKa!W5b}T2v>`_r3$-{b*Rw+8_S_~A zhd&^+$ko%Vf`s65tNN6fkd%hlkry>JptGT)ux9;U_cY0qD%M(oRR~e7|A^MDgLf0*>9Yo9ZXx0s*?-EvE2BfQ0QT*LPIlRC6-_&)iWNzP7}| zm64ty{>cC^$NTw9>68D`jY>6xUDF;M1~q=6+jZmA)ua}%4`QipFs6H~eP4TIOL)tZ z77~?2UH8b%I72C{;d;|LNf@m~&Q$v1WV(9D)JiYj(!psxYdJM-OZCj;{=6JMZQK@B zk+MU5?n)m1L@k69hxe!-sk_vl6J#o$T1Xii%E1ZN=i(oTM4;Hya>!}&3D2{Z(vtR7 z`{vBSD*2bL6qQ_(ThF^T6F1x9kowQmZ&V63zcYt2JA8zc3zw$p*KyPwSlWfIhxoRA zr}#RW`eSjE`xJP``(ndLx9JucVWNz=aokhK8fswEiM(Q_p!D(59*1scZPR zzE(|?vZyviFpfvX6}Mc-3W3-+vZ&=#phqOt<&ajTb;gy!^Vy!63 zr_ByK(WsyvPKtKU8#3%cD=%|{mm@C9>Swlxj`tLXi56EuotomBqXtWGp9kI0zuoVS zDCL#Z#J2S`31Q_^aMR9kYS|&|1T~HZVEfx#dTzJfm$s(RNASL`wO-7*Hkr1oD%Q(oASSF-tHvS_38_$5J$|{!pcO3vrr^ z9mK&h9@h;{=>>~cNT7*T9~>=eKEv2&j{sKziHYMVt`R+aT}?9~!Bq{U7TVN-?n>T6 zv@tj@$x>YjI!-G?P0)mBA@wg%$9n9FZ=kiYDea%jAg?L3W-97FOn$uzx0GAJh1XM!fmN8K3fcR(H>7`$*q%9jD{e7)$DV1c z=V#+_&-L$G&bS8!wGf|E%$oOM*`QjT3mG=K4YL~4t-DM8Mu{&xilS2!Nw)5q^+yTX z^%YG+6A5LBge#~OiU#)~%X_*m(`_ls9lBIO`ZigZ}QanWbj?DeCXUvNo#EiVDS60pl|CH`KE@; zs%};#Gw!|aN3PUIYq~Y_vW=yWe|{8O*&K2q>r&oB$=lg^NX0vvc``RNgUggNYdEY; zD&(y8oF*?O&)lRrxAnIDXkrZMU|(Zcu&s%AgUUFKIx~_%JAUvV50CsH&uESfPi^Xv z*>oQv?Hnv6TH4G=&A{FwfFbE0aqsSAYK+P)Ut*&&;dkvdo_yrX^f~D45qk;5cQQ9YU=jX*V=4XHGyeWl)^5r^r+=Cg%xr<30sMKabLot-{J|4I63 zA2T6Ue1)Q0_7GPcddj1!<5#r^@mD)6&4>o0na)bJc1}6Z=1?xyUaZZ7d(N8Dyl0=g zF8CICdl~+uY&oWmeF;Ou;=>7*k1g||kNC?1(%s0>i#F8u6pbe|iOjd-brG2)VG^PZ zLQ0sC?@5|*n{lAwXk4=`uH3bMou?xFq%?e1BsRyEsS#ue|AodLX{YF2^JTlnfgBrG zIDfz|?rKjnng)5cOwOa1@No)NCE1oa1G)kGuYk^RRZ5)~|G4^<_DfI)qi9jHU9)28 zXKDK6r?Y~z4#V%rVI=7(HX{Y?x+c-nkijU0sU?rK#Iq^m?F=leWl9RQ~Ke#*cP383{@K z=6Q-|fw-AuIMLj4sM4Iqe$Fwes(&f_>+BNjM_nz=34Xhx1=c)SfQ_lVJ$ZZb55fg= zb$XdNb_5kMcH~LeP*d494*FLC!4jnq)jD-6q&vnQk*s zoQmLl6KGVVpDEbs_i3&q@)X~NyK*}6{I&dX{QX)Glu3=s>_puON50pGP-k1rrC9wP z(4`6SX^a@R%)@EolfH=u#w~NLl)kCZ-VcOrGyuPizJnZ}800Z=%p)5OUW@Qg(&|{e zhrbuwHt!_jcS<&_t+3iGOBA7u53I$Je9-AL=a8bPT3j(k1?ik#0x=<;CMH7;_r&xj zL*jaINi0fV;skfxXlQ3L!~yHx&_m=yjgX3SU_$)BAew@bfP=Y!R2oViZcB$vp2phK zE6Ci?Dk?kZgyU1<#^~=_?iLk7K13erj~1VdBoQ}DVuP2Z+yzuI8N*AV|s%x3Uh4xLHO_e8{%aA9y@IT2G@RdO27Q2rtaf|yunM~Fn#>Ur{~)0y>xr&-013po96_|Zq@S^ z4iLrNL(WH))GrgA_+6y>F&T zg32=V4qSe@jws5#yeRu67~3nr7w4)I`$J{)FPi=)%-9&7nM@qf354t|y zyFlYE&!cPw|1o|${@05<^wX*Z#%rHn!^z91=`|UX{K+YHjo^4n)w-68y+3|BfM^i^8+qvt|REm*fz0QS{bwYqSt(NF5eGjq3dR~ zK)YG(m+Z>2sPpdd$FfU9c8$n^vy8N6QKLUyMf%^nTCb(Tfr<0; zy$xD*>gYcWOZKv1|E6{&CMHviN=I~rz^u-uoHjz8B;a;te&Q?10Kc8|LheooCHkfl z)%(1v$F)QM~hbJeg8cC~U!(DCJ*&~oITB0kOQv{E}|9M*H|wACor zcaHKmW4!@0Yomc>wNu9k_sSxa)`SI3DRGSnFw2UMn%GH1*%V@#u9x^3rb;b?GZH6P`4#R=r0)EnB{NY}2 zl)ces6#)iELw--{6)P<(Eh&cTDK5sZbDQRx42z-09wxk0Lx!x0-x~Z3D@6?tDyB@M z$Q`B(W5$hB;PY!gRSEF`twbsfKOXKl)=}<|9O6=up-Ztw zls$GFJfWiDeOyZt|3fuM_GHDMQa>rl8b`fh%v?$>V;V!kG&1TLW|P$n+0skO|0HqJ zWejCZSwwBb3&xqWn2gkx5yH1g%~O;Hy<$@!wsWvh1k*y_x5CrM7&!Vk!^{ZHm|$QS zby_&aBm>XDGKh?62AM%%P#OM7*5zDp>T(7E-)C3zXHDs z#*OC~+_eY{g)zn0W{?;(#x7%rvBmhrIAH8EzJUAKxB4dC(DcXUknd`vuIGB}Bi?A0 zNi&8$58^?qc~HDWwayo*^Ov^-Xx{HU_RTGF8naD|tffKMp7cQz9vK0D0d-*Pt;Vu$ zNL_Ga56rk362RA%mUE*baM-S952n=8P-6p6#=TD6F+0YbZ#8VDRVl=zOtlMsfJrg6 zB_xc*`uRvA?W55k9 zw}|Owqj*lJC3>A^bFTiKKI#i3+``Y0B6K4%7T zyyRQ?K;c?{IU$_*qIx4~v;RRwO50ib@w#{J)QnZ;em@1FMyyMuOZ&^a8R{H|3uuR) zZ&RJd&1>WT5mK|b2C(yWuYEe1^8%%O19J#m9yiGP*?%LwaPUTEL2f~IL1952T;9g? z6c)`bSI)q~dy<=b;r_96|~A*Ftz_+-*Z=+-RI&h0Q$>%1sN1(wWj@{=}4G{qH``dOS>(A2^GEG5_9Z&LEF4E~`U zAtt!0&i$(v!3rW{2O9|wl>}p3{YS+N{ayPS-&DMD>uY#3(D&kvXP@+`zPk8AZSf08LNWuyfbS(wMD-*LyW{#%u|gbvN+;Cv_)zzQ`JTvq zLS9(h2N?yC2o}gKGf7CY7v(U2t4JCs%*B9Nv&<*<`DJ`ccbhz#ZY}zA2{>4D*&lj$ z&s9}ksq(0yRGHi$-@k=Z_J{SwEoBw|Q@LZ9s={^j;3ULbiw_0N&1a{16v&Px+B;rP zw7({oXus#Gt736zq@x!q9Cb|PtDBs}4`YERD$g{m0gpe%3K1Du1%l}L+8&82%ro^_ z>9UsDyN=QBuq3^w@r%0AyxrIIM>?J?3Y#ox=&Bqw4_=fcCFCB6kIn}yj?R~uMcS`O z`z`)^)U@a>(eLA20_X5pEL1-$+#l=;mfd;LitD4cKUeQn_ojD4xTFW5e^ofsy4Plr z9-x9$L0T>HDXMW?S(E}b|6y_Q>3u^dhbO0mP`NGT?pG&24OTZA(U za4O_{_+i2q@abNs{%n26xB@;t#CvF^+E`S(4%7-xnJh5~K9nxsn_V|SjWRReVkw3h z&1B_UQnx0qEnQf$fEh2@E*UP_Ej@2VHIU1K0*pIzYd)7*jroi>*?k(nT~S~9vTZ)? zc?K~YOD?Sl)e(K;(wBYXB2WQjy~T6IaP3`|S!{lDY_a1_`y1KC$4kzA?tOBL$Ucw0 z`%7US;}x$Lom)&>lDnTQ%?+5Vmm0g39f)6C%wM{+Sg`bb zsc@-ysc1=ucS@weY!}K4G}8IH{p7_oo2~v+H&b168Y6bmyXm)HzoFk?T-9n>TIjrf zu6>DkZ;*cX`UrjA>0%d}ZW8BV(mF_l4G}*x@bqtO(|X}o-3u4Y$y#+wR672A(j&#^ zSXuGK#%{?)F3A1ZY^9svapb;*9Pa{N71eWByuTM$mlC+{_r)$9 zU;MiivJ|}ZX9-}%ECnqcIi?2O0gB%_bN#mH@B6pJ$r55gSdmNNOQB05Ecr!2))7|J z(vu~{MQ&Ea(oq%{OOz!SYYPMdWqku;O{Lm3;@rlfLxll@?bzV9YXOA!A!OXSK{0x8zEeF0&4h-!gpd8S?IBmMk0A zizU2By;+fv)PgO`fpwjAn{|uj$hyOFW;uatMP6F5@|Ij#E-Y`BElWXoCN0;Zn((K2 zhP22u&3mXX+>H%7@Z5r(^03T7pB!g!q7%P}&2E1e~JAIam9A?i9 zbR;FEv8o{%tX$SB9DpH~t%%H!>aat7k;a#zm#Hzax{haZUC z&~9&`vL*v&SSOf0?go?dEc9_9uR88Lxs%TNzBf)bKt)?xd1=sjiKc)}bxgre@vprY zRXZuYX9(2^Rj`5ifAQr3?W~{BW!*_=Gpm7RM~Aa&S@kS2{MFXR;b(J`&?TUX1>?1V zPC_dIKiQ+a{i>gQ=8*|=r!S61H}Z~%vuE<<$BjdfH*OFvW5hl|Q}d^BsgN7maxlb5 zDnx0yr%Va^c0vx8<`z+C81kT6MZ!7xub0ciQJ4V8H$EX2svi~fD*1TP*}R&Rvrgwc zw_5{Jo7*J<&6h7OH?>)2kKWl6RWe}+pf0JaN1aPA`WyXD}O*KZnsM5!&{H)Pr8gP zB{7pEhy17B*>(EiGv1E2PEV>V`kV@sFrg>@E4}BXYQ~M?3HzO5p%g_L>xo|$whZem z#aE>FmHS2QEl(f=(4UvjBA+(B>mZ8wmtS|`wY=Q2Lb+c3TlrQLXTjIufX;!@xWeOM z9~|pP?t%Bx$jJ*bcL&Ua8l1Q9LE~)f{Vbn(i`@9mhvoIuJ9EA`=-u2A+;|DRZGhc+Ip*u=A3^N^W^xMwD4$&214Nt->SMYkRa7SFu#!E~s8zChnh|4S$>ycWrNqWcl%ra+rAO4xl{BpyuhNd1^QEr~{0*QddLR2Dm3i_;)Mt&7#qmxu6FYeh|7V$-eq&08 z{A1a9x`r;)^JQ6)kkN!_`nmjp2ATWST(aVUELgekL$kL}ds$U%Q$*u~4V=5+iwL|^ z+0XyA^y>MqrC7rw_~(zpD>l;=v{YCAD&IMI$pn3kCacw{Z9A^oP0^5en(5%Bv(nN; z)YGb~El?{@mUw?Iuk_MzsCm_Nv4=nQOWPxSE1Xu=l58VMTX}Q1w=qRyRT=5CZp@LD zsF75E5EH9%ye^SHwW$zg<@Cr)Fs$46Ht$rvybLArXXZ%9V}R{Y(JB$i_nZZeJ- zOO%=Ux$;GJ(j-H&W)8z&TZ-nVR-D#;ftM1#^X#EyKy`EKhKUOJ+oUVsD$ey5FGb>& zw{G0p6`#koz1tN=YQOwsgt(_(L_bPiH?#`~981gz8bjb|7~8?yOR6g2E7j`c{)_33 z0nYr%Ik}F>If8Jldik!yfgAvsb12T-WOM2|8X= zFh5JId*;f=PPumdhi*J>+&7095$K^`Uz$apKeoj;iIUo;2u|`-&nFK z);9vEKgvFJhSfKvxbSP$>#e*LY)S4^c|=C((K z3Q5)?FlxjblRX*5^=W$TQrsIWE)Ads@I1Pw9?Ly`!T=_IZD;Ja4HQ=k<53nOSOz7Bl|SbLjW4x|k;fxcVWT;YN;T%Y1y00A(sS{mf8 zx(S^ErT~!#cXhF=M#Axj39F(U*<5qn8)D8NueK7{dN5t&%jt4d9i*%>-UW$#<8k1; z%yAav>sFj?;rh$z%yW-R9bkaGr|F{g+p1>;f!ed#C)$tvGy?!vuw?fhV%`cLk>mWi z`g?Ul$>^L87qDh<+l!lf?bqt+%ST+TivLy*t=X;sfXmTHPRLqqwj>n$Vh_+7qtBYjSItw=!!#R*$WXmjJ-h(eV=rTpK!~hsYtG|K53ua=c4d(p&S1yLhb${Evbhpw0y(7hk;ghzt8p(|iL+ zd6yj~2!R~&25Z^slIE#U4jnFckTUFcyUrDIq=UyDcnc`$>bw{~F@EA6&;`VtwdFPB zh~#ttIj_Vsnx_u0iL7k_k41oY!bc)Gy#XDNw+Cu&q2niffN8*GP4kpL`0dj`1i;zH z&D+b>!D9nv7=3xLbN`Q+&zcAj^1zmt0v^8&&<*@v1>T9SRry%}g-10{J>%#A3C4~9 z?hNoQ7!t|(5ZDEjlzMIjL*zJJ043mff-NuPNbQ;hkbcWv9su5Q_=9xPZ$NSaSaPmN zPDkLx@sK(I@ZlLhaR>McI9-qv@H=yOjR#1*DPeQN8vw>nM6CTiG6&fLOPB)kbD#Fj zL8Lju*HVGQ|7o6j%MreY0eQc3kWg^_4PcTLfaYEkT4#Lu)UI)G=} zLtVS~CMp-f`*Y<}i}yt@OjP`UGC*BtPkn(q9%={rR`7Brywgy<2F4%DN+Cy=pphV5 z+!C+@Zr`>7x!vhJ+F(yJUBj3HKr`nSj~ZBiBjEXkH%e3123h4rXL}nr_$uF@T;l|J z)xAdqIcz8#ED4r0OMxZMl4VJ<1|T-THrPWRg2eIn9DXl1J~^uU-Qg!#*Gxyrz+lbwm*p?*}}&aBc0D(iTVTn#&q) z3IMh^_Bl0xOCXKe_Qh?UeaU5cK;+-8g80ASwN`%} z&L~CgS86=@LLY9aT7`p@=l%Cxkodl*ea>9=T)v#U97C%ktGlx3)tZ=w)%IxG`^<;( zEIF1i%R%Ja`wN`S++vgYZ!UpE@Y+i^x%N5Zh5f*`KlEYyJxD+2*wv{#p~*3-%C=SK z<_3;y%s+MG-~%>wk2?daO{P3X=$DuHJPM3?1cvL|4u_{o+tp+GSGyuCxS^yNH1JKT%0ql?K0$nHc zL5{H@5Gig9a2zoOIF-#n*6~Gh;C7CH zI!G7(&f(TC#NiG&i+h6X-@737_#Uuz$q(q}c>oCU1^{jxfxs7@Ai&JIq~BE_1aK7( z1*yp4z{JrAphoNo$T*Gy%M=S_@~AlcK1Dj32vUTTfmNPVAcXrF=VQk)a9~=o9>@}H02r?XN`vfjUwaX*c&0e-?ESl~KQL zCXA#t&Q@rnRG2wAJe7YOy(mz8*SV*2OSx?r74H~^vUf_Mf)6mRvOZt;R~|V?$kA9w z$!e`%E|{;=dkl=<6a0jb$aX~0RP52N)_g?a6$hlcu{BloZ9CcI1R7q9IWl8I%*?LF zNuVZ48i@9O2PSzGBZlrcyuQUW2j}wo!`?+CX;8r@y6fp^_qXHRH90k3oQ@9brX^%_ zXQ7*`QsA>qUS2U`*z2`b$lGef%DG~0yXU;-LA=+I`7%!=o-YR|uHwS6-K7!au!GiE z+D34yOyEe8r*_(OfW*{ckT>a&^eW|{%vvAvbt^&uE-q+q>osBk@hy|jWy z`%VUc4p%rtLF8l+6G@2j|N`_ zD`vn2*sUQE*^)A50La0WTtYUNr1;4h8sKzm1~GB3pNnM2j_lm z%)MBZsrEKelU2RfyXZRNbzNABM0y|4!|6RAnN%v|Ga@tfTC@G!l$=BiC~Z z2iMQwhSpW;{q@Jz(dBuTZ9OwM!Dpbw=wt18-p5V#`n9-J8`{J#CR}!qJqwc{)2HO#tipQ7^9vpD38rF6wr^iSgf0NtlHnS zXc@lgfBo*a`vw~p&4;etrJm~1tuu3IA!l0#+#^_?ng3!_V3cS2p|XM$q_jIG?}63F zm9B)No%2kE$+C0CitRR|vPdH>*VomhM5^~0@(+QUE1eomxLP;s?m0N5d0rQR;m-r+ zDt`3lho8{0!s@o%&`#elb2+ooE2X`WC^4P1e6CDmQBC8my7iJ;wG2At;W3`@QdKc6 z>*%deJACjH0b)ax#Y92!gil_!wuD=df2xi|JhC2EAmJe2y3v`G5044aPm8PtDIE9D zkZv)>TcP7O+xpRic6zjpQW@H>p&3_g+&SaBohPs>Nn~4$h%fG`1g%|N--5E@A=}PT zbxkW^qt!Pd)yLz$biT=kW3N%MS(eQjW44_@C~#RI4S_G9*ShX@N=j2Twr9hN_<4*p zdTK*+eu36bOvv6^6dx+ayu|wwZP!&6O2NzsW4eR%Pu*nJB0?NHRAtcPz;taLoA^Hc zWFo7~p7?QNbDcK2y>SY4Y{ZKA0-`yiJ+q0xjq*%pQ)(MdPyuU)S*bL8YM)&O=|U68 z?&XyZdz5-}q{b?AuAuQ4+_u%cp{C(DmIt4XjbHEeZDm0a&OP1Ij;P(1UBqq+6WdUh zVQY_G)3YjX3Ve`qa(#xeYJVVJfP&hPJD@hd5mt0MX(DvNOG-9+c!(ao|~Iq zI!eO3h-^N7ya&NxI>Fs_^O(=M&3&m|M4|))Z-%(F`J79wS!aEqlQ6hy-&U8CEHJ#+ z{dn`Um&NA4#?Z|VL~xdjURX1Gev!CPpu=pe{SzRSdB^s%mo{vwL$)LdQ8#dlI@NK( zYCUa?5*DD;bvNmbsVesH$&~EhsyVs6bNM7$%N$KRxS`_ih^Z&X(tjY=npjq~X;;x~ zbrr7KG*>}3YuGHEE12DB_}HLPYc{mi5ardmxmaOAr;pq)qmRg$dNsVjtAXm=J1eK) z6Wo?gQCEi$$Y*6uc9TIY5oCnt{Xxg_iLNFXPx#q9k$EY1?HtR_-F|t??;Dz6{HoI_ zD2Uz0JFq*y(TVKP==uOv1S5LCHqQ1Nwbrz+>9|#Ea z4EZ{`v}~!`4?az}lN^sTZmpQDoU%ZOfEhlf&1xtQ;)mK~h|fBc{*=tE52yd0&TliK zi-{J^46wZDJ|Pe3T5Q_H1r$w0O;kg5c~j<<)O0>1j95=d0&{QRbdsnMyPfb7;zHL% z?GJjey>bPagxlDtAa5d! zQP-$X%62!Md#u-s=szc=P-WQtO+BJH#%U^Actb41u1If9JSvrqx(s6+ig=vL`<+iF z7tdY97ChfR#2qNsjS093)#CfAVg|%{mXtqRJ(Hu@#d;Q=EVK+2$hWnYX|j@uxR)&- z*8z)DfT-l6eu-HR`MW|BLJbRA)i9OEVXJ ze`Wt;e`iZhwM{5*m|~`3?&BgGsAe+vq8MKo3M%;cuS}%r_I;&}4xfaMvj%DbzOsXz zU)vsraVR`!G=w=+I#h0~N5DBMDYZ(tTsLw?y3g^VSIIl)k@?nHA4$n7lZSah=Mz9g zFV0|e#HQL5r={k1ZYxXEaLZ)Nc`p2vrlcDz=vFT z%8uIF*aXokt!P#pn{y_ToUv7pF+v4yrC_B{$vNssiOpE{*J(0oe=}g~$yRlnH}9?#Q+jdV(fQf; zs2c0ybS>~&7Rb&=e+>GuIWk=v_-nK5aU;tH8Om;?T41jrtu~jZK6S@2FCk;6;-}JE zb(07kwG;7457gXQNZX&WXeZ%rZOZ&awvZ(F7qdxmQW}F^xLrh{T01(l*OwihGkOXv?^>xVhD@@;@dVR!pO4-SAtTsNsx9cW6`~Ve zw_RH1Tq8g_-=v4-ni$wn9!hZD7;aDg;L(Z+P1A2{i;fI%SYkvuO^)-!VOLdMN8U+G zwhV4>6L^Tf^ADTx24@GB+y1?|UY$75Bk`|bqIHY8kV;c8N%sCjHda`>hZG8>i4j~YabBX+YZRx?X~UWIJs-P zgj>xIx4B5_r)63x9xX&;%bK$twY{wyQ|!mIL$K z)+vv{MZYbL+VXG*=^@1`$_dw(cq!D4@qFt0kv0156$d67i|jT5vov={7*y}6Pm?7p z>kSgmUo}3i^|HKb#&|3fNrH1boPfk^wQ3H@~4@gA{x<%J#Vo%2J&sZX{qDfgO8b%k3lZz(ChpNaMQpw8a1 zh`V>_O3ByOyrnxn4;+U_;Df~$_Xm9o`^M{P1&jQ5Zry#jBgY@G^HSO$<;`ogDLA`d z=Fbk@abqj2d)oimlv~%y@n`dG-=YHJ-t2(w`MTtsQWu<+Erb4$Rq6)`&dOL3&$B38{dbBFoG) zZ(abIguv$9CNbo;2=a0&N3qz|1}*!%f(-&9bI>!R%&o^ z7>_?3wiK8|JoV0yTNHmqGkbhPy>MhkkT=>e#ycgytt`Nk|AkNlcw zPXSW2`?-Qw$kEcBaA4;=QLko_c#BI$fqa?oWBo(AtAG?4At_Z;+N;g?D9h z+T8hyVtnQo_Y5SL`cMi;(X0?IK@Ph`X6*IVmyjg3E0HnUzC#_o%?vEt!cj&;w$y}C z6aEe8W-{#5ZbH`XKq{8^u?R8XG1@&Y80SnNDO#VzW1WkK4z=Ci9+}37R2tR7paYaS zMQX5ochl9~hmco^7L*dc=Vn96(^izUg)JlJwXIr>+!5CR$K7>fzSP(NOF1{&=fuNi zA#FC&d`0fN0UMTbNtL^$-#p)kM@Ypq+~2Jmezf~|w;OreNhallL)dQUE^#PA>dCGz zB7C=z7$Ma^ZXvLB!;0@OwZaBkdUE_12-M9J$p5%sxyXbhadtw9ff{&xnEEeTlOKl}` zxrg{n)(nCnE5g1^kFa%-{;5_(u^Bz8EBY`!8{39Ev8>ob!(QJ(;Plo%Z@SqQpv34C z&b_!nv}LCYGM2%^j+s^5G`e|{?nR&vk!TJxH)m)x6Gj0)zU=1VR#s8tbQ#;trgf_8 zcECT{HZ~r&>U4V5bE!_B&ujAzO5eb_QJ+*n&f_qNDEXalt$8_#e^~ZfrC>tbU9Wn% zpxr|?A-lxLfL(bL;?U}1-SDxrx?ySFM&kTH-LSyNhxkjIC-r%^ML#C*-c-9eIXV1x zDtRYs;c?}fuVl-GvfNb&b@`C`h`b?W*jS~6Qk^P*c!Qs89cXbgd0Zz@MXB;ziJ@M@ zrdR!&N>rgVtZpjo4#6Uc3zVS_NiY+?pzwgnIdXP;j?zGYX=QIb&HkWT)KQ{ZSg)5= z(jtNoG04O@cq^+FNqc zdN7UX;1er3N=x;w9W*K5Fn>j+n-gFh5 zWXkP|#^~P8h;*0P|7!6aN4NDEC2(@tH-s(^i!^|wAY=N0xJLk~o z`$)gJ-I$Nm53KZ=&vLEfHT--_;+g)1-N}!Q9?m0$d&l{7lyOHtZ6MA$xFDrIeMEmO zIDzBdp7d$L2so#=O7lXu|7@l*UV$TS!RmZC=OI;%XZlrx)zY2&3lH@H5cp?>}gf{BrDK5IamjkF|D6F(iL{=1GC zRHCfr>NDOLgvq!LzcEPAXSfz2QbPYipX)dH-Z=c9F$eSbr>GQ6K)-dvu9Cjp1b1z{ zc2?yEy806gb4%_z3jV39DS3z2Uh3n6)|->NJDjon^APGk^xo#b&6fF7r+#hfFSSMg z*nGSlHPcLXrBG)32tN?DL{GMM@U0oy?fxm9G3M0xE{ULrI6z0R_h6pLq`6m^K=S5h z5B3(ZclR_ybm!|B`9yhjQ4^&BSa>;iV+t95bbaOA{-BHJ45v~^`ZL1 zMw@8?`s!JDxD_-ZikSa)R~LzzU!UF<>F5{fpnFIHIS(U=eVZY|r`gv}d7{SyBnMVT zM&wx&;#+k!&PmyUwgF4g^BaVGK-e}wE(YB_Dt!j=%j$9C^NPof(Ow(tidKi}ry>s3 zKW8X!3FPj6;%_na9&Z-)%yt`f%5d9#e#P_ZUNZdB9(Mk}J-Am~RI^iDl(y6B-UGGU z#25k(!3xX0l?Gm6ud-vOm4_w4e49*CGW-dUM_gHr(GEwMN=U* zlwL^~aB!)g-ER0gtigUSTQ&2aVAYJ?^wp1Xak+%Jxbe0qKGR{2!F|WZ@anw;S1k{7 z6nrmZ$~JEc`$!_Z=aB?G=syDzykoDE*7O=1(7i{Rf7iQ}ofsZB{0?*6BdRT`4Y9XA zeaaoZNoU{nD4LPJx7`rubD{B0*mS^!$GE+Q>onLeD;f;*=z0a(xqgp`mZ-llM+sP} zoYUA?tk|1qg-m|XvqZ^UgFS)$ z?|a<)eEWy?q5C5HV*7{pkM0ZZ|K1bbm)IBH7vC4!=iisxm)cj@Ke8{qFTXFje|-Pg zzU+Qw^t+|kPclYzM}2($Q~zR<({yAftm&$dfIC4D5mK~Vh}Xo1q3q9B?$zwcSpHez z&Kj!vIt&m(qgvRcy&KKVd(os9BlIK|Q|L|bBg|gF#;cmEol^mHb|q$T@7I*3>%iVZ zM*p7j+y-WM^6^nyf9_RPZp3lZC z?R|Cj&Oi-hw56|tYSMKE$KK~>- z&c64Ubk^W8X~F7TO`1tsZD;G073Wmowaqm5YhNsNDAW7*L(6QPJSOi2$00 zT2I1p5KZu>P&(w{Awgu-T<~!FR%)3Lwhng${T?AQBTo3d@o6%6uM}6cB|eid@EV%% zz!s~_PTf*LDxqAFQ4`w)@~6|ehuIeEW*AP83UzyaH)?%-hAN|Pw_#mJw{M={kBTl7 z%#17iGwajv!ExPK2NCSrFlRR0RXzc_ISe(wE`OHhU06UaT-?o9%Mwn#_DoUGKDA_Y zU&?)uRlmuI;jb`#w`-B7t#G-CL+UeCfv^iyjxmK-XnStCom> zAJCKI+ucBw;1JK7xPzUZ7y3^Re#~DYyIa{6%E<+_{iy7zs*d)mlI*zbJ^;PCns;ze z+}rL|mEj&5P8EbF?u%0e|Hb~3G!Ax}sG6!cC``shGU#=}0p0|UgS+hQC?*#6-_nv!l&OZC@v(MfyW`AKH zVg=AX*aQ*>w*#L<^1`N&j2Evhnu5*?OJYmmFT4Q*5@^M=$7nh)CjANQy>VCwKkN-J z7E3V^bm`0nwY#qJp}LG(hu!DC^`LM|Io@T*{D^fOE_ zCZNP06WjJ$=;w&K%Q_AZtr|4xVLlWP4xc0AOcn=7{iGq12eyv{CH0bEq^P+u((}1- zQVq(R14=Xw^(MdFtOtP>U?QM5ur2Cn60r&Im=M5H0=4^`K`$6{o2C5!~-LDN}YMxANLAd=bN5%3bRVae@TAI+Kh2GcRvaL4S)yC z=VYi+mVdmG;VXW00)OOP*hb#)B~lSlo^%k5t*9QNq3VW8``#irsAkL^2xmYLjVehQ zltlZX=g_B6m3>T9C+0FqJRYe@ZsN+Xh#(NgR8CC%BC{(iBPeu{hrH2DCoVL%dv=_I6( zF&MkiblxLokh6y5D>cbodOgN-qmVvK~yJ+I3@qjP?AwQN3ZkCA>my;yHX*ofVMI_xYSBIV?mc(&)U z6JadM_5K*$wU^9)-=65{(pcy05ng-(oIONcXN2wsb=D23w8juHWq1s7rt9ppRy(X@kz?xtrX@YcPaf3Wk$A?cPk;x=- zGKos2;OJx)nL=ihX=Dz02ZfI!Kv|mYXg`Y}6Y{|$Pe8q1^@}9RfMV}_ybO#;2*(mp za=i$^Dn?lRT>4hxLFnpiZGZ2j&qD+}uHgvfW@j|PVB%obag~_gVl_uQ>-yWMjpeuoT@5x5(#yd3l z%^f3qqJ5wOogwI(6a=0MgyC0wIlxS?QE_qKIxrhdAXH4;27lmDRDhRn;ZN4DLaGv>XO`fNNe$Q?ej^#qB8ONzD_bO_8T7E^0a-B>W!`!uNnQ*;a;>vsqrJMARc#q-|_@e=1u8KgauBvTB) z%3H;oFLLfxt{}k#f2th#QRPF-rBMHXN(N)fz<4aM zt5*{!#_Lt;Z5G(2!JTL}@LP%#`3c&E98}hUaYqYNN;>b6t9#wR_sP8&F6trqS@|Qf zDd-6~BJc8|{CEI)Ek+r*Mr!E_BUciFbCfR~ht9>n7$_;ozV?#5%8L&AZs`>{rT<5U zRYwxp(&;w_pp!s;HvwN?Q`QI!+5=D7Ar}X|E!ImN9$K3mrqXJMheV0a)Ij;5+_%9k zdXtn_&MF#1h6=>buvg9pbnlrc5GO4)jF_1}Uh`pJIadHysB6^ME-2m^>PAnmZoX?W&a)EONpKugWrI}=f@IymD{ zLaiGUqeYPj*}o?xXom(RXm`NG+!qxX$l@W`P`{xpZC>OTgjId5`?H!1&o|AI*aLvU zy^u<@cz87I8RZi%`rr?e9w{FE4#_{Dzra7*(lft1VYZKCkif)o$w#RtsH#*Isy@w# zrc2A9C{qn+*J+n&iIn41e!R?#UyKHoB;MBfEl~uGJzWTMi7ka;sBwc#%mE-G|K|!K zzYr&+aU{hcYGXOkqQAfdQjN-nT4!dSYC_HI7BL}}o=69FTS69CZ)H3HEsM8AgZVzPSWEk33Imfe{h) zq-YnF>fEz2Qo4Krlmi1Qq+{Tx6kV(eEdgtWj>oi;tYC<-Xqworc2cZ$OOFJ^y2lkO zmo6ZjNZU&upiPlB$YFz-Hr^tNtg_ifm1m@zbLaGWSguLFzGFM`CW67)ddv+p;j+)eh- zFD8q*EM8j1vBW)<&4 zTG~fDmeErVp?IFgg8E4<2DqRFvHps>bX~eIHX0X=i{U|yh{F{v0`KdJOZP2;7=rRkCb#g5F&Y~sR1|irZ@^zHFe~mtRZ!u!tzOn`%27B64)7k+L z1xbm@@cHtUy{u@wMmPqJT?(T#kf8~x33gP`PIgRldE zyDaU&UC8j8)Yp~C5fvM5Tf0ia$71q_3?IkN1jUyfObc{+m%T8wFVh5eZ=Tp4QWjGd zysHMWf<1wKI6gIY07(L7lL)9somV@9=01}k^fYSjI01FHH0S2kN)P-Jt=7Ra@4I%f z)rGO0P6Fx=WkF)cZ}J_d zZP17`Z{#JkKGv)xkS@D7g5r0FF!mjU!NMs;ddhS>r7cQwxC_G3_q^Ho6={IPH z7z&Jd`eBAVBZC%4mt&k@9A)gl>(TMmN{FAZ5{l|jICzb!)Llk-g2{%QXJ~@R-BJ|9 z+}jm=bxBbX@)F}_gWc#cif3h-5F%Eoesc8X=oiAP(R86S>`OSEMxP1Wn6G_-R@?=^2CcJP|KWu>g71y+`W!G*-TH(YP<;^Cp#IJJT9e zsRMEePn?!cmIeax7q%kHvywXLJ;YEb7x)M2HI$N7xgTfOLTHH?r{F7{2HOOH4Jg82orDf@|=o6^iG26R<%cRol_sakZ@M%&JMXmI-j7jZqv*2xq#`G$!#5iUD|puDS^C0vm0o~t9Hkfi4GP} zq+r$bRI2R&t-qTnQ{C0W8R(-+B|n?3VoXCTiu-w%{3nPTpvP!dPb)@o96d5U1|nWW zoxlphUedfN4z)95W`xUq9!$n)2`p7CR@h+6})M(mX%0Hy*Fcdr_M|$0qcom$zf}LZ4_b}B+w~5V!%P?QqOuFhw+%mBt z2=jd$-yp+$43;O^(#{VZK+*@WK!AJDoIC0WwyXL+^k-SkK)WTW~peVAkURpTP?GKMUf?s4X4Vmmw8r5~wzZ2Upt=cn(gZE*wnv`9w~ zh`JPf1>4WWW=K=+;y%@}zyiFLeFOC(WN$DI{brZBDFl4%htNp)t< z4c;d2reH_7{U@-}Td8RkfHyqgKr>27_AeM z%)@jkrU;chnmM3B3mrUK?Z*Hl?Pu84bAaYOTJfulC59s7IP(MT81p*Ilx4y)XUQ`L zX&33c#E&+I$V4&1UwejQwLQbbC6}l#vi1%)-s&oKVg*)unTSrJX}|4BDUVI~6TMg- zi|qWUEHz8N)W!}Elfx!{seY_uWqnl1qJx)S$$r+809ejU0=jG_0fq_w8;^3Ut!~!o zZVl(0nEcom!zvkSx=&lc0()!G3%XmW_?fX-YGTgFh%0D6N}fb+kO!Y2yhWTE_MAIW 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 diff --git a/obsolete/fonts/xerox/Xerox.XC1-1-1.Souvenir.Bold.Z b/obsolete/fonts/xerox/Xerox.XC1-1-1.Souvenir.Bold.Z deleted file mode 100644 index d7f9c46b11c4c9b25ea91bfb78c6c1f8e624609b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163635 zcmWJsX*|?j6u$qNF*BIWzBBeEH1@HNElZIkAvE?SYV12Rj3puaQes5XrXiK~p=6Y@ z)EiodZ0&;zQN4Y-AMfwpbI*Csd7kGgovI*612mobs9MLTgzTy!K)+u^fH=Mc3Mh^S zop$1cN5M=}VOl|x?>MTZl%P$fX;J*Sz|BQSdImM`Ak34;O-UF+VvVZJ(@CAd)%W49 z8UB@m&QCpoGS~X{e`2L0$G}%R@nCTd!bjQJOPp%B%~8(T_fe)yqOSWDeB#`g;Kjw= z*X^&`%vFBtls>cT)W>9(u*df!_g(f7Wsx(;rL+H@B_e;PGCeKu$wKDYNmn!~RQ2r)fcz5nvNH z=vC%17BJZo17MyzwVi8MPk}4yQ^!;m;wqY*j)}l3w_{)=dyCcDq^3gr(f7q3wtO?O zC^ZXj4>-2*Gp* zq?O3h6um*@c)+2ELi@bmbE>#!(Bo`b*$ToY2E2tP#Px>t6eGZgZ}^GF2kr)%U?^KYI7Cmbm`+ zmz|ZIF8E*t#nV*Dq32_wpBY(tAPZ;L|9@Hn&VZQy>-nW*43tXj_fC62XZ%c5w!215P8(dq)#c(MK)3Fgo zLIJbcVHY^Bh-@5{trxo|lWx3=b8RWz2`A4du4=Ium6h)K8ONMSQxUz=Ju|S_#{ti^ zD$vnv_X2}31TJR%nsCz$Jl0|Ms}%*Wu;UUe8w`qFMlpPszQ##RF%%yym`hB!ORjIu zyiy?)cPq!GQeQF4R8*`xh%zI)G8vhg`4WzHZ0bICN6vd1W;!aVMgL z-%AUu0E3FW`fch(=)jF9BY|BIlPoyxldw}Jtt~eDhJPr=vs`woJmsM3YjbE)YS2Uj zW<90t_(Jm9)&2?P%Ue2N;McyMfr*Qk9JjrC?q+&T<;f*c@ofRBhLgS}$rmH54+TBG zIeF!$$)()DL)2FmQ`aR;yRz;a3RLRxWh>To9lv@ZNJ7rD{*P;CtqMthc>t8b%KdK$}mLhFYVcdYiFUT;b2W07P4Vo_S^rCc%2KXbyvxXH* z^+j;19P}x(-!;dN^-UmgO;kB-BCIewfe7 zvK){!}CReU4f-waZ|q0f~6{Ras64k69=DEgHQ;!bAI4NZx$ig z8Gf;MChh=DKQsmqHKx#j8>d0E;vM37@czOniKHKOC4nD8_H(Bss>RqgcMSX?Q6Kte z@d{Yg6M;i6#KvGY5?M6}J?G)B_YJv!O*pyvddcJZ%}H!b)j9HOHPykhu0MsVWJ2Hi z!nF^pX)E~B z-{3Fz4VZoV!|!jf67{#!*FVcg@7SuO_LC9AD7yrT_@7UBk>f9J*nGUK`Az8^E%xir z_!U}Hmi%Atu(=_gp2}0z{JU-yl()^<7p1CdvRom)iOTANVsmYHRy>^zY^?t8gS+v{ExW5CyI} zf@u^WU8f68(Mc$j_WO8jpNu#foP-#Is6?EB|G~wGJ!jp9SK+c`ATOObyf+a|gdl>u z(oz-<%DJ&OBQrHY{VW|`A;x3p0cx^2gf}bRud!%vD4m#u%E682?LVuE0T@vv&dfPw zca*7-G_!4gfr+$x*c##R4hU5P{3<4^Bd2e$H$pNn5)IG@FmOMT(&-WOQQ+NoSQPhy$ezwpS zVD!cP1B%TRwTijLc^qhEYq!d!uvojZ+W*EOVZTaP>V}I+^A`F41o<)(=ZJ zH^6L=Do&^3rq=PBW5wRhjd=%M7 z-7lj(HDP5b>&E@88;SoS0@^Ecr~t_a_;osdqoR79R!sxQTZ;h4$Brzf?DzoTh`IaC zz%DfIax(BlCDV9N8l_gA1NR+LUE=qSEVbNY||_)~4~n zzH_yH=W6$D)a}`*@%X^p)sVam@@h!TQ${8D#beCl@iA%mBI$oOnQ}NKA#^@sXg?iS z=@8}xS&)s}mmzsB{7nI>9|aOg82u#V)H-gfLTrQsCk1@kZ?w;<+yZy_GI#f z`^lfu8}Sv5@=;93_2eW}*``#&u5)yYhJ3PgtN2HjJ_40@6cx;cx6Vh^-XP_zH*X5I z@Eh}$GfsO-Cvew`md%+C#jF$Q%#ro{Fj44>Yl@0nf!fU$9<9YXriCH|W-3|${aAMz zuDiHYt1j9s=JeLNHr0#-TOmN9wb*}*Sd#&cvVfm<+_};c{wQxmx=r7OY0$??C@!^W z5S#I=njw|i3!Sw`Wb{)KPMiCT67th!6YU{j&Wm__GQ(XE)eFJr^{cS*7?w|;R_K<+Uif7 zH*smvPilm-7y?2*?aNteYgn~4wA%I4_!7KpgIMs{<`aeI_sCxG^1oPnqM$UR8Lu2P zYvN>)096WIXwWGR9ja`&a(KmwJ z2m>W5#<{b3&uXK?`v|VD?0Vq?z z&T-iUSKo{lx$^SH=EvrQ(gVlKKG?tBxYWFpsfNNAMK&6R2Vtxb0W=^kcg!h-|1ww=4VlAdzSjazr<)^< z%^n}~yR{n5J12y$VWuqa^*&}Ou`kTsxL{nI@rT&3#b=$~d2{Hzs^`zX`fUw?sK$7? z3+wDu_GH7gvkb}@swb1#ZOQicZJRXfzH`0&lS^8t1p6hX1Y#?q2KnUob40=6O1=1uoWsfpI5iD&GxYGUp)H`BHcm*!T8sgWz^8m(rNuOV64 z6!|Q#+xNYSX^0At(OI=0PIiXna(RRdd2fLsf>k z>Fqnmr;0P=TX=vGwm6iH@tHfvplw~=zQh=I09ba0Ex@_z4)H7S>B6XN3@%+59}n

    drNebyUhyQcpxST!{18Pd(CHi5A$7-Ll@L#@}E!?&c? zx*qI4E>1eGwKN^`U+W*AM-$&BXEFCbaT%T_j)#7~F34peJW94$4}B)G@86nyH1CvC zKkA9fTKkDDL6&jyck^{Kx7YA_1%UuHe7DqR_)6|-R&W8Mhx2Kj7FVOtJIWHx!NSf+ zHWonQ)4ARxR~eXFnc!=&7c{C`0}-I;y0p;kMP&0}E`ZIe(92oXPmKxpM(6bN*t7K; zc+on-6s_IjWkSYq8IEiLu+0u?U8G&S)p>BvPFfhPm5o}EJDwD@{n_+sg>t22`=Bc4 z1c<S7?`J8;8_n&Q9dXZY^ ze#UcNMS7$9Ke}QXjGrT)_t0uhb_;r=PS5E?E#{;v%zGH?=??j>iO;gHx18UgaqKLPPdr5n>{34$S>PXRdtYqAA=7?C<) za*U!^Y~x>u>pFV^W0?;B9GYDUG%wBLd5iH1(%EtZZ1A6 zs%LmRO--eY4rjO`8}pB6nF_hKN~Nq2s6Uyi3@vq9hY$yt7+soVG=3~Qw`sgPzrWb( z@pCh$$~c?Hl+tx6#wK;UAo%67vDrUs5mv>#D)dI<{8xLrNR4LV$6Mv*YBH&s42=>d{WB

    s;?S)2( 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 P`_6x9?e3fAvnKxoQ$Wtu diff --git a/obsolete/fonts/xerox/Xerox.XC1-1-1.Times.Z b/obsolete/fonts/xerox/Xerox.XC1-1-1.Times.Z deleted file mode 100644 index 200fbbef817f49f5f0b36d6ea0f8aefc7846767b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153037 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

    l~C-R+N7Euak9kunc798Dlt3vQiI}T7mG64 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 YHtY@rmW6xRlSua?xSb_3HwHVyj z)9+ZXTt2W44Q6C~W~Cwzx_@I`H2J}@4;A1)vA(nZu)eT7C2JFDws`atOPcLgV8{Zo zgVL91fo&46JiUM0<)hTm$4I!Di`FEQmHmh9uL8FuNm}XZX-KlVMfX1Ftt5JmxwZuq z>l5h}Z($9#qa-+XfCrJ=u-^cp*&+AWOlBT!BpQFbM2YhRDE>iLzf}av6zP;mVMid>s05l4Q3y$ct{KL1f+#Av0bOG zP_=W?G>*4_Q9RzRpjn0J*Tt}3Gut|bCU&(?#H}^W(>7#GQb4l(>}m)Kjb|HD^7C=* zVfGDL2J1C5&PP{Q&{#L@U2=3I}n6q@1}U!6(fq=6y1BP=V9LXyJa76qRugR zp(?XhuK1t+W0iN+uQTTGchq%9HZ+tvKc#CM?QHpJhsru#myz)ZcQo|~?g@p8yCA@)U}QBz|UpVt-|C zvA(dsv%j$)5Pz_Lvwukhpby6m;P&~Vx)@ZuZsT4hxz}s}+q4(N=@|LVQsMwPY8)`f zZCr&zOTo|}90iU7Ta$yYU6|42s8S+uZEy|tAa0q8n>pV3Gjt3-)+4|B0{g}OOAunu zC0fA{MO|asD8{Tkcz-V(IHr<=?*XYR}qYhQKQIm`d87T#bN%Jt^Dde`+qV>TpLV+i-Ap^dPjq9s841JU%LY53zs(#j8kZ z1A+i6$fxWh6)UV}{1)2{Ygggd?S|E=+h*Tly=1;)kC;(&w^`>nPg$>7MVvy;ANEJ~ zPj)%yFS~+M#;N33HT(hG(<)1Qo7%vM&df>&#WZpFw4bbt992$4!Ut9pM~R5$v~VJv zJ2@CmMn*elqe-5F<8*L-vU)gOoB502)xOv$$}WyQ@dI^{BRwpo-#GA+Rm}OyDdjw2)o`jgzc@cQzc~+C2u>R@DYC_g zmJ&D^lpf(6*j8u`;`+pil-0qK8Gu`A0_Fy#t8+!lU#$Y$c1o_bCD%|cV#vu}mmAoY zjne0KWc&CVai!b3qIJ1inMDZ15R7dY>!+{Lm#weTnU%S3_7l?4)dg&gR;g~Fu=eIbRq(F%-32ttQ`B6Q2tP-SKq<-1Rh1EXxuPmqpOPGxE~2hB ziK#^Hr|d5=Z0ZPCNzNsQg`D6jk5?O}XN6cCO;urU7*e^Y=zVA!_cZR_&`T9?mo!tE z{uIq`G6C3IZ5^*`wcgP(^#0z*}%W& z=5juBZ?UvEZ`o>cfL(Q2KSQLr0L~u{fCu1~aQNqbJcbap7m(M%Rd%`Z@wef<` zRzArbGnt(fcW(G#7-0cL9{tnRg1CdSr+gT_g6ikZu!y`%z1}Pqbfxd29dSZPo6b{` zlUC$YN4eDyGVf)Pn0f;_VNb%}H{CBIr4QFAf>{irdY?8~4DKClr-#U=7Qgm08{`86 zD3XvX`DWc))mOz(6jy+?`h0jRmr=7|@Y?@^D24vpey-SDT} z944?<*I^xy`CoZ_0C%dC0BiRq*0?<-9sxCGR`$8}FCo z>XWif{ttajRjJ7g-7~M3`JCei`#xOj`Xxs;N@`@IQI|(-zuYi4bGSmIB7XnC=qa;| zuEnTjYK^)gg%n35E*0<6qQYLHF7BT+!zmVW@YVjOxBs?yvEu?8B4PMaCQ8@m!qcJ^n{e2P{%-%UU1 z*Y`a2sj1R23PbA{sr%>{AUwpI_Vr!m6!S)T^4yP2wd&eAO1$B+UF``6R_o94 z0=nPv-tbJzv-l^PTv>-%*0Nuz+JF;#AFxmH&hcA$Mf@C23U7;J)SJ&C)Slr~u><6{ z?CW{8yuX|uyhz?(UOm5wU&}wo5l%01+Tc4_M%6{UZMKqJI)6S(N$xzV3E#z6;iMQS z$ys}Um+j~CSX4ZLPwXAytB(%zX=8)@aXyhh!5`sY;*aqs`COKioEwSC|1ImuiY1a! zUMw&AGwnP=8_meOT@x~GX?>q(ExXv156cDYq&#Bh^3r(gtQ_P{3DqFsy&gb5hU|AEa6%L6d^m4^8+ul$ELw@nYsDJo% zT>t?ZcbEJFr6BNU;cL&)17X@ZiqoWiAnq_doDevsE2k}($#?hMlDLZ}9q2`nApr!K zAdH|ZaFwju28o9Kdi^$_Mxz6|kFhT@pEp)x_aEC#ZgGC?blpd#^E;l2e{P^Z{aewe zi=}(W=cs85|2Gf7_Y^enYk1PUKfKp0?CGZ=+MHMHe|ev|DBdz(zbcKBSW&?5zfy}2 z7eoqH_;G@1=M7eqOr&(d!g{!bim}> z!U3}oPW0g7KoI3cJ~L*Fb-Q9W35ENNlVwaf$>hAlsYBu@rV+^;KZ$-=Zd{*tOt38( z&n5g~{supV|BZWFki?&G(lLS|(gkUPEWs`QZGIy^L*Og;$#%1p0`K6ML)3Vnm{Q>d zy;9-Lb~%1&zXrEPsLZVsZgYD2wmC{(5UvOZ<6aP+7fyzy<=R-Hgc`j4-5uF2LK+hz z^u_b?Q;e`e*B99{BsiWK|U5Y6=4M&N*M5|{WpSGlx^h}{78VA%M0beUK zYr{K98M5u>xf84 zVWYKm&_abv5aYP>8fiFJLyc)%?u5x5VTI~JPQOBx`)0p+WVw}8|Ire!uG=((OLO@K zT|Mo8M^0+gWq-Fr>)bijiT70u7p(%$mF$d-;{%9^kzy<#W-c2y?))Cvcj;$(6jvcm*$VX81im?o5w>~u1PJoz{I zH~D9Ur-f&PM+F7KOu_kCe}QN1S7L?mpnIwCqDjYWo>h-9G}eb_>(S}B&ADp0&GCrZ z<|yar)ey>1Su0r%+%K}{i^pd(Q)`5O=sOdAN7H7(>{B&-Wq%=Uwy&Xd|vQ@@{F3L%wBvYBS4sY%vY30PVpV>F8jHHSdtSd!-plOId;WVw-aY42xO z1Q{crX6O3nSoyHfy|s96{c^yagWpX`x(?O^aB`Aq-VX}iVfN7f9(kr=Qv1FzC&mWn z<&rS?Dr7F@s-bua<2P;iqa)Anl`EXETS3XA#+2S!+2n2RV54PN2ESoAYH~S1l{yVY zlYV9R6ocX8?5~aa`Bu6py-8wOe~*u|&_+byH7Vq#eeTUod(m(~Z)wI#G!;MM_YrF+ zDr8T@3Fr(R52M@^ACXFzbkXKuQwGwLLz8KEX*+A4X0#$f$;RjhJEpj2v$ZlQ>KSSK z(03|Y^^O~j*rS;$KnHwe*mLa+?t`A3kVicoDb{#vu(^HC;1wvUOp&T)SU z<18YvOw<|*6NQGuIkIwT7fj^7)BRXX86ol_sTuJpn}yPt1~F&Ze3Tpayr_V1L9~W! z6~P4;MQG6yOX5NY=@6krouX}izp$uho6|4s7HFaSg|f4?>Uq`vhAp$Lv!kMO!aU){ z*>O?6a8CM7>K#1jnkek;z9|2DQI?COk>Cs40*&lSYT^8}u3Os`n}!`U6@ zRlzk)lZ8_#)5z~K>J&A#MmUZf!xPIi#0FwAf3`M~SWbA&v|=Q-FQK$^#$>t!_Ay%x%IVj1@`v_^&lw#V zcLN(wKUc7(+{1uJYt-$*h>=K=ZSXtMYf%@T+x;Cm%lm=*AzRZJ35ZC4lX-n>*8k%*c9`Y6U2N@W$KaV1eike`VwciwySoL{VB>46kBWTY|egL&oTq(GM z0!=?fH3=A~8qq5hhCCo1Xl$Sd!mrdkE%0~7`Fe%pe7!@A(Md8+_yT91@GkjhgCFUp zh(o=HpA$ZG9Yi#U7DY<}d*0sOEzWWAtT=;nUC^TzaWPg9E1nath{fVHvBszgZ$ae6 zjg;_3pn_RCQM|=GNyrjY#bMN3aR$9W(z|P88FaUqMUoEvBqN-H5X+*aM}Db(blDN> zqAVP4l73R%B>fAyV^<`Hl~_~tdP+DOD@t~Hj464FZRdoIE}(K!;&&;EEc zf~LPij*9WsRyWRby^Rq0C@|)sqxvG??#vaR01JEcadxibIY9`2k#uSLEPW0op8Co^ z**S;OpL;BR-1e{dYg?gMv-_p^e~6DR%~g^XDR$XW)g*mo`jZ|*=#pNG8|-Z8VhDet zk}tW_D8dW4bjTGJuhy1zvgRZ~RErQvRh%TO)(?pt@wtRMsH3doNGsf4&__K$QDxi`!Pk z%i<<{oVZ6V0kFi{CXT5$7Wxl->_u$IrIe+q=s$*KGv^LM&q)GaJFjy<2|7k((Hx4F(&CgQMDaV| zO?F$Hr>JiJ6Sfd3GC}aIYx4LZ0|c3iCyZsz%^A(F3QXqL#R1(PXY=Qbxopvj$dg+y z`Yn4(EJU)zw>cqmtpYvCnB1D1G|Q76a^`wXx3ENxTnNM+eP*^#l;!JVkusN3b{8=q zx@1r}_p>3L4}@sWUx6B#nhvkG23uPUicNNQUy>hnI>vaBAHjLvwzC_3CVzIA3zI+%-Y# zp)>pvvmk<=oI8oZXYrQ$ctEFG8nfADmzKhOaiulxsSgT=GDg9xMCU92AU|-n>d**mEYBcdt*YWzi!?!x**? z!+>7)*XM86U7!C_cyqo3GU0X`v6=G6ExzL3 zJkMRUD$V$T>JoS*LT9RtWgon_?Y7Kq{wM6RHHPD#kjDn|tKuL}RDtgF z#X0J{Y{icG;j#{apPB}60oCSaElF!!t=9oS0bj=I2IaC4t>w9}8RES_EOuM)T~P8VA$*k&TsT^` zHC95f03M)%n!+bh* zWgapSLA9LqBSCh@QFGW59klQ*&WjZq9!xNnt5`VMS+x*FV4|G^16jXmUu8|@jlR@RF8Tm}mGIhfGqw=lWjyl`p3W8uoe));BQb>Xt)wFiPod=P23 z@Mz@V0(;@`0(U``c4&dWz*!J3@D_sQ(~Hk#NMz{%LzQ)_;JUStKX%^sGzSORDaB0H zk5K2_!Qd62A*Sbn6UScaW$S=|lQo~4xwA>g8PCIsCb3SsN#pSGQ{&jdwUDqnGw=p@ zeCk9~!QA)UG22%m;*68f-v`z+*ik8&vz14(i_K@~Y{|-TBu5gJ60=J1v_M2-{OB{b zgSV{O89G4d}}7f=3o$L(|efHY@7h#aCkF z3_9cbJBRB$KylrFGJ;k9WW0*AOcqH#v-7xcsx+`A#xNu003fnZOL-eL+WB8Yp$8H3mQc5OZY0lXJN28Cerj7}h`eK29D0eTFcXLVF8XqGYj~FD zqNGaW^G?L0BhO`o0B)OUc3!0fS-eT_Sp1K)VJMojvh=pz>CO<%3DDM_>@(GOX0-!Bw7UK~gx ztsnaz&kmQ`d3v%Ca%T2VQHQ}rY$QF7TRmVpr;!uLs$TeY_EgZ%vi=<=5aR{U0FBz( zaxDp$s1{OuCM>tF*AcxyN-+smaIWcB(2k+?ZI&*hqJXz!-}lmyPgB)OV+Kn>9FL5; zmfc{AartARRR0uq2lCfqcio>weOcw*LZI?)<$NblvwRxF4|E**NVn4Lk*EeSrj4;PX7CiOyh+J<7Ixaz#zPzMQi01*mdfbFh&!>rF?KUdAx-Gf zk<1ul&9ujJ?WfmBHIUaw++gpg^tuq0Ly~V+o$utiX*OcBn73g_gD;C5XqfB~8Y;^l za*|?dMdO?*3vh`t_Fv*NUb$%Il(hwkqlkdat<>&P0p7e*5W9#M#j@BxOgD6XnV!Wo zx$esJSc0m)1GQU|)jKVoDPK61ueYK2ZeN8&Ew(lFKgu0SQ>_ohYOs5%da+=sW9nax zi;Ep)Tf>N@mc`?yh-{7V7n(Ow3uyg5Dyp3DjQfc9eYd2Fwx}q9$B}0_Kz`wN@eSu@ z)?(Y#8Cvec#b3CjJ`V6V;D}OUd@u0D;*ru+kmCMVi_s(BV5$45uoClLpdzB+z$1`E z9}()DQR{ML$;4h3R63%FVz&J`B|5{OSOiHtP$8U4`ZBP^IM$prq6Xz*pJzGwREAwoN;& zOIJ8kMP1cr$9qie#H`wTId@Rcaq6~-3kxVp?Zo_n`A^yRP<;W|0S@-NHeVE2xqfcg?QhZd#Y_8D0F z#4(GdxQjVK%jRU5YGb1&v>Lc6f6Y7957}Hh)8}&1;F`u2v_J5rdcyKbvb|pA{#1Bv zLGp5MRc}q=@*&-{WhGF?vXm#tS4KH=xwSM&HE}tsv|xGMSFLJ7IluI&@>_-UWlK=W zGJLsl=6_1|5qm5Cr*swQ$Vl~zP*6h8H0(35WvBWzv+PdgLAk)z<;7^WBRH?QvkCgw zXd$l1%0m6W_9+ATQ|9Ue)JG)87BZr{6@+FQptWJ9Rdx8M%0TVSC-qO zzMc+{_$s9^iLh3S)0MfFH(af;P>6I%v9ge0jNN z9Gv(cDo?OA!_)B*m4l*HJr9LTvh5|1iUyS7~H z>aaovS9W_4Q_y>X^m;GseZ0zwkR@i_?5n7)k%@;^O!X}86@%qk*vAHJsOeP5>`^*Q zE_j8_B33iovJYe7(JL*I24@{8Ik&hmH^oQCyl(&!ADjQq?i)1d(>U8|n9iL${YJF2 zI$%l+cF$3tvuB)jyi>s;@iyh^&W z#0iD9%v$CyEAXplO?%&P23pcj0G7WDEiQKuU;Bm1caN_u>$T)9tuLQm>Rq`(;nf}T zQJh_>-ZO1i`%QQlQY*;`fP}ia9F)(e`ccEF)xA{GoOB3d3)O~xiMqr)r{}E*$lLEN zZRD{d-DoGmV@IJ&GfY`(|H7BX`}0kR42V{dRMo%a^8=a_S=G0PWFVJgWgvyUIGg5T ze@NF%e^ozocT;ADdCL790K~j@xc>E0YDOF@YT&{E6boKaUFlKN1AL`&mLIX3SNzN=j9UY%+zcWYLEb686gx2<#pe=~e3@`-KD)Yrz}gg^a*vM4#+!mBoXW+8|C5{`0kn^#{&sJqR_@FPn0);g|^_K37xK-VhYtEz#I zthV7^TkNxzBWR`fp-o7S5B4`_D@ir`ufBsj#T%|#F6_^_w*0l;vH>BiRaXF;uYT?P z921DMT%Cs6t=g?>*^d+t7w@TYT8$mJt$bwFb#=tweYH{bZ+CNHJj!kXy?P`7vud=ud$nLSaP>XBB1Kc_Zhaj7^E^5=6_?g?Jkw_N z8BBlW!rl|B$*bUE1(}}eUjRP#l%&V+m)%w~S5117xH$Qo3iQP3)ibMpt3j)rRrSQ~ ziG3?Q<2DU5W$&P?eH|l&m8#X7eU~7T{35_5ZJSPaPH6yHm{BJuFeTY8)nF?pA7

    92>wq)=m)C7C0|%Qp%TeDG|58?rwo+N$|0_!n0ABEa8y z{WuliGC9Lx6Lzwa+%)y{t?5U{%u(hL;^}9C>R18+z-SeyEjIoSCA}pDhoa%&G+Yro zo%aIums0}wJX&K}@Hn=h+_yLfgUK1`4Rw0-V=Lpy$>u2(W^xU`$W9IXg@>%iZjw1+ zr-58)^O7JAIW|066cQ2IyI8tkb5DjQl(V<}sp;*uk=sMrLjUG3AGYVCwWbW&Vtft; z-En!Xk6(OfHay&f!Mk00==z$wW6juR&74EOKevFNqX8W4-*oumFC}LVRSoC6 z^NG2heYwA1-8*#W1)c*?JPa+;l#kfWsuL^004n%5iaobcz}?(-6N9e7jtx6Xjkuak z^DC160(kvz{1FWPZleQ&Is(|!t@XJK_hA}95Q&piVjit@ii}2H%6=YW^-wf8KWKfx z84G{cE0Y7@fr7PIG#tUQClSCN?L2GjB#oFCDDx@-13%f1A`$aA*u;U~p!3a;*$sTm z7WTT{kOfBg{WPBJI!vOx;;h2!)_PA~@7=kHzwaq_cNw}*$>I9Z;S_)yi!+<9-eNs> z(|c=wD(OAIFVm{|o=*myJv-N-d#uFE-%%xKbS^cWl9g;8pM3ITfRB7Cnhs=e7;D`W zN&T63QaOLw*8(&N+M#V&G(+pfAfSgBf2EuLp#zc=eBaUfV)Nj2=qGwke-7^2^xmoK zRatTGd_8=9EY6l*W=q09h-zTUmEuX5?TuDwzD>?+xV0cyxGj@8mK8ddwMfH^R1Az( zEPUgmZ_ZY@_+;2_;M!V-;9XrujNwgHJoX8t5+AU-y1 z^2fd6Ymt%72a})=H8~$l%E7aVK!d>i1~ID(_Rs+gXbbw-p7XJztH{K_|C`xI%fq1g z{ zb$cxLC(7#9WTpl>YXF7TM$d@2vfJ5(stkBJ&$*d}c7M>xY| zKZ6oa{ngp>>-@c67vKHr!XLryLE{-h>qzjJor!7K#1@0#wqR!9%~G8mRQ)YYRxpA7 zNSe}!;WLLXTg&=v;gt7=X>N`E+QhX6-^PQx_xi^XXF&yO{5f}fCqs!-IyYGrdY&SE-j-jm+6!%qfYo8k5=K z5XHruZPn2&d^9F2>kylUxutBjRj9?6ExaE`#$5?Eu_~Gv`>ajZ;oxLjXDJ2qV{#82 zXr1uEU~9FawK4gQ``IqojaF;%yx%0^9|sjO;R@AmSK$gtNyCwzMra9kcwYF+lQ`>8 zNEQ(caWXEJ5>cLTD3KOXQn9EhRxnVtaI8d&NS$`V9Mu|E3wcn}C$jsrTMbc+DpuM% z9dCLXDI^H|IaX6efKNlhj-o*&b!~9DOQq$-Uriuuj z?qs=mO{0$_g`elpbi@>f8oBTQP)ME$E@RP3{YBaaXCxlT${c{pYDrNPqw3oXJY#nt z8<0T)(Z z!}*`SE6;_$mWSbey=;jQZ@^LS_CM3Uf;&`ov1gREMKZ_4boK^4sx*IbzIrhIbf`x| zxz{$$ImV|31*HMaLjm>YAag{kC_3fn=MQ^Vfh$DMrWLQ-1@E*jjJxP4WpgfDC7MmV^L+Z#ArYYU;E@F8O0a78YoeR$?RzPb`~8bM%?kU4F$0Mc+YN)P9%Z{T$#!`R*#t zpg>IeUsiSGeg8kA)_s9K>PRhw2jf#MN-Y5*9h7V&O41R=a_!Kz@f{Z2qha^s`mh*J zP?t|>B#N=5p2M6C?bIj=R4DR6+3mb=zW$qs0xUS6q(T%q*eU2MKS4n2sKM6Z8Fr>I z^8#$t-Q%W`BO;{OuUy15aOZVYU^8ZRG;s_Xy_t)eiRDf^lyu3Q!jGodpK{F+1VZ=*6|9rk-H{y+;jv0{Bkg9n7Y7b?}V@f`6a zNXOnArn!_QC&ofJ!W4Q$Re&T<;7OP|ch?D5(?<@QO{fR_D95s&8v^_@A8NE-wo5<1 z*;Z-plLwm;z!rHNF1)a3CxHVa8jPtNh8?%uuz-dlNU~R%FdCRnHSTbt1s`1{F?Al) z^@$#wbwRYMdNUIo#r#EGJ9l`u>Kk;s(B*m7GRGE+Wdp9r+W-ZUfQs7!xAmPm#Gzl` zu(Bv_OH%6N;D}|o{6LMz0>$v0Lhl}_=`@0B=TF?H7W1cqI+GTv#i7J$8b8r=D|(J(OSO2 z<$uM!Y=Q9r0j$J8@lHTStZRU%MnJ&&=AlJ^t_NUBLIin^(}*azAQr%e>iFjUPAh5p zy3j*3{V+!+X#hPY_&gDG)=dx&AUQi^z!XJuP6E-Z6NZAuti21t+(=EUxFBbO2u3== z)Du{RUf_^2Rm!LvV2VeT?J?l^hWswNf7H>@{&)=M@s_;&5?C6B6P$7MFY>bd#3<76 zq?3j$9=7xkGqkIY#-2B$xWU-at&psbWx?mo-eTpR%XJs*|6Ed51+-#dV+Fnr&$NI- z8%P1e>s7w*Svo+k4Xl^K#*k|8XGuu6tH9+EZ0QW9C_wGF0B^e#oqqthbr|WE39wA1 zCz9B5@-I4u`8D?}>abV>ZGx-*AN7*n`27QwP| z)9=yeuDtiXdN4Kin0at-mTJW+%dsi_<;Bcslz|0<;@?j%PO8WPm@N8nI8GL_;h}Qq zO1Bw!67nC(90k_t&^mt=mZ?j%e6qkQtD5C~+^HoZ>^64j}Ork8QK}FR$zEnZ% z!T0BTk!;l<%>^wI+g|y}Lzs?jc%+eU^O3ytyTj&ul(|~7nr|+v$nE&IbR=t8Bo>+c z4_xgqz&fY&mIV{GNO=B9Db%|YgNbVRUTsNH^}b+nBBuYS?c8_wUoWrAn)5VQ9hH8e zaLrGnDqUsKxG-W79d&mYuydUj3pVyIRHt)yzmD(L{V5=L?U)cKX*)8OoDB%;g|pJ~ z$eLqGM%xV^hfM43l&X<2{?(J@{5ZvLPCWu;uktJj@B~2~$0QrAK=ifV)<4fT>zkVL zLc%IUCA3EUSz|sUY)`?2U28i}=IKa^SIbu?=wW9C@V9l>&5T#v787i=U3otSSKdpt z9gv)G&{r#(Ls%mc)lP)zSyx@Vm7uubaO>xzAJYlut*_<~=-!xRx6r2Es{djeEZu~u zjDx)sA|mu`_lr&JT%FGl#s6N)MGPzvg%Q=Ya$&C%i=wVn6N>J-Ub#w{ANmtlcm|%> z{+4*x{o0L4e{_s$go0OBW zf8|l^zS%kyQ7?xbZ~4`C*wp}~#F7?ahK!7fM+ba5y5lMlah1KxLp9^7u*;1+IEHxG z9F#CnSrq)B*r}7Twuf=&a?KqP^8_PDY4iUmMC`j4A7haXMsaJO$1`@h2y2!}lw102 zK~cK4iA4dGg-V+Q&yjz9ZJy>rR=&&T;oqmZBG;ds{k+slrBlQ4wp``+bfu-&M|aRd z%L{))cS>n*&VA`?wt0iIxBe)ElIQ_DQ$Xx$zw0fm^pbLpXRMQ7ew+<2(#Y}cCxOJn zbsLp_IAseWkw8f_=~CjLTFk!B!W99E#3_1~*nj9B^%%*@7a92{uUhrDLG2Z#h zKknR}GTZFZ9RDvrhw%MWJicUO0XJ`%bL;W43FUt3`i>$LKQnjxxBmoHUEl)Ts2=C# z%B=!(D(_WE*N_nIu3+lkYu5EEO^9Db4|>0@TXxNLHmcB9Sd8^A8%7jvF=~mW4NGjA z7B`1)QA>Co^0SyfbV`(kW}XZNIK9Wf=rb9On$ptJ`siDEe;G3&@LbAx9|K>p5X%9c z5`*KBv48>?hQM^mFT60WycEo!8e!;m!~$D}xW4UM z*Wo+<)nd&q{^=PWzDu!w^n!Tv1Xz|yU$_)@@{NtDQ(vH5c~{sF%9Ho2zR)&qV*{Qp zB|Xnf_%YmzYth5XFG1D*E<2gru3UHPcPU1%U+=vhy**BHqPJ9fw7<#eV)2n$r=AB^ zJe1$AIhVpKV>0@EtUg@k?4H;{=Vi6GSDw{<%JWwdj}crZ=5YQymny>c2q^i~rRQ_M zMgo@)4;(r6jwV;wB~*-ONoR3T-*p2{CY?AY`ToWM`I1SJe1po$h`)7c5vfeC;;QJ4 zJIDMXTLj%vmPYKb%$MG(c(d=b)Ng3=66I9gX8>6zWlkB8X+s&E#1F3nb(NL<$)HSL zQaX8ZlL?^(%~F)%1v1BGO)y1?OnX-}1XF9dEKMH%YXT|6^Y5P(B)W*_klbGSHj z@%mY;CSRV&lwy_O_5r~7+AAjkL8Qn?H~DaPSbQ22N6wG#THbRkyl1cE^)!7=jQCnnbC#4y4!T(g zilrAA)Nb$D@pRwE7$f4@C#KeJoilZ=`|>pz+xb1ZmBWsQWVDQR zH4e>D45w?ynPxn#acz%!{9j z2itgAgja^^WH*ND*`m4ZMIFm#M#4Q0{UeIcZp0Y8i!zLdUMFhX3_ge%NC-?}_Fg0b z?m)%~_fdsn(PQ`MMxwi|Hxzhz-3gcqA92&&?x`a1=0v zaNODG{r!p)0H;5J8Z$on%e7^x&dTP+GvtAro&Mg+dQ>pJw4C;6l>eVn6fc+LL^@6v zU?-7vt4~pc@p*bS|ALH558|6@JR+*H18ds!pv=-3Vpz zG}Gxe8J}>cYt!Vo(p%O!PxP|%b{ zl@jG?dEqsG`S0XUIJ~{^&1d*!;n_Fe!<(;aZNABaKkDs~kqD2m*}L|M*qu|`D9b)s zX-jlQlwJ69{qK5zci=STSE0W9Z$b6ViZ{#ibS(ht`>tEBcd)zt6Pi#Yw^Hxcq6kNYIO*~j^U zeaG=vlIDuMlZy7&MW#=U6p)S2j$DttG$=8){eacE!<|n~9!NDdKOhLC$tT91Nn3xn zT|&7CryiGhqp(}HZ8YLP+;bP5-c@l>Q!q{PhhoUHu8G>#T83a z8_(N=*FwMDJFbvX68ER;-DalMRr!+;6lV7O#XH4UxrqSrwPgMJnhFpDX${IRG~!m@ zEd@?<=+MR3G)~HQrD;jKYZ7V2v3Bzb;U@&|+52hf%`wk*4>)^>n^6@d$!hkswQnSjdI*LtK z{5FLlUhg_^^uQnejXw@xybRg`hY87wHx#Sp_OzYBTL1R|^^5T*6X{i?l*Ra6R5?Jl z<^St6JeReZhu``6>QcscWt8DNxk`=KvPK7)G=DVtF}{DcG$q*TPu zsGa`RZq3eOX&xVW(xW(QTS|OpYp!R|>g+%*sq`?xQ9JRbp9Z<+u7C@KxliB5?RB0w$A>w)em3SR%`x*QeW1a(*XdZiI zZCR|nPoXW5Ecs@W6~JMAoQtLK-R)od9FO6!E}ktFCV3(sb%xrW{upcg{YLr6kH0!q zCnF?3o|ze+y;|8ty#kV~*{^==O*MTx>dFftH3qDayAn@Kn~D6=2so=3Qu)E?^Wo#+ z_ddrKFKsCrDnp!Jn7`MF5oPAjQT>;8n^hV9H{e&>nx1>4?znZx?8_PJYhtF}8o7@o zBk!X$82Hi)U15by9#=DiS@rL8f|LN>if$l^J}ysCD!2_xT|b?8&;YSh*e>;quD>RS zzo#ry@RrdTa~|erztI%x9p_eJ>X+s>YZH9s?#!RGq^q$42-2rWYm3(ZuEhAPzx5NO zpeoYVvuEemes{f7YR-Y1lX;pFG|WGBpkI@U%BN%HVWu?R709sSjSpjiAwTE)s$x{c z>n$=0w(5s|KFpyY>&DE(q~&1@8V1R6BO&2DN9laPn)R~+lx5A+4=y7_wi5;zkhIpD zhsXZArt$?!B3QKe;rm@Q=m&_pvS%!y8g=8UYo5|4<{Gzz-CI2st1Qx8&(CRpP`}#V z)I03F;c;{R>g}3uE4%+ZK9;U;yC6|2Km`g64X=vp!B7xz6R7`ZLK+@3(RwcD@6qO_FS3l)Ki5ej5X;UYq^ydbwX%#NmG5Ap#|u|W1}Lh=(mr{Ivh8& z1cT|_!5^%d9W(InV)B#>z*~~}o%!7O@}cp2Lu*Szu@iLf-2O(A z6SBM#tR_^2U!87#w0lDxzc846Lvt-$@pb5C^5w6u?%deD_RZ#XTW0!^`75_?wXA)% zdApdImHX|}Z?(adzlv(eEjJzh1*^KV06|9+vG|W@g*@4s{J62vom)qDFK^4anU2O> z8N4%Cc0^K}Zoi$0eKTR5Bqufgqe5L~#p!Jpz1(>Th%!7*G36ITQs{ye>Z$|1Jmbzb zSTCgeK&Hc~NkR4xRnl}q)q+1reVn^-DQsbK%jfiJy3H#sFwB!Iu0_%?kL(tSTJx=t zOWt%tk5v%`oaQ&b`?Q&Z=VNpFmDc{e{VcY1HFtjW&yC%iQTIL%WnWkNIrHaL{bs6? znjt{ZaVrl+&UnY%`*I~a)ApzEy(!zRlzU&_XAkaP`|x`7d0%?ttt1=A#yz!{GbpjHN0I0BNu0^}B;aBOtz!whdB z0Lf=`PsQ21`k8y|%{@46Yk7C%<9j)qf96~CWa%R(IOGc~ds%V6-us`#zrabzjd*MI zQyZUiZ0UxD*SF4cy+;muWv`n9jsiu>R_K?7EU^Io8Dj=JJ_TV$K#!c7nOo}))1vhHd=gOtEne@iOIQwAv8)uZ<_OUl zhz@ohboAUw6j1<37QYhPv?Ftz@2Vjw2%|Jc$@(z1Yj*sOINUU~=Y^iC5L%%S6`*9p z`Jr5{rT<($qoxtac zX54L*lS=g5?#WVxPf{3rS*c+H*IYtAomo&UW$*ONsB(ShpzBuxasd&>l0lD`1}RPc)8|>Z+tYIYhH7jCr!z&k z7M2in-rJHFHA49iW^)_A%?=e0IYN)BHh|R_w$Ta2gL7fA@Uwel2VuU*2~KpDXg$5s z+xj-XB){4itF`CK{RkqV6o&zpp0UsKKMB}OA--o1-gl#!e7D!9KPzf#!b&i=wRkM2E5(HN;3?AoW( zgrB!_o6<2yNI33v5xvVi)V!-xG=?eWc)(0dN9r;&t{we_S?w7{wd`X)61aq@7Add` z9{Dczmiac{s}H0>J04zYCo{3a9DA;-X8~Z0l%-4YzS|+RW@dQ^dAT2AyXqh`<#pFRDf=URe|} zz5$Ayg2*s3G&?xX--Rt4YgK`&qroA%iL}UEfh1i3Knkvwdm|~r55Vrh2o|{%hvkqf zw3qY0-Cv>$-$_6J045;8a>P;8i0TsfJ^2)#-8snmd6%Pq0DNs`oUUMxU7_IC^_;Nv z`2svBZ1)F5{hUM?tkmnXBj+eqn%=x@J&lu~h;foTMRgqnplz4nF=BVZEJhsxY{{N5@lo|-$!HX*|@PsI`7vZLTLAxYn zIff*PAoh?$D8YgQ3qbP2ETh0#`n_eVq+=hMFrLsz@t%+`o=wxxP6yQ={}R@3wvMaT zl|D3vs6YbIl;`r5eq=C5DWYi3C~SjnEgf`pfAuhoYo!IgP%j|xT~c_8NrRd1vG8Y? zqP8t$vsE5yZ7a9lK)p4v*m9G6&u+jVU_YJ6-Lm>ezo-N@xHY0K)_DG-`C;8PM$&*J z3*+dj0dZ%ZeU37?s0X7rD}z{Z7&s^mx)IqWfOiA~M!lo?a2&Yn6wQjSL7ticfbcS2 zJO8RZK9jDwKZc|jgafoK z5_F^iPaPCxA`Q&#b#U-b1M~tE$9}#i0J5+@T@0S5qv=kqW=u&z&gZjcR>gwAywl8T zpAbj4{oj5gw*gL^l;wB)bZIcsb z3_vTa|DSgCfcfLBb=^K3MU1-N{GYsVcLreOa2!pd&0EQke8oAy-iMGxDBb{M^g2F)0`(X%w>cP zmDy{RIS7e1wWl(72A$4FTV}rK3_fs2Qm*~Q`1{g|I;H_8V^m= zlA5q4FP>E#fbdqFl~6h+BId~$4fEO;Rp&r&#k#yMLJ8sj zuFjx8P%&^u3fk*i5dob3dO0hsB(KU!o~b#i{4=CX`=du`^5vuY*3*t&AtF0YKH7g3 zY$a&>D~Wo_E4l8{UD)ZN_VvZFt4BUmp=Km|K5sbBI!V6wy5YSIGBHfJi1?njQ^NGN zzLCHAxsGMu#W`YM`^6A{xow3WcdI{!SwwqSAbJ&o)>5^OI5>N+MnEv1Q5axUa9RP?-iY8lC{-IglA4i;+Qow7tb@7ZumBBu$6M<3c}3xC-$ko3jx9n+Qo_{nQeY&otmbkPa55BW=^ zcPDV6MdDY<2>@u{O!{ghBOCvBWjPS*HsJppXqscR64YVGjF(DZ_hABbz;SVltZ~g6U(VJiudMi2>~h=hp??}<+uF~hBFMao+nAr4{Thbs5PP1m80Y0 z(gc*F8PZi@MG%e5H1T!xtv079^bf6y1m)C@4n0{$Wz~vKJ~8M5_^h!pN^YFK(zF99 zhM<}$DG7PmYx+7aR33at+Pgo;wU8$v>gtldhKbNVmNjj0TlaPazaS$^Ge*<#!GBZ)6Kp3r1>;&a5wADwU)SnHkg-7=CV~Ob7Do zb6lihg>$&w9Ri|-S{2{t)K_M#u%w}P-7;42elRf+{!sql0-kpMk|JrSm#D7m|5AG0 zkU&!1d&Yyqz<@Jj(AZgd@Mi)d`h?&X63L1Oj?3A|YYhQsA zyH3k|(LGTT(KZ}qbE3TCbhJd2LczkBwqg@vo(Ahfg_T%WxL|maMhu%Yb zOEnj0a`EES#w>P#NMxrOhb}`k128js9SqHvw%UQD<$f3CaNLNVUK-dlRKtKco$ExL zrgC?*mvHDz#9W}HY+KK@&TXY`LEY(8NeX9Mcdu20n}=#oDp~bbNu9oA5+6h&4r_~3#d%9`zfDdr!y0D_)-b;7(!cQsnd@g8G?l2Wg#8kPzT8Uo)I`F|| zsG(osg5U1(EOa9!g84q;PLf7=kXk{y&o04{_+;{_=Kua1_v)yjgA$RfT_TP5M?>gY zI*ktQWACH>)qbvDLis6G%_kf8Po4S#e|a=K$Kr8Od-W#-Y-}h&Bg8`K9b&ydyGE%_ zYI(x#Wq3&Bv};OLld7f_?L~z`e&qDPfJAfg;>_@X@(v;N`=fZSZ52)uns$o6GNp0m z0cdW}d=j0K0Cqcc3wY6*tA`f_z1BfnWa*w#Aky@hYr7#J8bd43{Z1s`>i!>*g=DJF#tjG8E2ZGQLY zQ~I4IY|mK~IkBl`-`V$uvlnaF!t%e8EcCr2cRA0DIrT)kH|9$=a*LkHWRkt7gwV42 zvaRUO;q=h2L_Pd*^x;Gt;o6D=315h%qbT370R-p&_^9>ux;O(q@M ztgo6VqG@oYM*5*SowHG+J*~!yR`ki>zhvcgPJ>Z1%?OE8op{E8{~YBqd8V;B$+3)f0J@coTVCN{LAfP3v}+_$}p?B+Vw(2#D9r@7EfNyZ6+J2yGB<& zRIrhR$XV;T_Aeg}M`D$<9`aj@5K0Dhju~Ngsu7Z;60u+EWvCuks;qK<>oEzhr!{Aa zDxtgK(bNK=muJFN4&FZi_X7H3YT>SkU+O9W6I0^9)c0yd%!G`$KR;`3O3T@PX>M|i zJEk;R+?QaAD0(Wh*FVML%=caCUU^KNz1m|aFQ&vuk1$Ekv1#Nd8U*jb3TCa%RW4$cD`P~<#px37rsA6B}5%PLZn1eM+yi?sbIY?|G@p_d+)j5^E~JCoZ@(4#}w8qTdaQBX?PUb z!wtluHZ=x}(bHoa^9nOy6RaQfGEc5!s$XG(p!d0aIm-tM%KOCLQ$l~bNrR*C{6N@2 z{pp0Ma84S;iJ*js^+9Gv>rXxk;DU?gy7&4R>_q8v*d_3E-u{&4O1xk@MzA^daY*JJ zy91g>f5z$C9%wU`&-j>Cpq~6AgxOXINtlfK1jHsae7GW@L6(9_0IX%x5;%0%77dVp zbkBZ`(aN;gZ8UBC{FCYka!-ZXl8zDB6`uuwrwh^7Tt%OKcjB(lZDiWWgYr1v;fYz;q6HI#Au6VT z60l#n^1v?02J$6QjwfYBai*S9RN{7o`KCM0+JIKtiT?i5ikHxbOK!zRx?=#vo}xv& zp7_o{659)jtb0noPb;GUue>W-&r!VJ@Mupqu(&|(?nJdfg)#u{KLb(d*oO``I4g8F z{s%Pg+wLIlQbACCVKwMP?H?3E5=pmr*HeZV-(FKUO$3@~t*99v?%FV8YVEQ#8;ZP> zhumvzTVMzMo|d&vWMLf(z9`gi7fVf<1QlTbuOiZf-L6fkQG-6F1fc{Gz@?Cvtp5e% zvW{P1;aStA$*W&-mdI_6?tqF<_e8bYQU)!Abzps!CL zrv3!R`eZtMvM2J*!OGLOjC%vd9F4ez63?+BKq!2Jh!M#A)^v%J|#?q z54xsKDl^iRVZr^pve~-xB;GAR#c7AykSQRRw1JD|qU{>bb`Ohtz<&TihvZ2JH#_8Z?aC+IB(PlF;88F(5`gEDFDSBg z{R@eKt%8~f$kGpq%C{cU85#)k&C=+dTfNZH`6Te~179*-P;t~%U3LElu;Ia9Vc1q* z0dgGexg#4v9c`fLJKAXQW5CHerapjq2#eCqWHfhuD&}^FrRsBDt74L${QZUp$C>P3 zN9rDUH=W6|TEd&1K2A$0rCFsZgd~@~YYZ9sT1(A==UEw*Y*Q(0nB8ad zO}+!3W?H6CL$;R;=H=PzW>yoAmG=#*F4N?#UoA@hNb3hBtWa6F=BqjZsTQlr!2-kA zn(!TME#hKdwKXM-Qu$&W0=S?1N^(xTX=@Xg`Z`h9Rzk&g9Cu#CqQ^7qvqMW)*eraI zd|g)qlF*cOT}m&A1PkYlfUCrms_}BB6;YPO$W$4L^0#|<>k6fIx~K}XFhbB%N7UB` zzXm>UZhv^^*YcEukTk*k=U*uQC4qTDda*qKgAOb{Xg_Ga{`Eb%p5kr8Sd9|i7j7&$ z%l279EE-~!2!-Yv*i(%xR$FC#E^r^(6}0=b1aTCC~sIle2b(;zk=$l}#F$a%h_fTazWV z?dH+-gDXI37L4oJiDDjUX*{{gYL*@ z2Zf3qDL1ADSz+4Y1%8QN*CV^5K8X(ORzz(%+Rgu6hlVde#TIQ_5Nn!u!37z2{hH?O zRW%V9VJ9hn^BKN<1o!~(aK#?WrO`G($fsdLEV~DDIAx3hA0hTa6_fgrFTTlXzFSdp zsb%v=_p`Vx!>yMLkMK?)@>qyKrxfZ(MH#Nul}J31!gE^%K;GTjuC2VEqF zZXe0grk$xCM*q?#l0tXTQS5D6vk0H{vtzktvrzxC$6wldjGvc^?Q-`%JgV^773xir ztn~TP+Y>EWEw-o9n{rgPva_F(byU0Z%elAosP60DX-b8El+PYZZ}pK^B`6C>v$R(- z4OQ#UUaLs0@zAi@e0(7^!$Y}kM;7zFf-4G@Q*{9AmOi($L?7M}y|S496r zAMSZbncwBdzsTG@M;@k`g6k{O;-dM z0A=vcqE#$eZ_t*205mwnsu2nar9%UH0faZGfYEc0P}3qtfop?TM$WR?sT0-18aTUt zK*~!2B9R=ZcLI93h47GF-bDZgP#7RBtUu73h(~R+T#Tfd8gf&DD_k+JO<%+X5Ht(% z_z#>PhLA~aAD(^>e2qti#Kn|&J-xf}`}?@82zl3_*9oW-D*ZA-T%C;q((-4I5(6+4 z450Y~tP{04^zJZ#e#okzjJfb|jg%afQ7{}wzD0||*k~>i+dq$dFuWK*X|ka35Uc<> zaWO?Xh&9C!UqhzwCaaV+DJ>khdvE#GkBn%$v3as|+9&s=bTnTtzNQ6zqM{cE+6k@` z3UXIqNT~=72hF)A)QK91+!-`DwwR2+j#ohozKd^~bpwHmAd(w1Xq9Oy6oEbqhomvr zq-_NnAOS-H0*GEZ7cI`|F9j)3ZO}R(0^R_D{-`k_XbAEsv=v>U7OaxS972(=ucR#v zv;(Iw#dV}N(+&cXl{Or^fkN0A%o0@d7hPCW22aj_dU3mc15=DI;DeDaZY!lp2i1ch z6NDbK#VoB=!jmj5lEMK&`q-j!(c4`0_*oowno1kp5US9Cz_d_{1APpTcp5IK7WBF{ zSv1t7Ul_+k&EwQRi(;T36NRjPqVT;c9&9b-Tp9s{%_3o2!g^Cb=xIzC%=oui&!&$0@9S{cWZo?2Ed%hq=DI< zhHMA|P>Mf<;&uptFi78`F6j;vViW;IljGxav)&z}?SP*Id?@nGm1878_@@LXu{>H zEA5k18K@O3S34MnsMs*#PAvWd+R`dGL4jfAt1p}aZLBvaL@$5tdXAb!n}!c_66)Em zd(o#%E8?@HSt2yTS|r~=4yV_)SOb%GhqC8&O#vR@az!!{!6B{7b$u-;B}@4DFdt?X zOEwL~nX0(V17P%^TWlUezQeF>{U%|@7G%0%GsEhe#Du5MqFNcgrv)KUGrewvj-U|J z2ucDoo~fQ1{7z^X;2Fk4Mvm2{5$ps766`TuidGmw=vHsBb+(D4Zn8^db$qvky8&gLO-o504bN#Pz(inlt?k*B#R#XHw*@7w(!-NDko}KpoS1EB3JYl zICfjVD%9&${?LZvt;(fddLMe4N=8Q%Qz-x~@X7Bm*9s0c?6?m^@$Lf{h%11!(l$BnJ#0 z0DUmMelwgN5=ff^wFqoJaMS#V5wc;21CCcV66BR;VY8x<1qGhF2C(O&By?5+4eXEk z$EJP7fuDKm`jW@JR2b0?fQyM5pmeg920Y0j7|$zd{HmWue`lyQg-l=B+iF)Z#; zHmoWw%lFp%Kl$QHwo%&;yiv#3-|BY#cyCSrdLg4eK``t+r@r2NAWF-&<>4Ds2_O?4R7_o7L;9v)Gq|uk7m1w{Pn52 zeyu)?nysmT`pkJO$(2D!)hR4ZxM=jIOHVRaabjE;Y0~CrCO?0ml1xV0i?j4UkQl=L z`s;-o0eatZtf$qh?s!I5a#vNRuX4Pq4G}qek)O1#%*39`Z>DBPNjb}Wv%p7JkCxv& zkelq>T`s=`EEK9)8H0f$TjzUZ7ZKH5GvtfH%C~KZ79xmSs!;L`!VzdprS~fJM1ACHW|z_TJ~+{m*_?f#?309@&s` zkAJfNm8ySx4-fj!S6-8o05}H@2U`E*@}FC=MT*8gOG&vi{ji|?!Sic?@=)#vgQM2O z*zjuOg9r-2I~q5pWi><_h-d6w6KfP@+zdsHLzHFQfp-wmA3v~Nh!H8WFAdmih4x5~ z!-i~RcS6A`{C0-pg|eF$KC-l4z(ZcUiuNcnEMx{-KzJC{$8aAuqRe%oW{~FZ^~ir_ z-F*zS7BQ1XOlj3C@o_t6JG32((y*I%1^JSvlVD{abEP*^{8}nhGoXTi`=JtdOWVO< zlO!cPjjCx?hA=%VNo`hGa0?qRO2e>IjKx^z0f3q)iMtPR`X$Pqyqws+hV^`!C zU=^$XQ$SI-!{R~c>|_Zz`BhI#PXpr6@tsY$Pp3r{3(|1(?@8#d_Ej6Vr&w=`z|qB9 z9HrK#)tO|}^HA^6{mNiC(jkaV!sxTy;5nP0kyc1Q96&==o1_?G!juwGEliaV!x{Ct zAVCSNiL>GuP(k>GTIov0@WXV=3gfuBI#t^A0_Q({dNGa7Q7#qHEBH^w0NSISm1v}5rr*z5XNu|;jj`4f!jyCX_l z^^QgJ!=Xmq#Qk*x6RMs}xl zpF=gdvy3-pnnffYa=l%Fy#~f^^D>pm;bFj+KekHt!6jw1K&+vX)+-S`80PhZ?M3lt zA0eioNMMcry*a*R=25{tU|1vIO~2wg=atJQ3c`a3Al5=U{L0}%?}K~qZvVIN<^hhz z9`X@~r^9)80Di)L@9dsHpFd!-W<-C?neu&CB+0Xu?R6(Cf8m+6=j(wU{@Uo6A=~%j zqsbq{aRn$r_@p6$3oTBxTL^D^VVcZ?>DhoB52Zm&EXy9rag!W`KZNV;ww|ITFkiN{ z=Q27o^c!5dwhLvc*zN8cmD^xx&F+`lPnJAWh6&7)2(f-Mep8>Qtz2n|0-=~$=$&jv zE`S!*BMoo|lYem@grF2wtXxt9l<=L&Pu4&`skm{lK6xC08ne(3**}}k1pyE;06h)t z3Kp08EQN}YD$x@7wYF4-Tc(X_A>`9tJ+Hevuqo2kO4(|Af zW{^F#b9Yr`@p7`fyIlGs4YFJY9ZBa7jJ+U#$vkIw*k?Plw0|OY2;XWv%wFGJ@_kuC zw=8<{nRub~oN1KkBv8@&r0qr5PR-i|G<^9?)Q@s;kcMpK}~dlSIX{ zmG=rWe!+t)O$UeB%5nVS6PwaJ+t7u&PeMN0rT_3erorM!PyxHSo3v15`>~n-3sm2- zW_5bb+MdtMyZfALQ^6bQI#haTU7^vo{M;{uiZN8`{++h#5y5B6t3-;gw^&`e1?=Bx z$?}8<+p+YS3Tyu;DL7IV|5U38DSY@l*!6w@P9hYHGj1+6M9@m4n3Z@n!T zl+JlWEFGlAD0N@?k|b-k+g_-O@N_#V*r|#%jGl-UQCvNY+U2NJ)Hz=H%4(Pl8-6h! zP2Ds}ob7*nqnSf55_$6&L>9VNU0$;q7qVXakZyfdFEixPJVWWu-y1{O$j2~_z&_;X zX$8zF9ZsOgjN>+Aw>p*0yO}Z6TU4$6wVQ)Bxy3x_;_Z(mlg4H3p}gu3tY>rK9|Q`a zV~2fJp_rJF!wP|WlSE!O+bfCDc_2J%WouLzHyCJjo5MwgOV9}j;We&4ZddR6Lle)q z-do=H_x+Fd_?K*ABMPkLDc>M4t~iIEp)PJTL3Uk?5e88kwp~O}K%znohz;d{tJzJ? z?x;cd%`XOzSl-_-O^mwrzIH>y;ox0k?Z*V_o4=!~1-jiF&ny)`$Sj1m>2YvR*y>le zsX`r}hCfYqdw>X@j86aaSFsYE*Da9OiW(nre(9Hq&?n#pY}Zt}|pE?Vg>ypYJM ze^CS4zVr8dbN-HcQ((OMiLg^$n287E&cxra3u~*FV*vp>4I%GK*Q#|G)mfm7<2Lh3 zmulq?oB-M73$v{ITe^u7gJw}aAt8qnwW1ql_6PhB^MaKZ!*iwmg20oJrtfTJ+Z|T5WG}p2eS11wPGsKv(tK!R#!#AGa7NJl zlJ_xHEV?{T>P{lI2d`C|`ZI)s9t}|9v*k>mZzuJL*QG~r7|_~%DyrYU5}@Zg78u_2 zKT_Ef@NF#k>T)&X5(Ug`bsiyi=+70bMD)Pvk{g;s5Nt~H{mKRz*(qepI9}3|GL)gy zdEI_)vn?a{v-0;e_XoeNT{@m`*ZkShCzkLfm~O2a2E1wP5FoMLAN4SvXTrNJ#bk*V z?-mEv*HJpCt{)i@V}^#Bqg26 zrvWoZ3SW$LCcd01|GoUzCq8vql+&`9v(p2m4C_W*63Y0nr8_^9v-$eUcdk&J=_}tnD%gZ;v6yn%Bh4_$WlYd7LS%mZU8_d99@ul*A2mIJ8hH)`f3#4SX6T zi5cSvBL56DwP#!UO5AA(UMfp(;k#IfU{fEmb)jzgxh`fxij#nQ~3LVI8?caa+ zX6pI-CBx+7{x|@v|BTMUHM&S=yLeeC_NzJkVa_`PV4zvuSNokPR!bEj#2-uFCdUWaB_%NSpKcKSxF6Vn9`iWl zOF4!-g8j>B_$u-z^*@)3^!(WKNPagGA6n57@Z2IDqG|E=Z{2}A;>b6`ik>7_p@!}E!k8<7>VWV4< zZVXhR9VO$$FB|)FDb67Xx<0A9oN!aAN*tPSmsVtCcej?KLD<}0a z_)q<*o$EAQHHDtQgL)meLJHS_E?6}#nZA)vT*xGQozOC$eEztHX%j}U+&ixjbJdFO zecMKwT+5VKSS*hD5ojI3&yy~As!{or;b+k`=NW01+}j%NjO7#(B&at@hjG~n zQ^&X{Z|3E3D*iP{n11m$bxS9>f%{ZEKH<*}t#O|hyNSqi)-OD`yE;5;+UN9k#Dm6B zY@2o?RFUDBkGQXH5z_%DXpDaC28xxw>&?5%5**4V@=R*wLOsZ{&8pS+L&xzZn&VynB!?~ zxSD>@B$rS7oPjAx`~5XAqig;wOiEOJ9HOWAn8GkZ@#$p)ooPN(NXs9q7#Kp?P?vh{ z*>DFdaM+9~u=(IC^?u^N(_wKmPok>TJJ|MmlswO1IQqrpx6_F}sn3&NXwmq5TTqJ~ zi(bh2+Y7sz!~o{(7Rfz{>H1HRXP^Fb%iU%g?@Cs77tzF0@e*h)f&TrIShWt^%+TJbJb_R}XuU{c zpCOA#(W%xxkFsGIG)S22l^rt@3ZJaAJyMnVW-BNQ#>xDrkiA?J3qk+__|B%o#&a(- z%9v)YKv%8#uM_%gm)1we)aMX|8=IZ6XowBWgbtvFsNE3%qKSt5o|(zLE>NXBwRj8~ z5;x({_y0QV+m*7(QMPu_IYc?owho|1Wrbo0AS`DjxnJNxJPnKhniqD7h}ZzqzF!L2 zMJ-S@YP}yH0fm1DeUfD%`E{W2atfU{-npl4=6tif{x#&D$MkoG2%yLEhJeARlcZ)o zlV09H7ZX1IAE~dCCKq{rWJI{VSk(HF`x^I$)8dCP6D*62V2N{ZC6RH07o6=cI8@B) zF);|(3xlDoa$U(6KkPqfk@$XqJLzs@4ZBUl|9GIE%ah-9wouYkgXU49T6zee*Lj>3 zu0sG?hucW#YAO;0jZtZas(t2W%`l%+MQ?5;0JYNLgv!F z3zj!^UpXBwX#ORBTc;aEzVWx;I2)n;=N`2I8x>Vciu&RK^brn443+wdpio839|Toe^0kD|D9{Zvy{&`^^^g2W3J~|7fXO2u&-)Oo>d6WEkxB7zbO*PM+ z)-Qp7)$cbXTo;vQ;|6)^1jM{Jd zm8RCjv+?3rM`W|(*Vtb#BAe9rzy9j^*L?45eIydYf%vbj|2zgazfTU__6M>gnYDNN zuVKDEWCszNxBv_Wgwf;zh-ovQGhQ5WTFH#P{B{`ioAmGNAOjcB{yHm4BSa=;()r&O z>!qj`Ma$9K-#co3Qr}>gzl1!#)sE(5NRr+(aO2W)d8nE?`nHDe7L*& z00@Re_xyWchWP(fhf;Rc@=OXpFoc5N#Ci2F7 z%7cGZ1l>c9Z}Sa+9z{%bq`W}c+33W^Ogne)3&Zb zYO=i**Ae%7v~r)}x0ns(xb%dW5I3eEPJ`iqIuV8jA^4Sn$!HMvKjkUmqRlJ^^8%o- zJ?P)awJAa6>y6gFJk7yeK;1TPMtKcu=zrFNMdvGV6Vy`w%Ag8`_XsqhSBpdxaSLq! zjKa9fE@b~9@D2NjqWE%3ps2Vhp9J8bo|h$>V37C#l*Ec>l;shjCr}`-DD*122Tru( z;#mL}h^;LN0|KR@!Mo(Dw=x9YGl^?LDqsY~k~lfT0SYpZaf}ryqD2x9lme6y(3X5c zFA0PoCmr0PYtWowq``BeZVr*pQI~xm(&0oO4EzSb2->0&OSOf)y&F@ave1YdaZXdmMqS++L4SDLq9qW~D2k+1q`nNyChmxJ`yLky)hY-($PJ#j60lS%IOiq7 zOsE=i~1^8wg`X|#Xu#TO96AUSDvgQ3UD&hRE#!TEUjiIFPK2K$d3|kzyo;iScnrF z+NUD72I?9kLQjFAak{1;7Qk5w$O3Udj5f&d|YDQrJRZx0mu-QDG6;63k)}g=XcpWW^zcDErryY6)7203hi~AXkYGFrl z^sbT0-b5dRlz_LpdJOO(u4xeNb}M5iNwEb1D0{JrPF#a?0AYk8ykz&z3?KkejS;QR zO%@@T<+bfn84bz-Wq_lTD;k-g;0cKIxCk>tIcHc19X}=ZDEFXYF`siLKnzAyI0h{B zvoJI;ijP|Cs*$Uqb%SX_6)2>6%>fHvkx-5_@^0|k7;EeKoLF(3?Ht5-gmB&)N1o><3-#+O-!Ff? zjO}`3@?={Vk_8}O;M8$QM@yg{8Hx>$G_q}>wuG~_4rxLFD8TcZqZH_Z6$3-#XCx5u z3qLvz_yaKWS4J0my`Bb0;9Z!jFcK=R3BMW+fy$lgQK(Sc0c61O^E9ODj-?ZPtpoX&2wMoDw>TV77|bIMA7mP$8%1J z24KP{zT=8uQ&o|@m3zg+z}uM!?sc#JtD;Lfr=U@R7x!Ca%eS0Lt29(E5^Z#LqO}ZC zc?-aM^Z?EX3ZR)mfUY)xcSitdV<^DR10p<5ev1Y?rKo`*Y6zavEJas13&9CAyfr81 zVg%zilK_ON6LT}=f+iU-js+1CO@S;qCP4KH=NvNwIZ3zyC{Z?G-i;jpAsXZ~6*Rzk zB@FKhKOt21Yk)vFKg<;|hX5daP@raXp+&5sTmVR*5oFHM@Qe=DltGn<1CsPq_>n;{ zzPkm`OG+PqbB&pg94Lqep;>%^G#YMBVqCDG>mxuQog4VdnlTPRy&H_2;a=2Cuv(6Fgj`k9A&E11ixMB8#Q!r{m*B_% z!pRaRxWGSTf}H2{z)norKoM0T`IBti6RRO!G^hetyd?xArniklF&EMxQ!)}KSm=Df zoCw96>1cRLm;!bHnpXsWCmw7HCn%Z%a<|=?DS_M?aD{Wj)hkHt!Hnm|JJ*6yUJby7 zp@>XyS~$~H^T2rH()cbUz zmo`0H3nFBD#~;BB+|Gp%>htgY0-#_$BRU{GPG#T}b<11@bNda&k^ER{;5H;n{}Is5 zU%<&%qBvr_k(3Bo=3MQEiIy^5VoRO%L zSmjLDsY>F{og+h4V{i1_Cft3*VXgD8QCh>Q<+>=T1wj-#XNRE*LdHuVM!vMlE@k<1 zt;69K+)k=;bt%HAA-XEKSxuhFL|cEJlK~=`o{wH6F6msXJPEe1M2WA3Dv|mI?s$D6 zDHL&bscMs_R8|P=k$8V0gprc4Xgn-Evz}d-m=1K!j6AYazo1PeCX!khZsUzij z9>WC7F;wI67&kmG+~H7oC4><_$>g%n&5Ki{Q;>{(q2FYZAs(nW z;e?a%6Pl!Q5&}qJZ1BEg?|XYq_pk_3+O0=;gBIT2h(xR|U!He4QP0wPhS6Oj5e{J3 zDxTb$i+*}zPKW`Q!h^TJW+iXRC8XI*kadF1*fM#7%!n0HXr^RlFZl-OF7-U$2l}c? zfq%dTTN+Zf0K&NW*fUSaa9x!Fn=rWF7EQuT zel({mO|;~*lx{pX0DOl|*y!;z7bUTRk%A%KZx6US|V9o;_7&>s_p$-WMN5; z{eeU}2A0#oXMAa2MosmRv?8qhiN^CcH7`jI&X!hbLlPm#waN?LcB11c=osSZ=EpkA zn|?rtv()3x;F?Zq7?!Qd-hRkzQY7ZG!4?>lxR-b5@MmQdBwaO7#Cj*gIkjc@C&_9+ zVub6BL}_vC$cOcS2jeO)*pLs|A1ao7J~Itc=s(ef+G1!;C^iNwpGh+pH%LxNmauLP z#bdoN*!DXI&JEVREN;c4?8;U3m{GeM;!gn3gmBvx<2zq5dR?lV)zM%}yN&vVL|p+W z)R0=Q)aXK6#3HhFtj6&`>Xh}rRI@r@Gt!K(>nMN*U&UxS!+*Q58N3m36p(t8x0426)fMLqUnQga!?K=L)|g?N98E-&b)HaYRO{;CYwZcet!xn;KF&^A;sMR6wM7A`}?2NIiuE z8qAlt$U&Wn8#gCiu^~>*vi~3rmJ4+>bI6Kk0Wgd)7x)NZ%FxCCIslR2-K{iNSGAu= zb6ug)tNCXo+Ffx2iBSqH1>EVRGa9WF=B$J;p<*HDjfF_>5Rq*DfnbglgESA1T8h4?)X^{4?nksG{Kz#(7y=P|9C%nw)liscK zHsNY$W%?O~_;-%5^w2^1c$kx0-R)TY3&@W3%Mmx%b7!0Q@RVEnS-)5xYS&?_blSG& zEp%3GY7pN`yO(JU84EiI{3ABLxc4w6a-)q4)Ju{nva9s=J?t!|cSh?$9FCuoS?y}U z5)UQ_e@ii8D=( zq-S!>Fz{Jt06)lMi7moOtc_VYU`1!ua+R0J*2&xJ>0U)~2X0qQ2-sr7i7PX36*CMW zQ&@+5wi^O{m49(KQuXOH#Q7iYA#R6Blv49%7!R|TZty~I5pd-c2K|h&k!aUvt)p8Y zd=Gm_3?01`1~VJ5SH#NR(eqD6PpV9*JPak&TI$+)E6;&qU&V1%I3-Qb%~>pl(<~K7 zeF|CR9r1+8_@~niBl{D<+RHN~wZS#YOiw~Rm9^*csQFrUBTehcW@9`iVSUx>-uUl1 z(~BBJUp;l*-0EriT|M=<&^^Hh*~yL}*TVQw@)HhKN^XkGNSZiTIp^{-pj%CV3z?~* zOWZuuI3=DJsY*Ig`kCC|{4hB}+o9CnLBX6P-HL?Zd$S9f{1M_T4ZU~QWceoU4Emy@ zuiKka{YZCYo~R}tfZ@XqZj3V~XHbik#GLT`;Z>TL_vLOj6ibk%{oK##q+lx6$zqXg zAy_xeP4f>Eaty+u64G;%8`i*eUy^X=H`KV_X7*~;!3NAA8USXP{X7L-{**E9p$i8* zv`^KWyZFj78-a6Z{Y~&?lt#u;d!0aKs=oLs&wXnD2(PvAmZcnEMN!-h@SaqS;fc>E zW{unY?p(h4dpazMhbK!#aFTxtoUZX6a>Jfe7x!nhat{A~gNdurcH5H;7kaggVWzQK z7H7%L@RmF5b=(54Y!f?g7*W9=`88!t$2Ju?^J3l5z-1Cyp#M$hL3J;^b$_gz;&aq` z`tj=*kQwJAbZod9iT)(XZODX)CxGcBrowm&su$>(AL;t@lCd&=FnRBd2-si#Ajw5u?< zEV{&^KOdM=iiaPp_cARHr0&*?#D5Tdfli{vGVl$i?AC0?ZwU_ahV41yb@q*|3$@ay zGQ0x3w>npOty5kn=2+&6Hc!iNW%cn+ghusjP=HDNP+cf15zIW8rDDndHB=-sU>JnyIuI90AI)g{|X;<-m%eK;ccokOl6=j{GtI1WL@r6QU ztKM}u>n-@n7`J<7%cwV>d;l*+I{I5DiVI-6kzrXCZ%6W1)s*8VPt{dz*XY?nby#Ov zr1K@~i4ZZ9uXn)3vHQpk=1(E-Vf<9qCz(I!j>#I_^b+}D_pMBHtk2wiaH8C1#QnL|4SGe_oYz|R`NEVH%72c~ zDe5xBSp@i^4DEo@1|tH^0%i^Ik`<$&lBK&Qb$U=^e9!JgX06lj9aCJT()x7Wm?jdN^vmo5bH$T)J zX@U^SBt@v8U~SyQVPzIpq$o=JF}@Q`t3 zv**7gEHm$NFzH#}JC~fjSsUKVJ|#k4BYHCVLD? zAdRzBwlpp$BU@M}RZU4|KV&}zS=_sUz;q??$2(V;xPdjn>WPP0DMPxF9el}3ls%6N z0*%84G%RXn<{3re7~{=d<4&5Yri*A~tj(?wMqEVicqy<6c8bY*R3)NlsKo$1IQZtW z7`>m^Ub>8kb?+t7mF2 z1BTcTDGV8<=B{JUhRjsN&s8YPm`&dW-cGKbH#?P%bDX6t6MPrwSzH}-7w6o_vm_pW zg%rc2zoIP}B)amjTwG+;tsvfxEn7PYM~O-5q9zGihyL``9Ww1lz$rxtO$E5cGZD4PM+&=8HNPQ?Q&#^3K_6!|C^Q@K^HxD-fbwNJ8;F{qAww z!fCh7H$%2haN^L!Hmui{@=JNab;E}3$c=)J)dO$it~(S?iC<8WZ@Tw`^mxONt3F=s zr2tVUl;Oqv!N5MRej;TwpUWV9H2fK}I*ajW*DQGyBJ@KD|xA zPAZlC-G6-TF3C&iFmX=)-trUdsf_E>{&`=Vm?E95QJpr2YbE@*YwzO28d_!+L!++R zLcAtExivLKc)iPl=7RdiIR>m=dNd?02xE`axao+~N!8MTVgthk!I-$f9Ocp!)1!z` zwX8{)q(Qr56n~QEY z;`mOM%6ChCmxcB53$djVG)%n!7QZ-Il3#Om^kp$OtCY?L8HCPEJwb{9HHk1UCy0G6l&<69`wXtI^{G4iRO0`x+vE0`b!UCb zb<;_riaES@$3FMj*vB}ZBl*82mj&Mp12*k=`(xa7RB8!Z&F1ch*z zHQ|gdp=wjP{-^X7E!l%<*cWJXv8pORZ(jCf??Fefhn&gN-NgH-_8Pbsc#~ifT(0KZ z5W;Ai!DR)!q_d)RL1T~cLHjUOU>(Il{GahCx&&9W_qqS7^w!2f3-s ze!4L9Rd~Z9CmI$wJz2N0{VxJHRS{Brwo%!g$RvWFc(0}QEjed7ouGA*()C`33lIp^ z4*zCt?4-hps2L#|crh9CP2uiMVqou5*;=K`^Zg|^edmE>y191u$;ke zf1Q<&8 z7-*|cd{dmwjbx>KTBL0BdQ&+MMUI@Sz5K)OPk7DLJ-zzo?CKSI+YIEU81TA%ZkzY~ z(T~F4%>HL`PhMk;Qh7f}g692d7-WJQUNu%O(QE)6z2+|BV+T1TJGIUos=284@BNqO$AjzV_VCI&_% z{9&K(5iPRw{uhY;^{}AE=ZOQ+)?_;73A)=A3<5lG{l26qWA>Zel)IOtWDmH03nf>A z3|J>r`;A2YvOde|$^P*7AfuDw7hxS9VXRhcXmpMf0UGzYRB?BnrZLn27p4P3fg-(A zj$oEhwgSM&?oLYCQdyNp#xB}T`&2|PE=?GnSeOiqbO%UYTJy8q&UG2i>*qbsQ&~W@;>qg8Bg>k*&as~=PmzK zqQ>0HGSQ6-af?eQihJpQAe~G`wMP}LqTNKoQB2oCmcjE^_<6dpz)s(ahm-&ca-b|u zS_D)LGR6Q{yaGB!nliFrkk_n&Zn4&H5NQ5;V_YTvx9%k{F@_M!r^eVovPZxR$YV?v z&&q_hxMTqYXsld;oQc2}K}`S15Hv^x9fl&sku>2HGt3B58)yxC8R&}31|KYz(K#%| zKREBVK$Ye`&z23SgV8aEcol;OSnmtKiGa&^yx1s<2q}T(s@8SN(I8V~XGf_Z|HYB< zaIbUWYb2KUQg97P9`MN%PN%34#Fcwum}5++1tJ7%xkpF}$^(#8^X4IZx{z&oKaDCr zbxKi}`-~_iK0TdCM1x?qUmaGK=GC-671SR_mo|NWu zUj*<}Zimo1XB+?5_gn+N&Dl8G9Qlf>T}&SJ0t}3En!XPQk)kM&M5)k=M45_HldkB< z9DFeXD2#IWtc(>UifZ+eV-!UJ_COL3nnSY?iJ_7Jp?d)sy}L7>5fmQ{af1JXcxi(G z)z`sL0>nQvMI;9nkOL@DbY(svrzl{ZY+`u6oDmmnmdp_73f0B~w5^=yaxiGFUAi8D zLfnqx<`ya5;RQhw!Nuhy$Q(%FT!28V;zc1CBn#6HKGiPg!DanUI{ zq^hrO3i1w8L-?1|Yk>yIiU844pe1|AYiR0bgl6j8}h5k+Rx zgPQCMi2Y1X81M*Sg{ATdv7LLvWYr`%>R)7SsfFpPmDZqS*^UnUURLI9U zerTcJ(F?#wq$Cc=Muj~ZwVo%|CddS#TLN^F;oy0)jPn^-AG8p!7lenR#!zlC6lgCX zI7|ikv4ABpkiirMNP&ixPo0Fz6jSaMiZUk zMI(Kesj(%LjEZEX{DSdTKq+XJQ&fWqM;umFHM*X7#br3D9GJ+WCIz$r#2Z&=Z!GPU zkTDL^&Y`le{s7@)OnfC80vrMyLrF+jnfL|#MN$kEPdN<`<@FI894Mj`#iMsqdSe(x z{x8-YOH_7IqR;6TiW-JL_qB*oho@_TW7Ucma!ry46*HhDz%kf`Kbr%Diq;1%c$k4Z zazbDr2ZRyz{2>Y800MxcJ1$&+8QeXeu6Hp@IlwbX3vC5l=J#;R9$mh>`WtV2ougfK3wslro7?la=6$ zqjtbrPzcB(B*CD(UL3-E04ZfrfV`XpcyJ8HcwvBPoF!1dHEaDvwPYM_ByfUObh6q28h{HjCO~?a5Yd2xgyC?y z*ytOx3=jmXWV}+Sp8+}(U`7d;*u>)jWSDy)0FsymP*sIsiJinw0c}1}<$$bX69_8M z)=~SNljAzMRMI=bKQ7dRD%=`L9KU>VF_Ec?Sy%)m{mA@d^*7|1?ia&5zr=9I)!oYClxT)a@R3V)YnnF$RNz5*j^|JBv{6MYUwn4q%DV# zcMExCJWZQ>*64t5xc}-iPC-Cgl#g;#Hc?Ph$bM0$TA>-3&%j*sPr7OSD{IZAT52?rbyoPBq#x&MtpNfJT zpEmt@8wq`km9}Lf9)6%@Awev|m zys`GsJg6p@A{tOcxg?iuKzcYz%_#*})P%Ic2w??#>Oq<$))rUlmZ9}^7GLX1@i#eI zwW;vOQt_y@%+&l!kgp71r+A!l_*6`zcr+qYf{2N4R+Kv(@|DeF>G&R;7yl^!0X{i{aV;CeoZHL!Dn|7mLfq^h`_yP_7&&*Li0VJVppcxYLsPXUV0Qmu8g6?F&J?f=-Q^IYO{NZ_qx_c{le zv57^fGmZeM`+);($i+fNilv^cVe%M?R);E1X^zdJ{CbVJR*5))Q$!nzbv5X%f@2*Y zhkP3vm^))Bzc)&9Y;W!PX-M}#@iJ<}`a^DK{CkdepLcK-v=Em5Q-c49fcbmMM8IX1 zy;PTk(LBxlhEd~<5OX!FvdI_z_U+08_?302u{*y5L#c(Az?R{&=;GKa>bWEXJ<{?A zqGfp(tgSkw#tbCe{NI+9EiNe%16ljat7&MsWl`W{hUjdB%mG)1!3qEK(um3KKG(0U zU#y=uEU_RSLM%G6S+iORtzI_3qbciyEP^NkvyV15`(PFNeD&d{!DEV40m4~G^64Uu z5BJK}D&KZ!!yU?*9$1PBHdjrkkKwCDStX0K(UzyiYRvd(>g$Y%ZRZ78E~f=?dy0Fq z8138fNZyB@<7!W1WR;<;BOD7N?XR0w-&{ zOM3cISM`+yPf>HRXciqQFlZV9Yi0;{MNa_9(W-@AHZ+8Nh zeD7jAPoolo*FZcE=*3S&wHz{JO%@z*w-<*E4^3JRwAg+_)=NVVhYzDgW1jGpwmRSo zKT9j$OR|`VQQw;Zvb`F<++$L=W~Z`pIe92${}ApzavLvLkv9HNrTJFW3wE?}_9Ync zX{f*Vet7qK1O4jkmk_Pn@jjF$YK}vavZrnGZ!3r{aeJ!K;x!d@q3w{yu;T91buMR3 zDN1?L;!|o7oa3RTw+JC6_&UXQC|#}AXFEgZkM*7iA2})6q+0*A`3w2t{I<;aVogJ# zqYr!f`|mIx?;M851$n@SwQI)m9a1~i_okCxarW(v1y4Db7dli#{7AIpaBSuC4B_jf zVOehqw5l1IRyqHoi|4#?KUl)5w(WF1bjA&TPpyUZjt;e^<$$#yWe*qbr*tH5UVb}r zinX}(33u=3aHMO_u)=>)lA_eU=&h0AKn^)3hFh|L7bL=R5mgRv8D}-R1#L6;cOU1z zt^RY^)U8fZx)J)VFU-BX$)88%!5T&NS?J%vj@BCKZ#_I)P924Hx0W;C;tcmWg7eZLA?Cb!oxXcC96Xu< z$#5>Gj{x!#MYYI*9=u10b6+ZX$xn=5IpA&M;w6;&z~r`273jXb7G;xdyK3t*3vD2N zF{1XL|Bn>aiu%k4!X(E;u8tX=dAdo?emtzjN$GXpN3K_9#Nzza<#>{q6KIVRq0${7 z)dR;9OYeHc!d0@H&W7)(desh#jXHwK_^hJzOUnUL)-*u7NZoLn;OWW-MmOQ%$Hq?@ z(k-PL7%aOtBdtwFIryFhtUFe0erJwuvNl2R-qC$A-d$wKBYm4lvrEDLCCrmpt?nwi z0?!~=WN_ZGcE(7?ErYP74z1la#yZxO} zYlp8}lRUh?VqlXt%t<>JE(y0(th}K?o~XO+OG#&%Ipm28i9cp}o1ih)=lZfW3r0XG z=$)<`jeWe}Do0;KA1TC=r*Zin`@!@=8y4`Q6_0E00+I1Th2E_(DOS!Xo-DR z0zYVe%i}SrkXrs`%(7PDwwVlHRod!$X30hoYrcplmVAwh`R%wK0Ty4$+jZ$YAXG`= zo`kvc7yEHnHpmh3Po+Ceda%kjDr&txi=HxwIbNWKC5iT6+m;Cn867*%75r6vO2$Np%&E$oPj8oP&+U3z&^* z)vD|T_h6nXFAOlpg5|BwGfBvS4&zAxPAlxT)aqd~bmnZS82O52PSrlYHF|?LE|6xT zFW#cQbl%Ww#xli}E=a5!e0P9$Eo@!2`7WfmS~{jn?BHcg#AG5xK=8DZ(4=WXwa|Wr zCEoIx4}&f!u{0bb6xL(rZ4S6UZv>g7;iX|MSK4|uHqV@8!WS|u%;1_m?HytO;e##) zyV9p0z?ze7ft=gK(?|Q9ERz5>RV!Q^w*=tfD(`KgTPw zq0d}!uR!|`BRBZ{7sr3u%eAWn(kI*sifZ$D7V!ENg;!^nq(+H~Tayb`Ng|Eb6Ls=N zk9BOmE(Uvx)^kk@2|v~N1Ns0=<9kasNN@1@aj)j+*gloi$cCxz#h*U(3GLm~yLkG? z<+8oQ=5Is7tyaD3=t3<&I+czX>4y=lPjfdOdld&%&upW6t~-I%@?^6}H>D*uiI!V2i;1vkrjI3|DL&1)k$K9Z?I zL-}52UZF^zY9Otr8ujVEis^7_T8I9{8kN*EX;1WeHncEcYju zu)4{;`_^<`?WY>4H+E$ONz;Ee=M#^n9b;sN20AVMHpV;|bX_?HM{ZQ?^vZ?TzI!)! zj;)V0e-EM@i<%1;%{c2hVW{W^sr1f`D?-c;q~~S zzVll^z!t?@<~|$AhpsG(kGE?49E9vly5f2~>&ZU*ktA3chI;*ELA{Nf*^MSNdC};p zXsb#dThO(4e=m4+$apA1Ub8z;+O0kY{9>qFLuUtst@|t~aF(Lt-Q$9oxn$9%_+)2r z_JKg2#D+zd{oIz43nEGo>QaDDk+cRoRPDIlED+W>ai8+tG4f~EuW{15)t(%L>00UU ze0RoU%;DP0aW8|$s=j@9eub%p^#r_7CzGStOOx{r5a=eBo$@=~TS@8tyP+8%PPens zxn37qrtVLzx-U}Mx-Qvg+e{P48$Z5O{^hKJCsD5ML9EN}v@arPZBg1G#ne`a1IZLr zVvV$4DGM-P(wBJ59UVx5l|Nq%#kXOo8_>uLDVGl)rDD%}uq`IiLL9?uf^(7w&Go3$ zCucEgc?g&+vOD|OwQL(Q3NtUZ8CT4(ElSF!%k#Yzrd`OzT-AEfS}_3X<*X!(-83d+ z!uzThNU}GY;{F^~?)+m)gc^Wmv%l5D#8>V^UN}K8ivRvS{x`!6mzQt99~{r``v>1U zgjvm=k8L}TJyqV8;FRiNQBoIJIdpy!v-1_i+#;s*fS}6o|)xFerf4|3nEzjxmlU_GERe;bNT}v3ZCcYbE$XG z(2x}B?*8Kq4X?3)6sO5Nduw!Xq|D2~(pGRi?J=E|Vxw=4d7^QcU4y2|6+ zlBtcgR-_>zZe41l^2Yj`t+-avJ%d}#Fz5+V>5$93w`8NuK+vljM9}u!*QN|fPB&V% zKe`%A-)e*4bkib|f~rTbv#8n8)TaA**Prq~5>~rcFts$G7Gq;4Y`?06zjU}8)+GV% zRMv+PwcdLe{qktEE)n*fp@yEVOY z>L2)DUwXW3BOWYHAw86pJ}@ABC*CesP|%wqs`1rdjd|*#kuQ||su6q}(sIU+$&)3M zW=3vufiY*cVO;>xdK7L^tFXC{o>2&^UqX2?S*BO<#$bv1qcI^-{$NcF< zIZRnoRLAqO^AB;A1eJ1g>B()w;^-w1lxgY#0ckM zRKWx$cuV+V=k~>h`y2;1TxuZf+uORaPVV$Yy^|uH4}lFAZ(FxNjMFAu=FM>ML&ZCD zm#h90k-hi+xBnA?gV3u!q&`7&937qHl(gX!|79vUeDef1s`a?MAUnhSmi!kbcOo2w zLGH(hhoMeP@Wsxl@m-(6`kK8ZYmX4x7c+hKUW>FJR!-loz}WLF9GIKaf4oT{uPJ4) zDTy*Et|oDLG4~AZ&s#YuB-RS`(Zw+ZuQ`M8JA^tSRD`1F%2Z=GEwZSvKMJ@7O+n80 zY|Lb1?%PGn!|}Y(RYG?8KT=q zdreRLzJHjc7C6rEH`k$6rcUn~O+Ac%oyNN_1u8WA;7zDC^>GRLFT#C*vEC^FeK^JQ zU>7UP<|03nhlf;MZ5K@(i#*R5=K}B%eJ)_isp+}2uqltUg13YtL z_OA%3qK3CApkiSeic`H8A4vkj$hjC;P&z`^9a*8>FBebPx7QWixCtKy$#GPtejB~l z($m%(>LOG_<%u`57Oq<3X4KA~$;I7XHqpy#zA}5 zrs3#&DIEV*lq^~Pv0$jDwp>t8qzN8Aq-n2W<$Fp)hY!?^yiq+g9_e|E-fUpeNPJ4k zJ6F~Fq2B$m#aG?H5@OdG_PhC#&d_TaPpNUE7VsrluI#kIej?EL)y>#cnsizc=C2QkY<>Qw6c+_7WL7SL&__i`(yo0Np0I_~b^zl7xrSeKo|qq|JA;Un zMn*)6MzIA5x%i&=G1)2AJ^LFray@gRWLgWyB6f3Z=MhxdbKGT)@q0r2D^XLmfh%}k z+gO~`imh69WVbFgVeYJwGNe?WS_`tmJY<%dKzW?TM%-Y~{<$Qo*7%tCsMJ5V7vyly9v z)l^0p9J#>M^ScfYvS#Yv{!u|3>=&8Y$X0!@l6%8BZWdw3CGF%S;!eNLEJ=9Smk~XR zsfDZ%I1O78X#*GcsuB6#`H3c@>?1o{&P?W&Is(%dv~ zuAALf)AAzkx2Uh8W9Zqf+!qyD---6%#;;agCpZO!&K=UZFAO2of zfDhm|H;(`1N}Ss)CjQ-7gt}#mL13~wL7uI*%rdq@0Uw~l3S7*J>KQA0K5R4M zXj>yS-`yxH+9{W=(O1K1-U_1GjblIluv>L}StG4uL~jQp_!m0H{<2`CKQBZnsE27} zu_}#jbHR=Np1(+bPu>N1?@)s3-&ud0-;l5~D|5=kyRmz(g3$cD;t83=#xxUNzanp@ z<&}mg641&cp)uDjkwm;4yh76H1lJ>1kNJ}25a4OTdWd%x%6#w2x=!e6p@003QU~Y3 zH?7n{X%Z`8)%tTo9?n89p%`j_{VG)?sm*x@Kzavyg*b_Ehy?{Ua;_Th;zMhf|N57G{ul7~L#!ROz_sz5%KATfwE#di zu~@kA`9dsT#{wTL=$w3~Wp-+wFs|$YaS3UXXN`*;QR|#XgZ;q7W?JsP^YN>Qb*WCT zr80g`uPnZCFp2;@bMIW8R``q?LPZkO@q!HOjDpJa~K@pjxc z&Jx5j7-Y<>1fv_Qlu#IDjd9QDPUP@oivz4dzY$Vwk3q>7M>qzxc`1aVrF-zr99WEt zR*)+>f5cRTuhp6z2cKNemw0Lj;%V7mFYPLtmc0ejHPvH~P2JB&m$g=yrei+WIWkMT6G zA+``?|YwduML#+q1dsT;SkTtz&pi`9m(SeTbfG=vk;>M3MX(Ln2{A z-1Zr6QO5H)qr3w(fAg|mYbcaS zb8mtW*SQfHA8*`BVI;&vBzw34>~umgga4Famd+U--}NV>H3Y-&A4La~Rk9G=dzlkK z|Hd?tiagkEA;<~l@J6&{!sb&t9WLU8YTn~R+*ig`ZW7C@#e$Fn+|Tu&w@G@_ZHzH$ z?No`*<}>=!1b}>L^ph2)L2+ZJ7Z06JYP#VP;I*gXBI^NBn!-!W?8NW>Wo9?_aK10M zY^&i94WfB~NagJ2&nZH)!TnX#%^`sg#;ucPgN}M6Zh?9HZ5>W9 z1xf*vLCxC%xQdR0%d0XQV39IVPXsu9HH-l(D#BW&XYO?LM6~b zub9zt(K!0LZ;TZhg5dOnicg9_{*)1+=+WiL#Xu$)xKpD93LhiFycC5=c&g>OqW z4L+7dj7d%TnjngZ8b3g%ex!0;rb$Yklve zFK^bXQW?*WISYwb@3Of5qv0y_jJ1v7{MmdVm`N$7$ve@t*baK*oE=4&Lz$7)P3%`} z^!-7ZpuD^+H`Vi9HmNu$63^*18lRJIp5$;mbia3)<%tRxID-J86PsnA`V}II=66%~ z(6@lA1APFqmzq}xT>lU-2jH=TWn-u|eS!>N{yPD8J=tjt6^awZbBLP;so}c7Enw@U z?j-)jAOXJv601gl?`}hkA-K>=hMF@GL)lReG4b>4V)E-i7T6>1D~FIOXb>L>%h)AM z^ny-GPy=LGnmoK4o=Ac*P$KoLHE0kIMW&ruEjL%ek0QbllX6@b^4L28xBOaJwz%IC z;F95qs`&eazxP=IB-9&eXbC#Qp>79@SX5{=?JtIDjuUcy{fA>u|#s93=q21 z>VE8ZC=x(6lfu~5mGJMOwhG*r(fT-CM~>bDqTl-gXbQAwftd(m9ykLPWK=|(v6n=d zd9Y<<8v$jgZ7+2v2f&CHRD7ZzO?UuBaUu;o1iy0hlgHpuqkNF7vhG3JgaAH-19+xv z7-O^1m_}I(c;OLNyvorSiWtPZAgU?uNcAB)0KqY0PW;aRlpMU>fhdyjJ`V9~8ly!4U_g&nqJgLKS&> zi8Uya7BIdg5GORj`E#IX77Rz6&}%JjAQf2iddugFR13%5ZjX_n}&;qV_45R&{W;gA~_ z5Wrfnr7L^f_iw+T)Rp7Px4)RuvdG z@Xd-nN>Q37P9R5-BUry6>bZr~uhZ*Bo0xDIaX#U|DQxCcEMQaK+Mhyc-rT)afRW{CZ!2Qn-2W^NZLSg_g zLZqEMr|3fl3<*I$+LrQS6dK~ewP_2YR8PjuRRZ~b(;)$N)T8gaq};l4cX4i+g%COv zTX6k|2cXeI9Z>Lh1mQuRWY;2!VGAy_Oc5s;YI%f}9)E1in#9+PiBSW&mz)U1d-|{z ztmjxHr3giK!3en`;Fz8VXA_dA(XUy_ zut_HkG!_7&*hw&8Op`>yWwb?-5O7UJf_lFTM)URp9T_6PZ~SKyFL(-K82cA82qgfs zTvFgK7asinJg{uSn5PcO-X7Q4W;x-3w_4g(60X$lcrl>lt4tIK#`kp8V%$^5yX#Y-=4QMmto4V zc{yrGBhw<#rq;2v$sf#BN&{a{o0|nR7brIict^8oB|9n}i$0@tS19{yDdjaqzLSte zh7Z=V3-(sFmlBh7YebJGEFQO%g}9#3UZ$LUOte_b zrWbe|fFQF~94zLi({P_-6d0T`#OSv_$ee3D`Y3%PH*qG`Us3(`cqxvE@K*zrFYS$YSDX;7(x^KE@ z=*Fe=Z5*GVZy2SC&pMGOuI{_n-Ye|NE=boC9B8zrdk)I$;s+7h{qu z_2xB}M8e7Li^^u8x`veN9Mo;u za_C2+CJQsf-AWFqju?W;9hXvOIRw6uwGS#|Sz5lQIxll8;z}AV?J&&~wn=!5bmb0V z30{7zHgv}|ip&Qrxu?u(L3L-H*rg2{EC=Z#>|HMd3-Q|OrhTkOkUyLu3SA* z`hG|^wZtvWzI24Y0kR+A@Tf7X!dt3Un$2D|;!Lb$Pt(r&?LtQWbDtm6(Eg$z_j&(^ zF9p}Ig-YG|fp$wo+n#vsz{#m_3ZazUHa9r`pk?;++qi4Fsk79Ke{WbTJG;(oY^B0} zB&io`?;JCSW_~*lOR8@!FM>6~eA8@xF-k?(Nw7UXC{V}eMfDC+(Aah)0gezQm!IF#j z<6U4vH0P4Jdp`LN&BPRh5f5!2?b=c9ldweNa(+S-)S0V!SrkqZ-cQz+m(0ylg2T_O zSI(Kks~anAe~F#=pOo5obfm43*sWUTd8<6byd2L%DVC;8PCV$eFYY<`nembdLou5g zdxh+djmN5CV{!(@c`Uatqn{EC^OZT?=Wej_jPG!5Vpl56(>JoVE6b(2&7GaXss8Cu z+88nbJ_ZAkPy|iaqrkZV@h`71EHmU%KJ$rkqukG3W^t6lU{Xa)3O{ z@mTWF{#K>*xFRz3oi~IkaFdzyE0pB4Lkiy_Y~utK^ip^8?2 z#@blj+gy(I&NySF1o1VsIlX(xCv(3HL&|@lURnOrkU!HaPZKzLI7GVZ z@joy8UM>+%Zb%HbU4)MCS6{vV%nHfDESbU%5$TshCcyJ-e8W)NmAdTDp&qUD7vStb zn`Vt2>O<>o+rh>UmbOl9hW217sLt`!w>vS7pg`-9*@D=ZxIa;LzQQuKKc${gY;Zd5 z!>^Qub{xy>86xdAeV{Q72)D)R%0v#Fi71cf1x5PpVuL#=3q93KQVRG7K`F`=bm}r? z5-~XXcSwae8Yr{jlioOn9j4)w&94T9B|hCeN3^=XQ@Ba@E}m5Xp=SZ25AxS5OTUsB zh~#VNSFBzc))tZ1rf<;&Qw9aGUe}o!q$`GKNUt0J){lxa+(VkoGz5Nt=*X(6eQs#+ z$yU%z+@GChFFp?KSzG7I*O{6@4Mn?KC zi*RUc^0&&a|Fm-A6E6MM*0Hf^l}JIhd!;{hi+i8UPPhEgPNqoIl_SVThD1vJjzd(92 zAT?HGaiKnCPupq1?+GCADgZ?$-c-ZA&pR6qvJTNWL}{}pm?8H+z0)fx{6?9=zD%7q zC`tC;Ik{0R)dcor3qxMu3<5Y{fucl0+ky}=rwQhLV3`KyMp|D-|W5|FDjx|)tit+!@Lz|$?D*f8dWD6(&&7u zQMT*FOSx@z$c8@PAMN0Hp5aYz*3YmJ>Jjr}JK8d-sFgB z^c`NY&oql_p)k{3exzUFJ9#T>J#r%wovD8ee~e`wDP!%!jD;Q&`8_CW-qhnmKIeAS>|^{$F@M+g z)=%rRlEnDIds};^`+YssvBK6X_BePrZ^;PE5vo`NVK;en#y*uw*6jTtyOnGs$ycn4 z-EJ<%N%)HAP{d31Ok0NQcV>mU>GRTP_H-jgw*83+shxI*>4XQb7f5=Z`irM?>O_;g zwyAitZtBZ$g9^|bcoOdPsYbhnw|!y}?@Nqd=^c+Y(W)*PlyEE+c;|;sT;dh}i55XGy4AWkB40HQ zv%0?gwm(o%t)u1mLus)v0h-hP)03zpWZD@v{%ZW(;~_3(mvBbCOvo9*18Nx&|Ck^i z@9TdHV=8T&V|9J#ns85(l3%4GH=)`#_oi~bZod{KZ^vm}3br^HnwoV)&aBNrQO?SpQ1op-9xsj+xE?JOXW-&*x-|F9^IQ9a z&3|V*8~@_xvYu1;bp^5MCR(%lBBXKM3{sAI&Lwp_pHCb{lUF$&8wY22-@RnY$Lr+$ z{%rgM?E^i*5t4A)lN%?0TDft{rKr}Q8`gdWU3zaZmw$c5Wv4lDZM>;n@@t`GwRJN){#$)~(u*pS%&-DYqx7za~w5 z=ootcBzQ+PNsO}{wkaq;Nu;u1;==v3eRCu5Yo3gog2dMm^a55kLpyKt-wvTG#nLLP zOJuv<<_)9U%x#lFcEsut?C}W$f2T%cOqcQB^}#`Z<>fKa&Hvn(B~l%>0^QF%f3;`% zG2YylZXg>_;8P*IYxu7l-PsqLLuTBl$>cTHwRZfaL_k69Z&KXa087fd(dsEiDASGB zPSg##f*vs&S4DeUwy_8!-Ks} zjYna5x@w1H3$t%c(4~oedG8C#-iu4xc;V;V2AulsG{T~5rMBAh@mo1~f~FlMOT3y) zegpSn^-SrC;s!V;o2Whsj!j70 zkUaH*J)f_U!Zzlm*XJ^*+|y}`*}2$gqyOENqtN|zHi7TU1EKn#`ERm-N1w_MW-Wl( zW3hj0y;iR2swFG`e92882-g@$?r{vACb)Au-hDKcT1|*tw7*wa^&GXwuThadXy^naxlQ~52fca|5bXHFy1Z~aqM9pMq} zb)em4J!^xNeA(6Uw!+|RlSx2D^Nz!-eM$2=>Vf-_hWZrOVQ}w{GBgp}jmEm7_OR)P zVd;gZ|48GNzUC?YToGJO);}h7>0VUI1!h}bZ6-3lhiXYg z_q1ndop#aXRaBj~I)yRUJ30x~SeGRwZ;3C+-t>Ql9{eJZ3-3hB?ULe3PjEjP#@A&$K|hL+C^XO`2!rR%MnhUNfd^V{W`EZ8L}VSk2U~S2bVL zwjnT2T4*e4hFEusW#Qn{4Q06+_v&AkpJsnfT1BSCXj{x+J@>fY+ufuMEN}VFd3^Nl zm4tJaN1pvSKeeUBe@pBS>JqBPzx+@=2H%#UH-h8~9xEtOYbbVjwR!K58Mey2uBte& z`X{LE!Td?fuUNy>?&S_T-Ts})dts`zFp^LmTsO$1GyE#VB;~%Noe1%MjHQb}9>vV^ zLf%!qTfA09g^8h_{G>$i*KY(>1RR4OW-X>W#wF++ardGa|IYU~9_{?OQZY9_QAE16}^L^8J|)> znM~L5z~utkQJ_G9ar}L<`co(ne%STj*EE*sR1C{AY{ItBzb)sq|2`Tr%_(wbY%_=_ zn5yZl#_Wag)#jHiuW@-@AEwTd{36cR>r6Dkig3AUcaefoPp*X`m~=zk1dcU;m<82=$4L&TM+xCibnDsIia_ugrVdv8FNpdya6 zveL5D*DT92+h(rJ%p9d{M`~unk*4i>`Qtvv=iqn1bI;xL+}-nhzlh!eux%}>Gxb;d zDZlp}g7ePls<}=l6+QW*U2Ocx{@s$94(}YpzC0wlJwLXJS99t&U9@23pBpSKnZqZ8f3WS>t- z4!7;hR`&PEa)XyX292LLvtf)Ej_YTOJexKo9fPq3gJk&ihRZQ%c>j~ZSzdN<5$k!G zGSff##e=UpZ_YkOPnP~FL`YOOzWh4cZStov=C73+92nZ*hbXIoh&xI^zU*1$F}PsP zxSeip*B7s^@s`dp(8=j}J4Ndt;Kqim%n~8l9I_NVrowWx3{%iv`rVd2>|j~_{apB< zSNwxJloxmG?YrBD{yxjNr_V2uA9Qas80xbxqW0gotqAVH>f^=gg;8j!{9mo zJYSapncAYGK}^k+#Rs37Z)%X#(?W@>xBFTKbKZ=Z<_A4pJhNsZne8guInx}_+E z`R3)ByU~GMvyptFD~2CAF6^xmt-tFgQyY43 z+FkXwpX#(Noz(W3^IKoicHI=mP8T0>Ug0n%F&;lIAbgxJ7+Chw%6D!jEE#{vBX~A; z9|nr!i2bsB2dhH(p1y*{g-W)LrvID&a&3z#vbv!;s(z|rfmm?5a&GnB;}F9x0f?7ndtnK*x;kuUfzUT2>+*f({5}NLY+8h+V_MucjRE8 zqNZsY)TVb_*|#Qyx%fS;aivw7y?I^L%|}*LcSBAzv+N$@rL9*~M3VKA_?qv(wjEK-K%vVdSmQ{fz&@R$womxA z#C%nlEj9*H=4$!zQjTo_KSW6=&DVVrRNlQgjWNHgNP!(?N?<#NY7 z@r%n1S;{lBC%+t0DZi`H`YH`^6IO{*`t*V*CL}-BzF1iC?5siBi{iSJcuTvBE^h z^m^pjg(fF;V!h>tmN-2o+)nIEO|DQ%@^mE}qP_VbS9-tEX>=o$zr4#R=$vL@$erMp zHow((sH;;n5^h+k@L3BywCOD93RCKbd#p;c*g9+^z&m!*P^bAmIWX-ODenD1yiu}! zzIx78Imqig!Q0?qk+Ifti0RRgvVu0ex|oQNC)zKg>uvVCLh0mo8ZmpB=oc6=_-wtGfb{YsNe*JYWE`Iu8~$J;DSevDlF zQXga<7N9ntpV>6Bc@BiRyLL;!>`?Z|viF+W7`SSbX>Bj)cYjKKXa0&O)9`IS9gA;;qElvD zWzTCE*O`T^-_^`7uL9v{e~cz8dHD{g&eJjO=JhL=xz230x}MBq!A-|wWdiI3)4p^{ z=Nq2~WiL<6Ot>ak!cM+=F`Yuqwt^q@BfoD5IEA|Mp;zUi^@#AD+Qwdw*3(nGyP!U$ zoYA&L%vVe_v$8FMkzFWnuAFEJ)B0@Yv(9QDCdHR29IE%@Mxy?-9E}Zl4eXvL$-;~U z*iN}G1DX%tq1?YKTq4-Bq{zOS)%C~wlR%Hm>IDOi`sQty-saukhl?JpmAi_ky%70m zs+;w@@f8||-0xIvsWerm?4bNAo-nRc1`)Mip5X;P#CuuGPTAhq3wyv<`IMOOjGEZ5 z@KxwG|94Ws+Z2!4FvfGvm*<2}H_Fw&MCCa{h!$!+%_`58HSw8WwqVlv@V}(z=mvCDV8vKnikBff_*u*(W0@e+*5h@C*gIQLHFiq_8%|QH>is>PW)^;*P-LlC z!yg^q@_JfiX!uQC|GrqIr?CPD8tYrDWNx9Je0zJ&)xy-%_@x|R(ry@k_OZ}ze}4k$ zDmC5R>2KVDM3RBa^A+(Ge3n$}7yE~r-!HGl0^_a`9na0xGQeq$cc?9WeVFj>{hI;i za@(Idqq7Z39*_FocS_I4r0J`b&EqhE=^vZ}BW@S=p35y#@c8<~5q%nf3oO_*cwKEN zA<+oZUj+|1=#r0n1swcOIq+_jIUn?$0%@TU`E;VJ5{4cIjM+@*o!Bt#MX2`c^&XQ0WY!~0MY0$YKYy4taQ zO|&d6RHe^7ymC|2-Z{2j|8aWSyG`m($bGBG$Sc^-(E8S*8P%wR4oV$h(2h-OK{=J??yCj<7& z2}_L){gzpy`)Rw^&BG%vRtai=^ueNInTkKp6$G?Ca3x6J1RDv+Qyl=09!__zD5hi2 zW8%Y8HelC@6?S(e8w3BrQ*w5OU7M+9-M+gheW`S#+W*SDfB_94W7h=VN2{cI@#nPE zDJn`om#L@tuY)&fLi7)BZDRiJ>i!4y;9)Civ|m@eWT&tQGM6&oVQ|DVfW@`%okog2 zQXpWlC}uP!?PKP{fJemUm>b{QYQn+p3&Q_9{qnpzLvu9zFz6>dHU zp}0@i?n?gBz)l*h(+`GCNWYg~d{B6)YUFPFS9{hYgp{>7Y|*ofV{8cvCC*II2@ z+wGsMik-ar^yQb&WqTHP&NfX=BrIJ0^ip8GJkRM@%iU>oVswwiE1~tHc~g^!MgEvq z#dI#l1hGkrJFR*D$lxa=AUO=v0@M6l0Nd2=Nzua);DjI_RkXiC_T_z1b@2GB^!1y0 z9dLK5Nb@MQb730yNe3N$r?Tn7&%h%f)a#P<2Yd0w6@<5nDbCj|UO#?uAC+c~C)~~V zGL>t8`lFCx271|@js13IgEVye*b{rkqeEl+lXq`5!0LnJtLM4T3qv=WUp)sln-7k! z@0Mj#MJE-3$j$38?)v&-p5!H@U8e2uImEtKCyYER9XzuS1=CEQUF6-wvEJ5N_7fH> zc42GK&*1TOJ3LNSeWQL);027DA0 z9_948r$4)OaQ>;!yN{>x61A3I-#;MQmZgq1^&yj>kfy~S90^QV;k0I3_Kk^<5^q1T{_VsC-wc!PdjCD&6C#7$0zRLJ!dhw1Urno@F_H>`=NsZ%x z>rSCkY+H!I@yXHCKP|o;9WIj6IU$#~(-rLVMyl&rwgJbi+~4_gxHU*};X#K0e%bU5;rSxPN80E#pc%qMcFD*FU)*x%j)FY$P`3BXB& zqykkwWD%q;7R)~7{`35PWzy8Z$9ctl8yF3}d0FaSn%$@UA>-oCo#Ia)SBjKlv-;G= z!HWu?&hc`!w>I$S0!*(iK1hA+#0eGI_G%Kggal}Bc6_V(yeg|bL24>)OYt)~`)#{; z2P8E!xjw*=2->`m|4U^ihF@4SPlXCviuJV3;2Rv)AcXwGrj!N1)qw=yd3z3^k|Izd zaR|@>96M%DUaHiu=h1ssYz-*>6&{@O&f5LX@96yoo<&V~C{{ThW7HrJ!b4~$P8k0_ zk)Z1XvW2{1Qekzrt9FRRh;yqCk9+Z;dOj;fZnrNRs3HjfU%w{&4}=E*W;P1<2MEp% z*Fr9c9;-n1@2gQg#0ZoYX4QRnv-~IkQ1u@UGaPS>G!?j6cB~xP@)#KAENMJM(>(c_ z2E^_K7VtovJiZ+HuAnRk!lduKM0YKDf4R02YFV^T!kcEKu8dLx-T_?-H-AsP7YByF zv8`o6@2qTBE!17@i6cY6{BXc`&p}%d)E2Iws#iDJf`<$k#+nhBj<%8`z&^l__HuxD zrtU2w6Vw2xkE20M#U>iG2GWds;I)R@DoCV$;|Mw>*h+dq4v$_FG#^652q|d&IBHw_ zy6q!C%qrdo_*DPn(+4r^;bP1)0)XtI$-UcRD=!7`fa28MvI%{@Mc9nn^8U$v%!dM0 zSp{%*)>A1Lz!_j~-&i@mKjAVcg%3*;p)HM?_laFLx5b`Yo*TnaYlxC^0JYo{6c2gr zILmKtkFphsk+(AZ!oD4^LoK4(`6PQJ*n%R!-yJf~6Mk~mgm%yAGAP* zH8sch1DqI-gnr0T4VyXRyW~;WJNEYa*<-x|R9MEL2V+mAJb-pUDf9D+yf^3t_zhF# z_<@#jnmZJ{2(eA+5FK`MfgD3NH`NIrg8_?2%#@^nxhb{bZf98iJ|1MNSy(<1s7Uo0O}oi z^CM^bq>4~XQ@YESfd*cD&aPohfPS=M@`xU&b8BtoVjWxo(~L}(P^^vJ_KaiOW>BB% z^XbFlK^I$2>=U8t#mGfFU1whsum&oq=b}Hi9_`n-0>QGvDtt>+O{8LO?N^OhG_KVHSrkKplA}j?$%O_8*xcWf*@i+b@^| z`h51%Ip=+jVMv81;V{QmA8-iZSTkN|W-FNn$N~EYKH5QPkxQPeiK{}AE$X$xfOUW1 zZT*ArLl`_D46KDDr8L`a|JAMMg&w+mPcJX7NBu*XK~8y`qF+3$*4rxk)cV}Ly@C_~ zC})nns5q4Y;!{v}KkjL3#^jQo?Huu`3dUdctLH&D4Q#c%^ttXajri>UjM)ad?7LnD zWN0e@Dgk{?7x)An(prJ3jGA^I0f^ub3q9{^`#1w=XjcHvsllmaA3myKEkIPn0bzm& zYDYUCHN6#xG13OK5fX}7w5XV_73(eeEo7H7ieWo>1#19Y+#J}c7ZG`?+`I^SAx7eL zB~P^{ZR!C&bsQzY17PQ} zsffiSxgaWq1TMBw142rt!iH1#L>g|s+|b}QDmpx} z=g7R-d!jzy_`0vN*e$%NPahJLUmWB?93VFJPl2-^&dSg1jb45Ky3=gIN$ukJe;?lE zJQEvm&3#dfpiC0^k%t1LHq1`8lKo8+(w)mpUe}Ul@>UwJ$c8%IJe`sAsA(O}BM7aX z^e4jn1^@|m9X|otSraYbZ5h_t5oJ$2@Zw; z#rdXhq8HJ14VN79S9H#h*0r9+-bj#5y5Q$_sPJmpihuA#gv+vyC}j69Mc{Z%^o+8l z=-#~C(>JtK{}T0(|71U@$p3eA0zG6My!E@__ywEq+T zIL+vB_%u=fq)PYG(1vL>)JgZr%l3~01?sk<~ zH&knPig)ORSxl(xCchrO@?1X6=%|r6Nv8xFt@XVBd8IbkSc&7Y^tQY4O38SWTVmP0 z4JmOa1o<2HV}*RHd-IJ(=qc3%#j4}uqsm8bt7+Is^T;I@1NW=>9j<)-X0j*s8*)$I zu4q=Z3S`b)&aJ=VkA>cw8H}yn#u7Jn=7czzR|fb+xycw%ibb z57uHfWK54v-Cj&CiTlg3zhTlJ84OuJKD~#qYO`_8z@hfuTDgJ ziE2+u=S$yG2mEq?vzF;b`5s0;|F0!(DO>c-1BO3w}vFZJjlt0bcJcf>8YQ9WW?!rXa)Jjxe*!R9W~KGlKmN+ zozi%zc;4%tospmPWQvLW$w>?JvZDB%ADJ#2UoV{;{OR%dGG%A-$NcY{J`?%I$;Zy` zyLNWwly7y4p<&7*zgsMrDOcEY&t8`naw;A#25j`!Ny;8X9ZG#ds&<@`Uz7g&`e{*F z$jHUUys84H6!}z-+_bYc*dJ{Y=8O{29RtH(Kj&bFFp5O4MFd z;bz>S9*d$i)&{pFbhw{h%1!LL<<+&z-F!1u(Q{<*zhb-dKQ3@zWoVvo$yz?QVRK|E zYnFt8qTNOl+7oYud6Lb;Frl^7GeZRg$yu z2}#y}M^9Tc&Kb{9GzA8I1+E%g!n$fkbGsIxR{1l{&w@X_7t*S)_dqpign)bgp;BJ# zKFYeh(@Tjg=@OdjAkyz}HL*lp$)tApE_!)Y3vj( z7nn6t#$z@#{jFtfIB|R*EBjFVQsZ36O7OBEp z@%zGe=c`QY#-osN11y4X98fqO@~>f|TJ86`)QdVls$(Ak2HaY^@z79b>|v5OjSu8^ zxMgJP?#*@G5#6{;obcJ;5REg(lhn&4IfT`6y?Wgk@#FkPp~uLj<4CpTlp}C?y)>)k zU}oN&$?a1uNAzY7hq*Int^{3Du97E)rfKU=6UJnX*2r-mwhsD37j|b;hI&x{PIwO4 zI4y5Qe>eW!7L)Xy_C#WB@f+jhcki0J5Rv}N(t{r^y$k;O94~f~U@t1=yJQ#~;Y2!1 z_io3R9Y~IY4i7PEftZ7$Hk9yFAtOiM$0=?rhY{Hgh*z-zLr2+{rk~T(1*0Bw)0X{G zC#~WO?{gP4e>D<5N=Kx=W2cS}x7ifdhrBp*sWvadx`)y)a-;g9d$_-<$?c+q%Z)3_ zG81(fe*-c!3)UAuHRsTDG9x}AYH^KZT^D;)E_n-LI4DedUzy3?F zrp23NR%R<@*DLYghdI>Iy>+u~Y5#JE3Puk_qO*|Gp`|hbjW~4LtfUNBA z7{m#Ar`X;<$F9Q<-?Fb=_EY)xytC;0fi$ZW^{_(Xc+bb^xl2Dc{&e=e1VUZoI~EX~ zdGVRoR=qa13`)D*HfCb}{d$X8c(m<0KIE@cdNCRn4zgyNb${>>X{sb1$yBNuQf1$JP`qbVuBE^N75a zv*wqW-aUGY@A~bbQSQD;?^ijx0Zwdr&c)x?v@+{G(v~QH)l2fjUKm^#sQd2JYkYS0 zf`(@4{R`*YZQtLXQW~0+Hgoia? zYDTtKW~}SKcaok>uM+F@9_*z@k_PW}|Mz(4c-}jx!M9EGn4CUz{=Wvsl4NId_{{IW zp^bybqpLDUzMpLGDmw@Z?>&B4V!&fbKHVcH_JgQ$naG^@NymK0Y9!O_H|ORDt*=qH zz|hwh9dcE~YJgYfRSTnqb|qg+ru6>Q{q_F$-@h4~k0rZZKhyuT{C#U)1XnqWSOi`B z5k25}RQ1KzBSSXw;`Ox`giE&Uu>S}g5y9o??a5!!zd!x8$hi4W|IzB{NOUITw}g0k zUu9|Ez4_?$V=sT3M=VAQFYR5jpR>6sNL3EoY-y6v>G{*TW4pc(tgs^?E|Re}USTbW zsaX5eb>6&p^6d==yAe{`KZ9wR;O|B&N!jp`IT?BZEHyOj^8V7vA0=NP*pe2@o00y} zf7QD1h_JUIZ$mocI^*iYnc=Qp$pPxopPf(uUKVguASq;_HAh18Tp%$K61R{eln3Ew zkxj+Bx;Y}_HjiMhq}~gi@mZ4Wg5H)Lk0nSn1`SJU@f#xUOX?!b5VtiFWuwu`u=|qA zSaYhD>U~KKoQ%x8sV&t&phe=4j}aOxaSm1hU?u({U8$;(X9O2Sx**d!cQs8BmVgAT z5*|RclGVkzQPXX(61HkrEngcE5aNkSa39#;JQ#XbJW9n2u_9s$5UE$fpt2WW|K;@< zkBRi8EE|DR7E4TAQM`?`Uk(zt5n5!HlKKo=4$D2}Ku=o^>` zOv>1-WPs|4;8|2NZ;k4Op}V`Q>$#bbf1xs!P zwqn#Y_o#c+`zBlybu=8t@MsI~_0rTzASQ+@1SF{ca!m|)2wn_!5=9iGgqzSbX*x7* z+B7wa7D<(1=MI z;Xe&L#+J6Fb_JG&XQL{@|B>%PRDey9lOEx;-0TB1U0N(nk5)zF(xPbhs9n$t8Fe&A zlqvi|LO*p-1&=&$!nHh3J4$P!;gJjQQj^CjTWSZiGf*DVGw4B;itv*pRK%LfnS}1( z#+c?9MiQ0AmW(0)(2{i7r0(!Xkimhf8lPhOX#IpIl<(9|1&sP-IaFYS!%s{x^d2Sw zd^tBaCj?@HQNRtt9@D02Q#3=w4DC~N8ue53)1(s)uV`kdx2BO498T2HD#F7!9g||r zZ)Skm6LG*ygnppOIo7MFX?!f!4eRxC3b#Th<_m*VXtCj{G!8AAR!NJa{i6M$U8Byz zVr6?xv~8{`yhQ3ns3gPa$Owf35n^D z00r3l?$N3QRA~{kYMK}wLsz2zrO^Z>>6IR#v}BjbeW?*-=qOP*;!Vj+F@%Cdt|2Z+ z;^~3}2NTi2DJP?}2}G$$q|r5`kg2`RnV2it4)n{}>*W1pY+w`N3k9hK4!lA@YH5|2 zk?muW__DJBD<#@4ZBxV)-soXOD>B8=#p#iB6}l*W#Un?AKr@1c(tQMv2po^mA+u8z zlGI7#@LYlnTr^}v?z6_Nz+HqE|7pMv9i2IhXW`wn)wKVLPl^Nu3A%Drf<3&6ObM*9 z8S$T*pEFqCZQ2JF^-wl#99vG~tp{{vdNjSB9!rl2#nWo&RRW^8L~UV9DtSG$I`dGf zMi7bmDrVc#CB`N3mam^0j+PRxK(C-3;XOB}(~Jd~&6p&p52Ka?e`tAx`-J}&_9*sM z;10hfsV!Vz#;{~DWHmS*nh{YUWJo`oULo|)^q)IF4uMQ{Q=~-EkJ1m*Rq1*(FBcP9 zqenHp!z-T(ScTAgO}_Co^(JYGUPnKGr@PJ3mn2VzaS228D=={U2dWZICQCNXsKhhu zE2^5ZPUj1IYupz2g`ShH90)R*;vKYknptBmP(xG{MJv4N3sy-AzR;+UABEXiTy5b^=ME!hw*gNws<3hsr~BF1Q$WTgK|*$hc@R1-*X2Q|1w+f2iPAD2a^@!##5p?l3z7pX8NY$PklyHS zcNF8OWF3Q|&LSg%k4mPyyzpt_!M@8UUsJg*w`aK|^e8CQ%^$lPBp+ZC5afh#|WO*v|z?d1~44@^>kCqPkcsrPR6|D04@ zmr}~M04j({;n(xEdYS8C%u{L8dxRDvCk!6~$CNeh&Cc=BVBX1U6d4Gu34N32nk*bh z%(M>|#u+np$PiPnAYC$)0c99rkMQQ!Fk^&a$DC)(G1Tc*K2}UidACHj#7tsWS|Yt7 z`~r=VI0JTxZqtv*(8DO0R|ozVcARiZ{h*mM(Ua~;-z0C6o$2;uS2{A#Q~E;O1Dd`l z8G4K!pZX^~g;_#wq6>q>Jx>T#q5SD*kaDKFqW@{rQJ!>Xq7S_@^FoS(xj)?loR#)5 zE{QMF;cJ){K9?bwb|$4dq%mwJ_&U8K)F-7k(2R_A_KC(acEd&T*)};Ust!kxAJLnb zqKMLPikW7RSvofPN&qt3K2p9kF?@&K85b0iQKCfJ7q8DW3%JZ% zHxc@sF}Z1OiL)A~GdfbMDKf5pDZb%{nT65PjHeV&2A^OzrGa@a=3#PiL^E;{!O(kv z@HY07Y*MdI3JAYN0RoN5TE-jpHB5$kpVv0!zS{$49PPYBD>)8-2y-r9p11C51s$av z4Fw3nFqJHtI}Y{(qog__jz}3`;>r66<;*u4E=(B1DLkL*#OUP7-I7)ewWhUFrZvk= z@=f(*9!b@c)zF0j?jE6TiChiW47g9ACdZOHB7H&# zktdm2{JF^Z$O8Ie_%QwoAvnlb;IsKKz6%!ZSW18Bs7|XCfSToi(1AJHOKERH`xyta ztx9vV&6yA4mSPGtgu-SctU?xbjP!ZT11gnp%k<+gxO=481IB57_0na0TZ~HSqV#PQ zOerPZA(NhTEqqbH+iDhe!sIVWoO(U(y$C8zEW@GnD$_STkv^UOhbc{01#Sgzg;v25 zT@aYf1h!-ZJX&XXya*pPP57XK4=|>7GH$quf-nlu`@taT_&zU{NRK=5$p{zjRBjCsvR%VSf$cG!sY9h$;kyi-?7?)l#;HUhfO0Sp zcC++N>5bC)(yOJ5rBd z+(zJ&`{pGp!=DSBmso@$wF?Qi)Q>8(!2s4@)R1PR49tDqEj`9xHbv!u9g=kedCzmf zbO>Q?Oaq=;+=_H?({jYH;v#dRrC7N>oh4vxnk^`(7_qTtAQ(~?#ANIVNq;{S@b2iEUhruh+sr8COD}c zibxmK!MNkU2|QBE4>p%(@=`3A=*`l0?N74a-~~~qu&%UU0R<5_@`rFe4A=6u%8o}! z`p0O#FdLRNtC$sSGL&uNnk+zP!STrg`=O;QEjSnUTwO)TDOinl%3+J*LjO$uL_W+~ z!`8CuS#_+BJnL6iY=HGQx@J)#RbgU+gPU$s)g9*u?#5qoLDKHQ=ZtU299HvI9n?JS zb13K{t6%em{d2AB_Ge(3j?EGeDGw={{IlpRjajq|Vn56}tPhmNs^V9mO?WG6w1Ny- zgve?$Vxkz&_D|ApP<2?+=A!xW_`l+YEFZ)O%NxckR<@LH5?yK2`BE|?5Q3CN%-^IN zUg9z5Df@zs8GV=3kowQ5#Vk^K1x1qGV8uZ<1xd1n#17ag<*zW;H_qIqFd6g{d+V?>x!BQfs!>2JLsb>v}l?_5(c%) zTn<%Y*`b_717ZK{AG78dldK~0H0vo#g?%L(WM-b88G17PdOAT$AgL$NlBLI1D7}+v z$Yuok(t=ARN?WNV)bD9W(@*6Hfl8Uz)A7h{$Ne}%jH>K%c97|1at_%;@DTWdj~2f> z`#rXs;=(@RP|rFMH4lq-T~2GughO0SBgL)~8Tmf>Z6s&#Wd3^(xKuIppk+8Q)ALYt zeOx!DDCMhtaHfCe7;8|@EvGBxG{32)8!?-GnqMO&k6oPf*cp?Vb#w9>b2miz zNsh8@0w1!sa)}B>n_MXfjTT6AAJ>hML5QabD z9f>_-zhiH)cg>PaI-E8zOVGBglaO!GwG1zoRYaE0r`Qx@f0l-0Sd^|x6w8?KfW=?N zjDVM|A)PTXQAb%=R=8)ENIooLt!{ z>Rhsp(*uQHM*fILo?O_^z#3BtS6TR|>XH*D=w;&Tkn$i_kYVWIki#KQRq`YL%lW{} zGfODhmXS1gkhY#*6Q&dPiH-=nn{3C@mo5uZ!rcsTFEf;mM>@dXI)I?b0@EP>vP*$G zE`6YFD}KxAB+Z=J>1uaA7IO( zbF{fApTtKngq1ihuWT7@r9Oatj~s@<0*;5jf$f&eBbeyD;ysTll$pR6Emc)B0U<3j zM6Co7$0<7lBjN@%OMpu<9S-+2RaIwL$I1lU-96f1-z3{$211K4Vay_IUT~aO$b_33 z*To;oqJaGh8KIi&YiZf(+UXP)I;$!uvTP$GoL44{2vVc0!|0o36W+JVnq|%TzSx1S zGQzSQ=ba2)IK=Ge2W1#mRFsxuW9EdXv&{v;D@JF?5zhY64J--PNZD-JXqhDIQQ3#I z472Qn54^O~cj!pTCsADyzES$2!@PIL%3c)v!H?QUNty=yMfM4va(aUhEx4HaCTd1+ zBaA}om4gF^75jutr3%WNRpnhYr82^vlu5B#EjQU79%a(Y1%pu@ArCFmEaM#l6VAXu zLAph7&>o4{$+eQTLO4a$if4ognY?4)LV%(!W0u`yBmn7TM}JFL5Z>4eal%17 z@UDOi+=J{Cw9e3=2!r$u`fRUA3LOm9U}Y()%83`1IO0qa8$?c@Ic2{>!K_`NKZv6z_mx90KbTh(vp*127+0D+mlt zr1O=ul^@Z+N*pUD`dNTu(+{KTW0H-G4kT#TM9iYUmS;rMB+Ozi5mPbeNAForf1L*v8CeffGE>vDq5wRC9)CwF@r`%s^|&`zD8u^bscBHEwrTQaoO(sSgC9XW<{KH zx}2VEw&3CyTWtEzwLR{aYb*Gtg)jgw_|3E;wj{Dt-a7bFCR7@YY|Z_GerfE7caq1# z1|p#0!vPsE{!9;v4A``Y0`^l7(h~_!!cB?@z)v8)!t*>->`#e{`s`pmBwo2FxR;0s zhtJ}O6-ug`LAyck7u0eT3FC;Y#hq7dgRIx0FVE>v8qxL9$yqO0P3MY@@Cj82Sp zi~$KtStH-BXy#wz?OIMyv|-1 zo~4hB@H;^F{wdj6S zst>m2a#1BT5O)BZ@}=T1db=VI7aCY>(FeoIRz>xDaZ~vTy&+&Ip#C>6jbAO_Oygek zP&C90!l7ZI93%(9L2=+5GzXV|8TKJu%C#95&0sikMRq(Gj?J)Y%2j7jgaAi~1LFvD z<)iB}v?oOh;_VW)gP8G-AOPamLm7MnP!A5?l+u z1W(nD()+<#fj2u}2)nHM*5Q2E1kNTWoI?+qWYR=m%bgZ}rnGLyEYd8JJS3jyP$`qQ zzw$_4X^~Tx&|EfZTf0KoT|1aYv403I!D)F_2|J+r!6&^T5sz$=G;YG+cnV5D%{h!N^#GBX zWQX$d?D8r?JD~Kn%PVDoA%}-x3t$Uy)VZwMtyhPpRO&*^c;7;*6ap1g207$a=2Uus z^F(?oqs4D1&VXO%?YU-#KP;xE+^yuKJ_L&k7K>m46PRn%H7btm%&G|)PIbi@lSwS! z5Mjn9{Tuxw{Se~}?{-2x`yg|$vcFQzX%Nv@S*|x;>=u2y@@D0=O84@BSj!OeGOy$> zbjh?AiJ9dOj9!KyBF}~23LK8ijvR>CsMO8SEBRdctumrq5A&h2H4x;|E7hK(9lD+{ zl*SJf0bkvAV?8QM4n0I2RP;TtsSqA#SIH@|uY_|oid-v&xlIQ|xY|W^d6Hb0N}VDp zt`Jv@+bpjRoaYx)e(!rwOf63>0RRZr@s%3fcZO(Co3Of7n^b3sJ~yq>fZJ7~FNMhw zhL1&nh03Du%5Ik@Xz!KpmCt8O=iEd8ET_cqlRsxc;Ace6nJCJbftHG_i~7N~mFc2* z`QyTyU=wf!*c?y;;&MkJWknw$n!sz|y_Pq46Wqu@F8Uh?%=0R+EeiH>lRp3r;)ZZt zz!BUrqWiu&U{wE-Vl|+ckRhfGeg_%=Ndq`w*RBT)hT@B4xzb!LSBC3ZDZ!<2OSvUn zI(JJ)5|9PP4n~7{Xd2#fTq>8%WpNo?w@M862v?ljz=h_W;5t?w}`IrRUbGpl3jjuB|Nys8BXiUIqQ-2LTZK4}6;3 zG2KNz!00Y_fIG-V81eBU&QdB3x#^YdXknQm?NP1)_X}*<@G*CqYs7uRo#8&^Ldkow zdfZv=E8Z((P&m4s^X9;E%<0k#9BUUcNz7G~BbQ;eFSsy<-5ZQ&u5;lT^CHQC1kP98 zT^Sod*-?vs9;oD;k4eh@#ZAnfGa7f^pq~P25irGF?iduOd6k$>{LJ0tBCBRgBiU*$ zzMNg%KHE6hM35ueEi5ERH{_xKU+6QHK^}_GIIqWQ;G+79h)3iux7bZ6^MJs2ZgRGI z)o<=%P?`H_K++LZHHfgVd@3FVE5NYn{c~uo$M%BjhK{I4X!ls zw-r;8&l(a0VsD-ENn9WQ026^c3HBWm?3 z^;(u=zH|PAr2TQ;*mZBud=UpFsUN7Fk}qmkgDo?x)Wvb+z-#C{NHo|Kz)F7x-xq<~ zTLN}KSb+rlM4>sL&tr|s1f3{k5N_+n0w{o>{IB96_^iqO;!%O?KCz5w2D&7cQ(L8k zD;D@9W0)kMEnHGpMN}u5M7gk0*U*uOYiKC)8aiE24oM1{Elp>LrPH&^LNua(9_WvI z#nMr|BQZki%kRPO;E^#_9u5+(@adLS0ur%LR1d&XRd2!18@-b%kM4~8S8mEUOCF=) zU|SAZ@Tam7+G?;+Z3g3J_&dbyxPhv1BAj7r3EsCL3MnbCs;n9n$RJf!MKKnt{^sVh zT(#?}UJ{R0iIsekIZYh*|!W(x5=PAL`a^eQ#%u)By(hBWHm58Z0JZ6mMVkRC~!J4y{48N;s z1CP+&Cn^af#}v9=ftBE=AvC;vwQ4|~U>LT}b5>nZO2lE+k)shU{+$0z;*{fwh+o+U zwEu+p+apzX^D4BK@+Krqt3A~$G3q#r>QNL4Zi*-{FBUMu)Vi!zWucB&-8acE_Q9XW zyP~{dClK~7S7e?hNyMg>iz}>_&$0HZNP$U#5;)QHU9EN8KAX&_TF+u_nv{`FoWzpQ z&$z~XFrXhjfQbX{R<%HH!M|q?RFTn_%T*o5D`bt&k{?!G;mNi^&=~&5X0j^Rg*%EyfQ+x5lO`k^qzqK@eEV6j8DvKf;IXvk1Nydme)2v-g>_In z;4x6f!vv}qDu>weW`SdTioO8293lbi)A!qF28ji;^K+_PBgdUrG*$12Xjc!LeXF zB@Va^5a6COcq>Y?js>#q7&;C7jr=!2Ccra*Y&W3j1ucinSCj3i@+Tqwkd^A=!g+iY zBmjJtr}Ew zE&jJ6P(!wBh`%P74Uz)tfnNp!H74Lsd?VFk@!2p*-a0%0!UGSpx4{YVvNZ+(78tej z1V82L^Q)`2waySb1^%r#0MZ0H1dj-P;>!lv0DXosH8uQ2a0?(17_1fol|$}}5CC3C ztwE)pc})n=RM^F9$p%>g_kr+AVNeZ!0A>gX zw5Shc%WnZl03hD3QCHj_f(IBtsBIS{(lDDRhbO>dp){R9#qWz409OH9-i&TS-50^~qyyM} z=KBXU@SA{dfHsV>ie6U(zzq-q{2~-tn99*%z0sQiR$gjFj6yAY`YFYs!1^sdi^ef*>F$11PPWuhi ze6HTIZ8jh%zT?Tx8Au1kgA+k`h(16Ct`?898`O&;YOmz8_2gH=(Kv zPXcQNjRo(0=`|@}0Wcn-%kuzKYlT2?`@zCaz^(=Zg^OA8tMhWOUhQ`l9W&I^Z{XSA zQN+417ep6ZEwb_BVjB3pdGbWm3e*ZJt_#28wHpC9fVqQ7HLQ64gI|2_8=L{ci%#x4U)`_o0w@*n*<~r# zK`jASfLOB%=HqF0y`msM_H``~hrCw#0f-ya3Afd@+a2L2=O)XQLzH+P>oLDs@VspZ zM5Q*g77fY*A3CHaqQzs0jV-z=8V#Q1f8+Ppjt(g2dFxjihCl*z7ohrp0RS=hpP}=B zN@MBb_#)E8-Z7R~P_ZXsFDW+cng}Xj(4Yw@id_>?QLuNZ((Nc}dhflylrPCkUV87n z=Or)s_Hf_~u)DJ}yE}8|&i(yoi-pRx8a_Rck-j0*9CkRfe_-BxXh1#GIwa_88A@>s z=;~d{)i(w$5l;XH_=47pm44W2)?nG-5oi3Mc;izD+&nh!J6sRQgFu0!Ci(!=Q6KmK z4geW&7$|uO1FaJ{VB!J?{II|930oq&Ev#=6giIG79I=Hd#>!(4%1a5ta~ zjs^DnxdZH#{>zOap5S*Jus8q*ihOzjAze;ZUVx>QH*g2$4IG2}06$~fi1#fSOj1cbFA;8Q_}`)-v;n5xI`;} zMFB>LD1gYF8m@7S1`b$8gHIS5^h^~mT?TXlwN}dkYv4P4IWP=@renBs$Y+VY)Dg3Q&}_q7 z!#9ToDR+j$4ST4^J*RG&RspopI1U9+A*xD_G!lwf+f<#B{Y5=Zh$9#Qa=3hK37CaIXB5=u%mVVFgwr zmKfeeSy1dyPmK@ck77qtX3_r(sfY}TZ^KV_?k3n#LK5cCIDx0&Pog#PBf2j#K=320 z5I35VVYHH%9e1{R7Lg*TBUMC3J9f3MFtkd|5|}}Vf->4dHB!HI9d=+{+pE&u3(xiZ%Ws@wS2b@)chO_RbNPJF}?l8P(aM|oZ*Lfey{DZ+6MoSE;Na=1sNLaID z+&R08X4@&Xq?3VRJ$7aNZAZ|aiK{%bx^U><+Uu zWR>uzvoemw^ozU0Fa>AF4X$N zV=s0zo?_#UyNmnO8s1yRK$q{!9wbNhZf{dD(a^1B@4}-Q?B$=ybGayTJL!U;q^Fal zHM|!uNUe+gO45sd6jAFvN6TB(Sr&t(6~|z&r$0r1f?uo2HVo&<&8Us~#2jpViwWHp zb%by0pWVebUW>RuV|cDbT%vt)NUBB|epqXn|M&1$ZZGP@a8zT4*Kd#Mcmx-VeHHpo z+D~3`3!HNSk(YQY&8>2p){&^`X|tUQ3Xe#Q7w7$Htcjff{rgVT2Rvi86E)D?o6PfH zB0SB=x#ka&VXdwd}ze*wJR!&wRW? z-ZEc3$-181%Q0u~FzMhJV0X3BI#{sD^|hGQw%gHTK^tsLfSXpEgx>Zy(*y0TQ6UKu zZ&Kyegj)^l^~cIB%{K`}HeY@EW0DLfdwKj(=F&#DIu-l0FstXR@F4q~5K;^jUlckQ zUlyJbo)^x>478u>Tube){71OC`edhB*BTzkL-WOW1PYT!i zEV!R7-kyHc@nZa@430xQatL|05|3TsZp91rd>LZMyXgHgzSStk$3Jzap`E{;2qMxK zK}9e7cjw`t$zBa*<{8hhmKpE8tTU1kJ0fvjhd~SWp%V*gm5M1Zg4&8y{6W~i5tO$5 zjH_)s5_U6!a{gvcK(9D_%XBTBWNl*vTCWx=_Iq?*n9s56hG#e9^y{$P%VizqQ`P`M`Zy^C)5~=U&$>zK5vU5hdKkDPwrzTZ&J& zrNbylQ-Hr5?jW*gMafLwqQm*2rI{s|LT;EU=MVEDBbxaUYfhT4xK&cvGZ40~d`!e- z7Id;q-@~UxQ=%D>W2dvnr08vVzZqZ1hHVigKo^O&iwMxBqMK0q1_E>l72Zy7bTfM9 z8?fjB1%6`kv~YTE0T)p60= z-C>se9ezVJg?OGgfe1IeZRi&lZYbwcId{9MSV0OaF5B>>XvEB;S!z}kyT9>0_k2M? z=QKM8+ZQ%LHTL>0>Sv(a`ppm_o2=*Q*WK=reue3~o2Kz#nmiGEOJuiFRX@;@)+3{@?t)GXkNc7@fHmmSRK>Q}}MxP|OV&5!t!#+U%Cf9i;3jD(3 z1=DfaDJZ+HR$^{f>q8SefosYVu{Vn$x?lR4bH>ot{~EulF+xn}Sm^j2Ss_|3z7MYy zovHi;uNR#Pd}dr9yHV7`Fi5_|K95;x-CXP&Mrb=6xF3uh)VGZ4u7v(5UssJPC&eD% zaXhKwW>`0Qg7~%Hwe$o1DCI%R;u2FTwJEM-FOEw;xF`*J$I2e*Z4!6+thT{IjO!Ws^ACrpUL3^8%j;{IT3TvVeK z&XG9Fi79L93PAo9QeSr7p}q`awNv~&d!JyBIDy5(wAey@?xA4@Jj{^iA+ZRZL8z@aa-uxV&}3_ zgtg>dL?m-(`R;Cw*#WYHWM}ym#1l?p3%AUORTAhTxxtS>G*QxNw|bwI7PS^xjl+L1 zMq!uT=ulm1o?tuvBWyC@08gG@R`9T1WI{C&S;Ql^W=YLVs8TaBi$ye*=(hz5R^VdV zN3r|eB1;Yk?8;m`7?@}tL1IThRuUzz3;vgqBRT11U0Q_m@LD5L!~HomqE(^-7)!X9 z!!I5ejthVE?&T~NtzW*Mp>Np&Gb=owy0yBLw<*n`M35Upzg_tzn_V;*8QbfgsitrG`^EWYHE$wP>59L@4AC zMOzcH@}^Q8yH-~;imrP%7k~1;#ovnypucwVq@HM0F|nirJXH1)^jQ972!srQ(RkR>D_h~T{Kg4#3>F~1uH4l!W)RkR33W&Ewj}}kO>kebK^VsKv32j|grusBU+ACAqRFKgJz-A91IL7JSid5aX8p%;dyyIxVGzWx8HiC=p8{c{CwS z=;6g_zwDO65$Cj&9-%TAtwb*SX3h$M33f1NifdhXKtI{*WAaYN1I_0UH6Aq{mk^H9 z>YzZ63J+)LDE2weS$v4>CdEnf;(pR@V5>R?3D4qpI@XAH7?@)Q23majd5o-q)a9uc z%NB8hu~_RH*k`^icv`a9o0e=Vyv3v?e-mP}X~`EbJloTiLzpNjr9Qo@J6L0|7PFgE z25&N~k<9kr$rc6JioA36n$}2tP=^=><%6(i-gCJ#rJG9eW`z9Zj4H&LY^wOYupDu+ ztPpu9a24@mWR20{s?q9GzID=~ZlE~5i|aO?T5dR=y06ij9O&69ZH~B<+e+L;GNN9w zA4D42J~a3@s)2LCEhYbX{6)uMsZiR$xgOqOJt+M`ZFYl&%B5(7R-&;XCH4ZT8i52} zr0I-wWM$W8WB_V)vrbBGo|9fkn3ryrZjx@5zSrL(-7eiGU6AgS?vd`6?vw72?w9V8 z9*`cE9+DoF?v>6Uq@E=2%4R8$^j2CMW-hso<46;F zYNaejK9a?#k`4-1bo0EgkS@f7EhzILDJh^lw@3;bVKV|nC)##3{D?G5qe=CX;H9Bb zHQgL*3NX^B9U=S-c6HbVemeW#M4QHF$^(QU`%#veaX8u1*gV4r_09f}pgI+^_>h+= z>cMa~(PzX9haOaRA=Zc$|0-N$b)RUhx@CS%abh6=&P$Calw~S;WGEkZZH)Q7swx&49$KaZ$yZd;{E`z0Idzg)Z z{}~LAoOXXt{p9@sIXrT_e3!wE@{df_NG3koH$3Qbj8XgBvRww#9uKh}Z0}`;n!W`gUcE~cNG&S;u~yq-(-blo{PVVgI8R|{U$s4FKrdz|D|SnZj87}jOt%P z&h%uhpDUF)EFpIZGzRxc$s&ZTiFXde>^X-?@BRzXT{$X}Fu$?Cu*b>4jW%s5qRH~< zQg7i$aXV!$H!Ei=+e$jky*KiFElEItp5O3a;71s^ZdI8LXN|m(r$5p?5o!j znUJ$o79_*VLS$<@!(=UDt~gTGD~^`+h#%CA8Q9ZbXP4oE63;iASG{C!CmEn)J=+b> zH@6u=>8Y#?*&no@EEYLad?khB@LnM8x+Mvgh0CI3J(9e*6viuozJxBj7oWhcrLAD- zZ1WOM7c3#zwQaF|8oH~lP`ZaM zh4;ER6bbiYmO$7hfw8kh^VKY2YVj@Zhgw19a*Mk-vRdBTvJc{9QHu;A4?@D_hg;iaoMNbCnA0UI7Jgv-kQK;& zg8gB0F}n1eqc+P_LSe&_WSklvYT!DxlTwX%h!RTn$PXuu%Q8BJl3OC69jm1-q@>D?oNmXqcA7E-*Mr|_Y;#khjWn^4dW;4A&Gz>*9m~1GIv*d|TVIfTldYAnlYfw}mw%KO%0J7$$v??E z3|Vr2xzJ;C1`6{P3AH>-f7%6A-1cFVt_MdddJ350Z-cK$idrv}&`zOYIRmzb_g_{Qz{s0n z!{w|V9_*@Ot4Py&cLd$<(|EPbn}iR$($)fd!$*|N*u&#-M_011u z9`X~4Gm3BWCNZIQc`$%F{A;YOVvR#k8x$2ifDK`sE zEm0Yp^I{nq_Rq+*g0PNB?lDHK5IJ&y=iE3!OmpH9m!S3BpLb`*O>z?@aLIYaImKJW zS;Z-Zi?TqTQs-OsQ?6`%>w8cCmW$GGNS*)8j*f zpTjJztmJl;S%#|OKP$|o(Idj#a$*z@bf40tau3nBUYEALoMC~sjx=&D0-9th9VNex z$xwRYS1H}HKZxT+a+Gu1>dMcC>%EfW+?0jNZpk09t*BCRoc=B8IcuM9x#De~TV=c= zmQll_g(QmpRiI=JZObdJIHZZVqC&|-`Jb##*^qEbJ|)iEh%FbCg1XgKRqAmb*`O2^z66HM&ai61-aG?jZ>N?f}O6~X@b*1Y0H zZ9|kN*~790{V⋘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 diff --git a/obsolete/fonts/xerox/Xerox.XC1-1-1.Souvenir.Italic.Z b/obsolete/fonts/xerox/Xerox.XC1-1-1.Souvenir.Italic.Z deleted file mode 100644 index 8c915e9c2a266788efaeac9f4db45d7c08c2a95d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161162 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%0DoMa&BoFX2ig@^$GdNwW5ZE#n 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 diff --git a/obsolete/fonts/xerox/Xerox.XC1-1-1.Souvenir.Z b/obsolete/fonts/xerox/Xerox.XC1-1-1.Souvenir.Z deleted file mode 100644 index 1095bcc547b1b93a947bcb82c16561693d218cb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166643 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%0AT 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 GmwHomY6Rn{IhCWR z)SfC-St?PjsXkSKCDow{=29eNajKU?fo%vdAyrkMRApfNP@2e;%KxV?GjwB zsYvM-A|=ohqGY3B0vR6$a?;D`>6h3i-3(0sa}vs(0>owzit%u$G7>DC%B0W=6*J$N zMTu#oDCSRmO^~yi7?Uc(Otd1-aBT_EAFj>Av?44{%&@K@vulz~?aDy8>s*B!31ym; zlcP0WGnUMpj}~i*m{*?p9=pkKaj!bFWkF5(`X5&g&GUgGD=A#o{JK}{tIpZ4^3~_4 z4f4Ws42yuxMhB&Xxse1rw1QJR@qM-L!G6u62g>+YcRHmOj={D&f~8?6NbhSWRpG;u zDUf+#=^tQl=O-a&N*ymY} zOq}?|s6-3w3W4D_7zYk82gvALP(1#0Ot^{N0LBQa7qPREq(RcvA^K4Jte^d}fHu%V zRHZdYTj?XMocQFBT9j5wP(hgY2olLkp7e$f5SzxxA^oni%F?dSTZ(DHW~TkLo;K8S zO;9^(MQx`owW#*gs#=suYFBMj(zLL))v{VsJ8M&It#!4PR@T1Sa)S>{YAih$A@!E- z2K=aK*=Q`qv$6Eh;uOZE!33?deYVgx+S1XGcJ3Btm^hz%0ozgqV~fwm1PJL3!FDBp z0bi>ZIKT?f5yho9ur7QSB-SW_%(ey9jkZMkGrC*^xs7RRkT zC)amVBBf<8yJb_epxtLgAK32N_&ezcv&bhN(^Kq7-MuMt)H1jf@*{U;ko#)8U5qQ8 ztr@0S))G@HynI&D7O}ZWYjee>B?-y~jPZy2C=x*;2jHt*1so87z|aNtYM780@iTVL z4EtF>@n`?!pH)-0tviKdJd3zIHdWu|UD0vDZ!!1nC000O!uTc}0v#Le0 zJfop;hl`+GO2B1{o~1TwqQcKk61y$YP;|$?sW%QQ@bMwQmCULdO#)eMSVz#l%z;vQ z1Yf!k9>E6*9bIfnm!_y9WXh6pn`J0Jv}`S_qFMD8sNPBFIB#ihg*Yp{3` ziucEFtSE2sO2|Piv0kaPQOJ^=fHBf!_7YNCM-e9&PMi$kk_NM%)4*W{kv7;h1wu*dQT6TQVl^3{F5EHnZdnQa1TP17NP^G#*d=8Mts}m_7Y_$tJv@AIukFpfet7rt z;S@ZGad08l!GJgs|KUX}hy!u))rehEKwe#Ndh7WV|1NQ(h$E%qSmF&6{Y-lF$>OL@#tlJ~Br zhW9!jXG8jRtNf=sRu#raOWZ_5Bx7~93a>9RrXzq02lxZ)_Myz#gmGtQXP6+p!vP$l z&jmRj9c0ZF#$9sHrsD{Oh#B!CR>X}M9=~IEoQEB8J(kD!nD%ajU(hdhMGB4(BbZ_0 zU^yZ8yj{O26R^glMF-K_M%wLFnhe=^@N@@=_>i3?REbL4CvMn<$M-C2TigJ0CfJ76 z6mrIO=5Z>$ zkTDkT?nDvx4r4Y6>!+nug^4nRO1-Vhqa@`A=`Y7#`gF>!>gIaUMno-LL{$m5}^`KE!2wyoc>^U8c)@7%vlIyPTKl@m==IeK{Tj z=DnBGkrDh_vnz_l2a?RyLB4DmYa&H$xZKe^F;x_*S-OQVFvv0l+y%{+F zX8JI9vJ!6INmmoUyymaenm12#)=#Hd(nM!fGMybn8`i*L;XLfqQl%kqsID|!&I}{h z3`H@2MTB^$BtJNd5j*dQcQ(~gM!6vOuxg0QqgYKBrx+6N!SVK6RkAB6Pkrti9GE5o zAMsFJ5o>x@FuZRFw-Nm86xU^cKG3#OH{MlIC3z0(u3!)vB0`5{j7y<^@4zK04y0H;>Ay<0uxYyDt}prIQJPFg0xncq6w9Niw!?&az&nUM4L z7E#DmddqGgcjAs8fPgx%BG`yx+|VDlL6<%F890E^ZB#OLZR<&dk_$*!)|n^sm6 zFk79Ua5b?uIqkJoOU+fia+r04b=Fohyq;=SyLC-wwdOtfa8rBg6w9eEb^5H-T5(cC zYT#I)AN6pZ6!2#>Eb1?Us1aJBmaEG)bB+=x+es-6mR+qzgg(zp6%2T-rG@%C0JuHC z=~Pm8(`6B}(!0@zz9Dg`l0_918&xlPvsUTX!lmgYWkpr3L`1B=`P&i+D?L@ej|&>t zQ=738#HfzgJplksbO}fsqAW8#YNJ$97^esQsg(1sj=tGAJ7){ppXz@W&ST<|U$u`0 z?I$_3f$FOu+U4PO>C}v%v}NEwShqEjG;HRhP#&g3)eaR`dlkVl9b+AkA@keXkkLN; z#n&*lz4md!+9p#+MoF2PC3kAEnyEPsZdbajT2?KrTJx%nBw&GL=LC`k1PiSdlXF9` zzbc9-%UDA+vNiI*g&BWs&hf|JRtCGi!3N{cExP$eGMT{&Gov!Vxo zm@X=!I*)#?!uTa^u_%O zlSs?dyjXD-hQUYOaJ2HWRlO+#9FLg9!K{irdWSVWn^_nVa^wkhxB32*=9^1m&44-Bikyk5 zldrQi)Xrqgj?w8`epu^xnBoR9b(b48ivAF4D0#T*S>P0XVKaKsB9am}r$FEUXy9bK zSx$l`;;hT|2oCu<#9?Hs9W?RDDaVVsBkSyGPR*;ihxFfTPMy%h+Mswn#rWLjQj#4# ztAsnw@uQby**z;0ld|}fiEo6~kq)&lNb`qx?#@{WJg4V|0XG!Yc79XkdH3VzA<~}X zKD>~<1^NXt=sHFF{%nOlN^m7_C<*?&Lm+MZGSR)ml_VoI#UK1fy;U0sP*p@s3}`O( z$sLqm)aa@Fam|5ML?i`CiFoiPSs?9!HMV2HoHcqUb@&u>86x`&O7bXjdW=YWP6en_ z6`stkh`O!O8(G+nyoaQYE8c@B7U^=sirr@mMV>DnaX`@-Fo2YoLnNaV6H$D||Eyw~ zDtPxd_hT_W*2cwyuo1~y1EmmuY&Kh9APl_}f$>!s#1h0Do zYUi_LIXW-p&+29+X{hrJx7Y(z^kM5IT3(NqAldZ{zN{74sctzt8>U(%cENNF7x^{B zsp4f2i&s`7DYOWX3LaC3sidpE2}p}VXf;=e|XH(dl+-^g10?BNqF==@K z_f#5T`<-wvBHn7fdM;!wZWhCUEh5ex!Ge;ayI`j~e|&S0!r?4?-e zSUFj9;5E!bGUt6hm3Q=BbCe~2cA-ign%%QeSFP`Eq%w@P`L5rabzGWI;j5N0w{4Ta0X`nCxSzT^Fq_;`yprk|n_N#@e*5;4V+jh*>*bo@Y%n zV?eV{sJJk>Dn#6|yP<%>0YLOUbwiU&3v(wp1T3F8eb;AR)2*H}@F+#psrZ?DdQZ4A zP$?4ELX;F4t38PqtN96=?X8DjCrPt^2HPwK%S7F}35GClkj@SuU2-lA&LJGp{6j8vIaZ_Hl zY1ebM4ves`&5J=^?%m)gFYoRtrz~)HSx6RzonvnEC(kL%UL|DvTPRsnu?Y*= zk6S;o(JYWS5*P#kfB?^I9ALnaz*X@~M~r=PSN4fb@4-Uby5LxsH!dt`l+a>(QCY#f zQ?R&M+a}@fEEl{(|FEF=^U7ZC;AiG65Z$QrTAIrnx0 z8fSczFHKvWx7Q3j4tYNfSdl-sWBr2RY@nx_(3xMEP}DPJcsBw;rAMXcZud-_Qm*E0I6*oamUO34-i zye&Q$o94$Sxo3)B7Uh;jWrRz!G~|U!RuM3^{G}*rLf}V%I1$Sqzc*FXby$Ry0Qc!C zY8D7U3FruLU)`tc(S2f{T^BcPDAk5ER>QC;bC!ZOPEiTJpMd5esB{aUMMNt^1*byu zwpjHrO@S{_rlBRRg_J>AD18^l5qNhQdq?23mv@zLl!Z-U%t&}xNmU>Ob{qRja96mn zB)Z;~_HP7U%16Dzo}nomTezn9u?_#545%O+f5n&@SWPiyyT{`+_H-_4(Lf`!MJpAc z1sKDLY;})c^J76tw3b$C0rnF;Jf51omF{p5~O6i+d-oSQe+#NQYJR=3`SnU2KOj`T38TP zs?-oh9xV|EI)4pby+wRTUL#!JS5NIr=!D2+VWMFWQ+Q$K?S!mcgccF|4*iMU57l1JXm-o~@DSFP_`7j^Z zI`#|=7BWS1)4`rZELb!hgdwISga~wzVWuLqV9L%47L(~E{!CD`%1M#Y<2Z)d6Wl%HSi90viMw zAcL5JAY%}G09caB!i}k#in{tN`A$F5Dri&f#Cy` zhW!_50I;YbrvEkRHigO$tyL?GR6WgAT^^5KlP+zu+P`VJ3nU zRz*l*zTZX@5nW;UjCX^JA$+JWLmI(R{T3NmlKDymntm9!un8&~<%c`0VHO5WV|`UIH;r^tyNGnXOZGF~ z6$>+qg_7Svb}|EDs9Ml9M~rF_9BP7Qi4voHuxS)qbaYuQhu@NE;pohML81~RTh&@#D-c}Z$1!}=!>Nk_=Zpb!OR?fgU8XacoTWf#lfu57m1cKWhzW41QL?5 zoz*A<7#tND*oPNL8WhEh1aM(ybq7^Myu+`<%ZLbh&|zhswOlP%p7s~I2o9p#vmg#u zs9u7ICi|*ouT2QJDG=g@GU<2G9A5slx0vrnO^|(d>04&`CiVve@gy zNf8ROI0(*kKG5vtb4ZK$hO{VhNQ)kaw1|#qi{6I1Fnh5vB0=>NB8h(CkxB^7>?h`8 ze#Xt6JQ#(!82zk^9L7yDi5YeaMPlG_!HZ-=Gc<|e9r)rmNmfO|$e($PmPEz~AY_a% z1<8n}_#S1U^5MdSRsBNtmV!NrIM}a9h*2NW(-lR7v1r3r5STMcC>D*cpcD!_1(~p8 z6wZn^p`*A(WeHD;>G2xTil89Vs1^7R?9ujcz8w{)PFXNcj9-SqKq5t;03iU}^-G{# zUPGX#5r~bJLHj^=$X#Y*4Pr;6jcg zc-Q%jdt*uzI0_L9i{Mx|5{}dh-k3OYUWa4vu{d5=Q_~B_pO_KC4;nJ|H7FZ|1(87j zHygwsv?TaGO9JEN9vKozPqguPQFOE0=?E~oN4s1Uwe7TARSzHWxrJZ6U&F?RID?Ci zMJNqQZq~)Pa{gI>{fS?Nf3c3=-&^ur%zh7|3kWNzAwFI>SPgbo&xImL_w9}io9-z7 z9U7*iQuYiIj|v~zAQH7ovzsA->b;5?gx^SUY!Lol2EjFE5dDVb=x~ruydC9eHsC7D z3GMc&-Ho~1{8-oNkMbk_xLx^=-4y`&qwtSVo&ZUt5Rmz!0hyH`kpE-d_&2(ZYU522 zH>wYFA)>YK2)S91hCMJ*pbbFD-l8XaR(T5^XPC0&<&Ck14%bb&NxvY04LDR zN^*=`6MLg{lc$&sG9qyoNp4t^qyRJy#ZJCYppo1`lA_nbqIjqsoTM$mv7}}(!Z`6( zl#(M(V_^S?43wSz6C*%Fp#b=SjNEO*$AaY9#dk;pqSHSF( zgIDFVPkN0b+I@hD0A4;CjJ4SX8%@>aa1?xf42raoK-quuTx=2*a2sKP)5LYLY9WDg zI3+5FAZ15+BYc!2rAR3RnUwDxN?G60MC=?5m-zqCknnjCq+~cRbqmz&g6%%1tn6< zawI4skA6yq#*)EleM9D!0}e~GBZxR3>1!3DCu=}0#<*^uOoCW#AYevT1a<}DX!%C(q*3bnKTvjp)j73o+?GDFfO)&cH4pa~^Au8cY z9|R_~OYI1g&3|W^U=5wYQcaWAlqeFpD{$8plLBIL?UA)xC6W#hjbNelsu+K?ukFx99orNU{A;+aDVa#k}^sF zG^v6Elw9a_4<z!J#nYl$OJq zh&l45lmU#2nG~Ryb_I!btmiY3U zJS`MUTEGNNI|;}EqY)ri{7bl3V4@TWrEV6)C4E+A2zj;S7Fnil_CY!?vjqlOgJh6o zB;3eBnwgSC4+4FN7WENebste)Jwkjq7f=96z?&16QG#KX=+bK7l~;rBs5khAb4e@l zSAv1`)7N%t`6iE6AFkEWc3ynhtP;DY>iX^Ee=*TRL3klY) ziF7#&ujMx9Yl0ml1Fwl6(3+q{p&(oSFUzI{#ATgDiU(q2JVcv*1B%dF0vgmN-tk*% zn?U68unh?dw}-GmiU=5_NMM)_Aqbz%+LGyHk(rJ~!a@i@{KkcKLu_*<$TTULfCkP& zzd_3BR^R~>)YC*jso5u1Ms*i5K!$^>w0>k$UDq6DC0`%T*l?BybY)XOQ9@o2r%D;Y zK~KJ9PL0AYdj48D^fDbfZ0)KCF;@ zTJSU9d42dDm$E2OcRJ@?(@jX6{pQbEarz9}1kkycXcG?ShLC|UoJ!}95?N?)jzvvm z|J_w{AJth{^bFSI>-dGJe7&4=zyWM78v%NtIwTI_$c^Z2EH8a#GR4=a24F-!v!cCh zIm8Ascr=2R!K0wqT@+9Y*iuc324|zb$wGdOnZb((O)N_BN@jpc^c}7wk3olg5~4^S zG&al~gGfU}D_AF6pbFum$WUj8kMhPrFj{1SkaBdMl2c;PEdT{Y&gf|miJpYUh^aA@ zBPY3pdix@GH$Q?@*?CvGWw)<2IK?0F>|LD9nQd3&~IyeEM|dvXl9C-M1u8lN*J z?D;vJK-s10iR36cJrnv;)BG=xRR6Go6fM@L1cc4x2d1@t6@(02PLI47=3}V<9k{0}dW&#Z7 zg|!7z2*covnV?;mw}ZryATo%_naG_WFepoba?YSXNDb8eazQ+oBCO|yG7vMvAwc2sa0K%o08d5RnCCk z?GRtj&G^LeRD2$luKcjsQ-9_yjP=J_UrqIr*3i(}(1#Zi%?3{%bE;NK;`0Cq%2w;o z^H0o^9oP92D6HpzrxNJfl@i&j-Rjq35gG3bCjFRyD3G9Uo`CgiOi2n5*Acj6u2Yvm zxaKZ&_ERITINUJA?EZo}nmQ^+L%RCBRkd5kK9a>tYg_!0SxmBouvrPq`Pqf4+_&X+ znzZhtver1MAsu3f3CU4m-!k9g@RjSceOl!>NA6~vnT*#`iojK-rUtv@F*%&-po@gT=!z{G4 zMX;`sWvLo+744;Vnwhg{!csS{&UG|#!Tyl`B`0&FT23nA>dmO-9=LR)aH^r65c6VD z#D0Dp=18w*OWz~Ra#X@Cp(3!j>QSCoqj@op$yNOsi{g)71$C`9#c@9B_|KnzU}YRl z#WsFq&;~e7|AK3nzS1xy@}E??Yy3`e?Jib^iChckqakQ#1E^b7m8SpQaDDidI_}?h zH8|T?gOwwG*l3@>Hgdh_iVYt_cRuYc1y4(!c-2QHURG%y!=+!(dps&=dVJN(TB6_! zMy=M!YQI=(OeY9(gP&Q@JlY*?2KvuiPhUoZ+&&TIrCV^*$!}&gKDeQ;#fYX+UU8ll zl+k`wA|k=tZkmBjVjhKYsP)rKRIa>M%e*ZCkyzrxNQkfm8$Il-n~;?`z+JHDeD*iN zK0lS{{oI+s?oGhk$-JauTD^+fc6E6<9oJ{jr$8Wp4_d^0=6C$rW1e89D7Cx9KfgRxbQ?} zO%j7?#z(UXgDN{zeFXJ;c4T^0S^>H~!8@6!0b1WL{zRFXQ0q?Bw4F{{pCnPWt)pD8 zib#nNt!Kc{zvX5_)j}q-x)Z!jUzhISnOV-udRz9_m^Ao%KPxFvWmk~Uthk5Z{#5JF zVvL0wi0Ax%NJ*!z5>GPvTh~+noBDyYP2y6GyHDD9Q7; zzLc9xiXvzcRt!KEEv!r;guAedmM`x5{)lYGnpLLf&{?s0zFmrQ3oTJZkI+-Zp~o4j zWh+tgSleaHlY=MQ!v#FtkM`*&x5w5h_y{)zEKLR$Z`c%Ick=D#?MO=wH1(pdOLXJ% z$F%v2PxUUVG}z#7{%pMRZEoagSt0IQW=`VueBGP6#ZNt)dj#LrGtLwiKk^H_)W=Q3 z=GV45ixgsb=G^v$v3Qi4`3f4nr~h!Fl|wdF)HcrP^SuJ?%C0vp!iSHvIJA|DzL+n% za-WKr+7)(MAw(9qsLdRcXdY&KMJW(yoT2g$s|@p3h8RBBOi2m#a|t`id2IH zuh#q%BdoAXj2Bt8eS1HX&|f3Uv{&!?vX-2qKJxsu$%+^E_<636_5FG4UJdmT$%C}# z(LNL3Zkh?KYf55{$LsUBE8eIj%xNh+VEEb1pC5jKH@H}=gtLj(7mgj$euS|%qw}!- zdk?d%`N&HnciF#&0x@)bd&D*nnaV&S?j`~A>az;k2UCQ64jIyu%Uybq!ZQ5`3T zvJBlfO`Ymc5zNjeBy)WuCz?KLMs;1fg*6tU9X~INS%{Yd2DidXMZ+u_Q?071ApH{O zceS>2Ipmnf%C67bMqS`W4GG@DSUzBr3%0AfsFtH_DKM*MHQHA4q(EKHB2)k0B+c8j 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 U3Mz+k@&pUK*gO7t(ySBmKYrqGEC2ui diff --git a/obsolete/fonts/xerox/Xerox.XC1-1-1.Times.Bold.Italic.Z b/obsolete/fonts/xerox/Xerox.XC1-1-1.Times.Bold.Italic.Z deleted file mode 100644 index 951d6d6888d8e12bfefa86ce40d4fa62ff6a80a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169909 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 diff --git a/obsolete/fonts/xerox/Xerox.XC1-1-1.Times.Bold.Z b/obsolete/fonts/xerox/Xerox.XC1-1-1.Times.Bold.Z deleted file mode 100644 index 1ed25117c276e368efa28cef74a876334f82fcea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152980 zcmWifhd$H4^rdB_x;9ZE zN~O9+Nb4#UqJI7UgY$Tta~|*a`}umlC8`SuLI6#Htc&E$n}GXRhqtK^Cmap>l}Y7k zh#cjWya;t+pi(6B$(YodqFz{K*HY?yjVgVKAo$3gy>Qvoec9y?r> zD?5n;yzFUet~SATV#PdZ`smj<<_)PP6Hc3{-|c07F=-FJHRPmuHBA2E%#4>9Q|g6g zwqcYUL+l*A8nm+oOk%JeQZ?R_Xp*Vv2=XR@^Kr+)A_*QXjeK53e;rL`$spg2AHC4qLlCR=Vurm>C*q;7nvq>x~rN{_ zw_IFn=CpDb0PxAO_g-xSL8g4z_iCrxJC#CysoCffS+h6$*SE{(I6q& z7lumf!ryZ;0FMrXfb_-KcA&5hp(>i+tR)9c@Ko55q1`mPrS*Tz>`lhOl~5;o-<0>DARZ^+oQ4aY##zrz8xsIjnJlK{27d#3FOk_p$K4j(YBRGaMAuGV&r zLjhtR(7U813jm=H2leBWNn&k(w~F;S-pPTFF-kC~zh#bzshF z%7S52-X6;U6Gv6Epjlt(cx}SeLI+u)7KWG{ zAaY~j4PI9=NAFKwY%ZUfeA+=PPy$4Fe^+-E>}0V2`BFURl%$$8PQ2hx!oLtYS?sLK zVSv49jWs=m(vlqWJ=qC=*Ii3EaczLWp3FDdSC8tLPN5b}#E8&MiRv5>Z-5D^-{ASd zr_=Y(o-9P@HV?2a%#N9W@RHfH5KrY|0qpiux73yDuNmo#d15o{WOpU%@xjq;&E*gm zGpAqTItCwlLST1D`9Hs{UH@$-DYmgLv+v^s)9CYw?yRdp3cxCDR`Z){pbDqy24^#k z@fOGIT*Q1wt&-!XEWQ9nNXpo4d3YGATJ?mZ`7gE?xk|vR)QUTWD}ca!w2RS-}cqFjH3*O%{Ul zB%$z!FsRImpr~$ zQY-Nw759+)KkERcY@}BKWONa4hf^5Tda`2(wvNG$PdS^S!2k?EWE=rulcX|_TuB7|d@Oc`H(zpLp`{CdF=b^KD%tij~D3sBOq~s5$y5RHu@HAqgTrd?Q zGe3YCAtp=oo%$109xd_bT(W*2l~AlRwELcw;nub!V6i>4z&olEnqj<=TMjqfUb1^- zVZ7NJJwO!Sgm2W1RWIQ#vR{SNdtWKNv3g9E5rFB0XuZ{5<-W*|X84HsoC3~njil3? z*~6l%5^g$Uryme=(!Kly#e42qpH^$DS~#Ir`|?T9NO;<`!K%hrkEaK|+@enytn15k zi|-zox4Ru${E91uOMBe(?N<;SlZ-wmJZk?8OA-~UqkV`%p7i$~Y;&(D1%)wwqz_whtcBz4q~ z^TN||0*T`nrIUajtN-vSx_kDT{f}19{SEi0z0bRz{J3%I{)ey8I!`30BC9?hggX%~ z?LC6jNzwbCT}LZ4Wf&aYulK*Wj0&%uOov3-08aKVF#bb<5?IR;#@p$}g#WgUJMtt< zV}WrV8=w#%7{AWm(*7nq0YD$D>jwn2{-P2TAPF>y_X&&?7QuvZ?G2~v{;k7@|5=o< zJ=ABcaOqOh`$ha7U=xSF;tiPni#LA}pQ(_3r!KthiYFR;Onka)z)HLny)E(a)WMU* z5=;q3_Zwp-xBdcxiE?40fP1w};#$U>)=s}t`A^saVhOgKo^H`!M^l29Q6+4+Wp=hiZIT;cp+ZTjD<}*C!lRfmaRt#319S<}+LMD=1kfx%i{Pg_3R@Mm-6rDpI#9moG=H5W5(B_h^|=b87f~t8*N(JbO@4PR znom8Da}&1si>*Xc2SuRqStJ2sA}85xgdM<9=eedei=(rUV}$0ktSB^i5v56VGDmf`clchn^8m>IHb(fqowpU8Fa9&Pc=cjC0^Q2wly}SD%*aOs z=CgYgpvQx{1TvB{@QVz5ctJ+euYVVjgp`CmFsF%dfCDcJMRy9tg^M^}8opSIk>>z4 z*J%G*RFRIH+v|jlZo=bkf}S>CCpttm5WDk zm;U_wK}`I+7gv5qr7+iGWY?&igzSk7zzfN9c4{L4TGk@TfCF!ki82^N?Lp-RltPGs z*hOJ!02L)vgCgMn0Mzyx-hhxA&5?FFBcT>b{7Xc~f1q|lWIjni*9Lkzz+l~BR}H_Y z4K|@51i-IE(N`nrT4D5+o0we|W)Dp(cCF~v4or{A6pE$q!gK8!tIXUCVFa2n6XMP= znaWJDn8)ui@q%OcZC3qmI{sWm+8#h@Wz|@rQ4$3yMo`X|@q}#@)_Oa4k6GJ|2F@J? zTUX)wX+bvbw3_tGYcKN8aA4ypY-2i!=NS+nva_I|FbFRaSp5*-bwV#O3!28pU`5TT z@5aFPLA^aiy+`9`Ep#&-giCgdv;^m`As(fWcX9=FXsH|ZcH8)6O5w13qwTUoplRA0 z`I2Y|@DM|ic3^hf3BG8&aYuAebY|c<>fIxMkxT4FghK~T1g%0m74 z#pQ2VQPG?r6`iB9?#eeFMIZpy#fFu&E4G6-6ogB^wB7)r$`4XOA{vtV@#>hOGA*peX{nGgW!tI-abNv0?ZUey~RATqe>7iS&L(Cq)EJ!Jt>t z^=0n;Yai^fgF#qdUS<7)gTGBz&2ILZ(om8&ne1p}0n7m)*37tdd<&cMI8)>88eEHLp3Bp}Md%Z|d9;aCIam0bot4z#QV z(K^@SbhZ&AuAtt@62mM`kSrNhII=%~?owbd9-u`<^f?Q)l8dtqn1_;!o0ue(w)9Kk z`qvRQ9$}&Qzm!{mfMc*w$s~{7->_r?t@jc*U;{CTpw|XsEAL|x6DKdlj~~F@;AJ1+ zq>Ue7|J#8V;{;(WuD=BIq9CfDSX)wxxTlXTNkz2AVoTmvBc|+cVnFpWcyZ7G)uG)J zt)DDe@~$gO;T3`Fhn{N>p{9qhF`t7=%i#>e2J&JJy6=^+RqF^9a>AlZ*rJ=YP^&L4 z-OIkjAXN-b<-h$HlPi)We$=CK?350gMj9hLZq8%d(-R?P3XukjGY~&0Y%UP0GNx{L zez1IJ(6|rN3UQ8d0?pu)LXr?fe{eMeo2cvtU-avD4pg9oSj24!NIXPLveefF>#~KXcS+1 zQ)`7x;Jn=}PMwl$vN&}xCT>u-Z;<3QZt`ic`x^diCTARW+%j%(ByF@UJvo%2F|8wu zB2~|Yrk(L9^IS+`L?;aUjvyAhjVb?$Ftap8$1n8}4C2PgIph5Xlca^qw6>w4-EmFN z!DAkSY1baKLYR8xM;E<%^R2ITC07uTn1{qnGz9DYG#;OWC{vz%Z!o#eB5AfgVLuh%#J$*^s@rgD!E^CIit%r>MkDjENjg?|UZ+P{Nx zdNc~+>UL{hNv~+wzO2JY)}bd0LCNtsptHLp^ZrEE{xdz%=Xr+DE4_xQKRvs9?)9bZ zBF@gN4TTc3oy&lQc^eF0vK=IG4OQ-8wjpR6B)#BjfjUwRb&?L3XTHBi>$0F#Ul}Nh zP2Qc!F%Z_56DpO|SvXfcc#2x*cj6tX4R@t&PACQBV;3~A&u7{(vtl$ptNIsWiQCXX zQyXJgiS}?T*_fVO;W@$aXyBcNM|c*@J7b8~{)uke>)fE{Kx66mV&h9kmfy1&VBWxcBX?j-vqExQ_x-#Ux=ocKUY+H(zG_a2~yPlC? z@*%~1=hT^=oZrn$%5gauQLs;8J4K~aTA?f}nnXv=id!*n_uK3z1o#@2w|SxPL5}h~ zq}<)rEPyX|y?@veiZQB4c-bE^Jc6HmgA7>J?tGiRzi?XYP450i#V3sU;rT5d!?KOH|>#J$n%k- zO$e!GEfM`!wrNk97q>&P%h~ur>OGFP&0SHoUFoppk9Z-%fbFf9E4i2ae&K1%m&;2p z{ViVwWW2gz<#8+Uxn2gMWB)aBufp`{125?RPyjYNW<;PoW-jz z(@=j$@kt?br?^FEqc*g~QT)9WFoD4Ui^H5@~X9ne@TCVaHzkS8sW3A4? z5lfI8E7=vc%Q9C$VziL=h6zn611kndu!HMz2&?)v2 zGVk58=SAnGz{zt0)pup@XbZ7#Z%dgDG{!gZM4XLd3&?N~3gEt@SriTd2DK81LQQ+H z2EKInDQ(H~mkS>DCI6nq55cbYqe7uMW+J7V77DH}hTON% z_44Q|Nr7(LGm6fOHK}Es;Zm(qDZC1Mwvx`i_I|}mwyDeQ)^(M;yfl>s6QXX4A|M!u zJ11P^=5%tpPCP)9`KAuDdiG1kc$lbU{?Li9V@zrX7S+s-KsUW0!yX(v2#>=k3p>iY zY~xp-S}3LMd=mA6IFKkJ3EvF=!4$~5b26YTi(AQBLr4~mgyiICZx_2?#g+z$pZ+h> zA7kZYZsyd+F1`Z!ps(9ISd>JqQ7(iDoJ;|4s}|JAgSj_4$ZL`nO3u1hgANe)Qeesi z+6W`@RwgIxAPyVZa9bX-8{?*txX9NA5gUxe&mzXljEnurVMP2a?8_CDU9b?zTvU?( z>XJb-dnids+T5;-PqW$~*px}C8CM@~gdZ2g^m+*)Lp8)iM%WdF+peEi7~_5-9nFh1 zcH~eujwPsHEG zd)hPu-FSI!aK6`Kn_DNCIAcDv*(@mMBd3;_Qm{8Qyr`8pFZrxH`)i@W7jt~_Ut5Rm z%$UL4y>5$G1&PPLTwB>#vc6A2-m)0NH+nX0UzNOJ{98xRcqZPgU{lqo%z`cL9au3b z&*PK)(!+nc8GDIfHk)mmyhj&t<)z&)-S*a$;Q>?0aJpczlvat^`}CXLgQ*~vKw@)0 zDoN!@gzYt9vV3f?WaA6-4)RnA1d)l`sWMqWZXE7h*mpop?ifQaJhct+JLPsd;Hp zXWY}LnCqc3*LlWG6Ikmk@~?oiZ`eiAqKFiw1R!hWuT2)Kd&G#IH&`B4cVNmpHs-3G zp}ERwF^~KK7Ypht;CT1EM$v$sBKgBQYA9vxd1D5WTY)-)6OBj|dGzg`CycQC(q`UU zMsecScHXT3crN|fNFBStP7J%4>aE0y;V3nU#-$J9S!*5(r52-U+cuK!ZW31e8IugO znxd~;Z$Sx4$g7sSk!JgBN6K-JO=w7gwY&r+@*~(UfwDq|(Y1w~neH(2KlBj0de7VY z0&oHe5P;~c8}ibqvSxZ4l5W z{TosPpGu+gyVwBpF@lcz#T1#6@VS=B^HfJcyz5L{56+mC8v&&_T09+3kdv2#q2qX} z^=v}aEYl>}r$7gDwT~mo@?=KaUou-znOag6xj9LNaQ>v4g!V>`w?9!io2{J8LvGvzD51?bR$6&{kdJJvb}p@)an7=KYf(Pe*tJ!4RQDT4XD=%~qgL8hD5}LbO+=JyIR#?ussl9+H_eq)o_t2hvbxivx!?3wqsr&m zxead}o4AT20}T`1#(h^KkDDt~udy_09zBb(KK8N2@cy-JjoQ=Iu60-)z!QLeApJ07 z=y%Z)dc#>ytac-+ttKT_?;kE-BKPv5&6UJgD4E&ky_+#P-L{J2&Y2k##w3)Gro3U* zDTagj#-L)0mj4XhIscWCL%CJF&eu*3dojwC!@IiKX_V%VQ0MA$XIc~P7#E;_SF6CS zsyo?Pc=oh3U1iydwL3R9*qgV9JE6pMkbN4FagIwIt@3ROJBY^JP#;GVxmJE9p0L>) zO0J3y?sKiDOVxH@cSjtS6A%1u#`B~55sk+yRFtg!jYUHx7!c4T--|1*_8D4gD+Gr?j)#bmwA@iSJWN47>QmbS7HSxL0EK{B9rrHTzs}P~pr*TZ zs`{VC+A0p;3ivtM`ch-!^ozDD=Wd1meEjI8j?J01w(9m<{;oCgFNxV_zP8nVz6Je! zig`t{2|%^imY%_pVH!#P-}K{Ba})W|B-m}T0#)o?J*5;_GwEt6ZOnZn)Of+FWZ3Gn zbkEqiqwOu{Jg?oIt$*cmJ;)c)?2rEMr-@byJH)kNPV)wPjN2W!7Y-*h{>8>f?Q_=* zg!jB*KcT;I$~Lf(D&RY1Rh8A%At%8UARgfTuB>5>XaV{?M4zyc%ij1~FGOOjiX`FZZ+g{XG9)!1eq7L`@dMj8aNeGKS*ckgA*je4rlt&6Bx)5v?jy(8`@}btRoV1~$HEeDg z3P?yw*d{O5#TJ&spz?!J%g+gFr0-r|m-$htLqn5qHa5B3Kb@Bnyz9pX;HBR^^@f>` z*^Ndbuy5zN!TRXe3^`3RWCMSCL9`f2o@$+)-w42cpJ3GZH;x<}li!T@Lmdril2s1! zz(ZH=u_FFIs})CE3AFfE1i>sW}o=FeduWtJQ_B*=mNn0_8~#0 zU~m-=HYsXUz#U=22KGu(tRw9<^__s7u_{_fCSUMp@pUWFO%PV*mB8@SZDpoKIJN7ILW1rcnlRDJFC;ZjX-`2Kb zlX!9D<*bm6Z-A}6&7|tv4w2^~$9#jUa(Xt^evUjA5;gV>>pLS0WZaP&@`t)raK5lK zQl`1os*F|%a1hD66Q*zu$Up;H73Z$&D??i40>9^xAM?0<;dJQgX0NNf#da1a5r#Xz zm80#JGU&MMV^H{Cr=k4loY1hd-(FJwkIkyZ(e6PBgrB*L=FOzX?V}>XGERP_!G%uW z%xU8)y7JGK!?49?ZlVJDQit9k!BKUBs2yPG!We|+Y9N{DovP0RPPqdLJB;Ly1doLP z*IAHJ1f!lsF)W2a=#g6sBCBQqGuB>l7s+4}K&cZDow#Ymk@-G!_KG }69hk>Op+ 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

    6=&{nbw( z-HF*0)Q#@8b~+&J667uRcXr^WNt8IIh^Rgh!JTL`W2bZl!@L znqV-<5L(p)ci?B>=U}L>3cxQ4Mf>oXv9o&NLrpJ@oyX{$0HVJXhStu+&l6Dg%fM$C zu2b>zR|TK7lV=F<^E2VI_QKHl>=EP0`Rtw($a(CrUmo=;Wci|?SBrdAsP{QRFX?Q6 zd5@r)=K(bAvlt?u4Qn-D_)f^VJQM!C0Iby}a4oFi7^r;#FsS~^1eK6GdtYB-TiSEM zTDA@^wTm-O_N&0F>d>_ymCLF5)3Ntrp!pZX3@uli^xjOpC}MczhV-I%Y_Z$-myb+DcehJ#C}}xKYGUj(+m=vp_!uumU{P{ulF}?$ZDO diff --git a/obsolete/greetfiles/LOCAL-INIT b/obsolete/greetfiles/LOCAL-INIT deleted file mode 100644 index 2f56dcaf..00000000 --- a/obsolete/greetfiles/LOCAL-INIT +++ /dev/null @@ -1,55 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) (FILECREATED "19-Oct-2020 15:19:00"  {DSK}kaplan>Local>medley3.5>lispcore>greetfiles>LOCAL-INIT.;45 10099 previous date%: "19-Oct-2020 15:15:23" {DSK}kaplan>Local>medley3.5>lispcore>greetfiles>LOCAL-INIT.;44) (PRETTYCOMPRINT LOCAL-INITCOMS) (RPAQQ LOCAL-INITCOMS [ (* ;; "Local (Mac) system greeting file") (FNS INTERLISPMODE) (VARS (COMPILEIGNOREDECL T) (MEDLEYDIR (UNIX-GETENV 'MEDLEYDIR)) (SITE 'LOCAL-MAC)) (P (BKSYSBUF " ") (* ;  "So tty window doesn't hang during greeting") (INTERLISPMODE) (DEFCOMMAND ("show" :QUIET) (&REST EVENTSPEC) (CL:PPRINT (VALUOF EVENTSPEC T) T))) (FNS LOCAL-INIT LoadPatches COLLECT-PATCH-FILES) (FUNCTIONS WITHOUT.PAGEHOLD) (VARS (LISPUSERSDIRECTORIES (LIST (CONCAT MEDLEYDIR "/lispcore/lispusers") (CONCAT MEDLEYDIR "/lispcore/library"))) (LISPSOURCEDIRECTORIES (LIST (CONCAT MEDLEYDIR "/lispcore/sources"))) (DIRECTORIES (APPEND (CONS (CONCAT MEDLEYDIR "/lispcore/patches")) LISPUSERSDIRECTORIES LISPSOURCEDIRECTORIES)) (LOCALPATCHDIRECTORY (CONCAT MEDLEYDIR "/lispcore/patches"))) [VARS (USERGREETFILES '(({DSK}/Users/ USER /Lisp/INIT.LCOM) ({DSK}/Users/ USER /Lisp/INIT.DFASL) ({DSK}/Users/ USER /Lisp/INIT] [VARS (*USEOLDFONTDIRECTORIES* NIL) [DISPLAYFONTDIRECTORIES (LIST (CONCAT MEDLEYDIR '/lispcore/fonts/displayfonts) (CONCAT MEDLEYDIR '/lispcore/fonts/altofonts] [INTERPRESSFONTDIRECTORIES (LIST (CONCAT MEDLEYDIR '/lispcore/fonts/ipfonts] (POSTSCRIPTFONTDIRECTORIES (LIST (CONCAT MEDLEYDIR '/lispcore/fonts/postscriptfonts] (DECLARE%: DONTEVAL@LOAD DOCOPY [P (KEYACTION 'LOCK '(LOCKTOGGLE . IGNORE] (P (LOCAL-INIT) (* ;  "(SETQ USERNAME (UNIX-GETENV %"USER%"))") ) (* ; "To get personal greeting to work, since GREET computes the USERNAME before USERNAMEPATCH is loaded.") ) (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA) (NLAML) (LAMA]) (* ;; "Local (Mac) system greeting file") (DEFINEQ (INTERLISPMODE - [LAMBDA (OLD?) (* N.H.Briggs " 2-Feb-88 14:26") - (PROCESSPROP 'EXEC 'PROFILE (XCL:COPY-PROFILE (if OLD? - then "OLD-INTERLISP-T" - else "INTERLISP"))) - (XCL:SET-DEFAULT-EXEC-TYPE (if OLD? - then "OLD-INTERLISP-T" - else "INTERLISP")) - (SETQ *DEFAULT-MAKEFILE-ENVIRONMENT* (LIST :READTABLE (if OLD? - then "OLD-INTERLISP-FILE" - else "INTERLISP") - :PACKAGE "INTERLISP"]) ) (RPAQQ COMPILEIGNOREDECL T) (RPAQ MEDLEYDIR (UNIX-GETENV 'MEDLEYDIR)) (RPAQQ SITE LOCAL-MAC) (BKSYSBUF " ") (* ;  "So tty window doesn't hang during greeting") (INTERLISPMODE) (DEFCOMMAND ("show" :QUIET) (&REST EVENTSPEC) (CL:PPRINT (VALUOF EVENTSPEC T) T)) (DEFINEQ (LOCAL-INIT [LAMBDA NIL (DECLARE (GLOBALVARS MAKESYSNAME LOCALPATCHDIRECTORY)) (* ; "Edited 14-Jun-2017 14:45 by kaplan") (* ; "Edited 14-Jun-2017 11:15 by kaplan") (* ;; "This is what gets called when LOCAL-INIT is loaded.") (BKSYSBUF " ") (* ;; "do the real work") (WITHOUT.PAGEHOLD (WFROMDS (GETSTREAM T 'OUTPUT)) (CL:WHEN LOCALPATCHDIRECTORY (LoadPatches LOCALPATCHDIRECTORY 'SYSLOAD MAKESYSDATE))]) (LoadPatches - [LAMBDA (DIRECTORY LDFLG AFTERDATE) (* ; "Edited 7-Feb-92 11:50 by bbb") - -(* ;;; "Load all compiled files from the directory") - - (DECLARE (GLOBALVARS *COMPILED-EXTENSIONS*)) - (LET [(files (SORT (for EXT in *COMPILED-EXTENSIONS* - bind (AFTERIDATE _ (if AFTERDATE - then (OR (IDATE AFTERDATE) - 0) - else 0)) join (COLLECT-PATCH-FILES - (DIRECTORYNAME DIRECTORY) - EXT AFTERIDATE)) - (FUNCTION (LAMBDA (X Y) - (LESSP (CDR X) - (CDR Y] (* ; - "files are sorted by increasing date") - (for file in files do (SELECTQ LDFLG - (HIDDEN (* ; - "Load the file, but don't put it on FILELST") - (LOAD? (CAR file) - T) - (SETQ FILELST (DREMOVE (FILENAMEFIELD - (CAR file) - 'NAME) - FILELST))) - (LOAD? (CAR file) - LDFLG))) - files]) (COLLECT-PATCH-FILES - [LAMBDA (DIRECTORY EXT AFTERIDATE) (* ; "Edited 7-Feb-92 11:49 by bbb") - - (* ;; "Generate list of files in DIRECTORY with extension EXT more recent than idate AFTERIDATE. Return list of pairs (file . date). Omits subdirectories.") - - (RESETLST - (LET ((FILING.ENUMERATION.DEPTH 1) - (NAKED-DIR (UNPACKFILENAME.STRING DIRECTORY 'DIRECTORY)) - FILE DATE) - (bind [GEN _ (\GENERATEFILES (CONCAT DIRECTORY "*." EXT ";") - '(ICREATIONDATE) - '(SORT RESETLST] while (SETQ FILE (\GENERATENEXTFILE GEN)) - when (AND (STRING-EQUAL (UNPACKFILENAME.STRING FILE 'DIRECTORY) - NAKED-DIR) - (> (SETQ DATE (\GENERATEFILEINFO GEN 'ICREATIONDATE)) - AFTERIDATE)) collect (CONS FILE DATE))))]) ) (DEFMACRO WITHOUT.PAGEHOLD (WINDOW &BODY FORMS) `(RESETLST (LET* ((TTYWINDOW ,WINDOW) (ORIGINAL.PAGEFULLFN (WINDOWPROP TTYWINDOW 'PAGEFULLFN)) (NEW.PAGEFULLFN (FUNCTION NILL))) (RESETSAVE (WINDOWPROP TTYWINDOW 'PAGEFULLFN NEW.PAGEFULLFN) (LIST [FUNCTION (LAMBDA (TTYWINDOW NEW.PAGEFULLFN ORIGINAL.PAGEFULLFN) (COND ((EQ (WINDOWPROP TTYWINDOW 'PAGEFULLFN) NEW.PAGEFULLFN) (WINDOWPROP TTYWINDOW 'PAGEFULLFN ORIGINAL.PAGEFULLFN] TTYWINDOW NEW.PAGEFULLFN ORIGINAL.PAGEFULLFN))) ,@FORMS)) (RPAQ LISPUSERSDIRECTORIES (LIST (CONCAT MEDLEYDIR "/lispcore/lispusers") (CONCAT MEDLEYDIR "/lispcore/library"))) (RPAQ LISPSOURCEDIRECTORIES (LIST (CONCAT MEDLEYDIR "/lispcore/sources"))) (RPAQ DIRECTORIES (APPEND (CONS (CONCAT MEDLEYDIR "/lispcore/patches")) LISPUSERSDIRECTORIES LISPSOURCEDIRECTORIES)) (RPAQ LOCALPATCHDIRECTORY (CONCAT MEDLEYDIR "/lispcore/patches")) (RPAQQ USERGREETFILES (({DSK}/Users/ USER /Lisp/INIT.LCOM) ({DSK}/Users/ USER /Lisp/INIT.DFASL) ({DSK}/Users/ USER /Lisp/INIT))) (RPAQQ *USEOLDFONTDIRECTORIES* NIL) (RPAQ DISPLAYFONTDIRECTORIES (LIST (CONCAT MEDLEYDIR '/lispcore/fonts/displayfonts) (CONCAT MEDLEYDIR '/lispcore/fonts/altofonts))) (RPAQ INTERPRESSFONTDIRECTORIES (LIST (CONCAT MEDLEYDIR '/lispcore/fonts/ipfonts))) (RPAQ POSTSCRIPTFONTDIRECTORIES (LIST (CONCAT MEDLEYDIR '/lispcore/fonts/postscriptfonts))) (DECLARE%: DONTEVAL@LOAD DOCOPY (KEYACTION 'LOCK '(LOCKTOGGLE . IGNORE)) (LOCAL-INIT) (* ;  "(SETQ USERNAME (UNIX-GETENV %"USER%"))") ) (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDTOVAR NLAMA ) (ADDTOVAR NLAML ) (ADDTOVAR LAMA ) ) (PUTPROPS LOCAL-INIT COPYRIGHT (NONE)) (DECLARE%: DONTCOPY (FILEMAP (NIL (2974 3799 (INTERLISPMODE 2984 . 3797)) (4258 7810 (LOCAL-INIT 4268 . 4879) (LoadPatches 4881 . 6829) (COLLECT-PATCH-FILES 6831 . 7808))))) STOP \ No newline at end of file diff --git a/obsolete/greetfiles/LOCAL-INIT.LCOM b/obsolete/greetfiles/LOCAL-INIT.LCOM deleted file mode 100644 index 154e2567a5f33467d011757223238d2739d40a1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6566 zcmcIo&u`nv6_)Kb-EONO-Yrld=mxJulckN7Eb2#WDTUXxII|fAp|Aru_FI%KJw3ps{FHoTO1@>H^-#khpMafQ@ZUaOnhcj>9y!Xxb zy&2UIHPaTEnrVrQY1bUOpCheQ(aM$FU4>NTu>0(^-Dw?B_kW-|F?(pEgfB z&69Pjd)Vx(KWiOzTIYpqX}#0#pB{F5t@S6pR%`GWgZt~2Q`IdvYX;eS#nKWil{5Nj z57Xr^-C8B5RSJ2Sf7EM@Cv5%ZwAa5~p_A_5xP9`3+Hj!Gvk<1C+F7SV{&~N9HXyAS zIiJmD6*_7T;Ia~L&uf)pzEUVCZ?W>+H?>j(I#({!X|MI`cK58$eql-Jsc@Gn`GP{< zM0ATw=`jlGjv=UGtff_xa^zUXr&PnkG7zLUtRPd@cYr0pNZ1cd&#~*m4wjcFwV#?x z%{@usAOCFpzAK-9$G_i|kKdC&)6LVpxrN6a-^9Pe)Qyx{%F%w+s`w(vj2sdBqM8W~ zTtS6Axt>!MzK=gHGk~!jp{%5O#cQ?o#XpAE(?8J-79`Am6N1mK(O5K_({<)nJ*Bv!w4X zmNRRaF0eRW6BeBdEmkd|+YL8UbG*9048#_~c258@VIu<2TmVMfQ2-d1i*u>%sA+L= zo?pJ?-|hP*V=(M+pQD5Z|K{Pf4?p}&#_;G5+>xJ0K`a-^>Nbzu=HT$S)u+3KL`?JL z>6n5*X|Luvb;Ab%$nSmth}IF#wKB;~=O6e6c$e0Sgh$KK4O(3#28yc()osJ{5KPBA zpwenAA5<)aotR2vXez9dZCV!Pi}BtiavA|3kVs>gL769xs2@mAWR5tWu_&W4M^a7p zw@p9bM2z2%0TmfYMV#O-{x}RbXM%s;lTm&BlWTK8V%^>$0S^!MXE*zSi$}hoRzN3Z_MlS|Ni<$3b9Jd z{}SD?uA~xh^tNdj!j_yG%So8eA}v>)x(f%53=$!1-*jw$nQ=YCqZkOT z;;ABbrp?La1j-G;$|1LcjZJD~uq=Gf$!62u$_l$t7oHwq@~k1;VEYQrT8mzH&{e15SU%&kO{hgb?y#Ct0c;C5xeDfEtUi`(me&^3GUZvD>o*p6!a#dUja6P$N zCg^j;H|s8H18^4>pAowa-6AM&!E1n3xX>rH-aK3)>Yw)qt!KnFzO2qAWhzUg)@+}~ zC6TN@(e^<1d{Pl}-ooaV?RdfvRf~`-wJr=x9LSxfHf(c01GPjoO6qO{1qF@2E`h{V z-$c{!OITIa^(udHVSgkSED9u@CdKd4U~o>)+b2ie=XBI<^-n$?&~XzUAD#82K}KX<6KbLZJ0tjeg}yONIXEz?7OHmNyVmd!@y$6R>P@9U*%E* z_EZKastDs;N3&1~v$cj@m7L?#o*8UI(z!0&M$w9oVQeL|WJTwX5NBeqsjRH(aKDWs ziPOi*=#0h>XYw>Bmp|2WqT{1pvv;oW8sv1o)9|X|^7+!ygfTNXuJsOEm`$d0VzBPI zLdF?R!1b$KISp$u*r4>xh0k}q^CL=HQl!oy^@^}IJuHA?aP=3FsM0p5R2uqtOe00Z6HmS zevtTlDK3U9iNNu=dot*+9AOci<~hH}sgtQmk9K5oV6!vm4oAsxytzO?zW-l3lujCM zpT^9(jvx3{&vbD#m1e*5IGMGRV!_bX=u9AyT_t!S1< zt;e{s8NYLRN9{g!P#(9Aq+(tf3J%MV-#Jbkn_+_&f>k$+@WHn9x(;*luf!?8%7BdY zXE<&`D8g@%9=uU4M#fk(!YE6zNUIYvft!)hxu3-q&udhQo=7+?zo0^+GFXC z&G{z%ev^C;O~rJF)OXVGnE_y7pK>t@n!Ha=+>}fS6UCwx>G+5jk}^J_%}LeG&d~3v zJ|p=KFUc>d1jdQqrK{9?9Nqt;g2yVfOQe57!G|urvy5M%;zQH#EagelGn71iwMw%P i&k*T!T%gk`F4H8TPE_zx>Trj<4QjI;TL7c-YUw`=ouQ%t diff --git a/obsolete/greetfiles/PARC-INIT b/obsolete/greetfiles/PARC-INIT deleted file mode 100644 index 34c1961e..00000000 --- a/obsolete/greetfiles/PARC-INIT +++ /dev/null @@ -1,433 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) (FILECREATED " 3-Mar-2002 22:47:25" {DSK}medley3.5>current>PARC-INIT.;21 42271 changes to%: (FNS ParcInit) previous date%: "14-Feb-2002 09:12:08" {DSK}medley3.5>current>PARC-INIT.;20) (* ; " Copyright (c) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2002 by Xerox Corporation. All rights reserved. ") (PRETTYCOMPRINT PARC-INITCOMS) (RPAQQ PARC-INITCOMS [ (* ;; "PARC/SSL, and IRL system greeting file") (DECLARE%: FIRST (P (* ; "Patch for SOLARIS at DDS??") (CL:INTERN "*YP-DOMAIN*" "YP"))) (FNS PARC-INIT FindSite FindInitHost ParcInit SetDirectories LoadPatches COLLECT-PATCH-FILES INTERLISPMODE FILE-SERVER-UP-P HostPrefix) (FNS SUNOSNAME) (FUNCTIONS WITHOUT.PAGEHOLD) (* ;;  "Initially set LOCALPATCHDIRECTORY to NIL to avoid loading patches if no servers are up.") (VARS (LOCALPATCHDIRECTORY NIL)) (VARS (*USEOLDFONTDIRECTORIES* NIL)) (INITVARS (UNIXMAIL.DOMAIN.NAME "parc.com")) (INITVARS (INIT-NOGREET-FLAG NIL)) (DECLARE%: DONTEVAL@LOAD DOCOPY (P (PARC-INIT))) (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA) (NLAML) (LAMA]) (* ;; "PARC/SSL, and IRL system greeting file") (DECLARE%: FIRST (* ; "Patch for SOLARIS at DDS??") (CL:INTERN "*YP-DOMAIN*" "YP") ) (DEFINEQ (PARC-INIT - [LAMBDA NIL - (DECLARE (GLOBALVARS \INIT.HostName MAKESYSNAME LOCALPATCHDIRECTORY MAKESYSDATE - AUTHENTICATION.NET.HINT CH.NET.HINT NSMAIL.NET.HINT)) - (* ; "Edited 11-Mar-99 17:46 by rmk:") - (* ; - "Edited 7-Mar-99 01:56 by kaplan") - (* ; "Edited 30-Jan-92 16:26 by bbb") - - (* ;; "This is what gets called when PARC-INIT is loaded.") - - (IF (EQ 'MAIKO (MACHINETYPE)) - THEN (SETQ INIT-NOGREET-FLAG (UNIX-GETENV "NOGREET"))) - (LOGIN NIL 'QUIET) - (BKSYSBUF " ") - (AND (GETD 'MEDLEYVERSION) - (SELECTQ (MEDLEYVERSION) - (|2.0| (* ; - "Make sure that the compile extensions are set right, in case they reverted to LCOM, DFASL.") - (SETQ COMPILE.EXT 'MCOM) - (SETQ FASL.EXT 'MFASL) - (SETQ *COMPILED-EXTENSIONS* '(MCOM MFASL))) - NIL)) - - (* ;; "do the real work") - - (WITHOUT.PAGEHOLD (WFROMDS (GETSTREAM T 'OUTPUT)) - (FindSite) - (SETQ YP:*YP-DOMAIN* (IF (EQ \INIT.Location 'ADOC) - THEN "ADOC" - ELSE "PARC")) - - (* ;; "1st floor = 132 204#") - - (* ;; "2nd floor = 89 131#") - - (* ;; "3rd floor = 98 142#") - - (* ;; "Bldg 34 = 106 152#") - - (* ;; "The clearinghouses in Building 35 are on net 132 (two of them), 89 and 98") - - (* ;; "In Building 34 on net 152 and net 146 in building 32") - -(* ;;; " hmmm this is strange.. I don't see net 146... I took 146 out") - - (SAVESET 'AUTHENTICATION.NET.HINT (SAVESET 'CH.NET.HINT - (SELECTQ \INIT.Location - (ENVOS-MTNVIEW (LIST 138)) - (IRL-HANOVER (LIST 132 89 98 152)) - (BLDG34-10MB (LIST 106 132 89 98)) - (BLDG35-1STFLOOR - (LIST 132 89 98 106)) - (BLDG35-2NDFLOOR - (LIST 89 132 98 106)) - (BLDG35-3RDFLOOR - (LIST 98 132 89 106)) - (ADOC (LIST 132 89 98 106)) - (LIST 132 89 98 106)) - T) - T) - - (* ;; " there are mail servers in Building 35 are on nets 89, 98 and 132") - - (SAVESET 'NSMAIL.NET.HINT (SELECTQ \INIT.Location - ((IRL-HANOVER BLDG34-10MB) - (LIST 89)) - AUTHENTICATION.NET.HINT) - T) - (FindInitHost) - (ParcInit) - (CL:WHEN INIT-NOGREET-FLAG - (SAVESET 'USERGREETFILES NIL T)) - (CL:WHEN LOCALPATCHDIRECTORY - (LoadPatches LOCALPATCHDIRECTORY 'SYSLOAD MAKESYSDATE))]) (FindSite - [LAMBDA NIL (* ; "Edited 14-Oct-97 18:38 by rmk:") - (* ; "Edited 8-Dec-89 19:46 by Burwell") - (DECLARE (GLOBALVARS \INIT.Location \MY.NSADDRESS \LOCALPUPNETHOST)) - -(* ;;; "Determine location, for use by other init we have to handle nets 6 and 64 specially since they cover 2 floors. We also have to use etherhostnumbers rather than names, since the name service doesn't appear to work reliably on Dorados (nhb ' 5-Dec-85 11:36:13') Still seeing wrong location occasionally, keep the etherhostnumber for later diagnosis. (nhb '13-Jan-86 20:23:47') problem seems to be that system returns hostnumber with 0 net number, we'll dismiss until it's greater than 255 (nhb '16-Jan-86 10:57:46') Added net 273## for Sunnyvale (nhb ' 9-Feb-88 15:54:17') Edited to reflect move of XAIS to Envos in Mtn. View, and IRL to the Garage (bbb 1-sep-88)") - -(* ;;; "") - -(* ;;; "27-Mar-89 bbb added home dialin lines") - -(* ;;; "13-Sep-89 bvm changed to look at XNS net instead of Pup") - - (SAVESET '\INIT.Location - (SELECTQ (CL:WHEN (STREQUAL "1" (UNIX-GETENV "LDELISPXNS")) - (FOR Delay IN '(20 55 148 403 1096) - DO (IF (AND \MY.NSADDRESS (> (SETQ $$VAL (\GETBASEFIXP - \MY.NSADDRESS 0)) - 0)) - THEN (* ; "Find my XNS net number") - (RETURN $$VAL)) - (DISMISS Delay) FINALLY (PRINTOUT T - "* Warning: Init could not determine your net number" - T - " assuming location is Bldg35-2nd floor" - T) - (RETURN 6))) - (98 'BLDG35-3RDFLOOR) - (89 'BLDG35-2NDFLOOR) - (3 'PARC-NET3) - (17778 'ADOC) - ((52 6 132) - 'BLDG35-1STFLOOR) - (106 'BLDG34-10MB) - ((7 138) - 'ENVOS-MTNVIEW) - ((146 21) - 'IRL-HANOVER) - ((159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175) - 'HOME-DIALIN) - (* ; "Home DIAL-IN 237Q through 257Q") - (OR (MKATOM (UNIX-GETENV "LDESITE")) - 'BLDG35-2NDFLOOR]) (FindInitHost - [LAMBDA NIL - (DECLARE (GLOBALVARS \INIT.HostName \INIT.AlternateHostNames \INIT.Location)) - (* ; "Edited 27-Oct-93 14:56 by rmk:") - -(* ;;; "Lyric PARC people who have NS id's will have all their directories set to IE:PARC:Xerox") - -(* ;;; "") - -(* ;;; "July 28, 1989") - -(* ;;; "Medley is on Phylum, ie and Erinyes. PARC people with NS ids will randomly get assigned to either Pooh or ie:parc:xerox. IRL people will point to ie:parc:xerox") - -(* ;;; "We need to set the default domain and organization before we do a clearinghouse lookup") - -(* ;;; "") - -(* ;;; "October 6, 1989") - -(* ;;; -" PARC people will have their directories set only to pooh (not randomly on ie:parc:xerox or pooh)") - -(* ;;; "") - -(* ;;; "October 3, 1990") - -(* ;;; "Take out all references to Phylum") - -(* ;;; "") - -(* ;;; "January 30, 1992") - -(* ;;; " Replace references to {pooh/n}lisp> with {dsk}/import/lisp") - -(* ;;; "") - - (SAVESET 'CH.DEFAULT.DOMAIN "PARC" T) - (SAVESET 'CH.DEFAULT.ORGANIZATION "Xerox" T) - (SAVESET 'YP:*YP-DOMAIN* (IF (EQ \INIT.Location 'ADOC) - THEN "ADOC" - ELSE "PARC") - T) - (LET (HasNSID? MsgWindowMenu MsgWindow) - (SELECTQ (MKATOM (U-CASE (MKSTRING MAKESYSNAME))) - (MEDLEY2.0 [PROGN (SELECTQ \INIT.Location - ((IRL-HANOVER) - (* ;; "IRL and home dial-in can't talk tcp/ip ") - - (SAVESET '\INIT.HostName "IE:PARC:XEROX") - (SAVESET '\INIT.AlternateHostNames NIL)) - (PROGN (SAVESET '\INIT.HostName "{dsk}medley2.0>") - (SAVESET '\INIT.AlternateHostNames '("IE:PARC:Xerox"]) - (MEDLEY [PROGN (SELECTQ \INIT.Location - ((IRL-HANOVER) - (* ;; "IRL and home dial-in can't talk tcp/ip ") - - (SAVESET '\INIT.HostName "IE:PARC:XEROX") - (SAVESET '\INIT.AlternateHostNames '("Erinyes"))) - (PROGN (SAVESET '\INIT.HostName "{dsk}") - (SAVESET '\INIT.AlternateHostNames '("IE:PARC:Xerox"]) - (PROGN (SAVESET '\INIT.HostName "{dsk}") - (SAVESET '\INIT.AlternateHostNames '("IE:PARC:Xerox"]) (ParcInit [LAMBDA NIL (* ;  "Edited 4-Jan-2002 17:45 by kaplan") (* ;  "Edited 4-Jan-2002 17:45 by kaplan") (* ;  "Edited 3-Mar-2002 22:47 by rmk:") (* "N.H.Briggs" " 2-Nov-87 12:39") (* bbb "29-Oct-87 17:17") (DECLARE (GLOBALVARS \INIT.Location \INIT.HostName \INIT.AlternateHostNames MAKESYSNAME POSTGREETFORMS DEFAULTREGISTRY CH.DEFAULT.ORGANIZATION CH.DEFAULT.DOMAIN YP:*YP-DOMAIN* AUTHENTICATION.NET.HINT CH.NET.HINT PRINTSERVICE DEFAULTPRINTINGHOST DEFAULTFAXHOST FAXADDRESSES NETWORKLOGINFO LISPSUPPORT LAFITESUPPORT TEDITSUPPORT NETWORKOSTYPES LAFITESPECIALFORMS LAFITEFORMSMENU LAFITEFORMDIRECTORIES LAFITEMODEDEFAULT PHONELISTFILES BackgroundMenu BackgroundMenuCommands USERGREETFILES COPYRIGHTFLG COPYRIGHTOWNERS DEFAULTCOPYRIGHTOWNER COPYRIGHTRESERVED SYSOUTFETCHDATE \CURRENTDISPLAYLINE IMAGESTREAMTYPES RECLAIMWAIT LOCALPATCHDIRECTORY CHAT.HOSTINFO EMPRESS#SIDES \INIT.MachineType NFS:*USE-VOLUME-MAP*) (SPECVARS LDFLG)) (PROG (LispusersUpdateHostName FontHostName ReleaseName) (IF (NOT (BOUNDP 'SYSOUTFETCHDATE)) THEN (SETQ SYSOUTFETCHDATE (DATE))) [SETQ ReleaseName (MKATOM (U-CASE (MKSTRING MAKESYSNAME] (* ;;; "Prevent a pagehold from happening") (SETQ \CURRENTDISPLAYLINE -10000) (* ;;; "Do not put any patch-type code before this point. This code will get executed once before the init file realizes that it needs to be updated. Once it updates the init file it will execute the code again up to this point.") (SETQ \INIT.MachineType (MACHINETYPE)) (ADDTOVAR GREETDATES (" 8-MAR" . "It's International Women's Day") ("18-MAY" . "It's Victoria Day") (" 5-NOV" . " it's Guy Fawkes day") (" 1-JUL" . "It's Canada Day") ("12-OCT" . "It's Canada's Thanksgiving Day")) (SAVESET 'USERGREETFILES (LET [[NFSFiles '(({dsk} USER >LISP>INIT. COM) ({dsk} USER >LISP>INIT) ({dsk} USER >INIT. COM) ({dsk} USER >INIT.LISP] (LocalFiles '(({DSK}INIT- USER %. COM) ({DSK}INIT- USER] (APPEND NFSFiles LocalFiles)) T) (* ;; "things to do with the copyright notices in files") (SAVESET 'COPYRIGHTFLG 'DEFAULT T) (SAVESET 'COPYRIGHTOWNERS '((PARC "Palo Alto Research Center Incorporated") (XEROX "Xerox Corporation") (VENUE "Venue Corporation")) T) (COND ((FMEMB \INIT.Location '(ENVOS-MTNVIEW)) (SAVESET 'DEFAULTCOPYRIGHTOWNER 'VENUE T)) (T (SAVESET 'DEFAULTCOPYRIGHTOWNER 'PARC T))) (SAVESET 'COPYRIGHTRESERVED T T) (* ;; "the interpress printers at PARC are all running print services 9.0 or higher now.") (SAVESET 'PRINTSERVICE 10.0 T) (* ;; "Setup docuprint printers at PARC") (SELECTQ \INIT.Location ((BLDG35-3RDFLOOR BLDG35-1STFLOOR BLDG35-2NDFLOOR PARC-NET3) (SETQ EMPRESS#SIDES 2) (FOR P IN '(|Waterman:PARC:xerox| |Mont Blanc:PARC:xerox| |Perfector:PARC:Xerox| |Ansel:PARC:xerox| |Kanji:PARC:xerox| |Squeeze-Box:PARC:xerox| |Papaya:Parc:Xerox|) DO (PUT P 'PRINTERTYPE 'DOCUPRINT))) NIL) (* ;; "Select an appropriate set of printers based on the location.") (SAVESET 'DEFAULTPRINTINGHOST (COPY (SELECTQ \INIT.Location (BLDG35-1STFLOOR '(|Mont Blanc:PARC:xerox| londondailymail |Marker:PARC:Xerox|)) (BLDG35-2NDFLOOR (APPEND '(comicnews) [FOR X IN '(|Waterman:PARC:xerox| |Mont Blanc:PARC:xerox| |Perfector:PARC:Xerox| |Ansel:PARC:xerox| |Kanji:PARC:xerox| |Squeeze-Box:PARC:xerox| |Papaya:Parc:Xerox|) JOIN `((DOCUPRINT ,X INTERPRESS) (DOCUPRINT ,X POSTSCRIPT] (FOR X IN '(|Marker:PARC:Xerox|) COLLECT X) '(londondailymail))) (BLDG35-3RDFLOOR '(|Papermate:Parc:Xerox|)) (BLDG34-10MB '(|Cross:parc:Xerox| |Kanji:PARC:Xerox|)) (PARC-NET3 '(|Scripto:PARC:Xerox| |Perfector:PARC:Xerox|)) NIL)) T) (* ;; "set things related to the Interpress to FAX service") (SAVESET 'DEFAULTFAXHOST "VPFax:Parc:XEROX" T) (ADDTOVAR FAXADDRESSES (NLTT/FAX 94154944374) (POD26/FAX 94154944380) (EUROPARC/FAX 901144223341510) (MICROLYTICS/FAX 97162483868)) (SETQ LispusersUpdateHostName NIL) (SETQ FontHostName (SELECTQ ReleaseName ((MEDLEY2.0 MEDLEY2.1) "{dsk}") \INIT.HostName)) (IF \INIT.HostName THEN (SetDirectories \INIT.HostName LispusersUpdateHostName NIL FontHostName NIL T)) (* ;; "fix up the Unix login method to deal with brain damaged ParcVax") [AND (LISTP (GETTOPVAL 'NETWORKLOGINFO)) (/RPLACD (ASSOC 'LOGIN (CDR (ASSOC 'UNIX NETWORKLOGINFO))) '(WAIT LF WAIT USERNAME LF WAIT PASSWORD LF)) (/RPLACD (ASSOC 'LOGIN (CDR (ASSOC 'NS NETWORKLOGINFO))) '("Logon" CR USERNAME CR PASSWORD CR] (* ;;; "use to have (ADDTOVAR LAFITESUPPORT ...) but that produced the wrong result for already initialized variables") (SELECTQ ReleaseName ((MEDLEY MEDLEY2.0 MEDLEY2.1) [SETQ LISPSUPPORT '((NS "AISupport:MV:Envos, Burwell:PARC:Xerox, vanMelle:PARC:Xerox" ] [SETQ LAFITESUPPORT '((NS "LafiteSupport:PARC:Xerox"] (SETQ TEDITSUPPORT LISPSUPPORT)) NIL) (* ;; "make sure we know about some of the local machine types") (ADDTOVAR NETWORKLOGINFO (INFOVAX (LOGIN "User" CR))) (ADDTOVAR NETWORKOSTYPES (XSVAX . VMS) (MADVAX . VMS) (INFOVAX%: . INFOVAX) (|INFOVAX:PARC:XEROX| . INFOVAX) (FLO . UNIX) (POOH . UNIX) (PIGLET . UNIX) (PALAIN . UNIX) (KANGA . UNIX) (ROO . UNIX) (ROO%: . UNIX) (|ROO:PARC:XEROX| . UNIX) (FREDDYK . UNIX)) (* ;; "Set up the hint to Lafite for finding form files for the PARC archiving") (SELECTQ \INIT.Location ((BLDG35-1STFLOOR BLDG35-2NDFLOOR BLDG35-3RDFLOOR) (SETQ LAFITEFORMSMENU NIL)) ((IRL-HANOVER) (SETQ LAFITEFORMSMENU NIL)) NIL) (SETQ LAFITEMODEDEFAULT 'NS) (* ;; "pointer to the PARC phone list file") (ADDTOVAR PHONELISTFILES {dsk}doc>parcphonelist.txt {dsk}doc>ssutelephonelist.txt) (* ;; "Set the default IDLE options for PARC, a friendly place") (IDLE.SET.OPTION 'FORGET NIL) (/PUTPROP 'NSMAINTAIN 'FILEDEF 'NSMAINTAIN) (IF [AND (NOT (ASSOC 'Set% Directories BackgroundMenuCommands)) (MEMB ReleaseName '(MEDLEY MEDLEY2.0 MEDLEY2.1] THEN (/NCONC1 BackgroundMenuCommands (LIST 'Set% Directories '(SetDirectories) "Set search path and font directories to default" (SELECTQ ReleaseName ((MEDLEY MEDLEY2.0 MEDLEY2.1) '(SUBITEMS (NFS '(SetDirectories "{dsk}" NIL NIL NIL NIL T) "Set search patch and font directories to Import" ))) NIL))) (SETQ BackgroundMenu NIL)) [COND ((FMEMB \INIT.Location '(ENVOS-MTNVIEW)) (IF (MEMB ReleaseName '(MEDLEY MEDLEY2.0 MEDLEY2.1)) THEN (SAVESET 'XCL:*SHORT-SITE-NAME* 'Venue T) (SAVESET 'XCL:*LONG-SITE-NAME* "Venue Corporation, San Carlos" T))) (T (IF (MEMB ReleaseName '(MEDLEY MEDLEY2.0 MEDLEY2.1)) THEN (SAVESET 'XCL:*SHORT-SITE-NAME* "PARC" T) (SAVESET 'XCL:*LONG-SITE-NAME* "Xerox Palo Alto Research Center" T] (* ;;; "We are decommissioning the volume map so tell Lisp not to use it") (SAVESET 'NFS:*USE-VOLUME-MAP* NIL) (FOR VAR IN '(AUTHENTICATION.NET.HINT BackgroundMenu BackgroundMenuCommands CH.DEFAULT.DOMAIN YP:*YP-DOMAIN* CH.DEFAULT.ORGANIZATION CH.NET.HINT NSMAIL.NET.HINT COPYRIGHTFLG COPYRIGHTOWNERS COPYRIGHTRESERVED DEFAULTCOPYRIGHTOWNER DEFAULTFAXHOST DEFAULTPRINTINGHOST DEFAULTREGISTRY FAXADDRESSES GREETDATES LAFITEFORMDIRECTORIES LAFITEFORMSMENU LAFITESPECIALFORMS LAFITESUPPORT LISPSUPPORT NETWORKLOGINFO NETWORKOSTYPES PHONELISTFILES PRINTSERVICE TEDITSUPPORT USERGREETFILES LOCALPATCHDIRECTORY CHAT.HOSTINFO EMPRESS#SIDES NFS:*USE-VOLUME-MAP*) DO (UNMARKASCHANGED VAR 'VARS]) (SetDirectories - [LAMBDA (ReleaseHostName LispusersUpdatesHostName LibraryUpdatesHostName FontHostName ReleaseName - Reset) (* ; "Edited 11-Nov-98 21:57 by rmk:") - (* ; - "Edited 20-Feb-98 12:00 by kaplan") - (* ; - "Edited 12-Feb-93 08:35 by kaplan") - (* "N.H.Briggs" " 2-Nov-87 12:14") - (* bbb "29-Oct-87 17:15") - (* edited%: "11-Jun-87 12:32") - (DECLARE (GLOBALVARS \INIT.Location \INIT.CurrentReleaseName \INIT.PendingReleaseName - DIRECTORIES LISPUSERSDIRECTORIES MAKESYSNAME IRM.HOST&DIR - LOOPSUSERSDIRECTORIES FONTDIRECTORIES DISPLAYFONTDIRECTORIES - DISPLAYFONTEXTENSIONS INTERPRESSFONTDIRECTORIES WHEREIS.HASH - XCL::*WHERE-IS-CASH-FILES* LOCALPATCHDIRECTORY)) - (PROG (NewLispUsersDirectories NewDirectories (Medley1.1VersionNumber 39424)) - - (* ;; "determine the release name, we take the hint from the system when it's present.") - - (SETQ ReleaseName (L-CASE (OR ReleaseName MAKESYSNAME) - T)) - (SETQ ReleaseHostName (L-CASE ReleaseHostName)) - (SETQ LispusersUpdatesHostName (L-CASE (OR LispusersUpdatesHostName ReleaseHostName))) - (SETQ LibraryUpdatesHostName (L-CASE (OR LibraryUpdatesHostName ReleaseHostName))) - (SETQ FontHostName (L-CASE (OR FontHostName ReleaseHostName))) - - (* ;; "set up the pointer to the Interlisp reference manual for use by HELPSYS and DINFO. This depends on the release name.") - - (SAVESET 'IRM.HOST&DIR (SELECTQ ReleaseName - ((Medley Medley2.0 Medley2.1 Medley3.5) - (CONCAT (HostPrefix ReleaseHostName) - "Lisp>Lyric>LispUsers>IRM>")) - NIL) - T) - - (* ;; - "setup pointer to whereis hash files, these differ by version and no pattern has emerged yet") - - (SAVESET 'WHEREIS.HASH (SELECTQ ReleaseName - (Medley NIL) - (Medley2.0 NIL) - (Medley2.1 NIL) - (Medley3.5 NIL) - NIL) - T) - - (* ;; "This is really messy, the general intent is as follows: if the user is running the current release he wants release>library>new, release>library, lispusers, release>lispusers. If running a LispCore or forked LispCore release, put those directories first, then take the pending release If running neither of the above, (could be older or newer than current) try release>library>new, release>library>, release>lispusers, lispusers. This all relies on the theory that has only the new packages for the current release. Currently, sources are only maintained on Eris, so the release>sources is always pointed there. This may change sometime. ") - - (* ;; "") - - (* ;; "8603 Things seemed to have settled down, we have the releasename> directories created and the procedures worked out. It is now not necessary to know if the user is running the %"current%" release in order to get the directories correct.") - - (* ;; "added Lispcore>Internal>Library per request from Masinter") - - (* ;; "") - - [SELECTQ ReleaseName - (Medley2.0 (PUSH NewLispUsersDirectories "{dsk}/project/medley2.0/library/" - "{dsk}/project/medley2.0/lispusers/")) - (Medley2.1 (PUSH NewLispUsersDirectories "{dsk}/project/medley2.1/library/" - "{dsk}/project/medley2.1/lispusers/" - "{dsk}/project/medley2.1/sources/")) - (Medley3.5 (PUSH NewLispUsersDirectories "{dsk}/project/medley3.5/library/" - "{dsk}/project/medley3.5/lispusers/" - "{dsk}/project/medley3.5/sources/")) - (PROGN (PUSH NewLispUsersDirectories (CONCAT (HostPrefix ReleaseHostName) - "Lisp>" ReleaseName ">Library>") - (CONCAT (HostPrefix ReleaseHostName) - "Lisp>" ReleaseName ">Internal>Library>") - (CONCAT (HostPrefix LispusersUpdatesHostName) - "LispUsers>" ReleaseName ">") - (CONCAT (HostPrefix ReleaseHostName) - "Lisp>" ReleaseName ">LispUsers>")) - - (* ;; "Changed to from Library>New>") - - (PUSH NewLispUsersDirectories (CONCAT (HostPrefix LibraryUpdatesHostName - ) - "LispLibrary>" ReleaseName ">"] - [SETQ NewDirectories (APPEND NewDirectories (LDIFFERENCE NewLispUsersDirectories - NewDirectories) - (LIST (CONCAT (HostPrefix ReleaseHostName) - "Lisp>" ReleaseName ">Sources>"] - (SAVESET 'LISPUSERSDIRECTORIES (APPEND NewLispUsersDirectories (AND (NOT Reset) - (LDIFFERENCE - LISPUSERSDIRECTORIES - - NewLispUsersDirectories - ))) - T) - (SAVESET 'LOCALPATCHDIRECTORY (CONCAT (SELECTQ ReleaseName - (Medley (CONCAT (HostPrefix ReleaseHostName) - "Lisp>" ReleaseName - (IF (EQ (LISPVERSION) - Medley1.1VersionNumber - ) - THEN "" - ELSE "1.15"))) - (Medley2.0 "{dsk}medley2.0") - (Medley2.1 "{dsk}medley2.1") - (Medley3.5 "{dsk}medley3.5") - (HELP)) - ">Patches>") - T) - (SAVESET 'DIRECTORIES (APPEND NewDirectories (AND (NOT Reset) - (LDIFFERENCE DIRECTORIES NewDirectories)) - ) - T) - (IF (MEMB ReleaseName '(Medley Medley2.0 Medley2.1 Medley3.5)) - THEN (SAVESET 'XCL::*WHERE-IS-CASH-FILES* (MKLIST (FINDFILE 'SYSTEM.HASH T - DIRECTORIES)) - T)) - (SAVESET 'LOOPSUSERSDIRECTORIES (LIST (PACKFILENAME 'HOST "{NB:PARC:Xerox}" 'BODY - (CONCAT "" ReleaseName ">Users>"))) - T) - - (* ;; "") - - (* ;; "the font directories depend on the release. We also check here whether the user is in bldg 35, in which case we add the Alto fonts. The press font widths must be on a random access device, and are sometimes kept on the local disk. If they aren't randaccessp then we put them on {dsk} if there's room, {core} if not.") - - (* ;; "") - - (SELECTQ ReleaseName - ((Medley Medley2.0 Medley2.1 Medley3.5) - (PROGN (SAVESET 'DISPLAYFONTDIRECTORIES (LIST (CONCAT (HostPrefix FontHostName - ) - "Lisp>DisplayFonts>") - (CONCAT (HostPrefix FontHostName - ) - "AltoFonts>")) - T) - (SAVESET 'DISPLAYFONTEXTENSIONS '(DISPLAYFONT STRIKE) - T) - (SAVESET 'INTERPRESSFONTDIRECTORIES (LIST (CONCAT (HostPrefix - FontHostName) - "Lisp>IPFonts>")) - T))) - (PROGN (SAVESET 'DISPLAYFONTDIRECTORIES (UNION (LIST (CONCAT (HostPrefix - FontHostName) - "Lisp>Fonts>")) - (LIST (CONCAT (HostPrefix - FontHostName) - "AltoFonts>") - (CONCAT (HostPrefix - FontHostName) - "AltoFonts>Original>"))) - T) - (SAVESET 'DISPLAYFONTEXTENSIONS '(DISPLAYFONT STRIKE) - T) - (SAVESET 'INTERPRESSFONTDIRECTORIES (LIST (CONCAT (HostPrefix FontHostName) - "Lisp>Fonts>")) - T))) - (FOR var IN '(DIRECTORIES LISPUSERSDIRECTORIES IRM.HOST&DIR LOOPSUSERSDIRECTORIES - FONTDIRECTORIES DISPLAYFONTDIRECTORIES DISPLAYFONTEXTENSIONS - INTERPRESSFONTDIRECTORIES WHEREIS.HASH LOCALPATCHDIRECTORY - XCL::*WHERE-IS-CASH-FILES*) DO (UNMARKASCHANGED - var - 'VARS]) (LoadPatches - [LAMBDA (DIRECTORY LDFLG AFTERDATE) (* ; "Edited 7-Feb-92 11:50 by bbb") - -(* ;;; "Load all compiled files from the directory") - - (DECLARE (GLOBALVARS *COMPILED-EXTENSIONS*)) - (LET [(files (SORT (for EXT in *COMPILED-EXTENSIONS* - bind (AFTERIDATE _ (if AFTERDATE - then (OR (IDATE AFTERDATE) - 0) - else 0)) join (COLLECT-PATCH-FILES - (DIRECTORYNAME DIRECTORY) - EXT AFTERIDATE)) - (FUNCTION (LAMBDA (X Y) - (LESSP (CDR X) - (CDR Y] (* ; - "files are sorted by increasing date") - (for file in files do (SELECTQ LDFLG - (HIDDEN (* ; - "Load the file, but don't put it on FILELST") - (LOAD? (CAR file) - T) - (SETQ FILELST (DREMOVE (FILENAMEFIELD - (CAR file) - 'NAME) - FILELST))) - (LOAD? (CAR file) - LDFLG))) - files]) (COLLECT-PATCH-FILES - [LAMBDA (DIRECTORY EXT AFTERIDATE) (* ; "Edited 7-Feb-92 11:49 by bbb") - - (* ;; "Generate list of files in DIRECTORY with extension EXT more recent than idate AFTERIDATE. Return list of pairs (file . date). Omits subdirectories.") - - (RESETLST - (LET ((FILING.ENUMERATION.DEPTH 1) - (NAKED-DIR (UNPACKFILENAME.STRING DIRECTORY 'DIRECTORY)) - FILE DATE) - (bind [GEN _ (\GENERATEFILES (CONCAT DIRECTORY "*." EXT ";") - '(ICREATIONDATE) - '(SORT RESETLST] while (SETQ FILE (\GENERATENEXTFILE GEN)) - when (AND (STRING-EQUAL (UNPACKFILENAME.STRING FILE 'DIRECTORY) - NAKED-DIR) - (> (SETQ DATE (\GENERATEFILEINFO GEN 'ICREATIONDATE)) - AFTERIDATE)) collect (CONS FILE DATE))))]) (INTERLISPMODE - [LAMBDA (OLD?) (* N.H.Briggs " 2-Feb-88 14:26") - (PROCESSPROP 'EXEC 'PROFILE (XCL:COPY-PROFILE (if OLD? - then "OLD-INTERLISP-T" - else "INTERLISP"))) - (XCL:SET-DEFAULT-EXEC-TYPE (if OLD? - then "OLD-INTERLISP-T" - else "INTERLISP")) - (SETQ *DEFAULT-MAKEFILE-ENVIRONMENT* (LIST :READTABLE (if OLD? - then "OLD-INTERLISP-FILE" - else "INTERLISP") - :PACKAGE "INTERLISP"]) (FILE-SERVER-UP-P - [LAMBDA (FILE-SERVER-NAME) (* ; "Edited 12-Oct-89 22:24 by Burwell") - (PROG ([SERVER-TYPE (COND - ((STRPOS ":" (L-CASE FILE-SERVER-NAME)) - 'XNS) - ((STRPOS "/n" (L-CASE FILE-SERVER-NAME)) - 'NFS) - (T 'IFS] - (PROCESS-RESULT (CONS)) - (PROCESS-HANDLE)) - (if (NULL FILE-SERVER-NAME) - then (RETURN NIL)) - (SETQ PROCESS-HANDLE (ADD.PROCESS `(COND - ((DIRECTORYNAMEP ,(SELECTQ SERVER-TYPE - (XNS "DESKTOPS") - (IFS "SYSTEM") - (NFS (CONCAT "{" - FILE-SERVER-NAME - "}")) - NIL) - ,FILE-SERVER-NAME) - (RPLACA ,(KWOTE PROCESS-RESULT) - T))) - 'NAME "file-server-up-p")) - (DISMISS 500) - (forDuration 60 timerUnits 'SECONDS until (CAR PROCESS-RESULT) - do (DISMISS 500) finally (DEL.PROCESS PROCESS-HANDLE)) - (RETURN (CAR PROCESS-RESULT]) (HostPrefix - [LAMBDA (HostName) (* ; "Edited 30-Jan-92 16:25 by bbb") - (if (STRPOS "/n" (L-CASE HostName)) - then (CONCAT "{" HostName "}<" (SUBSTRING HostName 1 (DIFFERENCE (NCHARS HostName) - 2)) - ">") - elseif (OR (STRPOS "nfs}" (L-CASE HostName)) - (STRPOS "dsk}" (L-CASE HostName))) - then (CONCAT HostName) - else (CONCAT "{" HostName "}<"]) ) (DEFINEQ (SUNOSNAME - [LAMBDA NIL (* ; "Edited 7-Dec-94 13:44 by rmk:") - - (* ;; "Returns name of curren SunOS version") - - (SELCHARQ (CHCON1 (UNIX-GETENV "OSVERSION")) - (4 'SUNOS) - (5 'SOLARIS) - (HELP "UNKNOWN SUN OSVERSION" (UNIX-GETENV "OSVERFSION"]) ) (DEFMACRO WITHOUT.PAGEHOLD (WINDOW &BODY FORMS) `(RESETLST (LET* ((TTYWINDOW ,WINDOW) (ORIGINAL.PAGEFULLFN (WINDOWPROP TTYWINDOW 'PAGEFULLFN)) (NEW.PAGEFULLFN (FUNCTION NILL))) (RESETSAVE (WINDOWPROP TTYWINDOW 'PAGEFULLFN NEW.PAGEFULLFN) (LIST [FUNCTION (LAMBDA (TTYWINDOW NEW.PAGEFULLFN ORIGINAL.PAGEFULLFN) (COND ((EQ (WINDOWPROP TTYWINDOW 'PAGEFULLFN) NEW.PAGEFULLFN) (WINDOWPROP TTYWINDOW 'PAGEFULLFN ORIGINAL.PAGEFULLFN] TTYWINDOW NEW.PAGEFULLFN ORIGINAL.PAGEFULLFN))) ,@FORMS)) (* ;; "Initially set LOCALPATCHDIRECTORY to NIL to avoid loading patches if no servers are up.") (RPAQQ LOCALPATCHDIRECTORY NIL) (RPAQQ *USEOLDFONTDIRECTORIES* NIL) (RPAQ? UNIXMAIL.DOMAIN.NAME "parc.com") (RPAQ? INIT-NOGREET-FLAG NIL) (DECLARE%: DONTEVAL@LOAD DOCOPY (PARC-INIT) ) (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDTOVAR NLAMA ) (ADDTOVAR NLAML ) (ADDTOVAR LAMA ) ) (PUTPROPS PARC-INIT COPYRIGHT ("Xerox Corporation" 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2002)) (DECLARE%: DONTCOPY (FILEMAP (NIL (1800 40555 (PARC-INIT 1810 . 5479) (FindSite 5481 . 8296) (FindInitHost 8298 . 10968) ( ParcInit 10970 . 22993) (SetDirectories 22995 . 34548) (LoadPatches 34550 . 36498) ( COLLECT-PATCH-FILES 36500 . 37477) (INTERLISPMODE 37479 . 38292) (FILE-SERVER-UP-P 38294 . 40000) ( HostPrefix 40002 . 40553)) (40556 40900 (SUNOSNAME 40566 . 40898))))) STOP \ No newline at end of file diff --git a/obsolete/greetfiles/PARC-INIT.LCOM b/obsolete/greetfiles/PARC-INIT.LCOM deleted file mode 100644 index 5dbae95a0de10178759a390933cc37205c991085..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18973 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≤6jBRuN-7%)XE`@t-1BmO?W=N7P|>K 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 E52K!Ri2wiq diff --git a/obsolete/internal/ABC b/obsolete/internal/ABC deleted file mode 100644 index 69ad77ab..00000000 --- a/obsolete/internal/ABC +++ /dev/null @@ -1,62 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "18-Mar-88 16:09:05" {ERIS}INTERNAL>LIBRARY>ABC.;4 2101 - - changes to%: (VARS ABCCOMS) - - previous date%: "29-Jul-87 12:04:16" {ERIS}INTERNAL>LIBRARY>ABC.;3) - - -(* " -Copyright (c) 1986, 1987, 1988 by Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT ABCCOMS) - -(RPAQQ ABCCOMS ((VARS (MSRECORDTRANFLG T) - (DWIMIFYCOMPFLG) - (MSMACROPROPS COMPILERMACROPROPS) - (CLEANUPOPTIONS '(RC F)) - (CROSSCOMPILING T) - (ASKEDITHIST T) - (RECOMPILEDEFAULT 'CHANGES) - (CROSSCOMPILING 'ASK)) - (FILES (SOURCE) - FILESETS) - (P (MOVD? 'APPLY* 'SPREADAPPLY*) - [RESETVARS ((CROSSCOMPILING T)) - (FILESLOAD EXPORTS.ALL) - (AND (EQ (ASKUSER DWIMWAIT 'N "Check imports? " NIL T) - 'Y) - (ERSETQ (CHECKIMPORTS EXPORTFILES T] - (PRIN1 - "**** SET IL:DFNFLG TO IL:PROP IF YOU EDIT SYSTEM SOURCES THAT CAN'T BE RUN INTERPRETED" - T)))) - -(RPAQQ MSRECORDTRANFLG T) - -(RPAQQ DWIMIFYCOMPFLG NIL) - -(RPAQ MSMACROPROPS COMPILERMACROPROPS) - -(RPAQQ CLEANUPOPTIONS (RC F)) - -(RPAQQ CROSSCOMPILING T) - -(RPAQQ ASKEDITHIST T) - -(RPAQQ RECOMPILEDEFAULT CHANGES) - -(RPAQQ CROSSCOMPILING ASK) -(FILESLOAD (SOURCE) - FILESETS) -(MOVD? 'APPLY* 'SPREADAPPLY*) -[RESETVARS ((CROSSCOMPILING T)) - (FILESLOAD EXPORTS.ALL) - (AND (EQ (ASKUSER DWIMWAIT 'N "Check imports? " NIL T) - 'Y) - (ERSETQ (CHECKIMPORTS EXPORTFILES T] -(PRIN1 "**** SET IL:DFNFLG TO IL:PROP IF YOU EDIT SYSTEM SOURCES THAT CAN'T BE RUN INTERPRETED" T) -(PUTPROPS ABC COPYRIGHT ("Xerox Corporation" 1986 1987 1988)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL))) -STOP diff --git a/obsolete/internal/ABC.LCOM b/obsolete/internal/ABC.LCOM deleted file mode 100644 index 8f8e8f0f..00000000 --- a/obsolete/internal/ABC.LCOM +++ /dev/null @@ -1 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) (FILECREATED " 1-Feb-98 09:30:41" ("compiled on " {DSK}disk2>jdstools>lc3>lispcore3.0>internal>library>ABC.;1) "31-Jan-98 19:10:48" bcompl'd in "Medley 31-Jan-98 ..." dated "31-Jan-98 19:12:50") (FILECREATED "18-Mar-88 16:09:05" {ERIS}INTERNAL>LIBRARY>ABC.;4 2101 changes to%: (VARS ABCCOMS) previous date%: "29-Jul-87 12:04:16" {ERIS}INTERNAL>LIBRARY>ABC.;3) (PRETTYCOMPRINT ABCCOMS) (RPAQQ ABCCOMS ((VARS (MSRECORDTRANFLG T) (DWIMIFYCOMPFLG) (MSMACROPROPS COMPILERMACROPROPS) ( CLEANUPOPTIONS (QUOTE (RC F))) (CROSSCOMPILING T) (ASKEDITHIST T) (RECOMPILEDEFAULT (QUOTE CHANGES)) ( CROSSCOMPILING (QUOTE ASK))) (FILES (SOURCE) FILESETS) (P (MOVD? (QUOTE APPLY*) (QUOTE SPREADAPPLY*)) (RESETVARS ((CROSSCOMPILING T)) (FILESLOAD EXPORTS.ALL) (AND (EQ (ASKUSER DWIMWAIT (QUOTE N) "Check imports? " NIL T) (QUOTE Y)) (ERSETQ (CHECKIMPORTS EXPORTFILES T)))) (PRIN1 "**** SET IL:DFNFLG TO IL:PROP IF YOU EDIT SYSTEM SOURCES THAT CAN'T BE RUN INTERPRETED" T)))) (RPAQQ MSRECORDTRANFLG T) (RPAQQ DWIMIFYCOMPFLG NIL) (RPAQ MSMACROPROPS COMPILERMACROPROPS) (RPAQQ CLEANUPOPTIONS (RC F)) (RPAQQ CROSSCOMPILING T) (RPAQQ ASKEDITHIST T) (RPAQQ RECOMPILEDEFAULT CHANGES) (RPAQQ CROSSCOMPILING ASK) (FILESLOAD (SOURCE) FILESETS) (MOVD? (QUOTE APPLY*) (QUOTE SPREADAPPLY*)) (RESETVARS ((CROSSCOMPILING T)) (FILESLOAD EXPORTS.ALL) (AND (EQ (ASKUSER DWIMWAIT (QUOTE N) "Check imports? " NIL T) (QUOTE Y)) (ERSETQ (CHECKIMPORTS EXPORTFILES T)))) (PRIN1 "**** SET IL:DFNFLG TO IL:PROP IF YOU EDIT SYSTEM SOURCES THAT CAN'T BE RUN INTERPRETED" T) (PUTPROPS ABC COPYRIGHT ("Xerox Corporation" 1986 1987 1988)) NIL \ No newline at end of file diff --git a/obsolete/internal/library/DICOLOR b/obsolete/internal/library/DICOLOR deleted file mode 100644 index a96ec3f0..00000000 --- a/obsolete/internal/library/DICOLOR +++ /dev/null @@ -1,466 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") -(FILECREATED "15-Jun-90 13:49:37" {DSK}local>lde>lispcore>internal>library>DICOLOR.;2 20737 - - changes to%: (VARS DICOLORCOMS) - - previous date%: "15-Aug-85 19:44:58" {DSK}local>lde>lispcore>internal>library>DICOLOR.;1 -) - - -(* ; " -Copyright (c) 1985, 1990 by Venue & Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT DICOLORCOMS) - -(RPAQQ DICOLORCOMS - ((FNS CNSMENUINIT CNSTOCSL CNSTORGB CSLTOCNS DICOLOR.FROM.USER GETCNS HLSTOCSL CSLTOHLS - RGBTOCNS) - (VARS DICOLOR.hueMapping DICOLOR.lightnessMapping DICOLOR.saturationMapping NEWCOLORITEM) - (INITVARS (COLORNAMEMENU)) - (FNS DICOLOR.hueN DICOLOR.hueNvalue DICOLOR.hueNname DICOLOR.lightnessN - DICOLOR.lightnessNvalue DICOLOR.lightnessNname DICOLOR.saturationN - DICOLOR.saturationNvalue DICOLOR.saturationNname) - (DECLARE%: DONTCOPY (*) - (RECORDS hueRecord lightnessRecord saturationRecord) - (CONSTANTS * DICOLOR.hueConstants) - (CONSTANTS * DICOLOR.saturationConstants) - (CONSTANTS * DICOLOR.lightnessConstants)))) -(DEFINEQ - -(CNSMENUINIT - [LAMBDA NIL (* gbn " 9-Aug-85 03:11") - [SETQ CNSHUEMENU (create MENU - ITEMS _ (for I in DICOLOR.hueMapping collect (CAR I] - [SETQ CNSSATURATIONMENU (create MENU - ITEMS _ (for I in DICOLOR.saturationMapping - collect (CAR I] - (SETQ CNSLIGHTNESSMENU (create MENU - ITEMS _ (for I in DICOLOR.lightnessMapping - collect (CAR I]) - -(CNSTOCSL - [LAMBDA (hue saturation lightness) (* hdj "12-Apr-85 19:01") - (PROG ((hueAtom (MKATOM hue)) - (saturationAtom (MKATOM saturation)) - (lightnessAtom (MKATOM lightness)) - c s l) - (if [NOT (SETQ c (fetch (hueRecord ordering) of (ASSOC hueAtom - DICOLOR.hueMapping] - then (SETQ c DICOLOR.achromatic)) - (if (EQ c DICOLOR.achromatic) - then (SETQ s DICOLOR.noSaturation) - else (if [NOT (SETQ s (fetch (saturationRecord ordering) - of (ASSOC saturationAtom DICOLOR.saturationMapping] - then (SETQ s DICOLOR.vivid))) - (SELECTQ hueAtom - (Black (SETQ l DICOLOR.black)) - (White (SETQ l DICOLOR.white)) - (if [NOT (SETQ l (fetch (lightnessRecord ordering) of (ASSOC lightnessAtom - - DICOLOR.lightnessMapping - ] - then (SETQ l DICOLOR.medium))) - (RETURN (LIST c s l]) - -(CNSTORGB - [LAMBDA (saturation lightness hue) (* hdj "15-Jul-85 12:33") - (LET ((CSL (CNSTOCSL hue saturation lightness))) - (HLSTORGB (APPLY (FUNCTION CSLTOHLS) - CSL]) - -(CSLTOCNS - [LAMBDA (c s l) (* hdj "15-Jul-85 12:37") - (PROG (hue saturation lightness) - [if (EQ c DICOLOR.achromatic) - then (SETQ saturation "") - [SELECTC l - (DICOLOR.black (SETQ hue "Black") - (SETQ lightness "")) - (DICOLOR.white (SETQ hue "White") - (SETQ lightness "")) - (PROGN (SETQ hue "Gray") - (SETQ lightness (MKSTRING (fetch (lightnessRecord name) - of (DICOLOR.lightnessN l] - else (SETQ hue (fetch (hueRecord name) of (DICOLOR.hueN c))) - (SETQ saturation (fetch (saturationRecord name) of (DICOLOR.saturationN - s))) - (SETQ lightness (fetch (lightnessRecord name) of (DICOLOR.lightnessN - l] - (RETURN (LIST saturation lightness hue]) - -(DICOLOR.FROM.USER - [LAMBDA (NAMES?) (* gbn " 9-Aug-85 04:51") - - (* * returns an RGB triple. If NAMES? prompts the user first with the global - color name menu. She can then choose NEWCOLOR which can be specified as RGB or - CNS) - - (PROG (NAME RGB) - (if NAMES? - then (* first try to get a color name) - [SETQ NAME (MENU (OR COLORNAMEMENU (SETQ COLORNAMEMENU - (CREATE MENU - ITEMS _ - (CONS NEWCOLORITEM - (FOR ENTRY IN COLORNAMES - COLLECT (CAR ENTRY] - (if (NOT NAME) - then (* the user clicked outside the menu) - (RETURN)) - [SETQ RGB (SELECTQ NAME - (RGB (READCOLOR1 "specify new color")) - (CNS (APPLY (FUNCTION CNSTORGB) - (GETCNS))) - (RETURN (CDR (ASSOC NAME COLORNAMES] - (if (NOT (SETQ NAME (TTYIN "New color name? "))) - then (* user must have decided that she - didn't want to keep - (name) the color) - (RETURN)) - (push COLORNAMES (CONS (CAR NAME) - RGB)) - (SETQ COLORNAMEMENU NIL) (* invalidate the menu) - (RETURN RGB]) - -(GETCNS - [LAMBDA NIL (* gbn " 9-Aug-85 03:13") - (LIST (MENU CNSLIGHTNESSMENU) - (MENU CNSSATURATIONMENU) - (MENU CNSHUEMENU]) - -(HLSTOCSL - [LAMBDA (hue lightness saturation) (* hdj "15-Jul-85 12:14") - (LET - ((ISLHue (FQUOTIENT (MOD (PLUS hue 240) - 360) - 360))) - (PROG (c s l) - (for old s from DICOLOR.noSaturation to DICOLOR.vivid - do (if (EQ s DICOLOR.vivid) - then (RETURN)) - (if (LEQ saturation (PLUS (DICOLOR.saturationNvalue s) - (QUOTIENT (DIFFERENCE (DICOLOR.saturationNvalue - (ADD1 s)) - (DICOLOR.saturationNvalue - s)) - 2))) - then (RETURN))) - [if (EQ s DICOLOR.noSaturation) - then (SETQ c DICOLOR.achromatic) - (for old l from DICOLOR.black to DICOLOR.white - do (if (EQ l DICOLOR.white) - then (RETURN)) - (if (LEQ lightness (PLUS (DICOLOR.lightnessNvalue l) - (QUOTIENT (DIFFERENCE ( - DICOLOR.lightnessNvalue - (ADD1 l)) - ( - DICOLOR.lightnessNvalue - l)) - 2))) - then (RETURN))) - else (for old c from DICOLOR.red to DICOLOR.purplishRed - do (* (HELP c)) - (if (EQ c DICOLOR.purplishRed) - then (if (GREATERP ISLHue - (PLUS (DICOLOR.hueNvalue c) - (QUOTIENT (DIFFERENCE 1 ( - DICOLOR.hueNvalue - c)) - 2))) - then (SETQ c DICOLOR.red)) - (RETURN)) - (if (LEQ ISLHue (PLUS (DICOLOR.hueNvalue c) - (QUOTIENT (DIFFERENCE (DICOLOR.hueNvalue - (ADD1 c)) - (DICOLOR.hueNvalue - c)) - 2))) - then (RETURN))) - (for old l from DICOLOR.veryDark to DICOLOR.veryLight - do (if (EQ l DICOLOR.veryLight) - then (RETURN)) - (if (LEQ lightness (PLUS (DICOLOR.lightnessNvalue l) - (QUOTIENT (DIFFERENCE ( - DICOLOR.lightnessNvalue - (ADD1 l)) - (DICOLOR.lightnessNvalue - l)) - 2))) - then (RETURN] - (RETURN (LIST c s l]) - -(CSLTOHLS - [LAMBDA (c s l) (* hdj "15-Jul-85 12:23") - (PROG (hue saturation lightness) - (if (EQ c DICOLOR.achromatic) - then (SETQ hue 0.0) - (SETQ saturation 0.0) - (SETQ lightness (DICOLOR.lightnessNvalue l)) - else (SETQ hue (DICOLOR.hueNvalue c)) - (SETQ saturation (DICOLOR.saturationNvalue s)) - (SETQ lightness (DICOLOR.lightnessNvalue l))) - (RETURN (LIST (MOD (FPLUS 120 (FTIMES hue 360)) - 360) - lightness saturation]) - -(RGBTOCNS - [LAMBDA (Red Green Blue) (* hdj "15-Jul-85 12:36") - (APPLY (FUNCTION CSLTOCNS) - (APPLY (FUNCTION HLSTOCSL) - (RGBTOHLS Red Green Blue]) -) - -(RPAQQ DICOLOR.hueMapping - ((Achromatic 0.0 -1) - (Red 0.0 0) - (OrangishRed 0.01 1) - (RedOrange 0.02 2) - (ReddishOrange 0.03 3) - (Orange 0.04 4) - (YellowishOrange 0.07 5) - (OrangeYellow 0.1 6) - (OrangishYellow 0.13 7) - (Yellow 0.1673 8) - (GreenishYellow 0.2073 9) - (YellowGreen 0.2473 10) - (YellowishGreen 0.2873 11) - (Green 0.3333 12) - (BluishGreen 0.4133 13) - (GreenBlue 0.4933 14) - (GreenishBlue 0.5733 15) - (Blue 0.6666 16) - (PurplishBlue 0.6816 17) - (BluePurple 0.6966 18) - (BluishPurple 0.7116 19) - (Purple 0.73 20) - (ReddishPurple 0.8 21) - (PurpleRed 0.87 22) - (PurplishRed 0.94 23) - (BrownishRed 0.01 24) - (RedBrown 0.02 25) - (ReddishBrown 0.03 26) - (Brown 0.04 27) - (YellowishBrown 0.07 28) - (BrownYellow 0.1 29) - (BrownishYellow 0.13 30))) - -(RPAQQ DICOLOR.lightnessMapping ((Black 0.0 0) - (VeryDark 0.1666 1) - (Dark 0.3333 2) - (Medium 0.5 3) - (Light 0.6666 4) - (VeryLight 0.8333 5) - (White 1.0 6))) - -(RPAQQ DICOLOR.saturationMapping ((NoSaturation 0.0 0) - (Grayish 0.25 1) - (Moderate 0.5 2) - (Strong 0.75 3) - (Vivid 1.0 4))) - -(RPAQQ NEWCOLORITEM (New% Color 'CNS "Allows specification of a new color" - (SUBITEMS (RGB 'RGB - "Specify a new color using Red, Green, Blue sliders") - (CNS 'CNS "Specify a new color using English")))) - -(RPAQ? COLORNAMEMENU ) -(DEFINEQ - -(DICOLOR.hueN - [LAMBDA (N) (* hdj "17-Apr-85 13:38") - (DECLARE (GLOBALVARS DICOLOR.hueMapping)) - (for ELT in DICOLOR.hueMapping suchthat (EQ (fetch (hueRecord ordering) - of ELT) - N]) - -(DICOLOR.hueNvalue - [LAMBDA (N) (* hdj "18-Apr-85 09:58") - (fetch (hueRecord value) of (DICOLOR.hueN N]) - -(DICOLOR.hueNname - [LAMBDA (N) (* hdj "18-Apr-85 10:07") - (fetch (hueRecord name) of (DICOLOR.hueN N]) - -(DICOLOR.lightnessN - [LAMBDA (N) (* hdj "17-Apr-85 13:40") - (DECLARE (GLOBALVARS DICOLOR.lightnessMapping)) - (for ELT in DICOLOR.lightnessMapping suchthat (EQ (fetch (lightnessRecord - ordering) - of ELT) - N]) - -(DICOLOR.lightnessNvalue - [LAMBDA (N) (* hdj "17-Apr-85 13:36") - (fetch (lightnessRecord value) of (DICOLOR.lightnessN N]) - -(DICOLOR.lightnessNname - [LAMBDA (N) (* hdj "17-Apr-85 14:02") - (fetch (lightnessRecord name) of (DICOLOR.lightnessN N]) - -(DICOLOR.saturationN - [LAMBDA (N) (* hdj "17-Apr-85 13:39") - (DECLARE (GLOBALVARS DICOLOR.saturationMapping)) - (for ELT in DICOLOR.saturationMapping suchthat (EQ (fetch (saturationRecord - ordering) of - ELT) - N]) - -(DICOLOR.saturationNvalue - [LAMBDA (N) (* hdj "17-Apr-85 13:36") - (fetch (saturationRecord value) of (DICOLOR.saturationN N]) - -(DICOLOR.saturationNname - [LAMBDA (N) (* hdj "17-Apr-85 14:02") - (fetch (saturationRecord name) of (DICOLOR.saturationN N]) -) -(DECLARE%: DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RECORD hueRecord (name value ordering)) - -(RECORD lightnessRecord (name value ordering)) - -(RECORD saturationRecord (name value ordering)) -) - - -(RPAQQ DICOLOR.hueConstants - (DICOLOR.achromatic DICOLOR.blue DICOLOR.bluePurple DICOLOR.bluishGreen DICOLOR.bluishPurple - DICOLOR.brown DICOLOR.brownYellow DICOLOR.brownishRed DICOLOR.brownishYellow - DICOLOR.green DICOLOR.greenBlue DICOLOR.greenishBlue DICOLOR.greenishYellow - DICOLOR.orange DICOLOR.orangeYellow DICOLOR.orangishRed DICOLOR.orangishYellow - DICOLOR.purple DICOLOR.purpleRed DICOLOR.purplishBlue DICOLOR.purplishRed DICOLOR.red - DICOLOR.redBrown DICOLOR.redOrange DICOLOR.reddishBrown DICOLOR.reddishOrange - DICOLOR.reddishPurple DICOLOR.yellow DICOLOR.yellowGreen DICOLOR.yellowishBrown - DICOLOR.yellowishGreen DICOLOR.yellowishOrange)) -(DECLARE%: EVAL@COMPILE - -(RPAQQ DICOLOR.achromatic -1) - -(RPAQQ DICOLOR.blue 16) - -(RPAQQ DICOLOR.bluePurple 18) - -(RPAQQ DICOLOR.bluishGreen 13) - -(RPAQQ DICOLOR.bluishPurple 19) - -(RPAQQ DICOLOR.brown 27) - -(RPAQQ DICOLOR.brownYellow 29) - -(RPAQQ DICOLOR.brownishRed 24) - -(RPAQQ DICOLOR.brownishYellow 30) - -(RPAQQ DICOLOR.green 12) - -(RPAQQ DICOLOR.greenBlue 14) - -(RPAQQ DICOLOR.greenishBlue 15) - -(RPAQQ DICOLOR.greenishYellow 9) - -(RPAQQ DICOLOR.orange 4) - -(RPAQQ DICOLOR.orangeYellow 6) - -(RPAQQ DICOLOR.orangishRed 1) - -(RPAQQ DICOLOR.orangishYellow 7) - -(RPAQQ DICOLOR.purple 20) - -(RPAQQ DICOLOR.purpleRed 22) - -(RPAQQ DICOLOR.purplishBlue 17) - -(RPAQQ DICOLOR.purplishRed 23) - -(RPAQQ DICOLOR.red 0) - -(RPAQQ DICOLOR.redBrown 25) - -(RPAQQ DICOLOR.redOrange 2) - -(RPAQQ DICOLOR.reddishBrown 26) - -(RPAQQ DICOLOR.reddishOrange 3) - -(RPAQQ DICOLOR.reddishPurple 21) - -(RPAQQ DICOLOR.yellow 8) - -(RPAQQ DICOLOR.yellowGreen 10) - -(RPAQQ DICOLOR.yellowishBrown 28) - -(RPAQQ DICOLOR.yellowishGreen 11) - -(RPAQQ DICOLOR.yellowishOrange 5) - - -(CONSTANTS DICOLOR.achromatic DICOLOR.blue DICOLOR.bluePurple DICOLOR.bluishGreen - DICOLOR.bluishPurple DICOLOR.brown DICOLOR.brownYellow DICOLOR.brownishRed - DICOLOR.brownishYellow DICOLOR.green DICOLOR.greenBlue DICOLOR.greenishBlue - DICOLOR.greenishYellow DICOLOR.orange DICOLOR.orangeYellow DICOLOR.orangishRed - DICOLOR.orangishYellow DICOLOR.purple DICOLOR.purpleRed DICOLOR.purplishBlue - DICOLOR.purplishRed DICOLOR.red DICOLOR.redBrown DICOLOR.redOrange DICOLOR.reddishBrown - DICOLOR.reddishOrange DICOLOR.reddishPurple DICOLOR.yellow DICOLOR.yellowGreen - DICOLOR.yellowishBrown DICOLOR.yellowishGreen DICOLOR.yellowishOrange) -) - - -(RPAQQ DICOLOR.saturationConstants (DICOLOR.noSaturation DICOLOR.grayish DICOLOR.moderate - DICOLOR.strong DICOLOR.vivid)) -(DECLARE%: EVAL@COMPILE - -(RPAQQ DICOLOR.noSaturation 0) - -(RPAQQ DICOLOR.grayish 1) - -(RPAQQ DICOLOR.moderate 2) - -(RPAQQ DICOLOR.strong 3) - -(RPAQQ DICOLOR.vivid 4) - - -(CONSTANTS DICOLOR.noSaturation DICOLOR.grayish DICOLOR.moderate DICOLOR.strong DICOLOR.vivid) -) - - -(RPAQQ DICOLOR.lightnessConstants (DICOLOR.black DICOLOR.veryDark DICOLOR.dark DICOLOR.medium - DICOLOR.light DICOLOR.veryLight DICOLOR.white)) -(DECLARE%: EVAL@COMPILE - -(RPAQQ DICOLOR.black 0) - -(RPAQQ DICOLOR.veryDark 1) - -(RPAQQ DICOLOR.dark 2) - -(RPAQQ DICOLOR.medium 3) - -(RPAQQ DICOLOR.light 4) - -(RPAQQ DICOLOR.veryLight 5) - -(RPAQQ DICOLOR.white 6) - - -(CONSTANTS DICOLOR.black DICOLOR.veryDark DICOLOR.dark DICOLOR.medium DICOLOR.light DICOLOR.veryLight - DICOLOR.white) -) -) -(PUTPROPS DICOLOR COPYRIGHT ("Venue & Xerox Corporation" 1985 1990)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (1197 12278 (CNSMENUINIT 1207 . 1838) (CNSTOCSL 1840 . 3245) (CNSTORGB 3247 . 3486) ( -CSLTOCNS 3488 . 4721) (DICOLOR.FROM.USER 4723 . 6789) (GETCNS 6791 . 6991) (HLSTOCSL 6993 . 11386) ( -CSLTOHLS 11388 . 12056) (RGBTOCNS 12058 . 12276)) (14261 16839 (DICOLOR.hueN 14271 . 14660) ( -DICOLOR.hueNvalue 14662 . 14837) (DICOLOR.hueNname 14839 . 15012) (DICOLOR.lightnessN 15014 . 15524) ( -DICOLOR.lightnessNvalue 15526 . 15719) (DICOLOR.lightnessNname 15721 . 15912) (DICOLOR.saturationN -15914 . 16443) (DICOLOR.saturationNvalue 16445 . 16641) (DICOLOR.saturationNname 16643 . 16837))))) -STOP diff --git a/obsolete/internal/library/DICOLOR.LCOM b/obsolete/internal/library/DICOLOR.LCOM deleted file mode 100644 index 21bd10389eef82bc0e67daf30e173d00b9447cc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6396 zcmb_h-ESLN6}RKGT?(#}s-jC+x)-Asdugnh@pphUjy;LTvB$3MG|iTey7p}BWMW6Q z({9Bgv^O z20LnUmIatNyQJNjO(mI-nu{do#7KYz1C8$XPFvTStlI&K|0mh%%1^)7Z1=b3=^@Q; zHv5BaSMSg3jmW&-?(a0ZJuMOz=G&ct*6Y-D0Ppnbz5DZ7B~vPtD&g;nAr^>;v-x_5 z4ii&zqA(Xt2G|`sOaFG0`P(?Fs5N!%K64Pm;c$R8>jUs|WV9APRGCt- z8e%&=?QXlf+vjWoB>*PUyBo8~7>OB;&cz_6sl%7%LJavcYPBe9?D{rX_HS0A*y9S1p1$OUCNS5xIGKLJ}31gxfO ztCe(3DXAu*q)kX~Z?py-t=~84gqY{QzSADhZ4dt5oE9dkzifKFkCcNmxz^0v@8_;O zp70&~Cx3o=!kcR<7bb`2n;V3Bfep==ml`_?W;X-9NhtA6Im_D8n*1%I@ zwsq5k?lvGIa~#J62@D>`-xc=;ri>utlOw{Tz^s`9MqD*vgPkKB-#pRbetg>J@hyCb z+#}7Oi~KnqIhDKd)rkr3t%FnB&u?u%Km66^17+$gecZ?2u67EZ67 zqvZ8z@!(9MHS?qQ3s*j)9IKw6dD6@y!=9L6|J+=;aCX?3;wHG++%KCk@sVLh!$4m* zf%|O8o$xg}n>*rTZcdKX{M{7A)|6M7Svxn=I5%uHrW6XCSd!Ih>x#-mmF% ztkKoGJ=UpjYuBjbA!GJ;v_|`#`>bOv!@4GmW{pMg9&*D^Evwo|br?7I~f)m{Kj|ctQc#uIxNyZ7=68 zhM4KK$e) z4t_%%JV5r0j!P?d>pD~^!TYS>wsokQYZ8jIS;LO42~LKg>|^W@(cxM<+)#M2QwuHJ zgg6fB%3LlA;)^AqP_d{VOW0#|v zLm_yf3Q&!$HQPj%%*b+(7%7l`LVgqnR~e=XyGUL~P1ABu(>gp_D_RrD;}UYMkEdP! zSV%AOhJXhye^4J_C00qYGAz%NR^3k-Z31Nx^q*!6!21C=!-f?KEQq2N!pYy9@OZqp zDc4U=dvm^n$<~y29i7p_;fKnBuRWEUxViVa(d~{ny>%6!F4Illa0Z@DsU1{t1PS0Z zTDJ)=1aX{*G-xVslnP~SgHwwL+1MoV1!y=HeI@eR6ne*^*kzl*;QY_!i(5Ia8`+t91FQXqZr8#$V(sU6Q5MDbx~A*h zdn1Sm7PAqJWsntF+yVmG1p5Jxu!K#9@ZyOGO9H~nor5ZbX~@P>Hm*?)0geJJl4v$7 z_EM6TFc>qbfqVpixLN=kbrsYt)Tl^s5|Bf9(G|kc6hTQ$4h6os5KGVkiD?4j`13Q7 zWGwIYb};F*P~%CoH6qDKsC<#s7f;0jCP4uPw!M%L37_P2KoLwB0kCXhFC=lfw-F7C zVhALWcpL|G4QMKg#ud=TUiV(dh6*B+NI2l|1+WF{`z4agG`|f83nZNV4T6r{NLr#y z1aLl=ioRXemq;Q%#{#yq0Iw3p__Xc$R+0)rPne$235;}cL+jno)_VjHp?mJe<~O%7 z=>Rk0_U<+?V%&B81)53XlZ?fkmxx%vBzXo&Zj5V0oD(0zn3D$_&eU$zxm;Nc(!c>M>*C6S)zw7>lY=Vkiy9R48x-&k3RUx>>)OF~ z`!p|xFI+X+&#Oi|+Sl8Vr5^y#IGwo}@t;6P?rczC1R$K5#IB8wH~=lL)-VJuSFMZ+ rgz|cYhR^tK!ws#2X7~!bsr9<=LJPf}t}(2}T|LF8=qWf8pW6HnGeFX| diff --git a/obsolete/library/CHARS b/obsolete/library/CHARS deleted file mode 100644 index 6a37c907..00000000 --- a/obsolete/library/CHARS +++ /dev/null @@ -1,17 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") -(FILECREATED " 1-Aug-2020 21:16:25" {DSK}kaplan>Local>medley3.5>lispcore>library>CHARS.;1 517 -) - - -(PRETTYCOMPRINT CHARSCOMS) - -(RPAQQ CHARSCOMS ((ALISTS (CHARACTERNAMES RSQ LSQ LDQ RDQ NEQ)))) - -(ADDTOVAR CHARACTERNAMES (RSQ "0,271") - (LSQ "0,251") - (LDQ "0,252") - (RDQ "0,272") - (NEQ "041,142")) -(DECLARE%: DONTCOPY - (FILEMAP (NIL))) -STOP diff --git a/obsolete/library/FX-80DRIVER b/obsolete/library/FX-80DRIVER deleted file mode 100644 index 39183cc9..00000000 --- a/obsolete/library/FX-80DRIVER +++ /dev/null @@ -1,4346 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) - -(FILECREATED "15-Jul-2025 22:01:24"  -{DSK}kaplan>Local>medley3.5>working-medley>library>FX-80DRIVER.;2 231869 - - :EDIT-BY rmk - - :CHANGES-TO (VARS FX-80.HIGH-QUALITY-DRIVERCOMS) - (FNS \HQFX80.CHANGEFONT) - - :PREVIOUS-DATE "11-Jun-90 15:57:59" -{DSK}kaplan>Local>medley3.5>working-medley>library>FX-80DRIVER.;1) - - -(PRETTYCOMPRINT FX-80DRIVERCOMS) - -(RPAQQ FX-80DRIVERCOMS - ( - -(* ;;; "FX-80 driver") - - (COMS * FX-80.FAST-DRIVERCOMS (* ; "the fast driver")) - (COMS * FX-80.HIGH-QUALITY-DRIVERCOMS (* ; "the higher quality driver")) - (COMS * FX80-PRINTCOMS (* ; "FXPrinter emulation")) - (COMS (* ; "common routines") - (FUNCTIONS (* ; "abort window stuff") - WITH-ABORT-WINDOW \FX80.CREATE-SEND-ABORT-WINDOW) - (FUNCTIONS (* ; "font profile hacking") - \ADD-TO-FONTPROFILE \GET-FROM-FONTPROFILE)) - - -(* ;;; "initialization") - - [COMS (DECLARE%: DONTEVAL@LOAD DOCOPY (P (\HQFX80.INIT) - (\FASTFX80.INIT] - (PROP FILETYPE FX-80DRIVER))) - - - -(* ;;; "FX-80 driver") - - -(RPAQQ FX-80.FAST-DRIVERCOMS - [ - (* ;; "Fast driver") - - - (* ;; "") - - (STRUCTURES FASTFX80DATA) - (FNS \FASTFX80.INIT) - - (* ;; "Imagestream methods") - - (COMS - (* ;; "opening/closing imagestream") - - (COMS (FNS OPENFASTFX80STREAM) - (FUNCTIONS \FASTFX80.PREAMBLE \FASTFX80.RESET-PRINTER \FASTFX80.OUTPUT-SIGNATURE) - ) - (FNS \FASTFX80.CLOSE)) - (COMS - (* ;; "methods that hack fonts") - - (FNS \FASTFX80.CHANGEFONT \FASTFX80.FONTCREATE \FASTFX80.CREATECHARSET) - (FUNCTIONS \FASTFX80.INIT-FONT-PROFILE)) - (COMS - (* ;; "methods for measuring") - - (FNS \FASTFX80.STRINGWIDTH \FASTFX80.CHARWIDTH \FASTFX80.SUBCHARWIDTH) - (FUNCTIONS \FASTFX80.SPACEFACTOR)) - (COMS - (* ;; "methods that affect the current position/size of drawing surface") - - (FNS \FASTFX80.CLIPPINGREGION \FASTFX80.MOVETO \FASTFX80.XPOSITION \FASTFX80.YPOSITION - \FASTFX80.BACKUP.PAPER \FASTFX80.ADVANCE.PAPER \FASTFX80.NEWPAGE \FASTFX80.OUTCHAR - \FASTFX80.NEWLINE \FASTFX80.LINEFEED \FASTFX80.DRAWLINE) - (FUNCTIONS \FASTFX80.STARTPAGE \FASTFX80.SMART-XPOSITION \FASTFX80.TOPMARGIN - \FASTFX80.BOTTOMMARGIN \FASTFX80.LEFTMARGIN \FASTFX80.RIGHTMARGIN - \FASTFX80.CUR-POS-VISIBLE? \FASTFX80.HORIZONTAL)) - (COMS - (* ;; "printer code") - - (FUNCTIONS \FASTFX80.SEND MAKE-FASTFX80 FASTFX80FILEP \FASTFX80.CANNOT-PRINT-BITMAPS) - (FNS \FASTFX80.CONVERT-TEDIT)) - (COMS - (* ;; "Character transmission method") - - (FNS \FASTFX80.BOUT)) - - (* ;; "Miscellany") - - (FUNCTIONS \FASTFX80.TRANSLATE-CHAR WITH-FASTFX80-DATA) - (CONSTANTS (\FASTFX80.DOTSPERINCH 72) - (\FASTFX80.LINESPERINCH 6) - (\FASTFX80.LINEHEIGHT 12) - (* ; "in dots") - (\FASTFX80.FILE-SIGNATURE "FastFX-80/Xerox/1.0 ")) - (INITVARS (FASTFX80-DEFAULT-DESTINATION "{TTY}") - (\FASTFX80.INCHES-PER-PAGE 11) - (\FASTFX80.INCHES-PER-LINE 8.5)) - (COMS - (* ;; "need to load these exports") - - (DECLARE%: EVAL@LOAD EVAL@COMPILE DONTCOPY (FILES (LOADCOMP) - ADISPLAY]) - - - -(* ;; "Fast driver") - - - - -(* ;; "") - - -(CL:DEFSTRUCT FASTFX80DATA - - (* ;; "the imagedata vector for a fastfx80 imagestream") - - (VIRTUAL-XPOS 0) - (VIRTUAL-YPOS 0) - (REAL-XPOS 0) - (REAL-YPOS 0) - CLIPPINGREGION BACKINGSTREAM (LEFTMARGIN 72) - RIGHTMARGIN TOPMARGIN (BOTTOMMARGIN 0) - FONT PAPER-WIDTH PAPER-HEIGHT (SPACEFACTOR 1.0)) -(DEFINEQ - -(\FASTFX80.INIT - [LAMBDA NIL (* ; "Edited 16-Dec-86 12:03 by hdj") - - (DECLARE (GLOBALVARS DEFAULTPRINTINGHOST IMAGESTREAMTYPES PRINTERTYPES PRINTFILETYPES - \FASTFX80.IMAGEOPS \FASTFX80.FDEV)) - (SETQ \FASTFX80.FDEV (create FDEV - DEVICENAME _ (LIST 'FASTFX80 'PRINTER) - CLOSEFILE _ (FUNCTION NILL) - BOUT _ (FUNCTION \FASTFX80.BOUT))) - (SETQ \FASTFX80.IMAGEOPS (create IMAGEOPS - IMAGETYPE _ 'FASTFX80 - IMFONT _ (FUNCTION \FASTFX80.CHANGEFONT) - IMLEFTMARGIN _ (FUNCTION \FASTFX80.LEFTMARGIN) - IMRIGHTMARGIN _ (FUNCTION \FASTFX80.RIGHTMARGIN) - IMTOPMARGIN _ (FUNCTION \FASTFX80.TOPMARGIN) - IMBOTTOMMARGIN _ (FUNCTION \FASTFX80.BOTTOMMARGIN) - IMLINEFEED _ (FUNCTION NILL) - IMTERPRI _ (FUNCTION \FASTFX80.NEWLINE) - IMXPOSITION _ (FUNCTION \FASTFX80.XPOSITION) - IMYPOSITION _ (FUNCTION \FASTFX80.YPOSITION) - IMCLOSEFN _ (FUNCTION \FASTFX80.CLOSE) - IMMOVETO _ (FUNCTION \FASTFX80.MOVETO) - IMDRAWCURVE _ (FUNCTION NILL) - IMFILLCIRCLE _ (FUNCTION NILL) - IMDRAWLINE _ (FUNCTION NILL) - IMDRAWELLIPSE _ (FUNCTION NILL) - IMDRAWCIRCLE _ (FUNCTION NILL) - IMBITBLT _ (FUNCTION NILL) - IMBLTSHADE _ (FUNCTION NILL) - IMNEWPAGE _ (FUNCTION \FASTFX80.NEWPAGE) - IMSCALE _ [FUNCTION (LAMBDA NIL 1] - IMSPACEFACTOR _ (FUNCTION NILL) - IMFONTCREATE _ 'FASTFX80 - IMCOLOR _ (FUNCTION NILL) - IMBACKCOLOR _ (FUNCTION NILL) - IMOPERATION _ (FUNCTION NILL) - IMSTRINGWIDTH _ (FUNCTION \FASTFX80.STRINGWIDTH) - IMCHARWIDTH _ (FUNCTION \FASTFX80.CHARWIDTH) - IMCLIPPINGREGION _ (FUNCTION \FASTFX80.CLIPPINGREGION) - IMRESET _ (FUNCTION NILL) - IMDRAWPOLYGON _ (FUNCTION NILL) - IMFILLPOLYGON _ (FUNCTION NILL) - IMSCALEDBITBLT _ (FUNCTION NILL))) - [push IMAGESTREAMTYPES (COPYALL '(FASTFX80 (OPENSTREAM OPENFASTFX80STREAM) - (FONTCREATE \FASTFX80.FONTCREATE) - (FONTSAVAILABLE \SEARCHDISPLAYFONTFILES) - (CREATECHARSET \FASTFX80.CREATECHARSET] - [push PRINTERTYPES (COPYALL '((FASTFX80) - (CANPRINT (FASTFX80)) - (STATUS TRUE) - (SEND \FASTFX80.SEND) - (BITMAPSCALE NIL) - (BITMAPFILE (\FASTFX80.CANNOT-PRINT-BITMAPS FILE BITMAP - SCALEFACTOR REGION ROTATION TITLE)) - (PROPERTIES NILL] - [push PRINTFILETYPES (COPYALL '(FASTFX80 (TEST FASTFX80FILEP) - (EXTENSION (FASTFX80)) - (CONVERSION (TEXT MAKE-FASTFX80 TEDIT - \FASTFX80.CONVERT-TEDIT] - (push DEFAULTPRINTINGHOST (LIST 'FASTFX80 'FASTFX80)) - (PUTPROP 'FASTFX80 'PRINTERTYPE 'FASTFX80) - (\FASTFX80.INIT-FONT-PROFILE) - T]) -) - - - -(* ;; "Imagestream methods") - - - - -(* ;; "opening/closing imagestream") - -(DEFINEQ - -(OPENFASTFX80STREAM - [LAMBDA (FILENAME OPTIONS) (* ; "Edited 20-Jan-88 11:22 by jds") - - (* ;; "open a fastfx80 imagestream") - - (LET* [[BACKING (OPENSTREAM FILENAME 'OUTPUT NIL '((SEQUENTIAL T) - (TYPE FASTFX80] - (PAPER-WIDTH (FIX (TIMES \FASTFX80.INCHES-PER-LINE \FASTFX80.DOTSPERINCH))) - (PAPER-HEIGHT (FIX (TIMES \FASTFX80.INCHES-PER-PAGE \FASTFX80.DOTSPERINCH))) - (FASTFX80STREAM (create STREAM - FULLFILENAME _ (FULLNAME BACKING) - DEVICE _ \FASTFX80.FDEV - ACCESS _ 'OUTPUT - OUTCHARFN _ (FUNCTION \FASTFX80.OUTCHAR) - IMAGEOPS _ \FASTFX80.IMAGEOPS - IMAGEDATA _ (MAKE-FASTFX80DATA :BACKINGSTREAM BACKING - :CLIPPINGREGION (CREATEREGION 0 0 PAPER-WIDTH - PAPER-HEIGHT) - :RIGHTMARGIN - (- PAPER-WIDTH \FASTFX80.DOTSPERINCH) - :TOPMARGIN - (- PAPER-HEIGHT (TIMES 3 \FASTFX80.LINEHEIGHT)) - :BOTTOMMARGIN - (TIMES 3 \FASTFX80.LINEHEIGHT) - :PAPER-WIDTH PAPER-WIDTH :PAPER-HEIGHT - PAPER-HEIGHT] - (replace (STREAM USERVISIBLE) of BACKING with NIL) - (\FASTFX80.PREAMBLE FASTFX80STREAM) - FASTFX80STREAM]) -) - -(CL:DEFUN \FASTFX80.PREAMBLE (FASTFX80STREAM) - - (* ;; "start a FASTFX80 master") - -(* ;;; "must change FASTFX80FILEP when this changes") - - (DECLARE (GLOBALVARS \FASTFX80.INCHES-PER-PAGE)) - (\FASTFX80.RESET-PRINTER FASTFX80STREAM \FASTFX80.INCHES-PER-PAGE) - (\FASTFX80.OUTPUT-SIGNATURE FASTFX80STREAM) - (\FASTFX80.CHANGEFONT FASTFX80STREAM (DEFAULTFONT 'FASTFX80)) - (\FASTFX80.STARTPAGE FASTFX80STREAM)) - -(CL:DEFUN \FASTFX80.RESET-PRINTER (FASTFX80STREAM INCHES-PER-PAGE) - - (* ;; "send a reset sequence to the fx-80") - - (IF (AND (<= 1 INCHES-PER-PAGE) - (<= INCHES-PER-PAGE 21)) - THEN - (* ;; "send a reset sequence to the fx-80...") - - (\FASTFX80.BOUT FASTFX80STREAM (CHARCODE ESC)) - (\FASTFX80.BOUT FASTFX80STREAM (CHARCODE @)) - - (* ;; "...and set the form length") - - (\FASTFX80.BOUT FASTFX80STREAM (CHARCODE ESC)) - (\FASTFX80.BOUT FASTFX80STREAM (CHARCODE C)) - (\FASTFX80.BOUT FASTFX80STREAM (FIXR (TIMES INCHES-PER-PAGE \FASTFX80.LINESPERINCH))) - ELSE (ERROR "Illegal page length value" INCHES-PER-PAGE))) - -(CL:DEFUN \FASTFX80.OUTPUT-SIGNATURE (FASTFX80STREAM) - - (* ;; "start the file with an identifying signature. Ensure it is not printed by following it with an equal number of ASCII 127's.") - - (* ;; "This will not work if SIGNATURE contains line-ending characters.") - - (LET ((DEL-BYTE 127)) - (FOR BYTE INSTRING \FASTFX80.FILE-SIGNATURE DO (\FASTFX80.BOUT FASTFX80STREAM BYTE)) - (FOR BYTE INSTRING \FASTFX80.FILE-SIGNATURE DO (\FASTFX80.BOUT FASTFX80STREAM DEL-BYTE)))) -(DEFINEQ - -(\FASTFX80.CLOSE - [LAMBDA (FASTFX80STREAM) (* ; "Edited 2-Jun-87 19:11 by Snow") - - (* ;; "close a fast fx80 stream ") - - (WITH-FASTFX80-DATA (DATA FASTFX80STREAM) - (\FASTFX80.OUTCHAR FASTFX80STREAM (CHARCODE CR)) - - (* ;; - "do a bout here because an outchar will cause a new-page which then adds 4 lines to the output.") - - (\FASTFX80.BOUT FASTFX80STREAM (CHARCODE FF)) - (\CLOSEFILE (FASTFX80DATA-BACKINGSTREAM DATA)) - (fetch (STREAM FULLFILENAME) of FASTFX80STREAM]) -) - - - -(* ;; "methods that hack fonts") - -(DEFINEQ - -(\FASTFX80.CHANGEFONT - [LAMBDA (STREAM FONT) (* ; "Edited 14-Aug-87 14:40 by Snow") - - (* ;; "font-change method for the fast fx-80 device") - - (WITH-FASTFX80-DATA (DATA STREAM) - (PROG1 (FASTFX80DATA-FONT DATA) - (COND - (FONT (SETQ FONT (FONTCREATE FONT NIL NIL NIL 'FASTFX80)) - (COND - ((NEQ FONT (FASTFX80DATA-FONT DATA)) - [LET [[ITALICP (FMEMB 'ITALIC (FONTPROP FONT 'FACE] - [BOLDP (FMEMB 'BOLD (FONTPROP FONT 'FACE] - (UNDERLINE-NESS 128) - (ITALIC-NESS 64) - (EXPANDED-NESS 32) - (DOUBLE-STRIKE-NESS 16) - (EMPHASIZED-NESS 8) - (COMPRESSED-NESS 4) - (ELITE-NESS 1) - (PICA-NESS 0) - (SIZE (FONTPROP FONT 'SIZE] - - (* ;; "Send master select code and inform printer of boldness, italicism, and new font size: pica for regular sized fonts, emphasized pica for large fonts.") - - (\FASTFX80.BOUT STREAM (CHARCODE ESC)) - (\FASTFX80.BOUT STREAM (CHARCODE !)) - [\FASTFX80.BOUT STREAM (LOGOR (COND - (ITALICP ITALIC-NESS) - (T PICA-NESS)) - (COND - (BOLDP EMPHASIZED-NESS) - (T PICA-NESS)) - (COND - ((> SIZE 12) - EXPANDED-NESS) - ((<= SIZE 8) - COMPRESSED-NESS) - (T PICA-NESS] - - (* ;; "Set italicness, since FX-80 doesn't support the ITALIC bit in master reset.") - - (\FASTFX80.BOUT STREAM (CHARCODE ESC)) - (COND - (ITALICP (* ; "turn it on") - - (\FASTFX80.BOUT STREAM (CHARCODE 4))) - (T (* ; "turn it off") - - (\FASTFX80.BOUT STREAM (CHARCODE 5] - (CL:SETF (FASTFX80DATA-FONT DATA) - FONT]) - -(\FASTFX80.FONTCREATE - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHARSET) (* hdj "27-Oct-86 14:59") - - (* ;; " create and return a fontdescriptor for a fastfx80 font") - - (LET ((FONTDESC (create FONTDESCRIPTOR - FONTDEVICE _ 'FASTFX80 - FONTFAMILY _ FAMILY - FONTSIZE _ SIZE - FONTFACE _ FACE - ROTATION _ ROTATION - FONTSCALE _ 1 - \SFHeight _ 9 - \SFAscent _ 7 - \SFDescent _ 2))) - (if (\GETCHARSETINFO CHARSET FONTDESC T) - then FONTDESC - else NIL]) - -(\FASTFX80.CREATECHARSET - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHARSET FONTDESC) - (* hdj "27-Oct-86 14:57") - - (* ;; "Create a character set for the fast fx-80. Really only works for char set 0; returns the same info for all sets.") - - (* * (if (NEQ 0 CHARSET) then (ERROR "FX-80 does not support NS characters."))) - - (LET ((WIDTHS (\CREATECSINFOELEMENT))) - (for C from 32 to 254 do (\FSETWIDTH WIDTHS C (\FASTFX80.SUBCHARWIDTH - C SIZE))) - (create CHARSETINFO - WIDTHS _ WIDTHS - IMAGEWIDTHS _ WIDTHS - YWIDTHS _ (\CREATECSINFOELEMENT) - CHARSETASCENT _ (ffetch \SFAscent of FONTDESC) - CHARSETDESCENT _ (ffetch \SFDescent of FONTDESC]) -) - -(CL:DEFUN \FASTFX80.INIT-FONT-PROFILE () - - (* ;; "set up the fonts for the FASTFX80, based on the DISPLAY font profile entries") - - [FOR FONT-CLASS IN '(DEFAULTFONT ITALICFONT BOLDFONT LITTLEFONT TINYFONT BIGFONT COMMENTFONT - TEXTFONT) DO (\ADD-TO-FONTPROFILE FONTPROFILE FONT-CLASS 'FASTFX80 - (\GET-FROM-FONTPROFILE FONTPROFILE FONT-CLASS - 'DISPLAY] - (FONTPROFILE FONTPROFILE) - T) - - - -(* ;; "methods for measuring") - -(DEFINEQ - -(\FASTFX80.STRINGWIDTH - [LAMBDA (FASTFX80STREAM STRING RDTBL) (* hdj " 6-Nov-86 15:15") - - (* ;; - " returns STRING's width, relative to STREAM's current font and the readtable RDTBL") - - (if RDTBL - then (bind (FIRSTFLG _ T) - (SA _ (fetch READSA of RDTBL)) - (ESCAPE-CHAR-WIDTH _ (\FASTFX80.CHARWIDTH FASTFX80STREAM - (fetch (READTABLEP ESCAPECHAR) of RDTBL)) - ) - (SYN _ NIL) for CHARCODE instring STRING - sum (PROG1 (+ (\FASTFX80.CHARWIDTH FASTFX80STREAM CHARCODE) - (IF (AND (fetch (READCODE ESCQUOTE) - of (SETQ SYN (\SYNCODE SA CHARCODE))) - (OR FIRSTFLG (fetch (READCODE INNERESCQUOTE) - of SYN))) - THEN ESCAPE-CHAR-WIDTH - ELSE 0)) - (SETQ FIRSTFLG NIL))) - else (for CHAR instring STRING sum (\FASTFX80.CHARWIDTH FASTFX80STREAM CHAR - ]) - -(\FASTFX80.CHARWIDTH - [LAMBDA (STREAM CHARCODE) (* ; "Edited 4-Feb-87 15:52 by hdj") - - (* ;; " returns the width of CHARCODE, relative to STREAM's current font") - - (WITH-FASTFX80-DATA (DATA STREAM) - (LET [(WIDTH (\FASTFX80.SUBCHARWIDTH (\FASTFX80.TRANSLATE-CHAR CHARCODE) - (FONTPROP (FASTFX80DATA-FONT DATA) - 'SIZE] - (IF (EQ CHARCODE (CHARCODE SPACE)) - THEN (FIXR (TIMES WIDTH (FASTFX80DATA-SPACEFACTOR DATA))) - ELSE WIDTH]) - -(\FASTFX80.SUBCHARWIDTH - [LAMBDA (CHARCODE SIZE) (* ; "Edited 21-Jan-88 12:10 by jds") - - (* ;; "Computes the size for a single character in Fast-FX80 mode.") - - (COND - ((IGEQ CHARCODE 31) (* ; - "Only non-control characters have real widths") - - (COND - ((GREATERP SIZE 12) (* ; - "Fonts bigger than 12 are printed EXPANDED.") - - 14) - ((<= SIZE 8) (* ; - "Sizes 8 & under are printed compressed, 17.16 pitch, or 4.19 dots per") - - 4) - (T (* ; - "Should really be 7.2 dots, but this is close.") - - 7))) - (T 0]) -) - -(CL:DEFUN \FASTFX80.SPACEFACTOR (FASTFX80STREAM FACTOR) - - (* ;; "returns/sets the width of the space character (32 ASCII) for FASTFX80STREAM") - - [WITH-FASTFX80-DATA (DATA FASTFX80STREAM) - (PROG1 (FASTFX80DATA-SPACEFACTOR DATA) - (AND FACTOR (IF (NUMBERP FACTOR) - THEN (CL:SETF (FASTFX80DATA-SPACEFACTOR DATA) - FACTOR) - ELSE (\ILLEGAL.ARG FACTOR))))]) - - - -(* ;; "methods that affect the current position/size of drawing surface") - -(DEFINEQ - -(\FASTFX80.CLIPPINGREGION - [LAMBDA (STREAM REGION) (* ; "Edited 8-Dec-86 15:16 by hdj") - - (* ;; - "Returns old clipping region and sets new one. will never set onelarger than the paper size.") - - (DECLARE (GLOBALVARS \FASTFX80.PAGESIZE)) - (WITH-FASTFX80-DATA (DATA STREAM) - (PROG1 (COPY (FASTFX80DATA-CLIPPINGREGION DATA)) - (AND REGION (CL:SETF (FASTFX80DATA-CLIPPINGREGION DATA) - (INTERSECTREGIONS REGION (CREATEREGION 0 0 ( - FASTFX80DATA-PAPER-WIDTH - DATA) - (FASTFX80DATA-PAPER-HEIGHT - DATA]) - -(\FASTFX80.MOVETO - [LAMBDA (STREAM X Y) (* hdj "27-Oct-86 11:40") - - (* ;; " move to (X,Y) on STREAM's drawing surface") - - (\FASTFX80.XPOSITION STREAM X) - (\FASTFX80.YPOSITION STREAM Y]) - -(\FASTFX80.XPOSITION - [LAMBDA (FASTFX80STREAM XPOS) (* hdj "20-Nov-86 17:50") - - (* ;; "Return old x-position, optionally move to new one. If new position would lie outside the clipping region, set the virtual x position, but don't change the real x position or move the printer's print head.") - - (WITH-FASTFX80-DATA - (DATA FASTFX80STREAM) - (LET ((OLD-REAL-XPOS (FASTFX80DATA-REAL-XPOS DATA)) - (OLD-VIRTUAL-XPOS (FASTFX80DATA-VIRTUAL-XPOS DATA)) - (CLIPPINGREGION (FASTFX80DATA-CLIPPINGREGION DATA))) - (PROG1 OLD-VIRTUAL-XPOS - (if XPOS - then - - (* ;; "Space or backspace till new x-pos approximates desired position") - - (LET ((LEFT-BORDER (fetch (REGION LEFT) of CLIPPINGREGION)) - (RIGHT-BORDER (fetch (REGION RIGHT) of CLIPPINGREGION))) - (if (AND (LEQ LEFT-BORDER XPOS) - (LEQ XPOS RIGHT-BORDER)) - then (if (AND (EQP (FASTFX80DATA-LEFTMARGIN DATA) - 0) - (EQP XPOS 0)) - then (* ; "if we can, just send a CR") - - (\FASTFX80.BOUT FASTFX80STREAM - (CHARCODE CR)) - else (* ; "otherwise do the full schmeer") - - (\FASTFX80.SMART-XPOSITION OLD-REAL-XPOS XPOS - FASTFX80STREAM)) - (CL:SETF (FASTFX80DATA-REAL-XPOS DATA) - XPOS))) - (CL:SETF (FASTFX80DATA-VIRTUAL-XPOS DATA) - XPOS]) - -(\FASTFX80.YPOSITION - [LAMBDA (STREAM YPOS) (* ; "Edited 9-Dec-86 22:43 by hdj") - - (* ;; "Return old y position, optionally move to new one. If new position would lie outside the clipping region, set the virtual Y position, but don't change the real Y position or move the printer's print head.") - - (WITH-FASTFX80-DATA - (DATA STREAM) - (LET ((OLD-REAL-YPOS (FASTFX80DATA-REAL-YPOS DATA)) - (OLD-VIRTUAL-YPOS (FASTFX80DATA-VIRTUAL-YPOS DATA)) - (CLIPPINGREGION (FASTFX80DATA-CLIPPINGREGION DATA))) - (PROG1 OLD-VIRTUAL-YPOS - (if YPOS - then [if (NOT (EQP YPOS OLD-REAL-YPOS)) - then (LET ((TOP-BORDER (fetch (REGION TOP) of - CLIPPINGREGION - )) - (BOTTOM-BORDER (fetch (REGION BOTTOM) - of CLIPPINGREGION))) - (if (NOT (EQP YPOS OLD-REAL-YPOS)) - then (LET [(DOTS-TO-MOVE (FIX (- YPOS - OLD-REAL-YPOS - ] - (if (MINUSP DOTS-TO-MOVE) - then ( - \FASTFX80.ADVANCE.PAPER - STREAM DOTS-TO-MOVE) - else ( - \FASTFX80.BACKUP.PAPER - STREAM DOTS-TO-MOVE))) - (CL:SETF (FASTFX80DATA-REAL-YPOS DATA) - YPOS] - (CL:SETF (FASTFX80DATA-VIRTUAL-YPOS DATA) - YPOS]) - -(\FASTFX80.BACKUP.PAPER - [LAMBDA (STREAM DOTS) (* hdj "28-Oct-86 12:59") - - (* ;; "backup the page DOTS raster lines") - - (SETQ DOTS (TIMES 3 (ABS DOTS))) - (while (GREATERP DOTS 0) do (\FASTFX80.BOUT STREAM (CHARCODE ESC)) - (\FASTFX80.BOUT STREAM (CHARCODE j)) - (\FASTFX80.BOUT STREAM (LET ((MAXBACKUP (MIN DOTS 255))) - (add DOTS (MINUS MAXBACKUP - )) - MAXBACKUP]) - -(\FASTFX80.ADVANCE.PAPER - [LAMBDA (STREAM DOTS) (* hdj "28-Oct-86 12:58") - - (* ;; "advance the page DOTS raster lines") - - (SETQ DOTS (TIMES 3 (ABS DOTS))) - (while (GREATERP DOTS 0) do (\FASTFX80.BOUT STREAM (CHARCODE ESC)) - (\FASTFX80.BOUT STREAM (CHARCODE J)) - (\FASTFX80.BOUT STREAM (LET ((MAXADVANCE (MIN DOTS 255))) - (add DOTS (MINUS - MAXADVANCE - )) - MAXADVANCE]) - -(\FASTFX80.NEWPAGE - [LAMBDA (FASTFX80STREAM) (* ; "Edited 17-Dec-86 10:32 by hdj") - - (* ;; "End the old page, start a new one") - - (* ;; "Just send a form-feed") - - (\FASTFX80.BOUT FASTFX80STREAM (CHARCODE FF)) - (\FASTFX80.STARTPAGE FASTFX80STREAM]) - -(\FASTFX80.OUTCHAR - [LAMBDA (FASTFX80STREAM CHARCODE) (* ; "Edited 12-Feb-87 09:08 by jds") - - (* ;; "outcharfn for fastfx80 imagestreams") - - (LET ((TRANSLATED-CHAR (\FASTFX80.TRANSLATE-CHAR CHARCODE))) - (WITH-FASTFX80-DATA (DATA FASTFX80STREAM) - (SELCHARQ CHARCODE - (^L (\FASTFX80.NEWPAGE FASTFX80STREAM)) - ((CR EOL) - (\FASTFX80.NEWLINE FASTFX80STREAM)) - (LF (\FASTFX80.LINEFEED FASTFX80STREAM)) - (SPACE [\FASTFX80.XPOSITION FASTFX80STREAM (+ (\FASTFX80.XPOSITION - FASTFX80STREAM) - (\FASTFX80.CHARWIDTH - FASTFX80STREAM - (CHARCODE SPACE] - (COND - ((> (FASTFX80DATA-VIRTUAL-XPOS DATA) - (FASTFX80DATA-RIGHTMARGIN DATA)) - (\FASTFX80.NEWLINE FASTFX80STREAM)))) - (COND - ((GREATERP CHARCODE 32) - - (* ;; "only print graphic characters") - - (LET ((CHARWIDTH (\FASTFX80.CHARWIDTH FASTFX80STREAM TRANSLATED-CHAR))) - - (* ;; "if character will be visible, output it") - - (COND - ((\FASTFX80.CUR-POS-VISIBLE? DATA) - (\FASTFX80.BOUT FASTFX80STREAM TRANSLATED-CHAR))) - (CL:INCF (FASTFX80DATA-REAL-XPOS DATA) - CHARWIDTH) - (CL:INCF (FASTFX80DATA-VIRTUAL-XPOS DATA) - CHARWIDTH) - - (* ;; "if we've passed the margin, DING!, do a newline") - - (COND - ((> (FASTFX80DATA-VIRTUAL-XPOS DATA) - (FASTFX80DATA-RIGHTMARGIN DATA)) - (\FASTFX80.NEWLINE FASTFX80STREAM]) - -(\FASTFX80.NEWLINE - [LAMBDA (FASTFX80STREAM) (* hdj "11-Nov-86 14:02") - - (* ;; -"perform a newline on a fastfx80 imagestream. if we go below the bottom margin, start a new page.") - - (DECLARE (GLOBALVARS \FASTFX80.LINEHEIGHT)) - (WITH-FASTFX80-DATA (DATA FASTFX80STREAM) - (LET ((NEW-Y (- (FASTFX80DATA-VIRTUAL-YPOS DATA) - \FASTFX80.LINEHEIGHT))) - (if (< NEW-Y (FASTFX80DATA-BOTTOMMARGIN DATA)) - then (\FASTFX80.NEWPAGE FASTFX80STREAM) - else (* ; "move to the left margin") - - (\FASTFX80.XPOSITION FASTFX80STREAM (FASTFX80DATA-LEFTMARGIN DATA)) - (FREPLACE (STREAM CHARPOSITION) OF FASTFX80STREAM WITH 0) - (* ; "then move down or newpage") - - (\FASTFX80.YPOSITION FASTFX80STREAM NEW-Y]) - -(\FASTFX80.LINEFEED - [LAMBDA (FASTFX80STREAM) (* hdj " 6-Nov-86 15:38") - - (* ;; "move down 1 line, leaving the x-position alone") - - (DECLARE (GLOBALVARS \FASTFX80.LINEHEIGHT)) - (WITH-FASTFX80-DATA (DATA FASTFX80STREAM) - (LET ((NEW-YPOS (- (FASTFX80DATA-VIRTUAL-YPOS DATA) - \FASTFX80.LINEHEIGHT)) - (OLD-XPOS (FASTFX80DATA-VIRTUAL-XPOS DATA))) - (if (< NEW-YPOS (FASTFX80DATA-BOTTOMMARGIN DATA)) - then (* ; "move to a new page") - - (\FASTFX80.NEWPAGE FASTFX80STREAM) - (* ; "restore the old x position") - - (\FASTFX80.XPOSITION FASTFX80STREAM OLD-XPOS) - else (* ; "move down") - - (\FASTFX80.YPOSITION FASTFX80STREAM NEW-YPOS]) - -(\FASTFX80.DRAWLINE - [LAMBDA (STREAM X1 Y1 X2 Y2 WIDTH OPERATION COLOR DASHING) - (* hdj "31-Oct-86 14:09") - - (* ;; "dummy drawline for the fast fx80 device") - - (MOVETO X2 Y2 STREAM]) -) - -(CL:DEFUN \FASTFX80.STARTPAGE (FASTFX80STREAM) - (WITH-FASTFX80-DATA (DATA FASTFX80STREAM) - (LET [(ASCENT (FONTPROP (DSPFONT NIL FASTFX80STREAM) - 'ASCENT] - - (* ;; "set the %"actual%" position of printhead on paper after a newpage, then let the driver figure out how to get to (leftmargin, topmargin).") - - (CL:SETF (FASTFX80DATA-VIRTUAL-XPOS DATA) - 0) - (CL:SETF (FASTFX80DATA-REAL-XPOS DATA) - 0) - (CL:SETF (FASTFX80DATA-VIRTUAL-YPOS DATA) - (FASTFX80DATA-PAPER-HEIGHT DATA)) - (CL:SETF (FASTFX80DATA-REAL-YPOS DATA) - (FASTFX80DATA-PAPER-HEIGHT DATA)) - - (* ;; "move the paper") - - (MOVETO (FASTFX80DATA-LEFTMARGIN DATA) - (- (FASTFX80DATA-TOPMARGIN DATA) - ASCENT) - FASTFX80STREAM) - FASTFX80STREAM))) - -(CL:DEFUN \FASTFX80.SMART-XPOSITION (CURRENT-XPOS DESIRED-XPOS FASTFX80STREAM) - - (* ;; "if it would create less output to space from the left margin, rather than to backspace from the current position, do so") - - (LET* ((SPACEWIDTH (\FASTFX80.CHARWIDTH FASTFX80STREAM (CHARCODE SP))) - (CURRENT-XPOS-IN-SPACES (IQUOTIENT CURRENT-XPOS SPACEWIDTH)) - (DESIRED-XPOS-IN-SPACES (IQUOTIENT DESIRED-XPOS SPACEWIDTH)) - (NUM-BACKSPACES-NEEDED (- CURRENT-XPOS-IN-SPACES DESIRED-XPOS-IN-SPACES))) - (IF (< NUM-BACKSPACES-NEEDED DESIRED-XPOS-IN-SPACES) - THEN - (* ;; "if backspacing's cheaper, backspace away") - - (\FASTFX80.HORIZONTAL (- NUM-BACKSPACES-NEEDED) - FASTFX80STREAM) - ELSE - (* ;; "otherwise, go to the left margin... ") - - (\FASTFX80.BOUT FASTFX80STREAM (CHARCODE CR)) - - (* ;; "... and then space to the right spot") - - (\FASTFX80.HORIZONTAL DESIRED-XPOS-IN-SPACES FASTFX80STREAM)))) - -(CL:DEFUN \FASTFX80.TOPMARGIN (STREAM &OPTIONAL YPOSITION) - [WITH-FASTFX80-DATA (DATA STREAM) - (PROG1 (FASTFX80DATA-TOPMARGIN DATA) - (AND YPOSITION (IF (SMALLP YPOSITION) - THEN (CL:SETF (FASTFX80DATA-TOPMARGIN DATA) - YPOSITION) - ELSE (\ILLEGAL.ARG YPOSITION))))]) - -(CL:DEFUN \FASTFX80.BOTTOMMARGIN (STREAM &OPTIONAL YPOSITION) - [WITH-FASTFX80-DATA (DATA STREAM) - (PROG1 (FASTFX80DATA-BOTTOMMARGIN DATA) - (AND YPOSITION (IF (SMALLP YPOSITION) - THEN (CL:SETF (FASTFX80DATA-BOTTOMMARGIN DATA) - YPOSITION) - ELSE (\ILLEGAL.ARG YPOSITION))))]) - -(CL:DEFUN \FASTFX80.LEFTMARGIN (STREAM &OPTIONAL XPOSITION) - [WITH-FASTFX80-DATA (DATA STREAM) - (PROG1 (FASTFX80DATA-LEFTMARGIN DATA) - (AND XPOSITION (IF (SMALLP XPOSITION) - THEN (CL:SETF (FASTFX80DATA-LEFTMARGIN DATA) - XPOSITION) - ELSE (\ILLEGAL.ARG XPOSITION))))]) - -(CL:DEFUN \FASTFX80.RIGHTMARGIN (STREAM &OPTIONAL XPOSITION) - [WITH-FASTFX80-DATA (DATA STREAM) - (PROG1 (FASTFX80DATA-RIGHTMARGIN DATA) - (AND XPOSITION (IF (SMALLP XPOSITION) - THEN (CL:SETF (FASTFX80DATA-RIGHTMARGIN DATA) - XPOSITION) - ELSE (\ILLEGAL.ARG XPOSITION))))]) - -(DEFMACRO \FASTFX80.CUR-POS-VISIBLE? (FASTFX80DATA) - `(INSIDEP (FASTFX80DATA-CLIPPINGREGION ,FASTFX80DATA) - (FASTFX80DATA-REAL-XPOS ,FASTFX80DATA) - (FASTFX80DATA-REAL-YPOS ,FASTFX80DATA))) - -(CL:DEFUN \FASTFX80.HORIZONTAL (SPACES FASTFX80STREAM) - - (* ;; "print SPACES space characters if SPACES > 0, print SPACES backspaces if < 0, and do nothing if SPACES=0.") - - [if (MINUSP SPACES) - then (for SPACE from 1 to (ABS SPACES) by 1 do (\FASTFX80.BOUT FASTFX80STREAM (CHARCODE BS))) - else (for SPACE from 1 to SPACES by 1 do (\FASTFX80.BOUT FASTFX80STREAM (CHARCODE SP]) - - - -(* ;; "printer code") - - -(CL:DEFUN \FASTFX80.SEND (PRINTER FILENAME &OPTIONAL OPTIONS) - - (* ;; "send the file designated by FILENAME to PRINTER, obeying OPTIONS. Since we only have one fx-80 per machine, ignore PRINTER and send to FASTFX80-DEFAULT-DESTINATION") - - (DECLARE (GLOBALVARS FASTFX80-DEFAULT-DESTINATION)) - [LET [(COPIES (LISTGET OPTIONS '%#COPIES] - (FOR COPY FROM 1 TO COPIES DO - (* ;; "allow the user to abort it while running") - - (WITH-ABORT-WINDOW ((THIS.PROCESS) - FILENAME PRINTER COPY) - (COPYFILE FILENAME FASTFX80-DEFAULT-DESTINATION - '((TYPE FASTFX80]) - -(CL:DEFUN MAKE-FASTFX80 (FILE FASTFX80FILE &OPTIONAL FONTS HEADING TABS OPTIONS) - - (* ;; "turn FILE into a FASTFX80 master") - - (TEXTTOIMAGEFILE FILE FASTFX80FILE 'FASTFX80 FONTS HEADING TABS OPTIONS)) - -(CL:DEFUN FASTFX80FILEP (FASTFX80FILE?) - - (* ;; "is FILE (a filename or stream) a fastfx80 file?") - - [LET [(FILE-TYPE (GETFILEINFO FASTFX80FILE? 'TYPE] - (IF (EQ FILE-TYPE 'FASTFX80) - THEN (* ; - "if file has a type, and type=FASTFX80, we win") - T - ELSE (* ; - "no filetype or filetype not FASTFX80, so read the file") - (LET [(STREAM (OPENSTREAM (INTERLISP-NAMESTRING FASTFX80FILE?) - 'INPUT - 'OLD - '(SEQUENTIAL] - - (* ;; "file looks like ESC@ESCCn...") - - (PROG1 [AND (> (GETFILEINFO STREAM 'LENGTH) - (+ 5 (NCHARS \FASTFX80.FILE-SIGNATURE))) - - (* ;; "yuck...") - - (EQ (CHARCODE ESC) - (BIN STREAM)) - (EQ (CHARCODE @) - (BIN STREAM)) - (EQ (CHARCODE ESC) - (BIN STREAM)) - (EQ (CHARCODE C) - (BIN STREAM)) - (BIN STREAM) - (FOR CH INSTRING \FASTFX80.FILE-SIGNATURE - ALWAYS (EQ CH (BIN STREAM] - (CLOSEF STREAM]) - -(CL:DEFUN \FASTFX80.CANNOT-PRINT-BITMAPS (&OPTIONAL FILE BITMAP SCALEFACTOR REGION ROTATION TITLE) - (PRINTOUT PROMPTWINDOW "Sorry, FASTFX80 cannot render graphics." T "Use HQFX80 instead.")) -(DEFINEQ - -(\FASTFX80.CONVERT-TEDIT - [LAMBDA (TEDIT-FILE IMAGESTREAM) (* ; "Edited 11-Dec-86 17:29 by hdj") - - (* ;; "Send the text to the printer.") - - (SETQ TEDIT-FILE (OPENTEXTSTREAM TEDIT-FILE)) - (TEDIT.FORMAT.HARDCOPY TEDIT-FILE IMAGESTREAM T NIL NIL NIL 'FASTFX80) - (CLOSEF? IMAGESTREAM) - IMAGESTREAM]) -) - - - -(* ;; "Character transmission method") - -(DEFINEQ - -(\FASTFX80.BOUT - [LAMBDA (FASTFX80STREAM BYTE) (* hdj "27-Oct-86 11:51") - - (* ;; "send a byte to the fx80") - - (WITH-FASTFX80-DATA (DATA FASTFX80STREAM) - (BOUT (FASTFX80DATA-BACKINGSTREAM DATA) - BYTE]) -) - - - -(* ;; "Miscellany") - - -(DEFMACRO \FASTFX80.TRANSLATE-CHAR (CHARCODE) - `(SELCHARQ ,CHARCODE - (357,146 (* ; "bullet") - (CHARCODE *)) - (357,45 (* ; "em-dash") - 95) - (357,44 (* ; "en-dash") - 45) - (\CHAR8CODE ,CHARCODE))) - -(DEFMACRO WITH-FASTFX80-DATA ((VAR-NAME STREAM) - &BODY - (BODY DECLS ENV)) - `(LET [(,VAR-NAME (FETCH (STREAM IMAGEDATA) OF ,STREAM] - ,@DECLS - ,@BODY)) -(DECLARE%: EVAL@COMPILE - -(RPAQQ \FASTFX80.DOTSPERINCH 72) - -(RPAQQ \FASTFX80.LINESPERINCH 6) - -(RPAQQ \FASTFX80.LINEHEIGHT 12) - -(RPAQ \FASTFX80.FILE-SIGNATURE "FastFX-80/Xerox/1.0 ") - - -(CONSTANTS (\FASTFX80.DOTSPERINCH 72) - (\FASTFX80.LINESPERINCH 6) - (\FASTFX80.LINEHEIGHT 12) - (\FASTFX80.FILE-SIGNATURE "FastFX-80/Xerox/1.0 ")) -) - -(RPAQ? FASTFX80-DEFAULT-DESTINATION "{TTY}") - -(RPAQ? \FASTFX80.INCHES-PER-PAGE 11) - -(RPAQ? \FASTFX80.INCHES-PER-LINE 8.5) - - - -(* ;; "need to load these exports") - -(DECLARE%: EVAL@LOAD EVAL@COMPILE DONTCOPY - -(FILESLOAD (LOADCOMP) - ADISPLAY) -) - -(RPAQQ FX-80.HIGH-QUALITY-DRIVERCOMS - [ - (* ;; "High-quality driver") - - - (* ;; "") - - (STRUCTURES HQFX80DATA) - (FNS \HQFX80.INIT) - (COMS - (* ;; "imagestream methods") - - (COMS - (* ;; "opening/closing imagestream") - - (COMS (FNS OPENHQFX80STREAM) - (FUNCTIONS \HQFX80.PREAMBLE \HQFX80.RESET-PRINTER \HQFX80.OUTPUT-SIGNATURE) - ) - (FNS \HQFX80.CLOSE)) - (COMS - (* ;; "methods that hack fonts") - - (FNS \HQFX80.FONTCREATE \HQFX80.CHANGEFONT \HQFX80.CREATECHARSET - \HQFX80.CHANGE-CHARSET \HQFX80.READ-FONT-FILE \HQFX80.SEARCH-FONTS) - (FUNCTIONS \HQFX80.INIT-FONT-PROFILE)) - (COMS - (* ;; "methods for measuring") - - (FNS \HQFX80.CHARWIDTH \HQFX80.STRINGWIDTH) - (FUNCTIONS \HQFX80.SPACEFACTOR)) - (COMS - (* ;; "methods that affect the current position/size of drawing surface") - - (FNS \HQFX80.CLIPPINGREGION \HQFX80.LEFTMARGIN \HQFX80.RIGHTMARGIN - \HQFX80.TOPMARGIN \HQFX80.BOTTOMMARGIN \HQFX80.XPOSITION \HQFX80.YPOSITION - \HQFX80.NEWLINE \HQFX80.NEWPAGE \HQFX80.LINEFEED \HQFX80.RESET - \HQFX80.STARTPAGE) - (FUNCTIONS \HQFX80.CUR-POS-VISIBLE?)) - (COMS - (* ;; "graphical operations") - - (RESOURCES \HQFX80.BRUSHBBT) - (FNS \HQFX80.BITBLT \HQFX80.BLTSHADE \HQFX80.DRAWELLIPSE \HQFX80.OPERATION - \HQFX80.DRAWPOINT) - (FNS \HQFX80.DRAWLINE \HQFX80.CLIP-AND-DRAW-LINE \HQFX80.CLIP-AND-DRAW-LINE1) - (COMS (FNS \HQFX80.DRAWCIRCLE \HQFX80.CREATE-BRUSH-BBT) - (FUNCTIONS \HQFX80.DRAW-4-CIRCLE-POINTS)) - (COMS (FNS \HQFX80.FILLCIRCLE \HQFX80.DRAWARC) - (FUNCTIONS \HQFX80.FILL-CIRCLE-BLT)) - (COMS - (* ;; "curve-drawing") - - (FNS \HQFX80.DRAWCURVE \HQFX80.DRAWCURVE2 \HQFX80.DRAWCURVE3 - \HQFX80.LINEWITHBRUSH) - (FNS \HQFX80.BBTCURVEPT) - (MACROS \HQFX80.CURVEPT) - (FUNCTIONS \HQFX80.SMOOTH-CURVE .SETUP.FOR.\HQFX80.BBTCURVEPT.))) - (COMS - (* ;; "character printing methods") - - (FNS \HQFX80.OUTCHAR \HQFX80.BLT-CHAR)) - (COMS - (* ;; "printer code") - - (FNS \HQFX80.DUMP-PAGE-BUFFER \HQFX80.ADVANCE-8-LINES) - (FUNCTIONS \HQFX80.EIGHT-LINES-BLANK? \HQFX80.BITMAP-LDB \HQFX80.CLEAR-SCANLINE - \HQFX80.CLEAR-WORD-BOX) - (FUNCTIONS \HQFX80.SEND MAKE-HQFX80 HQFX80FILEP)) - (COMS - (* ;; "window hardcopy") - - (FNS \HQFX80.BITMAP-FILE \HQFX80.CONVERT-TEDIT)) - (COMS - (* ;; "character transmission method") - - (FNS \HQFX80.BOUT)) - (COMS - (* ;; "handling font-information caching") - - (FNS \HQFX80.FIX-LINE-LENGTH \HQFX80.FIX-FONT \HQFX80.FIX-Y) - (FUNCTIONS \HQFX80.INVALIDATE-CACHE \HQFX80.INVALIDATE-FONT-CACHE - \HQFX80.GET-CACHED-CHAR-WIDTH \HQFX80.GET-CHARACTER-OFFSET)) - (COMS - (* ;; "auxiliary functions") - - (FUNCTIONS \HQFX80.GRAPHICS-MODE) - (FNS \HQFX80.PRINTER-MODE) - (FUNCTIONS WITH-HQFX80-DATA)) - - (* ;; "and miscellany") - - (CONSTANTS (\HQFX80.FILE-SIGNATURE "HQFX-80/Xerox/1.0 ") - (\HQFX80.1-TO-1-MODE-DPI 72) - (\HQFX80.LOW-SPEED-DOUBLE-MODE-DPI 120)) - (INITVARS (\HQFX80.INCHES-PER-PAGE 11) - (\HQFX80.INCHES-PER-LINE 8.5) - (HQFX80-DEFAULT-DESTINATION "{TTY}") - (HQFX80-FONT-EXTENSIONS DISPLAYFONTEXTENSIONS) - (HQFX80-FONT-DIRECTORIES DISPLAYFONTDIRECTORIES) - (HQFX80-FONT-COERCIONS DISPLAYFONTCOERCIONS) - (HQFX80-MISSING-FONT-COERCIONS DISPLAYFONTCOERCIONS]) - - - -(* ;; "High-quality driver") - - - - -(* ;; "") - - -(CL:DEFSTRUCT HQFX80DATA - - (* ;; "the imagedata vector for an HQFX80 imagestream") - - BACKINGBITMAP - BACKINGSTREAM - (XPOS 0) - (YPOS 0) - (CLIPPINGREGION (create REGION)) - LINEFEED RIGHTMARGIN (LEFTMARGIN 0) - TOPMARGIN - (BOTTOMMARGIN 0) - OPERATION SOURCETYPE (PILOTBBT (create PILOTBBT - PBTDISJOINT _ T)) - (TEXTURE WHITESHADE) - FONT - (CHARSET-ASCENT-CACHE MAX.SMALLP) - WIDTHS-CACHE OFFSETS-CACHE IMAGE-WIDTHS-CACHE (CHARSET-CACHE MAX.SMALLP) - CHARSET-DESCENT-CACHE CHARHEIGHTDELTA (SPACEWIDTH 1.0) (* ; - "a misnomer -- this is actually the space factor, not its width") - [SERIALIZING-BOX (fetch (ARRAYP BASE) of (ARRAY 1 'BYTE] - SERIALIZING-PILOTBBT SCRATCH-SCANLINE SCRATCH-SCANLINE-PILOTBBT [EIGHT-LINES-BLANK - (fetch (ARRAYP BASE) - of (ARRAY 1 'WORD] - EIGHT-LINES-BLANK-PILOTBBT COMPRESSED?) -(DEFINEQ - -(\HQFX80.INIT - [LAMBDA NIL (* ; "Edited 3-Feb-87 17:23 by hdj") - - (* ;; "Initializes global variables for the FX80") - - (DECLARE (GLOBALVARS DEFAULTPRINTINGHOST IMAGESTREAMTYPES PRINTERTYPES PRINTFILETYPES - \HQFX80.IMAGEOPS \HQFX80.FDEV)) - (SETQ \HQFX80.FDEV (create FDEV - DEVICENAME _ (LIST 'HQFX80 'PRINTER) - CLOSEFILE _ (FUNCTION NILL) - BOUT _ (FUNCTION \HQFX80.OUTCHAR))) - (SETQ \HQFX80.IMAGEOPS (create IMAGEOPS - IMAGETYPE _ 'HQFX80 - IMFONT _ (FUNCTION \HQFX80.CHANGEFONT) - IMLEFTMARGIN _ (FUNCTION \HQFX80.LEFTMARGIN) - IMRIGHTMARGIN _ (FUNCTION \HQFX80.RIGHTMARGIN) - IMTOPMARGIN _ (FUNCTION \HQFX80.TOPMARGIN) - IMBOTTOMMARGIN _ (FUNCTION \HQFX80.BOTTOMMARGIN) - IMLINEFEED _ (FUNCTION \HQFX80.LINEFEED) - IMXPOSITION _ (FUNCTION \HQFX80.XPOSITION) - IMYPOSITION _ (FUNCTION \HQFX80.YPOSITION) - IMCLOSEFN _ (FUNCTION \HQFX80.CLOSE) - IMDRAWCURVE _ (FUNCTION \HQFX80.DRAWCURVE) - IMFILLCIRCLE _ (FUNCTION \HQFX80.FILLCIRCLE) - IMDRAWLINE _ (FUNCTION \HQFX80.DRAWLINE) - IMDRAWELLIPSE _ (FUNCTION \HQFX80.DRAWELLIPSE) - IMDRAWCIRCLE _ (FUNCTION \HQFX80.DRAWCIRCLE) - IMBITBLT _ (FUNCTION \HQFX80.BITBLT) - IMBLTSHADE _ (FUNCTION \HQFX80.BLTSHADE) - IMNEWPAGE _ (FUNCTION \HQFX80.NEWPAGE) - IMSCALE _ [FUNCTION (LAMBDA NIL 1] - IMSPACEFACTOR _ (FUNCTION \HQFX80.SPACEFACTOR) - IMFONTCREATE _ 'HQFX80 - IMCOLOR _ (FUNCTION NILL) - IMBACKCOLOR _ (FUNCTION NILL) - IMOPERATION _ (FUNCTION \HQFX80.OPERATION) - IMSTRINGWIDTH _ (FUNCTION \HQFX80.STRINGWIDTH) - IMCHARWIDTH _ (FUNCTION \HQFX80.CHARWIDTH) - IMCLIPPINGREGION _ (FUNCTION \HQFX80.CLIPPINGREGION) - IMRESET _ (FUNCTION \HQFX80.RESET) - IMDRAWPOINT _ (FUNCTION \HQFX80.DRAWPOINT) - IMDRAWARC _ (FUNCTION \HQFX80.DRAWARC) - IMFILLPOLYGON _ (FUNCTION POLYSHADE.BLT))) - [push IMAGESTREAMTYPES (COPYALL '(HQFX80 (OPENSTREAM OPENHQFX80STREAM) - (FONTCREATE \HQFX80.FONTCREATE) - (CREATECHARSET \HQFX80.CREATECHARSET) - (FONTSAVAILABLE \HQFX80.SEARCH-FONTS] - [push PRINTERTYPES (COPYALL '((HQFX80) - (CANPRINT (HQFX80)) - (STATUS TRUE) - (PROPERTIES NILL) - (SEND \HQFX80.SEND) - (BITMAPSCALE NIL) - (BITMAPFILE (\HQFX80.BITMAP-FILE FILE BITMAP SCALEFACTOR REGION - ROTATION TITLE] - [push PRINTFILETYPES (COPYALL '(HQFX80 (TEST HQFX80FILEP) - (EXTENSION (HQFX80)) - (CONVERSION (TEXT MAKE-HQFX80 TEDIT \HQFX80.CONVERT-TEDIT] - (push DEFAULTPRINTINGHOST (LIST 'HQFX80 'HQFX80)) - (PUTPROP 'HQFX80 'PRINTERTYPE 'HQFX80) - (\HQFX80.INIT-FONT-PROFILE) - T]) -) - - - -(* ;; "imagestream methods") - - - - -(* ;; "opening/closing imagestream") - -(DEFINEQ - -(OPENHQFX80STREAM - [LAMBDA (FILENAME OPTIONS) (* ; "Edited 29-May-87 19:30 by Snow") - - (* ;; "Opens an imagestream on a high-quality FX80") - - (LET* ([BACKING (OPENSTREAM FILENAME 'OUTPUT NIL '((SEQUENTIAL T) - (TYPE HQFX80] - (COMPRESSED? (LISTGET OPTIONS 'COMPRESSED)) - [DOTS-PER-LINE (FIX (TIMES \HQFX80.INCHES-PER-LINE (if COMPRESSED? - then - \HQFX80.LOW-SPEED-DOUBLE-MODE-DPI - else \HQFX80.1-TO-1-MODE-DPI] - (DOTS-PER-PAGE (ITIMES 8 (CL:CEILING (FIX (TIMES \HQFX80.INCHES-PER-PAGE - (if COMPRESSED? - then - \HQFX80.LOW-SPEED-DOUBLE-MODE-DPI - else \HQFX80.1-TO-1-MODE-DPI))) - 8))) - (BACKING-BITMAP (BITMAPCREATE DOTS-PER-LINE DOTS-PER-PAGE)) - (BACKING-BITMAP-WORD-WIDTH (fetch (BITMAP BITMAPRASTERWIDTH) of BACKING-BITMAP)) - (DATA (MAKE-HQFX80DATA :BACKINGSTREAM BACKING :CLIPPINGREGION (CREATEREGION 0 0 - DOTS-PER-LINE - DOTS-PER-PAGE) - :BACKINGBITMAP BACKING-BITMAP :RIGHTMARGIN DOTS-PER-LINE :TOPMARGIN - (- DOTS-PER-PAGE 15) - :BOTTOMMARGIN 30 :PILOTBBT (create PILOTBBT - PBTDISJOINT _ T - PBTDESTBPL _ (UNFOLD - BACKING-BITMAP-WORD-WIDTH - BITSPERWORD)) - :SCRATCH-SCANLINE - (fetch (BITMAP BITMAPBASE) of (BITMAPCREATE DOTS-PER-LINE 1)) - :OPERATION - 'REPLACE :SOURCETYPE 'INPUT :COMPRESSED? COMPRESSED?)) - (HQFX80STREAM (create STREAM - FULLFILENAME _ (FULLNAME BACKING) - DEVICE _ \HQFX80.FDEV - ACCESS _ 'OUTPUT - OUTCHARFN _ (FUNCTION \HQFX80.OUTCHAR) - STRMBOUTFN _ (FUNCTION \HQFX80.OUTCHAR) - IMAGEOPS _ \HQFX80.IMAGEOPS - USERCLOSEABLE _ T - USERVISIBLE _ T - IMAGEDATA _ DATA))) - - (* ;; - "set up the BitBLT table that transforms 8-bit columns of bitmap data into single BOUT-able bytes") - - (CL:SETF (HQFX80DATA-SERIALIZING-PILOTBBT DATA) - (create PILOTBBT - PBTDISJOINT _ T - PBTDEST _ (HQFX80DATA-SERIALIZING-BOX DATA) - PBTWIDTH _ 1 - PBTHEIGHT _ 8 - PBTSOURCEBPL _ (UNFOLD BACKING-BITMAP-WORD-WIDTH BITSPERWORD) - PBTDESTBPL _ 1)) - - (* ;; "set up the BitBLT table that ORs together eight sequential scanlines (for blank-line group detection) into one scanline") - - (CL:SETF (HQFX80DATA-SCRATCH-SCANLINE-PILOTBBT DATA) - (create PILOTBBT - PBTDISJOINT _ T - PBTDEST _ (HQFX80DATA-SCRATCH-SCANLINE DATA) - PBTWIDTH _ (UNFOLD BACKING-BITMAP-WORD-WIDTH BITSPERWORD) - PBTHEIGHT _ 8 - PBTSOURCEBPL _ (UNFOLD BACKING-BITMAP-WORD-WIDTH BITSPERWORD) - PBTDESTBPL _ 0 - PBTSOURCEBIT _ 0 - PBTDESTBIT _ 0 - PBTOPERATION _ 2)) - - (* ;; "set up the BitBLT table that ORs one scanline into one 16-bit word") - - (CL:SETF (HQFX80DATA-EIGHT-LINES-BLANK-PILOTBBT DATA) - (create PILOTBBT - PBTDISJOINT _ T - PBTSOURCE _ (HQFX80DATA-SCRATCH-SCANLINE DATA) - PBTDEST _ (HQFX80DATA-EIGHT-LINES-BLANK DATA) - PBTWIDTH _ BITSPERWORD - PBTHEIGHT _ (FOLDHI DOTS-PER-LINE BITSPERWORD) - PBTSOURCEBPL _ BITSPERWORD - PBTDESTBPL _ 0 - PBTSOURCEBIT _ 0 - PBTDESTBIT _ 0 - PBTOPERATION _ 2)) - - (* ;; "make the backing file invisible") - - (replace (STREAM USERVISIBLE) of BACKING with NIL) - - (* ;; "put the preamble on the master") - - (\HQFX80.PREAMBLE HQFX80STREAM) - HQFX80STREAM]) -) - -(CL:DEFUN \HQFX80.PREAMBLE (HQFX80STREAM) - - (* ;; "start an HQFX80 master") - - (DECLARE (GLOBALVARS \HQFX80.INCHES-PER-PAGE)) - (\HQFX80.RESET-PRINTER HQFX80STREAM \HQFX80.INCHES-PER-PAGE) - (\HQFX80.OUTPUT-SIGNATURE HQFX80STREAM) - (DSPFONT (DEFAULTFONT 'HQFX80) - HQFX80STREAM) - (\HQFX80.STARTPAGE HQFX80STREAM)) - -(CL:DEFUN \HQFX80.RESET-PRINTER (HQFX80STREAM INCHES-PER-PAGE) - - (* ;; "send a reset sequence to the fx-80") - - (IF (AND (<= 1 INCHES-PER-PAGE) - (<= INCHES-PER-PAGE 22)) - THEN - (* ;; "send a reset sequence to the fx-80...") - - (\HQFX80.BOUT HQFX80STREAM (CHARCODE ESC)) - (\HQFX80.BOUT HQFX80STREAM (CHARCODE @)) - - (* ;; "...and set the form length") - - (\HQFX80.BOUT HQFX80STREAM (CHARCODE ESC)) - (\HQFX80.BOUT HQFX80STREAM (CHARCODE C)) - (\HQFX80.BOUT HQFX80STREAM (FIXR (TIMES 6 INCHES-PER-PAGE))) - ELSE (ERROR "Illegal page length value" INCHES-PER-PAGE))) - -(CL:DEFUN \HQFX80.OUTPUT-SIGNATURE (HQFX80TREAM) - - (* ;; "start the file with an identifying signature. Ensure it is not printed by following it with an equal number of ASCII 127's.") - - (* ;; "This will not work if SIGNATURE contains line-ending characters.") - - (LET ((DEL-BYTE 127)) - (FOR BYTE INSTRING \HQFX80.FILE-SIGNATURE DO (\HQFX80.BOUT HQFX80TREAM BYTE)) - (FOR BYTE INSTRING \HQFX80.FILE-SIGNATURE DO (\HQFX80.BOUT HQFX80TREAM DEL-BYTE)))) -(DEFINEQ - -(\HQFX80.CLOSE - [LAMBDA (HQFX80STREAM) (* ; "Edited 21-Jan-88 12:20 by jds") - - (* ;; "do the cleanup prefatory to closing the HQFX80STREAM") - - (WITH-HQFX80-DATA (DATA HQFX80STREAM) (* ; "") - - (LET ((BACKING-STREAM (HQFX80DATA-BACKINGSTREAM DATA))) - (\HQFX80.DUMP-PAGE-BUFFER (HQFX80DATA-BACKINGBITMAP DATA) - HQFX80STREAM) - (\BOUT BACKING-STREAM (CHARCODE ESCAPE)) - (\BOUT BACKING-STREAM (CHARCODE !)) - (\BOUT BACKING-STREAM 0) - (\BOUT BACKING-STREAM (CHARCODE ESCAPE)) - (\BOUT BACKING-STREAM (CHARCODE 5)) - (\CLOSEFILE BACKING-STREAM) - (fetch (STREAM FULLFILENAME) of HQFX80STREAM]) -) - - - -(* ;; "methods that hack fonts") - -(DEFINEQ - -(\HQFX80.FONTCREATE - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHARSET) (* hdj "10-Nov-86 11:30") - - (* ;; "create a font for the hqfx80") - - (LET [(FONTDESC (create FONTDESCRIPTOR - FONTDEVICE _ DEVICE - FONTFAMILY _ FAMILY - FONTSIZE _ SIZE - FONTFACE _ FACE - \SFAscent _ 0 - \SFDescent _ 0 - \SFHeight _ 0 - ROTATION _ ROTATION - FONTDEVICESPEC _ (LIST FAMILY SIZE FACE ROTATION DEVICE] - (AND (\GETCHARSETINFO CHARSET FONTDESC T) - FONTDESC]) - -(\HQFX80.CHANGEFONT - [LAMBDA (HQFX80STREAM FONT) (* ; "Edited 15-Jul-2025 22:01 by rmk") - (* ; "Edited 4-Feb-87 11:48 by hdj") - - (* ;; "sets/returns the font of an HQFX80 imagestream") - - (WITH-HQFX80-DATA - (HQFX80DATA HQFX80STREAM) - (LET ((OLD-FONT (HQFX80DATA-FONT HQFX80DATA))) - - (* ;; "save old value to return, smash new value and update the record.") - - (PROG1 OLD-FONT - [if FONT - then (LET [(NEW-FONT (OR (FONTCREATE FONT NIL NIL NIL HQFX80STREAM T) - (FONTCOPY (HQFX80DATA-FONT HQFX80DATA) - FONT] - - (* ;; - "updating font information is fairly expensive operation. Don't bother unless font has changed.") - - (OR (EQ OLD-FONT NEW-FONT) - (UNINTERRUPTABLY - (CL:SETF (HQFX80DATA-FONT HQFX80DATA) - NEW-FONT) - (CL:SETF (HQFX80DATA-LINEFEED HQFX80DATA) - (IMINUS (fetch (FONTDESCRIPTOR \SFHeight) of NEW-FONT))) - (\HQFX80.FIX-FONT HQFX80STREAM HQFX80DATA))])]) - -(\HQFX80.CREATECHARSET - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHARSET FONTDESC NOSLUG?) - (* ; "Edited 1-Jun-87 13:08 by Snow") - -(* ;;; "Tries to build the csinfo required for CHARSET. Does the necessary coercions.") - -(* ;;; -"NOSLUG? means don't create an empty (slug) csinfo if the charset is not found, just return NIL.") - - (DECLARE (GLOBALVARS HQFX80-FONT-COERCIONS HQFX80-MISSING-FONT-COERCIONS)) - - (* ;; "HQFX80-FONT-COERCIONS is a list of font coercions, in the form ((user-font real-font) (user-font real-font) ...). Each user-font is a list of FAMILY, and optionally SIZE and CHARSET, (e.g., (GACHA) or (GACHA 10) or (GACHA 10 143)), and each real-font is a similar list.") - - (PROG (XCSINFO) - [SETQ XCSINFO (COND - [(PROGN - - (* ;; "Just recursively call ourselves to handle entries in HQFX80-FONT-COERCIONS") - - (for TRANSL in HQFX80-FONT-COERCIONS bind NEWCSINFO USRFONT - REALFONT - when (AND (SETQ USRFONT (CAR TRANSL)) - (EQ FAMILY (CAR USRFONT)) - (OR (NOT (CADR USRFONT)) - (EQ SIZE (CADR USRFONT))) - (OR (NOT (CADDR USRFONT)) - (EQ CHARSET (CADDR USRFONT))) - (SETQ REALFONT (CADR TRANSL)) - (SETQ NEWCSINFO (\HQFX80.CREATECHARSET - (OR (CAR REALFONT) - FAMILY) - (OR (CADR REALFONT) - SIZE) - FACE ROTATION DEVICE - (OR (CADDR REALFONT) - CHARSET) - FONTDESC NOSLUG?))) - do (RETURN NEWCSINFO] - ((AND (EQ ROTATION 0) - - (* ;; - "If it is available, this will force the appropriate file to be read to fill in the charset entry") - - (\HQFX80.READ-FONT-FILE FAMILY SIZE FACE ROTATION 'HQFX80 CHARSET))) - (T - - (* ;; "if we get here, the font is not directly available, either it needs to be rotated, boldified, or italicised 'by hand'") - - (PROG (NEWFONT XFONT XLATEDFAM CSINFO) - (RETURN (COND - [(NEQ ROTATION 0) - - (* ;; "to make a rotated font (even if it is bold or whatnot), recursively call fontcreate to get the unrotated font (maybe bold, etc), then call \SFMAKEROTATEDFONT on the csinfo.") - - (OR (MEMB ROTATION '(90 270)) - (ERROR - "only implemented rotations are 0, 90 and 270." - ROTATION)) - (COND - ((SETQ XFONT (FONTCREATE FAMILY SIZE FACE 0 - 'HQFX80 T CHARSET)) - - (* ;; "actually call FONTCREATE here, rather than a device-specific method, so that the vanilla font that is built in this process will be cached and not repeated.") - - (COND - ((SETQ CSINFO (\GETCHARSETINFO CHARSET XFONT T - )) - (\SFROTATECSINFO CSINFO ROTATION)) - (T NIL] - ((AND (EQ (fetch (FONTFACE WEIGHT) of FACE) - 'BOLD) - (SETQ XFONT - (FONTCREATE FAMILY SIZE - (create FONTFACE using FACE WEIGHT _ - 'MEDIUM) - 0 - 'HQFX80 T CHARSET))) - - (* ;; "if we want a bold font, and the medium weight font is available, build the medium weight version then call \SFMAKEBOLD on the csinfo") - - (COND - ((SETQ CSINFO (\GETCHARSETINFO CHARSET XFONT T)) - (\SFMAKEBOLD CSINFO)) - (T NIL))) - ((AND (EQ (fetch (FONTFACE SLOPE) of FACE) - 'ITALIC) - (SETQ XFONT - (FONTCREATE FAMILY SIZE - (create FONTFACE using FACE SLOPE _ - 'REGULAR) - 0 - 'HQFX80 T CHARSET))) - (COND - ((SETQ CSINFO (\GETCHARSETINFO CHARSET XFONT T)) - (\SFMAKEITALIC CSINFO)) - (T NIL))) - ((for TRANSL in HQFX80-MISSING-FONT-COERCIONS - bind NEWCSINFO USRFONT REALFONT - when (AND (SETQ USRFONT (CAR TRANSL)) - (EQ FAMILY (CAR USRFONT)) - (OR (NOT (CADR USRFONT)) - (EQ SIZE (CADR USRFONT))) - (OR (NOT (CADDR USRFONT)) - (EQ CHARSET (CADDR USRFONT))) - (SETQ REALFONT (CADR TRANSL)) - (SETQ NEWCSINFO - (\HQFX80.CREATECHARSET - (OR (CAR REALFONT) - FAMILY) - (OR (CADR REALFONT) - SIZE) - FACE ROTATION DEVICE - (OR (CADDR REALFONT) - CHARSET) - FONTDESC NOSLUG?))) - do (RETURN NEWCSINFO))) - ((NOT NOSLUG?) - (\BUILDSLUGCSINFO (fetch (FONTDESCRIPTOR - FONTAVGCHARWIDTH) - of FONTDESC) - (FONTPROP FONTDESC 'ASCENT) - (FONTPROP FONTDESC 'DESCENT) - (FONTPROP FONTDESC 'DEVICE] - (RETURN XCSINFO]) - -(\HQFX80.CHANGE-CHARSET - [LAMBDA (HQFX80DATA CHARSET) (* hdj "10-Nov-86 16:00") - - (* ;; - "Called when the character set information cached in hqfx80 stream doesn't correspond to CHARSET") - - (LET* ((PBT (HQFX80DATA-PILOTBBT HQFX80DATA)) - (CSINFO (\GETCHARSETINFO CHARSET (HQFX80DATA-FONT HQFX80DATA))) - (CHARACTER-BITMAP (ffetch CHARSETBITMAP of CSINFO))) - - (* ;; "Since we called \GETCHARSETINFO without the NOSLUG? flag, we presume we will get back a CSINFO , even if it is a slug csinfo") - - (UNINTERRUPTABLY - (CL:SETF (HQFX80DATA-WIDTHS-CACHE HQFX80DATA) - (ffetch (CHARSETINFO WIDTHS) of CSINFO)) - (CL:SETF (HQFX80DATA-OFFSETS-CACHE HQFX80DATA) - (ffetch (CHARSETINFO OFFSETS) of CSINFO)) - (CL:SETF (HQFX80DATA-IMAGE-WIDTHS-CACHE HQFX80DATA) - (ffetch (CHARSETINFO IMAGEWIDTHS) of CSINFO)) - (CL:SETF (HQFX80DATA-CHARSET-CACHE HQFX80DATA) - CHARSET) - (freplace PBTSOURCEBPL of PBT with (UNFOLD (ffetch (BITMAP BITMAPRASTERWIDTH) - of CHARACTER-BITMAP) - BITSPERWORD)) - [IF (OR (NEQ (HQFX80DATA-CHARSET-ASCENT-CACHE HQFX80DATA) - (ffetch CHARSETASCENT of CSINFO)) - (NEQ (HQFX80DATA-CHARSET-DESCENT-CACHE HQFX80DATA) - (ffetch CHARSETDESCENT of CSINFO))) - THEN (\HQFX80.FIX-Y HQFX80DATA CSINFO) - ELSE (freplace PBTSOURCE of PBT with (\ADDBASE (ffetch (BITMAP BITMAPBASE) - of CHARACTER-BITMAP) - (ITIMES (ffetch (BITMAP BITMAPRASTERWIDTH - ) of - CHARACTER-BITMAP - ) - (HQFX80DATA-CHARHEIGHTDELTA - HQFX80DATA])]) - -(\HQFX80.READ-FONT-FILE - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHARSET) (* ; "Edited 6-Jan-87 17:52 by hdj") - - (* ;; "Look for new filename convention, then old file name convention, with extensions. Note we assume \FONTFILENAME calls \FONTFILENAME.NEW") - - (DECLARE (GLOBALVARS HQFX80-FONT-EXTENSIONS HQFX80-FONT-DIRECTORIES)) - (bind FONTFILE CSINFO STRM for EXT inside HQFX80-FONT-EXTENSIONS - when (SETQ FONTFILE (\FINDFONTFILE FAMILY SIZE FACE ROTATION DEVICE CHARSET - HQFX80-FONT-DIRECTORIES (LIST EXT))) - do (SETQ STRM (OPENSTREAM FONTFILE 'INPUT)) - [RESETLST (SETQ CSINFO (SELECTQ (FONTFILEFORMAT STRM T) - (STRIKE (RESETSAVE NIL (LIST (FUNCTION CLOSEF) - STRM)) - (\READSTRIKEFONTFILE STRM FAMILY SIZE FACE)) - (AC - - (* ;; "CLOSEF is guaranteed inside \READACFONTFILE, against the possibility that we have to copy to make randaccessp") - - (\READACFONTFILE STRM FAMILY SIZE FACE)) - (PROG1 (CLOSEF STRM) - (SHOULDNT) (* ; - "This would get done by RESETSAVE if AC's were read sequentially and we could factor the RESETSAVE") - ] - - (* ;; "If not a recognizable format, I guess we should keep looking for another possible extension, altho it would also be nice to tell the user that he has a bogus file.") - - (RETURN CSINFO]) - -(\HQFX80.SEARCH-FONTS - [LAMBDA (FAMILY SIZE FACE ROTATION) (* hdj "10-Nov-86 12:09") - -(* ;;; "returns a list of the fonts that can be read in for the hqfx80 device. (This is the same as all fonts for the dissplay device.) Rotation is ignored because it is assumed that all devices support 0 90 and 270") - - (DECLARE (GLOBALVARS HQFX80-FONT-EXTENSIONS HQFX80-FONT-DIRECTORIES)) - (for E FILENAMEPATTERN FONTSFOUND THISFONT THISFACE inside HQFX80-FONT-EXTENSIONS - do (SETQ FILENAMEPATTERN (\FONTFILENAME FAMILY SIZE FACE E)) - [for DIR inside HQFX80-FONT-DIRECTORIES - do (for FONTFILE in (DIRECTORY (PACKFILENAME 'DIRECTORY DIR 'BODY FILENAMEPATTERN)) - do (OR (MEMBER (SETQ THISFONT (\FONTINFOFROMFILENAME FONTFILE 'DISPLAY)) - FONTSFOUND) - (COND - ((AND [OR (EQ FACE '*) - (EQUAL FACE (SETQ THISFACE (CADDR THISFONT))) - (AND (OR (EQ (CAR FACE) - '*) - (EQ (CAR FACE) - (CAR THISFACE))) - (OR (EQ (CADR FACE) - '*) - (EQ (CADR FACE) - (CADR THISFACE))) - (OR (EQ (CADR FACE) - '*) - (EQ (CADR FACE) - (CADR THISFACE] - (OR (EQ FAMILY '*) - (EQ FAMILY (CAR THISFONT)) - (STRPOS "*" FAMILY))) - - (* ;; "make sure the face, size, and family really match. Family name match allows anything if the family has a * in it. This is wrong but better than what was there before which let in anything with the right beginning.") - - (SETQ FONTSFOUND (CONS THISFONT FONTSFOUND] finally (RETURN FONTSFOUND]) -) - -(CL:DEFUN \HQFX80.INIT-FONT-PROFILE () - - (* ;; "set up the fonts for the HQFX80, based on the DISPLAY font profile entries") - - [FOR FONT-CLASS IN '(DEFAULTFONT ITALICFONT BOLDFONT LITTLEFONT TINYFONT BIGFONT COMMENTFONT - TEXTFONT) DO (\ADD-TO-FONTPROFILE FONTPROFILE FONT-CLASS 'HQFX80 - (\GET-FROM-FONTPROFILE FONTPROFILE FONT-CLASS - 'DISPLAY] - (FONTPROFILE FONTPROFILE) - T) - - - -(* ;; "methods for measuring") - -(DEFINEQ - -(\HQFX80.CHARWIDTH - [LAMBDA (HQFX80STREAM CHARCODE) (* ; "Edited 4-Feb-87 13:20 by hdj") - - (* ;; - "gets the width of the rendering of charcode on an hqfx80 image stream. We treat space specially.") - - (WITH-HQFX80-DATA (DATA HQFX80STREAM) - (LET ((WIDTH (\FGETCHARWIDTH (HQFX80DATA-FONT DATA) - CHARCODE))) - (if (EQ CHARCODE (CHARCODE SPACE)) - then (FIXR (TIMES WIDTH (HQFX80DATA-SPACEWIDTH DATA))) - else WIDTH]) - -(\HQFX80.STRINGWIDTH - [LAMBDA (HQFX80STREAM STRING RDTBL) (* ; "Edited 3-Feb-87 17:36 by hdj") - - (* ;; - " returns STRING's width, relative to HQFX80STREAM's current font and the readtable RDTBL") - - (IF RDTBL - THEN (BIND (FIRSTFLG _ T) - (SA _ (FETCH READSA OF RDTBL)) - (ESCAPE-CHAR-WIDTH _ (\HQFX80.CHARWIDTH HQFX80STREAM (FETCH (READTABLEP ESCAPECHAR - ) OF RDTBL))) - (SYN _ NIL) FOR CHARCODE INSTRING STRING - SUM (PROG1 (IPLUS (COND - ((AND (FETCH (READCODE ESCQUOTE) OF (SETQ SYN (\SYNCODE SA - CHARCODE))) - (OR FIRSTFLG (FETCH (READCODE INNERESCQUOTE) OF SYN))) - ESCAPE-CHAR-WIDTH) - (T 0)) - (\FASTFX80.CHARWIDTH HQFX80STREAM CHARCODE)) - (SETQ FIRSTFLG NIL))) - ELSE (FOR CHAR INSTRING STRING SUM (\HQFX80.CHARWIDTH HQFX80STREAM CHAR]) -) - -(CL:DEFUN \HQFX80.SPACEFACTOR (HQFX80STREAM FACTOR) - - (* ;; "returns/sets the width of the space character (32 ASCII) for HQFX80STREAM") - - [WITH-HQFX80-DATA (DATA HQFX80STREAM) - (PROG1 (HQFX80DATA-SPACEWIDTH DATA) - (AND FACTOR (IF (NUMBERP FACTOR) - THEN (CL:SETF (HQFX80DATA-SPACEWIDTH DATA) - FACTOR) - ELSE (\ILLEGAL.ARG FACTOR))))]) - - - -(* ;; "methods that affect the current position/size of drawing surface") - -(DEFINEQ - -(\HQFX80.CLIPPINGREGION - [LAMBDA (HQFX80STREAM REGION) (* ; "Edited 8-Dec-86 14:04 by hdj") - - (* ;; "sets the clipping region of an HQFX80 image stream. do not allow it to exceed the confines of the bitmap.") - - (WITH-HQFX80-DATA (HQFX80DATA HQFX80STREAM) - (PROG1 (COPY (HQFX80DATA-CLIPPINGREGION HQFX80DATA)) - (* ; - "copy so it can't be side-effected later") - (LET ((BACKING (HQFX80DATA-BACKINGBITMAP HQFX80DATA))) - (AND REGION (OR (type? REGION REGION) - (ERROR REGION " is not a REGION.")) - (UNINTERRUPTABLY - (CL:SETF (HQFX80DATA-CLIPPINGREGION HQFX80DATA) - (INTERSECTREGIONS (CREATEREGION 0 0 (BITMAPWIDTH BACKING) - (BITMAPHEIGHT BACKING)) - REGION)) - (\HQFX80.INVALIDATE-FONT-CACHE HQFX80DATA))]) - -(\HQFX80.LEFTMARGIN - [LAMBDA (HQFX80STREAM XPOSITION) (* ; "Edited 3-Feb-87 17:11 by hdj") - - (* ;; "sets/returns the position that a carriage return returns to for an hqfx80stream") - - (WITH-HQFX80-DATA (DATA HQFX80STREAM) - (PROG1 (HQFX80DATA-LEFTMARGIN DATA) - (AND XPOSITION (if (SMALLP XPOSITION) - then (UNINTERRUPTABLY - (CL:SETF (HQFX80DATA-LEFTMARGIN DATA) - XPOSITION) - (\HQFX80.FIX-LINE-LENGTH HQFX80STREAM)) - else (\ILLEGAL.ARG XPOSITION]) - -(\HQFX80.RIGHTMARGIN - [LAMBDA (HQFX80STREAM XPOSITION) (* ; "Edited 10-Dec-86 18:17 by hdj") - - (* ;; "Sets the right margin of an HQFX80STREAM") - - (WITH-HQFX80-DATA (DATA HQFX80STREAM) - (PROG1 (HQFX80DATA-RIGHTMARGIN DATA) - (AND XPOSITION (IF (SMALLP XPOSITION) - THEN (UNINTERRUPTABLY - (CL:SETF (HQFX80DATA-RIGHTMARGIN DATA) - XPOSITION) - (\HQFX80.FIX-LINE-LENGTH HQFX80STREAM)) - ELSE (\ILLEGAL.ARG XPOSITION]) - -(\HQFX80.TOPMARGIN - [LAMBDA (HQFX80STREAM YPOSITION) (* ; "Edited 10-Dec-86 18:16 by hdj") - - (* ;; "Sets the top margin of an hqfx80stream") - - (WITH-HQFX80-DATA (DATA HQFX80STREAM) - (PROG1 (HQFX80DATA-TOPMARGIN DATA) - (AND YPOSITION (IF (SMALLP YPOSITION) - THEN (CL:SETF (HQFX80DATA-TOPMARGIN DATA) - YPOSITION) - ELSE (\ILLEGAL.ARG YPOSITION]) - -(\HQFX80.BOTTOMMARGIN - [LAMBDA (HQFX80STREAM YPOSITION) (* ; "Edited 10-Dec-86 18:17 by hdj") - - (* ;; "Sets the bottom margin of an HQFX80STREAM") - - (WITH-HQFX80-DATA (DATA HQFX80STREAM) - (PROG1 (HQFX80DATA-BOTTOMMARGIN DATA) - (AND YPOSITION (IF (SMALLP YPOSITION) - THEN (CL:SETF (HQFX80DATA-BOTTOMMARGIN DATA) - YPOSITION) - ELSE (\ILLEGAL.ARG YPOSITION]) - -(\HQFX80.XPOSITION - [LAMBDA (HQFX80STREAM XPOSITION) (* hdj " 3-Nov-86 15:14") - (WITH-HQFX80-DATA (DATA HQFX80STREAM) - (PROG1 (HQFX80DATA-XPOS DATA) - (AND XPOSITION (IF (NUMBERP XPOSITION) - THEN (CL:SETF (HQFX80DATA-XPOS DATA) - XPOSITION) - ELSE (\ILLEGAL.ARG XPOSITION]) - -(\HQFX80.YPOSITION - [LAMBDA (HQFX80STREAM YPOSITION) (* ; "Edited 5-Jan-87 17:25 by hdj") - - (* ;; "set the y-pos of an HQFX80STREAM") - - (WITH-HQFX80-DATA (DATA HQFX80STREAM) - (PROG1 (HQFX80DATA-YPOS DATA) - (AND YPOSITION (if (NUMBERP YPOSITION) - then (UNINTERRUPTABLY - (CL:SETF (HQFX80DATA-YPOS DATA) - YPOSITION) - (\HQFX80.INVALIDATE-CACHE DATA)) - else (\ILLEGAL.ARG YPOSITION]) - -(\HQFX80.NEWLINE - [LAMBDA (CHARCODE HQFX80STREAM) (* hdj "14-Nov-86 17:44") - - (* ;; - "CODE is EOL, CR, or LF. Performs the appropriate printing operation on hqfx80stream.") - - (WITH-HQFX80-DATA (DATA HQFX80STREAM) - (LET [(NEW-Y (+ (HQFX80DATA-YPOS DATA) - (HQFX80DATA-LINEFEED DATA] - (if (< NEW-Y (HQFX80DATA-BOTTOMMARGIN DATA)) - then - - (* ;; - "we're below the bottom margin, so eject the page. If this was a LF, restore the old x-position") - - (LET ((OLD-X (HQFX80DATA-XPOS DATA))) - (\HQFX80.NEWPAGE HQFX80STREAM) - (if (EQ CHARCODE (CHARCODE LF)) - then (\HQFX80.XPOSITION HQFX80STREAM OLD-X))) - else - - (* ;; "just decrement the y coord") - - (\HQFX80.YPOSITION HQFX80STREAM NEW-Y) - - (* ;; "if this was a CR or EOL, set the x-position too.") - - (if (NEQ CHARCODE (CHARCODE LF)) - then (\HQFX80.XPOSITION HQFX80STREAM (HQFX80DATA-LEFTMARGIN DATA)) - (freplace (STREAM CHARPOSITION) of HQFX80STREAM with 0]) - -(\HQFX80.NEWPAGE - [LAMBDA (HQFX80STREAM) (* ; "Edited 8-Dec-86 15:18 by hdj") - - (* ;; "end an HQFX80 page") - - (WITH-HQFX80-DATA (DATA HQFX80STREAM) - (\HQFX80.DUMP-PAGE-BUFFER (HQFX80DATA-BACKINGBITMAP DATA) - HQFX80STREAM) - - (* ;; "start a new page") - - (\HQFX80.STARTPAGE HQFX80STREAM]) - -(\HQFX80.LINEFEED - [LAMBDA (HQFX80STREAM DELTAY) (* hdj " 3-Nov-86 14:58") - - (* ;; "Sets the linefeed distance for an HQFX80 stream") - - (WITH-HQFX80-DATA (DATA HQFX80STREAM) - (PROG1 (HQFX80DATA-LINEFEED DATA) - (AND DELTAY (IF (NUMBERP DELTAY) - THEN (CL:SETF (HQFX80DATA-LINEFEED DATA) - DELTAY) - ELSE (\ILLEGAL.ARG DELTAY]) - -(\HQFX80.RESET - [LAMBDA (HQFX80STREAM) (* hdj " 4-Nov-86 15:35") - - (* ;; "resets an hqfx80 image stream to a virgin state") - - (\HQFX80.STARTPAGE HQFX80STREAM]) - -(\HQFX80.STARTPAGE - [LAMBDA (HQFX80STREAM) (* ; "Edited 18-Dec-86 15:25 by hdj") - - (* ;; "start a new page for an HQFX80 imagestream") - - (WITH-HQFX80-DATA (DATA HQFX80STREAM) - (LET* ((CLIPPINGREGION (HQFX80DATA-CLIPPINGREGION DATA)) - (FONT (HQFX80DATA-FONT DATA)) - (FONT-ASCENT (FONTASCENT FONT))) - - (* ;; "first clear the backing bitmap...") - - (BLTSHADE (HQFX80DATA-TEXTURE DATA) - (HQFX80DATA-BACKINGBITMAP DATA) - NIL NIL NIL NIL 'REPLACE) - - (* ;; "... and then reset the current position") - - (\HQFX80.XPOSITION HQFX80STREAM (HQFX80DATA-LEFTMARGIN DATA)) - (\HQFX80.YPOSITION HQFX80STREAM (ADD1 (- (HQFX80DATA-TOPMARGIN DATA) - FONT-ASCENT]) -) - -(DEFMACRO \HQFX80.CUR-POS-VISIBLE? (HQFX80DATA) - `(INSIDEP (HQFX80DATA-CLIPPINGREGION ,HQFX80DATA) - (HQFX80DATA-XPOS ,HQFX80DATA) - (HQFX80DATA-YPOS ,HQFX80DATA))) - - - -(* ;; "graphical operations") - -(DECLARE%: EVAL@COMPILE - -[PUTDEF '\HQFX80.BRUSHBBT 'RESOURCES '(NEW (CREATE PILOTBBT] -) -(DEFINEQ - -(\HQFX80.BITBLT - [LAMBDA (SOURCEBITMAP SOURCELEFT SOURCEBOTTOM HQFX80STREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH - HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION CLIPPEDSOURCELEFT - CLIPPEDSOURCEBOTTOM) (* ; "Edited 1-Jun-87 13:07 by Snow") - -(* ;;; "BITBLT onto the HQFX80 page") - -(* ;;; "") - - (DECLARE (LOCALVARS . T)) - (COND - ((NEQ 1 (fetch (BITMAP BITMAPBITSPERPIXEL) of SOURCEBITMAP)) - - (* ;; "going from color bitmap into black and white bitmap.") - - (ERROR "Cannot BitBLT a color bitmap onto the FX-80 page"))) - (WITH-HQFX80-DATA (DATA HQFX80STREAM) - (PROG (SOURCE-TO-DEST-X SOURCE-TO-DEST-Y LEFT TOP BOTTOM RIGHT DESTBITMAP) - (SETQ DESTBITMAP (HQFX80DATA-BACKINGBITMAP DATA)) - [LET ((FXCLIPPINGREGION (HQFX80DATA-CLIPPINGREGION DATA))) - - (* ;; "compute limits based on clipping regions.") - - (SETQ LEFT (fetch (REGION LEFT) of FXCLIPPINGREGION)) - (SETQ BOTTOM (fetch (REGION BOTTOM) of FXCLIPPINGREGION)) - (SETQ RIGHT (fetch (REGION RIGHT) of FXCLIPPINGREGION)) - (SETQ TOP (fetch (REGION TOP) of FXCLIPPINGREGION)) - (COND - (CLIPPINGREGION - - (* ;; "hard case, two destination clipping regions: do calculations to merge them.") - - (PROG (CRLEFT CRBOTTOM) - [SETQ LEFT (IMAX LEFT (SETQ CRLEFT (fetch (REGION LEFT) - of CLIPPINGREGION] - [SETQ BOTTOM (IMAX BOTTOM (SETQ CRBOTTOM (fetch (REGION BOTTOM) - of CLIPPINGREGION] - [SETQ RIGHT (IMIN RIGHT (IPLUS CRLEFT (fetch (REGION WIDTH) - of CLIPPINGREGION] - (SETQ TOP (IMIN TOP (IPLUS CRBOTTOM (fetch (REGION HEIGHT) - of CLIPPINGREGION] - - (* ;; "left, right top and bottom are the limits in destination taking into account Clipping Regions. Clip to region in the arguments of this call.") - - (PROGN (SETQ LEFT (IMAX DESTINATIONLEFT LEFT)) - (SETQ BOTTOM (IMAX DESTINATIONBOTTOM BOTTOM)) - (AND WIDTH (SETQ RIGHT (IMIN (IPLUS DESTINATIONLEFT WIDTH) - RIGHT)))(* ; "WIDTH is optional") - - (AND HEIGHT (SETQ TOP (IMIN (IPLUS DESTINATIONBOTTOM HEIGHT) - TOP))) (* ; "HEIGHT is optional") - - ) (* ; "Clip and translate coordinates.") - - (SETQ SOURCE-TO-DEST-X (IDIFFERENCE DESTINATIONLEFT SOURCELEFT)) - (SETQ SOURCE-TO-DEST-Y (IDIFFERENCE DESTINATIONBOTTOM SOURCEBOTTOM)) - - (* ;; "compute the source dimensions (left right bottom top) by intersecting the source bit map, the source area to be moved with the limits of the region to be moved in the destination coordinates.") - - [PROGN (* ; "compute left margin") - - (SETQ LEFT (IMAX CLIPPEDSOURCELEFT (IDIFFERENCE LEFT SOURCE-TO-DEST-X) - 0)) (* ; "compute bottom margin") - - (SETQ BOTTOM (IMAX CLIPPEDSOURCEBOTTOM (IDIFFERENCE BOTTOM SOURCE-TO-DEST-Y) - 0)) - [PROGN (* ; "compute right margin") - - (SETQ RIGHT (IMIN (ffetch (BITMAP BITMAPWIDTH) of SOURCEBITMAP) - (IDIFFERENCE RIGHT SOURCE-TO-DEST-X) - (IPLUS CLIPPEDSOURCELEFT WIDTH] - (PROGN (* ; "compute top margin") - - (SETQ TOP (IMIN (ffetch (BITMAP BITMAPHEIGHT) of SOURCEBITMAP) - (IDIFFERENCE TOP SOURCE-TO-DEST-Y) - (IPLUS CLIPPEDSOURCEBOTTOM HEIGHT] - (COND - ((OR (ILEQ RIGHT LEFT) - (ILEQ TOP BOTTOM)) (* ; "there is nothing to move.") - - (RETURN))) - (OR OPERATION (SETQ OPERATION (HQFX80DATA-OPERATION DATA))) - (SELECTQ SOURCETYPE - (MERGE (* ; "Need to use complement of TEXTURE") - - [SETQ TEXTURE (COND - ((NULL TEXTURE) - BLACKSHADE) - ((FIXP TEXTURE) - (LOGXOR (LOGAND TEXTURE BLACKSHADE) - BLACKSHADE)) - [(type? BITMAP TEXTURE) - (INVERT.TEXTURE.BITMAP TEXTURE - (OR \BBSCRATCHTEXTURE (SETQ \BBSCRATCHTEXTURE - (BITMAPCREATE 16 16] - (T (\ILLEGAL.ARG TEXTURE]) - NIL) - (UNINTERRUPTABLY - [PROG ([PILOTBBT (COND - ((type? PILOTBBT \SYSPILOTBBT) - \SYSPILOTBBT) - (T (SETQ \SYSPILOTBBT (create PILOTBBT] - (HEIGHT (IDIFFERENCE TOP BOTTOM)) - (WIDTH (IDIFFERENCE RIGHT LEFT)) - (DTY (\SFInvert DESTBITMAP (IPLUS TOP SOURCE-TO-DEST-Y))) - (DLX (IPLUS LEFT SOURCE-TO-DEST-X)) - (STY (\SFInvert SOURCEBITMAP TOP)) - (SLX LEFT)) - (replace PBTWIDTH of PILOTBBT with WIDTH) - (replace PBTHEIGHT of PILOTBBT with HEIGHT) - (COND - ((EQ SOURCETYPE 'MERGE) - (\BITBLT.MERGE PILOTBBT SOURCEBITMAP SLX STY DESTBITMAP DLX DTY WIDTH - HEIGHT OPERATION TEXTURE)) - (T (\BITBLTSUB PILOTBBT SOURCEBITMAP SLX STY DESTBITMAP DLX DTY HEIGHT - SOURCETYPE OPERATION TEXTURE]) - (RETURN T]) - -(\HQFX80.BLTSHADE - [LAMBDA (TEXTURE HQFX80STREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT OPERATION - CLIPPINGREGION) (* ; "Edited 1-Jun-87 13:05 by Snow") - - (* ;; "BLTSHADE to an HQFX80 imagestream") - - (DECLARE (LOCALVARS . T)) - (WITH-HQFX80-DATA (DATA HQFX80STREAM) - (PROG (LEFT TOP BOTTOM RIGHT DESTINATIONBITMAP) - - (* ;; "compute limits based on clipping regions.") - - (LET ((FXCLIPPINGREGION (HQFX80DATA-CLIPPINGREGION DATA))) - (SETQ LEFT (fetch (REGION LEFT) of FXCLIPPINGREGION)) - (SETQ BOTTOM (fetch (REGION BOTTOM) of FXCLIPPINGREGION)) - (SETQ RIGHT (fetch (REGION RIGHT) of FXCLIPPINGREGION)) - (SETQ TOP (fetch (REGION TOP) of FXCLIPPINGREGION))) - [COND - (CLIPPINGREGION - - (* ;; "hard case, two destination clipping regions: do calculations to merge them.") - - (PROG (CRLEFT CRBOTTOM) - [SETQ LEFT (IMAX LEFT (SETQ CRLEFT (fetch (REGION LEFT) of - CLIPPINGREGION - ] - [SETQ BOTTOM (IMAX BOTTOM (SETQ CRBOTTOM (fetch (REGION BOTTOM) - of CLIPPINGREGION] - [SETQ RIGHT (IMIN RIGHT (IPLUS CRLEFT (fetch (REGION WIDTH) - of CLIPPINGREGION] - (SETQ TOP (IMIN TOP (IPLUS CRBOTTOM (fetch (REGION HEIGHT) - of CLIPPINGREGION] - (SETQ DESTINATIONBITMAP (HQFX80DATA-BACKINGBITMAP DATA)) - - (* ;; "left, right top and bottom are the limits in destination taking into account Clipping Regions. Clip to region in the arguments of this call.") - - (SETQ LEFT (IMAX DESTINATIONLEFT LEFT)) - (SETQ BOTTOM (IMAX DESTINATIONBOTTOM BOTTOM)) - (AND WIDTH (SETQ RIGHT (IMIN (IPLUS DESTINATIONLEFT WIDTH) - RIGHT))) (* ; "WIDTH is optional") - - (AND HEIGHT (SETQ TOP (IMIN (IPLUS DESTINATIONBOTTOM HEIGHT) - TOP))) (* ; "HEIGHT is optional") - - (COND - ((AND (IGREATERP RIGHT LEFT) - (IGREATERP TOP BOTTOM))) - (T (* ; "there is nothing to move.") - - (RETURN NIL))) - (CL:ETYPECASE TEXTURE [LITATOM (* ; "includes NIL case") - - (COND - ((NULL TEXTURE) - (* ; - "default texture to background texture.") - - (SETQ TEXTURE (HQFX80DATA-TEXTURE DATA))) - (T (\ILLEGAL.ARG TEXTURE] - (SMALLP (SETQ TEXTURE (LOGAND TEXTURE BLACKSHADE))) - (FIXP (SETQ TEXTURE (LOGAND TEXTURE BLACKSHADE))) - (BITMAP NIL)) - (UNINTERRUPTABLY - (LET ([PILOTBBT (IF (type? PILOTBBT \SYSPILOTBBT) - THEN \SYSPILOTBBT - ELSE (SETQ \SYSPILOTBBT (create PILOTBBT] - (HEIGHT (IDIFFERENCE TOP BOTTOM))) - (replace PBTWIDTH of PILOTBBT with (IDIFFERENCE RIGHT LEFT)) - (replace PBTHEIGHT of PILOTBBT with HEIGHT) - (\BITBLTSUB PILOTBBT NIL LEFT NIL DESTINATIONBITMAP LEFT (\SFInvert - DESTINATIONBITMAP - TOP) - HEIGHT - 'TEXTURE - (OR OPERATION (HQFX80DATA-OPERATION DATA)) - TEXTURE))) - (RETURN T]) - -(\HQFX80.DRAWELLIPSE - [LAMBDA (HQFX80STREAM CENTERX CENTERY SEMIMINORRADIUS SEMIMAJORRADIUS ORIENTATION BRUSH DASHING) - (* ; "Edited 12-Feb-87 14:37 by jds") - (DECLARE (LOCALVARS . T)) - - (* ;; "Draws an ellipse. At ORIENTATION 0, the semimajor axis is horizontal, the semiminor axis vertical. Orientation is positive in the counterclockwise direction. The current location in the stream is left at the center of the ellipse.") - - (PROG ((CENTERX (FIXR CENTERX)) - (CENTERY (FIXR CENTERY)) - (SEMIMINORRADIUS (FIXR SEMIMINORRADIUS)) - (SEMIMAJORRADIUS (FIXR SEMIMAJORRADIUS))) - (COND - ((OR (EQ 0 SEMIMINORRADIUS) - (EQ 0 SEMIMAJORRADIUS)) - (MOVETO CENTERX CENTERY HQFX80STREAM) - (RETURN))) - (COND - ((ILESSP SEMIMINORRADIUS 1) - (\ILLEGAL.ARG SEMIMINORRADIUS)) - ((ILESSP SEMIMAJORRADIUS 1) - (\ILLEGAL.ARG SEMIMAJORRADIUS)) - ((OR (NULL ORIENTATION) - (EQ SEMIMINORRADIUS SEMIMAJORRADIUS)) - (SETQ ORIENTATION 0)) - ((NULL (NUMBERP ORIENTATION)) - (\ILLEGAL.ARG ORIENTATION))) - - (* ;; "This function is the implementation of the algorithm given in 'Algorithm for drawing ellipses or hyperbolae with a digital plotter' by Pitteway appearing in Computer Journal 10: (3) Nov 1967. The input parameters are used to determine the ellipse equation (1/8) Ayy+ (1/8) Bxx+ (1/4) Gxy+ (1/4) Ux+ (1/4) Vy= (1/4) K which specifies a translated version of the desired ellipse. This ellipse passes through the mesh point (0,0), the initial point of the algorithm. The power of 2 factors reflect an implementation convenience.") - - (WITH-HQFX80-DATA (HQFX80DATA HQFX80STREAM) - (GLOBALRESOURCE \HQFX80.BRUSHBBT - (PROG (DESTINATION-BITMAP LEFT RIGHTPLUS1 BOTTOM TOP BOTTOMMINUSBRUSH - TOPMINUSBRUSH LEFTMINUSBRUSH DESTINATIONBASE BRUSHBASE - BRUSHHEIGHT BRUSHWIDTH RASTERWIDTH BRUSHRASTERWIDTH BRUSHBM - OPERATION HEIGHTMINUS1 (BBT \HQFX80.BRUSHBBT) - (COS-ORIENTATION (COS ORIENTATION)) - (SIN-ORIENTATION (SIN ORIENTATION)) - (SEMIMINORRADIUSSQUARED (ITIMES SEMIMINORRADIUS SEMIMINORRADIUS) - ) - (SEMIMAJORRADIUSSQUARED (ITIMES SEMIMAJORRADIUS SEMIMAJORRADIUS) - ) - (x 0) - (y 0) - (x2 1) - x1 y1 y2 k1 k2 k3 a b d w A B G U V K CX CY yOffset CYPlusOffset - CYMinusOffset (USERFN (AND (LITATOM BRUSH) - BRUSH))) - [COND - (USERFN (* ; - "if calling user fn, don't bother with set up") - (SETQ CX CENTERX) - (SETQ CY CENTERY)) - (T (.SETUP.FOR.\HQFX80.BBTCURVEPT. HQFX80DATA) - (* ; - "take into account the brush thickness.") - (SETQ CX (- CENTERX (FOLDLO BRUSHWIDTH 2))) - (SETQ CY (- CENTERY (FOLDLO BRUSHHEIGHT 2] - (SETQ A (FPLUS (FTIMES SEMIMAJORRADIUSSQUARED COS-ORIENTATION - COS-ORIENTATION) - (FTIMES SEMIMINORRADIUSSQUARED SIN-ORIENTATION - SIN-ORIENTATION))) - (SETQ B (LSH (FIXR (FPLUS (FTIMES SEMIMINORRADIUSSQUARED - COS-ORIENTATION COS-ORIENTATION) - (FTIMES SEMIMAJORRADIUSSQUARED - SIN-ORIENTATION SIN-ORIENTATION))) - 3)) - (SETQ G (FTIMES COS-ORIENTATION SIN-ORIENTATION (LSH (- - SEMIMINORRADIUSSQUARED - SEMIMAJORRADIUSSQUARED - ) - 1))) - [SETQ yOffset (FIXR (FQUOTIENT (ITIMES SEMIMINORRADIUS SEMIMAJORRADIUS) - (SQRT A] - (SETQ CYPlusOffset (+ CY yOffset)) - (SETQ CYMinusOffset (- CY yOffset)) - (SETQ U (LSH (FIXR (FTIMES A (LSH yOffset 1))) - 2)) - (SETQ V (LSH (FIXR (FTIMES G yOffset)) - 2)) - (SETQ K (LSH [FIXR (FDIFFERENCE (ITIMES SEMIMINORRADIUSSQUARED - SEMIMAJORRADIUSSQUARED) - (FTIMES A (ITIMES yOffset yOffset] - 2)) - (SETQ A (LSH (FIXR A) - 3)) - (SETQ G (LSH (FIXR G) - 2)) - - (* ;; "The algorithm is incremental and iterates through the octants of a cartesian plane. The octants are labeled from 1 through 8 beginning above the positive X axis and proceeding counterclockwise. Decisions in making the incremental steps are determined according to the error term d which is updated according to the curvature terms a and b. k1, k2, and k3 are used to correct the error and curvature terms at octant boundaries. The initial values of these terms depends on the octant in which drawing begins. The initial move steps (x1,y1) and (x2,y2) also depend on the starting octant.") - - [COND - [(ILESSP (ABS U) - (ABS V)) - (SETQ x1 0) - (COND - [(MINUSP V) (* ; "start in octant 2") - (SETQ y1 1) - (SETQ y2 1) - (SETQ k1 (IMINUS A)) - (SETQ k2 (- k1 G)) - (SETQ k3 (- k2 (+ B G))) - (SETQ b (+ U (RSH (+ A G) - 1))) - (SETQ a (IMINUS (+ b V))) - (SETQ d (+ b (RSH B 3) - (RSH V 1) - (IMINUS K] - (T (* ; "start in octant 7") - (SETQ y1 -1) - (SETQ y2 -1) - (SETQ k1 A) - (SETQ k2 (- k1 G)) - (SETQ k3 (+ k2 B (IMINUS G))) - (SETQ b (+ U (RSH (- G A) - 1))) - (SETQ a (- V b)) - (SETQ d (+ b K (IMINUS (+ (RSH V 1) - (RSH B 3] - (T (SETQ x1 1) - (SETQ y1 0) - (COND - [(MINUSP V) (* ; "start in octant 1") - (SETQ y2 1) - (SETQ k1 B) - (SETQ k2 (+ k1 G)) - (SETQ k3 (+ k2 A G)) - [SETQ b (IMINUS (+ V (RSH (+ B G) - 1] - (SETQ a (- U b)) - (SETQ d (+ b K (IMINUS (+ (RSH A 3) - (RSH U 1] - (T (* ; "start in octant 8") - (SETQ y2 -1) - (SETQ k1 (IMINUS B)) - (SETQ k2 (+ k1 G)) - (SETQ k3 (+ k2 G (IMINUS A))) - (SETQ b (+ V (RSH (- B G) - 1))) - (SETQ a (- U b)) - (SETQ d (+ b (RSH A 3) - (IMINUS (+ K (RSH U 1] - - (* ;; "The ellipse equation describes an ellipse of the desired size and ORIENTATION centered at (0,0) and then dropped yOffset mesh points so that it will pass through (0,0). Thus, the intended starting point is (CX, CY+yOffset) where (CX, CY) is the center of the desired ellipse. Drawing is accomplished with point relative steps. In each octant, the error term d is used to choose between move 1 (an axis move) and move 2 (a diagonal move).") - - MOVE - [COND - ((MINUSP d) (* ; "move 1") - (SETQ x (+ x x1)) - (SETQ y (+ y y1)) - (SETQ b (- b k1)) - (SETQ a (+ a k2)) - (SETQ d (+ b d))) - (T (* ; "move 2") - (SETQ x (+ x x2)) - (SETQ y (+ y y2)) - (SETQ b (- b k2)) - (SETQ a (+ a k3)) - (SETQ d (- d a] - (COND - ((MINUSP x) - (MOVETO CENTERX CENTERY HQFX80STREAM) - (RETURN NIL))) - [COND - (USERFN (APPLY* USERFN (+ CX x) - (+ CYPlusOffset y) - HQFX80STREAM) - (APPLY* USERFN (- CX x) - (- CYMinusOffset y) - HQFX80STREAM)) - (T (\HQFX80.CURVEPT (+ CX x) - (+ CYPlusOffset y)) - (\HQFX80.CURVEPT (- CX x) - (- CYMinusOffset y] - (AND (MINUSP b) - (GO SQUARE)) - DIAGONAL - (OR (MINUSP a) - (GO MOVE)) (* ; "diagonal octant change") - (SETQ x1 (- x2 x1)) - (SETQ y1 (- y2 y1)) - (SETQ w (- (LSH k2 1) - k3)) - (SETQ k1 (- w k1)) - (SETQ k2 (- k2 k3)) - (SETQ k3 (IMINUS k3)) - [SETQ b (+ b a (IMINUS (RSH (ADD1 k2) - 1] - [SETQ d (+ b (RSH (+ k3 4) - 3) - (IMINUS d) - (IMINUS (RSH (ADD1 a) - 1] - (SETQ a (- (RSH (ADD1 w) - 1) - a)) - (OR (MINUSP b) - (GO MOVE)) - SQUARE - (* ; "square octant change") - [COND - ((EQ 0 x1) - (SETQ x2 (IMINUS x2))) - (T (SETQ y2 (IMINUS y2] - (SETQ w (- k2 k1)) - (SETQ k1 (IMINUS k1)) - (SETQ k2 (+ w k1)) - (SETQ k3 (- (LSH w 2) - k3)) - (SETQ b (- (IMINUS b) - w)) - (SETQ d (- (- b a) - d)) - (SETQ a (- (- a w) - (LSH b 1))) - (GO DIAGONAL]) - -(\HQFX80.OPERATION - [LAMBDA (HQFX80STREAM OPERATION) (* hdj " 4-Nov-86 17:25") - - (* ;; "sets the operation field of an hqfx80 stream") - - (WITH-HQFX80-DATA (DATA HQFX80STREAM) - (PROG1 (HQFX80DATA-OPERATION DATA) - (AND OPERATION (OR (FMEMB OPERATION '(PAINT REPLACE INVERT ERASE)) - (\ILLEGAL.ARG OPERATION)) - (UNINTERRUPTABLY - (CL:SETF (HQFX80DATA-OPERATION DATA) - OPERATION) (* ; - "update other fields that depend on operation.") - (\SETPBTFUNCTION (HQFX80DATA-PILOTBBT DATA) - (HQFX80DATA-SOURCETYPE DATA) - OPERATION))]) - -(\HQFX80.DRAWPOINT - [LAMBDA (HQFX80STREAM X Y BRUSH OPERATION) (* hdj "19-Nov-86 15:21") - - (* ;; "draws a brush point at position X Y on an HQFX80STREAM") - - (LET ((BRUSHBM (\GETBRUSH BRUSH))) (* ; - "SUB1 is to put extra bit of even brush on the top or left.") - (BITBLT BRUSHBM 0 0 HQFX80STREAM [IDIFFERENCE X (HALF (SUB1 (BITMAPWIDTH BRUSHBM] - [IDIFFERENCE Y (HALF (SUB1 (BITMAPHEIGHT BRUSHBM] - NIL NIL NIL OPERATION]) -) -(DEFINEQ - -(\HQFX80.DRAWLINE - [LAMBDA (HQFX80STREAM X1 Y1 X2 Y2 WIDTH OPERATION COLOR DASHING) - (* ; "Edited 5-Jan-87 18:10 by hdj") - - (* ;; - "Draws a line from (x1,y1) to (x2,y2) on an hqfx80 imagestream, leaving the position at (x2,y2).") - - (WITH-HQFX80-DATA (DATA HQFX80STREAM) - (LET ((CLIPPINGREGION (HQFX80DATA-CLIPPINGREGION DATA))) - - (* ;; "draw the line ...") - - (if DASHING - then (GLOBALRESOURCE \HQFX80.BRUSHBBT (LET ((BBT \HQFX80.BRUSHBBT) - (BRUSH (LIST 'ROUND WIDTH COLOR))) - (\HQFX80.LINEWITHBRUSH - (OR (FIXP X1) - (FIXR X1)) - (OR (FIXP Y1) - (FIXR Y1)) - (OR (FIXP X2) - (FIXR X2)) - (OR (FIXP Y2) - (FIXR Y2)) - BRUSH - (\GOOD.DASHLST DASHING BRUSH) - HQFX80STREAM BBT))) - else (\HQFX80.CLIP-AND-DRAW-LINE (OR (FIXP X1) - (FIXR X1)) - (OR (FIXP Y1) - (FIXR Y1)) - (OR (FIXP X2) - (FIXR X2)) - (OR (FIXP Y2) - (FIXR Y2)) - [COND - ((NULL WIDTH) - 1) - ((OR (FIXP WIDTH) - (FIXR WIDTH] - (SELECTQ OPERATION - (NIL (HQFX80DATA-OPERATION DATA)) - ((REPLACE PAINT INVERT ERASE) - OPERATION) - (\ILLEGAL.ARG OPERATION)) - (HQFX80DATA-BACKINGBITMAP DATA) - (ffetch (REGION LEFT) of CLIPPINGREGION) - (SUB1 (ffetch (REGION RIGHT) of CLIPPINGREGION)) - (ffetch (REGION BOTTOM) of CLIPPINGREGION) - (SUB1 (ffetch (REGION TOP) of CLIPPINGREGION)) - HQFX80STREAM)) - - (* ;; "... then move to (x2,y2)") - - (\HQFX80.XPOSITION HQFX80STREAM X2) - (\HQFX80.YPOSITION HQFX80STREAM Y2]) - -(\HQFX80.CLIP-AND-DRAW-LINE - [LAMBDA (X1 Y1 X2 Y2 WIDTH OPERATION BITMAP LEFT RIGHT BOTTOM TOP HQFX80STREAM) - (* ; "Edited 5-Jan-87 17:59 by hdj") - - (* ;; "draws a line from (X1,Y1) to (X2,Y2) clipped to region specified by LEFT RIGHT BOTTOM and TOP. This code is a transliterated version of the BCPL routine that was in chat.") - - (* ;; "") - - (* ;; "assumes that the width is at least 1") - - (PROG NIL - (COND - [(EQP X1 X2) (* ; "special case of vertical line.") - [COND - ((IGREATERP WIDTH 2) - (COND - ((EQP Y1 Y2) - - (* ;; "special case. Since we don't know whether the guy is headed horizontally or vertically, put out a round brush.") - - (RETURN (\HQFX80.DRAWPOINT HQFX80STREAM X1 Y1 (LIST 'ROUND WIDTH) - OPERATION))) - (T (SETQ X1 (SETQ X2 (IDIFFERENCE X1 (LRSH (SUB1 WIDTH) - 1] - (PROG (MIN MAX) - (RETURN (COND - ([OR (IGREATERP X1 RIGHT) - (IGEQ LEFT (SETQ X2 (IPLUS X1 WIDTH))) - (IGREATERP (SETQ MIN (IMIN Y1 Y2)) - TOP) - (IGREATERP BOTTOM (SETQ MAX (IMAX Y1 Y2] - (* ; "outside clippingregion.") - NIL) - (T (BLTSHADE BLACKSHADE BITMAP (SETQ X1 (IMAX X1 LEFT)) - (SETQ MIN (IMAX MIN BOTTOM)) - (IDIFFERENCE (IMIN X2 (ADD1 RIGHT)) - X1) - (ADD1 (IDIFFERENCE (IMIN MAX TOP) - MIN)) - OPERATION] - [(EQP Y1 Y2) (* ; "special case of horizontal line.") - [COND - ((IGREATERP WIDTH 2) - (SETQ Y1 (SETQ Y2 (IDIFFERENCE Y1 (LRSH (SUB1 WIDTH) - 1] - (PROG (MIN MAX) - (RETURN (COND - ([OR (IGREATERP Y1 TOP) - (IGEQ BOTTOM (SETQ Y2 (IPLUS Y1 WIDTH))) - (IGREATERP (SETQ MIN (IMIN X1 X2)) - RIGHT) - (IGREATERP LEFT (SETQ MAX (IMAX X1 X2] - (* ; "outside clippingregion.") - NIL) - (T (BLTSHADE BLACKSHADE BITMAP (SETQ MIN (IMAX MIN LEFT)) - (SETQ Y1 (IMAX Y1 BOTTOM)) - (ADD1 (IDIFFERENCE (IMIN MAX RIGHT) - MIN)) - (IDIFFERENCE (IMIN Y2 (ADD1 TOP)) - Y1) - OPERATION] - ((EQP WIDTH 1) (* ; "special case of width 1") - (\HQFX80.CLIP-AND-DRAW-LINE1 X1 Y1 X2 Y2 OPERATION BITMAP LEFT RIGHT BOTTOM TOP - HQFX80STREAM)) - ((IGREATERP (IABS (IDIFFERENCE X1 X2)) - (IABS (IDIFFERENCE Y1 Y2))) (* ; - "slope is more horizontal, so make line grow in the positive y direction.") - [COND - ((IGREATERP WIDTH 2) - (PROG (HALFWIDTH) - (SETQ HALFWIDTH (LRSH (SUB1 WIDTH) - 1)) - (SETQ Y1 (IDIFFERENCE Y1 HALFWIDTH)) - (SETQ Y2 (IDIFFERENCE Y2 HALFWIDTH] - (for I from Y1 to (SUB1 (IPLUS Y1 WIDTH)) as J from Y2 - do (\HQFX80.CLIP-AND-DRAW-LINE1 X1 I X2 J OPERATION BITMAP LEFT RIGHT BOTTOM TOP))) - (T (* ; - "slope is more vertical, so make line grow in the positive x direction.") - [COND - ((IGREATERP WIDTH 2) - (PROG (HALFWIDTH) - (SETQ HALFWIDTH (LRSH (SUB1 WIDTH) - 1)) - (SETQ X1 (IDIFFERENCE X1 HALFWIDTH)) - (SETQ X2 (IDIFFERENCE X2 HALFWIDTH] - (for I from X1 to (SUB1 (IPLUS X1 WIDTH)) as J from X2 - do (\HQFX80.CLIP-AND-DRAW-LINE1 I Y1 J Y2 OPERATION BITMAP LEFT RIGHT BOTTOM TOP]) - -(\HQFX80.CLIP-AND-DRAW-LINE1 - [LAMBDA (X1 Y1 X2 Y2 OPERATION BITMAP LEFT RIGHT BOTTOM TOP) - (* hdj " 6-Nov-86 14:30") - - (* ;; "LEFT, RIGHT, BOTTOM, TOP are set to the boundaries of the clipping region") - - (PROG (DX DY YMOVEUP HALFDX HALFDY (BMRASTERWIDTH (fetch (BITMAP BITMAPRASTERWIDTH) of BITMAP))) - (COND - ((IGREATERP X1 X2) (* ; - "switch points so DX is always positive.") - (SETQ HALFDX X1) - (SETQ X1 X2) - (SETQ X2 HALFDX) - (SETQ HALFDX Y1) - (SETQ Y1 Y2) - (SETQ Y2 HALFDX))) (* ; - "calculate differences and sign of Y movement.") - (SETQ HALFDX (LRSH (SETQ DX (IDIFFERENCE X2 X1)) - 1)) - (SETQ HALFDY (LRSH [SETQ DY (COND - ((IGREATERP Y2 Y1) - (SETQ YMOVEUP T) - (IDIFFERENCE Y2 Y1)) - (T (IDIFFERENCE Y1 Y2] - 1)) - (COND - ((AND (IGEQ X1 LEFT) - (IGEQ RIGHT X2) - [COND - (YMOVEUP (AND (IGEQ Y1 BOTTOM) - (IGEQ TOP Y2))) - (T (AND (IGEQ Y2 BOTTOM) - (IGEQ TOP Y1] - (EQ (fetch (BITMAP BITMAPBITSPERPIXEL) of BITMAP) - 1)) (* ; - "line is completely visible, fast case.") - (\DRAWLINE1 X1 (SUB1 (\SFInvert BITMAP Y1)) - DX DY DX DY (COND - ((IGREATERP DX DY) (* ; "X is the fastest mover.") - HALFDX) - (T (* ; "y is the fastest mover.") - HALFDY)) - (COND - (YMOVEUP (* ; - "y is moving in positive direction but bits are stored inversely") - (IMINUS BMRASTERWIDTH)) - (T BMRASTERWIDTH)) - OPERATION - (fetch BITMAPBASE of BITMAP) - BMRASTERWIDTH)) - (T (PROG ((CX1 X1) - (CY1 Y1) - (CX2 X2) - (CY2 Y2) - (CA1 (\CLIPCODE X1 Y1 LEFT RIGHT TOP BOTTOM)) - (CA2 (\CLIPCODE X2 Y2 LEFT RIGHT TOP BOTTOM))) - (* ; - "save the original points for the clipping computation.") - (* ; - "determine the sectors in which the points fall.") - CLIPLP - [COND - ((NOT (EQ 0 (LOGAND CA1 CA2))) (* ; - "line is entirely out of clipping region") - (RETURN NIL)) - ((EQ 0 (IPLUS CA1 CA2)) (* ; "line is completely visible") - - (* ;; "\SFInvert has an off by one bug that everybody else in LLDISPLAY uses to save computation so SUB1 from what you would expect.") - (* ; "reuse the variable CA1") - (RETURN (\DRAWLINE1 CX1 (SUB1 (\SFInvert BITMAP CY1)) - (IDIFFERENCE CX2 CX1) - (COND - (YMOVEUP (IDIFFERENCE CY2 CY1)) - (T (IDIFFERENCE CY1 CY2))) - DX DY - (COND - ((IGREATERP DX DY) - (* ; "X is the fastest mover.") - (IREMAINDER (IPLUS (ITIMES DY (IDIFFERENCE CX1 X1)) - HALFDX) - DX)) - (T (* ; "y is the fastest mover.") - (IREMAINDER (IPLUS [ITIMES DX - (COND - (YMOVEUP (IDIFFERENCE - CY1 Y1)) - (T (IDIFFERENCE Y1 CY1] - HALFDY) - DY))) - (COND - (YMOVEUP (* ; - "y is moving in positive direction but bits are stored inversely") - (IMINUS BMRASTERWIDTH)) - (T BMRASTERWIDTH)) - OPERATION - (fetch BITMAPBASE of BITMAP) - BMRASTERWIDTH] - [COND - ((NEQ CA1 0) - - (* ;; "now move point CX1 CY1 so that one of the coordinates is on one of the boundaries. Which boundary is done first was copied from BCPL.") - - (COND - ((IGREATERP CA1 7) (* ; "y1 less than bottom") - (* ; - "calculate the least X for which Y will be at bottom.") - [SETQ CX1 (IPLUS X1 (\LEASTPTAT DX DY (IDIFFERENCE BOTTOM Y1] - (SETQ CY1 BOTTOM)) - ((IGREATERP CA1 3) (* ; "y1 is greater than top") - [SETQ CX1 (IPLUS X1 (\LEASTPTAT DX DY (IDIFFERENCE Y1 TOP] - (SETQ CY1 TOP)) - (T (* ; "x1 is less than left") - [SETQ CY1 (COND - [YMOVEUP (IPLUS Y1 (\LEASTPTAT DY DX (IDIFFERENCE LEFT - X1] - (T (IDIFFERENCE Y1 (\LEASTPTAT DY DX (IDIFFERENCE LEFT - X1] - (SETQ CX1 LEFT))) - (SETQ CA1 (\CLIPCODE CX1 CY1 LEFT RIGHT TOP BOTTOM))) - (T (* ; - "now move point CX2 CY2 so that one of the coordinates is on one of the boundaries") - (COND - ((IGREATERP CA2 7) (* ; "y2 less than bottom") - [SETQ CX2 (IPLUS X1 (\GREATESTPTAT DX DY (IDIFFERENCE Y1 BOTTOM] - (SETQ CY2 BOTTOM)) - ((IGREATERP CA2 3) (* ; "y2 is greater than top") - [SETQ CX2 (IPLUS X1 (\GREATESTPTAT DX DY (IDIFFERENCE TOP Y1] - (SETQ CY2 TOP)) - (T (* ; "x2 is greater than right") - [SETQ CY2 (COND - [YMOVEUP (IPLUS Y1 (\GREATESTPTAT DY DX - (IDIFFERENCE RIGHT X1] - (T (IDIFFERENCE Y1 (\GREATESTPTAT DY DX - (IDIFFERENCE RIGHT X1] - (SETQ CX2 RIGHT))) - (SETQ CA2 (\CLIPCODE CX2 CY2 LEFT RIGHT TOP BOTTOM] - (GO CLIPLP]) -) -(DEFINEQ - -(\HQFX80.DRAWCIRCLE - [LAMBDA (HQFX80STREAM CENTERX CENTERY RADIUS BRUSH DASHING)(* hdj "21-Nov-86 17:11") - - (* ;; "draw a circle on a hqfx80 stream") - - (DECLARE (LOCALVARS . T)) - (COND - ((OR (NOT (NUMBERP RADIUS)) - (ILESSP (SETQ RADIUS (FIXR RADIUS)) - 0)) - (\ILLEGAL.ARG RADIUS)) - ((EQ RADIUS 0) (* ; "don't draw anything.") - NIL) - (T (GLOBALRESOURCE \HQFX80.BRUSHBBT - (WITH-HQFX80-DATA (HQFX80DATA HQFX80STREAM) - (PROG ((X 0) - (Y RADIUS) - (D (ITIMES 2 (- 1 RADIUS))) - LEFT RIGHTPLUS1 TOP BOTTOM DESTINATION-BITMAP BRUSHWIDTH BRUSHHEIGHT - LEFTMINUSBRUSH BOTTOMMINUSBRUSH TOPMINUSBRUSH BRUSHBM DESTINATIONBASE - BRUSHBASE RASTERWIDTH BRUSHRASTERWIDTH OPERATION HEIGHTMINUS1 CX CY - (BBT \HQFX80.BRUSHBBT) - (USERFN (AND (LITATOM BRUSH) - BRUSH))) - - (* ;; "many of these variables are used by the macro for \HQFX80.CURVEPT that passes them to \BBTCURVEPT and .SETUP.FOR.\HQFX80.BBTCURVEPT. sets them up.") - - [COND - (USERFN (* ; - "if calling user fn, don't bother with set up and leave points in stream coordinates.") - (SETQ CX CENTERX) - (SETQ CY CENTERY)) - (T (.SETUP.FOR.\HQFX80.BBTCURVEPT. HQFX80DATA) - (SETQ CX (- CENTERX (FOLDLO BRUSHWIDTH 2))) - (* ; - "take into account the brush thickness.") - (SETQ CY (- CENTERY (FOLDLO BRUSHHEIGHT 2] - [COND - ((EQ RADIUS 1) (* ; "put a single brush down.") - (* ; - "draw the top and bottom most points.") - (COND - (USERFN (APPLY* USERFN CX CY HQFX80STREAM)) - (T (\HQFX80.CURVEPT CX CY))) - (RETURN)) - (T (* ; - "draw the top and bottom most points.") - (COND - (USERFN (APPLY* USERFN CX (+ CY RADIUS) - HQFX80STREAM) - (APPLY* USERFN CX (- CY RADIUS) - HQFX80STREAM)) - (T (\HQFX80.CURVEPT CX (+ CY RADIUS)) - (\HQFX80.CURVEPT CX (- CY RADIUS] - LP (* ; - "(UNFOLD x 2) is used instead of (ITIMES x 2)") - [COND - [(IGREATERP 0 D) - (SETQ X (ADD1 X)) - (COND - ((IGREATERP (UNFOLD (+ D Y) - 2) - 1) - (SETQ D (+ D (UNFOLD (- X Y) - 2) - 4)) - (SETQ Y (SUB1 Y))) - (T (SETQ D (+ D (UNFOLD X 2) - 1] - ((OR (EQ 0 D) - (IGREATERP X D)) - (SETQ X (ADD1 X)) - (SETQ D (+ D (UNFOLD (- X Y) - 2) - 4)) - (SETQ Y (SUB1 Y))) - (T (SETQ D (+ (- D (UNFOLD Y 2)) - 3)) - (SETQ Y (SUB1 Y] - (COND - [(EQ Y 0) - - (* ;; "left most and right most points are drawn specially so that they are not duplicated which leaves a hole in XOR mode.") - - (COND - (USERFN (APPLY* USERFN (+ CX X) - CY HQFX80STREAM) - (APPLY* USERFN (- CX X) - CY HQFX80STREAM)) - (T (\HQFX80.CURVEPT (+ CX X) - CY) - (\HQFX80.CURVEPT (- CX X) - CY] - (T (COND - (USERFN (APPLY* USERFN (+ CX X) - (+ CY Y) - HQFX80STREAM) - (APPLY* USERFN (- CX X) - (+ CY Y) - HQFX80STREAM) - (APPLY* USERFN (+ CX X) - (- CY Y) - HQFX80STREAM) - (APPLY* USERFN (- CX X) - (- CY Y) - HQFX80STREAM)) - (T (\HQFX80.DRAW-4-CIRCLE-POINTS CX CY X Y))) - (GO LP))) - (MOVETO CENTERX CENTERY HQFX80STREAM) - (RETURN NIL]) - -(\HQFX80.CREATE-BRUSH-BBT - [LAMBDA (BRUSHBM HQFX80DATA BITBLT-TABLE) (* hdj "18-Nov-86 17:33") - - (* ;; "Initializes BITBLT-TABLE for the BRUSHBM and an HQFX80 stream and returns BITBLT-TABLE, unless the BRUSHBM is a 1-point brush, in which case it returns NIL.") - - (COND - ((AND (EQ (fetch (BITMAP BITMAPHEIGHT) of BRUSHBM) - 1) - (EQ (fetch (BITMAP BITMAPWIDTH) of BRUSHBM) - 1) - (EQ (BITMAPBIT BRUSHBM 0 0) - 1)) (* ; - "special case of single point brush shape.") - NIL) - (T (* ; - "update as many fields in the brush bitblt table as possible from HQFX80DATA.") - (replace (PILOTBBT PBTDESTBPL) of BITBLT-TABLE with (UNFOLD (fetch (BITMAP - BITMAPRASTERWIDTH - ) - of (HQFX80DATA-BACKINGBITMAP - HQFX80DATA)) - BITSPERWORD)) - (replace (PILOTBBT PBTSOURCEBPL) of BITBLT-TABLE with (UNFOLD (fetch (BITMAP - BITMAPRASTERWIDTH - ) of BRUSHBM) - BITSPERWORD)) - (replace (PILOTBBT PBTFLAGS) of BITBLT-TABLE with 0) - (replace (PILOTBBT PBTDISJOINT) of BITBLT-TABLE with T) - (\SETPBTFUNCTION BITBLT-TABLE (HQFX80DATA-SOURCETYPE HQFX80DATA) - (SELECTQ (HQFX80DATA-OPERATION HQFX80DATA) - ((PAINT REPLACE) - 'PAINT) - ((INVERT ERASE) - 'ERASE) - (SHOULDNT))) - BITBLT-TABLE]) -) - -(DEFMACRO \HQFX80.DRAW-4-CIRCLE-POINTS (CENTER-X CENTER-Y EDGE-X EDGE-Y) - - (* ;; "draw four points 90 degress apart on the circumference of a circle") - - `[PROGN (\HQFX80.CURVEPT (+ ,CENTER-X ,EDGE-X) - (+ ,CENTER-Y ,EDGE-Y)) - (\HQFX80.CURVEPT (- ,CENTER-X ,EDGE-X) - (+ ,CENTER-Y ,EDGE-Y)) - (\HQFX80.CURVEPT (+ ,CENTER-X ,EDGE-X) - (- ,CENTER-Y ,EDGE-Y)) - (\HQFX80.CURVEPT (- ,CENTER-X ,EDGE-X) - (- ,CENTER-Y ,EDGE-Y]) -(DEFINEQ - -(\HQFX80.FILLCIRCLE - [LAMBDA (HQFX80STREAM CENTERX CENTERY RADIUS TEXTURE) (* hdj " 6-Nov-86 15:45") - (COND - ((OR (NOT (NUMBERP RADIUS)) - (ILESSP (SETQ RADIUS (FIXR RADIUS)) - 0)) - (\ILLEGAL.ARG RADIUS)) - (T (WITH-HQFX80-DATA (HQFX80DATA HQFX80STREAM) - (GLOBALRESOURCE \HQFX80.BRUSHBBT - (LET* [(CLIPPINGREGION (HQFX80DATA-CLIPPINGREGION HQFX80DATA)) - (TOP (SUB1 (fetch (REGION TOP) of CLIPPINGREGION))) - (BOTTOM (fetch (REGION BOTTOM) of CLIPPINGREGION)) - (LEFT (fetch (REGION LEFT) of CLIPPINGREGION)) - (RIGHT (SUB1 (fetch (REGION RIGHT) of HQFX80DATA] - (PROG (TOP BOTTOM RIGHT LEFT OPERATION DESTINATION-BITMAP (X 0) - (Y RADIUS) - (D (ITIMES 2 (- 1 RADIUS))) - DESTINATIONBASE RASTERWIDTH CX CY TEXTUREBM GRAYHEIGHT - GRAYWIDTH GRAYBASE (FCBBT \HQFX80.BRUSHBBT)) - (SETQ OPERATION (HQFX80DATA-OPERATION HQFX80DATA)) - (SETQ DESTINATION-BITMAP (HQFX80DATA-BACKINGBITMAP HQFX80DATA)) - [SETQ TEXTUREBM (COND - ((BITMAPP TEXTURE)) - [(AND (NULL TEXTURE) - (BITMAPP (HQFX80DATA-TEXTURE HQFX80DATA] - ([OR (FIXP TEXTURE) - (AND (NULL TEXTURE) - (SETQ TEXTURE (HQFX80DATA-TEXTURE - HQFX80DATA] - (* ; - "create bitmap for the texture. Could reuse a bitmap but for now this is good enough.") - (SETQ TEXTUREBM (BITMAPCREATE 16 4)) - (SETQ GRAYBASE (fetch (BITMAP BITMAPBASE) - of TEXTUREBM)) - (\PUTBASE GRAYBASE 0 - (\SFReplicate (LOGAND (LRSH TEXTURE 12 - ) - 15))) - (\PUTBASE GRAYBASE 1 - (\SFReplicate (LOGAND (LRSH TEXTURE 8) - 15))) - (\PUTBASE GRAYBASE 2 - (\SFReplicate (LOGAND (LRSH TEXTURE 4) - 15))) - (\PUTBASE GRAYBASE 3 (\SFReplicate - (LOGAND TEXTURE 15))) - TEXTUREBM) - (T (\ILLEGAL.ARG TEXTURE] - (SETQ GRAYBASE (fetch (BITMAP BITMAPBASE) of TEXTUREBM)) - (SETQ DESTINATIONBASE (fetch (BITMAP BITMAPBASE) of - DESTINATION-BITMAP - )) - (SETQ RASTERWIDTH (fetch (BITMAP BITMAPRASTERWIDTH) of - DESTINATION-BITMAP - )) - - (* ;; "update as many fields in the brush bitblt table as possible from the stream.") - - (replace PBTFLAGS of FCBBT with 0) - (replace PBTDESTBPL of FCBBT with (UNFOLD RASTERWIDTH BITSPERWORD - )) - - (* ;; "clear gray information. PBTSOURCEBPL is used for gray information too.") - - (replace PBTSOURCEBPL of FCBBT with 0) - (replace PBTUSEGRAY of FCBBT with T) - [replace PBTGRAYWIDTHLESSONE of FCBBT - with (SUB1 (SETQ GRAYWIDTH (IMIN (fetch (BITMAP BITMAPWIDTH) - of TEXTUREBM) - 16] - [replace PBTGRAYHEIGHTLESSONE of FCBBT - with (SUB1 (SETQ GRAYHEIGHT (IMIN (fetch (BITMAP BITMAPHEIGHT) - of TEXTUREBM) - 16] - (replace PBTDISJOINT of FCBBT with T) - (\SETPBTFUNCTION FCBBT 'TEXTURE OPERATION) - (replace PBTHEIGHT of FCBBT with 1) - (* ; - "take into account the brush thickness.") - (SETQ CX (\DSPTRANSFORMX CENTERX HQFX80DATA)) - (SETQ CY (\DSPTRANSFORMY CENTERY HQFX80DATA)) - (* ; - "change Y TOP and BOTTOM to be in bitmap coordinates") - (SETQ CY (\SFInvert DESTINATION-BITMAP CY)) - [SETQ BOTTOM (PROG1 (SUB1 (\SFInvert DESTINATION-BITMAP TOP)) - (SETQ TOP (SUB1 (\SFInvert DESTINATION-BITMAP - BOTTOM] - (COND - ((EQ RADIUS 0) (* ; - "put a single point down. Use \LINEBLT to get proper texture. NIL") - (\LINEBLT FCBBT CX CY CX DESTINATIONBASE RASTERWIDTH LEFT - RIGHT BOTTOM TOP GRAYWIDTH GRAYHEIGHT GRAYBASE 1) - (RETURN))) - LOOP - (* ; - "(UNFOLD x 2) is used instead of (ITIMES x 2)") - [COND - [(IGREATERP 0 D) - (SETQ X (ADD1 X)) - (COND - ((IGREATERP (UNFOLD (+ D Y) - 2) - 1) - (SETQ D (+ D (UNFOLD (- X Y) - 2) - 4))) - (T (SETQ D (+ D (UNFOLD X 2) - 1)) (* ; "don't draw unless Y changes.") - (GO LOOP] - ((OR (EQ 0 D) - (IGREATERP X D)) - (SETQ X (ADD1 X)) - (SETQ D (+ D (UNFOLD (- X Y) - 2) - 4))) - (T (SETQ D (+ (- D (UNFOLD Y 2)) - 3] - (COND - ((EQ Y 0) (* ; - "draw the middle line differently to avoid duplication.") - (\LINEBLT FCBBT (- CX X) - CY - (+ CX X) - DESTINATIONBASE RASTERWIDTH LEFT RIGHT BOTTOM TOP - GRAYWIDTH GRAYHEIGHT GRAYBASE 1)) - (T (\HQFX80.FILL-CIRCLE-BLT CX CY X Y) - (SETQ Y (SUB1 Y)) - (GO LOOP))) - (MOVETO CENTERX CENTERY HQFX80STREAM) - (RETURN NIL]) - -(\HQFX80.DRAWARC - [LAMBDA (HQFX80STREAM CENTERX CENTERY RADIUS STARTANGLE NDEGREES BRUSH DASHING) - (* hdj "20-Nov-86 14:27") - - (* ;; "draws an arc on an hqfx80stream") - - (\DRAWARC.GENERIC HQFX80STREAM CENTERX CENTERY RADIUS STARTANGLE NDEGREES BRUSH DASHING]) -) - -(DEFMACRO \HQFX80.FILL-CIRCLE-BLT (CENTER-X CENTER-Y X Y) - - (* ;; "calls bitblt twice to fill in one line of the circle.") - - `(PROGN (\LINEBLT FCBBT (- ,CENTER-X ,X) - (+ ,CENTER-Y ,Y) - (+ ,CENTER-X ,X) - DESTINATIONBASE RASTERWIDTH LEFT RIGHT BOTTOM TOP GRAYWIDTH GRAYHEIGHT GRAYBASE 1) - (\LINEBLT FCBBT (- ,CENTER-X ,X) - (- ,CENTER-Y ,Y) - (+ ,CENTER-X ,X) - DESTINATIONBASE RASTERWIDTH LEFT RIGHT BOTTOM TOP GRAYWIDTH GRAYHEIGHT GRAYBASE 1))) - - - -(* ;; "curve-drawing") - -(DEFINEQ - -(\HQFX80.DRAWCURVE - [LAMBDA (HQFX80STREAM KNOTS CLOSED BRUSH DASHING) (* hdj "19-Nov-86 14:42") - - (* ;; "draws a spline curve with a given brush on HQFX80STREAM") - - (GLOBALRESOURCE \HQFX80.BRUSHBBT - (LET ([DASHLST (AND DASHING (OR (AND (LISTP DASHING) - (EVERY DASHING (FUNCTION FIXP)) - DASHING) - (\ILLEGAL.ARG DASHING] - (BBT \HQFX80.BRUSHBBT)) - (SELECTQ (LENGTH KNOTS) - (0 - - (* ;; "No knots => empty curve rather than error") - - NIL) - (1 - - (* ;; "only one knot, put down a brush shape") - - (OR (type? POSITION (CAR KNOTS)) - (ERROR "bad knot" (CAR KNOTS))) - (DRAWPOINT (fetch XCOORD of (CAR KNOTS)) - (fetch YCOORD of (CAR KNOTS)) - BRUSH HQFX80STREAM)) - (2 (OR (type? POSITION (CAR KNOTS)) - (ERROR "bad knot" (CAR KNOTS))) - (OR (type? POSITION (CADR KNOTS)) - (ERROR "bad knot" (CADR KNOTS))) - (\HQFX80.LINEWITHBRUSH (fetch XCOORD of (CAR KNOTS)) - (fetch YCOORD of (CAR KNOTS)) - (fetch XCOORD of (CADR KNOTS)) - (fetch YCOORD of (CADR KNOTS)) - BRUSH DASHLST HQFX80STREAM BBT)) - (\HQFX80.DRAWCURVE2 (PARAMETRICSPLINE KNOTS CLOSED) - BRUSH DASHLST BBT HQFX80STREAM)) - HQFX80STREAM]) - -(\HQFX80.DRAWCURVE2 - [LAMBDA (SPLINE BRUSH DASHLST BBT HQFX80STREAM) (* hdj "19-Nov-86 11:58") - -(* ;;; "Given a spline curve, represented as a set of derivatives for each segment, draw it on HQFX80STREAM using the brush BRUSH, and dashing it according to DASHLST. For speed, use the bitblt table BBT.") - - (DECLARE (SPECVARS . T)) - - (* ;; "Should declare most of these variables local but currently have the \CURVE function between here and \CURVEBBT so can't") - - (WITH-HQFX80-DATA (HQFX80DATA HQFX80STREAM) - (PROG (BRUSHBM DESTINATION-BITMAP OPERATION BRUSHWIDTH BRUSHHEIGHT BRUSHBASE - BRUSHRASTERWIDTH LEFT RIGHTPLUS1 TOP BOTTOM DESTINATIONBASE LEFTMINUSBRUSH - BOTTOMMINUSBRUSH TOPMINUSBRUSH RASTERWIDTH NBITSRIGHTPLUS1 HEIGHTMINUS1 \CURX - \CURY \OLDX \OLDY \OLDERX \OLDERY LKNOT (DASHON T) - (DASHTAIL DASHLST) - (DASHCNT (CAR DASHLST)) - NPOINTS NSEGS POINTSPERSEG DX D2X D3X DY D2Y D3Y D1 D2 D3 X0 Y0 X1 Y1 DX DDX - DDDX DY DDY DDDY (XPOLY (create POLYNOMIAL)) - (X/PRIME/POLY (create POLYNOMIAL)) - (YPOLY (create POLYNOMIAL)) - (Y/PRIME/POLY (create POLYNOMIAL)) - (USERFN (AND (LITATOM BRUSH) - BRUSH))) - - (* ;; "many of these variables are used by the macro for \CURVEPT that passes them to \BBTCURVEPT and .SETUP.FOR.\HQFX80.BBTCURVEPT. sets them up.") - - [COND - (USERFN (* ; - "if calling user fn, don't bother with set up and leave points in window coordinates.") - (\CURVESTART (ELT (fetch (SPLINE SPLINEX) of SPLINE) - 1) - (ELT (fetch (SPLINE SPLINEY) of SPLINE) - 1))) - (T (.SETUP.FOR.\HQFX80.BBTCURVEPT. HQFX80DATA) - (* ; - "curve pts will be kept in screen coordinates, start smoothing values there.") - (\CURVESTART (IDIFFERENCE (ELT (fetch (SPLINE SPLINEX) of SPLINE) - 1) - (LRSH (SUB1 BRUSHWIDTH) - 1)) - (IDIFFERENCE (ELT (fetch (SPLINE SPLINEY) of SPLINE) - 1) - (LRSH (SUB1 BRUSHHEIGHT) - 1] - [bind PERSEG for KNOT from 1 to (SUB1 (fetch %#KNOTS of SPLINE)) - when (PROGN - -(* ;;; "Loop thru the segments of the spline curve, drawing each in turn.") - - (SETQ X0 (ELT (fetch (SPLINE SPLINEX) of SPLINE) - KNOT)) (* ; - "Set up X0,Y0 -- the starting point of this segment") - (SETQ Y0 (ELT (fetch (SPLINE SPLINEY) of SPLINE) - KNOT)) - (SETQ X1 (ELT (fetch (SPLINE SPLINEX) of SPLINE) - (ADD1 KNOT))) (* ; "And X1,Y1 -- the ending point") - (SETQ Y1 (ELT (fetch (SPLINE SPLINEY) of SPLINE) - (ADD1 KNOT))) - (SETQ DX (ELT (fetch (SPLINE SPLINEDX) of SPLINE) - KNOT)) (* ; - "And the initial derivatives -- first") - (SETQ DY (ELT (fetch (SPLINE SPLINEDY) of SPLINE) - KNOT)) - (SETQ DDX (ELT (fetch SPLINEDDX of SPLINE) - KNOT)) (* ; "Second") - (SETQ DDY (ELT (fetch SPLINEDDY of SPLINE) - KNOT)) - (SETQ DDDX (ELT (fetch SPLINEDDDX of SPLINE) - KNOT)) (* ; "And third.") - (SETQ DDDY (ELT (fetch SPLINEDDDY of SPLINE) - KNOT)) - (SETQ NPOINTS (FOLDLO (ITIMES (IMAX (IABS (IDIFFERENCE X1 X0)) - (IABS (IDIFFERENCE Y1 Y0))) - 3) - 2)) - - (* ;; "Establish an upper bound on the number of points we'll draw while painting this segment. We know that 3/2 the maximum DX or DY is the right amount.") - - (NOT (ZEROP NPOINTS))) - do - - (* ;; "NPOINTS can be zero if a knot is duplicated in the spline curve to produce a discontinuity. Skip over zero-length segments to avoid divide-by-zero trouble") - - (* ;; "To prevent round-off errors from accumulating, we'll draw this segment as runs of no more than 64 points each -- recomputing completely at the start of each run. This is a trade off of speed and accuracy.") - - [COND - ((ILEQ NPOINTS 64) (* ; - "Fewer than 64 points to draw. Do it in one run.") - (SETQ NSEGS 1) - (SETQ POINTSPERSEG NPOINTS)) - (T (* ; - "Figure out how many runs to do it in.") - (SETQ NSEGS (FOLDLO NPOINTS 64)) - (SETQ POINTSPERSEG 64) - (SETQ NPOINTS (UNFOLD NSEGS 64] - (SETQ D1 (FQUOTIENT 1.0 NPOINTS)) (* ; - "Set up ÿ&Eÿt, ÿ&Eÿt**2 and ÿ&Eÿt**3, for computing the next point.") - (SETQ D2 (FTIMES D1 D1)) - (SETQ D3 (FTIMES D2 D1)) - (SETQ D3X (FTIMES D3 DDDX)) - (SETQ D3Y (FTIMES D3 DDDY)) - (COND - [(EQ NSEGS 1) (* ; "Just one segment to draw.") - [SETQ DX (FPLUS (FTIMES D1 DX) - (FTIMES DDX D2 0.5) - (FTIMES DDDX D3 (CONSTANT (FQUOTIENT 1.0 6.0] - (SETQ D2X (FPLUS (FTIMES D2 DDX) - (FTIMES D3 DDDX))) - [SETQ DY (FPLUS (FTIMES D1 DY) - (FTIMES D2 DDY 0.5) - (FTIMES D3 DDDY (CONSTANT (FQUOTIENT 1.0 6.0] - (SETQ D2Y (FPLUS (FTIMES D2 DDY) - (FTIMES D3 DDDY))) - (COND - (USERFN (* ; - "Draw this run of points, using the user's supplied function.") - (\HQFX80.DRAWCURVE3 X0 Y0 X1 Y1 DX DY D2X D2Y D3X D3Y NPOINTS - BRUSHBM HQFX80DATA BBT NIL USERFN HQFX80STREAM)) - (T (* ; - "Draw this run of points, using the brush.") - (\HQFX80.DRAWCURVE3 X0 Y0 X1 Y1 DX DY D2X D2Y D3X D3Y NPOINTS - BRUSHBM HQFX80DATA BBT NIL NIL HQFX80STREAM] - (T (* ; - "Have to do this segment in several runs.") - (SETQ PERSEG (FQUOTIENT 1.0 NSEGS)) - (LOADPOLY XPOLY X/PRIME/POLY DDDX DDX DX X0) - (LOADPOLY YPOLY Y/PRIME/POLY DDDY DDY DY Y0) - (bind (TT _ 0.0) - (DDDX/PER/SEG _ (FTIMES DDDX PERSEG)) - (DDDY/PER/SEG _ (FTIMES DDDY PERSEG)) - [D3XFACTOR _ (FTIMES D3 DDDX (CONSTANT (FQUOTIENT 1.0 6.0] - [D3YFACTOR _ (FTIMES D3 DDDY (CONSTANT (FQUOTIENT 1.0 6.0] - for I from 0 to (SUB1 NSEGS) - do - -(* ;;; "TT is the parameter, and runs from 0 to 1 as the curve segment runs from beginning to end.") - - (SETQ TT (FPLUS TT PERSEG)) - (SETQ X1 (POLYEVAL TT XPOLY 3)) - (SETQ Y1 (POLYEVAL TT YPOLY 3)) - (SETQ DX (FPLUS (FTIMES D1 DX) - (FTIMES D2 DDX 0.5) - D3XFACTOR)) - (SETQ D2X (FPLUS (FTIMES D2 DDX) - (FTIMES D3 DDDX))) - (SETQ DY (FPLUS (FTIMES D1 DY) - (FTIMES D2 DDY 0.5) - D3YFACTOR)) - (SETQ D2Y (FPLUS (FTIMES D2 DDY) - (FTIMES D3 DDDY))) - (COND - (USERFN (\HQFX80.DRAWCURVE3 X0 Y0 X1 Y1 DX DY D2X D2Y D3X D3Y - 64 BRUSHBM HQFX80DATA BBT NIL USERFN - HQFX80STREAM)) - (T (\HQFX80.DRAWCURVE3 X0 Y0 X1 Y1 DX DY D2X D2Y D3X D3Y 64 - BRUSHBM HQFX80DATA BBT NIL NIL HQFX80STREAM))) - (SETQ X0 X1) - (SETQ Y0 Y1) - (SETQ DDX (FPLUS DDX DDDX/PER/SEG)) - (SETQ DDY (FPLUS DDY DDDY/PER/SEG)) - (SETQ DX (POLYEVAL TT X/PRIME/POLY 2)) - (SETQ DY (POLYEVAL TT Y/PRIME/POLY 2] - -(* ;;; "Draw the final point on the curve.") - - (COND - (USERFN (\HQFX80.DRAWCURVE3 0 0 0 0 0 0 0 0 0 0 0 BRUSHBM HQFX80DATA BBT T USERFN - HQFX80STREAM)) - (T (\HQFX80.DRAWCURVE3 0 0 0 0 0 0 0 0 0 0 0 BRUSHBM HQFX80DATA BBT T NIL - HQFX80STREAM]) - -(\HQFX80.DRAWCURVE3 - [LAMBDA (X0 Y0 X1 Y1 DX DY DDX DDY DDDX DDDY N BRUSHBM HQFX80DATA BBT ENDING USERFN HQFX80STREAM) - (* hdj "19-Nov-86 12:18") - (DECLARE (LOCALVARS . T) - (USEDFREE BRUSHWIDTH BRUSHHEIGHT \CURX \OLDX \CURY \OLDY)) - - (* ;; "Puts a spline segment down. Since it calls BitBlt directly, it must clip to both clipping region and the size of the destination bit map.") - - (PROG (OLDX X Y OLDY DELTAX DELTAY DELTA TX TY OOLDX OOLDY) - [COND - ((NEQ N 0) - [COND - (USERFN (* ; - "if there is a user fn, stay in his coordinates.") - (SETQ OLDX X0) - (SETQ OLDY Y0)) - (T - - (* ;; "SUB1 on brush size is to cause the extra bit to be in the top left direction as is documented for lines.") - - (SETQ OLDX (IDIFFERENCE X0 (LRSH (SUB1 BRUSHWIDTH) - 1))) - (SETQ OLDY (IDIFFERENCE Y0 (LRSH (SUB1 BRUSHHEIGHT) - 1] (* ; "draw origin point") - (\HQFX80.SMOOTH-CURVE OLDX OLDY USERFN HQFX80STREAM) - (* ; - "convert the derivatives to fractional representation.") - (* ; "\CONVERTTOFRACTION always returns a large number box. This uses .49 because .5 causes rounding up.") - (SETQ X (\CONVERTTOFRACTION (FPLUS OLDX 0.49))) - (SETQ Y (\CONVERTTOFRACTION (FPLUS OLDY 0.49))) - (SETQ DX (\CONVERTTOFRACTION DX)) - (SETQ DY (\CONVERTTOFRACTION DY)) - (SETQ DDX (\CONVERTTOFRACTION DDX)) - (SETQ DDY (\CONVERTTOFRACTION DDY)) - (SETQ DDDX (\CONVERTTOFRACTION DDDX)) - (SETQ DDDY (\CONVERTTOFRACTION DDDY)) - [for I from 1 to N do (* ; - "uses \BOXIPLUS to save box and also set the new value of the variable.") - (\BOXIPLUS X DX) - (\BOXIPLUS DX DDX) - (\BOXIPLUS DDX DDDX) - (\BOXIPLUS Y DY) - (\BOXIPLUS DY DDY) - (\BOXIPLUS DDY DDDY) - (SETQ OOLDX OLDX) - (SETQ OOLDY OLDY) - (SETQ DELTAX (IDIFFERENCE (SETQ OLDX (\GETINTEGERPART X)) - OOLDX)) - (SETQ DELTAY (IDIFFERENCE (SETQ OLDY (\GETINTEGERPART Y)) - OOLDY)) - (SETQ DELTA (IMAX (IABS DELTAX) - (IABS DELTAY))) - (COND - ((EQ DELTA 1) - (\HQFX80.SMOOTH-CURVE OLDX OLDY USERFN HQFX80STREAM))) - (COND - ((IGREATERP DELTA 1) - (SETQ DELTAX (\CONVERTTOFRACTION (FQUOTIENT DELTAX DELTA))) - (SETQ DELTAY (\CONVERTTOFRACTION (FQUOTIENT DELTAY DELTA))) - (SETQ TX (\CONVERTTOFRACTION OOLDX)) - (SETQ TY (\CONVERTTOFRACTION OOLDY)) - (for I from 0 to DELTA do (\HQFX80.SMOOTH-CURVE ( - \GETINTEGERPART - TX) - (\GETINTEGERPART TY) - USERFN HQFX80STREAM) - (\BOXIPLUS TX DELTAX) - (\BOXIPLUS TY DELTAY] - (* ; "draw the end point") - (COND - (USERFN (\HQFX80.SMOOTH-CURVE X1 Y1 USERFN HQFX80STREAM)) - (T (\HQFX80.SMOOTH-CURVE (IDIFFERENCE X1 (LRSH (SUB1 BRUSHWIDTH) - 1)) - (IDIFFERENCE Y1 (LRSH (SUB1 BRUSHHEIGHT) - 1)) - NIL HQFX80STREAM))) - (AND HQFX80STREAM (MOVETO (FIX X1) - (FIX Y1) - HQFX80STREAM] - (COND - (ENDING (\HQFX80.SMOOTH-CURVE (IPLUS \CURX \CURX (IMINUS \OLDX)) - (IPLUS \CURY \CURY (IMINUS \OLDY)) - USERFN HQFX80STREAM) - (\HQFX80.SMOOTH-CURVE (IPLUS \CURX \CURX (IMINUS \OLDX)) - (IPLUS \CURY \CURY (IMINUS \OLDY)) - USERFN HQFX80STREAM))) - (RETURN NIL]) - -(\HQFX80.LINEWITHBRUSH - [LAMBDA (X1 Y1 X2 Y2 BRUSH DASHLST HQFX80STREAM BBT) (* ; "Edited 5-Jan-87 16:57 by hdj") - - (* ;; "draws a line with a brush on a HQFX80STREAM") - - (DECLARE (LOCALVARS . T)) - (WITH-HQFX80-DATA (HQFX80DATA HQFX80STREAM) - (PROG (DESTINATION-BITMAP LEFT RIGHTPLUS1 TOP BOTTOM BRUSHWIDTH BRUSHHEIGHT LEFTMINUSBRUSH - BOTTOMMINUSBRUSH TOPMINUSBRUSH BRUSHBM DESTINATIONBASE BRUSHBASE RASTERWIDTH - BRUSHRASTERWIDTH OPERATION HEIGHTMINUS1 HALFBRUSHWIDTH HALFBRUSHHEIGHT DX DY - YINC CDL (DASHON T) - (DASHTAIL DASHLST) - (DASHCNT (CAR DASHLST)) - (USERFN (AND (LITATOM BRUSH) - BRUSH))) - - (* ;; "many of these variables are used by the macro for \HQFX80.CURVEPT that passes them to \HQFX80.BBTCURVEPT and .SETUP.FOR.\\HQFX80.BBTCURVEPT. sets them up.") - - [COND - ((NOT USERFN) - (.SETUP.FOR.\HQFX80.BBTCURVEPT. HQFX80DATA) - (* ; - "SUB1 is so that the extra bit goes on the top and right as it is documented as doing for lines.") - [SETQ X1 (- X1 (SETQ HALFBRUSHWIDTH (FOLDLO (SUB1 BRUSHWIDTH) - 2] - (SETQ X2 (- X2 HALFBRUSHWIDTH)) - [SETQ Y1 (- Y1 (SETQ HALFBRUSHHEIGHT (FOLDLO (SUB1 BRUSHHEIGHT) - 2] - (* ; - "take into account the brush thickness.") - (SETQ Y2 (- Y2 HALFBRUSHHEIGHT] (* ; - "arrange things so that dx is positive.") - (COND - ((> X1 X2) (* ; "switch points") - (swap X1 X2) - (swap Y1 Y2))) - (SETQ DX (ADD1 (- X2 X1))) - [SETQ DY (ADD1 (COND - ((> Y2 Y1) - (SETQ YINC 1) - (- Y2 Y1)) - (T (SETQ YINC -1) - (- Y1 Y2] - [SETQ CDL (HALF (COND - ((> DX DY) (* ; - "set up the bucket so that the ends will be the same.") - (IREMAINDER DX DY)) - (T (IREMAINDER DY DX] - [COND - [USERFN (* ; - "if user function is being called, don't bother bringing window to top uninterruptably.") - (COND - ((IGEQ DX DY) (* ; "X is the fastest mover.") - (until (> X1 X2) - do (* ; "main loop") - (COND - (DASHON (APPLY* USERFN X1 Y1 HQFX80STREAM))) - [COND - (DASHTAIL (* ; "do dashing.") - (COND - ((EQ 0 (SETQ DASHCNT (SUB1 DASHCNT))) - (SETQ DASHON (NOT DASHON)) - (SETQ DASHTAIL (OR (LISTP (CDR DASHTAIL)) - DASHLST)) - (SETQ DASHCNT (CAR DASHTAIL] - [COND - ((NOT (> DX (add CDL DY))) - (add Y1 YINC) - (COND - ((COND - ((EQ YINC -1) - (ILESSP Y1 Y2)) - ((> Y1 Y2))) - (RETURN))) - (SETQ CDL (- CDL DX] - (add X1 1))) - (T (* ; "Y is the fastest mover.") - (until (COND - ((EQ YINC -1) - (ILESSP Y1 Y2)) - ((> Y1 Y2))) - do (* ; "main loop") - (COND - (DASHON (APPLY* USERFN X1 Y1 HQFX80STREAM))) - [COND - (DASHTAIL (* ; "do dashing.") - (COND - ((EQ 0 (SETQ DASHCNT (SUB1 DASHCNT))) - (SETQ DASHON (NOT DASHON)) - (SETQ DASHTAIL (OR (LISTP (CDR DASHTAIL)) - DASHLST)) - (SETQ DASHCNT (CAR DASHTAIL] - [COND - ([NOT (> DY (SETQ CDL (+ CDL DX] - (COND - ((> (SETQ X1 (ADD1 X1)) - X2) - (RETURN))) - (SETQ CDL (- CDL DY] - (add Y1 YINC] - (T (COND - [(IGEQ DX DY) (* ; "X is the fastest mover.") - (until (> X1 X2) do (* ; "main loop") - (COND - (DASHON (\HQFX80.CURVEPT X1 Y1))) - [COND - (DASHTAIL (* ; "do dashing.") - (COND - ((EQ 0 (SETQ DASHCNT (SUB1 DASHCNT))) - (SETQ DASHON (NOT DASHON)) - (SETQ DASHTAIL - (OR (LISTP (CDR DASHTAIL)) - DASHLST)) - (SETQ DASHCNT (CAR DASHTAIL] - [COND - ([NOT (> DX (SETQ CDL (+ CDL DY] - (SETQ Y1 (+ Y1 YINC)) - (COND - ((COND - ((EQ YINC -1) - (ILESSP Y1 Y2)) - ((> Y1 Y2))) - (RETURN))) - (SETQ CDL (- CDL DX] - (SETQ X1 (ADD1 X1] - (T (* ; "Y is the fastest mover.") - (until (COND - ((EQ YINC -1) - (ILESSP Y1 Y2)) - ((> Y1 Y2))) - do (* ; "main loop") - (COND - (DASHON (\HQFX80.CURVEPT X1 Y1))) - [COND - (DASHTAIL (* ; "do dashing.") - (COND - ((EQ 0 (SETQ DASHCNT (SUB1 DASHCNT))) - (SETQ DASHON (NOT DASHON)) - (SETQ DASHTAIL (OR (LISTP (CDR DASHTAIL)) - DASHLST)) - (SETQ DASHCNT (CAR DASHTAIL] - [COND - ([NOT (> DY (SETQ CDL (+ CDL DX] - (COND - ((> (SETQ X1 (ADD1 X1)) - X2) - (RETURN))) - (SETQ CDL (- CDL DY] - (SETQ Y1 (+ Y1 YINC] - (RETURN NIL]) -) -(DEFINEQ - -(\HQFX80.BBTCURVEPT - [LAMBDA (X Y BBT LEFT BRUSHWIDTH LEFTMINUSBRUSH RIGHTPLUS1 TOPMINUSBRUSH DESTINATION-BITMAP - BRUSHHEIGHT BOTTOMMINUSBRUSH TOP BRUSHBASE DESTINATIONBASE RASTERWIDTH BRUSHRASTERWIDTH - HQFX80DATA) (* hdj " 6-Nov-86 14:36") - - (* ;; "Called by \hqfx80.CURVEPT macro. Draws a brush point by bitblting BRUSHBM to point X,Y in DestinationBitMap. BBT is a BitBlt table where everything is already set except the source and destination addresses, width and height. In other words, only the easy stuff") - (* ; "") - (* ; "set the width fields of the bbt") - [PROG (CLIPPEDTOP STY) - [COND - [(ILEQ Y TOPMINUSBRUSH) (* ; - "the top part of the brush is visible") - (SETQ CLIPPEDTOP (IPLUS Y BRUSHHEIGHT)) - (replace PBTSOURCE of BBT with BRUSHBASE) - (replace PBTHEIGHT of BBT with (IMIN BRUSHHEIGHT (IDIFFERENCE Y BOTTOMMINUSBRUSH] - (T (* ; "only the bottom is visible") - (SETQ CLIPPEDTOP TOP) - [replace PBTSOURCE of BBT with (\ADDBASE BRUSHBASE (ITIMES BRUSHRASTERWIDTH - (SETQ STY (IDIFFERENCE - Y TOPMINUSBRUSH] - (replace PBTHEIGHT of BBT with (IDIFFERENCE (IMIN BRUSHHEIGHT (IDIFFERENCE Y - BOTTOMMINUSBRUSH - )) - STY] - (replace PBTDEST of BBT with (\ADDBASE DESTINATIONBASE (ITIMES RASTERWIDTH (\SFInvert - - DESTINATION-BITMAP - CLIPPEDTOP] - [COND - [(ILESSP X LEFT) (* ; - "only the right part of the brush is visible") - (replace PBTDESTBIT of BBT with LEFT) - (replace PBTSOURCEBIT of BBT with (IDIFFERENCE BRUSHWIDTH (replace PBTWIDTH of BBT - with (IDIFFERENCE X - LEFTMINUSBRUSH] - (T (* ; "left edge is visible") - (replace PBTDESTBIT of BBT with X) - (replace PBTSOURCEBIT of BBT with 0) (* ; - "set width to the amount that is visible") - (replace PBTWIDTH of BBT with (IMIN BRUSHWIDTH (IDIFFERENCE RIGHTPLUS1 X] - (\PILOTBITBLT BBT 0]) -) -(DECLARE%: EVAL@COMPILE - -(PUTPROPS \HQFX80.CURVEPT MACRO [OPENLAMBDA (X Y) - - (* ;; "puts a brush shape at point X,Y. Assumes X and Y have been corrected so that it is the lower left corner of the brush. Does a clipping to the region defined by LEFT RIGHTPLUS1 BOTTOM and LEFTMINUSBRUSH TOPMINUSBRUSH BOTTOMMINUSBRUSH.") - - (COND - ((OR (ILEQ X LEFTMINUSBRUSH) - (IGEQ X RIGHTPLUS1) - (ILEQ Y BOTTOMMINUSBRUSH) - (IGEQ Y TOP)) (* ; "Brush is entirely out of region") - NIL) - ((NULL BBT) (* ; - "Special case of single point brush") - (\FBITMAPBIT DESTINATIONBASE X Y OPERATION HEIGHTMINUS1 - RASTERWIDTH)) - (T (* ; - "Some part of the brush in in the region") - (\HQFX80.BBTCURVEPT X Y BBT LEFT BRUSHWIDTH LEFTMINUSBRUSH - RIGHTPLUS1 TOPMINUSBRUSH DESTINATION-BITMAP - BRUSHHEIGHT BOTTOMMINUSBRUSH TOP BRUSHBASE - DESTINATIONBASE RASTERWIDTH BRUSHRASTERWIDTH - HQFX80DATA]) -) - -(DEFMACRO \HQFX80.SMOOTH-CURVE (NEWX NEWY USERFN HQFX80STREAM) - `(LET [(DX (IABS (- ,NEWX \OLDX))) - (DY (IABS (- ,NEWY \OLDY] - (COND - ((OR (> DX 1) - (> DY 1)) - [COND - ((NEQ [+ (ADD1 (- \OLDX \OLDERX)) - (ITIMES 3 (ADD1 (- \OLDY \OLDERY] - 4) - [COND - (DASHON (COND - (,USERFN (APPLY* ,USERFN \OLDX \OLDY ,HQFX80STREAM)) - (T (\HQFX80.CURVEPT \OLDX \OLDY] - (COND - (DASHTAIL (COND - ((EQ 0 (SETQ DASHCNT (SUB1 DASHCNT))) - (SETQ DASHON (NOT DASHON)) - (SETQ DASHTAIL (OR (LISTP (CDR DASHTAIL)) - DASHLST)) - (SETQ DASHCNT (CAR DASHTAIL] - (SETQ \OLDERX \OLDX) - (SETQ \OLDERY \OLDY) - (SETQ \OLDX \CURX) - (SETQ \OLDY \CURY))) - (SETQ \CURX ,NEWX) - (SETQ \CURY ,NEWY))) - -(DEFMACRO .SETUP.FOR.\HQFX80.BBTCURVEPT. (HQFX80DATA) - `(LET [(CLIPPINGREGION (HQFX80DATA-CLIPPINGREGION ,HQFX80DATA] - (SETQ BOTTOM (ffetch (REGION BOTTOM) of CLIPPINGREGION)) - (SETQ TOP (ffetch (REGION TOP) of CLIPPINGREGION)) - (SETQ RIGHTPLUS1 (ffetch (REGION RIGHT) of CLIPPINGREGION)) - (SETQ LEFT (ffetch (REGION LEFT) of CLIPPINGREGION)) - (SETQ DESTINATION-BITMAP (HQFX80DATA-BACKINGBITMAP ,HQFX80DATA)) - (SETQ OPERATION (HQFX80DATA-OPERATION ,HQFX80DATA)) - (SETQ BRUSHBM (\GETBRUSH BRUSH)) - (SETQ RASTERWIDTH (fetch (BITMAP BITMAPRASTERWIDTH) of DESTINATION-BITMAP)) - (SETQ DESTINATIONBASE (fetch (BITMAP BITMAPBASE) of DESTINATION-BITMAP)) - (SETQ BBT (\HQFX80.CREATE-BRUSH-BBT BRUSHBM ,HQFX80DATA BBT)) - (SETQ BRUSHBASE (fetch (BITMAP BITMAPBASE) of BRUSHBM)) - - (* ;; "keep Brush width and raster width in number of bits units.") - - (SETQ BRUSHRASTERWIDTH (fetch (BITMAP BITMAPRASTERWIDTH) of BRUSHBM)) - [COND - ((NULL BBT) - - (* ;; "BBT is NIL if single point brush. Set the destination bitmap base.") - - (SETQ HEIGHTMINUS1 (SUB1 (fetch (BITMAP BITMAPHEIGHT) of DESTINATION-BITMAP))) - (COND - ((EQ (HQFX80DATA-OPERATION ,HQFX80DATA) - 'INVERT) - - (* ;; "really do invert in single brush case.") - - (SETQ OPERATION 'INVERT] - (SETQ BRUSHWIDTH (fetch (BITMAP BITMAPWIDTH) of BRUSHBM)) - (SETQ BRUSHHEIGHT (fetch (BITMAP BITMAPHEIGHT) of BRUSHBM)) - (SETQ LEFTMINUSBRUSH (IDIFFERENCE LEFT BRUSHWIDTH)) - (SETQ BOTTOMMINUSBRUSH (IDIFFERENCE BOTTOM BRUSHHEIGHT)) - (SETQ TOPMINUSBRUSH (IDIFFERENCE TOP BRUSHHEIGHT)))) - - - -(* ;; "character printing methods") - -(DEFINEQ - -(\HQFX80.OUTCHAR - [LAMBDA (HQFX80STREAM CHARCODE) (* ; "Edited 4-Feb-87 15:11 by hdj") - - (* ;; "Displays the character and increments the Xposition on the HQFX80STREAM.") - - (WITH-HQFX80-DATA (HQFX80DATA HQFX80STREAM) - - (* ;; "If necessary, change the charset ") - - (if (NEQ (HQFX80DATA-CHARSET-CACHE HQFX80DATA) - (\CHARSET CHARCODE)) - then (\HQFX80.CHANGE-CHARSET HQFX80DATA (\CHARSET CHARCODE))) - (SELCHARQ CHARCODE - (^L (* ; "form-feed") - (\HQFX80.NEWPAGE HQFX80STREAM)) - ((EOL CR LF) (* ; "various line-enders") - (\HQFX80.NEWLINE CHARCODE HQFX80STREAM)) - (LET ((CHARWIDTH (\HQFX80.CHARWIDTH HQFX80STREAM CHARCODE))) - - (* ;; "if character will be at least partly visible, output it") - - (if (\HQFX80.CUR-POS-VISIBLE? HQFX80DATA) - then (IF (NEQ CHARCODE (CHARCODE SPACE)) - THEN - - (* ;; - "only bitblt real, printing characters -- pilotbbt won't do the right thing with amplified spaces") - - (\HQFX80.BLT-CHAR CHARCODE CHARWIDTH HQFX80STREAM HQFX80DATA)) - ) - (CL:INCF (HQFX80DATA-XPOS HQFX80DATA) - CHARWIDTH) - - (* ;; "if we've passed the margin, DING!, do a newline") - - (if (> (HQFX80DATA-XPOS HQFX80DATA) - (HQFX80DATA-RIGHTMARGIN HQFX80DATA)) - then (\HQFX80.NEWLINE (CHARCODE EOL) - HQFX80STREAM]) - -(\HQFX80.BLT-CHAR - [LAMBDA (CHARCODE CHARWIDTH HQFX80STREAM HQFX80DATA) (* ; "Edited 12-Feb-87 14:17 by jds") - - (* ;; "puts a character on an HQFX80 stream. Much of the information needed by the BitBlt microcode is prestored by the routines that change it. This is kept in the BitBltTable.") - (* (DECLARE (LOCALVARS . T))) - (LET* ((CURX (FIXR (HQFX80DATA-XPOS HQFX80DATA))) - (CHAR8CODE (\CHAR8CODE CHARCODE)) - (RIGHT (+ CURX CHARWIDTH)) - (LEFT NIL) - (CLIPPINGREGION (HQFX80DATA-CLIPPINGREGION HQFX80DATA)) - (RIGHT-CLIPPING-EDGE (fetch (REGION RIGHT) of CLIPPINGREGION)) - (LEFT-CLIPPING-EDGE (fetch (REGION LEFT) of CLIPPINGREGION)) - (PILOTBBT (HQFX80DATA-PILOTBBT HQFX80DATA))) - -(* ;;; "clip the bitmap to fit the stream's clipping region") - - (* ;; "does character overlap right edge of clipping region?") - - (SETQ RIGHT (MIN RIGHT-CLIPPING-EDGE RIGHT)) - - (* ;; "does character overlap left edge of clipping region?") - - (SETQ LEFT (MAX CURX LEFT-CLIPPING-EDGE)) - (COND - ((AND (< LEFT RIGHT) - (NEQ (fetch (PILOTBBT PBTHEIGHT) of PILOTBBT) - 0)) - (UNINTERRUPTABLY - (freplace (PILOTBBT PBTDESTBIT) of PILOTBBT with LEFT) - (freplace (PILOTBBT PBTWIDTH) of PILOTBBT with (- RIGHT LEFT)) - (freplace (PILOTBBT PBTSOURCEBIT) of PILOTBBT with (- (+ ( - \HQFX80.GET-CHARACTER-OFFSET - CHAR8CODE HQFX80DATA) - LEFT) - CURX)) - (\PILOTBITBLT PILOTBBT 0)) - T]) -) - - - -(* ;; "printer code") - -(DEFINEQ - -(\HQFX80.DUMP-PAGE-BUFFER - [LAMBDA (BITMAP HQFX80STREAM) (* ; "Edited 23-Sep-88 10:25 by jds") - -(* ;;; "send a bitmap to the FX-80") - - (* ;; "how it works: we use a specially created bitblt table (HQFX80DATA-SERIALIZING-PILOTBBT) to turn eight-bit-high by one-bit-wide columns of BITMAP into eight-bit-wide by one-bit-high bytes. This extraction is done by \HQFX80.BITMAP-LDB.") - - (DECLARE (LOCALVARS . T)) - (WITH-HQFX80-DATA (HQFX80DATA HQFX80STREAM) - (LET* ((WIDTH (BITMAPWIDTH BITMAP)) - (WIDTH-MINUS-1 (SUB1 WIDTH)) - [HEIGHT (FIX (TIMES \HQFX80.INCHES-PER-PAGE (if (HQFX80DATA-COMPRESSED? - HQFX80DATA) - then - \HQFX80.LOW-SPEED-DOUBLE-MODE-DPI - else \HQFX80.1-TO-1-MODE-DPI] - (HEIGHT-MINUS-1 (SUB1 HEIGHT)) - (BACKING-STREAM (HQFX80DATA-BACKINGSTREAM HQFX80DATA)) - (BITMAP-BASE (fetch (BITMAP BITMAPBASE) of BITMAP)) - (BITMAP-WIDTH (fetch (BITMAP BITMAPRASTERWIDTH) of BITMAP)) - (MAPPING-TABLE (HQFX80DATA-SERIALIZING-PILOTBBT HQFX80DATA)) - (BYTE-BOX (HQFX80DATA-SERIALIZING-BOX HQFX80DATA)) - (SCRATCH-SCANLINE-PILOTBBT (HQFX80DATA-SCRATCH-SCANLINE-PILOTBBT HQFX80DATA)) - (EIGHT-LINES-BLANK (HQFX80DATA-EIGHT-LINES-BLANK HQFX80DATA)) - (EIGHT-LINES-BLANK-PILOTBBT (HQFX80DATA-EIGHT-LINES-BLANK-PILOTBBT HQFX80DATA)) - (COMPRESSED? (HQFX80DATA-COMPRESSED? HQFX80DATA))) - - (* ;; "set the mode") - - (\HQFX80.PRINTER-MODE :UNIDIRECTIONAL-ON BACKING-STREAM) - (\HQFX80.PRINTER-MODE :EIGHT-SPACING-ON BACKING-STREAM) - - (* ;; "pack the bitmap into FX80 format and ship it") - - [for EIGHT-SCANLINE-SWATH from 0 to HEIGHT-MINUS-1 by 8 - do [COND - ((ILESSP (IDIFFERENCE HEIGHT-MINUS-1 EIGHT-SCANLINE-SWATH) - 8) (* ; - "There are fewer than 8 scan lines left on the page image; only advance by that amount.") - (\HQFX80.PRINTER-MODE :N-SPACING-ON BACKING-STREAM - (IDIFFERENCE HEIGHT-MINUS-1 EIGHT-SCANLINE-SWATH] - (COND - ((\HQFX80.EIGHT-LINES-BLANK? BITMAP-BASE EIGHT-SCANLINE-SWATH - BITMAP-WIDTH SCRATCH-SCANLINE-PILOTBBT - EIGHT-LINES-BLANK-PILOTBBT EIGHT-LINES-BLANK) - - (* ;; "skip the next eight blank lines") - - (\HQFX80.PRINTER-MODE :EIGHT-SPACING-ON BACKING-STREAM) - (\HQFX80.ADVANCE-8-LINES HQFX80STREAM)) - (T - (* ;; "something to print in the next eight scanlines; do so") - - (\HQFX80.PRINTER-MODE :EIGHT-SPACING-ON BACKING-STREAM) - (\HQFX80.GRAPHICS-MODE WIDTH COMPRESSED? BACKING-STREAM) - (for COLUMN from 0 to WIDTH-MINUS-1 - do (\HQFX80.BITMAP-LDB BITMAP-BASE COLUMN EIGHT-SCANLINE-SWATH - MAPPING-TABLE BITMAP-WIDTH) - (BOUT BACKING-STREAM (\GETBASEBYTE BYTE-BOX 0))) - (BOUT BACKING-STREAM (CHARCODE CR)) - (BOUT BACKING-STREAM (CHARCODE LF] - (\HQFX80.PRINTER-MODE :UNIDIRECTIONAL-OFF BACKING-STREAM) - (\HQFX80.PRINTER-MODE :TWELVE-SPACING-ON BACKING-STREAM]) - -(\HQFX80.ADVANCE-8-LINES - [LAMBDA (HQFX80STREAM) (* ; "Edited 11-Feb-87 11:03 by jds") - - (* ;; "advance the printhead 8 raster lines. since we assume that we're in the :eight-spacing-on printermode, just send an LF") - - (\HQFX80.BOUT HQFX80STREAM (CHARCODE LF]) -) - -(DEFMACRO \HQFX80.EIGHT-LINES-BLANK? (BITMAP-BASE Y-COORD BITMAP-WIDTH-IN-WORDS EIGHT-INTO-ONE-PBBT - SCANLINE-INTO-WORD-PBBT WORD-BOX) - - (* ;; "returns T if the next 8 lines of the bitmap are all blank. This is done by or'ing the 8 scanlines into a scratch bitmap, then or'ing the words of that scanline into a result word, and comparing that to 0. We clear the scanline and word buffers at the end.") - - `(LET ((EIGHT-INTO-ONE-PBBT ,EIGHT-INTO-ONE-PBBT) - (SCANLINE-INTO-WORD-PBBT ,SCANLINE-INTO-WORD-PBBT) - (WORD-BOX ,WORD-BOX) - (BITMAP-WIDTH-IN-WORDS ,BITMAP-WIDTH-IN-WORDS)) - [FREPLACE (PILOTBBT PBTSOURCE) OF EIGHT-INTO-ONE-PBBT WITH (\ADDBASE ,BITMAP-BASE - (TIMES - , - BITMAP-WIDTH-IN-WORDS - ,Y-COORD] - (\PILOTBITBLT EIGHT-INTO-ONE-PBBT 0) - (\PILOTBITBLT SCANLINE-INTO-WORD-PBBT 0) - (PROG1 (EQ (\GETBASE WORD-BOX 0) - 0) - (\HQFX80.CLEAR-SCANLINE EIGHT-INTO-ONE-PBBT BITMAP-WIDTH-IN-WORDS) - (\HQFX80.CLEAR-WORD-BOX WORD-BOX)))) - -(DEFMACRO \HQFX80.BITMAP-LDB (BITMAP-BASE X Y PILOTBBT BITMAP-WIDTH-IN-WORDS) - - (* ;; "point the serializing bitblt table at a new column of the bitmap. The X coord increases left to right, the Y coord increases top to bottom, and names the uppermost pixel of the column we're moving.") - - `(LET ((X ,X) - (PILOTBBT ,PILOTBBT)) - [FREPLACE (PILOTBBT PBTSOURCE) OF PILOTBBT WITH (\ADDBASE ,BITMAP-BASE - (+ (TIMES ,Y ,BITMAP-WIDTH-IN-WORDS) - (FOLDLO X BITSPERWORD] - (FREPLACE (PILOTBBT PBTSOURCEBIT) OF PILOTBBT WITH (LOGAND 15 X)) - (\PILOTBITBLT PILOTBBT 0))) - -(DEFMACRO \HQFX80.CLEAR-SCANLINE (SCANLINE-PILOTBBT SCANLINE-WIDTH-IN-WORDS) - - (* ;; "clear out the destination of the pilotbbt the fast way - store a zero in its last word and perform an overlapping blt (which runs back to front).") - - `(LET [(SCANLINE (FETCH (PILOTBBT PBTDEST) OF ,SCANLINE-PILOTBBT)) - (LAST-WORD (SUB1 ,SCANLINE-WIDTH-IN-WORDS] - (\PUTBASE SCANLINE LAST-WORD 0) - (\BLT SCANLINE (\ADDBASE SCANLINE 1) - LAST-WORD))) - -(DEFMACRO \HQFX80.CLEAR-WORD-BOX (WORD-BOX) - `(\PUTBASE ,WORD-BOX 0 0)) - -(CL:DEFUN \HQFX80.SEND (PRINTER FILENAME &OPTIONAL OPTIONS) - - (* ;; "send the file designated by FILENAME to PRINTER, obeying OPTIONS. Since we only have one fx-80 per machine, ignore PRINTER and send to HQFX80-DEFAULT-DESTINATION") - - (DECLARE (GLOBALVARS HQFX80-DEFAULT-DESTINATION)) - [LET ((COPIES (OR (LISTGET OPTIONS '%#COPIES) - 1))) - (FOR COPY FROM 1 TO COPIES DO - (* ;; "allow the user to abort it while running") - - (WITH-ABORT-WINDOW ((THIS.PROCESS) - FILENAME PRINTER COPY) - (COPYFILE FILENAME HQFX80-DEFAULT-DESTINATION - '((TYPE HQFX80]) - -(CL:DEFUN MAKE-HQFX80 (FILE HQFX80FILE &OPTIONAL FONTS HEADING TABS OPTIONS) - - (* ;; "turn FILE into an HQFX80 master") - - (TEXTTOIMAGEFILE FILE HQFX80FILE 'HQFX80 FONTS HEADING TABS OPTIONS)) - -(CL:DEFUN HQFX80FILEP (HQFX80FILE?) - - (* ;; "is FILE (a filename or stream) an hqfx80 file?") - - [LET [(FILE-TYPE (GETFILEINFO HQFX80FILE? 'TYPE] - (IF (EQ FILE-TYPE 'HQFX80) - THEN (* ; - "if file has a type, and type=HQFX80, we win") - T - ELSE (* ; - "no filetype or filetype not HQFX80, so read the file") - (LET [(STREAM (OPENSTREAM (INTERLISP-NAMESTRING HQFX80FILE?) - 'INPUT - 'OLD - '(SEQUENTIAL] - - (* ;; "file looks like ESC@...") - - (PROG1 [AND (> (GETFILEINFO STREAM 'LENGTH) - (+ 2 (NCHARS \HQFX80.FILE-SIGNATURE))) - (EQ (CHARCODE ESC) - (BIN STREAM)) - (EQ (CHARCODE @) - (BIN STREAM)) - (FOR CH INSTRING \HQFX80.FILE-SIGNATURE - ALWAYS (EQ CH (BIN STREAM] - (CLOSEF STREAM]) - - - -(* ;; "window hardcopy") - -(DEFINEQ - -(\HQFX80.BITMAP-FILE - [LAMBDA (FILE BITMAP SCALEFACTOR REGION ROTATION TITLE) (* ; "Edited 1-Jun-87 13:10 by Snow") - - (* ;; "print a bitmap on the fx-80. ignore SCALEFACTOR and ROTATION for now.") - - (LET* ((HQFX80STREAM (OPENIMAGESTREAM FILE 'HQFX80)) - (NEWBITMAP (COND - (REGION (BITMAPCREATE (fetch (REGION WIDTH) of REGION) - (fetch (REGION HEIGHT) of REGION))) - (T BITMAP))) - (WIDTH (BITMAPWIDTH NEWBITMAP)) - (HEIGHT (BITMAPHEIGHT NEWBITMAP)) - (PAGE-REGION (DSPCLIPPINGREGION NIL HQFX80STREAM)) - (PAGE-WIDTH (fetch (REGION WIDTH) of PAGE-REGION)) - (PAGE-HEIGHT (fetch (REGION HEIGHT) of PAGE-REGION))) - - (* ;; "clip the bitmap, if requested") - - (AND REGION (BITBLT BITMAP (fetch (REGION LEFT) of REGION) - (fetch (REGION BOTTOM) of REGION) - NEWBITMAP)) - (LET* ((PORTRAIT-OVERHANG (- WIDTH (fetch (REGION WIDTH) of PAGE-REGION))) - (LANDSCAPE-OVERHANG (- HEIGHT (fetch (REGION WIDTH) of PAGE-REGION))) - (BITS-LOST (AND (> PORTRAIT-OVERHANG 0) - (> LANDSCAPE-OVERHANG 0))) - (LANDSCAPE-PRINT (> PORTRAIT-OVERHANG LANDSCAPE-OVERHANG))) - - (* ;; "print the title of the image on the top of the page") - - (LET* ((IMAGE-TITLE (OR TITLE "Window Image")) - (TITLE-REGION (STRINGREGION IMAGE-TITLE HQFX80STREAM))) - (MOVETO (/ (- PAGE-WIDTH (fetch (REGION WIDTH) of TITLE-REGION)) - 2) - (- (- PAGE-HEIGHT 1) - (FONTPROP HQFX80STREAM 'HEIGHT)) - HQFX80STREAM) - (PRIN1 IMAGE-TITLE HQFX80STREAM)) - - (* ;; "blt the bitmap onto the page. use replace mode so it will obscure title if need be") - - [COND - (BITS-LOST - - (* ;; "apologize and blt as much as will fit") - - (PRINTOUT PROMPTWINDOW "Bitmap is larger than FX-80 page - " - "image will be clipped" T) - (BITBLT NEWBITMAP NIL NIL HQFX80STREAM 0 0 NIL NIL 'INPUT 'REPLACE)) - (T - - (* ;; "center it on the page ") - - (* ;; "if there is more overhang in portrait than in landscape - rotate it remember to swap the height and width.") - - (AND LANDSCAPE-PRINT (SETQ NEWBITMAP (ROTATE-BITMAP NEWBITMAP)) - (swap WIDTH HEIGHT)) - (BITBLT NEWBITMAP NIL NIL HQFX80STREAM (/ (- PAGE-WIDTH WIDTH) - 2) - (/ (- PAGE-HEIGHT HEIGHT) - 2) - NIL NIL 'INPUT 'REPLACE] - (CLOSEF HQFX80STREAM]) - -(\HQFX80.CONVERT-TEDIT - [LAMBDA (TEDIT-FILE IMAGESTREAM) (* ; "Edited 11-Dec-86 17:24 by hdj") - - (* ;; "Send the text to the printer.") - - (SETQ TEDIT-FILE (OPENTEXTSTREAM TEDIT-FILE)) - (TEDIT.FORMAT.HARDCOPY TEDIT-FILE IMAGESTREAM T NIL NIL NIL 'HQFX80) - (CLOSEF? IMAGESTREAM) - IMAGESTREAM]) -) - - - -(* ;; "character transmission method") - -(DEFINEQ - -(\HQFX80.BOUT - [LAMBDA (HQFX80SSTREAM BYTE) (* hdj " 7-Nov-86 17:18") - - (* ;; "send a byte to the fx80") - - (WITH-HQFX80-DATA (DATA HQFX80SSTREAM) - (BOUT (HQFX80DATA-BACKINGSTREAM DATA) - BYTE]) -) - - - -(* ;; "handling font-information caching") - -(DEFINEQ - -(\HQFX80.FIX-LINE-LENGTH - [LAMBDA (HQFX80STREAM) (* hdj "14-Nov-86 17:15") - - (* ;; "HQFX80STREAM is a stream of type hqfx80. Called by RIGHTMARGIN LEFTMARGIN and \hqfx80.fix-font to update the LINELENGTH field in the stream. Also called when the stream is created.") - - (WITH-HQFX80-DATA (DATA HQFX80STREAM) - (freplace (STREAM LINELENGTH) of HQFX80STREAM - with (MIN MAX.SMALLP (MAX 1 (IQUOTIENT (- (HQFX80DATA-RIGHTMARGIN DATA) - (HQFX80DATA-LEFTMARGIN DATA)) - (fetch (FONTDESCRIPTOR FONTAVGCHARWIDTH) - of (HQFX80DATA-FONT DATA]) - -(\HQFX80.FIX-FONT - [LAMBDA (HQFX80STREAM HQFX80DATA) (* hdj "10-Nov-86 16:37") - - (* ;; "used to fix up those parts of the bitblt table which depend upon the FONT.") - - (\HQFX80.INVALIDATE-CACHE HQFX80DATA) - (\HQFX80.FIX-LINE-LENGTH HQFX80STREAM]) - -(\HQFX80.FIX-Y - [LAMBDA (HQFX80DATA CSINFO) (* ; "Edited 12-Feb-87 11:46 by jds") - - (* ;; "makes that part of the bitblt table of an HQFX80 stream which deals with the Y information consistent. This is called from \\HQFX80.change-charset whenever a character is being printed and the charset/y-position caches are invalid") - - (PROG ((PBT (HQFX80DATA-PILOTBBT HQFX80DATA)) - (Y (HQFX80DATA-YPOS HQFX80DATA)) - TOP CHARTOP BM) - [SETQ CHARTOP (FIXR (+ Y (CL:SETF (HQFX80DATA-CHARSET-ASCENT-CACHE HQFX80DATA) - (ffetch CHARSETASCENT of CSINFO] - [freplace PBTDEST of PBT - with (\ADDBASE (fetch BITMAPBASE of (SETQ BM (HQFX80DATA-BACKINGBITMAP HQFX80DATA))) - (TIMES (ffetch BITMAPRASTERWIDTH of BM) - (\SFInvert BM (SETQ TOP (FIXR (MAX (MIN (fetch (REGION TOP) - of ( - HQFX80DATA-CLIPPINGREGION - HQFX80DATA)) - CHARTOP) - 0] - [freplace PBTSOURCE of PBT - with (\ADDBASE (ffetch BITMAPBASE of (SETQ BM (ffetch (CHARSETINFO CHARSETBITMAP) - of CSINFO))) - (TIMES (ffetch BITMAPRASTERWIDTH of BM) - (CL:SETF (HQFX80DATA-CHARHEIGHTDELTA HQFX80DATA) - (FIXR (MIN (MAX (- CHARTOP TOP) - 0) - MAX.SMALL.INTEGER] - (freplace PBTHEIGHT of PBT - with (FIXR (MAX [- TOP (MAX (- Y (CL:SETF (HQFX80DATA-CHARSET-DESCENT-CACHE HQFX80DATA) - (ffetch CHARSETDESCENT of CSINFO))) - (fetch (REGION BOTTOM) of (HQFX80DATA-CLIPPINGREGION - HQFX80DATA] - 0]) -) - -(DEFMACRO \HQFX80.INVALIDATE-CACHE (HQFX80DATA) - - (* ;; - "marks the stream as needing to have its cached fields recomputed. used when font changes, etc.") - - `(PROGN (CL:SETF (HQFX80DATA-CHARSET-CACHE ,HQFX80DATA) - MAX.SMALLP) - (CL:SETF (HQFX80DATA-CHARSET-ASCENT-CACHE ,HQFX80DATA) - MAX.SMALLP))) - -(DEFMACRO \HQFX80.INVALIDATE-FONT-CACHE (HQFX80DATA) - `(PROGN (CL:SETF (HQFX80DATA-CHARSET-CACHE ,HQFX80DATA) - MAX.SMALLP) - (CL:SETF (HQFX80DATA-CHARSET-ASCENT-CACHE ,HQFX80DATA) - MAX.SMALLP))) - -(DEFMACRO \HQFX80.GET-CACHED-CHAR-WIDTH (CHARCODE HQFX80DATA) - - (* ;; "get the cached image width of CHARCODE") - - `(\FGETIMAGEWIDTH (HQFX80DATA-IMAGE-WIDTHS-CACHE ,HQFX80DATA) - ,CHARCODE)) - -(DEFMACRO \HQFX80.GET-CHARACTER-OFFSET (CHAR8CODE HQFX80DATA) - `(\GETBASE (HQFX80DATA-OFFSETS-CACHE ,HQFX80DATA) - ,CHAR8CODE)) - - - -(* ;; "auxiliary functions") - - -(CL:DEFUN \HQFX80.GRAPHICS-MODE (ROWS COMPRESSED? BACKING-STREAM) - - (* ;; "put the FX-80 in some graphics mode") - - (BOUT BACKING-STREAM (CHARCODE ESC)) - (BOUT BACKING-STREAM (CHARCODE *)) - (BOUT BACKING-STREAM (* ; - "compressed prints at 120 dpi, regular at 72") - (if COMPRESSED? - then 1 - else 5)) - (BOUT BACKING-STREAM (IREMAINDER ROWS 256)) - (BOUT BACKING-STREAM (FOLDLO ROWS 256))) -(DEFINEQ - -(\HQFX80.PRINTER-MODE - [LAMBDA (FX80-MODE STREAM N-SPACING) (* ; "Edited 23-Sep-88 10:21 by jds") - - (* ;; "put the FX80 printer in some mode") - - (CL:FLET [(SEND-PRINTER-COMMAND (COMMAND-STRING STREAM) - - (* ;; "Send an ESC, to tell the printer there is to be a mode change, and then the specific mode change byte") - - (BOUT STREAM (CHARCODE ESC)) - (for CHAR instring COMMAND-STRING do (BOUT STREAM CHAR] - (SELECTQ FX80-MODE - (:BOLD-ON (SEND-PRINTER-COMMAND "E" STREAM)) - (:BOLD-OFF (SEND-PRINTER-COMMAND "F" STREAM)) - (:COMPRESSED-ON - (SEND-PRINTER-COMMAND (CHARACTER 15) - STREAM)) - (:COMPRESSED-OFF - (BOUT STREAM 18)) - (:ELITE-ON (SEND-PRINTER-COMMAND "M" STREAM)) - (:ELITE-OFF (SEND-PRINTER-COMMAND "P" STREAM)) - (:ITALIC-ON (SEND-PRINTER-COMMAND "4" STREAM)) - (:ITALIC-OFF (SEND-PRINTER-COMMAND "5" STREAM)) - (:PICA-ON (SEND-PRINTER-COMMAND (CONCAT "P" (CHARACTER 18)) - STREAM)) - (:SUBSCRIPT-ON (SEND-PRINTER-COMMAND "S0" STREAM)) - (:SCRIPT-OFF (SEND-PRINTER-COMMAND "T" STREAM)) - (:SUPERSCRIPT-ON - (SEND-PRINTER-COMMAND "S1" STREAM)) - (:EXPAND-ON (SEND-PRINTER-COMMAND "W1" STREAM)) - (:EXPAND-OFF (SEND-PRINTER-COMMAND "W0" STREAM)) - (:PROPORTIONAL-ON - (SEND-PRINTER-COMMAND "p1" STREAM)) - (:PROPORTIONAL-OFF - (SEND-PRINTER-COMMAND "p0" STREAM)) - (:UNIDIRECTIONAL-ON - (SEND-PRINTER-COMMAND "U1" STREAM)) - (:UNIDIRECTIONAL-OFF - (SEND-PRINTER-COMMAND "U0" STREAM)) - (:N-SPACING-ON (* ; "Space n/72 of an inch on LF.") - (SEND-PRINTER-COMMAND (CONCAT "A" (CHARACTER N-SPACING)) - STREAM)) - (:SEVEN-SPACING-ON - (SEND-PRINTER-COMMAND "1" STREAM)) - (:EIGHT-SPACING-ON - (SEND-PRINTER-COMMAND (CONCAT "A" (CHARACTER 8)) - STREAM)) - (:NINE-SPACING-ON (* ; - "Space by 9 print dots per LF. Mostly for graphics mode used in HQ FX-80.") - (SEND-PRINTER-COMMAND "0" STREAM)) - (:TWELVE-SPACING-ON (* ; "Restore normal 1/6%" spacing") - (SEND-PRINTER-COMMAND "2" STREAM)) - (:NO-SKIP (SEND-PRINTER-COMMAND "O" STREAM)) - NIL]) -) - -(DEFMACRO WITH-HQFX80-DATA ((VAR-NAME STREAM) - &BODY - (BODY DECLS ENV)) - `(LET [(,VAR-NAME (FETCH (STREAM IMAGEDATA) OF ,STREAM] - ,@DECLS - ,@BODY)) - - - -(* ;; "and miscellany") - -(DECLARE%: EVAL@COMPILE - -(RPAQ \HQFX80.FILE-SIGNATURE "HQFX-80/Xerox/1.0 ") - -(RPAQQ \HQFX80.1-TO-1-MODE-DPI 72) - -(RPAQQ \HQFX80.LOW-SPEED-DOUBLE-MODE-DPI 120) - - -(CONSTANTS (\HQFX80.FILE-SIGNATURE "HQFX-80/Xerox/1.0 ") - (\HQFX80.1-TO-1-MODE-DPI 72) - (\HQFX80.LOW-SPEED-DOUBLE-MODE-DPI 120)) -) - -(RPAQ? \HQFX80.INCHES-PER-PAGE 11) - -(RPAQ? \HQFX80.INCHES-PER-LINE 8.5) - -(RPAQ? HQFX80-DEFAULT-DESTINATION "{TTY}") - -(RPAQ? HQFX80-FONT-EXTENSIONS DISPLAYFONTEXTENSIONS) - -(RPAQ? HQFX80-FONT-DIRECTORIES DISPLAYFONTDIRECTORIES) - -(RPAQ? HQFX80-FONT-COERCIONS DISPLAYFONTCOERCIONS) - -(RPAQ? HQFX80-MISSING-FONT-COERCIONS DISPLAYFONTCOERCIONS) - -(RPAQQ FX80-PRINTCOMS - ( - (* ;; "The FXPrinter emulator") - - (COMS - (* ;; "top level routine") - - (FUNCTIONS FX80-PRINT)) - (COMS - (* ;; "how to print bitmaps") - - (FUNCTIONS FX80-PRINT.BITMAP) - (FUNCTIONS FX80-PRINT.PRINT-BITMAP FX80-PRINT.PRINT-BITMAP-PORTRAIT - FX80-PRINT.PRINT-BITMAP-LANDSCAPE)) - (COMS - (* ;; "how to print files") - - (FUNCTIONS FX80-PRINT.FILE)))) - - - -(* ;; "The FXPrinter emulator") - - - - -(* ;; "top level routine") - - -(CL:DEFUN FX80-PRINT (THING-TO-PRINT &KEY LANDSCAPE? COMPRESS? HIGH-QUALITY?) - "Prints thing-to-print on the FX-80 printer" - (CL:ETYPECASE THING-TO-PRINT - ((OR WINDOW BITMAP) (FX80-PRINT.BITMAP THING-TO-PRINT LANDSCAPE? COMPRESS?)) - ((OR CL:SYMBOL STRING PATHNAME) (FX80-PRINT.FILE THING-TO-PRINT HIGH-QUALITY?))) - THING-TO-PRINT) - - - -(* ;; "how to print bitmaps") - - -(CL:DEFUN FX80-PRINT.BITMAP (BITMAP-OR-WINDOW LANDSCAPE? COMPRESS?) - "Prints a bitmap or window on the FX-80 printer" - (CL:ETYPECASE BITMAP-OR-WINDOW - (WINDOW (LET* [(WINDOW-REGION (DSPCLIPPINGREGION NIL BITMAP-OR-WINDOW)) - (BM (BITMAPCREATE (FETCH (REGION WIDTH) OF WINDOW-REGION) - (FETCH (REGION HEIGHT) OF WINDOW-REGION] - (BITBLT BITMAP-OR-WINDOW NIL NIL BM) - (FX80-PRINT.BITMAP BM LANDSCAPE? COMPRESS?))) - (BITMAP (FX80-PRINT.PRINT-BITMAP BITMAP-OR-WINDOW LANDSCAPE? COMPRESS?)))) - -(CL:DEFUN FX80-PRINT.PRINT-BITMAP (BITMAP LANDSCAPE? COMPRESS?) - "Print a bitmap on the FX-80, either landscape or portrait" - (IF LANDSCAPE? - THEN (FX80-PRINT.PRINT-BITMAP-LANDSCAPE BITMAP COMPRESS?) - ELSE (FX80-PRINT.PRINT-BITMAP-PORTRAIT BITMAP COMPRESS?))) - -(CL:DEFUN FX80-PRINT.PRINT-BITMAP-PORTRAIT (BITMAP COMPRESS?) - "Prints a bitmap on the FX-80 in portrait mode" - [LET ((HQFX80STREAM (OPENIMAGESTREAM HQFX80-DEFAULT-DESTINATION 'HQFX80 (LIST 'COMPRESSED - COMPRESS?))) - (WIDTH (BITMAPWIDTH BITMAP)) - (HEIGHT (BITMAPHEIGHT BITMAP))) - (WITH-HQFX80-DATA (DATA HQFX80STREAM) - (LET ((PAGE-WIDTH (fetch (REGION WIDTH) of (HQFX80DATA-CLIPPINGREGION DATA))) - (PAGE-HEIGHT (fetch (REGION HEIGHT) of (HQFX80DATA-CLIPPINGREGION DATA)) - (HQFX80DATA-CLIPPINGREGION DATA))) - - (* ;; "center it if possible") - - (BITBLT BITMAP NIL NIL HQFX80STREAM (MAX 0 (/ (- PAGE-WIDTH WIDTH) - 2)) - (MAX 0 (/ (- PAGE-HEIGHT HEIGHT) - 2)) - NIL NIL 'INPUT 'REPLACE) - (CLOSEF HQFX80STREAM]) - -(CL:DEFUN FX80-PRINT.PRINT-BITMAP-LANDSCAPE (BITMAP COMPRESS?) - "Prints a bitmap on the FX-80 in landscape mode" - [LET ((HQFX80STREAM (OPENIMAGESTREAM HQFX80-DEFAULT-DESTINATION 'HQFX80 (LIST 'COMPRESSED - COMPRESS?))) - (WIDTH (BITMAPHEIGHT BITMAP)) - (HEIGHT (BITMAPWIDTH BITMAP)) - (ROTATED-BITMAP (ROTATE-BITMAP BITMAP))) - (WITH-HQFX80-DATA (DATA HQFX80STREAM) - (LET ((PAGE-WIDTH (fetch (REGION WIDTH) of (HQFX80DATA-CLIPPINGREGION DATA))) - (PAGE-HEIGHT (fetch (REGION HEIGHT) of (HQFX80DATA-CLIPPINGREGION DATA)) - (HQFX80DATA-CLIPPINGREGION DATA))) - (BITBLT ROTATED-BITMAP NIL NIL HQFX80STREAM (MAX 0 (/ (- PAGE-WIDTH WIDTH) - 2)) - (MAX 0 (/ (- PAGE-HEIGHT HEIGHT) - 2)) - NIL NIL 'INPUT 'REPLACE) - (CLOSEF HQFX80STREAM]) - - - -(* ;; "how to print files") - - -(CL:DEFUN FX80-PRINT.FILE (FILE-NAME HIGH-QUALITY?) - "Prints a file on the FX-80" - (SEND.FILE.TO.PRINTER (INTERLISP-NAMESTRING FILE-NAME) - (IF HIGH-QUALITY? - THEN 'HQFX80 - ELSE 'FASTFX80))) - - - -(* ; "common routines") - - -(DEFMACRO WITH-ABORT-WINDOW ((PROCESS FILE-NAME PRINTER-NAME COPY#) - &BODY - (FORMS DECLS)) - "executes FORMS, allowing termination by menu selection" - `(LET [(WINDOW (\FX80.CREATE-SEND-ABORT-WINDOW ,PROCESS ,FILE-NAME ,PRINTER-NAME ,COPY#] - (CL:UNWIND-PROTECT - (PROGN ,@DECLS (BLOCK 3000) - ,@FORMS) - (CLOSEW WINDOW)))) - -(CL:DEFUN \FX80.CREATE-SEND-ABORT-WINDOW (SENDING-PROCESS FILE-OR-STREAM PRINTER-NAME COPY#) - (LET* [(DOCUMENT-TYPE-AND-NAME-STRING (IF (STREAMP FILE-OR-STREAM) - THEN (IF (FETCH (STREAM NAMEDP) OF FILE-OR-STREAM) - THEN (CONCAT "the file " (FULLNAME - FILE-OR-STREAM) - ) - ELSE "an unnamed document") - ELSE FILE-OR-STREAM)) - (WINDOW-WIDTH (WIDTHIFWINDOW 270)) - (WINDOW-HEIGHT (HEIGHTIFWINDOW 120)) - (ABORT-MENU-ITEM "Abort") - (ABORT-MENU-FONT (FONTCREATE 'GACHA 12 'BRR)) - (ABORT-WINDOW (CREATEW (CREATEREGION (RAND 0 (- SCREENWIDTH WINDOW-WIDTH)) - (- SCREENHEIGHT WINDOW-HEIGHT) - WINDOW-WIDTH WINDOW-HEIGHT))) - (ABORT-WINDOW-FONT (DSPFONT NIL ABORT-WINDOW)) - (BOLD-ABORT-WINDOW-FONT (FONTCOPY ABORT-WINDOW-FONT 'WEIGHT 'BOLD] - (PRINTOUT ABORT-WINDOW "Sending copy " COPY# " of " .FONT BOLD-ABORT-WINDOW-FONT - DOCUMENT-TYPE-AND-NAME-STRING .FONT ABORT-WINDOW-FONT " to " .FONT - BOLD-ABORT-WINDOW-FONT PRINTER-NAME .FONT ABORT-WINDOW-FONT "." T) - (PRINTOUT ABORT-WINDOW "Select %"Abort%" below to stop printing " - " this and all subsequent copies." T) - (ADDMENU (CREATE MENU - ITEMS _ `[(,ABORT-MENU-ITEM (PROGN (PROCESS.EVAL ,SENDING-PROCESS - '(ERROR!)) - (PRINTOUT ,ABORT-WINDOW T - "... printing aborted.") - (BLOCK 2000) - (CLOSEW ,ABORT-WINDOW)) - ,(CONCAT - "Stops printing this and all subsequent copies of " - DOCUMENT-TYPE-AND-NAME-STRING "."] - MENUFONT _ ABORT-MENU-FONT) - ABORT-WINDOW - (CREATEPOSITION (/ (- WINDOW-WIDTH (STRINGWIDTH ABORT-MENU-ITEM ABORT-MENU-FONT)) - 2) - 20)) - ABORT-WINDOW)) - -(CL:DEFUN \ADD-TO-FONTPROFILE (FONTPROFILE FONTCLASS DEVICE FONT-DESCRIPTION) - - (* ;; "sets the DEVICE component of the FONTCLASS entry of FONTPROFILE to be FONT-DESCRIPTION.") - - (LET ((BUCKET (FASSOC FONTCLASS FONTPROFILE))) - (IF (NULL BUCKET) - THEN (ERROR "No such fontclass as " FONTCLASS) - ELSE - (* ;; "the bucket looks like") - - (* ;; "(fontclass prettyfont# displayfont pressfont interpressfont") - - (* ;; " (dev1 dev1-font) (dev2 dev2-font) ... )") - - [SELECTQ DEVICE - (DISPLAY (CL:SETF (CL:THIRD BUCKET) - FONT-DESCRIPTION)) - (PRESS (CL:SETF (CL:FOURTH BUCKET) - FONT-DESCRIPTION)) - (INTERPRESS (CL:SETF (CL:FIFTH BUCKET) - FONT-DESCRIPTION)) - (DESTRUCTURING-BIND (CLASS-NAME PRETTY-FONT# DISPLAY-FONT PRESS-FONT - INTERPRESS-FONT . A-LIST) - BUCKET - (IF (NULL A-LIST) - THEN (RPLACD (LAST BUCKET) - (LIST (LIST DEVICE FONT-DESCRIPTION))) - ELSE (PUTASSOC DEVICE (LIST FONT-DESCRIPTION) - A-LIST] - BUCKET))) - -(CL:DEFUN \GET-FROM-FONTPROFILE (FONTPROFILE FONTCLASS DEVICE) - - (* ;; "Retunrs the DEVICE component of the FONTCLASS entry of FONTPROFILE.") - - [LET ((BUCKET (FASSOC FONTCLASS FONTPROFILE))) - (IF (NULL BUCKET) - THEN (ERROR "No such fontclass as " FONTCLASS) - ELSE - (* ;; "the bucket looks like") - - (* ;; "(fontclass prettyfont# displayfont pressfont interpressfont") - - (* ;; " (dev1 dev1-font) (dev2 dev2-font) ... )") - - (SELECTQ DEVICE - (DISPLAY (CL:THIRD BUCKET)) - (PRESS (CL:FOURTH BUCKET)) - (INTERPRESS (CL:FIFTH BUCKET)) - (DESTRUCTURING-BIND (CLASS-NAME PRETTY-FONT# DISPLAY-FONT PRESS-FONT - INTERPRESS-FONT . A-LIST) - BUCKET - (IF (NULL A-LIST) - THEN NIL - ELSE (CADR (FASSOC DEVICE A-LIST]) - - - -(* ;;; "initialization") - -(DECLARE%: DONTEVAL@LOAD DOCOPY - -(\HQFX80.INIT) - -(\FASTFX80.INIT) -) - -(PUTPROPS FX-80DRIVER FILETYPE CL:COMPILE-FILE) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (4439 8728 (\FASTFX80.INIT 4449 . 8726)) (8811 10748 (OPENFASTFX80STREAM 8821 . 10746)) -(10750 11195 (\FASTFX80.PREAMBLE 10750 . 11195)) (11197 11950 (\FASTFX80.RESET-PRINTER 11197 . 11950)) - (11952 12475 (\FASTFX80.OUTPUT-SIGNATURE 11952 . 12475)) (12476 13108 (\FASTFX80.CLOSE 12486 . 13106) -) (13150 18112 (\FASTFX80.CHANGEFONT 13160 . 16384) (\FASTFX80.FONTCREATE 16386 . 17149) ( -\FASTFX80.CREATECHARSET 17151 . 18110)) (18114 18665 (\FASTFX80.INIT-FONT-PROFILE 18114 . 18665)) ( -18705 21838 (\FASTFX80.STRINGWIDTH 18715 . 20174) (\FASTFX80.CHARWIDTH 20176 . 20813) ( -\FASTFX80.SUBCHARWIDTH 20815 . 21836)) (21840 22336 (\FASTFX80.SPACEFACTOR 21840 . 22336)) (22419 -35008 (\FASTFX80.CLIPPINGREGION 22429 . 23365) (\FASTFX80.MOVETO 23367 . 23636) (\FASTFX80.XPOSITION -23638 . 25782) (\FASTFX80.YPOSITION 25784 . 28287) (\FASTFX80.BACKUP.PAPER 28289 . 29056) ( -\FASTFX80.ADVANCE.PAPER 29058 . 29922) (\FASTFX80.NEWPAGE 29924 . 30270) (\FASTFX80.OUTCHAR 30272 . -32626) (\FASTFX80.NEWLINE 32628 . 33684) (\FASTFX80.LINEFEED 33686 . 34723) (\FASTFX80.DRAWLINE 34725 - . 35006)) (35010 36021 (\FASTFX80.STARTPAGE 35010 . 36021)) (36023 37129 (\FASTFX80.SMART-XPOSITION -36023 . 37129)) (37131 37544 (\FASTFX80.TOPMARGIN 37131 . 37544)) (37546 37968 (\FASTFX80.BOTTOMMARGIN - 37546 . 37968)) (37970 38386 (\FASTFX80.LEFTMARGIN 37970 . 38386)) (38388 38807 ( -\FASTFX80.RIGHTMARGIN 38388 . 38807)) (38809 39023 (\FASTFX80.CUR-POS-VISIBLE? 38809 . 39023)) (39025 -39482 (\FASTFX80.HORIZONTAL 39025 . 39482)) (39514 40336 (\FASTFX80.SEND 39514 . 40336)) (40338 40550 -(MAKE-FASTFX80 40338 . 40550)) (40552 42254 (FASTFX80FILEP 40552 . 42254)) (42256 42452 ( -\FASTFX80.CANNOT-PRINT-BITMAPS 42256 . 42452)) (42453 42830 (\FASTFX80.CONVERT-TEDIT 42463 . 42828)) ( -42878 43180 (\FASTFX80.BOUT 42888 . 43178)) (43210 43637 (\FASTFX80.TRANSLATE-CHAR 43210 . 43637)) ( -43639 43876 (WITH-FASTFX80-DATA 43639 . 43876)) (50288 54402 (\HQFX80.INIT 50298 . 54400)) (54485 -59838 (OPENHQFX80STREAM 54495 . 59836)) (59840 60194 (\HQFX80.PREAMBLE 59840 . 60194)) (60196 60904 ( -\HQFX80.RESET-PRINTER 60196 . 60904)) (60906 61410 (\HQFX80.OUTPUT-SIGNATURE 60906 . 61410)) (61411 -62263 (\HQFX80.CLOSE 61421 . 62261)) (62305 80084 (\HQFX80.FONTCREATE 62315 . 63055) ( -\HQFX80.CHANGEFONT 63057 . 64497) (\HQFX80.CREATECHARSET 64499 . 73421) (\HQFX80.CHANGE-CHARSET 73423 - . 75946) (\HQFX80.READ-FONT-FILE 75948 . 77717) (\HQFX80.SEARCH-FONTS 77719 . 80082)) (80086 80631 ( -\HQFX80.INIT-FONT-PROFILE 80086 . 80631)) (80671 82631 (\HQFX80.CHARWIDTH 80681 . 81267) ( -\HQFX80.STRINGWIDTH 81269 . 82629)) (82633 83113 (\HQFX80.SPACEFACTOR 82633 . 83113)) (83196 91836 ( -\HQFX80.CLIPPINGREGION 83206 . 84428) (\HQFX80.LEFTMARGIN 84430 . 85195) (\HQFX80.RIGHTMARGIN 85197 . -85926) (\HQFX80.TOPMARGIN 85928 . 86492) (\HQFX80.BOTTOMMARGIN 86494 . 87070) (\HQFX80.XPOSITION 87072 - . 87541) (\HQFX80.YPOSITION 87543 . 88238) (\HQFX80.NEWLINE 88240 . 89657) (\HQFX80.NEWPAGE 89659 . -90088) (\HQFX80.LINEFEED 90090 . 90628) (\HQFX80.RESET 90630 . 90868) (\HQFX80.STARTPAGE 90870 . 91834 -)) (91838 92026 (\HQFX80.CUR-POS-VISIBLE? 91838 . 92026)) (92158 119893 (\HQFX80.BITBLT 92168 . 99412) - (\HQFX80.BLTSHADE 99414 . 104165) (\HQFX80.DRAWELLIPSE 104167 . 118408) (\HQFX80.OPERATION 118410 . -119307) (\HQFX80.DRAWPOINT 119309 . 119891)) (119894 137294 (\HQFX80.DRAWLINE 119904 . 123122) ( -\HQFX80.CLIP-AND-DRAW-LINE 123124 . 128335) (\HQFX80.CLIP-AND-DRAW-LINE1 128337 . 137292)) (137295 -146290 (\HQFX80.DRAWCIRCLE 137305 . 143923) (\HQFX80.CREATE-BRUSH-BBT 143925 . 146288)) (146292 146817 - (\HQFX80.DRAW-4-CIRCLE-POINTS 146292 . 146817)) (146818 156989 (\HQFX80.FILLCIRCLE 146828 . 156627) ( -\HQFX80.DRAWARC 156629 . 156987)) (156991 157556 (\HQFX80.FILL-CIRCLE-BLT 156991 . 157556)) (157588 -186500 (\HQFX80.DRAWCURVE 157598 . 159491) (\HQFX80.DRAWCURVE2 159493 . 171129) (\HQFX80.DRAWCURVE3 -171131 . 176773) (\HQFX80.LINEWITHBRUSH 176775 . 186498)) (186501 189958 (\HQFX80.BBTCURVEPT 186511 . -189956)) (191660 192811 (\HQFX80.SMOOTH-CURVE 191660 . 192811)) (192813 194697 ( -.SETUP.FOR.\HQFX80.BBTCURVEPT. 192813 . 194697)) (194742 198780 (\HQFX80.OUTCHAR 194752 . 196679) ( -\HQFX80.BLT-CHAR 196681 . 198778)) (198811 203326 (\HQFX80.DUMP-PAGE-BUFFER 198821 . 202982) ( -\HQFX80.ADVANCE-8-LINES 202984 . 203324)) (203328 204752 (\HQFX80.EIGHT-LINES-BLANK? 203328 . 204752)) - (204754 205508 (\HQFX80.BITMAP-LDB 204754 . 205508)) (205510 206000 (\HQFX80.CLEAR-SCANLINE 205510 . -206000)) (206002 206079 (\HQFX80.CLEAR-WORD-BOX 206002 . 206079)) (206081 206923 (\HQFX80.SEND 206081 - . 206923)) (206925 207128 (MAKE-HQFX80 206925 . 207128)) (207130 208512 (HQFX80FILEP 207130 . 208512) -) (208546 212145 (\HQFX80.BITMAP-FILE 208556 . 211776) (\HQFX80.CONVERT-TEDIT 211778 . 212143)) ( -212193 212492 (\HQFX80.BOUT 212203 . 212490)) (212544 216169 (\HQFX80.FIX-LINE-LENGTH 212554 . 213355) - (\HQFX80.FIX-FONT 213357 . 213673) (\HQFX80.FIX-Y 213675 . 216167)) (216171 216531 ( -\HQFX80.INVALIDATE-CACHE 216171 . 216531)) (216533 216776 (\HQFX80.INVALIDATE-FONT-CACHE 216533 . -216776)) (216778 216988 (\HQFX80.GET-CACHED-CHAR-WIDTH 216778 . 216988)) (216990 217132 ( -\HQFX80.GET-CHARACTER-OFFSET 216990 . 217132)) (217171 217722 (\HQFX80.GRAPHICS-MODE 217171 . 217722)) - (217723 220609 (\HQFX80.PRINTER-MODE 217733 . 220607)) (220611 220842 (WITH-HQFX80-DATA 220611 . -220842)) (222170 222530 (FX80-PRINT 222170 . 222530)) (222570 223191 (FX80-PRINT.BITMAP 222570 . -223191)) (223193 223490 (FX80-PRINT.PRINT-BITMAP 223193 . 223490)) (223492 224601 ( -FX80-PRINT.PRINT-BITMAP-PORTRAIT 223492 . 224601)) (224603 225722 (FX80-PRINT.PRINT-BITMAP-LANDSCAPE -224603 . 225722)) (225760 226002 (FX80-PRINT.FILE 225760 . 226002)) (226036 226472 (WITH-ABORT-WINDOW -226036 . 226472)) (226474 229154 (\FX80.CREATE-SEND-ABORT-WINDOW 226474 . 229154)) (229156 230619 ( -\ADD-TO-FONTPROFILE 229156 . 230619)) (230621 231679 (\GET-FROM-FONTPROFILE 230621 . 231679))))) -STOP diff --git a/obsolete/library/FX-80DRIVER.LCOM b/obsolete/library/FX-80DRIVER.LCOM deleted file mode 100644 index b364e95354cd36089839019a3659249f5af33972..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99157 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 E0se(AI{*Lx diff --git a/obsolete/library/FX-80Driver.tedit b/obsolete/library/FX-80Driver.tedit deleted file mode 100644 index 6479f012..00000000 --- a/obsolete/library/FX-80Driver.tedit +++ /dev/null @@ -1,40 +0,0 @@ -1 Lisp Library Modules, Medley Release 1.0, FX-80DRIVER 1 Lisp Library Modules, Medley Release 1.0, FX-80DRIVER FX-80DRIVER 1 FX-80DRIVER 1 FX-80DRIVER 6 FX-80Driver(FX-80DRIVER NIL FX-80Driver NIL NIL 99) prints text and graphics on Epson FX-80-compatible printers. It implements a full device-independent graphics interface(GRAPHICS% INTERFACE NIL graphics% interface NIL NIL 99) for the FX-80, and can print source code, TEdit documents, bitmaps and windows at a variety of qualities and speeds. The FX-80Driver contains two printer drivers(PRINTER% DRIVERS NIL printer% drivers NIL NIL 99): a fast driver, for quick printing of draft-quality text, and a high-quality driver, for slower printing of mixed-font text and graphics. You can print early revisions of a document in fast mode, and then switch to high-quality mode for the final copy. The matrix shown in Figure 1 illustrates the capabilities of each mode: ((SKETCH "figure from {DSK}FX-80DRIVERS.TEDIT;1" VERSION 3 PRIRANGE (31 . 0) SKETCHCONTEXT ((ROUND 1 BLACK) (GACHA 10 (MEDIUM REGULAR REGULAR)) (CENTER BASELINE) (CURVE 18.0 8) NIL NIL (CENTER CENTER) (NIL NIL NIL) T NIL NIL 1 NIL)) ((0.0 116.0 (PRI 1)) (WIRE ((96 . 184) (328 . 184)) (ROUND 1 BLACK) NIL NIL 1 NIL NIL)) ((0.0 116.0 (PRI 2)) (WIRE ((96 . 152) (328 . 152)) (ROUND 1 BLACK) NIL NIL 1 NIL NIL)) ((0.0 100.0 (PRI 3)) (WIRE ((176 . 248) (176 . 48)) (ROUND 1 BLACK) NIL NIL 1 NIL NIL)) ((0.0 100.0 (PRI 5)) (WIRE ((232 . 248) (232 . 48)) (ROUND 1 BLACK) NIL NIL 1 NIL NIL)) ((0.0 116.0 (PRI 7)) (WIRE ((96 . 120) (328 . 120)) (ROUND 1 BLACK) NIL NIL 1 NIL NIL)) ((0.0 116.0 (PRI 8)) (WIRE ((96 . 88) (328 . 88)) (ROUND 1 BLACK) NIL NIL 1 NIL NIL)) ((0.0 116.0 (PRI 9)) (WIRE ((96 . 216) (328 . 216)) (ROUND 1 BLACK) NIL NIL 1 NIL NIL)) ((0.05 13.0 (PRI 10)) (TEXT (200.0 . 232.0) ("Fast") 1 (CENTER BASELINE) (MODERN 10 (MEDIUM REGULAR REGULAR)) ((190.5 228.5 19 13)) BLACK)) ((0.05 13.0 (PRI 11)) (TEXT (280.0 . 232.0) ("High-quality") 1 (CENTER BASELINE) (MODERN 10 (MEDIUM REGULAR REGULAR)) ((251.0 228.5 58 13)) BLACK)) ((0.05 13.0 (PRI 12)) (TEXT (96.0 . 192.0) ("TEdit") 1 (LEFT BOTTOM) (MODERN 10 (MEDIUM REGULAR REGULAR)) ((96 192 25 13)) BLACK)) ((0.05 13.0 (PRI 13)) (TEXT (96.0 . 160.0) ("Sketch") 1 (LEFT BOTTOM) (MODERN 10 (MEDIUM REGULAR REGULAR)) ((96 160 31 13)) BLACK)) ((0.05 13.0 (PRI 14)) (TEXT (96.0 . 128.0) ("Windows") 1 (LEFT BOTTOM) (MODERN 10 (MEDIUM REGULAR REGULAR)) ((96 128 43 13)) BLACK)) ((0.05 13.0 (PRI 15)) (TEXT (96.0 . 92.0) ("Lisp source" "code") 1 (LEFT BOTTOM) (MODERN 10 (MEDIUM REGULAR REGULAR)) ((96 105 50 13) (96 92 22 13)) BLACK)) ((0.05 13.0 (PRI 16)) (TEXT (96.0 . 64.0) ("Grapher") 1 (LEFT BOTTOM) (MODERN 10 (MEDIUM REGULAR REGULAR)) ((96 64 39 13)) BLACK)) ((0.05 13.0 (PRI 25)) (TEXT (202.0 . 200.0) ("monofont" "only") 1 (CENTER BASELINE) (MODERN 10 (MEDIUM REGULAR REGULAR)) ((178.5 203.0 47 13) (192.0 190.0 20 13)) BLACK)) ((0.05 13.0 (PRI 26)) (TEXT (202.0 . 104.0) ("monofont" "only") 1 (CENTER BASELINE) (MODERN 10 (MEDIUM REGULAR REGULAR)) ((178.5 107.0 47 13) (192.0 94.0 20 13)) BLACK)) ((0.05 12.0 (PRI 27)) (TEXT (280.0 . 168.0) ("yes") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((269.5 165.0 21 12)) BLACK)) ((0.05 12.0 (PRI 28)) (TEXT (280.0 . 200.0) ("yes") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((269.5 197.0 21 12)) BLACK)) ((0.05 12.0 (PRI 29)) (TEXT (280.0 . 136.0) ("yes") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((269.5 133.0 21 12)) BLACK)) ((0.05 12.0 (PRI 30)) (TEXT (280.0 . 104.0) ("yes") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((269.5 101.0 21 12)) BLACK)) ((0.05 12.0 (PRI 31)) (TEXT (280.0 . 72.0) ("yes") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((269.5 69.0 21 12)) BLACK))) (93.0 45.0 238.0 206.0) 1.0 8 Figure 1. FX-80 printer drivers For historical reasons, FX-80 in this document refers to any and all of the Epson FX-80 family (FX-80% FAMILY% NIL FX-80% family% NIL NIL 99)of dot-matrix graphics printers. The module supports the FX-80, FX-85, FX-86 and FX-286. The Epson printers vary in speed and carriage width, but share a common command language. Requirements 1 RS232 or TTY cable (see the wiring diagrams in the Introduction of this manual). Serial interface card(SERIAL% INTERFACE% CARD NIL Serial% interface% card NIL NIL 99) in the printer. DLRS23C or DLTTY. Installation 1 FX-80 Serial Interface(FX-80% SERIAL% INTERFACE NIL FX-80% Serial% Interface NIL NIL 99) The FX-80Driver module requires that your Epson be equipped with a suitable serial interface (such as the Hanzon Universal Card(HANZON% UNIVERSAL% CARD NIL HANZON% Universal% Card NIL NIL 99)). The interface should be set up with XOn/XOff flow control enabled, 9600 baud or slower, 1 stop bit, 8 bit characters, no parity. (See The Hanzon Universal Card booklet for instructions on the DIP switch settings.) FX-80 DIP Switch Settings(FX-80% DIP% SWITCH% SETTINGS NIL FX-80% DIP% Switch% Settings NIL NIL 100) The FX-80 should have its DIP switches set as shown in Figure 2. ((SKETCH a% figure% from% a% document VERSION 3 PRIRANGE (62 . 0) SKETCHCONTEXT ((ROUND 1 BLACK) (GACHA 10 (MEDIUM REGULAR REGULAR)) (CENTER BASELINE) (CURVE 18.0 8) NIL NIL (CENTER CENTER) (NIL NIL NIL) T NIL NIL 1 NIL)) ((0.092 64.0 (PRI 61)) (GROUP (200.0 141.0 128.0 92.0) (((0.016 12.0 (PRI 29)) (BOX (248.0 184.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (NIL NIL NIL))) ((0.016 12.0 (PRI 30)) (BOX (200.0 184.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (NIL NIL NIL))) ((0.016 12.0 (PRI 31)) (BOX (216.0 184.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (NIL NIL NIL))) ((0.016 12.0 (PRI 32)) (BOX (232.0 184.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (NIL NIL NIL))) ((0.016 12.0 (PRI 33)) (BOX (232.0 160.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (43605 NIL NIL))) ((0.016 12.0 (PRI 34)) (BOX (216.0 160.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (43605 NIL NIL))) ((0.016 12.0 (PRI 35)) (BOX (248.0 160.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (43605 NIL NIL))) ((0.016 12.0 (PRI 36)) (BOX (200.0 160.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (43605 NIL NIL))) ((0.016 12.0 (PRI 38)) (BOX (312.0 184.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (43605 NIL NIL))) ((0.016 12.0 (PRI 39)) (BOX (264.0 184.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (NIL NIL NIL))) ((0.016 12.0 (PRI 40)) (BOX (280.0 184.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (43605 NIL NIL))) ((0.016 12.0 (PRI 41)) (BOX (296.0 184.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (43605 NIL NIL))) ((0.016 12.0 (PRI 42)) (BOX (296.0 160.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (NIL NIL NIL))) ((0.016 12.0 (PRI 43)) (BOX (280.0 160.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (NIL NIL NIL))) ((0.016 12.0 (PRI 44)) (BOX (312.0 160.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (NIL NIL NIL))) ((0.016 12.0 (PRI 45)) (BOX (264.0 160.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (43605 NIL NIL))) ((0.05 12.0 (PRI 46)) (TEXT (208.0 . 144.0) ("1") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((204.5 141.0 7 12)) BLACK)) ((0.05 12.0 (PRI 47)) (TEXT (224.0 . 144.0) ("2") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((220.5 141.0 7 12)) BLACK)) ((0.05 12.0 (PRI 48)) (TEXT (240.0 . 144.0) ("3") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((236.5 141.0 7 12)) BLACK)) ((0.05 12.0 (PRI 49)) (TEXT (256.0 . 144.0) ("4") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((252.5 141.0 7 12)) BLACK)) ((0.05 12.0 (PRI 54)) (TEXT (272.0 . 144.0) ("5") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((268.5 141.0 7 12)) BLACK)) ((0.05 12.0 (PRI 55)) (TEXT (288.0 . 144.0) ("6") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((284.5 141.0 7 12)) BLACK)) ((0.05 12.0 (PRI 56)) (TEXT (304.0 . 144.0) ("7") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((300.5 141.0 7 12)) BLACK)) ((0.05 12.0 (PRI 57)) (TEXT (320.0 . 144.0) ("8") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((316.5 141.0 7 12)) BLACK)) ((0.05 12.0 (PRI 58)) (TEXT (264.0 . 224.0) ("Switch 1") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((236.0 221.0 56 12)) BLACK))) (264 . 184))) ((0.092 49.25 (PRI 62)) (GROUP (61.5 141.0 98.5 92.0) (((0.05 12.0 (PRI 11)) (TEXT (104.0 . 144.0) ("1") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((100.5 141.0 7 12)) BLACK)) ((0.05 12.0 (PRI 12)) (TEXT (120.0 . 144.0) ("2") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((116.5 141.0 7 12)) BLACK)) ((0.05 12.0 (PRI 13)) (TEXT (136.0 . 144.0) ("3") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((132.5 141.0 7 12)) BLACK)) ((0.05 12.0 (PRI 14)) (TEXT (152.0 . 144.0) ("4") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((148.5 141.0 7 12)) BLACK)) ((0.05 12.0 (PRI 17)) (TEXT (72.0 . 192.0) ("on") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((65.0 189.0 14 12)) BLACK)) ((0.05 12.0 (PRI 18)) (TEXT (72.0 . 168.0) ("off") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((61.5 165.0 21 12)) BLACK)) ((0.016 12.0 (PRI 23)) (BOX (144.0 184.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (NIL NIL NIL))) ((0.016 12.0 (PRI 23)) (BOX (96.0 184.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (43605 NIL NIL))) ((0.016 12.0 (PRI 23)) (BOX (112.0 184.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (NIL NIL NIL))) ((0.016 12.0 (PRI 23)) (BOX (128.0 184.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (NIL NIL NIL))) ((0.016 12.0 (PRI 24)) (BOX (144.0 160.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (43605 NIL NIL))) ((0.016 12.0 (PRI 24)) (BOX (128.0 160.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (43605 NIL NIL))) ((0.016 12.0 (PRI 24)) (BOX (112.0 160.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (43605 NIL NIL))) ((0.016 12.0 (PRI 24)) (BOX (96.0 160.0 16.0 24.0) (ROUND 1 BLACK) NIL 1 (NIL NIL NIL))) ((0.05 12.0 (PRI 37)) (TEXT (128.0 . 224.0) ("Switch 2") 1 (CENTER BASELINE) (GACHA 10 (MEDIUM REGULAR REGULAR)) ((100.0 221.0 56 12)) BLACK))) (112 . 184)))) (61.0 141.0 267.0 92.0) 1.0 8 Figure 2. FX-80 DIP switch settings Switch 1 says no automatic linefeed, no automatic paper feed, no buzz on paper-out, and to allow no software deactivation of the printer. Switch 2 says to use the USA character set, Pica type, allocate 2KB for user-defined characters, allow paper-out detection, and print zeros as zeros. Note: For the FX-85, -86 and -286 DIP switch settings, consult the corresponding Epson User's Manual. Software Load FX-80DRIVER.LCOM and the required .LCOM modules from the library. Store all of the font files (file names ending with .displayfont) corresponding to the fonts you wish to use on some convenient directory or directories. HQFX80-FONT-DIRECTORIES(HQFX80-FONT-DIRECTORIES (variable) NIL NIL NIL 100) should be a list that contains these directories; it should be the same as DISPLAYFONTDIRECTORIES(DISPLAYFONTDIRECTORIES (variable) NIL NIL NIL 100). Set FASTFX80-DEFAULT-DESTINATION(FASTFX80-DEFAULT-DESTINATION (variable) NIL NIL NIL 100) (determines where output to the FASTFX80 lineprinter device goes) and HQFX80-DEFAULT-DESTINATION(HQFX80-DEFAULT-DESTINATION (variable) NIL NIL NIL 100) (determines where output to the HQFX80 lineprinter device goes) to one of the following values; they need not be the same: Destination RS232 port TTY port file 1 Value {RS232} {TTY} FileName Speed 9600 max. 4800 max. n/a 1 Load the appropriate device driver for each of these destinations: DLTTY.LCOM for the TTY port, and DLRS232C.LCOM for the RS232C port. Run the function RS232C.INIT or TTY.INIT (as appropriate), and set the baud rate to match the setting on the printer. User Interface 1 You can set up the FX-80 to be your default printer, send FX-80 output to a file for later printing, or programmatically open an image stream that produces output on the FX-80. Having the FX-80 set up as your default printer means that you can print the contents of windows by selecting the HARDCOPY menu item on the window of interest. You can also use the HARDCOPY - TO A FILE submenu item to spool your output for later printing. And you can write programs that use the OPENIMAGESTREAM(OPENIMAGESTREAM (function) NIL NIL NIL 101) function to create FX-80 format graphics output. Printing in Fast Mode(PRINTING% IN% FAST% MODE NIL Printing% in% Fast% Mode NIL NIL 101) 1 You can print in fast mode by sending output to the printer FASTFX80 or by opening an image stream to a file with extension FASTFX80. This mode is called fast because it uses the printer's built-in font, which allows a tight encoding of the document to be printed. Fidelity to the original document is not as good as in high-quality mode. The following restrictions apply: ÿÿïf ÿSpecial characters (that is, most Xerox Network Systems extended characters, such as the bullet or dagger; see CharCodeTables, VirtualKeyboards in this manual) are ignored. ÿÿïf ÿOnly one font is supported (though roman, italic, and bold typefaces do work). ÿÿïf ÿGraphics (lines, underlines, bitmaps) are ignored. ÿÿïf ÿMultiple column output does work. Set FX-80 Fast Mode(ET% FX-80% FAST% MODE NIL et% FX-80% Fast% Mode NIL NIL 101) To set your default printer to be a fast mode FX-80(FAST% MODE% FX-80 NIL fast% mode% FX-80 NIL NIL 101), make the list (FASTFX80 FASTFX80) the CAR of the list DEFAULTPRINTINGHOST. Set FX-80 Destination(SET% FX-80% DESTINATION NIL Set% FX-80% Destination NIL NIL 101) To set the default destination of all output to {LPT}.fastfx80, set the variable FASTFX80-DEFAULT-DESTINATION to an appropriate file name string. See the table above; the file name could be that of a regular file like {DSK}SPOOLED-FAST-OUTPUT. Set FX-80 Page Size(SET% FX-80% PAGE% SIZE NIL Set% FX-80% Page% Size NIL NIL 101) To set the driver's page size to match the paper in the printer, set the two variables \FASTFX80.INCHES-PER-PAGE (page height in inches) and \FASTFX80.INCHES-PER-LINE (page width in inches) to appropriate values. The defaults are 11 and 8.5, respectively. These can be set in your Lisp INIT file. Print a File(PRINT% A% FILE NIL Print% a% File NIL NIL 101) Select the HARDCOPY command from the background (right-button) menu. The system first formats the file for printing. Then, when the FX-80Driver actually starts transmitting to the printer, a small abort window, bearing the name of the document and the name of the printer, will appear near the top of your screen. Abort a Print Job(ABORT% A% PRINT% JOB NIL Abort% a% Print% Job NIL NIL 101) Clicking on the item marked ABORT in the print window will cleanly terminate the printing of the document. Note: After aborting a print job, you may need to turn the printer off and back on to make sure that other files will print successfully. Printing in High-Quality Mode(PRINTING% IN% HIGH-QUALITY% MODE NIL Printing% in% High-Quality% Mode NIL NIL 102) 1 Print in high-quality mode by sending output to the printer HQFX80, or by opening an image stream on a file with type HQFX80. High-quality mode printing supports all of Xerox Lisp's device-independent graphics operations, as well as multiple font printing and the XNS extended character set. It prints at 72 dot-per-inch resolution. Fidelity to the original document is better than in fast mode, though printing speed is slower. Set HQ Mode(SET% HQ% MODE NIL Set% HQ% Mode NIL NIL 102) To set your default printer to be a high-quality FX-80, make the list (HQFX80 HQFX80) the CAR of the list DEFAULTPRINTINGHOST. You can use the PRINTERMENU module or your favorite structure editor to do this. Set Destination(SET% DESTINATION NIL Set% Destination NIL NIL 102) To set the default destination of all output to {LPT}.hqfx80, set the variable HQFX80-DEFAULT-DESTINATION to an appropriate file namestring. This could be "{TTY}", "{RS232}", or even the name of a regular file like "{DSK}spooled-hq-output". Set Page Size(SET% PAGE% SIZE NIL Set% Page% Size NIL NIL 102) To set the driver's page size to match the paper in the printer, set the two variables \HQFX80.INCHES-PER-PAGE (page height in inches) and \HQFX80.INCHES-PER-LINE (page width in inches) to appropriate values. The defaults are 11 and 8.5, respectively. These can be set in your Lisp INIT file. Print a File(PRINT% A% FILE NIL Print% a% File NIL NIL 102) Select the HARDCOPY command. The system first formats the file for printing. Then, when the FX-80Driver actually starts transmitting to the printer, a small abort window, bearing the name of the document and the name of the printer, will appear near the top of your screen. Note: After printing a document on HQFX80, you may need to turn the printer off and back on before you can print with FASTFX80 on that printer. Abort a Print Job(ABORT% A% PRINT% JOB NIL Abort% a% Print% Job NIL NIL 102) See above. FX Printer Compatibility(FX% PRINTER% COMPATIBILITY NIL FX% Printer% Compatibility NIL NIL 102) 1 (FX80-PRINT(FX80-PRINT (function) NIL NIL NIL 102) &KEY THING-TO-PRINT LANDSCAPE? COMPRESS? HIGH-QUALITY?) [Function] THING-TO-PRINT may be one of a window, bitmap, or file path name. If THING-TO-PRINT is a path name, the file will be treated as either a TEdit or Lisp source file, and printed in the appropriate style. In the window or bitmap cases, LANDSCAPE? specifies landscape printing (X-coordinates run down the left margin) when non-NIL; COMPRESS? specifies FX-80 compressed printing mode. If HIGH-QUALITY? is non-NIL and THING-TO-PRINT is a path name, output will be sent to the default high-quality FX-80 printer, otherwise to the default fast FX-80 printer. The LANDSCAPE?, COMPRESS?, and HIGH-QUALITY? arguments all default to NIL. Limitations 1 Landscape printing(LANDSCAPE% PRINTING NIL Landscape% printing NIL NIL 103) has not been implemented. Examples 1 Send text output to fast FX-80:(SEND% TEXT% OUTPUT% TO% FAST% FX-80 NIL Send% text% output% to% fast% FX-80 NIL NIL 103) (SETQ FX-80 (OPENIMAGESTREAM "{LPT}.FASTFX80")) (CL:FORMAT FX-80 "HELLO, WORLD~%%") (CL:CLOSE FX-80) Print source code on fast FX-80(PRINT% SOURCE% CODE% ON% FAST% FX-80 NIL Print% source% code% on% fast% FX-80 NIL NIL 103) (assuming the FastFX80 is not your default printer, but is on the list DEFAULTPRINTINGHOST): (LISTFILES (HOST FASTFX80) "{DSK}MYPROGRAM") Note: Source code is stored in pre-pretty-printed form on the file. The pretty-printer's default linelength (width of a line in characters) is normally 102, which is too wide for the FastFX-80s 8.5-inch wide page. To create source files which print nicely on the fast FX-80, you should set the variable FILELINELENGTH to a more appropriate value before you MAKEFILE. 70 works nicely on 8.5-inch paper with a standard font profile, though your mileage may vary. Print source code in the the fast FX-80 mode, assuming the FastFX80 is your default printer: (LISTFILES "{DSK}MYPROGRAM") Print TEdit file in fast FX-80 mode(PRINT% TEDIT% FILE% IN% FAST% FX-80% MODE NIL Print% TEdit% file% in% fast% FX-80% mode NIL NIL 103), assuming the FastFX80 is your default printer: (LISTFILES "{WAYCOOL:}GENSYM.TEDIT") Print text and graphics in high-quality mode:(PRINT% TEXT% AND% GRAPHICS% IN% % HIGH-QUALITY% MODE NIL Print% text% and% graphics% in% % high-quality% mode NIL NIL 103) (SETQ FX-80 (OPENIMAGESTREAM "{LPT}" 'HQFX80)) (MOVETO 300 300 FX-80) (CL:FORMAT FX-80 "HELLO, WORLD~%%") (DRAWCIRCLE 300 300 230 '(ROUND 8) NIL FX-80) (CL:CLOSE FX-80) Print source code in high-quality mode,(PRINT% SOURCE% CODE% IN% HIGH-QUALITY% MODE NIL Print% source% code% in% high-quality% mode NIL NIL 103) assuming the high-quality FX-80 is not your default printer, but is on the list DEFAULTPRINTINGHOST: (LISTFILES (HOST HQFX80) "{DSK}MYPROGRAM") Note: See the previous note regarding FILELINELENGTH and the fast FX-80. The same holds for high-quality FX-80 printing, and we recommend 70 as the value for FILELINELENGTH. Print source code in high-quality mode, assuming the high-quality FX-80 is your default printer: (LISTFILES "{DSK}MYPROGRAM") Print TEdit file in high-quality mode,(PRINT% % TEDIT% FILE% IN% HIGH-QUALITY% MODE NIL Print% % TEdit% file% in% high-quality% mode NIL NIL 104) assuming the high-quality FX-80 is your default printer: (LISTFILES "{WAYGNARLY:}MAGNUMOPUS.TEDIT") [This page intentionally left blank] (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "") STARTINGPAGE# 99) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY HELVETICA OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (270 15 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (TEXT NIL NIL (54 54 504 702) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY HELVETICA OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (54 15 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGV) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE VERSOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY HELVETICA OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (270 15 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE RECTOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL))))) <``¼Ì8¤àT<``àÀ €àT,HHà 5Hlàlà2llàà2H`à -à2HHà -à,llà,llà-llàT2Hlà -l,HHà --àT2HTàT2Hlàl-$$àT-àT,HHà -2HHà È,HHà,HHà,HHà -3àÈT3ààT<lløÌ8¤øT-T-øäìT2ÌÌø ÈFøø PAGEHEADING VERSOHEADFøø PAGEHEADING RECTOHEADEøø PAGEHEADINGFOOTINGVEøø PAGEHEADINGFOOTINGR HELVETICA -CLASSIC -CLASSIC -CLASSICCLASSIC -TITAN - HELVETICA  HELVETICACLASSIC - HELVETICAMODERN -MODERN -MODERNMODERN TERMINAL -MODERN -MODERNMODERN -  HRULE.GETFNMODERN -  7 HRULE.GETFNMODERN - 7  HRULE.GETFNMODERN -   HRULE.GETFNMODERN -  - HRULE.GETFNMODERN (IM.INDEX.GETFNy 8IM.INDEX.GETFNv , 2IM.INDEX.GETFNH  0 SKIO.GETFN.2MODERN - "` 0IM.INDEX.GETFNµ     HRULE.GETFNMODERN Q  @IM.INDEX.GETFN     HRULE.GETFNMODERN BIM.INDEX.GETFN @IM.INDEX.GETFN „  7 KIM.INDEX.GETFNB \ SKIO.GETFN.2MODERN - (Š – Q     š 4IM.INDEX.GETFNCLASSIC -M 3IM.INDEX.GETFNCLASSIC -  9IM.INDEX.GETFNCLASSIC -G 7IM.INDEX.GETFNCLASSIC -|  % HRULE.GETFNMODERN    HRULE.GETFNMODERN C -    M   HRULE.GETFNMODERN ³ * ,IM.INDEX.GETFNCLASSIC -1 CIM.INDEX.GETFN  HRULE.GETFNMODERN U "  ¯  Q  5  $ =IM.INDEX.GETFN3 5IM.INDEX.GETFN(   AIM.INDEX.GETFNR o  ?IM.INDEX.GETFNX  A  /   /IM.INDEX.GETFN + ;IM.INDEX.GETFN J ‰ SIM.INDEX.GETFN  HRULE.GETFNMODERN ¯   -IM.INDEX.GETFNZ  T 3IM.INDEX.GETFNO 3  *   1IM.INDEX.GETFNX  z   /IM.INDEX.GETFN   ;IM.INDEX.GETFN GIM.INDEX.GETFN  HRULE.GETFNMODERN  'IM.INDEX.GETFNMODERN - 7 8 x  -P   +    }  -       HRULE.GETFNMODERN   9IM.INDEX.GETFN    HRULE.GETFNMODERN   YIM.INDEX.GETFN 0 $   [IM.INDEX.GETFNH  - 1 ( a ]  -# eIM.INDEX.GETFN1  --. {IM.INDEX.GETFN  -/  $ . ' iIM.INDEX.GETFNQ   -+ & k  a  -' kIM.INDEX.GETFN:  -3$   QNÆzº \ No newline at end of file diff --git a/obsolete/library/IPFONTSAMPLE b/obsolete/library/IPFONTSAMPLE deleted file mode 100644 index 24b19802..00000000 --- a/obsolete/library/IPFONTSAMPLE +++ /dev/null @@ -1,391 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "11-Jun-90 15:51:10" {DSK}local>lde>lispcore>library>FONTSAMPLE.;2 16609 - - changes to%: (VARS FONTSAMPLECOMS) - - previous date%: "10-Jan-87 15:47:00" {DSK}local>lde>lispcore>library>FONTSAMPLE.;1) - - -(* ; " -Copyright (c) 1985, 1986, 1987, 1990 by Venue & Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT FONTSAMPLECOMS) - -(RPAQQ FONTSAMPLECOMS ((MACROS IDIVUP) - (VARS FNT.PANEL FNT.FNAME FNT.INFOFONT FNT.OUTFTEXT) - (FNS FNT.MAKEBOOK FNT.LESSP FNT.SORTP FNT.DISPLOOK FNT.DISPTBLE - FNT.DISPDSCR FNT.NARRDSCR FNT.DISPINIT FNT.FACEMAP FNT.SIZEMAP - FNT.MAKENAME FNT.MAKEWIND FNT.FILEMAP FNT.FINDALL FNT.FLST))) -(DECLARE%: EVAL@COMPILE - -(PUTPROPS IDIVUP DMACRO ((INUMEXPR IDENEXPR) - (LET (INUM IDEN) - (SETQ INUM INUMEXPR) - (SETQ IDEN IDENEXPR) - (IQUOTIENT (IPLUS INUM IDEN -1) - IDEN)))) -) - -(RPAQQ FNT.PANEL - ([PROG (SETQ FNT.WIND (FNT.MAKEWIND)) - (SETQ FNT.FONTLIST '(GACHA 10 (MEDIUM REGULAR REGULAR) - 0 INTERPRESS] - (PROG (CLEARW FNT.WIND) - (FNT.DISPTBLE FNT.WIND FNT.FONTLIST)) - (PROG (SETQ FNT.FILENAME (FNT.MAKENAME FNT.FONTLIST)) - (SETQ FNT.STRM (OPENIMAGESTREAM FNT.FILENAME 'INTERPRESS)) - (TOTOPW FNT.WIND) - (BITBLT FNT.WIND 0 0 FNT.STRM 0 0 612 792 'INPUT 'REPLACE) - (CLOSEF FNT.STRM)))) - -(RPAQQ FNT.FNAME {DSK}FONTBOOK.IP) - -(RPAQQ FNT.INFOFONT (TERMINAL 8 (MEDIUM REGULAR REGULAR) - 0)) - -(RPAQQ FNT.OUTFTEXT "abcdefghijkl ABCDEFGHIJKL") -(DEFINEQ - -(FNT.MAKEBOOK - [LAMBDA (OUTFROOTNAME ListOfFonts PRNTFN PERPAGE) (* FS "30-Jun-86 11:45") - - (* * takes a file name and font specification and iteratively invokes a given - print function (fnt.dispfont by default) on each font in the sorted list) - - (LET (FONTLIST OUTFTYPE OUTFDSCR OUTFOPTS ITER THISPAGE OUTFNAME) - - (* * Handle input parm defaults * *) - - (if (EQ PRNTFN NIL) - then (SETQQ PRNTFN FNT.DISPLOOK)) - (if (EQ PERPAGE NIL) - then (SETQ PERPAGE (SELECTQ PRNTFN - (FNT.DISPTBLE 1) - (FNT.DISPLOOK 18) - 1))) - (SETQQ OUTFTYPE INTERPRESS) - (SETQQ OUTFOPTS (REGION (2794 1905 25400 24765))) - (if (EQUAL ListOfFonts 'ALL) - then (SETQ FONTLIST (FNT.FINDALL OUTFTYPE)) - else (SETQ FONTLIST ListOfFonts)) - - (* * Iterate over files increment file names, iterate over fonts * *) - - (SETQ ITER 0) - (for PAGENO from 1 to (IDIVUP (LENGTH FONTLIST) - PERPAGE) - do (SETQ OUTFNAME (FNT.FILEMAP OUTFROOTNAME PAGENO)) - (if OUTFNAME - then (SETQ OUTFDSCR (OPENIMAGESTREAM OUTFNAME OUTFTYPE OUTFOPTS))) - (SETQ THISPAGE (IMIN PERPAGE (IDIFFERENCE (LENGTH FONTLIST) - ITER))) - [for I from 1 to THISPAGE do (SETQ ITER (ADD1 ITER)) - (APPLY* PRNTFN OUTFDSCR (CAR (NTH FONTLIST ITER] - (CLOSEF OUTFDSCR) - (BLOCK]) - -(FNT.LESSP - [LAMBDA (DSC1 DSC2) (* FS " 5-Jul-86 23:11") - - (* * Impose alpha order on font list) - - (PROG NIL - (if (NOT (LISTP DSC1)) - then (RETURN (ALPHORDER DSC1 DSC2))) - - (* * Switch face & size for order * *) - - [SETQ DSC1 (LIST (CAR DSC1) - (CADDR DSC1) - (CADR DSC1) - (CADDDR DSC1) - (CAR (CDDDR DSC1] - [SETQ DSC2 (LIST (CAR DSC2) - (CADDR DSC2) - (CADR DSC2) - (CADDDR DSC2) - (CAR (CDDDR DSC2] - (RETURN (FNT.SORTP DSC1 DSC2]) - -(FNT.SORTP - [LAMBDA (DSC1 DSC2) (* FS " 5-Jul-86 23:15") - - (* * Impose alpha order on font list) - - (PROG (KEY1 KEY2) - (if (NOT (LISTP DSC1)) - then (RETURN (ALPHORDER DSC1 DSC2))) - (SETQ KEY1 (CAR DSC1)) - (SETQ KEY2 (CAR DSC2)) - - (* * Reverse order of face * *) - - [if (EQUAL KEY1 KEY2) - then (RETURN (FNT.SORTP (CDR DSC1) - (CDR DSC2] - [if (LISTP KEY1) - then (RETURN (NOT (FNT.SORTP KEY1 KEY2] - (if (NUMBERP KEY1) - then (RETURN (LESSP KEY1 KEY2))) - (RETURN (ALPHORDER KEY1 KEY2]) - -(FNT.DISPLOOK - [LAMBDA (FILEDSC FONTDSC) (* FS "24-Jan-86 18:19") - - (* * uses "private" global vars fnt.infofont and fnt.outftext to generate - sample string) - - (LET NIL (DSPFONT FNT.INFOFONT FILEDSC) - (TERPRI FILEDSC) - (TERPRI FILEDSC) - (TERPRI FILEDSC) - (TERPRI FILEDSC) - (FNT.NARRDSCR FILEDSC (LIST FONTDSC)) - (DSPFONT FONTDSC FILEDSC) - (printout FILEDSC FNT.OUTFTEXT]) - -(FNT.DISPTBLE - [LAMBDA (Stream FONTDSC) (* FS "17-Mar-86 17:37") - - (* * generates a font table using prin1) - - (LET* ((TitleFont (FONTCREATE FNT.INFOFONT)) - (FontList (LIST FONTDSC)) - (InchesToPrinterUnits (FTIMES 72.0 (DSPSCALE NIL Stream))) - (DDev (IMAGESTREAMTYPE Stream))) - (for Font in FontList - do (DSPRIGHTMARGIN (TIMES 100.0 InchesToPrinterUnits) - Stream) (* Let clip on right *) - (MOVETO (FTIMES 0.75 InchesToPrinterUnits) - (FTIMES 10.0 InchesToPrinterUnits) - Stream) - (DSPFONT TitleFont Stream) - (FNT.NARRDSCR Stream FontList) - (DSPFONT FONTDSC Stream) - (printout Stream FNT.OUTFTEXT) - (DSPFONT Font Stream) - (for YPosition from (TIMES 9 InchesToPrinterUnits) to (TIMES 1.5 InchesToPrinterUnits - ) - by (TIMES -0.5 InchesToPrinterUnits) bind (CharacterCode _ 0) - do (for XPosition from (TIMES 0.75 InchesToPrinterUnits) - to (TIMES 7.5 InchesToPrinterUnits) by (TIMES 0.45 InchesToPrinterUnits) - do (MOVETO XPosition YPosition Stream) - (if (NEQ CharacterCode (CHARCODE FF)) - then (if (EQ DDev 'DISPLAY) - then (BLTCHAR CharacterCode Stream) - else (PRIN1 (CHARACTER CharacterCode) - Stream))) - (SETQ CharacterCode (ADD1 CharacterCode))) - (printout T ".")) - (printout T " done." T]) - -(FNT.DISPDSCR - [LAMBDA (OUTF FONTLIST) (* FS " 2-Jul-85 13:00") - - (* * Prints a list of fontlists with facelist formatting appropriate for 8 pt. - terminal) - - (PROG (NAME SIZE JUNK NUMB STRM TEMP OFFX UNITS T0 T1 T2 T3 T4 T5 T6 T7) - (if (EQ FONTLIST NIL) - then (RETURN NIL)) - (SETQ TEMP (DSPSCALE NIL OUTF)) - (SETQ UNITS (TIMES 4.25 TEMP)) - (SETQ OFFX (TIMES 42.5 TEMP)) - (SETQ T0 (PLUS OFFX (TIMES 0 UNITS))) - (SETQ T1 (PLUS OFFX (TIMES 14 UNITS))) - (SETQ T2 (PLUS OFFX (TIMES 20 UNITS))) - (SETQ T3 (PLUS OFFX (TIMES 30 UNITS))) - (SETQ T4 (PLUS OFFX (TIMES 40 UNITS))) - (SETQ T5 (PLUS OFFX (TIMES 50 UNITS))) - (SETQ T6 (PLUS OFFX (TIMES 55 UNITS))) - (SETQ T7 (PLUS OFFX (TIMES 70 UNITS))) - [MAPC FONTLIST '(LAMBDA (DESCR) - (SETQ NAME (CAR DESCR)) - (SETQ SIZE (CADR DESCR)) - (SETQ JUNK (CADDR DESCR)) - (SETQ TEMP (CDDDR DESCR)) - (SETQ NUMB (CAR TEMP)) - (SETQ STRM (CADR TEMP)) - (DSPXPOSITION T0 OUTF) - (printout OUTF NAME) - (DSPXPOSITION T1 OUTF) - (printout OUTF |.I3| SIZE) - (DSPXPOSITION T2 OUTF) - (printout OUTF "(" (CAR JUNK)) - (DSPXPOSITION T3 OUTF) - (printout OUTF (CADR JUNK)) - (DSPXPOSITION T4 OUTF) - (printout OUTF (CADDR JUNK) - ")") - (DSPXPOSITION T5 OUTF) - (printout OUTF NUMB) - (DSPXPOSITION T6 OUTF) - (printout OUTF STRM) - (DSPXPOSITION T7 OUTF] - (RETURN NIL]) - -(FNT.NARRDSCR - [LAMBDA (OUTF FONTLIST) (* ; "Edited 9-Jan-87 18:57 by FS") - - (* * Prints a list of fontlists with narrow formatting appropriate for 8 pt. - terminal) - - (PROG (NAME SIZE FACE NUMB STRM TEMP OFFX UNITS T0 T1 T2 T3 T4 T5 DESCR) - (if (EQ FONTLIST NIL) - then (RETURN NIL)) - (if (TYPENAMEP FONTLIST 'FONTDESCRIPTOR) - then (SETQ FONTLIST (FNT.FLST FONTLIST))) - (SETQ TEMP (DSPSCALE NIL OUTF)) - (SETQ UNITS (TIMES 4.25 TEMP)) - (SETQ OFFX (TIMES 42.5 TEMP)) - (SETQ T0 (PLUS OFFX (TIMES 0 UNITS))) - (SETQ T1 (PLUS OFFX (TIMES 14 UNITS))) - (SETQ T2 (PLUS OFFX (TIMES 20 UNITS))) - (SETQ T3 (PLUS OFFX (TIMES 28 UNITS))) - (SETQ T4 (PLUS OFFX (TIMES 33 UNITS))) - (SETQ T5 (PLUS OFFX (TIMES 48 UNITS))) - - (* * (MAPC FONTLIST (QUOTE (LAMBDA (DESCR) - (SETQ NAME (CAR DESCR)) (SETQ SIZE (CADR DESCR)) - (SETQ FACE (FNT.FACEMAP (CADDR DESCR))) (SETQ TEMP - (CDDDR DESCR)) (SETQ NUMB (CAR TEMP)) (SETQ STRM - (CADR TEMP)) (DSPXPOSITION T0 OUTF) (printout OUTF NAME) - (DSPXPOSITION T1 OUTF) (printout OUTF |.I3| SIZE) - (DSPXPOSITION T2 OUTF) (printout OUTF FACE) - (DSPXPOSITION T3 OUTF) (printout OUTF NUMB) - (DSPXPOSITION T4 OUTF) (printout OUTF STRM) - (DSPXPOSITION T5 OUTF))))) - - (for I in FONTLIST do (if (type? FONTDESCRIPTOR I) - then (SETQ DESCR (FNT.FLST I)) - else (SETQ DESCR I)) - (SETQ NAME (CAR DESCR)) - (SETQ SIZE (CADR DESCR)) - (SETQ FACE (FNT.FACEMAP (CADDR DESCR))) - (SETQ TEMP (CDDDR DESCR)) - (SETQ NUMB (CAR TEMP)) - (SETQ STRM (CADR TEMP)) - (DSPXPOSITION T0 OUTF) - (printout OUTF NAME) - (DSPXPOSITION T1 OUTF) - (printout OUTF |.I3| SIZE) - (DSPXPOSITION T2 OUTF) - (printout OUTF FACE) - (DSPXPOSITION T3 OUTF) - (printout OUTF NUMB) - (DSPXPOSITION T4 OUTF) - (printout OUTF STRM) - (DSPXPOSITION T5 OUTF)) - (RETURN NIL]) - -(FNT.DISPINIT - [LAMBDA (FILEDSC) (* FS " 2-Jul-85 14:14") - - (* * initialization or optimization for fnt.dispfont) - - (PROG (vars...) - (SETQ FNT.OUTFTEXT "abcdefghijkl ABCDEFGHIJKL") - (SETQQ FNT.INFOFONT (TERMINAL 8 (MEDIUM REGULAR REGULAR) - 0 INTERPRESS)) - (RETURN NIL]) - -(FNT.FACEMAP - [LAMBDA (OLDFACE) (* FS " 5-Sep-85 19:04") - - (* * make short face from facelist) - - (SETQ OLDFACE (\FONTFACE OLDFACE)) (* make list form *) - (CONCAT (GNC (MKSTRING (CAR OLDFACE))) - (GNC (MKSTRING (CADR OLDFACE))) - (GNC (MKSTRING (CADDR OLDFACE]) - -(FNT.SIZEMAP - [LAMBDA (SIZE) (* FS " 2-Jul-85 14:13") - - (* * make size into two character string) - - (PROG (STR) - (if (ILESSP SIZE 10) - then (RETURN (CONCAT "0" (MKSTRING SIZE))) - else (RETURN (MKSTRING SIZE]) - -(FNT.MAKENAME - [LAMBDA (FONTLIST) (* FS " 3-Sep-85 16:07") - - (* * make a unique interpress file name given a fontlist) - - (PROG (STR TYPE SIZE FACE DDEV) - (SETQ TYPE (MKSTRING (CAR FONTLIST))) - (SETQ SIZE (FNT.SIZEMAP (CADR FONTLIST))) - [SETQ FACE (MKSTRING (FNT.FACEMAP (CADDR FONTLIST] - (SETQ DDEV (CAR (CDDDDR FONTLIST))) - (SETQ STR (CONCAT (MKSTRING TYPE) - (MKSTRING SIZE) - (MKSTRING FACE) - (GNC (MKSTRING DDEV)) - ".IP")) - (RETURN STR]) - -(FNT.MAKEWIND - [LAMBDA NIL (* FS "21-Mar-86 18:07") - - (* * MAKE A WINDOW) - - (PROG (PPI) - (SETQ PPI (TIMES 72 (DSPSCALE NIL T))) - [SETQ FNT.WINDOW (CREATEW (create REGION - LEFT _ 0 - BOTTOM _ 0 - WIDTH _ (FIX (TIMES 8.5 PPI)) - HEIGHT _ (TIMES 11 PPI] - (RETURN FNT.WINDOW]) - -(FNT.FILEMAP - [LAMBDA (OUTFNAME NUMBER) (* FS " 5-Sep-85 16:56") - - (* * Takes a file name and returns an Interpress file name with number at end * - *) - - (PROG (FNAME ROOTNAME DESTNAME) - (if (OR (EQ OUTFNAME T) - (EQ OUTFNAME NIL)) - then (RETURN OUTFNAME)) - (SETQ FNAME OUTFNAME) - (SETQ ROOTNAME (FILENAMEFIELD FNAME 'NAME)) - (SETQ ROOTNAME (MKATOM (CONCAT ROOTNAME NUMBER))) - (SETQ DESTNAME (PACKFILENAME 'NAME ROOTNAME 'BODY FNAME)) - (RETURN DESTNAME]) - -(FNT.FINDALL - [LAMBDA (DEVICE) (* FS " 5-Sep-85 19:18") - - (* * Returns list of all fonts for device * *) - - (LET (RESULT) - (SETQ RESULT (FONTSAVAILABLE '* '* ' - - (* * *) - '* DEVICE T)) - (SETQ RESULT (SORT RESULT 'FNT.LESSP]) - -(FNT.FLST - [LAMBDA (FONTOBJ) (* ; "Edited 9-Jan-87 18:56 by FS") - (COND - [(TYPENAMEP FONTOBJ 'FONTDESCRIPTOR) - (LIST (FONTPROP FONTOBJ 'FAMILY) - (FONTPROP FONTOBJ 'SIZE) - (FONTPROP FONTOBJ 'FACE) - (FONTPROP FONTOBJ 'ROTATION) - (FONTPROP FONTOBJ 'DEVICE] - ((LISTP FONTOBJ) - FONTOBJ]) -) -(PUTPROPS FONTSAMPLE COPYRIGHT ("Venue & Xerox Corporation" 1985 1986 1987 1990)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (1964 16504 (FNT.MAKEBOOK 1974 . 3779) (FNT.LESSP 3781 . 4575) (FNT.SORTP 4577 . 5343) ( -FNT.DISPLOOK 5345 . 5862) (FNT.DISPTBLE 5864 . 7867) (FNT.DISPDSCR 7869 . 9976) (FNT.NARRDSCR 9978 . -12722) (FNT.DISPINIT 12724 . 13136) (FNT.FACEMAP 13138 . 13525) (FNT.SIZEMAP 13527 . 13863) ( -FNT.MAKENAME 13865 . 14549) (FNT.MAKEWIND 14551 . 15105) (FNT.FILEMAP 15107 . 15737) (FNT.FINDALL -15739 . 16082) (FNT.FLST 16084 . 16502))))) -STOP diff --git a/obsolete/library/IPFONTSAMPLE.LCOM b/obsolete/library/IPFONTSAMPLE.LCOM deleted file mode 100644 index 2301a55a7b893512c389c535b4a4a5095e8e7442..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6846 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 diff --git a/obsolete/library/PRESS b/obsolete/library/PRESS deleted file mode 100644 index 1dc8916c..00000000 --- a/obsolete/library/PRESS +++ /dev/null @@ -1,2786 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) - -(FILECREATED "14-Jul-2025 22:58:49" {WMEDLEY}PRESS.;4 453237Q - - :EDIT-BY rmk - - :CHANGES-TO (FNS \DSPFONT.PRESS) - - :PREVIOUS-DATE " 5-Jul-2025 18:52:40" {WMEDLEY}PRESS.;3) - - -(PRETTYCOMPRINT PRESSCOMS) - -(RPAQQ PRESSCOMS - [ - -(* ;;; "PRESS printing support module") - - (COMS - (* ;; "Font creation functions") - - (FNS \SEARCHPRESSFONTS \GETPRESSFONTNAMES \PRESSFAMILYCODELST \DECODEPRESSFACEBYTE - \CREATEPRESSFONT \CREATECHARSET.PRESS) - (INITVARS (PRESSFONTWIDTHSFILES '{ERIS}FONTS>FONTS.WIDTHS)) - (ALISTS (SYSTEMINITVARS PRESSFONTWIDTHSFILES)) - (DECLARE%: DONTCOPY (CONSTANTS noInfoCode))) - - (* ;; "Bitmap printing support") - - (FNS PRESSBITMAP FULLPRESSBITMAP SHOWREGION SHOWPRESSBITMAPREGION PRESSWINDOW - \WRITEPRESSBITMAP) - - (* ;; "Basic PRESS data structure output functions") - - (FNS \BCPLSOUT.PRESS \PAGEPAD.PRESS \ENTITYEND.PRESS \PARTEND.PRESS \ENTITYSTART.PRESS - SETX.PRESS SETXY.PRESS SETY.PRESS SHOW.PRESS) - - (* ;; "Image stream support functions:") - - (FNS OPENPRSTREAM \BITBLT.PRESS \BLTSHADE.PRESS \SCALEDBITBLT.PRESS \BITMAPSIZE.PRESS - \CHARWIDTH.PRESS \CLOSEF.PRESS \DRAWLINE.PRESS \ENDPAGE.PRESS NEWLINE.PRESS - NEWPAGE.PRESS SETUPFONTS.PRESS \DEFINEFONT.PRESS \DSPBOTTOMMARGIN.PRESS - \DSPCLIPPINGREGION.PRESS \DSPFONT.PRESS \DSPLEFTMARGIN.PRESS \DSPLINEFEED.PRESS - \DSPRIGHTMARGIN.PRESS \DSPSPACEFACTOR.PRESS \DSPTOPMARGIN.PRESS \DSPXPOSITION.PRESS - \DSPYPOSITION.PRESS \FIXLINELENGTH.PRESS \OUTCHARFN.PRESS \SETSPACE.PRESS - \STARTPAGE.PRESS \STRINGWIDTH.PRESS SHOWRECTANGLE.PRESS \PRESS.CONVERT.NSCHARACTER) - [COMS (* ; "Drawcurve code") - (FNS \ENDVECRUN \VECENCODE \VECPUT \VECSKIP \VECFONTINIT \DRAWCIRCLE.PRESS - \DRAWARC.PRESS \DRAWCURVE.PRESS \DRAWCURVE.PRESS.LINE \DRAWELLIPSE.PRESS - \GETBRUSHFONT.PRESS \PRESSCURVE2) - (INITVARS (\VecFontDir)) - (CONSTANTS (\MicasPerInch 2540)) - (DECLARE%: DONTCOPY (CONSTANTS (ScansPerIn 384) - (PointsPerIn 72.27) - (MicasPerScan (FQUOTIENT \MicasPerInch ScansPerIn)) - (ScansPerMica (FQUOTIENT ScansPerIn \MicasPerInch)) - (ScansPerPoint (FQUOTIENT ScansPerIn PointsPerIn)) - (PointsPerScan (FQUOTIENT PointsPerIn ScansPerIn)) - (MicasPerPoint (FQUOTIENT \MicasPerInch PointsPerIn)) - (PointsPerMica (FQUOTIENT PointsPerIn \MicasPerInch)) - (SPRUCEPAPERTOPSCANS 4096) - (SPRUCEPAPERTOPMICAS (FIX (FQUOTIENT (FTIMES - SPRUCEPAPERTOPSCANS - \MicasPerInch) - ScansPerIn))) - (SPRUCEPAPERRIGHTMICAS (FIX (FTIMES 8.5 \MicasPerInch))) - (SPRUCEPAPERRIGHTSCANS (FIX (FTIMES 8.5 ScansPerIn))) - (SPRUCEPAPERBOTTOMSCANS 0) - (SPRUCEPAPERBOTTOMMICAS 0) - (SPRUCEPAPERLEFTSCANS 0) - (SPRUCEPAPERLEFTMICAS 0] - - (* ;; "Initialization code") - - (FNS \PRESSINIT) - (DECLARE%: DONTEVAL@LOAD DOCOPY (P (\PRESSINIT))) - (DECLARE%: DONTCOPY (RECORDS PRESSDATA FONTDIRENTRY)) - (INITRECORDS PRESSDATA) - [INITVARS (DEFAULTPAGEREGION (CREATEREGION 2794 1905 16256 24765)) - (PRESSBITMAPREGION (CREATEREGION 1270 1270 (FIX (TIMES 7.5 \MicasPerInch)) - (TIMES 10 \MicasPerInch] - (GLOBALVARS DEFAULTPAGEREGION) - (DECLARE%: DONTCOPY (CONSTANTS (BYTESPERRECORD 512) - (LISPENTITYTYPE 6) - (MICASPERINCH \MicasPerInch)) - (E (RESETSAVE (RADIX 8))) - (CONSTANTS * PRESSOPS)) - - (* ;; "Hardcopy user interface connections:") - - (COMS (FNS MAKEPRESS PRESSFILEP PRESS.BITMAPSCALE) - (ALISTS (IMAGESTREAMTYPES PRESS)) - (ADDVARS [PRINTERTYPES ((PRESS SPRUCE PENGUIN DOVER) - (CANPRINT (PRESS)) - (STATUS PUP.PRINTER.STATUS) - (PROPERTIES PUP.PRINTER.PROPERTIES) - (SEND EFTP) - (BITMAPSCALE NIL) - (BITMAPFILE (PRESSBITMAP FILE BITMAP SCALEFACTOR REGION - ROTATION TITLE))) - ((FULLPRESS RAVEN) - (* ; - "same as PRESS but can scale bitmaps") - (CANPRINT (PRESS)) - (STATUS TRUE) - (PROPERTIES NILL) - (SEND EFTP) - (BITMAPSCALE PRESS.BITMAPSCALE) - (BITMAPFILE (FULLPRESSBITMAP FILE BITMAP SCALEFACTOR REGION ROTATION - TITLE] - (PRINTFILETYPES (PRESS (TEST PRESSFILEP) - (EXTENSION (PRESS)) - (CONVERSION (TEXT MAKEPRESS TEDIT - (LAMBDA (FILE PFILE FONTS HEADING) - (SETQ FILE (OPENTEXTSTREAM - FILE)) - (TEDIT.FORMAT.HARDCOPY - FILE PFILE T NIL NIL NIL - 'PRESS) - (CLOSEF? FILE) - PFILE]) - - - -(* ;;; "PRESS printing support module") - - - - -(* ;; "Font creation functions") - -(DEFINEQ - -(\SEARCHPRESSFONTS - [LAMBDA (FAMILY PSIZE FACE ROTATION DEVICE) (* rrb "26-Sep-84 16:35") - - (* * returns a list of the form (family size face rotation PRESS) for any font - matching the specs. * is used as wildcard.) - - (DECLARE (GLOBALVARS PRESSFONTWIDTHSFILES)) - (RESETLST (bind FONTSFOUND WSTRM for F inside PRESSFONTWIDTHSFILES when (INFILEP F) - do [COND - ((SETQ WSTRM (\GETSTREAM F 'INPUT T)) - (RESETSAVE NIL (LIST 'SETFILEPTR WSTRM (GETFILEPTR WSTRM))) - (SETFILEPTR WSTRM 0)) - (T (RESETSAVE (SETQ WSTRM (OPENSTREAM F 'INPUT 'OLD 8)) - '(PROGN (CLOSEF? OLDVALUE] - (SETQ FONTSFOUND (UNION (\GETPRESSFONTNAMES WSTRM FAMILY PSIZE FACE ROTATION) - FONTSFOUND)) finally (RETURN FONTSFOUND]) - -(\GETPRESSFONTNAMES - [LAMBDA (WSTRM FAMILY PSIZE FACE ROTATION) (* rmk%: "17-Dec-84 13:55") - - (* finds the fonts that exist that match the args. - * is used as wildcard.) - - (bind FONTSFOUND TYPE XFACE XFAMILY XSIZE XFACE XROTATION - [XFACECODE _ (COND - ((AND (LISTP FACE) - (NOT (MEMB '* FACE))) - - (* if complete face is specified, compute code so don't have to on each font.) - - (\FACECODE FACE] - (FAMILYCODELST _ (\PRESSFAMILYCODELST WSTRM)) - (NEXT _ 0) - (MICASIZE _ (AND (NEQ PSIZE '*) - (IQUOTIENT (ITIMES PSIZE 2540) - 72))) - do (SETFILEPTR WSTRM NEXT) - (SETQ TYPE (\BIN WSTRM)) - (add NEXT (LLSH (IPLUS (\BIN WSTRM) - (LLSH (LOGAND TYPE 15) - 8)) - 1)) - (SELECTQ (LRSH TYPE 4) - (4 (SETQ XFAMILY (OR (CDR (FASSOC (\BIN WSTRM) - FAMILYCODELST)) - (ERROR "unknown code number in widths file"))) - [COND - ((OR (EQ FAMILY '*) - (EQ FAMILY XFAMILY)) - (COND - ([AND (ILESSP (SETQ XFACE (\BIN WSTRM)) - 18) - (COND - (XFACECODE (AND (EQ XFACECODE XFACE) - (SETQ XFACE FACE))) - ((PROGN (SETQ XFACE (\DECODEPRESSFACEBYTE XFACE)) - (OR (EQ FACE '*) - (EQUAL FACE XFACE) - (for SPEC in FACE as XFIELD in XFACE - always (OR (EQ SPEC XFIELD) - (EQ SPEC '*] - - (* greater than 18 means either ASCII or other type of font, ignore it.) - (* skip beg and end chars) - (\BIN WSTRM) - (\BIN WSTRM) - (SETQ XSIZE (\WIN WSTRM)) - (COND - ((OR (EQ PSIZE '*) - (EQ MICASIZE XSIZE) - (AND (EQ XSIZE 0) - (SETQ XSIZE MICASIZE))) - - (* if XSIZE is 0, the font widths are relative and are to be used for all font - sizes. In this case, if the user asked about a particular size, claim that it - is there.) - - (SETQ XROTATION (\WIN WSTRM)) - (COND - ((OR (EQ ROTATION '*) - (EQ XROTATION ROTATION)) - (push FONTSFOUND (LIST XFAMILY (FIXR (FQUOTIENT (ITIMES XSIZE 72) - 2540)) - XFACE XROTATION 'PRESS]) - (0 (RETURN FONTSFOUND)) - NIL]) - -(\PRESSFAMILYCODELST - [LAMBDA (WSTRM) (* rrb "26-Sep-84 09:55") - - (* returns an ALIST of code - - family pairs from the press font widths file WSTRM.) - - (* leaving the file positioned at the beginning of the next file entry.) - - (bind PAIRS TYPE (NEXT _ 0) - do (SETFILEPTR WSTRM NEXT) - (SETQ TYPE (\BIN WSTRM)) - (add NEXT (LLSH (IPLUS (\BIN WSTRM) - (LLSH (LOGAND TYPE 15) - 8)) - 1)) - (SELECTQ (LRSH TYPE 4) - (1 (SETQ PAIRS (CONS [CONS (\WIN WSTRM) - (PACKC (for I from 1 to (\BIN WSTRM) - collect (\BIN WSTRM] - PAIRS))) - (0 (RETURN PAIRS)) - NIL]) - -(\DECODEPRESSFACEBYTE - [LAMBDA (FACECODE) (* rrb "26-Sep-84 14:28") - - (* * returns a list of (weight slope expansion) from a press widths file byte - code.) - - (COND - [(ILESSP FACECODE 18) - (PROG (EXP SLOPE WEIGHT) - [SETQ EXP (COND - ((IGEQ FACECODE 12) - (SETQ FACECODE (IDIFFERENCE FACECODE 12)) - 'EXPANDED) - ((IGEQ FACECODE 6) - (SETQ FACECODE (IDIFFERENCE FACECODE 6)) - 'COMPRESSED) - (T 'REGULAR] - [SETQ WEIGHT (COND - ((IGEQ FACECODE 4) - (SETQ FACECODE (IDIFFERENCE FACECODE 4)) - 'LIGHT) - ((IGEQ FACECODE 2) - (SETQ FACECODE (IDIFFERENCE FACECODE 2)) - 'BOLD) - (T 'MEDIUM] - [SETQ SLOPE (COND - ((EQ FACECODE 1) - 'ITALIC) - (T 'REGULAR] - (RETURN (LIST WEIGHT SLOPE EXP] - (T (* non xerox font) - NIL]) - -(\CREATEPRESSFONT - [LAMBDA (FAMILY PSIZE FACE ROTATION DEVICE) (* jds "10-Mar-86 16:35") - - (* Widths array is fully allocated, with zeroes for characters with no - information. An array is not allocated for fixed WidthsY. - DEVICE is PRESS or INTERPRESS) - - (DECLARE (GLOBALVARS PRESSFONTWIDTHSFILES)) - (RESETLST (* RESETLST to make sure the fontfiles - get closed) - (PROG ((FD (create FONTDESCRIPTOR - FONTDEVICE _ DEVICE - FONTFAMILY _ FAMILY - FONTSIZE _ PSIZE - FONTFACE _ FACE - \SFFACECODE _ (\FACECODE FACE) - ROTATION _ ROTATION - FONTSCALE _ (CONSTANT (FQUOTIENT 2540 72)) - \SFHeight _ 0 - \SFAscent _ 0 - \SFDescent _ 0))) - (\GETCHARSETINFO 0 FD T) - (RETURN FD]) - -(\CREATECHARSET.PRESS - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHARSET FONTDESC NOSLUG?) - (* ; "Edited 29-Jul-87 14:15 by jds") - -(* ;;; "just a dummy definition. Press should not ever be trying to change character sets, since the fonts only contain charset 0 (roughly)") - - (DECLARE (GLOBALVARS PRESSFONTWIDTHSFILES)) - (COND - ((NEQ 0 CHARSET) - (ERROR "Press does not support NS characters."))) - (RESETLST (* ; - "RESETLST to make sure the fontfiles get closed") - - (PROG* (WSTRM STRMCACHE XLATEDFAM FIXEDFLAGS RELFLAG FIRSTCHAR LASTCHAR TEM WIDTHSY WIDTHS - (PRESSMICASIZE (IQUOTIENT (ITIMES SIZE 2540) - 72)) - (NSMICASIZE (FIXR (FQUOTIENT (ITIMES SIZE 2540) - 72))) - (FACECODE (\FACECODE FACE)) - [FD (create FONTDESCRIPTOR - FONTDEVICE _ DEVICE - FONTFAMILY _ FAMILY - FONTSIZE _ SIZE - FONTFACE _ FACE - \SFFACECODE _ FACECODE - ROTATION _ ROTATION - FONTSCALE _ (CONSTANT (FQUOTIENT 2540 72] - (CSINFO (create CHARSETINFO))) - -(* ;;; "Go look for the fonts.widths file that has this font's info in it.") - - (OR [for F inside PRESSFONTWIDTHSFILES when (INFILEP F) - do (* ; - "Look thru the candidate PRESSFONTWIDTHSFILES for a file that has a description for this font.") - - [COND - [(SETQ WSTRM (\GETSTREAM F 'INPUT T)) - (COND - ((RANDACCESSP WSTRM) - (RESETSAVE NIL (LIST 'SETFILEPTR WSTRM (GETFILEPTR WSTRM))) - (SETFILEPTR WSTRM 0] - (T (RESETSAVE (SETQ WSTRM (OPENSTREAM F 'INPUT 'OLD 8)) - '(PROGN (CLOSEF? OLDVALUE] - [OR (RANDACCESSP WSTRM) - (COPYBYTES WSTRM (SETQ WSTRM (OPENSTREAM '{NODIRCORE} 'BOTH - 'NEW] - (push STRMCACHE WSTRM) (* ; "Save for coercions below") - - (COND - ((SETQ RELFLAG (\POSITIONFONTFILE WSTRM NSMICASIZE FIRSTCHAR LASTCHAR - FAMILY FACECODE)) - (* ; - "OK, we found this font described in this file.") - - (RETURN T] - [AND (SETQ XLATEDFAM (SELECTQ FAMILY - (MODERN 'HELVETICA) - (CLASSIC 'TIMESROMAN) - (LOGOTYPE 'LOGO) - (TERMINAL 'GACHA) - NIL)) - (for old WSTRM in (SETQ STRMCACHE (DREVERSE STRMCACHE)) - first (replace FONTFAMILY of FD with XLATEDFAM) - do (* ; "Now try coercing the family name") - - (* ;; "We know the file was left open and is randaccessp from the previous loop, which must have run off the end of the file list") - - (SETFILEPTR WSTRM 0) - (COND - ((SETQ RELFLAG (\POSITIONFONTFILE WSTRM NSMICASIZE FIRSTCHAR - LASTCHAR XLATEDFAM FACECODE)) - (replace FONTDEVICESPEC of FD - with (LIST XLATEDFAM SIZE FACE ROTATION DEVICE)) - (replace FONTFAMILY of FD with FAMILY) - (RETURN T] - [AND (SETQ XLATEDFAM (SELECTQ FAMILY - (MODERN 'FRUTIGER) - (CLASSIC 'CENTURY) - NIL)) - (for old WSTRM in STRMCACHE first (replace FONTFAMILY of FD with XLATEDFAM - ) - do (SETFILEPTR WSTRM 0) - (COND - ((SETQ RELFLAG (\POSITIONFONTFILE WSTRM NSMICASIZE FIRSTCHAR - LASTCHAR XLATEDFAM FACECODE)) - (replace FONTDEVICESPEC of FD - with (LIST XLATEDFAM SIZE FACE ROTATION DEVICE)) - (replace FONTFAMILY of FD with FAMILY) - (RETURN T] - (RETURN NIL)) - -(* ;;; "Having found the font-widths file, now read the width info from it.") - - (SETQ RELFLAG (ZEROP RELFLAG)) (* ; - "Actually, \POSITIONFONTFILE returns zero if the font metrics are size-relative and must be scaled.") - - (SETQ WIDTHS (fetch (CHARSETINFO WIDTHS) of CSINFO)) - (SETFILEPTR WSTRM (UNFOLD (\FIXPIN WSTRM) - BYTESPERWORD)) - - (* ;; "Read the location of the WD segment for this font (we're in the directory part of the file now), and go there.") - - (SETQ FBBOX (SIGNED (\WIN WSTRM) - BITSPERWORD)) (* ; - "replace (FONTDESCRIPTOR FBBOX) of FD with (SIGNED (\WIN WSTRM) BITSPERWORD)") - (* ; - "Get the max bounding width for the font") - - (replace (CHARSETINFO CHARSETDESCENT) of CSINFO with (IMINUS (SIGNED (\WIN WSTRM) - BITSPERWORD))) - (* ; "Descent is -FBBOY") - - (SETQ FOO (\WIN WSTRM)) (* ; - "replace (FONTDESCRIPTOR FBBDX) of FD with (SIGNED (\WIN WSTRM) BITSPERWORD)") - (* ; "And the standard kern value (?)") - - (SETQ CHARSETHEIGHT (SIGNED (\WIN WSTRM) - BITSPERWORD)) (* ; - "replace \SFHeight of FD with (SIGNED (\WIN WSTRM) BITSPERWORD)") - (* ; "Height is FBBDY") - - [COND - (RELFLAG (* ; - "Dimensions are relative, must be scaled") - - (* ;; "replace (FONTDESCRIPTOR FBBOX) of FD with (IQUOTIENT (ITIMES (fetch (FONTDESCRIPTOR FBBOX) of FD) NSMICASIZE) 1000)") - - (replace (CHARSETINFO CHARSETDESCENT) of CSINFO - with (IQUOTIENT (ITIMES (fetch (CHARSETINFO CHARSETDESCENT) - of CSINFO) - NSMICASIZE) - 1000)) - - (* ;; "replace (FONTDESCRIPTOR FBBDX) of FD with (IQUOTIENT (ITIMES (fetch (FONTDESCRIPTOR FBBDX) of FD) NSMICASIZE) 1000)") - - (SETQ CHARSETHEIGHT (IQUOTIENT (ITIMES CHARSETHEIGHT NSMICASIZE) - 1000] - (replace (CHARSETINFO CHARSETASCENT) of CSINFO with (IDIFFERENCE CHARSETHEIGHT - (fetch CHARSETDESCENT - of CSINFO))) - (SETQ FIXEDFLAGS (LRSH (\BIN WSTRM) - 6)) (* ; "The fixed flags") - - (\BIN WSTRM) (* ; "Skip the spares") - - [COND - ((EQ 2 (LOGAND FIXEDFLAGS 2)) (* ; "This font is fixed width.") - - (SETQ TEM (\WIN WSTRM)) (* ; - "Read the fixed width for this font") - - [COND - ((AND RELFLAG (NOT (ZEROP TEM))) (* ; "If it's size relative, scale it.") - - (SETQ TEM (IQUOTIENT (ITIMES TEM NSMICASIZE) - 1000] - (for I from FIRSTCHAR to LASTCHAR do (* ; - "Fill in the char widths table with the width.") - - (\FSETWIDTH WIDTHS I TEM))) - (T (* ; - "Variable width font, so we have to read widths.") - (* ; - "AIN WIDTHS FIRSTCHAR (ADD1 (IDIFFERENCE LASTCHAR FIRSTCHAR)) WSTRM") - - (for I from FIRSTCHAR to LASTCHAR do (\FSETWIDTH WIDTHS I noInfoCode)) - (\BINS (\GETOFD WSTRM 'INPUT) - WIDTHS - (UNFOLD FIRSTCHAR BYTESPERWORD) - (UNFOLD (ADD1 (IDIFFERENCE LASTCHAR FIRSTCHAR)) - BYTESPERWORD)) (* ; "Read the X widths.") - - (for I from FIRSTCHAR to LASTCHAR when (EQ noInfoCode (\FGETWIDTH WIDTHS I)) - do (* ; - "For chars that have no width info, let width be zero.") - - (\FSETWIDTH WIDTHS I 0)) - (COND - (RELFLAG (* ; - "If the widths are size-relative, scale them.") - - (for I from FIRSTCHAR to LASTCHAR - do (\FSETWIDTH WIDTHS I (IQUOTIENT (ITIMES (\FGETWIDTH WIDTHS I) - NSMICASIZE) - 1000] - [COND - [(EQ 1 (LOGAND FIXEDFLAGS 1)) - (COND - ((ILESSP (GETFILEPTR WSTRM) - (GETEOFPTR WSTRM)) - (SETQ WIDTHSY (\WIN WSTRM))) - (T (* ; - "STAR FONT FILES LIKE TO LEAVE OFF THE Y WIDTH.") - - (SETQ WIDTHSY 0))) (* ; - "The fixed width-Y for this font; the width-Y field is a single integer in the FD") - - (replace (CHARSETINFO YWIDTHS) of CSINFO with (COND - ((AND RELFLAG - (NOT (ZEROP WIDTHSY))) - (IQUOTIENT (ITIMES WIDTHSY - NSMICASIZE) - 1000)) - (T WIDTHSY] - (T (* ; - "Variable Y-width font. Fill it in as above") - - (SETQ WIDTHSY (replace (CHARSETINFO YWIDTHS) of CSINFO with ( - \CREATECSINFOELEMENT - ))) - (for I from FIRSTCHAR to LASTCHAR do (\FSETWIDTH WIDTHSY I noInfoCode)) - (\BINS (\GETOFD WSTRM 'INPUT) - WIDTHSY - (UNFOLD FIRSTCHAR BYTESPERWORD) - (UNFOLD (ADD1 (IDIFFERENCE LASTCHAR FIRSTCHAR)) - BYTESPERWORD)) (* ; "Read the Y widths") - - (for I from FIRSTCHAR to LASTCHAR when (EQ noInfoCode (\FGETWIDTH WIDTHSY I)) - do (* ; - "Let any characters with no width info be zero height") - - (\FSETWIDTH WIDTHSY I 0)) - (COND - (RELFLAG (* ; - "If the widths are size-relative, scale them.") - - (for I from FIRSTCHAR to LASTCHAR - do (\FSETWIDTH WIDTHSY I (IQUOTIENT (ITIMES (\FGETWIDTH WIDTHSY - I) - NSMICASIZE) - 1000] - (RETURN CSINFO]) -) - -(RPAQ? PRESSFONTWIDTHSFILES '{ERIS}FONTS>FONTS.WIDTHS) - -(ADDTOVAR SYSTEMINITVARS (PRESSFONTWIDTHSFILES {DSK}FONTS.WIDTHS)) -(DECLARE%: DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RPAQQ noInfoCode 32768) - - -(CONSTANTS noInfoCode) -) -) - - - -(* ;; "Bitmap printing support") - -(DEFINEQ - -(PRESSBITMAP - [LAMBDA (FILE BITMAP SCALEFACTOR CLIPPINGREGION) (* ; "Edited 12-Jun-90 10:39 by mitani") - - (* * This routine uses the whole page (ie PRTOP and PRRIGHT as opposed to - PRWIDTH and PRHEIGHT) to produce a SPRUCE Press file. - It will truncate if necessary since SPRUCE does not support scaling) - - (PROG ((PRSTREAM (OPENPRSTREAM FILE)) - WIDTH HEIGHT PRDATA XPOS YPOS (PRESSPAGEHEIGHT (fetch (REGION HEIGHT) of - PRESSBITMAPREGION - )) - (PRESSPAGEWIDTH (fetch (REGION WIDTH) of PRESSBITMAPREGION))) - (SETQ PRDATA (fetch (STREAM IMAGEDATA) of PRSTREAM)) - (if (AND SCALEFACTOR (NOT (EQUAL SCALEFACTOR 1))) - then (ERROR "Spruce cannot scale bitmaps. Try pressing to a full press printer.")) - (* Get width and height in screen - pts) - [COND - (CLIPPINGREGION (SETQ WIDTH (fetch (REGION WIDTH) of CLIPPINGREGION)) - (SETQ HEIGHT (fetch (REGION HEIGHT) of CLIPPINGREGION))) - (T (SETQ WIDTH (BITMAPWIDTH BITMAP)) - (SETQ HEIGHT (BITMAPHEIGHT BITMAP] - (SETQ XPOS (IQUOTIENT (IDIFFERENCE PRESSPAGEWIDTH (FIX (TIMES MicasPerPoint WIDTH))) - 2)) - (SETQ YPOS (IQUOTIENT (IDIFFERENCE PRESSPAGEHEIGHT (FIX (TIMES MicasPerPoint HEIGHT))) - 2)) - [COND - ((OR (ILESSP XPOS 0) - (ILESSP YPOS 0)) - (printout T "Warning: Bitmap too large for Spruce PRESS page, will be clipped..." T) - (SETQ XPOS (IMAX 0 XPOS)) - (SETQ YPOS (IMAX 0 YPOS)) - (SETQ CLIPPINGREGION (if CLIPPINGREGION - then [CREATEREGION (fetch (REGION LEFT) of - CLIPPINGREGION - ) - (fetch (REGION BOTTOM) of - CLIPPINGREGION - ) - (FIX (MIN WIDTH (QUOTIENT PRESSPAGEWIDTH - MicasPerPoint))) - (FIX (MIN HEIGHT (QUOTIENT PRESSPAGEHEIGHT - MicasPerPoint] - else (CREATEREGION 0 0 (FIX (MIN WIDTH (QUOTIENT - PRESSPAGEWIDTH - MicasPerPoint) - )) - (FIX (MIN HEIGHT (QUOTIENT PRESSPAGEHEIGHT - MicasPerPoint] - (\WRITEPRESSBITMAP BITMAP (IPLUS (fetch (REGION LEFT) of PRESSBITMAPREGION) - XPOS) - (IPLUS (fetch (REGION BOTTOM) of PRESSBITMAPREGION) - YPOS) - SCALEFACTOR CLIPPINGREGION PRSTREAM) - (RETURN (CLOSEF PRSTREAM]) - -(FULLPRESSBITMAP - [LAMBDA (FILE BITMAP SCALEFACTOR CLIPPINGREGION) (* ; "Edited 12-Jun-90 10:39 by mitani") - - (* * This routine uses the whole page (ie PRTOP and PRRIGHT as opposed to - PRWIDTH and PRHEIGHT) to produce a full Press file. - It will scale if necessary) - - (* * When this fn is called from HARDCOPYW, the scalefactor should already be - correct. On a direct call, it will handle it itself) - - (PROG ((PRSTREAM (OPENPRSTREAM FILE)) - WIDTH HEIGHT PRDATA XPOS YPOS (PRESSPAGEHEIGHT (fetch (REGION HEIGHT) of - PRESSBITMAPREGION - )) - (PRESSPAGEWIDTH (fetch (REGION WIDTH) of PRESSBITMAPREGION))) - (SETQ PRDATA (fetch (STREAM IMAGEDATA) of PRSTREAM)) - (if (NOT SCALEFACTOR) - then (SETQ SCALEFACTOR 1.0)) (* Get width and height in screen - pts) - [COND - (CLIPPINGREGION (SETQ WIDTH (fetch (REGION WIDTH) of CLIPPINGREGION)) - (SETQ HEIGHT (fetch (REGION HEIGHT) of CLIPPINGREGION))) - (T (SETQ WIDTH (BITMAPWIDTH BITMAP)) - (SETQ HEIGHT (BITMAPHEIGHT BITMAP] - (SETQ XPOS (IQUOTIENT (IDIFFERENCE PRESSPAGEWIDTH (FIX (TIMES MicasPerPoint WIDTH - SCALEFACTOR))) - 2)) - (SETQ YPOS (IQUOTIENT (IDIFFERENCE PRESSPAGEHEIGHT (FIX (TIMES MicasPerPoint HEIGHT - SCALEFACTOR))) - 2)) - [COND - ((OR (ILESSP XPOS 0) - (ILESSP YPOS 0)) - (printout T "Warning: Bitmap too large for PRESS page, will be scaled..." T) - (SETQ SCALEFACTOR (PRESS.BITMAPSCALE WIDTH HEIGHT)) - (SETQ XPOS (IQUOTIENT (IDIFFERENCE PRESSPAGEWIDTH (FIX (TIMES MicasPerPoint WIDTH - SCALEFACTOR))) - 2)) - (SETQ YPOS (IQUOTIENT (IDIFFERENCE PRESSPAGEHEIGHT (FIX (TIMES MicasPerPoint HEIGHT - SCALEFACTOR))) - 2)) - (if (OR (ILESSP XPOS 0) - (ILESSP YPOS 0)) - then (ERROR "Internal consistency check failed in FULLPRESSBITMAP."] - (\WRITEPRESSBITMAP BITMAP (IPLUS (fetch (REGION LEFT) of PRESSBITMAPREGION) - XPOS) - (IPLUS (fetch (REGION BOTTOM) of PRESSBITMAPREGION) - YPOS) - SCALEFACTOR CLIPPINGREGION PRSTREAM) - (RETURN (CLOSEF PRSTREAM]) - -(SHOWREGION - [LAMBDA (REGION STREAM) (* ; "Edited 12-Jun-90 10:38 by mitani") - - (* * comment) - - (PROG NIL - (MOVETO (fetch (REGION LEFT) of REGION) - (fetch (REGION BOTTOM) of REGION) - STREAM) - (RELDRAWTO (fetch (REGION WIDTH) of REGION) - 0 NIL NIL STREAM) - (RELDRAWTO 0 (fetch (REGION HEIGHT) of REGION) - NIL NIL STREAM) - (RELDRAWTO (MINUS (fetch (REGION WIDTH) of REGION)) - 0 NIL NIL STREAM) - (RELDRAWTO 0 (MINUS (fetch (REGION HEIGHT) of REGION)) - NIL NIL STREAM) - (RETURN STREAM]) - -(SHOWPRESSBITMAPREGION - [LAMBDA NIL (* gbn "16-Sep-84 19:18") - - (* * comment) - - (PROG [(STR (OPENIMAGESTREAM '{LPT} 'PRESS] - (SHOWREGION PRESSBITMAPREGION STR) - (RETURN (CLOSEF STR]) - -(PRESSWINDOW - [LAMBDA (W) (* ; "Edited 12-Jun-90 10:39 by mitani") - (* First Try) - (PROG ((PRSTREAM (OPENPRSTREAM '{CORE}WINDOW.PRESS (LIST 'HEADING "Press Stream Window Image" - 'BREAKPAGEFILENAME - "Press Stream Window Image"))) - [BITMAP (WINDOW.BITMAP (OR W (WHICHW] - WIDTH HEIGHT (PTSTOMICAS 35)) - (SETQ WIDTH (BITMAPWIDTH BITMAP)) - (SETQ HEIGHT (BITMAPHEIGHT BITMAP)) - (DSPXPOSITION (IPLUS (fetch PRLEFT of (fetch (STREAM IMAGEDATA) of PRSTREAM - )) - (IQUOTIENT (IDIFFERENCE (fetch PRWIDTH of (fetch - (STREAM IMAGEDATA) - of PRSTREAM)) - (ITIMES PTSTOMICAS WIDTH)) - 2)) - PRSTREAM) - (DSPYPOSITION (IPLUS (fetch PRBOTTOM of (fetch (STREAM IMAGEDATA) of - PRSTREAM - )) - (IQUOTIENT (IDIFFERENCE (fetch PRHEIGHT of (fetch - (STREAM IMAGEDATA) - of PRSTREAM) - ) - (ITIMES PTSTOMICAS HEIGHT)) - 2)) - PRSTREAM) - (\WRITEPRESSBITMAP BITMAP NIL NIL PRSTREAM) - (RETURN (CLOSEF PRSTREAM]) - -(\WRITEPRESSBITMAP - [LAMBDA (BITMAP XPOS YPOS SCALEFACTOR CLIPPINGREGION PRSTREAM) - (* ; "Edited 12-Jun-90 10:39 by mitani") - (* This should define the origin of - the bitmap on the page) - [COND - (CLIPPINGREGION (* UGH) - (SETQ BITMAP (PROG [(BM (BITMAPCREATE (fetch (REGION WIDTH) of CLIPPINGREGION) - (fetch (REGION HEIGHT) of CLIPPINGREGION] - (with REGION CLIPPINGREGION - (BITBLT BITMAP LEFT BOTTOM BM NIL NIL WIDTH HEIGHT)) - (RETURN BM] - (PROG ((PRDATA (fetch (STREAM IMAGEDATA) of PRSTREAM)) - (WW (fetch BITMAPRASTERWIDTH of BITMAP)) - (HT (fetch BITMAPHEIGHT of BITMAP)) - ELSTREAM TOTCOUNT CURX CURY) - (SETQ ELSTREAM (fetch ELSTREAM of PRDATA)) - (SETQ CURX (fetch PRXPOS of PRDATA)) - (SETQ CURY (fetch PRYPOS of PRDATA)) - (SHOW.PRESS PRSTREAM) (* flush chars before ending entity) - (\ENTITYEND.PRESS PRSTREAM) - - (* Close previous entity because we used to specify a translation for the - bitmap entity. But now we are using the current x and y position. - All this stuff might therefore be unnecessary) - - (\ENTITYSTART.PRESS PRSTREAM) - (SETXY.PRESS PRSTREAM XPOS YPOS) - (COND - ((NULL SCALEFACTOR) - (SETQ SCALEFACTOR 1.0))) - (\WOUT PRSTREAM 256) (* Output <>. - (0 notates bitmap, followed by 2byte - width (in dots) and height - (in dots))) - (\WOUT PRSTREAM (UNFOLD WW BITSPERWORD)) (* Width) - (\WOUT PRSTREAM HT) (* Height) - (\WOUT PRSTREAM (IPLUS 512 3)) (* <> notates that the - Lisp bitmap is stored left-to-right - and top-to-bottom) - (\WOUT PRSTREAM 2) - - (* you might think it should be MicasPerPoint - - ha ha ha! Only the value 32 works! Oops!) - - [\WOUT PRSTREAM (FIXR (FTIMES SCALEFACTOR (TIMES 32 (UNFOLD WW BITSPERWORD] - [\WOUT PRSTREAM (FIXR (FTIMES SCALEFACTOR (TIMES 32 HT] - (\WOUT PRSTREAM 1) - - (* Set Window. 2 bytes of how many bytes to skip, 2 bytes of how many dots wide - to display followed by the same for lines) - - (\WOUT PRSTREAM 0) (* skip 0 dots) - (\WOUT PRSTREAM (UNFOLD WW BITSPERWORD)) - (\WOUT PRSTREAM 0) (* skip 0 lines) - (\WOUT PRSTREAM HT) - (\WOUT PRSTREAM 3) (* <>) - (* TOTCOUNT is a word count.) - (\BOUTS PRSTREAM (fetch BITMAPBASE of BITMAP) - 0 - (UNFOLD (SETQ TOTCOUNT (ITIMES HT WW)) - BYTESPERWORD)) - (\BOUT ELSTREAM ShowDotsCode) - (\FIXPOUT ELSTREAM (IPLUS TOTCOUNT 13)) (* Number of DL bytes) - (\ENTITYEND.PRESS PRSTREAM) - (\ENTITYSTART.PRESS PRSTREAM) (* Since START reestablishes X and - Y, following might not be necessary) - (SETXY.PRESS PRSTREAM CURX CURY]) -) - - - -(* ;; "Basic PRESS data structure output functions") - -(DEFINEQ - -(\BCPLSOUT.PRESS - [LAMBDA (STRM X N) (* rmk%: "14-Jun-84 19:36") - - (* Puts out a Bcpl string X in N bytes, filling with zeroes or truncating if - needed.) - - (PROG [(NC (IMIN (NCHARS X) - (SETQ N (SUB1 N] - (\BOUT STRM NC) - (for I from 1 to NC do (\BOUT STRM (NTHCHARCODE X I))) - (for I from (ADD1 NC) to N do (\BOUT STRM 0]) - -(\PAGEPAD.PRESS - [LAMBDA (STRM) (* rmk%: "14-Jun-84 18:30") - - (* Move the fileptr to the next record boundary, returning the number of words - skipped.) - - (PROG (PADDING (P (GETFILEPTR STRM))) - (SETQ PADDING (MODUP P BYTESPERRECORD)) - (COND - ((IGREATERP PADDING 0) - - (* SETFILEPTR for all but 1, then \BOUT to make sure the file gets extended.) - - [AND (NEQ PADDING 1) - (SETFILEPTR STRM (IPLUS P (SUB1 PADDING] - (\BOUT STRM 0))) - (RETURN (FOLDLO PADDING BYTESPERWORD]) - -(\ENTITYEND.PRESS - [LAMBDA (PRSTREAM XOFFSET YOFFSET ETYPE) (* ; "Edited 12-Jun-90 10:39 by mitani") - (PROG (ELSTREAM DLLENGTH (PRDATA (fetch (STREAM IMAGEDATA) of PRSTREAM))) - (SETQ ELSTREAM (fetch ELSTREAM of PRDATA)) - (SETQ DLLENGTH (IDIFFERENCE (\GETFILEPTR PRSTREAM) - (fetch DLSTARTBYTE of PRDATA))) - (COND - ((ODDP (GETFILEPTR ELSTREAM)) - (\BOUT ELSTREAM NopCode))) - (\BOUT ELSTREAM (OR ETYPE LISPENTITYTYPE)) - (\BOUT ELSTREAM (OR (fetch FONTSET# of (fetch PRCURRFDE of PRDATA)) - 0)) (* fontset) - (\FIXPOUT ELSTREAM (IDIFFERENCE (fetch DLSTARTBYTE of PRDATA) - (UNFOLD (fetch PRPARTSTART of PRDATA) - BYTESPERRECORD))) (* (IDIFFERENCE (fetch DLSTARTBYTE - of PRDATA) (UNFOLD - (fetch PRPARTSTART of PRDATA) - BYTESPERRECORD))) - (* part relative start of data list - for this entity) - (\FIXPOUT ELSTREAM DLLENGTH) (* length of data) - (\WOUT ELSTREAM (OR XOFFSET 0)) (* Entity origin) - (\WOUT ELSTREAM (OR YOFFSET 0)) - (\WOUT ELSTREAM (fetch PRLEFT of PRDATA)) (* The bounding box for this entity - - - MAYBE LEFT AND BOTTOM ARE SIGNED?) - (\WOUT ELSTREAM (fetch PRBOTTOM of PRDATA)) - (\WOUT ELSTREAM (IDIFFERENCE (fetch PRRIGHT of PRDATA) - (fetch PRLEFT of PRDATA))) - (* width) - (\WOUT ELSTREAM (IDIFFERENCE (fetch PRTOP of PRDATA) - (fetch PRBOTTOM of PRDATA))) - (* height) - (\WOUT ELSTREAM (ADD1 (FOLDLO (IDIFFERENCE (GETFILEPTR ELSTREAM) - (fetch ELSTARTBYTE of PRDATA)) - BYTESPERWORD))) (* Length in words--ADD1 for the - length itself) - ]) - -(\PARTEND.PRESS - [LAMBDA (PRSTREAM PARTTYPE) (* ; "Edited 12-Jun-90 10:39 by mitani") - - (* Closes one part and sets up for the next, by saving the partstart and - emptying the entitylist stream) - - (PROG (START PDSTREAM (PRDATA (fetch (STREAM IMAGEDATA) of PRSTREAM))) - (SETQ PDSTREAM (fetch PDSTREAM of PRDATA)) - (SETQ START (fetch PRPARTSTART of PRDATA)) - (\WOUT PDSTREAM PARTTYPE) - (\WOUT PDSTREAM START) (* Starting record) - (* Update starting record for next - part, and record length in records - of this part) - (\WOUT PDSTREAM (IDIFFERENCE (replace PRPARTSTART of PRDATA - with (FOLDHI (GETFILEPTR PRSTREAM) - BYTESPERRECORD)) - START)) - (\WOUT PDSTREAM (\PAGEPAD.PRESS PRSTREAM)) - (SETFILEPTR (fetch ELSTREAM of PRDATA) - 0]) - -(\ENTITYSTART.PRESS - [LAMBDA (PRSTREAM) (* ; "Edited 12-Jun-90 10:39 by mitani") - (PROG ((PRDATA (fetch (STREAM IMAGEDATA) of PRSTREAM))) - (freplace PRSPACEWIDTH of PRDATA with NIL) - - (* This really should be the spacewidth of the current font. - But then, if we switch fonts to one whose space*spacefactor comes out the same, - we won't know to put out a setspace command. - So when we actually set up the first font in this entity, we will end up - putting out an explicit setspace (even if the space factor is 1)) - - (freplace PRFONT of PRDATA with NIL) - - (* We set the font to NIL, knowing that the current font can be recoverd from - the PRCURRFDE. This font will be set in the press file before the first show, - if no explicit dspfont intervenes. Note, however, that up until the first - dspfont, the widthscache still corresponds to what was the PRFONT.) - - (freplace DLSTARTBYTE of PRDATA with (\GETFILEPTR PRSTREAM)) - (freplace ELSTARTBYTE of PRDATA with (\GETFILEPTR (fetch ELSTREAM - of PRDATA))) - (freplace STARTCHARBYTE of PRDATA with (\GETFILEPTR PRSTREAM)) - (* Entity starts with position at - 0,0 so must re-establish current - position (?)) - (SETXY.PRESS PRSTREAM (fetch PRXPOS of PRDATA) - (fetch PRYPOS of PRDATA]) - -(SETX.PRESS - [LAMBDA (PRSTREAM X) (* ; "Edited 12-Jun-90 10:39 by mitani") - (PROG [(ELSTREAM (fetch ELSTREAM of (fetch (STREAM IMAGEDATA) of PRSTREAM] - (COND - ([AND (IGEQ X SPRUCEPAPERLEFTMICAS) - (ILEQ X SPRUCEPAPERRIGHTMICAS) - (NOT (IEQP X (fetch PRXPOS of (fetch (STREAM IMAGEDATA) of - PRSTREAM - ] - (\BOUT ELSTREAM SetXCode) (* Outcharfn ignores characters that - are not in the clipping region) - (\WOUT ELSTREAM X))) - (replace PRXPOS of (fetch (STREAM IMAGEDATA) of PRSTREAM) with X]) - -(SETXY.PRESS - [LAMBDA (PRSTREAM X Y) (* ; "Edited 12-Jun-90 10:39 by mitani") - (PROG (ELSTREAM (PRDATA (fetch (STREAM IMAGEDATA) of PRSTREAM))) - (SETQ ELSTREAM (fetch ELSTREAM of PRDATA)) - (COND - ((AND (IGEQ X SPRUCEPAPERLEFTMICAS) - (ILEQ X SPRUCEPAPERRIGHTMICAS)) - - (* this clause could be part of the above test to avoid putting out set x when - the position is in the right place. There is a place that Ron thinks is in - endvecrun where setxy is called to get the printer and the streams idea of - where the position is back into step. Thus if this test is included, that setxy - is not put out when it should be. rrb (NOT - (IEQP X (fetch PRXPOS of PRDATA)))) - - (\BOUT ELSTREAM SetXCode) - (\WOUT ELSTREAM X))) - (replace PRXPOS of PRDATA with X) - (COND - ((AND (IGEQ Y SPRUCEPAPERBOTTOMMICAS) - (ILEQ Y SPRUCEPAPERTOPMICAS)) - - (* see above comment (NOT (IEQP Y (fetch PRYPOS of PRDATA))) This clause should - NOT be reinserted, because functions like \ENTITYSTART.PRESS call this function - and need to really have the commands emitted, even tho the PRXPOS and PRYPOS - fields claim to be real.) - - (\BOUT ELSTREAM SetYCode) - (\WOUT ELSTREAM Y))) - (RETURN (replace PRYPOS of PRDATA with Y]) - -(SETY.PRESS - [LAMBDA (PRSTREAM Y) (* ; "Edited 12-Jun-90 10:39 by mitani") - (PROG [(ELSTREAM (fetch ELSTREAM of (fetch (STREAM IMAGEDATA) of PRSTREAM] - (COND - ([AND (IGEQ Y SPRUCEPAPERBOTTOMMICAS) - (ILEQ Y SPRUCEPAPERTOPMICAS) - (NOT (IEQP Y (fetch PRYPOS of (ffetch (STREAM IMAGEDATA) of - PRSTREAM - ] - (\BOUT ELSTREAM SetYCode) - (\WOUT ELSTREAM Y))) - (freplace PRYPOS of (ffetch (STREAM IMAGEDATA) of PRSTREAM) with Y]) - -(SHOW.PRESS - [LAMBDA (PRSTREAM) (* ; "Edited 12-Jun-90 10:39 by mitani") - (PROG (CNT ELSTREAM (PRDATA (fetch (STREAM IMAGEDATA) of PRSTREAM)) - (CURBYTE (\GETFILEPTR PRSTREAM))) - (SETQ ELSTREAM (fetch ELSTREAM of PRDATA)) - (SETQ CNT (IDIFFERENCE CURBYTE (fetch STARTCHARBYTE of PRDATA))) - [COND - ((IGREATERP CNT 0) - [COND - ((NULL (fetch PRFONT of PRDATA)) - - (* This is the first run of characters in this entity, and there has been no - explicit dspfont. We therefore re-establish the current font as of the end of - the last entity) - - (replace PRFONT of PRDATA with (fetch DESCR - of (fetch PRCURRFDE - of PRDATA))) - (\BOUT (fetch ELSTREAM of PRDATA) - (LOGOR FontCode (fetch (FONTDIRENTRY FONT#) of (fetch PRCURRFDE - of PRDATA] - (COND - ((ILESSP CNT 33) (* short form) - (\BOUT ELSTREAM (IPLUS ShowCharactersShortCode CNT -1))) - (T (* Break up every 255) - (while (IGREATERP CNT 255) do (\BOUT ELSTREAM ShowCharactersCode) - (\BOUT ELSTREAM 255) - (SETQ CNT (IDIFFERENCE CNT 255)) - finally (\BOUT ELSTREAM ShowCharactersCode) - (\BOUT ELSTREAM CNT] - (replace STARTCHARBYTE of PRDATA with CURBYTE]) -) - - - -(* ;; "Image stream support functions:") - -(DEFINEQ - -(OPENPRSTREAM - [LAMBDA (PRFILE OPTIONS) (* rmk%: "17-Dec-84 10:34") - - (* Opens a Press stream, to which user can do OUTCHAR. - OPTIONS can include a REGION, HEADING, BREAKPAGEFILENAME, and FONTS. - FONTS is a list of fonts to be set up initially. - Headings will be printed in the first font in FONTS. - If FONTS is NIL, then the stream is initialized with the PRESS DEFAULTFONT) - - (DECLARE (GLOBALVARS DEFAULTPAGEREGION \PRESSIMAGEOPS)) - (PROG [OPT PRDATA (PRSTREAM (OPENSTREAM PRFILE 'OUTPUT 'NEW 8 '((TYPE BINARY] - [SETQ PRDATA (create PRESSDATA - PRPAGEREGION _ (COND - ([type? REGION (SETQ OPT (LISTGET OPTIONS - 'REGION] - OPT) - (T DEFAULTPAGEREGION)) - PDSTREAM _ (PROG1 (OPENSTREAM '{NODIRCORE} 'BOTH 'OLD/NEW) - - (* Make sure the fileptr of the following is zero - (GETRESOURCE \PRESSPDSTREAM) (and free this in \CLOSE.PRESS)) - - ) - ELSTREAM _ (PROG1 (OPENSTREAM '{NODIRCORE} 'BOTH 'OLD/NEW) - - (* Make sure the fileptr of the following is zero - (GETRESOURCE \PRESSELSTREAM) (and free this in \CLOSE.PRESS)) - - ) - PRDOCNAME _ (LISTGET OPTIONS 'DOCUMENT.NAME] - (COND - ((OR (NEQ \NOIMAGEOPS (fetch (STREAM IMAGEOPS) of PRSTREAM)) - (NEQ 0 (GETEOFPTR PRSTREAM))) - (ERROR "can't convert existing file to Press" (FULLNAME PRSTREAM)) - (* GETEOFPTR might bomb on some - streams) - )) - (replace (STREAM OUTCHARFN) of PRSTREAM with (FUNCTION \OUTCHARFN.PRESS)) - (replace (STREAM IMAGEOPS) of PRSTREAM with \PRESSIMAGEOPS) - (replace (STREAM IMAGEDATA) of PRSTREAM with PRDATA) - (COND - ((SETQ OPT (LISTGET OPTIONS 'HEADING)) - (replace PRHEADING of PRDATA with OPT))) - (SETUPFONTS.PRESS PRSTREAM (LISTGET OPTIONS 'FONTS)) - (\STARTPAGE.PRESS PRSTREAM) - (RETURN PRSTREAM]) - -(\BITBLT.PRESS - [LAMBDA (SOURCEBITMAP SOURCELEFT SOURCEBOTTOM DESTINATION DESTINATIONLEFT DESTINATIONBOTTOM WIDTH - HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION CLIPPEDSOURCELEFT - CLIPPEDSOURCEBOTTOM) (* hdj " 5-Dec-84 18:39") - (LET* ((OLDX (\DSPXPOSITION.PRESS DESTINATION)) - (OLDY (\DSPYPOSITION.PRESS DESTINATION)) - (DESTINATIONLEFT (OR DESTINATIONLEFT OLDX)) - (DESTINATIONBOTTOM (OR DESTINATIONBOTTOM OLDY))) - (\DSPXPOSITION.PRESS DESTINATION DESTINATIONLEFT) - (\DSPYPOSITION.PRESS DESTINATION DESTINATIONBOTTOM) - (\WRITEPRESSBITMAP SOURCEBITMAP DESTINATIONLEFT DESTINATIONBOTTOM 1 - (COND - (CLIPPINGREGION (INTERSECTREGIONS CLIPPINGREGION (CREATEREGION CLIPPEDSOURCELEFT - CLIPPEDSOURCEBOTTOM WIDTH - HEIGHT))) - (T (CREATEREGION CLIPPEDSOURCELEFT CLIPPEDSOURCEBOTTOM WIDTH HEIGHT))) - DESTINATION) - (\DSPXPOSITION.PRESS DESTINATION OLDX) - (\DSPYPOSITION.PRESS DESTINATION OLDY)) - T]) - -(\BLTSHADE.PRESS - [LAMBDA (TEXTURE STREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT OPERATION CLIPPINGREGION) - (* hdj "12-Mar-85 12:30") - (LET* ((REGION (CREATEREGION DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT)) - (DESTREGION (if CLIPPINGREGION - then (INTERSECTREGIONS REGION CLIPPINGREGION) - else REGION))) - - (* * (SHOWSHADE.IP STREAM TEXTURE DESTREGION OPERATION)) - (* Dovers print at 32 micas per point) - (\BLTSHADE.GENERICPRINTER TEXTURE STREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT - OPERATION CLIPPINGREGION 32]) - -(\SCALEDBITBLT.PRESS - [LAMBDA (SOURCEBITMAP SOURCELEFT SOURCEBOTTOM DESTINATION DESTINATIONLEFT DESTINATIONBOTTOM WIDTH - HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION CLIPPEDSOURCELEFT - CLIPPEDSOURCEBOTTOM SCALE) (* hdj "14-Feb-85 14:33") - (LET* ((OLDX (\DSPXPOSITION.PRESS DESTINATION)) - (OLDY (\DSPYPOSITION.PRESS DESTINATION)) - (DESTINATIONLEFT (OR DESTINATIONLEFT OLDX)) - (DESTINATIONBOTTOM (OR DESTINATIONBOTTOM OLDY))) - (\DSPXPOSITION.PRESS DESTINATION DESTINATIONLEFT) - (\DSPYPOSITION.PRESS DESTINATION DESTINATIONBOTTOM) - (\WRITEPRESSBITMAP SOURCEBITMAP DESTINATIONLEFT DESTINATIONBOTTOM SCALE - (COND - (CLIPPINGREGION (INTERSECTREGIONS CLIPPINGREGION (CREATEREGION CLIPPEDSOURCELEFT - CLIPPEDSOURCEBOTTOM WIDTH - HEIGHT))) - (T (CREATEREGION CLIPPEDSOURCELEFT CLIPPEDSOURCEBOTTOM WIDTH HEIGHT))) - DESTINATION) - (\DSPXPOSITION.PRESS DESTINATION OLDX) - (\DSPYPOSITION.PRESS DESTINATION OLDY)) - T]) - -(\BITMAPSIZE.PRESS - [LAMBDA (STREAM BITMAP DIMENSION) (* rmk%: "17-Dec-84 10:22") - (SELECTQ DIMENSION - (WIDTH (UNFOLD (BITMAPWIDTH BITMAP) - 32)) - (HEIGHT (UNFOLD (BITMAPHEIGHT BITMAP) - 32)) - (NIL (CONS (UNFOLD (BITMAPWIDTH BITMAP) - 32) - (UNFOLD (BITMAPHEIGHT BITMAP) - 32))) - (\ILLEGAL.ARG DIMENSION]) - -(\CHARWIDTH.PRESS - [LAMBDA (STREAM CHARCODE) (* ; "Edited 12-Jun-90 10:39 by mitani") - (* Gets the width of CHARCODE in an - Interpress STREAM, observing - spacefactor) - - (* * Convert from NS characters back to old PARC-internal coding for PRESS - fonts) - - (SETQ CHARCODE (\PRESS.CONVERT.NSCHARACTER CHARCODE)) - - (* * Then compute the character's width.) - - (COND - ((EQ CHARCODE (CHARCODE SPACE)) (* If it's a SPACE, use the declared - space width from the stream) - (ffetch PRSPACEWIDTH of (ffetch (STREAM IMAGEDATA) of STREAM))) - (T (\FGETCHARWIDTH (ffetch PRFONT of (ffetch (STREAM IMAGEDATA) of STREAM)) - (LOGAND CHARCODE \CHARMASK]) - -(\CLOSEF.PRESS - [LAMBDA (PRSTREAM) (* ; "Edited 12-Jun-90 10:39 by mitani") - (* FILENAME is for the printer break - page) - (\ENDPAGE.PRESS PRSTREAM) - (PROG (PDSTREAM (PRDATA (fetch (STREAM IMAGEDATA) of PRSTREAM))) - (SETQ PDSTREAM (fetch PDSTREAM of PRDATA)) - (COND - ((NEQ 0 (GETFILEPTR PDSTREAM)) - (for FDE DESCR in (fetch PRESSFONTDIR of PRDATA) as I from - 0 - do (SETQ DESCR (fetch DESCR of FDE)) - (\WOUT PRSTREAM 16) - (\BOUT PRSTREAM (fetch FONTSET# of FDE)) - (* Fontset) - (\BOUT PRSTREAM (fetch FONT# of FDE)) - (* font#) - (\BOUT PRSTREAM 3) (* (\BOUT PRSTREAM - (fetch FIRSTCHAR of DESCR))) - (\BOUT PRSTREAM 254) (* (\BOUT PRSTREAM - (fetch LASTCHAR of DESCR))) - (\BCPLSOUT.PRESS PRSTREAM (FONTPROP DESCR 'DEVICEFAMILY) - 20) - [\BOUT PRSTREAM (\FACECODE (FONTPROP DESCR 'DEVICEFACE] - (\BOUT PRSTREAM 3) (* (\BOUT PRSTREAM - (fetch FIRSTCHAR of DESCR))) - (\WOUT PRSTREAM (FONTPROP DESCR 'DEVICESIZE)) - (\WOUT PRSTREAM (fetch ROTATION of DESCR))) - (\WOUT PRSTREAM 0) (* Font part ends with 0 word) - (\PARTEND.PRESS PRSTREAM 1) - (COPYBYTES PDSTREAM PRSTREAM 0 (GETFILEPTR PDSTREAM)) - (\PAGEPAD.PRESS PRSTREAM) - (PROG (DDRECORD (DDFILEPTR (GETFILEPTR PRSTREAM))) - (* Write document directory) - (SETQ DDRECORD (FOLDLO DDFILEPTR BYTESPERRECORD)) - (\WOUT PRSTREAM 27183) (* password) - (\WOUT PRSTREAM (ADD1 DDRECORD)) - (\WOUT PRSTREAM (FOLDLO (GETFILEPTR PDSTREAM) - 8)) (* number of parts, since each - occupies 8 bytes in PD) - (\WOUT PRSTREAM (fetch PRPARTSTART of PRDATA)) - (* part directory) - (\WOUT PRSTREAM (IDIFFERENCE DDRECORD (fetch PRPARTSTART of PRDATA))) - (\SIGNEDWOUT PRSTREAM -1) (* obselete) - (\FIXPOUT PRSTREAM (LISP.TO.ALTO.DATE (IDATE))) - (\WOUT PRSTREAM 1) - (\WOUT PRSTREAM 1) (* copies) - (\SIGNEDWOUT PRSTREAM -1) - (\SIGNEDWOUT PRSTREAM -1) (* first and last pages) - (\SIGNEDWOUT PRSTREAM -1) (* printing mode default) - (SETFILEPTR PRSTREAM (IPLUS DDFILEPTR 256)) - (\BCPLSOUT.PRESS PRSTREAM (OR (fetch PRDOCNAME of PRDATA) - (FULLNAME PRSTREAM)) - 52) - (\BCPLSOUT.PRESS PRSTREAM USERNAME 32) - (\BCPLSOUT.PRESS PRSTREAM (GETFILEINFO PRSTREAM 'CREATIONDATE) - 40) - (\PAGEPAD.PRESS PRSTREAM]) - -(\DRAWLINE.PRESS - [LAMBDA (PRSTREAM X1 Y1 X2 Y2 WIDTH OPERATION COLOR DASHING) - (* rrb "27-Sep-85 18:15") - (COND - (DASHING - - (* hack to handle dashing by breaking into small lines. - Should be removed if \DRAWCURVE.PRESS is ever updated to handle dashing. - rrb - - 27-sept-85) - - (DRAWDASHEDLINE X1 Y1 X2 Y2 WIDTH OPERATION PRSTREAM COLOR DASHING)) - (T (\DRAWCURVE.PRESS PRSTREAM (LIST (CREATEPOSITION X1 Y1) - (CREATEPOSITION X2 Y2)) - NIL - (LIST 'BUTT WIDTH) - DASHING))) - Y2]) - -(\ENDPAGE.PRESS - [LAMBDA (PRSTREAM) (* ; "Edited 12-Jun-90 10:39 by mitani") - (PROG [(ELSTREAM (fetch ELSTREAM of (fetch (STREAM IMAGEDATA) of PRSTREAM] - (SHOW.PRESS PRSTREAM) - (\ENTITYEND.PRESS PRSTREAM) - (COND - ((NEQ 0 (\GETFILEPTR ELSTREAM)) - (COND - ((ODDP (\GETFILEPTR PRSTREAM)) - (\BOUT PRSTREAM 0))) - (\WOUT PRSTREAM 0) (* 0 word to separate DL from EL) - (COPYBYTES ELSTREAM PRSTREAM 0 (\GETFILEPTR ELSTREAM)) - (\PARTEND.PRESS PRSTREAM 0]) - -(NEWLINE.PRESS - [LAMBDA (PRSTREAM) (* ; "Edited 12-Jun-90 10:39 by mitani") - (* Go to next line - (or next page)) - (PROG (NEWYPOS (PRDATA (ffetch (STREAM IMAGEDATA) of PRSTREAM))) - (SETQ NEWYPOS (IPLUS (ffetch PRYPOS of PRDATA) - (ffetch PRLINEFEED of PRDATA))) - (COND - ((ILESSP NEWYPOS (ffetch PRBOTTOM of PRDATA)) - (NEWPAGE.PRESS PRSTREAM)) - (T (SHOW.PRESS PRSTREAM) - (SETXY.PRESS PRSTREAM (ffetch PRLEFT of PRDATA) - NEWYPOS]) - -(NEWPAGE.PRESS - [LAMBDA (PRSTREAM) (* rmk%: "16-Jun-84 14:29") - (\ENDPAGE.PRESS PRSTREAM) - (\STARTPAGE.PRESS PRSTREAM]) - -(SETUPFONTS.PRESS - [LAMBDA (PRSTREAM FONTS) (* ; "Edited 12-Jun-90 10:40 by mitani") - - (* Sets up fonts in the initial fontset. - and sets heading font. Leaves PRFONT as NIL. - This means that \DSPFONT.PRESS of the heading font will establish that as the - current font when the first page opens.) - - (for F FLG inside (OR FONTS DEFAULTFONT) do (SETQ F (FONTCREATE F NIL NIL NIL - 'PRESS)) - (COND - (FLG (\DEFINEFONT.PRESS PRSTREAM F) - ) - (T (\DSPFONT.PRESS PRSTREAM F) - (* Install first font as current - font and heading font. - font.) - (\ENTITYEND.PRESS PRSTREAM) - (replace PRHEADINGFONT - of (fetch (STREAM - IMAGEDATA - ) - of PRSTREAM) - with F) - (SETQ FLG T]) - -(\DEFINEFONT.PRESS - [LAMBDA (PRSTREAM FONT) (* ; "Edited 12-Jun-90 10:40 by mitani") - (PROG ((PRDATA (fetch (STREAM IMAGEDATA) of PRSTREAM))) - (RETURN (OR (FASSOC FONT (fetch PRESSFONTDIR of PRDATA)) - (CAR (push (fetch PRESSFONTDIR of PRDATA) - (PROG1 (create FONTDIRENTRY - DESCR _ FONT - FONT# _ (fetch PRNEXTFONT# of PRDATA) - FONTSET# _ (fetch PRMAXFONTSET of PRDATA)) - (COND - ((EQ 16 (add (fetch PRNEXTFONT# of PRDATA) - 1)) - (add (fetch PRMAXFONTSET of PRDATA) - 1) - (replace PRNEXTFONT# of PRDATA with 0))))]) - -(\DSPBOTTOMMARGIN.PRESS - [LAMBDA (PRSTREAM YPOSITION) (* ; "Edited 12-Jun-90 10:40 by mitani") - (PROG1 (fetch PRBOTTOM of (fetch (STREAM IMAGEDATA) of PRSTREAM)) - (COND - (YPOSITION (replace PRBOTTOM of (fetch (STREAM IMAGEDATA) of PRSTREAM) - with YPOSITION))))]) - -(\DSPCLIPPINGREGION.PRESS - [LAMBDA (STREAM REGION) (* ; "Edited 12-Jun-90 10:40 by mitani") - (* sets the clipping region of a - PRESS stream.) - (PROG ((PRDATA (FETCH (STREAM IMAGEDATA) OF STREAM))) - (RETURN (PROG1 (ffetch PRClippingRegion of PRDATA) - [COND - (REGION (OR (type? REGION REGION) - (ERROR REGION " is not a REGION.")) - (UNINTERRUPTABLY - (freplace PRClippingRegion of PRDATA with REGION))])]) - -(\DSPFONT.PRESS - [LAMBDA (PRSTREAM FONT) (* ; "Edited 14-Jul-2025 22:58 by rmk") - (* ; "Edited 5-Jul-2025 18:49 by rmk") - -(* ;;; "The DSPFONT method for PRESS-type image streams -- change the stream's current font to FONT") - - (* * The DSPFONT method for PRESS-type image streams -- - change the stream's current font to FONT) - - (PROG ((PRDATA (ffetch (STREAM IMAGEDATA) of PRSTREAM)) - CSINFO OLDFONT FDENTRY) - (SETQ OLDFONT (ffetch PRFONT of PRDATA)) - (COND - ([OR (NULL FONT) - (EQ OLDFONT (SETQ FONT (OR (FONTCREATE FONT NIL NIL NIL 'PRESS T) - (FONTCOPY OLDFONT FONT] - (* ; - "If no new font was specified, or it's the same font, don't bother with it.") - (RETURN OLDFONT))) - (SHOW.PRESS PRSTREAM) - (SETQ CSINFO (\GETCHARSETINFO 0 FONT T)) (* ; - "Since PRESS only uses charset 0 for now....") - (SETQ FDENTRY (\DEFINEFONT.PRESS PRSTREAM FONT)) - (COND - ((NEQ (ffetch FONTSET# of FDENTRY) - (ffetch FONTSET# of (ffetch PRCURRFDE of PRDATA))) - (* ; "Swtich font sets") - (\ENTITYEND.PRESS PRSTREAM) - (\ENTITYSTART.PRESS PRSTREAM))) - (freplace PRCURRFDE of PRDATA with FDENTRY) - (freplace PRFONT of PRDATA with FONT) - (\BOUT (ffetch ELSTREAM of PRDATA) - (LOGOR FontCode (ffetch FONT# of FDENTRY))) - (freplace PRWIDTHSCACHE of PRDATA with (fetch (CHARSETINFO WIDTHS) OF CSINFO)) - [\SETSPACE.PRESS PRSTREAM (FIXR (TIMES (ffetch PRSPACEFACTOR of PRDATA) - (\FGETWIDTH (ffetch PRWIDTHSCACHE of PRDATA) - (CHARCODE SPACE] - [freplace PRLINEFEED of PRDATA with (IDIFFERENCE (CONSTANT (IMINUS MicasPerPoint)) - (FONTPROP FONT 'HEIGHT] - (\FIXLINELENGTH.PRESS PRSTREAM) - (RETURN OLDFONT]) - -(\DSPLEFTMARGIN.PRESS - [LAMBDA (PRSTREAM XPOSITION) (* ; "Edited 12-Jun-90 10:40 by mitani") - (PROG1 (ffetch PRLEFT of (ffetch (STREAM IMAGEDATA) of PRSTREAM)) - (COND - (XPOSITION (freplace PRLEFT of (ffetch (STREAM IMAGEDATA) of PRSTREAM) - with XPOSITION) - (\FIXLINELENGTH.PRESS PRSTREAM))))]) - -(\DSPLINEFEED.PRESS - [LAMBDA (PRSTREAM DELTAY) (* ; "Edited 12-Jun-90 10:40 by mitani") - (* sets the amount that a line feed - increases the y coordinate by.) - (PROG ((PRDATA (ffetch (STREAM IMAGEDATA) of PRSTREAM))) - (RETURN (PROG1 (ffetch PRLINEFEED of PRDATA) - [AND DELTAY (COND - ((NUMBERP DELTAY) - (freplace PRLINEFEED of PRDATA with DELTAY)) - (T (\ILLEGAL.ARG DELTAY])]) - -(\DSPRIGHTMARGIN.PRESS - [LAMBDA (PRSTREAM XPOSITION) (* ; "Edited 12-Jun-90 10:40 by mitani") - (PROG1 (ffetch PRRIGHT of (ffetch (STREAM IMAGEDATA) of PRSTREAM)) - (COND - (XPOSITION (freplace PRRIGHT of (ffetch (STREAM IMAGEDATA) of PRSTREAM) - with XPOSITION) - (\FIXLINELENGTH.PRESS PRSTREAM))))]) - -(\DSPSPACEFACTOR.PRESS - [LAMBDA (STREAM FACTOR) (* ; "Edited 12-Jun-90 10:40 by mitani") - (PROG ((PRDATA (ffetch (STREAM IMAGEDATA) of STREAM))) - (RETURN (PROG1 (ffetch PRSPACEFACTOR of PRDATA) - [COND - (FACTOR (SHOW.PRESS STREAM) - (freplace PRSPACEFACTOR of PRDATA with FACTOR) - (\SETSPACE.PRESS STREAM - (FIXR (TIMES FACTOR (\FGETWIDTH (ffetch PRWIDTHSCACHE - of PRDATA) - (CHARCODE SPACE])]) - -(\DSPTOPMARGIN.PRESS - [LAMBDA (PRSTREAM YPOSITION) (* ; "Edited 12-Jun-90 10:40 by mitani") - (PROG1 (fetch PRTOP of (fetch (STREAM IMAGEDATA) of PRSTREAM)) - (COND - (YPOSITION (replace PRTOP of (fetch (STREAM IMAGEDATA) of PRSTREAM) - with YPOSITION))))]) - -(\DSPXPOSITION.PRESS - [LAMBDA (PRSTREAM XPOSITION) (* ; "Edited 12-Jun-90 10:40 by mitani") - (PROG1 (fetch PRXPOS of (fetch (STREAM IMAGEDATA) of PRSTREAM)) - (COND - (XPOSITION (SHOW.PRESS PRSTREAM) - (SETX.PRESS PRSTREAM XPOSITION))))]) - -(\DSPYPOSITION.PRESS - [LAMBDA (PRSTREAM YPOSITION) (* ; "Edited 12-Jun-90 10:40 by mitani") - (PROG1 (fetch PRYPOS of (fetch (STREAM IMAGEDATA) of PRSTREAM)) - (COND - (YPOSITION (SHOW.PRESS PRSTREAM) - (SETY.PRESS PRSTREAM YPOSITION))))]) - -(\FIXLINELENGTH.PRESS - [LAMBDA (PRSTREAM) (* ; "Edited 12-Jun-90 10:40 by mitani") - - (* PRSTREAM is known to be a stream of type press. - Called by RIGHTMARGIN LEFTMARGIN and \DSPFONT.PRESS to update the LINELENGTH - field in the stream. also called when the stream is created.) - - (PROG (LLEN (PRDATA (ffetch (STREAM IMAGEDATA) of PRSTREAM))) - (freplace (STREAM LINELENGTH) of PRSTREAM - with (COND - ((IGREATERP [SETQ LLEN (IQUOTIENT (IDIFFERENCE (ffetch PRRIGHT - of PRDATA) - (ffetch PRLEFT of PRDATA)) - (fetch FONTAVGCHARWIDTH - of (fetch PRFONT of PRDATA] - 1) - LLEN) - (T 10]) - -(\OUTCHARFN.PRESS - [LAMBDA (PRSTREAM CHARCODE) (* ; "Edited 12-Jun-90 10:40 by mitani") - (* Handle all the special-purpose - characters going to a PRESS file) - (SELCHARQ CHARCODE - (EOL (* New Line) - (NEWLINE.PRESS PRSTREAM) - (replace (STREAM CHARPOSITION) of PRSTREAM with 0)) - (LF (* Line feed--move down, but not - over) - (\DSPXPOSITION.PRESS PRSTREAM (PROG1 (DSPXPOSITION NIL PRSTREAM) - (NEWLINE.PRESS PRSTREAM)))) - (^L (* Form Feed) - (replace (STREAM CHARPOSITION) of PRSTREAM with 0) - (NEWPAGE.PRESS PRSTREAM)) - (PROG (XPOS NEWXPOS CLIPPINGREGION (PRDATA (fetch (STREAM IMAGEDATA) of PRSTREAM))) - (SETQ XPOS (fetch PRXPOS of PRDATA)) - (SETQ CHARCODE (\PRESS.CONVERT.NSCHARACTER CHARCODE)) - [SETQ NEWXPOS (IPLUS XPOS (COND - ((EQ CHARCODE (CHARCODE SPACE)) - (ffetch PRSPACEWIDTH of PRDATA)) - (T (\FGETWIDTH (ffetch PRWIDTHSCACHE of PRDATA) - CHARCODE] - (COND - ((AND [IGEQ XPOS (fetch (REGION LEFT) of (SETQ CLIPPINGREGION - (fetch PRClippingRegion - of PRDATA] - (ILEQ NEWXPOS (fetch (REGION RIGHT) of CLIPPINGREGION)) - (IGEQ (fetch PRYPOS of PRDATA) - (fetch (REGION BOTTOM) of CLIPPINGREGION))) - (* Bottom test should really - subtract off the descent, and also - should do a top-test) - (* The Y-tests can probably be done - inside SETXY, SETY, and DSPFONT.) - [COND - ((NOT (ffetch CHARWASDISPLAYING of PRDATA)) - (* Was being clipped, now not) - (freplace CHARWASDISPLAYING of PRDATA with T) - (SHOW.PRESS PRSTREAM) (* SHOW shouldn't be necessary, but - |...|) - (SETXY.PRESS PRSTREAM XPOS (fetch PRYPOS of PRDATA] - (\BOUT PRSTREAM CHARCODE)) - (T (SHOW.PRESS PRSTREAM) (* Don't put out any characters if - out of the clipping region) - (freplace CHARWASDISPLAYING of PRDATA with NIL))) - (replace PRXPOS of PRDATA with NEWXPOS]) - -(\SETSPACE.PRESS - [LAMBDA (PRSTREAM S) (* ; "Edited 12-Jun-90 10:40 by mitani") - (PROG (ELSTREAM (PRDATA (fetch (STREAM IMAGEDATA) of PRSTREAM))) - (AND (EQ S (ffetch PRSPACEWIDTH of PRDATA)) - (RETURN)) - (SETQ ELSTREAM (fetch ELSTREAM of (fetch (STREAM IMAGEDATA) of PRSTREAM))) - (if (ILEQ S 2047) - then (\WOUT ELSTREAM (IPLUS (LLSH SetSpaceXShortCode 8) - S)) - else (\BOUT ELSTREAM SetSpaceXCode) - (\WOUT ELSTREAM S)) - (freplace PRSPACEWIDTH of PRDATA with S]) - -(\STARTPAGE.PRESS - [LAMBDA (PRSTREAM) (* ; "Edited 12-Jun-90 10:40 by mitani") - (* Should be called only when no - previous page is open) - (PROG (CFONT HFONT SPACEFACTOR (PRDATA (ffetch (STREAM IMAGEDATA) of PRSTREAM))) - (SETQ CFONT (ffetch PRFONT of PRDATA)) - - (* Save current font so that \ENTITYSTART.PRESS can make PRFONT be NIL, - indicating that there is no actual font at the beginning of a page) - - (\ENTITYSTART.PRESS PRSTREAM) - [COND - ((ffetch PRHEADING of PRDATA) - (SETQ SPACEFACTOR (ffetch PRSPACEFACTOR of PRDATA)) - (freplace PRSPACEFACTOR of PRDATA with 1) - (SETQ HFONT (ffetch PRHEADINGFONT of PRDATA)) - (\DSPFONT.PRESS PRSTREAM HFONT) (* Set up heading font) - [SETXY.PRESS PRSTREAM (ffetch PRLEFT of PRDATA) - (IDIFFERENCE (ffetch PRTOP of PRDATA) - (FONTPROP HFONT 'ASCENT] - (PRIN3 (ffetch PRHEADING of PRDATA) - PRSTREAM) (* Skip an inch before page number) - (SHOW.PRESS PRSTREAM) - (SETX.PRESS PRSTREAM (IPLUS MICASPERINCH (ffetch PRXPOS of PRDATA))) - (PRIN3 "Page " PRSTREAM) - (PRIN3 (add (ffetch PRPAGENUM of PRDATA) - 1) - PRSTREAM) - (NEWLINE.PRESS PRSTREAM) (* Skip 2 lines) - (NEWLINE.PRESS PRSTREAM) - (freplace PRSPACEFACTOR of PRDATA with SPACEFACTOR)) - (T (SETXY.PRESS PRSTREAM (ffetch PRLEFT of PRDATA) - (IDIFFERENCE (ffetch PRTOP of PRDATA) - (FONTPROP CFONT 'ASCENT] (* Now we set the font to our - (previous) current font) - (\DSPFONT.PRESS PRSTREAM CFONT]) - -(\STRINGWIDTH.PRESS - [LAMBDA (STREAM STRING RDTBL) (* ; "Edited 12-Jun-90 10:40 by mitani") - - (* * Returns the width of STRING in the press STREAM, observing spacefactor) - - (* * This is based on the code in \STRINGWIDTH.GENERIC) - - (PROG [(PRFONT (ffetch PRFONT of (ffetch (STREAM IMAGEDATA) of STREAM] - [COND - [(LITATOM STRING) (* It's an atom. Loop thru its - characters.) - (if RDTBL - then (GO SLOW) - else (* Only doing pname, much simpler - task) - (RETURN (LET ((WIDTHSBASE (ffetch (CHARSETINFO WIDTHS) - of (\GETCHARSETINFO 0 PRFONT))) - CSET) - (for C inatom STRING - sum (SETQ C (\PRESS.CONVERT.NSCHARACTER C)) - (* CONVERT from NS characters back - to old PARC-internal coding for - PRESS fonts) - (COND - ((EQ C (CHARCODE SPACE)) - (ffetch PRSPACEWIDTH of (ffetch - (STREAM IMAGEDATA) - of STREAM))) - (T (\FGETWIDTH WIDTHSBASE (\CHAR8CODE C] - ((STRINGP STRING) (* It's a string; we know how to - loop thru its chars quickly) - (RETURN - (LET ((TOTAL 0) - (WIDTHSBASE (ffetch (CHARSETINFO WIDTHS) of (\GETCHARSETINFO 0 PRFONT))) - ESCWIDTH ESC CSET) - [COND - (RDTBL (* Count delimiting quotes and - internal escapes) - (SETQ TOTAL (UNFOLD (\FGETWIDTH WIDTHSBASE (CHARCODE %")) - 2)) - (SETQ ESC (fetch (READTABLEP ESCAPECHAR) of RDTBL)) - (SETQ ESCWIDTH (\FGETWIDTH WIDTHSBASE ESC] - [for C instring STRING - do (SETQ C (\PRESS.CONVERT.NSCHARACTER C)) - (* CONVERT from NS characters back - to old PARC-internal coding for - PRESS fonts) - (add TOTAL (COND - ((EQ C (CHARCODE SPACE)) - (ffetch PRSPACEWIDTH of (ffetch - (STREAM IMAGEDATA) - of STREAM))) - (T (IPLUS (\FGETWIDTH WIDTHSBASE (\CHAR8CODE C)) - (COND - ((AND RDTBL (OR (EQ C (CHARCODE %")) - (EQ C ESC))) - (* String char must be escaped) - ESCWIDTH) - (T 0] - TOTAL] - SLOW - (RETURN (LET ((TOTALWIDTH 0) - (WIDTHSBASE (ffetch (CHARSETINFO WIDTHS) of (\GETCHARSETINFO 0 PRFONT - ))) - CSET) - - (* * Neither atom nor string; we have to use \MAPPNAME to do the job.) - - (\MAPPNAME [FUNCTION (LAMBDA (DUMMY CC) - (SETQ CC (\PRESS.CONVERT.NSCHARACTER CC)) - (* Convert from NS characters back - to old PARC-internal coding for - PRESS fonts) - (add TOTALWIDTH (COND - ((EQ CC (CHARCODE SPACE)) - (ffetch PRSPACEWIDTH - of (ffetch - (STREAM IMAGEDATA) - of STREAM))) - (T (\FGETWIDTH WIDTHSBASE - (\CHAR8CODE CC] - STRING RDTBL RDTBL) - TOTALWIDTH]) - -(SHOWRECTANGLE.PRESS - [LAMBDA (PRSTREAM WIDTH HEIGHT) (* ; "Edited 12-Jun-90 10:40 by mitani") - (PROG [(ELSTREAM (fetch ELSTREAM of (fetch (STREAM IMAGEDATA) of PRSTREAM] - (\BOUT ELSTREAM ShowRectangleCode) - (\WOUT ELSTREAM WIDTH) - (\WOUT ELSTREAM HEIGHT]) - -(\PRESS.CONVERT.NSCHARACTER - [LAMBDA (CHARCODE) (* jds " 4-Nov-85 08:02") - - (* Provide backward compatibility for extended-language characters in the PRESS - printing environment. Converts certain of the NS characters into their - equivalent PARC-internal charcodes) - - (SELCHARQ CHARCODE - (357,55 (* em quad) - 153) - (357,54 (* en quad) - 152) - (357,57 (* Thin space) - 159) - (357,44 (* en dash / figure dash) - 155) - (357,45 (* em dash) - 156) - (357,146 (* bullet) - 183) - (0,251 (* left single quote) - 96) - (0,271 (* right single quote) - 39) - (\CHAR8CODE CHARCODE]) -) - - - -(* ; "Drawcurve code") - -(DEFINEQ - -(\ENDVECRUN - [LAMBDA (PRSTREAM HALFVECWIDTH) (* ; "Edited 12-Jun-90 10:40 by mitani") - (SHOW.PRESS PRSTREAM) - (PROG ((PRDATA (fetch (STREAM IMAGEDATA) of PRSTREAM)) - ORIGXPOS ORIGYPOS XPOS YPOS WASDISPLAYING ORIGWASDISPLAYING) - (COND - ((NOT (fetch VECMOVINGRIGHT of PRDATA)) - - (* We've been moving to the left, so it's time to uncache those characters we - saved.) - - (SETQ XPOS (fetch VECCURX of PRDATA)) - (SETQ YPOS (fetch VECCURY of PRDATA)) - (SETQ ORIGXPOS (FIXR (FTIMES MicasPerScan XPOS))) - (* Remember where the end of the - line is, so we can come back here.) - (SETQ ORIGYPOS (FIXR (FTIMES MicasPerScan YPOS))) - [SETQ ORIGWASDISPLAYING (AND (IGEQ XPOS (IPLUS SPRUCEPAPERLEFTSCANS HALFVECWIDTH)) - (IGEQ YPOS (IPLUS SPRUCEPAPERBOTTOMSCANS HALFVECWIDTH)) - (ILESSP YPOS (IDIFFERENCE SPRUCEPAPERTOPSCANS HALFVECWIDTH - )) - (ILESSP XPOS (IDIFFERENCE SPRUCEPAPERRIGHTSCANS - HALFVECWIDTH] - (SETQ WASDISPLAYING ORIGWASDISPLAYING) (* Decide whether to start out by - displaying any characters or not.) - (COND - (WASDISPLAYING (SETXY.PRESS PRSTREAM ORIGXPOS ORIGYPOS))) - - (* We may have been adjusting the X and Y position in the PRDATA without - actually putting out the file commands) - - [for CH in (fetch VECSEGCHARS of PRDATA) - do (COND - [(AND (IGEQ XPOS (IPLUS SPRUCEPAPERLEFTSCANS HALFVECWIDTH)) - (IGEQ YPOS (IPLUS SPRUCEPAPERBOTTOMSCANS HALFVECWIDTH)) - (ILESSP YPOS (IDIFFERENCE SPRUCEPAPERTOPSCANS HALFVECWIDTH)) - (ILESSP XPOS (IDIFFERENCE SPRUCEPAPERRIGHTSCANS HALFVECWIDTH))) - (* We're on-paper. - Go ahead and display the character.) - (COND - ((NOT WASDISPLAYING) (* We haven't really been displaying - characters up to now--we need to - reposition.) - (SHOW.PRESS PRSTREAM) - (SETXY.PRESS PRSTREAM (FIXR (FTIMES MicasPerScan XPOS)) - (FIXR (FTIMES MicasPerScan YPOS))) - (SETQ WASDISPLAYING T))) - (\BOUT PRSTREAM (\VECENCODE (IMINUS (CAR CH)) - (IMINUS (CDR CH] - (T (* We are off-paper. - Stop displaying, and remember that - we took a hiatus) - (SETQ WASDISPLAYING NIL))) - (SETQ XPOS (IDIFFERENCE XPOS (CAR CH))) - (SETQ YPOS (IDIFFERENCE YPOS (CDR CH] - (SHOW.PRESS PRSTREAM) - (SETXY.PRESS PRSTREAM ORIGXPOS ORIGYPOS) - (replace VECWASDISPLAYING of PRDATA with ORIGWASDISPLAYING))) - (replace VECSEGCHARS of PRDATA with NIL]) - -(\VECENCODE - [LAMBDA (DX DY) (* jds "18-DEC-81 15:48") - - (* Given dx and dy in dover pixels, decide which Vector Font character - represents that move, and return it.) - - (if (ILESSP 0 DY) - then (IDIFFERENCE (IPLUS 160 DX (IMINUS DY)) - (ITIMES 9 (IMAX DX DY))) - else (IDIFFERENCE (IDIFFERENCE (IDIFFERENCE 160 DX) - DY) - (ITIMES 7 (IMAX DX (IMINUS DY]) - -(\VECPUT - [LAMBDA (PRSTREAM DX DY HALFVECWIDTH) (* ; "Edited 12-Jun-90 10:40 by mitani") - - (* Send this dx,dy pair to the press file; - hold and reverse any strings which run right-to-left on the page.) - - (PROG ((PRDATA (fetch (STREAM IMAGEDATA) of PRSTREAM)) - XPOS YPOS) - (COND - ((OR (AND (fetch VECMOVINGRIGHT of PRDATA) - (ILESSP DX 0)) - (AND (NOT (fetch VECMOVINGRIGHT of PRDATA)) - (ILESSP 0 DX))) - - (* We switched direction (LEFT->RIGHT or RIGHT->LEFT)%. - Put out what we've got, and start the new run.) - - (\ENDVECRUN PRSTREAM HALFVECWIDTH) - (replace VECMOVINGRIGHT of PRDATA with (NOT (fetch VECMOVINGRIGHT - of PRDATA))) - (* Switch the direction we think - we're moving.) - )) - (SETQ XPOS (fetch VECCURX of PRDATA)) (* In DOVER spots) - (SETQ YPOS (fetch VECCURY of PRDATA)) - (replace VECCURX of PRDATA with (IPLUS XPOS DX)) - (replace VECCURY of PRDATA with (IPLUS YPOS DY)) - (COND - [(fetch VECMOVINGRIGHT of PRDATA) (* We're moving right, and are - really putting out characters.) - (* SPRUCEPAPERTOPSCANS is in dover - points) - (COND - ((AND (IGEQ YPOS (IPLUS SPRUCEPAPERBOTTOMSCANS HALFVECWIDTH)) - (ILESSP YPOS (IDIFFERENCE SPRUCEPAPERTOPSCANS HALFVECWIDTH)) - (IGEQ XPOS (IPLUS SPRUCEPAPERLEFTSCANS HALFVECWIDTH)) - (ILESSP XPOS (IDIFFERENCE SPRUCEPAPERRIGHTSCANS HALFVECWIDTH))) - (* We're on-paper. - Go ahead and display this character.) - (COND - ((NOT (fetch VECWASDISPLAYING of PRDATA)) - (* We haven't been displaying. - before really putting out the - character,) - (SHOW.PRESS PRSTREAM) - (SETXY.PRESS PRSTREAM (FIXR (FTIMES MicasPerScan XPOS)) - (FIXR (FTIMES MicasPerScan YPOS))) - (* So move to where we're emerging - onto the paper.) - (replace VECWASDISPLAYING of PRDATA with T))) - (\BOUT PRSTREAM (\VECENCODE DX DY))) - (T (* We're off-page. - Remember to do a SETXY when we get - back on.) - (replace VECWASDISPLAYING of PRDATA with NIL] - (T - - (* We're moving left--and so caching characters for later. - Don't bother making any checks going this way.) - - (push (fetch VECSEGCHARS of PRDATA) - (CONS DX DY)) (* Just cache the DX,DY pair) - ]) - -(\VECSKIP - [LAMBDA (PRSTREAM DX DY) (* rmk%: "17-Dec-84 10:10") - (* Put out blank space for DX, DY) - (\ENDVECRUN PRSTREAM) - (SETQ VecCurX (IPLUS VecCurX DX)) - (SETQ VecCurY (IPLUS VecCurY DY)) - (\ENDVECRUN PRSTREAM]) - -(\VECFONTINIT - [LAMBDA NIL (* jds " 2-Jan-86 14:24") - - (* Initialize \VecFontDir, a list of lists of dummy font descriptors for the - ReDraw vector fonts. The structure is ((round brushes) - (square brushes) (horizontal brushes) (vertical brushes))) - - (DECLARE (GLOBALVARS \VecFontDir)) - - (* WIDTHS is a dummy array descriptor so that \DSPFONT.PRESS doesn't get - confused. If any real character output were done with this descriptor in force, - the results would be disastrous. But the RESETSAVE in \PRESSCURVE2 should - prevent this.) - - (* NOTE%: Perhaps we should just use the unit widths vector for this) - - (OR \VecFontDir (SETQ \VecFontDir - (BIND FD CSINFO for FMLY (WIDTHS _ (ARRAY 256 'SMALLP 1 0)) - in '(NEWVEC SNEWVEC HNEWVEC VNEWVEC) - collect (for BRUSH in '(4 8 16 32 64) - collect (SETQ FD (create FONTDESCRIPTOR - FONTDEVICE _ 'PRESS - FONTFAMILY _ FMLY - FONTSIZE _ BRUSH - FONTFACE _ '(MEDIUM REGULAR REGULAR) - ROTATION _ 0 - FONTAVGCHARWIDTH _ 1)) - (* Create a dummy font descriptor for - this dummy font) - (SETQ CSINFO (CREATE CHARSETINFO - WIDTHS _ (FETCH (ARRAYP BASE) - OF WIDTHS))) - - (* And a CHARSETINFO that claims the characters are all 0 wide) - - (\RPLPTR (FETCH (FONTDESCRIPTOR FONTCHARSETVECTOR) - OF FD) - 0 CSINFO) (* And Smash it into the charset - vector.) - - (* * Now collect the font descriptors for the directory) - - FD]) - -(\DRAWCIRCLE.PRESS - [LAMBDA (STREAM CENTERX CENTERY RADIUS BRUSH DASHING) (* rmk%: "27-Sep-84 17:23") - (PROG [(R2RAD (FIXR (FTIMES RADIUS (CONSTANT (FQUOTIENT (SQRT 2) - 2] - (DRAWCURVE (LIST (CREATEPOSITION (IPLUS CENTERX RADIUS) - CENTERY) - (CREATEPOSITION (IPLUS CENTERX R2RAD) - (IPLUS CENTERY R2RAD)) - (CREATEPOSITION CENTERX (IPLUS CENTERY RADIUS)) - (CREATEPOSITION (IDIFFERENCE CENTERX R2RAD) - (IPLUS CENTERY R2RAD)) - (CREATEPOSITION (IDIFFERENCE CENTERX RADIUS) - CENTERY) - (CREATEPOSITION (IDIFFERENCE CENTERX R2RAD) - (IDIFFERENCE CENTERY R2RAD)) - (CREATEPOSITION CENTERX (IDIFFERENCE CENTERY RADIUS)) - (CREATEPOSITION (IPLUS CENTERX R2RAD) - (IDIFFERENCE CENTERY R2RAD))) - T BRUSH DASHING STREAM)) - (MOVETO CENTERX CENTERY STREAM]) - -(\DRAWARC.PRESS - [LAMBDA (STREAM CENTERX CENTERY RADIUS STARTANGLE NDEGREES BRUSH DASHING) - (* rrb " 4-Oct-85 17:27") - (* draws an arc on an press file) - (\DRAWARC.GENERIC STREAM CENTERX CENTERY RADIUS STARTANGLE NDEGREES BRUSH DASHING]) - -(\DRAWCURVE.PRESS - [LAMBDA (PRSTREAM KNOTS CLOSED BRUSH DASHING) (* rmk%: "20-Nov-84 13:59") - - (* draws a spline curve with a given brush brush. - Knots and brushwidth assumed to be in micas) - - [COND - ((LISTP KNOTS) - (SHOW.PRESS PRSTREAM) - (PROG [LASTKNOT (DASHLST (AND DASHING (OR (AND (LISTP DASHING) - (EVERY DASHING (FUNCTION FIXP)) - DASHING) - (\ILLEGAL.ARG DASHING] - - (* The above makes sure that DASHING is a list of numbers.) - - [OR (CDR KNOTS) - (SETQ KNOTS (LIST (CAR KNOTS) - (CAR KNOTS] (* Handle the trival one-knot case.) - (COND - ((AND (NULL DASHING) - (EQ 2 (LENGTH KNOTS)) - (\DRAWCURVE.PRESS.LINE PRSTREAM (fetch XCOORD of (CAR KNOTS)) - (fetch YCOORD of (CAR KNOTS)) - (fetch XCOORD of (CADR KNOTS)) - (fetch YCOORD of (CADR KNOTS)) - BRUSH DASHING)) - - (* There were only two knots, and no dashing. - \DRAWCURVE.PRESS.LINE returned T if it managed to draw the line the fast way.) - (* Have to move to the endpoint of the - line.) - ) - (T (* Otherwise, use the full-strength - curve drawer.) - (\PRESSCURVE2 PRSTREAM - (PARAMETRICSPLINE [for KNOT in KNOTS - collect (CREATEPOSITION (FIXR (FTIMES (fetch XCOORD - of KNOT) - ScansPerMica)) - (FIXR (FTIMES (fetch YCOORD - of KNOT) - ScansPerMica] - CLOSED) - DASHING - (\GETBRUSHFONT.PRESS BRUSH)) - - (* This already leaves the current position at the endpoint of the curve.) - - )) - (SETQ LASTKNOT (CAR (LAST KNOTS))) - (SETXY.PRESS PRSTREAM (fetch XCOORD of LASTKNOT) - (fetch YCOORD of LASTKNOT] - PRSTREAM]) - -(\DRAWCURVE.PRESS.LINE - [LAMBDA (PRSTREAM X1 Y1 X2 Y2 BRUSH DASHING) (* rmk%: "17-Dec-84 10:05") - - (* Returns T if this is a horizontal or vertical line, hence can be drawn as a - rectangle.) - - (PROG (WIDTH BACKOFF LEFT BOTTOM DIST LB TR (SHAPE 'ROUND)) - (SETQ WIDTH (OR (COND - ((LISTP BRUSH) - (SETQ SHAPE (CAR BRUSH)) - (CADR BRUSH)) - (T BRUSH)) - 1)) - [SELECTQ SHAPE - (BUTT (SETQ BACKOFF 0)) - (ROUND (RETURN NIL)) - (PROGN (SETQ BACKOFF (IQUOTIENT WIDTH 2] - - (* For butt ends, we want the line to end at the given coordinate position) - - (* LB is left or bottom, TR is top or right, depending on orientation) - - (COND - ((EQP X1 X2) (* Vertical line) - (SETQ LEFT (IDIFFERENCE X1 (IQUOTIENT WIDTH 2))) - (* Off to the left or right?) - (AND (OR (ILESSP LEFT SPRUCEPAPERLEFTMICAS) - (IGREATERP (IPLUS LEFT WIDTH) - SPRUCEPAPERRIGHTMICAS)) - (RETURN T)) - (COND - ((IGREATERP Y1 Y2) - (SETQ LB Y2) - (SETQ TR Y1)) - (T (SETQ LB Y1) - (SETQ TR Y2))) - (SETQ LB (IMAX SPRUCEPAPERBOTTOMMICAS (IDIFFERENCE LB BACKOFF))) - (* Clip to page) - (SETQ TR (IMIN SPRUCEPAPERTOPMICAS (IPLUS TR BACKOFF))) - (SETQ DIST (IDIFFERENCE TR LB)) - (OR (IGREATERP DIST 0) - (RETURN T)) - (SETXY.PRESS PRSTREAM LEFT LB) (* Move to where the line starts) - (SHOWRECTANGLE.PRESS PRSTREAM WIDTH DIST) (* Draw the rectangle that will do the - job.) - (RETURN T)) - ((EQP Y1 Y2) (* Horizontal line) - (SETQ BOTTOM (IDIFFERENCE Y1 (IQUOTIENT WIDTH 2))) - (* Off to the bottom or top?) - (AND (OR (ILESSP BOTTOM SPRUCEPAPERBOTTOMMICAS) - (IGREATERP (IPLUS BOTTOM WIDTH) - SPRUCEPAPERTOPMICAS)) - (RETURN T)) - (COND - ((IGREATERP X1 X2) - (SETQ LB X2) - (SETQ TR X1)) - (T (SETQ LB X1) - (SETQ TR X2))) - (SETQ LB (IMAX SPRUCEPAPERLEFTMICAS (IDIFFERENCE LB BACKOFF))) - (* Clip to page) - (SETQ TR (IMIN SPRUCEPAPERRIGHTMICAS (IPLUS TR BACKOFF))) - (SETQ DIST (IDIFFERENCE TR LB)) - (OR (IGREATERP DIST 0) - (RETURN T)) - (SETXY.PRESS PRSTREAM LB BOTTOM) (* Move to where the line starts) - (SHOWRECTANGLE.PRESS PRSTREAM DIST WIDTH) (* Draw the rectangle that will do the - job.) - (RETURN T]) - -(\DRAWELLIPSE.PRESS - [LAMBDA (PRSTREAM CENTERX CENTERY SEMIMINORRADIUS SEMIMAJORRADIUS ORIENTATION BRUSH DASHING) - (* rmk%: "23-Aug-84 10:51") - (PROG [(SINOR (COND - (ORIENTATION (SIN ORIENTATION)) - (T 0.0))) - (COSOR (COND - (ORIENTATION (COS ORIENTATION)) - (T 1.0] - (\DRAWCURVE.PRESS PRSTREAM [LIST (CREATEPOSITION (PLUS CENTERX (FTIMES COSOR - SEMIMAJORRADIUS)) - (PLUS CENTERY (FTIMES SINOR SEMIMAJORRADIUS))) - (CREATEPOSITION (DIFFERENCE CENTERX (FTIMES SINOR - SEMIMINORRADIUS - )) - (PLUS CENTERY (FTIMES COSOR SEMIMINORRADIUS))) - (CREATEPOSITION (DIFFERENCE CENTERX (FTIMES COSOR - SEMIMAJORRADIUS - )) - (DIFFERENCE CENTERY (FTIMES SINOR SEMIMAJORRADIUS)) - ) - (CREATEPOSITION (PLUS CENTERX (FTIMES SINOR - SEMIMINORRADIUS)) - (DIFFERENCE CENTERY (FTIMES COSOR SEMIMINORRADIUS] - T BRUSH DASHING) - (MOVETO CENTERX CENTERY PRSTREAM]) - -(\GETBRUSHFONT.PRESS - [LAMBDA (BRUSH) (* rmk%: "17-Dec-84 10:13") - (\VECFONTINIT) - (PROG [(LIST1 (SELECTQ (CAR (LISTP BRUSH)) - (ROUND (CAR \VecFontDir)) - (SQUARE (CADR \VecFontDir)) - (HORIZONTAL (CADDR \VecFontDir)) - (VERTICAL (CADDDR \VecFontDir)) - (BUTT (CAR \VecFontDir)) - (CAR \VecFontDir] - (AND (LISTP BRUSH) - (SETQ BRUSH (CADR BRUSH))) - (RETURN (SELECTQ (FIXR (FTIMES (OR BRUSH 1) - PointsPerMica)) - ((0 1) - (CAR LIST1)) - (2 (CADR LIST1)) - ((3 4 5) - (CADDR LIST1)) - ((6 7 8) - (CADDDR LIST1)) - (CADDDR LIST1]) - -(\PRESSCURVE2 - [LAMBDA (PRSTREAM SPLINE DASHING BRUSHFONT) (* ; "Edited 12-Jun-90 10:40 by mitani") - (* Given a spline curve and a font, - draw the lines to PRSTREAM) - (RESETLST - (RESETSAVE NIL (LIST 'DSPFONT (DSPFONT BRUSHFONT PRSTREAM) - PRSTREAM)) - [PROG ((PRDATA (fetch (STREAM IMAGEDATA) of PRSTREAM))) - (COND - ((IGREATERP (IDIFFERENCE (GETFILEPTR (fetch ELSTREAM of PRDATA)) - (fetch ELSTARTBYTE of PRDATA)) - 25000) - (\ENTITYEND.PRESS PRSTREAM) (* Hack to prevent mysterious - overflow in length of entities) - (\ENTITYSTART.PRESS PRSTREAM] - (\BOUT (fetch ELSTREAM of (fetch (STREAM IMAGEDATA) of PRSTREAM)) - ResetSpaceCode) - - (* because the space code shouldn't be interpreted specially when we are - drawing in the vector font) - - (PROG ((XPOLY (create POLYNOMIAL)) - (X'POLY (create POLYNOMIAL)) - (YPOLY (create POLYNOMIAL)) - (Y'POLY (create POLYNOMIAL)) - (X (fetch (SPLINE SPLINEX) of SPLINE)) - (Y (fetch (SPLINE SPLINEY) of SPLINE)) - (X' (fetch (SPLINE SPLINEDX) of SPLINE)) - (Y' (fetch (SPLINE SPLINEDY) of SPLINE)) - (X'' (fetch (SPLINE SPLINEDDX) of SPLINE)) - (Y'' (fetch (SPLINE SPLINEDDY) of SPLINE)) - (X''' (fetch (SPLINE SPLINEDDDX) of SPLINE)) - (Y''' (fetch (SPLINE SPLINEDDDY) of SPLINE)) - (%#KNOTS (fetch %#KNOTS of SPLINE)) - (X0 (ELT (fetch (SPLINE SPLINEX) of SPLINE) - 1)) - (Y0 (ELT (fetch (SPLINE SPLINEY) of SPLINE) - 1)) - IX IY DX DY XT YT X'T Y'T NEWXT NEWYT XDIFF YDIFF XWALLDT YWALLDT DUPLICATEKNOT - EXTRANEOUS TT NEWT DELTA DASHON DASHLST DASHCNT HALFVECWIDTH PUTDX EXTRADX PUTDY - EXTRADY) - (SETQ HALFVECWIDTH (FONTPROP BRUSHFONT 'SIZE)) - - (* Half the width of the brush, in dots. - Used to help decide when the line we're drawing goes off-paper.) - - (SETQ DASHON T) - - (* These are initialized outside the prog-bindings cause the compiler can't - hack so many initialized variables) - - (SETQ DASHLST DASHING) - (SETQ DASHCNT (CAR DASHING)) - (SETXY.PRESS PRSTREAM (FIXR (FTIMES X0 MicasPerScan)) - (FIXR (FTIMES Y0 MicasPerScan))) (* Move to the first knot on the - curve) - (replace VECMOVINGRIGHT of (fetch (STREAM IMAGEDATA) of PRSTREAM) - with T) (* Start by assuming we're moving in - increasing X (since the vector fonts - only have strokes that work in that - direction)) - (replace VECWASDISPLAYING of (fetch (STREAM IMAGEDATA) of PRSTREAM) - with (AND (GEQ X0 0) - (GEQ Y0 0))) - (replace VECSEGCHARS of (fetch (STREAM IMAGEDATA) of PRSTREAM) - with NIL) - (replace VECCURX of (fetch (STREAM IMAGEDATA) of PRSTREAM) with - X0) - (* And set the current X and Y - positions, denominated in dover - spots) - (replace VECCURY of (fetch (STREAM IMAGEDATA) of PRSTREAM) with - Y0) - (* Set up initial values in vec - variables, perform SetX/SetY.) - (SETQ TT 0.0) - (SETQ DELTA 16) - (SETQ IX (FIXR X0)) - (SETQ IY (FIXR Y0)) - [for KNOT# from 1 to (SUB1 %#KNOTS) - do (LOADPOLY XPOLY X'POLY (ELT X''' KNOT#) - (ELT X'' KNOT#) - (ELT X' KNOT#) - (ELT X KNOT#)) (* Set up the polynomials that - describe X and X' over this segment) - (LOADPOLY YPOLY Y'POLY (ELT Y''' KNOT#) - (ELT Y'' KNOT#) - (ELT Y' KNOT#) - (ELT Y KNOT#)) (* Set up the polynomials that - describe Y and Y' over this segment) - (SETQ XT (POLYEVAL TT XPOLY 3)) (* XT _ X (t) --Evaluate the next - point) - (SETQ YT (POLYEVAL TT YPOLY 3)) (* YT _ Y (t)) - (COND - [(NOT (IEQP KNOT# (SUB1 %#KNOTS))) - - (* This isn't the last knot. Check to see if the next knot in line is a - duplicated knot.) - - (SETQ DUPLICATEKNOT (AND (EQP (ELT X (ADD1 KNOT#)) - (ELT X (IPLUS KNOT# 2))) - (EQP (ELT Y (ADD1 KNOT#)) - (ELT Y (IPLUS KNOT# 2] - (T (SETQ DUPLICATEKNOT NIL))) - [until (GEQ TT 1.0) - do - - (* Run the parameter, TT, from 0.0 up to |1.0.| - That moves the X and Y locations smoothly from this knot to the next one.) - - (SETQ X'T (POLYEVAL TT X'POLY 2)) - (* X'T _ X' (t)) - (SETQ Y'T (POLYEVAL TT Y'POLY 2)) - (* Y'T _ Y' (t)) - (COND - ((EQP X'T 0.0) (* Never let X' really get to 0.0 -- - things become ill-conditioned there.) - (SETQ X'T 5.0E-4))) - (COND - ((EQP Y'T 0.0) (* Likewise Y'.) - (SETQ Y'T 5.0E-4))) - [COND - ((FGTP X'T 0.0) (* If X' is positive, we'll try - moving in the +X direction) - (SETQ DX DELTA)) - (T (* If not, we'll try the -X - direction.) - (SETQ DX (IMINUS DELTA] - [COND - ((FGTP Y'T 0.0) (* Likewise, if Y' is positive, try - moving by DELTA in the +Y direction) - (SETQ DY DELTA)) - (T (SETQ DY (IMINUS DELTA] - (SETQ XWALLDT (FQUOTIENT (FDIFFERENCE (IPLUS IX DX) - XT) - X'T)) (* Compute a dT, based on moving by - DELTA in X.) - (SETQ YWALLDT (FQUOTIENT (FDIFFERENCE (IPLUS IY DY) - YT) - Y'T)) (* And a dT based on moving by DELTA - in Y.) - [COND - ((FLESSP XWALLDT YWALLDT) - - (* Use the smaller of the two dT's. In this case, dT for X was smaller, so - compute a new DY as depending on DX.) - - (SETQ NEWT (FPLUS TT XWALLDT)) - (SETQ DY (IDIFFERENCE (FIXR (FPLUS YT (FTIMES XWALLDT Y'T))) - IY))) - (T - - (* Changing Y gave the smaller dT. Compute a new DX, as though it depended on - DY.) - - (SETQ NEWT (FPLUS TT YWALLDT)) - (SETQ DX (IDIFFERENCE (FIXR (FPLUS XT (FTIMES YWALLDT X'T))) - IX] - (SETQ PUTDX DX) - (SETQ EXTRADX 0) - (SETQ PUTDY DY) - (SETQ EXTRADY 0) - [COND - ((IGREATERP DX 16) - (SETQ PUTDX 16) - (SETQ EXTRADX (IDIFFERENCE DX 16] - [COND - ((IGREATERP -16 DX) - (SETQ PUTDX -16) - (SETQ EXTRADX (IPLUS DX 16] - [COND - ((IGREATERP DY 16) - (SETQ PUTDY 16) - (SETQ EXTRADY (IDIFFERENCE DY 16] - [COND - ((IGREATERP -16 DY) - (SETQ PUTDY -16) - (SETQ EXTRADY (IPLUS DY 16] - (COND - ([AND (FGTP NEWT 1.0) - (OR DUPLICATEKNOT (EQ KNOT# (SUB1 %#KNOTS] - (SETQ NEWT 1.0))) - (SETQ NEWXT (POLYEVAL NEWT XPOLY 3)) - (* New XT _ X (new t)) - (SETQ NEWYT (POLYEVAL NEWT YPOLY 3)) - (* New YT _ Y (new t)) - (SETQ XDIFF (ABS (FDIFFERENCE (IPLUS IX DX) - NEWXT))) - (SETQ YDIFF (ABS (FDIFFERENCE (IPLUS IY DY) - NEWYT))) - (COND - ((AND (IGREATERP DELTA 1) - (OR (FGTP XDIFF 1.0) - (FGTP YDIFF 1.0))) - - (* If we're more than a dover spot off where we'd expect to be because of the - size of DELTA--and if there's room to make DELTA smaller--then try - DELTA_DELTA/2) - - (SETQ DELTA (LRSH DELTA 1))) - (T - - (* No, this estimate is close enough. Put out a vector segment based on it, and - move to the new TT.) - - (\VECPUT PRSTREAM PUTDX PUTDY HALFVECWIDTH) - (* Print out a stroke using the - vector font.) - (COND - ((OR (NEQ EXTRADX 0) - (NEQ EXTRADY 0)) - (* If, actually, it was too big for - one stroke, use another.) - (\VECPUT PRSTREAM EXTRADX EXTRADY HALFVECWIDTH))) - (SETQ IX (IPLUS IX DX))(* Our new current location, in - Dover spots) - (SETQ IY (IPLUS IY DY)) - (SETQ TT NEWT) (* Set TT to its new value) - (SETQ XT NEWXT) (* And set the new floating-point - values for X (t) and Y - (t)%.) - (SETQ YT NEWYT) - (COND - ((AND (ILESSP DELTA 16) - (OR (FLESSP XDIFF 0.5) - (FLESSP YDIFF 0.5))) - (* If we were especially close, try - making DELTA larger for the next go - round.) - (SETQ DELTA (LLSH DELTA 1] - (SETQ TT (FDIFFERENCE TT 1.0)) - - (* Having moved past a knot, back the value of the parameter TT back down. - However, don't set it to 0.0--let's try to keep the line going from where it - got to in passing the last knot.) - - (COND - (DUPLICATEKNOT - - (* This next knot is a duplicate. Skip over it, and start from the following - knot. This will avoid odd problems trying to go nowhere while obeying the - constraints of X' and Y' at that knot--since it's a duplicate, X' and Y' are - discontinuous there.) - - (add KNOT# 1] - (\ENDVECRUN PRSTREAM HALFVECWIDTH)))]) -) - -(RPAQ? \VecFontDir ) -(DECLARE%: EVAL@COMPILE - -(RPAQQ \MicasPerInch 2540) - - -(CONSTANTS (\MicasPerInch 2540)) -) -(DECLARE%: DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RPAQQ ScansPerIn 384) - -(RPAQQ PointsPerIn 72.27) - -(RPAQ MicasPerScan (FQUOTIENT \MicasPerInch ScansPerIn)) - -(RPAQ ScansPerMica (FQUOTIENT ScansPerIn \MicasPerInch)) - -(RPAQ ScansPerPoint (FQUOTIENT ScansPerIn PointsPerIn)) - -(RPAQ PointsPerScan (FQUOTIENT PointsPerIn ScansPerIn)) - -(RPAQ MicasPerPoint (FQUOTIENT \MicasPerInch PointsPerIn)) - -(RPAQ PointsPerMica (FQUOTIENT PointsPerIn \MicasPerInch)) - -(RPAQQ SPRUCEPAPERTOPSCANS 4096) - -(RPAQ SPRUCEPAPERTOPMICAS (FIX (FQUOTIENT (FTIMES SPRUCEPAPERTOPSCANS \MicasPerInch) - ScansPerIn))) - -(RPAQ SPRUCEPAPERRIGHTMICAS (FIX (FTIMES 8.5 \MicasPerInch))) - -(RPAQ SPRUCEPAPERRIGHTSCANS (FIX (FTIMES 8.5 ScansPerIn))) - -(RPAQQ SPRUCEPAPERBOTTOMSCANS 0) - -(RPAQQ SPRUCEPAPERBOTTOMMICAS 0) - -(RPAQQ SPRUCEPAPERLEFTSCANS 0) - -(RPAQQ SPRUCEPAPERLEFTMICAS 0) - - -(CONSTANTS (ScansPerIn 384) - (PointsPerIn 72.27) - (MicasPerScan (FQUOTIENT \MicasPerInch ScansPerIn)) - (ScansPerMica (FQUOTIENT ScansPerIn \MicasPerInch)) - (ScansPerPoint (FQUOTIENT ScansPerIn PointsPerIn)) - (PointsPerScan (FQUOTIENT PointsPerIn ScansPerIn)) - (MicasPerPoint (FQUOTIENT \MicasPerInch PointsPerIn)) - (PointsPerMica (FQUOTIENT PointsPerIn \MicasPerInch)) - (SPRUCEPAPERTOPSCANS 4096) - (SPRUCEPAPERTOPMICAS (FIX (FQUOTIENT (FTIMES SPRUCEPAPERTOPSCANS \MicasPerInch) - ScansPerIn))) - (SPRUCEPAPERRIGHTMICAS (FIX (FTIMES 8.5 \MicasPerInch))) - (SPRUCEPAPERRIGHTSCANS (FIX (FTIMES 8.5 ScansPerIn))) - (SPRUCEPAPERBOTTOMSCANS 0) - (SPRUCEPAPERBOTTOMMICAS 0) - (SPRUCEPAPERLEFTSCANS 0) - (SPRUCEPAPERLEFTMICAS 0)) -) -) - - - -(* ;; "Initialization code") - -(DEFINEQ - -(\PRESSINIT - [LAMBDA NIL (* rrb " 4-Oct-85 17:27") - (DECLARE (GLOBALVARS \PRESSIMAGEOPS)) - (SETQ \PRESSIMAGEOPS (create IMAGEOPS - IMAGETYPE _ 'PRESS - IMCLOSEFN _ (FUNCTION \CLOSEF.PRESS) - IMXPOSITION _ (FUNCTION \DSPXPOSITION.PRESS) - IMYPOSITION _ (FUNCTION \DSPYPOSITION.PRESS) - IMFONT _ (FUNCTION \DSPFONT.PRESS) - IMLEFTMARGIN _ (FUNCTION \DSPLEFTMARGIN.PRESS) - IMRIGHTMARGIN _ (FUNCTION \DSPRIGHTMARGIN.PRESS) - IMLINEFEED _ (FUNCTION \DSPLINEFEED.PRESS) - IMDRAWLINE _ (FUNCTION \DRAWLINE.PRESS) - IMDRAWCURVE _ (FUNCTION \DRAWCURVE.PRESS) - IMDRAWCIRCLE _ (FUNCTION \DRAWCIRCLE.PRESS) - IMDRAWELLIPSE _ (FUNCTION \DRAWELLIPSE.PRESS) - IMFILLCIRCLE _ [FUNCTION (LAMBDA (STREAM) - (\UNIMPIMAGEOP STREAM 'FILLCIRCLE] - IMBLTSHADE _ (FUNCTION \BLTSHADE.PRESS) - IMBITBLT _ (FUNCTION \BITBLT.PRESS) - IMSCALE _ [FUNCTION (LAMBDA NIL - (CONSTANT (FQUOTIENT MICASPERINCH 72] - IMTERPRI _ (FUNCTION NEWLINE.PRESS) - IMBOTTOMMARGIN _ (FUNCTION \DSPBOTTOMMARGIN.PRESS) - IMTOPMARGIN _ (FUNCTION \DSPTOPMARGIN.PRESS) - IMFONTCREATE _ 'PRESS - IMNEWPAGE _ (FUNCTION NEWPAGE.PRESS) - IMSPACEFACTOR _ (FUNCTION \DSPSPACEFACTOR.PRESS) - IMSTRINGWIDTH _ (FUNCTION \STRINGWIDTH.PRESS) - IMCHARWIDTH _ (FUNCTION \CHARWIDTH.PRESS) - IMBITMAPSIZE _ (FUNCTION \BITMAPSIZE.PRESS) - IMCLIPPINGREGION _ (FUNCTION \DSPCLIPPINGREGION.PRESS) - IMSCALEDBITBLT _ (FUNCTION \SCALEDBITBLT.PRESS) - IMDRAWARC _ (FUNCTION \DRAWARC.PRESS]) -) -(DECLARE%: DONTEVAL@LOAD DOCOPY - -(\PRESSINIT) -) -(DECLARE%: DONTCOPY -(DECLARE%: EVAL@COMPILE - -(DATATYPE PRESSDATA (PRHEADING (* ; - "The string to be printed atop each page.") - PRHEADINGFONT (* ; "Font to print the heading in") - PRXPOS (* ; "Current X position") - PRYPOS (* ; "Current Y position") - PRFONT (* ; "Current font") - PRCURRFDE PRESSFONTDIR (PRWIDTHSCACHE POINTER - (* ; - "Widths table for the current logical character set") - ) - PRCOLOR PRLINEFEED PRPAGESTATE PDSTREAM ELSTREAM XPRPAGEREGION PRDOCNAME - (PRLEFT WORD) (* ; "Page left margin") - (PRBOTTOM WORD) (* ; "Page bottom margin") - (PRRIGHT WORD) (* ; "Page right margin") - (PRTOP WORD) (* ; "Page top margin") - (PRPAGENUM WORD) (* ; "Current Page number") - (PRNEXTFONT# BYTE) - (PRMAXFONTSET BYTE) - (PRPARTSTART INTEGER) - (DLSTARTBYTE INTEGER) - (ELSTARTBYTE INTEGER) - (STARTCHARBYTE INTEGER) - (VECMOVINGRIGHT FLAG) (* ; - "If we're drawing a curve with vector fonts, are we moving to the right?") - (VECWASDISPLAYING FLAG) - - (* ;; "Used during curve/line clipping to remember whether we were on-screen or not, so we know when to force a SETXY.") - - VECSEGCHARS (* ; - "Cache for vector characters while we're moving to the left.") - VECCURX (* ; - "Current X position within vector code, in Dover spots") - VECCURY (* ; - "Current Y position with vector code, in Dover spots") - PRSPACEFACTOR PRSPACEWIDTH (CHARWASDISPLAYING FLAG) - (* ; - "Says whether we have been printing characters inside the clipping region") - PRClippingRegion - - (* ;; "The edges of the paper, as far as PRESS is concerned. Used to protect SPRUCE users who get killed when the image goes off-paper") - - PRLOGICALFONT (* ; "Current logical font") - PRLOGICALCHARSET (* ; - "Current logical character set, whose info is cached. NIL if cache is invalid") - (PRTRANSLATIONCACHE POINTER (* ; - "Translation table for the current logical character set") - )) - PRSPACEFACTOR _ 1 PRXPOS _ 0 PRYPOS _ 0 (* ; - "We assume that the origin is translated to the bottom-left of the page region") - PRClippingRegion _ (create REGION - LEFT _ SPRUCEPAPERLEFTMICAS - BOTTOM _ SPRUCEPAPERBOTTOMMICAS - WIDTH _ (DIFFERENCE SPRUCEPAPERRIGHTMICAS - SPRUCEPAPERLEFTMICAS) - HEIGHT _ 29210) - [ACCESSFNS ((PRWIDTH (IDIFFERENCE (fetch (PRESSDATA PRRIGHT) of DATUM) - (fetch (PRESSDATA PRLEFT) of DATUM))) - (PRHEIGHT (IDIFFERENCE (fetch (PRESSDATA PRTOP) of DATUM) - (fetch (PRESSDATA PRBOTTOM) of DATUM))) - (PRPAGEREGION (fetch (PRESSDATA XPRPAGEREGION) of DATUM) - (PROGN (replace (PRESSDATA XPRPAGEREGION) of DATUM - with NEWVALUE) - (replace (PRESSDATA PRLEFT) of DATUM - with (fetch (REGION LEFT) of NEWVALUE)) - (replace (PRESSDATA PRBOTTOM) of DATUM - with (fetch (REGION BOTTOM) of NEWVALUE)) - (replace (PRESSDATA PRRIGHT) of DATUM - with (IPLUS (fetch (REGION LEFT) of NEWVALUE) - (fetch (REGION WIDTH) of NEWVALUE))) - (replace (PRESSDATA PRTOP) of DATUM - with (IPLUS (fetch (REGION BOTTOM) of NEWVALUE) - (fetch (REGION HEIGHT) of NEWVALUE]) - -(RECORD FONTDIRENTRY (DESCR FONT# FONTSET#)) -) - -(/DECLAREDATATYPE 'PRESSDATA - '(POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER - POINTER POINTER POINTER POINTER WORD WORD WORD WORD WORD BYTE BYTE FIXP FIXP FIXP FIXP - FLAG FLAG POINTER POINTER POINTER POINTER POINTER FLAG POINTER POINTER POINTER POINTER - ) - '((PRESSDATA 0 POINTER) - (PRESSDATA 2 POINTER) - (PRESSDATA 4 POINTER) - (PRESSDATA 6 POINTER) - (PRESSDATA 8 POINTER) - (PRESSDATA 10 POINTER) - (PRESSDATA 12 POINTER) - (PRESSDATA 14 POINTER) - (PRESSDATA 16 POINTER) - (PRESSDATA 18 POINTER) - (PRESSDATA 20 POINTER) - (PRESSDATA 22 POINTER) - (PRESSDATA 24 POINTER) - (PRESSDATA 26 POINTER) - (PRESSDATA 28 POINTER) - (PRESSDATA 30 (BITS . 15)) - (PRESSDATA 31 (BITS . 15)) - (PRESSDATA 32 (BITS . 15)) - (PRESSDATA 33 (BITS . 15)) - (PRESSDATA 34 (BITS . 15)) - (PRESSDATA 35 (BITS . 7)) - (PRESSDATA 35 (BITS . 135)) - (PRESSDATA 36 FIXP) - (PRESSDATA 38 FIXP) - (PRESSDATA 40 FIXP) - (PRESSDATA 42 FIXP) - (PRESSDATA 28 (FLAGBITS . 0)) - (PRESSDATA 28 (FLAGBITS . 16)) - (PRESSDATA 44 POINTER) - (PRESSDATA 46 POINTER) - (PRESSDATA 48 POINTER) - (PRESSDATA 50 POINTER) - (PRESSDATA 52 POINTER) - (PRESSDATA 52 (FLAGBITS . 0)) - (PRESSDATA 54 POINTER) - (PRESSDATA 56 POINTER) - (PRESSDATA 58 POINTER) - (PRESSDATA 60 POINTER)) - '62) -) - -(/DECLAREDATATYPE 'PRESSDATA - '(POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER - POINTER POINTER POINTER POINTER WORD WORD WORD WORD WORD BYTE BYTE FIXP FIXP FIXP FIXP - FLAG FLAG POINTER POINTER POINTER POINTER POINTER FLAG POINTER POINTER POINTER POINTER - ) - '((PRESSDATA 0 POINTER) - (PRESSDATA 2 POINTER) - (PRESSDATA 4 POINTER) - (PRESSDATA 6 POINTER) - (PRESSDATA 8 POINTER) - (PRESSDATA 10 POINTER) - (PRESSDATA 12 POINTER) - (PRESSDATA 14 POINTER) - (PRESSDATA 16 POINTER) - (PRESSDATA 18 POINTER) - (PRESSDATA 20 POINTER) - (PRESSDATA 22 POINTER) - (PRESSDATA 24 POINTER) - (PRESSDATA 26 POINTER) - (PRESSDATA 28 POINTER) - (PRESSDATA 30 (BITS . 15)) - (PRESSDATA 31 (BITS . 15)) - (PRESSDATA 32 (BITS . 15)) - (PRESSDATA 33 (BITS . 15)) - (PRESSDATA 34 (BITS . 15)) - (PRESSDATA 35 (BITS . 7)) - (PRESSDATA 35 (BITS . 135)) - (PRESSDATA 36 FIXP) - (PRESSDATA 38 FIXP) - (PRESSDATA 40 FIXP) - (PRESSDATA 42 FIXP) - (PRESSDATA 28 (FLAGBITS . 0)) - (PRESSDATA 28 (FLAGBITS . 16)) - (PRESSDATA 44 POINTER) - (PRESSDATA 46 POINTER) - (PRESSDATA 48 POINTER) - (PRESSDATA 50 POINTER) - (PRESSDATA 52 POINTER) - (PRESSDATA 52 (FLAGBITS . 0)) - (PRESSDATA 54 POINTER) - (PRESSDATA 56 POINTER) - (PRESSDATA 58 POINTER) - (PRESSDATA 60 POINTER)) - '62) - -(RPAQ? DEFAULTPAGEREGION (CREATEREGION 2794 1905 16256 24765)) - -(RPAQ? PRESSBITMAPREGION (CREATEREGION 1270 1270 (FIX (TIMES 7.5 \MicasPerInch)) - (TIMES 10 \MicasPerInch))) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS DEFAULTPAGEREGION) -) -(DECLARE%: DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RPAQQ BYTESPERRECORD 512) - -(RPAQQ LISPENTITYTYPE 6) - -(RPAQ MICASPERINCH \MicasPerInch) - - -(CONSTANTS (BYTESPERRECORD 512) - (LISPENTITYTYPE 6) - (MICASPERINCH \MicasPerInch)) -) - - - -(RPAQQ PRESSOPS - (SetX SetY ShowCharacters ShowCharactersShortCode SkipCharactersShortCode - ShowCharactersAndSkipCode SetSpaceXShortCode SetSpaceYShortCode FontCode - SkipControlBytesImmediateCode AlternativeCode OnlyOnCopyCode SetXCode SetYCode - ShowCharactersCode SkipCharactersCode SkipControlBytesCode ShowCharacterImmediateCode - SetSpaceXCode SetSpaceYCode ResetSpaceCode SpaceCode SetBrightnessCode SetHueCode - SetSaturationCode ShowObjectCode ShowDotsCode ShowDotsOpaqueCode ShowRectangleCode - NopCode)) -(DECLARE%: EVAL@COMPILE - -(RPAQQ SetX 0) - -(RPAQQ SetY 1) - -(RPAQQ ShowCharacters 2) - -(RPAQQ ShowCharactersShortCode 0) - -(RPAQQ SkipCharactersShortCode 40Q) - -(RPAQQ ShowCharactersAndSkipCode 100Q) - -(RPAQQ SetSpaceXShortCode 140Q) - -(RPAQQ SetSpaceYShortCode 150Q) - -(RPAQQ FontCode 160Q) - -(RPAQQ SkipControlBytesImmediateCode 353Q) - -(RPAQQ AlternativeCode 354Q) - -(RPAQQ OnlyOnCopyCode 355Q) - -(RPAQQ SetXCode 356Q) - -(RPAQQ SetYCode 357Q) - -(RPAQQ ShowCharactersCode 360Q) - -(RPAQQ SkipCharactersCode 361Q) - -(RPAQQ SkipControlBytesCode 362Q) - -(RPAQQ ShowCharacterImmediateCode 363Q) - -(RPAQQ SetSpaceXCode 364Q) - -(RPAQQ SetSpaceYCode 365Q) - -(RPAQQ ResetSpaceCode 366Q) - -(RPAQQ SpaceCode 367Q) - -(RPAQQ SetBrightnessCode 370Q) - -(RPAQQ SetHueCode 371Q) - -(RPAQQ SetSaturationCode 372Q) - -(RPAQQ ShowObjectCode 373Q) - -(RPAQQ ShowDotsCode 374Q) - -(RPAQQ ShowDotsOpaqueCode 375Q) - -(RPAQQ ShowRectangleCode 376Q) - -(RPAQQ NopCode 377Q) - - -(CONSTANTS SetX SetY ShowCharacters ShowCharactersShortCode SkipCharactersShortCode - ShowCharactersAndSkipCode SetSpaceXShortCode SetSpaceYShortCode FontCode - SkipControlBytesImmediateCode AlternativeCode OnlyOnCopyCode SetXCode SetYCode - ShowCharactersCode SkipCharactersCode SkipControlBytesCode ShowCharacterImmediateCode - SetSpaceXCode SetSpaceYCode ResetSpaceCode SpaceCode SetBrightnessCode SetHueCode - SetSaturationCode ShowObjectCode ShowDotsCode ShowDotsOpaqueCode ShowRectangleCode NopCode) -) -) - - - -(* ;; "Hardcopy user interface connections:") - -(DEFINEQ - -(MAKEPRESS - [LAMBDA (FILE PFILE FONTS HEADING TABS PRINTOPTIONS) (* ; "Edited 26-Aug-87 13:57 by Snow") - - (TEXTTOIMAGEFILE FILE PFILE 'PRESS FONTS HEADING TABS PRINTOPTIONS]) - -(PRESSFILEP - [LAMBDA (FILE) (* ; "Edited 20-Feb-87 18:41 by jds") - - (* ;; "Returns FILE if it looks like a Press file") - - (AND (SETQ FILE (OR (STREAMP FILE) - (FINDFILE FILE))) - (PROG [(LEN (GETFILEINFO FILE 'LENGTH] - (AND (NOT (ZEROP LEN)) - (EVENP LEN BYTESPERRECORD) - (RESETLST [COND - (T (RESETSAVE (SETQ PRESS-STREAM (OPENSTREAM FILE 'INPUT - 'OLD 10Q)) - '(PROGN (CLOSEF? OLDVALUE] - (SETFILEPTR PRESS-STREAM (IDIFFERENCE LEN BYTESPERRECORD)) - (IEQP 65057Q (\WIN PRESS-STREAM))) - (RETURN FILE]) - -(PRESS.BITMAPSCALE - [LAMBDA (WIDTH HEIGHT) (* ; "Edited 12-Jun-90 10:38 by mitani") - (MIN (FQUOTIENT (TIMES (fetch (REGION HEIGHT) of PRESSBITMAPREGION) - PointsPerMica) - HEIGHT) - (FQUOTIENT (TIMES (fetch (REGION WIDTH) of PRESSBITMAPREGION) - PointsPerMica) - WIDTH) - (PROG1 2 (* MAXPRESSRATIO)]) -) - -(ADDTOVAR IMAGESTREAMTYPES (PRESS (OPENSTREAM OPENPRSTREAM) - (FONTCREATE \CREATEPRESSFONT) - (CREATECHARSET \CREATECHARSET.PRESS) - (FONTSAVAILABLE \SEARCHPRESSFONTS))) - -(ADDTOVAR PRINTERTYPES - ((PRESS SPRUCE PENGUIN DOVER) - (CANPRINT (PRESS)) - (STATUS PUP.PRINTER.STATUS) - (PROPERTIES PUP.PRINTER.PROPERTIES) - (SEND EFTP) - (BITMAPSCALE NIL) - (BITMAPFILE (PRESSBITMAP FILE BITMAP SCALEFACTOR REGION ROTATION TITLE))) - ((FULLPRESS RAVEN) - (* ; - "same as PRESS but can scale bitmaps") - (CANPRINT (PRESS)) - (STATUS TRUE) - (PROPERTIES NILL) - (SEND EFTP) - (BITMAPSCALE PRESS.BITMAPSCALE) - (BITMAPFILE (FULLPRESSBITMAP FILE BITMAP SCALEFACTOR REGION ROTATION TITLE)))) - -(ADDTOVAR PRINTFILETYPES - [PRESS (TEST PRESSFILEP) - (EXTENSION (PRESS)) - (CONVERSION (TEXT MAKEPRESS TEDIT (LAMBDA (FILE PFILE FONTS HEADING) - (SETQ FILE (OPENTEXTSTREAM FILE)) - (TEDIT.FORMAT.HARDCOPY FILE PFILE T NIL NIL - NIL 'PRESS) - (CLOSEF? FILE) - PFILE]) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (15566Q 72545Q (\SEARCHPRESSFONTS 15600Q . 17535Q) (\GETPRESSFONTNAMES 17537Q . 26375Q) -(\PRESSFAMILYCODELST 26377Q . 30321Q) (\DECODEPRESSFACEBYTE 30323Q . 33112Q) (\CREATEPRESSFONT 33114Q - . 35361Q) (\CREATECHARSET.PRESS 35363Q . 72543Q)) (73202Q 127005Q (PRESSBITMAP 73214Q . 102616Q) ( -FULLPRESSBITMAP 102620Q . 110632Q) (SHOWREGION 110634Q . 112176Q) (SHOWPRESSBITMAPREGION 112200Q . -112642Q) (PRESSWINDOW 112644Q . 117003Q) (\WRITEPRESSBITMAP 117005Q . 127003Q)) (127103Q 156756Q ( -\BCPLSOUT.PRESS 127115Q . 130072Q) (\PAGEPAD.PRESS 130074Q . 131331Q) (\ENTITYEND.PRESS 131333Q . -136627Q) (\PARTEND.PRESS 136631Q . 141216Q) (\ENTITYSTART.PRESS 141220Q . 144631Q) (SETX.PRESS 144633Q - . 146466Q) (SETXY.PRESS 146470Q . 151472Q) (SETY.PRESS 151474Q . 153074Q) (SHOW.PRESS 153076Q . -156754Q)) (157040Q 273644Q (OPENPRSTREAM 157052Q . 164201Q) (\BITBLT.PRESS 164203Q . 166615Q) ( -\BLTSHADE.PRESS 166617Q . 170252Q) (\SCALEDBITBLT.PRESS 170254Q . 172700Q) (\BITMAPSIZE.PRESS 172702Q - . 173642Q) (\CHARWIDTH.PRESS 173644Q . 175713Q) (\CLOSEF.PRESS 175715Q . 205704Q) (\DRAWLINE.PRESS -205706Q . 207244Q) (\ENDPAGE.PRESS 207246Q . 210516Q) (NEWLINE.PRESS 210520Q . 212131Q) (NEWPAGE.PRESS - 212133Q . 212425Q) (SETUPFONTS.PRESS 212427Q . 216160Q) (\DEFINEFONT.PRESS 216162Q . 220304Q) ( -\DSPBOTTOMMARGIN.PRESS 220306Q . 221102Q) (\DSPCLIPPINGREGION.PRESS 221104Q . 222476Q) (\DSPFONT.PRESS - 222500Q . 227461Q) (\DSPLEFTMARGIN.PRESS 227463Q . 230343Q) (\DSPLINEFEED.PRESS 230345Q . 231655Q) ( -\DSPRIGHTMARGIN.PRESS 231657Q . 232542Q) (\DSPSPACEFACTOR.PRESS 232544Q . 234150Q) ( -\DSPTOPMARGIN.PRESS 234152Q . 234735Q) (\DSPXPOSITION.PRESS 234737Q . 235455Q) (\DSPYPOSITION.PRESS -235457Q . 236175Q) (\FIXLINELENGTH.PRESS 236177Q . 240274Q) (\OUTCHARFN.PRESS 240276Q . 247332Q) ( -\SETSPACE.PRESS 247334Q . 250630Q) (\STARTPAGE.PRESS 250632Q . 255173Q) (\STRINGWIDTH.PRESS 255175Q . -270553Q) (SHOWRECTANGLE.PRESS 270555Q . 271276Q) (\PRESS.CONVERT.NSCHARACTER 271300Q . 273642Q)) ( -273704Q 404746Q (\ENDVECRUN 273716Q . 303534Q) (\VECENCODE 303536Q . 304565Q) (\VECPUT 304567Q . -314215Q) (\VECSKIP 314217Q . 314752Q) (\VECFONTINIT 314754Q . 322077Q) (\DRAWCIRCLE.PRESS 322101Q . -324404Q) (\DRAWARC.PRESS 324406Q . 325177Q) (\DRAWCURVE.PRESS 325201Q . 333137Q) ( -\DRAWCURVE.PRESS.LINE 333141Q . 342006Q) (\DRAWELLIPSE.PRESS 342010Q . 345567Q) (\GETBRUSHFONT.PRESS -345571Q . 347473Q) (\PRESSCURVE2 347475Q . 404744Q)) (410600Q 415424Q (\PRESSINIT 410612Q . 415422Q)) -(444757Q 450046Q (MAKEPRESS 444771Q . 445275Q) (PRESSFILEP 445277Q . 447054Q) (PRESS.BITMAPSCALE -447056Q . 450044Q))))) -STOP diff --git a/obsolete/library/PRESS.LCOM b/obsolete/library/PRESS.LCOM deleted file mode 100644 index 5887ff08aa6a6b91c258e7a94f5a34cd43e510d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42993 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 diff --git a/obsolete/library/Press.tedit b/obsolete/library/Press.tedit deleted file mode 100644 index 93ad483398c74a51d438584dd7b40a89ea024dc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5758 zcmeHJ&vV<>5eDTSiRvJkG|BYPNoPl%v}A^%DcX`8-)IsLF#!P<02M2#4y z^rLYWh@=jEF%HBfSRxQ^B4EGKti!-kY+K&{=`N*XIgsF3Y8$A~>$}7UN z%n$2exz9xiZaAJJHe@48#iL#3PzN`NP>KsbJ%p`*M4pKHdxUh*5u83zO6h z0<4iJ52{2LY1(&eJbOn1?8=p<9@(_fhdgJdUFa+JAMGnuYUnNH1qtDrNS>3*ljvh2!XA zIS9FQAo^WJZ4Y&awbhK{o@qPPH8!Xg8r8}(Q=FUKZ%^j>JW`j8@R&|{bs*|}4>-ZHBKb3XOb~vroalV?sjboo5{3F%P4~u`z7$uqnD8^{T32e+C^am3GHbEIU^k zO^X$!_|&kdQKA2YkGK3Sx6he-CitXTL^b-5e<8)7J{og}&0&hJE6uSjFZ;TfugO^3W-;ol|6tqZ;aF_1mb=8^WP5 zt)nLFA3*EjL%4s)b&AHG((a<1xm@!H=M+h(rb#+mxaQyiw2t85VA;=6o;d781ZV|) znh)Tpi8&xDHFUg2g3)XHbn1%wo6RQb{gabekeDMD( zgWpf}FLkP~ECdVt-p?(BT8-QPE$IWPCH16U<)yTPmYo|FNvc#{;(f!_k^(6}k9QUx zuQq#pL1^f~*Uq}N6(^s>`vDSKf#1RX-p(nH;x7oWT@g8V9krLd*937ao|#d)K}-&g)ShoPUP4A7&>wpVn=*90z$GRb%7&tzVo z(r($9^0h1XRTM0-O63ZavZ`17^9O}~Dz79eoXU+2DDTeyDNl00mHR5lhJXqXYsG!> za8tS?eImWn(c8AIbtFnGUI_S+bj#74wo#bS`X_0(d>N76=Y@38-gN)*+BqtkKbCIy zO?*``mi!mC_e#u#ZJqBr+aEXj(&P^I2fA0JJ3VWN@7~9XqZ*YZP77R?K$6~N(A@DJ zjc?(X5{IhMwZmat3zGC}5(YsM61~ITrs1;TTF@lp3KAK%MWW7G#(kqe%9YuX$gl}% zk%hTVg(C&^AN)!;@%t%i_`cR}X!zFpBu@iP{ex~aPkYesQyS8Mwq@P_MuX)goE0+s znPw<8T4maM(qFF$LcX69 z2%$1E!IHJiFe$?uUpq-u%>+uSa^Vv`A1>lwR@}WeW5DVBd=^1d@BWOe%Lc+mxZC%n JfB);d9{|9FHOK$} diff --git a/obsolete/library/TABLEBROWSERDECLS b/obsolete/library/TABLEBROWSERDECLS deleted file mode 100644 index 752883ae..00000000 --- a/obsolete/library/TABLEBROWSERDECLS +++ /dev/null @@ -1,137 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") -(FILECREATED "26-Jun-99 00:30:01" {DSK}medley3.5>library>TABLEBROWSERDECLS.;2 7377 - - changes to%: (RECORDS TABLEBROWSER TABLEITEM) - - previous date%: "20-Jan-93 14:52:38" {DSK}medley3.5>library>TABLEBROWSERDECLS.;1) - - -(* ; " -Copyright (c) 1985, 1988, 1990, 1993, 1999 by Venue & Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT TABLEBROWSERDECLSCOMS) - -(RPAQQ TABLEBROWSERDECLSCOMS ((RECORDS TABLEBROWSER TABLEITEM) - (CONSTANTS TB.LEFT.MARGIN))) -(DECLARE%: EVAL@COMPILE - -(DATATYPE TABLEBROWSER ((TBREADY FLAG) - (TBHEIGHTEXPLICIT FLAG) (* ; - "True if creator set explicit item height or baseline") - (TBITEMS POINTER) (* ; "List of items in this browser") - (TB#ITEMS WORD) (* ; "Number of items") - (TB#DELETED WORD) (* ; "Number of items marked deleted") - (TB#LINESPERITEM WORD) (* ; - "Number of lines occupied by each item, normally 1 (dunno if any other values work)") - (TBFIRSTSELECTEDITEM WORD) (* ; - "Number of first selected item. If none selected, is > TB#ITEMS") - (TBLASTSELECTEDITEM WORD) (* ; - "Number of last selected item. If none selected, is 0") - (TBITEMHEIGHT WORD) (* ; - "Height of an item, i.e., fontheight*linesperitem") - (TBMAXXPOS WORD) (* ; - "The largest x-position a user printfn has printed to") - (TBFONTHEIGHT WORD) (* ; "Height, ascent, descent of font") - (TBFONTASCENT WORD) - (TBBASELINE WORD) - (TBWINDOW POINTER) (* ; - "Pointer to the display window. Need to snap this link when browser is closed") - (TBLOCK POINTER) (* ; - "Monitor lock guarding some browser operations") - (TBUSERDATA POINTER) (* ; "Arbitrary user storage") - (TBFONT POINTER) (* ; "Pointer to font used by display") - (TBEXTENT POINTER) (* ; - "Window's extent, updated as items are added, deleted, or printfn prints farther to right") - (TBUPDATEFROMHERE POINTER) (* ; - "If changes have occurred while shrunk, this gives the # of first item that needs redisplay") - (TBCOLUMNS POINTER) (* ; - "Number of columns--not yet implemented") - (TBPRINTFN POINTER) (* ; - "(Browser Item Window) -- displays Item at current line position in window") - (TBCOPYFN POINTER) (* ; - "(Browser Item) -- copy selects Item") - (TBFONTCHANGEFN POINTER) (* ; - "(Browser Window) -- called when tb.set.font changes the font") - (TBCLOSEFN POINTER) (* ; - "(Browser Window Close/Shrink) -- called when you try to close or shrink window") - (TBAFTERCLOSEFN POINTER) (* ; - "(Browser Window) -- called to cleanup AFTER a closew") - (TBTITLEEVENTFN POINTER) (* ; - "(Window Browser) -- handles button event in browser's title") - (TBLINETHICKNESS POINTER) (* ; - "Thickness of line for deletions (normally 1)") - (TBORIGIN POINTER) (* ; - "Y position of the top of the first item") - (TBTAILHINT POINTER) (* ; - "A tail of TBITEMS, used to speed up TB.NTH.ITEM") - (TBHEADINGWINDOW POINTER) (* ; - "An optional %"header window%" that should be horizontally scrolled in synchrony with this one") - (NIL POINTER))) - -(DATATYPE TABLEITEM ((TISELECTED FLAG) - (TIDELETED FLAG) - (TIUNDELETABLE FLAG) - (TIUNSELECTABLE FLAG) - (TIUNCOPYSELECTABLE FLAG) - (TIDATA POINTER) - (TI# WORD))) -) - -(/DECLAREDATATYPE 'TABLEBROWSER - '(FLAG FLAG POINTER WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD POINTER POINTER POINTER - POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER - POINTER POINTER POINTER POINTER) - '((TABLEBROWSER 0 (FLAGBITS . 0)) - (TABLEBROWSER 0 (FLAGBITS . 16)) - (TABLEBROWSER 0 POINTER) - (TABLEBROWSER 2 (BITS . 15)) - (TABLEBROWSER 3 (BITS . 15)) - (TABLEBROWSER 4 (BITS . 15)) - (TABLEBROWSER 5 (BITS . 15)) - (TABLEBROWSER 6 (BITS . 15)) - (TABLEBROWSER 7 (BITS . 15)) - (TABLEBROWSER 8 (BITS . 15)) - (TABLEBROWSER 9 (BITS . 15)) - (TABLEBROWSER 10 (BITS . 15)) - (TABLEBROWSER 11 (BITS . 15)) - (TABLEBROWSER 12 POINTER) - (TABLEBROWSER 14 POINTER) - (TABLEBROWSER 16 POINTER) - (TABLEBROWSER 18 POINTER) - (TABLEBROWSER 20 POINTER) - (TABLEBROWSER 22 POINTER) - (TABLEBROWSER 24 POINTER) - (TABLEBROWSER 26 POINTER) - (TABLEBROWSER 28 POINTER) - (TABLEBROWSER 30 POINTER) - (TABLEBROWSER 32 POINTER) - (TABLEBROWSER 34 POINTER) - (TABLEBROWSER 36 POINTER) - (TABLEBROWSER 38 POINTER) - (TABLEBROWSER 40 POINTER) - (TABLEBROWSER 42 POINTER) - (TABLEBROWSER 44 POINTER) - (TABLEBROWSER 46 POINTER)) - '48) - -(/DECLAREDATATYPE 'TABLEITEM '(FLAG FLAG FLAG FLAG FLAG POINTER WORD) - '((TABLEITEM 0 (FLAGBITS . 0)) - (TABLEITEM 0 (FLAGBITS . 16)) - (TABLEITEM 0 (FLAGBITS . 32)) - (TABLEITEM 0 (FLAGBITS . 48)) - (TABLEITEM 0 (FLAGBITS . 64)) - (TABLEITEM 2 POINTER) - (TABLEITEM 1 (BITS . 15))) - '4) -(DECLARE%: EVAL@COMPILE - -(RPAQQ TB.LEFT.MARGIN 8) - - -(CONSTANTS TB.LEFT.MARGIN) -) -(PUTPROPS TABLEBROWSERDECLS COPYRIGHT ("Venue & Xerox Corporation" 1985 1988 1990 1993 1999)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL))) -STOP diff --git a/obsolete/library/TABLEBROWSERDECLS.LCOM b/obsolete/library/TABLEBROWSERDECLS.LCOM deleted file mode 100644 index fa540277..00000000 --- a/obsolete/library/TABLEBROWSERDECLS.LCOM +++ /dev/null @@ -1 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") (FILECREATED "26-Jun-99 00:30:15" ("compiled on " {DSK}medley3.5>library>TABLEBROWSERDECLS.;2 ) "29-Jan-99 11:25:20" tcompl'd in "LFG 21-Jun-99 ..." dated "21-Jun-99 23:39:34") (FILECREATED "26-Jun-99 00:30:01" {DSK}medley3.5>library>TABLEBROWSERDECLS.;2 7377 changes to%: (RECORDS TABLEBROWSER TABLEITEM) previous date%: "20-Jan-93 14:52:38" {DSK}medley3.5>library>TABLEBROWSERDECLS.;1) (PRETTYCOMPRINT TABLEBROWSERDECLSCOMS) (RPAQQ TABLEBROWSERDECLSCOMS ((RECORDS TABLEBROWSER TABLEITEM) (CONSTANTS TB.LEFT.MARGIN))) (DATATYPE TABLEBROWSER ((TBREADY FLAG) (TBHEIGHTEXPLICIT FLAG) (* ; "True if creator set explicit item height or baseline") (TBITEMS POINTER) (* ; "List of items in this browser") (TB#ITEMS WORD) (* ; "Number of items") (TB#DELETED WORD) (* ; "Number of items marked deleted") (TB#LINESPERITEM WORD) (* ; "Number of lines occupied by each item, normally 1 (dunno if any other values work)") ( TBFIRSTSELECTEDITEM WORD) (* ; "Number of first selected item. If none selected, is > TB#ITEMS") ( TBLASTSELECTEDITEM WORD) (* ; "Number of last selected item. If none selected, is 0") (TBITEMHEIGHT WORD) (* ; "Height of an item, i.e., fontheight*linesperitem") (TBMAXXPOS WORD) (* ; "The largest x-position a user printfn has printed to") (TBFONTHEIGHT WORD) (* ; "Height, ascent, descent of font") (TBFONTASCENT WORD) (TBBASELINE WORD) (TBWINDOW POINTER) (* ; "Pointer to the display window. Need to snap this link when browser is closed") (TBLOCK POINTER) (* ; "Monitor lock guarding some browser operations") (TBUSERDATA POINTER) (* ; "Arbitrary user storage") (TBFONT POINTER) (* ; "Pointer to font used by display") (TBEXTENT POINTER) (* ; "Window's extent, updated as items are added, deleted, or printfn prints farther to right") ( TBUPDATEFROMHERE POINTER) (* ; "If changes have occurred while shrunk, this gives the # of first item that needs redisplay") ( TBCOLUMNS POINTER) (* ; "Number of columns--not yet implemented") (TBPRINTFN POINTER) (* ; "(Browser Item Window) -- displays Item at current line position in window") (TBCOPYFN POINTER) (* ; "(Browser Item) -- copy selects Item") (TBFONTCHANGEFN POINTER) (* ; "(Browser Window) -- called when tb.set.font changes the font") (TBCLOSEFN POINTER) (* ; "(Browser Window Close/Shrink) -- called when you try to close or shrink window") (TBAFTERCLOSEFN POINTER) (* ; "(Browser Window) -- called to cleanup AFTER a closew") (TBTITLEEVENTFN POINTER) (* ; "(Window Browser) -- handles button event in browser's title") (TBLINETHICKNESS POINTER) (* ; "Thickness of line for deletions (normally 1)") (TBORIGIN POINTER) (* ; "Y position of the top of the first item") (TBTAILHINT POINTER) (* ; "A tail of TBITEMS, used to speed up TB.NTH.ITEM") (TBHEADINGWINDOW POINTER) (* ; "An optional %"header window%" that should be horizontally scrolled in synchrony with this one") (NIL POINTER))) (DATATYPE TABLEITEM ((TISELECTED FLAG) (TIDELETED FLAG) (TIUNDELETABLE FLAG) (TIUNSELECTABLE FLAG) ( TIUNCOPYSELECTABLE FLAG) (TIDATA POINTER) (TI# WORD))) (/DECLAREDATATYPE (QUOTE TABLEBROWSER) (QUOTE (FLAG FLAG POINTER WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER)) (QUOTE ((TABLEBROWSER 0 (FLAGBITS . 0)) ( TABLEBROWSER 0 (FLAGBITS . 16)) (TABLEBROWSER 0 POINTER) (TABLEBROWSER 2 (BITS . 15)) (TABLEBROWSER 3 (BITS . 15)) (TABLEBROWSER 4 (BITS . 15)) (TABLEBROWSER 5 (BITS . 15)) (TABLEBROWSER 6 (BITS . 15)) ( TABLEBROWSER 7 (BITS . 15)) (TABLEBROWSER 8 (BITS . 15)) (TABLEBROWSER 9 (BITS . 15)) (TABLEBROWSER 10 (BITS . 15)) (TABLEBROWSER 11 (BITS . 15)) (TABLEBROWSER 12 POINTER) (TABLEBROWSER 14 POINTER) ( TABLEBROWSER 16 POINTER) (TABLEBROWSER 18 POINTER) (TABLEBROWSER 20 POINTER) (TABLEBROWSER 22 POINTER) (TABLEBROWSER 24 POINTER) (TABLEBROWSER 26 POINTER) (TABLEBROWSER 28 POINTER) (TABLEBROWSER 30 POINTER) (TABLEBROWSER 32 POINTER) (TABLEBROWSER 34 POINTER) (TABLEBROWSER 36 POINTER) (TABLEBROWSER 38 POINTER) (TABLEBROWSER 40 POINTER) (TABLEBROWSER 42 POINTER) (TABLEBROWSER 44 POINTER) ( TABLEBROWSER 46 POINTER))) (QUOTE 48)) (/DECLAREDATATYPE (QUOTE TABLEITEM) (QUOTE (FLAG FLAG FLAG FLAG FLAG POINTER WORD)) (QUOTE ((TABLEITEM 0 (FLAGBITS . 0)) (TABLEITEM 0 (FLAGBITS . 16)) (TABLEITEM 0 (FLAGBITS . 32)) (TABLEITEM 0 (FLAGBITS . 48)) (TABLEITEM 0 (FLAGBITS . 64)) (TABLEITEM 2 POINTER) (TABLEITEM 1 (BITS . 15)))) (QUOTE 4)) (RPAQQ TB.LEFT.MARGIN 8) (CONSTANTS TB.LEFT.MARGIN) (PUTPROPS TABLEBROWSERDECLS COPYRIGHT ("Venue & Xerox Corporation" 1985 1988 1990 1993 1999)) NIL \ No newline at end of file diff --git a/obsolete/library/TBDECLS b/obsolete/library/TBDECLS deleted file mode 100644 index d9b78084..00000000 --- a/obsolete/library/TBDECLS +++ /dev/null @@ -1,150 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") -(FILECREATED "27-Sep-94 15:03:22" {DSK}library>TBDECLS.;3 7831 - - changes to%: (RECORDS TABLEBROWSER TABLEITEM) - - previous date%: "20-Jan-93 14:52:38" {DSK}library>TBDECLS.;2) - - -(* ; " -Copyright (c) 1985, 1988, 1990, 1993, 1994 by Venue. All rights reserved. -") - -(PRETTYCOMPRINT TBDECLSCOMS) - -(RPAQQ TBDECLSCOMS ((RECORDS TABLEBROWSER TABLEITEM) - (CONSTANTS TB.LEFT.MARGIN))) -(DECLARE%: EVAL@COMPILE - -(DATATYPE TABLEBROWSER ((TBREADY FLAG) - (TBHEIGHTEXPLICIT FLAG) (* ; - "True if creator set explicit item height or baseline") - (NIL 6 FLAG) - (TBITEMS POINTER) (* ; "List of items in this browser") - (TB#ITEMS WORD) (* ; "Number of items") - (TB#DELETED WORD) (* ; "Number of items marked deleted") - (TB#LINESPERITEM WORD) (* ; - "Number of lines occupied by each item, normally 1 (dunno if any other values work)") - (TBFIRSTSELECTEDITEM WORD) (* ; - "Number of first selected item. If none selected, is > TB#ITEMS") - (TBLASTSELECTEDITEM WORD) (* ; - "Number of last selected item. If none selected, is 0") - (TBITEMHEIGHT WORD) (* ; - "Height of an item, i.e., fontheight*linesperitem") - (TBMAXXPOS WORD) (* ; - "The largest x-position a user printfn has printed to") - (TBFONTHEIGHT WORD) (* ; "Height, ascent, descent of font") - (TBFONTASCENT WORD) - (TBBASELINE WORD) - (TBWINDOW POINTER) (* ; - "Pointer to the display window. Need to snap this link when browser is closed") - (TBLOCK POINTER) (* ; - "Monitor lock guarding some browser operations") - (TBUSERDATA POINTER) (* ; "Arbitrary user storage") - (TBFONT POINTER) (* ; "Pointer to font used by display") - (TBEXTENT POINTER) (* ; - "Window's extent, updated as items are added, deleted, or printfn prints farther to right") - (TBUPDATEFROMHERE POINTER) (* ; - "If changes have occurred while shrunk, this gives the # of first item that needs redisplay") - (TBCOLUMNS POINTER) (* ; - "Number of columns--not yet implemented") - (TBPRINTFN POINTER) (* ; - "(Browser Item Window) -- displays Item at current line position in window") - (TBCOPYFN POINTER) (* ; - "(Browser Item) -- copy selects Item") - (TBFONTCHANGEFN POINTER) (* ; - "(Browser Window) -- called when tb.set.font changes the font") - (TBCLOSEFN POINTER) (* ; - "(Browser Window Close/Shrink) -- called when you try to close or shrink window") - (TBAFTERCLOSEFN POINTER) (* ; - "(Browser Window) -- called to cleanup AFTER a closew") - (TBTITLEEVENTFN POINTER) (* ; - "(Window Browser) -- handles button event in browser's title") - (TBLINETHICKNESS POINTER) (* ; - "Thickness of line for deletions (normally 1)") - (TBORIGIN POINTER) (* ; - "Y position of the top of the first item") - (TBTAILHINT POINTER) (* ; - "A tail of TBITEMS, used to speed up TB.NTH.ITEM") - (TBHEADINGWINDOW POINTER) (* ; - "An optional %"header window%" that should be horizontally scrolled in synchrony with this one") - (NIL POINTER))) - -(DATATYPE TABLEITEM ((TISELECTED FLAG) - (TIDELETED FLAG) - (TIUNDELETABLE FLAG) - (TIUNSELECTABLE FLAG) - (TIUNCOPYSELECTABLE FLAG) - (NIL 3 FLAG) - (TIDATA POINTER) - (TI# WORD) - (NIL WORD))) -) - -(/DECLAREDATATYPE 'TABLEBROWSER - '(FLAG FLAG FLAG FLAG FLAG FLAG FLAG FLAG POINTER WORD WORD WORD WORD WORD WORD WORD WORD WORD - WORD POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER - POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER) - '((TABLEBROWSER 0 (FLAGBITS . 0)) - (TABLEBROWSER 0 (FLAGBITS . 16)) - (TABLEBROWSER 0 (FLAGBITS . 32)) - (TABLEBROWSER 0 (FLAGBITS . 48)) - (TABLEBROWSER 0 (FLAGBITS . 64)) - (TABLEBROWSER 0 (FLAGBITS . 80)) - (TABLEBROWSER 0 (FLAGBITS . 96)) - (TABLEBROWSER 0 (FLAGBITS . 112)) - (TABLEBROWSER 0 POINTER) - (TABLEBROWSER 2 (BITS . 15)) - (TABLEBROWSER 3 (BITS . 15)) - (TABLEBROWSER 4 (BITS . 15)) - (TABLEBROWSER 5 (BITS . 15)) - (TABLEBROWSER 6 (BITS . 15)) - (TABLEBROWSER 7 (BITS . 15)) - (TABLEBROWSER 8 (BITS . 15)) - (TABLEBROWSER 9 (BITS . 15)) - (TABLEBROWSER 10 (BITS . 15)) - (TABLEBROWSER 11 (BITS . 15)) - (TABLEBROWSER 12 POINTER) - (TABLEBROWSER 14 POINTER) - (TABLEBROWSER 16 POINTER) - (TABLEBROWSER 18 POINTER) - (TABLEBROWSER 20 POINTER) - (TABLEBROWSER 22 POINTER) - (TABLEBROWSER 24 POINTER) - (TABLEBROWSER 26 POINTER) - (TABLEBROWSER 28 POINTER) - (TABLEBROWSER 30 POINTER) - (TABLEBROWSER 32 POINTER) - (TABLEBROWSER 34 POINTER) - (TABLEBROWSER 36 POINTER) - (TABLEBROWSER 38 POINTER) - (TABLEBROWSER 40 POINTER) - (TABLEBROWSER 42 POINTER) - (TABLEBROWSER 44 POINTER) - (TABLEBROWSER 46 POINTER)) - '48) - -(/DECLAREDATATYPE 'TABLEITEM '(FLAG FLAG FLAG FLAG FLAG FLAG FLAG FLAG POINTER WORD WORD) - '((TABLEITEM 0 (FLAGBITS . 0)) - (TABLEITEM 0 (FLAGBITS . 16)) - (TABLEITEM 0 (FLAGBITS . 32)) - (TABLEITEM 0 (FLAGBITS . 48)) - (TABLEITEM 0 (FLAGBITS . 64)) - (TABLEITEM 0 (FLAGBITS . 80)) - (TABLEITEM 0 (FLAGBITS . 96)) - (TABLEITEM 0 (FLAGBITS . 112)) - (TABLEITEM 0 POINTER) - (TABLEITEM 2 (BITS . 15)) - (TABLEITEM 3 (BITS . 15))) - '4) -(DECLARE%: EVAL@COMPILE - -(RPAQQ TB.LEFT.MARGIN 8) - - -(CONSTANTS TB.LEFT.MARGIN) -) -(PUTPROPS TBDECLS COPYRIGHT ("Venue" 1985 1988 1990 1993 1994)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL))) -STOP diff --git a/obsolete/library/TBDECLS.LCOM b/obsolete/library/TBDECLS.LCOM deleted file mode 100644 index 76e1a674..00000000 --- a/obsolete/library/TBDECLS.LCOM +++ /dev/null @@ -1 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") (FILECREATED "16-Aug-95 17:08:48" ("compiled on " {DSK}library>TBDECLS.;3) "30-Mar-95 20:33:04" bcompl'd in "Medley 14-Aug-95 ..." dated "14-Aug-95 15:27:48") (FILECREATED "27-Sep-94 15:03:22" {DSK}library>TBDECLS.;3 7831 changes to%: (RECORDS TABLEBROWSER TABLEITEM) previous date%: "20-Jan-93 14:52:38" {DSK}library>TBDECLS.;2) (PRETTYCOMPRINT TBDECLSCOMS) (RPAQQ TBDECLSCOMS ((RECORDS TABLEBROWSER TABLEITEM) (CONSTANTS TB.LEFT.MARGIN))) (DATATYPE TABLEBROWSER ((TBREADY FLAG) (TBHEIGHTEXPLICIT FLAG) (* ; "True if creator set explicit item height or baseline") (NIL 6 FLAG) (TBITEMS POINTER) (* ; "List of items in this browser") (TB#ITEMS WORD) (* ; "Number of items") (TB#DELETED WORD) (* ; "Number of items marked deleted") (TB#LINESPERITEM WORD) (* ; "Number of lines occupied by each item, normally 1 (dunno if any other values work)") ( TBFIRSTSELECTEDITEM WORD) (* ; "Number of first selected item. If none selected, is > TB#ITEMS") ( TBLASTSELECTEDITEM WORD) (* ; "Number of last selected item. If none selected, is 0") (TBITEMHEIGHT WORD) (* ; "Height of an item, i.e., fontheight*linesperitem") (TBMAXXPOS WORD) (* ; "The largest x-position a user printfn has printed to") (TBFONTHEIGHT WORD) (* ; "Height, ascent, descent of font") (TBFONTASCENT WORD) (TBBASELINE WORD) (TBWINDOW POINTER) (* ; "Pointer to the display window. Need to snap this link when browser is closed") (TBLOCK POINTER) (* ; "Monitor lock guarding some browser operations") (TBUSERDATA POINTER) (* ; "Arbitrary user storage") (TBFONT POINTER) (* ; "Pointer to font used by display") (TBEXTENT POINTER) (* ; "Window's extent, updated as items are added, deleted, or printfn prints farther to right") ( TBUPDATEFROMHERE POINTER) (* ; "If changes have occurred while shrunk, this gives the # of first item that needs redisplay") ( TBCOLUMNS POINTER) (* ; "Number of columns--not yet implemented") (TBPRINTFN POINTER) (* ; "(Browser Item Window) -- displays Item at current line position in window") (TBCOPYFN POINTER) (* ; "(Browser Item) -- copy selects Item") (TBFONTCHANGEFN POINTER) (* ; "(Browser Window) -- called when tb.set.font changes the font") (TBCLOSEFN POINTER) (* ; "(Browser Window Close/Shrink) -- called when you try to close or shrink window") (TBAFTERCLOSEFN POINTER) (* ; "(Browser Window) -- called to cleanup AFTER a closew") (TBTITLEEVENTFN POINTER) (* ; "(Window Browser) -- handles button event in browser's title") (TBLINETHICKNESS POINTER) (* ; "Thickness of line for deletions (normally 1)") (TBORIGIN POINTER) (* ; "Y position of the top of the first item") (TBTAILHINT POINTER) (* ; "A tail of TBITEMS, used to speed up TB.NTH.ITEM") (TBHEADINGWINDOW POINTER) (* ; "An optional %"header window%" that should be horizontally scrolled in synchrony with this one") (NIL POINTER))) (DATATYPE TABLEITEM ((TISELECTED FLAG) (TIDELETED FLAG) (TIUNDELETABLE FLAG) (TIUNSELECTABLE FLAG) ( TIUNCOPYSELECTABLE FLAG) (NIL 3 FLAG) (TIDATA POINTER) (TI# WORD) (NIL WORD))) (/DECLAREDATATYPE (QUOTE TABLEBROWSER) (QUOTE (FLAG FLAG FLAG FLAG FLAG FLAG FLAG FLAG POINTER WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER)) (QUOTE (( TABLEBROWSER 0 (FLAGBITS . 0)) (TABLEBROWSER 0 (FLAGBITS . 16)) (TABLEBROWSER 0 (FLAGBITS . 32)) ( TABLEBROWSER 0 (FLAGBITS . 48)) (TABLEBROWSER 0 (FLAGBITS . 64)) (TABLEBROWSER 0 (FLAGBITS . 80)) ( TABLEBROWSER 0 (FLAGBITS . 96)) (TABLEBROWSER 0 (FLAGBITS . 112)) (TABLEBROWSER 0 POINTER) ( TABLEBROWSER 2 (BITS . 15)) (TABLEBROWSER 3 (BITS . 15)) (TABLEBROWSER 4 (BITS . 15)) (TABLEBROWSER 5 (BITS . 15)) (TABLEBROWSER 6 (BITS . 15)) (TABLEBROWSER 7 (BITS . 15)) (TABLEBROWSER 8 (BITS . 15)) ( TABLEBROWSER 9 (BITS . 15)) (TABLEBROWSER 10 (BITS . 15)) (TABLEBROWSER 11 (BITS . 15)) (TABLEBROWSER 12 POINTER) (TABLEBROWSER 14 POINTER) (TABLEBROWSER 16 POINTER) (TABLEBROWSER 18 POINTER) ( TABLEBROWSER 20 POINTER) (TABLEBROWSER 22 POINTER) (TABLEBROWSER 24 POINTER) (TABLEBROWSER 26 POINTER) (TABLEBROWSER 28 POINTER) (TABLEBROWSER 30 POINTER) (TABLEBROWSER 32 POINTER) (TABLEBROWSER 34 POINTER) (TABLEBROWSER 36 POINTER) (TABLEBROWSER 38 POINTER) (TABLEBROWSER 40 POINTER) (TABLEBROWSER 42 POINTER) (TABLEBROWSER 44 POINTER) (TABLEBROWSER 46 POINTER))) (QUOTE 48)) (/DECLAREDATATYPE (QUOTE TABLEITEM) (QUOTE (FLAG FLAG FLAG FLAG FLAG FLAG FLAG FLAG POINTER WORD WORD) ) (QUOTE ((TABLEITEM 0 (FLAGBITS . 0)) (TABLEITEM 0 (FLAGBITS . 16)) (TABLEITEM 0 (FLAGBITS . 32)) ( TABLEITEM 0 (FLAGBITS . 48)) (TABLEITEM 0 (FLAGBITS . 64)) (TABLEITEM 0 (FLAGBITS . 80)) (TABLEITEM 0 (FLAGBITS . 96)) (TABLEITEM 0 (FLAGBITS . 112)) (TABLEITEM 0 POINTER) (TABLEITEM 2 (BITS . 15)) ( TABLEITEM 3 (BITS . 15)))) (QUOTE 4)) (RPAQQ TB.LEFT.MARGIN 8) (CONSTANTS TB.LEFT.MARGIN) (PUTPROPS TBDECLS COPYRIGHT ("Venue" 1985 1988 1990 1993 1994)) NIL \ No newline at end of file diff --git a/obsolete/library/UNIXPRINTCOMMAND b/obsolete/library/UNIXPRINTCOMMAND deleted file mode 100644 index 24fd2e1e..00000000 --- a/obsolete/library/UNIXPRINTCOMMAND +++ /dev/null @@ -1,78 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP") -(FILECREATED "20-May-92 15:34:18" |{DSK}nilsson>UNIXPRINTCOMMAND.;1| 3317 - - |changes| |to:| (VARS UNIXPRINTCOMMANDCOMS) - (FUNCTIONS FOOT) - (FNS |UnixPrintCommandForHP|)) - - -; Copyright (c) 1992 by Venue. All rights reserved. - -(PRETTYCOMPRINT UNIXPRINTCOMMANDCOMS) - -(RPAQQ UNIXPRINTCOMMANDCOMS ((FNS |UnixPrintCommand| |UnixPrintCommandForHP|))) -(DEFINEQ - -(|UnixPrintCommand| - (LAMBDA (PRINTER COPIES NAME TMPNAME) (* \; "Edited 20-May-92 14:26 by nilsson") - - (* |;;| "This function is called when the user wants to UNIXPRINT a file. It has to return a string that when sent to a shell prints the file tmpname. In the cub version this should look something like \"/usr/ucb/lpr tmpname\". The arguments to this function are:") - - (* |;;| " PRINTER - the name of the printer. Usually something like lw or plw.") - - (* |;;| "COPIES - how many copies of this job to be printed.") - - (* |;;| "NAME - the name of this job. This gets printed on the banner of your job.") - - (* |;;| - "TMPNAME - The name of the temporary file that contains the postscript code for this job. ") - - (* |;;| "Note the clever function UnixShellQuote. It converts any lisp name to a string that is quoted according to /bin/sh syntax") - - (CONCAT "/usr/ucb/lpr " (COND - (PRINTER (CONCAT "-P" (|UnixShellQuote| PRINTER) - " ")) - (T "")) - (COND - ((AND (FIXP COPIES) - (NEQ COPIES 1)) - (CONCAT "-#" COPIES " ")) - (T "")) - " -J" - (|UnixShellQuote| NAME) - " -r -s " TMPNAME))) - -(|UnixPrintCommandForHP| - (LAMBDA (PRINTER COPIES NAME TMPNAME) (* \; "Edited 20-May-92 15:33 by nilsson") - - (* |;;| "This function is called when the user wants to UNIXPRINT a file. It has to return a string that when sent to a shell prints the file tmpname. In the cub version this should look something like \"/usr/ucb/lpr tmpname\". The arguments to this function are:") - - (* |;;| " PRINTER - the name of the printer. Usually something like lw or plw.") - - (* |;;| "COPIES - how many copies of this job to be printed.") - - (* |;;| "NAME - the name of this job. This gets printed on the banner of your job.") - - (* |;;| - "TMPNAME - The name of the temporary file that contains the postscript code for this job. ") - - (* |;;| "Note the clever function UnixShellQuote. It converts any lisp name to a string that is quoted according to /bin/sh syntax") - - (CONCAT "/usr/ucb/lp " (* \; "HPUX uses lp instead.") - (COND - (PRINTER (CONCAT "-P" (|UnixShellQuote| PRINTER) - " ")) - (T "")) - (COND - ((AND (FIXP COPIES) - (NEQ COPIES 1)) - (CONCAT "-#" COPIES " ")) - (T "")) - " -J" - (|UnixShellQuote| NAME) - " -r -s " TMPNAME))) -) -(PUTPROPS UNIXPRINTCOMMAND COPYRIGHT ("Venue" 1992)) -(DECLARE\: DONTCOPY - (FILEMAP (NIL (472 3241 (|UnixPrintCommand| 482 . 1843) (|UnixPrintCommandForHP| 1845 . 3239))))) -STOP diff --git a/obsolete/library/UNIXPRINTCOMMAND.LCOM b/obsolete/library/UNIXPRINTCOMMAND.LCOM deleted file mode 100644 index e5fd1c62298aaa793077acb0301926b73f449bdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1273 zcmbW1&2F1O5P*HC)K(Qzk3FTM?V)hMF<@d$BC7=Bgv5q5;3$!DAvTJw60pFQYL(vl zKvk>0NnfCE&`0PjI6sP=OD?ms%*^iWH#6{Et7kiw*t7eVXgfU@c09}I2F79E0&;Hl z3G7hAJT;DRYdeAE^=+RLf#X?(iN1l=1tLr0NtlRj1td*xw)Dmx0iKN0oB1q`CXgmT zfGfUs{nKv;^VMRSCY^W^b>dk*AEy~puCg#&bw-YTPCdNGbO!^&>DKq9LcrLT=#Cd+ zTLwwiB~_Oc0>u?OKK?ig7{U+feLZ^p^;0c8!zah_xH+wufOky=oUr(tp(<(SnX)eGRy4A1A_aR9#07l7}L z95b+8$A_Nl2J8c>#VDD5q1h~1nCZ<;m`r+Uc1#OF;5IA;=v|HDZBQT>P{$ZpV1o>6 zMFP{Mw&mlu29#JWPk`EGtyX)HqNsiP`L0@Dvt6maVcPdnH5B;$zSK%_c<*F#FPYoh z&;Ne?tz1i4#{T$I<24O$c1$CHz1FR!s@22%X%xr9Wx9w8knj8?ZNn;Xj@{>Y&=jm4 zR<8v_{6Ju@fg3RcF~_ypW}6dKnm`CBrIf1xNyY$*CLp`ZJlkE4uXf{k23YkCjuqkO zzzmT?1@oFAc|OrsEc{8LI9Y3=E%{bM66Hf45>@W}kiugtPHh`5_i+KN5QC~QMhvRT zIIf|pNUVa2bP;MPu~aMoJA4aN#+0X?6$BU9*kz|}?|6>)s4*OFH3GlA`*D(<8VGjl iD4?E8{f#4$620*3qvHVoL}yX5j4=ClTgEYBef1xy`9P5X diff --git a/obsolete/library/new/PCTREE b/obsolete/library/new/PCTREE deleted file mode 100644 index b6020cf4..00000000 --- a/obsolete/library/new/PCTREE +++ /dev/null @@ -1,572 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "22-Mar-95 18:19:18" {DSK}library>new>PCTREE.;1 28446 - - changes to%: (FNS \INSERTTREE \DELETETREE \SPLITTREE \TEDIT.UPDATETREE) - - previous date%: " 7-Oct-94 17:44:31" {DSK}library>PCTREE.;5) - - -(* ; " -Copyright (c) 1990, 1991, 1993, 1994, 1995 by Venue & Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT PCTREECOMS) - -(RPAQQ PCTREECOMS - [ - (* ;; "Balanced tree PIECE TABLE supporting functions") - - (FILES TEDITDCL) - (DECLARE%: EVAL@COMPILE DONTCOPY - - (* ;; "\WORDSINBTREEMAIN = # of words in the child-pointers & offsets section of the node -- everything before SPARE5 (the overflow place).") - - - (* ;; - "\BTREEMAXCOUNT = number of children in a full node = maximum value for a node's COUNT field.") - - - (* ;; "\BTREELASTREALOFFSET = offset of last real space for a child entry in the node ( = \WORDSINBTREEMAIN - 4)") - - (CONSTANTS (\BTREEMAXENTRIES 8) - (\BTREEMAXCOUNT 8) - (\BTREEWORDSPERENTRY 4) - (\WORDSINBTREEMAIN (UNFOLD \BTREEMAXENTRIES 4)) - (\BTREELASTREALOFFSET (UNFOLD (SUB1 \BTREEMAXENTRIES) - 4)) - (\BTREETOPHALFOFFSET (UNFOLD (LRSH \BTREEMAXENTRIES 1) - 4))) - (FILES (LOADCOMP) - TEDITDECLS)) - (FNS UPDATEPCNODES FINDPCNODE \FIRSTNODE \DELETETREE \INSERTTREE \LASTNODE \MATCHPCS - \SPLITTREE \TEDIT.UPDATETREE \TEDIT.PIECE-CHNO \TEDIT.SET-TOTLEN) - (FNS DISPTREE TREEGRAPHNODE) - (RECORDS BTREENODE) - (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA) - (NLAML) - (LAMA]) - - - -(* ;; "Balanced tree PIECE TABLE supporting functions") - - -(FILESLOAD TEDITDCL) -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RPAQQ \BTREEMAXENTRIES 8) - -(RPAQQ \BTREEMAXCOUNT 8) - -(RPAQQ \BTREEWORDSPERENTRY 4) - -(RPAQ \WORDSINBTREEMAIN (UNFOLD \BTREEMAXENTRIES 4)) - -(RPAQ \BTREELASTREALOFFSET (UNFOLD (SUB1 \BTREEMAXENTRIES) - 4)) - -(RPAQ \BTREETOPHALFOFFSET (UNFOLD (LRSH \BTREEMAXENTRIES 1) - 4)) - - -(CONSTANTS (\BTREEMAXENTRIES 8) - (\BTREEMAXCOUNT 8) - (\BTREEWORDSPERENTRY 4) - (\WORDSINBTREEMAIN (UNFOLD \BTREEMAXENTRIES 4)) - (\BTREELASTREALOFFSET (UNFOLD (SUB1 \BTREEMAXENTRIES) - 4)) - (\BTREETOPHALFOFFSET (UNFOLD (LRSH \BTREEMAXENTRIES 1) - 4))) -) - - -(FILESLOAD (LOADCOMP) - TEDITDECLS) -) -(DEFINEQ - -(UPDATEPCNODES - [LAMBDA (PC DELTA) (* ; "Edited 21-Apr-93 16:09 by jds") - - (* ;; "ADD DELTA TO CHNUM IN NEXTALL NODES OF TOPNODE.") - - (LET ((UPWARD (fetch (PIECE PTREENODE) of PC))) - (while UPWARD do (for I from 0 by 4 as ITEM from 1 - to (fetch (BTREENODE COUNT) of UPWARD) - when (EQ PC (\GETBASEPTR UPWARD I)) - do [\PUTBASEFIXP UPWARD (IPLUS I 2) - (IPLUS DELTA (\GETBASEFIXP UPWARD (IPLUS I 2] - (add (fetch (BTREENODE TOTLEN) of UPWARD) - DELTA) - (SETQ PC UPWARD) - (SETQ UPWARD (fetch (BTREENODE UPWARD) of PC)) - (RETURN) finally (HELP "Piece not in its TREENODE"]) - -(FINDPCNODE - [LAMBDA (PC PCTB) (* ; "Edited 13-Apr-93 15:00 by jds") - - (* ;; "Given a piece and the pctb it's in, return pcnode") - - (fetch (PIECE PTREENODE) of PC]) - -(\FIRSTNODE - [LAMBDA (TREE) (* ; "Edited 14-Apr-93 02:06 by jds") - (LET ((COUNT (fetch (BTREENODE COUNT) of TREE)) - CHILD) - (SETQ CHILD (\GETBASEPTR TREE 0)) - (COND - ((type? BTREENODE CHILD) - (\FIRSTNODE CHILD)) - (T TREE]) - -(\DELETETREE - [LAMBDA (OLD PCNODE) (* ; - "Edited 21-Mar-95 15:29 by sybalsky:mv:envos") - - (* ;; "Removes OLD from PCNODE. OLD is either a piece or tree node.") - - (UNINTERRUPTABLY - (LET* ((OLDLEN (ffetch (BTREENODE TOTLEN) of PCNODE)) - NEWLEN INCHNO AFTERFLG NODE-COUNT ITEM# BB) - - (* ;; "NEW CODE") - - (SETQ NODE-COUNT (fetch (BTREENODE COUNT) of PCNODE)) - - (* ;; "Find OLD, .") - - (for old ITEM# from 0 to (LLSH (SUB1 NODE-COUNT) - 2) by 4 - when (EQ OLD (\GETBASEPTR PCNODE ITEM#)) do (RETURN) - finally (HELP "Piece/node not in PCNODE")) - - (* ;; "Update the previous piece's length, if appropriate:") - - (SETQ BB (\ADDBASE PCNODE ITEM#)) - (\RPLPTR BB 0 NIL) - [for I from 0 to (IDIFFERENCE \BTREELASTREALOFFSET ITEM#) by 4 - do (\PUTBASEPTR BB I (\GETBASEPTR BB (IPLUS I 4))) - (\PUTBASEFIXP BB (IPLUS I 2) - (\GETBASEFIXP BB (IPLUS I 6] - (\PUTBASEPTR PCNODE \BTREELASTREALOFFSET NIL) (* ; - "Because it's been copied, clear the old value before the refcnt-er gets to it.") - - (* ;; " If adding this piece EMPTIES the tree node, DELETE it.") - - (* ;; "FIXMI -- This should coalesce adjacent nodes that are too empty!") - - [COND - ((IEQP NODE-COUNT 1) - (\DELETETREE PCNODE (fetch (BTREENODE UPWARD) of PCNODE))) - (T (* ; - "No split, so update upper nodes with delta-length.") - [SETQ NEWLEN - (replace (BTREENODE TOTLEN) of PCNODE - with (for I from 2 to NODE-COUNT as ITEM# from 2 - by 4 sum (\GETBASEFIXP PCNODE ITEM#] - (replace (BTREENODE COUNT) of PCNODE with (SUB1 NODE-COUNT)) - (\TEDIT.UPDATETREE PCNODE (IDIFFERENCE NEWLEN OLDLEN] - - (* ;; "END NEW CODE") - - 1))]) - -(\INSERTTREE - [LAMBDA (NEW OLD PCNODE NEW-PREVLEN NEW-OLDLEN PREV) - (* ; - "Edited 22-Mar-95 15:37 by sybalsky:mv:envos") - - (* ;; "inserts NEW in front of OLD in PCNODE. NEW/OLD are either pieces or tree nodes.") - - (* ;; "If NEWE-PREVLEN is non-NIL, it's a DELTA for updating parents of THE PIECE BEFORE OLD. This is used by \SPLITPIECE to pass down the new shortened length for the original piece.") - - (UNINTERRUPTABLY - (LET* ((OLDLEN (ffetch (BTREENODE TOTLEN) of PCNODE)) - NEWLEN INCHNO AFTERFLG NODE-COUNT ITEM# BB) - - (* ;; "NEW CODE") - - (SETQ NODE-COUNT (fetch (BTREENODE COUNT) of PCNODE)) - - (* ;; "Find OLD, and insert the NEW piece (and length) in front of it.") - - [for old ITEM# from 0 to (LLSH (SUB1 NODE-COUNT) - 2) by 4 - when (EQ OLD (\GETBASEPTR PCNODE ITEM#)) do (RETURN) - finally (COND - (OLD (HELP "Old piece not in this PCNODE.")) - (T (* ; "INSERTING FIRST PIECE") - (SETQ ITEM# 0] - (OR NEW (HELP "Inserting empty item")) - - (* ;; "Update the previous piece's length, if appropriate:") - - [AND NEW-PREVLEN (COND - ((ZEROP ITEM#) - - (* ;; -"The hard way -- the previous piece is in a prior btree node, so we have to go there to update it.") - - (LET* ((NODE (fetch (PIECE PTREENODE) of PREV))) - (UPDATEPCNODES PREV NEW-PREVLEN))) - (T - (* ;; "Easy way -- it's in this node. Update it in place.") - - (\PUTBASEFIXP PCNODE (IDIFFERENCE ITEM# 2) - (IPLUS NEW-PREVLEN (\GETBASEFIXP PCNODE (IDIFFERENCE - ITEM# 2] - (COND - (NEW-OLDLEN (\PUTBASEFIXP PCNODE (IPLUS ITEM# 2) - NEW-OLDLEN))) - (SETQ BB (\ADDBASE PCNODE ITEM#)) - (\RPLPTR PCNODE \WORDSINBTREEMAIN NIL) (* ; - "Clean out the slot that's about to be copied over.") - (\BLT (\ADDBASE BB 4) - BB - (IDIFFERENCE \WORDSINBTREEMAIN ITEM#)) - (\PUTBASEPTR PCNODE ITEM# NIL) (* ; - "Because it's been copied, clear the old value before the refcnt-er gets to it.") - (\RPLPTR PCNODE ITEM# NEW) - (COND - ((type? PIECE NEW) - (\PUTBASEFIXP PCNODE (IPLUS ITEM# 2) - (fetch (PIECE PLEN) of NEW)) - (replace (PIECE PTREENODE) of NEW with PCNODE)) - ((type? BTREENODE NEW) (* ; "Inserting a NODE") - (\PUTBASEFIXP PCNODE (IPLUS ITEM# 2) - (fetch (BTREENODE TOTLEN) of NEW)) - (replace (BTREENODE UPWARD) of NEW with PCNODE)) - (T (\ILLEGAL.ARG NEW))) - [SETQ NEWLEN (replace (BTREENODE TOTLEN) of PCNODE - with (for I from 0 to NODE-COUNT as ITEM# - from 2 by 4 sum (\GETBASEFIXP PCNODE ITEM#] - - (* ;; " If adding this piece overflows the tree node, split it.") - - [COND - ((IEQP NODE-COUNT \BTREEMAXCOUNT) (* ; - "Tree node is full, so have to split.") - (\SPLITTREE PCNODE OLD NEW)) - (T (* ; - "No split, so update upper nodes with delta-length.") - (replace (BTREENODE COUNT) of PCNODE with (ADD1 NODE-COUNT)) - (\TEDIT.UPDATETREE PCNODE (IDIFFERENCE NEWLEN OLDLEN] - - (* ;; "END NEW CODE") - - 1))]) - -(\LASTNODE - [LAMBDA (TREE) (* ; "Edited 14-Apr-93 16:29 by jds") - (LET ((COUNT (fetch (BTREENODE COUNT) of TREE)) - CHILD) - (for ITEM# from (LLSH (IDIFFERENCE COUNT 1) - 2) to 0 by -4 when (SETQ CHILD (\GETBASEPTR TREE - ITEM#)) - do (RETURN (COND - ((type? BTREENODE CHILD) - (\LASTNODE CHILD)) - (T TREE]) - -(\MATCHPCS - [LAMBDA (PCNODE) (* ; "Edited 5-May-93 17:57 by jds") - - (* ;; "Make sure that any pieces pointed to this node point back to this node.") - - (bind PC for OFFSET from 0 to \WORDSINBTREEMAIN by 4 as I from 1 - to (fetch (BTREENODE COUNT) of PCNODE) do (SETQ PC (\GETBASEPTR PCNODE OFFSET) - ) - (COND - ((type? PIECE PC) - (replace (PIECE PTREENODE) - of PC with PCNODE)) - ((type? BTREENODE PC) - (replace (BTREENODE UPWARD) - of PC with PCNODE]) - -(\SPLITTREE - [LAMBDA (PCNODE) (* ; - "Edited 21-Mar-95 15:26 by sybalsky:mv:envos") - - (* ;; "We're adding piece NEW in front of OLD. OLD is represented in the B-tree node PCNODE, which is full.") - - (* ;; "Split PCNODE in two and propogate any changes upward.") - - (UNINTERRUPTABLY - [LET ((UPWARD (fetch (BTREENODE UPWARD) of PCNODE)) - COUNT ITEM# NEW1 NEW2) - (COND - (UPWARD - - (* ;; - "Easy case: This is not the root node, so split the node and propogate up.") - - (SETQ NEW1 (create BTREENODE using PCNODE)) - - (* ;; "Clean out upper 3 child entries, leaving only the lower 2. Have to tell GC about actual child slots being set to NIL (hence \RPLPTRs):") - - (for OFST from \BTREETOPHALFOFFSET to \WORDSINBTREEMAIN - by 4 do (\RPLPTR NEW1 OFST NIL) - (\PUTBASEFIXP NEW1 (IPLUS OFST 2) - 0)) - (replace (BTREENODE COUNT) of NEW1 with (LRSH \BTREEMAXENTRIES 1)) - (\TEDIT.SET-TOTLEN NEW1) - (\MATCHPCS NEW1) - - (* ;; - "Now clean up the old piece, to contain only the upper 3 original children:") - - (for OFST from 0 to (SUB1 \BTREETOPHALFOFFSET) by 4 - do (* ; - "For GC, have to tell it we've dropped pointers to first N/2 pieces") - (\RPLPTR PCNODE OFST NIL)) - - (* ;; "Move upper N/2+1 down") - - [for OFST from 0 to \BTREETOPHALFOFFSET by 4 as UPPEROFST - from \BTREETOPHALFOFFSET by 4 - do (\PUTBASEPTR PCNODE OFST (\GETBASEPTR PCNODE UPPEROFST)) - (\PUTBASEFIXP PCNODE (IPLUS 2 OFST) - (\GETBASEFIXP PCNODE (IPLUS 2 UPPEROFST] - - (* ;; "And clean out upper 2 slots, without the GC seeing it:") - - (for OFST from (IPLUS \BTREEWORDSPERENTRY \BTREETOPHALFOFFSET) - to \WORDSINBTREEMAIN by \BTREEWORDSPERENTRY - do (\PUTBASEPTR PCNODE OFST NIL) - (\PUTBASEFIXP PCNODE (IPLUS OFST 2) - 0)) - (replace (BTREENODE COUNT) of PCNODE with (ADD1 (LRSH - \BTREEMAXENTRIES - 1))) - (\TEDIT.SET-TOTLEN PCNODE) - (SETQ COUNT (fetch (BTREENODE COUNT) of UPWARD)) - (\INSERTTREE NEW1 PCNODE UPWARD NIL (fetch (BTREENODE TOTLEN) - of PCNODE))) - (T - (* ;; "Hard case: This is the root node. We need to create 2 new nodes, put the split parts there, and re-use this node as the root.") - - (SETQ NEW1 (create BTREENODE using PCNODE)) - (for OFST from \BTREETOPHALFOFFSET to \WORDSINBTREEMAIN by 4 - do (\RPLPTR NEW1 OFST NIL) - (\PUTBASEFIXP NEW1 (IPLUS OFST 2) - 0)) - (replace (BTREENODE UPWARD) of NEW1 with PCNODE) - (replace (BTREENODE COUNT) of NEW1 with (LRSH \BTREEMAXENTRIES 1)) - (\TEDIT.SET-TOTLEN NEW1) - (\MATCHPCS NEW1) - - (* ;; "--") - - (SETQ NEW2 (create BTREENODE using PCNODE)) - (for OFST from 0 to (SUB1 \BTREETOPHALFOFFSET) by 4 - do (* ; - "For GC, have to tell it we've dropped pointers to first N/2 pieces") - (\RPLPTR NEW2 OFST NIL)) - [for OFST from 0 to \BTREETOPHALFOFFSET by 4 as UPPEROFST - from \BTREETOPHALFOFFSET by 4 - do (\PUTBASEPTR NEW2 OFST (\GETBASEPTR NEW2 UPPEROFST)) - (\PUTBASEFIXP NEW2 (IPLUS 2 OFST) - (\GETBASEFIXP NEW2 (IPLUS 2 UPPEROFST] - (for OFST from (IPLUS \BTREEWORDSPERENTRY \BTREETOPHALFOFFSET) - to \WORDSINBTREEMAIN by \BTREEWORDSPERENTRY - do (\PUTBASEPTR NEW2 OFST NIL) - (\PUTBASEFIXP NEW2 (IPLUS OFST 2) - 0)) - (replace (BTREENODE UPWARD) of NEW2 with PCNODE) - (replace (BTREENODE COUNT) of NEW2 with (ADD1 (LRSH \BTREEMAXENTRIES 1 - ))) - (\TEDIT.SET-TOTLEN NEW2) - (\MATCHPCS NEW2) - - (* ;; "Now clean out the top-level node, and fill it in with its new children.") - - (for OFST from 0 to \WORDSINBTREEMAIN by \BTREEWORDSPERENTRY - do - - (* ;; "Clean out the entries in the node, so we don't over-write them by mistake, thus losing refcount sync.") - - (\RPLPTR PCNODE OFST NIL) - (\PUTBASEFIXP PCNODE (IPLUS 2 OFST) - 0)) - (\RPLPTR PCNODE 0 NEW1) (* ; "Add first new node") - (\PUTBASEFIXP PCNODE 2 (ffetch (BTREENODE TOTLEN) of NEW1)) - (\RPLPTR PCNODE 4 NEW2) (* ; "And the second....") - (\PUTBASEFIXP PCNODE 6 (ffetch (BTREENODE TOTLEN) of NEW2)) - (freplace (BTREENODE COUNT) of PCNODE with 2) - (freplace (BTREENODE TOTLEN) of PCNODE with (IPLUS (ffetch - (BTREENODE TOTLEN) - of NEW1) - (ffetch - (BTREENODE TOTLEN) - of NEW2])]) - -(\TEDIT.UPDATETREE - [LAMBDA (PCNODE DELTA) (* ; - "Edited 21-Mar-95 14:40 by sybalsky:mv:envos") - - (* ;; "The size of the text represented by PCNODE has grown by DELTA. Update all of PCNODE's parents to reflect the change in length.") - - (LET ((UPWARD (fetch (BTREENODE UPWARD) of PCNODE))) - (while UPWARD do - - (* ;; "Keep going up in the tree til we hit the top.") - - (for old ITEM# from 0 by 4 as I from 1 - to (ffetch (BTREENODE COUNT) of UPWARD) - when (EQ (\GETBASEPTR UPWARD ITEM#) - PCNODE) - do (\PUTBASEFIXP UPWARD (IPLUS ITEM# 2) - (IPLUS (\GETBASEFIXP UPWARD (IPLUS ITEM# 2)) - DELTA)) - (add (fetch (BTREENODE TOTLEN) of UPWARD) - DELTA) - (RETURN) FINALLY (HELP "PCNODE not in upward node.")) - (SETQ PCNODE UPWARD) - (SETQ UPWARD (fetch (BTREENODE UPWARD) of PCNODE]) - -(\TEDIT.PIECE-CHNO - [LAMBDA (PC) - (LET ((PCNODE (fetch (PIECE PTREENODE) of PC)) - (CHARCOUNT 0)) - (while PCNODE do [add CHARCOUNT (for OFST from 0 by 4 - while (NEQ PC (\GETBASEPTR PCNODE OFST)) - sum (\GETBASEFIXP PCNODE (IPLUS OFST 2] - (SETQ PC PCNODE) - (SETQ PCNODE (fetch (BTREENODE UPWARD) of PCNODE))) - (ADD1 CHARCOUNT]) - -(\TEDIT.SET-TOTLEN - [LAMBDA (PCNODE) (* ; "Edited 9-May-93 15:40 by jds") - - (* ;; "Fix the TOTLEN field of a node to match the sum of its childrens' lengths") - - (replace (BTREENODE TOTLEN) of PCNODE with (for I from 1 - to (fetch (BTREENODE COUNT) - of PCNODE) as ITEM# - from 2 by 4 - sum (\GETBASEFIXP PCNODE ITEM#]) -) -(DEFINEQ - -(DISPTREE - [LAMBDA (TREE DEPTH) (* ; "Edited 13-Apr-90 15:00 by ON") - (LET [(G (TREEGRAPHNODE TREE NIL (OR (NUMBERP DEPTH) - T] - (SHOWGRAPH (LAYOUTGRAPH (CADR G) - (LIST (CAR G)) - '(VERTICAL)) - NIL - #'(LAMBDA (X) - (INSPECT (fetch NODEID of X]) - -(TREEGRAPHNODE - [LAMBDA (TREE PARENT DEPTH) (* ; "Edited 12-Jun-90 10:33 by mitani") - (LET (THISNODE NEWDEPTH NODEID LONODES HINODES BFNODE BFNODEID RANKNODE RANKNODEID) - (COND - ((ATOM TREE) - (LIST [fetch NODEID of (SETQ THISNODE (NODECREATE (CONS) - TREE NIL NIL (LIST PARENT] - (LIST THISNODE))) - ((OR (EQ DEPTH T) - (AND (NUMBERP DEPTH) - (>= DEPTH 0))) - (SETQ NEWDEPTH (COND - ((NUMBERP DEPTH) - (SUB1 DEPTH)) - (T DEPTH))) - (SETQ NODEID (fetch (PCTNODE PCE) of TREE)) - (SETQ LONODES (TREEGRAPHNODE (fetch (PCTNODE LO) of TREE) - NODEID NEWDEPTH)) - (SETQ HINODES (TREEGRAPHNODE (fetch (PCTNODE HI) of TREE) - NODEID NEWDEPTH)) - (SETQ BFNODE (NODECREATE (SETQ BFNODEID (CONS)) - (fetch (PCTNODE BF) of TREE) - NIL NIL (LIST NODEID))) - (SETQ RANKNODE (NODECREATE (SETQ RANKNODEID (CONS)) - (fetch (PCTNODE RANK) of TREE) - NIL NIL (LIST NODEID))) - [SETQ THISNODE (NODECREATE NODEID (fetch (PCTNODE CHNUM) of TREE) - NIL - (LIST (CAR LONODES) - BFNODEID RANKNODEID (CAR HINODES)) - (AND PARENT (LIST PARENT] - (LIST (fetch NODEID of THISNODE) - (APPEND (LIST THISNODE BFNODE RANKNODE) - (CADR LONODES) - (CADR HINODES]) -) -(DECLARE%: EVAL@COMPILE - -(DATATYPE BTREENODE ( - (* ;; "An order-4 BTREE node for representing the piece table for TEdit.") - - DOWN1 - (DLEN1 FIXP) - DOWN2 - (DLEN2 FIXP) - DOWN3 - (DLEN3 FIXP) - DOWN4 - (DLEN4 FIXP) - DOWN5 - (DLEN5 FIXP) - DOWN6 - (DLEN6 FIXP) - DOWN7 - (DLEN7 FIXP) - DOWN8 - (DLEN8 FIXP) - SPARE5 (* ; - "Used only to hold the extra piece when we're overflowing") - (SPARELEN FIXP) (* ; "So the code is easy and fast.") - (COUNT BITS 4) (* ; "# of children of this node") - (UPWARD XPOINTER) (* ; "Parent of this node, if any.") - (TOTLEN FIXP) (* ; - "Total length of this tree and subtrees") - )) -) - -(/DECLAREDATATYPE 'BTREENODE - '(POINTER FIXP POINTER FIXP POINTER FIXP POINTER FIXP POINTER FIXP POINTER FIXP POINTER FIXP - POINTER FIXP POINTER FIXP (BITS 4) - XPOINTER FIXP) - '((BTREENODE 0 POINTER) - (BTREENODE 2 FIXP) - (BTREENODE 4 POINTER) - (BTREENODE 6 FIXP) - (BTREENODE 8 POINTER) - (BTREENODE 10 FIXP) - (BTREENODE 12 POINTER) - (BTREENODE 14 FIXP) - (BTREENODE 16 POINTER) - (BTREENODE 18 FIXP) - (BTREENODE 20 POINTER) - (BTREENODE 22 FIXP) - (BTREENODE 24 POINTER) - (BTREENODE 26 FIXP) - (BTREENODE 28 POINTER) - (BTREENODE 30 FIXP) - (BTREENODE 32 POINTER) - (BTREENODE 34 FIXP) - (BTREENODE 32 (BITS . 3)) - (BTREENODE 36 XPOINTER) - (BTREENODE 38 FIXP)) - '40) -(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS - -(ADDTOVAR NLAMA ) - -(ADDTOVAR NLAML ) - -(ADDTOVAR LAMA ) -) -(PUTPROPS PCTREE COPYRIGHT ("Venue & Xerox Corporation" 1990 1991 1993 1994 1995)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (3019 23506 (UPDATEPCNODES 3029 . 4116) (FINDPCNODE 4118 . 4350) (\FIRSTNODE 4352 . 4709 -) (\DELETETREE 4711 . 7192) (\INSERTTREE 7194 . 11815) (\LASTNODE 11817 . 12460) (\MATCHPCS 12462 . -13586) (\SPLITTREE 13588 . 20764) (\TEDIT.UPDATETREE 20766 . 22243) (\TEDIT.PIECE-CHNO 22245 . 22824) -(\TEDIT.SET-TOTLEN 22826 . 23504)) (23507 25947 (DISPTREE 23517 . 23973) (TREEGRAPHNODE 23975 . 25945) -)))) -STOP diff --git a/obsolete/library/new/TEDIT b/obsolete/library/new/TEDIT deleted file mode 100644 index f05ba869..00000000 --- a/obsolete/library/new/TEDIT +++ /dev/null @@ -1,2226 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED " 4-May-95 10:37:05" {DSK}library>new>TEDIT.;5 139939 - - changes to%: (FNS \TEDIT.INSERT.PIECES TEDIT.COPY TEDIT.MOVE) - (FILES TEDITCOMMAND TEDITFILE TEDITFNKEYS TEDITHISTORY TEDITLOOKS TEDITPAGE - TEDITWINDOW) - - previous date%: "22-Mar-95 18:17:12" {DSK}library>new>TEDIT.;1) - - -(* ; " -Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1995 by Venue & Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT TEDITCOMS) - -(RPAQQ TEDITCOMS - [(FILES TEDITDECLS) - (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (\SCRATCHLEN 64)) - (FILES (LOADCOMP) - TEDITDECLS)) - (FILES PCTREE TEXTOFD TEDITCOMMAND TEDITSCREEN TEDITABBREV TEDITLOOKS) - (VARS (TEDIT.TERMSA.FONTS NIL) - (TEDIT.TENTATIVE NIL) - (TEDIT.DEFAULT.PROPS NIL) - (TEDIT.STARTUP.MONITORLOCK (CREATE.MONITORLOCK 'TEDIT.STARTUP)) - (TEDIT.RESTART.MENU (\CREATE.TEDIT.RESTART.MENU)) - (* ; - "Original was (CREATE MENU ITEMS _ '(NewEditProcess)).") - (* ; - "Changed by yabu.fx, for SUNLOADUP without DWIM.") - ) - (GLOBALVARS TEDIT.TENTATIVE TEDIT.DEFAULT.PROPS) - (FNS \TEDIT2 COERCETEXTOBJ TEDIT TEDIT.CHARWIDTH TEDIT.COPY TEDIT.DELETE - TEDIT.DO.BLUEPENDINGDELETE TEDIT.INSERT TEDIT.KILL TEDIT.MAPLINES TEDIT.MAPPIECES - TEDIT.MOVE TEDIT.QUIT TEDIT.STRINGWIDTH TEDIT.\INSERT TEXTOBJ TEXTSTREAM \TEDIT.INCLUDE - \TEDIT.INSERT.PIECES \TEDIT.MOVE.PIECEMAPFN \TEDIT.OBJECT.SHOWSEL \TEDIT.RESTARTFN - \TEDIT.CHARDELETE \TEDIT.COPY.PIECEMAPFN \TEDIT.DELETE \TEDIT.DIFFUSE.PARALOOKS - \TEDIT.FOREIGN.COPY? \TEDIT.QUIT \TEDIT.WORDDELETE \TEDIT1) - (P (MOVD? 'NILL 'OBJECTOUTOFTEDIT)) - (* ; - "HOOK for looked-string copy, etc. Used in \TEDIT.FOREIGN.COPY?.") - (COMS (FNS \CREATE.TEDIT.RESTART.MENU)) - (* ; - "Added by yabu.fx, for SUNLOADUP without DWIM.") - (COMS (* ; "Debugging functions") - (FNS PLCHAIN PRINTLINE SEEFILE)) - (COMS (* ; "Object-oriented editing") - (FNS TEDIT.INSERT.OBJECT TEDIT.EDIT.OBJECT TEDIT.FIND.OBJECT TEDIT.FIND.OBJECT.SUBTREE - TEDIT.PUT.OBJECT TEDIT.GET.OBJECT TEDIT.OBJECT.CHANGED)) - (FILES TEDITFIND TEDITHISTORY TEDITFILE TEDITWINDOW TEDITSELECTION IMAGEOBJ TFBRAVO TEDITHCPY - TEDITPAGE TEDITMENU TEDITFNKEYS) - (COMS (* ; "TEDIT Support information") - (E (SETQ TEDITSYSTEMDATE (DATE))) - (VARS TEDITSYSTEMDATE (TEDITSUPPORT "TEditSupport.PA")) - (FNS MAKETEDITFORM) - (P (ADDTOVAR LAFITESPECIALFORMS ("TEdit Report" 'MAKETEDITFORM - "Report a problem with TEdit")) - (SETQ LAFITEFORMSMENU NIL))) - (COMS (* ; - "LISTFILES Interface, so the system can decide if a file is a TEdit file.") - (ADDVARS (PRINTFILETYPES (TEDIT (TEST \TEDIT.FORMATTEDP1) - (EXTENSION (TEDIT]) - -(FILESLOAD TEDITDECLS) -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RPAQQ \SCRATCHLEN 64) - - -(CONSTANTS (\SCRATCHLEN 64)) -) - - -(FILESLOAD (LOADCOMP) - TEDITDECLS) -) - -(FILESLOAD PCTREE TEXTOFD TEDITCOMMAND TEDITSCREEN TEDITABBREV TEDITLOOKS) - -(RPAQQ TEDIT.TERMSA.FONTS NIL) - -(RPAQQ TEDIT.TENTATIVE NIL) - -(RPAQQ TEDIT.DEFAULT.PROPS NIL) - -(RPAQ TEDIT.STARTUP.MONITORLOCK (CREATE.MONITORLOCK 'TEDIT.STARTUP)) - -(RPAQ TEDIT.RESTART.MENU (\CREATE.TEDIT.RESTART.MENU)) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS TEDIT.TENTATIVE TEDIT.DEFAULT.PROPS) -) -(DEFINEQ - -(\TEDIT2 - [LAMBDA (TEXT WINDOW UNSPAWNED) (* ; "Edited 12-Jun-90 17:51 by mitani") - - (* ;; "Does the actual editing work, once TEDIT has OPENTEXTSTREAMed the thing to be edited.") - - (\TEDIT.COMMAND.LOOP (fetch (TEXTSTREAM TEXTOBJ) of TEXT)) - (* ; "Run the editing engine") - (CLOSEW WINDOW) (* ; "Close the edit window") - (\TEXTCLOSEF TEXT) (* ; "Close the underlying files") - (replace (STREAM ACCESSBITS) of TEXT with BothBits) - (* ; - "But leave the stream itself accessible") - (AND (TEXTPROP (fetch (TEXTSTREAM TEXTOBJ) of TEXT) - 'AFTERQUITFN) - (APPLY* (TEXTPROP (fetch (TEXTSTREAM TEXTOBJ) of TEXT) - 'AFTERQUITFN) - WINDOW TEXT)) (* ; - "Apply any post-window-close (and post-QUIT) function") - (COND - (UNSPAWNED (* ; - "We're not a distinct process: Send back the edited text in some suitable form") - (COND - ((NEQ (fetch (TEXTOBJ EDITFINISHEDFLG) of (fetch (TEXTSTREAM - TEXTOBJ) - of TEXT)) - T) - (PROG1 (fetch (TEXTOBJ EDITFINISHEDFLG) of (fetch (TEXTSTREAM - TEXTOBJ) - of TEXT)) - (replace (TEXTOBJ EDITFINISHEDFLG) of (fetch (TEXTSTREAM - TEXTOBJ) - of TEXT) with - NIL))) - ((STRINGP (fetch (TEXTOBJ TXTFILE) of (fetch (TEXTSTREAM TEXTOBJ - ) of TEXT))) - (COERCETEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of TEXT) - 'STRINGP)) - (T TEXT]) - -(COERCETEXTOBJ - [LAMBDA (STREAM TYPE OUTPUTSTREAM) (* ; "Edited 18-Apr-93 23:42 by jds") - - (* ;; "Coerce the contents of the TEXOTBJ to be of the given type. This is for making a string from a textobj, e.g.") - - (PROG ((TEXTOBJ (COND - ((type? STREAM STREAM) - (fetch (TEXTSTREAM TEXTOBJ) of STREAM)) - (T STREAM))) - OFILE FMTFILE) - (OR (type? TEXTOBJ TEXTOBJ) - (\ILLEGAL.ARG TEXTOBJ)) (* ; - "If we haven't got a TEXTOBJ, something is wrong.") - (RETURN (SELECTQ TYPE - ((STRINGP STRING) - (AND (ILEQ (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ) - 65535) - (PROG ((STR (ALLOCSTRING (fetch (TEXTOBJ TEXTLEN) - of TEXTOBJ))) - PC - (CH# 1) - (PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - (DELTA 0) - PFILE) - (SETQ PC (\GETBASEPTR (\FIRSTNODE PCTB) - 0)) - [WHILE PC - do (COND - ((ATOM PC)(* ; - "It's the lastpiece atom -- do nothing.") - (SETQ PC NIL)) - ((fetch CLINVISIBLE of (fetch - (PIECE PLOOKS) - of PC)) - - (* ;; "If the characters are invisible, do nothing. HOWEVER, we have to shrink the final string to account for the characters we ignored.") - - (add DELTA (fetch (PIECE PLEN) - of PC))) - ((fetch (PIECE PSTR) of PC) - [OR (ZEROP (fetch (PIECE PLEN) of PC)) - (RPLSTRING STR CH# (SUBSTRING - (fetch (PIECE PSTR) - of PC) - 1 - (fetch (PIECE PLEN) - of PC] - (add CH# (fetch (PIECE PLEN) of - PC))) - ((SETQ PFILE (fetch (PIECE PFILE) of - PC)) - [COND - ((NOT (OPENP PFILE)) - (SETQ PFILE (\TEDIT.REOPEN.STREAM STREAM - PFILE] - (SETFILEPTR PFILE (fetch (PIECE PFPOS) - of PC)) - (for C from CH# as I from 1 - to (fetch (PIECE PLEN) of PC) - do (RPLCHARCODE STR C (BIN PFILE))) - (add CH# (fetch (PIECE PLEN) of - PC))) - ((fetch (PIECE POBJ) of PC) - (* ; "DO NOTHING FOR OBJECTS") - (add CH# (fetch (PIECE PLEN) of - PC)) - (add DELTA (fetch (PIECE PLEN) - of PC))) - (T (ERROR "CANNOT GET TEXT FROM A 'PIECE.'" PC))) - (AND PC (SETQ PC (FETCH (PIECE NEXTPIECE) - OF PC] - [COND - ((ZEROP DELTA) (* ; - "No change in the length; do nothing.") - ) - (T (* ; - "The string got shortened to account for invisible chars. Chop it off") - (SETQ STR (SUBSTRING STR 1 (IDIFFERENCE - (fetch (TEXTOBJ - TEXTLEN) - of TEXTOBJ) - DELTA] - (RETURN STR)))) - (STREAM (COND - ((type? STREAM (fetch (TEXTOBJ TXTFILE) of TEXTOBJ)) - (OPENFILE (fetch (STREAM FULLNAME) of (fetch - (TEXTOBJ TXTFILE - ) - of TEXTOBJ)) - 'INPUT) - (replace (STREAM ACCESSBITS) of (fetch (TEXTOBJ - TXTFILE) - of TEXTOBJ) - with ReadBit))) - (\SETUPGETCH 1 TEXTOBJ) - (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ)) - (FILE [SETQ OFILE (OR (AND OUTPUTSTREAM (OPENP OUTPUTSTREAM 'OUTPUT)) - (OPENSTREAM '{NODIRCORE} 'BOTH 'NEW] - (TEDIT.PUT.PCTB TEXTOBJ OFILE) - (OR OUTPUTSTREAM (CLOSEF OFILE)) - OFILE) - (SPLIT - (* ;; "I.e., Return 2 files, one with plain text, one with formatting info, such that concatenating them will do the right thing.") - - (SETQ OFILE (OPENFILE '{NODIRCORE} 'BOTH 'NEW)) - (SETQ FMTFILE (CAR (TEDIT.PUT.PCTB TEXTOBJ (\GETSTREAM OFILE - 'BOTH) - NIL T))) - (CLOSEF OFILE) - (CONS OFILE FMTFILE)) - NIL]) - -(TEDIT - [LAMBDA (TEXT WINDOW DONTSPAWN PROPS) (* ; "Edited 3-Jun-88 14:27 by jds") - - (* ;; "User entry to the text editor. Takes an optional window to be used for editing") - - (* ;; "DONTSPAWN => Don't try to create a new process for this edit.") - - (PROG (PROC TEDITCREATEDWINDOW) (* ; - "Inlcude the default properties in the list.") - [COND - ((AND TEXT (ATOM TEXT)) (* ; - "Make sure the file exists before trying to open the window.") - (SETQ TEXT (OPENFILE TEXT 'INPUT 'OLD] - (RESETLST - [RESETSAVE NIL `(AND ,WINDOW (WINDOWPROP ,WINDOW 'TEXTOBJ NIL] - (WITH.MONITOR TEDIT.STARTUP.MONITORLOCK - (COND - ((NOT WINDOW) - (SETQ TEDITCREATEDWINDOW T) - (SETQ WINDOW (COND - [(OR (NOT TEDIT.DEFAULT.WINDOW) - (\TEDIT.ACTIVE.WINDOWP TEDIT.DEFAULT.WINDOW)) - (TEDIT.CREATEW (COND - ((AND TEXT (ATOM TEXT)) - (CONCAT - "Please specify an editing window for " - TEXT)) - (T - "Please specify a region for the editing window." - )) - TEXT - (APPEND PROPS (COPY TEDIT.DEFAULT.PROPS] - (T (\TEDIT.CREATEW.FROM.REGION (WINDOWPROP TEDIT.DEFAULT.WINDOW - 'REGION) - TEXT - (APPEND PROPS (COPY TEDIT.DEFAULT.PROPS))) - (* ; "Replace the old title") - TEDIT.DEFAULT.WINDOW))) - (WINDOWPROP WINDOW 'TEXTOBJ T) (* ; - "Mark the newly-created window reserved until the OPENTEXTSTREAM has done its work.") - )) (* ; - "mark that we created the window so that we know we can update the title, etc.") - )) - [SETQ TEXT (OPENTEXTSTREAM TEXT WINDOW NIL NIL (APPEND PROPS '(BEING-EDITED T] - (* ; - "Connect the editor to the window") - (replace (TEXTOBJ TXTEDITING) of (TEXTOBJ TEXT) with T) - (* ; "For the moment, mark the document as actively in edit. (so caret flashes when the window is first brought up.)") - [COND - (TEDITCREATEDWINDOW (TEXTPROP TEXT 'TEDITCREATEDWINDOW 'T] - (COND - (DONTSPAWN (* ; - "Either no processes running, or specifically not to spawn one.") - (RETURN (\TEDIT2 TEXT WINDOW T))) - (T (* ; "Spawn a process to do the edit.") - [SETQ PROC (ADD.PROCESS (LIST '\TEDIT2 (KWOTE TEXT) - WINDOW NIL) - 'NAME - 'TEdit - 'RESTARTABLE - 'HARDRESET - 'RESTARTFORM - (LIST '\TEDIT.RESTARTFN (KWOTE TEXT) - WINDOW - (KWOTE PROPS] - (PROCESSPROP PROC 'WINDOW WINDOW) - (COND - ((NOT (LISTGET (APPEND PROPS (COPY TEDIT.DEFAULT.PROPS)) - 'LEAVETTY)) (* ; - "Unless he asked us to leave the tty where it is, TEdit should get it.") - (TTY.PROCESS PROC))) - (RETURN PROC]) - -(TEDIT.CHARWIDTH - [LAMBDA (CH FONT TERMSA) (* jds "22-OCT-83 19:32") - - (* Returns the width of CH in FONT printed according to any special printing - instructions in CHARTABLE TERMSA) - - (COND - (TERMSA (* There IS a TERMTABLE to account for) - (SELECTC (fetch CCECHO of (\SYNCODE TERMSA CH)) - (INDICATE.CCE (IPLUS (COND - ((IGREATERP CH 127)(* META character) - (SETQ CH (LOGAND CH 127)) - (CHARWIDTH (CHARCODE %#) - FONT)) - (T 0)) - (COND - ((ILESSP CH 32) (* CONTROL character) - (SETQ CH (LOGOR CH 64)) - (CHARWIDTH (CHARCODE ^) - FONT)) - (T 0)) - (CHARWIDTH CH FONT))) - (SIMULATE.CCE (SELCHARQ CH - ((EOL CR LF) - (IMAX 6 (CHARWIDTH CH FONT))) - (ESCAPE (CHARWIDTH (CHARCODE $) - FONT)) - (BELL 0) - (TAB 36) - (CHARWIDTH CH FONT))) - (REAL.CCE (CHARWIDTH CH FONT)) - (IGNORE.CCE 0) - (SHOULDNT))) - (T (* The usual case is to treat every character as a graphic.) - (SELCHARQ CH - (CR (IMAX 6 (CHARWIDTH CH FONT))) - (TAB 36) - (CHARWIDTH CH FONT]) - -(TEDIT.COPY - [LAMBDA (FROM TO) (* ; - "Edited 2-May-95 12:23 by sybalsky:mv:envos") - (SETQ TEDIT.COPY.PENDING NIL) (* ; - "First, Turn off the global flag that got us here.") - (COND - ((NOT (AND FROM (fetch (SELECTION SET) of FROM))) - (* ; - "There MUST be a source selected first.") - (TEDIT.PROMPTPRINT (fetch (SELECTION \TEXTOBJ) of TO) - "Copy source selection hasn't been set yet." T)) - ((ZEROP (fetch (SELECTION DCH) of FROM)) (* ; - "The source is empty. Just turn off the selection hilite and ignore the request.") - (\SHOWSEL FROM NIL NIL)) - ((fetch (TEXTOBJ TXTREADONLY) of (fetch (SELECTION \TEXTOBJ) of TO)) - (* ; "The target is read-only. Don't do anything except turn off the selection highlighting and ignore the request.") - (\SHOWSEL FROM NIL NIL)) - (T (\SHOWSEL FROM NIL NIL) (* ; - "Before all else, make sure the copy source selection is turned off") - (replace (SELECTION SET) of FROM with NIL) - (COND - ((AND TO (fetch (SELECTION SET) of TO)) (* ; - "Can only do copy if there's a target selection") - (PROG ((TOOBJ (fetch (SELECTION \TEXTOBJ) of TO)) - (FROMOBJ (fetch (SELECTION \TEXTOBJ) of FROM)) - (CROSSCOPY (NEQ (fetch (SELECTION \TEXTOBJ) of FROM) - (fetch (SELECTION \TEXTOBJ) of TO))) - TOLEN LEN INSPC INSPC# PC NPC PCCH NPCCH OPLEN EVENT REPLACING INSERTCH# PCLST - OBJ COPYFN UNDOCHAIN) - (SETQ PCLST (TEDIT.SELECTED.PIECES FROMOBJ FROM CROSSCOPY (FUNCTION - \TEDIT.COPY.PIECEMAPFN - ) - FROMOBJ TOOBJ)) (* ; - "Get the list of pieces to be copied") - (SETQ REPLACING (TEDIT.DO.BLUEPENDINGDELETE TO TOOBJ)) - (* ; "Do any blue-pending-delete") - (SETQ TOLEN (fetch (TEXTOBJ TEXTLEN) of TOOBJ)) - (\SHOWSEL TO NIL NIL) (* ; - "NOW turn off the target selection.") - [COND - ((EQ (fetch (SELECTION POINT) of TO) - 'LEFT) - (SETQ INSERTCH# (fetch (SELECTION CH#) of TO))) - (T (SETQ INSERTCH# (IMIN (fetch (SELECTION CHLIM) of TO) - (ADD1 TOLEN] (* ; - "Figure out where to do the insertion.") - (COND - ((AND (fetch (TEXTOBJ FORMATTEDP) of FROMOBJ) - (NOT (fetch (TEXTOBJ FORMATTEDP) of TOOBJ))) - (* ; - "The source is formatted and the target isn't. Give the guy a choice.") - (* ; - "For now, convert the target file to formatted.") - (\TEDIT.CONVERT.TO.FORMATTED TOOBJ))) - (SETQ UNDOCHAIN (\TEDIT.INSERT.PIECES TOOBJ INSERTCH# PCLST - (SETQ LEN (IDIFFERENCE (fetch (SELECTION CHLIM) - of FROM) - (fetch (SELECTION CH#) of FROM))) - NIL NIL CROSSCOPY NIL T)) - (bind OBJ AFTERCOPYFN for PC in PCLST - when [AND (SETQ OBJ (fetch (PIECE POBJ) of PC)) - (SETQ AFTERCOPYFN (IMAGEOBJPROP OBJ 'AFTERCOPYFN] - do (APPLY* AFTERCOPYFN OBJ)) - (SETQ EVENT (fetch (TEXTOBJ TXTHISTORY) of TOOBJ)) - (\TEDIT.HISTORYADD TOOBJ (create TEDITHISTORYEVENT - THACTION _ (COND - (REPLACING 'Replace) - (T 'Copy)) - THLEN _ LEN - THCH# _ INSERTCH# - THFIRSTPIECE _ (LIST UNDOCHAIN) - THOLDINFO _ (AND REPLACING EVENT))) - (* ; - "Make a history-list entry for the COPY.") - (replace (TEXTOBJ \DIRTY) of TOOBJ with T) - (* ; "Mark the document changed") - (replace (TEXTOBJ TEXTLEN) of TOOBJ with (IPLUS LEN TOLEN)) - (* ; "Set the new length") - (\FIXILINES TOOBJ TO INSERTCH# LEN TOLEN)(* ; "Fix LINES and SELs") - [COND - ((EQ (fetch (TEXTOBJ FORMATTEDP) of TOOBJ) - (fetch (TEXTOBJ FORMATTEDP) of FROMOBJ)) - (* ; - "Either both of the files are formatted or neither is. This case is OK") - ) - ((fetch (TEXTOBJ FORMATTEDP) of TOOBJ) - (* ; - "The source wasn't formatted, but the target is. Go convert the copied text.") - (\TEDIT.CONVERT.TO.FORMATTED TOOBJ INSERTCH# (IPLUS INSERTCH# LEN] - (TEDIT.UPDATE.SCREEN TOOBJ) (* ; "Refresh the display") - (replace (SELECTION CH#) of TO with INSERTCH#) - (* ; "Correct the target selection") - (replace (SELECTION CHLIM) of TO with (IPLUS INSERTCH# LEN)) - (replace (SELECTION DCH) of TO with LEN) - (replace (SELECTION DX) of TO with 0) - (replace (SELECTION POINT) of TO with 'RIGHT) - (* ; - "(replace CARETLOOKS of TOOBJ with (\TEDIT.GET.INSERT.CHARLOOKS TOOBJ TO))") - (* ; - "Make any later type-in look like what we just copied.") - (replace (TEXTOBJ \INSERTPCVALID) of TOOBJ with NIL) - (* ; - "And make sure that the pieces copied never have their strings smashed by back spacing.") - (replace (TEXTOBJ \INSERTPCVALID) of FROMOBJ with NIL) - (\FIXSEL TO TOOBJ) - (\SHOWSEL TO NIL T))) - (T (* ; - "There is no target selection -- complain") - (TEDIT.PROMPTPRINT (fetch (SELECTION \TEXTOBJ) of FROM) - "Please select a destination for the copy first." T]) - -(TEDIT.DELETE - [LAMBDA (STREAM SEL LEN LEAVECARETLOOKS) (* ; "Edited 12-Jun-90 17:49 by mitani") - - (* ;; "DELETE THE CHARACTERS SPECIFIED FROM THE MAIN TEXT.") - - (* ;; "If LEAVECARETLOOKS is non-NIL, the selection will NOT be set up to do the right thing with type-in. This can save time in inner loops.") - - (PROG ((TEXTOBJ (TEXTOBJ STREAM))) - [COND - ((FIXP SEL) - (TEDIT.SETSEL STREAM SEL LEN NIL NIL LEAVECARETLOOKS) - (SETQ SEL (fetch (TEXTOBJ SEL) of TEXTOBJ] - (OR SEL (SETQ SEL (fetch (TEXTOBJ SEL) of TEXTOBJ))) - (\TEDIT.DELETE SEL TEXTOBJ]) - -(TEDIT.DO.BLUEPENDINGDELETE - [LAMBDA (SEL TEXTOBJ) (* ; "Edited 29-May-91 18:21 by jds") - (* Check for blue-pending-delete, - and do it if it's there.) - (* Return T if the deletion was - made. For people who need to know) - (COND - ((fetch (TEXTOBJ BLUEPENDINGDELETE) of TEXTOBJ) - (* If he's in a Blue-pending-delete - state, delete the selection.) - (PROG1 (fetch (TEXTOBJ BLUEPENDINGDELETE) of TEXTOBJ) - (COND - ((NOT (ZEROP (fetch (SELECTION DCH) of SEL))) - (* There really IS something to - delete.) - (\SHOWSEL SEL NIL NIL) (* Turn off the selection) - (\DELETECH (fetch (SELECTION CH#) of SEL) - (fetch (SELECTION CHLIM) of SEL) - (fetch (SELECTION DCH) of SEL) - TEXTOBJ) (* Delete the characters.) - (\FIXDLINES (fetch (TEXTOBJ LINES) of TEXTOBJ) - SEL - (fetch (SELECTION CH#) of SEL) - (fetch (SELECTION CHLIM) of SEL) - TEXTOBJ) (* Fix up any line descriptors to - reflect the deletion.) - (TEDIT.RESET.EXTEND.PENDING.DELETE SEL) (* Make it a normal selection again.) - (replace (SELECTION CHLIM) of SEL with (fetch (SELECTION CH#) - of SEL)) - - (* Fix up the selection, so that it is 0 wide, where the old text used to be.) - - (replace (SELECTION DCH) of SEL with 0) - (replace (SELECTION POINT) of SEL with 'LEFT) - (\FIXSEL SEL TEXTOBJ) (* Make its line descriptors &c - reflect the new reality) - (\SHOWSEL SEL NIL T) (* And turn it back on.) - ) - (T (* Don't do it, since it's - zero-width. However, DO turn off the - blue-pendingness of it.) - (TEDIT.RESET.EXTEND.PENDING.DELETE SEL))))]) - -(TEDIT.INSERT - [LAMBDA (STREAM TEXT CH#ORSEL LOOKS DONTSCROLL) (* ; "Edited 29-May-91 18:21 by jds") - (* ; - "Insert TEXT (character, litatom or string) at the appropriate spot in the text.") - (SETQ STREAM (TEXTSTREAM STREAM)) - [COND - ((FIXP CH#ORSEL) (* ; - "He gave us a ch# to insert before") - (TEDIT.SETSEL STREAM CH#ORSEL 1 'LEFT] - [COND - ((LITATOM TEXT) - (SETQ TEXT (MKSTRING TEXT] - [OR (type? SELECTION CH#ORSEL) - (SETQ CH#ORSEL (fetch (TEXTOBJ SEL) of (fetch (TEXTSTREAM TEXTOBJ) - of STREAM] - (COND - ((AND (STRINGP TEXT) - (ZEROP (NCHARS TEXT))) (* ; - "Can't insert an empty string sensibly. It confuses the screen update code.") - NIL) - [(AND CH#ORSEL (fetch (SELECTION SET) of CH#ORSEL)) - (PROG ((TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of STREAM)) - CH# LINE XPOINT OTEXTLEN DS LINES CHARS BLANKSEEN CRSEEN) - (TEDIT.DO.BLUEPENDINGDELETE CH#ORSEL TEXTOBJ) - (* ; - "If the selected text was for pending delete, delete it before doing the insert.") - (COND - (LOOKS (* ; - "If looks for this insertion were specified, set them up.") - (TEDIT.CARETLOOKS STREAM LOOKS))) - (SETQ OTEXTLEN (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ)) - (* ; - "The PRE-INSERT text length, for starting the screen update process") - (COND - ((fetch (TEXTOBJ \WINDOW) of TEXTOBJ) - - (* ;; "If this text is in a window, move it so the insertion point is on-screen, then turn off the selection highlight") - - (COND - ((NOT DONTSCROLL) (* ; - "If DONTSCROLL is T, then don't bother scrolling the window to show the change.") - (TEDIT.NORMALIZECARET TEXTOBJ CH#ORSEL))) - (\SHOWSEL CH#ORSEL NIL NIL))) - (SETQ CH# (IMAX 1 (SELECTQ (fetch (SELECTION POINT) of CH#ORSEL) - (LEFT (fetch (SELECTION CH#) of CH#ORSEL)) - (RIGHT (IMIN (fetch (SELECTION CHLIM) of CH#ORSEL) - (ADD1 (fetch (TEXTOBJ TEXTLEN) of - TEXTOBJ - )))) - NIL))) - (SETQ XPOINT (SELECTQ (fetch (SELECTION POINT) of CH#ORSEL) - (LEFT (fetch (SELECTION X0) of CH#ORSEL)) - (RIGHT (fetch (SELECTION XLIM) of CH#ORSEL)) - NIL)) - [COND - [(type? STRINGP TEXT) (* ; - "It's a string: Count the characters and Insert them one by one into the text stream") - (SETQ CHARS (NCHARS TEXT)) - (for ACHAR instring TEXT as NCH# from CH# by 1 - do (SELCHARQ ACHAR - ((CR %#^M 1,CR) - (SETQ CRSEEN T) - (\INSERTCR ACHAR NCH# TEXTOBJ)) - (SPACE (SETQ BLANKSEEN T) - (\INSERTCH ACHAR NCH# TEXTOBJ)) - (\INSERTCH ACHAR NCH# TEXTOBJ] - (T (* ; - "It's a singe character. Just insert it.") - (SETQ CHARS 1) - (SELCHARQ TEXT - ((CR %#^M 1,CR) - (SETQ CRSEEN T) - (\INSERTCR TEXT CH# TEXTOBJ)) - (SPACE (SETQ BLANKSEEN T) - (\INSERTCH TEXT CH# TEXTOBJ)) - (\INSERTCH TEXT CH# TEXTOBJ] - (\FIXILINES TEXTOBJ CH#ORSEL CH# CHARS OTEXTLEN) - (* ; - "Fix up the line descriptors and the Selection.") - (COND - ((NOT (fetch (TEXTOBJ TXTREADONLY) of (TEXTOBJ STREAM))) - (* ; "Update the edit window.") - (TEDIT.INSERT.UPDATESCREEN TEXT CH# CHARS XPOINT TEXTOBJ CH#ORSEL OTEXTLEN - BLANKSEEN CRSEEN DONTSCROLL] - ((NOT (fetch (TEXTOBJ TXTREADONLY) of (TEXTOBJ STREAM))) - (TEDIT.PROMPTPRINT (TEXTOBJ STREAM) - "Please select a place for the insertion." T]) - -(TEDIT.KILL - [LAMBDA (STREAM) (* ; "Edited 12-Jun-90 17:49 by mitani") - (* Force the edit session supported - by STREAM to terminate, and to - return VALUE) - (COND - ((type? STREAM STREAM) (* If he gave us a textofd, get the - textobj) - (SETQ STREAM (fetch (TEXTSTREAM TEXTOBJ) of STREAM))) - [(WINDOWP STREAM) (* Take a window, and do the obvious - with it.) - (SETQ STREAM (WINDOWPROP STREAM 'TEXTOBJ] - ((type? TEXTOBJ STREAM) (* A Textobj is just fine) - ) - (T (* Anything else is ungood, - double-plus) - (\ILLEGAL.ARG STREAM))) - (replace (TEXTOBJ EDITFINISHEDFLG) of STREAM with T) - (PROG (TEDW TEDPROC) - (AND (SETQ TEDW (CAR (fetch (TEXTOBJ \WINDOW) of STREAM))) - [PROCESSP (SETQ TEDPROC (WINDOWPROP TEDW 'PROCESS] - (NEQ TEDPROC (THIS.PROCESS)) - (DEL.PROCESS TEDPROC) - (TEDIT.DEACTIVATE.WINDOW TEDW]) - -(TEDIT.MAPLINES - [LAMBDA (TEXTOBJ FN) (* ; "Edited 29-May-91 18:19 by jds") - - (* Go thru the visible lines in a textobj and call a mapping fn on them) - - (* FN has 2 args%: the LINEDESCRIPTOR, and a VISIBLEFLG to say if the line is - visible on the screen.) - - (bind (LINE _ (fetch (LINEDESCRIPTOR NEXTLINE) of (fetch (TEXTOBJ LINES) - of TEXTOBJ))) - (BOT _ (fetch (TEXTOBJ WBOTTOM) of TEXTOBJ)) - [TOP _ (fetch (REGION HEIGHT) of (DSPCLIPPINGREGION (\TEDIT.PRIMARYW TEXTOBJ] - while LINE do (COND - ((EQ (APPLY* FN LINE (AND (ILESSP (fetch (LINEDESCRIPTOR YBOT) - of LINE) - TOP) - (IGEQ (fetch (LINEDESCRIPTOR YBOT) - of LINE) - BOT))) - 'STOP) - (RETURN))) - (SETQ LINE (fetch (LINEDESCRIPTOR NEXTLINE) of LINE]) - -(TEDIT.MAPPIECES - [LAMBDA (TEXTOBJ FN FNARG) (* ; "Edited 22-Apr-93 16:02 by jds") - - (* ;; "Go thru all the pieces in a document, applying a function to them serially") - - (* ;; "FN is a function of 3 args (PIECE CH#-of-1st-char-in-piece PIECE# in table FNARG)") - - (PROG ((PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - (CH# 1) - PCNODE PC) - (SETQ PC (\GETBASEPTR (\FIRSTNODE PCTB) - 0)) - (OR (ATOM PC) - (RETURN (for I from 1 while PC - do [COND - ((EQ (APPLY* FN CH# PC I FNARG) - 'STOP) - (RETURN (LIST CH# PC I] - (add CH# (fetch (PIECE PLEN) of PC)) - (SETQ PC (fetch (PIECE NEXTPIECE) of PC]) - -(TEDIT.MOVE - [LAMBDA (FROM TO) (* ; - "Edited 2-May-95 12:24 by sybalsky:mv:envos") - - (* ;; - "Move the text described by the selection FROM to the place described by the selection TO") - - (SETQ TEDIT.MOVE.PENDING NIL) (* ; - "First, Turn off the global flag that got us here.") - (COND - ((NOT (AND FROM (fetch (SELECTION SET) of FROM))) - (* ; - "There MUST be a source selected first.") - (TEDIT.PROMPTPRINT (fetch (SELECTION \TEXTOBJ) of TO) - "Move source selection hasn't been set yet." T)) - ((ZEROP (fetch (SELECTION DCH) of FROM)) (* ; - "The source selection is empty. Just turn it off.") - (\SHOWSEL FROM NIL NIL)) - ((fetch (TEXTOBJ TXTREADONLY) of (fetch (SELECTION \TEXTOBJ) of TO)) - (* ; - "The target is read-only. Skip it..") - (\SHOWSEL FROM NIL NIL)) - (T (\SHOWSEL FROM NIL NIL) (* ; - "Before all else, make sure the copy source selection is turned off") - (COND - ((AND TO (fetch (SELECTION SET) of TO)) (* ; - "Can only do copy if there's a target selection") - (PROG ((TOOBJ (fetch (SELECTION \TEXTOBJ) of TO)) - (FROMOBJ (fetch (SELECTION \TEXTOBJ) of FROM)) - (TOLEN (fetch (TEXTOBJ TEXTLEN) of (fetch (SELECTION \TEXTOBJ) - of TO))) - (TOPCTB (fetch (TEXTOBJ PCTB) of (fetch (SELECTION \TEXTOBJ) - of TO))) - (FROMPCTB (fetch (TEXTOBJ PCTB) of (fetch (SELECTION \TEXTOBJ) - of FROM))) - (CROSSCOPY (NEQ (fetch (SELECTION \TEXTOBJ) of FROM) - (fetch (SELECTION \TEXTOBJ) of TO))) - LEN INSPC INSPC# PC NPC PCCH NPCCH OPLEN EVENT REPLACING INSERTCH# PCLST OBJ - COPYFN UNDOCHAIN) (* ; "Find the insertion point") - (SETQ PCLST (TEDIT.SELECTED.PIECES FROMOBJ FROM CROSSCOPY (FUNCTION - \TEDIT.MOVE.PIECEMAPFN - ) - FROMOBJ TOOBJ)) (* ; - "Grab the pieces that reflect the source selection") - (SETQ REPLACING (TEDIT.DO.BLUEPENDINGDELETE TO TOOBJ)) - (* ; "Do any blue-pending-delete") - (SETQ TOPCTB (fetch (TEXTOBJ PCTB) of TOOBJ)) - (* ; - "Get the new PCTB and text length") - (SETQ EVENT (fetch (TEXTOBJ TXTHISTORY) of TOOBJ)) - (SETQ LEN (IDIFFERENCE (fetch (SELECTION CHLIM) of FROM) - (fetch (SELECTION CH#) of FROM))) - (\DELETECH (fetch (SELECTION CH#) of FROM) - (fetch (SELECTION CHLIM) of FROM) - (fetch (SELECTION DCH) of FROM) - FROMOBJ) (* ; - "Now delete the text from its old place") - (\FIXDLINES (fetch (TEXTOBJ LINES) of FROMOBJ) - FROM - (fetch (SELECTION CH#) of FROM) - (fetch (SELECTION CHLIM) of FROM) - FROMOBJ) - (SETQ TOLEN (fetch (TEXTOBJ TEXTLEN) of TOOBJ)) - (\SHOWSEL TO NIL NIL) (* ; - "NOW turn off the target selection.") - (replace (SELECTION SET) of FROM with NIL) - [COND - ((EQ (fetch (SELECTION POINT) of TO) - 'LEFT) - (SETQ INSERTCH# (fetch (SELECTION CH#) of TO))) - (T (SETQ INSERTCH# (fetch (SELECTION CHLIM) of TO] - (* ; - "Figure out where to do the insertion.") - (\TEDIT.INSERT.PIECES TOOBJ INSERTCH# PCLST LEN NIL NIL CROSSCOPY) - (* ; - "Get the pieces that actually got inserted, so we can UNDO the move") - - (* ;; "Keep the target from sharing a piece with type-in by accident:") - - (replace (TEXTOBJ \INSERTPCVALID) of TOOBJ with NIL) - - (* ;; "Keep \DELETECH from playing clever games with the piece if it's new type-in: Don't let it be reclaimed by the deletion:") - - (replace (TEXTOBJ \INSERTPCVALID) of FROMOBJ with NIL) - (replace (TEXTOBJ \INSERTPC) of FROMOBJ with NIL) - (\TEDIT.HISTORYADD TOOBJ (create TEDITHISTORYEVENT - THTEXTOBJ _ TOOBJ - THACTION _ (COND - (REPLACING 'ReplaceMove) - (T 'Move)) - THLEN _ LEN - THCH# _ INSERTCH# - THFIRSTPIECE _ (LIST PCLST) - THAUXINFO _ FROMOBJ - THOLDINFO _ (fetch (SELECTION CH#) - of FROM))) - (* ; - "Make a history-list entry for the COPY.") - (replace (TEXTOBJ \DIRTY) of TOOBJ with T) - (* ; "Mark the document changed") - (replace (TEXTOBJ TEXTLEN) of TOOBJ with (IPLUS LEN TOLEN)) - (* ; "Set the new length") - (\FIXILINES TOOBJ TO INSERTCH# LEN TOLEN)(* ; "Fix LINES and SELs") - (COND - ((EQ (fetch (TEXTOBJ FORMATTEDP) of TOOBJ) - (fetch (TEXTOBJ FORMATTEDP) of FROMOBJ)) - (* ; - "Either both of the files are formatted or neither is. This case is OK") - ) - ((fetch (TEXTOBJ FORMATTEDP) of TOOBJ) - (* ; - "The source wasn't formatted, but the target is. Go convert the copied text.") - (\TEDIT.CONVERT.TO.FORMATTED TOOBJ INSERTCH# (IPLUS INSERTCH# LEN))) - (T (* ; - "The source is formatted and the target isn't. Give the guy a choice.") - (* ; - "For now, convert the target file to formatted.") - (\TEDIT.CONVERT.TO.FORMATTED TOOBJ))) - (TEDIT.UPDATE.SCREEN FROMOBJ) - (TEDIT.UPDATE.SCREEN TOOBJ) (* ; "Refresh the display") - (replace (SELECTION CH#) of TO with INSERTCH#) - (* ; "Correct the target selection") - (replace (SELECTION CHLIM) of TO with (IPLUS INSERTCH# LEN)) - (replace (SELECTION DCH) of TO with LEN) - (replace (SELECTION DX) of TO with 0) - (replace (SELECTION POINT) of TO with 'RIGHT) - (COND - ((NEQ TO FROM) - (\FIXSEL FROM FROMOBJ) - (\FIXSEL (fetch (TEXTOBJ SEL) of FROMOBJ) - FROMOBJ))) - (\FIXSEL TO TOOBJ) - (\SHOWSEL TO NIL T))) - (T (* ; - "There is no target selection -- complain") - (TEDIT.PROMPTPRINT (fetch (SELECTION \TEXTOBJ) of FROM) - "Please select a destination for the MOVE first." T]) - -(TEDIT.QUIT - [LAMBDA (STREAM VALUE) (* ; "Edited 12-Jun-90 17:49 by mitani") - - (* ;; "Force the edit session supported by STREAM to terminate, and to return VALUE") - - (COND - ((type? STREAM STREAM) (* ; - "If he gave us a textofd, get the textobj") - (SETQ STREAM (fetch (TEXTSTREAM TEXTOBJ) of STREAM))) - ((type? TEXTOBJ STREAM) (* ; "A Textobj is just fine") - ) - (T (* ; - "Anything else is ungood, double-plus") - (\ILLEGAL.ARG STREAM))) - (replace (TEXTOBJ EDITFINISHEDFLG) of STREAM with (OR VALUE T)) - (* ; - "tell the command loop to stop next time through") - (PROG (MAINW) - (COND - ([AND (fetch (TEXTOBJ \WINDOW) of STREAM) - (NEQ (SETQ MAINW (\TEDIT.PRIMARYW STREAM)) - (PROCESSPROP (TTY.PROCESS) - 'WINDOW] - - (* ;; "there is a main window of the stream, and it is not the window of the tty process, so give it the tty") - - (TTY.PROCESS (WINDOWPROP MAINW 'PROCESS)) - (AND (NEQ (TTY.PROCESS) - (THIS.PROCESS)) - (until [OR (NOT (WINDOWPROP MAINW 'PROCESS)) - (PROCESS.FINISHEDP (WINDOWPROP MAINW 'PROCESS] do - (* ; - "Wait until the Edit process has had a chance to go away before continuing here.") - (DISMISS]) - -(TEDIT.STRINGWIDTH - [LAMBDA (STR FONT TERMSA) (* jds "19-AUG-83 14:40") - (COND - (TERMSA - - (* We have a terminal table to take account of. - Do so.) - - (for CH instring STR sum (TEDIT.CHARWIDTH CH FONT TERMSA))) - (T (* Just use the native character - widths) - (for CH instring STR sum (SELCHARQ CH - (TAB 36) - (CHARWIDTH CH FONT]) - -(TEDIT.\INSERT - [LAMBDA (CH SEL STREAM) (* ; "Edited 29-May-91 18:22 by jds") - (* Insert the character CH at the - appropriate spot in the text.) - (DECLARE (LOCALVARS . T)) - (PROG [(TEXTOBJ (COND - ((type? STREAM STREAM) (* If we got a STREAM, change it - into a textobj) - (fetch (TEXTSTREAM TEXTOBJ) of STREAM)) - (T STREAM] - (COND - ((NOT (AND SEL (fetch (SELECTION SET) of SEL))) - (TEDIT.PROMPTPRINT TEXTOBJ "Please select a place for the insertion." T) - (RETURN))) - (COND - ((fetch (TEXTOBJ \WINDOW) of TEXTOBJ) - - (* There is a window; make sure the insert point is on-screen, and turn off any - highlighted selection) - - (TEDIT.NORMALIZECARET TEXTOBJ SEL) - (\SHOWSEL SEL NIL NIL))) - (PROG ((CH# (TEDIT.GETPOINT STREAM SEL)) - (XPOINT (SELECTQ (fetch (SELECTION POINT) of SEL) - (LEFT (fetch (SELECTION X0) of SEL)) - (RIGHT (fetch (SELECTION XLIM) of SEL)) - NIL)) - (OTEXTLEN (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ))) - (SELCHARQ CH - ((CR %#^M 1,CR) (* This was a CR. Go do the para - breaking as needed) - (\INSERTCR CH CH# TEXTOBJ)) - (\INSERTCH CH CH# TEXTOBJ)) - (\FIXILINES TEXTOBJ SEL CH# 1 OTEXTLEN) - (TEDIT.INSERT.UPDATESCREEN CH CH# 1 XPOINT TEXTOBJ SEL OTEXTLEN NIL NIL NIL T]) - -(TEXTOBJ - [LAMBDA (STREAM) (* jds "11-Jul-85 12:06") - (* Convert from a text stream to the - associated textobj) - (COND - ((type? TEXTOBJ STREAM) (* It's already a TEXTOBJ) - STREAM) - ((AND (type? STREAM STREAM) - (fetch (TEXTSTREAM TEXTOBJ) of STREAM) - (type? TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of STREAM))) - (* It's a TEXTSTREAM) - (fetch (TEXTSTREAM TEXTOBJ) of STREAM)) - ((AND (PROCESSP STREAM) - (PROCESS.WINDOW STREAM)) (* It's an edit PROCESS) - (WINDOWPROP (PROCESS.WINDOW STREAM) - 'TEXTOBJ)) - [(AND (WINDOWP STREAM) - (WINDOWPROP STREAM 'TEXTOBJ] - [(AND (DISPLAYSTREAMP STREAM) - (WINDOWPROP STREAM 'TEXTOBJ] - ((\ILLEGAL.ARG STREAM]) - -(TEXTSTREAM - [LAMBDA (STREAM) (* ; "Edited 12-Jun-90 17:50 by mitani") - (* Force a textobj or stream to be a - stream) - (COND - ((AND (type? STREAM STREAM) - (fetch (TEXTSTREAM TEXTOBJ) of STREAM) - (type? TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of STREAM))) - (* It's a stream, and is really a - TEXT stream. Just return it.) - STREAM) - ((type? TEXTOBJ STREAM) (* It's a TEXTOBJ, so grab the - stream hint field and return that.) - (fetch (TEXTOBJ STREAMHINT) of STREAM)) - ((AND (PROCESSP STREAM) - (PROCESS.WINDOW STREAM)) (* It's an edit process, so grab the - text stream from the edit window.) - (WINDOWPROP (PROCESS.WINDOW STREAM) - 'TEXTSTREAM)) - [(AND (WINDOWP STREAM) - (WINDOWPROP STREAM 'TEXTSTREAM] - [(AND (DISPLAYSTREAMP STREAM) - (WINDOWPROP STREAM 'TEXTSTREAM] - ((\ILLEGAL.ARG STREAM) (* Not a reasonable coercion to the - text stream. Punt.) - ]) - -(\TEDIT.INCLUDE - [LAMBDA (TEXTOBJ FILE START END) (* ; "Edited 29-May-91 18:22 by jds") - - (* A NATIVE text includer%: Includes part of a file, without checking to see if - it's a bravo file, a TEdit file or whatever.) - (* (PROG ((LEN (IDIFFERENCE - (OR END (GETEOFPTR FILE)) - (OR START 0))) (SEL - (fetch (TEXTOBJ SEL) of TEXTOBJ)) - NPC) (SETQ NPC (create PIECE PFILE _ - (\GETOFD FILE (QUOTE INPUT)) PFPOS _ - (OR START 0) PLEN _ LEN PLOOKS _ - (\TEDIT.GET.INSERT.CHARLOOKS TEXTOBJ - SEL) PPARALOOKS _ NIL)) - (* Create a PIECE to describe the - text) (\TEDIT.INSERT.PIECES TEXTOBJ - (fetch (SELECTION CH#) of SEL) NPC - LEN) (* Insert it in the document) - (add (fetch (TEXTOBJ TEXTLEN) of - TEXTOBJ) LEN) (* And update the - document's length) - (\TEDIT.MARK.LINES.DIRTY TEXTOBJ - (fetch (SELECTION CH#) of SEL) - (IPLUS (fetch (SELECTION CH#) of SEL) - LEN)) (* Mark the screen dirty, so updating it will find something to do) (replace - (SELECTION CHLIM) of SEL with - (IPLUS (fetch (SELECTION CH#) of SEL) - LEN)) (replace (SELECTION DCH) of SEL with LEN) (replace (SELECTION DX) of SEL with 0) - (replace (SELECTION POINT) of SEL - with (QUOTE RIGHT)) - (replace (SELECTION SELKIND) of SEL - with (QUOTE CHAR)) - (replace (SELECTION SELOBJ) of SEL - with NIL) (COND ((fetch - (TEXTOBJ \WINDOW) of TEXTOBJ) - (\SHOWSEL SEL NIL NIL) - (TEDIT.UPDATE.SCREEN TEXTOBJ) - (\FIXSEL SEL TEXTOBJ) - (\SHOWSEL SEL NIL T))) - (* Update the screen) - (replace (TEXTOBJ \DIRTY) of TEXTOBJ - with T) (\SETUPGETCH - (fetch (SELECTION CH#) of SEL) - TEXTOBJ))) - (HELP]) - -(\TEDIT.INSERT.PIECES - [LAMBDA (TEXTOBJ CH# FIRSTPIECE %#CHARS INSPC INSPC# CROSSCOPY DONTDIRTY COPYING) - (* ; - "Edited 4-May-95 08:16 by sybalsky:mv:envos") - - (* ;; "Inserts a series of pieces into TEXTOBJ in front of character CH#.") - - (* ;; "If FIRSTPIECE is a PIECE, this will follow the next-piece pointer chain; if FIRSTPIECE is a list, it is a list of pieces to insert.") - - (* ;; "If CROSSCOPY is non-NIL, the pieces' contents will be copied, to preserve text in case the original is deleted.") - - (* ;; "INSPC and INSPC# are accelerators for where in the PCTB the new pieces should go.") - - (* ;; "DONTDIRTY is T if this is a change not visible to the user--one that shouldn't %"dirty%" the document. This is used tor NS-character encoding recognition durint line formatting.") - - (* ;; "COPYING is T if these pieces are being inserted by a COPY operation. This lets us call the AFTERCOPYFN on image objects.") - - (* ;; "It is the CALLER'S RESPONSIBILITY to make sure the pieces to be inserted are 'safe' --that they are, if necessary, copies of the originals, and can safely be modified.") - (* ; - "NB THAT THIS DOES NOT UPDATE TEXTLEN") - (COND - ((OR DONTDIRTY (NOT (fetch (TEXTOBJ TXTREADONLY) of TEXTOBJ))) - - (* ;; "Only do this if you're allowed to change the document, or it's a TEdit-intertnal fixup change, as for NS char recognition.") - - (LET ((TOLEN (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ)) - (TOPCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - (CURCH# CH#) - LEN PC PREVPC NPC UNDOCHAIN PSTR SRCPFILE START-OF-PIECE) - (DECLARE (SPECVARS START-OF-PIECE)) (* ; - "Get a handle on the piece we're to insert within or in front of") - (* COND ((ZEROP (fetch - (BTREENODE TOTLEN) of TOPCTB)) - (* ; "PCTB is empty.") - (\INSERT.FIRST.PIECE TEXTOBJ))) - (SETQ INSPC (\CHTOPC CH# TOPCTB T)) (* ; "And the piece, itself. (Used to be (OR INSPC (\CH...)), but we MUST set START-OF-PIECE, so must make the call to \CHTOPC.") - (replace (TEXTOBJ \INSERTPCVALID) of TEXTOBJ with NIL) - (* ; - "Force later insertions to make new pieces.") - [COND - ((IGREATERP CH# TOLEN) (* ; - "We're inserting at end of file; leave the piece to insert before as LASTPIECE") - ) - ((IEQP CH# START-OF-PIECE) (* ; - "The insertion is IN FRONT of this piece; just continue on") - ) - (T (SETQ INSPC (\SPLITPIECE INSPC (- CH# START-OF-PIECE) - TEXTOBJ] (* ; - "Nope, we're inserting INSIDE this piece. Split it in two.") - (COND - ((NEQ INSPC 'LASTPIECE) (* ; - "Not the last piece, so back up using the pointer.") - (SETQ PREVPC (fetch (PIECE PREVPIECE) of INSPC))) - ((NOT (ZEROP (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ))) - (* ; - "If we are at the end, AND there is text before us, find it thru the pctb.") - (SETQ PREVPC (\CHTOPC (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ) - TOPCTB))) - (T (* ; - "Otherwise, there is no piece before where we're inserting.") - (SETQ PREVPC NIL))) (* ; "For pushing para looks in") - (bind [PC _ (create PIECE using (COND - ((LISTP FIRSTPIECE) - (pop FIRSTPIECE)) - (T FIRSTPIECE] - (LEN _ 0) - (PCCOUNT _ 0) first (SETQ UNDOCHAIN PC) - while (AND PC (OR (NOT %#CHARS) - (ILESSP LEN %#CHARS))) - do (* ; - "Now insert the copied pieces into the new place") - (COND - ((AND CROSSCOPY (SETQ SRCPFILE (fetch (PIECE PFILE) of PC))) - - (* ;; "If this is a cross-document copy, and the text comes from a file, we must REALLY make a copy of the text, lest the source file be deleted.") - - (* ;; -"(replace PSTR of PC with (SETQ PSTR (ALLOCSTRING (fetch PLEN of PC) NIL NIL (fetch PFATP of PC))))") - - (replace (PIECE PFILE) of PC with (OPENSTREAM '{NODIRCORE} - 'BOTH - 'NEW)) - (* ; "Create the holding file") - [COND - ((NOT (OPENP SRCPFILE)) (* ; - "The source file was CLOSED -- reopen it, for our us") - (replace (PIECE PFILE) of PC with (SETQ SRCPFILE - (OPENSTREAM SRCPFILE - 'INPUT - 'OLD] - (SETFILEPTR SRCPFILE (fetch (PIECE PFPOS) of PC)) - [COPYCHARS SRCPFILE (fetch (PIECE PFILE) of PC) - (fetch (PIECE PFPOS) of PC) - (IPLUS (fetch (PIECE PFPOS) of PC) - (COND - ((fetch (PIECE PFATP) of PC) - (LLSH (fetch (PIECE PLEN) of PC) - 1)) - (T (fetch (PIECE PLEN) of PC] - (replace (PIECE PFPOS) of PC with 0))) - (replace (PIECE PLOOKS) of PC with (\TEDIT.UNIQUIFY.CHARLOOKS - (fetch (PIECE PLOOKS) - of PC) - TEXTOBJ)) - (replace (PIECE PPARALOOKS) of PC with (\TEDIT.UNIQUIFY.PARALOOKS - (fetch (PIECE - PPARALOOKS - ) - of PC) - TEXTOBJ)) - (* ; - "Assure that the new document knows about this piece's looks") - [COND - ((NULL FIRSTPIECE) - (SETQ NPC NIL)) - [(LISTP FIRSTPIECE) (* ; - "If the piece list really IS a list, grab the next piece from the front") - (SETQ NPC (create PIECE using (pop FIRSTPIECE] - (T (* ; - "Otherwise, follow the NEXTPIECE chain among pieces") - (SETQ NPC (create PIECE using (fetch (PIECE NEXTPIECE) - of PC] - (\INSERTPIECE PC INSPC TEXTOBJ NIL) (* ; - "Insert the piece into the new document") - [COND - (COPYING - - (* ;; "For objects, call the optional AFTERCOPYFN.") - - (LET (OBJ AFTERFN) - (AND (SETQ OBJ (ffetch (PIECE POBJ) of PC)) - (SETQ AFTERFN (IMAGEOBJPROP OBJ 'AFTERCOPYFN)) - (APPLY* AFTERFN OBJ PC CURCH#] - (add CURCH# (fetch (PIECE PLEN) of PC)) - (add LEN (fetch (PIECE PLEN) of PC)) - (SETQ PC NPC)) - (\TEDIT.DIFFUSE.PARALOOKS PREVPC INSPC) - UNDOCHAIN]) - -(\TEDIT.MOVE.PIECEMAPFN - [LAMBDA (PC TEXTOBJ FROMOBJ TOOBJ) (* ; "Edited 12-Jun-90 17:50 by mitani") - (* Called by TEDIT.MOVE via - TEDIT.SELECTED.PIECES, to do the - move-operation processing on the - candidate pieces.) - (PROG (OBJ MOVEFN) - (SETQ PC (create PIECE using PC PNEW _ T)) (* No matter what, we need a fresh - copy.) - [COND - [(fetch (PIECE POBJ) of PC) (* This piece describes an object) - (* Call its WHENMOVEDFN.) - (SETQ OBJ (fetch (PIECE POBJ) of PC)) - (COND - ((SETQ MOVEFN (IMAGEOBJPROP OBJ 'WHENMOVEDFN)) - (* If there's an eventfn for moving, - use it.) - (APPLY* MOVEFN OBJ (CAR (fetch (TEXTOBJ \WINDOW) of TOOBJ)) - (fetch (TEXTOBJ STREAMHINT) of FROMOBJ) - (fetch (TEXTOBJ STREAMHINT) of TOOBJ] - ((fetch (PIECE PSTR) of PC) - - (* If the piece is a string, make our own copy of the string header, even tho - we share characters.) - - (replace (PIECE PSTR) of PC with (SUBSTRING (fetch (PIECE PSTR) - of PC) - 1 - (fetch (PIECE PLEN) - of PC] - (RETURN PC]) - -(\TEDIT.OBJECT.SHOWSEL - [LAMBDA (TEXTOBJ SEL ON SELWINDOW) (* ; "Edited 12-Jun-90 17:50 by mitani") - - (* ;; "We are hilighting (or dehilighting) a selected object. Let it know.") - - (LET ((X (fetch (SELECTION X0) of SEL)) - (Y (fetch (SELECTION Y0) of SEL)) - (FIRSTLINE (CAR (fetch (SELECTION L1) of SEL))) - (OBJ (fetch (SELECTION SELOBJ) of SEL)) - (WIDTH (fetch (SELECTION DX) of SEL)) - (XOFFSET (DSPXOFFSET NIL SELWINDOW)) - (YOFFSET (DSPYOFFSET NIL SELWINDOW)) - (IMAGEFN (IMAGEOBJPROP (fetch (SELECTION SELOBJ) of SEL) - 'WHENOPERATEDONFN)) - (WWIDTH (WINDOWPROP SELWINDOW 'WIDTH)) - (WHEIGHT (WINDOWPROP SELWINDOW 'HEIGHT)) - IMAGEBOX) - (COND - ((INSIDE? (CREATEREGION 0 0 WWIDTH WHEIGHT) - X Y) (* ; - "Only do this if teh selection is on-screen.") - (SETQ IMAGEBOX (OR (IMAGEOBJPROP OBJ 'BOUNDBOX) - (APPLY* (IMAGEOBJPROP OBJ 'IMAGEBOXFN) - OBJ SELWINDOW))) - [COND - (FIRSTLINE - - (* ;; "There's really a line this selection is being displayed on, so we need to use the YBASE of the line- the object's descent, rather than the YBOT, which is what Y0 is.") - - (SETQ Y (- (fetch (LINEDESCRIPTOR YBASE) of FIRSTLINE) - (fetch (IMAGEBOX YDESC) of IMAGEBOX] - (RESETLST - [RESETSAVE (DSPXOFFSET (IDIFFERENCE (IPLUS X XOFFSET) - (fetch XKERN of IMAGEBOX)) - SELWINDOW) - (LIST (FUNCTION DSPXOFFSET) - XOFFSET - (WINDOWPROP SELWINDOW 'DSP] - (RESETSAVE (DSPYOFFSET (IPLUS Y YOFFSET) - SELWINDOW) - (LIST (FUNCTION DSPYOFFSET) - YOFFSET SELWINDOW)) - (RESETSAVE (DSPCLIPPINGREGION (create REGION - LEFT _ 0 - BOTTOM _ 0 - WIDTH _ (IMIN WIDTH (IDIFFERENCE - (fetch (TEXTOBJ - WRIGHT) - of TEXTOBJ) - X)) - HEIGHT _ (fetch YSIZE of IMAGEBOX)) - SELWINDOW) - (LIST (FUNCTION DSPCLIPPINGREGION) - (DSPCLIPPINGREGION NIL SELWINDOW) - SELWINDOW)) - [AND IMAGEFN (ERSETQ (APPLY* IMAGEFN OBJ SELWINDOW (COND - (ON 'HIGHLIGHTED) - (T 'UNHIGHLIGHTED)) - SEL - (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ])]) - -(\TEDIT.RESTARTFN - [LAMBDA (TEXT WINDOW PROPS) (* ; "Edited 12-Jun-90 17:51 by mitani") - (* Restarts a TEdit session.) - (replace (TEXTOBJ \WINDOW) of (fetch (TEXTSTREAM TEXTOBJ) of TEXT) - with NIL) (* Unattach the window, so we do a - redisplay.) - (PROG [(ODIRTY (fetch (TEXTOBJ \DIRTY) of (fetch (TEXTSTREAM TEXTOBJ) - of TEXT] - (SETQ TEXT (OPENTEXTSTREAM TEXT WINDOW NIL NIL PROPS)) - (replace (TEXTOBJ \DIRTY) of (fetch (TEXTSTREAM TEXTOBJ) of TEXT) - with ODIRTY)) (* Now reconnect the world together - again) - (\TEDIT.COMMAND.LOOP (fetch (TEXTSTREAM TEXTOBJ) of TEXT)) - (* Run the editing engine) - (CLOSEW WINDOW) (* Close the edit window) - (\TEXTCLOSEF TEXT) (* Close the underlying files) - (replace (STREAM ACCESSBITS) of TEXT with BothBits) - (* But leave the stream itself - accessible) - (AND (TEXTPROP (fetch (TEXTSTREAM TEXTOBJ) of TEXT) - 'AFTERQUITFN) - (APPLY* (TEXTPROP (fetch (TEXTSTREAM TEXTOBJ) of TEXT) - 'AFTERQUITFN) - WINDOW TEXT)) (* Apply any post-window-close - (and post-QUIT) function) - ]) - -(\TEDIT.CHARDELETE - [LAMBDA (TEXTOBJ SCRATCHSTRING SEL) (* ; "Edited 19-Apr-93 10:50 by jds") - - (* ;; "Do character-backspace deletion for TEDIT") - - (SETQ TEXTOBJ (TEXTOBJ TEXTOBJ)) - (PROG ((PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - TLEN INSCH# INSPC INSPC# TLOOKS START-OF-PIECE) - (COND - [NIL [NOT (ZEROP (SETQ TLEN (fetch (STRINGP OFFST) of SCRATCHSTRING] - (* ; - "If we didn't really insert the text yet, just remove from the text to be inserted") - (replace (STRINGP OFFST) of SCRATCHSTRING with (SUB1 TLEN)) - (replace (STRINGP LENGTH) of SCRATCHSTRING - with (ADD1 (fetch (STRINGP LENGTH) of SCRATCHSTRING] - (T (* ; - "Delete the character just before the current insertpoint.") - (SELECTQ (fetch (SELECTION POINT) of SEL) - (LEFT (SETQ INSCH# (SUB1 (fetch (SELECTION CH#) of SEL)))) - (RIGHT (SETQ INSCH# (SUB1 (fetch (SELECTION CHLIM) of SEL)))) - NIL) - (COND - ((ILEQ INSCH# 0) (* ; - "Can't backspace past start of document") - (RETURN))) - - (* ;; "(SETQ INSPC (\EDITELT PCTB (ADD1 (SETQ INSPC# (\CHTOPCNO INSCH# PCTB)))))") - - (SETQ INSPC (\CHTOPC INSCH# PCTB T)) - (SETQ TLOOKS (\TEDIT.APPLY.STYLES (fetch (PIECE PLOOKS) of INSPC) - INSPC TEXTOBJ)) - [while (AND INSPC (fetch CLINVISIBLE of TLOOKS)) - do (* ; - "Back over any invisible text, which we're no allowed to delete.") - (SETQ INSPC (fetch (PIECE PREVPIECE) of INSPC)) - (SETQ INSCH# (SUB1 START-OF-PIECE)) - (add START-OF-PIECE (IMINUS (fetch (PIECE PLEN) of INSPC))) - (COND - (INSPC (SETQ TLOOKS (\TEDIT.APPLY.STYLES (fetch (PIECE PLOOKS) - of INSPC) - INSPC TEXTOBJ] - (COND - ((ILEQ INSCH# 0) (* ; - "We backed up to the start of the document. Can't go no further.") - (RETURN)) - ((NOT (fetch CLPROTECTED of TLOOKS)) - (* ; - "Can only backspace if the char to go isn't protected.") - (replace (SELECTION CHLIM) of SEL - with (ADD1 (replace (SELECTION CH#) of SEL with INSCH#))) - (* ; - "Set up the selection to point to the character which is to be deleted.") - (replace (SELECTION DCH) of SEL with 1) - (\SHOWSEL SEL NIL NIL) (* ; - "Turn off the underlining, if any, so there's no garbage.") - (\FIXSEL SEL TEXTOBJ) (* ; - "Fix the selection up so it points to the right line and all") - (\TEDIT.DELETE SEL TEXTOBJ T) (* ; "And delete it.") - ]) - -(\TEDIT.COPY.PIECEMAPFN - [LAMBDA (PC TEXTOBJ FROMOBJ TOOBJ) (* ; "Edited 12-Jun-90 17:50 by mitani") - (* Called by TEDIT.COPY via - TEDIT.SELECTED.PIECES, to do the - copy-operation processing on the - candidate pieces.) - (PROG (OBJ NEWOBJ COPYFN) - (SETQ PC (create PIECE using PC PNEW _ T)) (* No matter what, we need a fresh - copy.) - [COND - ((fetch (PIECE POBJ) of PC) (* This piece describes an object) - (SETQ OBJ (fetch (PIECE POBJ) of PC)) - [COND - [(SETQ COPYFN (IMAGEOBJPROP OBJ 'COPYFN)) - (SETQ NEWOBJ (APPLY* COPYFN OBJ (fetch (TEXTOBJ STREAMHINT) of FROMOBJ) - (fetch (TEXTOBJ STREAMHINT) of TOOBJ))) - (COND - ((EQ NEWOBJ 'DON'T) (* He said not to copy this piece -- - abort the whole copy.) - (TEDIT.PROMPTPRINT TEXTOBJ "COPY of this object not allowed." T) - (RETFROM 'TEDIT.COPY)) - (NEWOBJ (replace (PIECE POBJ) of PC with NEWOBJ)) - (T (replace (PIECE POBJ) of PC with (COPYALL OBJ] - (OBJ (* No copy fn; just strike off a - copy of our own) - (replace (PIECE POBJ) of PC with (COPYALL OBJ] - (COND - ((SETQ COPYFN (IMAGEOBJPROP OBJ 'WHENCOPIEDFN)) - (* If there's an eventfn for - copying, use it.) - (APPLY* COPYFN OBJ (WINDOWPROP (CAR (fetch (TEXTOBJ \WINDOW) of TOOBJ)) - 'DSP) - (fetch (TEXTOBJ STREAMHINT) of FROMOBJ) - (fetch (TEXTOBJ STREAMHINT) of TOOBJ] - [COND - ((fetch CLPROTECTED of (fetch (PIECE PLOOKS) of PC)) - (* The source text was protected; - unprotect the copy.) - (replace (PIECE PLOOKS) of PC - with (\TEDIT.UNIQUIFY.CHARLOOKS (create CHARLOOKS - using (fetch (PIECE PLOOKS) - of PC) - CLPROTECTED _ NIL CLSELHERE _ NIL) - TOOBJ] - (RETURN PC]) - -(\TEDIT.DELETE - [LAMBDA (SEL STREAM SELOFF) (* ; "Edited 29-May-91 18:22 by jds") - (* ; - "DELETE THE CHARACTERS SPECIFIED FROM THE MAIN TEXT.") - (* ; - "SELOFF => The selection is already turned off.") - (LET* - ((TEXTOBJ (TEXTOBJ STREAM)) - (CH# (fetch (SELECTION CH#) of SEL)) - (CHLIM (fetch (SELECTION CHLIM) of SEL)) - (LINES (fetch (TEXTOBJ LINES) of TEXTOBJ)) - (WINDOW (fetch (TEXTOBJ \WINDOW) of TEXTOBJ)) - (HEIGHTCHANGED NIL) - (NLINE1 NIL) - (CRFLAG NIL) - (LINES\DELETED NIL) - OLINE1 OLINEN LEN NEXTLINE NL OLINE DX OCHLIM OXLIM OLHEIGHT OLASCENT OLDESCENT DY PREVLINE - TEXTLEN OCR\END SAVEWIDTH IMAGECACHE) - [SETQ LEN (COND - ((IGREATERP CH# (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ)) - (* ; - "Past end of text, so don't delete any") - 0) - ((IGEQ CH# CHLIM) (* ; - "Start is past end, so don't delete any.") - 0) - ((ZEROP (fetch (SELECTION DCH) of SEL)) - (* ; - "Just a caret--no text really selected--so don't delete any") - 0) - ((ZEROP CHLIM) (* ; - "CHLIM is before start of text, so don't delete any") - 0) - (T (* ; "The normal case.") - (IDIFFERENCE CHLIM CH#] (* ; "# of characters to be deleted") - (COND - ((OR (fetch (TEXTOBJ TXTREADONLY) of TEXTOBJ) - (NOT (fetch (SELECTION SET) of SEL)) - (ZEROP LEN)) (* ; "If the selection isn't set, OR the document is read-only, OR the selection contains no characters, don't do anything.") - ) - (T (AND WINDOW (TEDIT.NORMALIZECARET TEXTOBJ SEL)) (* ; - "If the text appears in a window, move the deletion point on-screen") - (SETQ OLINE1 (fetch (SELECTION L1) of SEL)) - (SETQ OLINEN (fetch (SELECTION LN) of SEL)) - (\TEDIT.SHOWSELS TEXTOBJ NIL NIL) (* ; - "Turn off the selection's highlighting") - (AND LINES (\FIXDLINES LINES SEL CH# CHLIM TEXTOBJ)) - (* ; - "Update the line descriptors to account for the deletion") - (\DELETECH CH# CHLIM LEN TEXTOBJ) (* ; - "Do the actual deletion of characters") - (replace THPOINT of (fetch (TEXTOBJ TXTHISTORY) of TEXTOBJ) - with (fetch (SELECTION POINT) of SEL)) - (* ; - "Remember which side of the selection we were on, in case it gets undone.") - (replace (SELECTION CH#) of SEL with (IMAX 1 CH#)) - (replace (SELECTION CHLIM) of SEL with (fetch (SELECTION CH#) of - SEL)) - (replace (SELECTION POINT) of SEL with 'LEFT) - (replace (SELECTION DCH) of SEL with 0) - (COND - (WINDOW (* ; - "If there's no window to update, don't bother") - (SETQ TEXTLEN (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ)) - (* ; "The new text length") - (for OLINE1 inside (fetch (SELECTION L1) of SEL) as OLINEN - inside (fetch (SELECTION LN) of SEL) as TOPLINE - inside (fetch (TEXTOBJ LINES) of TEXTOBJ) as THISW inside - WINDOW - do (SETQ LINES\DELETED - (\TEDIT.CLOSEUPLINES - TEXTOBJ - (OR (AND OLINE1 (COND - ((fetch (LINEDESCRIPTOR DELETED) of OLINE1) - (fetch (LINEDESCRIPTOR PREVLINE) of OLINE1)) - (T OLINE1))) - (COND - ([AND (fetch (LINEDESCRIPTOR NEXTLINE) of TOPLINE) - (OR (IGEQ (fetch (LINEDESCRIPTOR CHAR1) - of (fetch (LINEDESCRIPTOR NEXTLINE) - of TOPLINE)) - (fetch (SELECTION CHLIM) of SEL)) - (ILESSP (fetch (LINEDESCRIPTOR CHARLIM) - of (fetch (LINEDESCRIPTOR NEXTLINE) - of TOPLINE)) - (fetch (SELECTION CH#) of SEL] - (* ; - "The first line on the screen is already past where we're to delete. DON'T delete any lines") - NIL) - (T TOPLINE))) - (AND OLINEN (COND - ((fetch (LINEDESCRIPTOR DELETED) of OLINEN) - (fetch (LINEDESCRIPTOR NEXTLINE) of OLINEN)) - (T OLINEN))) - NIL THISW))) (* ; - "Remove any lines which were completely deleted.") - - (* ;; "This line must needs be reformatted the hard way--it isn't a left ragged line or one of the lines is off-screen.") - - (replace (SELECTION DX) of SEL with 0) - (TEDIT.UPDATE.SCREEN TEXTOBJ NIL T) (* ; - "Correct the text that's displayed already") - (\FIXSEL (fetch (TEXTOBJ SEL) of TEXTOBJ) - TEXTOBJ) (* ; - "Then fix up the selection as needed.") - (\TEDIT.SHOWSELS TEXTOBJ NIL T]) - -(\TEDIT.DIFFUSE.PARALOOKS - [LAMBDA (PRIORPC SUCCEEDINGPC) (* ; "Edited 12-Jun-90 17:48 by mitani") - - (* Given a discontinuity in paragraph looks, caused by an insertion or by a - deletion%: Diffuse the existing paragraph looks across the discontinuity, so - that all the pieces in a single paragraph have consistent looks. - Give preference to diffusion toward the END of the document. - This means that if you delete a CR between paragraphs, the second para is - absorbed into the first.) - - (* PRIORPC and SUCCEEDINGPC are the PIECEs that bound the area of potential - discontinuity%: the change will occur at one boundary or the other....) - - [COND - ((AND PRIORPC (NOT (fetch (PIECE PPARALAST) of PRIORPC))) - (* The discontinuity is inside a - paragraph. Must copy para looks - forward into the text.) - (bind (PPLOOKS _ (fetch (PIECE PPARALOOKS) of PRIORPC)) - (PC _ (fetch (PIECE NEXTPIECE) of PRIORPC)) while PC - do (* Copy para looks info in from the - left, up the the first para break.) - (replace (PIECE PPARALOOKS) of PC with PPLOOKS) - (COND - ((fetch (PIECE PPARALAST) of PC) (* If this piece ends a paragraph, - we're done.) - (RETURN))) - (SETQ PC (fetch (PIECE NEXTPIECE) of PC] - (COND - ((AND SUCCEEDINGPC (NEQ SUCCEEDINGPC 'LASTPIECE)) - - (* Only copy para looks in from the right if there is text to the right.) - - (bind (PPLOOKS _ (fetch (PIECE PPARALOOKS) of SUCCEEDINGPC)) - (PC _ (fetch (PIECE PREVPIECE) of SUCCEEDINGPC)) while (NEQ PC PRIORPC) - do (* Copy para looks in from the - right, up to the first para break) - (COND - ((fetch (PIECE PPARALAST) of PC) (* If this piece ends a paragraph, - we're done.) - (RETURN))) - (replace (PIECE PPARALOOKS) of PC with PPLOOKS) - (SETQ PC (fetch (PIECE PREVPIECE) of PC]) - -(\TEDIT.FOREIGN.COPY? - [LAMBDA (SEL) (* ; "Edited 21-Jan-93 11:46 by jds") - - (* ;; "IF the current process's window isn't a TEdit window, do a 'Copy' by BKSYSBUFing the selected text. Then turn off all the various indicators.") - - (PROG (PROCW (SOURCE.TEXTOBJ (fetch (SELECTION \TEXTOBJ) of SEL)) - CH STREAM DEST.TEDIT? DEST.TEXTOBJ) - [SETQ DEST.TEDIT? (AND (SETQ PROCW (PROCESSPROP (TTY.PROCESS) - 'WINDOW)) - (SETQ DEST.TEXTOBJ (WINDOWPROP PROCW 'TEXTOBJ)) - (NOT (TEXTPROP DEST.TEXTOBJ 'COPYBYBKSYSBUF] - (* ; "Treat the destination specially if (1) the recipient process has a window, and (2) it's a TEdit window, and (3) the TEdit isn't declining special treatment by having COPYBYBKSYSBUF set in its props.") - (COND - ((ZEROP (fetch (SELECTION DCH) of SEL)) (* ; - "Nothing to copy (0 characters in selection); don't bother.") - (SETQ TEDIT.COPY.PENDING NIL)) - ((IGREATERP (fetch (SELECTION CH#) of SEL) - (FETCH (TEXTOBJ TEXTLEN) OF SOURCE.TEXTOBJ)) - (* ; - "Trying to copy from beyond the end of the document; don't bother") - (SETQ TEDIT.COPY.PENDING NIL)) - ((OR (NOT DEST.TEDIT?) - (AND PROCW DEST.TEXTOBJ (NEQ SOURCE.TEXTOBJ DEST.TEXTOBJ) - (fetch (TEXTOBJ EDITOPACTIVE) of DEST.TEXTOBJ))) - (* ; - "OK -- receiver isn't TEdit. Do it the hard way.") - [COND - [(AND (WINDOWPROP [OR PROCW (WFROMDS (PROCESS.TTY (TTY.PROCESS] - 'COPYINSERTFN) - (PROGN (* ; - "This is the exit for looked-string objects") - (OBJECTOUTOFTEDIT SOURCE.TEXTOBJ SEL] - (T (* ; - "Old tedit method, run if OBJECTOUTOFTEDIT is NILL (ie., not installed yet)") - - (* ;; "Still used because COPYINSERT does (PRIN2 BKSYSBUF) if there's no insertfn, which cretes undesired string quotes.") - - (\SETUPGETCH (fetch (SELECTION CH#) of SEL) - SOURCE.TEXTOBJ) (* ; - "Go to the first character to be copied") - (SETQ STREAM (fetch (TEXTOBJ STREAMHINT) of SOURCE.TEXTOBJ)) - (for I from 1 to (fetch (SELECTION DCH) of SEL) - do - - (* ;; "Run thru the selected text, copying only those items that really ARE characters--IMAGEOBJs don't get copied by this route.") - - (COND - ((FIXP (SETQ CH (\BIN STREAM))) - (BKSYSBUF (CHARACTER CH))) - (T (COPYINSERT CH] - (\SHOWSEL SEL NIL NIL) (* ; - "Then reset the copy-pending flags.") - (SETQ TEDIT.COPY.PENDING NIL]) - -(\TEDIT.QUIT - [LAMBDA (W NOFORCE) (* ; "Edited 12-Jun-90 17:50 by mitani") - (* Called by the default - TEDIT.DEFAULT.MENUFN to perform the - QUIT command.) - (PROG* ((TEXTOBJ (WINDOWPROP W 'TEXTOBJ)) - (QUITFNS (TEXTPROP TEXTOBJ 'QUITFN)) - QUITFLG RESP) - [for QUITFN inside QUITFNS while (AND (NEQ QUITFLG 'DON'T) - (NEQ QUITFLG T)) - do (COND - ((EQ QUITFN T) - (SETQ QUITFLG T)) - (T (AND QUITFN (NEQ QUITFN T) - (SETQ QUITFLG (APPLY* QUITFN W (fetch (TEXTOBJ STREAMHINT) - of TEXTOBJ) - TEXTOBJ - (fetch (TEXTOBJ EDITPROPS) of - TEXTOBJ - ] - (COND - ((EQ QUITFLG 'DON'T) - - (* The user supplied a QUITFN, and it returned "DON'T" %, so just ignore all - this Fooferaw and keep editing.) - - (RETURN)) - [(AND (fetch (TEXTOBJ \DIRTY) of TEXTOBJ) - (NOT (fetch (TEXTOBJ MENUFLG) of TEXTOBJ)) - (NEQ QUITFNS T) - (NEQ QUITFLG T)) - - (* If this document has changed, check with the user to make sure he really - wants to do it.) - - (replace (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ - with (MOUSECONFIRM "Not saved yet; LEFT to Quit anyway." T (fetch - (TEXTOBJ - PROMPTWINDOW - ) - of TEXTOBJ] - (T (* Go ahead and quit the next time - we see the main command loop.) - (replace (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ with T))) - [AND (fetch (TEXTOBJ \WINDOW) of TEXTOBJ) - (NOT NOFORCE) - (NEQ (\TEDIT.PRIMARYW TEXTOBJ) - (PROCESSPROP (TTY.PROCESS) - 'WINDOW)) - (TTY.PROCESS (WINDOWPROP (\TEDIT.PRIMARYW TEXTOBJ) - 'PROCESS] - (RETURN (fetch (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ]) - -(\TEDIT.WORDDELETE - [LAMBDA (TEXTOBJ) (* ; "Edited 29-May-91 18:22 by jds") - - (* ;; "Delete the word to the left of the caret.") - - (* ;; "Back word.") - - (* ;; "THIS FUNCTION IS FRAUGHT WITH FENCEPOST PROBLEM POTENTIAL, AND THE WHILE vs FOR LOGIC IS CONVOLUTED. CAUTION, CAUTION.") - - (LET* ((SEL (fetch (TEXTOBJ SEL) of TEXTOBJ)) - (STREAM (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ)) - (READSA (fetch READSA of (OR (fetch (TEXTOBJ TXTWTBL) of TEXTOBJ) - TEDIT.WORDBOUND.READTABLE))) - (INSCH# (SELECTQ (fetch (SELECTION POINT) of SEL) - (LEFT (SUB1 (fetch (SELECTION CH#) of SEL))) - (RIGHT (SUB1 (fetch (SELECTION CHLIM) of SEL))) - NIL)) - CH CHNO) - - (* ;; "INSCH# is the final (i.e., highest-numbered) character to be deleted.") - - (COND - ((IGREATERP INSCH# 0) (* ; - "Don't try to back up past start of file.") - (\SETUPGETCH INSCH# TEXTOBJ) - (SETQ CH (\BIN STREAM)) - (for old CHNO from INSCH# to 1 by -1 - while [AND (SELECTC (COND - ((FIXP CH) - (\SYNCODE READSA CH)) - (T (* ; "It's an object!") - TEXT.TTC)) - (TEXT.TTC NIL) - T) - (NOT (fetch CLPROTECTED of (fetch (PIECE PLOOKS) - of (fetch (TEXTSTREAM - PIECE) - of STREAM] - do - - (* ;; "Skip over any initial separator characters") - - (SETQ CH (\GETCHB TEXTOBJ))) - - (* ;; "At this point, CH is the first non-separator character, and CHNO is the character number of the character BEFORE that one.") - - (for old CHNO from CHNO to 1 by -1 - while [AND (SELECTC (COND - ((FIXP CH) - (\SYNCODE READSA CH)) - (T (* ; "It's an object!") - TEXT.TTC)) - (TEXT.TTC T) - NIL) - (NOT (fetch CLPROTECTED of (fetch (PIECE PLOOKS) - of (fetch (TEXTSTREAM - PIECE) - of STREAM] - do - - (* ;; "Skip over the next group of non-separators (= a 'word')") - - (SETQ CH (\GETCHB TEXTOBJ))) - - (* ;; "At this point, CH is the first separator character you encountered, and CHNO is the character number of the character BEFORE the separator, or 0 if you hit the front of the document.") - - (\SHOWSEL SEL NIL NIL) - - (* ;; "First character to delete:") - - [replace (SELECTION CH#) of SEL with (COND - ((ILESSP CHNO 1) - (* ; - "Front of document, so start deleting at char # 1") - 1) - (T - (* ; -"Otherwise, we need to start 1 later than the separator we hit, which is 2 higher than CHNO is now.") - (IPLUS 2 CHNO] - (replace (SELECTION CHLIM) of SEL with (ADD1 INSCH#)) - (replace (SELECTION DCH) of SEL with (IDIFFERENCE INSCH# CHNO)) - (\FIXSEL SEL TEXTOBJ) - (\SHOWSEL SEL NIL T) - (\TEDIT.DELETE SEL TEXTOBJ]) - -(\TEDIT1 - [LAMBDA (TEXT WINDOW UNSPAWNED PROPS) (* ; "Edited 12-Jun-90 17:50 by mitani") - - (* Does the actual editing work, and re-coercion or process kill when done. - Called by TEDIT directly, or ADD.PROCESSed by it.) - - (SETQ TEXT (OPENTEXTSTREAM TEXT WINDOW NIL NIL PROPS)) (* Open the text for editing) - (\TEDIT.COMMAND.LOOP (fetch (TEXTSTREAM TEXTOBJ) of TEXT)) - (* Run the editing engine) - (CLOSEW WINDOW) - (replace (TEXTOBJ \WINDOW) of (fetch (TEXTSTREAM TEXTOBJ) of TEXT) - with NIL) - (AND (TEXTPROP (fetch (TEXTSTREAM TEXTOBJ) of TEXT) - 'AFTERQUITFN) - (APPLY* (TEXTPROP (fetch (TEXTSTREAM TEXTOBJ) of TEXT) - 'AFTERQUITFN) - WINDOW TEXT)) (* Apply any post-window-close - (and post-QUIT) function) - (COND - (UNSPAWNED (* We're not a distinct process%: - Send back the edited text in some - suitable form) - (COND - ((NEQ (fetch (TEXTOBJ EDITFINISHEDFLG) of (fetch (TEXTSTREAM - TEXTOBJ) - of TEXT)) - T) - (PROG1 (fetch (TEXTOBJ EDITFINISHEDFLG) of (fetch (TEXTSTREAM - TEXTOBJ) - of TEXT)) - (replace (TEXTOBJ EDITFINISHEDFLG) of (fetch (TEXTSTREAM - TEXTOBJ) - of TEXT) with - NIL))) - ((STRINGP (fetch (TEXTOBJ TXTFILE) of (fetch (TEXTSTREAM TEXTOBJ - ) of TEXT))) - (COERCETEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of TEXT) - 'STRINGP)) - (T TEXT]) -) - -(MOVD? 'NILL 'OBJECTOUTOFTEDIT) - - - -(* ; "HOOK for looked-string copy, etc. Used in \TEDIT.FOREIGN.COPY?.") - -(DEFINEQ - -(\CREATE.TEDIT.RESTART.MENU - [LAMBDA NIL - (CREATE MENU - ITEMS _ '(NewEditProcess]) -) - - - -(* ; "Added by yabu.fx, for SUNLOADUP without DWIM.") - - - - -(* ; "Debugging functions") - -(DEFINEQ - -(PLCHAIN - [LAMBDA (LN) (* ; "Edited 29-May-91 18:20 by jds") - (PRINTLINE LN) - (COND - ((fetch (LINEDESCRIPTOR NEXTLINE) of LN) - (PLCHAIN (fetch (LINEDESCRIPTOR NEXTLINE) of LN]) - -(PRINTLINE - [LAMBDA (LN) (* ; "Edited 29-May-91 18:20 by jds") - (* Print out a line descriptor in a - reasonable form.) - (printout T "-----" T LN " Bot: " (fetch (LINEDESCRIPTOR YBOT) of LN) - " Base: " - (fetch (LINEDESCRIPTOR YBASE) of LN) - " Height: " - (fetch (LINEDESCRIPTOR LHEIGHT) of LN) - " Ascent: " - (fetch (LINEDESCRIPTOR ASCENT) of LN) - " Descent: " - (fetch (LINEDESCRIPTOR DESCENT) of LN) - T "Char1: " (fetch (LINEDESCRIPTOR CHAR1) of LN) - " Lim: " - (fetch (LINEDESCRIPTOR CHARLIM) of LN) - " Top: " - (fetch (LINEDESCRIPTOR CHARTOP) of LN)) - (COND - ((fetch (LINEDESCRIPTOR DIRTY) of LN) - (PRIN1 " DIRTY"))) - (COND - ((fetch (LINEDESCRIPTOR CR\END) of LN) - (PRIN1 " CR-at-end"))) - (COND - ((fetch (LINEDESCRIPTOR DELETED) of LN) - (PRIN1 " DELETED"))) - (COND - ((fetch (LINEDESCRIPTOR LHASPROT) of LN) - (PRIN1 " [Protected text]"))) - (COND - ((fetch (LINEDESCRIPTOR LHASTABS) of LN) - (PRIN1 " Has Tabs"))) - (PRIN1 ". -") - (printout T "RMar: " (fetch (LINEDESCRIPTOR RIGHTMARGIN) of LN) - " XLim: " - (fetch (LINEDESCRIPTOR LXLIM) of LN) - " Left: " - (fetch (LINEDESCRIPTOR SPACELEFT) of LN) - T "Prev: " (fetch (LINEDESCRIPTOR PREVLINE) of LN) - T "Next: " (fetch (LINEDESCRIPTOR NEXTLINE) of LN) - T) - (COND - ((AND (IGEQ (fetch (LINEDESCRIPTOR CHAR1) of LN) - 1) - (ILEQ (fetch (LINEDESCRIPTOR CHAR1) of LN) - (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ))) - (* The line is real -- - print it.) - (\SETUPGETCH (fetch (LINEDESCRIPTOR CHAR1) of LN) - TEXTOBJ) - (PRIN1 "|") - [bind CH for CHNO from (fetch (LINEDESCRIPTOR CHAR1) of LN) - to (IMIN (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ) - (fetch (LINEDESCRIPTOR CHARLIM) of LN)) - do (SETQ CH (\GETCH TEXTOBJ)) - (COND - ((SMALLP CH) - (PRIN1 (CHARACTER CH))) - (T (PRINT CH] - (PRIN1 "| -"]) - -(SEEFILE - [LAMBDA (FILE ST ND) (* jds " 4-NOV-83 20:21") - (PROG (CH) - [SETQ FILE (OR (OPENP FILE) - (OPENSTREAM FILE 'INPUT] - (SETFILEPTR FILE (OR ST 0)) - (for I from (OR ST 0) to (OR ND (SUB1 (GETEOFPTR FILE))) - do (printout T I 5 (SETQ CH (BIN FILE)) - 9 - (COND - [(ILEQ CH (CHARCODE ^Z)) - (CONCAT "^" (CHARACTER (IPLUS CH (CHARCODE @] - (T (CHARACTER CH))) - T]) -) - - - -(* ; "Object-oriented editing") - -(DEFINEQ - -(TEDIT.INSERT.OBJECT - [LAMBDA (OBJECT STREAM CH#) (* ; "Edited 21-Apr-93 00:52 by jds") - - (* ;; "Inserts the Image-object OBJECT into text STREAM in front of character CH.") - - (LET* ((TEXTOBJ (TEXTOBJ STREAM)) - (SEL (fetch (TEXTOBJ SEL) of TEXTOBJ)) - SUBSTREAM START-OF-PIECE) - (TEDIT.DO.BLUEPENDINGDELETE SEL TEXTOBJ) (* ; - "Do the pending delete, if there is one.") - (COND - ((NULL CH#) (* ; - "Omitted CH# means put it at the current spot.") - (SETQ CH# SEL))) - [COND - ((type? SELECTION CH#) - - (* ;; "If the CH# passed in was a selection (or we set it because he defaulted CH#), then compute the REAL CH#.") - - (SETQ CH# (SELECTQ (fetch (SELECTION POINT) of CH#) - (LEFT (fetch (SELECTION CH#) of CH#)) - (RIGHT (fetch (SELECTION CHLIM) of CH#)) - (SHOULDNT] - (PROG ((PCTB (ffetch (TEXTOBJ PCTB) of TEXTOBJ)) - TEXTLEN PC PCNO CHNO NEWPC PREVPC INSERTFN) - (COND - ((fetch (TEXTOBJ TXTREADONLY) of TEXTOBJ) - - (* ;; - "If no changes are allowed to this TEdit, bail out without doing anything.") - - (RETURN))) - (\SHOWSEL SEL NIL NIL) (* ; "Turn off the selection for now") - (SETQ TEXTLEN (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ)) - (SETQ CH# (IMIN CH# (ADD1 TEXTLEN))) (* ; - "CH# we're to insert these characters in front of") - (freplace (TEXTOBJ \INSERTFIRSTCH) of TEXTOBJ with -1) - [SETQ PC (COND - ((ILEQ CH# TEXTLEN) - (\CHTOPC CH# PCTB T)) - (T 'LASTPIECE] (* ; - "Piece we're to insert in front of or inside") - (SETQ NEWPC (create PIECE - PSTR _ NIL - PFILE _ NIL - POBJ _ OBJECT - PLEN _ 1)) (* ; "The new piece we're inserting") - [COND - ((SETQ SUBSTREAM (IMAGEOBJPROP OBJECT 'SUBSTREAM)) - (* ; - "If this is computed text in bulk, fix the length.") - (replace (PIECE PLEN) of NEWPC with (fetch (TEXTOBJ TEXTLEN) - of (fetch ( - TEXTSTREAM - TEXTOBJ) - of SUBSTREAM] - (COND - ((OR (IGREATERP CH# TEXTLEN) - (IEQP CH# START-OF-PIECE)) (* ; - "We're inserting on a piece boundary; do it, then remember the prior piece.") - (\INSERTPIECE NEWPC PC TEXTOBJ)) - (T (* ; - "Not on a piece boundary; split the piece we're inside of, then insert.") - (\INSERTPIECE NEWPC (\SPLITPIECE PC (IDIFFERENCE CH# START-OF-PIECE) - TEXTOBJ) - TEXTOBJ))) - (COND - ((SETQ INSERTFN (IMAGEOBJPROP OBJECT 'WHENINSERTEDFN)) - (* ; - "If there is a WHENINSERTEDFN, apply it.") - (APPLY* INSERTFN OBJECT (AND (CAR (fetch (TEXTOBJ \WINDOW) of TEXTOBJ - )) - (WINDOWPROP (CAR (fetch (TEXTOBJ \WINDOW) - of TEXTOBJ)) - 'DSP)) - NIL STREAM))) - (SETQ PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - (SETQ PREVPC (fetch (PIECE PREVPIECE) of NEWPC)) - (* ; "Fill in the para looks") - [COND - [PREVPC (COND - [(AND (fetch (PIECE PPARALAST) of PREVPC) - (fetch (PIECE NEXTPIECE) of NEWPC)) - (replace (PIECE PPARALOOKS) of NEWPC - with (fetch (PIECE PPARALOOKS) of (fetch - (PIECE NEXTPIECE) - of NEWPC] - (T (replace (PIECE PPARALOOKS) of NEWPC - with (fetch (PIECE PPARALOOKS) of PREVPC] - (T (COND - ((SETQ PREVPC (fetch (PIECE NEXTPIECE) of NEWPC)) - (replace (PIECE PPARALOOKS) of NEWPC with (fetch - (PIECE PPARALOOKS) - of PREVPC))) - (T (replace (PIECE PPARALOOKS) of NEWPC with (fetch - (TEXTOBJ - FMTSPEC) - of TEXTOBJ] - (replace (PIECE PLOOKS) of NEWPC with (fetch (TEXTOBJ CARETLOOKS) - of TEXTOBJ)) - (\TEDIT.HISTORYADD TEXTOBJ (create TEDITHISTORYEVENT - THACTION _ 'Insert - THCH# _ CH# - THLEN _ 1 - THFIRSTPIECE _ NEWPC)) - (SETQ TEXTLEN (freplace (TEXTOBJ TEXTLEN) of TEXTOBJ - with (IPLUS (fetch (PIECE PLEN) of NEWPC) - TEXTLEN))) - (replace (TEXTOBJ \INSERTPCVALID) of TEXTOBJ with NIL) - (* ; - "Since adding an IMAGEOBJ creates a new piece, the old insertion cache piece is no longer valid.") - (replace (TEXTOBJ \DIRTY) of TEXTOBJ with T) - (replace (THISLINE DESC) of (fetch (TEXTOBJ THISLINE) of TEXTOBJ) - with NIL) - (replace (SELECTION SELKIND) of SEL with 'CHAR) - (COND - ((fetch (TEXTOBJ \WINDOW) of TEXTOBJ) - (\FIXILINES TEXTOBJ SEL CH# (fetch (PIECE PLEN) of NEWPC) - (SUB1 TEXTLEN)) - (replace (SELECTION DCH) of SEL with 0) - (replace (SELECTION DX) of SEL with 0) - (TEDIT.UPDATE.SCREEN TEXTOBJ) - (\FIXSEL SEL TEXTOBJ) - (\SHOWSEL SEL NIL T)) - (T [replace (SELECTION CHLIM) of SEL - with (replace (SELECTION CH#) of SEL - with (IPLUS CH# (fetch (PIECE PLEN) of NEWPC] - (replace (SELECTION DCH) of SEL with 0) - (replace (SELECTION DX) of SEL with 0) - (replace (SELECTION POINT) of SEL with 'LEFT) - (replace (THISLINE DESC) of (fetch (TEXTOBJ THISLINE) - of TEXTOBJ) with NIL))) - (\COPYSEL SEL TEDIT.SELECTION]) - -(TEDIT.EDIT.OBJECT - [LAMBDA (STREAM OBJ) (* ; "Edited 29-May-91 18:23 by jds") - (PROG ([TEXTOBJ (COND - ((type? TEXTOBJ STREAM) - STREAM) - ((type? STREAM STREAM) - (fetch (TEXTSTREAM TEXTOBJ) of STREAM)) - ((SHOULDNT] - SEL LL CH# SELOBJ EDITFN) - [COND - [(AND OBJ (IMAGEOBJP OBJ)) - (SETQ CH# (TEDIT.FIND.OBJECT TEXTOBJ OBJ)) - (COND - (CH# (SETQ SEL (fetch (TEXTOBJ SCRATCHSEL) of TEXTOBJ)) - (replace (SELECTION CH#) of SEL with CH#) - (replace (SELECTION CHLIM) of SEL with (ADD1 CH#)) - (SETQ SELOBJ OBJ) - (replace (SELECTION DCH) of SEL with 1) - (replace (SELECTION \TEXTOBJ) of SEL with TEXTOBJ) - (\FIXSEL SEL TEXTOBJ)) - (T (TEDIT.PROMPTPRINT TEXTOBJ "Can't find specified object." T] - (T (SETQ SEL (fetch (TEXTOBJ SEL) of TEXTOBJ)) - (SETQ OBJ (fetch (SELECTION SELOBJ) of SEL] - (COND - [OBJ (* OK There's an object selected. - Edit it.) - (SETQ EDITFN (IMAGEOBJPROP OBJ 'EDITFN)) - (COND - ((AND EDITFN (APPLY* EDITFN OBJ)) (* If the editfn makes a change, - update the screen.) - (for LINE inside (fetch (SELECTION L1) of SEL) - do (replace (LINEDESCRIPTOR DIRTY) of LINE with T)) - (replace (TEXTOBJ TXTNEEDSUPDATE) of TEXTOBJ with T) - (TEDIT.UPDATE.SCREEN TEXTOBJ] - (T (* No object selected.) - (TEDIT.PROMPTPRINT TEXTOBJ "Please select an editable object first." T]) - -(TEDIT.FIND.OBJECT - [LAMBDA (TEXTOBJ OBJ) (* ; "Edited 3-May-93 12:52 by jds") - (* ; - "Find OBJ, if it's in TEXTOBJ, and return CH#. Else return nil") - (SETQ TEXTOBJ (TEXTOBJ TEXTOBJ)) - (LET ((PC (\GETBASEPTR (\FIRSTNODE (fetch PCTB of TEXTOBJ)) - 0)) - (CH 1)) - (while PC do (COND - ((AND (NOT (ATOM PC)) - (EQ (fetch (PIECE POBJ) of PC) - OBJ)) - (RETURN CH)) - (T (add CH (ffetch (PIECE PLEN) of PC)) - (SETQ PC (fetch (PIECE NEXTPIECE) of PC]) - -(TEDIT.FIND.OBJECT.SUBTREE - [LAMBDA (PCTB OBJ) (* ; "Edited 12-Jun-90 17:52 by mitani") - (COND - ((NULL PCTB) - NIL) - ((ATOM (fetch (PCTNODE PCE) of PCTB)) - (OR (TEDIT.FIND.OBJECT.SUBTREE (fetch (PCTNODE LO) of PCTB) - OBJ) - (TEDIT.FIND.OBJECT.SUBTREE (fetch (PCTNODE HI) of PCTB) - OBJ))) - ((EQ (fetch (PIECE POBJ) of (fetch (PCTNODE PCE) of PCTB)) - OBJ) - (fetch (PCTNODE CHNUM) of PCTB)) - (T (OR (TEDIT.FIND.OBJECT.SUBTREE (fetch (PCTNODE LO) of PCTB) - OBJ) - (TEDIT.FIND.OBJECT.SUBTREE (fetch (PCTNODE HI) of PCTB) - OBJ]) - -(TEDIT.PUT.OBJECT - [LAMBDA (PIECE OFILE FONTFILE CURCH#) (* ; "Edited 12-Jun-90 17:49 by mitani") - (* Given a piece which describes an - object, put the object out there.) - (PROG ((OBJECT (fetch (PIECE POBJ) of PIECE)) - (FONTCH# (GETFILEPTR FONTFILE)) - TOFILE LEN) - (\DWOUT FONTFILE 0) (* Placeholder for length of the - object's description) - (\SMALLPOUT FONTFILE \PieceDescriptorOBJECT) (* Mark this as setting the piece's - looks) - (\ATMOUT FONTFILE (IMAGEOBJPROP OBJECT 'GETFN)) (* The FN to apply to reconstruct - the object) - (APPLY* (IMAGEOBJPROP OBJECT 'PUTFN) - OBJECT OFILE) - (SETFILEPTR FONTFILE FONTCH#) - - (* Now go back and fill in the length of the text description of the object.) - - [\DWOUT FONTFILE (SETQ LEN (ADD1 (IDIFFERENCE (GETEOFPTR OFILE) - CURCH#] - (SETFILEPTR FONTFILE -1) (* Make sure we're at the end of the - font file) - (AND (RANDACCESSP OFILE) - (SETFILEPTR OFILE -1)) (* And the text part of the file) - (RETURN LEN]) - -(TEDIT.GET.OBJECT - [LAMBDA (STREAM PIECE FILE CURCH#) (* ; "Edited 12-Jun-90 17:50 by mitani") - (* ; "Get an object from the file") - (* ; - "CURCH# = fileptr within the text section of the file where the object's text starts.") - (PROG ((TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of STREAM)) - FILEPTRSAVE NAMELEN GETFN OBJ NBYTES) - - (* ;; "rrb 10-AUG-87 --- calculate the length of the image object's data. This assumes that the file is currently pointed at the end of the data which is where the GETFN is written {I think}") - - (SETQ NBYTES (DIFFERENCE (GETFILEPTR FILE) - CURCH#)) - (SETQ GETFN (\ATMIN FILE)) (* ; - "The GETFN for this kind of IMAGEOBJ") - (SETQ FILEPTRSAVE (GETFILEPTR FILE)) (* ; - "Save our file location thru the building of the object") - (SETFILEPTR FILE CURCH#) - (SETQ OBJ (READIMAGEOBJ FILE GETFN NIL NBYTES)) - (COND - ((IMAGEOBJPROP OBJ 'UNKNOWNGETFN) (* ; - "If the object has an unknown getfn property, then it's an encapsulated object. Warn the user") - (TEDIT.PROMPTPRINT STREAM "WARNING: Document contains unknown image objects." T))) - (SETFILEPTR FILE FILEPTRSAVE) - (replace (PIECE POBJ) of PIECE with OBJ) - (replace (PIECE PFILE) of PIECE with NIL) - (replace (PIECE PSTR) of PIECE with NIL) - [replace (PIECE PLOOKS) of PIECE with (COND - ((fetch (PIECE PREVPIECE) - of PIECE) - (fetch (PIECE PLOOKS) - of (fetch (PIECE PREVPIECE - ) - of PIECE))) - (T (OR (fetch (TEXTOBJ - DEFAULTCHARLOOKS - ) - of TEXTOBJ) - (\TEDIT.UNIQUIFY.CHARLOOKS - (CHARLOOKS.FROM.FONT - DEFAULTFONT) - TEXTOBJ] - (RETURN (fetch (PIECE POBJ) of PIECE]) - -(TEDIT.OBJECT.CHANGED - [LAMBDA (STREAM OBJECT) (* ; "Edited 12-Jun-90 17:51 by mitani") - - (* Notify TEdit that an object has changed, and the display may need to be - updated.) - - (PROG ((TEXTOBJ (TEXTOBJ STREAM)) - (LINES (fetch (TEXTOBJ LINES) of (TEXTOBJ STREAM))) - PCINFO CHANGED CHANGEDCH#) - (SETQ PCINFO (TEDIT.MAPPIECES TEXTOBJ [FUNCTION (LAMBDA (CH# PC PCNO OBJ) - (AND (EQ OBJ (fetch (PIECE POBJ) - of PC)) - 'STOP] - OBJECT)) (* Find the piece containing this - object) - (OR PCINFO (HELP "Changed OBJECT not found!?")) - (SETQ CHANGEDCH# (CAR PCINFO)) (* Get the CH# of the changed object) - (\TEDIT.MARK.LINES.DIRTY TEXTOBJ CHANGEDCH# CHANGEDCH#) - (* Mark affected lines) - (replace (TEXTOBJ \DIRTY) of TEXTOBJ with T) - (* And mark the document dirty.) - (\SHOWSEL (fetch (TEXTOBJ SEL) of TEXTOBJ) - NIL NIL) - (TEDIT.UPDATE.SCREEN TEXTOBJ) - (\FIXSEL (fetch (TEXTOBJ SEL) of TEXTOBJ) - TEXTOBJ) - (\SHOWSEL (fetch (TEXTOBJ SEL) of TEXTOBJ) - NIL T]) -) - -(FILESLOAD TEDITFIND TEDITHISTORY TEDITFILE TEDITWINDOW TEDITSELECTION IMAGEOBJ TFBRAVO TEDITHCPY - TEDITPAGE TEDITMENU TEDITFNKEYS) - - - -(* ; "TEDIT Support information") - - -(RPAQQ TEDITSYSTEMDATE " 4-May-95 10:37:23") - -(RPAQ TEDITSUPPORT "TEditSupport.PA") -(DEFINEQ - -(MAKETEDITFORM - [LAMBDA NIL (* jds "12-Mar-85 04:00") - (* Builds a trouble-report form for - TEdit.) - (MAKEXXXSUPPORTFORM "TEdit" TEDITSUPPORT TEDITSYSTEMDATE]) -) - -(ADDTOVAR LAFITESPECIALFORMS ("TEdit Report" 'MAKETEDITFORM "Report a problem with TEdit")) - -(SETQ LAFITEFORMSMENU NIL) - - - -(* ; "LISTFILES Interface, so the system can decide if a file is a TEdit file.") - - -(ADDTOVAR PRINTFILETYPES (TEDIT (TEST \TEDIT.FORMATTEDP1) - (EXTENSION (TEDIT)))) -(PUTPROPS TEDIT COPYRIGHT ("Venue & Xerox Corporation" 1983 1984 1985 1986 1987 1988 1989 1990 1991 -1992 1993 1995)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (4494 115122 (\TEDIT2 4504 . 7255) (COERCETEXTOBJ 7257 . 15584) (TEDIT 15586 . 20255) ( -TEDIT.CHARWIDTH 20257 . 22281) (TEDIT.COPY 22283 . 30881) (TEDIT.DELETE 30883 . 31573) ( -TEDIT.DO.BLUEPENDINGDELETE 31575 . 34642) (TEDIT.INSERT 34644 . 40174) (TEDIT.KILL 40176 . 41733) ( -TEDIT.MAPLINES 41735 . 43134) (TEDIT.MAPPIECES 43136 . 44092) (TEDIT.MOVE 44094 . 54143) (TEDIT.QUIT -54145 . 56145) (TEDIT.STRINGWIDTH 56147 . 56818) (TEDIT.\INSERT 56820 . 58845) (TEXTOBJ 58847 . 59972) - (TEXTSTREAM 59974 . 61589) (\TEDIT.INCLUDE 61591 . 65491) (\TEDIT.INSERT.PIECES 65493 . 75524) ( -\TEDIT.MOVE.PIECEMAPFN 75526 . 77605) (\TEDIT.OBJECT.SHOWSEL 77607 . 81236) (\TEDIT.RESTARTFN 81238 . -83233) (\TEDIT.CHARDELETE 83235 . 87197) (\TEDIT.COPY.PIECEMAPFN 87199 . 90424) (\TEDIT.DELETE 90426 - . 97944) (\TEDIT.DIFFUSE.PARALOOKS 97946 . 100710) (\TEDIT.FOREIGN.COPY? 100712 . 104439) ( -\TEDIT.QUIT 104441 . 107587) (\TEDIT.WORDDELETE 107589 . 112422) (\TEDIT1 112424 . 115120)) (115236 -115352 (\CREATE.TEDIT.RESTART.MENU 115246 . 115350)) (115451 119140 (PLCHAIN 115461 . 115735) ( -PRINTLINE 115737 . 118501) (SEEFILE 118503 . 119138)) (119181 138824 (TEDIT.INSERT.OBJECT 119191 . -128268) (TEDIT.EDIT.OBJECT 128270 . 130526) (TEDIT.FIND.OBJECT 130528 . 131421) ( -TEDIT.FIND.OBJECT.SUBTREE 131423 . 132229) (TEDIT.PUT.OBJECT 132231 . 133890) (TEDIT.GET.OBJECT 133892 - . 137091) (TEDIT.OBJECT.CHANGED 137093 . 138822)) (139100 139463 (MAKETEDITFORM 139110 . 139461))))) -STOP diff --git a/obsolete/library/new/TEDIT.LCOM b/obsolete/library/new/TEDIT.LCOM deleted file mode 100644 index 4a95300d72bcc84de296c4baba221d493288f209..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37179 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 C@8);_ diff --git a/obsolete/library/new/TEDITCOMMAND.LCOM b/obsolete/library/new/TEDITCOMMAND.LCOM deleted file mode 100644 index 386f05df20da9cb450fdc9acd4740a37e298e824..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16503 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 W&LHrku|fReJN9%sjxI63!T$$TDcM8- diff --git a/obsolete/library/new/TEDITDCL b/obsolete/library/new/TEDITDCL deleted file mode 100644 index f2d63f6f..00000000 --- a/obsolete/library/new/TEDITDCL +++ /dev/null @@ -1,1654 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") -(FILECREATED "22-Mar-95 18:05:53" {DSK}library>new>TEDITDCL.;1 86457 - - changes to%: (RECORDS PIECE) - - previous date%: "25-Aug-94 10:53:00" {DSK}library>TEDITDCL.;2) - - -(* ; " -Copyright (c) 1986, 1987, 1988, 1989, 1990, 1991, 1993, 1994, 1995 by Venue. All rights reserved. -") - -(PRETTYCOMPRINT TEDITDCLCOMS) - -(RPAQQ TEDITDCLCOMS - [ - -(* ;;; "This file is the collected record declarations and compile-time necessities for TEDIT.") - - - (* ;; "FROM TEDIT") - - (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (\SCRATCHLEN 64))) - - (* ;; "FROM TEDITSELECTION") - - (RECORDS SELECTION) - (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (COPYSELSHADE 30583) - (COPYLOOKSSELSHADE 30583) - (EDITMOVESHADE -1) - (EDITGRAY 32800))) - (VARS TEDITFILES) - - (* ;; "FROM TEDITSCREEN") - - (RECORDS THISLINE LINEDESCRIPTOR LINECACHE) - (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (LMInvisibleRun 401) - (LMLooksChange 400))) - - (* ;; "FROM TEXTOFD") - - (RECORDS EDITMARK) - (RECORDS PIECE TEXTOBJ TEXTIMAGEDATA TEXTSTREAM) - (OPTIMIZERS TEXTPROP) - (COMS - (* ;; "Private data structures and constants FROM TEXTOFD") - - (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (\PCTBFreePieces 0) - (\PCTBLastPieceOffset 1) - (\FirstPieceOffset 2) - (\SecondPieceOffset 4) - (\EltsPerPiece 2)) - (MACROS \EDITELT \GETCH \GETCHB \EDITSETA \WORDSETA) - (GLOBALVARS \TEXTIMAGEOPS \TEXTOFD \TEXTFDEV))) - - -(* ;;; "FROM TEDITPAGE") - - (RECORDS PAGEFORMATTINGSTATE PAGEREGION) - (DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS TEDITPAPERSIZE) - (FUNCTIONS \NEW-COLUMN-START \FIRST-COLUMN-START)) - - (* ;; "FROM TEDITFIND") - - (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (\AlphaNumericFlag 256) - (\AlphaFlag 512) - (\OneCharPattern 1024) - (\AnyStringPattern 1025) - (\OneAlphaPattern 1026) - (\AnyAlphaPattern 1027) - (\OneNonAlphaPattern 1028) - (\AnyNonAlphaPattern 1029) - (\LeftBracketPattern 1030) - (\RightBracketPattern 1031) - (\SpecialPattern 1024))) - - (* ;; " FROM TEDITLOOKS") - - (RECORDS CHARLOOKS FMTSPEC PENDINGTAB) - (DECLARE%: EVAL@COMPILE DONTCOPY (MACROS \SMALLPIN \SMALLPOUT ONOFF)) - - (* ;; "FROM TEDITMENU") - - (DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS MBUTTON)) - (INITRECORDS MBUTTON) - (DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS NWAYBUTTON)) - (INITRECORDS NWAYBUTTON) - (DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS MARGINBAR)) - (INITRECORDS MARGINBAR) - (DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS TAB)) - (RECORDS MB.3STATE MB.BUTTON MB.INSERT MB.MARGINBAR MB.NWAY MB.TEXT MB.TOGGLE) - (FUNCTIONS WITHOUT-UPDATES) - - (* ;; "FROM TEDITHISTORY") - - (RECORDS TEDITHISTORYEVENT) - - (* ;; "FROM TEDITFILE") - - (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (\PieceDescriptorLOOKS 0) - (\PieceDescriptorOBJECT 1) - (\PieceDescriptorPARA 2) - (\PieceDescriptorPAGEFRAME 3) - (\PieceDescriptorCHARLOOKSLIST 4) - (\PieceDescriptorPARALOOKSLIST 5) - (\PieceDescriptorSAFEOBJECT 6))) - - (* ;; "FROM TEDITCOMMAND") - - (DECLARE%: EVAL@COMPILE DONTCOPY (MACROS \INSERT\TTY\BUFFER \TEDIT.MOUSESTATE \TEDIT.CHECK)) - (DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS TEDITTERMCODE)) - (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (NONE.TTC 0) - (CHARDELETE.TTC 1) - (WORDDELETE.TTC 2) - (DELETE.TTC 3) - (FUNCTIONCALL.TTC 4) - (REDO.TTC 5) - (UNDO.TTC 6) - (CMD.TTC 7) - (NEXT.TTC 8) - (EXPAND.TTC 9) - (PUNCT.TTC 20) - (TEXT.TTC 21) - (WHITESPACE.TTC 22))) - (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (MSPACE 153) - (NSPACE 152) - (THINSPACE 159) - (FIGSPACE 154))) - - (* ;; "FROM TEDITWINDOW") - - (DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS TEDITCARET)) - (INITRECORDS TEDITCARET) - - (* ;; "FROM PCTREE added by Nakamura") - - (RECORDS PCTNODE) - - -(* ;;; "THE END") - - (COMS - (* ;; "Bits in the CHARTABLE that control line breaking, and what happens when a line is broken on this character ") - - (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (NOTBEFORE.LB 1) - (* ; - "Must not break before this character (e.g. Japanese right-paren)") - (NOTAFTER.LB 2) - (* ; - "Must not break after this character (e.g. Japanese open-quote)") - (BEFORE.LB 4) - (* ; "OK to break before this character, provided it's OK to break after the prior char (true of most non-white-space)") - (AFTER.LB 8) - (* ; - "OK to break after this char, if it's OK to break before the next one (true of most white space)") - (DISAPPEAR-IF-NOT-SPLIT.LB 16) - (* ; "This character shouldn't be rendered if it isn't the last char on the line (non-breaking hyphen has this)") - (NEWCHAR-IF-SPLIT.LB 32) - (* ; "Look this char up in *TEDIT-SPLITCHAR-HASH* if this IS the last character on a line, and render it as the char we found.") - ]) - - - -(* ;;; "This file is the collected record declarations and compile-time necessities for TEDIT.") - - - - -(* ;; "FROM TEDIT") - -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RPAQQ \SCRATCHLEN 64) - - -(CONSTANTS (\SCRATCHLEN 64)) -) -) - - - -(* ;; "FROM TEDITSELECTION") - -(DECLARE%: EVAL@COMPILE - -(DATATYPE SELECTION - ( - (* ;; "Description of a piece of selected text for TEdit. Text has to be selected before it can be operated on by the user.") - - Y0 (* ; - "Y value of topmost line of selection") - X0 (* ; - "X value of left edge of selection") - DX (* ; - "Width of the selection, if it's on one line.") - CH# (* ; - "CH# of the first selected character") - XLIM (* ; - "X value of right edge of last selected character") - CHLIM (* ; - "CH# of the last character in the selection") - DCH (* ; - "# of characters selected (can be zero, for point selection.)") - L1 (* ; - "-> line descriptor for the line where the first selected character is") - LN (* ; - "-> line descriptor for the line which contains the end of the selection") - YLIM (* ; - "Y value of the bottom of the line that ends the selection") - POINT (* ; - "Which end should the caret appear at? (LEFT or RIGHT)") - (SET FLAG) (* ; - "T if this selection is real; NIL if not") - (\TEXTOBJ FULLXPOINTER) (* ; - "TEXTOBJ that describes the selected text") - SELKIND (* ; - "What kind of selection? CHAR or WORD or LINE or PARA") - HOW (* ; - "SHADE used to highlight this selection") - HOWHEIGHT (* ; - "Height of the highlight (1 usually, full line for delete selection...)") - (HASCARET FLAG) (* ; - "T if there should be a caret for this selection") - SELOBJ (* ; - "If this selection is inside an object, which object?") - (ONFLG FLAG) (* ; - "T if the selection is highlighted on the screen, else NIL") - SELOBJINFO (* ; - "A Place for the selected object to put info about selection inside itself.") - ) - SET _ NIL HOW _ BLACKSHADE HOWHEIGHT _ 1 HASCARET _ T Y0 _ 0 X0 _ 0 POINT _ 'LEFT L1 _ - (LIST NIL) - LN _ (LIST NIL)) -) - -(/DECLAREDATATYPE 'SELECTION - '(POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER FLAG - FULLXPOINTER POINTER POINTER POINTER FLAG POINTER FLAG POINTER) - '((SELECTION 0 POINTER) - (SELECTION 2 POINTER) - (SELECTION 4 POINTER) - (SELECTION 6 POINTER) - (SELECTION 8 POINTER) - (SELECTION 10 POINTER) - (SELECTION 12 POINTER) - (SELECTION 14 POINTER) - (SELECTION 16 POINTER) - (SELECTION 18 POINTER) - (SELECTION 20 POINTER) - (SELECTION 20 (FLAGBITS . 0)) - (SELECTION 22 FULLXPOINTER) - (SELECTION 24 POINTER) - (SELECTION 26 POINTER) - (SELECTION 28 POINTER) - (SELECTION 28 (FLAGBITS . 0)) - (SELECTION 30 POINTER) - (SELECTION 30 (FLAGBITS . 0)) - (SELECTION 32 POINTER)) - '34) -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RPAQQ COPYSELSHADE 30583) - -(RPAQQ COPYLOOKSSELSHADE 30583) - -(RPAQQ EDITMOVESHADE -1) - -(RPAQQ EDITGRAY 32800) - - -(CONSTANTS (COPYSELSHADE 30583) - (COPYLOOKSSELSHADE 30583) - (EDITMOVESHADE -1) - (EDITGRAY 32800)) -) -) - -(RPAQQ TEDITFILES (PCTREE TEXTOFD TEDIT TEDITABBREV TEDITCOMMAND TEDITDCL TEDITFILE TEDITFIND - TEDITFNKEYS TEDITHCPY TEDITHISTORY TEDITLOOKS TEDITMENU TEDITPAGE - TEDITSCREEN TEDITSELECTION TEDITWINDOW)) - - - -(* ;; "FROM TEDITSCREEN") - -(DECLARE%: EVAL@COMPILE - -(DATATYPE THISLINE ( - (* ;; - "Cache for line-related character location info, for selection and line-display code to use.") - - (DESC FULLXPOINTER) (* ; - "Line descriptor for the line this describes now") - LEN (* ; - "Length of the line in characters") - CHARS - - (* ;; "Array of character codes (or objects) on the line (charcode of 400 => dummy entry for looks change--go get next entry in LOOKS)") - - WIDTHS (* ; - "Array of each character's width in points") - LOOKS (* ; - "Array of any looks changes within the line. LOOKS (0) = starting character looks for the line") - TLSPACEFACTOR (* ; - "The SPACEFACTOR to be used in printing this line") - TLFIRSTSPACE (* ; "The first space to which SPACEFACTOR is to apply. This is used so that spaces to the left of a TAB have their default width.") - ) - LEN _ 0 CHARS _ (ARRAY 512 'POINTER 0 0) - WIDTHS _ (ARRAY 512 'POINTER 0 0) - LOOKS _ (ARRAY 512 'POINTER NIL 0) - TLFIRSTSPACE _ 0) - -(DATATYPE LINEDESCRIPTOR - ( - (* ;; - "Description of a single line of formatted text, either on the display or for a printed page.") - - YBOT (* ; - "Y value for the bottom of the line (below the descent)") - YBASE (* ; - "Yvalue for the base line the characters sit on") - LEFTMARGIN (* ; "Left margin, in screen points") - RIGHTMARGIN (* ; "Right margin, in screen points") - LXLIM (* ; "X value of right edge of rightmost character on the line (may exceed right margin, if char is a space.)") - SPACELEFT (* ; - "Space left on the line, ignoring trailing blanks & CRs.") - LHEIGHT (* ; - "Total height of hte line, Ascent+Descent.") - ASCENT (* ; "Ascent of the line above YBASE") - DESCENT (* ; - "How far line descends below YBASE") - LTRUEDESCENT (* ; - "The TRUE DESCENT for this line, unadjusted for line leading.") - LTRUEASCENT (* ; - "The TRUE ASCENT for this line, unadjusted for pre-paragraph leading.") - CHAR1 (* ; - "CH# of the first character on the line.") - CHARLIM (* ; - "CH# of the last character on the line") - CHARTOP (* ; - "CH# of the character which forced the line break (may exceed CHARLIM)") - NEXTLINE (* ; "Next line chain pointer") - (PREVLINE FULLXPOINTER) (* ; "Previous line chain pointer") - LMARK (* ; "One of SOLID, GREY, NIL. Tells what kind of special-line marker should be put in the left margin for this paragraph. (For hardcopy, can also be an indicator for special processing?)") - LTEXTOBJ (* ; "A cached TEXTOBJ that this line took its text from. Used in hardcopy to disambiguate when chno's should be updated...") - CACHE (* ; "A cached THISLINE, for keeping hardcopy info around while we crunch with the line descriptors to make things fit.") - LDOBJ (* ; - "The object which lies behind this line of text, for updating, etc.") - LFMTSPEC (* ; - "The format spec for this line's paragraph (eventually)") - (DIRTY FLAG) (* ; - "T if this line has changed since it was last formatted.") - (CR\END FLAG) (* ; "T if this line ends with a CR.") - (DELETED FLAG) (* ; "T if this line has been completely deleted since it was last formatted or displayed. (Used by deletion routines to detect garbage lines)") - (LHASPROT FLAG) (* ; - "This line contains protected text.") - (LHASTABS FLAG) (* ; "If this line has a tab in it, this is the line-relative ch# of the final tab. This is to let us punt properly with tabs in a line.") - (1STLN FLAG) (* ; - "This line is the first line in a paragraph") - (LSTLN FLAG) (* ; - "This is the last line in a paragraph") - ) - CHARLIM _ 1000000 NEXTLINE _ NIL PREVLINE _ NIL DIRTY _ NIL YBOT _ 0 YBASE _ 0 LEFTMARGIN _ - 0 DELETED _ NIL) - -(DATATYPE LINECACHE ( - (* ;; "Image cache for display lines.") - - LCBITMAP (* ; - "The bitmap that will be used by this instance of the cache") - (LCNEXTCACHE FULLXPOINTER) (* ; - "The next cache in the chain, for screen updates.") - )) -) - -(/DECLAREDATATYPE 'THISLINE '(FULLXPOINTER POINTER POINTER POINTER POINTER POINTER POINTER) - '((THISLINE 0 FULLXPOINTER) - (THISLINE 2 POINTER) - (THISLINE 4 POINTER) - (THISLINE 6 POINTER) - (THISLINE 8 POINTER) - (THISLINE 10 POINTER) - (THISLINE 12 POINTER)) - '14) - -(/DECLAREDATATYPE 'LINEDESCRIPTOR - '(POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER - POINTER POINTER POINTER POINTER FULLXPOINTER POINTER POINTER POINTER POINTER POINTER - FLAG FLAG FLAG FLAG FLAG FLAG FLAG) - '((LINEDESCRIPTOR 0 POINTER) - (LINEDESCRIPTOR 2 POINTER) - (LINEDESCRIPTOR 4 POINTER) - (LINEDESCRIPTOR 6 POINTER) - (LINEDESCRIPTOR 8 POINTER) - (LINEDESCRIPTOR 10 POINTER) - (LINEDESCRIPTOR 12 POINTER) - (LINEDESCRIPTOR 14 POINTER) - (LINEDESCRIPTOR 16 POINTER) - (LINEDESCRIPTOR 18 POINTER) - (LINEDESCRIPTOR 20 POINTER) - (LINEDESCRIPTOR 22 POINTER) - (LINEDESCRIPTOR 24 POINTER) - (LINEDESCRIPTOR 26 POINTER) - (LINEDESCRIPTOR 28 POINTER) - (LINEDESCRIPTOR 30 FULLXPOINTER) - (LINEDESCRIPTOR 32 POINTER) - (LINEDESCRIPTOR 34 POINTER) - (LINEDESCRIPTOR 36 POINTER) - (LINEDESCRIPTOR 38 POINTER) - (LINEDESCRIPTOR 40 POINTER) - (LINEDESCRIPTOR 40 (FLAGBITS . 0)) - (LINEDESCRIPTOR 40 (FLAGBITS . 16)) - (LINEDESCRIPTOR 40 (FLAGBITS . 32)) - (LINEDESCRIPTOR 40 (FLAGBITS . 48)) - (LINEDESCRIPTOR 38 (FLAGBITS . 0)) - (LINEDESCRIPTOR 38 (FLAGBITS . 16)) - (LINEDESCRIPTOR 38 (FLAGBITS . 32))) - '42) - -(/DECLAREDATATYPE 'LINECACHE '(POINTER FULLXPOINTER) - '((LINECACHE 0 POINTER) - (LINECACHE 2 FULLXPOINTER)) - '4) -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RPAQQ LMInvisibleRun 401) - -(RPAQQ LMLooksChange 400) - - -(CONSTANTS (LMInvisibleRun 401) - (LMLooksChange 400)) -) -) - - - -(* ;; "FROM TEXTOFD") - -(DECLARE%: EVAL@COMPILE - -(RECORD EDITMARK ( - (* ;; "Used for fast access to a given place in the text--a %"Marker%". It consists of the piece, and the offset within the piece, and the piece number within the piece table. That's everything that's needed to set a text stream up quickly to start reading from a given place.") - - PC PCOFF . PCNO)) -) -(DECLARE%: EVAL@COMPILE - -(DATATYPE PIECE - ( (* ; - "The piece describes either a string or part of a file. , or a generalized OBJECT.") - PSTR (* ; - "The string where this piece's text resides, or NIL") - PFILE (* ; - "The file which contains this piece's text, or NIL") - (PFPOS FIXP) (* ; - "The FILEPTR of the start of the piece in the file") - (PLEN FIXP) (* ; - "Length of the piece, in characters.") - (NEXTPIECE FULLXPOINTER) (* ; "-> Next piece in this textobj.") - (PREVPIECE FULLXPOINTER) (* ; - "-> Prior piece in this text object.") - PLOOKS (* ; - "Formatting info and formatting events in this piece") - POBJ (* ; "The OBJECT this piece describes") - (PPARALAST FLAG) (* ; - "This piece contains a paragraph break") - PPARALOOKS (* ; "Paragraph looks for this piece") - (PNEW FLAG) (* ; - "This text is new here; used by the tentative edit system, and anyone else interested.") - (PFATP FLAG) (* ; - "T if the characters in this piece are FAT -- i.e., are 16 bits each.") - (PTREENODE XPOINTER) (* ; - "Points to the PCTB tree-node that contains this piece.") - ) - PSTR _ NIL PFILE _ NIL PFPOS _ 0 PLEN _ 0 PPARALOOKS _ TEDIT.DEFAULT.FMTSPEC PTREENODE _ - NIL) - -(DATATYPE TEXTOBJ - ( - (* ;; - "This is where TEdit stores its state information, and internal data about the text being edited.") - - PCTB (* ; "The piece table") - TEXTLEN (* ; "# of chars in the text") - \INSERTPC (* ; "Piece to hold type-in") - \INSERTPCNO (* ; "Piece # of the input piece") - \INSERTNEXTCH (* ; - "CH# of next char which is typed into that piece.") - \INSERTLEFT (* ; "Space left in the type-in piece") - \INSERTLEN (* ; - "# of characters already in the piece.") - \INSERTSTRING (* ; - "The string which the piece describes.") - \INSERTFIRSTCH (* ; "CH# of first char in the piece.") - (\INSERTPCVALID FLAG) (* ; "T if it's OK to use the cached piece. Set to NIL by people who require that the next insertion/deletion use a different piece.") - \WINDOW (* ; - "The window where this textobj is displayed") - MOUSEREGION (* ; - "Section of the window the mouse is in.") - LINES (* ; - "-> to top of chain of line descriptors for displayed text") - DS (* ; - "Display stream where this textobj is displayed") - SEL (* ; - "The current selection within the text") - SCRATCHSEL (* ; - "Scratch space for the selection code") - MOVESEL (* ; - "Source for the next MOVE of text") - SHIFTEDSEL (* ; "Source for the next COPY") - DELETESEL (* ; "Text to be deleted imminently") - WRIGHT (* ; - "Right edge of the window (or subregion) where this is displayed") - WTOP (* ; "Top of the window/region") - WBOTTOM (* ; "Bottom of the window/region") - WLEFT (* ; "Left edge of the window/region") - TXTFILE (* ; - "The original text file we're editing") - (\XDIRTY FLAG) (* ; "T => changed since last saved.") - (STREAMHINT FULLXPOINTER) (* ; - "-> the TEXTOFD stream which gives access to this textobj") - EDITFINISHEDFLG (* ; - "T => The guy has asked the editor to go way") - CARET (* ; - "Describes the flashing caret for the editing window") - CARETLOOKS (* ; - "Font to be used for inserted text.") - WINDOWTITLE (* ; - "Original title for this window, of there was one.") - THISLINE (* ; - "Cache of line-related info, to speed up selection &c") - (MENUFLG FLAG) (* ; - "T if this TEXTOBJ is a tedit-style menu") - FMTSPEC (* ; - "Default Formatting Spec to be used when formatting paragraphs") - (FORMATTEDP FLAG) (* ; -"Flag for paragraph formatting. T if this document is to contain paragraph formatting information.") - (TXTREADONLY FLAG) (* ; - "This is only available for shift selection.") - (TXTEDITING FLAG) (* ; "T => This document is in a window and there is an edit process behind it. For example, it only makes sense to have a caret show up if you are editing.") - (TXTNONSCHARS FLAG) (* ; "T => If TEdit rns into a 255, it won't attempt to convert to NS characters. Used for REALLY plain-text manipulation.") - TXTTERMSA (* ; - "Special instructions for displaying characters on the screen") - EDITOPACTIVE (* ; - "T if there is an editing operation in progress. Used to interlock the TEdit menu") - DEFAULTCHARLOOKS (* ; "The default character looks -- if any -- to be applied to characters coming into the file from outside.") - TXTRTBL (* ; - "The READTABLE to be used by the command loop for command dispatch") - TXTWTBL (* ; - "The READTABLE to be used to decide on word breaks") - EDITPROPS (* ; - "The PROPS that were passed into this edit session") - (BLUEPENDINGDELETE FLAG) (* ; "T if the next insertion in this document is to be preceded by a deletion of the then-current selection") - TXTHISTORY (* ; - "The history list for this edit session.") - (SELWINDOW FULLXPOINTER) (* ; "The window in which the last 'real' selection got made for this edit; used to control caret placement") - PROMPTWINDOW (* ; - "A window to be used for unscheduled interactions; normally a small window above the edit window") - DISPLAYCACHE (* ; - "The bitmap to be used when building the image of a line for display") - DISPLAYCACHEDS (* ; - "The DISPLAYSTREAM that is used to build line images") - DISPLAYHCPYDS (* ; "The DISPLAYSTREAM used to build line images of lines that are displayed in 'hardcopy' simulation mode") - TXTPAGEFRAMES (* ; - "A tree of page frames, specifying how the document is to be laid out.") - TXTCHARLOOKSLIST (* ; - "List of all the CHARLOOKSs in the document, so they can be kept unique") - TXTPARALOOKSLIST (* ; - "List of all the FMTSPECs in the document, so they can be kept unique") - (TXTNEEDSUPDATE FLAG) (* ; - "T => Screen invalid, need to run updater") - (TXTDON'TUPDATE FLAG) (* ; "T if we're holding off on screen updates until later. Used, e.g., by the menu-SHOW code so that you don't get piecemeal updates, but only one at the end of the SHOW.") - TXTRAWINCLUDESTREAM (* ; - "NODIRCORE stream used to cache RAW includes (and maybe later, all includes?)") - DOCPROPS (* ; - "Document properties that are stored with the document (not used yet)") - TXTSTYLESHEET (* ; - "Style sheet local to this document. Not currently saved as part of the file.") - ) - [ACCESSFNS TEXTOBJ ((\DIRTY (ffetch (TEXTOBJ \XDIRTY) of DATUM) - (PROGN (IF (NEQ (FETCH (TEXTOBJ \XDIRTY) OF DATUM) - NEWVALUE) - THEN (* ; - "update the title to reflect the change") - (\TEDIT.WINDOW.TITLE DATUM - (\TEDIT.ORIGINAL.WINDOW.TITLE - (ffetch (TEXTOBJ TXTFILE) - of DATUM) - NEWVALUE))) - (freplace \XDIRTY OF DATUM WITH NEWVALUE] - SEL _ (create SELECTION) - SCRATCHSEL _ (create SELECTION) - MOVESEL _ (create SELECTION - HOWHEIGHT _ 32767 - HASCARET _ NIL) - SHIFTEDSEL _ (create SELECTION - HASCARET _ NIL) - DELETESEL _ (create SELECTION - HOWHEIGHT _ 32767 - HASCARET _ NIL) - \INSERTNEXTCH _ -1 \INSERTPC _ NIL \INSERTLEFT _ 0 \INSERTLEN _ 0 \INSERTSTRING _ NIL - \INSERTFIRSTCH _ 1000000 TEXTLEN _ 0 WRIGHT _ 0 WTOP _ 0 WLEFT _ 0 WBOTTOM _ 0 TXTFILE _ - NIL \XDIRTY _ NIL MOUSEREGION _ 'TEXT THISLINE _ (create THISLINE) - MENUFLG _ NIL FMTSPEC _ TEDIT.DEFAULT.FMTSPEC FORMATTEDP _ NIL) - -(DATATYPE TEXTIMAGEDATA ( - (* ;; "Fills the IMAGEDATA field of text streams.") - - TICURPARALOOKS (* ; "The current paragraph looks") - TICURIMAGESTREAM (* ; - "The image stream for this hardcopy transduction") - TILOOKSUPDATEFN (* ; - "The function to call to update looks for this stream") - TIPCOFFSET (* ; - "The offset into the current piece, as of the last page cross.") - )) - -(ACCESSFNS TEXTSTREAM ( - (* ;; - "Overlay for the STREAM record to allow mnemonic access to stream fields for Text streams.") - - (REALFILE (fetch F1 of DATUM) - (REPLACE F1 OF DATUM WITH NEWVALUE)) - (* ; - "The real, underlying file behind the current piece") - (CHARSLEFT (fetch F2 of DATUM) - (REPLACE F2 OF DATUM WITH NEWVALUE)) - - (* ;; "The # of characters that will be left in the current piece the next time its file crosses a page boundary") - - (TEXTOBJ (fetch F3 of DATUM) - (REPLACE F3 OF DATUM WITH NEWVALUE)) - (* ; - "The TEXTOBJ that is editing this text") - (PIECE (fetch F5 of DATUM) - (REPLACE F5 OF DATUM WITH NEWVALUE)) - (* ; - "The PIECE we're currently fetching chars from/putting chars into") - (PCNO (fetch FW8 of DATUM) - (REPLACE FW8 OF DATUM WITH NEWVALUE)) - (* ; - "The position of that piece in the piece table") - (PCSTARTPG (fetch FW6 of DATUM) - (REPLACE FW6 OF DATUM WITH NEWVALUE)) - (* ; - "The underlying file page# that this piece starts on") - (PCSTARTCH (fetch FW7 of DATUM) - (REPLACE FW7 OF DATUM WITH NEWVALUE)) - (* ; - "The char within page of the underlying file that this piece starts on -- for backbin & co") - (PCOFFSET (fetch TIPCOFFSET of (fetch IMAGEDATA of DATUM)) - (REPLACE TIPCOFFSET OF (fetch IMAGEDATA of DATUM) - with NEWVALUE)) (* ; - "The offset into the current piece, as of the last page cross.") - (CURRENTLOOKS (fetch F10 of DATUM) - (replace F10 of DATUM with NEWVALUE)) - (* ; - "The CHARLOOKS that are currently applicable to characters being taken from the stream.") - (CURRENTPARALOOKS (fetch TICURPARALOOKS of (fetch IMAGEDATA - of DATUM)) - (REPLACE TICURPARALOOKS OF (fetch IMAGEDATA - of DATUM) with - NEWVALUE) - ) (* ; - "The FMTSPEC that is currently applicable to characters being taken from the stream.") - (CURRENTIMAGESTREAM (fetch TICURIMAGESTREAM - of (fetch IMAGEDATA of DATUM)) - (REPLACE TICURIMAGESTREAM OF (fetch IMAGEDATA - of DATUM) with - NEWVALUE) - (* ; - "The image stream that this text is being put onto; used for scaling decisions") - ) - (LOOKSUPDATEFN (fetch TILOOKSUPDATEFN of (fetch IMAGEDATA - of DATUM)) - (REPLACE TILOOKSUPDATEFN OF (fetch IMAGEDATA - of DATUM) with - NEWVALUE)) - (* ; - "Function to be called each time character looks change.") - (FATSTREAMP (fetch F4 of DATUM) - (REPLACE F4 OF DATUM WITH NEWVALUE)) - (* ; - "T if the current piece is 16 bit characters.") - ) - (CREATE (create STREAM using \TEXTOFD IMAGEDATA _ (create - - TEXTIMAGEDATA - )))) -) - -(/DECLAREDATATYPE 'PIECE '(POINTER POINTER FIXP FIXP FULLXPOINTER FULLXPOINTER POINTER POINTER FLAG - POINTER FLAG FLAG XPOINTER) - '((PIECE 0 POINTER) - (PIECE 2 POINTER) - (PIECE 4 FIXP) - (PIECE 6 FIXP) - (PIECE 8 FULLXPOINTER) - (PIECE 10 FULLXPOINTER) - (PIECE 12 POINTER) - (PIECE 14 POINTER) - (PIECE 14 (FLAGBITS . 0)) - (PIECE 16 POINTER) - (PIECE 16 (FLAGBITS . 0)) - (PIECE 16 (FLAGBITS . 16)) - (PIECE 18 XPOINTER)) - '20) - -(/DECLAREDATATYPE 'TEXTOBJ - '(POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER FLAG POINTER POINTER - POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER - POINTER POINTER FLAG FULLXPOINTER POINTER POINTER POINTER POINTER POINTER FLAG POINTER - FLAG FLAG FLAG FLAG POINTER POINTER POINTER POINTER POINTER POINTER FLAG POINTER - FULLXPOINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER FLAG FLAG POINTER - POINTER POINTER) - '((TEXTOBJ 0 POINTER) - (TEXTOBJ 2 POINTER) - (TEXTOBJ 4 POINTER) - (TEXTOBJ 6 POINTER) - (TEXTOBJ 8 POINTER) - (TEXTOBJ 10 POINTER) - (TEXTOBJ 12 POINTER) - (TEXTOBJ 14 POINTER) - (TEXTOBJ 16 POINTER) - (TEXTOBJ 16 (FLAGBITS . 0)) - (TEXTOBJ 18 POINTER) - (TEXTOBJ 20 POINTER) - (TEXTOBJ 22 POINTER) - (TEXTOBJ 24 POINTER) - (TEXTOBJ 26 POINTER) - (TEXTOBJ 28 POINTER) - (TEXTOBJ 30 POINTER) - (TEXTOBJ 32 POINTER) - (TEXTOBJ 34 POINTER) - (TEXTOBJ 36 POINTER) - (TEXTOBJ 38 POINTER) - (TEXTOBJ 40 POINTER) - (TEXTOBJ 42 POINTER) - (TEXTOBJ 44 POINTER) - (TEXTOBJ 44 (FLAGBITS . 0)) - (TEXTOBJ 46 FULLXPOINTER) - (TEXTOBJ 48 POINTER) - (TEXTOBJ 50 POINTER) - (TEXTOBJ 52 POINTER) - (TEXTOBJ 54 POINTER) - (TEXTOBJ 56 POINTER) - (TEXTOBJ 56 (FLAGBITS . 0)) - (TEXTOBJ 58 POINTER) - (TEXTOBJ 58 (FLAGBITS . 0)) - (TEXTOBJ 58 (FLAGBITS . 16)) - (TEXTOBJ 58 (FLAGBITS . 32)) - (TEXTOBJ 58 (FLAGBITS . 48)) - (TEXTOBJ 60 POINTER) - (TEXTOBJ 62 POINTER) - (TEXTOBJ 64 POINTER) - (TEXTOBJ 66 POINTER) - (TEXTOBJ 68 POINTER) - (TEXTOBJ 70 POINTER) - (TEXTOBJ 70 (FLAGBITS . 0)) - (TEXTOBJ 72 POINTER) - (TEXTOBJ 74 FULLXPOINTER) - (TEXTOBJ 76 POINTER) - (TEXTOBJ 78 POINTER) - (TEXTOBJ 80 POINTER) - (TEXTOBJ 82 POINTER) - (TEXTOBJ 84 POINTER) - (TEXTOBJ 86 POINTER) - (TEXTOBJ 88 POINTER) - (TEXTOBJ 88 (FLAGBITS . 0)) - (TEXTOBJ 88 (FLAGBITS . 16)) - (TEXTOBJ 90 POINTER) - (TEXTOBJ 92 POINTER) - (TEXTOBJ 94 POINTER)) - '96) - -(/DECLAREDATATYPE 'TEXTIMAGEDATA '(POINTER POINTER POINTER POINTER) - '((TEXTIMAGEDATA 0 POINTER) - (TEXTIMAGEDATA 2 POINTER) - (TEXTIMAGEDATA 4 POINTER) - (TEXTIMAGEDATA 6 POINTER)) - '8) - -(DEFOPTIMIZER TEXTPROP (TEXTOBJ PROP &OPTIONAL (VAL NIL WRITING)) - - (* ;; "compiles calls to TEXTPROP") - - [COND - ((NOT (LISTP PROP)) (* ; "property is not quoted.") - 'IGNOREMACRO) - ((NOT (EQ (CAR PROP) - 'QUOTE)) (* ; "property is not quoted.") - 'IGNOREMACRO) - [(NOT WRITING) (* ; "fetching a TEXTPROP property.") - (SELECTQ (CADR PROP) - ((READONLY READ-ONLY) - `(fetch (TEXTOBJ TXTREADONLY) of (TEXTOBJ - ,TEXTOBJ))) - ((BEING-EDITED ACTIVE) - `(fetch (TEXTOBJ TXTEDITING) of (TEXTOBJ ,TEXTOBJ))) - ((NO-NS-CHARS NONSCHARS NO-NSCHARS) - `(fetch (TEXTOBJ TXTNONSCHARS) of (TEXTOBJ - ,TEXTOBJ))) - `(LISTGET (fetch (TEXTOBJ EDITPROPS) - of (TEXTOBJ ,TEXTOBJ)) - ,PROP] - (T (* ; "storing a window property") - (SELECTQ (CADR PROP) - ((READONLY READ-ONLY) - `(REPLACE (TEXTOBJ TXTREADONLY) - OF (TEXTOBJ ,TEXTOBJ) WITH ,VAL)) - ((BEING-EDITED ACTIVE) - `(REPLACE (TEXTOBJ TXTEDITING) - OF (TEXTOBJ ,TEXTOBJ) WITH ,VAL)) - ((NO-NS-CHARS NONSCHARS NO-NSCHARS) - `(REPLACE (TEXTOBJ TXTNONSCHARS) - OF (TEXTOBJ ,TEXTOBJ) WITH ,VAL)) - `(LET* (($$TEXTOBJ$$ (TEXTOBJ ,TEXTOBJ)) - ($$PROPLST$$ (FETCH EDITPROPS OF $$TEXTOBJ$$))) - (COND - ($$PROPLST$$ (LISTPUT $$PROPLST$$ ,PROP ,VAL)) - (T (REPLACE EDITPROPS OF $$TEXTOBJ$$ - WITH (LIST ,PROP ,VAL]) - - - -(* ;; "Private data structures and constants FROM TEXTOFD") - -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RPAQQ \PCTBFreePieces 0) - -(RPAQQ \PCTBLastPieceOffset 1) - -(RPAQQ \FirstPieceOffset 2) - -(RPAQQ \SecondPieceOffset 4) - -(RPAQQ \EltsPerPiece 2) - - -(CONSTANTS (\PCTBFreePieces 0) - (\PCTBLastPieceOffset 1) - (\FirstPieceOffset 2) - (\SecondPieceOffset 4) - (\EltsPerPiece 2)) -) - -(DECLARE%: EVAL@COMPILE - -(PUTPROPS \EDITELT DMACRO (OPENLAMBDA (ARR NO) - - (* This is equivalent to ELT, but bypasses the checking, since we "know" that - ARR is an array. Hence, much faster.) - - (GETBASEPTR (\ADDBASE2 (fetch (ARRAYP BASE) of - ARR) - NO) - 0))) - -(PUTPROPS \GETCH MACRO ((TEXTOBJ) (* jds "23-FEB-82 08:56") - (* Get the next available character - from the text being edited.) - (\BIN (fetch STREAMHINT of TEXTOBJ)))) - -(PUTPROPS \GETCHB MACRO ((TEXTOBJ) (* Get the next prior character in - the text being edited.) - (\BACKBIN (fetch STREAMHINT of TEXTOBJ)))) - -(PUTPROPS \EDITSETA DMACRO (OPENLAMBDA (ARR N VAL) - - (* Equivalent to SETA (for pointer-type arrays)%, but bypasses the bounds and - type checking. Hence MUCH faster.) - - (\RPLPTR (\ADDBASE2 (fetch (ARRAYP BASE) of ARR) - N) - 0 VAL))) - -(PUTPROPS \WORDSETA DMACRO (OPENLAMBDA (A J V) - [CHECK (AND (ARRAYP A) - (ZEROP (fetch (ARRAYP ORIG) of A)) - (EQ \ST.POS16 (fetch (ARRAYP TYP) - of A] - (CHECK (IGREATERP (fetch (ARRAYP LENGTH) of A) - J)) - (\PUTBASE (fetch (ARRAYP BASE) of A) - (IPLUS (fetch (ARRAYP OFFST) of A) - J) - V))) -) - -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS \TEXTIMAGEOPS \TEXTOFD \TEXTFDEV) -) -) - - - -(* ;;; "FROM TEDITPAGE") - -(DECLARE%: EVAL@COMPILE - -(RECORD PAGEFORMATTINGSTATE ( - (* ;; "Contains the state for a TEdit page-formatting job.") - - PAGE# (* ; - "The current page number. Counted from 1") - FIRSTPAGE - - (* ;; "T if the current page is the 'first page' . Is set initially, and can be set again by the user at will. Gets reset after each page image is printed.") - - MINPAGE# (* ; - "The page # of the first page to be printed, or NIL") - MAXPAGE# (* ; - "The page # of the last page to be printed, or NIL") - STATE (* ; "One of FORMATTING or SEARCHING.") - REQUIREDREGIONTYPE (* ; "If STATE is SEARCHING, the kind of box we're looking for. If STATE is :SEARCHING-FOR-EQUIVALENT-PAGE, this is the page count for the matching page.") - MAINSTREAM (* ; - "The principal textobj/stream source") - CHNO (* ; "Our position in that stream") - PRESSREGION (* ; "The press code's REGION info.") - PAGEHEADINGS (* ; - "The list of current values to be printed, indexed by heading type") - PAGE#GENERATOR (* ; "List of page numbers; later, maybe, a function to generate page numbers. Used to fill in PAGE#TEXT, below") - PAGE#TEXT (* ; "If special page numbers are in use, this is the place to take them from. PAGE# is still used for recto/verso decisions &c") - PAGEISRECTO (* ; - "T if this is a recto page, NIL if it's a VERSO page.") - PAGEFOOTNOTELINES (* ; - "A list of extant footnote lines that should appear at the next opportunity") - PAGEFLOATINGTOPLINES (* ; - "A list of lines that should float to the top of the next available place") - PAGECOUNT (* ; - "The number of pages we've formatted so far.") - PAGELINECACHE (* ; "A cache for pre-created LINEDESCRIPTOR/THISLINE sets, to avoid the overhead of re-allocating them all the time") - NEWPAGELAYOUT (* ; "If we switch page layouts in mid-document, this is where the new layout gets cached until we get started again.") - ) - PAGECOUNT _ 0) - -(DATATYPE PAGEREGION ( - (* ;; - "Describe a part of a page for page formatting. Can be made into compound descriptions.") - - REGIONFILLMETHOD (* ; - "What kind of a region this is -- TEXT, FOLIO, PAGEHEADING, etc.") - REGIONSPEC (* ; - "The page-relative region this occupies") - REGIONLOCALINFO (* ; "A PLIST for local information") - (REGIONPARENT FULLXPOINTER) (* ; - "The parent node for this box, for sub-boxes") - REGIONSUBBOXES (* ; "The sub-regions of this region") - REGIONTYPE (* ; "A user-settable region type") - )) -) - -(/DECLAREDATATYPE 'PAGEREGION '(POINTER POINTER POINTER FULLXPOINTER POINTER POINTER) - '((PAGEREGION 0 POINTER) - (PAGEREGION 2 POINTER) - (PAGEREGION 4 POINTER) - (PAGEREGION 6 FULLXPOINTER) - (PAGEREGION 8 POINTER) - (PAGEREGION 10 POINTER)) - '12) -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RECORD TEDITPAPERSIZE ( - (* ;; - "Describe the size of a sheet of paper (in points), given a paper size-name.") - - TPSNAME (* ; "The name, as a litatom") - TPSWIDTH (* ; "Paper width, in points") - TPSHEIGHT (* ; "Paper Height, in points") - TPSLANDSCAPE? (* ; - "T if we have to rotate things to print them on this paper.") - )) -) - - -(DEFMACRO \NEW-COLUMN-START (LINE FMTSPEC) - `(AND (FFETCH (LINEDESCRIPTOR 1STLN) OF ,LINE) - (EQ (FFETCH (FMTSPEC FMTCOLUMN) OF ,FMTSPEC) - 'NEXT))) - -(DEFMACRO \FIRST-COLUMN-START (LINE FMTSPEC) - `(AND (FFETCH (LINEDESCRIPTOR 1STLN) OF ,LINE) - (EQ (FFETCH (FMTSPEC FMTCOLUMN) OF ,FMTSPEC) - 'FIRST))) -) - - - -(* ;; "FROM TEDITFIND") - -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RPAQQ \AlphaNumericFlag 256) - -(RPAQQ \AlphaFlag 512) - -(RPAQQ \OneCharPattern 1024) - -(RPAQQ \AnyStringPattern 1025) - -(RPAQQ \OneAlphaPattern 1026) - -(RPAQQ \AnyAlphaPattern 1027) - -(RPAQQ \OneNonAlphaPattern 1028) - -(RPAQQ \AnyNonAlphaPattern 1029) - -(RPAQQ \LeftBracketPattern 1030) - -(RPAQQ \RightBracketPattern 1031) - -(RPAQQ \SpecialPattern 1024) - - -(CONSTANTS (\AlphaNumericFlag 256) - (\AlphaFlag 512) - (\OneCharPattern 1024) - (\AnyStringPattern 1025) - (\OneAlphaPattern 1026) - (\AnyAlphaPattern 1027) - (\OneNonAlphaPattern 1028) - (\AnyNonAlphaPattern 1029) - (\LeftBracketPattern 1030) - (\RightBracketPattern 1031) - (\SpecialPattern 1024)) -) -) - - - -(* ;; " FROM TEDITLOOKS") - -(DECLARE%: EVAL@COMPILE - -(DATATYPE CHARLOOKS ( - (* ;; - "Describes the appearance (%"Looks%") of characters in a TEdit document.") - - CLFONT (* ; - "The font descriptor for these characters") - CLNAME - - (* ;; "Name of the font (e.g., HELVETICA) THIS FIELD IS A HINT, OR FOR USE IN CHARLOOKS-BUILDING CODE. USE FONTPROP TO GET THE RIGHT VALUE FROM CLFONT.") - - CLSIZE (* ; "Font size, in points") - (CLITAL FLAG) (* ; - "T if the characters are italic, else NIL") - (CLBOLD FLAG) (* ; - "T if the characters are bold, else NIL") - (CLULINE FLAG) (* ; - "T if the characters are to be underscored, else NIL") - (CLOLINE FLAG) (* ; - "T if the characters are to be overscored, else NIL") - (CLSTRIKE FLAG) (* ; - "T if the characters are to be struck thru, else nil.") - CLOFFSET (* ; - "A superscripting offset in points (?) else NIL (SUBSCRIPTING IF NEGATIVE.)") - (CLSMALLCAP FLAG) (* ; "T if small caps, else NIL") - (CLINVERTED FLAG) (* ; - "T if the characters are to be shown white-on-black") - (CLPROTECTED FLAG) (* ; - "T if chars can't be selected, else NIL") - (CLINVISIBLE FLAG) (* ; - "T if TEDIT is to ignore these chars; else NIL") - (CLSELHERE FLAG) - - (* ;; "T if TEDIT can put selection after this char (for menu blanks) else NIL; anything typed after this char will NOT BE PROTECTED.") - - (CLCANCOPY FLAG) - - (* ;; "T if this text can be selected for copying, even tho protected (it will become unprotected after the copy; for Dribble/TTY interface)") - - CLSTYLE (* ; - "The style to be used in marking these characters; overridden by the other fields") - CLUSERINFO (* ; - "Any information that an outsider wants to include") - CLLEADER (* ; - "For creating dotted and other kinds of leader") - CLRULES - - (* ;; "For arbitrarily-places horizontal rules. List of pairs, of (widthinpts . offsetfrombaselineinpts). Should be taken account of in ascent/descent calcs.") - - (CLMARK FLAG) - - (* ;; "Used for a mark-&-sweep of looks at PUT time -- T means this set of looks really IS in use in the document") - - ) - CLOFFSET _ 0) - -(DATATYPE FMTSPEC ( - (* ;; - "Describe the paragraph formatting for a paragraph in a TEdit document.") - - 1STLEFTMAR (* ; - "Left margin of the first line of the paragraph") - LEFTMAR (* ; - "Left margin of the rest of the lines in the paragraph") - RIGHTMAR (* ; "Right margin for the paragraph") - LEADBEFORE (* ; - "Leading above the paragraph's first line, in points") - LEADAFTER (* ; - "Leading below the paragraph's bottom line, in points. NOT IMPLEMENTED.") - LINELEAD (* ; - "Leading between lines, in points. Actually, this space is added BELOW each line in the para.") - FMTBASETOBASE (* ; -"The baseline-to-baseline spacing between lines in this paragraph. THIS OVERRIDES THE LINE LEADING") - TABSPEC (* ; - "The list of tabs for this paragraph, including CAR for a default tab width") - QUAD (* ; - "How the para is formatted: one of LEFT, RIGHT, CENTERED, JUSTIFIED") - FMTSTYLE (* ; - "The STYLE that controls this paragraph's appearance") - FMTCHARSTYLES (* ; "The characterstyles that control the appearance of characters in this para (maybe? may be part of the fmtstyle.)") - FMTUSERINFO (* ; "Space for a PLIST of user info") - FMTSPECIALX (* ; - "A special horizontal location on the printed page for this para.") - FMTSPECIALY (* ; - "A special vertical location on the page for this para") - (FMTHEADINGKEEP FLAG) (* ; - "This para should be kept with the top line or so of the next para..") - FMTPARATYPE (* ; - "What kind of para this is: TEXT, PAGEHEADING, whatever") - FMTPARASUBTYPE (* ; - "Sub type of the type, e.g., what KIND of page heading this is.") - FMTNEWPAGEBEFORE (* ; "Start a new box (if T) or back up the page formatting tree to make a new box of the type named in the value -- by going the least distance back up the tree, then back down until you find that kind of box.") - FMTNEWPAGEAFTER (* ; "Similarly") - FMTKEEP (* ; - "For information about how this paragraph is to be kept with other paragraphs.") - FMTCOLUMN (* ; - "For setting up side-by-side paragraphs easily ala BravoX") - FMTVERTRULES (* ; - "For Keeping track of vertical rules in force") - (FMTMARK FLAG) (* ; "Used to keep track of which PARALOOKSs are really being used -- a mark & collect is done just before a PUT, so that only 'real' PARALOOKSs make it into the file") - (* ; "Used for a mark&sweep of para looks at PUT time -- T means this looks really IS in use in the document, so it makes sense to save it on the file.") - (FMTHARDCOPY FLAG) (* ; - "T if this paragraph is to be displayed in hardcopy-format.") - FMTREVISED (* ; "T (or perhaps a revision level or revision-mark spec??) if this paragraph is to be marked as changed on output.") - ) - TABSPEC _ (CONS NIL NIL)) - -(DATATYPE PENDINGTAB ( - (* ;; "The data structure for a tab, within the line formatter, that we haven't finished dealing with yet, e.g. a centered tab where you need to wait for AFTER the centered text to do the formatting.") - - PTNEWTX - - (* ;; "An updated TX, being passed back to the line formatter. This results from the resolution of an old RIGHT, CENTERED, or DECIMAL tab, which changed the width of a prior tab.") - - PTOLDTAB (* ; "The pending tab") - PTTYPE (* ; "Its tab type") - PTTABX (* ; "Its nominal X position") - (PTWBASE FULLXPOINTER) (* ; - "The WBASE for its width, for updating when we've figured out how wide the tab really is") - PTOLDTX (* ; - "The TX as of when the tab was encountered.") - )) -) - -(/DECLAREDATATYPE 'CHARLOOKS - '(POINTER POINTER POINTER FLAG FLAG FLAG FLAG FLAG POINTER FLAG FLAG FLAG FLAG FLAG FLAG - POINTER POINTER POINTER POINTER FLAG) - '((CHARLOOKS 0 POINTER) - (CHARLOOKS 2 POINTER) - (CHARLOOKS 4 POINTER) - (CHARLOOKS 4 (FLAGBITS . 0)) - (CHARLOOKS 4 (FLAGBITS . 16)) - (CHARLOOKS 4 (FLAGBITS . 32)) - (CHARLOOKS 4 (FLAGBITS . 48)) - (CHARLOOKS 2 (FLAGBITS . 0)) - (CHARLOOKS 6 POINTER) - (CHARLOOKS 6 (FLAGBITS . 0)) - (CHARLOOKS 6 (FLAGBITS . 16)) - (CHARLOOKS 6 (FLAGBITS . 32)) - (CHARLOOKS 6 (FLAGBITS . 48)) - (CHARLOOKS 2 (FLAGBITS . 16)) - (CHARLOOKS 2 (FLAGBITS . 32)) - (CHARLOOKS 8 POINTER) - (CHARLOOKS 10 POINTER) - (CHARLOOKS 12 POINTER) - (CHARLOOKS 14 POINTER) - (CHARLOOKS 14 (FLAGBITS . 0))) - '16) - -(/DECLAREDATATYPE 'FMTSPEC - '(POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER - POINTER POINTER POINTER FLAG POINTER POINTER POINTER POINTER POINTER POINTER POINTER - FLAG FLAG POINTER) - '((FMTSPEC 0 POINTER) - (FMTSPEC 2 POINTER) - (FMTSPEC 4 POINTER) - (FMTSPEC 6 POINTER) - (FMTSPEC 8 POINTER) - (FMTSPEC 10 POINTER) - (FMTSPEC 12 POINTER) - (FMTSPEC 14 POINTER) - (FMTSPEC 16 POINTER) - (FMTSPEC 18 POINTER) - (FMTSPEC 20 POINTER) - (FMTSPEC 22 POINTER) - (FMTSPEC 24 POINTER) - (FMTSPEC 26 POINTER) - (FMTSPEC 26 (FLAGBITS . 0)) - (FMTSPEC 28 POINTER) - (FMTSPEC 30 POINTER) - (FMTSPEC 32 POINTER) - (FMTSPEC 34 POINTER) - (FMTSPEC 36 POINTER) - (FMTSPEC 38 POINTER) - (FMTSPEC 40 POINTER) - (FMTSPEC 40 (FLAGBITS . 0)) - (FMTSPEC 40 (FLAGBITS . 16)) - (FMTSPEC 42 POINTER)) - '44) - -(/DECLAREDATATYPE 'PENDINGTAB '(POINTER POINTER POINTER POINTER FULLXPOINTER POINTER) - '((PENDINGTAB 0 POINTER) - (PENDINGTAB 2 POINTER) - (PENDINGTAB 4 POINTER) - (PENDINGTAB 6 POINTER) - (PENDINGTAB 8 FULLXPOINTER) - (PENDINGTAB 10 POINTER)) - '12) -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(PUTPROPS \SMALLPIN MACRO (OPENLAMBDA (STREAM) - (SIGNED (create WORD - HIBYTE _ (\BIN STREAM) - LOBYTE _ (\BIN STREAM)) - BITSPERWORD))) - -(PUTPROPS \SMALLPOUT MACRO (OPENLAMBDA (STREAM W) - (\BOUT STREAM (LOGAND 255 (LRSH W 8))) - (\BOUT STREAM (LOGAND W 255)))) - -(PUTPROPS ONOFF MACRO [OPENLAMBDA (VAL) - (COND - (VAL 'ON) - (T 'OFF]) -) -) - - - -(* ;; "FROM TEDITMENU") - -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RECORD MBUTTON NIL [TYPE? (AND (IMAGEOBJP DATUM) - (OR (EQ (IMAGEOBJPROP DATUM 'DISPLAYFN) - 'MB.DISPLAY) - (EQ (IMAGEOBJPROP DATUM 'DISPLAYFN) - 'MB.THREESTATE.DISPLAY) - (EQ (IMAGEOBJPROP DATUM 'DISPLAYFN) - '\TEXTMENU.TOGGLE.DISPLAY]) -) -) -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RECORD NWAYBUTTON NIL [TYPE? (AND (IMAGEOBJP DATUM) - (EQ (IMAGEOBJPROP DATUM 'DISPLAYFN) - 'MB.NB.DISPLAYFN]) -) -) -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RECORD MARGINBAR (MARL1 MARLN MARR MARTABS MARUNIT MARTABTYPE) - [TYPE? (AND (IMAGEOBJP DATUM) - (EQ (IMAGEOBJPROP DATUM 'DISPLAYFN) - 'MB.MARGINBAR.DISPLAYFN]) -) -) -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RECORD TAB (TABX . TABKIND)) -) -) -(DECLARE%: EVAL@COMPILE - -(TYPERECORD MB.3STATE ( - (* ;; "Describes a 3-state menu button.") - - MBLABEL (* ; - "Label for the button on the screen") - MBFONT (* ; - "Font the label text should appear in") - MBCHANGESTATEFN (* ; - "Function to call when the button's state changes") - MBINITSTATE (* ; "Button's initial state.") - ) - MBFONT _ (FONTCREATE 'HELVETICA 8 'BOLD)) - -(TYPERECORD MB.BUTTON (MBLABEL MBBUTTONEVENTFN MBFONT) - MBBUTTONEVENTFN _ 'MB.DEFAULTBUTTON.FN MBFONT _ (FONTCREATE 'HELVETICA 8 - 'BOLD)) - -(TYPERECORD MB.INSERT (MBINITENTRY)) - -(TYPERECORD MB.MARGINBAR (ignoredfield)) - -(TYPERECORD MB.NWAY (MBBUTTONS MBFONT MBCHANGESTATEFN MBINITSTATE MBMAXITEMSPERLINE) - MBFONT _ (FONTCREATE 'HELVETICA 8 'BOLD)) - -(TYPERECORD MB.TEXT (MBSTRING MBFONT)) - -(TYPERECORD MB.TOGGLE (MBTEXT MBFONT MBCHANGESTATEFN MBINITSTATE) - MBFONT _ (FONTCREATE 'HELVETICA 8 'BOLD)) -) - -(DEFMACRO WITHOUT-UPDATES (TEXTOBJ SCRATCHSEL &BODY BODY) - - (* ;; "For TEdit windows, run BODY without updating the edit window for TEXTOBJ. This is useful if you're making a log of changes to a document at one time, where the changes are in essence atomic, and you don't need to see intermediate results. It's also a good bit faster than constant updating.") - - (* ;; "TEXTOBJ is the TEXTOBJ for the document you'll be modifying.") - - (* ;; "SCRATCHSEL should be the scratch selection (often used in this work)") - - `[LET [(OLD-UNWIND-FLAG (FETCH (TEXTOBJ TXTDON'TUPDATE) OF ,TEXTOBJ] - (CL:UNWIND-PROTECT - (PROGN (replace (TEXTOBJ TXTDON'TUPDATE) of ,TEXTOBJ with T) - ,@BODY) - (\SHOWSEL ,SCRATCHSEL NIL NIL) - (replace SET of ,SCRATCHSEL with NIL) - (\TEDIT.MARK.LINES.DIRTY ,TEXTOBJ 1 (fetch (TEXTOBJ TEXTLEN) of ,TEXTOBJ)) - (replace (TEXTOBJ TXTDON'TUPDATE) of ,TEXTOBJ with OLD-UNWIND-FLAG) - (TEDIT.UPDATE.SCREEN ,TEXTOBJ))]) - - - -(* ;; "FROM TEDITHISTORY") - -(DECLARE%: EVAL@COMPILE - -(RECORD TEDITHISTORYEVENT ( - (* ;; "Describes one event on the TEdit edit history list.") - - THACTION (* ; - "A LITATOM, specifying what the event was") - THPOINT (* ; - "Was the selection to the left or right?") - THLEN (* ; "The # of chars involved") - THCH# (* ; "The starting ch#") - THFIRSTPIECE (* ; "First piece involved") - THOLDINFO (* ; "Old info, for undo") - THAUXINFO (* ; - "Auxiliary info about the event, primarily for redo") - THTEXTOBJ - - (* ;; "Place to remember a second textobj, for those like MOVE who need to remember both a source and a destination.") - - ) - THPOINT _ 'LEFT) -) - - - -(* ;; "FROM TEDITFILE") - -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RPAQQ \PieceDescriptorLOOKS 0) - -(RPAQQ \PieceDescriptorOBJECT 1) - -(RPAQQ \PieceDescriptorPARA 2) - -(RPAQQ \PieceDescriptorPAGEFRAME 3) - -(RPAQQ \PieceDescriptorCHARLOOKSLIST 4) - -(RPAQQ \PieceDescriptorPARALOOKSLIST 5) - -(RPAQQ \PieceDescriptorSAFEOBJECT 6) - - -(CONSTANTS (\PieceDescriptorLOOKS 0) - (\PieceDescriptorOBJECT 1) - (\PieceDescriptorPARA 2) - (\PieceDescriptorPAGEFRAME 3) - (\PieceDescriptorCHARLOOKSLIST 4) - (\PieceDescriptorPARALOOKSLIST 5) - (\PieceDescriptorSAFEOBJECT 6)) -) -) - - - -(* ;; "FROM TEDITCOMMAND") - -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(PUTPROPS \INSERT\TTY\BUFFER MACRO (NIL (\TEDIT.INSERT.TTY.BUFFER ISCRSTRING IPASSSTRING - TEXTOBJ SEL))) - -(PUTPROPS \TEDIT.MOUSESTATE MACRO (BUTTON - - (* Test to see if only the specified mouse button is down. - DOES NOT call GETMOUSESTATE, so the mouse-button info is the same as the last - time it WAS called.) - - (SELECTQ (CAR BUTTON) - (LEFT '(IEQP LASTMOUSEBUTTONS 4)) - (MIDDLE '(IEQP LASTMOUSEBUTTONS 1)) - (RIGHT '(IEQP LASTMOUSEBUTTONS 2)) - (SHOULDNT)))) - -(PUTPROPS \TEDIT.CHECK MACRO - [ARGS (COND - [(AND (BOUNDP 'CHECK) - CHECK) - (CONS 'PROGN (for I in ARGS as J on ARGS - when (NOT (STRINGP I)) - collect (LIST 'OR I (LIST 'HELP - "TEdit consistency-check failure [RETURN to continue]: " - (COND - ((STRINGP (CADR J))) - (T (KWOTE I] - (T (CONS COMMENTFLG ARGS]) -) -) -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(ACCESSFNS TEDITTERMCODE ((TTCLASS (LOGAND DATUM 224)) - (TTDECODE (LOGAND DATUM 31)))) -) -) -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RPAQQ NONE.TTC 0) - -(RPAQQ CHARDELETE.TTC 1) - -(RPAQQ WORDDELETE.TTC 2) - -(RPAQQ DELETE.TTC 3) - -(RPAQQ FUNCTIONCALL.TTC 4) - -(RPAQQ REDO.TTC 5) - -(RPAQQ UNDO.TTC 6) - -(RPAQQ CMD.TTC 7) - -(RPAQQ NEXT.TTC 8) - -(RPAQQ EXPAND.TTC 9) - -(RPAQQ PUNCT.TTC 20) - -(RPAQQ TEXT.TTC 21) - -(RPAQQ WHITESPACE.TTC 22) - - -(CONSTANTS (NONE.TTC 0) - (CHARDELETE.TTC 1) - (WORDDELETE.TTC 2) - (DELETE.TTC 3) - (FUNCTIONCALL.TTC 4) - (REDO.TTC 5) - (UNDO.TTC 6) - (CMD.TTC 7) - (NEXT.TTC 8) - (EXPAND.TTC 9) - (PUNCT.TTC 20) - (TEXT.TTC 21) - (WHITESPACE.TTC 22)) -) -) -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RPAQQ MSPACE 153) - -(RPAQQ NSPACE 152) - -(RPAQQ THINSPACE 159) - -(RPAQQ FIGSPACE 154) - - -(CONSTANTS (MSPACE 153) - (NSPACE 152) - (THINSPACE 159) - (FIGSPACE 154)) -) -) - - - -(* ;; "FROM TEDITWINDOW") - -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(DATATYPE TEDITCARET (TCNOWTIME - - (* Used to hold the current time, when checking to see if a transition is due) - - TCTHENTIME (* Time when the next transition is - to take place) - TCFORCEDDOWN (* TCFORCEDOWN = T means - (Make the caret visible at the next - call to \EDIT.FLIPCARET.)) - TCUP - - (* TCUP = T => The caret is NOT VISIBLE. - Used to track the current state of the caret) - - TCCARETDS (* The display stream that the caret - appears in) - TCCURSORBM (* The CURSOR representing the caret) - TCCARETRATE (* %# of MSEC between caret up/down - transitions) - TCFORCEUP - - (* T => The caret is not allowed to become visible. - Used to keep the caret up during screen updates) - - TCCARETX (* X position in the window that the - caret appears at) - TCCARETY (* Y position in the window where - the caret appears) - TCCARET (* A lisp CARET to be flashed - (eventually)) - ) - TCNOWTIME _ (CREATECELL \FIXP) - TCTHENTIME _ (CREATECELL \FIXP) - TCCURSORBM _ BXCARET TCCARETRATE _ \CARETRATE TCUP _ T TCCARET _ - (\CARET.CREATE BXCARET)) -) - -(/DECLAREDATATYPE 'TEDITCARET '(POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER - POINTER POINTER POINTER) - '((TEDITCARET 0 POINTER) - (TEDITCARET 2 POINTER) - (TEDITCARET 4 POINTER) - (TEDITCARET 6 POINTER) - (TEDITCARET 8 POINTER) - (TEDITCARET 10 POINTER) - (TEDITCARET 12 POINTER) - (TEDITCARET 14 POINTER) - (TEDITCARET 16 POINTER) - (TEDITCARET 18 POINTER) - (TEDITCARET 20 POINTER)) - '22) -) - -(/DECLAREDATATYPE 'TEDITCARET '(POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER - POINTER POINTER POINTER) - '((TEDITCARET 0 POINTER) - (TEDITCARET 2 POINTER) - (TEDITCARET 4 POINTER) - (TEDITCARET 6 POINTER) - (TEDITCARET 8 POINTER) - (TEDITCARET 10 POINTER) - (TEDITCARET 12 POINTER) - (TEDITCARET 14 POINTER) - (TEDITCARET 16 POINTER) - (TEDITCARET 18 POINTER) - (TEDITCARET 20 POINTER)) - '22) - - - -(* ;; "FROM PCTREE added by Nakamura") - -(DECLARE%: EVAL@COMPILE - -(DATATYPE PCTNODE (CHNUM (* ; - "Character #of piece in this node.") - PCE (* ; "PIECE ") - LO (* ; - "Subtree these nodes' ch#are less than this node.") - HI (* ; - " Subtree these nodes' ch#are more than this node.") - BF (* ; "Balance factor.") - (* ; - "1: Right(HI) Subtree is higher than left(lo) subtree.") - (* ; - "0: Right subtree and left subtree are same height") - (* ; - "-1: Right(HI) Subtree is shorter than left(lo) subtree.") - RANK (* ; "(# of nodes in left subtree) +1") - ) - CHNUM _ 0 BF _ 0 RANK _ 1) -) - -(/DECLAREDATATYPE 'PCTNODE '(POINTER POINTER POINTER POINTER POINTER POINTER) - '((PCTNODE 0 POINTER) - (PCTNODE 2 POINTER) - (PCTNODE 4 POINTER) - (PCTNODE 6 POINTER) - (PCTNODE 8 POINTER) - (PCTNODE 10 POINTER)) - '12) - - - -(* ;;; "THE END") - - - - -(* ;; -"Bits in the CHARTABLE that control line breaking, and what happens when a line is broken on this character " -) - -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RPAQQ NOTBEFORE.LB 1) - -(RPAQQ NOTAFTER.LB 2) - -(RPAQQ BEFORE.LB 4) - -(RPAQQ AFTER.LB 8) - -(RPAQQ DISAPPEAR-IF-NOT-SPLIT.LB 16) - -(RPAQQ NEWCHAR-IF-SPLIT.LB 32) - - -(CONSTANTS (NOTBEFORE.LB 1) - (NOTAFTER.LB 2) - (BEFORE.LB 4) - (AFTER.LB 8) - (DISAPPEAR-IF-NOT-SPLIT.LB 16) - (NEWCHAR-IF-SPLIT.LB 32)) -) -) -(PUTPROPS TEDITDCL COPYRIGHT ("Venue" 1986 1987 1988 1989 1990 1991 1993 1994 1995)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL))) -STOP diff --git a/obsolete/library/new/TEDITDCL.LCOM b/obsolete/library/new/TEDITDCL.LCOM deleted file mode 100644 index 1cbff1f1..00000000 --- a/obsolete/library/new/TEDITDCL.LCOM +++ /dev/null @@ -1 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") (FILECREATED "23-Mar-95 14:06:27" ("compiled on " {DSK}library>new>TEDITDCL.;1) " 2-Feb-95 10:57:29" bcompl'd in "Medley 2-Feb-95 ..." dated " 2-Feb-95 12:09:48") (FILECREATED "22-Mar-95 18:05:53" {DSK}library>new>TEDITDCL.;1 86457 changes to%: (RECORDS PIECE) previous date%: "25-Aug-94 10:53:00" {DSK}library>TEDITDCL.;2) (PRETTYCOMPRINT TEDITDCLCOMS) (RPAQQ TEDITDCLCOMS ((* ;;; "This file is the collected record declarations and compile-time necessities for TEDIT.") (* ;; "FROM TEDIT") (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (\SCRATCHLEN 64))) (* ;; "FROM TEDITSELECTION") (RECORDS SELECTION) (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (COPYSELSHADE 30583) (COPYLOOKSSELSHADE 30583) (EDITMOVESHADE -1) (EDITGRAY 32800))) (VARS TEDITFILES) (* ;; "FROM TEDITSCREEN") (RECORDS THISLINE LINEDESCRIPTOR LINECACHE) (DECLARE%: EVAL@COMPILE DONTCOPY ( CONSTANTS (LMInvisibleRun 401) (LMLooksChange 400))) (* ;; "FROM TEXTOFD") (RECORDS EDITMARK) (RECORDS PIECE TEXTOBJ TEXTIMAGEDATA TEXTSTREAM) (OPTIMIZERS TEXTPROP) (COMS (* ;; "Private data structures and constants FROM TEXTOFD") (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS ( \PCTBFreePieces 0) (\PCTBLastPieceOffset 1) (\FirstPieceOffset 2) (\SecondPieceOffset 4) ( \EltsPerPiece 2)) (MACROS \EDITELT \GETCH \GETCHB \EDITSETA \WORDSETA) (GLOBALVARS \TEXTIMAGEOPS \TEXTOFD \TEXTFDEV))) (* ;;; "FROM TEDITPAGE") (RECORDS PAGEFORMATTINGSTATE PAGEREGION) (DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS TEDITPAPERSIZE) (FUNCTIONS \NEW-COLUMN-START \FIRST-COLUMN-START)) (* ;; "FROM TEDITFIND") (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (\AlphaNumericFlag 256) (\AlphaFlag 512) (\OneCharPattern 1024) (\AnyStringPattern 1025) (\OneAlphaPattern 1026) (\AnyAlphaPattern 1027) ( \OneNonAlphaPattern 1028) (\AnyNonAlphaPattern 1029) (\LeftBracketPattern 1030) (\RightBracketPattern 1031) (\SpecialPattern 1024))) (* ;; " FROM TEDITLOOKS") (RECORDS CHARLOOKS FMTSPEC PENDINGTAB) ( DECLARE%: EVAL@COMPILE DONTCOPY (MACROS \SMALLPIN \SMALLPOUT ONOFF)) (* ;; "FROM TEDITMENU") ( DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS MBUTTON)) (INITRECORDS MBUTTON) (DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS NWAYBUTTON)) (INITRECORDS NWAYBUTTON) (DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS MARGINBAR)) (INITRECORDS MARGINBAR) (DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS TAB)) (RECORDS MB.3STATE MB.BUTTON MB.INSERT MB.MARGINBAR MB.NWAY MB.TEXT MB.TOGGLE) (FUNCTIONS WITHOUT-UPDATES) (* ;; "FROM TEDITHISTORY") (RECORDS TEDITHISTORYEVENT) (* ;; "FROM TEDITFILE") (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (\PieceDescriptorLOOKS 0) (\PieceDescriptorOBJECT 1) (\PieceDescriptorPARA 2) ( \PieceDescriptorPAGEFRAME 3) (\PieceDescriptorCHARLOOKSLIST 4) (\PieceDescriptorPARALOOKSLIST 5) ( \PieceDescriptorSAFEOBJECT 6))) (* ;; "FROM TEDITCOMMAND") (DECLARE%: EVAL@COMPILE DONTCOPY (MACROS \INSERT\TTY\BUFFER \TEDIT.MOUSESTATE \TEDIT.CHECK)) (DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS TEDITTERMCODE)) (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (NONE.TTC 0) (CHARDELETE.TTC 1) ( WORDDELETE.TTC 2) (DELETE.TTC 3) (FUNCTIONCALL.TTC 4) (REDO.TTC 5) (UNDO.TTC 6) (CMD.TTC 7) (NEXT.TTC 8) (EXPAND.TTC 9) (PUNCT.TTC 20) (TEXT.TTC 21) (WHITESPACE.TTC 22))) (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (MSPACE 153) (NSPACE 152) (THINSPACE 159) (FIGSPACE 154))) (* ;; "FROM TEDITWINDOW") ( DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS TEDITCARET)) (INITRECORDS TEDITCARET) (* ;; "FROM PCTREE added by Nakamura") (RECORDS PCTNODE) (* ;;; "THE END") (COMS (* ;; "Bits in the CHARTABLE that control line breaking, and what happens when a line is broken on this character " ) (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (NOTBEFORE.LB 1) (* ; "Must not break before this character (e.g. Japanese right-paren)") (NOTAFTER.LB 2) (* ; "Must not break after this character (e.g. Japanese open-quote)") (BEFORE.LB 4) (* ; "OK to break before this character, provided it's OK to break after the prior char (true of most non-white-space)" ) (AFTER.LB 8) (* ; "OK to break after this char, if it's OK to break before the next one (true of most white space)") ( DISAPPEAR-IF-NOT-SPLIT.LB 16) (* ; "This character shouldn't be rendered if it isn't the last char on the line (non-breaking hyphen has this)" ) (NEWCHAR-IF-SPLIT.LB 32) (* ; "Look this char up in *TEDIT-SPLITCHAR-HASH* if this IS the last character on a line, and render it as the char we found." )))))) (DATATYPE SELECTION ((* ;; "Description of a piece of selected text for TEdit. Text has to be selected before it can be operated on by the user." ) Y0 (* ; "Y value of topmost line of selection") X0 (* ; "X value of left edge of selection") DX (* ; "Width of the selection, if it's on one line.") CH# (* ; "CH# of the first selected character") XLIM (* ; "X value of right edge of last selected character") CHLIM (* ; "CH# of the last character in the selection") DCH (* ; "# of characters selected (can be zero, for point selection.)") L1 (* ; "-> line descriptor for the line where the first selected character is") LN (* ; "-> line descriptor for the line which contains the end of the selection") YLIM (* ; "Y value of the bottom of the line that ends the selection") POINT (* ; "Which end should the caret appear at? (LEFT or RIGHT)") (SET FLAG) (* ; "T if this selection is real; NIL if not") (\TEXTOBJ FULLXPOINTER) (* ; "TEXTOBJ that describes the selected text") SELKIND (* ; "What kind of selection? CHAR or WORD or LINE or PARA") HOW (* ; "SHADE used to highlight this selection") HOWHEIGHT (* ; "Height of the highlight (1 usually, full line for delete selection...)") (HASCARET FLAG) (* ; "T if there should be a caret for this selection") SELOBJ (* ; "If this selection is inside an object, which object?") (ONFLG FLAG) (* ; "T if the selection is highlighted on the screen, else NIL") SELOBJINFO (* ; "A Place for the selected object to put info about selection inside itself.")) SET _ NIL HOW _ BLACKSHADE HOWHEIGHT _ 1 HASCARET _ T Y0 _ 0 X0 _ 0 POINT _ (QUOTE LEFT) L1 _ (LIST NIL) LN _ (LIST NIL)) (/DECLAREDATATYPE (QUOTE SELECTION) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER FLAG FULLXPOINTER POINTER POINTER POINTER FLAG POINTER FLAG POINTER)) (QUOTE ((SELECTION 0 POINTER) (SELECTION 2 POINTER) (SELECTION 4 POINTER) (SELECTION 6 POINTER) ( SELECTION 8 POINTER) (SELECTION 10 POINTER) (SELECTION 12 POINTER) (SELECTION 14 POINTER) (SELECTION 16 POINTER) (SELECTION 18 POINTER) (SELECTION 20 POINTER) (SELECTION 20 (FLAGBITS . 0)) (SELECTION 22 FULLXPOINTER) (SELECTION 24 POINTER) (SELECTION 26 POINTER) (SELECTION 28 POINTER) (SELECTION 28 ( FLAGBITS . 0)) (SELECTION 30 POINTER) (SELECTION 30 (FLAGBITS . 0)) (SELECTION 32 POINTER))) (QUOTE 34 )) (RPAQQ TEDITFILES (PCTREE TEXTOFD TEDIT TEDITABBREV TEDITCOMMAND TEDITDCL TEDITFILE TEDITFIND TEDITFNKEYS TEDITHCPY TEDITHISTORY TEDITLOOKS TEDITMENU TEDITPAGE TEDITSCREEN TEDITSELECTION TEDITWINDOW)) (DATATYPE THISLINE ((* ;; "Cache for line-related character location info, for selection and line-display code to use.") (DESC FULLXPOINTER) (* ; "Line descriptor for the line this describes now") LEN (* ; "Length of the line in characters") CHARS (* ;; "Array of character codes (or objects) on the line (charcode of 400 => dummy entry for looks change--go get next entry in LOOKS)" ) WIDTHS (* ; "Array of each character's width in points") LOOKS (* ; "Array of any looks changes within the line. LOOKS (0) = starting character looks for the line") TLSPACEFACTOR (* ; "The SPACEFACTOR to be used in printing this line") TLFIRSTSPACE (* ; "The first space to which SPACEFACTOR is to apply. This is used so that spaces to the left of a TAB have their default width." )) LEN _ 0 CHARS _ (ARRAY 512 (QUOTE POINTER) 0 0) WIDTHS _ (ARRAY 512 (QUOTE POINTER) 0 0) LOOKS _ ( ARRAY 512 (QUOTE POINTER) NIL 0) TLFIRSTSPACE _ 0) (DATATYPE LINEDESCRIPTOR ((* ;; "Description of a single line of formatted text, either on the display or for a printed page.") YBOT ( * ; "Y value for the bottom of the line (below the descent)") YBASE (* ; "Yvalue for the base line the characters sit on") LEFTMARGIN (* ; "Left margin, in screen points") RIGHTMARGIN (* ; "Right margin, in screen points") LXLIM (* ; "X value of right edge of rightmost character on the line (may exceed right margin, if char is a space.)" ) SPACELEFT (* ; "Space left on the line, ignoring trailing blanks & CRs.") LHEIGHT (* ; "Total height of hte line, Ascent+Descent.") ASCENT (* ; "Ascent of the line above YBASE") DESCENT (* ; "How far line descends below YBASE") LTRUEDESCENT (* ; "The TRUE DESCENT for this line, unadjusted for line leading.") LTRUEASCENT (* ; "The TRUE ASCENT for this line, unadjusted for pre-paragraph leading.") CHAR1 (* ; "CH# of the first character on the line.") CHARLIM (* ; "CH# of the last character on the line") CHARTOP (* ; "CH# of the character which forced the line break (may exceed CHARLIM)") NEXTLINE (* ; "Next line chain pointer") (PREVLINE FULLXPOINTER) (* ; "Previous line chain pointer") LMARK (* ; "One of SOLID, GREY, NIL. Tells what kind of special-line marker should be put in the left margin for this paragraph. (For hardcopy, can also be an indicator for special processing?)" ) LTEXTOBJ (* ; "A cached TEXTOBJ that this line took its text from. Used in hardcopy to disambiguate when chno's should be updated..." ) CACHE (* ; "A cached THISLINE, for keeping hardcopy info around while we crunch with the line descriptors to make things fit." ) LDOBJ (* ; "The object which lies behind this line of text, for updating, etc.") LFMTSPEC (* ; "The format spec for this line's paragraph (eventually)") (DIRTY FLAG) (* ; "T if this line has changed since it was last formatted.") (CR\END FLAG) (* ; "T if this line ends with a CR.") (DELETED FLAG) (* ; "T if this line has been completely deleted since it was last formatted or displayed. (Used by deletion routines to detect garbage lines)" ) (LHASPROT FLAG) (* ; "This line contains protected text.") (LHASTABS FLAG) (* ; "If this line has a tab in it, this is the line-relative ch# of the final tab. This is to let us punt properly with tabs in a line." ) (1STLN FLAG) (* ; "This line is the first line in a paragraph") (LSTLN FLAG) (* ; "This is the last line in a paragraph")) CHARLIM _ 1000000 NEXTLINE _ NIL PREVLINE _ NIL DIRTY _ NIL YBOT _ 0 YBASE _ 0 LEFTMARGIN _ 0 DELETED _ NIL) (DATATYPE LINECACHE ((* ;; "Image cache for display lines.") LCBITMAP (* ; "The bitmap that will be used by this instance of the cache") (LCNEXTCACHE FULLXPOINTER) (* ; "The next cache in the chain, for screen updates."))) (/DECLAREDATATYPE (QUOTE THISLINE) (QUOTE (FULLXPOINTER POINTER POINTER POINTER POINTER POINTER POINTER)) (QUOTE ((THISLINE 0 FULLXPOINTER) (THISLINE 2 POINTER) (THISLINE 4 POINTER) (THISLINE 6 POINTER) (THISLINE 8 POINTER) (THISLINE 10 POINTER) (THISLINE 12 POINTER))) (QUOTE 14)) (/DECLAREDATATYPE (QUOTE LINEDESCRIPTOR) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER FULLXPOINTER POINTER POINTER POINTER POINTER POINTER FLAG FLAG FLAG FLAG FLAG FLAG FLAG)) (QUOTE ((LINEDESCRIPTOR 0 POINTER) ( LINEDESCRIPTOR 2 POINTER) (LINEDESCRIPTOR 4 POINTER) (LINEDESCRIPTOR 6 POINTER) (LINEDESCRIPTOR 8 POINTER) (LINEDESCRIPTOR 10 POINTER) (LINEDESCRIPTOR 12 POINTER) (LINEDESCRIPTOR 14 POINTER) ( LINEDESCRIPTOR 16 POINTER) (LINEDESCRIPTOR 18 POINTER) (LINEDESCRIPTOR 20 POINTER) (LINEDESCRIPTOR 22 POINTER) (LINEDESCRIPTOR 24 POINTER) (LINEDESCRIPTOR 26 POINTER) (LINEDESCRIPTOR 28 POINTER) ( LINEDESCRIPTOR 30 FULLXPOINTER) (LINEDESCRIPTOR 32 POINTER) (LINEDESCRIPTOR 34 POINTER) ( LINEDESCRIPTOR 36 POINTER) (LINEDESCRIPTOR 38 POINTER) (LINEDESCRIPTOR 40 POINTER) (LINEDESCRIPTOR 40 (FLAGBITS . 0)) (LINEDESCRIPTOR 40 (FLAGBITS . 16)) (LINEDESCRIPTOR 40 (FLAGBITS . 32)) ( LINEDESCRIPTOR 40 (FLAGBITS . 48)) (LINEDESCRIPTOR 38 (FLAGBITS . 0)) (LINEDESCRIPTOR 38 (FLAGBITS . 16)) (LINEDESCRIPTOR 38 (FLAGBITS . 32)))) (QUOTE 42)) (/DECLAREDATATYPE (QUOTE LINECACHE) (QUOTE (POINTER FULLXPOINTER)) (QUOTE ((LINECACHE 0 POINTER) ( LINECACHE 2 FULLXPOINTER))) (QUOTE 4)) (RECORD EDITMARK ((* ;; "Used for fast access to a given place in the text--a %"Marker%". It consists of the piece, and the offset within the piece, and the piece number within the piece table. That's everything that's needed to set a text stream up quickly to start reading from a given place." ) PC PCOFF . PCNO)) (DATATYPE PIECE ((* ; "The piece describes either a string or part of a file. , or a generalized OBJECT.") PSTR (* ; "The string where this piece's text resides, or NIL") PFILE (* ; "The file which contains this piece's text, or NIL") (PFPOS FIXP) (* ; "The FILEPTR of the start of the piece in the file") (PLEN FIXP) (* ; "Length of the piece, in characters.") (NEXTPIECE FULLXPOINTER) (* ; "-> Next piece in this textobj.") (PREVPIECE FULLXPOINTER) (* ; "-> Prior piece in this text object.") PLOOKS (* ; "Formatting info and formatting events in this piece") POBJ (* ; "The OBJECT this piece describes") ( PPARALAST FLAG) (* ; "This piece contains a paragraph break") PPARALOOKS (* ; "Paragraph looks for this piece") (PNEW FLAG) (* ; "This text is new here; used by the tentative edit system, and anyone else interested.") (PFATP FLAG) (* ; "T if the characters in this piece are FAT -- i.e., are 16 bits each.") (PTREENODE XPOINTER) (* ; "Points to the PCTB tree-node that contains this piece.")) PSTR _ NIL PFILE _ NIL PFPOS _ 0 PLEN _ 0 PPARALOOKS _ TEDIT.DEFAULT.FMTSPEC PTREENODE _ NIL) (DATATYPE TEXTOBJ ((* ;; "This is where TEdit stores its state information, and internal data about the text being edited.") PCTB (* ; "The piece table") TEXTLEN (* ; "# of chars in the text") \INSERTPC (* ; "Piece to hold type-in") \INSERTPCNO (* ; "Piece # of the input piece") \INSERTNEXTCH (* ; "CH# of next char which is typed into that piece.") \INSERTLEFT (* ; "Space left in the type-in piece" ) \INSERTLEN (* ; "# of characters already in the piece.") \INSERTSTRING (* ; "The string which the piece describes.") \INSERTFIRSTCH (* ; "CH# of first char in the piece.") ( \INSERTPCVALID FLAG) (* ; "T if it's OK to use the cached piece. Set to NIL by people who require that the next insertion/deletion use a different piece." ) \WINDOW (* ; "The window where this textobj is displayed") MOUSEREGION (* ; "Section of the window the mouse is in.") LINES (* ; "-> to top of chain of line descriptors for displayed text") DS (* ; "Display stream where this textobj is displayed") SEL (* ; "The current selection within the text") SCRATCHSEL (* ; "Scratch space for the selection code") MOVESEL (* ; "Source for the next MOVE of text") SHIFTEDSEL (* ; "Source for the next COPY") DELETESEL (* ; "Text to be deleted imminently") WRIGHT (* ; "Right edge of the window (or subregion) where this is displayed") WTOP (* ; "Top of the window/region") WBOTTOM (* ; "Bottom of the window/region") WLEFT (* ; "Left edge of the window/region") TXTFILE (* ; "The original text file we're editing") (\XDIRTY FLAG) (* ; "T => changed since last saved.") (STREAMHINT FULLXPOINTER) (* ; "-> the TEXTOFD stream which gives access to this textobj") EDITFINISHEDFLG (* ; "T => The guy has asked the editor to go way") CARET (* ; "Describes the flashing caret for the editing window") CARETLOOKS (* ; "Font to be used for inserted text.") WINDOWTITLE (* ; "Original title for this window, of there was one.") THISLINE (* ; "Cache of line-related info, to speed up selection &c") (MENUFLG FLAG) (* ; "T if this TEXTOBJ is a tedit-style menu") FMTSPEC (* ; "Default Formatting Spec to be used when formatting paragraphs") (FORMATTEDP FLAG) (* ; "Flag for paragraph formatting. T if this document is to contain paragraph formatting information.") (TXTREADONLY FLAG) (* ; "This is only available for shift selection.") (TXTEDITING FLAG) (* ; "T => This document is in a window and there is an edit process behind it. For example, it only makes sense to have a caret show up if you are editing." ) (TXTNONSCHARS FLAG) (* ; "T => If TEdit rns into a 255, it won't attempt to convert to NS characters. Used for REALLY plain-text manipulation." ) TXTTERMSA (* ; "Special instructions for displaying characters on the screen") EDITOPACTIVE (* ; "T if there is an editing operation in progress. Used to interlock the TEdit menu") DEFAULTCHARLOOKS (* ; "The default character looks -- if any -- to be applied to characters coming into the file from outside." ) TXTRTBL (* ; "The READTABLE to be used by the command loop for command dispatch") TXTWTBL (* ; "The READTABLE to be used to decide on word breaks") EDITPROPS (* ; "The PROPS that were passed into this edit session") (BLUEPENDINGDELETE FLAG) (* ; "T if the next insertion in this document is to be preceded by a deletion of the then-current selection" ) TXTHISTORY (* ; "The history list for this edit session.") (SELWINDOW FULLXPOINTER) (* ; "The window in which the last 'real' selection got made for this edit; used to control caret placement" ) PROMPTWINDOW (* ; "A window to be used for unscheduled interactions; normally a small window above the edit window") DISPLAYCACHE (* ; "The bitmap to be used when building the image of a line for display") DISPLAYCACHEDS (* ; "The DISPLAYSTREAM that is used to build line images") DISPLAYHCPYDS (* ; "The DISPLAYSTREAM used to build line images of lines that are displayed in 'hardcopy' simulation mode" ) TXTPAGEFRAMES (* ; "A tree of page frames, specifying how the document is to be laid out.") TXTCHARLOOKSLIST (* ; "List of all the CHARLOOKSs in the document, so they can be kept unique") TXTPARALOOKSLIST (* ; "List of all the FMTSPECs in the document, so they can be kept unique") ( TXTNEEDSUPDATE FLAG) (* ; "T => Screen invalid, need to run updater") (TXTDON'TUPDATE FLAG) (* ; "T if we're holding off on screen updates until later. Used, e.g., by the menu-SHOW code so that you don't get piecemeal updates, but only one at the end of the SHOW." ) TXTRAWINCLUDESTREAM (* ; "NODIRCORE stream used to cache RAW includes (and maybe later, all includes?)") DOCPROPS (* ; "Document properties that are stored with the document (not used yet)") TXTSTYLESHEET (* ; "Style sheet local to this document. Not currently saved as part of the file.")) (ACCESSFNS TEXTOBJ ( (\DIRTY (ffetch (TEXTOBJ \XDIRTY) of DATUM) (PROGN (IF (NEQ (FETCH (TEXTOBJ \XDIRTY) OF DATUM) NEWVALUE) THEN (* ; "update the title to reflect the change") (\TEDIT.WINDOW.TITLE DATUM ( \TEDIT.ORIGINAL.WINDOW.TITLE (ffetch (TEXTOBJ TXTFILE) of DATUM) NEWVALUE))) (freplace \XDIRTY OF DATUM WITH NEWVALUE))))) SEL _ (create SELECTION) SCRATCHSEL _ (create SELECTION) MOVESEL _ (create SELECTION HOWHEIGHT _ 32767 HASCARET _ NIL) SHIFTEDSEL _ (create SELECTION HASCARET _ NIL) DELETESEL _ (create SELECTION HOWHEIGHT _ 32767 HASCARET _ NIL) \INSERTNEXTCH _ -1 \INSERTPC _ NIL \INSERTLEFT _ 0 \INSERTLEN _ 0 \INSERTSTRING _ NIL \INSERTFIRSTCH _ 1000000 TEXTLEN _ 0 WRIGHT _ 0 WTOP _ 0 WLEFT _ 0 WBOTTOM _ 0 TXTFILE _ NIL \XDIRTY _ NIL MOUSEREGION _ (QUOTE TEXT) THISLINE _ (create THISLINE) MENUFLG _ NIL FMTSPEC _ TEDIT.DEFAULT.FMTSPEC FORMATTEDP _ NIL) (DATATYPE TEXTIMAGEDATA ((* ;; "Fills the IMAGEDATA field of text streams.") TICURPARALOOKS (* ; "The current paragraph looks") TICURIMAGESTREAM (* ; "The image stream for this hardcopy transduction" ) TILOOKSUPDATEFN (* ; "The function to call to update looks for this stream") TIPCOFFSET (* ; "The offset into the current piece, as of the last page cross."))) (ACCESSFNS TEXTSTREAM ((* ;; "Overlay for the STREAM record to allow mnemonic access to stream fields for Text streams.") (REALFILE (fetch F1 of DATUM) (REPLACE F1 OF DATUM WITH NEWVALUE)) (* ; "The real, underlying file behind the current piece") (CHARSLEFT (fetch F2 of DATUM) (REPLACE F2 OF DATUM WITH NEWVALUE)) (* ;; "The # of characters that will be left in the current piece the next time its file crosses a page boundary" ) (TEXTOBJ (fetch F3 of DATUM) (REPLACE F3 OF DATUM WITH NEWVALUE)) (* ; "The TEXTOBJ that is editing this text") (PIECE (fetch F5 of DATUM) (REPLACE F5 OF DATUM WITH NEWVALUE )) (* ; "The PIECE we're currently fetching chars from/putting chars into") (PCNO (fetch FW8 of DATUM) (REPLACE FW8 OF DATUM WITH NEWVALUE)) (* ; "The position of that piece in the piece table") ( PCSTARTPG (fetch FW6 of DATUM) (REPLACE FW6 OF DATUM WITH NEWVALUE)) (* ; "The underlying file page# that this piece starts on") (PCSTARTCH (fetch FW7 of DATUM) (REPLACE FW7 OF DATUM WITH NEWVALUE)) (* ; "The char within page of the underlying file that this piece starts on -- for backbin & co") (PCOFFSET (fetch TIPCOFFSET of (fetch IMAGEDATA of DATUM)) (REPLACE TIPCOFFSET OF (fetch IMAGEDATA of DATUM) with NEWVALUE)) (* ; "The offset into the current piece, as of the last page cross.") (CURRENTLOOKS ( fetch F10 of DATUM) (replace F10 of DATUM with NEWVALUE)) (* ; "The CHARLOOKS that are currently applicable to characters being taken from the stream.") ( CURRENTPARALOOKS (fetch TICURPARALOOKS of (fetch IMAGEDATA of DATUM)) (REPLACE TICURPARALOOKS OF ( fetch IMAGEDATA of DATUM) with NEWVALUE)) (* ; "The FMTSPEC that is currently applicable to characters being taken from the stream.") ( CURRENTIMAGESTREAM (fetch TICURIMAGESTREAM of (fetch IMAGEDATA of DATUM)) (REPLACE TICURIMAGESTREAM OF (fetch IMAGEDATA of DATUM) with NEWVALUE) (* ; "The image stream that this text is being put onto; used for scaling decisions")) (LOOKSUPDATEFN ( fetch TILOOKSUPDATEFN of (fetch IMAGEDATA of DATUM)) (REPLACE TILOOKSUPDATEFN OF (fetch IMAGEDATA of DATUM) with NEWVALUE)) (* ; "Function to be called each time character looks change.") (FATSTREAMP ( fetch F4 of DATUM) (REPLACE F4 OF DATUM WITH NEWVALUE)) (* ; "T if the current piece is 16 bit characters.")) (CREATE (create STREAM using \TEXTOFD IMAGEDATA _ ( create TEXTIMAGEDATA)))) (/DECLAREDATATYPE (QUOTE PIECE) (QUOTE (POINTER POINTER FIXP FIXP FULLXPOINTER FULLXPOINTER POINTER POINTER FLAG POINTER FLAG FLAG XPOINTER)) (QUOTE ((PIECE 0 POINTER) (PIECE 2 POINTER) (PIECE 4 FIXP) ( PIECE 6 FIXP) (PIECE 8 FULLXPOINTER) (PIECE 10 FULLXPOINTER) (PIECE 12 POINTER) (PIECE 14 POINTER) ( PIECE 14 (FLAGBITS . 0)) (PIECE 16 POINTER) (PIECE 16 (FLAGBITS . 0)) (PIECE 16 (FLAGBITS . 16)) ( PIECE 18 XPOINTER))) (QUOTE 20)) (/DECLAREDATATYPE (QUOTE TEXTOBJ) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER FLAG POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER FLAG FULLXPOINTER POINTER POINTER POINTER POINTER POINTER FLAG POINTER FLAG FLAG FLAG FLAG POINTER POINTER POINTER POINTER POINTER POINTER FLAG POINTER FULLXPOINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER FLAG FLAG POINTER POINTER POINTER)) (QUOTE ((TEXTOBJ 0 POINTER) (TEXTOBJ 2 POINTER) (TEXTOBJ 4 POINTER) (TEXTOBJ 6 POINTER) (TEXTOBJ 8 POINTER) (TEXTOBJ 10 POINTER) (TEXTOBJ 12 POINTER) (TEXTOBJ 14 POINTER) (TEXTOBJ 16 POINTER) (TEXTOBJ 16 (FLAGBITS . 0)) ( TEXTOBJ 18 POINTER) (TEXTOBJ 20 POINTER) (TEXTOBJ 22 POINTER) (TEXTOBJ 24 POINTER) (TEXTOBJ 26 POINTER ) (TEXTOBJ 28 POINTER) (TEXTOBJ 30 POINTER) (TEXTOBJ 32 POINTER) (TEXTOBJ 34 POINTER) (TEXTOBJ 36 POINTER) (TEXTOBJ 38 POINTER) (TEXTOBJ 40 POINTER) (TEXTOBJ 42 POINTER) (TEXTOBJ 44 POINTER) (TEXTOBJ 44 (FLAGBITS . 0)) (TEXTOBJ 46 FULLXPOINTER) (TEXTOBJ 48 POINTER) (TEXTOBJ 50 POINTER) (TEXTOBJ 52 POINTER) (TEXTOBJ 54 POINTER) (TEXTOBJ 56 POINTER) (TEXTOBJ 56 (FLAGBITS . 0)) (TEXTOBJ 58 POINTER) ( TEXTOBJ 58 (FLAGBITS . 0)) (TEXTOBJ 58 (FLAGBITS . 16)) (TEXTOBJ 58 (FLAGBITS . 32)) (TEXTOBJ 58 ( FLAGBITS . 48)) (TEXTOBJ 60 POINTER) (TEXTOBJ 62 POINTER) (TEXTOBJ 64 POINTER) (TEXTOBJ 66 POINTER) ( TEXTOBJ 68 POINTER) (TEXTOBJ 70 POINTER) (TEXTOBJ 70 (FLAGBITS . 0)) (TEXTOBJ 72 POINTER) (TEXTOBJ 74 FULLXPOINTER) (TEXTOBJ 76 POINTER) (TEXTOBJ 78 POINTER) (TEXTOBJ 80 POINTER) (TEXTOBJ 82 POINTER) ( TEXTOBJ 84 POINTER) (TEXTOBJ 86 POINTER) (TEXTOBJ 88 POINTER) (TEXTOBJ 88 (FLAGBITS . 0)) (TEXTOBJ 88 (FLAGBITS . 16)) (TEXTOBJ 90 POINTER) (TEXTOBJ 92 POINTER) (TEXTOBJ 94 POINTER))) (QUOTE 96)) (/DECLAREDATATYPE (QUOTE TEXTIMAGEDATA) (QUOTE (POINTER POINTER POINTER POINTER)) (QUOTE (( TEXTIMAGEDATA 0 POINTER) (TEXTIMAGEDATA 2 POINTER) (TEXTIMAGEDATA 4 POINTER) (TEXTIMAGEDATA 6 POINTER) )) (QUOTE 8)) (DEFOPTIMIZER TEXTPROP (TEXTOBJ PROP &OPTIONAL (VAL NIL WRITING)) (* ;; "compiles calls to TEXTPROP") (COND ((NOT (LISTP PROP)) (* ; "property is not quoted.") (QUOTE IGNOREMACRO)) ((NOT (EQ (CAR PROP) ( QUOTE QUOTE))) (* ; "property is not quoted.") (QUOTE IGNOREMACRO)) ((NOT WRITING) (* ; "fetching a TEXTPROP property.") (SELECTQ (CADR PROP) ((READONLY READ-ONLY) (BQUOTE (fetch (TEXTOBJ TXTREADONLY) of (TEXTOBJ (\, TEXTOBJ))))) ((BEING-EDITED ACTIVE) (BQUOTE (fetch (TEXTOBJ TXTEDITING) of (TEXTOBJ (\, TEXTOBJ))))) ((NO-NS-CHARS NONSCHARS NO-NSCHARS) (BQUOTE (fetch (TEXTOBJ TXTNONSCHARS) of (TEXTOBJ (\, TEXTOBJ))))) (BQUOTE (LISTGET (fetch (TEXTOBJ EDITPROPS) of (TEXTOBJ (\, TEXTOBJ))) ( \, PROP))))) (T (* ; "storing a window property") (SELECTQ (CADR PROP) ((READONLY READ-ONLY) (BQUOTE ( REPLACE (TEXTOBJ TXTREADONLY) OF (TEXTOBJ (\, TEXTOBJ)) WITH (\, VAL)))) ((BEING-EDITED ACTIVE) ( BQUOTE (REPLACE (TEXTOBJ TXTEDITING) OF (TEXTOBJ (\, TEXTOBJ)) WITH (\, VAL)))) ((NO-NS-CHARS NONSCHARS NO-NSCHARS) (BQUOTE (REPLACE (TEXTOBJ TXTNONSCHARS) OF (TEXTOBJ (\, TEXTOBJ)) WITH (\, VAL)) )) (BQUOTE (LET* (($$TEXTOBJ$$ (TEXTOBJ (\, TEXTOBJ))) ($$PROPLST$$ (FETCH EDITPROPS OF $$TEXTOBJ$$))) (COND ($$PROPLST$$ (LISTPUT $$PROPLST$$ (\, PROP) (\, VAL))) (T (REPLACE EDITPROPS OF $$TEXTOBJ$$ WITH (LIST (\, PROP) (\, VAL))))))))))) (RECORD PAGEFORMATTINGSTATE ((* ;; "Contains the state for a TEdit page-formatting job.") PAGE# (* ; "The current page number. Counted from 1") FIRSTPAGE (* ;; "T if the current page is the 'first page' . Is set initially, and can be set again by the user at will. Gets reset after each page image is printed." ) MINPAGE# (* ; "The page # of the first page to be printed, or NIL") MAXPAGE# (* ; "The page # of the last page to be printed, or NIL") STATE (* ; "One of FORMATTING or SEARCHING.") REQUIREDREGIONTYPE (* ; "If STATE is SEARCHING, the kind of box we're looking for. If STATE is :SEARCHING-FOR-EQUIVALENT-PAGE, this is the page count for the matching page." ) MAINSTREAM (* ; "The principal textobj/stream source") CHNO (* ; "Our position in that stream") PRESSREGION (* ; "The press code's REGION info.") PAGEHEADINGS (* ; "The list of current values to be printed, indexed by heading type") PAGE#GENERATOR (* ; "List of page numbers; later, maybe, a function to generate page numbers. Used to fill in PAGE#TEXT, below" ) PAGE#TEXT (* ; "If special page numbers are in use, this is the place to take them from. PAGE# is still used for recto/verso decisions &c" ) PAGEISRECTO (* ; "T if this is a recto page, NIL if it's a VERSO page.") PAGEFOOTNOTELINES (* ; "A list of extant footnote lines that should appear at the next opportunity") PAGEFLOATINGTOPLINES (* ; "A list of lines that should float to the top of the next available place") PAGECOUNT (* ; "The number of pages we've formatted so far.") PAGELINECACHE (* ; "A cache for pre-created LINEDESCRIPTOR/THISLINE sets, to avoid the overhead of re-allocating them all the time" ) NEWPAGELAYOUT (* ; "If we switch page layouts in mid-document, this is where the new layout gets cached until we get started again." )) PAGECOUNT _ 0) (DATATYPE PAGEREGION ((* ;; "Describe a part of a page for page formatting. Can be made into compound descriptions.") REGIONFILLMETHOD (* ; "What kind of a region this is -- TEXT, FOLIO, PAGEHEADING, etc.") REGIONSPEC (* ; "The page-relative region this occupies") REGIONLOCALINFO (* ; "A PLIST for local information") ( REGIONPARENT FULLXPOINTER) (* ; "The parent node for this box, for sub-boxes") REGIONSUBBOXES (* ; "The sub-regions of this region") REGIONTYPE (* ; "A user-settable region type"))) (/DECLAREDATATYPE (QUOTE PAGEREGION) (QUOTE (POINTER POINTER POINTER FULLXPOINTER POINTER POINTER)) ( QUOTE ((PAGEREGION 0 POINTER) (PAGEREGION 2 POINTER) (PAGEREGION 4 POINTER) (PAGEREGION 6 FULLXPOINTER ) (PAGEREGION 8 POINTER) (PAGEREGION 10 POINTER))) (QUOTE 12)) (DATATYPE CHARLOOKS ((* ;; "Describes the appearance (%"Looks%") of characters in a TEdit document.") CLFONT (* ; "The font descriptor for these characters") CLNAME (* ;; "Name of the font (e.g., HELVETICA) THIS FIELD IS A HINT, OR FOR USE IN CHARLOOKS-BUILDING CODE. USE FONTPROP TO GET THE RIGHT VALUE FROM CLFONT." ) CLSIZE (* ; "Font size, in points") (CLITAL FLAG) (* ; "T if the characters are italic, else NIL") ( CLBOLD FLAG) (* ; "T if the characters are bold, else NIL") (CLULINE FLAG) (* ; "T if the characters are to be underscored, else NIL") (CLOLINE FLAG) (* ; "T if the characters are to be overscored, else NIL") (CLSTRIKE FLAG) (* ; "T if the characters are to be struck thru, else nil.") CLOFFSET (* ; "A superscripting offset in points (?) else NIL (SUBSCRIPTING IF NEGATIVE.)") (CLSMALLCAP FLAG) (* ; "T if small caps, else NIL") (CLINVERTED FLAG) (* ; "T if the characters are to be shown white-on-black") (CLPROTECTED FLAG) (* ; "T if chars can't be selected, else NIL") (CLINVISIBLE FLAG) (* ; "T if TEDIT is to ignore these chars; else NIL") (CLSELHERE FLAG) (* ;; "T if TEDIT can put selection after this char (for menu blanks) else NIL; anything typed after this char will NOT BE PROTECTED." ) (CLCANCOPY FLAG) (* ;; "T if this text can be selected for copying, even tho protected (it will become unprotected after the copy; for Dribble/TTY interface)" ) CLSTYLE (* ; "The style to be used in marking these characters; overridden by the other fields") CLUSERINFO (* ; "Any information that an outsider wants to include") CLLEADER (* ; "For creating dotted and other kinds of leader") CLRULES (* ;; "For arbitrarily-places horizontal rules. List of pairs, of (widthinpts . offsetfrombaselineinpts). Should be taken account of in ascent/descent calcs." ) (CLMARK FLAG) (* ;; "Used for a mark-&-sweep of looks at PUT time -- T means this set of looks really IS in use in the document" )) CLOFFSET _ 0) (DATATYPE FMTSPEC ((* ;; "Describe the paragraph formatting for a paragraph in a TEdit document.") 1STLEFTMAR (* ; "Left margin of the first line of the paragraph") LEFTMAR (* ; "Left margin of the rest of the lines in the paragraph") RIGHTMAR (* ; "Right margin for the paragraph") LEADBEFORE (* ; "Leading above the paragraph's first line, in points") LEADAFTER (* ; "Leading below the paragraph's bottom line, in points. NOT IMPLEMENTED.") LINELEAD (* ; "Leading between lines, in points. Actually, this space is added BELOW each line in the para.") FMTBASETOBASE (* ; "The baseline-to-baseline spacing between lines in this paragraph. THIS OVERRIDES THE LINE LEADING") TABSPEC (* ; "The list of tabs for this paragraph, including CAR for a default tab width") QUAD (* ; "How the para is formatted: one of LEFT, RIGHT, CENTERED, JUSTIFIED") FMTSTYLE (* ; "The STYLE that controls this paragraph's appearance") FMTCHARSTYLES (* ; "The characterstyles that control the appearance of characters in this para (maybe? may be part of the fmtstyle.)" ) FMTUSERINFO (* ; "Space for a PLIST of user info") FMTSPECIALX (* ; "A special horizontal location on the printed page for this para.") FMTSPECIALY (* ; "A special vertical location on the page for this para") (FMTHEADINGKEEP FLAG) (* ; "This para should be kept with the top line or so of the next para..") FMTPARATYPE (* ; "What kind of para this is: TEXT, PAGEHEADING, whatever") FMTPARASUBTYPE (* ; "Sub type of the type, e.g., what KIND of page heading this is.") FMTNEWPAGEBEFORE (* ; "Start a new box (if T) or back up the page formatting tree to make a new box of the type named in the value -- by going the least distance back up the tree, then back down until you find that kind of box." ) FMTNEWPAGEAFTER (* ; "Similarly") FMTKEEP (* ; "For information about how this paragraph is to be kept with other paragraphs.") FMTCOLUMN (* ; "For setting up side-by-side paragraphs easily ala BravoX") FMTVERTRULES (* ; "For Keeping track of vertical rules in force") (FMTMARK FLAG) (* ; "Used to keep track of which PARALOOKSs are really being used -- a mark & collect is done just before a PUT, so that only 'real' PARALOOKSs make it into the file" ) (* ; "Used for a mark&sweep of para looks at PUT time -- T means this looks really IS in use in the document, so it makes sense to save it on the file." ) (FMTHARDCOPY FLAG) (* ; "T if this paragraph is to be displayed in hardcopy-format.") FMTREVISED (* ; "T (or perhaps a revision level or revision-mark spec??) if this paragraph is to be marked as changed on output." )) TABSPEC _ (CONS NIL NIL)) (DATATYPE PENDINGTAB ((* ;; "The data structure for a tab, within the line formatter, that we haven't finished dealing with yet, e.g. a centered tab where you need to wait for AFTER the centered text to do the formatting." ) PTNEWTX (* ;; "An updated TX, being passed back to the line formatter. This results from the resolution of an old RIGHT, CENTERED, or DECIMAL tab, which changed the width of a prior tab." ) PTOLDTAB (* ; "The pending tab") PTTYPE (* ; "Its tab type") PTTABX (* ; "Its nominal X position") ( PTWBASE FULLXPOINTER) (* ; "The WBASE for its width, for updating when we've figured out how wide the tab really is") PTOLDTX (* ; "The TX as of when the tab was encountered."))) (/DECLAREDATATYPE (QUOTE CHARLOOKS) (QUOTE (POINTER POINTER POINTER FLAG FLAG FLAG FLAG FLAG POINTER FLAG FLAG FLAG FLAG FLAG FLAG POINTER POINTER POINTER POINTER FLAG)) (QUOTE ((CHARLOOKS 0 POINTER) ( CHARLOOKS 2 POINTER) (CHARLOOKS 4 POINTER) (CHARLOOKS 4 (FLAGBITS . 0)) (CHARLOOKS 4 (FLAGBITS . 16)) (CHARLOOKS 4 (FLAGBITS . 32)) (CHARLOOKS 4 (FLAGBITS . 48)) (CHARLOOKS 2 (FLAGBITS . 0)) (CHARLOOKS 6 POINTER) (CHARLOOKS 6 (FLAGBITS . 0)) (CHARLOOKS 6 (FLAGBITS . 16)) (CHARLOOKS 6 (FLAGBITS . 32)) ( CHARLOOKS 6 (FLAGBITS . 48)) (CHARLOOKS 2 (FLAGBITS . 16)) (CHARLOOKS 2 (FLAGBITS . 32)) (CHARLOOKS 8 POINTER) (CHARLOOKS 10 POINTER) (CHARLOOKS 12 POINTER) (CHARLOOKS 14 POINTER) (CHARLOOKS 14 (FLAGBITS . 0)))) (QUOTE 16)) (/DECLAREDATATYPE (QUOTE FMTSPEC) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER FLAG POINTER POINTER POINTER POINTER POINTER POINTER POINTER FLAG FLAG POINTER)) (QUOTE ((FMTSPEC 0 POINTER) (FMTSPEC 2 POINTER) (FMTSPEC 4 POINTER ) (FMTSPEC 6 POINTER) (FMTSPEC 8 POINTER) (FMTSPEC 10 POINTER) (FMTSPEC 12 POINTER) (FMTSPEC 14 POINTER) (FMTSPEC 16 POINTER) (FMTSPEC 18 POINTER) (FMTSPEC 20 POINTER) (FMTSPEC 22 POINTER) (FMTSPEC 24 POINTER) (FMTSPEC 26 POINTER) (FMTSPEC 26 (FLAGBITS . 0)) (FMTSPEC 28 POINTER) (FMTSPEC 30 POINTER) (FMTSPEC 32 POINTER) (FMTSPEC 34 POINTER) (FMTSPEC 36 POINTER) (FMTSPEC 38 POINTER) (FMTSPEC 40 POINTER) (FMTSPEC 40 (FLAGBITS . 0)) (FMTSPEC 40 (FLAGBITS . 16)) (FMTSPEC 42 POINTER))) (QUOTE 44)) (/DECLAREDATATYPE (QUOTE PENDINGTAB) (QUOTE (POINTER POINTER POINTER POINTER FULLXPOINTER POINTER)) ( QUOTE ((PENDINGTAB 0 POINTER) (PENDINGTAB 2 POINTER) (PENDINGTAB 4 POINTER) (PENDINGTAB 6 POINTER) ( PENDINGTAB 8 FULLXPOINTER) (PENDINGTAB 10 POINTER))) (QUOTE 12)) (TYPERECORD MB.3STATE ((* ;; "Describes a 3-state menu button.") MBLABEL (* ; "Label for the button on the screen") MBFONT (* ; "Font the label text should appear in") MBCHANGESTATEFN (* ; "Function to call when the button's state changes") MBINITSTATE (* ; "Button's initial state.")) MBFONT _ (FONTCREATE (QUOTE HELVETICA) 8 (QUOTE BOLD))) (TYPERECORD MB.BUTTON (MBLABEL MBBUTTONEVENTFN MBFONT) MBBUTTONEVENTFN _ (QUOTE MB.DEFAULTBUTTON.FN) MBFONT _ (FONTCREATE (QUOTE HELVETICA) 8 (QUOTE BOLD))) (TYPERECORD MB.INSERT (MBINITENTRY)) (TYPERECORD MB.MARGINBAR (ignoredfield)) (TYPERECORD MB.NWAY (MBBUTTONS MBFONT MBCHANGESTATEFN MBINITSTATE MBMAXITEMSPERLINE) MBFONT _ ( FONTCREATE (QUOTE HELVETICA) 8 (QUOTE BOLD))) (TYPERECORD MB.TEXT (MBSTRING MBFONT)) (TYPERECORD MB.TOGGLE (MBTEXT MBFONT MBCHANGESTATEFN MBINITSTATE) MBFONT _ (FONTCREATE (QUOTE HELVETICA) 8 (QUOTE BOLD))) (DEFMACRO WITHOUT-UPDATES (TEXTOBJ SCRATCHSEL &BODY BODY) (* ;; "For TEdit windows, run BODY without updating the edit window for TEXTOBJ. This is useful if you're making a log of changes to a document at one time, where the changes are in essence atomic, and you don't need to see intermediate results. It's also a good bit faster than constant updating." ) (* ;; "TEXTOBJ is the TEXTOBJ for the document you'll be modifying.") (* ;; "SCRATCHSEL should be the scratch selection (often used in this work)") (BQUOTE (LET ((OLD-UNWIND-FLAG (FETCH (TEXTOBJ TXTDON'TUPDATE) OF (\, TEXTOBJ)))) (CL:UNWIND-PROTECT (PROGN (replace (TEXTOBJ TXTDON'TUPDATE) of (\, TEXTOBJ) with T) (\,@ BODY)) (\SHOWSEL (\, SCRATCHSEL) NIL NIL) (replace SET of (\, SCRATCHSEL) with NIL) (\TEDIT.MARK.LINES.DIRTY (\, TEXTOBJ) 1 (fetch (TEXTOBJ TEXTLEN) of (\, TEXTOBJ))) (replace (TEXTOBJ TXTDON'TUPDATE) of (\, TEXTOBJ) with OLD-UNWIND-FLAG) ( TEDIT.UPDATE.SCREEN (\, TEXTOBJ)))))) (RECORD TEDITHISTORYEVENT ((* ;; "Describes one event on the TEdit edit history list.") THACTION (* ; "A LITATOM, specifying what the event was") THPOINT (* ; "Was the selection to the left or right?") THLEN (* ; "The # of chars involved") THCH# (* ; "The starting ch#") THFIRSTPIECE (* ; "First piece involved") THOLDINFO (* ; "Old info, for undo") THAUXINFO (* ; "Auxiliary info about the event, primarily for redo") THTEXTOBJ (* ;; "Place to remember a second textobj, for those like MOVE who need to remember both a source and a destination." )) THPOINT _ (QUOTE LEFT)) (/DECLAREDATATYPE (QUOTE TEDITCARET) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER)) (QUOTE ((TEDITCARET 0 POINTER) (TEDITCARET 2 POINTER) (TEDITCARET 4 POINTER) (TEDITCARET 6 POINTER) (TEDITCARET 8 POINTER) (TEDITCARET 10 POINTER) (TEDITCARET 12 POINTER) (TEDITCARET 14 POINTER) (TEDITCARET 16 POINTER) (TEDITCARET 18 POINTER) (TEDITCARET 20 POINTER))) ( QUOTE 22)) (DATATYPE PCTNODE (CHNUM (* ; "Character #of piece in this node.") PCE (* ; "PIECE ") LO (* ; "Subtree these nodes' ch#are less than this node.") HI (* ; " Subtree these nodes' ch#are more than this node.") BF (* ; "Balance factor.") (* ; "1: Right(HI) Subtree is higher than left(lo) subtree.") (* ; "0: Right subtree and left subtree are same height") (* ; "-1: Right(HI) Subtree is shorter than left(lo) subtree.") RANK (* ; "(# of nodes in left subtree) +1" )) CHNUM _ 0 BF _ 0 RANK _ 1) (/DECLAREDATATYPE (QUOTE PCTNODE) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER)) (QUOTE (( PCTNODE 0 POINTER) (PCTNODE 2 POINTER) (PCTNODE 4 POINTER) (PCTNODE 6 POINTER) (PCTNODE 8 POINTER) ( PCTNODE 10 POINTER))) (QUOTE 12)) (PUTPROPS TEDITDCL COPYRIGHT ("Venue" 1986 1987 1988 1989 1990 1991 1993 1994 1995)) NIL \ No newline at end of file diff --git a/obsolete/library/new/TEDITFILE b/obsolete/library/new/TEDITFILE deleted file mode 100644 index bc49b39a..00000000 --- a/obsolete/library/new/TEDITFILE +++ /dev/null @@ -1,3620 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED " 4-May-95 10:30:33" {DSK}library>new>TEDITFILE.;2 244496 - - changes to%: (FNS TEDIT.INCLUDE TEDIT.BUILD.PCTB0) - - previous date%: "25-Aug-94 10:53:27" {DSK}export>lispcore>library>TEDITFILE.;3) - - -(* ; " -Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995 by Venue & Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT TEDITFILECOMS) - -(RPAQQ TEDITFILECOMS - ((FILES TEDITDCL) - (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (\SCRATCHLEN 64)) - (FILES (LOADCOMP) - TEDITDCL)) - (COMS - (* ;; "GETting a file") - - (FNS TEDIT.BUILD.PCTB \TEDIT.CONVERT.FOREIGN.FORMAT TEDIT.FORMATTEDFILEP TEDIT.GET - TEDIT.PARSE.PAGEFRAMES1 \ARBIN \ATMIN \DWIN \STRINGIN \TEDIT.FORMATTEDP1 - \TEDIT.SET.WINDOW)) - (COMS - (* ;; "INCLUDEing a file") - - (FNS TEDIT.INCLUDE TEDIT.RAW.INCLUDE)) - (COMS - (* ;; "PUTting a file:") - - (FNS TEDIT.PUT TEDIT.PUT.PCTB \TEDIT.PUTRESET TEDIT.PUT.PIECE.DESCRIPTOR \ARBOUT - \ATMOUT \DWOUT \STRINGOUT \TEDIT-OPEN-FONT-FILE)) - (FNS \TEDIT.GET.CHARLOOKS.LIST \TEDIT.GET.SINGLE.CHARLOOKS \TEDIT.PUT.CHARLOOKS.LIST - \TEDIT.PUT.SINGLE.CHARLOOKS) - (FNS \TEDIT.GET.PARALOOKS.LIST \TEDIT.GET.SINGLE.PARALOOKS \TEDIT.PUT.PARALOOKS.LIST - \TEDIT.PUT.SINGLE.PARALOOKS) - (GLOBALVARS TEDIT.INPUT.FORMATS *TEDIT-FILE-READTABLE*) - (INITVARS (TEDIT.INPUT.FORMATS NIL) - (*TEDIT-FILE-READTABLE* (COPYREADTABLE \ORIGREADTABLE)) - (* ; - "For consistent reading and writing of info on TEdit files.") - ) - (COMS - (* ;; - "For converting old incoming format. Cutover 5/22/85 to permit looks changes in the future.") - - (FNS TEDIT.BUILD.PCTB2 \TEDIT.GET.CHARLOOKS.LIST2 \TEDIT.GET.SINGLE.CHARLOOKS2 - \TEDIT.PUT.SINGLE.PARALOOKS2 \TEDIT.PUT.SINGLE.CHARLOOKS2 - \TEDIT.GET.PARALOOKS.LIST2 \TEDIT.GET.SINGLE.PARALOOKS2 TEDIT.PUT.PCTB2 - \TEDIT.PUT.CHARLOOKS.LIST2 \TEDIT.PUT.PARALOOKS.LIST2)) - (COMS - (* ;; "For converting incoming old-format files (1/27/85 cutover)") - - (FNS TEDIT.BUILD.PCTB1 TEDIT.GET.PAGEFRAMES1 \TEDIT.GET.CHARLOOKS1 - \TEDIT.GET.PARALOOKS1 TEDIT.GET.OBJECT1)) - (COMS - (* ;; "VERSION 0 Compatibility reading functions") - - (FNS TEDIT.BUILD.PCTB0 TEDIT.GET.CHARLOOKS0 TEDIT.GET.OBJECT0 TEDIT.GET.PARALOOKS0)))) - -(FILESLOAD TEDITDCL) -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RPAQQ \SCRATCHLEN 64) - - -(CONSTANTS (\SCRATCHLEN 64)) -) - - -(FILESLOAD (LOADCOMP) - TEDITDCL) -) - - - -(* ;; "GETting a file") - -(DEFINEQ - -(TEDIT.BUILD.PCTB - [LAMBDA (TEXT TEXTOBJ START END DEFAULTLOOKS DEFAULTPARALOOKS CLEARGET?) - (* ; "Edited 19-Apr-93 13:46 by jds") - (* ; - "START = 1st char of file to read from, if specified") - (* ; - "END = use this as eofptr of file. For use in reading files within files.") - (PROG (SEL LINES PCTB PC OLDPC PCCOUNT TYPECODE PCLEN CHLOOKSSEEN NEWPC PARALOOKSSEEN - PIECEINFOCH# CACHE CACHE? TTEXTOBJ USER.CMFILE TSTREAM USERFILEFORMAT USERTEMP - EXISTINGCHARLOOKS EXLOOK EXISTINGFMTSPECS (*READTABLE* *TEDIT-FILE-READTABLE*) - (*PRINT-BASE* 10) - (CURFILECH# (OR START 0)) - (CURCH# 1) - (TEXTSTREAM (AND TEXTOBJ (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ))) - LOOKSHASH PARAHASH) - [SETQ DEFAULTPARALOOKS (OR DEFAULTPARALOOKS (COND - (TEXTOBJ (fetch (TEXTOBJ FMTSPEC) - of TEXTOBJ)) - (T (create FMTSPEC using - TEDIT.DEFAULT.FMTSPEC - ] - (* ; - "Set the default paragraph formatting for filling in piece PPARALOOKS fields") - (COND - (TEXTOBJ (* ; - "If there's a TEXTOBJ behind this, set its TXTFILE field to point to the right place.") - (replace (TEXTOBJ TXTFILE) of TEXTOBJ with TEXT))) - (SETQ DEFAULTLOOKS (OR DEFAULTLOOKS (CHARLOOKS.FROM.FONT DEFAULTFONT))) - (* ; - "Set the default CHARLOOKS, for filling in pieces' PLOOKS fields") - (SETQ TEXT (\CREATEPIECEORSTREAM TEXT DEFAULTLOOKS DEFAULTPARALOOKS START END)) - (* ; - "Grab the file, or a single piece (if the text is a string, or such simple cases)") - (AND TEXTOBJ (replace (TEXTOBJ TXTPAGEFRAMES) of TEXTOBJ with NIL)) - (* ; - "Start by assuming no page formatting") - (COND - ((STREAMP TEXT) (* ; - "OK, it wasn't a string, so check for cases where we have to cache the file locally.") - (AND TEXTOBJ (replace (TEXTOBJ TXTFILE) of TEXTOBJ with TEXT)) - (COND - ((OR [AND TEXTOBJ (SETQ CACHE? (TEXTPROP TEXTOBJ 'CACHE] - (NOT (RANDACCESSP TEXT))) (* ; - "If the file device isn't rancom access, cache the file locally.") - (* ; - "Also do this if he asks for a local cache.") - (SETQ CACHE (OPENSTREAM '{NODIRCORE} 'BOTH 'NEW)) - (* ; "The cache file") - (COND - ((OR START END) - (COPYBYTES TEXT CACHE (OR START 0) - (OR END -1))) - (T (COPYBYTES TEXT CACHE))) (* ; "Copy the text there") - (SETQ CACHE? T) (* ; "Remember that we cached it!") - - (* ;; "COPYBYTES can only have start/end args of NIL if the file is not random access. So it's impossible to grab out of the middle of a file on an NS server. Sorry.") - - (COND - (CACHE? - - (* ;; "for the folx who don't trust the connections, since all their pcs will point to core, we can close the txtfile connection") - - (CLOSEF TEXT))) - (replace (STREAM EOLCONVENTION) of CACHE with (fetch (STREAM - EOLCONVENTION - ) - of TEXT)) - (* ; - "Remember the EOL convention from the original file, so that we can do a copybytes if need by.") - (SETQ TEXT CACHE) (* ; - "And pretend the cache IS the real file from here on") - (SETQ START (SETQ END NIL)) - - (* ;; "Since we only copied the relevant part of the file into the cache, we don't need to remember the limits of interest.") - - )) - (SETQ PCCOUNT (\TEDIT.FORMATTEDP1 TEXT END)) - (COND - ((AND (NOT PCCOUNT) - (NEQ (fetch (STREAM EOLCONVENTION) of TEXT) - CR.EOLC)) - - (* ;; "This is an UNFORMATTED file, and it has a foreign EOL convention. Convert it, and save the converted copy locally.") - - (SETQ CACHE (OPENSTREAM '{NODIRCORE} 'BOTH 'NEW)) - (* ; "Build a cache file") - (COND - ((OR START END) - (COPYCHARS TEXT CACHE (OR START 0) - (OR END -1)) - - (* ;; "mcf: just like before, we have all the relevant portion") - - (SETQ START (SETQ END NIL))) - (T (COPYCHARS TEXT CACHE))) (* ; - "Copy the text, converting from the foreign EOL convention into CR as end of line.") - (SETQ TEXT CACHE) - - (* ;; "And think of THIS as the cache. At this point, we may have cached twice in succession--no need to clip off START and END.") - - (SETQ CACHE? T) (* ; - "Remember that we cached the file!") - )) (* ; - "Check to see if this is a formatted file, and find out how may pieces we should allocate for it.") - )) - (AND TEXTOBJ (TEXTPROP TEXTOBJ 'CACHE CACHE?)) (* ; - "REMEMBER THAT THIS TEXT WAS CACHED, SO THAT LATER PUTS DON'T INVALIDATE THE CACHE.") - [COND - [(type? PIECE TEXT) (* ; - "If this isn't a text stream, build a piece table with the one piece in it.") - (COND - ((EQ (fetch (PIECE PLEN) of TEXT) - 0) (* ; - "I hate piece whose length is zero.") - (SETQ PCTB (\MAKEPCTB (SETQ TEXT NIL))) (* INSERT-BRT (CREATEPCNODE 1 - (QUOTE LASTPIECE)) PCTB) - ) - (T (SETQ PCTB (\MAKEPCTB TEXT)) (* INSERT-BRT (CREATEPCNODE - (ADD1 (fetch (PIECE PLEN) of TEXT)) - (QUOTE LASTPIECE)) PCTB) - (replace (PIECE PLOOKS) of TEXT with (\TEDIT.UNIQUIFY.CHARLOOKS - (fetch (PIECE PLOOKS) - of TEXT) - TEXTOBJ)) - (* ; - "And note the CHARLOOKS and PARALOOKS of this text--as well as filling them in.") - (replace (PIECE PPARALOOKS) of TEXT with (\TEDIT.UNIQUIFY.PARALOOKS - (fetch (PIECE - PPARALOOKS - ) - of TEXT) - TEXTOBJ] - (CLEARGET? - - (* ;; "If the user wants an uninterpreted stream onto the file , build a piece table with the one piece in it.") - - (SETQ TEXT (create PIECE - PFILE _ TEXT - PFPOS _ (COND - (START START) - (T 0)) - PLEN _ (IDIFFERENCE (OR END (GETEOFPTR TEXT)) - (COND - (START START) - (T 0))) - PREVPIECE _ NIL - PLOOKS _ DEFAULTLOOKS - PPARALAST _ NIL - PPARALOOKS _ DEFAULTPARALOOKS)) - (* ; - "A single piece to describe the whole file") - (SETQ PCTB (\MAKEPCTB TEXT)) - (replace (PIECE PLOOKS) of TEXT with (\TEDIT.UNIQUIFY.CHARLOOKS - (fetch (PIECE PLOOKS) - of TEXT) - TEXTOBJ)) - (* ; - "And note the CHARLOOKS and PARALOOKS for later saving. Keep those caches consistent.") - (replace (PIECE PPARALOOKS) of TEXT with (\TEDIT.UNIQUIFY.PARALOOKS - (fetch (PIECE - PPARALOOKS - ) - of TEXT) - TEXTOBJ)) - (* INSERT-BRT (CREATEPCNODE - (ADD1 (fetch (PIECE PLEN) of TEXT)) - (QUOTE LASTPIECE)) PCTB) - ) - [(NOT PCCOUNT) (* ; "This is an unformatted file") - (COND - [(SETQ USERFILEFORMAT (for FILETYPE in TEDIT.INPUT.FORMATS - when (SETQ USERTEMP (APPLY* (CAR FILETYPE) - TEXT)) - do (RETURN FILETYPE))) - (* ; - "The input file is in a user-sensible format, which he is willing to convert for TEdit's use.") - (* ; "See if there are Bravo headers") - (SETQ PCTB (\TEDIT.CONVERT.FOREIGN.FORMAT (CADR USERFILEFORMAT) - TEXT USERTEMP TEXTOBJ DEFAULTLOOKS DEFAULTPARALOOKS)) - (* ; - "Convert the foreign format file, and grab its PCTB") - (bind (PC _ (\GETBASEPTR (\FIRSTNODE PCTB) - 0)) while [AND PC (NOT (EQ PC 'LASTPIECE] - do (* ; - "Run thru the converted pieces, noting their CHARLOOKS and PARALOOKS for the get/put caches.") - (replace (PIECE PLOOKS) of PC with (\TEDIT.UNIQUIFY.CHARLOOKS - (fetch (PIECE PLOOKS) - of PC) - TEXTOBJ)) - (replace (PIECE PPARALOOKS) of PC - with (\TEDIT.UNIQUIFY.PARALOOKS (fetch (PIECE PPARALOOKS) - of PC) - TEXTOBJ)) - (SETQ PC (fetch (PIECE NEXTPIECE) of PC] - (T (* ; - "Nope--it's straight unformatted text") - [SETQ PCTB (\MAKEPCTB (create PIECE - PFILE _ TEXT - PFPOS _ CURFILECH# - PLEN _ (IDIFFERENCE (OR END (GETEOFPTR TEXT)) - CURFILECH#) - PREVPIECE _ NIL - PLOOKS _ (\TEDIT.UNIQUIFY.CHARLOOKS DEFAULTLOOKS - TEXTOBJ) - PPARALAST _ NIL - PPARALOOKS _ (\TEDIT.UNIQUIFY.PARALOOKS - DEFAULTPARALOOKS TEXTOBJ] - (* ; - "So create a single piece to describe its contents") - (* INSERT-BRT (CREATEPCNODE - (ADD1 (IDIFFERENCE - (OR END (GETEOFPTR TEXT)) CURFILECH#)) - (QUOTE LASTPIECE)) PCTB) - (* ; "Insert LASTPIECE here") - ] - [(LISTP PCCOUNT) (* ; - "This is an obsolete version of the TEdit file format.") - (SELECTQ (CAR PCCOUNT) - (0 (* ; "VERSION 0") - (SETQ PCTB (TEDIT.BUILD.PCTB0 TEXT TEXTOBJ (CDR PCCOUNT) - START END))) - (1 (* ; - "Version 1; obsoleted at INTERMEZZO release 2/85") - (SETQ PCTB (TEDIT.BUILD.PCTB1 TEXT TEXTOBJ (CDR PCCOUNT) - START END))) - (2 (* ; "Version 2; obsoleted 5/22/85") - (SETQ PCTB (TEDIT.BUILD.PCTB2 TEXT TEXTOBJ (CDR PCCOUNT) - START END))) - (SHOULDNT "File format version incompatible with this version of TEdit.")) - (bind (PC _ (\GETBASEPTR (\FIRSTNODE PCTB) - 0)) while [AND PC (NOT (EQ PC 'LASTPIECE] - do (* ; - "Run thru the converted pieces, noting CHARLOOKS and PARALOOKS for the caches.") - (replace (PIECE PLOOKS) of PC with (\TEDIT.UNIQUIFY.CHARLOOKS - (fetch (PIECE PLOOKS) - of PC) - TEXTOBJ)) - (replace (PIECE PPARALOOKS) of PC with (\TEDIT.UNIQUIFY.PARALOOKS - (fetch (PIECE - PPARALOOKS - ) - of PC) - TEXTOBJ)) - (SETQ PC (fetch (PIECE NEXTPIECE) of PC] - (T (* ; - "This IS a TEdit-format file, so read in all the parts.") - (SETQ PCTB (\MAKEPCTB NIL PCCOUNT)) - (replace (TEXTOBJ PCTB) of TEXTOBJ with PCTB) - (SETFILEPTR TEXT (IDIFFERENCE (OR END (GETEOFPTR TEXT)) - 8)) - (SETQ PIECEINFOCH# (\DWIN TEXT)) - (SETFILEPTR TEXT PIECEINFOCH#) - (bind (OLDPC _ NIL) - (OLDPARALOOKS _ DEFAULTPARALOOKS) for I from 1 to PCCOUNT - as PCN from 1 - do (SETQ PC NIL) (* ; - "This loop may not really read a piece, so we have to distinguish that case.") - (SETQ PCLEN (\DWIN TEXT)) - (SETQ TYPECODE (\SMALLPIN TEXT)) (* ; "What kind of piece is it?") - [SELECTC TYPECODE - (\PieceDescriptorPAGEFRAME (* ; - "This is page layout info for the file") - (AND TEXTOBJ (replace (TEXTOBJ TXTPAGEFRAMES) of TEXTOBJ - with (TEDIT.GET.PAGEFRAMES TEXT))) - (add PCN -1) - - (* ;; "(|add| pcn (iminus |\\EltsPerPiece|))") - (* ; - "This didn't create a piece -- don't count it in the PCTB placement.") - ) - (\PieceDescriptorCHARLOOKSLIST (* ; - "This is the list of CHARLOOKSs used in this document.") - (replace (TEXTOBJ TXTCHARLOOKSLIST) of TEXTOBJ - with (\TEDIT.GET.CHARLOOKS.LIST TEXT TEXTOBJ)) - (* ; - "Read the list of looks used in this document.") - [SETQ LOOKSHASH (ARRAY (FLENGTH (fetch (TEXTOBJ - TXTCHARLOOKSLIST) - of TEXTOBJ] - (* ; - "Build an array of the looks, so the reader can index them.") - (for I from 1 as LOOKS in (fetch (TEXTOBJ - - TXTCHARLOOKSLIST - ) - of TEXTOBJ) - do (SETA LOOKSHASH I LOOKS)) - (add PCN -1) - - (* ;; "(|add| pcn (iminus |\\EltsPerPiece|))") - (* ; - "This didn't create a piece -- don't count it in the PCTB placement.") - (add I -1)) - (\PieceDescriptorPARALOOKSLIST (* ; - "This is the list of PARALOOKSs used in this document.") - (replace (TEXTOBJ TXTPARALOOKSLIST) of TEXTOBJ - with (\TEDIT.GET.PARALOOKS.LIST TEXT TEXTOBJ)) - (* ; - "Read the list of looks used in this document.") - [SETQ PARAHASH (ARRAY (FLENGTH (fetch (TEXTOBJ TXTPARALOOKSLIST - ) of TEXTOBJ] - (* ; - "Build an array of the looks, so the reader can index them.") - (for I from 1 as LOOKS in (fetch (TEXTOBJ - - TXTPARALOOKSLIST - ) - of TEXTOBJ) - do (SETA PARAHASH I LOOKS)) - (add PCN -1) - - (* ;; "(|add| pcn (iminus |\\EltsPerPiece|))") - (* ; - "This didn't create a piece -- don't count it in the PCTB placement.") - (add I -1)) - (\PieceDescriptorPARA (* ; - "Reading a new set of paragraph looks.") - (AND OLDPC (replace (PIECE PPARALAST) of OLDPC with - T)) - (* ; - "Mark the end of the preceding paragraph.") - (SETQ OLDPARALOOKS (\TEDIT.GET.PARALOOKS TEXT PARAHASH)) - (* ; - "Get the new set of looks, for use by later pieces.") - (AND TEXTOBJ (replace (TEXTOBJ FORMATTEDP) of TEXTOBJ - with T)) - (* ; - "Mark the document as containing paragraph formatting info") - (add PCN -1) - - (* ;; "(|add| pcn (iminus |\\EltsPerPiece|))") - (* ; - "This didn't create a piece -- don't count it in the PCTB placement.") - ) - (\PieceDescriptorLOOKS (* ; - "New character looks. Build a piece to describe those characters.") - (SETQ PC - (create PIECE - PFILE _ TEXT - PFPOS _ CURFILECH# - PLEN _ PCLEN - PREVPIECE _ OLDPC - PPARALOOKS _ OLDPARALOOKS)) - (* ; "Build the new piece") - (\TEDIT.GET.CHARLOOKS PC TEXT LOOKSHASH OLDPC) - (* ; - "Read the character looks for this guy.") - (COND - (OLDPC (* ; - "If there's a prior piece, hook this one on the chain.") - (replace (PIECE NEXTPIECE) of OLDPC with - PC))) - (add CURFILECH# PCLEN) (* ; - "And note the passing of characters.") - ) - (\PieceDescriptorOBJECT (* ; - "It describes an object. Read that, and perhaps some description of the charlooks to go with it.") - (SETQ PC - (create PIECE - PFILE _ TEXT - PFPOS _ CURFILECH# - PLEN _ PCLEN - PREVPIECE _ OLDPC - PPARALOOKS _ OLDPARALOOKS)) - (COND - (OLDPC (* ; - "If there's a prior piece, hook this one on the chain.") - (replace (PIECE NEXTPIECE) of OLDPC with - PC))) - (TEDIT.GET.OBJECT TEXTSTREAM PC TEXT CURFILECH#) - (add CURFILECH# (fetch (PIECE PLEN) of PC)) - [COND - ((NOT (ZEROP (\BIN TEXT))) - (* ; - "There are new character looks for this object. Read them in.") - (replace (PIECE PLOOKS) of PC with ( - \TEDIT.GET.SINGLE.CHARLOOKS - TEXT))) - (T (* ; - "No new looks; steal them from the prior piece.") - (replace (PIECE PLOOKS) of PC - with (OR (AND OLDPC (fetch (PIECE PLOOKS) - of OLDPC)) - DEFAULTLOOKS] - (replace (PIECE PLEN) of PC with 1) - (* ; - "OBJECTs are officially one character long.") - ) - (PROGN (TEDIT.PROMPTPRINT TEXTOBJ "WARNING: Unknown-type piece skipped." - T) - (SETFILEPTR TEXT (IPLUS (GETFILEPTR TEXT) - (\SMALLPIN TEXT] - (COND - (PC (\INSERTPIECE PC 'LASTPIECE TEXTOBJ) - (* ; - "If we created a piece, save it in the table.") - (add CURCH# (fetch (PIECE PLEN) of PC)) - (SETQ OLDPC PC))) finally - - (* ;; "(\\editseta pctb pcn curch#)") - - (* ;; - " (\\editseta pctb (add1 pcn) 'lastpiece)") - - (* ;; - "(\\editseta pctb |\\PCTBLastPieceOffset| (add1 pcn)) ") - - (* ;; - "(\\editseta pctb |\\PCTBFreePieces| 0)") - (* INSERT-BRT (CREATEPCNODE CURCH# - (QUOTE LASTPIECE)) PCTB) - ] - (AND (fetch (TEXTOBJ DEFAULTCHARLOOKS) of TEXTOBJ) - (\TEDIT.UNIQUIFY.CHARLOOKS (fetch (TEXTOBJ DEFAULTCHARLOOKS) of TEXTOBJ) - TEXTOBJ)) (* ; - "And make sure that the default and caret looks are reflected in that list.") - (AND (fetch (TEXTOBJ CARETLOOKS) of TEXTOBJ) - (\TEDIT.UNIQUIFY.CHARLOOKS (fetch (TEXTOBJ CARETLOOKS) of TEXTOBJ) - TEXTOBJ)) - (AND DEFAULTLOOKS (\TEDIT.UNIQUIFY.CHARLOOKS DEFAULTLOOKS TEXTOBJ)) - (* ; - "And the default looks we used in this function...") - (\TEDIT.UNIQUIFY.PARALOOKS (fetch (TEXTOBJ FMTSPEC) of TEXTOBJ) - TEXTOBJ) (* ; - "And make sure the default paralooks are reflected in that list.") - [AND TEXT (bind (CHARLOOKSLIST _ (fetch (TEXTOBJ TXTCHARLOOKSLIST) of TEXTOBJ)) - (PARALOOKSLIST _ (fetch (TEXTOBJ TXTPARALOOKSLIST) of TEXTOBJ)) - for (PC _ (\GETBASEPTR (\FIRSTNODE PCTB) - 0)) by (fetch (PIECE NEXTPIECE) of PC) - while [AND PC (NOT (EQ PC 'LASTPIECE] - do (* ; - "Look at every piece, and assure that its CHARLOOKS and PARALOOKS are in the cache.") - [COND - ((FMEMB (fetch (PIECE PLOOKS) of PC) - CHARLOOKSLIST) (* ; - "This piece's CHARLOOKS are known in the cache already. Don't bother doing anything else.") - ) - (T (* ; - "Nope; add these looks to the cache") - (replace (PIECE PLOOKS) of PC - with (\TEDIT.UNIQUIFY.CHARLOOKS (fetch (PIECE PLOOKS) - of PC) - TEXTOBJ] - (COND - ((FMEMB (fetch (PIECE PPARALOOKS) of PC) - PARALOOKSLIST) (* ; - "This piece's PARALOOKS are known in the cache already. Don't bother doing anything else.") - ) - (T (* ; - "Nope; add these looks to the cache") - (replace (PIECE PPARALOOKS) of PC - with (\TEDIT.UNIQUIFY.PARALOOKS (fetch (PIECE - PPARALOOKS - ) - of PC) - TEXTOBJ] - (RETURN PCTB]) - -(\TEDIT.CONVERT.FOREIGN.FORMAT - [LAMBDA (CONVERSIONFN FILE PREDICATERESULT TEXTOBJ DEFAULTLOOKS DEFAULTPARALOOKS) - (* ; "Edited 12-Jun-90 18:16 by mitani") - - (* Perform the conversion from a foreign file format into TEdit-internal form - as an open TextStream.) - - (PROG (TSTREAM TTEXTOBJ SEL WORKINGSTREAM) (* See if there are Bravo headers) - (SETQ WORKINGSTREAM (OPENTEXTSTREAM "")) - (RESETLST - (RESETSAVE (\TEDIT.SET.WINDOW (CONS (TEXTOBJ WORKINGSTREAM) - NIL))) - (SETQ TSTREAM (APPLY* CONVERSIONFN FILE PREDICATERESULT WORKINGSTREAM))) - (COND - (TEXTOBJ - - (* If we're filling in an existing TEXTOBJ, there are fields that need to be - copied.) - - [OR (fetch (TEXTOBJ TXTPAGEFRAMES) of TEXTOBJ) - (replace (TEXTOBJ TXTPAGEFRAMES) of TEXTOBJ - with (fetch (TEXTOBJ TXTPAGEFRAMES) of (TEXTOBJ TSTREAM] - (* Such as the page formatting, - which the converter may well set.) - )) - (RETURN (fetch (TEXTOBJ PCTB) of (TEXTOBJ TSTREAM]) - -(TEDIT.FORMATTEDFILEP - [LAMBDA (STREAM) (* ; "Edited 19-Apr-93 11:57 by jds") - (* ; - "Test to see if this stream's text would need a TEdit-format file (T) or is just plain text (NIL)") - (PROG ((TEXTOBJ (TEXTOBJ STREAM)) - (FONTFILE 0) - OLDPARALOOKS PC OLDLOOKS PREVPC TENTATIVE) - (SETQ OLDPARALOOKS (fetch (TEXTOBJ FMTSPEC) of TEXTOBJ)) - (SETQ TENTATIVE (TEXTPROP TEXTOBJ 'TEDIT.TENTATIVE)) - (* ; "If edits are to be shown") - (SETQ PC (\GETBASEPTR (\FIRSTNODE (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - 0)) (* ; "First piece in the document") - (COND - ((ATOM PC) (* ; "Empty document") - (RETURN NIL))) - (SETQ OLDLOOKS (OR (fetch (TEXTOBJ DEFAULTCHARLOOKS) of TEXTOBJ) - TEDIT.DEFAULT.CHARLOOKS)) - (while PC do [COND - ((fetch (PIECE POBJ) of PC) - (* ; - "OBJECTS require the special format") - (SETQ FONTFILE 4)) - ([AND (OR (NOT PREVPC) - (fetch (PIECE PPARALAST) of PREVPC)) - (NOT (EQFMTSPEC (fetch (PIECE PPARALOOKS) of PC) - (fetch (TEXTOBJ FMTSPEC) of TEXTOBJ] - (* ; "We just hit a paragraph break.") - (SETQ FONTFILE (IMAX FONTFILE 3))) - ([OR (NOT (EQCLOOKS OLDLOOKS (fetch (PIECE PLOOKS) of - PC))) - (AND TENTATIVE (OR (AND PREVPC (NEQ (fetch (PIECE PNEW) - of PREVPC) - (fetch (PIECE PNEW) - of PC))) - (AND (NOT PREVPC) - (fetch (PIECE PNEW) of PC)) - (AND PREVPC (NEQ (fetch (PIECE PFATP) - of PREVPC) - (fetch (PIECE PFATP) - of PC] - (* ; "Change in font, size, etc.") - (SETQ FONTFILE (IMAX FONTFILE 2))) - ((fetch (PIECE PFATP) of PC) - (* ; "NS Chars in the piece.") - (SETQ FONTFILE (IMAX FONTFILE 1] - (SETQ PREVPC PC) - (SETQ PC (fetch (PIECE NEXTPIECE) of PC))) - (RETURN (SELECTQ FONTFILE - (0 NIL) - (1 'NSCHARS) - (2 'CHARLOOKS) - (3 'PARALOOKS) - (4 'IMAGEOBJ) - NIL]) - -(TEDIT.GET - [LAMBDA (TEXTOBJ FILE UNFORMATTED?) (* ; "Edited 19-Apr-93 13:12 by jds") - - (* ;; "Get a new file (overwriting the one being edited.)") - - (PROG ((TEXTOBJ (TEXTOBJ TEXTOBJ)) - OFILE OCURSOR LINES USER.CMFILE RESP TITLE FILENAME MENUSTREAM (GETFN (TEXTPROP - TEXTOBJ - 'GETFN)) - (SEL (fetch (TEXTOBJ SEL) of TEXTOBJ)) - (PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - (TEDIT.GET.FINISHEDFORMS NIL)) - (COND - ([AND (fetch (TEXTOBJ \DIRTY) of TEXTOBJ) - (PROGN (AND (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ) - (FRESHLINE (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ))) - (NOT (MOUSECONFIRM "Not saved yet; LEFT go Get anyway." T - (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ] - - (* ;; "Only do the GET if he knows he'll zorch himself.") - - (RETURN))) - [SETQ OFILE (OR FILE (\TEDIT.MAKEFILENAME (TEDIT.GETINPUT TEXTOBJ "File to GET: " - (OR (TEXTPROP TEXTOBJ 'LASTGETFILENAME) - (\TEXTSTREAM.FILENAME TEXTOBJ] - (TEXTPROP TEXTOBJ 'LASTGETFILENAME OFILE) - (COND - [(AND OFILE (OR (OPENP FILE) - (INFILEP OFILE))) (* ; - "Only if there's a file to load and the file exists.") - (COND - ((AND GETFN (EQ (APPLY* GETFN (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ) - (FULLNAME OFILE) - 'BEFORE) - 'DON'T)) (* ; - "He doesn't want this document put. Bail out.") - (RETURN))) - (TEXTPROP TEXTOBJ 'LASTGETFILENAME NIL) - (RESETLST - (RESETSAVE (TTYDISPLAYSTREAM (OR (AND (NEQ (fetch (TEXTOBJ PROMPTWINDOW) - of TEXTOBJ) - 'DON'T) - (fetch (TEXTOBJ PROMPTWINDOW) - of TEXTOBJ)) - PROMPTWINDOW))) - (RESETSAVE (CURSOR WAITINGCURSOR)) - (\SHOWSEL (fetch (TEXTOBJ SEL) of TEXTOBJ) - NIL NIL) - (\TEXTCLOSEF (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ)) - (* ; "CLOSE the old files") - [OR (AND (STREAMP FILE) - (OPENP FILE)) - (SETQ OFILE (OPENSTREAM OFILE 'INPUT] (* ; "And open the new one.") - (SETQ PCTB (replace (TEXTOBJ PCTB) of TEXTOBJ - with (TEDIT.BUILD.PCTB OFILE TEXTOBJ NIL NIL - (fetch (TEXTOBJ DEFAULTCHARLOOKS) of TEXTOBJ) - (fetch (TEXTOBJ FMTSPEC) of TEXTOBJ) - UNFORMATTED?))) - (for FORM in TEDIT.GET.FINISHEDFORMS do (EVAL FORM)) - (* ; - "Do any necessary cleanup for outside packages") - (SETQ LINES (fetch (TEXTOBJ LINES) of TEXTOBJ)) - (replace (TEXTOBJ \DIRTY) of TEXTOBJ with NIL) - (for FIRSTLINE inside LINES do (replace (LINEDESCRIPTOR NEXTLINE) - of FIRSTLINE with NIL)) - (replace (TEXTOBJ \INSERTPCVALID) of TEXTOBJ with NIL) - - (* ;; "The old cached piece is no longer valid--keep people from stepping on it, to prevent lost type-in and smashing other docuemnts to which it has been moved...") - - (* ;; "(replace TEXTLEN of TEXTOBJ with (SUB1 (\EDITELT PCTB (SUB1 (\EDITELT PCTB \PCTBLastPieceOffset)))))") - - (replace (TEXTOBJ TEXTLEN) of TEXTOBJ with (fetch (BTREENODE TOTLEN - ) - of PCTB)) - (replace (SELECTION CH#) of SEL with (replace (SELECTION CHLIM) - of SEL with 1)) - (replace (SELECTION DCH) of SEL with 0) - (replace (SELECTION POINT) of SEL with 'LEFT) - (replace (SELECTION SET) of SEL with T) - (replace (SELECTION SET) of (fetch (TEXTOBJ SCRATCHSEL) of TEXTOBJ) - with NIL) - (replace (SELECTION SET) of (fetch (TEXTOBJ SHIFTEDSEL) of TEXTOBJ) - with NIL) - (replace (SELECTION SET) of (fetch (TEXTOBJ MOVESEL) of TEXTOBJ) - with NIL) - (replace (SELECTION SET) of TEDIT.SELECTION with NIL) - (replace (SELECTION SET) of TEDIT.SHIFTEDSELECTION with NIL) - (replace (TEXTOBJ CARETLOOKS) of TEXTOBJ with ( - \TEDIT.GET.INSERT.CHARLOOKS - TEXTOBJ SEL)) - (for WINDOW inside (fetch (TEXTOBJ \WINDOW) of TEXTOBJ) - as LINE inside LINES do (* ; - "Fill the edit window (s) with the new text") - (\FILLWINDOW (fetch (LINEDESCRIPTOR - YBOT) of LINE) - LINE TEXTOBJ NIL WINDOW)) - (\FIXSEL SEL TEXTOBJ) - (\SHOWSEL SEL NIL T) - (SETQ TITLE (TEXTSTREAM.TITLE TEXTOBJ)) (* ; "find and set the title") - (\TEDIT.WINDOW.TITLE TEXTOBJ (\TEDIT.ORIGINAL.WINDOW.TITLE TITLE NIL)) - (SETQ MENUSTREAM (TEDITMENU.STREAM TEXTOBJ)) - (COND - ((AND MENUSTREAM (type? LITATOM TITLE)) - (* ; - "if we have a filename then put it in the GET and PUT fields of the menu") - (SETQ FILENAME (PACKFILENAME 'VERSION NIL 'BODY TITLE)) - (MBUTTON.SET.FIELD MENUSTREAM 'Get FILENAME) - (MBUTTON.SET.FIELD MENUSTREAM 'Put FILENAME))) - (\TEDIT.SET.WINDOW.EXTENT TEXTOBJ (\TEDIT.PRIMARYW TEXTOBJ)) - (\TEDIT.HISTORYADD TEXTOBJ (create TEDITHISTORYEVENT - THACTION _ 'Get))) - (AND GETFN (APPLY* GETFN (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ) - (FULLNAME (fetch (TEXTOBJ TXTFILE) of TEXTOBJ)) - 'AFTER] - (OFILE (TEDIT.PROMPTPRINT TEXTOBJ "[File not found.]") - (TEXTPROP TEXTOBJ 'LASTGETFILENAME OFILE)(* ; - "Remember the file name he tried for, so we offer it next time.") - ) - (T (TEDIT.PROMPTPRINT TEXTOBJ "[Get aborted.]" T]) - -(TEDIT.PARSE.PAGEFRAMES1 - [LAMBDA (PAGELIST PARENT) (* ; "Edited 2-Jan-87 12:21 by jds") - (* Take an external pageframe and - internalize it.) - (PROG (FRAMETYPE PAGEFRAME) - (COND - ((type? PAGEREGION PAGELIST) - (RETURN PAGELIST)) - ((NEQ 'LIST (SETQ FRAMETYPE (pop PAGELIST))) - [SETQ PAGEFRAME (create PAGEREGION - REGIONFILLMETHOD _ FRAMETYPE - REGIONTYPE _ (pop PAGELIST) - REGIONLOCALINFO _ (pop PAGELIST) - REGIONSPEC _ (for VAL - in (OR (pop PAGELIST) - (LIST 0 0 0 0)) - collect (\TEDIT.SCALE VAL - (CONSTANT (FQUOTIENT 1 35.27778] - (replace REGIONSUBBOXES of PAGEFRAME with (for ALIST in (pop PAGELIST) - collect (TEDIT.PARSE.PAGEFRAMES1 ALIST - PAGEFRAME))) - (RETURN PAGEFRAME)) - (T (RETURN (for FRAMESPEC in (CAR PAGELIST) collect (TEDIT.PARSE.PAGEFRAMES1 FRAMESPEC - NIL]) - -(\ARBIN - [LAMBDA (STREAM) (* jds "13-Nov-86 20:21") - (* ; - "Read an arbitrary object from a file, parse it, and return it.") - - (PROG ((LEN (\SMALLPIN STREAM)) - USERSTR) - (COND - ((NOT (ZEROP LEN)) - (SETQ USERSTR (OPENSTRINGSTREAM (\STRINGIN STREAM LEN) - 'INPUT)) - (RETURN (PROG1 (READ USERSTR *TEDIT-FILE-READTABLE*) - (CLOSEF? USERSTR]) - -(\ATMIN - [LAMBDA (STREAM) (* jds " 3-Apr-84 10:41") - (PROG ((LEN (\SMALLPIN STREAM))) - (RETURN (COND - ((ZEROP LEN) - NIL) - (T (PACK (for I from 1 to LEN collect (CHARACTER (\BIN STREAM]) - -(\DWIN - [LAMBDA (FILE) (* jds " 3-JAN-83 16:08") - (IPLUS (LLSH (\BIN FILE) - 24) - (LLSH (\BIN FILE) - 16) - (LLSH (\BIN FILE) - 8) - (\BIN FILE]) - -(\STRINGIN - [LAMBDA (STREAM SETLEN) (* ; "Edited 20-Apr-88 19:54 by jds") - (* Read a string in length-contents form%: One word for the length, and one - byte per character contained. However, the length may be specified by the - caller instead of being read from the file.) - (PROG ((LEN (OR SETLEN (\SMALLPIN STREAM))) - STR) - (SETQ STR (ALLOCSTRING LEN)) - [OR (ZEROP LEN) - (for I from 1 to LEN do (RPLCHARCODE STR I (READCCODE STREAM] - (RETURN STR]) - -(\TEDIT.FORMATTEDP1 - [LAMBDA (FILE LEN) (* ; "Edited 12-Feb-88 11:43 by jds") - (* ; - "Checks for a version-1 formatted file") - - (* ;; "Returns NIL if it isn't a formatted file, or the # of pieces needed if it is; leaves file at start of text or of piece descriptions, resp.") - - (SETQ LEN (OR LEN (GETEOFPTR FILE))) - (PROG (DESCPTR NPIECES PASSWORD) - (COND - ((ILEQ LEN 8) (* ; "Too short to be formatted.") - - (RETURN NIL)) - (T (SETFILEPTR FILE (IDIFFERENCE LEN 8)) (* ; - "Move to start of FILEPTR to descriptions") - - (SETQ DESCPTR (\DWIN FILE)) (* ; - "Read the file pos of the descriptions") - - (SETQ NPIECES (\SMALLPIN FILE)) - (SETQ PASSWORD (\SMALLPIN FILE)) - (COND - ((IEQP PASSWORD 31418) (* ; - "Version 3 TEdit format; instituted on 5/22/85") - - (SETFILEPTR FILE DESCPTR) - (RETURN NPIECES)) - ((IEQP PASSWORD 31417) - - (* ;; "Version 2 format. Obsoleted 5/22/85 to permit revision of looks in the future without loss of compatibility") - - (SETFILEPTR FILE DESCPTR) - (RETURN (CONS 2 NPIECES))) - ((IEQP PASSWORD 31416) (* ; "VERSION 1 TEDIT FORMAT") - - (SETFILEPTR FILE DESCPTR) - (RETURN (CONS 1 NPIECES))) - ((IEQP PASSWORD 31415) (* ; "VERSION 0 TEDIT FORMAT") - - (SETFILEPTR FILE DESCPTR) - (RETURN (CONS 0 NPIECES))) - (T (* ; "NOT A FORMATTED FILE") - - (SETFILEPTR FILE 0) - (RETURN NIL]) - -(\TEDIT.SET.WINDOW - [LAMBDA (TOWIND) (* ; "Edited 12-Jun-90 18:16 by mitani") - (* USED IN RESETSAVES TO NULL OUT A - TEXTSTREAM'S WINDOW BRIEFLY.) - (PROG1 (CONS (CAR TOWIND) - (fetch (TEXTOBJ \WINDOW) of (CAR TOWIND))) - (replace (TEXTOBJ \WINDOW) of (CAR TOWIND) with (CDR TOWIND)))]) -) - - - -(* ;; "INCLUDEing a file") - -(DEFINEQ - -(TEDIT.INCLUDE - [LAMBDA (STREAM FILE START END SAFE) (* ; - "Edited 4-May-95 10:29 by sybalsky:mv:envos") - - (* ;; "Obtain a file name, and include that file's contents at the place where the caret is.") - - (* ;; "Returns T if the insertion happened, NIL if there was no place to put it.") - - (SETQ STREAM (TEXTOBJ STREAM)) - (PROG ((SEL (fetch (TEXTOBJ SEL) of STREAM)) - PCTB TEXTLEN NFILE NNFILE INSERTCH# INSPC LEN INSPC# PCLST NPC WASOPEN PCCOUNT NSTREAM - START-OF-PIECE) - (DECLARE (SPECVARS START-OF-PIECE)) - (COND - ((fetch (TEXTOBJ TXTREADONLY) of STREAM)(* ; "This is read-only.") - ) - ((fetch (SELECTION SET) of SEL) (* ; - "There is a place to do the include.") - [SETQ NFILE (OR FILE (\TEDIT.MAKEFILENAME (TEDIT.GETINPUT STREAM - "Name of the file to load: "] - (COND - ((NOT NFILE) (* ; - "If no file was given, don't bother INCLUDEing.") - (TEDIT.PROMPTPRINT STREAM "[Include aborted.]" T) - (RETURN)) - ((STREAMP NFILE)) - ((NOT (INFILEP NFILE)) (* ; - "Can't find the file. Put out a message.") - (TEDIT.PROMPTPRINT STREAM "[File not found.]") - (RETURN))) - (COND - ((NOT SAFE) - - (* ;; "If the caller sets SAFE, we don't need to do any of this copying, because he's guaranteeing that the files'll be there until we don't need 'em any more.") - - (SETQ NNFILE (OPENSTREAM '{NODIRCORE} 'OUTPUT 'NEW)) - (* ; "Create the holding file") - [SETQ NFILE (COND - ((OPENP NFILE) - (SETQ WASOPEN T) - NFILE) - (T (* ; - "Wasn't open -- need to open it for input...") - (OPENFILE NFILE 'INPUT] (* ; - "And copy the file-section into it.") - [COPYCHARS NFILE NNFILE (OR START 0) - (OR END (GETFILEINFO NFILE 'LENGTH] (* ; "Have to explicitly fill in 0 and EOFPTR, because if the file was open already, NILs would only copy from current fileptr to EOF.") - (OR WASOPEN (CLOSEF NFILE)) (* ; - "If the file didn't come to use open, close it.") - (CLOSEF NNFILE) - (SETQ NFILE NNFILE) - (SETQ START (SETQ END NIL)) (* ; "Then pretend nothing happened.") - )) - (TEDIT.DO.BLUEPENDINGDELETE SEL STREAM) (* ; "Delete any text, if need be") - (SETQ TEXTLEN (fetch (TEXTOBJ TEXTLEN) of STREAM)) - (* ; - "We need the POST-deletion text length for later, so this must come after the b-p-d.") - (\SHOWSEL SEL NIL NIL) (* ; - "Turn off SELs before we go any further") - [SETQ NFILE (TEXTOBJ (SETQ NSTREAM (OPENTEXTSTREAM (OPENSTREAM NFILE 'INPUT) - NIL NIL NIL (LIST 'FONT ( - \TEDIT.GET.INSERT.CHARLOOKS - STREAM SEL) - 'PARALOOKS - (fetch (TEXTOBJ FMTSPEC - ) - of STREAM] - - (* ;; "Get a textobj to describe the include source file (need NSTREAM so that if we have to convert it to formatted, we won't have lost the textstream--and thus smash the free list.)") - - (COND - ((AND (fetch (TEXTOBJ FORMATTEDP) of NFILE) - (NOT (fetch (TEXTOBJ FORMATTEDP) of STREAM))) - (* ; - "If the includED text is formatted but this file isn't, let's format it!") - (\TEDIT.CONVERT.TO.FORMATTED STREAM)) - ((AND (fetch (TEXTOBJ FORMATTEDP) of STREAM) - (NOT (fetch (TEXTOBJ FORMATTEDP) of NFILE))) - - (* ;; "The TARGET document is formatted, but the INCLUDEd text isn't. Better format it before completing the include.") - - (\TEDIT.CONVERT.TO.FORMATTED NFILE))) - (SETQ PCTB (fetch (TEXTOBJ PCTB) of STREAM)) - (* ; - "HERE, because the conversion to formatted will lengthen the pctb") - [SETQ INSERTCH# (COND - ((EQ (fetch (SELECTION POINT) of SEL) - 'LEFT) - (fetch (SELECTION CH#) of SEL)) - (T (fetch (SELECTION CHLIM) of SEL] - (* ; - "Find the place to make the insertion.") - (SETQ INSPC (\CHTOPC INSERTCH# PCTB T)) (* ; - "The piece to make the insertion in") - [COND - ((NEQ INSPC 'LASTPIECE) - (COND - ((IGREATERP INSERTCH# START-OF-PIECE) (* ; "Must split the piece.") - (SETQ INSPC (\SPLITPIECE INSPC INSERTCH# STREAM INSPC#)) - (SETQ PCTB (fetch (TEXTOBJ PCTB) of STREAM)) - (* ; - "Refresh the PCTB in case it grew.") - ] - (SETQ PCLST (fetch (TEXTOBJ PCTB) of NFILE)) - (* ; - "A temporary pctb, holding the pieces which describe the INCLUDEd text") - (SETQ LEN (fetch (BTREENODE TOTLEN) of PCLST)) - (\TEDIT.INSERT.PIECES STREAM INSERTCH# (SETQ PCLST (\GETBASEPTR (\FIRSTNODE PCLST) - 0)) - LEN INSPC INSPC# NIL) - [COND - ((AND (fetch (TEXTOBJ FORMATTEDP) of STREAM) - (NOT (fetch (TEXTOBJ FORMATTEDP) of NFILE))) - (* ; - "If the includED text is formatted but this file isn't, let's format it!") - (\TEDIT.CONVERT.TO.FORMATTED STREAM INSERTCH# (IPLUS INSERTCH# LEN] - (\TEDIT.HISTORYADD STREAM (create TEDITHISTORYEVENT - THACTION _ 'Include - THCH# _ INSERTCH# - THLEN _ LEN - THFIRSTPIECE _ PCLST)) - (* ; - "Remember that we did this, so it can be undone.") - (replace (TEXTOBJ TEXTLEN) of STREAM with (IPLUS TEXTLEN LEN)) - (* ; - "Inserting the pieces didn't fix up things like the length of the document, so do it now.") - (AND (fetch (TEXTOBJ \WINDOW) of STREAM) - (\FIXILINES STREAM SEL INSERTCH# LEN TEXTLEN)) - (* ; "Mark any changed lines dirty.") - (replace (SELECTION CHLIM) of SEL with (IPLUS (replace (SELECTION - CH#) - of SEL with - INSERTCH# - ) - LEN)) - (* ; - "Now fix up the selection to be the included text, point_left, character selection grain.") - (replace (SELECTION DCH) of SEL with LEN) - (replace (SELECTION DX) of SEL with 0) - (replace (SELECTION POINT) of SEL with 'RIGHT) - (* ; - "So that several things INCLUDED in sequence fall in sequence.") - (replace (SELECTION SELKIND) of SEL with 'CHAR) - (replace (SELECTION SELOBJ) of SEL with NIL) - (COND - ((fetch (TEXTOBJ \WINDOW) of STREAM)(* ; - "We're displaying; update the display and the selection's line references") - (TEDIT.UPDATE.SCREEN STREAM) - (\FIXSEL SEL STREAM) - (\SHOWSEL SEL NIL T))) - (replace (TEXTOBJ \DIRTY) of STREAM with T) - (* ; "Mark the document changed") - (\SETUPGETCH (IPLUS -1 INSERTCH# LEN (- (fetch (TEXTOBJ TEXTLEN) of STREAM) - (+ TEXTLEN LEN))) - STREAM) (* ; "Set the fileptr to the end of the insertion; the (- fetch ...) form accounts for any change due to NSCHAR translation that may occur duing the screen update.") - T) - (T (TEDIT.PROMPTPRINT STREAM "Please choose the place for the INCLUDE first." T]) - -(TEDIT.RAW.INCLUDE - [LAMBDA (STREAM INFILE START END) (* ; - "Edited 27-May-93 16:36 by sybalsky:mv:envos") - - (* ;; "takes a text stream and an OPEN stream to include. Note: Start and End are inclusive ptrs, unlike in copybytes and friends") - - (* ;; - "no interpretation (alternate file type e.g. Bravo) takes place. Simply include the characters") - - (* ;; "Default character and paragraph looks are applied") - - (LET* ((TEXTOBJ (TEXTOBJ STREAM)) - (START START) - (END END) - (SEL (fetch (TEXTOBJ SEL) of TEXTOBJ)) - [HOLDING.FILE (OR (fetch (TEXTOBJ TXTRAWINCLUDESTREAM) of TEXTOBJ) - (replace (TEXTOBJ TXTRAWINCLUDESTREAM) of TEXTOBJ - with (OPENSTREAM '{NODIRCORE} 'BOTH 'NEW] - PCTB TEXTLEN INSERTCH# INSPC LEN INSPC# PCLST NPC WASOPEN HOLDSTART HOLDLEN START-OF-PIECE - ) - (COND - ((NOT (fetch (SELECTION SET) of SEL)) - (SHOULDNT "\TEDIT.RAW.INCLUDE called with no selection set")) - ((fetch (TEXTOBJ TXTREADONLY) of TEXTOBJ) - (* ; "Not allowed to change it.") - ) - (T (* ; - "There is a place to do the include.") - (\SHOWSEL SEL NIL NIL) (* ; - "Turn any pre-existing selection off") - (COND - (END - (* ;; "This is the copy-part-of-a-file case, with file liable to be volatile. Copy it to core for protection") - - [SETQ INFILE (COND - ((OPENP INFILE) - (SETQ WASOPEN T) - INFILE) - (T (OPENSTREAM INFILE 'INPUT] - (* ; - "And copy the file-section into it.") - (SETFILEPTR HOLDING.FILE (SETQ HOLDSTART (GETEOFPTR HOLDING.FILE))) - (* ; - "Move to the end of the pre-existing part of the file.") - (COPYBYTES INFILE HOLDING.FILE START END) - (* ; - "must be copychars to respect eol conventions") - (SETQ HOLDLEN (IDIFFERENCE (OR END (GETEOFPTR INFILE)) - START)) - (COND - ((NOT WASOPEN) (* ; - "Close the input file if it wasn't open when we got here.") - (CLOSEF INFILE))) - (SETQ INFILE HOLDING.FILE) - (SETQ START (SETQ END NIL)) (* ; "Then pretend nothing happened.") - )) - (SETQ TEXTLEN (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ)) - (SETQ PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - (SETQ INSERTCH# (TEDIT.GETPOINT NIL SEL)) (* ; - "Find the place to make the insertion.") - (SETQ INSPC (OR (\CHTOPC INSERTCH# PCTB T) - (LASTPIECE PCTB))) (* ; - "The piece to make the insertion in") - [COND - ((NEQ INSPC 'LASTPIECE) - (COND - ((IGREATERP INSERTCH# START-OF-PIECE) (* ; "Must split the piece.") - (SETQ INSPC (\SPLITPIECE INSPC (- INSERTCH# START-OF-PIECE) - TEXTOBJ INSPC#)) - (add INSPC# 1) - (SETQ PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - (* ; - "Refresh the PCTB in case it grew.") - ] - (SETQ PCLST (create PIECE - PFILE _ INFILE - PFPOS _ (OR HOLDSTART START 0) - PLEN _ [OR HOLDLEN (IDIFFERENCE - [COND - (END END) - (T (* ; "get the eof pointer") - (COND - ((OPENP INFILE) - (GETEOFPTR INFILE)) - (T (OPENSTREAM INFILE 'INPUT) - (PROG1 (GETEOFPTR INFILE) - (CLOSEF INFILE] - (COND - (START START) - (T 0] - PREVPIECE _ NIL - NEXTPIECE _ NIL - PLOOKS _ (\TEDIT.UNIQUIFY.CHARLOOKS (CHARLOOKS.FROM.FONT - DEFAULTFONT) - TEXTOBJ) - PPARALAST _ NIL - PPARALOOKS _ (create FMTSPEC using TEDIT.DEFAULT.FMTSPEC)) - ) - (SETQ LEN (fetch (PIECE PLEN) of PCLST)) - (\TEDIT.INSERT.PIECES TEXTOBJ INSERTCH# PCLST LEN INSPC INSPC# NIL) - (replace (TEXTOBJ TEXTLEN) of TEXTOBJ with (IPLUS TEXTLEN LEN)) - (AND (fetch (TEXTOBJ \WINDOW) of TEXTOBJ) - (\FIXILINES TEXTOBJ SEL INSERTCH# LEN TEXTLEN)) - (replace (SELECTION CHLIM) of SEL with (IPLUS (replace (SELECTION - CH#) - of SEL with - INSERTCH#) - LEN)) - (* ; - "Now fix up the selection to be the included text, point_left, character selection grain.") - (replace (SELECTION DCH) of SEL with LEN) - (replace (SELECTION DX) of SEL with 0) - (replace (SELECTION POINT) of SEL with 'RIGHT) - (* ; - "So that several things INCLUDED in sequence fall in sequence.") - (replace (SELECTION SELKIND) of SEL with 'CHAR) - (replace (SELECTION SELOBJ) of SEL with NIL) - (COND - ((fetch (TEXTOBJ \WINDOW) of TEXTOBJ) - (TEDIT.UPDATE.SCREEN TEXTOBJ) - (\FIXSEL SEL TEXTOBJ) - (\SHOWSEL SEL NIL T))) - (replace (TEXTOBJ \DIRTY) of TEXTOBJ with T) - (* ; "Mark the document changed") - (\SETUPGETCH (create EDITMARK - PC _ INSPC - PCOFF _ 0 - PCNO _ NIL) - TEXTOBJ) (* ; - "Set the fileptr to the end of the insertion.") - T]) -) - - - -(* ;; "PUTting a file:") - -(DEFINEQ - -(TEDIT.PUT - [LAMBDA (STREAM FILE FORCENEW UNFORMATTED? OLDFORMAT?) (* ; "Edited 19-Apr-93 13:04 by jds") - - (* ;; "If the guy was editing a file, make a new updated version; else, ask for a file name") - - (* ;; "If FILE is specd, it's used; else the user must give us one") - - (* ;; "Returns an open stream on the file you PUT to.") - - (PROG ((TEXTOBJ (TEXTOBJ STREAM)) - (TEDIT.PUT.FINISHEDFORMS NIL) - (TEDIT.GET.FINISHEDFORMS NIL) - (OUTPUT.FILE.WRITTEN NIL) - OCURSOR OFILE FONTFILEUSED PROPS WINDOW PUTFN CACHE MENUSTREAM FILENAME TITLE CH#S PC) - [COND - (FILE (* ; "We were given a file to use.") - (SETQ OFILE FILE)) - [FORCENEW (* ; - "He insists on a new file. (without giving us one NIL)") - (SETQ OFILE (\TEDIT.MAKEFILENAME (TEDIT.GETINPUT TEXTOBJ "File to PUT to: "] - (T (* ; "Get a file to put the text into") - (SETQ OFILE (\TEDIT.MAKEFILENAME (TEDIT.GETINPUT TEXTOBJ "File to PUT to: " - (\TEXTSTREAM.FILENAME TEXTOBJ] - (SETQ PUTFN (TEXTPROP TEXTOBJ 'PUTFN)) - (SETQ CACHE (TEXTPROP TEXTOBJ 'CACHE)) - (COND - ((NOT OFILE) (* ; - "There's no file to put to; don't bother.") - (RETURN)) - ((AND PUTFN (EQ (APPLY* PUTFN (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ) - (FULLNAME OFILE) - 'BEFORE) - 'DON'T)) (* ; - "He doesn't want this document put. Bail out.") - (RETURN))) - (RESETLST - [RESETSAVE [SETQ OFILE (OPENSTREAM OFILE 'OUTPUT 'NEW NIL - (COND - [UNFORMATTED? (* ; - "If the user forced no formatting, respect his wish.") - '((TYPE TEXT] - [(TEDIT.FORMATTEDFILEP TEXTOBJ) - (* ; - "If this file has objects, para looks, or font changes, then we need a binary file.") - '((TYPE BINARY] - [(EQL (U-CASE (FILENAMEFIELD OFILE 'EXTENSION)) - 'TEDIT) (* ; "If file extension is TEDIT, then we presume that it really is a tedit file, thus making it a binary file.") - '((TYPE BINARY] - (T (* ; - "Otherwise, we can get by with a text file") - '((TYPE TEXT] - '(AND RESETSTATE (DELFILE (CLOSEF? OLDVALUE] - [RESETSAVE (\TEDIT.PUTRESET (CONS (THIS.PROCESS) - 'DON'T] - (replace DESC of (fetch (TEXTOBJ THISLINE) of TEXTOBJ) with NIL) - (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "PUTting file " (fetch (STREAM FULLNAME) - of OFILE) - "...") - T) - [COND - ((IGREATERP (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ) - 0) - (SETQ FONTFILEUSED (COND - (OLDFORMAT? (TEDIT.PUT.PCTB2 TEXTOBJ OFILE UNFORMATTED?)) - (T (TEDIT.PUT.PCTB TEXTOBJ OFILE UNFORMATTED?] - (CLOSEF OFILE) (* ; - "Close the file, to free it up. And re-open it for INPUT only") - [COND - ((NOT CACHE) (* ; - "CSLI if caching do not need to reopen the output file anyway") - (SETQ OFILE (OPENSTREAM (fetch (STREAM FULLFILENAME) of OFILE) - 'INPUT] (* ; - "changed TEMPORary for ns filing with caching. may not work in general") - (CLOSEF? (fetch (TEXTOBJ TXTFILE) of TEXTOBJ)) - (* ; "Close the old text file") - (replace (TEXTOBJ TXTFILE) of TEXTOBJ with OFILE) - (* ; - "And remember the new one for next time.") - (replace (TEXTOBJ \DIRTY) of TEXTOBJ with NIL) - (* ; - "We can safely QUIT now without losing anything.") - ) - (SETQ CH#S (REVERSE (CDR FONTFILEUSED))) (* ; - "The true filepos's of the pieces in the output file.") - [COND - ((AND (NOT CACHE) - (RANDACCESSP OFILE) - (EQ CR.EOLC (fetch (STREAM EOLCONVENTION) of OFILE))) - - (* ;; "If we've cached this file, DON'T go thru and fill in the real file's location, because the EOL convention may well be wrong.") - - (* ;; "(SETQ PC (ELT (fetch PCTB of TEXTOBJ) (ADD1 \FirstPieceOffset)))") - - (UNINTERRUPTABLY - (SETQ PC (\GETBASEPTR (\FIRSTNODE (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - 0)) - (while (AND PC CH#S) do - - (* ;; - "Run thru the pieces in the PCTB, pointing them to the new file and their new locations.") - - (COND - ((fetch (PIECE POBJ) of PC)) - (T (replace (PIECE PFPOS) of PC - with (pop CH#S)) - (CLOSEF? (fetch (PIECE PFILE) of - PC)) - (* ; - "If this is a piece on an open file, close it, since we're never going to read from it again.") - (replace (PIECE PFILE) of PC - with OFILE) - (replace (PIECE PSTR) of PC - with NIL))) - (SETQ PC (fetch (PIECE NEXTPIECE) of PC))))] - (TEDIT.PROMPTPRINT TEXTOBJ "done.") (* ; "Tell him we're finished.") - (SETQ TITLE (TEXTSTREAM.TITLE TEXTOBJ)) (* ; "find and set the title") - (\TEDIT.WINDOW.TITLE TEXTOBJ (\TEDIT.ORIGINAL.WINDOW.TITLE TITLE NIL)) - (SETQ MENUSTREAM (TEDITMENU.STREAM TEXTOBJ)) - (COND - ((AND MENUSTREAM (type? LITATOM TITLE)) (* ; - "if we have a filename then put it in the GET and PUT fields of the menu") - (SETQ FILENAME (PACKFILENAME 'VERSION NIL 'BODY TITLE)) - (MBUTTON.SET.FIELD MENUSTREAM 'Get FILENAME) - (MBUTTON.SET.FIELD MENUSTREAM 'Put FILENAME))) - (replace (TEXTOBJ \INSERTPCVALID) of TEXTOBJ with NIL) - (* ; "Make sure any new insertions happen for real, and not as appends. Since all the pieces now point to the file rather than the strings.") - (replace (TEXTOBJ \INSERTPC) of TEXTOBJ with NIL) - - (* ;; "make sure that TEDIT doesn't try to just add to the \INSERTPC since it will now have a pfile property") - - (\TEDIT.HISTORYADD TEXTOBJ (create TEDITHISTORYEVENT - THACTION _ 'Put - THCH# _ 0 - THLEN _ 0 - THFIRSTPIECE _ NIL)) - (* ; "Remember we did this.") - (AND PUTFN (APPLY* PUTFN (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ) - (fetch (STREAM FULLNAME) of (fetch (TEXTOBJ TXTFILE) - of TEXTOBJ)) - 'AFTER)) (* ; - "CSLI changed to not presume ofile is the txtfile anymore") - (RETURN OFILE]) - -(TEDIT.PUT.PCTB - [LAMBDA (TEXTOBJ OFILE UNFORMATTED? SEPARATEFORMAT) - (* ; - "Edited 27-May-93 16:00 by sybalsky:mv:envos") - - (* ;; "Put a representation of the piece table onto OFILE, preserving font changes and paragraph looks. UNFORMATTED? means write no font or formatting info.") - - (PROG (OCURSOR CH PC PFILE PSTR POBJ OFILELEN OLDLOOKS (OLDPARALOOKS (fetch (TEXTOBJ FMTSPEC) - of TEXTOBJ)) - (*READTABLE* *TEDIT-FILE-READTABLE*) - (*PRINT-BASE* 10) - OLDCH# CURCH# PREVPC FONTFILE (PCCOUNT 0) - TRUEFILE CHARLOOKSLST PARALOOKSLST (TEDIT.PUT.FINISHEDFORMS NIL) - (EDITSTENTATIVE (TEXTPROP TEXTOBJ 'TEDIT.TENTATIVE)) - (PARALOOKSSEEN NIL) - (FORMATTINGLEVEL (TEDIT.FORMATTEDFILEP TEXTOBJ)) - (CACHE (TEXTPROP TEXTOBJ 'CACHE)) - CH#S PREVFATP PARAHASH LOOKSHASH PREVPREVPC) - (replace (STREAM LINELENGTH) of OFILE with MAX.SMALLP) - (* ; - "Prevent spurious carriage-returns in the piece descriptions.") - - (* ;; "(SETQ PC (\EDITELT (fetch PCTB of TEXTOBJ) (ADD1 \FirstPieceOffset)))") - - (SETQ PC (\GETBASEPTR (\FIRSTNODE (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - 0)) (* ; "First piece in the document") - (SETQ OLDLOOKS (OR (AND (type? PIECE PC) - (fetch (PIECE PLOOKS) of PC)) - (fetch (TEXTOBJ DEFAULTCHARLOOKS) of TEXTOBJ) - TEDIT.DEFAULT.CHARLOOKS)) (* ; "Starting looks") - (COND - ((NEQ (fetch (STREAM EOLCONVENTION) of OFILE) - CR.EOLC) (* ; - "This file is on a non-CR host; make a note to cache it") - (SETQ TRUEFILE OFILE) (* ; - "Remember where the file should wind up.") - (SETQ OFILE (OPENSTREAM '{NODIRCORE} 'BOTH 'NEW)) - (* ; - "And open a temp file to write it to.") - (replace (STREAM LINELENGTH) of OFILE with MAX.SMALLP) - (* ; - "Prevent spurious carriage-returns in the piece descriptions.") - )) - [SETQ CURCH# (SETQ OLDCH# (ADD1 (GETFILEPTR OFILE] - (COND - ((fetch (TEXTOBJ TXTPAGEFRAMES) of TEXTOBJ) - (* ; - "There is layout info for this file. Save it") - (SETQ FONTFILE (\TEDIT-OPEN-FONT-FILE FONTFILE)) - (* ; - "Open a font-info file if one is needed.") - (TEDIT.PUT.PAGEFRAMES FONTFILE (fetch (TEXTOBJ TXTPAGEFRAMES) of TEXTOBJ)) - (add PCCOUNT 1))) - (\TEDIT.FLUSH.UNUSED.LOOKS TEXTOBJ PC) (* ; - "Run thru the lists of char & para looks and remove any that aren't in use") - (COND - ([AND (fetch (TEXTOBJ TXTPARALOOKSLIST) of TEXTOBJ) - (OR (IGREATERP (FLENGTH (fetch (TEXTOBJ TXTPARALOOKSLIST) of TEXTOBJ)) - 1) - (NOT (EQFMTSPEC (CAR (fetch (TEXTOBJ TXTPARALOOKSLIST) of TEXTOBJ)) - TEDIT.DEFAULT.FMTSPEC] - - (* ;; "There are paragraph looks in this document that don't match the default -- save the list of them for later retrieval.") - - (SETQ FONTFILE (\TEDIT-OPEN-FONT-FILE FONTFILE)) - (* ; - "Open a font-info file if one is needed.") - (SETQ PARAHASH (\TEDIT.PUT.PARALOOKS.LIST FONTFILE (fetch (TEXTOBJ - TXTPARALOOKSLIST - ) of - TEXTOBJ))) - (SETQ PARALOOKSSEEN T))) - [COND - ((OR PARALOOKSSEEN FORMATTINGLEVEL) - - (* ;; "There are character looks in this document that don't match the default (or paragraph formatting, which forces looks to be saved) -- save the list for later retrieval.") - - (SETQ FONTFILE (\TEDIT-OPEN-FONT-FILE FONTFILE)) - (* ; - "Open a font-info file if one is needed.") - (SETQ LOOKSHASH (\TEDIT.PUT.CHARLOOKS.LIST FONTFILE (fetch (TEXTOBJ - TXTCHARLOOKSLIST - ) - of TEXTOBJ] - [while PC do (COND - ([AND (NOT (ZEROP (fetch (PIECE PLEN) of PC))) - (OR (NOT PREVPC) - (fetch (PIECE PPARALAST) of PREVPC)) - (OR PARALOOKSSEEN (NOT (EQFMTSPEC (fetch (PIECE - PPARALOOKS - ) - of PC) - (fetch (TEXTOBJ FMTSPEC) - of TEXTOBJ] - (* ; - "The last piece ended a paragraph, so send out new para looks") - (SETQ FONTFILE (\TEDIT-OPEN-FONT-FILE FONTFILE)) - (* ; - "Open a font-info file if one is needed.") - (COND - ((NEQ CURCH# OLDCH#) (* ; - "There were prior characters that hadn't been described in a piece yet. Describe them") - [OR LOOKSHASH (SETQ LOOKSHASH (\TEDIT.PUT.CHARLOOKS.LIST - FONTFILE - (fetch (TEXTOBJ - TXTCHARLOOKSLIST - ) - of TEXTOBJ] - (\TEDIT.PUT.CHARLOOKS FONTFILE OLDCH# CURCH# OLDLOOKS PREVPC - EDITSTENTATIVE LOOKSHASH PREVFATP) - (add PCCOUNT 1) - (SETQ OLDCH# CURCH#) (* ; - "And now we've described all the characters up to the current one.") - )) - (\TEDIT.PUT.PARALOOKS FONTFILE PC PARAHASH) - (SETQ PARALOOKSSEEN T) (* ; - "Remember that we've seen a foreign paralooks, and must henceforth note para boundaries") - (add PCCOUNT 1))) - (COND - [(fetch (PIECE POBJ) of PC) - (* ; - "It's an object -- go use its PUTFN") - (SETQ FONTFILE (\TEDIT-OPEN-FONT-FILE FONTFILE)) - (* ; - "Open a font-info file if one is needed.") - (COND - ((AND (NEQ CURCH# OLDCH#) - PREVPC) (* ; - "There were prior characters that hadn't been described in a piece yet. Describe them") - [OR LOOKSHASH (SETQ LOOKSHASH (\TEDIT.PUT.CHARLOOKS.LIST - FONTFILE - (fetch (TEXTOBJ - TXTCHARLOOKSLIST - ) of - TEXTOBJ] - (\TEDIT.PUT.CHARLOOKS FONTFILE OLDCH# CURCH# OLDLOOKS PREVPC - EDITSTENTATIVE LOOKSHASH PREVFATP) - (add PCCOUNT 1) - (SETQ OLDCH# CURCH#) (* ; - "And now we've described all the characters up to the current one.") - )) (* ; - "If the prior thing was text, send along its descriptor.") - (AND (NOT UNFORMATTED?) - (add CURCH# (TEDIT.PUT.OBJECT PC OFILE FONTFILE CURCH#))) - (* ; "Send out the object") - (add PCCOUNT 1) - (SETQ OLDCH# CURCH#) - (COND - ([OR (NOT (EQCLOOKS OLDLOOKS (fetch (PIECE PLOOKS) - of PC))) - (NEQ (fetch (PIECE PFATP) of PC) - (AND PREVPC (fetch (PIECE PFATP) of PREVPC))) - [AND EDITSTENTATIVE (NEQ (fetch (PIECE PNEW) - of PC) - (AND PREVPC (fetch - (PIECE PNEW) - of PREVPC] - (AND (OR (NOT PREVPC) - (fetch (PIECE PPARALAST) of PREVPC)) - (NOT (EQFMTSPEC (fetch (PIECE PPARALOOKS) - of PC) - (fetch (TEXTOBJ FMTSPEC) of - TEXTOBJ - ] - (* ; - "The OBJECT has different ooks from before") - (\BOUT FONTFILE 1) - (\TEDIT.PUT.SINGLE.CHARLOOKS FONTFILE (fetch - (PIECE PLOOKS) - of PC)) - (SETQ OLDLOOKS (fetch (PIECE PLOOKS) of PC))) - (T (* ; - "No differences. Don't write any charlooks, and mark that fact") - (\BOUT FONTFILE 0) (* ; - "MAKE BLOODY SURE THAT THE NEXT RUN OF CHARACTERS GETS ITS OWN LOOKS") - ] - ((NOT (ZEROP (fetch (PIECE PLEN) of PC))) - (* ; "It's not an object.") - - (* ;; - "For 0-length pieces, don't even acknowledge their existence!!") - - (* ;; "So only do this processing if there's text in the piece.") - - [COND - ([OR [NEQ (fetch (PIECE PFATP) of PC) - (SETQ PREVFATP (AND PREVPC (fetch (PIECE PFATP) - of PREVPC] - (NOT (EQCLOOKS OLDLOOKS (fetch (PIECE PLOOKS) - of PC))) - [AND EDITSTENTATIVE (NEQ (fetch (PIECE PNEW) - of PC) - (AND PREVPC (fetch - (PIECE PNEW) - of PREVPC] - (AND (OR (NOT PREVPC) - (fetch (PIECE PPARALAST) of PREVPC)) - (NOT (EQFMTSPEC (fetch (PIECE PPARALOOKS) - of PC) - (fetch (TEXTOBJ FMTSPEC) of - TEXTOBJ - ] - (* ; "We have a piece with new looks.") - (* ; - "The PREVFATP clause needs to come first, so that PREVFATP gets set for later use.") - (SETQ FONTFILE (\TEDIT-OPEN-FONT-FILE FONTFILE)) - (* ; - "Open a font-info file if one is needed.") - (COND - ((NOT (IEQP OLDCH# CURCH#)) - (* ; - "If there were looks past, and if the run was not empty, save a piece for its looks") - [OR LOOKSHASH (SETQ LOOKSHASH (\TEDIT.PUT.CHARLOOKS.LIST - FONTFILE - (fetch (TEXTOBJ - TXTCHARLOOKSLIST - ) - of TEXTOBJ] - (\TEDIT.PUT.CHARLOOKS FONTFILE OLDCH# CURCH# OLDLOOKS - PREVPC EDITSTENTATIVE LOOKSHASH PREVFATP) - (add PCCOUNT 1))) - (SETQ OLDLOOKS (fetch (PIECE PLOOKS) of PC)) - (SETQ OLDCH# CURCH#) - (COND - [PREVFATP (COND - ((fetch (PIECE PFATP) of PC)) - (T (* ; "Switching from FAT to thin") - (BOUT OFILE 255) - (BOUT OFILE 0) - (add CURCH# 2] - ((fetch (PIECE PFATP) of PC) - (* ; "Switching from thin to fat") - (BOUT OFILE 255) - (BOUT OFILE 255) - (BOUT OFILE 0) - (add CURCH# 3] (* ; - "Now dump out the non-object contents of the piece.") - [COND - [(SETQ PFILE (fetch (PIECE PFILE) of PC)) - (* ; "It's on a file. Copy it.") - [OR (OPENP PFILE) - (replace (PIECE PFILE) of PC - with (SETQ PFILE (\TEDIT.REOPEN.STREAM TEXTOBJ PFILE - ] - (* ; "Make sure the file is open.") - (COPYBYTES PFILE OFILE (fetch (PIECE PFPOS) of PC) - (IPLUS (fetch (PIECE PFPOS) of PC) - (COND - ((fetch (PIECE PFATP) of PC) - (* ; - "For fat file pieces, copy twice as many bytes as characters.") - (UNFOLD (fetch (PIECE PLEN) of PC) - 2)) - (T (fetch (PIECE PLEN) of PC] - ((SETQ PSTR (fetch (PIECE PSTR) of PC)) - (* ; - "It's in a string. Just print it.") - (COND - [(fetch (PIECE PFATP) of PC) - (* ; - "The string is fat: Copy twice as many bytes as chars.") - (for I from 1 to (fetch (PIECE PLEN) - of PC) as CH - instring PSTR do (\BOUT OFILE (\CHARSET CH)) - (\BOUT OFILE (\CHAR8CODE CH] - (T (* ; - "The string is thin. Just copy it to the file.") - (for I from 1 to (fetch (PIECE PLEN) - of PC) as CH - instring PSTR do (\BOUT OFILE CH] - [COND - ((AND (NOT CACHE) - (RANDACCESSP OFILE)) - (* ; -"CSLI leave the pieces and the pctb alone and just write the file if its cached or not randomaccess") - (push CH#S (SUB1 CURCH#] - [COND - ((fetch (PIECE PFATP) of PC) - (add CURCH# (UNFOLD (fetch (PIECE PLEN) of PC) - 2))) - (T (add CURCH# (fetch (PIECE PLEN) of PC] - (* ; - "Keep running track of where in the file we are.") - )) - (COND - ((NOT (ZEROP (fetch (PIECE PLEN) of PC))) - - (* ;; "Only remember this piece if it's not zero-length!") - - (SETQ PREVPREVPC PREVPC) - (SETQ PREVPC PC))) - (SETQ PC (fetch (PIECE NEXTPIECE) of PC)) - finally (* ; - "Put out a piece describing the last characters in the file.") - (COND - ((AND FONTFILE (NEQ OLDCH# CURCH#)) (* ; - "Only if there WERE characters, and only if there's a need for font information") - [OR LOOKSHASH (SETQ LOOKSHASH (\TEDIT.PUT.CHARLOOKS.LIST - FONTFILE - (fetch (TEXTOBJ TXTCHARLOOKSLIST) - of TEXTOBJ] - (\TEDIT.PUT.CHARLOOKS FONTFILE OLDCH# CURCH# OLDLOOKS PREVPC EDITSTENTATIVE - LOOKSHASH PREVPREVPC) (* ; - "Put out a description of the characters") - (add PCCOUNT 1))) - (COND - ((AND PARALOOKSSEEN (fetch (PIECE PPARALAST) of PREVPC)) - (* ; - "The last piece contained the end of a paragraph. Make sure it gets noted.") - (\TEDIT.PUT.PARALOOKS FONTFILE PREVPC PARAHASH) - - (* ;; "Write out a dummy paragraph-looks piece, so that we protect the PPARALAST of the final piece in the document.") - - (\DWOUT FONTFILE 0) - (\SMALLPOUT FONTFILE \PieceDescriptorPARA) - (\SMALLPOUT FONTFILE 1) - - (* ;; "This adds a total of 2 pieces to the file:") - - (add PCCOUNT 2] - (for FORM in TEDIT.PUT.FINISHEDFORMS do (EVAL FORM)) - (* ; "Do any user-specific cleanup") - (COND - (TRUEFILE (* ; - "This file needs to be converted to the right convention") - (COND - ((AND FONTFILE (NOT UNFORMATTED?) - (NOT SEPARATEFORMAT)) (* ; - "Formatted file: Copy without converting.") - (COPYBYTES OFILE TRUEFILE 0 -1)) - (T (* ; - "Go ahead and convert the EOLCONVENTION, this is a plain-text file") - (COPYCHARS OFILE TRUEFILE 0 -1))) - (SETQ OFILE TRUEFILE))) - [COND - ((AND (OPENP OFILE) - FONTFILE) (* ; "We need to write format info.") - (\DWOUT FONTFILE (GETFILEPTR OFILE)) (* ; - "So remember the end of the plain-text part of the file") - (\SMALLPOUT FONTFILE PCCOUNT) (* ; - "# OF PIECES WE'' NEED TO RECONSTRUCT THIS FILE") - (\SMALLPOUT FONTFILE 31418) (* ; - "Now the password for NEW format files: 31416") - (COND - ((AND (NOT UNFORMATTED?) - (NOT SEPARATEFORMAT)) - - (* ;; "Only write fmtg info at the end if we want it there--not if we want plain text or want it kept separate.") - - (COPYBYTES FONTFILE OFILE 0 (GETEOFPTR FONTFILE)) - (* ; - "Copy the font information to the file trailer") - ) - (T)) - (CLOSEF FONTFILE) - (COND - ((NOT SEPARATEFORMAT) (* ; - "Unless we want the formatting info separately, delete the file") - (* ; - "(since FONTFILE is a stream, we should not need to delete it at all) (DELFILE FONTFILE)") - ] - (replace (TEXTOBJ DEFAULTCHARLOOKS) of TEXTOBJ with (\TEDIT.UNIQUIFY.CHARLOOKS - (fetch (TEXTOBJ - DEFAULTCHARLOOKS - ) - of TEXTOBJ) - TEXTOBJ)) - (* ; - "Re-add the default and caret looks's to the lists, since they may not have been really saved.") - (replace (TEXTOBJ CARETLOOKS) of TEXTOBJ with (\TEDIT.UNIQUIFY.CHARLOOKS - (fetch (TEXTOBJ CARETLOOKS) - of TEXTOBJ) - TEXTOBJ)) - (replace (TEXTOBJ FMTSPEC) of TEXTOBJ with (\TEDIT.UNIQUIFY.PARALOOKS - (fetch (TEXTOBJ FMTSPEC) - of TEXTOBJ) - TEXTOBJ)) - (RETURN (CONS (COND - (UNFORMATTED? NIL) - (T FONTFILE)) - CH#S]) - -(\TEDIT.PUTRESET - [LAMBDA (PROC&VALUE) (* jds "15-May-85 16:38") - (CONS (CAR PROC&VALUE) - (PROCESSPROP (CAR PROC&VALUE) - 'BEFOREEXIT - (CDR PROC&VALUE]) - -(TEDIT.PUT.PIECE.DESCRIPTOR - [LAMBDA (FILE CH1 CHLIM LOOKS) (* ; "Edited 30-May-91 20:25 by jds") - (* Put a description of LOOKS into - FILE. LOOKS apply to characters CH1 - thru CHLIM-1) - (* (PROG ((FONT (fetch - (CHARLOOKS CLFONT) of LOOKS)) STR) - (SETQ STR (CONCAT "(FONTCREATE " - (KWOTE (FONTPROP FONT - (QUOTE FAMILY))) " " - (FONTPROP FONT (QUOTE SIZE)) " " - (KWOTE (FONTPROP FONT - (QUOTE FACE))) " )")) - (\DWOUT FILE (IDIFFERENCE CHLIM CH1)) - (* The length of this run of looks) - (\SMALLPOUT FILE (NCHARS STR)) - (* The length of the description - which follows) (PRIN1 STR FILE) - (* Print the form which can EVAL to - re-create the font information) - (\BOUT FILE (LOGOR - (COND ((fetch (CHARLOOKS CLPROTECTED) - of LOOKS) 8) (T 0)) (COND ((fetch (CHARLOOKS CLINVISIBLE) of LOOKS) NIL 4) (T 0)) - (COND ((fetch (CHARLOOKS CLSELHERE) - of LOOKS) 2) (T 0)) - (COND ((fetch (CHARLOOKS CLCANCOPY) - of LOOKS) 1) (T 0)))))) - (HELP]) - -(\ARBOUT - [LAMBDA (STREAM ITEM) (* ; "Edited 20-Apr-88 19:55 by jds") - (* ; - "Write an arbitrary MKSTRING-able thing in length-contents form.") - (LET ((SIZE (AND ITEM (NCHARS ITEM T *TEDIT-FILE-READTABLE*))) - (FPTR) - (END-FPTR)) - (\SMALLPOUT STREAM (OR SIZE 0)) - (SETQ FPTR (GETFILEPTR STREAM)) - (OR (NOT ITEM) - (ZEROP SIZE) - (PRIN2 ITEM STREAM *TEDIT-FILE-READTABLE*)) - (* ;; "Because of NS chars, you gotta back up and really count bytes.") - (* (SETQ END-FPTR (GETFILEPTR STREAM)) - (SETFILEPTR STREAM FPTR) - (\SMALLPOUT STREAM - (- - END-FPTR FPTR)) (SETFILEPTR STREAM - END-FPTR)) - NIL]) - -(\ATMOUT - [LAMBDA (STREAM ATOM) (* jds "30-Jan-85 14:46") - (* Write an atom's characters in - length-contents form.) - (\SMALLPOUT STREAM (COND - (ATOM (NCHARS ATOM)) - (T 0))) - (OR (NOT ATOM) - (ZEROP (NCHARS ATOM)) - (for CH inatom ATOM do (\BOUT STREAM CH]) - -(\DWOUT - [LAMBDA (FILE NUMBER) (* jds " 3-JAN-83 15:30") - (\BOUT FILE (LOGAND 255 (LRSH NUMBER 24))) - (\BOUT FILE (LOGAND 255 (LRSH NUMBER 16))) - (\BOUT FILE (LOGAND 255 (LRSH NUMBER 8))) - (\BOUT FILE (LOGAND 255 NUMBER]) - -(\STRINGOUT - [LAMBDA (STREAM STRING LEN) (* jds " 1-May-84 11:58") - - (* Write a string on a file in length-contents form; - one word for the length, and one byte per character contained.) - - (SETQ LEN (OR LEN (NCHARS STRING))) - (\SMALLPOUT STREAM LEN) - (OR (ZEROP LEN) - (for CH instring STRING as I from 1 to LEN do (\BOUT STREAM CH]) - -(\TEDIT-OPEN-FONT-FILE - [LAMBDA (EXISTING-FONTFILE-IF-ANY) (* ; "Edited 23-Sep-87 12:31 by jds") - - (* ;; " Open a font-information file for TEDIT PUT operation, if one doesn't exist already. Also set its linelength to effective infinity, so that we don't get spurious CRs in the middle of formatting info.") - - (* ;; - "The calling form must be (SETQ FOO (\TEDIT-OPEN-FONT-FILE FOO)), to preserve information.") - - (COND - ((NOT EXISTING-FONTFILE-IF-ANY) (* ; - "Create the font-info file if it doesn't exist yet") - - (SETQ EXISTING-FONTFILE-IF-ANY (OPENSTREAM '{NODIRCORE} 'BOTH 'NEW)) - (replace (STREAM LINELENGTH) of EXISTING-FONTFILE-IF-ANY with MAX.SMALLP) - (* ; - "Prevent spurious carriage-returns in the piece descriptions.") - - )) - EXISTING-FONTFILE-IF-ANY]) -) -(DEFINEQ - -(\TEDIT.GET.CHARLOOKS.LIST - [LAMBDA (FILE) (* jds "28-Jan-85 17:50") - (* Read the list of CHARLOOKSs from - the file.) - (for I from 1 to (\SMALLPIN FILE) collect (\TEDIT.GET.SINGLE.CHARLOOKS FILE]) - -(\TEDIT.GET.SINGLE.CHARLOOKS - [LAMBDA (FILE) (* ; "Edited 30-May-91 20:25 by jds") - (* Read a set of CHARLOOKS from FILE) - (PROG* ((LOOKS (create CHARLOOKS)) - (FILEPOS (GETFILEPTR FILE)) - (LOOKSLEN (\SMALLPIN FILE)) - FONT STR NAME NAMELEN SIZE SUPER SUB PROPS STYLESTR USERSTR) - (SETQ NAME (\ARBIN FILE)) (* The font name) - (SETQ SIZE (\SMALLPIN FILE)) (* Size of the type, in points) - (SETQ SUPER (\SMALLPIN FILE)) (* Superscripting distance) - (replace (CHARLOOKS CLSTYLE) of LOOKS with (OR (\ARBIN FILE) - 0)) - (replace (CHARLOOKS CLUSERINFO) of LOOKS with (\ARBIN FILE)) - (SETQ PROPS (\SMALLPIN FILE)) - (with CHARLOOKS LOOKS [SETQ CLLEADER (NOT (ZEROP (LOGAND 2048 PROPS] - [SETQ CLINVERTED (NOT (ZEROP (LOGAND 1024 PROPS] - [SETQ CLBOLD (NOT (ZEROP (LOGAND 512 PROPS] - [SETQ CLITAL (NOT (ZEROP (LOGAND 256 PROPS] - [SETQ CLULINE (NOT (ZEROP (LOGAND 128 PROPS] - [SETQ CLOLINE (NOT (ZEROP (LOGAND 64 PROPS] - [SETQ CLSTRIKE (NOT (ZEROP (LOGAND 32 PROPS] - [SETQ CLSMALLCAP (NOT (ZEROP (LOGAND 16 PROPS] - [SETQ CLPROTECTED (NOT (ZEROP (LOGAND 8 PROPS] - [SETQ CLINVISIBLE (NOT (ZEROP (LOGAND 4 PROPS] - [SETQ CLSELHERE (NOT (ZEROP (LOGAND 2 PROPS] - [SETQ CLCANCOPY (NOT (ZEROP (LOGAND 1 PROPS] - (SETQ CLSIZE SIZE) - (SETQ CLOFFSET SUPER)) - [replace (CHARLOOKS CLFONT) of LOOKS - with (COND - ((LISTP NAME) (* This was a font class. - Restore it.) - (FONTCLASS (pop NAME) - NAME)) - ((AND NAME (NOT (ZEROP SIZE))) - (FONTCREATE NAME SIZE (COND - ((AND (fetch (CHARLOOKS CLBOLD) of LOOKS) - (fetch (CHARLOOKS CLITAL) of LOOKS) - ) - 'BOLDITALIC) - ((fetch (CHARLOOKS CLBOLD) of LOOKS) - 'BOLD) - ((fetch (CHARLOOKS CLITAL) of LOOKS) - 'ITALIC] - (SETFILEPTR FILE (IPLUS FILEPOS LOOKSLEN)) - (RETURN LOOKS]) - -(\TEDIT.PUT.CHARLOOKS.LIST - [LAMBDA (FILE LOOKSLIST) (* jds " 5-Mar-85 15:58") - (* Write the list of CHARLOOKSs into - the font file.) - - (* Returns a hasharray that will map from a given CHARLOOKS to that CHARLOOKS' - position in the list we wrote on the file. - Those position numbers are then written in the individual looks descriptions, - and are used to reconstruct the piece looks when the file is read back in.) - - (PROG ((LOOKSHASH (HASHARRAY 50))) - (\DWOUT FILE 0) (* No characters are described by this - pseudo-piece entry.) - (\SMALLPOUT FILE \PieceDescriptorCHARLOOKSLIST) (* Mark it as containing the list of - CHARLOOKSs) - (\SMALLPOUT FILE (FLENGTH LOOKSLIST)) (* How many CHARLOOKSs there are in - the list) - (for I from 1 as LOOKS in LOOKSLIST do - - (* Write each charlooks, in the order they appear in the list.) - - (\TEDIT.PUT.SINGLE.CHARLOOKS FILE LOOKS) - (* Write out the description) - (PUTHASH LOOKS I LOOKSHASH) - - (* And save it in the hash table so people can find its index.) -) - (RETURN LOOKSHASH]) - -(\TEDIT.PUT.SINGLE.CHARLOOKS - [LAMBDA (FILE LOOKS) (* ; "Edited 30-May-91 20:26 by jds") - (* Put out a single CHARLOOKS - description.) - (PROG ((FILEPOS (GETFILEPTR FILE)) - (FONT (fetch (CHARLOOKS CLFONT) of LOOKS)) - STR LEN) - (\SMALLPOUT FILE 0) (* Reserve space for the length of - this looks) - [COND - ((type? FONTCLASS FONT) (* For font classes, we need to save - a list of device-FD sets) - (\ARBOUT FILE (FONTCLASSUNPARSE FONT))) - (T (* For FONTDESCRIPTORs, do it the - easy way) - (\ATMOUT FILE (FONTPROP FONT 'FAMILY] (* The font family) - (\SMALLPOUT FILE (OR (FONTPROP FONT 'SIZE) - 0)) (* Size of the type, in points) - (\SMALLPOUT FILE (OR (fetch (CHARLOOKS CLOFFSET) of LOOKS) - 0)) (* Super/subscripting distance) - (COND - ([AND (fetch (CHARLOOKS CLSTYLE) of LOOKS) - (NOT (ZEROP (fetch (CHARLOOKS CLSTYLE) of LOOKS] - (\ARBOUT FILE (fetch (CHARLOOKS CLSTYLE) of LOOKS))) - (T (\SMALLPOUT FILE 0))) - (COND - ((fetch (CHARLOOKS CLUSERINFO) of LOOKS) - (\ARBOUT FILE (fetch (CHARLOOKS CLUSERINFO) of LOOKS))) - (T (\SMALLPOUT FILE 0))) - [\SMALLPOUT FILE (LOGOR (COND - ((fetch (CHARLOOKS CLLEADER) of LOOKS) - (* Dotted-leader; relevant only to - TABs) - 2048) - (T 0)) - (COND - ((fetch (CHARLOOKS CLINVERTED) of LOOKS) - (* Inverse-video) - 1024) - (T 0)) - (COND - ((fetch (CHARLOOKS CLBOLD) of LOOKS) - 512) - (T 0)) - (COND - ((fetch (CHARLOOKS CLITAL) of LOOKS) - 256) - (T 0)) - (COND - ((fetch (CHARLOOKS CLULINE) of LOOKS) - 128) - (T 0)) - (COND - ((fetch (CHARLOOKS CLOLINE) of LOOKS) - 64) - (T 0)) - (COND - ((fetch (CHARLOOKS CLSTRIKE) of LOOKS) - 32) - (T 0)) - (COND - ((fetch (CHARLOOKS CLSMALLCAP) of LOOKS) - 16) - (T 0)) - (COND - ((fetch (CHARLOOKS CLPROTECTED) of LOOKS) - 8) - (T 0)) - (COND - ((fetch (CHARLOOKS CLINVISIBLE) of LOOKS) - NIL 4) - (T 0)) - (COND - ((fetch (CHARLOOKS CLSELHERE) of LOOKS) - 2) - (T 0)) - (COND - ((fetch (CHARLOOKS CLCANCOPY) of LOOKS) - 1) - (T 0] - - (* * Now go fill in the length field at the front of the LOOKS. - (ALL looks info should be written out BEFORE this comment.)) - - (SETQ LEN (IDIFFERENCE (GETFILEPTR FILE) - FILEPOS)) (* The length of this set of looks) - (SETFILEPTR FILE FILEPOS) (* Go write the length field) - (\SMALLPOUT FILE LEN) - (SETFILEPTR FILE -1) (* And back to the end of the file) - ]) -) -(DEFINEQ - -(\TEDIT.GET.PARALOOKS.LIST - [LAMBDA (FILE TEXTOBJ) (* jds "13-Jun-85 11:14") - (* Read the list of CHARLOOKSs from - the file.) - (for I from 1 to (\SMALLPIN FILE) collect (\TEDIT.GET.SINGLE.PARALOOKS FILE TEXTOBJ]) - -(\TEDIT.GET.SINGLE.PARALOOKS - [LAMBDA (FILE TEXTOBJ) (* ; - "Edited 2-Jul-93 21:31 by sybalskY:MV:ENVOS") - (* ; - "Read a paragraph format spec from the FILE, and return it for later use.") - (PROG ((LOOKS (create FMTSPEC)) - (FILEPOS (GETFILEPTR FILE)) - (LOOKSLEN (\SMALLPIN FILE)) - TABFLG DEFAULTTAB TABCOUNT TABS TABSPEC TABTYPE QUAD) - (replace (FMTSPEC 1STLEFTMAR) of LOOKS with (\SMALLPIN FILE)) - (* ; - "Left margin for the first line of the paragraph") - (replace (FMTSPEC LEFTMAR) of LOOKS with (\SMALLPIN FILE)) - (* ; - "Left margin for the rest of the paragraph") - (replace (FMTSPEC RIGHTMAR) of LOOKS with (\SMALLPIN FILE)) - (* ; "Right margin for the paragraph") - (replace (FMTSPEC LEADBEFORE) of LOOKS with (\SMALLPIN FILE)) - (* ; "Leading before the paragraph") - (replace (FMTSPEC LEADAFTER) of LOOKS with (\SMALLPIN FILE)) - (* ; "Lead after the paragraph") - (replace (FMTSPEC LINELEAD) of LOOKS with (\SMALLPIN FILE)) - (* ; "inter-line leading") - (replace (FMTSPEC TABSPEC) of LOOKS with (SETQ TABSPEC (CONS NIL NIL))) - (* ; "Will be tab specs") - (SETQ TABFLG (\BIN FILE)) - (replace (FMTSPEC QUAD) of LOOKS with (SELECTC (SETQ QUAD (\BIN FILE)) - (1 'LEFT) - (2 'RIGHT) - (3 'CENTERED) - (4 'JUSTIFIED) - (SHOULDNT))) - (COND - ((NOT (ZEROP (LOGAND TABFLG 1))) (* ; "There are tabs to read") - (SETQ DEFAULTTAB (\SMALLPIN FILE)) - (SETQ TABCOUNT (\BIN FILE)) - [SETQ TABS (for TAB# from 1 to TABCOUNT - collect (create TAB - TABX _ (\SMALLPIN FILE) - TABKIND _ (SELECTQ (SETQ TABTYPE (\BIN FILE)) - (0 'LEFT) - (1 'RIGHT) - (2 'CENTERED) - (3 'DECIMAL) - (4 'DOTTEDLEFT) - (5 'DOTTEDRIGHT) - (6 'DOTTEDCENTERED) - (7 'DOTTEDDECIMAL) - (SHOULDNT] - (OR (ZEROP DEFAULTTAB) - (RPLACA TABSPEC DEFAULTTAB)) - (RPLACD TABSPEC TABS))) - [COND - ((NOT (ZEROP (LOGAND TABFLG 2))) (* ; - "There are other paragraph parameters to be read.") - (replace (FMTSPEC FMTSPECIALX) of LOOKS with (\SMALLPIN FILE)) - (* ; - "Special X location on page for this paragraph") - (replace (FMTSPEC FMTSPECIALY) of LOOKS with (\SMALLPIN FILE)) - (replace (FMTSPEC FMTUSERINFO) of LOOKS with (\ARBIN FILE)) - (replace (FMTSPEC FMTPARATYPE) of LOOKS with (\ATMIN FILE)) - (replace (FMTSPEC FMTPARASUBTYPE) of LOOKS with (\ATMIN FILE)) - (replace (FMTSPEC FMTSTYLE) of LOOKS with (\ARBIN FILE)) - (replace (FMTSPEC FMTCHARSTYLES) of LOOKS with (\ARBIN FILE)) - (replace (FMTSPEC FMTNEWPAGEBEFORE) of LOOKS with (\ARBIN FILE)) - (replace (FMTSPEC FMTNEWPAGEAFTER) of LOOKS with (\ARBIN FILE)) - (replace (FMTSPEC FMTHEADINGKEEP) of LOOKS with (\ARBIN FILE)) - (replace (FMTSPEC FMTKEEP) of LOOKS with (\ARBIN FILE)) - [COND - ((ILESSP (GETFILEPTR FILE) - (IPLUS FILEPOS LOOKSLEN)) - (replace (FMTSPEC FMTBASETOBASE) of LOOKS with (\ARBIN FILE] - [COND - ((ILESSP (GETFILEPTR FILE) - (IPLUS FILEPOS LOOKSLEN)) - (replace (FMTSPEC FMTREVISED) of LOOKS with (\ARBIN FILE] - [COND - ((ILESSP (GETFILEPTR FILE) - (IPLUS FILEPOS LOOKSLEN)) - (replace (FMTSPEC FMTCOLUMN) of LOOKS with (\ARBIN FILE] - (COND - ((ILESSP (GETFILEPTR FILE) - (IPLUS FILEPOS LOOKSLEN)) - (replace (FMTSPEC FMTCHARSTYLES) of LOOKS with (\ARBIN FILE] - [COND - ((ILESSP (GETFILEPTR FILE) - (IPLUS FILEPOS LOOKSLEN)) (* ; - "There is more PARALOOKS info in this piece -- we probably lost data.") - (TEDIT.PROMPTPRINT TEXTOBJ "WARNING: Newer file version; you lost PARALOOKS info" T) - (SETFILEPTR FILE (IPLUS FILEPOS LOOKSLEN] - (RETURN LOOKS]) - -(\TEDIT.PUT.PARALOOKS.LIST - [LAMBDA (FILE LOOKSLIST) (* ; "Edited 1-Sep-87 20:34 by jds") - (* ; - "Write the list of FMTSPECs into the font file.") - - (PROG ((LOOKSHASH (HASHARRAY 50))) - (\DWOUT FILE 0) - (\SMALLPOUT FILE \PieceDescriptorPARALOOKSLIST) - (\SMALLPOUT FILE (FLENGTH LOOKSLIST)) - (for I from 1 as LOOKS in LOOKSLIST do (\TEDIT.PUT.SINGLE.PARALOOKS FILE LOOKS) - (* ; "Write out the description") - - (PUTHASH LOOKS I LOOKSHASH) - (* ; - "And save it in the hash table so people can find its index.") -) - (RETURN LOOKSHASH]) - -(\TEDIT.PUT.SINGLE.PARALOOKS - [LAMBDA (FILE LOOKS) (* ; - "Edited 2-Jul-93 21:30 by sybalskY:MV:ENVOS") - - (* ;; "Put a description of LOOKS into FILE.") - - (PROG ((FILEPOS (GETFILEPTR FILE)) - DEFAULTTAB TABSPECS OUTPUTFORMAT LEN) - (\SMALLPOUT FILE 0) (* ; - "Reserve space for the length of this looks") - (\SMALLPOUT FILE (fetch (FMTSPEC 1STLEFTMAR) of LOOKS)) - (* ; - "Left margin for the first line of the paragraph") - (\SMALLPOUT FILE (fetch (FMTSPEC LEFTMAR) of LOOKS)) - (* ; - "Left margin for the rest of the paragraph") - (\SMALLPOUT FILE (fetch (FMTSPEC RIGHTMAR) of LOOKS)) - (* ; "Right margin for the paragraph") - (\SMALLPOUT FILE (fetch (FMTSPEC LEADBEFORE) of LOOKS)) - (* ; "Leading before the paragraph") - (\SMALLPOUT FILE (fetch (FMTSPEC LEADAFTER) of LOOKS)) - (* ; "Lead after the paragraph") - (\SMALLPOUT FILE (fetch (FMTSPEC LINELEAD) of LOOKS)) - (* ; "inter-line leading") - (SETQ DEFAULTTAB (CAR (fetch (FMTSPEC TABSPEC) of LOOKS))) - (SETQ TABSPECS (CDR (fetch (FMTSPEC TABSPEC) of LOOKS))) - (COND - ((AND (fetch (FMTSPEC TABSPEC) of LOOKS) - (OR DEFAULTTAB TABSPECS)) (* ; - "There are tab specs to save, or there is a default tab setting to save") - (\BOUT FILE 3)) - (T (* ; - "There are no tab looks. Just let him go.") - (\BOUT FILE 2))) - (\BOUT FILE (SELECTQ (fetch (FMTSPEC QUAD) of LOOKS) - (LEFT 1) - (RIGHT 2) - ((CENTER CENTERED) - 3) - ((JUST JUSTIFIED) - 4) - (SHOULDNT))) - [COND - ((OR TABSPECS DEFAULTTAB) (* ; "There are tab specs to save.") - (COND - (DEFAULTTAB (\SMALLPOUT FILE DEFAULTTAB)) - (T (\SMALLPOUT FILE 0))) - (COND - ((IGREATERP (LENGTH TABSPECS) - 255) - (SHOULDNT "Paragraph has more than 255 TABs set--can't be saved."))) - (\BOUT FILE (LENGTH TABSPECS)) - (COND - (TABSPECS (* ; "# of tab settings <256!") - (for TAB in TABSPECS do (\SMALLPOUT FILE (fetch TABX - of TAB)) - (* ; "And setting.") - (\BOUT FILE (SELECTQ (fetch TABKIND - of TAB) - (LEFT 0) - (RIGHT 1) - (CENTERED 2) - (DECIMAL 3) - (DOTTEDLEFT 4) - (DOTTEDRIGHT 5) - (DOTTEDCENTERED - 6) - (DOTTEDDECIMAL 7) - (SHOULDNT))) - (* ; "Tab type")] - (\SMALLPOUT FILE (OR (fetch (FMTSPEC FMTSPECIALX) of LOOKS) - 0)) - (\SMALLPOUT FILE (OR (fetch (FMTSPEC FMTSPECIALY) of LOOKS) - 0)) - (\ARBOUT FILE (fetch (FMTSPEC FMTUSERINFO) of LOOKS)) - (\ATMOUT FILE (fetch (FMTSPEC FMTPARATYPE) of LOOKS)) - (\ATMOUT FILE (fetch (FMTSPEC FMTPARASUBTYPE) of LOOKS)) - (\ARBOUT FILE (fetch (FMTSPEC FMTSTYLE) of LOOKS)) - (\ARBOUT FILE (fetch (FMTSPEC FMTCHARSTYLES) of LOOKS)) - (\ARBOUT FILE (fetch (FMTSPEC FMTNEWPAGEBEFORE) of LOOKS)) - (\ARBOUT FILE (fetch (FMTSPEC FMTNEWPAGEAFTER) of LOOKS)) - (\ARBOUT FILE (fetch (FMTSPEC FMTHEADINGKEEP) of LOOKS)) - (\ARBOUT FILE (fetch (FMTSPEC FMTKEEP) of LOOKS)) - (\ARBOUT FILE (fetch (FMTSPEC FMTBASETOBASE) of LOOKS)) - (\ARBOUT FILE (fetch (FMTSPEC FMTREVISED) of LOOKS)) - (\ARBOUT FILE (fetch (FMTSPEC FMTCOLUMN) of LOOKS)) - (\ARBOUT FILE (fetch (FMTSPEC FMTCHARSTYLES) of LOOKS)) - -(* ;;; "Now go fill in the length field at the front of the LOOKS. (ALL looks info should be written out BEFORE this comment.)") - - (SETQ LEN (IDIFFERENCE (GETFILEPTR FILE) - FILEPOS)) (* ; "The length of this set of looks") - (SETFILEPTR FILE FILEPOS) (* ; "Go write the length field") - (\SMALLPOUT FILE LEN) - (SETFILEPTR FILE -1) (* ; "And back to the end of the file") - ]) -) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS TEDIT.INPUT.FORMATS *TEDIT-FILE-READTABLE*) -) - -(RPAQ? TEDIT.INPUT.FORMATS NIL) - -(RPAQ? *TEDIT-FILE-READTABLE* (COPYREADTABLE \ORIGREADTABLE)) - - - -(* ;; "For converting old incoming format. Cutover 5/22/85 to permit looks changes in the future.") - -(DEFINEQ - -(TEDIT.BUILD.PCTB2 - [LAMBDA (TEXT TEXTOBJ PCCOUNT START END DEFAULTLOOKS) (* ; "Edited 4-May-93 16:27 by jds") - - (* ;; "READ OBSOLETE FORMATS OF TEDIT FILE") - - (* ;; "START = 1st char of file to read from, if specified") - - (* ;; "END = use this as eofptr of file. For use in reading files within files.") - - (PROG (SEL LINES PCTB PC OLDPC TYPECODE PCLEN CHLOOKSSEEN NEWPC PARALOOKSSEEN PIECEINFOCH# CACHE - CACHE? TTEXTOBJ USER.CMFILE TSTREAM USERFILEFORMAT USERTEMP EXISTINGCHARLOOKS EXLOOK - EXISTINGFMTSPECS (CURFILECH# (OR START 0)) - (CURCH# 1) - (TEXTSTREAM (AND TEXTOBJ (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ))) - LOOKSHASH PARAHASH) (* ; - "Get the number of pieces needed (if AN formatted file), otherwise PCCOUNT will be NIL") - [SETQ DEFAULTPARALOOKS (OR DEFAULTPARALOOKS (COND - (TEXTOBJ (fetch (TEXTOBJ FMTSPEC) - of TEXTOBJ)) - (T (create FMTSPEC using - TEDIT.DEFAULT.FMTSPEC - ] - (SETQ DEFAULTLOOKS (OR DEFAULTLOOKS (CHARLOOKS.FROM.FONT DEFAULTFONT))) - (AND TEXTOBJ (replace (TEXTOBJ TXTPAGEFRAMES) of TEXTOBJ with NIL)) - (* ; - "Start by assuming no page formatting") - (SETQ PCTB (\MAKEPCTB NIL PCCOUNT)) - (replace (TEXTOBJ PCTB) of TEXTOBJ with PCTB) - (SETFILEPTR TEXT (IDIFFERENCE (OR END (GETEOFPTR TEXT)) - 8)) - (SETQ PIECEINFOCH# (\DWIN TEXT)) - (SETFILEPTR TEXT PIECEINFOCH#) - (bind (OLDPC _ NIL) - (OLDPARALOOKS _ DEFAULTPARALOOKS) for I from 1 to PCCOUNT as PCN - from \FirstPieceOffset by \EltsPerPiece - do (SETQ PC NIL) (* ; - "This loop may not really read a piece, so we have to distinguish that case.") - (SETQ PCLEN (\DWIN TEXT)) - (SETQ TYPECODE (\SMALLPIN TEXT)) (* ; "What kind of piece is it?") - (SELECTC TYPECODE - (\PieceDescriptorPAGEFRAME (* ; - "This is page layout info for the file") - (AND TEXTOBJ (replace (TEXTOBJ TXTPAGEFRAMES) of TEXTOBJ - with (TEDIT.GET.PAGEFRAMES TEXT))) - (add PCN (IMINUS \EltsPerPiece)) - (* ; - "This didn't create a piece -- don't count it in the PCTB placement.") - ) - (\PieceDescriptorCHARLOOKSLIST (* ; - "This is the list of CHARLOOKSs used in this document.") - (replace (TEXTOBJ TXTCHARLOOKSLIST) of TEXTOBJ - with (\TEDIT.GET.CHARLOOKS.LIST2 TEXT)) - (* ; - "Read the list of looks used in this document.") - [SETQ LOOKSHASH (ARRAY (FLENGTH (fetch (TEXTOBJ TXTCHARLOOKSLIST) - of TEXTOBJ] - (* ; - "Build an array of the looks, so the reader can index them.") - (for I from 1 as LOOKS in (fetch (TEXTOBJ - TXTCHARLOOKSLIST - ) - of TEXTOBJ) - do (SETA LOOKSHASH I LOOKS)) - (add PCN (IMINUS \EltsPerPiece)) - (* ; - "This didn't create a piece -- don't count it in the PCTB placement.") - (add I -1)) - (\PieceDescriptorPARALOOKSLIST (* ; - "This is the list of PARALOOKSs used in this document.") - (replace (TEXTOBJ TXTPARALOOKSLIST) of TEXTOBJ - with (\TEDIT.GET.PARALOOKS.LIST2 TEXT)) - (* ; - "Read the list of looks used in this document.") - [SETQ PARAHASH (ARRAY (FLENGTH (fetch (TEXTOBJ TXTPARALOOKSLIST) - of TEXTOBJ] - (* ; - "Build an array of the looks, so the reader can index them.") - (for I from 1 as LOOKS in (fetch (TEXTOBJ - TXTPARALOOKSLIST - ) - of TEXTOBJ) - do (SETA PARAHASH I LOOKS)) - (add PCN (IMINUS \EltsPerPiece)) - (* ; - "This didn't create a piece -- don't count it in the PCTB placement.") - (add I -1)) - (\PieceDescriptorPARA (* ; - "Reading a new set of paragraph looks.") - (AND OLDPC (replace (PIECE PPARALAST) of OLDPC with T)) - (* ; - "Mark the end of the preceding paragraph.") - (SETQ OLDPARALOOKS (\TEDIT.GET.PARALOOKS TEXT PARAHASH)) - (* ; - "Get the new set of looks, for use by later pieces.") - (AND TEXTOBJ (replace (TEXTOBJ FORMATTEDP) of TEXTOBJ - with T)) (* ; - "Mark the document as containing paragraph formatting info") - (add PCN (IMINUS \EltsPerPiece)) - (* ; - "This didn't create a piece -- don't count it in the PCTB placement.") - ) - (\PieceDescriptorLOOKS (* ; - "New character looks. Build a piece to describe those characters.") - (SETQ PC - (create PIECE - PFILE _ TEXT - PFPOS _ CURFILECH# - PLEN _ PCLEN - PREVPIECE _ OLDPC - PPARALOOKS _ OLDPARALOOKS)) - (* ; "Build the new piece") - (\TEDIT.GET.CHARLOOKS PC TEXT LOOKSHASH OLDPC) - (* ; - "Read the character looks for this guy.") - (COND - [OLDPC (* ; - "If there's a prior piece, hook this one on the chain.") - (replace (PIECE NEXTPIECE) of OLDPC with PC) - (COND - ((AND (fetch (PIECE PFATP) of PC) - (NOT (fetch (PIECE PFATP) of OLDPC))) - (* ; - "Switching from not-fat to fat. Add 3 bytes for the 255-255-0") - (add (fetch (PIECE PFPOS) of PC) - 3) - (add CURFILECH# -3)) - ((AND (fetch (PIECE PFATP) of OLDPC) - (NOT (fetch (PIECE PFATP) of PC))) - (* ; - "Switching from fat to not-fat. Add 3 bytes for the 255-0") - (add (fetch (PIECE PFPOS) of PC) - 2] - ((fetch (PIECE PFATP) of PC) - (* ; - "Switching from not-fat to fat. Add 3 bytes for the 255-255-0") - (add (fetch (PIECE PFPOS) of PC) - 3) - (add CURFILECH# -3))) - (add CURFILECH# PCLEN) (* ; - "And note the passing of characters.") - ) - (\PieceDescriptorOBJECT (* ; - "It describes an object. Read that, and perhaps some description of the charlooks to go with it.") - (SETQ PC - (create PIECE - PFILE _ TEXT - PFPOS _ CURFILECH# - PLEN _ PCLEN - PREVPIECE _ OLDPC - PPARALOOKS _ OLDPARALOOKS)) - (COND - (OLDPC (* ; - "If there's a prior piece, hook this one on the chain.") - (replace (PIECE NEXTPIECE) of OLDPC with PC))) - (TEDIT.GET.OBJECT TEXTSTREAM PC TEXT CURFILECH#) - (add CURFILECH# (fetch (PIECE PLEN) of PC)) - [COND - ((NOT (ZEROP (\BIN TEXT))) (* ; - "There are new character looks for this object. Read them in.") - (replace (PIECE PLOOKS) of PC with ( - \TEDIT.GET.SINGLE.CHARLOOKS2 - TEXT))) - (T (* ; - "No new looks; steal them from the prior piece.") - (replace (PIECE PLOOKS) of PC - with (OR (AND OLDPC (fetch (PIECE PLOOKS) of OLDPC)) - DEFAULTLOOKS] - (replace (PIECE PLEN) of PC with 1) - (* ; - "OBJECTs are officially one character long.") - ) - (SHOULDNT "Impossible piece-type code in BUILD.PCTB")) - (COND - (PC (* ; - "If we created a piece, save it in the table.") - (\INSERTPIECE PC 'LASTPIECE TEXTOBJ) - (add CURCH# (fetch (PIECE PLEN) of PC)) - (SETQ OLDPC PC))) finally (* INSERT-BRT (CREATEPCNODE CURCH# - (QUOTE LASTPIECE)) PCTB)) - (RETURN PCTB]) - -(\TEDIT.GET.CHARLOOKS.LIST2 - [LAMBDA (FILE) (* jds "22-May-85 14:28") - (* Read the list of CHARLOOKSs from - the file.) - (for I from 1 to (\SMALLPIN FILE) collect (\TEDIT.GET.SINGLE.CHARLOOKS2 FILE]) - -(\TEDIT.GET.SINGLE.CHARLOOKS2 - [LAMBDA (FILE) (* ; "Edited 30-May-91 20:26 by jds") - (* Read a set of CHARLOOKS from FILE) - (PROG* ((LOOKS (create CHARLOOKS)) - FONT STR NAME NAMELEN SIZE SUPER SUB PROPS STYLESTR USERSTR) - (SETQ NAME (\ARBIN FILE)) (* The font name) - (SETQ SIZE (\SMALLPIN FILE)) (* Size of the type, in points) - (SETQ SUPER (\SMALLPIN FILE)) (* Superscripting distance) - (replace (CHARLOOKS CLSTYLE) of LOOKS with (OR (\ARBIN FILE) - 0)) - (replace (CHARLOOKS CLUSERINFO) of LOOKS with (\ARBIN FILE)) - (SETQ PROPS (\SMALLPIN FILE)) - (with CHARLOOKS LOOKS [SETQ CLLEADER (NOT (ZEROP (LOGAND 2048 PROPS] - [SETQ CLINVERTED (NOT (ZEROP (LOGAND 1024 PROPS] - [SETQ CLBOLD (NOT (ZEROP (LOGAND 512 PROPS] - [SETQ CLITAL (NOT (ZEROP (LOGAND 256 PROPS] - [SETQ CLULINE (NOT (ZEROP (LOGAND 128 PROPS] - [SETQ CLOLINE (NOT (ZEROP (LOGAND 64 PROPS] - [SETQ CLSTRIKE (NOT (ZEROP (LOGAND 32 PROPS] - [SETQ CLSMALLCAP (NOT (ZEROP (LOGAND 16 PROPS] - [SETQ CLPROTECTED (NOT (ZEROP (LOGAND 8 PROPS] - [SETQ CLINVISIBLE (NOT (ZEROP (LOGAND 4 PROPS] - [SETQ CLSELHERE (NOT (ZEROP (LOGAND 2 PROPS] - [SETQ CLCANCOPY (NOT (ZEROP (LOGAND 1 PROPS] - (SETQ CLSIZE SIZE) - (SETQ CLOFFSET SUPER)) - [replace (CHARLOOKS CLFONT) of LOOKS - with (COND - ((LISTP NAME) (* This was a font class. - Restore it.) - (FONTCLASS (pop NAME) - NAME)) - ((AND NAME (NOT (ZEROP SIZE))) - (FONTCREATE NAME SIZE (COND - ((AND (fetch (CHARLOOKS CLBOLD) of LOOKS) - (fetch (CHARLOOKS CLITAL) of LOOKS) - ) - 'BOLDITALIC) - ((fetch (CHARLOOKS CLBOLD) of LOOKS) - 'BOLD) - ((fetch (CHARLOOKS CLITAL) of LOOKS) - 'ITALIC] - (RETURN LOOKS]) - -(\TEDIT.PUT.SINGLE.PARALOOKS2 - [LAMBDA (FILE LOOKS) (* ; "Edited 30-May-91 20:33 by jds") - (* Put a description of LOOKS into - FILE. LOOKS apply to characters CH1 - thru CHLIM-1) - (PROG (DEFAULTTAB TABSPECS OUTPUTFORMAT LEN) - (\SMALLPOUT FILE (fetch (FMTSPEC 1STLEFTMAR) of LOOKS)) - (* Left margin for the first line of - the paragraph) - (\SMALLPOUT FILE (fetch (FMTSPEC LEFTMAR) of LOOKS)) - (* Left margin for the rest of the - paragraph) - (\SMALLPOUT FILE (fetch (FMTSPEC RIGHTMAR) of LOOKS)) - (* Right margin for the paragraph) - (\SMALLPOUT FILE (fetch (FMTSPEC LEADBEFORE) of LOOKS)) - (* Leading before the paragraph) - (\SMALLPOUT FILE (fetch (FMTSPEC LEADAFTER) of LOOKS)) - (* Lead after the paragraph) - (\SMALLPOUT FILE (fetch (FMTSPEC LINELEAD) of LOOKS)) - (* inter-line leading) - (SETQ DEFAULTTAB (CAR (fetch (FMTSPEC TABSPEC) of LOOKS))) - (SETQ TABSPECS (CDR (fetch (FMTSPEC TABSPEC) of LOOKS))) - (COND - ((AND (fetch (FMTSPEC TABSPEC) of LOOKS) - (OR DEFAULTTAB TABSPECS)) - - (* There are tab specs to save, or there is a default tab setting to save) - - (\BOUT FILE 3)) - (T (* There are no tab looks. - Just let him go.) - (\BOUT FILE 2))) - (\BOUT FILE (SELECTQ (fetch (FMTSPEC QUAD) of LOOKS) - (LEFT 1) - (RIGHT 2) - ((CENTER CENTERED) - 3) - ((JUST JUSTIFIED) - 4) - (SHOULDNT))) - [COND - ((OR TABSPECS DEFAULTTAB) (* There are tab specs to save.) - (COND - (DEFAULTTAB (\SMALLPOUT FILE DEFAULTTAB)) - (T (\SMALLPOUT FILE 0))) - (\BOUT FILE (LENGTH TABSPECS)) - (COND - (TABSPECS (* %# of tab settings <256!) - (for TAB in TABSPECS do (\SMALLPOUT FILE (fetch TABX - of TAB)) - (* And setting.) - (\BOUT FILE (SELECTQ (fetch TABKIND - of TAB) - (LEFT 0) - (RIGHT 1) - (CENTERED 2) - (DECIMAL 3) - (SHOULDNT))) - (* Tab type)] - (\SMALLPOUT FILE (OR (fetch (FMTSPEC FMTSPECIALX) of LOOKS) - 0)) - (\SMALLPOUT FILE (OR (fetch (FMTSPEC FMTSPECIALY) of LOOKS) - 0)) - (\ARBOUT FILE (fetch (FMTSPEC FMTUSERINFO) of LOOKS)) - (\ATMOUT FILE (fetch (FMTSPEC FMTPARATYPE) of LOOKS)) - (\ATMOUT FILE (fetch (FMTSPEC FMTPARASUBTYPE) of LOOKS)) - (\ARBOUT FILE (fetch (FMTSPEC FMTSTYLE) of LOOKS)) - (\ARBOUT FILE (fetch (FMTSPEC FMTCHARSTYLES) of LOOKS)) - (\ARBOUT FILE (fetch (FMTSPEC FMTNEWPAGEBEFORE) of LOOKS)) - (\ARBOUT FILE (fetch (FMTSPEC FMTNEWPAGEAFTER) of LOOKS]) - -(\TEDIT.PUT.SINGLE.CHARLOOKS2 - [LAMBDA (FILE LOOKS) (* ; "Edited 30-May-91 20:26 by jds") - (* Put out a single CHARLOOKS - description.) - (PROG ((FONT (fetch (CHARLOOKS CLFONT) of LOOKS)) - STR LEN) - [COND - ((type? FONTCLASS FONT) (* For font classes, we need to save - a list of device-FD sets) - (\ARBOUT FILE (FONTCLASSUNPARSE FONT))) - (T (* For FONTDESCRIPTORs, do it the - easy way) - (\ATMOUT FILE (FONTPROP FONT 'FAMILY] (* The font family) - (\SMALLPOUT FILE (OR (FONTPROP FONT 'SIZE) - 0)) (* Size of the type, in points) - (\SMALLPOUT FILE (OR (fetch (CHARLOOKS CLOFFSET) of LOOKS) - 0)) (* Super/subscripting distance) - (COND - ([AND (fetch (CHARLOOKS CLSTYLE) of LOOKS) - (NOT (ZEROP (fetch (CHARLOOKS CLSTYLE) of LOOKS] - (\ARBOUT FILE (fetch (CHARLOOKS CLSTYLE) of LOOKS))) - (T (\SMALLPOUT FILE 0))) - (COND - ((fetch (CHARLOOKS CLUSERINFO) of LOOKS) - (\ARBOUT FILE (fetch (CHARLOOKS CLUSERINFO) of LOOKS))) - (T (\SMALLPOUT FILE 0))) - (\SMALLPOUT FILE (LOGOR (COND - ((fetch (CHARLOOKS CLLEADER) of LOOKS) - (* Dotted-leader; relevant only to - TABs) - 2048) - (T 0)) - (COND - ((fetch (CHARLOOKS CLINVERTED) of LOOKS) - (* Inverse-video) - 1024) - (T 0)) - (COND - ((fetch (CHARLOOKS CLBOLD) of LOOKS) - 512) - (T 0)) - (COND - ((fetch (CHARLOOKS CLITAL) of LOOKS) - 256) - (T 0)) - (COND - ((fetch (CHARLOOKS CLULINE) of LOOKS) - 128) - (T 0)) - (COND - ((fetch (CHARLOOKS CLOLINE) of LOOKS) - 64) - (T 0)) - (COND - ((fetch (CHARLOOKS CLSTRIKE) of LOOKS) - 32) - (T 0)) - (COND - ((fetch (CHARLOOKS CLSMALLCAP) of LOOKS) - 16) - (T 0)) - (COND - ((fetch (CHARLOOKS CLPROTECTED) of LOOKS) - 8) - (T 0)) - (COND - ((fetch (CHARLOOKS CLINVISIBLE) of LOOKS) - NIL 4) - (T 0)) - (COND - ((fetch (CHARLOOKS CLSELHERE) of LOOKS) - 2) - (T 0)) - (COND - ((fetch (CHARLOOKS CLCANCOPY) of LOOKS) - 1) - (T 0]) - -(\TEDIT.GET.PARALOOKS.LIST2 - [LAMBDA (FILE) (* jds "22-May-85 14:28") - (* Read the list of CHARLOOKSs from - the file.) - (for I from 1 to (\SMALLPIN FILE) collect (\TEDIT.GET.SINGLE.PARALOOKS2 FILE]) - -(\TEDIT.GET.SINGLE.PARALOOKS2 - [LAMBDA (FILE) (* ; "Edited 30-May-91 20:33 by jds") - (* Read a paragraph format spec from - the FILE, and return it for later - use.) - (PROG ((LOOKS (create FMTSPEC)) - TABFLG DEFAULTTAB TABCOUNT TABS TABSPEC) - (replace (FMTSPEC 1STLEFTMAR) of LOOKS with (\SMALLPIN FILE)) - (* Left margin for the first line of - the paragraph) - (replace (FMTSPEC LEFTMAR) of LOOKS with (\SMALLPIN FILE)) - (* Left margin for the rest of the - paragraph) - (replace (FMTSPEC RIGHTMAR) of LOOKS with (\SMALLPIN FILE)) - (* Right margin for the paragraph) - (replace (FMTSPEC LEADBEFORE) of LOOKS with (\SMALLPIN FILE)) - (* Leading before the paragraph) - (replace (FMTSPEC LEADAFTER) of LOOKS with (\SMALLPIN FILE)) - (* Lead after the paragraph) - (replace (FMTSPEC LINELEAD) of LOOKS with (\SMALLPIN FILE)) - (* inter-line leading) - (replace (FMTSPEC TABSPEC) of LOOKS with (SETQ TABSPEC (CONS NIL NIL))) - (* Will be tab specs) - (SETQ TABFLG (\BIN FILE)) - (replace (FMTSPEC QUAD) of LOOKS with (SELECTC (\BIN FILE) - (1 'LEFT) - (2 'RIGHT) - (3 'CENTERED) - (4 'JUSTIFIED) - (SHOULDNT))) - (COND - ((NOT (ZEROP (LOGAND TABFLG 1))) (* There are tabs to read) - (SETQ DEFAULTTAB (\SMALLPIN FILE)) - (SETQ TABCOUNT (\BIN FILE)) - [SETQ TABS (for TAB# from 1 to TABCOUNT - collect (create TAB - TABX _ (\SMALLPIN FILE) - TABKIND _ (SELECTQ (\BIN FILE) - (0 'LEFT) - (1 'RIGHT) - (2 'CENTERED) - (3 'DECIMAL) - (SHOULDNT] - (OR (ZEROP DEFAULTTAB) - (RPLACA TABSPEC DEFAULTTAB)) - (RPLACD TABSPEC TABS))) - [COND - ((NOT (ZEROP (LOGAND TABFLG 2))) (* There are other paragraph - parameters to be read.) - (replace (FMTSPEC FMTSPECIALX) of LOOKS with (\SMALLPIN FILE)) - (* Special X location on page for - this paragraph) - (replace (FMTSPEC FMTSPECIALY) of LOOKS with (\SMALLPIN FILE)) - (replace (FMTSPEC FMTUSERINFO) of LOOKS with (\ARBIN FILE)) - (replace (FMTSPEC FMTPARATYPE) of LOOKS with (\ATMIN FILE)) - (replace (FMTSPEC FMTPARASUBTYPE) of LOOKS with (\ATMIN FILE)) - (replace (FMTSPEC FMTSTYLE) of LOOKS with (\ARBIN FILE)) - (replace (FMTSPEC FMTCHARSTYLES) of LOOKS with (\ARBIN FILE)) - (replace (FMTSPEC FMTNEWPAGEBEFORE) of LOOKS with (\ARBIN FILE)) - (replace (FMTSPEC FMTNEWPAGEAFTER) of LOOKS with (\ARBIN FILE] - (RETURN LOOKS]) - -(TEDIT.PUT.PCTB2 - [LAMBDA (TEXTOBJ OFILE UNFORMATTED? SEPARATEFORMAT) (* ; "Edited 30-May-91 20:24 by jds") - - (* ;; "Put a representation of the piece table onto OFILE, preserving font changes and paragraph looks. UNFORMATTED? means write no font or formatting info.") - - (PROG (OCURSOR CH PC PFILE PSTR POBJ OFILELEN OLDLOOKS (OLDPARALOOKS (fetch (TEXTOBJ FMTSPEC) - of TEXTOBJ)) - OLDCH# CURCH# PREVPC (FONTFILE NIL) - (PCCOUNT 0) - TRUEFILE CHARLOOKSLST PARALOOKSLST (TEDIT.PUT.FINISHEDFORMS NIL) - (EDITSTENTATIVE (TEXTPROP TEXTOBJ 'TEDIT.TENTATIVE)) - (PARALOOKSSEEN NIL) - (FORMATTINGLEVEL (TEDIT.FORMATTEDFILEP TEXTOBJ)) - (CACHE (TEXTPROP TEXTOBJ 'CACHE)) - CH#S PREVFATP PREVPREVPC LOOKSHASH PARAHASH) - (SETQ PC (\EDITELT (fetch (TEXTOBJ PCTB) of TEXTOBJ) - (ADD1 \FirstPieceOffset))) (* ; "First piece in the document") - (SETQ OLDLOOKS (OR (AND (type? PIECE PC) - (fetch (PIECE PLOOKS) of PC)) - (fetch (TEXTOBJ DEFAULTCHARLOOKS) of TEXTOBJ) - TEDIT.DEFAULT.CHARLOOKS)) (* ; "Starting looks") - (COND - ((NEQ (fetch (STREAM EOLCONVENTION) of OFILE) - CR.EOLC) (* ; - "This file is on a non-CR host; make a note to cache it") - (SETQ TRUEFILE OFILE) (* ; - "Remember where the file should wind up.") - (SETQ OFILE (OPENFILE '{NODIRCORE} 'BOTH 'NEW))(* ; - "And open a temp file to write it to.") - )) - [SETQ CURCH# (SETQ OLDCH# (ADD1 (GETFILEPTR OFILE] - (COND - ((fetch (TEXTOBJ TXTPAGEFRAMES) of TEXTOBJ) - (* ; - "There is layout info for this file. Save it") - (SETQ FONTFILE (OPENFILE '{NODIRCORE} 'BOTH 'NEW)) - (TEDIT.PUT.PAGEFRAMES FONTFILE (fetch (TEXTOBJ TXTPAGEFRAMES) of TEXTOBJ)) - (add PCCOUNT 1))) - (\TEDIT.FLUSH.UNUSED.LOOKS TEXTOBJ PC) (* ; - "Run thru the lists of char & para looks and remove any that aren't in use") - (COND - ([AND (fetch (TEXTOBJ TXTPARALOOKSLIST) of TEXTOBJ) - (OR (IGREATERP (FLENGTH (fetch (TEXTOBJ TXTPARALOOKSLIST) of TEXTOBJ)) - 1) - (NOT (EQFMTSPEC (CAR (fetch (TEXTOBJ TXTPARALOOKSLIST) of TEXTOBJ)) - TEDIT.DEFAULT.FMTSPEC] - - (* ;; "There are paragraph looks in this document that don't match the default -- save the list of them for later retrieval.") - - [OR FONTFILE (SETQ FONTFILE (OPENFILE '{NODIRCORE} 'BOTH 'NEW] - (* ; - "Create the font-info file if it doesn't exist yet") - (SETQ PARAHASH (\TEDIT.PUT.PARALOOKS.LIST2 FONTFILE (fetch (TEXTOBJ - TXTPARALOOKSLIST - ) - of TEXTOBJ))) - (SETQ PARALOOKSSEEN T))) - [COND - ((OR PARALOOKSSEEN FORMATTINGLEVEL) - - (* ;; "There are character looks in this document that don't match the default (or paragraph formatting, which forces looks to be saved) -- save the list for later retrieval.") - - [OR FONTFILE (SETQ FONTFILE (OPENFILE '{NODIRCORE} 'BOTH 'NEW] - (SETQ LOOKSHASH (\TEDIT.PUT.CHARLOOKS.LIST2 FONTFILE (fetch (TEXTOBJ - TXTCHARLOOKSLIST - ) - of TEXTOBJ] - [while PC do (COND - ([AND (NOT (ZEROP (fetch (PIECE PLEN) of PC))) - (OR (NOT PREVPC) - (fetch (PIECE PPARALAST) of PREVPC)) - (OR PARALOOKSSEEN (NOT (EQFMTSPEC (fetch (PIECE - PPARALOOKS - ) - of PC) - (fetch (TEXTOBJ FMTSPEC) - of TEXTOBJ] - (* ; - "The last piece ended a paragraph, so send out new para looks") - [OR FONTFILE (SETQ FONTFILE (OPENFILE '{NODIRCORE} 'BOTH - 'NEW] - (* ; - "Create the formatting-info file, if it didn't exist before.") - (COND - ((NEQ CURCH# OLDCH#) (* ; - "There were prior characters that hadn't been described in a piece yet. Describe them") - [OR LOOKSHASH (SETQ LOOKSHASH (\TEDIT.PUT.CHARLOOKS.LIST - FONTFILE - (fetch (TEXTOBJ - TXTCHARLOOKSLIST - ) - of TEXTOBJ] - (\TEDIT.PUT.CHARLOOKS FONTFILE OLDCH# CURCH# OLDLOOKS PREVPC - EDITSTENTATIVE LOOKSHASH PREVFATP) - (add PCCOUNT 1) - (SETQ OLDCH# CURCH#) (* ; - "And now we've described all the characters up to the current one.") - )) - (\TEDIT.PUT.PARALOOKS FONTFILE PC PARAHASH) - (SETQ PARALOOKSSEEN T) (* ; - "Remember that we've seen a foreign paralooks, and must henceforth note para boundaries") - (add PCCOUNT 1))) - (COND - [(fetch (PIECE POBJ) of PC) - (* ; - "It's an object -- go use its PUTFN") - [OR FONTFILE (SETQ FONTFILE (OPENFILE '{NODIRCORE} 'BOTH - 'NEW] - (* ; - "Create the font-info file, if need be.") - (COND - ((AND (NEQ CURCH# OLDCH#) - PREVPC) (* ; - "There were prior characters that hadn't been described in a piece yet. Describe them") - [OR LOOKSHASH (SETQ LOOKSHASH (\TEDIT.PUT.CHARLOOKS.LIST - FONTFILE - (fetch (TEXTOBJ - TXTCHARLOOKSLIST - ) of - TEXTOBJ] - (\TEDIT.PUT.CHARLOOKS FONTFILE OLDCH# CURCH# OLDLOOKS PREVPC - EDITSTENTATIVE LOOKSHASH PREVFATP) - (add PCCOUNT 1) - (SETQ OLDCH# CURCH#) (* ; - "And now we've described all the characters up to the current one.") - )) (* ; - "If the prior thing was text, send along its descriptor.") - (add CURCH# (TEDIT.PUT.OBJECT PC OFILE FONTFILE CURCH#)) - (* ; "Send out the object") - (add PCCOUNT 1) - (SETQ OLDCH# CURCH#) - (COND - ([OR (NOT (EQCLOOKS OLDLOOKS (fetch (PIECE PLOOKS) - of PC))) - (NEQ (fetch (PIECE PFATP) of PC) - (AND PREVPC (fetch (PIECE PFATP) of PREVPC))) - [AND EDITSTENTATIVE (NEQ (fetch (PIECE PNEW) - of PC) - (AND PREVPC (fetch - (PIECE PNEW) - of PREVPC] - (AND (OR (NOT PREVPC) - (fetch (PIECE PPARALAST) of PREVPC)) - (NOT (EQFMTSPEC (fetch (PIECE PPARALOOKS) - of PC) - (fetch (TEXTOBJ FMTSPEC) of - TEXTOBJ - ] - (* ; - "The OBJECT has different ooks from before") - (\BOUT FONTFILE 1) - (\TEDIT.PUT.SINGLE.CHARLOOKS FONTFILE (fetch - (PIECE PLOOKS) - of PC)) - (SETQ OLDLOOKS (fetch (PIECE PLOOKS) of PC))) - (T (* ; - "No differences. Don't write any charlooks, and mark that fact") - (\BOUT FONTFILE 0) (* ; - "MAKE BLOODY SURE THAT THE NEXT RUN OF CHARACTERS GETS ITS OWN LOOKS") - ] - (T (* ; "It's not an object.") - [COND - ([OR (NOT (EQCLOOKS OLDLOOKS (fetch (PIECE PLOOKS) - of PC))) - (NEQ (fetch (PIECE PFATP) of PC) - (AND PREVPC (fetch (PIECE PFATP) of PREVPC)) - ) - [AND EDITSTENTATIVE (NEQ (fetch (PIECE PNEW) - of PC) - (AND PREVPC (fetch - (PIECE PNEW) - of PREVPC] - (AND (OR (NOT PREVPC) - (fetch (PIECE PPARALAST) of PREVPC)) - (NOT (EQFMTSPEC (fetch (PIECE PPARALOOKS) - of PC) - (fetch (TEXTOBJ FMTSPEC) - of TEXTOBJ] - (* ; "We have a piece with new looks.") - [OR FONTFILE (SETQ FONTFILE (OPENFILE '{NODIRCORE} - 'BOTH - 'NEW] - (COND - ((NOT (IEQP OLDCH# CURCH#)) - (* ; - "If there were looks past, and if the run was not empty, save a piece for its looks") - [OR LOOKSHASH (SETQ LOOKSHASH ( - \TEDIT.PUT.CHARLOOKS.LIST - FONTFILE - (fetch (TEXTOBJ - TXTCHARLOOKSLIST - ) - of TEXTOBJ] - (\TEDIT.PUT.CHARLOOKS FONTFILE OLDCH# CURCH# OLDLOOKS - PREVPC EDITSTENTATIVE LOOKSHASH PREVFATP) - (add PCCOUNT 1))) - (SETQ OLDLOOKS (fetch (PIECE PLOOKS) of PC)) - (SETQ OLDCH# CURCH#) - (COND - [PREVFATP (COND - ((fetch (PIECE PFATP) of PC)) - (T (* ; "Switching from FAT to thin") - (BOUT OFILE 255) - (BOUT OFILE 0) - (add CURCH# 2] - ((fetch (PIECE PFATP) of PC) - (* ; "Switching from thin to fat") - (BOUT OFILE 255) - (BOUT OFILE 255) - (BOUT OFILE 0) - (add CURCH# 3))) - (SETQ PREVFATP (fetch (PIECE PFATP) of PC] - (* ; - "Now dump out the non-object contents of the piece.") - [COND - [(SETQ PFILE (fetch (PIECE PFILE) of PC)) - (* ; "It's on a file. Copy it.") - [OR (OPENP PFILE) - (replace (PIECE PFILE) of PC - with (SETQ PFILE (OPENSTREAM (fetch - (STREAM FULLNAME) - of PFILE) - 'INPUT] - (* ; "Make sure the file is open.") - (COPYBYTES PFILE OFILE (fetch (PIECE PFPOS) of PC) - (IPLUS (fetch (PIECE PFPOS) of PC) - (COND - ((fetch (PIECE PFATP) of PC) - (* ; - "For fat file pieces, copy twice as many bytes as characters.") - (UNFOLD (fetch (PIECE PLEN) - of PC) - 2)) - (T (fetch (PIECE PLEN) of PC] - ((SETQ PSTR (fetch (PIECE PSTR) of PC)) - (* ; - "It's in a string. Just print it.") - (COND - [(fetch (PIECE PFATP) of PC) - (* ; - "The string is fat: Copy twice as many bytes as chars.") - (for I from 1 to (fetch (PIECE PLEN) - of PC) as CH - instring PSTR do (\BOUT OFILE (\CHARSET CH)) - (\BOUT OFILE (\CHAR8CODE - CH] - (T (* ; - "The string is thin. Just copy it to the file.") - (for I from 1 to (fetch (PIECE PLEN) - of PC) as - CH - instring PSTR do (\BOUT OFILE CH] - [COND - ((AND (NOT CACHE) - (RANDACCESSP OFILE)) - (* ; -"CSLI leave the pieces and the pctb alone and just write the file if its cached or not randomaccess") - (push CH#S (SUB1 CURCH#] - [COND - ((fetch (PIECE PFATP) of PC) - (add CURCH# (UNFOLD (fetch (PIECE PLEN) of PC) - 2))) - (T (add CURCH# (fetch (PIECE PLEN) of PC] - (* ; - "Keep running track of where in the file we are.") - )) - (SETQ PREVPREVPC PREVPC) - (SETQ PREVPC PC) - (SETQ PC (fetch (PIECE NEXTPIECE) of PC)) - finally (* ; - "Put out a piece describing the last characters in the file.") - (COND - ((AND FONTFILE (NEQ OLDCH# CURCH#)) (* ; - "Only if there WERE characters, and only if there's a need for font information") - [OR LOOKSHASH (SETQ LOOKSHASH (\TEDIT.PUT.CHARLOOKS.LIST - FONTFILE - (fetch (TEXTOBJ TXTCHARLOOKSLIST) - of TEXTOBJ] - (\TEDIT.PUT.CHARLOOKS FONTFILE OLDCH# CURCH# OLDLOOKS PREVPC EDITSTENTATIVE - LOOKSHASH PREVPREVPC) (* ; - "Put out a description of the characters") - (add PCCOUNT 1))) - (COND - ((AND PARALOOKSSEEN (fetch (PIECE PPARALAST) of PREVPC)) - (* ; - "The last piece contained the end of a paragraph. Make sure it gets noted.") - (\TEDIT.PUT.PARALOOKS FONTFILE PREVPC PARAHASH) - (add PCCOUNT 1] - (for FORM in TEDIT.PUT.FINISHEDFORMS do (EVAL FORM)) - (* ; "Do any user-specific cleanup") - (COND - (TRUEFILE (* ; - "This file needs to be converted to the right convention") - (COND - ((AND FONTFILE (NOT UNFORMATTED?) - (NOT SEPARATEFORMAT)) (* ; - "Formatted file: Copy without converting.") - (COPYBYTES OFILE TRUEFILE 0 -1)) - (T (* ; - "Go ahead and convert the EOLCONVENTION, this is a plain-text file") - (COPYCHARS OFILE TRUEFILE 0 -1))) - (SETQ OFILE TRUEFILE))) - [COND - ((AND (OPENP OFILE) - FONTFILE) (* ; "We need to write format info.") - (\DWOUT FONTFILE (GETEOFPTR OFILE)) (* ; - "So remember the end of the plain-text part of the file") - (\SMALLPOUT FONTFILE PCCOUNT) (* ; - "# OF PIECES WE'' NEED TO RECONSTRUCT THIS FILE") - (\SMALLPOUT FONTFILE 31417) (* ; - "Now the password for NEW format files: 31416") - (COND - ((AND (NOT UNFORMATTED?) - (NOT SEPARATEFORMAT)) - - (* ;; "Only write fmtg info at the end if we want it there--not if we want plain text or want it kept separate.") - - (COPYBYTES FONTFILE OFILE 0 (GETEOFPTR FONTFILE)) - (* ; - "Copy the font information to the file trailer") - ) - (T)) - (CLOSEF FONTFILE) - (COND - ((NOT SEPARATEFORMAT) (* ; - "Unless we want the formatting info separately, delete the file") - (* ; - "(since FONTFILE is a stream, we should not need to delete it at all) (DELFILE FONTFILE)") - ] - (replace (TEXTOBJ DEFAULTCHARLOOKS) of TEXTOBJ with (\TEDIT.UNIQUIFY.CHARLOOKS - (fetch (TEXTOBJ - DEFAULTCHARLOOKS - ) - of TEXTOBJ) - TEXTOBJ)) - (* ; - "Re-add the default and caret looks's to the lists, since they may not have been really saved.") - (replace (TEXTOBJ CARETLOOKS) of TEXTOBJ with (\TEDIT.UNIQUIFY.CHARLOOKS - (fetch (TEXTOBJ CARETLOOKS) - of TEXTOBJ) - TEXTOBJ)) - (replace (TEXTOBJ FMTSPEC) of TEXTOBJ with (\TEDIT.UNIQUIFY.PARALOOKS - (fetch (TEXTOBJ FMTSPEC) - of TEXTOBJ) - TEXTOBJ)) - (RETURN (CONS (COND - (UNFORMATTED? NIL) - (T FONTFILE)) - CH#S]) - -(\TEDIT.PUT.CHARLOOKS.LIST2 - [LAMBDA (FILE LOOKSLIST) (* jds "22-May-85 15:12") - (* Write the list of CHARLOOKSs into - the font file.) - - (* Returns a hasharray that will map from a given CHARLOOKS to that CHARLOOKS' - position in the list we wrote on the file. - Those position numbers are then written in the individual looks descriptions, - and are used to reconstruct the piece looks when the file is read back in.) - - (PROG ((LOOKSHASH (HASHARRAY 50))) - (\DWOUT FILE 0) (* No characters are described by this - pseudo-piece entry.) - (\SMALLPOUT FILE \PieceDescriptorCHARLOOKSLIST) (* Mark it as containing the list of - CHARLOOKSs) - (\SMALLPOUT FILE (FLENGTH LOOKSLIST)) (* How many CHARLOOKSs there are in - the list) - (for I from 1 as LOOKS in LOOKSLIST do - - (* Write each charlooks, in the order they appear in the list.) - - (\TEDIT.PUT.SINGLE.CHARLOOKS2 FILE LOOKS) - (* Write out the description) - (PUTHASH LOOKS I LOOKSHASH) - - (* And save it in the hash table so people can find its index.) -) - (RETURN LOOKSHASH]) - -(\TEDIT.PUT.PARALOOKS.LIST2 - [LAMBDA (FILE LOOKSLIST) (* jds "22-May-85 15:09") - (* Write the list of FMTSPECs into the - font file.) - (PROG ((LOOKSHASH (HASHARRAY 50))) - (\DWOUT FILE 0) - (\SMALLPOUT FILE \PieceDescriptorPARALOOKSLIST) - (\SMALLPOUT FILE (FLENGTH LOOKSLIST)) - (for I from 1 as LOOKS in LOOKSLIST do (\TEDIT.PUT.SINGLE.PARALOOKS2 FILE LOOKS) - (* Write out the description) - (PUTHASH LOOKS I LOOKSHASH) - - (* And save it in the hash table so people can find its index.) -) - (RETURN LOOKSHASH]) -) - - - -(* ;; "For converting incoming old-format files (1/27/85 cutover)") - -(DEFINEQ - -(TEDIT.BUILD.PCTB1 - [LAMBDA (TEXT TEXTOBJ PCCOUNT START END DEFAULTLOOKS) (* ; "Edited 22-May-92 18:00 by jds") - -(* ;;; "READ OBSOLETE FORMATS OF TEDIT FILE") - - (* ;; "START = 1st char of file to read from, if specified") - - (* ;; "END = use this as eofptr of file. For use in reading files within files.") - - (PROG [SEL LINES PCTB PC OLDPC TYPECODE PCLEN CHLOOKSSEEN NEWPC PARALOOKSSEEN PIECEINFOCH# CACHE - CACHE? TTEXTOBJ USER.CMFILE TSTREAM USERFILEFORMAT USERTEMP EXISTINGCHARLOOKS EXLOOK - EXISTINGFMTSPECS (CURFILECH# (OR START 0)) - (CURCH# 1) - (TEXTSTREAM (AND TEXTOBJ (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ] - - (* ;; "Get the number of pieces needed (if AN formatted file), otherwise PCCOUNT will be NIL") - - [SETQ DEFAULTPARALOOKS (OR DEFAULTPARALOOKS (COND - (TEXTOBJ (fetch (TEXTOBJ FMTSPEC) - of TEXTOBJ)) - (T (create FMTSPEC using - TEDIT.DEFAULT.FMTSPEC - ] - (SETQ DEFAULTLOOKS (OR DEFAULTLOOKS (CHARLOOKS.FROM.FONT DEFAULTFONT))) - (AND TEXTOBJ (replace (TEXTOBJ TXTPAGEFRAMES) of TEXTOBJ with NIL)) - (* ; - "Start by assuming no page formatting") - (SETQ PCTB (\MAKEPCTB NIL PCCOUNT)) - (SETFILEPTR TEXT (IDIFFERENCE (OR END (GETEOFPTR TEXT)) - 8)) - (SETQ PIECEINFOCH# (\DWIN TEXT)) - (SETFILEPTR TEXT PIECEINFOCH#) - (bind (OLDPC _ NIL) - (OLDPARALOOKS _ DEFAULTPARALOOKS) for I from 1 to PCCOUNT as PCN - from \FirstPieceOffset by \EltsPerPiece - do (SETQ PC NIL) (* ; - "This loop may not really read a piece, so we have to distinguish that case.") - (SETQ PCLEN (\DWIN TEXT)) - (SETQ TYPECODE (\SMALLPIN TEXT)) (* ; "What kind of piece is it?") - (SELECTC TYPECODE - (\PieceDescriptorPAGEFRAME (* ; - "This is page layout info for the file") - (AND TEXTOBJ (replace (TEXTOBJ TXTPAGEFRAMES) of TEXTOBJ - with (TEDIT.GET.PAGEFRAMES1 TEXT))) - (add PCN (IMINUS \EltsPerPiece)) - (* ; - "This didn't create a piece -- don't count it in the PCTB placement.") - ) - (\PieceDescriptorPARA (* ; - "Reading a new set of paragraph looks.") - (AND OLDPC (replace (PIECE PPARALAST) of OLDPC with T)) - (* ; - "Mark the end of the preceding paragraph.") - (SETQ OLDPARALOOKS (\TEDIT.GET.PARALOOKS1 TEXT)) - (* ; - "Get the new set of looks, for use by later pieces.") - (AND TEXTOBJ (replace (TEXTOBJ FORMATTEDP) of TEXTOBJ - with T)) (* ; - "Mark the document as containing paragraph formatting info") - (add PCN (IMINUS \EltsPerPiece)) - (* ; - "This didn't create a piece -- don't count it in the PCTB placement.") - ) - (\PieceDescriptorLOOKS (* ; - "New character looks. Build a piece to describe those characters.") - (SETQ PC - (create PIECE - PFILE _ TEXT - PFPOS _ CURFILECH# - PLEN _ PCLEN - PREVPIECE _ OLDPC - PPARALOOKS _ OLDPARALOOKS)) - (* ; "Build the new piece") - (COND - (OLDPC (* ; - "If there's a prior piece, hook this one on the chain.") - (replace (PIECE NEXTPIECE) of OLDPC with PC))) - (\TEDIT.GET.CHARLOOKS1 PC TEXT) - (* ; - "Read the character looks for this guy.") - (add CURFILECH# (fetch (PIECE PLEN) of PC)) - (* ; - "And note the passing of characters.") - ) - (\PieceDescriptorOBJECT (* ; - "It describes an object. Read that, and perhaps some description of the charlooks to go with it.") - (SETQ PC - (create PIECE - PFILE _ TEXT - PFPOS _ CURFILECH# - PLEN _ PCLEN - PREVPIECE _ OLDPC - PPARALOOKS _ OLDPARALOOKS)) - (COND - (OLDPC (* ; - "If there's a prior piece, hook this one on the chain.") - (replace (PIECE NEXTPIECE) of OLDPC with PC))) - (TEDIT.GET.OBJECT1 TEXTSTREAM PC TEXT CURFILECH#) - (add CURFILECH# (fetch (PIECE PLEN) of PC)) - [COND - ((NOT (ZEROP (\BIN TEXT))) (* ; - "There are new character looks for this object. Read them in.") - (\DWIN TEXT) - (\WIN TEXT) (* ; - "Skip over the piece-type code we know has to be here.") - (\TEDIT.GET.CHARLOOKS1 PC TEXT)) - (T (* ; - "No new looks; steal them from the prior piece.") - (replace (PIECE PLOOKS) of PC - with (OR (AND OLDPC (fetch (PIECE PLOOKS) of OLDPC)) - DEFAULTLOOKS] - (replace (PIECE PLEN) of PC with 1) - (* ; - "OBJECTs are officially one character long.") - ) - (SHOULDNT "Impossible piece-type code in BUILD.PCTB")) - (COND - (PC (* ; - "If we created a piece, save it in the table.") - [COND - ((SETQ EXLOOK (for LOOK in EXISTINGCHARLOOKS - thereis (EQCLOOKS (fetch (PIECE PLOOKS) - of PC) - LOOK))) - (* ; - "These charlooks are a duplicate of pre-existing ones. Re-use the old one.") - (replace (PIECE PLOOKS) of PC with EXLOOK)) - (T (push EXISTINGCHARLOOKS (fetch (PIECE PLOOKS) of PC] - [COND - ((SETQ EXLOOK (for LOOK in EXISTINGFMTSPECS - thereis (EQFMTSPEC (fetch (PIECE PPARALOOKS) - of PC) - LOOK))) - (* ; - "These paralooks are a duplicate of pre-existing ones. Re-use the old one.") - (replace (PIECE PPARALOOKS) of PC with EXLOOK)) - (T (push EXISTINGFMTSPECS (fetch (PIECE PPARALOOKS) of - PC] - (INSERT-BRT (CREATEPCNODE CURCH# PC) - PCTB) - (add CURCH# (fetch (PIECE PLEN) of PC)) - (SETQ OLDPC PC))) finally (INSERT-BRT (CREATEPCNODE CURCH# 'LASTPIECE) - PCTB)) - (RETURN PCTB]) - -(TEDIT.GET.PAGEFRAMES1 - [LAMBDA (FILE) (* jds " 1-Feb-85 14:55") - - (* Read a bunch of page frames from the file, and return it.) - - (TEDIT.PARSE.PAGEFRAMES1 (READ FILE]) - -(\TEDIT.GET.CHARLOOKS1 - [LAMBDA (PC FILE) (* ; "Edited 30-May-91 20:26 by jds") - (* Read a description of PC's - CHARLOOKS from FILE.) - (PROG (FONT STR NAME NAMELEN SIZE SUPER SUB PROPS STYLESTR USERSTR (LOOKS (create CHARLOOKS)) - ) - (replace (PIECE PLOOKS) of PC with LOOKS) - (SETQ NAME (\ARBIN FILE)) (* The font name) - (SETQ SIZE (\SMALLPIN FILE)) (* Size of the type, in points) - (SETQ SUPER (\SMALLPIN FILE)) (* Superscripting distance) - (SETQ SUB (\SMALLPIN FILE)) (* former Subscripting distance) - (OR (ZEROP SUB) - (SETQ SUPER (IMINUS SUB))) - - (* If this is an old file, it'll have a subscript value not zero. - Let those past and do the right thing.) - - (COND - ((NOT (ZEROP (\BIN FILE))) (* This text is NEW. - Mark it so.) - (replace (PIECE PNEW) of PC with T))) - [COND - ((NOT (ZEROP (\BIN FILE))) (* There is style or user - information to be read) - (replace (CHARLOOKS CLSTYLE) of LOOKS with (OR (\ARBIN FILE) - 0)) - (replace (CHARLOOKS CLUSERINFO) of LOOKS with (\ARBIN FILE] - (SETQ PROPS (\SMALLPIN FILE)) - (with CHARLOOKS LOOKS [SETQ CLBOLD (NOT (ZEROP (LOGAND 512 PROPS] - [SETQ CLITAL (NOT (ZEROP (LOGAND 256 PROPS] - [SETQ CLULINE (NOT (ZEROP (LOGAND 128 PROPS] - [SETQ CLOLINE (NOT (ZEROP (LOGAND 64 PROPS] - [SETQ CLSTRIKE (NOT (ZEROP (LOGAND 32 PROPS] - [SETQ CLSMALLCAP (NOT (ZEROP (LOGAND 16 PROPS] - [SETQ CLPROTECTED (NOT (ZEROP (LOGAND 8 PROPS] - [SETQ CLINVISIBLE (NOT (ZEROP (LOGAND 4 PROPS] - [SETQ CLSELHERE (NOT (ZEROP (LOGAND 2 PROPS] - [SETQ CLCANCOPY (NOT (ZEROP (LOGAND 1 PROPS] - (SETQ CLSIZE SIZE) - (SETQ CLOFFSET SUPER)) - (replace (CHARLOOKS CLFONT) of LOOKS - with (COND - ((LISTP NAME) (* This was a font class. - Restore it.) - (FONTCLASS (pop NAME) - NAME)) - ((AND NAME (NOT (ZEROP SIZE))) - (FONTCREATE NAME SIZE (COND - ((AND (fetch (CHARLOOKS CLBOLD) of LOOKS) - (fetch (CHARLOOKS CLITAL) of LOOKS)) - 'BOLDITALIC) - ((fetch (CHARLOOKS CLBOLD) of LOOKS) - 'BOLD) - ((fetch (CHARLOOKS CLITAL) of LOOKS) - 'ITALIC]) - -(\TEDIT.GET.PARALOOKS1 - [LAMBDA (FILE) (* ; "Edited 30-May-91 20:34 by jds") - (* Read a paragraph format spec from - the FILE, and return it for later - use.) - (PROG ((LOOKS (create FMTSPEC)) - TABFLG DEFAULTTAB TABCOUNT TABS TABSPEC) - (replace (FMTSPEC 1STLEFTMAR) of LOOKS with (\SMALLPIN FILE)) - (* Left margin for the first line of - the paragraph) - (replace (FMTSPEC LEFTMAR) of LOOKS with (\SMALLPIN FILE)) - (* Left margin for the rest of the - paragraph) - (replace (FMTSPEC RIGHTMAR) of LOOKS with (\SMALLPIN FILE)) - (* Right margin for the paragraph) - (replace (FMTSPEC LEADBEFORE) of LOOKS with (\SMALLPIN FILE)) - (* Leading before the paragraph) - (replace (FMTSPEC LEADAFTER) of LOOKS with (\SMALLPIN FILE)) - (* Lead after the paragraph) - (replace (FMTSPEC LINELEAD) of LOOKS with (\SMALLPIN FILE)) - (* inter-line leading) - (replace (FMTSPEC TABSPEC) of LOOKS with (SETQ TABSPEC (CONS NIL NIL))) - (* Will be tab specs) - (SETQ TABFLG (\BIN FILE)) - (replace (FMTSPEC QUAD) of LOOKS with (SELECTC (\BIN FILE) - (1 'LEFT) - (2 'RIGHT) - (3 'CENTERED) - (4 'JUSTIFIED) - (SHOULDNT))) - (COND - ((NOT (ZEROP (LOGAND TABFLG 1))) (* There are tabs to read) - (SETQ DEFAULTTAB (\SMALLPIN FILE)) - (SETQ TABCOUNT (\BIN FILE)) - [SETQ TABS (for TAB# from 1 to TABCOUNT - collect (create TAB - TABX _ (\SMALLPIN FILE) - TABKIND _ (SELECTQ (\BIN FILE) - (0 'LEFT) - (1 'RIGHT) - (2 'CENTERED) - (3 'DECIMAL) - (SHOULDNT] - (OR (ZEROP DEFAULTTAB) - (RPLACA TABSPEC DEFAULTTAB)) - (RPLACD TABSPEC TABS))) - [COND - ((NOT (ZEROP (LOGAND TABFLG 2))) (* There are other paragraph - parameters to be read.) - (replace (FMTSPEC FMTSPECIALX) of LOOKS with (\SMALLPIN FILE)) - (* Special X location on page for - this paragraph) - (replace (FMTSPEC FMTSPECIALY) of LOOKS with (\SMALLPIN FILE)) - (replace (FMTSPEC FMTUSERINFO) of LOOKS with (\ARBIN FILE)) - (replace (FMTSPEC FMTPARATYPE) of LOOKS with (\ATMIN FILE)) - (replace (FMTSPEC FMTPARASUBTYPE) of LOOKS with (\ATMIN FILE)) - (replace (FMTSPEC FMTSTYLE) of LOOKS with (\ARBIN FILE)) - (replace (FMTSPEC FMTCHARSTYLES) of LOOKS with (\ARBIN FILE)) - (replace (FMTSPEC FMTNEWPAGEBEFORE) of LOOKS with (\ARBIN FILE)) - (replace (FMTSPEC FMTNEWPAGEAFTER) of LOOKS with (\ARBIN FILE] - (RETURN LOOKS]) - -(TEDIT.GET.OBJECT1 - [LAMBDA (STREAM PIECE FILE CURCH#) (* ; "Edited 12-Jun-90 18:17 by mitani") - (* Get an object from the file) - - (* CURCH# = fileptr within the text section of the file where the object's text - starts.) - - (PROG ((TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of STREAM)) - FILEPTRSAVE NAMELEN GETFN OBJ) - (SETQ GETFN (\ATMIN FILE)) (* The GETFN for this kind of - IMAGEOBJ) - (SETQ FILEPTRSAVE (GETFILEPTR FILE)) (* Save our file location thru the - building of the object) - (SETFILEPTR FILE CURCH#) - (SETQ OBJ (READIMAGEOBJ FILE GETFN)) - (SETFILEPTR FILE FILEPTRSAVE) - (replace (PIECE POBJ) of PIECE with OBJ) - (replace (PIECE PFILE) of PIECE with NIL) - (replace (PIECE PSTR) of PIECE with NIL) - [replace (PIECE PLOOKS) of PIECE with (COND - ((fetch (PIECE PREVPIECE) - of PIECE) - (fetch (PIECE PLOOKS) - of (fetch (PIECE PREVPIECE - ) - of PIECE))) - (T (OR (fetch (TEXTOBJ - DEFAULTCHARLOOKS - ) - of TEXTOBJ) - (\TEDIT.UNIQUIFY.CHARLOOKS - (CHARLOOKS.FROM.FONT - DEFAULTFONT) - TEXTOBJ] - (RETURN (fetch (PIECE POBJ) of PIECE]) -) - - - -(* ;; "VERSION 0 Compatibility reading functions") - -(DEFINEQ - -(TEDIT.BUILD.PCTB0 - [LAMBDA (TEXT TEXTOBJ PCCOUNT START END) (* ; - "Edited 2-May-95 14:11 by sybalsky:mv:envos") - -(* ;;; "READ OBSOLETE FORMATS OF TEDIT FILE") - - (PROG [SEL LINES PCTB PC OLDPC TYPECODE PCLEN CHLOOKSSEEN NEWPC PARALOOKSSEEN PIECEINFOCH# CACHE - TTEXTOBJ USER.CMFILE TSTREAM USERFILEFORMAT USERTEMP (CURFILECH# (OR START 0)) - (CURCH# 1) - (TEXTSTREAM (AND TEXTOBJ (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ] - (* ; - "Get the number of pieces needed (if AN formatted file), otherwise PCCOUNT will be NIL") - [SETQ DEFAULTPARALOOKS (OR DEFAULTPARALOOKS (COND - (TEXTOBJ (fetch (TEXTOBJ FMTSPEC) - of TEXTOBJ)) - (T (create FMTSPEC using - TEDIT.DEFAULT.FMTSPEC - ] - (SETQ PCTB (\MAKEPCTB NIL PCCOUNT)) - (replace (TEXTOBJ PCTB) of TEXTOBJ with PCTB) - (SETFILEPTR TEXT (IDIFFERENCE (OR END (GETEOFPTR TEXT)) - 8)) - (SETQ PIECEINFOCH# (\DWIN TEXT)) - (SETFILEPTR TEXT PIECEINFOCH#) - (bind (OLDPC _ NIL) for I from 1 to PCCOUNT as PCN from - \FirstPieceOffset - by \EltsPerPiece do (SETQ PC (create PIECE - PFILE _ TEXT - PFPOS _ CURFILECH# - PLEN _ (SETQ PCLEN (\DWIN TEXT)) - PREVPIECE _ OLDPC - PPARALOOKS _ DEFAULTPARALOOKS)) - [COND - (OLDPC (replace (PIECE NEXTPIECE) of OLDPC - with PC) - (replace (PIECE PPARALOOKS) of PC - with (fetch (PIECE PPARALOOKS) - of OLDPC] - (SETQ TYPECODE (\SMALLPIN TEXT)) - (SELECTC TYPECODE - (\PieceDescriptorLOOKS - (TEDIT.GET.CHARLOOKS0 PC TEXT) - (add CURFILECH# (fetch (PIECE PLEN) - of PC))) - (\PieceDescriptorOBJECT - (TEDIT.GET.OBJECT0 TEXTSTREAM PC TEXT CURFILECH# - ) - (add CURFILECH# (fetch (PIECE PLEN) - of PC)) - (replace (PIECE PLEN) of PC with 1) - (* ; - "Only object--can't be followed by either ot the others.") - ) - (\PieceDescriptorPARA - (AND OLDPC (replace (PIECE PPARALAST) - of OLDPC with T)) - (TEDIT.GET.PARALOOKS0 PC TEXT) - (replace (PIECE PLEN) of PC - with (\DWIN TEXT)) - (* ; - "Set this piece's length from the character looks.") - (\SMALLPIN TEXT) - (* ; - "Skip the piece-type code, since we know what's next") - (TEDIT.GET.CHARLOOKS0 PC TEXT) - (* ; "This document is 'formatted' .") - (add CURFILECH# (fetch (PIECE PLEN) - of PC)) - (AND TEXTOBJ (replace (TEXTOBJ FORMATTEDP) - of TEXTOBJ with T))) - (SHOULDNT "Impossible piece-type code in BUILD.PCTB")) - (SETQ OLDPC PC) - (\INSERTPIECE PC 'LASTPIECE TEXTOBJ) - (* INSERT-BRT (CREATEPCNODE CURCH# - PC) PCTB) - (add CURCH# (fetch (PIECE PLEN) of PC)) - finally (* INSERT-BRT (CREATEPCNODE CURCH# - (QUOTE LASTPIECE)) PCTB)) - (RETURN PCTB]) - -(TEDIT.GET.CHARLOOKS0 - [LAMBDA (PC FILE) (* ; "Edited 30-May-91 20:26 by jds") - (* Put a description of LOOKS into - FILE. LOOKS apply to characters CH1 - thru CHLIM-1) - (PROG (FONT STR NAME NAMELEN SIZE SUPER SUB PROPS STYLESTR USERSTR (LOOKS (create CHARLOOKS)) - ) - (replace (PIECE PLOOKS) of PC with LOOKS) - (SETQ NAMELEN (\SMALLPIN FILE)) (* The length of the description - which follows) - [SETQ NAME (PACK (for I from 1 to NAMELEN collect (CHARACTER (\BIN FILE] - (* The font name) - (SETQ SIZE (\SMALLPIN FILE)) (* Size of the type, in points) - (SETQ SUPER (\SMALLPIN FILE)) (* Superscripting distance) - (SETQ SUB (\SMALLPIN FILE)) (* former Subscripting distance) - (OR (ZEROP SUB) - (SETQ SUPER (IMINUS SUB))) - - (* If this is an old file, it'll have a subscript value not zero. - Let those past and do the right thing.) - - (COND - ((NOT (ZEROP (\BIN FILE))) (* This text is NEW. - Mark it so.) - (replace (PIECE PNEW) of PC with T))) - [COND - ((NOT (ZEROP (\BIN FILE))) (* There is style or user - information to be read) - (SETQ STYLESTR (\STRINGIN FILE)) - (SETQ USERSTR (\STRINGIN FILE)) - (COND - ((NOT (ZEROP (NCHARS STYLESTR))) (* There IS style info) - (replace (CHARLOOKS CLSTYLE) of LOOKS with (READ STYLESTR))) - (T (replace (CHARLOOKS CLSTYLE) of LOOKS with 0))) - (COND - ((NOT (ZEROP (NCHARS USERSTR))) (* There IS user info) - (replace (CHARLOOKS CLUSERINFO) of LOOKS with (READ USERSTR] - (SETQ PROPS (\SMALLPIN FILE)) - (with CHARLOOKS LOOKS [SETQ CLBOLD (NOT (ZEROP (LOGAND 512 PROPS] - [SETQ CLITAL (NOT (ZEROP (LOGAND 256 PROPS] - [SETQ CLULINE (NOT (ZEROP (LOGAND 128 PROPS] - [SETQ CLOLINE (NOT (ZEROP (LOGAND 64 PROPS] - [SETQ CLSTRIKE (NOT (ZEROP (LOGAND 32 PROPS] - [SETQ CLSMALLCAP (NOT (ZEROP (LOGAND 16 PROPS] - [SETQ CLPROTECTED (NOT (ZEROP (LOGAND 8 PROPS] - [SETQ CLINVISIBLE (NOT (ZEROP (LOGAND 4 PROPS] - [SETQ CLSELHERE (NOT (ZEROP (LOGAND 2 PROPS] - [SETQ CLCANCOPY (NOT (ZEROP (LOGAND 1 PROPS] - (SETQ CLSIZE SIZE) - (SETQ CLOFFSET SUPER)) - (replace (CHARLOOKS CLFONT) of LOOKS - with (AND NAME (NOT (ZEROP SIZE)) - (FONTCREATE NAME SIZE (COND - ((AND (fetch (CHARLOOKS CLBOLD) of LOOKS) - (fetch (CHARLOOKS CLITAL) of LOOKS) - ) - 'BOLDITALIC) - ((fetch (CHARLOOKS CLBOLD) of LOOKS) - 'BOLD) - ((fetch (CHARLOOKS CLITAL) of LOOKS) - 'ITALIC]) - -(TEDIT.GET.OBJECT0 - [LAMBDA (STREAM PIECE FILE CURCH#) (* ; "Edited 12-Jun-90 18:17 by mitani") - (* Get an object from the file) - - (* CURCH# = fileptr within the text section of the file where the object's text - starts.) - - (PROG ((TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of STREAM)) - FILEPTRSAVE NAMELEN GETFN OBJ) - (SETQ GETFN (\ATMIN FILE)) (* The GETFN for this kind of - IMAGEOBJ) - (SETQ FILEPTRSAVE (GETFILEPTR FILE)) (* Save our file location thru the - building of the object) - (SETFILEPTR FILE CURCH#) - (SETQ OBJ (READIMAGEOBJ FILE GETFN)) - (SETFILEPTR FILE FILEPTRSAVE) - (replace (PIECE POBJ) of PIECE with OBJ) - (replace (PIECE PFILE) of PIECE with NIL) - (replace (PIECE PSTR) of PIECE with NIL) - [replace (PIECE PLOOKS) of PIECE with (COND - ((fetch (PIECE PREVPIECE) - of PIECE) - (fetch (PIECE PLOOKS) - of (fetch (PIECE PREVPIECE - ) - of PIECE))) - (T (OR (fetch (TEXTOBJ - DEFAULTCHARLOOKS - ) - of TEXTOBJ) - (\TEDIT.UNIQUIFY.CHARLOOKS - (CHARLOOKS.FROM.FONT - DEFAULTFONT) - TEXTOBJ] - (RETURN (fetch (PIECE POBJ) of PIECE]) - -(TEDIT.GET.PARALOOKS0 - [LAMBDA (PC FILE) (* ; "Edited 30-May-91 20:34 by jds") - (* Put a description of LOOKS into - FILE. LOOKS apply to characters CH1 - thru CHLIM-1) - (PROG ((LOOKS (create FMTSPEC)) - TABFLG DEFAULTTAB TABCOUNT TABS TABSPEC) - (replace (PIECE PPARALOOKS) of PC with LOOKS) - (replace (FMTSPEC 1STLEFTMAR) of LOOKS with (\SMALLPIN FILE)) - (* Left margin for the first line of - the paragraph) - (replace (FMTSPEC LEFTMAR) of LOOKS with (\SMALLPIN FILE)) - (* Left margin for the rest of the - paragraph) - (replace (FMTSPEC RIGHTMAR) of LOOKS with (\SMALLPIN FILE)) - (* Right margin for the paragraph) - (replace (FMTSPEC LEADBEFORE) of LOOKS with (\SMALLPIN FILE)) - (* Leading before the paragraph) - (replace (FMTSPEC LEADAFTER) of LOOKS with (\SMALLPIN FILE)) - (* Lead after the paragraph) - (replace (FMTSPEC LINELEAD) of LOOKS with (\SMALLPIN FILE)) - (* inter-line leading) - (replace (FMTSPEC TABSPEC) of LOOKS with (SETQ TABSPEC (CONS NIL NIL))) - (* Will be tab specs) - (SETQ TABFLG (\BIN FILE)) - (replace (FMTSPEC QUAD) of LOOKS with (SELECTC (\BIN FILE) - (1 'LEFT) - (2 'RIGHT) - (3 'CENTERED) - (4 'JUSTIFIED) - (SHOULDNT))) - (COND - ((NOT (ZEROP TABFLG)) (* There are tabs to read) - (SETQ DEFAULTTAB (\SMALLPIN FILE)) - (SETQ TABCOUNT (\BIN FILE)) - [SETQ TABS (for TAB# from 1 to TABCOUNT - collect (create TAB - TABX _ (\SMALLPIN FILE) - TABKIND _ (SELECTQ (\BIN FILE) - (0 'LEFT) - (1 'RIGHT) - (2 'CENTERED) - (3 'DECIMAL) - (SHOULDNT] - (OR (ZEROP DEFAULTTAB) - (RPLACA TABSPEC DEFAULTTAB)) - (RPLACD TABSPEC TABS]) -) -(PUTPROPS TEDITFILE COPYRIGHT ("Venue & Xerox Corporation" 1983 1984 1985 1986 1987 1988 1989 1990 -1991 1992 1993 1994 1995)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (3089 57219 (TEDIT.BUILD.PCTB 3099 . 37241) (\TEDIT.CONVERT.FOREIGN.FORMAT 37243 . 38684 -) (TEDIT.FORMATTEDFILEP 38686 . 42550) (TEDIT.GET 42552 . 50903) (TEDIT.PARSE.PAGEFRAMES1 50905 . -52611) (\ARBIN 52613 . 53234) (\ATMIN 53236 . 53565) (\DWIN 53567 . 53845) (\STRINGIN 53847 . 54444) ( -\TEDIT.FORMATTEDP1 54446 . 56710) (\TEDIT.SET.WINDOW 56712 . 57217)) (57255 77016 (TEDIT.INCLUDE 57265 - . 68392) (TEDIT.RAW.INCLUDE 68394 . 77014)) (77050 121476 (TEDIT.PUT 77060 . 86750) (TEDIT.PUT.PCTB -86752 . 115212) (\TEDIT.PUTRESET 115214 . 115460) (TEDIT.PUT.PIECE.DESCRIPTOR 115462 . 117925) ( -\ARBOUT 117927 . 119127) (\ATMOUT 119129 . 119644) (\DWOUT 119646 . 119929) (\STRINGOUT 119931 . -120383) (\TEDIT-OPEN-FONT-FILE 120385 . 121474)) (121477 131989 (\TEDIT.GET.CHARLOOKS.LIST 121487 . -121892) (\TEDIT.GET.SINGLE.CHARLOOKS 121894 . 124939) (\TEDIT.PUT.CHARLOOKS.LIST 124941 . 126736) ( -\TEDIT.PUT.SINGLE.CHARLOOKS 126738 . 131987)) (131990 146269 (\TEDIT.GET.PARALOOKS.LIST 132000 . -132413) (\TEDIT.GET.SINGLE.PARALOOKS 132415 . 138809) (\TEDIT.PUT.PARALOOKS.LIST 138811 . 139805) ( -\TEDIT.PUT.SINGLE.PARALOOKS 139807 . 146267)) (146577 207053 (TEDIT.BUILD.PCTB2 146587 . 159943) ( -\TEDIT.GET.CHARLOOKS.LIST2 159945 . 160352) (\TEDIT.GET.SINGLE.CHARLOOKS2 160354 . 163266) ( -\TEDIT.PUT.SINGLE.PARALOOKS2 163268 . 167982) (\TEDIT.PUT.SINGLE.CHARLOOKS2 167984 . 172480) ( -\TEDIT.GET.PARALOOKS.LIST2 172482 . 172889) (\TEDIT.GET.SINGLE.PARALOOKS2 172891 . 177479) ( -TEDIT.PUT.PCTB2 177481 . 204357) (\TEDIT.PUT.CHARLOOKS.LIST2 204359 . 206156) ( -\TEDIT.PUT.PARALOOKS.LIST2 206158 . 207051)) (207130 228254 (TEDIT.BUILD.PCTB1 207140 . 217330) ( -TEDIT.GET.PAGEFRAMES1 217332 . 217587) (\TEDIT.GET.CHARLOOKS1 217589 . 221139) (\TEDIT.GET.PARALOOKS1 -221141 . 225722) (TEDIT.GET.OBJECT1 225724 . 228252)) (228314 244346 (TEDIT.BUILD.PCTB0 228324 . -234357) (TEDIT.GET.CHARLOOKS0 234359 . 238378) (TEDIT.GET.OBJECT0 238380 . 240908) ( -TEDIT.GET.PARALOOKS0 240910 . 244344))))) -STOP diff --git a/obsolete/library/new/TEDITFILE.LCOM b/obsolete/library/new/TEDITFILE.LCOM deleted file mode 100644 index 9b95e8e81d1f40193328e55d0adf7d5f9123be22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59450 zcmeIb32>a}c_!FsP!y$*a06`9G=fmSV2T1666qTaNTIuN2@N#*2XPRjM5%cI5=cOV zhNNuEacXQQ<0PASHa;X7<)I^`%CPV4nyrD6Q$t=dad1}`8yG;T>7hZd)5{zgKl8|u z-YoL^(z(8Ls?+Q0Jh%MdL+6*~=e*^MDDrEAQ)9n==hFGh51m`SG=FsI{Mk!qE7|Yg&!5%JWqbNky`A3KOY^q9a|>rKJ}`gzwmwg4c9$vx z<(a`D9qXSdl?S^g2B!NH-g)#qK0miK|A-ef+TGpV>Ft_3a|J_l`%3jCdiyf@&NrSN zCYXN9v++`yOr|&I=@ENZmNDqA;mVY^>rIA!(0l08{QJ%?KYZEaNKvgbl|52?_<@5o#jm*)cppFbtSI*v$7di(cJO!^b$sp7f(Te*dT> zr1CP%k>b<{vQs^38YY_ahE8DYrOI8y)H^gW ziQPIvC~*ii6W$>UM-E|^a~?)koV;sj`n`x{J;0*kOnKT)4~ZF*D04zW+8e42;y2|@ zO&2Gp5yGt0UL%~4us7`G5~kv?UztAW?Rd|fO_3WoBKDKFDw@49^H=E)$Z2+ zyt{R?vvuP3p^bMIH<~}X8u=oN@!!q(clKtL_>sYl9kU;}i77h@gG2oTyKZ1OQv7U@ z?JUHnYX#;$xf=PK;@Yi}Sco6471!QbWV&=V`~X6?SNDHaimop+YX1EK!qv`N|C0l2 zT?N0BgB;k{_TcL~k-qXvtj^|EU;m)A)VKQj0!nd&we!{ek4l3zzf;Qb&kH+_y}08T zQqD$d3um{V-Bv3Muyi%PUMc7T7dF@XP51nDhVbtCA*e<^X8M$N(J|)NCG%@-J?Kx! z(1xp%8$Bw_M*aN@?d|d5-GzUR$lATq_tJI_<-+FLFD{&oaCNFJwbkfY6ZSBOVzT)}EzZEk6s-^Vs<0~w2({mSIY>Cw7hT^eW^=NDCkbiV(|KhcU?=QXn%AeE_X>qEIL-$7uZPmjP`VHo&DPZiQp`nky zT?R216=w7>UE2%LwN(;?8BHZZ2jUnjVNY75whv;Lt8^XSIbH zS0k-WNBp~=@b8}ECT*_mukBuK`qifDiKc3yR#@~4?`WxZf7(B>`uZLI@o4q<>g&JE z+Wy^gB<#+qxK6cur{g=Scdz`j=BIfD|Ct|en#1|nT`Ls*cvRoEYRgJ)Zm~hCw-nv{ zLb&9Aw~X#N^qTL^;Bhm9Pt|s>eCQ_{;`4r7E>cTPF1g==gHXWPnqzNEJ6>j{f(2Et zR`5NE`|-u0#nyPrzt2DQ+S3p1ma10^pVz;#TdKXQ8J(C>iGz=+4c57Rl3G|hWTvHB zIIez9v^Hn``#)je}d z&6{f-wW8`*t_Yx+fA+!GU#gy6jV>&0+gv*p&MXO6IFZvk94V!D{R71L>6S~gWnOx>EBmMXQ%qUc^yZOZan7_;cL-MPB!U zpO+myT`N8=^IUwf59dZNK+^*l8_wdT+G$j%yO@L_d(~a^=Lkgn)4Xn@yl$iJbsMd_ zZq--;YcWUYUi0TRZXWgbzI69$=%)d}yB!E7u%8u&&tAF>sNLMP6%X+62 zHa=4+9h)f)pX?4$l2js{*peNfg~{IDq<0D!4RM~~(h1;My*)idT8SzODuH3shKGd_*WiFMgtDVDi!sE^cOU#ag z)lFuBY-4GPz-fC@UU71=coM-}-WvuEd)M>`B3Z10TAfhcZXrOD8KBjwfpo6NG?31v zg9g$dKAZ;Z&~*c8AnI=OcMT0s7RP}BCsRFn@6_OIse&LEWVkdrHC-V#olIfa*FQ7K zR1zy+ccg5;sGYzrT|YaSf5X~IkVx)nN~SRuHOwR^pHLP~02Xb?AC_~L=*3Em7srMK z*H0!mzq(;KTay6&SD)=nA^{4Calm|g!BohgsZQeK5LwFE*rZ?7`sj+@4^&@*JuvJm6Q3<6?G$W*aKqRpBpbx1P|-^klbg zK+tv18v=wL_T^sM9^B$!4|3pQP=jI!E*C9qH_@A=*H%xIYNxVLdP^fp&{SWIIRQz#7Q6-`d3a76Svs2#(KO(a2tg9I)6fV`l+5kzDCC#QLL^B_}$792gjyngXCiD`rf+xIjX|Pk1=1rxb@vz_^dgFQh$ylU<1JVE}9#A{=>e zJ1VMp3Jj!Fq9>y$c`yPnc=Zw>2=bitJyO%)iRd8S0~5ranII013MP92eN7NxvRuSk zOVwl^3v7azvkBVHlldIDF}f^)Egd4~M~0Y7 zn6wN!t!pxqGo#Glx~K|ZUYd|Str^3)^3p(kRJnBCluKikgs+|;=hX#F$=jljOdeb{b9~SXTTTLW zNz1?~LM2A%X>ek#s@+7fzI%aQ-Z6fU*lATd3_JIEd zpa7H(k7Va;ak2u;t2R2$p zm?)%IM99ah)9e3nfbk$>8XSa`mm^(00VoDX-wYP_jweHwQ5`T`f1nA+1&0rC>BiWZ zI;VhQe8btKI!4$)2Z#eCo8Ex8njoOF2?EWp8v}1-&g;ZAQJ~af7DAW>yFZOyi_@j! zYV)z^$CXTjJaomTp1|Rjv{b!x0~-S5KsH78TZ1aORRYZpdQHE2VIY3oYQnuD@qY`iSYSNMS!!0$1qOPp(EjT3c#f`A}Jv*vYK5`N~>qe9co0 z#L&RPrewdM!kcS@;~TdJDQnsBjlDV=LvM-F+~TY22WyKfx5*G;R7H@X&h2e(8OLkf!#DB7cT{Qo5lBVY|~z4N@1)i9Cr2oLCR-BIO;kL zpk9TN5CG~Bo;n=@%ArGeq;yCqQT?t#u%lA}qgBWv3cx_si8W7CFh0mZ%>2?800Otx z6@sG-^uQEES2`##Q8f*u{Vlx@z>`H{1lZQ&X~;`(DAX54NyxwxfY;y+o|52};t|0; z1*k-z;d25sf4Vdcff@>=Jzs7Xf`q>mTOpVg7$`3qVmWVos4`<89$<&23MF3>G5FHMaM4a$pl(2IWerk(0pnr)MlTILbm{F;fWn`qyv**)#&_OQfh z{0pb*8tn^nuDzy;&9=|BEzIdE1^wGMdtld%DAgKm z8YzKEU1~eGf41v)=bBoZqN8kZceHuqHC=emxegV2;V^FWH)h-Bt{z@sAN+@2F1&a+ zQoAsRn>yRk+PZB_L>2$XZdK>Pi!qZaYcRW?E3tHdb>q?5IAiMXV*KXXVtl)bT!`;f z0nR5L*Ck%WP!|aj^vF6``vOx{_iB~BhN=6)si#r%%~Dh^vu(4&)sJU%uWguS=Z^7> zj+JEdm&Tr3_|37V=f~nk3$6mXnI?aA;inRPUa?WHM*J8~jNc+sOh^^q&8Hd!E-ph^ z-`X6QW*Unk8skr%EDjEWqG*6ybpwRrQ514RR{_s*yf}Gs*2{sK9`B!-p7tx<#I}Y@ zLuE9R=xvai1#G4I39qDF*sM@uz`A*9yY;Qj0;uU;)KI$>1jq&qDu1$cSE*7gYuwKi z&?ty%$0UN1IR!@5ETK%6d^C?Eu7t4>U7<_AY+rvzn!naL@C(o3W9>63#% z`^v?W7H7)g86m739GV)KEKOjay&Rq|s4-waK}p{=f5jsQcj96E;w5A}o6m!y8a#^$z1QaPll2%hArD24eEWmUphC`zZ+RAB= z^g)TVL$IZL+`3`%)9pSTLQKg$HUmpzLuDP(*a9aRRC^Fhg$9tq0GvEa~yz2 zh22;i@Fz7K>DnuROTo_y-IDDXhc1Vft;%!Hadfhvxxq7xZC*dD@bvQM^eWPPq8zqGWS^Jd4TAOzH z?W+IQrWU_rV?;&yw3L++$L=yniN6trkN>gEnuz{EY3-2exLcA~e5twgjur+sKfe%@ z`s`}uJB|DCgMJp~L|J6_?EcnUTUn8v@SmkWOHV(dds9D$nQQy3t=!G)xbHnd-)4?0?+Qlzn$(wPd;xR?rAz7@x{|pJI5VVN$?s0P7&k;!TT7<_RBdUr zH#}1=%VU=U6t5#mL0?crqv>LBeeESs$apFp(6%XX#7w*3CI{^%!Ht9d7^RC~uLwEKc4l(_|XY%+@qp3u_&;mB#C~r7S>N5f2KUzJR6yIp?ey zM!IFmG1~f;QqHcXocDrqzb$0}@)Yz0)8Ff-Iv^N~p!w`-qp|u*Nry>6d4w$sShl4s z1OX=BVV#TAOi_zq?3)74F1sXNuLztW$+SS9+>ZL~b*_jUqpNFY%d zj~AD(fcg0FMM=lIr`VBKmf2XJ2jy98NM{9wE}wZHlxZKCzjB9qKp#L6wtDfA_n&!$ zj7WVgAm|x__}9o-HTMyRGlv61sVmeK3E&|L=Fvtl?-5Z#5)egQO`xz87cEhOU6AX< zN6A)UG1di_>wjyFM53(|+e8)Z6NOlzsSt&F+zDRy%})Z7okrl6xe+S#sH|t^MnSOX z$g^`}@olx%!VVqZxcvg~Z2-ph_LYt~;Mat-1T~-pc8o8yS6e zp_6u!;I*}|Q@60r~rn&%aeUlIFXLa94{q_UZ4pn>~xgQV$U2lPtayEFSu|{=^4`G*v0#gIU@(@l$5-^1e zI5~6|F*TrVloHqk&Fuz;FS`TAh0Wq|0ydxMPJl%MSwgl4+|}Y_Kcwec!8j@Uu)srQ z|EQwsa={|QQF6hys4KO$HjRLZ^vfeRG(RQ~ecdaJZ~?iA{5^SE2TFVxYB7Rs+-QXv zzn5yw(XBr^%blTpDg4hZA}WniXJDV1fEq8uQ*z!fLB#pT$I<~gVzKtb#WKe&cJ z_;)Q9VI@=1E{@(p;GUQvKxk+aiClvtQ@5Yv+i>}c8}Y_l%E_JN#vbJKA7gZVA7&qI z9vgjaJzg3sFo~~vZEW$SdshBKiQ5WJ{6v||F41X*NRV3#rDmvPP=`e;zJRq{ESLQO zHTr{gHtLF4Mi1o2dRk!F6{n^k%@~x~RfOF(C3{IKiMkU6GG>Z;0l&~J6I42;XQQo& zXmM%Bt6yA*74Yk51^)5Y75LWHq`T)Xe(;%>FKm9crjBG)DdI)ka0u>&c@NMx0Gk3N!TzB# zH8DW-dtiD}iq{@VNP#JYD0eBPcc|hEs)Y=6$Av~nVOpvp9w(()ulSl&ai1y<58*^L zQf-$8T(}thpWYFP+#t8%Y(!KTueP`Tphbv;7y7_HC*mLdir~gC#KFq@ec4y7jU6>Q))c~q10;o?OTH#k!Mf7(M zkID;unBr4<_MB~DMG;JrvA$c$9a!j5H5N@xeM=D!aZX|LGb*zEW9s+jdrPt~_eth@ z`?%ln>RP-qUhrd_*YlhTl^0V++EBRr6J&($Wx)>WRYm zoZoUy09(PVwBLd@uneGu)PKQ(jiNB{2sMN@0E2PAWmGZoWbpE5Jifh#^lLy}Bn}nj zohozz2#h4Lt9aZA?^WT2_&(G4+PmbG)%1RiC}yUf2bshRo9D6g;1i$c_|zB|$tHgA z_3>-yUJWveA;0wRuF0nVj(h6JaWn*tOHJi~Hk<;mn3(`pIWXeo0M{F_)pCIjP-C`Q zj!Jrl4MzP3!`aJ$hEY&sW?~RR+-`8bXi1Z$CKtGWB_%t^1o)7{0L?%hK@Z1>C#QX_ zaDhhg@CYxC7?x%k>gR)s5@_A%43cOJu@BQdWJFGsOInvFO?KwM$g~eAlLiL-MxCaB z))?qW)>2q93R5Lp9cyaF6-bFvAVXP2L&p^OY?<4@c6P|dvYa(De5GHrwbkxn$Xcr5QG6Sw(>EgMihv(+Ox(;TM zab}SLr!nA1re$ZEk>*tIW*U6kU>Iq%=Ei{elTn-o1Hnm_`=uLmn44r~ zm<3Halxqt3xlMP7Uvf7b!7KU@&AJr0hng7y7PzTM-Z@@a(Gi9YrQud+6(GFu{){ka zsL$o97olu0az`AD8oFs53y;E)&WWY@GneOKyt%xLpDPPc(pfqKB^~JFNX+0M_n*IX z8R|Bqe;N_a5EFOaW46j6w6mFApq|e>IPXDahppdFWgk%2OUq~GNM0MVd9pZbZCnk? z3ZPSO7zwg$3l4+{j!;cOa2SX+8BvCGxPQGa7L?am5E!}!4Z;z$cn~?b3SA;|Nnt`j zuv}C~c(x~m65!=Fcn|O^_6iWvtA^_MZdbYDY8x8vetieV}EPYj)B&uo8%R|+OF|{yEi)QvuIvnzR7pT@2-uuerHcf za1EkUpCukeOi5`=2+H+kR*97qBICEM%?g7QSki%7@wbc2YfF~IcT5r_XxtWvBTfP zp;bGS`Oo?xzuiCl>e_qe`1|ihe2;yBQ{a0ru<&$?Xh>VO6oFazT^l$0F<8hw3*)mf z!Atx@8{K}}#(o*mWAb<9U3OYENzkKZ#h0IhQA}BCD!aM`ShLI~I4~j9zdbi@4ed@N zk^i_J&(Bq8I@8h`dzathTCud$Td{Ns-m8pOs{6pD_B;K3euwWVR7=*!-|O!Krli)Y z?GHvuD7DYut57A`PWj`v16N`ekR_F{FTPU(K$YZIVM;-8uLOZ7>897-C2WXVNhVh- zX*5Z4g--hzkS1V zAcrjS1Nhev`2n*ug#1_`YaJRxHF3P=R)sqQ2w^mxp#y5MA8R}l;2C7-+L)s&O)b%o zsyY=!H7Y^&Bf8Tz3u%ZZ9ZV$+WXs8fAW@+bZwkdt^Souc5RIRj5(fEw$;V{SJJNCOa7 zWiz4CI1ShA3rQpeG`D&7vVtb5w>AqU`QR<1Y*ryAKrEePU}+jLf!>gl4z9El!?|-} zp!S^@Rc`|nM$VHOK*rIp&RC`B4CbmaNM+z1sLleb+M+v4`G|VGi7(V?C8w}LX6h;M z>jFH5%yyFl1^FNh{8BXs7W^F^q}`?z*hj%MAQz>sFt$)sg@J|CAql3Iv-W|0mY@jG z9n@FSeW1^sS)$Ji(aXKK>|LH;nm>1iYP*-`uh7hYZ4GxM2a6I0CinEpMtvnJZY)9djGRhvC=Xy+m|Rq-$fDZz>O zVfhuX{nW9L2Gp@Y0g5dERHw*dROdPbnp3#l{;`%4Wt1~RIO8? zUs-60I)(7=by5nNZsu~iWD?Z{K%GLL+5>r_M}u}mG!Kf}1x4Us&m0+`BNyB!?lpyx zN=pYAw;F#-A2l)#6$K5=lCJ#+xsD2XOA=)S ztu1oGq$8(8O(jwTOgl9>Q=z_mHzrJj9T;nEnV}JKcvuI~O`;Mx#Ynv4kbnv)z)MSG zxlVBa11mgW_%qX2;5tQN-VkRcy{;}1D)IIoJV+NPIst+Vs5c=AGLiZuAkv{~yKv>Y zU|>Y`gCS@uQ*XQr^s}J9UFIm@=0UVIGjtID8Tr_Z)vLhhwjlWE$7vBbHsCpdgCugx zpqGzSN7b8A*nEggjcTm#Ay=E=SyU(y3{C(uw(31#>wjFd0|-q%E+N4L34RDtzAZ5UI!d3T z+O{PnJ`VW+D27`UGTA+D0OnG&-=;Mv*8ghuQ0uL`33Zsue^wcy5@od7;m6k>k-BS_ zlv?(VW3X7izcm(D4NEO>B=@Zy^E=kYebJM=+OpoOLU57M(d2hTK^h3&uJfhwnu?5* zHjrv`e4z{MSo!8|y96@1YCF*J1+EDHsiZy7arE2kbR7M5p+)xAe9?y0M)aYG3_VaS zmFPlz+Xz>J|1QjtM;c<1Vkr;krBpwMtDb%|w)q|_sf8T}{LbJeXvpZW_h>4-Rb7!t zXoFNBks)=(w85=ib;WdG-5Y)<0`_8K6g~xPnQ%v)NUg3&g>(HZIJV(Lg$x{_9!LoH zO`;u#@t6dn7czGQ>H`}F7}|iF2Y6Yp4Vj2#9UM5OoN{(IN7$#L_MW0!)X1 z?yC^&@omQ>E6f{6R$85LOcK@A`BuX572u0lktfwH^d6N`2qB&2%*7?)`YGd~X=wJ&p8O6dtl*Km2 z*vD-3yG7of@xq0hgo4AxY3k=;h4tG+OITxip*>oGu(d}J4@X!P5d1A$Udiq-8%uJk z6g->LlQW{_gud`-Iwm>fc9{VKp}|X~eOU=+ti$rO7)u`#ay+P-8-_zgn-O_DC$Oaq zK?y}aemEI?dr1Z32dJNY3elHXBJ!!!*cNb{GVZ1Fxkcs2slZ%A=_DHWU8#CcTgi~8 zE%MRu7}|vqS>x0Y+c8x;q#k@)K|`Rk2)>$m z1Nh4)>ui+erD4U8TD(@>SM^jY(`)Viet9VO>jXYdR3vz|;ESrhNNB$C|tSJGo-MHOj0>}qOr?OvQJ zr>C{?H=W2Y`<-8K4grqEGr9$LDoFlPut_+*P(67IXWKmncFs6NJQ1liy(lu9wSnT& z>vDdJ`kcer*UBMhzU#Nz5?e|(bFcNVqt*C^UP@rXdvLtI=Ctz3)utUPs@8eY-_tsE zyFWPhLX<{}7r4+X_w(<1T$L+mKVWfU#&NSr+c;L;kQ0`T3`8$U-n1; z;(L+b68R)0{{ToFAlL}TA3Y<{9;3Q>KQpQQ@Q%QaOYsVK>W~3pt4*SP`Xg6yA zSP)$Lpw3@ z#n^zJQ7cm+e73fm4g5|s((@ROqjb;%`pTJH5BT27$f}1fc8pW39x_%iS}V?gvlB4n zLn%2DP~jA?$3rxf=$fdd$O6N@?KW{;b%ea5BbAx)e(0b>K%KA|><%edR#Vg;9tLv= zX+Rglon=6w=w+sm-voiUn!2HGXai+3R5xjEd9ckiQ3&@yFFbWA6d#4AoZd1n`sC3& zGdaXPFa~wi9pZ<8pSco zgM8l(E0m-CdnN37I>Ir-e+4|$3VNPQKusnv6z>H^XKl#osl}X`JZ&=EwaHUxC&S8v z*wRbFzPC7J%iAlJ$JPgZ^?*3CeNopSpm4NTHW3U4slg4%1rovr)6Ib(QUj`=Ep08G zp#~Q+%h@#QDf@;!WvO5#)wc8mqAHkbhRy5SCnlEeN@l25Dl3@*8LUG%=sINK4Ha25 zxN#(ooPRKnG`P17=aJ?nG?<_|AZe`r^>b4=sEuctf;7#kXUCyhO+lb}oqCYu2CG9! zq;YjeiI#40xI8m8(meyi^`XIT?bSeJZB`fn#e3tY4t#~iT_v$1SZxcK!?IMmDGb!p zggK*CcntSN)1@$dCuk?-Y{)`b3gjKDL%?*Khhky|rP=~GcT{%rU>O+R3tV(rG7~&& z)X{8`9?LsP<^a-lY7VnBL3E~r)Qr->bkG7NiYAp@3FV(D4f@^$gKFfj=~N1MOfaYx zuyVw2pDvKZOKO7PUYKCeZXy@3nUV<+tmqX>aJS zRch8r%?2t|Ft;#^lEDp9Wy!Zwp)^$FbjY<=0)#R>(BGF0TalOXcVT>cgw5ds1|Xfm znc8rX7KHJ{*mTU+u;6fB#Bmh(cgk@TM&*iwX_9Tq;#pL%#0(|?&Ddw#Jf15xL+iD} z;nm?@>gKQ{iVq}nR3}6v&b;UW`$u?S=KNgOG{tldzMpk%1Q@A=fK~^eVzdKF^5jKe zA*J;2$yg~w$zc$z5u;bqHcEKVo-u5L>-=eHK7gk(O?b(IQmry4*FC`nnz&;jrwKml zOLPDNLFh;lzt#$cnEW>KJ%FmFy^*0ZIy2TMupT0QX*AxbG#7Pl2fptAJbJ!OkykChFIEgYr&sZWy%pgQ!=nxc`Teb;g>oW*HU?-$jJ750*Z#tgk2awWm5Q_m)$>XE=f z7}$f2Gt_p%)F`wX;3#s|#c988*7R~6EfhEAFNh-$JJFGnp6Kr4!sf=^LUFW;3DU++ zO!jGIBHXr7xKM2EzoGP<9q=;rLgdEhO5cgT5b>z~eQ#}K@!E;*^PmK6ITpuE2w zO1T<&e!K*pz;kY@VFOzpu{)mM@@Qoo+w;-N_;;Tj9eM5Rg)yNRVMO-K%3sP3 z0Ts{_$CF_2b(gGw3Y19}q5@(v6W3@xr98&s%F=}_j|Y5ehF|so z;X5@m0m2mE6JoOxz^34IRR7Sz4D1>m0U{YPDQO5YQ_;aj5-gty&vjAQn-eMYr%)Ou zj~db&xE}q+yRk&4u|K!WU4X`A>vwj_qQK?AR@1lEFYc90d<|o3CV2l161$Wxt5gF# zkMD5eG~nH0Mp`|rO8AE_?ufi{5|?jhi7-!$Mi(}Xy$rIqMP9l4!sfpi1^5@INnc$2 z@P!w*Yjs@YM1BH`h;6S_<17(piFnXPFplUe)jce+hb2S_S=xx&by$3*x|ap^ zvcO*3MAUS0z*r{vT{s_VaXROkKiA}UMyv9jlaI*~S;Jwd+_K_^8BTm8o7POwBaH)P}!ZcViVSpnOPLq$K)5Yk=g!vljaEfl_ zO_=-}69#fW3gvoIp9rc(s{q>YzO*6RKcAEK7zX-T?(4vd{u^Vn73&Sg0O-QwMn&Fz}ohUaTNS z5xx@>nY8II4I(7SOJUQT7?1%cMpmL7XOi;uAcmE5VjwMo7+;h)yOeq6CF9qBa#d7*X3^h;$P zD)k2OWwJ}>EL+omz!anMaEOc)kZx1gHdjsma{z0Ys4WhyXr&{7yxW(U5f#FqhL2!gX;bl~>abu&BI?eB%g zsK1JG^XGMun;R6-Svx<47w^Ltq>~r6qmM7)i8FD6&@bUhvvGjYFI{X3;=uc#T>7xh zPB2<9(I`qkx#XGXc8SJpRO;@qQK`GlL@8x^aw%$~D9jh+e-HkHLkw8d#_iHUa2z*l zC;K<@@;%CExDZH83Pxa3cu=H>M0PV^=R0sc1JqWZR6rRWB1Il>$}(`%9)L(ML)fX# zw&ho*EWeV*l=^T3HW0>&RD=Lrg#vayS#BoZAs?w_rOVp3$nKWvxPdAFK*u+Scpbmc zN8c0d2y8E#Oq5)=4}P9~p=K)JPD1`*sV&Mt)O?(20#v18UuOZBXi7P;FrY=ZP9A!5 zVxrCy0AV+;&YLQYNiCoy&&P>{z%D<);pBm=3}V!&c4DEY1D_9Z^T6P7N`mtn#2_;f zoEU7O;o^9yd=eU9!4g6N))sYPI&t_q)^CVr2zXKs1IIv@=2cZs;Vapf-0?0i+sz@&f;M^UXftM77z}_nM^YKCioU>xT_Q?YVFTzNK z%3rbHXd=P&k+ShX8uFyU;qqMwhR6k%S^(*+sf9+1(_DgMlIUqbyj$QKj2w))QoNi@qZDSeq15bi2mi)IX{mN zI!wb4B8HI#XLYZ(-Y!$q_n#LS`|Lm9S;7?4gr%Hhb^GECoQ(huO9U1rQk-)_fz zqci4qd?wKE+=%l_fYnYaWbA{!!M@ekFZ%lrfXG{U)%R%Nh)+*_!xB1Q_S-5@4sP>f z@2-t6fxKv^-b<6`w{y;7DuQV1_11fD?Rq)wI)`{te2*LHa3lNNNShmpyAjWgbUKkw zkW6fkI4SY{>MLwxgUz)WDxkEA%C}|AG%IDDBySO zvK#VZ?`&m2dCOeJJ7PaImB;;e-aCp3G_BAB?!A-KL)!~QMf89pZtz+#GT| zbPgbnn?r$@%E?j2s)G;?m>~KvLBM4bqjC0V7MFy$}@9i)w%E|3KfH*`^kIt!YP z;+HL~zFG zZo_!3Y?#lFZZik8z=rYmnQ#_Zf(?^g)#bAwZcLau(t|z>Ed~dN2H>L?j&6Z&s1%q( z@B<8RVgZJaN>ZkR8FZrJR(IOePJ>Fe_0kZL3~#iZ>;Hs z;u=+&*pn&^by_o0TJhO1DQrC(8V}hp_*^FJ6n9EHg@qu~r7bz;<AS9hJ6H@YL;1Uq4DLjPuM>33ZyfL}gd>=ebDRPfyJP+*&kx`mNiadXB z#gZB06-#6&!YqoXs@memYzZHcx-#3|kXTXeY_IOERrmONgLV+9Yi9>6a;o4-1!WMa zD|0hm)G9PDgEEMiGODYVrjt4ly;}!9Q~KiQrwU8WA1!EgVLkVlavks~e4Zh%f}e)3 zv6aIr{8gLOyz=f)(x+-m+kUe~6h&T|CrfK1rM2CKk{wln;-=pYEq6^As!OlGYMm<7 z3X;SoYNJ${Zu&z#uDzt4yK2<~ewS_1N5o827i(v+!?o%m|8P(Yk-B1g)Fl!^yTb|Z zbHYk7TrHRQhSyzqP8nfLs`MAyLGCVWI+^>Ou;};d1`avt;v!$Ct4{c|kGy;_>!%DjfW1qMG9x=hqPcGdkC@E*N8!D36t=E@Ve>4dk129(;tM0SfV>vhv&4CEDVXAqVbkfr%Oj)D}<5e@^ ztVTG5gm&n1`BbGY&rh4#@)RB#lAGF*CajsQ(hm5Inyw}rSjI@RcpYMED$P>)v`GWZ zqZ1o`IL{&;%4$i{gID<~m`| ziRqBt%_OlaRgRnu2@zG20I@U)*b#6CBn1Fn1%OqkfasZuz-W3Bcog-3!Z=ADJoGx8 zBoEZU#YytuWji=Y4>r)?Bt2x<8Z4s+Cq!WxJ$T6k%gAAJ25ZPU2tp1BiA~33Z5Y!v z;Vks7Y#2LW!wwFY1 zKsay|9DEKTWtbJbfAt=ZsA*B326Wdj(=j)4)3M1m1->De0t^H8Q8dj0mOU{*8)Qt9 zX~y`BDey~yADm348pAcs*Dz5yaXbOWJX8hr3J^tsAZO?V`(!w2OIQvPlM^Dmh0e+Z zVgLyAP|q7;ksfTcHU(vY9w`vGu*cPMz9a@PB5FkMWl?bEv}qY`kZ9-73!AoO!*tCQ zwS67V5X9rkMw|>WSu34K`!$7=VKCqciK|sHWYfzBJua>ymPk3d#Ola*c(8f^;xuJb zDp6V#PwdUw*rBr-nKFmwd;v{u7A?A=@q-LXwu_ULeQ>W7=ZUO+qsc|i8pCj40T875 zQFfM01t3veDzZcmdd+`&C>q&50MuczIQOU^1>LQ$wYIKw%ua8#LUZOco;d#FQ+IB9 zXk*9haX!;$Z-z1vi!b17XAAwzy;tys@pz;#82%!>knGiVNElhHe{pttDcTyp)xXp4 zd+q6+B(siP=S%H{2Y>WZwXhofU-+f=Gcp2crNM{V6IxPm9O9n+ z{-At6T~)97ck)B+cdkZ%zlk;`34hpE;vat)>>3!53`VPi_)t4Wfe*ExRSl_rwtlBQ zrTaO7es1?i8}`%HM5C1y3{)y2X7V9t5<8b@b<}*Pz5fZnpDV1t)1KnuRgZ?h)2^rA zbPYp;5Mj0H7s6j^SF_-k+S{a`Ilo`N)P9uirZTOuE5L6DW1>shOFzT}SKTNT8Cy zM+;O>;FzixOh1)Q!x0lQs?~X`Zk-3?Pv>HpRj3E(NSy~Pl1M5uXLX9{wN$6s=5l!Z zbeh%P&S6z`8ss`U1TYGK1?eKxr1A?&HVlHs zgz0|GhUKzoRcD}zCOwJa*f20k69y?`f><#Vl%Y^b+Nfb03>9}1!`3my^`m%8*CT$~ z3k<2V^x#9wmoLjFbmhyt>La}8mf=nH{6#OoKLe&8&Pttnpv6spcKU%hcp-&KeyC-O zibOCjg=8uP3A)O#3W7L#T0amsMbrbK@u#%|wIGxtyg)Y)&drr-Af1d(63rChC;|<% z|9K7acBnMS!He1?@hgb{3;{A2ri9TBw@#w04l`DEP&w z;MY(!&Fc8YsN+ZZ(^C{aJ*I?DqTXiJ{9@3Nc%|CGA{{K!!MUj-M$aw=O~2|sme|J< z`+^ci1uh0C`M)wr8=pIvAbgD!!4(R)Ju|yY3blGui55@t3+#!}Y#1e;W39IiHgOu_x z3mj&F!$ASv$+%JXs~By+vAO2Qo1kSxTw>*(r%#Rpm6(EB@s3=os<*bfRb zMyIDpvYIed-b@%)s6iNXt4W8OW^$nLkr9As9U>n`(g4hI;1U=;JUpiM)$(#ErF8c& zS|=GazN5QG0aB2e#k1nXFdZirQozXK#R~E=&~Ey=ed z$fMz%69ezeiIE3l>%oxBjR8S&@<VP$y}pu}uD=bR8>+(bSimwy z#IlSP&wD%k0$1byo}dgOb!B$oJ4DsJetS>`k-9QB!>I#2lu3DN-=s?s6 zDn2vv#nMktK2dsdWGy$cw!1K5M^zZXnCj#cfzn^CB+`g&di_KiaiCV+?;o%Yz{383 znU*dl(uhN~YL|Z~D27N~vA0zku@IwNU{Aq6+yvc1*uP#&fssAtnb@tQCdA#4~gj19YDbPUR*^P8(S4D8)u zOJgv?mQI1jvO}cux?xLW4>emF^HywW=vtcAs1abp*iIV;gg0TrcN=zC*GW9pCLOxT zCg`X>1O>35A>n=f;!6eh5L^sbXjAX%1wH_}HbD9D#i`S$>inIKHhm!~B=EQJ&oftS3 zL97nr0*dV9f!E>0Fl;9l!Ue_Iu^k!Zi$O_P`MWWf%K}fdAuKM8x4A>X>_kr&^U`{{ zC~KDpG^_2;z4RoLE#{^fNg+jDbE_k7zj2@K_l=16ppX%Gk!hi{b4BA;tKou2qSSCj zjAqnu?I$n{B8p$7h8t+xni)nW2+Aylvu%o=01vzcg z0oQCeKqbI7caRN7@K66U24hP@DZ-*dbVs6aAo`S5I1sR_0E_ujyuY#~@l1}#&cZ?C{nfbJ06o3M`zyrew!HTB>QMhW1<=#+{;FPC z3fhU~(U$|pMG-b%9P9m6^aHHK9C`spfdJ>g_5KQ`y7K;tfhdF#j8)w@+@7#qKAiZ0 zgDf;Z<&$-ap0t3TT&c`)?Ke7KYW}POOdT03l^V*RF?rZ$rKZX_|JM4II55 z`iOt%$+5KqZ&X@2bWH(TZ`|v9aQOHP7Mf9Kg`#$fqvHt7+A^34s8{s>iTBm?smrA!B11e<%IR>dZ;D?R^8I8>z?cOhVN8uuJ^${ z1YTZ$%sxMYv9=V^aR(*SFF|isdX>@a)pHgl%(Vp-6A}KxroXS=#p@_syvkr-h>1pL zP(q?~@fu#%I~px1&WCpKinUNjUrwfpRQIknAM-u2FkNlF3n#!SwYH>U*Bj&bn~w39 z{e53>wjPH8U*wcwxEqh;?_6&)a4eNC*B@si^c;xK$jW!aX{MyfOt$)R?GRtCL5b`8 za_xX#1;1PtlwH__!(crr=w!pUtLh!!UBw~$mrh9-3cXWBjc?bs)~WseQSICH{R9as zm-%;HZ@sVdadvEM^JBaZ+`4Lvj$UKB8)Z?gTUCx;gQ3A61J_#h21l<>EbQoYux3V~ zT)Y5YQqjggN=L8#;Y{P#h5law3^xYK++|5+~YX^Abx&wrx*MhncO1Wd@Pj{D%qt^~NdOh3@J#Mvfa(KSU z3+}Ay$HQ?s9Q)`Swxz1RZn2}N@nP7zG#*27C)|?IFg?B?nU0}TEmMU@N(nF6_R$RnLO}Wt^8pfv07~F zE%<4*3N^O2rOZ(qqtR|$doUVKhPhKvbOguHnOhGeKiZ8ec!D9t7Rby%K48RFizk@_ zmnH0{73=~%Ys$Ke3nS_U1b$kj+;>4~iNmrWARFJCpAPs}&Vh8XW{{rlbIv9Es%PbTd26jt+sB}}9^4Y!T#qQHP=ADN7@w<@wl)~6`$_81 z^wcDBSP-tS%s~VqK^wt^$&!y4WCTl;<#-!psK&F9V? zDlnUkPFB+Kc$x+1Q_5CJT3nhSBvd8{Mv4jIG@77O4J-luRW`bDwx9w0SzR~<0iOwi zO<{s0k(K|{6fUO@(tWcDVo6QVdIbd^+_sPao7b*D0uV#_V#6DyTx}-MgX?Rv7hHH# zz86DPjrW3&p+k<^ozZ0LrN1*7WiK@URES>5b;vGR-fFkyp|@yy$peDwlGq>>>fzUd zlm}F>+I7e(?Dg15_t>S%VO*xg9L!re%^b$1e9mDf+)3sDqE(|=Fo#UFEDj5+WpN&) zS{6{st(L*4OkuL2R1+CHKU((cG^;g84^yU2nyL!Wlqb)Ewj=C}->{O-(%4_OGd>%p zFh8ft!YSYcQaFX@AXFGDqHcV>KHiV-qZL|~=qicVP`aXOjN4TbaLSB}-&~c#xJ;@r z_BB)(OKJ`~j%Rp?7R15pMQ|MK&f5jX`ihn+xHy3tBPOi4ICx~taAbM;s05x{o%?U~ z7+t}{*7wBn+TMO!;-9%!sMJr*n7IB?(ZZa!f6ad8_SbLonyDinD6}Sxd}{qDnP#=6Y^0!FsA06dL$HwoAl0dq zrNTz)rUMOaq<+7BwoDtT#nWJT@E>W|b7k5{iNnf9Hd1eD8&#%l)GdDA&%O3^yY;pv zPU) zRsT?H>w9Q^wtJzidU)-KYT$5u=L)RZhm|4F)t%}~K#%#u8-ICzd1<2C+2szgN<0Ku!Qn@SZ`2twC3j_ zo6Uo4bel3i?wwOdC1O^Y8aK144wpL^Ap?m(0zeM{3&NtA3=a-n+^dx)*(=^ zIuw)(@Oxm)Dwp0*bqK&#hwwzI5I>WmLUgcGXLv(#x6Z^dR3W0`b;VL*6r(L`AkS0< zL*E_6Q*V$}egHeLT6%j-Yv>sF$1$yO4~Vhj(g;eRXeaW%CILx=PIPLe&o@rh)DZM~ zf~pyO+O{~@$VkRHy+-lpXKNh;MJ`I6Ij@O))?y!i6HTa)hFngk&%R7v1m{?R$E*q1N(EiXS`^k^7^kD&!V zo4+Q)$;B6Aks5O0uX+72eawAE`IuY3MJzC6D2^G9#NlMSLANof;Q!o!MjHeDlniKO zm49aTGgO?+fd&^HJ8eG$_-mdYD)|KJcUgcoo5L5!JW`IuO~$crp|1#2M%1)*`84^N zCQLTJ4$D`UOc+nDNvD#q))}Jf3KJyrS(m1Qj17Z3V#4HWin0-?@*E@q#+nAqH48G} z30t|mh9_)Sfs&kG$C`#VH%=YA)WOXL9ctwI3**s1R;NOXbwK+p} zFzJwXCE2q6)baW{t4VEB81)H3XY>+ujqmYzi53R5{ zeD8Fsc$}()0T-VRYqTaIJ=SQX&%jEef0`jZ45h#j&n5C}H#9}`x7PRKTUGr;-tLjV zC;JCTvG&V{d`|V37!ggna=b-;7vjnk1)sH$xcs?#^B43l(aNhkSKcY8!_~sZ&Kb5n z!e)SMN^T3a3?LNHR9hpdJsxxm{~f;w5MelE7hYxJ;BYm1*AQ0_l&_PECz8v_Z^umI z8>x8xMgN!bH7l)hBtYmT+Hz4o}}BtFO1 z>R4++UBXD#^%|5QZ*Mk3-dXI@$@lvEl*l;+1T!a&84q)-czKG+Fr<$NfTqEZ@{$cRRptRLZ zK3R8d^+%86V+%B9#0|IXtPGU8LymaDjt}2sFGxnxjiIlO{#fVb^NtD z?i6yR9Q+76@DUUUI@U}pYKB;+G@zOs?=zWza|8er@NsCXX@Cp$ixh~YO_&Z@5pf#s z2UJ?hiab-6(Ui&=q&^j}oIsSR8c8f{9rGy(O3ri)dd38WCH0f}X%RnyKZc){h8v_G zbATQJ-T$C0pXS^5ZDINR{$An1kma+5*>h?RHb}qZXZ+M_>s>{UFE->Aeja8-eJ~@+ zL;2p%;0k6|{>tw=0FE`xh;m{Y^bf!}y5w?>=7mWFc&dKmaO^Lmhf|gHcE_vAzfcS# z$^0i0rneXM$uYWDS?_TCt30I&%lF9M0{^L@@0Gw&3>~;MbiNXD;L=H-CUwqNwgrw; z;J~Gk^ObFZ;}ke>Y2_3G<)2IhStwXX)l< zC`U4OL0}z+FZ4X+Cs-g66lmbUMfPFr>AT^wWn(8?wmf~K_-t9&eEP1p#cNAELY@;< zL>-<}4;eL@my@H&!-N6aY?uz!bb1!R&xR>jFzG~bbyyspnJ^SOY&zY;>2%S`G+|(c z#BJ5Xq7zeqxD`GLQ{vc6@>AqNnS2m0CZA4Bff&Nt2SOZv)5eJbM42j~FT3G=FzH~s zO%w;lJiumlSR8=&exSBJ7=dP6^@P|(Jz(F66PO;Tu-I42>k%y;`vEtKwwz3G@SIr4 zdkhtBgFN~pb7Fc>%2J9NP(fZ64~!GTOYX!d+p+AY43&X{Sjg-+1Ho93mkv3I5raEh zPn_i17~lAyUfpNlFeCj4n)mLyOswF2F?hnyDMh~Q|6ipPfrka$N=qyP5qvwXvg@Qm zO)I+$iV!x=K6azv38V3tnEY-<7WDUy8f2*N9W}^M-#coMp}u$2AVYocs6j@EcUja% z+C?w0j6U!djkLwC?VI?z>SyKas<2pka%*?b6~#PzCqEYi^X#n!(6jx-(OWamrbRaJ zs=dIg_TXa%z*Ei<3jQ^@;UIfz45RI!Ip_Fc$H;27DMe6f4tHUe~Fqfyv@DJXgbYOD=N| zwRfrZy2^fWkW~)`O(T~h@wyIqciiE1;*wuEfAInDjC=#86S>0`J&^8zRpgm3zo6IS zQ2FSFqWDnht_pu)zN=c-5j+#Z-qMNaK!>(UtF@R)+r95n^k9GzXil6}N}m8GpdKL* zjNP-P%Ah~X*}C&7RR+p4gF{=Vv`f|0`Fco`#o2D1Qr{4WT4!PU!YhMJGbxx)i0^N+ zLdcpN!uZ^L>Q2B>C$_0HF%1)F&YNDHIC1$^7D#&Lk|Lu$LS=pVB=`|7soGg=kE2*( zA9iJ?;N)yE4AFTQV4zf^YB^)yVo#z^gwwEPFkG)oTfiP0_Gwc?)tFQ7Sq@#^RrdRf z<>N#u&AzduIto+Xu0v{lxGG18apFxX4;@0qQl&I4)w&whgYQt3X*u?6B zs^nK7L>X9q@S!tT&YwNMbpFaC_7vX#@Wpdi&f|1mZ=A-RL}>F9?%)k_9~=^Ua}x*g z-!Ao7@o7TlkzE^MlD*ej#rwHM1l_3(Ff9-qJX@Vs}x zJ28K0`2$#*OAjqy!s0An?1Z!ePdff&_$SLhIsWP4pFIEc;t!~VRN~M_2@gu6ry2|84QAbt0-tOKfYbdw(LG6-zH|M*fElPB*r1or* zN0Ty11vZNQsGBsc+aR!0$1R$`v5_J`iU!A%_#=gr1A+pzjTX)i6{T9B=-;L-LP7pj zpmCpfW_R!SVH<4;9Cv5top;`O=lz}y=L^$jsW3ThT7^loG|kz$vYwmOuNGLyEY%7X z%dD0|>|CXw=WBY_I@F!js|BV+CkDcVAP1;gAiY8eB?K^2{sU7>g04| zNuY{O#gkKNI>eR;)7nLwtpHK6VXrk_WL>yOBobow;x-oQovltq(^Iij=m@RxN&WV- zlj#`tF%{RQ;-FR1)?8VC_DbW0TN|6(An#-7WLi3&im{u^i|fxew%GQ@g((&ucv7!a znYW!BFIFd*V3X6E&sh`f)@I{ND;u}B1i_dV(xQ@eASW@U#HV6Phz3-a)$^2vd4nQ1I%urgDbiT_b1#px?Ll z;p$)@Fk?Ra=I{o3TI0ry{b{^(W}5e|w|-{(2mO7tB6gC84n@_Q%rBGm(&OEiIpl%JfP_pU25#q^Mg~8Lv#y;w+3` zOl64}(=?`~n4%`|)9{N=uq4J~DHcn!c$CEz7FStZWAPY^$5}kV;>ii7MOiozXIL?j zWQi0@q**e`k_tEfQvjy`P63<( zI2CXz;8bQL2wOX|Xt58H!5lzda_b5)rg7lFfQjZB>TGj*G z*Pl5Fsd#rZw>v1`0{SU*+;8s5W<+nECb9YQr$u}9{h+V2YVR-aXLl0@O?_{~x4M7l zH?q4IMf2Seo8)}|Pdl=C@@t}b_mpg&e%dx4ys{i@-v4n4OAzXgiMRThPJN`q&wSD5 zBM<+oGsEgbv-{sIHSe{4Uc!t!@7IH!mA3_H1ils+?EegZ>__|@Kl|{`nIa#3_yd}w z^K*o9|9i`C4_oawO2K0D9)Ozn>gQVj=nJbj(o)UH8PH&;FH;~zI0v#Rike~zkodXs z)j|!5tR)XX;*2FAgq(x~oG#>QCNDu;qO4+GHEL2-+-?Y=RhX`kgmz(tQn?VZxO)^# zO?$5pG&*1$5KiBD!Z2v)?}fSC$S_cf`^DaWm@^1Udcy@CwdN^s)|uhWFS5<=E79JfTqR-29mTY@YkfU z$(4>1IsXzw?nH(pZ1D2|vPVD6?K+|n_-p;!;()&={x1bO28j;+mTlYCmu=UM(Gd%A z>Pln&tsUQgK!US(@>0-77d+v7b;tK}OGvpVo3iQ2rfi;G>YsTC;GYaePYDuQ7s<|^ z<|9Ne{f1yHd2sg>e{^}YKJ*fQbR1#{tNc%VXo$vd4CStPi!yg;3k9JxQjah$oW_jQQ z5Ik*v%bxYq0(;H-u;xKSmzW3rCuZI(28;H$1ij7sdovH)50-dXS25vs zgbI?O?g59n@3!C;Ty=wYabMw}#LO5B@XET)VCB23!|)^SIv--8OCcD2$+}YEsYq8h z|KEDzBXK=JaRZ$tGYaHgOQzK|1SJ>=*S~;DvtZ@1D`>06cv%=GQgYb^^%lB+NS6h3 z;YKEye;s1xmuji^I|_8&ApKmnSA-1C8#6+MPLlF1nCivJ_# zpV0GVOFVv$-f!5_DYREQGs{kxL)c9J$jOetYX6eA;@8F~tj zAt-FVKaFU~kR7BPz`a6Y%#QC>g4}OEcVIDxR(C~5=iN1B^O67KlC96piY31-cqXXm zEMNaaVxXk#Zcxx{%n-RFF`=S~s4M=k%Mr6wEmUg4@>-nFR+$C|Q8oCSl`qv0Nx4c| zuJB^HR)#xAFTBM9V4k9L))2!u!pJKK$js{n*zy9P;Gq_#&1(dtB1Cdk8H=JTB3BdY z?4nW-DtUO7wCf&92k|QKaV}m3aoVwXDXQ{NK~sy_xmt~vgtA0Pi17y51z`^HLW_E} zT|;o_DyBw$xM0?dLIpFrUQXc(;pKfwAjpAx7?L!9sUiX`HRpVeH!F z0Bo#W8j-Lwidflw)0{yB)?GXZ&ASZ*w>@S}!|8-d8*Hud?BW{x(&F0f276}XHq0L~ z!mY+yN=i!1m3#kL`kk8K4t^2I~&kwxZjCHtPVM ztPlNY|I(2A@%q8t%X$D$fn~V$vL0yvaWAj~YTrF!2mJ6r3Y4QKL?Ay4|DDriG^xN% zJM5t{M??ys*dy#n&pe23&or_ga`5mhWP8OzF$*1!McpU`D%gVwcFze6oCBh4F?`{C zHwin8Q%IYT87~Y*26P3i@n`Js1U=rpk@08z#Ker?9b`u^{Lj#Rpu=tX!g0^?9bOZ< z?!`a|B|c)eq>>^#gTwX$qQj_Q_ay6(s5s1Vcb@8vM!YqSL}ZS-Q6%$Gp*|&wo&rXh zRjq+VU-$cbB2q`uBC~r+x7)wAJR0;1zuUg3?>Y=}`61Z_rIQ`RNkEWfe$ZAkcA&34 z8E___&jbSc?&(ZGaQJ2CNi!VL{-X@WPh|XGktZU1cRsugfz*)N3JF9sMzt0aMr1-g zu_GcokNI$VjzE#m)yrg>QFr*b05+DybiKxls6%y6?g&@mmK`wl@VUVCgf7BF9&q>bX$TAF zvZ!5_@{`9ACG6ReWbYWtat>wso7rGCM@hf5RPFP+?Uw=CFqtUNG`|A77g!1mxBjlj z>|qn|r9G+-Q*?-O80j!H2io5akHxOc+FY&RZVNfg*cgJRGQ@gpi~{8(IvoEeI*^6y zl%`+|ZVlNHrN;2dDAbs_0==uQQ>Va*I*@GV@I*DJQYc$`t}qExPaQ~cAS?1+`1mrX zfDI$U0m}jnS|VYQE5YBFb0QlTAp*e)rJpt{#cAs*wc%m(5~|2lND@at784 z$+Cs3rpWGSEW!9(jZcf25>K4zSzf8hM$9GMN!BQXkR?v9LuK=YsyJcL;DYDnbT2a! zJ{yWiM>11bCDp(!{7M67$$SE9L#K1NHG%M-V|YxpavLALXoW zCg9{#^|Q9jefU{gf}fT7R2@YH+i5(4489&TX88~gN^e~sd21)|7sXe10^b>Azs%3P zwF4{6NBn#wfS28jylDH8k)KkLC5BCSO^r)LSQVC@c@&3iwz z!00f+j_v&7zlc{K-1(UyXOB5FJM%-RJiS7M4^}?U6ZU(7;OhQ&>41OtoxbM%`jyVX z&UbzFOow0LiFf+<>W?2BeCfTwSJ(3U^(+9u{VV+O2X|DSeVu3cm7l)j`!YR$QlGNd z2KHa)DT6rm`_8k&Qz&w#I<3DQZrKp<_LCiXKx4-oP`<;baX@(-kns}FkJqQ=0U4ig zKwrf!#j3=$F*=W(U;G35cK&-$Xz8H;0+&^S=|TTEw|48YNg_InkYHqbc=&k0U+)51 z4xqWZ|CgqHqOUzp%xp_z(25c+i+0}n7lBs1e&1|<@S0G#uNfwRyV5N)aen5`Ez^eJ zHc#|@Q;gsFEva!lD5?%l<5AQGoL8xwryadKNu>xJztmXgd0I%S*bipOIs`u}HO?g8 zt5V_3OQ}^?D0(Xbh=x*LI7FpsF9yPZ%E*Y9=O|L54B2bo2FAl173Dx#flep93=!3B z&@YP=IfJDUhB|K8DO{AzLatE7wTm~9>uHX5MMys%HU3fkLeS zy5mTY7jj08!*9po+a(9(7H}!$G5_GEV#uML-5%al3=Ul)k!v7abjvXA(QCMka>7py zH3Ik53u{pQF-vqRS_~1XHw*EJM0}|1qS5|5C~#3iffE#zs8kCO5xyv-s5mv*L@bAb z4+<`b6e3P-BI3}jB8>G=st8`>lwQG7aZ~0{PSqg^;8CtXoEFfcBLeFoo>aW5RmvPU zD@fvcs=tt78CXy}6LZr$MC)#E+RZgR?6~xE3oA&rj?#u${SZB(nsoFQ1(o0frC=&; z^^`-D1D7?p=My(-ZaJB1I=#S9n%*XM+0%@A$6)Cwn0Ld`h}WXX69`r{ENJA=JuBLH(-n-BWNBNzK9j0YhKlM-Vbm#=QW2Gx;OF%`$!Wu8j1(=FN|>UL)+xE7XcA*1Wr-7(A){FiGY z^6!B?$_YrMvj7qZ$|qy^#-Y-4pnb2ZEde?-`>Vo72*>O1t#ne(g8+d4%)B*T#ASEttMM) zJVO<`#^TLo4}FO4%V{o1QE?5Aif+i+DcjoK#0pa(x~LD`(3kM_M#BaXxMk|j7@%Y+ zRBbG70;@M8jXlp}&o9!Cb{0Z1f&Zu;ik+fl6E34nU7N?(9I~t}PK(T!_`YKxTq)~M zJR#4}?PcL3Uwwr0g`9$GlpLM})jlwh=ro6rgT1PJ63wfHV2EXC}|2O?p&^m%w>0)IqS z5$j%pSS{L<+lxzU4K}yEvbM6l(%7P}TS`^e`5c+g!dESx)h)5Sa}{+2=pc^n9iXIE zxC!~{U1GUSTroLrkDwyB3Uqhkv|;rn?BRNq*L|d7;*1D26c>qyI#lNFgNh^~g$I}9 zw@_8VbFm_wiyiJ3CEQoT}?N^HsO*%)4H-Nw2r;@``=kA;a~2r(JhDErVWfJ9fplm+BMEOLoU0 zGd-6`@&sj!@|_A9R%X7@+nq1w$jmO9nZ;brpro;}^WfodH0aaLHW~DzN@wNA-y040 z9&YUH4&EIN@9g$=AHR$5UBBwBIBT8MJJuW}46^2{gF9lf^kS~CXcY~*!*h+^?9&ia zH3t3B;4y{cQmK?d{oWX)qF-B!>EdE`!8pWiZr9)Re6Ye) zz1dvpP@bYh%XZuGne1G`bL)vDnII3uZ>PJ5}@aj-x8FHcX+EM36H{N+OM=i-(2g(dqHw0ykO zpT08vwNmpE*KXg#&ztY@9&+{E^q-cwrOrEhfH7NK_;YF56Akso)$hN0ZsrdMrJBnP ztCv5yRBC)3r6E^0Sp&?BWUAF}Hd=nG4d}pOTA)hX0f)edqGG$__$;vn)-;^-6pJvB zNOYrLjaArE1rqRNr|Q#kx8u827YG*YIttu=lrp5Su>UK>i>?q_4MNR`D+H{k-L3nb zl)$-Dpw?9!ote@P@XP=B81g>}V>nV)M!{&O)?5{{2d6}%ZM4lIFR;B9^jV!W$yGLs@^qX1VFGhcz4v4+`gn$eWhSsP zJ$pfx&P{LqefAYyS(*ME^@~BB$A8iu;-uR`+8Rdhhca7^__=7QQdui0+c zb@#Rt9A*K3BspFs)xwYKT~AeDT6{RddF}kLX1HF*Y5Sq> zz#=LW7v&F5UZ71vHx@F~Sb@`pX{n&hU37Rp!h1HNh_1($GE*Rs4%XTQd9hyRU3hiS zL@N{ecvf1GuG<|y#q?8>w3!dwKXwJpoJDQnv6e``GW3)(pxVD1Sgy+R*}aYHroXdG%VXvvA&UEL}Eo4fx}5svC}PM{%`Yh9e%e z1Q}{I*$Wk3x8vcji5B+G;cxrxXZqUuzO#H@TZgz;9n@y8oR_wvB*2SdtmH1Qu<&gb zf-MlZ#u9jqkt(O`@&wG})Paz0uRhZOd=NCdKF_P8j5_TSZd8?3+3v`b3!&tTRNwhv zuv_l!4Jgmk2S?9}_`N{1*l7(bQK?S&9>OPJ0S23QA|v}lHnM>%vaqtHz}N^i35pk< zd`A}UKm9EmCRt;F{#4gLJD0_KL5Y%x;7o`gMCK2kBGJy8S(NTtaDp5+jo0JIHu zN5kzw-=GE2T;S%N_jN0P7=yD}ZoPYVZ!nHvSqJv2euhW&!9P!OR3+6fd{#T%B^Gr{ zTm(<4q&q~Ri_(cKp0^`)rC@a%NdyDu_Ibx(~_-G>j) z0;RfMh2xZ-!2hUGKY`PHa$BjXuzH2YQa1-4#aCmeH4$ohA!&BiR-9(n|0+pqBFB*q zql#xL@(Asy$VD_$J5uU4btZ_V9-|CL=Gb7UT%=U0Q(E5ty*0)otCJq_^S+VCd+{&IRvvd{h(^Jl zUuBJ7HLM8U2Hw_-xXStHGL?JwVk~sR8Kn49wKw=;E;h2Q+J^{M8v04k?@855dX`J} zqJVB>p-1|Ea-GTzdwzHH86KZ*R=WG#dqjFg(yitgPTg&|zIu2;lnM`-G(~Vsr%NK1 zG|RE1rym8C3zvhxuWWsOc}fKI5DCX8DjGWx-VyJck@!z=Cl0834#z$w38y9r{~{oG zNxdmZ1}^J*zy<=mr)6Uz`Vw*?VljBy7Oe2bGvzQ2hJzKj@|=|~Z`jo`Xl%oB4d;_Qgm>vG;w-y!fP$L6wOe{FB}R})28yYm+Hz@j<-6o@_c=fK@4Y$6=_YM=`F+`Q{ z^kLw?JpLfW#DOORj~M(1;qvHvOy^iSia+lu9C_;lM8O zuD&SZL*We0CPu2Xi9-jdaiLJ;wK^|pf-C5V(IDu!@eFDPKU z!;_E|H)DA^@k$f+K*PdHq%4kTvW5H^e+_v8L3)vM)2^3zO5|)&1=?F~w$>;KJ@5Fo=XWT%ju4scmuq!I&huHgz$#}c zS#R1E{&X%N$>~c-XkuO{`4+wN4idJi``a7i;m$U)pf-DB>TQhod!x}~8X{$D@L;fw zXPM0bA%p8dZ@a&T_nlqQa94gtTZ6}Yiw37jc^!50j%6?%PHXbixJbH=yt9WbB4a|%87Y}x_9DS^T9X_H}^BBIbC>r7Gh5T+J(4bnwaIb1nzB+TP z+q6>~T}K#ul;gBhq2I!e?$CT|o2BASiv5WWj@86e!m#%r4M#(y_mSGrj_wKa^+qk(%&O9~{Dnu*nz=$K%m}_6DPYIEA!7hU~{fBqa{U8>zR& zdAqYe9QE;bN}Iintvz+t66;VH>4wOn^bIB-NG9^Fz=6ngOv;CBPTy3iY2>3g@osJZgd zxx!-*pX<0m;hG9!Dt$QA@x)Y$r(lFWzfo+ILs)YnYttYryP-?A3=hU zhup-F@cB#45y)PVh(3@hCStpDBo#9zeP!SxTm=1^$l)w1Nh>CeSoYZ*|BsR_N;Ygb zg0WLw?Rr6WWinB>8%q_Nl6b0buVFlRfa7xmFlATTq*@_Ui5D=j;n#pXJp|+R2TV8- z;0wQ$uX(?a4aGxjs@d0!{Wpw7@q>)7@?4z$U%}$^s0&wNoy@gEle6W2iyAt s`YzoX?Cw0G^3E>)Z#O-@MA)kA{0%)0J))Q7^SZuiUJrC+5PqnDGK%l?gERw%iRS**o;;n7S!TF zfCVW(61SsxCQZ^duC4kZJ2PpmB#j-_F&@NBBwOChB%Tp9tif|eAg9Afw0``yR6=bm%!dF?lx&P?PAne!95eCB+vFd@aMVj?w_ zxR4P;xk4pV%IC_(A#tjdNu(=@WZu=BOq4Ss;2-H3rU_E$Rmr5qkQF>XJ-=~29u|Sn z82*O?Lt=PnVg34zrPalnSYH!E;@8sUsekm$>e9^{3+o$;&#o?A-I(9_v2b+EiVumaG}G!+HL-+=rWb3gi=PzDexswKL!vf+3kx|% zTVwwCSSU8s25b0y;>8!v$3xi1SU5E1j~dukmeyW)cJUK8);Deeyq^LmMuuXRUo6z; z*Irn>DQ>MlIVO6BFC|K4Vecm;r^_RP@uXYRsr-nzv9b8ErS%tYGQ=1*WW^Qk01tK> z9t&Z^JqlUx7NFor4=+2KO_b6pS)3DN>1fYzQ3OP88b@21D`rGaghjE0GnU0lP8P~& z2#Ip0bSYCpF({Ha%&8*v&Q);iIbn&kEL6&wLK>BTpaVz2FUl44oE{OLa)-y$o!))y zd5_1l{Y?5Xe7%6bBlzp@_hvhHKe&z}w^QML_@h4cKJV+}iDW9B$@Tmk>V4zXN6ALB4Pb}LYAfzmFBiXagiyNWJ!d=A|(r{L`4Ln zYS)<(W5EiTD&_`)f~HDOK`Mc$NF@qt#fSj2BxdpofL!51R+cO1Bcfq3l$u|A>XtAF z9}}XmjX|V?C32>A1auGk*^OmC@PmL+)%_BQK2v`=&TKTiZ~?axm)dLd(d(IT9?Puc^D^P z4$<2m=uGU+@$t-M>44~HbKUs3bMB*mj<4Gx>RYFeY>htmztEtsf6C?C-SkC&Q#|Hy z4}BRj_{iU_Zi&>I#4pRzy@Pm#Gj2Q&(nl=}MMrA>9Y)5J1ly zeOZD#21J^_aU}E|h>N_GQw2%o7~}xHLSiaYDo`m1GAxxV=gX-?K9fG50?5>CiPTJ~ zlqpnbV&Gg(K%h|3FLX)GTCOBYyh=<+TBVFWQ9=8}IinoW=;P^84~u+eqB5N*UC7bn z5aU#J4KkQCfhA^fm+^8UmDNQ*iU1zi0=Oi`Pzj1s<^r7CwE?2$VRX;q=-8xirS3OO9b_x=;u36 zs5Lx^{hgEJsg4e>?v+f`)66*y#a*5|o@!r1bv{}hSl-|HB{^`Yb2l(8`*`{8?Qv7W z!;qS$qhQ+pCrRPG%_rz<``@d1jxeN+>kq2~jm_8fi0a8S@o+;A^i)r%Ub=pS82+j1 z;8zNAkmsxpHqz842YJ|Z^;kp65RdG=i~n~#t78AlviJJKd)3~?=8t6W^2&6-@8{)d zIrP6?-s<=*)BE&Yc^bX{bdtB@L51tpvki0|*x&ZI0IjgBKKna9uw2tnpOd3pI-aeq zc|W)R<%T@7a<6)3tD|?#``P_hw>69;bfys-eyQeEc}~;vrj}Z>;w0zr5x7qwMaX zEzegEdAFBW|1A4prsn`g__vzr&}4*!5VjP)Mh1gtB23hpdXBJHm#8rgJ>h<$vuON#gRHW*Yh6;$@u!H#eh*MIs_m zDkbJ{b3$p+9il-THYhHY5mD@iPE`?C6jwGB0q9P77<#Y(qJHQj_Tvan%25l$P*AsJ z1josjegyq>A>im5#@a6E!%*CtbA=;TTL)-Ljt)SvqXueq)S%|*O@?AI_dFr!8}{`b zj6wfV_y__3Q-uCwivGCTfEBX~P!(+ySP>^eEWqg6mj(W{m$RVKIL3n9T)hL}z-EU4 zEF4D-=WEXt2-$!KaC+`(pma66LMwJXkGEkr=0FO>h^s$Xz|{hpHCl2ATBA{i+9?&l z*-zVP)(NK@O7KRza_e9tZRbF1mZjVUqs4_nT(wm>FcQ@7OX=)fk#t!I462%1Kol~w z#CXs?>8YRU2~&lHGfY?{ojg#ko3K{!0EzIm4P~Fd~X6R(c@@iz(_7f<-_Y zF+?F8Bt@9Vunehg!8jn{4yQ?Jrch2&8?1ed7*VOhDHB#j^ULnXjc zlPVB#vXsKM(^QK94*G_rtwuq>vmHRzCq1xi<)8M*A_lE~@#GW9e4@ZAJljW?%0+aC zWnyrT`@lYyNGrMJ|r$AD%nhlXTt-f*z-}qtjH=u1O?ul($HyO4u%6cG1#@0 zgXNHxWVl1f;p><2IPAPhQ4cW#pn#1TVkbiYGsEVC5umO?a(o!Rm=F+RXW8yNpGu^% zuy`~zofUXS$3boh7^D|q*;F#r7_tW_i>R0=CDdRZ1G7xI8tCLk#L=E-yFA8fNY<8@ zmTUAc)Bk@5`u9ir_hbEHEX7(!mr|Chk?LjD(5)L{)sLu#!__fmevDQ_s_;zJFGJkT zPoJa_`MT0s-^p~+cOt#~{o%gGa&5o9&zjWo_s@7*t3p+I_GRDEWESR%_XF8w=yu+| z?4izAvZPg^(wQ7rs;ydVsA|!2Z+H8ttLMK=t=#*ThGVcg(U4h`FJ%+Fo$msgf)kv3->E)l;Cb$@d``i`@X~7A zpO+Jxo6Gfq0k!4H?1TFLOZ8W`4u3|5Y7EApw6xh&eWoFMtIuM`3O;Gko_KW_7U#&Z z@@08Wo**>r_R4c?Je^=j&o!JUcgM5)m^#uiy_F2BwuRYG?eF+xfv5MqQeSwfAqxwi zY9v=+2^bvQ8N5AX(9a!@+|IPtsrBt%&oW5i_F47ltq<#O4`#ak^SW|MkLyKaHLr{k zng86%OCX-UhRknQCU!1ra0Zp1=wCI)WeEPo$qbuU^*+_S{h`L}KlZNt2nLIAbs#M4 zzha*LHzrP*e??F0`AuEus6OxOYRKndv8pZ#3tiQ#nDYbj>Y>gr%Bw`6U(*A+UP@f; z@O3v5)iaIBHSfde{?1>Lzxt;9*c;RG6RujqbSI8bvhx~D`NHGkM6$Z*_@ZcHa2PvDKc^(0aK&){$5(Xnuf_I(;Z&?b$IVr zuQh7&+Jjdc@*1po*~_ifIvVTLSche-rjy!?O?zQi%adP{gYx7a6$P7wpJ?R2CxN~-8bC|HUy#w#S{x@Xrq0a5ENk-)MzgAnL zEp2`t6eqBQOV!F&#~%<*j_z;IU^9~qhOGq{Iapim1~yi^-xX9Vj;V97v9aMF0Dl4- zVp%xtJBq!(6UN6i+4ZI{HYNwity*WcWoOBt3EzZpu;{;VEK^;3bzxH@BVgd{OvJ_>23ccxKN3$ z$n~EnNlV|c#w6S|Z%pIkP3_#eyw&-eOW)S#n0WB&miG@C+n2VB=^T;8WqE1k{$Jf) zJx`SI5mg~B0s|dcw%O+`etZg>gR28%{S1-qvqb)9za__?+wy!*R<=*88GlNzugTNz zqSvRVmmh2|r<0Q__p8g`wPoUsWdauDc%NXPUElFMkHa8@z9xk!LISuj!pLB>$Oz6t zG&cV{jfrc?2VZR@eJ3}4iaQj=;OL1Hj!&;XgwXuG?Bs*5jN2iQhD^S?)frX?t&h7K ztOzOfp2%lOk&hxAr42MG<5**><1az4XQY5UduKU8bgrQ$z8WR^|1Lx7{j5v|1up#G z(y(^1tOf;q{O@ZE?}h{18zj0Zh8JW&+)|m_7$Gv5=l`On9gxZZ;_EYq0&&;0USVd z&+^cQ0K#^2c|y{-Qp z(7FO&KLwZip+)ZBMJI4x|F%xxR215Ef=A!pt8{y>0{8CwdyVh!HM+moXa@(~-)UT_ zy?fOgB#CcSH|VC=z)ca58+>_;@UjXEs5tbUmsX^ zKo0#|u=5+!EBD{z8#XNme1}u%?|D*Cf&b<8hnpXo;{JC|*0K*i*T@!B?Zn>wz3Q#T z>QCgY2QSN8zrOktUq?D2&)oMN8HWOtl0LYb^X$o2%N2aXTAyO|yzc9glW-*l{Rl5z zNh5}0jEiR66Fv+C$c(ot2Fuy5MBuqFE-MNoYTuI;4#63x0{G;KC}%1#Bw@SgzQvi+ zh0G`$hh;o~yGTFK%O{f5?2l--TF}oPpyB{k#+F|Caa3H*XcHlS=$5y8^(@D6w0&$r5rW}Qn(uIOR z1hHKWNuf-L8HFtmbJ*`U%`KP-gyDv0hddC5<3M=~!^(ZBFc1inu}&V-Kp0!LArAy$ zew!l;SmYjRdI972v*Q_{Bv#kyLYHNe%h|uG39b0j@bDB;=D^9){9nZGn;15To z9hew!U=GQO!L{V5w1X5Qf4PwqQ8*Qwl~|h(5kB?yjYh+^6WWS`2(=f>io$BXQf;ZAIXxHO&CR42;03X_w*7)b3p?0wHK)BnW71?~WA&4BBr8 z4;~`k;2L{_5R9!4Av{_-Lx7~gCew*LM&g*956NTOT*r@m0efCQh|}4Xf&-2^gcP~- zh~FsdW|XsWMp-hG&?2X-{R}KqF^|Y^Z?+i-D}!Zw>-Lx}pj zNHAccD1^6bsR+UYdPfn+KvP5z#T3K#mLue8 zW<*4A_NHXZg9zACH`+lb5djVBnZoe(8%V+q?|PUI{Bor!Wx}`~%^-lUy{cilWJzq2 zq!biGYYKr7(4YxE1lrew=`&@hP5o9J=|zib}RqMNhC;NCVK z-LM^0fjVTjLR~P?AO|-PAF6Z@%FBVU6v4=-Us!(7j4mM#LbdjSP; zZGGeV{4Jz+;ci!B5al>nUo+`>I5P5%$AzTWh4z#aQYb2i2T{iZ&Mm@aN&`S#6zr4} zc{z(}$c`V-S?E+33%N+he<3F{^+h+3ER`sC1~tF9IDf$ZvCv z8)`l{MW*x1y&licDIbN-XgRX1Z8P=Nz1$x;%%O4>FYogmbJTi$KJK>SJEHSBs(ssj zM~9=j`5rWNM{}Ru+}D`cj;mVtK_k0eBYSnoGk=k1-Z_D(zlo_|-FjHy$x+B? zxKSKy!jz(s&o)N}F>+@VLwBFxeY`yk&)@cOF5fw+Jwt!{;I-u~&+jnQKdkp<6cu!= z?7{P~J(pRz-|u}a14qo$@>u4B1RxRHkY>FVLe=3g8K zSg!%9-LB2!w9N0;`v}lAYFcn1IG6t6cQXCnBhpt}ey}rrJVRgqurbL&iTjg?Urf>z zh*12y0=Ip)fVP5e`%?yfQf=_a-sInGd0yj@YV&2wSuNGmzdBIpo)eur2#h z5V(&qn~>u~_ugZ((#MhOAX zk$VKxXnO?A9QR`=yzVBDn?1sz@CMo~NOF3(MnmT@gWJ!%9rLh_On1teH-}3oZ_P_; zPj6|5{D3oYP%NbtnE7GLx#qXA1TGgb_*ep?_z{V*^o@hTnf_)cyU)pq3Gz-M(LumT zP((bRDxja4e8yxl8{JpAS(GND6;uxKb5b!WGDt|CgU$o8pDA7D_`Xg)rT{+yjo&r= z2PDFGt0;^sI@1iz^dIkJZ{6Enq$-Ri^i`+6j@?hX>N(N@GAdnHk3)FHJ0qfke#KySt$a|>g0xa&XFqqs;?IPhIj&i2OLDyF+z;buZ27i~U1s0;arH$?Zvb_N! z{kZUtM#D|YcUw7{>Z6pcq?7A`K-dPHdj!7-+-W8U2>DQkGlJBgyO5DIO(p`aAJeg! zxk7|rP|c*gV?^@@J;+iagsCKdlp*VwYfz+QAhs${j%r&2MO+t@a)Xj`?4iWzddST| z3E4BwbSP>9y{Swglo@1`34}VRPNxN-5_V*3p^E!mWe=gO(hf&N=S#i4p3cPW&QEW3 z{;J}(ll@;kq7}1kopo&t5LSx%_IEz4p7$lP#1A@j$!_*(pXYbfG+e#o`ISa;_kD>w zM^)Fk8cm^dSG;4hgDdwI1{<@dW(Rpjm9uiN{xvI9*2?S>kZ!5eSxsRrfs>ej=j5{L=*B)^$c zh#sPlD)j9C!_}N`sNpyOoQL_Dz`_|$iJ3h!dyYoz_RgLmaXNdB&T!$3?$*8ifx7CT zelO6?(r~wP`P;Lh*)z1$w~pm0zo90NQJDAGg4LMy>nF$a_o1oRq>rBX7Dn})Ivc*>p?s;&>t{4TBktF22wKPx2GxOvz`G*E_dr5ZxKE1Rgd2%{f3vNO|o#T@Yi`UT)cohBKC z`qQ#9`MPY21X-6Y4=w252SyKIGPJZiLK>V8?%W&lyIVW!5JdA=0Pe5|ZiN{1V{Jpk znvSYy)5wU@y~G~KD7htPl3KNi!ot$+l%A@3K$7Yb^xrE<{6Z=Mr0Dr0xc+t8HnK_W zWalszaD^MfP!iou&;T7{AmJS~=&D+{hmh**a9CpMX15TIq}7WT!o_O*mQ9~)2tHTS zihD+FDA>eEu!*uDCeY8J#Wt4;+FsBgw0^yR@?@JLc>-G;idNGV%8q@;Cm9)PdJA-` zOYl>w5@{%UzJPrMftF-&Fi7h%K!`a%H!_;Ipy&XvZ#$oXeAPmpZUvfw42P;_1TnSf z7Do9u{zljU2zZe1j}>M8V+m3Pm}NCstP>yOZ)E2VmMtEO+)@|4lS((|xtdb2hSPnBvqqME)_ zEBKD+rlYstubv%M&){#V$zJ#YRcjw|g=(@7J~&nH_1^9?B{iVm->VxoM{3@F@B6dz zl$UoQPjw6&t5W9A?ql*~eV{t{X?gMtvJg5tcmJatJT{M38j5Ai6mpd^VvqV6f`{&B@J?%` z9J;*L#33X(zziiy6-9S2eT2zAgLfkilHR>VT~!1 zsc)BI)7fQ5>;|zbyFGxgo#}%>d$SC_v)d_fuH!ZV%1PH{ggs0VtZ$0&)|et;Q1=Dn zn<9+rPjz+b8vSnSiBFLl9>ktufg%Z?zipmr3#c>W5I@K~1-D=v{vrb1e!ls#eds$X16Ri699ZZml3XHX%lB-t zL;{fZOXd~DVO184of?7PH|TxhN6Az830m$F{Q?ZfoSomOEv(=8Bw0qI}yrVD~g((lseCYO}D(R$&^V59?Ve0=kn80IR+BWLc9~g_&v0=D3`TY~v}h#O{4$y9pw;(6 zwHlC?qj;xNAbM?~=>s^I$kwLEpCSOr6=W!X0=&YnNC<{;L}xlXJl=Bu;~jJq=9CQ4 z9;1f(!eJs{VBJBfaB#Rtj{GBrj-h@Xv|}bdLcDwIqsTR=aAX8nlf)2WpqD)G4vu>8 z)|DcGf01+vz=>b$=EwN3FmXtXC6cm4uPJF`2_ro0=~xqVQZqY+h?*I>nydp@P;vbi znC)NU&n0lb6N&u8>KuWj(T6+Fz(v1}Gsq&WwsO6a_HZ&uWUCM~nzf)sOiv{$uo5|C z2!ZS(b_F$9?T}nX2h4qVy~*gsi!F@KV&Edq6HIMb4=UQhjL)L;T{1q5X~qMcLi0MZc^>$} z{qgRuBaQD?v>LK{@BC{JNeY(6t%G%e%JZG(!f}$`RnMb17}%p68rPLWaZ7#WK<_(n z5ATfzDQ~TH4JJB1s`E*BO$|y&a|bh#+)7Jww$iVz3%ESgOO&!jW>!9QHlsj0K{q9yeN z`c*lDlsKEN=*OTgjt*;vCN_@g_#dlOcDfB{e~8}L1q!QF=E$!@2vSQ>N)W$Pt7o`W zOkBL!+A47+DkYFsN*?V< zXasNW>Y=m4le|nI|8=@Jq86mLc;P8QB8Jb3r=J!>7Z%qRHpkys%3lkyB|2M3-P|dG(L`nbJim z6d@j!Z{!~0478bN?ofoI-B?p5VCOcIT=?i2ny|Nzq$qK7VSW{_Rui?Qo44lI7VyF} zLdwSC3kpFu#oFRx4R3F&y@>Z`y&&pZWga!S(vT>V!oa{aZMV3NgT>Q%{r;^58}0mh zwqb>6^I|Vp+1fT5R;I76^&n=A7qZ2X&W1cTxWX)4z~K?vD2`kVQ4|Nqy->$yu5GMe z7gyJB-CDnX4tE1rZ>`@LYQswT#T)c)IZ6~0x9W@H<4bF`^^c#&JHK9h>ZbiFF>&=p zOtp57bQpfkSNWV+ytQCsLsLrABrq5;>Xsp%Rw)h0i=bu9NpHy-MlK-)(y&tYzy|tN zRp{07gigA|6OHsJVMRr-m~`s7=fiVEN$9BZhP|jEpu~98uh1V(oI74IJ=K z%VIr`hC_kS27y8`8B#5?(h>Cx$+gu_;*3CZtE>732FL`bJ~@A5er@sQqTuAgfq=q23JB$zbsqqn|k1*a60^K1_udTpGkUppl-sQN33F73& z!3U~A=(auaAg(mzrlT} z&_V=IO!VM0LPf|{!q0`gOeXTpS0=WnJs&u;3$;B%PNp)FgHHJ7B3{Bbzsm1agTSGe z>Mh!@*fWxam*5+lfKo5DER(!%ih6a~sQTzTiH%1{jh>%{@7jpo5JVf>8HzN5fOhmw zJohuOTu%#^uvq;6!E#^#w_rJdTHnBpGf$cb(vsuge0library>new>TEDITHISTORY.;3 38709 - - changes to%: (FNS TEDIT.REDO.INSERTION \TEDIT.CUMULATE.EVENTS TEDIT.UNDO TEDIT.UNDO.REPLACE) - - previous date%: "22-Mar-95 18:20:17" {DSK}library>new>TEDITHISTORY.;1) - - -(* ; " -Copyright (c) 1983, 1984, 1985, 1986, 1987, 1990, 1991, 1993, 1995 by Venue & Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT TEDITHISTORYCOMS) - -(RPAQQ TEDITHISTORYCOMS - ((FILES TEDITDECLS) - (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (\SCRATCHLEN 64)) - (FILES (LOADCOMP) - TEDITDECLS)) - (GLOBALVARS TEDIT.HISTORY.TYPELST TEDIT.HISTORYLST) - (INITVARS (TEDIT.HISTORY.TYPELST NIL) - (TEDIT.HISTORYLST NIL)) - (COMS - (* ;; "History-list maintenance functions") - - (FNS \TEDIT.HISTORYADD \TEDIT.CUMULATE.EVENTS)) - (COMS - (* ;; "Specialized UNDO & REDO functions.") - - (FNS TEDIT.UNDO TEDIT.UNDO.INSERTION TEDIT.UNDO.DELETION TEDIT.REDO - TEDIT.REDO.INSERTION TEDIT.UNDO.MOVE TEDIT.UNDO.REPLACE TEDIT.REDO.REPLACE - TEDIT.REDO.MOVE)))) - -(FILESLOAD TEDITDECLS) -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RPAQQ \SCRATCHLEN 64) - - -(CONSTANTS (\SCRATCHLEN 64)) -) - - -(FILESLOAD (LOADCOMP) - TEDITDECLS) -) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS TEDIT.HISTORY.TYPELST TEDIT.HISTORYLST) -) - -(RPAQ? TEDIT.HISTORY.TYPELST NIL) - -(RPAQ? TEDIT.HISTORYLST NIL) - - - -(* ;; "History-list maintenance functions") - -(DEFINEQ - -(\TEDIT.HISTORYADD - [LAMBDA (TEXTOBJ EVENT) (* ; "Edited 3-Sep-87 10:36 by jds") - - (* ;; "Add a new event to the history list. For now, this just re-sets the whole list to be the one event...") - - (* ;; - "This function also takes care of cumulating cumulative events, like successive deletions.") - - (LET* ((OLDEVENT (fetch (TEXTOBJ TXTHISTORY) of TEXTOBJ)) - (ETYPE (fetch (TEDITHISTORYEVENT THACTION) of EVENT)) - (OETYPE (fetch (TEDITHISTORYEVENT THACTION) of OLDEVENT)) - (REALEVENT EVENT)) - [COND - ((AND OLDEVENT (EQ OETYPE ETYPE) - (EQ ETYPE 'Delete)) (* ; - "Repeated successive deletions. See if we can combine them.") - - (LET* [(OSTART (fetch (TEDITHISTORYEVENT THCH#) of OLDEVENT)) - (NSTART (fetch (TEDITHISTORYEVENT THCH#) of EVENT)) - (OLDEND (+ OSTART (fetch (TEDITHISTORYEVENT THLEN) of OLDEVENT))) - (NEWEND (+ NSTART (fetch (TEDITHISTORYEVENT THLEN) of EVENT] - (COND - ((IEQP OLDEND NSTART) (* ; - "The old deletion was just in front of the current one; cumulate them.") - - (SETQ REALEVENT (\TEDIT.CUMULATE.EVENTS OLDEVENT EVENT T))) - ((IEQP NEWEND OSTART) (* ; - "The new deletion was just in front of the old one; cumulate them.") - - (SETQ REALEVENT (\TEDIT.CUMULATE.EVENTS EVENT OLDEVENT T] - (replace (TEXTOBJ TXTHISTORY) of TEXTOBJ with REALEVENT]) - -(\TEDIT.CUMULATE.EVENTS - [LAMBDA (EVENT1 EVENT2 PIECES-TO-SAVE?) (* ; - "Edited 3-Apr-95 12:23 by sybalsky:mv:envos") - - (* ;; "Accumulate history events that should really be combined into a single event.") - - (* ;; "For now, this assumes they're events of the same type. Actually, this should be able to cumulate a delete/insert pair into a replacement, etc.") - - (LET* [(OLDLEN (fetch (TEDITHISTORYEVENT THLEN) of EVENT1)) - (NEWPC1 (CAR (fetch (TEDITHISTORYEVENT THFIRSTPIECE) of EVENT2))) - (REALEVENT (create TEDITHISTORYEVENT using EVENT1 THLEN _ - (+ OLDLEN (fetch (TEDITHISTORYEVENT - THLEN) of EVENT2] - (bind (PC _ (CAR (fetch (TEDITHISTORYEVENT THFIRSTPIECE) of EVENT1))) - (CHCOUNT _ 0) while (< (SETQ CHCOUNT (+ CHCOUNT (fetch (PIECE PLEN) - of PC))) - OLDLEN) do (SETQ PC (fetch (PIECE NEXTPIECE) - of PC)) - finally (replace (PIECE NEXTPIECE) of PC with NEWPC1) - (replace (PIECE PREVPIECE) of NEWPC1 with PC) - (RETURN)) - REALEVENT]) -) - - - -(* ;; "Specialized UNDO & REDO functions.") - -(DEFINEQ - -(TEDIT.UNDO - [LAMBDA (TEXTOBJ) (* ; - "Edited 22-Mar-95 16:48 by sybalsky:mv:envos") - - (* ;; "Undo the last thing this guy did.") - - (COND - ((NOT (fetch (TEXTOBJ TXTREADONLY) of TEXTOBJ)) - - (* ;; "Only undo things if the document is allowed to change.") - - (PROG ((SEL (fetch (TEXTOBJ SEL) of TEXTOBJ)) - EVENT CH# LEN FIRSTPIECE) - (COND - ((SETQ EVENT (fetch (TEXTOBJ TXTHISTORY) of TEXTOBJ)) - (* ; - "There really is something to UNDO. Decide what, & fix it.") - (SETQ LEN (fetch THLEN of EVENT)) (* ; - "Length of the text that was inserted/deleted/changed") - (SETQ CH# (fetch THCH# of EVENT)) (* ; "Starting CH# of the change") - (SETQ FIRSTPIECE (CAR (fetch THFIRSTPIECE of EVENT))) - (* ; - "First piece affected by the change") - (RESETLST - (RESETSAVE (CURSOR WAITINGCURSOR)) - (\SHOWSEL SEL NIL NIL) - [SELECTQ (fetch THACTION of EVENT) - ((Insert Copy Include) (* ; "It was an insertion") - (TEDIT.UNDO.INSERTION TEXTOBJ EVENT LEN CH# FIRSTPIECE)) - (Delete (* ; "It was a deletion") - (TEDIT.UNDO.DELETION TEXTOBJ EVENT LEN CH# FIRSTPIECE)) - (Looks (* ; "It was a character-looks change") - (TEDIT.UNDO.LOOKS TEXTOBJ EVENT LEN CH# FIRSTPIECE)) - (ParaLooks (* ; "It was a PARA looks change") - (TEDIT.UNDO.PARALOOKS TEXTOBJ EVENT LEN CH# FIRSTPIECE)) - (Move (TEDIT.UNDO.MOVE TEXTOBJ EVENT LEN CH# FIRSTPIECE) - (* ; "He moved some text") - ) - ((Replace LowerCase UpperCase) - - (* ;; "He replaced one piece of text with another ; Lower-casing and upper-casing have the same undo event.") - - (TEDIT.UNDO.REPLACE TEXTOBJ EVENT LEN CH# FIRSTPIECE)) - (Get (* ; "He did a GET -- not undoable.") - (TEDIT.PROMPTPRINT TEXTOBJ "You can't UNDO a GET." T)) - (Put (* ; "He did a PUT -- not undoable.") - (TEDIT.PROMPTPRINT TEXTOBJ "You can't UNDO a Put." T)) - (COND - ((AND (SETQ UNDOFN (ASSOC (fetch THACTION of EVENT) - TEDIT.HISTORY.TYPELST)) - (SETQ UNDOFN (CADDR UNDOFN))) - (* ; - "TEDIT.HISTORY.TYPELST is an ALST of form (type redofn undofn)") - (APPLY* UNDOFN TEXTOBJ EVENT LEN CH# FIRSTPIECE)) - (T (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "UNDO not implemented for " - (fetch THACTION of EVENT)) - T] - (\SHOWSEL SEL NIL T))) - (T (TEDIT.PROMPTPRINT TEXTOBJ "Nothing to UNDO." T]) - -(TEDIT.UNDO.INSERTION - [LAMBDA (TEXTOBJ EVENT LEN CH# FIRSTPIECE) (* ; "Edited 21-Apr-93 01:33 by jds") - - (* ;; "UNDO a prior Insert, Copy, or Include.") - - (PROG (OBJ DELETEFN) - (replace (TEXTOBJ \INSERTPCVALID) of TEXTOBJ with NIL) - (* ; - "Keep TEdit from reusing the current cache piece in the future -- it is probably invalid") - (\DELETECH CH# (IPLUS CH# LEN) - LEN TEXTOBJ) - (\FIXDLINES (fetch (TEXTOBJ LINES) of TEXTOBJ) - (fetch (TEXTOBJ SEL) of TEXTOBJ) - CH# - (IPLUS CH# LEN) - TEXTOBJ) (* ; - "Fix the line descriptors & selection") - (TEDIT.UPDATE.SCREEN TEXTOBJ) (* ; - "Fix up the display for all this foofaraw") - (replace (SELECTION POINT) of (fetch (TEXTOBJ SEL) of TEXTOBJ) - with 'LEFT) - (\FIXSEL (fetch (TEXTOBJ SEL) of TEXTOBJ) - TEXTOBJ) (* ; "Really fix the selection") - (replace THACTION of EVENT with 'Delete) - (* ; - "Make the UNDO be UNDOable, by changing the event to a deletion.") - ]) - -(TEDIT.UNDO.DELETION - [LAMBDA (TEXTOBJ EVENT LEN CH# FIRSTPIECE) (* ; "Edited 21-Apr-93 12:01 by jds") - - (* ;; "UNDO a prior Deletion of text.") - - (PROG ((NPC (fetch (PIECE NEXTPIECE) of FIRSTPIECE)) - (PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - (SEL (fetch (TEXTOBJ SEL) of TEXTOBJ)) - (OTEXTLEN (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ)) - NEWPIECE INSPC OBJECT INSERTFN START-OF-PIECE) - (SETQ INSPC (\CHTOPC CH# PCTB T)) - (replace (TEXTOBJ \INSERTPCVALID) of TEXTOBJ with NIL) - (* ; - "Keep future people from stepping on the current cache piece, which is probably no longer valid.") - (COND - ((fetch (TEXTOBJ TXTREADONLY) of TEXTOBJ) - (* ; - "Don't change read-only documents.") - (RETURN))) - [COND - ((IGREATERP CH# START-OF-PIECE) - (SETQ INSPC (\SPLITPIECE INSPC (- CH# START-OF-PIECE) - TEXTOBJ INSPC#] - (SETQ NEWPIECE (create PIECE using FIRSTPIECE)) - (replace THFIRSTPIECE of EVENT with NEWPIECE) - (bind (TL _ 0) while (ILESSP TL LEN) do (\INSERTPIECE NEWPIECE INSPC TEXTOBJ) - (* ; "Insert the piece back in") - [COND - ([AND (SETQ OBJECT - (fetch (PIECE POBJ) - of NEWPIECE)) - (SETQ INSERTFN - (IMAGEOBJPROP OBJECT - 'WHENINSERTEDFN] - (* ; - "If this is an imageobject, and it has an insertfn, call it.") - (APPLY* INSERTFN OBJECT ( - \TEDIT.PRIMARYW - TEXTOBJ) - NIL - (TEXTSTREAM TEXTOBJ] - (SETQ TL (IPLUS TL (fetch - (PIECE PLEN) - of FIRSTPIECE) - )) - (* ; - "Keep track of how much we've re-inserted") - (SETQ FIRSTPIECE NPC) - (* ; - "Move to the next piece to insert") - (AND NPC (SETQ NPC (fetch - (PIECE NEXTPIECE) - of NPC))) - (SETQ NEWPIECE (create PIECE - using FIRSTPIECE)) - ) (* ; - "Done here because \INSERTPIECE creams the NEXTPIECE field.") - (replace (TEXTOBJ TEXTLEN) of TEXTOBJ with (IPLUS (fetch (TEXTOBJ TEXTLEN) - of TEXTOBJ) - LEN)) - (* ; - "Reset the text length and EOF ptr of the text stream.") - (\FIXILINES TEXTOBJ SEL CH# LEN OTEXTLEN) (* ; - "Fix the line descriptors & selection") - (TEDIT.UPDATE.SCREEN TEXTOBJ) (* ; - "Fix up the display for all this foofaraw") - (replace (SELECTION CH#) of SEL with CH#) - (* ; - "Make the selection point at the re-inserted text") - (replace (SELECTION CHLIM) of SEL with (IPLUS CH# LEN)) - (replace (SELECTION DCH) of SEL with LEN) - (replace (SELECTION POINT) of SEL with (fetch THPOINT of EVENT)) - (\TEDIT.SET.SEL.LOOKS SEL 'NORMAL) - (\FIXSEL SEL TEXTOBJ) (* ; "Really fix the selection") - (replace THACTION of EVENT with 'Insert) - (* ; - "Make the UNDO be UNDOable, by changing the event to a insertion.") - ]) - -(TEDIT.REDO - [LAMBDA (TEXTOBJ) (* ; "Edited 30-May-91 21:27 by jds") - - (* ;; "REDO the last thing this guy did.") - - (PROG ((SEL (fetch (TEXTOBJ SEL) of TEXTOBJ)) - EVENT CH) - (COND - ((FETCH (TEXTOBJ TXTREADONLY) OF TEXTOBJ) - - (* ;; "The document is read-only; don't make any changes.") - - NIL) - ((SETQ EVENT (fetch (TEXTOBJ TXTHISTORY) of TEXTOBJ)) - (* ; - "There really is something to REDO Decide what, & do it.") - (RESETLST - (RESETSAVE (CURSOR WAITINGCURSOR)) - (\SHOWSEL SEL NIL NIL) - (SELECTQ (fetch THACTION of EVENT) - ((Insert Copy Include) (* ; "It was an insertion") - (TEDIT.REDO.INSERTION TEXTOBJ EVENT - (IMAX 1 (SELECTQ (fetch (SELECTION POINT) of SEL) - (LEFT (fetch (SELECTION CH#) of SEL)) - (RIGHT (fetch (SELECTION CHLIM) of SEL)) - NIL)))) - (Delete (* ; "It was a deletion") - (\TEDIT.DELETE SEL TEXTOBJ)) - (Replace (* ; - "It was a replacement (a del/insert combo)") - (TEDIT.REDO.REPLACE TEXTOBJ EVENT)) - (LowerCase (* ; "He lower-cased something") - (\TEDIT.LCASE.SEL TEXTOBJ TEXTOBJ SEL)) - (UpperCase (* ; "He upper-cased something") - (\TEDIT.LCASE.SEL TEXTOBJ TEXTOBJ SEL)) - (Looks (* ; "It was a looks change") - (TEDIT.REDO.LOOKS TEXTOBJ EVENT (IMAX 1 - (SELECTQ (fetch (SELECTION - POINT) - of SEL) - (LEFT (fetch (SELECTION - CH#) - of SEL)) - (RIGHT (fetch (SELECTION - CHLIM) - of SEL)) - NIL)))) - (ParaLooks (* ; "It was a Paragraph looks change") - (TEDIT.REDO.PARALOOKS TEXTOBJ EVENT - (IMAX 1 (SELECTQ (fetch (SELECTION POINT) of SEL) - (LEFT (fetch (SELECTION CH#) of SEL)) - (RIGHT (fetch (SELECTION CHLIM) of SEL)) - NIL)))) - (Find (* ; "EXACT-MATCH SEARCH COMMAND") - (RESETLST - (RESETSAVE (CURSOR WAITINGCURSOR)) - (TEDIT.PROMPTPRINT TEXTOBJ "Searching..." T) - (SETQ SEL (fetch (TEXTOBJ SEL) of TEXTOBJ)) - (\SHOWSEL SEL NIL NIL) - (SETQ CH (TEDIT.FIND TEXTOBJ (fetch THAUXINFO of EVENT))) - (COND - (CH (TEDIT.PROMPTPRINT TEXTOBJ "done.") - (replace (SELECTION CH#) of SEL with CH) - [replace (SELECTION CHLIM) of SEL - with (IPLUS CH (NCHARS (fetch THAUXINFO - of EVENT] - (replace (SELECTION DCH) of SEL - with (NCHARS (fetch THAUXINFO of EVENT))) - (replace (SELECTION POINT) of SEL with - 'RIGHT) - (\FIXSEL SEL TEXTOBJ) - (TEDIT.NORMALIZECARET TEXTOBJ) - (\SHOWSEL SEL NIL T)) - (T (TEDIT.PROMPTPRINT TEXTOBJ "[Not found]")))) - (replace (TEXTOBJ \INSERTPCVALID) of TEXTOBJ with NIL) - (* ; "Drop the cached piece. WHY??") - ) - ((Move ReplaceMove) (* ; "He moved some text") - (TEDIT.REDO.MOVE TEXTOBJ EVENT (fetch THLEN of EVENT) - (IMAX 1 (SELECTQ (fetch (SELECTION POINT) of SEL) - (LEFT (fetch (SELECTION CH#) of SEL)) - (RIGHT (fetch (SELECTION CHLIM) of SEL)) - NIL)) - (fetch THFIRSTPIECE of EVENT))) - (Get (* ; "He did a GET -- not undoable.") - (TEDIT.PROMPTPRINT TEXTOBJ "You can't REDO a GET." T)) - (Put (* ; "He did a PUT -- not undoable.") - (TEDIT.PROMPTPRINT TEXTOBJ "You can't REDO a PUT." T)) - (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "REDO of the action " (fetch THACTION - of EVENT) - " isn't implemented.") - T)) - (\SHOWSEL SEL NIL T))) - (T (TEDIT.PROMPTPRINT TEXTOBJ "Nothing to REDO." T]) - -(TEDIT.REDO.INSERTION - [LAMBDA (TEXTOBJ EVENT CH#) (* ; - "Edited 3-Apr-95 15:55 by sybalsky:mv:envos") - (* ; - "REDO a prior Insert/Copy/Include of text.") - (PROG (INSPC INSPC# NPC (SEL (fetch (TEXTOBJ SEL) of TEXTOBJ)) - (PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - (LEN (fetch THLEN of EVENT)) - (FIRSTPIECE (create PIECE using (CAR (fetch THFIRSTPIECE of EVENT)) - PNEW _ T)) - (OTEXTLEN (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ)) - OBJ COPYFN ORIGFIRSTPC) - (SETQ ORIGFIRSTPC FIRSTPIECE) - (replace THFIRSTPIECE of EVENT with (LIST FIRSTPIECE)) - (* ; - "So we can UNDO this, and remove the right set of pieces.") - (replace (TEXTOBJ \INSERTPCVALID) of TEXTOBJ with NIL) - (* ; - "Force any further insertions to make new pieces.") - (SETQ NPC (fetch (PIECE NEXTPIECE) of FIRSTPIECE)) - (SETQ INSPC (\CHTOPC CH# PCTB T)) - [SETQ INSPC (COND - ((IEQP CH# START-OF-PIECE) (* ; - "We're inserting just before an existing piece") - INSPC) - (T (* ; - "We must split this piece, and insert before the second part.") - (\SPLITPIECE INSPC (- CH# START-OF-PIECE) - TEXTOBJ] - (bind (TL _ 0) while (ILESSP TL LEN) - do - - (* ;; "Loop thru the pieces of the prior insertion, inserting copies of enough of them to cover the length of the insertion.") - - [COND - ((SETQ OBJ (fetch (PIECE POBJ) of FIRSTPIECE)) - (* ; "This piece describes an object") - [COND - [(SETQ COPYFN (IMAGEOBJPROP OBJ 'COPYFN)) - (SETQ OBJ (APPLY* COPYFN OBJ (fetch (TEXTOBJ STREAMHINT) of - TEXTOBJ - ) - (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ))) - (COND - ((EQ OBJ 'DON'T) - (TEDIT.PROMPTPRINT TEXTOBJ "COPY of this object not allowed." T) - (RETFROM 'TEDIT.COPY)) - (T (replace (PIECE POBJ) of FIRSTPIECE with OBJ] - (OBJ (replace (PIECE POBJ) of FIRSTPIECE with (COPY OBJ] - (COND - ((SETQ COPYFN (IMAGEOBJPROP OBJ 'WHENCOPIEDFN)) - (* ; - "If there's an eventfn for copying, use it.") - (APPLY* COPYFN OBJ (WINDOWPROP (CAR (fetch (TEXTOBJ \WINDOW) - of TEXTOBJ)) - 'DSP) - (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ) - (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ] - (\INSERTPIECE FIRSTPIECE INSPC TEXTOBJ) (* ; "Insert the piece back in") - (SETQ TL (IPLUS TL (fetch (PIECE PLEN) of FIRSTPIECE))) - (* ; - "Keep track of how much we've re-inserted") - (SETQ FIRSTPIECE (create PIECE using NPC PNEW _ T)) - (* ; - "Move to the next piece to insert") - (AND NPC (SETQ NPC (fetch (PIECE NEXTPIECE) of NPC))) - (* ; - "Done here because \INSERTPIECE creams the NEXTPIECE field.") - ) - (\TEDIT.DIFFUSE.PARALOOKS (fetch (PIECE PREVPIECE) of ORIGFIRSTPC) - INSPC) (* ; - "propagate paragraph formatting into the new insertion") - (replace (TEXTOBJ TEXTLEN) of TEXTOBJ with (IPLUS (fetch (TEXTOBJ TEXTLEN) - of TEXTOBJ) - LEN)) - (* ; - "Reset the text length and EOF ptr of the text stream.") - (\FIXILINES TEXTOBJ SEL CH# LEN OTEXTLEN) (* ; - "Fix the line descriptors & selection") - (TEDIT.UPDATE.SCREEN TEXTOBJ) (* ; - "Fix up the display for all this foofaraw") - (replace (SELECTION CH#) of SEL with CH#) - (* ; - "Make the selection point at the re-inserted text") - (replace (SELECTION CHLIM) of SEL with (IPLUS CH# LEN)) - (replace (SELECTION DCH) of SEL with LEN) - (\TEDIT.SET.SEL.LOOKS SEL 'NORMAL) - (\FIXSEL SEL TEXTOBJ) (* ; "Really fix the selection") - (replace THACTION of EVENT with 'Insert) - (* ; - "Make the UNDO be UNDOable, by changing the event to a insertion.") - ]) - -(TEDIT.UNDO.MOVE - [LAMBDA (TEXTOBJ EVENT LEN CH# FIRSTPIECE) (* ; "Edited 30-May-91 21:27 by jds") - (* ; "UNDO a MOVE command") - (PROG ((TOOBJ (fetch THAUXINFO of EVENT)) - (FROMOBJ (fetch THTEXTOBJ of EVENT)) - (SOURCECH# (fetch THOLDINFO of EVENT)) - (CH# (fetch THCH# of EVENT)) - TOSEL TOTEXTLEN) - (\SHOWSEL (fetch (TEXTOBJ SEL) of TOOBJ) - NIL NIL) (* ; - "Turn off the selections in the old source and target documents") - (\SHOWSEL (fetch (TEXTOBJ SEL) of FROMOBJ) - NIL NIL) - (\DELETECH CH# (IPLUS CH# LEN) - LEN FROMOBJ) (* ; - "Delete the characters we moved, from the place we moved them to") - (\FIXDLINES (fetch (TEXTOBJ LINES) of FROMOBJ) - (fetch (TEXTOBJ SEL) of FROMOBJ) - CH# - (IPLUS CH# LEN) - FROMOBJ) - (replace (SELECTION CH#) of (fetch (TEXTOBJ SEL) of FROMOBJ) - with (replace (SELECTION CHLIM) of (fetch (TEXTOBJ SEL) of FROMOBJ) - with CH#)) (* ; - "Make this document's selection be a point sel at the place the text used to be.") - (replace (SELECTION DCH) of (fetch (TEXTOBJ SEL) of FROMOBJ) with - 0) - (replace (SELECTION POINT) of (fetch (TEXTOBJ SEL) of FROMOBJ) - with 'LEFT) (* ; - "Mark lines for update, and fix the selection") - (SETQ TOTEXTLEN (fetch (TEXTOBJ TEXTLEN) of TOOBJ)) - (* ; - "The pre-insertion len of the place the text is returning to, for the line udpater below") - (\TEDIT.INSERT.PIECES TOOBJ SOURCECH# (fetch THFIRSTPIECE of EVENT) - LEN) - - (* ;; "Put the pieces we moved back where they came from (no need to copy them, since we did that on the original move.)") - - (\FIXILINES TOOBJ (fetch (TEXTOBJ SEL) of TOOBJ) - SOURCECH# LEN TOTEXTLEN) (* ; - "Mark lines that need updating, and fix up the selection") - (add (fetch (TEXTOBJ TEXTLEN) of TOOBJ) - LEN) (* ; - "Update the text length of the erstwhile move source") - (TEDIT.UPDATE.SCREEN FROMOBJ) (* ; - "Update the erstwhile text location's image.") - (COND - ((NEQ FROMOBJ TOOBJ) (* ; - "If they aren't the same document, we need to update the other document image as well.") - (TEDIT.UPDATE.SCREEN TOOBJ))) - (\FIXSEL (fetch (TEXTOBJ SEL) of TOOBJ) - TOOBJ) (* ; - "Fix up the selections so their images will be OK") - (\FIXSEL (fetch (TEXTOBJ SEL) of FROMOBJ) - FROMOBJ) - (\COPYSEL (fetch (TEXTOBJ SEL) of FROMOBJ) - TEDIT.SELECTION) (* ; - "It's handy to think of this as the last selection made, also.") - (replace THACTION of EVENT with 'Move) - (replace THTEXTOBJ of EVENT with TOOBJ) - (replace THAUXINFO of EVENT with FROMOBJ) - (replace THOLDINFO of EVENT with CH#) - (replace THCH# of EVENT with SOURCECH#) - (\SHOWSEL (fetch (TEXTOBJ SEL) of TOOBJ) - NIL T) - (\SHOWSEL (fetch (TEXTOBJ SEL) of FROMOBJ) - NIL T]) - -(TEDIT.UNDO.REPLACE - [LAMBDA (TEXTOBJ EVENT LEN CH# FIRSTPIECE) (* ; - "Edited 22-Mar-95 16:47 by sybalsky:mv:envos") - (PROG ((OLDEVENT (fetch THOLDINFO of EVENT)) - (CH# (fetch THCH# of EVENT)) - (SEL (fetch (TEXTOBJ SEL) of TEXTOBJ))) - (\SHOWSEL SEL NIL NIL) - (TEDIT.UNDO.INSERTION TEXTOBJ EVENT LEN CH# FIRSTPIECE) - (\SHOWSEL SEL NIL NIL) - (TEDIT.UNDO.DELETION TEXTOBJ OLDEVENT (fetch THLEN of OLDEVENT) - CH# - (CAR (fetch THFIRSTPIECE of OLDEVENT))) - (replace THOLDINFO of OLDEVENT with EVENT) - (replace THACTION of OLDEVENT with 'Replace) - (replace THOLDINFO of EVENT with NIL) - (\TEDIT.HISTORYADD TEXTOBJ OLDEVENT) - (replace (SELECTION CH#) of SEL with CH#) - (replace (SELECTION CHLIM) of SEL with (IPLUS CH# (fetch THLEN of - OLDEVENT))) - (replace (SELECTION DCH) of SEL with (fetch THLEN of OLDEVENT)) - (replace (SELECTION POINT) of SEL with (fetch THPOINT of EVENT)) - (replace THPOINT of OLDEVENT with (fetch THPOINT of EVENT)) - (\FIXSEL SEL TEXTOBJ) - (\SHOWSEL SEL NIL T]) - -(TEDIT.REDO.REPLACE - [LAMBDA (TEXTOBJ EVENT) (* ; "Edited 30-May-91 21:28 by jds") - (PROG ((OLDEVENT (fetch THOLDINFO of EVENT)) - (CH# (fetch (SELECTION CH#) of (fetch (TEXTOBJ SEL) of TEXTOBJ))) - (SEL (fetch (TEXTOBJ SEL) of TEXTOBJ))) - (\SHOWSEL SEL NIL NIL) - (\DELETECH (fetch (SELECTION CH#) of SEL) - (fetch (SELECTION CHLIM) of SEL) - (IDIFFERENCE (fetch (SELECTION CHLIM) of SEL) - (fetch (SELECTION CH#) of SEL)) - TEXTOBJ) - (\FIXDLINES (fetch (TEXTOBJ LINES) of TEXTOBJ) - SEL - (fetch (SELECTION CH#) of SEL) - (fetch (SELECTION CHLIM) of SEL) - TEXTOBJ) - (replace (SELECTION POINT) of SEL with 'LEFT) - (TEDIT.REDO.INSERTION TEXTOBJ EVENT CH#) - (replace THOLDINFO of EVENT with (SETQ OLDEVENT (fetch (TEXTOBJ TXTHISTORY) - of TEXTOBJ))) - (replace THACTION of OLDEVENT with 'Replace) - (replace THACTION of EVENT with 'Replace) - (replace THCH# of EVENT with CH#) - (\TEDIT.HISTORYADD TEXTOBJ EVENT]) - -(TEDIT.REDO.MOVE - [LAMBDA (TEXTOBJ EVENT LEN CH# FIRSTPIECE) (* ; "Edited 30-May-91 21:28 by jds") - (PROG ((FROMOBJ TEXTOBJ) - (SOURCECH# (fetch THOLDINFO of EVENT)) - (OLDCH# (fetch THCH# of EVENT)) - (SEL (fetch (TEXTOBJ SEL) of TEXTOBJ)) - (MOVESEL (fetch (TEXTOBJ MOVESEL) of TEXTOBJ)) - OLDCHLIM) - (replace (SELECTION CH#) of MOVESEL with OLDCH#) - (replace (SELECTION CHLIM) of MOVESEL with (IPLUS OLDCH# LEN)) - (replace (SELECTION DCH) of MOVESEL with LEN) - (replace (SELECTION SET) of MOVESEL with T) - (\FIXSEL MOVESEL TEXTOBJ) - (\TEDIT.SET.SEL.LOOKS MOVESEL 'MOVE) - (TEDIT.MOVE MOVESEL SEL]) -) -(PUTPROPS TEDITHISTORY COPYRIGHT ("Venue & Xerox Corporation" 1983 1984 1985 1986 1987 1990 1991 1993 -1995)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (1696 5135 (\TEDIT.HISTORYADD 1706 . 3591) (\TEDIT.CUMULATE.EVENTS 3593 . 5133)) (5188 -38576 (TEDIT.UNDO 5198 . 9210) (TEDIT.UNDO.INSERTION 9212 . 10798) (TEDIT.UNDO.DELETION 10800 . 16735) - (TEDIT.REDO 16737 . 23674) (TEDIT.REDO.INSERTION 23676 . 30392) (TEDIT.UNDO.MOVE 30394 . 34827) ( -TEDIT.UNDO.REPLACE 34829 . 36330) (TEDIT.REDO.REPLACE 36332 . 37757) (TEDIT.REDO.MOVE 37759 . 38574))) -)) -STOP diff --git a/obsolete/library/new/TEDITHISTORY.LCOM b/obsolete/library/new/TEDITHISTORY.LCOM deleted file mode 100644 index a7cdd2f67fa6b74d3a0183b40507404d446c2534..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10890 zcmbtaU2GiJb>5{!hNeZDq&F(TrpDDeKT8!Pc4n6QL#Gb+XO=tUa%Z(WOG-5@i6Yk~ zC5lUsR8qBR(T5gj5Hvswv~Gd~K~l7RY9TQ)5XTA@c~pQTK;Qrl`qYQM%V^QJBK^*} z_s+~N>DpEVap&GM_xId$&UenalPK9`r)JNVovJTy`KB$57Jy&e4wyIdooV{k(yrz)UR;}c!V#6-E zb55;kH$2C!iP50JT*Izc^F>?iVx6n)?Y;JW5zId~Hy0P%o5$Ekcva>?GPjV*#y^S` zruj*>F05=OnG%1I&hL=9 zon0`K3r6M>EZUeERqIekm@k#YLMbzvsEdrK+3R+#B4)>Nbjo(4{1gK?f`xBCApoM|{^_fv@4omVkGvAAtc*tz+4P49A7mnz(rXe{Qk2?z?c+8!tJgW2@R`;x zxQcTrQLGf*7Is<}mZ%q*C1C~`#M*k%zzb$e)vkdlrl>o1(QeLq?rbx^W`8MQl!;{wE8!3>AdU_z5V#z z>Ixmg-p~ks-`lAC?|=Q^(@b%GKHPQa)ymIDmdBa&Wca}^BMBpEij5`PBO6n8uGYat z!@|~SKf*Bml95uhTv`^;a3-YA`D8L_NCB+nS8dUB78WkIYU@s|G+S@Do?Y}VGb{K- zv1;dQt@>=)ZLBsgi?U`BN`^izlubeWE#oMPm6!2MiL%pZdUA1PF)v8P%G4q)Cv4bF z+w%v_h^Aeg5z*%(!;vV7;7$BJhrgZa>7D7d>8%UvV>{aV zm~Iqj7I_%?x3h@fJd5}jlKAaV_XnLbXs=0H@1#Awa(CYa{zUsOwO&}DhAx*+# zNMhCs(@J*LW{^mmVR8T-W;R%~fz`DdO}7CtGz~qeMl&*D)h0HPOp5xwV`0E(EVc1W zr$y`FpnX`}JZcMLJ}0W3ulO}nG};Gyn_GBenPRo`WfTmk_U7ScwbQwCBytAYQy~)= zmz;3+xAyLB!_JtZ*g3c_ta*@*+K0!m!|Qp+b81U+sU*gF&B6qy;=~KF-#He$cMta3 zcia1fcW-nK3G^CC$={Czi`ZgE;ea1z(oUg?({n-@f?6L;Bo*5tQN5N9vSvC zRHY78A{XQ;F%V69^o%SasUe{QsUbrHV*uGek|45h%Em$!v%yd>c&`mdBT=^BKV2BV z{q)f#i4xNj`SS`duDw0BNYc&nx1oDn%BiPuw9zI8!oB;c-k-42C#Jj$aJpiGc3J zYn|hr-TgP=H}Em_9zw|ZQ5a(gmUJ6-i$SEY3Rk*lKVP?dJ++eW+w&r|Q!Kr9&W}rxR*%N8D(0~T= z4by?;x5(f~#zPZzF{4X;&@<;-4#i>gu7bB&!A{PsTb`AOL7tH`C(L{JMulZej;2uA zT9e@(t`Pv9(T@Zlz;)Hr(oZ}f>8}^P0-s$CU7qFape069PWdwMDKQd_43^k?8kUEk z4@cGpCcNRI!}{?$Q-ZVRDr?sFcE*eD_y^x!#qX~c*JE`4KfZ~d5}oG;I~&!h+Y`~} z3hv|wC)ca1i-dgLD$hH1{q5g(CwUFhd3gWEWVdo__^pau)(`!W9zXaA$p#I2W9;N- zHI}6v{@pw8j=eC}eegr+u&Kot-j59|E*A?cf#@yMpvBmbe4@b!mkO~9{LBwTW3gpD z%W|JUn&bg0i8QlG?F|C>=WsxC5?V}HVPy$>WYvUUNSz%itYk^)gqt3myj9=?EQdA@ z&T77KZ5`;B6(}y*5EcL=&L2`+lR=mX5bSlIfEXA;3YnCmoE5YN;B7SPRY!R+7F4BJ z@!WcmPz>mzaKp@`MGc-&9^eeb!mgBxnDdb7pqA>bu`$*y;jd}EF%jG7vH^p*Ua@O( zg?0&wU;uBwdj1@*mVoo+uL2q8wFd|TC--5P+5-fW`r2bzdV&;Tx>Q~E1(f*=8UVR< z12tesohi~{D@{N1zl}So=OBlY^p>2-Vg(ON1u$jUT=qpnJ|pnzA0vZj_=?{2)^Obi zsXFV#^wz+(@*bOnRKO}yimmh8C)c}bgM4ex&fvqKCQ_Q5KeUVah7FI-f{-c|GK?Gqw32T$Mb0l} zv}YD}3E?iu36aYvi4?R@PXwhpV<{mQ%|MHWvsA&<0M$T*4R|?04T>F9pmsrpwONYN z|L0U0K&bd@z+*U3_x876kBf9p#J4;9ZFo)Oa5dYThg$^JlwZ)kk}q^0C2s@>J+72= zJuZhNi18tCrN}cnJK%xvu~d?ok{hESM#k1<;8ee8LUMZ?tLT59KTA;8$ELT&JSmoI zDyUI`%fHB2;^d3n)|$r>9FvrP=*sHQUz6ZHee|5Hj!Z-&cPbxzukz=2CJ8AXM*mE< z|7O=~k!U`Q-qnQGnj~yU!neAuZBO=DK1In&%CoN{@;|@z2#?eVGhK2n&(Xd~&*;y0 zE?dMSLfVIszm&~22g~5#Hq`x-a&e7~1jFD1Lk{^?x5bg&?=kEDjw|2b-?b>cASTL) z&QmrZl1Sx%8(Q^JS*?{}RZV4)$&k@oDy5Z^(^wp)SwO9RXV)T|puA?w(r&Y_8`2on1K%DKBv4HD+4w$i19+eBWVzW@ni zs%24B`bKKhmzSa#xI*EiQ&?FI!bwhS7h*&5i3TGw z)g8OQ7Y{Uo(-%ahklxfDa0;HGLYdwm(t@FrYSf$XuvAV&1(6mUV~tWyx!eNK1;A** zy{34u)vzfS?yds@UQ>4gjDqp5)OA&GqRB;jwa3vX5iXA z5}jMO+grz+4&L0`Ltc72Fq)h+XV=Y#B(KNJc`kSlJ1B2TC{^2ZTaBWv6SgE%(s*Ls zE|s1oZw0%z1hpJw^QEmF1-_ENkLbi_2W8S|T81I4i%(Q#g>sV)<)$S0qIyeohc#Le zNc%&@mDoskMQQkxX?l4Z+RY|{Yh;UJF*)zR>y>3`hYK`OWm`5|E=ZHXja19Rd$9qB zERj=r`cD-qbk*9~bgKy*wjgqpn`lGTJk2j z&G+OjK%HNqOwR_12OTRp*VlF9~{7uPRVTUa-ajod`Jfj$||YE6il;{&d?VQ3?(etz|tV`AHL5-9IHT^nw%LS;v5VU zuB{Jcl(h}jka`Sih_-_Y!Zbf1I_p^3*VW#J#2MT+BO^Y><=6X)0Isk^2YlOfBZg{E_t{d^~+Z z-EYiJm z8yAaJcA~2!3?u{96)gz>40+_dY4VO`wbz}-t%lNV@G5IC8w9f00hi$%1{KOt`3j1J zR8Z+XjIeD@)ZssS*NXU#fxlwlWhnCjViOZL>iH{I6 zFvr(g_FBHWNWU!txv z;lc5Gsp=N;)iuhzOLnRC%<0b;dZ_rG0ezgB<8hCKy6ErkQ*-deOQOH0ATsF01Ch8a zUU@~tE4xR>ox}UH_&D%b+}+&8#|QhH`}q3djeGl?L^+D1$0&UVcUsF8rSCJU{wbOV z?XBI-z1=^?XAS(V!{-s-AXnqh01vn4OFM2P7ta70SdS3VzwVVZ9x*6}EPkjD3ufrs z2>o52;yi1tHrt`GsM`$w$uBRPbdupil+yI24>>;K`I#-~(-ip<=_tBWR05#Rl7kbO zQ%l6x+WYs~;`8Ea`>^vz_`u}wpmVrMDK7d91ow&fNzo5J0?i?g#7_o4u!Hz9=*JSH M_?^cdFy-j~0rtTVl#B`?9I7u_p>9pX) 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 diff --git a/obsolete/library/new/TEDITMENU b/obsolete/library/new/TEDITMENU deleted file mode 100644 index 70d40cc7..00000000 --- a/obsolete/library/new/TEDITMENU +++ /dev/null @@ -1,4538 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "24-Apr-95 15:10:41" {DSK}library>new>TEDITMENU.;1 275626 - - changes to%: (FNS \TEDIT.TABTYPE.SET) - - previous date%: "25-Aug-94 10:54:56" {DSK}export>lispcore>library>TEDITMENU.;4) - - -(* ; " -Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995 by Venue & Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT TEDITMENUCOMS) - -(RPAQQ TEDITMENUCOMS - [(FILES TEDITDCL) - (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (\SCRATCHLEN 64)) - (FILES (LOADCOMP) - TEDITDCL)) - [COMS (* ; "Simple Menu Button support") - (FNS MB.BUTTONEVENTINFN MB.DISPLAY MB.SETIMAGE MB.SELFN MB.SIZEFN MB.WHENOPERATEDFN - MB.COPYFN MB.GETFN MB.PUTFN MB.SHOWSELFN MBUTTON.CREATE MBUTTON.CHANGENAME - MBUTTON.FIND.BUTTON MBUTTON.FIND.NEXT.BUTTON MBUTTON.FIND.NEXT.FIELD MBUTTON.INIT - MBUTTON.NEXT.FIELD.AS.NUMBER MBUTTON.NEXT.FIELD.AS.PIECES - MBUTTON.NEXT.FIELD.AS.TEXT MBUTTON.NEXT.FIELD.AS.ATOM MBUTTON.SET.FIELD - MBUTTON.SET.NEXT.FIELD MBUTTON.SET.NEXT.BUTTON.STATE TEDITMENU.STREAM - \TEDITMENU.SELSCREENER) - (GLOBALVARS MBUTTONIMAGEFNS) - (DECLARE%: DONTEVAL@LOAD DOCOPY (P (MBUTTON.INIT)) - (ADDVARS (IMAGEOBJTYPES (TEditMenuButton FILE TEDITMENU GETFN MB.GETFN] - [COMS - (* ;; - "Three-state (ON-OFF-NEUTRAL) menu buttons, for, e.g., character properties like BOLD") - - (FNS MB.CREATE.THREESTATEBUTTON MB.THREESTATE.DISPLAY MB.THREESTATE.SHOWSELFN - MB.THREESTATE.WHENOPERATEDFN MB.THREESTATEBUTTON.FN THREESTATE.INIT) - (DECLARE%: DONTEVAL@LOAD DOCOPY (P (THREESTATE.INIT] - [COMS (* ; "One-of-N Menu button sets") - (FNS MB.CREATE.NWAYBUTTON MB.NB.DISPLAYFN MB.NB.WHENOPERATEDFN MB.NB.SIZEFN - MB.NWAYBUTTON.SELFN MB.NWAYMENU.NEWBUTTON NWAYBUTTON.INIT MB.NB.PACKITEMS - MB.NWAYBUTTON.ADDITEM) - (GLOBALVARS NWAYBUTTONIMAGEFNS) - (DECLARE%: DONTEVAL@LOAD DOCOPY (P (NWAYBUTTON.INIT)) - (ADDVARS (IMAGEOBJTYPES (NWayButton FILE TEDITMENU GETFN MB.GETFN] - [COMS - (* ;; "Two-state, toggling menu buttons.") - - (FNS \TEXTMENU.TOGGLE.CREATE \TEXTMENU.TOGGLE.DISPLAY \TEXTMENU.TOGGLE.SHOWSELFN - \TEXTMENU.TOGGLE.WHENOPERATEDFN \TEXTMENU.TOGGLEFN \TEXTMENU.TOGGLE.INIT - \TEXTMENU.SET.TOGGLE) - (GLOBALVARS \TOGGLEIMAGEFNS) - (DECLARE%: DONTEVAL@LOAD DOCOPY (P (\TEXTMENU.TOGGLE.INIT)) - (ADDVARS (IMAGEOBJTYPES (ToggleButton FILE TEDITMENU GETFN MB.GETFN] - [COMS - (* ;; "Margin Setting and display") - - (FNS DRAWMARGINSCALE MARGINBAR MARGINBAR.CREATE MB.MARGINBAR.SELFN MB.MARGINBAR.SIZEFN - MB.MARGINBAR.DISPLAYFN MDESCALE MSCALE MB.MARGINBAR.SHOWTAB MB.MARGINBAR.TABTRACK - \TEDIT.TABTYPE.SET MARGINBAR.INIT) - (BITMAPS \TEDIT.LEFTTAB \TEDIT.CENTERTAB \TEDIT.RIGHTTAB \TEDIT.DECIMALTAB - \TEDIT.DOTTED.LEFTTAB \TEDIT.DOTTED.CENTERTAB \TEDIT.DOTTED.RIGHTTAB - \TEDIT.DOTTED.DECIMALTAB TEDIT.EXTENDEDRIGHTMARK) - (GLOBALVARS MARGINBARIMAGEFNS) - (DECLARE%: DONTEVAL@LOAD DOCOPY (P (MARGINBAR.INIT)) - (ADDVARS (IMAGEOBJTYPES (MarginRuler FILE TEDITMENU GETFN MB.GETFN] - (COMS - (* ;; "Text menu creation and support") - - (FNS \TEXTMENU.START \TEXTMENU.DOC.CREATE TEXTMENU.CLOSEFN) - (BITMAPS TEXTMENUICON TEXTMENUICONMASK)) - [COMS (* ; "TEdit-specific support") - (FNS \TEDITMENU.CREATE \TEDIT.EXPANDED.MENU MB.DEFAULTBUTTON.FN - \TEDITMENU.RECORD.UNFORMATTED MB.DEFAULTBUTTON.ACTIONFN) - (FNS \TEDIT.CHARLOOKSMENU.CREATE \TEDIT.EXPANDEDCHARLOOKS.MENU \TEDIT.APPLY.BOLDNESS - \TEDIT.APPLY.CHARLOOKS \TEDIT.APPLY.OLINE \TEDIT.SHOW.CHARLOOKS - \TEDIT.NEUTRALIZE.CHARLOOKS \TEDIT.FILL.IN.CHARLOOKS.MENU - \TEDIT.NEUTRALIZE.CHARLOOKS.MENU \TEDIT.PARSE.CHARLOOKS.MENU \TEDIT.APPLY.SLOPE - \TEDIT.APPLY.STRIKEOUT \TEDIT.APPLY.ULINE) - (FNS \TEDITPARAMENU.CREATE \TEDIT.EXPANDEDPARA.MENU \TEDIT.APPLY.PARALOOKS - \TEDIT.SHOW.PARALOOKS \TEDIT.NEUTRALIZE.PARALOOKS.MENU \TEDIT.RECORD.TABLEADERS) - (FNS \TEDIT.SHOW.PAGEFORMATTING \TEDITPAGEMENU.CREATE \TEDIT.APPLY.PAGEFORMATTING - TEDIT.UNPARSE.PAGEFORMAT) - (COMS (* ; "Initialization Code") - (GLOBALVARS TEDIT.EXPANDED.MENU TEDIT.EXPANDEDPARA.MENU TEDIT.CHARLOOKS.MENU - TEDIT.MENUDIVIDER.SPEC TEDIT.EXPANDEDMENU.SPEC TEDIT.CHARLOOKSMENU.SPEC - TEDIT.PARAMENU.SPEC TEDIT.PAGEMENU.SPEC TEDIT.EXPANDED.PAGEMENU) - (FNS \TEDIT.MENU.INIT) - (DECLARE%: DONTEVAL@LOAD DOCOPY (P (\TEDIT.MENU.INIT) - (\TEDITMENU.CREATE) - (\TEDIT.CHARLOOKSMENU.CREATE) - (\TEDITPARAMENU.CREATE) - (\TEDITPAGEMENU.CREATE] - (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA) - (NLAML) - (LAMA]) - -(FILESLOAD TEDITDCL) -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RPAQQ \SCRATCHLEN 64) - - -(CONSTANTS (\SCRATCHLEN 64)) -) - - -(FILESLOAD (LOADCOMP) - TEDITDCL) -) - - - -(* ; "Simple Menu Button support") - -(DEFINEQ - -(MB.BUTTONEVENTINFN - [LAMBDA (OBJ STREAM SEL RELX RELY SELWINDOW TEXTSTREAM)(* ; "Edited 30-May-91 22:15 by jds") - - (* There was a buttn event inside a menu button. - Make sure that the button gets turned OFF when the mouse moves outside it.) - - (PROG [(OBJBOX (IMAGEOBJPROP OBJ 'BOUNDBOX] - (replace (SELECTION SELKIND) of SEL with 'VOLATILE) - (COND - ((IMAGEOBJPROP OBJ 'MENUBUTTON.SELECTED) - - (* This button is still active from an earlier hit. - Don't let it be selected again.) - - (RETURN 'DON'T)) - ((AND (IGEQ RELX 0) - (IGEQ RELY 0) - (ILEQ RELX (fetch XSIZE of OBJBOX)) - (ILEQ RELY (fetch YSIZE of OBJBOX))) - (* We're really inside the thing. - Return an indication that we're to - be left alone.) - (RETURN T)) - (T (* He's moved outside the button. - Don't permit the selection.) - (RETURN 'DON'T]) - -(MB.DISPLAY - [LAMBDA (OBJ STREAM MODE) (* ; "Edited 11-Jan-89 16:58 by jds") - - (* ;; "Display the innards of a menu button") - - (SELECTQ (IMAGESTREAMTYPE STREAM) - (DISPLAY - (* ;; "Going to the display. Use the cached bitmap version of the button") - - [PROG (BITMAP DS (OBJBOX (IMAGEOBJPROP OBJ 'BOUNDBOX)) - (X (DSPXPOSITION NIL STREAM)) - (Y (DSPYPOSITION NIL STREAM))) - [SETQ BITMAP (COND - ((IMAGEOBJPROP OBJ 'BITCACHE)) - (T (MB.SETIMAGE OBJ) - (IMAGEOBJPROP OBJ 'BITCACHE] - [BITBLT BITMAP 0 0 STREAM X (SETQ Y (IDIFFERENCE Y (fetch YDESC - of OBJBOX] - (* ; "Display the button's image") - (COND - ((EQ (IMAGEOBJPROP OBJ 'STATE) - 'ON) (* ; - "If the button is ON, mark it so.") - (BITBLT NIL 0 0 STREAM X Y (fetch XSIZE of OBJBOX) - (fetch YSIZE of OBJBOX) - 'TEXTURE - 'INVERT BLACKSHADE]) - (PROG (BITMAP DS (FONT (IMAGEOBJPROP OBJ 'MBFONT)) - (TEXT (IMAGEOBJPROP OBJ 'MBTEXT)) - OLOOKS) (* ; - "Going to some output image stream. Use the actual text.") - (SETQ OLOOKS (DSPFONT (FONTCOPY FONT 'DEVICE STREAM) - STREAM)) (* ; - "Change to the font for this menu button.") - (PRIN1 TEXT STREAM) (* ; "Print the button text") - (DSPFONT OLOOKS STREAM) (* ; - "And put the font back as it was.") - ]) - -(MB.SETIMAGE - [LAMBDA (OBJ) (* jds "23-Aug-84 13:22") - (PROG ((MBFONT (IMAGEOBJPROP OBJ 'MBFONT)) - (MBTEXT (IMAGEOBJPROP OBJ 'MBTEXT)) - BOX BITMAP DS) - (SETQ BOX (create IMAGEBOX - XSIZE _ (STRINGWIDTH MBTEXT MBFONT) - YSIZE _ (FONTPROP MBFONT 'HEIGHT) - YDESC _ (FONTPROP MBFONT 'DESCENT) - XKERN _ 0)) - (SETQ BITMAP (BITMAPCREATE (fetch XSIZE of BOX) - (fetch YSIZE of BOX))) - (IMAGEOBJPROP OBJ 'BITCACHE BITMAP) - (IMAGEOBJPROP OBJ 'BOUNDBOX BOX) - (SETQ DS (DSPCREATE BITMAP)) - (DSPXOFFSET 0 DS) - (DSPYOFFSET 0 DS) - (DSPFONT MBFONT DS) - (MOVETO 0 (FONTPROP MBFONT 'DESCENT) - DS) - (PRIN1 MBTEXT DS) - (RETURN OBJ]) - -(MB.SELFN - [LAMBDA (OBJ SEL W FN) (* ; "Edited 30-May-91 22:15 by jds") - (* Calls a menu-button's associated - function, then turns off the - highlighting of the menu button.) - (PROG [(TSEL (create SELECTION)) - (BUTTONFN (OR FN (IMAGEOBJPROP OBJ 'MBFN] - (\COPYSEL SEL TSEL) (* Save the selection that points to - the menu button.) - (replace (SELECTION SELKIND) of SEL with 'CHAR) - (replace (SELECTION SET) of SEL with NIL) - (replace (SELECTION ONFLG) of SEL with NIL) - (* Call the button's function) - (COND - ((NEQ (AND BUTTONFN (APPLY* BUTTONFN OBJ SEL W)) - 'DON'T) (* If the button fn left the - selection alone,) - (\FIXSEL TSEL (fetch (SELECTION \TEXTOBJ) of TSEL)) - (\SHOWSEL TSEL NIL NIL))) (* Turn off the button hilite) - ]) - -(MB.SIZEFN - [LAMBDA (OBJ STREAM CURX RIGHTMARGIN) (* jds "30-Aug-84 11:24") - (* Tell the size of a menu button) - (PROG ((FONT (IMAGEOBJPROP OBJ 'MBFONT)) - BOX) - [COND - ((DISPLAYSTREAMP STREAM) (* We're formatting for the DISPLAY) - ) - [(EQ 'INTERPRESS (IMAGESTREAMTYPE STREAM)) - (SETQ FONT (FONTCOPY FONT 'DEVICE 'INTERPRESS] - ((EQ 'PRESS (IMAGESTREAMTYPE STREAM)) - (SETQ FONT (FONTCOPY FONT 'DEVICE 'PRESS] - (SETQ BOX (create IMAGEBOX - XSIZE _ (STRINGWIDTH (IMAGEOBJPROP OBJ 'MBTEXT) - FONT) - YSIZE _ (FONTPROP FONT 'HEIGHT) - YDESC _ (FONTPROP FONT 'DESCENT) - XKERN _ 0)) - (IMAGEOBJPROP OBJ 'BOUNDBOX BOX) - (RETURN BOX]) - -(MB.WHENOPERATEDFN - [LAMBDA (OBJ DS OPERATION SEL) (* jds " 7-Feb-84 14:20") - (SELECTQ OPERATION - (HIGHLIGHTED (MB.SHOWSELFN OBJ SEL T DS)) - (UNHIGHLIGHTED (MB.SHOWSELFN OBJ SEL NIL DS)) - (SELECTED (MB.SELFN OBJ SEL DS)) - (DESELECTED) - NIL]) - -(MB.COPYFN - [LAMBDA (OBJ) (* jds "23-May-84 11:32") - (* Copy a menu button object.) - (create IMAGEOBJ - OBJECTDATUM _ (COPY (fetch (IMAGEOBJ OBJECTDATUM) of OBJ)) - IMAGEOBJPLIST _ (COPY (fetch (IMAGEOBJ IMAGEOBJPLIST) of OBJ)) - IMAGEOBJFNS _ (fetch (IMAGEOBJ IMAGEOBJFNS) of OBJ]) - -(MB.GETFN - [LAMBDA (OBJ FILE) (* ; "Edited 20-Aug-87 16:17 by jds") - (* READ a menu button from a file.) - (ERROR) - (PROG [(TEXT (IMAGEOBJPROP OBJ 'MBTEXT)) - (MBFN (IMAGEOBJPROP OBJ 'MBFN)) - (FONT (IMAGEOBJPROP OBJ 'MBFONT] - (\STRINGOUT FILE TEXT) - (\ATMOUT FILE MBFN) - (\ATMOUT FILE (FONTPROP FONT 'FAMILY)) - (\SMALLPOUT FILE (FONTPROP FONT 'SIZE)) - (for ATTR in (FONTPROP FONT 'FACE) do (\ATMOUT FILE ATTR]) - -(MB.PUTFN - [LAMBDA (OBJ FILE) (* ; "Edited 20-Aug-87 16:17 by jds") - - (* ;; - "Write a menu button from a file; suitable for re-reading using the image objects GETFN.") - - (PROG [(TEXT (IMAGEOBJPROP OBJ 'MBTEXT)) - (MBFN (IMAGEOBJPROP OBJ 'MBFN)) - (FONT (IMAGEOBJPROP OBJ 'MBFONT] - (HELP) - (\STRINGOUT FILE TEXT) (* ; "The button's image") - - (\ATMOUT FILE MBFN) (* ; "The FN called when hit") - - (\ATMOUT FILE (FONTPROP FONT 'FAMILY)) - (\SMALLPOUT FILE (FONTPROP FONT 'SIZE)) - (for ATTR in (FONTPROP FONT 'FACE) do (\ATMOUT FILE ATTR]) - -(MB.SHOWSELFN - [LAMBDA (OBJ SEL ON DS) (* ; "Edited 11-Jan-89 16:35 by jds") - (LET [(OBJBOX (IMAGEOBJPROP OBJ 'BOUNDBOX] - (OR (IMAGEOBJPROP OBJ 'BITCACHE) - (MB.DISPLAY OBJ)) (* ; - "MAKE SURE THE DISPLAY FORM EXISTS") - (BITBLT (IMAGEOBJPROP OBJ 'BITCACHE) - 0 0 DS 0 0 (fetch (IMAGEBOX XSIZE) of OBJBOX) - (fetch (IMAGEBOX YSIZE) of OBJBOX) - 'INPUT - 'REPLACE) - (COND - ((OR ON (EQ (IMAGEOBJPROP OBJ 'STATE) - 'ON)) - (BITBLT NIL 0 (fetch (IMAGEBOX YDESC) of OBJBOX) - DS 0 0 (fetch (IMAGEBOX XSIZE) of OBJBOX) - (fetch (IMAGEBOX YSIZE) of OBJBOX) - 'TEXTURE - 'INVERT BLACKSHADE]) - -(MBUTTON.CREATE - [LAMBDA (MBTEXT MBFN MBFONT IMAGEFNS) (* ; "Edited 11-Jan-89 16:10 by jds") - - (* ;; "Create a MENU BUTTON image object, and fill in its image and function-hook fields") - - (LET* ([REAL-FONT (OR MBFONT (FONTCLASSCOMPONENT DEFAULTFONT 'DISPLAY] - (OBJ (IMAGEOBJCREATE NIL (OR IMAGEFNS MBUTTONIMAGEFNS))) - (BOX (create IMAGEBOX - XSIZE _ (STRINGWIDTH MBTEXT REAL-FONT) - YSIZE _ (FONTPROP REAL-FONT 'HEIGHT) - YDESC _ (FONTPROP REAL-FONT 'DESCENT) - XKERN _ 0)) - BITMAP DS) - (IMAGEOBJPROP OBJ 'MBFN MBFN) (* ; - "The function to be called when the button is pushed") - (IMAGEOBJPROP OBJ 'MBTEXT MBTEXT) (* ; - "The text displayed in the button") - (IMAGEOBJPROP OBJ 'MBFONT REAL-FONT) (* ; "The font that text appears in") - (MB.SETIMAGE OBJ) (* ; - "Set up the image for the button, so we don't create it repeatedly.") - OBJ]) - -(MBUTTON.CHANGENAME - [LAMBDA (TEXTOBJ OBJ NEWNAME) (* jds "23-Aug-84 13:26") - - (* Change the text that appears in a button, and redisplay the button if it's - visible) - - (PROG (BOX BITMAP DS) - (IMAGEOBJPROP OBJ 'MBTEXT NEWNAME) - (MB.SETIMAGE OBJ) - (TEDIT.OBJECT.CHANGED TEXTOBJ OBJ]) - -(MBUTTON.FIND.BUTTON - [LAMBDA (LABEL TEXTSTREAM CH#) (* ; "Edited 22-Apr-93 15:40 by jds") - (* "27-Sep-84 00:52" gbn) - - (* * returns the piece no containing the imageobj with MBTEXT prop LABEL) - - (PROG ((LABELATOM (MKATOM LABEL)) - OBJ STARTPCNO (PCTB (fetch (TEXTOBJ PCTB) of (TEXTOBJ TEXTSTREAM))) - START-OF-PIECE PC) - (RETURN (first (SETQ PC (\CHTOPC (OR CH# 1) - PCTB T)) while (AND PC (NOT (ATOM PC))) - do (SETQ OBJ (fetch (PIECE POBJ) of PC)) - (COND - ([AND OBJ (EQ LABELATOM (MKATOM (IMAGEOBJPROP OBJ 'MBTEXT] - (RETURN PCNO))) - (add START-OF-PIECE (fetch (PIECE PLEN) of PC)) - (SETQ PC (fetch (PIECE NEXTPIECE) of PC]) - -(MBUTTON.FIND.NEXT.BUTTON - [LAMBDA (TEXTOBJ CH#) (* ; "Edited 22-Apr-93 16:39 by jds") - - (* ;; "Finds the next instance of an OBJECT which looks like a menu button, 3-state button, or menuobj. If none is found, return NIL") - - (PROG ((PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - START-OF-PIECE) - (RETURN (bind PC OBJ first (SETQ PC (\CHTOPC CH# PCTB T)) - while (AND PC (NOT (ATOM PC))) - do (* ; - "Loo thru the piece table, looking for pieces with objects in them") - (SETQ OBJ (fetch (PIECE POBJ) of PC)) - [COND - ((AND OBJ (OR (type? MBUTTON OBJ) - (type? MARGINBAR OBJ) - (type? NWAYBUTTON OBJ))) - (* ; - "Which are some kind of menu-buttonish object") - (RETURN (CONS OBJ START-OF-PIECE] - (add START-OF-PIECE (fetch (PIECE PLEN) of PC)) - (SETQ PC (fetch (PIECE NEXTPIECE) of PC]) - -(MBUTTON.FIND.NEXT.FIELD - [LAMBDA (TEXTOBJ CH# DON'TFIX) (* ; "Edited 22-Apr-93 16:53 by jds") - - (* ;; "Starting from CH#, find the next fill-in area (usually surrounded by a {-} pair), and select any text it contains. Returns the TEXTOBJ's SCRATCHSEL with the text selected. (If no insert point is found, NIL.)") - - (PROG ((PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - (SCRATCHSEL (fetch (TEXTOBJ SCRATCHSEL) of TEXTOBJ)) - CH1 PCNO PCNO1 PC CH LEN START-OF-PIECE (DEPTH 0)) - (COND - ((IGREATERP CH# (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ)) - (* ; - "Can't look past the end of the document") - (RETURN NIL))) - (SETQ PC (\CHTOPC CH# PCTB T)) - (while PC do (* ; - "Look thru the pieces for one which starts a user-fill-in area") - (COND - ((fetch (CHARLOOKS CLSELHERE) of (fetch (PIECE PLOOKS) - of PC)) - (* ; "Found it, so return") - (RETURN))) - (add START-OF-PIECE (fetch (PIECE PLEN) of PC)) - (SETQ PC (fetch (PIECE NEXTPIECE) of PC))) - (COND - (PC (* ; - "We found a starting point for a type-in field") - (add START-OF-PIECE (fetch (PIECE PLEN) of PC)) - (SETQ CH1 START-OF-PIECE) (* ; - "Remember the starting character number") - (SETQ PC (fetch (PIECE NEXTPIECE) of PC)) - (while PC do (COND - ((fetch (CHARLOOKS CLPROTECTED) - of (fetch (PIECE PLOOKS) of PC)) - (RETURN))) - (add START-OF-PIECE (fetch (PIECE PLEN) of PC)) - (SETQ PC (fetch (PIECE NEXTPIECE) of PC))) - (SETQ LEN (IDIFFERENCE START-OF-PIECE CH1)) - (replace (SELECTION CH#) of SCRATCHSEL with CH1) - (replace (SELECTION CHLIM) of SCRATCHSEL with (IPLUS CH1 - (IMAX 0 LEN))) - (replace (SELECTION DCH) of SCRATCHSEL with LEN) - (replace (SELECTION SELOBJ) of SCRATCHSEL with NIL) - (replace (SELECTION POINT) of SCRATCHSEL with 'LEFT) - (* ; - "So if it's used, it'll be in the correct spot.") - (replace (SELECTION SELKIND) of SCRATCHSEL with 'CHAR)) - (T (* ; - "No fill-in blank found, so return an indication.") - (RETURN NIL))) - (COND - ((NOT DON'TFIX) - (\FIXSEL SCRATCHSEL TEXTOBJ))) - (RETURN SCRATCHSEL]) - -(MBUTTON.INIT - [LAMBDA NIL (* jds "12-Feb-85 14:32") - (SETQ MBUTTONIMAGEFNS (IMAGEFNSCREATE (FUNCTION MB.DISPLAY) - (FUNCTION MB.SIZEFN) - (FUNCTION MB.PUTFN) - (FUNCTION MB.GETFN) - 'MB.COPYFN - (FUNCTION MB.BUTTONEVENTINFN) - 'NILL - 'NILL - 'NILL - 'NILL - 'NILL - (FUNCTION MB.WHENOPERATEDFN) - 'NIL - 'TEditMenuButton]) - -(MBUTTON.NEXT.FIELD.AS.NUMBER - [LAMBDA (TEXTOBJ CH#) (* ; "Edited 12-Jun-90 19:00 by mitani") - (MBUTTON.FIND.NEXT.FIELD TEXTOBJ CH# T) - (NUMBERP (MKATOM (TEDIT.SEL.AS.STRING (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ) - (fetch (TEXTOBJ SCRATCHSEL) of TEXTOBJ]) - -(MBUTTON.NEXT.FIELD.AS.PIECES - [LAMBDA (TEXTOBJ CH#) (* ; "Edited 30-Mar-94 16:02 by jds") - - (* ;; - "Find the next fill-in field in the menu after CH#, and return its contents as A LIST OF PIECES.") - - (MBUTTON.FIND.NEXT.FIELD TEXTOBJ CH# T) - (TEDIT.SELECTED.PIECES TEXTOBJ (fetch (TEXTOBJ SCRATCHSEL) of TEXTOBJ) - NIL - 'CL:IDENTITY]) - -(MBUTTON.NEXT.FIELD.AS.TEXT - [LAMBDA (TEXTOBJ CH#) (* ; "Edited 22-Apr-93 16:14 by jds") - - (* ;; "Find the next fill-in field in the menu after CH#, and return its contents as a string.") - - (MBUTTON.FIND.NEXT.FIELD TEXTOBJ CH# T) - (TEDIT.SEL.AS.STRING (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ) - (fetch (TEXTOBJ SCRATCHSEL) of TEXTOBJ]) - -(MBUTTON.NEXT.FIELD.AS.ATOM - [LAMBDA (TEXTOBJ CH#) (* ; "Edited 12-Jun-90 19:00 by mitani") - - (* Find the next fill-in field, and return its contents as an atom. - If the field is empty, return NIL.) - - (MBUTTON.FIND.NEXT.FIELD TEXTOBJ CH# T) (* Move to the next fill-in blank.) - (PROG [(STR (TEDIT.SEL.AS.STRING (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ) - (fetch (TEXTOBJ SCRATCHSEL) of TEXTOBJ] - (COND - ((ZEROP (NCHARS STR)) (* The field is empty.) - (RETURN NIL)) - (T (* It's non-empty. - Convert the string to an atom.) - (RETURN (MKATOM STR]) - -(MBUTTON.SET.FIELD - [LAMBDA (TEXTSTREAM FIELD VALUE) (* ; "Edited 22-Apr-93 10:56 by jds") - - (* ;; "Makes the contents of the field with name FIELD be VALUE.") - - (PROG ((TEXTOBJ (TEXTOBJ TEXTSTREAM)) - PCTB OBJ SAVED.SEL FIELD.SEL PCNO NEW-STRING) - (SETQ PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - (SETQ PCNO (MBUTTON.FIND.BUTTON FIELD TEXTSTREAM)) - (COND - (PCNO [SETQ FIELD.SEL (MBUTTON.FIND.NEXT.FIELD TEXTOBJ (fetch (PCTNODE CHNUM) - of (FINDNODE-INDEX - PCTB PCNO] - (* ; - "select the field following this button.") - (COND - (FIELD.SEL (* ; - "there are contents to set for this button") - (\FIXSEL FIELD.SEL TEXTOBJ) - (TEDIT.SETSEL TEXTSTREAM (fetch (SELECTION CH#) of FIELD.SEL) - (fetch (SELECTION DCH) of FIELD.SEL) - (fetch (SELECTION POINT) of FIELD.SEL) - T) - (SETQ NEW-STRING (MKSTRING VALUE)) - (COND - ((ZEROP (NCHARS NEW-STRING)) (* ; - "Nothing to replace, so just delete it.") - (TEDIT.DELETE TEXTSTREAM)) - (T (* ; - "there IS new info, so insert it.") - (TEDIT.INSERT TEXTSTREAM (MKSTRING VALUE]) - -(MBUTTON.SET.NEXT.FIELD - [LAMBDA (TEXTOBJ CH# NEWVALUE DONTUPDATESCREEN) (* ; "Edited 30-May-91 22:15 by jds") - - (* SET the text content of the next fill-in field in this document to be - NEWVALUE) - - (PROG ((SCRATCHSEL (fetch (TEXTOBJ SCRATCHSEL) of TEXTOBJ))) - (MBUTTON.FIND.NEXT.FIELD TEXTOBJ CH#) (* Find the next menu fill-in field) - (\FIXSEL SCRATCHSEL TEXTOBJ) - - (* Fix up the SELECTION that describes its contents, so we've got the right - screen coordinates &c) - - (OR (ZEROP (fetch (SELECTION DCH) of SCRATCHSEL)) - (\TEDIT.DELETE SCRATCHSEL TEXTOBJ T)) (* If there is text in that fill-in, - delete it to make room for ours) - (COND - (NEWVALUE (* Only insert something if there IS - something to insert.) - (TEDIT.\INSERT (MKSTRING NEWVALUE) - SCRATCHSEL TEXTOBJ))) (* Then fill it with out new value.) - ]) - -(MBUTTON.SET.NEXT.BUTTON.STATE - [LAMBDA (TEXTOBJ STARTINGCH NEWSTATE) (* jds "31-Jul-85 22:09") - - (* * Find the next menu button in the document, and set its state to NEWSTATE. - Return 1 + the CH# of the button, for further searchers) - - (PROG* ((NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ STARTINGCH)) - (BUTTON (CAR NEXTB))) - (IMAGEOBJPROP BUTTON 'STATE NEWSTATE) - (RETURN (ADD1 (CDR NEXTB]) - -(TEDITMENU.STREAM - [LAMBDA (TEXTSTREAM) (* jds "13-Aug-84 14:10") - - (* returns the textstream of the teditmenu attached to this stream if any) - - (PROG (MENUW (MAINWINDOW (\TEDIT.MAINW TEXTSTREAM))) - [SETQ MENUW (for W in (ATTACHEDWINDOWS MAINWINDOW) - thereis (AND (WINDOWPROP W 'TEDITMENU) - (EQUAL (WINDOWPROP W 'TITLE) - "TEdit Menu"] - (RETURN (COND - (MENUW (TEXTSTREAM MENUW]) - -(\TEDITMENU.SELSCREENER - [LAMBDA (TEXTOBJ SEL SELECTMODE FINAL?) (* ; "Edited 30-May-91 22:15 by jds") - - (* Called to screen potential selections in the TEdit menu window; - if an edit op is in progress, no selection will be permitted.-) - - (PROG ((MAINW (WINDOWPROP (fetch (TEXTOBJ \WINDOW) of TEXTOBJ) - 'MAINWINDOW)) - MAINTEXT) - (SETQ MAINTEXT (WINDOWPROP MAINW 'TEXTOBJ)) - (COND - ((AND (EQ (fetch (SELECTION CH#) of SEL) - (fetch (SELECTION CH#) of TEDIT.SCRATCHSELECTION)) - (EQ (fetch (SELECTION DCH) of SEL) - (fetch (SELECTION DCH) of TEDIT.SCRATCHSELECTION)) - (fetch (TEXTOBJ EDITOPACTIVE) of MAINTEXT)) - (\COPYSEL SEL TEDIT.SCRATCHSELECTION) - (RETURN 'DON'T)) - ((EQ (fetch (TEXTOBJ EDITOPACTIVE) of MAINTEXT) - T) - (TEDIT.PROMPTPRINT TEXTOBJ "Edit operation in progress; please wait." T) - (RETURN 'DON'T)) - ((fetch (TEXTOBJ EDITOPACTIVE) of MAINTEXT) - (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT (fetch (TEXTOBJ EDITOPACTIVE) of MAINTEXT) - " in progress; please wait.") - T) - (\COPYSEL SEL TEDIT.SCRATCHSELECTION) - (RETURN 'DON'T]) -) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS MBUTTONIMAGEFNS) -) -(DECLARE%: DONTEVAL@LOAD DOCOPY - -(MBUTTON.INIT) - - -(ADDTOVAR IMAGEOBJTYPES (TEditMenuButton FILE TEDITMENU GETFN MB.GETFN)) -) - - - -(* ;; "Three-state (ON-OFF-NEUTRAL) menu buttons, for, e.g., character properties like BOLD") - -(DEFINEQ - -(MB.CREATE.THREESTATEBUTTON - [LAMBDA (TEXT FONT STATECHANGEFN INITSTATE) (* jds "24-Sep-86 00:49") - (PROG ((OBJ (IMAGEOBJCREATE NIL THREESTATEIMAGEFNS)) - (BOX (create IMAGEBOX - XSIZE _ (STRINGWIDTH TEXT FONT) - YSIZE _ (FONTPROP FONT 'HEIGHT) - YDESC _ (FONTPROP FONT 'DESCENT) - XKERN _ 0)) - DS BITMAP X Y) - (SETQ X (fetch XSIZE of BOX)) - (SETQ Y (fetch YSIZE of BOX)) - (IMAGEOBJPROP OBJ 'MBTEXT TEXT) - (IMAGEOBJPROP OBJ 'MBFONT FONT) - (IMAGEOBJPROP OBJ 'MBFN 'MB.THREESTATEBUTTON.FN) - (IMAGEOBJPROP OBJ 'STATECHANGEFN STATECHANGEFN) - (IMAGEOBJPROP OBJ 'STATE (OR INITSTATE 'NEUTRAL)) - (SETQ BITMAP (BITMAPCREATE X Y)) - (IMAGEOBJPROP OBJ 'BITCACHE BITMAP) - (SETQ DS (DSPCREATE BITMAP)) - (DSPXOFFSET 0 DS) - (DSPYOFFSET 0 DS) - (DSPFONT FONT DS) - (MOVETO 0 (FONTPROP FONT 'DESCENT) - DS) - (PRIN1 (IMAGEOBJPROP OBJ 'MBTEXT) - DS) - (RETURN OBJ]) - -(MB.THREESTATE.DISPLAY - [LAMBDA (OBJ STREAM MODE) (* jds "30-Aug-84 13:53") - (* Display the innards of a menu - button) - (PROG (DS (OBJBOX (IMAGEOBJPROP OBJ 'BOUNDBOX)) - (FONT (IMAGEOBJPROP OBJ 'MBFONT)) - (CURX (DSPXPOSITION NIL STREAM)) - (CURY (DSPYPOSITION NIL STREAM)) - BITMAP X Y) - (OR OBJBOX (SETQ OBJBOX (MB.SIZEFN OBJ STREAM))) (* Make sure the size is set.) - (SETQ X (fetch XSIZE of OBJBOX)) - (SETQ Y (fetch YSIZE of OBJBOX)) - (COND - ((SETQ BITMAP (IMAGEOBJPROP OBJ 'BITCACHE)) (* The image bitmap exists already. - Use it.) - ) - (T (* Need to create an image for this - object.) - (SETQ BITMAP (BITMAPCREATE X Y)) - (IMAGEOBJPROP OBJ 'BITCACHE BITMAP) - (SETQ DS (DSPCREATE BITMAP)) - (DSPXOFFSET 0 DS) - (DSPYOFFSET 0 DS) - (DSPFONT FONT DS) - (MOVETO 0 (FONTPROP FONT 'DESCENT) - DS) - (PRIN1 (IMAGEOBJPROP OBJ 'MBTEXT) - DS))) - (BITBLT BITMAP 0 0 STREAM CURX (IDIFFERENCE CURY (fetch YDESC of OBJBOX)) - X Y 'INPUT 'PAINT) - (SELECTQ (IMAGEOBJPROP OBJ 'STATE) - (ON - - (* The button is ON. Display it as white text on black background) - - (BITBLT NIL 0 0 STREAM CURX (IDIFFERENCE CURY (fetch YDESC of OBJBOX)) - X Y 'TEXTURE 'INVERT BLACKSHADE)) - (OFF - - (* The button is OFF. Mark it with a diagonal line thru it.) - - (DRAWLINE CURX (IDIFFERENCE CURY (fetch YDESC of OBJBOX)) - (SUB1 (IPLUS CURX X)) - (SUB1 (IPLUS (IDIFFERENCE CURY (fetch YDESC of OBJBOX)) - Y)) - 1 - 'PAINT STREAM)) - (NEUTRAL (* The button is neutral. - Just display it regular.)) - NIL]) - -(MB.THREESTATE.SHOWSELFN - [LAMBDA (OBJ SEL ON DS) (* ; "Edited 30-May-91 22:16 by jds") - (PROG [(IMAGEBOX (OR (IMAGEOBJPROP OBJ 'BOUNDBOX) - (IMAGEBOX OBJ DS] - (COND - (ON (SELECTQ (IMAGEOBJPROP OBJ 'STATE) - (ON (* Switch from ON to NEUTRAL) - (BITBLT NIL 0 0 DS 0 0 (fetch XSIZE of IMAGEBOX) - (fetch YSIZE of IMAGEBOX) - 'TEXTURE - 'INVERT BLACKSHADE)) - (OFF (* Switch from OFF to ON) - (BITBLT (IMAGEOBJPROP OBJ 'BITCACHE) - 0 0 DS 0 0 (fetch XSIZE of IMAGEBOX) - (fetch YSIZE of IMAGEBOX) - 'INPUT - 'REPLACE) - (BITBLT NIL 0 0 DS 0 0 (fetch XSIZE of IMAGEBOX) - (fetch YSIZE of IMAGEBOX) - 'TEXTURE - 'INVERT BLACKSHADE)) - (NEUTRAL (* Switch from NEUTRAL to OFF) - (DRAWLINE 0 0 (SUB1 (fetch XSIZE of IMAGEBOX)) - (SUB1 (fetch YSIZE of IMAGEBOX)) - 1 - 'PAINT DS)) - NIL)) - ((fetch (SELECTION SET) of SEL) - (SELECTQ (IMAGEOBJPROP OBJ 'STATE) - (ON (* Switch from NEUTRAL to ON) - (BITBLT NIL 0 0 DS 0 0 (fetch XSIZE of IMAGEBOX) - (fetch YSIZE of IMAGEBOX) - 'TEXTURE - 'INVERT BLACKSHADE)) - (OFF (* Switch from ON to OFF) - (BITBLT NIL 0 0 DS 0 0 (fetch XSIZE of IMAGEBOX) - (fetch YSIZE of IMAGEBOX) - 'TEXTURE - 'INVERT BLACKSHADE) - (DRAWLINE 0 0 (SUB1 (fetch XSIZE of IMAGEBOX)) - (SUB1 (fetch YSIZE of IMAGEBOX)) - 1 - 'PAINT DS)) - (NEUTRAL (* Switch from OFF to NEUTRAL) - (BITBLT (IMAGEOBJPROP OBJ 'BITCACHE) - 0 0 DS 0 0 (fetch XSIZE of IMAGEBOX) - (fetch YSIZE of IMAGEBOX) - 'INPUT - 'REPLACE)) - NIL]) - -(MB.THREESTATE.WHENOPERATEDFN - [LAMBDA (OBJ DS OPERATION SEL) (* ; "Edited 30-May-91 22:16 by jds") - (* Handle operations on a - three-state button) - (SELECTQ OPERATION - (HIGHLIGHTED (* It is being hilighted) - (MB.THREESTATE.SHOWSELFN OBJ SEL T DS)) - (UNHIGHLIGHTED (* And being de-hilighted) - (MB.THREESTATE.SHOWSELFN OBJ SEL NIL DS)) - (SELECTED (* It's being selected) - (MB.THREESTATEBUTTON.FN OBJ SEL DS) (* Run the state-changing function) - (replace (SELECTION SET) of SEL with NIL) - (* And mar the selection turned off, - so others can use it without - trashing us) - (replace (SELECTION ONFLG) of SEL with NIL) - (replace (SELECTION SET) of TEDIT.SELECTION with NIL)) - (DESELECTED) - NIL]) - -(MB.THREESTATEBUTTON.FN - [LAMBDA (OBJ SEL W) (* ; "Edited 30-May-91 22:16 by jds") - (* MBFN for TEdit default menu item - buttons.) - (PROG ((TEXTOBJ (fetch (SELECTION \TEXTOBJ) of SEL)) - (STATECHANGEFN (IMAGEOBJPROP OBJ 'STATECHANGEFN)) - OFILE CH NEWSTATE) - (SETQ NEWSTATE (SELECTQ (IMAGEOBJPROP OBJ 'STATE) - (OFF 'ON) - (ON 'NEUTRAL) - (NEUTRAL 'OFF) - 'ON)) - (if STATECHANGEFN - then (* apply the user supplied state - change fn if she supplied one) - (APPLY* STATECHANGEFN OBJ NEWSTATE (TEXTSTREAM TEXTOBJ))) - (IMAGEOBJPROP OBJ 'STATE NEWSTATE) - (replace (SELECTION ONFLG) of SEL with NIL]) - -(THREESTATE.INIT - [LAMBDA NIL (* jds " 9-Feb-86 15:17") - (* Initialize the IMAGEFNS for 3-state - menu button IMAGEOBJs) - (SETQ THREESTATEIMAGEFNS (IMAGEFNSCREATE (FUNCTION MB.THREESTATE.DISPLAY) - (FUNCTION MB.SIZEFN) - (FUNCTION MB.PUTFN) - (FUNCTION MB.GETFN) - (FUNCTION MB.COPYFN) - (FUNCTION MB.BUTTONEVENTINFN) - 'NILL - 'NILL - 'NILL - 'NILL - 'NILL - (FUNCTION MB.THREESTATE.WHENOPERATEDFN) - 'NILL - '3StateMenuButton]) -) -(DECLARE%: DONTEVAL@LOAD DOCOPY - -(THREESTATE.INIT) -) - - - -(* ; "One-of-N Menu button sets") - -(DEFINEQ - -(MB.CREATE.NWAYBUTTON - [LAMBDA (BUTTONS FONT CHANGESTATEFN INITSTATE MAXITEMS/LINE) - (* gbn "24-Sep-84 15:31") - (PROG ((OBJECT (IMAGEOBJCREATE NIL NWAYBUTTONIMAGEFNS)) - HEIGHT IMAGES IMAGE DS DESCENT SPACING SIDEEFFECTFNS WIDTHS TWIDTHS) - (SETQ FONT (OR FONT (FONTCREATE 'HELVETICA 10))) - (SETQ HEIGHT (FONTPROP FONT 'HEIGHT)) - (SETQ DESCENT (FONTPROP FONT 'DESCENT)) - (SETQ WIDTHS (for BUTTON in BUTTONS collect (STRINGWIDTH (COND - ((NLISTP BUTTON) - BUTTON) - (T (CAR BUTTON))) - FONT))) - (SETQ IMAGES (for WIDTH in WIDTHS as BUTTON in BUTTONS collect (BITMAPCREATE WIDTH HEIGHT)) - ) - (SETQ SPACING (STRINGWIDTH " " FONT)) - [SETQ SIDEEFFECTFNS (for BUTTON in BUTTONS collect (AND (LISTP BUTTON) - (CADR BUTTON] - (SETQ DS (DSPCREATE)) - (DSPXOFFSET 0 DS) - (DSPYOFFSET 0 DS) - (DSPFONT FONT DS) - (DSPRIGHTMARGIN 32000 DS) - (for IMAGE in IMAGES as BUTTON in BUTTONS do (DSPDESTINATION IMAGE DS) - (MOVETO 0 DESCENT DS) - (PRIN1 (COND - ((NLISTP BUTTON) - BUTTON) - (T (CAR BUTTON))) - DS)) - (IMAGEOBJPROP OBJECT 'MINWIDTH (for WIDTH in WIDTHS largest WIDTH)) - (* We always need at least one - button's width) - (IMAGEOBJPROP OBJECT 'MINHEIGHT (IPLUS HEIGHT 2)) (* And at least one button's height) - [IMAGEOBJPROP OBJECT 'MAXWIDTH (COND - [MAXITEMS/LINE (SETQ TWIDTHS (SORT (COPY WIDTHS))) - (IPLUS (CAR TWIDTHS) - (for WIDTH in (CDR TWIDTHS) as I - from 1 to (SUB1 MAXITEMS/LINE) - sum (IPLUS WIDTH SPACING] - (T (IPLUS (CAR WIDTHS) - (for WIDTH in (CDR WIDTHS) - sum (IPLUS WIDTH SPACING] - - (* At most, we're as wide as the N widest buttons put together) - - (IMAGEOBJPROP OBJECT 'MAXHEIGHT (ITIMES (IPLUS HEIGHT 2) - (LENGTH BUTTONS))) - (IMAGEOBJPROP OBJECT 'ITEMSPACE SPACING) - (IMAGEOBJPROP OBJECT 'BUTTONS BUTTONS) - (IMAGEOBJPROP OBJECT 'BUTTONIMAGES IMAGES) - (IMAGEOBJPROP OBJECT 'BUTTONHEIGHT (IPLUS HEIGHT 2)) - (IMAGEOBJPROP OBJECT 'BUTTONWIDTHS WIDTHS) - (IMAGEOBJPROP OBJECT 'NBUTTONS (LENGTH BUTTONS)) - (IMAGEOBJPROP OBJECT 'STATE INITSTATE) - (IMAGEOBJPROP OBJECT 'SELECTEDBUTTON NIL) - (IMAGEOBJPROP OBJECT 'SIDEEFFECTFNS SIDEEFFECTFNS) - (IMAGEOBJPROP OBJECT 'DESCENT DESCENT) - (IMAGEOBJPROP OBJECT 'MBFONT FONT) - (IMAGEOBJPROP OBJECT 'MAXITEMS/LINE MAXITEMS/LINE) - (RETURN OBJECT]) - -(MB.NB.DISPLAYFN - [LAMBDA (OBJ STREAM MODE) (* jds "28-Aug-84 15:07") - (* Display the innards of a menu - button) - (PROG (BITMAP DS (OBJBOX (IMAGEOBJPROP OBJ 'BOUNDBOX)) - (X (DSPXPOSITION NIL STREAM)) - (Y (DSPYPOSITION NIL STREAM)) - (BUTTONX (IMAGEOBJPROP OBJ 'BUTTONX)) - (BUTTONY (IMAGEOBJPROP OBJ 'BUTTONY)) - (BUTTONLIST (IMAGEOBJPROP OBJ 'BUTTONS)) - (BUTTONIMAGES (IMAGEOBJPROP OBJ 'BUTTONIMAGES)) - STATE) - [COND - ((SETQ BITMAP (IMAGEOBJPROP OBJ 'IMAGECACHE)) (* The button image exists already) - ) - (T (* Have to make one.) - (SETQ BITMAP (BITMAPCREATE (fetch XSIZE of OBJBOX) - (fetch YSIZE of OBJBOX))) - (IMAGEOBJPROP OBJ 'IMAGECACHE BITMAP) - (SETQ DS (DSPCREATE BITMAP)) - (DSPXOFFSET 0 DS) - (DSPYOFFSET 0 DS) - (DSPFONT (IMAGEOBJPROP OBJ 'MBFONT) - DS) - (for X in BUTTONX as Y in BUTTONY as IMAGE in BUTTONIMAGES - do (* Display the images) - (BITBLT IMAGE 0 0 DS X Y NIL NIL 'INPUT 'REPLACE] - [BITBLT BITMAP 0 0 STREAM X (SETQ Y (IDIFFERENCE Y (fetch YDESC of OBJBOX] - (* Display the button's image) - (COND - ((SETQ STATE (IMAGEOBJPROP OBJ 'STATE)) (* There's a selected button.) - (for BXVAL in BUTTONX as BYVAL in BUTTONY as IMAGE in BUTTONIMAGES as BUTTON - in BUTTONLIST when (EQ STATE BUTTON) do (BITBLT IMAGE 0 0 STREAM (IPLUS X BXVAL) - (IPLUS Y BYVAL) - NIL NIL 'INVERT 'REPLACE]) - -(MB.NB.WHENOPERATEDFN - [LAMBDA (OBJ DS OPERATION SEL) (* ; "Edited 30-May-91 22:16 by jds") - (SELECTQ OPERATION - (HIGHLIGHTED (* (MB.SHOWSELFN OBJ SEL T DS))) - (UNHIGHLIGHTED (* (MB.SHOWSELFN OBJ SEL NIL DS))) - (SELECTED (* There may be a side-effect to - occur upon selection.) - [PROG ((STATE (IMAGEOBJPROP OBJ 'STATE)) - FN) - (for BUTTON in (IMAGEOBJPROP OBJ 'BUTTONS) as SIDEFN - in (IMAGEOBJPROP OBJ 'SIDEEFFECTFNS) when (EQ STATE BUTTON) - do (COND - (SIDEFN (MB.SELFN OBJ SEL DS SIDEFN] - (replace (SELECTION SET) of SEL with NIL)) - (DESELECTED) - NIL]) - -(MB.NB.SIZEFN - [LAMBDA (OBJ STREAM CURX RIGHTMARGIN) (* jds " 6-Sep-84 14:19") - (* Tell the size of an n-way menu) - (PROG ((OLDBOX (IMAGEOBJPROP OBJ 'BOUNDBOX)) - BOX - (MAXITEMS/LINE (IMAGEOBJPROP OBJ 'MAXITEMS/LINE)) - (MAXWIDTH (IMAGEOBJPROP OBJ 'MAXWIDTH)) - (MINWIDTH (IMAGEOBJPROP OBJ 'MINWIDTH)) - (MAXHEIGHT (IMAGEOBJPROP OBJ 'MAXHEIGHT)) - (MINHEIGHT (IMAGEOBJPROP OBJ 'MINHEIGHT)) - (LINEHEIGHT (IMAGEOBJPROP OBJ 'LINEHEIGHT)) - (BUTTONHEIGHT (IMAGEOBJPROP OBJ 'BUTTONHEIGHT)) - (BUTTONWIDTHS (IMAGEOBJPROP OBJ 'BUTTONWIDTHS)) - (SPACING (IMAGEOBJPROP OBJ 'ITEMSPACE)) - (SLACK (IDIFFERENCE RIGHTMARGIN CURX)) - BUTTONX BUTTONY BUTTONINFO WIDTH HEIGHT) - [COND - ((AND (IGEQ SLACK MAXWIDTH) - (NOT MAXITEMS/LINE)) - - (* There's space for all the items on one line. - Use it) - - (SETQ WIDTH MAXWIDTH) - (SETQ HEIGHT MINHEIGHT) - [SETQ BUTTONX (bind (CURX _ 0) for ITEM in BUTTONWIDTHS - collect (PROG1 CURX (add CURX SPACING) - (add CURX ITEM] - (SETQ BUTTONY (for ITEM in BUTTONWIDTHS collect 0))) - [(ILEQ SLACK MINWIDTH) (* Have to stack it vertically.) - (SETQ WIDTH MINWIDTH) - (SETQ HEIGHT MAXHEIGHT) - (SETQ BUTTONX (for ITEM in BUTTONWIDTHS collect 0)) - (SETQ BUTTONY (bind (CURY _ (ITIMES BUTTONHEIGHT (LENGTH BUTTONWIDTHS))) for ITEM - in BUTTONWIDTHS collect (add CURY (IMINUS BUTTONHEIGHT] - (T (SETQ BUTTONINFO (MB.NB.PACKITEMS SLACK BUTTONWIDTHS SPACING MAXITEMS/LINE)) - [SETQ BUTTONX (for LINE in BUTTONINFO join (COPY (CDR LINE] - [SETQ BUTTONY (bind (CURY _ (ITIMES BUTTONHEIGHT (LENGTH BUTTONINFO))) for LINE - in BUTTONINFO join (PROGN (SETQ CURY (IDIFFERENCE CURY BUTTONHEIGHT) - ) - (for X in (CDR LINE) collect CURY] - [SETQ WIDTH (CAR (for LINE in BUTTONINFO largest (CAR LINE] - (SETQ HEIGHT (ITIMES BUTTONHEIGHT (LENGTH BUTTONINFO] - (COND - ((AND OLDBOX (IEQP WIDTH (fetch XSIZE of OLDBOX)) - (IEQP HEIGHT (fetch YSIZE of OLDBOX))) (* If nothing changed, don't bother - reformatting.) - (RETURN OLDBOX)) - (T (* Otherwise invalidate the image - cache) - (IMAGEOBJPROP OBJ 'IMAGECACHE NIL))) - (SETQ BOX (create IMAGEBOX - XSIZE _ WIDTH - YSIZE _ HEIGHT - YDESC _ (IMAGEOBJPROP OBJ 'DESCENT) - XKERN _ 0)) - (IMAGEOBJPROP OBJ 'BOUNDBOX BOX) - (IMAGEOBJPROP OBJ 'BUTTONX BUTTONX) - (IMAGEOBJPROP OBJ 'BUTTONY BUTTONY) - (RETURN BOX]) - -(MB.NWAYBUTTON.SELFN - [LAMBDA (OBJ W SEL MOUSEX MOUSEY) (* ; "Edited 30-May-91 22:16 by jds") - (* Selecting an NWAY button.) - (PROG ((TEXTOBJ (fetch (SELECTION \TEXTOBJ) of SEL)) - (OBJBOX (IMAGEOBJPROP OBJ 'BOUNDBOX)) - (OLDSTATE (IMAGEOBJPROP OBJ 'STATE)) - (BUTTONLIST (IMAGEOBJPROP OBJ 'BUTTONS)) - (BUTTONX (IMAGEOBJPROP OBJ 'BUTTONX)) - (BUTTONIMAGES (IMAGEOBJPROP OBJ 'BUTTONIMAGES)) - (BUTTONY (IMAGEOBJPROP OBJ 'BUTTONY)) - (BUTTONWIDTHS (IMAGEOBJPROP OBJ 'BUTTONWIDTHS)) - (BUTTONLIST (IMAGEOBJPROP OBJ 'BUTTONLIST)) - (BUTTONHEIGHT (IMAGEOBJPROP OBJ 'BUTTONHEIGHT)) - CH STATE) - [for BUTTON in BUTTONLIST as X in BUTTONX as Y in BUTTONY - as WIDTH in BUTTONWIDTHS as IMAGE in BUTTONIMAGES - do (COND - ((INSIDE? (create REGION - LEFT _ X - BOTTOM _ Y - WIDTH _ WIDTH - HEIGHT _ BUTTONHEIGHT) - MOUSEX MOUSEY) (* The mouse is pointing here. - Select this.) - (SETQ STATE BUTTON) - (BITBLT IMAGE 0 0 W X Y NIL NIL 'INVERT 'REPLACE)) - ((EQ OLDSTATE BUTTON) (* This was the old selection - (and it's different, too)%. - Unselect it) - (BITBLT IMAGE 0 0 W X Y NIL NIL 'INPUT 'REPLACE] - (IMAGEOBJPROP OBJ 'STATE STATE) - (RETURN T]) - -(MB.NWAYMENU.NEWBUTTON - [LAMBDA (TEXTOBJ CH# OLDBUTTON NEWBUTTON) (* jds " 8-Feb-84 19:41") - - (* Given a hook on an existing button, and an insertion point, insert a new - button) - - (PROG ((ARBITRATOR (IMAGEOBJPROP OLDBUTTON 'ARBITRATOR)) - BUTTON) - (IMAGEOBJPROP BUTTON 'ARBITRATOR ARBITRATOR) - (TEDIT.INSERT.OBJECT BUTTON TEXTOBJ CH#) - (TEDIT.INSERT TEXTOBJ " " (ADD1 CH#)) - (TEDIT.LOOKS TEXTOBJ '(PROTECTED ON) (ADD1 CH#) - 2) - (RETURN BUTTON]) - -(NWAYBUTTON.INIT - [LAMBDA (BUTTONS FONT INITSTATE) (* jds " 9-Feb-86 15:17") - (SETQ NWAYBUTTONIMAGEFNS (IMAGEFNSCREATE (FUNCTION MB.NB.DISPLAYFN) - (FUNCTION MB.NB.SIZEFN) - (FUNCTION MB.PUTFN) - (FUNCTION MB.GETFN) - (FUNCTION MB.COPYFN) - (FUNCTION MB.NWAYBUTTON.SELFN) - 'NILL - 'NILL - 'NILL - 'NILL - 'NILL - (FUNCTION MB.NB.WHENOPERATEDFN) - 'NILL - 'NWayButton]) - -(MB.NB.PACKITEMS - [LAMBDA (WIDTH ITEMWIDTHS SPACING MAXITEMS/LINE) (* jds "24-Oct-84 17:42") - - (* * Pack items into lines WIDTH wide. Item widths are in ITEMWIDTHS, and each - pair of items on a line is separated by SPACING. - Returns a list of lists, one per line packed, of the relative X starts of the - items) - - (PROG ((CURX 0) - (LINES NIL) - (CURLINE NIL) - (CURLINEITEMS 0) - ITEM) - (while ITEMWIDTHS do (SETQ ITEM (pop ITEMWIDTHS)) - (COND - ((OR [ILESSP WIDTH (IPLUS CURX ITEM (COND - (CURLINE SPACING) - (T 0] - (AND MAXITEMS/LINE (IGEQ CURLINEITEMS MAXITEMS/LINE))) - (* Time for a new line) - (SETQ LINES (NCONC1 LINES (CONS CURX CURLINE))) - (* Add to our list of lines so far) - (SETQ CURLINE NIL) (* Empty the line accumulator) - (SETQ CURLINEITEMS 0) (* reset the line item count) - (SETQ CURX 0))) - (AND CURLINE (add CURX SPACING)) - (SETQ CURLINE (NCONC1 CURLINE CURX)) - (add CURX ITEM) - (add CURLINEITEMS 1)) - [AND CURLINE (SETQ LINES (NCONC1 LINES (CONS CURX CURLINE] - (* Capture the last partial line, if - there is one.) - (RETURN LINES]) - -(MB.NWAYBUTTON.ADDITEM - [LAMBDA (OBJECT NEWBUTTON) (* jds "11-Jul-85 12:44") - - (* Given an existing n-way choice menu button, add another choice to the list) - - (PROG ([BUTTONS (CONS NEWBUTTON (IMAGEOBJPROP OBJECT 'BUTTONS] - HEIGHT IMAGES IMAGE DS DESCENT SPACING SIDEEFFECTFNS WIDTHS FONT) - (SETQ FONT (IMAGEOBJPROP OBJECT 'MBFONT)) - (SETQ HEIGHT (FONTPROP FONT 'HEIGHT)) - (SETQ DESCENT (FONTPROP FONT 'DESCENT)) - (SETQ WIDTHS (for BUTTON in BUTTONS collect (STRINGWIDTH (COND - ((NLISTP BUTTON) - BUTTON) - (T (CAR BUTTON))) - FONT))) - (SETQ IMAGES (for WIDTH in WIDTHS as BUTTON in BUTTONS collect (BITMAPCREATE WIDTH HEIGHT)) - ) - (SETQ SPACING (STRINGWIDTH " " FONT)) - [SETQ SIDEEFFECTFNS (for BUTTON in BUTTONS collect (AND (LISTP BUTTON) - (CADR BUTTON] - (SETQ DS (DSPCREATE)) - (DSPXOFFSET 0 DS) - (DSPYOFFSET 0 DS) - (DSPFONT FONT DS) - (DSPRIGHTMARGIN 32000 DS) - (for IMAGE in IMAGES as BUTTON in BUTTONS do (DSPDESTINATION IMAGE DS) - (MOVETO 0 DESCENT DS) - (PRIN1 (COND - ((NLISTP BUTTON) - BUTTON) - (T (CAR BUTTON))) - DS)) - (IMAGEOBJPROP OBJECT 'MINWIDTH (for WIDTH in WIDTHS largest WIDTH)) - (IMAGEOBJPROP OBJECT 'MINHEIGHT (IPLUS HEIGHT 2)) - [IMAGEOBJPROP OBJECT 'MAXWIDTH (IPLUS (CAR WIDTHS) - (for WIDTH in (CDR WIDTHS) - sum (IPLUS WIDTH SPACING] - (IMAGEOBJPROP OBJECT 'MAXHEIGHT (ITIMES (IPLUS HEIGHT 2) - (LENGTH BUTTONS))) - (IMAGEOBJPROP OBJECT 'ITEMSPACE SPACING) - (IMAGEOBJPROP OBJECT 'BUTTONS BUTTONS) - (IMAGEOBJPROP OBJECT 'BUTTONIMAGES IMAGES) - (IMAGEOBJPROP OBJECT 'BUTTONHEIGHT (IPLUS HEIGHT 2)) - (IMAGEOBJPROP OBJECT 'BUTTONWIDTHS WIDTHS) - (IMAGEOBJPROP OBJECT 'NBUTTONS (LENGTH BUTTONS)) - (IMAGEOBJPROP OBJECT 'SELECTEDBUTTON NIL) - (IMAGEOBJPROP OBJECT 'SIDEEFFECTFNS SIDEEFFECTFNS) - (IMAGEOBJPROP OBJECT 'DESCENT DESCENT) - (RETURN OBJECT]) -) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS NWAYBUTTONIMAGEFNS) -) -(DECLARE%: DONTEVAL@LOAD DOCOPY - -(NWAYBUTTON.INIT) - - -(ADDTOVAR IMAGEOBJTYPES (NWayButton FILE TEDITMENU GETFN MB.GETFN)) -) - - - -(* ;; "Two-state, toggling menu buttons.") - -(DEFINEQ - -(\TEXTMENU.TOGGLE.CREATE - [LAMBDA (TEXT FONT STATECHANGEFN INITSTATE) (* gbn "24-Sep-84 14:45") - - (* Creates a TOGGLE menu button, that can turn off and on alternately.) - - (PROG ((OBJ (IMAGEOBJCREATE NIL \TOGGLEIMAGEFNS)) - (BOX (create IMAGEBOX - XSIZE _ (STRINGWIDTH TEXT FONT) - YSIZE _ (FONTPROP FONT 'HEIGHT) - YDESC _ (FONTPROP FONT 'DESCENT) - XKERN _ 0)) - DS BITMAP X Y) - (SETQ X (fetch XSIZE of BOX)) - (SETQ Y (fetch YSIZE of BOX)) - (IMAGEOBJPROP OBJ 'MBTEXT TEXT) - (IMAGEOBJPROP OBJ 'MBFONT FONT) - (IMAGEOBJPROP OBJ 'MBFN '\TEXTMENU.TOGGLEFN) - (IMAGEOBJPROP OBJ 'STATECHANGEFN STATECHANGEFN) - - (* a function to be called on finalization of selection of this button to - provide for user side-effects) - - (IMAGEOBJPROP OBJ 'STATE (OR INITSTATE 'OFF)) - (SETQ BITMAP (BITMAPCREATE X Y)) - (IMAGEOBJPROP OBJ 'BITCACHE BITMAP) - (SETQ DS (DSPCREATE BITMAP)) - (DSPXOFFSET 0 DS) - (DSPYOFFSET 0 DS) - (DSPFONT FONT DS) - (MOVETO 0 (FONTPROP FONT 'DESCENT) - DS) - (PRIN1 (IMAGEOBJPROP OBJ 'MBTEXT) - DS) - (RETURN OBJ]) - -(\TEXTMENU.TOGGLE.DISPLAY - [LAMBDA (OBJ STREAM MODE) (* gbn "27-Sep-84 01:23") - (* "27-Sep-84 01:11" gbn) - (* Display the innards of a menu - toggle) - (PROG (DS (OBJBOX (IMAGEOBJPROP OBJ 'BOUNDBOX)) - (FONT (IMAGEOBJPROP OBJ 'MBFONT)) - (CURX (DSPXPOSITION NIL STREAM)) - (CURY (DSPYPOSITION NIL STREAM)) - BITMAP X Y) - (OR OBJBOX (SETQ OBJBOX (MB.SIZEFN OBJ STREAM))) (* Make sure the size is set.) - (SETQ X (fetch XSIZE of OBJBOX)) - (SETQ Y (fetch YSIZE of OBJBOX)) - (COND - ([type? BITMAP (SETQ BITMAP (IMAGEOBJPROP OBJ 'BITCACHE] - (* The image bitmap exists already. - Use it.) - ) - (T (* Need to create an image for this - object.) - (SETQ BITMAP (BITMAPCREATE X Y)) - (IMAGEOBJPROP OBJ 'BITCACHE BITMAP) - (SETQ DS (DSPCREATE BITMAP)) - (DSPXOFFSET 0 DS) - (DSPYOFFSET 0 DS) - (DSPFONT FONT DS) - (MOVETO 0 (FONTPROP FONT 'DESCENT) - DS) - (PRIN1 (IMAGEOBJPROP OBJ 'MBTEXT) - DS))) - (BITBLT BITMAP 0 0 STREAM CURX (IDIFFERENCE CURY (fetch YDESC of OBJBOX)) - X Y 'INPUT 'PAINT) - (SELECTQ (IMAGEOBJPROP OBJ 'STATE) - (ON - - (* The button is ON. Display it as white text on black background) - - (BITBLT NIL 0 0 STREAM CURX (IDIFFERENCE CURY (fetch YDESC of OBJBOX)) - X Y 'TEXTURE 'INVERT BLACKSHADE)) - (OFF (* The button is OFF. - Just display it regular.)) - (ERROR "Invalid state in toggle button " OBJ]) - -(\TEXTMENU.TOGGLE.SHOWSELFN - [LAMBDA (OBJ SEL ON DS) (* ; "Edited 30-May-91 22:16 by jds") - (PROG [(IMAGEBOX (OR (IMAGEOBJPROP OBJ 'BOUNDBOX) - (IMAGEBOX OBJ DS] - (COND - (ON (SELECTQ (IMAGEOBJPROP OBJ 'STATE) - (ON (* Switch from ON to - (NEUTRAL (* Switch from OFF to - NEUTRAL) (BITBLT (IMAGEOBJPROP OBJ - (QUOTE BITCACHE)) 0 0 DS 0 0 - (fetch XSIZE of IMAGEBOX) - (fetch YSIZE of IMAGEBOX) - (QUOTE INPUT) (QUOTE REPLACE)))) - (BITBLT NIL 0 0 DS 0 0 (fetch XSIZE of IMAGEBOX) - (fetch YSIZE of IMAGEBOX) - 'TEXTURE - 'INVERT BLACKSHADE)) - (OFF (* Switch from OFF to ON) - (BITBLT NIL 0 0 DS 0 0 (fetch XSIZE of IMAGEBOX) - (fetch YSIZE of IMAGEBOX) - 'TEXTURE - 'INVERT BLACKSHADE)) - NIL)) - ((fetch (SELECTION SET) of SEL) - (SELECTQ (IMAGEOBJPROP OBJ 'STATE) - (ON (* Switch from OFF to ON) - (BITBLT NIL 0 0 DS 0 0 (fetch XSIZE of IMAGEBOX) - (fetch YSIZE of IMAGEBOX) - 'TEXTURE - 'INVERT BLACKSHADE)) - (OFF (* Switch from ON to OFF) - (BITBLT NIL 0 0 DS 0 0 (fetch XSIZE of IMAGEBOX) - (fetch YSIZE of IMAGEBOX) - 'TEXTURE - 'INVERT BLACKSHADE)) - NIL]) - -(\TEXTMENU.TOGGLE.WHENOPERATEDFN - [LAMBDA (OBJ DS OPERATION SEL) (* ; "Edited 30-May-91 22:16 by jds") - (* Handle operations on a - three-state button) - (SELECTQ OPERATION - (HIGHLIGHTED (* It is being hilighted) - (\TEXTMENU.TOGGLE.SHOWSELFN OBJ SEL T DS)) - (UNHIGHLIGHTED (* And being de-hilighted) - (\TEXTMENU.TOGGLE.SHOWSELFN OBJ SEL NIL DS)) - (SELECTED (* It's being selected) - (\TEXTMENU.TOGGLEFN OBJ SEL DS) (* Run the state-changing function) - (replace (SELECTION SET) of SEL with NIL) - (* And mar the selection turned off, - so others can use it without - trashing us) - (replace (SELECTION ONFLG) of SEL with NIL) - (replace (SELECTION SET) of TEDIT.SELECTION with NIL)) - (DESELECTED) - NIL]) - -(\TEXTMENU.TOGGLEFN - [LAMBDA (OBJ SEL W) (* ; "Edited 30-May-91 22:16 by jds") - (* MBFN for TOGGLE buttons--cycle - back and forthe betwen states.) - (PROG ((TEXTOBJ (fetch (SELECTION \TEXTOBJ) of SEL)) - (STATECHANGEFN (IMAGEOBJPROP OBJ 'STATECHANGEFN)) - OFILE CH NEWSTATE) - (SETQ NEWSTATE (SELECTQ (IMAGEOBJPROP OBJ 'STATE) - (OFF 'ON) - (ON 'OFF) - 'ON)) - (COND - (STATECHANGEFN (* apply the user supplied state - change fn if he supplied one) - (APPLY* STATECHANGEFN OBJ NEWSTATE (TEXTSTREAM TEXTOBJ) - SEL))) - (IMAGEOBJPROP OBJ 'STATE NEWSTATE) - (replace (SELECTION ONFLG) of SEL with NIL]) - -(\TEXTMENU.TOGGLE.INIT - [LAMBDA NIL (* jds " 9-Feb-86 15:18") - (SETQ \TOGGLEIMAGEFNS (IMAGEFNSCREATE (FUNCTION \TEXTMENU.TOGGLE.DISPLAY) - (FUNCTION MB.SIZEFN) - (FUNCTION MB.PUTFN) - (FUNCTION MB.GETFN) - (FUNCTION MB.COPYFN) - (FUNCTION MB.BUTTONEVENTINFN) - 'NILL - 'NILL - 'NILL - 'NILL - 'NILL - (FUNCTION \TEXTMENU.TOGGLE.WHENOPERATEDFN) - 'NILL - 'ToggleButton]) - -(\TEXTMENU.SET.TOGGLE - [LAMBDA (TEXT VALUE TEXTSTREAM) (* ; "Edited 12-Jun-90 19:02 by mitani") - - (* * finds the button with MBTEXT field TEXT in TEXTSTREAM and sets its state - to VALUE) - - (PROG ((PCNO (MBUTTON.FIND.BUTTON TEXT TEXTSTREAM)) - OBJ PC) - (COND - ((NOT PCNO) - (ERROR TEXT " was not found as a button."))) - [SETQ OBJ (fetch (PIECE POBJ) of (SETQ PC (fetch (PCTNODE PCE) - of (FINDNODE-INDEX - (fetch (TEXTOBJ PCTB) - of (TEXTOBJ TEXTSTREAM) - ) - PCNO] - (IMAGEOBJPROP OBJ 'STATE VALUE) - (IMAGEOBJPROP OBJ 'BITCACHE 'JUNK) - (for WINDOW inside (fetch (TEXTOBJ \WINDOW) of (TEXTOBJ TEXTSTREAM)) - do (\TEDIT.REPAINTFN WINDOW)) - (RETURN VALUE]) -) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS \TOGGLEIMAGEFNS) -) -(DECLARE%: DONTEVAL@LOAD DOCOPY - -(\TEXTMENU.TOGGLE.INIT) - - -(ADDTOVAR IMAGEOBJTYPES (ToggleButton FILE TEDITMENU GETFN MB.GETFN)) -) - - - -(* ;; "Margin Setting and display") - -(DEFINEQ - -(DRAWMARGINSCALE - [LAMBDA (W UNIT) (* ; "Edited 12-Jun-90 18:59 by mitani") - - (* ;; " Draw the margin-bar scale -- the markings across the bottom of the margin bar that show you the margin values. Draws the scale in window W, according to UNIT = 1 for points, or 12 for picas.") - - (PROG ((WREG (DSPCLIPPINGREGION NIL W)) - (OLDOP (DSPOPERATION 'REPLACE W))) - (DSPFILL (create REGION - LEFT _ 0 - BOTTOM _ 0 - WIDTH _ (fetch (REGION WIDTH) of WREG) - HEIGHT _ 24) - WHITESHADE - 'REPLACE W) (* ; "CLEAR IT OUT FIRST.") - (SELECTQ UNIT - (1 (* ; "Straight Points") - [for X from 4 by 3 to (fetch (REGION WIDTH) of WREG) - do - - (* ;; "Put a tick every 3 points, with a number every inch.") - - (COND - ((ZEROP (IREMAINDER (IDIFFERENCE X 4) - 72)) - (BITBLT NIL 0 0 W X 8 1 16 'TEXTURE 'REPLACE BLACKSHADE) - (MOVETO (IDIFFERENCE X (LRSH (STRINGWIDTH (IDIFFERENCE X 4)) - 1)) - 10 W) - (PRIN1 (IDIFFERENCE X 4) - W)) - (T (BITBLT NIL 0 0 W X 20 1 4 'TEXTURE 'REPLACE BLACKSHADE]) - (12 (* ; "Picas") - (for X from 4 by 12 to (fetch (REGION WIDTH) of WREG) - as NOMX from 0 - do - - (* ;; "Put a tick every half-pica, with a number every inch.") - - (COND - ((ZEROP (IREMAINDER NOMX 6)) - (BITBLT NIL 0 0 W X 8 1 16 'TEXTURE 'REPLACE BLACKSHADE) - (MOVETO (IDIFFERENCE X (LRSH (STRINGWIDTH NOMX) - 1)) - 10 W) - (PRIN1 NOMX W)) - (T (BITBLT NIL 0 0 W X 20 1 4 'TEXTURE 'REPLACE BLACKSHADE))) - (BITBLT NIL 0 0 W (IPLUS X 6) - 22 1 2 'TEXTURE 'REPLACE BLACKSHADE))) - NIL) - (BITBLT NIL 0 0 W 4 23 (fetch (REGION WIDTH) of WREG) - 1 - 'TEXTURE - 'REPLACE BLACKSHADE) - (MOVETO 0 0 W) - (RELDRAWTO (IDIFFERENCE (fetch (REGION WIDTH) of WREG) - 2) - 0 1 'PAINT W) - (RELDRAWTO 0 (IDIFFERENCE (fetch (REGION HEIGHT) of WREG) - 2) - 1 - 'PAINT W) - (RELDRAWTO (IMINUS (IDIFFERENCE (fetch (REGION WIDTH) of WREG) - 2)) - 0 1 'PAINT W) - (RELDRAWTO 0 (IMINUS (IDIFFERENCE (fetch (REGION HEIGHT) of WREG) - 2)) - 1 - 'PAINT W) - (DSPOPERATION OLDOP W]) - -(MARGINBAR - [LAMBDA (W L1 LN R TABS UNIT UPDATE RIGHTLIM) (* ; "Edited 12-Jun-90 18:59 by mitani") - (* Given a set of margins and a - unit, show the margin bar properly) - (PROG ((OLDOP (DSPOPERATION 'ERASE W)) - (SCALEDL1 (MSCALE L1 UNIT)) - (SCALEDLN (MSCALE LN UNIT)) - (SCALEDR (MSCALE R UNIT)) - (FLOATINGRIGHT NIL) - (EXTENDEDRIGHT NIL) - UNSETL1 UNSETLN) - (OR UPDATE (DRAWMARGINSCALE W UNIT)) - (DSPFONT (FONTCREATE 'GACHA 10) - W) - (SETQ L1 (MKSTRING (ABS L1))) - (SETQ LN (MKSTRING (ABS LN))) - (SETQ R (MKSTRING (ABS R))) - [COND - [(ILESSP SCALEDR 4) (* Unset right margin. - Show specially, but at its usual - place.) - (SETQ FLOATINGRIGHT T) - (SETQ SCALEDR (IPLUS 4 (IDIFFERENCE 4 SCALEDR] - ((ILEQ SCALEDR 4) (* Floating right margin => marked - specially) - (SETQ FLOATINGRIGHT T) - (SETQ SCALEDR RIGHTLIM)) - ((IGREATERP SCALEDR RIGHTLIM) (* Not floating, so just limit it to - the rightmost that can be seen.) - (SETQ EXTENDEDRIGHT T) - (SETQ SCALEDR (IDIFFERENCE RIGHTLIM 8] - [COND - ((ILESSP SCALEDL1 4) (* Unset right FIRST LEFT margin. - Show specially, but at its usual - place.) - (SETQ UNSETL1 T) - (SETQ SCALEDL1 (IPLUS 4 (IDIFFERENCE 4 SCALEDL1] - [COND - ((ILESSP SCALEDLN 4) (* Unset LEFT margin. - Show specially, but at its usual - place.) - (SETQ UNSETLN T) - (SETQ SCALEDLN (IPLUS 4 (IDIFFERENCE 4 SCALEDLN] - (BITBLT NIL 0 0 W 1 26 (IDIFFERENCE (fetch (REGION WIDTH) of (DSPCLIPPINGREGION - NIL W)) - 3) - 32 - 'TEXTURE - 'REPLACE WHITESHADE) - (BITBLT NIL 0 0 W SCALEDL1 42 (IDIFFERENCE SCALEDR SCALEDL1) - 16 - 'TEXTURE - 'REPLACE BLACKSHADE) - (BITBLT NIL 0 0 W SCALEDLN 26 (IDIFFERENCE SCALEDR SCALEDLN) - 16 - 'TEXTURE - 'REPLACE BLACKSHADE) - (COND - (UNSETL1 (* 1st left margin isn't set, tho it - has a value. Mark it neutral) - (BITBLT NIL 0 0 W SCALEDL1 42 (IPLUS (STRINGWIDTH L1 W) - 2) - 16 - 'TEXTURE - 'REPLACE EDITGRAY) - (DSPOPERATION 'PAINT W) - (MOVETO (IPLUS SCALEDL1 2) - 44 W) - (PRIN1 L1 W) - (DSPOPERATION 'ERASE W)) - (T (MOVETO (IPLUS SCALEDL1 2) - 44 W) - (PRIN1 L1 W))) - (COND - (UNSETLN (* left margin isn't set, tho it has - a value. Mark it neutral) - (BITBLT NIL 0 0 W SCALEDLN 26 (IPLUS (STRINGWIDTH LN W) - 2) - 16 - 'TEXTURE - 'REPLACE EDITGRAY) - (DSPOPERATION 'PAINT W) - (MOVETO (IPLUS SCALEDLN 2) - 28 W) - (PRIN1 LN W) - (DSPOPERATION 'ERASE W)) - (T (MOVETO (IPLUS SCALEDLN 2) - 28 W) - (PRIN1 LN W))) - [COND - (FLOATINGRIGHT (* Floating right margin is marked - by a light gray marker) - (BITBLT NIL 0 0 W (IDIFFERENCE SCALEDR (IPLUS (STRINGWIDTH R W) - 2)) - 26 - (IPLUS (STRINGWIDTH R W) - 2) - 32 - 'TEXTURE - 'REPLACE EDITGRAY) - (DSPOPERATION 'PAINT W)) - (EXTENDEDRIGHT (* A non-visible right margin is - marked by two wavy lines indicating - a break) - (BITBLT TEDIT.EXTENDEDRIGHTMARK 0 0 W SCALEDR 26 8 32 'INPUT 'REPLACE] - (MOVETO (IDIFFERENCE SCALEDR (IPLUS (STRINGWIDTH R W) - 2)) - 36 W) - (PRIN1 R W) - (DSPOPERATION OLDOP W) - (COND - ((EQ TABS 'NEUTRAL) (* All tabs have been neutralized. - Just lay down a grey pattern over - them.) - (DSPFILL (create REGION - LEFT _ 2 - BOTTOM _ 1 - HEIGHT _ 8 - WIDTH _ (IDIFFERENCE (fetch (REGION WIDTH) of ( - DSPCLIPPINGREGION - NIL W)) - 4)) - EDITGRAY - 'REPLACE W)) - (T (DSPFILL (create REGION - LEFT _ 2 - BOTTOM _ 1 - HEIGHT _ 8 - WIDTH _ (IDIFFERENCE (fetch (REGION WIDTH) - of (DSPCLIPPINGREGION NIL W)) - 4)) - WHITESHADE - 'REPLACE W) - (for TAB in TABS do (* Run thru the tabs, putting them - down in place.) - (MB.MARGINBAR.SHOWTAB W TAB UNIT 'PAINT]) - -(MARGINBAR.CREATE - [LAMBDA (MARL1 MARLN MARR MARTABS MARUNIT MARTABTYPE) (* ; "Edited 12-Jun-90 18:59 by mitani") - (* Create an instance of the - margin-setting ruler for TEdit's - use.) - (PROG ((BOX (create IMAGEBOX - XSIZE _ 1008 - YSIZE _ 62 - YDESC _ 0 - XKERN _ 4)) - OBJ OBJDATUM BITMAP DS) - (SETQ OBJ - (IMAGEOBJCREATE (SETQ OBJDATUM - (create MARGINBAR - MARL1 _ MARL1 - MARLN _ MARLN - MARR _ MARR - MARTABS _ MARTABS - MARUNIT _ MARUNIT - MARTABTYPE _ MARTABTYPE)) - MARGINBARIMAGEFNS)) - - (* Create an IMAGEOBJ, containing an instance of the record to hold margin and - tab info) - - (SETQ BITMAP (BITMAPCREATE (fetch XSIZE of BOX) - (fetch YSIZE of BOX))) (* A cache for the ruler's screen - image) - (IMAGEOBJPROP OBJ 'BITCACHE BITMAP) - (SETQ DS (DSPCREATE BITMAP)) (* And a displaystream for modifying - that image) - (IMAGEOBJPROP OBJ 'DSPCACHE DS) - (DSPXOFFSET 0 DS) - (DSPYOFFSET 0 DS) - (DSPCLIPPINGREGION (create REGION - LEFT _ 0 - BOTTOM _ 0 - WIDTH _ (fetch XSIZE of BOX) - HEIGHT _ (fetch YSIZE of BOX)) - DS) - (MARGINBAR DS (fetch (MARGINBAR MARL1) of OBJDATUM) - (fetch (MARGINBAR MARLN) of OBJDATUM) - (fetch (MARGINBAR MARR) of OBJDATUM) - (fetch (MARGINBAR MARTABS) of OBJDATUM) - (fetch (MARGINBAR MARUNIT) of OBJDATUM) - NIL - (fetch (REGION WIDTH) of (DSPCLIPPINGREGION NIL DS))) - - (* Fill in the cache with the original value This does the time-consuming part - of drawing the ticks on the ruler and such, which would make drawing it on the - fly unbearable.) - - (IMAGEOBJPROP OBJ 'NEEDSUPDATE T) - - (* And tell the display function that it needs to be updated when first - displayed. Which is the faster part.) - - (RETURN OBJ]) - -(MB.MARGINBAR.SELFN - [LAMBDA (OBJ SELWINDOW SEL RELX RELY STREAM ORIGX ORIGY) - (* ; "Edited 12-Jun-90 18:59 by mitani") - (* ; - "Let the user adjust margins and tabs using the mouse.") - (PROG [(OBJDATUM (IMAGEOBJPROP OBJ 'OBJECTDATUM)) - (IMAGEBOX (OR (IMAGEOBJPROP OBJ 'BOUNDBOX) - (IMAGEBOX OBJ STREAM 'DISPLAY] - (PROG ((L1 (fetch MARL1 of OBJDATUM)) - (LN (fetch MARLN of OBJDATUM)) - (R (fetch MARR of OBJDATUM)) - (TABS (fetch MARTABS of OBJDATUM)) - [SCALEDTABS (COND - ((LISTP (fetch MARTABS of OBJDATUM)) - (* ; - "Only scale the tabs if there are any, and they're not neutralized.") - (for TAB in (fetch MARTABS of OBJDATUM) - collect (MSCALE (fetch TABX of TAB) - (fetch MARUNIT of OBJDATUM] - (UNIT (fetch MARUNIT of OBJDATUM)) - (CLIP (create REGION - LEFT _ 0 - BOTTOM _ 0 - WIDTH _ (fetch XSIZE of IMAGEBOX) - HEIGHT _ (fetch YSIZE of IMAGEBOX))) - (RIGHTLIM (IDIFFERENCE (fetch (REGION WIDTH) of (DSPCLIPPINGREGION NIL - SELWINDOW)) - 4)) - TAB TABX OL1 OLN OR) - (SETQ OL1 L1) - (SETQ OLN LN) - (SETQ OR R) - [COND - [(INSIDE? (create REGION - LEFT _ (IDIFFERENCE (MSCALE (ABS L1) - UNIT) - 2) - BOTTOM _ 42 - WIDTH _ 16 - HEIGHT _ 16) - RELX RELY) (* ; "Move the 1st-line left margin.") - (while (AND (MOUSESTATE (OR LEFT MIDDLE RIGHT)) - (INSIDE? CLIP (LASTMOUSEX STREAM) - (LASTMOUSEY STREAM))) - do (SETQ L1 (MAX 0 (MDESCALE (LASTMOUSEX STREAM) - UNIT))) - [COND - ((\TEDIT.MOUSESTATE RIGHT) (* ; - "Right mouse button UNsets the margin.") - (SETQ L1 (MINUS L1] - (COND - ((NOT (EQUAL OL1 L1)) - (MARGINBAR STREAM L1 LN R TABS UNIT T RIGHTLIM) - (SETQ OL1 L1] - [(INSIDE? (create REGION - LEFT _ (IDIFFERENCE (MSCALE (ABS LN) - UNIT) - 2) - BOTTOM _ 26 - WIDTH _ 16 - HEIGHT _ 16) - RELX RELY) (* ; "Move the skirt's left margin") - (while (AND (MOUSESTATE (OR LEFT MIDDLE RIGHT)) - (INSIDE? CLIP (LASTMOUSEX STREAM) - (LASTMOUSEY STREAM))) - do (SETQ LN (MAX 0 (MDESCALE (LASTMOUSEX STREAM) - UNIT))) - [COND - ((\TEDIT.MOUSESTATE RIGHT) (* ; - "Right mouse button UNsets the margin.") - (SETQ LN (MINUS LN] - (COND - ((NOT (EQUAL OLN LN)) - (MARGINBAR STREAM L1 LN R TABS UNIT T RIGHTLIM) - (SETQ OLN LN] - [(OR (INSIDE? (create REGION - LEFT _ (IDIFFERENCE (IMIN (MSCALE (ABS R) - UNIT) - (fetch XSIZE of IMAGEBOX) - (fetch (REGION WIDTH) - of (DSPCLIPPINGREGION NIL - SELWINDOW))) - 16) - BOTTOM _ 26 - WIDTH _ 16 - HEIGHT _ 32) - RELX RELY) - (AND (ZEROP (IABS (FIXR R))) - (INSIDE? (create REGION - LEFT _ (IDIFFERENCE (IMIN (fetch XSIZE of - IMAGEBOX - ) - (fetch (REGION WIDTH) - of (DSPCLIPPINGREGION - NIL SELWINDOW))) - 16) - BOTTOM _ 26 - WIDTH _ 16 - HEIGHT _ 32) - RELX RELY))) (* ; "Move the right margin") - (while (AND (MOUSESTATE (OR LEFT MIDDLE RIGHT)) - (INSIDE? CLIP (LASTMOUSEX STREAM) - (LASTMOUSEY STREAM))) - do (SETQ R (MAX 0 (MDESCALE (LASTMOUSEX STREAM) - UNIT))) - [COND - ((\TEDIT.MOUSESTATE RIGHT) (* ; - "Right mouse button UNsets the margin.") - (SETQ R (MINUS R] - (COND - ((NOT (EQUAL OR R)) - (MARGINBAR STREAM L1 LN R TABS UNIT T RIGHTLIM) - (SETQ OR R] - ((INSIDE? (create REGION - LEFT _ 0 - BOTTOM _ 0 - WIDTH _ (fetch (REGION WIDTH) of CLIP) - HEIGHT _ 16) - RELX RELY) (* ; "We're in the tab ruler region") - (COND - ((MOUSESTATE LEFT) (* ; "MOVE a tab") - [SETQ TAB (for TABX in SCALEDTABS as TAB in TABS - smallest (ABS (IDIFFERENCE TABX (LASTMOUSEX STREAM] - (AND TAB (MB.MARGINBAR.TABTRACK STREAM OBJDATUM TAB))) - [(MOUSESTATE MIDDLE) (* ; "ADD/CHANGE a tab") - (COND - ((EQ (fetch MARTABS of OBJDATUM) - 'NEUTRAL) (* ; - "The tabs used to be NEUTRAL. Clear the tab region, and start afresh.") - (replace MARTABS of OBJDATUM with NIL) - (* ; - "So we don't come this way again.") - (DSPFILL (create REGION - LEFT _ 2 - BOTTOM _ 1 - HEIGHT _ 8 - WIDTH _ (IDIFFERENCE (fetch (REGION WIDTH) - of (DSPCLIPPINGREGION NIL - SELWINDOW)) - 4)) - WHITESHADE - 'REPLACE SELWINDOW) (* ; - "Make the tab region look non-neutral, too, so that tabs look OK on it.") - )) - (COND - ((AND [SETQ TAB (for TABX in SCALEDTABS as TAB in TABS - smallest (ABS (IDIFFERENCE TABX (LASTMOUSEX STREAM] - (SETQ TABX (MSCALE (CAR TAB) - UNIT)) - (IGEQ (LASTMOUSEX STREAM) - (IDIFFERENCE TABX 2)) - (ILEQ (LASTMOUSEX STREAM) - (IPLUS TABX 2))) - (MB.MARGINBAR.SHOWTAB STREAM TAB UNIT 'ERASE) - (replace TABKIND of TAB with (OR (fetch MARTABTYPE - of OBJDATUM) - 'LEFT)) - (MB.MARGINBAR.SHOWTAB STREAM TAB UNIT 'PAINT) - (MB.MARGINBAR.TABTRACK STREAM OBJDATUM TAB)) - ([OR (NOT TAB) - (NOT (EQP (fetch TABX of TAB) - (MDESCALE (LASTMOUSEX STREAM) - UNIT] (* ; "Really create a new tab") - [SETQ TAB (create TAB - TABX _ (MDESCALE (LASTMOUSEX STREAM) - UNIT) - TABKIND _ (OR (fetch MARTABTYPE of OBJDATUM) - 'LEFT] - (SETQ TABS (CONS TAB TABS)) - (MB.MARGINBAR.SHOWTAB STREAM TAB UNIT 'PAINT) - (MB.MARGINBAR.TABTRACK STREAM OBJDATUM TAB] - ((MOUSESTATE RIGHT) (* ; "DELETE a tab.") - (COND - ((AND [SETQ TAB (for TABX in SCALEDTABS as TAB in TABS - smallest (ABS (IDIFFERENCE TABX (LASTMOUSEX STREAM] - (SETQ TABX (MSCALE (CAR TAB) - UNIT)) - (IGEQ (LASTMOUSEX STREAM) - (IDIFFERENCE TABX 2)) - (ILEQ (LASTMOUSEX STREAM) - (IPLUS TABX 2))) - (MB.MARGINBAR.SHOWTAB STREAM TAB UNIT 'ERASE) - (SETQ TABS (LDIFFERENCE TABS (LIST TAB] - (replace MARL1 of OBJDATUM with L1) - (replace MARLN of OBJDATUM with LN) - (replace MARR of OBJDATUM with R) - (replace MARTABS of OBJDATUM with TABS))) - T]) - -(MB.MARGINBAR.SIZEFN - [LAMBDA (OBJ) (* jds " 5-Sep-84 14:10") - (PROG ((BOX (create IMAGEBOX - XSIZE _ 1008 - YSIZE _ 62 - YDESC _ 0 - XKERN _ 4))) - (IMAGEOBJPROP OBJ 'BOUNDBOX BOX) - (RETURN BOX]) - -(MB.MARGINBAR.DISPLAYFN - [LAMBDA (OBJ STREAM MODE) (* ; "Edited 12-Jun-90 18:59 by mitani") - (* Display the innards of a menu - button) - (PROG ((IMAGEBOX (OR (IMAGEOBJPROP OBJ 'BOUNDBOX) - (IMAGEBOX OBJ STREAM MODE))) - (OBJDATUM (IMAGEOBJPROP OBJ 'OBJECTDATUM)) - BITMAP - (DS (DSPCREATE)) - WASON) - (COND - [[SETQ WASON (SETQ BITMAP (IMAGEOBJPROP OBJ 'BITCACHE] - - (* The marginbar existed already as an image. - Don't bother re-creating it, and remember that we're allowed to MODIFY the old - image instead of creating a new one.) - - (SETQ DS (IMAGEOBJPROP OBJ 'DSPCACHE] - (T (* Have to create an image for the - margin bar) - (SETQ BITMAP (BITMAPCREATE (fetch XSIZE of IMAGEBOX) - (fetch YSIZE of IMAGEBOX))) - (* Create a cache bitmap) - (IMAGEOBJPROP OBJ 'BITCACHE BITMAP) - (SETQ DS (DSPCREATE BITMAP)) - (IMAGEOBJPROP OBJ 'DSPCACHE DS) - (DSPXOFFSET 0 DS) - (DSPYOFFSET 0 DS) - (DSPCLIPPINGREGION (create REGION - LEFT _ 0 - BOTTOM _ 0 - WIDTH _ (fetch XSIZE of IMAGEBOX) - HEIGHT _ (fetch YSIZE of IMAGEBOX)) - DS))) - (MARGINBAR DS (fetch (MARGINBAR MARL1) of OBJDATUM) - (fetch (MARGINBAR MARLN) of OBJDATUM) - (fetch (MARGINBAR MARR) of OBJDATUM) - (fetch (MARGINBAR MARTABS) of OBJDATUM) - (fetch (MARGINBAR MARUNIT) of OBJDATUM) - (OR WASON (IMAGEOBJPROP OBJ 'NEEDSUPDATE NIL)) - (fetch (REGION WIDTH) of (DSPCLIPPINGREGION NIL STREAM))) - (* Update the image, if it needs it) - (BITBLT BITMAP 0 0 STREAM (IDIFFERENCE (DSPXPOSITION NIL STREAM) - 4) - (IDIFFERENCE (DSPYPOSITION NIL STREAM) - (fetch YDESC of IMAGEBOX]) - -(MDESCALE - [LAMBDA (VAL UNIT) (* jds " 4-NOV-83 17:29") - - (* Convert a value from screen offset units to marginbar units) - - (COND - ((IEQP UNIT 12) - (QUOTIENT (IQUOTIENT (LLSH (IDIFFERENCE VAL 4) - 1) - UNIT) - 2.0)) - (T (QUOTIENT (DIFFERENCE VAL 4) - UNIT]) - -(MSCALE - [LAMBDA (VAL UNIT) (* jds " 4-NOV-83 17:31") - (* Convert from marginbar units to a - screen X offset) - (IPLUS 4 (FIXR (TIMES VAL (OR UNIT 1]) - -(MB.MARGINBAR.SHOWTAB - [LAMBDA (W TAB UNIT MODE) (* jds "22-Mar-85 17:36") - - (* Paint/erase/otherwise display the sign for a TAB in window WINDOW, using - units UNIT) - - (PROG ((TABX (MSCALE (fetch TABX of TAB) - UNIT))) - (SELECTQ (fetch TABKIND of TAB) - (LEFT (* Flush-left tab.) - (BITBLT \TEDIT.LEFTTAB 0 0 W (IDIFFERENCE TABX 2) - 1 NIL NIL 'INPUT MODE)) - (CENTERED (* Centered Tab) - (BITBLT \TEDIT.CENTERTAB 0 0 W (IDIFFERENCE TABX 5) - 1 NIL NIL 'INPUT MODE)) - (RIGHT (* Flush-right Tab) - (BITBLT \TEDIT.RIGHTTAB 0 0 W (IDIFFERENCE TABX 7) - 1 NIL NIL 'INPUT MODE)) - (DECIMAL (* Decimal aligned tab) - (BITBLT \TEDIT.DECIMALTAB 0 0 W (IDIFFERENCE TABX 7) - 1 NIL NIL 'INPUT MODE)) - (DOTTEDLEFT (* Decimal aligned tab) - (BITBLT \TEDIT.DOTTED.LEFTTAB 0 0 W (IDIFFERENCE TABX 7) - 1 NIL NIL 'INPUT MODE)) - (DOTTEDCENTERED (* Decimal aligned tab) - (BITBLT \TEDIT.DOTTED.CENTERTAB 0 0 W (IDIFFERENCE TABX 7) - 1 NIL NIL 'INPUT MODE)) - (DOTTEDRIGHT (* Decimal aligned tab) - (BITBLT \TEDIT.DOTTED.RIGHTTAB 0 0 W (IDIFFERENCE TABX 7) - 1 NIL NIL 'INPUT MODE)) - (DOTTEDDECIMAL (* Decimal aligned tab) - (BITBLT \TEDIT.DOTTED.DECIMALTAB 0 0 W (IDIFFERENCE TABX 7) - 1 NIL NIL 'INPUT MODE)) - NIL]) - -(MB.MARGINBAR.TABTRACK - [LAMBDA (STREAM OBJ TAB) (* jds " 8-Feb-84 20:38") - - (* Given that the mouse is down over a tab, track the tab as the mouse moves.) - - (PROG ((UNIT (fetch MARUNIT of OBJ)) - (CLIP (DSPCLIPPINGREGION NIL STREAM)) - (OLDX (MSCALE (fetch TABX of TAB) - (fetch MARUNIT of OBJ))) - X) - (while (AND (MOUSESTATE (OR LEFT MIDDLE RIGHT)) - (INSIDE? CLIP (LASTMOUSEX STREAM) - (LASTMOUSEY STREAM))) do (COND - ([NOT (IEQP OLDX (SETQ X (LASTMOUSEX STREAM] - (MB.MARGINBAR.SHOWTAB STREAM TAB UNIT - 'ERASE) - (replace TABX of TAB - with (MDESCALE X UNIT)) - (MB.MARGINBAR.SHOWTAB STREAM TAB UNIT - 'PAINT) - (SETQ OLDX X]) - -(\TEDIT.TABTYPE.SET - [LAMBDA (OBJ SEL W) (* ; "Edited 30-May-91 22:17 by jds") - (* Change the kind of TAB that will - be set in the succeeding marginbar.) - (PROG ((TEXTOBJ (fetch (SELECTION \TEXTOBJ) of SEL)) - (CH# (ADD1 (fetch (SELECTION CH#) of SEL))) - STATE DOTTEDBUTTON) - (SETQ STATE (IMAGEOBJPROP OBJ 'STATE)) (* Find out roughly what kind of TAB - this is to be.) - [SETQ STATE (U-CASE (COND - ((LISTP STATE) - (CAR STATE)) - (T STATE] (* Make sure it's upper case, and an - atom.) - (SETQ DOTTEDBUTTON (CAR (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#))) - (* Find out if this is to be a tab - with a dotted leader.) - [COND - ((EQ (IMAGEOBJPROP DOTTEDBUTTON 'STATE) - 'ON) (* Yes. Make this a DOTTEDxxx tab.) - (SETQ STATE (PACK* 'DOTTED STATE] - (TEDIT.MAPPIECES TEXTOBJ [FUNCTION (LAMBDA (CH# PC PCNO FNARG) - - (* Now run thru the rest of the document until we find the margin bar. - Replace the tab type of that margin bar with the new type.) - - (COND - ((AND (IGREATERP CH# (CAR FNARG)) - (fetch (PIECE POBJ) of PC) - (type? MARGINBAR (fetch (PIECE POBJ) - of PC))) - (replace MARTABTYPE - of (IMAGEOBJPROP (fetch (PIECE POBJ) - of PC) - 'OBJECTDATUM) with - (CDR FNARG)) - 'STOP] - (CONS CH# STATE]) - -(MARGINBAR.INIT - [LAMBDA NIL (* jds " 9-Feb-86 15:18") - (SETQ MARGINBARIMAGEFNS (IMAGEFNSCREATE (FUNCTION MB.MARGINBAR.DISPLAYFN) - (FUNCTION MB.MARGINBAR.SIZEFN) - (FUNCTION MB.MARGINBAR.PUTFN) - (FUNCTION MB.MARGINBAR.GETFN) - (FUNCTION MB.COPYFN) - (FUNCTION MB.MARGINBAR.SELFN) - 'NILL - 'NILL - 'NILL - 'NILL - 'NILL - 'NILL - 'NILL - 'NILL - 'MarginRuler]) -) - -(RPAQQ \TEDIT.LEFTTAB #*(10 8)B@@@B@@@G@@@JH@@B@@@B@@@CN@@@@@@) - -(RPAQQ \TEDIT.CENTERTAB #*(10 8)@D@@@D@@@N@@AE@@@D@@@D@@AO@@@@@@) - -(RPAQQ \TEDIT.RIGHTTAB #*(10 8)@A@@@A@@@CH@@ED@@A@@@A@@AO@@@@@@) - -(RPAQQ \TEDIT.DECIMALTAB #*(10 8)@A@@@A@@@CH@@ED@@A@@@CH@@CH@@@@@) - -(RPAQQ \TEDIT.DOTTED.LEFTTAB #*(16 8)@@H@@@H@@AL@@BJ@@@H@CFH@CFOH@@@@) - -(RPAQQ \TEDIT.DOTTED.CENTERTAB #*(16 8)@@A@@@A@@@CH@@ED@@A@CFA@CFGL@@@@) - -(RPAQQ \TEDIT.DOTTED.RIGHTTAB #*(16 8)@@@D@@@D@@@N@@AE@@@DCF@DCFGL@@@@) - -(RPAQQ \TEDIT.DOTTED.DECIMALTAB #*(16 8)@@@D@@@D@@@N@@AE@@@D@MHN@MHN@@@@) - -(RPAQQ TEDIT.EXTENDEDRIGHTMARK #*(8 32)FF@@FF@@FF@@FF@@LL@@LL@@LL@@LL@@LL@@LL@@LL@@LL@@FF@@FF@@FF@@FF@@CC@@CC@@CC@@CC@@CC@@CC@@CC@@CC@@FF@@FF@@FF@@FF@@LL@@LL@@LL@@LL@@ -) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS MARGINBARIMAGEFNS) -) -(DECLARE%: DONTEVAL@LOAD DOCOPY - -(MARGINBAR.INIT) - - -(ADDTOVAR IMAGEOBJTYPES (MarginRuler FILE TEDITMENU GETFN MB.GETFN)) -) - - - -(* ;; "Text menu creation and support") - -(DEFINEQ - -(\TEXTMENU.START - [LAMBDA (MENU MAINWINDOW TITLE HEIGHT) (* ; - "Edited 4-Jun-93 11:59 by sybalsky:mv:envos") - - (* ;; "Create a TEdit-based menu for a given main window.") - - (PROG ([WREG (COND - (MAINWINDOW (WINDOWPROP MAINWINDOW 'REGION)) - (T (GETREGION] - (CH#1 NIL) - MENUW MENUTEXT) - (COND - ((AND MAINWINDOW (WINDOWPROP MAINWINDOW 'TEDITMENU)) - (* ; - "This is a menu window. It can't have a menu, so bail out.") - (RETURN)) - ([AND MAINWINDOW (for WW in (ATTACHEDWINDOWS MAINWINDOW) - thereis (EQUAL (OR TITLE "TEdit Menu") - (WINDOWPROP WW 'TEDITMENU] - (* ; - "If this main window already has a menu, don't add another.") - (RETURN))) - (SETQ MENUW (CREATEW (SETQ WREG (COND - (MAINWINDOW (create REGION - LEFT _ (fetch (REGION LEFT) - of WREG) - BOTTOM _ (fetch (REGION TOP) - of WREG) - WIDTH _ (fetch (REGION WIDTH) - of WREG) - HEIGHT _ (OR HEIGHT 133))) - (T WREG))) - (OR TITLE "TEdit Menu"))) - (WINDOWADDPROP MENUW 'CLOSEFN 'TEXTMENU.CLOSEFN) - (WINDOWPROP MENUW 'TEDITMENU (OR TITLE "TEdit Menu")) - (* ; - "Mark this as a TEDIT MENU window") - (ATTACHWINDOW MENUW MAINWINDOW 'TOP 'JUSTIFY 'LOCALCLOSE) - (SETQ MENUTEXT MENU) - (replace (TEXTOBJ MENUFLG) of (fetch (TEXTSTREAM TEXTOBJ) of MENUTEXT) - with T) - [AND MAINWINDOW (WINDOWPROP MENUW 'PROMPTWINDOW (WINDOWPROP MAINWINDOW 'PROMPTWINDOW] - [TEDIT MENUTEXT MENUW NIL (LIST 'TITLEMENUFN 'DON'T 'PROMPTWINDOW (fetch (TEXTOBJ - PROMPTWINDOW) - of (TEXTOBJ - MAINWINDOW - ] - (AND MAINWINDOW (TTY.PROCESS (WINDOWPROP MAINWINDOW 'PROCESS]) - -(\TEXTMENU.DOC.CREATE - [LAMBDA (MENUDESC MENUPROPS) (* ; "Edited 12-Jun-90 19:00 by mitani") - - (* Create the TEXTSTREAM for a menu, given a description. - That stream is passed to \TEXTMENU.START to get the menu up on screen) - - (PROG ((CH#1 NIL) - MENUW MENUTEXT) - [SETQ MENUTEXT (OPENTEXTSTREAM "" NIL NIL NIL (OR MENUPROPS '(FONT (MODERN 10] - (bind (CH# _ 1) - OBJ for DESC in MENUDESC - do (SELECTQ (CAR DESC) - (* (* This is a comment within a menu - description -- Ignore it.)) - (MB.BUTTON (* A menu button -- - hitting it calls a function) - (TEDIT.INSERT.OBJECT (MBUTTON.CREATE - (MKATOM (fetch (MB.BUTTON MBLABEL) - of DESC)) - (fetch (MB.BUTTON MBBUTTONEVENTFN) - of DESC) - (fetch (MB.BUTTON MBFONT) of DESC)) - MENUTEXT CH#) - (TEDIT.LOOKS (fetch (TEXTSTREAM TEXTOBJ) of MENUTEXT) - '(PROTECTED OFF) - CH# 1) - (add CH# 1)) - (MB.3STATE (* 3-state button; - hitting it changes state among ON, - OFF, and NEUTRAL.) - (TEDIT.INSERT.OBJECT (MB.CREATE.THREESTATEBUTTON - (MKATOM (fetch (MB.3STATE MBLABEL) - of DESC)) - (fetch (MB.3STATE MBFONT) of DESC) - (fetch (MB.3STATE MBCHANGESTATEFN) - of DESC) - (fetch (MB.3STATE MBINITSTATE) - of DESC)) - MENUTEXT CH#) - (TEDIT.LOOKS (fetch (TEXTSTREAM TEXTOBJ) of MENUTEXT) - '(PROTECTED OFF) - CH# 1) - (add CH# 1)) - (MB.TOGGLE (* TOGGLE button; hitting it - switches between ON and OFF.) - (TEDIT.INSERT.OBJECT (\TEXTMENU.TOGGLE.CREATE - (MKATOM (fetch (MB.TOGGLE MBTEXT) - of DESC)) - (fetch (MB.TOGGLE MBFONT) of DESC) - (fetch (MB.TOGGLE MBCHANGESTATEFN) - of DESC) - (fetch (MB.TOGGLE MBINITSTATE) - of DESC)) - MENUTEXT CH#) - (TEDIT.LOOKS (fetch (TEXTSTREAM TEXTOBJ) of MENUTEXT) - '(PROTECTED OFF) - CH# 1) - (add CH# 1)) - (MB.NWAY (* N-way buttons; choosing one turns - the others off.) - (SETQ OBJ (MB.CREATE.NWAYBUTTON (fetch (MB.NWAY MBBUTTONS) - of DESC) - (fetch (MB.NWAY MBFONT) of DESC) - (fetch (MB.NWAY MBCHANGESTATEFN) of DESC) - (fetch (MB.NWAY MBINITSTATE) of DESC) - (fetch (MB.NWAY MBMAXITEMSPERLINE) of - DESC))) - (TEDIT.INSERT.OBJECT OBJ MENUTEXT CH#) - (TEDIT.LOOKS (fetch (TEXTSTREAM TEXTOBJ) of MENUTEXT) - '(PROTECTED OFF) - CH# 1) - (add CH# 1)) - (MENU (* Real menu, except the selection - sticks) - (TEDIT.INSERT.OBJECT (MB.CREATE.FULLMENU (CADR DESC)) - MENUTEXT CH#) - (TEDIT.LOOKS (fetch (TEXTSTREAM TEXTOBJ) of MENUTEXT) - '(PROTECTED OFF) - CH# 1) - (add CH# 1)) - (MB.MARGINBAR (* Margin ruler for TEdit formatting) - (TEDIT.INSERT.OBJECT (MARGINBAR.CREATE -0.5 -0.5 -39.5 NIL - 12) - MENUTEXT CH#) - (TEDIT.LOOKS (fetch (TEXTSTREAM TEXTOBJ) of MENUTEXT) - '(PROTECTED OFF) - CH# 1) - (add CH# 1)) - (MB.TEXT (* Arbitrary text, which will be - protected from the user.) - (TEDIT.INSERT MENUTEXT (fetch (MB.TEXT MBSTRING) of DESC) - CH#) - [AND (fetch (MB.TEXT MBFONT) of DESC) - (TEDIT.LOOKS (fetch (TEXTSTREAM TEXTOBJ) of MENUTEXT) - (LIST 'MBFONT (fetch (MB.TEXT MBFONT) of DESC)) - CH# - (NCHARS (fetch (MB.TEXT MBSTRING) of DESC] - (TEDIT.LOOKS (fetch (TEXTSTREAM TEXTOBJ) of MENUTEXT) - '(PROTECTED ON) - CH# - (NCHARS (fetch (MB.TEXT MBSTRING) of DESC))) - (add CH# (NCHARS (fetch (MB.TEXT MBSTRING) of DESC)))) - (MB.INSERT (* An insertion point, with optional - text to put there) - (TEDIT.INSERT MENUTEXT " {}" CH#) - (TEDIT.LOOKS (fetch (TEXTSTREAM TEXTOBJ) of MENUTEXT) - '(PROTECTED ON) - CH# 4) - (TEDIT.LOOKS (fetch (TEXTSTREAM TEXTOBJ) of MENUTEXT) - '(PROTECTED ON SELECTPOINT ON) - (IPLUS CH# 2) - 1) - (OR CH#1 (SETQ CH#1 (IPLUS CH# 3))) - [COND - ((fetch (MB.INSERT MBINITENTRY) of DESC) - (* There is an initial entry to be - made. Make it) - [COND - ((IMAGEOBJP (fetch (MB.INSERT MBINITENTRY) of - DESC)) - (* It is an imageobj.) - (TEDIT.INSERT.OBJECT (fetch (MB.INSERT MBINITENTRY) - of DESC) - MENUTEXT - (IPLUS CH# 3))) - (T (* It's regular text.) - (TEDIT.INSERT MENUTEXT (MKSTRING (fetch (MB.INSERT - MBINITENTRY - ) - of DESC)) - (IPLUS CH# 3] - [TEDIT.LOOKS (fetch (TEXTSTREAM TEXTOBJ) of MENUTEXT) - '(PROTECTED OFF SELECTPOINT OFF) - (IPLUS CH# 3) - (NCHARS (MKSTRING (fetch (MB.INSERT MBINITENTRY) - of DESC] - (add CH# (NCHARS (fetch (MB.INSERT MBINITENTRY) - of DESC] - (add CH# 4)) - (\ILLEGAL.ARG DESC))) - (replace (TEXTOBJ MENUFLG) of (fetch (TEXTSTREAM TEXTOBJ) of MENUTEXT) - with T) (* Remember that this is a menu) - [COND - (CH#1 (* We actually inserted some text, - so it makes sense to put up a - selection) - (push (fetch (TEXTOBJ EDITPROPS) of (fetch (TEXTSTREAM TEXTOBJ) - of MENUTEXT)) - (LIST 'SEL CH#1] (* And where the first selection - should be.) - (RETURN MENUTEXT]) - -(TEXTMENU.CLOSEFN - [LAMBDA (W) (* ; "Edited 12-Jun-90 18:59 by mitani") - - (* ;; "CLOSE a TEdit menu window: Detach the menu, then reshape the remaining windows to take up the remaining space") - - (PROG ((MAINW (WINDOWPROP W 'MAINWINDOW)) - TEXTOBJ HEIGHT OHEIGHT OBOTTOM WBOTTOM WINDOWS) - (FREEATTACHEDWINDOW W) (* (DETACHWINDOW W) - (* ; "So detach this window.") - (COND ((IGREATERP (FLENGTH - (ATTACHEDWINDOWS MAINW)) 1) - (SETQ OHEIGHT (fetch - (REGION HEIGHT) of - (WINDOWPROP W (QUOTE REGION)))) - (SETQ OBOTTOM (fetch - (REGION BOTTOM) of - (WINDOWPROP W (QUOTE REGION)))) - (CLOSEW W) (SETQ WINDOWS - (SORT (ATTACHEDWINDOWS MAINW) - (FUNCTION (LAMBDA (WW) - (fetch (REGION BOTTOM) of - (WINDOWPROP WW (QUOTE REGION))))))) - (for WW in WINDOWS when - (IGEQ (SETQ WBOTTOM - (fetch (REGION BOTTOM) of - (WINDOWPROP WW (QUOTE REGION)))) - OBOTTOM) do (MOVEW WW - (fetch (REGION LEFT) of - (WINDOWPROP WW (QUOTE REGION))) - (IDIFFERENCE WBOTTOM OHEIGHT)))))) - (COND - ((SETQ TEXTOBJ (WINDOWPROP W 'TEXTOBJ)) (* ; - "Then, if this window still has a textobj under it, kill off that edit process.") - (TEDIT.KILL TEXTOBJ) - - (* ;; "This has to be TEDIT.KILL to avoid problems with the TTY being handed from main back to menu, causing main never to finish off; menu would quit and hand TTY to top level window.") - - ]) -) - -(RPAQQ TEXTMENUICON #*(16 24)@@@@@@@@@@@@H@@@L@@AK@@GHLAIHCFAJ@HAKFKIJJJAJBKIJBJAH@KIJDHAKDJIJLJIJDJIJDJIH@KIF@HFAHIH@FN@@@H@ -) - -(RPAQQ TEXTMENUICONMASK #*(16 24)@@@@@@@@@@@@H@@@L@@AO@@GOLAOOOGOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOGOONAOOH@GN@@@H@ -) - - - -(* ; "TEdit-specific support") - -(DEFINEQ - -(\TEDITMENU.CREATE - [LAMBDA NIL (* gbn "27-Sep-84 01:04") - (* Creates the TEdit Expanded Menu) - (SETQ TEDIT.EXPANDED.MENU (\TEXTMENU.DOC.CREATE TEDIT.EXPANDEDMENU.SPEC]) - -(\TEDIT.EXPANDED.MENU - [LAMBDA (STREAM) (* ; "Edited 20-Aug-87 16:51 by jds") - (* "27-Sep-84 01:04" gbn) - (PROG (CHARMENUTEXTSTREAM) - (\TEXTMENU.START (SETQ CHARMENUTEXTSTREAM (COPYTEXTSTREAM TEDIT.EXPANDED.MENU T)) - (\TEDIT.PRIMARYW (TEXTOBJ STREAM)) - "TEdit Menu" - (HEIGHTIFWINDOW 60 T)) - (COND - ((OR (TEXTPROP STREAM 'CLEARGET) - (TEXTPROP STREAM 'CLEARPUT)) (* initialise the button) - (\TEXTMENU.SET.TOGGLE "Unformatted" 'ON CHARMENUTEXTSTREAM]) - -(MB.DEFAULTBUTTON.FN - [LAMBDA (OBJ SEL W) (* ; "Edited 30-Mar-94 15:46 by jds") - (* ; - "MBFN for TEdit default menu item buttons.") - (PROG* ((TEXTOBJ (fetch (SELECTION \TEXTOBJ) of SEL)) - (MAINTEXT (WINDOWPROP (WINDOWPROP W 'MAINWINDOW) - 'TEXTOBJ)) - (MAINSEL (fetch (TEXTOBJ SEL) of MAINTEXT)) - OFILE CH PROC) - (COND - ((EQ (fetch (TEXTOBJ EDITOPACTIVE) of MAINTEXT) - T) - (TEDIT.PROMPTPRINT MAINTEXT "Edit operation in progress; please wait." T) - (RETURN)) - ((fetch (TEXTOBJ EDITOPACTIVE) of MAINTEXT) - (TEDIT.PROMPTPRINT MAINTEXT (CONCAT (fetch (TEXTOBJ EDITOPACTIVE) of MAINTEXT) - " operation in progress; please wait.") - T) - [AND (NEQ (fetch (TEXTOBJ EDITOPACTIVE) of MAINTEXT) - (IMAGEOBJPROP OBJ 'MBTEXT] - (RETURN))) - [COND - ((AND (SETQ PROC (WINDOWPROP (WINDOWPROP W 'MAINWINDOW) - 'PROCESS)) - (PROCESSP PROC)) (* ; - "THE MAIN window has a live process behind it; go evaluate the button fn there.") - (PROCESS.EVAL PROC (LIST 'MB.DEFAULTBUTTON.ACTIONFN OBJ SEL W TEXTOBJ MAINTEXT MAINSEL - ))) - ((AND (SETQ PROC (WINDOWPROP W 'PROCESS)) - (PROCESSP PROC)) (* ; - "This window has a live process behind it; go evaluate the button fn there.") - (PROCESS.EVAL PROC (LIST 'MB.DEFAULTBUTTON.ACTIONFN OBJ SEL W TEXTOBJ MAINTEXT MAINSEL - ))) - (T (ADD.PROCESS (LIST 'MB.DEFAULTBUTTON.ACTIONFN OBJ SEL W TEXTOBJ MAINTEXT MAINSEL] - (COND - ((fetch (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ) - (GIVE.TTY.PROCESS W) - (DISMISS 20))) - [COND - ((OR (fetch (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ) - (EQ (WINDOWPROP W 'PROCESS) - (TTY.PROCESS))) (* ; - "If the TEDIT MENU still has the tty, give it back to the real TEdit.") - (SETQ TEDIT.SELPENDING NIL) - (GIVE.TTY.PROCESS (WINDOWPROP W 'MAINWINDOW] - - (* ;; "Tell the menu button handler not to turn off this button--it's still active and will turn itself off.") - - (RETURN 'DON'T]) - -(\TEDITMENU.RECORD.UNFORMATTED - [LAMBDA (BUTTON NEWSTATE TEXTSTREAM) (* jds " 7-Feb-85 09:44") - (PROG ((FLG (COND - ((EQ NEWSTATE 'ON) - T) - (T NIL))) - (TEXTOBJ (TEXTOBJ TEXTSTREAM))) - (TEXTPROP TEXTOBJ 'UNFORMATTEDPUT/GET FLG]) - -(MB.DEFAULTBUTTON.ACTIONFN - [LAMBDA (OBJ SEL W TEXTOBJ MAINTEXT MAINSEL) (* ; "Edited 30-Mar-94 16:04 by jds") - (* ; - "MBFN for TEdit default menu item buttons.") - (PROG (OFILE CH %#COPIES PRINTHOST PRINTOPTIONS %#SIDES MSG) - [ERSETQ (RESETLST - [RESETSAVE (\TEDIT.MARKACTIVE MAINTEXT) - '(AND (\TEDIT.MARKINACTIVE OLDVALUE] - [RESETSAVE (\TEDIT.MARKACTIVE TEXTOBJ) - '(AND (\TEDIT.MARKINACTIVE OLDVALUE] - [RESETSAVE (PROG1 OBJ - (IMAGEOBJPROP OBJ 'MENUBUTTON.SELECTED T)) - '(AND (IMAGEOBJPROP OLDVALUE 'MENUBUTTON.SELECTED NIL] - (replace (TEXTOBJ EDITOPACTIVE) of MAINTEXT - with (OR (IMAGEOBJPROP OBJ 'MBTEXT) - T)) (* ; - "So we can tell the guy WHAT op is active.") - (SELECTQ (IMAGEOBJPROP OBJ 'MBTEXT) - (Put [SETQ OFILE (\TEDIT.MAKEFILENAME (MBUTTON.NEXT.FIELD.AS.TEXT - TEXTOBJ - (fetch (SELECTION CH#) - of SEL] - [COND - (OFILE (* ; - "Only try this if he really typed a file name") - (TEDIT.PUT MAINTEXT OFILE NIL (TEXTPROP TEXTOBJ - 'UNFORMATTEDPUT/GET]) - (Get [SETQ OFILE (\TEDIT.MAKEFILENAME (MBUTTON.NEXT.FIELD.AS.TEXT - TEXTOBJ - (fetch (SELECTION CH#) - of SEL] - [COND - (OFILE (* ; - "Only try this if he really typed a file name") - (TEDIT.GET MAINTEXT OFILE (TEXTPROP TEXTOBJ - 'UNFORMATTEDPUT/GET]) - (Include [SETQ OFILE (\TEDIT.MAKEFILENAME (MBUTTON.NEXT.FIELD.AS.TEXT - TEXTOBJ - (fetch (SELECTION CH#) - of SEL] - (COND - (OFILE (TEDIT.INCLUDE MAINTEXT OFILE)))) - (Find (SETQ OFILE (MBUTTON.NEXT.FIELD.AS.TEXT TEXTOBJ - (fetch (SELECTION CH#) of SEL))) - [COND - ((ZEROP (NCHARS OFILE)) (* ; "NOTHING--HE HIT DEL.") - ) - (OFILE (* ; - "There's something to do. Go do it.") - (TEDIT.PROMPTPRINT MAINTEXT "Searching..." T) - [SETQ CH (CAR (ERSETQ (TEDIT.FIND MAINTEXT OFILE NIL NIL T] - (COND - (CH (* ; "We found the target text.") - (TEDIT.PROMPTPRINT MAINTEXT "Done.") - (\SHOWSEL MAINSEL NIL NIL) - (replace (SELECTION CH#) of MAINSEL - with (CAR CH)) - (* ; - "Set up SELECTION to be the found text") - (replace (SELECTION CHLIM) of MAINSEL - with (ADD1 (CADR CH))) - [replace (SELECTION DCH) of MAINSEL - with (ADD1 (IDIFFERENCE (CADR CH) - (CAR CH] - (replace (SELECTION POINT) of MAINSEL - with 'RIGHT) - (replace (TEXTOBJ CARETLOOKS) of MAINTEXT - with (\TEDIT.GET.INSERT.CHARLOOKS MAINTEXT - MAINSEL)) - (* ; - "Set the caret looks to match those of the new selection") - (TEDIT.RESET.EXTEND.PENDING.DELETE MAINSEL) - (* ; "And never pending a deletion.") - (\FIXSEL MAINSEL MAINTEXT) - (TEDIT.NORMALIZECARET MAINTEXT MAINSEL) - (\SHOWSEL MAINSEL NIL T)) - (T (TEDIT.PROMPTPRINT MAINTEXT "(Not found)"]) - (Substitute [PROG* ((SAVECH# (fetch (SELECTION CH#) of SEL)) - (REPLACEMENT (MBUTTON.NEXT.FIELD.AS.TEXT - TEXTOBJ - (fetch (SELECTION CH#) of SEL))) - [PATTERN (MBUTTON.NEXT.FIELD.AS.TEXT - TEXTOBJ - (fetch (SELECTION CHLIM) - of (fetch (TEXTOBJ SCRATCHSEL) - of TEXTOBJ] - CONFIRM? KEEPLOOKS? LOC) - [SETQ LOC (MBUTTON.FIND.NEXT.BUTTON - TEXTOBJ - (fetch (SELECTION CHLIM) - of (fetch (TEXTOBJ SCRATCHSEL) - of TEXTOBJ] - [SETQ CONFIRM? (EQ 'ON (IMAGEOBJPROP (CAR LOC) - 'STATE] - [SETQ LOC (MBUTTON.FIND.NEXT.BUTTON - TEXTOBJ - (ADD1 (CDR LOC] - [SETQ KEEPLOOKS? (EQ 'ON (IMAGEOBJPROP (CAR LOC) - 'STATE] - (COND - ((ZEROP (NCHARS PATTERN)) - (* ; "NOTHING--HE HIT DEL.") - ) - (PATTERN (* ; - "There's something to do. Go do it.") - [COND - (KEEPLOOKS? (SETQ REPLACEMENT - ( - MBUTTON.NEXT.FIELD.AS.PIECES - TEXTOBJ SAVECH#] - (RESETLST - (RESETSAVE (CURSOR WAITINGCURSOR)) - (TEDIT.SUBSTITUTE (fetch (TEXTOBJ - STREAMHINT) - of MAINTEXT) - PATTERN REPLACEMENT CONFIRM?))]) - (Quit (* ; "He wants to QUIT the edit.") - (COND - ((\TEDIT.QUIT (\TEDIT.PRIMARYW MAINTEXT) - T) - (replace (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ - with T)))) - (Page% Layout (* ; "Page layout menu") - (\TEXTMENU.START (COPYTEXTSTREAM TEDIT.EXPANDED.PAGEMENU - T) - (\TEDIT.PRIMARYW MAINTEXT) - "Page Layout Menu" - (HEIGHTIFWINDOW 135 5))) - (Para% Looks (* ; "Page layout menu") - (\TEDIT.EXPANDEDPARA.MENU MAINTEXT)) - (Char% Looks (* ; "Page layout menu") - (\TEDIT.EXPANDEDCHARLOOKS.MENU MAINTEXT)) - (All (* ; "Select the entire document.") - (COND - ((NOT (ZEROP (fetch (TEXTOBJ TEXTLEN) of MAINTEXT))) - (\SHOWSEL MAINSEL NIL NIL) - (TEDIT.RESET.EXTEND.PENDING.DELETE MAINSEL) - (replace (SELECTION CH#) of MAINSEL with 1) - (replace (SELECTION CHLIM) of MAINSEL - with (ADD1 (fetch (TEXTOBJ TEXTLEN) of MAINTEXT))) - (replace (SELECTION DCH) of MAINSEL - with (fetch (TEXTOBJ TEXTLEN) of MAINTEXT)) - (replace (SELECTION POINT) of MAINSEL with - 'LEFT) - (replace (SELECTION SET) of MAINSEL with T) - (\FIXSEL MAINSEL MAINTEXT) - (\SHOWSEL MAINSEL NIL T)))) - (Hardcopy [SETQ PRINTHOST (\TEDIT.MAKEFILENAME ( - MBUTTON.NEXT.FIELD.AS.TEXT - TEXTOBJ - (fetch (SELECTION - CH#) - of SEL] - (COND - ((NOT PRINTHOST) (* ; - "If he didn't specify a particular host, defer to his defaults.") - (TEDIT.PROMPTPRINT MAINTEXT "Using default print server."))) - [SETQ %#COPIES (MBUTTON.NEXT.FIELD.AS.NUMBER - TEXTOBJ - (fetch (SELECTION CH#) - of (fetch (TEXTOBJ SCRATCHSEL) - of TEXTOBJ] - (* ; - "Grab the field that specifies number of copies.") - [COND - (%#COPIES (SETQ PRINTOPTIONS (LIST '%#COPIES %#COPIES] - (SETQ %#SIDES - (SELECTQ (IMAGEOBJPROP [CAR (MBUTTON.FIND.NEXT.BUTTON - TEXTOBJ - (fetch (SELECTION CHLIM) - of (fetch (TEXTOBJ - SCRATCHSEL) - of TEXTOBJ] - 'STATE) - (One% Side 1) - (Duplex 2) - NIL)) - [COND - (%#SIDES (push PRINTOPTIONS %#SIDES) - (push PRINTOPTIONS '%#SIDES] - [SETQ MSG (\TEDIT.MAKEFILENAME (MBUTTON.NEXT.FIELD.AS.TEXT - TEXTOBJ - (fetch (SELECTION CH#) - of (fetch (TEXTOBJ - SCRATCHSEL) - of TEXTOBJ] - [COND - (MSG (push PRINTOPTIONS MSG) - (push PRINTOPTIONS 'MESSAGE] - (TEDIT.HARDCOPY MAINTEXT NIL NIL NIL PRINTHOST PRINTOPTIONS)) - (ERROR)))] - (replace (SELECTION SET) of SEL with T)(* ; - "Now turn the menu button highlighting off.") - (replace (SELECTION ONFLG) of SEL with T) - (\SHOWSEL SEL NIL NIL) - (replace (SELECTION SET) of SEL with NIL) - (* ; - "And forget that anything is selected.") - ]) -) -(DEFINEQ - -(\TEDIT.CHARLOOKSMENU.CREATE - [LAMBDA NIL (* ; "Edited 20-Aug-87 16:50 by jds") - (* ; "Creates the TEdit Expanded Menu") - - (SETQ TEDIT.CHARLOOKS.MENU (\TEXTMENU.DOC.CREATE (APPEND (LIST (create MB.BUTTON - MBLABEL _ 'APPLY - MBBUTTONEVENTFN _ - '\TEDIT.APPLY.CHARLOOKS) - (create MB.TEXT - MBSTRING _ " ") - (create MB.BUTTON - MBLABEL _ 'SHOW - MBBUTTONEVENTFN _ - '\TEDIT.SHOW.CHARLOOKS) - (create MB.TEXT - MBSTRING _ " ") - (create MB.BUTTON - MBLABEL _ 'NEUTRAL - MBBUTTONEVENTFN _ - ' - \TEDIT.NEUTRALIZE.CHARLOOKS - ) - (create MB.TEXT - MBSTRING _ " -")) - TEDIT.CHARLOOKSMENU.SPEC]) - -(\TEDIT.EXPANDEDCHARLOOKS.MENU - [LAMBDA (STREAM) (* ; "Edited 20-Aug-87 16:49 by jds") - - (* ;; "Open a character-looks menu.") - - (\TEXTMENU.START (COPYTEXTSTREAM TEDIT.CHARLOOKS.MENU T) - (\TEDIT.PRIMARYW STREAM) - "Character Looks Menu" - (HEIGHTIFWINDOW 68 T]) - -(\TEDIT.APPLY.BOLDNESS - [LAMBDA (BUTTON NEWLOOKS) (* jds "30-Aug-84 13:55") - (SELECTQ (IMAGEOBJPROP BUTTON 'STATE) - (ON (CONS 'WEIGHT (CONS 'BOLD NEWLOOKS))) - (OFF (CONS 'WEIGHT (CONS 'MEDIUM NEWLOOKS))) - NEWLOOKS]) - -(\TEDIT.APPLY.CHARLOOKS - [LAMBDA (OBJ SEL W) (* ; "Edited 30-May-91 22:17 by jds") - (* MBFN for TEdit default menu item - buttons.) - (PROG ((TEXTOBJ (fetch (SELECTION \TEXTOBJ) of SEL)) - (MAINTEXT (WINDOWPROP (WINDOWPROP W 'MAINWINDOW) - 'TEXTOBJ)) - (CH# (ADD1 (fetch (SELECTION CH#) of SEL))) - SCRATCHSEL OFILE CH NEWLOOKS SIZE SUPER SUB NEXTB BUTTON TEXT OFFSET) - [SETQ CH# (ADD1 (CDR (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#] - (* Skip over the SHOW button) - [SETQ CH# (ADD1 (CDR (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#] - (* And over the NEUTRAL button.) - (SETQ NEWLOOKS (\TEDIT.PARSE.CHARLOOKS.MENU TEXTOBJ CH#)) - (* Now Parse the menu, to give us a - looks spec.) - (TEDIT.LOOKS MAINTEXT NEWLOOKS (fetch (SELECTION CH#) of (fetch (TEXTOBJ SEL) - of MAINTEXT)) - (fetch (SELECTION DCH) of (fetch (TEXTOBJ SEL) of MAINTEXT))) - (* Make the change in looks) - (\SHOWSEL SEL NIL NIL) (* And turn off the APPLY button.) - (TTY.PROCESS (WINDOWPROP (WINDOWPROP W 'MAINWINDOW) - 'PROCESS)) (* Leave him typing in the real - document) - ]) - -(\TEDIT.APPLY.OLINE - [LAMBDA (BUTTON NEWLOOKS) (* jds "30-Aug-84 13:56") - (SELECTQ (IMAGEOBJPROP BUTTON 'STATE) - (ON (CONS 'OVERLINE (CONS 'ON NEWLOOKS))) - (OFF (CONS 'OVERLINE (CONS 'OFF NEWLOOKS))) - NEWLOOKS]) - -(\TEDIT.SHOW.CHARLOOKS - [LAMBDA (OBJ SEL W) (* ; "Edited 30-May-91 22:17 by jds") - - (* ;; "Set the CHARLOOKS menu from the looks of the currently selected character.") - - (LET* ((TEXTOBJ (fetch (SELECTION \TEXTOBJ) of SEL)) - (MAINTEXT (WINDOWPROP (WINDOWPROP W 'MAINWINDOW) - 'TEXTOBJ)) - (MAINCH# (fetch (SELECTION CH#) of (fetch (TEXTOBJ SEL) of MAINTEXT))) - (CH# (ADD1 (fetch (SELECTION CH#) of SEL))) - (SCRATCHSEL (fetch (TEXTOBJ SCRATCHSEL) of TEXTOBJ)) - PC OFILE CH NEWLOOKS NEXTB BUTTON TEXT OFFSET) - (COND - ((<= MAINCH# (fetch (TEXTOBJ TEXTLEN) of MAINTEXT)) - [SETQ CH# (ADD1 (CDR (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#] - (* ; "Skip over the NEUTRAL button.") - (\SHOWSEL SEL NIL NIL) - (replace (SELECTION SET) of SEL with NIL) - (SETQ PC (\CHTOPC MAINCH# (fetch (TEXTOBJ PCTB) of MAINTEXT))) - (* ; - "The PIECE containing the text to describe") - (SETQ NEWLOOKS (fetch (PIECE PLOOKS) of PC)) - (* ; - "Get the looks for those characters.") - (WITHOUT-UPDATES TEXTOBJ SCRATCHSEL (\TEDIT.FILL.IN.CHARLOOKS.MENU TEXTOBJ CH# - NEWLOOKS)) - (* ; - "Fill in the menu blanks with that info") - ]) - -(\TEDIT.NEUTRALIZE.CHARLOOKS - [LAMBDA (OBJ SEL W) (* ; "Edited 30-May-91 22:18 by jds") - - (* Handle the NEUTRAL button on a character looks menu. - Sets all the menu settings neutral.) - - (PROG ((TEXTOBJ (fetch (SELECTION \TEXTOBJ) of SEL)) - (MAINTEXT (WINDOWPROP (WINDOWPROP W 'MAINWINDOW) - 'TEXTOBJ)) - (CH# (ADD1 (fetch (SELECTION CH#) of SEL))) - PC SCRATCHSEL OFILE CH NEWLOOKS NEXTB BUTTON TEXT OFFSET) - (\SHOWSEL SEL NIL NIL) - (replace (SELECTION SET) of SEL with NIL) - (\TEDIT.NEUTRALIZE.CHARLOOKS.MENU TEXTOBJ CH#) (* Fill in the menu blanks with that - info) - (TEDIT.UPDATE.SCREEN TEXTOBJ) (* And update the screen image.) - ]) - -(\TEDIT.FILL.IN.CHARLOOKS.MENU - [LAMBDA (TEXTOBJ CH# NEWLOOKS) (* ; "Edited 30-May-91 22:28 by jds") - - (* ;; "Given a TEXTOBJ describing a charlooks menu, the CH# of the start of the charlooks menu, and a set of looks, fill in the menu fields.") - - (PROG (PC SCRATCHSEL OFILE CH NEXTB BUTTON TEXT OFFSET) - (SETQ NEWLOOKS (\TEDIT.PARSE.CHARLOOKS.LIST NEWLOOKS NIL NIL)) - - (* ;; "Make sure the charlooks are in the proper internal format, so this fn can be called from every reasonable place.") - - (SETQ SCRATCHSEL (fetch (TEXTOBJ SCRATCHSEL) of TEXTOBJ)) - [for PROP in (LIST (fetch (CHARLOOKS CLBOLD) of NEWLOOKS) - (fetch (CHARLOOKS CLITAL) of NEWLOOKS) - (fetch (CHARLOOKS CLULINE) of NEWLOOKS) - (fetch (CHARLOOKS CLSTRIKE) of NEWLOOKS) - (fetch (CHARLOOKS CLOLINE) of NEWLOOKS)) - do (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#)) - [COND - (PROP (* ; "Must set the property") - (IMAGEOBJPROP (CAR NEXTB) - 'STATE - 'ON)) - (T (* ; "Must reset it.") - (IMAGEOBJPROP (CAR NEXTB) - 'STATE - 'OFF] - (SETQ CH# (ADD1 (CDR NEXTB] - (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#)) - (* ; "Get to the start of the text.") - (SETQ BUTTON (CAR NEXTB)) - [for ITEM in (IMAGEOBJPROP BUTTON 'BUTTONS) - do (* ; - "Loop thru the font FAMILY name button list, looking for one that matches this text's looks") - (COND - ((STRING-EQUAL [COND - ((AND (type? FONTCLASS (fetch (CHARLOOKS CLFONT) - of NEWLOOKS)) - (NEQ (fetch FONTCLASSNAME - of (fetch (CHARLOOKS CLFONT) - of NEWLOOKS)) - 'DEFAULTFONT)) - (CONCAT (fetch FONTCLASSNAME of (fetch - (CHARLOOKS CLFONT) - of NEWLOOKS)) - '-class)) - ((FONTP (fetch (CHARLOOKS CLFONT) of NEWLOOKS)) - (FONTPROP (fetch (CHARLOOKS CLFONT) of NEWLOOKS) - 'FAMILY] - ITEM) - (IMAGEOBJPROP BUTTON 'STATE ITEM) - (RETURN))) finally (* ; - "This font wasn't found in the list. Add it.") - [MB.NWAYBUTTON.ADDITEM - BUTTON - (COND - ((type? FONTCLASS (fetch (CHARLOOKS CLFONT) - of NEWLOOKS)) - (PACK* (fetch FONTCLASSNAME - of (fetch (CHARLOOKS CLFONT) - of NEWLOOKS)) - '-class)) - ((FONTP (fetch (CHARLOOKS CLFONT) of NEWLOOKS)) - (FONTPROP (fetch (CHARLOOKS CLFONT) of NEWLOOKS) - 'FAMILY] (* ; - "Add this family to the list of items") - (IMAGEOBJPROP BUTTON 'STATE (U-CASE - (FONTPROP (fetch - (CHARLOOKS CLFONT) - of NEWLOOKS) - 'FAMILY] - (* ; - "Now find which text button was 'on'") - (MBUTTON.SET.NEXT.FIELD TEXTOBJ (ADD1 (CDR NEXTB)) - NIL) (* ; - "Clean out the 'other font' field") - (MBUTTON.SET.NEXT.FIELD TEXTOBJ (ADD1 (fetch (SELECTION CH#) of SCRATCHSEL)) - (fetch (CHARLOOKS CLSIZE) of NEWLOOKS)) - (* ; "Set the value in the SIZE field") - [SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ (ADD1 (fetch (SELECTION CH#) - of SCRATCHSEL] - (* ; - "Move forward to the SUPERSCRIPT/SUBSCRIPT button") - (SETQ BUTTON (CAR NEXTB)) - (SETQ OFFSET (fetch (CHARLOOKS CLOFFSET) of NEWLOOKS)) - (* ; - "Remember the offset value for later") - [COND - ((OR (NOT (fetch (CHARLOOKS CLOFFSET) of NEWLOOKS)) - (ZEROP (fetch (CHARLOOKS CLOFFSET) of NEWLOOKS))) - (* ; - "There is no subscript or superscript. Mark the text NORMAL.") - (IMAGEOBJPROP BUTTON 'STATE 'Normal) - (SETQ OFFSET NIL) (* ; - "Mark there as being no offset value") - ) - ((ILESSP OFFSET 0) (* ; "SUBSCRIPTING") - (IMAGEOBJPROP BUTTON 'STATE 'Subscript)) - ((IGREATERP OFFSET 0) (* ; "SUBSCRIPTING") - (IMAGEOBJPROP BUTTON 'STATE 'Superscript] - (MBUTTON.SET.NEXT.FIELD TEXTOBJ (ADD1 (CDR NEXTB)) - (AND OFFSET (IABS OFFSET))) (* ; - "Now move up to the offset distance fill-in field.") - (\SHOWSEL SCRATCHSEL NIL NIL) - (replace (SELECTION SET) of SCRATCHSEL with NIL) - (\TEDIT.MARK.LINES.DIRTY TEXTOBJ CH# (ADD1 (fetch (SELECTION CH#) of SCRATCHSEL]) - -(\TEDIT.NEUTRALIZE.CHARLOOKS.MENU - [LAMBDA (TEXTOBJ CH#) (* ; "Edited 30-May-91 22:18 by jds") - - (* ;; -"Set all the fields in the CHARLOOKS menu specified by TEXTOBJ, starting at CH# to neutral values.") - - (PROG ((SCRATCHSEL (fetch (TEXTOBJ SCRATCHSEL) of TEXTOBJ)) - PC OFILE CH NEXTB BUTTON TEXT OFFSET) - (WITHOUT-UPDATES TEXTOBJ SCRATCHSEL [for PROP - in '(BOLD ITAL ULINE STRIKE OLINE) - do (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON - TEXTOBJ CH#)) - (IMAGEOBJPROP (CAR NEXTB) - 'STATE - 'NEUTRAL) - (SETQ CH# (ADD1 (CDR NEXTB] - (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#)) - (* ; "Get to the start of the text.") - (SETQ BUTTON (CAR NEXTB)) - (IMAGEOBJPROP BUTTON 'STATE NIL) (* ; - "Now find which text button was 'on'") - (MBUTTON.SET.NEXT.FIELD TEXTOBJ (ADD1 (CDR NEXTB)) - NIL) (* ; - "Clean out the 'other font' field") - (MBUTTON.SET.NEXT.FIELD TEXTOBJ (ADD1 (fetch (SELECTION CH#) of - SCRATCHSEL - )) - NIL) (* ; "Set the value in the SIZE field") - [SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ (ADD1 (fetch (SELECTION CH#) - of SCRATCHSEL] - (* ; - "Move forward to the SUPERSCRIPT/SUBSCRIPT button") - (SETQ BUTTON (CAR NEXTB)) (* ; - "Remember the offset value for later") - (IMAGEOBJPROP BUTTON 'STATE NIL) - (MBUTTON.SET.NEXT.FIELD TEXTOBJ (ADD1 (CDR NEXTB)) - NIL) (* ; - "Now move up to the offset distance fill-in field.") - ]) - -(\TEDIT.PARSE.CHARLOOKS.MENU - [LAMBDA (TEXTOBJ CH#) (* ; "Edited 30-May-91 22:18 by jds") - (* MBFN for TEdit default menu item - buttons.) - (PROG (SCRATCHSEL CH NEWLOOKS SIZE SUPER SUB NEXTB BUTTON TEXT OFFSET) - (SETQ SCRATCHSEL (fetch (TEXTOBJ SCRATCHSEL) of TEXTOBJ)) - [for BUTTON in '(BOLD ITALIC UNDERLINE STRIKEOUT OVERSCORE) - do (* Set the character properties - which are independent) - (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#)) - (SELECTQ BUTTON - (BOLD (SETQ NEWLOOKS (\TEDIT.APPLY.BOLDNESS (CAR NEXTB) - NEWLOOKS))) - (ITALIC (SETQ NEWLOOKS (\TEDIT.APPLY.SLOPE (CAR NEXTB) - NEWLOOKS))) - (UNDERLINE (SETQ NEWLOOKS (\TEDIT.APPLY.ULINE (CAR NEXTB) - NEWLOOKS))) - (STRIKEOUT (SETQ NEWLOOKS (\TEDIT.APPLY.STRIKEOUT (CAR NEXTB) - NEWLOOKS))) - (OVERSCORE (SETQ NEWLOOKS (\TEDIT.APPLY.OLINE (CAR NEXTB) - NEWLOOKS))) - NIL) - (SETQ CH# (ADD1 (CDR NEXTB] - (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#)) - (* Get to the start of the text.) - (SETQ BUTTON (CAR NEXTB)) - [AND BUTTON - (SELECTQ (IMAGEOBJPROP BUTTON 'STATE) - (Other (* Have to get and add in a new - font.) - (COND - ([SETQ TEXT (MBUTTON.NEXT.FIELD.AS.ATOM TEXTOBJ (ADD1 (CDR NEXTB] - (* He wants some font not on the - list. Add it to the list.) - (SETQ NEWLOOKS (CONS 'FAMILY (CONS (U-CASE TEXT) - NEWLOOKS))) - (COND - ([NOT (FMEMB (U-CASE TEXT) - (U-CASE (IMAGEOBJPROP BUTTON 'BUTTONS] - (* This font name isn't in the list - already; add it.) - (MB.NWAYBUTTON.ADDITEM BUTTON TEXT) - (IMAGEOBJPROP BUTTON 'STATE TEXT)) - (T [IMAGEOBJPROP BUTTON 'STATE (for NAME - in (IMAGEOBJPROP BUTTON - 'BUTTONS) - suchthat (EQ (U-CASE TEXT) - (U-CASE NAME] - (* Select the newly-specified font.) - )) - (TEDIT.DELETE TEXTOBJ SCRATCHSEL) - (* Delete the new font's name from - the fill-in field.) - (TEDIT.OBJECT.CHANGED TEXTOBJ BUTTON)) - (T (* He didn't specify a font. - Complain but keep on.) - (TEDIT.PROMPTPRINT TEXTOBJ - "'Other' font not specified; no change made." T)))) - (COND - ((STRPOS '-class (IMAGEOBJPROP BUTTON 'STATE)) - (* It's a font class. - Grab the name and evaluate it.) - (SETQ NEWLOOKS - (CONS 'FONT (CONS [EVAL (MKATOM (SUBSTRING (IMAGEOBJPROP BUTTON 'STATE) - 1 - (SUB1 (STRPOS '-class - (IMAGEOBJPROP - BUTTON - 'STATE] - NEWLOOKS))) - (MBUTTON.FIND.NEXT.FIELD TEXTOBJ CH#)) - (T (SETQ NEWLOOKS (CONS 'FAMILY (CONS (U-CASE (IMAGEOBJPROP BUTTON 'STATE)) - NEWLOOKS))) - (MBUTTON.FIND.NEXT.FIELD TEXTOBJ CH#) - (* Skip over the "other text" - fill-in.) - ] (* Now find which text button was "on") - [SETQ SIZE (MBUTTON.NEXT.FIELD.AS.NUMBER TEXTOBJ (ADD1 (fetch (SELECTION CH#) - of SCRATCHSEL] - (* Read the contents of the SIZE - menu field) - [COND - (SIZE (* He specified one. - Set it.) - (SETQ NEWLOOKS (CONS 'SIZE (CONS SIZE NEWLOOKS] - [SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ (ADD1 (fetch (SELECTION CH#) - of SCRATCHSEL] - (* Get a handle on the - SUPERSCRIPT/SUBSCRIPT button) - (SETQ BUTTON (CAR NEXTB)) - (SETQ SUPER (IMAGEOBJPROP BUTTON 'STATE)) (* Decide which kind it is) - [SETQ OFFSET (MBUTTON.NEXT.FIELD.AS.NUMBER TEXTOBJ (ADD1 (CDR NEXTB] - (* And get the offset distance, in - points.) - (SELECTQ SUPER - (Superscript - - (* He called for SUPERSCRIPTing. Offset the characters by either the distance - he gave, or 2 pts.) - - (SETQ NEWLOOKS (CONS 'SUPERSCRIPT (CONS (OR OFFSET 2) - NEWLOOKS)))) - (Subscript - - (* He called for SUBSCRIPTING. Offset the characters by either the distance he - gave, or 2 pts if he gave no distance.) - - (SETQ NEWLOOKS (CONS 'SUBSCRIPT (CONS (OR OFFSET 2) - NEWLOOKS)))) - (Normal (* NORMAL => Turn off all super and - subscripting) - (SETQ NEWLOOKS (CONS 'SUPERSCRIPT (CONS 0 NEWLOOKS)))) - NIL) - (RETURN NEWLOOKS]) - -(\TEDIT.APPLY.SLOPE - [LAMBDA (BUTTON NEWLOOKS) (* jds "30-Aug-84 13:56") - (SELECTQ (IMAGEOBJPROP BUTTON 'STATE) - (ON (CONS 'SLOPE (CONS 'ITALIC NEWLOOKS))) - (OFF (CONS 'SLOPE (CONS 'REGULAR NEWLOOKS))) - NEWLOOKS]) - -(\TEDIT.APPLY.STRIKEOUT - [LAMBDA (BUTTON NEWLOOKS) (* jds "30-Aug-84 13:56") - (SELECTQ (IMAGEOBJPROP BUTTON 'STATE) - (ON (CONS 'STRIKEOUT (CONS 'ON NEWLOOKS))) - (OFF (CONS 'STRIKEOUT (CONS 'OFF NEWLOOKS))) - NEWLOOKS]) - -(\TEDIT.APPLY.ULINE - [LAMBDA (BUTTON NEWLOOKS) (* jds "30-Aug-84 13:56") - (SELECTQ (IMAGEOBJPROP BUTTON 'STATE) - (ON (CONS 'UNDERLINE (CONS 'ON NEWLOOKS))) - (OFF (CONS 'UNDERLINE (CONS 'OFF NEWLOOKS))) - NEWLOOKS]) -) -(DEFINEQ - -(\TEDITPARAMENU.CREATE - [LAMBDA NIL (* jds " 2-Aug-84 15:32") - (* Creates the TEdit Expanded - Paragraph Menu) - (SETQ TEDIT.EXPANDEDPARA.MENU (\TEXTMENU.DOC.CREATE TEDIT.PARAMENU.SPEC]) - -(\TEDIT.EXPANDEDPARA.MENU - [LAMBDA (STREAM) (* ; "Edited 20-Aug-87 16:51 by jds") - - (\TEXTMENU.START (COPYTEXTSTREAM TEDIT.EXPANDEDPARA.MENU T) - (\TEDIT.PRIMARYW (TEXTOBJ STREAM)) - "Paragraph-Looks Menu" - (HEIGHTIFWINDOW 141 T]) - -(\TEDIT.APPLY.PARALOOKS - [LAMBDA (OBJ SEL W) (* ; "Edited 22-Apr-93 16:45 by jds") - - (* ;; "Handler for the Paragraph Menu's APPLY button. Collects the specs from the paragraph menu and calls TEDIT.PARALOOKS to effect the change.") - - (PROG ((TEXTOBJ (fetch (SELECTION \TEXTOBJ) of SEL)) - (MAINTEXT (WINDOWPROP (WINDOWPROP W 'MAINWINDOW) - 'TEXTOBJ)) - (CH# (ADD1 (fetch (SELECTION CH#) of SEL))) - SCRATCHSEL QUAD OFILE CH NEWLOOKS SIZE SUPER SUB LINELEAD PARALEAD DEFAULTTAB BUTTON NEXTB - BUTTONDATA L1 LN R PARATYPE SPECIALX SPECIALY) - [SETQ CH# (ADD1 (CDR (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#] - (* ; "Skip the SHOW button") - [SETQ CH# (ADD1 (CDR (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#] - (* ; "and the NEUTRAL button.") - (SETQ SCRATCHSEL (fetch (TEXTOBJ SCRATCHSEL) of TEXTOBJ)) - (SETQ NEWLOOKS NIL) (* ; - "The list we'll be collecting the looks changes in.") - (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#)) - (* ; - "Get the JUSTIFICATION button: Left/Right/Centered/Justified") - (SETQ BUTTON (CAR NEXTB)) - [COND - ((AND (SETQ QUAD (IMAGEOBJPROP BUTTON 'STATE)) - (NEQ QUAD 'OFF)) (* ; "A justification was specified") - (SETQ NEWLOOKS (CONS 'QUAD (CONS (U-CASE (MKATOM QUAD)) - NEWLOOKS] - [SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ (ADD1 (CDR NEXTB] - (* ; "Go to the 'Page Heading' button") - (SETQ BUTTON (CAR NEXTB)) - [COND - ((EQ (IMAGEOBJPROP BUTTON 'STATE) - 'ON) (* ; - "This paragraph IS a page heading.") - (SETQ NEWLOOKS (CONS 'TYPE (CONS 'PAGEHEADING NEWLOOKS))) - (* ; "Tell him that it's a heading.") - (SETQ NEWLOOKS (CONS 'SUBTYPE (CONS [MKATOM (MBUTTON.NEXT.FIELD.AS.TEXT - TEXTOBJ - (ADD1 (CDR NEXTB] - NEWLOOKS)))(* ; "And say what kind.") - ) - ((EQ (IMAGEOBJPROP BUTTON 'STATE) - 'OFF) (* ; - "This paragraph IS NOT a page heading.") - (SETQ NEWLOOKS (CONS 'TYPE (CONS NIL NEWLOOKS))) - (* ; - "Tell him that it's NOT a heading.") - (SETQ NEWLOOKS (CONS 'SUBTYPE (CONS NIL NEWLOOKS))) - (MBUTTON.NEXT.FIELD.AS.TEXT TEXTOBJ (ADD1 (CDR NEXTB))) - (* ; "And say what kind.") - ) - (T (* ; - "No change specified. Skip over the heading-type fill-in.") - (MBUTTON.NEXT.FIELD.AS.TEXT TEXTOBJ (ADD1 (CDR NEXTB] - [COND - ((SETQ LINELEAD (MBUTTON.NEXT.FIELD.AS.NUMBER TEXTOBJ (fetch (SELECTION CH#) - of SCRATCHSEL))) - (* ; "Get any line leading") - (SETQ NEWLOOKS (CONS 'LINELEADING (CONS LINELEAD NEWLOOKS] - [COND - ([SETQ PARALEAD (MBUTTON.NEXT.FIELD.AS.NUMBER TEXTOBJ (ADD1 (fetch (SELECTION - CH#) - of SCRATCHSEL] - (* ; "Get any paragraph leading") - (SETQ NEWLOOKS (CONS 'PARALEADING (CONS PARALEAD NEWLOOKS] - [COND - ([SETQ SPECIALX (MBUTTON.NEXT.FIELD.AS.NUMBER TEXTOBJ (ADD1 (fetch (SELECTION - CH#) - of SCRATCHSEL] - (* ; - "Get any special X position for the paragraph") - (SETQ NEWLOOKS (CONS 'SPECIALX (CONS (FIXR (TIMES 12 SPECIALX)) - NEWLOOKS] - [COND - ([SETQ SPECIALY (MBUTTON.NEXT.FIELD.AS.NUMBER TEXTOBJ (ADD1 (fetch (SELECTION - CH#) - of SCRATCHSEL] - (* ; - "Get special Y positioning for the paragraph") - (SETQ NEWLOOKS (CONS 'SPECIALY (CONS (FIXR (TIMES 12 SPECIALY)) - NEWLOOKS] - (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ (fetch (SELECTION CH#) of - SCRATCHSEL - ))) - (SETQ BUTTON (CAR NEXTB)) - [COND - [(EQ (IMAGEOBJPROP BUTTON 'STATE) - 'ON) (* ; - "This paragraph starts on a new page (or col or box, as apprpopriate)") - (SETQ NEWLOOKS (CONS 'NEWPAGEBEFORE (CONS T NEWLOOKS] - ((EQ (IMAGEOBJPROP BUTTON 'STATE) - 'OFF) (* ; - "This paragraph IS NOT a page heading.") - (SETQ NEWLOOKS (CONS 'NEWPAGEBEFORE (CONS NIL NEWLOOKS] - [SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ (ADD1 (CDR NEXTB] - (SETQ BUTTON (CAR NEXTB)) - [COND - [(EQ (IMAGEOBJPROP BUTTON 'STATE) - 'ON) (* ; - "The next paragraph starts on a new page....") - (SETQ NEWLOOKS (CONS 'NEWPAGEAFTER (CONS T NEWLOOKS] - ((EQ (IMAGEOBJPROP BUTTON 'STATE) - 'OFF) (* ; - "The next paragraph DOESN'T START on a new page....") - (SETQ NEWLOOKS (CONS 'NEWPAGEAFTER (CONS NIL NEWLOOKS] - [SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ (ADD1 (CDR NEXTB] - (SETQ BUTTON (CAR NEXTB)) - (SELECTQ (IMAGEOBJPROP BUTTON 'STATE) - (ON (push NEWLOOKS T) - (push NEWLOOKS 'HARDCOPY)) - (OFF (push NEWLOOKS NIL) - (push NEWLOOKS 'HARDCOPY)) - NIL) - -(* ;;; "THE VARIOUS KINDS OF KEEP PROPERTIES (ONLY HEADING-KEEP FOR NOW THO)") - - [SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ (ADD1 (CDR NEXTB] - (SETQ BUTTON (CAR NEXTB)) - (SELECTQ (IMAGEOBJPROP BUTTON 'STATE) - (ON (push NEWLOOKS 'ON) - (push NEWLOOKS 'HEADINGKEEP)) - (OFF (push NEWLOOKS 'OFF) - (push NEWLOOKS 'HEADINGKEEP)) - NIL) - -(* ;;; "THE DEFAULT TAB WIDTH") - - (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ (fetch (SELECTION CH#) of - SCRATCHSEL - ))) - (SETQ BUTTON (CAR NEXTB)) - (SETQ DEFAULTTAB (MBUTTON.NEXT.FIELD.AS.NUMBER TEXTOBJ (CDR NEXTB))) - (while (NOT (type? MARGINBAR BUTTON)) do (SETQ NEXTB ( - MBUTTON.FIND.NEXT.BUTTON - TEXTOBJ - (fetch (SELECTION - CH#) - of SCRATCHSEL))) - (SETQ BUTTON (CAR NEXTB))) - (SETQ BUTTONDATA (IMAGEOBJPROP BUTTON 'OBJECTDATUM)) - [COND - ((IGEQ [SETQ L1 (FIXR (TIMES (fetch MARL1 of BUTTONDATA) - (fetch MARUNIT of BUTTONDATA] - 0) (* ; - "The 1stleftmargin is set, and non-neutral.") - (SETQ NEWLOOKS (CONS '1STLEFTMARGIN (CONS L1 NEWLOOKS] - [COND - ((IGEQ [SETQ LN (FIXR (TIMES (fetch MARLN of BUTTONDATA) - (fetch MARUNIT of BUTTONDATA] - 0) (* ; - "The LEFTMARGIN is set, and non-neutral.") - (SETQ NEWLOOKS (CONS 'LEFTMARGIN (CONS LN NEWLOOKS] - [COND - ((IGEQ [SETQ R (FIXR (TIMES (fetch MARR of BUTTONDATA) - (fetch MARUNIT of BUTTONDATA] - 0) (* ; - "The RIGHTMARGIN is set, and non-neutral.") - (SETQ NEWLOOKS (CONS 'RIGHTMARGIN (CONS R NEWLOOKS] - [COND - ((NEQ (fetch MARTABS of BUTTONDATA) - 'NEUTRAL) (* ; - "If the tab settings are neutral, don't change anything.") - (SETQ NEWLOOKS - (CONS 'TABS - (CONS [CONS DEFAULTTAB - (SORT (for TAB in (fetch MARTABS of BUTTONDATA) - collect (CONS (FIXR (TIMES (CAR TAB) - (fetch MARUNIT - of BUTTONDATA))) - (CDR TAB))) - (FUNCTION (LAMBDA (A B) - (ILEQ (CAR A) - (CAR B] - NEWLOOKS] - (TEDIT.PARALOOKS MAINTEXT NEWLOOKS (fetch (SELECTION CH#) of (fetch - (TEXTOBJ SEL) - of MAINTEXT)) - (fetch (SELECTION DCH) of (fetch (TEXTOBJ SEL) of MAINTEXT))) - (\SHOWSEL SEL NIL NIL) - (TTY.PROCESS (WINDOWPROP (WINDOWPROP W 'MAINWINDOW) - 'PROCESS]) - -(\TEDIT.SHOW.PARALOOKS - [LAMBDA (OBJ SEL W) (* ; "Edited 6-Jul-92 09:42 by jds") - - (* ;; "Fill in the PARAGRAPH LOOKS menu from the para looks for a selected character") - - (PROG* ((TEXTOBJ (fetch (SELECTION \TEXTOBJ) of SEL)) - (MAINTEXT (WINDOWPROP (WINDOWPROP W 'MAINWINDOW) - 'TEXTOBJ)) - (CH# (ADD1 (fetch (SELECTION CH#) of SEL))) - (SCRATCHSEL (fetch (TEXTOBJ SCRATCHSEL) of TEXTOBJ)) - (OLDUPDATEFLG (fetch (TEXTOBJ TXTDON'TUPDATE) of TEXTOBJ)) - FMTSPEC BUTTON NEXTB ARB BUTTONDATA) - (\SHOWSEL SEL NIL NIL) - (replace (SELECTION SET) of SEL with NIL) - (COND - ((ZEROP (fetch (TEXTOBJ TEXTLEN) of MAINTEXT)) - (* ; - "If there is no text to take the formatting from, don't bother") - (RETURN))) - (WITHOUT-UPDATES TEXTOBJ SCRATCHSEL - [SETQ FMTSPEC (fetch (PIECE PPARALOOKS) - of (\CHTOPC [IMAX 1 (IMIN (fetch (TEXTOBJ TEXTLEN) - of MAINTEXT) - (fetch (SELECTION CH#) - of (fetch (TEXTOBJ SEL) - of MAINTEXT] - (fetch (TEXTOBJ PCTB) of MAINTEXT] - (* ; "Get to the start of the text.") - [SETQ CH# (ADD1 (CDR (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#] - (* ; "Skip the NEUTRAL button.") - (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#)) - (* ; "Grab the justification button") - (SETQ BUTTON (CAR NEXTB)) - [for ITEM in (IMAGEOBJPROP BUTTON 'BUTTONS) - do (COND - ([EQ (fetch (FMTSPEC QUAD) of FMTSPEC) - (U-CASE (COND - ((LISTP ITEM) - (CAR ITEM)) - (T ITEM] (* ; "Turn this button on.") - (IMAGEOBJPROP BUTTON 'STATE ITEM) - (RETURN] (* ; - "Now find which text button was 'on'") - [SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ (ADD1 (CDR NEXTB] - (* ; "Find the 'Page Heading' button") - (SETQ BUTTON (CAR NEXTB)) - (COND - ((EQ (fetch (FMTSPEC FMTPARATYPE) of FMTSPEC) - 'PAGEHEADING) (* ; - "This IS a page heading. Turn the button ON and set the heading type field") - (IMAGEOBJPROP BUTTON 'STATE 'ON) - (MBUTTON.SET.NEXT.FIELD TEXTOBJ (ADD1 (fetch (SELECTION CH#) - of SCRATCHSEL)) - (fetch (FMTSPEC FMTPARASUBTYPE) of FMTSPEC))) - (T (* ; - "This isn't a page heading; make sure the type field is empty.") - (IMAGEOBJPROP BUTTON 'STATE 'OFF) - (MBUTTON.SET.NEXT.FIELD TEXTOBJ (ADD1 (fetch (SELECTION CH#) - of SCRATCHSEL)) - NIL))) - (MBUTTON.SET.NEXT.FIELD TEXTOBJ (ADD1 (fetch (SELECTION CH#) of - SCRATCHSEL - )) - (fetch (FMTSPEC LINELEAD) of FMTSPEC)) - (* ; "Update the LINE LEADING field") - (MBUTTON.SET.NEXT.FIELD TEXTOBJ (ADD1 (fetch (SELECTION CH#) of - SCRATCHSEL - )) - (fetch (FMTSPEC LEADBEFORE) of FMTSPEC)) - (* ; "Update the PARA LEADING field") - [MBUTTON.SET.NEXT.FIELD - TEXTOBJ - (ADD1 (fetch (SELECTION CH#) of SCRATCHSEL)) - (LET ((VAL (/ (FIXR (IQUOTIENT (OR (fetch (FMTSPEC FMTSPECIALX) of FMTSPEC - ) - 0) - 3)) - 4))) - (COND - ((FIXP VAL) - VAL) - (T (FLOAT VAL] - [MBUTTON.SET.NEXT.FIELD - TEXTOBJ - (ADD1 (fetch (SELECTION CH#) of SCRATCHSEL)) - (LET ((VAL (/ (FIXR (IQUOTIENT (OR (fetch (FMTSPEC FMTSPECIALY) of FMTSPEC - ) - 0) - 3)) - 4))) - (COND - ((FIXP VAL) - VAL) - (T (FLOAT VAL] - [SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ (ADD1 (fetch (SELECTION - CH#) - of SCRATCHSEL] - (SETQ BUTTON (CAR NEXTB)) - [COND - ((fetch (FMTSPEC FMTNEWPAGEBEFORE) of FMTSPEC) - (IMAGEOBJPROP BUTTON 'STATE 'ON) (* ; "This para starts on a new page") - ) - (T (IMAGEOBJPROP BUTTON 'STATE 'OFF] - [SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ (ADD1 (CDR NEXTB] - (SETQ BUTTON (CAR NEXTB)) - [COND - ((fetch (FMTSPEC FMTNEWPAGEAFTER) of FMTSPEC) - (IMAGEOBJPROP BUTTON 'STATE 'ON) (* ; "This para starts on a new page") - ) - (T (IMAGEOBJPROP BUTTON 'STATE 'OFF] - - (* ;; "HARDCOPY-DISPLAY MODE") - - [SETQ NEXTB (MBUTTON.SET.NEXT.BUTTON.STATE TEXTOBJ (ADD1 (CDR NEXTB)) - (COND - ((fetch (FMTSPEC FMTHARDCOPY) of FMTSPEC) - (* ; - "This para is to be formatted for hardcopy on the display") - 'ON) - (T 'OFF] - - (* ;; "HEADING KEEP") - - [SETQ NEXTB (MBUTTON.SET.NEXT.BUTTON.STATE TEXTOBJ NEXTB - (COND - ((fetch (FMTSPEC FMTHEADINGKEEP) of FMTSPEC) - (* ; - "This para is to be formatted for hardcopy on the display") - 'ON) - (T 'OFF] - - (* ;; "DEFAULT TAB WIDTH") - - (MBUTTON.SET.NEXT.FIELD TEXTOBJ NEXTB (CAR (fetch (FMTSPEC TABSPEC) - of FMTSPEC))) - (* ; - "Update the DEFAULT TAB SPACING field") - (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ (fetch (SELECTION CH#) - of SCRATCHSEL))) - (SETQ BUTTON (CAR NEXTB)) - (while (NOT (type? MARGINBAR BUTTON)) - do [SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ (ADD1 (CDR NEXTB] - (SETQ BUTTON (CAR NEXTB))) - (SETQ BUTTONDATA (IMAGEOBJPROP BUTTON 'OBJECTDATUM)) - (* ; - "(IMAGEOBJPROP BUTTON (QUOTE IMAGECACHE) NIL)") - (* ; "Tell it to reformat itself.") - (replace MARL1 of BUTTONDATA with (FQUOTIENT (fetch (FMTSPEC - 1STLEFTMAR - ) - of FMTSPEC) - (fetch MARUNIT - of BUTTONDATA))) - (replace MARLN of BUTTONDATA with (FQUOTIENT (fetch (FMTSPEC - LEFTMAR) - of FMTSPEC) - (fetch MARUNIT - of BUTTONDATA))) - (replace MARR of BUTTONDATA with (FQUOTIENT (fetch (FMTSPEC - RIGHTMAR) - of FMTSPEC) - (fetch MARUNIT of - BUTTONDATA)) - ) - (replace MARTABS of BUTTONDATA - with (for TAB in (CDR (fetch (FMTSPEC TABSPEC) of FMTSPEC)) - collect (CONS (FQUOTIENT (CAR TAB) - (fetch MARUNIT of BUTTONDATA)) - (CDR TAB]) - -(\TEDIT.NEUTRALIZE.PARALOOKS.MENU - [LAMBDA (OBJ SEL W) (* ; "Edited 30-May-91 22:18 by jds") - - (* ;; "Set all the fields of a PARAGRAPH LOOKS menu to neutral settings.") - - (PROG ((TEXTOBJ (fetch (SELECTION \TEXTOBJ) of SEL)) - (CH# (ADD1 (fetch (SELECTION CH#) of SEL))) - SCRATCHSEL FMTSPEC BUTTON NEXTB ARB BUTTONDATA) - (SETQ SCRATCHSEL (fetch (TEXTOBJ SCRATCHSEL) of TEXTOBJ)) - (* ; "Get to the start of the text.") - (WITHOUT-UPDATES TEXTOBJ SCRATCHSEL (SETQ NEXTB (MBUTTON.SET.NEXT.BUTTON.STATE - TEXTOBJ CH# 'NIL)) - (* ; - "Neutralize the justification N-Way button") - (SETQ NEXTB (MBUTTON.SET.NEXT.BUTTON.STATE TEXTOBJ NEXTB 'NEUTRAL)) - (* ; "Find the 'Page Heading' button") - (MBUTTON.SET.NEXT.FIELD TEXTOBJ (ADD1 (fetch (SELECTION CH#) of - SCRATCHSEL - )) - NIL) - (MBUTTON.SET.NEXT.FIELD TEXTOBJ (ADD1 (fetch (SELECTION CH#) of - SCRATCHSEL - )) - NIL) (* ; "Update the LINE LEADING field") - (MBUTTON.SET.NEXT.FIELD TEXTOBJ (ADD1 (fetch (SELECTION CH#) of - SCRATCHSEL - )) - NIL) (* ; "Update the PARA LEADING field") - (MBUTTON.SET.NEXT.FIELD TEXTOBJ (ADD1 (fetch (SELECTION CH#) of - SCRATCHSEL - )) - NIL) - (MBUTTON.SET.NEXT.FIELD TEXTOBJ (ADD1 (fetch (SELECTION CH#) of - SCRATCHSEL - )) - NIL) - (SETQ NEXTB (MBUTTON.SET.NEXT.BUTTON.STATE TEXTOBJ (ADD1 (fetch (SELECTION - CH#) - of SCRATCHSEL)) - 'NEUTRAL)) (* ; "New page before") - (SETQ NEXTB (MBUTTON.SET.NEXT.BUTTON.STATE TEXTOBJ NEXTB 'NEUTRAL)) - (* ; "New page after") - (SETQ NEXTB (MBUTTON.SET.NEXT.BUTTON.STATE TEXTOBJ NEXTB 'NEUTRAL)) - (* ; "Hardcopy formatting mode") - (MBUTTON.SET.NEXT.FIELD TEXTOBJ NEXTB NIL) - (* ; - "Update the DEFAULT TAB SPACING field") - (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ (fetch (SELECTION CH#) - of SCRATCHSEL))) - (SETQ BUTTON (CAR NEXTB)) - (while (NOT (type? MARGINBAR BUTTON)) - do [SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ (ADD1 (CDR NEXTB] - (SETQ BUTTON (CAR NEXTB))) - (SETQ BUTTONDATA (IMAGEOBJPROP BUTTON 'OBJECTDATUM)) - (* ; - "(IMAGEOBJPROP BUTTON (QUOTE IMAGECACHE) NIL)") - (* ; "Tell it to reformat itself.") - [replace MARL1 of BUTTONDATA - with (COND - ((ILESSP (fetch MARL1 of BUTTONDATA) - 0) - (fetch MARL1 of BUTTONDATA)) - (T (IMIN -0.5 (IMINUS (fetch MARL1 of BUTTONDATA] - [replace MARLN of BUTTONDATA - with (COND - ((ILESSP (fetch MARLN of BUTTONDATA) - 0) - (fetch MARLN of BUTTONDATA)) - (T (IMIN -0.5 (IMINUS (fetch MARLN of BUTTONDATA] - [replace MARR of BUTTONDATA - with (COND - ((ILESSP (fetch MARR of BUTTONDATA) - 0) - (fetch MARR of BUTTONDATA)) - ((ZEROP (fetch MARR of BUTTONDATA)) - (IMINUS (IQUOTIENT (IDIFFERENCE (fetch (TEXTOBJ WRIGHT) - of TEXTOBJ) - 20) - 12))) - (T (IMIN -0.5 (IMINUS (fetch MARR of BUTTONDATA] - (replace MARTABS of BUTTONDATA with 'NEUTRAL]) - -(\TEDIT.RECORD.TABLEADERS - [LAMBDA (BUTTON NEWSTATE TEXTSTREAM SEL) (* ; "Edited 30-May-91 22:18 by jds") - - (* Toggle the dotted-leader state of the margin bar tab-setter. - This is called when the user hits the "dotted leader" toggle button in the menu) - - (PROG* [(FLG (COND - ((EQ NEWSTATE 'ON) - T) - (T NIL))) - (TEXTOBJ (TEXTOBJ TEXTSTREAM)) - (MARGINBAR (CAR (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ (ADD1 (fetch (SELECTION - CH#) - of SEL] - (replace MARTABTYPE of (IMAGEOBJPROP MARGINBAR 'OBJECTDATUM) - with (SELECTQ (OR (fetch MARTABTYPE of (IMAGEOBJPROP MARGINBAR - 'OBJECTDATUM)) - 'LEFT) - (LEFT 'DOTTEDLEFT) - (DOTTEDLEFT 'LEFT) - (CENTERED 'DOTTEDCENTERED) - (DOTTEDCENTERED - 'CENTERED) - (RIGHT 'DOTTEDRIGHT) - (DOTTEDRIGHT 'RIGHT) - (DECIMAL 'DOTTEDDECIMAL) - (DOTTEDDECIMAL 'DECIMAL) - (SHOULDNT]) -) -(DEFINEQ - -(\TEDIT.SHOW.PAGEFORMATTING - [LAMBDA (OBJ SEL W) (* ; "Edited 4-Feb-92 16:38 by jds") - -(* ;;; "Take a document's page formatting, and display it in the menu.") - - (PROG* ((TEXTOBJ (fetch (SELECTION \TEXTOBJ) of SEL)) - (MAINTEXT (WINDOWPROP (WINDOWPROP W 'MAINWINDOW) - 'TEXTOBJ)) - (CH# (ADD1 (fetch (SELECTION CH#) of SEL))) - (SCRATCHSEL (fetch (TEXTOBJ SCRATCHSEL) of TEXTOBJ)) - (OLDUPDATEFLG (fetch (TEXTOBJ TXTDON'TUPDATE) of TEXTOBJ)) - FOLIOINFO NEWLOOKS NEXTB BUTTON PAGEID OPAGEFRAMES FIRST REST PFONT HEADING HEADINGS - PAGEPROPS STARTINGPAGE# PAPERSIZE) - - (* ;; "Start by turning off the selection--and leaving it off afterward.") - - (\SHOWSEL SEL NIL NIL) - (replace (SELECTION SET) of SEL with NIL) - - (* ;; "What kind of page are we looking at the specs for?") - - (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#)) - (SETQ BUTTON (CAR NEXTB)) - (SELECTQ (IMAGEOBJPROP (CAR NEXTB) - 'STATE) - (|First(&Default)| - (SETQ PAGEID 'FIRST)) - (Other% Left (SETQ PAGEID 'LEFT)) - (Other% Right (SETQ PAGEID 'RIGHT)) - (PROGN (TEDIT.PROMPTPRINT MAINTEXT "First specify which kind of page you want to see." - T) - (SETQ PAGEID NIL))) - - (* ;; "Now mark the menu for NO SCREEN UPDATES during the button-setting process.") - - (AND PAGEID (WITHOUT-UPDATES TEXTOBJ SCRATCHSEL (replace (TEXTOBJ TXTDON'TUPDATE) - of TEXTOBJ with T) - - (* ;; "Now replace the button values, fill-in fields, etc.") - - (SETQ OPAGEFRAMES (OR (fetch (TEXTOBJ TXTPAGEFRAMES) of - MAINTEXT - ) - TEDIT.PAGE.FRAMES)) - [COND - ((LISTP OPAGEFRAMES) (* ; - "No problem, this is already just a list of first-recto-verso frames") - ) - (T (* ; - "This is probably a parsed-up version of the thing. Fix it to a list.") - (COND - [(EQ (fetch (PAGEREGION REGIONFILLMETHOD) of - OPAGEFRAMES - ) - 'SEQUENCE) - (SETQ FIRST (CAR (fetch (PAGEREGION REGIONSUBBOXES) - of OPAGEFRAMES))) - (SETQ REST (CADR (fetch (PAGEREGION REGIONSUBBOXES) - of OPAGEFRAMES))) - (COND - [(EQ (fetch (PAGEREGION REGIONFILLMETHOD) of - REST) - 'ALTERNATE) - (SETQ OPAGEFRAMES (CONS FIRST (fetch (PAGEREGION - REGIONSUBBOXES) - of REST] - (T (SETQ OPAGEFRAMES NIL] - (T (SETQ OPAGEFRAMES NIL] - (COND - ((NOT OPAGEFRAMES) (* ; - "If the formatting isn't in our simplified 3-way format, punt out of this.") - (TEDIT.PROMPTPRINT MAINTEXT "Format too complex to edit." T) - (SETQ PAGEID NIL))) - (SELECTQ PAGEID - (FIRST (SETQ NEWLOOKS (CAR OPAGEFRAMES))) - (LEFT (SETQ NEWLOOKS (CADR OPAGEFRAMES)) - (SETQ PAPERSIZE (LISTGET [CAR (FLAST ( - TEDIT.UNPARSE.PAGEFORMAT - (CAR OPAGEFRAMES) - 'PICAS] - 'PAPERSIZE))) - (RIGHT (SETQ NEWLOOKS (CADDR OPAGEFRAMES)) - (SETQ PAPERSIZE (LISTGET [CAR (FLAST ( - TEDIT.UNPARSE.PAGEFORMAT - (CAR OPAGEFRAMES) - 'PICAS] - 'PAPERSIZE))) - NIL) - (COND - (PAGEID (SETQ NEWLOOKS (TEDIT.UNPARSE.PAGEFORMAT NEWLOOKS - 'PICAS)) - (SETQ PAGEPROPS (CAR (FLAST NEWLOOKS))) - [COND - ((EQ PAGEID 'FIRST) - (SETQ PAPERSIZE (LISTGET PAGEPROPS 'PAPERSIZE] - (SETQ CH# (ADD1 (CDR NEXTB))) - (* ; - "Move past the kind-of-page button") - (SETQ STARTINGPAGE# (LISTGET PAGEPROPS 'STARTINGPAGE#)) - (* ; - "Grab a potential starting page number.") - (MBUTTON.SET.NEXT.FIELD TEXTOBJ CH# STARTINGPAGE#) - (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#)) - (SETQ CH# (ADD1 (CDR NEXTB))) - (IMAGEOBJPROP (CAR NEXTB) - 'STATE - (OR PAPERSIZE 'Letter)) - (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#)) - (SETQ CH# (ADD1 (CDR NEXTB))) - [IMAGEOBJPROP (CAR NEXTB) - 'STATE - (COND - ((LISTGET PAGEPROPS 'LANDSCAPE?) - 'ON) - (T 'OFF] (* ; - "Tell whether the page is to be landscape or not.") - (SETQ FOLIOINFO (LISTGET PAGEPROPS 'FOLIOINFO)) - (* ; "Page number fomratting info") - (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#)) - (SETQ CH# (ADD1 (CDR NEXTB))) - [IMAGEOBJPROP (CAR NEXTB) - 'STATE - (COND - ((pop NEWLOOKS) - 'Yes) - (T 'No] - (SETQ BUTTON (CAR NEXTB)) - (MBUTTON.SET.NEXT.FIELD TEXTOBJ (ADD1 (CDR NEXTB)) - (pop NEWLOOKS)) - (* ; "Page # X location") - (MBUTTON.SET.NEXT.FIELD TEXTOBJ - (ADD1 (fetch (SELECTION CH#) of SCRATCHSEL)) - (pop NEWLOOKS)) - (* ; "Page # Y location") - (SETQ PFONT (pop NEWLOOKS)) - (* ; "Skip the font info for now.") - [SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON - TEXTOBJ - (ADD1 (fetch (SELECTION CH#) of - SCRATCHSEL - ] - (SETQ CH# (ADD1 (CDR NEXTB))) - (SETQ BUTTON (CAR NEXTB)) - (IMAGEOBJPROP BUTTON 'STATE (SELECTQ (pop FOLIOINFO) - (ARABIC 123) - (LOWERROMAN 'xiv) - (UPPERROMAN 'XIV) - 123)) - (* ; "The format for the page number") - (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#)) - (SETQ CH# (ADD1 (CDR NEXTB))) - (SETQ BUTTON (CAR NEXTB)) - (* ; "How to align the page number") - (IMAGEOBJPROP BUTTON 'STATE (SELECTQ (pop NEWLOOKS) - (LEFT 'Left) - (RIGHT 'Right) - (CENTERED 'Centered) - 'Centered)) - (MBUTTON.SET.NEXT.FIELD TEXTOBJ CH# (pop FOLIOINFO)) - (* ; - "The text to surround the page number") - (MBUTTON.SET.NEXT.FIELD TEXTOBJ - (ADD1 (fetch (SELECTION CH#) of SCRATCHSEL)) - (pop FOLIOINFO)) - (MBUTTON.SET.NEXT.FIELD TEXTOBJ - (ADD1 (fetch (SELECTION CH#) of SCRATCHSEL)) - (pop NEWLOOKS)) - (* ; "Left Margin") - (MBUTTON.SET.NEXT.FIELD TEXTOBJ - (ADD1 (fetch (SELECTION CH#) of SCRATCHSEL)) - (pop NEWLOOKS)) - (* ; "Right Margin") - (MBUTTON.SET.NEXT.FIELD TEXTOBJ - (ADD1 (fetch (SELECTION CH#) of SCRATCHSEL)) - (pop NEWLOOKS)) - (* ; "Top margin") - (MBUTTON.SET.NEXT.FIELD TEXTOBJ - (ADD1 (fetch (SELECTION CH#) of SCRATCHSEL)) - (pop NEWLOOKS)) - (* ; "Bottom Margin") - (MBUTTON.SET.NEXT.FIELD TEXTOBJ - (ADD1 (fetch (SELECTION CH#) of SCRATCHSEL)) - (pop NEWLOOKS)) - (* ; "# of columns") - (MBUTTON.SET.NEXT.FIELD TEXTOBJ - (ADD1 (fetch (SELECTION CH#) of SCRATCHSEL)) - (pop NEWLOOKS)) - (* ; "Column width") - (MBUTTON.SET.NEXT.FIELD TEXTOBJ - (ADD1 (fetch (SELECTION CH#) of SCRATCHSEL)) - (pop NEWLOOKS)) - (* ; "Intercolumn spacing") - (SETQ HEADINGS (pop NEWLOOKS)) - (for HEADING# from 1 to 8 - do - - (* ;; - "Insert info about up to 8 headings (the # of spots in the menu)") - - (SETQ HEADING (pop HEADINGS)) - (MBUTTON.SET.NEXT.FIELD - TEXTOBJ - (ADD1 (fetch (SELECTION CH#) of SCRATCHSEL) - ) - (pop HEADING)) - (MBUTTON.SET.NEXT.FIELD - TEXTOBJ - (ADD1 (fetch (SELECTION CH#) of SCRATCHSEL) - ) - (pop HEADING)) - (MBUTTON.SET.NEXT.FIELD - TEXTOBJ - (ADD1 (fetch (SELECTION CH#) of SCRATCHSEL) - ) - (pop HEADING))) - (COND - (HEADINGS - - (* ;; - "There were headings left over, so warn user.") - - (PROMPTPRINT "WARNING: This document has more kinds of page heading than the menu has room for. Some will be lost if you APPLY this menu." - ))) - (\TEDIT.FILL.IN.CHARLOOKS.MENU TEXTOBJ - (ADD1 (fetch (SELECTION CH#) of SCRATCHSEL)) - (OR PFONT TEDIT.DEFAULT.FOLIO.LOOKS)) - (* ; - "The font for the page numbers to appear in.") - ]) - -(\TEDITPAGEMENU.CREATE - [LAMBDA NIL (* gbn " 8-Oct-84 18:25") - (* Creates the TEdit Expanded Menu) - (SETQ TEDIT.EXPANDED.PAGEMENU (\TEXTMENU.DOC.CREATE (APPEND TEDIT.PAGEMENU.SPEC - TEDIT.MENUDIVIDER.SPEC - [LIST (create MB.TEXT - MBSTRING _ - "Character Looks for Page Numbers: " - MBFONT _ - (FONTCREATE 'HELVETICA 10 - 'BOLD] - TEDIT.CHARLOOKSMENU.SPEC]) - -(\TEDIT.APPLY.PAGEFORMATTING - [LAMBDA (OBJ SEL W) (* ; - "Edited 4-Jun-93 12:04 by sybalsky:mv:envos") - -(* ;;; "Change the page formatting for this document") - - (PROG ((TEXTOBJ (fetch (SELECTION \TEXTOBJ) of SEL)) - (MAINTEXT (WINDOWPROP (WINDOWPROP W 'MAINWINDOW) - 'TEXTOBJ)) - (CH# (ADD1 (fetch (SELECTION CH#) of SEL))) - SCRATCHSEL NEXTB BUTTON OPAGEFRAMES PAGEID PX PY LEFT BOTTOM TOP RIGHT ALIGNMENT PAGENOS - COLS COLWIDTH INTERCOL PFONT NPAGEFORMAT HEADINGTYPE HEADINGX HEADINGY HEADINGS - HEADINGINVALID STARTINGPAGE# FOLIOFORMAT FOLIOPRETEXT FOLIOPOSTTEXT PAGEOPTIONS - NFPAGEFORMAT PAPERSIZE LANDSCAPE?) - (SETQ SCRATCHSEL (fetch (TEXTOBJ SCRATCHSEL) of TEXTOBJ)) - [SETQ CH# (ADD1 (CDR (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#] - (* ; "Skip the SHOW button.") - (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#)) - (SETQ CH# (ADD1 (CDR NEXTB))) - (SELECTQ (IMAGEOBJPROP (CAR NEXTB) - 'STATE) - (|First(&Default)| - (SETQ PAGEID 'FIRST)) - (Other% Left (SETQ PAGEID 'LEFT)) - (Other% Right (SETQ PAGEID 'RIGHT)) - (PROGN (TEDIT.PROMPTPRINT MAINTEXT "Set KIND OF PAGE before APPLYing." T) - (RETURN))) (* ; "Find which page, for later.") - (SETQ STARTINGPAGE# (AND (EQ PAGEID 'FIRST) - (MBUTTON.NEXT.FIELD.AS.NUMBER TEXTOBJ CH#))) - (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#)) - (SETQ CH# (ADD1 (CDR NEXTB))) - (SETQ PAPERSIZE (OR (IMAGEOBJPROP (CAR NEXTB) - 'STATE) - 'Letter)) (* ; - "Get the size of paper this is to be formatted for") - (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#)) - (SETQ CH# (ADD1 (CDR NEXTB))) - (SETQ LANDSCAPE? (EQ (IMAGEOBJPROP (CAR NEXTB) - 'STATE) - 'ON)) (* ; - "Decide if this kind of page is to be printed landscape....") - (SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ CH#)) - (SETQ CH# (ADD1 (CDR NEXTB))) - (SELECTQ (IMAGEOBJPROP (CAR NEXTB) - 'STATE) - (No (SETQ PAGENOS NIL)) - (Yes (SETQ PAGENOS T)) - NIL) (* ; "Find about page numbers") - (SETQ PX (MBUTTON.NEXT.FIELD.AS.NUMBER TEXTOBJ CH#)) - [SETQ PY (MBUTTON.NEXT.FIELD.AS.NUMBER TEXTOBJ (ADD1 (fetch (SELECTION CH#) - of SCRATCHSEL] - [COND - (PAGENOS (* ; - "If he wants page numbers, make sure he said WHERE to put them.") - (COND - ((AND PX PY)) - (T (TEDIT.PROMPTPRINT MAINTEXT - "Please set the X and Y location for page numbers before APPLYing." - T) - (TEDIT.PROMPTFLASH MAINTEXT) - (RETURN] - [SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ (ADD1 (fetch (SELECTION CH#) - of SCRATCHSEL] - (* ; - "Get to the numbering-format button") - (SETQ BUTTON (CAR NEXTB)) - (SETQ FOLIOFORMAT (SELECTQ (IMAGEOBJPROP BUTTON 'STATE) - (123 (* ; "arabic numbers") - 'ARABIC) - (xiv (* ; "lower-case roman numerals") - 'LOWERROMAN) - (XIV (* ; "Upper-case roman numerals") - 'UPPERROMAN) - 'ARABIC)) - [SETQ NEXTB (MBUTTON.FIND.NEXT.BUTTON TEXTOBJ (ADD1 (CDR NEXTB] - (* ; - "Get to the number alignment button") - (SETQ BUTTON (CAR NEXTB)) - [SETQ ALIGNMENT (U-CASE (IMAGEOBJPROP BUTTON 'STATE] - (* ; "PX PY PFONT ALIGNMENT") - (* ; - "Margins: LEFT, RIGHT, TOP, BOTTOM") - (SETQ CH# (ADD1 (CDR NEXTB))) - (SETQ FOLIOPRETEXT (MBUTTON.NEXT.FIELD.AS.TEXT TEXTOBJ CH#)) - [SETQ FOLIOPOSTTEXT (MBUTTON.NEXT.FIELD.AS.TEXT TEXTOBJ (ADD1 (fetch (SELECTION - CH#) - of SCRATCHSEL] - -(* ;;; "Now get the margins on the paper") - - [SETQ LEFT (MBUTTON.NEXT.FIELD.AS.NUMBER TEXTOBJ (ADD1 (fetch (SELECTION CH#) - of SCRATCHSEL] - [SETQ RIGHT (MBUTTON.NEXT.FIELD.AS.NUMBER TEXTOBJ (ADD1 (fetch (SELECTION CH#) - of SCRATCHSEL] - [SETQ TOP (MBUTTON.NEXT.FIELD.AS.NUMBER TEXTOBJ (ADD1 (fetch (SELECTION CH#) - of SCRATCHSEL] - [SETQ BOTTOM (MBUTTON.NEXT.FIELD.AS.NUMBER TEXTOBJ (ADD1 (fetch (SELECTION CH#) - of SCRATCHSEL] - (COND - [(SETQ COLS (MBUTTON.NEXT.FIELD.AS.NUMBER TEXTOBJ (ADD1 (fetch (SELECTION CH#) - of SCRATCHSEL] - (T (TEDIT.PROMPTPRINT MAINTEXT "Please specify how many columns there should be." T) - (TEDIT.PROMPTFLASH MAINTEXT))) - [SETQ COLWIDTH (MBUTTON.NEXT.FIELD.AS.NUMBER TEXTOBJ (ADD1 (fetch (SELECTION CH#) - of SCRATCHSEL] - [SETQ INTERCOL (MBUTTON.NEXT.FIELD.AS.NUMBER TEXTOBJ (ADD1 (fetch (SELECTION CH#) - of SCRATCHSEL] - (* ; "Col count, width, spacing") - (SETQ HEADINGS (for HEADING# from 1 to 8 - when (PROG1 [SETQ HEADINGTYPE (MBUTTON.NEXT.FIELD.AS.ATOM - TEXTOBJ - (ADD1 (fetch (SELECTION CH#) - of SCRATCHSEL] - [SETQ HEADINGX (MBUTTON.NEXT.FIELD.AS.NUMBER - TEXTOBJ - (ADD1 (fetch (SELECTION CH#) - of SCRATCHSEL] - [SETQ HEADINGY (MBUTTON.NEXT.FIELD.AS.NUMBER - TEXTOBJ - (ADD1 (fetch (SELECTION CH#) - of SCRATCHSEL]) - collect (COND - ((AND HEADINGX HEADINGY)) - (T (TEDIT.PROMPTPRINT MAINTEXT (CONCAT - "You need to say WHERE " - HEADINGTYPE - " headings go.") - T) - (TEDIT.PROMPTFLASH MAINTEXT) - (SETQ HEADINGINVALID T))) - (LIST HEADINGTYPE HEADINGX HEADINGY))) - (COND - (HEADINGINVALID (* ; "Headings invalid.") - (RETURN))) - [SETQ PFONT (\TEDIT.PARSE.CHARLOOKS.MENU TEXTOBJ (ADD1 (fetch (SELECTION CH#) - of SCRATCHSEL] - -(* ;;; "Glom all the oddball options (starting page, folio format &c) together") - - (SETQ PAGEOPTIONS (AND STARTINGPAGE# (LIST 'STARTINGPAGE# STARTINGPAGE#))) - (push PAGEOPTIONS (LIST FOLIOFORMAT FOLIOPRETEXT FOLIOPOSTTEXT)) - (push PAGEOPTIONS 'FOLIOINFO) - [COND - (LANDSCAPE? (* ; - "The pages are to be printed landscape. Remember that fact.") - (push PAGEOPTIONS T) - (push PAGEOPTIONS 'LANDSCAPE?] - (SETQ NPAGEFORMAT (TEDIT.SINGLE.PAGEFORMAT PAGENOS PX PY PFONT (AND (NEQ ALIGNMENT - 'OFF) - ALIGNMENT) - LEFT RIGHT TOP BOTTOM COLS COLWIDTH INTERCOL HEADINGS 'PICAS - PAGEOPTIONS PAPERSIZE)) - (SETQ OPAGEFRAMES (fetch (TEXTOBJ TXTPAGEFRAMES) of MAINTEXT)) - [COND - ((NOT (LISTP OPAGEFRAMES)) - (COND - ((EQ PAGEID 'FIRST) (* ; - "Setting the first page sets them all") - (SETQ PAGEOPTIONS (COPY PAGEOPTIONS)) - (LISTPUT PAGEOPTIONS 'STARTINGPAGE# NIL) (* ; - "Starting page nubmer makes no sense on other than first pages.") - (SETQ NFPAGEFORMAT (TEDIT.SINGLE.PAGEFORMAT PAGENOS PX PY PFONT - (AND (NEQ ALIGNMENT 'OFF) - ALIGNMENT) - LEFT RIGHT TOP BOTTOM COLS COLWIDTH INTERCOL HEADINGS - 'PICAS PAGEOPTIONS PAPERSIZE)) - (SETQ OPAGEFRAMES (LIST NPAGEFORMAT NFPAGEFORMAT NFPAGEFORMAT))) - (T (* ; - "Otherwise, start from the default page layout") - (SETQ OPAGEFRAMES (COPY TEDIT.PAGE.FRAMES] - (SELECTQ PAGEID - (FIRST (RPLACA OPAGEFRAMES NPAGEFORMAT)) - (LEFT (RPLACA (CDR OPAGEFRAMES) - NPAGEFORMAT)) - (RIGHT (RPLACA (CDDR OPAGEFRAMES) - NPAGEFORMAT)) - NIL) - (TEDIT.PAGEFORMAT MAINTEXT OPAGEFRAMES) - (replace (TEXTOBJ \DIRTY) of MAINTEXT with T) - (* ; - "Mark the document as having changed.") - (TTY.PROCESS (WINDOWPROP (WINDOWPROP W 'MAINWINDOW) - 'PROCESS]) - -(TEDIT.UNPARSE.PAGEFORMAT - [LAMBDA (PAGEREGION UNITS) (* ; "Edited 12-Jun-90 18:59 by mitani") - -(* ;;; "Take a page layout and unparse it into a PList of specs.") - - (LET* ((PAPER (fetch (PAGEREGION REGIONSPEC) of PAGEREGION)) - (PAPERWIDTH (fetch (REGION WIDTH) of PAPER)) - (PAPERHEIGHT (fetch (REGION HEIGHT) of PAPER)) - (REGIONS (fetch (PAGEREGION REGIONSUBBOXES) of PAGEREGION)) - PX PY PFONT PQUAD PINFO LEFT RIGHT TOP BOTTOM (COLS 0) - COLWIDTH - (INTERCOL 0) - SPECS PAGENOS (OLDRIGHT NIL) - SCALEFACTOR HEADINGS) - [for REGION in REGIONS - do - - (* ;; - "Run thru the regions on the page, calculating information about the page as a whole.") - - (COND - ((EQ (fetch (PAGEREGION REGIONFILLMETHOD) of REGION) - 'FOLIO) (* ; - "A page-number (%"Folio%") region") - (SETQ PAGENOS T) - (SETQ PX (fetch (REGION LEFT) of (fetch REGIONSPEC of REGION)) - ) - (SETQ PY (fetch (REGION BOTTOM) of (fetch REGIONSPEC of REGION - ))) - (SETQ SPECS (fetch REGIONLOCALINFO of REGION)) - (SETQ PFONT (LISTGET SPECS 'CHARLOOKS)) - [SETQ PQUAD (CADR (LISTGET SPECS 'PARALOOKS] - (SELECTQ PQUAD - (LEFT) - (RIGHT (SETQ PX (IPLUS PX 288))) - (CENTERED (SETQ PX (IPLUS PX 144))) - NIL)) - [(EQ (fetch (PAGEREGION REGIONFILLMETHOD) of REGION) - 'HEADING) (* ; "A page-heading region") - (SETQ HEADINGS (NCONC1 HEADINGS (LIST (LISTGET (fetch REGIONLOCALINFO - of REGION) - 'HEADINGTYPE) - (fetch (REGION LEFT) - of (fetch REGIONSPEC - of REGION)) - (fetch (REGION BOTTOM) - of (fetch REGIONSPEC - of REGION] - (T (* ; "A regular-text region.") - (add COLS 1) (* ; "Count columns") - (SETQ COLWIDTH (fetch (REGION WIDTH) of (fetch REGIONSPEC - of REGION))) - [SETQ RIGHT (IDIFFERENCE PAPERWIDTH (ADD1 (fetch (REGION RIGHT) - of (fetch REGIONSPEC - of REGION] - (COND - ((EQ OLDRIGHT T)) - (OLDRIGHT (SETQ INTERCOL (IDIFFERENCE (fetch (REGION LEFT) - of (fetch REGIONSPEC - of REGION)) - OLDRIGHT)) - (SETQ OLDRIGHT T)) - (T (SETQ OLDRIGHT (fetch (REGION RIGHT) of (fetch REGIONSPEC - of REGION))) - (SETQ LEFT (fetch (REGION LEFT) of (fetch REGIONSPEC - of REGION))) - [SETQ TOP (IDIFFERENCE PAPERHEIGHT (fetch (REGION PTOP) - of (fetch REGIONSPEC - of REGION] - (SETQ BOTTOM (fetch (REGION BOTTOM) of (fetch REGIONSPEC - of REGION] - (SELECTQ UNITS - ((POINTS NIL) (* If units are in printers points, - the default, do no scaling) - ) - (PICAS (* The units are in picas--12pts - per. Scale all values.) - (SETQ SCALEFACTOR 0.12)) - (INCHES (* The units are in inches, at - 72.27pts per. Set the scale factor) - (SETQ SCALEFACTOR 0.7227)) - (CM (* Units are in CM, at 72.27/2.54pts - per.) - (SETQ SCALEFACTOR (CONSTANT (FQUOTIENT 0.7227 2.54)))) - (\ILLEGAL.ARG UNITS)) - [COND - (SCALEFACTOR (* We need to do the scaling.) - (AND PX (SETQ PX (FQUOTIENT (FIXR (FQUOTIENT PX SCALEFACTOR)) - 100))) - (AND PY (SETQ PY (FQUOTIENT (FIXR (FQUOTIENT PY SCALEFACTOR)) - 100))) - (AND LEFT (SETQ LEFT (FQUOTIENT (FIXR (FQUOTIENT LEFT SCALEFACTOR)) - 100))) - (AND RIGHT (SETQ RIGHT (FQUOTIENT (FIXR (FQUOTIENT RIGHT SCALEFACTOR)) - 100))) - (AND TOP (SETQ TOP (FQUOTIENT (FIXR (FQUOTIENT TOP SCALEFACTOR)) - 100))) - (AND BOTTOM (SETQ BOTTOM (FQUOTIENT (FIXR (FQUOTIENT BOTTOM SCALEFACTOR)) - 100))) - (AND COLWIDTH (SETQ COLWIDTH (FQUOTIENT (FIXR (FQUOTIENT COLWIDTH SCALEFACTOR)) - 100))) - (AND INTERCOL (SETQ INTERCOL (FQUOTIENT (FIXR (FQUOTIENT INTERCOL SCALEFACTOR)) - 100))) - (SETQ HEADINGS (for HDG in HEADINGS - collect (LIST (CAR HDG) - (FQUOTIENT (FIXR (FQUOTIENT (CADR HDG) - SCALEFACTOR)) - 100) - (FQUOTIENT (FIXR (FQUOTIENT (CADDR HDG) - SCALEFACTOR)) - 100] - (LIST PAGENOS PX PY PFONT PQUAD LEFT RIGHT TOP BOTTOM COLS COLWIDTH INTERCOL HEADINGS - (fetch (PAGEREGION REGIONLOCALINFO) of PAGEREGION]) -) - - - -(* ; "Initialization Code") - -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS TEDIT.EXPANDED.MENU TEDIT.EXPANDEDPARA.MENU TEDIT.CHARLOOKS.MENU TEDIT.MENUDIVIDER.SPEC - TEDIT.EXPANDEDMENU.SPEC TEDIT.CHARLOOKSMENU.SPEC TEDIT.PARAMENU.SPEC TEDIT.PAGEMENU.SPEC - TEDIT.EXPANDED.PAGEMENU) -) -(DEFINEQ - -(\TEDIT.MENU.INIT - [LAMBDA NIL (* ; "Edited 30-Mar-94 15:53 by jds") - -(* ;;; "Initialize the descriptions for all TEdit menus") - -(* ;;; "Divides between the main page layout menu and page-# font submenu") - - (SETQ TEDIT.MENUDIVIDER.SPEC (LIST (create MB.TEXT - MBSTRING _ " - -"))) - -(* ;;; "The principal expanded menu") - - (SETQ TEDIT.EXPANDEDMENU.SPEC (LIST (create MB.BUTTON - MBLABEL _ "Quit") - (create MB.TEXT - MBSTRING _ " ") - (create MB.BUTTON - MBLABEL _ "Page Layout") - (create MB.TEXT - MBSTRING _ " ") - (create MB.BUTTON - MBLABEL _ "Char Looks") - (create MB.TEXT - MBSTRING _ " ") - (create MB.BUTTON - MBLABEL _ "Para Looks") - (create MB.TEXT - MBSTRING _ " ") - (create MB.BUTTON - MBLABEL _ "All") - (create MB.TEXT - MBSTRING _ " ") - (create MB.TOGGLE - MBTEXT _ "Unformatted" - MBCHANGESTATEFN _ (FUNCTION - \TEDITMENU.RECORD.UNFORMATTED)) - (create MB.TEXT - MBSTRING _ " -") - (create MB.BUTTON - MBLABEL _ "Get") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " ") - (create MB.BUTTON - MBLABEL _ "Put") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " ") - (create MB.BUTTON - MBLABEL _ "Include") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " -") - (create MB.BUTTON - MBLABEL _ "Find") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " ") - (create MB.BUTTON - MBLABEL _ "Substitute") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " for") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " ") - (create MB.TOGGLE - MBTEXT _ "Confirm") - (create MB.TEXT - MBSTRING _ " ") - (create MB.TOGGLE - MBTEXT _ "Use New Looks") - (create MB.TEXT - MBSTRING _ " -") - (create MB.BUTTON - MBLABEL _ "Hardcopy") - (create MB.TEXT - MBSTRING _ " server:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " copies:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " -") - (create MB.TEXT - MBSTRING _ "Print ") - (create MB.NWAY - MBBUTTONS _ '(One% Side Duplex) - MBMAXITEMSPERLINE _ 5) - (create MB.TEXT - MBSTRING _ " Message/Phone#:") - (create MB.INSERT))) - -(* ;;; "The character-looks (font, etc.) menu") - - (SETQ TEDIT.CHARLOOKSMENU.SPEC (LIST (create MB.TEXT - MBSTRING _ "Props: " - MBFONT _ (FONTCREATE 'HELVETICA 8)) - (create MB.3STATE - MBLABEL _ 'Bold) - (create MB.TEXT - MBSTRING _ " ") - (create MB.3STATE - MBLABEL _ 'Italic) - (create MB.TEXT - MBSTRING _ " ") - (create MB.3STATE - MBLABEL _ 'Underline) - (create MB.TEXT - MBSTRING _ " ") - (create MB.3STATE - MBLABEL _ 'StrikeThru) - (create MB.TEXT - MBSTRING _ " ") - (create MB.3STATE - MBLABEL _ 'Overbar) - (create MB.TEXT - MBSTRING _ " -") - (create MB.NWAY - MBBUTTONS _ - '(TimesRoman Helvetica Gacha Modern Classic Terminal - Other) - MBMAXITEMSPERLINE _ 5) - (create MB.TEXT - MBSTRING _ "other font:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " -") - (create MB.TEXT - MBSTRING _ "Size: " - MBFONT _ (FONTCREATE 'HELVETICA 8)) - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " ") - (create MB.NWAY - MBBUTTONS _ '(Normal Superscript Subscript)) - (create MB.TEXT - MBSTRING _ " distance: " - MBFONT _ (FONTCREATE 'HELVETICA 8)) - (create MB.INSERT))) - -(* ;;; "The paragraph-formatting menu (margins, etc.)") - - (SETQ TEDIT.PARAMENU.SPEC (LIST (create MB.BUTTON - MBLABEL _ 'APPLY - MBBUTTONEVENTFN _ (FUNCTION \TEDIT.APPLY.PARALOOKS)) - (create MB.TEXT - MBSTRING _ " ") - (create MB.BUTTON - MBLABEL _ 'SHOW - MBBUTTONEVENTFN _ (FUNCTION \TEDIT.SHOW.PARALOOKS)) - (create MB.TEXT - MBSTRING _ " ") - (create MB.BUTTON - MBLABEL _ 'NEUTRAL - MBBUTTONEVENTFN _ (FUNCTION - \TEDIT.NEUTRALIZE.PARALOOKS.MENU)) - (create MB.TEXT - MBSTRING _ " -") - (create MB.NWAY - MBBUTTONS _ '(Left Right Centered Justified)) - (create MB.TEXT - MBSTRING _ " ") - (create MB.3STATE - MBLABEL _ "Page Heading") - (create MB.TEXT - MBSTRING _ " type:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " -Line leading:" - MBFONT _ (FONTCREATE 'HELVETICA 8)) - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ "pts Para Leading:" - MBFONT _ (FONTCREATE 'HELVETICA 8)) - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ "pts Special Locn: X" - MBFONT _ (FONTCREATE 'HELVETICA 8)) - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ "picas, Y" - MBFONT _ (FONTCREATE 'HELVETICA 8)) - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ "picas -New Page: " - MBFONT _ (FONTCREATE 'HELVETICA 8)) - (create MB.3STATE - MBLABEL _ "Before") - (create MB.TEXT - MBSTRING _ " ") - (create MB.3STATE - MBLABEL _ "After") - (create MB.TEXT - MBSTRING _ " Display mode: " - MBFONT _ (FONTCREATE 'HELVETICA 8)) - (create MB.3STATE - MBLABEL _ "Hardcopy") - (create MB.TEXT - MBSTRING _ " Keep: " - MBFONT _ (FONTCREATE 'HELVETICA 8)) - (create MB.3STATE - MBLABEL _ "Heading") - (create MB.TEXT - MBSTRING _ " -Tab Type: " - MBFONT _ (FONTCREATE 'HELVETICA 8)) - [create MB.NWAY - MBBUTTONS _ '((Left \TEDIT.TABTYPE.SET) - (Right \TEDIT.TABTYPE.SET) - (Centered \TEDIT.TABTYPE.SET) - (Decimal \TEDIT.TABTYPE.SET] - (create MB.TEXT - MBSTRING _ " ") - (create MB.TOGGLE - MBTEXT _ "Dotted Leader" - MBCHANGESTATEFN _ (FUNCTION \TEDIT.RECORD.TABLEADERS)) - (create MB.TEXT - MBSTRING _ " Default Tab Size:" - MBFONT _ (FONTCREATE 'HELVETICA 8)) - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " -") - (create MB.MARGINBAR) - (create MB.TEXT - MBSTRING _ " -"))) - -(* ;;; "Page-layout menu for columns, page headings, page numbers, etc.") - - (SETQ TEDIT.PAGEMENU.SPEC (APPEND (LIST (create MB.BUTTON - MBLABEL _ 'APPLY - MBBUTTONEVENTFN _ '\TEDIT.APPLY.PAGEFORMATTING) - (create MB.TEXT - MBSTRING _ " " - MBFONT _ (FONTCREATE 'HELVETICA 8 'BOLD)) - (create MB.BUTTON - MBLABEL _ 'SHOW - MBBUTTONEVENTFN _ '\TEDIT.SHOW.PAGEFORMATTING) - (create MB.TEXT - MBSTRING _ " -") - (create MB.TEXT - MBSTRING _ "For page: ") - (create MB.NWAY - MBBUTTONS _ '(|First(&Default)| Other% Left - Other% Right)) - (create MB.TEXT - MBSTRING _ " - Starting Page #: ") - (create MB.INSERT - MBINITENTRY _ 1) - (create MB.TEXT - MBSTRING _ " Paper Size: ") - (create MB.NWAY - MBBUTTONS _ '(Letter Legal A4) - MBINITSTATE _ 'Letter) - (create MB.TEXT - MBSTRING _ " ") - (create MB.TOGGLE - MBTEXT _ "Landscape") - (create MB.TEXT - MBSTRING _ " - -") - (create MB.TEXT - MBSTRING _ "Page numbers: ") - (create MB.TEXT - MBSTRING _ " " - MBFONT _ (FONTCREATE 'HELVETICA 8 'BOLD)) - (create MB.NWAY - MBBUTTONS _ '(No Yes) - MBINITSTATE _ 'Yes) - (create MB.TEXT - MBSTRING _ " ") - (create MB.TEXT - MBSTRING _ "X: ") - (create MB.INSERT - MBINITENTRY _ 25.5) - (create MB.TEXT - MBSTRING _ " ") - (create MB.TEXT - MBSTRING _ "Y: ") - (create MB.INSERT - MBINITENTRY _ 3) - (create MB.TEXT - MBSTRING _ " Format: ") - (create MB.NWAY - MBBUTTONS _ '(123 xiv XIV) - MBINITSTATE _ '123) - (create MB.TEXT - MBSTRING _ " - ") - (create MB.TEXT - MBSTRING _ "Alignment: ") - (create MB.NWAY - MBBUTTONS _ '(Left Centered Right) - MBINITSTATE _ 'Centered) - (create MB.TEXT - MBSTRING _ " -") - (create MB.TEXT - MBSTRING _ " Text before number: ") - (create MB.INSERT - MBINITENTRY _ "") - (create MB.TEXT - MBSTRING _ " Text after number: ") - (create MB.INSERT - MBINITENTRY _ "") - (create MB.TEXT - MBSTRING _ " -")) - (LIST (create MB.TEXT - MBSTRING _ "Margins: Left") - (create MB.INSERT - MBINITENTRY _ 6) - (create MB.TEXT - MBSTRING _ " Right") - (create MB.INSERT - MBINITENTRY _ 6) - (create MB.TEXT - MBSTRING _ " Top") - (create MB.INSERT - MBINITENTRY _ 6) - (create MB.TEXT - MBSTRING _ " Bottom") - (create MB.INSERT - MBINITENTRY _ 6) - (create MB.TEXT - MBSTRING _ " -") - (create MB.TEXT - MBSTRING _ "Columns: ") - (create MB.INSERT - MBINITENTRY _ 1) - (create MB.TEXT - MBSTRING _ " Col Width: ") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " Space between cols: ") - (create MB.INSERT - MBINITENTRY _ 1) - (create MB.TEXT - MBSTRING _ " -") - (create MB.TEXT - MBSTRING _ "Page Headings:" - MBFONT _ (FONTCREATE 'HELVETICA 10 'BOLD)) - (create MB.TEXT - MBSTRING _ " - Heading Type:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " X:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " Y:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " Heading Type:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " X:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " Y:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " - Heading Type:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " X:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " Y:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " Heading Type:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " X:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " Y:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " - Heading Type:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " X:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " Y:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " Heading Type:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " X:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " Y:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " - Heading Type:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " X:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " Y:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " Heading Type:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " X:") - (create MB.INSERT) - (create MB.TEXT - MBSTRING _ " Y:") - (create MB.INSERT]) -) -(DECLARE%: DONTEVAL@LOAD DOCOPY - -(\TEDIT.MENU.INIT) - -(\TEDITMENU.CREATE) - -(\TEDIT.CHARLOOKSMENU.CREATE) - -(\TEDITPARAMENU.CREATE) - -(\TEDITPAGEMENU.CREATE) -) -(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS - -(ADDTOVAR NLAMA ) - -(ADDTOVAR NLAML ) - -(ADDTOVAR LAMA ) -) -(PUTPROPS TEDITMENU COPYRIGHT ("Venue & Xerox Corporation" 1983 1984 1985 1986 1987 1988 1989 1990 -1991 1992 1993 1994 1995)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (6299 33141 (MB.BUTTONEVENTINFN 6309 . 7640) (MB.DISPLAY 7642 . 10010) (MB.SETIMAGE -10012 . 10970) (MB.SELFN 10972 . 12387) (MB.SIZEFN 12389 . 13406) (MB.WHENOPERATEDFN 13408 . 13740) ( -MB.COPYFN 13742 . 14204) (MB.GETFN 14206 . 14814) (MB.PUTFN 14816 . 15593) (MB.SHOWSELFN 15595 . 16567 -) (MBUTTON.CREATE 16569 . 17853) (MBUTTON.CHANGENAME 17855 . 18250) (MBUTTON.FIND.BUTTON 18252 . 19268 -) (MBUTTON.FIND.NEXT.BUTTON 19270 . 20665) (MBUTTON.FIND.NEXT.FIELD 20667 . 24381) (MBUTTON.INIT 24383 - . 25173) (MBUTTON.NEXT.FIELD.AS.NUMBER 25175 . 25528) (MBUTTON.NEXT.FIELD.AS.PIECES 25530 . 25960) ( -MBUTTON.NEXT.FIELD.AS.TEXT 25962 . 26384) (MBUTTON.NEXT.FIELD.AS.ATOM 26386 . 27259) ( -MBUTTON.SET.FIELD 27261 . 29317) (MBUTTON.SET.NEXT.FIELD 29319 . 30536) (MBUTTON.SET.NEXT.BUTTON.STATE - 30538 . 31034) (TEDITMENU.STREAM 31036 . 31645) (\TEDITMENU.SELSCREENER 31647 . 33139)) (33445 43868 -(MB.CREATE.THREESTATEBUTTON 33455 . 34626) (MB.THREESTATE.DISPLAY 34628 . 37218) ( -MB.THREESTATE.SHOWSELFN 37220 . 40322) (MB.THREESTATE.WHENOPERATEDFN 40324 . 41703) ( -MB.THREESTATEBUTTON.FN 41705 . 42802) (THREESTATE.INIT 42804 . 43866)) (43969 63205 ( -MB.CREATE.NWAYBUTTON 43979 . 47947) (MB.NB.DISPLAYFN 47949 . 50221) (MB.NB.WHENOPERATEDFN 50223 . -51255) (MB.NB.SIZEFN 51257 . 54796) (MB.NWAYBUTTON.SELFN 54798 . 56742) (MB.NWAYMENU.NEWBUTTON 56744 - . 57330) (NWAYBUTTON.INIT 57332 . 58185) (MB.NB.PACKITEMS 58187 . 60184) (MB.NWAYBUTTON.ADDITEM 60186 - . 63203)) (63459 74107 (\TEXTMENU.TOGGLE.CREATE 63469 . 64870) (\TEXTMENU.TOGGLE.DISPLAY 64872 . -67224) (\TEXTMENU.TOGGLE.SHOWSELFN 67226 . 69588) (\TEXTMENU.TOGGLE.WHENOPERATEDFN 69590 . 70978) ( -\TEXTMENU.TOGGLEFN 70980 . 72060) (\TEXTMENU.TOGGLE.INIT 72062 . 72897) (\TEXTMENU.SET.TOGGLE 72899 . -74105)) (74359 111675 (DRAWMARGINSCALE 74369 . 77913) (MARGINBAR 77915 . 85285) (MARGINBAR.CREATE -85287 . 88197) (MB.MARGINBAR.SELFN 88199 . 100793) (MB.MARGINBAR.SIZEFN 100795 . 101157) ( -MB.MARGINBAR.DISPLAYFN 101159 . 103844) (MDESCALE 103846 . 104285) (MSCALE 104287 . 104621) ( -MB.MARGINBAR.SHOWTAB 104623 . 106794) (MB.MARGINBAR.TABTRACK 106796 . 108131) (\TEDIT.TABTYPE.SET -108133 . 110784) (MARGINBAR.INIT 110786 . 111673)) (112692 130294 (\TEXTMENU.START 112702 . 115894) ( -\TEXTMENU.DOC.CREATE 115896 . 127420) (TEXTMENU.CLOSEFN 127422 . 130292)) (130604 150668 ( -\TEDITMENU.CREATE 130614 . 130914) (\TEDIT.EXPANDED.MENU 130916 . 131620) (MB.DEFAULTBUTTON.FN 131622 - . 134494) (\TEDITMENU.RECORD.UNFORMATTED 134496 . 134834) (MB.DEFAULTBUTTON.ACTIONFN 134836 . 150666) -) (150669 178052 (\TEDIT.CHARLOOKSMENU.CREATE 150679 . 152819) (\TEDIT.EXPANDEDCHARLOOKS.MENU 152821 - . 153195) (\TEDIT.APPLY.BOLDNESS 153197 . 153482) (\TEDIT.APPLY.CHARLOOKS 153484 . 155415) ( -\TEDIT.APPLY.OLINE 155417 . 155698) (\TEDIT.SHOW.CHARLOOKS 155700 . 157613) ( -\TEDIT.NEUTRALIZE.CHARLOOKS 157615 . 158541) (\TEDIT.FILL.IN.CHARLOOKS.MENU 158543 . 166196) ( -\TEDIT.NEUTRALIZE.CHARLOOKS.MENU 166198 . 169081) (\TEDIT.PARSE.CHARLOOKS.MENU 169083 . 177191) ( -\TEDIT.APPLY.SLOPE 177193 . 177476) (\TEDIT.APPLY.STRIKEOUT 177478 . 177765) (\TEDIT.APPLY.ULINE -177767 . 178050)) (178053 210119 (\TEDITPARAMENU.CREATE 178063 . 178443) (\TEDIT.EXPANDEDPARA.MENU -178445 . 178765) (\TEDIT.APPLY.PARALOOKS 178767 . 190997) (\TEDIT.SHOW.PARALOOKS 190999 . 202526) ( -\TEDIT.NEUTRALIZE.PARALOOKS.MENU 202528 . 208599) (\TEDIT.RECORD.TABLEADERS 208601 . 210117)) (210120 -248122 (\TEDIT.SHOW.PAGEFORMATTING 210130 . 226670) (\TEDITPAGEMENU.CREATE 226672 . 227715) ( -\TEDIT.APPLY.PAGEFORMATTING 227717 . 240088) (TEDIT.UNPARSE.PAGEFORMAT 240090 . 248120)) (248427 -275166 (\TEDIT.MENU.INIT 248437 . 275164))))) -STOP diff --git a/obsolete/library/new/TEDITMENU.LCOM b/obsolete/library/new/TEDITMENU.LCOM deleted file mode 100644 index 71e6d33022d5c554ee62672f4c1468206c878d18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91656 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

    %%o<3ee0R%Qrm^1(4}@J6Un!Bs<6#`7+5(t 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 diff --git a/obsolete/library/new/TEDITSCREEN.LCOM b/obsolete/library/new/TEDITSCREEN.LCOM deleted file mode 100644 index e149404fd1e2a576aeabc2e0762126cdb6f6d8d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38741 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 sQA~R79Y0a}iO~t<8 diff --git a/obsolete/library/new/TEDITSELECTION.LCOM b/obsolete/library/new/TEDITSELECTION.LCOM deleted file mode 100644 index 17e5bd168688f22abe7933969637dd5068968512..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34965 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 MkAnZ}pikcaUy;FDIsgCw diff --git a/obsolete/library/new/TEDITWINDOW.LCOM b/obsolete/library/new/TEDITWINDOW.LCOM deleted file mode 100644 index ffe171505e6e91fae0b6cc0814bba13da8ad3bd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54033 zcmeIb3vgW5c_xT%P!uf-FaWk83Zm&N=wXl+Ve|tp+L6%!8teudeIY#9q$~%d(2xKU zA~+;ySv#3bVtccm$|M;lwq@ClGxo&ens_n;0z|DJvAb%ryAyh9o!Z%?mP~E7vbCGp z%4BDYtW53f)|RaOzW+bx-g9p^Wce{wv$d8@^gZXEd!GOK-{(JllZB~LrEqepR4$w> zRi=FJ*j#>MCV#r%^_D7&h52%6VXoIZHebk3F6PI}vF!2uLcvQ99B=Dm1rsQ>SeW#B zGue}~7p|Th9rV(+kRH^=cQk(3Jai=G4IGsoY3!LvII9=C8kaax{mLoEjWDmC4xNU0T2V z;?t`iy|Q_A3mtsZo_gt#fy_Y0TUons`Nh?1Ufb5@6Q{hsGx_-i&l%H%Kf7?;li4!) zlN06R-j%DXA6ehLeocCf?|Qx5$?5BtPmX52bmkQPpBd=&+H}g^dZ#kS+ob7!U6`tO zYI3-(Z_dkl^M%tTzv9h#8E;M}8_#KPu2?9YE-vDEz?+-*XXh5Z5{u0Ha|?J%dt7Ba z*tf^MmM7+)l$?2? z-Rht6D~nz_I~>V1eKG5l&f1mGe4Cva+@}q6N(UEfd}z>PbCZRIiTTppqCf8qaUj@= z{cdjtqg{-4CO2$gCeoMekT>a9-m~ash9a*$EJ0*VMj}bf)bTd65N2)qrvQ=tX66kf z|G40*wE%ptv;urBpmrtSI-rh4;F0jXPM~{>FgY;T0F%QxZ*Iw8K1|FUSHME$;P9IR z<={XJ4hd)jqs`YkJp%9} zm%Hj~pY+=k`1RY9%k6c)WADYat`ci|Zl`A^S(a~GfK7o|HSyq)x>l8{36lQGjh64% zi<ENKIW(H ze&xm+&--0B-uOGk@=m|D*vC$Mudn0c-QB~Qb6^uWf6XR-#boR~s69Bbap*RBu+v*T z(%6HG(gXD4M&i2Zj_LO-KD)#G4+n$#dVEli{jfnj`V)0|_o?;99_yUNI@$7#nQ$a6 zUzb(5+4`{?Enki;!z1!x8ffd#@Tl1q-cSzcN_Gek z7a4`K^ImQ^$jjliT4Dp`l<~4-FDY zo?XPaNPu;(4}pdS&!AuIhD$OB2I5(RBO~6_?Bc>)VZs{(zKne_2*j=(^acmBLEVGd zk?lB#OV4}#_4HhNWXGsFM}D6HJ<@Ju)WJuhIA;LU9#F$uqp3Ow17r%>l2rECR$|67Kup} zA8;uJ!LTwdoCQ+I{Sy-`@}3XX{t!Q}O0k*k?wOq<`Y61cJg(_uetcrG?LL&1 znGGoSY^hS34P^qIByvz!Y1IVyx!A!=Be%TDjn$DwP>M_{{Mu5Z>DFBLwJ-|CVs^v2+30HR!i!T>-MimUb#0dt%SY;d z%0D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 i+y4utu={=h diff --git a/obsolete/library/new/TEXTOFD b/obsolete/library/new/TEXTOFD deleted file mode 100644 index cfd036b0..00000000 --- a/obsolete/library/new/TEXTOFD +++ /dev/null @@ -1,2637 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "24-Apr-95 15:12:29" {DSK}library>new>TEXTOFD.;2 172919 - - changes to%: (FNS COPYTEXTSTREAM \DELETECH \INSERTCH) - - previous date%: "22-Mar-95 18:08:35" {DSK}library>new>TEXTOFD.;1) - - -(* ; " -Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1993, 1994, 1995 by John Sybalsky & Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT TEXTOFDCOMS) - -(RPAQQ TEXTOFDCOMS - [(FILES TEDITDCL) - (DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (\SCRATCHLEN 64)) - (FILES (LOADCOMP) - TEDITDCL)) - (FNS COPYTEXTSTREAM OPENTEXTSTREAM REOPENTEXTSTREAM TEDIT.STREAMCHANGEDP TEXTSTREAMP TXTFILE - \DELETECH \SETUPGETCH \TEDIT.REOPEN.STREAM \TEDIT.COPYTEXTSTREAM.PIECEMAPFN \TEXTINIT - \TEXTMARK \TEXTTTYBOUT) - (FNS \INSERTCH \INSERTCR) - (COMS - -(* ;;; "Functions to manipulate the Piece Table (PCTB)") - - (FNS \CHTOPC \CHTOPCNO \CLEARPCTB \CREATEPIECEORSTREAM \DELETEPIECE \FINDPIECE - \INSERTPIECE \MAKEPCTB \SPLITPIECE \INSERT.FIRST.PIECE)) - (COMS (* ; - "Generic-IO type operations support") - (FNS \TEXTCLOSEF \TEXTCLOSEF-SUBTREE \TEXTDSPFONT \TEXTEOFP \TEXTGETEOFPTR - \TEXTGETFILEPTR \TEXTOPENF \TEXTOPENF-SUBTREE \TEXTOUTCHARFN \TEXTBACKFILEPTR - \TEXTBOUT \TEDITOUTCHARFN \TEXTSETEOF \TEXTSETFILEPTR \TEXTDSPXPOSITION - \TEXTDSPYPOSITION \TEXTLEFTMARGIN \TEXTRIGHTMARGIN \TEXTDSPCHARWIDTH - \TEXTDSPSTRINGWIDTH \TEXTDSPLINEFEED) - (FNS \TEXTBIN \TEDIT.TEXTBIN.STRINGSETUP \TEDIT.TEXTBIN.FILESETUP - \TEDIT.TEXTBIN.NEW.PAGE) - (FNS \TEXTPEEKBIN \TEDIT.PEEKBIN.NEW.PAGE)) - (COMS (* ; "Support for TEXTPROP") - (FNS CGETTEXTPROP CTEXTPROP GETTEXTPROP PUTTEXTPROP TEXTPROP)) - [COMS - (* ;; "Support for error handling: The old error handler for the stream-not-open error. This is here, because you only want to do this ONCE, even if you load TEXTOFD multiple times (as, e.g., in development)") - - (INITVARS (*TEDIT-OLD-STREAM-ERROR-HANDLER* (CONDITION-HANDLER 'XCL:STREAM-NOT-OPEN] - (DECLARE%: DONTEVAL@LOAD DOCOPY (P (\TEXTINIT))) - (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA) - (NLAML) - (LAMA TEXTPROP]) - -(FILESLOAD TEDITDCL) -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RPAQQ \SCRATCHLEN 64) - - -(CONSTANTS (\SCRATCHLEN 64)) -) - - -(FILESLOAD (LOADCOMP) - TEDITDCL) -) -(DEFINEQ - -(COPYTEXTSTREAM - [LAMBDA (ORIGINAL CROSSCOPY) (* ; "Edited 31-May-91 13:57 by jds") - - (* ;; "Given a stream, textobj or window, returns a new textstream with the same contents. If CROSSCOPY then strings will really be allocated providing copies of the text else the fileptrs still will be aliases as in the rest of TEDIT.") - - (PROG ((TEXTOBJ (TEXTOBJ ORIGINAL)) - TSEL PCTB PCLST NEWSTREAM NEWTEXTOBJ) - (SETQ PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - (SETQ TSEL (fetch (TEXTOBJ SCRATCHSEL) of TEXTOBJ)) - (SETQ NEWSTREAM (OPENTEXTSTREAM NIL NIL NIL NIL (fetch (TEXTOBJ EDITPROPS) - of TEXTOBJ))) - (* ; - "First create an empty textstream into which the pieces can be hammered") - (SETQ NEWTEXTOBJ (TEXTOBJ NEWSTREAM)) - (replace (SELECTION CH#) of TSEL with 1) - (* ; - "Set up to select the whole source text") - (replace (SELECTION CHLIM) of TSEL with (ADD1 (fetch (TEXTOBJ TEXTLEN) - of TEXTOBJ))) - (replace (SELECTION DCH) of TSEL with (fetch (TEXTOBJ TEXTLEN) of - TEXTOBJ)) - (SETQ PCLST (TEDIT.SELECTED.PIECES TEXTOBJ TSEL CROSSCOPY (FUNCTION - \TEDIT.COPYTEXTSTREAM.PIECEMAPFN - ) - TEXTOBJ NEWTEXTOBJ)) (* ; - "now get a list of copies of the pieces to be inserted into the empty textstream") - (\TEDIT.INSERT.PIECES NEWTEXTOBJ 1 PCLST (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ) - NIL NIL CROSSCOPY) (* ; - "Put the pieces into the copy textstream") - (replace (TEXTOBJ TEXTLEN) of NEWTEXTOBJ with (fetch (TEXTOBJ TEXTLEN) - of TEXTOBJ)) - (* ; - "The copy is the same length as the original") - (replace (TEXTOBJ MENUFLG) of NEWTEXTOBJ with (fetch (TEXTOBJ MENUFLG) - of TEXTOBJ)) - (* ; - "And if the original is a menu, so's the copy") - (RETURN NEWSTREAM]) - -(OPENTEXTSTREAM - [LAMBDA (TEXT WINDOW START END PROPS) (* ; "Edited 4-May-93 14:38 by jds") - (* ; - "Create a text-type STREAM to describe TEXT. Optionally, connect that to WINDOW for display.") - (PROG* ([WAS-TEXTSTREAM (AND (type? STREAM TEXT) - (type? TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of TEXT] - [TEXTOBJ (COND - (WAS-TEXTSTREAM (* ; - "If the guy gave us a text stream to edit, use its TEXTOBJ as ours.") - (create TEXTOBJ - reusing (fetch (TEXTSTREAM TEXTOBJ) of TEXT) - \INSERTFIRSTCH _ -1 \INSERTNEXTCH _ -1 \INSERTPCVALID _ NIL)) - ((type? TEXTOBJ TEXT) - (create TEXTOBJ using TEXT \INSERTFIRSTCH _ -1 \INSERTNEXTCH _ -1 - \INSERTPCVALID _ NIL)) - (T (create TEXTOBJ] - (TEDIT.GET.FINISHEDFORMS NIL) - [PROPS (APPEND PROPS (COPY TEDIT.DEFAULT.PROPS) - (COPY (fetch (TEXTOBJ EDITPROPS) of TEXTOBJ] - [TEXTOBJ.WINDOW.VALID (AND WINDOW (EQ WINDOW (\TEDIT.PRIMARYW TEXTOBJ)) - (EQ TEXTOBJ (WINDOWPROP WINDOW 'TEXTOBJ] - FONT SEL PCTB PC TEXTSTREAM OTEXTOBJ PROP CLEARGET? PARALOOKS PWINDOW) - (* ; - "Remember if the textobj had a window already.") - (replace (TEXTOBJ \WINDOW) of TEXTOBJ with (AND WINDOW (LIST WINDOW))) - (* ; - "Necessary because some incoming object types depend on knowing where the window is.") - (replace (TEXTOBJ LINES) of TEXTOBJ with NIL) - - (* ;; "This is here so if we re-OPENTEXTSTREAM an existing stream/window pair we don't get two sets of line descriptors") - - (for PROPNAME in PROPS by (CDDR PROPNAME) as PROPVAL - in (CDR PROPS) by (CDDR PROPVAL) do (TEXTPROP TEXTOBJ PROPNAME PROPVAL) - ) (* ; - "Save the PROPS for later people who'd like to know them") - [SETQ FONT (COND - ((type? CHARLOOKS (LISTGET PROPS 'FONT)) - (LISTGET PROPS 'FONT)) - (T (\TEDIT.PARSE.CHARLOOKS.LIST [OR (LISTGET PROPS 'LOOKS) - (COND - [(LISTP (LISTGET PROPS 'FONT)) - (FONTCREATE (LISTGET PROPS - 'FONT] - (T (OR (LISTGET PROPS 'FONT) - DEFAULTFONT] - NIL TEXTOBJ] (* ; -"Find the default font for this session -- either what the guy tells us, or the global default font") - (SETQ PARALOOKS (LISTGET PROPS 'PARALOOKS)) - - (* ;; "Get the default paragraph looks. This must come before the first piece is created, so its fields can be filled in right.") - - (replace (TEXTOBJ FMTSPEC) of TEXTOBJ - with (\TEDIT.UNIQUIFY.PARALOOKS [SETQ PARALOOKS (\TEDIT.PARSE.PARALOOKS.LIST - (OR PARALOOKS - (create FMTSPEC - using - TEDIT.DEFAULT.FMTSPEC - ] - TEXTOBJ)) - [COND - [WAS-TEXTSTREAM (* ; - "We got a TEXTOFD stream to edit; just use it") - (SETQ OTEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of TEXT)) - (SETQ TEXTSTREAM TEXT) - (for SELN in (LIST (fetch (TEXTOBJ SEL) of TEXTOBJ) - (fetch (TEXTOBJ SCRATCHSEL) of TEXTOBJ) - (fetch (TEXTOBJ SHIFTEDSEL) of TEXTOBJ) - (fetch (TEXTOBJ MOVESEL) of TEXTOBJ) - (fetch (TEXTOBJ DELETESEL) of TEXTOBJ)) - do - - (* ;; "Make all the selections point to the CURRENT textobj!") - - (COND - ((EQ OTEXTOBJ (fetch (SELECTION \TEXTOBJ) of SELN)) - (replace (SELECTION \TEXTOBJ) of SELN with TEXTOBJ)) - (T (replace (SELECTION SET) of SELN with NIL))) - (replace (SELECTION ONFLG) of SELN with NIL)) - (replace (TEXTSTREAM TEXTOBJ) of TEXTSTREAM with TEXTOBJ) - (replace (TEXTOBJ STREAMHINT) of TEXTOBJ with TEXTSTREAM) - (SETQ PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - (replace (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ with NIL) - (* ; "Mark the edit incomplete.") - (replace (TEXTOBJ \DIRTY) of TEXTOBJ with NIL) - (* ; "And mark it not changed.") - (COND - (FONT (* ; - "If a new default font was specified, set it up.") - (replace (TEXTOBJ DEFAULTCHARLOOKS) of TEXTOBJ - with (\TEDIT.UNIQUIFY.CHARLOOKS FONT TEXTOBJ] - ((type? TEXTOBJ TEXT) (* ; - "We got a TEXTOBJ to edit; fill in the stream, since it might have been GC'd.") - (SETQ TEXTSTREAM (replace (TEXTOBJ STREAMHINT) of TEXTOBJ - with (create TEXTSTREAM - TEXTOBJ _ TEXTOBJ))) - (SETQ PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - (for FORM in TEDIT.GET.FINISHEDFORMS do (EVAL FORM))) - (T (* ; - "Otherwise, create a TEXTOFD to describe the text we're editing.-") - (SETQ TEXTSTREAM (replace (TEXTOBJ STREAMHINT) of TEXTOBJ - with (create TEXTSTREAM - TEXTOBJ _ TEXTOBJ))) - [replace (TEXTOBJ PCTB) of TEXTOBJ - with (SETQ PCTB (TEDIT.BUILD.PCTB TEXT TEXTOBJ START END FONT PARALOOKS - (LISTGET PROPS 'CLEARGET] - - (* ;; "(setq pc (\\editelt pctb (add1 |\\FirstPieceOffset|)))") - - (SETQ PC (\GETBASEPTR (\FIRSTNODE PCTB) - 0)) - (for FORM in TEDIT.GET.FINISHEDFORMS do (EVAL FORM)) - (replace (TEXTOBJ TEXTLEN) of TEXTOBJ with (fetch (BTREENODE TOTLEN) - of PCTB] - (replace (TEXTOBJ CARETLOOKS) of TEXTOBJ - with (\TEDIT.UNIQUIFY.CHARLOOKS (\TEDIT.CARETLOOKS.VERIFY TEXTOBJ - (replace (TEXTOBJ DEFAULTCHARLOOKS) - of TEXTOBJ with ( - \TEDIT.UNIQUIFY.CHARLOOKS - FONT TEXTOBJ))) - TEXTOBJ)) - (replace (TEXTOBJ CARET) of TEXTOBJ with (create - TEDITCARET - TCCARETDS _ - (AND WINDOW (WINDOWPROP WINDOW - 'DSP)) - TCFORCEUP _ T)) - (replace (TEXTOBJ TXTREADONLY) of TEXTOBJ with (LISTGET PROPS 'READONLY)) - (replace (TEXTOBJ TXTTERMSA) of TEXTOBJ with (AND (SETQ PROP - (LISTGET PROPS 'TERMTABLE)) - (fetch TERMSA - of PROP))) - (replace (TEXTOBJ TXTRTBL) of TEXTOBJ with (LISTGET PROPS 'READTABLE)) - (replace (TEXTOBJ TXTWTBL) of TEXTOBJ with (LISTGET PROPS 'BOUNDTABLE)) - [COND - ((LISTGET PROPS 'PAGEFORMAT) (* ; - "A default page formatting was supplied. Impose it on the document.") - (TEDIT.PAGEFORMAT TEXTOBJ (LISTGET PROPS 'PAGEFORMAT] - (SETQ SEL (fetch (TEXTOBJ SEL) of TEXTOBJ)) - (SETQ PROP (LISTGET PROPS 'SEL)) (* ; "Initial Selection, if any.") - (COND - ((EQ PROP 'DON'T) (* ; - "A SEL prop of DON'T means don't make an initial selection") - (replace (SELECTION SET) of SEL with NIL)) - ((type? SELECTION PROP) (* ; - "We came in with an explicit initial sel. Set it up.") - (\COPYSEL PROP SEL) - (replace (SELECTION SET) of SEL with T) - (replace (SELECTION \TEXTOBJ) of SEL with TEXTOBJ)) - ((AND (fetch (SELECTION SET) of SEL) - (NOT PROP)) (* ; - "If we came into this with a valid selection, highlight it.") - (replace (SELECTION \TEXTOBJ) of SEL with TEXTOBJ)) - (T (* ; - "Starting without a selection; let's start with a point selection before the first character.") - (replace (SELECTION CH#) of SEL with (COND - ((FIXP PROP)) - (PROP (CAR PROP)) - (1))) - (replace (SELECTION CHLIM) of SEL with (COND - ((FIXP PROP)) - (PROP (IPLUS (CAR PROP) - (CADR PROP))) - (1))) - (replace (SELECTION DCH) of SEL with (COND - ((FIXP PROP) - 0) - (PROP (CADR PROP)) - (0))) - (replace (SELECTION DX) of SEL with 0) - (replace (SELECTION POINT) of SEL with 'LEFT) - (replace (SELECTION SELKIND) of SEL with 'CHAR) - (replace (SELECTION SET) of SEL with (NOT (fetch (TEXTOBJ - TXTREADONLY) - of TEXTOBJ))) - (replace (SELECTION \TEXTOBJ) of SEL with TEXTOBJ))) - [COND - ((fetch (SELECTION SET) of SEL) (* ; - "If there's an initial selection, it implies initial caret looks, too.") - (replace (TEXTOBJ CARETLOOKS) of TEXTOBJ with (\TEDIT.GET.INSERT.CHARLOOKS - TEXTOBJ SEL] - (COND - ((AND WINDOW (NOT TEXTOBJ.WINDOW.VALID)) (* ; - "Only if there's a window to display it in:") - (replace (TEXTOBJ \WINDOW) of TEXTOBJ with NIL) - (\TEDIT.WINDOW.SETUP WINDOW TEXTOBJ TEXTSTREAM PROPS) - (* ; - "Set up the window, and display the initial text.") - ) - ((SETQ PWINDOW (LISTGET PROPS 'PROMPTWINDOW)) - - (* ;; "There is no window for the session, but he has passed in a promptwindow to use, install it in the textobj") - - (replace (TEXTOBJ PROMPTWINDOW) of TEXTOBJ with PWINDOW))) - (\SETUPGETCH (create EDITMARK - PC _ (\GETBASEPTR (\FIRSTNODE PCTB) - 0) - PCOFF _ 0 - PCNO _ 1) - TEXTOBJ) (* ; "Set the file ptr to 0") - (RETURN TEXTSTREAM]) - -(REOPENTEXTSTREAM - [LAMBDA (STREAM) (* ; "Edited 31-May-91 14:18 by jds") - (replace (STREAM ACCESS) of STREAM with 'BOTH) - (replace (STREAM BINABLE) of STREAM with T) - (replace (STREAM STRMBINFN) of STREAM with (FUNCTION \TEXTBIN)) - (replace (STREAM STRMBOUTFN) of STREAM with (FUNCTION \TEXTBOUT)) - STREAM]) - -(TEDIT.STREAMCHANGEDP - [LAMBDA (STREAM RESET?) (* ; "Edited 31-May-91 13:57 by jds") - (PROG1 (fetch (TEXTOBJ \DIRTY) of (TEXTOBJ STREAM)) - (COND - (RESET? (replace (TEXTOBJ \DIRTY) of (TEXTOBJ STREAM) with NIL))))]) - -(TEXTSTREAMP - (LAMBDA (STREAM) (* jds " 3-Apr-84 14:34") - - (* Returns the stream if it is a text stream, else NIL) - - (AND (STREAMP STREAM) - (type? TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of STREAM)) - STREAM))) - -(TXTFILE - [LAMBDA (TEXTOBJ) (* ; "Edited 31-May-91 13:58 by jds") - (* This function is for compiled - access to the TXTFILE field in - RESETSAVE expressions) - (fetch (TEXTOBJ TXTFILE) of TEXTOBJ]) - -(\DELETECH - [LAMBDA (CH# CHLIM LEN TEXTOBJ DONTDIRTY) (* ; - "Edited 22-Mar-95 16:32 by sybalsky:mv:envos") - - (* ;; "Delete the indicated characters from the text object represented by TEXTOBJ") - - (* ;; - "If DONTDIRTY is non-NIL, then don't notice this change for purposes of UNDO or dirtiness.") - - (COND - ((OR DONTDIRTY (NOT (fetch (TEXTOBJ TXTREADONLY) of TEXTOBJ))) - - (* ;; "Only delete characters if changes are permitted, or if it's a TEdit-internal fixup change, e.g., when an NS character 255-x sequence is seen.") - - (LET ((\INFIRSTCH (fetch (TEXTOBJ \INSERTFIRSTCH) of TEXTOBJ)) - (TEXTLEN (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ)) - (PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - START-OF-PIECE PCLST) - (\TEDIT.CHECK (IGEQ LEN 0) - "LEN of delete must be >0.") - (\TEDIT.CHECK (IEQP LEN (IDIFFERENCE CHLIM CH#))) - [COND - ((AND (fetch (TEXTOBJ \INSERTPCVALID) of TEXTOBJ) - (IEQP CHLIM (fetch (TEXTOBJ \INSERTNEXTCH) of TEXTOBJ)) - (IGEQ CH# \INFIRSTCH)) (* ; - "The deletion is from the end of the most recent type-in. Just adjust the buffer string.") - (freplace (TEXTOBJ \INSERTLEN) of TEXTOBJ with - (replace (PIECE PLEN) - of (fetch (TEXTOBJ - \INSERTPC) - of TEXTOBJ) - with (IDIFFERENCE CH# - \INFIRSTCH))) - (* ; "Cut back the length") - (freplace (TEXTOBJ \INSERTNEXTCH) of TEXTOBJ - with (IPLUS (fetch (TEXTOBJ \INSERTLEN) of TEXTOBJ) - \INFIRSTCH)) (* ; - "and ch# of next insertion (i.e., 1 past the top CH# in the insert piece.)") - (replace THLEN of (fetch (TEXTOBJ TXTHISTORY) of TEXTOBJ) - with (IDIFFERENCE (fetch THLEN of (fetch (TEXTOBJ TXTHISTORY) - of TEXTOBJ)) - LEN)) (* ; - "Reduce the length of the insertion in the history list, too.") - (COND - ((ZEROP (fetch (TEXTOBJ \INSERTLEN) of TEXTOBJ)) - - (* ;; "He's completely emptied the type-in piece. Remove it and force creation of a fresh one at next type-in.") - - (\DELETEPIECE (fetch (TEXTOBJ \INSERTPC) of TEXTOBJ) - PCTB) (* UPDATEPCNODES (fetch - (TEXTOBJ \INSERTPC) of TEXTOBJ) - (IMINUS LEN) PCTB) - (replace (TEXTOBJ \INSERTPCVALID) of TEXTOBJ with NIL) - (* ; - "Force the next insertion to be in a fresh piece.") - ) - (T (UPDATEPCNODES (fetch (TEXTOBJ \INSERTPC) of TEXTOBJ) - (IMINUS LEN) - PCTB))) (* ; "Adjust CH#s in the Piece Table.") - ) - ((ILEQ CH# TEXTLEN) (* ; - "General case of deletion: Remove pieces as needed to do it.") - (PROG (PCN PC1 PCNON PCSOUT (HIPC NIL) - HI LO) - (SETQ PC1 (\CHTOPC CH# PCTB T)) (* ; - "Piece # of piece containing start of deleted text") - (COND - ((IGREATERP CH# START-OF-PIECE) (* ; - "Split the piece, so the deleted text now starts on a piece boundary") - (\SPLITPIECE PC1 (- CH# START-OF-PIECE) - TEXTOBJ)) - (T (SETQ PC1 (fetch (PIECE PREVPIECE) of PC1)) - (* ; - "PC1 _ piece before the first piee to be deleted.-") - )) - (COND - ((ILEQ CHLIM TEXTLEN) (* ; - "Find the peice that contains the END of the deleted section") - (SETQ PCN (\CHTOPC CHLIM PCTB T))) - (T - (* ;; - "Deleting past end, so n+1-th piece is the symbol LASTPIECE, which starts 1 past end of all text.") - - (SETQ START-OF-PIECE (ADD1 TEXTLEN)) - (SETQ PCN 'LASTPIECE) - (SETQ HIPC NIL))) - [COND - ((ATOM PCN) (* ; - "Deleting before the end of text.") - ) - (T (* ; - "Deleting in front of a real piece of text") - (COND - ([AND (IGREATERP CHLIM START-OF-PIECE) - (ILESSP CHLIM (IPLUS START-OF-PIECE (fetch (PIECE PLEN) - of PCN] - (SETQ HIPC (\SPLITPIECE PCN (- CHLIM START-OF-PIECE) - TEXTOBJ PCNON)) - (SETQ PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ))) - (T (SETQ HIPC PCN] (* ; - "if not on a piece bound, split the last piece.") - (AND PC1 (EQ PC1 HIPC) - (HELP "circular")) - [SETQ PCLST (bind NPC [PC _ (COND - (PC1 (fetch (PIECE NEXTPIECE) - of PC1)) - (T - (* ;; - "(\EDITELT PCTB (ADD1 \FirstPieceOffset))") - - (\GETBASEPTR (\FIRSTNODE PCTB) - 0] - while (AND PC (NEQ PC HIPC)) - collect (PROG1 PC - (SETQ PC (fetch (PIECE NEXTPIECE) - of PC)))] - (OR DONTDIRTY (\TEDIT.HISTORYADD TEXTOBJ - (create TEDITHISTORYEVENT - THACTION _ 'Delete - THLEN _ LEN - THCH# _ CH# - THFIRSTPIECE _ PCLST))) - (* ; - "Add this event to the history list") - (for PC in PCLST do [AND (fetch (PIECE POBJ) of PC) - (IMAGEOBJPROP (fetch (PIECE POBJ) - of PC) - 'WHENDELETEDFN) - (APPLY* (IMAGEOBJPROP (fetch - (PIECE POBJ) - of PC) - 'WHENDELETEDFN) - (fetch (PIECE POBJ) - of PC) - (CAR (fetch (TEXTOBJ \WINDOW) - of TEXTOBJ] - (* \DELETEPIECE PC PCTB) - (\DELETETREE PC (fetch (PIECE PTREENODE) - of PC))) - (COND - (PC1 (replace (PIECE NEXTPIECE) of PC1 with HIPC))) - (COND - (HIPC (replace (PIECE PREVPIECE) of HIPC with PC1))) - (replace (TEXTOBJ \INSERTPCVALID) of TEXTOBJ with NIL) - (* ; - "Force the next insertion to be in a fresh piece.") - (\TEDIT.DIFFUSE.PARALOOKS PC1 HIPC) (* ; - "PROPOGATE PARALOOKS THRU THE DELETION") - ] - (freplace (TEXTOBJ TEXTLEN) of TEXTOBJ with (IDIFFERENCE TEXTLEN LEN)) - (* ; "Update the file's length") - (OR DONTDIRTY (replace (TEXTOBJ \DIRTY) of TEXTOBJ with T]) - -(\SETUPGETCH - [LAMBDA (CH# TEXTOBJ) (* ; "Edited 14-Apr-93 17:14 by jds") - -(* ;;; "Set up TEXTOBJ so that the next \GETCH will retrieve character # CH#") - - (* ;; "NB that 1st char in the textobj is #1.") - - (* ;; "(declare (localvars . t))") - - (PROG (PC PCNO PS PF CHOFFSET CHARSLEFT (PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - (STREAM (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ)) - FPOS OFFST SUBSTREAM START-OF-PIECE) - (replace (TEXTSTREAM FATSTREAMP) of STREAM with NIL) - [COND - [(LISTP CH#) (* ; - "If CH# is a piece-offset pair, make use of it.") - (SETQ PC (fetch (EDITMARK PC) of CH#)) - (SETQ CHOFFSET (fetch (EDITMARK PCOFF) of CH#)) - (COND - ((ATOM PC) (* ; - "This SETUPGETCH is to the final pseudo-piece!") - (freplace (TEXTSTREAM PIECE) of STREAM with PC) - (freplace (STREAM COFFSET) of STREAM with 0) - (freplace (STREAM CPAGE) of STREAM with 0) - (freplace (TEXTSTREAM PCSTARTPG) of STREAM with 0) - (freplace (TEXTSTREAM PCSTARTCH) of STREAM with 0) - (freplace (TEXTSTREAM PCOFFSET) of STREAM with 0) - (RETURN] - ((IGREATERP CH# (IMAX 1 (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ))) - (ERROR "TRYING TO \SETUPGETCH BEYOND END OF TEXT")) - (T - (* ;; "CH# is indeed a character number. Find the corresponding piece, its pcno, and the offset within that piece.") - - (SETQ PC (\CHTOPC CH# PCTB T)) - - (* ;; "(setq pc (\\editelt pctb (add1 pcno)))") - - (SETQ CHOFFSET (- CH# START-OF-PIECE] - (freplace (TEXTSTREAM PIECE) of STREAM with PC) - (replace (STREAM BINABLE) of STREAM with T) - (SETQ CHARSLEFT (IDIFFERENCE (fetch (PIECE PLEN) of PC) - CHOFFSET)) - (freplace (TEXTSTREAM PCOFFSET) of STREAM with CHOFFSET) - (COND - ((SETQ PS (ffetch (PIECE PSTR) of PC)) (* ; "This piece resides in a STRING.") - (\TEDIT.TEXTBIN.STRINGSETUP CHOFFSET CHARSLEFT STREAM PS)) - ((SETQ PF (ffetch (PIECE PFILE) of PC)) (* ; "This piece resides on a FILE") - (\TEDIT.TEXTBIN.FILESETUP PC CHOFFSET CHARSLEFT STREAM PF (fetch (PIECE PFATP) - of PC))) - [(SETQ PF (ffetch (PIECE POBJ) of PC)) (* ; - "This piece points to an object. set up so \TextBin will be called, and will return it.") - (COND - ((SETQ SUBSTREAM (IMAGEOBJPROP PF 'SUBSTREAM)) - (* ; - "There is a stream below this one! Reflect things upward.") - (* ; - "This is a simple object. Just set things up so it gets read.") - (\SETUPGETCH (ADD1 CHOFFSET) - (fetch (TEXTSTREAM TEXTOBJ) of SUBSTREAM)) - (replace (STREAM BINABLE) of STREAM with NIL) - (freplace (TEXTSTREAM CHARSLEFT) of STREAM with 0) - (freplace (STREAM COFFSET) of STREAM with CHOFFSET) - (freplace (STREAM CBUFSIZE) of STREAM with (fetch (PIECE PLEN) - of PC)) - (freplace (STREAM CPAGE) of STREAM with 0) - (freplace (TEXTSTREAM PCSTARTCH) of STREAM with CHOFFSET) - (freplace (TEXTSTREAM PCSTARTPG) of STREAM with 0) - (replace (TEXTSTREAM CURRENTPARALOOKS) of STREAM with - (fetch (TEXTSTREAM - - CURRENTPARALOOKS - ) of - SUBSTREAM)) - (replace (TEXTSTREAM CURRENTLOOKS) of STREAM with (fetch - (TEXTSTREAM - CURRENTLOOKS) - of SUBSTREAM)) - (RETURN)) - (T (* ; - "This is a simple object. Just set things up so it gets read.") - (freplace (TEXTSTREAM CHARSLEFT) of STREAM with 1) - (freplace (STREAM COFFSET) of STREAM with 0) - (freplace (STREAM CBUFSIZE) of STREAM with 1) - (freplace (STREAM CPAGE) of STREAM with 0) - (freplace (TEXTSTREAM PCSTARTCH) of STREAM with 0) - (freplace (TEXTSTREAM PCSTARTPG) of STREAM with 0) - (replace (STREAM BINABLE) of STREAM with NIL) - (* ; - "Force the next BIN to go thru our code.") - ] - (T (ERROR "Piece is neither a file nor a string??" PC))) - (replace (TEXTSTREAM CURRENTPARALOOKS) of STREAM with - (\TEDIT.APPLY.PARASTYLES - (fetch (PIECE PPARALOOKS) - of PC) - PC TEXTOBJ)) - (* ; - "Set the character looks and font caches.") - (replace (TEXTSTREAM CURRENTLOOKS) of STREAM with (\TEDIT.APPLY.STYLES - (ffetch (PIECE PLOOKS) - of PC) - PC TEXTOBJ]) - -(\TEDIT.REOPEN.STREAM - [LAMBDA (TEXTSTREAM PIECESTREAM) (* ; "Edited 15-Apr-93 15:53 by jds") - - (* ;; "Re-open the backing file stream, and propogate the change thru the entire piece table. Also, if TXTFILE is set to the closed stream, fill it in as well.") - - (LET* ((NEWSTREAM (OPENSTREAM PIECESTREAM 'INPUT)) - (TEXTOBJ (TEXTOBJ TEXTSTREAM)) - (PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - PC) - (SETQ PC (\GETBASEPTR (\FIRSTNODE PCTB) - 0)) - - (* ;; "Run thru the pieces, correcting any that used this stream to use the new one:") - - (while PC do (COND - ((EQ (fetch (PIECE PFILE) of PC) - PIECESTREAM) - (replace (PIECE PFILE) of PC with NEWSTREAM))) - (SETQ PC (fetch (PIECE NEXTPIECE) of PC))) - - (* ;; "Check the TXTFILE, and if it uses the closed stream, fix it as well:") - - (COND - ((EQ (fetch (TEXTOBJ TXTFILE) of TEXTOBJ) - PIECESTREAM) (* ; - "Yup, it was the old, closed stream. Fix it.") - (replace (TEXTOBJ TXTFILE) of TEXTOBJ with NEWSTREAM))) - - (* ;; "Return the new value for the stream:") - - NEWSTREAM]) - -(\TEDIT.COPYTEXTSTREAM.PIECEMAPFN - [LAMBDA (PC TEXTOBJ FROMOBJ TOOBJ) (* ; "Edited 31-May-91 14:00 by jds") - (* Called by COPYTEXTSTREAM via - TEDIT.SELECTED.PIECES, to do the - copy-operation processing on the - candidate pieces.) - (PROG (OBJ NEWOBJ COPYFN) - (SETQ PC (create PIECE using PC PNEW _ T)) (* No matter what, we need a fresh - copy.) - [COND - ((fetch (PIECE POBJ) of PC) (* This piece describes an object) - (SETQ OBJ (fetch (PIECE POBJ) of PC)) - [COND - [(SETQ COPYFN (IMAGEOBJPROP OBJ 'COPYFN)) - (SETQ NEWOBJ (APPLY* COPYFN OBJ (fetch (TEXTOBJ STREAMHINT) of FROMOBJ) - (fetch (TEXTOBJ STREAMHINT) of TOOBJ))) - (COND - ((EQ NEWOBJ 'DON'T) (* He said not to copy this piece -- - abort the whole copy.) - (TEDIT.PROMPTPRINT TEXTOBJ "COPY of this object not allowed." T) - (RETFROM 'TEDIT.COPY)) - (NEWOBJ (replace (PIECE POBJ) of PC with NEWOBJ)) - (T (replace (PIECE POBJ) of PC with (COPYALL OBJ] - (OBJ (* No copy fn; just strike off a - copy of our own) - (replace (PIECE POBJ) of PC with (COPYALL OBJ] - (COND - ((SETQ COPYFN (IMAGEOBJPROP OBJ 'WHENCOPIEDFN)) - (* If there's an eventfn for - copying, use it.) - (APPLY* COPYFN OBJ (CAR (fetch (TEXTOBJ \WINDOW) of TOOBJ)) - (fetch (TEXTOBJ STREAMHINT) of FROMOBJ) - (fetch (TEXTOBJ STREAMHINT) of TOOBJ] - (RETURN PC]) - -(\TEXTINIT - [LAMBDA NIL (* ; "Edited 31-May-91 14:18 by jds") - (* ; - "Create the FDEV and STREAM prototypes for TEXT streams.") - - (* ;; "TEXT streams make use of the following STREAM fields:") - - (* ;; "(DEVICE (* FDEV of this guy -- The TEXT device)") - - (* ;; "F1 (* The STREAM for the PFILE of the current piece (or NIL))") - - (* ;; "F2 (* # chars left in piece at end of underlying file's page)") - - (* ;; "F3 (* The TEXTOBJ for this stream)") - - (* ;; "F4") - - (* ;; "F5 (* The PIECE we're currently inside)") - - (* ;; "(FW6 WORD) (* CPAGE for the start of the piece, for BACKFILEPTR)") - - (* ;; "(FW7 WORD) (* COFFSET for the start of the piece, for BACKFILEPTR)") - - (* ;; "(FW8 WORD)") - - (SETQ \TEXTIMAGEOPS (create IMAGEOPS - IMAGETYPE _ 'TEXT - IMXPOSITION _ (FUNCTION \TEXTDSPXPOSITION) - IMYPOSITION _ (FUNCTION \TEXTDSPYPOSITION) - IMLEFTMARGIN _ (FUNCTION \TEXTLEFTMARGIN) - IMRIGHTMARGIN _ (FUNCTION \TEXTRIGHTMARGIN) - IMFONT _ (FUNCTION \TEXTDSPFONT) - IMCLOSEFN _ (FUNCTION NILL) - IMFONTCREATE _ 'DISPLAY - IMLINEFEED _ (FUNCTION \TEXTDSPLINEFEED) - IMCHARWIDTH _ (FUNCTION \TEXTDSPCHARWIDTH) - IMSTRINGWIDTH _ (FUNCTION \TEXTDSPSTRINGWIDTH))) - (SETQ \TEXTFDEV (create FDEV - DEVICENAME _ 'TEXT - RESETABLE _ T - RANDOMACCESSP _ T - PAGEMAPPED _ NIL - GETFILENAME _ (FUNCTION NILL) - BIN _ (FUNCTION \TEXTBIN) - BOUT _ (FUNCTION \TEXTBOUT) - CLOSEFILE _ (FUNCTION \TEXTCLOSEF) - OPENFILE _ (FUNCTION \TEXTOPENF) - DELETEFILE _ (FUNCTION NILL) - DIRECTORYNAMEP _ (FUNCTION NILL) - EVENTFN _ (FUNCTION NILL) - GENERATEFILES _ (FUNCTION \GENERATENOFILES) - GETFILEINFO _ (FUNCTION NILL) - HOSTNAMEP _ (FUNCTION NILL) - READPAGES _ (FUNCTION NILL) - REOPENFILE _ [FUNCTION (LAMBDA (FILE ACCESS RECOG OTHERINFO FDEV STREAM) - (replace (STREAM ACCESS) of STREAM - with 'BOTH) - STREAM] - SETFILEINFO _ (FUNCTION NILL) - BACKFILEPTR _ (FUNCTION \TEXTBACKFILEPTR) - SETFILEPTR _ (FUNCTION \TEXTSETFILEPTR) - PEEKBIN _ (FUNCTION \TEXTPEEKBIN) - GETEOFPTR _ (FUNCTION \TEXTGETEOFPTR) - GETFILEPTR _ (FUNCTION \TEXTGETFILEPTR) - EOFP _ (FUNCTION \TEXTEOFP) - FDBINABLE _ T - FDBOUTABLE _ NIL - FDEXTENDABLE _ NIL - TRUNCATEFILE _ (FUNCTION NILL) - WRITEPAGES _ (FUNCTION NILL) - READCHARCODE _ (FUNCTION BIN))) - (SETQ \TEXTOFD - (create STREAM - BINABLE _ T - BOUTABLE _ NIL - ACCESS _ 'BOTH - USERCLOSEABLE _ T - USERVISIBLE _ T - DEVICE _ \TEXTFDEV - F1 _ NIL - F2 _ 0 - F3 _ NIL - F5 _ NIL - FW6 _ 0 - FW7 _ 0 - MAXBUFFERS _ 10 - IMAGEOPS _ \TEXTIMAGEOPS - IMAGEDATA _ (create TEXTIMAGEDATA) - OUTCHARFN _ (FUNCTION \TEDITOUTCHARFN))) (* ; "The prototypical Text stream") - - (* ;; "Set up so that FILE NOT OPENs on TEdit streams are caught and fixed.") - - (CL:SETF (CONDITION-HANDLER 'XCL:STREAM-NOT-OPEN) - (FUNCTION (LAMBDA (CONDITION) - (LET ((STREAM (STREAM-ERROR-STREAM CONDITION))) - (COND - [(AND (BOUNDP 'ERRORPOS) - (TEXTSTREAMP STREAM)) - (* ; - "This happened in the error handler, and it happened to a TEdit stream, so try the fix:") - (LET ((XCL::RESULT (REOPENTEXTSTREAM STREAM))) - (CL:WHEN XCL::RESULT - (ENVAPPLY (STKNAME ERRORPOS) - (SUBST XCL::RESULT STREAM (STKARGS ERRORPOS)) - (STKNTH -1 ERRORPOS ERRORPOS) - ERRORPOS T T))] - (*TEDIT-OLD-STREAM-ERROR-HANDLER* - (* ; - "Some other kind of stream, so punt to the old handler (if there is one):") - (APPLY* *TEDIT-OLD-STREAM-ERROR-HANDLER* CONDITION]) - -(\TEXTMARK - [LAMBDA (TEXTOBJ) (* ; "Edited 31-May-91 14:18 by jds") - (PROG ((STREAM (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ))) - (RETURN (CONS (ffetch (TEXTSTREAM PIECE) of STREAM) - (IDIFFERENCE (create BYTEPTR - PAGE _ (ffetch (STREAM CPAGE) of STREAM) - OFFSET _ (ffetch (STREAM COFFSET) of STREAM)) - (create BYTEPTR - PAGE _ (ffetch (TEXTSTREAM PCSTARTPG) of STREAM) - OFFSET _ (ffetch (TEXTSTREAM PCSTARTCH) of STREAM]) - -(\TEXTTTYBOUT - [LAMBDA (STREAM BYTE) (* ; "Edited 31-May-91 14:18 by jds") - (* Do BOUT to a text stream, which - is an insertion at the caret.) - (PROG ((TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of STREAM))) - (COND - ((EQ BYTE ERASECHARCODE) - (\TEDIT.CHARDELETE TEXTOBJ "" (fetch (TEXTOBJ SEL) of TEXTOBJ))) - ((EQ IGNORE.CCE (fetch CCECHO of (\SYNCODE (OR (fetch (TEXTOBJ TXTTERMSA) - of TEXTOBJ) - \PRIMTERMSA) - BYTE))) - (* Nothing, ignore it) - ) - (T (SELCHARQ BYTE - ((EOL CR LF) - (\TEXTBOUT STREAM BYTE) - (replace (STREAM CHARPOSITION) of STREAM with 0)) - (PROGN (\TEXTBOUT STREAM BYTE) - (add (fetch (STREAM CHARPOSITION) of STREAM) - 1]) -) -(DEFINEQ - -(\INSERTCH - [LAMBDA (CH CH# TEXTOBJ INSERTMARK) (* ; - "Edited 22-Mar-95 16:44 by sybalsky:mv:envos") - - (* ;; "If the current ch is 1+last ch in the distinguished INPUTPIECE, then append this text to that piece (make a new one if need be.), and fix up ch#s in the PCTB") - - (* ;; "else, create a new input piece (as a substring of the old one) and INSERT it at the right spot, perhaps after splitting a piece to make room.") - - (COND - ((NOT (fetch (TEXTOBJ TXTREADONLY) of TEXTOBJ)) - - (* ;; "Only insert if the document is allowed to change.") - - (PROG (PC (LEN (COND - ((type? STRINGP CH) - (NCHARS CH)) - (T 1))) - [FATP (COND - [(type? STRINGP CH) - (AND (fetch (STRINGP FATSTRINGP) of CH) - (NOT (NULL (for CHAR instring CH - thereis (IGREATERP CHAR \MAXTHINCHAR] - (T (IGREATERP CH \MAXTHINCHAR] - CHNO NEWPC PREVPC EVENT REPLACING (NEWFLAG NIL) - (\INEXTCH (fetch (TEXTOBJ \INSERTNEXTCH) of TEXTOBJ)) - (\INLEN (fetch (TEXTOBJ \INSERTLEN) of TEXTOBJ)) - (\INLEFT (fetch (TEXTOBJ \INSERTLEFT) of TEXTOBJ)) - (\INSTRING (fetch (TEXTOBJ \INSERTSTRING) of TEXTOBJ)) - (\INPC (fetch (TEXTOBJ \INSERTPC) of TEXTOBJ)) - (\INFIRSTCH (fetch (TEXTOBJ \INSERTFIRSTCH) of TEXTOBJ)) - (PCTB (ffetch (TEXTOBJ PCTB) of TEXTOBJ)) - (TEXTLEN (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ)) - (IMARKPC (fetch (EDITMARK PC) of INSERTMARK)) - (IMARKCH (fetch (EDITMARK PCOFF) of INSERTMARK)) - PLOOKS NLOOKS START-OF-PIECE) - [COND - ((ZEROP LEN) (* ; "Nothing to insert, really!") - (RETURN)) - [(ZEROP (fetch (BTREENODE COUNT) of PCTB)) - (* ; "PCTB is empty.") - (\INSERT.FIRST.PIECE TEXTOBJ) - (SETQ \INPC (fetch (TEXTOBJ \INSERTPC) of TEXTOBJ)) - (SETQ \INSTRING (fetch (TEXTOBJ \INSERTSTRING) of TEXTOBJ)) - (COND - ((type? STRINGP CH) (* ; - "If input is a string, copy it to the insert piece's string") - (RPLSTRING \INSTRING 1 CH)) - (T (* ; - "If it's a single charcode, move it to the piece's string") - (RPLCHARCODE \INSTRING 1 CH))) - (replace (PIECE PLEN) of \INPC (freplace (TEXTOBJ \INSERTLEN) - of TEXTOBJ with LEN)) - (freplace (TEXTOBJ \INSERTLEFT) of TEXTOBJ with (IDIFFERENCE 512 LEN)) - (freplace (TEXTOBJ \INSERTNEXTCH) of TEXTOBJ with LEN) - (\TEDIT.HISTORYADD TEXTOBJ (create TEDITHISTORYEVENT - THACTION _ 'Insert - THLEN _ (fetch (PIECE PLEN) of \INPC) - THCH# _ CH# - THFIRSTPIECE _ (LIST \INPC) - THPOINT _ 'RIGHT] - ((OR [AND (fetch (TEXTOBJ \INSERTPCVALID) of TEXTOBJ) - (OR (IEQP CH# \INEXTCH) - (AND INSERTMARK (EQ IMARKPC (fetch (PIECE NEXTPIECE) of \INPC) - ) - (EQ IMARKCH 0] - (AND NIL (EQ CH# 1) - (EQ \INEXTCH -1))) - - (* ;; "We're inserting at the end of a previous insertion, for which we already have a piece built. Just add to it.") - - (* ;; "Or, First insertion to empty document.") - - (COND - ((IGEQ \INLEFT LEN) (* ; - "There's enough room in this piece -- fill it in.") - (COND - ((type? STRINGP CH) (* ; - "If input is a string, copy it to the insert piece's string") - (RPLSTRING \INSTRING (ADD1 \INLEN) - CH)) - (T (* ; - "If it's a single charcode, move it to the piece's string") - (RPLCHARCODE \INSTRING (ADD1 \INLEN) - CH))) - (replace (PIECE PLEN) of \INPC with (freplace (TEXTOBJ - \INSERTLEN - ) - of TEXTOBJ - with (IPLUS \INLEN LEN)) - ) (* ; - "Fix the length of the insert piece") - (freplace (TEXTOBJ \INSERTLEFT) of TEXTOBJ with (IDIFFERENCE - \INLEFT LEN) - ) (* ; "And the space left in the piece") - (freplace (TEXTOBJ \INSERTNEXTCH) of TEXTOBJ with (IPLUS \INEXTCH - LEN)) - (* ; "And the next CH#") - (* ; "And the piece # for future use") - ) - (T (* ; - "No room. Chop this piece & start a new one.") - (replace (PIECE PSTR) of \INPC with (SUBSTRING \INSTRING 1 \INLEN - )) - (* ; - "Chop the current piece's string to length") - (SETQ NEWPC (create PIECE - PSTR _ (ALLOCSTRING 512 '% ) - PLOOKS _ (fetch (PIECE PLOOKS) of \INPC) - PPARALOOKS _ (fetch (PIECE PPARALOOKS) of \INPC) - PPARALAST _ NIL - PNEW _ T)) (* ; "Create the new piece") - (freplace (TEXTOBJ \INSERTSTRING) of TEXTOBJ - with (SETQ \INSTRING (fetch (PIECE PSTR) of NEWPC))) - (* ; - "Set the \INSTRING field in TEXTOBJ") - (COND - ((type? STRINGP CH) (* ; - "If input is a string, copy it to the insert piece's string") - (RPLSTRING \INSTRING 1 CH)) - (T (* ; - "If it's a single charcode, move it to the piece's string") - (RPLCHARCODE \INSTRING 1 CH))) - (replace (PIECE PLEN) of NEWPC with LEN) - (* ; - "So far, the present input is the only thing in the piece") - (replace (TEXTOBJ \INSERTPCNO) of TEXTOBJ - with (\INSERTPIECE NEWPC (OR (fetch (PIECE NEXTPIECE) - of \INPC) - 'LASTPIECE) - TEXTOBJ)) (* ; - "Insert the new piece into the text and save the piece #") - - (* ;; "(SETQ PCTB (fetch PCTB of TEXTOBJ))") - (* ; - "Which may have caused a PCTB overflow") - (* ; - "This does not happen, after change pctree.") - (freplace (TEXTOBJ \INSERTPC) of TEXTOBJ with (SETQ \INPC NEWPC)) - (freplace (TEXTOBJ \INSERTLEFT) of TEXTOBJ with (IDIFFERENCE - 512 LEN)) - (freplace (TEXTOBJ \INSERTLEN) of TEXTOBJ with LEN) - (replace (TEXTOBJ \INSERTFIRSTCH) of TEXTOBJ with CH#) - (* ; - "CH# of the first inserted character") - (replace (TEXTOBJ \INSERTNEXTCH) of TEXTOBJ with (IPLUS CH# LEN)) - (* ; - "The CH# of the next character, if it's inserted at the current caret.") - (replace THFIRSTPIECE of (fetch (TEXTOBJ TXTHISTORY) of - TEXTOBJ) - with (NCONC1 (fetch (TEXTOBJ TXTHISTORY) of TEXTOBJ) - NEWPC)) - (SETQ NEWFLAG T) (* ; "Note the new piece's creation") - )) - (add (fetch THLEN of (fetch (TEXTOBJ TXTHISTORY) of TEXTOBJ)) - LEN) (* ; - "Update the length of the insertion/replacement text.") - ) - (T - (* ;; "NEW INSERTION POINT; IF THERE'S ANYTHING LEFT OF THE PREVIOUS INSERT PIECE, CRACK OFF A NEW ONE & FILL IT. THEN FIGURE OUT WHERE TO SHOEHORN IT IN.") - - (SETQ PC (OR IMARKPC (\CHTOPC CH# PCTB T))) - [COND - ((AND \INPC (IGEQ \INLEFT LEN)) (* ; - "There's room left in the prior input-piece's string; re-use it.") - (SETQ NEWPC (create PIECE - PSTR _ (SUBSTRING \INSTRING (ADD1 \INLEN)) - PLOOKS _ (fetch (TEXTOBJ CARETLOOKS) of TEXTOBJ) - PPARALOOKS _ (fetch (PIECE PPARALOOKS) of \INPC) - PPARALAST _ NIL - PNEW _ T)) (* ; "Build the new piece") - (replace (PIECE PSTR) of \INPC with (SUBSTRING \INSTRING 1 \INLEN - )) - (freplace (TEXTOBJ \INSERTLEFT) of TEXTOBJ with (IDIFFERENCE - \INLEFT LEN))) - (T (* ; - "No room left; build a whole new piece.") - (SETQ NEWPC (create PIECE - PSTR _ (freplace (TEXTOBJ \INSERTSTRING) - of TEXTOBJ with (ALLOCSTRING 512)) - PLOOKS _ (fetch (TEXTOBJ CARETLOOKS) of TEXTOBJ) - PPARALOOKS _ (OR (AND \INPC (fetch (PIECE PPARALOOKS - ) - of \INPC)) - (\TEDIT.UNIQUIFY.PARALOOKS - (create FMTSPEC - copying (fetch (TEXTOBJ - FMTSPEC) - of TEXTOBJ)) - TEXTOBJ)) - PPARALAST _ NIL - PNEW _ T)) - (freplace (TEXTOBJ \INSERTLEFT) of TEXTOBJ with (IDIFFERENCE - 512 LEN] - (freplace (TEXTOBJ \INSERTPC) of TEXTOBJ with (SETQ \INPC NEWPC)) - (replace (PIECE PLEN) of NEWPC with LEN) - (freplace (TEXTOBJ \INSERTSTRING) of TEXTOBJ with - (SETQ \INSTRING - (fetch (PIECE PSTR) - of NEWPC))) - (COND - ((type? STRINGP CH) (* ; - "Insert the characters into the piece") - (RPLSTRING \INSTRING 1 CH)) - (T (RPLCHARCODE \INSTRING 1 CH))) - (freplace (TEXTOBJ \INSERTLEN) of TEXTOBJ with LEN) - (freplace (TEXTOBJ \INSERTFIRSTCH) of TEXTOBJ with CH#) - (* ; - "Cache the first-inserted-ch #, for backspace speed") - (SETQ NEWFLAG T) - (COND - ((OR (IGREATERP CH# TEXTLEN) - (IEQP CH# START-OF-PIECE)) (* ; - "We're inserting on a piece boundary; do it, then remember the prior piece.") - (\INSERTPIECE \INPC PC TEXTOBJ NIL)) - (T (* ; - "Not on a piece boundary; split the piece we're inside of, then insert.") - (\INSERTPIECE \INPC (\SPLITPIECE PC (- CH# START-OF-PIECE) - TEXTOBJ) - TEXTOBJ NIL))) - [COND - ((NOT (fetch (PIECE PPARALOOKS) of \INPC)) - (* ; - "There weren't any paralooks available at creation time. Find some now.") - [SETQ PLOOKS (AND (fetch (PIECE PREVPIECE) of \INPC) - (fetch (PIECE PPARALOOKS) of (fetch - (PIECE PREVPIECE) - of \INPC] - [SETQ NLOOKS (AND (fetch (PIECE NEXTPIECE) of \INPC) - (fetch (PIECE PPARALOOKS) of (fetch - (PIECE NEXTPIECE) - of \INPC] - (replace (PIECE PPARALOOKS) of \INPC - with (COND - ((NOT PLOOKS) (* ; - "No preceding para to take looks from") - (OR NLOOKS (fetch (TEXTOBJ FMTSPEC) of TEXTOBJ))) - ((NOT NLOOKS) (* ; - "No succeeding paras to take looks from") - (OR PLOOKS (fetch (TEXTOBJ FMTSPEC) of TEXTOBJ))) - (T PLOOKS] - (replace (TEXTOBJ \INSERTPCNO) of TEXTOBJ with 0) - (* ; - "Save the pcno for future insertions") - (SETQ PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - (* ; - "The PCTB may have expanded during the insert.") - (SETQ PREVPC (OR (fetch (PIECE PREVPIECE) of NEWPC) - PC)) (* ; - "The piece we're to take the inserted characters' looks from") - (replace (PIECE PLOOKS) of NEWPC with (fetch (TEXTOBJ CARETLOOKS) - of TEXTOBJ)) - [replace (PIECE PPARALOOKS) of NEWPC - with (COND - ((ZEROP TEXTLEN) (* ; - "No text yet; use default paralooks") - (fetch (TEXTOBJ FMTSPEC) of TEXTOBJ)) - ((SETQ PREVPC (fetch (PIECE NEXTPIECE) of \INPC)) - (* ; - "There's later text. Use its para looks") - (fetch (PIECE PPARALOOKS) of PREVPC)) - ((SETQ PREVPC (fetch (PIECE PREVPIECE) of \INPC)) - (* ; - "There's earlier text. Use its looks, copied if need be.") - (COND - ((fetch (PIECE PPARALAST) of PREVPC) - (fetch (PIECE PPARALOOKS) of PREVPC)) - (T (fetch (PIECE PPARALOOKS) of PREVPC] - (SETQ EVENT (fetch (TEXTOBJ TXTHISTORY) of TEXTOBJ)) - (* ; "Prior edit event.") - [SETQ REPLACING (AND (EQ (fetch THACTION of EVENT) - 'Delete) - (IEQP CH# (fetch THCH# of EVENT] - (COND - ((AND (fetch (TEXTOBJ \INSERTPCVALID) of TEXTOBJ) - (IEQP CH# \INEXTCH) - (EQ (fetch THACTION of EVENT) - 'Insert)) - - (* ;; "We're continuing a prior insertion, even if we had to create a new piece. Just continue the old history event, too.") - - (add (fetch THLEN of EVENT) - LEN)) - (T (* ; - "Nope, this is a new insertion/replacement. Make the new history event.") - (\TEDIT.HISTORYADD TEXTOBJ (create TEDITHISTORYEVENT - THACTION _ (COND - (REPLACING 'Replace) - (T 'Insert)) - THLEN _ (fetch (PIECE PLEN) - of \INPC) - THCH# _ CH# - THFIRSTPIECE _ (LIST \INPC) - THPOINT _ 'RIGHT - THOLDINFO _ (AND REPLACING EVENT] - [OR NEWFLAG (PROGN (* ; - "We didn't add a piece, so we must update character numbers in the PCTB") - (* ; "The insert-piece's PCTB entry") - - (* ;; "(for I from (IPLUS PCNO \EltsPerPiece) to (\EDITELT PCTB \PCTBLastPieceOffset) by \EltsPerPiece do (\EDITSETA PCTB I (IPLUS (\EDITELT PCTB I) LEN)))") - - (COND - ((NOT (AND (EQ CH# 1) - (EQ \INEXTCH -1))) - (* ; - "Update character numbers in the PCTB doesn't need when 1st insertion.") - (UPDATEPCNODES \INPC LEN PCTB] - (freplace (TEXTOBJ TEXTLEN) of TEXTOBJ with (SETQ TEXTLEN (IPLUS LEN - TEXTLEN))) - (replace (TEXTOBJ \INSERTNEXTCH) of TEXTOBJ with (IPLUS CH# LEN)) - (replace (TEXTOBJ \INSERTPCVALID) of TEXTOBJ with T) - (replace (TEXTOBJ \DIRTY) of TEXTOBJ with T) - (replace (PIECE PFATP) of \INPC with (OR (fetch (PIECE PFATP) - of \INPC) - FATP]) - -(\INSERTCR - [LAMBDA (CH CH# TEXTOBJ) (* ; "Edited 31-May-91 14:00 by jds") - - (* ;; "Handle insertion of CR and meta-CR. The former causes a paragraph break, while the latter doesn't. Note, though, that inserting a meta-CR causes the doucment to become formatted.") - - (COND - ((fetch (TEXTOBJ TXTREADONLY) of TEXTOBJ)) - (T (LET (INPC) - (COND - ([AND (NOT (fetch (TEXTOBJ FORMATTEDP) of TEXTOBJ)) - (NOT (IEQP CH (CHARCODE CR] (* ; - "Inserting a meta-CR into an unformatted document. Start by setting up para breaks.") - (\TEDIT.CONVERT.TO.FORMATTED TEXTOBJ))) - (\INSERTCH (CHARCODE CR) - CH# TEXTOBJ) (* ; "Put the CR in") - (COND - ((IEQP CH (CHARCODE CR)) (* ; - "It's really a CR, rather than a meta-CR so do para breaking.") - (SETQ INPC (fetch (TEXTOBJ \INSERTPC) of TEXTOBJ)) - (AND INPC (replace (PIECE PPARALAST) of INPC with T)) - (* ; - "Mark the end of the paragraph (INPC might be NIL if the insert got refused somehow).") - (replace (TEXTOBJ \INSERTPCVALID) of TEXTOBJ with NIL) - (* ; - "FORCE A NEW PIECE ON THE NEXT CHARACTER") - ]) -) - - - -(* ;;; "Functions to manipulate the Piece Table (PCTB)") - -(DEFINEQ - -(\CHTOPC - [LAMBDA (CH# PCTB TELL-PC-START?) (* ; "Edited 15-Apr-93 16:05 by jds") - - (* ;; "Given a character # in a text object, and the object's piece table, return a pointer to the piece containing that character, else NIL.") - - (* ;; "If TELL-PC-START? is not NIL, sets the free variable START-OF-PIECE to the ch# of the piece's start.") - - (LET ((TREE PCTB) - (BASE-CH# 1) - TBASE-CH# FOUND) - (while (type? BTREENODE TREE) - do [for I from 1 to (fetch (BTREENODE COUNT) of TREE) - as OFST from 2 by 4 - do (COND - ((IGREATERP (SETQ TBASE-CH# (IPLUS BASE-CH# (\GETBASEFIXP TREE OFST)) - ) - CH#) - (SETQ FOUND (\GETBASEPTR TREE (- OFST 2))) - (RETURN)) - (T (SETQ BASE-CH# TBASE-CH#] - (SETQ TREE FOUND)) - (AND TELL-PC-START? (SETQ START-OF-PIECE BASE-CH#)) - (OR TREE 'LASTPIECE]) - -(\CHTOPCNO - [LAMBDA (CH# PCTB) (* ; "Edited 13-Jun-90 00:47 by mitani") - - (* ;; "Given a character # in a text object, and the object's piece table, return a pointer to the piece containing that character, else NIL") - - (DECLARE (LOCALVARS . T)) - (LET ((INDEX 0) - (TREE (fetch (PCTNODE HI) of PCTB)) - CHNUM) - [while TREE do (COND - [(IEQP CH# (SETQ CHNUM (fetch (PCTNODE CHNUM) of TREE))) - (* ; "FIND NODE") - (RETURN (SETQ INDEX (IPLUS INDEX (fetch (PCTNODE RANK) - of TREE] - ((IGREATERP CH# CHNUM) (* ; "MOVE RIGHT") - (SETQ INDEX (IPLUS INDEX (fetch (PCTNODE RANK) of TREE))) - (SETQ TREE (fetch (PCTNODE HI) of TREE))) - ((ILESSP CH# CHNUM) (* ; "MOVE LEFT") - (SETQ TREE (fetch (PCTNODE LO) of TREE] - (IMAX INDEX 1]) - -(\CLEARPCTB - [LAMBDA (PCTB) (* ; "Edited 23-Feb-88 11:11 by jds") - - (* ;; "(PROG ((OLASTPC (\EDITELT PCTB \PCTBLastPieceOffset))) (\EDITSETA PCTB \FirstPieceOffset 1) (* Create the LASTPIECE pseudo-piece placeholder in the first piece of the table) (\EDITSETA PCTB (ADD1 \FirstPieceOffset) (QUOTE LASTPIECE)) (for I from \SecondPieceOffset to OLASTPC do (* Now remove the other pieces, setting them to NIL) (\EDITSETA PCTB I NIL)) (\EDITSETA PCTB \PCTBLastPieceOffset (ADD1 \FirstPieceOffset)) (* Fix up the last-piece pointer) (\EDITSETA PCTB \PCTBFreePieces (IPLUS (\EDITELT PCTB \PCTBFreePieces) (LRSH (IDIFFERENCE OLASTPC (ADD1 \FirstPieceOffset)) 1))) (* And the free count of pieces.) (RETURN PCTB))") - - (HELP]) - -(\CREATEPIECEORSTREAM - [LAMBDA (STRING LOOKS PARALOOKS START END) (* ; "Edited 31-May-91 14:18 by jds") - - (* ;; "Given a source for text, build a PIECE to describe it.") - - (* ;; "HOWEVER-- if it's aformatted file, return the stream for that file.") - - (PROG (PC) - [SETQ PC - (COND - ((STRINGP STRING) (* ; "It's a string.") - (create PIECE - PSTR _ STRING - PFILE _ NIL - PLEN _ (NCHARS STRING) - PPARALAST _ NIL - PPARALOOKS _ PARALOOKS - PFATP _ (fetch (STRINGP FATSTRINGP) of STRING))) - ((NULL STRING) (* ; - "If it's NIL, use an empty string for the text.") - (create PIECE - PSTR _ "" - PFILE _ NIL - PLEN _ 0 - PPARALAST _ NIL - PPARALOOKS _ PARALOOKS)) - ((ATOM STRING) (* ; - "An atom is a file name. Open it.") - (SETQ STRING (OPENSTREAM STRING 'INPUT 'OLD)) - (RETURN STRING)) - [(STREAMP STRING) - (COND - [(EQ NoBits (fetch (STREAM ACCESSBITS) of STRING)) - (* ; - "If the stream is no longer open, open it.") - (RETURN (OPENSTREAM STRING 'INPUT 'OLD] - (T (RETURN STRING] - ((type? PIECE STRING) - STRING) - (T (* ; - "Anything else is coerced to a string first.") - (SETQ STRING (MKSTRING STRING)) - (create PIECE - PSTR _ STRING - PFILE _ NIL - PLEN _ (NCHARS STRING) - PPARALAST _ NIL - PPARALOOKS _ PARALOOKS] - (replace (PIECE PLOOKS) of PC with (OR LOOKS (CHARLOOKS.FROM.FONT DEFAULTFONT)) - ) - (replace (PIECE PPARALOOKS) of PC with (OR PARALOOKS (create FMTSPEC - using - TEDIT.DEFAULT.FMTSPEC - ))) - (RETURN PC]) - -(\DELETEPIECE - [LAMBDA (PC PCTB PC#) (* ; "Edited 20-Apr-93 19:06 by jds") - - (* ;; "Remove piece PC from the piece table PCTB. Adjust the character numbers of succeeding pieces, if need be.") - - (PROG (PCNODE (NEXT (fetch (PIECE NEXTPIECE) of PC)) - (PREV (fetch (PIECE PREVPIECE) of PC))) - (\DELETETREE PC (fetch (PIECE PTREENODE) of PC)) - (COND - (NEXT (replace (PIECE PREVPIECE) of NEXT with PREV))) - (* ; - "Break any forward link from the piece") - (COND - (PREV (replace (PIECE NEXTPIECE) of PREV with NEXT))) - (* ; "and any backward link.") - ]) - -(\FINDPIECE - [LAMBDA (PC PCTB) (* ; "Edited 31-May-91 13:53 by jds") - - (* Given a piece and the pctb it's in, return the elt %# of the CH# entry for - that piece in the table) - - (LET ((NODE (FINDPCNODE PC PCTB))) - (INDEX (fetch (PCTNODE CHNUM) of NODE) - PCTB]) - -(\INSERTPIECE - [LAMBDA (NEW OLD TEXTOBJ DONTUPDATECH#S PC# NEW-PREVLEN PREV) - (* ; "Edited 7-Oct-94 17:43 by jds") - - (* ;; "Insert the piece NEW in front of the piece OLD; re-allocate PCTB if need be") - - (PROG* ((PLEN (fetch (PIECE PLEN) of NEW)) - (PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - OLDLEN PCNODE PREVPC) - (COND - ((ZEROP (fetch (BTREENODE COUNT) of PCTB)) - (* ; "PCTB is empty.") - (replace (PIECE NEXTPIECE) of NEW with NIL) - (replace (PIECE PREVPIECE) of NEW with NIL) - (replace (BTREENODE DOWN1) of PCTB with NEW) - (replace (BTREENODE COUNT) of PCTB with 1) - (replace (BTREENODE TOTLEN) of PCTB with PLEN) - (RETURN 1))) - (SETQ OLDLEN (fetch (BTREENODE TOTLEN) of PCTB)) - [SETQ PCNODE (COND - ((OR (NULL OLD) - (ATOM OLD)) (* ; "Inserting in front of a symbol OR NIL, which must be LASTPIECE, the end-of-doc marker. Go find the node that contains it.") - (\LASTNODE PCTB)) - (T (* ; - "Normal case; go find the btree node that contains the piece we're inserting in front of.") - (FINDPCNODE OLD PCTB] - (\INSERTTREE NEW OLD PCNODE NEW-PREVLEN NIL PREV) - - (* ;; "Update inter-piece linkages:") - - (COND - [(OR (NULL OLD) - (ATOM OLD)) (* ; "Inserting in front of a symbol OR NIL, which must be LASTPIECE, the end-of-doc marker. Go find the node that contains it.") - (replace (PIECE NEXTPIECE) of NEW with NIL) - (replace (PIECE PREVPIECE) of NEW with (AND (NOT (ZEROP OLDLEN)) - (SETQ PREVPC (\CHTOPC - OLDLEN PCTB] - (T (* ; - "Normal case; go find the btree node that contains the piece we're inserting in front of.") - (replace (PIECE NEXTPIECE) of NEW with OLD) - (replace (PIECE PREVPIECE) of NEW with (SETQ PREVPC (ffetch - (PIECE PREVPIECE) - of OLD))) - (replace (PIECE PREVPIECE) of OLD with NEW))) - (AND PREVPC (replace (PIECE NEXTPIECE) of PREVPC with NEW]) - -(\MAKEPCTB - [LAMBDA (PC1 MINLEN) (* ; "Edited 15-Apr-93 15:48 by jds") - - (* ;; "Create a new piece table, with PC1 as its first piece, and a dummy piece at the end, with 1st ch# of 1+ (chlim of pc1)") - - (* ;; "A piece Table has the following format: It's an array, with 2 header words (1_# of pieces left in table unused) (2_offset of last used word in tbl), followed by 2-word entries: the first ch# in the piece, and a pointer to the piece.") - - (* ;; "NEW piece tree ") - - (* ;; "ROOT->LO: total hight of piece tree") - - (* ;; "ROOT->HI : Top node of piece tree") - - (LET ((PCTB (CREATE BTREENODE)) - PLEN) - (COND - (PC1 (FREPLACE (BTREENODE COUNT) OF PCTB WITH 2) - (FREPLACE (BTREENODE TOTLEN) OF PCTB WITH (SETQ PLEN (FETCH - (PIECE PLEN) - OF PC1))) - (FREPLACE (BTREENODE DOWN1) OF PCTB WITH PC1) - (FREPLACE (BTREENODE DLEN1) OF PCTB WITH PLEN) - (FREPLACE (BTREENODE DOWN2) OF PCTB WITH 'LASTPIECE) - (FREPLACE (BTREENODE DLEN2) OF PCTB WITH 0) - (FREPLACE (PIECE PTREENODE) OF PC1 WITH PCTB)) - (T - (* ;; - "No initial piece, so create a 0-long document, with only the ending-piece dummy") - - (FREPLACE (BTREENODE COUNT) OF PCTB WITH 1) - (FREPLACE (BTREENODE TOTLEN) OF PCTB WITH 0) - (FREPLACE (BTREENODE DOWN1) OF PCTB WITH 'LASTPIECE) - (FREPLACE (BTREENODE DLEN1) OF PCTB WITH 0))) - PCTB]) - -(\SPLITPIECE - [LAMBDA (PC CH TEXTOBJ PC#) (* ; "Edited 21-Apr-93 17:49 by jds") - - (* ;; "Split the piece PC before CH (rel to start of PIECE); return the new second piece.") - - (* ;; "PC#, if present, points at the CH# entry for the piece being split.") - - (PROG* ((PCTB (ffetch (TEXTOBJ PCTB) of TEXTOBJ)) - (NEWPC (create PIECE using PC)) - CHNO NEWLEN NEXTPC) - (SETQ CHNO CH) (* ; - "Offset within the piece before which to break") - (COND - ((ILEQ CHNO 0) - (SHOULDNT "Splitting a piece at the start."))) - (replace (PIECE PPARALAST) of PC with NIL) - (* ; - "There can be no para break before the split, as things now work.") - (COND - ((ffetch (PIECE PSTR) of PC) (* ; - "This piece points to a string. Split it for the two new pieces") - (freplace (PIECE PSTR) of NEWPC with (SUBSTRING (ffetch (PIECE PSTR) - of PC) - (ADD1 CHNO))) - (freplace (PIECE PLEN) of NEWPC with (IDIFFERENCE (ffetch (PIECE - PLEN) - of PC) - CHNO)) - (freplace (PIECE PSTR) of PC with (SUBSTRING (ffetch (PIECE PSTR) - of PC) - 1 CHNO)) - (freplace (PIECE PLEN) of PC with CHNO)) - ((ffetch (PIECE PFILE) of PC) (* ; - "This piece points to a file. Set the fileptrs accordingly") - (freplace (PIECE PFILE) of NEWPC with (ffetch (PIECE PFILE) - of PC)) - [freplace (PIECE PFPOS) of NEWPC with (COND - ((fetch (PIECE PFATP) - of NEWPC) - (* ; - "This is a FAT piece; need to allow 2 bytes per char skipped") - (IPLUS (ffetch (PIECE PFPOS) - of PC) - CHNO CHNO)) - (T - (* ; - "Regular piece; allow 1 byte per char") - (IPLUS (ffetch - (PIECE PFPOS) - of PC) - CHNO] - (freplace (PIECE PLEN) of NEWPC with (IDIFFERENCE (ffetch (PIECE - PLEN) - of PC) - CHNO)) - (FREPLACE (PIECE PLEN) OF PC WITH CHNO))) - (PROGN (* UNINTERRUPTABLY) - (SETQ NEXTPC (ffetch (PIECE NEXTPIECE) of PC)) - (* LET ((PCNODE (FETCH - (PIECE PTREENODE) OF PC))) - (* ;; - "Update the length of the original piece in it's tree entry.") - (for ITEM# from 0 by 4 as I from 1 - to (fetch (BTREENODE COUNT) of - PCNODE) when (EQ (\GETBASEPTR PCNODE - ITEM#) PC) do (* ;; - "FIXME - I think this can be done as aport of \INSERTPIECE / \INSERTTREEE, by looking back 1 from the OLD entry and updating. --JDS") - (\PUTBASEFIXP PCNODE - (IPLUS ITEM# 2) (fetch - (PIECE PLEN) of PC)) - (RETURN))) - (\INSERTPIECE NEWPC (OR NEXTPC 'LASTPIECE) - TEXTOBJ NIL NIL (IMINUS (fetch (PIECE PLEN) of NEWPC)) - PC) - - (* ;; "update nextlink and prevlink") - - (COND - ((NULL NEXTPC) (* ; - "PC is last piece (not LASTPIECE)") - (* ; "NEWPC is new last piece.") - (replace (PIECE NEXTPIECE) of NEWPC with NIL)) - (T (replace (PIECE NEXTPIECE) of NEWPC with NEXTPC) - (replace (PIECE PREVPIECE) of NEXTPC with NEWPC))) - (replace (PIECE NEXTPIECE) of PC with NEWPC) - (replace (PIECE PREVPIECE) of NEWPC with PC)) - (* ; "Now set its starting CH#") - (replace (TEXTOBJ \INSERTPCVALID) of TEXTOBJ with NIL) - (* ; - "Whenever you split a piece, you can't add to it anymore.") - (RETURN NEWPC]) - -(\INSERT.FIRST.PIECE - [LAMBDA (TEXTOBJ) (* ; "Edited 31-May-91 14:00 by jds") - - (* ;; "Insert 1st piece to empty PCTB.") - - (PROG (PC) - (\INSERTPIECE [SETQ PC (\CREATEPIECEORSTREAM NIL (CHARLOOKS.FROM.FONT DEFAULTFONT) - (COND - (TEXTOBJ (fetch (TEXTOBJ FMTSPEC) of TEXTOBJ)) - (T (create FMTSPEC using TEDIT.DEFAULT.FMTSPEC - ] - NIL TEXTOBJ) - (replace (TEXTOBJ \INSERTPC) of TEXTOBJ with PC) - (replace (PIECE PSTR) of PC with (freplace (TEXTOBJ \INSERTSTRING) - of TEXTOBJ with (ALLOCSTRING 512]) -) - - - -(* ; "Generic-IO type operations support") - -(DEFINEQ - -(\TEXTCLOSEF - [LAMBDA (STREAM) (* ; "Edited 15-Apr-93 16:43 by jds") - (* ; - "Close the files underlying a stream") - (PROG ((TEXTOBJ (TEXTOBJ STREAM)) - PCTB PC) - (SETQ PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - [OR (ZEROP (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ)) - (COND - ((TYPE? PIECE (SETQ PC (\GETBASEPTR (\FIRSTNODE PCTB) - 0))) - (fetch (PIECE PFILE) of PC) - (CLOSEF? (fetch (PIECE PFILE) of PC)) - (SETQ PC (FETCH (PIECE NEXTPIECE) OF PC)) - (WHILE PC DO (AND (fetch (PIECE PFILE) of PC) - (CLOSEF? (fetch (PIECE PFILE) of PC))) - (SETQ PC (FETCH (PIECE NEXTPIECE) OF PC] - - (* ;; "And close the REAL file as well, in case we'd made a local cache.") - - (CLOSEF? (fetch (TEXTOBJ TXTFILE) of TEXTOBJ]) - -(\TEXTCLOSEF-SUBTREE - [LAMBDA (PCTREE) (* ; "Edited 31-May-91 14:00 by jds") - - (* ;; "Run thru the pieces in the document, closing the underlying file") - - (* ;; "by traverse pctree") - - (LET (PC) - (COND - ((NULL PCTREE) - NIL) - (T (SETQ PC (fetch (PCTNODE PCE) of PCTREE)) - (AND (NOT (ATOM PC)) - (fetch (PIECE PFILE) of PC) - (CLOSEF? (fetch (PIECE PFILE) of PC))) - (\TEXTCLOSEF-SUBTREE (fetch (PCTNODE LO) of PCTREE)) - (\TEXTCLOSEF-SUBTREE (fetch (PCTNODE HI) of PCTREE]) - -(\TEXTDSPFONT - [LAMBDA (STREAM NEWFONT) (* ; "Edited 31-May-91 14:02 by jds") - - (* ;; "Set the font for a TEdit window. Need change the caret looks, for character insertion, and the WINDOW's looks, so that TEXEC type-out to the window does the right thing.") - - (LET ((TEXTOBJ (TEXTOBJ STREAM))) - (PROG1 (fetch (CHARLOOKS CLFONT) of (fetch (TEXTOBJ CARETLOOKS) of TEXTOBJ)) - [COND - (NEWFONT - - (* ;; "Only do this if there's a new font to set:") - - (TEDIT.CARETLOOKS STREAM (\GETFONTDESC NEWFONT 'DISPLAY)) - (COND - ((fetch (TEXTOBJ \WINDOW) of TEXTOBJ) - - (* ;; "Update the windows, if there are any.") - - (for WIN in (fetch (TEXTOBJ \WINDOW) of TEXTOBJ) - do (DSPFONT NEWFONT WIN])]) - -(\TEXTEOFP - [LAMBDA (STREAM) (* ; "Edited 31-May-91 14:18 by jds") - - (* ;; "Test for EOF on a text stream: At end of a piece, and there's no more pieces.") - - (OR (NOT (fetch (TEXTSTREAM PIECE) of STREAM)) - (EQ (fetch (TEXTSTREAM PIECE) of STREAM) - 'LASTPIECE) - (AND (IEQP (fetch (STREAM COFFSET) of STREAM) - (fetch (STREAM CBUFSIZE) of STREAM)) - (ZEROP (fetch (TEXTSTREAM CHARSLEFT) of STREAM)) - (OR (NOT (fetch (PIECE NEXTPIECE) of (fetch (TEXTSTREAM PIECE) of STREAM - ))) - (bind (PC _ (fetch (PIECE NEXTPIECE) of (fetch (TEXTSTREAM PIECE) - of STREAM))) while - PC - do (COND - ((NOT (ZEROP (fetch (PIECE PLEN) of PC))) - (RETURN NIL))) - (SETQ PC (fetch (PIECE NEXTPIECE) of PC)) finally (RETURN - T]) - -(\TEXTGETEOFPTR - [LAMBDA (STREAM) (* ; "Edited 31-May-91 13:58 by jds") - (fetch (TEXTOBJ TEXTLEN) of (fetch (TEXTSTREAM TEXTOBJ) of STREAM]) - -(\TEXTGETFILEPTR - [LAMBDA (STREAM) (* ; "Edited 28-Mar-94 15:32 by jds") - - (* ;; "GETFILEPTR fn for text streams.") - - (PROG ((PC (fetch (TEXTSTREAM PIECE) of STREAM)) - (CHARSLEFT (fetch (TEXTSTREAM CHARSLEFT) of STREAM)) - (OFFSET (fetch (STREAM COFFSET) of STREAM)) - (LIMIT (fetch (STREAM CBUFSIZE) of STREAM)) - PLEN) - (COND - ((EQ PC 'LASTPIECE) (* ; "STREAM is Empty Document") - (RETURN 0)) - [PC (* ; - "There's a piece. That means he's inside the file somewhere.") - (SETQ PLEN (fetch (PIECE PLEN) of PC)) - (RETURN (IMIN [SUB1 (IPLUS (\TEDIT.PIECE-CHNO PC) - (IDIFFERENCE PLEN CHARSLEFT) - (COND - ((fetch (TEXTSTREAM FATSTREAMP) of STREAM) - (* ; - "This is a 16-bit stream; The difference is in BYTES, and needs to be divided by 2 to get chars") - (IQUOTIENT (IDIFFERENCE OFFSET LIMIT) - 2)) - (T (IDIFFERENCE OFFSET LIMIT] - (fetch (TEXTOBJ TEXTLEN) of (fetch (TEXTSTREAM TEXTOBJ) - of STREAM] - (T (* ; - "Lack of a current piece means he walked off the end.") - (RETURN (IMAX 1 (fetch (TEXTOBJ TEXTLEN) of (fetch (TEXTSTREAM TEXTOBJ) - of STREAM]) - -(\TEXTOPENF - [LAMBDA (STREAM ACCESS ASDF QWER ZXCV) (* ; "Edited 31-May-91 13:58 by jds") - (* Return the stream, opened for - input) - (PROG ((TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of STREAM)) - PCTB PC) - (SETQ PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ)) - (\TEXTOPENF-SUBTREE (fetch (PCTNODE HI) of PCTB)) - - (* ;; "(for I from (ADD1 \FirstPieceOffset) to (SUB1 (\EDITELT PCTB \PCTBLastPieceOffset)) by \EltsPerPiece do (SETQ PC (\EDITELT PCTB I)) (COND ((AND (fetch PFILE of PC) (EQ (fetch ACCESSBITS of (fetch PFILE of PC)) NoBits)) (\TEDIT.REOPEN.STREAM STREAM (fetch PFILE of PC)))))") - - (RETURN STREAM]) - -(\TEXTOPENF-SUBTREE - [LAMBDA (PCTREE) (* ; "Edited 31-May-91 14:19 by jds") - (LET (PC) - (COND - ((NULL PCTREE) - NIL) - (T (SETQ PC (fetch (PCTNODE PCE) of PCTREE)) - [COND - ((AND (fetch (PIECE PFILE) of PC) - (EQ (fetch (STREAM ACCESSBITS) of (fetch (PIECE PFILE) - of PC)) - NoBits)) - (\TEDIT.REOPEN.STREAM STREAM (fetch (PIECE PFILE) of PC] - (\TEXTOPENF-SUBTREE (fetch (PCTNODE LO) of PCTREE)) - (\TEXTOPENF-SUBTREE (fetch (PCTNODE HI) of PCTREE]) - -(\TEXTOUTCHARFN - [LAMBDA (CH STREAM) (* ; "Edited 31-May-91 13:59 by jds") - (\INSERTCH CH (fetch (TEXTOBJ TEXTLEN) of (fetch (TEXTSTREAM TEXTOBJ) - of STREAM)) - (fetch (TEXTSTREAM TEXTOBJ) of STREAM]) - -(\TEXTBACKFILEPTR - [LAMBDA (STREAM) (* ; "Edited 28-Mar-94 15:32 by jds") - - (* ;; "Use this to BACKFILEPTR a text stream.") - - [PROG (PC PS PF REALFILE) - (COND - [(AND (IEQP (fetch (STREAM CPAGE) of STREAM) - (fetch (TEXTSTREAM PCSTARTPG) of STREAM)) - (IEQP (fetch (STREAM COFFSET) of STREAM) - (fetch (TEXTSTREAM PCSTARTCH) of STREAM))) - (* ; - "Hit start of piece; back to PREVPIECE & keep going.") - [SETQ PC (replace (TEXTSTREAM PIECE) of STREAM - with (fetch (PIECE PREVPIECE) of (fetch (TEXTSTREAM PIECE) - of STREAM] - (* ; "Move to previous piece") - (replace (STREAM BINABLE) of STREAM with T) - (replace (TEXTSTREAM FATSTREAMP) of STREAM with NIL) - (* add (fetch (TEXTSTREAM PCNO) of - STREAM) -1) - (while (AND PC (ZEROP (fetch (PIECE PLEN) of PC))) - do (* ; - "Skip over any zero-length pieces as we back along.") - (SETQ PC (fetch (PIECE PREVPIECE) of PC))) - (COND - [PC (replace (TEXTSTREAM CURRENTLOOKS) of STREAM - with (\TEDIT.APPLY.STYLES (fetch (PIECE PLOOKS) of PC) - PC - (fetch (TEXTSTREAM TEXTOBJ) of STREAM))) - (COND - ((SETQ PS (fetch (PIECE PSTR) of PC)) - (* ; "This piece lives in a string.") - (\TEDIT.TEXTBIN.STRINGSETUP (SUB1 (fetch (PIECE PLEN) of PC)) - 1 STREAM PS) - - (* ;; "Set the stream up so that it will use PS for BINs, starting at offset 0 (the front of the piece), and will run for as many chars as there are in the piece.") - - ) - ((SETQ PF (fetch (PIECE PFILE) of PC)) - (* ; "This piece lives on a file.") - (\TEDIT.TEXTBIN.FILESETUP PC (SUB1 (fetch (PIECE PLEN) of PC)) - 1 STREAM PF (fetch (PIECE PFATP) of PC) - 'PEEKBIN)) - ((fetch (PIECE POBJ) of PC) - (replace (TEXTSTREAM CHARSLEFT) of STREAM with 0)) - (T (ERROR "CAN'T GET TO NEXT PIECE"] - (T (ERROR "Trying to BACKFILEPTR thru start of text."] - ((ZEROP (fetch (STREAM COFFSET) of STREAM)) - (* ; "Move back 1 file page") - (SETQ REALFILE (fetch (TEXTSTREAM REALFILE) of STREAM)) - (replace (TEXTSTREAM CHARSLEFT) of STREAM with (IPLUS (fetch - (TEXTSTREAM - CHARSLEFT) - of STREAM) - (fetch - (STREAM CBUFSIZE) - of STREAM))) - (replace (STREAM COFFSET) of REALFILE with 0) - (COND - ((fetch (TEXTSTREAM FATSTREAMP) of STREAM) - (* ; - "16 bit stream, so back up 2 bytes.") - (\BACKFILEPTR REALFILE) - (\BACKFILEPTR REALFILE)) - (T (\BACKFILEPTR REALFILE))) - (\PEEKBIN REALFILE) - (replace (STREAM CPAGE) of STREAM with (fetch (STREAM CPAGE) - of REALFILE)) - (replace (STREAM COFFSET) of STREAM with (fetch (STREAM COFFSET) - of REALFILE)) - (replace (STREAM CBUFSIZE) of STREAM with (fetch (STREAM CBUFSIZE) - of REALFILE)) - (replace (STREAM CPPTR) of STREAM with (fetch (STREAM CPPTR) - of REALFILE))) - (T (* ; "JUST ACT CASUAL & DO IT.") - (COND - ((fetch (TEXTSTREAM FATSTREAMP) of STREAM) - (* ; - "16 bit stream, so back up 2 bytes.") - (\PAGEDBACKFILEPTR STREAM) - (\PAGEDBACKFILEPTR STREAM)) - (T (\PAGEDBACKFILEPTR STREAM] - T]) - -(\TEXTBOUT - [LAMBDA (STREAM BYTE) (* ; "Edited 10-May-93 16:59 by jds") - (* ; - "Do BOUT to a text stream, which is an insertion at the caret.") - (PROG ((TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of STREAM)) - (CH# (ADD1 (\TEXTGETFILEPTR STREAM))) - WINDOW TEXTLEN PS PC PSTR OFFST) - (SETQ TEXTLEN (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ)) - (SETQ WINDOW (fetch (TEXTOBJ \WINDOW) of TEXTOBJ)) - (AND WINDOW (\TEDIT.MARK.LINES.DIRTY TEXTOBJ CH# CH#)) - (\INSERTCH BYTE CH# TEXTOBJ) - (AND WINDOW (TEDIT.UPDATE.SCREEN TEXTOBJ)) - (AND (fetch (TEXTOBJ TXTREADONLY) of TEXTOBJ) - (RETURN)) (* ; - "If teh stream is readonly, nothing happened!") - [SETQ PS (ffetch (PIECE PSTR) of (SETQ PC (fetch (TEXTOBJ \INSERTPC) - of TEXTOBJ] - (* ; "This piece resides in a STRING.") - (replace (TEXTSTREAM PIECE) of STREAM with PC) - (freplace (STREAM CPPTR) of STREAM with (ADDBASE (ffetch (STRINGP BASE) - of PS) - (LRSH (SETQ OFFST - (ffetch (STRINGP - OFFST) - of PS)) - 1))) - (freplace (STREAM CPAGE) of STREAM with 0) - (freplace (STREAM COFFSET) of STREAM with (IPLUS (freplace (TEXTSTREAM - PCSTARTCH) - of STREAM - with (LOGAND 1 OFFST)) - (fetch (TEXTOBJ \INSERTLEN - ) - of TEXTOBJ))) - (freplace (TEXTSTREAM PCSTARTPG) of STREAM with 0) - (* ; - "Page # within the 'file' where this piece starts") - (freplace (STREAM CBUFSIZE) of STREAM with (fetch (STREAM COFFSET) - of STREAM)) - (freplace (STREAM EPAGE) of STREAM with 1) - (freplace (TEXTSTREAM CHARSLEFT) of STREAM with 0) - (freplace (TEXTSTREAM REALFILE) of STREAM with NIL]) - -(\TEDITOUTCHARFN - [LAMBDA (STREAM CHARCODE) (* ; "Edited 31-May-91 14:19 by jds") - - (* ;; "OUTCHARFN for TEdit streams -- always BOUTs the character, because TEdit streams deal in complete charcodes rather than bytes. BUT -- does update the CHARPOSITION of the stream, which is used by some code to decide things.") - - (COND - ((EQ CHARCODE (CHARCODE EOL)) - (\BOUT STREAM (CHARCODE CR)) - (freplace (STREAM CHARPOSITION) of STREAM with 0)) - (T (\BOUT STREAM CHARCODE) - (freplace (STREAM CHARPOSITION) of STREAM with - (PROGN - (* ; "Ugh. Don't overflow") - (IPLUS16 (ffetch (STREAM - CHARPOSITION - ) - of STREAM) - 1]) - -(\TEXTSETEOF - [LAMBDA (STREAM EOFPTR) (* ; "Edited 31-May-91 14:19 by jds") - (* Set the EPAGE/EOFFSET of the - stream to be (SUB1 of EOFPTR)) - (replace (STREAM EPAGE) of STREAM with (fetch (BYTEPTR PAGE) of EOFPTR)) - (replace (STREAM EOFFSET) of STREAM with (fetch (BYTEPTR OFFSET) of EOFPTR]) - -(\TEXTSETFILEPTR - [LAMBDA (STREAM FILEPOS) (* ; "Edited 22-Apr-93 13:44 by jds") - (* ; - "Sets the file ptr for a text stream.") - (PROG ((TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of STREAM))) - (COND - ((ZEROP (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ))) - ((OR (IEQP FILEPOS -1) - (IEQP FILEPOS (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ))) - (* ; "Means end of file") - (\SETUPGETCH (IMAX 1 (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ)) - TEXTOBJ) - (\BIN STREAM)) - ((OR (ILESSP FILEPOS 0) - (IGREATERP FILEPOS (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ))) - (* ; - "If the fileptr is not within the text, punt.") - (\ILLEGAL.ARG FILEPOS)) - (T (\SETUPGETCH (IMAX 1 (ADD1 FILEPOS)) - TEXTOBJ]) - -(\TEXTDSPXPOSITION - [LAMBDA (STREAM XPOSITION) (* ; "Edited 31-May-91 13:59 by jds") - - (* Simply returns the XPOSITION of the primary window's display stream, this is - a read-only function) - - (LET [(WINDOW (CAR (fetch (TEXTOBJ \WINDOW) of (TEXTOBJ STREAM] - (IF WINDOW - THEN (DSPXPOSITION NIL WINDOW) - ELSE (POSITION STREAM XPOSITION]) - -(\TEXTDSPYPOSITION - [LAMBDA (STREAM YPOSITION) (* ; "Edited 31-May-91 13:59 by jds") - - (* Simply returns the XPOSITION of the primary window's display stream, this is - a read-only function) - - (LET [(WINDOW (CAR (fetch (TEXTOBJ \WINDOW) of (TEXTOBJ STREAM] - (IF WINDOW - THEN (DSPYPOSITION NIL WINDOW) - ELSE (AND \#DISPLAYLINES (NEQ \CURRENTDISPLAYLINE -1) - (DIFFERENCE \#DISPLAYLINES \CURRENTDISPLAYLINE]) - -(\TEXTLEFTMARGIN - [LAMBDA (STREAM XPOSITION) (* ; "Edited 31-May-91 14:03 by jds") - -(* ;;; "Returns the left margin of the textstream. This is a read-only function") - - (IF (CAR (fetch (TEXTOBJ \WINDOW) of (TEXTOBJ STREAM))) - THEN [IPLUS 8 (fetch (FMTSPEC LEFTMAR) of (fetch (TEXTOBJ FMTSPEC) - of (TEXTOBJ STREAM] - ELSE 0]) - -(\TEXTRIGHTMARGIN - [LAMBDA (STREAM XPOSITION) (* ; "Edited 31-May-91 14:03 by jds") - -(* ;;; "Returns the right margin of the textstream. This is a read-only function") - - (LET ((TEXTOBJ (TEXTOBJ STREAM))) - (IF (fetch (TEXTOBJ \WINDOW) of TEXTOBJ) - THEN (LET [(RIGHTMAR (fetch (FMTSPEC RIGHTMAR) of (fetch (TEXTOBJ - FMTSPEC) - of TEXTOBJ] - (IF (ZEROP RIGHTMAR) - THEN (fetch (TEXTOBJ WRIGHT) of TEXTOBJ) - ELSE RIGHTMAR)) - ELSE (LINELENGTH NIL STREAM]) - -(\TEXTDSPCHARWIDTH - [LAMBDA (STREAM CHARCODE) - (CHARWIDTH CHARCODE (DSPFONT NIL STREAM]) - -(\TEXTDSPSTRINGWIDTH - [LAMBDA (STREAM STRING) - (STRINGWIDTH STRING (DSPFONT NIL STREAM]) - -(\TEXTDSPLINEFEED - [LAMBDA (STREAM VALUE) - (FONTPROP (DSPFONT NIL STREAM) - 'HEIGHT]) -) -(DEFINEQ - -(\TEXTBIN - [LAMBDA (STREAM) (* ; "Edited 28-Mar-94 15:33 by jds") - -(* ;;; "Do BIN slow case for a text stream") - (* ; - "NB that PEEKBIN and BACKFILEPTR need to track changes in this code") - (DECLARE (LOCALVARS . T)) - (PROG (CH FILE STR PF PS PC PO NPC OPC SUBSTREAM) - (COND - [(ILESSP (fetch (STREAM COFFSET) of STREAM) - (fetch (STREAM CBUFSIZE) of STREAM)) - (* ; - "Simple case -- just do the usual BIN") - (COND - [(SETQ PO (fetch (PIECE POBJ) of (fetch (TEXTSTREAM PIECE) of STREAM - ))) - (* ; "Handle objects specially") - (COND - ((SETQ SUBSTREAM (IMAGEOBJPROP PO 'SUBSTREAM)) - (* ; - "If this object has a substream in it, go to that substream") - (add (fetch (STREAM COFFSET) of STREAM) - 1) - (RETURN (\BIN SUBSTREAM))) - (T - (* ;; "Otherwise, just return the object as BIN's result, and make sure we'll go to the next page next time.") - - (replace (STREAM COFFSET) of STREAM with (fetch (STREAM - CBUFSIZE) - of STREAM)) - (replace (TEXTSTREAM CHARSLEFT) of STREAM with 0) - (RETURN PO] - [(fetch (TEXTSTREAM FATSTREAMP) of STREAM) - (* ; - "This is a 16 bit BIN. grab 2 bytes.") - (* ; - "WHAT HAPPENS IF THE SECOND BYTE IS ON ANOTHER PAGE??") - (RETURN (LOGOR (UNFOLD (\PAGEDBIN STREAM) - 256) - (COND - ((ILESSP (fetch (STREAM COFFSET) of STREAM) - (fetch (STREAM CBUFSIZE) of STREAM)) - (* ; - "This pair of characters doesn't straddle a file page bound. Just grab the next char.") - (\PAGEDBIN STREAM)) - (T (* ; - "Need to move to the next page on the backing file. Doing so also grabs the next character.") - (\TEDIT.TEXTBIN.NEW.PAGE STREAM T] - (T (RETURN (\PAGEDBIN STREAM] - (T (* ; - "We've either hit a page bound in a file, or a piece bound.") - (RETURN (COND - [(ZEROP (fetch (TEXTSTREAM CHARSLEFT) of STREAM)) - (* ; "Time for a new piece.") - [repeatwhile (AND PC (ZEROP (fetch (PIECE PLEN) of PC))) - do (* ; - "Skip over any zero-length pieces at the end of the file.") - (SETQ OPC (fetch (TEXTSTREAM PIECE) of STREAM)) - (SETQ PC (replace (TEXTSTREAM PIECE) of STREAM - with (AND OPC (fetch (PIECE NEXTPIECE) - of OPC] - (replace (STREAM BINABLE) of STREAM with T) - (replace (TEXTSTREAM FATSTREAMP) of STREAM with NIL) - (* ; - "Move to the next piece in the chain") - (COND - [PC (* ; - "There IS a next piece to move to.") - (AND (fetch (TEXTSTREAM LOOKSUPDATEFN) of STREAM) - (SETQ NPC (APPLY* (fetch (TEXTSTREAM LOOKSUPDATEFN) - of STREAM) - STREAM PC)) - (replace (TEXTSTREAM PIECE) of STREAM - with (SETQ PC NPC))) - (* ; - "Take care of any piece-change uproar. uproar -- which may include picking a new piece to go to.") - [COND - (NPC (* ; - "If we got an NPC, this was taken care of by the LOOKSUPDATEFN") - ) - ([AND (SETQ PO (fetch (PIECE POBJ) of PC)) - (SETQ SUBSTREAM (IMAGEOBJPROP PO 'SUBSTREAM] - (\SETUPGETCH 1 (fetch (TEXTSTREAM TEXTOBJ) - of SUBSTREAM)) - (replace (TEXTSTREAM CURRENTPARALOOKS) of STREAM - with (fetch (TEXTSTREAM CURRENTPARALOOKS) - of SUBSTREAM)) - (replace (TEXTSTREAM CURRENTLOOKS) of STREAM - with (fetch (TEXTSTREAM CURRENTLOOKS) of - SUBSTREAM - ))) - [(NEQ (fetch (PIECE PPARALOOKS) of OPC) - (fetch (PIECE PPARALOOKS) of PC)) - (replace (TEXTSTREAM CURRENTPARALOOKS) of STREAM - with (\TEDIT.APPLY.PARASTYLES (fetch (PIECE - PPARALOOKS - ) - of PC) - PC - (fetch (TEXTSTREAM TEXTOBJ) - of STREAM))) - (replace (TEXTSTREAM CURRENTLOOKS) of STREAM - with (\TEDIT.APPLY.STYLES (fetch (PIECE PLOOKS) - of PC) - PC - (fetch (TEXTSTREAM TEXTOBJ) - of STREAM] - ((NOT (EQCLOOKS (fetch (PIECE PLOOKS) of PC) - (fetch (PIECE PLOOKS) of OPC))) - (replace (TEXTSTREAM CURRENTLOOKS) of STREAM - with (\TEDIT.APPLY.STYLES (fetch (PIECE PLOOKS) - of PC) - PC - (fetch (TEXTSTREAM TEXTOBJ) - of STREAM] - (COND - ((SETQ PS (fetch (PIECE PSTR) of PC)) - (* ; "This piece lives in a string.") - (\TEDIT.TEXTBIN.STRINGSETUP 0 (fetch (PIECE PLEN) - of PC) - STREAM PS) - - (* ;; "Set the stream up so that it will use PS for BINs, starting at offset 0 (the front of the piece), and will run for as many chars as there are in the piece.") - (* ; - "Then actually grab the next character to hand back to the caller.") - (\BIN STREAM)) - ((SETQ PF (fetch (PIECE PFILE) of PC)) - (* ; "This piece lives on a file.") - (\TEDIT.TEXTBIN.FILESETUP PC 0 (fetch (PIECE PLEN) - of PC) - STREAM PF (fetch (PIECE PFATP) of PC) - 'PEEKBIN) - (\BIN STREAM)) - [(SETQ PO (fetch (PIECE POBJ) of PC)) - (replace (STREAM BINABLE) of STREAM with NIL) - (COND - (SUBSTREAM (* ; - "There is a stream below this one, to feed chars upward.") - (\SETUPGETCH 1 (fetch (TEXTSTREAM TEXTOBJ) - of SUBSTREAM)) - (freplace (STREAM COFFSET) of STREAM - with 0) - (freplace (TEXTSTREAM CHARSLEFT) of STREAM - with (fetch (PIECE PLEN) of PC)) - (freplace (STREAM CBUFSIZE) of STREAM - with (fetch (PIECE PLEN) of PC)) - (freplace (STREAM CPAGE) of STREAM - with 0) - (freplace (TEXTSTREAM PCSTARTCH) of STREAM - with 0) - (freplace (TEXTSTREAM PCSTARTPG) of STREAM - with 0) - (replace (TEXTSTREAM CURRENTPARALOOKS) - of STREAM with (fetch (TEXTSTREAM - - CURRENTPARALOOKS - ) of - SUBSTREAM)) - (replace (TEXTSTREAM CURRENTLOOKS) of STREAM - with (fetch (TEXTSTREAM CURRENTLOOKS) - of SUBSTREAM)) - (RETURN (\BIN SUBSTREAM))) - (T (replace (TEXTSTREAM CHARSLEFT) of STREAM - with 0) - (RETURN PO] - (T (ERROR "CAN'T GET TO NEXT PIECE"] - (T (* ; - "There are no more pieces. Punt gracefully") - (COND - ((fetch (STREAM ENDOFSTREAMOP) of STREAM) - (* ; - "If there's an EOF handler, call it & return the result") - (RETURN (APPLY* (fetch (STREAM ENDOFSTREAMOP) of STREAM - ) - STREAM))) - (T (* ; "Otherwise, return NIL") - (RETURN NIL] - [(SETQ PO (fetch (PIECE POBJ) of (fetch (TEXTSTREAM PIECE) - of STREAM))) - (* ; "This is an object") - (replace (STREAM BINABLE) of STREAM with NIL) - (COND - (SUBSTREAM (* ; - "There is a stream below this one, to feed chars upward.") - (\SETUPGETCH 1 (fetch (TEXTSTREAM TEXTOBJ) of - SUBSTREAM)) - (freplace (STREAM COFFSET) of STREAM with 1) - (freplace (TEXTSTREAM CHARSLEFT) of STREAM with - 0) - (freplace (STREAM CBUFSIZE) of STREAM - with (fetch (PIECE PLEN) of PC)) - (freplace (STREAM CPAGE) of STREAM with 0) - (freplace (TEXTSTREAM PCSTARTCH) of STREAM with - 1) - (freplace (TEXTSTREAM PCSTARTPG) of STREAM with - 0) - (replace (TEXTSTREAM CURRENTPARALOOKS) of STREAM - with (fetch (TEXTSTREAM CURRENTPARALOOKS) - of SUBSTREAM)) - (replace (TEXTSTREAM CURRENTLOOKS) of STREAM - with (fetch (TEXTSTREAM CURRENTLOOKS) of - SUBSTREAM - )) - (RETURN (\BIN SUBSTREAM))) - (T (replace (TEXTSTREAM CHARSLEFT) of STREAM with 0) - (RETURN PO] - (T (* ; - "Need to move to the next page in a file.") - (RETURN (\TEDIT.TEXTBIN.NEW.PAGE STREAM]) - -(\TEDIT.TEXTBIN.STRINGSETUP - [LAMBDA (CHOFFSET CHARSLEFT STREAM PS) (* ; "Edited 31-May-91 14:21 by jds") - (PROG (OFFST) - (COND - ((fetch (STRINGP FATSTRINGP) of PS) - - (* The string is FAT. Therefore, make all the offsets and things take account - of the fact that each char is really 2 bytes.) - - (freplace (STREAM CPPTR) of STREAM with (ADDBASE (ffetch (STRINGP - BASE) - of PS) - (ffetch (STRINGP OFFST) - of PS))) - - (* The char page ptr can point to the real first char, since it's a word.) - - (freplace (STREAM CPAGE) of STREAM with 0) - (freplace (STREAM COFFSET) of STREAM with (UNFOLD CHOFFSET 2)) - (* Offset into the string, in bytes. - That 2 should really be something - like BYTESPERFATCHAR.) - (freplace (TEXTSTREAM PCSTARTPG) of STREAM with 0) - (* Page %# within the "file" where - this piece starts) - (freplace (TEXTSTREAM PCSTARTCH) of STREAM with 0) - (* Char within "page" where the - piece starts (for BACKFILEPTR)) - (freplace (STREAM CBUFSIZE) of STREAM with (IPLUS (UNFOLD CHARSLEFT 2) - (ffetch (STREAM - COFFSET) - of STREAM))) - (* Since the chars-left field is - words, and we're talking bytes.) - (freplace (STREAM EPAGE) of STREAM with 1) - (freplace (TEXTSTREAM CHARSLEFT) of STREAM with 0) - - (* When we hit the end of the string, we'll have run out off the piece, too.) - - (freplace (TEXTSTREAM REALFILE) of STREAM with NIL) - (replace (STREAM BINABLE) of STREAM with NIL) - (* To force BINs thru the \TEXTBIN - function so we can get two bytes.) - (replace (TEXTSTREAM FATSTREAMP) of STREAM with T) - (* And mark the stream as having - wide characters, so \TEXTBIN knows - what to do.) - ) - (T (* Characters are thin in this - string (the usual case)) - (freplace (STREAM CPPTR) of STREAM with - (ADDBASE (ffetch (STRINGP BASE) - of PS) - (LRSH (SETQ OFFST - (ffetch (STRINGP OFFST) - of PS)) - 1))) - (freplace (STREAM CPAGE) of STREAM with 0) - (freplace (TEXTSTREAM PCSTARTPG) of STREAM with 0) - (* Page %# within the "file" where - this piece starts) - (freplace (TEXTSTREAM PCSTARTCH) of STREAM with (LOGAND 1 OFFST)) - (* Char within "page" where the - piece starts (for BACKFILEPTR)) - (freplace (STREAM COFFSET) of STREAM with (IPLUS (LOGAND 1 OFFST) - CHOFFSET)) - (freplace (STREAM CBUFSIZE) of STREAM with (IPLUS CHARSLEFT - (ffetch - (STREAM COFFSET) - of STREAM))) - (freplace (STREAM EPAGE) of STREAM with 1) - (freplace (TEXTSTREAM CHARSLEFT) of STREAM with 0) - (freplace (TEXTSTREAM REALFILE) of STREAM with NIL) - (replace (TEXTSTREAM FATSTREAMP) of STREAM with NIL]) - -(\TEDIT.TEXTBIN.FILESETUP - [LAMBDA (PC CHOFFSET CHARSLEFT STREAM PF FATP OPERATION NOERRORFLG) - (* ; "Edited 15-Apr-93 15:53 by jds") - (* ; - "Do the setup needed to make a text stream read from a file.") - (PROG ((BYTESLEFT (COND - (FATP (UNFOLD CHARSLEFT 2)) - (T CHARSLEFT))) - (BYTEOFFSET (COND - (FATP (UNFOLD CHOFFSET 2)) - (T CHOFFSET))) - CH FPOS) - [COND - ((IEQP (ffetch (STREAM ACCESSBITS) of PF) - NoBits) (* ; "ASSURE THAT THE FILE IS OPEN") - (SETQ PF (\TEDIT.REOPEN.STREAM STREAM PF] - [freplace (TEXTSTREAM PCSTARTPG) of STREAM with (ffetch (BYTEPTR PAGE) - of (SETQ FPOS - (ffetch - (PIECE PFPOS) - of PC] - (* ; - "Page within the file where the piece starts") - (freplace (TEXTSTREAM PCSTARTCH) of STREAM with (ffetch (BYTEPTR OFFSET) - of FPOS)) - (* ; - "Char within the page where it starts.") - (SETFILEPTR PF (IPLUS FPOS BYTEOFFSET)) - [COND - ((ZEROP (GETEOFPTR PF)) (* ; - "For zero-length files, do nothing.") - ) - ((ILESSP (IPLUS FPOS BYTEOFFSET) - (GETEOFPTR PF)) (* ; - "Only get the next character if we aren't positioning past the end of the file.") - (SETQ CH (SELECTQ OPERATION - (PEEKBIN (\PEEKBIN PF NOERRORFLG)) - (BIN (\BIN PF)) - (\PEEKBIN PF NOERRORFLG] - -(* ;;; "Move all the relevant fields from the backing file's stream into the text stream, so that microcoded BINs will do the right thing.") - - (freplace (STREAM CPPTR) of STREAM with (ffetch (STREAM CPPTR) of - PF)) - (freplace (STREAM CPAGE) of STREAM with (ffetch (STREAM CPAGE) of - PF)) - (freplace (STREAM COFFSET) of STREAM with (ffetch (STREAM COFFSET) - of PF)) - (freplace (STREAM EPAGE) of STREAM with 32767) - (freplace (STREAM CBUFSIZE) of STREAM with (IMIN (ffetch (STREAM CBUFSIZE) - of PF) - (IPLUS (ffetch - (STREAM COFFSET) - of PF) - BYTESLEFT))) - [freplace (TEXTSTREAM CHARSLEFT) of STREAM with - (IDIFFERENCE BYTESLEFT - (IDIFFERENCE (ffetch - (STREAM CBUFSIZE) - of STREAM) - (ffetch (STREAM - COFFSET - ) - of STREAM] - (freplace (TEXTSTREAM REALFILE) of STREAM with PF) - (replace (TEXTSTREAM FATSTREAMP) of STREAM with FATP) - (* ; - "Mark the stream, if it contains fat characters for this piece.") - (replace (STREAM BINABLE) of STREAM with (NOT FATP)) - (* ; - "A stream that has fat chars can't use the micrododed BIN.") - (* ; - "And return the next character in line") - (RETURN CH]) - -(\TEDIT.TEXTBIN.NEW.PAGE - [LAMBDA (STREAM SPLITCHAR) (* ; "Edited 31-May-91 14:21 by jds") - - (* * Handle crossing a file-page boundary within TEXTBIN) - - (* If SPLITCHAR is non-NIL, we've already read the first byte of a two-byte - character, and only need to read the second byte. - Otherwise, this function will read 2 bytes for a fat character.) - - (PROG ((FILE (fetch (TEXTSTREAM REALFILE) of STREAM)) - CH) (* Get the STREAM which describes - the file for real) - [COND - ((IEQP (fetch (STREAM ACCESSBITS) of FILE) - NoBits) (* The file was closed for some - reason; reopen it.) - (SETQ FILE (\GETSTREAM (OPENFILE (fetch (STREAM FULLNAME) of FILE) - 'INPUT) - 'INPUT] - (replace (STREAM COFFSET) of FILE with (fetch (STREAM CBUFSIZE) - of FILE)) - (* Force it to do a page switch for - us) - (SETQ CH (\BIN FILE)) (* Get the next character in the - usual manner) - (replace (STREAM CPPTR) of STREAM with (fetch (STREAM CPPTR) of FILE)) - (* Steal the fields we need to - simulate that stream) - (replace (STREAM COFFSET) of STREAM with (fetch (STREAM COFFSET) - of FILE)) - (replace (STREAM CPAGE) of STREAM with (fetch (STREAM CPAGE) of FILE)) - (replace (STREAM CBUFSIZE) of STREAM with (IMIN (fetch (TEXTSTREAM - CHARSLEFT) - of STREAM) - (fetch (STREAM CBUFSIZE) - of FILE))) - (* Can't read farther than - end-of-piece, tho) - (replace (TEXTSTREAM CHARSLEFT) of STREAM with (IDIFFERENCE (fetch - (TEXTSTREAM - CHARSLEFT) - of STREAM) - (fetch (STREAM - CBUFSIZE - ) - of STREAM))) - (COND - [(AND (fetch (TEXTSTREAM FATSTREAMP) of STREAM) - (NOT SPLITCHAR)) - - (* This piece contains fat characters. Need to grab a second byte from the - file, and construct a 16-bit character) - - (RETURN (LOGOR (UNFOLD CH 256) - (\PAGEDBIN STREAM] - (T (* Regular, 8-bit characters. - Just return the one we BINned.) - - (* or we only need the second byte, since the first byte was on the prior page.) - - (RETURN CH]) -) -(DEFINEQ - -(\TEXTPEEKBIN - [LAMBDA (STREAM NOERRORFLG) (* ; "Edited 28-Mar-94 15:34 by jds") - (* ; "DO PEEKBIN for a text stream") - (PROG (CH FILE STR PF PS PC PO SUBSTREAM) - (SETQ PC (fetch (TEXTSTREAM PIECE) of STREAM)) - (COND - [(ILESSP (fetch (STREAM COFFSET) of STREAM) - (fetch (STREAM CBUFSIZE) of STREAM)) - (* ; - "Simple case -- just do the usual PEEKBIN") - (COND - ((AND PC (fetch (PIECE POBJ) of PC)) - (RETURN (fetch (PIECE POBJ) of PC))) - [(fetch (TEXTSTREAM FATSTREAMP) of STREAM) - (* ; - "This is a 16 bit PEEKBIN. Grab two chars...") - (RETURN (COND - [(\EOFP STREAM) - (COND - (NOERRORFLG NIL) - (T (\PEEKBIN STREAM] - ((ILESSP (fetch (STREAM COFFSET) of STREAM) - (SUB1 (fetch (STREAM CBUFSIZE) of STREAM))) - (* ; - "We're sure of staying on the same page. Just grab the characters") - (PROG1 (LOGOR (UNFOLD (\PAGEDBIN STREAM) - 256) - (\PAGEDPEEKBIN STREAM NOERRORFLG)) - (\PAGEDBACKFILEPTR STREAM))) - (T (SETQ PS (fetch (STREAM F1) of STREAM)) - (replace (STREAM COFFSET) of PS with (fetch - (STREAM COFFSET) - of STREAM)) - (PROG1 (LOGOR (UNFOLD (\PAGEDBIN PS) - 256) - (\PAGEDPEEKBIN PS NOERRORFLG)) - (\PAGEDBACKFILEPTR PS] - (T (RETURN (\PAGEDPEEKBIN STREAM NOERRORFLG] - [PC (* ; - "We've either hit a page bound in a file, or a piece bound.") - (RETURN (COND - [(ZEROP (fetch (TEXTSTREAM CHARSLEFT) of STREAM)) - (* ; "Time for a new piece.") - (SETQ PC (replace (TEXTSTREAM PIECE) of STREAM - with (fetch (PIECE NEXTPIECE) of PC))) - (* ; - "Move to the next piece in the chain") - (COND - [PC (replace (TEXTSTREAM CURRENTLOOKS) of STREAM - with (\TEDIT.APPLY.STYLES (fetch (PIECE PLOOKS) - of PC) - PC - (fetch (TEXTSTREAM TEXTOBJ) of STREAM) - )) - (COND - [(SETQ PO (fetch (PIECE POBJ) of PC)) - (replace (STREAM BINABLE) of STREAM with NIL) - (freplace (STREAM CBUFSIZE) of STREAM - with (fetch (PIECE PLEN) of PC)) - (freplace (STREAM COFFSET) of STREAM with 0) - (COND - (SUBSTREAM (* ; - "There is a stream below this one, to feed chars upward.") - (\SETUPGETCH 1 (fetch (TEXTSTREAM TEXTOBJ) - of SUBSTREAM)) - (freplace (TEXTSTREAM CHARSLEFT) of STREAM - with (fetch (PIECE PLEN) of PC)) - (freplace (STREAM CPAGE) of STREAM - with 0) - (freplace (TEXTSTREAM PCSTARTCH) of STREAM - with 0) - (freplace (TEXTSTREAM PCSTARTPG) of STREAM - with 0) - (replace (TEXTSTREAM CURRENTPARALOOKS) - of STREAM with (fetch (TEXTSTREAM - - CURRENTPARALOOKS - ) - of SUBSTREAM)) - (replace (TEXTSTREAM CURRENTLOOKS) of - STREAM - with (fetch (TEXTSTREAM CURRENTLOOKS) - of SUBSTREAM)) - (RETURN (\BIN SUBSTREAM))) - (T (replace (TEXTSTREAM CHARSLEFT) of STREAM - with 0) - (RETURN PO] - ((SETQ PS (fetch (PIECE PSTR) of PC)) - (* ; "This piece lives in a string.") - (\TEDIT.TEXTBIN.STRINGSETUP 0 (fetch (PIECE PLEN) - of PC) - STREAM PS) - - (* ;; "Set the stream up so that it will use PS for BINs, starting at offset 0 (the front of the piece), and will run for as many chars as there are in the piece.") - - (\PEEKBIN STREAM NOERRORFLG)) - ((SETQ PF (fetch (PIECE PFILE) of PC)) - (* ; "This piece lives on a file.") - (\TEDIT.TEXTBIN.FILESETUP PC 0 (fetch (PIECE PLEN) - of PC) - STREAM PF (fetch (PIECE PFATP) of PC) - 'PEEKBIN NOERRORFLG)) - (T (ERROR "CAN'T GET TO NEXT PIECE"] - (NOERRORFLG (* ; - "There are no more pieces. Punt gracefully") - (RETURN NIL)) - (T (* ; "He wants it the hard way.") - (APPLY* (fetch (STREAM ENDOFSTREAMOP) of STREAM) - STREAM] - (T (* ; - "Need to move to the next page in a file.") - (RETURN (\TEDIT.PEEKBIN.NEW.PAGE STREAM NOERRORFLG] - (NOERRORFLG (* ; - "There are no more pieces. Punt gracefully") - (RETURN NIL)) - (T (* ; "He wants it the hard way.") - (APPLY* (fetch (STREAM ENDOFSTREAMOP) of STREAM) - STREAM]) - -(\TEDIT.PEEKBIN.NEW.PAGE - [LAMBDA (STREAM NOERRORFLG) (* ; "Edited 31-May-91 14:21 by jds") - - (* * Handle crossing a file-page boundary within \TEXTPEEKBIN) - - (* If SPLITCHAR is non-NIL, we've already read the first byte of a two-byte - character, and only need to read the second byte. - Otherwise, this function will read 2 bytes for a fat character.) - - (PROG ((FILE (fetch (TEXTSTREAM REALFILE) of STREAM)) - CH) (* Get the STREAM which describes - the file for real) - [COND - ((IEQP (fetch (STREAM ACCESSBITS) of FILE) - NoBits) (* The file was closed for some - reason; reopen it.) - (SETQ FILE (\GETSTREAM (OPENFILE (fetch (STREAM FULLNAME) of FILE) - 'INPUT) - 'INPUT] - (replace (STREAM COFFSET) of FILE with (fetch (STREAM CBUFSIZE) - of FILE)) - (* Force it to do a page switch for - us) - [SETQ CH (COND - [(\EOFP FILE) - (COND - (NOERRORFLG NIL) - (T (\PEEKBIN FILE] - ((fetch (TEXTSTREAM FATSTREAMP) of STREAM) - (PROG1 (LOGOR (UNFOLD (\PAGEDBIN FILE) - 256) - (\PAGEDPEEKBIN FILE NOERRORFLG)) - (\PAGEDBACKFILEPTR FILE))) - (T (\PEEKBIN FILE NOERRORFLG] (* Get the next character in the - usual manner) - (replace (STREAM CPPTR) of STREAM with (fetch (STREAM CPPTR) of FILE)) - (* Steal the fields we need to - simulate that stream) - (replace (STREAM COFFSET) of STREAM with (fetch (STREAM COFFSET) - of FILE)) - (replace (STREAM CPAGE) of STREAM with (fetch (STREAM CPAGE) of FILE)) - (replace (STREAM CBUFSIZE) of STREAM with (IMIN (fetch (TEXTSTREAM - CHARSLEFT) - of STREAM) - (fetch (STREAM CBUFSIZE) - of FILE))) - (* Can't read farther than - end-of-piece, tho) - (replace (TEXTSTREAM CHARSLEFT) of STREAM with (IDIFFERENCE (fetch - (TEXTSTREAM - CHARSLEFT) - of STREAM) - (fetch (STREAM - CBUFSIZE - ) - of STREAM))) - (RETURN CH]) -) - - - -(* ; "Support for TEXTPROP") - -(DEFINEQ - -(CGETTEXTPROP - [LAMBDA (TEXTOBJ PROP) (* ; "Edited 20-Oct-87 12:36 by jds") - - (* ;; "compiles calls on TEXTPROP that are fetching values. This needs to be changed whenever GETTEXTPROP is changed.") - - (SELECTQ PROP - ((READONLY READ-ONLY) - `(fetch (TEXTOBJ TXTREADONLY) of ,TEXTOBJ)) - `(LISTGET (fetch (TEXTOBJ EDITPROPS) of ,TEXTOBJ) - ',PROP]) - -(CTEXTPROP - [LAMBDA (FORMTAIL) (* ; "Edited 31-May-91 13:59 by jds") - - (* ;; "compiles calls to TEXTPROP") - - (COND - ((NULL (CDR FORMTAIL)) (* ; "less that 2 args") - (printout T "Possible error in call to TEXTPROP: less than 2 args" T (LIST 'TEXTPROP FORMTAIL - ) - T) - (CGETTEXTPROP (LIST 'TEXTOBJ (CAR FORMTAIL)) - NIL)) - ((NOT (EQ (CAADR FORMTAIL) - 'QUOTE)) (* ; "property is not quoted.") - 'IGNOREMACRO) - [(NULL (CDDR FORMTAIL)) (* ; "fetching a TEXTPROP property.") - (CGETTEXTPROP (LIST 'TEXTOBJ (CAR FORMTAIL)) - (CADR (CADR FORMTAIL] - (T (* ; "storing a window property") - (LET ((TEXTOBJ (CAR FORMTAIL)) - (PROP (CDADR FORMTAIL)) - (VAL (CADDR FORMTAIL))) - [SELECTQ PROP - ((READONLY READ-ONLY) - `(REPLACE (TEXTOBJ TXTREADONLY) OF ,TEXTOBJ WITH ,VAL)) - `(COND - [(FETCH (TEXTOBJ EDITPROPS) OF (TEXTOBJ ,TEXTOBJ)) - (LISTPUT (FETCH (TEXTOBJ EDITPROPS) OF (TEXTOBJ ,TEXTOBJ)) - ',PROP - ',VAL] - (T (REPLACE (TEXTOBJ EDITPROPS) OF (TEXTOBJ ,TEXTOBJ) - WITH (LIST ,PROP ,VAL] - (LIST 'COND (LIST (LIST 'FETCH 'EDITPROPS 'OF (LIST 'TEXTOBJ (CAR FORMTAIL))) - (LIST 'LISTPUT (LIST 'FETCH 'EDITPROPS 'OF (LIST 'TEXTOBJ - (CAR FORMTAIL))) - (CADR FORMTAIL) - (CADDR FORMTAIL))) - (LIST T (LIST 'REPLACE 'EDITPROPS 'OF (LIST 'TEXTOBJ (CAR FORMTAIL)) - 'WITH - (LIST 'LIST (CADR FORMTAIL) - (CADDR FORMTAIL]) - -(GETTEXTPROP - [LAMBDA (TEXTOBJ PROP) (* ; "Edited 9-Feb-89 11:20 by jds") - - (* ;; "Gets values for document properties. Used by TEXTPROP.") - - (SELECTQ PROP - ((READONLY READ-ONLY) - (FETCH (TEXTOBJ TXTREADONLY) OF TEXTOBJ)) - ((BEING-EDITED ACTIVE) - (FETCH (TEXTOBJ TXTEDITING) OF TEXTOBJ)) - ((NO-NS-CHARS NONSCHARS NO-NSCHARS) - (FETCH (TEXTOBJ TXTNONSCHARS) OF TEXTOBJ)) - (LISTGET (fetch (TEXTOBJ EDITPROPS) of TEXTOBJ) - PROP]) - -(PUTTEXTPROP - [LAMBDA (TEXTOBJ PROP VALUE) (* ; "Edited 9-Feb-89 11:19 by jds") - (* ; - "put a value on prop list for a textobj") - (SELECTQ PROP - ((READONLY READ-ONLY) - (PROG1 (fetch (TEXTOBJ TXTREADONLY) of TEXTOBJ) - (replace (TEXTOBJ TXTREADONLY) of TEXTOBJ with VALUE))) - ((BEING-EDITED ACTIVE) - (PROG1 (fetch (TEXTOBJ TXTEDITING) of TEXTOBJ) - (replace (TEXTOBJ TXTEDITING) of TEXTOBJ with VALUE))) - ((NO-NS-CHARS NONSCHARS NO-NSCHARS) - (PROG1 (fetch (TEXTOBJ TXTNONSCHARS) of TEXTOBJ) - (replace (TEXTOBJ TXTNONSCHARS) of TEXTOBJ with VALUE))) - (COND - ((fetch (TEXTOBJ EDITPROPS) of (TEXTOBJ TEXTOBJ)) - (PROG1 (LISTGET (ffetch (TEXTOBJ EDITPROPS) of (TEXTOBJ TEXTOBJ)) - PROP) - (LISTPUT (ffetch (TEXTOBJ EDITPROPS) of (TEXTOBJ TEXTOBJ)) - PROP VALUE))) - (T (freplace (TEXTOBJ EDITPROPS) of (TEXTOBJ TEXTOBJ) with (LIST PROP VALUE)) - NIL]) - -(TEXTPROP - [LAMBDA X (* ; "Edited 9-Feb-89 11:20 by jds") - - (* ;; "general top level entry for both fetching and setting window properties.") - - (COND - ((IGREATERP X 2) - (PUTTEXTPROP (TEXTOBJ (ARG X 1)) - (ARG X 2) - (ARG X 3))) - ((EQ X 2) - (GETTEXTPROP (TEXTOBJ (ARG X 1)) - (ARG X 2))) - (T (\ILLEGAL.ARG NIL]) -) - - - -(* ;; -"Support for error handling: The old error handler for the stream-not-open error. This is here, because you only want to do this ONCE, even if you load TEXTOFD multiple times (as, e.g., in development)" -) - - -(RPAQ? *TEDIT-OLD-STREAM-ERROR-HANDLER* (CONDITION-HANDLER 'XCL:STREAM-NOT-OPEN)) -(DECLARE%: DONTEVAL@LOAD DOCOPY - -(\TEXTINIT) -) -(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS - -(ADDTOVAR NLAMA ) - -(ADDTOVAR NLAML ) - -(ADDTOVAR LAMA TEXTPROP) -) -(PUTPROPS TEXTOFD COPYRIGHT ("John Sybalsky & Xerox Corporation" 1983 1984 1985 1986 1987 1988 1989 -1990 1991 1993 1994 1995)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (3000 52200 (COPYTEXTSTREAM 3010 . 6076) (OPENTEXTSTREAM 6078 . 20955) (REOPENTEXTSTREAM - 20957 . 21379) (TEDIT.STREAMCHANGEDP 21381 . 21679) (TEXTSTREAMP 21681 . 21995) (TXTFILE 21997 . -22442) (\DELETECH 22444 . 33252) (\SETUPGETCH 33254 . 40533) (\TEDIT.REOPEN.STREAM 40535 . 42045) ( -\TEDIT.COPYTEXTSTREAM.PIECEMAPFN 42047 . 44485) (\TEXTINIT 44487 . 50093) (\TEXTMARK 50095 . 50843) ( -\TEXTTTYBOUT 50845 . 52198)) (52201 77694 (\INSERTCH 52211 . 75998) (\INSERTCR 76000 . 77692)) (77760 -97944 (\CHTOPC 77770 . 78959) (\CHTOPCNO 78961 . 80223) (\CLEARPCTB 80225 . 81021) ( -\CREATEPIECEORSTREAM 81023 . 83865) (\DELETEPIECE 83867 . 84780) (\FINDPIECE 84782 . 85148) ( -\INSERTPIECE 85150 . 88160) (\MAKEPCTB 88162 . 90077) (\SPLITPIECE 90079 . 97038) (\INSERT.FIRST.PIECE - 97040 . 97942)) (97996 121422 (\TEXTCLOSEF 98006 . 99233) (\TEXTCLOSEF-SUBTREE 99235 . 99941) ( -\TEXTDSPFONT 99943 . 100935) (\TEXTEOFP 100937 . 102296) (\TEXTGETEOFPTR 102298 . 102508) ( -\TEXTGETFILEPTR 102510 . 104573) (\TEXTOPENF 104575 . 105405) (\TEXTOPENF-SUBTREE 105407 . 106208) ( -\TEXTOUTCHARFN 106210 . 106558) (\TEXTBACKFILEPTR 106560 . 112461) (\TEXTBOUT 112463 . 115811) ( -\TEDITOUTCHARFN 115813 . 117059) (\TEXTSETEOF 117061 . 117570) (\TEXTSETFILEPTR 117572 . 118797) ( -\TEXTDSPXPOSITION 118799 . 119250) (\TEXTDSPYPOSITION 119252 . 119797) (\TEXTLEFTMARGIN 119799 . -120282) (\TEXTRIGHTMARGIN 120284 . 121120) (\TEXTDSPCHARWIDTH 121122 . 121218) (\TEXTDSPSTRINGWIDTH -121220 . 121316) (\TEXTDSPLINEFEED 121318 . 121420)) (121423 153726 (\TEXTBIN 121433 . 138219) ( -\TEDIT.TEXTBIN.STRINGSETUP 138221 . 143934) (\TEDIT.TEXTBIN.FILESETUP 143936 . 149438) ( -\TEDIT.TEXTBIN.NEW.PAGE 149440 . 153724)) (153727 167010 (\TEXTPEEKBIN 153737 . 162876) ( -\TEDIT.PEEKBIN.NEW.PAGE 162878 . 167008)) (167048 172266 (CGETTEXTPROP 167058 . 167534) (CTEXTPROP -167536 . 169880) (GETTEXTPROP 169882 . 170477) (PUTTEXTPROP 170479 . 171804) (TEXTPROP 171806 . 172264 -))))) -STOP diff --git a/obsolete/library/new/TEXTOFD.LCOM b/obsolete/library/new/TEXTOFD.LCOM deleted file mode 100644 index 563ba393b0ccd6a09c694f62452b161c0753cc30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38047 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.;2 32679 previous date%: "23-Jul-90 17:49:19" {DSK}peach>matsuda>NEW-SKETCH-COLOR.;1) (* ; " Copyright (c) 1990 by Fuji Xerox Co., Ltd. All rights reserved. ") (PRETTYCOMPRINT NEW-SKETCH-COLORCOMS) (RPAQQ NEW-SKETCH-COLORCOMS [(P (MOVD 'CIRCLE.DRAWFN 'ORG.CIRCLE.DRAWFN) (MOVD 'CLOSED.WIRE.DRAWFN 'ORG.CLOSED.WIRE.DRAWFN) (MOVD 'BOX.DRAWFN1 'ORG.BOX.DRAWFN1) (SETQ SKETCHINCOLORFLG T)) (FNS \BBTCURVEPT BMOBJ.DISPLAYFN BITMAPOBJ.SNAPW OPPOSITECOLOR \SCALEDBITBLT.DISPLAY BITMAPELT.INPUTFN GET.BITMAP.POSITION BOX.DRAWFN1 CIRCLE.DRAWFN CLOSED.WIRE.DRAWFN SKETCHINCOLORP NEW.READCOLOR1 SK.FIGUREIMAGE) (P (MOVD 'READCOLOR1 'ORG.READCOLOR1) (MOVD 'NEW.READCOLOR1 'READCOLOR1) (REPLACE (IMAGEOPS IMFILLPOLYGON) OF \8DISPLAYIMAGEOPS WITH (FUNCTION POLYSHADE.DISPLAY)) (REPLACE (IMAGEOPS IMSCALEDBITBLT) OF \8DISPLAYIMAGEOPS WITH (FUNCTION \SCALEDBITBLT.DISPLAY]) (MOVD 'CIRCLE.DRAWFN 'ORG.CIRCLE.DRAWFN) (MOVD 'CLOSED.WIRE.DRAWFN 'ORG.CLOSED.WIRE.DRAWFN) (MOVD 'BOX.DRAWFN1 'ORG.BOX.DRAWFN1) (SETQ SKETCHINCOLORFLG T) (DEFINEQ (\BBTCURVEPT [LAMBDA (X Y BBT LEFT BRUSHWIDTH LEFTMINUSBRUSH RIGHTPLUS1 NBITSRIGHTPLUS1 TOPMINUSBRUSH DestinationBitMap BRUSHHEIGHT BOTTOMMINUSBRUSH TOP BRUSHBASE DESTINATIONBASE RASTERWIDTH BRUSHRASTERWIDTH COLORBRUSHBASE NBITS DISPLAYDATA) (* ; "Edited 24-May-90 10:03 by matsuda") (* ;; "Called by \CURVEPT macro. Draws a brush point by bitblting BRUSHBM to point X,Y in DestinationBitMap. BBT is a BitBlt table where everything is already set except the source and destination addresses, width and height. In other words, only the easy stuff") (* ; "set the width fields of the bbt") [PROG (CLIPPEDTOP STY) [COND [(ILEQ Y TOPMINUSBRUSH) (* ;  "the top part of the brush is visible") (SETQ CLIPPEDTOP (IPLUS Y BRUSHHEIGHT)) (replace PBTSOURCE of BBT with BRUSHBASE) (freplace PBTHEIGHT of BBT with (IMIN BRUSHHEIGHT (IDIFFERENCE Y BOTTOMMINUSBRUSH] (T (* ; "only the bottom is visible") (SETQ CLIPPEDTOP TOP) [replace PBTSOURCE of BBT with (\ADDBASE BRUSHBASE (ITIMES BRUSHRASTERWIDTH (SETQ STY (IDIFFERENCE Y TOPMINUSBRUSH] (freplace PBTHEIGHT of BBT with (IDIFFERENCE (IMIN BRUSHHEIGHT (IDIFFERENCE Y BOTTOMMINUSBRUSH )) STY] (freplace PBTDEST of BBT with (\ADDBASE DESTINATIONBASE (ITIMES RASTERWIDTH (\SFInvert DestinationBitMap CLIPPEDTOP] [COND (COLORBRUSHBASE [COND [(ILESSP X LEFT) (* ;  "only the right part of the brush is visible") (* ;  "FOR NOW BRUTE FORCE WITH NBITS CHECK") [freplace PBTDESTBIT of BBT with (COND ((EQ NBITS 4) (LLSH LEFT 2)) (T (LLSH LEFT 3] (freplace PBTSOURCEBIT of BBT with (IDIFFERENCE BRUSHWIDTH (freplace PBTWIDTH of BBT with (COND ((EQ NBITS 4) (LLSH (IDIFFERENCE X LEFTMINUSBRUSH) 2)) (T (LLSH (IDIFFERENCE X LEFTMINUSBRUSH) 3] (T (* ; "left edge is visible") [freplace PBTDESTBIT of BBT with (SETQ X (COND ((EQ NBITS 4) (LLSH X 2)) (T (LLSH X 3] (freplace PBTSOURCEBIT of BBT with 0) (* ;  "set width to the amount that is visible") (freplace PBTWIDTH of BBT with (IMIN BRUSHWIDTH (IDIFFERENCE NBITSRIGHTPLUS1 X] (COND ((NEQ (ffetch DDOPERATION of DISPLAYDATA) 'INVERT) (* ;  "if color brush is used, the ground must be cleared before the brush is put in.") (\SETPBTFUNCTION BBT (ffetch DDSOURCETYPE of DISPLAYDATA) 'ERASE) (\PILOTBITBLT BBT 0) (* ;  "reset the source to point to the color bitmap.") )) [COND ((ILEQ Y TOPMINUSBRUSH) (* ;  "the top part of the brush is visible") (freplace PBTSOURCE of BBT with COLORBRUSHBASE)) (T (* ; "only the bottom is visible") (freplace PBTSOURCE of BBT with (\ADDBASE COLORBRUSHBASE (ITIMES BRUSHRASTERWIDTH (IDIFFERENCE Y TOPMINUSBRUSH] (\SETPBTFUNCTION BBT (ffetch DDSOURCETYPE of DISPLAYDATA) (ffetch DDOPERATION of DISPLAYDATA))) (T (COND [(ILESSP X LEFT) (* ;  "only the right part of the brush is visible") (freplace PBTDESTBIT of BBT with LEFT) (freplace PBTSOURCEBIT of BBT with (IDIFFERENCE BRUSHWIDTH (freplace PBTWIDTH of BBT with (IDIFFERENCE X LEFTMINUSBRUSH ] (T (* ; "left edge is visible") (freplace PBTDESTBIT of BBT with X) (freplace PBTSOURCEBIT of BBT with 0) (* ;  "set width to the amount that is visible") (freplace PBTWIDTH of BBT with (IMIN BRUSHWIDTH (IDIFFERENCE RIGHTPLUS1 X ] (\PILOTBITBLT BBT 0]) (BMOBJ.DISPLAYFN [LAMBDA (IMAGEOBJ IMAGE.STREAM) (* ; "Edited 18-Apr-90 16:28 by matsuda") (* ;; "Display a bitmap IMAGEOBJ on IMAGE.STREAM. Scales and rotates it if appropriate, and moves it down by DESCENT.") (PROG ([FACTOR (fetch (BITMAPOBJ BMOBJSCALEFACTOR) of (IMAGEOBJPROP IMAGEOBJ 'OBJECTDATUM] [BITMAP (fetch (BITMAPOBJ BITMAP) of (IMAGEOBJPROP IMAGEOBJ 'OBJECTDATUM] (CACHE (IMAGEOBJPROP IMAGEOBJ 'CACHED.BITMAP)) [DESCENT (fetch (BITMAPOBJ BMOBJDESCENT) of (IMAGEOBJPROP IMAGEOBJ 'OBJECTDATUM] (STREAM-SCALE (DSPSCALE NIL IMAGE.STREAM)) SHRUNK.BITMAP) (RELMOVETO 0 [IMINUS (FIXR (FTIMES STREAM-SCALE (OR DESCENT 0] IMAGE.STREAM) (SELECTQ (IMAGESTREAMTYPE IMAGE.STREAM) (INTERPRESS (* ;; "Printing to an Interpress stream, so use the specialized method.") (SHOWBITMAP.IP IMAGE.STREAM BITMAP NIL FACTOR 0)) ((DISPLAY PRESS) (* ;;  "This is the default case, press display and everyone else prints the junky shrunk bitmap") (COND ((NOT (SETQ SHRUNK.BITMAP CACHE)) [COND [(LEQ FACTOR 1.0) (* ;  "We're shrinking the bitmap. Create a shrunk image for display") (SETQ SHRUNK.BITMAP (SHRINKBITMAP BITMAP (FQUOTIENT 1.0 FACTOR) (FQUOTIENT 1.0 FACTOR] (T (* ;  "We're expanding it. Create a bigger one.") (SETQ SHRUNK.BITMAP (EXPANDBITMAP BITMAP FACTOR FACTOR] (IMAGEOBJPROP IMAGEOBJ 'CACHED.BITMAP SHRUNK.BITMAP))) [BITBLT SHRUNK.BITMAP NIL NIL IMAGE.STREAM (DSPXPOSITION NIL IMAGE.STREAM) (DSPYPOSITION NIL IMAGE.STREAM) (FIXR (FTIMES FACTOR (BITMAPWIDTH BITMAP))) (FIXR (FTIMES FACTOR (BITMAPHEIGHT BITMAP]) (PROGN (* ;; "This is the default case--Call SCALEDBITBLT") (SCALEDBITBLT BITMAP 0 0 IMAGE.STREAM (DSPXPOSITION NIL IMAGE.STREAM) (DSPYPOSITION NIL IMAGE.STREAM) (BITMAPWIDTH BITMAP) (BITMAPHEIGHT BITMAP) 'INPUT 'PAINT NIL NIL FACTOR]) (BITMAPOBJ.SNAPW [LAMBDA NIL (* ; "Edited 12-Apr-90 09:09 by matsuda") (* * makes an image object of a prompted for region of the screen.) (PROG ((REG (GETREGION)) BM) [SETQ BM (BITMAPCREATE (fetch (REGION WIDTH) of REG) (fetch (REGION HEIGHT) of REG) (BITSPERPIXEL (SCREENBITMAP \CURSORSCREEN] (BITBLT (SCREENBITMAP \CURSORSCREEN) (fetch (REGION LEFT) of REG) (fetch (REGION BOTTOM) of REG) BM 0 0 NIL NIL 'INPUT 'REPLACE) (COPYINSERT (BITMAPTEDITOBJ BM 1 0)) (RETURN]) (OPPOSITECOLOR [LAMBDA (COLOR BITSPERPIXEL) (* ; "Edited 23-May-90 15:05 by matsuda") (IDIFFERENCE (MAXIMUMCOLOR BITSPERPIXEL) (COLORNUMBERP COLOR BITSPERPIXEL]) (\SCALEDBITBLT.DISPLAY [LAMBDA (SOURCEBITMAP SOURCELEFT SOURCEBOTTOM DESTINATION DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION CLIPPEDSOURCELEFT CLIPPEDSOURCEBOTTOM SCALE) (* ; "Edited 22-May-90 15:02 by matsuda") (LET (BITMAP REGION) (IF (NULL SCALE) THEN (SETQ SCALE 1)) (IF (WINDOWP SOURCEBITMAP) THEN (SETQ REGION (DSPCLIPPINGREGION NIL SOURCEBITMAP)) (IF (NULL WIDTH) THEN (SETQ WIDTH (FETCH (REGION WIDTH) OF REGION))) (IF (NULL HEIGHT) THEN (SETQ HEIGHT (FETCH (REGION HEIGHT) OF REGION))) ELSEIF (BITMAPP SOURCEBITMAP) THEN (IF (NULL WIDTH) THEN (SETQ WIDTH (BITMAPWIDTH SOURCEBITMAP))) (IF (NULL HEIGHT) THEN (SETQ HEIGHT (BITMAPHEIGHT SOURCEBITMAP))) ELSE (SHOULDNT)) (SETQ BITMAP (BITMAPCREATE WIDTH HEIGHT (FETCH SCBITSPERPIXEL OF \CURSORSCREEN))) (BITBLT SOURCEBITMAP SOURCELEFT SOURCEBOTTOM BITMAP) (BITBLT (EXPANDBITMAP BITMAP SCALE SCALE) NIL NIL DESTINATION DESTINATIONLEFT DESTINATIONBOTTOM (TIMES WIDTH SCALE) (TIMES HEIGHT SCALE) SOURCETYPE OPERATION TEXTURE CLIPPINGREGION]) (BITMAPELT.INPUTFN [LAMBDA (WINDOW) (* ; "Edited 22-May-90 12:56 by matsuda") (* gets a region of the screen and  makes it a scalable bitmap.) (PROG ((REGION (GETREGION 4 4)) BM POS) (OR (REGIONP REGION) (RETURN)) (SETQ BM (BITMAPCREATE (fetch (REGION WIDTH) of REGION) (fetch (REGION HEIGHT) of REGION) (FETCH SCBITSPERPIXEL OF \CURSORSCREEN))) (BITBLT (SCREENBITMAP \CURSORSCREEN) (fetch (REGION LEFT) of REGION) (fetch (REGION BOTTOM) of REGION) BM 0 0 (fetch (REGION WIDTH) of REGION) (fetch (REGION HEIGHT) of REGION)) (OR (SETQ POS (GET.BITMAP.POSITION WINDOW BM NIL "Place the bitmap image.")) (RETURN)) (RETURN (SK.BITMAP.CREATE BM (SK.MAP.INPUT.PT.TO.GLOBAL POS WINDOW) (VIEWER.SCALE WINDOW]) (GET.BITMAP.POSITION [LAMBDA (WINDOW BITMAP OPERATION MSG XOFFSET YOFFSET)(* ; "Edited 22-May-90 12:53 by matsuda") (* gets a position by tracking with a bitmap The spec returns is actually  (ONGRID? position) so that caller can tell whether it was placed on grid or  not.) (PROG (BUFFER.BITMAP WIDTH HEIGHT) (SETQ WIDTH (BITMAPWIDTH BITMAP)) (SETQ HEIGHT (BITMAPHEIGHT BITMAP)) (SETQ BUFFER.BITMAP (BITMAPCREATE WIDTH HEIGHT (FETCH SCBITSPERPIXEL OF \CURSORSCREEN ))) (STATUSPRINT WINDOW " " MSG) (RETURN (SK.TRACK.BITMAP1 WINDOW BITMAP BUFFER.BITMAP WIDTH HEIGHT (OR OPERATION 'PAINT) XOFFSET YOFFSET]) (BOX.DRAWFN1 [LAMBDA (REG SIZE WIN WINREG OPERATION DASHING TEXTURE OUTLINECOLOR FILLINGCOLOR) (* ; "Edited 25-May-90 14:18 by matsuda") (* draws a box. Used by both box and  text box elements.) (COND ((OR (NULL WINREG) (REGIONSINTERSECTP WINREG REG)) (COND ((AND (SKETCHINCOLORP) (OR FILLINGCOLOR TEXTURE)) (* call the filling routine that  does color.) (FILLPOLYGON (KNOTS.OF.REGION REG SIZE) FILLINGCOLOR WIN)) (TEXTURE (DSPFILL REG (COND ((EQ (DSPOPERATION NIL WIN) 'ERASE) (* use black in case the window  moved because of texture to window  alignment bug.) BLACKSHADE) (T TEXTURE)) (SK.TRANSLATE.MODE OPERATION WIN) WIN)) (FILLINGCOLOR (* if no texture, use the color.) (DSPFILL REG (TEXTUREOFCOLOR FILLINGCOLOR) OPERATION WIN))) (* code to fix white space bug in Interpress.  It works but Masters are larger and the one I tried wouldn't print.  (SELECTQ (IMAGESTREAMTYPE WIN) ((NIL DISPLAY PRESS)  (* special case DISPLAY for speed and PRESS because rounded corners don't work  for large brushes.) (SK.DRAWAREABOX (fetch  (REGION LEFT) of REG) (fetch (REGION BOTTOM) of REG)  (fetch (REGION WIDTH) of REG) (fetch (REGION HEIGHT) of REG) SIZE OPERATION WIN  DASHING OUTLINECOLOR)) (PROG ((LFT (fetch  (REGION LEFT) of REG)) (BTM (fetch (REGION BOTTOM) of REG))  (TOP (fetch (REGION TOP) of REG)) (RGHT  (fetch (REGION RIGHT) of REG))) (DRAWCURVE  (LIST (CREATEPOSITION LFT BTM) (CREATEPOSITION LFT TOP)  (CREATEPOSITION RIGHT TOP) (CREATEPOSITION RIGHT BTM)) T  (create BRUSH BRUSHSHAPE _ (QUOTE ROUND) BRUSHSIZE _ SIZE BRUSHCOLOR _  OUTLINECOLOR) DASHING WIN)))) (SK.DRAWAREABOX (fetch (REGION LEFT) of REG) (fetch (REGION BOTTOM) of REG) (fetch (REGION WIDTH) of REG) (fetch (REGION HEIGHT) of REG) SIZE (SK.TRANSLATE.MODE OPERATION WIN) WIN DASHING OUTLINECOLOR]) (CIRCLE.DRAWFN [LAMBDA (CIRCLEELT WINDOW REGION) (* ; "Edited 25-May-90 15:36 by matsuda") (* draws a circle from a circle  element.) (PROG ((GCIRCLE (fetch (SCREENELT INDIVIDUALGLOBALPART) of CIRCLEELT)) (LCIRCLE (fetch (SCREENELT LOCALPART) of CIRCLEELT)) CPOS DASHING FILLING) (SETQ CPOS (fetch (LOCALCIRCLE CENTERPOSITION) of LCIRCLE)) (SETQ DASHING (fetch (LOCALCIRCLE LOCALCIRCLEDASHING) of LCIRCLE)) (SETQ FILLING (fetch (LOCALCIRCLE LOCALCIRCLEFILLING) of LCIRCLE)) (COND ((fetch (SKFILLING FILLING.COLOR) of FILLING) (* if the circle is filled with a color call FILLCIRCLE with both the texture  and the color. This allows iris to do its thing before textures and colors are  merged.) (DSPOPERATION (PROG1 (DSPOPERATION (fetch (SKFILLING FILLING.OPERATION) of FILLING) WINDOW) (FILLCIRCLE (fetch (POSITION XCOORD) of CPOS) (fetch (POSITION YCOORD) of CPOS) (fetch (LOCALCIRCLE RADIUS) of LCIRCLE) (fetch (SKFILLING FILLING.COLOR) of FILLING) WINDOW)) WINDOW)) ((fetch (SKFILLING FILLING.TEXTURE) of FILLING) (* if the circle is filled with  texture, call FILLCIRCLE.) (DSPOPERATION (PROG1 (DSPOPERATION (fetch (SKFILLING FILLING.OPERATION) of FILLING) WINDOW) (FILLCIRCLE (fetch (POSITION XCOORD) of CPOS) (fetch (POSITION YCOORD) of CPOS) (fetch (LOCALCIRCLE RADIUS) of LCIRCLE) (COND ((EQ (DSPOPERATION NIL WINDOW) 'ERASE) (* use black in case the window  moved because of texture to window  alignment bug.) BLACKSHADE) (T (fetch (SKFILLING FILLING.TEXTURE) of FILLING))) WINDOW)) WINDOW))) (RETURN (\CIRCLE.DRAWFN1 CPOS (fetch (LOCALCIRCLE RADIUSPOSITION) of LCIRCLE) (fetch (LOCALCIRCLE RADIUS) of LCIRCLE) (fetch (LOCALCIRCLE LOCALCIRCLEBRUSH) of LCIRCLE) DASHING WINDOW]) (CLOSED.WIRE.DRAWFN [LAMBDA (CLOSEDWIREELT WIN REG OPERATION) (* ; "Edited 25-May-90 15:26 by matsuda") (* draws a closed wire element.) (PROG ((GINDVELT (fetch (SCREENELT INDIVIDUALGLOBALPART) of CLOSEDWIREELT)) (LOCALPART (fetch (SCREENELT LOCALPART) of CLOSEDWIREELT)) VARX) (SETQ VARX (fetch (LOCALCLOSEDWIRE LOCALCLOSEDWIREFILLING) of LOCALPART)) [COND ((OR (fetch (SKFILLING FILLING.TEXTURE) of VARX) (fetch (SKFILLING FILLING.COLOR) of VARX)) (* if there isn't any filling, don't  fill.) (FILLPOLYGON (fetch (LOCALCLOSEDWIRE KNOTS) of LOCALPART) [COND ((fetch (SKFILLING FILLING.COLOR) of VARX)) ((SKETCHINCOLORP) VARX) (T (* simulate color) (TEXTUREOFCOLOR (fetch (SKFILLING FILLING.COLOR) of VARX] WIN (COND ((EQ (DSPOPERATION NIL WIN) 'ERASE) (* if the stream is erasing, erase.) 'ERASE) (T (* otherwise use the element's mode.) (fetch (SKFILLING FILLING.OPERATION) of VARX] (OR (EQ (fetch (BRUSH BRUSHSIZE) of (SETQ VARX (fetch (LOCALCLOSEDWIRE LOCALCLOSEDWIREBRUSH ) of LOCALPART ))) 0) (WB.DRAWLINE CLOSEDWIREELT WIN REG OPERATION T (fetch (CLOSEDWIRE CLOSEDWIREDASHING ) of GINDVELT) VARX]) (SKETCHINCOLORP [LAMBDA NIL (* ; "Edited 25-May-90 14:00 by matsuda") (* hook to determine if sketch  should allow color.) (AND SKETCHINCOLORFLG (IGREATERP (FETCH SCBITSPERPIXEL OF \CURSORSCREEN) 1]) (NEW.READCOLOR1 [LAMBDA (MSG ALLOWNONEFLG NOWCOLOR) (* ; "Edited 25-May-90 10:05 by matsuda") (LET ((INITCOLOR (AND NOWCOLOR (INSURE.RGB.COLOR NOWCOLOR T))) COLORINDEX) (SETQ COLORINDEX (PAINTW.READBRUSHTEXTURE)) (COND ((NULL COLORINDEX) INITCOLOR) ((INSURE.RGB.COLOR (ELT (SCREENCOLORMAP NIL) COLORINDEX))) (T INITCOLOR]) (SK.FIGUREIMAGE [LAMBDA (SCRITEMS LIMITREGION REGIONOFINTEREST) (* ; "Edited 22-May-90 13:23 by matsuda") (* returns a bitmap which contains the image of the elements on SCRITEMS.  And a lower left corner.) (RESETFORM (CURSOR WAITINGCURSOR) (PROG (REGION DSPSTREAM BITMAP LEFT BOTTOM LIMITDIM) (COND ((NULL SCRITEMS) (RETURN))) [COND ((SCREENELEMENTP SCRITEMS) (* single item case.) (SETQ REGION (SK.ITEM.REGION SCRITEMS))) (T (SETQ REGION (SK.ITEM.REGION (CAR SCRITEMS))) [for SCITEM in (CDR SCRITEMS) do (SETQ REGION (SK.UNIONREGIONS REGION (SK.ITEM.REGION SCITEM] (* order the elements by priority) (SETQ SCRITEMS (REVERSE (SK.SORT.ELTS.BY.PRIORITY SCRITEMS] (* only some of the points are being  moved, reduce the region to those.) (AND REGIONOFINTEREST (SETQ REGION (OR (INTERSECTREGIONS REGION REGIONOFINTEREST) REGION))) [COND (LIMITREGION (* limit the size of the bitmap. This is used by copy insert functions that do  not know how big the thing coming in is.) (COND ((GREATERP (fetch (REGION WIDTH) of REGION) (SETQ LIMITDIM (fetch (REGION WIDTH) of LIMITREGION))) (* reduce the width picking out the  middle of the region) (replace (REGION LEFT) of REGION with (PLUS (fetch (REGION LEFT) of REGION) (QUOTIENT (DIFFERENCE LIMITDIM (fetch (REGION WIDTH) of REGION)) 2))) (replace (REGION WIDTH) of REGION with LIMITDIM))) (COND ((GREATERP (fetch (REGION HEIGHT) of REGION) (SETQ LIMITDIM (fetch (REGION HEIGHT) of LIMITREGION))) (* reduce the height picking out the  middle of the region) (replace (REGION BOTTOM) of REGION with (PLUS (fetch (REGION BOTTOM) of REGION) (QUOTIENT (DIFFERENCE LIMITDIM (fetch (REGION HEIGHT) of REGION)) 2))) (replace (REGION HEIGHT) of REGION with LIMITDIM] (* ADD1 is used to convert the  possibly floating region coordinates  into fixed.) [SETQ DSPSTREAM (DSPCREATE (SETQ BITMAP (BITMAPCREATE (ADD1 (fetch (REGION WIDTH) of REGION)) (ADD1 (fetch (REGION HEIGHT) of REGION)) (FETCH SCBITSPERPIXEL OF \CURSORSCREEN] (DSPXOFFSET [IMINUS (SETQ LEFT (FIXR (fetch (REGION LEFT) of REGION] DSPSTREAM) (DSPYOFFSET [IMINUS (SETQ BOTTOM (FIXR (fetch (REGION BOTTOM) of REGION] DSPSTREAM) (* this is because the default clipping region is smaller than the clipping  region of the figure in extreme cases.) (DSPCLIPPINGREGION REGION DSPSTREAM) (DSPOPERATION 'PAINT DSPSTREAM) (* to avoid carriage returns.) (DSPRIGHTMARGIN (PLUS 100 (fetch (REGION RIGHT) of REGION)) DSPSTREAM) (DRAW.LOCAL.SKETCH SCRITEMS DSPSTREAM REGION) (RETURN (create SKFIGUREIMAGE SKFIGURE.LOWERLEFT _ (create POSITION XCOORD _ LEFT YCOORD _ BOTTOM) SKFIGURE.BITMAP _ BITMAP]) ) (MOVD 'READCOLOR1 'ORG.READCOLOR1) (MOVD 'NEW.READCOLOR1 'READCOLOR1) (REPLACE (IMAGEOPS IMFILLPOLYGON) OF \8DISPLAYIMAGEOPS WITH (FUNCTION POLYSHADE.DISPLAY)) (REPLACE (IMAGEOPS IMSCALEDBITBLT) OF \8DISPLAYIMAGEOPS WITH (FUNCTION \SCALEDBITBLT.DISPLAY)) (PUTPROPS NEW-SKETCH-COLOR COPYRIGHT ("Fuji Xerox Co., Ltd" 1990)) (DECLARE%: DONTCOPY (FILEMAP (NIL (1340 32231 (\BBTCURVEPT 1350 . 9560) (BMOBJ.DISPLAYFN 9562 . 12391) (BITMAPOBJ.SNAPW 12393 . 13123) (OPPOSITECOLOR 13125 . 13339) (\SCALEDBITBLT.DISPLAY 13341 . 14836) (BITMAPELT.INPUTFN 14838 . 16015) (GET.BITMAP.POSITION 16017 . 16992) (BOX.DRAWFN1 16994 . 19884) (CIRCLE.DRAWFN 19886 . 23179) (CLOSED.WIRE.DRAWFN 23181 . 25493) (SKETCHINCOLORP 25495 . 25922) (NEW.READCOLOR1 25924 . 26394 ) (SK.FIGUREIMAGE 26396 . 32229))))) STOP \ No newline at end of file diff --git a/obsolete/lispusers/ARCHIVEBROWSER b/obsolete/lispusers/ARCHIVEBROWSER deleted file mode 100644 index c4554d8f..00000000 --- a/obsolete/lispusers/ARCHIVEBROWSER +++ /dev/null @@ -1,506 +0,0 @@ -(FILECREATED " 4-Mar-87 17:04:08" {PHYLUM}KOTO>ARCHIVEBROWSER.;3 28150 - - changes to: (VARS ARCHIVEBROWSERCOMS) (FNS AB.Delete.Command AB.Retrieve.Command -AB.Retrieve.Directory.Command AB.Retrieve.Renamed.Aux AB.Undelete.Command AB ARCHIVEBROWSER -AB.Make.Cedar.Filename AB.Retrieve.Renamed.Command) - - previous date: "22-Sep-86 13:12:01" {QV}LISP>ARCHIVEBROWSER.;4) - - -(* Copyright (c) 1986, 1987 by Xerox Corporation. All rights reserved.) - -(PRETTYCOMPRINT ARCHIVEBROWSERCOMS) - -(RPAQQ ARCHIVEBROWSERCOMS ((* * the user's interface to the archive browser) (FNS ARCHIVEBROWSER AB) - (* * command processing functions) (FNS AB.When.Selected.Fn AB.Command.Fn AB.Delete.Command -AB.Expunge.Command AB.Filter.Command AB.Recompute.Command AB.Retrieve.Command -AB.Retrieve.Directory.Command AB.Retrieve.Renamed.Command AB.Retrieve.Renamed.Aux AB.Sort.Command -AB.Undelete.Command) (* * miscellaneous functions) (FNS AB.Set.Browser.Title AB.Iconfn AB.Closefn -AB.Printfn AB.Prompt.For.Input AB.Read.Directory AB.Subitemp AB.Make.Cedar.Filename) (* * the user -that gets retrieval requests) (INITVARS (AB.archivist "Archivist")) (* * the structure for an archive -entry) (RECORDS AB.item) (* * the icon) (BITMAPS AB.icon AB.icon.mask) (INITVARS (AB.titled.icon ( -create TITLEDICON ICON _ AB.icon MASK _ AB.icon.mask TITLEREG _ (CREATEREGION 7 8 60 24)))) (* * the -font for the browser, which must be a fixed pitch font for now) (VARS (AB.browser.font (FONTCREATE ( -QUOTE TERMINAL) 10))) (* * based on the TableBrowser package) (FILES TABLEBROWSER) (DECLARE: -EVAL@COMPILE DONTCOPY (FILES TABLEBROWSERDECLS)) (DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY -COMPILERVARS (ADDVARS (NLAMA AB) (NLAML) (LAMA))))) - (* * the user's interface to the archive browser) - -(DEFINEQ - -(ARCHIVEBROWSER -(LAMBDA (archivefilespec filter) (* N.H.Briggs " 2-Mar-87 16:56") (LET* ((menu (create MENU ITEMS _ ( -QUOTE ((Retrieve AB.Retrieve.Command "Retrieve selected files" (SUBITEMS ("Retrieve selected files" -AB.Retrieve.Command "Retrieve selected files") ("Retrieve to directory" AB.Retrieve.Directory.Command -"Retrieve selected files to a different directory") ("Retrieve renamed" AB.Retrieve.Renamed.Command -"Retrieve selected files specifying new name for each file"))) (Filter AB.Filter.Command -"Set filter for displayed file names") (Sort AB.Sort.Command "Sort entries by file name" (SUBITEMS ( -"Sort by file name" AB.Sort.Command "Sort entries by file name") ("Sort by creation date" ( -AB.Sort.Command CreationDate) "Sort entries by creation date of the file") ("Sort by archive date" ( -AB.Sort.Command Archive) "Sort entries by date that the file was archived") (Reverse (AB.Sort.Command -Reverse) "Reverse the order of the entries"))) (Recompute AB.Recompute.Command -"Redisplay browser items after re-reading archive directory" (SUBITEMS ("Same directory" -AB.Recompute.Command "Redisplay browser items after re-reading archive directory") ("New directory" ( -AB.Recompute.Command T) "Browse a different archive directory"))) ("" NIL "do nothing - a separator") -(Delete AB.Delete.Command "Delete selected items") (Undelete AB.Undelete.Command -"Undelete selected items" (SUBITEMS ("Undelete selected items" AB.Undelete.Command -"Undelete selected items") ("Undelete ALL items" (AB.Undelete.Command T) "Undelete all deleted items") -)) ("" NIL "do nothing - a separator so you don't accidentally Expunge") (Expunge AB.Expunge.Command -"Expunge deleted items and rewrite the archive directory"))) CENTERFLG _ T TITLE _ " Commands " -WHENSELECTEDFN _ (QUOTE AB.When.Selected.Fn))) (promptfont (FONTCREATE (QUOTE HELVETICA) 10)) ( -promptheight (HEIGHTIFWINDOW (TIMES 2 (FONTPROP promptfont (QUOTE HEIGHT))) T)) (promptwindow) ( -windowregion (GETREGION (PLUS (fetch IMAGEWIDTH of menu) 144) (PLUS (fetch IMAGEHEIGHT of menu) -promptheight))) (window (CREATEW (CREATEREGION (fetch LEFT of windowregion) (fetch BOTTOM of -windowregion) (DIFFERENCE (fetch WIDTH of windowregion) (fetch IMAGEWIDTH of menu)) (DIFFERENCE (fetch - HEIGHT of windowregion) promptheight)) "")) (browser (TB.MAKE.BROWSER NIL window (BQUOTE (PRINTFN -AB.Printfn FONT (\, AB.browser.font)))))) (ATTACHMENU menu window (QUOTE RIGHT) (QUOTE TOP)) ( -TB.USERDATA browser (LIST (QUOTE ARCHIVE) (PACKFILENAME.STRING (QUOTE HOST) (OR (FILENAMEFIELD -archivefilespec (QUOTE HOST)) (FILENAMEFIELD (DIRECTORYNAME) (QUOTE HOST))) (QUOTE DIRECTORY) (OR ( -FILENAMEFIELD archivefilespec (QUOTE DIRECTORY)) (CAR (FULLUSERNAME T))) (QUOTE NAME) (OR ( -FILENAMEFIELD archivefilespec (QUOTE NAME)) (QUOTE Archive)) (QUOTE EXTENSION) (OR (FILENAMEFIELD -archivefilespec (QUOTE EXTENSION)) (QUOTE directory)) (QUOTE BODY) archivefilespec) (QUOTE FILTER) (OR - filter "*.*"))) (* (use something like this if the "attic" is used) L-CASE (OR filter (CONCAT (CAR ( -FULLUSERNAME T)) ">*.*"))) (SETQ promptwindow (GETPROMPTWINDOW window 2 (FONTCREATE (QUOTE HELVETICA) -10))) (AB.Set.Browser.Title browser) (WINDOWPROP promptwindow (QUOTE MINSIZE) (CONS 0 (fetch (REGION -HEIGHT) of (WINDOWPROP promptwindow (QUOTE REGION))))) (WINDOWPROP promptwindow (QUOTE MAXSIZE) (CONS -64000 (fetch (REGION HEIGHT) of (WINDOWPROP promptwindow (QUOTE REGION))))) (LINELENGTH MAX.SMALLP -promptwindow) (WINDOWPROP window (QUOTE ICONFN) (FUNCTION AB.Iconfn)) (WINDOWADDPROP window (QUOTE -CLOSEFN) (FUNCTION AB.Closefn) T) (AB.Command.Fn (SASSOC (QUOTE Recompute) (fetch (MENU ITEMS) of menu -)) menu (QUOTE LEFT))))) - -(AB -(NLAMBDA filespec% filter (* N.H.Briggs " 4-Mar-87 12:11") (LET ((patternandfilter (NLAMBDA.ARGS -filespec% filter))) (ARCHIVEBROWSER (CAR patternandfilter) (CADR patternandfilter)) NIL))) -) - (* * command processing functions) - -(DEFINEQ - -(AB.When.Selected.Fn -(LAMBDA (Item Menu Key) (* N.H.Briggs "25-Jun-86 11:48") (if (AND (LISTP Item) (CADR Item)) then ( -TB.PROCESS (LIST (FUNCTION AB.Command.Fn) (KWOTE Item) (KWOTE Menu) (KWOTE Key)) (PACK* (QUOTE AB-) ( -CAR Item)))))) - -(AB.Command.Fn -(LAMBDA (item menu key) (* N.H.Briggs "18-Jun-86 13:09") (RESETLST (LET* ((realitem item) (window ( -WINDOWPROP (WFROMMENU menu) (QUOTE MAINWINDOW))) (browser (WINDOWPROP window (QUOTE TABLEBROWSER)))) ( -if (NOT (MEMBER item (fetch (MENU ITEMS) of menu))) then (* A subitem -- fetch main item) (SETQ item ( -for I in (fetch (MENU ITEMS) of menu) thereis (AB.Subitemp item I)))) (if (OBTAIN.MONITORLOCK (fetch ( -TABLEBROWSER TBLOCK) of browser) T T) then (RESETSAVE (SHADEITEM item menu MENUSELECTSHADE) (LIST ( -FUNCTION SHADEITEM) item menu WHITESHADE)) (LET ((function (CADR realitem)) (promptwindow ( -GETPROMPTWINDOW window)) extra) (if (OPENWP promptwindow) then (CLEARW promptwindow)) (if (LISTP -function) then (SETQ extra (CADR function)) (SETQ function (CAR function))) (APPLY* function browser -extra)) else (TB.BROWSER.BUSY browser)))))) - -(AB.Delete.Command -(LAMBDA (browser) (* N.H.Briggs " 4-Mar-87 17:01") (LET ((count 0) (browserpromptwindow ( -GETPROMPTWINDOW (TB.WINDOW browser)))) (DECLARE (SPECVARS count)) (TB.MAP.SELECTED.ITEMS browser ( -FUNCTION (LAMBDA (browser item) (DECLARE (SPECVARS count)) (TB.DELETE.ITEM browser item) (add count 1) -))) (if (EQ count 0) then (printout browserpromptwindow "No items marked for deletion.") else ( -printout browserpromptwindow count " item" (if (IGREATERP count 1) then "s" else "") -" marked for deletion."))))) - -(AB.Expunge.Command -(LAMBDA (browser) (* N.H.Briggs "18-Jun-86 12:23") (if (EQ (fetch (TABLEBROWSER TB#DELETED) of browser -) 0) then (printout (GETPROMPTWINDOW (TB.WINDOW browser)) "Nothing to expunge!") else (LET (( -directorystream (OPENSTREAM (PACKFILENAME (QUOTE VERSION) NIL (QUOTE BODY) (LISTGET (TB.USERDATA -browser) (QUOTE ARCHIVE))) (QUOTE OUTPUT)))) (if (NOT directorystream) then (printout (GETPROMPTWINDOW - (TB.WINDOW browser)) "Error opening (new version of) archive directory " (LISTGET (TB.USERDATA -browser) (QUOTE ARCHIVE)) " ...aborted.") else (LINELENGTH MAX.SMALLP directorystream) (* ensure -nothing wraps around) (LISTPUT (TB.USERDATA browser) (QUOTE ALLITEMS) (for item in (LISTGET ( -TB.USERDATA browser) (QUOTE ALLITEMS)) when (NOT (TB.ITEM.DELETED? browser item)) collect (printout -directorystream (fetch (AB.item AB.Filename) of (fetch (TABLEITEM TIDATA) of item)) , (fetch (AB.item -AB.Creation.Date) of (fetch (TABLEITEM TIDATA) of item))) (for media on (fetch (AB.item AB.Media) of ( -fetch (TABLEITEM TIDATA) of item)) by (CDDR media) do (printout directorystream ,, (CAR media)) ( -printout directorystream , (CADR media)) finally (printout directorystream T)) item)) (LISTPUT ( -TB.USERDATA browser) (QUOTE ARCHIVE) (L-CASE (FULLNAME directorystream))) (CLOSEF directorystream) ( -AB.Set.Browser.Title browser) (TB.MAP.DELETED.ITEMS browser (FUNCTION TB.REMOVE.ITEM))))))) - -(AB.Filter.Command -(LAMBDA (browser) (* N.H.Briggs "18-Jun-86 12:28") (LET ((pattern (AB.Prompt.For.Input -"Files matching what? " (LISTGET (TB.USERDATA browser) (QUOTE FILTER)) browser T))) (if pattern then ( -LISTPUT (TB.USERDATA browser) (QUOTE FILTER) (L-CASE pattern)) (AB.Set.Browser.Title browser) ( -AB.Recompute.Command browser))))) - -(AB.Recompute.Command -(LAMBDA (browser newdirectory?) (* N.H.Briggs "19-Sep-86 12:34") (LET* ((window (TB.WINDOW browser)) ( -windowregion (WINDOWPROP window (QUOTE REGION))) (region (CREATEREGION 0 0 (fetch (REGION WIDTH) of -windowregion) (fetch (REGION HEIGHT) of windowregion))) (namewidth 0) (userdata (TB.USERDATA browser)) - (filter (DIRECTORY.MATCH.SETUP (PACKFILENAME (QUOTE BODY) (LISTGET userdata (QUOTE FILTER))))) result -) (if (NOT (ZEROP (fetch (TABLEBROWSER TB#DELETED) of browser))) then (if (MENU (create MENU ITEMS _ ( -QUOTE (("Expunge" (QUOTE Expunge) "Expunge items marked for deletion") ("Don't Expunge" NIL -"Don't expunge items marked for deletion"))) TITLE _ "Expunge deleted items?" CENTERFLG _ T)) then ( -AB.Expunge.Command browser))) (if (AND newdirectory? (SETQ result (AB.Prompt.For.Input -"New archive directory? " NIL browser T))) then (LISTPUT userdata (QUOTE ARCHIVE) (PACKFILENAME.STRING - (QUOTE NAME) (OR (FILENAMEFIELD result (QUOTE NAME)) (QUOTE Archive)) (QUOTE EXTENSION) (OR ( -FILENAMEFIELD result (QUOTE EXTENSION)) (QUOTE directory)) (QUOTE BODY) result))) (if (OR (NOT -newdirectory?) (AND newdirectory? result)) then (TB.REPLACE.ITEMS browser) (LISTPUT userdata (QUOTE -ALLITEMS) (for item in (AB.Read.Directory browser) bind tableitem eachtime (SETQ tableitem (create -TABLEITEM TIDATA _ item)) collect (if (DIRECTORY.MATCH filter (PACKFILENAME (QUOTE BODY) (fetch ( -AB.item AB.Filename) of item))) then (SETQ namewidth (MAX namewidth (STRINGWIDTH (fetch (AB.item -AB.Filename) of item) AB.browser.font))) (TB.INSERT.ITEM browser tableitem)) tableitem)) (LISTPUT -userdata (QUOTE NAMEWIDTH) namewidth) (TB.DISPLAY.LINES browser (TB.FIRST.VISIBLE.ITEM# browser region -) (TB.LAST.VISIBLE.ITEM# browser region)))))) - -(AB.Retrieve.Command -(LAMBDA (browser) (* N.H.Briggs " 4-Mar-87 16:54") (DECLARE (GLOBALVARS AB.archivist)) (PROG ((count 0 -) registry corestream) (DECLARE (SPECVARS corestream count)) (SETQ registry (SELECTQ (OR (LAFITEMODE) -(\LAFITE.INFER.MODE)) (GV ".pa") (NS ":PA") (RETURN (printout (GETPROMPTWINDOW (TB.WINDOW browser)) -"Can't retrieve -- Lafite mode must be set to GV or NS")))) (SETQ corestream (OPENSTREAM (QUOTE -{NODIRCORE}) (QUOTE BOTH))) (LINELENGTH MAX.SMALLP corestream) (printout corestream -"Subject: Retrieve request" T "To: " AB.archivist registry T "cc: " (FULLUSERNAME) T T) ( -TB.MAP.SELECTED.ITEMS browser (FUNCTION (LAMBDA (browser item) (DECLARE (SPECVARS corestream count)) ( -printout corestream "Retrieve: " (fetch (AB.item AB.Filename) of (fetch (TABLEITEM TIDATA) of item)) -" of " (fetch (AB.item AB.Creation.Date) of (fetch (TABLEITEM TIDATA) of item)) " from " (CAR (fetch ( -AB.item AB.Media) of (fetch (TABLEITEM TIDATA) of item))) " or " (CADR (fetch (AB.item AB.Media) of ( -fetch (TABLEITEM TIDATA) of item))) T) (add count 1)))) (if (EQ count 0) then (printout ( -GETPROMPTWINDOW (TB.WINDOW browser)) "Nothing to retrieve.") (CLOSEF corestream) (RETURN)) (SETQ -corestream (OPENTEXTSTREAM corestream)) (printout (GETPROMPTWINDOW (TB.WINDOW browser)) -"Sending mail to " AB.archivist registry " requesting " count " file" (if (NEQ count 1) then "s: " -else ": ")) (if (CAR (ERSETQ (LAFITE.SENDMESSAGE corestream))) then (printout (GETPROMPTWINDOW ( -TB.WINDOW browser)) " done.") else (printout (GETPROMPTWINDOW (TB.WINDOW browser)) " failed."))))) - -(AB.Retrieve.Directory.Command -(LAMBDA (browser) (* N.H.Briggs " 4-Mar-87 16:53") (DECLARE (GLOBALVARS AB.archivist)) (PROG ((count 0 -) registry corestream newdirectory) (DECLARE (SPECVARS corestream count newdirectory)) (SETQ registry -(SELECTQ (OR (LAFITEMODE) (\LAFITE.INFER.MODE)) (GV ".pa") (NS ":PA") (RETURN (printout ( -GETPROMPTWINDOW (TB.WINDOW browser)) "Can't retrieve -- Lafite mode must be set to GV or NS")))) (if ( -NOT (SETQ newdirectory (AB.Prompt.For.Input "Directory to retrieve into? " NIL browser T))) then ( -RETURN)) (SETQ corestream (OPENSTREAM (QUOTE {NODIRCORE}) (QUOTE BOTH))) (LINELENGTH MAX.SMALLP -corestream) (printout corestream "Subject: Retrieve request" T "To: " AB.archivist registry T "cc: " ( -FULLUSERNAME) T T) (TB.MAP.SELECTED.ITEMS browser (FUNCTION (LAMBDA (browser item) (DECLARE (SPECVARS -corestream count newdirectory)) (printout corestream "Retrieve: " (fetch (AB.item AB.Filename) of ( -fetch (TABLEITEM TIDATA) of item)) " of " (fetch (AB.item AB.Creation.Date) of (fetch (TABLEITEM -TIDATA) of item)) " from " (CAR (fetch (AB.item AB.Media) of (fetch (TABLEITEM TIDATA) of item))) -" or " (CADR (fetch (AB.item AB.Media) of (fetch (TABLEITEM TIDATA) of item))) " as " ( -AB.Make.Cedar.Filename (PACKFILENAME.STRING (QUOTE DIRECTORY) newdirectory (QUOTE VERSION) NIL (QUOTE -BODY) (fetch (AB.item AB.Filename) of (fetch (TABLEITEM TIDATA) of item)))) T) (add count 1)))) (if ( -EQ count 0) then (printout (GETPROMPTWINDOW (TB.WINDOW browser)) "Nothing to retrieve.") (CLOSEF -corestream) (RETURN)) (SETQ corestream (OPENTEXTSTREAM corestream)) (printout (GETPROMPTWINDOW ( -TB.WINDOW browser)) "Sending mail to " AB.archivist registry " requesting " count " file" (if (NEQ -count 1) then "s: " else ": ")) (if (CAR (ERSETQ (LAFITE.SENDMESSAGE corestream))) then (printout ( -GETPROMPTWINDOW (TB.WINDOW browser)) " done.") else (printout (GETPROMPTWINDOW (TB.WINDOW browser)) -" failed."))))) - -(AB.Retrieve.Renamed.Command -(LAMBDA (browser) (* N.H.Briggs " 3-Mar-87 12:34") (DECLARE (GLOBALVARS AB.archivist)) (PROG ((count 0 -) registry corestream) (DECLARE (SPECVARS corestream count)) (SETQ registry (SELECTQ (OR (LAFITEMODE) -(\LAFITE.INFER.MODE)) (GV ".pa") (NS ":PA") (RETURN (printout (GETPROMPTWINDOW (TB.WINDOW browser)) -"Can't retrieve -- Lafite mode must be set to GV or NS")))) (SETQ corestream (OPENSTREAM (QUOTE -{NODIRCORE}) (QUOTE BOTH))) (LINELENGTH MAX.SMALLP corestream) (printout corestream -"Subject: Retrieve request" T "To: " AB.archivist registry T "cc: " (FULLUSERNAME) T T) ( -TB.MAP.SELECTED.ITEMS browser (FUNCTION AB.Retrieve.Renamed.Aux)) (if (EQ count 0) then (printout ( -GETPROMPTWINDOW (TB.WINDOW browser)) "Nothing to retrieve.") (CLOSEF corestream) (RETURN)) (SETQ -corestream (OPENTEXTSTREAM corestream)) (printout (GETPROMPTWINDOW (TB.WINDOW browser)) -"Sending mail to " AB.archivist registry " requesting " count " file" (if (NEQ count 1) then "s: " -else ": ")) (if (CAR (ERSETQ (LAFITE.SENDMESSAGE corestream))) then (printout (GETPROMPTWINDOW ( -TB.WINDOW browser)) " done.") else (printout (GETPROMPTWINDOW (TB.WINDOW browser)) " failed."))))) - -(AB.Retrieve.Renamed.Aux -(LAMBDA (browser item) (* N.H.Briggs " 4-Mar-87 16:52") (DECLARE (SPECVARS corestream count)) (LET (( -newname (AB.Prompt.For.Input (CONCAT "Retrieve " (fetch (AB.item AB.Filename) of (fetch (TABLEITEM -TIDATA) of item)) " as ?") (fetch (AB.item AB.Filename) of (fetch (TABLEITEM TIDATA) of item)) browser - "... skipped"))) (if newname then (printout corestream "Retrieve: " (fetch (AB.item AB.Filename) of ( -fetch (TABLEITEM TIDATA) of item)) " of " (fetch (AB.item AB.Creation.Date) of (fetch (TABLEITEM -TIDATA) of item)) " from " (CAR (fetch (AB.item AB.Media) of (fetch (TABLEITEM TIDATA) of item))) -" or " (CADR (fetch (AB.item AB.Media) of (fetch (TABLEITEM TIDATA) of item))) " as " ( -AB.Make.Cedar.Filename (PACKFILENAME.STRING (QUOTE VERSION) NIL (QUOTE BODY) newname)) T) (add count 1 -))))) - -(AB.Sort.Command -(LAMBDA (browser sorttype) (* N.H.Briggs "17-Jun-86 12:47") (LET ((items (fetch (TABLEBROWSER TBITEMS) - of browser))) (if (EQ sorttype (QUOTE Reverse)) then (SETQ items (DREVERSE items)) else (SORT items ( -SELECTQ sorttype (CreationDate (FUNCTION (LAMBDA (x y) (IGREATERP (IDATE (fetch (AB.item -AB.Creation.Date) of (fetch (TABLEITEM TIDATA) of x))) (IDATE (fetch (AB.item AB.Creation.Date) of ( -fetch (TABLEITEM TIDATA) of y))))))) (Archive (FUNCTION (LAMBDA (x y) (ILESSP (fetch (AB.item -AB.Sequence.Number) of (fetch (TABLEITEM TIDATA) of x)) (fetch (AB.item AB.Sequence.Number) of (fetch -(TABLEITEM TIDATA) of y)))))) (FUNCTION (LAMBDA (x y) (ALPHORDER (fetch (AB.item AB.Filename) of ( -fetch (TABLEITEM TIDATA) of x)) (fetch (AB.item AB.Filename) of (fetch (TABLEITEM TIDATA) of y)) ( -UPPERCASEARRAY))))))) (for item in items as i from 1 do (replace TI# of item with i)) ( -TB.REPLACE.ITEMS browser items) (TB.REDISPLAY.ITEMS browser)))) - -(AB.Undelete.Command -(LAMBDA (browser all?) (* N.H.Briggs " 4-Mar-87 17:00") (LET ((count 0) (browserpromptwindow ( -GETPROMPTWINDOW (TB.WINDOW browser)))) (DECLARE (SPECVARS count)) (if all? then (TB.MAP.DELETED.ITEMS -browser (FUNCTION (LAMBDA (browser item) (DECLARE (SPECVARS count)) (TB.UNDELETE.ITEM browser item) ( -add count 1)))) else (TB.MAP.SELECTED.ITEMS browser (FUNCTION (LAMBDA (browser item) (DECLARE ( -SPECVARS count)) (TB.UNDELETE.ITEM browser item) (add count 1))))) (if (EQ count 0) then (printout -browserpromptwindow "No items were undeleted.") else (printout browserpromptwindow count " item" (if ( -NEQ count 1) then "s" else "") " undeleted."))))) -) - (* * miscellaneous functions) - -(DEFINEQ - -(AB.Set.Browser.Title -(LAMBDA (browser) (* N.H.Briggs "17-Jun-86 15:45") (LET ((archive (LISTGET (TB.USERDATA browser) ( -QUOTE ARCHIVE))) (filter (LISTGET (TB.USERDATA browser) (QUOTE FILTER)))) (WINDOWPROP (GETPROMPTWINDOW - (TB.WINDOW browser)) (QUOTE TITLE) (CONCAT "Archive Browser" (OR (AND archive (CONCAT " " archive)) -"") (OR (AND filter (CONCAT " - files " filter)) "")))))) - -(AB.Iconfn -(LAMBDA (window icon) (* N.H.Briggs "19-Sep-86 18:58") (DECLARE (GLOBALVARS AB.titled.icon)) (LET* (( -browser (WINDOWPROP window (QUOTE TABLEBROWSER))) (archive (LISTGET (TB.USERDATA browser) (QUOTE -ARCHIVE))) (directory (UNPACKFILENAME.STRING archive (QUOTE DIRECTORY))) (host (UNPACKFILENAME.STRING -archive (QUOTE HOST))) (title (PACKFILENAME.STRING (QUOTE HOST) host (QUOTE DIRECTORY) (SUBSTRING -directory 1 (STRPOS directory ">"))))) (if icon then (ICONW.TITLE icon title) icon else (TITLEDICONW -AB.titled.icon title (FONTCREATE (QUOTE MODERN) 8) NIL NIL NIL (CHARCODE (}))))))) - -(AB.Closefn -(LAMBDA (window) (* edited: "20-Jun-86 12:42") (LET ((browser (WINDOWPROP window (QUOTE TABLEBROWSER)) -)) (if (NOT (ZEROP (fetch (TABLEBROWSER TB#DELETED) of browser))) then (if (MENU (create MENU ITEMS _ -(QUOTE (("Expunge" (QUOTE Expunge) "Expunge items marked for deletion") ("Don't Expunge" NIL -"Don't expunge items marked for deletion"))) TITLE _ "Expunge deleted items?" CENTERFLG _ T)) then ( -AB.Expunge.Command browser))) NIL))) - -(AB.Printfn -(LAMBDA (browser item window) (* N.H.Briggs "22-Sep-86 13:09") (LET* ((entry (fetch TIDATA of item)) ( -namewidth (OR (LISTGET (TB.USERDATA browser) (QUOTE NAMEWIDTH)) 0)) (offset (DSPXPOSITION NIL window)) - (datestart (IPLUS offset namewidth 10))) (* if this is to work for variable spaced fonts it has to be - smart about the widths of date and media fields too) (PRIN1 (fetch (AB.item AB.Filename) of entry) -window) (if (ZEROP namewidth) then (PRIN1 " " window) else (BLTSHADE WHITESHADE window (DSPXPOSITION -NIL window) (IDIFFERENCE (DSPYPOSITION NIL window) (FONTPROP AB.browser.font (QUOTE DESCENT))) ( -IDIFFERENCE datestart (DSPXPOSITION NIL window)) (FONTPROP AB.browser.font (QUOTE HEIGHT))) ( -DSPXPOSITION datestart window)) (PRIN1 (fetch (AB.item AB.Creation.Date) of entry) window) (PRIN1 -" " window) (for media in (fetch (AB.item AB.Media) of entry) do (PRIN1 media window) (PRIN1 " " -window))))) - -(AB.Prompt.For.Input -(LAMBDA (prompt default browser abortflag) (* N.H.Briggs "22-Apr-86 17:32") (* * Prompt for input for -browser browser with question prompt offering default answer DEFAULT. If abortflag is true and -response is NIL, prints "... aborted" or abortflag (should be a text string)) (LET* ((promptwindow ( -GETPROMPTWINDOW (TB.WINDOW browser))) (promptwidth (STRINGWIDTH prompt promptwindow)) (windowwidth ( -WINDOWPROP promptwindow (QUOTE WIDTH))) result) (CLEARW promptwindow) (if (IGREATERP (IPLUS -promptwidth (STRINGWIDTH (OR default "XXX") promptwindow)) windowwidth) then (* Prompt plus default -response will overflow the width of the window, so be a nice guy and break it up) (for i from ( -IDIFFERENCE (NCHARS prompt) 4) to 10 by -1 bind (excesswidth _ (IDIFFERENCE promptwidth windowwidth)) -when (AND (EQ (NTHCHARCODE prompt i) (CHARCODE SPACE)) (IGREATERP (STRINGWIDTH (SUBSTRING prompt i) -promptwindow) excesswidth)) do (RETURN (SETQ prompt (CONCAT (SUBSTRING prompt 1 (IPLUS i -1)) " -" (SUBSTRING prompt (IPLUS i 1))))))) (SETQ result (CAR (NLSETQ (PROMPTFORWORD prompt default NIL -promptwindow NIL (QUOTE TTY) (CHARCODE (CR ESC)))))) (if (AND (EQ result NIL) abortflag) then ( -PRINTOUT promptwindow (if (EQ abortflag T) then "... aborted" else abortflag))) (TERPRI promptwindow) -result))) - -(AB.Read.Directory -(LAMBDA (browser) (* N.H.Briggs "22-Sep-86 12:53") (LET ((directorystream (AND (LISTGET (TB.USERDATA -browser) (QUOTE ARCHIVE)) (CAR (NLSETQ (OPENSTREAM (LISTGET (TB.USERDATA browser) (QUOTE ARCHIVE)) ( -QUOTE INPUT)))))) (linerdtable (COPYREADTABLE (QUOTE ORIG))) (promptwindow (GETPROMPTWINDOW (TB.WINDOW - browser))) items) (if (NOT directorystream) then (printout promptwindow -"Can't find archive directory " (LISTGET (TB.USERDATA browser) (QUOTE ARCHIVE))) (LISTPUT (TB.USERDATA - browser) (QUOTE ARCHIVE) NIL) (AB.Set.Browser.Title browser) NIL else (LISTPUT (TB.USERDATA browser) -(QUOTE ARCHIVE) (L-CASE (FULLNAME directorystream))) (AB.Set.Browser.Title browser) (SETSEPR (LIST ( -CONSTANT (CHARCODE EOL))) NIL linerdtable) (SETBRK NIL NIL linerdtable) (bind start end inputline -repeatuntil (EOFP directorystream) eachtime (SETQ inputline (RSTRING directorystream linerdtable)) ( -READC directorystream) as i from 1 collect (create AB.item AB.Filename _ (L-CASE (SUBSTRING inputline -1 (SUB1 (SETQ end (STRPOS " " inputline))))) AB.Creation.Date _ (SUBSTRING inputline (ADD1 end) (SUB1 -(SETQ end (STRPOS " " inputline (ADD1 end))))) AB.Media _ (first (SETQ end (ADD1 end)) repeatwhile -end eachtime (SETQ start (ADD1 end)) (while (EQUAL (SUBSTRING inputline start start) " ") do (SETQ -start (ADD1 start))) (SETQ end (STRPOS " " inputline start)) collect (SUBSTRING inputline start (AND -end (SUB1 end)))) AB.Sequence.Number _ i) finally (CLOSEF directorystream)))))) - -(AB.Subitemp -(LAMBDA (subitem item) (* N.H.Briggs "16-Apr-86 18:32") (* * True if subitem appears among the -subitems of item or descendents) (LET ((sub (CADDDR item))) (AND sub (EQ (CAR (LISTP sub)) (QUOTE -SUBITEMS)) (OR (MEMBER subitem sub) (for i in (CDR sub) thereis (AB.Subitemp subitem i))))))) - -(AB.Make.Cedar.Filename -(LAMBDA (filename) (* N.H.Briggs " 3-Mar-87 12:08") (LET ((unpackedfilename (UNPACK filename))) (PACK -(SUBLIS (QUOTE (({ . %[) (} . %]) (; . !))) unpackedfilename))))) -) - (* * the user that gets retrieval requests) - - -(RPAQ? AB.archivist "Archivist") - (* * the structure for an archive entry) - -[DECLARE: EVAL@COMPILE - -(RECORD AB.item (AB.Filename AB.Creation.Date AB.Media AB.Sequence.Number)) -] - (* * the icon) - - -(RPAQ AB.icon (READBITMAP)) -(73 73 -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"O@@@@@@AN@@@@@@@@AH@" -"ML@@@@@CK@@@@@@@@AH@" -"LOOOOOOOOOOOOOOOOIH@" -"LJ@@@@@DHG@@@@@@AIH@" -"LK@@@@AHHAL@@@@@FIH@" -"LIH@@@A@H@GH@@@@LIH@" -"LHF@@@G@H@@OL@@GHIH@" -"LHC@@COOOOOOGOOO@IH@" -"LHAH@C@CN@@A@@@F@IH@" -"LH@LON@FK@@A@@AL@IH@" -"LH@FNBAOOOOA@@CL@IH@" -"LH@CLBCHHL@A@@FH@IH@" -"LH@AKOOOOOOI@@MH@IH@" -"LH@ADB@@L@LA@AI@@IH@" -"LH@ANB@@L@CA@FA@@IH@" -"LH@@KCOOOOOOMOC@@IH@" -"LH@@IH@CL@@@CJB@@IH@" -"LH@@HH@FF@@@GBB@@IH@" -"LH@@HDALG@@@LFC@@IH@" -"LH@@HCOOOOOOHDA@@IH@" -"LH@@HCL@F@@G@DA@@IH@" -"LH@@HAOOOOOO@DAH@IH@" -"OH@AHAOOOOOO@D@H@IH@" -"LO@C@AOOOOOO@D@L@IH@" -"LION@CAHC@FA@D@GHIH@" -"LH@N@F@HA@LA@D@AOIH@" -"LH@GNL@DAAHAHBAO@IH@" -"LH@BGO@CAB@@LCOB@IH@" -"LH@B@MNAIFAOOO@F@IH@" -"LH@B@DCLOMNCHB@D@IH@" -"LH@B@D@COO@F@B@D@IH@" -"LH@B@D@@FGLB@B@D@IH@" -"LH@B@L@GL@CO@C@F@IH@" -"LH@B@HCL@@@GNAHC@IH@" -"LH@FAKL@@@@@AOLAHIH@" -"LH@DAL@@@@@@@AN@LIH@" -"LH@OO@@@@@@@@@CNFIH@" -"LHCL@@@@@@@@@@@CNIH@" -"OOO@@@@@@@@@@@@@AIH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LH@@@@@@@@@@@@@@@IH@" -"LOOOOOOOOOOOOOOOOIH@" -"L@@@@@@@@@@@@@@@@AH@" -"L@@@@@@@@@@@@@@@@AH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@") - -(RPAQ AB.icon.mask (READBITMAP)) -(73 73 -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@" -"OOOOOOOOOOOOOOOOOOH@") - -(RPAQ? AB.titled.icon (create TITLEDICON ICON _ AB.icon MASK _ AB.icon.mask TITLEREG _ (CREATEREGION - 7 8 60 24))) - (* * the font for the browser, which must be a fixed pitch font for now) - - -(RPAQ AB.browser.font (FONTCREATE (QUOTE TERMINAL) 10)) - (* * based on the TableBrowser package) - -(FILESLOAD TABLEBROWSER) -(DECLARE: EVAL@COMPILE DONTCOPY -(FILESLOAD TABLEBROWSERDECLS) -) -(DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS - -(ADDTOVAR NLAMA AB) - -(ADDTOVAR NLAML ) - -(ADDTOVAR LAMA ) -) -(PUTPROPS ARCHIVEBROWSER COPYRIGHT ("Xerox Corporation" 1986 1987)) -(DECLARE: DONTCOPY - (FILEMAP (NIL (1797 5673 (ARCHIVEBROWSER 1807 . 5473) (AB 5475 . 5671)) (5715 18075 ( -AB.When.Selected.Fn 5725 . 5965) (AB.Command.Fn 5967 . 6830) (AB.Delete.Command 6832 . 7357) ( -AB.Expunge.Command 7359 . 8764) (AB.Filter.Command 8766 . 9109) (AB.Recompute.Command 9111 . 10870) ( -AB.Retrieve.Command 10872 . 12460) (AB.Retrieve.Directory.Command 12462 . 14401) ( -AB.Retrieve.Renamed.Command 14403 . 15599) (AB.Retrieve.Renamed.Aux 15601 . 16431) (AB.Sort.Command -16433 . 17398) (AB.Undelete.Command 17400 . 18073)) (18112 23830 (AB.Set.Browser.Title 18122 . 18509) -(AB.Iconfn 18511 . 19112) (AB.Closefn 19114 . 19567) (AB.Printfn 19569 . 20498) (AB.Prompt.For.Input -20500 . 21823) (AB.Read.Directory 21825 . 23323) (AB.Subitemp 23325 . 23630) (AB.Make.Cedar.Filename -23632 . 23828))))) -STOP diff --git a/obsolete/lispusers/ARCHIVEBROWSER.LCOM b/obsolete/lispusers/ARCHIVEBROWSER.LCOM deleted file mode 100644 index 2677a0ed4704fb8e3742609790b3c6f4c6291fb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27498 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 77278 - - changes to%: (FNS FB.DoArchiveCommands) - (VARS ARCHIVETOOLCOMS) - - previous date%: " 1-Dec-88 14:12:21" {POOH/N}BURWELL>LISP>ARCHIVETOOL;2) - - -(* " -Copyright (c) 1985, 1986, 1988, 1989 by Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT ARCHIVETOOLCOMS) - -(RPAQQ ARCHIVETOOLCOMS - [(COMS - -(* ;;; "the user's interface to the archive browser") - - (FNS ARCHIVEBROWSER AB) - - -(* ;;; "command processing functions") - - (FNS AB.When.Selected.Fn AB.Command.Fn AB.Delete.Command AB.Expunge.Command - AB.Filter.Command AB.Recompute.Command AB.Retrieve.Command - AB.Retrieve.Directory.Command AB.Retrieve.Renamed.Command AB.Retrieve.Renamed.Aux - AB.Sort.Command AB.Undelete.Command) - - -(* ;;; "miscellaneous functions") - - (FNS AB.Set.Browser.Title AB.Iconfn AB.Closefn AB.Printfn AB.Prompt.For.Input - AB.Read.Directory AB.Subitemp AB.Make.Cedar.Filename) - - -(* ;;; "the user that gets retrieval requests") - - (INITVARS (AB.archivist "Archivist")) - - -(* ;;; "the structure for an archive entry") - - (RECORDS AB.item) - - -(* ;;; "the icon") - - (BITMAPS AB.icon AB.icon.mask) - [INITVARS (AB.titled.icon (create TITLEDICON ICON _ AB.icon MASK _ AB.icon.mask - TITLEREG _ (CREATEREGION 7 8 60 24] - - -(* ;;; "the font for the browser, which must be a fixed pitch font for now") - - (VARS (AB.browser.font (FONTCREATE 'TERMINAL 10))) - - -(* ;;; "based on the TableBrowser package") - - - -(* ;;; " took out WORDFNS") - - (FILES TABLEBROWSER)) - (COMS (* LOAD the FILEBROWSER first) - (FILES FILEBROWSER)) - [COMS (* ArchiveTool File Browser Interface Functions) - (FNS Arch.ConvertToCedarFileName FB.ArchiveCommand FB.ArchiveAllCommand - FB.ArchiveAndDeleteCommand FB.ArchiveAndDeleteAllCommand FB.DoArchiveCommands) - (GLOBALVARS Arch.CcToSelfFlg Arch.VerifyNotArchivedFlg OKCedarCharBitTable) - [VARS (OKCedarCharBitTable (MAKEBITTABLE (APPEND (CHARCODE (%. $ - + * < > { })) - (for i from (CHARCODE a) - to - (CHARCODE z) - collect i) - (for i from (CHARCODE A) - to - (CHARCODE Z) - collect i) - (CHARCODE (0 1 2 3 4 5 6 7 8 9] - (INITVARS (Arch.CcToSelfFlg T) - (Arch.VerifyNotArchivedFlg NIL)) - (DECLARE%: DONTEVAL@LOAD DOCOPY (ADDVARS (BackgroundMenuCommands (ArchiveBrowser - '(ARCHIVEBROWSER) - - "Brings up an archive browser" - ))) - (P (SETQ BackgroundMenu))) - (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (SOURCE) - TABLEBROWSERDECLS) - (FILES (LOADCOMP) - FILEBROWSER)) - (DECLARE%: DONTEVAL@LOAD DOCOPY - (P (if (NOT (SASSOC "Archive" FB.MENU.ITEMS)) - then - (PUTASSOC "Archive" '(FB.ArchiveCommand - "Archives selected files by sending mail to Archivist.pa" - (SUBITEMS ("Archive" FB.ArchiveCommand - "Archives selected files by sending mail to Archivist.pa" - ) - ("Archive ALL Files" - FB.ArchiveAllCommand - "Archives ALL files in the browser by sending mail to Archivist.pa" - ) - ("Archive and Delete" - FB.ArchiveAndDeleteCommand - "Archives selected files by sending an Archive and Delete request to Archivist.pa" - ) - ("Archive and Delete ALL Files" - FB.ArchiveAndDeleteAllCommand - "Archives ALL files in the browser by sending an Archive and Delete request to Archivist.pa" - ))) - FB.MENU.ITEMS) - else - (RPLACD (SASSOC "Archive" FB.MENU.ITEMS) - '(FB.ArchiveCommand - "Archives selected files by sending mail to Archivist.pa" - (SUBITEMS ("Archive" FB.ArchiveCommand - "Archives selected files by sending mail to Archivist.pa" - ) - ("Archive ALL Files" FB.ArchiveAllCommand - "Archives ALL files in the browser by sending mail to Archivist.pa" - ) - ("Archive and Delete" FB.ArchiveAndDeleteCommand - "Archives selected files by sending an Archive and Delete request to Archivist.pa" - ) - ("Archive and Delete ALL Files" - FB.ArchiveAndDeleteAllCommand - "Archives ALL files in the browser by sending an Archive and Delete request to Archivist.pa" - ] - (COMS (* Functions that aren't used any more) - (FNS Arch.ParseReturnMsg Arch.BackgroundMenuFn)) - (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA AB) - (NLAML) - (LAMA]) - - - -(* ;;; "the user's interface to the archive browser") - -(DEFINEQ - -(ARCHIVEBROWSER - [LAMBDA (archivefilespec filter) (* N.H.Briggs " 2-Mar-87 16:56") - (LET* [(menu (create MENU - ITEMS _ '((Retrieve AB.Retrieve.Command "Retrieve selected files" - (SUBITEMS ("Retrieve selected files" AB.Retrieve.Command - "Retrieve selected files") - ("Retrieve to directory" - AB.Retrieve.Directory.Command - "Retrieve selected files to a different directory" - ) - ("Retrieve renamed" AB.Retrieve.Renamed.Command - "Retrieve selected files specifying new name for each file" - ))) - (Filter AB.Filter.Command "Set filter for displayed file names") - (Sort AB.Sort.Command "Sort entries by file name" - (SUBITEMS ("Sort by file name" AB.Sort.Command - "Sort entries by file name") - ("Sort by creation date" (AB.Sort.Command CreationDate - ) - "Sort entries by creation date of the file") - ("Sort by archive date" (AB.Sort.Command Archive) - - "Sort entries by date that the file was archived" - ) - (Reverse (AB.Sort.Command Reverse) - "Reverse the order of the entries"))) - (Recompute AB.Recompute.Command - "Redisplay browser items after re-reading archive directory" - (SUBITEMS ("Same directory" AB.Recompute.Command - "Redisplay browser items after re-reading archive directory" - ) - ("New directory" (AB.Recompute.Command T) - "Browse a different archive directory"))) - ("" NIL "do nothing - a separator") - (Delete AB.Delete.Command "Delete selected items") - (Undelete AB.Undelete.Command "Undelete selected items" - (SUBITEMS ("Undelete selected items" AB.Undelete.Command - "Undelete selected items") - ("Undelete ALL items" (AB.Undelete.Command T) - "Undelete all deleted items"))) - ("" NIL - "do nothing - a separator so you don't accidentally Expunge") - (Expunge AB.Expunge.Command - "Expunge deleted items and rewrite the archive directory")) - CENTERFLG _ T - TITLE _ " Commands " - WHENSELECTEDFN _ 'AB.When.Selected.Fn)) - (promptfont (FONTCREATE 'HELVETICA 10)) - (promptheight (HEIGHTIFWINDOW (TIMES 2 (FONTPROP promptfont 'HEIGHT)) - T)) - (promptwindow) - (windowregion (GETREGION (PLUS (fetch IMAGEWIDTH of menu) - 144) - (PLUS (fetch IMAGEHEIGHT of menu) - promptheight))) - (window (CREATEW (CREATEREGION (fetch LEFT of windowregion) - (fetch BOTTOM of windowregion) - (DIFFERENCE (fetch WIDTH of windowregion) - (fetch IMAGEWIDTH of menu)) - (DIFFERENCE (fetch HEIGHT of windowregion) - promptheight)) - "")) - (browser (TB.MAKE.BROWSER NIL window `(PRINTFN AB.Printfn FONT ,AB.browser.font] - (ATTACHMENU menu window 'RIGHT 'TOP) - (TB.USERDATA browser (LIST 'ARCHIVE (PACKFILENAME.STRING 'HOST (OR (FILENAMEFIELD - archivefilespec - 'HOST) - (FILENAMEFIELD - (DIRECTORYNAME) - 'HOST)) - 'DIRECTORY - (OR (FILENAMEFIELD archivefilespec 'DIRECTORY) - (CAR (FULLUSERNAME T))) - 'NAME - (OR (FILENAMEFIELD archivefilespec 'NAME) - 'Archive) - 'EXTENSION - (OR (FILENAMEFIELD archivefilespec 'EXTENSION) - 'directory) - 'BODY archivefilespec) - 'FILTER - (OR filter "*.*"))) (* (use something like this if the - "attic" is used) L-CASE - (OR filter (CONCAT (CAR - (FULLUSERNAME T)) ">*.*"))) - (SETQ promptwindow (GETPROMPTWINDOW window 2 (FONTCREATE 'HELVETICA 10))) - (AB.Set.Browser.Title browser) - [WINDOWPROP promptwindow 'MINSIZE (CONS 0 (fetch (REGION HEIGHT) of (WINDOWPROP - promptwindow - 'REGION] - [WINDOWPROP promptwindow 'MAXSIZE (CONS 64000 (fetch (REGION HEIGHT) - of (WINDOWPROP promptwindow 'REGION] - (LINELENGTH MAX.SMALLP promptwindow) - (WINDOWPROP window 'ICONFN (FUNCTION AB.Iconfn)) - (WINDOWADDPROP window 'CLOSEFN (FUNCTION AB.Closefn) - T) - (AB.Command.Fn (SASSOC 'Recompute (fetch (MENU ITEMS) of menu)) - menu - 'LEFT]) - -(AB - [NLAMBDA filespec% filter (* N.H.Briggs " 4-Mar-87 12:11") - (LET ((patternandfilter (NLAMBDA.ARGS filespec% filter))) - (ARCHIVEBROWSER (CAR patternandfilter) - (CADR patternandfilter)) - NIL]) -) - - - -(* ;;; "command processing functions") - -(DEFINEQ - -(AB.When.Selected.Fn - [LAMBDA (Item Menu Key) (* N.H.Briggs "25-Jun-86 11:48") - (if (AND (LISTP Item) - (CADR Item)) - then (TB.PROCESS (LIST (FUNCTION AB.Command.Fn) - (KWOTE Item) - (KWOTE Menu) - (KWOTE Key)) - (PACK* 'AB- (CAR Item]) - -(AB.Command.Fn - [LAMBDA (item menu key) (* N.H.Briggs "18-Jun-86 13:09") - (RESETLST - (LET* [(realitem item) - (window (WINDOWPROP (WFROMMENU menu) - 'MAINWINDOW)) - (browser (WINDOWPROP window 'TABLEBROWSER] - [if (NOT (MEMBER item (fetch (MENU ITEMS) of menu))) - then (* A subitem -- fetch main item) - (SETQ item (for I in (fetch (MENU ITEMS) of menu) - thereis (AB.Subitemp item I] - (if (OBTAIN.MONITORLOCK (fetch (TABLEBROWSER TBLOCK) of browser) - T T) - then (RESETSAVE (SHADEITEM item menu MENUSELECTSHADE) - (LIST (FUNCTION SHADEITEM) - item menu WHITESHADE)) - (LET ((function (CADR realitem)) - (promptwindow (GETPROMPTWINDOW window)) - extra) - (if (OPENWP promptwindow) - then (CLEARW promptwindow)) - (if (LISTP function) - then (SETQ extra (CADR function)) - (SETQ function (CAR function))) - (APPLY* function browser extra)) - else (TB.BROWSER.BUSY browser))))]) - -(AB.Delete.Command - [LAMBDA (browser) (* N.H.Briggs "16-Apr-86 20:56") - (LET ((count 0)) - [TB.MAP.SELECTED.ITEMS browser (FUNCTION (LAMBDA (browser item) - (TB.DELETE.ITEM browser item) - (add count 1] - (printout (GETPROMPTWINDOW (TB.WINDOW browser)) - count " item" (if (IGREATERP count 1) - then "s" - else "") - " marked for deletion."]) - -(AB.Expunge.Command - [LAMBDA (browser) (* N.H.Briggs "18-Jun-86 12:23") - (if (EQ (fetch (TABLEBROWSER TB#DELETED) of browser) - 0) - then (printout (GETPROMPTWINDOW (TB.WINDOW browser)) - "Nothing to expunge!") - else (LET [(directorystream (OPENSTREAM (PACKFILENAME 'VERSION NIL 'BODY (LISTGET (TB.USERDATA - browser) - 'ARCHIVE)) - 'OUTPUT] - (if (NOT directorystream) - then (printout (GETPROMPTWINDOW (TB.WINDOW browser)) - "Error opening (new version of) archive directory " - (LISTGET (TB.USERDATA browser) - 'ARCHIVE) - " ...aborted.") - else (LINELENGTH MAX.SMALLP directorystream) - (* ensure nothing wraps around) - (LISTPUT (TB.USERDATA browser) - 'ALLITEMS - (for item in (LISTGET (TB.USERDATA browser) - 'ALLITEMS) when (NOT (TB.ITEM.DELETED? browser item - )) - collect (printout directorystream (fetch (AB.item AB.Filename) - of (fetch (TABLEITEM TIDATA) - of item)) - %, - (fetch (AB.item AB.Creation.Date) - of (fetch (TABLEITEM TIDATA) of item))) - (for media on (fetch (AB.item AB.Media) - of (fetch (TABLEITEM TIDATA) of item)) - by (CDDR media) do (printout directorystream %,, - (CAR media)) - (printout directorystream %, - (CADR media)) - finally (printout directorystream T)) - item)) - (LISTPUT (TB.USERDATA browser) - 'ARCHIVE - (L-CASE (FULLNAME directorystream))) - (CLOSEF directorystream) - (AB.Set.Browser.Title browser) - (TB.MAP.DELETED.ITEMS browser (FUNCTION TB.REMOVE.ITEM]) - -(AB.Filter.Command - [LAMBDA (browser) (* N.H.Briggs "18-Jun-86 12:28") - (LET ((pattern (AB.Prompt.For.Input "Files matching what? " (LISTGET (TB.USERDATA browser) - 'FILTER) - browser T))) - (if pattern - then (LISTPUT (TB.USERDATA browser) - 'FILTER - (L-CASE pattern)) - (AB.Set.Browser.Title browser) - (AB.Recompute.Command browser]) - -(AB.Recompute.Command - [LAMBDA (browser newdirectory?) (* N.H.Briggs "19-Sep-86 12:34") - (LET* ((window (TB.WINDOW browser)) - (windowregion (WINDOWPROP window 'REGION)) - (region (CREATEREGION 0 0 (fetch (REGION WIDTH) of windowregion) - (fetch (REGION HEIGHT) of windowregion))) - (namewidth 0) - (userdata (TB.USERDATA browser)) - [filter (DIRECTORY.MATCH.SETUP (PACKFILENAME 'BODY (LISTGET userdata 'FILTER] - result) - (if (NOT (ZEROP (fetch (TABLEBROWSER TB#DELETED) of browser))) - then (if (MENU (create MENU - ITEMS _ '(("Expunge" 'Expunge "Expunge items marked for deletion" - ) - ("Don't Expunge" NIL - "Don't expunge items marked for deletion")) - TITLE _ "Expunge deleted items?" - CENTERFLG _ T)) - then (AB.Expunge.Command browser))) - (if (AND newdirectory? (SETQ result (AB.Prompt.For.Input "New archive directory? " NIL - browser T))) - then (LISTPUT userdata 'ARCHIVE (PACKFILENAME.STRING 'NAME (OR (FILENAMEFIELD - result - 'NAME) - 'Archive) - 'EXTENSION - (OR (FILENAMEFIELD result 'EXTENSION) - 'directory) - 'BODY result))) - (if (OR (NOT newdirectory?) - (AND newdirectory? result)) - then (TB.REPLACE.ITEMS browser) - (LISTPUT userdata 'ALLITEMS - (for item in (AB.Read.Directory browser) bind tableitem - eachtime (SETQ tableitem (create TABLEITEM - TIDATA _ item)) - collect (if (DIRECTORY.MATCH filter (PACKFILENAME 'BODY - (fetch (AB.item AB.Filename) - of item))) - then (SETQ namewidth (MAX namewidth - (STRINGWIDTH (fetch (AB.item - AB.Filename) - of item) - AB.browser.font))) - (TB.INSERT.ITEM browser tableitem)) - tableitem)) - (LISTPUT userdata 'NAMEWIDTH namewidth) - (TB.DISPLAY.LINES browser (TB.FIRST.VISIBLE.ITEM# browser region) - (TB.LAST.VISIBLE.ITEM# browser region]) - -(AB.Retrieve.Command - [LAMBDA (browser) (* N.H.Briggs " 3-Mar-87 12:41") - (DECLARE (GLOBALVARS AB.archivist)) - (PROG ((count 0) - registry corestream) - [SETQ registry (SELECTQ (OR (LAFITEMODE) - (\LAFITE.INFER.MODE)) - (GV ".pa") - (NS ":PA") - (RETURN (printout (GETPROMPTWINDOW (TB.WINDOW browser)) - "Can't retrieve -- Lafite mode must be set to GV or NS"] - (SETQ corestream (OPENSTREAM '{NODIRCORE} 'BOTH)) - (LINELENGTH MAX.SMALLP corestream) - (printout corestream "Subject: Retrieve request" T "To: " AB.archivist registry T "cc: " - (FULLUSERNAME) - T T) - [TB.MAP.SELECTED.ITEMS browser (FUNCTION (LAMBDA (browser item) - (printout corestream "Retrieve: " - (fetch (AB.item AB.Filename) - of (fetch (TABLEITEM TIDATA) - of item)) - " of " - (fetch (AB.item AB.Creation.Date) - of (fetch (TABLEITEM TIDATA) - of item)) - " from " - (CAR (fetch (AB.item AB.Media) - of (fetch (TABLEITEM TIDATA) - of item))) - " or " - (CADR (fetch (AB.item AB.Media) - of (fetch (TABLEITEM TIDATA) - of item))) - T) - (add count 1] - (SETQ corestream (OPENTEXTSTREAM corestream)) - (printout (GETPROMPTWINDOW (TB.WINDOW browser)) - "Sending mail to " AB.archivist registry " requesting " count " file" - (if (NEQ count 1) - then "s: " - else ": ")) - (if (CAR (ERSETQ (LAFITE.SENDMESSAGE corestream))) - then (printout (GETPROMPTWINDOW (TB.WINDOW browser)) - " done.") - else (printout (GETPROMPTWINDOW (TB.WINDOW browser)) - " failed."]) - -(AB.Retrieve.Directory.Command - [LAMBDA (browser) (* N.H.Briggs " 3-Mar-87 12:41") - (DECLARE (GLOBALVARS AB.archivist)) - (PROG ((count 0) - registry corestream newdirectory) - [SETQ registry (SELECTQ (OR (LAFITEMODE) - (\LAFITE.INFER.MODE)) - (GV ".pa") - (NS ":PA") - (RETURN (printout (GETPROMPTWINDOW (TB.WINDOW browser)) - "Can't retrieve -- Lafite mode must be set to GV or NS"] - (if (NOT (SETQ newdirectory (AB.Prompt.For.Input "Directory to retrieve into? " NIL browser - T))) - then (RETURN)) - (SETQ corestream (OPENSTREAM '{NODIRCORE} 'BOTH)) - (LINELENGTH MAX.SMALLP corestream) - (printout corestream "Subject: Retrieve request" T "To: " AB.archivist registry T "cc: " - (FULLUSERNAME) - T T) - [TB.MAP.SELECTED.ITEMS browser (FUNCTION (LAMBDA (browser item) - (printout - corestream "Retrieve: " - (fetch (AB.item AB.Filename) - of (fetch (TABLEITEM TIDATA) of item)) - " of " - (fetch (AB.item AB.Creation.Date) - of (fetch (TABLEITEM TIDATA) of item)) - " from " - (CAR (fetch (AB.item AB.Media) - of (fetch (TABLEITEM TIDATA) - of item))) - " or " - (CADR (fetch (AB.item AB.Media) - of (fetch (TABLEITEM TIDATA) - of item))) - " as " - [AB.Make.Cedar.Filename - (PACKFILENAME.STRING - 'DIRECTORY newdirectory 'VERSION NIL - 'BODY - (fetch (AB.item AB.Filename) - of (fetch (TABLEITEM TIDATA) of item] - T) - (add count 1] - (SETQ corestream (OPENTEXTSTREAM corestream)) - (printout (GETPROMPTWINDOW (TB.WINDOW browser)) - "Sending mail to " AB.archivist registry " requesting " count " file" - (if (NEQ count 1) - then "s: " - else ": ")) - (if (CAR (ERSETQ (LAFITE.SENDMESSAGE corestream))) - then (printout (GETPROMPTWINDOW (TB.WINDOW browser)) - " done.") - else (printout (GETPROMPTWINDOW (TB.WINDOW browser)) - " failed."]) - -(AB.Retrieve.Renamed.Command - [LAMBDA (browser) (* N.H.Briggs " 3-Mar-87 12:34") - (DECLARE (GLOBALVARS AB.archivist)) - (PROG ((count 0) - registry corestream) - (DECLARE (SPECVARS corestream count)) - [SETQ registry (SELECTQ (OR (LAFITEMODE) - (\LAFITE.INFER.MODE)) - (GV ".pa") - (NS ":PA") - (RETURN (printout (GETPROMPTWINDOW (TB.WINDOW browser)) - "Can't retrieve -- Lafite mode must be set to GV or NS"] - (SETQ corestream (OPENSTREAM '{NODIRCORE} 'BOTH)) - (LINELENGTH MAX.SMALLP corestream) - (printout corestream "Subject: Retrieve request" T "To: " AB.archivist registry T "cc: " - (FULLUSERNAME) - T T) - (TB.MAP.SELECTED.ITEMS browser (FUNCTION AB.Retrieve.Renamed.Aux)) - (if (EQ count 0) - then (printout (GETPROMPTWINDOW (TB.WINDOW browser)) - "Nothing to retrieve.") - (CLOSEF corestream) - (RETURN)) - (SETQ corestream (OPENTEXTSTREAM corestream)) - (printout (GETPROMPTWINDOW (TB.WINDOW browser)) - "Sending mail to " AB.archivist registry " requesting " count " file" - (if (NEQ count 1) - then "s: " - else ": ")) - (if (CAR (ERSETQ (LAFITE.SENDMESSAGE corestream))) - then (printout (GETPROMPTWINDOW (TB.WINDOW browser)) - " done.") - else (printout (GETPROMPTWINDOW (TB.WINDOW browser)) - " failed."]) - -(AB.Retrieve.Renamed.Aux - [LAMBDA (browser item) (* N.H.Briggs " 3-Mar-87 12:38") - (LET ((newname (AB.Prompt.For.Input (CONCAT "Retrieve " (fetch (AB.item AB.Filename) - of (fetch (TABLEITEM TIDATA) - of item)) - " as ?") - (fetch (AB.item AB.Filename) of (fetch (TABLEITEM TIDATA) of item)) - browser "... skipped"))) - (if newname - then (printout corestream "Retrieve: " (fetch (AB.item AB.Filename) - of (fetch (TABLEITEM TIDATA) of item)) - " of " - (fetch (AB.item AB.Creation.Date) of (fetch (TABLEITEM TIDATA) of item)) - " from " - (CAR (fetch (AB.item AB.Media) of (fetch (TABLEITEM TIDATA) of item))) - " or " - (CADR (fetch (AB.item AB.Media) of (fetch (TABLEITEM TIDATA) of item))) - " as " - (AB.Make.Cedar.Filename (PACKFILENAME.STRING 'VERSION NIL 'BODY newname)) - T) - (add count 1)) - (HELP]) - -(AB.Sort.Command - [LAMBDA (browser sorttype) (* N.H.Briggs "17-Jun-86 12:47") - (LET ((items (fetch (TABLEBROWSER TBITEMS) of browser))) - [if (EQ sorttype 'Reverse) - then (SETQ items (DREVERSE items)) - else (SORT items (SELECTQ sorttype - (CreationDate [FUNCTION (LAMBDA (x y) - (IGREATERP - (IDATE (fetch (AB.item AB.Creation.Date) - of (fetch (TABLEITEM TIDATA) - of x))) - (IDATE (fetch (AB.item AB.Creation.Date) - of (fetch (TABLEITEM TIDATA) - of y]) - (Archive [FUNCTION (LAMBDA (x y) - (ILESSP (fetch (AB.item AB.Sequence.Number) - of (fetch (TABLEITEM TIDATA) - of x)) - (fetch (AB.item AB.Sequence.Number) - of (fetch (TABLEITEM TIDATA) - of y]) - (FUNCTION (LAMBDA (x y) - (ALPHORDER (fetch (AB.item AB.Filename) - of (fetch (TABLEITEM TIDATA) of x)) - (fetch (AB.item AB.Filename) - of (fetch (TABLEITEM TIDATA) of y)) - (UPPERCASEARRAY] - (for item in items as i from 1 do (replace TI# of item with i)) - (TB.REPLACE.ITEMS browser items) - (TB.REDISPLAY.ITEMS browser]) - -(AB.Undelete.Command - [LAMBDA (browser all?) (* N.H.Briggs "16-Apr-86 21:01") - (LET ((count 0)) - [if all? - then [TB.MAP.DELETED.ITEMS browser (FUNCTION (LAMBDA (browser item) - (TB.UNDELETE.ITEM browser item) - (add count 1] - else (TB.MAP.SELECTED.ITEMS browser (FUNCTION (LAMBDA (browser item) - (TB.UNDELETE.ITEM browser item) - (add count 1] - (printout (GETPROMPTWINDOW (TB.WINDOW browser)) - count " item" (if (NEQ count 1) - then "s" - else "") - " undeleted."]) -) - - - -(* ;;; "miscellaneous functions") - -(DEFINEQ - -(AB.Set.Browser.Title - [LAMBDA (browser) (* N.H.Briggs "17-Jun-86 15:45") - (LET [(archive (LISTGET (TB.USERDATA browser) - 'ARCHIVE)) - (filter (LISTGET (TB.USERDATA browser) - 'FILTER] - (WINDOWPROP (GETPROMPTWINDOW (TB.WINDOW browser)) - 'TITLE - (CONCAT "Archive Browser" (OR (AND archive (CONCAT " " archive)) - "") - (OR (AND filter (CONCAT " - files " filter)) - ""]) - -(AB.Iconfn - [LAMBDA (window icon) (* N.H.Briggs "19-Sep-86 18:58") - (DECLARE (GLOBALVARS AB.titled.icon)) - (LET* [(browser (WINDOWPROP window 'TABLEBROWSER)) - (archive (LISTGET (TB.USERDATA browser) - 'ARCHIVE)) - (directory (UNPACKFILENAME.STRING archive 'DIRECTORY)) - (host (UNPACKFILENAME.STRING archive 'HOST)) - (title (PACKFILENAME.STRING 'HOST host 'DIRECTORY (SUBSTRING directory 1 (STRPOS directory - ">"] - (if icon - then (ICONW.TITLE icon title) - icon - else (TITLEDICONW AB.titled.icon title (FONTCREATE 'MODERN 8) - NIL NIL NIL (CHARCODE (}]) - -(AB.Closefn - [LAMBDA (window) (* edited%: "20-Jun-86 12:42") - (LET [(browser (WINDOWPROP window 'TABLEBROWSER] - (if (NOT (ZEROP (fetch (TABLEBROWSER TB#DELETED) of browser))) - then (if (MENU (create MENU - ITEMS _ '(("Expunge" 'Expunge "Expunge items marked for deletion") - ("Don't Expunge" NIL - "Don't expunge items marked for deletion")) - TITLE _ "Expunge deleted items?" - CENTERFLG _ T)) - then (AB.Expunge.Command browser))) - NIL]) - -(AB.Printfn - [LAMBDA (browser item window) (* N.H.Briggs "22-Sep-86 13:09") - (LET* ((entry (fetch TIDATA of item)) - (namewidth (OR (LISTGET (TB.USERDATA browser) - 'NAMEWIDTH) - 0)) - (offset (DSPXPOSITION NIL window)) - (datestart (IPLUS offset namewidth 10))) - - (* if this is to work for variable spaced fonts it has to be smart about the - widths of date and media fields too) - - (PRIN1 (fetch (AB.item AB.Filename) of entry) - window) - (if (ZEROP namewidth) - then (PRIN1 " " window) - else (BLTSHADE WHITESHADE window (DSPXPOSITION NIL window) - (IDIFFERENCE (DSPYPOSITION NIL window) - (FONTPROP AB.browser.font 'DESCENT)) - (IDIFFERENCE datestart (DSPXPOSITION NIL window)) - (FONTPROP AB.browser.font 'HEIGHT)) - (DSPXPOSITION datestart window)) - (PRIN1 (fetch (AB.item AB.Creation.Date) of entry) - window) - (PRIN1 " " window) - (for media in (fetch (AB.item AB.Media) of entry) do (PRIN1 media window) - (PRIN1 " " window]) - -(AB.Prompt.For.Input - [LAMBDA (prompt default browser abortflag) (* N.H.Briggs "22-Apr-86 17:32") - - (* * Prompt for input for browser browser with question prompt offering default - answer DEFAULT. If abortflag is true and response is NIL, prints "... aborted" or - abortflag (should be a text string)) - - (LET* ((promptwindow (GETPROMPTWINDOW (TB.WINDOW browser))) - (promptwidth (STRINGWIDTH prompt promptwindow)) - (windowwidth (WINDOWPROP promptwindow 'WIDTH)) - result) - (CLEARW promptwindow) - [if (IGREATERP (IPLUS promptwidth (STRINGWIDTH (OR default "XXX") - promptwindow)) - windowwidth) - then - - (* Prompt plus default response will overflow the width of the window, so be a - nice guy and break it up) - - (for i from (IDIFFERENCE (NCHARS prompt) - 4) to 10 by -1 bind (excesswidth _ (IDIFFERENCE promptwidth - windowwidth)) - when (AND (EQ (NTHCHARCODE prompt i) - (CHARCODE SPACE)) - (IGREATERP (STRINGWIDTH (SUBSTRING prompt i) - promptwindow) - excesswidth)) - do (RETURN (SETQ prompt (CONCAT (SUBSTRING prompt 1 (IPLUS i -1)) - " -" - (SUBSTRING prompt (IPLUS i 1] - [SETQ result (CAR (NLSETQ (PROMPTFORWORD prompt default NIL promptwindow NIL 'TTY - (CHARCODE (CR ESC] - (if (AND (EQ result NIL) - abortflag) - then (PRINTOUT promptwindow (if (EQ abortflag T) - then "... aborted" - else abortflag))) - (TERPRI promptwindow) - result]) - -(AB.Read.Directory - [LAMBDA (browser) (* N.H.Briggs "22-Sep-86 12:53") - (LET ([directorystream (AND (LISTGET (TB.USERDATA browser) - 'ARCHIVE) - (CAR (NLSETQ (OPENSTREAM (LISTGET (TB.USERDATA browser) - 'ARCHIVE) - 'INPUT] - (linerdtable (COPYREADTABLE 'ORIG)) - (promptwindow (GETPROMPTWINDOW (TB.WINDOW browser))) - items) - (if (NOT directorystream) - then (printout promptwindow "Can't find archive directory " (LISTGET (TB.USERDATA - browser) - 'ARCHIVE)) - (LISTPUT (TB.USERDATA browser) - 'ARCHIVE NIL) - (AB.Set.Browser.Title browser) - NIL - else (LISTPUT (TB.USERDATA browser) - 'ARCHIVE - (L-CASE (FULLNAME directorystream))) - (AB.Set.Browser.Title browser) - (SETSEPR (LIST (CONSTANT (CHARCODE EOL))) - NIL linerdtable) - (SETBRK NIL NIL linerdtable) - (bind start end inputline repeatuntil (EOFP directorystream) - eachtime (SETQ inputline (RSTRING directorystream linerdtable)) - (READC directorystream) as i from 1 - collect (create AB.item - AB.Filename _ [L-CASE (SUBSTRING inputline 1 - (SUB1 (SETQ end (STRPOS " " inputline] - AB.Creation.Date _ [SUBSTRING inputline (ADD1 end) - (SUB1 (SETQ end (STRPOS " " inputline - (ADD1 end] - AB.Media _ [first (SETQ end (ADD1 end)) repeatwhile end - eachtime (SETQ start (ADD1 end)) - (while (EQUAL (SUBSTRING inputline start start) - " ") do (SETQ start (ADD1 start)) - ) - (SETQ end (STRPOS " " inputline start)) - collect (SUBSTRING inputline start - (AND end (SUB1 end] - AB.Sequence.Number _ i) finally (CLOSEF directorystream]) - -(AB.Subitemp - [LAMBDA (subitem item) (* N.H.Briggs "16-Apr-86 18:32") - - (* * True if subitem appears among the subitems of item or descendents) - - (LET ((sub (CADDDR item))) - (AND sub (EQ (CAR (LISTP sub)) - 'SUBITEMS) - (OR (MEMBER subitem sub) - (for i in (CDR sub) thereis (AB.Subitemp subitem i]) - -(AB.Make.Cedar.Filename - [LAMBDA (filename) (* N.H.Briggs " 3-Mar-87 12:08") - (LET ((unpackedfilename (UNPACK filename))) - (PACK (SUBLIS '(({ . %[) - (} . %]) - (; . !)) - unpackedfilename]) -) - - - -(* ;;; "the user that gets retrieval requests") - - -(RPAQ? AB.archivist "Archivist") - - - -(* ;;; "the structure for an archive entry") - -(DECLARE%: EVAL@COMPILE - -(RECORD AB.item (AB.Filename AB.Creation.Date AB.Media AB.Sequence.Number)) -) - - - -(* ;;; "the icon") - - -(RPAQQ AB.icon #*(73 73)OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@O@@@@@@AN@@@@@@@@AH@ML@@@@@CK@@@@@@@@AH@LOOOOOOOOOOOOOOOOIH@LJ@@@@@DHG@@@@@@AIH@LK@@@@AHHAL@@@@@FIH@LIH@@@A@H@GH@@@@LIH@LHF@@@G@H@@OL@@GHIH@LHC@@COOOOOOGOOO@IH@LHAH@C@CN@@A@@@F@IH@LH@LON@FK@@A@@AL@IH@LH@FNBAOOOOA@@CL@IH@LH@CLBCHHL@A@@FH@IH@LH@AKOOOOOOI@@MH@IH@LH@ADB@@L@LA@AI@@IH@LH@ANB@@L@CA@FA@@IH@LH@@KCOOOOOOMOC@@IH@LH@@IH@CL@@@CJB@@IH@LH@@HH@FF@@@GBB@@IH@LH@@HDALG@@@LFC@@IH@LH@@HCOOOOOOHDA@@IH@LH@@HCL@F@@G@DA@@IH@LH@@HAOOOOOO@DAH@IH@OH@AHAOOOOOO@D@H@IH@LO@C@AOOOOOO@D@L@IH@LION@CAHC@FA@D@GHIH@LH@N@F@HA@LA@D@AOIH@LH@GNL@DAAHAHBAO@IH@LH@BGO@CAB@@LCOB@IH@LH@B@MNAIFAOOO@F@IH@LH@B@DCLOMNCHB@D@IH@LH@B@D@COO@F@B@D@IH@LH@B@D@@FGLB@B@D@IH@LH@B@L@GL@CO@C@F@IH@LH@B@HCL@@@GNAHC@IH@LH@FAKL@@@@@AOLAHIH@LH@DAL@@@@@@@AN@LIH@LH@OO@@@@@@@@@CNFIH@LHCL@@@@@@@@@@@CNIH@OOO@@@@@@@@@@@@@AIH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LH@@@@@@@@@@@@@@@IH@LOOOOOOOOOOOOOOOOIH@L@@@@@@@@@@@@@@@@AH@L@@@@@@@@@@@@@@@@AH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@ -) - -(RPAQQ AB.icon.mask #*(73 73)OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@OOOOOOOOOOOOOOOOOOH@ -) - -(RPAQ? AB.titled.icon (create TITLEDICON ICON _ AB.icon MASK _ AB.icon.mask TITLEREG _ - (CREATEREGION 7 8 60 24))) - - - -(* ;;; "the font for the browser, which must be a fixed pitch font for now") - - -(RPAQ AB.browser.font (FONTCREATE 'TERMINAL 10)) - - - -(* ;;; "based on the TableBrowser package") - - - - -(* ;;; " took out WORDFNS") - - -(FILESLOAD TABLEBROWSER) - - - -(* LOAD the FILEBROWSER first) - - -(FILESLOAD FILEBROWSER) - - - -(* ArchiveTool File Browser Interface Functions) - -(DEFINEQ - -(Arch.ConvertToCedarFileName - [LAMBDA (FileEntry LispFileName BROWSER) (* ; "Edited 1-Dec-88 12:47 by bbb") - -(* ;;; "Convert a Lisp file name to a Cedar filename with the [host] naming convention and the ! version numbering") - - (DECLARE (GLOBALVARS OKCedarCharBitTable)) - (DECLARE (SPECVARS SkippedBadFileName)) - (LET* ((UnpackedName (UNPACKFILENAME.STRING LispFileName)) - (Host (LISTGET UnpackedName 'HOST)) - (Name (LISTGET UnpackedName 'NAME)) - (Extension (LISTGET UnpackedName 'EXTENSION)) - (Directory (LISTGET UnpackedName 'DIRECTORY)) - (Version (LISTGET UnpackedName 'VERSION)) - BadCharPos NewLispFileName (OldLispFileName (ALLOCSTRING (NCHARS LispFileName))) - (GoodFileName T) - DirectoryEnd) - (if (OR (STRING-EQUAL Host "Core") - (STRPOS ":" Host) - (STRPOS "dsk" (L-CASE Host) - 1) - (STRPOS "/n" Host) - (STRING-EQUAL Host "Floppy")) - then - - (* ;; "we can only archive files on an IFS (as of June/88)") - - (FB.PROMPTWPRINT BROWSER T (CONCAT - "You can only archive files stored on an IFS. The host " - Host " is NOT an IFS!")) - (SETQ GoodFileName NIL) - elseif (AND (STRING-EQUAL Name "") - (STRING-EQUAL Extension "")) - then - - (* ;; "This is a file with no name - we want to skip the dif files") - - (SETQ GoodFileName NIL) - elseif (AND (STRING-EQUAL (L-CASE Name) - "archive") - (STRING-EQUAL (L-CASE Extension) - "directory")) - then - - (* ;; - " we don't want to ask to archive the file archive.directory so just skip it") - - (SETQ GoodFileName NIL) - elseif (STRPOS ":" LispFileName 1) - then (FB.PROMPTWPRINT BROWSER T (CONCAT LispFileName - " has a colon in the name which Lisp can't handle." - ) - " You need to manually call RENAMEFILE to eliminate the colons quoting all colons with a single quote." - ) - (SETQ GoodFileName NIL) - elseif (SETQ BadCharPos (STRPOSL OKCedarCharBitTable Name 1 T)) - then (FB.PROMPTWPRINT BROWSER T "Invalid character %"" (NTHCHAR Name BadCharPos) - "%" in file " LispFileName ". Only alphanumeric and .$-+ are allowed." - ) - (if (STRING-EQUAL (FB.PROMPTFORINPUT - "Shall I replace all bad chars with $ (Y/N):" "Y" - BROWSER NIL T) - "Y") - then (SETQ OldLispFileName (CONCAT LispFileName)) - (while (AND BadCharPos (ILEQ BadCharPos (NCHARS Name))) - do (SETQ Name (RPLCHARCODE Name BadCharPos (CHARCODE $))) - (SETQ BadCharPos (STRPOSL OKCedarCharBitTable Name BadCharPos - T))) - (SETQ NewLispFileName (PACKFILENAME.STRING 'NAME Name 'BODY - LispFileName)) - (FB.COPY/RENAME.ONE BROWSER FileEntry OldLispFileName NewLispFileName - 'Rename - (FUNCTION RENAMEFILE)) - else (FB.PROMPTWPRINT BROWSER "Skipping " LispFileName ".") - (SETQ SkippedBadFileName T) - (SETQ GoodFileName NIL))) - (if GoodFileName - then (L-CASE (CONCAT "[" Host "]<" Directory ">" Name - (if (NOT (STRING-EQUAL Extension "")) - then (CONCAT "." Extension) - else "") - "!" Version]) - -(FB.ArchiveCommand - [LAMBDA (BROWSER) (* N.H.Briggs " 3-Apr-86 20:43") - - (* * Called from FileBrowser Archive command -- - Archive all selected files) - - (FB.DoArchiveCommands BROWSER 'Archive]) - -(FB.ArchiveAllCommand - [LAMBDA (BROWSER) (* ; "Edited 28-Apr-88 17:58 by bbb") - - (* * Called from FileBrowser Archive All Files command -- - Archive all files) - - (FB.DoArchiveCommands BROWSER 'ArchiveAll]) - -(FB.ArchiveAndDeleteCommand - [LAMBDA (BROWSER) (* ; "Edited 28-Apr-88 15:47 by bbb") - - (* * Called from FileBrowser Archive and Delete command -- - Archive and Delete all selected files) - - (FB.DoArchiveCommands BROWSER 'ArchiveAndDelete]) - -(FB.ArchiveAndDeleteAllCommand - [LAMBDA (BROWSER) (* ; "Edited 28-Apr-88 16:52 by bbb") - - (* * Called from FileBrowser Archive and Delete All Files command -- - Archive and Delete all files) - - (FB.DoArchiveCommands BROWSER 'ArchiveAndDeleteAll]) - -(FB.DoArchiveCommands - [LAMBDA (BROWSER TypeOfArchive) (* ; "Edited 10-Mar-89 17:03 by bbb") - -(* ;;; "Called from FileBrowser Archive command -- Archive all selected files") - - (DECLARE (GLOBALVARS Arch.CcToSelfFlg)) - (FB.ALLOW.ABORT BROWSER) - (PROG (FileEntriesList REGISTRY CoreStream CedarFileNameList Pattern MakeRequestFLG FilesSelected - ArchivedFiles ArchiveDirectory DotStarPosition SkippedBadFileName) - (if (OR (EQ TypeOfArchive 'Archive) - (EQ TypeOfArchive 'ArchiveAndDelete)) - then (SETQ FilesSelected T)) - (SETQ Pattern (Arch.ConvertToCedarFileName NIL (fetch PATTERN of BROWSER) - BROWSER)) - - (* ;; "Now we need to fix the pattern because in Cedar *.* will only match files that do have extensions. If there is a %".*%" then replace this with %"*%"") - - [if (NULL Pattern) - then (RETURN) - elseif (SETQ DotStarPosition (STRPOS ".*" Pattern)) - then (SETQ Pattern (CONCAT (SUBSTRING Pattern 1 (SUB1 DotStarPosition)) - (if (NEQ (NTHCHAR Pattern (SUB1 DotStarPosition)) - '*) - then "*" - else "") - (SUBSTRING Pattern (PLUS 2 DotStarPosition] - [SETQ FileEntriesList (if FilesSelected - then (FB.SELECTEDFILES BROWSER) - else (* ; - "Collect everything that is not a directory item") - (TB.COLLECT.ITEMS (fetch (FILEBROWSER TABLEBROWSER) - of BROWSER) - (FUNCTION (LAMBDA (BROWSER ITEM) - (NOT (fetch TIUNSELECTABLE - of ITEM] - (if (NULL FileEntriesList) - then (RETURN)) - (if (AND Arch.VerifyNotArchivedFlg [SETQ ArchiveDirectory - (PACKFILENAME.STRING 'NAME "Archive" 'EXTENSION - "Directory" 'VERSION NIL 'BODY - (SUBSTRING Pattern 1 (STRPOS ">" Pattern 1] - (INFILEP ArchiveDirectory)) - then (SETQ ArchivedFiles (CL:MAKE-HASH-TABLE :TEST 'CL:EQUAL)) - - (* ;; - "Note that the Archive.Directory has: Filename <1 or more spaces> CreationDate <2 spaces>") - - (LET ((ArchiveDirectoryStream (OPENSTREAM ArchiveDirectory 'INPUT)) - Line EOFP) - (while (AND (SETQ Line (CL:READ-LINE ArchiveDirectoryStream EOFP)) - (NULL EOFP)) bind End FileName CreationDate - do (SETQ End (STRPOS " " Line)) - [SETQ FileName (CONCAT (L-CASE (SUBSTRING Line 1 (SUB1 End] - [SETQ CreationDate (IDATE (SUBSTRING Line (ADD1 End) - (SUB1 (STRPOS " " Line - (ADD1 End] - (CL:SETF (CL:GETHASH FileName ArchivedFiles) - CreationDate)) - (CLOSEF ArchiveDirectoryStream)) (* COLLECTWORDFILE ArchiveDirectory - (FUNCTION (LAMBDA (Line) - (LET* ((End (STRPOS " " Line)) - (FileName (CONCAT (L-CASE - (SUBSTRING Line 1 (SUB1 End))))) - (CreationDate (IDATE - (SUBSTRING Line (ADD1 End) - (SUB1 (STRPOS " " Line - (ADD1 End))))))) (CL:SETF - (CL:GETHASH FileName ArchivedFiles) - CreationDate)))) NIL - (FUNCTION DREADLINE) T)) - -(* ;;; "Determine right away if they can send mail to the Archivist") - - [SETQ REGISTRY (SELECTQ (OR (LAFITEMODE) - (\LAFITE.INFER.MODE)) - (GV ".pa") - (NS ":PA") - (RETURN (FB.PROMPTWPRINT BROWSER T - "Can't -- Lafite mode must be set to GV or NS"] - (if FilesSelected - then (FB.PROMPTWPRINT BROWSER "Validating and preparing archive request for " - (CONCAT (LENGTH FileEntriesList) - " file" - (COND - ((CDR FileEntriesList) - "s") - (T ""))) - ".")) - -(* ;;; "Convert the file names and enter them into the msg. SkippedBadFileName is set to T in Arch.ConvertToCedarFileName if there is an invalid Cedar file which the user chooses not to rename to a valid name") - - (SETQ SkippedBadFileName NIL) - (SETQ CedarFileNameList - (for FileName - in (bind CedarFileName ArchivedFileDate for FileEntry in - FileEntriesList - when (AND (SETQ CedarFileName (Arch.ConvertToCedarFileName - FileEntry - (FB.FETCHFILENAME FileEntry) - BROWSER)) - (if (NULL ArchivedFiles) - then T - else (SETQ ArchivedFileDate (CL:GETHASH CedarFileName - ArchivedFiles)) - (if (EQP ArchivedFileDate (GETFILEINFO ( - FB.FETCHFILENAME - FileEntry) - 'ICREATIONDATE)) - then (FB.PROMPTWPRINT BROWSER T ( - FB.FETCHFILENAME - FileEntry) - " has already been archived!" - " Skipping it.") - (SETQ SkippedBadFileName T) - NIL - else T))) collect CedarFileName) collect - FileName)) - (if CedarFileNameList - then [if (AND (NOT FilesSelected) - SkippedBadFileName) - then - - (* ;; "the person has asked to archive and delete all the files in the browser yet something was wrong with some of their names or else it has already been archived") - - (SETQ TypeOfArchive (SELECTQ TypeOfArchive - (ArchiveAll 'Archive) - (ArchiveAndDeleteAll - 'ArchiveAndDelete) - (SHOULDNT] - -(* ;;; "Setup the header fields for the msg") - - (SETQ CoreStream (OPENSTREAM '{NODIRCORE} 'BOTH)) - (LINELENGTH 1000 CoreStream) (* ; "In case of long file names") - -(* ;;; "Old code (printout CoreStream %"Subject: Archive request%" T %"To: Archivist%" REGISTRY T %"Cc: %")") - - (printout CoreStream "Subject: Archive request" (SELECTQ TypeOfArchive - ((ArchiveAll - ArchiveAndDeleteAll) - - (CONCAT - " for all files in " - Pattern)) - (CONCAT " for some files in " - Pattern)) - T "To: Archivist" REGISTRY T "Cc: ") - [COND - (Arch.CcToSelfFlg (printout CoreStream (FULLUSERNAME] - (TERPRI CoreStream) - (TERPRI CoreStream) - (SELECTQ TypeOfArchive - (ArchiveAll (printout CoreStream "Archive: " Pattern) - (SETQ MakeRequestFLG T)) - (ArchiveAndDeleteAll - (printout CoreStream "ArchiveAndDelete: " Pattern) - (SETQ MakeRequestFLG T)) - ((Archive ArchiveAndDelete) - (for CedarFileName in CedarFileNameList when CedarFileName - do (SELECTQ TypeOfArchive - (Archive (printout CoreStream "Archive: " CedarFileName T - )) - (ArchiveAndDelete - (printout CoreStream "ArchiveAndDelete: " - CedarFileName T)) - (SHOULDNT)) - (SETQ MakeRequestFLG T))) - (SHOULDNT)) - -(* ;;; "Send the mail off thru the Grapevine") - - (if MakeRequestFLG - then (SETQ CoreStream (OPENTEXTSTREAM CoreStream NIL NIL NIL - (LIST 'FONT LAFITEEDITORFONT))) - (ADD.PROCESS (LIST (FUNCTION \SENDMESSAGE) - (KWOTE CoreStream)) - 'NAME - 'ArchiveRequest]) -) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS Arch.CcToSelfFlg Arch.VerifyNotArchivedFlg OKCedarCharBitTable) -) - -(RPAQ OKCedarCharBitTable - [MAKEBITTABLE (APPEND (CHARCODE (%. $ - + * < > { })) - (for i from (CHARCODE a) - to - (CHARCODE z) - collect i) - (for i from (CHARCODE A) - to - (CHARCODE Z) - collect i) - (CHARCODE (0 1 2 3 4 5 6 7 8 9]) - -(RPAQ? Arch.CcToSelfFlg T) - -(RPAQ? Arch.VerifyNotArchivedFlg NIL) -(DECLARE%: DONTEVAL@LOAD DOCOPY - -(ADDTOVAR BackgroundMenuCommands (ArchiveBrowser '(ARCHIVEBROWSER) - "Brings up an archive browser")) - - -(SETQ BackgroundMenu) -) -(DECLARE%: EVAL@COMPILE DONTCOPY - -(FILESLOAD (SOURCE) - TABLEBROWSERDECLS) - - -(FILESLOAD (LOADCOMP) - FILEBROWSER) -) -(DECLARE%: DONTEVAL@LOAD DOCOPY - -[if (NOT (SASSOC "Archive" FB.MENU.ITEMS)) - then (PUTASSOC "Archive" '(FB.ArchiveCommand - "Archives selected files by sending mail to Archivist.pa" - (SUBITEMS ("Archive" FB.ArchiveCommand - "Archives selected files by sending mail to Archivist.pa" - ) - ("Archive ALL Files" FB.ArchiveAllCommand - "Archives ALL files in the browser by sending mail to Archivist.pa" - ) - ("Archive and Delete" FB.ArchiveAndDeleteCommand - "Archives selected files by sending an Archive and Delete request to Archivist.pa" - ) - ("Archive and Delete ALL Files" - FB.ArchiveAndDeleteAllCommand - "Archives ALL files in the browser by sending an Archive and Delete request to Archivist.pa" - ))) - FB.MENU.ITEMS) - else (RPLACD (SASSOC "Archive" FB.MENU.ITEMS) - '(FB.ArchiveCommand "Archives selected files by sending mail to Archivist.pa" - (SUBITEMS ("Archive" FB.ArchiveCommand - "Archives selected files by sending mail to Archivist.pa") - ("Archive ALL Files" FB.ArchiveAllCommand - "Archives ALL files in the browser by sending mail to Archivist.pa" - ) - ("Archive and Delete" FB.ArchiveAndDeleteCommand - "Archives selected files by sending an Archive and Delete request to Archivist.pa" - ) - ("Archive and Delete ALL Files" FB.ArchiveAndDeleteAllCommand - "Archives ALL files in the browser by sending an Archive and Delete request to Archivist.pa" - ] -) - - - -(* Functions that aren't used any more) - -(DEFINEQ - -(Arch.ParseReturnMsg - [LAMBDA (Window) (* bvm%: "19-Sep-85 12:32") - - (* * Parse an archive response msg contained in Window. - Returns a list of the files archived.) - - (PROG (TextObj TextStream CHAR#) - (RETURN - (COND - ((WINDOWP Window) - (SETQ TextObj (WINDOWPROP Window 'TEXTOBJ)) - (SETQ TextStream (WINDOWPROP Window 'TEXTSTREAM)) - (SETQ CHAR# 0) - (while (SETQ CHAR# (TEDIT.FIND TextStream "Archived:" (ADD1 CHAR#))) - collect (PACKFILENAME 'BODY - (U-CASE (PACKC (DSUBLIS (CHARCODE (("[" . "{") - ("]" . "}"))) - (PROGN (SETFILEPTR TextStream CHAR#) - (READ TextStream) - (until (NEQ (PEEKC TextStream) - '% ) - do (BIN TextStream)) - (until (EQ (PEEKC TextStream) - '% ) - collect (BIN TextStream]) - -(Arch.BackgroundMenuFn - [LAMBDA NIL (* fgh%: " 6-Feb-85 01:03") - - (* * Archive tool called from background menu. - Get from the user a window containing an archive system response message, parse - the messsage, and delete the archived files.) - - (PROG (Window PromptWindow FileList) - (PROMPTPRINT "Click in the window containing the response from Archivist.pa") - (SETQ Window (WHICHW (GETPOSITION))) - (CLRPROMPT) - (COND - ([AND (WINDOWP Window) - (TEXTSTREAMP (WINDOWPROP Window 'TEXTSTREAM] - (SETQ FileList (Arch.ParseReturnMsg Window)) - (COND - [FileList (SETQ PromptWindow (GETPROMPTWINDOW Window 5)) - (COND - ((MEMBER (PROMPTFORWORD "Okay to delete files? " "Yes" NIL PromptWindow) - '("Yes" "yes" "Y" "y")) - (CLEARW PromptWindow) - (bind Deleted? for File in FileList - do (SETQ Deleted? (DELFILE File)) - (printout PromptWindow (CONCAT File (COND - (Deleted? " deleted.") - (T " not deleted."))) - T) - (DISMISS 500)) - (printout PromptWindow "Deletions Completed" T) - (DISMISS 2000) - (REMOVEPROMPTWINDOW Window] - (T (SETQ PromptWindow (GETPROMPTWINDOW Window 1)) - (printout PromptWindow "No archived files found in message.") - (DISMISS 2000) - (REMOVEPROMPTWINDOW Window]) -) -(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS - -(ADDTOVAR NLAMA AB) - -(ADDTOVAR NLAML ) - -(ADDTOVAR LAMA ) -) -(PUTPROPS ARCHIVETOOL COPYRIGHT ("Xerox Corporation" 1985 1986 1988 1989)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (7582 15419 (ARCHIVEBROWSER 7592 . 15136) (AB 15138 . 15417)) (15467 38810 ( -AB.When.Selected.Fn 15477 . 15895) (AB.Command.Fn 15897 . 17465) (AB.Delete.Command 17467 . 18090) ( -AB.Expunge.Command 18092 . 21221) (AB.Filter.Command 21223 . 21826) (AB.Recompute.Command 21828 . -25391) (AB.Retrieve.Command 25393 . 28482) (AB.Retrieve.Directory.Command 28484 . 32193) ( -AB.Retrieve.Renamed.Command 32195 . 34005) (AB.Retrieve.Renamed.Aux 34007 . 35508) (AB.Sort.Command -35510 . 37893) (AB.Undelete.Command 37895 . 38808)) (38853 48488 (AB.Set.Browser.Title 38863 . 39473) -(AB.Iconfn 39475 . 40325) (AB.Closefn 40327 . 41097) (AB.Printfn 41099 . 42508) (AB.Prompt.For.Input -42510 . 44744) (AB.Read.Directory 44746 . 47727) (AB.Subitemp 47729 . 48164) (AB.Make.Cedar.Filename -48166 . 48486)) (52285 70125 (Arch.ConvertToCedarFileName 52295 . 56895) (FB.ArchiveCommand 56897 . -57174) (FB.ArchiveAllCommand 57176 . 57465) (FB.ArchiveAndDeleteCommand 57467 . 57789) ( -FB.ArchiveAndDeleteAllCommand 57791 . 58120) (FB.DoArchiveCommands 58122 . 70123)) (73559 77045 ( -Arch.ParseReturnMsg 73569 . 75078) (Arch.BackgroundMenuFn 75080 . 77043))))) -STOP diff --git a/obsolete/lispusers/ARCHIVETOOL.LCOM b/obsolete/lispusers/ARCHIVETOOL.LCOM deleted file mode 100644 index 28243eebb15f7cd13f1cc6343a9844f5a04346dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36948 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.;5 2459 - - changes to%: (VARS BIGGER-FONTCOMS) - - previous date%: "25-Jan-89 12:04:51" {QV}LISP>BIGGER-FONT.;4) - - -(* " -Copyright (c) 1989 by Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT BIGGER-FONTCOMS) - -(RPAQQ BIGGER-FONTCOMS ((ALISTS (FONTDEFS BIGGER)) (DECLARE%: DONTEVAL@LOAD DOCOPY (APPENDVARS (FONTVARS (ARBUTTONFONT BIGFONT) (ARBOLDFONT BOLDFONT) (ARFONT TEXTFONT) (*WHO-LINE-NAME-FONT* BOLDFONT T) (*WHO-LINE-VALUE-FONT* DEFAULTFONT T) (FB.ICONFONT LITTLEFONT) (FB.BROWSERFONT DEFAULTFONT) (FB.PROMPTFONT DEFAULTFONT) (FB.MENUFONT MENUFONT) (LAFITEEDITORFONT TEXTFONT) (LAFITEENDOFMESSAGEFONT COMMENTFONT) (LAFITEMSGICONFONT LITTLEFONT) (LAFITEBROWSERFONT DEFAULTFONT) (LAFITEFIXEDWIDTHFONT NIL) (LAFITETITLEFONT BIGFONT) (LAFITEMENUFONT MENUFONT) (LAFITE.FOLDER.MENU.FONT MENUFONT) (LAFITEDISPLAYFONT TEXTFONT T) ((NLSETQ (SEDIT:RESET))) ((NLSETQ (FILEWATCHPROP (QUOTE FONT) TINYFONT))))) (P (IF (>= SCREENWIDTH 1400) THEN (FONTSET (QUOTE BIGGER) T)))))) - -(ADDTOVAR FONTDEFS (BIGGER (FONTPROFILE (DEFAULTFONT 1 (TERMINAL 12) (GACHA 8) (TERMINAL 8)) (ITALICFONT 1 (HELVETICA 12 MIR) (GACHA 8 MIR) (MODERN 8 MIR)) (BOLDFONT 2 (HELVETICA 12 BRR) (HELVETICA 8 BRR) (MODERN 8 BRR)) (LITTLEFONT 3 (HELVETICA 10) (HELVETICA 6 MIR) (MODERN 8 MIR)) (TINYFONT 6 (GACHA 10) (GACHA 6) (TERMINAL 6)) (BIGFONT 4 (HELVETICA 14 BRR) NIL (MODERN 10 BRR)) (MENUFONT 5 (HELVETICA 12)) (COMMENTFONT 6 (HELVETICA 12) (HELVETICA 8) (MODERN 8)) (TEXTFONT 7 (TIMESROMAN 12) NIL (CLASSIC 10))))) -(DECLARE%: DONTEVAL@LOAD DOCOPY - -(APPENDTOVAR FONTVARS (ARBUTTONFONT BIGFONT) (ARBOLDFONT BOLDFONT) (ARFONT TEXTFONT) (*WHO-LINE-NAME-FONT* BOLDFONT T) - (*WHO-LINE-VALUE-FONT* DEFAULTFONT T) (FB.ICONFONT LITTLEFONT) (FB.BROWSERFONT DEFAULTFONT) (FB.PROMPTFONT DEFAULTFONT) - (FB.MENUFONT MENUFONT) (LAFITEEDITORFONT TEXTFONT) (LAFITEENDOFMESSAGEFONT COMMENTFONT) (LAFITEMSGICONFONT LITTLEFONT) - (LAFITEBROWSERFONT DEFAULTFONT) (LAFITEFIXEDWIDTHFONT NIL) (LAFITETITLEFONT BIGFONT) (LAFITEMENUFONT MENUFONT) - (LAFITE.FOLDER.MENU.FONT MENUFONT) (LAFITEDISPLAYFONT TEXTFONT T) ((NLSETQ (SEDIT:RESET))) ((NLSETQ (FILEWATCHPROP (QUOTE FONT) TINYFONT))) -) - - -(IF (>= SCREENWIDTH 1400) THEN (FONTSET (QUOTE BIGGER) T)) -) -(PUTPROPS BIGGER-FONT COPYRIGHT ("Xerox Corporation" 1989)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL))) -STOP diff --git a/obsolete/lispusers/BIGGER-FONT.LCOM b/obsolete/lispusers/BIGGER-FONT.LCOM deleted file mode 100644 index ca58d19d..00000000 --- a/obsolete/lispusers/BIGGER-FONT.LCOM +++ /dev/null @@ -1 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) (FILECREATED "31-Aug-94 14:46:03" ("compiled on " {DSK}lispusers>BIGGER-FONT.;1) "28-Jul-94 17:28:46" bcompl'd in "Medley 28-Jul-94 ..." dated "28-Jul-94 17:35:29") (FILECREATED "26-Jan-89 11:18:56" {QV}LISP>BIGGER-FONT.;5 2459 changes to%: (VARS BIGGER-FONTCOMS) previous date%: "25-Jan-89 12:04:51" {QV}LISP>BIGGER-FONT.;4) (PRETTYCOMPRINT BIGGER-FONTCOMS) (RPAQQ BIGGER-FONTCOMS ((ALISTS (FONTDEFS BIGGER)) (DECLARE%: DONTEVAL@LOAD DOCOPY (APPENDVARS ( FONTVARS (ARBUTTONFONT BIGFONT) (ARBOLDFONT BOLDFONT) (ARFONT TEXTFONT) (*WHO-LINE-NAME-FONT* BOLDFONT T) (*WHO-LINE-VALUE-FONT* DEFAULTFONT T) (FB.ICONFONT LITTLEFONT) (FB.BROWSERFONT DEFAULTFONT) ( FB.PROMPTFONT DEFAULTFONT) (FB.MENUFONT MENUFONT) (LAFITEEDITORFONT TEXTFONT) (LAFITEENDOFMESSAGEFONT COMMENTFONT) (LAFITEMSGICONFONT LITTLEFONT) (LAFITEBROWSERFONT DEFAULTFONT) (LAFITEFIXEDWIDTHFONT NIL) (LAFITETITLEFONT BIGFONT) (LAFITEMENUFONT MENUFONT) (LAFITE.FOLDER.MENU.FONT MENUFONT) ( LAFITEDISPLAYFONT TEXTFONT T) ((NLSETQ (SEDIT:RESET))) ((NLSETQ (FILEWATCHPROP (QUOTE FONT) TINYFONT)) ))) (P (IF (>= SCREENWIDTH 1400) THEN (FONTSET (QUOTE BIGGER) T)))))) (ADDTOVAR FONTDEFS (BIGGER (FONTPROFILE (DEFAULTFONT 1 (TERMINAL 12) (GACHA 8) (TERMINAL 8)) ( ITALICFONT 1 (HELVETICA 12 MIR) (GACHA 8 MIR) (MODERN 8 MIR)) (BOLDFONT 2 (HELVETICA 12 BRR) ( HELVETICA 8 BRR) (MODERN 8 BRR)) (LITTLEFONT 3 (HELVETICA 10) (HELVETICA 6 MIR) (MODERN 8 MIR)) ( TINYFONT 6 (GACHA 10) (GACHA 6) (TERMINAL 6)) (BIGFONT 4 (HELVETICA 14 BRR) NIL (MODERN 10 BRR)) ( MENUFONT 5 (HELVETICA 12)) (COMMENTFONT 6 (HELVETICA 12) (HELVETICA 8) (MODERN 8)) (TEXTFONT 7 ( TIMESROMAN 12) NIL (CLASSIC 10))))) (APPENDTOVAR FONTVARS (ARBUTTONFONT BIGFONT) (ARBOLDFONT BOLDFONT) (ARFONT TEXTFONT) ( *WHO-LINE-NAME-FONT* BOLDFONT T) (*WHO-LINE-VALUE-FONT* DEFAULTFONT T) (FB.ICONFONT LITTLEFONT) ( FB.BROWSERFONT DEFAULTFONT) (FB.PROMPTFONT DEFAULTFONT) (FB.MENUFONT MENUFONT) (LAFITEEDITORFONT TEXTFONT) (LAFITEENDOFMESSAGEFONT COMMENTFONT) (LAFITEMSGICONFONT LITTLEFONT) (LAFITEBROWSERFONT DEFAULTFONT) (LAFITEFIXEDWIDTHFONT NIL) (LAFITETITLEFONT BIGFONT) (LAFITEMENUFONT MENUFONT) ( LAFITE.FOLDER.MENU.FONT MENUFONT) (LAFITEDISPLAYFONT TEXTFONT T) ((NLSETQ (SEDIT:RESET))) ((NLSETQ ( FILEWATCHPROP (QUOTE FONT) TINYFONT)))) (IF (>= SCREENWIDTH 1400) THEN (FONTSET (QUOTE BIGGER) T)) (PUTPROPS BIGGER-FONT COPYRIGHT ("Xerox Corporation" 1989)) NIL \ No newline at end of file diff --git a/obsolete/lispusers/COLOR b/obsolete/lispusers/COLOR deleted file mode 100644 index 13695db2..00000000 --- a/obsolete/lispusers/COLOR +++ /dev/null @@ -1 +0,0 @@ -(DEFINE-FILE-INFO §PACKAGE "INTERLISP" §READTABLE "INTERLISP" §BASE 10) (FILECREATED "27-Jan-87 15:56:46" {ERIS}NEXT>COLOR.;2 65054 changes to%: (VARS COLORCOMS EditColorMapHeight EditColorMapWidth DICOLOR.hueMapping DICOLOR.lightnessMapping DICOLOR.saturationMapping NEWCOLORITEM DICOLOR.hueConstants DICOLOR.achromatic DICOLOR.blue DICOLOR.bluePurple DICOLOR.bluishGreen DICOLOR.bluishPurple DICOLOR.brown DICOLOR.brownYellow DICOLOR.brownishRed DICOLOR.brownishYellow DICOLOR.green DICOLOR.greenBlue DICOLOR.greenishBlue DICOLOR.greenishYellow DICOLOR.orange DICOLOR.orangeYellow DICOLOR.orangishRed DICOLOR.orangishYellow DICOLOR.purple DICOLOR.purpleRed DICOLOR.purplishBlue DICOLOR.purplishRed DICOLOR.red DICOLOR.redBrown DICOLOR.redOrange DICOLOR.reddishBrown DICOLOR.reddishOrange DICOLOR.reddishPurple DICOLOR.yellow DICOLOR.yellowGreen DICOLOR.yellowishBrown DICOLOR.yellowishGreen DICOLOR.yellowishOrange DICOLOR.saturationConstants DICOLOR.noSaturation DICOLOR.grayish DICOLOR.moderate DICOLOR.strong DICOLOR.vivid DICOLOR.lightnessConstants DICOLOR.black DICOLOR.veryDark DICOLOR.dark DICOLOR.medium DICOLOR.light DICOLOR.veryLight DICOLOR.white) (FNS DISPLAYCOLORLEVELS DISPLAYHLSLEVELS HLSLEVEL HLSTORGB HLSVALUEFN HLSVALUEFROMLEVEL LEVELFROMHLSVALUE RAINBOWMAP RGBTOHLS OVERPAINT BITMAPFROMSTRING SHADEBITMAP EDITCOLORMAP GETCOLOR#FROMUSER GETCOLOR#FROMSCREEN DISPLAYCOLORLEVEL FILLINREGION AREAFILL CENTEREDLEFT OUTLINEAREA OUTLINEREGION ADJUSTCOLORMAP SHOWCOLORBLOCKS MAPOFACOLOR CNSMENUINIT CNSTOCSL CNSTORGB CSLTOCNS DICOLOR.FROM.USER GETCNS HLSTOCSL CSLTOHLS RGBTOCNS DICOLOR.hueN DICOLOR.hueNvalue DICOLOR.hueNname DICOLOR.lightnessN DICOLOR.lightnessNvalue DICOLOR.lightnessNname DICOLOR.saturationN DICOLOR.saturationNvalue DICOLOR.saturationNname) (RECORDS hueRecord lightnessRecord saturationRecord) previous date%: "16-Jan-87 18:20:53" {ERIS}NEXT>COLOR.;1) (* " Copyright (c) 1982, 1983, 1985, 1986, 1987 by Xerox Corporation. All rights reserved. ") (PRETTYCOMPRINT COLORCOMS) (RPAQQ COLORCOMS [(FNS DISPLAYCOLORLEVELS DISPLAYHLSLEVELS HLSLEVEL HLSTORGB HLSVALUEFN HLSVALUEFROMLEVEL LEVELFROMHLSVALUE RAINBOWMAP RGBTOHLS) (FNS OVERPAINT BITMAPFROMSTRING SHADEBITMAP) (INITVARS (EDITCOLORMAP.WINDOW NIL)) (FNS EDITCOLORMAP EDITCOLORMAP.BUTTONEVENTFN EDITCOLORMAP.REDISPLAYFN EDITCOLORMAP.VALUELEVEL EDITCOLORMAP.WINDOWLEVEL CHANGECOLORLEVELS GETCOLOR#FROMUSER GETCOLOR#FROMSCREEN DISPLAYCOLORLEVEL FILLINREGION AREAFILL CENTEREDLEFT OUTLINEAREA OUTLINEREGION) (FNS ADJUSTCOLORMAP SHOWCOLORBLOCKS MAPOFACOLOR COLORHEXPATTERN) (VARS EditColorMapHeight EditColorMapWidth (COLOR#MENUSAVE) (CONTROLMENUSAVE) (EDIT8BITCOLORMAPMENU) (EDIT8BITCOLORMAPNUMBERREADER)) (GLOBALVARS COLOR#MENUSAVE CONTROLMENUSAVE EDIT8BITCOLORMAPMENU EDIT8BITCOLORMAPNUMBERREADER EditColorMapHeight EditColorMapWidth) (COMS (* ;;; "support for global naming and querying of colors.") (FNS CNSMENUINIT CNSTOCSL CNSTORGB CSLTOCNS DICOLOR.FROM.USER GETCNS HLSTOCSL CSLTOHLS RGBTOCNS) (VARS DICOLOR.hueMapping DICOLOR.lightnessMapping DICOLOR.saturationMapping NEWCOLORITEM) (INITVARS (COLORNAMEMENU)) (FNS DICOLOR.hueN DICOLOR.hueNvalue DICOLOR.hueNname DICOLOR.lightnessN DICOLOR.lightnessNvalue DICOLOR.lightnessNname DICOLOR.saturationN DICOLOR.saturationNvalue DICOLOR.saturationNname) (DECLARE%: EVAL@LOAD DONTCOPY (*) (RECORDS hueRecord lightnessRecord saturationRecord) (CONSTANTS * DICOLOR.hueConstants) (CONSTANTS * DICOLOR.saturationConstants) (CONSTANTS * DICOLOR.lightnessConstants)) (P (CNSMENUINIT))) (FILES LLCOLOR READNUMBER) (P (SETQ EDITBMMENU NIL) (MOVD 'ARRAYP 'COLORMAPP]) (DEFINEQ (DISPLAYCOLORLEVELS [LAMBDA (WINDOW RGB) (* kbr%: " 3-Jun-86 19:45") (PROG (HLS) (DISPLAYCOLORLEVEL WINDOW 'RED (fetch (RGB RED) of RGB) (fetch (RGB RED) of RGB)) (DISPLAYCOLORLEVEL WINDOW 'GREEN (fetch (RGB GREEN) of RGB) (fetch (RGB GREEN) of RGB)) (DISPLAYCOLORLEVEL WINDOW 'BLUE (fetch (RGB BLUE) of RGB) (fetch (RGB BLUE) of RGB)) (SETQ HLS (RGBTOHLS RGB)) (DISPLAYCOLORLEVEL WINDOW 'HUE (fetch (HLS HUE) of HLS) (EDITCOLORMAP.WINDOWLEVEL 'HUE (fetch (HLS HUE) of HLS))) (DISPLAYCOLORLEVEL WINDOW 'LIGHTNESS (fetch (HLS LIGHTNESS) of HLS) (EDITCOLORMAP.WINDOWLEVEL 'LIGHTNESS (fetch (HLS LIGHTNESS) of HLS))) (DISPLAYCOLORLEVEL WINDOW 'SATURATION (fetch (HLS SATURATION) of HLS) (EDITCOLORMAP.WINDOWLEVEL 'SATURATION (fetch (HLS SATURATION) of HLS]) (DISPLAYHLSLEVELS [LAMBDA (HLS WIN) (* rrb "25-OCT-82 14:08") (* displays a hue lightness saturation triple in the edit window.) (DISPLAYHLSLEVEL HLS 'HUE NIL WIN) (DISPLAYHLSLEVEL HLS 'LIGHTNESS NIL WIN) (DISPLAYHLSLEVEL HLS 'SATURATION NIL WIN]) (HLSLEVEL [LAMBDA (HLS FIELD NEWLEVEL) (* rrb "25-OCT-82 13:29") (* returns the value of the named field from a hue lightness saturation record.) (SELECTQ FIELD (HUE (PROG1 (fetch (HLS HUE) of HLS) (AND NEWLEVEL (replace (HLS HUE) of HLS with NEWLEVEL)))) (LIGHTNESS (PROG1 (fetch (HLS LIGHTNESS) of HLS) (AND NEWLEVEL (replace (HLS LIGHTNESS) of HLS with NEWLEVEL)))) (SATURATION (PROG1 (fetch (HLS SATURATION) of HLS) (AND NEWLEVEL (replace (HLS SATURATION) of HLS with NEWLEVEL)))) (SHOULDNT]) (HLSTORGB [LAMBDA (HLS LIGHTNESS SATURATION) (* kbr%: " 3-Jun-86 21:16") (* Converts from a hue saturation lightness triple into red green blue triple.  HUE is in range 0 to 360, lightness and saturation are in the range 0 to 1.0 *) (* This algorithm was taken from siggraph vol 13 number 3 August 1979%: Status  report on graphics standards planning committee.  *) (PROG (HUE M1 M2 RGB) (COND ((LISTP HLS) (SETQ HUE (fetch (HLS HUE) of HLS)) (SETQ LIGHTNESS (fetch (HLS LIGHTNESS) of HLS)) (SETQ SATURATION (fetch (HLS SATURATION) of HLS))) (T (SETQ HUE HLS))) [SETQ M1 (COND ((FGREATERP 0.5 LIGHTNESS) (FTIMES LIGHTNESS (FPLUS 1.0 SATURATION))) (T (FDIFFERENCE (FPLUS LIGHTNESS SATURATION) (FTIMES LIGHTNESS SATURATION] (SETQ M2 (FDIFFERENCE (FTIMES 2.0 LIGHTNESS) M1)) [SETQ RGB (create RGB RED _ (HLSVALUEFN M1 M2 HUE) GREEN _ (HLSVALUEFN M1 M2 (IDIFFERENCE HUE 120)) BLUE _ (HLSVALUEFN M1 M2 (IDIFFERENCE HUE 240] (RETURN RGB]) (HLSVALUEFN [LAMBDA (M1 M2 HUE) (* kbr%: " 3-Jun-86 20:45") (* Internal value function for converting from HLS to RGB.  *) (SETQ HUE (IMOD HUE 360)) (FIX (FTIMES (COND ((ILESSP HUE 60) M1) [(ILESSP HUE 120) (FPLUS M1 (FTIMES (FQUOTIENT (FDIFFERENCE HUE 60) 60) (FDIFFERENCE M2 M1] ((ILESSP HUE 240) M2) [(ILESSP HUE 300) (FPLUS M2 (FTIMES (FQUOTIENT (FDIFFERENCE HUE 240) 60) (FDIFFERENCE M1 M2] (T M1)) 255]) (HLSVALUEFROMLEVEL [LAMBDA (HLS LEVEL) (* rrb "25-OCT-82 13:26") (* returns the scaled value of the hls marker on a scale from 0 to 255) (SELECTQ HLS (HUE (IQUOTIENT (ITIMES LEVEL 360) 255)) (FQUOTIENT LEVEL 255]) (LEVELFROMHLSVALUE [LAMBDA (HLS LEVEL) (* rrb "25-OCT-82 14:06") (* returns the level on a scale from 0 to 255 that this value would have.) (SELECTQ HLS (HUE (IQUOTIENT (ITIMES LEVEL 255) 360)) (FIX (FTIMES LEVEL 255]) (RAINBOWMAP [LAMBDA (NBITS) (* rrb "21-OCT-82 18:14") [OR NBITS (NULL (COLORDISPLAYP)) (SETQ NBITS (COLORMAPBITS (SCREENCOLORMAP] (COLORMAPCREATE (COND [(EQ NBITS 8) (PROG (MAXINTENSITY MINVISIBLERED MINVISIBLEBLUE MINVISIBLEGREEN NSTEPS REDSTEPSIZE GREENSTEPSIZE BLUESTEPSIZE) (SETQ MAXINTENSITY 255) (SETQ MINVISIBLERED 69) (SETQ MINVISIBLEBLUE 38) (SETQ MINVISIBLEGREEN 38) (SETQ NSTEPS (IQUOTIENT (EXPT 2 NBITS) 8)) (* determine how many steps are available for each transition from one color to  the next. There are 8 such transitions. red up, green up, red down, blue up,  green down, red up, green up, all down) (* minimum visible intensity values were emperically determined but will differ  depending upon the brightness setting of the individual display.  They are also diddled to make the numer of steps come out right.) (RETURN (NCONC (for I from MINVISIBLERED to MAXINTENSITY by (SETQ REDSTEPSIZE (IQUOTIENT (IPLUS (IDIFFERENCE MAXINTENSITY MINVISIBLERED ) NSTEPS -2) NSTEPS)) collect (* red up) (LIST I 0 0)) (for I from MINVISIBLEGREEN to MAXINTENSITY by (SETQ GREENSTEPSIZE (IQUOTIENT (IPLUS (IDIFFERENCE MAXINTENSITY MINVISIBLEGREEN ) -1 NSTEPS) NSTEPS)) collect (* GREEN UP) (LIST 255 I 0)) (for I from REDSTEPSIZE to (IDIFFERENCE MAXINTENSITY MINVISIBLERED) by REDSTEPSIZE collect (* red down) (LIST (IDIFFERENCE MAXINTENSITY I) 255 0)) (CONS '(0 255 0)) (for I from MINVISIBLEBLUE to MAXINTENSITY by (SETQ BLUESTEPSIZE (IQUOTIENT (IPLUS (IDIFFERENCE MAXINTENSITY MINVISIBLEBLUE ) -1 NSTEPS) NSTEPS)) collect (* BLUE UP) (LIST 0 255 I)) (for I from GREENSTEPSIZE to (IDIFFERENCE MAXINTENSITY MINVISIBLEGREEN) by GREENSTEPSIZE collect (* GREEN down) (LIST 0 (IDIFFERENCE MAXINTENSITY I) 255)) (CONS '(0 0 255)) (for I from MINVISIBLERED to MAXINTENSITY by REDSTEPSIZE collect (* red up) (LIST I 0 255)) (for I from MINVISIBLEGREEN to MAXINTENSITY by GREENSTEPSIZE collect (* GREEN UP) (LIST 255 I 255)) (for I from GREENSTEPSIZE to (IDIFFERENCE MAXINTENSITY MINVISIBLEGREEN) by GREENSTEPSIZE collect (* all down) (LIST (IDIFFERENCE MAXINTENSITY I) (IDIFFERENCE MAXINTENSITY I) (IDIFFERENCE MAXINTENSITY I))) (CONS '(0 0 0] (T RAINBOWINTENSITIES)) NBITS]) (RGBTOHLS [LAMBDA (RGB GREEN BLUE) (* kbr%: " 3-Jun-86 20:13") (* Converts from a red green blue triple of color information into a hue  lightness saturation triple. *) (* This algorithm was taken from Procedural Elements for Computer Graphics 1985  page 405 by David F. Rogers *) (PROG (RED CR CG CB M1 M2 LIGHTNESS HLS) (COND ((LISTP RGB) (SETQ RED (fetch (RGB RED) of RGB)) (SETQ GREEN (fetch (RGB GREEN) of RGB)) (SETQ BLUE (fetch (RGB BLUE) of RGB))) (T (SETQ RED RGB))) (SETQ M1 (MAX RED GREEN BLUE)) (SETQ M2 (MIN RED GREEN BLUE)) (SETQ LIGHTNESS (FQUOTIENT (FPLUS (FQUOTIENT M1 255) (FQUOTIENT M2 255)) 2)) [SETQ HLS (COND ((EQ M1 M2) (create HLS HUE _ 0 LIGHTNESS _ LIGHTNESS SATURATION _ 0.0)) (T (SETQ CR (FQUOTIENT (IDIFFERENCE M1 RED) (IDIFFERENCE M1 M2))) (SETQ CG (FQUOTIENT (IDIFFERENCE M1 GREEN) (IDIFFERENCE M1 M2))) (SETQ CB (FQUOTIENT (IDIFFERENCE M1 BLUE) (IDIFFERENCE M1 M2))) (create HLS HUE _ (IMOD (FIX (FTIMES [COND ((EQ M1 RED) (FDIFFERENCE CB CG)) ((EQ M1 GREEN) (FPLUS 2.0 (FDIFFERENCE CR CB))) (T (FPLUS 4.0 (FDIFFERENCE CG CR] 60.0)) 360) LIGHTNESS _ LIGHTNESS SATURATION _ (COND ((FGREATERP 0.5 LIGHTNESS) (FQUOTIENT (IDIFFERENCE M1 M2) (IPLUS M1 M2))) (T (FQUOTIENT (IDIFFERENCE M1 M2) (IDIFFERENCE (ITIMES 2 255) (IPLUS M1 M2] (RETURN HLS]) ) (DEFINEQ (OVERPAINT [LAMBDA (BM1 BM2 X Y TXT SCR) (* kbr%: " 2-Sep-85 20:30") (* Uses BM1 as a mask thru which it paints the INVERSE of texture onto BM2 at  position X Y) (PROG (BMW BMH) (SETQ BMW (BITMAPWIDTH BM1)) (SETQ BMH (BITMAPHEIGHT BM1)) (OR SCR (SETQ SCR (BITMAPCOPY BM1))) (* We need a scratch BM.  Most demos cache one) (BITBLT BM1 0 0 SCR 0 0 BMW BMH 'INPUT 'REPLACE) (BITBLT NIL NIL NIL SCR 0 0 BMW BMH 'TEXTURE 'ERASE TXT) (BITBLT BM1 0 0 BM2 X Y BMW BMH 'INPUT 'ERASE) (BITBLT SCR 0 0 BM2 X Y BMW BMH 'INPUT 'PAINT]) (BITMAPFROMSTRING [LAMBDA (STRING FONT BITSPERPIXEL) (* kbr%: "11-Aug-85 16:14") (PROG (BITMAP DS) (SETQ BITMAP (BITMAPCREATE (STRINGWIDTH STRING FONT) (FONTPROP FONT 'HEIGHT) BITSPERPIXEL)) (SETQ DS (DSPCREATE BITMAP)) (DSPFONT FONT DS) (MOVETO 0 (FONTPROP FONT 'DESCENT) DS) (PRIN3 STRING DS) (RETURN BITMAP]) (SHADEBITMAP [LAMBDA (BM T0 T1) (* bas%: "25-APR-82 15:02") (* Shades bitmap BM with T0 into 0 areas and T1 into 1 areas) (BITBLT NIL NIL NIL BM NIL NIL NIL NIL 'TEXTURE 'INVERT (LOGAND T0 (LOGXOR T0 T1))) (BITBLT NIL NIL NIL BM NIL NIL NIL NIL 'TEXTURE 'PAINT (LOGAND T0 T1)) (BITBLT NIL NIL NIL BM NIL NIL NIL NIL 'TEXTURE 'ERASE (LOGXOR (LOGOR T0 T1) 65535]) ) (RPAQ? EDITCOLORMAP.WINDOW NIL) (DEFINEQ (EDITCOLORMAP [LAMBDA NIL (* kbr%: " 5-Jun-86 22:49") (* Colormap Editor. Let's user  interactively adjust colormap.  *) (PROG (XPOS REDREGION GREENREGION BLUEREGION HUEREGION LIGHTNESSREGION SATURATIONREGION BOTTOM) (COND ((NULL EDITCOLORMAP.WINDOW) (SETQ EDITCOLORMAP.WINDOW (CREATEW (GETBOXREGION EditColorMapWidth EditColorMapHeight NIL NIL NIL "Select location of Colormap Editor window.") "Colormap Editor")) (CLRPROMPT) (WINDOWPROP EDITCOLORMAP.WINDOW 'BUTTONEVENTFN 'EDITCOLORMAP.BUTTONEVENTFN) (WINDOWPROP EDITCOLORMAP.WINDOW 'REPAINTFN 'EDITCOLORMAP.REDISPLAYFN) (WINDOWPROP EDITCOLORMAP.WINDOW 'COLOR 0)) (T (CLEARW EDITCOLORMAP.WINDOW))) (REDISPLAYW EDITCOLORMAP.WINDOW]) (EDITCOLORMAP.BUTTONEVENTFN [LAMBDA (WINDOW) (* kbr%: " 4-Jun-86 21:21") (* Colormap editor. Displays a colormap in a window and allows the user to  change it. *) (PROG (REDREGION GREENREGION BLUEREGION HUEREGION LIGHTNESSREGION SATURATIONREGION BOTTOM COLOR COLORMAP LEVEL LASTX LASTY HLS OLDLEVEL COMPONENT) (PROGN (SETQ REDREGION (WINDOWPROP WINDOW 'REDREGION)) (SETQ GREENREGION (WINDOWPROP WINDOW 'GREENREGION)) (SETQ BLUEREGION (WINDOWPROP WINDOW 'BLUEREGION)) (SETQ HUEREGION (WINDOWPROP WINDOW 'HUEREGION)) (SETQ LIGHTNESSREGION (WINDOWPROP WINDOW 'LIGHTNESSREGION)) (SETQ SATURATIONREGION (WINDOWPROP WINDOW 'SATURATIONREGION)) (SETQ BOTTOM (fetch (REGION BOTTOM) of REDREGION))) (SETQ COLOR (WINDOWPROP WINDOW 'COLOR)) (SETQ COLORMAP (SCREENCOLORMAP)) (COND [(LASTMOUSESTATE MIDDLE) (COND ((NUMBERP (SETQ LEVEL (GETCOLOR#FROMUSER))) (WINDOWPROP WINDOW 'COLOR LEVEL) (REDISPLAYW WINDOW] ((LASTMOUSESTATE LEFT) (SETQ LASTX (LASTMOUSEX WINDOW)) (SETQ LASTY (LASTMOUSEY WINDOW)) (COND ([SETQ COMPONENT (COND ((INSIDEP REDREGION LASTX LASTY) 'RED) ((INSIDEP GREENREGION LASTX LASTY) 'GREEN) ((INSIDEP BLUEREGION LASTX LASTY) 'BLUE) ((INSIDEP HUEREGION LASTX LASTY) 'HUE) ((INSIDEP LIGHTNESSREGION LASTX LASTY) 'LIGHTNESS) ((INSIDEP SATURATIONREGION LASTX LASTY) 'SATURATION] (SETQ OLDLEVEL (WINDOWPROP WINDOW COMPONENT)) (until (MOUSESTATE (NOT LEFT)) do (* As long as LEFT is down, adjust the color.  *) [SETQ LEVEL (IMIN 255 (IMAX 0 (IDIFFERENCE (LASTMOUSEY WINDOW ) BOTTOM] (COND ((NOT (EQ LEVEL OLDLEVEL)) (CHANGECOLORLEVELS WINDOW COMPONENT LEVEL) [SCREENCOLORMAPENTRY COLOR (create RGB RED _ (WINDOWPROP WINDOW 'RED) GREEN _ (WINDOWPROP WINDOW 'GREEN) BLUE _ (WINDOWPROP WINDOW 'BLUE] (SETQ OLDLEVEL LEVEL]) (EDITCOLORMAP.REDISPLAYFN [LAMBDA (WINDOW) (* kbr%: " 4-Jun-86 20:46") (* Colormap Editor. Let's user  interactively adjust colormap.  *) (PROG (XPOS REDREGION GREENREGION BLUEREGION HUEREGION LIGHTNESSREGION SATURATIONREGION BOTTOM COLORMAP COLOR) (CLEARW WINDOW) (PROGN (MOVETO 35 4 WINDOW) (PRIN1 "RED" WINDOW) (SETQ REDREGION '(40 16 10 256)) (OUTLINEREGION REDREGION 2 NIL WINDOW) (WINDOWPROP WINDOW 'REDREGION REDREGION)) (PROGN (MOVETO 70 4 WINDOW) (PRIN1 "GREEN" WINDOW) (SETQ GREENREGION '(82 16 10 256)) (OUTLINEREGION GREENREGION 2 NIL WINDOW) (WINDOWPROP WINDOW 'GREENREGION GREENREGION)) (PROGN (MOVETO 119 4 WINDOW) (PRIN1 "BLUE" WINDOW) (SETQ BLUEREGION '(128 16 10 256)) (OUTLINEREGION BLUEREGION 2 NIL WINDOW) (WINDOWPROP WINDOW 'BLUEREGION BLUEREGION)) (PROGN (MOVETO 181 4 WINDOW) (PRIN1 "HUE" WINDOW) (SETQ HUEREGION '(186 16 10 256)) (OUTLINEREGION HUEREGION 2 NIL WINDOW) (WINDOWPROP WINDOW 'HUEREGION HUEREGION)) (PROGN (MOVETO 216 4 WINDOW) (PRIN1 "LIGHTNESS" WINDOW) (SETQ LIGHTNESSREGION '(242 16 10 256)) (OUTLINEREGION LIGHTNESSREGION 2 NIL WINDOW) (WINDOWPROP WINDOW 'LIGHTNESSREGION LIGHTNESSREGION)) (PROGN (MOVETO 300 4 WINDOW) (PRIN1 "SAT" WINDOW) (SETQ SATURATIONREGION '(305 16 10 256)) (OUTLINEREGION SATURATIONREGION 2 NIL WINDOW) (WINDOWPROP WINDOW 'SATURATIONREGION SATURATIONREGION)) (PROGN (SETQ COLORMAP (SCREENCOLORMAP)) (SETQ COLOR (WINDOWPROP WINDOW 'COLOR)) (MOVETO 8 250 WINDOW) (printout WINDOW |.I3| COLOR) (DISPLAYCOLORLEVELS WINDOW (ELT COLORMAP COLOR]) (EDITCOLORMAP.VALUELEVEL [LAMBDA (COMPONENT WINDOWLEVEL) (* kbr%: " 3-Jun-86 19:55") (* * Value that would be stored in an RGB or HLS corresponding to WINDOWLEVEL.  *) (SELECTQ COMPONENT (HUE (IQUOTIENT (ITIMES WINDOWLEVEL 360) 255)) ((LIGHTNESS SATURATION) (FQUOTIENT WINDOWLEVEL 255)) ((RED GREEN BLUE) WINDOWLEVEL) (SHOULDNT]) (EDITCOLORMAP.WINDOWLEVEL [LAMBDA (COMPONENT VALUELEVEL) (* kbr%: " 3-Jun-86 19:55") (* * Given VALUELEVEL of an RGB or HLS, what WINDOWLEVEL should be used to  display it? *) (SELECTQ COMPONENT (HUE (IQUOTIENT (ITIMES VALUELEVEL 255) 360)) ((LIGHTNESS SATURATION) (FIX (FTIMES VALUELEVEL 255))) ((RED GREEN BLUE) VALUELEVEL) (SHOULDNT]) (CHANGECOLORLEVELS [LAMBDA (WINDOW COMPONENT WINDOWLEVEL) (* kbr%: " 3-Jun-86 19:55") (PROG (RGB HLS) (DISPLAYCOLORLEVEL WINDOW COMPONENT (EDITCOLORMAP.VALUELEVEL COMPONENT WINDOWLEVEL) WINDOWLEVEL) (SELECTQ COMPONENT ((RED GREEN BLUE) [SETQ HLS (RGBTOHLS (WINDOWPROP WINDOW 'RED) (WINDOWPROP WINDOW 'GREEN) (WINDOWPROP WINDOW 'BLUE] (DISPLAYCOLORLEVEL WINDOW 'HUE (fetch (HLS HUE) of HLS) (EDITCOLORMAP.WINDOWLEVEL 'HUE (fetch (HLS HUE) of HLS))) (DISPLAYCOLORLEVEL WINDOW 'LIGHTNESS (fetch (HLS LIGHTNESS) of HLS) (EDITCOLORMAP.WINDOWLEVEL 'LIGHTNESS (fetch (HLS LIGHTNESS) of HLS))) (DISPLAYCOLORLEVEL WINDOW 'SATURATION (fetch (HLS SATURATION) of HLS) (EDITCOLORMAP.WINDOWLEVEL 'SATURATION (fetch (HLS SATURATION) of HLS)))) ((HUE LIGHTNESS SATURATION) [SETQ RGB (HLSTORGB (EDITCOLORMAP.VALUELEVEL 'HUE (WINDOWPROP WINDOW 'HUE)) (EDITCOLORMAP.VALUELEVEL 'LIGHTNESS (WINDOWPROP WINDOW 'LIGHTNESS)) (EDITCOLORMAP.VALUELEVEL 'SATURATION (WINDOWPROP WINDOW 'SATURATION] (DISPLAYCOLORLEVEL WINDOW 'RED (fetch (RGB RED) of RGB) (fetch (RGB RED) of RGB)) (DISPLAYCOLORLEVEL WINDOW 'GREEN (fetch (RGB GREEN) of RGB) (fetch (RGB GREEN) of RGB)) (DISPLAYCOLORLEVEL WINDOW 'BLUE (fetch (RGB BLUE) of RGB) (fetch (RGB BLUE) of RGB))) (SHOULDNT]) (GETCOLOR#FROMUSER [LAMBDA NIL (* edited%: " 8-SEP-82 21:44") (* reads a color number from the user.) (PROG (RESPONSE) (MOVEW [COND ((TYPENAMEP EDIT8BITCOLORMAPNUMBERREADER 'WINDOW) EDIT8BITCOLORMAPNUMBERREADER) (T (SETQ EDIT8BITCOLORMAPNUMBERREADER (CREATE.NUMBERPAD.READER '(Enter color number to edit%:) (create POSITION XCOORD _ LASTMOUSEX YCOORD _ LASTMOUSEY] (create POSITION XCOORD _ LASTMOUSEX YCOORD _ LASTMOUSEY)) LP (COND ([NULL (ERSETQ (SETQ RESPONSE (NUMBERPAD.READ EDIT8BITCOLORMAPNUMBERREADER] (* currently there is no way NIL can be returned from NUMBERPAD.READ but there  should be a way to quit.) (RETURN NIL)) ((OR (ILESSP RESPONSE 0) (IGREATERP RESPONSE 255)) (PROMPTPRINT "Color numbers must be between 0 and 255.") (GO LP)) (T (RETURN RESPONSE]) (GETCOLOR#FROMSCREEN [LAMBDA NIL (* rrb " 3-NOV-82 13:57") (* returns the color number of a point selected by the user.) (RESETFORM (CHANGECURSORSCREEN (COLORSCREENBITMAP)) (PROG (POS) (SETQ POS (GETPOSITION)) (RETURN (AND POS (BITMAPBIT (COLORSCREENBITMAP) (fetch (POSITION XCOORD) of POS) (fetch (POSITION YCOORD) of POS]) (DISPLAYCOLORLEVEL [LAMBDA (WINDOW COMPONENT NEWLEVEL WINDOWLEVEL) (* kbr%: " 4-Jun-86 20:23") (PROG (REGION) (WINDOWPROP WINDOW COMPONENT WINDOWLEVEL) (SETQ REGION (SELECTQ COMPONENT (RED (WINDOWPROP WINDOW 'REDREGION)) (BLUE (WINDOWPROP WINDOW 'BLUEREGION)) (GREEN (WINDOWPROP WINDOW 'GREENREGION)) (HUE (WINDOWPROP WINDOW 'HUEREGION)) (LIGHTNESS (WINDOWPROP WINDOW 'LIGHTNESSREGION)) (SATURATION (WINDOWPROP WINDOW 'SATURATIONREGION)) (SHOULDNT))) [PROGN (* Print out new level of COMPONENT.  *) (MOVETO (IDIFFERENCE (fetch (REGION LEFT) of REGION) 12) (IPLUS 8 (fetch (REGION TOP) of REGION)) WINDOW) (* Overstrike extra digits in case the old value was larger.  *) (COND ((FIXP NEWLEVEL) (printout WINDOW " " |.I3| NEWLEVEL)) (T (printout WINDOW |.F5.3| NEWLEVEL] (FILLINREGION REGION WINDOWLEVEL GRAYSHADE WINDOW]) (FILLINREGION [LAMBDA (REGION HEIGHT GRAY WINDOW) (* rrb "23-FEB-82 12:26") (* fills part of a region with gray.) (DSPFILL REGION WHITESHADE 'REPLACE WINDOW) (AREAFILL (fetch (REGION LEFT) of REGION) (fetch (REGION BOTTOM) of REGION) (fetch (REGION WIDTH) of REGION) HEIGHT GRAY 'REPLACE WINDOW]) (AREAFILL [LAMBDA (LFT BTM WDTH HGTH SHADE OPERATION WINDOW) (* fills an area of a window with  shade.) (BITBLT NIL NIL NIL WINDOW LFT BTM WDTH HGTH 'TEXTURE OPERATION SHADE]) (CENTEREDLEFT [LAMBDA (WIDTH LEFT RIGHT) (* rrb "16-FEB-82 14:58") (* returns the left point that would leave WIDTH centered between LEFT and  RIGHT) (IQUOTIENT (IDIFFERENCE (IPLUS LEFT RIGHT) WIDTH) 2]) (OUTLINEAREA [LAMBDA (LFT BTM WDTH HGHT LINEWIDTH OPERATION WIN) (* rrb "17-FEB-82 10:59") (* outlines an area of a window.) (PROG (LEFTPLUSWIDTH RIGHTLINELEFT VERTLINETOP TOPY LINEWIDTH) (SETQ LINEWIDTH (OR (NUMBERP LINEWIDTH) 1)) (SETQ LFT (IDIFFERENCE LFT LINEWIDTH)) (SETQ BTM (IDIFFERENCE BTM LINEWIDTH)) (SETQ WDTH (IPLUS WDTH (ITIMES LINEWIDTH 2))) (SETQ HGHT (IPLUS HGHT (ITIMES LINEWIDTH 2))) (DRAWLINE LFT BTM LFT (SETQ VERTLINETOP (SUB1 (IPLUS BTM HGHT))) LINEWIDTH OPERATION WIN) (DRAWLINE (SETQ RIGHTLINELEFT (IDIFFERENCE (IPLUS LFT WDTH) LINEWIDTH)) BTM RIGHTLINELEFT VERTLINETOP LINEWIDTH OPERATION WIN) (DRAWLINE (SETQ LEFTPLUSWIDTH (IPLUS LFT LINEWIDTH)) BTM (SETQ RIGHTLINELEFT (SUB1 RIGHTLINELEFT)) BTM LINEWIDTH OPERATION WIN) (DRAWLINE LEFTPLUSWIDTH (SETQ TOPY (ADD1 (IDIFFERENCE VERTLINETOP LINEWIDTH))) RIGHTLINELEFT TOPY LINEWIDTH OPERATION WIN]) (OUTLINEREGION [LAMBDA (REGION OUTLINEWIDTH OPERATION WIN) (* rrb "17-FEB-82 10:58") (* outlines the region REGION with a  width wide line) (OUTLINEAREA (fetch (REGION LEFT) of REGION) (fetch (REGION BOTTOM) of REGION) (fetch (REGION WIDTH) of REGION) (fetch (REGION HEIGHT) of REGION) OUTLINEWIDTH OPERATION WIN]) ) (DEFINEQ (ADJUSTCOLORMAP [LAMBDA (PRIMARY DELTA) (* kbr%: " 5-Jun-86 19:41") (* Adds DELTA points of intensity to all values of PRIMARY color in  SCREENCOLORMAP *) (PROG NIL (for COLOR from 0 to (MAXIMUMCOLOR (BITSPERPIXEL (SCREENCOLORMAP))) do (COLORLEVEL COLOR PRIMARY (IMIN 255 (IMAX 0 (IPLUS (COLORLEVEL COLOR PRIMARY) DELTA]) (SHOWCOLORBLOCKS [LAMBDA (DESTINATION) (* kbr%: "17-Aug-85 21:44") (* Puts shade blocks onto DESTINATION.  *) (PROG (BITSPERPIXEL MAXSHADE N WIDTH HEIGHT SHADE) (SETQ BITSPERPIXEL (BITSPERPIXEL DESTINATION)) (SETQ MAXSHADE (MAXIMUMSHADE BITSPERPIXEL)) [SETQ N (FIXR (SQRT (ADD1 MAXSHADE] (SETQ WIDTH (IQUOTIENT (IPLUS (BITMAPWIDTH DESTINATION) N -1) N)) (SETQ HEIGHT (IQUOTIENT (IPLUS (BITMAPHEIGHT DESTINATION) N -1) N)) (SETQ SHADE 0) (for Y from (SUB1 N) to 0 by -1 do (for X from 0 to (SUB1 N) do (BLTSHADE SHADE DESTINATION (ITIMES X WIDTH) (ITIMES Y HEIGHT) WIDTH HEIGHT 'REPLACE) (SETQ SHADE (ADD1 SHADE)) (COND ((IGREATERP SHADE MAXSHADE) (SETQ SHADE 0]) (MAPOFACOLOR [LAMBDA (RGB BITSPERPIXEL) (* kbr%: "11-Jul-85 20:04") (* creates a gray color map *) (PROG (MAXCOLOR RED GREEN BLUE OPRED OPGREEN OPBLUE COLORMAP) (SETQ MAXCOLOR (MAXIMUMCOLOR BITSPERPIXEL)) (SETQ RED (fetch (RGB RED) of RGB)) (SETQ GREEN (fetch (RGB GREEN) of RGB)) (SETQ BLUE (fetch (RGB BLUE) of RGB)) (SETQ OPRED (IDIFFERENCE MAXCOLOR RED)) (SETQ OPGREEN (IDIFFERENCE MAXCOLOR GREEN)) (SETQ OPBLUE (IDIFFERENCE MAXCOLOR BLUE)) (SETQ COLORMAP (COLORMAPCREATE (for I from 0 to MAXCOLOR as OPI from MAXCOLOR to 0 by -1 collect (create RGB RED _ (IQUOTIENT (IPLUS (ITIMES OPI OPRED) (ITIMES I RED)) MAXCOLOR) GREEN _ (IQUOTIENT (IPLUS (ITIMES OPI OPGREEN) (ITIMES I GREEN)) MAXCOLOR) BLUE _ (IQUOTIENT (IPLUS (ITIMES OPI OPBLUE) (ITIMES I BLUE)) MAXCOLOR))) BITSPERPIXEL)) (RETURN COLORMAP]) (COLORHEXPATTERN [LAMBDA (LIGHTNESS) (* kbr%: " 3-Jun-86 22:36") (* Put a color hex pattern on the color display.  *) (PROG (DESTINATION WIDTH HEIGHT BITSPERPIXEL N HEXWIDTH HEXHEIGHT LEFT BOTTOM COLOR MAXI JDIST IDIST) (COND ((NULL LIGHTNESS) (SETQ LIGHTNESS 0.5))) (SETQ DESTINATION (COLORSCREENBITMAP)) (SETQ WIDTH (BITMAPWIDTH DESTINATION)) (SETQ HEIGHT (BITMAPHEIGHT DESTINATION)) (SETQ BITSPERPIXEL (BITSPERPIXEL DESTINATION)) (SETQ N (SELECTQ BITSPERPIXEL (4 1) (8 8) (RETURN))) (SETQ HEXWIDTH (IQUOTIENT WIDTH (IPLUS (ITIMES 2 N) 1))) (SETQ HEXHEIGHT (IQUOTIENT HEIGHT (IPLUS (ITIMES 2 N) 1))) (BLTSHADE MINIMUMSHADE DESTINATION) (SETQ COLOR 0) [for J from N to 0 by -1 do (SETQ BOTTOM (ITIMES (IPLUS J N) HEXHEIGHT)) (SETQ MAXI (IDIFFERENCE (IPLUS (ITIMES 2 N) 1) J)) (for I from 0 to MAXI do (SETQ LEFT (IQUOTIENT (ITIMES (IPLUS (ITIMES 2 I) J) HEXWIDTH) 2)) (SETQ COLOR (ADD1 COLOR)) (BLTSHADE COLOR DESTINATION LEFT BOTTOM HEXWIDTH HEXHEIGHT) (SETQ JDIST (FQUOTIENT J N)) (SETQ IDIST (FDIFFERENCE (FTIMES 2.0 (FQUOTIENT I MAXI)) 1.0)) (SCREENCOLORMAPENTRY COLOR (HLSTORGB (ATAN JDIST IDIST) LIGHTNESS (SQRT (FQUOTIENT (FPLUS (FTIMES IDIST IDIST) (FTIMES JDIST JDIST)) 2.0] (for J from -1 to (IMINUS N) by -1 do (SETQ BOTTOM (ITIMES (IPLUS J N) HEXHEIGHT)) (SETQ MAXI (IPLUS (IPLUS (ITIMES 2 N) 1) J)) (for I from 0 to MAXI do (SETQ LEFT (IQUOTIENT (ITIMES (IPLUS (ITIMES 2 I) (IMINUS J)) HEXWIDTH) 2)) (SETQ COLOR (ADD1 COLOR)) (BLTSHADE COLOR DESTINATION LEFT BOTTOM HEXWIDTH HEXHEIGHT) (SETQ JDIST (FQUOTIENT J N)) (SETQ IDIST (FDIFFERENCE (FTIMES 2.0 (FQUOTIENT I MAXI)) 1.0)) (SCREENCOLORMAPENTRY COLOR (HLSTORGB (ATAN JDIST IDIST) LIGHTNESS (SQRT (FQUOTIENT (FPLUS (FTIMES IDIST IDIST) (FTIMES JDIST JDIST)) 2.0]) ) (RPAQQ EditColorMapHeight 315) (RPAQQ EditColorMapWidth 380) (RPAQQ COLOR#MENUSAVE NIL) (RPAQQ CONTROLMENUSAVE NIL) (RPAQQ EDIT8BITCOLORMAPMENU NIL) (RPAQQ EDIT8BITCOLORMAPNUMBERREADER NIL) (DECLARE%: DOEVAL@COMPILE DONTCOPY (GLOBALVARS COLOR#MENUSAVE CONTROLMENUSAVE EDIT8BITCOLORMAPMENU EDIT8BITCOLORMAPNUMBERREADER EditColorMapHeight EditColorMapWidth) ) (* ;;; "support for global naming and querying of colors.") (DEFINEQ (CNSMENUINIT [LAMBDA NIL (* gbn " 9-Aug-85 03:11") [SETQ CNSHUEMENU (create MENU ITEMS _ (for I in DICOLOR.hueMapping collect (CAR I] [SETQ CNSSATURATIONMENU (create MENU ITEMS _ (for I in DICOLOR.saturationMapping collect (CAR I] (SETQ CNSLIGHTNESSMENU (create MENU ITEMS _ (for I in DICOLOR.lightnessMapping collect (CAR I]) (CNSTOCSL [LAMBDA (hue saturation lightness) (* hdj "12-Apr-85 19:01") (PROG ((hueAtom (MKATOM hue)) (saturationAtom (MKATOM saturation)) (lightnessAtom (MKATOM lightness)) c s l) (if [NOT (SETQ c (fetch (hueRecord ordering) of (ASSOC hueAtom DICOLOR.hueMapping] then (SETQ c DICOLOR.achromatic)) (if (EQ c DICOLOR.achromatic) then (SETQ s DICOLOR.noSaturation) else (if [NOT (SETQ s (fetch (saturationRecord ordering) of (ASSOC saturationAtom DICOLOR.saturationMapping ] then (SETQ s DICOLOR.vivid))) (SELECTQ hueAtom (Black (SETQ l DICOLOR.black)) (White (SETQ l DICOLOR.white)) (if [NOT (SETQ l (fetch (lightnessRecord ordering) of (ASSOC lightnessAtom DICOLOR.lightnessMapping] then (SETQ l DICOLOR.medium))) (RETURN (LIST c s l]) (CNSTORGB [LAMBDA (saturation lightness hue) (* hdj "15-Jul-85 12:33") (LET ((CSL (CNSTOCSL hue saturation lightness))) (HLSTORGB (APPLY (FUNCTION CSLTOHLS) CSL]) (CSLTOCNS [LAMBDA (c s l) (* hdj "15-Jul-85 12:37") (PROG (hue saturation lightness) [if (EQ c DICOLOR.achromatic) then (SETQ saturation "") [SELECTC l (DICOLOR.black (SETQ hue "Black") (SETQ lightness "")) (DICOLOR.white (SETQ hue "White") (SETQ lightness "")) (PROGN (SETQ hue "Gray") (SETQ lightness (MKSTRING (fetch (lightnessRecord name) of (DICOLOR.lightnessN l] else (SETQ hue (fetch (hueRecord name) of (DICOLOR.hueN c))) (SETQ saturation (fetch (saturationRecord name) of (DICOLOR.saturationN s))) (SETQ lightness (fetch (lightnessRecord name) of (DICOLOR.lightnessN l] (RETURN (LIST saturation lightness hue]) (DICOLOR.FROM.USER [LAMBDA NIL (* gbn "30-Oct-85 11:28") (* * Returns a color, either by its name  (which can then be looked up on colornames) or as an RGB triple if it is not  named. Prompts the user first with the global color name menu.  She can then choose NEWCOLOR which can be specified as RGB or CNS) (PROG (NAME RGB) (* first try to get a color name) [SETQ NAME (MENU (OR COLORNAMEMENU (SETQ COLORNAMEMENU (create MENU ITEMS _ (CONS NEWCOLORITEM (for ENTRY in COLORNAMES collect (CAR ENTRY] (if (NOT NAME) then (* the user clicked outside the menu) (RETURN)) (SETQ RGB (SELECTQ NAME (RGB (READCOLOR1 "specify new color")) (CNS (APPLY (FUNCTION CNSTORGB) (GETCNS))) (RETURN NAME))) (if (NOT (SETQ NAME (TTYIN "New color name? "))) then (* user decided that she didn't want to name the color) (RETURN RGB)) (push COLORNAMES (CONS (SETQ NAME (CAR NAME)) RGB)) (SETQ COLORNAMEMENU NIL) (* invalidate the menu) (RETURN NAME]) (GETCNS [LAMBDA NIL (* gbn " 9-Aug-85 03:13") (LIST (MENU CNSLIGHTNESSMENU) (MENU CNSSATURATIONMENU) (MENU CNSHUEMENU]) (HLSTOCSL [LAMBDA (hue lightness saturation) (* hdj "15-Jul-85 12:14") (LET ((ISLHue (FQUOTIENT (MOD (PLUS hue 240) 360) 360))) (PROG (c s l) (for old s from DICOLOR.noSaturation to DICOLOR.vivid do (if (EQ s DICOLOR.vivid) then (RETURN)) (if (LEQ saturation (PLUS (DICOLOR.saturationNvalue s) (QUOTIENT (DIFFERENCE (DICOLOR.saturationNvalue (ADD1 s)) (DICOLOR.saturationNvalue s)) 2))) then (RETURN))) [if (EQ s DICOLOR.noSaturation) then (SETQ c DICOLOR.achromatic) (for old l from DICOLOR.black to DICOLOR.white do (if (EQ l DICOLOR.white) then (RETURN)) (if (LEQ lightness (PLUS (DICOLOR.lightnessNvalue l) (QUOTIENT (DIFFERENCE (DICOLOR.lightnessNvalue (ADD1 l)) (DICOLOR.lightnessNvalue l)) 2))) then (RETURN))) else (for old c from DICOLOR.red to DICOLOR.purplishRed do (* (HELP c)) (if (EQ c DICOLOR.purplishRed) then (if (GREATERP ISLHue (PLUS (DICOLOR.hueNvalue c) (QUOTIENT (DIFFERENCE 1 (  DICOLOR.hueNvalue c)) 2))) then (SETQ c DICOLOR.red)) (RETURN)) (if (LEQ ISLHue (PLUS (DICOLOR.hueNvalue c) (QUOTIENT (DIFFERENCE (DICOLOR.hueNvalue (ADD1 c)) (DICOLOR.hueNvalue c)) 2))) then (RETURN))) (for old l from DICOLOR.veryDark to DICOLOR.veryLight do (if (EQ l DICOLOR.veryLight) then (RETURN)) (if (LEQ lightness (PLUS (DICOLOR.lightnessNvalue l) (QUOTIENT (DIFFERENCE (DICOLOR.lightnessNvalue (ADD1 l)) (DICOLOR.lightnessNvalue l)) 2))) then (RETURN] (RETURN (LIST c s l]) (CSLTOHLS [LAMBDA (c s l) (* hdj "15-Jul-85 12:23") (PROG (hue saturation lightness) (if (EQ c DICOLOR.achromatic) then (SETQ hue 0.0) (SETQ saturation 0.0) (SETQ lightness (DICOLOR.lightnessNvalue l)) else (SETQ hue (DICOLOR.hueNvalue c)) (SETQ saturation (DICOLOR.saturationNvalue s)) (SETQ lightness (DICOLOR.lightnessNvalue l))) (RETURN (LIST (MOD (FPLUS 120 (FTIMES hue 360)) 360) lightness saturation]) (RGBTOCNS [LAMBDA (Red Green Blue) (* hdj "15-Jul-85 12:36") (APPLY (FUNCTION CSLTOCNS) (APPLY (FUNCTION HLSTOCSL) (RGBTOHLS Red Green Blue]) ) (RPAQQ DICOLOR.hueMapping ((Achromatic 0.0 -1) (Red 0.0 0) (OrangishRed 0.01 1) (RedOrange 0.02 2) (ReddishOrange 0.03 3) (Orange 0.04 4) (YellowishOrange 0.070 5) (OrangeYellow 0.1 6) (OrangishYellow 0.13 7) (Yellow 0.1673 8) (GreenishYellow 0.2073 9) (YellowGreen 0.2473 10) (YellowishGreen 0.2873 11) (Green 0.3333 12) (BluishGreen 0.4133 13) (GreenBlue 0.4933 14) (GreenishBlue 0.5733 15) (Blue 0.6666 16) (PurplishBlue 0.6816 17) (BluePurple 0.6966 18) (BluishPurple 0.7116 19) (Purple 0.73 20) (ReddishPurple 0.8 21) (PurpleRed 0.87 22) (PurplishRed 0.94 23) (BrownishRed 0.01 24) (RedBrown 0.02 25) (ReddishBrown 0.03 26) (Brown 0.04 27) (YellowishBrown 0.070 28) (BrownYellow 0.1 29) (BrownishYellow 0.13 30))) (RPAQQ DICOLOR.lightnessMapping ((Black 0.0 0) (VeryDark 0.1666 1) (Dark 0.3333 2) (Medium 0.5 3) (Light 0.6666 4) (VeryLight 0.8333 5) (White 1.0 6))) (RPAQQ DICOLOR.saturationMapping ((NoSaturation 0.0 0) (Grayish 0.25 1) (Moderate 0.5 2) (Strong 0.75 3) (Vivid 1.0 4))) (RPAQQ NEWCOLORITEM (New% Color 'CNS "Allows specification of a new color" (SUBITEMS (RGB 'RGB "Specify a new color using Red, Green, Blue sliders" ) (CNS 'CNS "Specify a new color using English" )))) (RPAQ? COLORNAMEMENU ) (DEFINEQ (DICOLOR.hueN [LAMBDA (N) (* hdj "17-Apr-85 13:38") (DECLARE (GLOBALVARS DICOLOR.hueMapping)) (for ELT in DICOLOR.hueMapping suchthat (EQ (fetch (hueRecord ordering) of ELT) N]) (DICOLOR.hueNvalue [LAMBDA (N) (* hdj "18-Apr-85 09:58") (fetch (hueRecord value) of (DICOLOR.hueN N]) (DICOLOR.hueNname [LAMBDA (N) (* hdj "18-Apr-85 10:07") (fetch (hueRecord name) of (DICOLOR.hueN N]) (DICOLOR.lightnessN [LAMBDA (N) (* hdj "17-Apr-85 13:40") (DECLARE (GLOBALVARS DICOLOR.lightnessMapping)) (for ELT in DICOLOR.lightnessMapping suchthat (EQ (fetch (lightnessRecord ordering) of ELT) N]) (DICOLOR.lightnessNvalue [LAMBDA (N) (* hdj "17-Apr-85 13:36") (fetch (lightnessRecord value) of (DICOLOR.lightnessN N]) (DICOLOR.lightnessNname [LAMBDA (N) (* hdj "17-Apr-85 14:02") (fetch (lightnessRecord name) of (DICOLOR.lightnessN N]) (DICOLOR.saturationN [LAMBDA (N) (* hdj "17-Apr-85 13:39") (DECLARE (GLOBALVARS DICOLOR.saturationMapping)) (for ELT in DICOLOR.saturationMapping suchthat (EQ (fetch (saturationRecord ordering) of ELT) N]) (DICOLOR.saturationNvalue [LAMBDA (N) (* hdj "17-Apr-85 13:36") (fetch (saturationRecord value) of (DICOLOR.saturationN N]) (DICOLOR.saturationNname [LAMBDA (N) (* hdj "17-Apr-85 14:02") (fetch (saturationRecord name) of (DICOLOR.saturationN N]) ) (DECLARE%: EVAL@LOAD DONTCOPY (DECLARE%: EVAL@COMPILE (RECORD hueRecord (name value ordering)) (RECORD lightnessRecord (name value ordering)) (RECORD saturationRecord (name value ordering)) ) (RPAQQ DICOLOR.hueConstants (DICOLOR.achromatic DICOLOR.blue DICOLOR.bluePurple DICOLOR.bluishGreen DICOLOR.bluishPurple DICOLOR.brown DICOLOR.brownYellow DICOLOR.brownishRed DICOLOR.brownishYellow DICOLOR.green DICOLOR.greenBlue DICOLOR.greenishBlue DICOLOR.greenishYellow DICOLOR.orange DICOLOR.orangeYellow DICOLOR.orangishRed DICOLOR.orangishYellow DICOLOR.purple DICOLOR.purpleRed DICOLOR.purplishBlue DICOLOR.purplishRed DICOLOR.red DICOLOR.redBrown DICOLOR.redOrange DICOLOR.reddishBrown DICOLOR.reddishOrange DICOLOR.reddishPurple DICOLOR.yellow DICOLOR.yellowGreen DICOLOR.yellowishBrown DICOLOR.yellowishGreen DICOLOR.yellowishOrange)) (DECLARE%: EVAL@COMPILE (RPAQQ DICOLOR.achromatic -1) (RPAQQ DICOLOR.blue 16) (RPAQQ DICOLOR.bluePurple 18) (RPAQQ DICOLOR.bluishGreen 13) (RPAQQ DICOLOR.bluishPurple 19) (RPAQQ DICOLOR.brown 27) (RPAQQ DICOLOR.brownYellow 29) (RPAQQ DICOLOR.brownishRed 24) (RPAQQ DICOLOR.brownishYellow 30) (RPAQQ DICOLOR.green 12) (RPAQQ DICOLOR.greenBlue 14) (RPAQQ DICOLOR.greenishBlue 15) (RPAQQ DICOLOR.greenishYellow 9) (RPAQQ DICOLOR.orange 4) (RPAQQ DICOLOR.orangeYellow 6) (RPAQQ DICOLOR.orangishRed 1) (RPAQQ DICOLOR.orangishYellow 7) (RPAQQ DICOLOR.purple 20) (RPAQQ DICOLOR.purpleRed 22) (RPAQQ DICOLOR.purplishBlue 17) (RPAQQ DICOLOR.purplishRed 23) (RPAQQ DICOLOR.red 0) (RPAQQ DICOLOR.redBrown 25) (RPAQQ DICOLOR.redOrange 2) (RPAQQ DICOLOR.reddishBrown 26) (RPAQQ DICOLOR.reddishOrange 3) (RPAQQ DICOLOR.reddishPurple 21) (RPAQQ DICOLOR.yellow 8) (RPAQQ DICOLOR.yellowGreen 10) (RPAQQ DICOLOR.yellowishBrown 28) (RPAQQ DICOLOR.yellowishGreen 11) (RPAQQ DICOLOR.yellowishOrange 5) (CONSTANTS DICOLOR.achromatic DICOLOR.blue DICOLOR.bluePurple DICOLOR.bluishGreen DICOLOR.bluishPurple DICOLOR.brown DICOLOR.brownYellow DICOLOR.brownishRed DICOLOR.brownishYellow DICOLOR.green DICOLOR.greenBlue DICOLOR.greenishBlue DICOLOR.greenishYellow DICOLOR.orange DICOLOR.orangeYellow DICOLOR.orangishRed DICOLOR.orangishYellow DICOLOR.purple DICOLOR.purpleRed DICOLOR.purplishBlue DICOLOR.purplishRed DICOLOR.red DICOLOR.redBrown DICOLOR.redOrange DICOLOR.reddishBrown DICOLOR.reddishOrange DICOLOR.reddishPurple DICOLOR.yellow DICOLOR.yellowGreen DICOLOR.yellowishBrown DICOLOR.yellowishGreen DICOLOR.yellowishOrange) ) (RPAQQ DICOLOR.saturationConstants (DICOLOR.noSaturation DICOLOR.grayish DICOLOR.moderate DICOLOR.strong DICOLOR.vivid)) (DECLARE%: EVAL@COMPILE (RPAQQ DICOLOR.noSaturation 0) (RPAQQ DICOLOR.grayish 1) (RPAQQ DICOLOR.moderate 2) (RPAQQ DICOLOR.strong 3) (RPAQQ DICOLOR.vivid 4) (CONSTANTS DICOLOR.noSaturation DICOLOR.grayish DICOLOR.moderate DICOLOR.strong DICOLOR.vivid) ) (RPAQQ DICOLOR.lightnessConstants (DICOLOR.black DICOLOR.veryDark DICOLOR.dark DICOLOR.medium DICOLOR.light DICOLOR.veryLight DICOLOR.white)) (DECLARE%: EVAL@COMPILE (RPAQQ DICOLOR.black 0) (RPAQQ DICOLOR.veryDark 1) (RPAQQ DICOLOR.dark 2) (RPAQQ DICOLOR.medium 3) (RPAQQ DICOLOR.light 4) (RPAQQ DICOLOR.veryLight 5) (RPAQQ DICOLOR.white 6) (CONSTANTS DICOLOR.black DICOLOR.veryDark DICOLOR.dark DICOLOR.medium DICOLOR.light DICOLOR.veryLight DICOLOR.white) ) ) (CNSMENUINIT) (FILESLOAD LLCOLOR READNUMBER) (SETQ EDITBMMENU NIL) (MOVD 'ARRAYP 'COLORMAPP) (PUTPROPS COLOR COPYRIGHT ("Xerox Corporation" 1982 1983 1985 1986 1987)) (DECLARE%: DONTCOPY (FILEMAP (NIL (5033 20085 (DISPLAYCOLORLEVELS 5043 . 6161) (DISPLAYHLSLEVELS 6163 . 6503) (HLSLEVEL 6505 . 7240) (HLSTORGB 7242 . 8671) (HLSVALUEFN 8673 . 9550) (HLSVALUEFROMLEVEL 9552 . 9884) ( LEVELFROMHLSVALUE 9886 . 10223) (RAINBOWMAP 10225 . 17234) (RGBTOHLS 17236 . 20083)) (20086 21872 ( OVERPAINT 20096 . 20857) (BITMAPFROMSTRING 20859 . 21349) (SHADEBITMAP 21351 . 21870)) (21910 38520 ( EDITCOLORMAP 21920 . 23139) (EDITCOLORMAP.BUTTONEVENTFN 23141 . 26871) (EDITCOLORMAP.REDISPLAYFN 26873 . 29232) (EDITCOLORMAP.VALUELEVEL 29234 . 29727) (EDITCOLORMAP.WINDOWLEVEL 29729 . 30232) ( CHANGECOLORLEVELS 30234 . 32361) (GETCOLOR#FROMUSER 32363 . 33681) (GETCOLOR#FROMSCREEN 33683 . 34241) (DISPLAYCOLORLEVEL 34243 . 35667) (FILLINREGION 35669 . 36136) (AREAFILL 36138 . 36400) (CENTEREDLEFT 36402 . 36728) (OUTLINEAREA 36730 . 37959) (OUTLINEREGION 37961 . 38518)) (38521 45894 ( ADJUSTCOLORMAP 38531 . 39051) (SHOWCOLORBLOCKS 39053 . 40520) (MAPOFACOLOR 40522 . 42173) ( COLORHEXPATTERN 42175 . 45892)) (46360 55962 (CNSMENUINIT 46370 . 47005) (CNSTOCSL 47007 . 48269) ( CNSTORGB 48271 . 48518) (CSLTOCNS 48520 . 49593) (DICOLOR.FROM.USER 49595 . 51354) (GETCNS 51356 . 51560) (HLSTOCSL 51562 . 55062) (CSLTOHLS 55064 . 55732) (RGBTOCNS 55734 . 55960)) (58806 61057 ( DICOLOR.hueN 58816 . 59134) (DICOLOR.hueNvalue 59136 . 59315) (DICOLOR.hueNname 59317 . 59494) ( DICOLOR.lightnessN 59496 . 59844) (DICOLOR.lightnessNvalue 59846 . 60043) (DICOLOR.lightnessNname 60045 . 60240) (DICOLOR.saturationN 60242 . 60653) (DICOLOR.saturationNvalue 60655 . 60855) ( DICOLOR.saturationNname 60857 . 61055))))) STOP \ No newline at end of file diff --git a/obsolete/lispusers/COLOROBJ b/obsolete/lispusers/COLOROBJ deleted file mode 100644 index b4b09e9d..00000000 --- a/obsolete/lispusers/COLOROBJ +++ /dev/null @@ -1,166 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") -(FILECREATED "14-Jun-90 21:02:08" {DSK}local>lde>lispcore>internal>library>COLOROBJ.;2 7921 - - changes to%: (FNS COLOROBJ.IMAGEBOXFN COLOROBJ.PUTFN COLOROBJ.COPYFN COLOROBJ.WHENOPERATEDONFN - COLOROBJ.CREATE COLOROBJ.DISPLAYFN COLOROBJ.GETFN) - (VARS COLOROBJCOMS) - - previous date%: " 4-Feb-87 23:58:42" {DSK}local>lde>lispcore>internal>library>COLOROBJ.;1 -) - - -(* ; " -Copyright (c) 1985, 1986, 1987, 1990 by Venue & Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT COLOROBJCOMS) - -(RPAQQ COLOROBJCOMS - [(FNS * COLOROBJFNS) - (FILES COLOR) - (INITVARS (COLOROBJ.DEFAULT.COLOR 'RED)) - (VARS (COLOROBJFNS '(COLOROBJ.CREATE COLOROBJ.DISPLAYFN COLOROBJ.GETFN COLOROBJ.IMAGEBOXFN - COLOROBJ.PUTFN COLOROBJ.COPYFN COLOROBJ.WHENOPERATEDONFN)) - (COLOROBJ.IMAGEFNS (IMAGEFNSCREATE (FUNCTION COLOROBJ.DISPLAYFN) - (FUNCTION COLOROBJ.IMAGEBOXFN) - (FUNCTION COLOROBJ.PUTFN) - (FUNCTION COLOROBJ.GETFN) - (FUNCTION COLOROBJ.COPYFN) - (FUNCTION COLOROBJ.BUTTONEVENTFN) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION COLOROBJ.WHENOPERATEDONFN) - (FUNCTION NILL]) - -(RPAQQ COLOROBJFNS (COLOROBJ.CREATE COLOROBJ.DISPLAYFN COLOROBJ.GETFN COLOROBJ.IMAGEBOXFN - COLOROBJ.PUTFN COLOROBJ.COPYFN COLOROBJ.WHENOPERATEDONFN)) -(DEFINEQ - -(COLOROBJ.CREATE - [LAMBDA (COLOR) (* gbn "13-Jan-86 16:00") - - (* * create a color object. color is anything acceptable to dspcolor - (atoms on colornames, rgb triples, indices)) - - (LET ((COLOROBJ (IMAGEOBJCREATE NIL COLOROBJ.IMAGEFNS))) - (IMAGEOBJPROP COLOROBJ 'COLOR (OR COLOR COLOROBJ.DEFAULT.COLOR)) - COLOROBJ]) - -(COLOROBJ.DISPLAYFN - [LAMBDA (COLOROBJ IMAGE.STREAM) (* gbn "13-Jan-86 17:51") - - (* On the display a color object shows up as the color name, otherwise it has - no image. On any stream it has the sideeffect of changing the foreground color) - - (LET* ((COLOR (IMAGEOBJPROP COLOROBJ 'COLOR)) - (X (DSPXPOSITION NIL IMAGE.STREAM)) - (Y (DSPYPOSITION NIL IMAGE.STREAM))) - (DSPCOLOR COLOR IMAGE.STREAM) - (SELECTQ (IMAGESTREAMTYPE IMAGE.STREAM) - (DISPLAY (DSPFONT '(WEIGHT BOLD) - IMAGE.STREAM) - (LET* ((STRING (IMAGEOBJPROP COLOROBJ 'COLOR)) - (STRINGREGION (STRINGREGION STRING IMAGE.STREAM)) - (LEFT (ADD1 (fetch (REGION LEFT) of STRINGREGION))) - (BOTTOM (fetch (REGION BOTTOM) of STRINGREGION)) - (REGION (create REGION - LEFT _ LEFT - BOTTOM _ BOTTOM - HEIGHT _ (IPLUS (fetch (REGION HEIGHT) of - STRINGREGION - ) - 2) - WIDTH _ (IPLUS (fetch (REGION WIDTH) of - STRINGREGION - ) - 6))) - (TOP (fetch (REGION TOP) of REGION)) - (RIGHT (fetch (REGION RIGHT) of REGION))) - (IMAGEOBJPROP COLOROBJ 'REGION REGION) - (CENTERPRINTINREGION STRING REGION IMAGE.STREAM) - (DRAWLINE LEFT BOTTOM LEFT (SUB1 TOP) - 1 - 'INVERT IMAGE.STREAM) - (DRAWLINE LEFT TOP (SUB1 RIGHT) - TOP 1 'INVERT IMAGE.STREAM) - (DRAWLINE RIGHT TOP RIGHT (ADD1 BOTTOM) - 1 - 'INVERT IMAGE.STREAM) - (DRAWLINE RIGHT BOTTOM (ADD1 LEFT) - BOTTOM 1 'INVERT IMAGE.STREAM))) - (NILL]) - -(COLOROBJ.GETFN - [LAMBDA (INPUT.STREAM TEXTSTREAM) (* gbn "13-Jan-86 15:42") - (* reads the COLOR and creates an - COLOROBJ) - (COLOROBJ.CREATE (READ INPUT.STREAM]) - -(COLOROBJ.IMAGEBOXFN - [LAMBDA (COLOROBJ IMAGE.STREAM CURRENT.X RIGHT.MARGIN) (* gbn "13-Jan-86 16:01") - - (* * Returns a null imagebox, except to the display, where it returns the size - of the box) - - (LET NIL (SELECTQ (IMAGESTREAMTYPE IMAGE.STREAM) - (DISPLAY (create IMAGEBOX - XSIZE _ (IPLUS (STRINGWIDTH (IMAGEOBJPROP COLOROBJ 'COLOR) - (DSPFONT NIL IMAGE.STREAM)) - 8) - YSIZE _ (IPLUS (FONTHEIGHT (DSPFONT NIL IMAGE.STREAM)) - 4) - YDESC _ 4 - XKERN _ 0)) - (create IMAGEBOX - XSIZE _ 0 - YSIZE _ 0 - YDESC _ 0 - XKERN _ 0]) - -(COLOROBJ.PUTFN - [LAMBDA (COLOROBJ OUTPUT.STREAM) (* gbn "13-Jan-86 15:57") - (* prints only the color to the file) - (PRINT (IMAGEOBJPROP COLOROBJ 'COLOR) - OUTPUT.STREAM]) - -(COLOROBJ.COPYFN - [LAMBDA (IMAGEOBJ FROMSTREAM TOSTREAM) (* gbn "13-Jan-86 15:58") - (COLOROBJ.CREATE (IMAGEOBJPROP IMAGEOBJ 'COLOR) - TOSTREAM]) - -(COLOROBJ.WHENOPERATEDONFN - [LAMBDA (A B C C) (* gbn " 6-Jan-85 13:23") - (* DUMMY) - ]) -) - -(FILESLOAD COLOR) - -(RPAQ? COLOROBJ.DEFAULT.COLOR 'RED) - -(RPAQQ COLOROBJFNS (COLOROBJ.CREATE COLOROBJ.DISPLAYFN COLOROBJ.GETFN COLOROBJ.IMAGEBOXFN - COLOROBJ.PUTFN COLOROBJ.COPYFN COLOROBJ.WHENOPERATEDONFN)) - -(RPAQ COLOROBJ.IMAGEFNS - (IMAGEFNSCREATE (FUNCTION COLOROBJ.DISPLAYFN) - (FUNCTION COLOROBJ.IMAGEBOXFN) - (FUNCTION COLOROBJ.PUTFN) - (FUNCTION COLOROBJ.GETFN) - (FUNCTION COLOROBJ.COPYFN) - (FUNCTION COLOROBJ.BUTTONEVENTFN) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION COLOROBJ.WHENOPERATEDONFN) - (FUNCTION NILL))) -(PUTPROPS COLOROBJ COPYRIGHT ("Venue & Xerox Corporation" 1985 1986 1987 1990)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (1964 7057 (COLOROBJ.CREATE 1974 . 2380) (COLOROBJ.DISPLAYFN 2382 . 5080) ( -COLOROBJ.GETFN 5082 . 5411) (COLOROBJ.IMAGEBOXFN 5413 . 6375) (COLOROBJ.PUTFN 6377 . 6659) ( -COLOROBJ.COPYFN 6661 . 6850) (COLOROBJ.WHENOPERATEDONFN 6852 . 7055))))) -STOP diff --git a/obsolete/lispusers/COLOROBJ.LCOM b/obsolete/lispusers/COLOROBJ.LCOM deleted file mode 100644 index 985e48937498808944db844b333e1fedfc662321..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3729 zcmd5<-EQJm5C%5dA6FYC>0MQ=Mo4WG|P-u5jjv2W2gXy^R+*pRf{^rl6^oSEY@=Q}gs%p6qH>f5eW?Awl2wB0^|7oO2O zF!n9T+iqa_jy>}7@WQtYGcdZ&hPrEvEYQjYMNz4R9=;Y>CginN@zrfq)XTaKTB}{H zv^6acYW{3-c{Pi|DJs*G@D16t6X4hA@*WvQI(<2V? zN%vLhE3E*^rrC0}U1{XuHMJUjF@+f#?T;M?w@kJ#l}dS-p5EZ5_pNW`3!B)hxOiS{ zl|k3qWxZW)#z=3kmz`*Fb{ch}DMCh+XNzUnnayv)<(z6~ua~EIj0Cj~jh3!~a&~?? ze-mEA&Em5*sC{&2hfzczwQ30-&;kUEJ?KSfkB31HGE%w9L#byKaO1suw}(Xk-Wy(2}5KTnX1%#xQXWf-gXJ z509C9$&MHw_}mbqtQ_SATxUF^E?{r}{^L)X-xgHlQ)@OJ9mF=aob1JFclWWA%li>hh1(ZuTkJX0i~Uaoc2@1>k^e8*DIihh*pC z{RM+#Jbyy5poZ*SyhnXnOZKSRy;yB%-QmT`UDNG6rB-N&8ydJaRsp?U1JgH-9V~F5 zSJQ%CNzIhCM9`W@I*S%Q4`UVBu85Y_&?QqCahlEba5kFj^YsRpBd<@~0IGsyJdDA_ zv!Gh0vy8S-VdIHMMs`5iqcizL%368NGSX77;b!iU4(L{C>jWT>O9RkZb%(R}CabUNjujEcUaK^<^MVQAwhSL%Wg$F>;^pn^UY z@!zaDH6G7|4z%dBL~PJiA~x&whqnY70x}K~r*Bk-%*QMOERERFct+DW)Pd0&TlOZW z5+bDHE*g*6RmVCf!;Wt7v1cTeDK4wX0J{I9l$*N@1>b*@2Oo&!PRnDM98i(dln}_u zE>=#XfZNk@vc*onlVS9#f;k=zC(NO$=UYKA!G6a*5#wPEP*Hu)I6RbOrAkm)zy4Ax zu?u1Mq}LtMK2fq=J7E1(jqR1zdK0LJV-i@%dCaSVBATy!nKm}@hSZflw3SO>yh-w_ zMAB&=c$YwUkYJE)SB*ykm8$f|ZjaTgBJ z38p*7{_9#tSSHwQM=qwVA+#rI8e?1b-<^+FCVN6$g=SIKBWR~QRVUX9obP(n28kg_Mgga!GD<8t; zBm+K_%n#-+WuWd=4k!a`7GX7R#%} b^7Ll5nCI~iTC+wUb^2)FqgBSlK)cGHU7nEi diff --git a/obsolete/lispusers/COLOROBJ.TEDIT b/obsolete/lispusers/COLOROBJ.TEDIT deleted file mode 100644 index 9be15d91ceb00c1c2d10f67dd6e45d6472021733..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2501 zcmeHI!EW0|5M9Y~3e{zS76sDd04WgiU_w$=Sus$cG`W=6P+XNFT_-^fG_|oAQ=}o% zP2GDg`J{Y7J}a|JQIZWi&8bC!F2LR8%$u1vZu_1Q_=WG?gB(XUERQTmF~Rg|>_ z_h>n~J_Hyo`5Aau*E}mgtycXq`sIW#^FQ@CUueoz!HYwXvFi+Qxy=7a=DdI?11Br_ zGEIuheG8IBbjI`3*E}xa&3O`^LzJfZn*z#n4so95ODJ5fP^I) zk^=He0gh7aXQco4cpZ6kC8T~^fBV&1ev`^9mzOrq12zf>%a(k_w=YYWav zmXrxrST`P3+lq-*%T@qNq$>&#F?LkfnFXM#Q)5KIb6iku<~q#rYzC^~8%K_*!7MQR z!0|=`^a#2ds2%9Qpxc9kCp~cZ!IvxdP+sMFoo>CSD@-6fbvGKWVO0la^=o&u! zPMy&>fC;snaH4_D{E30wx7tC%-Ge^-IDp=8h>IqOqj5|P3!ALkSiJ<#MC#D<&>>6+ z8}{L#--kXvo7jM!1Ts)ch>#}(=>If;L8nut*D!Leu>}2BBt+u9VGsIv*uAZe|5xkI z3-|A+rD^hO-X&iUUF;ek$XB@R?zC{<_|TBvyCzi_YjktxE{L?<#9`KZMveOh{jE>t zdq>_ihUCF#;zYSt^ZvS)0AL?--0FHye0QtsO7^xs<_djdZjoK`khI6tJ*I(U8sy8h z`#bWW`enM)CgjG^BxHjV%~j)D(sJ2|k?(7RT$^}Yct~O|CV5Jt#kR0uCOHd86McJQ zKXj=+qJix-wu)>Bt}@htqWV7@D4LMmt9#UxU44qeMzj_8I`Hqf-y108dyLOoK4FmP zS{6~_?KVO>;L-C*H|2xvz<&BezEDITKEYS.;6 7146 - - :EDIT-BY rmk - - :CHANGES-TO (VARS EDITKEYSCOMS) - - :PREVIOUS-DATE "25-Oct-2022 10:58:27" {WMEDLEY}EDITKEYS.;5) - - -(PRETTYCOMPRINT EDITKEYSCOMS) - -(RPAQQ EDITKEYSCOMS - ((VARS KEY.TEMPLATE) - (FNS BUILDFNKEYS KEY.BITMAP) - (P (* ; "could have (STRIKEOUT)") - (* ; "RMK: Removed (HELP HELP)") - (BUILDFNKEYS '((BOLD BOLD) - (ITALICS ITALICS) - (CASE CASE) - (STRIKEOUT (STRIKE- OUT)) - (UNDERLINE (UNDER- LINE)) - (SUPERSCRIPT (SUPER/ SUB)) - (LARGER (LARGER SMALLER)) - (DEFAULTS DEFAULTS) - (CENTER JUSTIFY) - (AGAIN REDO)) - '(Tedit Keys) - 1)))) - -(RPAQQ KEY.TEMPLATE #*(78 48)OOOOOOOOOOOOOOOOOOOLON@@@@@@@@@@@@@@@AOLO@@@@@@@@@@@@@@@@@CLO@@@@@@@@@@@@@@@@@CLMH@@@@@@@@@@@@@@@@DLNLGOOOOOOOOOOOOOOHHLMFL@@@@@@@@@@@@@@M@LJK@@@@@@@@@@@@@@@B@DMF@@@@@@@@@@@@@@@A@DJN@@@@@@@@@@@@@@@AHDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMF@@@@@@@@@@@@@@@AHDJJ@@@@@@@@@@@@@@@A@DMG@@@@@@@@@@@@@@@B@DNEL@@@@@@@@@@@@@@O@LLIGOOOOOOOOOOOOOOMHLOBBJJJJJJJJJJJJJJJLLNDEEEEEEEEEEEEEEEEGLOHJJJJJJJJJJJJJJJJKLOLEEEEEEEEEEEEEEEEOLOOOOOOOOOOOOOOOOOOOL -) -(DEFINEQ - -(BUILDFNKEYS - [LAMBDA (KEYS TITLE NROWS) - - (* ;; "Edited 20-Jul-2022 08:40 by rmk: BKSYSBUF only if the TTY is TEDIT, change title to Tedit Keys, expand with left button. Move with background menu") - - (* ;; "Edited 20-Jul-2022 07:56 by rmk") - (* lmm " 5-Nov-85 15:35") - (LET - (ICONWINDOW) - [SETQ ICONWINDOW - (SHRINKW - (ADDMENU - [create - MENU - ITEMS _ - [for KEY in KEYS - collect - (LIST (KEY.BITMAP (CADR KEY)) - (LET [(KEYN (OR (SMALLP (CAR KEY)) - (\KEYNAMETONUMBER (CAR KEY] - (for LST in (LIST \DOVEKEYACTIONS \DLIONKEYACTIONS \ORIGKEYACTIONS) - do (AND [SETQ $$VAL (for KEY in LST - when (EQ (OR (SMALLP (CAR KEY)) - (\KEYNAMETONUMBER (CAR KEY))) - KEYN) do (RETURN (CADR KEY] - (RETURN (LIST (OR (SMALLP (CAR $$VAL)) - (CHARCODE.DECODE (CAR $$VAL))) - (OR (SMALLP (CADR $$VAL)) - (CHARCODE.DECODE (CADR $$VAL] - TITLE _ (SUBSTRING TITLE 2 -2) - MENUROWS _ NROWS - WHENSELECTEDFN _ (FUNCTION (LAMBDA (X) - (CL:WHEN (EQ '\TEDIT.PROCENTRYFN (FETCH (PROCESS PROCTTYENTRYFN - ) OF ( - TTY.PROCESS - ))) - [BKSYSCHARCODE (if (SHIFTDOWNP 'SHIFT) - then (CADR (CADR X)) - else (CAR (CADR X])] - NIL - (create POSITION - XCOORD _ (PLUS (DIFFERENCE (QUOTIENT SCREENWIDTH 2) - (QUOTIENT (TIMES (BITMAPWIDTH KEY.TEMPLATE) - (LENGTH KEYS)) - 2)) - (TIMES 2 WBorder)) - YCOORD _ 0)) - (KEY.BITMAP TITLE) - '(0 . 0] - [WINDOWPROP ICONWINDOW 'BUTTONEVENTFN (FUNCTION (LAMBDA (ICONW) - (CL:WHEN (LASTMOUSESTATE (OR LEFT MIDDLE)) - (CURSOR (PROG1 (CURSOR WAITINGCURSOR) - (EXPANDW ICONW))))] - ICONWINDOW]) - -(KEY.BITMAP - [LAMBDA (X) (* lmm " 5-Nov-85 14:04") - (PROG ((BITMAP (BITMAPCOPY KEY.TEMPLATE)) - DS QUARTER REGION) - (SETQ DS (DSPCREATE BITMAP)) - (DSPFONT MENUFONT DS) - (COND - ((LISTP X) - - (* this is supposed to have two labels, one on top of the other) - - (SETQ QUARTER (IQUOTIENT (BITMAPHEIGHT BITMAP) - 4)) - (CENTERPRINTINREGION (CADR X) - (SETQ REGION (create REGION - LEFT _ 0 - BOTTOM _ QUARTER - WIDTH _ (BITMAPWIDTH BITMAP) - HEIGHT _ QUARTER)) - DS) - (replace BOTTOM of REGION with (ITIMES 2 QUARTER)) - (CENTERPRINTINREGION (CAR X) - REGION DS)) - (T (CENTERPRINTINREGION X (create REGION - LEFT _ 0 - BOTTOM _ 0 - WIDTH _ (BITMAPWIDTH BITMAP) - HEIGHT _ (BITMAPHEIGHT BITMAP)) - DS))) - (RETURN BITMAP]) -) - - (* ; "could have (STRIKEOUT)") - - (* ; "RMK: Removed (HELP HELP)") - -(BUILDFNKEYS '((BOLD BOLD) - (ITALICS ITALICS) - (CASE CASE) - (STRIKEOUT (STRIKE- OUT)) - (UNDERLINE (UNDER- LINE)) - (SUPERSCRIPT (SUPER/ SUB)) - (LARGER (LARGER SMALLER)) - (DEFAULTS DEFAULTS) - (CENTER JUSTIFY) - (AGAIN REDO)) - '(Tedit Keys) - 1) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (2120 6542 (BUILDFNKEYS 2130 . 5158) (KEY.BITMAP 5160 . 6540))))) -STOP diff --git a/obsolete/lispusers/EDITKEYS.LCOM b/obsolete/lispusers/EDITKEYS.LCOM deleted file mode 100644 index 98975a589f54eeb7fa39e0b54ae57939d3342233..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3680 zcmeHJ-ESL35cfxm=#_>f3Q-AFnYvKjRkG{zS7H|-pM7h4?Y-OUebljtNJ?!r32ss) zZ6!nzQvU`J{{s&w1@h1$@GHDSk>Hv4KJiGI-Lu=+snkk+?LF-7%+Ait&i-cRRFl-G zO_DXrNRrw$4yPTX+A`_{64dsI%c$oh;IvB&(>E$?f?Y8@0(x3g6jf-bqL@!iNI))W z_O2!~=}ZG=exiL2Y!Z*25?UD)12q0ieEF&XK6@j-uM_r|T=-p=la#H49^SyMa+5%&2wsEM ze3Q3r2LqPLg*4~|SizU4e#&uqmDs-9so78jNqHXRaNF;Mo1TX!C;inkPyMA;Znx3r zbLdp)bN}c+n~#2Ydri10oh!?65IVY!u4c1P4P1}AkXZz>>=?G$M(7QhXb?SY8`P(E zeJGa$W_Z4ZaVM3)_qlz@t#!5KjX&(DP!I@`>dz@!-fo-zwWX-QJEM7GZ_Ew2m@H)u-r}U@pOm$uE;} zW)YbTC7yCMhYd}Gbt@6x#=1EU|i{@-!2{h-^N zn;mp3bFU4$5(sniqXmo>rv{tdtuG&U*B9{nsoR=U2J36$a6k5E`}Bd=c!-QY`mr`V z{C#slsyF2Bwh)%|a%e=P> z{TeEsAKICZ3Hmt4Sz1Dcd*4P^PlZyahElVSzUHT5(Y^b8A-1}(_Z>nklZF)xwQX1g z;SyLCf@muiVU!*zlZ08alsUxHi`m16^+k!FRE7GMf$%C6zzO`eL=k3=K%PiAm)fm1 z=vj%nC&Gw$!!#{o2cRRQ7_sYq0}DnGLUnCwBAs0VFQ|Av>Zr>s&|$n#Ag1+v0huBN z$Yo4jk+^6Ui#f4FC5u_WK4ApR7v>s7)EOw`pvqiy({g;s=O@%+{aJ)NN8;ju-*L#< zJ7^v6lLIvkDM)LYf}tE;MwTiEvfz?B;u#Yw1D68B#ReqO4onZH^zdRbmzFUpWLh4~ zqdW+6HE#P@JvNTSB2hoYk{)l!MJJ$&Kx4TZ|2{hidHo}QKft25*$m01#Q8^5;&af7 z^<&MyP7cb^*4|s2-B2VPrCcc1zyhSFvDjer2!;eZC$)!HDURH35L$2eu!J>LK6e<} z0z%~(r|{hmN@YifhDxwAn4TjpDvA>>!_Eu%3Q~8KJ00zWP1y-mJE3BK!QzX}MtU~h zeH7Joj7yisn4qe%O^F8@RVfYB8djnM*pWpnG>4lGsORA#V28ie@51_(+dWVP>RN;c zzLro>MDDv*s|4Wou5aJQR;(hH91w$+K#7Ce)k^`#;;5<>&P)&k3Q*r*w2E~#oRL!% ze;{JOwerN^$aWHhb=(SUQ~b-=s8BAGAPBMJ1rBi$>=aQP5*I|qh%IKgbp+sO_AG-j z;%ee9!*uXQd4X+Q4c`%(f#=g&2N_1)pf*C<bQf65x&8} zc*EKADprTwlEx2zjN9e$&)|%YbC9Y&lV>$11x;qN`nZ)wgIP5;E@+imvo+2tSIVYU zo8TE`vw6tBhH04-a^;5EoG?*F-YdCRagjJUge#0oa{@z%HLE_sLrmIa0$9Av7@fel z)nL3*X^wx4VWpV(>WnwWrJBta<7`5VU=AMsn1cEJl7;Ps>YDP>h3$pvny7v+RM-@3 GKg$19+=xT~ diff --git a/obsolete/lispusers/EDITKEYS.TEDIT b/obsolete/lispusers/EDITKEYS.TEDIT deleted file mode 100644 index 32ed4d68b3896719ca7ba6a299a6c46bfb1b3243..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3774 zcmeHJPj4GV6d${Z?T}icRS`Wt84znJvSPs;@0#6plK=-c_SjzP>_)qr zw&B9PH%@#7R5+9q6(=r8`5gTO<$`hxZ)Ruhq=XibphD^>+5OFL-oJUz@7c`%@$N4{ zv_M;$vqg99Vy#%L7mL+mampY@X8q_EfbNFj5p>+h^J5l*lA_9i`{51?gZq_!uwS04 z!a*3^^#&{g7a|rzFoe=17APyiNGibT~fK9x>2c=qF zZj@no==Wp3=QA!UHQLvJ$Rcev;IgWw*%;xP!t2qqpn z|kjIEQ>!;wIaF~XV0%VvP=dW9 z?1Rxrv?+ev_XF%XP$q1MZ5_hCHyBJ(cJDBb1HX)|7h&^@?!YE{Hv(@Tn^N>I12!D8 zz8DF@1-Hvv2s;+LDUAZ#9B0Ca`7Ctf#8Tw$Gw6@q(CzaP)DO^ui((iPI+@BwXibp3 z$16B77(_9*kvM>8>|x}5o`B-ULNfNyGPjf54Si2=W*r{j1aLz zTB>fETQ(>k_tX|Nso_wIw#v}lR4sX8_qgw-rF9)Nq#3t0TU*yDnC&*$RHsd+i;*~D z-?dB!3EE0ddBD|WXsaDf--V9ZqLu;XZEES7Aq_Z|wnfceqTVx5VtPh*x~gGorU4e+ z=;^8jwr+Ombhk~ljZFtS_?6V_@W7~*dhXfO64~L|vz=WG7f~70W_46d&mZ!JiK(vD zpfdh!&~f9lGNPMNvW&xw#7U z8>_IoyquUXqvl05=JFNLse{EpkyrJ*sD7fJqG&6tuZs3RX}XtJv~pR@)_IaAHI6dJ zhzQAEnnRp9PJWvSkqaJ6oI{N(_?pXJxzLL@MuXB-a%7h0TguO%El-y{p0RKHCft*Me3ooLMCOWc5$Pm~+2B!KS( zGd<#h3-~XC$P%udMWMw_tEbb-26fs-=E5MPDPDfA!Y%!`iu@8Hb{;c#&WY!RFiWb8 zJym>B?0>4rGrPo{r&-|HJv~d{LH04`^YVJfT>mJ^=gMD7D4NQAan=-XV^KW>^Y_Wy HU;gwv%_aRo diff --git a/obsolete/lispusers/ENDNOTE b/obsolete/lispusers/ENDNOTE deleted file mode 100644 index cdfda194..00000000 --- a/obsolete/lispusers/ENDNOTE +++ /dev/null @@ -1,419 +0,0 @@ -(FILECREATED "18-Feb-87 15:43:31" {SUMEX-AIM}PS:ENDNOTE.;4 15652 - - changes to: (FNS NOTE.BUTTONEVENTINFN) - - previous date: "18-Feb-87 10:11:49" {SUMEX-AIM}PS:ENDNOTE.;6) - - -(* Copyright (c) 1987 by Leland Stanford Junior University. All rights reserved.) - -(PRETTYCOMPRINT ENDNOTECOMS) - -(RPAQQ ENDNOTECOMS ((* Developed under support from NIH grant RR-00785.) - (* Written by Frank Gilmurray and Sami Shaio.) - (FNS ADD.ENDNOTE INSERT.ENDNOTES INSERT.ENDNOTES.TEXT DELETE.ENDNOTES - NOTESREGIONP SET.ENDNOTE.STYLE MAP.ENDNOTE.LOOKS GET.ENDNOTE.FONTS) - (FNS ENDNOTEP NOTE.PUTFN NOTE.GETFN NOTE.BUTTONEVENTINFN) - (RECORDS ENDNOTEFONTS) - (* * Allow user to edit Endnote text in another TEdit window.) - (FNS AUX.TEDIT AUX.TEDIT.AFTERQUITFN AUX.TEDIT.TITLEMENUFN) - (* * Delimit text between two markers known as REGION MARKERS.) - (FNS REGMARKOBJ REGMARKOBJP REGMARK.DISPLAYFN REGMARK.IMAGEBOXFN REGMARK.PUTFN - REGMARK.GETFN REGMARK.BUTTONEVENTINFN) - (RECORDS REGMARKOBJ))) - - - -(* Developed under support from NIH grant RR-00785.) - - - - -(* Written by Frank Gilmurray and Sami Shaio.) - -(DEFINEQ - -(ADD.ENDNOTE - (LAMBDA (STREAM WINDOW) (* fsg "17-Feb-87 10:47") - - (* * Insert an ENDNOTE ImageObject as a superscript. Displayed as a number when updated.) - - - (LET ((NOBJ (NUMBEROBJ 'NOTE))) - (TEDIT.INSERT.OBJECT NOBJ STREAM) - (COND - ((UPDATE? WINDOW) - (UPDATE.NUMBEROBJS WINDOW 'ENDNOTEP)) - (T NIL)) - (replace (NUMBEROBJ NUMBER.TEXT) of (fetch OBJECTDATUM of NOBJ) - with (TEDIT.GETINPUT STREAM "Endnote text:")) - (TEDIT.PROMPTPRINT STREAM "" T)))) - -(INSERT.ENDNOTES - (LAMBDA (STREAM WINDOW) (* fsg "18-Feb-87 09:38") - - (* * Inserts text of endnotes at the end of the TEdit document. The text is inserted between two Region marking  - imageobjs.) - - - (LET* ((TEXTOBJ (TEXTOBJ STREAM)) - (LIST.OF.ENDNOTES (TSP.LIST.OF.OBJECTS TEXTOBJ 'ENDNOTEP)) - (CARETPOSITION (fetch CH# of (TEDIT.GETSEL STREAM)))) - (DELETE.ENDNOTES STREAM) - (COND - (LIST.OF.ENDNOTES (TEDIT.PROMPTPRINT STREAM - "Inserting notes at the end of the document..." - T) - (TEDIT.INSERT.OBJECT (REGMARKOBJ 'ENDNOTES - 'Endnotes-START) - STREAM - (ADD1 (fetch TEXTLEN of TEXTOBJ))) - (TEDIT.LOOKS STREAM '(PROTECTED ON) - (fetch TEXTLEN of TEXTOBJ) - 1) - (TEDIT.INSERT STREAM (CONCAT (CHARACTER (CHARCODE EOL)) - "Notes" - (CHARACTER (CHARCODE EOL))) - (ADD1 (fetch TEXTLEN of TEXTOBJ)) - (fetch (ENDNOTEFONTS TITLE.FONT) - of (GET.ENDNOTE.FONTS WINDOW)) - T) - (INSERT.ENDNOTES.TEXT STREAM TEXTOBJ LIST.OF.ENDNOTES) - (TEDIT.INSERT.OBJECT (REGMARKOBJ 'ENDNOTES - 'Endnotes-END) - STREAM - (ADD1 (fetch TEXTLEN of TEXTOBJ))) - (TEDIT.LOOKS STREAM '(PROTECTED ON) - (fetch TEXTLEN of TEXTOBJ) - 1) - (TEDIT.PROMPTPRINT STREAM "done") - (TEDIT.NORMALIZECARET TEXTOBJ (TEDIT.SETSEL STREAM CARETPOSITION 1)) - ) - (T NIL))))) - -(INSERT.ENDNOTES.TEXT - (LAMBDA (STREAM TEXTOBJ LIST.OF.ENDNOTES) (* fsg " 7-Jan-87 14:31") - - (* * Here to print the text of each endnote.) - - - (LET ((TEXTLOOKS (fetch (ENDNOTEFONTS TEXT.FONT) of (GET.ENDNOTE.FONTS WINDOW)))) - (for ENDNOTEOBJ in LIST.OF.ENDNOTES - do (LET ((NUMSTRING (MKSTRING (fetch (NUMBEROBJ NUMSTRING) - of (fetch OBJECTDATUM of (CAR ENDNOTEOBJ))))) - (TEXT (fetch (NUMBEROBJ NUMBER.TEXT) of (fetch OBJECTDATUM - of (CAR ENDNOTEOBJ))))) - (TEDIT.INSERT STREAM NUMSTRING (ADD1 (fetch TEXTLEN of TEXTOBJ)) - TEXTLOOKS T) - (TEDIT.INSERT STREAM (CONCAT " " TEXT (CHARACTER (CHARCODE EOL))) - (ADD1 (fetch TEXTLEN of TEXTOBJ)) - TEXTLOOKS T)))))) - -(DELETE.ENDNOTES - (LAMBDA (STREAM) (* fsg "18-Feb-87 09:11") - - (* * Delete the Endnotes, i.e. delete the start/end REGMARK ImageObjects and all the text between them.) - - - (LET* ((TEXTOBJ (TEXTOBJ STREAM)) - (NOTEMARKER.LIST (TSP.LIST.OF.OBJECTS TEXTOBJ 'NOTESREGIONP)) - (NOTES.START (CADAR NOTEMARKER.LIST)) - (NOTES.END (CADADR NOTEMARKER.LIST))) - (AND NOTEMARKER.LIST (TEDIT.DELETE STREAM NOTES.START (IDIFFERENCE (ADD1 NOTES.END) - NOTES.START)))))) - -(NOTESREGIONP - (LAMBDA (IMOBJ) (* fsg "26-Jan-87 09:41") - (AND (REGMARKOBJP IMOBJ) - (EQ (fetch REGION.USE of (fetch OBJECTDATUM of IMOBJ)) - 'ENDNOTES)))) - -(SET.ENDNOTE.STYLE - (LAMBDA (STREAM WINDOW) (* fsg " 9-Jan-87 09:18") - - (* * Set the font of the ENDNOTE number, title, or text.) - - - (LET ((NOTE.FONTS (GET.ENDNOTE.FONTS WINDOW)) - (NOTE.TYPE (MENU (create MENU - TITLE _ "ENDNOTE Fonts" - CENTERFLG _ T - ITEMS _ '(Number Title Text)))) - OLD.FONT NEW.FONT) - (AND NOTE.TYPE (PROGN (SETQ OLD.FONT (SELECTQ NOTE.TYPE - (Number (fetch (ENDNOTEFONTS - NUMBER.FONT) - of NOTE.FONTS)) - (Title (fetch (ENDNOTEFONTS - TITLE.FONT) - of NOTE.FONTS)) - (Text (fetch (ENDNOTEFONTS TEXT.FONT) - of NOTE.FONTS)) - NIL)) - (TEDIT.PROMPTPRINT STREAM (CONCAT "Change Endnote " NOTE.TYPE - " font " - (LIST (ABBREVIATE.FONT - OLD.FONT)) - " to...") - T) - (SETQ NEW.FONT (FONTCREATE (GET.TSP.FONT WINDOW OLD.FONT))) - (COND - ((NEQ OLD.FONT NEW.FONT) - (SELECTQ NOTE.TYPE - (Number (replace (ENDNOTEFONTS NUMBER.FONT) - of NOTE.FONTS with NEW.FONT)) - (Title (replace (ENDNOTEFONTS TITLE.FONT) - of NOTE.FONTS with NEW.FONT)) - (Text (replace (ENDNOTEFONTS TEXT.FONT) - of NOTE.FONTS with NEW.FONT)) - NIL) - (AND (EQ NOTE.TYPE 'Number) - (MAP.ENDNOTE.LOOKS STREAM NEW.FONT))) - (T NIL)) - (TEDIT.PROMPTPRINT STREAM "" T)))))) - -(MAP.ENDNOTE.LOOKS - (LAMBDA (STREAM NUMBERFONT) (* fsg " 9-Jan-87 09:09") - - (* * Here to update the ENDNOTE looks. Only the ENDNOTE superscript numbers are updated.) - - - (LET ((LIST.OF.NOTES (TSP.LIST.OF.OBJECTS (TEXTOBJ STREAM) - 'ENDNOTEP))) - (AND LIST.OF.NOTES (PROGN (TEDIT.PROMPTPRINT STREAM "Updating ENDNOTE Number looks..." - T) - (for NOTE/CH# in LIST.OF.NOTES - do (TEDIT.LOOKS STREAM NUMBERFONT (CADR NOTE/CH#) - 1)) - (TEDIT.PROMPTPRINT STREAM "done.")))))) - -(GET.ENDNOTE.FONTS - (LAMBDA (WINDOW) (* fsg " 5-Jan-87 10:40") - - (* * Setup the default ENDNOTE fonts for number, title, and text.) - - - (OR (WINDOWPROP WINDOW 'ENDNOTE.FONTS) - (PROGN (WINDOWPROP WINDOW 'ENDNOTE.FONTS - (create ENDNOTEFONTS - NUMBER.FONT _ GP.DefaultFont - TITLE.FONT _ GP.DefaultFont - TEXT.FONT _ GP.DefaultFont)) - (WINDOWPROP WINDOW 'ENDNOTE.FONTS))))) -) -(DEFINEQ - -(ENDNOTEP - (LAMBDA (IMOBJ) (* ss: " 2-Jul-85 16:51") - (AND (NUMBEROBJP IMOBJ) - (EQ (fetch USE of (fetch OBJECTDATUM of IMOBJ)) - 'NOTE)))) - -(NOTE.PUTFN - (LAMBDA (NUMBEROBJ STREAM WINDOW) (* fsg "28-Jan-87 13:48") - - (* * Used to put a numberobj that is functioning as an endnote.) - - - (replace (NUMBEROBJ FONT) of (fetch OBJECTDATUM of NUMBEROBJ) - with (for NOTEFONT in (GET.ENDNOTE.FONTS WINDOW) collect (LIST.FONT.PROPS NOTEFONT) - )) - (PRIN4 (LIST 'Endnote - (IMAGEOBJPROP NUMBEROBJ 'TAG) - (fetch OBJECTDATUM of NUMBEROBJ)) - STREAM))) - -(NOTE.GETFN - (LAMBDA (NEWOBJ USE/TEXT WINDOW) (* fsg " 8-Jan-87 10:19") - - (* * Used to get a numberobj that is functioning as an endnote.) - - - (WINDOWPROP WINDOW 'ENDNOTE.FONTS - (for NOTEFONT in (fetch (NUMBEROBJ FONT) of USE/TEXT) - collect (FONTCREATE NOTEFONT))) - (replace (NUMBEROBJ FONT) of USE/TEXT with NIL) - (replace OBJECTDATUM of NEWOBJ with USE/TEXT) - NEWOBJ)) - -(NOTE.BUTTONEVENTINFN - (LAMBDA (NUMBEROBJ STREAM) (* fsg "18-Feb-87 11:16") - - (* * Bring up another TEdit window where user can edit the text of an Endnote.) - - - (MENU (create MENU - TITLE _ 'Endnotes% Menu - CENTERFLG _ T - ITEMS _ '((Edit% Endnote (AUX.TEDIT NUMBEROBJ - (CONCAT "Endnote #" - (fetch NUMSTRING of - (fetch OBJECTDATUM of - NUMBEROBJ))) - STREAM)) - (Tag% Endnote (XREF.TAG.OBJECT NUMBEROBJ STREAM))))))) -) -[DECLARE: EVAL@COMPILE - -(RECORD ENDNOTEFONTS (NUMBER.FONT TITLE.FONT TEXT.FONT)) -] - (* * Allow user to edit Endnote text in another TEdit window.) - -(DEFINEQ - -(AUX.TEDIT - (LAMBDA (IMOBJ TITLE STREAM) (* fsg "20-Jan-87 15:46") - - (* * Open a TEdit window where the user can view/edit the text of the selected Endnote.) - - - (LET* ((MAINWINDOW (\TEDIT.MAINW STREAM)) - (AUXWINDOW (CREATEW (WINDOWPROP MAINWINDOW 'AUXW.REGION) - TITLE))) - (WINDOWPROP AUXWINDOW 'MAIN.WINDOW - MAINWINDOW) - (WINDOWPROP AUXWINDOW 'NOTE.IMAGEOBJ - IMOBJ) - (TEDIT (MKSTRING (fetch (NUMBEROBJ NUMBER.TEXT) of (fetch OBJECTDATUM - of IMOBJ))) - AUXWINDOW NIL '(AFTERQUITFN AUX.TEDIT.AFTERQUITFN TITLEMENUFN - AUX.TEDIT.TITLEMENUFN))))) - -(AUX.TEDIT.AFTERQUITFN - (LAMBDA (AUXWINDOW) (* fsg "20-Jan-87 15:56") - - (* * Here AFTER user finished with Endnote TEdit process.) - - - (LET ((MAINWINDOW (WINDOWPROP AUXWINDOW 'MAIN.WINDOW))) - (WINDOWPROP MAINWINDOW 'AUXW.REGION - (WINDOWPROP AUXWINDOW 'REGION)) - (GIVE.TTY.PROCESS MAINWINDOW) - (TEDIT.NORMALIZECARET (TEXTOBJ MAINWINDOW))))) - -(AUX.TEDIT.TITLEMENUFN - (LAMBDA (AUXWINDOW) (* fsg "20-Jan-87 15:49") - - (* * Here when left or middle button hit in title bar.) - - - (LET ((ITEM (MENU (create MENU - CENTERFLG _ T - ITEMS _ '(Save% Changes Abort% Changes))))) - (AND ITEM (PROGN (SELECTQ ITEM - (Save% Changes (replace (NUMBEROBJ NUMBER.TEXT) - of (fetch OBJECTDATUM - of (WINDOWPROP AUXWINDOW - 'NOTE.IMAGEOBJ)) - with (COERCETEXTOBJ (TEXTSTREAM - AUXWINDOW) - 'STRINGP))) - NIL) - (TEDIT.QUIT (TEXTSTREAM AUXWINDOW))))))) -) - (* * Delimit text between two markers known as REGION MARKERS.) - -(DEFINEQ - -(REGMARKOBJ - (LAMBDA (USE MARKING) (* ss: "15-Jul-85 11:54") - (LET ((NEWOBJ (IMAGEOBJCREATE (create REGMARKOBJ - REGION.USE _ USE - MARKING _ MARKING) - (IMAGEFNSCREATE (FUNCTION REGMARK.DISPLAYFN) - (FUNCTION REGMARK.IMAGEBOXFN) - (FUNCTION REGMARK.PUTFN) - (FUNCTION REGMARK.GETFN) - (FUNCTION NILL) - (FUNCTION REGMARK.BUTTONEVENTINFN) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL))))) - (IMAGEOBJPROP NEWOBJ 'TYPE - 'REGMARKOBJ) - NEWOBJ))) - -(REGMARKOBJP - (LAMBDA (IMOBJ) (* ss: "12-Jul-85 15:04") - (AND IMOBJ (EQ (IMAGEOBJPROP IMOBJ 'TYPE) - 'REGMARKOBJ)))) - -(REGMARK.DISPLAYFN - (LAMBDA (OBJ STREAM) (* fsg "18-Feb-87 09:18") - - (* * REGMARK is just a marker, it doesn't actually display anything.) - - - NIL)) - -(REGMARK.IMAGEBOXFN - (LAMBDA (OBJ STREAM CURRENTX RIGHTMARGIN) (* fsg "17-Feb-87 10:22") - - (* * REGMARK is just a marker, it doesn't actually display anything.) - - - (create IMAGEBOX - XSIZE _ 0 - YSIZE _ 0 - YDESC _ 0 - XKERN _ 0))) - -(REGMARK.PUTFN - (LAMBDA (MARKOBJ STREAM) (* fsg "28-Jan-87 14:10") - (PRIN2 (LIST 'Region - (IMAGEOBJPROP MARKOBJ 'TAG) - (LIST (fetch REGION.USE of (fetch OBJECTDATUM of MARKOBJ)) - (fetch MARKING of (fetch OBJECTDATUM of MARKOBJ)))) - STREAM))) - -(REGMARK.GETFN - (LAMBDA (STREAM) (* fsg "28-Jan-87 16:06") - (OR (WINDOWPROP (PROCESSPROP (THIS.PROCESS) - 'WINDOW) - 'IMAGEOBJ.MENUW) - (TSP.FMMENU (TEXTSTREAM (PROCESSPROP (THIS.PROCESS) - 'WINDOW)))) - (LET* ((REGMARK.ARGS (CDR (READ STREAM))) - (NEWOBJ (APPLY 'REGMARKOBJ - (CADR REGMARK.ARGS)))) - (IMAGEOBJPROP NEWOBJ 'TAG - (CAR REGMARK.ARGS)) - NEWOBJ))) - -(REGMARK.BUTTONEVENTINFN - (LAMBDA (MARKOBJ STREAM) (* fsg "18-Feb-87 10:07") - - (* * This function is never called because the REGMARK ImageObjects are protected after they are inserted and  - anything protected can't be selected.) - - - (AND (MOUSESTATE MIDDLE) - (LET ((MARKDATUM (fetch OBJECTDATUM of MARKOBJ))) - (TEDIT.PROMPTPRINT STREAM (CONCAT "Region used for " (fetch REGION.USE - of MARKDATUM) - (COND - ((fetch MARKING of MARKDATUM) - (CONCAT ", Marker is " - (fetch MARKING of MARKDATUM))) - (T ""))) - T))))) -) -[DECLARE: EVAL@COMPILE - -(RECORD REGMARKOBJ (REGION.USE MARKING)) -] -(PUTPROPS ENDNOTE COPYRIGHT ("Leland Stanford Junior University" 1987)) -(DECLARE: DONTCOPY - (FILEMAP (NIL (1240 8234 (ADD.ENDNOTE 1252 . 1873) (INSERT.ENDNOTES 1877 . 3628) (INSERT.ENDNOTES.TEXT - 3632 . 4538) (DELETE.ENDNOTES 4542 . 5135) (NOTESREGIONP 5139 . 5384) (SET.ENDNOTE.STYLE 5388 . 7086) - (MAP.ENDNOTE.LOOKS 7090 . 7727) (GET.ENDNOTE.FONTS 7731 . 8231)) (8236 10115 (ENDNOTEP 8248 . 8477) ( -NOTE.PUTFN 8481 . 9034) (NOTE.GETFN 9038 . 9547) (NOTE.BUTTONEVENTINFN 9551 . 10112)) (10280 12228 ( -AUX.TEDIT 10292 . 11019) (AUX.TEDIT.AFTERQUITFN 11023 . 11495) (AUX.TEDIT.TITLEMENUFN 11499 . 12225)) -(12302 15479 (REGMARKOBJ 12314 . 13131) (REGMARKOBJP 13135 . 13328) (REGMARK.DISPLAYFN 13332 . 13548) -(REGMARK.IMAGEBOXFN 13552 . 13859) (REGMARK.PUTFN 13863 . 14228) (REGMARK.GETFN 14232 . 14759) ( -REGMARK.BUTTONEVENTINFN 14763 . 15476))))) -STOP diff --git a/obsolete/lispusers/EVAL-WHEN-PATCH b/obsolete/lispusers/EVAL-WHEN-PATCH deleted file mode 100644 index 44523995..00000000 --- a/obsolete/lispusers/EVAL-WHEN-PATCH +++ /dev/null @@ -1 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP") (filecreated " 2-Jun-87 14:51:46" {dsk}work>eval-when-patch.\;1 30488 |changes| |to:| (vars eval-when-patchcoms) (fns addtocom delfromcom getdefcurrent importeval infilecom)) ; Copyright (c) 1987 by Xerox Corporation. All rights reserved. (prettycomprint eval-when-patchcoms) (rpaqq eval-when-patchcoms ((fns addtocom delfromcom getdefcurrent importeval infilecom))) (defineq (addtocom (lambda (com name type near listname) (* \; "Edited 2-May-87 19:04 by Pavel") (* \;  "tries to insert NAME into the prettycom COM; returns NIL if unsuccessful") (prog (tem) (cond ((and near (not (infilecoms? near type (list com)))) (return))) (cond ((setq tem (|fetch| add |of| (car com))) (return (cond ((or (null listname) (infilecoms? listname 'filevars (list com))) (and (setq tem (apply* tem com name type near)) (markaschanged comsname 'vars)) tem))))) (return (selectq (car com) (fns (and (eq type 'fns) (addtocom1 com name near listname))) ((vars initvars) (cond ((or (eq (car com) 'vars) near listname) (* \;  "Don't stick on INITVARS unless NEAR or LISTNAME says we should.") (selectq type (expressions (cond ((eq (car name) 'setq) (addtocom1 com (cdr name) near listname)))) (vars (addtocom1 com name near listname)) nil)))) (coms (addtocoms (cond ((eq (cadr com) '*) (cond ((litatom (caddr com)) (caddr com)) (t (return)))) (t (cdr com))) name type near listname)) (declare\: (and (or listname near) (addtocoms (cond ((eq (cadr com) '*) (cond ((litatom (caddr com)) (caddr com)) (t (return)))) (t (cdr com))) name type near listname))) (cl:eval-when (and (or listname near) (addtocoms (cond ((eq (cl:third com) '*) (cond ((litatom (cl:fourth com)) (cl:fourth com)) (t (return)))) (t (cddr com))) name type near listname))) ((prop ifprop) (selectq type (props (cond ((eq (cadr com) (cadr name)) (addtocom1 (cdr com) (car name) near listname)) ((and (eq (car name) (caddr com)) (null (cdddr com))) (/rplaca (cdr com) (union (mklist (cdr name)) (mklist (cadr com)))) (markaschanged comsname 'vars) t))) (macros (cond ((and (|for| prop |inside| (cadr com) |always| (eqmemb prop macroprops)) (|for| prop |in| macroprops |always| (or (eqmemb prop (cadr com)) (not (getprop name prop))))) (* |;;| "every property in the command is a macro prop and, either this is an IFPROP or else the MACROS are changed") (addtocom1 (cdr com) name near listname)))) nil)) ((props alists) (and (eq type (car com)) (addtocom1 com (/nconc1 (or (assoc (car name) (cond ((eq (cadr com) '*) (cond ((litatom (caddr com)) (and (or (null listname) (eq (caddr com) listname)) (gettopval (caddr com)))) (t (return)))) (t (cdr com)))) (list (car name))) (cadr name)) near listname))) (p (cond ((and (eq type 'expressions) (neq (car name) 'setq)) (addtocom1 com name near listname)))) (and (eq (car com) type) (addtocom1 com name near listname))))))) (delfromcom (lambda (com name type) (* \; "Edited 2-May-87 19:02 by Pavel") (* \; "Tries to delete NAME from COM") (prog (tem var new) (cond ((setq tem (|fetch| delete |of| (car com))) (and (setq tem (apply* tem com name type)) (markaschanged comsname 'vars)) (return tem))) (return (selectq (car com) ((declare\: coms) (delfromcoms (cond ((eq (cadr com) '*) (cond ((litatom (caddr com)) (caddr com)) (t (return)))) (t (cdr com))) name type)) ((cl:eval-when) (delfromcoms (cond ((eq (cl:third com) '*) (cond ((litatom (cl:fourth com)) (cl:fourth com)) (t (return)))) (t (cddr com))) name type)) ((alists props) (and (eq type (car com)) (cond ((eq (cadr com) '*) (cond ((and (litatom (setq var (caddr com))) (setq tem (assoc (car name) (gettopval var))) (neq (cdr tem) (setq tem (removeitem (cadr name) (cdr tem))))) (saveset var tem t 'noprint) t))) ((and (cdr (setq tem (assoc (car name) (cdr com)))) (neq (cdr tem) (setq new (removeitem (cadr name) (cdr tem))))) (/rplacd tem new) (markaschanged comsname 'vars) t)))) (blocks (* |;;| "Remove function name from blocks declarations. This isn't entirely correctly, since in removing the name from the block variables, it will hit homonyms in globalvars, specvars, etc.") (and (eq type 'fns) (|for| block |in| (infilecomtail com t) |do| (and (memb name block) (/dremove name block)) (|for| x |in| block |when| (and (listp x) (memb name (cdr x))) |do| (/rplacd x (remove name (cdr x))))))) ((prop ifprop) (selectq type (props (return (cond ((eq (cadr com) (cadr name)) (delfromcom1 (cdr com) (car name))) ((and (eqmemb (cadr name) (cadr com)) (null (cdr (setq tem (prettycom1 (cdr com))))) (eq (car tem) (car name))) (/rplaca (cdr com) (remove (cadr name) (mklist (cadr com)))) (markaschanged comsname 'vars) t)))) (cond ((|for| prop |inside| (cadr com) |always| (eq type (getprop prop 'proptype))) (delfromcom1 (cdr com) name))))) ((records initrecords sysrecords) (and (eq type 'records) (delfromcom1 com name))) (p (and (eq type 'expressions) (delfromcom1 com name))) ((vars initvars) (and (eq type 'vars) (delfromcom1 com name t))) (and (eq type (car com)) (delfromcom1 com name))))))) (getdefcurrent (lambda (name type options) (* \; "Edited 2-May-87 19:00 by Pavel") (* \;  "Gets the current definition--source=0") (let (def) (cond ((and (setq def (|fetch| getdef |of| type)) (neq def t)) (* |;;| "We assign T to types whose GETDEF is normally handled in the SELECTQ below but whose MACRO is to be defaulted to the PUTDEF/GETDEF in PRETTYCOM.") (or (neq (setq def (apply* def name type options)) (|fetch| nulldef |of| type)) (getdeferr name type options)) def) (t (or (neq (setq def (selectq type (fns (and (litatom name) (exprp (setq def (virginfn name))) def)) (vars (|if| (litatom name) |then| (gettopval name) |else| 'nobind)) ((fields records) (|if| (litatom name) |then| (setq def (selectq type (records (reclook name)) (mkprogn (fieldlook name)))) (|if| (eqmemb 'edit options) |then| (copy def) |else| def))) (files (* \;  "what is the `definition' of a file? -- I guess the COMS which say what it contains") (|if| (litatom name) |then| (|if| (setq def (getfiledef name)) |then| (updatefiles) (list (listp (gettopval (filecoms def))) (|fetch| tobedumped |of| (|fetch| fileprop |of| def)) (listp (|fetch| filedates |of| def)))))) (templates (|if| (and (litatom name) (setq def (gettemplate name))) |then| (list 'settemplate (kwote name) (kwote def)))) (macros (|if| (and (litatom name) (setq def (|for| x |on| (getproplist name) |by| (cddr x) |when| (fmemb (car x) macroprops) |join| (list (car x) (cadr x))))) |then| `(putprops ,name ,@def))) (expressions (listp name)) (props (and (listp name) (and (setq def (some (getproplist (car name)) (function (lambda (x) (eq x (cadr name)))) (function cddr))) (list 'putprops (car name) (cadr name) (cadr def))))) (filepkgcoms (and (litatom name) (prog ((com (filepkgcom name)) (typ (filepkgtype name))) (return (cond ((and com typ) (list (cons 'com com) (cons 'type typ))) (com (list (cons 'com com))) (typ (list (cons 'type typ)))))))) (filevars (cond ((and (litatom name) (listp (setq def (gettopval name))) (whereis name 'filevars)) def) (t 'nobind))) (let ((coms (list (makenewcom name type))) file) (cond ((not (setq def (getdefcom coms))) (with-reader-environment *old-interlisp-read-environment* (resetlst (resetsave prettyflg) (resetsave fontchangeflg) (resetsave (output (setq file (openstream '{nodircore} 'both)))) (prettydefcoms coms) (setfileptr file 0) (setq def (|for| x |in| (readfile file) |join| (selectq (car x) ((*) nil) (declare\: (|for| y |on| (cdr x) |unless| (selectq (car y) ((copywhen eval@loadwhen eval@compilewhen) (return (list y))) (fmemb (car y) declaretagslst)) |collect| (car y))) (cl:eval-when (cddr x)) (progn (cdr x)) (list x)))) (setq nocopy t))))) (mkprogn def)))) (|fetch| nulldef |of| type)) (getdeferr name type options)) def))))) (importeval (lambda (form returnflg) (* \; "Edited 2-May-87 18:57 by Pavel") (* |;;| "Ignore DONTEVAL@LOAD'S --- If RETURNFLG is on, return list of forms") (and (listp form) (selectq (car form) (declare\: (for z in (cdr form) join (importeval z returnflg))) (cl:eval-when (for z in (cddr form) join (importeval z returnflg))) (/declaredatatype (* \;  "Ignore datatype initializations -- we only need the record declaration itself") nil) (progn (* \; "default: eval and/or return it") (and (neq returnflg t) (eval form)) (and returnflg (list form))))))) (infilecom (lambda (com) (* \; "Edited 2-May-87 19:03 by Pavel") (cond ((nlistp com) (cond ((eq type 'vars) (infilecomsval com)))) ((eq (car com) commentflg) (* |;;|  "must be special case'd first so that (* * values) doesn't make it look like `values' is a variable") (* \;  "don't know why I should bother, but someone might want to know all of the comments on a file???") (cond ((eq type commentflg) (infilecomsval com t))) nil) (t (prog ((comname (car com)) (tail (cdr com)) cfn tem) (cond ((cond ((setq cfn (|fetch| (filepkgcom contents) |of| comname)) (setq tem (apply* cfn com (cond ((and (null onfiletype) (listp name)) (* \;  "call from WHEREIS of a name which is a list") (list name)) (t name)) type onfiletype))) ((setq cfn (|fetch| (filepkgcom prettytype) |of| comname)) (* \; "for compatability") (setq tem (apply* cfn com type name)))) (cond ((nlistp tem) (cond ((eq tem t) (cond ((or (eq name t) (null onfiletype)) (retfrom 'infilecoms? t)))))) (t (infilecomsvals tem)))) ((listp tail) (* |;;| "this SELECTQ handles the `exceptional cases' for the built in types. There is an explicit RETURN in the SELECTQ clause if the default is handled") (selectq comname ((prop ifprop) (setq tail (cdr tail))) nil) (cond ((eq (car tail) '*) (cond ((litatom (cadr tail)) (selectq type ((vars filevars) (infilecomsval (cadr tail))) nil)) ((and (listp (cadr tail)) (eq onfiletype 'update) (eq type 'vars) (eq (caadr tail) 'progn) (fmemb (car (last (cadr tail))) name)) (setq val (cons (cadr tail) val)))))) (selectq comname ((coms export) (infilecoms (infilecomtail com))) (cl:eval-when (infilecoms (infilecomtail (cdr com)))) (declare\: (* \; "skip over DECLARE: tags") (return (and (not (fmemb 'compilervars com)) (ifcdeclare (infilecomtail com) (eq type 'declare\:))))) (original (* \; "dont expand macros") (prog ((origflg t)) (infilecoms (infilecomtail com)))) ((prop ifprop) (* \;  "this currently does not handle `pseudo-types' of PROPNAMES") (selectq type (props (ifcpropscan (infilecomtail (cdr com)) (cadr com))) (macros (infilecomsmacro (infilecomtail (cdr com)) (cadr com))) nil)) (props (return (ifcprops com))) (macros (return (selectq type (props (ifcpropscan (infilecomtail com) macroprops)) (macros (infilecomsvals (infilecomtail com))) nil))) (alists (* \;  "sigh. This should probably also `coerce' when asking for LISPXMACROS, etc.") (return (selectq type (alists (infilepairs (infilecomtail com))) nil))) (p (return (selectq type ((expressions p) (infilecomsvals (infilecomtail com t) t)) (cond ((null onfiletype) (* \; "for WHEREIS and FILECOMSLST") (selectq type (i.s.oprs (ifcexprtype com 'i.s.opr)) (templates (ifcexprtype com 'settemplate)) nil)))))) ((addvars appendvars) (selectq type (vars (return (and (null onfiletype) (|for| x |in| (infilecomtail com t) |do| (infilecomsval (car x) t))))) (alists (return (|for| x |in| (infilecomtail com) |when| (eqmemb 'alist (getprop (car x) 'vartype)) |do| (|for| z |in| (cdr x) |do| (infilecomsval (list (car x) (car z)) t))))) (or (eq type comname) (return)))) ((vars initvars filevars uglyvars horriblevars constants array) (return (cond ((eq type 'expressions) (|for| x |in| (infilecomtail com) |when| (listp x) |do| (infilecomsval (cons 'setq x) t))) ((or (eq type 'vars) (eq type comname))(* \;  "either want all VARS, or else want all FILEVARS and this is a FILEVARS command") (|for| x |in| (infilecomtail com) |do| (cond ((listp x) (and (car x) (infilecomsval (car x) t))) (x (infilecomsval x (eq comname 'initvars))))))))) (defs (return (|for| x |in| (infilecomtail com) |when| (eq type (car x)) |do| (infilecomsvals (cdr x))))) (files (return)) nil) (* |;;| "Exceptional cases now handled. If TYPE matches (CAR COM) then scan the tail as usual. Else expand the com's MACRO, if it has one, unless there was a CONTENTS function") (cond ((eq comname type) (infilecomsvals (infilecomtail com))) ((and (or (null cfn) (and (eq cfn t) (null onfiletype))) (null origflg) (setq tem (|fetch| (filepkgcom macro) |of| comname))) (infilecoms (subpair (car tem) (infilecomtail com) (cdr tem)))))))))))) ) (putprops eval-when-patch copyright ("Xerox Corporation" 1987)) (declare\: dontcopy (filemap (nil (475 30395 (addtocom 485 . 7020) (delfromcom 7022 . 12896) (getdefcurrent 12898 . 19529) (importeval 19531 . 20542) (infilecom 20544 . 30393))))) stop \ No newline at end of file diff --git a/obsolete/lispusers/FASTEDITBM b/obsolete/lispusers/FASTEDITBM deleted file mode 100644 index fa5e7dda..00000000 --- a/obsolete/lispusers/FASTEDITBM +++ /dev/null @@ -1,1431 +0,0 @@ -(FILECREATED "16-Nov-87 17:15:41" {ERINYES}KOTO>FASTEDITBM.;3 68144 - - changes to: (FNS EXPANDBITMAP) - (VARS FASTEDITBMCOMS) - - previous date: " 4-Sep-87 15:58:23" {ERINYES}KOTO>FASTEDITBM.;2) - - -(* Copyright (c) 1987 by Xerox Corporation. All rights reserved.) - -(PRETTYCOMPRINT FASTEDITBMCOMS) - -(RPAQQ FASTEDITBMCOMS ((DECLARE: DONTCOPY (MACROS UPDATE/BM/DISPLAY)) - (P (SETQ EDITBMMENU NIL)) - (FNS GRID) - (FNS EDITBM EDITBMCLOSEFN TILEAREA EDITBMBUTTONFN EDITBMSCROLLFN - \EDITBM/PUTUP/DISPLAY EDITBMRESHAPEFN EDITBMREPAINTFN.NEW - EDITBMREPAINTFN RESETGRID.NEW) - (FNS SCALEBM BLTPATTERN BLTPATTERN.REPLACEDISPLAY) - (FNS EXPANDBITMAP EXPANDBM))) -(DECLARE: DONTCOPY -(DECLARE: EVAL@COMPILE -[PUTPROPS UPDATE/BM/DISPLAY MACRO ((BM W) - (BITBLT BM (WINDOWPROP W (QUOTE DXOFFSET)) - (WINDOWPROP W (QUOTE DYOFFSET)) - W 0 (WINDOWPROP W (QUOTE BMDISPLAYBOTTOM)) - (WINDOWPROP W (QUOTE BMDISPLAYWIDTH)) - 1000 NIL (QUOTE REPLACE] -) -) -(SETQ EDITBMMENU NIL) -(DEFINEQ - -(GRID - [LAMBDA (GRIDSPEC WIDTH HEIGHT BORDER DS GRIDSHADE) (* N.H.Briggs " 4-Sep-87 15:39") - (* ; "draws a grid") - (PROG ((X0 (fetch (REGION LEFT) of GRIDSPEC)) - (Y0 (fetch (REGION BOTTOM) of GRIDSPEC)) - (SQWIDTH (fetch (REGION WIDTH) of GRIDSPEC)) - (SQHEIGHT (fetch (REGION HEIGHT) of GRIDSPEC)) - (GRIDSHADE (COND - ((TEXTUREP GRIDSHADE)) - (T BLACKSHADE))) - LINELENGTH TWICEBORDER MAXIMUMCOLOR TOTALHEIGHT GRIDBM TEMPBM) - (SETQ TOTALHEIGHT (ITIMES HEIGHT SQHEIGHT)) - (COND - ((OR (ZEROP BORDER) - (NULL BORDER)) (* ; "don't draw anything.") - (RETURN)) - [(NUMBERP BORDER) - (SETQ TWICEBORDER (ITIMES BORDER 2)) - (PROGN (* ;;  -  -"draw vertical lines use BITBLT so that we don't have to correct for the width of the line since line drawing will put the coordinate in the middle." -) - (BLTSHADE GRIDSHADE DS X0 Y0 BORDER TOTALHEIGHT (QUOTE REPLACE)) - (for X from (IDIFFERENCE (IPLUS X0 SQWIDTH) - BORDER) - to (IDIFFERENCE (IPLUS X0 (ITIMES (SUB1 WIDTH) - SQWIDTH)) - BORDER) - by SQWIDTH do (BLTSHADE GRIDSHADE DS X Y0 TWICEBORDER TOTALHEIGHT - (QUOTE REPLACE))) - (BLTSHADE GRIDSHADE DS (IDIFFERENCE (IPLUS X0 (ITIMES WIDTH SQWIDTH)) - BORDER) - Y0 BORDER TOTALHEIGHT (QUOTE REPLACE))) - (PROGN (* ; "draw horizontal lines") - (BLTSHADE GRIDSHADE DS X0 Y0 (SETQ LINELENGTH (ITIMES WIDTH SQWIDTH)) - BORDER - (QUOTE REPLACE)) - (for Y from (IDIFFERENCE (IPLUS Y0 SQHEIGHT) - BORDER) - to (IDIFFERENCE (IPLUS Y0 (ITIMES (SUB1 HEIGHT) - SQHEIGHT)) - BORDER) - by SQHEIGHT do (BLTSHADE GRIDSHADE DS X0 Y LINELENGTH TWICEBORDER - (QUOTE REPLACE))) - (BLTSHADE GRIDSHADE DS X0 (IDIFFERENCE (IPLUS Y0 TOTALHEIGHT) - BORDER) - LINELENGTH BORDER (QUOTE REPLACE] - [(EQ BORDER (QUOTE POINT)) (* ; -"put a point in the lower left corner of each box") - (if (WINDOWP DS) - then (SETQ TEMPBM (WINDOWPROP DS (QUOTE TEMPBM))) - (SETQ GRIDBM (WINDOWPROP DS (QUOTE GRIDBM))) - (if (NOT GRIDBM) - then (SETQ GRIDBM (BITMAPCREATE SQWIDTH SQHEIGHT)) - (WINDOWPROP DS (QUOTE GRIDBM) - GRIDBM)) - (BLTSHADE WHITESHADE GRIDBM 0 0) - (* ; "Clear temporary bitmap.") - (BLTSHADE BLACKSHADE GRIDBM 0 0 1 1 (QUOTE REPLACE)) - (* ; "Put spot down.") - (* ; "Fill up temporary bitmap.") - (BLTPATTERN GRIDBM 0 0 SQWIDTH SQHEIGHT DS X0 Y0 (ITIMES WIDTH SQWIDTH) - (ITIMES HEIGHT SQHEIGHT) - (QUOTE PAINT) - TEMPBM) - else [SETQ MAXIMUMCOLOR (SUB1 (EXPT 2 (BITSPERPIXEL (DSPDESTINATION - NIL DS] - (* ;; "Crufty slow original code.") - (for X from X0 to (IPLUS X0 (ITIMES WIDTH SQWIDTH)) by SQWIDTH - do (for Y from Y0 to (IPLUS Y0 TOTALHEIGHT) by SQHEIGHT - do (BITMAPBIT DS X Y MAXIMUMCOLOR] - (T (\ILLEGAL.ARG BORDER]) -) -(DEFINEQ - -(EDITBM - [LAMBDA (BMSPEC) (* N.H.Briggs " 4-Sep-87 15:39") - (* ;;; "A simple bitmap editor.") - (* ;;  -  -"The edit part of the display is from 0 to MAXGRIDWIDTH in width and from 0 to MAXGRIDHEIGHT in height. The commands and display area for the bitmap being edited are above the edit region." -) - (DECLARE (GLOBALVARS SCREENWIDTH SCREENHEIGHT)) - (PROG (BMW BMWINTERIOR BMWWIDTH BMWHEIGHT WIDTH HEIGHT BM CR ORIGBM GRIDSQUARE BPP ORIGBPP - ORIGWIDTH) (* ;  -  -"set ORIGBM to the input bitmap if any and BM to a copy of it for editting.") - [COND - ((OR (EQ BMSPEC CursorBitMap) - (AND (EQ BMSPEC (QUOTE CursorBitMap)) - (SETQ BMSPEC CursorBitMap))) (* ;  -  -"editing cursor, save old value and make changes to the original.") - (SETQ ORIGBM (BITMAPCOPY CursorBitMap)) - (SETQ BM CursorBitMap)) - [(BITMAPP BMSPEC) - (SETQ BM (BITMAPCOPY (SETQ ORIGBM BMSPEC] - [(LITATOM BMSPEC) - (COND - ([BITMAPP (SETQ ORIGBM (EVALV BMSPEC (QUOTE EDITBM] - (* ; "use value.") - (SETQ BM (BITMAPCOPY ORIGBM))) - (T (SETQ ORIGBM NIL) - (SETQ BM (\READBMDIMENSIONS] - ((REGIONP BMSPEC) (* ;  -  -"if BMSPEC is a region, treat it as a region of the screen.") - [SETQ BM (BITMAPCREATE (fetch (REGION WIDTH) of BMSPEC) - (fetch (REGION HEIGHT) of BMSPEC) - (BITSPERPIXEL (SCREENBITMAP] - (* ; "note that bm has initial bits in it.") - (SETQ ORIGBM BMSPEC) - (BITBLT (SCREENBITMAP) - (fetch (REGION LEFT) of BMSPEC) - (fetch (REGION BOTTOM) of BMSPEC) - BM 0 0 NIL NIL (QUOTE INPUT) - (QUOTE REPLACE))) - ((WINDOWP BMSPEC) - (SETQ ORIGBM BMSPEC) (* ;;  -  -"FS: Seems too big below, why not ClipRegion's Width & Height? That's all that's used...") - (SETQ BM (BITMAPCREATE (WINDOWPROP BMSPEC (QUOTE WIDTH)) - (WINDOWPROP BMSPEC (QUOTE HEIGHT)) - (BITSPERPIXEL BMSPEC))) - (* ; "open the window and bring it to the top.") - (TOTOPW BMSPEC) - (SETQ CR (DSPCLIPPINGREGION NIL BMSPEC)) - (BITBLT BMSPEC (fetch (REGION LEFT) of CR) - (fetch (REGION BOTTOM) of CR) - BM 0 0 (fetch (REGION WIDTH) of CR) - (fetch (REGION HEIGHT) of CR))) - (T (* ; "otherwise create a bitmap") - (SETQ BM (\READBMDIMENSIONS] - (if (OR (EQ (BITMAPHEIGHT BM) - 0) - (EQ (BITMAPWIDTH BM) - 0)) - then (ERROR "Can't edit a bitmap with no bits in it." BMSPEC)) - (SETQ BPP (BITSPERPIXEL (SCREENBITMAP))) - (SETQ ORIGBPP (fetch (BITMAP BITMAPBITSPERPIXEL) of BM)) - [COND - ((NOT (EQ BPP ORIGBPP)) (* ;;  -  -"save the actual number of bits per pixel and set it to BPP in the bitmap being edited so that it can be BITBLT ed on the screen." -) - (SETQ ORIGWIDTH (fetch (BITMAP BITMAPWIDTH) of BM)) - (replace (BITMAP BITMAPBITSPERPIXEL) of BM with BPP) - (SETQ WIDTH (IQUOTIENT (ITIMES ORIGBPP ORIGWIDTH) - BPP)) - (replace (BITMAP BITMAPWIDTH) of BM with WIDTH)) - (T (SETQ WIDTH (fetch (BITMAP BITMAPWIDTH) of BM] - (SETQ HEIGHT (fetch (BITMAP BITMAPHEIGHT) of BM)) - (* ;;  -  -"Calculate a default window size. Start by calculating the grid size from the bitmap size.") - (SETQ GRIDSQUARE (IMAX (IMIN (IQUOTIENT (IDIFFERENCE (IQUOTIENT (ITIMES - SCREENWIDTH - 2) - 3) - GRIDTHICKNESS) - WIDTH) - (IQUOTIENT (IDIFFERENCE (IQUOTIENT (ITIMES - - SCREENHEIGHT 2) - 3) - (ITIMES GRIDTHICKNESS 2)) - (ADD1 HEIGHT)) - NORMALGRIDSQUARE) - MINGRIDSQUARE)) - (SETQ BMWWIDTH (IMIN (IPLUS (ITIMES GRIDSQUARE WIDTH) - GRIDTHICKNESS) - (IQUOTIENT (ITIMES SCREENWIDTH 2) - 3))) - (SETQ BMWHEIGHT (IMIN (IPLUS (ITIMES HEIGHT (ADD1 GRIDSQUARE)) - (ITIMES GRIDTHICKNESS 2) - 1) - (IQUOTIENT (ITIMES SCREENHEIGHT 2) - 3))) - (SETQ BMW (CREATEW (GETBOXREGION (WIDTHIFWINDOW BMWWIDTH) - (HEIGHTIFWINDOW BMWHEIGHT T) - NIL NIL NIL - "Indicate the position for the Bitmap Edit window.") - "Bitmap Editor")) - (WINDOWPROP BMW (QUOTE BM) - BM) - (WINDOWPROP BMW (QUOTE SCROLLFN) - (FUNCTION EDITBMSCROLLFN)) - (WINDOWPROP BMW (QUOTE RESHAPEFN) - (FUNCTION EDITBMRESHAPEFN)) - (WINDOWPROP BMW (QUOTE REPAINTFN) - (FUNCTION EDITBMREPAINTFN)) - (WINDOWPROP BMW (QUOTE BUTTONEVENTFN) - (FUNCTION EDITBMBUTTONFN)) - (WINDOWPROP BMW (QUOTE CLOSEFN) - (FUNCTION EDITBMCLOSEFN)) - (WINDOWPROP BMW (QUOTE XOFFSET) - 0) - (WINDOWPROP BMW (QUOTE YOFFSET) - 0) - (WINDOWPROP BMW (QUOTE DXOFFSET) - 0) - (WINDOWPROP BMW (QUOTE DYOFFSET) - 0) - (WINDOWPROP BMW (QUOTE ORIGINALBITMAP) - ORIGBM) - (WINDOWPROP BMW (QUOTE FINISHEDFLG) - NIL) - (WINDOWPROP BMW (QUOTE COLOR) - (SUB1 (EXPT 2 BPP))) - (WINDOWPROP BMW (QUOTE GRIDON) - T) (* ;  - "call reshapefn to initialize the display and values") - (EDITBMRESHAPEFN BMW NIL NIL NIL (NOT ORIGBM)) - (* ;  -  -"start a mouse process in case this process is the mouse process.") - (SPAWN.MOUSE) - (while (NOT (WINDOWPROP BMW (QUOTE FINISHEDFLG))) do (DISMISS 500)) - (* ; "remove the closefn before closing the window.") - (WINDOWPROP BMW (QUOTE CLOSEFN) - NIL) - (CLOSEW BMW) - (COND - ((NOT (EQ ORIGBPP BPP)) - (replace (BITMAP BITMAPBITSPERPIXEL) of BM with ORIGBPP) - (replace (BITMAP BITMAPWIDTH) of BM with ORIGWIDTH))) - (RETURN (COND - ((EQ T (WINDOWPROP BMW (QUOTE FINISHEDFLG))) - (* ;  -  -"editor exited via ok, stuff contents into original bitmap.") - (COND - ((EQ BMSPEC CursorBitMap) (* ; "editting happened in original, leave it alone.") - CursorBitMap) - ((REGIONP ORIGBM) (* ; "put it back into the screen.") - (BITBLT BM 0 0 (SCREENBITMAP) - (fetch (REGION LEFT) of ORIGBM) - (fetch (REGION BOTTOM) of ORIGBM) - (fetch (REGION WIDTH) of ORIGBM) - (fetch (REGION HEIGHT) of ORIGBM) - (QUOTE INPUT) - (QUOTE REPLACE)) - BM) - ((WINDOWP ORIGBM) (* ; "put it back into the window") - (BITBLT BM 0 0 ORIGBM (fetch (REGION LEFT) of CR) - (fetch (REGION BOTTOM) of CR) - (fetch (REGION WIDTH) of CR) - (fetch (REGION HEIGHT) of CR) - (QUOTE INPUT) - (QUOTE REPLACE)) - BM) - (ORIGBM (BITBLT BM 0 0 ORIGBM 0 0 WIDTH HEIGHT) - [COND - ((AND BMSPEC (LITATOM BMSPEC)) - (* ;  -  -"if spec was an atom without a bm value, set it. in the environment above EDITBM.") - (MARKASCHANGED BMSPEC (QUOTE VARS)) - (STKEVAL (QUOTE EDITBM) - (LIST (QUOTE SETQQ) - BMSPEC BM] - ORIGBM) - (T BM))) - (T (* ;  - "error exit, if cursor return it to original value.") - (COND - ((EQ BMSPEC CursorBitMap) - (BITBLT ORIGBM NIL NIL CursorBitMap))) - (ERROR!]) - -(EDITBMCLOSEFN - [LAMBDA (BMW) (* ; "Edited 27-Aug-87 21:26 by FS") - (* ;;  -  -"the close function for a bitmap edit window. For now do what a STOP would have done.") - (* ;;  -  -"FS: Assuming this window won't be reused, flush the temporary bm.") - (WINDOWPROP BMW (QUOTE TEMPBM) - NIL) - (WINDOWPROP BMW (QUOTE GRIDBM) - NIL) - (WINDOWPROP BMW (QUOTE FINISHEDFLG) - (QUOTE KILL]) - -(TILEAREA - [LAMBDA (LFT BTM WDTH HGHT SRCBM WIN) (* ; "Edited 27-Aug-87 21:20 by FS") - (* ;;  -  -"lays tiles out in an area of a window. This function only provided for backwards compatibility.") - (BLTPATTERN.REPLACEDISPLAY SRCBM 0 0 (BITMAPWIDTH SRCBM) - (BITMAPHEIGHT SRCBM) - WIN LFT BTM WDTH HGHT]) - -(EDITBMBUTTONFN - [LAMBDA (W) (* N.H.Briggs " 4-Sep-87 15:30") - (* ;; "inner function of bitmap editor.") - (DECLARE (GLOBALVARS \CURRENTCURSOR)) - (PROG (GRIDX0 GRIDY0 BITMAPWIDTH BITMAPHEIGHT NEWGRIDSIZE PAINTW ORIGBM GRIDSPEC GRIDINTERIOR - BM BITSWIDE BITSHIGH WREGION XOFFSET YOFFSET DXOFFSET DYOFFSET DISPLAYREGION - EXTENT BITSPERPIXEL CURSORBM) - (SETQ GRIDSPEC (WINDOWPROP W (QUOTE GRIDSPEC))) - (SETQ GRIDINTERIOR (WINDOWPROP W (QUOTE GRIDINTERIOR))) - (SETQ BM (WINDOWPROP W (QUOTE BM))) - (SETQ BITSWIDE (WINDOWPROP W (QUOTE BITSWIDE))) - (SETQ BITSHIGH (WINDOWPROP W (QUOTE BITSHIGH))) - (SETQ WREGION (WINDOWPROP W (QUOTE REGION))) - (SETQ XOFFSET (WINDOWPROP W (QUOTE XOFFSET))) - (SETQ YOFFSET (WINDOWPROP W (QUOTE YOFFSET))) - (SETQ DXOFFSET (WINDOWPROP W (QUOTE DXOFFSET))) - (SETQ DYOFFSET (WINDOWPROP W (QUOTE DYOFFSET))) - (SETQ DISPLAYREGION (WINDOWPROP W (QUOTE DISPLAYREGION))) - (SETQ EXTENT (WINDOWPROP W (QUOTE EXTENT))) - (SETQ GRIDX0 (fetch (REGION LEFT) of GRIDSPEC)) - (SETQ GRIDY0 (fetch (REGION BOTTOM) of GRIDSPEC)) - (SETQ BITMAPWIDTH (fetch (BITMAP BITMAPWIDTH) of BM)) - (SETQ BITMAPHEIGHT (fetch (BITMAP BITMAPHEIGHT) of BM)) - (SETQ BITSPERPIXEL (fetch (BITMAP BITMAPBITSPERPIXEL) of BM)) - (SETQ COLOR (WINDOWPROP W (QUOTE COLOR))) - (* ;;  - "mark the region of the bitmap that is being editted." -) - (COND - ((INSIDE? GRIDINTERIOR (LASTMOUSEX W) - (LASTMOUSEY W)) (* ;; "if cursor is inside, shade it.") - (\SHADEBITS BM GRIDSPEC GRIDINTERIOR W BITSWIDE BITSHIGH COLOR)) - ((INSIDE? DISPLAYREGION (LASTMOUSEX W) - (LASTMOUSEY W)) (* ;;  - "Run the menu foe re-windowing into the whole bitmap") - (SELECTQ - [MENU (COND - ((type? MENU EDITBMWINDOWMENU) - EDITBMWINDOWMENU) - ((SETQ EDITBMWINDOWMENU (create MENU - ITEMS _ - (QUOTE ((Move (QUOTE Move) - - "Selects a different part of the bitmap to edit."))) - CENTERFLG _ T] - (Move (* ;  - "move the editing window's location on the bitmap.") - (PROG (POS) - [SETQ POS (GETBOXPOSITION BITSWIDE BITSHIGH - [IPLUS 4 (fetch (REGION LEFT) - of WREGION) - (DIFFERENCE XOFFSET - (WINDOWPROP - W - (QUOTE DXOFFSET] - (IPLUS (WINDOWPROP W (QUOTE - BMDISPLAYBOTTOM)) - (DIFFERENCE YOFFSET - (WINDOWPROP - W - (QUOTE DYOFFSET)) - ) - 4 - (fetch (REGION BOTTOM) - of WREGION] - [WINDOWPROP W (QUOTE XOFFSET) - (SETQ XOFFSET - (IMIN (IDIFFERENCE BITMAPWIDTH BITSWIDE) - (IMAX [IPLUS - (WINDOWPROP W (QUOTE DXOFFSET)) - (DIFFERENCE - (fetch (POSITION XCOORD) - of POS) - (IPLUS 4 (fetch (REGION LEFT) - of WREGION] - 0] - [WINDOWPROP - W - (QUOTE YOFFSET) - (SETQ YOFFSET - (IMAX 0 (IMIN (DIFFERENCE BITMAPHEIGHT BITSHIGH) - (DIFFERENCE - (IPLUS (WINDOWPROP W (QUOTE DYOFFSET)) - (DIFFERENCE - (fetch (POSITION YCOORD) - of POS) - (IPLUS (fetch (REGION BOTTOM) - of WREGION) - 4))) - (WINDOWPROP W (QUOTE BMDISPLAYBOTTOM] - (replace (REGION LEFT) of EXTENT - with (IMINUS (QUOTIENT (TIMES XOFFSET (fetch (REGION WIDTH) - of EXTENT)) - BITMAPWIDTH))) - (replace (REGION BOTTOM) of EXTENT - with (IMINUS (QUOTIENT (TIMES YOFFSET (fetch (REGION HEIGHT) - of EXTENT)) - BITMAPHEIGHT))) - [COND - ([OR (ILESSP XOFFSET DXOFFSET) - (ILESSP YOFFSET DYOFFSET) - [IGREATERP (IPLUS XOFFSET BITSWIDE) - (IPLUS DXOFFSET (WINDOWPROP W (QUOTE - BMDISPLAYWIDTH] - (IGREATERP (IPLUS YOFFSET BITSHIGH) - (IPLUS DYOFFSET (WINDOWPROP W (QUOTE - BMDISPLAYHEIGHT] - (* ;;  -  -"Adjust the display region left lower corner so the selected region is near the center.") - [WINDOWPROP W (QUOTE DXOFFSET) - (SETQ DXOFFSET - (IMAX 0 (IMIN (DIFFERENCE (fetch - (BITMAP BITMAPWIDTH) - of BM) - (WINDOWPROP - W - (QUOTE - BMDISPLAYWIDTH))) - (DIFFERENCE - (IPLUS XOFFSET - (LRSH BITSWIDE 1)) - (LRSH (WINDOWPROP - W - (QUOTE BMDISPLAYWIDTH) - ) - 1] - (WINDOWPROP W (QUOTE DYOFFSET) - (SETQ DYOFFSET - (IMAX 0 (IMIN (DIFFERENCE (fetch - (BITMAP - BITMAPHEIGHT) - of BM) - (WINDOWPROP - W - (QUOTE - BMDISPLAYHEIGHT))) - (DIFFERENCE - (IPLUS YOFFSET - (LRSH BITSHIGH 1)) - (LRSH (WINDOWPROP - W - (QUOTE - BMDISPLAYHEIGHT)) - 1] - (* DSPFILL GRIDINTERIOR WHITESHADE  - (QUOTE REPLACE) W) - (UPDATE/BM/DISPLAY BM W) (* ;;  -  -"FS: More useless code: (COND ((WINDOWPROP W 'GRIDON) (GRID GRIDSPEC BITSWIDE BITSHIGH 'POINT W)))") - (RESETGRID.NEW BM GRIDSPEC BITSWIDE BITSHIGH 0 0 W T))) - NIL)) - ((LASTMOUSESTATE LEFT) - (UPDATE/BM/DISPLAY/SELECTED/REGION W) - (SETQ CURSORBM (BITMAPCREATE 16 16 (BITSPERPIXEL BM))) - (BITBLT BM NIL NIL CURSORBM) - [RESETFORM [CURSOR (CURSORCREATE CURSORBM (fetch (CURSOR CURSORHOTSPOTX) - of (CURSOR)) - (fetch (CURSOR CURSORHOTSPOTY) - of (CURSOR] - (until (MOUSESTATE (NOT LEFT] - (UPDATE/BM/DISPLAY/SELECTED/REGION W)) - (T (* ;;  -  -"the region being editted is inverted while the menu is active. Each command must make sure that it is recomplemented." -) - (UPDATE/BM/DISPLAY/SELECTED/REGION W) - (SELECTQ [MENU (COND - ((type? MENU EDITBMMENU) - EDITBMMENU) - (T (SETQ EDITBMMENU - (create MENU - ITEMS _ - [APPEND (COND - [(COLORDISPLAYP) - (QUOTE ((Color (QUOTE Color) - - "Choose color to set bits with"] - (T NIL)) - (QUOTE ((Paint (QUOTE Paint) - - "Calls the window PAINT command on the bitmap.") - (ShowAsTile (QUOTE - ShowAsTile) - - "tiles the upper part of the edit window with the bitmap.") - (Grid% On/Off (QUOTE - GridOnOff) - - "Grid On/Off Switch") - (GridSize_ (QUOTE - GridSize_) - - "Allows setting of the size of a bit in the edit area.") - (Reset (QUOTE Reset) - - "Sets the bitmap back to the state at the start of this edit session.") - (Clear (QUOTE Clear) - - "Sets the entire bitmap to 0") - (Cursor_ (QUOTE Cursor_) - - "Puts the bitmap into the cursor and exits the editor.") - (OK (QUOTE OK) - - "Leaves the edit session.") - (Abort (QUOTE Abort) - - "Restores the bitmap to its original values and leaves the editor."] - CENTERFLG _ T] - (OK (WINDOWPROP W (QUOTE FINISHEDFLG) - T)) - (Abort (WINDOWPROP W (QUOTE FINISHEDFLG) - (QUOTE KILL))) - [Reset (* ;;  -  -"allow the user to choose between everything or just visible part. This also give the user a chance to change their mind." -) - (COND - ((SELECTQ (\EDITBMHOWMUCH BM BITSWIDE BITSHIGH - "RESET how much?") - (VISIBLE [COND - [(SETQ ORIGBM (WINDOWPROP - W - (QUOTE ORIGINALBITMAP))) - (COND - ((REGIONP ORIGBM) - (BITBLT - (SCREENBITMAP) - (IPLUS XOFFSET - (fetch (REGION LEFT) - of ORIGBM)) - (IPLUS YOFFSET - (fetch (REGION BOTTOM) - of ORIGBM)) - BM XOFFSET YOFFSET BITSWIDE - BITSHIGH (QUOTE INPUT) - (QUOTE REPLACE))) - (T (BITBLT ORIGBM XOFFSET YOFFSET - BM XOFFSET YOFFSET - BITSWIDE BITSHIGH] - (T (BLTSHADE WHITESHADE BM XOFFSET - YOFFSET BITSWIDE BITSHIGH - (QUOTE REPLACE] - T) - (WHOLE [COND - [(SETQ ORIGBM (WINDOWPROP W - (QUOTE - - ORIGINALBITMAP))) - (COND - ((REGIONP ORIGBM) - (BITBLT (SCREENBITMAP) - (fetch (REGION LEFT) - of ORIGBM) - (fetch (REGION BOTTOM) - of ORIGBM) - BM)) - (T (BITBLT ORIGBM NIL NIL BM] - (T (BLTSHADE WHITESHADE BM NIL NIL NIL - NIL (QUOTE REPLACE] - T) - (PROGN (UPDATE/BM/DISPLAY/SELECTED/REGION W) - NIL)) - (\EDITBM/PUTUP/DISPLAY W BM GRIDSPEC GRIDINTERIOR BITSWIDE - BITSHIGH] - [Clear (* ;;  -  -"allow the user to choose between everything or just visible part. This also give the user a chance to change their mind." -) - (COND - ((SELECTQ (\EDITBMHOWMUCH BM BITSWIDE BITSHIGH - "CLEAR how much?") - (VISIBLE (BLTSHADE WHITESHADE BM XOFFSET YOFFSET - BITSWIDE BITSHIGH (QUOTE - REPLACE)) - T) - (WHOLE (\CLEARBM BM) - T) - (PROGN (UPDATE/BM/DISPLAY/SELECTED/REGION W) - NIL)) - (DSPFILL GRIDINTERIOR WHITESHADE (QUOTE REPLACE) - W) - (COND - ((WINDOWPROP W (QUOTE GRIDON)) - (GRID GRIDSPEC BITSWIDE BITSHIGH (QUOTE POINT) - W))) - (UPDATE/BM/DISPLAY BM W] - (GridOnOff (COND - ((NOT (WINDOWPROP W (QUOTE GRIDON))) - (* ; "Turn Grid On") - (WINDOWPROP W (QUOTE GRIDON) - T) - (GRID GRIDSPEC BITSWIDE BITSHIGH (QUOTE POINT) - W) (* ;;  -  -"FS: The update here was unnecessary. (UPDATE/BM/DISPLAY BM W)") - NIL) - (T (* ; "Turn off grid") - (WINDOWPROP W (QUOTE GRIDON) - NIL) - - (* DSPFILL (create REGION LEFT _ 0 BOTTOM _ 0 WIDTH _ (ADD1 (fetch (REGION WIDTH) of GRIDINTERIOR)) HEIGHT _  - (ADD1 (fetch (REGION HEIGHT) of GRIDINTERIOR))) WHITESHADE (QUOTE REPLACE) W) - - - (RESETGRID.NEW BM GRIDSPEC BITSWIDE BITSHIGH 0 0 W T) - (* ;;  -  -"FS: The update here was unnecessary. (UPDATE/BM/DISPLAY BM W)") - NIL))) - [GridSize_ (* ;  - "sets the grid square size and calls the reshapefn.") - (COND - ([SETQ NEWGRIDSIZE - (NUMBERP (MENU - (COND - ((TYPENAMEP GRIDSIZEMENU (QUOTE - MENU)) - GRIDSIZEMENU) - (T (SETQ GRIDSIZEMENU - (create MENU - ITEMS _ - (QUOTE (3 4 5 6 7 8 12 - 16 20 24 28 32) - ) - MENUROWS _ 4] - (WINDOWPROP W (QUOTE GRIDSQUARE) - NEWGRIDSIZE) - (EDITBMRESHAPEFN W] - (ShowAsTile (* ;  -  -"tiles the upper part of the window with the bitmap so the user can see what it would be as a shade.") - (UPDATE/SHADE/DISPLAY BM W)) - [Paint (* ;  -  -"call the window paint command on the contents of the bitmap.") - [SETQ PAINTW (CREATEW (create REGION - LEFT _ - (IQUOTIENT (DIFFERENCE - SCREENWIDTH - BITMAPWIDTH) - 2) - BOTTOM _ - (IQUOTIENT (DIFFERENCE - SCREENHEIGHT - BITMAPHEIGHT) - 2) - WIDTH _ (WIDTHIFWINDOW - BITMAPWIDTH) - HEIGHT _ (HEIGHTIFWINDOW - BITMAPHEIGHT NIL] - (OPENW PAINTW) - (BITBLT BM 0 0 PAINTW) - (PAINTW PAINTW) - (COND - ((MENU (create MENU - ITEMS _ (QUOTE ((YES T - "Will put the newly painted bits back in the bitmap being editted.") - (NO NIL - "Will discard the painted bits, not changing the bitmap being editted."))) - TITLE _ "Put change into bitmap?" - CENTERFLG _ T)) - (BITBLT PAINTW 0 0 BM) - (CLOSEW PAINTW) (* ; "set PAINTW so that space can be reclaimed") - (SETQ PAINTW) - (\EDITBM/PUTUP/DISPLAY W BM GRIDSPEC GRIDINTERIOR BITSWIDE - BITSHIGH] - (Cursor_ (* ;  -  -"Stuffs lower left part of image into the cursor and sets the hotspot.") - (READHOTSPOT BM GRIDSPEC GRIDINTERIOR W) - (WINDOWPROP W (QUOTE FINISHEDFLG) - T)) - (Color (WINDOWPROP W (QUOTE COLOR) - (OR (MENU (COLORMENU BITSPERPIXEL)) - COLOR))) - (UPDATE/BM/DISPLAY/SELECTED/REGION W]) - -(EDITBMSCROLLFN - [LAMBDA (W DX DY) (* ; "Edited 31-Aug-87 13:29 by FS") - (* ; "Do scrolling for the bitmap editor.") - (PROG (GRIDSPEC REG WHEIGHT WWIDTH (DXGRID 0) - (DYGRID 0) - EXTENT EXTENTWIDTH EXTENTHEIGHT GILEFT GIBOTTOM GIHEIGHT GWIDTH GHEIGHT - GRIDINTERIOR EBMXLIMIT EBMYLIMIT EBMXOFFSET EBMYOFFSET BM BITMAPWIDTH - BITMAPHEIGHT BITSWIDE BITSHIGH DXOFFSET DYOFFSET) - (SETQ GRIDSPEC (WINDOWPROP W (QUOTE GRIDSPEC))) - (SETQ REG (WINDOWPROP W (QUOTE REGION))) - (SETQ WHEIGHT (WINDOWPROP W (QUOTE HEIGHT))) - (SETQ WWIDTH (WINDOWPROP W (QUOTE WIDTH))) - (SETQ GRIDINTERIOR (WINDOWPROP W (QUOTE GRIDINTERIOR))) - (SETQ EBMXOFFSET (WINDOWPROP W (QUOTE XOFFSET))) - (SETQ EBMYOFFSET (WINDOWPROP W (QUOTE YOFFSET))) - (SETQ BM (WINDOWPROP W (QUOTE BM))) - (SETQ BITMAPWIDTH (fetch BITMAPWIDTH of BM)) - (SETQ BITMAPHEIGHT (fetch BITMAPHEIGHT of BM)) - (SETQ BITSWIDE (WINDOWPROP W (QUOTE BITSWIDE))) - (SETQ BITSHIGH (WINDOWPROP W (QUOTE BITSHIGH))) - (SETQ DXOFFSET (WINDOWPROP W (QUOTE DXOFFSET))) - (SETQ DYOFFSET (WINDOWPROP W (QUOTE DYOFFSET))) - (SETQ EBMXLIMIT (IPLUS EBMXOFFSET BITSWIDE)) - (SETQ EBMYLIMIT (IPLUS EBMYOFFSET BITSHIGH)) - (COND - (GRIDSPEC (SETQ GILEFT (fetch (REGION LEFT) of GRIDINTERIOR)) - (SETQ GIBOTTOM (fetch (REGION BOTTOM) of GRIDINTERIOR)) - (SETQ GIHEIGHT (fetch (REGION HEIGHT) of GRIDINTERIOR)) - (SETQ GWIDTH (fetch (REGION WIDTH) of GRIDSPEC)) - (SETQ GHEIGHT (fetch (REGION HEIGHT) of GRIDSPEC)) - (SETQ EXTENT (WINDOWPROP W (QUOTE EXTENT))) - (SETQ EXTENTWIDTH (fetch (REGION WIDTH) of EXTENT)) - (SETQ EXTENTHEIGHT (fetch (REGION HEIGHT) of EXTENT)) - (* ; "Make a horizontal adjustment") - (COND - ((FLOATP DX) (* ; "Horizontal thumbing") - [WINDOWPROP W (QUOTE XOFFSET) - (SETQ EBMXOFFSET (FIX (TIMES (IDIFFERENCE - BITMAPWIDTH - BITSWIDE) - DX] - (replace (REGION LEFT) of EXTENT - with (IMINUS (QUOTIENT (TIMES EBMXOFFSET EXTENTWIDTH) - BITMAPWIDTH))) - (* BLTSHADE WHITESHADE W GILEFT GIBOTTOM SCREENWIDTH  - SCREENHEIGHT (QUOTE REPLACE) GRIDINTERIOR) - (RESETGRID.NEW BM GRIDSPEC BITSWIDE BITSHIGH 0 0 W T)) - ((ILESSP DX 0) (* ; "moving to the left.") - (* ; "determine how many grid points to move.") - (SETQ DXGRID (IMIN (GRIDXCOORD (IMINUS DX) - GRIDSPEC) - (IDIFFERENCE BITMAPWIDTH EBMXLIMIT))) - (COND - ((NOT (IGREATERP DXGRID 0)) - (* ; "right edge is at the right margin") - (RETURN))) - (WINDOWPROP W (QUOTE XOFFSET) - (SETQ EBMXOFFSET (IPLUS EBMXOFFSET DXGRID))) - (* ; "update EXTENT bar") - (replace (REGION LEFT) of EXTENT - with (IMAX (IMINUS (QUOTIENT (TIMES EBMXOFFSET EXTENTWIDTH) - BITMAPWIDTH)) - (IMINUS EXTENTWIDTH))) - (* ; "move image to the left.") - (BITBLT W (IPLUS GILEFT (TIMES DXGRID GWIDTH)) - GIBOTTOM W GILEFT GIBOTTOM SCREENWIDTH SCREENHEIGHT - (QUOTE INPUT) - (QUOTE REPLACE) - NIL GRIDINTERIOR) (* ; "clear the newly exposed area.") - (BLTSHADE WHITESHADE W (IPLUS GILEFT (TIMES (IDIFFERENCE BITSWIDE - DXGRID) - GWIDTH)) - GIBOTTOM SCREENWIDTH SCREENHEIGHT (QUOTE REPLACE) - GRIDINTERIOR) - (RESETGRID.NEW BM GRIDSPEC DXGRID BITSHIGH (IDIFFERENCE BITSWIDE - DXGRID) - 0 W)) - ((ILESSP 0 DX) (* ;  - "determine how many grid point to the left to move.") - (SETQ DXGRID (IMIN EBMXOFFSET (GRIDXCOORD DX GRIDSPEC))) - (COND - ((NOT (IGREATERP DXGRID 0)) - (* ; "left edge is at the left margin") - (RETURN))) - (WINDOWPROP W (QUOTE XOFFSET) - (SETQ EBMXOFFSET (IDIFFERENCE EBMXOFFSET DXGRID))) - (* ; "update REGION bar") - (replace (REGION LEFT) of EXTENT - with (IMIN (IMINUS (IQUOTIENT (TIMES EBMXOFFSET EXTENTWIDTH) - BITMAPWIDTH)) - 0)) (* ; "move image to the right.") - (BITBLT W GILEFT GIBOTTOM W (IPLUS GILEFT (TIMES DXGRID GWIDTH)) - GIBOTTOM SCREENWIDTH SCREENHEIGHT (QUOTE INPUT) - (QUOTE REPLACE) - NIL GRIDINTERIOR) (* ; "clear the newly exposed area.") - (BLTSHADE WHITESHADE W GILEFT GIBOTTOM (TIMES DXGRID GWIDTH) - GIHEIGHT - (QUOTE REPLACE)) - (RESETGRID.NEW BM GRIDSPEC DXGRID BITSHIGH 0 0 W))) - (* ; "Make a vertical adjustment") - (COND - ((FLOATP DY) (* ; "Vertical Thumbing") - [WINDOWPROP W (QUOTE YOFFSET) - (SETQ EBMYOFFSET (FIX (TIMES (IDIFFERENCE - BITMAPHEIGHT - BITSHIGH) - (FDIFFERENCE 1.0 DY] - (* ; "set EXTENT bar") - (replace (REGION BOTTOM) of EXTENT - with (IMINUS (QUOTIENT (TIMES EBMYOFFSET EXTENTHEIGHT) - BITMAPHEIGHT))) - (* ; "Clear Window") - (* BLTSHADE WHITESHADE W GILEFT GIBOTTOM SCREENWIDTH  - SCREENHEIGHT (QUOTE REPLACE) GRIDINTERIOR) - (* ; "Repaint the image using grid function") - (RESETGRID.NEW BM GRIDSPEC BITSWIDE BITSHIGH 0 0 W T)) - ((ILESSP DY 0) (* ; "determine how many squares to move down.") - (SETQ DYGRID (IMIN (IDIFFERENCE (fetch (BITMAP BITMAPHEIGHT) - of BM) - EBMYLIMIT) - (GRIDYCOORD (IMIN GIHEIGHT (IMINUS DY)) - GRIDSPEC))) - (COND - ((NOT (IGREATERP DYGRID 0)) - (* ; "top edge is at the top margin") - (RETURN))) - (WINDOWPROP W (QUOTE YOFFSET) - (SETQ EBMYOFFSET (IPLUS EBMYOFFSET DYGRID))) - (replace (REGION BOTTOM) of EXTENT - with (IMAX (IMINUS (QUOTIENT (TIMES EBMYOFFSET EXTENTHEIGHT) - BITMAPHEIGHT)) - (IMINUS EXTENTHEIGHT))) - (BITBLT W GILEFT (IPLUS GIBOTTOM (ITIMES DYGRID GHEIGHT)) - W GILEFT GIBOTTOM SCREENWIDTH SCREENHEIGHT (QUOTE INPUT) - (QUOTE REPLACE) - NIL GRIDINTERIOR) (* BLTSHADE WHITESHADE W GILEFT  - (IPLUS GIBOTTOM (ITIMES (IDIFFERENCE BITSHIGH DYGRID)  - GHEIGHT)) SCREENWIDTH SCREENHEIGHT  - (QUOTE REPLACE) GRIDINTERIOR) - (RESETGRID.NEW BM GRIDSPEC BITSWIDE DYGRID 0 (IDIFFERENCE BITSHIGH - DYGRID) - W T)) - ((ILESSP 0 DY) (* ;  - "moving up; determine how may grid squares to move.") - (SETQ DYGRID (IMIN EBMYOFFSET (GRIDYCOORD (IMIN GIHEIGHT DY) - GRIDSPEC))) - (COND - ((NOT (IGREATERP DYGRID 0)) - (* ; "bottom edge is at the bottom margin") - (RETURN))) - (WINDOWPROP W (QUOTE YOFFSET) - (SETQ EBMYOFFSET (IDIFFERENCE EBMYOFFSET DYGRID))) - (replace (REGION BOTTOM) of EXTENT - with (IMIN (IMINUS (QUOTIENT (TIMES EBMYOFFSET EXTENTHEIGHT) - BITMAPHEIGHT)) - 0)) - (BITBLT W GILEFT GIBOTTOM W GILEFT (IPLUS GIBOTTOM (ITIMES DYGRID - GHEIGHT)) - SCREENWIDTH SCREENHEIGHT (QUOTE INPUT) - (QUOTE REPLACE) - NIL GRIDINTERIOR) (* BLTSHADE WHITESHADE W GILEFT GIBOTTOM  - (fetch (REGION WIDTH) of GRIDINTERIOR)  - (ITIMES DYGRID GHEIGHT) (QUOTE REPLACE)) - (RESETGRID.NEW BM GRIDSPEC BITSWIDE DYGRID 0 0 W T))) - (* ;;  -  -"This call to GRID is unnecessary as the grid dots get filled in earlier.") - (* ;;  -  -"(COND ((WINDOWPROP W 'GRIDON) (GRID GRIDSPEC BITSWIDE BITSHIGH 'POINT W)))") - [COND - ([OR (ILESSP EBMXOFFSET DXOFFSET) - (ILESSP EBMYOFFSET DYOFFSET) - [IGREATERP (IPLUS EBMXOFFSET BITSWIDE) - (IPLUS DXOFFSET (WINDOWPROP W (QUOTE - BMDISPLAYWIDTH] - (IGREATERP (IPLUS EBMYOFFSET BITSHIGH) - (IPLUS DYOFFSET (WINDOWPROP W (QUOTE - BMDISPLAYHEIGHT] - (* ;  -  -"Adjust the display region left lower corner so the selected region is near the center.") - [WINDOWPROP W (QUOTE DXOFFSET) - (SETQ DXOFFSET - (IMAX 0 (IMIN (IDIFFERENCE (fetch (BITMAP - BITMAPWIDTH) - of BM) - (WINDOWPROP - W - (QUOTE - BMDISPLAYWIDTH))) - (IDIFFERENCE - (IPLUS EBMXOFFSET (LRSH BITSWIDE - 1)) - (LRSH (WINDOWPROP W (QUOTE - - BMDISPLAYWIDTH)) - 1] - (WINDOWPROP W (QUOTE DYOFFSET) - (SETQ DYOFFSET - (IMAX 0 (IMIN (IDIFFERENCE (fetch (BITMAP - BITMAPHEIGHT) - of BM) - (WINDOWPROP - W - (QUOTE - BMDISPLAYHEIGHT))) - (IDIFFERENCE - (IPLUS EBMYOFFSET (LRSH BITSHIGH - 1)) - (LRSH (WINDOWPROP W (QUOTE - - BMDISPLAYHEIGHT)) - 1] - (UPDATE/BM/DISPLAY BM W]) - -(\EDITBM/PUTUP/DISPLAY - [LAMBDA (WINDOW BM GRIDSPEC GRIDINTERIOR BITSWIDE BITSHIGH) - (* ; "Edited 31-Aug-87 13:05 by FS") - (* initializes the display for the bitmap editor.) - (* DSPFILL GRIDINTERIOR WHITESHADE  - (QUOTE REPLACE) WINDOW) - (* COND ((WINDOWPROP WINDOW  - (QUOTE GRIDON)) (GRID GRIDSPEC BITSWIDE BITSHIGH  - (QUOTE POINT) WINDOW))) - (RESETGRID.NEW BM GRIDSPEC BITSWIDE BITSHIGH 0 0 WINDOW T) - (UPDATE/BM/DISPLAY BM WINDOW]) - -(EDITBMRESHAPEFN - [LAMBDA (BMEDITWINDOW OLDIMAGE OLDREGION OLDSCREENREGION ZEROBMFLG) - (* ; "Edited 31-Aug-87 12:41 by FS") - (* ;;  -  -"allows the bitmap edit window to be reshaped to enlarge the editting area. This is also called to set up the image during initialization." -) - (PROG (BMWINTERIORWIDTH BMWINTERIORHEIGHT EDITAREABITWIDTH EDITAREABITHEIGHT GRIDSQUARE - GRIDINTERIOR BITMAPWIDTH BMDISPLAYWIDTH BMDISPLAYBOTTOM BMDISPLAYHEIGHT - BITMAPHEIGHT (BM (WINDOWPROP BMEDITWINDOW (QUOTE BM))) - MINCOMMANDAREAWIDTH EXTENTWIDTH EXTENTHEIGHT) - (SETQ MINCOMMANDAREAWIDTH 30) - (SETQ BITMAPWIDTH (fetch (BITMAP BITMAPWIDTH) of BM)) - (SETQ BITMAPHEIGHT (fetch (BITMAP BITMAPHEIGHT) of BM)) - (SETQ BMWINTERIORWIDTH (WINDOWPROP BMEDITWINDOW (QUOTE WIDTH))) - (* ;;  -  -"leave room at the top for the full size display area. But not more than half of the window.") - (SETQ BMWINTERIORHEIGHT (IMAX (IDIFFERENCE (WINDOWPROP BMEDITWINDOW (QUOTE - HEIGHT)) - (IPLUS BITMAPHEIGHT GRIDTHICKNESS)) - (IQUOTIENT (WINDOWPROP BMEDITWINDOW (QUOTE HEIGHT) - ) - 2))) - (* ;;  -  -"if the user hasn't set it, determine the grid size as the largest size which fits the interior but not larger than NORMALGRIDSQUARE nor smaller than MINGRIDSQUARE. If GRIDSQUARE was specified, reset it to NIL so that if reshaped it will be recalculated." -) - (SETQ GRIDSQUARE (OR (WINDOWPROP BMEDITWINDOW (QUOTE GRIDSQUARE) - NIL) - (IMAX (IMIN (IQUOTIENT BMWINTERIORWIDTH BITMAPWIDTH) - (IQUOTIENT BMWINTERIORHEIGHT BITMAPHEIGHT) - NORMALGRIDSQUARE) - MINGRIDSQUARE))) - (* ;  - "calculate how many bits will be displayed at once.") - (SETQ EDITAREABITWIDTH (IMIN (IQUOTIENT BMWINTERIORWIDTH GRIDSQUARE) - BITMAPWIDTH)) - (WINDOWPROP BMEDITWINDOW (QUOTE BITSWIDE) - EDITAREABITWIDTH) - (SETQ EDITAREABITHEIGHT (IMIN (IQUOTIENT BMWINTERIORHEIGHT GRIDSQUARE) - BITMAPHEIGHT)) - (* ;  -  -"calculate offset of display and command regions at the top of the window.") - (WINDOWPROP BMEDITWINDOW (QUOTE BITSHIGH) - EDITAREABITHEIGHT) - (SETQ BMDISPLAYBOTTOM (IPLUS (ITIMES GRIDSQUARE EDITAREABITHEIGHT) - GRIDTHICKNESS)) - (SETQ BMDISPLAYWIDTH (IMIN BITMAPWIDTH (IDIFFERENCE BMWINTERIORWIDTH - MINCOMMANDAREAWIDTH))) - (* ;;  -  -"put the offset --- the lower left coordinate --- in the same place unless the new shape allows more to be shown past the upper right corner." -) - (WINDOWPROP BMEDITWINDOW (QUOTE XOFFSET) - (IMIN (WINDOWPROP BMEDITWINDOW (QUOTE XOFFSET)) - (IDIFFERENCE BITMAPWIDTH EDITAREABITWIDTH))) - (WINDOWPROP BMEDITWINDOW (QUOTE YOFFSET) - (IMIN (WINDOWPROP BMEDITWINDOW (QUOTE YOFFSET)) - (IDIFFERENCE BITMAPHEIGHT EDITAREABITHEIGHT))) - (* ; "Center edit square") - (SETQ GRIDINTERIOR (create REGION - LEFT _ (IQUOTIENT (IDIFFERENCE BMWINTERIORWIDTH - (ITIMES - EDITAREABITWIDTH - GRIDSQUARE)) - 2) - BOTTOM _ (IQUOTIENT (IDIFFERENCE BMDISPLAYBOTTOM - (ITIMES - EDITAREABITHEIGHT - GRIDSQUARE)) - 2) - WIDTH _ (ITIMES EDITAREABITWIDTH GRIDSQUARE) - HEIGHT _ (ITIMES EDITAREABITHEIGHT GRIDSQUARE))) - (WINDOWPROP BMEDITWINDOW (QUOTE GRIDINTERIOR) - GRIDINTERIOR) - (WINDOWPROP BMEDITWINDOW (QUOTE BMDISPLAYBOTTOM) - BMDISPLAYBOTTOM) - (WINDOWPROP BMEDITWINDOW (QUOTE BMDISPLAYWIDTH) - BMDISPLAYWIDTH) - (WINDOWPROP BMEDITWINDOW (QUOTE BMDISPLAYHEIGHT) - (SETQ BMDISPLAYHEIGHT (IDIFFERENCE (WINDOWPROP BMEDITWINDOW - (QUOTE HEIGHT)) - BMDISPLAYBOTTOM))) - (WINDOWPROP BMEDITWINDOW (QUOTE DISPLAYREGION) - (create REGION - LEFT _ 0 - BOTTOM _ BMDISPLAYBOTTOM - WIDTH _ BMDISPLAYWIDTH - HEIGHT _ BMDISPLAYHEIGHT)) - (WINDOWPROP BMEDITWINDOW (QUOTE GRIDSPEC) - (create REGION - LEFT _ (fetch (REGION LEFT) of GRIDINTERIOR) - BOTTOM _ (fetch (REGION BOTTOM) of GRIDINTERIOR) - WIDTH _ GRIDSQUARE - HEIGHT _ GRIDSQUARE)) - (SETQ EXTENTHEIGHT (QUOTIENT (TIMES BITMAPHEIGHT (WINDOWPROP BMEDITWINDOW - (QUOTE HEIGHT))) - EDITAREABITHEIGHT)) - [SETQ EXTENTWIDTH (IDIFFERENCE (QUOTIENT (TIMES BITMAPWIDTH BMWINTERIORWIDTH) - EDITAREABITWIDTH) - (WINDOWPROP BMEDITWINDOW (QUOTE BORDER] - (WINDOWPROP BMEDITWINDOW (QUOTE EXTENT) - (CREATEREGION (MINUS (QUOTIENT (TIMES (WINDOWPROP BMEDITWINDOW - (QUOTE - XOFFSET)) - EXTENTWIDTH) - BITMAPWIDTH)) - (MINUS (QUOTIENT (TIMES (WINDOWPROP BMEDITWINDOW - (QUOTE - YOFFSET)) - EXTENTHEIGHT) - BITMAPHEIGHT)) - EXTENTWIDTH EXTENTHEIGHT)) - (EDITBMREPAINTFN BMEDITWINDOW NIL ZEROBMFLG]) - -(EDITBMREPAINTFN.NEW - [LAMBDA (WIN REGION ZEROBM) (* ; "Edited 27-Aug-87 22:02 by FS") - (* ;;  -  -"Stub in case I missed a call to this guy. Take out later.") - (EDITBMREPAINTFN WIN REGION ZEROBM]) - -(EDITBMREPAINTFN - [LAMBDA (WIN REGION ZEROBM) (* N.H.Briggs " 4-Sep-87 15:07") - (* ;;  -  -"redisplays a bitmap editting window If ZEROBM is non-NIL, it doesn't bother to display the bits.") - (PROG [(GRIDSPEC (WINDOWPROP WIN (QUOTE GRIDSPEC))) - (EDITAREABITWIDTH (WINDOWPROP WIN (QUOTE BITSWIDE))) - (EDITAREABITHEIGHT (WINDOWPROP WIN (QUOTE BITSHIGH))) - (BM (WINDOWPROP WIN (QUOTE BM] - (CLEARW WIN) (* ;  -  -"gray the area above the edit grid that is not bitmap display area.") - (BLTSHADE NOTINUSEGRAY WIN (PLUS (WINDOWPROP WIN (QUOTE BMDISPLAYWIDTH)) - GRIDTHICKNESS) - (WINDOWPROP WIN (QUOTE BMDISPLAYBOTTOM))) - (* ;; "put in the display of the full sized bitmap.") - (UPDATE/BM/DISPLAY BM WIN) (* ;;  -  -"FS: Now that RESETGRID displays the grid, don't need the call to GRID.") - (* ;;  -  -"(COND ((WINDOWPROP WIN 'GRIDON) (GRID GRIDSPEC EDITAREABITWIDTH EDITAREABITHEIGHT 'POINT WIN)))") - (if ZEROBM - then (if (WINDOWPROP WIN (QUOTE GRIDON)) - then (GRID GRIDSPEC EDITAREABITWIDTH EDITAREABITHEIGHT (QUOTE POINT) - WIN)) - else (RESETGRID.NEW BM GRIDSPEC EDITAREABITWIDTH EDITAREABITHEIGHT 0 0 WIN]) - -(RESETGRID.NEW - [LAMBDA (BM GRIDSPEC WIDTH HEIGHT ORIGX ORIGY WINDOW DOCLEARFLG) - (* N.H.Briggs " 4-Sep-87 15:08") - (* ;;  -  -"Copies the contents of a bitmap into the edit display grid of window. ORIGX & Y are used to offest into both bitmap and destination window." -) - (LET (XOFFSET YOFFSET MAXX MAXY SHADE XSCALE YSCALE TEMPBM) - (SETQ XSCALE (fetch (REGION WIDTH) of GRIDSPEC)) - (SETQ YSCALE (fetch (REGION HEIGHT) of GRIDSPEC)) - (if (NULL ORIGX) - then (SETQ ORIGX 0)) - (if (NULL ORIGY) - then (SETQ ORIGY 0)) - (SETQ XOFFSET (WINDOWPROP WINDOW (QUOTE XOFFSET))) - (SETQ YOFFSET (WINDOWPROP WINDOW (QUOTE YOFFSET))) - (SETQ MAXX (IPLUS ORIGX WIDTH -1)) - (SETQ MAXY (IPLUS ORIGY HEIGHT -1)) (* ;; "Build & cache a temporary bitmap.") - (SETQ TEMPBM (WINDOWPROP WINDOW (QUOTE TEMPBM))) - (if (NOT TEMPBM) - then (SETQ TEMPBM (BITMAPCREATE (BITMAPWIDTH WINDOW) - (BITMAPHEIGHT BM))) - (WINDOWPROP WINDOW (QUOTE TEMPBM) - TEMPBM)) (* ;;  -  -"Use SCALEBM. Bitmap destination must be empty (white).") - (if DOCLEARFLG - then (BLTSHADE WHITESHADE WINDOW (LEFTOFGRIDCOORD ORIGX GRIDSPEC) - (BOTTOMOFGRIDCOORD ORIGY GRIDSPEC) - (TIMES WIDTH XSCALE) - (TIMES HEIGHT YSCALE) - (QUOTE REPLACE))) - (SCALEBM BM (PLUS ORIGX XOFFSET) - (PLUS ORIGY YOFFSET) - WINDOW - (LEFTOFGRIDCOORD ORIGX GRIDSPEC) - (BOTTOMOFGRIDCOORD ORIGY GRIDSPEC) - WIDTH HEIGHT XSCALE YSCALE TEMPBM) (* ;; "Shade the pixels correctly.") - (BLTSHADE DARKBITSHADE WINDOW (LEFTOFGRIDCOORD ORIGX GRIDSPEC) - (BOTTOMOFGRIDCOORD ORIGY GRIDSPEC) - (TIMES WIDTH XSCALE) - (TIMES HEIGHT YSCALE) - (QUOTE ERASE)) (* ;; "Add grid") - (if (WINDOWPROP WINDOW (QUOTE GRIDON)) - then (if (OR (NEQ ORIGX (CAR GRIDSPEC)) - (NEQ ORIGY (CADR GRIDSPEC))) - then (SETQ GRIDSPEC (COPYALL GRIDSPEC)) - (replace (REGION LEFT) of GRIDSPEC with (LEFTOFGRIDCOORD - ORIGX GRIDSPEC)) - (replace (REGION BOTTOM) of GRIDSPEC with (BOTTOMOFGRIDCOORD - ORIGY GRIDSPEC))) - (GRID GRIDSPEC WIDTH HEIGHT (QUOTE POINT) - WINDOW]) -) -(DEFINEQ - -(SCALEBM - [LAMBDA (SRCEBM SRCEX SRCEY DESTBM DESTX DESTY SRCEWIDTH SRCEHEIGHT XSCALE YSCALE TEMPBM) - (* N.H.Briggs " 4-Sep-87 15:48") - (* ;;  -  -"Magnify a bitmap as per EDITBM. Use smearing algorithm.") - (LET ((DESTWIDTH (BITMAPWIDTH DESTBM)) - (DESTHEIGHT (if (WINDOWP DESTBM) - then (WINDOWPROP DESTBM (QUOTE HEIGHT)) - else (BITMAPHEIGHT DESTBM))) - XSTEPS YSTEPS POWER) (* ;; "Check parameters, apply defaults") - (if (NUMBERP SRCEWIDTH) - else (SETQ SRCEWIDTH (BITMAPWIDTH SRCEBM))) - (if (NUMBERP SRCEHEIGHT) - else (SETQ SRCEHEIGHT (BITMAPHEIGHT SRCEBM))) - (* ;;  - "Save effort by considering min of srce and dest.") - (SETQ DESTWIDTH (MIN DESTWIDTH (TIMES SRCEWIDTH XSCALE))) - (SETQ DESTHEIGHT (MIN DESTHEIGHT (TIMES SRCEHEIGHT YSCALE))) - (SETQ SRCEWIDTH (MIN SRCEWIDTH (IQUOTIENT DESTWIDTH XSCALE))) - (SETQ SRCEHEIGHT (MIN SRCEHEIGHT (IQUOTIENT DESTHEIGHT YSCALE))) - (if TEMPBM - then (BLTSHADE WHITESHADE TEMPBM) - else (SETQ TEMPBM (BITMAPCREATE DESTWIDTH SRCEHEIGHT))) - (* ;;  -  -"CALL EXPANDBM twice, once for each direction, because we have a spare bitmap which makes it run faster than a single call to EXPANDBM would (I think)." -) (* ;; "") - (* ;; "Do X Direction Smearing.") - (* ;; "============") - (EXPANDBM SRCEBM SRCEX SRCEY SRCEWIDTH SRCEHEIGHT TEMPBM 0 0 DESTWIDTH SRCEHEIGHT XSCALE 1 - XSCALE 1) (* ;; "") - (* ;; "Do Y Direction Smearing.") - (* ;; "============") - (EXPANDBM TEMPBM 0 0 DESTWIDTH SRCEHEIGHT DESTBM DESTX DESTY DESTWIDTH DESTHEIGHT 1 YSCALE - 1 YSCALE) (* ;; "") - (* ;;  - "Return the temporary bitmap for recycling purposes.") - TEMPBM]) - -(BLTPATTERN - [LAMBDA (SRCE SX SY SW SH DEST DX DY DW DH OPER TEMPBM) (* N.H.Briggs " 4-Sep-87 15:10") - (* ;;  -  -"Fills region of Destination with tiles of Source region, using operation. If Temporary bitmap is provided, use it for optimal performance." -) - (PROG (W H RX RW) - (if (NULL SW) - then (SETQ SW (BITMAPWIDTH SRCE))) - (if (NULL SH) - then (SETQ SH (BITMAPHEIGHT SRCE))) (* ;; "") - (* ;; "Fill columns ") - (* ;; "") - [if TEMPBM - then (* ;;  -  -"Temporary bitmap is only useful if larger than source.") - (if [AND (GREATERP (BITMAPWIDTH TEMPBM) - (MIN SW (BITMAPWIDTH SRCE))) - (GREATERP (BITMAPHEIGHT TEMPBM) - (MIN SH (BITMAPHEIGHT SRCE] - then (BLTPATTERN.REPLACEDISPLAY SRCE SX SY SW SH TEMPBM 0 0 - (BITMAPWIDTH TEMPBM) - (BITMAPHEIGHT TEMPBM)) - (* ;;  -  -"Allow code to fall through using TEMPBM as source area.") - (SETQ SRCE TEMPBM) - (SETQ SX 0) - (SETQ SY 0) - (SETQ SW (ITIMES SW (IQUOTIENT (BITMAPWIDTH TEMPBM) - SW))) - (SETQ SH (ITIMES SH (IQUOTIENT (BITMAPHEIGHT TEMPBM) - SH] - (if (AND (EQ OPER (QUOTE REPLACE)) - (OR (BITMAPP DEST) - (WINDOWP DEST))) - then (BLTPATTERN.REPLACEDISPLAY SRCE SX SY SW SH DEST DX DY DW DH) - (RETURN)) (* ;;  -  -"Even if operation is REPLACE, don't know if destination is inexpensively readable (e.g. Interpress stream. SO, this is the general case here." -) - (while (GREATERP DH 0) - do (SETQ H (MIN SH DH)) (* ;; "") - (SETQ RW DW) - (SETQ RX DX) (* ;; "") - (* ;; "Fill rows") - (* ;; "") - (while (GREATERP RW 0) - do (SETQ W (MIN SW RW)) - (BITBLT SRCE SX SY DEST RX DY W H NIL OPER) - (SETQ RW (DIFFERENCE RW W)) - (SETQ RX (PLUS RX W))) (* ;; "") - (SETQ DH (DIFFERENCE DH H)) - (SETQ DY (PLUS DY H]) - -(BLTPATTERN.REPLACEDISPLAY - [LAMBDA (SRCE SX SY SW SH DEST DX DY DW DH) (* N.H.Briggs " 4-Sep-87 15:11") - (* ;;  -  -"This routine only replaces the destination with the source, and assumes the destination itself can be easily read from and blt'ed to." -) (* ;;  -  -"Put initial bitmap into destination. Source should not be within destination area, otherwise it will be overwritten." -) - (LET (RX RY RW RH W H) (* ; "R's are remaining area.") - (SETQ W (MIN SW DW)) - (SETQ H (MIN SH DH)) - (BLTSHADE WHITESHADE DEST DX DY W H (QUOTE REPLACE)) - (BITBLT SRCE SX SY DEST DX DY W H NIL (QUOTE REPLACE)) - (SETQ RX (PLUS DX W)) - (SETQ RW (DIFFERENCE DW W)) (* ;; "Now power up until width is full.") - (while (GREATERP RW 0) - do (SETQ W (MIN SW RW)) - (BITBLT DEST DX DY DEST RX DY W H NIL (QUOTE REPLACE)) - (SETQ RW (DIFFERENCE RW W)) (* ; "Reduce remaining width") - (SETQ RX (PLUS RX W)) (* ; "Set next starting position") - (SETQ SW (PLUS SW SW)) (* ; "Can now use 2x area.")) - (* ;; "") - (SETQ RY (PLUS DY H)) - (SETQ RH (DIFFERENCE DH H)) - (SETQ SH H) - (SETQ W DW) (* ;; "Now power up until height is full.") - (while (GREATERP RH 0) - do (SETQ H (MIN SH RH)) - (BITBLT DEST DX DY DEST DX RY W H NIL (QUOTE REPLACE)) - (SETQ RH (DIFFERENCE RH H)) (* ; "Reduce remaining width") - (SETQ RY (PLUS RY H)) (* ; "Set next starting position") - (SETQ SH (PLUS SH SH)) (* ; "Can now use 2x area.")]) -) -(DEFINEQ - -(EXPANDBITMAP - [LAMBDA (BITMAP WIDTHFACTOR HEIGHTFACTOR) (* N.H.Briggs "16-Nov-87 17:10") - (* ;;  -  -"Returns a new bitmap which is WidthFactor and HeightFactor bigger.") - (* ;;  -  -"FS: This slow piece of code has been replaced with a much faster, general one, EXPAND.l ") - (LET (WIDTH HEIGHT BITSPERPIXEL NEWWIDTH NEWHEIGHT NEWX NEWY NEWBITMAP) - (OR WIDTHFACTOR (SETQ WIDTHFACTOR 1)) - (OR HEIGHTFACTOR (SETQ HEIGHTFACTOR 1)) - (SETQ HEIGHT (fetch (BITMAP BITMAPHEIGHT) of BITMAP)) - (SETQ WIDTH (fetch (BITMAP BITMAPWIDTH) of BITMAP)) - (SETQ BITSPERPIXEL (fetch (BITMAP BITMAPBITSPERPIXEL) of BITMAP)) - (SETQ NEWWIDTH (ITIMES WIDTHFACTOR WIDTH)) - (SETQ NEWHEIGHT (ITIMES HEIGHTFACTOR HEIGHT)) - (SETQ NEWBITMAP (BITMAPCREATE NEWWIDTH NEWHEIGHT BITSPERPIXEL)) - (* ;; "OLD code commented out here.") - - (* LET NIL (* Expand in x-direction. *) (SETQ NEWX 0) (for X from 0 to (SUB1 WIDTH) do (for I from 1 to WIDTHFACTOR - do (BITBLT BITMAP X 0 NEWBITMAP NEWX 0 1 HEIGHT (QUOTE INPUT) (QUOTE REPLACE)) (add NEWX 1)))  - (* Expand in y-direction. *) (SETQ NEWY (SUB1 NEWHEIGHT)) (for Y from (SUB1 HEIGHT) to 0 by -1 do  - (for I from 1 to HEIGHTFACTOR do (BITBLT NEWBITMAP 0 Y NEWBITMAP 0 NEWY NEWWIDTH 1 (QUOTE INPUT)  - (QUOTE REPLACE)) (add NEWY -1)))) - - - (EXPANDBM BITMAP 0 0 WIDTH HEIGHT NEWBITMAP 0 0 NEWWIDTH NEWHEIGHT WIDTHFACTOR - HEIGHTFACTOR WIDTHFACTOR HEIGHTFACTOR) - NEWBITMAP]) - -(EXPANDBM - [LAMBDA (SRCEBM SRCEX SRCEY SRCEW SRCEH DESTBM DESTX DESTY DESTW DESTH XSCALE YSCALE XSPACE YSPACE) - (* N.H.Briggs " 4-Sep-87 15:18") - (* ;;  -  -"Expands a region of SrceBM by X&Y scale into a region of DestBM, spaced Xspace by YSpace apart (space must be larger than scale). SrceBM cannot be the same bitmap as DestBM. The entire region inside DestBM is cleared." -) - (PROG (XSTEPS YSTEPS POWER) (* ;; "Check parameters, apply defaults") - (if (NUMBERP SRCEX) - else (SETQ SRCEX 0)) - (if (NUMBERP SRCEY) - else (SETQ SRCEY 0)) - (if (NUMBERP SRCEW) - else (SETQ SRCEW (BITMAPWIDTH SRCEBM))) - (if (NUMBERP SRCEH) - else (SETQ SRCEH (BITMAPHEIGHT SRCEBM))) - (if (NUMBERP DESTX) - else (SETQ SRCEX 0)) - (if (NUMBERP DESTY) - else (SETQ SRCEY 0)) (* ;;  - "Save effort by considering min of srce and dest.") - [SETQ DESTW (IMIN DESTW (TIMES SRCEW (IMAX XSCALE XSPACE] - [SETQ DESTH (IMIN DESTH (TIMES SRCEH (IMAX YSCALE YSPACE] - [SETQ SRCEW (IMIN SRCEW (PLUS 1 (IQUOTIENT DESTW (IMAX XSCALE XSPACE] - [SETQ SRCEH (IMIN SRCEH (PLUS 1 (IQUOTIENT DESTH (IMAX YSCALE YSPACE] - (BLTSHADE WHITESHADE DESTBM DESTX DESTY DESTW DESTH) - (if (AND (EQP XSPACE 1) - (EQP YSPACE 1)) - then (BITBLT SRCEBM SRCEX SRCEY DESTBM DESTX DESTY SRCEW SRCEH) - (RETURN DESTBM)) (* ;; "") - (* ;; "Do X Direction Smearing.") - (* ;; "============") - (* ;;  -  -"Spread out bitmap by spacefactor. Start from far side to avoid overwrite (if srce = dest)") - (if (EQP XSPACE 1) - then (* ;;  -  -"Don't fill destination, instead use srce in YSmear loop.") - (* ;;  -  -"(BITBLT SRCEBM SRCEX SRCEY DESTBM DESTX DESTY SRCEW SRCEH)") - - else (* ;;  -  -"Spread out bitmap by spacefactor. Start from far side to avoid overwrite (if srce = dest)") - (for I from (SUB1 SRCEW) to 0 by -1 - do (BITBLT SRCEBM (PLUS SRCEX I) - SRCEY DESTBM (PLUS DESTX (TIMES I XSPACE)) - DESTY 1 SRCEH))) (* ;;  -  -"Now smear by scalefactor. Each step smears out a power of two. LSH is in ucode.") - [if (EQP XSCALE 1) - else (SETQ POWER 1) - (while (ILEQ POWER (LSH XSCALE -1)) - do (* ;;  -  -"In the X direction, only need to blt SRCEH bits high, and must shorten W to remain within DESTW") - (BITBLT DESTBM DESTX DESTY DESTBM (PLUS DESTX POWER) - DESTY - (DIFFERENCE DESTW POWER) - SRCEH NIL (QUOTE PAINT)) - (SETQ POWER (PLUS POWER POWER))) - (* ;; "Clean up for non power of two.") - (if (ZEROP (DIFFERENCE XSCALE POWER)) - else (BITBLT DESTBM DESTX DESTY DESTBM (PLUS DESTX (DIFFERENCE XSCALE - POWER)) - DESTY - (DIFFERENCE DESTW (DIFFERENCE XSCALE POWER)) - SRCEH NIL (QUOTE PAINT] - (* ;; "") - (* ;; "Do Y Direction Smearing.") - (* ;; "============") - (* ;;  -  -"Spread out bitmap by spacefactor. Start from far side to avoid overwrite (if srce = dest)") - [if (EQP YSPACE 1) - else (if (EQP XSPACE 1) - then (* ;;  -  -"Didn't need to paint in destination, so can avoid second loop by blting from SRCBM instead of DESTBM.") - (for J from (SUB1 SRCEH) to 0 by -1 - do (BITBLT SRCEBM SRCEX (PLUS SRCEY J) - DESTBM DESTX (PLUS DESTY (TIMES J YSPACE)) - DESTW 1)) - else (for J from (SUB1 SRCEH) to 0 by -1 - do (BITBLT DESTBM DESTX (PLUS DESTY J) - DESTBM DESTX (PLUS DESTY (TIMES J YSPACE)) - DESTW 1)) (* ;;  -  -"Since we reused DESTBM, parts of the dest have bits in them but shouldn't. So, clear them.") - (for J from 0 to SRCEH by YSPACE - do (BLTSHADE WHITESHADE DESTBM DESTX (PLUS DESTY J 1) - DESTW - (SUB1 YSPACE] - (* ;;  -  -"Now smear correctly. Each step smears out a power of two. LSH is in ucode.") - [if (EQP YSCALE 1) - else (SETQ POWER 1) - (while (ILEQ POWER (LSH YSCALE -1)) - do (BITBLT DESTBM DESTX DESTY DESTBM DESTX (PLUS DESTY POWER) - DESTW - (DIFFERENCE DESTH POWER) - NIL - (QUOTE PAINT)) - (SETQ POWER (PLUS POWER POWER))) - (* ;; "Clean up for non power of two.") - (if (ZEROP (DIFFERENCE YSCALE POWER)) - else (BITBLT DESTBM DESTX DESTY DESTBM DESTX (PLUS DESTY - (DIFFERENCE YSCALE - POWER)) - DESTW DESTH NIL (QUOTE PAINT] - (* ;; "") - (* ;;  - "Return the temporary bitmap for recycling purposes.") - DESTBM]) -) -(PUTPROPS FASTEDITBM COPYRIGHT ("Xerox Corporation" 1987)) -(DECLARE: DONTCOPY - (FILEMAP (NIL (1041 4849 (GRID 1051 . 4847)) (4850 52348 (EDITBM 4860 . 13712) (EDITBMCLOSEFN 13714 . -14345) (TILEAREA 14347 . 14779) (EDITBMBUTTONFN 14781 . 29731) (EDITBMSCROLLFN 29733 . 40923) ( -\EDITBM/PUTUP/DISPLAY 40925 . 41674) (EDITBMRESHAPEFN 41676 . 47657) (EDITBMREPAINTFN.NEW 47659 . -47983) (EDITBMREPAINTFN 47985 . 49598) (RESETGRID.NEW 49600 . 52346)) (52349 59854 (SCALEBM 52359 . -54995) (BLTPATTERN 54997 . 57709) (BLTPATTERN.REPLACEDISPLAY 57711 . 59852)) (59855 68063 ( -EXPANDBITMAP 59865 . 61694) (EXPANDBM 61696 . 68061))))) -STOP diff --git a/obsolete/lispusers/FONTDECLS b/obsolete/lispusers/FONTDECLS deleted file mode 100644 index eeaf3c9e..00000000 --- a/obsolete/lispusers/FONTDECLS +++ /dev/null @@ -1,207 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP" BASE 10) -(FILECREATED "27-Sep-87 16:13:36" {DSK}FONTDECLS.;7 10151 - - changes to%: (VARS FONTDECLSCOMS) - - previous date%: "25-Sep-87 22:24:36" {DSK}FONTDECLS.;6) - - -(PRETTYCOMPRINT FONTDECLSCOMS) - -(RPAQQ FONTDECLSCOMS ((PROP MAKEFILE-ENVIRONMENT FONTDECLS) - (RECORDS FONTDESCRIPTOR CHARSETINFO) - (CONSTANTS WORDSPERCELL \MAXCHARSET \MAXTHINCHAR) - (MACROS FOLDHI UNFOLD \CREATECSINFOELEMENT \CREATEFONTCHARSETVECTOR - \FGETIMAGEWIDTH \FGETOFFSET \FGETWIDTH \FSETIMAGEWIDTH \FSETOFFSET - \FSETWIDTH \GETCHARSETINFO \SETCHARSETINFO))) - -(PUTPROPS FONTDECLS MAKEFILE-ENVIRONMENT (:READTABLE "INTERLISP" :PACKAGE "INTERLISP" :BASE 10)) -(DECLARE%: EVAL@COMPILE - -(DATATYPE FONTDESCRIPTOR ((FONTDEVICE POINTER) - (\SFObsolete1 POINTER) (* WAS CHARACTERBITMAP) - (* Bitmap containing the character - images, indexed by \SFOffsets) - (FONTFAMILY POINTER) - (FONTSIZE POINTER) - (FONTFACE POINTER) - (\SFObsolete2 POINTER) (* Was \SFWidths) - - (* The advance-width of each character, an array indexed by charcode. - Usually the same as the imagewidth, but can differ for accents, kerns kerns. - This is what should be used for stringwidth calculations.) - - (\SFObsolete3 POINTER) (* WAS \SFOffsets) - - (* Offset of each character into the image bitmap; - X value of left edge) - - (\SFObsolete4 POINTER) (* Was \SFWidthsY) - (\SFObsolete5 WORD) (* WAS FIRSTCHAR) - - (* Charcode of the first character that exists in the font) - - (\SFObsolete6 WORD) (* WAS LASTCHAR) - - (* Charcode of the last character that exists in the font) - - (\SFAscent WORD) - (\SFDescent WORD) - (\SFHeight WORD) - (ROTATION WORD) - (FBBOX SIGNEDWORD) - (FBBOY SIGNEDWORD) - (FBBDX SIGNEDWORD) - (FBBDY SIGNEDWORD) - (\SFFACECODE BITS 8) - (\SFLKerns POINTER) - (\SFRWidths POINTER) - (FONTDEVICESPEC POINTER) - - (* Holds the spec by which the font is known to the printing device, if - coercion has been done) - - (OTHERDEVICEFONTPROPS POINTER) (* For individual devices to hang - special information) - (FONTSCALE POINTER) - (FONTAVGCHARWIDTH WORD) - - (* Set in FONTCREATE, used to fix up the linelength when DSPFONT is called) - - (FONTIMAGEWIDTHS POINTER) - - (* This is the image width, as opposed to the advanced width; - initial hack for accents, kerning. Fields is referenced by FONTCREATE.) - - (FONTCHARSETVECTOR POINTER) - - (* A 256-pointer block, with one pointer per "character set" --each group of - 256 character codes. Each pointer is either NIL if there's no info for that - charset, or is a CHARSETINFO, containing widths, char bitmap, etc for the - characters in that charset.) - - (FONTEXTRAFIELD2 POINTER)) - FONTCHARSETVECTOR _ (\CREATEFONTCHARSETVECTOR)) - -(DATATYPE CHARSETINFO (WIDTHS - - (* The advance-width of each character, an array indexed by charcode. - Usually the same as the imagewidth, but can differ for accents, kerns kerns. - This is what should be used for stringwidth calculations.) - - OFFSETS - - (* Offset of each character into the image bitmap; - X value of left edge) - - IMAGEWIDTHS - - (* imagewidths is not automagically allocated since it is not always needed) - - CHARSETBITMAP (* Bitmap containing the character - images, indexed by OFFSETS) - YWIDTHS - (CHARSETASCENT WORD) (* Max ascent for all characters in - this CHARSET) - (CHARSETDESCENT WORD) (* Max descent for all characters in - this CHARSET) - ) - WIDTHS _ (\CREATECSINFOELEMENT) - OFFSETS _ (\CREATECSINFOELEMENT)) -) -(/DECLAREDATATYPE 'FONTDESCRIPTOR - '(POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER WORD WORD WORD WORD WORD - WORD SIGNEDWORD SIGNEDWORD SIGNEDWORD SIGNEDWORD (BITS 8) - POINTER POINTER POINTER POINTER POINTER WORD POINTER POINTER POINTER) - '((FONTDESCRIPTOR 0 POINTER) - (FONTDESCRIPTOR 2 POINTER) - (FONTDESCRIPTOR 4 POINTER) - (FONTDESCRIPTOR 6 POINTER) - (FONTDESCRIPTOR 8 POINTER) - (FONTDESCRIPTOR 10 POINTER) - (FONTDESCRIPTOR 12 POINTER) - (FONTDESCRIPTOR 14 POINTER) - (FONTDESCRIPTOR 16 (BITS . 15)) - (FONTDESCRIPTOR 17 (BITS . 15)) - (FONTDESCRIPTOR 18 (BITS . 15)) - (FONTDESCRIPTOR 19 (BITS . 15)) - (FONTDESCRIPTOR 20 (BITS . 15)) - (FONTDESCRIPTOR 21 (BITS . 15)) - (FONTDESCRIPTOR 22 (SIGNEDBITS . 15)) - (FONTDESCRIPTOR 23 (SIGNEDBITS . 15)) - (FONTDESCRIPTOR 24 (SIGNEDBITS . 15)) - (FONTDESCRIPTOR 25 (SIGNEDBITS . 15)) - (FONTDESCRIPTOR 14 (BITS . 7)) - (FONTDESCRIPTOR 26 POINTER) - (FONTDESCRIPTOR 28 POINTER) - (FONTDESCRIPTOR 30 POINTER) - (FONTDESCRIPTOR 32 POINTER) - (FONTDESCRIPTOR 34 POINTER) - (FONTDESCRIPTOR 36 (BITS . 15)) - (FONTDESCRIPTOR 38 POINTER) - (FONTDESCRIPTOR 40 POINTER) - (FONTDESCRIPTOR 42 POINTER)) - '44) -(/DECLAREDATATYPE 'CHARSETINFO '(POINTER POINTER POINTER POINTER POINTER WORD WORD) - '((CHARSETINFO 0 POINTER) - (CHARSETINFO 2 POINTER) - (CHARSETINFO 4 POINTER) - (CHARSETINFO 6 POINTER) - (CHARSETINFO 8 POINTER) - (CHARSETINFO 10 (BITS . 15)) - (CHARSETINFO 11 (BITS . 15))) - '12) -(DECLARE%: EVAL@COMPILE - -(RPAQQ WORDSPERCELL 2) - -(RPAQQ \MAXCHARSET 255) - -(RPAQQ \MAXTHINCHAR 255) - -(CONSTANTS WORDSPERCELL \MAXCHARSET \MAXTHINCHAR) -) -(DECLARE%: EVAL@COMPILE -[PUTPROPS FOLDHI MACRO (X (PROG [(FORM (CAR X)) - (DIVISOR (CAR (CONSTANTEXPRESSIONP (CADR X] - (OR (AND DIVISOR (POWEROFTWOP DIVISOR)) - (\ILLEGAL.ARG (CADR X))) - (RETURN (LIST 'LRSH (LIST 'IPLUS FORM (SUB1 DIVISOR)) - (SUB1 (INTEGERLENGTH DIVISOR] -[PUTPROPS UNFOLD MACRO (X (PROG [(FORM (CAR X)) - (DIVISOR (CAR (CONSTANTEXPRESSIONP (CADR X] - (OR (AND DIVISOR (POWEROFTWOP DIVISOR)) - (\ILLEGAL.ARG (CADR X))) - (RETURN (LIST 'LLSH FORM (SUB1 (INTEGERLENGTH DIVISOR] -[PUTPROPS \CREATECSINFOELEMENT MACRO (NIL (\ALLOCBLOCK (FOLDHI (IPLUS \MAXTHINCHAR 3) - WORDSPERCELL] -(PUTPROPS \CREATEFONTCHARSETVECTOR MACRO (NIL (* Allocates a block for the character set records) - (\ALLOCBLOCK (ADD1 \MAXCHARSET) - T))) -(PUTPROPS \FGETIMAGEWIDTH MACRO ((IMAGEWIDTHSBLOCK CHAR8CODE) - (\GETBASE IMAGEWIDTHSBLOCK CHAR8CODE))) -(PUTPROPS \FGETOFFSET DMACRO ((OFFSETSBLOCK CHAR8CODE) - (\GETBASE OFFSETSBLOCK CHAR8CODE))) -(PUTPROPS \FGETWIDTH DMACRO ((WIDTHSBLOCK CHAR8CODE) - (\GETBASE WIDTHSBLOCK CHAR8CODE))) -(PUTPROPS \FSETIMAGEWIDTH DMACRO ((WIDTHSBLOCK INDEX WIDTH) - (\PUTBASE WIDTHSBLOCK INDEX WIDTH))) -(PUTPROPS \FSETOFFSET DMACRO ((OFFSETSBLOCK CHAR8CODE OFFSET) - (\PUTBASE OFFSETSBLOCK CHAR8CODE OFFSET))) -(PUTPROPS \FSETWIDTH DMACRO ((WIDTHSBLOCK INDEX WIDTH) - (\PUTBASE WIDTHSBLOCK INDEX WIDTH))) -[PUTPROPS \GETCHARSETINFO MACRO ((CHARSET FONTDESC NOSLUG?) - (* * fetches the charsetinfo for charset CHARSET in fontdescriptor - FONTDESC. If NIL, then creates the required charset.) - (* * NOSLUG? means don't create an empty (slug) - csinfo if the charset is not found, just return NIL) - (OR (\GETBASEPTR (ffetch FONTCHARSETVECTOR of FONTDESC) - (UNFOLD CHARSET 2)) - (\CREATECHARSET CHARSET FONTDESC NOSLUG?] -(PUTPROPS \SETCHARSETINFO MACRO ((CHARSETVECTOR CHARSET CSINFO) - (\RPLPTR CHARSETVECTOR (UNFOLD CHARSET 2) - CSINFO))) -) -(DECLARE%: DONTCOPY - (FILEMAP (NIL))) -STOP diff --git a/obsolete/lispusers/HGRAPH b/obsolete/lispusers/HGRAPH deleted file mode 100644 index 31e16306..00000000 --- a/obsolete/lispusers/HGRAPH +++ /dev/null @@ -1,281 +0,0 @@ -(FILECREATED "24-Apr-87 19:08:21" {ERIS}KOTO>HGRAPH.;2 12562 - - changes to: (FNS HARDCOPYWHOLEGRAPH) - - previous date: "27-Jan-87 14:35:21" {PHYLUM}KOTO>HGRAPH.;1) - - -(* Copyright (c) 1987 by Xerox Corporation. All rights reserved.) - -(PRETTYCOMPRINT HGRAPHCOMS) - -(RPAQQ HGRAPHCOMS ((FNS CEILING HARDCOPYDISPLAYGRAPH HARDCOPYWHOLEGRAPH) - (P (MOVD (QUOTE HARDCOPYGRAPH) - (QUOTE OLDHARDCOPYGRAPH)) - (MOVD (QUOTE HARDCOPYWHOLEGRAPH) - (QUOTE HARDCOPYGRAPH))) - (* This is in order to fix the problem with borders on Interpress printers. I\t - seems that you cannot bitblt anything thinner than 36 pixel onto an - Interpress stream, why? Anyway, this fixes the problem by setting the border - width to 36))) -(DEFINEQ - -(CEILING - [LAMBDA (NUMBER) - (COND - ((EQP (FIX NUMBER) - NUMBER) - NUMBER) - (T (ADD1 (FIX NUMBER]) - -(HARDCOPYDISPLAYGRAPH - [LAMBDA (GRAPH STREAM CLIP/REG TRANS) (* bbb "27-Jan-87 11:52") - - (* Displays GRAPH with coordinates system translated to TRANS on STREAM. POS=NIL is interpreted as 0\,0. - Draws links first then labels so that lattices don't have lines through the labels.) - - (* This function is to be used together with  - HARDCOPYWHOLEGRAPH\, it assumes that the scaling of  - the graph is done already, for efficiency.) - (PROG (SCALE (LINEWIDTH 1)) - [OR (type? POSITION TRANS) - (SETQ TRANS (CONSTANT (create POSITION - XCOORD _ 0 - YCOORD _ 0] - (SETQ STREAM (GETSTREAM STREAM (QUOTE OUTPUT))) - (COND - ((DISPLAYSTREAMP STREAM) - - (* This is because PRIN3 on displaystreams can sometimes cause CR's to be output. GRAPHER/CENTERPRINTINAREA doesn't - have the rightmargin kludge that the CENTERPRINTINAREA in MENU has.) - - - (DSPRIGHTMARGIN 65000 STREAM)) - (T (SETQ SCALE (DSPSCALE NIL STREAM)) - [SETQ TRANS (create POSITION - XCOORD _ (FIXR (FTIMES SCALE (fetch XCOORD - of TRANS))) - YCOORD _ (FIXR (FTIMES SCALE (fetch YCOORD - of TRANS] - (SETQ LINEWIDTH SCALE))) - (for N in (fetch (GRAPH GRAPHNODES) of GRAPH) - do (DISPLAYNODELINKS N TRANS STREAM GRAPH T LINEWIDTH)) - (for N in (fetch (GRAPH GRAPHNODES) of GRAPH) do (PRINTDISPLAYNODE N TRANS - STREAM - CLIP/REG]) - -(HARDCOPYWHOLEGRAPH - [LAMBDA (GraphOrWindow File ImageType Translation NoAlignmentDots DontCloseStream) - (* N.H.Briggs "24-Apr-87 19:07") - - (* * Hardcopy \a whole graph from \a window using as many pages as necessary) - - (* fix: moved SCALE/GRAPH outside the for loops for  - effiency.) - (* fix: moved SCALE.REGION inline, in order to avoid  - the LOADFNS in the COMS list.) - (LET ((Stream (OR (AND File (OPENP File (QUOTE OUTPUT)) - File) - (OPENIMAGESTREAM File ImageType))) - (Graph (COND - ((WINDOWP GraphOrWindow) - (WINDOWPROP GraphOrWindow (QUOTE GRAPH))) - (T GraphOrWindow))) - GraphUnitsPerPageUnit PageUnitsPerGraphUnit GraphRegionInGraphUnits GraphRegionInPageUnits - PageRegion PageWidthInGraphUnits PageHeightInGraphUnits GraphWidthInGraphUnits - GraphHeightInGraphUnits CornerXOffsetInGraphUnits CornerYOffsetInGraphUnits PageScale - LeftCenteringOffsetInGraphUnits BottomCenteringOffsetInGraphUnits PageNumberFont - NumberOfXPages NumberOfYPages XPageNumberPositionInPageUnits YPageNumberPositionInPageUnits - LeftXAlignmentInPageUnits RightXAlignmentInPageUnits LowerYAlignmentInPageUnits - UpperYAlignmentInPageUnits PageUnitsPerInch) - (SETQ PageScale (DSPSCALE NIL Stream)) - (SETQ GraphUnitsPerPageUnit (FQUOTIENT 1.0 PageScale)) - (SETQ PageUnitsPerGraphUnit PageScale) (* 72 screen points per inch.) - (SETQ PageUnitsPerInch (TIMES PageScale 72)) - (SETQ GraphRegionInGraphUnits (GRAPHREGION Graph)) - (SETQ CornerXOffsetInGraphUnits (MINUS (fetch (REGION LEFT) of - GraphRegionInGraphUnits))) - (SETQ CornerYOffsetInGraphUnits (MINUS (fetch (REGION BOTTOM) of - GraphRegionInGraphUnits))) - (* fix: moved SCALE.REGION inline, in order to avoid  - the LOADFNS in the COMS list.) - [SETQ GraphRegionInPageUnits (CREATEREGION (FIXR (QUOTIENT (fetch (REGION LEFT) - of - GraphRegionInGraphUnits) - GraphUnitsPerPageUnit)) - (FIXR (QUOTIENT (fetch (REGION BOTTOM) - of - GraphRegionInGraphUnits) - GraphUnitsPerPageUnit)) - (FIXR (QUOTIENT (fetch (REGION WIDTH) - of - GraphRegionInGraphUnits) - GraphUnitsPerPageUnit)) - (FIXR (QUOTIENT (fetch (REGION HEIGHT) - of - GraphRegionInGraphUnits) - GraphUnitsPerPageUnit] - (SELECTQ (IMAGESTREAMTYPE Stream) - [INTERPRESS - - (* * Make the clipping region be the whole page on Interpress streams) - - - (DSPCLIPPINGREGION (CREATEREGION 0 0 (FIXR (TIMES - PageUnitsPerInch 8.5) - ) - (FIXR (TIMES - PageUnitsPerInch - 11.0))) - Stream) - - (* * Get rid of 1 inch margins except .5 inch at right and top) - - - (SETQ PageRegion (CREATEREGION 0 0 (FIXR (TIMES - PageUnitsPerInch 8.0) - ) - (FIXR (TIMES PageUnitsPerInch - 10.5] - [PRESS - - (* * Make the clipping region be the whole page on Press streams) - - - (DSPCLIPPINGREGION (CREATEREGION 0 0 (FIXR (TIMES PageUnitsPerInch - 8.5)) - (FIXR (TIMES PageUnitsPerInch - 11.0))) - Stream) - - (* * Get rid of 1 inch margins except 1 inch at right and top) - - - (SETQ PageRegion (CREATEREGION 0 0 (FIXR (TIMES PageUnitsPerInch - 7.5)) - (FIXR (TIMES PageUnitsPerInch 10.0] - (SETQ PageRegion (DSPCLIPPINGREGION NIL Stream))) - (SETQ PageWidthInGraphUnits (TIMES (fetch (REGION WIDTH) of PageRegion) - GraphUnitsPerPageUnit)) - (SETQ PageHeightInGraphUnits (TIMES (fetch (REGION HEIGHT) of PageRegion) - GraphUnitsPerPageUnit)) - (SETQ GraphWidthInGraphUnits (fetch (REGION WIDTH) of GraphRegionInGraphUnits)) - (SETQ GraphHeightInGraphUnits (fetch (REGION HEIGHT) of GraphRegionInGraphUnits)) - (SETQ BottomCenteringOffsetInGraphUnits (QUOTIENT (DIFFERENCE PageHeightInGraphUnits - (REMAINDER - GraphHeightInGraphUnits - PageHeightInGraphUnits)) - 1.75)) - (SETQ LeftCenteringOffsetInGraphUnits (QUOTIENT (DIFFERENCE PageWidthInGraphUnits - (REMAINDER - GraphWidthInGraphUnits - PageWidthInGraphUnits)) - 1.75)) - (SETQ NumberOfYPages (CEILING (QUOTIENT GraphHeightInGraphUnits PageHeightInGraphUnits) - )) - (SETQ NumberOfXPages (CEILING (QUOTIENT GraphWidthInGraphUnits PageWidthInGraphUnits))) - (SETQ PageNumberFont (FONTCREATE (QUOTE MODERN) - 6)) - - (* * The page numbers are \a quarter of in after the edge of the printing edge and are in the upper right hand  - corner of the page. The pages are printed row-wise and no page numbers are printed on the last page. - The page numbers are positioned .25 inch to the right of the right edge of the page region and .35 inch up from the - top of the page region. The alignment dots are .25 inch to the right of the right edge of the page region and .25  - inch up from the page region.) - - - (SETQ XPageNumberPositionInPageUnits (PLUS (fetch (REGION RIGHT) of PageRegion) - (TIMES PageUnitsPerInch .25))) - (SETQ YPageNumberPositionInPageUnits (PLUS (fetch (REGION TOP) of PageRegion) - (TIMES PageUnitsPerInch .35))) - (SETQ LeftXAlignmentInPageUnits (TIMES PageUnitsPerInch .25)) - (SETQ RightXAlignmentInPageUnits (PLUS (fetch (REGION RIGHT) of PageRegion) - (TIMES PageUnitsPerInch .25))) - (SETQ LowerYAlignmentInPageUnits (TIMES PageUnitsPerInch .25)) - (SETQ UpperYAlignmentInPageUnits (PLUS (fetch (REGION TOP) of PageRegion) - (TIMES PageUnitsPerInch .25))) - (* Latest fix: moved SCALE/GRAPH outside the for loops - for effiency.) - (SETQ Graph (SCALE/GRAPH Graph Stream PageScale)) - [for BottomOfPageInGraphUnits from 0 to GraphHeightInGraphUnits by - PageHeightInGraphUnits - as YPageNumber from 1 - do (for LeftOfPageInGraphUnits from 0 to GraphWidthInGraphUnits by - PageWidthInGraphUnits - as XPageNumber from 1 - do [HARDCOPYDISPLAYGRAPH Graph Stream (DSPCLIPPINGREGION NIL Stream) - (create POSITION - XCOORD _ (FIXR (PLUS - CornerXOffsetInGraphUnits - LeftCenteringOffsetInGraphUnits - (MINUS - LeftOfPageInGraphUnits))) - YCOORD _ (FIXR (PLUS - BottomCenteringOffsetInGraphUnits - CornerYOffsetInGraphUnits - (MINUS - BottomOfPageInGraphUnits] - - (* * Print the alignment points) - - - [COND - ((NOT NoAlignmentDots) - - (* * The lower left page should not have \a dot in the lower left corner. Similarly for other corner pages.) - - - (COND - ((NOT (AND (EQ XPageNumber 1) - (EQ YPageNumber 1))) - (MOVETO LeftXAlignmentInPageUnits LowerYAlignmentInPageUnits - Stream) - (printout Stream "."))) - (COND - ((NOT (AND (EQ XPageNumber NumberOfXPages) - (EQ YPageNumber 1))) - (MOVETO RightXAlignmentInPageUnits LowerYAlignmentInPageUnits - Stream) - (printout Stream "."))) - (COND - ((NOT (AND (EQ YPageNumber NumberOfYPages) - (EQ XPageNumber 1))) - (MOVETO LeftXAlignmentInPageUnits UpperYAlignmentInPageUnits - Stream) - (printout Stream "."))) - (COND - ((NOT (AND (EQ XPageNumber NumberOfXPages) - (EQ YPageNumber NumberOfYPages))) - (MOVETO RightXAlignmentInPageUnits UpperYAlignmentInPageUnits - Stream) - (printout Stream "."] - (COND - ((NOT (AND (EQ XPageNumber NumberOfXPages) - (EQ YPageNumber NumberOfYPages))) - (* Not on the very last page) - (DSPFONT PageNumberFont Stream) - (MOVETO XPageNumberPositionInPageUnits YPageNumberPositionInPageUnits - Stream) - (printout Stream XPageNumber "," YPageNumber) - (* Print the page number) - (DSPNEWPAGE Stream] - (COND - ((NOT DontCloseStream) - (CLOSEF Stream]) -) -(MOVD (QUOTE HARDCOPYGRAPH) - (QUOTE OLDHARDCOPYGRAPH)) -(MOVD (QUOTE HARDCOPYWHOLEGRAPH) - (QUOTE HARDCOPYGRAPH)) - - - -(* This is in order to fix the problem with borders on Interpress printers. I\t seems that you - cannot bitblt anything thinner than 36 pixel onto an Interpress stream, why? Anyway, this -fixes the problem by setting the border width to 36) - -(PUTPROPS HGRAPH COPYRIGHT ("Xerox Corporation" 1987)) -(DECLARE: DONTCOPY - (FILEMAP (NIL (779 12115 (CEILING 789 . 928) (HARDCOPYDISPLAYGRAPH 930 . 2653) (HARDCOPYWHOLEGRAPH -2655 . 12113))))) -STOP diff --git a/obsolete/lispusers/HGRAPH.LCOM b/obsolete/lispusers/HGRAPH.LCOM deleted file mode 100644 index e4620f4ea7397e83b395f316946f0e38c27b83b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4271 zcmb_gTW=#t6}A%?X#tON8CJW|FgjSP#U3TzzPj7qRdC1d#69DjVF3XWkMKIP?21SK2BggF`~(C@MC>z{Q&rtg9318aDM_6=w>p=q z>aUVowJK(@W*QB%1WCv()t%l_P61KOE4jQVB_WmE^^baP*J*?Ap~`nl_51I?*L4TI zUBB-vQ{s5w^aso3wVGjE3addD8Ndo>#I-*rATPUu%Ple%76K*Et1A zT{4dMsa__NNkY37;5x|*t|;UM2}4Py6RELKC1uIz^_O%F#9Us`^OA_6nKi5a{(BXx zZg14hT7CIGX^>G|5{QzTm0-8i^7fqp1b!Y;tJOLr%0{hJB=+`ZnN&=cMH+g2=R2-{ zJYXT^F(hs2Udv)GY)%EtP&D~jnv(X=X7bq(&6^hC-60jeA8D`qVXvH4gm z7B3vUEPMfp*iQ>HNFTnOiKTQfAK2+c)v6>?=}~MYOsZmRv*@@t8ziWL4IJ=-N{Z7qX!wIT4u;1%Q3J@k6`{8sf_PN8^*?4jKSH-wI z^I>sHp835`Bip$#H1;XM;@p{PzeXn?C%k|D*Rx z<#v2FK6S5X6x?#+26Zq$HT}uo3h^IDf|V~t+`o6Q2%;>2U9+lvUJ_NIbj?~TH`a~XnpFiwjy&)x*dVL0W;XZ?HyN%=HX8Ou z18I;%NC}VuA$`$^i%k->L6%_4ZtXkO`4Z1D5Z*VSw zb%eXTaoTfmh6foxH%Nq)B>hd-Yx^f@nEq2T7Q11ze|vEuJuyCc%~)Xvzt$Y4ab$HMw5?kp76O2um1rO)ddQTs6pC4ELZ!Ukp*Z%et=J29< zvpU6znF@~0IsA*mEiyy!m(}b!OXSn$9deV*k(*<@+f<8Js`(a`hIEoe-Mzt!4%IlW z5`TI0@0U>}&YEvmrzrO-I~8d(?@qE>9EmfN?FFk$7QRToB-`ZH!Qt%uS4jS&C6Yfl zfATE;Ba;98^sh;tH3jG2J0SVbKExcdACN4$^%=4b$sD!%Dp^6R6=qc=E7WQwvXT$T z3R=yP4qS?p(|aCrW6q930B z;Z1UvWXde)AuD#cJ4k^f&wokuHtO6SlEukNI(Z9~3Zc?nB3$R`7lf+fYKyPbd6z&G z!`mbkIwXaVHx{EFGWii0VnuE?SI(NtL(K22Sr|V1*B|GxxHHZCSu;Dte9xLXGQ0EU z@3_ef{o3a=3QVR1@VV4Zx!Y!J{j z{Ib{WRZ?w$u8NU@oEs_N7bCP1N)gtQ)W}fA z$k;0)^erLIVX#cX_!%MQaub3Qv6o|pq8=KGT4bmSV6Ee3;25p3Z6gvy95-$zM`lvk z4so0r|?VIw$)0V-mf)k|Selt5XC)KiKi z;oiYMR1uj`+-lbA2vD+s_?7yiQ#s2Q2kjER)UhVX#U$v83Q2ta=mO4h)bKp85y2@P zRUCzkq=G8SA%WYGaTLso6WA0XgNh1nD8`X<0*Dz+O@OR%3S_K>C}af8O#&^Wf|Nyu zNExaGI%QxksDT8=qN6~>1(=4Ir3@7}GI|v-ZA`4u*e;TFdV(6j-+wr*qpW5d4<1}% zL5e-KqTM_3Bt^^%gq?9oS*w0eu=<6o=xoaWFs?mre#5 zupR|4aGWE2ZgyG$ochPG+wwd=fE_p3=?0K!d8a`K;VUY*9)eD)=+W)cb00fhbc{vWM?4`_(=VS6daol{64Dh~JpP8cu7jsTPLISPUSERS>MEDLEY>HOSTUP.;1 9510 - - changes to%: (VARS HOSTUPCOMS) - - previous date%: "19-Oct-89 16:52:50" {ICE}LISPUSERS>MEDLEY>HOSTUP.;1) - - -(* " -Copyright (c) 1988, 1989 by Johannes A. G. M. Koomen. All rights reserved. -") - -(PRETTYCOMPRINT HOSTUPCOMS) - -(RPAQQ HOSTUPCOMS - ((FNS HOSTUP?) - (INITVARS (HOSTUP.TIMEOUT 15000) - (HOSTUP.RETRYCNT 5)) - (GLOBALVARS HOSTUP.TIMEOUT HOSTUP.RETRYCNT) - (DECLARE%: DONTEVAL@LOAD DONTCOPY EVAL@COMPILE - (FILES SYSEDIT [FROM VALUEOF (for D in LISPUSERSDIRECTORIES until - (INFILEP (PACKFILENAME 'NAME 'LLNSDECLS 'BODY - (SETQ $$VAL - (PACKFILENAME - 'HOST - (FILENAMEFIELD D 'HOST) - 'DIRECTORY - (CONCAT "LISP>" MAKESYSNAME - ">SOURCES"] - LLNSDECLS - (LOADCOMP) - LLNS)))) -(DEFINEQ - -(HOSTUP? - [LAMBDA (name) (* ; "Edited 19-Oct-89 16:51 by koomen") - - (* ;; "Adapted from FILECACHE function \FCACHE.HOSTUP?") - - (* ;; "Uses the globalvar HOSTUP.TIMEOUT (default: 15,000 msecs) to limit total wait time, and the globalvar HOSTUP.RETRYCNT (default: 5 times) to limit the number of retries") - (* smL " 3-Sep-86 16:04") - -(* ;;; "Try to determine if the host if able to respond") - - (LET* [(DEV (\GETDEVICEFROMNAME name T NIL)) - (retryCount (MAX 1 (FIX HOSTUP.RETRYCNT))) - (initialInterval (FIX (QUOTIENT (MAX 1000 HOSTUP.TIMEOUT) - (SUB1 (LSH 1 retryCount] - (SELECTQ (if DEV - then - - (* ;; "use real DEV to determine the DEV type") - - (SELECTQ (fetch OPENFILE of DEV) - ((\LEAF.OPENFILE \FTP.OPENFILE) - 'LEAF) - (\NSFILING.OPENFILE - 'NSFILING) - (fetch DEVICENAME of DEV)) - else - - (* ;; - "the FDEV doesn't exist, and we can't create one for it, so it must be down") - - 'NOFDEV) - (LEAF - (* ;; "We think its a LEAF server, so try PUP.ECHOUSER") - - (RESETLST - (PROG ((i 1) - (interval initialInterval) - (PORT (BESTPUPADDRESS name PROMPTWINDOW)) - (SOC (OPENPUPSOCKET)) - echo OPUP IPUP ECHOPUPLENGTH) - (RESETSAVE NIL (LIST 'CLOSEPUPSOCKET SOC)) - (OR PORT (RETURN NIL)) - TryAgain - (if (IGREATERP i retryCount) - then (RETURN NIL)) - (SETQ OPUP (ALLOCATE.PUP)) - (SETUPPUP OPUP PORT \PUPSOCKET.ECHO \PT.ECHOME NIL SOC T) - (PUTPUPWORD OPUP 0 1) - (add (fetch PUPLENGTH of OPUP) - BYTESPERWORD) - (SETQ ECHOPUPLENGTH (fetch PUPLENGTH of OPUP)) - (SENDPUP SOC OPUP) - [COND - ((SETQ IPUP (GETPUP SOC interval)) - (COND - ((PROG1 (AND (EQ (fetch PUPTYPE of IPUP) - \PT.IAMECHO) - (EQ (fetch PUPIDHI of IPUP) - (fetch PUPIDHI of OPUP)) - (EQ (fetch PUPIDLO of IPUP) - (fetch PUPIDLO of OPUP)) - (EQ (fetch PUPLENGTH of IPUP) - ECHOPUPLENGTH) - (IEQP (GETPUPWORD IPUP 0) - 1)) - (RELEASE.PUP IPUP)) - (RETURN T] - (SETQ i (ADD1 i)) - (SETQ interval (ITIMES interval 2)) - (GO TryAgain)))) - (NSFILING (* ; - "We think its an NSFILING server, so try NS.ECHOUSER") - (RESETLST - (PROG ((i 1) - (interval initialInterval) - (ECHOADDRESS (OR (COERCE-TO-NSADDRESS name \NS.WKS.Echo) - (\ILLEGAL.ARG name))) - NSOC OXIP ECHOXIPLENGTH IXIP) - (OR ECHOADDRESS (RETURN NIL)) - [RESETSAVE NIL (LIST 'CLOSENSOCKET (SETQ NSOC (OPENNSOCKET] - (if (IGREATERP i retryCount) - then (RETURN NIL)) - (SETQ OXIP (\FILLINXIP \XIPT.ECHO NSOC ECHOADDRESS)) - (XIPAPPEND.WORD OXIP \XECHO.OP.REQUEST) - (XIPAPPEND.WORD OXIP 1) - (SETQ ECHOXIPLENGTH (fetch XIPLENGTH of OXIP)) - TryAgain - (if (IGREATERP i retryCount) - then (RETURN NIL)) - (SENDXIP NSOC OXIP) - [COND - ((SETQ IXIP (GETXIP NSOC interval)) - (COND - ((PROG1 (AND (EQ (fetch XIPTYPE of IXIP) - \XIPT.ECHO) - (EQ (fetch XIPLENGTH of IXIP) - ECHOXIPLENGTH) - (EQ (\GETBASE (fetch XIPCONTENTS - of IXIP) - 0) - \XECHO.OP.REPLY)) - (RELEASE.XIP IXIP)) - (RETURN T] - (SETQ i (ADD1 i)) - (SETQ interval (LLSH interval 1)) - (GO TryAgain)))) - (FLOPPY - (* ;; "the FLOPPY disk") - - (* ;; - "Should be (FLOPPY.CAN.READP) but this triggers a bug in the Floppy handler") - - T) - (TCP - (* ;; "A TCP device. Punt on them") - - T) - (NOFDEV - (* ;; "we can't create an FDEV for the device, so it can't be up") - - NIL) - T]) -) - -(RPAQ? HOSTUP.TIMEOUT 15000) - -(RPAQ? HOSTUP.RETRYCNT 5) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS HOSTUP.TIMEOUT HOSTUP.RETRYCNT) -) -(DECLARE%: DONTEVAL@LOAD DONTCOPY EVAL@COMPILE - -(FILESLOAD SYSEDIT [FROM VALUEOF (for D in LISPUSERSDIRECTORIES - until (INFILEP (PACKFILENAME 'NAME 'LLNSDECLS - 'BODY - (SETQ $$VAL - (PACKFILENAME 'HOST - (FILENAMEFIELD D - 'HOST) - 'DIRECTORY - (CONCAT "LISP>" MAKESYSNAME - ">SOURCES"] - LLNSDECLS - (LOADCOMP) - LLNS) -) -(PUTPROPS HOSTUP COPYRIGHT ("Johannes A. G. M. Koomen" 1988 1989)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (1512 8312 (HOSTUP? 1522 . 8310))))) -STOP diff --git a/obsolete/lispusers/HOSTUP.TEDIT b/obsolete/lispusers/HOSTUP.TEDIT deleted file mode 100644 index 5f8fb3dba93ad604f3e9cd9095734c5b8812f0c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3382 zcmeHH&2HO95T+d`t?RNsL4g+NWq@8Jz!fA_wv}EQMxrD(lBiNtYS+ktl2#T0imUR+ zj(g|>m!Yr0<1 z_0=9<*gv`cmgsvq_rg%bWR$2~qF#xfO1TiBUdYzc)i_QbpNdGnAd(TSjvqIMB}Y!? zB2Gk964SJ(>+al-X(}fv!V?O-I3Y3h6EP(jQd3OCVk{!6o*Yu;QN6AYN4=imoMmAP zIZXpW%Sc}OQ=m!af@WzrNqoe1?4dgvd`DMve=;X8NyK8Az(>-|50O1h$e)o%7yhLP zX^xr+NG53%0Z4F7-lgXU-Z&5?qJ|8Uh@mBn7Ag3q_!?y_ZeG|odgkD8b!Q}!Gzw#K z`654|xfcTmdEqrB{sIZo$wb8QEDdm-T#67ydo+V=#HQU!+ILKOGUTPup5>&`Ypk68%;1!%dx&DA%FiA21V;nWW=z)WA#)Q=N? zMLO77cvC@Rkz5JTIu#yjLgG+{UyB#Y^Fm>XOL_*b30x6g3V=ezH&qszph8IxG7;>fyfe}q2U}C+YW0CM;bdkJ; zOfh@hc0fC1U2;}Pl~X4&K~vO?QwiWKJ@H~9!12un-p1V#j2#h9kQKypy6KAEi5J5N zxdRPPRIXI+5zI5`Zmg*N9WpF`z!l+lVILEY>&!<2X-{^BbT;Ej3SkIH5I zjBqols@^rcl|1YGu`Pr{r7E7oOA%a`NZ0teSLj+pmkNb}(Kd+{SZLW@%eMM0n+k?w zJh2)@8oGw#TKzUVeMOZb70Ohm<4ToI9#yf+VzTf7g1WZ-bV!9CMn;nwX5Td(vst7@ z$8c6B!_mNWh7HFWxJWd#elk%7wTzzCJ)@r8G@U-#&rGLl^-Z!{Eg*2Lr#w_@H|oP< zbJn#7COKw%)HNLX(X`qfmwIN?8ug0QvYnm*>|5mkaOI>%-yBo5UdK{o;4pSfqlqH3 zGFBV+j8l*LeH^d}ZuJ_S)M`}2|0dQoPhAzLD1^(SW2zk;({Z_+r7t3K&9QR&uTTi! z)q0g`Xm)k0;{VyYRdD|fTg9T9=KI=vT7|!MUTL3T*}J!=X}j3&yxLI?x4jB%M8E-- zy%^4dnq3;7YgJ z!PZn~-Z$QRpz?EVzhicvnXc6^v=7$DpJ@-WpQzjhZr`wh^*3zDu(5rZ<-6g>BxKJ+ zZLe#$ZS9NPpw?Z0(zN^h%^#|#9K#ze>s;oti?f4{GwPb9w&}L|J6jiT3Rz{y13A+_ z8_1O??5ZSO&gjnjqPZZ@jVQlz4cjfWnS<}vQ z3vb!*J{z(L;M!OOcsPm5#xE7To%YwINDEX.;4 23471 - - changes to: (FNS INSERT.KNOWN.INDEX) - - previous date: "17-Feb-87 14:27:45" {SUMEX-AIM}PS:INDEX.;5) - - -(* Copyright (c) 1987 by Leland Stanford Junior University. All rights reserved.) - -(PRETTYCOMPRINT INDEXCOMS) - -(RPAQQ INDEXCOMS ((* Developed under support from NIH grant RR-00785.) - (* Written by Frank Gilmurray and Sami Shaio.) - (FNS INDEXOBJ INDEXOBJP INDEX.DISPLAYFN INDEX.IMAGEBOXFN INDEX.PUTFN INDEX.GETFN - INDEX.BUTTONEVENTINFN CHANGE.INDEX CHANGE.INDEXENTRY INDEX.WHENDELETEDFN) - (FNS ADD.NEW.INDEX INDEX.STRING INSERT.INDEX INSERT.INDEXENTRY - GET.INDEXENTRY.NUMBER INSERT.KNOWN.INDEX INDEX.LIST.REFS - LIST.OF.INDEXENTRIES CREATE.INDEX.FILE VIEW.INDEX.FILE GET.INDEX.FILE - WRITE.INDEX.FILE WRITE.INDEX.PAGENUMBERS) - (RECORDS INDEX.ENTRY.RECORD))) - - - -(* Developed under support from NIH grant RR-00785.) - - - - -(* Written by Frank Gilmurray and Sami Shaio.) - -(DEFINEQ - -(INDEXOBJ - (LAMBDA (KEY INDEXENTRY.PARMS) (* fsg "15-Jan-87 09:53") - - (* * Create an instance of an Index or IndexEntry imageobject. The difference between the two is the OBJECTDATUM. - For a simple Index, OBJECTDATUM is NIL. For an IndexEntry, OBJECTDATUM is a record containing the Entry, Entry's  - font, and Number option. In either case, the INDEX.KEY property is the hash key and is also the text to index for a - simple Index.) - - - (LET ((NEWOBJ (IMAGEOBJCREATE INDEXENTRY.PARMS (IMAGEFNSCREATE (FUNCTION INDEX.DISPLAYFN) - (FUNCTION INDEX.IMAGEBOXFN) - (FUNCTION INDEX.PUTFN) - (FUNCTION INDEX.GETFN) - (FUNCTION NILL) - (FUNCTION - INDEX.BUTTONEVENTINFN) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION - INDEX.WHENDELETEDFN) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL))))) - (IMAGEOBJPROP NEWOBJ 'INDEX.KEY - KEY) - (IMAGEOBJPROP NEWOBJ 'TYPE - 'INDEXOBJ) - NEWOBJ))) - -(INDEXOBJP - (LAMBDA (OBJ) (* fsg "15-Jan-87 09:55") - - (* * Tests an imageobject to see if it an Index or IndexEntry imageobject. By convention, testing functions for an  - imageobject are named .) - - - (AND OBJ (EQ (IMAGEOBJPROP OBJ 'TYPE) - 'INDEXOBJ)))) - -(INDEX.DISPLAYFN - (LAMBDA (OBJ STREAM) (* fsg "17-Feb-87 10:18") - - (* * Display an Index or IndexEntry imageobject. If the output is to the display imagestream, then just type Index  - or IndexEntry followed by their args. Otherwise the output is to a hardcopy imagestream. In this case type nothing  - and replace the CAR of the hash array entry with a list of page numbers in which this index entry appears. -  is the current TEdit page number iff doing a hardcopy.) - - - (LET ((WINDOW (CAR (fetch \WINDOW of TEXTOBJ))) - PGS/IMOBJS CURRENT.PAGE) - (SELECTQ (IMAGESTREAMTYPE STREAM) - (DISPLAY (PROGN (DSPFONT GP.DefaultFont STREAM) - (PRIN3 (INDEX.STRING OBJ) - STREAM))) - (PROGN (SETQ PGS/IMOBJS (GETHASH (MKATOM (IMAGEOBJPROP OBJ - 'INDEX.KEY)) - (WINDOWPROP WINDOW - 'TSP.INDEX.ARRAY))) - (SETQ CURRENT.PAGE (CAR FORMATTINGSTATE)) - (COND - (PGS/IMOBJS (COND - ((LISTP (CAR PGS/IMOBJS)) - (OR (MEMBER CURRENT.PAGE (CAR PGS/IMOBJS)) - (RPLACA PGS/IMOBJS - (SORT (APPEND (CAR PGS/IMOBJS) - (LIST CURRENT.PAGE) - ) - 'ILESSP)))) - (T (RPLACA PGS/IMOBJS (LIST CURRENT.PAGE))))) - (T (SHOULDNT "No array entry for this INDEX")))))))) - -(INDEX.IMAGEBOXFN - (LAMBDA (OBJ STREAM CURRENTX RIGHTMARGIN) (* fsg "15-Feb-87 14:37") - - (* * Return the ImageBox for an Index or IndexEntry request.) - - - (SELECTQ (IMAGESTREAMTYPE STREAM) - (DISPLAY (create IMAGEBOX - XSIZE _(STRINGWIDTH (INDEX.STRING OBJ) - GP.DefaultFont) - YSIZE _(FONTPROP GP.DefaultFont 'HEIGHT) - YDESC _(FONTPROP GP.DefaultFont 'DESCENT) - XKERN _ 0)) - (create IMAGEBOX - XSIZE _ 0 - YSIZE _ 0 - YDESC _ 0 - XKERN _ 0)))) - -(INDEX.PUTFN - (LAMBDA (OBJ STREAM) (* fsg "11-Feb-87 11:07") - - (* * Puts the Index or IndexEntry imageobject in a file.) - - - (LET ((DATUM (fetch OBJECTDATUM of OBJ))) - (PRIN2 (COND - (DATUM (LIST 'IndexEntry - (IMAGEOBJPROP OBJ 'INDEX.KEY) - DATUM)) - (T (LIST 'Index - (IMAGEOBJPROP OBJ 'INDEX.KEY)))) - STREAM)))) - -(INDEX.GETFN - (LAMBDA (STREAM) (* fsg "11-Feb-87 10:42") - - (* * Create the Index or IndexEntry imageobject when it is read from file.) - - - (LET* ((INDEX.ARGS (CDR (READ STREAM))) - (NEWOBJ (APPLY 'INDEXOBJ - INDEX.ARGS)) - (WINDOW (PROCESSPROP (THIS.PROCESS) - 'WINDOW))) - (OR (WINDOWPROP WINDOW 'IMAGEOBJ.MENUW) - (TSP.FMMENU (TEXTSTREAM WINDOW))) - (ADD.NEW.INDEX WINDOW (CAR INDEX.ARGS) - NEWOBJ) - NEWOBJ))) - -(INDEX.BUTTONEVENTINFN - (LAMBDA (OBJ STREAM SEL RELX RELY WINDOW HOSTSTREAM BUTTON) - (* fsg "15-Jan-87 11:26") - - (* * Process the MIDDLE button pressed inside an Index or IndexEntry imageobject. This means the user wants to  - Change this index.) - - - (AND (MOUSESTATE MIDDLE) - (MENU (create MENU - ITEMS _ '((Change 'CHANGE - "Change this Index or IndexEntry")) - CENTERFLG _ T)) - (LET* ((OBJDATUM (fetch OBJECTDATUM of OBJ)) - (NEW.INDEX (COND - (OBJDATUM (CHANGE.INDEXENTRY OBJ STREAM OBJDATUM)) - (T (CHANGE.INDEX OBJ STREAM))))) - (AND (CAR NEW.INDEX) - (PROGN (INDEX.WHENDELETEDFN OBJ STREAM) - (IMAGEOBJPROP OBJ 'INDEX.KEY - (CAR NEW.INDEX)) - (AND OBJDATUM (replace OBJECTDATUM of OBJ - with (CADR NEW.INDEX))) - (ADD.NEW.INDEX WINDOW (CAR NEW.INDEX) - OBJ) - 'CHANGED)))))) - -(CHANGE.INDEX - (LAMBDA (OBJ STREAM) (* fsg "15-Jan-87 10:54") - - (* * Here when CHANGE buttoned inside an Index ImageObject.) - - - (LIST (MKATOM (TEDIT.GETINPUT STREAM (CONCAT "Change Index name %"" - (IMAGEOBJPROP OBJ 'INDEX.KEY) - "%" to: ")))))) - -(CHANGE.INDEXENTRY - (LAMBDA (OBJ STREAM OBJDATUM) (* fsg "15-Jan-87 11:17") - - (* * Here when CHANGE buttoned inside an IndexEntry ImageObject.) - - - (LET ((WINDOW (\TEDIT.MAINW STREAM)) - NEWINDEX.KEY NEWINDEX.ENTRY NEWINDEX.FONT NEWINDEX.NUMBER) - (COND - ((SETQ NEWINDEX.KEY (MKATOM (TEDIT.GETINPUT STREAM (CONCAT - "Change IndexEntry Key %"" - (IMAGEOBJPROP - OBJ - 'INDEX.KEY) - "%" to: ")))) - (SETQ NEWINDEX.ENTRY (OR (MKATOM (TEDIT.GETINPUT STREAM - (CONCAT - "Change IndexEntry Entry %"" - (fetch INDEX.ENTRY - of OBJDATUM) - "%" to: "))) - (fetch INDEX.ENTRY of OBJDATUM))) - (TEDIT.PROMPTPRINT STREAM (CONCAT "Change IndexEntry Entry font %"" - (ABBREVIATE.FONT (fetch INDEX.ENTRYFONT - of OBJDATUM)) - "%" to...") - T) - (until (SETQ NEWINDEX.FONT (GET.TSP.FONT WINDOW (OR (fetch INDEX.ENTRYFONT - of OBJDATUM) - GP.DefaultFont))) - do (TEDIT.PROMPTPRINT STREAM "Invalid font specification...try again." T)) - (TEDIT.PROMPTPRINT STREAM (CONCAT "Change IndexEntry Number option %"" - (fetch INDEX.NUMBER of OBJDATUM) - "%" to...") - T) - (SETQ NEWINDEX.NUMBER (GET.INDEXENTRY.NUMBER WINDOW (fetch INDEX.NUMBER - of OBJDATUM))) - (TEDIT.PROMPTPRINT STREAM "" T) - (LIST NEWINDEX.KEY (create INDEX.ENTRY.RECORD - INDEX.ENTRY _ NEWINDEX.ENTRY - INDEX.ENTRYFONT _ NEWINDEX.FONT - INDEX.NUMBER _ NEWINDEX.NUMBER))) - (T (LIST NEWINDEX.KEY)))))) - -(INDEX.WHENDELETEDFN - (LAMBDA (OBJ WINDOW) (* fsg "15-Jan-87 11:30") - - (* * Delete the selected Index or IndexEntry imageobject.) - - - (LET* ((INDEXKEY (IMAGEOBJPROP OBJ 'INDEX.KEY)) - (INDEX.ARRAY (WINDOWPROP WINDOW 'TSP.INDEX.ARRAY)) - (HASH.VALUE (GETHASH INDEXKEY INDEX.ARRAY))) - (COND - ((DREMOVE OBJ (COND - ((fetch OBJECTDATUM of OBJ) - (CADDR HASH.VALUE)) - (T (CADR HASH.VALUE)))) - NIL) - (T (DSUBST NIL (LIST OBJ) - HASH.VALUE) - (PUTHASH INDEXKEY (COND - ((OR (CADR HASH.VALUE) - (CADDR HASH.VALUE)) - HASH.VALUE) - (T NIL)) - INDEX.ARRAY))) - NIL))) -) -(DEFINEQ - -(ADD.NEW.INDEX - (LAMBDA (WINDOW INDEXKEY OBJ) (* fsg "28-Jan-87 11:37") - - (* * Add an Index or IndexEntry imageobject to our index array. If at least one already exists for this index key,  - then just append this imageobject to the list. Otherwise create a new array entry for this imageobject. - The list contains three elements; a string, a list of Index imageobjects, and a list of IndexEntry imageobjects.) - - - (LET* ((CODE.ARRAY (WINDOWPROP WINDOW 'TSP.INDEX.ARRAY)) - (HASH.VALUE (GETHASH INDEXKEY CODE.ARRAY)) - (INDEX.OBJS (CADR HASH.VALUE)) - (ENTRY.OBJS (CADDR HASH.VALUE))) - (COND - ((fetch OBJECTDATUM of OBJ) - (SETQ ENTRY.OBJS (APPEND ENTRY.OBJS (LIST OBJ)))) - (T (SETQ INDEX.OBJS (APPEND INDEX.OBJS (LIST OBJ))))) - (PUTHASH INDEXKEY (LIST '"[Pages (?)]" - INDEX.OBJS ENTRY.OBJS) - CODE.ARRAY)))) - -(INDEX.STRING - (LAMBDA (OBJ) (* fsg "15-Feb-87 14:40") - - (* * Returns the display imagestream text for an Index or IndexEntry ImageObject.) - - - (LET ((OBJDATUM (fetch OBJECTDATUM of OBJ)) - INDEXNUMBER) - (COND - (OBJDATUM (CONCAT "[Index Key=" (MKATOM (IMAGEOBJPROP OBJ 'INDEX.KEY)) - ",Entry=" - (fetch INDEX.ENTRY of OBJDATUM) - (COND - ((EQ (SETQ INDEXNUMBER (fetch INDEX.NUMBER of OBJDATUM)) - 'YES) - ",Number]") - ((NUMBERP INDEXNUMBER) - (CONCAT ",Number=" INDEXNUMBER "]")) - (T "]")))) - (T (CONCAT "[Index " (MKATOM (IMAGEOBJPROP OBJ 'INDEX.KEY)) - "]")))))) - -(INSERT.INDEX - (LAMBDA (STREAM WINDOW) (* fsg "15-Jan-87 11:37") - - (* * Process the "Index" function in the ImageObjects menu.) - - - (LET ((NEWINDEX.KEY (MKATOM (TEDIT.GETINPUT STREAM "Index Key: ")))) - (TEDIT.PROMPTPRINT STREAM "" T) - (AND NEWINDEX.KEY (LET ((NEW.INDEX.OBJ (INDEXOBJ NEWINDEX.KEY))) - (ADD.NEW.INDEX WINDOW NEWINDEX.KEY NEW.INDEX.OBJ) - (TEDIT.INSERT.OBJECT NEW.INDEX.OBJ STREAM)))))) - -(INSERT.INDEXENTRY - (LAMBDA (STREAM WINDOW) (* fsg "15-Jan-87 11:39") - - (* * Process the "IndexEntry" function in the ImageObjects menu.) - - - (LET ((NEWINDEX.KEY (MKATOM (TEDIT.GETINPUT STREAM "IndexEntry Key: "))) - NEWINDEX.ENTRY NEWINDEX.FONT NEWINDEX.NUMBER) - (COND - (NEWINDEX.KEY (SETQ NEWINDEX.ENTRY (OR (MKATOM (TEDIT.GETINPUT STREAM - "IndexEntry Entry: " - (MKSTRING - NEWINDEX.KEY))) - NEWINDEX.KEY)) - (TEDIT.PROMPTPRINT STREAM "IndexEntry Entry font..." T) - (until (SETQ NEWINDEX.FONT (GET.TSP.FONT WINDOW GP.DefaultFont)) - do (TEDIT.PROMPTPRINT STREAM - "Invalid font specification...try again." - T)) - (TEDIT.PROMPTPRINT STREAM "IndexEntry Number option..." T) - (SETQ NEWINDEX.NUMBER (GET.INDEXENTRY.NUMBER WINDOW)) - (TEDIT.PROMPTPRINT STREAM "" T) - (LET ((NEW.INDEX.OBJ (INDEXOBJ NEWINDEX.KEY - (create INDEX.ENTRY.RECORD - INDEX.ENTRY _ NEWINDEX.ENTRY - INDEX.ENTRYFONT _ NEWINDEX.FONT - INDEX.NUMBER _ NEWINDEX.NUMBER)))) - (ADD.NEW.INDEX WINDOW NEWINDEX.KEY NEW.INDEX.OBJ) - (TEDIT.INSERT.OBJECT NEW.INDEX.OBJ STREAM))) - (T (TEDIT.PROMPTPRINT STREAM "" T)))))) - -(GET.INDEXENTRY.NUMBER - (LAMBDA (WINDOW DEFAULTNUMBER) (* fsg "15-Jan-87 11:43") - - (* * Get the NUMBER argument for an IndexEntry ImageObject. The NUMBER can be "YES", "NO", or an integer.) - - - (OR (MENU (create MENU - TITLE _ "NUMBER?" - CENTERFLG _ T - ITEMS _ '(YES NO VALUE) - WHENSELECTEDFN _(FUNCTION (LAMBDA (ITEM) - (COND - ((EQ ITEM 'VALUE) - (NUMBERPAD.READ (CREATE.NUMBERPAD.READER "NUMBER value?" NIL - NIL NIL T))) - (T ITEM)))))) - DEFAULTNUMBER - 'YES))) - -(INSERT.KNOWN.INDEX - (LAMBDA (STREAM WINDOW) (* fsg "18-Feb-87 14:48") - - (* * Process the "Known Indices" function in the ImageObjects menu. A menu of all the known Indices and  - IndexEntries pops up and the user may button one of these to insert the corrsponding Index or IndexEntry. - Any buttoning outside of this menu will make it disappear.) - - - (LET* ((PREVINDICES (INDEX.LIST.REFS WINDOW)) - (NEWINDEX.KEY (COND - (PREVINDICES (LET ((NMENU (create MENU - TITLE _ "Index Keys" - ITEMS _ PREVINDICES)) - MENU.SELECTION) - (SETQ MENU.SELECTION (MENU NMENU)) - (AND MENU.SELECTION (OR (LISTP MENU.SELECTION) - (LIST MENU.SELECTION))))) - (T (TEDIT.PROMPTPRINT STREAM - "There are no Indicies/IndexEntries in this document." - T) - NIL)))) - (AND NEWINDEX.KEY (LET ((NEWINDEX.OBJ (APPLY 'INDEXOBJ - NEWINDEX.KEY))) - (ADD.NEW.INDEX WINDOW (CAR NEWINDEX.KEY) - NEWINDEX.OBJ) - (TEDIT.INSERT.OBJECT NEWINDEX.OBJ STREAM) - (TEDIT.PROMPTPRINT STREAM "" T)))))) - -(INDEX.LIST.REFS - (LAMBDA (WINDOW) (* fsg "15-Jan-87 11:46") - - (* * Return a sorted list of the Index and IndexEntry keys. Simple Index keys are just added to the list. - For an IndexEntry key, there are SUBITEMS for each IndexEntry for this key. This list can be used as the ITEMS  - field in the Known Indices menu or for creating the index file.) - - - (LET ((INDEX.ARRAY (WINDOWPROP WINDOW 'TSP.INDEX.ARRAY)) - (INDEX.KEYLIST NIL) - (INDEX.ITEMS (CONS)) - INDEX.VALUE) - (MAPHASH INDEX.ARRAY (FUNCTION (LAMBDA (VAL KY) - (SETQ INDEX.KEYLIST (CONS KY INDEX.KEYLIST))))) - (for KEY in (SORT INDEX.KEYLIST 'UALPHORDER) - do (SETQ INDEX.VALUE (GETHASH KEY INDEX.ARRAY)) - (AND (CADR INDEX.VALUE) - (NCONC INDEX.ITEMS (LIST KEY))) - (AND (CADDR INDEX.VALUE) - (NCONC INDEX.ITEMS (LIST (LIST KEY NIL "Select an IndexEntry subitem." - (CONS 'SUBITEMS - (LIST.OF.INDEXENTRIES - KEY - (CADDR INDEX.VALUE)))))))) - (CDR INDEX.ITEMS)))) - -(LIST.OF.INDEXENTRIES - (LAMBDA (KEY OBJLIST) (* fsg "15-Jan-87 11:48") - - (* * Returns a list of the IndexEntries sorted by Entry) - - - (LET ((ENTRY.LIST (CONS)) - OBJDATUM) - (for OBJ in OBJLIST - do (SETQ OBJDATUM (fetch OBJECTDATUM of OBJ)) - (NCONC ENTRY.LIST (LIST (LIST (CONCAT (fetch INDEX.ENTRY of OBJDATUM) - ", " - (ABBREVIATE.FONT (fetch - INDEX.ENTRYFONT - of OBJDATUM)) - ", " - (fetch INDEX.NUMBER of OBJDATUM)) - (KWOTE (LIST KEY OBJDATUM)))))) - (SORT (INTERSECTION (CDR ENTRY.LIST) - (CDR ENTRY.LIST)) - (FUNCTION (LAMBDA (A B) - (UALPHORDER (CAADR (CADADR A)) - (CAADR (CADADR B))))))))) - -(CREATE.INDEX.FILE - (LAMBDA (STREAM WINDOW) (* fsg "15-Dec-86 13:22") - - (* * Writes the indices and their corresponding page numbers or strings to the index file. The indices are sorted  - alphabetically regardless of case.) - - - (LET* ((INDEX.ARRAY (WINDOWPROP WINDOW 'TSP.INDEX.ARRAY)) - (INDEX.LIST (INDEX.LIST.REFS WINDOW)) - (INDEX.FILE (GET.INDEX.FILE (WINDOWPROP WINDOW 'IMAGEOBJ.MENUW))) - (INDEX.STREAM (AND INDEX.FILE (OPENTEXTSTREAM)))) - (COND - ((AND INDEX.LIST INDEX.FILE) - (TEDIT.PROMPTPRINT STREAM (CONCAT "Putting indices in: " INDEX.FILE "...") - T) - (WRITE.INDEX.FILE INDEX.STREAM INDEX.LIST INDEX.ARRAY) - (TEDIT.PROMPTPRINT STREAM "done") - (TEDIT.PUT INDEX.STREAM INDEX.FILE) - INDEX.FILE) - (INDEX.LIST (TEDIT.PROMPTPRINT STREAM "Specify a file name for the indices first." T) - NIL) - (T (TEDIT.PROMPTPRINT STREAM "There are no indices in this document." T) - NIL))))) - -(VIEW.INDEX.FILE - (LAMBDA (STREAM WINDOW) (* fsg "15-Dec-86 15:22") - - (* * Writes out the index file via CREATE.INDEX.FILE and then opens another TEdit window where this new file is  - displayed.) - - - (LET ((INDEX.FILE (CREATE.INDEX.FILE STREAM WINDOW)) - (INDEX.FILEW (WINDOWPROP WINDOW 'INDEX.WINDOW))) - (AND INDEX.FILE (COND - ((WINDOWP INDEX.FILEW) - (COND - ((OPENWP INDEX.FILEW) - (TEDIT.GET (TEXTOBJ INDEX.FILEW) - INDEX.FILE)) - ((OPENW INDEX.FILEW) - (TEDIT INDEX.FILE INDEX.FILEW)))) - (T (WINDOWPROP WINDOW 'INDEX.WINDOW - (SETQ INDEX.FILEW (CREATEW NIL (CONCAT - "Viewing index file: " - INDEX.FILE)))) - (TEDIT INDEX.FILE INDEX.FILEW))))))) - -(GET.INDEX.FILE - (LAMBDA (MENUW) (* fsg "19-Aug-86 09:09") - - (* * Return the user specified index file name.) - - - (LET* ((ITEM (FM.ITEMFROMID MENUW 'INDEX.FILE)) - (FILENAME (FM.ITEMPROP ITEM 'LABEL))) - (COND - ((NOT (STREQUAL FILENAME "")) - (MKATOM FILENAME)))))) - -(WRITE.INDEX.FILE - (LAMBDA (INDEX.STREAM INDEX.LIST INDEX.ARRAY) (* fsg "28-Jan-87 13:31") - - (* * Do the output to the index file. For each Index, the Key is printed followed by the list of page numbers in  - which this Index Key appears. Each IndexEntry is printed on a separate line and the page number depends on the  - IndexEntry Number option. After all indices/indexentries are printed, the array page number list is converted back  - to a string. This insures that the next DISPLAYFN call will reconvert the string back to a page number list.) - - - (DSPFONT (FONTCREATE '(HELVETICA 14 BRR)) - INDEX.STREAM) - (PRINTOUT INDEX.STREAM "Index" T T) - (for INDEX.ITEM in INDEX.LIST - do (COND - ((LISTP INDEX.ITEM) - (LET ((PGS.AND.IMOBJS (GETHASH (CAR INDEX.ITEM) - INDEX.ARRAY))) - (for INDEX.SUBITEM in (CDR (CADDDR INDEX.ITEM)) - do (for (INDEX.ENTRYARGS INDEX.FONT) in (CDR (CADADR INDEX.SUBITEM)) - do (DSPFONT (SETQ INDEX.FONT (FONTCREATE (CADR - INDEX.ENTRYARGS))) - INDEX.STREAM) - (PRINTOUT INDEX.STREAM (MKSTRING (CAR INDEX.ENTRYARGS))) - (WRITE.INDEX.PAGENUMBERS INDEX.STREAM PGS.AND.IMOBJS - (CADDR INDEX.ENTRYARGS)) - (DSPFONT INDEX.FONT INDEX.STREAM) - (PRINTOUT INDEX.STREAM T))))) - (T (DSPFONT GP.DefaultFont INDEX.STREAM) - (LET ((PGS.AND.IMOBJS (GETHASH INDEX.ITEM INDEX.ARRAY))) - (COND - ((CAR PGS.AND.IMOBJS) - (PRINTOUT INDEX.STREAM (MKSTRING INDEX.ITEM)) - (WRITE.INDEX.PAGENUMBERS INDEX.STREAM PGS.AND.IMOBJS NIL) - (PRINTOUT INDEX.STREAM T)) - (T NIL)))))) - (for (INDEX.ITEM PAGES/IMOBJS) in INDEX.LIST - do (SETQ PAGES/IMOBJS (GETHASH (COND - ((LISTP INDEX.ITEM) - (CAR INDEX.ITEM)) - (T INDEX.ITEM)) - INDEX.ARRAY)) - (RPLACA PAGES/IMOBJS (COND - ((STRINGP (CAR PAGES/IMOBJS)) - (CAR PAGES/IMOBJS)) - (T (CONCAT "[Pages " (MKSTRING (CAR PAGES/IMOBJS)) - "]"))))))) - -(WRITE.INDEX.PAGENUMBERS - (LAMBDA (STREAM PAGES.AND.IMOBJS NUMBER.OPTION) (* fsg "15-Jan-87 11:53") - - (* * Here to write the actual page or pages nubers that this Index or IndexEntry appears in. - NUMBER.OPTION is the Number field of an IndexEntry.) - - - (DSPFONT GP.DefaultFont STREAM) - (LET ((PAGE.NBRS (COND - (NUMBER.OPTION (SELECTQ NUMBER.OPTION - (NO "") - (YES (CAR PAGES.AND.IMOBJS)) - (MKSTRING NUMBER.OPTION))) - (T (CAR PAGES.AND.IMOBJS)))) - (PAGE#.STRING " ")) - (COND - ((LISTP PAGE.NBRS) - (for PAGE in PAGE.NBRS do (SETQ PAGE#.STRING (CONCAT PAGE#.STRING " " - (MKSTRING PAGE))) - finally (PRINTOUT STREAM PAGE#.STRING))) - (T (PRINTOUT STREAM (CONCAT PAGE#.STRING PAGE.NBRS))))))) -) -[DECLARE: EVAL@COMPILE - -(RECORD INDEX.ENTRY.RECORD (INDEX.ENTRY INDEX.ENTRYFONT INDEX.NUMBER)) -] -(PUTPROPS INDEX COPYRIGHT ("Leland Stanford Junior University" 1987)) -(DECLARE: DONTCOPY - (FILEMAP (NIL (1056 9971 (INDEXOBJ 1068 . 2331) (INDEXOBJP 2335 . 2718) (INDEX.DISPLAYFN 2722 . 4281) -(INDEX.IMAGEBOXFN 4285 . 4863) (INDEX.PUTFN 4867 . 5325) (INDEX.GETFN 5329 . 5903) ( -INDEX.BUTTONEVENTINFN 5907 . 6972) (CHANGE.INDEX 6976 . 7324) (CHANGE.INDEXENTRY 7328 . 9178) ( -INDEX.WHENDELETEDFN 9182 . 9968)) (9973 23270 (ADD.NEW.INDEX 9985 . 10986) (INDEX.STRING 10990 . 11779 -) (INSERT.INDEX 11783 . 12319) (INSERT.INDEXENTRY 12323 . 13738) (GET.INDEXENTRY.NUMBER 13742 . 14360) - (INSERT.KNOWN.INDEX 14364 . 15630) (INDEX.LIST.REFS 15634 . 16840) (LIST.OF.INDEXENTRIES 16844 . -17764) (CREATE.INDEX.FILE 17768 . 18867) (VIEW.INDEX.FILE 18871 . 19740) (GET.INDEX.FILE 19744 . 20129 -) (WRITE.INDEX.FILE 20133 . 22381) (WRITE.INDEX.PAGENUMBERS 22385 . 23267))))) -STOP diff --git a/obsolete/lispusers/IRIS.TEdit b/obsolete/lispusers/IRIS.TEdit deleted file mode 100644 index 69ac05ec10841fec61869548b5507b316a81dcfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34594 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.;2 48027 - - changes to: (VARS IRISCONSTANTSCOMS) - - previous date: " 5-Sep-85 23:28:08" {ERIS}KOTO>IRISCONSTANTS.;1) - - -(* Copyright (c) 1985 by Xerox Corporation. All rights reserved.) - -(PRETTYCOMPRINT IRISCONSTANTSCOMS) - -(RPAQQ IRISCONSTANTSCOMS [(COMS (* * gl.h) - (* Maximum X and Y screen coordinates) - (CONSTANTS (IRIS.XMAXSCREEN 1023) - (IRIS.YMAXSCREEN 767)) - (* Various hardware/software limits) - (CONSTANTS (IRIS.ATTRIBSTACKDEPTH 10) - (IRIS.VPSTACKDEPTH 8) - (IRIS.MATRIXSTACKDEPTH 32) - (IRIS.STARTTAG -2) - (IRIS.ENDTAG -3)) - (* Name for colors in color map loaded by IRIS.GINIT) - (CONSTANTS (IRIS.BACKGROUND 0) - (IRIS.BLACK 0) - (IRIS.RED 1) - (IRIS.GREEN 2) - (IRIS.YELLOW 3) - (IRIS.BLUE 4) - (IRIS.MAGENTA 5) - (IRIS.CYAN 6) - (IRIS.WHITE 7))) - (COMS (* * device.h) - (* Macros to test valuator and button numbers) - (MACROS IRIS.ISBUTTON IRIS.ISSCRBUTTON IRIS.ISVALUATOR IRIS.ISTIMER - IRIS.ISDIAL IRIS.ISLPEN IRIS.ISLPENBUT) - (* Include file with device definitions) - (CONSTANTS (IRIS.NULLDEV 0) - (IRIS.BUTOFFSET 1) - (IRIS.SBTOFFSET 200) - (IRIS.VALOFFSET 256) - (IRIS.KEYOFFSET 512) - (IRIS.TIMOFFSET 515) - (IRIS.BUTCOUNT 144) - (IRIS.SBTCOUNT 16) - (IRIS.VALCOUNT 14) - (IRIS.TIMCOUNT 8)) - (* Buttons) - (CONSTANTS (IRIS.BUT0 (IPLUS 0 IRIS.BUTOFFSET)) - (IRIS.BUT1 (IPLUS 1 IRIS.BUTOFFSET)) - (IRIS.BUT2 (IPLUS 2 IRIS.BUTOFFSET)) - (IRIS.BUT3 (IPLUS 3 IRIS.BUTOFFSET)) - (IRIS.BUT4 (IPLUS 4 IRIS.BUTOFFSET)) - (IRIS.BUT5 (IPLUS 5 IRIS.BUTOFFSET)) - (IRIS.BUT6 (IPLUS 6 IRIS.BUTOFFSET)) - (IRIS.BUT7 (IPLUS 7 IRIS.BUTOFFSET)) - (IRIS.BUT8 (IPLUS 8 IRIS.BUTOFFSET)) - (IRIS.BUT9 (IPLUS 9 IRIS.BUTOFFSET)) - (IRIS.BUT10 (IPLUS 10 IRIS.BUTOFFSET)) - (IRIS.BUT11 (IPLUS 11 IRIS.BUTOFFSET)) - (IRIS.BUT12 (IPLUS 12 IRIS.BUTOFFSET)) - (IRIS.BUT13 (IPLUS 13 IRIS.BUTOFFSET)) - (IRIS.BUT14 (IPLUS 14 IRIS.BUTOFFSET)) - (IRIS.BUT15 (IPLUS 15 IRIS.BUTOFFSET)) - (IRIS.BUT16 (IPLUS 16 IRIS.BUTOFFSET)) - (IRIS.BUT17 (IPLUS 17 IRIS.BUTOFFSET)) - (IRIS.BUT18 (IPLUS 18 IRIS.BUTOFFSET)) - (IRIS.BUT19 (IPLUS 19 IRIS.BUTOFFSET)) - (IRIS.BUT20 (IPLUS 20 IRIS.BUTOFFSET)) - (IRIS.BUT21 (IPLUS 21 IRIS.BUTOFFSET)) - (IRIS.BUT22 (IPLUS 22 IRIS.BUTOFFSET)) - (IRIS.BUT23 (IPLUS 23 IRIS.BUTOFFSET)) - (IRIS.BUT24 (IPLUS 24 IRIS.BUTOFFSET)) - (IRIS.BUT25 (IPLUS 25 IRIS.BUTOFFSET)) - (IRIS.BUT26 (IPLUS 26 IRIS.BUTOFFSET)) - (IRIS.BUT27 (IPLUS 27 IRIS.BUTOFFSET)) - (IRIS.BUT28 (IPLUS 28 IRIS.BUTOFFSET)) - (IRIS.BUT29 (IPLUS 29 IRIS.BUTOFFSET)) - (IRIS.BUT30 (IPLUS 30 IRIS.BUTOFFSET)) - (IRIS.BUT31 (IPLUS 31 IRIS.BUTOFFSET)) - (IRIS.BUT32 (IPLUS 32 IRIS.BUTOFFSET)) - (IRIS.BUT33 (IPLUS 33 IRIS.BUTOFFSET)) - (IRIS.BUT34 (IPLUS 34 IRIS.BUTOFFSET)) - (IRIS.BUT35 (IPLUS 35 IRIS.BUTOFFSET)) - (IRIS.BUT36 (IPLUS 36 IRIS.BUTOFFSET)) - (IRIS.BUT37 (IPLUS 37 IRIS.BUTOFFSET)) - (IRIS.BUT38 (IPLUS 38 IRIS.BUTOFFSET)) - (IRIS.BUT39 (IPLUS 39 IRIS.BUTOFFSET)) - (IRIS.BUT40 (IPLUS 40 IRIS.BUTOFFSET)) - (IRIS.BUT41 (IPLUS 41 IRIS.BUTOFFSET)) - (IRIS.BUT42 (IPLUS 42 IRIS.BUTOFFSET)) - (IRIS.BUT43 (IPLUS 43 IRIS.BUTOFFSET)) - (IRIS.BUT44 (IPLUS 44 IRIS.BUTOFFSET)) - (IRIS.BUT45 (IPLUS 45 IRIS.BUTOFFSET)) - (IRIS.BUT46 (IPLUS 46 IRIS.BUTOFFSET)) - (IRIS.BUT47 (IPLUS 47 IRIS.BUTOFFSET)) - (IRIS.BUT48 (IPLUS 48 IRIS.BUTOFFSET)) - (IRIS.BUT49 (IPLUS 49 IRIS.BUTOFFSET)) - (IRIS.BUT50 (IPLUS 50 IRIS.BUTOFFSET)) - (IRIS.BUT51 (IPLUS 51 IRIS.BUTOFFSET)) - (IRIS.BUT52 (IPLUS 52 IRIS.BUTOFFSET)) - (IRIS.BUT53 (IPLUS 53 IRIS.BUTOFFSET)) - (IRIS.BUT54 (IPLUS 54 IRIS.BUTOFFSET)) - (IRIS.BUT55 (IPLUS 55 IRIS.BUTOFFSET)) - (IRIS.BUT56 (IPLUS 56 IRIS.BUTOFFSET)) - (IRIS.BUT57 (IPLUS 57 IRIS.BUTOFFSET)) - (IRIS.BUT58 (IPLUS 58 IRIS.BUTOFFSET)) - (IRIS.BUT59 (IPLUS 59 IRIS.BUTOFFSET)) - (IRIS.BUT60 (IPLUS 60 IRIS.BUTOFFSET)) - (IRIS.BUT61 (IPLUS 61 IRIS.BUTOFFSET)) - (IRIS.BUT62 (IPLUS 62 IRIS.BUTOFFSET)) - (IRIS.BUT63 (IPLUS 63 IRIS.BUTOFFSET)) - (IRIS.BUT64 (IPLUS 64 IRIS.BUTOFFSET)) - (IRIS.BUT65 (IPLUS 65 IRIS.BUTOFFSET)) - (IRIS.BUT66 (IPLUS 66 IRIS.BUTOFFSET)) - (IRIS.BUT67 (IPLUS 67 IRIS.BUTOFFSET)) - (IRIS.BUT68 (IPLUS 68 IRIS.BUTOFFSET)) - (IRIS.BUT69 (IPLUS 69 IRIS.BUTOFFSET)) - (IRIS.BUT70 (IPLUS 70 IRIS.BUTOFFSET)) - (IRIS.BUT71 (IPLUS 71 IRIS.BUTOFFSET)) - (IRIS.BUT72 (IPLUS 72 IRIS.BUTOFFSET)) - (IRIS.BUT73 (IPLUS 73 IRIS.BUTOFFSET)) - (IRIS.BUT74 (IPLUS 74 IRIS.BUTOFFSET)) - (IRIS.BUT75 (IPLUS 75 IRIS.BUTOFFSET)) - (IRIS.BUT76 (IPLUS 76 IRIS.BUTOFFSET)) - (IRIS.BUT77 (IPLUS 77 IRIS.BUTOFFSET)) - (IRIS.BUT78 (IPLUS 78 IRIS.BUTOFFSET)) - (IRIS.BUT79 (IPLUS 79 IRIS.BUTOFFSET)) - (IRIS.BUT80 (IPLUS 80 IRIS.BUTOFFSET)) - (IRIS.BUT81 (IPLUS 81 IRIS.BUTOFFSET)) - (IRIS.BUT82 (IPLUS 82 IRIS.BUTOFFSET)) - (IRIS.MAXKBDBUT IRIS.BUT82) - (IRIS.BUT100 (IPLUS 100 IRIS.BUTOFFSET)) - (IRIS.BUT101 (IPLUS 101 IRIS.BUTOFFSET)) - (IRIS.BUT102 (IPLUS 102 IRIS.BUTOFFSET)) - (IRIS.BUT103 (IPLUS 103 IRIS.BUTOFFSET)) - (IRIS.BUT104 (IPLUS 104 IRIS.BUTOFFSET)) - (IRIS.BUT105 (IPLUS 105 IRIS.BUTOFFSET)) - (IRIS.BUT106 (IPLUS 106 IRIS.BUTOFFSET)) - (IRIS.BUT107 (IPLUS 107 IRIS.BUTOFFSET)) - (IRIS.BUT108 (IPLUS 108 IRIS.BUTOFFSET)) - (IRIS.BUT109 (IPLUS 109 IRIS.BUTOFFSET)) - (IRIS.BUT110 (IPLUS 110 IRIS.BUTOFFSET)) - (IRIS.BUT111 (IPLUS 111 IRIS.BUTOFFSET)) - (IRIS.BUT112 (IPLUS 112 IRIS.BUTOFFSET)) - (IRIS.BUT113 (IPLUS 113 IRIS.BUTOFFSET)) - (IRIS.BUT114 (IPLUS 114 IRIS.BUTOFFSET)) - (IRIS.BUT115 (IPLUS 115 IRIS.BUTOFFSET)) - (IRIS.BUT116 (IPLUS 116 IRIS.BUTOFFSET)) - (IRIS.BUT117 (IPLUS 117 IRIS.BUTOFFSET)) - (IRIS.BUT118 (IPLUS 118 IRIS.BUTOFFSET)) - (IRIS.BUT119 (IPLUS 119 IRIS.BUTOFFSET)) - (IRIS.BUT120 (IPLUS 120 IRIS.BUTOFFSET)) - (IRIS.BUT121 (IPLUS 121 IRIS.BUTOFFSET)) - (IRIS.BUT122 (IPLUS 122 IRIS.BUTOFFSET)) - (IRIS.BUT123 (IPLUS 123 IRIS.BUTOFFSET)) - (IRIS.BUT124 (IPLUS 124 IRIS.BUTOFFSET)) - (IRIS.BUT125 (IPLUS 125 IRIS.BUTOFFSET)) - (IRIS.BUT126 (IPLUS 126 IRIS.BUTOFFSET)) - (IRIS.BUT127 (IPLUS 127 IRIS.BUTOFFSET)) - (IRIS.BUT128 (IPLUS 128 IRIS.BUTOFFSET)) - (IRIS.BUT129 (IPLUS 129 IRIS.BUTOFFSET)) - (IRIS.BUT130 (IPLUS 130 IRIS.BUTOFFSET)) - (IRIS.BUT131 (IPLUS 131 IRIS.BUTOFFSET)) - (IRIS.BUT132 (IPLUS 132 IRIS.BUTOFFSET)) - (IRIS.BUT133 (IPLUS 133 IRIS.BUTOFFSET)) - (IRIS.BUT134 (IPLUS 134 IRIS.BUTOFFSET)) - (IRIS.BUT135 (IPLUS 135 IRIS.BUTOFFSET)) - (IRIS.BUT136 (IPLUS 136 IRIS.BUTOFFSET)) - (IRIS.BUT137 (IPLUS 137 IRIS.BUTOFFSET)) - (IRIS.BUT138 (IPLUS 138 IRIS.BUTOFFSET)) - (IRIS.BUT139 (IPLUS 139 IRIS.BUTOFFSET)) - (IRIS.BUT140 (IPLUS 140 IRIS.BUTOFFSET)) - (IRIS.BUT141 (IPLUS 141 IRIS.BUTOFFSET)) - (IRIS.MOUSEBUTTON1 IRIS.BUT100) - (IRIS.MOUSEBUTTON2 IRIS.BUT101) - (IRIS.MOUSEBUTTON3 IRIS.BUT102) - (IRIS.MOUSE1 IRIS.BUT100) - (IRIS.MOUSE2 IRIS.BUT101) - (IRIS.MOUSE3 IRIS.BUT102) - (IRIS.LEFTMOUSEBUTTON IRIS.BUT102) - (IRIS.MIDDLEMOUSEBUTTON IRIS.BUT101) - (IRIS.RIGHTMOUSEBUTTON IRIS.BUT100) - (IRIS.LEFTMOUSE IRIS.BUT102) - (IRIS.MIDDLEMOUSE IRIS.BUT101) - (IRIS.RIGHTMOUSE IRIS.BUT100) - (IRIS.LPENBUT 104)) - (* Switches) - (CONSTANTS (IRIS.SWBASE IRIS.BUT110) - (IRIS.SW0 (IPLUS IRIS.SWBASE 0)) - (IRIS.SW1 (IPLUS IRIS.SWBASE 1)) - (IRIS.SW2 (IPLUS IRIS.SWBASE 2)) - (IRIS.SW3 (IPLUS IRIS.SWBASE 3)) - (IRIS.SW4 (IPLUS IRIS.SWBASE 4)) - (IRIS.SW5 (IPLUS IRIS.SWBASE 5)) - (IRIS.SW6 (IPLUS IRIS.SWBASE 6)) - (IRIS.SW7 (IPLUS IRIS.SWBASE 7)) - (IRIS.SW8 (IPLUS IRIS.SWBASE 8)) - (IRIS.SW9 (IPLUS IRIS.SWBASE 9)) - (IRIS.SW10 (IPLUS IRIS.SWBASE 10)) - (IRIS.SW11 (IPLUS IRIS.SWBASE 11)) - (IRIS.SW12 (IPLUS IRIS.SWBASE 12)) - (IRIS.SW13 (IPLUS IRIS.SWBASE 13)) - (IRIS.SW14 (IPLUS IRIS.SWBASE 14)) - (IRIS.SW15 (IPLUS IRIS.SWBASE 15)) - (IRIS.SW16 (IPLUS IRIS.SWBASE 16)) - (IRIS.SW17 (IPLUS IRIS.SWBASE 17)) - (IRIS.SW18 (IPLUS IRIS.SWBASE 18)) - (IRIS.SW19 (IPLUS IRIS.SWBASE 19)) - (IRIS.SW20 (IPLUS IRIS.SWBASE 20)) - (IRIS.SW21 (IPLUS IRIS.SWBASE 21)) - (IRIS.SW22 (IPLUS IRIS.SWBASE 22)) - (IRIS.SW23 (IPLUS IRIS.SWBASE 23)) - (IRIS.SW24 (IPLUS IRIS.SWBASE 24)) - (IRIS.SW25 (IPLUS IRIS.SWBASE 25)) - (IRIS.SW26 (IPLUS IRIS.SWBASE 26)) - (IRIS.SW27 (IPLUS IRIS.SWBASE 27)) - (IRIS.SW28 (IPLUS IRIS.SWBASE 28)) - (IRIS.SW29 (IPLUS IRIS.SWBASE 29)) - (IRIS.SW30 (IPLUS IRIS.SWBASE 30)) - (IRIS.SW31 (IPLUS IRIS.SWBASE 31))) - (* Keys) - (CONSTANTS (IRIS.AKEY IRIS.BUT10) - (IRIS.BKEY IRIS.BUT35) - (IRIS.CKEY IRIS.BUT27) - (IRIS.DKEY IRIS.BUT17) - (IRIS.EKEY IRIS.BUT16) - (IRIS.FKEY IRIS.BUT18) - (IRIS.GKEY IRIS.BUT25) - (IRIS.HKEY IRIS.BUT26) - (IRIS.IKEY IRIS.BUT39) - (IRIS.JKEY IRIS.BUT33) - (IRIS.KKEY IRIS.BUT34) - (IRIS.LKEY IRIS.BUT41) - (IRIS.MKEY IRIS.BUT43) - (IRIS.NKEY IRIS.BUT36) - (IRIS.OKEY IRIS.BUT40) - (IRIS.PKEY IRIS.BUT47) - (IRIS.QKEY IRIS.BUT9) - (IRIS.RKEY IRIS.BUT23) - (IRIS.SKEY IRIS.BUT11) - (IRIS.TKEY IRIS.BUT24) - (IRIS.UKEY IRIS.BUT32) - (IRIS.VKEY IRIS.BUT28) - (IRIS.WKEY IRIS.BUT15) - (IRIS.XKEY IRIS.BUT20) - (IRIS.YKEY IRIS.BUT32) - (IRIS.ZKEY IRIS.BUT19) - (IRIS.ZEROKEY IRIS.BUT45) - (IRIS.ONEKEY IRIS.BUT7) - (IRIS.TWOKEY IRIS.BUT13) - (IRIS.THREEKEY IRIS.BUT14) - (IRIS.FOURKEY IRIS.BUT21) - (IRIS.FIVCEKEY IRIS.BUT22) - (IRIS.SIXKEY IRIS.BUT29) - (IRIS.SEVENKEY IRIS.BUT30) - (IRIS.EIGHTKEY IRIS.BUT37) - (IRIS.NINIKEY IRIS.BUT38) - (IRIS.BREAKKEY IRIS.BUT0) - (IRIS.SETUPKEY IRIS.BUT1) - (IRIS.CNTRLKEY IRIS.BUT2) - (IRIS.CAPSLOCKKEY IRIS.BUT3) - (IRIS.RIGHTSHIFTKEY IRIS.BUT4) - (IRIS.LEFTSHIFTKEY IRIS.BUT5) - (IRIS.NOSCRLKEY IRIS.BUT12) - (IRIS.ESCKEY IRIS.BUT6) - (IRIS.TABKEY IRIS.BUT8) - (IRIS.RETURNKEY IRIS.BUT50) - (IRIS.SPACEKKEY IRIS.BUT82) - (IRIS.LINEFEEDKEY IRIS.BUT59) - (IRIS.BACKSPACEKEY IRIS.BUT60) - (IRIS.DELETEKEY IRIS.BUT61) - (IRIS.SEMICOLONKEY IRIS.BUT42) - (IRIS.PERIODKEY IRIS.BUT51) - (IRIS.COMMAKEY IRIS.BUT44) - (IRIS.QUOTEKEY IRIS.BUT49) - (IRIS.ACCENTGRAVEKEY IRIS.BUT54) - (IRIS.MINUSKEY IRIS.BUT46) - (IRIS.VIRGULEKEY IRIS.BUT52) - (IRIS.BACKSLASHKEY IRIS.BUT56) - (IRIS.EQUALKEY IRIS.BUT53) - (IRIS.LEFTBRACKETKEY IRIS.BUT48) - (IRIS.RIGHTBRACKETKEY IRIS.BUT55) - (IRIS.LEFTARROWKEY IRIS.BUT72) - (IRIS.DOWNARROWKEY IRIS.BUT73) - (IRIS.UPARROWKEY IRIS.BUT80) - (IRIS.PAD0 IRIS.BUT58) - (IRIS.PAD1 IRIS.BUT57) - (IRIS.PAD2 IRIS.BUT63) - (IRIS.PAD3 IRIS.BUT64) - (IRIS.PAD4 IRIS.BUT62) - (IRIS.PAD5 IRIS.BUT68) - (IRIS.PAD6 IRIS.BUT69) - (IRIS.PAD8 IRIS.BUT67) - (IRIS.PAD9 IRIS.BUT74) - (IRIS.PADPF1 IRIS.BUT71) - (IRIS.PADPF2 IRIS.BUT70) - (IRIS.PADPF3 IRIS.BUT78) - (IRIS.PADPF4 IRIS.BUT77) - (IRIS.PADPERIOD IRIS.BUT65) - (IRIS.PADMINUS IRIS.BUT75) - (IRIS.PADCOMMA IRIS.BUT76) - (IRIS.PADENTER IRIS.BUT81)) - (* Screen buttons) - (CONSTANTS (IRIS.SCRBUT0 (IPLUS IRIS.SBTOFFSET 0)) - (IRIS.SCRBUT1 (IPLUS IRIS.SBTOFFSET 1)) - (IRIS.SCRBUT2 (IPLUS IRIS.SBTOFFSET 2)) - (IRIS.SCRBUT3 (IPLUS IRIS.SBTOFFSET 3)) - (IRIS.SCRBUT4 (IPLUS IRIS.SBTOFFSET 4)) - (IRIS.SCRBUT5 (IPLUS IRIS.SBTOFFSET 5)) - (IRIS.SCRBUT6 (IPLUS IRIS.SBTOFFSET 6)) - (IRIS.SCRBUT7 (IPLUS IRIS.SBTOFFSET 7)) - (IRIS.SCRBUT8 (IPLUS IRIS.SBTOFFSET 8)) - (IRIS.SCRBUT9 (IPLUS IRIS.SBTOFFSET 9)) - (IRIS.SCRBUT10 (IPLUS IRIS.SBTOFFSET 10)) - (IRIS.SCRBUT11 (IPLUS IRIS.SBTOFFSET 11)) - (IRIS.SCRBUT12 (IPLUS IRIS.SBTOFFSET 12)) - (IRIS.SCRBUT13 (IPLUS IRIS.SBTOFFSET 13)) - (IRIS.SCRBUT14 (IPLUS IRIS.SBTOFFSET 14)) - (IRIS.SCRBUT15 (IPLUS IRIS.SBTOFFSET 15)) - (IRIS.SCRBUT16 (IPLUS IRIS.SBTOFFSET 16))) - (* Valuators) - (CONSTANTS (IRIS.SGIRESERVED (IPLUS 0 IRIS.VALOFFSET)) - (IRIS.DIAL0 (PLUS 1 IRIS.VALOFFSET)) - (IRIS.DIAL1 (PLUS 2 IRIS.VALOFFSET)) - (IRIS.DIAL2 (PLUS 3 IRIS.VALOFFSET)) - (IRIS.DIAL3 (PLUS 4 IRIS.VALOFFSET)) - (IRIS.DIAL4 (PLUS 5 IRIS.VALOFFSET)) - (IRIS.DIAL5 (PLUS 6 IRIS.VALOFFSET)) - (IRIS.DIAL6 (PLUS 7 IRIS.VALOFFSET)) - (IRIS.DIAL7 (PLUS 8 IRIS.VALOFFSET)) - (IRIS.DIAL8 (PLUS 9 IRIS.VALOFFSET)) - (IRIS.MOUSEX (PLUS 10 IRIS.VALOFFSET)) - (IRIS.MOUSEY (PLUS 11 IRIS.VALOFFSET)) - (IRIS.LPENX (PLUS 12 IRIS.VALOFFSET)) - (IRIS.PLENY (PLUS 13 IRIS.VALOFFSET)) - (IRIS.NULLX (PLUS 14 IRIS.VALOFFSET)) - (IRIS.NULLY (PLUS 15 IRIS.VALOFFSET))) - (* Timers) - (CONSTANTS (IRIS.TIMER0 (IPLUS IRIS.TIMOFFSET 0)) - (IRIS.TIMER1 (IPLUS IRIS.TIMOFFSET 1)) - (IRIS.TIMER2 (IPLUS IRIS.TIMOFFSET 2)) - (IRIS.TIMER3 (IPLUS IRIS.TIMOFFSET 3)) - (IRIS.TIMER4 (IPLUS IRIS.TIMOFFSET 4)) - (IRIS.TIMER5 (IPLUS IRIS.TIMOFFSET 5)) - (IRIS.TIMER6 (IPLUS IRIS.TIMOFFSET 6)) - (IRIS.TIMER7 (IPLUS IRIS.TIMOFFSET 7))) - (* Misc devices) - (CONSTANTS (IRIS.KEYBD (IPLUS 1 IRIS.KEYOFFSET)) - (IRIS.CURSORX 526) - (* cursor x pseudo valuator) - (IRIS.CURSORY 527) - (* cursor y pseudo valuator) - (IRIS.VALMARK 523) - (* valuator mark) - (IRIS.GERROR 524) - (* errors device) - (IRIS.REDRAW 528) - (* used by port manager to signal redraws) - (IRIS.WMSEND 529) - (* data in proc's shmem) - (IRIS.WMREPLY 530) - (* reply from port manager) - (IRIS.WMGFCLOSE 531) - (* gf # is no longer being used) - (IRIS.WMTXCLOSE 532) - (* tx # is no longer being used) - (IRIS.MODECHANGE 533) - (* the display mode has changed) - (IRIS.INPUTCHANGE 534) - (* input connected or disconnected) - (IRIS.QFULL 535) - (* queue was filled)) - (* * get.h) - (* Values returned by IRIS.GETBUFFER) - (CONSTANTS (IRIS.NEITHERBUFFER 0) - (IRIS.BACKBUFFER 1) - (IRIS.FRONTBUFFER 2) - (IRIS.BOTHBUFFERS 3) - (IRIS.NOBUFFER 0) - (IRIS.BCKBUFFER 1) - (IRIS.FRNTBUFFER 2)) - (* Values returned by IRIS.GETCMMODE) - (CONSTANTS (IRIS.MULTIMAP 0) - (IRIS.ONEMAP 1) - (IRIS.CMAPMULTI 0) - (IRIS.CMAPONE 1)) - (* Values returned by IRIS.GETDISPLAYMODE) - (CONSTANTS (IRIS.RGBMODE 0) - (IRIS.SINGLEBUFFER 1) - (IRIS.DOUBLEBUFFER 2) - (IRIS.DMRGB 0) - (IRIS.DMSINGLE 1) - (IRIS.DMDOUBLE 2)) - (* Values returned by IRIS.GETDISPLAYMODE) - (CONSTANTS (IRIS.HZ30 0) - (IRIS.HZ60 1) - (IRIS.NTSC 2) - (IRIS.PAL 2) - (IRIS.HZ50 3) - (IRIS.MONA 5) - (IRIS.MONB 6) - (IRIS.MONC 7) - (IRIS.MOND 8) - (IRIS.MONSPECIAL 16)) - (* Individual hit bits returned by IRIS.HITCODE) - (CONSTANTS (IRIS.LEFTPLANE 1) - (IRIS.RIGHTPLANE 2) - (IRIS.BOTTOMPLANE 4) - (IRIS.TOPPLANE 8) - (IRIS.NEARPLANE 16) - (IRIS.FARPLANE 32)) - (* * constants for rotation) - (CONSTANTS (IRIS.XAXIS (CHARCODE X)) - (IRIS.YAXIS (CHARCODE Y)) - (IRIS.ZAXIS (CHARCODE Z))) - (* * Other stuff) - (* Approximate interval between retraces in milliseconds) - (CONSTANTS (IRIS.RETRACEINTERVAL 33.33333]) - (* * gl.h) - - - - -(* Maximum X and Y screen coordinates) - -(DECLARE: EVAL@COMPILE - -(RPAQQ IRIS.XMAXSCREEN 1023) - -(RPAQQ IRIS.YMAXSCREEN 767) - -(CONSTANTS (IRIS.XMAXSCREEN 1023) - (IRIS.YMAXSCREEN 767)) -) - - - -(* Various hardware/software limits) - -(DECLARE: EVAL@COMPILE - -(RPAQQ IRIS.ATTRIBSTACKDEPTH 10) - -(RPAQQ IRIS.VPSTACKDEPTH 8) - -(RPAQQ IRIS.MATRIXSTACKDEPTH 32) - -(RPAQQ IRIS.STARTTAG -2) - -(RPAQQ IRIS.ENDTAG -3) - -(CONSTANTS (IRIS.ATTRIBSTACKDEPTH 10) - (IRIS.VPSTACKDEPTH 8) - (IRIS.MATRIXSTACKDEPTH 32) - (IRIS.STARTTAG -2) - (IRIS.ENDTAG -3)) -) - - - -(* Name for colors in color map loaded by IRIS.GINIT) - -(DECLARE: EVAL@COMPILE - -(RPAQQ IRIS.BACKGROUND 0) - -(RPAQQ IRIS.BLACK 0) - -(RPAQQ IRIS.RED 1) - -(RPAQQ IRIS.GREEN 2) - -(RPAQQ IRIS.YELLOW 3) - -(RPAQQ IRIS.BLUE 4) - -(RPAQQ IRIS.MAGENTA 5) - -(RPAQQ IRIS.CYAN 6) - -(RPAQQ IRIS.WHITE 7) - -(CONSTANTS (IRIS.BACKGROUND 0) - (IRIS.BLACK 0) - (IRIS.RED 1) - (IRIS.GREEN 2) - (IRIS.YELLOW 3) - (IRIS.BLUE 4) - (IRIS.MAGENTA 5) - (IRIS.CYAN 6) - (IRIS.WHITE 7)) -) - (* * device.h) - - - - -(* Macros to test valuator and button numbers) - -(DECLARE: EVAL@COMPILE -[PUTPROPS IRIS.ISBUTTON MACRO ((b) - (AND (GEQ b IRIS.BUTOFFSET) - (LESSP b (PLUS IRIS.BUTCOUNT IRIS.BUTOFFSET] -[PUTPROPS IRIS.ISSCRBUTTON MACRO ((b) - (AND (GEQ b IRIS.SBTOFFSET) - (LESSP b (IPLUS IRIS.SBTCOUNT IRIS.SBTOFFSET] -[PUTPROPS IRIS.ISVALUATOR MACRO ((v) - (AND (GEQ v IRIS.VALOFFSET) - (LESSP v (IPLUS IRIS.VALCOUNT IRIS.VALOFFSET] -[PUTPROPS IRIS.ISTIMER MACRO ((t) - (AND (GEQ t IRIS.TIMOFFSET) - (LESSP t (IPLUS IRIS.TIMCOUNT IRIS.TIMOFFSET] -[PUTPROPS IRIS.ISDIAL MACRO ((t) - (AND (GEQ t IRIS.DIAL0) - (LEQ t IRIS.DIAL8] -[PUTPROPS IRIS.ISLPEN MACRO ((t) - (OR (EQP t IRIS.LPENX) - (EQP t IRIS.LPENY] -(PUTPROPS IRIS.ISLPENBUT MACRO ((t) - (EQP t IRIS.LPENBUT))) -) - - - -(* Include file with device definitions) - -(DECLARE: EVAL@COMPILE - -(RPAQQ IRIS.NULLDEV 0) - -(RPAQQ IRIS.BUTOFFSET 1) - -(RPAQQ IRIS.SBTOFFSET 200) - -(RPAQQ IRIS.VALOFFSET 256) - -(RPAQQ IRIS.KEYOFFSET 512) - -(RPAQQ IRIS.TIMOFFSET 515) - -(RPAQQ IRIS.BUTCOUNT 144) - -(RPAQQ IRIS.SBTCOUNT 16) - -(RPAQQ IRIS.VALCOUNT 14) - -(RPAQQ IRIS.TIMCOUNT 8) - -(CONSTANTS (IRIS.NULLDEV 0) - (IRIS.BUTOFFSET 1) - (IRIS.SBTOFFSET 200) - (IRIS.VALOFFSET 256) - (IRIS.KEYOFFSET 512) - (IRIS.TIMOFFSET 515) - (IRIS.BUTCOUNT 144) - (IRIS.SBTCOUNT 16) - (IRIS.VALCOUNT 14) - (IRIS.TIMCOUNT 8)) -) - - - -(* Buttons) - -(DECLARE: EVAL@COMPILE - -(RPAQ IRIS.BUT0 (IPLUS 0 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT1 (IPLUS 1 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT2 (IPLUS 2 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT3 (IPLUS 3 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT4 (IPLUS 4 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT5 (IPLUS 5 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT6 (IPLUS 6 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT7 (IPLUS 7 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT8 (IPLUS 8 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT9 (IPLUS 9 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT10 (IPLUS 10 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT11 (IPLUS 11 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT12 (IPLUS 12 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT13 (IPLUS 13 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT14 (IPLUS 14 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT15 (IPLUS 15 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT16 (IPLUS 16 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT17 (IPLUS 17 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT18 (IPLUS 18 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT19 (IPLUS 19 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT20 (IPLUS 20 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT21 (IPLUS 21 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT22 (IPLUS 22 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT23 (IPLUS 23 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT24 (IPLUS 24 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT25 (IPLUS 25 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT26 (IPLUS 26 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT27 (IPLUS 27 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT28 (IPLUS 28 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT29 (IPLUS 29 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT30 (IPLUS 30 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT31 (IPLUS 31 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT32 (IPLUS 32 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT33 (IPLUS 33 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT34 (IPLUS 34 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT35 (IPLUS 35 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT36 (IPLUS 36 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT37 (IPLUS 37 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT38 (IPLUS 38 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT39 (IPLUS 39 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT40 (IPLUS 40 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT41 (IPLUS 41 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT42 (IPLUS 42 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT43 (IPLUS 43 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT44 (IPLUS 44 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT45 (IPLUS 45 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT46 (IPLUS 46 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT47 (IPLUS 47 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT48 (IPLUS 48 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT49 (IPLUS 49 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT50 (IPLUS 50 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT51 (IPLUS 51 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT52 (IPLUS 52 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT53 (IPLUS 53 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT54 (IPLUS 54 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT55 (IPLUS 55 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT56 (IPLUS 56 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT57 (IPLUS 57 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT58 (IPLUS 58 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT59 (IPLUS 59 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT60 (IPLUS 60 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT61 (IPLUS 61 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT62 (IPLUS 62 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT63 (IPLUS 63 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT64 (IPLUS 64 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT65 (IPLUS 65 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT66 (IPLUS 66 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT67 (IPLUS 67 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT68 (IPLUS 68 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT69 (IPLUS 69 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT70 (IPLUS 70 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT71 (IPLUS 71 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT72 (IPLUS 72 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT73 (IPLUS 73 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT74 (IPLUS 74 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT75 (IPLUS 75 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT76 (IPLUS 76 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT77 (IPLUS 77 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT78 (IPLUS 78 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT79 (IPLUS 79 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT80 (IPLUS 80 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT81 (IPLUS 81 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT82 (IPLUS 82 IRIS.BUTOFFSET)) - -(RPAQ IRIS.MAXKBDBUT IRIS.BUT82) - -(RPAQ IRIS.BUT100 (IPLUS 100 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT101 (IPLUS 101 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT102 (IPLUS 102 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT103 (IPLUS 103 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT104 (IPLUS 104 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT105 (IPLUS 105 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT106 (IPLUS 106 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT107 (IPLUS 107 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT108 (IPLUS 108 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT109 (IPLUS 109 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT110 (IPLUS 110 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT111 (IPLUS 111 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT112 (IPLUS 112 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT113 (IPLUS 113 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT114 (IPLUS 114 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT115 (IPLUS 115 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT116 (IPLUS 116 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT117 (IPLUS 117 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT118 (IPLUS 118 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT119 (IPLUS 119 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT120 (IPLUS 120 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT121 (IPLUS 121 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT122 (IPLUS 122 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT123 (IPLUS 123 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT124 (IPLUS 124 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT125 (IPLUS 125 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT126 (IPLUS 126 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT127 (IPLUS 127 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT128 (IPLUS 128 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT129 (IPLUS 129 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT130 (IPLUS 130 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT131 (IPLUS 131 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT132 (IPLUS 132 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT133 (IPLUS 133 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT134 (IPLUS 134 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT135 (IPLUS 135 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT136 (IPLUS 136 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT137 (IPLUS 137 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT138 (IPLUS 138 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT139 (IPLUS 139 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT140 (IPLUS 140 IRIS.BUTOFFSET)) - -(RPAQ IRIS.BUT141 (IPLUS 141 IRIS.BUTOFFSET)) - -(RPAQ IRIS.MOUSEBUTTON1 IRIS.BUT100) - -(RPAQ IRIS.MOUSEBUTTON2 IRIS.BUT101) - -(RPAQ IRIS.MOUSEBUTTON3 IRIS.BUT102) - -(RPAQ IRIS.MOUSE1 IRIS.BUT100) - -(RPAQ IRIS.MOUSE2 IRIS.BUT101) - -(RPAQ IRIS.MOUSE3 IRIS.BUT102) - -(RPAQ IRIS.LEFTMOUSEBUTTON IRIS.BUT102) - -(RPAQ IRIS.MIDDLEMOUSEBUTTON IRIS.BUT101) - -(RPAQ IRIS.RIGHTMOUSEBUTTON IRIS.BUT100) - -(RPAQ IRIS.LEFTMOUSE IRIS.BUT102) - -(RPAQ IRIS.MIDDLEMOUSE IRIS.BUT101) - -(RPAQ IRIS.RIGHTMOUSE IRIS.BUT100) - -(RPAQQ IRIS.LPENBUT 104) - -(CONSTANTS (IRIS.BUT0 (IPLUS 0 IRIS.BUTOFFSET)) - (IRIS.BUT1 (IPLUS 1 IRIS.BUTOFFSET)) - (IRIS.BUT2 (IPLUS 2 IRIS.BUTOFFSET)) - (IRIS.BUT3 (IPLUS 3 IRIS.BUTOFFSET)) - (IRIS.BUT4 (IPLUS 4 IRIS.BUTOFFSET)) - (IRIS.BUT5 (IPLUS 5 IRIS.BUTOFFSET)) - (IRIS.BUT6 (IPLUS 6 IRIS.BUTOFFSET)) - (IRIS.BUT7 (IPLUS 7 IRIS.BUTOFFSET)) - (IRIS.BUT8 (IPLUS 8 IRIS.BUTOFFSET)) - (IRIS.BUT9 (IPLUS 9 IRIS.BUTOFFSET)) - (IRIS.BUT10 (IPLUS 10 IRIS.BUTOFFSET)) - (IRIS.BUT11 (IPLUS 11 IRIS.BUTOFFSET)) - (IRIS.BUT12 (IPLUS 12 IRIS.BUTOFFSET)) - (IRIS.BUT13 (IPLUS 13 IRIS.BUTOFFSET)) - (IRIS.BUT14 (IPLUS 14 IRIS.BUTOFFSET)) - (IRIS.BUT15 (IPLUS 15 IRIS.BUTOFFSET)) - (IRIS.BUT16 (IPLUS 16 IRIS.BUTOFFSET)) - (IRIS.BUT17 (IPLUS 17 IRIS.BUTOFFSET)) - (IRIS.BUT18 (IPLUS 18 IRIS.BUTOFFSET)) - (IRIS.BUT19 (IPLUS 19 IRIS.BUTOFFSET)) - (IRIS.BUT20 (IPLUS 20 IRIS.BUTOFFSET)) - (IRIS.BUT21 (IPLUS 21 IRIS.BUTOFFSET)) - (IRIS.BUT22 (IPLUS 22 IRIS.BUTOFFSET)) - (IRIS.BUT23 (IPLUS 23 IRIS.BUTOFFSET)) - (IRIS.BUT24 (IPLUS 24 IRIS.BUTOFFSET)) - (IRIS.BUT25 (IPLUS 25 IRIS.BUTOFFSET)) - (IRIS.BUT26 (IPLUS 26 IRIS.BUTOFFSET)) - (IRIS.BUT27 (IPLUS 27 IRIS.BUTOFFSET)) - (IRIS.BUT28 (IPLUS 28 IRIS.BUTOFFSET)) - (IRIS.BUT29 (IPLUS 29 IRIS.BUTOFFSET)) - (IRIS.BUT30 (IPLUS 30 IRIS.BUTOFFSET)) - (IRIS.BUT31 (IPLUS 31 IRIS.BUTOFFSET)) - (IRIS.BUT32 (IPLUS 32 IRIS.BUTOFFSET)) - (IRIS.BUT33 (IPLUS 33 IRIS.BUTOFFSET)) - (IRIS.BUT34 (IPLUS 34 IRIS.BUTOFFSET)) - (IRIS.BUT35 (IPLUS 35 IRIS.BUTOFFSET)) - (IRIS.BUT36 (IPLUS 36 IRIS.BUTOFFSET)) - (IRIS.BUT37 (IPLUS 37 IRIS.BUTOFFSET)) - (IRIS.BUT38 (IPLUS 38 IRIS.BUTOFFSET)) - (IRIS.BUT39 (IPLUS 39 IRIS.BUTOFFSET)) - (IRIS.BUT40 (IPLUS 40 IRIS.BUTOFFSET)) - (IRIS.BUT41 (IPLUS 41 IRIS.BUTOFFSET)) - (IRIS.BUT42 (IPLUS 42 IRIS.BUTOFFSET)) - (IRIS.BUT43 (IPLUS 43 IRIS.BUTOFFSET)) - (IRIS.BUT44 (IPLUS 44 IRIS.BUTOFFSET)) - (IRIS.BUT45 (IPLUS 45 IRIS.BUTOFFSET)) - (IRIS.BUT46 (IPLUS 46 IRIS.BUTOFFSET)) - (IRIS.BUT47 (IPLUS 47 IRIS.BUTOFFSET)) - (IRIS.BUT48 (IPLUS 48 IRIS.BUTOFFSET)) - (IRIS.BUT49 (IPLUS 49 IRIS.BUTOFFSET)) - (IRIS.BUT50 (IPLUS 50 IRIS.BUTOFFSET)) - (IRIS.BUT51 (IPLUS 51 IRIS.BUTOFFSET)) - (IRIS.BUT52 (IPLUS 52 IRIS.BUTOFFSET)) - (IRIS.BUT53 (IPLUS 53 IRIS.BUTOFFSET)) - (IRIS.BUT54 (IPLUS 54 IRIS.BUTOFFSET)) - (IRIS.BUT55 (IPLUS 55 IRIS.BUTOFFSET)) - (IRIS.BUT56 (IPLUS 56 IRIS.BUTOFFSET)) - (IRIS.BUT57 (IPLUS 57 IRIS.BUTOFFSET)) - (IRIS.BUT58 (IPLUS 58 IRIS.BUTOFFSET)) - (IRIS.BUT59 (IPLUS 59 IRIS.BUTOFFSET)) - (IRIS.BUT60 (IPLUS 60 IRIS.BUTOFFSET)) - (IRIS.BUT61 (IPLUS 61 IRIS.BUTOFFSET)) - (IRIS.BUT62 (IPLUS 62 IRIS.BUTOFFSET)) - (IRIS.BUT63 (IPLUS 63 IRIS.BUTOFFSET)) - (IRIS.BUT64 (IPLUS 64 IRIS.BUTOFFSET)) - (IRIS.BUT65 (IPLUS 65 IRIS.BUTOFFSET)) - (IRIS.BUT66 (IPLUS 66 IRIS.BUTOFFSET)) - (IRIS.BUT67 (IPLUS 67 IRIS.BUTOFFSET)) - (IRIS.BUT68 (IPLUS 68 IRIS.BUTOFFSET)) - (IRIS.BUT69 (IPLUS 69 IRIS.BUTOFFSET)) - (IRIS.BUT70 (IPLUS 70 IRIS.BUTOFFSET)) - (IRIS.BUT71 (IPLUS 71 IRIS.BUTOFFSET)) - (IRIS.BUT72 (IPLUS 72 IRIS.BUTOFFSET)) - (IRIS.BUT73 (IPLUS 73 IRIS.BUTOFFSET)) - (IRIS.BUT74 (IPLUS 74 IRIS.BUTOFFSET)) - (IRIS.BUT75 (IPLUS 75 IRIS.BUTOFFSET)) - (IRIS.BUT76 (IPLUS 76 IRIS.BUTOFFSET)) - (IRIS.BUT77 (IPLUS 77 IRIS.BUTOFFSET)) - (IRIS.BUT78 (IPLUS 78 IRIS.BUTOFFSET)) - (IRIS.BUT79 (IPLUS 79 IRIS.BUTOFFSET)) - (IRIS.BUT80 (IPLUS 80 IRIS.BUTOFFSET)) - (IRIS.BUT81 (IPLUS 81 IRIS.BUTOFFSET)) - (IRIS.BUT82 (IPLUS 82 IRIS.BUTOFFSET)) - (IRIS.MAXKBDBUT IRIS.BUT82) - (IRIS.BUT100 (IPLUS 100 IRIS.BUTOFFSET)) - (IRIS.BUT101 (IPLUS 101 IRIS.BUTOFFSET)) - (IRIS.BUT102 (IPLUS 102 IRIS.BUTOFFSET)) - (IRIS.BUT103 (IPLUS 103 IRIS.BUTOFFSET)) - (IRIS.BUT104 (IPLUS 104 IRIS.BUTOFFSET)) - (IRIS.BUT105 (IPLUS 105 IRIS.BUTOFFSET)) - (IRIS.BUT106 (IPLUS 106 IRIS.BUTOFFSET)) - (IRIS.BUT107 (IPLUS 107 IRIS.BUTOFFSET)) - (IRIS.BUT108 (IPLUS 108 IRIS.BUTOFFSET)) - (IRIS.BUT109 (IPLUS 109 IRIS.BUTOFFSET)) - (IRIS.BUT110 (IPLUS 110 IRIS.BUTOFFSET)) - (IRIS.BUT111 (IPLUS 111 IRIS.BUTOFFSET)) - (IRIS.BUT112 (IPLUS 112 IRIS.BUTOFFSET)) - (IRIS.BUT113 (IPLUS 113 IRIS.BUTOFFSET)) - (IRIS.BUT114 (IPLUS 114 IRIS.BUTOFFSET)) - (IRIS.BUT115 (IPLUS 115 IRIS.BUTOFFSET)) - (IRIS.BUT116 (IPLUS 116 IRIS.BUTOFFSET)) - (IRIS.BUT117 (IPLUS 117 IRIS.BUTOFFSET)) - (IRIS.BUT118 (IPLUS 118 IRIS.BUTOFFSET)) - (IRIS.BUT119 (IPLUS 119 IRIS.BUTOFFSET)) - (IRIS.BUT120 (IPLUS 120 IRIS.BUTOFFSET)) - (IRIS.BUT121 (IPLUS 121 IRIS.BUTOFFSET)) - (IRIS.BUT122 (IPLUS 122 IRIS.BUTOFFSET)) - (IRIS.BUT123 (IPLUS 123 IRIS.BUTOFFSET)) - (IRIS.BUT124 (IPLUS 124 IRIS.BUTOFFSET)) - (IRIS.BUT125 (IPLUS 125 IRIS.BUTOFFSET)) - (IRIS.BUT126 (IPLUS 126 IRIS.BUTOFFSET)) - (IRIS.BUT127 (IPLUS 127 IRIS.BUTOFFSET)) - (IRIS.BUT128 (IPLUS 128 IRIS.BUTOFFSET)) - (IRIS.BUT129 (IPLUS 129 IRIS.BUTOFFSET)) - (IRIS.BUT130 (IPLUS 130 IRIS.BUTOFFSET)) - (IRIS.BUT131 (IPLUS 131 IRIS.BUTOFFSET)) - (IRIS.BUT132 (IPLUS 132 IRIS.BUTOFFSET)) - (IRIS.BUT133 (IPLUS 133 IRIS.BUTOFFSET)) - (IRIS.BUT134 (IPLUS 134 IRIS.BUTOFFSET)) - (IRIS.BUT135 (IPLUS 135 IRIS.BUTOFFSET)) - (IRIS.BUT136 (IPLUS 136 IRIS.BUTOFFSET)) - (IRIS.BUT137 (IPLUS 137 IRIS.BUTOFFSET)) - (IRIS.BUT138 (IPLUS 138 IRIS.BUTOFFSET)) - (IRIS.BUT139 (IPLUS 139 IRIS.BUTOFFSET)) - (IRIS.BUT140 (IPLUS 140 IRIS.BUTOFFSET)) - (IRIS.BUT141 (IPLUS 141 IRIS.BUTOFFSET)) - (IRIS.MOUSEBUTTON1 IRIS.BUT100) - (IRIS.MOUSEBUTTON2 IRIS.BUT101) - (IRIS.MOUSEBUTTON3 IRIS.BUT102) - (IRIS.MOUSE1 IRIS.BUT100) - (IRIS.MOUSE2 IRIS.BUT101) - (IRIS.MOUSE3 IRIS.BUT102) - (IRIS.LEFTMOUSEBUTTON IRIS.BUT102) - (IRIS.MIDDLEMOUSEBUTTON IRIS.BUT101) - (IRIS.RIGHTMOUSEBUTTON IRIS.BUT100) - (IRIS.LEFTMOUSE IRIS.BUT102) - (IRIS.MIDDLEMOUSE IRIS.BUT101) - (IRIS.RIGHTMOUSE IRIS.BUT100) - (IRIS.LPENBUT 104)) -) - - - -(* Switches) - -(DECLARE: EVAL@COMPILE - -(RPAQ IRIS.SWBASE IRIS.BUT110) - -(RPAQ IRIS.SW0 (IPLUS IRIS.SWBASE 0)) - -(RPAQ IRIS.SW1 (IPLUS IRIS.SWBASE 1)) - -(RPAQ IRIS.SW2 (IPLUS IRIS.SWBASE 2)) - -(RPAQ IRIS.SW3 (IPLUS IRIS.SWBASE 3)) - -(RPAQ IRIS.SW4 (IPLUS IRIS.SWBASE 4)) - -(RPAQ IRIS.SW5 (IPLUS IRIS.SWBASE 5)) - -(RPAQ IRIS.SW6 (IPLUS IRIS.SWBASE 6)) - -(RPAQ IRIS.SW7 (IPLUS IRIS.SWBASE 7)) - -(RPAQ IRIS.SW8 (IPLUS IRIS.SWBASE 8)) - -(RPAQ IRIS.SW9 (IPLUS IRIS.SWBASE 9)) - -(RPAQ IRIS.SW10 (IPLUS IRIS.SWBASE 10)) - -(RPAQ IRIS.SW11 (IPLUS IRIS.SWBASE 11)) - -(RPAQ IRIS.SW12 (IPLUS IRIS.SWBASE 12)) - -(RPAQ IRIS.SW13 (IPLUS IRIS.SWBASE 13)) - -(RPAQ IRIS.SW14 (IPLUS IRIS.SWBASE 14)) - -(RPAQ IRIS.SW15 (IPLUS IRIS.SWBASE 15)) - -(RPAQ IRIS.SW16 (IPLUS IRIS.SWBASE 16)) - -(RPAQ IRIS.SW17 (IPLUS IRIS.SWBASE 17)) - -(RPAQ IRIS.SW18 (IPLUS IRIS.SWBASE 18)) - -(RPAQ IRIS.SW19 (IPLUS IRIS.SWBASE 19)) - -(RPAQ IRIS.SW20 (IPLUS IRIS.SWBASE 20)) - -(RPAQ IRIS.SW21 (IPLUS IRIS.SWBASE 21)) - -(RPAQ IRIS.SW22 (IPLUS IRIS.SWBASE 22)) - -(RPAQ IRIS.SW23 (IPLUS IRIS.SWBASE 23)) - -(RPAQ IRIS.SW24 (IPLUS IRIS.SWBASE 24)) - -(RPAQ IRIS.SW25 (IPLUS IRIS.SWBASE 25)) - -(RPAQ IRIS.SW26 (IPLUS IRIS.SWBASE 26)) - -(RPAQ IRIS.SW27 (IPLUS IRIS.SWBASE 27)) - -(RPAQ IRIS.SW28 (IPLUS IRIS.SWBASE 28)) - -(RPAQ IRIS.SW29 (IPLUS IRIS.SWBASE 29)) - -(RPAQ IRIS.SW30 (IPLUS IRIS.SWBASE 30)) - -(RPAQ IRIS.SW31 (IPLUS IRIS.SWBASE 31)) - -(CONSTANTS (IRIS.SWBASE IRIS.BUT110) - (IRIS.SW0 (IPLUS IRIS.SWBASE 0)) - (IRIS.SW1 (IPLUS IRIS.SWBASE 1)) - (IRIS.SW2 (IPLUS IRIS.SWBASE 2)) - (IRIS.SW3 (IPLUS IRIS.SWBASE 3)) - (IRIS.SW4 (IPLUS IRIS.SWBASE 4)) - (IRIS.SW5 (IPLUS IRIS.SWBASE 5)) - (IRIS.SW6 (IPLUS IRIS.SWBASE 6)) - (IRIS.SW7 (IPLUS IRIS.SWBASE 7)) - (IRIS.SW8 (IPLUS IRIS.SWBASE 8)) - (IRIS.SW9 (IPLUS IRIS.SWBASE 9)) - (IRIS.SW10 (IPLUS IRIS.SWBASE 10)) - (IRIS.SW11 (IPLUS IRIS.SWBASE 11)) - (IRIS.SW12 (IPLUS IRIS.SWBASE 12)) - (IRIS.SW13 (IPLUS IRIS.SWBASE 13)) - (IRIS.SW14 (IPLUS IRIS.SWBASE 14)) - (IRIS.SW15 (IPLUS IRIS.SWBASE 15)) - (IRIS.SW16 (IPLUS IRIS.SWBASE 16)) - (IRIS.SW17 (IPLUS IRIS.SWBASE 17)) - (IRIS.SW18 (IPLUS IRIS.SWBASE 18)) - (IRIS.SW19 (IPLUS IRIS.SWBASE 19)) - (IRIS.SW20 (IPLUS IRIS.SWBASE 20)) - (IRIS.SW21 (IPLUS IRIS.SWBASE 21)) - (IRIS.SW22 (IPLUS IRIS.SWBASE 22)) - (IRIS.SW23 (IPLUS IRIS.SWBASE 23)) - (IRIS.SW24 (IPLUS IRIS.SWBASE 24)) - (IRIS.SW25 (IPLUS IRIS.SWBASE 25)) - (IRIS.SW26 (IPLUS IRIS.SWBASE 26)) - (IRIS.SW27 (IPLUS IRIS.SWBASE 27)) - (IRIS.SW28 (IPLUS IRIS.SWBASE 28)) - (IRIS.SW29 (IPLUS IRIS.SWBASE 29)) - (IRIS.SW30 (IPLUS IRIS.SWBASE 30)) - (IRIS.SW31 (IPLUS IRIS.SWBASE 31))) -) - - - -(* Keys) - -(DECLARE: EVAL@COMPILE - -(RPAQ IRIS.AKEY IRIS.BUT10) - -(RPAQ IRIS.BKEY IRIS.BUT35) - -(RPAQ IRIS.CKEY IRIS.BUT27) - -(RPAQ IRIS.DKEY IRIS.BUT17) - -(RPAQ IRIS.EKEY IRIS.BUT16) - -(RPAQ IRIS.FKEY IRIS.BUT18) - -(RPAQ IRIS.GKEY IRIS.BUT25) - -(RPAQ IRIS.HKEY IRIS.BUT26) - -(RPAQ IRIS.IKEY IRIS.BUT39) - -(RPAQ IRIS.JKEY IRIS.BUT33) - -(RPAQ IRIS.KKEY IRIS.BUT34) - -(RPAQ IRIS.LKEY IRIS.BUT41) - -(RPAQ IRIS.MKEY IRIS.BUT43) - -(RPAQ IRIS.NKEY IRIS.BUT36) - -(RPAQ IRIS.OKEY IRIS.BUT40) - -(RPAQ IRIS.PKEY IRIS.BUT47) - -(RPAQ IRIS.QKEY IRIS.BUT9) - -(RPAQ IRIS.RKEY IRIS.BUT23) - -(RPAQ IRIS.SKEY IRIS.BUT11) - -(RPAQ IRIS.TKEY IRIS.BUT24) - -(RPAQ IRIS.UKEY IRIS.BUT32) - -(RPAQ IRIS.VKEY IRIS.BUT28) - -(RPAQ IRIS.WKEY IRIS.BUT15) - -(RPAQ IRIS.XKEY IRIS.BUT20) - -(RPAQ IRIS.YKEY IRIS.BUT32) - -(RPAQ IRIS.ZKEY IRIS.BUT19) - -(RPAQ IRIS.ZEROKEY IRIS.BUT45) - -(RPAQ IRIS.ONEKEY IRIS.BUT7) - -(RPAQ IRIS.TWOKEY IRIS.BUT13) - -(RPAQ IRIS.THREEKEY IRIS.BUT14) - -(RPAQ IRIS.FOURKEY IRIS.BUT21) - -(RPAQ IRIS.FIVCEKEY IRIS.BUT22) - -(RPAQ IRIS.SIXKEY IRIS.BUT29) - -(RPAQ IRIS.SEVENKEY IRIS.BUT30) - -(RPAQ IRIS.EIGHTKEY IRIS.BUT37) - -(RPAQ IRIS.NINIKEY IRIS.BUT38) - -(RPAQ IRIS.BREAKKEY IRIS.BUT0) - -(RPAQ IRIS.SETUPKEY IRIS.BUT1) - -(RPAQ IRIS.CNTRLKEY IRIS.BUT2) - -(RPAQ IRIS.CAPSLOCKKEY IRIS.BUT3) - -(RPAQ IRIS.RIGHTSHIFTKEY IRIS.BUT4) - -(RPAQ IRIS.LEFTSHIFTKEY IRIS.BUT5) - -(RPAQ IRIS.NOSCRLKEY IRIS.BUT12) - -(RPAQ IRIS.ESCKEY IRIS.BUT6) - -(RPAQ IRIS.TABKEY IRIS.BUT8) - -(RPAQ IRIS.RETURNKEY IRIS.BUT50) - -(RPAQ IRIS.SPACEKKEY IRIS.BUT82) - -(RPAQ IRIS.LINEFEEDKEY IRIS.BUT59) - -(RPAQ IRIS.BACKSPACEKEY IRIS.BUT60) - -(RPAQ IRIS.DELETEKEY IRIS.BUT61) - -(RPAQ IRIS.SEMICOLONKEY IRIS.BUT42) - -(RPAQ IRIS.PERIODKEY IRIS.BUT51) - -(RPAQ IRIS.COMMAKEY IRIS.BUT44) - -(RPAQ IRIS.QUOTEKEY IRIS.BUT49) - -(RPAQ IRIS.ACCENTGRAVEKEY IRIS.BUT54) - -(RPAQ IRIS.MINUSKEY IRIS.BUT46) - -(RPAQ IRIS.VIRGULEKEY IRIS.BUT52) - -(RPAQ IRIS.BACKSLASHKEY IRIS.BUT56) - -(RPAQ IRIS.EQUALKEY IRIS.BUT53) - -(RPAQ IRIS.LEFTBRACKETKEY IRIS.BUT48) - -(RPAQ IRIS.RIGHTBRACKETKEY IRIS.BUT55) - -(RPAQ IRIS.LEFTARROWKEY IRIS.BUT72) - -(RPAQ IRIS.DOWNARROWKEY IRIS.BUT73) - -(RPAQ IRIS.UPARROWKEY IRIS.BUT80) - -(RPAQ IRIS.PAD0 IRIS.BUT58) - -(RPAQ IRIS.PAD1 IRIS.BUT57) - -(RPAQ IRIS.PAD2 IRIS.BUT63) - -(RPAQ IRIS.PAD3 IRIS.BUT64) - -(RPAQ IRIS.PAD4 IRIS.BUT62) - -(RPAQ IRIS.PAD5 IRIS.BUT68) - -(RPAQ IRIS.PAD6 IRIS.BUT69) - -(RPAQ IRIS.PAD8 IRIS.BUT67) - -(RPAQ IRIS.PAD9 IRIS.BUT74) - -(RPAQ IRIS.PADPF1 IRIS.BUT71) - -(RPAQ IRIS.PADPF2 IRIS.BUT70) - -(RPAQ IRIS.PADPF3 IRIS.BUT78) - -(RPAQ IRIS.PADPF4 IRIS.BUT77) - -(RPAQ IRIS.PADPERIOD IRIS.BUT65) - -(RPAQ IRIS.PADMINUS IRIS.BUT75) - -(RPAQ IRIS.PADCOMMA IRIS.BUT76) - -(RPAQ IRIS.PADENTER IRIS.BUT81) - -(CONSTANTS (IRIS.AKEY IRIS.BUT10) - (IRIS.BKEY IRIS.BUT35) - (IRIS.CKEY IRIS.BUT27) - (IRIS.DKEY IRIS.BUT17) - (IRIS.EKEY IRIS.BUT16) - (IRIS.FKEY IRIS.BUT18) - (IRIS.GKEY IRIS.BUT25) - (IRIS.HKEY IRIS.BUT26) - (IRIS.IKEY IRIS.BUT39) - (IRIS.JKEY IRIS.BUT33) - (IRIS.KKEY IRIS.BUT34) - (IRIS.LKEY IRIS.BUT41) - (IRIS.MKEY IRIS.BUT43) - (IRIS.NKEY IRIS.BUT36) - (IRIS.OKEY IRIS.BUT40) - (IRIS.PKEY IRIS.BUT47) - (IRIS.QKEY IRIS.BUT9) - (IRIS.RKEY IRIS.BUT23) - (IRIS.SKEY IRIS.BUT11) - (IRIS.TKEY IRIS.BUT24) - (IRIS.UKEY IRIS.BUT32) - (IRIS.VKEY IRIS.BUT28) - (IRIS.WKEY IRIS.BUT15) - (IRIS.XKEY IRIS.BUT20) - (IRIS.YKEY IRIS.BUT32) - (IRIS.ZKEY IRIS.BUT19) - (IRIS.ZEROKEY IRIS.BUT45) - (IRIS.ONEKEY IRIS.BUT7) - (IRIS.TWOKEY IRIS.BUT13) - (IRIS.THREEKEY IRIS.BUT14) - (IRIS.FOURKEY IRIS.BUT21) - (IRIS.FIVCEKEY IRIS.BUT22) - (IRIS.SIXKEY IRIS.BUT29) - (IRIS.SEVENKEY IRIS.BUT30) - (IRIS.EIGHTKEY IRIS.BUT37) - (IRIS.NINIKEY IRIS.BUT38) - (IRIS.BREAKKEY IRIS.BUT0) - (IRIS.SETUPKEY IRIS.BUT1) - (IRIS.CNTRLKEY IRIS.BUT2) - (IRIS.CAPSLOCKKEY IRIS.BUT3) - (IRIS.RIGHTSHIFTKEY IRIS.BUT4) - (IRIS.LEFTSHIFTKEY IRIS.BUT5) - (IRIS.NOSCRLKEY IRIS.BUT12) - (IRIS.ESCKEY IRIS.BUT6) - (IRIS.TABKEY IRIS.BUT8) - (IRIS.RETURNKEY IRIS.BUT50) - (IRIS.SPACEKKEY IRIS.BUT82) - (IRIS.LINEFEEDKEY IRIS.BUT59) - (IRIS.BACKSPACEKEY IRIS.BUT60) - (IRIS.DELETEKEY IRIS.BUT61) - (IRIS.SEMICOLONKEY IRIS.BUT42) - (IRIS.PERIODKEY IRIS.BUT51) - (IRIS.COMMAKEY IRIS.BUT44) - (IRIS.QUOTEKEY IRIS.BUT49) - (IRIS.ACCENTGRAVEKEY IRIS.BUT54) - (IRIS.MINUSKEY IRIS.BUT46) - (IRIS.VIRGULEKEY IRIS.BUT52) - (IRIS.BACKSLASHKEY IRIS.BUT56) - (IRIS.EQUALKEY IRIS.BUT53) - (IRIS.LEFTBRACKETKEY IRIS.BUT48) - (IRIS.RIGHTBRACKETKEY IRIS.BUT55) - (IRIS.LEFTARROWKEY IRIS.BUT72) - (IRIS.DOWNARROWKEY IRIS.BUT73) - (IRIS.UPARROWKEY IRIS.BUT80) - (IRIS.PAD0 IRIS.BUT58) - (IRIS.PAD1 IRIS.BUT57) - (IRIS.PAD2 IRIS.BUT63) - (IRIS.PAD3 IRIS.BUT64) - (IRIS.PAD4 IRIS.BUT62) - (IRIS.PAD5 IRIS.BUT68) - (IRIS.PAD6 IRIS.BUT69) - (IRIS.PAD8 IRIS.BUT67) - (IRIS.PAD9 IRIS.BUT74) - (IRIS.PADPF1 IRIS.BUT71) - (IRIS.PADPF2 IRIS.BUT70) - (IRIS.PADPF3 IRIS.BUT78) - (IRIS.PADPF4 IRIS.BUT77) - (IRIS.PADPERIOD IRIS.BUT65) - (IRIS.PADMINUS IRIS.BUT75) - (IRIS.PADCOMMA IRIS.BUT76) - (IRIS.PADENTER IRIS.BUT81)) -) - - - -(* Screen buttons) - -(DECLARE: EVAL@COMPILE - -(RPAQ IRIS.SCRBUT0 (IPLUS IRIS.SBTOFFSET 0)) - -(RPAQ IRIS.SCRBUT1 (IPLUS IRIS.SBTOFFSET 1)) - -(RPAQ IRIS.SCRBUT2 (IPLUS IRIS.SBTOFFSET 2)) - -(RPAQ IRIS.SCRBUT3 (IPLUS IRIS.SBTOFFSET 3)) - -(RPAQ IRIS.SCRBUT4 (IPLUS IRIS.SBTOFFSET 4)) - -(RPAQ IRIS.SCRBUT5 (IPLUS IRIS.SBTOFFSET 5)) - -(RPAQ IRIS.SCRBUT6 (IPLUS IRIS.SBTOFFSET 6)) - -(RPAQ IRIS.SCRBUT7 (IPLUS IRIS.SBTOFFSET 7)) - -(RPAQ IRIS.SCRBUT8 (IPLUS IRIS.SBTOFFSET 8)) - -(RPAQ IRIS.SCRBUT9 (IPLUS IRIS.SBTOFFSET 9)) - -(RPAQ IRIS.SCRBUT10 (IPLUS IRIS.SBTOFFSET 10)) - -(RPAQ IRIS.SCRBUT11 (IPLUS IRIS.SBTOFFSET 11)) - -(RPAQ IRIS.SCRBUT12 (IPLUS IRIS.SBTOFFSET 12)) - -(RPAQ IRIS.SCRBUT13 (IPLUS IRIS.SBTOFFSET 13)) - -(RPAQ IRIS.SCRBUT14 (IPLUS IRIS.SBTOFFSET 14)) - -(RPAQ IRIS.SCRBUT15 (IPLUS IRIS.SBTOFFSET 15)) - -(RPAQ IRIS.SCRBUT16 (IPLUS IRIS.SBTOFFSET 16)) - -(CONSTANTS (IRIS.SCRBUT0 (IPLUS IRIS.SBTOFFSET 0)) - (IRIS.SCRBUT1 (IPLUS IRIS.SBTOFFSET 1)) - (IRIS.SCRBUT2 (IPLUS IRIS.SBTOFFSET 2)) - (IRIS.SCRBUT3 (IPLUS IRIS.SBTOFFSET 3)) - (IRIS.SCRBUT4 (IPLUS IRIS.SBTOFFSET 4)) - (IRIS.SCRBUT5 (IPLUS IRIS.SBTOFFSET 5)) - (IRIS.SCRBUT6 (IPLUS IRIS.SBTOFFSET 6)) - (IRIS.SCRBUT7 (IPLUS IRIS.SBTOFFSET 7)) - (IRIS.SCRBUT8 (IPLUS IRIS.SBTOFFSET 8)) - (IRIS.SCRBUT9 (IPLUS IRIS.SBTOFFSET 9)) - (IRIS.SCRBUT10 (IPLUS IRIS.SBTOFFSET 10)) - (IRIS.SCRBUT11 (IPLUS IRIS.SBTOFFSET 11)) - (IRIS.SCRBUT12 (IPLUS IRIS.SBTOFFSET 12)) - (IRIS.SCRBUT13 (IPLUS IRIS.SBTOFFSET 13)) - (IRIS.SCRBUT14 (IPLUS IRIS.SBTOFFSET 14)) - (IRIS.SCRBUT15 (IPLUS IRIS.SBTOFFSET 15)) - (IRIS.SCRBUT16 (IPLUS IRIS.SBTOFFSET 16))) -) - - - -(* Valuators) - -(DECLARE: EVAL@COMPILE - -(RPAQ IRIS.SGIRESERVED (IPLUS 0 IRIS.VALOFFSET)) - -(RPAQ IRIS.DIAL0 (PLUS 1 IRIS.VALOFFSET)) - -(RPAQ IRIS.DIAL1 (PLUS 2 IRIS.VALOFFSET)) - -(RPAQ IRIS.DIAL2 (PLUS 3 IRIS.VALOFFSET)) - -(RPAQ IRIS.DIAL3 (PLUS 4 IRIS.VALOFFSET)) - -(RPAQ IRIS.DIAL4 (PLUS 5 IRIS.VALOFFSET)) - -(RPAQ IRIS.DIAL5 (PLUS 6 IRIS.VALOFFSET)) - -(RPAQ IRIS.DIAL6 (PLUS 7 IRIS.VALOFFSET)) - -(RPAQ IRIS.DIAL7 (PLUS 8 IRIS.VALOFFSET)) - -(RPAQ IRIS.DIAL8 (PLUS 9 IRIS.VALOFFSET)) - -(RPAQ IRIS.MOUSEX (PLUS 10 IRIS.VALOFFSET)) - -(RPAQ IRIS.MOUSEY (PLUS 11 IRIS.VALOFFSET)) - -(RPAQ IRIS.LPENX (PLUS 12 IRIS.VALOFFSET)) - -(RPAQ IRIS.PLENY (PLUS 13 IRIS.VALOFFSET)) - -(RPAQ IRIS.NULLX (PLUS 14 IRIS.VALOFFSET)) - -(RPAQ IRIS.NULLY (PLUS 15 IRIS.VALOFFSET)) - -(CONSTANTS (IRIS.SGIRESERVED (IPLUS 0 IRIS.VALOFFSET)) - (IRIS.DIAL0 (PLUS 1 IRIS.VALOFFSET)) - (IRIS.DIAL1 (PLUS 2 IRIS.VALOFFSET)) - (IRIS.DIAL2 (PLUS 3 IRIS.VALOFFSET)) - (IRIS.DIAL3 (PLUS 4 IRIS.VALOFFSET)) - (IRIS.DIAL4 (PLUS 5 IRIS.VALOFFSET)) - (IRIS.DIAL5 (PLUS 6 IRIS.VALOFFSET)) - (IRIS.DIAL6 (PLUS 7 IRIS.VALOFFSET)) - (IRIS.DIAL7 (PLUS 8 IRIS.VALOFFSET)) - (IRIS.DIAL8 (PLUS 9 IRIS.VALOFFSET)) - (IRIS.MOUSEX (PLUS 10 IRIS.VALOFFSET)) - (IRIS.MOUSEY (PLUS 11 IRIS.VALOFFSET)) - (IRIS.LPENX (PLUS 12 IRIS.VALOFFSET)) - (IRIS.PLENY (PLUS 13 IRIS.VALOFFSET)) - (IRIS.NULLX (PLUS 14 IRIS.VALOFFSET)) - (IRIS.NULLY (PLUS 15 IRIS.VALOFFSET))) -) - - - -(* Timers) - -(DECLARE: EVAL@COMPILE - -(RPAQ IRIS.TIMER0 (IPLUS IRIS.TIMOFFSET 0)) - -(RPAQ IRIS.TIMER1 (IPLUS IRIS.TIMOFFSET 1)) - -(RPAQ IRIS.TIMER2 (IPLUS IRIS.TIMOFFSET 2)) - -(RPAQ IRIS.TIMER3 (IPLUS IRIS.TIMOFFSET 3)) - -(RPAQ IRIS.TIMER4 (IPLUS IRIS.TIMOFFSET 4)) - -(RPAQ IRIS.TIMER5 (IPLUS IRIS.TIMOFFSET 5)) - -(RPAQ IRIS.TIMER6 (IPLUS IRIS.TIMOFFSET 6)) - -(RPAQ IRIS.TIMER7 (IPLUS IRIS.TIMOFFSET 7)) - -(CONSTANTS (IRIS.TIMER0 (IPLUS IRIS.TIMOFFSET 0)) - (IRIS.TIMER1 (IPLUS IRIS.TIMOFFSET 1)) - (IRIS.TIMER2 (IPLUS IRIS.TIMOFFSET 2)) - (IRIS.TIMER3 (IPLUS IRIS.TIMOFFSET 3)) - (IRIS.TIMER4 (IPLUS IRIS.TIMOFFSET 4)) - (IRIS.TIMER5 (IPLUS IRIS.TIMOFFSET 5)) - (IRIS.TIMER6 (IPLUS IRIS.TIMOFFSET 6)) - (IRIS.TIMER7 (IPLUS IRIS.TIMOFFSET 7))) -) - - - -(* Misc devices) - -(DECLARE: EVAL@COMPILE - -(RPAQ IRIS.KEYBD (IPLUS 1 IRIS.KEYOFFSET)) - -(RPAQQ IRIS.CURSORX 526) - -(RPAQQ IRIS.CURSORY 527) - -(RPAQQ IRIS.VALMARK 523) - -(RPAQQ IRIS.GERROR 524) - -(RPAQQ IRIS.REDRAW 528) - -(RPAQQ IRIS.WMSEND 529) - -(RPAQQ IRIS.WMREPLY 530) - -(RPAQQ IRIS.WMGFCLOSE 531) - -(RPAQQ IRIS.WMTXCLOSE 532) - -(RPAQQ IRIS.MODECHANGE 533) - -(RPAQQ IRIS.INPUTCHANGE 534) - -(RPAQQ IRIS.QFULL 535) - -(CONSTANTS (IRIS.KEYBD (IPLUS 1 IRIS.KEYOFFSET)) - (IRIS.CURSORX 526) - (IRIS.CURSORY 527) - (IRIS.VALMARK 523) - (IRIS.GERROR 524) - (IRIS.REDRAW 528) - (IRIS.WMSEND 529) - (IRIS.WMREPLY 530) - (IRIS.WMGFCLOSE 531) - (IRIS.WMTXCLOSE 532) - (IRIS.MODECHANGE 533) - (IRIS.INPUTCHANGE 534) - (IRIS.QFULL 535)) -) - (* * get.h) - - - - -(* Values returned by IRIS.GETBUFFER) - -(DECLARE: EVAL@COMPILE - -(RPAQQ IRIS.NEITHERBUFFER 0) - -(RPAQQ IRIS.BACKBUFFER 1) - -(RPAQQ IRIS.FRONTBUFFER 2) - -(RPAQQ IRIS.BOTHBUFFERS 3) - -(RPAQQ IRIS.NOBUFFER 0) - -(RPAQQ IRIS.BCKBUFFER 1) - -(RPAQQ IRIS.FRNTBUFFER 2) - -(CONSTANTS (IRIS.NEITHERBUFFER 0) - (IRIS.BACKBUFFER 1) - (IRIS.FRONTBUFFER 2) - (IRIS.BOTHBUFFERS 3) - (IRIS.NOBUFFER 0) - (IRIS.BCKBUFFER 1) - (IRIS.FRNTBUFFER 2)) -) - - - -(* Values returned by IRIS.GETCMMODE) - -(DECLARE: EVAL@COMPILE - -(RPAQQ IRIS.MULTIMAP 0) - -(RPAQQ IRIS.ONEMAP 1) - -(RPAQQ IRIS.CMAPMULTI 0) - -(RPAQQ IRIS.CMAPONE 1) - -(CONSTANTS (IRIS.MULTIMAP 0) - (IRIS.ONEMAP 1) - (IRIS.CMAPMULTI 0) - (IRIS.CMAPONE 1)) -) - - - -(* Values returned by IRIS.GETDISPLAYMODE) - -(DECLARE: EVAL@COMPILE - -(RPAQQ IRIS.RGBMODE 0) - -(RPAQQ IRIS.SINGLEBUFFER 1) - -(RPAQQ IRIS.DOUBLEBUFFER 2) - -(RPAQQ IRIS.DMRGB 0) - -(RPAQQ IRIS.DMSINGLE 1) - -(RPAQQ IRIS.DMDOUBLE 2) - -(CONSTANTS (IRIS.RGBMODE 0) - (IRIS.SINGLEBUFFER 1) - (IRIS.DOUBLEBUFFER 2) - (IRIS.DMRGB 0) - (IRIS.DMSINGLE 1) - (IRIS.DMDOUBLE 2)) -) - - - -(* Values returned by IRIS.GETDISPLAYMODE) - -(DECLARE: EVAL@COMPILE - -(RPAQQ IRIS.HZ30 0) - -(RPAQQ IRIS.HZ60 1) - -(RPAQQ IRIS.NTSC 2) - -(RPAQQ IRIS.PAL 2) - -(RPAQQ IRIS.HZ50 3) - -(RPAQQ IRIS.MONA 5) - -(RPAQQ IRIS.MONB 6) - -(RPAQQ IRIS.MONC 7) - -(RPAQQ IRIS.MOND 8) - -(RPAQQ IRIS.MONSPECIAL 16) - -(CONSTANTS (IRIS.HZ30 0) - (IRIS.HZ60 1) - (IRIS.NTSC 2) - (IRIS.PAL 2) - (IRIS.HZ50 3) - (IRIS.MONA 5) - (IRIS.MONB 6) - (IRIS.MONC 7) - (IRIS.MOND 8) - (IRIS.MONSPECIAL 16)) -) - - - -(* Individual hit bits returned by IRIS.HITCODE) - -(DECLARE: EVAL@COMPILE - -(RPAQQ IRIS.LEFTPLANE 1) - -(RPAQQ IRIS.RIGHTPLANE 2) - -(RPAQQ IRIS.BOTTOMPLANE 4) - -(RPAQQ IRIS.TOPPLANE 8) - -(RPAQQ IRIS.NEARPLANE 16) - -(RPAQQ IRIS.FARPLANE 32) - -(CONSTANTS (IRIS.LEFTPLANE 1) - (IRIS.RIGHTPLANE 2) - (IRIS.BOTTOMPLANE 4) - (IRIS.TOPPLANE 8) - (IRIS.NEARPLANE 16) - (IRIS.FARPLANE 32)) -) - (* * constants for rotation) - -(DECLARE: EVAL@COMPILE - -(RPAQ IRIS.XAXIS (CHARCODE X)) - -(RPAQ IRIS.YAXIS (CHARCODE Y)) - -(RPAQ IRIS.ZAXIS (CHARCODE Z)) - -(CONSTANTS (IRIS.XAXIS (CHARCODE X)) - (IRIS.YAXIS (CHARCODE Y)) - (IRIS.ZAXIS (CHARCODE Z))) -) - (* * Other stuff) - - - - -(* Approximate interval between retraces in milliseconds) - -(DECLARE: EVAL@COMPILE - -(RPAQQ IRIS.RETRACEINTERVAL 33.33333) - -(CONSTANTS (IRIS.RETRACEINTERVAL 33.33333)) -) -(PUTPROPS IRISCONSTANTS COPYRIGHT ("Xerox Corporation" 1985)) -(DECLARE: DONTCOPY - (FILEMAP (NIL))) -STOP diff --git a/obsolete/lispusers/IRISDEMOFNS b/obsolete/lispusers/IRISDEMOFNS deleted file mode 100644 index ed1509c0..00000000 --- a/obsolete/lispusers/IRISDEMOFNS +++ /dev/null @@ -1,469 +0,0 @@ -(DEFINE-FILE-INFO §READTABLE "INTERLISP" §PACKAGE "INTERLISP") -(FILECREATED " 2-Feb-87 21:13:01" {ERIS}NEXT>IRISDEMOFNS.;10 21478 - - changes to%: (VARS IRISDEMOFNSCOMS) - (FNS TETRA TETRA.DRAW.FACE TETRA.OBJ) - - previous date%: " 4-Mar-86 10:57:38" {ERIS}NEXT>IRISDEMOFNS.;8) - - -(PRETTYCOMPRINT IRISDEMOFNSCOMS) - -(RPAQQ IRISDEMOFNSCOMS [(FNS IRIS.DEGREES SNOW SPHERE TETRA TETRA.COLOR TETRA.DRAW.FACE TETRA.OBJ - TETRA.TILT.AND.RECURSE) - (VARS IRIS.TILT TETRA.COLOR TETRA.EDGE.COLOR TETRA.SHRINK TETRA.TILT - IV.DEFAULT.STYLE) - - - (* ;; "minimal 3-d support for the tetra demo") - - (RECORDS 3POINT) - (FNS 3DOT 3DRAWTO 3MOVETO 3NORMALIZE 3PLUS 3POINT 3UNITCROSSPRODUCT - 3DIFFERENCE 3CROSSPRODUCT 3LENGTH 3LINE 3TIMES DRAW.FACE? IRIS.XLATE) - (VARS \IRIS.DUMMYBUFFER \IRIS.FEEDBACKBUFFER) - (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS - (ADDVARS (NLAMA) - (NLAML) - (LAMA TETRA]) -(DEFINEQ - -(IRIS.DEGREES - [LAMBDA (DEGREES) (* edited%: "13-Dec-85 18:32") - - (* Takes an angle in degrees and returns an angle as the iris likes it - (tenths)) - - (FIX (TIMES DEGREES 10]) - -(SNOW - [LAMBDA (N) (* edited%: "11-Dec-85 23:12") - (for I to (OR N (RAND 5 20)) do (IRIS.PUSHMATRIX) - (IRIS.TRANSLATE (RAND 0 SCREENWIDTH) - (RAND 0 SCREENHEIGHT) - 0 \IRISSTREAM) - (IRIS.ROTATE (RAND 0 1800) - 88) - (IRIS.ROTATE (RAND 0 1800) - 89) - (IRIS.ROTATE (RAND 0 1800) - 90) - (IRIS.SCALE (RAND 0.1 1) - (RAND 0.1 1) - (RAND 0.1 1)) - (SPHERE " Noel" (RAND 5 90) - (RAND 1 3)) - (IRIS.POPMATRIX]) - -(SPHERE - [LAMBDA (MSG THETA COUNT) (* edited%: "11-Dec-85 15:24") - (IRIS.PUSHMATRIX) - (OR THETA (SETQ THETA 30)) - (OR COUNT (SETQ COUNT 3)) - (DSPCOLOR 'RED \IRISSTREAM) - (IRIS.PUSHMATRIX) - (for I from 0 to (IQUOTIENT 360 THETA) do (MOVETO 0 0 \IRISSTREAM) - (DSPCOLOR (IMOD I 7) - \IRISSTREAM) - (IRIS.ROTATE (ITIMES 10 THETA) - IRIS.ZAXIS) - (PRINTOUT \IRISSTREAM MSG)) - (IRIS.POPMATRIX) - (IRIS.PUSHMATRIX) - (IRIS.ROTATE 900 IRIS.YAXIS) - (DSPCOLOR 'BLACK \IRISSTREAM) - (SELECTQ COUNT - (1 NIL) - (for I from 0 to (IQUOTIENT 360 THETA) do (MOVETO 0 0 \IRISSTREAM) - (DSPCOLOR (IMOD I 7) - \IRISSTREAM) - (IRIS.ROTATE (ITIMES 10 THETA) - IRIS.ZAXIS) - (PRINTOUT \IRISSTREAM MSG))) - (IRIS.POPMATRIX) - (DSPCOLOR 'CYAN \IRISSTREAM) - (IRIS.ROTATE 900 IRIS.XAXIS) - (SELECTQ COUNT - ((1 2) - NIL) - (for I from 0 to (IQUOTIENT 360 THETA) do (MOVETO 0 0 \IRISSTREAM) - (DSPCOLOR (IMOD I 7) - \IRISSTREAM) - (IRIS.ROTATE (ITIMES 10 THETA) - IRIS.ZAXIS) - (PRINTOUT \IRISSTREAM MSG))) - (IRIS.POPMATRIX]) - -(TETRA - [CL:LAMBDA (&OPTIONAL (SIDE-LENGTH 200) - (RECURSIVE-DEPTH 3) - (SHRINK-FACTOR TETRA.SHRINK) - (STYLE 'WIREFRAME) - (DONTBASERECURSE NIL)) (* ; "Edited 31-Jan-87 17:29 by gbn") - -(* ;;; "Draws a recursive tetrahedron. shrinkfactor is the ratio of side length of parent and child. style is one of 'wireframe, polygon or normal.") - - (LET ((RECURSIVE-DEPTH (OR RECURSIVE-DEPTH 5)) - (SHRINK-FACTOR (OR SHRINK-FACTOR TETRA.SHRINK)) - (STYLE (OR STYLE IV.DEFAULT.STYLE))) - (if (EQ 0 RECURSIVE-DEPTH) - then (* ; "done") - NIL - else (TETRA.OBJ SIDE-LENGTH (TETRA.COLOR RECURSIVE-DEPTH) - STYLE DONTBASERECURSE) - (if (NOT DONTBASERECURSE) - then (IRIS.PUSHMATRIX) - (IRIS.ROTATE (IRIS.DEGREES 180) - IRIS.YAXIS) - (IRIS.ROTATE (IRIS.DEGREES (MINUS TETRA.TILT)) - IRIS.XAXIS) - (IRIS.TRANSLATE 0 (QUOTIENT SIDE-LENGTH (SQRT 3)) - 0) - (TETRA.TILT.AND.RECURSE SIDE-LENGTH RECURSIVE-DEPTH SHRINK-FACTOR STYLE - ) - (IRIS.POPMATRIX)) - (IRIS.PUSHMATRIX) - (IRIS.TRANSLATE 0 (QUOTIENT SIDE-LENGTH (SQRT 3)) - 0) (* ; - "move the origin to the middle of the base of the tetrahedron") - (TETRA.TILT.AND.RECURSE SIDE-LENGTH RECURSIVE-DEPTH SHRINK-FACTOR STYLE) - (IRIS.ROTATE (IRIS.DEGREES 120) - IRIS.ZAXIS) - (TETRA.TILT.AND.RECURSE SIDE-LENGTH RECURSIVE-DEPTH SHRINK-FACTOR STYLE) - (IRIS.ROTATE (IRIS.DEGREES 120) - IRIS.ZAXIS) - (TETRA.TILT.AND.RECURSE SIDE-LENGTH RECURSIVE-DEPTH SHRINK-FACTOR STYLE) - - (* ;; "(IRIS.TRANSLATE 0 (MINUS (QUOTIENT X (SQRT 3))) 0) (IRIS.ROTATE (IRIS.DEGREES 180) IRIS.XAXIS) (IRIS.ROTATE (IRIS.DEGREES 180) IRIS.ZAXIS) (TETRA.TILT.AND.RECURSE X RECDEPTH)") - - (IRIS.POPMATRIX]) - -(TETRA.COLOR - [LAMBDA (COLOR) (* gbn "21-Feb-86 17:11") - (IMOD COLOR 8]) - -(TETRA.DRAW.FACE - [LAMBDA (STYLE COLOR LEFT RIGHT TOP) (* ; "Edited 31-Jan-87 18:44 by gbn") - - (* ;; "handles drawing a single face. Left right and top are just logical names for the points of the triangle. They need not correspond to Tetra's interpretation of those names.") - - (SELECTQ STYLE - (WIREFRAME) - ((POLYGON NORMALS BACKFACES) - (if (NOT DONTBASERECURSE) - then (IRIS.POLF 3 (LIST LEFT RIGHT FRONT))) - (DSPCOLOR COLOR \IRISSTREAM) - (IRIS.POLF 3 (LIST LEFT RIGHT TOP)) (* ; - "(IRIS.POLF 3 (LIST FRONT RIGHT TOP)) (IRIS.POLF 3 (LIST FRONT LEFT TOP))") - (DSPCOLOR TETRA.EDGE.COLOR \IRISSTREAM) - (3MOVETO \IRISSTREAM LEFT) - (3DRAWTO \IRISSTREAM RIGHT) - (3DRAWTO \IRISSTREAM TOP) - (3DRAWTO \IRISSTREAM LEFT) - (SELECTQ STYLE - (POLYGON) - (NORMALS (* ; - "compute and draw a normal to the face") - [LET* ((LEFTTOP (3DIFFERENCE TOP LEFT)) - (LEFTRIGHT (3DIFFERENCE RIGHT LEFT)) - (NORMALENDPT (3CROSSPRODUCT LEFTTOP LEFTRIGHT)) - (NORMAL (3DIFFERENCE NORMALENDPT LEFT))) - (3LINE LEFT (3PLUS LEFT (3TIMES (3NORMALIZE NORMAL) - 50]) - (BACKFACES (* ; - "compute and draw a normal to the face") - (LET* ((LEFTTOP (3DIFFERENCE TOP LEFT)) - (LEFTRIGHT (3DIFFERENCE RIGHT LEFT)) - (NORMALENDPT (3CROSSPRODUCT LEFTTOP LEFTRIGHT)) - (NORMAL (3DIFFERENCE NORMALENDPT LEFT)) - (EYEVECTOR (3DIFFERENCE (IRIS.XLATE IV.VIEWPT) - LEFT))) - (if (LESSP (3DOT EYEVECTOR NORMAL) - 0.0) - then (* ; "this is not a backface so drawit") - (DSPCOLOR COLOR \IRISSTREAM) - (IRIS.POLF 3 (LIST LEFT RIGHT TOP)) - (DSPCOLOR TETRA.EDGE.COLOR \IRISSTREAM) - (3MOVETO \IRISSTREAM LEFT) - (3DRAWTO \IRISSTREAM RIGHT) - (3DRAWTO \IRISSTREAM TOP) - (3DRAWTO \IRISSTREAM LEFT)))) - (ERROR "Unknown drawing style: " STYLE))) - (ERROR "Unknown drawing style: " STYLE]) - -(TETRA.OBJ - [LAMBDA (X COLOR STYLE DONTBASERECURSE) (* ; "Edited 31-Jan-87 17:35 by gbn") - -(* ;;; "The function that draws a single tetrahedron (and optionally, it's faces.)") - - (LET ([TOP (3POINT 0 (QUOTIENT X (SQRT 3)) - (SQRT (TIMES (TIMES X X) - (QUOTIENT 8 3.0] - (LEFT (3POINT (MINUS X) - 0 0)) - (RIGHT (3POINT X 0 0)) - (FRONT (3POINT 0 (TIMES (SQRT 3) - X) - 0))) - (IRIS.PUSHATTRIBUTES) - (SELECTQ STYLE - (WIREFRAME (DSPCOLOR COLOR \IRISSTREAM) - (3MOVETO \IRISSTREAM LEFT) - (3DRAWTO \IRISSTREAM RIGHT) - (3DRAWTO \IRISSTREAM FRONT) - (3DRAWTO \IRISSTREAM LEFT) - (3DRAWTO \IRISSTREAM TOP) - (3DRAWTO \IRISSTREAM RIGHT) - (3MOVETO \IRISSTREAM FRONT) - (3DRAWTO \IRISSTREAM TOP)) - ((POLYGON NORMALS BACKFACES) - (DSPCOLOR COLOR \IRISSTREAM) - (if (NOT DONTBASERECURSE) - then (TETRA.DRAW.FACE STYLE COLOR LEFT RIGHT FRONT)) - (TETRA.DRAW.FACE STYLE COLOR LEFT RIGHT TOP) - (TETRA.DRAW.FACE STYLE COLOR RIGHT FRONT TOP) - (TETRA.DRAW.FACE STYLE COLOR FRONT LEFT TOP)) - (ERROR "Unknown drawing style: " STYLE)) - (IRIS.POPATTRIBUTES]) - -(TETRA.TILT.AND.RECURSE - [LAMBDA (X RECDEPTH SHRINKFACTOR STYLE) (* edited%: "16-Dec-85 17:41") - - (* * sets up the transformations to recurse, and calls tetra) - - (* * called with 0 0 0 already placed at the "bottom edge" on the face of the - larger tetra) - - (* BOTTOMY is the y component of the point BOTTOM, which is not explicitly - calculated) - - (LET [(BOTTOMY (QUOTIENT X (SQRT 3] - (IRIS.PUSHMATRIX) - (IRIS.TRANSLATE 0 (MINUS (QUOTIENT X (SQRT 3))) - 0) - (IRIS.ROTATE (IRIS.DEGREES TETRA.TILT) - IRIS.XAXIS) - (IRIS.TRANSLATE 0 (DIFFERENCE BOTTOMY (TIMES BOTTOMY SHRINKFACTOR)) - 0) - (IRIS.SCALE SHRINKFACTOR SHRINKFACTOR SHRINKFACTOR) - (TETRA (TIMES SHRINKFACTOR X) - (SUB1 RECDEPTH) - SHRINKFACTOR STYLE T) (* IRIS.TRANSLATE 0 (MINUS BOTTOMY) 0) - - (* put 0 0 0 back on the edge of the larger tetra) - - (IRIS.POPMATRIX]) -) - -(RPAQQ IRIS.TILT 70.52878) - -(RPAQQ TETRA.COLOR BLUE) - -(RPAQQ TETRA.EDGE.COLOR BLACK) - -(RPAQQ TETRA.SHRINK 0.7) - -(RPAQQ TETRA.TILT 70.52878) - -(RPAQQ IV.DEFAULT.STYLE WIREFRAME) - - - -(* ;; "minimal 3-d support for the tetra demo") - -(DECLARE%: EVAL@COMPILE - -(RECORD 3POINT (|3X| |3Y| |3Z|)) -) -(DEFINEQ - -(3DOT - [LAMBDA (A B) (* gbn " 3-Mar-86 17:54") - (PLUS (TIMES (fetch |3X| of A) - (fetch |3X| of B)) - (TIMES (fetch |3Y| of A) - (fetch |3Y| of B)) - (TIMES (fetch |3Z| of A) - (fetch |3Z| of B]) - -(3DRAWTO - [LAMBDA (STREAM XOR3PT Y Z) (* edited%: "13-Dec-85 16:16") - (if (NUMBERP XOR3PT) - then (IRIS.DRAW XOR3PT Y Z STREAM) - else (IRIS.DRAW (fetch |3X| of XOR3PT) - (fetch |3Y| of XOR3PT) - (fetch |3Z| of XOR3PT) - STREAM]) - -(3MOVETO - [LAMBDA (STREAM XOR3PT Y Z) (* edited%: "13-Dec-85 16:16") - (if (NUMBERP XOR3PT) - then (IRIS.MOVE XOR3PT Y Z STREAM) - else (IRIS.MOVE (fetch |3X| of XOR3PT) - (fetch |3Y| of XOR3PT) - (fetch |3Z| of XOR3PT) - STREAM]) - -(3NORMALIZE - [LAMBDA (3VECTOR) (* gbn " 3-Mar-86 15:51") - - (* * Produces a vector with the same direction but unit magnitude as 3VECTOR) - - (LET ((LENGTH (3LENGTH 3VECTOR))) - (3POINT (QUOTIENT (fetch |3X| of 3VECTOR) - LENGTH) - (QUOTIENT (fetch |3Y| of 3VECTOR) - LENGTH) - (QUOTIENT (fetch |3Z| of 3VECTOR) - LENGTH]) - -(3PLUS - [LAMBDA (A B) (* gbn " 3-Mar-86 14:46") - (* vector sum of a and b) - (3POINT (PLUS (fetch |3X| of A) - (fetch |3X| of B)) - (PLUS (fetch |3Y| of A) - (fetch |3Y| of B)) - (PLUS (fetch |3Z| of A) - (fetch |3Z| of B]) - -(3POINT - [LAMBDA (X Y Z) (* edited%: "13-Dec-85 16:02") - (* creates a |3-d| point) - (create 3POINT - |3X| _ X - |3Y| _ Y - |3Z| _ Z]) - -(3UNITCROSSPRODUCT - [LAMBDA (A B) (* gbn " 3-Mar-86 15:51") - (LET* ((NORMAL (3CROSSPRODUCT A B)) - (LENGTH (3LENGTH NORMAL))) - (replace |3X| of NORMAL with (QUOTIENT (fetch |3X| of NORMAL) - LENGTH)) - (replace |3Y| of NORMAL with (QUOTIENT (fetch |3Y| of NORMAL) - LENGTH)) - (replace |3Z| of NORMAL with (QUOTIENT (fetch |3Z| of NORMAL) - LENGTH)) - NORMAL]) - -(3DIFFERENCE - [LAMBDA (DEST SOURCE) (* gbn "28-Feb-86 17:13") - (* vector difference from source to - dest) - (3POINT (DIFFERENCE (fetch |3X| of DEST) - (fetch |3X| of SOURCE)) - (DIFFERENCE (fetch |3Y| of DEST) - (fetch |3Z| of SOURCE)) - (DIFFERENCE (fetch |3Z| of DEST) - (fetch |3Z| of SOURCE]) - -(3CROSSPRODUCT - [LAMBDA (A B) (* gbn "28-Feb-86 17:17") - (3POINT (DIFFERENCE (TIMES (fetch |3Y| of A) - (fetch |3Z| of B)) - (TIMES (fetch |3Z| of A) - (fetch |3Y| of B))) - (DIFFERENCE (TIMES (fetch |3Z| of A) - (fetch |3X| of B)) - (TIMES (fetch |3X| of A) - (fetch |3Z| of B))) - (DIFFERENCE (TIMES (fetch |3X| of A) - (fetch |3Y| of B)) - (TIMES (fetch |3Y| of A) - (fetch |3X| of B]) - -(3LENGTH - [LAMBDA (A) (* gbn " 3-Mar-86 15:36") - - (* * returns the euclidean norm of the |3d| vector) - - (SQRT (PLUS (TIMES (fetch |3X| of A) - (fetch |3X| of A)) - (TIMES (fetch |3Y| of A) - (fetch |3Y| of A)) - (TIMES (fetch |3Z| of A) - (fetch |3Z| of A]) - -(3LINE - [LAMBDA (A B) (* gbn "28-Feb-86 17:22") - (3MOVETO \IRISSTREAM A) - (3DRAWTO \IRISSTREAM B]) - -(3TIMES - [LAMBDA (VECTOR SCALAR) (* gbn " 3-Mar-86 14:47") - (3POINT (TIMES (fetch |3X| of VECTOR) - SCALAR) - (TIMES (fetch |3Y| of VECTOR) - SCALAR) - (TIMES (fetch |3Z| of VECTOR) - SCALAR]) - -(DRAW.FACE? - [LAMBDA (LEFT RIGHT TOP COLOR) (* gbn " 3-Mar-86 18:45") - - (* handles drawing a single face. Left right and top are just logical names for - the points of the triangle. They need not correspond to Tetra's interpretation - of those names.) - - (LET* ((LEFTTOP (3DIFFERENCE TOP LEFT)) - (LEFTRIGHT (3DIFFERENCE RIGHT LEFT)) - (NORMALENDPT (3CROSSPRODUCT LEFTTOP LEFTRIGHT)) - (NORMAL (3DIFFERENCE NORMALENDPT LEFT)) - (EYEVECTOR (3DIFFERENCE (IRIS.XLATE IV.VIEWPT) - LEFT))) - (if (GREATERP (3DOT EYEVECTOR NORMAL) - 0.0) - then (* this is not a backface so drawit) - (DSPCOLOR (OR COLOR 'CYAN) - \IRISSTREAM) - (IRIS.POLF 3 (LIST LEFT RIGHT TOP)) - (DSPCOLOR TETRA.EDGE.COLOR \IRISSTREAM) - (3MOVETO \IRISSTREAM LEFT) - (3DRAWTO \IRISSTREAM RIGHT) - (3DRAWTO \IRISSTREAM TOP) - (3DRAWTO \IRISSTREAM LEFT]) - -(IRIS.XLATE - [LAMBDA (3VECTOR) (* gbn " 3-Mar-86 17:18") - (IRIS.FEEDBACK \IRIS.DUMMYBUFFER 9) - (IRIS.XFPT (fetch |3X| of 3VECTOR) - (fetch |3Y| of 3VECTOR) - (fetch |3Z| of 3VECTOR)) - (if (NOT (EQUAL (IRIS.ENDFEEDBACK \IRIS.FEEDBACKBUFFER) - 9)) - then (HELP "NINE ITEMS NOT RETURNED")) - (3POINT (create FLOATP - HIWORD _ (ELT \IRIS.FEEDBACKBUFFER 2) - LOWORD _ (ELT \IRIS.FEEDBACKBUFFER 3)) - (create FLOATP - HIWORD _ (ELT \IRIS.FEEDBACKBUFFER 4) - LOWORD _ (ELT \IRIS.FEEDBACKBUFFER 5)) - (create FLOATP - HIWORD _ (ELT \IRIS.FEEDBACKBUFFER 6) - LOWORD _ (ELT \IRIS.FEEDBACKBUFFER 7]) -) - -(RPAQ \IRIS.DUMMYBUFFER (READARRAY 9 (QUOTE FIXP) 1)) -(1 1 1 1 1 1 1 1 1 NIL -) - -(RPAQ \IRIS.FEEDBACKBUFFER (READARRAY 9 (QUOTE FIXP) 1)) -(56 17275 9800 17288 8544 17585 41814 17585 41814 NIL -) -(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS - -(ADDTOVAR NLAMA ) - -(ADDTOVAR NLAML ) - -(ADDTOVAR LAMA TETRA) -) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (1291 13248 (IRIS.DEGREES 1301 . 1568) (SNOW 1570 . 2622) (SPHERE 2624 . 4537) (TETRA -4539 . 7134) (TETRA.COLOR 7136 . 7267) (TETRA.DRAW.FACE 7269 . 10466) (TETRA.OBJ 10468 . 12107) ( -TETRA.TILT.AND.RECURSE 12109 . 13246)) (13570 21123 (3DOT 13580 . 13945) (3DRAWTO 13947 . 14317) ( -3MOVETO 14319 . 14689) (3NORMALIZE 14691 . 15221) (3PLUS 15223 . 15686) (3POINT 15688 . 15975) ( -3UNITCROSSPRODUCT 15977 . 16640) (3DIFFERENCE 16642 . 17238) (3CROSSPRODUCT 17240 . 18011) (3LENGTH -18013 . 18495) (3LINE 18497 . 18667) (3TIMES 18669 . 19007) (DRAW.FACE? 19009 . 20260) (IRIS.XLATE -20262 . 21121))))) -STOP diff --git a/obsolete/lispusers/IRISIO b/obsolete/lispusers/IRISIO deleted file mode 100644 index e70744cb..00000000 --- a/obsolete/lispusers/IRISIO +++ /dev/null @@ -1,574 +0,0 @@ -(FILECREATED "12-Nov-85 19:11:43" {ERIS}KOTO>IRISIO.;2 21026 - - changes to: (VARS IRISIOCOMS) - (FNS IRIS.SENDFS) - - previous date: " 9-Sep-85 13:47:28" {ERIS}KOTO>IRISIO.;1) - - -(* Copyright (c) 1985 by Xerox Corporation. All rights reserved.) - -(PRETTYCOMPRINT IRISIOCOMS) - -(RPAQQ IRISIOCOMS [(COMS (* User level primitives) - (FNS IRIS.GEXIT IRIS.GFLUSH IRIS.GINIT IRIS.GRESET) - (MACROS IRIS.GFLUSH)) - (COMS (* Lower level primitives) - (FNS IRIS.RECBS IRIS.RECFS IRIS.RECLS IRIS.RECSS IRIS.SENDBS IRIS.SENDFS IRIS.SENDLS - IRIS.SENDQS IRIS.SENDSS IRIS.SETFASTCOM) - (MACROS IRIS.DOSYNC IRIS.ECHOFF IRIS.ECHOON IRIS.FLUSHG IRIS.GCMD IRIS.GETGCHAR - IRIS.GEXIT IRIS.GFINISH IRIS.PUTGCHAR IRIS.REC32 IRIS.REC6 IRIS.RECB IRIS.RECCR - IRIS.RECF IRIS.RECL IRIS.RECO IRIS.RECOS IRIS.RECS IRIS.SEND6 IRIS.SEND8 - IRIS.SENDB IRIS.SENDC IRIS.SENDF IRIS.SENDL IRIS.SENDO IRIS.SENDS - SPPINPUTSTREAM SPPSTREAM?) - (CONSTANTS (STDERR T) - (IRIS\AESC 46) - (IRIS\RESC 126) - (IRIS\TESC 16))) - [DECLARE: EVAL@LOAD DONTCOPY (P (LOADDEF (QUOTE FLOATP) - (QUOTE RECORD) - (QUOTE LLARITH] - (INITVARS (IRISCONN) - (IRISSPPON T)) - (DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA) - (NLAML) - (LAMA]) - - - -(* User level primitives) - -(DEFINEQ - -(IRIS.GEXIT - (LAMBDA (stream) - (if stream - then (IRIS.FLUSHG stream) - else (IRIS.FLUSHG IRISCONN)))) - -(IRIS.GFLUSH - (LAMBDA (stream) - (if stream - then (IRIS.FLUSHG stream) - else (IRIS.FLUSHG IRISCONN)))) - -(IRIS.GINIT - (LAMBDA (STREAM) (* LeL, " 3-Sep-85 17:18") - (if (NOT STREAM) - then (SETQ STREAM IRISCONN)) - (IRIS.SETFASTCOM STREAM) (* Assumes that we communicate on the net) - (IRIS.XGINIT STREAM) - (IRIS.FLUSHG STREAM))) - -(IRIS.GRESET - (LAMBDA (STREAM) (* LeL, " 3-Sep-85 17:18") - (IRIS.XGRESET STREAM) - (IRIS.FLUSHG STREAM))) -) -(DECLARE: EVAL@COMPILE -[PUTPROPS IRIS.GFLUSH MACRO (arg? (* Just for speed...) - (if arg? then (CONS (QUOTE IRIS.FLUSHG) - arg?) - else - (QUOTE (IRIS.FLUSHG IRISCONN] -) - - - -(* Lower level primitives) - -(DEFINEQ - -(IRIS.RECBS - (LAMBDA (values stream) (* LeL, " 6-Sep-85 14:15") - (* Receive an array of bytes and fill VALUES) - (PROG (nLongs nBytes) - (SETQ nLongs (LRSH (IPLUS (SETQ nBytes (IRIS.RECL stream)) - 3) - 2)) (* Number of longs - - FIXP - - to recieve) - (if (NEQ IRIS\RESC (IRIS.GETGCHAR stream)) - then (PRINT "IRIS.RECBS: error in array transport" STDERR) - (while (SPP.READP stream) do (BIN stream)) - (* Flush input) - (RETURN)) - (for i from 0 to (SUB1 nLongs) as ptr from (ARRAYORIG values) by 3 - bind aLong (arrayMax _(IPLUS (ARRAYORIG values) - nVals)) - do (SETQ aLong (IRIS.REC32 stream)) (* Recieve 6 six-bits words to make a long) - (if (IRIS.DOSYNC i) - then (IRIS.GETGCHAR stream) - (IRIS.PUTGCHAR IRIS\AESC stream) - (IRIS.FLUSHG stream)) - (for j from 0 to 2 when (LEQ (IPLUS ptr j) - arrayMax) - do (SETA values (IPLUS ptr j) - (LOGAND 255 (LRSH aLong (LLSH j 3)))))) - (IRIS.GETGCHAR stream)))) - -(IRIS.RECFS - (LAMBDA (values stream) (* LeL, " 6-Sep-85 12:50") - (* Common subroutine to IRIS.RECFS and IRIS.RECLS) - (PROG (nLongs) - (SETQ nLongs (IRIS.RECL stream)) - (if (NEQ IRIS\RESC (IRIS.GETGCHAR stream)) - then (printout STDERR "IRIS.RECFLS: error in array transport" T) - (while (SPP.READP stream) do (BIN stream)) - (* Empty the stream buffer) - (RETURN)) - (for i from 0 to (SUB1 nLongs) as ptr from (ARRAYORIG values) - bind aLong (aFloat _(NCREATE 'FLOATP)) - do (SETQ aLong (IRIS.REC32 stream)) - (if (IRIS.DOSYNC i) - then (IRIS.GETGCHAR stream) - (IRIS.PUTGCHAR IRIS\AESC stream) - (IRIS.FLUSHG stream)) - (replace (FLOATP HIWORD) of aFloat with (LRSH aLong 16)) - (replace (FLOATP LOWORD) of aFloat with (LOGAND aLong 65535)) - (SETA values ptr aFloat)) - (IRIS.GETGCHAR stream)))) - -(IRIS.RECLS - (LAMBDA (values STREAM) (* LeL, " 6-Sep-85 10:22") - (* Recieve an array of longs) - (PROG (nLongs) - (SETQ nLongs (IRIS.RECL STREAM)) - (if (NEQ IRIS\RESC (IRIS.GETGCHAR STREAM)) - then (PRINT "IRIS.RECLS: error in array transport" STDERR) - (while (SPP.READP stream) do (BIN stream)) - (RETURN)) - (for i from 0 to (SUB1 nLongs) as ptr from (ARRAYORIG values) bind aLong - do (SETQ aLong (IRIS.REC32 STREAM)) - (if (IRIS.DOSYNC i) - then (IRIS.GETGCHAR STREAM) - (IRIS.PUTGCHAR IRIS\AESC STREAM) - (IRIS.FLUSHG STREAM)) - (SETA values ptr aLong)) - (IRIS.GETGCHAR STREAM)))) - -(IRIS.RECSS - (LAMBDA (values stream) (* LeL, " 6-Sep-85 14:17") - (* Recieve an array of SMALL INTEGERS) - (PROG (nLongs nShorts) - (SETQ nLongs (LRSH (ADD1 (SETQ nShorts (IRIS.RECL stream))) - 1)) - (if (NEQ IRIS\RESC (IRIS.GETGCHAR stream)) - then (PRINT "IRIS.RECSS: error in array transport" STDERR) - (while (SPP.READP stream) do (BIN stream)) - (RETURN)) - (for i from 0 to (SUB1 nLongs) as ptr from (ARRAYORIG values) by 2 bind aLong - do (SETQ aLong (IRIS.REC32 stream)) - (if (IRIS.DOSYNC i) - then (IRIS.GETGCHAR stream) - (IRIS.PUTGCHAR IRIS\AESC stream) - (IRIS.FLUSHG stream)) - (SETA values ptr (LRSH aLong 16)) - (if (OR (LESSP i (SUB1 nLongs)) - (EVENP nShorts)) - then (SETA values (ADD1 ptr) - (LOGAND 65535 aLong)))) - (IRIS.GETGCHAR stream)))) - -(IRIS.SENDBS - (LAMBDA (values nVals stream) (* LeL, " 9-Sep-85 05:29") - (* Send an array of bytes) - (PROG (nLongs) - (SETQ nLongs (LRSH (IPLUS nVals 3) - 2)) - (COND - ((ARRAYP values) - (IRIS.SENDL nVals stream) (* Fill a 32 bits word starting from highest byte :) - (for i from 0 to (SUB1 nLongs) as ptr from (ARRAYORIG values) by 4 - bind aLong (arrayMax _(IPLUS (ARRAYORIG values) - nVals)) - do (SETQ aLong (for j from 0 to 4 when (LEQ (IPLUS ptr j) - arrayMax) - sum (LLSH (ELT values (IPLUS ptr j)) - (LLSH j 3)))) - (if (IRIS.DOSYNC i) - then (IRIS.PUTGCHAR IRIS\AESC stream)) - (IRIS.SENDL aLong stream))) - ((LISTP values) - (IRIS.SENDL nVals stream) - (for i from 0 to (SUB1 nLongs) bind (ptr _ values) - do (SETQ aLong (for j from 24 to 0 by -8 when ptr sum (LLSH (pop ptr) - j))) - (if (IRIS.DOSYNC i) - then (IRIS.PUTGCHAR IRIS\AESC stream)) - (IRIS.SENDL aLong stream))))))) - -(IRIS.SENDFS - [LAMBDA (values nVals stream) (* gbn "11-Nov-85 19:48") - - (* * Sends an array or (possibly two-layered) list of numbers) - - - (COND - ([AND (ARRAYP values) - (NUMBERP (ELT values (ARRAYORIG values] - (* An array of numbers) - (IRIS.SENDL (LLSH nVals 2) - stream) - (for i from 0 to (SUB1 nVals) as ptr from (ARRAYORIG values) - do (if (IRIS.DOSYNC i) - then (IRIS.PUTGCHAR IRIS\AESC stream)) - (IRIS.SENDF (ELT values ptr) - stream))) - ((AND (LISTP values) - (NUMBERP (CAR values))) (* A list of numbers) - (IRIS.SENDL (LLSH nVals 2) - stream) - (for i in values as counter from 0 - do (if (IRIS.DOSYNC counter) - then (IRIS.PUTGCHAR IRIS\AESC stream)) - (IRIS.SENDF i stream))) - ((AND (LISTP values) - (POSITIONP (CAR values)) - (NUMBERP (CAAR values))) (* A list of positions) - (IRIS.SENDL (LLSH nVals 2) - stream) - (for i in values bind (counter _ -1) - do (if (IRIS.DOSYNC (add counter 1)) - then (IRIS.PUTGCHAR IRIS\AESC stream)) - (IRIS.SENDF (CAR i) - stream) - (if (IRIS.DOSYNC (add counter 1)) - then (IRIS.PUTGCHAR IRIS\AESC stream)) - (IRIS.SENDF (CDR i) - stream))) - [(AND (LISTP values) - (LISTP (CAR values)) - (NUMBERP (CAAR values))) (* A list of list of numbers) - (IRIS.SENDL (LLSH nVals 2) - stream) - (for i in values bind (counter _ -1) do (for j in i eachtime (add counter 1) - do (if (IRIS.DOSYNC counter) - then (IRIS.PUTGCHAR IRIS\AESC - stream)) - (IRIS.SENDF j stream] - (T (ERROR values "-- is not an list [of list]/array of numbers"]) - -(IRIS.SENDLS - (LAMBDA (values nVals stream) (* LeL, " 9-Sep-85 02:14") - - (* * Sends an array or (possibly two-layered) list of numbers) - - - (COND - ((AND (ARRAYP values) - (NUMBERP (ELT values (ARRAYORIG values)))) (* An array of numbers) - (IRIS.SENDL (LLSH nVals 2) - stream) - (for i from 0 to (SUB1 nVals) as ptr from (ARRAYORIG values) - do (if (IRIS.DOSYNC i) - then (IRIS.PUTGCHAR IRIS\AESC stream)) - (IRIS.SENDL (ELT values ptr) - stream))) - ((AND (LISTP values) - (NUMBERP (CAR values))) (* A list of numbers) - (IRIS.SENDL (LLSH nVals 2) - stream) - (for i in values as counter from 0 - do (if (IRIS.DOSYNC counter) - then (IRIS.PUTGCHAR IRIS\AESC stream)) - (IRIS.SENDL i stream))) - ((AND (LISTP values) - (LISTP (CAR values)) - (NUMBERP (CAAR values))) (* A list of list of numbers) - (IRIS.SENDL (LLSH nVals 2) - stream) - (for i in values bind (counter _ -1) do (for j in i eachtime (add counter 1) - do (if (IRIS.DOSYNC counter) - then (IRIS.PUTGCHAR IRIS\AESC stream)) - (IRIS.SENDL j stream)))) - (T (ERROR values "-- is not an list [of list]/array of numbers"))))) - -(IRIS.SENDQS - (LAMBDA (values nVals stream) (* LeL, " 2-Sep-85 12:47") - (IRIS.SENDL (LLSH nVals 3)) - (COND - ((ARRAYP values) - (for i from 0 to (LLSH nVals 1) by 2 as ptr from 0 by 8 - do (if (IRIS.DOSYNC i) - then (IRIS.PUTGCHAR IRIS\AESC stream)) - (IRIS.SENDL (LOGOR (LLSH (ELT values ptr) - 16) - (LLSH (ELT values (IPLUS ptr 1)) - 24) - (LLSH (ELT values (IPLUS ptr 2)) - 8) - (ELT values (IPLUS ptr 3))) - stream) - (if (IRIS.DOSYNC (IPLUS i 1)) - then (IRIS.PUTGCHAR IRIS\AESC stream)) - (IRIS.SENDL (LOGOR (LLSH (ELT values (IPLUS ptr 4)) - 24) - (LLSH (ELT values (IPLUS ptr 5)) - 16) - (ELT values (IPLUS ptr 6)) - (LLSH (ELT values (IPLUS ptr 7)) - 8)) - stream))) - ((LISTP values) - (for i from 0 to (LLSH nVals 1) by 2 as ptr from values by 8 - do (if (IRIS.DOSYNC i) - then (IRIS.PUTGCHAR IRIS\AESC stream)) - (IRIS.SENDL (LOGOR (LLSH (CAR values) - 16) - (LLSH (CADR values) - 24) - (LLSH (CADDR values) - 8) - (CADDDR values)) - stream) - (SETQ values (NTH values 5)) - (if (IRIS.DOSYNC (IPLUS i 1)) - then (IRIS.PUTGCHAR IRIS\AESC stream)) - (IRIS.SENDL (LOGOR (LLSH (ELT values (CAR values)) - 24) - (LLSH (ELT values (CADR values)) - 16) - (CADDR values) - (LLSH (CADDDR values) - 8)) - stream) - (SETQ values (NTH values 5)))) - (T (ERROR values "-- neither an array nor a list"))))) - -(IRIS.SENDSS - (LAMBDA (values nVals stream) (* LeL, " 6-Sep-85 14:20") - - (* * Sends an array or list of numbers shorts (SMALLPs)) - - - (LET ((nLongs (LRSH nVals 1)) - (nBytes (LLSH nVals 1))) - (COND - ((AND (ARRAYP values) - (NUMBERP (ELT values (ARRAYORIG values)))) - (* An array of numbers) - (IRIS.SENDL nBytes stream) - (for i from 0 to (SUB1 nLongs) as ptr from (ARRAYORIG values) by 2 bind aLong - do (SETQ aLong (ELT values ptr)) - (if (OR (LESSP i nLongs) - (EVENP nVals)) - then (add aLong (LLSH (ELT values (ADD1 ptr)) - 16))) - (if (IRIS.DOSYNC i) - then (IRIS.PUTGCHAR IRIS\AESC stream)) - (IRIS.SENDL aLong stream))) - ((AND (LISTP values) - (NUMBERP (CAR values))) (* A list of numbers) - (IRIS.SENDL nBytes stream) - (for i from 0 to (SUB1 nLongs) bind aLong (pnt _ values) - do (SETQ aLong (pop pnt)) - (if pnt - then (add aLong (LLSH (pop pnt) - 16))) - (if (IRIS.DOSYNC i) - then (IRIS.PUTGCHAR IRIS\AESC stream)) - (IRIS.SENDL i stream))) - (T (ERROR values "-- is not an list [of list]/array of numbers")))))) - -(IRIS.SETFASTCOM - (LAMBDA (STREAM) (* gbn "19-Mar-85 21:02") - (IRIS.GCMD 1 STREAM))) -) -(DECLARE: EVAL@COMPILE -[PUTPROPS IRIS.DOSYNC MACRO ((i) - (COND ((EQ 0 (LOGAND i 7))) - (T NIL] -(PUTPROPS IRIS.ECHOFF MACRO ((STREAM) - (STREAMPROP STREAM (QUOTE IRIS\ECHOFLAG) - NIL))) -(PUTPROPS IRIS.ECHOON MACRO ((STREAM) - (STREAMPROP STREAM (QUOTE IRIS\ECHOFLAG) - T))) -(PUTPROPS IRIS.FLUSHG MACRO (= . SPP.FORCEOUTPUT)) -(PUTPROPS IRIS.GCMD MACRO ((CMD STREAM) - (* Sends a command) - (BOUT STREAM IRIS\TESC) - (* Escape character) - (IRIS.SEND6 CMD STREAM) - (* ...followed by the number in two six bits transmission) - (IRIS.SEND6 (LRSH CMD 6) - STREAM))) -[PUTPROPS IRIS.GETGCHAR MACRO ((STREAM) - (BIN (SPPINPUTSTREAM STREAM] -[PUTPROPS IRIS.GEXIT MACRO ((stream) - (if stream then (IRIS.FLUSHG stream) - else - (IRIS.FLUSHG IRISCONN] -(PUTPROPS IRIS.GFINISH MACRO ((stream) - (* null defn) - (IRIS.FLUSHG stream))) -(PUTPROPS IRIS.PUTGCHAR MACRO ((onechar SPPSTREAM) - (BOUT SPPSTREAM onechar))) -[PUTPROPS IRIS.REC32 MACRO ((stream) - (for j from 0 to 30 by 6 sum (LLSH (IRIS.REC6 stream) - j] -(PUTPROPS IRIS.REC6 MACRO ((STREAM) - (* Recieve a 6 bit word; we substract 32 because the other end add3s 32 to avoid sending - control characters) - (* NO LONGER ANDS 63) - (IDIFFERENCE (IRIS.GETGCHAR STREAM) - 32))) -[PUTPROPS IRIS.RECB MACRO (LAMBDA (STREAM) - (* Receive a byte) - (* is passed the spp outputstream, so must grab the input stream - from it) - (SETQ STREAM (SPPINPUTSTREAM STREAM)) - (while (NEQ IRIS\RESC (BIN STREAM))) - (LOGOR (IRIS.REC6 STREAM) - (LLSH (IRIS.REC6 STREAM) - 6] -[PUTPROPS IRIS.RECCR MACRO ((STREAM) - (* recieve a CarriageReturn) - (IRIS.GETGCHAR STREAM) - (* OR (EQ (IRIS.GETGCHAR STREAM) - (IPLUS 32 (CHARCODE CR))) - (ERROR "IRIS.RECCR received a non-carriage return from the IRIS"] -[PUTPROPS IRIS.RECF MACRO (LAMBDA (SPPSTREAM) - (* gbn "17-Jun-85 17:31") - (* receive a float. uses IRIS.RECL to receive a 32 bit word and - convert it to float) - (PROG (AFLOAT ALONG) - (SETQ ALONG (IRIS.RECL SPPSTREAM)) - (SETQ AFLOAT (NCREATE (QUOTE FLOATP))) - (replace (FLOATP HIWORD) - of AFLOAT with (LRSH ALONG 16)) - (replace (FLOATP LOWORD) - of AFLOAT with (LOGAND ALONG 65535)) - (RETURN AFLOAT] -(PUTPROPS IRIS.RECL MACRO ((stream) - (while (NEQ IRIS\RESC (IRIS.GETGCHAR stream)) - do NIL) - (IRIS.REC32 stream))) -(PUTPROPS IRIS.RECO MACRO ((STREAM) - (* Recieve a boolean) - (IRIS.RECB STREAM))) -(PUTPROPS IRIS.RECOS MACRO ((values STREAM) - (* Recieve an array of boolean) - (IRIS.RECBS values STREAM))) -[PUTPROPS IRIS.RECS MACRO ((stream) - (* Recieve a SMALL INTEGER) - (while (NEQ (IRIS.GETGCHAR stream) - IRIS\RESC) - do NIL) - (LET* ((1stbyte (IRIS.REC6 stream)) - (2ndbyte (IRIS.REC6 stream))) - (LOGOR 1stbyte (LLSH 2ndbyte 6) - (LLSH (IRIS.REC6 stream) - 12] -[PUTPROPS IRIS.SEND6 MACRO ((n STREAM) - (* Add 32 to avoid sending control characters) - (BOUT STREAM (IPLUS 32 (LOGAND 63 n] -(PUTPROPS IRIS.SEND8 MACRO ((n STREAM) - (BOUT STREAM n))) -(PUTPROPS IRIS.SENDB MACRO ((VALUE STREAM) - (* Send a byte) - (IRIS.SEND8 VALUE STREAM))) -(PUTPROPS IRIS.SENDC MACRO ((string stream) - (* Send a string of characters) - (* should probably allocate a global resource) - (IRIS.SENDBS (NCONC1 (CHCON string) - 0) - (ADD1 (NCHARS string)) - stream))) -[PUTPROPS IRIS.SENDF MACRO ((value stream) - (* Send a float) - (LET ((float (FLOAT value))) - (IRIS.SEND8 (\GETBASEBYTE float 0) - stream) - (IRIS.SEND8 (\GETBASEBYTE float 1) - stream) - (IRIS.SEND8 (\GETBASEBYTE float 2) - stream) - (IRIS.SEND8 (\GETBASEBYTE float 3) - stream] -[PUTPROPS IRIS.SENDL MACRO (LAMBDA (VALUE STREAM) - (* Sends a 32 bit integer) - (SELECTQ (TYPENAME VALUE) - (SMALLP (if (ILESSP VALUE 0) - then - (IRIS.SEND8 255 STREAM) - (IRIS.SEND8 255 STREAM) - else - (IRIS.SEND8 0 STREAM) - (IRIS.SEND8 0 STREAM)) - (IRIS.SEND8 (LOGAND (LRSH VALUE 8) - 255) - STREAM) - (IRIS.SEND8 (LOGAND VALUE 255) - STREAM)) - (FIXP (IRIS.SEND8 (\GETBASEBYTE VALUE 0) - STREAM) - (IRIS.SEND8 (\GETBASEBYTE VALUE 1) - STREAM) - (IRIS.SEND8 (\GETBASEBYTE VALUE 2) - STREAM) - (IRIS.SEND8 (\GETBASEBYTE VALUE 3) - STREAM)) - (ERROR VALUE - "can't be sent thru IRIS.SENDL (neither an FIXP nor a SMALLP)"] -(PUTPROPS IRIS.SENDO MACRO ((value STREAM) - (* send a boolean) - (IRIS.SENDB value STREAM))) -(PUTPROPS IRIS.SENDS MACRO ((value STREAM) - (* Send a SMALL INTEGER (16 bits)) - (IRIS.SEND8 (LOGAND 255 (LRSH value 8)) - STREAM) - (IRIS.SEND8 (LOGAND 255 value) - STREAM))) -[PUTPROPS SPPINPUTSTREAM MACRO ((OUTPUTSTREAM) - (* gbn "17-Jun-85 17:40") - (fetch (SPPCON SPPINPUTSTREAM) - of - (fetch (STREAM F1) - of OUTPUTSTREAM] -[PUTPROPS SPPSTREAM? MACRO (LAMBDA (STREAM) - (AND (TYPENAME STREAM (QUOTE STREAM)) - (TYPENAMEP (fetch F1 of STREAM) - (QUOTE SPPCON] -) -(DECLARE: EVAL@COMPILE - -(RPAQQ STDERR T) - -(RPAQQ IRIS\AESC 46) - -(RPAQQ IRIS\RESC 126) - -(RPAQQ IRIS\TESC 16) - -(CONSTANTS (STDERR T) - (IRIS\AESC 46) - (IRIS\RESC 126) - (IRIS\TESC 16)) -) -(DECLARE: EVAL@LOAD DONTCOPY -(LOADDEF (QUOTE FLOATP) - (QUOTE RECORD) - (QUOTE LLARITH)) -) - -(RPAQ? IRISCONN ) - -(RPAQ? IRISSPPON T) -(DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS - -(ADDTOVAR NLAMA ) - -(ADDTOVAR NLAML ) - -(ADDTOVAR LAMA ) -) -(PUTPROPS IRISIO COPYRIGHT ("Xerox Corporation" 1985)) -(DECLARE: DONTCOPY - (FILEMAP (NIL (1379 2155 (IRIS.GEXIT 1389 . 1514) (IRIS.GFLUSH 1516 . 1642) (IRIS.GINIT 1644 . 1986) ( -IRIS.GRESET 1988 . 2153)) (2392 15323 (IRIS.RECBS 2402 . 3820) (IRIS.RECFS 3822 . 4990) (IRIS.RECLS -4992 . 5841) (IRIS.RECSS 5843 . 6941) (IRIS.SENDBS 6943 . 8275) (IRIS.SENDFS 8277 . 10344) ( -IRIS.SENDLS 10346 . 11826) (IRIS.SENDQS 11828 . 13707) (IRIS.SENDSS 13709 . 15181) (IRIS.SETFASTCOM -15183 . 15321))))) -STOP diff --git a/obsolete/lispusers/IRISLIB b/obsolete/lispusers/IRISLIB deleted file mode 100644 index 44a0f4e2..00000000 --- a/obsolete/lispusers/IRISLIB +++ /dev/null @@ -1,3943 +0,0 @@ -(DEFINE-FILE-INFO §READTABLE "INTERLISP" §PACKAGE "INTERLISP") -(FILECREATED " 2-Feb-87 23:35:29" {ERIS}NEXT>IRISLIB.;7 150378 - - changes to%: (VARS IRISLIBCOMS) - (FNS IRIS\ERROR) - - previous date%: " 9-Sep-85 05:32:30" {ERIS}NEXT>IRISLIB.;1) - - -(* " -Copyright (c) 1985, 1987 by Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT IRISLIBCOMS) - -(RPAQQ IRISLIBCOMS - ((DECLARE%: EVAL@COMPILE DONTCOPY (FILES SPPDECLS (LOADCOMP) - IRISIO IRISSTREAM)) - (GLOBALVARS IRISCONN) - (FNS IRIS.XSETSLOWCOM IRIS.XSETFASTCOM IRIS.GVERSION IRIS.GDOWNLOAD IRIS.PAGECOLOR - IRIS.TEXTCOLOR IRIS.TEXTPORT IRIS.ARC IRIS.ARCF IRIS.ARCFI IRIS.ARCI IRIS.ATTACHCURSOR - IRIS.BACKBUFFER IRIS.BBOX2 IRIS.BBOX2I IRIS.BLINK IRIS.CALLOBJ IRIS.CHARSTR IRIS.CIRC - IRIS.CIRCF IRIS.CIRCFI IRIS.CIRCI IRIS.CLEAR IRIS.CLEARHITCODE IRIS.CLOSEOBJ IRIS.CMOV - IRIS.CMOV2 IRIS.CMOV2I IRIS.CMOVI IRIS.COLOR IRIS.CURSOFF IRIS.CURSON IRIS.CURVEIT - IRIS.DEFCURSOR IRIS.DEFLINESTYLE IRIS.DEFRASTERFONT IRIS.DELOBJ IRIS.DOUBLEBUFFER - IRIS.DRAW IRIS.DRAW2 IRIS.DRAW2I IRIS.DRAWI IRIS.EDITOBJ IRIS.ENDPICK IRIS.ENDSELECT - IRIS.FINISH IRIS.FONT IRIS.FRONTBUFFER IRIS.GCONFIG IRIS.GENOBJ IRIS.GENTAG - IRIS.GETBUFFER IRIS.GETBUTTON IRIS.GETCMMODE IRIS.GETCOLOR IRIS.GETCURSOR IRIS.GETDEPTH - IRIS.GETDISPLAYMODE IRIS.GETFONT IRIS.GETHEIGHT IRIS.GETHITCODE IRIS.GETLSBACKUP - IRIS.GETLSTYLE IRIS.GETLWIDTH IRIS.GETMAP IRIS.GETMATRIX IRIS.GETPLANES IRIS.GETRESETLS - IRIS.GETSCRMASK IRIS.GETVALUATOR IRIS.GETVIEWPORT IRIS.GETWRITEMASK IRIS.XGINIT - IRIS.XGRESET IRIS.GRGBCOLOR IRIS.GRGBCURSOR IRIS.GRGBMASK IRIS.ISOBJ IRIS.ISTAG - IRIS.LINEWIDTH IRIS.LOADMATRIX IRIS.LOOKAT IRIS.LSBACKUP IRIS.MAKEOBJ IRIS.MAKETAG - IRIS.MAPCOLOR IRIS.MAPW IRIS.MAPW2 IRIS.MOVE IRIS.MOVE2 IRIS.MOVE2I IRIS.MOVEI - IRIS.MULTIMAP IRIS.MULTMATRIX IRIS.NOISE IRIS.ONEMAP IRIS.ORTHO IRIS.ORTHO2 - IRIS.PERSPECTIVE IRIS.PICK IRIS.PICKSIZE IRIS.PNT IRIS.PNT2 IRIS.PNT2I IRIS.PNTI - IRIS.POLARVIEW IRIS.POLF IRIS.POLF2 IRIS.POLF2I IRIS.POLFI IRIS.POLY IRIS.POLY2 - IRIS.POLY2I IRIS.POLYI IRIS.POPATTRIBUTES IRIS.POPMATRIX IRIS.POPVIEWPORT - IRIS.PUSHATTRIBUTES IRIS.PUSHMATRIX IRIS.PUSHVIEWPORT IRIS.QENTER IRIS.QREAD IRIS.QRESET - IRIS.QTEST IRIS.READPIXELS IRIS.READRGB IRIS.RECT IRIS.RECTF IRIS.RECTFI IRIS.RECTI - IRIS.RESETLS IRIS.RGBCOLOR IRIS.RGBCURSOR IRIS.RGBMODE IRIS.RGBWRITEMASK IRIS.ROTATE - IRIS.SCALE IRIS.SCRMASK IRIS.SELECT IRIS.SETBUTTON IRIS.SETCURSOR IRIS.SETDEPTH - IRIS.SETLINESTYLE IRIS.SETMAP IRIS.SETVALUATOR IRIS.SINGLEBUFFER IRIS.STRWIDTH - IRIS.SWAPBUFFERS IRIS.SWAPINTERVAL IRIS.GSYNC IRIS.TIE IRIS.TRANSLATE IRIS.VIEWPORT - IRIS.WINDOW IRIS.WRITEMASK IRIS.WRITEPIXELS IRIS.WRITERGB IRIS.TPON IRIS.TPOFF - IRIS.TEXTWRITEMASK IRIS.XGEXIT IRIS.CLKON IRIS.CLKOFF IRIS.LAMPON IRIS.LAMPOFF - IRIS.SETBELL IRIS.RINGBELL IRIS.TADELAY IRIS.ARCFS IRIS.ARCS IRIS.BBOX2S - IRIS.BLANKSCREEN IRIS.BLKQREAD IRIS.GETMCOLOR IRIS.CALLFUNC IRIS.CHUNKSIZE IRIS.CIRCFS - IRIS.CIRCS IRIS.CMOV2S IRIS.CMOVS IRIS.COMPACTIFY IRIS.QDEVICE IRIS.UNQDEVICE - IRIS.CURVEBASIS IRIS.CURVEPRECISION IRIS.CRV IRIS.GETTP IRIS.GBEGIN IRIS.TEXTINIT - IRIS.CRVN IRIS.DEFBASIS IRIS.DELTAG IRIS.DEPTHCUE IRIS.DRAW2S IRIS.DRAWS - IRIS.ENDFEEDBACK IRIS.FEEDBACK IRIS.GETCPOS IRIS.GETDCM IRIS.GETGPOS IRIS.GETLSREPEAT - IRIS.GETMEM IRIS.GETMONITOR IRIS.GETOPENOBJ IRIS.GETZBUFFER IRIS.GEWRITE IRIS.INITNAMES - IRIS.LOADNAME IRIS.LSREPEAT IRIS.MOVE2S IRIS.MOVES IRIS.NEWTAG IRIS.PASSTHROUGH - IRIS.PATCHBASIS IRIS.PATCHPRECISION IRIS.PATCH IRIS.PCLOS IRIS.PDR IRIS.PDR2 IRIS.PDRI - IRIS.PDR2I IRIS.PDRS IRIS.PDR2S IRIS.POLF2S IRIS.POLFS IRIS.POLY2S IRIS.POLYS IRIS.PMV - IRIS.PMV2 IRIS.PMVI IRIS.PMV2I IRIS.PMVS IRIS.PMV2S IRIS.PNT2S IRIS.PNTS IRIS.POPNAME - IRIS.PUSHNAME IRIS.RDR IRIS.RDR2 IRIS.RDRI IRIS.RDR2I IRIS.RDRS IRIS.RDR2S IRIS.RECTCOPY - IRIS.RMV IRIS.RMV2 IRIS.RMVI IRIS.RMV2I IRIS.RMVS IRIS.RMV2S IRIS.RPDR IRIS.RPDR2 - IRIS.RPDRI IRIS.RPDR2I IRIS.RPDRS IRIS.RPDR2S IRIS.RPMV IRIS.RPMV2 IRIS.RPMVI - IRIS.RPMV2I IRIS.RPMVS IRIS.RPMV2S IRIS.SETDBLIGHTS IRIS.SETMONITOR IRIS.SETSHADE - IRIS.SHADERANGE IRIS.SPCLOS IRIS.SPLF IRIS.SPLF2 IRIS.SPLFI IRIS.SPLF2I IRIS.SPLFS - IRIS.SPLF2S IRIS.XFPT IRIS.XFPTI IRIS.XFPTS IRIS.XFPT2 IRIS.XFPT2I IRIS.XFPT2S - IRIS.XFPT4 IRIS.XFPT4I IRIS.XFPT4S IRIS.ZBUFFER IRIS.CHARST IRIS.STRWID IRIS.DEFPATTERN - IRIS.GETPATTERN IRIS.SETPATTERN IRIS.OBJINSERT IRIS.OBJDELETE IRIS.OBJREPLACE - IRIS.ZCLEAR IRIS.CURORIGIN IRIS.PAGEWRITEMASK IRIS.PATCHCURVES IRIS.DBTEXT IRIS.LASTONE - IRIS\ERROR))) -(DECLARE%: EVAL@COMPILE DONTCOPY -(FILESLOAD SPPDECLS (LOADCOMP) - IRISIO IRISSTREAM) -) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS IRISCONN) -) -(DEFINEQ - -(IRIS.XSETSLOWCOM - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 0 sppStream]) - -(IRIS.XSETFASTCOM - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 1 sppStream]) - -(IRIS.GVERSION - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 2 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GDOWNLOAD - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 3 sppStream]) - -(IRIS.PAGECOLOR - [LAMBDA (color sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if color - then (IRIS.GCMD 4 sppStream) - (IRIS.SENDS color sppStream) - else (IRIS\ERROR %'IRIS.PAGECOLOR %' (color]) - -(IRIS.TEXTCOLOR - [LAMBDA (color sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if color - then (IRIS.GCMD 5 sppStream) - (IRIS.SENDS color sppStream) - else (IRIS\ERROR %'IRIS.TEXTCOLOR %' (color]) - -(IRIS.TEXTPORT - [LAMBDA (left right top bottom sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND left right top bottom) - then (IRIS.GCMD 6 sppStream) - (IRIS.SENDS left sppStream) - (IRIS.SENDS right sppStream) - (IRIS.SENDS top sppStream) - (IRIS.SENDS bottom sppStream) - else (IRIS\ERROR %'IRIS.TEXTPORT %' (left right top bottom]) - -(IRIS.ARC - [LAMBDA (x y radius startang endang sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y radius startang endang) - then (IRIS.GCMD 7 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - (IRIS.SENDF radius sppStream) - (IRIS.SENDS startang sppStream) - (IRIS.SENDS endang sppStream) - else (IRIS\ERROR %'IRIS.ARC %' (x y radius startang endang]) - -(IRIS.ARCF - [LAMBDA (x y radius startang endang sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y radius startang endang) - then (IRIS.GCMD 8 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - (IRIS.SENDF radius sppStream) - (IRIS.SENDS startang sppStream) - (IRIS.SENDS endang sppStream) - else (IRIS\ERROR %'IRIS.ARCF %' (x y radius startang endang]) - -(IRIS.ARCFI - [LAMBDA (x y radius startang endang sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y radius startang endang) - then (IRIS.GCMD 9 sppStream) - (IRIS.SENDL x sppStream) - (IRIS.SENDL y sppStream) - (IRIS.SENDL radius sppStream) - (IRIS.SENDS startang sppStream) - (IRIS.SENDS endang sppStream) - else (IRIS\ERROR %'IRIS.ARCFI %' (x y radius startang endang]) - -(IRIS.ARCI - [LAMBDA (x y radius startang endang sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y radius startang endang) - then (IRIS.GCMD 10 sppStream) - (IRIS.SENDL x sppStream) - (IRIS.SENDL y sppStream) - (IRIS.SENDL radius sppStream) - (IRIS.SENDS startang sppStream) - (IRIS.SENDS endang sppStream) - else (IRIS\ERROR %'IRIS.ARCI %' (x y radius startang endang]) - -(IRIS.ATTACHCURSOR - [LAMBDA (vx vy sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND vx vy) - then (IRIS.GCMD 11 sppStream) - (IRIS.SENDS vx sppStream) - (IRIS.SENDS vy sppStream) - else (IRIS\ERROR %'IRIS.ATTACHCURSOR %' (vx vy]) - -(IRIS.BACKBUFFER - [LAMBDA (b sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if b - then (IRIS.GCMD 12 sppStream) - (IRIS.SENDO b sppStream) - else (IRIS\ERROR %'IRIS.BACKBUFFER %' (b]) - -(IRIS.BBOX2 - [LAMBDA (xmin ymin x1 y1 x2 y2 sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND xmin ymin x1 y1 x2 y2) - then (IRIS.GCMD 14 sppStream) - (IRIS.SENDS xmin sppStream) - (IRIS.SENDS ymin sppStream) - (IRIS.SENDF x1 sppStream) - (IRIS.SENDF y1 sppStream) - (IRIS.SENDF x2 sppStream) - (IRIS.SENDF y2 sppStream) - else (IRIS\ERROR %'IRIS.BBOX2 %' (xmin ymin x1 y1 x2 y2]) - -(IRIS.BBOX2I - [LAMBDA (xmin ymin x1 y1 x2 y2 sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND xmin ymin x1 y1 x2 y2) - then (IRIS.GCMD 15 sppStream) - (IRIS.SENDS xmin sppStream) - (IRIS.SENDS ymin sppStream) - (IRIS.SENDL x1 sppStream) - (IRIS.SENDL y1 sppStream) - (IRIS.SENDL x2 sppStream) - (IRIS.SENDL y2 sppStream) - else (IRIS\ERROR %'IRIS.BBOX2I %' (xmin ymin x1 y1 x2 y2]) - -(IRIS.BLINK - [LAMBDA (rate color red green blue sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND rate color red green blue) - then (IRIS.GCMD 17 sppStream) - (IRIS.SENDS rate sppStream) - (IRIS.SENDS color sppStream) - (IRIS.SENDS red sppStream) - (IRIS.SENDS green sppStream) - (IRIS.SENDS blue sppStream) - else (IRIS\ERROR %'IRIS.BLINK %' (rate color red green blue]) - -(IRIS.CALLOBJ - [LAMBDA (obj sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if obj - then (IRIS.GCMD 18 sppStream) - (IRIS.SENDL obj sppStream) - else (IRIS\ERROR %'IRIS.CALLOBJ %' (obj]) - -(IRIS.CHARSTR - [LAMBDA (str sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if str - then (IRIS.GCMD 19 sppStream) - (IRIS.SENDC str sppStream) - else (IRIS\ERROR %'IRIS.CHARSTR %' (str]) - -(IRIS.CIRC - [LAMBDA (x y radius sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y radius) - then (IRIS.GCMD 20 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - (IRIS.SENDF radius sppStream) - else (IRIS\ERROR %'IRIS.CIRC %' (x y radius]) - -(IRIS.CIRCF - [LAMBDA (x y radius sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y radius) - then (IRIS.GCMD 21 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - (IRIS.SENDF radius sppStream) - else (IRIS\ERROR %'IRIS.CIRCF %' (x y radius]) - -(IRIS.CIRCFI - [LAMBDA (x y radius sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y radius) - then (IRIS.GCMD 22 sppStream) - (IRIS.SENDL x sppStream) - (IRIS.SENDL y sppStream) - (IRIS.SENDL radius sppStream) - else (IRIS\ERROR %'IRIS.CIRCFI %' (x y radius]) - -(IRIS.CIRCI - [LAMBDA (x y radius sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y radius) - then (IRIS.GCMD 23 sppStream) - (IRIS.SENDL x sppStream) - (IRIS.SENDL y sppStream) - (IRIS.SENDL radius sppStream) - else (IRIS\ERROR %'IRIS.CIRCI %' (x y radius]) - -(IRIS.CLEAR - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 24 sppStream]) - -(IRIS.CLEARHITCODE - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 25 sppStream]) - -(IRIS.CLOSEOBJ - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 29 sppStream]) - -(IRIS.CMOV - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 30 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - (IRIS.SENDF z sppStream) - else (IRIS\ERROR %'IRIS.CMOV %' (x y z]) - -(IRIS.CMOV2 - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 31 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - else (IRIS\ERROR %'IRIS.CMOV2 %' (x y]) - -(IRIS.CMOV2I - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 32 sppStream) - (IRIS.SENDL x sppStream) - (IRIS.SENDL y sppStream) - else (IRIS\ERROR %'IRIS.CMOV2I %' (x y]) - -(IRIS.CMOVI - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 33 sppStream) - (IRIS.SENDL x sppStream) - (IRIS.SENDL y sppStream) - (IRIS.SENDL z sppStream) - else (IRIS\ERROR %'IRIS.CMOVI %' (x y z]) - -(IRIS.COLOR - [LAMBDA (color sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if color - then (IRIS.GCMD 34 sppStream) - (IRIS.SENDS color sppStream) - else (IRIS\ERROR %'IRIS.COLOR %' (color]) - -(IRIS.CURSOFF - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 35 sppStream]) - -(IRIS.CURSON - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 36 sppStream]) - -(IRIS.CURVEIT - [LAMBDA (iterationcount sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if iterationcount - then (IRIS.GCMD 38 sppStream) - (IRIS.SENDS iterationcount sppStream) - else (IRIS\ERROR %'IRIS.CURVEIT %' (iterationcount]) - -(IRIS.DEFCURSOR - [LAMBDA (n curs sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n curs) - then (IRIS.GCMD 39 sppStream) - (IRIS.SENDS n sppStream) - (IRIS.SENDSS curs 16 sppStream) - else (IRIS\ERROR %'IRIS.DEFCURSOR %' (n curs]) - -(IRIS.DEFLINESTYLE - [LAMBDA (n ls sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n ls) - then (IRIS.GCMD 40 sppStream) - (IRIS.SENDS n sppStream) - (IRIS.SENDS ls sppStream) - else (IRIS\ERROR %'IRIS.DEFLINESTYLE %' (n ls]) - -(IRIS.DEFRASTERFONT - [LAMBDA (n ht nc chars nr raster sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n ht nc chars nr raster) - then (IRIS.GCMD 42 sppStream) - (IRIS.SENDS n sppStream) - (IRIS.SENDS ht sppStream) - (IRIS.SENDS nc sppStream) - (IRIS.SENDQS chars nc sppStream) - (IRIS.SENDS nr sppStream) - (IRIS.SENDSS raster nr sppStream) - else (IRIS\ERROR %'IRIS.DEFRASTERFONT %' (n ht nc chars nr raster]) - -(IRIS.DELOBJ - [LAMBDA (obj sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if obj - then (IRIS.GCMD 45 sppStream) - (IRIS.SENDL obj sppStream) - else (IRIS\ERROR %'IRIS.DELOBJ %' (obj]) - -(IRIS.DOUBLEBUFFER - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 46 sppStream]) - -(IRIS.DRAW - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 47 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - (IRIS.SENDF z sppStream) - else (IRIS\ERROR %'IRIS.DRAW %' (x y z]) - -(IRIS.DRAW2 - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 48 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - else (IRIS\ERROR %'IRIS.DRAW2 %' (x y]) - -(IRIS.DRAW2I - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 49 sppStream) - (IRIS.SENDL x sppStream) - (IRIS.SENDL y sppStream) - else (IRIS\ERROR %'IRIS.DRAW2I %' (x y]) - -(IRIS.DRAWI - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 50 sppStream) - (IRIS.SENDL x sppStream) - (IRIS.SENDL y sppStream) - (IRIS.SENDL z sppStream) - else (IRIS\ERROR %'IRIS.DRAWI %' (x y z]) - -(IRIS.EDITOBJ - [LAMBDA (obj sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if obj - then (IRIS.GCMD 51 sppStream) - (IRIS.SENDL obj sppStream) - else (IRIS\ERROR %'IRIS.EDITOBJ %' (obj]) - -(IRIS.ENDPICK - [LAMBDA (buffer sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if buffer - then (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 52 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECSS buffer sppStream) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval) - else (IRIS\ERROR %'IRIS.ENDPICK %' (buffer]) - -(IRIS.ENDSELECT - [LAMBDA (buffer sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if buffer - then (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 53 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECSS buffer sppStream) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval) - else (IRIS\ERROR %'IRIS.ENDSELECT %' (buffer]) - -(IRIS.FINISH - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 54 sppStream]) - -(IRIS.FONT - [LAMBDA (fntnum sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if fntnum - then (IRIS.GCMD 55 sppStream) - (IRIS.SENDS fntnum sppStream) - else (IRIS\ERROR %'IRIS.FONT %' (fntnum]) - -(IRIS.FRONTBUFFER - [LAMBDA (b sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if b - then (IRIS.GCMD 56 sppStream) - (IRIS.SENDO b sppStream) - else (IRIS\ERROR %'IRIS.FRONTBUFFER %' (b]) - -(IRIS.GCONFIG - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 57 sppStream]) - -(IRIS.GENOBJ - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 58 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GENTAG - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 59 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GETBUFFER - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 60 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GETBUTTON - [LAMBDA (b sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if b - then (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 61 sppStream) - (IRIS.SENDS b sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECO sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval) - else (IRIS\ERROR %'IRIS.GETBUTTON %' (b]) - -(IRIS.GETCMMODE - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 62 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECO sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GETCOLOR - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 63 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GETCURSOR - [LAMBDA (index color wtm b sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND index color wtm b) - then (IRIS.ECHOFF sppStream) - (IRIS.GCMD 64 sppStream) - (IRIS.FLUSHG sppStream) - (SET index (IRIS.RECS sppStream)) - (SET color (IRIS.RECS sppStream)) - (SET wtm (IRIS.RECS sppStream)) - (SET b (IRIS.RECO sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - else (IRIS\ERROR %'IRIS.GETCURSOR %' (index color wtm b]) - -(IRIS.GETDEPTH - [LAMBDA (near far sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND near far) - then (IRIS.ECHOFF sppStream) - (IRIS.GCMD 65 sppStream) - (IRIS.FLUSHG sppStream) - (SET near (IRIS.RECS sppStream)) - (SET far (IRIS.RECS sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - else (IRIS\ERROR %'IRIS.GETDEPTH %' (near far]) - -(IRIS.GETDISPLAYMODE - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 66 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GETFONT - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 67 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GETHEIGHT - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 68 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GETHITCODE - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 69 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GETLSBACKUP - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 70 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECO sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GETLSTYLE - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 71 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GETLWIDTH - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 72 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GETMAP - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 73 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GETMATRIX - [LAMBDA (m sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if m - then (IRIS.ECHOFF sppStream) - (IRIS.GCMD 74 sppStream) - (IRIS.FLUSHG sppStream) - (IRIS.RECFS m sppStream) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - else (IRIS\ERROR %'IRIS.GETMATRIX %' (m]) - -(IRIS.GETPLANES - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 76 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GETRESETLS - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 77 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECO sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GETSCRMASK - [LAMBDA (left right bottom top sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND left right bottom top) - then (IRIS.ECHOFF sppStream) - (IRIS.GCMD 78 sppStream) - (IRIS.FLUSHG sppStream) - (SET left (IRIS.RECS sppStream)) - (SET right (IRIS.RECS sppStream)) - (SET bottom (IRIS.RECS sppStream)) - (SET top (IRIS.RECS sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - else (IRIS\ERROR %'IRIS.GETSCRMASK %' (left right bottom top]) - -(IRIS.GETVALUATOR - [LAMBDA (v sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if v - then (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 80 sppStream) - (IRIS.SENDS v sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval) - else (IRIS\ERROR %'IRIS.GETVALUATOR %' (v]) - -(IRIS.GETVIEWPORT - [LAMBDA (left right bottom top sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND left right bottom top) - then (IRIS.ECHOFF sppStream) - (IRIS.GCMD 81 sppStream) - (IRIS.FLUSHG sppStream) - (SET left (IRIS.RECS sppStream)) - (SET right (IRIS.RECS sppStream)) - (SET bottom (IRIS.RECS sppStream)) - (SET top (IRIS.RECS sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - else (IRIS\ERROR %'IRIS.GETVIEWPORT %' (left right bottom top]) - -(IRIS.GETWRITEMASK - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 82 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.XGINIT - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 83 sppStream]) - -(IRIS.XGRESET - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 84 sppStream]) - -(IRIS.GRGBCOLOR - [LAMBDA (red green blue sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND red green blue) - then (IRIS.ECHOFF sppStream) - (IRIS.GCMD 85 sppStream) - (IRIS.FLUSHG sppStream) - (SET red (IRIS.RECS sppStream)) - (SET green (IRIS.RECS sppStream)) - (SET blue (IRIS.RECS sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - else (IRIS\ERROR %'IRIS.GRGBCOLOR %' (red green blue]) - -(IRIS.GRGBCURSOR - [LAMBDA (index red green blue redm greenm blum b sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND index red green blue redm greenm blum b) - then (IRIS.ECHOFF sppStream) - (IRIS.GCMD 86 sppStream) - (IRIS.FLUSHG sppStream) - (SET index (IRIS.RECS sppStream)) - (SET red (IRIS.RECS sppStream)) - (SET green (IRIS.RECS sppStream)) - (SET blue (IRIS.RECS sppStream)) - (SET redm (IRIS.RECS sppStream)) - (SET greenm (IRIS.RECS sppStream)) - (SET blum (IRIS.RECS sppStream)) - (SET b (IRIS.RECO sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - else (IRIS\ERROR %'IRIS.GRGBCURSOR %' (index red green blue redm greenm blum b]) - -(IRIS.GRGBMASK - [LAMBDA (redm greenm blum sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND redm greenm blum) - then (IRIS.ECHOFF sppStream) - (IRIS.GCMD 87 sppStream) - (IRIS.FLUSHG sppStream) - (SET redm (IRIS.RECS sppStream)) - (SET greenm (IRIS.RECS sppStream)) - (SET blum (IRIS.RECS sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - else (IRIS\ERROR %'IRIS.GRGBMASK %' (redm greenm blum]) - -(IRIS.ISOBJ - [LAMBDA (obj sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if obj - then (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 89 sppStream) - (IRIS.SENDL obj sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECO sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval) - else (IRIS\ERROR %'IRIS.ISOBJ %' (obj]) - -(IRIS.ISTAG - [LAMBDA (t sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if t - then (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 90 sppStream) - (IRIS.SENDL t sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECO sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval) - else (IRIS\ERROR %'IRIS.ISTAG %' (t]) - -(IRIS.LINEWIDTH - [LAMBDA (n sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if n - then (IRIS.GCMD 92 sppStream) - (IRIS.SENDS n sppStream) - else (IRIS\ERROR %'IRIS.LINEWIDTH %' (n]) - -(IRIS.LOADMATRIX - [LAMBDA (m sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if m - then (IRIS.GCMD 93 sppStream) - (IRIS.SENDFS m 16 sppStream) - else (IRIS\ERROR %'IRIS.LOADMATRIX %' (m]) - -(IRIS.LOOKAT - [LAMBDA (vx vy vz px py pz twist sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND vx vy vz px py pz twist) - then (IRIS.GCMD 94 sppStream) - (IRIS.SENDF vx sppStream) - (IRIS.SENDF vy sppStream) - (IRIS.SENDF vz sppStream) - (IRIS.SENDF px sppStream) - (IRIS.SENDF py sppStream) - (IRIS.SENDF pz sppStream) - (IRIS.SENDS twist sppStream) - else (IRIS\ERROR %'IRIS.LOOKAT %' (vx vy vz px py pz twist]) - -(IRIS.LSBACKUP - [LAMBDA (b sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if b - then (IRIS.GCMD 95 sppStream) - (IRIS.SENDO b sppStream) - else (IRIS\ERROR %'IRIS.LSBACKUP %' (b]) - -(IRIS.MAKEOBJ - [LAMBDA (obj sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if obj - then (IRIS.GCMD 96 sppStream) - (IRIS.SENDL obj sppStream) - else (IRIS\ERROR %'IRIS.MAKEOBJ %' (obj]) - -(IRIS.MAKETAG - [LAMBDA (t sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if t - then (IRIS.GCMD 97 sppStream) - (IRIS.SENDL t sppStream) - else (IRIS\ERROR %'IRIS.MAKETAG %' (t]) - -(IRIS.MAPCOLOR - [LAMBDA (color red green blue sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND color red green blue) - then (IRIS.GCMD 98 sppStream) - (IRIS.SENDS color sppStream) - (IRIS.SENDS red sppStream) - (IRIS.SENDS green sppStream) - (IRIS.SENDS blue sppStream) - else (IRIS\ERROR %'IRIS.MAPCOLOR %' (color red green blue]) - -(IRIS.MAPW - [LAMBDA (vobj sx sy wx1 wy1 wz1 wx2 wy2 wz2 sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND vobj sx sy wx1 wy1 wz1 wx2 wy2 wz2) - then (IRIS.ECHOFF sppStream) - (IRIS.GCMD 99 sppStream) - (IRIS.SENDL vobj sppStream) - (IRIS.SENDS sx sppStream) - (IRIS.SENDS sy sppStream) - (IRIS.FLUSHG sppStream) - (SET wx1 (IRIS.RECF sppStream)) - (SET wy1 (IRIS.RECF sppStream)) - (SET wz1 (IRIS.RECF sppStream)) - (SET wx2 (IRIS.RECF sppStream)) - (SET wy2 (IRIS.RECF sppStream)) - (SET wz2 (IRIS.RECF sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - else (IRIS\ERROR %'IRIS.MAPW %' (vobj sx sy wx1 wy1 wz1 wx2 wy2 wz2]) - -(IRIS.MAPW2 - [LAMBDA (vobj sx sy wx wy sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND vobj sx sy wx wy) - then (IRIS.ECHOFF sppStream) - (IRIS.GCMD 100 sppStream) - (IRIS.SENDL vobj sppStream) - (IRIS.SENDS sx sppStream) - (IRIS.SENDS sy sppStream) - (IRIS.FLUSHG sppStream) - (SET wx (IRIS.RECF sppStream)) - (SET wy (IRIS.RECF sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - else (IRIS\ERROR %'IRIS.MAPW2 %' (vobj sx sy wx wy]) - -(IRIS.MOVE - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 102 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - (IRIS.SENDF z sppStream) - else (IRIS\ERROR %'IRIS.MOVE %' (x y z]) - -(IRIS.MOVE2 - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 103 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - else (IRIS\ERROR %'IRIS.MOVE2 %' (x y]) - -(IRIS.MOVE2I - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 104 sppStream) - (IRIS.SENDL x sppStream) - (IRIS.SENDL y sppStream) - else (IRIS\ERROR %'IRIS.MOVE2I %' (x y]) - -(IRIS.MOVEI - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 105 sppStream) - (IRIS.SENDL x sppStream) - (IRIS.SENDL y sppStream) - (IRIS.SENDL z sppStream) - else (IRIS\ERROR %'IRIS.MOVEI %' (x y z]) - -(IRIS.MULTIMAP - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 106 sppStream]) - -(IRIS.MULTMATRIX - [LAMBDA (m sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if m - then (IRIS.GCMD 107 sppStream) - (IRIS.SENDFS m 16 sppStream) - else (IRIS\ERROR %'IRIS.MULTMATRIX %' (m]) - -(IRIS.NOISE - [LAMBDA (v delta sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND v delta) - then (IRIS.GCMD 108 sppStream) - (IRIS.SENDS v sppStream) - (IRIS.SENDS delta sppStream) - else (IRIS\ERROR %'IRIS.NOISE %' (v delta]) - -(IRIS.ONEMAP - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 111 sppStream]) - -(IRIS.ORTHO - [LAMBDA (left right bottom top near far sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND left right bottom top near far) - then (IRIS.GCMD 112 sppStream) - (IRIS.SENDF left sppStream) - (IRIS.SENDF right sppStream) - (IRIS.SENDF bottom sppStream) - (IRIS.SENDF top sppStream) - (IRIS.SENDF near sppStream) - (IRIS.SENDF far sppStream) - else (IRIS\ERROR %'IRIS.ORTHO %' (left right bottom top near far]) - -(IRIS.ORTHO2 - [LAMBDA (left right bottom top sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND left right bottom top) - then (IRIS.GCMD 113 sppStream) - (IRIS.SENDF left sppStream) - (IRIS.SENDF right sppStream) - (IRIS.SENDF bottom sppStream) - (IRIS.SENDF top sppStream) - else (IRIS\ERROR %'IRIS.ORTHO2 %' (left right bottom top]) - -(IRIS.PERSPECTIVE - [LAMBDA (fovy aspect near far sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND fovy aspect near far) - then (IRIS.GCMD 114 sppStream) - (IRIS.SENDS fovy sppStream) - (IRIS.SENDF aspect sppStream) - (IRIS.SENDF near sppStream) - (IRIS.SENDF far sppStream) - else (IRIS\ERROR %'IRIS.PERSPECTIVE %' (fovy aspect near far]) - -(IRIS.PICK - [LAMBDA (numNames buffer sppStream) (* LeL, " 9-Sep-85 04:19") - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND numNames buffer) - then (IRIS.GCMD 115 sppStream) - (IRIS.SENDSS buffer 0 sppStream) - (IRIS.SENDL numNames sppStream) - else (IRIS\ERROR %'IRIS.PICK %' (numNames buffer]) - -(IRIS.PICKSIZE - [LAMBDA (deltax deltay sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND deltax deltay) - then (IRIS.GCMD 116 sppStream) - (IRIS.SENDS deltax sppStream) - (IRIS.SENDS deltay sppStream) - else (IRIS\ERROR %'IRIS.PICKSIZE %' (deltax deltay]) - -(IRIS.PNT - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 117 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - (IRIS.SENDF z sppStream) - else (IRIS\ERROR %'IRIS.PNT %' (x y z]) - -(IRIS.PNT2 - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 118 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - else (IRIS\ERROR %'IRIS.PNT2 %' (x y]) - -(IRIS.PNT2I - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 119 sppStream) - (IRIS.SENDL x sppStream) - (IRIS.SENDL y sppStream) - else (IRIS\ERROR %'IRIS.PNT2I %' (x y]) - -(IRIS.PNTI - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 120 sppStream) - (IRIS.SENDL x sppStream) - (IRIS.SENDL y sppStream) - (IRIS.SENDL z sppStream) - else (IRIS\ERROR %'IRIS.PNTI %' (x y z]) - -(IRIS.POLARVIEW - [LAMBDA (dist azim inc twist sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dist azim inc twist) - then (IRIS.GCMD 121 sppStream) - (IRIS.SENDF dist sppStream) - (IRIS.SENDS azim sppStream) - (IRIS.SENDS inc sppStream) - (IRIS.SENDS twist sppStream) - else (IRIS\ERROR %'IRIS.POLARVIEW %' (dist azim inc twist]) - -(IRIS.POLF - [LAMBDA (n parray sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n parray) - then (IRIS.GCMD 122 sppStream) - (IRIS.SENDL n sppStream) - (IRIS.SENDFS parray (TIMES 3 n) - sppStream) - else (IRIS\ERROR %'IRIS.POLF %' (n parray]) - -(IRIS.POLF2 - [LAMBDA (n parray sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n parray) - then (IRIS.GCMD 123 sppStream) - (IRIS.SENDL n sppStream) - (IRIS.SENDFS parray (TIMES 2 n) - sppStream) - else (IRIS\ERROR %'IRIS.POLF2 %' (n parray]) - -(IRIS.POLF2I - [LAMBDA (n parray sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n parray) - then (IRIS.GCMD 124 sppStream) - (IRIS.SENDL n sppStream) - (IRIS.SENDLS parray (TIMES 2 n) - sppStream) - else (IRIS\ERROR %'IRIS.POLF2I %' (n parray]) - -(IRIS.POLFI - [LAMBDA (n parray sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n parray) - then (IRIS.GCMD 125 sppStream) - (IRIS.SENDL n sppStream) - (IRIS.SENDLS parray (TIMES 3 n) - sppStream) - else (IRIS\ERROR %'IRIS.POLFI %' (n parray]) - -(IRIS.POLY - [LAMBDA (n parray sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n parray) - then (IRIS.GCMD 126 sppStream) - (IRIS.SENDL n sppStream) - (IRIS.SENDFS parray (TIMES 3 n) - sppStream) - else (IRIS\ERROR %'IRIS.POLY %' (n parray]) - -(IRIS.POLY2 - [LAMBDA (n parray sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n parray) - then (IRIS.GCMD 127 sppStream) - (IRIS.SENDL n sppStream) - (IRIS.SENDFS parray (TIMES 2 n) - sppStream) - else (IRIS\ERROR %'IRIS.POLY2 %' (n parray]) - -(IRIS.POLY2I - [LAMBDA (n parray sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n parray) - then (IRIS.GCMD 128 sppStream) - (IRIS.SENDL n sppStream) - (IRIS.SENDLS parray (TIMES 2 n) - sppStream) - else (IRIS\ERROR %'IRIS.POLY2I %' (n parray]) - -(IRIS.POLYI - [LAMBDA (n parray sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n parray) - then (IRIS.GCMD 129 sppStream) - (IRIS.SENDL n sppStream) - (IRIS.SENDLS parray (TIMES 3 n) - sppStream) - else (IRIS\ERROR %'IRIS.POLYI %' (n parray]) - -(IRIS.POPATTRIBUTES - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 130 sppStream]) - -(IRIS.POPMATRIX - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 131 sppStream]) - -(IRIS.POPVIEWPORT - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 132 sppStream]) - -(IRIS.PUSHATTRIBUTES - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 133 sppStream]) - -(IRIS.PUSHMATRIX - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 134 sppStream]) - -(IRIS.PUSHVIEWPORT - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 135 sppStream]) - -(IRIS.QENTER - [LAMBDA (qtype val sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND qtype val) - then (IRIS.GCMD 137 sppStream) - (IRIS.SENDS qtype sppStream) - (IRIS.SENDS val sppStream) - else (IRIS\ERROR %'IRIS.QENTER %' (qtype val]) - -(IRIS.QREAD - [LAMBDA (data sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if data - then (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 139 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (SET data (IRIS.RECS sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval) - else (IRIS\ERROR %'IRIS.QREAD %' (data]) - -(IRIS.QRESET - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 140 sppStream]) - -(IRIS.QTEST - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 141 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.READPIXELS - [LAMBDA (n colors sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n colors) - then (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 143 sppStream) - (IRIS.SENDS n sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECSS colors sppStream) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval) - else (IRIS\ERROR %'IRIS.READPIXELS %' (n colors]) - -(IRIS.READRGB - [LAMBDA (n red green blue sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n red green blue) - then (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 144 sppStream) - (IRIS.SENDS n sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECBS red sppStream) - (IRIS.RECBS green sppStream) - (IRIS.RECBS blue sppStream) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval) - else (IRIS\ERROR %'IRIS.READRGB %' (n red green blue]) - -(IRIS.RECT - [LAMBDA (x1 y1 x2 y2 sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x1 y1 x2 y2) - then (IRIS.GCMD 145 sppStream) - (IRIS.SENDF x1 sppStream) - (IRIS.SENDF y1 sppStream) - (IRIS.SENDF x2 sppStream) - (IRIS.SENDF y2 sppStream) - else (IRIS\ERROR %'IRIS.RECT %' (x1 y1 x2 y2]) - -(IRIS.RECTF - [LAMBDA (x1 y1 x2 y2 sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x1 y1 x2 y2) - then (IRIS.GCMD 146 sppStream) - (IRIS.SENDF x1 sppStream) - (IRIS.SENDF y1 sppStream) - (IRIS.SENDF x2 sppStream) - (IRIS.SENDF y2 sppStream) - else (IRIS\ERROR %'IRIS.RECTF %' (x1 y1 x2 y2]) - -(IRIS.RECTFI - [LAMBDA (x1 y1 x2 y2 sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x1 y1 x2 y2) - then (IRIS.GCMD 147 sppStream) - (IRIS.SENDL x1 sppStream) - (IRIS.SENDL y1 sppStream) - (IRIS.SENDL x2 sppStream) - (IRIS.SENDL y2 sppStream) - else (IRIS\ERROR %'IRIS.RECTFI %' (x1 y1 x2 y2]) - -(IRIS.RECTI - [LAMBDA (x1 y1 x2 y2 sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x1 y1 x2 y2) - then (IRIS.GCMD 148 sppStream) - (IRIS.SENDL x1 sppStream) - (IRIS.SENDL y1 sppStream) - (IRIS.SENDL x2 sppStream) - (IRIS.SENDL y2 sppStream) - else (IRIS\ERROR %'IRIS.RECTI %' (x1 y1 x2 y2]) - -(IRIS.RESETLS - [LAMBDA (b sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if b - then (IRIS.GCMD 150 sppStream) - (IRIS.SENDO b sppStream) - else (IRIS\ERROR %'IRIS.RESETLS %' (b]) - -(IRIS.RGBCOLOR - [LAMBDA (red green blue sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND red green blue) - then (IRIS.GCMD 151 sppStream) - (IRIS.SENDS red sppStream) - (IRIS.SENDS green sppStream) - (IRIS.SENDS blue sppStream) - else (IRIS\ERROR %'IRIS.RGBCOLOR %' (red green blue]) - -(IRIS.RGBCURSOR - [LAMBDA (index red green blue redm greenm blum sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND index red green blue redm greenm blum) - then (IRIS.GCMD 152 sppStream) - (IRIS.SENDS index sppStream) - (IRIS.SENDS red sppStream) - (IRIS.SENDS green sppStream) - (IRIS.SENDS blue sppStream) - (IRIS.SENDS redm sppStream) - (IRIS.SENDS greenm sppStream) - (IRIS.SENDS blum sppStream) - else (IRIS\ERROR %'IRIS.RGBCURSOR %' (index red green blue redm greenm blum]) - -(IRIS.RGBMODE - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 153 sppStream]) - -(IRIS.RGBWRITEMASK - [LAMBDA (red green blue sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND red green blue) - then (IRIS.GCMD 154 sppStream) - (IRIS.SENDS red sppStream) - (IRIS.SENDS green sppStream) - (IRIS.SENDS blue sppStream) - else (IRIS\ERROR %'IRIS.RGBWRITEMASK %' (red green blue]) - -(IRIS.ROTATE - [LAMBDA (a axis sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND a axis) - then (IRIS.GCMD 155 sppStream) - (IRIS.SENDS a sppStream) - (IRIS.SENDB axis sppStream) - else (IRIS\ERROR %'IRIS.ROTATE %' (a axis]) - -(IRIS.SCALE - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 156 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - (IRIS.SENDF z sppStream) - else (IRIS\ERROR %'IRIS.SCALE %' (x y z]) - -(IRIS.SCRMASK - [LAMBDA (left right bottom top sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND left right bottom top) - then (IRIS.GCMD 158 sppStream) - (IRIS.SENDS left sppStream) - (IRIS.SENDS right sppStream) - (IRIS.SENDS bottom sppStream) - (IRIS.SENDS top sppStream) - else (IRIS\ERROR %'IRIS.SCRMASK %' (left right bottom top]) - -(IRIS.SELECT - [LAMBDA (numnames buffer sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND numnames buffer) - then (IRIS.GCMD 159 sppStream) - (IRIS.SENDSS numnames 0 sppStream) - (IRIS.SENDL buffer sppStream) - else (IRIS\ERROR %'IRIS.SELECT %' (numnames buffer]) - -(IRIS.SETBUTTON - [LAMBDA (b value sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND b value) - then (IRIS.GCMD 160 sppStream) - (IRIS.SENDS b sppStream) - (IRIS.SENDO value sppStream) - else (IRIS\ERROR %'IRIS.SETBUTTON %' (b value]) - -(IRIS.SETCURSOR - [LAMBDA (index color wtm sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND index color wtm) - then (IRIS.GCMD 161 sppStream) - (IRIS.SENDS index sppStream) - (IRIS.SENDS color sppStream) - (IRIS.SENDS wtm sppStream) - else (IRIS\ERROR %'IRIS.SETCURSOR %' (index color wtm]) - -(IRIS.SETDEPTH - [LAMBDA (near far sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND near far) - then (IRIS.GCMD 162 sppStream) - (IRIS.SENDS near sppStream) - (IRIS.SENDS far sppStream) - else (IRIS\ERROR %'IRIS.SETDEPTH %' (near far]) - -(IRIS.SETLINESTYLE - [LAMBDA (index sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if index - then (IRIS.GCMD 163 sppStream) - (IRIS.SENDS index sppStream) - else (IRIS\ERROR %'IRIS.SETLINESTYLE %' (index]) - -(IRIS.SETMAP - [LAMBDA (mapnum sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if mapnum - then (IRIS.GCMD 164 sppStream) - (IRIS.SENDS mapnum sppStream) - else (IRIS\ERROR %'IRIS.SETMAP %' (mapnum]) - -(IRIS.SETVALUATOR - [LAMBDA (v init min max sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND v init min max) - then (IRIS.GCMD 167 sppStream) - (IRIS.SENDS v sppStream) - (IRIS.SENDS init sppStream) - (IRIS.SENDS min sppStream) - (IRIS.SENDS max sppStream) - else (IRIS\ERROR %'IRIS.SETVALUATOR %' (v init min max]) - -(IRIS.SINGLEBUFFER - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 168 sppStream]) - -(IRIS.STRWIDTH - [LAMBDA (str sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if str - then (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 169 sppStream) - (IRIS.SENDC str sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval) - else (IRIS\ERROR %'IRIS.STRWIDTH %' (str]) - -(IRIS.SWAPBUFFERS - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 170 sppStream]) - -(IRIS.SWAPINTERVAL - [LAMBDA (i sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if i - then (IRIS.GCMD 171 sppStream) - (IRIS.SENDS i sppStream) - else (IRIS\ERROR %'IRIS.SWAPINTERVAL %' (i]) - -(IRIS.GSYNC - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 172 sppStream]) - -(IRIS.TIE - [LAMBDA (b v1 v2 sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND b v1 v2) - then (IRIS.GCMD 173 sppStream) - (IRIS.SENDS b sppStream) - (IRIS.SENDS v1 sppStream) - (IRIS.SENDS v2 sppStream) - else (IRIS\ERROR %'IRIS.TIE %' (b v1 v2]) - -(IRIS.TRANSLATE - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 175 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - (IRIS.SENDF z sppStream) - else (IRIS\ERROR %'IRIS.TRANSLATE %' (x y z]) - -(IRIS.VIEWPORT - [LAMBDA (left right bottom top sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND left right bottom top) - then (IRIS.GCMD 179 sppStream) - (IRIS.SENDS left sppStream) - (IRIS.SENDS right sppStream) - (IRIS.SENDS bottom sppStream) - (IRIS.SENDS top sppStream) - else (IRIS\ERROR %'IRIS.VIEWPORT %' (left right bottom top]) - -(IRIS.WINDOW - [LAMBDA (left right bottom top near far sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND left right bottom top near far) - then (IRIS.GCMD 180 sppStream) - (IRIS.SENDF left sppStream) - (IRIS.SENDF right sppStream) - (IRIS.SENDF bottom sppStream) - (IRIS.SENDF top sppStream) - (IRIS.SENDF near sppStream) - (IRIS.SENDF far sppStream) - else (IRIS\ERROR %'IRIS.WINDOW %' (left right bottom top near far]) - -(IRIS.WRITEMASK - [LAMBDA (wtm sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if wtm - then (IRIS.GCMD 181 sppStream) - (IRIS.SENDS wtm sppStream) - else (IRIS\ERROR %'IRIS.WRITEMASK %' (wtm]) - -(IRIS.WRITEPIXELS - [LAMBDA (n colors sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n colors) - then (IRIS.GCMD 182 sppStream) - (IRIS.SENDS n sppStream) - (IRIS.SENDSS colors n sppStream) - else (IRIS\ERROR %'IRIS.WRITEPIXELS %' (n colors]) - -(IRIS.WRITERGB - [LAMBDA (n red green blue sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n red green blue) - then (IRIS.GCMD 183 sppStream) - (IRIS.SENDS n sppStream) - (IRIS.SENDBS red n sppStream) - (IRIS.SENDBS green n sppStream) - (IRIS.SENDBS blue n sppStream) - else (IRIS\ERROR %'IRIS.WRITERGB %' (n red green blue]) - -(IRIS.TPON - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 184 sppStream]) - -(IRIS.TPOFF - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 185 sppStream]) - -(IRIS.TEXTWRITEMASK - [LAMBDA (tmask sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if tmask - then (IRIS.GCMD 187 sppStream) - (IRIS.SENDS tmask sppStream) - else (IRIS\ERROR %'IRIS.TEXTWRITEMASK %' (tmask]) - -(IRIS.XGEXIT - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 188 sppStream]) - -(IRIS.CLKON - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 189 sppStream]) - -(IRIS.CLKOFF - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 190 sppStream]) - -(IRIS.LAMPON - [LAMBDA (lamps sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if lamps - then (IRIS.GCMD 191 sppStream) - (IRIS.SENDB lamps sppStream) - else (IRIS\ERROR %'IRIS.LAMPON %' (lamps]) - -(IRIS.LAMPOFF - [LAMBDA (lamps sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if lamps - then (IRIS.GCMD 192 sppStream) - (IRIS.SENDB lamps sppStream) - else (IRIS\ERROR %'IRIS.LAMPOFF %' (lamps]) - -(IRIS.SETBELL - [LAMBDA (arg sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if arg - then (IRIS.GCMD 193 sppStream) - (IRIS.SENDB arg sppStream) - else (IRIS\ERROR %'IRIS.SETBELL %' (arg]) - -(IRIS.RINGBELL - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 194 sppStream]) - -(IRIS.TADELAY - [LAMBDA (arg1 sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if arg1 - then (IRIS.GCMD 195 sppStream) - (IRIS.SENDS arg1 sppStream) - else (IRIS\ERROR %'IRIS.TADELAY %' (arg1]) - -(IRIS.ARCFS - [LAMBDA (x y radius startang endang sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y radius startang endang) - then (IRIS.GCMD 196 sppStream) - (IRIS.SENDS x sppStream) - (IRIS.SENDS y sppStream) - (IRIS.SENDS radius sppStream) - (IRIS.SENDS startang sppStream) - (IRIS.SENDS endang sppStream) - else (IRIS\ERROR %'IRIS.ARCFS %' (x y radius startang endang]) - -(IRIS.ARCS - [LAMBDA (x y radius startang endang sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y radius startang endang) - then (IRIS.GCMD 197 sppStream) - (IRIS.SENDS x sppStream) - (IRIS.SENDS y sppStream) - (IRIS.SENDS radius sppStream) - (IRIS.SENDS startang sppStream) - (IRIS.SENDS endang sppStream) - else (IRIS\ERROR %'IRIS.ARCS %' (x y radius startang endang]) - -(IRIS.BBOX2S - [LAMBDA (xmin ymin x1 y1 x2 y2 sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND xmin ymin x1 y1 x2 y2) - then (IRIS.GCMD 199 sppStream) - (IRIS.SENDS xmin sppStream) - (IRIS.SENDS ymin sppStream) - (IRIS.SENDS x1 sppStream) - (IRIS.SENDS y1 sppStream) - (IRIS.SENDS x2 sppStream) - (IRIS.SENDS y2 sppStream) - else (IRIS\ERROR %'IRIS.BBOX2S %' (xmin ymin x1 y1 x2 y2]) - -(IRIS.BLANKSCREEN - [LAMBDA (bool sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if bool - then (IRIS.GCMD 200 sppStream) - (IRIS.SENDO bool sppStream) - else (IRIS\ERROR %'IRIS.BLANKSCREEN %' (bool]) - -(IRIS.BLKQREAD - [LAMBDA (data n sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND data n) - then (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 202 sppStream) - (IRIS.SENDS n sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECSS data sppStream) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval) - else (IRIS\ERROR %'IRIS.BLKQREAD %' (data n]) - -(IRIS.GETMCOLOR - [LAMBDA (color r g b sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND color r g b) - then (IRIS.ECHOFF sppStream) - (IRIS.GCMD 203 sppStream) - (IRIS.SENDS color sppStream) - (IRIS.FLUSHG sppStream) - (SET r (IRIS.RECS sppStream)) - (SET g (IRIS.RECS sppStream)) - (SET b (IRIS.RECS sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - else (IRIS\ERROR %'IRIS.GETMCOLOR %' (color r g b]) - -(IRIS.CALLFUNC - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 204 sppStream]) - -(IRIS.CHUNKSIZE - [LAMBDA (chunk sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if chunk - then (IRIS.GCMD 205 sppStream) - (IRIS.SENDL chunk sppStream) - else (IRIS\ERROR %'IRIS.CHUNKSIZE %' (chunk]) - -(IRIS.CIRCFS - [LAMBDA (x y radius sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y radius) - then (IRIS.GCMD 206 sppStream) - (IRIS.SENDS x sppStream) - (IRIS.SENDS y sppStream) - (IRIS.SENDS radius sppStream) - else (IRIS\ERROR %'IRIS.CIRCFS %' (x y radius]) - -(IRIS.CIRCS - [LAMBDA (x y radius sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y radius) - then (IRIS.GCMD 207 sppStream) - (IRIS.SENDS x sppStream) - (IRIS.SENDS y sppStream) - (IRIS.SENDS radius sppStream) - else (IRIS\ERROR %'IRIS.CIRCS %' (x y radius]) - -(IRIS.CMOV2S - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 208 sppStream) - (IRIS.SENDS x sppStream) - (IRIS.SENDS y sppStream) - else (IRIS\ERROR %'IRIS.CMOV2S %' (x y]) - -(IRIS.CMOVS - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 209 sppStream) - (IRIS.SENDS x sppStream) - (IRIS.SENDS y sppStream) - (IRIS.SENDS z sppStream) - else (IRIS\ERROR %'IRIS.CMOVS %' (x y z]) - -(IRIS.COMPACTIFY - [LAMBDA (obj sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if obj - then (IRIS.GCMD 210 sppStream) - (IRIS.SENDL obj sppStream) - else (IRIS\ERROR %'IRIS.COMPACTIFY %' (obj]) - -(IRIS.QDEVICE - [LAMBDA (v sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if v - then (IRIS.GCMD 211 sppStream) - (IRIS.SENDS v sppStream) - else (IRIS\ERROR %'IRIS.QDEVICE %' (v]) - -(IRIS.UNQDEVICE - [LAMBDA (v sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if v - then (IRIS.GCMD 212 sppStream) - (IRIS.SENDS v sppStream) - else (IRIS\ERROR %'IRIS.UNQDEVICE %' (v]) - -(IRIS.CURVEBASIS - [LAMBDA (basisid sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if basisid - then (IRIS.GCMD 213 sppStream) - (IRIS.SENDS basisid sppStream) - else (IRIS\ERROR %'IRIS.CURVEBASIS %' (basisid]) - -(IRIS.CURVEPRECISION - [LAMBDA (nsegments sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if nsegments - then (IRIS.GCMD 214 sppStream) - (IRIS.SENDS nsegments sppStream) - else (IRIS\ERROR %'IRIS.CURVEPRECISION %' (nsegments]) - -(IRIS.CRV - [LAMBDA (geom sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if geom - then (IRIS.GCMD 215 sppStream) - (IRIS.SENDFS geom (TIMES 4 3) - sppStream) - else (IRIS\ERROR %'IRIS.CRV %' (geom]) - -(IRIS.GETTP - [LAMBDA (left right bottom top sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND left right bottom top) - then (IRIS.ECHOFF sppStream) - (IRIS.GCMD 216 sppStream) - (IRIS.FLUSHG sppStream) - (SET left (IRIS.RECS sppStream)) - (SET right (IRIS.RECS sppStream)) - (SET bottom (IRIS.RECS sppStream)) - (SET top (IRIS.RECS sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - else (IRIS\ERROR %'IRIS.GETTP %' (left right bottom top]) - -(IRIS.GBEGIN - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 217 sppStream]) - -(IRIS.TEXTINIT - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 218 sppStream]) - -(IRIS.CRVN - [LAMBDA (n geom sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n geom) - then (IRIS.GCMD 219 sppStream) - (IRIS.SENDL n sppStream) - (IRIS.SENDFS geom (TIMES 3 n) - sppStream) - else (IRIS\ERROR %'IRIS.CRVN %' (n geom]) - -(IRIS.DEFBASIS - [LAMBDA (id matrix sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND id matrix) - then (IRIS.GCMD 220 sppStream) - (IRIS.SENDS id sppStream) - (IRIS.SENDFS matrix 16 sppStream) - else (IRIS\ERROR %'IRIS.DEFBASIS %' (id matrix]) - -(IRIS.DELTAG - [LAMBDA (t sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if t - then (IRIS.GCMD 221 sppStream) - (IRIS.SENDL t sppStream) - else (IRIS\ERROR %'IRIS.DELTAG %' (t]) - -(IRIS.DEPTHCUE - [LAMBDA (mode sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if mode - then (IRIS.GCMD 222 sppStream) - (IRIS.SENDO mode sppStream) - else (IRIS\ERROR %'IRIS.DEPTHCUE %' (mode]) - -(IRIS.DRAW2S - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 223 sppStream) - (IRIS.SENDS x sppStream) - (IRIS.SENDS y sppStream) - else (IRIS\ERROR %'IRIS.DRAW2S %' (x y]) - -(IRIS.DRAWS - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 224 sppStream) - (IRIS.SENDS x sppStream) - (IRIS.SENDS y sppStream) - (IRIS.SENDS z sppStream) - else (IRIS\ERROR %'IRIS.DRAWS %' (x y z]) - -(IRIS.ENDFEEDBACK - [LAMBDA (buffer sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if buffer - then (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 225 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECSS buffer sppStream) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval) - else (IRIS\ERROR %'IRIS.ENDFEEDBACK %' (buffer]) - -(IRIS.FEEDBACK - [LAMBDA (buffer size sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND buffer size) - then (IRIS.GCMD 226 sppStream) - (IRIS.SENDSS buffer 0 sppStream) - (IRIS.SENDL size sppStream) - else (IRIS\ERROR %'IRIS.FEEDBACK %' (buffer size]) - -(IRIS.GETCPOS - [LAMBDA (ix iy sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND ix iy) - then (IRIS.ECHOFF sppStream) - (IRIS.GCMD 227 sppStream) - (IRIS.FLUSHG sppStream) - (SET ix (IRIS.RECS sppStream)) - (SET iy (IRIS.RECS sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - else (IRIS\ERROR %'IRIS.GETCPOS %' (ix iy]) - -(IRIS.GETDCM - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 228 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECO sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GETGPOS - [LAMBDA (x y z w sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z w) - then (IRIS.ECHOFF sppStream) - (IRIS.GCMD 229 sppStream) - (IRIS.FLUSHG sppStream) - (SET x (IRIS.RECF sppStream)) - (SET y (IRIS.RECF sppStream)) - (SET z (IRIS.RECF sppStream)) - (SET w (IRIS.RECF sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - else (IRIS\ERROR %'IRIS.GETGPOS %' (x y z w]) - -(IRIS.GETLSREPEAT - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 230 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GETMEM - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 231 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GETMONITOR - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 232 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GETOPENOBJ - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 233 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GETZBUFFER - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 234 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECO sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.GEWRITE - [LAMBDA (arg1 arg2 sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND arg1 arg2) - then (IRIS.GCMD 235 sppStream) - (IRIS.SENDSS arg1 arg2 sppStream) - (IRIS.SENDL arg2 sppStream) - else (IRIS\ERROR %'IRIS.GEWRITE %' (arg1 arg2]) - -(IRIS.INITNAMES - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 236 sppStream]) - -(IRIS.LOADNAME - [LAMBDA (name sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if name - then (IRIS.GCMD 237 sppStream) - (IRIS.SENDS name sppStream) - else (IRIS\ERROR %'IRIS.LOADNAME %' (name]) - -(IRIS.LSREPEAT - [LAMBDA (factor sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if factor - then (IRIS.GCMD 238 sppStream) - (IRIS.SENDL factor sppStream) - else (IRIS\ERROR %'IRIS.LSREPEAT %' (factor]) - -(IRIS.MOVE2S - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 239 sppStream) - (IRIS.SENDS x sppStream) - (IRIS.SENDS y sppStream) - else (IRIS\ERROR %'IRIS.MOVE2S %' (x y]) - -(IRIS.MOVES - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 240 sppStream) - (IRIS.SENDS x sppStream) - (IRIS.SENDS y sppStream) - (IRIS.SENDS z sppStream) - else (IRIS\ERROR %'IRIS.MOVES %' (x y z]) - -(IRIS.NEWTAG - [LAMBDA (newtag oldtag offset sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND newtag oldtag offset) - then (IRIS.GCMD 241 sppStream) - (IRIS.SENDL newtag sppStream) - (IRIS.SENDL oldtag sppStream) - (IRIS.SENDL offset sppStream) - else (IRIS\ERROR %'IRIS.NEWTAG %' (newtag oldtag offset]) - -(IRIS.PASSTHROUGH - [LAMBDA (token sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if token - then (IRIS.GCMD 242 sppStream) - (IRIS.SENDS token sppStream) - else (IRIS\ERROR %'IRIS.PASSTHROUGH %' (token]) - -(IRIS.PATCHBASIS - [LAMBDA (uid vid sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND uid vid) - then (IRIS.GCMD 243 sppStream) - (IRIS.SENDL uid sppStream) - (IRIS.SENDL vid sppStream) - else (IRIS\ERROR %'IRIS.PATCHBASIS %' (uid vid]) - -(IRIS.PATCHPRECISION - [LAMBDA (usegments vsegments sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND usegments vsegments) - then (IRIS.GCMD 244 sppStream) - (IRIS.SENDL usegments sppStream) - (IRIS.SENDL vsegments sppStream) - else (IRIS\ERROR %'IRIS.PATCHPRECISION %' (usegments vsegments]) - -(IRIS.PATCH - [LAMBDA (geomx geomy geomz sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND geomx geomy geomz) - then (IRIS.GCMD 245 sppStream) - (IRIS.SENDFS geomx 16 sppStream) - (IRIS.SENDFS geomy 16 sppStream) - (IRIS.SENDFS geomz 16 sppStream) - else (IRIS\ERROR %'IRIS.PATCH %' (geomx geomy geomz]) - -(IRIS.PCLOS - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 246 sppStream]) - -(IRIS.PDR - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 247 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - (IRIS.SENDF z sppStream) - else (IRIS\ERROR %'IRIS.PDR %' (x y z]) - -(IRIS.PDR2 - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 248 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - else (IRIS\ERROR %'IRIS.PDR2 %' (x y]) - -(IRIS.PDRI - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 249 sppStream) - (IRIS.SENDL x sppStream) - (IRIS.SENDL y sppStream) - (IRIS.SENDL z sppStream) - else (IRIS\ERROR %'IRIS.PDRI %' (x y z]) - -(IRIS.PDR2I - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 250 sppStream) - (IRIS.SENDL x sppStream) - (IRIS.SENDL y sppStream) - else (IRIS\ERROR %'IRIS.PDR2I %' (x y]) - -(IRIS.PDRS - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 251 sppStream) - (IRIS.SENDS x sppStream) - (IRIS.SENDS y sppStream) - (IRIS.SENDS z sppStream) - else (IRIS\ERROR %'IRIS.PDRS %' (x y z]) - -(IRIS.PDR2S - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 252 sppStream) - (IRIS.SENDS x sppStream) - (IRIS.SENDS y sppStream) - else (IRIS\ERROR %'IRIS.PDR2S %' (x y]) - -(IRIS.POLF2S - [LAMBDA (n parray sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n parray) - then (IRIS.GCMD 253 sppStream) - (IRIS.SENDL n sppStream) - (IRIS.SENDSS parray (TIMES 2 n) - sppStream) - else (IRIS\ERROR %'IRIS.POLF2S %' (n parray]) - -(IRIS.POLFS - [LAMBDA (n parray sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n parray) - then (IRIS.GCMD 254 sppStream) - (IRIS.SENDL n sppStream) - (IRIS.SENDSS parray (TIMES 3 n) - sppStream) - else (IRIS\ERROR %'IRIS.POLFS %' (n parray]) - -(IRIS.POLY2S - [LAMBDA (n parray sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n parray) - then (IRIS.GCMD 255 sppStream) - (IRIS.SENDL n sppStream) - (IRIS.SENDSS parray (TIMES 2 n) - sppStream) - else (IRIS\ERROR %'IRIS.POLY2S %' (n parray]) - -(IRIS.POLYS - [LAMBDA (n parray sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n parray) - then (IRIS.GCMD 256 sppStream) - (IRIS.SENDL n sppStream) - (IRIS.SENDSS parray (TIMES 3 n) - sppStream) - else (IRIS\ERROR %'IRIS.POLYS %' (n parray]) - -(IRIS.PMV - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 257 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - (IRIS.SENDF z sppStream) - else (IRIS\ERROR %'IRIS.PMV %' (x y z]) - -(IRIS.PMV2 - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 258 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - else (IRIS\ERROR %'IRIS.PMV2 %' (x y]) - -(IRIS.PMVI - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 259 sppStream) - (IRIS.SENDL x sppStream) - (IRIS.SENDL y sppStream) - (IRIS.SENDL z sppStream) - else (IRIS\ERROR %'IRIS.PMVI %' (x y z]) - -(IRIS.PMV2I - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 260 sppStream) - (IRIS.SENDL x sppStream) - (IRIS.SENDL y sppStream) - else (IRIS\ERROR %'IRIS.PMV2I %' (x y]) - -(IRIS.PMVS - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 261 sppStream) - (IRIS.SENDS x sppStream) - (IRIS.SENDS y sppStream) - (IRIS.SENDS z sppStream) - else (IRIS\ERROR %'IRIS.PMVS %' (x y z]) - -(IRIS.PMV2S - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 262 sppStream) - (IRIS.SENDS x sppStream) - (IRIS.SENDS y sppStream) - else (IRIS\ERROR %'IRIS.PMV2S %' (x y]) - -(IRIS.PNT2S - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 263 sppStream) - (IRIS.SENDS x sppStream) - (IRIS.SENDS y sppStream) - else (IRIS\ERROR %'IRIS.PNT2S %' (x y]) - -(IRIS.PNTS - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 264 sppStream) - (IRIS.SENDS x sppStream) - (IRIS.SENDS y sppStream) - (IRIS.SENDS z sppStream) - else (IRIS\ERROR %'IRIS.PNTS %' (x y z]) - -(IRIS.POPNAME - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 265 sppStream]) - -(IRIS.PUSHNAME - [LAMBDA (name sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if name - then (IRIS.GCMD 266 sppStream) - (IRIS.SENDS name sppStream) - else (IRIS\ERROR %'IRIS.PUSHNAME %' (name]) - -(IRIS.RDR - [LAMBDA (dx dy dz sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy dz) - then (IRIS.GCMD 267 sppStream) - (IRIS.SENDF dx sppStream) - (IRIS.SENDF dy sppStream) - (IRIS.SENDF dz sppStream) - else (IRIS\ERROR %'IRIS.RDR %' (dx dy dz]) - -(IRIS.RDR2 - [LAMBDA (dx dy sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy) - then (IRIS.GCMD 268 sppStream) - (IRIS.SENDF dx sppStream) - (IRIS.SENDF dy sppStream) - else (IRIS\ERROR %'IRIS.RDR2 %' (dx dy]) - -(IRIS.RDRI - [LAMBDA (dx dy dz sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy dz) - then (IRIS.GCMD 269 sppStream) - (IRIS.SENDL dx sppStream) - (IRIS.SENDL dy sppStream) - (IRIS.SENDL dz sppStream) - else (IRIS\ERROR %'IRIS.RDRI %' (dx dy dz]) - -(IRIS.RDR2I - [LAMBDA (dx dy sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy) - then (IRIS.GCMD 270 sppStream) - (IRIS.SENDL dx sppStream) - (IRIS.SENDL dy sppStream) - else (IRIS\ERROR %'IRIS.RDR2I %' (dx dy]) - -(IRIS.RDRS - [LAMBDA (dx dy dz sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy dz) - then (IRIS.GCMD 271 sppStream) - (IRIS.SENDS dx sppStream) - (IRIS.SENDS dy sppStream) - (IRIS.SENDS dz sppStream) - else (IRIS\ERROR %'IRIS.RDRS %' (dx dy dz]) - -(IRIS.RDR2S - [LAMBDA (dx dy sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy) - then (IRIS.GCMD 272 sppStream) - (IRIS.SENDS dx sppStream) - (IRIS.SENDS dy sppStream) - else (IRIS\ERROR %'IRIS.RDR2S %' (dx dy]) - -(IRIS.RECTCOPY - [LAMBDA (left right bottom top newx newy sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND left right bottom top newx newy) - then (IRIS.GCMD 273 sppStream) - (IRIS.SENDS left sppStream) - (IRIS.SENDS right sppStream) - (IRIS.SENDS bottom sppStream) - (IRIS.SENDS top sppStream) - (IRIS.SENDS newx sppStream) - (IRIS.SENDS newy sppStream) - else (IRIS\ERROR %'IRIS.RECTCOPY %' (left right bottom top newx newy]) - -(IRIS.RMV - [LAMBDA (dx dy dz sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy dz) - then (IRIS.GCMD 274 sppStream) - (IRIS.SENDF dx sppStream) - (IRIS.SENDF dy sppStream) - (IRIS.SENDF dz sppStream) - else (IRIS\ERROR %'IRIS.RMV %' (dx dy dz]) - -(IRIS.RMV2 - [LAMBDA (dx dy sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy) - then (IRIS.GCMD 275 sppStream) - (IRIS.SENDF dx sppStream) - (IRIS.SENDF dy sppStream) - else (IRIS\ERROR %'IRIS.RMV2 %' (dx dy]) - -(IRIS.RMVI - [LAMBDA (dx dy dz sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy dz) - then (IRIS.GCMD 276 sppStream) - (IRIS.SENDL dx sppStream) - (IRIS.SENDL dy sppStream) - (IRIS.SENDL dz sppStream) - else (IRIS\ERROR %'IRIS.RMVI %' (dx dy dz]) - -(IRIS.RMV2I - [LAMBDA (dx dy sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy) - then (IRIS.GCMD 277 sppStream) - (IRIS.SENDL dx sppStream) - (IRIS.SENDL dy sppStream) - else (IRIS\ERROR %'IRIS.RMV2I %' (dx dy]) - -(IRIS.RMVS - [LAMBDA (dx dy dz sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy dz) - then (IRIS.GCMD 278 sppStream) - (IRIS.SENDS dx sppStream) - (IRIS.SENDS dy sppStream) - (IRIS.SENDS dz sppStream) - else (IRIS\ERROR %'IRIS.RMVS %' (dx dy dz]) - -(IRIS.RMV2S - [LAMBDA (dx dy sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy) - then (IRIS.GCMD 279 sppStream) - (IRIS.SENDS dx sppStream) - (IRIS.SENDS dy sppStream) - else (IRIS\ERROR %'IRIS.RMV2S %' (dx dy]) - -(IRIS.RPDR - [LAMBDA (dx dy dz sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy dz) - then (IRIS.GCMD 280 sppStream) - (IRIS.SENDF dx sppStream) - (IRIS.SENDF dy sppStream) - (IRIS.SENDF dz sppStream) - else (IRIS\ERROR %'IRIS.RPDR %' (dx dy dz]) - -(IRIS.RPDR2 - [LAMBDA (dx dy sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy) - then (IRIS.GCMD 281 sppStream) - (IRIS.SENDF dx sppStream) - (IRIS.SENDF dy sppStream) - else (IRIS\ERROR %'IRIS.RPDR2 %' (dx dy]) - -(IRIS.RPDRI - [LAMBDA (dx dy dz sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy dz) - then (IRIS.GCMD 282 sppStream) - (IRIS.SENDL dx sppStream) - (IRIS.SENDL dy sppStream) - (IRIS.SENDL dz sppStream) - else (IRIS\ERROR %'IRIS.RPDRI %' (dx dy dz]) - -(IRIS.RPDR2I - [LAMBDA (dx dy sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy) - then (IRIS.GCMD 283 sppStream) - (IRIS.SENDL dx sppStream) - (IRIS.SENDL dy sppStream) - else (IRIS\ERROR %'IRIS.RPDR2I %' (dx dy]) - -(IRIS.RPDRS - [LAMBDA (dx dy dz sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy dz) - then (IRIS.GCMD 284 sppStream) - (IRIS.SENDS dx sppStream) - (IRIS.SENDS dy sppStream) - (IRIS.SENDS dz sppStream) - else (IRIS\ERROR %'IRIS.RPDRS %' (dx dy dz]) - -(IRIS.RPDR2S - [LAMBDA (dx dy sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy) - then (IRIS.GCMD 285 sppStream) - (IRIS.SENDS dx sppStream) - (IRIS.SENDS dy sppStream) - else (IRIS\ERROR %'IRIS.RPDR2S %' (dx dy]) - -(IRIS.RPMV - [LAMBDA (dx dy dz sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy dz) - then (IRIS.GCMD 286 sppStream) - (IRIS.SENDF dx sppStream) - (IRIS.SENDF dy sppStream) - (IRIS.SENDF dz sppStream) - else (IRIS\ERROR %'IRIS.RPMV %' (dx dy dz]) - -(IRIS.RPMV2 - [LAMBDA (dx dy sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy) - then (IRIS.GCMD 287 sppStream) - (IRIS.SENDF dx sppStream) - (IRIS.SENDF dy sppStream) - else (IRIS\ERROR %'IRIS.RPMV2 %' (dx dy]) - -(IRIS.RPMVI - [LAMBDA (dx dy dz sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy dz) - then (IRIS.GCMD 288 sppStream) - (IRIS.SENDL dx sppStream) - (IRIS.SENDL dy sppStream) - (IRIS.SENDL dz sppStream) - else (IRIS\ERROR %'IRIS.RPMVI %' (dx dy dz]) - -(IRIS.RPMV2I - [LAMBDA (dx dy sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy) - then (IRIS.GCMD 289 sppStream) - (IRIS.SENDL dx sppStream) - (IRIS.SENDL dy sppStream) - else (IRIS\ERROR %'IRIS.RPMV2I %' (dx dy]) - -(IRIS.RPMVS - [LAMBDA (dx dy dz sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy dz) - then (IRIS.GCMD 290 sppStream) - (IRIS.SENDS dx sppStream) - (IRIS.SENDS dy sppStream) - (IRIS.SENDS dz sppStream) - else (IRIS\ERROR %'IRIS.RPMVS %' (dx dy dz]) - -(IRIS.RPMV2S - [LAMBDA (dx dy sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND dx dy) - then (IRIS.GCMD 291 sppStream) - (IRIS.SENDS dx sppStream) - (IRIS.SENDS dy sppStream) - else (IRIS\ERROR %'IRIS.RPMV2S %' (dx dy]) - -(IRIS.SETDBLIGHTS - [LAMBDA (mask sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if mask - then (IRIS.GCMD 292 sppStream) - (IRIS.SENDL mask sppStream) - else (IRIS\ERROR %'IRIS.SETDBLIGHTS %' (mask]) - -(IRIS.SETMONITOR - [LAMBDA (type sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if type - then (IRIS.GCMD 293 sppStream) - (IRIS.SENDS type sppStream) - else (IRIS\ERROR %'IRIS.SETMONITOR %' (type]) - -(IRIS.SETSHADE - [LAMBDA (shade sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if shade - then (IRIS.GCMD 294 sppStream) - (IRIS.SENDS shade sppStream) - else (IRIS\ERROR %'IRIS.SETSHADE %' (shade]) - -(IRIS.SHADERANGE - [LAMBDA (lowindex highindex sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND lowindex highindex) - then (IRIS.GCMD 295 sppStream) - (IRIS.SENDS lowindex sppStream) - (IRIS.SENDS highindex sppStream) - else (IRIS\ERROR %'IRIS.SHADERANGE %' (lowindex highindex]) - -(IRIS.SPCLOS - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 296 sppStream]) - -(IRIS.SPLF - [LAMBDA (n parray iarray sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n parray iarray) - then (IRIS.GCMD 297 sppStream) - (IRIS.SENDL n sppStream) - (IRIS.SENDFS parray (TIMES 3 n) - sppStream) - (IRIS.SENDSS iarray n sppStream) - else (IRIS\ERROR %'IRIS.SPLF %' (n parray iarray]) - -(IRIS.SPLF2 - [LAMBDA (n parray iarray sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n parray iarray) - then (IRIS.GCMD 298 sppStream) - (IRIS.SENDL n sppStream) - (IRIS.SENDFS parray (TIMES 2 n) - sppStream) - (IRIS.SENDSS iarray n sppStream) - else (IRIS\ERROR %'IRIS.SPLF2 %' (n parray iarray]) - -(IRIS.SPLFI - [LAMBDA (n parray iarray sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n parray iarray) - then (IRIS.GCMD 299 sppStream) - (IRIS.SENDL n sppStream) - (IRIS.SENDLS parray (TIMES 3 n) - sppStream) - (IRIS.SENDSS iarray n sppStream) - else (IRIS\ERROR %'IRIS.SPLFI %' (n parray iarray]) - -(IRIS.SPLF2I - [LAMBDA (n parray iarray sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n parray iarray) - then (IRIS.GCMD 300 sppStream) - (IRIS.SENDL n sppStream) - (IRIS.SENDLS parray (TIMES 2 n) - sppStream) - (IRIS.SENDSS iarray n sppStream) - else (IRIS\ERROR %'IRIS.SPLF2I %' (n parray iarray]) - -(IRIS.SPLFS - [LAMBDA (n parray iarray sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n parray iarray) - then (IRIS.GCMD 301 sppStream) - (IRIS.SENDL n sppStream) - (IRIS.SENDSS parray (TIMES 3 n) - sppStream) - (IRIS.SENDSS iarray n sppStream) - else (IRIS\ERROR %'IRIS.SPLFS %' (n parray iarray]) - -(IRIS.SPLF2S - [LAMBDA (n parray iarray sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n parray iarray) - then (IRIS.GCMD 302 sppStream) - (IRIS.SENDL n sppStream) - (IRIS.SENDSS parray (TIMES 2 n) - sppStream) - (IRIS.SENDSS iarray n sppStream) - else (IRIS\ERROR %'IRIS.SPLF2S %' (n parray iarray]) - -(IRIS.XFPT - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 303 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - (IRIS.SENDF z sppStream) - else (IRIS\ERROR %'IRIS.XFPT %' (x y z]) - -(IRIS.XFPTI - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 304 sppStream) - (IRIS.SENDL x sppStream) - (IRIS.SENDL y sppStream) - (IRIS.SENDL z sppStream) - else (IRIS\ERROR %'IRIS.XFPTI %' (x y z]) - -(IRIS.XFPTS - [LAMBDA (x y z sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z) - then (IRIS.GCMD 305 sppStream) - (IRIS.SENDS x sppStream) - (IRIS.SENDS y sppStream) - (IRIS.SENDS z sppStream) - else (IRIS\ERROR %'IRIS.XFPTS %' (x y z]) - -(IRIS.XFPT2 - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 306 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - else (IRIS\ERROR %'IRIS.XFPT2 %' (x y]) - -(IRIS.XFPT2I - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 307 sppStream) - (IRIS.SENDL x sppStream) - (IRIS.SENDL y sppStream) - else (IRIS\ERROR %'IRIS.XFPT2I %' (x y]) - -(IRIS.XFPT2S - [LAMBDA (x y sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y) - then (IRIS.GCMD 308 sppStream) - (IRIS.SENDS x sppStream) - (IRIS.SENDS y sppStream) - else (IRIS\ERROR %'IRIS.XFPT2S %' (x y]) - -(IRIS.XFPT4 - [LAMBDA (x y z w sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z w) - then (IRIS.GCMD 309 sppStream) - (IRIS.SENDF x sppStream) - (IRIS.SENDF y sppStream) - (IRIS.SENDF z sppStream) - (IRIS.SENDF w sppStream) - else (IRIS\ERROR %'IRIS.XFPT4 %' (x y z w]) - -(IRIS.XFPT4I - [LAMBDA (x y z w sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z w) - then (IRIS.GCMD 310 sppStream) - (IRIS.SENDL x sppStream) - (IRIS.SENDL y sppStream) - (IRIS.SENDL z sppStream) - (IRIS.SENDL w sppStream) - else (IRIS\ERROR %'IRIS.XFPT4I %' (x y z w]) - -(IRIS.XFPT4S - [LAMBDA (x y z w sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND x y z w) - then (IRIS.GCMD 311 sppStream) - (IRIS.SENDS x sppStream) - (IRIS.SENDS y sppStream) - (IRIS.SENDS z sppStream) - (IRIS.SENDS w sppStream) - else (IRIS\ERROR %'IRIS.XFPT4S %' (x y z w]) - -(IRIS.ZBUFFER - [LAMBDA (bool sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if bool - then (IRIS.GCMD 312 sppStream) - (IRIS.SENDO bool sppStream) - else (IRIS\ERROR %'IRIS.ZBUFFER %' (bool]) - -(IRIS.CHARST - [LAMBDA (arg1 arg2 sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND arg1 arg2) - then (IRIS.GCMD 313 sppStream) - (IRIS.SENDBS arg1 arg2 sppStream) - (IRIS.SENDL arg2 sppStream) - else (IRIS\ERROR %'IRIS.CHARST %' (arg1 arg2]) - -(IRIS.STRWID - [LAMBDA (arg1 arg2 sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND arg1 arg2) - then (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 314 sppStream) - (IRIS.SENDBS arg1 arg2 sppStream) - (IRIS.SENDL arg2 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval) - else (IRIS\ERROR %'IRIS.STRWID %' (arg1 arg2]) - -(IRIS.DEFPATTERN - [LAMBDA (n size mask sppStream) (* LeL, " 9-Sep-85 04:19") - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n size mask) - then (IRIS.GCMD 315 sppStream) - (IRIS.SENDS n sppStream) - (IRIS.SENDS size sppStream) - (IRIS.SENDSS mask (QUOTIENT (TIMES size size) - 16) - sppStream) - else (IRIS\ERROR %'IRIS.DEFPATTERN %' (n size mask]) - -(IRIS.GETPATTERN - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (LET (retval) - (IRIS.ECHOFF sppStream) - (IRIS.GCMD 316 sppStream) - (IRIS.FLUSHG sppStream) - (SETQ retval (IRIS.RECL sppStream)) - (IRIS.RECCR sppStream) - (IRIS.ECHOON sppStream) - retval]) - -(IRIS.SETPATTERN - [LAMBDA (index sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if index - then (IRIS.GCMD 317 sppStream) - (IRIS.SENDS index sppStream) - else (IRIS\ERROR %'IRIS.SETPATTERN %' (index]) - -(IRIS.OBJINSERT - [LAMBDA (t sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if t - then (IRIS.GCMD 318 sppStream) - (IRIS.SENDL t sppStream) - else (IRIS\ERROR %'IRIS.OBJINSERT %' (t]) - -(IRIS.OBJDELETE - [LAMBDA (tag1 tag2 sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND tag1 tag2) - then (IRIS.GCMD 319 sppStream) - (IRIS.SENDL tag1 sppStream) - (IRIS.SENDL tag2 sppStream) - else (IRIS\ERROR %'IRIS.OBJDELETE %' (tag1 tag2]) - -(IRIS.OBJREPLACE - [LAMBDA (t sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if t - then (IRIS.GCMD 320 sppStream) - (IRIS.SENDL t sppStream) - else (IRIS\ERROR %'IRIS.OBJREPLACE %' (t]) - -(IRIS.ZCLEAR - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 321 sppStream]) - -(IRIS.CURORIGIN - [LAMBDA (n xorigin yorigin sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND n xorigin yorigin) - then (IRIS.GCMD 322 sppStream) - (IRIS.SENDS n sppStream) - (IRIS.SENDS xorigin sppStream) - (IRIS.SENDS yorigin sppStream) - else (IRIS\ERROR %'IRIS.CURORIGIN %' (n xorigin yorigin]) - -(IRIS.PAGEWRITEMASK - [LAMBDA (arg sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if arg - then (IRIS.GCMD 323 sppStream) - (IRIS.SENDS arg sppStream) - else (IRIS\ERROR %'IRIS.PAGEWRITEMASK %' (arg]) - -(IRIS.PATCHCURVES - [LAMBDA (ucurves vcurves sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if (AND ucurves vcurves) - then (IRIS.GCMD 324 sppStream) - (IRIS.SENDL ucurves sppStream) - (IRIS.SENDL vcurves sppStream) - else (IRIS\ERROR %'IRIS.PATCHCURVES %' (ucurves vcurves]) - -(IRIS.DBTEXT - [LAMBDA (str sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (if str - then (IRIS.GCMD 325 sppStream) - (IRIS.SENDBS str 8 sppStream) - else (IRIS\ERROR %'IRIS.DBTEXT %' (str]) - -(IRIS.LASTONE - [LAMBDA (sppStream) - (if sppStream - then [OR (SPPSTREAM? sppStream) - (SETQ sppStream (fetch SPPOUTSTREAM of (fetch IRISDATA of sppStream] - else (SETQ sppStream IRISCONN)) - (IRIS.GCMD 326 sppStream]) - -(IRIS\ERROR - [LAMBDA (FNNAME FNARGS) (* ; "Edited 28-Jan-87 18:57 by gbn") - -(* ;;; "This function breaks whenever an IRIS library function gets a null arg") - - (ERROR (CONCAT FNNAME ": some input arg is NIL" " -") - (APPLY 'CONCAT (for ARG in FNARGS join (LIST " " ARG " = " (EVAL ARG) - " -"]) -) -(PUTPROPS IRISLIB COPYRIGHT ("Xerox Corporation" 1985 1987)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (5294 150294 (IRIS.XSETSLOWCOM 5304 . 5586) (IRIS.XSETFASTCOM 5588 . 5870) ( -IRIS.GVERSION 5872 . 6367) (IRIS.GDOWNLOAD 6369 . 6649) (IRIS.PAGECOLOR 6651 . 7069) (IRIS.TEXTCOLOR -7071 . 7489) (IRIS.TEXTPORT 7491 . 8085) (IRIS.ARC 8087 . 8727) (IRIS.ARCF 8729 . 9371) (IRIS.ARCFI -9373 . 10017) (IRIS.ARCI 10019 . 10662) (IRIS.ATTACHCURSOR 10664 . 11131) (IRIS.BACKBUFFER 11133 . -11538) (IRIS.BBOX2 11540 . 12201) (IRIS.BBOX2I 12203 . 12866) (IRIS.BLINK 12868 . 13509) (IRIS.CALLOBJ - 13511 . 13918) (IRIS.CHARSTR 13920 . 14327) (IRIS.CIRC 14329 . 14836) (IRIS.CIRCF 14838 . 15347) ( -IRIS.CIRCFI 15349 . 15860) (IRIS.CIRCI 15862 . 16371) (IRIS.CLEAR 16373 . 16650) (IRIS.CLEARHITCODE -16652 . 16936) (IRIS.CLOSEOBJ 16938 . 17218) (IRIS.CMOV 17220 . 17707) (IRIS.CMOV2 17709 . 18154) ( -IRIS.CMOV2I 18156 . 18603) (IRIS.CMOVI 18605 . 19094) (IRIS.COLOR 19096 . 19507) (IRIS.CURSOFF 19509 - . 19788) (IRIS.CURSON 19790 . 20068) (IRIS.CURVEIT 20070 . 20521) (IRIS.DEFCURSOR 20523 . 20992) ( -IRIS.DEFLINESTYLE 20994 . 21457) (IRIS.DEFRASTERFONT 21459 . 22152) (IRIS.DELOBJ 22154 . 22559) ( -IRIS.DOUBLEBUFFER 22561 . 22845) (IRIS.DRAW 22847 . 23334) (IRIS.DRAW2 23336 . 23781) (IRIS.DRAW2I -23783 . 24230) (IRIS.DRAWI 24232 . 24721) (IRIS.EDITOBJ 24723 . 25130) (IRIS.ENDPICK 25132 . 25835) ( -IRIS.ENDSELECT 25837 . 26544) (IRIS.FINISH 26546 . 26824) (IRIS.FONT 26826 . 27239) (IRIS.FRONTBUFFER -27241 . 27648) (IRIS.GCONFIG 27650 . 27929) (IRIS.GENOBJ 27931 . 28425) (IRIS.GENTAG 28427 . 28921) ( -IRIS.GETBUFFER 28923 . 29420) (IRIS.GETBUTTON 29422 . 30109) (IRIS.GETCMMODE 30111 . 30608) ( -IRIS.GETCOLOR 30610 . 31106) (IRIS.GETCURSOR 31108 . 31856) (IRIS.GETDEPTH 31858 . 32486) ( -IRIS.GETDISPLAYMODE 32488 . 32990) (IRIS.GETFONT 32992 . 33487) (IRIS.GETHEIGHT 33489 . 33986) ( -IRIS.GETHITCODE 33988 . 34486) (IRIS.GETLSBACKUP 34488 . 34987) (IRIS.GETLSTYLE 34989 . 35486) ( -IRIS.GETLWIDTH 35488 . 35985) (IRIS.GETMAP 35987 . 36481) (IRIS.GETMATRIX 36483 . 37033) ( -IRIS.GETPLANES 37035 . 37532) (IRIS.GETRESETLS 37534 . 38032) (IRIS.GETSCRMASK 38034 . 38800) ( -IRIS.GETVALUATOR 38802 . 39493) (IRIS.GETVIEWPORT 39495 . 40263) (IRIS.GETWRITEMASK 40265 . 40765) ( -IRIS.XGINIT 40767 . 41045) (IRIS.XGRESET 41047 . 41326) (IRIS.GRGBCOLOR 41328 . 42023) ( -IRIS.GRGBCURSOR 42025 . 43027) (IRIS.GRGBMASK 43029 . 43730) (IRIS.ISOBJ 43732 . 44419) (IRIS.ISTAG -44421 . 45100) (IRIS.LINEWIDTH 45102 . 45505) (IRIS.LOADMATRIX 45507 . 45916) (IRIS.LOOKAT 45918 . -46625) (IRIS.LSBACKUP 46627 . 47028) (IRIS.MAKEOBJ 47030 . 47437) (IRIS.MAKETAG 47439 . 47838) ( -IRIS.MAPCOLOR 47840 . 48431) (IRIS.MAPW 48433 . 49429) (IRIS.MAPW2 49431 . 50194) (IRIS.MOVE 50196 . -50684) (IRIS.MOVE2 50686 . 51132) (IRIS.MOVE2I 51134 . 51582) (IRIS.MOVEI 51584 . 52074) ( -IRIS.MULTIMAP 52076 . 52357) (IRIS.MULTMATRIX 52359 . 52769) (IRIS.NOISE 52771 . 53233) (IRIS.ONEMAP -53235 . 53514) (IRIS.ORTHO 53516 . 54214) (IRIS.ORTHO2 54216 . 54808) (IRIS.PERSPECTIVE 54810 . 55408) - (IRIS.PICK 55410 . 55963) (IRIS.PICKSIZE 55965 . 56457) (IRIS.PNT 56459 . 56945) (IRIS.PNT2 56947 . -57391) (IRIS.PNT2I 57393 . 57839) (IRIS.PNTI 57841 . 58329) (IRIS.POLARVIEW 58331 . 58921) (IRIS.POLF -58923 . 59420) (IRIS.POLF2 59422 . 59921) (IRIS.POLF2I 59923 . 60424) (IRIS.POLFI 60426 . 60925) ( -IRIS.POLY 60927 . 61424) (IRIS.POLY2 61426 . 61925) (IRIS.POLY2I 61927 . 62428) (IRIS.POLYI 62430 . -62929) (IRIS.POPATTRIBUTES 62931 . 63217) (IRIS.POPMATRIX 63219 . 63501) (IRIS.POPVIEWPORT 63503 . -63787) (IRIS.PUSHATTRIBUTES 63789 . 64076) (IRIS.PUSHMATRIX 64078 . 64361) (IRIS.PUSHVIEWPORT 64363 . -64648) (IRIS.QENTER 64650 . 65122) (IRIS.QREAD 65124 . 65821) (IRIS.QRESET 65823 . 66102) (IRIS.QTEST -66104 . 66598) (IRIS.READPIXELS 66600 . 67365) (IRIS.READRGB 67367 . 68240) (IRIS.RECT 68242 . 68790) -(IRIS.RECTF 68792 . 69342) (IRIS.RECTFI 69344 . 69896) (IRIS.RECTI 69898 . 70448) (IRIS.RESETLS 70450 - . 70850) (IRIS.RGBCOLOR 70852 . 71384) (IRIS.RGBCURSOR 71386 . 72156) (IRIS.RGBMODE 72158 . 72438) ( -IRIS.RGBWRITEMASK 72440 . 72980) (IRIS.ROTATE 72982 . 73442) (IRIS.SCALE 73444 . 73934) (IRIS.SCRMASK -73936 . 74530) (IRIS.SELECT 74532 . 75031) (IRIS.SETBUTTON 75033 . 75503) (IRIS.SETCURSOR 75505 . -76043) (IRIS.SETDEPTH 76045 . 76517) (IRIS.SETLINESTYLE 76519 . 76945) (IRIS.SETMAP 76947 . 77365) ( -IRIS.SETVALUATOR 77367 . 77941) (IRIS.SINGLEBUFFER 77943 . 78228) (IRIS.STRWIDTH 78230 . 78924) ( -IRIS.SWAPBUFFERS 78926 . 79210) (IRIS.SWAPINTERVAL 79212 . 79622) (IRIS.GSYNC 79624 . 79902) (IRIS.TIE - 79904 . 80398) (IRIS.TRANSLATE 80400 . 80898) (IRIS.VIEWPORT 80900 . 81496) (IRIS.WINDOW 81498 . -82198) (IRIS.WRITEMASK 82200 . 82612) (IRIS.WRITEPIXELS 82614 . 83095) (IRIS.WRITERGB 83097 . 83682) ( -IRIS.TPON 83684 . 83961) (IRIS.TPOFF 83963 . 84241) (IRIS.TEXTWRITEMASK 84243 . 84671) (IRIS.XGEXIT -84673 . 84952) (IRIS.CLKON 84954 . 85232) (IRIS.CLKOFF 85234 . 85513) (IRIS.LAMPON 85515 . 85929) ( -IRIS.LAMPOFF 85931 . 86347) (IRIS.SETBELL 86349 . 86757) (IRIS.RINGBELL 86759 . 87040) (IRIS.TADELAY -87042 . 87454) (IRIS.ARCFS 87456 . 88102) (IRIS.ARCS 88104 . 88748) (IRIS.BBOX2S 88750 . 89414) ( -IRIS.BLANKSCREEN 89416 . 89836) (IRIS.BLKQREAD 89838 . 90591) (IRIS.GETMCOLOR 90593 . 91313) ( -IRIS.CALLFUNC 91315 . 91596) (IRIS.CHUNKSIZE 91598 . 92018) (IRIS.CIRCFS 92020 . 92532) (IRIS.CIRCS -92534 . 93044) (IRIS.CMOV2S 93046 . 93494) (IRIS.CMOVS 93496 . 93986) (IRIS.COMPACTIFY 93988 . 94402) -(IRIS.QDEVICE 94404 . 94804) (IRIS.UNQDEVICE 94806 . 95210) (IRIS.CURVEBASIS 95212 . 95642) ( -IRIS.CURVEPRECISION 95644 . 96090) (IRIS.CRV 96092 . 96529) (IRIS.GETTP 96531 . 97288) (IRIS.GBEGIN -97290 . 97569) (IRIS.TEXTINIT 97571 . 97852) (IRIS.CRVN 97854 . 98343) (IRIS.DEFBASIS 98345 . 98825) ( -IRIS.DELTAG 98827 . 99225) (IRIS.DEPTHCUE 99227 . 99641) (IRIS.DRAW2S 99643 . 100091) (IRIS.DRAWS -100093 . 100583) (IRIS.ENDFEEDBACK 100585 . 101297) (IRIS.FEEDBACK 101299 . 101786) (IRIS.GETCPOS -101788 . 102403) (IRIS.GETDCM 102405 . 102900) (IRIS.GETGPOS 102902 . 103607) (IRIS.GETLSREPEAT 103609 - . 104109) (IRIS.GETMEM 104111 . 104606) (IRIS.GETMONITOR 104608 . 105107) (IRIS.GETOPENOBJ 105109 . -105608) (IRIS.GETZBUFFER 105610 . 106109) (IRIS.GEWRITE 106111 . 106591) (IRIS.INITNAMES 106593 . -106875) (IRIS.LOADNAME 106877 . 107291) (IRIS.LSREPEAT 107293 . 107715) (IRIS.MOVE2S 107717 . 108165) -(IRIS.MOVES 108167 . 108657) (IRIS.NEWTAG 108659 . 109211) (IRIS.PASSTHROUGH 109213 . 109637) ( -IRIS.PATCHBASIS 109639 . 110111) (IRIS.PATCHPRECISION 110113 . 110641) (IRIS.PATCH 110643 . 111193) ( -IRIS.PCLOS 111195 . 111473) (IRIS.PDR 111475 . 111961) (IRIS.PDR2 111963 . 112407) (IRIS.PDRI 112409 - . 112897) (IRIS.PDR2I 112899 . 113345) (IRIS.PDRS 113347 . 113835) (IRIS.PDR2S 113837 . 114283) ( -IRIS.POLF2S 114285 . 114786) (IRIS.POLFS 114788 . 115287) (IRIS.POLY2S 115289 . 115790) (IRIS.POLYS -115792 . 116291) (IRIS.PMV 116293 . 116779) (IRIS.PMV2 116781 . 117225) (IRIS.PMVI 117227 . 117715) ( -IRIS.PMV2I 117717 . 118163) (IRIS.PMVS 118165 . 118653) (IRIS.PMV2S 118655 . 119101) (IRIS.PNT2S -119103 . 119549) (IRIS.PNTS 119551 . 120039) (IRIS.POPNAME 120041 . 120321) (IRIS.PUSHNAME 120323 . -120737) (IRIS.RDR 120739 . 121237) (IRIS.RDR2 121239 . 121691) (IRIS.RDRI 121693 . 122193) (IRIS.RDR2I - 122195 . 122649) (IRIS.RDRS 122651 . 123151) (IRIS.RDR2S 123153 . 123607) (IRIS.RECTCOPY 123609 . -124317) (IRIS.RMV 124319 . 124817) (IRIS.RMV2 124819 . 125271) (IRIS.RMVI 125273 . 125773) (IRIS.RMV2I - 125775 . 126229) (IRIS.RMVS 126231 . 126731) (IRIS.RMV2S 126733 . 127187) (IRIS.RPDR 127189 . 127689) - (IRIS.RPDR2 127691 . 128145) (IRIS.RPDRI 128147 . 128649) (IRIS.RPDR2I 128651 . 129107) (IRIS.RPDRS -129109 . 129611) (IRIS.RPDR2S 129613 . 130069) (IRIS.RPMV 130071 . 130571) (IRIS.RPMV2 130573 . 131027 -) (IRIS.RPMVI 131029 . 131531) (IRIS.RPMV2I 131533 . 131989) (IRIS.RPMVS 131991 . 132493) (IRIS.RPMV2S - 132495 . 132951) (IRIS.SETDBLIGHTS 132953 . 133373) (IRIS.SETMONITOR 133375 . 133793) (IRIS.SETSHADE -133795 . 134213) (IRIS.SHADERANGE 134215 . 134731) (IRIS.SPCLOS 134733 . 135012) (IRIS.SPLF 135014 . -135578) (IRIS.SPLF2 135580 . 136146) (IRIS.SPLFI 136148 . 136714) (IRIS.SPLF2I 136716 . 137284) ( -IRIS.SPLFS 137286 . 137852) (IRIS.SPLF2S 137854 . 138422) (IRIS.XFPT 138424 . 138912) (IRIS.XFPTI -138914 . 139404) (IRIS.XFPTS 139406 . 139896) (IRIS.XFPT2 139898 . 140344) (IRIS.XFPT2I 140346 . -140794) (IRIS.XFPT2S 140796 . 141244) (IRIS.XFPT4 141246 . 141780) (IRIS.XFPT4I 141782 . 142318) ( -IRIS.XFPT4S 142320 . 142856) (IRIS.ZBUFFER 142858 . 143270) (IRIS.CHARST 143272 . 143750) (IRIS.STRWID - 143752 . 144519) (IRIS.DEFPATTERN 144521 . 145198) (IRIS.GETPATTERN 145200 . 145699) (IRIS.SETPATTERN - 145701 . 146123) (IRIS.OBJINSERT 146125 . 146529) (IRIS.OBJDELETE 146531 . 147009) (IRIS.OBJREPLACE -147011 . 147417) (IRIS.ZCLEAR 147419 . 147698) (IRIS.CURORIGIN 147700 . 148246) (IRIS.PAGEWRITEMASK -148248 . 148668) (IRIS.PATCHCURVES 148670 . 149176) (IRIS.DBTEXT 149178 . 149587) (IRIS.LASTONE 149589 - . 149869) (IRIS\ERROR 149871 . 150292))))) -STOP diff --git a/obsolete/lispusers/IRISNET b/obsolete/lispusers/IRISNET deleted file mode 100644 index 0399a862..00000000 --- a/obsolete/lispusers/IRISNET +++ /dev/null @@ -1,279 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "10-May-88 00:46:44" {ERINYES}MEDLEY>IRISNET.;1 15482 - - previous date%: " 4-Feb-87 19:47:55" {ERINYES}LYRIC>IRISNET.;1) - - -(* " -Copyright (c) 1988 by Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT IRISNETCOMS) - -(RPAQQ IRISNETCOMS ([DECLARE%: EVAL@LOAD DONTCOPY (P (LOADCOMP 'LLETHER) - (LOADCOMP 'ETHERRECORDS] - (FNS IRIS.RESET IRIS.TRACE IRISBOOTPROCESS SENDIRISPACKET IRISFILTER - OPEN.IRISCONN IRISBOOTSERVER) - (VARS \IRIS.VERBOSE (PRINTSPPDATAFLG T)) - (VARS (IRIS.LOCK (CREATE.MONITORLOCK "iris boot lock"))) - (GLOBALVARS IRISNSHOSTNUMBER) - [INITVARS (IRISNET 146) - (IRISBOOTDIRECTORIES '({CORE} {ERIS}gl2>boot>] - (CONSTANTS (IRISSOCKET 37) - (IRIS.PACKETTYPE 32790) - (IRIS.BOOT.STREAM.NAME '|IRIS boot SPP|)) - [DECLARE%: EVAL@LOAD DONTCOPY (FILES ETHERRECORDS) - (P (LOADCOMP 'LLETHER] - [P (ACCESSFNS IRISENCAPSULATION [(IRISBASE (LOCF (FETCH (ETHERPACKET - EPENCAPSULATION - ) - OF DATUM] - [BLOCKRECORD IRISBASE ((IRISLENGTH WORD) - (IRISDESTHOSTO 3 WORD) - (IRISSOURCEHOSTO 3 WORD) - (IRISTYPE WORD) - (IRISEXCHID WORD) - (INFOCHAR1 BYTE) - (INFOCHAR2 BYTE)) - [ACCESSFNS IRISDESTHOSTO ((IRISDESTHOST (\LOADNSHOSTNUMBER - (LOCF DATUM)) - (\STORENSHOSTNUMBER - (LOCF DATUM) - NEWVALUE)) - (IRISPACKETBASE (LOCF DATUM)) - (IRISDESTHOSTBASE (LOCF DATUM] - (ACCESSFNS IRISSOURCEHOSTO ((IRISSOURCEHOST - (\LOADNSHOSTNUMBER (LOCF DATUM) - ) - (\STORENSHOSTNUMBER - (LOCF DATUM) - NEWVALUE)) - (IRISSOURCEHOSTBASE (LOCF DATUM] - (TYPE? (type? ETHERPACKET DATUM] - (MACROS BROADCASTP))) -(DECLARE%: EVAL@LOAD DONTCOPY -(LOADCOMP 'LLETHER) -(LOADCOMP 'ETHERRECORDS) -) -(DEFINEQ - -(IRIS.RESET - [LAMBDA NIL (* gbn "24-Jun-85 01:31") - (PROG (PROC) - (CLOSEF? '{DSK}IRISBOOTFILE) - (if (SETQ PROC (FIND.PROCESS IRIS.BOOT.STREAM.NAME)) - then (DEL.PROCESS PROC)) - (if (SETQ PROC (FIND.PROCESS '|Iris Terminal SPP|)) - then (DEL.PROCESS PROC)) - (if (SETQ PROC (FIND.PROCESS 'IRISBOOTPROCESS)) - then (DEL.PROCESS PROC)) - (PROCESS.STATUS.WINDOW (CREATEPOSITION 5 5]) - -(IRIS.TRACE - [LAMBDA NIL (* gbn "25-Feb-86 12:24") - (SETQ PRINTSPPDATAFLG NIL) - (SETQ XIPIGNORETYPES '(1 TRANS)) - (XIPTRACE T]) - -(IRISBOOTPROCESS - [LAMBDA (IRISPACKET) (* gbn "12-Nov-85 23:16") - (DECLARE (GLOBALVARS IRISBOOTDIRECTORIES IRISNSADDRESS IRIS.LOCK IRISNET IRISNSHOSTNUMBER)) - (COND - ((OBTAIN.MONITORLOCK IRIS.LOCK T T) - [PROG (DH CHAR NET IRISBOOTFILE INBOOTSTREAM OUTBOOTSTREAM IRISBOOTFILENAME BOOTFILENAME TEMP - ) - (SETQ DH (fetch (IRISENCAPSULATION IRISSOURCEHOST) of IRISPACKET)) - (SETQ CHAR (fetch (IRISENCAPSULATION INFOCHAR1) of IRISPACKET)) - (replace (IRISENCAPSULATION IRISDESTHOST) of IRISPACKET - with (SETQ IRISNSHOSTNUMBER (fetch (IRISENCAPSULATION IRISSOURCEHOST) - of IRISPACKET))) - (replace (IRISENCAPSULATION IRISSOURCEHOST) of IRISPACKET with - \MY.NSHOSTNUMBER - ) - [COND - (\IRIS.VERBOSE - (* inform the user that a boot attempt is being made) - (FLASHWINDOW PROMPTWINDOW) - (PROMPTPRINT (CONCAT "IRIS boot initiated to: " DH] - (* "E" for "reply" to booting and "H" for "hostname" for spp connection) - (SETQ NET (fetch (XIP XIPSOURCENET) of IRISPACKET)) - (SETQ IRISNSADDRESS (create NSADDRESS - NSNET _ IRISNET - NSHOSTNUMBER _ IRISNSHOSTNUMBER)) - (* this should be using the net from the iris, but it can't be trusted. - SGI doesn't handle turning around packets properly) - (COND - ((EQ CHAR (CHARCODE C)) (* replace EPSOCKET of IRISPACKET - with 41) - (replace (IRISENCAPSULATION INFOCHAR1) of IRISPACKET with (CHARCODE - E)) - (SENDIRISPACKET IRISPACKET) - (* just sends back an "E" packet with our host socket - (41) filled in) - (SETQ INBOOTSTREAM (SPP.OPEN NIL 41 NIL IRIS.BOOT.STREAM.NAME)) - (SETQ OUTBOOTSTREAM (SPPOUTPUTSTREAM INBOOTSTREAM)) - (SPP.DSTYPE INBOOTSTREAM 108) (* returns a connection which is not - yet established) - (BIN INBOOTSTREAM) - [SETQ TEMP (CONCAT (PACKC (while (SPP.READP INBOOTSTREAM) - collect (BIN INBOOTSTREAM] - [SETQ BOOTFILENAME (L-CASE (SUBSTRING TEMP (STRPOS ":*:" TEMP 1 NIL NIL T) - (SUB1 (STRPOS (CONCAT (CHARACTER 0)) - TEMP] - [COND - ((STREQUAL BOOTFILENAME (CONSTANT "defaultboot")) - (SETQ BOOTFILENAME (CONSTANT "iris"] (* This is a packet specifying the - boot file name,) - [SETQ IRISBOOTFILE (OPENSTREAM (SETQ IRISBOOTFILENAME (FINDFILE BOOTFILENAME NIL - IRISBOOTDIRECTORIES)) - 'INPUT NIL '((TYPE BINARY] - [COND - (\IRIS.VERBOSE - (* inform the user that a boot attempt is being made) - (PROMPTPRINT (CONCAT "Booting IRIS from: " IRISBOOTFILENAME] - (COPYBYTES IRISBOOTFILE OUTBOOTSTREAM NIL NIL) - (FORCEOUTPUT OUTBOOTSTREAM) - (CLOSEF IRISBOOTFILE) - (PROMPTPRINT "IRIS boot server complete, closing boot file") - (CLOSEF INBOOTSTREAM)) - ((EQ CHAR (CHARCODE A)) (* replace EPSOCKET of IRISPACKET - with 41) - (replace (IRISENCAPSULATION INFOCHAR1) of IRISPACKET with (CHARCODE - E)) - (SENDIRISPACKET IRISPACKET) - (* just sends back an "E" packet with our host socket - (41) filled in) - (SETQ INBOOTSTREAM (SPP.OPEN NIL 41 NIL IRIS.BOOT.STREAM.NAME)) - (SETQ OUTBOOTSTREAM (SPPOUTPUTSTREAM INBOOTSTREAM)) - (SPP.DSTYPE INBOOTSTREAM 108) (* returns a connection which is not - yet established) - (BIN INBOOTSTREAM) - (while (SPP.READP INBOOTSTREAM) collect (BIN INBOOTSTREAM)) - (SETQ BOOTFILENAME (CONSTANT "iris")) (* This is a packet specifying the - boot file name,) - [SETQ IRISBOOTFILE (OPENSTREAM (SETQ IRISBOOTFILENAME (FINDFILE BOOTFILENAME NIL - IRISBOOTDIRECTORIES)) - 'INPUT NIL '((TYPE BINARY] - [COND - (\IRIS.VERBOSE - (* inform the user that a boot attempt is being made) - (PROMPTPRINT (CONCAT "Booting IRIS from: " IRISBOOTFILENAME] - (COPYBYTES IRISBOOTFILE OUTBOOTSTREAM NIL NIL) - (FORCEOUTPUT OUTBOOTSTREAM) - (CLOSEF IRISBOOTFILE) - (PROMPTPRINT "IRIS boot server complete, closing boot file") - (CLOSEF INBOOTSTREAM)) - ((EQ CHAR (CHARCODE H)) (* serv-hostname in SGIspeak) - (PRINT "workstation server connection") (* replace EPSOCKET of IRISPACKET - with 41) - (replace (IRISENCAPSULATION INFOCHAR1) of IRISPACKET with (CHARCODE - H)) - (SETQ INBOOTSTREAM (SPP.OPEN NIL 37)) - (SENDIRISPACKET IRISPACKET)) - (T (PRINT "Iris connection") (* replace EPSOCKET of IRISPACKET - with 41) - (PRINTOUT PROMPTWINDOW CHAR "RECEIVED") - (replace (IRISENCAPSULATION INFOCHAR1) of IRISPACKET with - (CHARCODE H)) - (SETQ INBOOTSTREAM (SPP.OPEN NIL 37)) - (SENDIRISPACKET IRISPACKET] - (RELEASE.MONITORLOCK IRIS.LOCK]) - -(SENDIRISPACKET - [LAMBDA (IRISPACKET) (* gbn "10-Jun-85 16:05") - (* * Sends a raw seething IRIS packet) - (COND - ((fetch (ETHERPACKET EPTRANSMITTING) of IRISPACKET) - 'AlreadyQueued) - (T (* (\RCLK (LOCF (fetch - (ETHERPACKET EPTIMESTAMP) of - IRISPACKET)))) - (TRANSMIT.ETHERPACKET (fetch (ETHERPACKET EPNETWORK) of IRISPACKET) - IRISPACKET]) - -(IRISFILTER - [LAMBDA (IRISPACKET) (* gbn " 3-Jun-85 22:49") - (if (AND (EQ (fetch (ETHERPACKET EPTYPE) of IRISPACKET) - IRIS.PACKETTYPE) - (BROADCASTP IRISPACKET)) - then (ADD.PROCESS `(IRISBOOTPROCESS %, IRISPACKET)) - T - else (* not an iris packet) - NIL]) - -(OPEN.IRISCONN - [LAMBDA (NSADDRESS) (* gbn " 7-Jul-85 14:42") - (SETQ IRISCONN (SPP.OPEN (OR NSADDRESS IRISNSADDRESS) - IRISSOCKET T '|Iris Terminal SPP|]) - -(IRISBOOTSERVER - [LAMBDA (ON?) (* gbn " 7-Jul-85 14:54") - (if ON? - then (PROMPTPRINT "Enabling IRIS boot server") - (\ADD.PACKET.FILTER (FUNCTION IRISFILTER)) - else (PROMPTPRINT "Disabling IRIS boot server") - (\DEL.PACKET.FILTER (FUNCTION IRISFILTER]) -) - -(RPAQQ \IRIS.VERBOSE T) - -(RPAQQ PRINTSPPDATAFLG T) - -(RPAQ IRIS.LOCK (CREATE.MONITORLOCK "iris boot lock")) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS IRISNSHOSTNUMBER) -) - -(RPAQ? IRISNET 146) - -(RPAQ? IRISBOOTDIRECTORIES '({CORE} {ERIS}gl2>boot>)) -(DECLARE%: EVAL@COMPILE - -(RPAQQ IRISSOCKET 37) - -(RPAQQ IRIS.PACKETTYPE 32790) - -(RPAQQ IRIS.BOOT.STREAM.NAME |IRIS boot SPP|) - -(CONSTANTS (IRISSOCKET 37) - (IRIS.PACKETTYPE 32790) - (IRIS.BOOT.STREAM.NAME '|IRIS boot SPP|)) -) -(DECLARE%: EVAL@LOAD DONTCOPY -(FILESLOAD ETHERRECORDS) - -(LOADCOMP 'LLETHER) -) -(ACCESSFNS IRISENCAPSULATION [(IRISBASE (LOCF (FETCH (ETHERPACKET EPENCAPSULATION) - OF DATUM] - [BLOCKRECORD IRISBASE ((IRISLENGTH WORD) - (IRISDESTHOSTO 3 WORD) - (IRISSOURCEHOSTO 3 WORD) - (IRISTYPE WORD) - (IRISEXCHID WORD) - (INFOCHAR1 BYTE) - (INFOCHAR2 BYTE)) - [ACCESSFNS IRISDESTHOSTO ((IRISDESTHOST (\LOADNSHOSTNUMBER (LOCF DATUM)) - (\STORENSHOSTNUMBER (LOCF DATUM) - NEWVALUE)) - (IRISPACKETBASE (LOCF DATUM)) - (IRISDESTHOSTBASE (LOCF DATUM] - (ACCESSFNS IRISSOURCEHOSTO ((IRISSOURCEHOST (\LOADNSHOSTNUMBER (LOCF DATUM)) - (\STORENSHOSTNUMBER (LOCF DATUM) - NEWVALUE)) - (IRISSOURCEHOSTBASE (LOCF DATUM] - (TYPE? (type? ETHERPACKET DATUM))) -(DECLARE%: EVAL@COMPILE -[PUTPROPS BROADCASTP MACRO ((PACKET) - ([LAMBDA (NDB) - (AND NDB (APPLY* (fetch NDBBROADCASTP of NDB) - PACKET NDB] - (fetch EPNETWORK of PACKET] -) -(PUTPROPS IRISNET COPYRIGHT ("Xerox Corporation" 1988)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (3679 13267 (IRIS.RESET 3689 . 4230) (IRIS.TRACE 4232 . 4424) (IRISBOOTPROCESS 4426 . -11586) (SENDIRISPACKET 11588 . 12227) (IRISFILTER 12229 . 12677) (OPEN.IRISCONN 12679 . 12908) ( -IRISBOOTSERVER 12910 . 13265))))) -STOP diff --git a/obsolete/lispusers/IRISSTREAM b/obsolete/lispusers/IRISSTREAM deleted file mode 100644 index d33b73f7..00000000 --- a/obsolete/lispusers/IRISSTREAM +++ /dev/null @@ -1,1314 +0,0 @@ -(DEFINE-FILE-INFO §READTABLE "INTERLISP" §PACKAGE "INTERLISP") -(FILECREATED " 4-Feb-87 19:48:57" {ERIS}NEXT>IRISSTREAM.;10 68566 - - changes to%: (RECORDS IRISDATA) - (FNS OPENIRISSTREAM CLEARIRIS DRAWBITMAP TRYGRAPHER \FONTCREATE.IRIS - \OUTCHARFN.IRIS \IRISSTREAMINIT \IRIS.ASSURE.COLOR \LOOKUPRGB BOXSCREEN - IRIS.CONS.OBJNO IRISBITMAP FILLPOLYGON INSTALL.OBJFONT \CLOSEF.IRIS R - SPPINPUTSTREAM \BACKCOLOR.IRIS \BITBLT.IRIS \BLTSHADE.IRIS - \FONTSAVAILABLE.IRIS \LEFTMARGIN.IRIS \RESET.IRIS - \PSPLINE.TO.BEZIER.GEOMETRY \SCALE.IRIS \SCALE.SPLINE.BY.DERIVS - \STRINGWIDTH.IRIS \TERPRI.IRIS \FONT.IRIS \CREATECHARSET.IRIS - \IRISSETFONTBASE \IRISFONTBASE \CHANGECHARSET.IRIS \CHARWIDTH.IRIS - \CLIPPINGREGION.IRIS \CLOSEFN.IRIS \COLOR.IRIS \DRAWCIRCLE.IRIS - \DRAWCURVE.IRIS \DRAWLINE.IRIS \CONVERTLINESTYLE.IRIS \MOVETO.IRIS - \XPOSITION.IRIS \YPOSITION.IRIS \FILLCIRCLE.IRIS \DRAWELLIPSE.IRIS - \FILLPOLYGON.IRIS \IRIS.BITBLT \DRAWPOLYGON.IRIS ALIGN) - (VARS IRISSTREAMCOMS \BEZIERBASIS.IRIS) - - previous date%: "16-Jan-87 18:14:11" {ERIS}NEXT>IRISSTREAM.;5) - - -(PRETTYCOMPRINT IRISSTREAMCOMS) - -(RPAQQ IRISSTREAMCOMS - ((FILES SFFONT COLOR IRISLIB IRISIO IRISNET) - [ADDVARS (IMAGESTREAMTYPES (IRIS (OPENSTREAM OPENIRISSTREAM) - (FONTCREATE \FONTCREATE.IRIS) - (FONTSAVAILABLE \FONTSAVAILABLE.IRIS) - (CREATECHARSET \CREATECHARSET.IRIS] - (GLOBALVARS \IRIS.VERBOSE IRISNSHOSTNUMBER \IRIS.DEBUG \BEZIERBASIS.IRIS \IRISCOLORMAPCACHE - \IRIS.VERSION \IRISSTREAM IRISCONN \IV.HIGHOBJNO \IRIS.BITPLANES) - (INITVARS (\IRIS.VERBOSE T) - (\IRISSTREAMS NIL) - (\IRIS.VERSION 'GL2) - (IRISFONTDIRECTORIES '{ERIS}SF>) - (\CHARSEGMENTS.IRIS 10) - (\IRIS.BITPLANES 4) - (IRISFONTFAMILIES '(GACHA TIMESROMAN)) - (IRISFONTROTATIONS '(0)) - (IRISFONTSIZES '(8 10 12 14 18 24)) - (\IRIS.DEBUG NIL) - (IRISNSHOSTNUMBER "0#4000.12000.41504#0") - (\IV.HIGHOBJNO 100000)) - (VARS \BEZIERBASIS.IRIS \IRIS.VERBOSE \BEZIERBASIS.IRIS \IRISCOLORMAPCACHE \IRIS.VERSION) - (CONSTANTS IRIS.YAXIS IRIS.ZAXIS) - (FNS BOXSCREEN CLEARIRIS DRAWBITMAP IRIS.CONS.OBJNO IRISBITMAP INSTALL.OBJFONT OPENIRISSTREAM - \CLOSEF.IRIS R SPPINPUTSTREAM TRYGRAPHER \BACKCOLOR.IRIS \BITBLT.IRIS \BLTSHADE.IRIS - \FONTCREATE.IRIS \FONTSAVAILABLE.IRIS \LEFTMARGIN.IRIS \RESET.IRIS \LOOKUPRGB - \PSPLINE.TO.BEZIER.GEOMETRY \SCALE.IRIS \SCALE.SPLINE.BY.DERIVS \TERPRI.IRIS \FONT.IRIS - \CREATECHARSET.IRIS \IRISSETFONTBASE \IRISFONTBASE \CHANGECHARSET.IRIS \CHARWIDTH.IRIS - \OUTCHARFN.IRIS \CLIPPINGREGION.IRIS \CLOSEFN.IRIS \COLOR.IRIS \IRIS.ASSURE.COLOR - \DRAWCIRCLE.IRIS \DRAWCURVE.IRIS \DRAWLINE.IRIS \CONVERTLINESTYLE.IRIS \IRISSTREAMINIT - \MOVETO.IRIS \XPOSITION.IRIS \YPOSITION.IRIS \FILLCIRCLE.IRIS \DRAWELLIPSE.IRIS - \FILLPOLYGON.IRIS \IRIS.BITBLT \DRAWPOLYGON.IRIS ALIGN) - - -(* ;;; "test functions") - - (RECORDS BEZIER IRISDATA IRISSTREAM SPLINE) - (CONSTANTS (\ALTLINESTYLE.IRIS 1) - (\IRIS.ITALICS.ROTATION -100) - (\PRIMARYLINESTLE.IRIS 0) - (\IRIS.BOLD.LINEWIDTH 2)) - [P (\IRISSTREAMINIT) - (SETFONTCLASSCOMPONENT DEFAULTFONT 'IRIS '(GACHA 12] - [ADDVARS (DEFAULTPRINTINGHOST (IRIS Iris)) - (PRINTERTYPES (IRIS (CANPRINT (IRIS)) - (BITMAPFILE (IRISBITMAP FILE BITMAP SCALEFACTOR REGION ROTATION - TITLE] - (P (PUTPROP 'Iris 'PRINTERTYPE 'IRIS)) - (PROP PRINTERTYPE Iris) - (FUNCTIONS WITH.IRIS.ATTR))) -(FILESLOAD SFFONT COLOR IRISLIB IRISIO IRISNET) - -(ADDTOVAR IMAGESTREAMTYPES (IRIS (OPENSTREAM OPENIRISSTREAM) - (FONTCREATE \FONTCREATE.IRIS) - (FONTSAVAILABLE \FONTSAVAILABLE.IRIS) - (CREATECHARSET \CREATECHARSET.IRIS))) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS \IRIS.VERBOSE IRISNSHOSTNUMBER \IRIS.DEBUG \BEZIERBASIS.IRIS \IRISCOLORMAPCACHE - \IRIS.VERSION \IRISSTREAM IRISCONN \IV.HIGHOBJNO \IRIS.BITPLANES) -) - -(RPAQ? \IRIS.VERBOSE T) - -(RPAQ? \IRISSTREAMS NIL) - -(RPAQ? \IRIS.VERSION 'GL2) - -(RPAQ? IRISFONTDIRECTORIES '{ERIS}SF>) - -(RPAQ? \CHARSEGMENTS.IRIS 10) - -(RPAQ? \IRIS.BITPLANES 4) - -(RPAQ? IRISFONTFAMILIES '(GACHA TIMESROMAN)) - -(RPAQ? IRISFONTROTATIONS '(0)) - -(RPAQ? IRISFONTSIZES '(8 10 12 14 18 24)) - -(RPAQ? \IRIS.DEBUG NIL) - -(RPAQ? IRISNSHOSTNUMBER "0#4000.12000.41504#0") - -(RPAQ? \IV.HIGHOBJNO 100000) - -(RPAQQ \BEZIERBASIS.IRIS ((-1.0 3.0 -3.0 1.0) - (3.0 -6.0 3.0 0.0) - (-3.0 3.0 0.0 0.0) - (1.0 0.0 0.0 0.0))) - -(RPAQQ \IRIS.VERBOSE T) - -(RPAQQ \BEZIERBASIS.IRIS ((-1.0 3.0 -3.0 1.0) - (3.0 -6.0 3.0 0.0) - (-3.0 3.0 0.0 0.0) - (1.0 0.0 0.0 0.0))) - -(RPAQQ \IRISCOLORMAPCACHE (((0 0 0) . 0) - ((255 255 255) . 7) - ((0 255 0) . 2) - ((0 0 255) . 4) - ((255 0 0) . 1) - ((255 255 0) . 3) - ((255 0 255) . 5) - ((0 255 255) . 6))) - -(RPAQQ \IRIS.VERSION GL2) -(DECLARE%: EVAL@COMPILE - -(RPAQQ IRIS.YAXIS 89) - -(RPAQQ IRIS.ZAXIS 90) - -(CONSTANTS IRIS.YAXIS IRIS.ZAXIS) -) -(DEFINEQ - -(BOXSCREEN - [LAMBDA NIL (* gbn " 8-Nov-85 16:56") - - (* * draw a box around the screen) - - (DRAWLINE 0 0 (SUB1 SCREENWIDTH) - 0 NIL NIL \IRISSTREAM) - (DRAWTO (SUB1 SCREENWIDTH) - (SUB1 SCREENHEIGHT) - NIL NIL \IRISSTREAM) - (DRAWTO 0 (SUB1 SCREENHEIGHT) - NIL NIL \IRISSTREAM) - (DRAWTO 0 0 NIL NIL \IRISSTREAM) - (FLUSHOUTPUT IRISCONN]) - -(CLEARIRIS - [LAMBDA (IRIS-CONNECTION IRISSTREAM) (* ; "Edited 2-Feb-87 23:36 by gbn") - (OR IRISSTREAM (SETQ IRISSTREAM \IRISSTREAM)) - [OR IRIS-CONNECTION (SETQ IRIS-CONNECTION (fetch SPPOUTSTREAM of (fetch IRISDATA of \IRISSTREAM] - (IRIS.SINGLEBUFFER IRIS-CONNECTION) - (IRIS.GCONFIG IRIS-CONNECTION) - (DSPCLIPPINGREGION WHOLESCREEN IRISSTREAM) - (IRIS.ORTHO 0 SCREENWIDTH 0 SCREENHEIGHT -1000 1000 IRIS-CONNECTION) - (DSPCOLOR 'WHITE IRISSTREAM) - (IRIS.LINEWIDTH 1 IRIS-CONNECTION) (* ; "IRIS.RESETLS 0 IRISCONN") - (* ; - "make the IRIS not reset the line style between curve segments") - (IRIS.CURSOFF IRIS-CONNECTION) - (IRIS.CLEAR IRIS-CONNECTION) - (DSPCOLOR 'BLUE IRISSTREAM) - (SELECTQ \IRIS.VERSION - (GL2 (IRIS.CURVEPRECISION \CHARSEGMENTS.IRIS IRIS-CONNECTION) - (IRIS.DEFBASIS 1 \BEZIERBASIS.IRIS IRIS-CONNECTION) - (IRIS.CURVEBASIS 1 IRIS-CONNECTION)) - (GL1) - (ERROR "Unknown version of IRIS: " \IRIS.VERSION)) - (DSPRESET IRISSTREAM) - (SPP.FORCEOUTPUT IRIS-CONNECTION]) - -(DRAWBITMAP - [LAMBDA (BITMAP SOURCELEFT SOURCEBOTTOM OUTPUTSTREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT - ) (* ; "Edited 2-Feb-87 23:37 by gbn") - (LET ((DESTBOTTOM (OR DESTINATIONBOTTOM (DSPYPOSITION NIL OUTPUTSTREAM))) - (DESTLEFT (OR DESTINATIONLEFT (DSPXPOSITION NIL OUTPUTSTREAM))) - (WIDTH (OR WIDTH (BITMAPWIDTH BITMAP))) - (HEIGHT (OR HEIGHT (BITMAPHEIGHT BITMAP))) - (SBOTTOM (OR SOURCEBOTTOM 0)) - (SLEFT (OR SOURCELEFT 0)) - ROW) - [for Y from SOURCEBOTTOM to (IPLUS SOURCEBOTTOM HEIGHT) as YBASE from 0 - do (SETQ ROW (IPLUS DESTBOTTOM YBASE)) - - (* if there is a pixel set on the row, it is better to set the row outside the - loop) - - (bind (STATE _ 'SKIP0S) - START END for X from SLEFT to (IPLUS SLEFT WIDTH) as BASE from 0 - do (SELECTQ STATE - (SKIP0S (if (IEQP 0 (BITMAPBIT BITMAP X Y)) - then (* skipping zeros, found a zero, so do - nothing) - NIL - else (* start a run.) - (SETQ START BASE) - (SETQ END BASE) - (SETQ STATE 'COLLECT1S))) - (COLLECT1S (if (ILESSP END (add END (BITMAPBIT BITMAP X Y))) - then - - (* collecting 1's, found one. The test already incremented END, so do nothing) - - NIL - else (DRAWLINE (IPLUS DESTLEFT START) - ROW - (IPLUS DESTLEFT END) - ROW 1 NIL OUTPUTSTREAM) - (SETQ STATE 'SKIP0S))) - (SHOULDNT "Unknown state: " STATE)) - finally (if (EQ STATE 'COLLECT1S) - then (DRAWLINE (IPLUS DESTLEFT START) - ROW - (IPLUS DESTLEFT END) - ROW 1 NIL OUTPUTSTREAM] - (MOVETO DESTLEFT DESTBOTTOM OUTPUTSTREAM]) - -(IRIS.CONS.OBJNO - [LAMBDA NIL (* gbn "15-Nov-85 15:41") - (add \IV.HIGHOBJNO 1]) - -(IRISBITMAP - [LAMBDA (FILE BITMAP SCALEFACTOR REGION ROTATION TITLE) (* gbn "24-Oct-85 16:51") - (LET [(IRISSTREAM (OPENIMAGESTREAM '{LPT}Iris.IRIS 'IRIS] - (BITBLT BITMAP (fetch (REGION LEFT) of REGION) - (fetch (REGION BOTTOM) of REGION) - IRISSTREAM - (DSPXPOSITION NIL IRISSTREAM) - (DSPYPOSITION NIL IRISSTREAM) - (fetch (REGION WIDTH) of REGION) - (fetch (REGION HEIGHT) of REGION]) - -(INSTALL.OBJFONT - [LAMBDA (FAMILY CHARSET LOWCHARCODE HIGHESTCHARCODE SCALE IRISSTREAM CSINFO) - (* gbn "12-Nov-85 19:17") - - (* * takes a font in SF format that is already in core, ie, part of the value - of \SPLINEFONTSINCORE, and installs it on the iris connected to STREAM. - Characters in the font which are nil are not downloaded) - - (* * note that this fn is called by the fontcreate method for the iris, even - when the font has already been downloaded. - This fn looks up in the stream and just returns the old cached info from the - original downloading.) - - (if \IRIS.DEBUG - then (SETQ LOWCHARCODE 97) - (SETQ HIGHESTCHARCODE 101) - else (SETQ LOWCHARCODE (OR LOWCHARCODE 1)) - (SETQ HIGHESTCHARCODE (OR HIGHESTCHARCODE 255))) - (PROG ((FONTARRAY (\LOOKUPSPLINEFONT FAMILY CHARSET)) - (IRISDATA (fetch IRISDATA of IRISSTREAM)) - (MAXHEIGHT 0) - SPACEWIDTH OBJ# FONTBASE CHARDESC WIDTHARRAY STREAM) - (SETQ STREAM (fetch SPPOUTSTREAM of IRISDATA)) - (if (NOT FONTARRAY) - then (ERROR "Charset for spline font not in core:" (LIST FAMILY CHARSET))) - (if (SETQ FONTBASE (\IRISFONTBASE FAMILY CHARSET IRISDATA)) - then - - (* the font has already been downloaded, just return the cached info) - - (if \IRIS.DEBUG - then (SHOULDNT "font being redefined")) - (RETURN FONTBASE) - else (SETQ FONTBASE (add (fetch HIFONT# of IRISDATA) - 256)) - (SETQ WIDTHARRAY (\CREATECSINFOELEMENT))) - (if \IRIS.VERBOSE - then (PROMPTPRINT "Installing font on IRIS: " FAMILY)) - (if (ZEROP (IRIS.ISOBJ 0 STREAM)) - then (IRIS.MAKEOBJ 0 STREAM) - (IRIS.CURSOFF STREAM) - (IRIS.CLOSEOBJ STREAM)) - - (* character 0 of the font is always defined on the IRIS as the way of telling - if this charset has been downloaded.) - (* NOT ANY MORE) - [for I from LOWCHARCODE to HIGHESTCHARCODE - do (SETQ CHARDESC (ELT FONTARRAY I)) - (if CHARDESC - then (IRIS.MAKEOBJ (SETQ OBJ# (IPLUS FONTBASE I)) - STREAM) - (SFDRAW CHARDESC NIL 0 0 SCALE IRISSTREAM) - - (* The scale is always one when called for the iris, because the printchar - method makes the IRIS scale the character anyway) - - (IRIS.CLOSEOBJ STREAM) - (ALIGN) (* CONSISTENCY CHECK) - (if (ZEROP (IRIS.ISOBJ OBJ# STREAM)) - then (ERROR ' - "(OBJECT FONT CHARACTER IS UNDEFINED DIRECTLY AFTER DEFINING INSIDE INSTALL.OBJFONT)" - ) - else (PRINTOUT PROMPTWINDOW (CHARACTER I] - (IRIS.GFLUSH STREAM) - (ALIGN) - (\IRISSETFONTBASE FAMILY CHARSET IRISDATA FONTBASE) - (SETQ OBJ# (IPLUS FONTBASE (CHARCODE SPACE))) - (if (ZEROP (IRIS.ISOBJ OBJ# STREAM)) - then (* install a fake space char if there - isn't one) - (SETQ SPACEWIDTH (\FGETWIDTH WIDTHARRAY (OR HIGHESTCHARCODE 127))) - (IRIS.MAKEOBJ OBJ# STREAM) - (MOVETO SPACEWIDTH 0 IRISSTREAM) - (IRIS.CLOSEOBJ STREAM) - (\FSETWIDTH WIDTHARRAY (CHARCODE SPACE) - SPACEWIDTH)) - (RETURN (LIST FAMILY FONTBASE WIDTHARRAY MAXHEIGHT]) - -(OPENIRISSTREAM - [LAMBDA (NSHOSTNUMBER OPTIONS) (* ; "Edited 4-Feb-87 19:05 by gbn") - - (* * opens a stream to an iris workstation) - - (DECLARE (GLOBALVARS \IRISIMAGEOPS)) - (PROG ((IRISDATA (create IRISDATA)) - (HOST (OR NSHOSTNUMBER IRISNSHOSTNUMBER)) - (IRISSTREAM (OPENSTREAM '{NODIRCORE}IRIS.SCRATCH 'OUTPUT 'NEW 8 'BINARY)) - TEMPCONN) - (if (NOT HOST) - then (ERROR "IRISNSHOSTNUMBER must be supplied")) - (if [AND (NOT (EQMEMB 'RECONNECT OPTIONS)) - (SPP.OPENP IRISCONN) - (OR (NULL HOST) - (SELECTQ (TYPENAME HOST) - (NSADDRESS (EQUAL (fetch (NSADDRESS NSHOSTNUMBER) of HOST) - (fetch (NSADDRESS NSHOSTNUMBER) of (SPP.DESTADDRESS - IRISCONN)))) - (LISTP (EQUAL HOST (fetch (NSADDRESS NSHOSTNUMBER) of (SPP.DESTADDRESS - IRISCONN)))) - (LITATOM (EQ 'LPT (LISTGET (UNPACKFILENAME HOST) - 'HOST))) - (NILL] - then - - (* there is still a stream open to the iris. - Just use that, since one can have at most a single stream open to the iris) - - (RETURN \IRISSTREAM) - else (if [AND (TYPENAMEP HOST 'LITATOM) - (EQ 'LPT (LISTGET (UNPACKFILENAME HOST) - 'HOST] - then - - (* * This is just a request to hardcopy when there is no open stream) - - (SETQ HOST NIL)) - (if (NOT (SETQ TEMPCONN (OPEN.IRISCONN HOST))) - then (ERROR "Iris did not respond to connection attempt" HOST))) - (* replace (STREAM USERCLOSEABLE) of - IRISSTREAM with NIL) - (STREAMADDPROP IRISSTREAM 'BEFORECLOSE '\CLOSEF.IRIS) - (replace (STREAM OUTCHARFN) of IRISSTREAM with (FUNCTION \OUTCHARFN.IRIS)) - (replace (IRISSTREAM IMAGEOPS) of IRISSTREAM with \IRISIMAGEOPS) - (replace (IRISSTREAM IRISDATA) of IRISSTREAM with IRISDATA) - (replace (IRISDATA SPPINSTREAM) of IRISDATA with TEMPCONN) - (replace (IRISDATA SPPOUTSTREAM) of IRISDATA with (SPPOUTPUTSTREAM TEMPCONN)) - (replace (IRISDATA IRISCOLORMAPCACHE) of IRISDATA with \IRISCOLORMAPCACHE) - (* replace (IRISDATA IRISCOLORMAP) of - IRISDATA with (COLORMAPCREATE NIL - \IRIS.BITPLANES)) - (replace (IRISDATA IRISCHARSET) of IRISDATA with -1) - (replace (IRISDATA IRISPAGE) of IRISDATA with (COPY WHOLESCREEN)) - (SETQ IRISCONN (fetch SPPOUTSTREAM of IRISDATA)) - (IRIS.GINIT IRISCONN) - (CLEARIRIS IRISCONN IRISSTREAM) - (RETURN (SETQ \IRISSTREAM IRISSTREAM]) - -(\CLOSEF.IRIS - [LAMBDA (IRISSTREAM) (* gbn "25-Oct-85 17:18") - - (* * this fn is installed on the stream as a streamprop. - It flushs the output to the stream, but does not close it) - - (FORCEOUTPUT (fetch SPPOUTSTREAM of (fetch IRISDATA of IRISSTREAM))) - (RETFROM 'CLOSEF NIL]) - -(R - [LAMBDA NIL (* gbn "21-Jun-85 03:57") - (OPENIRISSTREAM NIL '(DONTCONNECT]) - -(SPPINPUTSTREAM - [LAMBDA (OUTPUTSTREAM) (* gbn "17-Jun-85 17:40") - (PROG ((CON (fetch (STREAM F1) of OUTPUTSTREAM))) - (if CON - then (RETURN (fetch (SPPCON SPPINPUTSTREAM) of CON]) - -(TRYGRAPHER - [LAMBDA (DONTSETUP?) (* ; "Edited 2-Feb-87 23:43 by gbn") - -(* ;;; "just a hack to try to draw a grapher graph") - -(* ;;; "comment") - - (PROG (G) - [SETQ G (LAYOUTSEXPR '(stu (wxy xxx) - (xyzzy)) NIL NIL (FONTCREATE 'GACHA 20 NIL NIL 'IRIS] - (IF (NOT DONTSETUP?) - THEN (IRIS.GRESET) - (IRIS.SINGLEBUFFER) (* ; "(IRIS.DOUBLEBUFFER)") - (IRIS.GCONFIG) - (IRIS.PERSPECTIVE 120 1 -1000 1000) - (IRIS.LOOKAT 0 0 30000 0 0 0 0) - (IRIS.LINEWIDTH 2) - (CLEAR 'BLUE) - (IRIS.COLOR 'WHITE)) - (DISPLAYGRAPH G \IRISSTREAM) - (RETURN]) - -(\BACKCOLOR.IRIS - [LAMBDA (STREAM COLOR) (* ; "Edited 16-Jan-87 13:58 by gbn") - (IF COLOR - THEN (REPLACE (IRISDATA BACKCOLOR) OF (FETCH IRISDATA OF STREAM) WITH COLOR) - ELSE (FETCH (IRISDATA BACKCOLOR) OF (FETCH IRISDATA OF STREAM]) - -(\BITBLT.IRIS - [LAMBDA (SOURCEBITMAP SOURCELEFT SOURCEBOTTOM DESTINATION DESTINATIONLEFT DESTINATIONBOTTOM WIDTH - HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION CLIPPEDSOURCELEFT - CLIPPEDSOURCEBOTTOM) (* gbn "12-Nov-85 14:35") - - (* * produces a |3-d| bitmap composed of lines) - - (if (NOT (EQ (IMAGESTREAMTYPE DESTINATION) - 'IRIS)) - then (ERROR "Destination not IRIS stream: " DESTINATION)) - (DRAWBITMAP SOURCEBITMAP SOURCELEFT SOURCEBOTTOM DESTINATION DESTINATIONLEFT DESTINATIONBOTTOM - WIDTH HEIGHT) - (FLUSHOUTPUT (fetch SPPOUTSTREAM of (fetch IRISDATA of \IRISSTREAM]) - -(\BLTSHADE.IRIS - [LAMBDA (TEXTURE IRISSTREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT OPERATION CLIPPINGREGION - ) (* ; "Edited 16-Jan-87 15:00 by gbn") - (* ; - "should not affect anything, so do a with attr") - (LET* ((IRISDATA (fetch IRISDATA of IRISSTREAM)) - (SPPOUT (fetch (IRISDATA SPPOUTSTREAM) of IRISDATA))) - (WITH.IRIS.ATTR (IRIS.POLF2 4 (LIST (CREATEPOSITION DESTINATIONLEFT DESTINATIONBOTTOM) - (CREATEPOSITION (IPLUS DESTINATIONLEFT WIDTH) - DESTINATIONBOTTOM) - (CREATEPOSITION (IPLUS DESTINATIONLEFT WIDTH) - (IPLUS DESTINATIONBOTTOM HEIGHT)) - (CREATEPOSITION DESTINATIONLEFT (IPLUS - DESTINATIONBOTTOM - HEIGHT))) - SPPOUT) - IRISSTREAM SPPOUT :COLOR TEXTURE) - (FORCEOUTPUT SPPOUT]) - -(\FONTCREATE.IRIS - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHARSET) (* ; "Edited 2-Feb-87 23:44 by gbn") - -(* ;;; "This function reads in the spline definition for a font, but does not install it on the iris. The installation is done on a demand basis on the IRIS, charset by charset.") - - (PROG (WIDTHS (SCALE 1) - FONTDESC CSINFO) - - (* ;; "since a spline font can be any size, we must guarantee that relative sizes are guaranteed, i.e. a 10 point font is twice as big as a 5 point font") - - (SETQ SCALE 1) - -(* ;;; "the width arrays, the height, ascent, etc are all scaled") - - (SETQ FONTDESC (create FONTDESCRIPTOR - FONTDEVICE _ 'IRIS - FONTFAMILY _ FAMILY - FONTSIZE _ SIZE - FONTFACE _ FACE - ROTATION _ ROTATION)) (* ; "CHECK WHAT FONTSCALE MEANS") - (SETQ CSINFO (\GETCHARSETINFO 0 FONTDESC T)) - (if (NOT CSINFO) - then (RETURN NIL)) (* ; - "this will call the createcharset method for the IRIS") - [SETQ SCALE (replace OTHERDEVICEFONTPROPS of FONTDESC - with (QUOTIENT (FLOAT SIZE) - (IPLUS (fetch (CHARSETINFO CHARSETASCENT) of CSINFO) - (fetch (CHARSETINFO CHARSETDESCENT) of CSINFO] - (SETQ WIDTHS (fetch (CHARSETINFO WIDTHS) of CSINFO)) - [for I from 0 to \MAXTHINCHAR DO (\FSETWIDTH WIDTHS I (FIX (TIMES (\FGETWIDTH WIDTHS I) - SCALE] - (replace \SFHeight of FONTDESC with SIZE) - [replace \SFAscent of FONTDESC with (FIX (TIMES SCALE (fetch (CHARSETINFO CHARSETASCENT) - of CSINFO] - [replace \SFDescent of FONTDESC with (FIX (TIMES SCALE (fetch (CHARSETINFO CHARSETDESCENT) - of CSINFO] - (* ; - "OTHERDEVICEFONTPROPS is used to hide the scale of the font on the iris") - (RETURN FONTDESC]) - -(\FONTSAVAILABLE.IRIS - [LAMBDA (FAMILY PSIZE FACE ROTATION DEVICE) (* gbn "13-Nov-85 12:06") - - (* * returns a list of the form (family size face rotation IRIS) for any font - matching the specs. * is used as wildcard.) - - (DECLARE (GLOBALVARS IRISFONTDIRECTORIES)) (* Normalize face) - (LET [(FAMILIES (if (MEMB FAMILY IRISFONTFAMILIES) - then FAMILY - else NIL)) - (SIZES (SELECTQ PSIZE - (* IRISFONTSIZES) - (PROG1 PSIZE))) - [FACES (SELECTQ FACE - (* '((MEDIUM REGULAR REGULAR) - (MEDIUM ITALIC REGULAR) - (BOLD REGULAR REGULAR) - (BOLD ITALIC REGULAR))) - (PROG1 (LIST (\FONTFACE FACE] - (ROTATIONS (SELECTQ ROTATION - (* IRISFONTROTATIONS) - (PROG1 ROTATION] - (for FFAMILY inside FAMILIES - join (for SSIZE inside SIZES - join (for FFACE in FACES join (for RROTATION inside ROTATIONS - collect (LIST FFAMILY SSIZE FFACE RROTATION - 'IRIS]) - -(\LEFTMARGIN.IRIS - [LAMBDA (MARGIN STREAM) (* gbn " 8-Nov-85 17:33") - (OR 0 (if MARGIN - then (replace LEFT of (fetch IRISPAGE OF (fetch IRISDATA of STREAM)) with MARGIN) - else (fetch LEFT of (fetch IRISPAGE OF (fetch IRISDATA of STREAM]) - -(\RESET.IRIS - [LAMBDA (IRISSTREAM) (* gbn "13-Nov-85 00:46") - (MOVETO (DSPLEFTMARGIN NIL IRISSTREAM) - (IDIFFERENCE (fetch TOP of (DSPCLIPPINGREGION NIL IRISSTREAM)) - (FONTPROP (DSPFONT NIL IRISSTREAM) - 'HEIGHT)) - IRISSTREAM]) - -(\LOOKUPRGB - [LAMBDA (RGB IRISDATA) (* ; "Edited 2-Feb-87 20:37 by gbn") - -(* ;;; -"returns the colormap index whose value is RGB. Returns the closest found and caches that value.") - -(* ;;; "Since the colormap code is so flakey, the iris now relies only on the cache in the stream. Not very efficient.") - - (LET* ((CACHE (FETCH IRISCOLORMAPCACHE OF IRISDATA)) - (INDEX (SASSOC RGB CACHE))) - (IF INDEX - THEN (CDR INDEX) - ELSE - - (* ;; "didn't find exactly the right index. Now look through the cache. For closeness in the color space, we use cartesian difference of the rgb's.") - - [SETQ INDEX (CDR (FOR PAIR IN CACHE - SMALLEST (CL:FLET [(ABSDIF (X Y) - (IABS (IDIFFERENCE X Y] - (APPLY #'+ (CL:MAPCAR #'ABSDIF RGB (CAR PAIR] - (REPLACE IRISCOLORMAPCACHE OF IRISDATA WITH (CL:ACONS RGB INDEX CACHE)) - INDEX]) - -(\PSPLINE.TO.BEZIER.GEOMETRY - [LAMBDA (SPLINE KNOT#) (* gbn " 7-Jul-85 20:49") - - (* * returns a bezier geometry matrix from the spline for knot KNOT#. - (compare with SF.DERIVS.TO.BEZIER which does the same thing for a SF spline - description)) - - (* * the derivatives must already be scaled by the Factorials) - - (* * should not create the BEZIER) - - (PROG [(BEZ (create BEZIER - B0X _ (ELT (fetch SPLINEX of SPLINE) - KNOT#) - B0Y _ (ELT (fetch SPLINEY of SPLINE) - KNOT#] - (replace B1X of BEZ with (PLUS (ffetch B0X of BEZ) - (QUOTIENT (ELT (ffetch SPLINEDX of SPLINE) - KNOT#) - 3))) - (replace B1Y of BEZ with (PLUS (ffetch B0Y of BEZ) - (QUOTIENT (ELT (ffetch SPLINEDY of SPLINE) - KNOT#) - 3))) - (replace B2X of BEZ with (PLUS (ffetch B1X of BEZ) - (QUOTIENT (PLUS (ELT (ffetch SPLINEDX of SPLINE) - KNOT#) - (ELT (ffetch SPLINEDDX of SPLINE) - KNOT#)) - 3))) - (replace B2Y of BEZ with (PLUS (ffetch B1Y of BEZ) - (QUOTIENT (PLUS (ELT (ffetch SPLINEDY of SPLINE) - KNOT#) - (ELT (ffetch SPLINEDDY of SPLINE) - KNOT#)) - 3))) - (replace B3X of BEZ with (PLUS (ffetch B0X of BEZ) - (ELT (ffetch SPLINEDX of SPLINE) - KNOT#) - (ELT (ffetch SPLINEDDX of SPLINE) - KNOT#) - (ELT (ffetch SPLINEDDDX of SPLINE) - KNOT#))) - (replace B3Y of BEZ with (PLUS (ffetch B0Y of BEZ) - (ELT (fetch SPLINEDY of SPLINE) - KNOT#) - (ELT (ffetch SPLINEDDY of SPLINE) - KNOT#) - (ELT (ffetch SPLINEDDDY of SPLINE) - KNOT#))) - (RETURN BEZ]) - -(\SCALE.IRIS - [LAMBDA (STREAM SCALE) (* gbn "24-Jun-85 18:50") - (if (NOT SCALE) - then 1 - else (ERROR]) - -(\SCALE.SPLINE.BY.DERIVS - [LAMBDA (SPLINE) (* gbn " 8-Jul-85 17:20") - - (* * For the form used by \PSPLINE.TO.BEZIER.GEOMETRY, the derivs can all be - premultiplied by the factorial coefficients, rather than repeatedly multiplying - them in) - - (bind (DDX _ (fetch SPLINEDDX of SPLINE)) - (DDY _ (fetch SPLINEDDY of SPLINE)) - (DDDX _ (fetch SPLINEDDDX of SPLINE)) - (DDDY _ (fetch SPLINEDDDY of SPLINE)) for I from 1 to (fetch %#KNOTS of SPLINE) - do (SETA DDX I (FQUOTIENT (ELT DDX I) - 2.0)) - (SETA DDY I (FQUOTIENT (ELT DDY I) - 2.0)) - (SETA DDDX I (FQUOTIENT (ELT DDDX I) - 6.0)) - (SETA DDDY I (FQUOTIENT (ELT DDDY I) - 6.0]) - -(\TERPRI.IRIS - [LAMBDA (STREAM) (* gbn "12-Nov-85 14:37") - (MOVETO (DSPLEFTMARGIN NIL STREAM) - (IDIFFERENCE (DSPYPOSITION NIL STREAM) - (FONTPROP (DSPFONT NIL STREAM) - 'HEIGHT)) - STREAM) - (if (ILESSP (DSPYPOSITION NIL STREAM) - 0) - then (DSPRESET STREAM)) - (FLUSHOUTPUT (fetch SPPOUTSTREAM of (fetch IRISDATA of STREAM]) - -(\FONT.IRIS - [LAMBDA (IRISSTREAM FONTDESC) (* gbn "29-Oct-85 15:25") - (if FONTDESC - then (LET ((IRISDATA (fetch IRISDATA of IRISSTREAM))) - [if [NOT (AND (type? FONTDESCRIPTOR FONTDESC) - (EQ 'IRIS (fetch FONTDEVICE of FONTDESC] - then (SETQ FONTDESC (\COERCEFONTDESC FONTDESC 'IRIS] - (* user supplied a font so install it) - (replace (IRISDATA CURRENTFONTDESC) of IRISDATA with FONTDESC) - (\CHANGECHARSET.IRIS IRISSTREAM 0) (* this validates the caches for - fontbase, current charset, etc.) - FONTDESC) - else (fetch CURRENTFONTDESC of (fetch IRISDATA of IRISSTREAM]) - -(\CREATECHARSET.IRIS - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHARSET FONTDESC NOSLUG?) - (* ; "Edited 16-Jan-87 16:43 by gbn") - -(* ;;; "This function reads in the spline definition for a CHARSET but does not install it on the iris. The installation is done on a demand basis on the IRIS, charset by charset.") - - (PROG ((FONTARRAY (\LOOKUPSPLINEFONT FAMILY CHARSET)) - (MAXHEIGHT 1) - WIDTHS CSINFO FONTARRAY SCALE FILES) - (if (NOT FONTARRAY) - then (* ; - "we haven't even read this into core.") - (SETQ FILES (DIRECTORY (PACK* IRISFONTDIRECTORIES FAMILY '*.*SF) - 'COLLECT)) - - (* ;; "THIS METHOD OF FINDING THE FILES WILL NEED TO BE UPGRADED IF WE GET SPLINE DEFINITIONS FOR NS CHARACTERS") - - (if (NOT FILES) - then - - (* ;; "if you can't find the file then just return NIL to createcharset who will either report the error or build a slug charset") - - (RETURN (if NOSLUG? - then (* ; - "if you can't find the file then just return NIL to createcharset who will report the error") - NIL - else (* ; - "this will guarantee that all the chars in the charset have 0 width") - (\BUILDSLUGCSINFO 0 0 0))) - else (if \IRIS.VERBOSE - then (PROMPTPRINT "Reading the following spline font files: " FILES)) - (if \IRIS.DEBUG - then (READ.SPLINE.FONT (CAR FILES) - FAMILY CHARSET) - else (READ.SPLINE.FONT FILES FAMILY CHARSET))) - (* ; "now see if it really worked") - (if (NOT (SETQ FONTARRAY (\LOOKUPSPLINEFONT FAMILY CHARSET))) - then (* ; - "we just lost horribly, so die with an inconsistency") - (SHOULDNT "Inside \FONTCREATE.IRIS, some SFFONTS were found, but reading them did not produce an entry in \SPLINEFONTSINCORE" - ))) (* ; - "we have the FAMILY/CHARSET entries, now see if there is a font descriptor ready made for this size") - - (* ;; "since a spline font can be any size, we must guarantee that relative sizes are guaranteed, i.e. a 10 point font is twice as big as a 5 point font") - - (SETQ CSINFO (create CHARSETINFO)) - (SETQ WIDTHS (fetch (CHARSETINFO WIDTHS) of CSINFO)) - (bind CHARDESC for I from 1 to \MAXTHINCHAR - do (SETQ CHARDESC (ELT FONTARRAY I)) - - (* ;; "If there is no description for a character, set its width to zero, so that dspprintchar can recognize not to call this character.") - - (if CHARDESC - then (\FSETWIDTH WIDTHS I (fetch XWIDTH of (fetch SF.WIDTH of CHARDESC))) - [SETQ MAXHEIGHT (IMAX MAXHEIGHT (fetch YFIDUCIAL - of (fetch FIDUCIAL of CHARDESC] - else (\FSETWIDTH WIDTHS I 0))) - (replace (CHARSETINFO CHARSETASCENT) of CSINFO with (FIX (TIMES 0.7 MAXHEIGHT))) - (replace (CHARSETINFO CHARSETDESCENT) of CSINFO with (FIX (TIMES 0.3 MAXHEIGHT))) - - (* ;; "It doesn't look like this scale junk is used anymore. gbn Jan 17/87") - - [if (SETQ SCALE (fetch OTHERDEVICEFONTPROPS of FONTDESC)) - then - - (* ;; "this fontdescriptor has already build character sets, and has determined its scale. So scale the widths in this character set. For the first character set, this is done in \fontcreate.iris") - - (for I from 0 to \MAXTHINCHAR do (\FSETWIDTH WIDTHS I - (FIX (TIMES (\FGETWIDTH WIDTHS I) - SCALE] - (RETURN CSINFO]) - -(\IRISSETFONTBASE - [LAMBDA (FAMILY CHARSET IRISDATA FONTBASE) (* gbn "18-Oct-85 16:15") - (PUTASSOC (CONS FAMILY CHARSET) - FONTBASE - (fetch FONTSINIRIS of IRISDATA]) - -(\IRISFONTBASE - [LAMBDA (FAMILY CHARSET IRISDATA) (* gbn "18-Oct-85 16:15") - (CDR (SASSOC (CONS FAMILY CHARSET) - (fetch FONTSINIRIS of IRISDATA]) - -(\CHANGECHARSET.IRIS - [LAMBDA (IRISSTREAM CHARSET) (* gbn "18-Oct-85 16:16") - - (* * called when a character is about to be printed which is in a different - charset than the current one.) - - (LET ((IRISDATA (fetch IRISDATA of IRISSTREAM)) - CSINFO BASE FONTDESC) - (SETQ FONTDESC (fetch CURRENTFONTDESC of IRISDATA)) - [replace (IRISDATA IRISWIDTHSCACHE) of IRISDATA with (fetch (CHARSETINFO WIDTHS) - of (SETQ CSINFO (\GETCHARSETINFO - CHARSET FONTDESC] - (SETQ BASE (\IRISFONTBASE (fetch FONTFAMILY of FONTDESC) - CHARSET IRISDATA)) - (if (NOT BASE) - then - - (* this stream has never seen this charset before so install it on the IRIS.) - - (INSTALL.OBJFONT (fetch FONTFAMILY of FONTDESC) - CHARSET NIL NIL NIL IRISSTREAM CSINFO) - (SETQ BASE (\IRISFONTBASE (fetch FONTFAMILY of FONTDESC) - CHARSET IRISDATA))) - (replace (IRISDATA CURRENTFONTBASE) of IRISDATA with BASE) - (replace (IRISDATA IRISCHARSET) of IRISDATA with CHARSET]) - -(\CHARWIDTH.IRIS - [LAMBDA (CHARCODE FONT) (* gbn "18-Oct-85 19:11") - (FIX (TIMES (fetch OTHERDEVICEFONTPROPS of FONT) - (\FGETCHARWIDTH FONT CHARCODE]) - -(\OUTCHARFN.IRIS - [LAMBDA (IRISSTREAM CHARCODE) (* ; "Edited 2-Feb-87 23:46 by gbn") - (LET* ((IRISDATA (fetch IRISDATA of IRISSTREAM)) - (SPPOUT (fetch SPPOUTSTREAM of IRISDATA)) - OBJNO - (FONTDESC (fetch CURRENTFONTDESC of IRISDATA)) - PUSHEDATTRIBUTES SCALE) - (if (NOT FONTDESC) - then (* ; - "this is so that the stream can be opened without the expensive font create operation") - (SETQ FONTDESC (DSPFONT (FONTCREATE 'GACHA 12 NIL NIL 'IRIS) - IRISSTREAM))) - (if (NEQ (fetch (IRISDATA IRISCHARSET) of IRISDATA) - (\CHARSET CHARCODE)) - then (\CHANGECHARSET.IRIS IRISSTREAM (\CHARSET CHARCODE))) - (SETQ OBJNO (IPLUS (fetch CURRENTFONTBASE of IRISDATA) - CHARCODE)) - (COND - ((EQ CHARCODE (CHARCODE EOL)) - (\TERPRI.IRIS IRISSTREAM)) - ((NILL) (* ; - "ZEROP (IRIS.ISOBJ CURRENTFONTBASE SPPOUT)") - - (* ;; "this character set has not been installed on the IRIS. character zero is defined for every charset that is installed.") - - (SHOULDNT "\CHANGECHARSET.IRIS has not guaranteed that char 0 is defined. Obj = " - OBJNO)) - ((ZEROP (\FGETWIDTH (fetch (IRISDATA IRISWIDTHSCACHE) of IRISDATA) - (\CHAR8CODE CHARCODE))) (* ; - "the character is not defined. don't call it") - NIL) - (T (IRIS.PUSHMATRIX SPPOUT) - (IRIS.TRANSLATE (DSPXPOSITION NIL IRISSTREAM) - (DSPYPOSITION NIL IRISSTREAM) - 0 SPPOUT) - (IRIS.SCALE (SETQ SCALE (fetch OTHERDEVICEFONTPROPS of FONTDESC)) - SCALE SCALE SPPOUT) - (if (EQ (CAR (fetch FONTFACE of FONTDESC)) - 'BOLD) - then (SETQ PUSHEDATTRIBUTES T) - (IRIS.PUSHATTRIBUTES SPPOUT) - (IRIS.LINEWIDTH \IRIS.BOLD.LINEWIDTH SPPOUT)) - (if (EQ (CADR (fetch FONTFACE of FONTDESC)) - 'ITALIC) - then (* ; "fake italics with a rotation") - (IRIS.ROTATE \IRIS.ITALICS.ROTATION IRIS.ZAXIS SPPOUT)) - (if PUSHEDATTRIBUTES - then (IRIS.POPATTRIBUTES SPPOUT)) - (IRIS.CALLOBJ OBJNO SPPOUT) - (IRIS.POPMATRIX SPPOUT) - (RELMOVETO (FIX (\FGETWIDTH (fetch IRISWIDTHSCACHE of IRISDATA) - CHARCODE)) - 0 IRISSTREAM) - (FLUSHOUTPUT (fetch SPPOUTSTREAM of (fetch IRISDATA of IRISSTREAM]) - -(\CLIPPINGREGION.IRIS - [LAMBDA (STREAM REGION) (* gbn "30-Jun-85 21:21") - (if REGION - then (replace IRISCLIPPINGREGION of (fetch IRISDATA of STREAM) with REGION) - else (fetch IRISCLIPPINGREGION of (fetch IRISDATA of STREAM]) - -(\CLOSEFN.IRIS - [LAMBDA (STR) (* gbn "12-Nov-85 14:25") - - (* * (I DONT THINK THAT SGI IMPLEMENTS THE SPP CLOSE PROTOCOL, BUT WE SHOULD - TRY TO CONVINCE THEM)) - - (FORCEOUTPUT IRISCONN]) - -(\COLOR.IRIS - [LAMBDA (STREAM COLOR) (* gbn " 8-Nov-85 19:25") - (if COLOR - then (IRIS.COLOR (\IRIS.ASSURE.COLOR COLOR STREAM) - (fetch SPPOUTSTREAM of (fetch IRISDATA of STREAM))) - else (IRIS.GETCOLOR (fetch SPPOUTSTREAM of (fetch IRISDATA of STREAM]) - -(\IRIS.ASSURE.COLOR - [LAMBDA (COLOR# IRISSTREAM) (* ; "Edited 31-Jan-87 20:32 by gbn") - (PROG (LEVELS) - (AND (COND - ((NULL COLOR#) - NIL) - ((FIXP COLOR#) - - (* ;; "since Sketch and others call fillpolygon with textures, just return a consistent color from a texture") - - (RETURN (IMOD COLOR# 7))) - [(LITATOM COLOR#) - (RETURN (COND - ((SETQ LEVELS (\LOOKUPCOLORNAME COLOR#)) - (* ; "recursively look up color number") - (\IRIS.ASSURE.COLOR (CDR LEVELS) - IRISSTREAM)) - (T (ERROR "Unknown color name" COLOR#] - ((HLSP COLOR#) (* ; "HLS form convert to RGB") - (SETQ LEVELS (HLSTORGB COLOR#))) - ((RGBP COLOR#) (* ; "check for RGB or HLS") - (SETQ LEVELS COLOR#)) - ((AND (LISTP COLOR#) - (RGBP (CADR COLOR#))) (* ; - "temporarily, handle the case of being given a texture and a color, by using the color") - (RETURN (\IRIS.ASSURE.COLOR (CADR COLOR#) - IRISSTREAM))) - ((TYPENAMEP COLOR# 'BITMAP) (* ; "just a hack to not blow up") - (RETURN (IMOD (for I from 1 to (BITMAPWIDTH COLOR#) - sum (BITMAPBIT COLOR# I 1)) - 8))) - (T (\ILLEGAL.ARG COLOR#))) - (RETURN (COND - ((\LOOKUPRGB LEVELS (fetch IRISDATA of IRISSTREAM))) - (T (ERROR COLOR# "not available in color map"]) - -(\DRAWCIRCLE.IRIS - [LAMBDA (IRISSTREAM X Y RADIUS BRUSH DASHING) (* ; "Edited 16-Jan-87 15:18 by gbn") - (LET [(SPPOUT (fetch (IRISDATA SPPOUTSTREAM) of (fetch IRISDATA of IRISSTREAM] - (WITH.IRIS.ATTR (IRIS.CIRC X Y RADIUS SPPOUT) - SPPOUT IRISSTREAM :COLOR (CADDR BRUSH) - :WIDTH - (if (NOT (EQP (CADR BRUSH) - 1)) - then (CADR BRUSH) - else NIL) - :DASHING DASHING]) - -(\DRAWCURVE.IRIS - [LAMBDA (IRISSTREAM KNOTS CLOSED BRUSH DASHING) (* ; "Edited 16-Jan-87 16:00 by gbn") - -(* ;;; "takes a list of knots. It must build a set of bezier control points for each knot pair.") - - (LET ((SPPOUT (fetch SPPOUTSTREAM of (fetch IRISDATA of IRISSTREAM))) - GEOMETRY SPLINE) - (WITH.IRIS.ATTR [PROGN [SETQ SPLINE (PARAMETRICSPLINE KNOTS CLOSED - (fetch SCRATCHSPLINE of (fetch IRISDATA - of IRISSTREAM] - (* ; - "convert the list of knots to a parametric spline description.") - (\SCALE.SPLINE.BY.DERIVS SPLINE) - (* ; - "For each knot in the spline, use the knots and the derivatives to compute bezier control points") - (for KNOT# from 1 to (SUB1 (fetch %#KNOTS of SPLINE)) - do (SETQ GEOMETRY (\PSPLINE.TO.BEZIER.GEOMETRY SPLINE KNOT#)) - (SELECTQ \IRIS.VERSION - (GL1 (IRIS.CURVE 10 \BEZIERBASIS.IRIS GEOMETRY SPPOUT)) - (GL2 (IRIS.CRV GEOMETRY SPPOUT)) - (ERROR "UNKNOWN IRIS VERSION" \IRIS.VERSION] - SPPOUT IRISSTREAM :COLOR (CADDR BRUSH) - :WIDTH - (if (NOT (EQP (CADR BRUSH) - 1)) - then (CADR BRUSH) - else NIL) - :DASHING DASHING) - (fetch %#KNOTS of SPLINE]) - -(\DRAWLINE.IRIS - [LAMBDA (IRISSTREAM X1 Y1 X2 Y2 WIDTH OPERATION COLOR DASHING) - (* ; "Edited 16-Jan-87 15:22 by gbn") - -(* ;;; "(check about color and operation) (sets irisx and irisy to x2 and y2 respectively)") - - (PROG ((IRISDATA (fetch IRISDATA of IRISSTREAM)) - PUSHEDATTRIBUTES SPPOUT) - (SETQ SPPOUT (fetch (IRISDATA SPPOUTSTREAM) of IRISDATA)) - (WITH.IRIS.ATTR (PROGN (IRIS.MOVE X1 Y1 (fetch IRISZ of IRISDATA) - SPPOUT) - (IRIS.DRAW (replace IRISX of IRISDATA with X2) - (replace IRISY of IRISDATA with Y2) - (fetch IRISZ of IRISDATA) - SPPOUT)) - IRISSTREAM SPPOUT :COLOR COLOR :WIDTH WIDTH :DASHING DASHING]) - -(\CONVERTLINESTYLE.IRIS - [LAMBDA (DASHING) (* gbn "12-Nov-85 13:54") - - (* * takes an Interlisp style dashing description - (a list of on then off pixels) and turns it into a 16 bit dashing description, - like the IRIS likes.) - - (bind (RESULT _ 0) for PIX in DASHING as (FLAG _ 1) by (IDIFFERENCE 1 FLAG) - do [SETQ RESULT (LOGOR (LLSH RESULT PIX) - (ITIMES FLAG (SUB1 (EXPT 2 PIX] - finally (RETURN (LOGAND (SUB1 (EXPT 2 16)) - RESULT]) - -(\IRISSTREAMINIT - [LAMBDA NIL (* ; "Edited 31-Jan-87 19:57 by gbn") - -(* ;;; "installs the definition of the Iris ImageOps") - - (DECLARE (GLOBALVARS \IRISIMAGEOPS \FACT.IRIS)) - (SETQ \IRISIMAGEOPS (create IMAGEOPS - IMAGETYPE _ 'IRIS - IMCLOSEFN _ (FUNCTION \CLOSEFN.IRIS) - IMMOVETO _ (FUNCTION \MOVETO.IRIS) - IMXPOSITION _ (FUNCTION \XPOSITION.IRIS) - IMYPOSITION _ (FUNCTION \YPOSITION.IRIS) - IMFONT _ (FUNCTION \FONT.IRIS) - IMFONTCREATE _ (FUNCTION IRIS) - IMDRAWLINE _ (FUNCTION \DRAWLINE.IRIS) - IMLEFTMARGIN _ (FUNCTION \LEFTMARGIN.IRIS) - IMRIGHTMARGIN _ (FUNCTION NILL) - IMLINEFEED _ (FUNCTION HELP) - IMDRAWCURVE _ (FUNCTION \DRAWCURVE.IRIS) - IMDRAWCIRCLE _ (FUNCTION \DRAWCIRCLE.IRIS) - IMDRAWELLIPSE _ (FUNCTION \DRAWELLIPSE.IRIS) - IMFILLCIRCLE _ (FUNCTION \FILLCIRCLE.IRIS) - IMSTRINGWIDTH _ (FUNCTION \STRINGWIDTH.IRIS) - IMCHARWIDTH _ (FUNCTION \CHARWIDTH.IRIS) - IMBLTSHADE _ (FUNCTION \BLTSHADE.IRIS) - IMBITBLT _ (FUNCTION \BITBLT.IRIS) - IMNEWPAGE _ (FUNCTION NILL) - IMSCALE _ (FUNCTION \SCALE.IRIS) - IMTERPRI _ (FUNCTION \TERPRI.IRIS) - IMTOPMARGIN _ (FUNCTION NILL) - IMBOTTOMMARGIN _ (FUNCTION NILL) - IMBACKCOLOR _ (FUNCTION \BACKCOLOR.IRIS) - IMCOLOR _ (FUNCTION \COLOR.IRIS) - IMCLIPPINGREGION _ (FUNCTION \CLIPPINGREGION.IRIS) - IMRESET _ (FUNCTION \RESET.IRIS) - IMDRAWPOLYGON _ (FUNCTION \DRAWPOLYGON.IRIS) - IMFILLPOLYGON _ (FUNCTION \FILLPOLYGON.IRIS))) - (SETQ \FACT.IRIS (ARRAY 4 0 0.0 0)) - (SETA \FACT.IRIS 0 1.0) - (SETA \FACT.IRIS 1 1.0) - (SETA \FACT.IRIS 2 2.0) - (SETA \FACT.IRIS 3 6.0) - \IRISIMAGEOPS]) - -(\MOVETO.IRIS - [LAMBDA (IRISSTREAM XPOS YPOS) (* gbn "12-Nov-85 14:36") - (LET ((IRISDATA (fetch IRISDATA of IRISSTREAM))) - (IRIS.MOVE (replace IRISX of IRISDATA with XPOS) - (replace IRISY of IRISDATA with YPOS) - (fetch IRISZ of IRISDATA) - (fetch SPPOUTSTREAM of IRISDATA]) - -(\XPOSITION.IRIS - [LAMBDA (IRISSTREAM XPOS) (* gbn "24-Jun-85 01:17") - - (* * adjust only the xpos) - - (PROG ((IRISDATA (fetch IRISDATA of IRISSTREAM))) - (RETURN (if XPOS - then (IRIS.MOVE (replace IRISX of IRISDATA with XPOS) - (fetch IRISY of IRISDATA) - (fetch IRISZ of IRISDATA) - (fetch SPPOUTSTREAM of IRISDATA)) - XPOS - else (OR (fetch IRISX of IRISDATA) - (replace IRISX of IRISDATA with (CAR (IRIS.GETGPOS NIL NIL NIL NIL - \IRISSTREAM]) - -(\YPOSITION.IRIS - [LAMBDA (IRISSTREAM YPOS) (* gbn "17-Jun-85 15:05") - - (* * adjust only the ypos) - - (PROG ((IRISDATA (fetch IRISDATA of IRISSTREAM))) - (RETURN (if YPOS - then (IRIS.MOVE (fetch IRISX of IRISDATA) - (replace IRISY of IRISDATA with YPOS) - (fetch IRISZ of IRISDATA) - (fetch SPPOUTSTREAM of IRISDATA)) - YPOS - else (fetch IRISY of IRISDATA]) - -(\FILLCIRCLE.IRIS - [LAMBDA (IRISSTREAM CENTERX CENTERY RADIUS TEXTURE) (* ; "Edited 16-Jan-87 15:24 by gbn") - (* IRISSTREAM is guaranteed to be an - IRIS stream) - (COND - ((OR (NOT (NUMBERP RADIUS)) - (ILESSP (SETQ RADIUS (FIXR RADIUS)) - 0)) - (\ILLEGAL.ARG RADIUS)) - (T (LET* ((IRISDATA (fetch IRISDATA of IRISSTREAM)) - (SPPOUT (fetch (IRISDATA SPPOUTSTREAM) of IRISDATA))) - (WITH.IRIS.ATTR (IRIS.CIRCF CENTERX CENTERY RADIUS SPPOUT) - IRISSTREAM SPPOUT :COLOR TEXTURE]) - -(\DRAWELLIPSE.IRIS - [LAMBDA (IRISSTREAM CENTERX CENTERY SEMIMINORRADIUS SEMIMAJORRADIUS ORIENTATION BRUSH DASHING) - (* gbn "11-Nov-85 19:07") - (PROG [(SINOR (COND - (ORIENTATION (SIN ORIENTATION)) - (T 0.0))) - (COSOR (COND - (ORIENTATION (COS ORIENTATION)) - (T 1.0] - (\DRAWCURVE.IRIS IRISSTREAM [LIST (CREATEPOSITION (PLUS CENTERX (FTIMES COSOR - SEMIMAJORRADIUS)) - (PLUS CENTERY (FTIMES SINOR SEMIMAJORRADIUS))) - (CREATEPOSITION (DIFFERENCE CENTERX (FTIMES SINOR - SEMIMINORRADIUS - )) - (PLUS CENTERY (FTIMES COSOR SEMIMINORRADIUS))) - (CREATEPOSITION (DIFFERENCE CENTERX (FTIMES COSOR - SEMIMAJORRADIUS - )) - (DIFFERENCE CENTERY (FTIMES SINOR SEMIMAJORRADIUS) - )) - (CREATEPOSITION (PLUS CENTERX (FTIMES SINOR - SEMIMINORRADIUS)) - (DIFFERENCE CENTERY (FTIMES COSOR SEMIMINORRADIUS] - T BRUSH DASHING) - (MOVETO CENTERX CENTERY IRISSTREAM]) - -(\FILLPOLYGON.IRIS - [LAMBDA (IRISSTREAM POINTS TEXTURE CONVEX?) (* gbn "11-Nov-85 19:30") - (LET ((IRISDATA (fetch IRISDATA of IRISSTREAM)) - COLOR PUSHEDATTRIBUTES SPPOUT) - (SETQ COLOR (\IRIS.ASSURE.COLOR TEXTURE IRISSTREAM)) - (SETQ SPPOUT (fetch (IRISDATA SPPOUTSTREAM) of IRISDATA)) - (if COLOR - then - - (* save the current attributes since this fn is to have no side effects) - - (SETQ PUSHEDATTRIBUTES T) - (IRIS.PUSHATTRIBUTES SPPOUT) - (IRIS.COLOR COLOR SPPOUT)) - (if (NOT CONVEX?) - then - - (* break the polygon up into convex hunks, then fill each of those.) - - (for POLY in (TRAPLOOP POINTS) do (IRIS.POLF2 (LENGTH POLY) - (for P in POLY - collect (LIST (CAR P) - (CDR P))) - SPPOUT)) - else (IRIS.POLF2 (LENGTH POINTS) - (for P in POINTS collect (LIST (CAR P) - (CDR P))) - SPPOUT)) - (if PUSHEDATTRIBUTES - then (IRIS.POPATTRIBUTES SPPOUT]) - -(\IRIS.BITBLT - [LAMBDA (SOURCE SOURCELEFT SOURCEBOTTOM DESTINATION DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT - SOURCETYPE OPERATION TEXTURE CLIPPINGREGION)(* gbn " 7-Aug-85 23:36") - (PROG ((COLOR (DSPCOLOR NIL DESTINATION)) - (SPPOUT (fetch SPPOUTSTREAM of (fetch IRISDATA of DESTINATION))) - NLONGS) - (for Y from DESTINATIONBOTTOM to (IPLUS DESTINATIONBOTTOM HEIGHT) - do (IRIS.CMOV2I DESTINATIONLEFT (PLUS DESTINATIONBOTTOM Y) - SPPOUT) (* IRIS.WRITEPIXELS WIDTH - (for X from SOURCELEFT to - (IPLUS SOURCELEFT (SUB1 WIDTH)) - collect (ITIMES (BITMAPBIT SOURCE X Y) - COLOR)) DESTINATION) - - (* the current character position determines where a write pixels op happens) - - (PROGN - - (* * now do an inline IRIS.WRITEPIXELS) - - (IRIS.GCMD 182 SPPOUT) - (IRIS.SENDS WIDTH SPPOUT) - (SETQ NLONGS (FOLDHI WIDTH 2)) - (IRIS.SENDL (LLSH NLONGS 1) - SPPOUT) (* Send the number of bytes to be sent) - (bind ALONG for X from SOURCELEFT to (IPLUS SOURCELEFT (SUB1 WIDTH)) - by 2 do (SETQ ALONG (LOGOR (LLSH (ITIMES (BITMAPBIT SOURCE X Y) - COLOR) - 16) - (ITIMES (BITMAPBIT SOURCE (ADD1 X) - Y) - COLOR))) - (COND - ((IRIS.DOSYNC (IQUOTIENT X 2)) - (IRIS.PUTGCHAR IRIS\AESC SPPOUT))) - (IRIS.SENDL ALONG SPPOUT]) - -(\DRAWPOLYGON.IRIS - [LAMBDA (IRISSTREAM POINTS TEXTURE) (* ; "Edited 16-Jan-87 15:33 by gbn") - (PROG ((IRISDATA (fetch IRISDATA of IRISSTREAM)) - COLOR SPPOUT) - (SETQ SPPOUT (fetch (IRISDATA SPPOUTSTREAM) of IRISDATA)) - (WITH.IRIS.ATTR (IRIS.POLY2 (LENGTH POINTS) - POINTS SPPOUT) - IRISSTREAM SPPOUT :COLOR TEXTURE]) - -(ALIGN - [LAMBDA (STREAM) (* gbn "17-Jun-85 15:06") - - (* * this is a dummy to insure that the IRIS has caught up on the output side. - When it returns a value, it has caught up) - - (IRIS.GETCOLOR (OR STREAM (fetch SPPINSTREAM of (fetch IRISDATA of \IRISSTREAM]) -) - - - -(* ;;; "test functions") - -(DECLARE%: EVAL@COMPILE - -(RECORD BEZIER ((B0X B0Y B0Z) - (B1X B1Y B1Z) - (B2X B2Y B2Z) - (B3X B3Y B3Z)) - B0Z _ 0 B1Z _ 0 B2Z _ 0 B3Z _ 0) - -(DATATYPE IRISDATA - (IRISX IRISY IRISZ SPPOUTSTREAM SPPINSTREAM SCRATCHSPLINE FONTSINIRIS CURRENTFONTDESC - HIFONT# CURRENTFONTBASE BACKCOLOR IRISCLIPPINGREGION OBSOLETE-FIELD - IRISCOLORMAPCACHE IRISCHARSET IRISWIDTHSCACHE IRISPAGE) - FONTSINIRIS _ (LIST NIL) - IRISX _ 0 IRISY _ 0 IRISZ _ 0 SCRATCHSPLINE _ (create SPLINE) - HIFONT# _ -255) - -(RECORD IRISSTREAM STREAM (SUBRECORD STREAM) - [ACCESSFNS ((IRISDATA (FETCH (STREAM IMAGEDATA) OF DATUM) - (REPLACE (STREAM IMAGEDATA) OF DATUM WITH NEWVALUE] - (TYPE? (TYPE? IRISDATA OF (FETCH (STREAM IMAGEDATA) OF DATUM)))) - -(RECORD SPLINE (%#KNOTS SPLINEX SPLINEY SPLINEDX SPLINEDY SPLINEDDX SPLINEDDY SPLINEDDDX SPLINEDDDY)) -) -(/DECLAREDATATYPE 'IRISDATA - '(POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER - POINTER POINTER POINTER POINTER POINTER POINTER) - '((IRISDATA 0 POINTER) - (IRISDATA 2 POINTER) - (IRISDATA 4 POINTER) - (IRISDATA 6 POINTER) - (IRISDATA 8 POINTER) - (IRISDATA 10 POINTER) - (IRISDATA 12 POINTER) - (IRISDATA 14 POINTER) - (IRISDATA 16 POINTER) - (IRISDATA 18 POINTER) - (IRISDATA 20 POINTER) - (IRISDATA 22 POINTER) - (IRISDATA 24 POINTER) - (IRISDATA 26 POINTER) - (IRISDATA 28 POINTER) - (IRISDATA 30 POINTER) - (IRISDATA 32 POINTER)) - '34) -(DECLARE%: EVAL@COMPILE - -(RPAQQ \ALTLINESTYLE.IRIS 1) - -(RPAQQ \IRIS.ITALICS.ROTATION -100) - -(RPAQQ \PRIMARYLINESTLE.IRIS 0) - -(RPAQQ \IRIS.BOLD.LINEWIDTH 2) - -(CONSTANTS (\ALTLINESTYLE.IRIS 1) - (\IRIS.ITALICS.ROTATION -100) - (\PRIMARYLINESTLE.IRIS 0) - (\IRIS.BOLD.LINEWIDTH 2)) -) -(\IRISSTREAMINIT) -(SETFONTCLASSCOMPONENT DEFAULTFONT 'IRIS '(GACHA 12)) - -(ADDTOVAR DEFAULTPRINTINGHOST (IRIS Iris)) - -(ADDTOVAR PRINTERTYPES (IRIS (CANPRINT (IRIS)) - (BITMAPFILE (IRISBITMAP FILE BITMAP SCALEFACTOR REGION ROTATION TITLE)))) -(PUTPROP 'Iris 'PRINTERTYPE 'IRIS) - -(PUTPROPS Iris PRINTERTYPE IRIS) - -(DEFMACRO WITH.IRIS.ATTR (FORM SPPOUT IRISSTREAM &KEY (COLOR NIL COLORSET) - (WIDTH NIL WIDTHSET) - (DASHING NIL DASHINGSET)) - `(LET [PUSHED ., [if COLORSET - then `((ECOLOR %, COLOR] - ., - [if WIDTHSET - then `((EWIDTH %, WIDTH] - ., - (if DASHINGSET - then `((EDASHING %, DASHING] - ., - [if COLORSET - then `((SETQ ECOLOR (AND ECOLOR (\IRIS.ASSURE.COLOR ECOLOR IRISSTREAM] - ., - [if DASHINGSET - then `((SETQ EDASHING (AND EDASHING (\CONVERTLINESTYLE.IRIS EDASHING] - [IF [OR ., (if COLORSET - then '(ECOLOR)) - ., - (if WIDTHSET - then '(EWIDTH)) - ., - (if DASHINGSET - then '(EDASHING] - THEN (SETQ PUSHED T) - (IRIS.PUSHATTRIBUTES %, SPPOUT) - ., - [IF COLORSET - THEN `((IF ECOLOR - THEN (IRIS.COLOR ECOLOR %, SPPOUT] - ., - [IF WIDTHSET - THEN `((IF EWIDTH - THEN (SELECTQ \IRIS.VERSION - (GL2 (IRIS.LINEWIDTH EWIDTH %, SPPOUT)) - (GL1 (if (IGREATERP EWIDTH 2) - then NIL - else (IRIS.LINEWIDTH 2 %, SPPOUT))) - (ERROR "UNKNOWN VERSION" \IRIS.VERSION] - ., - (IF DASHINGSET - THEN `((IF EDASHING - THEN (IRIS.DEFLINESTYLE \ALTLINESTYLE.IRIS EDASHING %, SPPOUT) - (IRIS.SETLINESTYLE \ALTLINESTYLE.IRIS SPPOUT) - (IRIS.RESETLS 0 SPPOUT] - %, FORM (IF PUSHED - THEN (IRIS.POPATTRIBUTES %, SPPOUT)))) - -(DECLARE%: DONTCOPY - (FILEMAP (NIL (6112 63745 (BOXSCREEN 6122 . 6588) (CLEARIRIS 6590 . 7831) (DRAWBITMAP 7833 . 10506) ( -IRIS.CONS.OBJNO 10508 . 10654) (IRISBITMAP 10656 . 11185) (INSTALL.OBJFONT 11187 . 15363) ( -OPENIRISSTREAM 15365 . 18920) (\CLOSEF.IRIS 18922 . 19306) (R 19308 . 19453) (SPPINPUTSTREAM 19455 . -19732) (TRYGRAPHER 19734 . 20565) (\BACKCOLOR.IRIS 20567 . 20911) (\BITBLT.IRIS 20913 . 21651) ( -\BLTSHADE.IRIS 21653 . 23041) (\FONTCREATE.IRIS 23043 . 25581) (\FONTSAVAILABLE.IRIS 25583 . 26989) ( -\LEFTMARGIN.IRIS 26991 . 27367) (\RESET.IRIS 27369 . 27717) (\LOOKUPRGB 27719 . 28896) ( -\PSPLINE.TO.BEZIER.GEOMETRY 28898 . 32164) (\SCALE.IRIS 32166 . 32344) (\SCALE.SPLINE.BY.DERIVS 32346 - . 33307) (\TERPRI.IRIS 33309 . 33797) (\FONT.IRIS 33799 . 34751) (\CREATECHARSET.IRIS 34753 . 39537) -(\IRISSETFONTBASE 39539 . 39763) (\IRISFONTBASE 39765 . 39974) (\CHANGECHARSET.IRIS 39976 . 41436) ( -\CHARWIDTH.IRIS 41438 . 41662) (\OUTCHARFN.IRIS 41664 . 44891) (\CLIPPINGREGION.IRIS 44893 . 45228) ( -\CLOSEFN.IRIS 45230 . 45512) (\COLOR.IRIS 45514 . 45895) (\IRIS.ASSURE.COLOR 45897 . 47915) ( -\DRAWCIRCLE.IRIS 47917 . 48467) (\DRAWCURVE.IRIS 48469 . 50364) (\DRAWLINE.IRIS 50366 . 51344) ( -\CONVERTLINESTYLE.IRIS 51346 . 51981) (\IRISSTREAMINIT 51983 . 54492) (\MOVETO.IRIS 54494 . 54911) ( -\XPOSITION.IRIS 54913 . 55773) (\YPOSITION.IRIS 55775 . 56436) (\FILLCIRCLE.IRIS 56438 . 57173) ( -\DRAWELLIPSE.IRIS 57175 . 59099) (\FILLPOLYGON.IRIS 59101 . 60607) (\IRIS.BITBLT 60609 . 62926) ( -\DRAWPOLYGON.IRIS 62928 . 63373) (ALIGN 63375 . 63743))))) -STOP diff --git a/obsolete/lispusers/IRISVIEW b/obsolete/lispusers/IRISVIEW deleted file mode 100644 index 1e076c69..00000000 --- a/obsolete/lispusers/IRISVIEW +++ /dev/null @@ -1,1274 +0,0 @@ -(DEFINE-FILE-INFO §PACKAGE "INTERLISP" §READTABLE "INTERLISP" §BASE 10) -(FILECREATED " 4-Feb-87 19:32:44" {ERIS}NEXT>IRISVIEW.;18 65298 - - changes to%: (VARS IRISVIEWCOMS) - (FNS IV.SET.CURRENT.SCENE IV.SCENE.SETUP IV.INIT IV.VIEW.CHANGED IRIS.DEGREES - IV.ENSURE.SCENE IV.REDEFINE.SCENE IV.DOUBLEBUFFER IV.AXES IV.NEWSTREAM - IV.BACKGROUND IV.DSPCOLOR IV.RIGHT IV.UP IV.TOWARD IV.PHOME.AUX IV.PHOME - IV.2D.HOME) - (VARIABLES *IV-COMMANDS-MENUDESC* *IV-FILLINS-MENUDESC* - *IV-POSITIONING-MENU-DESC* *IV-MENUDESC*) - - previous date%: "27-Jan-87 01:16:23" {ERIS}NEXT>IRISVIEW.;10) - - -(* " -Copyright (c) 1985, 1987 by Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT IRISVIEWCOMS) - -(RPAQQ IRISVIEWCOMS - [(FILES IRISCONSTANTS COLOROBJ) - (GLOBALVARS IV.CURRENT.SCENE IV.SCENES IV.SCENES.MENU IV.VIEW.MENU IV.PROMPTWINDOW AXES.SCENE - SKULL.SCENE \IV.DRAW.AXES iV.BACKGROUND IV.MODE IV.THETA IV.DXLATE) - (INITVARS (IV.SCENES NIL) - (IV.CURRENT.SCENE) - (IV.SCENES.MENU) - (IV.VIEW.MENU)) - (BITMAPS IV.LEFT IV.POS IV.RIGHT IV.RIGHT.HIGHLIGHT IV.DOWN IV.UP IV.UP.HIGHLIGHT - BACKGROUNDBITMAP IV.ROTX IV.ROTX.HIGHLIGHT IV.ROTY IV.ROTY.HIGHLIGHT IV.ROTZ - IV.ROTZ.HIGHLIGHT IV.ROTATE IV.DELTA.LABEL IV.THETA.LABEL IV.TOWARD - IV.TOWARD.HIGHLIGHT IV.AWAY) - (* ; "fns for co-ordinating scenes") - (FNS IV.PROOF.SCENE IV.ENSURE.SCENE IV.NEW.SCENE.FROM.USER IV.REDEFINE.SCENE IV.CHOOSE.SCENE - IV.BUILD.SCENES.MENU IV.FORGET.SCENE IV.DRAW.SCENE IV.SET.CURRENT.SCENE IV.SCENE.SETUP) - (FNS DRAW.AXES F IV.CLEARIRIS IV.DOWN IV.GETINPUT IV.READ IV.HOME IV.2D.HOME IV.PHOME - IV.PHOME.AUX IV.VIEW IV.LEFT IV.RIGHT IV.ROTX IV.DOUBLEBUFFER IV.ROTY IV.ROTZ - IV.SWAPBUFFERS IV.UP IV.THETA IV.AXES IV.BACKGROUND IV.TOWARD IV.AWAY IV.DSPCOLOR - IV.DELTA IV.VIEW.CHANGED IV.NEWSTREAM IV.PROMPTPRINT IV.PROOF.SKETCH IV.INIT \CLEAR.IRIS - IRIS.DEGREES) - (FNS IV.ITEMMAPFN IV.DISPLAY.FMITEM) - (RECORDS IRISSCENE IVPOS) - (VARS HANDWIDTH IRIS.XAXIS IRIS.ZAXIS IV.DXLATE IV.MODE IV.OBJPT IV.THETA IV.TRACE.FNS - IV.TWIST IV.VIEWPT LASTIV.OBJPT LASTIV.VIEWPT (\IV.DRAW.AXES) - (\IV.BACKGROUND)) - (P (IV.SCENE.SETUP) - (IV.BUILD.SCENES.MENU)) - (FNS SKULLO) - - (* ;; "The order of these variables is important.") - - (VARIABLES *IV-SCENES-MENUDESC* *IV-FILLINS-MENUDESC* *IV-COMMANDS-MENUDESC* - *IV-POSITIONING-MENU-DESC* *IV-MENUDESC*) - (PROP FILETYPE IRISVIEW) - (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA) - (NLAML) - (LAMA IV.PROMPTPRINT]) -(FILESLOAD IRISCONSTANTS COLOROBJ) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS IV.CURRENT.SCENE IV.SCENES IV.SCENES.MENU IV.VIEW.MENU IV.PROMPTWINDOW AXES.SCENE - SKULL.SCENE \IV.DRAW.AXES iV.BACKGROUND IV.MODE IV.THETA IV.DXLATE) -) - -(RPAQ? IV.SCENES NIL) - -(RPAQ? IV.CURRENT.SCENE ) - -(RPAQ? IV.SCENES.MENU ) - -(RPAQ? IV.VIEW.MENU ) - -(RPAQQ IV.LEFT #*(48 24)@@@L@@@@@@@@@@ACH@@@@@@@@@A@F@@@@@@@@@@HAH@@@@@@@@@F@F@@@@@@@@@ALAH@@@@@@@@@B@L@@@@@GOOOO@GH@@@@H@@@@@@F@@@@H@@@@@@ACO@@H@@@@@@@N@@@GOOO@@@@B@@@@@D@@@@@B@@@@@H@@@@@B@@@@@H@@@@@B@@@@@GOH@@@B@@@@@B@@@@@B@@@@@D@@@@@B@@@@@D@@@@@B@@@@@CON@@@B@@@@@A@@@@@B@@@@@B@@@@AN@@@@@B@@@@NAH@@@@AOOOO@@G@@ -) - -(RPAQQ IV.POS (275 . 200)) - -(RPAQQ IV.RIGHT #*(48 24)@@@@@@@@C@@@@@@@@@@ALH@@@@@@@@@F@H@@@@@@@@AHA@@@@@@@@@F@F@@@@@@@@AHCH@@@@@@@@C@D@@@@@@@@AN@OOOON@@@@F@@@@@@A@@OLH@@@@@@A@@@G@@@@@@@A@@@D@@@@OOON@@@D@@@@@B@@@@@D@@@@@A@@@@@D@@@@@A@@@@@D@@@AON@@@@@D@@@@@D@@@@@D@@@@@B@@@@@D@@@@@B@@@@@D@@@GOL@@@@@D@@@@@H@@@@@GH@@@@D@@@@AHG@@@@D@@@@N@@OOOOH@@ -) - -(RPAQQ IV.RIGHT.HIGHLIGHT #*(48 24)@@@@@@@@C@@@@@@@@@@AOH@@@@@@@@@GOH@@@@@@@@AOO@@@@@@@@@GON@@@@@@@@AOOH@@@@@@@@GOL@@@@@@@@AOOOOOON@@@@GOOOOOOO@@OLOOOOOOOO@@@GOOOOOOOO@@@GOOOOOOON@@@GOOOOON@@@@@GOOOOOO@@@@@GOOOOOO@@@@@GOOOOON@@@@@GOOOOOL@@@@@GOOOOON@@@@@GOOOOON@@@@@GOOOOOL@@@@@GOOOOOH@@@@@GOOOOOL@@@@AHGOOOOL@@@@N@@OOOOH@@ -) - -(RPAQQ IV.DOWN #*(24 48)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D@@A@@@@D@@A@@@@D@@A@@@@D@@B@@@@D@@B@@@@GOOL@@@@B@@D@@@@B@@D@@@@D@@D@@@@H@@B@@@@H@@B@@@A@@@B@@@A@@@A@@@A@@@A@@@C@@@A@@@F@@@A@@@D@@@A@@@H@@@A@@@H@@@A@@A@@@@A@@AA@@@A@@BC@@AA@@BE@@AA@@DE@AAA@@DEAAAA@@DIAAAA@@HIAAAA@@IAAAAA@@FAAAAI@@@AAAIF@@@AAIF@@@@AAF@@@@@AA@@@@@@AA@@@@@@AA@@@@@@AA@@@@@@AA@@@@@@AA@@@@@@AA@@@@@@@N@@@@@ -) - -(RPAQQ IV.UP #*(24 48)@@N@@@@@@AA@@@@@@AA@@@@@@AA@@@@@@AA@@@@@@AA@@@@@@AA@@@@@@AA@@@@@@AAF@@@@@AAIF@@@@AAAIF@@FAAAAI@@IAAAAA@@HIAAAA@@DIAAAA@@DEAAAA@@DE@AAA@@BE@@AA@@BC@@AA@@AA@@@A@@A@@@@A@@@H@@@A@@@H@@@A@@@D@@@A@@@F@@@A@@@C@@@A@@@A@@@A@@@A@@@A@@@A@@@B@@@@H@@B@@@@H@@B@@@@D@@D@@@@B@@D@@@@B@@D@@@@GOOL@@@@D@@B@@@@D@@B@@@@D@@A@@@@D@@A@@@@D@@A@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -) - -(RPAQQ IV.UP.HIGHLIGHT #*(24 48)@@N@@@@@@AO@@@@@@AO@@@@@@AO@@@@@@AO@@@@@@AO@@@@@@AO@@@@@@AO@@@@@@AOF@@@@@AOOF@@@@AOOOF@@FAOOOO@@OAOOOO@@OIOOOO@@GIOOOO@@GMOOOO@@GMOOOO@@CMOOOO@@COOOOO@@AOOOOO@@AOOOOO@@@OOOOO@@@OOOOO@@@GOOOO@@@GOOOO@@@COOOO@@@AOOOO@@@AOOOO@@@AOOON@@@@OOON@@@@OOON@@@@GOOL@@@@COOL@@@@COOL@@@@GOOL@@@@D@@B@@@@D@@B@@@@D@@A@@@@D@@A@@@@D@@A@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -) - -(RPAQQ BACKGROUNDBITMAP #*(12 15)@@@@CKN@EOB@IFH@JFH@BF@@BD@@@D@@@D@@@B@@@CF@@CN@@ON@AON@@@@@) - -(RPAQQ IV.ROTX #*(28 47)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@G@@@@@@AHL@@@@@B@B@@@@@D@A@@@@@D@A@@@@@H@@H@@@@H@@H@@@A@@@D@@@A@@@D@@@A@@@D@@@A@@@D@@@B@@@B@@@B@@@B@@@B@@@B@@@B@@@B@@@B@@@B@@@B@@@B@@@B@@@B@@@B@@BB@@@B@@CBF@@B@@AJL@@B@@@OH@@A@@@F@@@A@@@D@@@A@@@D@@@A@@@D@@@@H@@H@@@@H@@H@@@@D@A@@@@@D@A@@@@@B@B@@@@@AHL@@@@@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -) - -(RPAQQ IV.ROTX.HIGHLIGHT #*(28 47)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@G@@@@@@AOL@@@@@CON@@@@@GOO@@@@@GOO@@@@@OOOH@@@@OOOH@@@AOOOL@@@AOOOL@@@AOOOL@@@AOOOL@@@COOON@@@COOON@@@COOON@@@COOON@@@COOON@@@COOON@@@COOON@@@COOON@@@COOONF@@COOONL@@COOOOH@@AOOON@@@AOOOL@@@AOOOL@@@AOOOL@@@@OOOH@@@@OOOH@@@@GOO@@@@@GOO@@@@@CON@@@@@AOL@@@@@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -) - -(RPAQQ IV.ROTY #*(42 30)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OON@@@@@@@@O@@AN@@@@@@C@@@@AH@@@@@L@@@@@F@@@@A@@@@@@A@@@@B@@@@@@@H@@@B@@@@@@@H@@@D@@@@@@@D@@@D@@@@@@@D@@@D@@@@@@@D@@@B@@@@@@@H@@@B@@@@H@@H@@@A@@@AH@A@@@@@L@@C@@F@@@@@C@@F@AH@@@@@@O@LAN@@@@@@@@OON@@@@@@@@@@L@@@@@@@@@@@F@@@@@@@@@@@C@@@@@@@@@@@AH@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -) - -(RPAQQ IV.ROTY.HIGHLIGHT #*(42 30)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OON@@@@@@@@OOOON@@@@@@COOOOOH@@@@@OOOOOON@@@@AOOOOOOO@@@@COOOOOOOH@@@COOOOOOOH@@@GOOOOOOOL@@@GOOOOOOOL@@@GOOOOOOOL@@@COOOOOOOH@@@COOOOOOOH@@@AOOOOOOO@@@@@OOOOOON@@@@@COOOOOH@@@@@@OOOON@@@@@@@@OON@@@@@@@@@@L@@@@@@@@@@@F@@@@@@@@@@@C@@@@@@@@@@@AH@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -) - -(RPAQQ IV.ROTZ #*(45 38)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CO@@@@@@@@@AL@O@@@@@@@@F@@@N@@@@@@@H@@@AH@@@@@A@@@@@F@@@@@A@@@@@AOO@@@A@@@@@AL@@@@B@@@@@AB@@@@B@@@@@AA@@@@B@@@@@A@H@@@B@@@@@A@D@@@A@@@@@A@D@@@A@@@@@A@B@@@A@@@@@A@A@@@@H@@@@@@A@@@@D@@@@@@A@@@@D@@@@@@@H@@@B@@@@@@@H@@@A@@@@@@@H@@@@H@@@@@@H@@@@F@@@@@A@@@@@A@@@@@A@@@@@@L@@@@A@@@@@@C@@@@B@@@@@@@N@@@L@@@@@@@AN@G@@@@@@@@@AOH@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -) - -(RPAQQ IV.ROTZ.HIGHLIGHT #*(45 38)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CO@@@@@@@@@AOOO@@@@@@@@GOOON@@@@@@@OOOOOH@@@@@AOOOOON@@@@@AOOOOOOOO@@@AOOOOOOL@@@@COOOOOON@@@@COOOOOOO@@@@COOOOOOOH@@@COOOOOOOL@@@AOOOOOOOL@@@AOOOOOOON@@@AOOOOOOOO@@@@OOOOOOOO@@@@GOOOOOOO@@@@GOOOOOOOH@@@COOOOOOOH@@@AOOOOOOOH@@@@OOOOOOOH@@@@GOOOOOO@@@@@AOOOOOO@@@@@@OOOOOO@@@@@@COOOON@@@@@@@OOOOL@@@@@@@AOOO@@@@@@@@@AOH@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -) - -(RPAQQ IV.ROTATE #*(74 77)@@@@@@@@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@@@@@AL@@@@@@@@@@@@@@@@@@AL@@@@@@@@@@@@@@@@@@BJ@@@@@@@@@@@@@@@@@@BJ@@@@@@@@@@@@@@@@@@DI@@@@@@@@@@@@@@@@@@DI@@@@@@@@@@@@@@@@@@HI@@@@@@@@@@@@@@@@@@HHH@@@@@@@@@@@@@@@@@HHH@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@IB@@@@@@@@@@@@@@@@@@HJ@@@@@@@@@@@@@@@@@@HF@@@@@@@@@@@@@@@@@@HB@@@@@@@@@@@@@@@@@@IB@@@@@@@@@@@@@@@@@@HL@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@H@@@@@@HH@@@@@@@@@@@H@@@@@@E@@@@@@@@@@@@H@@@@@@B@N@@@@@@@@@@H@@@@@@E@AH@@@@@@@@@H@@@@@@HH@F@@@@@@@@@H@@@@@@@@@AL@@@@@@@@OOOOOOOOOOOO@@@@@@@A@@@@@@@@@@AL@@@@@@@A@@@@@@@@@@F@@@@@@@@B@@@@@@@@@AH@@@@@@@@D@@@@@@@@@N@@@@@@@@@D@@@@@@@@@@@@@@@AN@@H@@@@@@@@@@@@@@@@B@A@@@@@@@@@@@@@@@@@D@A@@@@@@@@@@@@@@@@@H@B@@@@@@@@@@@@@@@@AN@D@@@@@@@@@@@@@@@@@@@D@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@AA@@@@@@@@@@@@@@@@@@AA@@@@@@@@@@@@@@@@@@AB@@@@@@@@@@@@@@@@@@BD@@@@@@@@@@@@@@@@@@BDD@@@@@@@@@@@@@@@@@BHH@@@@@@@@@@@@@@@@@EA@@@@@@@@@@@@@@@@@@EF@@@@@@@@@@@@@@@@@@FH@@@@@@@@@@@@@@@@@@M@@@@@@@@@@@@@@@@@@@N@@@@@@@@@@@@@@@@@@@L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -) - -(RPAQQ IV.DELTA.LABEL #*(9 13)@@@@@H@@@H@@AD@@AD@@BB@@BB@@DA@@DA@@GO@@@@@@@@@@@@@@) - -(RPAQQ IV.THETA.LABEL #*(7 13)@@@@CH@@DD@@DD@@DD@@GL@@DD@@DD@@DD@@CH@@@@@@@@@@@@@@) - -(RPAQQ IV.TOWARD #*(35 38)@@@@@@H@@@@@@@@@@A@@@@@@@@@@@B@@@@@@@G@@@L@@@@@@@DN@CD@@@@@@@FAONF@@@@@@@B@@@B@@@@@@@A@@@C@@@@@@@@L@@A@@@@@@@@CO@@H@@@@@@@@F@@D@@@@@@@@D@@B@@@@@@@@H@@A@@@@@@@A@@@@IB@@@@@B@@@@EN@@@@@D@@@@C@@@@@@HB@@@F@@@@@A@D@@@H@@@@@B@H@@@H@@@@@DA@D@A@@@@@@HB@H@B@@@@@A@DA@HD@@@@@B@JBA@H@@@@@DAALBA@@@@@@HB@DDB@@@@@@HD@GHD@@@@@@GH@@HH@@@@@@@@@@I@@@@@@@@@@@F@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -) - -(RPAQQ IV.TOWARD.HIGHLIGHT #*(35 38)@@@@@@H@@@@@@@@@@A@@@@@@@@@@@B@@@@@@@G@@@L@@@@@@@GN@CL@@@@@@@GOOON@@@@@@@COOON@@@@@@@AOOOO@@@@@@@@OOOO@@@@@@@@COOOH@@@@@@@@GOOL@@@@@@@@GOON@@@@@@@@OOOO@@@@@@@AOOOOHB@@@@@COOOOMN@@@@@GOOOOO@@@@@@OOOOON@@@@@AOOOOOH@@@@@COOOOOH@@@@@GOOOOO@@@@@@OOOOON@@@@@AOOOOOL@@@@@COKOOOH@@@@@GOAOOO@@@@@@ON@GON@@@@@@OL@GOL@@@@@@GH@@OH@@@@@@@@@@O@@@@@@@@@@@F@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -) - -(RPAQQ IV.AWAY #*(36 34)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@@@@@@@@@@A@@@@@@@@@@@C@@@@@@@@@@@G@@@@@@@@@@@K@@@@@@@@@@AE@@@@@@@@@@BE@@@@@@@@@@@E@@@@@@@@@@@I@@@@@@@@@@@H@@@@@@@@@@@H@@@@@@@@@@A@@@@@@@@@@@A@@@@@@@@@@@A@@@@@@@@@@@B@@@@@@@@@@@B@@@@@@@@@@@B@@@@@@@@@@@D@@@@@@@@@@@D@@@@@@@@@@@D@@@@@@@@@@@H@@@@@@@@@@@H@@@@@@@@@@@H@@@@@@@@@@A@@@@@@@@@@@A@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -) - - - -(* ; "fns for co-ordinating scenes") - -(DEFINEQ - -(IV.PROOF.SCENE - [LAMBDA (ITEM) (* gbn "21-Nov-85 01:14") - (LET ((OBJNO (fetch (IRISSCENE OBJNO) of IV.CURRENT.SCENE))) - (IV.ENSURE.SCENE IV.CURRENT.SCENE) (* makes sure the object is defined) - (IRIS.CALLOBJ OBJNO \IRISSTREAM) - (IRIS.SWAPBUFFERS \IRISSTREAM) - (ALIGN \IRISSTREAM) - (SPP.FORCEOUTPUT IRISCONN]) - -(IV.ENSURE.SCENE - [LAMBDA (SCENE) (* ; "Edited 29-Jan-87 01:22 by gbn") - (* ; - "makes sure that a scene's objno is defined.") - (LET ((OBJNO (fetch (IRISSCENE OBJNO) of SCENE))) - (if (ZEROP (IRIS.ISOBJ OBJNO \IRISSTREAM)) - then (IV.PROMPTPRINT "Creating object for " (fetch (IRISSCENE NAME) of SCENE)) - (RESETLST (RESETSAVE NIL (LIST 'IRIS.CLOSEOBJ \IRISSTREAM)) - (IRIS.MAKEOBJ OBJNO \IRISSTREAM) - (if (SETQ DRAWFN (fetch (IRISSCENE DRAWFN) of SCENE)) - then (EVAL DRAWFN) - else (IV.GETINPUT (CONCAT "Please remake " (fetch (IRISSCENE NAME) - of SCENE) - " then hit RETURN"))) - (IRIS.CLOSEOBJ \IRISSTREAM)) - (PRINTOUT IV.PROMPTWINDOW "...done" T]) - -(IV.NEW.SCENE.FROM.USER - [LAMBDA NIL (* gbn "20-Nov-85 23:21") - - (* * Reads a new scene from the user. Returns NIL if the scene is not - completed. Sets the scene menu to nil to cause it to be rebuilt when a new - scene is successfully read) - - (PROG (NAME DRAWFN OBJNO SCENE) - (SETQ NAME (IV.GETINPUT "Scene Name?")) - (if (NOT NAME) - then (RETURN)) - (SETQ SCENE (create IRISSCENE - NAME _ NAME - OBJNO _ (IRIS.CONS.OBJNO))) - (replace (IRISSCENE DRAWFN) of SCENE with (SETQ DRAWFN (IV.READ - "Form to eval to create scene? " - ))) - (if (NOT DRAWFN) - then (IRIS.MAKEOBJ (fetch (IRISSCENE OBJNO) of SCENE) - \IRISSTREAM) - (IV.GETINPUT "Make object, then type RETURN") - (IRIS.CLOSEOBJ \IRISSTREAM)) - (push IV.SCENES SCENE) - (SETQ IV.SCENES.MENU NIL) - (RETURN SCENE]) - -(IV.REDEFINE.SCENE - [LAMBDA (ITEM BUTTONS WINDOW) (* ; "Edited 29-Jan-87 01:20 by gbn") - (LET ((SCENE (IV.CHOOSE.SCENE))) - (if (MOUSECONFIRM (CONCAT "Redefine " (fetch NAME of SCENE)) - NIL IV.PROMPTWINDOW) - then (IRIS.DELOBJ (fetch OBJNO of SCENE) - \IRISSTREAM) - (REPLACE OBJNO OF SCENE WITH (IRIS.CONS.OBJNO)) - (IV.ENSURE.SCENE SCENE]) - -(IV.CHOOSE.SCENE - [LAMBDA NIL (* edited%: "12-Dec-85 20:58") - (MENU (OR IV.SCENES.MENU (IV.BUILD.SCENES.MENU]) - -(IV.BUILD.SCENES.MENU - [LAMBDA NIL (* ; "Edited 23-Jan-87 20:23 by gbn") - -(* ;;; "builds the menu used to prompt the user for scenes that can be loaded on the iris.") - - (SETQ IV.SCENES.MENU (create MENU - ITEMS _ (CONS '(New% Scene? (IV.NEW.SCENE.FROM.USER) - "allows specification of a new scene") - (for ENTRY in IV.SCENES - collect (LIST (fetch (IRISSCENE NAME) of ENTRY) - (KWOTE ENTRY]) - -(IV.FORGET.SCENE - [LAMBDA (ITEM WINDOW BUTTONS) (* edited%: "12-Dec-85 20:58") - (PROG ((NEWSCENE (IV.CHOOSE.SCENE)) - OBJNO) - (if NEWSCENE - then (DREMOVE NEWSCENE IV.SCENES) - (if (SETQ OBJNO (fetch (IRISSCENE OBJNO) of NEWSCENE)) - then (IRIS.DELOBJ OBJNO \IRISSTREAM)) - (SETQ IV.SCENES.MENU NIL]) - -(IV.DRAW.SCENE - [LAMBDA NIL (* gbn "21-Nov-85 02:09") - (OR IV.CURRENT.SCENE (ERROR "CAN'T DRAW NULL SCENE")) - (SELECTQ IV.MODE - (POLAR (IRIS.POLARVIEW IV.DIST IV.AZIM IV.INC IV.TWIST \IRISSTREAM)) - (XLATE NIL) - (LOOKAT (if (NOT (AND (EQUAL IV.OBJPT LASTIV.OBJPT) - (EQUAL IV.VIEWPT LASTIV.VIEWPT))) - then (* setup the viewing transformation, - since it has changed) - (IRIS.LOOKAT (fetch IVX of IV.VIEWPT) - (fetch IVX of IV.VIEWPT) - (fetch IVY of IV.VIEWPT) - (fetch IVZ of IV.OBJPT) - (fetch IVY of IV.OBJPT) - (fetch IVZ of IV.OBJPT) - IV.TWIST \IRISSTREAM) - (SETQ LASTIV.OBJPT IV.OBJPT) - (SETQ LASTIV.VIEWPT IV.VIEWPT))) - (ERROR "UNKNOWN IV.MODE")) - (if \IV.BACKGROUND - then (\CLEAR.IRIS \IV.BACKGROUND)) - (IRIS.CALLOBJ (fetch (IRISSCENE OBJNO) of IV.CURRENT.SCENE) - \IRISSTREAM) - (if \IV.DRAW.AXES - then (IRIS.CALLOBJ (fetch (IRISSCENE OBJNO) of AXES.SCENE) - \IRISSTREAM)) - (IRIS.SWAPBUFFERS \IRISSTREAM) - (ALIGN \IRISSTREAM]) - -(IV.SET.CURRENT.SCENE - [LAMBDA (ITEM WINDOW BUTTONS) (* ; "Edited 4-Feb-87 19:28 by gbn") - (PROG ([NEWSCENE (MENU (OR IV.SCENES.MENU (IV.BUILD.SCENES.MENU] - SCENEITEM) - (if NEWSCENE - then (SETQ IV.CURRENT.SCENE NEWSCENE) - (SETQ SCENEITEM (FM.GETITEM 'CURRENTSCENE 'FILL-INS WINDOW)) - (OR SCENEITEM (ERROR "SCENE ITEM NOT FOUND")) - (FM.CHANGESTATE SCENEITEM (fetch (IRISSCENE NAME) of NEWSCENE) - WINDOW) (* IV.DISPLAY.FMITEM SCENEITEM WINDOW) - (IV.PROOF.SCENE SCENEITEM]) - -(IV.SCENE.SETUP - [LAMBDA NIL (* ; "Edited 4-Feb-87 19:22 by gbn") - [IF (NOT (BOUNDP 'AXES.SCENE)) - THEN (SETQ AXES.SCENE (CREATE IRISSCENE - NAME _ 'Axes - OBJNO _ (IRIS.CONS.OBJNO) - DRAWFN _ '(DRAW.AXES 2] - [IF (NOT (BOUNDP 'SKULL.SCENE)) - THEN (SETQ SKULL.SCENE (CREATE IRISSCENE - NAME _ 'Skull - OBJNO _ (IRIS.CONS.OBJNO) - DRAWFN _ '(SKULLO \IRISSTREAM] - (PUSHNEW IV.SCENES AXES.SCENE) - (PUSHNEW IV.SCENES SKULL.SCENE) - (SETQ IV.CURRENT.SCENE AXES.SCENE]) -) -(DEFINEQ - -(DRAW.AXES - [LAMBDA (WIDTH COLOR) (* edited%: "17-Dec-85 18:39") - - (* * draws tri-color axes with each axis being 200 in length in the positive - direction) - - (IRIS.PUSHATTRIBUTES \IRISSTREAM) - (IRIS.LINEWIDTH (OR WIDTH 5) - \IRISSTREAM) - (IRIS.COLOR (OR COLOR 1) - \IRISSTREAM) - (IRIS.MOVE 0 0 0 \IRISSTREAM) - (IRIS.DRAW 0 0 200 \IRISSTREAM) - (IRIS.CMOV 0 0 210 \IRISSTREAM) - (IRIS.CHARSTR "z" \IRISSTREAM) - (IRIS.COLOR (OR COLOR 2) - \IRISSTREAM) - (IRIS.MOVE 0 0 0 \IRISSTREAM) - (IRIS.DRAW 0 200 0 \IRISSTREAM) - (IRIS.CMOV 0 210 0 \IRISSTREAM) - (IRIS.CHARSTR "y" \IRISSTREAM) - (IRIS.COLOR (OR COLOR 3) - \IRISSTREAM) - (IRIS.MOVE 0 0 0 \IRISSTREAM) - (IRIS.DRAW 200 0 0 \IRISSTREAM) - (IRIS.CMOV 210 0 0 \IRISSTREAM) - (IRIS.CHARSTR "x" \IRISSTREAM) - (IRIS.POPATTRIBUTES \IRISSTREAM) - (F]) - -(F - [LAMBDA NIL (* edited%: "13-Dec-85 18:35") - (SPP.FORCEOUTPUT IRISCONN]) - -(IV.CLEARIRIS - [LAMBDA NIL (* gbn "21-Nov-85 00:51") - (DSPCOLOR (DICOLOR.FROM.USER T) - \IRISSTREAM) - (IRIS.CLEAR \IRISSTREAM) - (IRIS.SWAPBUFFERS \IRISSTREAM) - (F]) - -(IV.DOWN - [LAMBDA (ITEM WINDOW BUTTONS) (* edited%: "17-Dec-85 16:01") - (LET NIL (SELECTQ IV.MODE - (POLAR (add IV.AZIM IV.THETA)) - (XLATE (IRIS.TRANSLATE 0 (IMINUS IV.DXLATE) - 0 \IRISSTREAM)) - (PROGN (add (fetch IVX of IV.OBJPT) - IV.DXLATE))) - (IV.DRAW.SCENE]) - -(IV.GETINPUT - [LAMBDA (MSG) (* edited%: "21-Aug-85 04:10") - (CLEARW IV.PROMPTWINDOW) - (PROG1 (PROMPTFORWORD MSG NIL NIL IV.PROMPTWINDOW NIL 'TTY NIL NIL) - (WINDOWPROP IV.PROMPTWINDOW 'PROCESS NIL) (* some random process circularity fix) - ]) - -(IV.READ - [LAMBDA (PROMPT) (* gbn "20-Nov-85 23:19") - (CLEARW IV.PROMPTWINDOW) - (PRINTOUT IV.PROMPTWINDOW PROMPT) - (RESETFORM (TTYDISPLAYSTREAM IV.PROMPTWINDOW) - (LISPXREAD T T]) - -(IV.HOME - [LAMBDA (ITEM WINDOW BUTTONS) (* edited%: "17-Dec-85 18:31") - (PROG [(R (FM.ITEMPROP ITEM 'REGION] - (\FM.HIGHLIGHTITEM ITEM WINDOW) - (SELECTQ IV.MODE - (XLATE (IRIS.ORTHO 0 SCREENWIDTH 0 SCREENHEIGHT -5000 5000 IRISCONN) - (IV.VIEW)) - (POLAR (IRIS.POLARVIEW 500 0 0 0 \IRISSTREAM)) - (LOOKAT NIL) - (ERROR "UNKNOWN MODE")) - (IV.DRAW.SCENE) - (F]) - -(IV.2D.HOME - [LAMBDA (ITEM WINDOW BUTTONS) (* ; "Edited 27-Jan-87 18:43 by gbn") - (PROG [(R (FM.ITEMPROP ITEM 'REGION] - (\FM.HIGHLIGHTITEM ITEM WINDOW) - (IRIS.ORTHO 0 SCREENWIDTH 0 SCREENHEIGHT -1000 1000 IRISCONN) - (IV.DRAW.SCENE) - (F]) - -(IV.PHOME - [LAMBDA (ITEM WINDOW BUTTONS) (* ; "Edited 27-Jan-87 18:43 by gbn") - (PROG [(R (FM.ITEMPROP ITEM 'REGION] - (\FM.HIGHLIGHTITEM ITEM WINDOW) - (IV.PHOME.AUX) - (F]) - -(IV.PHOME.AUX - [LAMBDA NIL (* ; "Edited 27-Jan-87 18:31 by gbn") - (IRIS.ORTHO 0 SCREENWIDTH 0 SCREENHEIGHT -5000 5000 IRISCONN) - (IRIS.VIEWPORT 0 IRIS.XMAXSCREEN 0 IRIS.YMAXSCREEN IRISCONN) - (IRIS.PERSPECTIVE (IRIS.DEGREES 45) - (IQUOTIENT IRIS.XMAXSCREEN IRIS.YMAXSCREEN) - 0 10000 IRISCONN) (* ; - "The projection (world-space -> eye-space) transformation") - (IRIS.POLARVIEW 500 (IRIS.DEGREES 45) - (IRIS.DEGREES 45) - 0 IRISCONN) (* ; - "the viewing (placing eye-space in world-space) transformation") - (IV.DRAW.SCENE]) - -(IV.VIEW - [LAMBDA (Z) (* edited%: "17-Dec-85 18:32") - (IRIS.PERSPECTIVE (IRIS.DEGREES 45) - (IQUOTIENT IRIS.XMAXSCREEN IRIS.YMAXSCREEN) - 0 10000 IRISCONN) - (IRIS.POLARVIEW (OR Z 1000) - (IRIS.DEGREES 90) - (IRIS.DEGREES 90) - 0 IRISCONN]) - -(IV.LEFT - [LAMBDA (ITEM WINDOW BUTTONS) (* edited%: "17-Dec-85 15:59") - (LET NIL (SELECTQ IV.MODE - (POLAR (add IV.AZIM IV.THETA)) - (XLATE (IRIS.TRANSLATE (IMINUS IV.DXLATE) - 0 0 \IRISSTREAM)) - (PROGN (add (fetch IVX of IV.OBJPT) - IV.DXLATE))) - (IV.DRAW.SCENE]) - -(IV.RIGHT - [LAMBDA (ITEM WINDOW BUTTONS) (* ; "Edited 27-Jan-87 17:55 by gbn") - (LET ((MOVE (IF (SHIFTDOWNP 'SHIFT) - THEN (IMINUS IV.DXLATE) - ELSE IV.DXLATE))) - (IRIS.TRANSLATE MOVE 0 0 \IRISSTREAM) - (IV.DRAW.SCENE]) - -(IV.ROTX - [LAMBDA (ITEM WINDOW BUTTONS) (* edited%: "17-Dec-85 16:03") - (IRIS.ROTATE (if (SHIFTDOWNP 'SHIFT) - then (MINUS IV.THETA) - else IV.THETA) - IRIS.XAXIS \IRISSTREAM) - (IV.DRAW.SCENE]) - -(IV.DOUBLEBUFFER - [LAMBDA (ITEM WINDOW BUTTONS) (* ; "Edited 29-Jan-87 00:03 by gbn") - (PROG [(STATE (FM.ITEMPROP ITEM 'STATE] - (if STATE - then (IRIS.DOUBLEBUFFER \IRISSTREAM) - (IRIS.FRONTBUFFER 0) - (IRIS.BACKBUFFER 1) - (IV.PROMPTPRINT "Double buffering.") - else (IRIS.SINGLEBUFFER \IRISSTREAM) - (IRIS.FRONTBUFFER 1) - (IRIS.BACKBUFFER 0) - (IV.PROMPTPRINT "Single buffering.")) - (IRIS.GCONFIG IRISCONN]) - -(IV.ROTY - [LAMBDA (ITEM WINDOW BUTTONS) (* edited%: "17-Dec-85 16:04") - (IRIS.ROTATE (if (SHIFTDOWNP 'SHIFT) - then (MINUS IV.THETA) - else IV.THETA) - IRIS.YAXIS \IRISSTREAM) - (IV.DRAW.SCENE]) - -(IV.ROTZ - [LAMBDA (ITEM WINDOW BUTTONS) (* edited%: "17-Dec-85 16:02") - (IRIS.ROTATE (if (SHIFTDOWNP 'SHIFT) - then (MINUS IV.THETA) - else IV.THETA) - IRIS.ZAXIS \IRISSTREAM) - (IV.DRAW.SCENE]) - -(IV.SWAPBUFFERS - [LAMBDA NIL (* gbn "14-Nov-85 18:27") - (IRIS.SWAPBUFFERS \IRISSTREAM) - (SPP.FORCEOUTPUT IRISCONN]) - -(IV.UP - [LAMBDA (ITEM WINDOW BUTTONS) (* ; "Edited 27-Jan-87 17:55 by gbn") - (LET ((MOVE (IF (SHIFTDOWNP 'SHIFT) - THEN (IMINUS IV.DXLATE) - ELSE IV.DXLATE))) - (IRIS.TRANSLATE 0 MOVE 0 \IRISSTREAM) - (IV.DRAW.SCENE]) - -(IV.THETA - [LAMBDA (ITEM WINDOW BUTTONS) (* ; "Edited 27-Jan-87 01:13 by gbn") - - (* controls whether or not the background is cleared before drawing a scene) - - (LET ((NEW (RNUMBER "Enter new rotation in degrees"))) - (if NEW - then (SETQ IV.THETA (ITIMES 10 NEW)) - (FM.CHANGESTATE (FM.GETITEM 'THETA 'FILL-INS WINDOW) - NEW WINDOW]) - -(IV.AXES - [LAMBDA (ITEM WINDOW BUTTONS) (* ; "Edited 29-Jan-87 00:17 by gbn") - (* ; - "controls whether or not axes are drawn in the scene.") - (if (FM.ITEMPROP ITEM 'STATE) - then (SETQ \IV.DRAW.AXES T) - (IV.ENSURE.SCENE AXES.SCENE) - else (SETQ \IV.DRAW.AXES)) - (IV.DRAW.SCENE]) - -(IV.BACKGROUND - [LAMBDA (ITEM WINDOW BUTTONS) (* ; "Edited 28-Jan-87 17:01 by gbn") - (* ; - "controls whether or not the background is cleared before drawing a scene") - (LET ((NAME-OR-RGB (DICOLOR.FROM.USER T))) - (SETQ \IV.BACKGROUND (if NAME-OR-RGB - then (\IRIS.ASSURE.COLOR NAME-OR-RGB \IRISSTREAM) - else NIL)) - (FM.CHANGELABEL (FM.GETITEM 'BACKGROUND 'FILL-INS WINDOW) - (if NAME-OR-RGB - then (L-CASE (MKSTRING NAME-OR-RGB)) - else "none") - WINDOW) - (IV.DRAW.SCENE]) - -(IV.TOWARD - [LAMBDA (ITEM WINDOW BUTTONS) (* ; "Edited 27-Jan-87 17:55 by gbn") - (LET ((MOVE (IF (SHIFTDOWNP 'SHIFT) - THEN (IMINUS IV.DXLATE) - ELSE IV.DXLATE))) - (IRIS.TRANSLATE 0 0 MOVE \IRISSTREAM) - (IV.DRAW.SCENE]) - -(IV.AWAY - [LAMBDA (ITEM WINDOW BUTTONS) (* edited%: "17-Dec-85 15:39") - (LET NIL (SELECTQ IV.MODE - (POLAR (add IV.AZIM IV.THETA)) - (XLATE (IRIS.TRANSLATE 0 0 (MINUS IV.DXLATE) - \IRISSTREAM)) - (PROGN (add (fetch IVX of IV.OBJPT) - IV.DXLATE))) - (IV.DRAW.SCENE]) - -(IV.DSPCOLOR - [LAMBDA (ITEM WINDOW BUTTONS) (* ; "Edited 28-Jan-87 17:02 by gbn") - -(* ;;; "sets the dspcolor for the stream (foreground color)") - - (LET ((RGB (DICOLOR.FROM.USER T))) - (if RGB - then (DSPCOLOR RGB \IRISSTREAM) - (FM.CHANGESTATE (FM.GETITEM 'DSPCOLOR 'FILL-INS WINDOW) - (if RGB - then (L-CASE (MKSTRING RGB)) - else "none") - WINDOW) - else NIL]) - -(IV.DELTA - [LAMBDA (ITEM WINDOW BUTTONS) (* ; "Edited 27-Jan-87 01:13 by gbn") - (LET ((NEW (RNUMBER "Enter new translation value"))) - (if NEW - then (FM.CHANGESTATE (FM.GETITEM 'DELTA 'FILL-INS WINDOW) - (SETQ IV.DXLATE NEW) - WINDOW]) - -(IV.VIEW.CHANGED - [LAMBDA NIL (* ; "Edited 3-Feb-87 00:00 by gbn") - 'JUNK]) - -(IV.NEWSTREAM - [LAMBDA (ITEM BUTTONS WINDOW) (* ; "Edited 29-Jan-87 00:59 by gbn") - (IF (MOUSECONFIRM "kill old stream? (lose fonts, etc.)" "left to confirm" IV.PROMPTWINDOW) - THEN (SETQ IRISCONN NIL) - (OPENIRISSTREAM IRISNSHOSTNUMBER]) - -(IV.PROMPTPRINT - [LAMBDA ARGS (* edited%: "21-Aug-85 06:10") - (CLEARW IV.PROMPTWINDOW) - (for F from 1 to ARGS do (PRIN1 (ARG ARGS F) - IV.PROMPTWINDOW]) - -(IV.PROOF.SKETCH - [LAMBDA (ARGS |...|) (* edited%: "21-Aug-85 10:39") - (IV.PROMPTPRINT "SKETCHing...") - (IRIS.SKETCH (PROG1 NIL (GETPOSITION))) - (ALIGN \IRISSTREAM) - (IV.PROMPTPRINT "done"]) - -(IV.INIT - [LAMBDA (MENU-POSITION) (* ; "Edited 4-Feb-87 19:23 by gbn") - -(* ;;; "uses freemenu to build the view controller menu ") - - (LET NIL (if (BOUNDP 'IV.DEMOW) - then (CLOSEW IV.DEMOW)) - (MOVEW (SETQ IV.DEMOW (FREEMENU *IV-MENUDESC*)) - MENU-POSITION) - (SETQ IV.PROMPTWINDOW (GETPROMPTWINDOW IV.DEMOW 2)) - (IV.NEWSTREAM NIL NIL NIL) (* ; "INIT LOOKAT PARAMS") - (SETQ LASTIV.OBJPT (create IVPOS - IVX _ 0 - IVY _ 0 - IVZ _ 1)) - (SETQ IV.OBJPT (create IVPOS - IVX _ 0 - IVY _ 0 - IVZ _ 0)) - (SETQ IV.VIEWPT (create IVPOS - IVX _ 0 - IVY _ 0 - IVZ _ -1000)) - (SETQ LASTIV.VIEWPT (create IVPOS - IVX _ 0 - IVY _ 0 - IVZ _ -1001)) (* ; - "The amount that a translate should move") - (SETQ IV.DXLATE 10) (* ; "INIT POLAR PARAMS") - (SETQ IV.DIST 500) - (SETQ IV.AZIM (SETQ IV.INC (SETQ IV.TWIST 0))) - (SETQ IV.MODE 'XLATE) - (IRIS.DOUBLEBUFFER \IRISSTREAM) - (IV.SCENE.SETUP) - (IV.ENSURE.SCENE AXES.SCENE) - (IV.PHOME.AUX) - (IV.DRAW.SCENE) - (IV.DRAW.SCENE) - (IRIS.GCONFIG \IRISSTREAM]) - -(\CLEAR.IRIS - [LAMBDA (COLOR) (* gbn "21-Nov-85 02:10") - (IRIS.PUSHATTRIBUTES \IRISSTREAM) - (IRIS.COLOR (\IRIS.ASSURE.COLOR COLOR \IRISSTREAM)) - (IRIS.CLEAR \IRISSTREAM) - (IRIS.POPATTRIBUTES]) - -(IRIS.DEGREES - [LAMBDA (DEGREES) (* edited%: "13-Dec-85 18:32") - - (* Takes an angle in degrees and returns an angle as the iris likes it - (tenths)) - - (FIX (TIMES DEGREES 10]) -) -(DEFINEQ - -(IV.ITEMMAPFN - [LAMBDA (ITEM) (* edited%: "21-Aug-85 02:05") - (if (EQUAL (FM.ITEMPROP ITEM 'NAME%:) - NAME) - then (SETQ RESULT ITEM]) - -(IV.DISPLAY.FMITEM - [LAMBDA (ITEM WINDOW) (* gbn "15-Nov-85 12:25") - (HELP)(* PROG ((STREAM (fetch (FREEMENU STREAM) of - (WINDOWPROP WINDOW (QUOTE FREEMENU)))) (FONT - (FM.ITEMPROP ITEM (QUOTE FONT%:))) (REGION - (FM.ITEMPROP ITEM (QUOTE REGION))) (LABEL - (FM.ITEMPROP ITEM (QUOTE LABEL)))) (DSPDESTINATION - (FM.ITEMPROP ITEM (QUOTE BITMAP)) STREAM) - (DSPXPOSITION 0 STREAM) (DSPYPOSITION (FONTPROP FONT - (QUOTE DESCENT)) STREAM) (DSPFONT FONT STREAM) - (PRIN1 LABEL STREAM) (replace (REGION WIDTH) of REGION with - (STRINGWIDTH LABEL FONT)) (FM.DISPLAYITEM ITEM WINDOW) - (BLTSHADE WHITESHADE WINDOW (IPLUS (fetch - (REGION LEFT) of REGION) (fetch (REGION WIDTH) of REGION)) - (fetch (REGION BOTTOM) of REGION) (IDIFFERENCE - (BITMAPWIDTH (FM.ITEMPROP ITEM (QUOTE BITMAP))) - (fetch (REGION WIDTH) of REGION)) (BITMAPHEIGHT - (FM.ITEMPROP ITEM (QUOTE BITMAP))))) - ]) -) -(DECLARE%: EVAL@COMPILE - -(RECORD IRISSCENE (NAME DRAWFN OBJNO) - OBJNO _ (IRIS.CONS.OBJNO)) - -(RECORD IVPOS (IVX IVY IVZ)) -) - -(RPAQQ HANDWIDTH 48) - -(RPAQQ IRIS.XAXIS 88) - -(RPAQQ IRIS.ZAXIS 90) - -(RPAQQ IV.DXLATE 10) - -(RPAQQ IV.MODE XLATE) - -(RPAQQ IV.OBJPT (0 0 0)) - -(RPAQQ IV.THETA 50) - -(RPAQQ IV.TRACE.FNS (IRIS.POPMATRIX IRIS.ROTATE IRIS.TRANSLATE)) - -(RPAQQ IV.TWIST 0) - -(RPAQQ IV.VIEWPT (0 0 -1000)) - -(RPAQQ LASTIV.OBJPT (0 0 1)) - -(RPAQQ LASTIV.VIEWPT (0 0 -1001)) - -(RPAQQ \IV.DRAW.AXES NIL) - -(RPAQQ \IV.BACKGROUND NIL) -(IV.SCENE.SETUP) -(IV.BUILD.SCENES.MENU) -(DEFINEQ - -(SKULLO - [LAMBDA (*STREAM*) - (FILLCIRCLE 529 377 192.0 '(NIL (255 0 0)) *STREAM*) - (DRAWCIRCLE 529 377 192.0 '(ROUND 1 (0 255 255)) 'NIL *STREAM*) - (FILLPOLYGON '((530 . 568) - (476 . 562) - (426 . 540) - (380 . 500) - (349 . 445) - (337 . 386) - (344 . 323) - (383 . 250) - (436 . 208) - (484 . 190) - (530 . 184)) '(NIL (0 0 255)) *STREAM*) - (DRAWLINE 530 568 476 562 '1 'NIL *STREAM* '(0 255 255) 'NIL) - (DRAWLINE 476 562 426 540 '1 'NIL *STREAM* '(0 255 255) 'NIL) - (DRAWLINE 426 540 380 500 '1 'NIL *STREAM* '(0 255 255) 'NIL) - (DRAWLINE 380 500 349 445 '1 'NIL *STREAM* '(0 255 255) 'NIL) - (DRAWLINE 349 445 337 386 '1 'NIL *STREAM* '(0 255 255) 'NIL) - (DRAWLINE 337 386 344 323 '1 'NIL *STREAM* '(0 255 255) 'NIL) - (DRAWLINE 344 323 383 250 '1 'NIL *STREAM* '(0 255 255) 'NIL) - (DRAWLINE 383 250 436 208 '1 'NIL *STREAM* '(0 255 255) 'NIL) - (DRAWLINE 436 208 484 190 '1 'NIL *STREAM* '(0 255 255) 'NIL) - (DRAWLINE 484 190 530 184 '1 'NIL *STREAM* '(0 255 255) 'NIL) - (DRAWLINE 530 184 530 568 '1 'NIL *STREAM* '(0 255 255) 'NIL) - (FILLCIRCLE 529 417 152.0526 '(NIL (255 255 255)) *STREAM*) - (DRAWCIRCLE 529 417 152.0526 '(ROUND 1 (255 255 255)) 'NIL *STREAM*) - (FILLPOLYGON '((639 . 312) - (642 . 301) - (642 . 291) - (640 . 283) - (635 . 276) - (629 . 273) - (620 . 272) - (611 . 294)) '(NIL (255 255 255)) *STREAM*) - (DRAWLINE 639 312 642 301 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 642 301 642 291 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 642 291 640 283 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 640 283 635 276 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 635 276 629 273 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 629 273 620 272 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 620 272 611 294 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 611 294 639 312 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (FILLPOLYGON '((446 . 300) - (439 . 271) - (439 . 254) - (440 . 245) - (446 . 236) - (455 . 231) - (465 . 227) - (529 . 220) - (602 . 227) - (611 . 229) - (618 . 236) - (622 . 245) - (622 . 256) - (620 . 271) - (615 . 302)) '(NIL (255 255 255)) *STREAM*) - (DRAWLINE 446 300 439 271 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 439 271 439 254 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 439 254 440 245 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 440 245 446 236 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 446 236 455 231 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 455 231 465 227 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 465 227 529 220 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 529 220 602 227 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 602 227 611 229 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 611 229 618 236 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 618 236 622 245 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 622 245 622 256 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 622 256 620 271 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 620 271 615 302 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 615 302 446 300 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (FILLPOLYGON '((468 . 228) - (466 . 222) - (468 . 216) - (474 . 218) - (478 . 212) - (481 . 213) - (486 . 202) - (493 . 205) - (499 . 194) - (505 . 198) - (514 . 186) - (522 . 191) - (530 . 187) - (538 . 192) - (546 . 186) - (554 . 192) - (559 . 190) - (566 . 196) - (572 . 194) - (578 . 202) - (584 . 201) - (589 . 210) - (593 . 209) - (598 . 214) - (601 . 214) - (604 . 219) - (600 . 226)) '(NIL (255 255 255)) *STREAM*) - (DRAWLINE 468 228 466 222 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 466 222 468 216 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 468 216 474 218 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 474 218 478 212 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 478 212 481 213 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 481 213 486 202 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 486 202 493 205 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 493 205 499 194 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 499 194 505 198 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 505 198 514 186 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 514 186 522 191 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 522 191 530 187 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 530 187 538 192 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 538 192 546 186 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 546 186 554 192 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 554 192 559 190 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 559 190 566 196 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 566 196 572 194 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 572 194 578 202 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 578 202 584 201 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 584 201 589 210 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 589 210 593 209 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 593 209 598 214 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 598 214 601 214 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 601 214 604 219 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 604 219 600 226 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 600 226 468 228 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (FILLPOLYGON '((422 . 310) - (419 . 298) - (419 . 283) - (420 . 278) - (424 . 274) - (431 . 272) - (439 . 271) - (451 . 292)) '(NIL (255 255 255)) *STREAM*) - (DRAWLINE 422 310 419 298 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 419 298 419 283 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 419 283 420 278 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 420 278 424 274 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 424 274 431 272 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 431 272 439 271 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 439 271 451 292 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 451 292 422 310 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (FILLCIRCLE 527 419 136.0 '(NIL (255 0 0)) *STREAM*) - (DRAWCIRCLE 527 419 136.0 '(ROUND 2 (255 255 255)) 'NIL *STREAM*) - (FILLPOLYGON '((564 . 550) - (582 . 544) - (609 . 527) - (632 . 506) - (650 . 478) - (662 . 441) - (664 . 404) - (654 . 369) - (638 . 340) - (616 . 316) - (591 . 299) - (565 . 286) - (532 . 280) - (490 . 286)) '(NIL (0 0 255)) *STREAM*) - (DRAWLINE 564 550 582 544 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 582 544 609 527 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 609 527 632 506 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 632 506 650 478 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 650 478 662 441 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 662 441 664 404 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 664 404 654 369 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 654 369 638 340 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 638 340 616 316 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 616 316 591 299 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 591 299 565 286 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 565 286 532 280 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 532 280 490 286 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 490 286 564 550 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (FILLPOLYGON '((564 . 550) - (560 . 532) - (568 . 530) - (548 . 492) - (574 . 492) - (536 . 432) - (572 . 433) - (522 . 378) - (559 . 378) - (492 . 286) - (510 . 362) - (482 . 363) - (518 . 418) - (496 . 418) - (542 . 480) - (520 . 480) - (554 . 525) - (545 . 524)) '(NIL (255 255 255)) *STREAM*) - (DRAWLINE 564 550 560 532 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 560 532 568 530 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 568 530 548 492 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 548 492 574 492 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 574 492 536 432 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 536 432 572 433 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 572 433 522 378 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 522 378 559 378 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 559 378 492 286 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 492 286 510 362 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 510 362 482 363 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 482 363 518 418 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 518 418 496 418 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 496 418 542 480 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 542 480 520 480 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 520 480 554 525 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 554 525 545 524 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWLINE 545 524 564 550 '1 'NIL *STREAM* '(255 255 255) 'NIL) - (DRAWCIRCLE 529 417 136.0 '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((420 . 311) - (390 . 354) - (377 . 415) - (387 . 470) - (409 . 511) - (444 . 542) - (488 . 563) - (528 . 569) - (581 . 559) - (630 . 531) - (657 . 498) - (677 . 453) - (679 . 392) - (662 . 342) - (640 . 312)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((565 . 547)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWLINE 565 547 547 522 '2 'NIL *STREAM* '(0 0 0) 'NIL) - (DRAWCURVE '((547 . 522)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWLINE 547 522 555 522 '2 'NIL *STREAM* '(0 0 0) 'NIL) - (DRAWCURVE '((555 . 522)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWLINE 555 522 522 478 '2 'NIL *STREAM* '(0 0 0) 'NIL) - (DRAWCURVE '((522 . 478)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWLINE 522 478 545 479 '2 'NIL *STREAM* '(0 0 0) 'NIL) - (DRAWCURVE '((545 . 479)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWLINE 545 479 499 416 '2 'NIL *STREAM* '(0 0 0) 'NIL) - (DRAWCURVE '((499 . 416)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWLINE 499 416 521 416 '2 'NIL *STREAM* '(0 0 0) 'NIL) - (DRAWCURVE '((521 . 416)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWLINE 521 416 483 362 '2 'NIL *STREAM* '(0 0 0) 'NIL) - (DRAWCURVE '((483 . 362)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWLINE 483 362 512 360 '2 'NIL *STREAM* '(0 0 0) 'NIL) - (DRAWCURVE '((512 . 360)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWLINE 512 360 493 285 '2 'NIL *STREAM* '(0 0 0) 'NIL) - (DRAWCURVE '((493 . 285)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((566 . 548)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWLINE 566 548 562 529 '2 'NIL *STREAM* '(0 0 0) 'NIL) - (DRAWCURVE '((562 . 529)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWLINE 562 529 570 529 '2 'NIL *STREAM* '(0 0 0) 'NIL) - (DRAWCURVE '((570 . 529)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWLINE 570 529 550 490 '2 'NIL *STREAM* '(0 0 0) 'NIL) - (DRAWCURVE '((550 . 490)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWLINE 550 490 575 490 '2 'NIL *STREAM* '(0 0 0) 'NIL) - (DRAWCURVE '((575 . 490)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWLINE 575 490 538 430 '2 'NIL *STREAM* '(0 0 0) 'NIL) - (DRAWCURVE '((538 . 430)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWLINE 538 430 573 431 '2 'NIL *STREAM* '(0 0 0) 'NIL) - (DRAWCURVE '((573 . 431)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWLINE 573 431 526 377 '2 'NIL *STREAM* '(0 0 0) 'NIL) - (DRAWCURVE '((526 . 377)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWLINE 526 377 561 376 '2 'NIL *STREAM* '(0 0 0) 'NIL) - (DRAWCURVE '((561 . 376)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWLINE 561 376 493 285 '2 'NIL *STREAM* '(0 0 0) 'NIL) - (DRAWCURVE '((493 . 285)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWCIRCLE 529 377 192.0 '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((478 . 260) - (471 . 258) - (462 . 256) - (459 . 268) - (462 . 283) - (457 . 289)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((513 . 256) - (520 . 260) - (508 . 266) - (490 . 267) - (481 . 264) - (478 . 260) - (486 . 258) - (499 . 253)) 'T '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((589 . 261) - (593 . 261) - (605 . 265) - (605 . 273) - (605 . 285) - (605 . 293)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((549 . 253) - (545 . 257) - (545 . 265) - (561 . 267) - (569 . 267) - (577 . 265) - (585 . 261) - (589 . 261) - (581 . 257) - (573 . 257) - (561 . 253) - (553 . 253)) 'T '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((638 . 312) - (640 . 302) - (641 . 291) - (639 . 280) - (629 . 273) - (617 . 271)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((619 . 271) - (621 . 256) - (620 . 240) - (611 . 230) - (602 . 226)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((438 . 271) - (438 . 253) - (442 . 240) - (453 . 231) - (465 . 227)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((421 . 310) - (418 . 294) - (420 . 276) - (431 . 271) - (436 . 271)) 'NIL '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((534 . 240) - (533 . 234) - (534 . 230) - (539 . 226) - (543 . 232) - (540 . 235)) 'T '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((527 . 242) - (528 . 236) - (527 . 229) - (520 . 227) - (521 . 234) - (524 . 238)) 'T '(ROUND 2 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((465 . 226) - (466 . 219) - (469 . 215) - (472 . 218) - (473 . 223) - (470 . 228)) 'T '(ROUND 3 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((474 . 222) - (475 . 215) - (478 . 211) - (481 . 214) - (482 . 219) - (479 . 224)) 'T '(ROUND 3 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((483 . 219) - (486 . 222) - (493 . 219) - (493 . 213) - (493 . 206) - (486 . 203) - (482 . 209)) 'T '(ROUND 3 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((494 . 216) - (496 . 219) - (501 . 218) - (505 . 213) - (505 . 203) - (505 . 199) - (502 . 195) - (497 . 195) - (495 . 200) - (494 . 205) - (494 . 210)) 'T '(ROUND 3 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((507 . 209) - (510 . 213) - (517 . 212) - (520 . 206) - (521 . 199) - (521 . 193) - (519 . 189) - (513 . 186) - (509 . 190) - (506 . 196)) 'T '(ROUND 3 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((523 . 208) - (526 . 212) - (533 . 211) - (536 . 205) - (537 . 198) - (537 . 192) - (535 . 188) - (529 . 185) - (525 . 189) - (522 . 195)) 'T '(ROUND 3 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((539 . 208) - (542 . 212) - (549 . 211) - (552 . 205) - (553 . 198) - (553 . 192) - (551 . 188) - (545 . 185) - (541 . 189) - (538 . 195)) 'T '(ROUND 3 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((553 . 212) - (555 . 215) - (560 . 214) - (564 . 209) - (564 . 199) - (564 . 195) - (561 . 191) - (556 . 191) - (554 . 196) - (553 . 201) - (553 . 206)) 'T '(ROUND 3 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((565 . 215) - (567 . 218) - (572 . 217) - (576 . 212) - (576 . 202) - (576 . 198) - (573 . 194) - (568 . 194) - (566 . 199) - (565 . 204) - (565 . 209)) 'T '(ROUND 3 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((578 . 217) - (581 . 220) - (588 . 217) - (588 . 211) - (588 . 204) - (581 . 201) - (577 . 207)) 'T '(ROUND 3 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((588 . 220) - (589 . 213) - (592 . 209) - (595 . 212) - (596 . 217) - (593 . 222)) 'T '(ROUND 3 (0 0 0)) 'NIL *STREAM*) - (DRAWCURVE '((596 . 224) - (597 . 217) - (600 . 213) - (603 . 216) - (604 . 221) - (601 . 226)) 'T '(ROUND 3 (0 0 0)) 'NIL *STREAM*]) -) - - - -(* ;; "The order of these variables is important.") - - -(CL:DEFPARAMETER *IV-SCENES-MENUDESC* `(NIL ((LABEL "Draw Scene" SELECTEDFN IV.PROOF.SCENE HJUSTIFY - CENTER)) - ((LABEL "Forget Scene" SELECTEDFN IV.FORGET.SCENE - HJUSTIFY CENTER)) - ((LABEL "Redefine Scene" SELECTEDFN IV.REDEFINE.SCENE - HJUSTIFY CENTER))) ) - - -(CL:DEFPARAMETER *IV-FILLINS-MENUDESC* `[(GROUP (PROPS FORMAT TABLE ID FILL-INS) - ((LABEL "Change Scene" SELECTEDFN - IV.SET.CURRENT.SCENE) - (TYPE EDIT ID CURRENTSCENE LABEL "axes" MAXWIDTH 55) - ) - ((LABEL "" TYPE DISPLAY) - (LABEL "" TYPE DISPLAY)) - [(LABEL "Background:" SELECTEDFN IV.BACKGROUND) - (TYPE EDIT ID BACKGROUND LABEL "black" SELECTEDFN - IV.BACKGROUND MAXWIDTH ,(STRINGWIDTH - ">background<"] - [(LABEL "Foreground:" SELECTEDFN IV.DSPCOLOR) - (TYPE EDIT ID DSPCOLOR LABEL "red" SELECTEDFN - IV.DSPCOLOR MAXWIDTH ,(STRINGWIDTH - ">background<"] - [(LABEL ,IV.DELTA.LABEL SELECTEDFN IV.DELTA) - (TYPE EDIT ID DELTA LABEL ,(MKSTRING IV.DXLATE] - ((LABEL ,IV.THETA.LABEL SELECTEDFN IV.THETA) - (TYPE EDIT ID THETA LABEL ,(MKSTRING IV.THETA] - ) - - -(CL:DEFPARAMETER *IV-COMMANDS-MENUDESC* `[(GROUP (PROPS FORMAT ROW) - ((LABEL "New Stream" SELECTEDFN IV.NEWSTREAM - HJUSTIFY CENTER)) - ((TYPE TOGGLE LABEL "Axes" SELECTEDFN IV.AXES - HJUSTIFY CENTER INITSTATE NIL)) - ((TYPE TOGGLE LABEL "Double Buffer" SELECTEDFN - IV.DOUBLEBUFFER HJUSTIFY CENTER INITSTATE T)) - ((TYPE MOMENTARY LABEL "Swap buffers" SELECTEDFN - IV.SWAPBUFFERS HJUSTIFY CENTER)) - ((TYPE MOMENTARY LABEL "Clear IRIS" SELECTEDFN - IV.CLEARIRIS HJUSTIFY CENTER)) - ((TYPE DISPLAY LABEL "")) - ,@*IV-SCENES-MENUDESC* - (,@*IV-FILLINS-MENUDESC*] ) - - -(CL:DEFPARAMETER *IV-POSITIONING-MENU-DESC* `((GROUP (PROPS FORMAT EXPLICIT COORDINATES GROUP BOX 0) - (LABEL ,IV.TOWARD HIGHLIGHT ,IV.TOWARD.HIGHLIGHT - LEFT 0 BOTTOM 0 HELDFN IV.TOWARD) - (LABEL ,IV.ROTZ HIGHLIGHT ,IV.ROTZ.HIGHLIGHT - LEFT ,(IPLUS -10 (BITMAPWIDTH IV.TOWARD)) - BOTTOM ,(BITMAPHEIGHT IV.TOWARD) HELDFN - IV.ROTZ) - [TYPE DISPLAY LABEL ,IV.ROTATE LEFT - ,(IPLUS (BITMAPWIDTH IV.TOWARD) - (IQUOTIENT (BITMAPWIDTH IV.ROTZ) - 2)) BOTTOM - ,(IPLUS (BITMAPHEIGHT IV.ROTZ) - (BITMAPHEIGHT IV.TOWARD] - (LABEL ,IV.RIGHT HIGHLIGHT ,IV.RIGHT.HIGHLIGHT - LEFT ,(IPLUS (BITMAPWIDTH IV.TOWARD) - (IQUOTIENT (BITMAPWIDTH - IV.ROTZ) - 2) - (BITMAPWIDTH IV.ROTATE) - (BITMAPWIDTH IV.ROTX)) - BOTTOM ,(IPLUS (BITMAPHEIGHT IV.ROTZ) - (BITMAPHEIGHT IV.TOWARD) - 20) HELDFN IV.RIGHT) - (LABEL ,IV.ROTX HIGHLIGHT ,IV.ROTX.HIGHLIGHT - LEFT ,(IPLUS (BITMAPWIDTH IV.TOWARD) - (IQUOTIENT (BITMAPWIDTH - IV.ROTZ) - 2) - (BITMAPWIDTH IV.ROTATE)) - BOTTOM ,(IPLUS (BITMAPHEIGHT IV.ROTZ) - (BITMAPHEIGHT IV.TOWARD)) - HELDFN IV.ROTX) - (LABEL ,IV.UP HIGHLIGHT ,IV.UP.HIGHLIGHT LEFT - ,(IPLUS (BITMAPWIDTH IV.TOWARD) - (IQUOTIENT (BITMAPWIDTH IV.ROTZ) - 2) - 10) BOTTOM - ,(IPLUS (BITMAPHEIGHT IV.TOWARD) - (BITMAPHEIGHT IV.ROTZ) - (BITMAPHEIGHT IV.ROTATE) - (BITMAPHEIGHT IV.ROTY) - -5) HELDFN IV.UP) - (LABEL "2D-Home" DOWNFN IV.2D.HOME LEFT - ,(FIX (TIMES 2.5 (BITMAPWIDTH IV.ROTZ))) - BOTTOM ,(BITMAPHEIGHT IV.TOWARD)) - [LABEL "Home" DOWNFN IV.HOME LEFT - ,(FIX (TIMES 2.5 (BITMAPWIDTH IV.ROTZ))) - BOTTOM ,(IPLUS -15 (BITMAPHEIGHT - IV.TOWARD] - [LABEL "Acute-Home" DOWNFN IV.PHOME LEFT - ,(FIX (TIMES 2.5 (BITMAPWIDTH IV.ROTZ))) - BOTTOM ,(IPLUS -30 (BITMAPHEIGHT - IV.TOWARD] - (LABEL ,IV.ROTY HIGHLIGHT ,IV.ROTY.HIGHLIGHT - LEFT ,(IPLUS (BITMAPWIDTH IV.TOWARD) - (IQUOTIENT (BITMAPWIDTH - IV.ROTZ) - 2) - 5) BOTTOM - ,(IPLUS (BITMAPHEIGHT IV.TOWARD) - (BITMAPHEIGHT IV.ROTZ) - (BITMAPHEIGHT IV.ROTATE)) HELDFN - IV.ROTY))) ) - - -(CL:DEFPARAMETER *IV-MENUDESC* `[(PROPS FORMAT ROW BOX 4) - ((TYPE DISPLAY LABEL "IRIS View Controller" HJUSTIFY CENTER FONT - (MODERN 10 BOLD))) - (,@*IV-POSITIONING-MENU-DESC* (GROUP (PROPS FORMAT COLUMN) - (,@*IV-COMMANDS-MENUDESC*] - ) - - -(PUTPROPS IRISVIEW FILETYPE :FAKE-COMPILE-FILE) -(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS - -(ADDTOVAR NLAMA ) - -(ADDTOVAR NLAML ) - -(ADDTOVAR LAMA IV.PROMPTPRINT) -) -(PUTPROPS IRISVIEW COPYRIGHT ("Xerox Corporation" 1985 1987)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (11707 19606 (IV.PROOF.SCENE 11717 . 12158) (IV.ENSURE.SCENE 12160 . 13349) ( -IV.NEW.SCENE.FROM.USER 13351 . 14631) (IV.REDEFINE.SCENE 14633 . 15155) (IV.CHOOSE.SCENE 15157 . 15334 -) (IV.BUILD.SCENES.MENU 15336 . 16056) (IV.FORGET.SCENE 16058 . 16516) (IV.DRAW.SCENE 16518 . 18096) ( -IV.SET.CURRENT.SCENE 18098 . 18798) (IV.SCENE.SETUP 18800 . 19604)) (19607 33829 (DRAW.AXES 19617 . -20587) (F 20589 . 20727) (IV.CLEARIRIS 20729 . 20978) (IV.DOWN 20980 . 21419) (IV.GETINPUT 21421 . -21757) (IV.READ 21759 . 22011) (IV.HOME 22013 . 22529) (IV.2D.HOME 22531 . 22857) (IV.PHOME 22859 . -23110) (IV.PHOME.AUX 23112 . 23926) (IV.VIEW 23928 . 24278) (IV.LEFT 24280 . 24719) (IV.RIGHT 24721 . -25050) (IV.ROTX 25052 . 25354) (IV.DOUBLEBUFFER 25356 . 25967) (IV.ROTY 25969 . 26271) (IV.ROTZ 26273 - . 26575) (IV.SWAPBUFFERS 26577 . 26758) (IV.UP 26760 . 27086) (IV.THETA 27088 . 27554) (IV.AXES 27556 - . 28039) (IV.BACKGROUND 28041 . 28829) (IV.TOWARD 28831 . 29161) (IV.AWAY 29163 . 29601) (IV.DSPCOLOR - 29603 . 30179) (IV.DELTA 30181 . 30534) (IV.VIEW.CHANGED 30536 . 30675) (IV.NEWSTREAM 30677 . 30986) -(IV.PROMPTPRINT 30988 . 31255) (IV.PROOF.SKETCH 31257 . 31518) (IV.INIT 31520 . 33296) (\CLEAR.IRIS -33298 . 33558) (IRIS.DEGREES 33560 . 33827)) (33830 35177 (IV.ITEMMAPFN 33840 . 34061) ( -IV.DISPLAY.FMITEM 34063 . 35175)) (35819 55207 (SKULLO 35829 . 55205))))) -STOP diff --git a/obsolete/lispusers/KOTOLOGO b/obsolete/lispusers/KOTOLOGO deleted file mode 100644 index 3e73f0e5..00000000 --- a/obsolete/lispusers/KOTOLOGO +++ /dev/null @@ -1,70 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP") -(filecreated "17-Aug-88 03:42:15" {erinyes}medley>kotologo.\;1 3467 - - |changes| |to:| (vars kotologocoms) - (fns kotologow)) - - -; Copyright (c) 1988 by Xerox Corporation. All rights reserved. - -(prettycomprint kotologocoms) - -(rpaqq kotologocoms ((fns kotologow \\drawlogowindowimage))) -(defineq - -(kotologow - (lambda (string where title angledelta) (* |edited:| " 1-AUG-83 22:55") - (* |creates| \a |logo| |window.|) - (prog ((circlesize 60) - (logoxcenter 70) - (logoycenter 65) - (logowindowheight 180) - w logowindowwidth wimagewidth wimageheight (string (or string "Interlisp-D"))) - (or angledelta (setq angledelta 23)) - (setq wimagewidth (fix (ftimes circlesize 0.62))) - (setq wimageheight (fix (ftimes circlesize 0.5))) - (setq logowindowwidth (iplus logoxcenter 30 wimagewidth (stringwidth string - '(timesromand 36)))) - (setq w (cond - ((typenamep where 'window) - where) - (t (createw (cond - ((positionp where) - (|create| region - left _ (|fetch| (position xcoord) |of| where) - bottom _ (|fetch| (position ycoord) |of| where) - width _ logowindowwidth - height _ logowindowheight)) - (t (getboxregion logowindowwidth logowindowheight nil nil nil - "Specify location for logo window."))) - (or title (concat "Copyright (c) by Xerox Corporation" " " - (or makesysdate (date)))))))) - (|for| angle |from| 0 |to| 270 |by| angledelta - |do| (\\drawlogowindowimage (iplus logoxcenter (ftimes circlesize (cos angle))) - (iplus logoycenter (ftimes circlesize (sin angle))) - wimagewidth wimageheight 2 w)) - (moveto (iplus logoxcenter 10 wimagewidth) - (iplus 2 (idifference logoycenter circlesize)) - w) - (dspfont '(timesromand 36) - w) - (prin3 string w) - (return w)))) - -(\\drawlogowindowimage - (lambda (xpos ypos width height border w) (* |rrb| "22-FEB-82 18:04") - (* |makes| \a |window| |image.| - |This| |is| |part| |of| |the| |logo| - |drawing.|) - (bitblt nil nil nil w xpos ypos width height 'texture 'replace blackshade) - (bitblt nil nil nil w (iplus border xpos) - (iplus border ypos) - (idifference width (itimes border 2)) - (idifference height (itimes border 3)) - 'texture - 'replace whiteshade))) -) -(putprops kotologo copyright ("Xerox Corporation" 1988)) -(declare\: dontcopy - (filemap (nil (393 3387 (kotologow 403 . 2682) (\\drawlogowindowimage 2684 . 3385))))) -stop diff --git a/obsolete/lispusers/KOTOLOGO.TEDIT b/obsolete/lispusers/KOTOLOGO.TEDIT deleted file mode 100644 index ecb4ce398d8718b8fa90c7bf1dd9b002bbffa288..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11140 zcmeI2-*4Mg6vwZdZCTku1Okl*AV)<)i8QLV>)H+>g*0_rvn0+OXFotlM2po$>*A?# z*+7T|RcO*)`WGM`_!p3nn5G3LG~W0NCORR++bHaTPR)8b=lVySHObrw#>8?p$M(6O zbME(^`=fRiqx#KwyK((r-h`@IH6r?%N)5{9>E&}q)q=%R%>tubv5Yd9RY)x_ETds` z@*s>JnVK4oC^=nIXNqZEQFD=O>8w$M5*#%x^NpJI(V_v1=7I?qD%G-iVK@?ZwVeQ{ zSxc4b0$ey_EE!-`EM!a7g+-%mELx?+;Cr*n)zenRtiB&PVJ@Am!D8jC0o2nIP_C4r zQWdQXLw?zEW0h)PoiX5C2`fdr)zUfRAhvFuaatfZLTo{{aoE=`VArW$D1nlN@+zm% z8BL27i!|DvHCQl*0UY({WMCVZ-V&TQYZa0WVB&2R%*C?XeV9d)aj|snJjU^*Vu-@q z=@^2Xk^x~5DH(!8BMCUaWR{mt;{ZjN#IQ)m*w;+rflHkQM!8_Og7I~>d7a<66$lpW z??Ku1uWo+-`OP4KG42;v@7%f?kiE8Y=hjM4_WGS$*MqXbH8ii?{PWjvl;_B_Q_8!&G!xNSVTx+zS^_;)rF=kyn%>-uaVrj4>=Z&uG!j1cnvvtuU zTzj-UAEKe1#XL07Wm^&JSVSA4pw899SnNHrm}1(`8ry=Rp%r&0tUFqJC}e{^9xSc6 zebyT-k)(dk?78wZ=fPQ#f#!psr6-f_`w~nSh+rV7(^FZ^rp9k@``+uDW|JG-}mi6AFT5oM#H%i(|yeA@DO1;Xz%hs{! z)`r$ihpnN{_VZxRkf$LJ?sqHQ)&$wzJUj`k`<+4%y}?<|n|42Yg>~|<0~Vu^h9vH- zLB2=yv&r>#DW5vGVk{nr8+(A|J=kafmUc>fV|dBWlD1B99d^pkzTBI==x5(Two~7n zxEp@<6J*`u&x6fMZ7hwaTeh<Dqr3FgGV>FLY#Mqi!9#?|JFb@`r9hM%-1>oB@N&0#D+I8O!USY zu{TzlVPfy|@a>HbagqJQVPoGR+g#(}4Ib^z#%@q5Vz-gqU^d(A7S~}nLV?+6GYFd$ zj}y@?AKSHWHXG(1>(2x2QPiD1OynWiz-t!bE3V$~UHoo~o=dQFWTh4>@imVnegqFE zZmdBDcIk#2mtCrNW!DJZoAg)-4Xy^N^2c5K01f+FYDyw8pK~|lSwH&C&Wi6xRoB+C}9F^6g?Ox0w;nm3}^Ql|`e{=zwJXg%5 zG$>@$yzJebkd?W49kTL_Qp}PtS#w)17GzDNhkk2N&`+UUyh>o+v}_9Vvn_F$n9<2` zI5YucQ&V_K*nE6mPR(FC?Q}Ue`Y94o%;m6xOz1l`4wK{KaCpq`tIH>K;YcC~IWhs` zhbLfS1b^^AauVqI2!o7X{UPlSX@8YIu2q^yh>dwS+snr2O8Sw7=@bg#hxDWP!IB_4 zefT{FLc0QZ9HKB@8{Iu5-D}U^h!m)igH9vQ;d$2pcBDr+$gZ#}(iFYH1ZFARt^pL^ zqs&tsc2txHRPUpW(b;g>KHqL@)7w6Gu|f7C3#T)wLP1Hh=WSqsJ=FM;M;>5<^K$06 ztSjjhd&X95Dzgb)EF5Cklr`16*KbioUG60B%i8QkDQpcqyaIPAFm^|EVR=yBGqK*C83p3 zN4x7t=SOnfjgGJ5;iZoZ`}_tPi8ow>7!5+GIjRwg$RKLmR8kG#;YFq45-1U`P!09l z^AQ*1)YdYM`Vbx>iU>_k!kg}d46+=+Loi}!$wKcv!s0P!U5lM3_9{L^v;EUqb^0B9 QiX7@PN8nF3`SG`Z1Ca|(NB{r; diff --git a/obsolete/lispusers/LISPNERD b/obsolete/lispusers/LISPNERD deleted file mode 100644 index b633b3ea..00000000 --- a/obsolete/lispusers/LISPNERD +++ /dev/null @@ -1,223 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") -(FILECREATED "30-Aug-2020 20:52:22"  -{DSK}kaplan>Local>medley3.5>lispcore>lispusers>LISPNERD.;2 10365 - - changes to%: (VARS LISPNERDCOMS LISPNERDDEPENDENCIES) - (PROPS (LISPNERD DEPENDENCIES)) - - previous date%: " 3-Aug-88 16:16:39" -{DSK}kaplan>Local>medley3.5>lispcore>lispusers>LISPNERD.;1) - - -(PRETTYCOMPRINT LISPNERDCOMS) - -(RPAQQ LISPNERDCOMS - ((COMS * LISPNERDDEPENDENCIES) - (* must come before any FILES) - (FILES ANALYZER DINFO HELPSYS DICTCLIENT) - (FNS LISPNERD.INIT IRMNERD.PRINTSEARCH) - (INITVARS IRMDICT IRMNERD.LASTSEARCH IRMNERD.LASTREQUEST (IRMNERD.MAXWORDS 50)) - (GLOBALVARS IRMDICT IRMNERD.LASTSEARCH IRMNERD.LASTREQUEST IRMNERD.MAXWORDS) - (FNS IRMDICT.PRINTENTRY) - (P (LISPNERD.INIT)))) - -(RPAQQ LISPNERDDEPENDENCIES - [(* * code to make sure that the right versions of everything are loaded. The P must be - executed before any FILES commands.) - [E (PUTPROP 'LISPNERD 'DEPENDENCIES (for FILE in (FILECOMSLST 'LISPNERD 'FILES) - collect - (CONS FILE (CAAR (GETPROP FILE 'FILEDATES] - (PROP DEPENDENCIES LISPNERD) - (P (for FILE FILEDATE in (GETPROP 'LISPNERD 'DEPENDENCIES) - do - [SETQ FILEDATE (CAAR (GETPROP (CAR FILE) - 'FILEDATES] - (COND ([AND FILEDATE (CDR FILE) - (ILESSP (IDATE FILEDATE) - (IDATE (CDR FILE] - (* clear FILEDATES to force FILESLOAD to reload the file.) - (PUTPROP (CAR FILE) - 'FILEDATES NIL]) - (* * code to make sure that the right versions of everything are loaded. The P must be executed -before any FILES commands.) - - -(PUTPROPS LISPNERD DEPENDENCIES ((ANALYZER . " 9-Mar-89 15:24:58") - (DINFO . " 1-Oct-87 10:11:04") - (HELPSYS . " 1-Oct-87 13:40:16") - (DICTCLIENT))) - -[for FILE FILEDATE in (GETPROP 'LISPNERD 'DEPENDENCIES) - do [SETQ FILEDATE (CAAR (GETPROP (CAR FILE) - 'FILEDATES] - (COND - ([AND FILEDATE (CDR FILE) - (ILESSP (IDATE FILEDATE) - (IDATE (CDR FILE] (* clear FILEDATES to force - FILESLOAD to reload the file.) - (PUTPROP (CAR FILE) - 'FILEDATES NIL] - - - -(* must come before any FILES) - - -(FILESLOAD ANALYZER DINFO HELPSYS DICTCLIENT) -(DEFINEQ - -(LISPNERD.INIT - [LAMBDA NIL (* jtm%: "18-Nov-87 14:36") - (COND - ((NULL IRMDICT) - [Dict.Establish (SETQ IRMDICT (create Dict - dictName _ 'IRMDict - printEntryFn _ (FUNCTION IRMDICT.PRINTENTRY] - (PUTASSOC 'Search% IRM '((IRMNERD.PRINTSEARCH) - - "Searches the Interlisp Reference Manual for entries given a list of keywords." - ) BackgroundMenuCommands) - (SETQ BackgroundMenu NIL]) - -(IRMNERD.PRINTSEARCH - [LAMBDA (SYNONYMCLASSES) (* jtm%: " 7-Apr-87 12:33") - (PROG (VENNDIAGRAM SELECTION MENUITEMS (MINWORD 0) - (MAXWORD IRMNERD.MAXWORDS)) - [COND - ((NULL SYNONYMCLASSES) - (CLRPROMPT) - (PROMPTPRINT (CHARACTER (CHARCODE CR))) - (SETQ SYNONYMCLASSES (PROMPTFORWORD "keywords to search on:" IRMNERD.LASTREQUEST NIL - PROMPTWINDOW NIL NIL (CHARCODE EOL ESCAPE LF))) - (COND - ((NULL SYNONYMCLASSES) - (PROMPTPRINT "Aborted") - (RETURN)) - (T (CLRPROMPT))) - (COND - ((NOT (STREQUAL SYNONYMCLASSES IRMNERD.LASTREQUEST)) - (SETQ IRMNERD.LASTREQUEST SYNONYMCLASSES) - (SETQ IRMNERD.LASTSEARCH NIL] - [do [SETQ VENNDIAGRAM (COND - ((AND IRMNERD.LASTSEARCH (EQ MINWORD 0)) - IRMNERD.LASTSEARCH) - (T (PROMPTPRINT " -Searching . . . ") - (DICTCLIENT.SEARCHFORWORD SYNONYMCLASSES 2 MINWORD MAXWORD - 'IRMNerd] - (COND - ((EQ MINWORD 0) (* cache the results in case the use - calls again.) - (SETQ IRMNERD.LASTSEARCH VENNDIAGRAM))) - [COND - ((NULL VENNDIAGRAM) - (PROMPTPRINT "Sorry, no results.") - (FLASHWINDOW PROMPTWINDOW) - (RETURN)) - ((NULL (CDR VENNDIAGRAM)) - (SETQ MENUITEMS (CADAR VENNDIAGRAM))) - (T (SETQ MENUITEMS (for SET in VENNDIAGRAM - collect (LIST [CONCATLIST (for ELEMENT - on (CAR SET) - collect (COND - ((CDR ELEMENT) - (CONCAT (CAR ELEMENT) - " ")) - (T (CAR ELEMENT] - (LIST 'QUOTE (CAR SET)) - NIL - (CONS 'SUBITEMS (CADR SET] - (CLRPROMPT) - (SETQ SELECTION (MENU (create MENU - TITLE _ "IRM Entries" - ITEMS _ MENUITEMS - CENTERFLG _ T))) - (COND - ((NULL SELECTION) - (PROMPTPRINT " -No selection made.") - (RETURN)) - ((LISTP SELECTION) - [for TAIL CLASSNAME on SELECTION - do (COND - ((EQ (NTHCHARCODE (CAR TAIL) - -1) - (CHARCODE +)) - (SETQ CLASSNAME (SUBSTRING (CAR TAIL) - 1 -2)) - (RPLACA TAIL (for CLASS in SYNONYMCLASSES - thereis (STREQUAL (CAR CLASS) - CLASSNAME] - (SETQ SYNONYMCLASSES SELECTION) - (PROMPTPRINT "Seaching for: " SYNONYMCLASSES) - (SETQ MINWORD 0) - (SETQ MAXWORD IRMNERD.MAXWORDS)) - ((AND (EQ 1 (STRPOS ". . .+" SELECTION)) - (STRPOS "more" SELECTION)) (* the user asked for the next chunk.) - (SETQ MINWORD (ADD1 MAXWORD)) - (SETQ MAXWORD (IPLUS MAXWORD IRMNERD.MAXWORDS))) - ((EQ 1 (STRPOS "No more" SELECTION)) - (RETURN)) - (T (PROMPTPRINT " -Fetching definition . . . ") - (IRMDICT.PRINTENTRY NIL SELECTION) - (CLRPROMPT) - (RETURN] - (RETURN T]) -) - -(RPAQ? IRMDICT NIL) - -(RPAQ? IRMNERD.LASTSEARCH NIL) - -(RPAQ? IRMNERD.LASTREQUEST NIL) - -(RPAQ? IRMNERD.MAXWORDS 50) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS IRMDICT IRMNERD.LASTSEARCH IRMNERD.LASTREQUEST IRMNERD.MAXWORDS) -) -(DEFINEQ - -(IRMDICT.PRINTENTRY - [LAMBDA (DICT LEMMA) (* ; "Edited 25-Jan-88 11:10 by jtm:") - - (LET (FIRSTCHAR SECTION# GRAPH NODE) - (SETQ FIRSTCHAR (NTHCHAR LEMMA 1)) - [COND - ((NUMBERP FIRSTCHAR) - [SETQ SECTION# (SUBSTRING LEMMA 1 (SUB1 (OR (STRPOS " " LEMMA) - 0] - [COND - ((EQ (NTHCHARCODE SECTION# -1) - (CHARCODE %.)) (* sometimes there is a trailing - period.) - (SETQ SECTION# (SUBSTRING SECTION# 1 -2] - [for I from 1 to (NCHARS SECTION#) do (COND - ((EQ (NTHCHARCODE SECTION# I) - (CHARCODE %.)) - (* DINFO uses dashes instead of - periods) - (RPLCHARCODE SECTION# I (CHARCODE -] - (SETQ SECTION# (MKATOM SECTION#)) - (SETQ GRAPH (GETWINDOWUSERPROP DINFOW 'CURRENT.GRAPH)) - [COND - ((NULL GRAPH) - (DINFO.INIT) - (SETQ GRAPH (GETWINDOWUSERPROP DINFOW 'CURRENT.GRAPH] - (SETQ NODE (FASSOC SECTION# (fetch (DINFOGRAPH NODELST) of GRAPH))) - (AND NODE (DINFO.UPDATE NODE))) - (T (IRM.SMART.LOOKUP (SUBSTRING LEMMA (COND - ((EQ FIRSTCHAR '%() - 2) - (T 1)) - (SUB1 (OR (STRPOS " " LEMMA) - 0] - T]) -) - -(LISPNERD.INIT) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (2864 8085 (LISPNERD.INIT 2874 . 3521) (IRMNERD.PRINTSEARCH 3523 . 8083)) (8332 10321 ( -IRMDICT.PRINTENTRY 8342 . 10319))))) -STOP diff --git a/obsolete/lispusers/LISPNERD.TEDIT b/obsolete/lispusers/LISPNERD.TEDIT deleted file mode 100644 index a0c733babbfcb071b62c89e90854d8bbeba9a571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5071 zcmeHK&u<%f75_TzwhpaVO#ne*RbIRWY)Gvn&8F!hP@Q-Z4|VLUW7F=!WnzDA4;{~# z`B68VS}D?|6rZ=ccx1E{GWacxO*-R$k;2oT$tyhWGjB7(_S(J-j z3IijbDe23N<%+IV8`D(Mt1GpPUTtXgYO%sE^;)U9+|X;)Ors|$HcA86xoWnhM+Wt! z9h})TJlQ7G_NCh~T9SN+eCX@Uuz-!~vLjt-L$qetfngPh*kIf64eB_q(oU?K9(lgw z!lGjTP^9a@2jQ(`0-X?eo3~Bz?0;3s3l$BFm1BT zmb5+7?vl}Ur37-{qoJgpaaGdL^m|lxf^N@u>@#a-$1?5dCwnKa=L8m`v$kkc65OEOws!h)g0ayGZmyy;R~c1+vk zRPiV`kZ#Wy;DGsHyZ&?yosgf=ws zA%z*nSd#NaC_2(daGBe7S^;O7!H}Xn$4=B)1S%0ry4`UKnH78j@|w{{`Y42auKw15 z!NH+D2z<)6U1Nw829!=%>B=zp9mld9M7XPt@zu;YE|C&^1>##G^{@E) zBfmTlxc&3quOEKpuS`btM{hs+yY_>>CG@?wAD*|q?_oR|99SA`uC4^>7PIR zviw6Urtyp~JT zZ(rEC4}Hkfu>9%K(uFt6tC>?%p?~;EE|!m82h+rA3crGyQna!k(ku?+CsH52pPl;Z zz3bRtneC6AeJwlnwbK{yc307pM?YUY{q^4@^2w8+Pm6f{*xW?=#%b0M?WaC`ap%VA zm#;&9Fg~otmFDknrkkCJ{Ab#)Mw%yAoF0gxGM^j(S8gV+;a! z;CKigV(B@qatBj=pg`s31~~A5gzK?sd%l5*B^&~xBAioIm~UP_r;0J(y!>uWCNvyC zu^i`$^7>e;b|axmdX{SSu(*41EcSG=LNdyQ^M>j!*uX0@6ej{AYmjgD0o8Nx+m}pu zyUoFq5(AUc---`k<&47O8Cw{*cvX+1Z<$vlWedbV-=x`@v#L#kLCYARuCNLe(bRdO zc&;{R%WM7!URWwxo-<8IZ8aD?wHZg7J`eZ)GB(7$9T#W>%}E~IZqpnV!fePS6S(0n$1&ghGuACc8<=Sp92-H372DN zEmmr^iyM@CtywJ5GX5{n>RKsJ%jIG{l58~Bwfe?#U0-j&(1!kohBTp-;+kH0oz`k4 z{P#e$?`idlUe&0!vH}Ek{i0TDHWbyYLSt7}sjX{N*H)XAVx2B&`f9mBYg$QfuH|W^ zR$nUu`^a_xc=p^pon4^0#YH^w3>?g|R>Z$AtKl{xqVYPLZdR)hFbisn^K@>0p62nl zySAZSZm5MSgitxZK=ZFG(8A12Xg-gXNsN`!|4Ik}d~R`$=5g3_BRl?ow4Ru7|D9;% z^XhAULA)TQ`7L!{OAGcB z0$z0;f^I5xKN^6=G5%trL=(qGKEqJ^vHM|hRD4bx2@8n$Od@|S-k5mC+T)?UJ$f9u z@R}5dE49^{_+rdZ&oP{cP=A1iy)l#5V5G-z$2Z(rWel=o<$ANC6;`#zN;UOFFp-5Y zK4XF-`=4FNkQH{u%+8tdGzhyvi?GKFpN0Lvg}nJMvGXvm*trms%!uR33R diff --git a/obsolete/lispusers/LOADIRIS b/obsolete/lispusers/LOADIRIS deleted file mode 100644 index 72a4f502..00000000 --- a/obsolete/lispusers/LOADIRIS +++ /dev/null @@ -1,246 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "10-May-88 00:44:06" {ERINYES}MEDLEY>LOADIRIS.;1 15990 - - previous date%: " 4-Feb-87 20:09:38" {ERINYES}LYRIC>LOADIRIS.;1) - - -(* " -Copyright (c) 1985, 1986, 1987, 1988 by Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT LOADIRISCOMS) - -(RPAQQ LOADIRISCOMS ((FILES FREEMENU) - (FNS LI.CIRCLES LI.LOAD LI.MAKEMENU LI.SETUP IRIS.CREATE.ICON IRIS.DOMENU - IRIS.TRY LOADIRIS INSTALLIRIS LI.TRAVEL) - (VARS (IRIS.DIRECTORY '{ERIS}NEXT>) - IRIS.MENU.COMMANDS IRISFILES LI.SETUP.ALL LI.SETUP.CLEAR - LI.SETUP.DEBUG LI.SETUP.STANDARD LI.SHADE LOCATED.IRISFILES - LOCATED.IRISPATCHFILE (LI.MENU)) - (BITMAPS LI.DOIT LI.IRISLOGO IRIS.ICON IRIS.ICON.MASK) - (P (IRIS.CREATE.ICON) - (printout T - "Boot the IRIS, then choose 'create IRISview Panel' from the IRIS icon menu." - T)))) -(FILESLOAD FREEMENU) -(DEFINEQ - -(LI.CIRCLES - [LAMBDA (X) (* gbn " 5-Aug-85 15:25") - (for F to (OR X 100) do (IRIS.COLOR (RAND 0 7)) - (IRIS.CIRCF (RAND 0 1000) - (RAND 0 800) - (RAND 50 200))) - (IRIS.GFLUSH]) - -(LI.LOAD - [LAMBDA (item window button) (* ; "Edited 9-Jan-87 15:28 by gbn") - (printout PROMPTWINDOW T "[Loading Iris Files]") - (RESETLST [RESETSAVE (BITBLT NIL NIL NIL window NIL NIL NIL NIL 'TEXTURE 'INVERT LI.SHADE) - `(BITBLT NIL NIL NIL ,window NIL NIL NIL NIL TEXTURE INVERT ,LI.SHADE] - (* (QUOTE LIST) (QUOTE REDISPLAYW) - window) - (* ;; "This cruft seems to count on the fact that the only the buttons that are selected are in fm.getstate. (so the list looks like (file1 t file2 t), and not (file1 t file2 nil file3 t))") - - (FOR FILENAME IN (FM.GETSTATE WINDOW) WHEN (NEQ FILENAME T) - DO (SETQ FILENAME (PACKFILENAME 'DIRECTORY IRIS.DIRECTORY 'BODY FILENAME)) - (IF (FILENAMEFIELD FILENAME 'EXTENSION) - THEN (LOAD FILENAME) - ELSE (LOAD FILENAME 'PROP]) - -(LI.MAKEMENU - [LAMBDA NIL (* ; "Edited 9-Jan-87 15:30 by gbn") - (if (WINDOWP LI.MENU) - then (CLOSEW LI.MENU)) - (SETQ LI.MENU - (FREEMENU `(((LABEL Setup%: TYPE DISPLAY FONT (HELVETICA 10 BOLD)) - (LABEL CLEAR TYPE MOMENTARY SELECTEDFN LI.SETUP) - (LABEL Standard TYPE MOMENTARY SELECTEDFN LI.SETUP) - (LABEL Debug TYPE MOMENTARY SELECTEDFN LI.SETUP) - (LABEL ALL TYPE MOMENTARY SELECTEDFN LI.SETUP)) - ,@[LET* ([strLength (ADD1 (APPLY (FUNCTION MAX) - (MAPCAR IRISFILES (FUNCTION NCHARS] - (spaces (ALLOCSTRING strLength " "))) - (MAPCAR IRISFILES (FUNCTION (LAMBDA (FILENAME) - `((LABEL ,(SUBSTRING (CONCAT FILENAME ":" - spaces) - 1 strLength) TYPE DISPLAY - FONT (GACHA 8 BOLD)) - (LABEL ,COMPILE.EXT ID - ,(PACKFILENAME 'NAME FILENAME - 'EXTENSION COMPILE.EXT) TYPE - TOGGLE FONT (GACHA 8 STANDARD)) - (LABEL Source ID ,FILENAME TYPE TOGGLE FONT - (GACHA 8 STANDARD] - ((LABEL "Load --" TYPE DISPLAY FONT (HELVETICA 12 BOLD)) - (LABEL ,LI.IRISLOGO TYPE MOMENTARY SELECTEDFN LI.LOAD MESSAGE - "Loads the selected Iris files"))) "Iris Loadup Panel")) - (for setup in LI.SETUP.STANDARD when (CDR setup) - do (FM.CHANGESTATE (FM.GETITEM (CAR setup) - NIL LI.MENU) - (CDR setup) - LI.MENU)) - (printout PROMPTWINDOW T "Please put the LoadIris menu somewhere") - (MOVEW LI.MENU LASTMOUSEX LASTMOUSEY) - (MOVEW LI.MENU) - LI.MENU]) - -(LI.SETUP - [LAMBDA (ITEM WINDOW BUTTON) (* ; "Edited 24-Dec-86 14:29 by gbn") - (FOR SETUP IN [EVALV (PACK* 'LI.SETUP. (U-CASE (FM.ITEMPROP ITEM 'LABEL] - DO (* ; "THIS IS RIDICULOUS...") - (IF (EQ (FM.CHANGESTATE (FM.GETITEM (CAR SETUP) - NIL WINDOW) - (CDR SETUP) - WINDOW) - (CDR SETUP)) - THEN (FM.CHANGESTATE (FM.GETITEM (CAR SETUP) - NIL WINDOW) - (CDR SETUP) - WINDOW]) - -(IRIS.CREATE.ICON - [LAMBDA (position) (* ; "Edited 2-Feb-87 23:34 by gbn") - (if (NOT position) - then (printout PROMPTWINDOW T "Please position the Iris icon somewhere")) - (LET ((window (ICONW IRIS.ICON IRIS.ICON.MASK position))) - (WINDOWPROP window 'SHRINKFN 'DON'T) - (WINDOWPROP window 'BUTTONEVENTFN 'IRIS.DOMENU]) - -(IRIS.DOMENU - [LAMBDA (window) (* LeL, " 9-Sep-85 01:36") - (if (NOT (WINDOWPROP window 'MENU)) - then (WINDOWPROP window 'MENU (create MENU - ITEMS _ IRIS.MENU.COMMANDS))) - (MENU (WINDOWPROP window 'MENU]) - -(IRIS.TRY - [LAMBDA NIL (* LeL, " 4-Sep-85 15:42") - (* opens a connection and runs two - dumb demos) - (OPEN.IRISCONN) (* this defaults to the value of - IRISNSHOSTNUMBER) - (IRIS.GINIT) - (* must be executed before the iris is ready to accept graphic commands) - (for I to 5 do (LI.CIRCLES) - (LI.TRAVEL]) - -(LOADIRIS - [LAMBDA (options) (* LeL, " 3-Sep-85 11:55") - (* * loads the files necessary to open a connection to the iris and use the - graphics library) - [if (FMEMB %'DCOMS options) - then (MAPC LOCATED.IRISFILES (FUNCTION (LAMBDA (file) - (LOAD? (PACK* file %'.DCOM] - [if (FMEMB %'SOURCES options) - then (MAPC LOCATED.IRISFILES (FUNCTION (LAMBDA (file) - (LOAD? file %'PROP] - (if (FMEMB %'PATCHES options) - then (LOAD LOCATED.IRISPATCHFILE]) - -(INSTALLIRIS - [LAMBDA (NODCOMS NOSOURCES) (* BDV "19-Jul-85 19:08") - (* * moves the iris files from my working dir to {eris}current>) - (COPYFILES IRISFILES %'{ERIS}CURRENT>) - (COPYFILES (for F in IRISFILES collect (PACK* F ".DCOM")) - %'{ERIS}CURRENT>) - (COPYFILES %'IRISIO.DCOM %'{ERIS}CURRENT>]) - -(LI.TRAVEL - [LAMBDA (COLOR) (* gbn " 5-Aug-85 21:33") - (* dumb demo to try double buffering) - (IRIS.DOUBLEBUFFER) - (IRIS.GCONFIG) - (if (NOT COLOR) - then (SETQ COLOR (RAND 0 6))) - (for I from 5 to 1000 by 10 do (IRIS.COLOR 8) - (IRIS.CLEAR) - (IRIS.COLOR COLOR) - (IRIS.CIRCF I (IQUOTIENT I 2) - (IQUOTIENT I 5)) - (IRIS.SWAPBUFFERS)) - (IRIS.GFLUSH) - (IRIS.SINGLEBUFFER) - (IRIS.GCONFIG]) -) - -(RPAQQ IRIS.DIRECTORY {ERIS}NEXT>) - -(RPAQQ IRIS.MENU.COMMANDS (("Clear IRIS" (CLEARIRIS)) - ("Open IRIS stream" (if (MOUSECONFIRM - "New stream? (lose fonts, etc.) Left to confirm" - ) - then - (SETQ IRISCONN) - (OPENIRISSTREAM))) - ("Create IRISview panel" (IV.INIT)) - ("Enable bootserver" (if (GETD 'IRISBOOTSERVER) - then - (IRISBOOTSERVER T) - else - (PROMPTPRINT - "IRISNET must be loaded to use the boot server" - )) - "Allows the Lisp Machine to boot the IRIS") - ("Disable bootserver" (if (GETD 'IRISBOOTSERVER) - then - (IRISBOOTSERVER NIL) - else - (PROMPTPRINT - "IRISNET must be loaded to use the boot server" - )) - "Prevents the Lisp Machine from booting the IRIS"))) - -(RPAQQ IRISFILES (IRISSTREAM IRISNET IRISVIEW)) - -(RPAQQ LI.SETUP.ALL ((IRISSTREAM . T) - (IRISSTREAM.LCOM . T) - (IRISNET . T) - (IRISNET.LCOM . T) - (IRISVIEW.LCOM T) - (IRISVIEW T))) - -(RPAQQ LI.SETUP.CLEAR ((IRISSTREAM) - (IRISSTREAM.LCOM) - (IRISNET) - (IRISNET.LCOM) - (IRISVIEW) - (IRISVIEW.LCOM))) - -(RPAQQ LI.SETUP.DEBUG ((IRISSTREAM . T) - (IRISSTREAM.LCOM . T) - (IRISVIEW . T) - (IRISVIEW.LCOM . T) - (IRISNET.LCOM . T))) - -(RPAQQ LI.SETUP.STANDARD ((IRISSTREAM.LCOM . T) - (IRISNET.LCOM . T) - (IRISVIEW.LCOM . T))) - -(RPAQQ LI.SHADE 18432) - -(RPAQQ LOCATED.IRISFILES ({QV}IRIS>GL2>IRISLIB {ERIS}IRISSTREAM {ERIS}IRISNET - {QV}IRIS>GL2>IRISIO {ERIS}IRISDIGDEMO)) - -(RPAQQ LOCATED.IRISPATCHFILE {QV}IRIS>GL2>IRISPATCH) - -(RPAQQ LI.MENU NIL) - -(RPAQQ LI.DOIT #*(20 12)@@@@@@@@GOOOL@@@D@@@D@@@EHIGD@@@EEEBD@@@EEEBD@@@EEEBD@@@EHIBD@@@D@@@D@@@GOOOL@@@@@@@@@@@@@@@@@@@ -) - -(RPAQQ LI.IRISLOGO #*(16 16)@NG@CJELFBDFCHAL@NG@NCLGKHAMHNGAHBDAKJEMNBDGHJEACJELFBDFCJEL@NG@) - -(RPAQQ IRIS.ICON #*(75 82)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N@N@@@@@@@@@@@@@@@@COAOH@@@@@@@@@@@@@@@OOAON@@@@@@@@@@@@@@COOAOOH@@@@@@@@@@@@@OOOAOON@@@@@@@@@@@@COOOAOOOH@@@@@@@@@@@OOLOANGON@@@@@@@@@@COO@OANAOOH@@@@@@@@@OOL@OAN@GON@@@@@@@@COO@@OAN@AOOH@@@@@@@OOL@@OAN@@GON@@@@@@COO@@@OAN@@AOOH@@@@@OOL@@@OAN@@@GON@@@@COO@@@@OAN@@@AOOH@@@OOL@@@@OAN@@@@GON@@AOO@@@@@OAN@@@@AOO@@COL@@@@@OAN@@@@@GOH@COH@@@@@OAN@@@@@COH@CON@@@@@OAN@@@@@OOH@AOOH@@@@OAN@@@@COO@@@OON@@@@OAN@@@@OON@@@COOH@@@OAN@@@COOH@@@@OON@@@OAN@@@OON@@@A@COOH@@OAN@@COOHA@@CL@OON@@OAN@@OON@GH@CO@COOH@OAN@COOHAOH@COL@OON@OAN@OON@GOH@COO@COOHOANCOOHAOOH@COOL@OONCAHOON@GOOH@COOO@COOH@COOHAOOOH@CLOOL@OON@OON@GONGH@CLCOO@COOKOOHAOOHGH@CL@OOL@OOOON@GON@GH@CL@COO@COOOHAOOH@GH@CL@@OOL@OON@GON@@GH@CL@@COO@COHAOOH@@GH@CL@@@OOL@N@GON@@@GH@CL@@@COO@@AOOH@@@GH@CL@@@@OOL@GON@@@@GH@CL@@@@CON@OOH@@@@GH@CL@@@@@OOAON@@@@@GH@CL@@@@BCOAOHH@@@@GH@CL@@@@OHOANCN@@@@GH@CL@@@COLOANGOH@@@GH@CL@@@OOLOANGON@@@GH@CL@@COO@OANAOOH@@GH@CL@@OOL@OAN@GON@@GH@CL@COO@BOANHAOOH@GH@CL@OOL@NOANN@GON@GH@CLCOO@CNOANOHAOOHGH@CLOOL@ONOANON@GONGH@COOO@CONOANOOHAOOOH@COOL@OOLOANGON@GOOH@COO@COO@OANAOOHAOOH@COL@OOL@OAN@GON@GOH@CO@COO@@OAN@AOOHAOH@CL@OOL@@OAN@@GON@GH@A@COO@@@OAN@@AOOHA@@@@OOL@@@OAN@@@GON@@@@COO@@@@OAN@@@AOOH@@@GOL@@@@OAN@@@@GOL@@@OO@@@@@OAN@@@@AON@@@OL@@@@@OAN@@@@@GN@@@OO@@@@@OAN@@@@AON@@@OOL@@@@OAN@@@@GOL@@@COO@@@@OAN@@@AOOH@@@@OOL@@@OAN@@@GON@@@@@COO@@@OAN@@AOOH@@@@@@OOL@@OAN@@GON@@@@@@@COO@@OAN@AOOH@@@@@@@@OOL@OAN@GON@@@@@@@@@COO@OANAOOH@@@@@@@@@@OOLOANGON@@@@@@@@@@@COOOAOOOH@@@@@@@@@@@@OOOAOON@@@@@@@@@@@@@COOAOOH@@@@@@@@@@@@@@OOAON@@@@@@@@@@@@@@@CN@OH@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -) - -(RPAQQ IRIS.ICON.MASK #*(75 82)@@@@@@@COKOH@@@@@@@@@@@@@@@OOOON@@@@@@@@@@@@@@COOOOOH@@@@@@@@@@@@@OOOOOON@@@@@@@@@@@@COOOOOOOH@@@@@@@@@@@OOOOOOOON@@@@@@@@@@COOOOOOOOOH@@@@@@@@@OOOOOOOOOON@@@@@@@@COOOOOOOOOOOH@@@@@@@OOOOOOOOOOOON@@@@@@COOOOOOOOOOOOOH@@@@@OOOOOOOOOOOOOON@@@@COOOOOCOOOIOOOOOH@@@OOOOOLCOOOHGOOOON@@COOOOO@COOOHAOOOOOH@GOOOOL@COOOH@GOOOOL@OOOOO@@COOOH@AOOOON@OOOOL@@COOOH@@GOOON@OOOO@@@COOOH@@AOOON@OOON@@@COOOH@@@GOON@OOOOH@@COOOH@@AOOON@OOOON@@COOOH@@GOOON@OOOOOH@COOOH@AOOOON@GOOOON@COOOH@OOOOOL@OOOOOOHCOOOHCOOOOON@OOOOOONCOOOHOOOOOON@OOOOOOOKOOOKOOOOOON@OOOOOOOOOOOOOOOOOON@OOOOOOOOOOOOOOOOOON@OOOOOOOOOOOOOOOOOON@OOOOOOOOOOOOOOOOOON@OOOOOOOOOOOOOOOOOON@OOOOOOOOOOOOOOOOOON@OOOOOOOOOOOOOOOOOON@OOOOOOOOOOOOOOOOOON@OOOOOOOOOOOOOOOOOON@OOCOOOOOOOOOOOOOION@OO@OOOOOOOOOOOONAON@OO@COOOOOOOOOOOHAON@OO@@OOOOOOOOOON@AON@OO@@COOOOOOOOOH@AON@OO@@@OOOOOOOON@@AON@OO@@@COOOOOOOH@@AON@OO@@@OOOOOOOON@@AON@OO@@COOOOOOOOOH@AON@OO@@OOOOOOOOOON@AON@OO@COOOOOOOOOOOHAON@OO@OOOOOOOOOOOONAON@OOCOOOOOOOOOOOOOION@OOOOOOOOOOOOOOOOOON@OOOOOOOOOOOOOOOOOON@OOOOOOOOOOOOOOOOOON@OOOOOOOOOOOOOOOOOON@OOOOOOOOOOOOOOOOOON@OOOOOOOOOOOOOOOOOON@OOOOOOOOOOOOOOOOOON@OOOOOOOOOOOOOOOOOON@OOOOOOOOOOOOOOOOOON@OOOOOOOCOOOIOOOOOON@OOOOOOLCOOOHGOOOOON@OOOOOO@COOOHAOOOOON@GOOOOL@COOOH@GOOOOL@COOOO@@COOOH@AOOOOH@COOOL@@COOOH@@GOOOH@COOO@@@COOOH@@AOOOH@COOOL@@COOOH@@GOOOH@COOOO@@COOOH@AOOOOH@COOOOL@COOOH@GOOOOH@AOOOOO@COOOHAOOOOO@@@OOOOOLCOOOHGOOOON@@@COOOOOCOOOIOOOOOH@@@@OOOOOOOOOOOOOON@@@@@COOOOOOOOOOOOOH@@@@@@OOOOOOOOOOOON@@@@@@@COOOOOOOOOOOH@@@@@@@@OOOOOOOOOON@@@@@@@@@COOOOOOOOOH@@@@@@@@@@OOOOOOOON@@@@@@@@@@@COOOOOOOH@@@@@@@@@@@@OOOOOON@@@@@@@@@@@@@COOOOOH@@@@@@@@@@@@@@OOKON@@@@@@@@ -) -(IRIS.CREATE.ICON) -(printout T "Boot the IRIS, then choose 'create IRISview Panel' from the IRIS icon menu." T) -(PUTPROPS LOADIRIS COPYRIGHT ("Xerox Corporation" 1985 1986 1987 1988)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (1223 9129 (LI.CIRCLES 1233 . 1608) (LI.LOAD 1610 . 2687) (LI.MAKEMENU 2689 . 5066) ( -LI.SETUP 5068 . 5825) (IRIS.CREATE.ICON 5827 . 6230) (IRIS.DOMENU 6232 . 6559) (IRIS.TRY 6561 . 7221) -(LOADIRIS 7223 . 7894) (INSTALLIRIS 7896 . 8300) (LI.TRAVEL 8302 . 9127))))) -STOP diff --git a/obsolete/lispusers/LUPINE b/obsolete/lispusers/LUPINE deleted file mode 100644 index 866cb921..00000000 --- a/obsolete/lispusers/LUPINE +++ /dev/null @@ -1,1485 +0,0 @@ -(FILECREATED "30-Jun-86 16:38:25" {PHYLUM}RPC>LUPINE.;1 57734 - - changes to: (FNS \MakeUnmarshalRecord) - - previous date: " 1-Aug-85 12:16:27" {PHYLUM}KOTO>LISPUSERS>LUPINE.;1) - - -(* Copyright (c) 1984, 1985, 1986 by Xerox Corporation. All rights reserved.) - -(PRETTYCOMPRINT LUPINECOMS) - -(RPAQQ LUPINECOMS [(DECLARE: DONTCOPY (RECORDS ArgSpec Fragment FunctionSpec FieldSpec LupineType - RecordLayout TypeSpec)) - (* Basic stub construction) - (FNS Lupine \ServerComs \MakeUnmarshal \MakeUnmarshal1 \MakeUnmarshalRecord - \FixedFetch \MakeArgsUnmarshal \ClientComs \MakeMarshal \MakeMarshal1 - \MakeMarshalRecord \FixedStore \MakeArgsMarshal) - (* Checking of declarations) - (FNS \CheckSpec \CheckType \CheckType1 \CheckRecordDecl) - (* Type table construction) - (FNS \DeclareTypes \Allocate \AllocateRecord) - (* Utilities) - (FNS \TypeName \BaseType \TypeLayout \TypeSize \LupineNotFixed \StaticsFirst - \IsStatic) - (VARS \LupineGetFns \LupinePutFns \LupinePrimativeTypes \LupineInitialTypeTable - \LupineNumberTypes \LupineNotFixedTypes \LupineDummyTypes \LupineStatics - \LupineTypesWithParm) - (GLOBALVARS \LupineGetFns \LupinePutFns \LupineStatics \LupineTypesWithParm - \LupinePrimativeTypes \LupineDummyTypes \LupineNotFixedTypes - \LupineNumberTypes \LupineInitialTypeTable) - (DECLARE: DONTCOPY (CONSTANTS (\FirstLupineUserCall 4) - (\FirstLupineSignal 4]) -(DECLARE: DONTCOPY -[DECLARE: EVAL@COMPILE - -(RECORD ArgSpec (argName argType)) - -(RECORD Fragment (fixed . notFixed)) - -(RECORD FunctionSpec (fn . specs)) - -(RECORD FieldSpec (fieldName fieldType)) - -(RECORD LupineType (typeName . typeParm)) - -(RECORD RecordLayout (need . fields)) - -(RECORD TypeSpec (type typeType definedStubs typeSize . typeBits)) -] -) - - - -(* Basic stub construction) - -(DEFINEQ - -(Lupine - [LAMBDA (packageName functionSpecList signalSpecList typeList lupineTypeString noServer noClient) - (* ht: "31-Jul-85 11:47") - (if (NOT (LITATOM packageName)) - then (ERROR "package name must be an atom" packageName)) - (if (AND functionSpecList (NLISTP functionSpecList)) - then (ERROR "function spec must be a list" functionSpecList)) - (if (AND signalSpecList (NLISTP signalSpecList)) - then (ERROR "signal spec must be a list" signalSpecList)) - (if (AND typeList (NLISTP typeList)) - then (ERROR "type declarations must be a list" typeList)) - (if (NOT lupineTypeString) - then (printout T "type string defaulted to " [lupineTypeString_(MKSTRING - (PACK (LIST packageName (GDATE) - (ETHERHOSTNUMBER] - T)) - (if (NOT (STRINGP lupineTypeString)) - then lupineTypeString_(MKSTRING lupineTypeString)) - (RESETLST (RESETSAVE DFNFLG T) - (LET ((typeTable (\DeclareTypes typeList)) - sName cName) - (for s in functionSpecList do (\CheckSpec s typeTable)) - (for s in signalSpecList do (\CheckSpec s typeTable T)) - [if (NOT noServer) - then (SET sName_(PACK (LIST (U-CASE packageName) - 'SERVERCOMS)) - (\ServerComs packageName functionSpecList signalSpecList typeTable - lupineTypeString)) - (ADDFILE (PACK (LIST (U-CASE packageName) - 'SERVER] - [if (NOT noClient) - then (SET cName_(PACK (LIST (U-CASE packageName) - 'CLIENTCOMS)) - (\ClientComs packageName functionSpecList signalSpecList typeTable - lupineTypeString)) - (ADDFILE (PACK (LIST (U-CASE packageName) - 'CLIENT] - (CONS sName cName]) - -(\ServerComs - [LAMBDA ($packageName$ functionSpecList signalSpecList typeTable lupineTypeString) - (* ht: " 1-Aug-85 12:13") - (DECLARE (SPECVARS $packageName$)) - (LET ($fns$ dfn iName selTerms $rNames$ catchTerms labelTerms movds hideFn loads) - (DECLARE (SPECVARS $fns$ $rNames$)) - - (* * the NCONC is because some stuff gets pushed onto $fns$ underneath here) - - - $fns$_(NCONC (bind (i _ \FirstLupineUserCall) - argNames nameMap rec rfl fn argSets end result for spec in functionSpecList - unless (spec:fn= '*) - collect [fn_(PACK (LIST spec:fn 'ServerStub] - [argNames_(for aSpec in spec:specs as i from 1 - until (if (U-CASE aSpec:argName)= 'RETURNS - then result_aSpec) - collect (CDAR (push nameMap (CONS aSpec:argName - (PACK* 'l..arg - i] - [argSets_(for aSpec in (\StaticsFirst spec:specs typeTable) - collect (LIST 'SETQ - (CDR (ASSOC aSpec:argName nameMap)) - (\MakeUnmarshal aSpec:argType spec:fn - aSpec:argName typeTable] - (end_(if result - then (\MakeArgsMarshal result:argType fn 'RESULT - 'l..result - typeTable))) - [APPLY* (FUNCTION DEFINEQ) - (BQUOTE (, fn (l..cPup l..conv) - (* Lupine generated stub) - (DECLARE (SPECVARS l..cPup l..conv)) - (PROG (l..result ,. argNames) - ,. - argSets - (SETQ l..result (, (fetch fn of spec) - ,. argNames)) - (\StartReturn l..cPup) - ,. - end (RETURN l..cPup] - [selTerms_(NCONC1 selTerms (BQUOTE (, i (, fn l..pup l..conv] - (push movds (CONS spec:fn (CONS (PACK* 'Hidden. - spec:fn) - fn))) - (add i 1) - fn) - $fns$) - dfn_(PACK (LIST $packageName$ 'ServerDispatch)) - (if signalSpecList - then (bind (j _ \FirstLupineSignal) - cName specs resultSpec margs umres for sSpec in signalSpecList - unless (sSpec:fn= '*) - do (specs_sSpec:specs) - (margs_(if (U-CASE specs:1:argName)= 'ARGS - then (\MakeArgsMarshal (pop specs):argType sSpec:fn 'SIGARGS - 'arg - typeTable))) - (if (U-CASE specs:1:argName)= 'RETURNS - then umres_(\MakeArgsUnmarshal specs:1:argType sSpec:fn 'RESULT - typeTable)) - [push $fns$ (CAR (APPLY* (FUNCTION DEFINEQ) - (BQUOTE (, [SETQ cName - (PACK (LIST 'Catch - (fetch fn of sSpec] - (arg l..conv) - (* Lupine generated signal catcher) - (DECLARE (USEDFREE l..cPup)) - (\StartSignal l..cPup) - (\AddPupWord l..cPup , j) - ., margs (SETQ l..cPup - (\Call l..cPup NIL l..conv)) - , umres] - [catchTerms_(NCONC catchTerms (APPEND (BQUOTE (, (fetch fn of sSpec)=> - (sresume (, cName arg l..conv] - (add j 1))) - - (* * the (, (QUOTE enable)) is to keep the form from being prettyprinted) - - - [APPLY* (FUNCTION DEFINEQ) - (BQUOTE (, dfn (l..pup request l..conv) (* Lupine generated dispatcher) - (, 'enable - ., catchTerms (SELECTQ request ., selTerms (SHOULDNT)) - ., labelTerms] - (push $fns$ dfn) - iName_(PACK (LIST $packageName$ 'ServerInterface)) - (if (NOT (BOUNDP iName)) - then (SET iName NIL)) - [push $fns$ (CAR (APPLY* (FUNCTION DEFINEQ) - (BQUOTE (, (PACK (LIST 'Unexport - $packageName$)) - NIL (* Lupine generated interface) - [UnexportInterface (OR , iName (ERROR "not exported" - (QUOTE , - $packageName$] - (SETQ , iName NIL] - [push $fns$ (CAR (APPLY* (FUNCTION DEFINEQ) - (BQUOTE (, (PACK (LIST 'Export - $packageName$)) - (type instance version user password) - (* Lupine generated interface) - (if , iName - then (ERROR "Already exported" (QUOTE , $packageName$))) - (SETQ , iName (ExportInterface user password - (OR type , lupineTypeString) - instance version - (FUNCTION , dfn] - [push $fns$ (CAR (APPLY* (FUNCTION DEFINEQ) - (BQUOTE (, [SETQ hideFn (PACK (LIST 'Hide - $packageName$ - 'ServerMovds] - NIL (* Lupine generated utility) - (for p in (QUOTE , movds) - do (PUTD (CADR p) - (GETD (CAR p))) - (PUTD (CAR p)) - (CHANGENAME (CDDR p) - (CAR p) - (CADR p] - [LET [(files (NCONC1 (bind wh res for r in $rNames$ - when (if wh_(WHEREIS r 'RECORDS) - else (printout T T "Note - the record " r - " is not on any known file" - T)) - do (pushnew res wh:1) finally (RETURN res)) - 'SIGNAL] - loads_(LIST (BQUOTE (DECLARE: DONTCOPY EVAL@COMPILE EVAL@LOAD (FILES (LOADCOMP) - ., files] - (BQUOTE ( (* Created by Lupine , (GDATE)) - (FNS ,. $fns$) - (VARS (, iName)) - (GLOBALVARS , iName) - ., loads (DECLARE: EVAL@LOAD DONTEVAL@COMPILE DOCOPY (FILES (SYSLOAD) - RPC)) - (P (COND - ((EQ 'Y - (ASKUSER 15 'N - "Hide server fns (must have been already loaded)? ")) - (, hideFn]) - -(\MakeUnmarshal - [LAMBDA (type fn name typeTable pupName) (* ht: " 1-Aug-85 08:57") - (if type - then (if (NOT pupName) - then pupName_ 'l..cPup) - (LET (fragment) - fragment_(\MakeUnmarshal1 type fn name typeTable 0 16 pupName) - (if NOT (fragment:notFixed) - then fragment:fixed - else (BQUOTE (LET ((l..datum , (fetch fixed of fragment))) - ., - (fetch notFixed of fragment) - l..datum]) - -(\MakeUnmarshal1 - [LAMBDA (type fn name typeTable whereAreWe size pupName) (* ht: " 1-Aug-85 09:09") - (LET ((typeName (\TypeName type)) - (typeParm (if (LISTP type) - then type:typeParm)) - afn typeSpec) - (SELECTQ typeName - ((RECORD SEQRECORD) - (SHOULDNT)) - [LIST (create Fragment - fixed _(BQUOTE (PROGN (SETQ , pupName (\CheckPupExhausted , pupName 2)) - (for l..i from 1 to (\GetArgDblWord , pupName - l..conv) - collect , (\MakeUnmarshal (CAR typeParm) - fn name typeTable - pupName] - [REF (* no-op except for SEQRECORDs) - (LET ((trueType (\BaseType typeParm:1 typeTable)) - typeSpec) - (if (AND (LISTP trueType) - trueType:typeName= - 'SEQRECORD) - then - - (* * have to back up one) - - - (\MakeUnmarshalRecord (OR typeSpec_(for tte in typeTable thereis - - tte:typeType=trueType) - (SHOULDNT)) - fn name typeTable whereAreWe - (if size=16 - then typeSpec:typeSize - else (SHOULDNT)) - pupName) - else (create Fragment - fixed _(LET [(nilCheck (BQUOTE (\GetArgBool , pupName l..conv] - [if pupName= 'l..pup - then nilCheck_(BQUOTE (PROG1 , nilCheck (SETQ l..pup - l..cPup] - (BQUOTE (if , nilCheck - then NIL - else , (\MakeUnmarshal (CAR typeParm) - fn name typeTable pupName] - [BITS (* Just a bit special) - (create Fragment - fixed _(if (ILESSP size 16) - then (\FixedFetch size type whereAreWe fn name typeTable) - elseif whereAreWe~=0 - then (HELP "bad layout") - elseif (ILEQ typeParm:1 16) - then - - (* * note that even if we get here with a BITS record of <16 size, we just get a whole word) - - - (BQUOTE (\GetArgWord , pupName l..conv)) - elseif typeParm:1=32 - then (* closest we get to LONG CARDINAL) - (BQUOTE (\GetArgDblWord , pupName l..conv)) - else (SHOULDNT] - (if (FMEMB typeName \LupinePrimativeTypes) - then (if (ILESSP size 16) - then (create Fragment - fixed _(\FixedFetch size type whereAreWe fn name typeTable)) - elseif whereAreWe~=0 - then (HELP "bad layout") - elseif afn_(CDR (ASSOC typeName \LupineGetFns)) - then - - (* * note that even if we get here with a BITS record of <16 size, we just get a whole word courtesy of the GetFns  - table entry) - - - [create Fragment - fixed _(LET [(sr (BQUOTE (, afn , pupName ., - (if typeParm - then (LIST (KWOTE typeParm))) - l..conv] - (if pupName= 'l..cPup - then sr - else (BQUOTE (PROG1 , sr (SETQ l..pup l..cPup] - else (SHOULDNT)) - elseif typeSpec_(ASSOC typeName typeTable) - then (if typeSpec:typeType:type= 'RECORD - then (\MakeUnmarshalRecord typeSpec fn name typeTable whereAreWe - (if (AND size=16 (IGREATERP typeSpec:typeSize - 16)) - then typeSpec:typeSize - else size) - pupName) - else (\MakeUnmarshal1 typeSpec:typeType fn name typeTable whereAreWe size - pupName)) - else (ERROR "Invalid spec" (LIST fn name type]) - -(\MakeUnmarshalRecord - [LAMBDA (spec fn name typeTable startBit bitWidth pupName) - (* smL "30-Jun-86 16:17") - (LET ((fnName (PACK* (QUOTE Unmarshal) - $packageName$ - (fetch type of spec) - (QUOTE %#) - startBit - (QUOTE %#) - bitWidth)) - (bits (fetch typeBits of spec)) - (seq? (EQ (fetch typeName of (fetch typeType of spec)) - (QUOTE SEQRECORD))) - fetches createExpr indirects umc notFixed someNot res seqSpec seqEltFetch seqSubSpec - seqStatic? leftOver) - [if (NOT (FMEMB fnName (fetch definedStubs of spec))) - then (push $rNames$ (fetch type of spec)) - (if (ILESSP (fetch typeSize of spec) - bitWidth) - then (SETQ bits (CONS (IPLUS (CAR bits) - (DIFFERENCE bitWidth - (fetch typeSize - of spec))) - (CDR bits))) - elseif (AND (IGREATERP (fetch typeSize of spec) - bitWidth) - (NOT (ZEROP startBit))) - then (HELP "bad layout")) - [SETQ fetches - (bind (whereAreWe _ startBit) - (nFixed _ 0) - last for field in (fetch typeParm of (fetch typeType - of spec)) - as size in bits - join - (if (AND (LISTP (fetch fieldType of field)) - (EQ (fetch typeName of (fetch fieldType of field)) - (QUOTE SEQUENCE))) - then (if seq? - then (SETQ seqSpec field) - [SETQ seqSubSpec - (CAR (fetch typeParm - of (fetch fieldType of field] - - (* * * This should be a call to \MakeUnmarshal1, but because of a CEDAR Lupine bug, is not  - (see below for more discussion) - - If CEDAR is ever fixed, the call should be as follows: (SETQ seqEltFetch (\MakeUnmarshal1 seqSubSpec fn name  - typeTable whereAreWe size (QUOTE l..pup)))) - - - [SETQ seqEltFetch (\MakeUnmarshal - seqSubSpec fn name typeTable - (if (SETQ seqStatic? (\IsStatic seqSubSpec - typeTable)) - then (QUOTE l..pup) - else (QUOTE l..cPup] - else (SHOULDNT)) - NIL - elseif (\LupineNotFixed field typeTable) - then (add nFixed 1) - (SETQ someNot T) - NIL - else (SETQ umc (\MakeUnmarshal1 (fetch fieldType of field) - fn name typeTable whereAreWe size - (QUOTE l..pup))) - [if (fetch notFixed of umc) - then - (SETQ notFixed - (NCONC1 notFixed - (BQUOTE - (LET ((l..datum (fetch (, (fetch type - of spec) - , - (fetch fieldName - of field)) - of l..datum))) - ., (fetch notFixed of umc] - (SETQ umc (fetch fixed of umc)) - (SETQ whereAreWe (LOGAND 15 (IPLUS whereAreWe size))) - (if (NOT (ZEROP nFixed)) - then (SETQ umc (BQUOTE (PROGN (SETQ l..pup - (\SkipWordsIn - l..pup , - (LLSH nFixed 1))) - , umc))) - (SETQ nFixed 0)) - (SETQ last (LIST (fetch fieldName of field) - (QUOTE _) - umc))) - finally (if (NOT (ZEROP nFixed)) - then (SETQ leftOver (BQUOTE (SETQ l..pup - (\SkipWordsIn - l..pup , - (LLSH nFixed 1] - (SETQ createExpr (BQUOTE (create , (fetch type of spec) - ., fetches))) - [if leftOver - then (SETQ createExpr (BQUOTE (PROG1 , createExpr , leftOver] - (if someNot - then [SETQ indirects (for field in (fetch typeParm - of (fetch typeType - of spec)) - when (\LupineNotFixed field typeTable) - collect (SETQ umc - (\MakeUnmarshal (fetch fieldType - of field) - fn name typeTable - (QUOTE l..cPup))) - (BQUOTE (replace - (, (fetch type - of spec) - , - (fetch fieldName - of field)) - of l..datum - with , umc] - (SETQ notFixed (NCONC notFixed indirects))) - (SETQ createExpr - (if seq? - then [LET (prelim term f nf) - - (* * the code in this comment is the way this **should** work, with only the non-statics following after, but in  - fact as CEDAR Lupine stands if a sequence's element type has any non-static parts, the WHOLE element gets repeated. - There is a further patch associated with this higher up in this function. If this ever gets fixed, replace the if  - statement which follows this comment with this code: (if (fetch notFixed of seqEltFetch) then  - (SETQ f (fetch fixed of seqEltFetch)) (SETQ nf (fetch notFixed of seqEltFetch)) elseif (\LupineNotFixed  - (fetch fieldType of seqSpec) typeTable) then (SETQ prelim (BQUOTE (first (\SkipWordsIn l..pup  - (LLSH size 1))))) (SETQ nf (fetch fixed of seqEltFetch)) else (SETQ f (fetch fixed of seqEltFetch)))) - - - (if seqStatic? - then (SETQ f seqEltFetch) - else [SETQ prelim - (BQUOTE (first - (\SkipWordsIn - l..pup - (ITIMES , (LRSH (\TypeSize - seqSubSpec - typeTable) - 4) - l..size] - (SETQ nf seqEltFetch)) - [if nf - then [SETQ term - (if f - then (BQUOTE (LET ((l..datum (CAR l..p))) - ., - nf)) - else (BQUOTE (RPLACA l..p , nf] - (SETQ notFixed - (NCONC1 - notFixed - (BQUOTE (for l..p - on (fetch (, (fetch type - of spec) - , - (fetch fieldName - of seqSpec)) - of l..datum) - do , term] - (BQUOTE ((SETQ l..pup (\CheckPupExhausted l..pup 3)) - (if (\GetArgBool l..pup l..conv) - then NIL - else (LET ((l..size (\GetArgDblWord l..pup - l..conv))) - (bind (l..result _ , createExpr) - ., prelim for l..i - from 1 to l..size - collect , f - finally - (replace (, (fetch type - of spec) - , - (fetch fieldName - of seqSpec)) - of l..result with $$VAL) - (RETURN l..result] - else (LIST createExpr))) - [if (AND seq? notFixed) - then (SETQ notFixed (LIST (BQUOTE (if l..datum - then ., notFixed] - (APPLY* (FUNCTION DEFINEQ) - (BQUOTE (, fnName (l..pup l..conv) - (* Lupine generated stub) - ., createExpr))) - - (* * must record the notFixed generated here so they get used if the function gets re-used) - - - (PUT fnName (QUOTE LupineNotFixed) - notFixed) - (push $fns$ fnName) - (push (fetch definedStubs of spec) - fnName) - else (SETQ notFixed (APPEND (GETP fnName (QUOTE LupineNotFixed] - (SETQ res (BQUOTE (, fnName , pupName l..conv))) - [if pupName=(QUOTE l..pup) - then - - (* * horrible kludge as our function may have reset l..cPup but our caller won't see that) - - - (SETQ res (LIST (QUOTE PROG1) - res - (QUOTE (SETQ l..pup l..cPup] - (create Fragment - fixed _ res - notFixed _ notFixed]) - -(\FixedFetch - [LAMBDA (size type whereAreWe fn name typeTable) (* ht: " 1-Aug-85 08:54") - (LET ((typeName (\TypeName type)) - (typeParm (if (LISTP type) - then type:typeParm)) - ff bitNum form) - (SELECTQ typeName - (RECORD (SHOULDNT)) - ((BOOLEAN BITS ENUMERATION) - - (* * compute the field descriptor) - - - bitNum_ - (IPLUS (LLSH whereAreWe 4) - size-1) - - (* * make the call to FETCHFIELD) - - - ff_ - (BQUOTE (FETCHFIELD '(NIL 0 (BITS ., bitNum)) - (\CurrentPupBase l..pup))) - form_ - (SELECTQ typeName - (BITS ff) - [ENUMERATION (BQUOTE (CAR (NTH (QUOTE , typeParm) - (ADD1 , ff] - [BOOLEAN (BQUOTE (NOT (ZEROP , ff] - (SHOULDNT)) - (if (ZEROP whereAreWe) - then - - (* * need to check there is room in the l..pup) - - - (BQUOTE (PROGN (SETQ l..pup (\CheckPupExhausted l..pup 1)) - , form)) - elseif (IPLUS whereAreWe size)=16 - then - - (* * must advance the counter) - - - (BQUOTE (PROG1 , form (\IncrDataOffset l..pup 1))) - else form)) - (SHOULDNT]) - -(\MakeArgsUnmarshal - [LAMBDA (spec fn multTypeName typeTable) (* ht: " 1-Aug-85 08:51") - (LET (resultSpec) - (if (AND (LITATOM spec) - resultSpec_(\BaseType spec typeTable) - (LISTP resultSpec) - resultSpec:typeName=multTypeName) - then (* create the record) - (push $rNames$ spec) - [NCONC (LIST 'create - spec) - (for rSpec in (\StaticsFirst resultSpec:typeParm typeTable) - join (BQUOTE (, (fetch fieldName of rSpec)_ , (\MakeUnmarshal (fetch - fieldType - of rSpec) - fn - (fetch - fieldName - of rSpec) - typeTable] - else (\MakeUnmarshal spec fn 'l..result - typeTable]) - -(\ClientComs - [LAMBDA ($packageName$ functionSpecList signalSpecList typeTable lupineTypeString) - (* ht: " 1-Aug-85 09:39") - (DECLARE (SPECVARS $packageName$)) - (LET ($fns$ dfn selTerms iName cName typeSels $rNames$ sDisp sigTerms movds movdFn result loads) - (DECLARE (SPECVARS $fns$ $rNames$)) - iName_(PACK (LIST $packageName$ 'ClientInterface)) - sDisp_(PACK (LIST 'Dispatch - $packageName$ - 'Signals)) - - (* * the NCONC is because some stuff gets pushed onto $fns$ underneath here) - - - $fns$_(NCONC (bind (i _ \FirstLupineUserCall) - argNames rec rfl fn argPuts end stubFn for spec in functionSpecList - unless spec:fn= '* - collect (fn_spec:fn) - (stubFn_(PACK (LIST 'RPCClientStub. - fn))) - (argPuts_(for aSpec in (\StaticsFirst spec:specs typeTable) - join (\MakeMarshal aSpec:argType aSpec:argName fn - aSpec:argName typeTable))) - [argNames_(NCONC (for aSpec in spec:specs until (if (U-CASE - aSpec:argName)= - 'RETURNS - then result_aSpec) - collect aSpec:argName) - (LIST 'l..interfaceArg - 'l..conv] - (end_(if result - then (\MakeArgsUnmarshal result:argType fn 'RESULT - typeTable))) - [APPLY* (FUNCTION DEFINEQ) - (BQUOTE (, stubFn , argNames - (* Lupine generated stub) - (PROG [l..cPup (l..interface (OR l..interfaceArg - (CAR , iName] - (DECLARE (SPECVARS l..cPup)) - (SETQ l..cPup (\StartCall (CAR l..interface) - (CDR l..interface) - l..conv)) - (\AddPupWord l..cPup , i l..conv) - ,. - argPuts - (SETQ l..cPup (\Call l..cPup - (FUNCTION , sDisp) - l..conv)) - (RETURN (PROG1 , end (\RELEASE.PUP l..cPup] - (push movds (CONS stubFn fn)) - (add i 1) - stubFn) - $fns$) - sigTerms_(bind (j _ \FirstLupineSignal) - mres umargs specs for sSpec in signalSpecList unless sSpec:fn= '* - collect (specs_sSpec:specs) - (umargs_(if (U-CASE specs:1:argName)= 'ARGS - then (\MakeArgsUnmarshal (pop specs):argType sSpec:fn - 'SIGARGS - typeTable))) - (if (U-CASE specs:1:argName)= 'RETURNS - then mres_(\MakeArgsMarshal specs:1:argType sSpec:fn 'RESULT - 'l..result - typeTable)) - (PROG1 (BQUOTE (, j (PROG (l..result) - (SETQ l..result - (Signal (QUOTE , (fetch fn of sSpec)) - , umargs)) - (\StartReturn l..cPup) - ., - mres))) - (add j 1))) - (APPLY* (FUNCTION DEFINEQ) - (BQUOTE (, sDisp (l..cPup l..conv) (* Lupine generated dispatcher) - (DECLARE (SPECVARS l..cPup l..conv)) - (SELECTQ (\GetArgWord l..cPup l..conv) - ., sigTerms (SHOULDNT)) - l..cPup))) - (push $fns$ sDisp) - (if (NOT (BOUNDP iName)) - then (SET iName NIL)) - [push $fns$ (CAR (APPLY* (FUNCTION DEFINEQ) - (BQUOTE (, (PACK (LIST 'Unimport - $packageName$)) - (l..interface) (* Lupine generated interface) - (if l..interface - then (if (FMEMB l..interface , iName) - then (UnimportInterface l..interface) - (SETQ , iName (DREMOVE l..interface , - iName)) - else (ERROR "not imported" l..interface)) - else (for e in , iName do (UnimportInterface e)) - (SETQ , iName NIL] - [push $fns$ (CAR (APPLY* (FUNCTION DEFINEQ) - (BQUOTE (, (PACK (LIST 'Import - $packageName$)) - (type instance version) - (* Lupine generated interface) - (CAR (push , iName (ImportInterface (OR type , - lupineTypeString) - instance version] - [push $fns$ (CAR (APPLY* (FUNCTION DEFINEQ) - (BQUOTE (, (SETQ movdFn (PACK (LIST 'MovdsFor - $packageName$))) - NIL (* Lupine generated utility) - (for p in (QUOTE , movds) - do (PUTD (CDR p) - (GETD (CAR p] - [if $rNames$ - then (LET [(files (bind wh res for r in $rNames$ - when (if wh_(WHEREIS r 'RECORDS) - else (printout T T "Note - the record " r - " is not on any known file" - T)) - do (pushnew res wh:1) finally (RETURN res] - loads_(LIST (BQUOTE (DECLARE: DONTCOPY EVAL@COMPILE EVAL@LOAD (FILES (LOADCOMP) - ., files] - (BQUOTE ( (* Created by Lupine , (GDATE)) - (FNS ,. $fns$) - (VARS (, iName)) - (GLOBALVARS , iName) - (P (, movdFn)) - ., loads (DECLARE: EVAL@LOAD DONTEVAL@COMPILE DOCOPY (FILES (SYSLOAD) - RPC]) - -(\MakeMarshal - [LAMBDA (type val fn name typeTable pupName) (* ht: " 1-Aug-85 08:57") - (if type - then (if (NOT pupName) - then pupName_ 'l..cPup) - (LET (fragment) - fragment_(\MakeMarshal1 type val fn name typeTable 0 16 pupName) - (if NOT (fragment:notFixed) - then fragment:fixed - else (NCONC fragment:fixed (if val~= 'l..datum - then [LIST (BQUOTE (LET ((l..datum , val)) - ., - (fetch notFixed of fragment] - else fragment:notFixed]) - -(\MakeMarshal1 - [LAMBDA (type val fn name typeTable whereAreWe size pupName) - (* ht: " 1-Aug-85 08:59") - (LET ((typeName (\TypeName type)) - (typeParm (if (LISTP type) - then type:typeParm)) - afn typeSpec) - (SELECTQ typeName - ((RECORD SEQRECORD) - (SHOULDNT)) - [LIST (create Fragment - fixed _(LIST (BQUOTE (PROGN (\CheckPupOverflow , pupName 4) - (\AddPupDblWord , pupName (LENGTH , val) - l..conv) - (for l..v in , val - do ., (\MakeMarshal (CAR typeParm) - 'l..v - fn name typeTable - pupName] - [REF (* no-op except for SEQRECORDs) - (LET ((trueType (\BaseType typeParm:1 typeTable)) - typeSpec) - (if (AND (LISTP trueType) - trueType:typeName= - 'SEQRECORD) - then - - (* * have to back up one) - - - (\MakeMarshalRecord (OR typeSpec_(for tte in typeTable thereis - tte:typeType=trueType) - (SHOULDNT)) - val fn name typeTable whereAreWe - (if size=16 - then typeSpec:typeSize - else (SHOULDNT)) - pupName) - else (create Fragment - fixed _(LIST (BQUOTE (if , val - then (\AddPupBoolean , pupName NIL - l..conv) - ., - (\MakeMarshal (CAR typeParm) - val fn name - typeTable pupName) - else (\AddPupBoolean , pupName T l..conv] - [BITS (create Fragment - fixed _(if (ILESSP size 16) - then (\FixedStore size type val whereAreWe fn name typeTable) - elseif whereAreWe~=0 - then (HELP "bad layout") - elseif (ILEQ typeParm:1 16) - then - - (* * note that even if we get here with a BITS record of <16 size, we just put a whole word) - - - (LIST (BQUOTE (\AddPupWord , pupName , val l..conv))) - elseif typeParm:1=32 - then (* closest we get to LONG CARDINAL) - (LIST (BQUOTE (\AddPupDblWord , pupName , val l..conv))) - else (SHOULDNT] - (if (FMEMB typeName \LupinePrimativeTypes) - then (if (ILESSP size 16) - then (create Fragment - fixed _(\FixedStore size type val whereAreWe fn name - typeTable)) - elseif whereAreWe~=0 - then (HELP "bad layout") - elseif afn_(CDR (ASSOC typeName \LupinePutFns)) - then - - (* * note that if we get here with a BITS record of <16 size, we just get a whole word courtesy of the PutFns table  - entry) - - - [create Fragment - fixed _(LIST (BQUOTE (, afn , pupName ., - (if typeParm - then (LIST (KWOTE typeParm))) - , val l..conv] - else (SHOULDNT)) - elseif typeSpec_(ASSOC typeName typeTable) - then (if typeSpec:typeType:type= 'RECORD - then (\MakeMarshalRecord typeSpec val fn name typeTable whereAreWe - (if (AND size=16 (IGREATERP typeSpec:typeSize 16) - ) - then typeSpec:typeSize - else size) - pupName) - else (\MakeMarshal1 typeSpec:typeType val fn name typeTable whereAreWe size - pupName)) - else (ERROR "Invalid spec" (LIST fn name type]) - -(\MakeMarshalRecord - [LAMBDA (spec val fn name typeTable startBit bitWidth pupName) - (* ht: " 1-Aug-85 12:16") - (LET ((fnName (PACK* 'Marshal - $packageName$ spec:type '# - startBit - '# - bitWidth)) - (bits spec:typeBits) - (seq? spec:typeType:typeName= 'SEQRECORD) - seqSpec seqSubSpec seqEltStore seqStatic? stores notFixed indirects mc someNot) - [if (NOT (FMEMB fnName spec:definedStubs)) - then (push $rNames$ spec:type) - (if (ILESSP spec:typeSize bitWidth) - then bits_(CONS (IPLUS bits:1 bitWidth-spec:typeSize) - bits::1) - elseif (AND (IGREATERP spec:typeSize bitWidth) - (NOT (ZEROP startBit))) - then (HELP "bad layout")) - [stores_(bind (whereAreWe _ startBit) - (nFixed _ 0) for field in spec:typeType:typeParm as size in bits - join (if (AND (LISTP field:fieldType) - field:fieldType:typeName= - 'SEQUENCE) - then (if seq? - then (seqSpec_field) - (seqSubSpec_field:fieldType:typeParm:1) - - (* * * This should be a call to \MakeMarshal1 but because of a CEDAR Lupine bug, is not (see below for more  - discussion) - - If CEDAR is ever fixed, the call should be as follows: (SETQ seqEltStore (\MakeMarshal1 seqSubSpec  - (QUOTE l..datum) fn name typeTable whereAreWe size (QUOTE l..pup)))) - - - [seqEltStore_(\MakeMarshal seqSubSpec 'l..datum - fn name typeTable - (if seqStatic?_(\IsStatic - seqSubSpec - typeTable) - then 'l..pup - else 'l..cPup] - else (SHOULDNT)) - NIL - elseif (\LupineNotFixed field typeTable) - then (add nFixed 1) - (someNot_T) - NIL - else (mc_(\MakeMarshal1 field:fieldType - (BQUOTE (fetch (, (fetch type of spec) - , - (fetch fieldName - of field)) - of l..datum)) - fn name typeTable whereAreWe size - 'l..pup)) - [if mc:notFixed - then - notFixed_(NCONC1 - notFixed - (BQUOTE (LET ((l..datum (fetch (, (fetch type - of spec) - , - (fetch fieldName - of field)) - of l..datum))) - ., - (fetch notFixed of mc] - (mc_mc:fixed) - (whereAreWe_(LOGAND 15 (IPLUS whereAreWe size))) - (if (NOT (ZEROP nFixed)) - then (PROG1 (CONS (BQUOTE (\SkipBytesOut l..pup , - (LLSH nFixed 2))) - mc) - nFixed_0) - else mc)) - finally (if (NOT (ZEROP nFixed)) - then $$VAL_(NCONC1 $$VAL (BQUOTE (\SkipBytesOut l..pup , - (LLSH nFixed 2] - (if someNot - then [indirects_(for field in spec:typeType:typeParm when (\LupineNotFixed field - typeTable) - join (\MakeMarshal field:fieldType - (BQUOTE (fetch (, (fetch type of spec) - , - (fetch fieldName - of field)) - of l..datum)) - fn name typeTable 'l..cPup] - (notFixed_(NCONC notFixed indirects))) - [if seq? - then (LET (code f nf) - - (* * the code in this comment is the way this **should** work, with only the non-statics following after, but in  - fact as CEDAR Lupine stands if a sequence%'s element type has any non-static parts, the WHOLE element gets repeated. - There is a further patch associated with this higher up in this function. If this ever gets fixed, replace the if  - statement which follows this comment with this code: (if (fetch notFixed of seqEltStore) then  - (SETQ f (fetch fixed of seqEltStore)) (SETQ nf (fetch notFixed of seqEltStore)) elseif (\LupineNotFixed  - (fetch fieldType of seqSpec) typeTable) then (SETQ code (LIST (QUOTE (\SkipBytesOut l..pup (LLSH  - (LENGTH l..sequence) 2))))) (SETQ nf (fetch fixed of seqEltStore)) else (SETQ f (fetch fixed of seqEltStore)))) - - - (if seqStatic? - then f_seqEltStore - else [code_(LIST (BQUOTE (\SkipBytesOut l..pup - (ITIMES , - (LRSH (\TypeSize - seqSubSpec - typeTable) - 3) - (LENGTH l..sequence] - (nf_seqEltStore)) - [if f - then code_(LIST (BQUOTE (for l..datum in l..sequence do ., f] - [if nf - then notFixed_(NCONC1 notFixed - (BQUOTE (for l..datum - in (fetch (, (fetch type of spec) - , - (fetch fieldName - of seqSpec)) - of l..datum) - do ., nf] - stores_(BQUOTE ((\CheckPupOverflow l..pup 6) - (if l..datum - then (LET ((l..sequence (fetch (, (fetch type - of spec) - , - (fetch fieldName - of seqSpec)) - of l..datum))) - (\AddPupBoolean l..pup NIL l..conv) - (\AddPupDblWord l..pup (LENGTH l..sequence) - l..conv) - ., stores ., code) - else (\AddPupBoolean l..pup T l..conv] - [if (AND seq? notFixed) - then notFixed_(LIST (BQUOTE (if l..datum - then ., notFixed] - (APPLY* (FUNCTION DEFINEQ) - (BQUOTE (, fnName (l..pup l..datum l..conv) - (* Lupine generated stub) - ., stores))) - - (* * must record the notFixed generated here so they get used if the function gets re-used) - - - (PUT fnName 'LupineNotFixed - notFixed) - (push $fns$ fnName) - (push spec:definedStubs fnName) - else notFixed_(APPEND (GETP fnName 'LupineNotFixed] - (create Fragment - fixed _(LIST (BQUOTE (, fnName , pupName , val l..conv))) - notFixed _ notFixed]) - -(\FixedStore - [LAMBDA (size type val whereAreWe fn name typeTable) (* ht: " 1-Aug-85 09:10") - (LET ((typeName (\TypeName type)) - (typeParm (if (LISTP type) - then type:typeParm)) - rf bitNum form) - (SELECTQ typeName - (RECORD (SHOULDNT)) - ((BOOLEAN BITS ENUMERATION) - - (* * compute the field descriptor) - - - bitNum_ - (IPLUS (LLSH whereAreWe 4) - size-1) - - (* * make the call to FETCHFIELD) - - - form_ - (SELECTQ typeName - (BITS val) - [ENUMERATION (BQUOTE (for l..i from 0 as l..t in (QUOTE , typeParm) - do (if (EQ l..t , val) - then (RETURN l..i)) - finally (Signal 'BoundsCheck - (CONS , val (QUOTE , typeParm] - (BOOLEAN (BQUOTE (if , val - then 1 - else 0))) - (SHOULDNT)) - rf_ - (BQUOTE (REPLACEFIELD '(NIL 0 (BITS ., bitNum)) - (\CurrentPupPosition l..pup) - , form)) - (if (ZEROP whereAreWe) - then - - (* * need to check there is room in the l..pup) - - - (BQUOTE ((\CheckPupOverflow l..pup 2) - , rf)) - elseif (IPLUS whereAreWe size)=16 - then - - (* * must advance the counter - - must use LIST here because BQUOTE causes NCONC problems) - - - (LIST rf '(\IncrPupLength l..pup 2)) - else (LIST rf))) - (SHOULDNT]) - -(\MakeArgsMarshal - [LAMBDA (spec fn multTypeName varName typeTable) (* ht: "31-Jul-85 11:44") - (LET (resultSpec) - (if (AND (LITATOM spec) - resultSpec_(\BaseType spec typeTable) - (LISTP resultSpec) - resultSpec:typeName=multTypeName) - then (* unpack a record) - (push $rNames$ spec) - (for rBit in (\StaticsFirst resultSpec:typeParm typeTable) - join (\MakeMarshal rBit:fieldType (BQUOTE (fetch (, spec , (fetch fieldName - of rBit)) - of , varName)) - fn rBit:fieldName typeTable)) - else (\MakeMarshal spec varName fn varName typeTable]) -) - - - -(* Checking of declarations) - -(DEFINEQ - -(\CheckSpec - [LAMBDA (spec typeTable sigFlg) (* ht: "31-Jul-85 11:35") - (if (NLISTP spec) - then (ERROR "each spec must be a list" spec)) - (if spec:fn~= '* - then (if (NOT (LITATOM spec:fn)) - then (ERROR "the fn/signal of a spec must be an atom" spec:fn)) - (if (NLISTP spec:specs) - then (if spec:specs - then (ERROR "the arg specs of a spec must be a list" spec:specs))) - (if (OR spec:specs=NIL (U-CASE spec:specs:1:argName)= 'RETURNS) - then (printout T "Note: " spec:fn " has no args" T)) - (bind aSpec argsAlready [an _(if (AND (NOT sigFlg) - (GETD (fetch fn of spec))) - then (ARGLIST (fetch fn of spec] - for specP on spec:specs - do (if (U-CASE specP:1:argName)= 'RETURNS - then (if specP::1 - then (ERROR "RETURNS must be the last spec" specP) - else (GO $$OUT)) - else aSpec_specP:1) - (if sigFlg - then (if (AND (U-CASE specP:1:argName)= 'ARGS - (NOT argsAlready)) - then argsAlready_T - else (ERROR "first and only arg spec for a signal must be called ARGS")) - (\CheckType aSpec typeTable NIL T) - else (if an - then [if aSpec:argName=an:1 - then (pop an) - else (ERROR "arg name not right" (CONS aSpec:argName - (pop an] - else (if (NOT (LITATOM aSpec:argName)) - then (ERROR "arg name must be litatom" aSpec)) - (if (GETD spec:fn) - then (printout T "Note: spec has more arguments than function" , - spec:fn , aSpec T))) - (\CheckType aSpec typeTable)) - finally (if an - then (printout T "Note: spec has fewer arguments than function" , spec:fn - T))) - (LET ((last spec:-1)) - (if (U-CASE last:argName)= 'RETURNS - then (\CheckType last typeTable NIL T) - else (printout T "Note: " spec:fn " has no result" T]) - -(\CheckType - [LAMBDA (spec typeTable inDecl inSpecial inRef inSeq) (* ht: "30-Jul-85 09:01") - (\CheckType1 spec (\TypeName spec:argType) - (if (LISTP spec:argType) - then spec:argType:typeParm) - typeTable inDecl inSpecial inRef inSeq]) - -(\CheckType1 - [LAMBDA (spec typeName typeParm typeTable inDecl inSpecial inRef inSeq) - (* ht: "31-Jul-85 15:57") - (LET (trueType) - (if (FMEMB typeName \LupinePrimativeTypes) - then (if (FMEMB typeName \LupineTypesWithParm) - then (if (NOT typeParm) - then (ERROR "Must have type parm for type" spec)) - (SELECTQ typeName - ((LIST REF SEQUENCE) - (if (AND typeName= 'SEQUENCE - (NOT inSeq)) - then (ERROR "SEQUENCE field can occur only in SEQRECORDs" spec) - ) - (\CheckType spec:argType typeTable NIL NIL typeName= 'REF)) - (BITS (if (NOT (AND (NUMBERP typeParm:1) - (IGREATERP typeParm:1 0) - (OR (ILEQ typeParm:1 16) - typeParm:1=32) - typeParm::1=NIL)) - then (ERROR - "BITS type must have exactly one numeric parameter in [1..16] U [32]" - spec))) - ((RECORD RESULT SIGARGS) - (if (NOT inDecl) - then (ERROR - "In line RECORDs/RESULTs/SIGARGSs not allowed - must be pre-declared as a named type" - spec)) - (\CheckRecordDecl spec typeParm) - (for fs in typeParm do (\CheckType fs typeTable))) - (SEQRECORD (if (NOT inDecl) - then (ERROR - "In line SEQRECORDs not allowed - must be pre-declared as a named type" - spec)) - (\CheckRecordDecl spec typeParm) - (if [NOT (for fieldSpecPointer on typeParm - thereis (PROG1 (if (U-CASE (\TypeName - fieldSpecPointer:1:fieldType))= - 'SEQUENCE - then (if - fieldSpecPointer::1 - then - (ERROR - "SEQUENCE must be the last field of a SEQRECORD" - spec) - else T)) - (\CheckType fieldSpecPointer:1 - typeTable NIL NIL - NIL T] - then (ERROR - "SEQRECORD must end with a SEQUENCE field" - spec)) - (if (NOT (FMEMB (\TypeName typeParm:-2:fieldType) - \LupineNumberTypes)) - then (printout T - "Warning - next to last field in SEQRECORD not a numeric type?" - , spec))) - NIL) - elseif typeParm - then (ERROR "Shouldnt have type parm for type" spec)) - elseif (ASSOC typeName typeTable) - then (if typeParm - then (ERROR "Shouldnt have type parm for user-defined type" spec)) - (trueType_(\BaseType typeName typeTable)) - (if (LISTP trueType) - then (if (AND (FMEMB trueType:typeName \LupineDummyTypes) - (NOT inSpecial)) - then (ERROR "Can't use RESULT/SIGARGS except from RETURNS/ARGS spec" spec) - elseif (AND trueType:typeName= 'SEQRECORD - (NOT inRef)) - then (ERROR "Must get to SEQRECORD via a REF, not directly" spec))) - else (ERROR "Not a type" spec]) - -(\CheckRecordDecl - [LAMBDA (spec fieldSpecs) (* ht: "30-Jul-85 09:41") - (LET ((recFields (RECORDFIELDNAMES spec:fieldName))) - (if (NOT recFields) - then (ERROR "No record declaration for record type" spec)) - (if [NOT (AND (LENGTH recFields)=(LENGTH fieldSpecs) - (for fieldSpec in fieldSpecs always (FMEMB fieldSpec:fieldName recFields] - then (ERROR "Field names in type declaration don't match up with those of record" - (LIST recFields spec]) -) - - - -(* Type table construction) - -(DEFINEQ - -(\DeclareTypes - [LAMBDA (typeDecls) (* ht: "31-Jul-85 14:50") - (bind newEntry (typeTable _(APPEND \LupineInitialTypeTable)) - allocation for ty in typeDecls unless ty:type= '* - do (if (NOT (AND ty:type (LITATOM ty:type))) - then (ERROR "type declaration must begin with an atomic type name" ty)) - (if (OR NOT (ty:typeType) - ty::2) - then (ERROR "there must be one and only one type in a type declaration" ty)) - (if (U-CASE ty:type)= 'INCLUDE - then (if (AND ty:typeType (LITATOM ty:typeType)) - then typeTable_(NCONC typeTable (\DeclareTypes (EVALV ty:typeType))) - else (ERROR "INCLUDE must be of the form (INCLUDE )" ty)) - else (\CheckType ty typeTable T) - (newEntry_(create TypeSpec - type _ ty:type - typeType _ ty:typeType)) - (if (NOT (AND (LISTP ty:typeType) - (FMEMB (U-CASE ty:typeType:typeName) - \LupineDummyTypes))) - then (allocation_(\Allocate ty:typeType typeTable)) - (newEntry:typeSize_allocation:need) - (newEntry:typeBits_allocation:fields)) - (push typeTable newEntry)) - finally (RETURN typeTable]) - -(\Allocate - [LAMBDA (type typeTable subFlg) (* ht: "29-Jul-85 13:38") - (let ((typeName (\TypeName type)) - (typeParm (if (LISTP type) - then type:typeParm)) - res rRes) - res_[SELECTQ typeName - ((STRING ATOM LIST STREAM ARB FIXP REF SEQUENCE) - 32) - (SSMALLP 16) - ((RECORD SEQRECORD) - rRes_ - (\AllocateRecord typeName typeParm typeTable) - (if subFlg - then rRes:need - else rRes)) - (if (FMEMB typeName \LupinePrimativeTypes) - then (let [(need (SELECTQ typeName - (BOOLEAN 1) - (BITS typeParm:1) - [ENUMERATION - (IMAX 1 (bind (max _(SUB1 (LENGTH typeParm))) - until (ZEROP max) - count max_(LRSH max 1] - (SHOULDNT] - (if (IGREATERP need 16) - then (SHOULDNT "Too big") - else need)) - else (* user defined type) - (fetch typeSize of (\TypeLayout typeName typeTable] - (if subFlg - then (LIST res) - else (OR (LISTP res) - (create RecordLayout - need _ res - fields _(LIST res]) - -(\AllocateRecord - [LAMBDA (typeName typeParm typeTable) (* ht: "24-Jul-85 19:33") - (bind (bitsLeft _ 16) - (wordsUsed _ 0) - left sub need for t in typeParm - join (sub_(\Allocate t:fieldType typeTable T)) - (need_sub:1) - (if (IGREATERP need bitsLeft) - then (if (ZEROP bitsLeft) - then - - (* * run out - - fix it) - - - (add wordsUsed 1) - elseif bitsLeft~=16 - then - - (* * expand the leftmost bit of the last thing to fit) - - - (add left:1 bitsLeft) - (add wordsUsed 1)) - (bitsLeft_16) - (if (IGREATERP need 15) - then - - (* * must be some number of words) - - - (add wordsUsed (LRSH need 4)) - (need_0) - else bitsLeft_bitsLeft-need) - else bitsLeft_bitsLeft-need) - (left_sub) - finally (if (ZEROP bitsLeft) - then (add wordsUsed 1) - elseif (AND (NOT (ZEROP wordsUsed)) - bitsLeft~=16) - then - - (* * only sub-word records are allowed to be not a multiple of 16 - - pad) - - - (add left:1 bitsLeft) - (add wordsUsed 1)) - (RETURN (create RecordLayout - need _(if (ZEROP wordsUsed) - then 16-bitsLeft - else (LLSH wordsUsed 4)) - fields _ $$VAL]) -) - - - -(* Utilities) - -(DEFINEQ - -(\TypeName - [LAMBDA (type) (* ht: "26-Jul-85 09:14") - (LET ((typen (if (LISTP type) - then type:typeName - else type))) - (if (FMEMB (U-CASE typen) - \LupinePrimativeTypes) - then (U-CASE typen) - else typen]) - -(\BaseType - [LAMBDA (type typeTable) (* ht: "26-Jul-85 09:04") - (LET ((typeName (\TypeName type))) - (if (FMEMB typeName \LupinePrimativeTypes) - then type - else (\BaseType (fetch typeType of (\TypeLayout typeName typeTable)) - typeTable]) - -(\TypeLayout - [LAMBDA (typeName typeTable) (* ht: "24-Jul-85 11:32") - (OR (ASSOC typeName typeTable) - (HELP "Type not defined" typeName]) - -(\TypeSize - [LAMBDA (type typeTable) (* ht: "31-Jul-85 09:21") - (LET ((typeName (\TypeName type)) - entry) - (if entry_(ASSOC typeName typeTable) - then entry:typeSize - elseif (FMEMB typeName \LupineNotFixedTypes) - then 32 - else 16]) - -(\LupineNotFixed - [LAMBDA (field typeTable) (* ht: "26-Jul-85 09:08") - (FMEMB (\TypeName (\BaseType field:fieldType typeTable)) - \LupineNotFixedTypes]) - -(\StaticsFirst - [LAMBDA (specs typeTable) (* ht: "25-Jul-85 16:13") - (bind nonStatics for s in specs when (if (U-CASE s:argName) - ~= - 'RETURNS - then (if (\IsStatic s:argType typeTable) - else (nonStatics_(NCONC1 nonStatics s)) - NIL)) - collect s finally (RETURN (NCONC $$VAL nonStatics]) - -(\IsStatic - [LAMBDA (type typeTable) (* ht: "26-Jul-85 09:01") - (LET* ((trueType (\BaseType type typeTable)) - (typeName (\TypeName trueType))) - (OR (MEMB typeName \LupineStatics) - (AND typeName= 'RECORD - (for f in trueType:typeParm always (\IsStatic f:fieldType typeTable]) -) - -(RPAQQ \LupineGetFns ((SSMALLP . \GetArgSmallp) - (FIXP . \GetArgDblWord) - (BOOLEAN . \GetArgBool) - (STRING . \UnmarshalString) - (ATOM . \UnmarshalAtom) - (STREAM . \UnmarshalStream) - (ENUMERATION . \GetArgEnum) - (ARB . \UnmarshalArb))) - -(RPAQQ \LupinePutFns ((SSMALLP . \AddPupSmallp) - (FIXP . \AddPupDblWord) - (BOOLEAN . \AddPupBoolean) - (STRING . \MarshalString) - (ATOM . \MarshalAtom) - (STREAM . \MarshalStream) - (ENUMERATION . \AddPupEnum) - (ARB . \MarshalArb) - (BITS . \AddPupWord))) - -(RPAQQ \LupinePrimativeTypes (SSMALLP FIXP BOOLEAN STRING ATOM STREAM ENUMERATION ARB BITS LIST - RECORD RESULT SIGARGS REF SEQRECORD SEQUENCE)) - -(RPAQQ \LupineInitialTypeTable ((CARDINAL (BITS 16) - NIL 16 16) - (* the next is not true, but is as close as we get) - (LONGCARDINAL (BITS 32) - NIL 32 32))) - -(RPAQQ \LupineNumberTypes (FIXP SSMALLP ENUMERATION BITS)) - -(RPAQQ \LupineNotFixedTypes (STRING ATOM STREAM ARB LIST REF)) - -(RPAQQ \LupineDummyTypes (RESULT SIGARGS)) - -(RPAQQ \LupineStatics (SSMALLP FIXP BOOLEAN ENUMERATION BITS)) - -(RPAQQ \LupineTypesWithParm (ENUMERATION BITS LIST REF SEQRECORD SEQUENCE RECORD RESULT SIGARGS - STREAM)) -(DECLARE: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS \LupineGetFns \LupinePutFns \LupineStatics \LupineTypesWithParm \LupinePrimativeTypes - \LupineDummyTypes \LupineNotFixedTypes \LupineNumberTypes \LupineInitialTypeTable) -) -(DECLARE: DONTCOPY -(DECLARE: EVAL@COMPILE - -(RPAQQ \FirstLupineUserCall 4) - -(RPAQQ \FirstLupineSignal 4) - -(CONSTANTS (\FirstLupineUserCall 4) - (\FirstLupineSignal 4)) -) -) -(PUTPROPS LUPINE COPYRIGHT ("Xerox Corporation" 1984 1985 1986)) -(DECLARE: DONTCOPY - (FILEMAP (NIL (1917 43384 (Lupine 1927 . 3884) (\ServerComs 3886 . 10078) (\MakeUnmarshal 10080 . -10581) (\MakeUnmarshal1 10583 . 14428) (\MakeUnmarshalRecord 14430 . 22709) (\FixedFetch 22711 . 23977 -) (\MakeArgsUnmarshal 23979 . 24867) (\ClientComs 24869 . 30430) (\MakeMarshal 30432 . 31021) ( -\MakeMarshal1 31023 . 34722) (\MakeMarshalRecord 34724 . 41100) (\FixedStore 41102 . 42627) ( -\MakeArgsMarshal 42629 . 43382)) (43422 49673 (\CheckSpec 43432 . 45630) (\CheckType 45632 . 45912) ( -\CheckType1 45914 . 49088) (\CheckRecordDecl 49090 . 49671)) (49710 53777 (\DeclareTypes 49720 . 51058 -) (\Allocate 51060 . 52323) (\AllocateRecord 52325 . 53775)) (53800 56008 (\TypeName 53810 . 54128) ( -\BaseType 54130 . 54457) (\TypeLayout 54459 . 54650) (\TypeSize 54652 . 54975) (\LupineNotFixed 54977 - . 55188) (\StaticsFirst 55190 . 55629) (\IsStatic 55631 . 56006))))) -STOP diff --git a/obsolete/lispusers/LoadPatches b/obsolete/lispusers/LoadPatches deleted file mode 100644 index 2de5a1e6..00000000 --- a/obsolete/lispusers/LoadPatches +++ /dev/null @@ -1,72 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "16-Nov-88 14:11:42" {PHYLUM}LISP>LYRIC>LOADPATCHES.;3 3441 - - changes to%: (VARS LOADPATCHESCOMS) - (FNS LoadPatches COLLECT-PATCH-FILES) - - previous date%: "27-Sep-88 22:56:49" {PHYLUM}LISP>LYRIC>LOADPATCHES.;1) - - -(* " -Copyright (c) 1985, 1988 by Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT LOADPATCHESCOMS) - -(RPAQQ LOADPATCHESCOMS ((FNS LoadPatches COLLECT-PATCH-FILES) - (DECLARE%: DONTCOPY (PROP FILETYPE LOADPATCHES)))) -(DEFINEQ - -(LoadPatches - [LAMBDA (DIRECTORY LDFLG AFTERDATE) (* ; "Edited 16-Nov-88 13:08 by Burwell") - -(* ;;; "Load all compiled files from the directory") - - (DECLARE (GLOBALVARS *COMPILED-EXTENSIONS*)) - (LET [(files (SORT (for EXT in *COMPILED-EXTENSIONS* - bind (AFTERIDATE _ (if AFTERDATE - then (OR (IDATE AFTERDATE) - 0) - else 0)) join (COLLECT-PATCH-FILES DIRECTORY EXT - AFTERIDATE)) - (FUNCTION (LAMBDA (X Y) - (LESSP (CDR X) - (CDR Y] (* ; - "files are sorted by increasing date") - (for file in files do (SELECTQ LDFLG - (HIDDEN (* ; - "Load the file, but don't put it on FILELST") - (LOAD? (CAR file) - T) - (SETQ FILELST (DREMOVE (FILENAMEFIELD (CAR file) - 'NAME) - FILELST))) - (LOAD? (CAR file) - LDFLG))) - files]) - -(COLLECT-PATCH-FILES - [LAMBDA (DIRECTORY EXT AFTERIDATE) (* ; "Edited 16-Nov-88 13:13 by Burwell") - - (* ;; "Generate list of files in DIRECTORY with extension EXT more recent than idate AFTERIDATE. Return list of pairs (file . date). Omits subdirectories.") - - (RESETLST - (LET ((FILING.ENUMERATION.DEPTH 1) - (NAKED-DIR (UNPACKFILENAME.STRING DIRECTORY 'DIRECTORY)) - FILE DATE) - (bind [GEN _ (\GENERATEFILES (CONCAT DIRECTORY "*." EXT ";") - '(ICREATIONDATE) - '(SORT RESETLST] while (SETQ FILE (\GENERATENEXTFILE GEN)) - when (AND (STRING-EQUAL (UNPACKFILENAME.STRING FILE 'DIRECTORY) - NAKED-DIR) - (> (SETQ DATE (\GENERATEFILEINFO GEN 'ICREATIONDATE)) - AFTERIDATE)) collect (CONS FILE DATE))))]) -) -(DECLARE%: DONTCOPY - -(PUTPROPS LOADPATCHES FILETYPE :COMPILE-FILE) -) -(PUTPROPS LOADPATCHES COPYRIGHT ("Xerox Corporation" 1985 1988)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (608 3275 (LoadPatches 618 . 2308) (COLLECT-PATCH-FILES 2310 . 3273))))) -STOP diff --git a/obsolete/lispusers/MATHSERVER b/obsolete/lispusers/MATHSERVER deleted file mode 100644 index c52bd79f..00000000 --- a/obsolete/lispusers/MATHSERVER +++ /dev/null @@ -1,3637 +0,0 @@ -(FILECREATED "15-Apr-87 10:54:01" {IVY}LISP>MATHSERVER.;1 129647 - - changes to: (METHODS Server.ExecuteCommandFile) - (FNS Server.ExecuteCommandFile MS.TopLevel MS.ExpandFilename MS.SubmitBatchJob - MS.RunInteractiveJob MS.Compile MS.Link MS.CompileLink MS.CompileLinkRun - MS.StartDefaultFE) - (VARS MATHSERVERCOMS) - - previous date: "12-Dec-86 19:13:28" {PHYLUM}KOTO>MATHSERVER.;1) - - -(* Copyright (c) 1986, 1987 by Xerox Corporation. All rights reserved.) - -(PRETTYCOMPRINT MATHSERVERCOMS) - -(RPAQQ MATHSERVERCOMS ((* * SERVER MENU - Sets up the main Server Free Menu) - (* MENU AND WINDOW FUNCTIONS) - (FNS MS.TopLevel MS.CreateFreeMenu MS.SelectHost MS.ExpandFilename MS.CloseErrorWindow - MS.CleanupErrorFile MS.AttachErrorWindow MS.MostRoom MS.GetMessageWindow - MS.MakeIconWindow PrintMsg) - (* SERVER METACLASS FUNCTIONS) - (FNS MS.MakeMenuOfKnownHosts MS.DestroyInstances) - (* MATH SERVER FUNCTIONS) - (FNS MS.SubmitBatchJob MS.AbortBatchJob MS.Status MS.DisplayStatus MS.RunInteractiveJob - MS.Compile MS.Link MS.CompileLink MS.CLR.Check MS.CLR.NoCheck MS.CompileLinkRun) - (* FORTRAN EDITOR FUNCTIONS) - (FNS MS.StartNewFE MS.StartDefaultFE MS.FindFortranEdit MS.CheckForDirtyFile) - (* ERROR HANDLING FUNCTIONS) - (FNS MS.BatchErrors? MS.BatchLog) - (* Icon BITMAPS) - (BITMAPS MS.Icon MS.IconMask) - (* VARS) - (ADDVARS (BackgroundMenuCommands (Server% Menu (QUOTE (MS.TopLevel)) - "Start the Server Menu"))) - (VARS (BackgroundMenu NIL)) - (GLOBALVARS MS.HostPopMenu) - (* * FORTRAN EDIT - Sets up a Fortran Edit Process) - (* MAIN FUNCTIONS) - (FNS FE.TopLevel FE.AdjustProps FE.CaretPosition TEDIT.PARA&CHAR FE.CharFn FE.GetEditProps - FE.GetSourceFileName FE.LoopFn) - (* WINDOW FUNCTIONS) - (FNS FE.GetPositionWindow FE.GetEditWindow FE.GetMessageWindow FE.ReshapeFn FE.ShadeWindow) - (* LOCALMENU FUNCTIONS) - (FNS FE.CreateLocalMenu FE.SetHost FE.SetDirectory FE.MyGet FE.MyPut FE.StripVersion - FE.Compile FE.Link FE.CompileLinkRun FE.RunInteractive) - (* SERVER METACLASS FUNCTIONS) - (FNS FE.ValidHostname FE.GetServer) - (* ICON STUFF) - (FNS FE.ShrinkIconCreate) - (BITMAPS FE.Icon FE.IconMask) - (INITVARS (FE.defaultFont (FONTCLASS (QUOTE FORTRANEDITFONT) - (QUOTE (1 (GACHA 12) - (GACHA 10) - (GACHA 10))))) - (FE.iconFont (FONTCREATE (QUOTE HELVETICA) - 8 - (QUOTE BOLD))) - (FE.iconTitleRegion (create REGION LEFT _ 8 BOTTOM _ 8 WIDTH _ 110 HEIGHT _ 40)) - (FE.titledIconTemplate (create TITLEDICON ICON _ FE.Icon MASK _ FE.IconMask - TITLEREG _ FE.iconTitleRegion))) - (* VARS) - (ADDVARS (BackgroundMenuCommands (Fortran% Edit (QUOTE (FE.TopLevel)) - "Start a Fortran Edit"))) - (VARS (BackgroundMenu NIL)) - (GLOBALVARS FE.defaultFont FE.iconFont FE.titledIconTemplate TEDIT.READTABLE) - (* * SERVERS -- Defines the Loops MathServer objects) - (CLASSES Cray FortranServer MathServer Server VMSServer) - (METHODS FortranServer.Compile FortranServer.Compiled? FortranServer.Link - FortranServer.Linked? MathServer.AlertManager Server.AbortJob - Server.CommandFileExtension Server.Description Server.Error? Server.ErrorFile - Server.ErrorString Server.ExecuteCommandFile Server.ExtractFilename Server.GetQueues - Server.GetTime Server.Host Server.MakeError Server.MakeFullName - Server.MakePartialName Server.Name Server.PutErrorInWindow Server.PutTextInWindow - Server.Result Server.RunFile Server.RunJob Server.ServerDirectory - Server.SourceExtension Server.Status Server.SubmitJob Server.UserDirectory - VMSServer.MakeCommandString) - (FNS MS.MakeInstances StripPA) - (P (MS.DestroyInstances) - (MS.MakeInstances)) - (* * PROGRAMCHAT - Windowless CHAT for communication) - (FNS OPENCHATSTREAM PROGRAMCHAT PROGRAMCHAT.LOGIN PROGRAMCHAT.OUTPUT) - (* VARS for our site) - (VARS NETWORKLOGINFO) - (P (pushnew NETWORKOSTYPES (QUOTE (GSLVAX . VMS)) - (QUOTE (SITKA . VMS)) - (QUOTE (MADVAX . VMS)))) - (* * PROGRAMMER'S INTERFACE - use remote servers with LISP calls) - (FNS PRIN.RunRemote PRIN.ValidateHost PRIN.ValidateFilename PRIN.Error))) - (* * SERVER MENU - Sets up the main Server Free Menu) - - - - -(* MENU AND WINDOW FUNCTIONS) - -(DEFINEQ - -(MS.TopLevel - (LAMBDA NIL (* DSB "15-Apr-87 10:19") - (* Sets up the ServerFreeMenu, with PopUpMenu for host - selection and with attached messageWindow) - (PROG (menuWindow menuRegion messageWindow side) - (SETQ menuWindow (MS.CreateFreeMenu 470 470)) - (FM.CHANGESTATE (FM.ITEMFROMID menuWindow (QUOTE QUEUE)) - menuWindow) - (SETQ menuRegion (WINDOWPROP menuWindow (QUOTE REGION))) - - (* * Create PopUp menu for selection of Host) - - - (SETQ MS.HostPopMenu (MS.MakeMenuOfKnownHosts)) - - (* * create, attach and save pointer to messageWindow) - - - (SETQ messageWindow (CREATEW (CREATEREGION 0 0 200 150) - "Message Window" NIL T)) - (SETQ side (QUOTE LEFT)) - (COND - ((EQ (QUOTE LEFT) - (MS.MostRoom menuWindow)) - (SETQ side (QUOTE RIGHT))) - (T NIL)) - (ATTACHWINDOW messageWindow menuWindow side (QUOTE JUSTIFY)) - (WINDOWPROP menuWindow (QUOTE MessageWindow) - messageWindow) - (WINDOWPROP menuWindow (QUOTE ICONFN) - (FUNCTION MS.MakeIconWindow)) - (OPENW menuWindow)))) - -(MS.CreateFreeMenu - (LAMBDA (LEFT BOTTOM) (* DSB " 9-Dec-86 15:50") - (* returns a free menu window at specified position) - (FM.FORMATMENU (BQUOTE (((TYPE TITLE LABEL FortranEdit-Commands: FONT (MODERN 12 BOLD)) - (LABEL StartNew SELECTEDFN MS.StartNewFE) - (LABEL StartWithDefault SELECTEDFN MS.StartDefaultFE)) - ((TYPE TITLE LABEL PlotMenu-Commands: FONT (MODERN 12 BOLD)) - (LABEL SimplePlot SELECTEDFN MAPL.Simple.TopLevel) - (LABEL Gen.Plot SELECTEDFN MAPL.Gen.TopLevel) - (LABEL MetaPlot SELECTEDFN MAPL.Meta.TopLevel)) - ((TYPE TITLE LABEL Compiler-Commands: FONT (MODERN 12 BOLD)) - (LABEL Compile SELECTEDFN MS.Compile) - (LABEL Link SELECTEDFN MS.Link) - (LABEL C/L SELECTEDFN MS.CompileLink)) - ((TYPE TITLE LABEL Run-Commands: FONT (MODERN 12 BOLD)) - (LABEL RunInteractive SELECTEDFN MS.RunInteractiveJob) - (LABEL C/L/R SELECTEDFN MS.CLR.NoCheck) - (LABEL C?/L?/R SELECTEDFN MS.CLR.Check)) - ((TYPE TITLE LABEL Batch-Commands: FONT (MODERN 12 BOLD)) - (LABEL Submit SELECTEDFN MS.SubmitBatchJob) - (LABEL Status SELECTEDFN MS.Status) - (LABEL Errors? SELECTEDFN MS.BatchErrors?) - (LABEL Abort SELECTEDFN MS.AbortBatchJob) - (LABEL Log SELECTEDFN MS.BatchLog)) - ((TYPE TITLE LABEL "COMPUTE SERVER FILE INFO" FONT (MODERN 12 BOLD))) - ((TYPE EDITSTART LABEL Filename: FONT (MODERN 12 BOLD) - ITEMS - (FILENAME)) - (TYPE EDIT ID FILENAME LABEL "")) - ((TYPE EDITSTART LABEL DefaultDirectory: FONT (MODERN 12 BOLD) - ITEMS - (DEFAULTDIRECTORY)) - (TYPE EDIT ID DEFAULTDIRECTORY LABEL "")) - ((TYPE EDITSTART LABEL JobParameters: FONT (MODERN 12 BOLD) - ITEMS - (PARAMETERSTRING)) - (TYPE EDIT ID PARAMETERSTRING LABEL "")) - ((TYPE EDITSTART LABEL LinkParameters: FONT (MODERN 12 BOLD) - ITEMS - (LINKSTRING)) - (TYPE EDIT ID LINKSTRING LABEL "")) - ((TYPE TITLE LABEL "COMPUTE SERVER HOST INFO" FONT (MODERN 12 BOLD))) - ((TYPE TITLE LABEL HostName: FONT (MODERN 12 BOLD) - SELECTEDFN MS.SelectHost) - (TYPE TITLE ID HOST LABEL "")) - ((TYPE TITLE LABEL Queue: FONT (MODERN 12 BOLD)) - (TYPE NWAY ID QUEUE LABEL Fast CLASSNAME FastQueue) - (TYPE NWAY ID QUEUE LABEL Medium CLASSNAME MediumQueue) - (TYPE NWAY ID QUEUE LABEL Slow CLASSNAME SlowQueue)) - ((TYPE EDITSTART LABEL JobNumber: FONT (MODERN 12 BOLD) - ITEMS - (JOBNUMBER)) - (TYPE EDIT ID JOBNUMBER LABEL "")) - ((TYPE TITLE LABEL SERVERBROWSER-Command: FONT (MODERN 12 BOLD)) - (LABEL MakeBrowser SELECTEDFN MS.MakeInstances)) - (WINDOWPROPS TITLE "Server Menu" LEFT , LEFT BOTTOM , BOTTOM)))))) - -(MS.SelectHost - (LAMBDA (ITEM WINDOW BUTTONS) (* DSB "10-Jun-86 18:17") - (* Uses the pop-up menu MS.HostPopMenu to return a  - label and a pointer to the Host Server.) - (PROG ((promptW (GETPROMPTWINDOW WINDOW)) - (sItem (FM.ITEMFROMID WINDOW (QUOTE HOST))) - server) - - (* * Opens the PopUp menu. Returns the object name of the selected server.) - - - (CLEARW promptW) - (PRIN1 "Select host." promptW) - (SETQ server (MENU MS.HostPopMenu)) - (CLEARW promptW) - - (* * if the server exists, set the Host prop of the "HOST" item in the menu to point to the Server object. - Then change the item label to be the name of the Server object.) - - - (COND - (server (FM.ITEMPROP sItem (QUOTE Host) - server) - (FM.CHANGELABEL sItem WINDOW (_ server Name))) - (T - - (* * otherwise, set both the Host prop and the label of the "HOST" item in the menu to nil.) - - - (FM.ITEMPROP sItem (QUOTE Host) - NIL) - (FM.CHANGELABEL sItem WINDOW "")))))) - -(MS.ExpandFilename - (LAMBDA (ITEM WINDOW BUTTONS) (* DSB "15-Apr-87 10:22") - (* if filename contains a directory, expand it into  - separate slots) - (* this is a shortened version of MAPL.ExpandFilename) - (PROG ((state (FM.READSTATE WINDOW)) - filename defaultDirectory name) - (SETQ filename (LISTGET state (QUOTE FILENAME))) - - (* * strip off any extensions and version numbers) - - - (SETQ name (UNPACKFILENAME filename (QUOTE NAME))) - (FM.CHANGELABEL (FM.ITEMFROMID WINDOW (QUOTE FILENAME)) - WINDOW name) - - (* * if there is a directory, place it in the menu) - - - (SETQ defaultDirectory (UNPACKFILENAME filename (QUOTE DIRECTORY))) - (COND - (defaultDirectory (FM.CHANGELABEL (FM.ITEMFROMID WINDOW (QUOTE DEFAULTDIRECTORY)) - WINDOW defaultDirectory))) - - (* * update "state" and return) - - - (SETQ state (FM.READSTATE WINDOW)) - (RETURN state)))) - -(MS.CloseErrorWindow - (LAMBDA (mainWindow) (* DSB "15-Aug-86 15:27") - - (* * Check if an errorWindow already exists. If so, delete the {core} file behind it, clean up props, and finally  - close the window.) - - - (LET (oldWindow oldFile) - (SETQ oldWindow (find item in (ATTACHEDWINDOWS mainWindow) - suchthat (WINDOWPROP item (QUOTE ERRORFILE)))) - (COND - (oldWindow (MS.CleanupErrorFile oldWindow) - (CLOSEW oldWindow)))))) - -(MS.CleanupErrorFile - (LAMBDA (errorWindow) (* DSB "15-Aug-86 15:30") - (* deletes the error file that resides in {core}, if  - it exists, and resets errorWindow prop to NIL) - (LET ((oldFile (WINDOWPROP errorWindow (QUOTE ERRORFILE)))) - (COND - (oldFile (CLOSEF? oldFile) - (DELFILE oldFile) - (WINDOWPROP errorWindow (QUOTE ERRORFILE) - NIL))) - NIL))) - -(MS.AttachErrorWindow - (LAMBDA (mainWindow title) (* DSB "15-Aug-86 15:22") - (* Attaches an error window to the main menu window) - - (* * MS.CloseErrorWindow should have been called prior to this. Nevertheless, we check for an old errorWindow, and  - if it exists, we call MS.CloseErrorWindow) - - - - (* * Make the error window and attach it to the appropriate side of the main window) - - - (LET (oldWindow errorWindow) - (SETQ oldWindow (find item in (ATTACHEDWINDOWS mainWindow) - suchthat (WINDOWPROP item (QUOTE ERRORFILE)))) - (AND oldWindow (MS.CloseErrorWindow mainWindow)) - (SETQ errorWindow (CREATEW (QUOTE (0 0 470 300)) - title NIL T)) - (ATTACHWINDOW errorWindow mainWindow (MS.MostRoom mainWindow) - (QUOTE JUSTIFY) - (QUOTE LOCALCLOSE)) - errorWindow))) - -(MS.MostRoom - (LAMBDA (WINDOW) (* DSB " 7-Aug-86 11:55") - (* determines if attached window should be on right or - left side of main window) - (LET ((region (WINDOWPROP WINDOW (QUOTE REGION))) - leftSpace rightSpace) - (SETQ leftSpace (fetch (REGION LEFT) of region)) - (SETQ rightSpace (DIFFERENCE 1025 (PLUS leftSpace (fetch (REGION WIDTH) - of region)))) - (COND - ((GEQ leftSpace rightSpace) - (QUOTE LEFT)) - (T (QUOTE RIGHT)))))) - -(MS.GetMessageWindow - (LAMBDA (WINDOW) (* DSB " 6-Jun-86 15:57") - (* maybe later, we'll check if the message window  - exists and if not, will make it first) - (WINDOWPROP WINDOW (QUOTE MessageWindow)))) - -(MS.MakeIconWindow - (LAMBDA (WINDOW OLDICON) (* DSB " 9-Dec-86 15:44") - - (* * Creates a window with an icon formed by two bit maps.) - - - (OR OLDICON (ICONW MS.Icon MS.IconMask)))) - -(PrintMsg - (LAMBDA (place msg) (* thh: " 6-Nov-85 11:04") - (* prints message in appropriate prompt window) - (* no message if place = DON'T) - (COND - ((Object? place) - (_ place ClearPromptWindow) - (_ place PromptPrint msg)) - ((TYPENAMEP place (QUOTE PLOT)) - (LET ((w (PLOTPROP place (QUOTE PLOTPROMPTWINDOW)))) - (CLEARW w) - (PRIN1 msg w))) - ((WINDOWP place) - (LET ((w (GETPROMPTWINDOW place 2))) - (CLEARW w) - (PRIN1 msg w))) - ((EQ place (QUOTE DON'T))) - (T (CLRPROMPT) - (PROMPTPRINT msg))))) -) - - - -(* SERVER METACLASS FUNCTIONS) - -(DEFINEQ - -(MS.MakeMenuOfKnownHosts - (LAMBDA NIL (* DSB "19-Aug-86 17:05") - (* makes the MS.HostPopMenu) - (create MENU - ITEMS _(for server in (_ ($ Server) - AllInstances!) - collect (LIST (_ server Name) - server - (_ server Description)))))) - -(MS.DestroyInstances - (LAMBDA NIL (* DSB "19-Aug-86 15:37") - (* obvious! Use MS.MakeInstances after this.) - (for instance in (_ ($ Server) - AllInstances!) - do (_ instance Destroy)))) -) - - - -(* MATH SERVER FUNCTIONS) - -(DEFINEQ - -(MS.SubmitBatchJob - (LAMBDA (ITEM WINDOW BUTTONS) (* DSB "15-Apr-87 10:28") - (* Creates the SubmitJob message to be sent to the  - appropriate host) - (PROG (state (promptW (GETPROMPTWINDOW WINDOW)) - (messageW (MS.GetMessageWindow WINDOW)) - filename defaultDirectory host validQueues queue parameterString result) - - (* * check that all required data is specified) - - - (SETQ state (MS.ExpandFilename ITEM WINDOW BUTTONS)) - (SETQ filename (LISTGET state (QUOTE FILENAME))) - (COND - ((EQUAL filename "") - (PrintMsg WINDOW "Unspecified file name.") - (RETURN))) - (SETQ defaultDirectory (LISTGET state (QUOTE DEFAULTDIRECTORY))) - (COND - ((EQUAL defaultDirectory "") - (PrintMsg WINDOW "Unspecified default directory.") - (RETURN))) - (SETQ host (FM.ITEMPROP (FM.ITEMFROMID WINDOW (QUOTE HOST)) - (QUOTE Host))) - (COND - ((NOT host) - (PrintMsg WINDOW "Unspecified host.") - (RETURN))) - (SETQ validQueues (_ host GetQueues)) - (SETQ queue (LISTGET state (QUOTE QUEUE))) - (COND - ((NOT queue) - (PrintMsg WINDOW "Unspecified queue.") - (RETURN)) - ((NOT (MEMBER queue validQueues)) - (CLEARW promptW) - (PRIN1 "Not a valid queue for this server" promptW) - (TERPRI promptW) - (PRINTOUT promptW "Valid queues: " validQueues) - (RETURN))) - (SETQ parameterString (LISTGET state (QUOTE PARAMETERSTRING))) - (COND - ((STRPOS "," parameterString) - (PrintMsg WINDOW "Remove comma(s) from JobParameters") - (RETURN))) - - (* * return the SubmitJob message) - - - (PrintMsg WINDOW "Submitting Batch Job ...") - (CLEARW messageW) - (MS.CloseErrorWindow WINDOW) - (COND - ((EQUAL parameterString "") - (SETQ result (_ host SubmitJob (PACKFILENAME (QUOTE DIRECTORY) - defaultDirectory - (QUOTE BODY) - filename) - queue))) - (T (SETQ result (_ host SubmitJob (PACKFILENAME (QUOTE DIRECTORY) - defaultDirectory - (QUOTE BODY) - filename) - queue - (LIST (MKSTRING parameterString)))))) - (PRIN1 result messageW) - (CLEARW promptW) - (PRIN1 "Done" promptW) - (FM.CHANGELABEL (FM.ITEMFROMID WINDOW (QUOTE JOBNUMBER)) - WINDOW - (CAR result))))) - -(MS.AbortBatchJob - (LAMBDA (ITEM WINDOW BUTTONS) (* DSB "12-Aug-86 09:52") - (* Creates the AbortJob message to be sent to the  - appropriate host) - (PROG ((state (FM.READSTATE WINDOW)) - (promptW (GETPROMPTWINDOW WINDOW)) - (messageW (MS.GetMessageWindow WINDOW)) - host jobNumber queue validQueues result) - - (* * check that the host name is specified) - - - (CLEARW promptW) - (SETQ host (FM.ITEMPROP (FM.ITEMFROMID WINDOW (QUOTE HOST)) - (QUOTE Host))) - (COND - ((NOT host) - (PrintMsg WINDOW "Unspecified host.") - (RETURN))) - - (* * check that the job number is specified) - - - (SETQ jobNumber (LISTGET state (QUOTE JOBNUMBER))) - (COND - ((EQUAL jobNumber "") - (SETQ jobNumber NIL) - (PrintMsg WINDOW "Unspecified job number.") - (RETURN))) - - (* * check that the queue is specified and valid) - - - (SETQ validQueues (_ host GetQueues)) - (SETQ queue (LISTGET state (QUOTE QUEUE))) - (COND - ((NOT queue) - (PrintMsg WINDOW "Unspecified queue.") - (RETURN)) - ((NOT (MEMBER queue validQueues)) - (CLEARW promptW) - (PRIN1 "Not a valid queue for this server" promptW) - (TERPRI promptW) - (PRINTOUT promptW "Valid queues: " validQueues) - (RETURN))) - - (* * abort the job and return the result) - - - (CLEARW promptW) - (PRINTOUT promptW "Job " jobNumber " on queue " queue " is being aborted ...") - (SETQ result (_ host AbortJob jobNumber queue)) - (TERPRI promptW) - (PRIN1 "Done" promptW) - (CLEARW messageW) - (PRIN1 result messageW)))) - -(MS.Status - (LAMBDA (ITEM WINDOW BUTTONS) (* DSB "12-Aug-86 17:53") - (* Creates the Status message to be sent to the  - appropriate host) - (PROG ((state (FM.READSTATE WINDOW)) - (promptW (GETPROMPTWINDOW WINDOW)) - (messageW (MS.GetMessageWindow WINDOW)) - host jobNumber result) - - (* * check that the host name is specified) - - - (CLEARW promptW) - (SETQ host (FM.ITEMPROP (FM.ITEMFROMID WINDOW (QUOTE HOST)) - (QUOTE Host))) - (COND - ((NOT host) - (PrintMsg WINDOW "Unspecified host.") - (RETURN))) - - (* * give notice if no job number is supplied) - - - (SETQ jobNumber (LISTGET state (QUOTE JOBNUMBER))) - (COND - ((NUMBERP (MKATOM jobNumber)) - (PRIN1 "Finding Status ..." promptW)) - (T (SETQ jobNumber NIL) - (PRIN1 "Unspecified job number." promptW) - (TERPRI promptW) - (PRIN1 "Finding status of all batch jobs ..." promptW))) - - (* * return the Status message) - - - (CLEARW messageW) - (SETQ result (_ host Status jobNumber)) - (MS.DisplayStatus result messageW) - (CLEARW promptW) - (PRIN1 "Done" promptW)))) - -(MS.DisplayStatus - (LAMBDA (result messageW) (* DSB "12-Aug-86 18:00") - (* Displays the status in nice format in  - messageWindow) - (PROG (number time) - (TERPRI messageW) - (PRIN1 " JOB CPU" messageW) - (TERPRI messageW) - (PRIN1 "- - - - - - - - - - - - - - - - -" messageW) - - (* * is it a single data item (JOB in CAAR) or...) - - - (COND - ((EQ (CAAR result) - (QUOTE JOB)) - (SETQ number (CADAR result)) - (SETQ time (CADADR result)) - (TERPRI messageW) - (PRIN1 (CONCAT " " number " " time) - messageW)) - (T (for item in result - do (SETQ number (CADAR item)) - (SETQ time (CADADR item)) - (TERPRI messageW) - (PRIN1 (CONCAT " " number " " time) - messageW))))))) - -(MS.RunInteractiveJob - (LAMBDA (ITEM WINDOW BUTTONS) (* DSB "15-Apr-87 10:30") - (* Creates the RunJob message to be sent to the  - appropriate host) - (PROG (state (promptW (GETPROMPTWINDOW WINDOW)) - (messageW (MS.GetMessageWindow WINDOW)) - filename defaultDirectory host parameterString result errorFile errorWindow) - - (* * check that all required data is specified) - - - (SETQ state (MS.ExpandFilename ITEM WINDOW BUTTONS)) - (SETQ filename (LISTGET state (QUOTE FILENAME))) - (COND - ((EQUAL filename "") - (PrintMsg WINDOW "Unspecified file name.") - (RETURN))) - (SETQ defaultDirectory (LISTGET state (QUOTE DEFAULTDIRECTORY))) - (COND - ((EQUAL defaultDirectory "") - (PrintMsg WINDOW "Unspecified default directory.") - (RETURN))) - (SETQ host (FM.ITEMPROP (FM.ITEMFROMID WINDOW (QUOTE HOST)) - (QUOTE Host))) - (COND - ((NOT host) - (PrintMsg WINDOW "Unspecified host.") - (RETURN))) - (SETQ parameterString (LISTGET state (QUOTE PARAMETERSTRING))) - (COND - ((STRPOS "," parameterString) - (PrintMsg WINDOW "Remove comma(s) from JobParameters") - (RETURN))) - - (* * return the RunJob message) - - - (CLEARW promptW) - (PRIN1 "Running interactive job ..." promptW) - (CLEARW messageW) - (MS.CloseErrorWindow WINDOW) - (COND - ((EQUAL parameterString "") - (SETQ result (_ host RunJob (PACKFILENAME (QUOTE DIRECTORY) - defaultDirectory - (QUOTE BODY) - filename)))) - (T (SETQ result (_ host RunJob (PACKFILENAME (QUOTE DIRECTORY) - defaultDirectory - (QUOTE BODY) - filename) - (LIST (MKSTRING parameterString)))))) - (PRIN1 result messageW) - (CLEARW promptW) - (COND - ((EQUAL (CAR result) - (QUOTE ERROR)) - (PRIN1 "Run-time warning or error" promptW) - (SETQ errorWindow (MS.AttachErrorWindow WINDOW "Run-time Errors")) - (SETQ errorFile (_ host ExtractFilename result)) - (_ host PutErrorInWindow errorFile errorWindow WINDOW)) - (T (PRIN1 "Done" promptW)))))) - -(MS.Compile - (LAMBDA (ITEM WINDOW BUTTONS) (* DSB "15-Apr-87 10:14") - (* Creates the Compile message to be sent to the  - appropriate host) - (PROG (state (promptW (GETPROMPTWINDOW WINDOW)) - (messageW (MS.GetMessageWindow WINDOW)) - filename defaultDirectory host result errorFile errorWindow) - (CLEARW messageW) - - (* * check that all required data is specified) - - - (SETQ state (MS.ExpandFilename ITEM WINDOW BUTTONS)) - (SETQ filename (LISTGET state (QUOTE FILENAME))) - (COND - ((EQUAL filename "") - (PrintMsg WINDOW "Unspecified file name.") - (RETURN))) - (SETQ defaultDirectory (LISTGET state (QUOTE DEFAULTDIRECTORY))) - (COND - ((EQUAL defaultDirectory "") - (PrintMsg WINDOW "Unspecified default directory.") - (RETURN))) - (SETQ host (FM.ITEMPROP (FM.ITEMFROMID WINDOW (QUOTE HOST)) - (QUOTE Host))) - (COND - ((NOT host) - (PrintMsg WINDOW "Unspecified host.") - (RETURN))) - - (* * check for dirty file in a Fortran Edit) - - - (COND - ((MS.CheckForDirtyFile filename promptW messageW) - (RETURN))) - - (* * send the Compile message) - - - (CLEARW promptW) - (PRIN1 "Compiling source file ..." promptW) - (MS.CloseErrorWindow WINDOW) - (SETQ result (_ host Compile (PACKFILENAME (QUOTE DIRECTORY) - defaultDirectory - (QUOTE BODY) - filename))) - (CLEARW messageW) - (PRIN1 result messageW) - (CLEARW promptW) - (COND - ((EQUAL (CAR result) - (QUOTE ERROR)) - (PRIN1 "Compilation Error" promptW) - (SETQ errorWindow (MS.AttachErrorWindow WINDOW "Compilation Errors")) - (SETQ errorFile (_ host ExtractFilename result)) - (_ host PutErrorInWindow errorFile errorWindow WINDOW)) - (T (PRIN1 "Successful Compilation" promptW)))))) - -(MS.Link - (LAMBDA (ITEM WINDOW BUTTONS) (* DSB "15-Apr-87 10:31") - (* Creates the Link message to be sent to the  - appropriate host) - (PROG (state (promptW (GETPROMPTWINDOW WINDOW)) - (messageW (MS.GetMessageWindow WINDOW)) - filename defaultDirectory host linkString result errorFile errorWindow) - - (* * check that all required data is specified) - - - (SETQ state (MS.ExpandFilename ITEM WINDOW BUTTONS)) - (SETQ filename (LISTGET state (QUOTE FILENAME))) - (COND - ((EQUAL filename "") - (PrintMsg WINDOW "Unspecified file name.") - (RETURN))) - (SETQ defaultDirectory (LISTGET state (QUOTE DEFAULTDIRECTORY))) - (COND - ((EQUAL defaultDirectory "") - (PrintMsg WINDOW "Unspecified default directory.") - (RETURN))) - (SETQ host (FM.ITEMPROP (FM.ITEMFROMID WINDOW (QUOTE HOST)) - (QUOTE Host))) - (COND - ((NOT host) - (PrintMsg WINDOW "Unspecified host.") - (RETURN))) - (SETQ linkString (LISTGET state (QUOTE LINKSTRING))) - (COND - ((STRPOS " " linkString) - (PrintMsg WINDOW "Remove spaces from LinkParameters") - (RETURN))) - - (* * return the Link message) - - - (CLEARW promptW) - (PRIN1 "Linking ..." promptW) - (CLEARW messageW) - (MS.CloseErrorWindow WINDOW) - (COND - ((EQUAL linkString "") - (SETQ result (_ host Link (PACKFILENAME (QUOTE DIRECTORY) - defaultDirectory - (QUOTE BODY) - filename)))) - (T (SETQ result (_ host Link (PACKFILENAME (QUOTE DIRECTORY) - defaultDirectory - (QUOTE BODY) - filename) - (LIST (MKSTRING linkString)))))) - (PRIN1 result messageW) - (CLEARW promptW) - (COND - ((EQUAL (CAR result) - (QUOTE ERROR)) - (PRIN1 "Linking Error" promptW) - (SETQ errorWindow (MS.AttachErrorWindow WINDOW "Link Errors")) - (SETQ errorFile (_ host ExtractFilename result)) - (_ host PutErrorInWindow errorFile errorWindow WINDOW)) - (T (PRIN1 "Done: successful link" promptW)))))) - -(MS.CompileLink - (LAMBDA (ITEM WINDOW BUTTONS) (* DSB "15-Apr-87 10:31") - (* Creates the Compile and Link messages to be sent to - the appropriate host) - (PROG (state (promptW (GETPROMPTWINDOW WINDOW)) - (messageW (MS.GetMessageWindow WINDOW)) - filename defaultDirectory host linkString result errorFile errorWindow) - (CLEARW messageW) - - (* * check that all required data is specified) - - - (SETQ state (MS.ExpandFilename ITEM WINDOW BUTTONS)) - (SETQ filename (LISTGET state (QUOTE FILENAME))) - (COND - ((EQUAL filename "") - (PrintMsg WINDOW "Unspecified file name.") - (RETURN))) - (SETQ defaultDirectory (LISTGET state (QUOTE DEFAULTDIRECTORY))) - (COND - ((EQUAL defaultDirectory "") - (PrintMsg WINDOW "Unspecified default directory.") - (RETURN))) - (SETQ host (FM.ITEMPROP (FM.ITEMFROMID WINDOW (QUOTE HOST)) - (QUOTE Host))) - (COND - ((NOT host) - (PrintMsg WINDOW "Unspecified host.") - (RETURN))) - (SETQ linkString (LISTGET state (QUOTE LINKSTRING))) - (COND - ((STRPOS " " linkString) - (PrintMsg WINDOW "Remove spaces from LinkParameters") - (RETURN))) - - (* * check for dirty file in a Fortran Edit) - - - (COND - ((MS.CheckForDirtyFile filename promptW messageW) - (RETURN))) - - (* * send the Compile message) - - - (CLEARW promptW) - (PRIN1 "Compiling source file ..." promptW) - (MS.CloseErrorWindow WINDOW) - (SETQ result (_ host Compile (PACKFILENAME (QUOTE DIRECTORY) - defaultDirectory - (QUOTE BODY) - filename))) - (CLEARW messageW) - (PRIN1 result messageW) - (CLEARW promptW) - (COND - ((EQUAL (CAR result) - (QUOTE ERROR)) - (PRIN1 "Compilation error" promptW) - (SETQ errorWindow (MS.AttachErrorWindow WINDOW "Compilation Errors")) - (SETQ errorFile (_ host ExtractFilename result)) - (_ host PutErrorInWindow errorFile errorWindow WINDOW) - (RETURN)) - (T (PRIN1 "Compile finished. Now linking..." promptW))) - - (* * return the Link message) - - - (COND - ((EQUAL linkString "") - (SETQ result (_ host Link (PACKFILENAME (QUOTE DIRECTORY) - defaultDirectory - (QUOTE BODY) - filename)))) - (T (SETQ result (_ host Link (PACKFILENAME (QUOTE DIRECTORY) - defaultDirectory - (QUOTE BODY) - filename) - (LIST (MKSTRING linkString)))))) - (CLEARW messageW) - (PRIN1 result messageW) - (CLEARW promptW) - (COND - ((EQUAL (CAR result) - (QUOTE ERROR)) - (PRIN1 "Linking Error" promptW) - (SETQ errorWindow (MS.AttachErrorWindow WINDOW "Link Errors")) - (SETQ errorFile (_ host ExtractFilename result)) - (_ host PutErrorInWindow errorFile errorWindow WINDOW)) - (T (PRIN1 "Done: successful link" promptW)))))) - -(MS.CLR.Check - (LAMBDA (ITEM WINDOW BUTTONS) (* DSB "12-Aug-86 10:17") - (* This functin calls MS.CompileLinkRun with the check - flag T) - (MS.CompileLinkRun ITEM WINDOW BUTTONS T))) - -(MS.CLR.NoCheck - (LAMBDA (ITEM WINDOW BUTTONS) (* DSB "12-Aug-86 10:18") - (* This functin calls MS.CompileLinkRun with the check - flag NIL) - (MS.CompileLinkRun ITEM WINDOW BUTTONS NIL))) - -(MS.CompileLinkRun - (LAMBDA (ITEM WINDOW BUTTONS checkFlag) (* DSB "15-Apr-87 10:34") - (* Sequentially creates the Compile, Link and RunJob  - messages, to be sent to the appropriate host) - (PROG (state (promptW (GETPROMPTWINDOW WINDOW)) - (messageW (MS.GetMessageWindow WINDOW)) - filename defaultDirectory host parameterString linkString result errorFile - errorWindow) - (CLEARW messageW) - - (* * check that all required data is specified) - - - (SETQ state (MS.ExpandFilename ITEM WINDOW BUTTONS)) - (SETQ filename (LISTGET state (QUOTE FILENAME))) - (COND - ((EQUAL filename "") - (PrintMsg WINDOW "Unspecified file name.") - (RETURN))) - (SETQ defaultDirectory (LISTGET state (QUOTE DEFAULTDIRECTORY))) - (COND - ((EQUAL defaultDirectory "") - (PrintMsg WINDOW "Unspecified default directory.") - (RETURN))) - (SETQ host (FM.ITEMPROP (FM.ITEMFROMID WINDOW (QUOTE HOST)) - (QUOTE Host))) - (COND - ((NOT host) - (PrintMsg WINDOW "Unspecified host.") - (RETURN))) - (SETQ linkString (LISTGET state (QUOTE LINKSTRING))) - (COND - ((STRPOS " " linkString) - (PrintMsg WINDOW "Remove spaces from LinkParameters") - (RETURN))) - (SETQ parameterString (LISTGET state (QUOTE PARAMETERSTRING))) - (COND - ((STRPOS "," parameterString) - (PrintMsg WINDOW "Remove comma(s) from JobParameters") - (RETURN))) - - (* * check for dirty file in a Fortran Edit) - - - (COND - ((MS.CheckForDirtyFile filename promptW messageW) - (RETURN))) - - (* * send the Compile message) - - - (CLEARW promptW) - (MS.CloseErrorWindow WINDOW) - (COND - ((AND checkFlag (_ host Compiled? host defaultDirectory filename)) - (PRIN1 "Source file already compiled. " promptW)) - (T (PRIN1 "Compiling source file ..." promptW) - (SETQ result (_ host Compile (PACKFILENAME (QUOTE DIRECTORY) - defaultDirectory - (QUOTE BODY) - filename))) - (CLEARW messageW) - (PRIN1 result messageW) - (CLEARW promptW) - (COND - ((EQUAL (CAR result) - (QUOTE ERROR)) - (PRIN1 "Compilation error" promptW) - (SETQ errorWindow (MS.AttachErrorWindow WINDOW "Compilation Errors")) - (SETQ errorFile (_ host ExtractFilename result)) - (_ host PutErrorInWindow errorFile errorWindow WINDOW) - (RETURN)) - (T (PRIN1 "Compile finished. " promptW))))) - - (* * return the Link message) - - - (COND - ((AND checkFlag (_ host Linked? host defaultDirectory filename)) - (TERPRI promptW) - (PRIN1 " Exec. file exists. Now running it..." promptW)) - (T (PRIN1 " Now linking..." promptW) - (COND - ((EQUAL linkString "") - (SETQ result (_ host Link (PACKFILENAME (QUOTE DIRECTORY) - defaultDirectory - (QUOTE BODY) - filename)))) - (T (SETQ result (_ host Link (PACKFILENAME (QUOTE DIRECTORY) - defaultDirectory - (QUOTE BODY) - filename) - (LIST (MKSTRING linkString)))))) - (CLEARW messageW) - (PRIN1 result messageW) - (CLEARW promptW) - (COND - ((EQUAL (CAR result) - (QUOTE ERROR)) - (PRIN1 "Linking Error" promptW) - (SETQ errorWindow (MS.AttachErrorWindow WINDOW "Link Errors")) - (SETQ errorFile (_ host ExtractFilename result)) - (_ host PutErrorInWindow errorFile errorWindow WINDOW) - (RETURN)) - (T (PRIN1 "Link finished. Now running job ..." promptW))))) - - (* * return the RunJob message) - - - (COND - ((EQUAL parameterString "") - (SETQ result (_ host RunJob (PACKFILENAME (QUOTE DIRECTORY) - defaultDirectory - (QUOTE BODY) - filename)))) - (T (SETQ result (_ host RunJob (PACKFILENAME (QUOTE DIRECTORY) - defaultDirectory - (QUOTE BODY) - filename) - (LIST (MKSTRING parameterString)))))) - (CLEARW messageW) - (PRIN1 result messageW) - (CLEARW promptW) - (COND - ((EQUAL (CAR result) - (QUOTE ERROR)) - (PRIN1 "Run-time warning or error" promptW) - (SETQ errorWindow (MS.AttachErrorWindow WINDOW "Run-time Errors")) - (SETQ errorFile (_ host ExtractFilename result)) - (_ host PutErrorInWindow errorFile errorWindow WINDOW)) - (T (PRIN1 "Done" promptW)))))) -) - - - -(* FORTRAN EDITOR FUNCTIONS) - -(DEFINEQ - -(MS.StartNewFE - (LAMBDA NIL (* DSB "21-Aug-86 15:38") - (* starts a new Fortran Edit process without setting  - defaults or getting a file) - (FE.TopLevel))) - -(MS.StartDefaultFE - (LAMBDA (ITEM WINDOW BUTTONS) (* DSB "15-Apr-87 10:35") - - (* Starts a FE, sets defaults according to the values in the ServerMenu, and gets the source file named in the  - server menu, if it exists.) - - - (PROG (state textStream host hostname defaultDirectory directory filename name getFilename) - (SETQ textStream (FE.TopLevel)) - (SETQ state (MS.ExpandFilename ITEM WINDOW BUTTONS)) - (SETQ filename (LISTGET state (QUOTE FILENAME))) - (SETQ defaultDirectory (LISTGET state (QUOTE DEFAULTDIRECTORY))) - (SETQ host (FM.ITEMPROP (FM.ITEMFROMID WINDOW (QUOTE HOST)) - (QUOTE Host))) - (COND - (host (TEXTPROP textStream (QUOTE MS.HOST) - host) - (SETQ hostname (_ host Name)) - (TEXTPROP textStream (QUOTE MS.HOSTNAME) - hostname) - (TEXTPROP textStream (QUOTE MS.DIRECTORY) - (_ host UserDirectory)))) - (COND - ((NOT (EQUAL defaultDirectory "")) - (SETQ directory (MKATOM defaultDirectory)) - (TEXTPROP textStream (QUOTE MS.DIRECTORY) - directory))) - (COND - ((NOT (EQUAL filename "")) - (SETQ name (MKATOM filename)))) - (COND - ((AND host directory name) - (SETQ getFilename (PACKFILENAME (QUOTE HOST) - hostname - (QUOTE DIRECTORY) - directory - (QUOTE NAME) - name - (QUOTE EXTENSION) - (_ host SourceExtension))) - (COND - ((INFILEP getFilename) - (TEDIT.GET (TEXTOBJ textStream) - getFilename) - (TEXTPROP textStream (QUOTE FILENAME) - getFilename) - (TEDIT.PROMPTPRINT textStream (CONCAT "Retrieved file " getFilename))) - (T (TEDIT.PROMPTPRINT textStream (CONCAT "File " getFilename " not found"))))))) - )) - -(MS.FindFortranEdit - (LAMBDA (filename) (* DSB "22-Aug-86 09:36") - - (* * searches through all open windows and returns a stream number of a Fortran Edit process whose filename matches - the parameter filename If no such process exists, it returns NIL.) - - - (LET (textStream fullEditFilename editFilename) - (for window in (OPENWINDOWS) do (COND - ((WINDOWPROP window (QUOTE FORTRANEDIT)) - (SETQ textStream (TEXTSTREAM window)) - (SETQ fullEditFilename (TEXTPROP - textStream - (QUOTE FILENAME))) - (SETQ editFilename (UNPACKFILENAME - fullEditFilename - (QUOTE NAME))) - (COND - ((EQUAL (U-CASE editFilename) - (U-CASE (MKATOM filename))) - (RETURN textStream)) - (T NIL)))))))) - -(MS.CheckForDirtyFile - (LAMBDA (filename promptW messageW) (* DSB "22-Aug-86 09:42") - - (* * returns T (to abort the operation) only if there exists a dirty file with the same name and the user does not  - click the left button.) - - - (PROG (textStream dirty) - - (* * see if there is an active FE with filename) - - - (SETQ textStream (MS.FindFortranEdit filename)) - (COND - ((NOT textStream) - (RETURN NIL))) - - (* * if the file has been changed, give the user the option to abort the operation) - - - (SETQ dirty (TEDIT.STREAMCHANGEDP textStream)) - (COND - (dirty (CLEARW promptW) - (COND - ((MOUSECONFIRM "Not saved yet; LEFT to use previous version." T promptW) - (PRIN1 "Using old version on the server" messageW) - (RETURN NIL)) - (T (PRIN1 "Operation aborted. Put file in Fortran Edit to server." messageW) - (RETURN T)))) - (T (PRIN1 "File in Fortran Editor has not been changed. Operation proceeds" messageW) - (RETURN NIL)))))) -) - - - -(* ERROR HANDLING FUNCTIONS) - -(DEFINEQ - -(MS.BatchErrors? - (LAMBDA (ITEM WINDOW BUTTONS) (* DSB "15-Aug-86 18:07") - (* If Batch errors have occurred, it displays them in  - the error window) - (PROG ((state (FM.READSTATE WINDOW)) - (promptW (GETPROMPTWINDOW WINDOW)) - (messageW (MS.GetMessageWindow WINDOW)) - host defaultDirectory jobNumber errorFile localErrorFile resultFile stream result - errorWindow) - - (* * check that all required data is specified) - - - (CLEARW promptW) - (SETQ host (FM.ITEMPROP (FM.ITEMFROMID WINDOW (QUOTE HOST)) - (QUOTE Host))) - (COND - ((NOT host) - (PrintMsg WINDOW "Unspecified host.") - (RETURN))) - (SETQ defaultDirectory (LISTGET state (QUOTE DEFAULTDIRECTORY))) - (COND - ((EQUAL defaultDirectory "") - (PrintMsg WINDOW "Unspecified default directory.") - (RETURN))) - (SETQ jobNumber (LISTGET state (QUOTE JOBNUMBER))) - (COND - ((EQUAL jobNumber "") - (SETQ jobNumber NIL) - (PrintMsg WINDOW "Unspecified job number.") - (RETURN))) - - (* * get the error file) - - - (CLEARW promptW) - (CLEARW messageW) - (MS.CloseErrorWindow WINDOW) - (SETQ resultFile (INFILEP (PACKFILENAME (QUOTE HOST) - (_ host Name) - (QUOTE DIRECTORY) - defaultDirectory - (QUOTE NAME) - jobNumber - (QUOTE EXTENSION) - (QUOTE RES)))) - (SETQ errorFile (INFILEP (PACKFILENAME (QUOTE HOST) - (_ host Name) - (QUOTE DIRECTORY) - defaultDirectory - (QUOTE NAME) - jobNumber - (QUOTE EXTENSION) - (QUOTE ERR)))) - (COND - (errorFile (PRIN1 "Retrieving error messages..." promptW) - (SETQ stream (OPENFILE resultFile (QUOTE INPUT))) - (SETQ result (READ stream)) - (CLOSEF stream) - (DELFILE resultFile) - (PRIN1 result messageW) - (SETQ localErrorFile (COPYFILE errorFile (QUOTE {core}localErrorFile))) - (DELFILE errorFile) - (SETQ errorWindow (MS.AttachErrorWindow WINDOW "Batch Errors")) - (_ host PutErrorInWindow localErrorFile errorWindow WINDOW)) - (T (PRIN1 "No batch errors found" promptW)))))) - -(MS.BatchLog - (LAMBDA (ITEM WINDOW BUTTONS) (* DSB "15-Aug-86 18:07") - (* opens a window to display the batch log file) - (PROG ((state (FM.READSTATE WINDOW)) - (promptW (GETPROMPTWINDOW WINDOW)) - (messageW (MS.GetMessageWindow WINDOW)) - filename host logfile localLogfile errorWindow) - - (* * check that all required data is specified) - - - (SETQ filename (LISTGET state (QUOTE FILENAME))) - (COND - ((EQUAL filename "") - (PrintMsg WINDOW "Unspecified file name.") - (RETURN))) - (SETQ host (FM.ITEMPROP (FM.ITEMFROMID WINDOW (QUOTE HOST)) - (QUOTE Host))) - (COND - ((NOT host) - (PrintMsg WINDOW "Unspecified host.") - (RETURN))) - - (* * get the logfile) - - - (CLEARW promptW) - (CLEARW messageW) - (MS.CloseErrorWindow WINDOW) - (SETQ logfile (INFILEP (PACKFILENAME (QUOTE HOST) - (_ host Name) - (QUOTE DIRECTORY) - (_ host UserDirectory) - (QUOTE BODY) - filename - (QUOTE EXTENSION) - (QUOTE LOG)))) - (COND - (logfile (SETQ localLogfile (COPYFILE logfile (QUOTE {core}localLogfile))) - (DELFILE logfile) - (PRIN1 "fetching Batch Log File..." promptW) - (SETQ errorWindow (MS.AttachErrorWindow WINDOW "Batch Log File")) - (_ host PutErrorInWindow localLogfile errorWindow WINDOW)) - (T (PRIN1 "Batch Log File not found" promptW)))))) -) - - - -(* Icon BITMAPS) - - -(RPAQ MS.Icon (READBITMAP)) -(78 74 -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"L@@@@@@@@@@@@@@@@@@L" -"L@@@@@@@@@@@@@@@@@@L" -"L@@@@@@@@@@@@@@@@@@L" -"L@@@@@@@@@@@@@@@@@@L" -"L@@@@@@@@@@@@@@@@@@L" -"L@@@@@@@@@@@@@@@@@@L" -"L@@@@@@@@@@@@@@@@@@L" -"L@@@@@@@@@@@@@@@@@@L" -"L@@@@@@@@@@@@@@@@@@L" -"L@@@@@@@@@@@@@@@@@@L" -"L@@@@@@@@@@@@@@@@@@L" -"L@@@@@@@@@@@@@@@@@@L" -"L@@@@@@@@O@@@@@@@@@L" -"L@@@@@@@@I@GH@@@@@@L" -"L@@@@@@B@O@DHGH@@@@L" -"L@@@@@@B@O@@HDH@@@@L" -"L@@@@@@B@I@AHGH@@@@L" -"L@@@@@@B@O@C@GH@@@@L" -"L@@@@@@B@@@GLDH@@@@L" -"L@@@@@@B@@@@@GH@@@@L" -"L@@@@@@@@@@D@@@D@@@L" -"L@@@@@@@@@@F@@@L@@@L" -"L@@@@CN@@@@C@DAH@@@L" -"L@@@@@F@@@@A@DA@@@@L" -"L@@@@@L@@@@AHDC@@@@L" -"L@@@@AH@@@@@HDB@@@@L" -"L@@@CA@@@@@@LDF@@@@L" -"L@@@CC@@@@@@D@D@@@@L" -"L@@@@@@@@@@@D@D@CO@L" -"L@@@@@@@@@@@FNL@CO@L" -"L@@@GH@@@@@@BJH@AH@L" -"L@@@DH@@@@@@BJH@AH@L" -"L@@@@H@@@COOOOOOIH@L" -"L@@@AH@@@B@@@@@@IH@L" -"L@@@C@@@@B@@@@@@IH@L" -"L@@@GL@@@B@@@@@@IH@L" -"L@@@@@@@@B@D@@@@IH@L" -"L@@@@@@@@B@D@@L@IH@L" -"L@@@@@@@@B@D@@@@IH@L" -"L@COOOH@@BCOHCO@IH@L" -"L@COOOH@@B@D@@@@IH@L" -"L@CH@CH@@B@D@@L@IH@L" -"L@C@@AH@@B@D@@@@OH@L" -"L@C@@AH@@B@@@@@@OH@L" -"L@C@@AH@@B@@@@@@H@@L" -"L@C@@AH@@B@@@@@@H@@L" -"L@C@@AH@@BBDH@@@H@@L" -"L@C@@AH@@BAE@@@@H@@L" -"L@C@@AH@@B@N@@@@H@@L" -"L@C@@AH@@BCOHCO@H@@L" -"L@C@@AH@@B@N@@@@H@@L" -"L@CH@CKFMJAE@@@@H@@L" -"L@COOOH@@BBDH@@@H@@L" -"L@COOOH@@B@@@@@@H@@L" -"L@@AO@@@@COOOOOOH@@L" -"LAOOOON@@@@@@@@@@@@L" -"LA@@@@B@@@@@@@@@@@@L" -"LA@@@@B@@@@@@@@@@@@L" -"LA@@@@B@@@@@@@@@@@@L" -"LAOOOON@@@@@@@@@@@@L" -"L@@@@@@@@@@@@@@@@@@L" -"L@@@@@@@@@@@@@@@@@@L" -"LC@HNGLICLOCNDBOCN@L" -"LCOIOA@IB@HBBDBHBB@L" -"LBNIAA@ICLNCNFFNCN@L" -"LBDIOA@O@DHCHCLHCH@L" -"LB@IAA@IBDHBLAHHBL@L" -"LB@IAA@ICLOBFAHOBF@L" -"L@@@@@@@@@@@@@@@@@@L" -"L@@@@@@@@@@@@@@@@@@L" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL") - -(RPAQ MS.IconMask (READBITMAP)) -(78 74 -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOH@COOOOOOOOOOOOOL" -"OOO@@AOOOOOOOOOOOOOL" -"OOO@@AOOOOOOOOOOOOOL" -"OOO@@AOOOOOOOOOOOOOL" -"OOO@@AOOOOOOOOOOOOOL" -"OOO@@AOOOOOOOOOOOOOL" -"OOO@@AOOOOOOOOOOOOOL" -"OOO@@AOOOOOOOOOOOOOL" -"OOO@@AOOOOOOOOOOOOOL" -"OOO@@AOOOOOOOOOOOOOL" -"OOOH@COOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL" -"OOOOOOOOOOOOOOOOOOOL") - - - -(* VARS) - - -(ADDTOVAR BackgroundMenuCommands (Server% Menu (QUOTE (MS.TopLevel)) - "Start the Server Menu")) - -(RPAQQ BackgroundMenu NIL) -(DECLARE: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS MS.HostPopMenu) -) - (* * FORTRAN EDIT - Sets up a Fortran Edit Process) - - - - -(* MAIN FUNCTIONS) - -(DEFINEQ - -(FE.TopLevel - (LAMBDA (program window) (* DSB "22-Aug-86 11:49") - - (* * Edit a Fortran program using a specialized TEdit.) - - - - (* * Program is either a File name, an open Stream, or a string. If NIL, an empty edit window is open.) - - - - (* * Window is an optional window to be used for editing. If NIL, the user will be asked to sweep out a window on  - the screen.) - - - (PROG (editProps editWindow messageWindow processHandle textStream) - - (* * Get prop list for edit props) - - - (SETQ editProps (FE.GetEditProps)) - - (* * Get the window to be used) - - - (SETQ editWindow (FE.GetEditWindow window)) - - (* * Get the message window) - - - (SETQ messageWindow (FE.GetMessageWindow editWindow)) - - (* * Set up the edit process) - - - (SETQ processHandle (TEDIT program editWindow NIL editProps)) - - (* * Get the textstream parameter of the edit process) - - - (SETQ textStream (TEXTSTREAM editWindow)) - - (* * Do any final modifications) - - - (FE.AdjustProps processHandle textStream) - (WINDOWPROP editWindow (QUOTE FORTRANEDIT) - T) - (TEXTPROP textStream (QUOTE EDITWINDOW) - editWindow) - (TEXTPROP textStream (QUOTE MESSAGEWINDOW) - messageWindow) - (TEXTPROP textStream (QUOTE PROCESS) - processHandle) - (TEXTPROP textStream (QUOTE FE.POSITIONWINDOW) - (WINDOWPROP editWindow (QUOTE POSITIONWINDOW))) - - (* * Finally, return the process handle) - - - (RETURN textStream)))) - -(FE.AdjustProps - (LAMBDA (processHandle textStream) (* DSB " 7-Jul-86 15:52") - - (* * Do final adjustments to Fortran editor) - - - (LET NIL - (COND - ((PROCESSP processHandle) - - (* * The following gives the process a name) - - - (PROCESSPROP processHandle (QUOTE NAME) - (QUOTE FORTRAN% EDITOR)) - - (* * The following disables image object insertion into the document) - - - (until (PROCESSPROP processHandle (QUOTE TEDITTTYWINDOW)) do (BLOCK) - finally (WINDOWPROP (PROCESSPROP processHandle (QUOTE TEDITTTYWINDOW)) - (QUOTE COPYINSERTFN) - NIL))))))) - -(FE.CaretPosition - (LAMBDA (textStream) (* DSB " 7-Jul-86 15:48") - - (* * Write the line# and the column# of the position of the caret in Textstream) - - - (PROG* (charWidth column midpoint position positionWindow textWindow (margin 8) - (textStream (TEXTSTREAM textStream))) - (COND - ((AND (TEXTSTREAMP textStream) - (WINDOWP (SETQ positionWindow (TEXTPROP textStream (QUOTE - FE.POSITIONWINDOW))))) - (SETQ textWindow (WINDOWP (CAR (LISTP (fetch (TEXTOBJ \WINDOW) - of (TEXTOBJ textStream)))))) - (SETQ charWidth (CHARWIDTH (CHCON1 "X") - (TEXTPROP textStream (QUOTE FONT)))) - (COND - ((NOT (EQUAL (SETQ position (TEDIT.PARA&CHAR textStream)) - (TEXTPROP textStream (QUOTE FE.POSITION)))) - (SETQ midpoint (IPLUS 3 (IQUOTIENT (IQUOTIENT (WINDOWPROP positionWindow - (QUOTE - WIDTH)) - (CHARWIDTH (CHARCODE - X) - (DSPFONT - NIL - positionWindow))) - 2))) - (SETQ column (IPLUS (QUOTIENT (IDIFFERENCE (DSPXPOSITION NIL textWindow) - margin) - charWidth) - 1)) - (CLEARW positionWindow) - (printout positionWindow .TAB0 0 (COND - ((MINUSP (IDIFFERENCE column (CDR position))) - " ? ") - (T "")) - .CENTER midpoint (CONCAT "L: " (CAR position)) - .TAB0 midpoint .CENTER 0 (CONCAT "C: " (COND - ((NOT (ZEROP charWidth)) - column) - (T -1)))) - (TEXTPROP textStream (QUOTE FE.POSITION) - position))) - (RETURN position)))))) - -(TEDIT.PARA&CHAR - (LAMBDA (TEXTSTREAM SEL) (* RAR " 9-Oct-85 15:49") - - (* * Given a text stream, (and optionally a selection) find the pagagraph %# and ch within paragraph that the caret - is at) - - - (PROG (CH# PC PCTB (TEXTOBJ (TEXTOBJ TEXTSTREAM)) - (PARA# 1) - (CHAR# 1) - (LASTPARACH# 1)) - (SETQ PCTB (fetch PCTB of TEXTOBJ)) - (SETQ PC (ELT PCTB 3)) - (SETQ CH# (TEDIT.GETPOINT TEXTOBJ SEL)) - (COND - ((ZEROP (fetch TEXTLEN of TEXTOBJ)) - (RETURN (CONS 1 0)))) - (RETURN (while PC - do (COND - ((IGREATERP (add CHAR# (fetch PLEN of PC)) - CH#) (* Passed the relevant char; - return a result) - (RETURN (CONS PARA# (IDIFFERENCE CH# LASTPARACH#)))) - (T (* Not past the caret; keep going) - (COND - ((fetch PPARALAST of PC) - (* Crossing a paragraph boundary. - Count (QUOTE em) up.) - (add PARA# 1) - (SETQ LASTPARACH# CHAR#))))) - (SETQ PC (fetch NEXTPIECE of PC)) - finally (RETURN (CONS PARA# (IDIFFERENCE CH# LASTPARACH#)))))))) - -(FE.CharFn - (LAMBDA (textObj charCode) (* DSB " 7-Jul-86 15:51") - - (* * This function filters out the effects of someone trying to alter the "LOOKS" of something in the  - FORTRANEDITOR) - - - (COND - ((ILEQ charCode 127) - charCode)))) - -(FE.GetEditProps - (LAMBDA NIL (* DSB "20-Aug-86 14:19") - - (* * Return a prop list for TEdit call) - - - (PROG (charWidth (font FE.defaultFont)) - (SETQ charWidth (CHARWIDTH (CHCON1 "X") - font)) - (RETURN (APPEND (QUOTE (CLEARGET T)) - (QUOTE (CLEARPUT T)) - (LIST (QUOTE FONT) - font) - (LIST (QUOTE MENU) - (FE.CreateLocalMenu)) - (LIST (QUOTE PARALOOKS) - (LIST (QUOTE TABS) - (CONS (ITIMES 8 charWidth) - NIL))) - (LIST (QUOTE LOOPFN) - (FUNCTION FE.LoopFn)) - (LIST (QUOTE CHARFN) - (FUNCTION FE.CharFn)) - (QUOTE (COPYBYBKSYSBUF T)) - (LIST (QUOTE READTABLE) - (PROG ((table (COPYREADTABLE TEDIT.READTABLE))) - - (* * Return the read table to be used with this process) - - - (TEDIT.SETSYNTAX 15 NIL table) - (* Turns of inserting with CTRL-O) - (RETURN table)))))))) - -(FE.GetSourceFileName - (LAMBDA (textObj) (* DSB "22-Aug-86 14:08") - - (* * Return filename associated with textObj) - - - - (* * Due to a TEDIT bug, we can't use (FULLNAME (fetch TXTFILE of textObj)), because this can be changed when a  - file is opened to the same non-leaf server. Thus, we use the same FILENAME textprop that FE.MyPut uses and FE.MyGet - updates.) - - - (PROG (fileStream textStream filename messageWindow promptWindow dirty) - - (* * Make sure we have a text object) - - - (COND - ((NOT (TYPENAMEP textObj (QUOTE TEXTOBJ))) - (RETURN NIL))) - - (* * See if the file is ready to use) - - - (SETQ fileStream (fetch TXTFILE of textObj)) - (SETQ textStream (TEXTSTREAM textObj)) - (SETQ filename (TEXTPROP textStream (QUOTE FILENAME))) - (SETQ messageWindow (TEXTPROP textStream (QUOTE MESSAGEWINDOW))) - (CLEARW messageWindow) - (SETQ promptWindow (fetch PROMPTWINDOW of textObj)) - (CLEARW promptWindow) - (SETQ dirty (TEDIT.STREAMCHANGEDP textStream)) - (COND - ((NOT dirty) - (RETURN filename))) - (COND - ((AND dirty (NOT fileStream)) - (PRIN1 "Can't. No file has been saved yet." promptWindow) - (RETURN NIL))) - (COND - ((AND dirty fileStream) - (COND - ((MOUSECONFIRM "Not saved yet; LEFT to use previous version." T promptWindow) - (PRIN1 "Using old version on the server" messageWindow) - (RETURN filename)) - (T (RETURN NIL)))))))) - -(FE.LoopFn - (LAMBDA (textStream) (* DSB " 7-Jul-86 17:08") - - (* * Things to be done each time around TEdit command loop) - - - (LET NIL - - (* * Shade the edit window) - - - (FE.ShadeWindow textStream) - - (* * Update the position display) - - - (FE.CaretPosition textStream)))) -) - - - -(* WINDOW FUNCTIONS) - -(DEFINEQ - -(FE.GetPositionWindow - (LAMBDA (mainWindow) (* DSB " 7-Jul-86 17:13") - - (* * Return the window to be used as the caret-position indicator window) - - - (PROG (height positionWindow (font FE.defaultFont)) - (SETQ height (HEIGHTIFWINDOW (FONTPROP font (QUOTE HEIGHT)))) - (SETQ positionWindow (CREATEW (CREATEREGION 0 0 (WIDTHIFWINDOW - (WINDOWPROP mainWindow - (QUOTE WIDTH))) - height) - NIL NIL T)) - (DSPFONT font positionWindow) - (DSPTEXTURE BLACKSHADE positionWindow) - (DSPOPERATION (QUOTE INVERT) - positionWindow) - (WINDOWPROP positionWindow (QUOTE CLOSEFN) - (QUOTE (DETACHWINDOW))) - (WINDOWPROP positionWindow (QUOTE MINSIZE) - (CONS 0 height)) - (WINDOWPROP positionWindow (QUOTE MAXSIZE) - (CONS 64000 height)) - (WINDOWPROP positionWindow (QUOTE PAGEFULLFN) - (FUNCTION NILL)) - (RETURN positionWindow)))) - -(FE.GetEditWindow - (LAMBDA (window) (* DSB "15-Aug-86 09:19") - - (* * Return a window to be used by the Fortran editor) - - - (PROG (fontHeight minWidth minHeight positionWindow (font FE.defaultFont)) - - (* * Set the minimum window dimensions to be 20 characters wide by four lines high) - - - (SETQ minWidth (WIDTHIFWINDOW (ITIMES 20 (CHARWIDTH (CHCON1 "X") - font)))) - (SETQ minHeight (HEIGHTIFWINDOW (ITIMES 4 (SETQ fontHeight (FONTPROP - font - (QUOTE HEIGHT)))) - T)) - - (* * If not passed a window, then create one) - - - (COND - ((NOT (WINDOWP window)) - (SETQ window (CREATEW (GETREGION minWidth minHeight) - (QUOTE Fortran% Editor) - NIL T)))) - - (* * Add our window properties) - - - (WINDOWADDPROP window (QUOTE RESHAPEFN) - (FUNCTION FE.ReshapeFn)) - (WINDOWPROP window (QUOTE ICONFN) - (FUNCTION FE.ShrinkIconCreate)) - (WINDOWPROP window (QUOTE MINSIZE) - (CONS minWidth minHeight)) - - (* * Now add a window for displaying the caret position) - - - (SETQ positionWindow (FE.GetPositionWindow window)) - (ATTACHWINDOW positionWindow window (QUOTE TOP) - (QUOTE JUSTIFY)) - (WINDOWPROP positionWindow (QUOTE PASSTOMAINCOMS) - T) (* needed due to bug in ATTACHWINDOW which does not  - set the prop correctly when WINDOWCOMACTION=MAIN) - (WINDOWPROP window (QUOTE POSITIONWINDOW) - positionWindow) - - (* * Return the main window) - - - (RETURN window)))) - -(FE.GetMessageWindow - (LAMBDA (editWindow) (* DSB "19-Aug-86 17:55") - - (* * Create, attach, and return the messageWindow on the bottom of the editWindow) - - - (PROG (messageWindow) - (SETQ messageWindow (CREATEW (CREATEREGION 0 0 200 60) - "Message Window" NIL T)) - (ATTACHWINDOW messageWindow editWindow (QUOTE BOTTOM) - (QUOTE JUSTIFY)) - (RETURN messageWindow)))) - -(FE.ReshapeFn - (LAMBDA (window oldImage oldRegion) (* DSB " 7-Jul-86 17:23") - - (* * Need to set the TEXTPROP FE.POSITION to Nil to force position update following reshape of main window) - - - (TEXTPROP (TEXTSTREAM window) - (QUOTE FE.POSITION) - NIL))) - -(FE.ShadeWindow - (LAMBDA (stream) (* DSB " 7-Jul-86 17:28") - - (* * Highlight the sixth and seventy-third columns of the editor window) - - - (PROG (charWidth height window (margin 8) - (textObj (TEXTOBJ stream))) - (SETQ window (CAR (fetch (TEXTOBJ \WINDOW) of textObj))) - (SETQ charWidth (CHARWIDTH (CHCON1 "X") - (TEXTPROP textObj (QUOTE FONT)))) - (SETQ height (WINDOWPROP window (QUOTE HEIGHT))) - (BITBLT NIL NIL NIL window (IPLUS margin (ITIMES 5 charWidth)) - 0 1 height (QUOTE TEXTURE) - (QUOTE REPLACE) - GRAYSHADE) - (BITBLT NIL NIL NIL window (SUB1 (IPLUS margin (ITIMES 6 charWidth))) - 0 1 height (QUOTE TEXTURE) - (QUOTE REPLACE) - GRAYSHADE) - (BITBLT NIL NIL NIL window (IPLUS margin (ITIMES 72 charWidth)) - 0 1 height (QUOTE TEXTURE) - (QUOTE REPLACE) - GRAYSHADE)))) -) - - - -(* LOCALMENU FUNCTIONS) - -(DEFINEQ - -(FE.CreateLocalMenu - (LAMBDA NIL (* DSB " 7-Nov-86 09:42") - - (* * Return the local menu that pops up when the left or middle buttons are pressed when the mouse pointer is in  - the title bar area of the Fortran editor window.) - - - (create MENU - ITEMS _(QUOTE (Quit Hardcopy (Put (FUNCTION FE.MyPut) - "Write edit buffer to specified file") - (Get (FUNCTION FE.MyGet) - - "Replace contents of edit buffer with contents of specified file") - (Include (QUOTE Include) - - "Add contents of specified file to edit buffer at present location") - (Find (QUOTE Find) - - "Find first occurence of specified string beyond present location") - (Substitute (QUOTE Substitute) - - "Replace all occurances of specified string with new string in selected text") - (Host (FUNCTION FE.SetHost) - "Declare host server") - (Directory (FUNCTION FE.SetDirectory) - "Declare host directory") - (Compile (FUNCTION FE.Compile) - "Compile file on host") - (Link (FUNCTION FE.Link) - "Link file on host") - (C/L/R (FUNCTION FE.CompileLinkRun) - "Compile,link and run file on host") - (Run (FUNCTION FE.RunInteractive) - "Run file on host"))) - CENTERFLG _ T - MENUFONT _(FONTCREATE (QUOTE HELVETICA) - 10 - (QUOTE BOLD)) - WHENSELECTEDFN _(FUNCTION \TEDIT.MENU.WHENSELECTEDFN) - WHENHELDFN _(FUNCTION \TEDIT.MENU.WHENHELDFN)))) - -(FE.SetHost - (LAMBDA (textStream) (* DSB "22-Aug-86 13:07") - - (* * Ask user to declare a host server, using the present host server as a default answer.) - - - - (* * the host, hostname and default directory are all calculated and stored as TEXTPROPs) - - - - (* * Note that FE.GetServer returns the pointer to the server instance. When the message is sent to host, host is  - evaled.) - - - - (* * Note also that hostname must be an upper-case atom when it is passed to FE.ValidHostname and FE.GetServer) - - - (PROG (messageWindow host hostname (oldHostname (TEXTPROP textStream (QUOTE MS.HOSTNAME)))) - (SETQ messageWindow (TEXTPROP textStream (QUOTE MESSAGEWINDOW))) - (CLEARW messageWindow) - (COND - ((FE.ValidHostname (SETQ hostname (U-CASE (MKATOM (TEDIT.GETINPUT textStream - "Hostname :" - oldHostname) - )))) - (TEXTPROP textStream (QUOTE MS.HOSTNAME) - hostname) - (SETQ host (FE.GetServer hostname)) - (TEXTPROP textStream (QUOTE MS.HOST) - host) - (TEXTPROP textStream (QUOTE MS.DIRECTORY) - (_ host UserDirectory)) - (TEDIT.PROMPTPRINT textStream (CONCAT "Hostname is " hostname) - T)) - (T (TEDIT.PROMPTPRINT textStream (CONCAT hostname - " is not valid...Hostname unchanged") - T))) - (RETURN NIL)))) - -(FE.SetDirectory - (LAMBDA (textStream) (* DSB "22-Aug-86 13:09") - - (* * ask user to declare a default directory, using the previously defined directory as a default. - The default is initially set to the user's root directory when the host is declared.) - - - (PROG (messageWindow newDirectory (oldDirectory (TEXTPROP textStream (QUOTE MS.DIRECTORY))) - (host (TEXTPROP textStream (QUOTE MS.HOST)))) - - (* * first clear the message window) - - - (SETQ messageWindow (TEXTPROP textStream (QUOTE MESSAGEWINDOW))) - (CLEARW messageWindow) - - (* * then make sure a host has been declared) - - - (COND - ((NOT host) - (RETURN (TEDIT.PROMPTPRINT textStream - "No host has yet been declared. Name your host first." - T)))) - - (* * then reset directory if changed) - - - (SETQ newDirectory (MKATOM (TEDIT.GETINPUT textStream "Directory: " oldDirectory))) - (COND - ((EQUAL newDirectory oldDirectory) - (TEDIT.PROMPTPRINT textStream (CONCAT newDirectory - " is the same as the previous value...Directory unchanged") - T)) - (T (TEXTPROP textStream (QUOTE MS.DIRECTORY) - newDirectory) - (TEDIT.PROMPTPRINT textStream (CONCAT "Directory is " newDirectory) - T)))))) - -(FE.MyGet - (LAMBDA (textStream) (* DSB "22-Aug-86 12:59") - (* My TEDIT Get Function) - - (* * after getting the file, it sets the FILENAME textprop to the new fullFilename. This textprop is only changed  - by a Get, whereas due to an error in TEDIT, the TXTFILE slot of textObj can change whenever an OPENFILE is made to  - the server) - - - - (* * Note that we only store the versionless filename, because it then gets updated properly on a Put.) - - - (PROG (messageWindow textObj fileStream fullFilename versionlessFilename) - (SETQ messageWindow (TEXTPROP textStream (QUOTE MESSAGEWINDOW))) - (CLEARW messageWindow) - (SETQ textObj (TEXTOBJ textStream)) - (TEDIT.GET textObj) - (SETQ fileStream (fetch TXTFILE of textObj)) - (SETQ fullFilename (FULLNAME fileStream)) - (SETQ versionlessFilename (FE.StripVersion fullFilename)) - (TEXTPROP textStream (QUOTE FILENAME) - versionlessFilename)))) - -(FE.MyPut - (LAMBDA (textStream) (* DSB " 7-Nov-86 11:03") - (* my TEDIT put function) - - (* * When the edit buffer is to be saved for the first time, the FILENAME TEXTPROP is NIL. Subsequently, it has a  - (versionless) value, which remains the same if put the the same filename or is altered if put to a different  - filename) - - - - (* * The new filename is stored without version number in the FILENAME field of TEXTPROP) - - - - (* * The reason for this stuff is that the name in (FULLNAME (fetch TXTFILE of textObj)) can be altered by an  - OPENFILE, when both files are on a non-leaf server. Thus, we have to keep track of the TEDIT filename ourselves.) - - - (PROG (messageWindow newFilename textObj fileStream fullFilename versionlessFilename) - - (* * first clear the message window) - - - (SETQ messageWindow (TEXTPROP textStream (QUOTE MESSAGEWINDOW))) - (CLEARW messageWindow) - - (* * get the filename to be put. If the user inputs a c.r., it returns the old filename; otherwise, it retains the  - user input.) - - - (SETQ oldFilename (TEXTPROP textStream (QUOTE FILENAME))) - (SETQ newFilename (MKATOM (U-CASE (TEDIT.GETINPUT textStream "(Put) Filename:" - oldFilename)))) - - (* * put the returned filename) - - - (TEDIT.PUT textStream newFilename NIL T) - - (* * a new FILENAME textprop is saved only when the new filename differs from the old filename) - - - (COND - ((EQUAL oldFilename newFilename) - (RETURN)) - (T (SETQ textObj (TEXTOBJ textStream)) - (SETQ fileStream (fetch TXTFILE of textObj)) - (SETQ fullFilename (FULLNAME fileStream)) - (SETQ versionlessFilename (FE.StripVersion fullFilename)) - (TEXTPROP textStream (QUOTE FILENAME) - versionlessFilename)))))) - -(FE.StripVersion - (LAMBDA (fullFilename) (* DSB "20-Aug-86 13:50") - (* returns a filename with the version stripped number - out) - (PROG (host directory name extension) - (SETQ host (UNPACKFILENAME fullFilename (QUOTE HOST))) - (SETQ directory (UNPACKFILENAME fullFilename (QUOTE DIRECTORY))) - (SETQ name (UNPACKFILENAME fullFilename (QUOTE NAME))) - (SETQ extension (UNPACKFILENAME fullFilename (QUOTE EXTENSION))) - (RETURN (PACKFILENAME (QUOTE HOST) - host - (QUOTE DIRECTORY) - directory - (QUOTE NAME) - name - (QUOTE EXTENSION) - extension))))) - -(FE.Compile - (LAMBDA (textStream) (* DSB "22-Aug-86 11:54") - - (* * Compile the file associated with this edit process.) - - - (PROG (fullFilename filename directory host result errorFile errorWindow editWindow - messageWindow (textObj (TEXTOBJ textStream))) - (SETQ messageWindow (TEXTPROP textStream (QUOTE MESSAGEWINDOW))) - (CLEARW messageWindow) - - (* * Make sure we have a text object) - - - (COND - ((NOT (TYPENAMEP textObj (QUOTE TEXTOBJ))) - (PRIN1 "No text to compile" messageWindow) - (RETURN NIL))) - - (* * See if the file is ready to use) - - - (COND - ((NOT (SETQ fullFilename (FE.GetSourceFileName textObj))) - (PRIN1 "Text non-existant or unsaved: compile aborted" messageWindow) - (RETURN NIL))) - - (* * Check that a host has been specified) - - - (COND - ((NOT (SETQ host (TEXTPROP textObj (QUOTE MS.HOST)))) - (PRIN1 "Can't compile. No Host has been declared" messageWindow) - (RETURN NIL))) - - (* * Do the compile) - - - (TEDIT.PROMPTPRINT textStream (CONCAT "Compiling " fullFilename " on " - (_ host Name) - "...") - T) - (SETQ editWindow (TEXTPROP textStream (QUOTE EDITWINDOW))) - (SETQ directory (TEXTPROP textObj (QUOTE MS.DIRECTORY))) - (SETQ filename (UNPACKFILENAME fullFilename (QUOTE NAME))) - (MS.CloseErrorWindow editWindow) - (SETQ result (_ host Compile (PACKFILENAME (QUOTE DIRECTORY) - directory - (QUOTE NAME) - filename))) - (CLEARW messageWindow) - (PRIN1 result messageWindow) - (COND - ((EQUAL (CAR result) - (QUOTE ERROR)) - (TEDIT.PROMPTPRINT textStream "Compilation errors" T) - (SETQ errorWindow (MS.AttachErrorWindow editWindow "Compilation Errors")) - (SETQ errorFile (_ host ExtractFilename result)) - (_ host PutErrorInWindow errorFile errorWindow editWindow)) - (T (TEDIT.PROMPTPRINT textStream "Successful compilation." T)))))) - -(FE.Link - (LAMBDA (textStream) (* DSB "22-Aug-86 12:01") - - (* * Link the file associated with this edit process.) - - - (PROG (fullFilename filename directory host result errorFile errorWindow editWindow - messageWindow (textObj (TEXTOBJ textStream))) - (SETQ messageWindow (TEXTPROP textStream (QUOTE MESSAGEWINDOW))) - (CLEARW messageWindow) - - (* * Make sure we have a text object) - - - (COND - ((NOT (TYPENAMEP textObj (QUOTE TEXTOBJ))) - (PRIN1 "No file to link" messageWindow) - (RETURN NIL))) - - (* * See if the file is ready to use) - - - (COND - ((NOT (SETQ fullFilename (FE.GetSourceFileName textObj))) - (PRIN1 "File non-existant or unsaved: link aborted" messageWindow) - (RETURN NIL))) - - (* * Check that a host has been specified) - - - (COND - ((NOT (SETQ host (TEXTPROP textObj (QUOTE MS.HOST)))) - (PRIN1 "Can't link. No Host has been declared" messageWindow) - (RETURN NIL))) - - (* * Do the link) - - - (TEDIT.PROMPTPRINT textStream (CONCAT "Linking " fullFilename " on " - (_ host Name) - "...") - T) - (SETQ editWindow (TEXTPROP textStream (QUOTE EDITWINDOW))) - (SETQ directory (TEXTPROP textObj (QUOTE MS.DIRECTORY))) - (SETQ filename (UNPACKFILENAME fullFilename (QUOTE NAME))) - (MS.CloseErrorWindow editWindow) - (SETQ result (_ host Link (PACKFILENAME (QUOTE DIRECTORY) - directory - (QUOTE NAME) - filename))) - (CLEARW messageWindow) - (PRIN1 result messageWindow) - (COND - ((EQUAL (CAR result) - (QUOTE ERROR)) - (TEDIT.PROMPTPRINT textStream "Linking error" T) - (SETQ errorWindow (MS.AttachErrorWindow editWindow "Link Errors")) - (SETQ errorFile (_ host ExtractFilename result)) - (_ host PutErrorInWindow errorFile errorWindow editWindow)) - (T (TEDIT.PROMPTPRINT textStream "Successful link" T)))))) - -(FE.CompileLinkRun - (LAMBDA (textStream) (* DSB "22-Aug-86 11:54") - - (* * sequentially compiles, links, and runs the file associated with this edit process.) - - - (PROG (fullFilename filename directory host result errorFile errorWindow editWindow - messageWindow (textObj (TEXTOBJ textStream))) - (SETQ messageWindow (TEXTPROP textStream (QUOTE MESSAGEWINDOW))) - (CLEARW messageWindow) - - (* * Make sure we have a text object) - - - (COND - ((NOT (TYPENAMEP textObj (QUOTE TEXTOBJ))) - (PRIN1 "No text to compile" messageWindow) - (RETURN NIL))) - - (* * See if the file is ready to use) - - - (COND - ((NOT (SETQ fullFilename (FE.GetSourceFileName textObj))) - (PRIN1 "Text non-existant or unsaved: compile aborted" messageWindow) - (RETURN NIL))) - - (* * Check that a host has been specified) - - - (COND - ((NOT (SETQ host (TEXTPROP textObj (QUOTE MS.HOST)))) - (PRIN1 "Can't compile. No Host has been declared" messageWindow) - (RETURN NIL))) - - (* * Do the compile) - - - (TEDIT.PROMPTPRINT textStream (CONCAT "Compiling " fullFilename " on " - (_ host Name) - "...") - T) - (SETQ editWindow (TEXTPROP textStream (QUOTE EDITWINDOW))) - (SETQ directory (TEXTPROP textObj (QUOTE MS.DIRECTORY))) - (SETQ filename (UNPACKFILENAME fullFilename (QUOTE NAME))) - (MS.CloseErrorWindow editWindow) - (SETQ result (_ host Compile (PACKFILENAME (QUOTE DIRECTORY) - directory - (QUOTE NAME) - filename))) - (CLEARW messageWindow) - (PRIN1 result messageWindow) - (COND - ((EQUAL (CAR result) - (QUOTE ERROR)) - (TEDIT.PROMPTPRINT textStream "Compilation errors" T) - (SETQ errorWindow (MS.AttachErrorWindow editWindow "Compilation Errors")) - (SETQ errorFile (_ host ExtractFilename result)) - (_ host PutErrorInWindow errorFile errorWindow editWindow) - (RETURN)) - (T (TEDIT.PROMPTPRINT textStream "Successful compilation." T))) - - (* * Do the link) - - - (TEDIT.PROMPTPRINT textStream (CONCAT "Linking " fullFilename " on " - (_ host Name) - "...") - T) - (MS.CloseErrorWindow editWindow) - (SETQ result (_ host Link (PACKFILENAME (QUOTE DIRECTORY) - directory - (QUOTE NAME) - filename))) - (CLEARW messageWindow) - (PRIN1 result messageWindow) - (COND - ((EQUAL (CAR result) - (QUOTE ERROR)) - (TEDIT.PROMPTPRINT textStream "Linking error" T) - (SETQ errorWindow (MS.AttachErrorWindow editWindow "Link Errors")) - (SETQ errorFile (_ host ExtractFilename result)) - (_ host PutErrorInWindow errorFile errorWindow editWindow) - (RETURN)) - (T (TEDIT.PROMPTPRINT textStream "Successful link" T))) - - (* * Run the job interactively) - - - (TEDIT.PROMPTPRINT textStream (CONCAT "Running interactive job " fullFilename " on " - (_ host Name) - "...") - T) - (MS.CloseErrorWindow editWindow) - (SETQ result (_ host RunJob (PACKFILENAME (QUOTE DIRECTORY) - directory - (QUOTE NAME) - filename))) - (CLEARW messageWindow) - (PRIN1 result messageWindow) - (COND - ((EQUAL (CAR result) - (QUOTE ERROR)) - (TEDIT.PROMPTPRINT textStream "Run-time warning or error" T) - (SETQ errorWindow (MS.AttachErrorWindow editWindow "Run-time Errors")) - (SETQ errorFile (_ host ExtractFilename result)) - (_ host PutErrorInWindow errorFile errorWindow editWindow)) - (T (TEDIT.PROMPTPRINT textStream "Done" T)))))) - -(FE.RunInteractive - (LAMBDA (textStream) (* DSB "22-Aug-86 12:49") - - (* * Run (interactively) the file associated with this edit process.) - - - (PROG (fullFilename filename directory host result errorFile errorWindow editWindow - messageWindow (textObj (TEXTOBJ textStream))) - (SETQ messageWindow (TEXTPROP textStream (QUOTE MESSAGEWINDOW))) - (CLEARW messageWindow) - - (* * Make sure we have a text object) - - - (COND - ((NOT (TYPENAMEP textObj (QUOTE TEXTOBJ))) - (PRIN1 "No file to run" messageWindow) - (RETURN NIL))) - - (* * See if the file is ready to use) - - - (COND - ((NOT (SETQ fullFilename (FE.GetSourceFileName textObj))) - (PRIN1 "File non-existant or unsaved: run aborted" messageWindow) - (RETURN NIL))) - - (* * Check that a host has been specified) - - - (COND - ((NOT (SETQ host (TEXTPROP textObj (QUOTE MS.HOST)))) - (PRIN1 "Can't run. No Host has been declared" messageWindow) - (RETURN NIL))) - - (* * Run it) - - - (TEDIT.PROMPTPRINT textStream (CONCAT "Running interactive job " fullFilename " on " - (_ host Name) - "...") - T) - (SETQ editWindow (TEXTPROP textStream (QUOTE EDITWINDOW))) - (SETQ directory (TEXTPROP textObj (QUOTE MS.DIRECTORY))) - (SETQ filename (UNPACKFILENAME fullFilename (QUOTE NAME))) - (MS.CloseErrorWindow editWindow) - (SETQ result (_ host RunJob (PACKFILENAME (QUOTE DIRECTORY) - directory - (QUOTE NAME) - filename))) - (CLEARW messageWindow) - (PRIN1 result messageWindow) - (COND - ((EQUAL (CAR result) - (QUOTE ERROR)) - (TEDIT.PROMPTPRINT textStream "Run-time warning or error" T) - (SETQ errorWindow (MS.AttachErrorWindow editWindow "Run-time Errors")) - (SETQ errorFile (_ host ExtractFilename result)) - (_ host PutErrorInWindow errorFile errorWindow editWindow)) - (T (TEDIT.PROMPTPRINT textStream "Done" T)))))) -) - - - -(* SERVER METACLASS FUNCTIONS) - -(DEFINEQ - -(FE.ValidHostname - (LAMBDA (hostname) (* DSB "20-Aug-86 08:40") - (* returns the hostname if it is on the list of valid  - hosts) - - (* * Note that hostname must be passed from FE.SetHost as an upper-case atom) - - - (PROG (server validHostname) - (SETQ server (FE.GetServer hostname)) - (COND - (server (SETQ validHostname (_ server Name)) - (RETURN validHostname)) - (T NIL))))) - -(FE.GetServer - (LAMBDA (hostname) (* DSB "20-Aug-86 08:42") - (* given a hostname, returns the pointer to the  - server) - - (* * note that the hostname must be an upper-case atom) - - - (find server in (_ ($ Server) - AllInstances!) - suchthat (EQUAL hostname (_ server Name))))) -) - - - -(* ICON STUFF) - -(DEFINEQ - -(FE.ShrinkIconCreate - (LAMBDA (W ICON ICONW) (* DSB " 6-Oct-86 13:52") - (* Create the icon that represents this window.) - (PROG ((icon (WINDOWPROP W (QUOTE ICON))) - (iconTitle (WINDOWPROP W (QUOTE TEDIT.ICON.TITLE))) - (shrinkfn (WINDOWPROP W (QUOTE SHRINKFN)))) - (COND - ((NOT (WINDOWPROP W (QUOTE TEXTOBJ))) (* This isn't really a TEdit window any more. - Don't do anything) - NIL) - ((WINDOWPROP W (QUOTE TEDITMENU)) (* This is a text menu, and shrinks without trace.) - NIL) - ((OR (IGREATERP (FLENGTH shrinkfn) - 3) - (AND (NOT (FMEMB (QUOTE SHRINKATTACHEDWINDOWS) - shrinkfn)) - (IGREATERP (FLENGTH shrinkfn) - 2))) (* There are other functions that expect to handle  - this. Don't bother.) - NIL) - ((OR (AND iconTitle (EQUAL iconTitle (TEXTSTREAM.TITLE (TEXTSTREAM W)))) - (AND (NOT iconTitle) - icon)) (* we built this and the title is the same, or he has  - already put an icon on this. - Do nothing) - NIL) - (icon (* There's an existing icon window; - change the title in it) - (WINDOWPROP W (QUOTE TEDIT.ICON.TITLE) - (SETQ iconTitle (TEXTSTREAM.TITLE (TEXTSTREAM W)))) - (ICONTITLE iconTitle NIL NIL icon)) - (T (* install a new icon) - (WINDOWPROP W (QUOTE TEDIT.ICON.TITLE) - (SETQ iconTitle (TEXTSTREAM.TITLE (TEXTSTREAM W)))) - (WINDOWPROP W (QUOTE ICON) - (TITLEDICONW FE.titledIconTemplate iconTitle FE.iconFont NIL T - (QUOTE TOP)))))) - (WINDOWPROP W (QUOTE ICON)))) -) - -(RPAQ FE.Icon (READBITMAP)) -(120 61 -"@@@COOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"@@@GOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"@@@N@CHCHAL@L@O@GCION@C@CHAHAO@@" -"@@AN@C@AH@L@L@F@CCION@C@AHAHAO@@" -"@@CNGOCIILOCLNFGCAIONGOCINGNGO@@" -"@@GN@GCIILOCLNFGC@ION@GCINGNGO@@" -"@@ON@GCIH@OCL@F@C@AON@GCINGNGO@@" -"@AONGOCIHAOCL@N@CBAONGOCINGNGO@@" -"@CONGOCIIAOCLHNGCCAONGOCINGNGO@@" -"@GONGO@AIHOCLLFGCCION@C@AHANGO@@" -"@OONGOHCILGCLNBGCCION@C@CHANGO@@" -"AOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"CN@@@@@@@@@@@@@@@@@@@B@@@@@@@A@@" -"GN@@@@@@@@@@@@@@@@@B@@@@@@@@@A@@" -"OJ@@@@@@@@@@@@@@@@@B@@@@@@@@@A@@" -"OJ@@@@@@@@@@@@@@@@@@H@@@@@@@@A@@" -"NJ@@@@@@@@@@@@@@@@@@H@@@@@@@@A@@" -"NJ@H@@@@@@@B@@@@@@@H@@H@@@@@@A@@" -"JJ@H@@@@@@@B@@@@@@@H@@H@@@@@@A@@" -"JJ@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"KJ@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@@@H@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@@@H@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@@@@@@H@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@@@@@@H@@@@@B@H@@@@@@@@@@@@A@@" -"JN@@@@@@@@@@@@B@H@@@@@@@@@@@@A@@" -"JJ@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJB@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"NJB@@@@B@B@H@B@@@B@@@@@@@@@@@A@@" -"JJ@@@@@B@B@H@B@@@B@@@@@@@@@@@A@@" -"JJ@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@BH@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@BH@@@@@H@@@@B@@@@B@@@@@@@@A@@" -"JJ@@@@@@@@H@@@@B@@@@B@@@@@@@@A@@" -"JJ@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@@@@@@@@@@@@@@@@@@@@B@@@@@@A@@" -"JJH@@@@@@@@@@@@@@@@@@@B@@@@@@A@@" -"JJH@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@@@@B@@@@@@@@@@@@@@@@@@@@@@A@@" -"JJ@@@@B@@@@@@@@@@@@@@H@@@@@@@A@@" -"JJ@@@@@@@@@@@@@@@@@@@H@@@@@@@A@@" -"JJ@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"KJ@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@" -"JKOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"JH@@@@@D@@@@@@@@A@@@@@@@@@H@@D@@" -"JOOOOOOOOOOOOOOOOOOOOOOOOOOOOL@@" -"J@@@@@@@@@@D@@@@@@D@@@@D@@@@A@@@" -"KOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@@" -"H@@@A@@@@@@@@@@@H@@@@@@@@@@BD@@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOL@@@") - -(RPAQ FE.IconMask (READBITMAP)) -(120 61 -"@@@COOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"@@@GOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"@@@OOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"@@AOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"@@COOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"@@GOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"@@OOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"@AOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"@COOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"@GOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"@OOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"AOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"COOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"GOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOL@@@" -"OOOOOOOOOOOOOOOOOOOOOOOOOOOOL@@@") - -(RPAQ? FE.defaultFont (FONTCLASS (QUOTE FORTRANEDITFONT) - (QUOTE (1 (GACHA 12) - (GACHA 10) - (GACHA 10))))) - -(RPAQ? FE.iconFont (FONTCREATE (QUOTE HELVETICA) - 8 - (QUOTE BOLD))) - -(RPAQ? FE.iconTitleRegion (create REGION LEFT _ 8 BOTTOM _ 8 WIDTH _ 110 HEIGHT _ 40)) - -(RPAQ? FE.titledIconTemplate (create TITLEDICON ICON _ FE.Icon MASK _ FE.IconMask TITLEREG _ - FE.iconTitleRegion)) - - - -(* VARS) - - -(ADDTOVAR BackgroundMenuCommands (Fortran% Edit (QUOTE (FE.TopLevel)) - "Start a Fortran Edit")) - -(RPAQQ BackgroundMenu NIL) -(DECLARE: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS FE.defaultFont FE.iconFont FE.titledIconTemplate TEDIT.READTABLE) -) - (* * SERVERS -- Defines the Loops MathServer objects) - -(DEFCLASSES Cray FortranServer MathServer Server VMSServer) -[DEFCLASS Cray - (MetaClass Class doc (* If you want something to be done quickly, use this  - class) - Edited: (* DSB "30-May-86 14:55")) - (Supers MathServer)] - -[DEFCLASS FortranServer - (MetaClass Class Edited: (* DSB "13-May-86 16:09")) - (Supers Server)] - -[DEFCLASS MathServer - (MetaClass Class Edited: (* DSB "20-May-86 17:21")) - (Supers Server) - (ClassVariables (jobManagerProcess NIL doc - - (* the current process on which the job manager is working. All processes alert the job manager by calling the  - AlertManager method and giving this variable as an argument) - -))] - -[DEFCLASS Server - (MetaClass AbstractClass Edited: (* DSB "10-Nov-86 08:20")) - (Supers IndexedObject Object) - (InstanceVariables (host NIL doc (* network name of host ; eg., GSLVAX)) - (name NIL doc (* vernacular name of host; - eg., GSLVAX)) - (description NIL doc (* short description of server)) - (serverDirectory NIL doc (* directory for server command files)) - (queues NIL doc (* list of names of batch queues)) - (sourceExtension NIL doc (* default extension, such as FOR, for source files) - ) - (commandFileExtension NIL doc (* default extension, such as COM, for command files) - ))] - -[DEFCLASS VMSServer - (MetaClass Class doc (* this is a DEC VMS machine) - Edited: (* DSB "10-Nov-86 08:22")) - (Supers MathServer FortranServer) - (InstanceVariables (sourceExtension FOR doc (* VMS fortran extension)) - (commandFileExtension COM doc (* VMS command file default extension)) - (comFileName (SUBMITJOB submitJob.com ABORTJOB abortJob.com RUNJOB runJob.com - STATUS status.com LINK link.com COMPLINK complink.com - COMPILE compile.com GETTIME getTime.com) - doc (* VMS com files) - ) - (resultFileName (SUBMITJOB submitJob.res ABORTJOB abortJob.res RUNJOB - runJob.res STATUS status.res COMPILE compile.res - LINK link.res COMPLINK complink.res GETTIME - getTime.res) - doc (* VMS result files) - ))] - -[METH FortranServer Compile (filename) - (* compiles file, which must be on the host)] - - -[METH FortranServer Compiled? (host defaultDirectory filename) - (* Checks if an object file exists on the host. If so, returns T)] - - -[METH FortranServer Link (filename linkedFilesList) - (* links object files on the host into an executable file)] - - -[METH FortranServer Linked? (host defaultDirectory filename) - (* Checks if an executable file exists on the host. If so, returns T)] - - -[METH MathServer AlertManager NIL - (* This method is called by all job processes. It starts up the JobManager process if not - awakened, and passes the jobManagerProcess variable.)] - - -[METH Server AbortJob (jobNumber queue) - (* aborts specific batch job on stated queue) - (category MainOps)] - - -[METH Server CommandFileExtension NIL - (* returns the extension recognized by the system as a command file)] - - -[METH Server Description NIL - (* returns description of the server)] - - -[METH Server Error? (result) - (* checks if CAR of result list is "ERROR") - (category Results)] - - -[METH Server ErrorFile (result) - (* returns the full name of the error file, specified by the third element in the result list) - (category Results)] - - -[METH Server ErrorString (result) - (* returns the error string: the second element in result list) - (category Results)] - - -[METH Server ExecuteCommandFile (commandFile parameterList) - (* method to run a command file. The command string is assembled by the local method - CommandString)] - - -[METH Server ExtractFilename (result) - (* Extract error file name from result)] - - -[METH Server GetQueues NIL - (* returns the list of queues for the server) - (category Name)] - - -[METH Server GetTime NIL - (* gets the time from the server) - (category MainOps)] - - -[METH Server Host NIL - (* returns local server instance variable host) - (category Name)] - - -[METH Server MakeError (string fileName) - (* makes an ERROR ... list) - (category Results)] - - -[METH Server MakeFullName (fileName directory) - (* Constructs full name of file and host) - (category Name)] - - -[METH Server MakePartialName (fileName directory) - (* Constructs name of file with directory, but without host)] - - -[METH Server Name NIL - (* returns vernacular server name) - (category Name)] - - -[METH Server PutErrorInWindow (errorFile errorWindow mainWindow) - (* puts text of errorFile in a window)] - - -[METH Server PutTextInWindow (filename position) - (* Opens a scrollable TEDIT window for the file)] - - -[METH Server Result (result) - (* returns the second element in the result list when there is no error. This is typically the - jobID.) - (category Results)] - - -[METH Server RunFile (file parameterList resultFile noErrorFlg) - (* general method to run a command file and get result and errors) - (category MainOps)] - - -[METH Server RunJob (filename parameterList) - (* runs com file, "filename" , with additional parameters "parameterList" , all of which must - be on the host, as an interactive-type job) - (category MainOps)] - - -[METH Server ServerDirectory NIL - (* returns the name of the server directory for command files) - (category Name)] - - -[METH Server SourceExtension NIL - (* returns default extension for source files)] - - -[METH Server Status (jobNumber) - (* get machine status of batch jobs) - (category MainOps)] - - -[METH Server SubmitJob (filename queue parameterList) - (* submits file, which must be on the host, as a batch job) - (category MainOps)] - - -[METH Server UserDirectory NIL - (* Gets user name on appropriate host) - (category Name)] - - -[METH VMSServer MakeCommandString (commandFile parameterList) - (* assembles command string from given name of commandFile and parameterList)] - - -(DEFINEQ - -(FortranServer.Compile - (Method ((FortranServer Compile) - self filename) (* DSB " 5-Aug-86 10:44") - (* compiles file, which must be on the host) - (_ self RunFile (_ self MakePartialName (LISTGET (@ comFileName) - (QUOTE COMPILE)) - (_ self ServerDirectory)) - filename - (_ self MakeFullName (LISTGET (@ resultFileName) - (QUOTE COMPILE))) - T))) - -(FortranServer.Compiled? - (Method ((FortranServer Compiled?) - self host defaultDirectory filename) (* DSB "12-Aug-86 09:46") - (* Checks if an object file exists on the host. - If so, returns T) - (INFILEP (PACKFILENAME (QUOTE HOST) - (_ host Name) - (QUOTE DIRECTORY) - defaultDirectory - (QUOTE NAME) - filename - (QUOTE EXTENSION) - (QUOTE OBJ))))) - -(FortranServer.Link - (Method ((FortranServer Link) - self filename linkedFilesList) (* DSB " 8-Aug-86 09:33") - (* links object files on the host into an executable  - file) - - (* * linkedFilesList is either NIL or a list composed of a single string. The parameterList sent to RunFile is thus - a list composed of the filename and optional string of linked files.) - - - (_ self RunFile (_ self MakePartialName (LISTGET (@ comFileName) - (QUOTE LINK)) - (_ self ServerDirectory)) - (CONS filename linkedFilesList) - (_ self MakeFullName (LISTGET (@ resultFileName) - (QUOTE LINK))) - T))) - -(FortranServer.Linked? - (Method ((FortranServer Linked?) - self host defaultDirectory filename) (* DSB "12-Aug-86 10:10") - (* Checks if an executable file exists on the host. - If so, returns T) - (INFILEP (PACKFILENAME (QUOTE HOST) - (_ host Name) - (QUOTE DIRECTORY) - defaultDirectory - (QUOTE NAME) - filename - (QUOTE EXTENSION) - (QUOTE EXE))))) - -(MathServer.AlertManager - (Method ((MathServer AlertManager) - self) (* DSB "22-May-86 16:54") - (* This method is called by all job processes. - It starts up the JobManager process if not awakened,  - and passes the jobManagerProcess variable.) - - (* * Start MS.JobManager if it isn't going) - - - (COND - ((NOT (PROCESSP (@ ::jobManagerProcess))) - (_@ - ::jobManagerProcess - (ADD.PROCESS (QUOTE (MS.JobManager)) - (NAME (QUOTE JobManager) - RESTARTABLE - (QUOTE HARDRESET))))) - (T NIL)))) - -(Server.AbortJob - (Method ((Server AbortJob) - self jobNumber queue) (* DSB "12-Aug-86 18:07") - (* aborts specific batch job on stated queue) - (_ self RunFile (_ self MakePartialName (LISTGET (@ comFileName) - (QUOTE ABORTJOB)) - (_ self ServerDirectory)) - (LIST jobNumber queue) - (_ self MakeFullName (LISTGET (@ resultFileName) - (QUOTE ABORTJOB)))))) - -(Server.CommandFileExtension - (Method ((Server CommandFileExtension) - self) (* DSB "10-Nov-86 08:19") - (* returns the extension recognized by the system as a - command file) - (@ commandFileExtension))) - -(Server.Description - (Method ((Server Description) - self) (* DSB "19-Aug-86 14:29") - (* returns description of the server) - (@ description))) - -(Server.Error? - (Method ((Server Error?) - self result) (* DSB "21-May-86 11:44") - (* checks if CAR of result list is "ERROR") - (EQ (QUOTE ERROR) - (CAR result)))) - -(Server.ErrorFile - (Method ((Server ErrorFile) - self result) (* DSB "21-May-86 11:50") - (* returns the full name of the error file, specified  - by the third element in the result list) - (INFILEP (_ self MakeFullName (CADDR result))))) - -(Server.ErrorString - (Method ((Server ErrorString) - self result) (* DSB "21-May-86 11:46") - (* returns the error string: the second element in  - result list) - (CADR result))) - -(Server.ExecuteCommandFile - (Method ((Server ExecuteCommandFile) - self commandFile parameterList) (* DSB "10-Nov-86 10:59") - (* method to run a command file. - The command string is assembled by the local method  - CommandString) - (PROGRAMCHAT (_ self Host) - (_ self MakeCommandString commandFile parameterList) - NIL))) - -(Server.ExtractFilename - (Method ((Server ExtractFilename) - self result) (* DSB " 6-Aug-86 11:28") - (* Extract error file name from result) - (CAR (REVERSE result)))) - -(Server.GetQueues - (Method ((Server GetQueues) - self) (* DSB " 9-Jun-86 08:41") - (* returns the list of queues for the server) - (@ queues))) - -(Server.GetTime - (Method ((Server GetTime) - self) (* DSB "13-Jun-86 13:17") - (* gets the time from the server) - (* RunFile returns a list whose CAR is OK) - (_ self Result (_ self RunFile (_ self MakePartialName (LISTGET (@ comFileName) - (QUOTE GETTIME)) - (_ self ServerDirectory)) - NIL - (_ self MakeFullName (LISTGET (@ resultFileName) - (QUOTE GETTIME))) - NIL)))) - -(Server.Host - (Method ((Server Host) - self) (* DSB "23-May-86 13:52") - (* returns local server instance variable host) - (CANONICAL.HOSTNAME (@ host)))) - -(Server.MakeError - (Method ((Server MakeError) - self string fileName) (* DSB "21-May-86 15:49") - (* makes an ERROR ... list) - (LIST (QUOTE ERROR) - string fileName))) - -(Server.MakeFullName - (Method ((Server MakeFullName) - self fileName directory) (* DSB "22-May-86 14:54") - (* Constructs full name of file and host) - - (* * if directory is not specified, it uses the user's login name on the host; i.e., the user's directory) - - - (COND - ((NOT directory) - (PACKFILENAME (QUOTE HOST) - (_ self Host) - (QUOTE DIRECTORY) - (_ self UserDirectory) - (QUOTE BODY) - fileName)) - (T - - (* * otherwise, it uses the specified directory name) - - - (PACKFILENAME (QUOTE HOST) - (_ self Host) - (QUOTE DIRECTORY) - directory - (QUOTE BODY) - fileName))))) - -(Server.MakePartialName - (Method ((Server MakePartialName) - self fileName directory) (* DSB "13-Jun-86 13:07") - (* Constructs name of file with directory, but without - host) - - (* * if directory is not specified, it uses the user's login name on the host; i.e., the user's root directory) - - - (COND - ((NOT directory) - (PACKFILENAME (QUOTE DIRECTORY) - (_ self UserDirectory) - (QUOTE BODY) - fileName)) - (T - - (* * otherwise, it uses the specified directory name) - - - (PACKFILENAME (QUOTE DIRECTORY) - directory - (QUOTE BODY) - fileName))))) - -(Server.Name - (Method ((Server Name) - self) (* DSB " 9-Jun-86 08:34") - (* returns vernacular server name) - (@ name))) - -(Server.PutErrorInWindow - (Method ((Server PutErrorInWindow) - self errorFile errorWindow mainWindow) (* DSB "15-Aug-86 17:42") - (* puts text of errorFile in a window) - - (* * put the errorFile in the errorWindow and set errorWindow props) - - - (OPENTEXTSTREAM errorFile errorWindow NIL NIL (QUOTE (PROMPTWINDOW (WINDOWPROP - mainWindow - (QUOTE - PROMPTWINDOW))))) - (WINDOWPROP errorWindow (QUOTE ERRORFILE) - errorFile) - (WINDOWADDPROP errorWindow (QUOTE CLOSEFN) - (QUOTE MS.CleanupErrorFile)))) - -(Server.PutTextInWindow - (Method ((Server PutTextInWindow) - self filename position) (* DSB "21-Jul-86 14:23") - (* Opens a scrollable TEDIT window for the file) - (TEDIT filename NIL NIL (QUOTE (READONLY T))))) - -(Server.Result - (Method ((Server Result) - self result) (* DSB "21-May-86 17:52") - (* returns the second element in the result list when  - there is no error. This is typically the jobID.) - (CADR result))) - -(Server.RunFile - (Method ((Server RunFile) - self file parameterList resultFile noErrorFlg) (* DSB " 9-Nov-86 13:49") - (* general method to run a command file and get result - and errors) - - (* * "file" is the name of the command file given to PROGRAMCHAT to be run on the host, and it must be in the  - proper host format (eg, submitjob) whereas "resultFile" is the name of the result file returned on  - the host, but it must be in the proper LISP naming format (eg, {GSLVAX10}submitjob.res)) - - - (LET (f result fullResultFile newFile) - - (* * runs a command file) - - - (_ self ExecuteCommandFile file parameterList) - - (* * look for result file) - - - (COND - ((SETQ fullResultFile (INFILEP (_ self MakeFullName resultFile))) - (SETQ f (OPENFILE fullResultFile (QUOTE INPUT))) - (SETQ result (READ f)) - (CLOSEF f) (* (DELFILE f)) - ) - (T (SETQ result (_ self MakeError "no result" NIL)))) - - (* * handle the errors) - - - - (* * default case (noErrorFlg=NIL) is not to return on errors. In this case, generate a break with an error  - message.) - - - - (* * Otherwise, do not break (if noErrorFlg=T). Instead, copy the error file to a file on core, and return its  - filename (e.g., {core}compile.err)) - - - - (* * after this runs, start up Job Manager, using (_ self AlertManager)) - - - (COND - ((NOT noErrorFlg) - (COND - ((_ self Error? result) - (DELFILE (_ self ErrorFile result)) - (ERROR (CONCAT (_ self Name) - ": " - (_ self ErrorString result)))) - (T (SETQ result (_ self Result result))))) - (T (* return complete result to user) - (COND - ((_ self Error? result) - (COND - ((SETQ f (_ self ErrorFile result)) - (SETQ newFile (COPYFILE f (PACKFILENAME (QUOTE HOST) - (QUOTE CORE) - (QUOTE BODY) - (_ self ExtractFilename - result)))) - (* (DELFILE f)) - (SETQ result (_ self MakeError (_ self ErrorString result) - newFile))) - (T result))) - (T result)))) - - (* * starts up JobManager, etc. Not yet implemented) - - (* (_ self AlertManager)) - result))) - -(Server.RunJob - (Method ((Server RunJob) - self filename parameterList) (* DSB "11-Aug-86 11:06") - (* runs com file, "filename", with additional  - parameters "parameterList", all of which must be on  - the host, as an interactive-type job) - - (* * parameterList is in RunJob either NIL or a list of parameters composed of a single string. - The parameterList sent to RunFile is thus a list composed of the filename and optional string of associated  - parameters.) - - - (_ self RunFile (_ self MakePartialName (LISTGET (@ comFileName) - (QUOTE RUNJOB)) - (_ self ServerDirectory)) - (CONS filename parameterList) - (_ self MakeFullName (LISTGET (@ resultFileName) - (QUOTE RUNJOB))) - T))) - -(Server.ServerDirectory - (Method ((Server ServerDirectory) - self) (* DSB "22-May-86 15:37") - (* returns the name of the server directory for  - command files) - (@ serverDirectory))) - -(Server.SourceExtension - (Method ((Server SourceExtension) - self) (* DSB "21-Aug-86 16:46") - (* returns default extension for source files) - (@ sourceExtension))) - -(Server.Status - (Method ((Server Status) - self jobNumber) (* DSB "12-Aug-86 13:51") - (* get machine status of batch jobs) - - (* if a jobNumber is specified it returns either the CPU time elapsed (if running) or the error message if it  - bombed, or NIL if neither.) - - - - (* if no jobNumber is specified, returns a list, each element of which is a prop list of the form  - ((JOB jobNumber) (CPU timeElapsed))) - - - (LET (errorFile f result) - - (* * if a jobNumber is specified, return its status) - - - (COND - (jobNumber (OR (CAR (_ self RunFile (_ self MakePartialName - (LISTGET (@ comFileName) - (QUOTE STATUS)) - (_ self ServerDirectory)) - jobNumber - (_ self MakeFullName (LISTGET (@ resultFileName) - (QUOTE STATUS))) - NIL)) - (COND - ((SETQ errorFile (INFILEP (_ self MakeFullName - (CONCAT jobNumber ".res")))) - (SETQ f (OPENFILE errorFile (QUOTE INPUT))) - (SETQ result (READ f)) - (CLOSEF f) (* (DELFILE f)) - result) - (T NIL)))) - (T - - (* * else, return the status of all active jobs) - - - (_ self RunFile (_ self MakePartialName (LISTGET (@ comFileName) - (QUOTE STATUS)) - (_ self ServerDirectory)) - jobNumber - (LISTGET (@ resultFileName) - (QUOTE STATUS)) - NIL)))))) - -(Server.SubmitJob - (Method ((Server SubmitJob) - self filename queue parameterList) (* DSB " 8-Aug-86 11:47") - (* submits file, which must be on the host, as a batch - job) - - (* * parameterList in SubmitJob is either NIL or a list of parameters composed of a single string. - The parameterList sent to RunFile is thus a list ocmposed of the filename, queue, and optional string of associated - parameters.) - - - (_ self RunFile (_ self MakePartialName (LISTGET (@ comFileName) - (QUOTE SUBMITJOB)) - (_ self ServerDirectory)) - (CONS filename (CONS queue parameterList)) - (_ self MakeFullName (LISTGET (@ resultFileName) - (QUOTE SUBMITJOB))) - NIL))) - -(Server.UserDirectory - (Method ((Server UserDirectory) - self) (* DSB "13-Jun-86 11:34") - (* Gets user name on appropriate host) - (* Forces login if not logged in) - (OR (MKATOM (CAAR (GETHASH (CANONICAL.HOSTNAME (_ self Host)) - LOGINPASSWORDS))) - (LOGIN (_ self Host))))) - -(VMSServer.MakeCommandString - (Method ((VMSServer MakeCommandString) - self commandFile parameterList) (* DSB "22-May-86 16:05") - (* assembles command string from given name of  - commandFile and parameterList) - (* Note that the commandFile and the parameterList  - must be quoted when this function is called) - (CONCAT "@" commandFile (for p in (MKLIST parameterList) bind (s _ "") - do (SETQ s (CONCAT s " " p)) finally (RETURN s))))) -) -(DEFINEQ - -(MS.MakeInstances - (LAMBDA NIL (* DSB " 9-Oct-86 11:18") - (* Initialization routine: makes browser and instances - of servers) - - (* * make class browser for Server) - - - (LET (newBrowser) - (SETQ newBrowser (_ ($ ClassBrowser) - New)) - (_ newBrowser AddRoot ($ Server))) - - (* * make $GSLVAX instance of VMSServer) - - - (_ ($ VMSServer) - New - (QUOTE GSLVAX)) - (_@ - ($ GSLVAX) - host - (QUOTE GSLVAX)) - (_@ - ($ GSLVAX) - name - (QUOTE GSLVAX)) - (_@ - ($ GSLVAX) - description "The GSL 11/780 VMS Server") - (_@ - ($ GSLVAX) - serverDirectory - (QUOTE )) - (_@ - ($ GSLVAX) - queues - (QUOTE (Fast Medium Slow))) - - (* * make $SITKA instance of VMSServer) - - (* the host value, SITKA, refers to the pup address  - 204#156#) - (_ ($ VMSServer) - New - (QUOTE SITKA)) - (_ ($ SITKA) - PutValue - (QUOTE host) - (QUOTE SITKA)) - (_@ - ($ SITKA) - name - (QUOTE SITKA)) - (_@ - ($ SITKA) - description "The GSL microVAX VMS Server") - (_@ - ($ SITKA) - serverDirectory - (QUOTE )) - (_@ - ($ SITKA) - queues - (QUOTE (Fast Slow))) - (_@ - ($ SITKA) - comFileName - (QUOTE (SUBMITJOB submitJob.com ABORTJOB abortJob.com RUNJOB runJob.com STATUS status.com - COMPILE compile.com LINK link.com GETTIME getTime.com))) - (_@ - ($ SITKA) - resultFileName - (QUOTE (SUBMITJOB submitJob.res ABORTJOB abortJob.res RUNJOB runJob.res STATUS status.res - COMPILE compile.res LINK link.res GETTIME getTime.res))) - - (* * make $MADVAX instance of VMSServer) - - - (_ ($ VMSServer) - New - (QUOTE MADVAX)) - (_@ - ($ MADVAX) - host - (QUOTE MADVAX)) - (_@ - ($ MADVAX) - name - (QUOTE MADVAX)) - (_@ - ($ MADVAX) - description "The AIS 11/750 VMS Server") - (_@ - ($ MADVAX) - serverDirectory - (QUOTE )) - (_@ - ($ MADVAX) - queues - (QUOTE (Fast Medium Slow))) - - (* * make $CRAYZY instance of Cray VaporServer) - - - (_ ($ Cray) - New - (QUOTE CRAYZY)) - (_ ($ CRAYZY) - PutValue - (QUOTE host) - (QUOTE CRAYZY)) - (_@ - ($ CRAYZY) - name - (QUOTE CRAYZY)) - (_@ - ($ CRAYZY) - description "Not yet plugged in..."))) - -(StripPA - (LAMBDA (username) (* DSB "22-May-86 11:50") - (SUBATOM username 1 (LET ((POS (STRPOS "." username))) - (COND - ((FIXP POS) - (SUB1 POS)) - (T NIL)))))) -) -(MS.DestroyInstances) -(MS.MakeInstances) - (* * PROGRAMCHAT - Windowless CHAT for communication) - -(DEFINEQ - -(OPENCHATSTREAM - (LAMBDA (HOST) (* ejs: "23-Feb-85 19:22") - (PROG (OPENFUNCTION) - (COND - ((BOUNDP (QUOTE CHAT.PROTOCOLTYPES)) - (COND - ((for PROTOCOL in CHAT.PROTOCOLTYPES thereis (SETQ OPENFUNCTION - (APPLY* (CDR PROTOCOL) - HOST))) - (RETURN (APPLY* (CADR OPENFUNCTION) - (CAR OPENFUNCTION)))))) - ((BOUNDP (QUOTE CHAT.PROTOCOLS)) - (COND - ((for PROTOCOL in CHAT.PROTOCOLS thereis (SETQ OPENFUNCTION - (APPLY* PROTOCOL HOST))) - (RETURN (APPLY* (CADR OPENFUNCTION) - (CAR OPENFUNCTION)))))))))) - -(PROGRAMCHAT - (LAMBDA (HOST CMDSTREAM LOGSTREAM) (* DSB " 9-Nov-86 13:02") - (PROG ((STREAMPAIR (OPENCHATSTREAM HOST)) - INCHAT OUTCHAT) - (COND - (STREAMPAIR (SETQ INCHAT (CAR STREAMPAIR)) - (SETQ OUTCHAT (CDR STREAMPAIR)) - (SETFILEINFO OUTCHAT (QUOTE ENDOFSTREAMOP) - (FUNCTION CHAT.ENDOFSTREAMOP)) - (SETFILEINFO INCHAT (QUOTE ENDOFSTREAMOP) - (FUNCTION CHAT.ENDOFSTREAMOP)) - (ADD.PROCESS (BQUOTE (PROGRAMCHAT.OUTPUT (QUOTE , INCHAT) - (QUOTE , LOGSTREAM)))) - (BLOCK) - (PROGRAMCHAT.LOGIN HOST INCHAT OUTCHAT) - (COND - ((STRINGP CMDSTREAM) - (SETQ CMDSTREAM (OPENSTRINGSTREAM CMDSTREAM (QUOTE INPUT))))) - (COND - ((NULL LOGSTREAM) - (SETQ LOGSTREAM (OPENSTREAM (QUOTE {NULL}) - (QUOTE OUTPUT))))) - (while (AND (OPENP OUTCHAT (QUOTE OUTPUT)) - (NOT (EOFP CMDSTREAM))) - do (BOUT OUTCHAT (BIN CMDSTREAM)) - (BLOCK) - finally (COND - ((EOFP CMDSTREAM) - (CLOSEF CMDSTREAM) - (BOUT OUTCHAT (CHARCODE CR)) - (PROGRAMCHAT.LOGIN HOST INCHAT OUTCHAT (QUOTE LOGOUT)) - (FORCEOUTPUT OUTCHAT T) - (until (NOT (OPENP INCHAT (QUOTE INPUT))) - do (BLOCK) finally (CLOSEF OUTCHAT)))))))))) - -(PROGRAMCHAT.LOGIN - (LAMBDA (HOST INSTREAM OUTSTREAM OPTION) (* ejs: "24-Jan-85 18:52") - - (* * Login to HOST. If a job already exists on HOST, Attach to it unless OPTION overrides.) - - - (PROG ((LOGINFO (CDR (ASSOC (OR (GETOSTYPE HOST) - (QUOTE IFS)) - NETWORKLOGINFO))) - NAME/PASS COM) - (OR LOGINFO (RETURN)) - (SETQ NAME/PASS (\INTERNAL/GETPASSWORD HOST)) - (SETQ COM (COND - (OPTION) - ((ASSOC (QUOTE ATTACH) - LOGINFO) - (OR (CHAT.LOGINFO INSTREAM HOST (CAR NAME/PASS)) - (QUOTE LOGIN))) - (T (* Don't know how to do anything but login, so silly  - to try anything else) - (QUOTE LOGIN)))) - (COND - ((NULL (SETQ LOGINFO (ASSOC COM LOGINFO))) - (printout PROMPTWINDOW T "Login option " COM " not implemented for this type of host") - ) - (T (for X in (CDR LOGINFO) do (SELECTQ X - (CR (BOUT OUTSTREAM (CHARCODE - CR)) - (FORCEOUTPUT OUTSTREAM)) - (USERNAME (PRIN3 (CAR NAME/PASS) - OUTSTREAM)) - (PASSWORD (PRIN3 - (\DECRYPT.PWD - (CDR NAME/PASS)) - OUTSTREAM)) - (WAIT - (* Some systems do not permit typeahead) - (COND - ((NOT (CHAT.FLUSH&WAIT - INSTREAM)) - (* Couldn't sync, so wait longer.) - (DISMISS CHAT.WAIT.TIME))) - (DISMISS CHAT.WAIT.TIME)) - (PRIN3 X OUTSTREAM))) - (FORCEOUTPUT OUTSTREAM)))))) - -(PROGRAMCHAT.OUTPUT - (LAMBDA (INCHATSTREAM LOGSTREAM) (* ejs: "23-Feb-85 19:18") - (bind CH while (AND (NEQ CH -1) - (OPENP INCHATSTREAM (QUOTE INPUT))) - do (SETQ CH (BIN INCHATSTREAM)) - (COND - ((NEQ CH -1) - (COND - (LOGSTREAM (BOUT LOGSTREAM CH))))) - finally (COND - ((OPENP INCHATSTREAM) - (CLOSEF INCHATSTREAM)))))) -) - - - -(* VARS for our site) - - -(RPAQQ NETWORKLOGINFO ((TENEX (LOGIN "LOGIN " USERNAME " " PASSWORD " -") - (ATTACH "ATTACH " USERNAME " " PASSWORD " -") - (WHERE "WHERE " USERNAME CR "ATTACH " USERNAME " " PASSWORD CR) - (LOGOUT "LOGOUT" CR)) - (TOPS20 (LOGIN "LOGIN " USERNAME CR PASSWORD CR) - (ATTACH "ATTACH " USERNAME "" CR PASSWORD CR) - (WHERE "LOGIN " USERNAME CR PASSWORD CR) - (LOGOUT "LOGOUT" CR)) - (UNIX (LOGIN WAIT CR WAIT USERNAME CR WAIT PASSWORD CR WAIT WAIT WAIT WAIT CR) - (LOGOUT WAIT CR "logout" CR)) - (IFS (LOGIN "Login " USERNAME " " PASSWORD CR) - (ATTACH) - (LOGOUT "Quit" CR)) - (VMS (LOGIN USERNAME CR PASSWORD CR) - (LOGOUT "LOGOUT" CR)) - (NS (LOGIN "Logon" CR USERNAME CR PASSWORD CR) - (LOGOUT "LOGOFF" CR)))) -(pushnew NETWORKOSTYPES (QUOTE (GSLVAX . VMS)) - (QUOTE (SITKA . VMS)) - (QUOTE (MADVAX . VMS))) - (* * PROGRAMMER'S INTERFACE - use remote servers with LISP calls) - -(DEFINEQ - -(PRIN.RunRemote - (LAMBDA (hostname filename parameterList) (* DSB "25-Nov-86 09:41") - (* Main Programmer's Interface  - (PRIN) function) - (PROG (host file result) - - (* * check preliminaries) - - - (SETQ host (PRIN.ValidateHost hostname)) - (COND - ((NOT host) - (RETURN (PRIN.Error (CONCAT "Host " (U-CASE hostname) - " is not valid"))))) - (SETQ file (PRIN.ValidateFilename filename host hostname)) - (COND - ((NOT file) - (RETURN (PRIN.Error (CONCAT "Command file " filename " does not exist"))))) - - (* * run the job) - - - (SETQ result (_ host RunJob file parameterList)) - - (* * handle the results) - - - (COND - ((EQUAL (CAR result) - (QUOTE ERROR)) - (PRIN.Error "Run-time warning or error" host file result)) - (T (PROMPTPRINT (CONCAT "Call to remote host " (U-CASE hostname) - " succeeded without error")) - (RETURN T)))))) - -(PRIN.ValidateHost - (LAMBDA (hostname) (* DSB "10-Nov-86 08:06") - (* returns the host, or NIL if nonexistant) - (PROG (host) - (SETQ host (FE.GetServer (U-CASE hostname))) - (RETURN host)))) - -(PRIN.ValidateFilename - (LAMBDA (filename host hostname) (* DSB "10-Nov-86 08:40") - (* returns file if command file exists, or NIL  - otherwise) - (PROG (directory name extension wholename fileExists?) - (SETQ directory (UNPACKFILENAME filename (QUOTE DIRECTORY))) - (SETQ name (UNPACKFILENAME filename (QUOTE NAME))) - (SETQ extension (_ host CommandFileExtension)) - (SETQ wholename (PACKFILENAME (QUOTE HOST) - (U-CASE hostname) - (QUOTE DIRECTORY) - directory - (QUOTE NAME) - name - (QUOTE EXTENSION) - extension)) - (SETQ fileExists? (INFILEP wholename)) - (COND - ((NOT fileExists?) - (RETURN NIL)) - (T (RETURN (PACKFILENAME (QUOTE DIRECTORY) - directory - (QUOTE NAME) - name))))))) - -(PRIN.Error - (LAMBDA (errorString host file result) (* DSB "10-Nov-86 11:17") - (* opens an error window and prints the error string  - and any run-time error messages) - (PROG (hostname errorWindow errorFile) - (COND - ((AND host file) - (SETQ hostname (_ host Name)) - (SETQ errorWindow (CREATEW (QUOTE (300 300 420 200)) - (CONCAT "PRIN: " errorString " on host " hostname))) - (SETQ errorFile (_ host ExtractFilename result)) - (_ host PutErrorInWindow errorFile errorWindow)) - (T (SETQ errorWindow (CREATEW (QUOTE (300 300 300 80)) - "Programmer's Interface Error Window")) - (PRIN1 errorString errorWindow)))))) -) -(PUTPROPS MATHSERVER COPYRIGHT ("Xerox Corporation" 1986 1987)) -(DECLARE: DONTCOPY - (FILEMAP (NIL (4197 14885 (MS.TopLevel 4207 . 5531) (MS.CreateFreeMenu 5533 . 8329) (MS.SelectHost -8331 . 9538) (MS.ExpandFilename 9540 . 10736) (MS.CloseErrorWindow 10738 . 11298) (MS.CleanupErrorFile - 11300 . 11832) (MS.AttachErrorWindow 11834 . 12844) (MS.MostRoom 12846 . 13508) (MS.GetMessageWindow -13510 . 13852) (MS.MakeIconWindow 13854 . 14099) (PrintMsg 14101 . 14883)) (14925 15698 ( -MS.MakeMenuOfKnownHosts 14935 . 15351) (MS.DestroyInstances 15353 . 15696)) (15733 38409 ( -MS.SubmitBatchJob 15743 . 18415) (MS.AbortBatchJob 18417 . 20283) (MS.Status 20285 . 21644) ( -MS.DisplayStatus 21646 . 22635) (MS.RunInteractiveJob 22637 . 25063) (MS.Compile 25065 . 27193) ( -MS.Link 27195 . 29585) (MS.CompileLink 29587 . 32889) (MS.CLR.Check 32891 . 33195) (MS.CLR.NoCheck -33197 . 33507) (MS.CompileLinkRun 33509 . 38407)) (38447 42814 (MS.StartNewFE 38457 . 38753) ( -MS.StartDefaultFE 38755 . 40730) (MS.FindFortranEdit 40732 . 41673) (MS.CheckForDirtyFile 41675 . -42812)) (42852 47051 (MS.BatchErrors? 42862 . 45339) (MS.BatchLog 45341 . 47049)) (50865 60017 ( -FE.TopLevel 50875 . 52556) (FE.AdjustProps 52558 . 53265) (FE.CaretPosition 53267 . 55145) ( -TEDIT.PARA&CHAR 55147 . 56522) (FE.CharFn 56524 . 56830) (FE.GetEditProps 56832 . 57951) ( -FE.GetSourceFileName 57953 . 59635) (FE.LoopFn 59637 . 60015)) (60047 64784 (FE.GetPositionWindow -60057 . 61139) (FE.GetEditWindow 61141 . 62925) (FE.GetMessageWindow 62927 . 63409) (FE.ReshapeFn -63411 . 63721) (FE.ShadeWindow 63723 . 64782)) (64817 84050 (FE.CreateLocalMenu 64827 . 66468) ( -FE.SetHost 66470 . 67980) (FE.SetDirectory 67982 . 69411) (FE.MyGet 69413 . 70543) (FE.MyPut 70545 . -72589) (FE.StripVersion 72591 . 73415) (FE.Compile 73417 . 75646) (FE.Link 75648 . 77825) ( -FE.CompileLinkRun 77827 . 81823) (FE.RunInteractive 81825 . 84048)) (84090 85128 (FE.ValidHostname -84100 . 84668) (FE.GetServer 84670 . 85126)) (85152 87199 (FE.ShrinkIconCreate 85162 . 87197)) (99037 -117564 (FortranServer.Compile 99047 . 99571) (FortranServer.Compiled? 99573 . 100108) ( -FortranServer.Link 100110 . 100890) (FortranServer.Linked? 100892 . 101427) (MathServer.AlertManager -101429 . 102140) (Server.AbortJob 102142 . 102665) (Server.CommandFileExtension 102667 . 103004) ( -Server.Description 103006 . 103269) (Server.Error? 103271 . 103560) (Server.ErrorFile 103562 . 103938) - (Server.ErrorString 103940 . 104248) (Server.ExecuteCommandFile 104250 . 104711) ( -Server.ExtractFilename 104713 . 105001) (Server.GetQueues 105003 . 105265) (Server.GetTime 105267 . -105888) (Server.Host 105890 . 106167) (Server.MakeError 106169 . 106451) (Server.MakeFullName 106453 - . 107300) (Server.MakePartialName 107302 . 108087) (Server.Name 108089 . 108328) ( -Server.PutErrorInWindow 108330 . 109007) (Server.PutTextInWindow 109009 . 109329) (Server.Result -109331 . 109668) (Server.RunFile 109670 . 112378) (Server.RunJob 112380 . 113285) ( -Server.ServerDirectory 113287 . 113604) (Server.SourceExtension 113606 . 113890) (Server.Status 113892 - . 115534) (Server.SubmitJob 115536 . 116388) (Server.UserDirectory 116390 . 116888) ( -VMSServer.MakeCommandString 116890 . 117562)) (117565 120654 (MS.MakeInstances 117575 . 120398) ( -StripPA 120400 . 120652)) (120756 125312 (OPENCHATSTREAM 120766 . 121492) (PROGRAMCHAT 121494 . 122998 -) (PROGRAMCHAT.LOGIN 123000 . 124845) (PROGRAMCHAT.OUTPUT 124847 . 125310)) (126250 129561 ( -PRIN.RunRemote 126260 . 127389) (PRIN.ValidateHost 127391 . 127722) (PRIN.ValidateFilename 127724 . -128739) (PRIN.Error 128741 . 129559))))) -STOP diff --git a/obsolete/lispusers/MATHSERVER.COMMANDFILES b/obsolete/lispusers/MATHSERVER.COMMANDFILES deleted file mode 100644 index 41e6e624..00000000 --- a/obsolete/lispusers/MATHSERVER.COMMANDFILES +++ /dev/null @@ -1,13 +0,0 @@ -ABORTJOB.COM $ ! abortJob.com $ ! this file is used to abort a batch job $ ! p1 is the jobNumber; p2 is the queue $ ! The "show batch" command is used to determine if the job exists. If $ ! it does not, the message NIL is returned; otherwise, the job is $ ! aborted. $ ! All messages are returned to the user's root directory. $ ! If there is a serious error, ... $ ! if there is an error in the running of this com file, the detailed $ ! error message gets sent to abortJob.err in the user's root directory. $ !SET VERIFY $ delete sys$login:abortJob.err.* $ delete sys$login:abortJob.res.* $ SET NOVERIFY $ define sys$output abortJob.tmp $ show queue 'P2' $ deassign sys$output $ !SET VERIFY $ open/write result sys$login:abortJob.res $ $ loop: $ open/read file abortJob.tmp $ read/end_of_file=done file line $ jobNumber = f$integer(f$extract(32,4,line)) $ if jobNumber .eq. P1 then goto found $ goto loop $ $ done: $ write result "( OK NIL)" ! job not found $ goto finish $ $ found: $ define sys$error sys$login:abortJob.err $ on error then goto error $ stop/entry='P1' 'P2' $ deassign sys$error $ write result "( OK ( Job ",P1," on queue ",P2,- " has been aborted))" $ $ finish: $ close result $ close file $ delete abortJob.tmp.* $ exit $ error: $ @[gslws.server]error sys$login:abortJob.res '$STATUS' $ deassign sys$error $ close result $ close file $ delete abortJob.tmp.* ----------------------------------- COMPILE.COM $ ! COMPILE.COM 8/7/86 $ ! this file is used to compile a job interactively. $ ! job is the name of the user's fortran source file $ ! the file exists in the user's local directory, which may be a $ ! subdirectory of the root directory. $ ! the object file is made in the user's local directory. $ ! if there is no error in compilation, the name and date of the $ ! object file are returned in sys$login:compile.res. $ ! if there is an error in compilation, the abbreviated error message $ ! is returned in sys$login:compile.res, and the detailed $ ! error message is written to sys$login:compile.err. $ $ $ !SET VERIFY $ job = f$parse("''P1'",,,"name") $ userDirectory = f$parse("''P1'",,,"directory") $ length=f$length(job) $ ! show symbol job $ ! show symbol userDirectory $ ! show sym length $ delete sys$login:compile.err.* $ delete sys$login:compile.res.* $ delete 'P1'.obj.* $ define sys$error sys$login:compile.err $ ! define sys$error sys$login:'job'.err $ on error then goto error $ $ fortran/object='userDirectory''job' 'P1' $ deassign sys$error $ SET NOVERIFY $ define sys$output sys$login:objFile.tmp $ dir/date 'P1'.obj $ deassign sys$output $ !SET VERIFY $ open/write resultFile sys$login:compile.res $ open/read file sys$login:objFile.tmp $ $ loop: $ read/end_of_file=done file line $ ! show sym line $ name=f$extract(0,length,line) $ ! show sym name $ if name .eqs. job then goto found $ goto loop $ $ done: $ write resultFile "( OK NIL)" ! object file not found $ goto finish $ $ found: $ write resultFile "( OK (",line,"))" $ $ finish: $ close resultFile $ close file $ delete objFile.tmp.* $ exit $ $ error: $ @[gslws.server]error sys$login:compile.res '$STATUS' $ deassign sys$error ----------------------- ERROR.COM $ ! lists error status message in specified file $ ! call by: @error resultFile errorStatus $ $ open/write result 'P1' $ errorFile = f$logical("sys$error") $ ! show sym errorFile $ shortName=f$parse(errorFile,,,"name") $ ! show sym shortName $ write result "(ERROR ""''f$message(P2)'"" ''shortName'.ERR)" $ close result ---------------------------- LINK.COM $ ! LINK.COM 8/8/86 $ ! This file is used to link a series of object files to form an $ ! executable file. $ ! The parameter P1 is the object code filename of the main file. $ ! The parameter P2 is a string composed of all object files to $ ! be linked with P1. There must be a comma between these files $ ! within P2. $ ! Job is the extracted name of the user's main object code file. $ ! This file exists in the user's local directory, which may be a $ ! subdirectory of the root directory. $ ! The executable file is made in the user's local directory. $ ! If there is no error in linking, the name and date of the $ ! executable file are returned in sys$login:link.res. $ ! If there is no error in linking but no .exe file is made, a $ ! message to that effect is returned in sys$login:link.res. $ ! If there is a link warning during linking, an error message is returned $ ! in sys$login:link.res, and the detailed link warning messages are $ ! written to sys$login:link.err. $ ! If there is an error in linking, such as no existing object file, $ ! the abbreviated error message is returned, from the ERROR.COM file, $ ! in sys$login:link.res, and the detailed error message is written $ ! to sys$login:link.err. $ !SET VERIFY $ job = f$parse("''P1'",,,"name") $ userDirectory = f$parse("''P1'",,,"directory") $ length=f$length(job) $ ! show symbol job $ ! show symbol userDirectory $ ! show symbol length $ delete sys$login:link.err.* $ delete sys$login:link.res.* $ delete 'P1'.exe.* $ define sys$error sys$login:link.err $ ! define sys$error sys$login:'job'.err $ on error then goto error $ ! $ ! Note: link warnings can be very serious, such as the absence of object $ ! code modules, in which case a useless .exe file is made. Because $ ! errors (as opposed to warnings) get trapped through the error routine, $ ! these serious link warnings must be handled specially. $ ! $ ! show symbol P2 $ if P2 .eqs. "" then goto simple $ link/exe='userDirectory''job' 'P1','P2' $ goto continue1 $ ! $ simple: $ link/exe='userDirectory''job' 'P1' $ ! $ continue1: $ deassign sys$error $ open/write resultFile sys$login:link.res $ ! $ ! If we've gotten this far, it means no errors occurred. $ ! First, check if link warnings occurred, by determining if a $ ! LINK.ERR file was written. If so, continue through linkerror1. $ ! $ SET NOVERIFY $ define sys$output sys$login:linkFile.tmp $ dir/date/siz sys$login:link.err $ deassign sys$output $ !SET VERIFY $ open/read file sys$login:linkFile.tmp $ ! $ loop1: $ read/end_of_file=continue2 file line $ show sym line $ name=f$extract(0,4,line) $ show sym name $ if name .eqs. "LINK" then goto linkerror1 $ goto loop1 $ ! $ continue2: $ close file $ ! $ ! Second, check if an executable file was made. (Executable files are $ ! made in spite of link warnings. The following check flags a $ ! situation where neither a link warning nor an executable file is made.) $ ! $ SET NOVERIFY $ define sys$output sys$login:exeFile.tmp $ dir/date 'P1'.exe $ deassign sys$output $ !SET VERIFY $ open/read file sys$login:exeFile.tmp $ ! $ loop2: $ read/end_of_file=linkerror2 file line $ show sym line $ name=f$extract(0,length,line) $ show sym name $ if name .eqs. job then goto found $ goto loop2 $ ! $ linkerror1: $ message="error during linking" $ write resultFile "(ERROR ""''message'"" LINK.ERR)" ! link warning $ goto finish1 $ ! $ linkerror2: $ message="executable file not made" $ write resultFile "( OK (",message,"))" ! exe file not made $ goto finish2 $ ! $ found: $ write resultFile "( OK (",line,"))" $ goto finish2 $ ! $ finish1: $ close resultFile $ delete sys$login:linkFile.tmp.* $ exit $ ! $ finish2: $ close resultFile $ close file $ delete sys$login:exeFile.tmp.* $ delete sys$login:linkFile.tmp.* $ exit $ ! $ error: $ @[gslws.server]error sys$login:link.res '$STATUS' $ deassign sys$error ---------------------------------------------- RUNJOB.COM $ ! runjob.com 8/11/86 $ ! this file is used to run an interactive job $ ! job is the name of the user's com file $ ! P2 is the list of appended parameters (optional) $ ! If there is no error in running the job, an OK message is $ ! written out to sys$login:runjob.res. $ ! If there are warnings during the running of the job, an ERROR message $ ! is returned in sys$login:runjob.res, and the detailed warning $ ! messages are returned in sys$login:runjob.err $ ! If there is an error in the running of the job, the abbreviated $ ! error message is returned, from the ERROR.COM file, in $ ! sys$login:runjob.res, and the detailed error message is written $ ! to sys$login:runjob.err. $ !SET VERIFY $ job = f$parse("''P1'",,,"name") $ delete sys$login:runJob.err.* $ delete sys$login:runJob.res.* $ define sys$error sys$login:runJob.err $ on error then goto error $ @'P1' 'P2' $ deassign sys$error $ open/write resultFile sys$login:runJob.res $ ! $ ! If a warning occurs, it is written out to runJob.err $ ! Such warnings are handled specially, through the $ ! runwarning entry. $ ! $ SET NOVERIFY $ define sys$output sys$login:runFile.tmp $ dir/date/siz sys$login:runJob.err $ deassign sys$output $ !SET VERIFY $ open/read file sys$login:runFile.tmp $ ! $ loop: $ read/end_of_file=continue file line $ show sym line $ name=f$extract(0,6,line) $ show sym name $ if name .eqs. "RUNJOB" then goto runwarning $ goto loop $ ! $ continue: $ write resultFile "( OK (",job," ",P1," ))" $ goto finish $ ! $ runwarning: $ message="warning(s) occurred" $ write resultFile "(ERROR ""''message'"" RUNJOB.ERR)" $ ! $ finish: $ close file $ close resultFile $ delete sys$login:runFile.tmp.* $ exit $ ! $ error: $ @[gslws.server]error sys$login:runJob.res '$STATUS' $ deassign sys$error ------------------------------------------- STATUS.COM $ ! get status of batch jobs $ ! If jobNumber is specified, return only status of that job $ ! If jobNumber is not specified, return all jobs $ ! called by: @status jobNumber $ $ delete status.res.* $ $ define sys$output status.tmp $ show system/batch $ deassign sys$output $ !SET VERIFY $ $ open/read file status.tmp $ open/write result status.res $ write result "( OK (" $ if P1 .eq. "" then goto writeall $ $ loop: $ read/end_of_file=done file line $ job = f$integer(f$extract(15,4,line)) $ if job .eq. P1 then goto found $ goto loop $ $ done: $ write result "NIL" ! no data for specified job $ goto finish $ $ found: $ time = f$extract(49,11,line) $ write result "( (JOB ''P1') (CPU ''time') )" $ goto finish $ $ writeall: $ read/end_of_file=finish file line $ jobType = f$extract(9,5,line) $ if jobType .nes. "BATCH" then goto writeall $ job = f$integer(f$extract(15,4,line)) $ time = f$extract(49,11,line) $ write result "( (JOB ''job') (CPU ''time') )" $ goto writeall $ $ finish: $ write result ") )" $ close result $ close file $ delete status.tmp; $ exit ---------------------------------------- SUBCOM.COM $ ! subcom.com $ ! this is the file actually submitted by submitjob.com $ ! Parameter P1 is the name of the user's COM file to be run $ ! Parameters P2,P3, etc are passed from P3,P4, etc. in SubmitJob.com $ ! jobname is in the form BATCH_xxx $ ! job is the number (xxx) $ ! if there is an error in the running of the batch job, the detailed $ ! error message gets sent to 'job'.err. $ ! The abbreviated error message gets sent to 'job'.res $ ! SET VERIFY $ jobname = f$process() $ job = f$extract(6,f$length(jobname)-6,jobname) $ ! open/write outfile junk. $ ! write outfile jobname," ",job $ ! close outfile $ define sys$error 'job'.err $ on error then goto error $ @'P1' 'P2' 'P3' 'P4' 'P5' 'P6' $ exit $ error: $ @[gslws.server]error 'job'.res '$STATUS' ------------------------------------------ SUBMITJOB.COM $ ! submitjob.com 8/11/86 $ ! submit a job on specified queue $ ! call by: @submitjob file queue parameterString $ ! P1 is the file name of the job to be submitted $ ! P2 is the queue (eg., fast, medium) $ ! P3, P4, P5, etc. are subsidiary parameters, such as file $ ! names (eg., file1.dat, file2.sav). $ ! these files are returned in the user's root directory: $ ! P1.log for log file $ ! submitjob.res for result (job # or error message) $ ! submitjob.err for detailed errors (from sys$error) $ ! submitjob.tmp for temporary output $ ! these files are returned in the user's running (sub)directory: $ ! 'jobnumber'.res for error message to be returned $ ! 'jobnumber'.err for detailed error message $ !SET VERIFY $ job=f$parse("''P1'",,,"name") $ delete sys$login:'job'.log.* $ delete sys$login:submitjob.err.* $ delete sys$login:submitjob.res.* $ delete sys$login:submitjob.tmp.* $ errorFile = "submitjob.err" $ tempFile = "submitjob.tmp" $ resultFile = "submitjob.res" $ define sys$error 'errorFile' $ on error then goto error $ ! submit the batch job $ SET NOVERIFY $ if P3.eqs."" then goto zeropar $ if P4.eqs."" then goto onepar $ if P5.eqs."" then goto twopar $ if P6.eqs."" then goto threepar $ if P7.eqs."" then goto fourpar $ if P8.eqs."" then goto fivepar $ goto abort $ zeropar: $ define sys$output 'tempFile' $ submit/noprint/name='job'/parameters=('P1')- /queue='P2' [gslws.server]subcom.com $ deassign sys$output $ goto finish $ onepar: $ define sys$output 'tempFile' $ submit/noprint/name='job'/parameters=('P1','P3')- /queue='P2' [gslws.server]subcom.com $ deassign sys$output $ goto finish $ twopar: $ define sys$output 'tempFile' $ submit/noprint/name='job'/parameters=('P1','P3','P4')- /queue='P2' [gslws.server]subcom.com $ deassign sys$output $ goto finish $ threepar: $ define sys$output 'tempFile' $ submit/noprint/name='job'/parameters=('P1','P3','P4','P5')- /queue='P2' [gslws.server]subcom.com $ deassign sys$output $ goto finish $ fourpar: $ define sys$output 'tempFile' $ submit/name='job'/parameters=('P1','P3','P4','P5','P6')- /noprint/queue='P2' [gslws.server]subcom.com $ deassign sys$output $ goto finish $ fivepar: $ define sys$output 'tempFile' $ submit/name='job'/parameters=('P1','P3','P4','P5','P6','P7')- /noprint/queue='P2' [gslws.server]subcom.com $ deassign sys$output $ finish: $ !SET VERIFY $ ! get job number of submitted job from string in submit.tmp $ open/read infile 'tempFile' $ read infile line $ ! line now equals " Job xxxx entered on queue ----" $ startPosition = f$locate("entry",line)+5 $ endPosition = f$locate(")",line) $ numDigits = endPosition - startPosition $ jobNumber = f$extract(startPosition,numDigits,line) $ close infile $ ! delete 'tempFile';* $ open/write outfile 'resultFile' $ write outfile "( OK (",jobNumber, " ", P1," ))" $ close outfile $ ! no (ERROR ...) message, so deassign the error file $ deassign sys$error $ exit $ abort: $ open/write outfile 'errorFile' $ write outfile "Too many job parameters (more than five)" $ close outfile $ deassign sys$error $ exit $ ! get error message $ error: $ @user1:[gslws.server]error 'resultFile' '$STATUS' $ deassign sys$output $ deassign sys$error $ ! delete 'tempFile';* $ exit -----------------------+@(GACHA  ˜ 67B);B9G=9#1!!*),0/-(&*? & - -8 -1+%"."? BCADCE*?>:@@LH%FJG#1')LIN>"+ -& ,;BF+"( ',   ICN*' ( $ !E%? & "  !" -5/ 0,6>+JD4D=F#  (-:8*$'&.  / 7 - ! -7, >3!)"(! 1 / $ .(0 - ) 9>G&G,;1#" -,+$38-B/; =>.C<2 ###'&&('' 01 -41 -91 >1 ;9 @9 ->6+#*6"47 'A  4:Œ®zº \ No newline at end of file diff --git a/obsolete/lispusers/MATHSERVER.LCOM b/obsolete/lispusers/MATHSERVER.LCOM deleted file mode 100644 index 8ff5177b2524e587e662d48505eb2ca60463bf72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67222 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

    _f*kU_YQS2aJ*wGARIoZI?QblMym2Ac8RqFK$%? zj}T}JR1EMT#L`Cm4uQlqqDR0KWxljctltqZdIAdVMp2r$-9u7>3ew1zIh5fMHO@^=zpR4AH2jO;S(B&Ws>>o}_SlwjM9PL|T`;3`s{)z8qSlON>!E9sYWr90@3O7Hfc@y&VjZx-U4{+lpY3_y zbI$#sNLk9#qFbdOUMiT)TbWcjV^%Y15fBTfD~*lQ3sDh{o(YA{ zgpGg*2G+V)H(KpRU35Dr^6_+K=@TDmw>CG{y1m9(y4c!m^fu34t@WF@c)8KrXm|Uw z9}drm$$&9``rKBVInJFi=Fddq0dbKSwx6tv7Wfq!^>*WiFk+|8t;a{-F z3%Jy9=uF5s6I}?*Oa^^j4#!TX8*8WM<02eB6N#OP%%h9>VmiNQf8ryH6>GV2cFC^V zXRUm)Y?fEg7R+j{k|{rvDVHp}I{V?Mh%SV}A+gr1buKqHMZbGS1hd7;q$rprYqrut zR~xg1+IpjeQAuLv`bMo&&tgtGwW|$DD>VAGfntk|jzgId!Dq~JMNInJPuYdajM(Tk zUT$@_HhI`*Fvs(HOrZtL*qO+};l>o1K{M!lwYy<8UT(C-`_uE2#k?iPrpNGizyD)u zEEtY@2I16N@J)e3R%K~)nl?k+Cxfb4nyhl8R`1s?wi|BSAE0JmqK^mYm=2tP(0 z5nd3%aAZdHj(Wz`tyV|&E?5#_(P>;uHETUl5+SkK@3lIY@!6dC%6rd~@vg z@-E?Z&-ELg>o+~u-{j&Je-`+&IC&qjzHnmKbXl492^K0JZD}v*oFZ{Ir*gC(<_wW7 z%+exNs!)w09FGwpl{1Tr8Ouy&Aa}8OBGEvzWxJ41LlWbA3PlzM3mJ2J3PC^zIE7-O zWTuu#jEiO=Bj!Wme9=dV&ks^!@j*&7I!Hm|1AKT~&Ojkf;aEiE>`GOHBTC>9KnS*b#1=>}SupU=gd=W)om^E?)o&oL`5XTwnKxed5d z&1zMv8P+8b>X5kF=xi;wI`!@~2-(?jEdBJ9)N3mq;mWayNvUJ8;Dyey(vgpN$(vYl zEGF%|Wf3z(C1;j0%OV;UrSnxO)1|VF&ESy%B^HAVH|No#*voK{~vA)2+E5ZZc48{4qJThGd5 ztC*E%Fewu})crqrV)%p0@l}F9&E_fjr@v3h9WoZ2kC4D-?J}%cAyYh$KF34453#7A zE(l0pHD9$d0;}!LVui=IK!(3xOLgl|OKev$Q2_yo3kIvJrHra6cUq}|xvKY@XGGR6 zRz2nDaz+TD3TGP}uf*>>$RuA|y+51MoG zWRw*TD=SX=bfX8Cyicb4ZWjG-j=L7UcAxZc5@wP$t1|3QK3iv1@*iK|FR6u_Q__Gx z`P_aFpWp8xE2TRx@Rv0HOMHD!8vhsTte(E=Yt(bITP*M_@5)Z^dLEGlFhX;p1iuT~ zb|EHGR>mwZi}3usXXRK^g<*?Txwum!79)X$+`?0e&iie5I0OPSo?B2CG0g(Dj|F4E zd4nZT9f*m=OcmCrP*Ro%>N5<>l(f^Z$&r}Hj)tMjq~Qiv$YeMiXI(fyC&@5z?xsgs zy(38>8=TY%FC>kI{<4mniEu9-ry?*IK5itd?3SWLWDX^C zd_miR*TQjfTm8mWh<#jO3-DH0+d?2}wKmCjg>T!q_Drp9;5wqNVcQ|#9@#FT1@o(5CCdOaK$He#> z=j!WsUfD&hv9ZC|bO=)rmO$wF#UlExg@VOrxISjk7sUmI&`nx z^|v0$^IE-W-F~3ZJoWtR+dn8g@y7Odmrgz_AIM_oFvoCm(iw}5(cB#Nqg}~l$vx!R z@kf!6Tn^;mzo__)A~z$#@hfu(N3?>#cEje&7vWn%GCxir$|q=SB!aULKRox!xn~7f z+R3~)!VQ7^#W8rl&9yP9I9V83a!5$#g+zA9n{gHy+_-|=^mR!8W;K*fNva^HD?3*g|;W+wm%uJq2oSGUV zz`_SwkW%q%7&Y3vjOtgI@}Tn{m?(I?*P_-#&O3LQ{%$ilfcju={^h@sJpwl zPi(H$OnVhnhjko4x3QmxL`)zaGXE&C{#JY9AEws#4p-q?cZsZ4Rbn8h@c`%jLbfKP z=^!B+?{fEprlRmZS5= zaM7VoeY&yPZ*^*YU{9m{b6*(8lPW!S>;ULrvr=Jj0e6F8ou_O`W2tThO`?zrntDV? z1q-@gl&K>(iqLiQI&gC%&OjJ}8v@=*-HJCpDK`N0ZZFjh{ldRkdo9qf>= zsMWpfD}9;>`_#Z=KYvNMTaAHcxDwH5{7@oC2mt|}M+m{-X^?{v47U-=h1ee@P*wdn zfrofFq`=b=^4qm%y)cLs%!@h{GW_Z}^4eJM;U+G6jSYOqL?2rl7e6)_VLSnkK_3i! z<^kyv{DfeH7wUe9K;aTE4kxpGu`IMwGt7tO!cOt>Kg~jv;(S zDZr8&Hn_6NEN1|i90;44bif%u%Xf~=cx6t7E10OFykJ*#N*=XH|8n)nk4iO#5EC=XagGC|bF2^e^1_Mf(BwH*E<2Cg51+g+WuM?XNozirlIK`=c5=J+ z)b>Z!(+j6|?MH4;+K8bqJaXaT-R*DMr=Ga*$nN%^*T*kBH2#MD(8TzgR%GhcLS*U> zt-`6LQ?COu`rgg4uX59OcH&_6ON3LMupdS7M`iIpK=IoT61w#Ln`57Zmiteuz`Y>` z+dpvnGDm%R@1E+nAE2uLvYkcE{{pL>f48_cx4->8*)-01KZV+l?Wz5Wb>(gDK#{n7 zN1hgEWTmei`;D7p-{%RH7})L==G-ZYZ_BIciK+V$HjVARM4#<@zIWx$tq--f7toa* z)eCndeNW9~yLC%b2#uv(nCY~KIOhejL<~^0>|BhD7Mq?J z420Wk49DEdxqK=|BtUku71iGuRFL~Hy5Pl|q6TX4$`xKBLg@LBZvzEOGgA>6Ky7v|d2LSpD_W2611j;yw zAi8FL02Z7poD0kGMhIJ!M-&DMdN>)t8Z30k{Af}Uq!XPFZ zM-mQ!n7}mRI7Hw$F^(`_MVN7zV;P&qLpbNor_(sTi_yH2fY36E7!m`@`NbR-1E(y^ zAUY4m9MML}m5{+|1S^d=U(SQhEQx@>4&iYc9v4n{CJd}4-{C9-X$vbH9ts$73IdTx zBvDqFnV~Q%@NbyXOt07Noe}3d>m67XQt-;~21INQ23%S+MmRu$2gG10KvDuq87vhs z9RFyyp+=UB&l6yTV^IUA9{aQq#ReIC?$~oW567uXa;x9RAtI9HV4HC6TbHL5*EszF z$14a=Q{8T_PM!r4*eWTrI?Gd^vh8xZ0^bI>e7kl-8bF+RIA!^enE(;Y;pSQmr!8C= z5{hpuVxZc+d>Pcn^$i>ib^5JZTl8CNn@9?*oKLEw?3Kqw?K(jIpucYL>GL+kcm;4s zU`3YbcG@=r2*p?Tt%0Ch1XjH@2yfXl!ezT`rFn$z0Izj>?Yeh>qShxgdb8WZ;5Sg|+v1K^+!Bv&ms$shz!+`w)GfG{Vn%Zr~NaN0x6r-9Sg9{h;{ryMIX z6ng6+;GsZ4+2~5-QzN3X&=j5zMOg>ISNp`R$7Blkov*0xp;==i&{-MfUXbzeFrf9J zy8^8b@ffFvMG%njAu$ONy8#@mNJJK~pQ?b+&%s$2 zK=o#J8;BibF(ZP=O#-PDJjpABJL(EPh{j$KsVO4D2Tgppv&@Y71({`LP$Gi3`D`?uoyUfC+O8c(yBK=3p)WC0zS4%6sfUAq69TI7zaXW5vVGZmV#d$ zZfy|w$*&ACj60a2X23o2fu(MEH;AhmMjWvkx-Pnx#EJ;^TZHIQw%bOdceT~W3rRp# z7X~0*ZlBRXANV?l&U%qw9eoh*Cs&^oFV}jl8s3fx5cG?(RWx=QFHf})z!6Ix(Sab` zgCe+m^zG}@sPsBVmKA;**C1_7bT3}Pt07KW9S@#z>ed@K5PJ~}JCMUgC5l^DF9H&G z^Hw-Zj}ui1a8=N1R6(l|say$bW#u{yY@HEfzm2_me7!!Myf=|dF%0%>{dS-Ak;L_; z2xq*nIR2ah^IqMR`CV^pOEq!lv(0UDNj?1hu2slMAaDCAsZ(CHB*gX?+mFgD(>t#e zvm66{{kICm3^(~E0hX_FJ{}M!M-imD?KY+0V zOq$IzE%3sGL#Em!?PyBxe)pj#oenS!ox~I~%d{^600C@$N4 z;Ss7}t41kxz>>-tdiN!R6BZ=YssusWstQJk2m5G_0{w_bL+*tGIeB)s^CmMOK> z=dcMc%h$u=;$j!L6J^!LM7wdR&npXTi)D~D{hsp_oR0X=T*nGmy*ca+EJ z>IbZA3&{C+XZ-Km2Cu7J-1PBW`+bS^zx}(nUdXG97YoJqkLnD&UpUdUPjErrkk8Bg zEMMr7`&@qV+Dg!y3tF_61af1dT%Z}Y*}EDLj-i+#EO*dE<GAC?(QOuQCcsYXsOrjujn!LYc2^kQ6u#C5tL zXGOU&Vd*T<7+f(!oBwu^uyHUs46R7byL!vb1E)pYnZ$-{tFji>MC6!iXunw@9h=mB#Cn-p9xa_dZ6ti{~kwOR*@E zk3^1*LC1d{;l@dkH$tHu$MMQ4`C#e<38y@Kf`nZ~35EDrr941cj}LVSW@b=Kr7 zK(%(edkrJRY?R8GYIPMqWx!JopVa#c3;YWQlfiPyeER7jk6`LPC_X4m%i=}Ek0Icm zqPR_Nnfh>PtFuNYH=B4y$B-5F8XDJY^vevJvvp`1F*)#)5Bao3GI2JWU&&O?;y|lp zR#UlI92nuPbhKb~ubpo5Pb1_%L|Bif1-#47F1M2!FMmscAS!a*#I{ z+|&o*09MTu-dW`l!uLLpS5K)EbY#GqbW)z>4etlPoa1zcTVawut&zQDk{?FnHrQL6 z96CU!3YT#i58QhEe%0%KjYWNsshTHxk3zYX^g5BtSHE@SQuHevF2(Z#hD($x9n84> zNe2Bcw)$6V8zd4qheT1eXgnq^;8v$w2??^ORq}-r&NfLrhOLEKis4hHvYY&?p@{zV zP{hNnh^Laf2#QDq9{+yBS7o_~Tn-P#GY5;AVy0}$Ew|4k46ZQGDcMJ70%RjZ@(-UV zqsBgxD^+mEO)U7%ZNnpqQm&|sk~Nn=m6W&QbXfZv4nesIE^m*?zw0zpv#yZoJ7<0Y z?vP-XL{PG)aXG4k4rdlEJ84?{dobJ~9+&*N5)njz!B2w8+S>Z%9=&NviUQ(KFE`_y zoyPY#D-Yc8DLdXaU_N?T&_=*U{@SL1mUfRP{pa@RHU%Az^K({3>d0R5qEUJHO)^7K z6RMial}_}fl#ODgWYEJ+Gm}p|ye7en_V6fHyuXJqBKp9O3E+T%=6cv%3VQR49?Rbn zs#rFDjAaAU>NhHfuqo2Od6XTCN05G3L+U4L3!ot3g7)B_l}H3elJQXe*+ssPrCsu( z?UE-0)}ozDAT2`wS*m#2$|aIi(8TjZB0We>*u>ExCsgUgA~h<>V4fyAvq@2_x_HsF z6q&heGD;+pS^7*+qdqb-Ni3pKhk3$8aY;`(^ngVzDYA*qXf8=AEtx0q<&ddO$t01| zWb{0R4rscWbBb#+HMr=Ki2*UsW)m2iQ#xsyHZieM#9NVxxy^JlXXf1L3Rr4DDC(PY z)FkGr?+$Y&ClhFn|D0)2mIso zqH;2uR!sb4hle6#S|oE_+9^(}sFwl{bGzp0_n9rkD0mN56-vj zqI0V+hzt`$Vb*{ZBDX}m8HDeG!pM_D4ia z=kmUY$R+=;A|mRG?2I=ef+MKO-iQe9)Ub$%$&v}VV~zt&)2Q8WPei220}&CE_eMlk zB2^p~5!p7=_e4b0#UypZ9}&r(Yad#>{!|X7^?Ex!S9I;4>*8{tdm5>j)QpcMES6%v?1&z{P3OiDjtVkcf!MIvz?U{XKVh`?!n{f48t3 z;&^Ge#^eX!%pFBU9LpU=L`pnZEJlP?Kdljw#||CEL`MOa_WJa<6ls0ueD6m-a-p4R zQWwfx43f!}8VzwDs`SyE4^G$7oR5~RpCW1T#YFnd@F*aHi!1$piU_nTPhN(KP5ehh zF5Mpx>0_ycFCaoJpj~#fp_yAm{_zDw!;gq8J5NVPg8>oJ&W8m=Ox}A$q|D9R);Q$&e0?-kHu5EiDegD@7yX zr^AsCXW@n#p`&Q%C>k2-R31&s(X{wyK&m-E4R`N=d^o)|GCgW|SB{tu&WkccgXDLz zawD|D;pQBMh*K8*xsj8U{aCe;vnP@V&VD?6@+0yk510L@^A!)5{3x?O50U+N$mB=N zIFdY(lQ|;$QD@!zr;^^^!R+Jr*6~&Z=S_Rl^#%XOJ^rb#U|^-u>s}YBZf~R8;~$dY N_ZZ^HWu#xu{~w6Dkx>8u diff --git a/obsolete/lispusers/MATHTONS b/obsolete/lispusers/MATHTONS deleted file mode 100644 index ea832a0b..00000000 --- a/obsolete/lispusers/MATHTONS +++ /dev/null @@ -1,28 +0,0 @@ -(DEFINE-FILE-INFO §READTABLE "INTERLISP" §PACKAGE "INTERLISP") -(FILECREATED "13-Feb-87 11:01:14" {ERIS}LYRIC>MATHTONS.;1 1284 - - previous date%: "12-Dec-86 14:37:39" {PHYLUM}KOTO>MATHTONS.;2) - - -(* " -Copyright (c) 1986, 1987 by Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT MATHTONSCOMS) - -(RPAQQ MATHTONSCOMS ((UGLYVARS \MATHTONSARRAY) - (ADDVARS (ASCIITONSTRANSLATIONS (MATH \MATHTONSARRAY CLASSIC))))) -(READVARS \MATHTONSARRAY) -({Y256 SMALLPOSP 0 0 61307 61234 61235 0 163 61301 61302 0 0 0 182 0 0 0 61286 0 0 0 61306 0 0 61295 -{R9 0} 32 61232 61287 8551 162 184 61366 61299 194 61308 199 177 61260 61309 8552 61285 61287 8738 -8740 8574 61282 61283 61284 61292 8570 199 167 0 8549 8546 8550 2 61248 61365 61258 61356 61369 61364 -61233 61275 61279 61273 61274 61278 61272 61629 61259 61281 61297 61265 61358 61305 61296 61271 61367 -61298 180 61626 61368 0 0 0 175 174 0 61351 61267 211 61370 61303 61266 61263 61288 61360 61361 61362 -61363 61256 61290 61287 61238 61240 210 61246 61244 61247 61245 61250 61251 61270 61239 188 189 190 -61264 {R129 0} }) - -(ADDTOVAR ASCIITONSTRANSLATIONS (MATH \MATHTONSARRAY CLASSIC)) -(PUTPROPS MATHTONS COPYRIGHT ("Xerox Corporation" 1986 1987)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL))) -STOP diff --git a/obsolete/lispusers/MATHTONS.TEDIT b/obsolete/lispusers/MATHTONS.TEDIT deleted file mode 100644 index 69ddefb6181fe0bf8efeaa763230aee504a18a71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2734 zcmeHH!EW0|5T#@%LF($zq6KmsxEB!!1W8e3r>D@;N?L>>)#Wm^i(b~!$`&ed1(J4? zenNhvpHQIpqWP@OEGgBg<+`U91wu&6o!K`tZ{I9eC%;_(X0pd)PmW|5M74IU)~VH6 zwc6H$bM&0N{Te{38H~)u1=MM5tkug?otig|sad%-9!L@PD5xDC9O1j3R88JmE=(t18Tk22v8ZEFV*x1I5%%})^OXuXEfU3__oWJQ##f_k?%CdvJJ&KNlkD3CV*Y#eM~?&NCP4O=v>5)rO-N zZM5n(c9U0lei*)rp#Dwl^`XZC$pq`W&>MN8T!~^T-V=NxF%b`5^N64L48p+xBIdK6 zoFElx?TH8_I#|D0CC05L47@S-&tM$(nFt_!&4kZ`GJzEQ6$|4cJPr`CU1O&cFNp9M zf?&hg_XI?KIAL4sTgHbY31imh@tBA)v8fzKOjvnHzDS-SU7We7o523>5DtZD9d+PY z7uv_i_;L$;eZ;&z%2~)&8uE-t#6f@y2K@D1>p#AYDmWB+#b&-U|U)9@qwAANNHUDI6GUak+Eht5-)Ro**~@Kvqu zTmM}{n-)rJWe>5H%KOS)VC&yx{|v4D>fSxrch0-YF>?CnSW38m59<+ukhOjO!uo)2 zobo1f4sKjy1^U*wk2-znJnH#g6!D((c>$<8_d1_!kzY6ui@V?XWQXt59X=AIcy7g( z{%Ro_S){S;36d%%WLeL4i4s1>zim3U-9}dtbTAUJ&l*D}2SLTzUCpMV(?Wp{?D%g6 z(h0TPsWed_$KP@PQ_)g}P2hdp?+hdz52^S@1(MpLiOUE2kYP{W21<^f@lUap-<`vs Ge*FXV0WWs| diff --git a/obsolete/lispusers/MATRIXOPS b/obsolete/lispusers/MATRIXOPS deleted file mode 100644 index 96ae7255..00000000 --- a/obsolete/lispusers/MATRIXOPS +++ /dev/null @@ -1,1005 +0,0 @@ -(FILECREATED " 4-Jun-86 18:27:59" {QV}LISP>MATRIXOPS.;12 48308 - - changes to: (VARS MATRIXOPSCOMS) - (FNS QRSOLV MTIMES TRANSPOSE MTRANSPOSE MINVERT MSOLVE MOLS MREGRESS) - - previous date: "29-May-86 12:39:55" {QV}LISP>MATRIXOPS.;10) - - -(* Copyright (c) 1986 by Xerox Corporation. All rights reserved.) - -(PRETTYCOMPRINT MATRIXOPSCOMS) - -(RPAQQ MATRIXOPSCOMS ((FNS CHOLESKYFACTOR MTRANSPOSE MINVERT LSOLV LUFACTOR LUINVERSE LUSOLV MTIMES - QRFACTOR QROLS QRQTY QRQY QRSOLV MREGRESS RSOLV MSOLVE SVDFACTOR SVDTEST - \FLOATAREFMACRO \FLOATASETMACRO) - (VARS STACK) - (MACROS \FLOATAREF \FLOATASET) - (FILES BLAS))) -(DEFINEQ - -(CHOLESKYFACTOR - [LAMBDA (MATRIX FACTORMATRIX) (* jop: "28-May-86 12:38") - - (* * Lifted from LINPACK algorithm SCHDC) - - (BLAS.CHECKARRAY MATRIX) - (LET ((P (ARRAY-DIMENSION MATRIX 0))) - - (* * Arg Checks) - - (if [NOT (AND (EQL 2 (ARRAY-RANK MATRIX)) - (EQL P (ARRAY-DIMENSION MATRIX 1] - then (HELP "Matrix not sqaure" MATRIX)) - (if (NULL FACTORMATRIX) - then (SETQ FACTORMATRIX (MAKE-ARRAY (ARRAY-DIMENSIONS MATRIX) - (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - else (BLAS.CHECKARRAY FACTORMATRIX) - (if (NOT (EQUAL (ARRAY-DIMENSIONS FACTORMATRIX) - (ARRAY-DIMENSIONS MATRIX))) - then (HELP "Illegal FACTORMATRIX" FACTORMATRIX))) - (* Copy MATRIX to FACTORMATRIX) - (BLAS.ARRAYBLT MATRIX 0 1 FACTORMATRIX 0 1) - - (* * Compute the cholesky decomposition of FACTORMATRIX) - - [bind (WORK _ (MAKE-ARRAY P (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - TEMP for K from 0 to (SUB1 P) - do (if (LEQ (\FLOATAREF FACTORMATRIX K K) - 0.0) - then (HELP "Zero pivot element")) - (\FLOATASET (SQRT (\FLOATAREF FACTORMATRIX K K)) - WORK K) - (\FLOATASET (\FLOATAREF WORK K) - FACTORMATRIX K K) - (if (NOT (EQL K (SUB1 P))) - then (for J from (ADD1 K) to (SUB1 P) - do (\FLOATASET (FQUOTIENT (\FLOATAREF FACTORMATRIX K J) - (\FLOATAREF WORK K)) - FACTORMATRIX K J) - (\FLOATASET (\FLOATAREF FACTORMATRIX K J) - WORK J) - (SETQ TEMP (FMINUS (\FLOATAREF FACTORMATRIX K J))) - (BLAS.AXPY TEMP WORK (ADD1 K) - 1 FACTORMATRIX (IPLUS J (ITIMES P (ADD1 K))) - P - (IDIFFERENCE J K] - FACTORMATRIX]) - -(MTRANSPOSE - [LAMBDA (SOURCEMATRIX DESTMATRIX) (* jop: " 4-Jun-86 14:07") - - (* * Transpose the M x N matrix SOURCEMATRIX. DESTMATRIX should be N x M. Returns DESTMATRIX) - - - (BLAS.CHECKARRAY SOURCEMATRIX) - (PROG ((M (ARRAY-DIMENSION SOURCEMATRIX 0)) - (N (ARRAY-DIMENSION SOURCEMATRIX 1))) - (if (NULL DESTMATRIX) - then (SETQ DESTMATRIX (MAKE-ARRAY (LIST N M) - (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - else (BLAS.CHECKARRAY DESTMATRIX) - (if (NOT (EQUAL (ARRAY-DIMENSIONS DESTMATRIX) - (LIST N M))) - then (HELP "DESTMATRIX of incorrect size" DESTMATRIX))) - (if (ILESSP M N) - then (bind (SOURCEBASE _(ARRAYBASE SOURCEMATRIX)) - (DESTBASE _(ARRAYBASE DESTMATRIX)) for I from 0 - to (SUB1 M) do (\FLOATARRAYBLT SOURCEBASE (ITIMES N I) - 1 DESTBASE I M N)) - else (bind (SOURCEBASE _(ARRAYBASE SOURCEMATRIX)) - (DESTBASE _(ARRAYBASE DESTMATRIX)) for J from 0 - to (SUB1 N) do (\FLOATARRAYBLT SOURCEBASE J N DESTBASE - (ITIMES J M) - 1 M))) - (RETURN DESTMATRIX]) - -(MINVERT - [LAMBDA (MATRIX SOLUTION) (* jop: "26-May-86 18:35") - - (* * Solves to system A x = b. BVECTOR should to the RHS of the system. Returns SOLUTION) - - - (LET [(PIVOTVECTOR (MAKE-ARRAY (ARRAY-DIMENSION MATRIX 0] - (LUINVERSE (LUFACTOR MATRIX PIVOTVECTOR) - PIVOTVECTOR SOLUTION]) - -(LSOLV - [LAMBDA (LMATRIX CVECTOR BVECTOR) (* jop: "27-May-86 16:25") - - (* * Calcluate the solution vector BVECTOR for the system of linear equations - R*B=C, where LMATRIX is lower triangular M X N with non-zero diagonal elements. - BVECTOR and CVECTOR must be of size N. Always returns BVECTOR) - - (BLAS.CHECKARRAY LMATRIX) - (BLAS.CHECKARRAY CVECTOR) - (PROG ((M (ARRAY-DIMENSION LMATRIX 0)) - (N (ARRAY-DIMENSION LMATRIX 1))) - - (* * Arg Checks) - - (if (ILESSP M N) - then (HELP "Order of system less than" N)) - (if (NOT (EQL (ARRAY-TOTAL-SIZE CVECTOR) - N)) - then (HELP "CVECTOR not of size" N)) - (if (NULL BVECTOR) - then (SETQ BVECTOR (MAKE-ARRAY N (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - else (BLAS.CHECKARRAY BVECTOR) - (if (NOT (EQL (ARRAY-TOTAL-SIZE BVECTOR) - N)) - then (HELP "BVECTOR not of size" N))) (* Check for zero diagonal elements) - (if (for I from 0 to (SUB1 N) thereis (UFEQP 0.0 (\FLOATAREF LMATRIX I I))) - then (HELP "LMATRIX has a zero diagonal element")) - - (* * Solution by forward substitution) - (* Copy CVECTOR to BVECTOR) - (BLAS.ARRAYBLT CVECTOR 0 1 BVECTOR 0 1 N) (* Compute the first value) - (\FLOATASET (FQUOTIENT (\FLOATAREF BVECTOR 0) - (\FLOATAREF LMATRIX 0 0)) - BVECTOR 0) - (for J from 1 to (SUB1 N) do (BLAS.AXPY (FMINUS (\FLOATAREF BVECTOR (SUB1 J))) - LMATRIX - (IPLUS (SUB1 J) - (ITIMES J N)) - N BVECTOR J 1 (IDIFFERENCE N J)) - (\FLOATASET (FQUOTIENT (\FLOATAREF BVECTOR J) - (\FLOATAREF LMATRIX J J)) - BVECTOR J)) - (RETURN BVECTOR]) - -(LUFACTOR - [LAMBDA (MATRIX PIVOTVECTOR FACTORMATRIX) (* jop: "27-May-86 20:21") - - (* * Computes the LU decomposition of the N x N matrix MATRIX by Gauss - elimination with row pivoting. FACTORMATRIX will be overwritten with the packed - result. PIVOTVECTOR will be a vector of smallposp's, holding the pivot - permutation, and must be supplied. Returns NIL in the normal case, else returns - the row index) - - (* * Lifted from LINPACK algorithm SGESL) - - (BLAS.CHECKARRAY MATRIX) - (if (NOT (AND (type? ARRAY PIVOTVECTOR) - (EQ (ARRAY-ELEMENT-TYPE PIVOTVECTOR) - T))) - then (HELP "Must be a pointer array" PIVOTVECTOR)) - (LET ((N (ARRAY-DIMENSION MATRIX 0))) - - (* * Arg Checks) - - (if [AND (EQL 2 (ARRAY-RANK MATRIX)) - (NOT (EQL N (ARRAY-DIMENSION MATRIX 1] - then (HELP "MATRIX not square" MATRIX)) - (if [NOT (AND (EQL 1 (ARRAY-RANK PIVOTVECTOR)) - (EQL N (ARRAY-TOTAL-SIZE PIVOTVECTOR] - then (HELP "PIVOTVECTOR not of size N" PIVOTVECTOR)) - (if (NULL FACTORMATRIX) - then (SETQ FACTORMATRIX (MAKE-ARRAY (LIST N N) - (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - else (BLAS.CHECKARRAY FACTORMATRIX) - (if (NOT (EQUAL (ARRAY-DIMENSIONS FACTORMATRIX) - (ARRAY-DIMENSIONS MATRIX))) - then (HELP "Illegal FACTORMATRIX" FACTORMATRIX))) - (* Copy MATRIX to FACTORMATRIX) - (BLAS.ARRAYBLT MATRIX 0 1 FACTORMATRIX 0 1) - - (* * Compute the LU decomposition of FACTORMATRIX) - - [bind PIVOTINDEX TEMP for K from 0 to (IDIFFERENCE N 2) - do (* find pivot index) - (SETQ PIVOTINDEX (IPLUS (BLAS.MAX FACTORMATRIX (IPLUS K (ITIMES N K)) - N - (IDIFFERENCE N K)) - K)) - (PASET PIVOTINDEX PIVOTVECTOR K) - (if (NOT (FEQP (\FLOATAREF FACTORMATRIX PIVOTINDEX K) - 0.0)) - then (if (NOT (EQL PIVOTINDEX K)) - then (* Interchange) - (SETQ TEMP (\FLOATAREF FACTORMATRIX PIVOTINDEX K)) - (\FLOATASET (\FLOATAREF FACTORMATRIX K K) - FACTORMATRIX PIVOTINDEX K) - (\FLOATASET TEMP FACTORMATRIX K K)) - (* compute Multpliers) - (BLAS.SCAL (FMINUS (FQUOTIENT 1.0 (\FLOATAREF FACTORMATRIX K K))) - FACTORMATRIX - (IPLUS K (ITIMES N (ADD1 K))) - N - (SUB1 (IDIFFERENCE N K))) (* Row eliminate with column indexing) - (bind (KPLUS1 _ (ADD1 K)) for J from (ADD1 K) to (SUB1 N) - do (SETQ TEMP (\FLOATAREF FACTORMATRIX PIVOTINDEX J)) - (if (NOT (EQL PIVOTINDEX K)) - then (* Interchange) - (\FLOATASET (\FLOATAREF FACTORMATRIX K J) - FACTORMATRIX PIVOTINDEX J) - (\FLOATASET TEMP FACTORMATRIX K J)) - (BLAS.AXPY TEMP FACTORMATRIX (IPLUS K (ITIMES N KPLUS1)) - N FACTORMATRIX (IPLUS J (ITIMES N KPLUS1)) - N - (IDIFFERENCE N KPLUS1] (* No row elimination on last column) - (PASET (SUB1 N) - PIVOTVECTOR - (SUB1 N)) - FACTORMATRIX]) - -(LUINVERSE - [LAMBDA (LUMATRIX PIVOTVECTOR SOLUTION) (* jop: "26-May-86 18:17") - - (* * Forms MATRIX inverse where LUMATRIX and PIVOTVECTOR are the outputs of - LUFACTOR.) - - (* * lifted from LINPACK SGEDI) - - (BLAS.CHECKARRAY LUMATRIX) - (if (NOT (AND (type? ARRAY PIVOTVECTOR) - (EQ (ARRAY-ELEMENT-TYPE PIVOTVECTOR) - T))) - then (HELP "Must be an array of pointers" PIVOTVECTOR)) - (PROG ((N (ARRAY-DIMENSION LUMATRIX 0))) - - (* * Arg Checks) - - (if [AND (EQL 2 (ARRAY-RANK LUMATRIX)) - (NOT (EQL N (ARRAY-DIMENSION LUMATRIX 1] - then (HELP "MATRIX not square" LUMATRIX)) - (if [NOT (AND (EQL 1 (ARRAY-RANK PIVOTVECTOR)) - (EQL N (ARRAY-TOTAL-SIZE PIVOTVECTOR] - then (HELP "PIVOTVECTOR not a vector of size N" PIVOTVECTOR)) - (if (NULL SOLUTION) - then (SETQ SOLUTION (MAKE-ARRAY (LIST N N) - (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - else (BLAS.CHECKARRAY SOLUTION) - (if [NOT (AND (EQL 2 (ARRAY-RANK SOLUTION)) - (EQUAL (ARRAY-DIMENSIONS LUMATRIX) - (ARRAY-DIMENSIONS SOLUTION] - then (HELP "SOLUTION not an N x N array" SOLUTION))) - (* copy LUMATRIX to SOLUTION) - (BLAS.ARRAYBLT LUMATRIX 0 1 SOLUTION 0 1) - - (* * first compute INVERSE (U)) - - [bind TEMP for K from 0 to (SUB1 N) - do (\FLOATASET (FQUOTIENT 1.0 (\FLOATAREF SOLUTION K K)) - SOLUTION K K) - (SETQ TEMP (FMINUS (\FLOATAREF SOLUTION K K))) - (BLAS.SCAL TEMP SOLUTION K N K) - (bind TEMP for J from (ADD1 K) to (SUB1 N) - do (SETQ TEMP (\FLOATAREF SOLUTION K J)) - (\FLOATASET 0.0 SOLUTION K J) - (BLAS.AXPY TEMP SOLUTION K N SOLUTION J N (ADD1 K] - - (* * Form INVERSE (U) *INVERSE (L)) - - (bind (TEMPARRAY _ (MAKE-ARRAY N (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - L for K from (IDIFFERENCE N 2) to 0 by -1 - do (for I from (ADD1 K) to (SUB1 N) do (\FLOATASET (\FLOATAREF SOLUTION I K) - TEMPARRAY I) - (\FLOATASET 0.0 SOLUTION I K)) - (bind TEMP for J from (ADD1 K) to (SUB1 N) - do (SETQ TEMP (\FLOATAREF TEMPARRAY J)) - (BLAS.AXPY TEMP SOLUTION J N SOLUTION K N N)) - (SETQ L (PAREF PIVOTVECTOR K)) - (if (NEQ L K) - then (BLAS.SWAP SOLUTION K N SOLUTION L N N))) - (RETURN SOLUTION]) - -(LUSOLV - [LAMBDA (LUMATRIX PIVOTVECTOR CVECTOR SOLUTION) (* jop: "27-May-86 20:39") - - (* * Solves to system A x = b. LUMATRIX and PIVOTVECTOR should be the outputs - of LUFACTOR. CVECTOR should to the RHS of the system. - Returns SOLUTION) - - (* * lifted from LINPACK SGESL) - - (BLAS.CHECKARRAY LUMATRIX) - (if (NOT (AND (type? ARRAY PIVOTVECTOR) - (EQ (ARRAY-ELEMENT-TYPE PIVOTVECTOR) - T))) - then (HELP "Must be an array of pointers" PIVOTVECTOR)) - (BLAS.CHECKARRAY CVECTOR) - (PROG ((N (ARRAY-DIMENSION LUMATRIX 0))) - - (* * Arg Checks) - - (if [AND (EQL 2 (ARRAY-RANK LUMATRIX)) - (NOT (EQL N (ARRAY-DIMENSION LUMATRIX 1] - then (HELP "MATRIX not square" LUMATRIX)) - (if [NOT (AND (EQL 1 (ARRAY-RANK PIVOTVECTOR)) - (EQL N (ARRAY-TOTAL-SIZE PIVOTVECTOR] - then (HELP "PIVOTVECTOR not a vector of size N" PIVOTVECTOR)) - (if [NOT (AND (EQL 1 (ARRAY-RANK CVECTOR)) - (EQL N (ARRAY-TOTAL-SIZE CVECTOR] - then (HELP "CVECTOR not a vector of size N" CVECTOR)) - (if (NULL SOLUTION) - then (SETQ SOLUTION (MAKE-ARRAY N (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - else (BLAS.CHECKARRAY SOLUTION) - (if [NOT (AND (EQL 1 (ARRAY-RANK SOLUTION)) - (EQL N (ARRAY-TOTAL-SIZE SOLUTION] - then (HELP "SOLUTION not avector of size N" SOLUTION))) - (* Copy CVECTOR to SOLUTION) - (BLAS.ARRAYBLT CVECTOR 0 1 SOLUTION 0 1 N) - - (* * First solve L*y = b) - - [bind PIVOTINDEX TEMP for K from 0 to (IDIFFERENCE N 2) - do (SETQ PIVOTINDEX (PAREF PIVOTVECTOR K)) - (SETQ TEMP (\FLOATAREF SOLUTION PIVOTINDEX)) - (if (NOT (EQL PIVOTINDEX K)) - then (* interchange) - (\FLOATASET (\FLOATAREF SOLUTION K) - SOLUTION PIVOTINDEX) - (\FLOATASET TEMP SOLUTION K)) - (BLAS.AXPY TEMP LUMATRIX (IPLUS K (ITIMES N (ADD1 K))) - N SOLUTION (ADD1 K) - 1 - (IDIFFERENCE N (ADD1 K] - - (* * Then solve U*x = y) - - (bind TEMP for K from (SUB1 N) to 0 by -1 - do (SETQ TEMP (FMINUS (\FLOATASET (FQUOTIENT (\FLOATAREF SOLUTION K) - (\FLOATAREF LUMATRIX K K)) - SOLUTION K))) - (BLAS.AXPY TEMP LUMATRIX K N SOLUTION 0 1 K)) - (RETURN SOLUTION]) - -(MTIMES - [LAMBDA (A B PRODUCT) (* jop: " 4-Jun-86 13:08") - - (* * Matrix multiply. A may be an N vector or a (M x N) matrix and B may be a N vector or a N x P matrix. - PRODUCT defualts to a M x P array. RETURNS PRODUCT) - - - (BLAS.CHECKARRAY A) - (BLAS.CHECKARRAY B) - (LET ((RANKA (ARRAY-RANK A)) - (RANKB (ARRAY-RANK B)) - M N P RESULTDIMS) - (if (NOT (OR (EQ RANKA 1) - (EQ RANKA 2))) - then (HELP "A not a one-d or two-d array" A)) - (if (NOT (OR (EQ RANKB 1) - (EQ RANKB 2))) - then (HELP "B not a one-d or two-d array" B)) - (SETQ M (if (EQ RANKA 1) - then 1 - else (ARRAY-DIMENSION A 0))) - (SETQ N (if (EQ RANKA 1) - then (ARRAY-DIMENSION A 0) - else (ARRAY-DIMENSION A 1))) - (SETQ P (if (EQ RANKB 1) - then 1 - else (ARRAY-DIMENSION B 1))) - [SETQ RESULTDIMS (if (EQ M 1) - then (if (EQ P 1) - then NIL - else (LIST P)) - else (if (EQ P 1) - then (LIST M) - else (LIST M P] - - (* * Check args) - - - (if (NOT (EQ (ARRAY-DIMENSION B 0) - N)) - then (HELP "Leading dimension of B not N" B)) - (if (NULL PRODUCT) - then (SETQ PRODUCT (MAKE-ARRAY RESULTDIMS (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - elseif (NOT (EQUAL (ARRAY-DIMENSIONS PRODUCT) - RESULTDIMS)) - then (HELP "C of incorrect size" PRODUCT)) - - (* * Do the multiply) - - - [bind (ABASE _(ARRAYBASE A)) - (BBASE _(ARRAYBASE B)) - (CBASE _(ARRAYBASE PRODUCT)) for I from 0 to (SUB1 M) - do (for J from 0 to (SUB1 P) as COFFSET from (MUL2 (ITIMES P I)) - by 2 do (bind (FTEMP _ 0.0) declare (TYPE FLOATP FTEMP) for K - from 0 to (SUB1 N) as AOFFSET - from (MUL2 (ITIMES N I)) by 2 as BOFFSET - from (MUL2 J) by (MUL2 P) - do [SETQ FTEMP (FPLUS FTEMP (FTIMES (\GETBASEFLOATP - ABASE AOFFSET) - (\GETBASEFLOATP - BBASE BOFFSET] - finally (\PUTBASEFLOATP CBASE COFFSET FTEMP] - PRODUCT]) - -(QRFACTOR - [LAMBDA (MATRIX QRAUX FACTORMATRIX) (* jop: "27-May-86 16:27") - - (* * Computes the LU decomposition of the N x N matrix MATRIX by Gauss - elimination with row pivoting. FACTORMATRIX will be overwritten with the packed - result. QRAUX will be a vector of smallposp's, holding the pivot permutation, - and must be supplied. Returns NIL in the normal case, else returns the row - index) - - (* * Lifted from LINPACK algorithm SGESL) - - (BLAS.CHECKARRAY MATRIX) - (BLAS.CHECKARRAY QRAUX) - (LET ((N (ARRAY-DIMENSION MATRIX 0)) - (P (ARRAY-DIMENSION MATRIX 1))) - - (* * Arg Checks) - - (if [NOT (AND (EQL 1 (ARRAY-RANK QRAUX)) - (EQL P (ARRAY-TOTAL-SIZE QRAUX] - then (HELP "QRAUX not of size P" QRAUX)) - (if (NULL FACTORMATRIX) - then (SETQ FACTORMATRIX (MAKE-ARRAY (ARRAY-DIMENSIONS MATRIX) - (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - else (BLAS.CHECKARRAY FACTORMATRIX) - (if (NOT (EQUAL (ARRAY-DIMENSIONS FACTORMATRIX) - (ARRAY-DIMENSIONS MATRIX))) - then (HELP "Illegal FACTORMATRIX" FACTORMATRIX))) - (* Copy MATRIX to FACTORMATRIX) - (BLAS.ARRAYBLT MATRIX 0 1 FACTORMATRIX 0 1) - - (* * Compute the QR decomposition of FACTORMATRIX) - - (for I from 0 to (SUB1 P) do (\FLOATASET 0.0 QRAUX I)) - (bind NRMXL for L from 0 to (SUB1 (IMIN N P)) unless (EQL L (SUB1 N)) - do (* Compute the Householder - transformation for column L) - (SETQ NRMXL (BLAS.NRM2 FACTORMATRIX (IPLUS L (ITIMES P L)) - P - (IDIFFERENCE N L))) - (if (FGREATERP NRMXL 0.0) - then (if (FLESSP (\FLOATAREF FACTORMATRIX L L) - 0.0) - then (SETQ NRMXL (FMINUS NRMXL))) - (BLAS.SCAL (FQUOTIENT 1.0 NRMXL) - FACTORMATRIX - (IPLUS L (ITIMES P L)) - P - (IDIFFERENCE N L)) - (\FLOATASET (FPLUS 1.0 (\FLOATAREF FACTORMATRIX L L)) - FACTORMATRIX L L) (* apply the transform to the - remaining columns) - (bind TEMP for J from (ADD1 L) to (SUB1 P) - do [SETQ TEMP (FMINUS (FQUOTIENT (BLAS.DOTPROD FACTORMATRIX - (IPLUS L (ITIMES P L)) - P FACTORMATRIX - (IPLUS J (ITIMES P L)) - P - (IDIFFERENCE N L)) - (\FLOATAREF FACTORMATRIX L L] - (BLAS.AXPY TEMP FACTORMATRIX (IPLUS L (ITIMES P L)) - P FACTORMATRIX (IPLUS J (ITIMES P L)) - P - (IDIFFERENCE N L))) - (\FLOATASET (\FLOATAREF FACTORMATRIX L L) - QRAUX L) - (\FLOATASET (FMINUS NRMXL) - FACTORMATRIX L L))) - FACTORMATRIX]) - -(QROLS - [LAMBDA (QRMATRIX QRAUX Y QTY B RSD YHAT) (* jop: "27-May-86 17:21") - - (* * Lifted from LINPACK algorithm SQRSL) - - (BLAS.CHECKARRAY QRMATRIX) - (BLAS.CHECKARRAY QRAUX) - (BLAS.CHECKARRAY Y) - (LET ((N (ARRAY-DIMENSION QRMATRIX 0)) - (P (ARRAY-DIMENSION QRMATRIX 1))) - - (* * Arg Checks) - - (if [NOT (AND (EQL 1 (ARRAY-RANK QRAUX)) - (EQL P (ARRAY-TOTAL-SIZE QRAUX] - then (HELP "QRAUX not of size P" QRAUX)) - (if [NOT (AND (EQL 1 (ARRAY-RANK Y)) - (EQL N (ARRAY-TOTAL-SIZE Y] - then (HELP "Y not of size N" Y)) - (if (NULL QTY) - then (SETQ QTY (MAKE-ARRAY N (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - else (BLAS.CHECKARRAY QTY) - (if (NOT (EQL N (ARRAY-TOTAL-SIZE QTY))) - then (HELP "QTY not of size N" QTY))) - (if (NULL B) - then (SETQ B (MAKE-ARRAY P (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - else (BLAS.CHECKARRAY B) - (if (NOT (EQL P (ARRAY-TOTAL-SIZE B))) - then (HELP "B not of size P" B))) - (if RSD - then (BLAS.CHECKARRAY RSD) - (if (NOT (EQL N (ARRAY-TOTAL-SIZE RSD))) - then (HELP "RSD not of size N" RSD))) - (if YHAT - then (BLAS.CHECKARRAY YHAT) - (if (NOT (EQL N (ARRAY-TOTAL-SIZE YHAT))) - then (HELP "XB not of size N" YHAT))) (* Compute TRANS (Q) * Y) - (QRQTY QRMATRIX QRAUX Y QTY) - - (* * Compute B) - (* Set up computation of B) - (BLAS.ARRAYBLT QTY 0 1 B 0 1 P) - (for J from (SUB1 P) to 0 by -1 - do (if (UFEQP (\FLOATAREF QRMATRIX J J) - 0.0) - then (HELP "Singular Matrix" QRMATRIX)) - (\FLOATASET (FQUOTIENT (\FLOATAREF B J) - (\FLOATAREF QRMATRIX J J)) - B J) - (if (NOT (EQL J 0)) - then (BLAS.AXPY (FMINUS (\FLOATAREF B J)) - QRMATRIX J P B 0 1 J))) - - (* * Compute RSD) - - [if RSD - then (* Set up computation of RSD) - (if (ILESSP P N) - then (BLAS.ARRAYBLT QTY P 1 RSD P 1)) - (BLAS.ARRAYFILL 0.0 RSD 0 1 P) - (bind TEMP for J from (SUB1 (IMIN P (SUB1 N))) to 0 by -1 - do (if (NOT (UFEQP (\FLOATAREF QRAUX J) - 0.0)) - then (SETQ TEMP (\FLOATAREF QRMATRIX J J)) - (\FLOATASET (\FLOATAREF QRAUX J) - QRMATRIX J J) - (BLAS.AXPY (FMINUS (FQUOTIENT (BLAS.DOTPROD QRMATRIX - (IPLUS J (ITIMES P J)) - P RSD J 1 (IDIFFERENCE N J)) - (\FLOATAREF QRMATRIX J J))) - QRMATRIX - (IPLUS J (ITIMES P J)) - P RSD J 1 (IDIFFERENCE N J)) - (\FLOATASET TEMP QRMATRIX J J))) - - (* * Compute YHAT) - - (if YHAT - then (* Set up computation of YHAT) - (BLAS.ARRAYBLT QTY 0 1 YHAT 0 1 P) - (BLAS.ARRAYFILL 0.0 YHAT P 1) - (bind TEMP for J from (SUB1 (IMIN P (SUB1 N))) to 0 by -1 - do (if (NOT (UFEQP (\FLOATAREF QRAUX J) - 0.0)) - then (SETQ TEMP (\FLOATAREF QRMATRIX J J)) - (\FLOATASET (\FLOATAREF QRAUX J) - QRMATRIX J J) - (BLAS.AXPY (FMINUS (FQUOTIENT (BLAS.DOTPROD QRMATRIX - (IPLUS J (ITIMES P J)) - P YHAT J 1 (IDIFFERENCE - N J)) - (\FLOATAREF QRMATRIX J J))) - QRMATRIX - (IPLUS J (ITIMES P J)) - P YHAT J 1 (IDIFFERENCE N J)) - (\FLOATASET TEMP QRMATRIX J J] - B]) - -(QRQTY - [LAMBDA (QRMATRIX QRAUX Y PRODUCT) (* jop: "27-May-86 16:28") - - (* * COMPUTE (TRANS Q) * Y given a QR factorization described by QRMATRIX and - QRAUX where Y is an N vector) - - (* * Lifted from LINPACK algorithm SQRSL) - - (BLAS.CHECKARRAY QRMATRIX) - (BLAS.CHECKARRAY QRAUX) - (BLAS.CHECKARRAY Y) - (LET ((N (ARRAY-DIMENSION QRMATRIX 0)) - (P (ARRAY-DIMENSION QRMATRIX 1))) - - (* * Arg Checks) - - (if [NOT (AND (EQL 1 (ARRAY-RANK QRAUX)) - (EQL P (ARRAY-TOTAL-SIZE QRAUX] - then (HELP "QRAUX not of size P" QRAUX)) - (if [NOT (AND (EQL 1 (ARRAY-RANK Y)) - (EQL N (ARRAY-TOTAL-SIZE Y] - then (HELP "Y not of size N" Y)) - (if (NULL PRODUCT) - then (SETQ PRODUCT (MAKE-ARRAY N (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - else (BLAS.CHECKARRAY PRODUCT) - (if (NOT (EQL N (ARRAY-TOTAL-SIZE PRODUCT))) - then (HELP "PRODUCT not of size N" PRODUCT))) - (BLAS.ARRAYBLT Y 0 1 PRODUCT 0 1 N) - (bind TEMP for J from 0 to (IMIN P (SUB1 N)) - do (if (NOT (UFEQP (\FLOATAREF QRAUX J) - 0.0)) - then (SETQ TEMP (\FLOATAREF QRMATRIX J J)) - (\FLOATASET (\FLOATAREF QRAUX J) - QRMATRIX J J) - (BLAS.AXPY (FMINUS (FQUOTIENT (BLAS.DOTPROD QRMATRIX (IPLUS J - (ITIMES P J)) - P PRODUCT J 1 (IDIFFERENCE N J)) - (\FLOATAREF QRMATRIX J J))) - QRMATRIX - (IPLUS J (ITIMES P J)) - P PRODUCT J 1 (IDIFFERENCE N J)) - (\FLOATASET TEMP QRMATRIX J J))) - PRODUCT]) - -(QRQY - [LAMBDA (QRMATRIX QRAUX Y PRODUCT) (* jop: "27-May-86 16:30") - - (* * COMPUTE QX given a QR factorization described by QRMATRIX and QRAUX where - Y is an N vector) - - (* * Lifted from LINPACK algorithm SQRSL) - - (BLAS.CHECKARRAY QRMATRIX) - (BLAS.CHECKARRAY QRAUX) - (BLAS.CHECKARRAY Y) - (LET ((N (ARRAY-DIMENSION QRMATRIX 0)) - (P (ARRAY-DIMENSION QRMATRIX 1))) - - (* * Arg Checks) - - (if [NOT (AND (EQL 1 (ARRAY-RANK QRAUX)) - (EQL P (ARRAY-TOTAL-SIZE QRAUX] - then (HELP "QRAUX not of size P" QRAUX)) - (if [NOT (AND (EQL 1 (ARRAY-RANK Y)) - (EQL N (ARRAY-TOTAL-SIZE Y] - then (HELP "Y not of size N" Y)) - (if (NULL PRODUCT) - then (SETQ PRODUCT (MAKE-ARRAY N (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - else (BLAS.CHECKARRAY PRODUCT) - (if (NOT (EQL N (ARRAY-TOTAL-SIZE PRODUCT))) - then (HELP "PRODUCT not of size N" PRODUCT))) - (BLAS.ARRAYBLT Y 0 1 PRODUCT 0 1 N) - (bind TEMP for J from (SUB1 (IMIN P (SUB1 N))) to 0 by -1 - do (if (NOT (UFEQP (\FLOATAREF QRAUX J) - 0.0)) - then (SETQ TEMP (\FLOATAREF QRMATRIX J J)) - (\FLOATASET (\FLOATAREF QRAUX J) - QRMATRIX J J) - (BLAS.AXPY (FMINUS (FQUOTIENT (BLAS.DOTPROD QRMATRIX (IPLUS J - (ITIMES P J)) - P PRODUCT J 1 (IDIFFERENCE N J)) - (\FLOATAREF QRMATRIX J J))) - QRMATRIX - (IPLUS J (ITIMES P J)) - P PRODUCT J 1 (IDIFFERENCE N J)) - (\FLOATASET TEMP QRMATRIX J J))) - PRODUCT]) - -(QRSOLV - [LAMBDA (QRMATRIX QRAUX BVECTOR SOLUTION) (* jop: "27-May-86 20:38") - - (* * Solves to system A x = b. BVECTOR should to the RHS of the system. Returns SOLUTION) - - - (RSOLV QRMATRIX (QRQTY QRMATRIX QRAUX BVECTOR SOLUTION) - SOLUTION]) - -(MREGRESS - [LAMBDA (Y X B RSD YHAT) (* jop: " 4-Jun-86 14:12") - - (* * MREGRESS calculates the least squares (multiple) regression of Y on X. An N vector Y.) - - - (LET* ((QRAUX (MAKE-ARRAY (ARRAY-DIMENSION X 1) - (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - (QRMATRIX (QRFACTOR X QRAUX))) - (QROLS QRMATRIX QRAUX Y NIL B RSD YHAT]) - -(RSOLV - [LAMBDA (RMATRIX CVECTOR BVECTOR) (* jop: "28-May-86 20:31") - - (* * Calcluate the solution vector BVECTOR for the system of linear equations - R*B=C, where RMATRIX is upper triangular M X N with non-zero diagonal elements. - BVECTOR and CVECTOR must be of size N. Always returns BVECTOR) - - (BLAS.CHECKARRAY RMATRIX) - (BLAS.CHECKARRAY CVECTOR) - (PROG ((M (ARRAY-DIMENSION RMATRIX 0)) - (N (ARRAY-DIMENSION RMATRIX 1))) - - (* * Arg Checks) - - (if (ILESSP M N) - then (HELP "Order of system less than" N)) - (if (NOT (EQL (ARRAY-TOTAL-SIZE CVECTOR) - N)) - then (HELP "CVECTOR not of size" N)) - (if (NULL BVECTOR) - then (SETQ BVECTOR (MAKE-ARRAY N (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - else (BLAS.CHECKARRAY BVECTOR) - (if (NOT (EQL (ARRAY-TOTAL-SIZE BVECTOR) - N)) - then (HELP "BVECTOR not of size" N))) (* Check for zero diagonal elements) - (if (for I from 0 to (SUB1 N) thereis (UFEQP 0.0 (\FLOATAREF RMATRIX I I))) - then (HELP "RMATRIX has a zero diagonal element")) - - (* * Solution by backsubstitution.) - - (BLAS.ARRAYBLT CVECTOR 0 1 BVECTOR 0 1 N) - (LET ((INDEXLIMIT (SUB1 N))) (* Compute the last value) - (\FLOATASET (FQUOTIENT (\FLOATAREF BVECTOR INDEXLIMIT) - (\FLOATAREF RMATRIX INDEXLIMIT INDEXLIMIT)) - BVECTOR INDEXLIMIT) - (bind J JLESS1 for JJ from 1 to INDEXLIMIT - do (SETQ J (IDIFFERENCE N JJ)) - (SETQ JLESS1 (SUB1 J)) - (BLAS.AXPY (FMINUS (\FLOATAREF BVECTOR J)) - RMATRIX J N BVECTOR 0 1 J) - (\FLOATASET (FQUOTIENT (\FLOATAREF BVECTOR JLESS1) - (\FLOATAREF RMATRIX JLESS1 JLESS1)) - BVECTOR JLESS1))) - (RETURN BVECTOR]) - -(MSOLVE - [LAMBDA (MATRIX CVECTOR SOLUTION) (* jop: "27-May-86 20:40") - - (* * Solves to system A x = b. CVECTOR should to the RHS of the system. Returns SOLUTION) - - - (LET [(PIVOTVECTOR (MAKE-ARRAY (ARRAY-DIMENSION MATRIX 0] - (LUSOLV (LUFACTOR MATRIX PIVOTVECTOR) - PIVOTVECTOR CVECTOR SOLUTION]) - -(SVDFACTOR - [LAMBDA (XMATRIX SVECTOR UMATRIX VMATRIX) (* jop: "29-May-86 11:29") - - (* * Singular-value decomposition by means of orthogonalization by plane - rotations. Taken from Nash and Shlien: "Partial svd algorithms." On entry X - contains the M by N matrix to be decomposed, SVECTOR must be a vector of length - N and VMATRIX must be a square N by N matrix. - On return UMATRIX has been overwritten by the left singular vectors, SVECTOR - contains the singular values, and VMATRIX contains the right singular vectors.) - - (BLAS.CHECKARRAY XMATRIX) - (LET ((M (ARRAY-DIMENSION UMATRIX 0)) - (N (ARRAY-DIMENSION UMATRIX 1))) - - (* * Args checks) - - (if (NOT (EQL 2 (ARRAY-RANK XMATRIX))) - then (HELP "XMATRIX not a matrix" XMATRIX)) - (if (NULL SVECTOR) - then (SETQ SVECTOR (MAKE-ARRAY N (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - else (BLAS.CHECKARRAY SVECTOR) - (if [NOT (AND (EQL 1 (ARRAY-RANK SVECTOR)) - (EQL N (ARRAY-TOTAL-SIZE SVECTOR] - then (HELP "Illegal SVECTOR" SVECTOR))) - (if (NULL UMATRIX) - then (SETQ UMATRIX (MAKE-ARRAY (LIST M N) - (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - else (BLAS.CHECKARRAY UMATRIX) - (if (NOT (EQUAL (ARRAY-DIMENSIONS UMATRIX) - (ARRAY-DIMENSIONS XMATRIX))) - then (HELP "Illegal UMATRIX" UMATRIX))) - (if (NULL VMATRIX) - then (SETQ VMATRIX (MAKE-ARRAY (LIST N N) - (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - else (BLAS.CHECKARRAY VMATRIX) - (if (NOT (EQUAL (ARRAY-DIMENSIONS VMATRIX) - (LIST N N))) - then (HELP "Illegal VMATRIX" VMATRIX))) (* Copy XMATRIX to UMATRIX) - (BLAS.ARRAYBLT XMATRIX NIL NIL UMATRIX) (* Initialize VMATRIX to identity - matrix.) - (BLAS.ARRAYFILL 0.0 VMATRIX) - (for I from 0 to (SUB1 N) do (\FLOATASET 1.0 VMATRIX I I)) - - (* * Start the computation) - - (LET ((NT N)) - - (* * The main loop: repeatedly sweep over all pairs of columns in U, rotating - as needed, until no rotations in a complete sweep are effective. - Check the opportunity for rank reduction at the conclusion of each sweep.) - - [bind (EPS _ 1.0E-6) - (SLIMIT _ (IMAX (IQUOTIENT N 4) - 6)) - (SCOUNT _ 0) - RCOUNT eachtime (SETQ RCOUNT (IQUOTIENT (ITIMES NT (SUB1 NT)) - 2)) - (SETQ SCOUNT (ADD1 SCOUNT)) repeatwhile (IGREATERP RCOUNT 0) - do (if (IGREATERP SCOUNT SLIMIT) - then (HELP "Number of sweeps exceeds sweep limit." SCOUNT)) - [for J from 0 to (IDIFFERENCE NT 2) - do (bind P Q R C S V for K from (ADD1 J) to (SUB1 NT) - do (SETQ P (BLAS.DOTPROD UMATRIX J N UMATRIX K N M)) - (SETQ Q (BLAS.DOTPROD UMATRIX J N UMATRIX J N M)) - (SETQ R (BLAS.DOTPROD UMATRIX K N UMATRIX K N M)) - (\FLOATASET Q SVECTOR J) - (\FLOATASET R SVECTOR K) - (if (FLESSP Q R) - then (SETQ Q (FDIFFERENCE (FQUOTIENT Q R) - 1.0)) - (SETQ P (FQUOTIENT P R)) - [SETQ V (SQRT (SETQ V (FPLUS (FTIMES 4.0 P P) - (FTIMES Q Q] - [SETQ S (SQRT (FTIMES .5 (FDIFFERENCE 1.0 (FQUOTIENT Q V] - (if (FLESSP P 0.0) - then (SETQ S (FDIFFERENCE 0.0 S))) - (SETQ C (FQUOTIENT P (FTIMES V S))) - (BLAS.ROT C S UMATRIX J N UMATRIX K N M) - (BLAS.ROT C S VMATRIX J N VMATRIX K N N) - elseif (OR (LEQ (FTIMES Q R) - (FTIMES EPS EPS)) - (LEQ (FTIMES (FQUOTIENT P Q) - (FQUOTIENT P R)) - EPS)) - then (SETQ RCOUNT (SUB1 RCOUNT)) - else (SETQ R (FDIFFERENCE 1.0 (FQUOTIENT R Q))) - (SETQ P (FQUOTIENT P Q)) - [SETQ V (SQRT (SETQ V (FPLUS (FTIMES 4.0 P P) - (FTIMES R R] - [SETQ C (SQRT (FTIMES .5 (FPLUS 1.0 (FQUOTIENT R V] - (SETQ S (FQUOTIENT P (FTIMES V C))) - (* box before the COLROT calls) - (BLAS.ROT C S UMATRIX J N UMATRIX K N M) - (BLAS.ROT C S VMATRIX J N VMATRIX K N N] - (while (AND (IGEQ NT 3) - (LEQ (FQUOTIENT (\FLOATAREF SVECTOR (SUB1 NT)) - (FPLUS (\FLOATAREF SVECTOR 0) - EPS)) - EPS)) do (SETQ NT (SUB1 NT] - - (* * Finish the decomposition by returning all N singular values, and by - normalizing those columns of UMATRIX judged to be non-zero.) - - (bind Q for J from 0 to (SUB1 N) do (SETQ Q (SQRT (\FLOATAREF SVECTOR J))) - (\FLOATASET Q SVECTOR J) - (if (ILEQ J NT) - then (BLAS.SCAL (FQUOTIENT 1.0 Q) - UMATRIX J N M))) - SVECTOR]) - -(SVDTEST - [LAMBDA NIL (* jop: "30-Jan-86 17:37") - - (* * comment) - - - (LET ((UU (MAKE-ARRAY (QUOTE (24 19)) - (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - (SS (MAKE-ARRAY 19 (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - (VV (MAKE-ARRAY (QUOTE (19 19)) - (QUOTE :ELEMENT-TYPE) - (QUOTE FLOAT))) - (L 0)) - [for TT from 1.0 to 3.0 do (for PP from 1.0 to 2.0 - do (for CC from 1.0 to 4.0 - do (ASET TT UU L 0) - (ASET PP UU L 1) - (ASET CC UU L 2) - (ASET (FTIMES TT PP) - UU L 3) - (ASET (FTIMES TT CC) - UU L 4) - (ASET (FTIMES PP CC) - UU L 5) - (ASET (FTIMES PP PP) - UU L 6) - (ASET (FTIMES CC CC) - UU L 7) - (ASET (FTIMES TT TT) - UU L 8) - (ASET (FTIMES TT PP PP) - UU L 9) - (ASET (FTIMES TT CC CC) - UU L 10) - (ASET (FTIMES PP TT TT) - UU L 11) - (ASET (FTIMES PP CC CC) - UU L 12) - (ASET (FTIMES CC TT TT) - UU L 13) - (ASET (FTIMES CC PP PP) - UU L 14) - (ASET (FTIMES TT TT TT) - UU L 15) - (ASET (FTIMES PP PP PP) - UU L 16) - (ASET (FTIMES CC CC CC) - UU L 17) - (ASET (FTIMES TT PP CC) - UU L 18) - (SETQ L (ADD1 L] - (TIMEALL (SVDNASH UU SS VV]) - -(\FLOATAREFMACRO - [LAMBDA (ARGS) (* jop: "26-May-86 16:02") - - (* * macro expander for \FLOATAREF) - - (if (IGREATERP (LENGTH ARGS) - 3) - then (HELP "\FLOATAREF takes no more than three args" ARGS)) - (PROG ((BARRAY (CAR ARGS)) - (BINDICES (CDR ARGS)) - INDEXFORM) - [if (EQLENGTH BINDICES 1) - then (SETQ INDEXFORM (CAR BINDICES)) - else (SETQ INDEXFORM (BQUOTE (IPLUS , (CADR BINDICES) - (ITIMES , (CAR BINDICES) - (ARRAY-DIMENSION , BARRAY 1] - (RETURN (BQUOTE (\GETBASEFLOATP (ARRAYBASE , BARRAY) - (LLSH , INDEXFORM 1]) - -(\FLOATASETMACRO - [LAMBDA (ARGS) (* jop: "26-May-86 16:03") - - (* * macro expander for \FLOATASET) - - (if (IGREATERP (LENGTH ARGS) - 4) - then (HELP "\FLOATASET takes no more than four args" ARGS)) - (PROG ((BNEWVALUE (CAR ARGS)) - (BARRAY (CADR ARGS)) - (BINDICES (CDDR ARGS)) - INDEXFORM) - [if (EQLENGTH BINDICES 1) - then (SETQ INDEXFORM (CAR BINDICES)) - else (SETQ INDEXFORM (BQUOTE (IPLUS , (CADR BINDICES) - (ITIMES , (CAR BINDICES) - (ARRAY-DIMENSION , BARRAY 1] - (RETURN (BQUOTE (\PUTBASEFLOATP (ARRAYBASE , BARRAY) - (LLSH , INDEXFORM 1) - , BNEWVALUE]) -) - -(RPAQQ STACK ((80 27 89) - (80 27 88) - (75 25 90) - (62 24 87) - (62 22 87) - (62 23 87) - (62 24 93) - (62 24 93) - (58 23 87) - (58 18 80) - (58 18 89) - (58 17 88) - (58 18 82) - (58 19 93) - (50 18 89) - (50 18 86) - (50 19 72) - (50 19 79) - (50 20 80) - (56 20 82) - (70 20 91))) -(DECLARE: EVAL@COMPILE -(PUTPROPS \FLOATAREF MACRO (ARGS (* *) - (\FLOATAREFMACRO ARGS))) -(PUTPROPS \FLOATASET MACRO (ARGS (* *) - (\FLOATASETMACRO ARGS))) -) -(FILESLOAD BLAS) -(PUTPROPS MATRIXOPS COPYRIGHT ("Xerox Corporation" 1986)) -(DECLARE: DONTCOPY - (FILEMAP (NIL (665 47755 (CHOLESKYFACTOR 675 . 3149) (MTRANSPOSE 3151 . 4438) (MINVERT 4440 . 4810) ( -LSOLV 4812 . 7212) (LUFACTOR 7214 . 11565) (LUINVERSE 11567 . 14760) (LUSOLV 14762 . 17799) (MTIMES -17801 . 20328) (QRFACTOR 20330 . 24388) (QROLS 24390 . 29552) (QRQTY 29554 . 31713) (QRQY 31715 . -33879) (QRSOLV 33881 . 34176) (MREGRESS 34178 . 34600) (RSOLV 34602 . 36899) (MSOLVE 36901 . 37272) ( -SVDFACTOR 37274 . 44236) (SVDTEST 44238 . 46004) (\FLOATAREFMACRO 46006 . 46838) (\FLOATASETMACRO -46840 . 47753))))) -STOP diff --git a/obsolete/lispusers/MESATOLISP b/obsolete/lispusers/MESATOLISP deleted file mode 100644 index ae2f7d4b..00000000 --- a/obsolete/lispusers/MESATOLISP +++ /dev/null @@ -1,5810 +0,0 @@ -(DEFINE-FILE-INFO §PACKAGE "INTERLISP" §READTABLE "INTERLISP" §BASE 10) -(FILECREATED "10-Apr-87 18:07:52" {ERIS}LYRIC>MESATOLISP.;4 285413 - - changes to%: (VARS MESATOLISPCOMS) - (FNS SCAN.START SCAN.TOKEN PARSE.CEDAR PARSE.BIN PARSE.FILE) - - previous date%: " 9-Apr-87 12:25:12" {ERIS}LYRIC>MESATOLISP.;3) - - -(* " -Copyright (c) 1985, 1987 by Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT MESATOLISPCOMS) - -(RPAQQ MESATOLISPCOMS - [ - (* ;; "MESATOLISP -- By Kelly Roach. Lyricized by L. Masinter") - - (COMS - -(* ;;; "SCAN: reading mesa/cedar files") - - [INITVARS (SCAN.STRING (CL:MAKE-ARRAY 256 :INITIAL-ELEMENT '#\A :ELEMENT-TYPE - 'CL:CHARACTER :ADJUSTABLE T :FILL-POINTER 0)) - (SCAN.CHAR NIL) - (SCAN.QDOT NIL) - (SCAN.BOTH.RESERVED '(! %# %( %) * + %, - %. |..| / %: ; < <= = => > >= @ ABS - ALL AND ANY APPLY ARRAY BASE BEGIN BROADCAST CODE - COMPUTED CONTINUE DECREASING DEFINITIONS DEPENDENT - DESCRIPTOR DIRECTORY DO ELSE ENABLE END ENDCASE ENDLOOP - ENTRY ERROR EXIT EXITS EXPORTS FINISHED FIRST FOR FORK - FRAME FREE FROM GO GOTO IF IMPORTS IN INLINE INTERNAL - ISTYPE JOIN LAST LENGTH LOCKS LONG LOOP LOOPHOLE MACHINE - MAX MIN MOD MONITOR MONITORED NARROW NEW NILL NOT NOTIFY - NULL OF OPEN OR ORD ORDERED OVERLAID PACKED POINTER PORT - PRED PRIVATE PROC PROCEDURE PROCESS PROGRAM PUBLIC - READONLY RECORD REJECT RELATIVE REPEAT RESTART RESUME - RETRY RETURN RETURNS SELECT SEQUENCE SHARES SIGNAL SIZE - START STATE STOP SUCC THEN THROUGH TO TRANSFER TRASH - TYPE UNCOUNTED UNTIL USING VAL VAR WAIT WHILE WITH ZONE - %[ %] ^ _ { %| } ~)) - (SCAN.CEDAR.RESERVED '(CEDAR CHECKED CONS LIST PAINTED REF SAFE TRUSTED - UNCHECKED UNSAFE)) - (SCAN.MESA.RESERVED '(RESIDENT] - (FNS SCAN.INIT SCAN.START SCAN.TEST SCAN.TESTFILE SCAN.OPENSTREAM SCAN.TOKEN - SCAN.NUMBER SCAN.ACCEPT SCAN.APPENDDECIMAL SCAN.APPENDOCTAL SCAN.APPENDHEX - SCAN.APPENDTOSCALE SCAN.VALIDFRACTION SCAN.DECIMAL SCAN.OCTAL SCAN.OCTALCHAR - SCAN.HEX SCAN.FLOATING SCAN.ESCAPE) - (P (SCAN.INIT))) - (COMS (* ; "PARSE *") - [INITVARS (PARSE.FILELST NIL) - (PARSE.STREAM NIL) - (PARSE.FILECOMS NIL) - (PARSE.LANGUAGE NIL) - (PARSE.DIRLST NIL) - (PARSE.CLASS NIL) - (PARSE.ATOM NIL) - (PARSE.CLASS2 NIL) - (PARSE.ATOM2 NIL) - (PARSE.CASEHEAD.FIRST '(WITH SELECT)) - (PARSE.DEFHEAD.FIRST '(DEFINITIONS)) - (PARSE.DEPENDENT.FIRST '(MACHINE)) - (PARSE.DOTEST.FIRST '(UNTIL WHILE)) - (PARSE.FORCLAUSE.FIRST '(FOR THROUGH)) - (PARSE.HEAP.FIRST '(UNCOUNTED)) - (PARSE.INTERVAL.FIRST '(%( %[)) - (PARSE.OPTRELATION.FIRST '(%# < <= = > >= IN NOT ~)) - (PARSE.ORDERED.FIRST '(ORDERED)) - (PARSE.ORDERLIST.FOLLOW '(! ; END %] })) - (PARSE.PACKED.FIRST '(PACKED)) - (PARSE.PREFIXOP.FIRST '(ABS BASE LENGTH LONG MAX MIN ORD PRED SUCC)) - (PARSE.PROGHEAD.FIRST '(MONITOR PROGRAM RESIDENT)) - (PARSE.QUALIFIER.FIRST '(%. %[ ^)) - (PARSE.RANGE.FOLLOW '(! %) %, |..| %: ; => AND DO ELSE END ENDCASE ENDLOOP EXITS - FINISHED FROM NULL OR REPEAT SELECT THEN TRASH UNTIL - WHILE %] })) - (PARSE.TRANSFER.FIRST '(BROADCAST ERROR JOIN NOTIFY RESTART RETURN SIGNAL START - TRANSFER)) - (PARSE.TRANSFERMODE.FIRST '(ERROR PORT PROCESS PROGRAM SIGNAL)) - (PARSE.TRANSFEROP.FIRST '(ERROR FORK JOIN NEW SIGNAL START)) - (PARSE.TYPECONS.FIRST '(%( ARRAY BASE DESCRIPTOR ERROR FRAME LONG MACHINE - MONITORED ORDERED PACKED POINTER PORT PROC PORCEDURE - PROCESS PROGRAM RECORD SIGNAL UNCOUNTED VAR %[ {)) - (PARSE.TYPEOP.FIRST '(FIRST LAST NILL)) - (PARSE.VARIANTPART.FIRST '(PACKED SELECT SEQUENCE)) - (PARSE.CATCHLIST.FOLLOW '(END %] })) - (PARSE.CONTROLID.FOLLOW '(DECREASING IN _)) - (PARSE.DECLIST.FOLLOW '(; END })) - (PARSE.DEFAULTOPT.FOLLOW '(%, ; END %] })) - (PARSE.EXITLIST.FOLLOW '(END ENDLOOP FINISHED })) - (PARSE.MODULELIST.FOLLOW '(IEQP EXPORTS SHARES)) - (PARSE.OPTARGS.FOLLOW '(; ELSE END ENDCASE ENDLOOP EXITS FINISHED REPEAT %] })) - (PARSE.OPTEXP.FOLLOW '(! %, ; END FROM %] })) - (PARSE.SCOPE.FOLLOW '(END EXITS })) - (PARSE.STATEMENTLIST.FOLLOW '(END ENDLOOP EXITS REPEAT })) - (PARSE.TYPEEXP.FOLLOW '(! %, ; = => DECREASING END EXPORTS FROM IMPORTS IN OF - SHARES %] _ })) - (PARSE.PREDEFINED.TYPES '(ATOM BOOL BOOLEAN CARDINAL CHAR CHARACTER CONDITION - INT INTEGER MDSZone MONITORLOCK NAT REAL STRING - StringBody UNSPECIFIED WORD)) - (PARSE.RELOPS (LIST '= '%# '< '<= '> '>=)) - (PARSE.ADDOPS (LIST '+ '-)) - (PARSE.MULTOPS (LIST '* '/ 'MOD)) - (PARSE.TRANSFEROPS '(SIGNAL ERROR START JOIN NEW FORK)) - (PARSE.PREFIXOPS '(LONG ABS PRED SUCC ORD MIN MAX BASE LENGTH)) - (PARSE.TYPEOPS '(FIRST LAST NILL)) - (PARSE.NOTS '(~ NOT] - (RECORDS PARSERSTATE MINTERVAL MRANGE MRELATIVE MPAINTED MENUMERATED MRECORD MVAR - MARRAY MDESCRIPTOR MFRAME MREF MLIST PAIRITEM DEFAULT TYPELIST TYPEITEM MPOINTER - CASEHEAD BINDITEM KEYITEM FIELDLIST PAIRLIST ORDERLIST KEYLIST EXPLIST) - (FNS PARSE.MESA PARSE.CEDAR PARSE.FILE PARSE.GET.STATE PARSE.SET.STATE PARSE.BIN - PARSE.VARID PARSE.SMURF PARSE.THISIS.MESA PARSE.THISIS.CEDAR PARSE.MODULE - PARSE.INCLUDEITEM PARSE.INCLUDECHECK PARSE.SEADIRT PARSE.PROGHEAD PARSE.RESIDENT - PARSE.SAFE PARSE.DEFHEAD PARSE.TILDE PARSE.DEFINITIONS PARSE.DEFBODY PARSE.LOCKS - PARSE.LAMBDA PARSE.MODULEITEM PARSE.DECLARATION PARSE.PUBLIC PARSE.ENTRY - PARSE.IDLIST PARSE.IDENTLIST PARSE.POSITION PARSE.OPTBITS PARSE.INTERVAL - PARSE.TYPEEXP.HERE PARSE.TYPEEXP PARSE.RANGE PARSE.TYPEAPPL PARSE.TYPEAPPL.CONT - PARSE.TYPEID PARSE.TYPEID.CONT PARSE.TYPECONS PARSE.TYPECONS1 PARSE.TYPECONS.CONT - PARSE.TYPECONS.RANGE PARSE.TYPECONS.RELATIVE PARSE.TYPECONS.PAINTED - PARSE.TYPECONS2 PARSE.TYPECONS.INTERVAL PARSE.TYPECONS.DEPENDENT - PARSE.TYPECONS.ENUMERATED PARSE.TYPECONS.RECORD PARSE.TYPECONS.ORDERED - PARSE.TYPECONS.VAR PARSE.TYPECONS.PACKED PARSE.TYPECONS.DESCRIPTOR - PARSE.TYPECONS.SAFE PARSE.TYPECONS.HEAP PARSE.TYPECONS.LONG PARSE.TYPECONS.FRAME - PARSE.TYPECONS.REF PARSE.TYPECONS.LIST PARSE.IDENT PARSE.ELEMENT PARSE.MONITORED - PARSE.DEPENDENT PARSE.RECLIST PARSE.VARIANTPAIR PARSE.PAIRITEM PARSE.DEFAULTOPT - PARSE.VARIANTPART PARSE.VCASEHEAD PARSE.TAGTYPE PARSE.VARIANTITEM PARSE.TYPELIST - PARSE.TYPEITEM PARSE.POINTERTYPE PARSE.TRANSFERMODE PARSE.INITIALIZATION - PARSE.INITVALUE PARSE.CHECKED PARSE.CODELIST PARSE.STATEMENT PARSE.STATEMENT1 - PARSE.STATEMENT2 PARSE.STATEMENT.CASEHEAD PARSE.STATEMENT.FORCLAUSE - PARSE.STATEMENT.RETURN PARSE.STATEMENT.TRANSFER PARSE.STATEMENT.LBRACKET - PARSE.STATEMENT.IF PARSE.BLOCK PARSE.SCOPE PARSE.BINDITEM PARSE.EXITS - PARSE.CASESTMTITEM PARSE.CASEEXPITEM PARSE.EXITITEM PARSE.CASETEST PARSE.CONTROLID - PARSE.FORCLAUSE PARSE.DIRECTION PARSE.DOTEST PARSE.DOEXIT PARSE.ENABLES - PARSE.CATCHLIST PARSE.CATCHCASE PARSE.OPTARGS PARSE.TRANSFER PARSE.KEYITEM - PARSE.OPTEXP PARSE.EXP PARSE.EXP1 PARSE.EXP2 PARSE.EXP.TRANSFEROP PARSE.EXP.IF - PARSE.EXP.CASEHEAD PARSE.EXP.LHS PARSE.EXP.LBRACKET PARSE.EXP.ERROR - PARSE.EXP.DISJUNCT PARSE.DISJUNCT PARSE.CONJUNCT PARSE.NEGATION PARSE.RELATION - PARSE.SUM PARSE.PRODUCT PARSE.OPTRELATION PARSE.RELATIONTAIL PARSE.RELOP - PARSE.ADDOP PARSE.MULTOP PARSE.FACTOR PARSE.PRIMARY PARSE.ATOM PARSE.PRIMARY.NIL - PARSE.PRIMARY.LBRACKET PARSE.PRIMARY.PREFIXOP PARSE.PRIMARY.VAL PARSE.PRIMARY.ALL - PARSE.PRIMARY.NEW PARSE.PRIMARY.TYPEOP PARSE.PRIMARY.SIZE PARSE.PRIMARY.ISTYPE - PARSE.PRIMARY.AT PARSE.PRIMARY.DESCRIPTOR PARSE.PRIMARY.CONS PARSE.PRIMARY.LIST - PARSE.PRIMARY.LHS PARSE.PRIMARY.LHS.NEW PARSE.PRIMARY.LHS.CONS - PARSE.PRIMARY.LHS.LIST PARSE.QUALIFIER PARSE.LHS PARSE.QUALIFIER.HERE - PARSE.OPTCATCH PARSE.TRANSFEROP PARSE.PREFIXOP PARSE.TYPEOP PARSE.DESCLIST - PARSE.DIRECTORY PARSE.IMPORTS PARSE.POINTERPREFIX PARSE.EXPORTS PARSE.FIELDLIST - PARSE.USING PARSE.CATCHHEAD PARSE.DECLIST PARSE.PAIRLIST PARSE.VARIANTLIST - PARSE.ORDERLIST PARSE.LHSLIST PARSE.INCLUDELIST PARSE.MODULELIST PARSE.ELEMENTLIST - PARSE.BINDLIST PARSE.STATEMENTLIST PARSE.CASESTMTLIST PARSE.CASELABEL - PARSE.EXITLIST PARSE.KEYLIST PARSE.CASEEXPLIST PARSE.EXPLIST PARSE.OPEN - PARSE.CLASS PARSE.CASEHEAD PARSE.READONLY PARSE.ORDERED PARSE.BASE PARSE.PACKED - PARSE.HEAP PARSE.INLINE PARSE.ARGUMENTS PARSE.INTERFACE PARSE.SHARES PARSE.DEFAULT - PARSE.OPTSIZE PARSE.BOUNDS PARSE.LENGTH PARSE.INDEXTYPE PARSE.ELSEPART - PARSE.OTHERPART PARSE.FREE PARSE.CATCHANY PARSE.NOT PARSE.NEW PARSE.OPTTYPE - PARSE.ARGLIST PARSE.RETURNLIST)) - (COMS - - (* ;; "BUILD ") - - [INITVARS (BUILD.NEXT.SCOPE NIL) - (BUILD.CURRENT.SCOPE NIL) - (BUILD.SCOPE.STACK NIL) - (BUILD.PREFIX NIL) - (BUILD.FILECOMS NIL) - (BUILD.BOOLEAN.FNS '(AND OR NOT type? IGREATERP ILESSP IGEQ ILEQ IEQP ZEROP - MINUSP EVENP ODDP FGREATERP FLESSP FEQP GREATERP LESSP - GEQ LEQ)) - (BUILD.CARDINAL.FNS '(ADD1 CHARCODE FIX GCD IDIFFERENCE IMAX IMIN IMINUS IMOD - IPLUS IQUOTIENT IREMAINDER ITIMES LOGAND LOGNOT LOGOR - LOGXOR NTHCHARCODE SUB1)) - (BUILD.MIXED.FNS '(ABS DIFFERENCE EXPT MAX MIN MINUS MOD PLUS QUOTIENT REMAINDER - TIMES)) - (BUILD.REAL.FNS '(ANTILOG ARCCOS ARCSIN ARCTAN ARCTAN2 COS FDIFFERENCE FLOAT - FMAX FMIN FMINUS FMOD FPLUS FQUOTIENT FREMAINDER FTIMES - LOG SIN SQRT TAN)) - (BUILD.QUALIFY.WORDS '(FREE NEW SIZE)) - [BUILD.CARDINAL.ARITHOP.ALIST (LIST (CONS '= 'IEQP) - (CONS '%# 'IEQP) - (CONS '< 'ILESSP) - (CONS '<= 'ILEQ) - (CONS '> 'IGREATERP) - (CONS '>= 'IGEQ) - (CONS '+ 'IPLUS) - (CONS '- 'IDIFFERENCE) - (CONS '* 'ITIMES) - (CONS '/ 'IQUOTIENT) - (CONS '0- 'IMINUS) - (CONS 'MAX 'IMAX) - (CONS 'MIN 'IMIN) - (CONS 'MOD 'IMOD] - [BUILD.MIXED.ARITHOP.ALIST (LIST (CONS '= 'EQP) - (CONS '%# 'EQP) - (CONS '< 'LESSP) - (CONS '<= 'GREATERP) - (CONS '> 'GREATERP) - (CONS '>= 'LESSP) - (CONS '+ 'PLUS) - (CONS '- 'DIFFERENCE) - (CONS '* 'TIMES) - (CONS '/ 'QUOTIENT) - (CONS '0- 'MINUS) - (CONS 'MAX 'MAX) - (CONS 'MIN 'MIN) - (CONS 'MOD 'IMOD] - [BUILD.REAL.ARITHOP.ALIST (LIST (CONS '= 'FEQP) - (CONS '%# 'FEQP) - (CONS '< 'FLESSP) - (CONS '<= 'FGREATERP) - (CONS '> 'FGREATERP) - (CONS '>= 'FLESSP) - (CONS '+ 'FPLUS) - (CONS '- 'FDIFFERENCE) - (CONS '* 'FTIMES) - (CONS '/ 'FQUOTIENT) - (CONS '0- 'FMINUS) - (CONS 'MAX 'FMAX) - (CONS 'MIN 'FMIN) - (CONS 'MOD 'IMOD] - (BUILD.CARDINAL.TYPES '(CARDINAL CHAR CHARACTER INT INTEGER NAT WORD] - (RECORDS SCOPE) - (FNS BUILD.INIT BUILD.PUSH.SCOPE BUILD.POP.SCOPE BUILD.GC.SCOPE BUILD.STORE.EXPORTS - BUILD.STORE.IDENTLIST BUILD.STORE.INTERFACES BUILD.STORE.INTERFACE - BUILD.STORE.OPEN BUILD.STORE.USING BUILD.INITIALIZATION BUILD.INITIALIZE.VARS - BUILD.INITIALIZE.VAR BUILD.INITIALIZE.FN BUILD.INITIALIZE.RECORD BUILD.RECORD - BUILD.TYPE BUILD.STORE.ARGLIST BUILD.STORE.RETURNLIST BUILD.STORE.PAIRLIST - BUILD.STORE.PAIRITEM BUILD.STORE.VARLIST BUILD.ID BUILD.FIELDID BUILD.PROCID - BUILD.RECORDID BUILD.TYPEID BUILD.VARID BUILD.LOCALVARID BUILD.GLOBALVARID - BUILD.ULTIMATE.TYPE BUILD.REFINE.TYPE BUILD.IMMEDIATE.TYPE BUILD.LOOKUP.TYPE - BUILD.LOOKUP BUILD.TYPEATOM BUILD.QUALIFY BUILD.QUALIFY.PREFIXOP - BUILD.QUALIFY.TYPEOP BUILD.QUALIFY.EXPLIST BUILD.QUALIFY.ID BUILD.ARITH.EXP1 - BUILD.ARITH.EXP2 BUILD.ARITH.EXP* BUILD.ARITH.ADD1SUB1 BUILD.COERCE.ARITHOP - BUILD.STRONGEST.TYPE.AMONG BUILD.STRONGEST.TYPE BUILD.COERCE BUILD.COERCE.MARRAY - BUILD.COERCE.MLIST BUILD.COERCE.EXPLIST BUILD.ALIGN BUILD.ALIGN.VALUE - BUILD.ADD.TO.FILECOMS BUILD.ADD1 BUILD.CALL BUILD.CHARCODE BUILD.COND - BUILD.COPY.OF BUILD.FETCH BUILD.FORCLAUSE.BY BUILD.FORCLAUSE.IN - BUILD.FORCLAUSE.THROUGH BUILD.IN BUILD.ISTYPE BUILD.LAMBDA BUILD.NEW BUILD.OR - BUILD.PROG BUILD.PROGN BUILD.REPLACE BUILD.RETURN BUILD.SELECTQ BUILD.SELECTQ.FN - BUILD.SELECTQ.CCLAUSE BUILD.SELECTQ.TEST BUILD.SELECTQ.SCLAUSE BUILD.SELECTQ.KEY - BUILD.SELECTTRUEFROM BUILD.SELECTTRUEFROM.CLAUSE BUILD.SETQ BUILD.SETQ.ARRAY - BUILD.SETQ.ORDERLIST BUILD.SUB1 BUILD.TAIL) - (P (BUILD.INIT]) - - - -(* ;; "MESATOLISP -- By Kelly Roach. Lyricized by L. Masinter") - - - - -(* ;;; "SCAN: reading mesa/cedar files") - - -(RPAQ? SCAN.STRING (CL:MAKE-ARRAY 256 :INITIAL-ELEMENT '#\A :ELEMENT-TYPE 'CL:CHARACTER :ADJUSTABLE T - :FILL-POINTER 0)) - -(RPAQ? SCAN.CHAR NIL) - -(RPAQ? SCAN.QDOT NIL) - -(RPAQ? SCAN.BOTH.RESERVED - '(! %# %( %) * + %, - %. |..| / %: ; < <= = => > >= @ ABS ALL AND ANY APPLY ARRAY BASE BEGIN - BROADCAST CODE COMPUTED CONTINUE DECREASING DEFINITIONS DEPENDENT DESCRIPTOR DIRECTORY DO - ELSE ENABLE END ENDCASE ENDLOOP ENTRY ERROR EXIT EXITS EXPORTS FINISHED FIRST FOR FORK - FRAME FREE FROM GO GOTO IF IMPORTS IN INLINE INTERNAL ISTYPE JOIN LAST LENGTH LOCKS LONG - LOOP LOOPHOLE MACHINE MAX MIN MOD MONITOR MONITORED NARROW NEW NILL NOT NOTIFY NULL OF - OPEN OR ORD ORDERED OVERLAID PACKED POINTER PORT PRED PRIVATE PROC PROCEDURE PROCESS - PROGRAM PUBLIC READONLY RECORD REJECT RELATIVE REPEAT RESTART RESUME RETRY RETURN RETURNS - SELECT SEQUENCE SHARES SIGNAL SIZE START STATE STOP SUCC THEN THROUGH TO TRANSFER TRASH - TYPE UNCOUNTED UNTIL USING VAL VAR WAIT WHILE WITH ZONE %[ %] ^ _ { %| } ~)) - -(RPAQ? SCAN.CEDAR.RESERVED '(CEDAR CHECKED CONS LIST PAINTED REF SAFE TRUSTED UNCHECKED UNSAFE)) - -(RPAQ? SCAN.MESA.RESERVED '(RESIDENT)) -(DEFINEQ - -(SCAN.INIT - [LAMBDA NIL (* kbr%: "25-Nov-85 12:05") - (PROG NIL - (for ATOM in SCAN.BOTH.RESERVED do (PUTPROP ATOM 'SCAN.RESERVED 'BOTH)) - (for ATOM in SCAN.CEDAR.RESERVED do (PUTPROP ATOM 'SCAN.RESERVED 'CEDAR)) - (for ATOM in SCAN.MESA.RESERVED do (PUTPROP ATOM 'SCAN.RESERVED 'MESA]) - -(SCAN.START - [LAMBDA NIL (* ; "Edited 10-Apr-87 11:39 by Masinter") - (CL:SETF (CL:FILL-POINTER SCAN.STRING) - 0]) - -(SCAN.TEST - [LAMBDA (STRING) (* ; "Edited 6-Apr-87 15:05 by Masinter") - - (* How would scanner parse a file containing this STRING? *) - - (PROG (STREAM TOKEN) - (SETQ STREAM (OPENSTRINGSTREAM STRING)) - (SETQ SCAN.CHAR (CL:READ-CHAR STREAM)) - (SETQ SCAN.QDOT NIL) - (SETQ TOKEN (SCAN.TOKEN STREAM)) - (CLOSEF STREAM) - (RETURN TOKEN]) - -(SCAN.TESTFILE - [LAMBDA (FILE) (* kbr%: "25-Nov-85 12:05") - - (* How would scanner parse a file containing this STRING? *) - - (PROG (STREAM) - (SETQ STREAM (SCAN.OPENSTREAM FILE)) - [do (SETQ TOKEN (SCAN.TOKEN STREAM)) - (PRINT TOKEN T) - (COND - ((EQ (CAR TOKEN) - 'EOF) - (RETURN] - (CLOSEF STREAM]) - -(SCAN.OPENSTREAM - [LAMBDA (FILE) (* ; "Edited 6-Apr-87 15:05 by Masinter") - (* Open FILE, return STREAM. - *) - (PROG (STREAM TOKEN) - (SETQ STREAM (OPENSTREAM FILE 'INPUT)) - (SETFILEPTR STREAM 0) - (SETQ SCAN.CHAR (CL:READ-CHAR STREAM)) - (SETQ SCAN.QDOT NIL) - (RETURN STREAM]) - -(SCAN.TOKEN - [LAMBDA (STREAM) (* ; "Edited 10-Apr-87 15:59 by Masinter") - - (* ;; "Return (CLASS VALUE) ") - - (PROG (SCAN CLASS VALUE VALID C ADVANCE PCHAR COMMENT DASHCRLF STATE NEST) - (CL:SETF (CL:FILL-POINTER SCAN.STRING) - 0) - [do (while (<= (CL:CHAR-INT SCAN.CHAR) - (CL:CHAR-INT '#\Space)) do (COND - ((EOFP STREAM) - (GO ENDFILE))) - (SETQ SCAN.CHAR (CL:READ-CHAR STREAM))) - (CASE SCAN.CHAR - ((#\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t - #\u #\v #\w #\x #\y #\z) - (SCAN.START SCAN.CHAR) - [do (SCAN.ACCEPT STREAM) - (COND - ((NOT (OR (CL:ALPHA-CHAR-P SCAN.CHAR) - (CL:DIGIT-CHAR-P SCAN.CHAR))) - (RETURN] - (SETQ CLASS 'ID) - (SETQ VALUE (MKATOM SCAN.STRING)) - (SETQ VALID T) - (GO GOTNEXT)) - ((#\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S #\T - #\U #\V #\W #\X #\Y #\Z) (* TBW stuff concerning HTIndex. - *) - (SCAN.START SCAN.CHAR) - [do (SCAN.ACCEPT STREAM) - (COND - ((NOT (OR (CL:ALPHA-CHAR-P SCAN.CHAR) - (CL:DIGIT-CHAR-P SCAN.CHAR))) - (RETURN] - (SETQ CLASS 'ID) - (SETQ VALUE (MKATOM SCAN.STRING)) - (SETQ VALID T) - (GO GOTNEXT)) - ((#\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) - (SCAN.START SCAN.CHAR) - (SETQ SCAN (SCAN.NUMBER STREAM NIL)) - (SETQ CLASS (CAR SCAN)) - (SETQ VALUE (CADR SCAN)) - (SETQ VALID (CADDR SCAN)) - (COND - ((NOT VALID) - (SCAN.ERROR))) - (GO GOTNEXT)) - ((#\_ #\¬) - (SETQ CLASS '_) - (SETQ VALUE CLASS) - (GO GETNEXT)) - ((#\^ #\­) - (SETQ CLASS '^) - (SETQ VALUE CLASS) - (GO GETNEXT)) - ((#\, #\; #\: #\# #\+ #\* #\/ #\@ #\! #\( #\) #\[ #\] #\{ #\}) - [SETQ CLASS (MKATOM (CHARACTER (CL:CHAR-INT SCAN.CHAR] - (SETQ VALUE CLASS) - (GO GETNEXT)) - [(#\') - (SETQ SCAN.CHAR (CL:READ-CHAR STREAM)) - (SETQ SCAN (SCAN.ESCAPE STREAM)) - (SETQ VALUE (CAR SCAN)) - (SETQ VALID (CADR SCAN)) - (SETQ ADVANCE (CADDR SCAN)) - (COND - ((NOT VALID) - (SCAN.ERROR))) - (SETQ CLASS 'CHAR) - (COND - (ADVANCE (GO GETNEXT)) - (T (GO GOTNEXT] - [(#\") - (CL:SETF (CL:FILL-POINTER SCAN.STRING) - 0) - (SETQ ADVANCE T) - [do [COND - (ADVANCE (SETQ SCAN.CHAR (CL:READ-CHAR STREAM] - [CASE SCAN.CHAR ((#\") - (SETQ SCAN.CHAR (\BIN STREAM)) - (COND - ((NOT (IEQP SCAN.CHAR (CHARCODE %"))) - (RETURN] - (SETQ SCAN (SCAN.ESCAPE STREAM)) - (CL:VECTOR-PUSH-EXTEND (CL:INT-CHAR (CAR SCAN)) - SCAN.STRING) - (SETQ VALID (CADR SCAN)) - (SETQ ADVANCE (CADDR SCAN)) - (COND - ((NOT VALID) - (SCAN.ERROR] - (SETQ VALUE (CL:COPY-SEQ SCAN.STRING)) - (COND - ((OR (EQL SCAN.CHAR '#\l) - (EQL SCAN.CHAR '#\L)) - (SETQ CLASS 'STRING) - (GO GETNEXT)) - (T (SETQ CLASS 'STRING) - (COND - ((EQL (CL:CHAR-UPCASE SCAN.CHAR) - '#\G) - (GO GETNEXT)) - (T (GO GOTNEXT] - ((#\-) - (SETQ SCAN.CHAR (CL:READ-CHAR STREAM)) - (COND - ((NOT (EQL SCAN.CHAR '#\-)) - (SETQ CLASS '-) - (SETQ VALUE '-) - (GO GOTNEXT))) - (SETQ SCAN.CHAR '#\Null) - (do (SETQ PCHAR SCAN.CHAR) - (SETQ SCAN.CHAR (CL:READ-CHAR STREAM)) - (CASE SCAN.CHAR [#\- (COND - ((EQL PCHAR '#\-) - (SETQ COMMENT 'DASH) - (RETURN] - (#\Newline (SETQ COMMENT 'CRLF) - (RETURN)) - NIL)) - (SETQ SCAN.CHAR (CL:READ-CHAR STREAM)) - (COND - ((AND (EQ COMMENT 'DASH) - (EQL SCAN.CHAR '#\Newline)) - (SETQ DASHCRLF T))) (* TBW stuff about formatting *) - ) - [(#\.) - (COND - (SCAN.QDOT (SETQ SCAN.QDOT NIL) - (SETQ CLASS '|..|) - (SETQ VALUE '|..|) - (GO GETNEXT))) - (COND - ((EOFP STREAM) - (SETQ CLASS '%.) - (SETQ VALUE '%.) - (GO GOTNEXT))) - (SETQ SCAN.CHAR (CL:READ-CHAR STREAM)) - (CASE SCAN.CHAR (#\. (SETQ CLASS '|..|) - (SETQ VALUE '|..|) - (GO GETNEXT)) - ((#\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) - (SCAN.START '#\.) - (SETQ SCAN (SCAN.NUMBER STREAM T)) - (SETQ CLASS (CAR SCAN)) - (SETQ VALUE (CADR SCAN)) - (SETQ VALID (CADDR SCAN)) - (COND - ((NOT VALID) - (SCAN.ERROR))) - (GO GOTNEXT)) - (T (SETQ CLASS '%.) - (SETQ VALUE '%.) - (GO GOTNEXT] - [(#\=) - (SETQ SCAN.CHAR (CL:READ-CHAR STREAM)) - (COND - ((EQL SCAN.CHAR '#\>) - (SETQ CLASS '=>) - (SETQ VALUE '=>) - (GO GETNEXT)) - (T (SETQ CLASS '=) - (SETQ VALUE '=) - (GO GOTNEXT] - [(#\<) - (SETQ SCAN.CHAR (CL:READ-CHAR STREAM)) - (CASE SCAN.CHAR (#\= (SETQ CLASS '<=) - (SETQ VALUE '<=) - (GO GETNEXT)) - (#\< (SETQ STATE 'PLAIN) - (SETQ NEST 1) - [do (SETQ SCAN.CHAR (CL:READ-CHAR STREAM)) - (CASE SCAN.CHAR (#\> (SELECTQ STATE - ((PLAIN LEFTBROCKET) - (SETQ STATE 'RIGHTBROCKET)) - (RIGHTBROCKET (SETQ STATE 'PLAIN) - (SETQ NEST (SUB1 NEST)) - (COND - ((ZEROP NEST) - (RETURN)))) - NIL)) - (#\< (SELECTQ STATE - ((PLAIN RIGHTBROCKET) - (SETQ STATE 'LEFTBROCKET)) - (RIGHTBROCKET (SETQ STATE 'PLAIN) - (SETQ NEST (ADD1 NEST)) - (COND - ((ZEROP NEST) - (RETURN)))) - NIL)) - (T (SETQ STATE 'PLAIN] - (SETQ SCAN.CHAR (CL:READ-CHAR STREAM)) - (* TBW formatting stuff *) - ) - (T (SETQ CLASS '<) - (SETQ VALUE '<) - (GO GOTNEXT] - [(#\>) - (SETQ SCAN.CHAR (CL:READ-CHAR STREAM)) - (COND - ((EQL SCAN.CHAR '#\=) - (SETQ CLASS '>=) - (SETQ VALUE '>=) - (GO GETNEXT)) - (T (SETQ CLASS '>) - (SETQ VALUE '>) - (GO GOTNEXT] - (T [SETQ CLASS (MKATOM (CHARACTER (CL:CHAR-INT SCAN.CHAR] - (SETQ VALUE CLASS) - (GO GETNEXT] - GETNEXT - (SETQ SCAN.CHAR (CL:READ-CHAR STREAM)) - GOTNEXT - [COND - ((EQ CLASS 'ID) - [COND - ((EQ VALUE NIL) - - (* Hack NIL to NILL because I can't put properties on NIL. - *) - - (SETQ VALUE 'NILL] - (COND - ((GETPROP VALUE 'SCAN.RESERVED) - (SETQ CLASS VALUE] - (RETURN (LIST CLASS VALUE)) - ENDFILE - (SETQ CLASS 'EOF) - (SETQ VALUE 'EOF) - (RETURN (LIST CLASS VALUE]) - -(SCAN.NUMBER - [LAMBDA (STREAM FLOAT) (* ; "Edited 6-Apr-87 15:58 by Masinter") - (* Return (CLASS VALUE VALID) *) - (PROG (CLASS VALUE VALID HEXCOUNT HEXSIG V START SCAN) - (SETQ HEXCOUNT 0) - (SETQ HEXSIG 0) - (SETQ CLASS 'LNUM) - [do (CASE SCAN.CHAR ((#\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) - (SCAN.ACCEPT STREAM)) - [(#\e #\E) - [SETQ HEXSIG (LOGOR HEXSIG (LLSH 1 (IDIFFERENCE (CHARCODE e) - (CHARCODE a] - (SETQ HEXCOUNT (ADD1 HEXCOUNT)) - (SCAN.ACCEPT STREAM) - (COND - ([AND (IEQP HEXCOUNT 1) - (OR (EQL SCAN.CHAR '#\+) - (EQL SCAN.CHAR '#\-] - (SETQ FLOAT T) - (SCAN.ACCEPT STREAM] - ((#\a #\b #\c #\d #\e #\f) - [SETQ HEXSIG (LOGOR HEXSIG (LLSH 1 (IDIFFERENCE (CL:CHAR-INT SCAN.CHAR) - (CHARCODE a] - (SETQ HEXCOUNT (ADD1 HEXCOUNT)) - (SCAN.ACCEPT STREAM)) - ((#\A #\B #\C #\D #\E #\F) - [SETQ HEXSIG (LOGOR HEXSIG (LLSH 1 (IDIFFERENCE SCAN.CHAR (CHARCODE A] - (SETQ HEXCOUNT (ADD1 HEXCOUNT)) - (SCAN.ACCEPT STREAM)) - ((#\h #\H) - [SETQ HEXSIG (LOGOR HEXSIG (LLSH 1 (IDIFFERENCE (CHARCODE h) - (CHARCODE a] - (SETQ HEXCOUNT (ADD1 HEXCOUNT)) - (SCAN.ACCEPT STREAM)) - ((#\.) - (COND - ((OR (NOT (IEQP HEXCOUNT 0)) - FLOAT) - (RETURN))) - (SETQ SCAN.CHAR (CL:READ-CHAR STREAM)) - (COND - ((EQL SCAN.CHAR '#\.) - (SETQ SCAN.QDOT T) - (RETURN))) - (SETQ FLOAT T) - (CL:VECTOR-PUSH-EXTEND '#\. SCAN.STRING)) - (T (RETURN] - (CL:VECTOR-PUSH-EXTEND '#\Null SCAN.STRING) - [COND - (FLOAT (SETQ CLASS 'FLNUM) - (SETQ SCAN (SCAN.FLOATING SCAN.STRING)) - (SETQ V (CAR SCAN)) - (SETQ VALID (CADR SCAN))) - ([NOT (ZEROP (LOGAND HEXSIG (LLSH 1 (IDIFFERENCE (CHARCODE h) - (CHARCODE a] - (SETQ SCAN (SCAN.HEX SCAN.STRING)) - (SETQ V (CAR SCAN)) - (SETQ VALID (CADR SCAN))) - ((IEQP HEXCOUNT 0) - (SETQ SCAN (SCAN.DECIMAL SCAN.STRING)) - (SETQ V (CAR SCAN)) - (SETQ VALID (CADR SCAN))) - ((IEQP HEXCOUNT 1) - (SELECTC HEXSIG - ((LLSH 1 (IDIFFERENCE (CHARCODE b) - (CHARCODE a))) - (SETQ SCAN (SCAN.OCTAL SCAN.STRING))) - ((LLSH 1 (IDIFFERENCE (CHARCODE c) - (CHARCODE a))) - (SETQ CLASS 'CHAR) - (SETQ SCAN (SCAN.OCTALCHAR SCAN.STRING))) - ((LLSH 1 (IDIFFERENCE (CHARCODE d) - (CHARCODE a))) - (SETQ SCAN (SCAN.DECIMAL SCAN.STRING))) - ((LLSH 1 (IDIFFERENCE (CHARCODE e) - (CHARCODE a))) - (SETQ CLASS 'FLNUM) - (SETQ SCAN (SCAN.FLOATING SCAN.STRING))) - (SETQ SCAN (SCAN.HEX SCAN.STRING))) - (SETQ V (CAR SCAN)) - (SETQ VALID (CADR SCAN))) - (T (SETQ SCAN (SCAN.HEX SCAN.STRING)) - (SETQ V (CAR SCAN)) - (SETQ VALID (CADR SCAN] (* TBW stuff *) - (RETURN (LIST CLASS V VALID]) - -(SCAN.ACCEPT - [LAMBDA (STREAM) (* ; "Edited 6-Apr-87 15:25 by Masinter") - (CL:VECTOR-PUSH-EXTEND SCAN.CHAR SCAN.STRING) - (SETQ SCAN.CHAR (CL:READ-CHAR STREAM]) - -(SCAN.APPENDDECIMAL - [LAMBDA (V DIGIT) (* kbr%: "25-Nov-85 12:06") - (* DIGIT is a character code. - Return (NEWV VALID) *) - (PROG (MAXV MAXD D VALID NEWV) - (SETQ MAXV 429496729) - (SETQ MAXD 5) - (SETQ D (IDIFFERENCE DIGIT (CHARCODE 0))) - [SETQ VALID (OR (ILESSP V MAXV) - (AND (IEQP V MAXV) - (ILEQ D MAXD] - (SETQ NEWV (IPLUS (ITIMES 10 V) - D)) - (RETURN (LIST NEWV VALID]) - -(SCAN.APPENDOCTAL - [LAMBDA (V DIGIT) (* kbr%: "25-Nov-85 12:06") - (* DIGIT is a character code. - Return (NEWV VALID) *) - (PROG (MAXV D VALID NEWV) - (SETQ MAXV 536870911) - (SETQ D (IDIFFERENCE DIGIT (CHARCODE 0))) - (SETQ VALID (ILEQ V MAXV)) - (SETQ NEWV (IPLUS (ITIMES 8 V) - D)) - (RETURN (LIST NEWV VALID]) - -(SCAN.APPENDHEX - [LAMBDA (V DIGIT) (* kbr%: "25-Nov-85 12:06") - (* DIGIT is a character code. - Return (NEWV VALID) *) - (PROG (MAXV D VALID NEWV) - (SETQ MAXV 268435455) - [COND - [(AND (IGEQ DIGIT (CHARCODE 0)) - (ILEQ DIGIT (CHARCODE 9))) - (SETQ D (IDIFFERENCE DIGIT (CHARCODE 0] - (T (SETQ D (IPLUS DIGIT (IMINUS (CHARCODE A)) - 10] - (SETQ VALID (ILEQ V MAXV)) - (SETQ NEWV (IPLUS (ITIMES 16 V) - D)) - (RETURN (LIST NEWV VALID]) - -(SCAN.APPENDTOSCALE - [LAMBDA (V DIGIT) (* kbr%: "25-Nov-85 12:06") - (* DIGIT is a character code. - Return (NEWV VALID) *) - (PROG (MAXV MAXD D VALID NEWV) - (SETQ MAXV 6553) - (SETQ MAXD 5) - (SETQ D (IDIFFERENCE DIGIT (CHARCODE 0))) - [SETQ VALID (OR (ILESSP V MAXV) - (AND (IEQP V MAXV) - (ILEQ D MAXD] - (SETQ NEWV (IPLUS (ITIMES 10 V) - D)) - (RETURN (LIST NEWV VALID]) - -(SCAN.VALIDFRACTION - [LAMBDA (V DIGIT) (* kbr%: "25-Nov-85 12:06") - (* DIGIT is a character code. - Return VALID. *) - (PROG (MAXV MAXD D VALID) - (SETQ MAXV 214748364) - (SETQ MAXD 7) - (SETQ D (IDIFFERENCE DIGIT (CHARCODE 0))) - [SETQ VALID (OR (ILESSP V MAXV) - (AND (IEQP V MAXV) - (ILEQ D MAXD] - (RETURN VALID]) - -(SCAN.DECIMAL - [LAMBDA (BUFFER) (* ; "Edited 6-Apr-87 15:48 by Masinter") - (* Return (VALUE VALID) *) - (PROG (VALUE VALID BUFFERPTR C V SCAN SCALE) - (SETQ VALID T) - (SETQ BUFFERPTR 0) - (SETQ V 0) - (while (AND (IGEQ (SETQ C (CL:CHAR-INT (CL:ELT BUFFER BUFFERPTR))) - (CHARCODE 0)) - (ILEQ C (CHARCODE 9))) do [COND - (VALID (SETQ SCAN (SCAN.APPENDDECIMAL V C)) - (SETQ V (CAR SCAN)) - (SETQ VALID (CADR SCAN] - (SETQ BUFFERPTR (ADD1 BUFFERPTR))) - [COND - ((OR (IEQP C (CHARCODE d)) - (IEQP C (CHARCODE D))) - (SETQ SCALE 0) - (SETQ BUFFERPTR (ADD1 BUFFERPTR)) - (while (AND (IGEQ (SETQ C (CL:CHAR-INT (CL:ELT BUFFER BUFFERPTR))) - (CHARCODE 0)) - (ILEQ C (CHARCODE 9))) do [COND - (VALID (SETQ SCAN (SCAN.APPENDTOSCALE SCALE C) - ) - (SETQ SCALE (CAR SCAN)) - (SETQ VALID (CADR SCAN] - (SETQ BUFFERPTR (ADD1 BUFFERPTR))) - (for I from 1 to SCALE do (SETQ SCAN (SCAN.APPENDDECIMAL V (CHARCODE 0))) - (SETQ V (CAR SCAN)) - (SETQ VALID (CADR SCAN] - (COND - ([NOT (ZEROP (CL:CHAR-INT (CL:ELT BUFFER BUFFERPTR] - (SETQ VALID NIL))) - (SETQ VALUE V) - (RETURN (LIST VALUE VALID]) - -(SCAN.OCTAL - [LAMBDA (BUFFER) (* ; "Edited 6-Apr-87 15:55 by Masinter") - (* Return (VALUE VALID) *) - (PROG (VALUE VALID BUFFERPTR C V SCAN SCALE) - (SETQ BUFFERPTR 0) - (SETQ VALID T) - (SETQ V 0) - (while (AND (IGEQ (SETQ C (CL:CHAR-INT (CL:ELT BUFFER BUFFERPTR))) - (CHARCODE 0)) - (ILEQ C (CHARCODE 7))) do [COND - (VALID (SETQ SCAN (SCAN.APPENDOCTAL V C)) - (SETQ V (CAR SCAN)) - (SETQ VALID (CADR SCAN] - (SETQ BUFFERPTR (ADD1 BUFFERPTR))) - [COND - ((OR (IEQP C (CHARCODE b)) - (IEQP C (CHARCODE B))) - (SETQ SCALE 0) - (SETQ BUFFERPTR (ADD1 BUFFERPTR)) - (while (AND (IGEQ (SETQ C (CL:CHAR-INT (CL:ELT BUFFER BUFFERPTR))) - (CHARCODE 0)) - (ILEQ C (CHARCODE 7))) do [COND - (VALID (SETQ SCAN (SCAN.APPENDTOSCALE SCALE C) - ) - (SETQ SCALE (CAR SCAN)) - (SETQ VALID (CADR SCAN] - (SETQ BUFFERPTR (ADD1 BUFFERPTR))) - (for I from 1 to SCALE do (SETQ SCAN (SCAN.APPENDOCTAL V (CHARCODE 0))) - (SETQ V (CAR SCAN)) - (SETQ VALID (CADR SCAN] - (COND - ([NOT (ZEROP (CL:CHAR-INT (CL:ELT BUFFER BUFFERPTR] - (SETQ VALID NIL))) - (SETQ VALUE V) - (RETURN (LIST VALUE VALID]) - -(SCAN.OCTALCHAR - [LAMBDA (BUFFER) (* ; "Edited 6-Apr-87 15:57 by Masinter") - (* Return (VALUE VALID) *) - (PROG (VALUE VALID BUFFERPTR C V SCAN SCALE) - (SETQ BUFFERPTR 0) - (SETQ VALID T) - (SETQ V 0) - (while (AND (IGEQ (SETQ C (CL:CHAR-INT (CL:ELT BUFFER BUFFERPTR))) - (CHARCODE 0)) - (ILEQ C (CHARCODE 7))) do [COND - (VALID (SETQ SCAN (SCAN.APPENDOCTAL V C)) - (SETQ V (CAR SCAN)) - (SETQ VALID (CADR SCAN] - (SETQ BUFFERPTR (ADD1 BUFFERPTR))) - [COND - ((OR (IEQP C (CHARCODE c)) - (IEQP C (CHARCODE C))) - (SETQ BUFFERPTR (ADD1 BUFFERPTR] - (COND - ([NOT (ZEROP (CL:CHAR-INT (CL:ELT BUFFER BUFFERPTR] - (SETQ VALID NIL))) - (COND - ((NOT (OR (IGEQ V 0) - (ILEQ V 255))) - (SETQ VALID NIL))) - (SETQ VALUE V) - (RETURN (LIST VALUE VALID]) - -(SCAN.HEX - [LAMBDA (BUFFER) (* ; "Edited 6-Apr-87 15:45 by Masinter") - (* Return (VALUE VALID) *) - (PROG (VALUE VALID BUFFERPTR C V SCAN SCALE) - (SETQ BUFFERPTR 0) - (SETQ VALID T) - (SETQ V 0) - (while [NOT (ZEROP (SETQ C (CL:CHAR-INT (CL:ELT BUFFER BUFFERPTR] - do (COND - [[OR (AND (IGEQ C (CHARCODE 0)) - (ILEQ C (CHARCODE 9))) - (AND (IGEQ C (CHARCODE A)) - (ILEQ C (CHARCODE F] - (COND - (VALID (SETQ SCAN (SCAN.APPENDHEX V C)) - (SETQ V (CAR SCAN)) - (SETQ VALID (CADR SCAN] - [(AND (IGEQ C (CHARCODE a)) - (ILEQ C (CHARCODE f))) - (COND - (VALID [SETQ SCAN (SCAN.APPENDHEX V (IDIFFERENCE C (IDIFFERENCE (CHARCODE - a) - (CHARCODE A] - (SETQ V (CAR SCAN)) - (SETQ VALID (CADR SCAN] - (T (RETURN))) - (SETQ BUFFERPTR (ADD1 BUFFERPTR))) - [COND - ((OR (IEQP C (CHARCODE h)) - (IEQP C (CHARCODE H))) - (SETQ SCALE 0) - (SETQ BUFFERPTR (ADD1 BUFFERPTR)) - (while (AND (IGEQ (SETQ C (CL:CHAR-INT (CL:ELT BUFFER BUFFERPTR))) - (CHARCODE 0)) - (ILEQ C (CHARCODE 9))) do [COND - (VALID (SETQ SCAN (SCAN.APPENDTOSCALE SCALE C) - ) - (SETQ SCALE (CAR SCAN)) - (SETQ VALID (CADR SCAN] - (SETQ BUFFERPTR (ADD1 BUFFERPTR))) - (for I from 1 to SCALE do (SETQ SCAN (SCAN.APPENDHEX V (CHARCODE 0))) - (SETQ V (CAR SCAN)) - (SETQ VALID (CADR SCAN] - (COND - ([NOT (ZEROP (CL:CHAR-INT (CL:ELT BUFFER BUFFERPTR] - (SETQ VALID NIL))) - (SETQ VALUE V) - (RETURN (LIST VALUE VALID]) - -(SCAN.FLOATING - [LAMBDA (BUFFER) (* ; "Edited 6-Apr-87 15:46 by Masinter") - (* Return (VALUE VALID) *) - (PROG (VALUE VALID BUFFERPTR C V EXP SCAN SCALE OP) - (SETQ BUFFERPTR 0) - (SETQ VALID T) - (SETQ V 0) - (SETQ EXP 0) - (while (AND [<= (CHARCODE 0) - (SETQ C (CL:CHAR-INT (CL:ELT BUFFER BUFFERPTR] - (< C (CHARCODE 9))) do (SETQ VALID (AND VALID (SCAN.VALIDFRACTION V C))) - [COND - (VALID (SETQ SCAN (SCAN.APPENDDECIMAL V C)) - (SETQ V (CAR SCAN))) - (T (SETQ EXP (ADD1 EXP] - (SETQ BUFFERPTR (ADD1 BUFFERPTR))) - [COND - ((= C (CHARCODE %.)) - (SETQ BUFFERPTR (ADD1 BUFFERPTR)) - (SETQ C (CL:CHAR-INT (CL:ELT BUFFER BUFFERPTR))) - (COND - ([NOT (AND (IGEQ C (CHARCODE 0)) - (ILEQ C (CHARCODE 9] - (SETQ VALID NIL))) - (while (AND (IGEQ (SETQ C (CL:CHAR-INT (CL:ELT BUFFER BUFFERPTR))) - (CHARCODE 0)) - (ILEQ C (CHARCODE 9))) do (SETQ VALID (AND VALID (SCAN.VALIDFRACTION V C))) - [COND - (VALID (SETQ SCAN (SCAN.APPENDDECIMAL V C)) - (SETQ V (CAR SCAN)) - (SETQ VALID (CADR SCAN)) - (SETQ EXP (SUB1 EXP] - (SETQ BUFFERPTR (ADD1 BUFFERPTR] - (SETQ VALID T) - [COND - ((OR (IEQP C (CHARCODE e)) - (IEQP C (CHARCODE E))) - (SETQ SCALE 0) - (SETQ OP 'PLUS) - (SETQ BUFFERPTR (ADD1 BUFFERPTR)) - (SELCHARQ (CL:CHAR-INT (CL:ELT BUFFER BUFFERPTR)) - ("+" (SETQ BUFFERPTR (ADD1 BUFFERPTR))) - ("-" (SETQ OP 'MINUS) - (SETQ BUFFERPTR (ADD1 BUFFERPTR))) - NIL) - (COND - ([NOT (AND (IGEQ (CL:CHAR-INT (CL:ELT BUFFER BUFFERPTR)) - (CHARCODE 0)) - (ILEQ (CL:CHAR-INT (CL:ELT BUFFER BUFFERPTR)) - (CHARCODE 9] - (SETQ VALID NIL))) - (while (AND (IGEQ (SETQ C (CL:CHAR-INT (CL:ELT BUFFER BUFFERPTR))) - (CHARCODE 0)) - (ILEQ C (CHARCODE 9))) do [COND - (VALID (SETQ SCAN (SCAN.APPENDTOSCALE SCALE C) - ) - (SETQ SCALE (CAR SCAN)) - (SETQ VALID (CADR SCAN] - (SETQ BUFFERPTR (ADD1 BUFFERPTR))) - (SETQ EXP (COND - ((EQ OP 'PLUS) - (IPLUS EXP SCALE)) - (T (IDIFFERENCE EXP SCALE] - (COND - ((NOT (ZEROP (CL:ELT BUFFER BUFFERPTR))) - (SETQ VALID NIL))) - - (* TBW NOTE%: Look at MKNUMATOM & \FLOATINGSCALE to find right way to do this. - *) - - (SETQ VALUE (FTIMES V (EXPT 10.0 EXP))) - (RETURN (LIST VALUE VALID]) - -(SCAN.ESCAPE - [LAMBDA (STREAM) (* ; "Edited 6-Apr-87 15:28 by Masinter") - (PROG (C VALID ADVANCE V NC) - (SETQ VALID T) - (SETQ ADVANCE T) - (SETQ C SCAN.CHAR) - [COND - ((EQL C '#\\) - (SETQ SCAN.CHAR (CL:READ-CHAR STREAM)) - (SETQ C (CASE SCAN.CHAR ((#\n #\N #\r #\R) - (CHARCODE CR)) - ((#\l #\L) - (CHARCODE LF)) - ((#\t #\T) - (CHARCODE TAB)) - ((#\b #\B) - (CHARCODE BS)) - ((#\f #\F) - (CHARCODE FF)) - ((#\' #\" #\\) - (CL:CHAR-INT SCAN.CHAR)) - ((#\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7) - (SETQ V 0) - (SETQ NC 0) - (do (COND - ([NOT (AND (IGEQ (CL:CHAR-INT SCAN.CHAR) - (CHARCODE 0)) - (ILEQ (CL:CHAR-INT SCAN.CHAR) - (CHARCODE 7] - (SETQ VALID NIL) - (SETQ ADVANCE NIL) - (RETURN))) - [SETQ V (IPLUS (ITIMES 8 V) - (IDIFFERENCE (CL:CHAR-INT SCAN.CHAR) - (CHARCODE 0] - (COND - ((IEQP (SETQ NC (ADD1 NC)) - 3) - (RETURN))) - (SETQ SCAN.CHAR (CL:READ-CHAR STREAM))) - (COND - ((IGREATERP V 255) - (SETQ VALID NIL) - (SETQ V 0))) - (SETQ C V)) - (T (SETQ VALID NIL) - (SETQ ADVANCE NIL] - (RETURN (LIST C VALID ADVANCE]) -) -(SCAN.INIT) - - - -(* ; "PARSE *") - - -(RPAQ? PARSE.FILELST NIL) - -(RPAQ? PARSE.STREAM NIL) - -(RPAQ? PARSE.FILECOMS NIL) - -(RPAQ? PARSE.LANGUAGE NIL) - -(RPAQ? PARSE.DIRLST NIL) - -(RPAQ? PARSE.CLASS NIL) - -(RPAQ? PARSE.ATOM NIL) - -(RPAQ? PARSE.CLASS2 NIL) - -(RPAQ? PARSE.ATOM2 NIL) - -(RPAQ? PARSE.CASEHEAD.FIRST '(WITH SELECT)) - -(RPAQ? PARSE.DEFHEAD.FIRST '(DEFINITIONS)) - -(RPAQ? PARSE.DEPENDENT.FIRST '(MACHINE)) - -(RPAQ? PARSE.DOTEST.FIRST '(UNTIL WHILE)) - -(RPAQ? PARSE.FORCLAUSE.FIRST '(FOR THROUGH)) - -(RPAQ? PARSE.HEAP.FIRST '(UNCOUNTED)) - -(RPAQ? PARSE.INTERVAL.FIRST '(%( %[)) - -(RPAQ? PARSE.OPTRELATION.FIRST '(%# < <= = > >= IN NOT ~)) - -(RPAQ? PARSE.ORDERED.FIRST '(ORDERED)) - -(RPAQ? PARSE.ORDERLIST.FOLLOW '(! ; END %] })) - -(RPAQ? PARSE.PACKED.FIRST '(PACKED)) - -(RPAQ? PARSE.PREFIXOP.FIRST '(ABS BASE LENGTH LONG MAX MIN ORD PRED SUCC)) - -(RPAQ? PARSE.PROGHEAD.FIRST '(MONITOR PROGRAM RESIDENT)) - -(RPAQ? PARSE.QUALIFIER.FIRST '(%. %[ ^)) - -(RPAQ? PARSE.RANGE.FOLLOW - '(! %) %, |..| %: ; => AND DO ELSE END ENDCASE ENDLOOP EXITS FINISHED FROM NULL OR REPEAT - SELECT THEN TRASH UNTIL WHILE %] })) - -(RPAQ? PARSE.TRANSFER.FIRST '(BROADCAST ERROR JOIN NOTIFY RESTART RETURN SIGNAL START TRANSFER)) - -(RPAQ? PARSE.TRANSFERMODE.FIRST '(ERROR PORT PROCESS PROGRAM SIGNAL)) - -(RPAQ? PARSE.TRANSFEROP.FIRST '(ERROR FORK JOIN NEW SIGNAL START)) - -(RPAQ? PARSE.TYPECONS.FIRST - '(%( ARRAY BASE DESCRIPTOR ERROR FRAME LONG MACHINE MONITORED ORDERED PACKED POINTER PORT PROC - PORCEDURE PROCESS PROGRAM RECORD SIGNAL UNCOUNTED VAR %[ {)) - -(RPAQ? PARSE.TYPEOP.FIRST '(FIRST LAST NILL)) - -(RPAQ? PARSE.VARIANTPART.FIRST '(PACKED SELECT SEQUENCE)) - -(RPAQ? PARSE.CATCHLIST.FOLLOW '(END %] })) - -(RPAQ? PARSE.CONTROLID.FOLLOW '(DECREASING IN _)) - -(RPAQ? PARSE.DECLIST.FOLLOW '(; END })) - -(RPAQ? PARSE.DEFAULTOPT.FOLLOW '(%, ; END %] })) - -(RPAQ? PARSE.EXITLIST.FOLLOW '(END ENDLOOP FINISHED })) - -(RPAQ? PARSE.MODULELIST.FOLLOW '(IEQP EXPORTS SHARES)) - -(RPAQ? PARSE.OPTARGS.FOLLOW '(; ELSE END ENDCASE ENDLOOP EXITS FINISHED REPEAT %] })) - -(RPAQ? PARSE.OPTEXP.FOLLOW '(! %, ; END FROM %] })) - -(RPAQ? PARSE.SCOPE.FOLLOW '(END EXITS })) - -(RPAQ? PARSE.STATEMENTLIST.FOLLOW '(END ENDLOOP EXITS REPEAT })) - -(RPAQ? PARSE.TYPEEXP.FOLLOW - '(! %, ; = => DECREASING END EXPORTS FROM IMPORTS IN OF SHARES %] _ })) - -(RPAQ? PARSE.PREDEFINED.TYPES - '(ATOM BOOL BOOLEAN CARDINAL CHAR CHARACTER CONDITION INT INTEGER MDSZone MONITORLOCK NAT REAL - STRING StringBody UNSPECIFIED WORD)) - -(RPAQ? PARSE.RELOPS (LIST '= '%# '< '<= '> '>=)) - -(RPAQ? PARSE.ADDOPS (LIST '+ '-)) - -(RPAQ? PARSE.MULTOPS (LIST '* '/ 'MOD)) - -(RPAQ? PARSE.TRANSFEROPS '(SIGNAL ERROR START JOIN NEW FORK)) - -(RPAQ? PARSE.PREFIXOPS '(LONG ABS PRED SUCC ORD MIN MAX BASE LENGTH)) - -(RPAQ? PARSE.TYPEOPS '(FIRST LAST NILL)) - -(RPAQ? PARSE.NOTS '(~ NOT)) -(DECLARE%: EVAL@COMPILE - -(TYPERECORD PARSERSTATE (STREAM FILEPTR CHAR QDOT CLASS ATOM CLASS2 ATOM2 PREFIX NEXTSCOPE - CURRENTSCOPE SCOPESTACK FILECOMS)) - -(TYPERECORD MINTERVAL (KIND . BOUNDS) - [ACCESSFNS ((LBOUND (CAR (fetch (MINTERVAL BOUNDS) of DATUM))) - (UBOUND (CADR (fetch (MINTERVAL BOUNDS) of DATUM]) - -(TYPERECORD MRANGE (TYPE INTERVAL)) - -(TYPERECORD MRELATIVE (TYPEID TYPE)) - -(TYPERECORD MPAINTED (TYPEID TYPE)) - -(TYPERECORD MENUMERATED ITEMS) - -(TYPERECORD MRECORD (RECORDID . FIELDLIST)) - -(TYPERECORD MVAR TYPE) - -(TYPERECORD MARRAY (INDEXTYPE TYPE)) - -(TYPERECORD MDESCRIPTOR TYPE) - -(TYPERECORD MFRAME ID) - -(TYPERECORD MREF TYPE) - -(TYPERECORD MLIST TYPE) - -(RECORD PAIRITEM (ID TYPEEXP DEFAULT)) - -(RECORD DEFAULT (EXP TRASH)) - -(TYPERECORD TYPELIST ITEMS) - -(RECORD TYPEITEM (TYPEEXP DEFAULT)) - -(TYPERECORD MPOINTER TYPE) - -(TYPERECORD CASEHEAD (ID EXP OPTEXP)) - -(TYPERECORD BINDITEM (ID EXP)) - -(RECORD KEYITEM (ID OPTEXP)) - -(RECORD FIELDLIST (TYPE . ITEMS) - [TYPE? (AND (LISTP DATUM) - (FMEMB (CAR DATUM) - '(PAIRLIST TYPELIST]) - -(TYPERECORD PAIRLIST ITEMS) - -(TYPERECORD ORDERLIST ITEMS) - -(TYPERECORD KEYLIST ITEMS) - -(RECORD EXPLIST (TYPE . ITEMS) - [TYPE? (AND (LISTP DATUM) - (FMEMB (CAR DATUM) - '(KEYLIST ORDERLIST]) -) -(DEFINEQ - -(PARSE.MESA - [LAMBDA (FILE DIRLST) (* kbr%: "25-Nov-85 12:46") - (PARSE.FILE FILE 'MESA DIRLST]) - -(PARSE.CEDAR - (CL:LAMBDA (&OPTIONAL FILE DIRLST) (* ; "Edited 10-Apr-87 16:00 by Masinter") - (PARSE.FILE FILE 'CEDAR DIRLST))) - -(PARSE.FILE - (CL:LAMBDA (&OPTIONAL FILE LANGUAGE DIRLST) (* ; "Edited 10-Apr-87 16:01 by Masinter") - (PROG NIL - (SETQ PARSE.DIRLST DIRLST) - (SETQ PARSE.LANGUAGE LANGUAGE) - (SETQ PARSE.STREAM (SCAN.OPENSTREAM FILE)) - (SETQ PARSE.ATOM NIL) - (SETQ PARSE.ATOM2 NIL) - (PARSE.BIN) - (PARSE.BIN) - (PARSE.MODULE) - (SETQ PARSE.FILECOMS (DREVERSE PARSE.FILECOMS)) - (CLOSEF PARSE.STREAM)))) - -(PARSE.GET.STATE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:46") - (* Get parser state to save before - interruption. *) - (create PARSERSTATE - STREAM _ PARSE.STREAM - FILEPTR _ (GETFILEPTR PARSE.STREAM) - CHAR _ SCAN.CHAR - QDOT _ SCAN.QDOT - CLASS _ PARSE.CLASS - ATOM _ PARSE.ATOM - CLASS2 _ PARSE.CLASS2 - ATOM2 _ PARSE.ATOM2 - PREFIX _ BUILD.PREFIX - NEXTSCOPE _ BUILD.NEXT.SCOPE - CURRENTSCOPE _ BUILD.CURRENT.SCOPE - SCOPESTACK _ BUILD.SCOPE.STACK - FILECOMS _ BUILD.FILECOMS]) - -(PARSE.SET.STATE - [LAMBDA (STATE) (* kbr%: "25-Nov-85 12:46") - (* Restore state after interruption. - *) - (PROG NIL - (SETQ PARSE.STREAM (fetch (PARSERSTATE STREAM) of STATE)) - (SETFILEPTR PARSE.STREAM (fetch (PARSERSTATE FILEPTR) of STATE)) - (SETQ SCAN.CHAR (fetch (PARSERSTATE CHAR) of STATE)) - (SETQ SCAN.QDOT (fetch (PARSERSTATE QDOT) of STATE)) - (SETQ PARSE.CLASS (fetch (PARSERSTATE CLASS) of STATE)) - (SETQ PARSE.ATOM (fetch (PARSERSTATE ATOM) of STATE)) - (SETQ PARSE.CLASS2 (fetch (PARSERSTATE CLASS2) of STATE)) - (SETQ PARSE.ATOM2 (fetch (PARSERSTATE ATOM2) of STATE)) - (SETQ BUILD.PREFIX (fetch (PARSERSTATE PREFIX) of STATE)) - (SETQ BUILD.NEXT.SCOPE (fetch (PARSERSTATE NEXTSCOPE) of STATE)) - (SETQ BUILD.CURRENT.SCOPE (fetch (PARSERSTATE CURRENTSCOPE) of STATE)) - (SETQ BUILD.SCOPE.STACK (fetch (PARSERSTATE SCOPESTACK) of STATE)) - (SETQ BUILD.FILECOMS (fetch (PARSERSTATE FILECOMS) of STATE]) - -(PARSE.BIN - (CL:LAMBDA (EXPECTCLASS) (* ; "Edited 10-Apr-87 16:00 by Masinter") - (PROG (OLDATOM TOKEN) - (COND - ([AND EXPECTCLASS (OR (AND (LITATOM EXPECTCLASS) - (NOT (EQ EXPECTCLASS PARSE.CLASS))) - (AND (LISTP EXPECTCLASS) - (NOT (FMEMB PARSE.CLASS EXPECTCLASS] - (SHOULDNT "PARSE.BIN"))) - (SETQ OLDATOM PARSE.ATOM) - (SETQ TOKEN (SCAN.TOKEN PARSE.STREAM)) - (SETQ PARSE.CLASS PARSE.CLASS2) - (SETQ PARSE.ATOM PARSE.ATOM2) - (SETQ PARSE.CLASS2 (CAR TOKEN)) - (SETQ PARSE.ATOM2 (CADR TOKEN)) - (RETURN OLDATOM)))) - -(PARSE.VARID - [LAMBDA NIL (* kbr%: "25-Nov-85 12:46") - (BUILD.VARID NIL (PARSE.BIN 'ID]) - -(PARSE.SMURF - [LAMBDA (N) (* kbr%: "25-Nov-85 12:46") - (* Indicate where error occurred while - reading file *) - (COND - ((NULL N) - (SETQ N 100))) - (RESETLST (PROG (POSITION START FINISH) (* Broken file = previous input file *) - (SETQ POSITION (GETFILEPTR PARSE.STREAM)) - (RESETSAVE NIL (LIST 'SETFILEPTR PARSE.STREAM POSITION)) - (SETQ START (IMAX 0 (IDIFFERENCE (SUB1 POSITION) - N))) - (SETQ FINISH (IMIN (GETEOFPTR PARSE.STREAM) - (IPLUS (SUB1 POSITION) - N))) - (COPYBYTES PARSE.STREAM T START (SUB1 POSITION)) - (PRIN1 "[PARSE]" T) - (COPYBYTES PARSE.STREAM T (SUB1 POSITION) - FINISH) - (TERPRI T]) - -(PARSE.THISIS.MESA - [LAMBDA NIL (* kbr%: "25-Nov-85 12:46") - (* Assert this is MESA *) - (COND - ((NOT (EQ PARSE.LANGUAGE 'MESA)) - (SHOULDNT]) - -(PARSE.THISIS.CEDAR - [LAMBDA NIL (* kbr%: "25-Nov-85 12:46") - (* Assert this is CEDAR *) - (COND - ((NOT (EQ PARSE.LANGUAGE 'CEDAR)) - (SHOULDNT]) - -(PARSE.MODULE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:46") - (PROG (IDENTLIST) (* (module directory identlist cedar - proghead trusted checked block) - (module directory identlist cedar - defhead defbody) *) - (PARSE.DIRECTORY) - (SETQ IDENTLIST (PARSE.IDENTLIST)) - (BUILD.INIT (CAR IDENTLIST)) - (BUILD.STORE.INTERFACES IDENTLIST) - (PARSE.SEADIRT) - (COND - ((NOT (EQ PARSE.ATOM 'DEFINITIONS)) - (PARSE.PROGHEAD) - (PARSE.CHECKED) - (PARSE.BLOCK)) - (T (PARSE.DEFHEAD) - (PARSE.DEFBODY))) - (PUTPROP BUILD.PREFIX 'MESA.PARSED T) - (pushnew PARSE.FILELST BUILD.PREFIX]) - -(PARSE.INCLUDEITEM - [LAMBDA NIL (* kbr%: "25-Nov-85 12:46") - (PROG (ID USING) (* (includeitem id %: FROM string - using) (includeitem id %: TYPE using) - (includeitem id using) - (includeitem id %: TYPE id using) *) - (SETQ ID (PARSE.BIN 'ID)) - (BUILD.STORE.INTERFACE ID) - (PARSE.INCLUDECHECK ID) - [COND - [(EQ PARSE.ATOM '%:) - (PARSE.BIN) - (COND - ((EQ PARSE.ATOM 'FROM) - (PARSE.BIN) - (PARSE.BIN 'STRING) - (SETQ USING (PARSE.USING))) - (T (PARSE.BIN 'TYPE) - (COND - ((EQ PARSE.ATOM 'ID) - (PARSE.BIN 'ID) - (SETQ USING (PARSE.USING))) - ((EQ PARSE.ATOM 'USING) - (SETQ USING (PARSE.USING] - (T (SETQ USING (PARSE.USING] - (BUILD.STORE.USING ID USING]) - -(PARSE.INCLUDECHECK - [LAMBDA (ID) (* kbr%: "25-Nov-85 12:46") - (PROG (STATE FILE) - (COND - ((GETPROP ID 'MESA.PARSED) (* Interface already loaded. - *) - (RETURN))) - (SELECTQ (ASKUSER NIL NIL (CONCAT "Should I parse " ID ".MESA?")) - (Y [SETQ FILE (OR (FINDFILE (PACK* ID '.MESA) - NIL PARSE.DIRLST) - (MKATOM (PROMPTFORWORD (CONCAT "Enter full filename for " ID ".MESA:" - ] - (COND - (FILE (SETQ STATE (PARSE.GET.STATE)) - (PARSE.FILE FILE PARSE.LANGUAGE PARSE.DIRLST) - (PARSE.SET.STATE STATE)))) - (N NIL) - (SHOULDNT]) - -(PARSE.SEADIRT - [LAMBDA NIL (* kbr%: "25-Nov-85 12:46") - (* BOTH (cedar) *) - (* CEDAR (cedar CEDAR) *) - (COND - ((EQ PARSE.ATOM 'CEDAR) - (PARSE.THISIS.CEDAR) - (PARSE.BIN]) - -(PARSE.PROGHEAD - [LAMBDA NIL (* kbr%: "25-Nov-85 12:46") - (PROG NIL (* (proghead resident safe class - arguments locks interface tilde public) - *) - - (* In MESA, tilde must be =. This is handled by PARSE.TILDE. - *) - - (PARSE.RESIDENT) - (PARSE.SAFE) - (PARSE.CLASS) - (PARSE.ARGUMENTS) - (PARSE.LOCKS) - (PARSE.INTERFACE) - (PARSE.TILDE) - (PARSE.PUBLIC]) - -(PARSE.RESIDENT - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* BOTH (resident) *) - (* MESA (resident RESIDENT) *) - (COND - ((EQ PARSE.ATOM 'RESIDENT) - (PARSE.THISIS.MESA) - (PARSE.BIN]) - -(PARSE.SAFE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* BOTH (safe) *) - (* CEDAR (safe UNSAFE) - (safe SAFE) *) - (COND - ((FMEMB PARSE.ATOM '(SAFE UNSAFE)) - (PARSE.THISIS.CEDAR) - (PARSE.BIN]) - -(PARSE.DEFHEAD - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG NIL (* (defhead definitions locks imports - shares tilde public) *) - (PARSE.DEFINITIONS) - (PARSE.LOCKS) - (PARSE.IMPORTS) - (PARSE.SHARES) - (PARSE.TILDE) - (PARSE.PUBLIC]) - -(PARSE.TILDE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* BOTH (tilde =) *) - (* CEDAR (tilde ~) *) - (COND - ((EQ PARSE.ATOM '=) - (PARSE.BIN)) - ((EQ PARSE.ATOM '~) - (PARSE.THISIS.CEDAR) - (PARSE.BIN)) - (T (SHOULDNT]) - -(PARSE.DEFINITIONS - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* (definitions DEFINITIONS) *) - (PARSE.BIN]) - -(PARSE.DEFBODY - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG NIL (* (defbody BEGIN open declist END) - (defbody BEGIN open declist ; - END) (defbody { open declist }) - (defbody { open declist ; - }) *) - (PARSE.BIN '(BEGIN {)) - (BUILD.PUSH.SCOPE) - (BUILD.STORE.OPEN (PARSE.OPEN)) - (PARSE.DECLIST) - (BUILD.POP.SCOPE) - (BUILD.GC.SCOPE) - (COND - ((EQ PARSE.ATOM ';) - (PARSE.BIN))) - (PARSE.BIN '(END }]) - -(PARSE.LOCKS - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG NIL (* (locks LOCKS primary lambda) - (locks) *) - (COND - ((EQ PARSE.ATOM 'LOCKS) - (PARSE.BIN) - (PARSE.PRIMARY) - (PARSE.LAMBDA]) - -(PARSE.LAMBDA - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (IDENT TYPEEXP) (* (lambda USING ident typeexp) - (lambda) *) - (COND - ((EQ PARSE.ATOM 'USING) - (PARSE.BIN) - (SETQ IDENT (PARSE.IDENT)) - (SETQ TYPEEXP (PARSE.TYPEEXP)) - (BUILD.INITIALIZE.VAR IDENT TYPEEXP NIL BUILD.CURRENT.SCOPE]) - -(PARSE.MODULEITEM - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (ID1 ID2) (* (moduleitem id) (moduleitem id %: - id) *) - (SETQ ID1 (PARSE.BIN 'ID)) - [COND - ((EQ PARSE.ATOM '%:) - (PARSE.BIN) - (SETQ ID2 (PARSE.BIN 'ID)) - (PUTPROP ID1 'MESA.ABBREVIATES 'ID2] - (RETURN ID1]) - -(PARSE.DECLARATION - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (IDENTLIST TYPEEXP INITIALIZATION DEFAULT OPTSIZE ANSWER) - (* (declaration identlist public entry - readonly typeexp initialization) - (declaration identlist public TYPE - tilde public typeexp default) - (declaration identlist public TYPE - optsize) *) - - (* In MESA, tilde must be =. This is handled by PARSE.TILDE. - *) - - (SETQ IDENTLIST (PARSE.IDENTLIST)) - (BUILD.STORE.IDENTLIST IDENTLIST) - (PARSE.PUBLIC) - [COND - ((NOT (EQ PARSE.ATOM 'TYPE)) - (PARSE.ENTRY) - (PARSE.READONLY) - (SETQ TYPEEXP (PARSE.TYPEEXP)) - (SETQ INITIALIZATION (PARSE.INITIALIZATION)) - (SETQ ANSWER (BUILD.INITIALIZATION IDENTLIST TYPEEXP INITIALIZATION))) - (T (PARSE.BIN 'TYPE) - (COND - ([OR (EQ PARSE.ATOM '=) - (AND (EQ PARSE.LANGUAGE 'CEDAR) - (EQ PARSE.ATOM '~] - (PARSE.TILDE) - (PARSE.PUBLIC) - (SETQ TYPEEXP (PARSE.TYPEEXP)) - (SETQ DEFAULT (PARSE.DEFAULT)) - (BUILD.TYPE IDENTLIST TYPEEXP DEFAULT)) - (T (SETQ OPTSIZE (PARSE.OPTSIZE)) - - (* I think this means MESA/CEDAR is to treat declared id as a type, but no - declaration of id is given in this file. - *) - - ] - (BUILD.STORE.IDENTLIST NIL) - (RETURN ANSWER]) - -(PARSE.PUBLIC - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* (public PUBLIC) (public PRIVATE) - (public) *) - (COND - ((MEMB PARSE.ATOM '(PUBLIC PRIVATE)) - (PARSE.BIN]) - -(PARSE.ENTRY - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* (entry ENTRY) (entry INTERNAL) - (entry) *) - (COND - ((MEMB PARSE.ATOM '(ENTRY INTERNAL)) - (PARSE.BIN]) - -(PARSE.IDLIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* (idlist' id) (idlist' id %, idlist') - *) - (PROG (IDS ANSWER) - (push IDS (PARSE.BIN 'ID)) - [while (EQ PARSE.ATOM '%,) do (PARSE.BIN) - (push IDS (PARSE.BIN 'ID] - (SETQ ANSWER (DREVERSE IDS)) - (RETURN ANSWER]) - -(PARSE.IDENTLIST - [LAMBDA (KIND) (* kbr%: "25-Nov-85 12:47") - (* (identlist' id %:) - (identlist' id position %:) - (identlist' id %, identlist') - (identlist' id position %, identlist') - *) - (PROG (IDS TYPEITEMS ANSWER) - LOOP - (COND - ((AND (EQ KIND 'FIELDLIST) - (PARSE.TYPEEXP.HERE)) - - (* Thought we we're parsing a pairlist, but now we learn we are in a typelist. - *) - - (SETQ TYPEITEMS (fetch (TYPELIST ITEMS) of (PARSE.TYPELIST))) - (GO TYPELIST))) - (push IDS (PARSE.BIN 'ID)) - (COND - ((EQ PARSE.ATOM '%() - (PARSE.POSITION))) - (COND - ((EQ PARSE.ATOM '%,) - (PARSE.BIN) - (GO LOOP)) - (T (GO EXIT))) - (GO LOOP) - EXIT - (COND - ((NOT (EQ PARSE.ATOM '%:)) - (GO TYPELIST))) - (PARSE.BIN '%:) - (SETQ ANSWER (DREVERSE IDS)) - (RETURN ANSWER) - TYPELIST - (SETQ ANSWER (create TYPELIST - ITEMS _ (NCONC (DREVERSE IDS) - TYPEITEMS))) - (RETURN ANSWER]) - -(PARSE.POSITION - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (EXP OPTBITS ANSWER) (* (position %( exp optbits %)) *) - (PARSE.BIN '%() - (SETQ EXP (PARSE.EXP)) - (SETQ OPTBITS (PARSE.OPTBITS)) - (PARSE.BIN '%)) - (SETQ ANSWER (LIST 'position EXP OPTBITS)) - (RETURN ANSWER]) - -(PARSE.OPTBITS - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* (optbits %: bounds) - (optbits) *) - (COND - ((EQ PARSE.ATOM '%:) - (PARSE.BIN '%:) - (PARSE.BOUNDS]) - -(PARSE.INTERVAL - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (KIND BOUNDS ANSWER) (* (interval %[ bounds %]) - (interval %[ bounds %)) - (interval %( bounds %]) - (interval %( bounds %)) *) - (SELECTQ PARSE.ATOM - (%[ (PARSE.BIN) - (SETQ BOUNDS (PARSE.BOUNDS)) - (SELECTQ PARSE.ATOM - (%] (SETQ KIND 'CC)) - (%) (SETQ KIND 'CO)) - (SHOULDNT)) - (PARSE.BIN)) - (%( (PARSE.BIN) - (SETQ BOUNDS (PARSE.BOUNDS)) - (SELECTQ PARSE.ATOM - (%] (SETQ KIND 'OC)) - (%) (SETQ KIND 'OO)) - (SHOULDNT)) - (PARSE.BIN)) - (SHOULDNT)) - (SETQ ANSWER (create MINTERVAL - KIND _ KIND - BOUNDS _ BOUNDS)) - (RETURN ANSWER]) - -(PARSE.TYPEEXP.HERE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - NIL]) - -(PARSE.TYPEEXP - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (ANSWER) (* (typeexp id) (typeexp typeid) - (typeexp typecons)) - [COND - [(EQ PARSE.CLASS 'ID) - (SETQ ANSWER (PARSE.BIN)) - [COND - ((NOT (FMEMB PARSE.ATOM PARSE.TYPEEXP.FOLLOW)) - (SETQ ANSWER (PARSE.TYPEID.CONT ANSWER))) - (T (SETQ ANSWER (BUILD.TYPEID NIL ANSWER] - (COND - ((NOT (FMEMB PARSE.ATOM PARSE.TYPEEXP.FOLLOW)) - (SETQ ANSWER (PARSE.TYPECONS.CONT ANSWER] - (T (SETQ ANSWER (PARSE.TYPECONS] - (RETURN ANSWER]) - -(PARSE.RANGE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (TYPE INTERVAL ANSWER) (* (range id) (range id interval) - (range typeid interval) - (range interval) (range typeid) *) - [COND - ((FMEMB PARSE.ATOM PARSE.INTERVAL.FIRST) - (SETQ TYPE 'CARDINAL) - (SETQ INTERVAL (PARSE.INTERVAL))) - ((FMEMB PARSE.ATOM2 PARSE.RANGE.FOLLOW) - - (* This case occurs if TYPE itself is a range type. - *) - - [SETQ TYPE (BUILD.TYPEID NIL (PARSE.BIN 'ID] - (RETURN TYPE)) - ((FMEMB PARSE.ATOM2 PARSE.INTERVAL.FIRST) - [SETQ TYPE (BUILD.TYPEID NIL (PARSE.BIN 'ID] - (SETQ INTERVAL (PARSE.INTERVAL))) - (T (SETQ TYPE (PARSE.TYPEID)) - (COND - ((FMEMB PARSE.ATOM PARSE.INTERVAL.FIRST) - (SETQ INTERVAL (PARSE.INTERVAL] - (SETQ ANSWER (create MRANGE - TYPE _ TYPE - INTERVAL _ INTERVAL)) - (RETURN ANSWER]) - -(PARSE.TYPEAPPL - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG NIL (* (typeappl typeappl %. - id) (typeappl id length) - (typeappl typeid length) - (typeappl typeappl length) *) - (BREAK1 NIL T]) - -(PARSE.TYPEAPPL.CONT - [LAMBDA (TYPEAPPL) (* kbr%: "25-Nov-85 12:47") - (PROG (ID LENGTH ANSWER) - (SETQ ANSWER TYPEAPPL) - [while (FMEMB PARSE.ATOM '(%. %[)) do (COND - ((EQ PARSE.ATOM '%.) - (PARSE.BIN) - (SETQ ID (PARSE.BIN 'ID)) - (SETQ ANSWER (LIST ANSWER ID))) - (T (SETQ LENGTH (PARSE.LENGTH)) - (SETQ ANSWER (LIST ANSWER LENGTH] - (RETURN ANSWER]) - -(PARSE.TYPEID - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PARSE.TYPEID.CONT (PARSE.BIN 'ID]) - -(PARSE.TYPEID.CONT - [LAMBDA (ID) (* kbr%: "25-Nov-85 12:47") - (PROG (INTERFACE ANSWER) (* (typeid' id %. id) - (typeid' typeid' %. id) - (typeid id id) (typeid id typeid) - (typeid typeid') *) - (* Should be ID+{.ID}* *) - (while (EQ PARSE.CLASS 'ID) do (BREAK1 NIL T) - (SETQ ID (PARSE.BIN))) - [COND - ((EQ PARSE.ATOM '%.) - (SETQ INTERFACE ID) - (PARSE.BIN) - (SETQ ID (PARSE.BIN 'ID] - (SETQ ANSWER (BUILD.TYPEID INTERFACE ID)) - (RETURN ANSWER]) - -(PARSE.TYPECONS - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (COND - ((EQ PARSE.CLASS 'ID) - (PARSE.TYPECONS1)) - (T (PARSE.TYPECONS2]) - -(PARSE.TYPECONS1 - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* TYPECONS begining with ID token. - *) - (PROG (TYPEID ANSWER) (* BOTH (typecons id interval) - (typecons typeid interval) - (typecons id RELATIVE typeexp) - (typecons typeid RELATIVE typeexp) - (typecons typeappl) *) - (* CEDAR (typecons id PAINTED typeexp) - (typecons typeid PAINTED typeexp) *) - (* Get id or typeid. - *) - (SETQ TYPEID (PARSE.BIN 'ID)) - [COND - ((NOT (FMEMB PARSE.ATOM PARSE.TYPEEXP.FOLLOW)) - (SETQ TYPEID (PARSE.TYPEID.CONT TYPEID))) - (T (SETQ TYPEID (BUILD.TYPEID NIL TYPEID] (* Finish typecons. *) - (SETQ ANSWER (PARSE.TYPECONS.CONT TYPEID)) - (RETURN ANSWER]) - -(PARSE.TYPECONS.CONT - [LAMBDA (TYPEID) (* kbr%: "25-Nov-85 12:47") - (* ; - "TYPEID is an id or typeid. Finish typecons.") - (PROG (INTERVAL TYPEEXP EXP1 EXP2 KIND ANSWER) - - (* ;; "BOTH (typecons id interval) (typecons typeid interval) (typecons id RELATIVE typeexp) (typecons typeid RELATIVE typeexp) (typecons typeappl) ") - - (* ;; "CEDAR (typecons id PAINTED typeexp) (typecons typeid PAINTED typeexp) *") - - (COND - ((EQ PARSE.ATOM 'RELATIVE) - (SETQ ANSWER (PARSE.TYPECONS.RELATIVE))) - ((EQ PARSE.ATOM 'PAINTED) - (SETQ ANSWER (PARSE.TYPECONS.PAINTED))) - ((EQ PARSE.ATOM '%() - (PARSE.TYPECONS.RANGE TYPEID)) - [(EQ PARSE.ATOM '%[) (* ; - "This can be the start of a length or of an interval. Can't tell with bounded look ahead. ") - (PARSE.BIN '%[) - (SETQ EXP1 (PARSE.EXP)) - (COND - ((EQ PARSE.ATOM '|..|) (* ; "Interval. ") - (PARSE.BIN '|..|) - (SETQ EXP2 (PARSE.EXP)) - [COND - ((EQ PARSE.ATOM '%)) - (PARSE.BIN '%)) - (SETQ KIND 'CO)) - (T (PARSE.BIN '%]) - (SETQ KIND 'CC] - (SETQ INTERVAL (create MINTERVAL - KIND _ KIND - BOUNDS _ (LIST EXP1 EXP2))) - (SETQ ANSWER (create MRANGE - TYPE _ TYPEID - INTERVAL _ INTERVAL))) - (T (* ; "Length. *") - (PARSE.BIN '%]) - (SETQ ANSWER (LIST TYPEID EXP1)) - (SETQ ANSWER (PARSE.TYPEAPPL.CONT ANSWER] - (T (SHOULDNT))) - (RETURN ANSWER]) - -(PARSE.TYPECONS.RANGE - [LAMBDA (TYPEID) (* kbr%: "25-Nov-85 12:47") - (PROG (INTERVAL ANSWER) - (SETQ INTERVAL (PARSE.INTERVAL)) - (SETQ ANSWER (create MRANGE - TYPE _ TYPEID - INTERVAL _ INTERVAL)) - (RETURN ANSWER]) - -(PARSE.TYPECONS.RELATIVE - [LAMBDA (TYPEID) (* kbr%: "25-Nov-85 12:47") - (PROG (TYPE ANSWER) - (PARSE.BIN 'RELATIVE) - (SETQ TYPE (PARSE.TYPEEXP)) - (SETQ ANSWER (create MRELATIVE - TYPEID _ TYPEID - TYPE _ TYPE)) - (RETURN ANSWER]) - -(PARSE.TYPECONS.PAINTED - [LAMBDA (TYPEID) (* kbr%: "25-Nov-85 12:47") - (PROG (TYPE ANSWER) - (PARSE.THISIS.CEDAR) - (PARSE.BIN 'RELATIVE) - (SETQ TYPE (PARSE.TYPEEXP)) - (SETQ ANSWER (create MPAINTED - TYPEID _ TYPEID - TYPE _ TYPE)) - (RETURN ANSWER]) - -(PARSE.TYPECONS2 - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* TYPECONS begining with reserved - word. *) - (PROG (ANSWER) - - (* BOTH (typecons interval) (typecons dependent { elementlist }) - (typecons dependent monitored RECORD reclist) - (typecons ordered base pointertype) (typecons VAR typeexp) - (typecons packed ARRAY indextype OF typeexp) - (typecons DESCRIPTOR FOR readonly typeexp) - (typecons safe transfermode arguments) (typecons heap ZONE) - (typecons LONG typeexp) (typecons FRAME %[ id %]) *) - (* CEDAR (typecons REF readonly - typeexp) (typecons REF readonly ANY) - (typecons REF) (typecons LIST OF - readonly typeexp) *) - [SETQ ANSWER (COND - ((FMEMB PARSE.ATOM PARSE.INTERVAL.FIRST) - (PARSE.TYPECONS.INTERVAL)) - (T (SELECTQ PARSE.ATOM - ((MACHINE MONITORED RECORD {) - (PARSE.TYPECONS.DEPENDENT)) - ((ORDERED BASE POINTER) - (PARSE.TYPECONS.ORDERED)) - (VAR (PARSE.TYPECONS.VAR)) - ((PACKED ARRAY) - (PARSE.TYPECONS.PACKED)) - (DESCRIPTOR (PARSE.TYPECONS.DESCRIPTOR)) - ((SAFE ERROR PORT PROC PROCEDURE PROCESS PROGRAM SIGNAL) - (PARSE.TYPECONS.SAFE)) - (UNCOUNTED (PARSE.TYPECONS.HEAP)) - (LONG (PARSE.TYPECONS.LONG)) - (FRAME (PARSE.TYPECONS.FRAME)) - (REF (PARSE.TYPECONS.REF)) - (LIST (PARSE.TYPECONS.LIST)) - (SHOULDNT] - (RETURN ANSWER]) - -(PARSE.TYPECONS.INTERVAL - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (ANSWER) (* (typecons interval) *) - (SETQ ANSWER (create MRANGE - TYPE _ 'CARDINAL - INTERVAL _ (PARSE.INTERVAL))) - (RETURN ANSWER]) - -(PARSE.TYPECONS.DEPENDENT - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (ELEMENTLIST RECLIST ANSWER) (* (typecons dependent { elementlist }) - (typecons dependent monitored RECORD - reclist) *) - (PARSE.DEPENDENT) - [SETQ ANSWER (COND - ((EQ PARSE.ATOM '{) - (PARSE.TYPECONS.ENUMERATED)) - (T (PARSE.TYPECONS.RECORD] - (RETURN ANSWER]) - -(PARSE.TYPECONS.ENUMERATED - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (ITEMS ANSWER) - (PARSE.BIN) - (SETQ ITEMS (PARSE.ELEMENTLIST)) - (PARSE.BIN '}) - (SETQ ANSWER (create MENUMERATED - ITEMS _ ITEMS)) - (RETURN ANSWER]) - -(PARSE.TYPECONS.RECORD - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (FIELDLIST ANSWER) - (PARSE.MONITORED) - (PARSE.BIN 'RECORD) - (SETQ FIELDLIST (PARSE.RECLIST)) - (SETQ ANSWER (create MRECORD - FIELDLIST _ FIELDLIST)) - (RETURN ANSWER]) - -(PARSE.TYPECONS.ORDERED - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (ANSWER) (* (typecons ordered base pointertype) - *) - (PARSE.ORDERED) - (PARSE.BASE) - (SETQ ANSWER (PARSE.POINTERTYPE)) - (RETURN ANSWER]) - -(PARSE.TYPECONS.VAR - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (TYPE ANSWER) (* (typecons VAR typeexp) *) - (PARSE.BIN 'VAR) - (SETQ TYPE (PARSE.TYPEEXP)) - (SETQ ANSWER (create MVAR - TYPE _ TYPE)) - (RETURN ANSWER]) - -(PARSE.TYPECONS.PACKED - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (PACKED INDEXTYPE TYPE ANSWER) (* (typecons packed ARRAY indextype OF - typeexp) *) - (SETQ PACKED (PARSE.PACKED)) - (PARSE.BIN 'ARRAY) - (SETQ INDEXTYPE (PARSE.INDEXTYPE)) - (PARSE.BIN 'OF) - (SETQ TYPE (PARSE.TYPEEXP)) - (SETQ ANSWER (create MARRAY - INDEXTYPE _ INDEXTYPE - TYPE _ TYPE)) - (RETURN ANSWER]) - -(PARSE.TYPECONS.DESCRIPTOR - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (TYPE ANSWER) (* (typecons DESCRIPTOR FOR readonly - typeexp) *) - (PARSE.BIN 'DESCRIPTOR) - (PARSE.BIN 'FOR) - (PARSE.READONLY) - (SETQ TYPE (PARSE.TYPEEXP)) - (SETQ ANSWER (create MDESCRIPTOR - TYPE _ TYPE)) - (RETURN ANSWER]) - -(PARSE.TYPECONS.SAFE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (TRANSFERMODE) (* (typecons safe transfermode - arguments) *) - (PARSE.SAFE) - (SETQ TRANSFERMODE (PARSE.TRANSFERMODE)) - (PARSE.ARGUMENTS) - (RETURN TRANSFERMODE]) - -(PARSE.TYPECONS.HEAP - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG NIL (* (typecons heap ZONE) *) - (PARSE.HEAP) - (PARSE.BIN 'ZONE) - (RETURN 'ZONE]) - -(PARSE.TYPECONS.LONG - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (ANSWER) (* (typecons LONG typeexp) *) - (PARSE.BIN 'LONG) - (SETQ ANSWER (PARSE.TYPEEXP)) - (RETURN ANSWER]) - -(PARSE.TYPECONS.FRAME - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (ID ANSWER) (* (typecons FRAME %[ id %]) *) - (PARSE.BIN 'FRAME) - (PARSE.BIN '%[) - [SETQ ID (BUILD.ID NIL (PARSE.BIN 'ID] - (PARSE.BIN '%]) - (SETQ ANSWER (create MFRAME - ID _ ID)) - (RETURN ANSWER]) - -(PARSE.TYPECONS.REF - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (TYPE ANSWER) (* CEDAR (typecons REF readonly - typeexp) (typecons REF readonly ANY) - (typecons REF) *) - (PARSE.THISIS.CEDAR) - (PARSE.BIN 'REF) - [COND - ((FMEMB PARSE.ATOM PARSE.TYPEEXP.FOLLOW) - (SETQ TYPE 'ANY)) - (T (PARSE.READONLY) - (COND - ((EQ PARSE.ATOM 'ANY) - (PARSE.BIN) - (SETQ TYPE 'ANY)) - (T (SETQ TYPE (PARSE.TYPEEXP] - (SETQ ANSWER (create MREF - TYPE _ TYPE)) - (RETURN ANSWER]) - -(PARSE.TYPECONS.LIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (TYPE ANSWER) (* CEDAR (typecons LIST OF readonly - typeexp) *) - (PARSE.THISIS.CEDAR) - (PARSE.BIN 'LIST) - (PARSE.BIN 'OF) - (PARSE.READONLY) - (SETQ TYPE (PARSE.TYPEEXP)) - (SETQ ANSWER (create MLIST - TYPE _ TYPE)) - (RETURN ANSWER]) - -(PARSE.IDENT - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (ID) (* (ident id position %:) - (ident id %:) *) - (SETQ ID (PARSE.BIN 'ID)) - [COND - ((EQ PARSE.ATOM '%:) - (PARSE.BIN)) - (T (PARSE.POSITION) - (PARSE.BIN '%:] - (RETURN ID]) - -(PARSE.ELEMENT - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (ID EXP ANSWER) (* (element id %( exp %)) - (element %( exp %)) (element id) *) - [COND - ((NOT (EQ PARSE.ATOM '%()) - (SETQ ID (PARSE.BIN 'ID] - (COND - ((EQ PARSE.ATOM '%() - (PARSE.BIN) - (SETQ EXP (PARSE.EXP)) - (SETQ ANSWER ID) - (PARSE.BIN '%))) - (T (SETQ ANSWER ID))) - (RETURN ANSWER]) - -(PARSE.MONITORED - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* (monitored MONITORED) - (monitored) *) - (COND - ((EQ PARSE.ATOM 'MONITORED) - (PARSE.BIN]) - -(PARSE.DEPENDENT - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* (dependent MACHINE DEPENDENT) - (dependent) *) - (COND - ((EQ PARSE.ATOM 'MACHINE) - (PARSE.BIN) - (PARSE.BIN 'DEPENDENT) - 'MACHINE.DEPENDENT]) - -(PARSE.RECLIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (PAIRLIST TYPELIST VARIANTPAIR VARIANTPART DEFAULT ANSWER) - (* (reclist %[ %]) (reclist NULL) - (reclist %[ pairlist %]) - (reclist %[ typelist %]) - (reclist %[ pairlist %, variantpair %]) - (reclist %[ variantpart default %]) - (reclist %[ variantpair %]) *) - (COND - ((EQ PARSE.ATOM 'NULL) - (PARSE.BIN) - (RETURN NIL))) - (PARSE.BIN '%[) - (COND - ((EQ PARSE.ATOM '%]) - (PARSE.BIN) - (RETURN NIL))) - (COND - [(FMEMB PARSE.ATOM PARSE.VARIANTPART.FIRST) - (SETQ VARIANTPART (PARSE.VARIANTPART)) - (SETQ DEFAULT (PARSE.DEFAULT)) - (SETQ ANSWER (LIST (create PAIRITEM - TYPEEXP _ VARIANTPART - DEFAULT _ DEFAULT] - ([AND (EQ PARSE.CLASS 'ID) - (NOT (FMEMB PARSE.ATOM PARSE.PREDEFINED.TYPES)) - (FMEMB PARSE.ATOM2 '(%( %, %:] - (SETQ PAIRLIST (PARSE.PAIRLIST 'RECLIST)) - [for PAIRITEM in (fetch (PAIRLIST ITEMS) of PAIRLIST) - do (replace (PAIRITEM ID) of PAIRITEM with (BUILD.FIELDID NIL (fetch (PAIRITEM - ID) - of PAIRITEM] - (SETQ ANSWER PAIRLIST)) - (T (SETQ TYPELIST (PARSE.TYPELIST)) - (SETQ ANSWER TYPELIST))) - (PARSE.BIN '%]) - (RETURN ANSWER]) - -(PARSE.VARIANTPAIR - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (IDENTLIST PUBLIC VARIANTPART DEFAULT ANSWER) (* (variantpair identlist public - variantpart default) *) - (SETQ IDENTLIST (PARSE.IDENTLIST)) - (PARSE.PUBLIC) - (SETQ VARIANTPART (PARSE.VARIANTPART)) - (SETQ DEFAULT (PARSE.DEFAULT)) - (SETQ ANSWER (for ID in IDENTLIST - collect (create PAIRITEM - ID _ ID - TYPEEXP _ VARIANTPART - DEFAULT _ DEFAULT))) - (RETURN ANSWER]) - -(PARSE.PAIRITEM - [LAMBDA (KIND) (* kbr%: "25-Nov-85 12:47") - (PROG (IDENTLIST VARIANTPART TYPEEXP DEFAULT ANSWER) (* (pairitem identlist public typeexp - default) (variantpair identlist public - variantpart default) *) - (SETQ IDENTLIST (PARSE.IDENTLIST KIND)) - (COND - ((type? TYPELIST IDENTLIST) - - (* Thought we we're parsing a pairlist but found a typelist. - *) - - (RETURN IDENTLIST))) - (PARSE.PUBLIC) - [COND - ([AND (FMEMB PARSE.ATOM PARSE.VARIANTPART.FIRST) - (OR (NOT (EQ PARSE.ATOM 'PACKED)) - (NOT (EQ PARSE.ATOM2 'ARRAY] (* Variantpair. *) - (COND - ((NOT (EQ KIND 'RECLIST)) - (SHOULDNT))) - (SETQ TYPEEXP (PARSE.VARIANTPART))) - (T (* Typeexp. *) - (SETQ TYPEEXP (PARSE.TYPEEXP] - (SETQ DEFAULT (PARSE.DEFAULT)) - (SETQ ANSWER (for ID in IDENTLIST - collect (create PAIRITEM - ID _ ID - TYPEEXP _ TYPEEXP - DEFAULT _ DEFAULT))) - (RETURN ANSWER]) - -(PARSE.DEFAULTOPT - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (EXP TRASH ANSWER) (* (defaultopt TRASH) - (defaultopt NULL) (defaultopt exp %| - TRASH) (defaultopt exp %| NULL) - (defaultopt) (defaultopt exp) *) - [COND - ((FMEMB PARSE.ATOM '(TRASH NULL)) - (PARSE.BIN) - (SETQ TRASH T)) - ((NOT (FMEMB PARSE.ATOM PARSE.DEFAULTOPT.FOLLOW)) - (SETQ EXP (PARSE.EXP)) - (COND - ((EQ PARSE.ATOM '%|) - (PARSE.BIN '%|) - (COND - ((FMEMB PARSE.ATOM '(TRASH NULL)) - (PARSE.BIN) - (SETQ TRASH T] - (SETQ ANSWER (create DEFAULT - EXP _ EXP - TRASH _ TRASH)) - (RETURN ANSWER]) - -(PARSE.VARIANTPART - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (VCASEHEAD VARIANTLIST TYPEEXP ANSWER) (* (variantpart SELECT vcasehead FROM - variantlist ENDCASE) - (variantpart SELECT vcasehead FROM - variantlist %, ENDCASE) - (variantpart packed SEQUENCE vcasehead - OF typeexp) *) - [COND - ((EQ PARSE.ATOM 'SELECT) - (PARSE.BIN) - (SETQ VCASEHEAD (PARSE.VCASEHEAD)) - (PARSE.BIN 'FROM) - (SETQ VARIANTLIST (PARSE.VARIANTLIST)) - (COND - ((EQ PARSE.ATOM '%,) - (PARSE.BIN))) - (PARSE.BIN 'ENDCASE) - (SETQ ANSWER (LIST 'SELECT VCASEHEAD VARIANTLIST))) - (T (SETQ PACKED (PARSE.PACKED)) - (PARSE.BIN 'SEQUENCE) - (SETQ VCASEHEAD (PARSE.VCASEHEAD)) - (PARSE.BIN 'OF) - (SETQ TYPEEXP (PARSE.TYPEEXP)) - (SETQ ANSWER (LIST 'SEQUENCE VCASEHEAD TYPEEXP] - (RETURN ANSWER]) - -(PARSE.VCASEHEAD - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (IDENT PUBLIC TAGTYPE ANSWER) (* (vcasehead ident public tagtype) - (vcasehead COMPUTED tagtype) - (vcasehead OVERLAID tagtype) *) - [COND - ([NOT (FMEMB PARSE.ATOM '(COMPUTED OVERLAID] - (SETQ IDENT (PARSE.IDENT)) - (SETQ PUBLIC (PARSE.PUBLIC)) - (SETQ TAGTYPE (PARSE.TAGTYPE)) - (SETQ ANSWER (LIST 'vcasehead IDENT PUBLIC TAGTYPE))) - (T (SETQ ANSWER (LIST 'vcasehead (PARSE.BIN) - (PARSE.TAGTYPE] - (RETURN ANSWER]) - -(PARSE.TAGTYPE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* (tagtype *) (tagtype typeexp) *) - (COND - ((EQ PARSE.ATOM '*) - (PARSE.BIN)) - (T (PARSE.TYPEEXP]) - -(PARSE.VARIANTITEM - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (IDLIST RECLIST ANSWER) (* (variantitem idlist => reclist) *) - (SETQ IDLIST (PARSE.IDLIST)) - (PARSE.BIN '=>) - (SETQ RECLIST (PARSE.RECLIST)) - (SETQ ANSWER (LIST 'variantitem IDLIST RECLIST)) - (RETURN ANSWER]) - -(PARSE.TYPELIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (TYPEITEMS ANSWER) (* (typelist typecons default) - (typelist typeid default) - (typelist id) (typelist id _ - defaultopt) (typelist typecons default - %, typelist) (typelist typeid default - %, typelist) (typelist id %, typelist) - (typelist id _ defaultopt %, typelist) - *) - (push TYPEITEMS (PARSE.TYPEITEM)) - (while (EQ PARSE.ATOM '%,) do (PARSE.BIN) - (push TYPEITEMS (PARSE.TYPEITEM))) - (SETQ ANSWER (create TYPELIST - ITEMS _ (DREVERSE TYPEITEMS))) - (RETURN ANSWER]) - -(PARSE.TYPEITEM - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (TYPEEXP DEFAULT ANSWER) - (SETQ TYPEEXP (PARSE.TYPEEXP)) - [COND - ((NOT (LITATOM TYPEEXP)) - (SETQ DEFAULT (PARSE.DEFAULT))) - ((EQ PARSE.ATOM '_) - (SETQ DEFAULT (PARSE.DEFAULTOPT] - (SETQ ANSWER (create TYPEITEM - TYPEEXP _ TYPEEXP - DEFAULT _ DEFAULT)) - (RETURN ANSWER]) - -(PARSE.POINTERTYPE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (TYPE ANSWER) (* (pointertype pointerprefix) - (pointertype pointerprefix TO readonly - typeexp) *) - (PARSE.POINTERPREFIX) - [COND - ((EQ PARSE.ATOM 'TO) - (PARSE.BIN) - (PARSE.READONLY) - (SETQ TYPE (PARSE.TYPEEXP))) - (T (SETQ TYPE 'UNSPECIFIED] - (SETQ ANSWER (create MPOINTER - TYPE _ TYPE)) - (RETURN ANSWER]) - -(PARSE.TRANSFERMODE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* (transfermode PROCEDURE) - (transfermode PROC) (transfermode PORT) - (transfermode SIGNAL) - (transfermode ERROR) - (transfermode PROCESS) - (transfermode PROGRAM) *) - (PROG NIL - (PARSE.BIN) - (RETURN 'PROC]) - -(PARSE.INITIALIZATION - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (ANSWER) (* (initialization) (initialization _ - initvalue) (initialization tilde - initvalue) *) - (* In MESA tilde must be =. - *) - [COND - ([OR (FMEMB PARSE.ATOM '(_ =)) - (AND (EQ PARSE.LANGUAGE 'CEDAR) - (EQ PARSE.ATOM '~] - (PARSE.BIN) - (SETQ ANSWER (PARSE.INITVALUE] - (RETURN ANSWER]) - -(PARSE.INITVALUE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (INLINE BLOCK CODELIST EXP ANSWER) (* (initvalue procaccess trusted - checked inline block) - (initvalue CODE) (initvalue procaccess - trusted checked MACHINE CODE BEGIN - codelist END) (initvalue procaccess - trusted checked MACHINE CODE { - codelist }) (initvalue TRASH) - (initvalue NULL) (initvalue exp) *) - [COND - ((FMEMB PARSE.ATOM '(CODE TRASH NULL)) - (PARSE.BIN) - (SETQ ANSWER 'TRASH)) - (T (PARSE.CHECKED) - (COND - ((FMEMB PARSE.ATOM '(INLINE BEGIN {)) - (SETQ INLINE (PARSE.INLINE)) - (SETQ BLOCK (PARSE.BLOCK)) - (SETQ ANSWER BLOCK)) - ((EQ PARSE.ATOM 'MACHINE) - (PARSE.BIN) - (PARSE.BIN 'CODE) - (PARSE.BIN '(BEGIN {)) - (SETQ CODELIST (PARSE.CODELIST)) - (PARSE.BIN '(END })) - (SETQ ANSWER CODELIST)) - (T (SETQ EXP (PARSE.EXP)) - (SETQ ANSWER EXP] - (RETURN ANSWER]) - -(PARSE.CHECKED - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* BOTH (checked) *) - (* CEDAR (checked CHECKED) - (checked TRUSTED) (checked UNCHECKED) - *) - (COND - ((FMEMB PARSE.ATOM '(CHECKED TRUSTED UNCHECKED)) - (PARSE.THISIS.CEDAR) - (PARSE.BIN]) - -(PARSE.CODELIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG NIL (* (codelist orderlist) - (codelist codelist ; - orderlist) *) - (BREAK1 NIL T]) - -(PARSE.STATEMENT - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (COND - ((FMEMB PARSE.CLASS '(ID %()) - (PARSE.STATEMENT1)) - (T (PARSE.STATEMENT2]) - -(PARSE.STATEMENT1 - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (LHS EXP OPTCATCH ANSWER) (* (statement lhs) (statement lhs _ - exp) (statement free %[ exp optcatch - %]) (statement lhs _ STATE) *) - (SETQ LHS (PARSE.LHS)) - (COND - ((AND (EQ PARSE.ATOM '%.) - (EQ PARSE.ATOM2 'FREE)) - (PARSE.BIN) - (PARSE.BIN) - (PARSE.BIN '%[) - (SETQ EXP (PARSE.EXP)) - (SETQ OPTCATCH (PARSE.OPTCATCH)) - (PARSE.BIN '%]) - (SETQ ANSWER (LIST LHS EXP OPTCATCH))) - ((AND (EQ PARSE.ATOM '_) - (EQ PARSE.ATOM2 'STATE)) - (PARSE.BIN) - (PARSE.BIN) - (SETQ ANSWER LHS)) - ((EQ PARSE.ATOM '_) - (PARSE.BIN) - (SETQ EXP (PARSE.EXP)) - (SETQ ANSWER (BUILD.SETQ LHS EXP))) - (T (SETQ ANSWER LHS))) - (RETURN ANSWER]) - -(PARSE.STATEMENT2 - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (ANSWER) - - (* (statement %[ explist %] _ exp) (statement trusted checked block) - (statement IF exp THEN statement elsepart) - (statement casehead casestmtlist ENDCASE otherpart) - (statement forclause dotest DO scope doexit ENDLOOP) - (statement EXIT) (statement LOOP) (statement GOTO id) - (statement GO TO id) (statement RETURN optargs) - (statement transfer lhs) (statement WAIT lhs) - (statement ERROR) (statement STOP) (statement NULL) - (statement RESUME optargs) (statement REJECT) - (statement CONTINUE) (statement RETRY) *) - - [SETQ ANSWER (COND - ((FMEMB PARSE.ATOM PARSE.CASEHEAD.FIRST) - (PARSE.STATEMENT.CASEHEAD)) - ((OR (FMEMB PARSE.ATOM PARSE.FORCLAUSE.FIRST) - (FMEMB PARSE.ATOM PARSE.DOTEST.FIRST) - (EQ PARSE.ATOM 'DO)) - (PARSE.STATEMENT.FORCLAUSE)) - ([AND (EQ PARSE.ATOM 'RETURN) - (NOT (EQ PARSE.ATOM2 'WITH] - - (* Don't confuse statement RETURN with the transfer RETURN WITH. - *) - - (PARSE.STATEMENT.RETURN)) - ((FMEMB PARSE.ATOM PARSE.TRANSFER.FIRST) - (PARSE.STATEMENT.TRANSFER)) - (T (SELECTQ PARSE.ATOM - (%[ (PARSE.STATEMENT.LBRACKET)) - (({ BEGIN CHECKED TRUSTED UNCHECKED) - (PARSE.CHECKED) - (PARSE.BLOCK)) - (IF (PARSE.STATEMENT.IF)) - (EXIT (PARSE.BIN) - '(RETURN)) - (LOOP (PARSE.BIN) - '(GO LOOP)) - (GOTO (PARSE.BIN) - (LIST 'GO (PARSE.BIN 'ID))) - (GO (PARSE.BIN) - (PARSE.BIN 'TO) - (LIST 'GO (PARSE.BIN 'ID))) - (WAIT (PARSE.BIN) - (PARSE.LHS)) - (ERROR (PARSE.BIN) - '(SHOULDNT)) - (STOP (PARSE.BIN) - '(GO STOP)) - (NULL (PARSE.BIN) - NIL) - (RESUME (PARSE.BIN) - (PARSE.OPTARGS)) - (REJECT (PARSE.BIN) - '(SHOULDNT)) - (CONTINUE (PARSE.BIN) - '(GO CONTINUE)) - (RETRY (PARSE.BIN) - '(GO RETRY)) - (SHOULDNT] - (RETURN ANSWER]) - -(PARSE.STATEMENT.CASEHEAD - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (CASEHEAD CASESTMTLIST OTHERPART ANSWER) (* (statement casehead casestmtlist - ENDCASE otherpart) *) - (BUILD.PUSH.SCOPE) - (SETQ CASEHEAD (PARSE.CASEHEAD)) - (SETQ CASESTMTLIST (PARSE.CASESTMTLIST CASEHEAD)) - (PARSE.BIN 'ENDCASE) - (SETQ OTHERPART (PARSE.OTHERPART)) - (SETQ ANSWER (BUILD.SELECTQ CASEHEAD CASESTMTLIST OTHERPART)) - (COND - ((fetch (CASEHEAD ID) of CASEHEAD) - (BUILD.INITIALIZE.VAR (fetch (CASEHEAD ID) of CASEHEAD) - NIL - (fetch (CASEHEAD EXP) of CASEHEAD) - BUILD.CURRENT.SCOPE))) - (SETQ ANSWER (BUILD.PROG (LIST ANSWER))) - (BUILD.POP.SCOPE) - (RETURN ANSWER]) - -(PARSE.STATEMENT.FORCLAUSE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (FORCLAUSE DOTEST SCOPE DOEXIT EXITLIST STATEMENT ANSWER) - (* (statement forclause dotest DO - scope doexit ENDLOOP) *) - (BUILD.STORE.IDENTLIST '(DO)) - (BUILD.PUSH.SCOPE) - (SETQ FORCLAUSE (PARSE.FORCLAUSE)) - (SETQ DOTEST (PARSE.DOTEST)) - (PARSE.BIN 'DO) - (SETQ SCOPE (PARSE.SCOPE)) - (SETQ DOEXIT (PARSE.DOEXIT)) - (SETQ EXITLIST (CAR DOEXIT)) - (SETQ STATEMENT (CADR DOEXIT)) - (PARSE.BIN 'ENDLOOP) - (BUILD.POP.SCOPE) - [SETQ ANSWER `(,@FORCLAUSE ,@DOTEST do ,@(BUILD.TAIL SCOPE] - [COND - (STATEMENT (SETQ ANSWER `(,@ANSWER finally ,@(BUILD.TAIL STATEMENT] - [COND - (EXITLIST (SETQ ANSWER (BUILD.PROGN (CONS ANSWER EXITLIST] - (RETURN ANSWER]) - -(PARSE.STATEMENT.RETURN - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (OPTARGS ANSWER) (* (statement RETURN optargs) *) - (PARSE.BIN 'RETURN) - (SETQ OPTARGS (PARSE.OPTARGS)) - (SETQ ANSWER (BUILD.RETURN OPTARGS)) - (RETURN ANSWER]) - -(PARSE.STATEMENT.TRANSFER - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (TRANSFER LHS ANSWER) (* (statement transfer lhs) *) - (SETQ TRANSFER (PARSE.TRANSFER)) - (SETQ LHS (PARSE.LHS)) - [SETQ ANSWER `(SHOULDNT ',LHS] - (RETURN ANSWER]) - -(PARSE.STATEMENT.LBRACKET - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (EXPLIST EXP ANSWER) (* (statement %[ explist %] _ exp) *) - (PARSE.BIN '%[) - (SETQ EXPLIST (PARSE.EXPLIST)) - (PARSE.BIN '%]) - (PARSE.BIN '_) - (SETQ EXP (PARSE.EXP)) - (SETQ ANSWER (BUILD.SETQ EXPLIST EXP)) - (RETURN ANSWER]) - -(PARSE.STATEMENT.IF - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (EXP STATEMENT ELSEPART HEAD TAIL ANSWER) (* (statement IF exp THEN statement - elsepart) *) - (PARSE.BIN 'IF) - (SETQ EXP (PARSE.EXP)) - (PARSE.BIN 'THEN) - (SETQ STATEMENT (PARSE.STATEMENT)) - (SETQ ELSEPART (PARSE.ELSEPART)) - (SETQ ANSWER (BUILD.COND EXP STATEMENT ELSEPART)) - (RETURN ANSWER]) - -(PARSE.BLOCK - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (SCOPE EXITS ANSWER) (* (block BEGIN scope exits END) - (block { scope exits }) *) - (BUILD.PUSH.SCOPE) - (PARSE.BIN '(BEGIN {)) - (SETQ SCOPE (PARSE.SCOPE)) - (SETQ EXITS (PARSE.EXITS)) - (PARSE.BIN '(END })) - (BUILD.POP.SCOPE) - (SETQ ANSWER (APPEND SCOPE EXITS)) - (RETURN ANSWER]) - -(PARSE.SCOPE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (STATEMENTLIST ANSWER) (* (scope open enables statementlist) - (scope open enables declist ; - statementlist) *) - (BUILD.STORE.OPEN (PARSE.OPEN)) - (PARSE.ENABLES) - (COND - ([AND (EQ PARSE.CLASS 'ID) - (FMEMB PARSE.ATOM2 '(%, %:] - (PARSE.DECLIST))) - (SETQ STATEMENTLIST (PARSE.STATEMENTLIST)) - (SETQ ANSWER (BUILD.PROG STATEMENTLIST)) - (RETURN ANSWER]) - -(PARSE.BINDITEM - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (ID EXP ANSWER) (* BOTH (binditem exp) - (binditem id %: exp) *) - (* CEDAR (binditem id ~ ~ exp) *) - [COND - ((AND (EQ PARSE.CLASS 'ID) - (EQ PARSE.ATOM2 '%:)) - (SETQ ID (PARSE.BIN)) - (PARSE.BIN)) - ((AND (EQ PARSE.LANGUAGE 'CEDAR) - (EQ PARSE.CLASS 'ID) - (EQ PARSE.ATOM2 '~)) - (SETQ ID (PARSE.BIN)) - (PARSE.BIN) - (PARSE.BIN '~] - (SETQ EXP (PARSE.EXP)) - (SETQ ANSWER (create BINDITEM - ID _ ID - EXP _ EXP)) - (RETURN ANSWER]) - -(PARSE.EXITS - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* (exits EXITS exitlist) - (exits) *) - (COND - ((EQ PARSE.ATOM 'EXITS) - (PARSE.BIN) - (PARSE.EXITLIST]) - -(PARSE.CASESTMTITEM - [LAMBDA (CASEHEAD) (* kbr%: "25-Nov-85 12:47") - (PROG (CASELABEL STATEMENT ANSWER) (* (casestmtitem caselabel => - statement) *) - (SETQ CASELABEL (PARSE.CASELABEL)) - (PARSE.BIN '=>) - (SETQ STATEMENT (PARSE.STATEMENT)) - (SETQ ANSWER (CONS CASELABEL (BUILD.TAIL STATEMENT))) - (RETURN ANSWER]) - -(PARSE.CASEEXPITEM - [LAMBDA (CASEHEAD) (* kbr%: "25-Nov-85 12:47") - (PROG (CASELABEL EXP ANSWER) (* (caseexpitem caselabel => exp) *) - (SETQ CASELABEL (PARSE.CASELABEL)) - (PARSE.BIN '=>) - (SETQ EXP (PARSE.EXP)) - (SETQ ANSWER (CONS CASELABEL (BUILD.TAIL EXP))) - (RETURN ANSWER]) - -(PARSE.EXITITEM - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (IDLIST STATEMENT ANSWER) (* (exititem idlist => statement) *) - (SETQ IDLIST (PARSE.IDLIST)) - (PARSE.BIN '=>) - (SETQ STATEMENT (PARSE.STATEMENT)) - [SETQ ANSWER (BUILD.PROGN (NCONC IDLIST (BUILD.TAIL STATEMENT] - (RETURN ANSWER]) - -(PARSE.CASETEST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (OPTRELATION EXP ANSWER) (* (casetest optrelation) - (casetest exp) *) - (COND - ((FMEMB PARSE.ATOM PARSE.OPTRELATION.FIRST) - (SETQ OPTRELATION (PARSE.OPTRELATION)) - (SETQ ANSWER OPTRELATION)) - (T (SETQ EXP (PARSE.EXP)) - (SETQ ANSWER EXP))) - (RETURN ANSWER]) - -(PARSE.CONTROLID - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (ID TYPEEXP) (* (controlid ident typeexp) - (controlid id) *) - [COND - ((FMEMB PARSE.ATOM2 PARSE.CONTROLID.FOLLOW) - (SETQ ID (PARSE.BIN 'ID)) - (SETQ TYPEEXP 'INTEGER)) - (T (SETQ ID (PARSE.IDENT)) - (SETQ TYPEEXP (PARSE.TYPEEXP] - (BUILD.INITIALIZE.VAR ID TYPEEXP NIL BUILD.CURRENT.SCOPE) - (RETURN ID]) - -(PARSE.FORCLAUSE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (CONTROLID EXP1 EXP2 DIRECTION RANGE ANSWER) (* (forclause FOR controlid _ exp %, - exp) (forclause FOR controlid - direction IN range) (forclause THROUGH - range) (forclause) *) - [COND - [(EQ PARSE.ATOM 'FOR) - (PARSE.BIN) - (SETQ CONTROLID (PARSE.CONTROLID)) - (COND - ((EQ PARSE.ATOM '_) - (PARSE.BIN) - (SETQ EXP1 (PARSE.EXP)) - (PARSE.BIN '%,) - (SETQ EXP2 (PARSE.EXP)) - (SETQ ANSWER (BUILD.FORCLAUSE.BY CONTROLID EXP1 EXP2))) - (T (SETQ DIRECTION (PARSE.DIRECTION)) - (PARSE.BIN 'IN) - (SETQ RANGE (PARSE.RANGE)) - (SETQ ANSWER (BUILD.FORCLAUSE.IN CONTROLID DIRECTION RANGE] - ((EQ PARSE.ATOM 'THROUGH) - (PARSE.BIN) - (SETQ RANGE (PARSE.RANGE)) - (SETQ ANSWER (BUILD.FORCLAUSE.THROUGH RANGE] - (RETURN ANSWER]) - -(PARSE.DIRECTION - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* (direction DECREASING) - (direction) *) - (COND - ((EQ PARSE.ATOM 'DECREASING) - (PARSE.BIN]) - -(PARSE.DOTEST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* (dotest UNTIL exp) - (dotest WHILE exp) (dotest) *) - (COND - ((EQ PARSE.ATOM 'UNTIL) - (PARSE.BIN) - (LIST 'until (PARSE.EXP))) - ((EQ PARSE.ATOM 'WHILE) - (PARSE.BIN) - (LIST 'while (PARSE.EXP]) - -(PARSE.DOEXIT - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (EXITLIST STATEMENT ANSWER) (* (doexit) (doexit REPEAT exitlist) - (doexit REPEAT exitlist FINISHED => - statement) (doexit REPEAT exitlist - FINISHED => statement ;) *) - [COND - ((EQ PARSE.ATOM 'REPEAT) - (PARSE.BIN) - (SETQ EXITLIST (PARSE.EXITLIST)) - (COND - ((EQ PARSE.ATOM 'FINISHED) - (PARSE.BIN) - (PARSE.BIN '=>) - (SETQ STATEMENT (PARSE.STATEMENT)) - (COND - ((EQ PARSE.ATOM ';) - (PARSE.BIN] - (SETQ ANSWER (LIST EXITLIST STATEMENT)) - (RETURN ANSWER]) - -(PARSE.ENABLES - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (CATCHCASE CATCHANY CATCHLIST ANSWER) (* (enables ENABLE catchcase ;) - (enables ENABLE catchany ;) - (enables ENABLE BEGIN catchlist END ;) - (enables ENABLE { catchlist } ;) - (enables) *) - [COND - ((EQ PARSE.ATOM 'ENABLE) - (PARSE.BIN) - [COND - ((EQ PARSE.ATOM 'ANY) - (SETQ CATCHANY (PARSE.CATCHANY)) - (SETQ ANSWER (LIST CATCHANY))) - ((FMEMB PARSE.ATOM '(BEGIN {)) - (PARSE.BIN) - (SETQ CATCHLIST (PARSE.CATCHLIST)) - (PARSE.BIN '(END })) - (SETQ ANSWER CATCHLIST)) - (T (SETQ CATCHCASE (PARSE.CATCHCASE)) - (SETQ ANSWER (LIST CATCHCASE] - (PARSE.BIN ';] - (RETURN ANSWER]) - -(PARSE.CATCHLIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (CATCHHEAD CATCHANY CATCHCASE ANSWER) (* (catchlist catchhead) - (catchlist catchhead catchcase) - (catchlist catchhead catchany) - (catchlist catchhead catchany ;) *) - (SETQ CATCHHEAD (PARSE.CATCHHEAD)) - [COND - ((FMEMB PARSE.ATOM PARSE.CATCHLIST.FOLLOW) - (SETQ ANSWER CATCHHEAD)) - [(EQ PARSE.ATOM 'ANY) - (SETQ CATCHANY (PARSE.CATCHANY)) - (SETQ ANSWER (NCONC1 CATCHHEAD CATCHANY)) - (COND - ((EQ PARSE.ATOM ';) - (PARSE.BIN] - (T (SETQ CATCHCASE (PARSE.CATCHCASE)) - (SETQ ANSWER (NCONC1 CATCHHEAD CATCHCASE] - (RETURN ANSWER]) - -(PARSE.CATCHCASE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (LHSLIST STATEMENT ANSWER) (* (catchcase lhslist => statement) *) - (SETQ LHSLIST (PARSE.LHSLIST)) - (PARSE.BIN '=>) - (SETQ STATEMENT (PARSE.STATEMENT)) - (SETQ ANSWER (LIST 'catchcase LHSLIST STATEMENT)) - (RETURN ANSWER]) - -(PARSE.OPTARGS - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (ANSWER) (* (optargs %[ explist %]) - (optargs) (optargs lhs) *) - [COND - ((EQ PARSE.ATOM '%[) - (PARSE.BIN '%[) - (SETQ ANSWER (PARSE.EXPLIST)) - (PARSE.BIN '%])) - ((NOT (FMEMB PARSE.ATOM PARSE.OPTARGS.FOLLOW)) - (SETQ ANSWER (LIST (PARSE.LHS] - (RETURN ANSWER]) - -(PARSE.TRANSFER - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - - (* (transfer SIGNAL) (transfer ERROR) (transfer RETURN WITH ERROR) - (transfer START) (transfer RESTART) (transfer JOIN) - (transfer NOTIFY) (transfer BROADCAST) (transfer TRANSFER WITH) - (transfer RETURN WITH) *) - - (COND - [(EQ PARSE.ATOM 'RETURN) - (PARSE.BIN) - (PARSE.BIN 'WITH) - (COND - ((EQ PARSE.ATOM 'ERROR) - 'SHOULDNT) - (T 'RETURN] - ((EQ PARSE.ATOM 'TRANSFER) - (PARSE.BIN) - (PARSE.BIN 'WITH) - 'RETURN) - (T (PARSE.BIN]) - -(PARSE.KEYITEM - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (ID OPTEXP ANSWER) (* BOTH (keyitem id %: optexp) *) - (* CEDAR (keyitem id ~ optexp) *) - (SETQ ID (PARSE.BIN 'ID)) - (COND - ((EQ PARSE.ATOM '%:) - (PARSE.BIN)) - ((AND (EQ PARSE.LANGUAGE 'CEDAR) - (EQ PARSE.ATOM '~)) - (PARSE.BIN)) - (T (SHOULDNT))) - (SETQ OPTEXP (PARSE.OPTEXP)) - (SETQ ANSWER (create KEYITEM - ID _ ID - OPTEXP _ OPTEXP)) - (RETURN ANSWER]) - -(PARSE.OPTEXP - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (ANSWER) (* (optexp TRASH) (optexp NULL) - (optexp exp) (optexp) *) - [SETQ ANSWER (COND - ((FMEMB PARSE.ATOM '(NULL TRASH)) - (PARSE.BIN) - 'TRASH) - ((FMEMB PARSE.ATOM PARSE.OPTEXP.FOLLOW) - 'TRASH) - (T (PARSE.EXP] - (RETURN ANSWER]) - -(PARSE.EXP - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (COND - ((EQ PARSE.CLASS 'ID) - (PARSE.EXP1)) - (T (PARSE.EXP2]) - -(PARSE.EXP1 - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* First token of EXP is ID. - *) - (PROG (DISJUNCT EXP ANSWER) (* (exp lhs _ exp) (exp disjunct) *) - (SETQ DISJUNCT (PARSE.DISJUNCT)) - (COND - ((EQ PARSE.ATOM '_) - (PARSE.BIN) - (SETQ EXP (PARSE.EXP)) - (SETQ ANSWER (BUILD.SETQ DISJUNCT EXP))) - (T (SETQ ANSWER DISJUNCT))) - (RETURN ANSWER]) - -(PARSE.EXP2 - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* First token of EXP is not ID. - *) - (PROG (DISJUNCT ANSWER) (* (exp transferop lhs) - (exp IF exp THEN exp ELSE exp) - (exp casehead caseexplist ENDCASE => - exp) (exp lhs _ exp) - (exp %[ explist %] _ exp) - (exp ERROR) (exp disjunct) *) - [SETQ ANSWER - (COND - ([AND (FMEMB PARSE.ATOM PARSE.TRANSFEROP.FIRST) - (OR (NOT (EQ PARSE.ATOM 'NEW)) - (NOT (EQ PARSE.ATOM2 '%[] (* Don't confuse with - (primary new %[ typeexp initialization - optcatch %]) *) - (PARSE.EXP.TRANSFEROP)) - ((EQ PARSE.ATOM 'IF) - (PARSE.EXP.IF)) - ((FMEMB PARSE.ATOM PARSE.CASEHEAD.FIRST) - (PARSE.EXP.CASEHEAD)) - ((EQ PARSE.ATOM) - (PARSE.EXP.LBRACKET '%[)) - ((EQ PARSE.ATOM 'ERROR) - (PARSE.EXP.ERROR)) - ((NUMBERP PARSE.ATOM) - (PARSE.EXP.DISJUNCT)) - ((STRINGP PARSE.ATOM) - (PARSE.EXP.DISJUNCT)) - ((FMEMB PARSE.ATOM - '(ABS ALL BASE DESCRIPTOR FIRST ISTYPE LAST LENGTH LONG MAX MIN NILL NOT ORD - PRED SIZE SUCC VAL + - @ %[)) - (PARSE.EXP.DISJUNCT)) - (T (PROGN (SETQ DISJUNCT (PARSE.EXP.DISJUNCT)) - (COND - ((EQ PARSE.ATOM '_) - (PARSE.BIN) - (BUILD.SETQ DISJUNCT (PARSE.EXP))) - (T DISJUNCT] - (RETURN ANSWER]) - -(PARSE.EXP.TRANSFEROP - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (TRANSFEROP LHS ANSWER) (* (exp transferop lhs) *) - (SETQ TRANSFEROP (PARSE.TRANSFEROP)) - (SETQ LHS (PARSE.LHS)) - [SETQ ANSWER `(SHOULDNT ',LHS] - (RETURN ANSWER]) - -(PARSE.EXP.IF - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (EXP1 EXP2 EXP3 ANSWER) (* (exp IF exp THEN exp ELSE exp) *) - (PARSE.BIN 'IF) - (SETQ EXP1 (PARSE.EXP)) - (PARSE.BIN 'THEN) - (SETQ EXP2 (PARSE.EXP)) - (PARSE.BIN 'ELSE) - (SETQ EXP3 (PARSE.EXP)) - (SETQ ANSWER (BUILD.COND EXP1 EXP2 EXP3)) - (RETURN ANSWER]) - -(PARSE.EXP.CASEHEAD - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (CASEHEAD CASEEXPLIST EXP ANSWER) (* (exp casehead caseexplist ENDCASE - => exp) *) - (SETQ CASEHEAD (PARSE.CASEHEAD)) - (SETQ CASEEXPLIST (PARSE.CASEEXPLIST)) - (PARSE.BIN 'ENDCASE) - (PARSE.BIN '=>) - (SETQ EXP (PARSE.EXP)) - (SETQ ANSWER (BUILD.SELECTQ CASEHEAD CASEEXPLIST EXP)) - (RETURN ANSWER]) - -(PARSE.EXP.LHS - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (LHS EXP ANSWER) (* (exp lhs _ exp) *) - (SETQ LHS (PARSE.LHS)) - (PARSE.BIN '_) - (SETQ EXP (PARSE.EXP)) - [SETQ ANSWER `(SETQ ,LHS ,EXP] - (RETURN ANSWER]) - -(PARSE.EXP.LBRACKET - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (EXPLIST EXP ANSWER) (* (exp %[ explist %] _ exp) *) - (PARSE.BIN '%[) - (SETQ EXPLIST (PARSE.EXPLIST)) - (PARSE.BIN '%]) - (PARSE.BIN '_) - (SETQ EXP (PARSE.EXP)) - [SETQ ANSWER `(SETQ ,EXPLIST ,EXP] - (RETURN ANSWER]) - -(PARSE.EXP.ERROR - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* (exp ERROR) *) - (PARSE.BIN 'ERROR) - '(SHOULDNT]) - -(PARSE.EXP.DISJUNCT - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* (exp disjunct) *) - (PARSE.DISJUNCT]) - -(PARSE.DISJUNCT - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (CONJUNCTS ANSWER) (* (disjunct disjunct OR conjunct) - (disjunct conjunct) *) - (push CONJUNCTS (PARSE.CONJUNCT)) - (while (EQ PARSE.ATOM 'OR) do (PARSE.BIN) - (push CONJUNCTS (PARSE.CONJUNCT))) - [SETQ ANSWER (COND - ((CDR CONJUNCTS) - (CONS 'OR (DREVERSE CONJUNCTS))) - (T (CAR CONJUNCTS] - (RETURN ANSWER]) - -(PARSE.CONJUNCT - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (NEGATIONS ANSWER) (* (conjunct conjunct AND negation) - (conjunct negation) *) - (push NEGATIONS (PARSE.NEGATION)) - (while (EQ PARSE.ATOM 'AND) do (PARSE.BIN) - (push NEGATIONS (PARSE.NEGATION))) - [SETQ ANSWER (COND - ((CDR NEGATIONS) - (CONS 'AND (DREVERSE NEGATIONS))) - (T (CAR NEGATIONS] - (RETURN ANSWER]) - -(PARSE.NEGATION - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (NOT ANSWER) (* (negation not relation) - (negation relation) *) - [COND - ((FMEMB PARSE.ATOM PARSE.NOTS) - (SETQ NOT (PARSE.NOT] - (SETQ ANSWER (PARSE.RELATION)) - [COND - (NOT (SETQ ANSWER `(NOT ,ANSWER] - (RETURN ANSWER]) - -(PARSE.RELATION - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (SUM OPTRELATION NOT ANSWER) (* (relation sum optrelation) - (relation sum) *) - (SETQ SUM (PARSE.SUM)) - (COND - ((NOT (FMEMB PARSE.ATOM PARSE.OPTRELATION.FIRST)) - (RETURN SUM))) - (SETQ OPTRELATION (PARSE.OPTRELATION)) - [COND - ((EQ (CAR OPTRELATION) - 'NOT) - (SETQ NOT T) - (SETQ OPTRELATION (CADR OPTRELATION] - [SETQ ANSWER (COND - ((EQ (CAR OPTRELATION) - 'IN) - (BUILD.IN SUM (CADR OPTRELATION))) - (T (BUILD.ARITH.EXP2 (CAR OPTRELATION) - SUM - (CADR OPTRELATION] - [COND - (NOT (SETQ ANSWER (LIST 'NOT ANSWER] - (RETURN ANSWER]) - -(PARSE.SUM - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (PRODUCTS PRODUCT ANSWER) (* (sum sum addop product) - (sum product) *) - (SETQ PRODUCT (PARSE.PRODUCT)) - [while (FMEMB PARSE.ATOM PARSE.ADDOPS) do (COND - ((EQ PARSE.ATOM '+) - (PARSE.BIN) - (push PRODUCTS PRODUCT) - (SETQ PRODUCT (PARSE.PRODUCT))) - [(EQ PARSE.ATOM '-) - (PARSE.BIN) - (SETQ PRODUCT (BUILD.ARITH.EXP2 '- PRODUCT - (PARSE.PRODUCT] - (T (SHOULDNT] - (push PRODUCTS PRODUCT) - [SETQ ANSWER (COND - ((CDR PRODUCTS) - (BUILD.ARITH.EXP* '+ (DREVERSE PRODUCTS))) - (T (CAR PRODUCTS] - (RETURN ANSWER]) - -(PARSE.PRODUCT - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (FACTORS FACTOR ANSWER) (* (product product multop factor) - (product factor) *) - (SETQ FACTOR (PARSE.FACTOR)) - [while (FMEMB PARSE.ATOM PARSE.MULTOPS) do (COND - ((EQ PARSE.ATOM '*) - (PARSE.BIN) - (push FACTORS FACTOR) - (SETQ FACTOR (PARSE.FACTOR))) - [(EQ PARSE.ATOM '/) - (PARSE.BIN) - (SETQ FACTOR (BUILD.ARITH.EXP2 '/ FACTOR - (PARSE.FACTOR] - [(EQ PARSE.ATOM 'MOD) - (PARSE.BIN) - (SETQ FACTOR (BUILD.ARITH.EXP2 'MOD FACTOR - (PARSE.FACTOR] - (T (SHOULDNT] - (push FACTORS FACTOR) - [SETQ ANSWER (COND - ((CDR FACTORS) - (BUILD.ARITH.EXP* '* (DREVERSE FACTORS))) - (T (CAR FACTORS] - (RETURN ANSWER]) - -(PARSE.OPTRELATION - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (NOT ANSWER) (* (optrelation not relationtail) - (optrelation relationtail) *) - (* In CEDAR, not must be NOT. - *) - [COND - ([OR (EQ PARSE.ATOM 'NOT) - (AND (EQ PARSE.LANGUAGE 'MESA) - (EQ PARSE.ATOM '~] - (SETQ NOT (PARSE.NOT] - (SETQ ANSWER (PARSE.RELATIONTAIL)) - [COND - (NOT (SETQ ANSWER (LIST 'NOT ANSWER] - (RETURN ANSWER]) - -(PARSE.RELATIONTAIL - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (PROG (RANGE RELOP SUM ANSWER) (* (relationtail IN range) - (relationtail relop sum) *) - [COND - ((EQ PARSE.ATOM 'IN) - (PARSE.BIN) - (SETQ RANGE (PARSE.RANGE)) - (SETQ ANSWER (LIST 'IN RANGE))) - (T (SETQ RELOP (PARSE.RELOP)) - (SETQ SUM (PARSE.SUM)) - (SETQ ANSWER (LIST RELOP SUM] - (RETURN ANSWER]) - -(PARSE.RELOP - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* (relop =) (relop %#) - (relop <) (relop <=) - (relop >) (relop >=) *) - (PARSE.BIN]) - -(PARSE.ADDOP - [LAMBDA NIL (* kbr%: "25-Nov-85 12:47") - (* (addop +) (addop -) *) - (PARSE.BIN]) - -(PARSE.MULTOP - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* (multop *) (multop /) - (multop MOD) *) - (PARSE.BIN]) - -(PARSE.FACTOR - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (ADDOP PRIMARY ANSWER) (* (factor addop primary) - (factor primary) *) - [COND - ((FMEMB PARSE.ATOM PARSE.ADDOPS) - (SETQ ADDOP (PARSE.BIN] - (SETQ ANSWER (PARSE.PRIMARY)) - [COND - ((EQ ADDOP '-) - (SETQ ANSWER (BUILD.ARITH.EXP1 '- ANSWER] - (RETURN ANSWER]) - -(PARSE.PRIMARY - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (ANSWER LHS) - - (* BOTH (primary num) (primary lnum) (primary flnum) - (primary string) (primary lstring) (primary atom) - (primary NIL) (primary %[ explist %]) (primary prefixop %[ orderlist %]) - (primary VAL %[ orderlist %]) (primary ALL %[ orderlist %]) - (primary new %[ typeexp initialization optcatch %]) - (primary typeop %[ typeexp %]) (primary SIZE %[ typeexp %]) - (primary SIZE %[ typeexp %, exp %]) (primary ISTYPE %[ exp %, typeexp %]) - (primary @ lhs) (primary DESCRIPTOR %[ desclist %]) - (primary lhs) *) - (* CEDAR (primary cons %[ explist - optcatch %]) (primary listcons %[ - explist %]) *) - (* In CEDAR, new can be NEW. - *) - [SETQ ANSWER (COND - ((EQ PARSE.CLASS 'CHAR) - (BUILD.CHARCODE (PARSE.BIN))) - ((NUMBERP PARSE.ATOM) - (PARSE.BIN)) - ((STRINGP PARSE.ATOM) - (PARSE.BIN)) - ((FMEMB PARSE.ATOM PARSE.PREFIXOP.FIRST) - (PARSE.PRIMARY.PREFIXOP)) - ((AND [OR (FMEMB PARSE.ATOM PARSE.TYPEOP.FIRST) - (AND (EQ PARSE.LANGUAGE 'CEDAR) - (EQ PARSE.ATOM 'CODE] - (EQ PARSE.ATOM2 '%[)) - (PARSE.PRIMARY.TYPEOP)) - (T (SELECTQ PARSE.ATOM - ($ (PARSE.ATOM)) - (NILL (PARSE.PRIMARY.NIL)) - (%[ (PARSE.PRIMARY.LBRACKET)) - (VAL (PARSE.PRIMARY.VAL)) - (ALL (PARSE.PRIMARY.ALL)) - (SIZE (PARSE.PRIMARY.SIZE)) - (ISTYPE (PARSE.PRIMARY.ISTYPE)) - (@ (PARSE.PRIMARY.AT)) - (DESCRIPTOR (PARSE.PRIMARY.DESCRIPTOR)) - (NEW (PARSE.PRIMARY.NEW)) - (CONS (PARSE.PRIMARY.CONS)) - (LIST (PARSE.PRIMARY.LIST)) - (PARSE.PRIMARY.LHS] - (RETURN ANSWER]) - -(PARSE.ATOM - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* (atom $ id) *) - (PARSE.BIN '$) - `',(PARSE.BIN 'ID]) - -(PARSE.PRIMARY.NIL - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* (primary NIL) *) - (PARSE.BIN 'NILL) - NIL]) - -(PARSE.PRIMARY.LBRACKET - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (ANSWER) (* (primary %[ explist %]) *) - (PARSE.BIN '%[) - (SETQ ANSWER (PARSE.EXPLIST)) - (PARSE.BIN '%]) - (RETURN ANSWER]) - -(PARSE.PRIMARY.PREFIXOP - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (PREFIXOP ORDERLIST ANSWER) (* (primary prefixop %[ orderlist %]) - *) - (SETQ PREFIXOP (PARSE.PREFIXOP)) - (PARSE.BIN '%[) - (SETQ ORDERLIST (PARSE.ORDERLIST)) - (PARSE.BIN '%]) - (SETQ ANSWER (CONS PREFIXOP (fetch (ORDERLIST ITEMS) of ORDERLIST))) - (RETURN ANSWER]) - -(PARSE.PRIMARY.VAL - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (ORDERLIST ANSWER) (* (primary VAL %[ orderlist %]) *) - (PARSE.BIN 'VAL) - (PARSE.BIN '%[) - (SETQ ORDERLIST (PARSE.ORDERLIST)) - (PARSE.BIN '%]) - (SETQ ANSWER (CONS 'VAL (fetch (ORDERLIST ITEMS) of ORDERLIST))) - (RETURN ANSWER]) - -(PARSE.PRIMARY.ALL - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (ORDERLIST ANSWER) (* (primary ALL %[ orderlist %]) *) - (PARSE.BIN 'ALL) - (PARSE.BIN '%[) - (SETQ ORDERLIST (PARSE.ORDERLIST)) - (PARSE.BIN '%]) - (SETQ ANSWER (CONS 'ALL (fetch (ORDERLIST ITEMS) of ORDERLIST))) - (RETURN ANSWER]) - -(PARSE.PRIMARY.NEW - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (TYPEEXP INITIALIZATION ANSWER) (* (primary new %[ typeexp - initialization optcatch %]) *) - (PARSE.NEW) - (PARSE.BIN '%[) - (SETQ TYPEEXP (PARSE.TYPEEXP)) - (SETQ INITIALIZATION (PARSE.INITIALIZATION)) - (PARSE.OPTCATCH) - (PARSE.BIN '%]) - (SETQ ANSWER (BUILD.NEW TYPEEXP INITIALIZATION)) - (RETURN ANSWER]) - -(PARSE.PRIMARY.TYPEOP - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (TYPEOP TYPEEXP ANSWER) (* (primary typeop %[ typeexp %]) *) - (SETQ TYPEOP (PARSE.TYPEOP)) - (PARSE.BIN '%[) - (SETQ TYPEEXP (PARSE.TYPEEXP)) - (PARSE.BIN '%]) - (SETQ ANSWER (LIST TYPEOP TYPEEXP)) - (RETURN ANSWER]) - -(PARSE.PRIMARY.SIZE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (TYPEEXP EXP ANSWER) (* (primary SIZE %[ typeexp %]) - (primary SIZE %[ typeexp %, exp %]) *) - (PARSE.BIN 'SIZE) - (PARSE.BIN '%[) - (SETQ TYPEEXP (PARSE.TYPEEXP)) - [COND - ((NOT (EQ PARSE.ATOM '%,)) - (PARSE.BIN '%]) - (SETQ ANSWER (LIST 'SIZE TYPEEXP))) - (T (PARSE.BIN) - (SETQ EXP (PARSE.EXP)) - (PARSE.BIN '%]) - (SETQ ANSWER (LIST 'SIZE TYPEEXP EXP] - (RETURN ANSWER]) - -(PARSE.PRIMARY.ISTYPE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* (primary ISTYPE %[ exp %, typeexp - %]) *) - (PROG (EXP TYPEEXP ANSWER) - (PARSE.BIN 'ISTYPE) - (PARSE.BIN '%[) - (SETQ EXP (PARSE.EXP)) - (PARSE.BIN '%,) - (SETQ TYPEEXP (PARSE.TYPEEXP)) - (PARSE.BIN '%]) - (SETQ ANSWER (BUILD.ISTYPE EXP TYPEEXP)) - (RETURN ANSWER]) - -(PARSE.PRIMARY.AT - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (LHS ANSWER) (* (primary @ lhs) *) - (PARSE.BIN '@) - (SETQ LHS (PARSE.LHS)) - (SETQ ANSWER LHS) - (RETURN ANSWER]) - -(PARSE.PRIMARY.DESCRIPTOR - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (DESCLIST ANSWER) (* (primary DESCRIPTOR %[ desclist %]) - *) - (PARSE.BIN 'DESCRIPTOR) - (PARSE.BIN '%[) - (SETQ DESCLIST (PARSE.DESCLIST)) - (PARSE.BIN '%]) - (SETQ ANSWER (CONS 'DESCRIPTOR DESCLIST)) - (RETURN ANSWER]) - -(PARSE.PRIMARY.CONS - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (EXPLIST ANSWER) (* CEDAR (primary CONS %[ explist - optcatch %]) *) - (PARSE.THISIS.CEDAR) - (PARSE.BIN 'CONS) - (PARSE.BIN '%[) - (SETQ EXPLIST (PARSE.EXPLIST)) - (PARSE.OPTCATCH) - (PARSE.BIN '%]) - (SETQ ANSWER (CONS 'CONS (fetch (EXPLIST ITEMS) of EXPLIST))) - (RETURN ANSWER]) - -(PARSE.PRIMARY.LIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (EXPLIST ANSWER) (* CEDAR (primary LIST %[ explist %]) - *) - (PARSE.THISIS.CEDAR) - (PARSE.BIN 'LIST) - (PARSE.BIN '%[) - (SETQ EXPLIST (PARSE.EXPLIST)) - (PARSE.BIN '%]) - (SETQ ANSWER (CONS 'LIST (fetch (EXPLIST ITEMS) of EXPLIST))) - (RETURN ANSWER]) - -(PARSE.PRIMARY.LHS - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (LHS QUALIFIER ANSWER) (* BOTH (primary lhs) - (primary new %[ typeexp initialization - optcatch %]) *) - (* CEDAR (primary cons %[ explist - optcatch %]) (primary listcons %[ - explist %]) *) - (SETQ LHS (PARSE.LHS)) - (COND - ([NOT (AND (EQ PARSE.ATOM '%.) - (OR (EQ PARSE.ATOM2 'NEW) - (AND (EQ PARSE.LANGUAGE 'CEDAR) - (FMEMB PARSE.ATOM2 '(CONS LIST] - (RETURN LHS))) - (PARSE.BIN '%.) - (SETQ ANSWER (SELECTQ PARSE.ATOM - (NEW (PARSE.PRIMARY.LHS.NEW LHS)) - (CONS (PARSE.PRIMARY.LHS.CONS LHS)) - (LIST (PARSE.PRIMARY.LHS.LIST LHS)) - (SHOULDNT))) - (RETURN ANSWER]) - -(PARSE.PRIMARY.LHS.NEW - [LAMBDA (LHS) (* kbr%: "25-Nov-85 12:48") - (PROG (TYPEEXP INITIALIZATION ANSWER) (* (primary new %[ typeexp - initialization optcatch %]) *) - (PARSE.BIN 'NEW) - (PARSE.BIN '%[) - (SETQ TYPEEXP (PARSE.TYPEEXP)) - (SETQ INITIALIZATION (PARSE.INITIALIZATION)) - (PARSE.OPTCATCH) - (PARSE.BIN '%]) - (SETQ ANSWER (LIST 'create LHS TYPEEXP INITIALIZATION)) - (RETURN ANSWER]) - -(PARSE.PRIMARY.LHS.CONS - [LAMBDA (LHS) (* kbr%: "25-Nov-85 12:48") - (PROG (EXPLIST OPTCATCH ANSWER) (* CEDAR (primary cons %[ explist - optcatch %]) *) - (PARSE.BIN 'CONS) - (PARSE.BIN '%[) - (SETQ EXPLIST (PARSE.EXPLIST)) - (PARSE.OPTCATCH) - (PARSE.BIN '%]) - [SETQ ANSWER `(CONS ,LHS ,@EXPLIST] - (RETURN ANSWER]) - -(PARSE.PRIMARY.LHS.LIST - [LAMBDA (LHS) (* kbr%: "25-Nov-85 12:48") - (PROG (EXPLIST OPTCATCH ANSWER) (* CEDAR (primary listcons %[ explist - %]) *) - (PARSE.BIN 'LIST) - (PARSE.BIN '%[) - (SETQ EXPLIST (PARSE.EXPLIST)) - (PARSE.BIN '%]) - [SETQ ANSWER `(LIST ,LHS ,@EXPLIST] - (RETURN ANSWER]) - -(PARSE.QUALIFIER - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (ANSWER) (* (qualifier %. prefixop) - (qualifier %. typeop) - (qualifier %. SIZE) (qualifier %[ - explist optcatch %]) - (qualifier %. id) (qualifier ^) *) - [COND - [(EQ PARSE.ATOM '%.) - (PARSE.BIN) - (COND - ((FMEMB PARSE.ATOM PARSE.PREFIXOPS) - (SETQ ANSWER (PARSE.PREFIXOP))) - ([OR (FMEMB PARSE.ATOM PARSE.TYPEOPS) - (AND (EQ PARSE.LANGUAGE 'CEDAR) - (EQ PARSE.ATOM 'CODE] - (SETQ ANSWER (PARSE.TYPEOP))) - ((EQ PARSE.ATOM 'SIZE) - (SETQ ANSWER (PARSE.BIN))) - ((EQ PARSE.ATOM 'FREE) (* (free lhs %. FREE) *) - (SETQ ANSWER (PARSE.BIN))) - ((EQ PARSE.ATOM 'NEW) (* (new lhs %. NEW) *) - (SETQ ANSWER (PARSE.BIN))) - ([AND (EQ PARSE.LANGUAGE 'CEDAR) - (FMEMB PARSE.ATOM '(LIST CONS] - (SETQ ANSWER (PARSE.BIN))) - (T (SETQ ANSWER (PARSE.BIN 'ID] - ((EQ PARSE.ATOM '%[) - (PARSE.BIN) - (SETQ ANSWER (PARSE.EXPLIST)) - (PARSE.OPTCATCH) - (PARSE.BIN '%])) - (T (SETQ ANSWER (PARSE.BIN '^] - (RETURN ANSWER]) - -(PARSE.LHS - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (EXP1 EXP2 OPTTYPE ANSWER) (* (lhs id) (lhs char) - (lhs NARROW %[ exp opttype optcatch %]) - (lhs LOOPHOLE %[ exp opttype %]) - (lhs APPLY %[ exp %, exp optcatch %]) - (lhs %( exp %)) (lhs lhs qualifier) *) - [COND - ((EQ PARSE.ATOM 'TRUE) - (PARSE.BIN) - (SETQ ANSWER T)) - ((EQ PARSE.ATOM 'FALSE) - (PARSE.BIN)) - ((EQ PARSE.ATOM 'NARROW) - (PARSE.BIN) - (PARSE.BIN '%[) - (SETQ EXP1 (PARSE.EXP)) - (SETQ OPTTYPE (PARSE.OPTTYPE)) - (PARSE.OPTCATCH) - (PARSE.BIN '%]) - (SETQ ANSWER (BUILD.COERCE EXP1 OPTTYPE))) - ((EQ PARSE.ATOM 'LOOPHOLE) - (PARSE.BIN) - (PARSE.BIN '%[) - (SETQ EXP1 (PARSE.EXP)) - (SETQ OPTTYPE (PARSE.OPTTYPE)) - (PARSE.BIN '%]) - (SETQ ANSWER (BUILD.COERCE EXP1 OPTTYPE))) - ((EQ PARSE.ATOM 'APPLY) - (PARSE.BIN) - (PARSE.BIN '%[) - (SETQ EXP1 (PARSE.EXP)) - (PARSE.BIN '%,) - (SETQ EXP2 (PARSE.EXP)) - (PARSE.OPTCATCH) - (PARSE.BIN '%]) - (SETQ ANSWER (LIST 'APPLY EXP1 EXP2))) - ((EQ PARSE.ATOM '%() - (PARSE.BIN) - (SETQ EXP1 (PARSE.EXP)) - (PARSE.BIN '%)) - (SETQ ANSWER EXP1)) - ((EQ PARSE.CLASS 'ID) - (SETQ ANSWER (PARSE.BIN))) - ((EQ PARSE.CLASS 'CHAR) - (SETQ ANSWER (BUILD.CHARCODE (PARSE.BIN] - [while (PARSE.QUALIFIER.HERE) do (SETQ ANSWER (BUILD.QUALIFY ANSWER (PARSE.QUALIFIER] - (RETURN ANSWER]) - -(PARSE.QUALIFIER.HERE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (AND (FMEMB PARSE.ATOM PARSE.QUALIFIER.FIRST) - (NOT (AND (EQ PARSE.ATOM '%.) - (OR (FMEMB PARSE.ATOM2 '(FREE NEW)) - (AND (EQ PARSE.LANGUAGE 'CEDAR) - (FMEMB PARSE.ATOM2 '(CONS LIST]) - -(PARSE.OPTCATCH - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (CATCHLIST ANSWER) (* (optcatch ! catchlist) - (optcatch) *) - [COND - ((EQ PARSE.ATOM '!) - (PARSE.BIN) - (SETQ ANSWER (PARSE.CATCHLIST] - (RETURN ANSWER]) - -(PARSE.TRANSFEROP - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* (transferop SIGNAL) - (transferop ERROR) (transferop START) - (transferop JOIN) (transferop NEW) - (transferop FORK) *) - (PARSE.BIN]) - -(PARSE.PREFIXOP - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - - (* (prefixop LONG) (prefixop ABS) (prefixop PRED) - (prefixop SUCC) (prefixop ORD) (prefixop MIN) - (prefixop MAX) (prefixop BASE) (prefixop LENGTH) *) - - (PARSE.BIN]) - -(PARSE.TYPEOP - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* BOTH (typeop FIRST) - (typeop LAST) (typeop NIL) *) - (* CEDAR (typeop CODE) *) - (COND - ((EQ PARSE.ATOM 'CODE) - (PARSE.THISIS.CEDAR))) - (PARSE.BIN]) - -(PARSE.DESCLIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (EXP1 EXP2 OPTTYPE ANSWER) (* (desclist exp %, exp opttype) - (desclist exp) *) - (SETQ EXP1 (PARSE.EXP)) - [COND - ((EQ PARSE.ATOM '%,) - (PARSE.BIN) - (SETQ EXP2 (PARSE.EXP)) - (SETQ OPTTYPE (PARSE.OPTTYPE)) - (SETQ ANSWER (LIST 'desclist EXP1 EXP2 OPTTYPE)) - (RETURN ANSWER)) - (T (SETQ ANSWER (LIST 'desclist EXP1] - (RETURN ANSWER]) - -(PARSE.DIRECTORY - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG NIL (* (directory DIRECTORY ;) - (directory DIRECTORY includelist ;) - (directory) *) - (COND - ((EQ PARSE.ATOM 'DIRECTORY) - (PARSE.BIN) - (COND - ((EQ PARSE.ATOM ';)) - (T (PARSE.INCLUDELIST) - (PARSE.BIN ';]) - -(PARSE.IMPORTS - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG NIL (* (imports IMPORTS) - (imports IMPORTS modulelist) - (imports) *) - (COND - ((EQ PARSE.ATOM 'IMPORTS) - (PARSE.BIN) - (PARSE.MODULELIST]) - -(PARSE.POINTERPREFIX - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (ANSWER) (* (pointerprefix POINTER) - (pointerprefix POINTER interval) *) - (PARSE.BIN 'POINTER) - [COND - ((FMEMB PARSE.ATOM PARSE.INTERVAL.FIRST) - (SETQ ANSWER (LIST 'POINTER (PARSE.INTERVAL] - (RETURN ANSWER]) - -(PARSE.EXPORTS - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (MODULELIST ANSWER) (* (exports EXPORTS) - (exports EXPORTS modulelist) - (exports) *) - (COND - ((EQ PARSE.ATOM 'EXPORTS) - (PARSE.BIN) - (BUILD.STORE.EXPORTS (PARSE.MODULELIST]) - -(PARSE.FIELDLIST - [LAMBDA (KIND) (* kbr%: "25-Nov-85 12:48") - (PROG (ANSWER) (* (fieldlist %[ %]) - (fieldlist %[ pairlist %]) - (fieldlist %[ typelist %]) *) - (PARSE.BIN '%[) - [COND - ((NOT (EQ PARSE.ATOM '%])) - (COND - [[AND (EQ PARSE.CLASS 'ID) - (NOT (FMEMB PARSE.ATOM PARSE.PREDEFINED.TYPES)) - (FMEMB PARSE.ATOM2 '(%( %, %:] - (SETQ ANSWER (PARSE.PAIRLIST 'FIELDLIST] - (T (SETQ ANSWER (PARSE.TYPELIST] - (PARSE.BIN '%]) - (RETURN ANSWER]) - -(PARSE.USING - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (IDLIST) (* (using USING %[ %]) - (using USING %[ idlist %]) - (using) *) - [COND - ((EQ PARSE.ATOM 'USING) - (PARSE.BIN) - (PARSE.BIN '%[) - (COND - ((EQ PARSE.ATOM '%]) - (PARSE.BIN)) - (T (SETQ IDLIST (PARSE.IDLIST)) - (PARSE.BIN '%]] - (RETURN IDLIST]) - -(PARSE.CATCHHEAD - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (CATCHCASES ANSWER) (* (catchhead) (catchhead catchhead - catchcase ;) *) - (COND - ((FMEMB PARSE.ATOM PARSE.CATCHLIST.FOLLOW) - (RETURN))) - (push CATCHCASES (PARSE.CATCHCASE)) - (while (EQ PARSE.ATOM ';) do (PARSE.BIN) - (COND - ((FMEMB PARSE.ATOM PARSE.CATCHLIST.FOLLOW) - (RETURN))) - (push CATCHCASES (PARSE.CATCHCASE))) - (SETQ ANSWER (DREVERSE CATCHCASES)) - (RETURN ANSWER]) - -(PARSE.DECLIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (VARLIST) (* (declist declaration) - (declist declist ; declaration) *) - (SETQ VARLIST (PARSE.DECLARATION)) - [do (COND - ((EQ PARSE.ATOM ';) - (PARSE.BIN)) - ((FMEMB PARSE.ATOM PARSE.DECLIST.FOLLOW) - (RETURN)) - (T (SHOULDNT "PARSE.DECLIST"))) - (COND - ([NOT (AND (EQ PARSE.CLASS 'ID) - (FMEMB PARSE.ATOM2 '(%, %:] - (RETURN))) - (SETQ VARLIST (NCONC VARLIST (PARSE.DECLARATION] - (BUILD.STORE.VARLIST VARLIST]) - -(PARSE.PAIRLIST - [LAMBDA (KIND) (* kbr%: "25-Nov-85 12:48") - (PROG (PAIRITEMS ANSWER) (* (pairlist pairitem) - (pairlist pairlist %, pairitem) *) - (* PARSE.PAIRITEM returns a list of - PAIRITEM records. *) - (SETQ PAIRITEMS (PARSE.PAIRITEM KIND)) - (COND - ((type? TYPELIST PAIRITEMS) - - (* Thought we we're parsing a pairlist, but found a typelist. - *) - - (RETURN PAIRITEMS))) - [while (EQ PARSE.ATOM '%,) do (PARSE.BIN) - (SETQ PAIRITEMS (NCONC PAIRITEMS (PARSE.PAIRITEM KIND] - (SETQ ANSWER (create PAIRLIST - ITEMS _ PAIRITEMS)) - (RETURN ANSWER]) - -(PARSE.VARIANTLIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (VARIANTITEMS ANSWER) (* (variantlist variantitem) - (variantlist variantlist %, - variantitem) *) - (push VARIANTITEMS (PARSE.VARIANTITEM)) - (while (EQ PARSE.ATOM '%,) do (PARSE.BIN) - (push VARIANTITEMS (PARSE.VARIANTITEM))) - (SETQ ANSWER (CONS 'variantlist (DREVERSE VARIANTITEMS))) - (RETURN ANSWER]) - -(PARSE.ORDERLIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (OPTEXPS ANSWER) (* (orderlist optexp) - (orderlist orderlist %, optexp) *) - (COND - ((FMEMB PARSE.ATOM PARSE.ORDERLIST.FOLLOW) - (RETURN))) - (push OPTEXPS (PARSE.OPTEXP)) - (while (EQ PARSE.ATOM '%,) do (PARSE.BIN) - (push OPTEXPS (PARSE.OPTEXP))) - (SETQ ANSWER (create ORDERLIST - ITEMS _ (DREVERSE OPTEXPS))) - (RETURN ANSWER]) - -(PARSE.LHSLIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (LHSS ANSWER) (* (lhslist lhs) (lhslist lhslist %, - lhs) *) - (push LHSS (PARSE.LHS)) - (while (EQ PARSE.ATOM '%,) do (PARSE.BIN) - (push LHSS (PARSE.LHS))) - (SETQ ANSWER (DREVERSE LHSS)) - (RETURN ANSWER]) - -(PARSE.INCLUDELIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG NIL (* (includelist includeitem) - (includelist includelist %, - includeitem) *) - (PARSE.INCLUDEITEM) - (while (EQ PARSE.ATOM '%,) do (PARSE.BIN) - (PARSE.INCLUDEITEM]) - -(PARSE.MODULELIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (MODULEITEMS ANSWER) (* (modulelist moduleitem) - (modulelist modulelist %, moduleitem) - *) - (COND - ((FMEMB PARSE.ATOM PARSE.MODULELIST.FOLLOW) - (RETURN NIL))) - (push MODULEITEMS (PARSE.MODULEITEM)) - (while (EQ PARSE.ATOM '%,) do (PARSE.BIN) - (push MODULEITEMS (PARSE.MODULEITEM))) - (SETQ ANSWER (DREVERSE MODULEITEMS)) - (RETURN ANSWER]) - -(PARSE.ELEMENTLIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (ELEMENTS ANSWER) (* (elementlist element) - (elementlist elementlist %, element) *) - (push ELEMENTS (PARSE.ELEMENT)) - (while (EQ PARSE.ATOM '%,) do (PARSE.BIN) - (push ELEMENTS (PARSE.ELEMENT))) - (SETQ ANSWER (DREVERSE ELEMENTS)) - (RETURN ANSWER]) - -(PARSE.BINDLIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (BINDITEMS ANSWER) (* (bindlist binditem) - (bindlist bindlist %, binditem) *) - (push BINDITEMS (PARSE.BINDITEM)) - (while (EQ PARSE.ATOM '%,) do (PARSE.BIN) - (push BINDITEMS (PARSE.BINDITEM))) - (SETQ ANSWER (DREVERSE BINDITEMS)) - (RETURN ANSWER]) - -(PARSE.STATEMENTLIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (STATEMENTS ANSWER) (* (statementlist statement) - (statementlist statementlist ; - statement) *) - (COND - ((FMEMB PARSE.ATOM PARSE.STATEMENTLIST.FOLLOW) - (RETURN))) - (push STATEMENTS (PARSE.STATEMENT)) - (do (COND - ((EQ PARSE.ATOM ';) - (PARSE.BIN))) - (COND - ((FMEMB PARSE.ATOM PARSE.STATEMENTLIST.FOLLOW) - (RETURN))) - (push STATEMENTS (PARSE.STATEMENT))) - (SETQ ANSWER (DREVERSE STATEMENTS)) - (RETURN ANSWER]) - -(PARSE.CASESTMTLIST - [LAMBDA (CASEHEAD) (* kbr%: "25-Nov-85 12:48") - (PROG (CASESTMTITEMS ANSWER) (* (casestmtlist casestmtitem) - (casestmtlist casestmtlist ; - casestmtitem) *) - (push CASESTMTITEMS (PARSE.CASESTMTITEM CASEHEAD)) - (do (COND - ((EQ PARSE.ATOM ';) - (PARSE.BIN))) - (COND - ((EQ PARSE.ATOM 'ENDCASE) - (RETURN))) - (push CASESTMTITEMS (PARSE.CASESTMTITEM CASEHEAD))) - (SETQ ANSWER (DREVERSE CASESTMTITEMS)) - (RETURN ANSWER]) - -(PARSE.CASELABEL - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (CASETESTS IDENT TYPEEXP ANSWER) (* (caselabel ident typeexp) - (caselabel caselabel') - (caselabel' casetest) - (caselabel' caselabel' %, casetest) *) - (COND - ([AND (EQ PARSE.CLASS 'ID) - (FMEMB PARSE.ATOM2 '(%: %(] - (SETQ IDENT (PARSE.IDENT)) - (SETQ TYPEEXP (PARSE.TYPEEXP)) - (SETQ ANSWER (LIST (BUILD.ISTYPE IDENT TYPEEXP))) - (BUILD.INITIALIZE.VAR IDENT TYPEEXP NIL BUILD.CURRENT.SCOPE) - (RETURN ANSWER))) - (push CASETESTS (PARSE.CASETEST)) - (while (EQ PARSE.ATOM '%,) do (PARSE.BIN) - (push CASETESTS (PARSE.CASETEST))) - (SETQ ANSWER (DREVERSE CASETESTS)) - (RETURN ANSWER]) - -(PARSE.EXITLIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (EXITITEMS ANSWER) (* (exitlist exititem) - (exitlist exitlist ; - exititem) *) - (COND - ((FMEMB PARSE.ATOM PARSE.EXITLIST.FOLLOW) - (RETURN))) - (push EXITITEMS (PARSE.EXITITEM)) - (do (COND - ((EQ PARSE.ATOM ';) - (PARSE.BIN))) - (COND - ((FMEMB PARSE.ATOM PARSE.EXITLIST.FOLLOW) - (RETURN))) - (push EXITITEMS (PARSE.EXITITEM))) - (SETQ ANSWER (DREVERSE EXITITEMS)) - (RETURN ANSWER]) - -(PARSE.KEYLIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (KEYITEMS ANSWER) (* (keylist keyitem) - (keylist keylist %, keyitem) *) - (push KEYITEMS (PARSE.KEYITEM)) - (while (EQ PARSE.ATOM '%,) do (PARSE.BIN) - (push KEYITEMS (PARSE.KEYITEM))) - (SETQ ANSWER (create KEYLIST - ITEMS _ (DREVERSE KEYITEMS))) - (RETURN ANSWER]) - -(PARSE.CASEEXPLIST - [LAMBDA (CASEHEAD) (* kbr%: "25-Nov-85 12:48") - (PROG (CASEEXPITEMS ANSWER) (* (caseexplist caseexpitem) - (caseexplist caseexplist %, - caseexpitem) *) - (push CASEEXPITEMS (PARSE.CASEEXPITEM CASEHEAD)) - (do (COND - ((EQ PARSE.ATOM '%,) - (PARSE.BIN))) - (COND - ((EQ PARSE.ATOM 'ENDCASE) - (RETURN))) - (push CASEEXPITEMS (PARSE.CASEEXPITEM CASEHEAD))) - (SETQ ANSWER (DREVERSE CASEEXPITEMS)) - (RETURN ANSWER]) - -(PARSE.EXPLIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* (explist orderlist) - (explist keylist) *) - (PROG (ORDERLIST KEYLIST ANSWER) - [COND - ((AND (EQ PARSE.CLASS 'ID) - (EQ PARSE.ATOM2 '%:)) - (SETQ ANSWER (PARSE.KEYLIST))) - (T (SETQ ANSWER (PARSE.ORDERLIST] - (RETURN ANSWER]) - -(PARSE.OPEN - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (BINDLIST) (* (open OPEN bindlist ;) - (open) *) - [COND - ((EQ PARSE.ATOM 'OPEN) - (PARSE.BIN) - (SETQ BINDLIST (PARSE.BINDLIST)) - (PARSE.BIN ';] - (RETURN BINDLIST]) - -(PARSE.CLASS - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* (class PROGRAM) (class MONITOR) *) - (PARSE.BIN '(MONITOR PROGRAM]) - -(PARSE.CASEHEAD - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (ID EXP OPTEXP BINDITEM OPTEXP ANSWER) (* (casehead SELECT exp FROM) - (casehead WITH binditem SELECT optexp - FROM) *) - [COND - ((EQ PARSE.ATOM 'SELECT) - (PARSE.BIN) - (SETQ EXP (PARSE.EXP)) - (PARSE.BIN 'FROM)) - (T (PARSE.BIN 'WITH) - (SETQ BINDITEM (PARSE.BINDITEM)) - (SETQ ID (fetch (BINDITEM ID) of BINDITEM)) - (SETQ EXP (fetch (BINDITEM EXP) of BINDITEM)) - (PARSE.BIN 'SELECT) - (SETQ OPTEXP (PARSE.OPTEXP)) - (PARSE.BIN 'FROM] - (SETQ ANSWER (create CASEHEAD - ID _ ID - EXP _ EXP - OPTEXP _ OPTEXP)) - (RETURN ANSWER]) - -(PARSE.READONLY - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* (readonly READONLY) - (readonly) *) - (COND - ((EQ PARSE.ATOM 'READONLY) - (PARSE.BIN]) - -(PARSE.ORDERED - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* (ordered ORDERED) - (ordered) *) - (COND - ((EQ PARSE.ATOM 'ORDERED) - (PARSE.BIN]) - -(PARSE.BASE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* (base BASE) (base) *) - (COND - ((EQ PARSE.ATOM 'BASE) - (PARSE.BIN]) - -(PARSE.PACKED - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* (packed PACKED) (packed) *) - (COND - ((EQ PARSE.ATOM 'PACKED) - (PARSE.BIN]) - -(PARSE.HEAP - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* BOTH (heap UNCOUNTED) *) - (* CEDAR (heap) *) - (COND - ((EQ PARSE.ATOM 'UNCOUNTED) - (PARSE.BIN)) - (T (PARSE.THISIS.CEDAR]) - -(PARSE.INLINE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* (inline INLINE) (inline) *) - (COND - ((EQ PARSE.ATOM 'INLINE) - (PARSE.BIN]) - -(PARSE.ARGUMENTS - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG NIL (* (arguments arglist returnlist) *) - (PARSE.ARGLIST) - (PARSE.RETURNLIST]) - -(PARSE.INTERFACE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG NIL (* (interface imports exports shares) - *) - (PARSE.IMPORTS) - (PARSE.EXPORTS) - (PARSE.SHARES]) - -(PARSE.SHARES - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* (shares SHARES idlist) - (shares) *) - (COND - ((EQ PARSE.ATOM 'SHARES) - (CONS (PARSE.BIN) - (PARSE.IDLIST]) - -(PARSE.DEFAULT - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* (default _ defaultopt) - (default) *) - (COND - ((EQ PARSE.ATOM '_) - (PARSE.BIN) - (PARSE.DEFAULTOPT]) - -(PARSE.OPTSIZE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (EXP ANSWER) (* (optsize %[ exp %]) - (optsize) *) - (COND - ((EQ PARSE.ATOM '%[) - (PARSE.BIN) - (SETQ EXP (PARSE.EXP)) - (PARSE.BIN '%]) - (SETQ ANSWER EXP))) - (RETURN ANSWER]) - -(PARSE.BOUNDS - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (EXP1 EXP2 ANSWER) (* (bounds exp |..| exp) *) - (SETQ EXP1 (PARSE.EXP)) - (PARSE.BIN '|..|) - (SETQ EXP2 (PARSE.EXP)) - (SETQ ANSWER (LIST EXP1 EXP2)) - (RETURN ANSWER]) - -(PARSE.LENGTH - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (EXP ANSWER) (* (length %[ exp %]) *) - (PARSE.BIN '%[) - (SETQ EXP (PARSE.EXP)) - (PARSE.BIN '%]) - (SETQ ANSWER EXP) - (RETURN ANSWER]) - -(PARSE.INDEXTYPE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* (indextype typeexp) - (indextype) *) - (COND - ((NOT (EQ PARSE.ATOM 'OF)) - (PARSE.TYPEEXP]) - -(PARSE.ELSEPART - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* (elsepart ELSE statement) - (elsepart) *) - (COND - ((EQ PARSE.ATOM 'ELSE) - (PARSE.BIN) - (PARSE.STATEMENT]) - -(PARSE.OTHERPART - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* (otherpart => statement) - (otherpart) *) - (COND - ((EQ PARSE.ATOM '=>) - (PARSE.BIN) - (PARSE.STATEMENT]) - -(PARSE.FREE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (LHS ANSWER) (* (free lhs %. FREE) *) - (SETQ LHS (PARSE.LHS)) - (PARSE.BIN '%.) - (PARSE.BIN 'FREE) - (SETQ ANSWER (LIST 'FREE LHS)) - (RETURN ANSWER]) - -(PARSE.CATCHANY - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG (STATEMENT ANSWER) (* (catchany ANY => statement) *) - (PARSE.BIN 'ANY) - (PARSE.BIN '=>) - (SETQ STATEMENT (PARSE.STATEMENT)) - (SETQ ANSWER (LIST 'ANY STATEMENT)) - (RETURN ANSWER]) - -(PARSE.NOT - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* (not ~) (not NOT) *) - (PARSE.BIN]) - -(PARSE.NEW - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (PROG NIL (* BOTH (new lhs %. NEW) *) - (* CEDAR (new NEW) *) - (COND - ((AND (EQ PARSE.ATOM 'NEW) - (EQ PARSE.LANGUAGE 'CEDAR)) - (PARSE.BIN)) - (T - - (* Throw away lhs. Interlisp doesn't have separate storage "zone" - (QUOTE s.) *) - - (PARSE.LHS) - (PARSE.BIN '%.) - (PARSE.BIN 'NEW]) - -(PARSE.OPTTYPE - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* (opttype %, typeexp) - (opttype) *) - (COND - ((EQ PARSE.ATOM '%,) - (PARSE.BIN) - (PARSE.TYPEEXP)) - (T 'ANY]) - -(PARSE.ARGLIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* BOTH (arglist fieldlist) - (arglist) *) - (* CEDAR (arglist ANY) *) - (PROG (ARGLIST) - [SETQ ARGLIST (COND - ((EQ PARSE.ATOM '%[) - (COND - ((EQ PARSE.ATOM 'ANY) - (PARSE.THISIS.CEDAR) - (PARSE.BIN)) - (T (PARSE.FIELDLIST 'ARGLIST] - (BUILD.STORE.ARGLIST ARGLIST]) - -(PARSE.RETURNLIST - [LAMBDA NIL (* kbr%: "25-Nov-85 12:48") - (* BOTH (returnlist RETURNS fieldlist) - (returnlist) *) - (* CEDAR (returnlist RETURNS ANY) *) - (PROG (RETURNLIST) - [SETQ RETURNLIST (COND - ((EQ PARSE.ATOM 'RETURNS) - (PARSE.BIN) - (COND - ((EQ PARSE.ATOM 'ANY) - (PARSE.THISIS.CEDAR) - (PARSE.BIN)) - (T (PARSE.FIELDLIST 'RETURNLIST] - (BUILD.STORE.RETURNLIST RETURNLIST]) -) - - - -(* ;; "BUILD ") - - -(RPAQ? BUILD.NEXT.SCOPE NIL) - -(RPAQ? BUILD.CURRENT.SCOPE NIL) - -(RPAQ? BUILD.SCOPE.STACK NIL) - -(RPAQ? BUILD.PREFIX NIL) - -(RPAQ? BUILD.FILECOMS NIL) - -(RPAQ? BUILD.BOOLEAN.FNS - '(AND OR NOT type? IGREATERP ILESSP IGEQ ILEQ IEQP ZEROP MINUSP EVENP ODDP FGREATERP FLESSP - FEQP GREATERP LESSP GEQ LEQ)) - -(RPAQ? BUILD.CARDINAL.FNS - '(ADD1 CHARCODE FIX GCD IDIFFERENCE IMAX IMIN IMINUS IMOD IPLUS IQUOTIENT IREMAINDER ITIMES - LOGAND LOGNOT LOGOR LOGXOR NTHCHARCODE SUB1)) - -(RPAQ? BUILD.MIXED.FNS '(ABS DIFFERENCE EXPT MAX MIN MINUS MOD PLUS QUOTIENT REMAINDER TIMES)) - -(RPAQ? BUILD.REAL.FNS - '(ANTILOG ARCCOS ARCSIN ARCTAN ARCTAN2 COS FDIFFERENCE FLOAT FMAX FMIN FMINUS FMOD FPLUS - FQUOTIENT FREMAINDER FTIMES LOG SIN SQRT TAN)) - -(RPAQ? BUILD.QUALIFY.WORDS '(FREE NEW SIZE)) - -(RPAQ? BUILD.CARDINAL.ARITHOP.ALIST (LIST (CONS '= 'IEQP) - (CONS '%# 'IEQP) - (CONS '< 'ILESSP) - (CONS '<= 'ILEQ) - (CONS '> 'IGREATERP) - (CONS '>= 'IGEQ) - (CONS '+ 'IPLUS) - (CONS '- 'IDIFFERENCE) - (CONS '* 'ITIMES) - (CONS '/ 'IQUOTIENT) - (CONS '0- 'IMINUS) - (CONS 'MAX 'IMAX) - (CONS 'MIN 'IMIN) - (CONS 'MOD 'IMOD))) - -(RPAQ? BUILD.MIXED.ARITHOP.ALIST (LIST (CONS '= 'EQP) - (CONS '%# 'EQP) - (CONS '< 'LESSP) - (CONS '<= 'GREATERP) - (CONS '> 'GREATERP) - (CONS '>= 'LESSP) - (CONS '+ 'PLUS) - (CONS '- 'DIFFERENCE) - (CONS '* 'TIMES) - (CONS '/ 'QUOTIENT) - (CONS '0- 'MINUS) - (CONS 'MAX 'MAX) - (CONS 'MIN 'MIN) - (CONS 'MOD 'IMOD))) - -(RPAQ? BUILD.REAL.ARITHOP.ALIST (LIST (CONS '= 'FEQP) - (CONS '%# 'FEQP) - (CONS '< 'FLESSP) - (CONS '<= 'FGREATERP) - (CONS '> 'FGREATERP) - (CONS '>= 'FLESSP) - (CONS '+ 'FPLUS) - (CONS '- 'FDIFFERENCE) - (CONS '* 'FTIMES) - (CONS '/ 'FQUOTIENT) - (CONS '0- 'FMINUS) - (CONS 'MAX 'FMAX) - (CONS 'MIN 'FMIN) - (CONS 'MOD 'IMOD))) - -(RPAQ? BUILD.CARDINAL.TYPES '(CARDINAL CHAR CHARACTER INT INTEGER NAT WORD)) -(DECLARE%: EVAL@COMPILE - -(RECORD SCOPE (ID SYMBOLTABLE INITLIST ARGLIST VARLIST RETURNLIST RETURNS OPEN) - [ACCESSFNS ((RETURNVARS (FOR PAIRITEM IN (fetch (PAIRLIST ITEMS) - of (fetch (SCOPE RETURNLIST) of DATUM)) - collect (BUILD.LOCALVARID NIL (fetch (PAIRITEM ID) - of PAIRITEM]) -) -(DEFINEQ - -(BUILD.INIT - [LAMBDA (PREFIX) (* kbr%: "25-Nov-85 17:27") - (PROG NIL - (SETQ BUILD.PREFIX PREFIX) - (SETQ BUILD.FILECOMS (FILECOMS (U-CASE PREFIX))) - (SETTOPVAL BUILD.FILECOMS NIL) - (printout T "Creating " BUILD.FILECOMS T) - (SETQ BUILD.NEXT.SCOPE (create SCOPE - ID _ 'MODULE)) - (SETQ BUILD.CURRENT.SCOPE NIL) - (SETQ BUILD.SCOPE.STACK NIL]) - -(BUILD.PUSH.SCOPE - [LAMBDA NIL (* kbr%: "25-Nov-85 17:27") - (PROG NIL - (COND - (BUILD.CURRENT.SCOPE (push BUILD.SCOPE.STACK BUILD.CURRENT.SCOPE))) - (SETQ BUILD.CURRENT.SCOPE BUILD.NEXT.SCOPE) - (SETQ BUILD.NEXT.SCOPE (create SCOPE)) - (RETURN (CAR BUILD.SCOPE.STACK]) - -(BUILD.POP.SCOPE - [LAMBDA NIL (* kbr%: "25-Nov-85 17:27") - (PROG NIL - (SETQ BUILD.NEXT.SCOPE BUILD.CURRENT.SCOPE) - (SETQ BUILD.CURRENT.SCOPE (pop BUILD.SCOPE.STACK)) - (RETURN BUILD.CURRENT.SCOPE]) - -(BUILD.GC.SCOPE - [LAMBDA NIL (* kbr%: "25-Nov-85 17:27") - (PROG NIL - (SETQ BUILD.NEXT.SCOPE (create SCOPE]) - -(BUILD.STORE.EXPORTS - [LAMBDA (EXPORTS) (* kbr%: "25-Nov-85 17:27") - (PROG NIL - (COND - (EXPORTS (SETQ BUILD.PREFIX (CAR EXPORTS]) - -(BUILD.STORE.IDENTLIST - [LAMBDA (IDENTLIST) (* kbr%: "25-Nov-85 17:27") - (PROG NIL - (replace (SCOPE ID) of BUILD.NEXT.SCOPE with (CAR IDENTLIST]) - -(BUILD.STORE.INTERFACES - [LAMBDA (INTERFACES) (* kbr%: "25-Nov-85 17:27") - (PROG NIL - (for INTERFACE in INTERFACES do (BUILD.STORE.INTERFACE INTERFACE]) - -(BUILD.STORE.INTERFACE - [LAMBDA (INTERFACE) (* kbr%: "25-Nov-85 17:27") - (PROG NIL - (PUTPROP INTERFACE 'MESA.INTERFACE T]) - -(BUILD.STORE.OPEN - [LAMBDA (OPEN) (* kbr%: "25-Nov-85 17:27") - (PROG NIL - (replace (SCOPE OPEN) of BUILD.NEXT.SCOPE with OPEN]) - -(BUILD.STORE.USING - [LAMBDA (INTERFACE USING) (* kbr%: "25-Nov-85 17:27") - (PROG NIL - (for USE in USING do (PUTPROP USE 'MESA.USEDBY INTERFACE]) - -(BUILD.INITIALIZATION - [LAMBDA (IDENTLIST TYPEEXP INITIALIZATION) (* kbr%: "25-Nov-85 17:27") - (PROG (ANSWER) - (SELECTQ (BUILD.TYPEATOM TYPEEXP) - (PROC (BUILD.INITIALIZE.FN (CAR IDENTLIST) - TYPEEXP INITIALIZATION)) - (MRECORD (BUILD.INITIALIZE.RECORD (CAR IDENTLIST) - TYPEEXP INITIALIZATION)) - (SETQ ANSWER (BUILD.INITIALIZE.VARS IDENTLIST TYPEEXP INITIALIZATION - BUILD.CURRENT.SCOPE))) - (RETURN ANSWER]) - -(BUILD.INITIALIZE.VARS - [LAMBDA (IDENTLIST TYPEEXP INITIALIZATION SCOPE) (* kbr%: "25-Nov-85 17:27") - (PROG (ANSWER) - (SETQ ANSWER (for ID in IDENTLIST collect (BUILD.INITIALIZE.VAR ID TYPEEXP INITIALIZATION - SCOPE))) - (RETURN ANSWER]) - -(BUILD.INITIALIZE.VAR - [LAMBDA (ID TYPEEXP INITIALIZATION SCOPE) (* kbr%: "25-Nov-85 17:27") - (PROG (PAIRITEM) - (SETQ PAIRITEM (create PAIRITEM - ID _ ID - TYPEEXP _ TYPEEXP - DEFAULT _ INITIALIZATION)) - (replace (SCOPE SYMBOLTABLE) of SCOPE with (NCONC (fetch (SCOPE SYMBOLTABLE) of SCOPE) - (LIST PAIRITEM))) - (COND - ((NULL BUILD.SCOPE.STACK) - (BUILD.ADD.TO.FILECOMS (LIST ID (BUILD.COERCE INITIALIZATION TYPEEXP)) - 'INITVARS) - (PRIN1 ID T) - (PRIN1 "," T))) - (RETURN ID]) - -(BUILD.INITIALIZE.FN - [LAMBDA (ID TYPEEXP INITIALIZATION) (* kbr%: "25-Nov-85 17:27") - (PROG (PROCID ARGLIST RETURNLIST LAMBDA) - (SETQ PROCID (BUILD.PROCID BUILD.PREFIX ID)) - (SETQ ARGLIST (fetch (SCOPE ARGLIST) of BUILD.NEXT.SCOPE)) - (SETQ RETURNLIST (fetch (SCOPE RETURNLIST) of BUILD.NEXT.SCOPE)) - (PUTPROP ID 'MESA.USEDBY BUILD.PREFIX) - (PUTPROP PROCID 'MESA.FN T) - (PUTPROP PROCID 'MESA.ARGLIST ARGLIST) - (PUTPROP PROCID 'MESA.RETURNLIST RETURNLIST) - (SETQ LAMBDA (BUILD.LAMBDA ARGLIST INITIALIZATION)) - (PUTD PROCID LAMBDA) - (BUILD.ADD.TO.FILECOMS PROCID 'FNS) - (BUILD.GC.SCOPE) - (PRIN1 ID T) - (PRIN1 "," T]) - -(BUILD.INITIALIZE.RECORD - [LAMBDA (ID TYPEEXP INITIALIZATION) (* kbr%: "25-Nov-85 17:27") - (PROG (RECORDID FIELDLIST RECORD) - (SETQ RECORDID (BUILD.RECORDID BUILD.PREFIX ID)) - (replace (MRECORD RECORDID) of TYPEEXP with RECORDID) - (SETQ RECORD (BUILD.RECORD RECORDID TYPEEXP)) - (EVAL RECORD) - (BUILD.ADD.TO.FILECOMS RECORDID 'RECORDS) - (PUTPROP ID 'MESA.USEDBY BUILD.PREFIX) - (PUTPROP RECORDID 'MESA.TYPE TYPEEXP) - (PRIN1 ID T) - (PRIN1 "," T]) - -(BUILD.RECORD - [LAMBDA (RECORDID TYPEEXP) (* kbr%: "25-Nov-85 17:27") - (PROG (FIELDLIST FIELDS DEFAULTS ANSWER) - (SETQ FIELDLIST (fetch (MRECORD FIELDLIST) of TYPEEXP)) - (COND - [(NULL FIELDLIST) - - (* I'm not really sure what an empty FIELDLIST is supposed to get you in - MESA/CEDAR. *) - - (RETURN `(TYPERECORD ,RECORDID] - [(type? PAIRLIST FIELDLIST) - (for ITEM in (REVERSE (fetch (PAIRLIST ITEMS) of FIELDLIST)) - do (push FIELDS (fetch (PAIRITEM ID) of ITEM)) - (COND - ((fetch (PAIRITEM DEFAULT) of ITEM) - (SETQ DEFAULTS (NCONC DEFAULTS `(,(fetch (PAIRITEM ID) of ITEM) - _ - ,(BUILD.COERCE (fetch (PAIRITEM DEFAULT) - of ITEM) - (fetch (PAIRITEM TYPEEXP) - of ITEM] - [(type? TYPELIST FIELDLIST) - (for ITEM in (REVERSE (fetch (TYPELIST ITEMS) of FIELDLIST)) as I from 1 - do (push FIELDS (PACK* 'FIELD I)) - (COND - ((fetch (TYPEITEM DEFAULT) of ITEM) - (SETQ DEFAULTS (NCONC DEFAULTS `(,(PACK* 'FIELD I) - _ - ,(BUILD.COERCE (fetch (TYPEITEM DEFAULT) - of ITEM) - (fetch (TYPEITEM TYPEEXP) - of ITEM] - (T (SHOULDNT))) - [SETQ ANSWER `(RECORD ,RECORDID ,FIELDS ,@DEFAULTS] - (RETURN ANSWER]) - -(BUILD.TYPE - [LAMBDA (IDENTLIST TYPEEXP DEFAULT) (* kbr%: "25-Nov-85 17:27") - (PROG (ID TYPEID) - (SELECTQ (BUILD.TYPEATOM TYPEEXP) - (MRECORD (BUILD.INITIALIZE.RECORD (CAR IDENTLIST) - TYPEEXP DEFAULT)) - (PROGN (SETQ TYPEID (BUILD.TYPEID BUILD.PREFIX (CAR IDENTLIST))) - (COND - ((NOT (EQ TYPEID TYPEEXP)) - (PUTPROP (CAR IDENTLIST) - 'MESA.USEDBY BUILD.PREFIX) - (PUTPROP TYPEID 'MESA.TYPE TYPEEXP]) - -(BUILD.STORE.ARGLIST - [LAMBDA (ARGLIST) (* kbr%: "25-Nov-85 17:27") - (* ARGLIST = args for coming function - scope. *) - (PROG NIL - (replace (SCOPE ARGLIST) of BUILD.NEXT.SCOPE with ARGLIST) - (COND - ((type? PAIRLIST ARGLIST) - (BUILD.STORE.PAIRLIST ARGLIST]) - -(BUILD.STORE.RETURNLIST - [LAMBDA (RETURNLIST) (* kbr%: "25-Nov-85 17:27") - (* RETURNLIST = args for coming - function scope. *) - (PROG NIL - (replace (SCOPE RETURNLIST) of BUILD.NEXT.SCOPE with RETURNLIST) - (COND - ((type? PAIRLIST RETURNLIST) - (BUILD.STORE.PAIRLIST RETURNLIST]) - -(BUILD.STORE.PAIRLIST - [LAMBDA (PAIRLIST) (* kbr%: "25-Nov-85 17:27") - - (* PAIRLIST = args or return vals for coming function scope. - *) - - (PROG NIL - (for PAIRITEM in (fetch (PAIRLIST ITEMS) of PAIRLIST) collect (BUILD.STORE.PAIRITEM - PAIRITEM - BUILD.NEXT.SCOPE]) - -(BUILD.STORE.PAIRITEM - [LAMBDA (PAIRITEM SCOPE) (* kbr%: "25-Nov-85 17:27") - (PROG NIL - (replace (SCOPE SYMBOLTABLE) of SCOPE with (NCONC (fetch (SCOPE SYMBOLTABLE) of SCOPE) - (LIST PAIRITEM))) - (RETURN (fetch (PAIRITEM ID) of PAIRITEM]) - -(BUILD.STORE.VARLIST - [LAMBDA (VARLIST) (* kbr%: "25-Nov-85 17:27") - (PROG NIL - (replace (SCOPE VARLIST) of BUILD.CURRENT.SCOPE with VARLIST]) - -(BUILD.ID - [LAMBDA (INTERFACE ID) (* kbr%: "25-Nov-85 17:27") - (PROG (ANSWER) - (COND - ((STRPOS "." ID) - (RETURN ID))) - [SETQ INTERFACE (OR INTERFACE (GETPROP ID 'MESA.USEDBY] - (SETQ ANSWER (COND - (INTERFACE (PACK* INTERFACE "." ID)) - (T ID))) - (RETURN ANSWER]) - -(BUILD.FIELDID - [LAMBDA (INTERFACE ID) (* kbr%: "25-Nov-85 17:27") - ID]) - -(BUILD.PROCID - [LAMBDA (INTERFACE ID) (* kbr%: "25-Nov-85 17:27") - (BUILD.ID INTERFACE ID]) - -(BUILD.RECORDID - [LAMBDA (INTERFACE ID) (* kbr%: "25-Nov-85 17:27") - (BUILD.ID INTERFACE ID]) - -(BUILD.TYPEID - [LAMBDA (INTERFACE ID) (* kbr%: "25-Nov-85 17:27") - (COND - ((FMEMB ID PARSE.PREDEFINED.TYPES) - ID) - (T (BUILD.ID INTERFACE ID]) - -(BUILD.VARID - [LAMBDA (INTERFACE ID) (* kbr%: "25-Nov-85 17:27") - (PROG (ANSWER) - [SETQ ANSWER (COND - ((BUILD.LOOKUP ID) - (BUILD.LOCALVARID INTERFACE ID)) - (T (BUILD.GLOBALVARID INTERFACE ID] - (RETURN ANSWER]) - -(BUILD.LOCALVARID - [LAMBDA (INTERFACE ID) (* kbr%: "25-Nov-85 17:27") - ID]) - -(BUILD.GLOBALVARID - [LAMBDA (INTERFACE ID) (* kbr%: "25-Nov-85 17:27") - (BUILD.ID INTERFACE ID]) - -(BUILD.ULTIMATE.TYPE - [LAMBDA (EXP) (* kbr%: "25-Nov-85 17:27") - (BUILD.REFINE.TYPE (BUILD.IMMEDIATE.TYPE EXP]) - -(BUILD.REFINE.TYPE - [LAMBDA (TYPE) (* kbr%: "25-Nov-85 17:27") - (PROG (PAIRITEM NEXTTYPE) - LOOP - (SETQ NEXTTYPE (COND - ((OR (FMEMB TYPE '(ANY MPROC INTERFACE)) - (FMEMB TYPE PARSE.PREDEFINED.TYPES)) - (SELECTQ TYPE - (BOOL 'BOOLEAN) - (CHAR 'CHARACTER) - ((INT INTEGER NAT WORD) - 'CARDINAL) - (StringBody 'STRING) - (UNSPECIFIED 'ANY) - TYPE)) - ((LITATOM TYPE) - (OR (BUILD.LOOKUP.TYPE TYPE) - (PROGN (printout T T TYPE " type unknown." T) - (PUTPROP TYPE 'MESA.TYPE 'UNDECLARED) - TYPE))) - ((type? MINTERVAL TYPE) - (fetch (MINTERVAL LBOUND) of TYPE)) - ((type? MPOINTER TYPE) - (fetch (MPOINTER TYPE) of TYPE)) - ((type? MREF TYPE) - (fetch (MREF TYPE) of TYPE)) - (T TYPE))) - (COND - ((EQ NEXTTYPE 'UNDECLARED) - (RETURN TYPE)) - ((NOT (EQ NEXTTYPE TYPE)) - (SETQ TYPE NEXTTYPE) - (GO LOOP))) - (RETURN TYPE]) - -(BUILD.IMMEDIATE.TYPE - [LAMBDA (EXP) (* kbr%: "25-Nov-85 17:27") - (PROG (TYPE FN RECORDNAME FIELDNAME MRECORD FIELDLIST PAIRITEM) - [SETQ TYPE (COND - ((OR (NULL EXP) - (EQ EXP T)) - 'BOOLEAN) - [(LITATOM EXP) - (OR (BUILD.LOOKUP.TYPE EXP) - (PROGN (printout T T EXP " type unknown." T) - 'ANY] - ((FIXP EXP) - 'CARDINAL) - ((FLOATP EXP) - 'REAL) - ((STRINGP EXP) - 'STRING) - [(LISTP EXP) - (SETQ FN (CAR EXP)) - (COND - ((EQ FN 'SETQ) - (BUILD.IMMEDIATE.TYPE (CADR EXP))) - [(EQ FN 'CAR) - (SETQ TYPE (BUILD.ULTIMATE.TYPE (CADR EXP))) - (COND - ((type? MLIST TYPE) - (fetch (MLIST TYPE) of TYPE)) - (T (printout T T EXP " type unknown." T) - 'ANY] - [(EQ FN 'CDR) - (SETQ TYPE (BUILD.ULTIMATE.TYPE (CADR EXP))) - (COND - ((type? MLIST TYPE) - TYPE) - (T (printout T T EXP " type unknown." T) - 'ANY] - [(FMEMB FN '(CONS LIST)) - (SETQ TYPE (BUILD.IMMEDIATE.TYPE (CADR EXP))) - (COND - (TYPE (create MLIST - TYPE _ TYPE)) - (T (printout T T EXP " type unknown." T) - 'ANY] - [(EQ FN 'COND) - (BUILD.IMMEDIATE.TYPE (CADR (CADR EXP] - [(EQ FN 'ELT) - (SETQ TYPE (BUILD.ULTIMATE.TYPE (CADR EXP))) - (COND - ((type? MARRAY TYPE) - (fetch (MARRAY TYPE) of TYPE)) - (T (printout T T EXP " type unknown." T) - 'ANY] - ((EQ FN 'create) - (CADR EXP)) - [(EQ FN 'fetch) - (SETQ RECORDNAME (CAR (CADR EXP))) - (SETQ FIELDNAME (CADR (CADR EXP))) - (SETQ MRECORD (GETPROP RECORDNAME 'MESA.TYPE)) - (COND - ((EQ MRECORD 'UNDECLARED) - 'ANY) - (T (SETQ FIELDLIST (fetch (MRECORD FIELDLIST) of MRECORD)) - (COND - ((type? PAIRLIST FIELDLIST) - (SETQ PAIRITEM (ASSOC FIELDNAME (fetch (PAIRLIST ITEMS) - of FIELDLIST))) - (fetch (PAIRITEM TYPEEXP) of PAIRITEM)) - (T (printout T T EXP " type unknown." T) - 'ANY] - ((FMEMB FN BUILD.BOOLEAN.FNS) - 'BOOLEAN) - ((FMEMB FN BUILD.CARDINAL.FNS) - 'CARDINAL) - ((FMEMB FN BUILD.MIXED.FNS) - 'MIXED) - ((FMEMB FN BUILD.REAL.FNS) - 'REAL) - (T (printout T T EXP " type unknown." T) - 'ANY] - (T (printout T T EXP " type unknown." T) - 'ANY] - (RETURN TYPE]) - -(BUILD.LOOKUP.TYPE - [LAMBDA (ID) (* kbr%: "25-Nov-85 17:27") - (PROG (PAIRITEM TYPE) - (SETQ PAIRITEM (BUILD.LOOKUP ID)) - (COND - (PAIRITEM (SETQ TYPE (fetch (PAIRITEM TYPEEXP) of PAIRITEM)) - (RETURN TYPE))) - [SETQ TYPE (COND - ((GETPROP ID 'MESA.TYPE)) - ((GETPROP ID 'MESA.USEDBY) - (BUILD.ID (GETPROP ID 'MESA.USEDBY) - ID)) - ((GETPROP ID 'MESA.FN) - (RETURN 'MPROC)) - ((GETPROP ID 'MESA.INTERFACE) - (RETURN 'INTERFACE] - (RETURN TYPE]) - -(BUILD.LOOKUP - [LAMBDA (ID) (* kbr%: "25-Nov-85 17:27") - (PROG (ANSWER) - [for SCOPE in (CONS BUILD.CURRENT.SCOPE BUILD.SCOPE.STACK) - do (SETQ ANSWER (ASSOC ID (fetch (SCOPE SYMBOLTABLE) of SCOPE))) - (COND - (ANSWER (RETURN] - (RETURN ANSWER]) - -(BUILD.TYPEATOM - [LAMBDA (TYPEEXP) (* kbr%: "25-Nov-85 17:27") - (COND - ((LITATOM TYPEEXP) - TYPEEXP) - (T (CAR TYPEEXP]) - -(BUILD.QUALIFY - [LAMBDA (LHS QUALIFIER) (* kbr%: "25-Nov-85 17:27") - (PROG (TYPE TYPEATOM ANSWER) (* (qualifier %. prefixop) - (qualifier %. typeop) - (qualifier %. SIZE) (qualifier %[ - explist optcatch %]) - (qualifier %. id) (qualifier ^) *) - [SETQ ANSWER (COND - ((FMEMB QUALIFIER PARSE.PREFIXOPS) - (BUILD.QUALIFY.PREFIXOP LHS QUALIFIER)) - ((FMEMB QUALIFIER PARSE.TYPEOPS) - (BUILD.QUALIFY.TYPEOP LHS QUALIFIER)) - ((EQ QUALIFIER 'SIZE) - (PACK* LHS "." QUALIFIER)) - [(EQ QUALIFIER 'first) - `(CAR ,LHS] - [(EQ QUALIFIER 'rest) - `(CDR ,LHS] - ((OR (NULL QUALIFIER) - (LISTP QUALIFIER)) - (BUILD.QUALIFY.EXPLIST LHS QUALIFIER)) - ((EQ QUALIFIER '^) - LHS) - (T (BUILD.QUALIFY.ID LHS QUALIFIER] - (RETURN ANSWER]) - -(BUILD.QUALIFY.PREFIXOP - [LAMBDA (LHS QUALIFIER) (* kbr%: "25-Nov-85 17:27") - (SELECTQ QUALIFIER - ((MAX MIN) - (BUILD.ARITH.EXP* QUALIFIER LHS)) - (CONS QUALIFIER LHS]) - -(BUILD.QUALIFY.TYPEOP - [LAMBDA (LHS QUALIFIER) (* kbr%: "25-Nov-85 17:27") - (CONS QUALIFIER LHS]) - -(BUILD.QUALIFY.EXPLIST - [LAMBDA (LHS EXPLIST) (* kbr%: "25-Nov-85 17:27") - (* Qualify LHS with EXPLIST qualifier. - *) - (PROG (TYPE TYPEATOM EXPITEMS ANSWER) - [COND - ((LITATOM LHS) - (SETQ LHS (BUILD.ID NIL LHS] - (SETQ TYPE (BUILD.ULTIMATE.TYPE LHS)) - (SETQ TYPEATOM (BUILD.TYPEATOM TYPE)) - (SETQ EXPITEMS (fetch (EXPLIST ITEMS) of EXPLIST)) - [SETQ ANSWER (SELECTQ TYPEATOM - (MARRAY `(ELT ,LHS ,@EXPITEMS)) - (MPROC (BUILD.CALL LHS EXPLIST)) - (STRING `(NTHCHARCODE ,LHS ,@EXPITEMS)) - (MRECORD (* Presumably record contains - SEQUENCE. *) - `(ELT ,LHS ,@EXPITEMS)) - (COND - ((AND (LISTP LHS) - (IEQP (LENGTH LHS) - 2)) (* "ARG1.FN[ARG2,...,ARGn]" *) - (APPEND LHS EXPITEMS)) - (T (printout T T LHS " qualified by " EXPLIST "?" T) - (COND - [(AND (type? ORDERLIST EXPLIST) - (IEQP (LENGTH EXPITEMS) - 1)) (* Guess array access. - *) - `(ELT ,LHS ,@EXPITEMS] - (T (CONS LHS EXPITEMS] - (RETURN ANSWER]) - -(BUILD.QUALIFY.ID - [LAMBDA (LHS QUALIFIER) (* kbr%: "25-Nov-85 17:27") - (* Qualify LHS with id QUALIFIER. - *) - (PROG (TYPE TYPEATOM ANSWER) - (SETQ TYPE (BUILD.ULTIMATE.TYPE LHS)) - (SETQ TYPEATOM (BUILD.TYPEATOM TYPE)) - [SETQ ANSWER (SELECTQ TYPEATOM - (MRECORD `(fetch (,(fetch (MRECORD RECORDID) of TYPE) ,QUALIFIER) - of ,LHS)) - (MARRAY (printout T T LHS " qualified by " QUALIFIER "?" T) - `(ELT ,LHS ,QUALIFIER)) - (INTERFACE (BUILD.ID LHS QUALIFIER)) - (MPROC (COND - (QUALIFIER (LIST LHS QUALIFIER)) - (T (LIST LHS)))) - (STRING (printout T T LHS " qualified by " QUALIFIER "?" T) - `(NTHCHARCODE ,LHS ,QUALIFIER)) - (COND - [(EQ (GETPROP TYPE 'MESA.TYPE) - 'UNDECLARED) (* Guess undeclared record. - *) - `(fetch (,TYPE ,QUALIFIER) of ,LHS] - (T (* Guess undeclared fn. - *) - (LIST QUALIFIER LHS] - (RETURN ANSWER]) - -(BUILD.ARITH.EXP1 - [LAMBDA (ARITHOP EXP1) (* kbr%: "25-Nov-85 17:27") - [COND - ((EQ ARITHOP '-) - (SETQ ARITHOP '0-] - (BUILD.ARITH.EXP* ARITHOP (LIST EXP1]) - -(BUILD.ARITH.EXP2 - [LAMBDA (ARITHOP EXP1 EXP2) (* kbr%: "25-Nov-85 17:27") - (PROG (ANSWER) - (SETQ ANSWER (BUILD.ARITH.EXP* ARITHOP (LIST EXP1 EXP2))) - (RETURN ANSWER]) - -(BUILD.ARITH.EXP* - [LAMBDA (ARITHOP EXPS) (* kbr%: "25-Nov-85 17:27") - (PROG (TYPE NEWARITHOP ANSWER) - (SETQ TYPE (BUILD.STRONGEST.TYPE.AMONG EXPS)) - (SETQ NEWARITHOP (BUILD.COERCE.ARITHOP ARITHOP TYPE)) - [COND - ((EQ TYPE 'REAL) - (SETQ EXPS (for EXP in EXPS collect (COND - ((FIXP EXP) - (FLOAT EXP)) - (T EXP] - (SETQ ANSWER (CONS NEWARITHOP EXPS)) - [COND - ((FMEMB NEWARITHOP '(IPLUS IDIFFERENCE)) - (SETQ ANSWER (BUILD.ARITH.ADD1SUB1 ANSWER))) - [(AND (EQ ARITHOP '0-) - (NUMBERP (CADR ANSWER))) - (SETQ ANSWER (APPLY* (CAR ANSWER) - (CADR ANSWER] - ([OR (EQ ARITHOP '%#) - (AND (FMEMB ARITHOP (LIST '<= '>=)) - (NOT (EQ TYPE 'CARDINAL] - (SETQ ANSWER (LIST 'NOT ANSWER] - (RETURN ANSWER]) - -(BUILD.ARITH.ADD1SUB1 - [LAMBDA (EXP) (* kbr%: "25-Nov-85 17:27") - - (* Use ADD1 or SUB1 instead of IPLUS or IDIFFERENCE if possible. - *) - - (PROG (FN EXP1 EXP2 ANSWER) - (COND - ((NOT (IEQP (FLENGTH EXP) - 3)) - (RETURN EXP))) - (SETQ FN (CAR EXP)) - (SETQ EXP1 (CADR EXP)) - (SETQ EXP2 (CADDR EXP)) - (COND - [(EQ FN 'IPLUS) - (COND - ((EQ EXP1 1) - (SETQ ANSWER (BUILD.ADD1 EXP2))) - ((EQ EXP2 1) - (SETQ ANSWER (BUILD.ADD1 EXP1))) - (T (SETQ ANSWER EXP] - ((AND (EQ FN 'IDIFFERENCE) - (EQ EXP2 1)) - (SETQ ANSWER (BUILD.SUB1 EXP1))) - (T (SETQ ANSWER EXP))) - (RETURN ANSWER]) - -(BUILD.COERCE.ARITHOP - [LAMBDA (ARITHOP TYPE) (* kbr%: "25-Nov-85 17:27") - (SELECTQ TYPE - (CARDINAL (CDR (ASSOC ARITHOP BUILD.CARDINAL.ARITHOP.ALIST))) - (MIXED (CDR (ASSOC ARITHOP BUILD.MIXED.ARITHOP.ALIST))) - (REAL (CDR (ASSOC ARITHOP BUILD.REAL.ARITHOP.ALIST))) - (SHOULDNT]) - -(BUILD.STRONGEST.TYPE.AMONG - [LAMBDA (EXPS) (* kbr%: "25-Nov-85 17:27") - (PROG (TYPE) - (SETQ TYPE 'CARDINAL) - [for EXP in EXPS while (NOT (EQ TYPE 'REAL)) do (SETQ TYPE (BUILD.STRONGEST.TYPE - TYPE - (BUILD.ULTIMATE.TYPE EXP] - (RETURN TYPE]) - -(BUILD.STRONGEST.TYPE - [LAMBDA (TYPE1 TYPE2) (* kbr%: "25-Nov-85 17:27") - [COND - ((FMEMB TYPE1 BUILD.CARDINAL.TYPES) - (SETQ TYPE1 'CARDINAL] - [COND - ((FMEMB TYPE2 BUILD.CARDINAL.TYPES) - (SETQ TYPE2 'CARDINAL] - (SELECTQ TYPE1 - (CARDINAL (SELECTQ TYPE2 - (CARDINAL 'CARDINAL) - (REAL 'REAL) - 'MIXED)) - (MIXED (SELECTQ TYPE2 - (REAL 'REAL) - 'MIXED)) - (REAL 'REAL) - 'MIXED]) - -(BUILD.COERCE - [LAMBDA (EXP TYPE) (* kbr%: "25-Nov-85 17:27") - (PROG (TYPEEXP ANSWER) - (SETQ TYPEEXP (BUILD.REFINE.TYPE TYPE)) - (SETQ ANSWER (COND - ((type? MARRAY TYPEEXP) - (FRESHLINE T) - (printout T T "Coercion to " TYPE " array type." T) - (BUILD.COERCE.MARRAY EXP TYPEEXP)) - ((type? MLIST TYPEEXP) - (BUILD.COERCE.MLIST EXP TYPEEXP)) - ((type? EXPLIST EXP) - (BUILD.COERCE.EXPLIST EXP TYPEEXP)) - (T EXP))) - (RETURN ANSWER]) - -(BUILD.COERCE.MARRAY - [LAMBDA (EXP MARRAY) (* kbr%: "25-Nov-85 17:27") - (PROG (TYPE ANSWER) - - (* This is legal MESA/CEDAR code with no very elegant Interlisp translation. - *) - - (SETQ TYPE (fetch (MARRAY TYPE) of MARRAY)) - (SETQ ANSWER (COND - [(type? EXPLIST EXP) (* Should be an ORDERLIST. - *) - (CONS 'LIST (for ITEM in (fetch (EXPLIST ITEMS) of EXP) - collect (BUILD.COERCE ITEM TYPE] - (T (* EXP might be an MARRAY var. - *) - EXP))) - (RETURN ANSWER]) - -(BUILD.COERCE.MLIST - [LAMBDA (EXP MLIST) (* kbr%: "25-Nov-85 17:27") - (PROG (TYPE ANSWER) - (SETQ TYPE (fetch (MLIST TYPE) of MLIST)) - (SETQ ANSWER (COND - ((NOT (LISTP EXP)) - EXP) - [(EQ (CAR EXP) - 'LIST) - `(LIST ,@(for ITEM in (CDR EXP) collect (BUILD.COERCE ITEM TYPE] - [(EQ (CAR EXP) - 'CONS) - `(CONS ,(BUILD.COERCE (CADR EXP) - TYPE) ,(BUILD.COERCE (CADDR EXP) - MLIST] - (T EXP))) - (RETURN ANSWER]) - -(BUILD.COERCE.EXPLIST - [LAMBDA (EXPLIST MRECORD) (* kbr%: "25-Nov-85 17:27") - - (* Converts a Mesa explist EXPLIST (ambiguous by itself) into a CREATE TYPE - Lisp expression. *) - - (PROG (FIELDLIST ALIGNMENT SETTINGS ANSWER) - (COND - ((NOT (type? EXPLIST EXPLIST)) - (RETURN EXPLIST))) - [COND - ((NOT (type? MRECORD MRECORD)) - (printout T T MRECORD " not a record" T) (* Proceed to do the best we can. - *) - [COND - ((type? KEYLIST EXPLIST) - [SETQ SETTINGS (for ITEM in (fetch (KEYLIST ITEMS) of EXPLIST) - join `(,(fetch (KEYITEM ID) of ITEM) _ ,(fetch (KEYITEM OPTEXP) - of ITEM] - (RETURN `(create ,MRECORD ,@SETTINGS] - (RETURN `(,MRECORD ,@(fetch (EXPLIST ITEMS) of EXPLIST] - (SETQ FIELDLIST (fetch (MRECORD FIELDLIST) of MRECORD)) - (SETQ ALIGNMENT (BUILD.ALIGN FIELDLIST EXPLIST)) - [SETQ SETTINGS (COND - [(type? PAIRLIST FIELDLIST) - (for PAIRITEM in (fetch (PAIRLIST ITEMS) of FIELDLIST) as ALIGNVALUE - in ALIGNMENT when [NOT (FMEMB ALIGNVALUE '(NIL TRASH] - join `(,(fetch (PAIRITEM ID) of PAIRITEM) _ ,ALIGNVALUE] - [(type? TYPELIST FIELDLIST) - (for TYPEITEM in (fetch (TYPELIST ITEMS) of FIELDLIST) as ALIGNVALUE - in ALIGNMENT as I from 1 - when [NOT (FMEMB ALIGNVALUE '(NIL TRASH] - join `(,(PACK* 'FIELD I) _ ,ALIGNVALUE] - (T (SHOULDNT] - EXIT - [SETQ ANSWER `(create ,(fetch (MRECORD RECORDID) of MRECORD) ,@SETTINGS] - (RETURN ANSWER]) - -(BUILD.ALIGN - [LAMBDA (FIELDLIST EXPLIST) (* kbr%: "25-Nov-85 17:27") - (PROG (ANSWER) - [SETQ ANSWER (COND - ((AND (NULL FIELDLIST) - (NULL EXPLIST)) - NIL) - ((EQ FIELDLIST 'ANY) - (fetch (EXPLIST ITEMS) of EXPLIST)) - [(type? ORDERLIST EXPLIST) - (COND - ((type? PAIRLIST FIELDLIST) - (for PAIRITEM in (fetch (PAIRLIST ITEMS) of FIELDLIST) as OPTEXP - in (fetch (ORDERLIST ITEMS) of EXPLIST) - collect (BUILD.ALIGN.VALUE (fetch (PAIRITEM TYPEEXP) of PAIRITEM) - (fetch (PAIRITEM DEFAULT) of PAIRITEM) - OPTEXP))) - ((type? TYPELIST FIELDLIST) - (for TYPEITEM in (fetch (TYPELIST ITEMS) of FIELDLIST) as OPTEXP - in (fetch (ORDERLIST ITEMS) of EXPLIST) - collect (BUILD.ALIGN.VALUE (fetch (TYPEITEM TYPEEXP) of TYPEITEM) - (fetch (TYPEITEM DEFAULT) of TYPEITEM) - OPTEXP))) - (T (SHOULDNT] - [(type? KEYLIST EXPLIST) - (COND - ((NOT (type? PAIRLIST FIELDLIST)) - (SHOULDNT))) - (for PAIRITEM in (fetch (PAIRLIST ITEMS) of FIELDLIST) - collect (BUILD.ALIGN.VALUE (fetch (PAIRITEM TYPEEXP) of PAIRITEM) - (fetch (PAIRITEM DEFAULT) of PAIRITEM) - (fetch (KEYITEM OPTEXP) - of (ASSOC (fetch (PAIRITEM ID) of PAIRITEM) - (fetch (KEYLIST ITEMS) of EXPLIST] - (T (SHOULDNT] - (RETURN ANSWER]) - -(BUILD.ALIGN.VALUE - [LAMBDA (TYPEEXP DEFAULT OPTEXP) (* kbr%: "25-Nov-85 17:27") - (PROG (ANSWER) - [SETQ ANSWER (OR (COND - ((AND (fetch (DEFAULT TRASH) of DEFAULT) - (EQ OPTEXP 'TRASH)) - 'TRASH)) - (BUILD.COERCE OPTEXP TYPEEXP) - (COPY (fetch (DEFAULT EXP) of DEFAULT] - (RETURN ANSWER]) - -(BUILD.ADD.TO.FILECOMS - [LAMBDA (NAME TYPE) (* kbr%: "25-Nov-85 17:27") - (PROG (FILECOMSVAR FILECOMS) - (SETQ FILECOMSVAR BUILD.FILECOMS) - (SETQ FILECOMS (GETTOPVAL FILECOMSVAR)) (* FILECOMS is reversed at this point. - *) - [COND - ((AND FILECOMS (EQ (CAR (CAR FILECOMS)) - TYPE)) - (NCONC (CAR FILECOMS) - (LIST NAME))) - (T (push FILECOMS (LIST TYPE NAME] - (SETTOPVAL FILECOMSVAR FILECOMS]) - -(BUILD.ADD1 - [LAMBDA (EXP) (* kbr%: "25-Nov-85 17:27") - (COND - ((FIXP EXP) - (ADD1 EXP)) - (T `(ADD1 ,EXP]) - -(BUILD.CALL - [LAMBDA (FN EXPLIST) (* kbr%: "25-Nov-85 17:27") - - (* Function call. Cons FN onto front of coerced EXPLIST items. - *) - - (CONS FN (BUILD.ALIGN (GETPROP FN 'MESA.ARGLIST) - EXPLIST]) - -(BUILD.CHARCODE - [LAMBDA (CHARCODE) (* kbr%: "25-Nov-85 17:27") - (PROG (META CONTROL CHAR NAME ANSWER) - [SETQ NAME (SELECTQ CHARCODE - (0 'NULL) - (7 'BELL) - (8 'BS) - (9 'TAB) - (10 'LF) - (12 'FF) - (13 'CR) - (27 'ESC) - (32 'SPACE) - (127 'DEL) - (PROGN [COND - ((IGEQ CHARCODE 128) - (SETQ META T) - (SETQ CHARCODE (IDIFFERENCE CHARCODE 128] - [COND - ((ILESSP CHARCODE 32) - (SETQ CONTROL T) - (SETQ CHARCODE (IPLUS CHARCODE 32] - (SETQ CHAR (MKATOM (CHARACTER CHARCODE))) - (COND - ((AND META CONTROL) - (PACK* '%#^ CHAR)) - (META (PACK* '%# CHAR)) - (CONTROL (PACK* '^ CHAR)) - (T CHAR] - (SETQ ANSWER (LIST 'CHARCODE NAME)) - (RETURN ANSWER]) - -(BUILD.COND - [LAMBDA (EXP1 EXP2 EXP3) (* kbr%: "25-Nov-85 17:27") - (PROG (HEAD TAIL ANSWER) - (SETQ HEAD (CONS EXP1 (BUILD.TAIL EXP2))) - [SETQ TAIL (COND - ((NULL EXP3) - NIL) - ((AND (LISTP EXP3) - (EQ (CAR EXP3) - 'COND)) - (CDR EXP3)) - (T `((T ,@(BUILD.TAIL EXP3] - [SETQ ANSWER `(COND - ,HEAD - ,@TAIL] - (RETURN ANSWER]) - -(BUILD.COPY.OF - [LAMBDA (EXP) (* kbr%: "25-Nov-85 17:27") - (COND - ((AND (LISTP EXP) - (EQ (CAR EXP) - 'SETQ)) - (CADR EXP)) - (T (COPY EXP]) - -(BUILD.FETCH - [LAMBDA (RECORDNAME FIELDNAME DATUM) (* kbr%: "25-Nov-85 17:27") - (PROG (MRECORD ANSWER) - [SETQ MRECORD (COND - (RECORDNAME (BUILD.REFINE.TYPE RECORDNAME)) - (T (BUILD.ULTIMATE.TYPE DATUM] - [SETQ ANSWER (COND - [(type? MRECORD MRECORD) - (SETQ RECORDNAME (fetch (MRECORD RECORDID) of MRECORD)) - `(fetch (,RECORDNAME ,FIELDNAME) of ,DATUM] - (T (printout T T "Bad fetch " RECORDNAME " " FIELDNAME " " DATUM T) - (LIST FIELDNAME DATUM] - (RETURN ANSWER]) - -(BUILD.FORCLAUSE.BY - [LAMBDA (CONTROLID EXP1 EXP2) (* kbr%: "25-Nov-85 17:27") - `(for ,CONTROLID _ ,EXP1 by ,EXP2]) - -(BUILD.FORCLAUSE.IN - [LAMBDA (CONTROLID DIRECTION RANGE) (* kbr%: "25-Nov-85 17:27") - (PROG (INTERVAL LBOUND UBOUND ANSWER) - (SETQ INTERVAL (fetch (MRANGE INTERVAL) of RANGE)) - (SETQ LBOUND (fetch (MINTERVAL LBOUND) of INTERVAL)) - (SETQ UBOUND (fetch (MINTERVAL UBOUND) of INTERVAL)) - (SELECTQ (fetch (MINTERVAL KIND) of INTERVAL) - (CC) - (CO (SETQ UBOUND (BUILD.SUB1 UBOUND))) - (OC (SETQ LBOUND (BUILD.ADD1 LBOUND))) - (OO (SETQ LBOUND (BUILD.ADD1 LBOUND)) - (SETQ UBOUND (BUILD.SUB1 UBOUND))) - (SHOULDNT)) - [SETQ ANSWER (COND - ((EQ DIRECTION 'DECREASING) - `(for ,CONTROLID from ,LBOUND to ,UBOUND by -1)) - (T `(for ,CONTROLID from ,LBOUND to ,UBOUND] - (RETURN ANSWER]) - -(BUILD.FORCLAUSE.THROUGH - [LAMBDA (RANGE) (* kbr%: "25-Nov-85 17:27") - (BUILD.FORCLAUSE.IN 'X NIL RANGE]) - -(BUILD.IN - [LAMBDA (EXP RANGE) (* kbr%: "25-Nov-85 17:28") - (PROG (INTERVAL EXP2 LPRED UPRED ANSWER) - (SETQ RANGE (BUILD.REFINE.TYPE RANGE)) - [COND - ((NOT (type? MRANGE RANGE)) - (printout T T RANGE " not a range." T) - (RETURN `(in ,RANGE] - (SETQ INTERVAL (fetch (MRANGE INTERVAL) of RANGE)) - (SELECTQ (fetch (MINTERVAL KIND) of INTERVAL) - (CC (SETQ LPRED 'IGEQ) - (SETQ UPRED 'ILEQ)) - (CO (SETQ LPRED 'IGEQ) - (SETQ UPRED 'ILESSP)) - (OC (SETQ LPRED 'IGREATERP) - (SETQ UPRED 'ILEQ)) - (OO (SETQ LPRED 'ILESSP) - (SETQ UPRED 'IGREATERP)) - (SHOULDNT)) - (SETQ EXP2 (BUILD.COPY.OF EXP)) - [SETQ ANSWER `(AND (,LPRED ,EXP ,(fetch (MINTERVAL LBOUND) of INTERVAL)) - (,UPRED ,EXP2 ,(fetch (MINTERVAL UBOUND) of INTERVAL] - (RETURN ANSWER]) - -(BUILD.ISTYPE - [LAMBDA (EXP TYPE) (* kbr%: "25-Nov-85 17:28") - (PROG (MRECORD RECORDID ANSWER) - (SETQ MRECORD (BUILD.REFINE.TYPE TYPE)) - (SETQ RECORDID (COND - ((type? MRECORD MRECORD) - (fetch (MRECORD RECORDID) of MRECORD)) - (T (printout T T "Bad istype " EXP " " TYPE T) - TYPE))) - [SETQ ANSWER `(type? ,TYPE ,EXP] - (RETURN ANSWER]) - -(BUILD.LAMBDA - [LAMBDA (PAIRLIST BODY) (* kbr%: "25-Nov-85 17:28") - (PROG (ARGLIST ANSWER) - [SETQ ARGLIST (for ITEM in (fetch (PAIRLIST ITEMS) of PAIRLIST) - collect (BUILD.LOCALVARID NIL (fetch (PAIRITEM ID) of ITEM] - [SETQ ANSWER `(LAMBDA ,ARGLIST - ,@(BUILD.TAIL BODY] - (RETURN ANSWER]) - -(BUILD.NEW - [LAMBDA (TYPEEXP INITIALIZATION) (* kbr%: "25-Nov-85 17:28") - (BUILD.COERCE INITIALIZATION TYPEEXP]) - -(BUILD.OR - [LAMBDA (EXPS) (* kbr%: "25-Nov-85 17:28") - (COND - ((NULL EXPS) - T) - ((NULL (CDR EXPS)) - (CAR EXPS)) - (T `(OR ,@EXPS]) - -(BUILD.PROG - [LAMBDA (STATEMENTLIST) (* kbr%: "25-Nov-85 17:28") - (PROG (VARS LAST ANSWER) - [SETQ ANSWER (APPEND (fetch (SCOPE INITLIST) of BUILD.CURRENT.SCOPE) - (BUILD.TAIL (BUILD.PROGN STATEMENTLIST] - (SETQ VARS (APPEND (fetch (SCOPE VARLIST) of BUILD.CURRENT.SCOPE) - (fetch (SCOPE RETURNVARS) of BUILD.CURRENT.SCOPE))) - [COND - [(OR VARS (fetch (SCOPE RETURNS) of BUILD.CURRENT.SCOPE) - (for EXP in ANSWER thereis (LITATOM EXP))) (* Local vars, return, or go here. - *) - [COND - (ANSWER (SETQ LAST (CAR (LAST ANSWER] - [COND - ([NOT (OR (NULL (fetch (SCOPE RETURNVARS) of BUILD.CURRENT.SCOPE)) - (AND (LISTP LAST) - (FMEMB (CAR LAST) - '(GO RETURN] - (SETQ ANSWER (APPEND ANSWER (LIST (BUILD.RETURN] - (SETQ ANSWER `(PROG ,VARS - ,@ANSWER] - (T (SETQ ANSWER (BUILD.PROGN ANSWER] - (RETURN ANSWER]) - -(BUILD.PROGN - [LAMBDA (EXPS) (* kbr%: "25-Nov-85 17:28") - (COND - ((NULL EXPS) - NIL) - ((NULL (CDR EXPS)) - (CAR EXPS)) - (T (CONS 'PROGN (for EXP in EXPS join (BUILD.TAIL EXP]) - -(BUILD.REPLACE - [LAMBDA (RECORDNAME FIELDNAME DATUM VALUE) (* kbr%: "25-Nov-85 17:28") - (PROG (MRECORD ANSWER) - [SETQ MRECORD (COND - (RECORDNAME (BUILD.REFINE.TYPE RECORDNAME)) - (T (BUILD.ULTIMATE.TYPE DATUM] - [SETQ ANSWER (COND - [(type? MRECORD MRECORD) - (SETQ RECORDNAME (fetch (MRECORD RECORDID) of MRECORD)) - `(replace (,RECORDNAME ,FIELDNAME) of ,DATUM with ,VALUE] - (T (printout T T "Bad replace " RECORDNAME " " FIELDNAME " " DATUM " " - VALUE T) - (LIST FIELDNAME DATUM] - (RETURN ANSWER]) - -(BUILD.RETURN - [LAMBDA (OPTARGS) (* kbr%: "25-Nov-85 17:28") - - (* COPY so DEDIT won't get confused by shared structure. - *) - - (PROG (SCOPE FN PROCID FIELDLIST EXPLIST ALIGNMENT ANSWER) - (* Get scope of innermost PROC or DO. - *) - (SETQ SCOPE (for SCOPE in (CONS BUILD.CURRENT.SCOPE BUILD.SCOPE.STACK) - thereis (fetch (SCOPE ID) of SCOPE))) - (replace (SCOPE RETURNS) of SCOPE with T) - (SETQ FN (fetch (SCOPE ID) of SCOPE)) - [SETQ ALIGNMENT (COND - ((EQ FN 'DO) - OPTARGS) - (OPTARGS (SETQ PROCID (BUILD.PROCID BUILD.PREFIX FN)) - [SETQ FIELDLIST - (OR (GETPROP PROCID 'MESA.RETURNLIST) - (PROGN (printout T T "No returnlist for " PROCID "." T) - 'ANY] - (BUILD.ALIGN FIELDLIST OPTARGS)) - (T (fetch (SCOPE RETURNVARS) of SCOPE] - [SETQ ANSWER (COND - ((NULL ALIGNMENT) - (LIST 'RETURN)) - [(NULL (CDR ALIGNMENT)) - `(RETURN ,@ALIGNMENT] - (T `(RETURN (LIST ,@ALIGNMENT] - (RETURN ANSWER]) - -(BUILD.SELECTQ - [LAMBDA (CASEHEAD CLAUSES OTHERWISE) (* kbr%: "25-Nov-85 17:28") - (PROG (ID EXP OPTEXP TYPE FN CCLAUSES SCLAUSES ANSWER) - (SETQ ID (fetch (CASEHEAD ID) of CASEHEAD)) - (SETQ EXP (fetch (CASEHEAD EXP) of CASEHEAD)) - (SETQ OPTEXP (fetch (CASEHEAD OPTEXP) of CASEHEAD)) - (SETQ EXP (OR OPTEXP ID EXP)) - (COND - ((EQ EXP T) (* Mesa SELECT TRUE FROM statement. - *) - (SETQ ANSWER (BUILD.SELECTTRUEFROM CLAUSES OTHERWISE)) - (RETURN ANSWER))) - (SETQ TYPE (BUILD.ULTIMATE.TYPE EXP)) - (SETQ FN (BUILD.SELECTQ.FN TYPE)) - [for CLAUSE in CLAUSES do (COND - ([for CASETEST in (CAR CLAUSE) - thereis (COND - ((AND (LISTP CASETEST) - (FMEMB (CAR CASETEST) - '(IN type?] - (push CCLAUSES CLAUSE)) - (T (push SCLAUSES CLAUSE] - (SETQ CCLAUSES (DREVERSE CCLAUSES)) - (SETQ SCLAUSES (DREVERSE SCLAUSES)) - (SETQ CCLAUSES (for CCLAUSE in CCLAUSES collect (BUILD.SELECTQ.CCLAUSE EXP CCLAUSE TYPE))) - (SETQ SCLAUSES (for SCLAUSE in SCLAUSES collect (BUILD.SELECTQ.SCLAUSE SCLAUSE TYPE))) - (SETQ ANSWER (COND - [SCLAUSES `(,FN ,EXP ,@SCLAUSES ,OTHERWISE] - (T OTHERWISE))) - (SETQ ANSWER (COND - [CCLAUSES (COND - [ANSWER `(COND - ,@CCLAUSES - (T ,@(BUILD.TAIL ANSWER] - (T `(COND - ,@CCLAUSES] - (T ANSWER))) - (RETURN ANSWER]) - -(BUILD.SELECTQ.FN - [LAMBDA (TYPE) (* kbr%: "25-Nov-85 17:28") - (COND - ((EQ TYPE 'CHARACTER) - 'SELCHARQ) - (T 'SELECTQ]) - -(BUILD.SELECTQ.CCLAUSE - [LAMBDA (EXP CCLAUSE TYPE) (* kbr%: "25-Nov-85 17:28") - (PROG (EXP2 KEYS TESTS ANSWER) - (SETQ EXP2 (BUILD.COPY.OF EXP)) - (SETQ KEYS (CAR CCLAUSE)) - [SETQ TESTS (CONS (BUILD.SELECTQ.TEST EXP (CAR KEYS)) - (for KEY in (CDR KEYS) collect (BUILD.SELECTQ.TEST EXP KEY] - [COND - ((NULL (CDR TESTS)) - (SETQ TESTS (CAR TESTS))) - (T (SETQ TESTS (CONS 'OR TESTS] - (SETQ ANSWER (CONS TESTS (CDR CCLAUSE))) - (RETURN ANSWER]) - -(BUILD.SELECTQ.TEST - [LAMBDA (EXP KEY) (* kbr%: "25-Nov-85 17:28") - (COND - ((AND (LISTP KEY) - (EQ (CAR KEY) - 'IN)) - (BUILD.IN EXP (CADR KEY))) - ((AND (LISTP KEY) - (EQ (CAR KEY) - 'type?)) - KEY) - (T `(FMEMB ,EXP ',KEY]) - -(BUILD.SELECTQ.SCLAUSE - [LAMBDA (SCLAUSE TYPE) (* kbr%: "25-Nov-85 17:28") - (PROG (KEYS ANSWER) - (SETQ KEYS (CAR SCLAUSE)) - (SETQ KEYS (for KEY in KEYS collect (BUILD.SELECTQ.KEY KEY TYPE))) - [COND - ((NULL (CDR KEYS)) - (SETQ KEYS (CAR KEYS] - (SETQ ANSWER (CONS KEYS (CDR SCLAUSE))) - (RETURN ANSWER]) - -(BUILD.SELECTQ.KEY - [LAMBDA (KEY TYPE) (* kbr%: "25-Nov-85 17:28") - (COND - ((EQ TYPE 'CHARACTER) - (COND - [(LISTP KEY) - (COND - ((EQ (CAR KEY) - 'CHARCODE) - (CADR KEY)) - ((EQ (CAR KEY) - 'IN) - (LIST 'IN (LIST (CAR (CADR KEY)) - (BUILD.SELECTQ.KEY (CADR (CADR KEY)) - 'CHARACTER) - (BUILD.SELECTQ.KEY (CADDR (CADR KEY)) - 'CHARACTER] - (T KEY))) - (T KEY]) - -(BUILD.SELECTTRUEFROM - [LAMBDA (CLAUSES OTHERWISE) (* kbr%: "25-Nov-85 17:28") - (PROG (ANSWER) - (SETQ CLAUSES (for CLAUSE in CLAUSES collect (BUILD.SELECTTRUEFROM.CLAUSE CLAUSE))) - (SETQ ANSWER (COND - [CLAUSES (COND - [OTHERWISE `(COND - ,@CLAUSES - (T ,@(BUILD.TAIL OTHERWISE] - (T `(COND - ,@CLAUSES] - (T OTHERWISE))) - (RETURN ANSWER]) - -(BUILD.SELECTTRUEFROM.CLAUSE - [LAMBDA (CLAUSE) (* kbr%: "25-Nov-85 17:28") - (CONS (BUILD.OR (CAR CLAUSE)) - (CDR CLAUSE]) - -(BUILD.SETQ - [LAMBDA (LHS RHS) (* kbr%: "25-Nov-85 17:28") - (PROG (TYPE ANSWER) - (COND - ((type? ORDERLIST LHS) - (SETQ ANSWER (BUILD.SETQ.ORDERLIST LHS RHS)) - (RETURN ANSWER))) - (SETQ TYPE (BUILD.ULTIMATE.TYPE LHS)) - (SETQ RHS (BUILD.COERCE RHS TYPE)) - [SETQ ANSWER (COND - ((NULL LHS) - RHS) - ((type? MARRAY TYPE) - (BUILD.SETQ.ARRAY LHS RHS)) - [(LISTP LHS) - (SELECTQ (CAR LHS) - (ELT `(SETA ,(CADR LHS) ,(CADDR LHS) ,RHS)) - (fetch `(replace ,@(CDR LHS) with ,RHS)) - (NTHCHARCODE `(RPLCHARCODE ,(CADR LHS) ,(CADDR LHS) ,RHS)) - (PROGN (printout T "Bad setq " LHS " " RHS) - (COND - [(IEQP (LENGTH LHS) - 2) - (COND - [(FIXP (CADR LHS)) - (* Guess array access. - *) - `(SETA ,(CAR LHS) ,(CADR LHS) ,RHS] - (T (* Guess record access. - *) - (BUILD.REPLACE NIL (CAR LHS) - (CADR LHS) - RHS] - (T (* Guess it could be anything. - *) - `(SETQ ,LHS ,RHS] - (T `(SETQ ,LHS ,RHS] - (RETURN ANSWER]) - -(BUILD.SETQ.ARRAY - [LAMBDA (LHS RHS) (* kbr%: "25-Nov-85 17:28") - (* SETQ array LHS. I.e., FILLARRAY. - *) - (PROG (EXPS ANSWER) - (COND - ((NOT (type? ORDERLIST RHS)) - (printout T T "Bad setq array " LHS " " RHS T) - [SETQ ANSWER `(SETQ ,LHS ,RHS] - (RETURN ANSWER))) - (SETQ EXPS (for ORDERITEM in (fetch (ORDERLIST ITEMS) of RHS) as I from 0 - collect (BUILD.SETQ `(ELT ,LHS ,I) ORDERITEM))) - (SETQ ANSWER (BUILD.PROGN EXPS)) - (RETURN ANSWER]) - -(BUILD.SETQ.ORDERLIST - [LAMBDA (ORDERLIST RHS) (* kbr%: "25-Nov-85 17:28") - (* SETQ orderlist ORDERLIST. - *) - (PROG (ORDERITEMS TEMP TEMPPOS EXPS ANSWER) (* Get ORDERITEMS *) - (SETQ ORDERITEMS (fetch (ORDERLIST ITEMS) of ORDERLIST)) - (COND - ((NULL ORDERITEMS) - (RETURN RHS)) - ((NULL (CDR ORDERITEMS)) - [SETQ ANSWER (BUILD.SETQ (CAR ORDERITEMS) - `(CAR ,RHS] - (RETURN ANSWER))) (* Get TEMPorary variable. - *) - (SETQ TEMP (CAR RHS)) - (SETQ TEMPPOS (STRPOS "." TEMP)) - [COND - (TEMPPOS (SETQ TEMP (SUBATOM TEMP (ADD1 TEMPPOS) - -1] (* Get EXPS. *) - [SETQ EXPS (COND - [(ILEQ (LENGTH ORDERITEMS) - 3) - (for ID in ORDERITEMS when ID as ACCESS in '(CAR CADR CADDR) - collect (BUILD.SETQ ID `(,ACCESS ,TEMP] - (T (for ID in ORDERITEMS when ID - collect (BUILD.SETQ ID `(POP ,TEMP] - [push EXPS `(SETQ ,TEMP ,RHS] (* Build PROGN ANSWER. - *) - (SETQ ANSWER (BUILD.PROGN EXPS)) - (RETURN ANSWER]) - -(BUILD.SUB1 - [LAMBDA (EXP) (* kbr%: "25-Nov-85 17:28") - (COND - ((FIXP EXP) - (SUB1 EXP)) - (T `(SUB1 ,EXP]) - -(BUILD.TAIL - [LAMBDA (EXP) (* kbr%: "25-Nov-85 17:28") - (COND - ((NULL EXP) - NIL) - ((AND (LISTP EXP) - (EQ (CAR EXP) - 'PROGN)) - (CDR EXP)) - (T (LIST EXP]) -) -(BUILD.INIT) -(PRETTYCOMPRINT MESATOLISPCOMS) - -(RPAQQ MESATOLISPCOMS - [ - (* ;; "MESATOLISP -- By Kelly Roach. Lyricized by L. Masinter") - - (COMS - -(* ;;; "SCAN: reading mesa/cedar files") - - [INITVARS (SCAN.STRING (CL:MAKE-ARRAY 256 :INITIAL-ELEMENT '#\A :ELEMENT-TYPE - 'CL:CHARACTER :ADJUSTABLE T :FILL-POINTER 0)) - (SCAN.CHAR NIL) - (SCAN.QDOT NIL) - (SCAN.BOTH.RESERVED '(! %# %( %) * + %, - %. |..| / %: ; < <= = => > >= @ ABS - ALL AND ANY APPLY ARRAY BASE BEGIN BROADCAST CODE - COMPUTED CONTINUE DECREASING DEFINITIONS DEPENDENT - DESCRIPTOR DIRECTORY DO ELSE ENABLE END ENDCASE ENDLOOP - ENTRY ERROR EXIT EXITS EXPORTS FINISHED FIRST FOR FORK - FRAME FREE FROM GO GOTO IF IMPORTS IN INLINE INTERNAL - ISTYPE JOIN LAST LENGTH LOCKS LONG LOOP LOOPHOLE MACHINE - MAX MIN MOD MONITOR MONITORED NARROW NEW NILL NOT NOTIFY - NULL OF OPEN OR ORD ORDERED OVERLAID PACKED POINTER PORT - PRED PRIVATE PROC PROCEDURE PROCESS PROGRAM PUBLIC - READONLY RECORD REJECT RELATIVE REPEAT RESTART RESUME - RETRY RETURN RETURNS SELECT SEQUENCE SHARES SIGNAL SIZE - START STATE STOP SUCC THEN THROUGH TO TRANSFER TRASH - TYPE UNCOUNTED UNTIL USING VAL VAR WAIT WHILE WITH ZONE - %[ %] ^ _ { %| } ~)) - (SCAN.CEDAR.RESERVED '(CEDAR CHECKED CONS LIST PAINTED REF SAFE TRUSTED - UNCHECKED UNSAFE)) - (SCAN.MESA.RESERVED '(RESIDENT] - (FNS SCAN.INIT SCAN.START SCAN.TEST SCAN.TESTFILE SCAN.OPENSTREAM SCAN.TOKEN - SCAN.NUMBER SCAN.ACCEPT SCAN.APPENDDECIMAL SCAN.APPENDOCTAL SCAN.APPENDHEX - SCAN.APPENDTOSCALE SCAN.VALIDFRACTION SCAN.DECIMAL SCAN.OCTAL SCAN.OCTALCHAR - SCAN.HEX SCAN.FLOATING SCAN.ESCAPE) - (P (SCAN.INIT))) - (COMS (* ; "PARSE *") - [INITVARS (PARSE.FILELST NIL) - (PARSE.STREAM NIL) - (PARSE.FILECOMS NIL) - (PARSE.LANGUAGE NIL) - (PARSE.DIRLST NIL) - (PARSE.CLASS NIL) - (PARSE.ATOM NIL) - (PARSE.CLASS2 NIL) - (PARSE.ATOM2 NIL) - (PARSE.CASEHEAD.FIRST '(WITH SELECT)) - (PARSE.DEFHEAD.FIRST '(DEFINITIONS)) - (PARSE.DEPENDENT.FIRST '(MACHINE)) - (PARSE.DOTEST.FIRST '(UNTIL WHILE)) - (PARSE.FORCLAUSE.FIRST '(FOR THROUGH)) - (PARSE.HEAP.FIRST '(UNCOUNTED)) - (PARSE.INTERVAL.FIRST '(%( %[)) - (PARSE.OPTRELATION.FIRST '(%# < <= = > >= IN NOT ~)) - (PARSE.ORDERED.FIRST '(ORDERED)) - (PARSE.ORDERLIST.FOLLOW '(! ; END %] })) - (PARSE.PACKED.FIRST '(PACKED)) - (PARSE.PREFIXOP.FIRST '(ABS BASE LENGTH LONG MAX MIN ORD PRED SUCC)) - (PARSE.PROGHEAD.FIRST '(MONITOR PROGRAM RESIDENT)) - (PARSE.QUALIFIER.FIRST '(%. %[ ^)) - (PARSE.RANGE.FOLLOW '(! %) %, |..| %: ; => AND DO ELSE END ENDCASE ENDLOOP EXITS - FINISHED FROM NULL OR REPEAT SELECT THEN TRASH UNTIL - WHILE %] })) - (PARSE.TRANSFER.FIRST '(BROADCAST ERROR JOIN NOTIFY RESTART RETURN SIGNAL START - TRANSFER)) - (PARSE.TRANSFERMODE.FIRST '(ERROR PORT PROCESS PROGRAM SIGNAL)) - (PARSE.TRANSFEROP.FIRST '(ERROR FORK JOIN NEW SIGNAL START)) - (PARSE.TYPECONS.FIRST '(%( ARRAY BASE DESCRIPTOR ERROR FRAME LONG MACHINE - MONITORED ORDERED PACKED POINTER PORT PROC PORCEDURE - PROCESS PROGRAM RECORD SIGNAL UNCOUNTED VAR %[ {)) - (PARSE.TYPEOP.FIRST '(FIRST LAST NILL)) - (PARSE.VARIANTPART.FIRST '(PACKED SELECT SEQUENCE)) - (PARSE.CATCHLIST.FOLLOW '(END %] })) - (PARSE.CONTROLID.FOLLOW '(DECREASING IN _)) - (PARSE.DECLIST.FOLLOW '(; END })) - (PARSE.DEFAULTOPT.FOLLOW '(%, ; END %] })) - (PARSE.EXITLIST.FOLLOW '(END ENDLOOP FINISHED })) - (PARSE.MODULELIST.FOLLOW '(IEQP EXPORTS SHARES)) - (PARSE.OPTARGS.FOLLOW '(; ELSE END ENDCASE ENDLOOP EXITS FINISHED REPEAT %] })) - (PARSE.OPTEXP.FOLLOW '(! %, ; END FROM %] })) - (PARSE.SCOPE.FOLLOW '(END EXITS })) - (PARSE.STATEMENTLIST.FOLLOW '(END ENDLOOP EXITS REPEAT })) - (PARSE.TYPEEXP.FOLLOW '(! %, ; = => DECREASING END EXPORTS FROM IMPORTS IN OF - SHARES %] _ })) - (PARSE.PREDEFINED.TYPES '(ATOM BOOL BOOLEAN CARDINAL CHAR CHARACTER CONDITION - INT INTEGER MDSZone MONITORLOCK NAT REAL STRING - StringBody UNSPECIFIED WORD)) - (PARSE.RELOPS (LIST '= '%# '< '<= '> '>=)) - (PARSE.ADDOPS (LIST '+ '-)) - (PARSE.MULTOPS (LIST '* '/ 'MOD)) - (PARSE.TRANSFEROPS '(SIGNAL ERROR START JOIN NEW FORK)) - (PARSE.PREFIXOPS '(LONG ABS PRED SUCC ORD MIN MAX BASE LENGTH)) - (PARSE.TYPEOPS '(FIRST LAST NILL)) - (PARSE.NOTS '(~ NOT] - (RECORDS PARSERSTATE MINTERVAL MRANGE MRELATIVE MPAINTED MENUMERATED MRECORD MVAR - MARRAY MDESCRIPTOR MFRAME MREF MLIST PAIRITEM DEFAULT TYPELIST TYPEITEM MPOINTER - CASEHEAD BINDITEM KEYITEM FIELDLIST PAIRLIST ORDERLIST KEYLIST EXPLIST) - (FNS PARSE.MESA PARSE.CEDAR PARSE.FILE PARSE.GET.STATE PARSE.SET.STATE PARSE.BIN - PARSE.VARID PARSE.SMURF PARSE.THISIS.MESA PARSE.THISIS.CEDAR PARSE.MODULE - PARSE.INCLUDEITEM PARSE.INCLUDECHECK PARSE.SEADIRT PARSE.PROGHEAD PARSE.RESIDENT - PARSE.SAFE PARSE.DEFHEAD PARSE.TILDE PARSE.DEFINITIONS PARSE.DEFBODY PARSE.LOCKS - PARSE.LAMBDA PARSE.MODULEITEM PARSE.DECLARATION PARSE.PUBLIC PARSE.ENTRY - PARSE.IDLIST PARSE.IDENTLIST PARSE.POSITION PARSE.OPTBITS PARSE.INTERVAL - PARSE.TYPEEXP.HERE PARSE.TYPEEXP PARSE.RANGE PARSE.TYPEAPPL PARSE.TYPEAPPL.CONT - PARSE.TYPEID PARSE.TYPEID.CONT PARSE.TYPECONS PARSE.TYPECONS1 PARSE.TYPECONS.CONT - PARSE.TYPECONS.RANGE PARSE.TYPECONS.RELATIVE PARSE.TYPECONS.PAINTED - PARSE.TYPECONS2 PARSE.TYPECONS.INTERVAL PARSE.TYPECONS.DEPENDENT - PARSE.TYPECONS.ENUMERATED PARSE.TYPECONS.RECORD PARSE.TYPECONS.ORDERED - PARSE.TYPECONS.VAR PARSE.TYPECONS.PACKED PARSE.TYPECONS.DESCRIPTOR - PARSE.TYPECONS.SAFE PARSE.TYPECONS.HEAP PARSE.TYPECONS.LONG PARSE.TYPECONS.FRAME - PARSE.TYPECONS.REF PARSE.TYPECONS.LIST PARSE.IDENT PARSE.ELEMENT PARSE.MONITORED - PARSE.DEPENDENT PARSE.RECLIST PARSE.VARIANTPAIR PARSE.PAIRITEM PARSE.DEFAULTOPT - PARSE.VARIANTPART PARSE.VCASEHEAD PARSE.TAGTYPE PARSE.VARIANTITEM PARSE.TYPELIST - PARSE.TYPEITEM PARSE.POINTERTYPE PARSE.TRANSFERMODE PARSE.INITIALIZATION - PARSE.INITVALUE PARSE.CHECKED PARSE.CODELIST PARSE.STATEMENT PARSE.STATEMENT1 - PARSE.STATEMENT2 PARSE.STATEMENT.CASEHEAD PARSE.STATEMENT.FORCLAUSE - PARSE.STATEMENT.RETURN PARSE.STATEMENT.TRANSFER PARSE.STATEMENT.LBRACKET - PARSE.STATEMENT.IF PARSE.BLOCK PARSE.SCOPE PARSE.BINDITEM PARSE.EXITS - PARSE.CASESTMTITEM PARSE.CASEEXPITEM PARSE.EXITITEM PARSE.CASETEST PARSE.CONTROLID - PARSE.FORCLAUSE PARSE.DIRECTION PARSE.DOTEST PARSE.DOEXIT PARSE.ENABLES - PARSE.CATCHLIST PARSE.CATCHCASE PARSE.OPTARGS PARSE.TRANSFER PARSE.KEYITEM - PARSE.OPTEXP PARSE.EXP PARSE.EXP1 PARSE.EXP2 PARSE.EXP.TRANSFEROP PARSE.EXP.IF - PARSE.EXP.CASEHEAD PARSE.EXP.LHS PARSE.EXP.LBRACKET PARSE.EXP.ERROR - PARSE.EXP.DISJUNCT PARSE.DISJUNCT PARSE.CONJUNCT PARSE.NEGATION PARSE.RELATION - PARSE.SUM PARSE.PRODUCT PARSE.OPTRELATION PARSE.RELATIONTAIL PARSE.RELOP - PARSE.ADDOP PARSE.MULTOP PARSE.FACTOR PARSE.PRIMARY PARSE.ATOM PARSE.PRIMARY.NIL - PARSE.PRIMARY.LBRACKET PARSE.PRIMARY.PREFIXOP PARSE.PRIMARY.VAL PARSE.PRIMARY.ALL - PARSE.PRIMARY.NEW PARSE.PRIMARY.TYPEOP PARSE.PRIMARY.SIZE PARSE.PRIMARY.ISTYPE - PARSE.PRIMARY.AT PARSE.PRIMARY.DESCRIPTOR PARSE.PRIMARY.CONS PARSE.PRIMARY.LIST - PARSE.PRIMARY.LHS PARSE.PRIMARY.LHS.NEW PARSE.PRIMARY.LHS.CONS - PARSE.PRIMARY.LHS.LIST PARSE.QUALIFIER PARSE.LHS PARSE.QUALIFIER.HERE - PARSE.OPTCATCH PARSE.TRANSFEROP PARSE.PREFIXOP PARSE.TYPEOP PARSE.DESCLIST - PARSE.DIRECTORY PARSE.IMPORTS PARSE.POINTERPREFIX PARSE.EXPORTS PARSE.FIELDLIST - PARSE.USING PARSE.CATCHHEAD PARSE.DECLIST PARSE.PAIRLIST PARSE.VARIANTLIST - PARSE.ORDERLIST PARSE.LHSLIST PARSE.INCLUDELIST PARSE.MODULELIST PARSE.ELEMENTLIST - PARSE.BINDLIST PARSE.STATEMENTLIST PARSE.CASESTMTLIST PARSE.CASELABEL - PARSE.EXITLIST PARSE.KEYLIST PARSE.CASEEXPLIST PARSE.EXPLIST PARSE.OPEN - PARSE.CLASS PARSE.CASEHEAD PARSE.READONLY PARSE.ORDERED PARSE.BASE PARSE.PACKED - PARSE.HEAP PARSE.INLINE PARSE.ARGUMENTS PARSE.INTERFACE PARSE.SHARES PARSE.DEFAULT - PARSE.OPTSIZE PARSE.BOUNDS PARSE.LENGTH PARSE.INDEXTYPE PARSE.ELSEPART - PARSE.OTHERPART PARSE.FREE PARSE.CATCHANY PARSE.NOT PARSE.NEW PARSE.OPTTYPE - PARSE.ARGLIST PARSE.RETURNLIST)) - (COMS - - (* ;; "BUILD ") - - [INITVARS (BUILD.NEXT.SCOPE NIL) - (BUILD.CURRENT.SCOPE NIL) - (BUILD.SCOPE.STACK NIL) - (BUILD.PREFIX NIL) - (BUILD.FILECOMS NIL) - (BUILD.BOOLEAN.FNS '(AND OR NOT type? IGREATERP ILESSP IGEQ ILEQ IEQP ZEROP - MINUSP EVENP ODDP FGREATERP FLESSP FEQP GREATERP LESSP - GEQ LEQ)) - (BUILD.CARDINAL.FNS '(ADD1 CHARCODE FIX GCD IDIFFERENCE IMAX IMIN IMINUS IMOD - IPLUS IQUOTIENT IREMAINDER ITIMES LOGAND LOGNOT LOGOR - LOGXOR NTHCHARCODE SUB1)) - (BUILD.MIXED.FNS '(ABS DIFFERENCE EXPT MAX MIN MINUS MOD PLUS QUOTIENT REMAINDER - TIMES)) - (BUILD.REAL.FNS '(ANTILOG ARCCOS ARCSIN ARCTAN ARCTAN2 COS FDIFFERENCE FLOAT - FMAX FMIN FMINUS FMOD FPLUS FQUOTIENT FREMAINDER FTIMES - LOG SIN SQRT TAN)) - (BUILD.QUALIFY.WORDS '(FREE NEW SIZE)) - [BUILD.CARDINAL.ARITHOP.ALIST (LIST (CONS '= 'IEQP) - (CONS '%# 'IEQP) - (CONS '< 'ILESSP) - (CONS '<= 'ILEQ) - (CONS '> 'IGREATERP) - (CONS '>= 'IGEQ) - (CONS '+ 'IPLUS) - (CONS '- 'IDIFFERENCE) - (CONS '* 'ITIMES) - (CONS '/ 'IQUOTIENT) - (CONS '0- 'IMINUS) - (CONS 'MAX 'IMAX) - (CONS 'MIN 'IMIN) - (CONS 'MOD 'IMOD] - [BUILD.MIXED.ARITHOP.ALIST (LIST (CONS '= 'EQP) - (CONS '%# 'EQP) - (CONS '< 'LESSP) - (CONS '<= 'GREATERP) - (CONS '> 'GREATERP) - (CONS '>= 'LESSP) - (CONS '+ 'PLUS) - (CONS '- 'DIFFERENCE) - (CONS '* 'TIMES) - (CONS '/ 'QUOTIENT) - (CONS '0- 'MINUS) - (CONS 'MAX 'MAX) - (CONS 'MIN 'MIN) - (CONS 'MOD 'IMOD] - [BUILD.REAL.ARITHOP.ALIST (LIST (CONS '= 'FEQP) - (CONS '%# 'FEQP) - (CONS '< 'FLESSP) - (CONS '<= 'FGREATERP) - (CONS '> 'FGREATERP) - (CONS '>= 'FLESSP) - (CONS '+ 'FPLUS) - (CONS '- 'FDIFFERENCE) - (CONS '* 'FTIMES) - (CONS '/ 'FQUOTIENT) - (CONS '0- 'FMINUS) - (CONS 'MAX 'FMAX) - (CONS 'MIN 'FMIN) - (CONS 'MOD 'IMOD] - (BUILD.CARDINAL.TYPES '(CARDINAL CHAR CHARACTER INT INTEGER NAT WORD] - (RECORDS SCOPE) - (FNS BUILD.INIT BUILD.PUSH.SCOPE BUILD.POP.SCOPE BUILD.GC.SCOPE BUILD.STORE.EXPORTS - BUILD.STORE.IDENTLIST BUILD.STORE.INTERFACES BUILD.STORE.INTERFACE - BUILD.STORE.OPEN BUILD.STORE.USING BUILD.INITIALIZATION BUILD.INITIALIZE.VARS - BUILD.INITIALIZE.VAR BUILD.INITIALIZE.FN BUILD.INITIALIZE.RECORD BUILD.RECORD - BUILD.TYPE BUILD.STORE.ARGLIST BUILD.STORE.RETURNLIST BUILD.STORE.PAIRLIST - BUILD.STORE.PAIRITEM BUILD.STORE.VARLIST BUILD.ID BUILD.FIELDID BUILD.PROCID - BUILD.RECORDID BUILD.TYPEID BUILD.VARID BUILD.LOCALVARID BUILD.GLOBALVARID - BUILD.ULTIMATE.TYPE BUILD.REFINE.TYPE BUILD.IMMEDIATE.TYPE BUILD.LOOKUP.TYPE - BUILD.LOOKUP BUILD.TYPEATOM BUILD.QUALIFY BUILD.QUALIFY.PREFIXOP - BUILD.QUALIFY.TYPEOP BUILD.QUALIFY.EXPLIST BUILD.QUALIFY.ID BUILD.ARITH.EXP1 - BUILD.ARITH.EXP2 BUILD.ARITH.EXP* BUILD.ARITH.ADD1SUB1 BUILD.COERCE.ARITHOP - BUILD.STRONGEST.TYPE.AMONG BUILD.STRONGEST.TYPE BUILD.COERCE BUILD.COERCE.MARRAY - BUILD.COERCE.MLIST BUILD.COERCE.EXPLIST BUILD.ALIGN BUILD.ALIGN.VALUE - BUILD.ADD.TO.FILECOMS BUILD.ADD1 BUILD.CALL BUILD.CHARCODE BUILD.COND - BUILD.COPY.OF BUILD.FETCH BUILD.FORCLAUSE.BY BUILD.FORCLAUSE.IN - BUILD.FORCLAUSE.THROUGH BUILD.IN BUILD.ISTYPE BUILD.LAMBDA BUILD.NEW BUILD.OR - BUILD.PROG BUILD.PROGN BUILD.REPLACE BUILD.RETURN BUILD.SELECTQ BUILD.SELECTQ.FN - BUILD.SELECTQ.CCLAUSE BUILD.SELECTQ.TEST BUILD.SELECTQ.SCLAUSE BUILD.SELECTQ.KEY - BUILD.SELECTTRUEFROM BUILD.SELECTTRUEFROM.CLAUSE BUILD.SETQ BUILD.SETQ.ARRAY - BUILD.SETQ.ORDERLIST BUILD.SUB1 BUILD.TAIL) - (P (BUILD.INIT))) - (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA) - (NLAML) - (LAMA PARSE.BIN - PARSE.FILE - PARSE.CEDAR]) -(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS - -(ADDTOVAR NLAMA ) - -(ADDTOVAR NLAML ) - -(ADDTOVAR LAMA PARSE.BIN PARSE.FILE PARSE.CEDAR) -) -(PUTPROPS MESATOLISP COPYRIGHT ("Xerox Corporation" 1985 1987)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (19182 54761 (SCAN.INIT 19192 . 19601) (SCAN.START 19603 . 19785) (SCAN.TEST 19787 . -20251) (SCAN.TESTFILE 20253 . 20746) (SCAN.OPENSTREAM 20748 . 21252) (SCAN.TOKEN 21254 . 32584) ( -SCAN.NUMBER 32586 . 36881) (SCAN.ACCEPT 36883 . 37101) (SCAN.APPENDDECIMAL 37103 . 37792) ( -SCAN.APPENDOCTAL 37794 . 38356) (SCAN.APPENDHEX 38358 . 39122) (SCAN.APPENDTOSCALE 39124 . 39808) ( -SCAN.VALIDFRACTION 39810 . 40403) (SCAN.DECIMAL 40405 . 42476) (SCAN.OCTAL 42478 . 44543) ( -SCAN.OCTALCHAR 44545 . 45852) (SCAN.HEX 45854 . 48496) (SCAN.FLOATING 48498 . 52403) (SCAN.ESCAPE -52405 . 54759)) (59379 203256 (PARSE.MESA 59389 . 59541) (PARSE.CEDAR 59543 . 59715) (PARSE.FILE 59717 - . 60284) (PARSE.GET.STATE 60286 . 61074) (PARSE.SET.STATE 61076 . 62387) (PARSE.BIN 62389 . 63223) ( -PARSE.VARID 63225 . 63384) (PARSE.SMURF 63386 . 64515) (PARSE.THISIS.MESA 64517 . 64797) ( -PARSE.THISIS.CEDAR 64799 . 65082) (PARSE.MODULE 65084 . 66127) (PARSE.INCLUDEITEM 66129 . 67429) ( -PARSE.INCLUDECHECK 67431 . 68401) (PARSE.SEADIRT 68403 . 68792) (PARSE.PROGHEAD 68794 . 69523) ( -PARSE.RESIDENT 69525 . 69925) (PARSE.SAFE 69927 . 70400) (PARSE.DEFHEAD 70402 . 70889) (PARSE.TILDE -70891 . 71346) (PARSE.DEFINITIONS 71348 . 71585) (PARSE.DEFBODY 71587 . 72486) (PARSE.LOCKS 72488 . -72925) (PARSE.LAMBDA 72927 . 73472) (PARSE.MODULEITEM 73474 . 74008) (PARSE.DECLARATION 74010 . 76112) - (PARSE.PUBLIC 76114 . 76485) (PARSE.ENTRY 76487 . 76854) (PARSE.IDLIST 76856 . 77416) ( -PARSE.IDENTLIST 77418 . 79049) (PARSE.POSITION 79051 . 79489) (PARSE.OPTBITS 79491 . 79866) ( -PARSE.INTERVAL 79868 . 81120) (PARSE.TYPEEXP.HERE 81122 . 81252) (PARSE.TYPEEXP 81254 . 82083) ( -PARSE.RANGE 82085 . 83410) (PARSE.TYPEAPPL 83412 . 83919) (PARSE.TYPEAPPL.CONT 83921 . 84674) ( -PARSE.TYPEID 84676 . 84838) (PARSE.TYPEID.CONT 84840 . 85782) (PARSE.TYPECONS 85784 . 86003) ( -PARSE.TYPECONS1 86005 . 87479) (PARSE.TYPECONS.CONT 87481 . 89721) (PARSE.TYPECONS.RANGE 89723 . 90085 -) (PARSE.TYPECONS.RELATIVE 90087 . 90476) (PARSE.TYPECONS.PAINTED 90478 . 90900) (PARSE.TYPECONS2 -90902 . 93362) (PARSE.TYPECONS.INTERVAL 93364 . 93760) (PARSE.TYPECONS.DEPENDENT 93762 . 94424) ( -PARSE.TYPECONS.ENUMERATED 94426 . 94800) (PARSE.TYPECONS.RECORD 94802 . 95191) (PARSE.TYPECONS.ORDERED - 95193 . 95622) (PARSE.TYPECONS.VAR 95624 . 96022) (PARSE.TYPECONS.PACKED 96024 . 96691) ( -PARSE.TYPECONS.DESCRIPTOR 96693 . 97260) (PARSE.TYPECONS.SAFE 97262 . 97706) (PARSE.TYPECONS.HEAP -97708 . 98006) (PARSE.TYPECONS.LONG 98008 . 98327) (PARSE.TYPECONS.FRAME 98329 . 98807) ( -PARSE.TYPECONS.REF 98809 . 99718) (PARSE.TYPECONS.LIST 99720 . 100302) (PARSE.IDENT 100304 . 100807) ( -PARSE.ELEMENT 100809 . 101464) (PARSE.MONITORED 101466 . 101823) (PARSE.DEPENDENT 101825 . 102251) ( -PARSE.RECLIST 102253 . 104422) (PARSE.VARIANTPAIR 104424 . 105219) (PARSE.PAIRITEM 105221 . 106764) ( -PARSE.DEFAULTOPT 106766 . 107902) (PARSE.VARIANTPART 107904 . 109341) (PARSE.VCASEHEAD 109343 . 110179 -) (PARSE.TAGTYPE 110181 . 110490) (PARSE.VARIANTITEM 110492 . 110918) (PARSE.TYPELIST 110920 . 112135) - (PARSE.TYPEITEM 112137 . 112690) (PARSE.POINTERTYPE 112692 . 113443) (PARSE.TRANSFERMODE 113445 . -114181) (PARSE.INITIALIZATION 114183 . 115006) (PARSE.INITVALUE 115008 . 116738) (PARSE.CHECKED 116740 - . 117329) (PARSE.CODELIST 117331 . 117727) (PARSE.STATEMENT 117729 . 117959) (PARSE.STATEMENT1 117961 - . 119184) (PARSE.STATEMENT2 119186 . 122631) (PARSE.STATEMENT.CASEHEAD 122633 . 123653) ( -PARSE.STATEMENT.FORCLAUSE 123655 . 124768) (PARSE.STATEMENT.RETURN 124770 . 125149) ( -PARSE.STATEMENT.TRANSFER 125151 . 125525) (PARSE.STATEMENT.LBRACKET 125527 . 126007) ( -PARSE.STATEMENT.IF 126009 . 126595) (PARSE.BLOCK 126597 . 127191) (PARSE.SCOPE 127193 . 127945) ( -PARSE.BINDITEM 127947 . 128924) (PARSE.EXITS 128926 . 129301) (PARSE.CASESTMTITEM 129303 . 129821) ( -PARSE.CASEEXPITEM 129823 . 130249) (PARSE.EXITITEM 130251 . 130699) (PARSE.CASETEST 130701 . 131268) ( -PARSE.CONTROLID 131270 . 131909) (PARSE.FORCLAUSE 131911 . 133290) (PARSE.DIRECTION 133292 . 133651) ( -PARSE.DOTEST 133653 . 134147) (PARSE.DOEXIT 134149 . 135169) (PARSE.ENABLES 135171 . 136397) ( -PARSE.CATCHLIST 136399 . 137433) (PARSE.CATCHCASE 137435 . 137867) (PARSE.OPTARGS 137869 . 138471) ( -PARSE.TRANSFER 138473 . 139189) (PARSE.KEYITEM 139191 . 139969) (PARSE.OPTEXP 139971 . 140612) ( -PARSE.EXP 140614 . 140818) (PARSE.EXP1 140820 . 141490) (PARSE.EXP2 141492 . 143831) ( -PARSE.EXP.TRANSFEROP 143833 . 144203) (PARSE.EXP.IF 144205 . 144712) (PARSE.EXP.CASEHEAD 144714 . -145311) (PARSE.EXP.LHS 145313 . 145686) (PARSE.EXP.LBRACKET 145688 . 146148) (PARSE.EXP.ERROR 146150 - . 146394) (PARSE.EXP.DISJUNCT 146396 . 146628) (PARSE.DISJUNCT 146630 . 147337) (PARSE.CONJUNCT -147339 . 148050) (PARSE.NEGATION 148052 . 148582) (PARSE.RELATION 148584 . 149671) (PARSE.SUM 149673 - . 151062) (PARSE.PRODUCT 151064 . 152814) (PARSE.OPTRELATION 152816 . 153620) (PARSE.RELATIONTAIL -153622 . 154261) (PARSE.RELOP 154263 . 154661) (PARSE.ADDOP 154663 . 154888) (PARSE.MULTOP 154890 . -155196) (PARSE.FACTOR 155198 . 155767) (PARSE.PRIMARY 155769 . 158651) (PARSE.ATOM 158653 . 158899) ( -PARSE.PRIMARY.NIL 158901 . 159141) (PARSE.PRIMARY.LBRACKET 159143 . 159493) (PARSE.PRIMARY.PREFIXOP -159495 . 160061) (PARSE.PRIMARY.VAL 160063 . 160533) (PARSE.PRIMARY.ALL 160535 . 161005) ( -PARSE.PRIMARY.NEW 161007 . 161626) (PARSE.PRIMARY.TYPEOP 161628 . 162073) (PARSE.PRIMARY.SIZE 162075 - . 162835) (PARSE.PRIMARY.ISTYPE 162837 . 163453) (PARSE.PRIMARY.AT 163455 . 163781) ( -PARSE.PRIMARY.DESCRIPTOR 163783 . 164306) (PARSE.PRIMARY.CONS 164308 . 164919) (PARSE.PRIMARY.LIST -164921 . 165492) (PARSE.PRIMARY.LHS 165494 . 166806) (PARSE.PRIMARY.LHS.NEW 166808 . 167439) ( -PARSE.PRIMARY.LHS.CONS 167441 . 167987) (PARSE.PRIMARY.LHS.LIST 167989 . 168499) (PARSE.QUALIFIER -168501 . 170328) (PARSE.LHS 170330 . 172571) (PARSE.QUALIFIER.HERE 172573 . 172955) (PARSE.OPTCATCH -172957 . 173398) (PARSE.TRANSFEROP 173400 . 173916) (PARSE.PREFIXOP 173918 . 174257) (PARSE.TYPEOP -174259 . 174743) (PARSE.DESCLIST 174745 . 175423) (PARSE.DIRECTORY 175425 . 176044) (PARSE.IMPORTS -176046 . 176542) (PARSE.POINTERPREFIX 176544 . 177053) (PARSE.EXPORTS 177055 . 177576) ( -PARSE.FIELDLIST 177578 . 178417) (PARSE.USING 178419 . 179118) (PARSE.CATCHHEAD 179120 . 179975) ( -PARSE.DECLIST 179977 . 180828) (PARSE.PAIRLIST 180830 . 181860) (PARSE.VARIANTLIST 181862 . 182556) ( -PARSE.ORDERLIST 182558 . 183281) (PARSE.LHSLIST 183283 . 183820) (PARSE.INCLUDELIST 183822 . 184373) ( -PARSE.MODULELIST 184375 . 185140) (PARSE.ELEMENTLIST 185142 . 185722) (PARSE.BINDLIST 185724 . 186299) - (PARSE.STATEMENTLIST 186301 . 187188) (PARSE.CASESTMTLIST 187190 . 187990) (PARSE.CASELABEL 187992 . -189129) (PARSE.EXITLIST 189131 . 189981) (PARSE.KEYLIST 189983 . 190606) (PARSE.CASEEXPLIST 190608 . -191400) (PARSE.EXPLIST 191402 . 191952) (PARSE.OPEN 191954 . 192427) (PARSE.CLASS 192429 . 192684) ( -PARSE.CASEHEAD 192686 . 193790) (PARSE.READONLY 193792 . 194144) (PARSE.ORDERED 194146 . 194493) ( -PARSE.BASE 194495 . 194762) (PARSE.PACKED 194764 . 195041) (PARSE.HEAP 195043 . 195438) (PARSE.INLINE -195440 . 195717) (PARSE.ARGUMENTS 195719 . 196002) (PARSE.INTERFACE 196004 . 196383) (PARSE.SHARES -196385 . 196773) (PARSE.DEFAULT 196775 . 197152) (PARSE.OPTSIZE 197154 . 197651) (PARSE.BOUNDS 197653 - . 198036) (PARSE.LENGTH 198038 . 198394) (PARSE.INDEXTYPE 198396 . 198754) (PARSE.ELSEPART 198756 . -199140) (PARSE.OTHERPART 199142 . 199525) (PARSE.FREE 199527 . 199896) (PARSE.CATCHANY 199898 . 200296 -) (PARSE.NOT 200298 . 200519) (PARSE.NEW 200521 . 201189) (PARSE.OPTTYPE 201191 . 201581) ( -PARSE.ARGLIST 201583 . 202361) (PARSE.RETURNLIST 202363 . 203254)) (207200 267345 (BUILD.INIT 207210 - . 207712) (BUILD.PUSH.SCOPE 207714 . 208097) (BUILD.POP.SCOPE 208099 . 208389) (BUILD.GC.SCOPE 208391 - . 208574) (BUILD.STORE.EXPORTS 208576 . 208783) (BUILD.STORE.IDENTLIST 208785 . 209006) ( -BUILD.STORE.INTERFACES 209008 . 209239) (BUILD.STORE.INTERFACE 209241 . 209427) (BUILD.STORE.OPEN -209429 . 209637) (BUILD.STORE.USING 209639 . 209853) (BUILD.INITIALIZATION 209855 . 210452) ( -BUILD.INITIALIZE.VARS 210454 . 210808) (BUILD.INITIALIZE.VAR 210810 . 211603) (BUILD.INITIALIZE.FN -211605 . 212407) (BUILD.INITIALIZE.RECORD 212409 . 212996) (BUILD.RECORD 212998 . 215217) (BUILD.TYPE -215219 . 215849) (BUILD.STORE.ARGLIST 215851 . 216355) (BUILD.STORE.RETURNLIST 216357 . 216879) ( -BUILD.STORE.PAIRLIST 216881 . 217427) (BUILD.STORE.PAIRITEM 217429 . 217821) (BUILD.STORE.VARLIST -217823 . 218043) (BUILD.ID 218045 . 218468) (BUILD.FIELDID 218470 . 218594) (BUILD.PROCID 218596 . -218743) (BUILD.RECORDID 218745 . 218894) (BUILD.TYPEID 218896 . 219113) (BUILD.VARID 219115 . 219482) -(BUILD.LOCALVARID 219484 . 219611) (BUILD.GLOBALVARID 219613 . 219765) (BUILD.ULTIMATE.TYPE 219767 . -219947) (BUILD.REFINE.TYPE 219949 . 221606) (BUILD.IMMEDIATE.TYPE 221608 . 225952) (BUILD.LOOKUP.TYPE -225954 . 226724) (BUILD.LOOKUP 226726 . 227111) (BUILD.TYPEATOM 227113 . 227307) (BUILD.QUALIFY 227309 - . 228793) (BUILD.QUALIFY.PREFIXOP 228795 . 229043) (BUILD.QUALIFY.TYPEOP 229045 . 229193) ( -BUILD.QUALIFY.EXPLIST 229195 . 231109) (BUILD.QUALIFY.ID 231111 . 232833) (BUILD.ARITH.EXP1 232835 . -233061) (BUILD.ARITH.EXP2 233063 . 233299) (BUILD.ARITH.EXP* 233301 . 234455) (BUILD.ARITH.ADD1SUB1 -234457 . 235388) (BUILD.COERCE.ARITHOP 235390 . 235746) (BUILD.STRONGEST.TYPE.AMONG 235748 . 236236) ( -BUILD.STRONGEST.TYPE 236238 . 236817) (BUILD.COERCE 236819 . 237582) (BUILD.COERCE.MARRAY 237584 . -238513) (BUILD.COERCE.MLIST 238515 . 239360) (BUILD.COERCE.EXPLIST 239362 . 241622) (BUILD.ALIGN -241624 . 244083) (BUILD.ALIGN.VALUE 244085 . 244593) (BUILD.ADD.TO.FILECOMS 244595 . 245242) ( -BUILD.ADD1 245244 . 245429) (BUILD.CALL 245431 . 245736) (BUILD.CHARCODE 245738 . 247182) (BUILD.COND -247184 . 247823) (BUILD.COPY.OF 247825 . 248069) (BUILD.FETCH 248071 . 248805) (BUILD.FORCLAUSE.BY -248807 . 248975) (BUILD.FORCLAUSE.IN 248977 . 249971) (BUILD.FORCLAUSE.THROUGH 249973 . 250141) ( -BUILD.IN 250143 . 251232) (BUILD.ISTYPE 251234 . 251790) (BUILD.LAMBDA 251792 . 252244) (BUILD.NEW -252246 . 252404) (BUILD.OR 252406 . 252627) (BUILD.PROG 252629 . 253951) (BUILD.PROGN 253953 . 254234) - (BUILD.REPLACE 254236 . 255039) (BUILD.RETURN 255041 . 256699) (BUILD.SELECTQ 256701 . 258976) ( -BUILD.SELECTQ.FN 258978 . 259175) (BUILD.SELECTQ.CCLAUSE 259177 . 259801) (BUILD.SELECTQ.TEST 259803 - . 260169) (BUILD.SELECTQ.SCLAUSE 260171 . 260608) (BUILD.SELECTQ.KEY 260610 . 261303) ( -BUILD.SELECTTRUEFROM 261305 . 262003) (BUILD.SELECTTRUEFROM.CLAUSE 262005 . 262196) (BUILD.SETQ 262198 - . 264370) (BUILD.SETQ.ARRAY 264372 . 265145) (BUILD.SETQ.ORDERLIST 265147 . 266881) (BUILD.SUB1 -266883 . 267068) (BUILD.TAIL 267070 . 267343))))) -STOP diff --git a/obsolete/lispusers/MICROTEK b/obsolete/lispusers/MICROTEK deleted file mode 100644 index 59a68a15..00000000 --- a/obsolete/lispusers/MICROTEK +++ /dev/null @@ -1,344 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP") -(FILECREATED " 8-Sep-88 21:43:21" {LISPUSERS}MICROTEK.\;1 63396 - - |changes| |to:| (FNS MT.START.SCANNING MT.SETUPSCANFILE MT.INIT MT.SHRINKFN MICROTEKSCANNER RULERX RULEX# RULERY RULEY# MT.GETLENGTH MT.CURSOR.IN MT.CURSOR.OUT MT.PRINT.STATUS MT.CHANGE.BRIGHTBAR MT.CHANGE.CONTRASTBAR MT.DRAWAREABOX MT.COMMAND.MENU MT.SCAN MT.SENDCOMMAND MT.COMPUTECHECKSUM MT.SENDACK MT.SENDNAK MT.STOP.SCANNING MT.PAGEMAP MT.QUIT MT.DISPLAY.MENU MT.CREATEBM MT.BITMAPCREATE MT.CONVERTIMAGETOBM MT.CREATE.BIG.BM MT.REPAINTWINDOW MT.RESHAPEWINDOW MT.SEND.SCAN.PARAMETERS MT.PRINT.ERROR.MSG MT.RESET) - (PROPS (MICROTEK MAKEFILE-ENVIRONMENT)) - - |previous| |date:| "23-Jul-88 15:16:49" {PHYLUM}MEDLEY>MICROTEK.\;1) - - -; Copyright (c) 1987, 1988 by XEROX Corporation. All rights reserved. - -(PRETTYCOMPRINT MICROTEKCOMS) - -(RPAQQ MICROTEKCOMS ((P (FILESLOAD DLRS232C EDITBITMAP)) (* * |Microtek| |Initialization| |and| |Menu| |Functions|) (FNS MT.INIT MT.SHRINKFN MICROTEKSCANNER RULERX RULEX# RULERY RULEY# MT.GETLENGTH MT.CURSOR.IN MT.CURSOR.OUT MT.PRINT.STATUS MT.CONTROL.MENU MT.CHANGE.BRIGHTBAR MT.RAISEBRIGHTNESS MT.LOWERBRIGHTNESS MT.CHANGE.CONTRASTBAR MT.RAISECONTRAST MT.LOWERCONTRAST MT.SELECT.BACKGROUND MT.GETTRANSFRAME MT.GETWINDOW1 MT.GETWINDOW2 MT.GETWINDOW3 MT.GETWINDOW4 MT.UPDATE.HTWINDOWS MT.DRAWAREABOX) (* * |Command| |Functions|) (FNS MT.COMMAND.MENU MT.GET.OUTFILENAME MT.SCAN MT.START.SCANNING MT.SETUPSCANFILE MT.SEND.SCAN.PARAMETERS MT.SENDCOMMAND MT.COMPUTECHECKSUM MT.PRINT.ERROR.MSG MT.SENDACK MT.SENDNAK MT.STOP.SCANNING MT.RESET MT.PAGEMAP MT.QUIT) (* * |Functions| |to| |convert| |and| |print| |scanned| |images|) (FNS MT.DISPLAY.MENU MT.GET.SOURCEFILENAME MT.GET.BITMAPNAME MT.CREATEBM MT.BITMAPCREATE MT.CONVERTIMAGETOBM MT.CREATE.BIG.BM MT.CREATE.DISPLAYWINDOW MT.REPAINTWINDOW MT.RESHAPEWINDOW) (ADDVARS (|BackgroundMenuCommands| ("MicrotekScanner" (MT.INIT) "Open Microtek Scanner Command and Display windows, initilalize RS232 port and verifies Microtek Scanner is ready"))) (VARS (|BackgroundMenu| NIL)) (VARS MT.ICON MT.ICON.MASK BRIGHTBAR CONTRASTBAR INITIALBRIGHTBAR INITIALCONTRASTBAR LEFTARROW MANCURSOR RIGHTARROW MT.POINTER) (INITVARS (MT.BAUDRATE 19200) (MT.RS232C.FRAME.TIMEOUT 2) (MT.DISPLAYFRAME (QUOTE YES)) (MT.PAPERLENGTH 4) (MT.REDUCTION 0) (MT.CONTRAST 0) (MT.BRIGHTNESS 0) (MT.GREYLEVEL 0) (MT.DATACOMPRESSION (QUOTE NO)) (MT.BACKGROUND (QUOTE HALFTONE)) (MT.WINDOW (QUOTE LINEART)) (MT.FRAME (QUOTE (0 0 40 24))) (MT.FRAME.BOX (QUOTE (0 460 200 120))) (MT.TEXTW1 (QUOTE (0 0 0 0))) (MT.TEXTW2 (QUOTE (0 0 0 0))) (MT.TEXTW3 (QUOTE (0 0 0 0))) (MT.TEXTW4 (QUOTE (0 0 0 0))) (MT.TEXTW1BOX (QUOTE (0 0 0 0))) (MT.TEXTW2BOX (QUOTE (0 0 0 0))) (MT.TEXTW3BOX (QUOTE (0 0 0 0))) (MT.TEXTW4BOX (QUOTE (0 0 0 0))) (MT.HALFTONEW1 (QUOTE (0 0 0 0))) (MT.HALFTONEW2 (QUOTE (0 0 0 0))) (MT.HALFTONEW3 (QUOTE (0 0 0 0))) (MT.HALFTONEW4 (QUOTE (0 0 0 0))) (MT.HALFTONEW1BOX (QUOTE (0 0 0 0))) (MT.HALFTONEW2BOX (QUOTE (0 0 0 0))) (MT.HALFTONEW3BOX (QUOTE (0 0 0 0))) (MT.HALFTONEW4BOX (QUOTE (0 0 0 0))) (MT.OUTSTREAM NIL) (MT.INSTREAM NIL) (MT.BMSHRINKFACTOR 1)) (GLOBALVARS MT.RS232C.FRAME.TIMEOUT MT.STATUSWINDOW MT.HEIGHTRULER MT.GRID MT.PAPERLENGTH MT.REDUCTION MT.BRIGHTNESS MT.CONTRAST MT.GREYLEVEL MT.DATACOMPRESSION MT.BACKGROUND MT.WINDOW MT.HEIGHTWINDOW MT.FRAME MT.FRAME.BOX MT.TEXTW1 MT.TEXTW2 MT.TEXTW3 MT.TEXTW4 MT.HALFTONEW1 MT.HALFTONEW2 MT.HALFTONEW3 MT.HALFTONEW4 MT.OUTSTREAM MT.INSTREAM BRIGHTBAR CONTRASTBAR LEFTARROW MANCURSOR RIGHTARROW) (PROP MAKEFILE-ENVIRONMENT MICROTEK))) - -(FILESLOAD DLRS232C EDITBITMAP) - (* * |Microtek| |Initialization| |and| |Menu| |Functions|) - -(DEFINEQ - -(MT.INIT -(LAMBDA NIL (* \; "Edited 8-Sep-88 18:58 by Briggs") (* \; "Edited 20-May-87 11:20 by ") (MICROTEKSCANNER) (MT.CONTROL.MENU) (MT.COMMAND.MENU) (MT.DISPLAY.MENU) (SETQ MT.STATUSWINDOW (CREATEW (QUOTE (0 0 387 30)) "Microtek Status Window")) (ATTACHWINDOW MT.COMMAND.MENUWINDOW MT.CONTROL.MENUWINDOW (QUOTE TOP) (QUOTE JUSTIFY)) (ATTACHWINDOW MT.DISPLAY.MENUWINDOW MT.CONTROL.MENUWINDOW (QUOTE BOTTOM) (QUOTE JUSTIFY)) (ATTACHWINDOW MT.STATUSWINDOW MT.COMMAND.MENUWINDOW (QUOTE TOP) (QUOTE JUSTIFY)) (|if| (FNTYP (QUOTE MT.PRINT.MENU)) |then| (MT.PRINT.MENU)) (MOVEW MT.CONTROL.MENUWINDOW (QUOTE (500 . 160))) (WINDOWPROP MT.CONTROL.MENUWINDOW (QUOTE ICONFN) (QUOTE MT.SHRINKFN)) (BITBLT MT.POINTER 0 0 MTHEIGHTRULER 20 (IDIFFERENCE 453 (FIX (FTIMES 5 (FDIFFERENCE (FQUOTIENT MT.PAPERLENGTH 0.125) 24))))) (CLOSEF? MT.OUTSTREAM) (CLOSEF? MT.INSTREAM) (|if| \\RS232C.READY |then| (RS232C.SHUTDOWN)) (SETQ MT.OUTSTREAM (OPENSTREAM (QUOTE {RS232}) (QUOTE OUTPUT) NIL (QUOTE ((|BaudRate| 19200) (|BitsPerSerialChar| 8) (|Parity| NONE) (|NoOfStopBits| 1) (|FlowControl| NIL) (DTR T))))) (SETQ MT.INSTREAM (RS232C.OTHER.STREAM MT.OUTSTREAM)) (SETQ MT.OLD.RS232C.FRAME.TIME.OUT (RS232C.GET.PARAMETERS (QUOTE (FRAME.TIMEOUT)))) (RS232C.SET.PARAMETERS (LIST (BQUOTE (FRAME.TIMEOUT \\\, MT.RS232C.FRAME.TIMEOUT)))) (MT.SENDCOMMAND 1 (LIST (QUOTE !))) (|if| (SETQ RESPONSE (MT.SENDCOMMAND 1 (LIST (QUOTE !)))) |then| (CLRPROMPT) (MT.PRINT.STATUS (CONCAT RESPONSE " ready")) |else| (RINGBELLS) (MT.PRINT.STATUS "Microtek Not Responding ...Check scanner and cables"))) -) - -(MT.SHRINKFN -(LAMBDA (WINDOW ICON) (* \; "Edited 8-Sep-88 18:59 by Briggs") (PROG NIL (CLOSEW MTDISPLAYWINDOW) (CLOSEW MTDISPLAYWINDOW) (|if| (WINDOWPROP MT.CONTROL.MENUWINDOW (QUOTE ICONWINDOW)) |then| (RETURN (WINDOWPROP MT.CONTROL.MENUWINDOW (QUOTE ICONWINDOW))) |else| (RETURN (ICONW MT.ICON MT.ICON.MASK NIL T))))) -) - -(MICROTEKSCANNER -(LAMBDA NIL (* \; "Edited 8-Sep-88 18:59 by Briggs") (PROG (MTWIDTHRULER YHEIGHT) (SETQ MTDISPLAYWINDOW (DECODE.WINDOW.ARG (QUOTE (100 . 100)) 350 579 "Microtek Scanner Page Map" 5)) (SETQ MTHEIGHTRULER (DECODE.WINDOW.ARG (QUOTE (100 . 100)) 50 570 NIL 5 T)) (SETQ MTWIDTHRULER (DECODE.WINDOW.ARG (QUOTE (100 . 100)) 350 50 NIL 5 T)) (DSPFONT (FONTCREATE (QUOTE GACHA) 10 (QUOTE BRR)) MTHEIGHTRULER) (DSPFONT (FONTCREATE (QUOTE GACHA) 10 (QUOTE BRR)) MTWIDTHRULER) (ATTACHWINDOW MTHEIGHTRULER MTDISPLAYWINDOW (QUOTE LEFT) (QUOTE JUSTIFY)) (ATTACHWINDOW MTWIDTHRULER MTDISPLAYWINDOW (QUOTE TOP) (QUOTE CENTER)) (WINDOWPROP MTDISPLAYWINDOW (QUOTE RESHAPEFN) (QUOTE (DON\'T))) (WINDOWPROP MTHEIGHTRULER (QUOTE RESHAPEFN) (QUOTE (DON\'T))) (WINDOWPROP MTHEIGHTRULER (QUOTE CURSORINFN) (QUOTE MT.CURSOR.IN)) (WINDOWPROP MTHEIGHTRULER (QUOTE CURSOROUTFN) (QUOTE MT.CURSOR.OUT)) (WINDOWPROP MTHEIGHTRULER (QUOTE BUTTONEVENTFN) (QUOTE MT.GETLENGTH)) (WINDOWPROP MTWIDTHRULER (QUOTE RESHAPEFN) (QUOTE (DON\'T))) (RULERX 0 1 16 16 40 1 MTWIDTHRULER) (RULERX 0 1 12 32 20 1 MTWIDTHRULER) (RULERX 0 1 8 64 10 1 MTWIDTHRULER) (RULERX 0 1 4 128 5 1 MTWIDTHRULER) (RULEX# 0 20 40 0 8 MTWIDTHRULER) (SETQ YHEIGHT 580) (RULERY YHEIGHT 1 16 15 -40 1 MTHEIGHTRULER) (RULERY YHEIGHT 1 12 28 -20 1 MTHEIGHTRULER) (RULERY YHEIGHT 1 8 56 -10 1 MTHEIGHTRULER) (RULERY YHEIGHT 1 4 112 -5 1 MTHEIGHTRULER) (RULEY# 0 YHEIGHT -40 0 14 MTHEIGHTRULER) (SETQ MT.HEIGHT.BM (BITMAPCREATE 50 588)) (BITBLT MTHEIGHTRULER 0 0 MT.HEIGHT.BM) (SETQ MT.GRID (BITMAPCREATE 350 579)) (GRID (QUOTE (0 20 10 10)) 42 56 (QUOTE POINT) MTDISPLAYWINDOW) (BITBLT MTDISPLAYWINDOW 0 0 MT.GRID))) -) - -(RULERX -(LAMBDA (STARTX STARTY LEN NUMLINES INCR LINEWIDTH WIND) (* \; "Edited 8-Sep-88 19:00 by Briggs") (|for| I |from| 1 |to| NUMLINES |do| (DRAWLINE STARTX 1 STARTX LEN LINEWIDTH NIL WIND) (SETQ STARTX (PLUS STARTX INCR)))) -) - -(RULEX# -(LAMBDA (STARTX STARTY INCR STARTNUMBER ENDNUMBER WIND) (* \; "Edited 8-Sep-88 19:00 by Briggs") (|for| I |from| STARTNUMBER |to| ENDNUMBER |do| (MOVETO STARTX STARTY WIND) (PRINT I WIND) (SETQ STARTX (PLUS STARTX INCR)))) -) - -(RULERY -(LAMBDA (STARTY STARTX LEN NUMLINES INCR LINEWIDTH WIND) (* \; "Edited 8-Sep-88 19:00 by Briggs") (|for| I |from| 1 |to| NUMLINES |do| (DRAWLINE (DIFFERENCE (WINDOWPROP WIND (QUOTE WIDTH)) STARTX) STARTY (DIFFERENCE (DIFFERENCE (WINDOWPROP WIND (QUOTE WIDTH)) STARTX) LEN) STARTY LINEWIDTH NIL WIND) (SETQ STARTY (PLUS STARTY INCR)))) -) - -(RULEY# -(LAMBDA (STARTX STARTY INCR STARTNUMBER ENDNUMBER WIND) (* \; "Edited 8-Sep-88 19:00 by Briggs") (|for| I |from| STARTNUMBER |to| ENDNUMBER |do| (MOVETO STARTX STARTY WIND) (PRINT I WIND) (SETQ STARTY (PLUS STARTY INCR)))) -) - -(MT.GETLENGTH -(LAMBDA NIL (* \; "Edited 8-Sep-88 19:00 by Briggs") (TOTOPW MTHEIGHTRULER) (|if| (MOUSESTATE LEFT) |then| (SETQ MT.PAPERLENGTH (IMIN 453 (CDR (CURSORPOSITION NIL MTHEIGHTRULER)))) (CLEARW MTHEIGHTRULER) (BITBLT MT.HEIGHT.BM 0 0 MTHEIGHTRULER 0 0) (BITBLT MT.POINTER 0 0 MTHEIGHTRULER 20 MT.PAPERLENGTH) (SETQ MT.PAPERLENGTH (FTIMES (FIX (FPLUS 24.0 (FQUOTIENT (FDIFFERENCE 453 MT.PAPERLENGTH) 5))) 0.125)) (FM.CHANGESTATE (FM.GETITEM (QUOTE PAGELENGTH) NIL MT.CONTROL.MENUWINDOW) MT.PAPERLENGTH MT.CONTROL.MENUWINDOW))) -) - -(MT.CURSOR.IN -(LAMBDA NIL (* \; "Edited 8-Sep-88 19:00 by Briggs") (CURSOR (CURSORCREATE MT.POINTER 8 0)))) - -(MT.CURSOR.OUT -(LAMBDA NIL (* \; "Edited 8-Sep-88 19:00 by Briggs") (CURSOR T))) - -(MT.PRINT.STATUS -(LAMBDA (MSG) (* \; "Edited 8-Sep-88 19:00 by Briggs") (CLEARW MT.STATUSWINDOW) (PRIN1 MSG MT.STATUSWINDOW)) -) - -(MT.CONTROL.MENU -(LAMBDA NIL (* \; "Edited 12-Mar-87 14:32 by rdc") (PROG (MENU.DESCRIPTION) (SETQ MENU.DESCRIPTION (BQUOTE (((PROPS ID RC) (GROUP (PROPS FORMAT TABLE BACKGROUND 23130) ((TYPE DISPLAY LABEL "") (TYPE DISPLAY LABEL "") (TYPE DISPLAY LABEL "") (TYPE DISPLAY LABEL " Grain Size Levels" BOX 1 FONT (MODERN 10 BOLD) HJUSTIFY RIGHT)) ((TYPE STATE LABEL "Reduction!" MENUITEMS (" 0% = 300 DPI" " 5% = 285 DPI" "10% = 270 DPI" "15% = 255 DPI" "20% = 240 DPI" "25% = 225 DPI" "33% = 200 DPI" "35% = 195 DPI" "40% = 180 DPI" "45% = 165 DPI" "50% = 150 DPI" "55% = 135 DPI" "60% = 120 DPI" "67% = 100 DPI" "70% = 90 DPI" "75% = 75 DPI") INITSTATE " 0% = 300 DPI" LINKS (DISPLAY (GROUP REDUCTION)) FONT (MODERN 10 BOLD) BOX 1) (TYPE DISPLAY ID REDUCTION LABEL "" MAXWIDTH 120 BOX 1) (TYPE STATE LABEL "Gray Level!" MENUITEMS (" 0 = 8X8 33" " 1 = 8X8 33" " 2 = 8X8 33" " 3 = 8X8 33" " 4 = 6X6 37" " 5 = 5X5 26" " 6 = 5X5 18" " 7 = 4X4 17" " 8 = 4X4 17" " 9 = 4X4 17" "10 = 3X3 10" "11 = 2X2 5") INITSTATE " 0 = 8X8 33" LINKS (DISPLAY (GROUP GREYLEVEL)) FONT (MODERN 10 BOLD) BOX 1) (TYPE DISPLAY ID GREYLEVEL LABEL "" MAXWIDTH 120 BOX 1)) ((TYPE DISPLAY LABEL "")))) ((PROPS ID CD) (GROUP (PROPS FORMAT TABLE BACKGROUND 23130) ((TYPE DISPLAY LABEL "Contrast:" FONT (MODERN 10 BOLD) BOX 1) (TYPE DISPLAY LABEL \, LEFTARROW HELDFN MT.LOWERCONTRAST MESSAGE "" BOX 1) (TYPE DISPLAY LABEL \, CONTRASTBAR ID CONTRASTBAR MAXWIDTH 130 BOX 1) (TYPE DISPLAY LABEL \, RIGHTARROW HELDFN MT.RAISECONTRAST MESSAGE "" BOX 1) (TYPE EDIT ID CONTRAST LABEL 0 BOX 1 MAXWIDTH 23)) ((TYPE DISPLAY LABEL |Brightness:| FONT (MODERN 10 BOLD) BOX 1) (TYPE DISPLAY LABEL \, LEFTARROW HELDFN MT.LOWERBRIGHTNESS MESSAGE "" BOX 1) (TYPE DISPLAY LABEL \, BRIGHTBAR ID BRIGHTBAR MAXWIDTH 130 BOX 1) (TYPE DISPLAY LABEL \, RIGHTARROW HELDFN MT.RAISEBRIGHTNESS MESSAGE "" BOX 1) (TYPE EDIT ID BRIGHTNESS LABEL 0 BOX 1 MAXWIDTH 23)) ((TYPE DISPLAY LABEL "")))) ((PROPS ID MODE) (GROUP (PROPS FORMAT TABLE BACKGROUND 23130) ((TYPE STATE LABEL "Background!" ID BACK MENUITEMS ("HALFTONE" "LINEART") INITSTATE "HALFTONE" LINKS (DISPLAY (GROUP BACKGROUNDDISPLAY)) SELECTEDFN MT.SELECT.BACKGROUND FONT (MODERN 10 BOLD) BOX 1) (TYPE DISPLAY LABEL "" ID BACKGROUNDDISPLAY MAXWIDTH 57 BOX 1) (TYPE DISPLAY LABEL "Window Mode:" FONT (MODERN 10 BOLD) BOX 1) (TYPE DISPLAY ID WINDOWTYPE LABEL (\\\, MT.WINDOW) MAXWIDTH 58 BOX 1) (TYPE DISPLAY LABEL "Page Length:" FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID PAGELENGTH LABEL "" BOX 1 MAXWIDTH 45)) ((TYPE DISPLAY LABEL "")))) ((PROPS ID WINDOW) (GROUP (PROPS FORMAT TABLE BACKGROUND 23130) ((TYPE MOMENTARY LABEL "Frame! " FONT (MODERN 10 BOLD) SELECTEDFN MT.GETTRANSFRAME BOX 1) (TYPE DISPLAY LABEL "") (TYPE DISPLAY LABEL "") (TYPE DISPLAY LABEL X1\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID TX1 LABEL "" MAXWIDTH 45 BOX 1) (TYPE DISPLAY LABEL Y1\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID TY1 LABEL "" MAXWIDTH 45 BOX 1) (TYPE DISPLAY LABEL X2\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID TX2 LABEL "" MAXWIDTH 45 BOX 1) (TYPE DISPLAY LABEL Y2\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID TY2 LABEL "" MAXWIDTH 45 BOX 1)) ((TYPE DISPLAY LABEL "")) ((TYPE MOMENTARY LABEL "Window 1! " FONT (MODERN 10 BOLD) SELECTEDFN MT.GETWINDOW1 BOX 1) (TYPE STATE LABEL "ON?" ID SW1 INITSTATE " NO" MENUITEMS (" NO" "YES") SELECTEDFN MT.UPDATE.HTWINDOWS LINKS (DISPLAY (GROUP WINDOW1)) FONT (MODERN 10 BOLD) BOX 1) (TYPE DISPLAY ID WINDOW1 LABEL "" BOX 1 MAXWIDTH 21) (TYPE DISPLAY LABEL X1\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID X11 LABEL "" MAXWIDTH 45 BOX 1) (TYPE DISPLAY LABEL Y1\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID Y11 LABEL "" MAXWIDTH 45 BOX 1) (TYPE DISPLAY LABEL X2\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID X21 LABEL "" MAXWIDTH 45 BOX 1) (TYPE DISPLAY LABEL Y2\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID Y21 LABEL "" MAXWIDTH 45 BOX 1)) ((TYPE MOMENTARY LABEL "Window 2! " FONT (MODERN 10 BOLD) SELECTEDFN MT.GETWINDOW2 BOX 1) (TYPE STATE LABEL "ON?" ID SW2 INITSTATE " NO" MENUITEMS (" NO" "YES") SELECTEDFN MT.UPDATE.HTWINDOWS LINKS (DISPLAY (GROUP WINDOW2)) FONT (MODERN 10 BOLD) BOX 1) (TYPE DISPLAY ID WINDOW2 LABEL "" BOX 1 MAXWIDTH 21) (TYPE DISPLAY LABEL X1\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID X12 LABEL "" MAXWIDTH 45 BOX 1) (TYPE DISPLAY LABEL Y1\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID Y12 LABEL "" MAXWIDTH 45 BOX 1) (TYPE DISPLAY LABEL X2\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID X22 LABEL "" MAXWIDTH 45 BOX 1) (TYPE DISPLAY LABEL Y2\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID Y22 LABEL "" MAXWIDTH 45 BOX 1)) ((TYPE MOMENTARY LABEL "Window 3! " FONT (MODERN 10 BOLD) SELECTEDFN MT.GETWINDOW3 BOX 1) (TYPE STATE LABEL "ON?" ID SW3 INITSTATE " NO" MENUITEMS (" NO" "YES") SELECTEDFN MT.UPDATE.HTWINDOWS LINKS (DISPLAY (GROUP WINDOW3)) FONT (MODERN 10 BOLD) BOX 1) (TYPE DISPLAY ID WINDOW3 LABEL "" BOX 1 MAXWIDTH 21) (TYPE DISPLAY LABEL X1\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID X13 LABEL "" MAXWIDTH 45 BOX 1) (TYPE DISPLAY LABEL Y1\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID Y13 LABEL "" MAXWIDTH 45 BOX 1) (TYPE DISPLAY LABEL X2\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID X23 LABEL "" MAXWIDTH 45 BOX 1) (TYPE DISPLAY LABEL Y2\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID Y23 LABEL "" MAXWIDTH 45 BOX 1)) ((TYPE MOMENTARY LABEL "Window 4! " FONT (MODERN 10 BOLD) SELECTEDFN MT.GETWINDOW4 BOX 1) (TYPE STATE LABEL "ON?" ID SW4 INITSTATE " NO" MENUITEMS (" NO" "YES") SELECTEDFN MT.UPDATE.HTWINDOWS LINKS (DISPLAY (GROUP WINDOW4)) FONT (MODERN 10 BOLD) BOX 1) (TYPE DISPLAY ID WINDOW4 LABEL "" BOX 1 MAXWIDTH 21) (TYPE DISPLAY LABEL X1\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID X14 LABEL "" MAXWIDTH 45 BOX 1) (TYPE DISPLAY LABEL Y1\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID Y14 LABEL "" MAXWIDTH 45 BOX 1) (TYPE DISPLAY LABEL X2\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID X24 LABEL "" MAXWIDTH 45 BOX 1) (TYPE DISPLAY LABEL Y2\: FONT (MODERN 10 BOLD) BOX 1) (TYPE EDIT ID Y24 LABEL "" MAXWIDTH 45 BOX 1))))))) (SETQ MT.CONTROL.MENUWINDOW (FREEMENU MENU.DESCRIPTION "Microtek Configuration Menu" 23130 5)) (FM.CHANGESTATE (FM.GETITEM (QUOTE BACK) NIL MT.CONTROL.MENUWINDOW) MT.BACKGROUND MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE TX1) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CAR MT.FRAME) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE TY1) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADR MT.FRAME) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE TX2) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADDR MT.FRAME) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE TY2) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADDDR MT.FRAME) 0.125) MT.CONTROL.MENUWINDOW) (MT.SELECT.BACKGROUND) (FM.CHANGESTATE (FM.GETITEM (QUOTE PAGELENGTH) NIL MT.CONTROL.MENUWINDOW) MT.PAPERLENGTH MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE REDUCTION) NIL MT.CONTROL.MENUWINDOW) MT.REDUCTION MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE CONTRAST) NIL MT.CONTROL.MENUWINDOW) MT.CONTRAST MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE BRIGHTNESS) NIL MT.CONTROL.MENUWINDOW) MT.BRIGHTNESS MT.CONTROL.MENUWINDOW) (MT.CHANGE.BRIGHTBAR MT.BRIGHTNESS) (MT.CHANGE.CONTRASTBAR MT.CONTRAST) (OPENW MT.CONTROL.MENUWINDOW))) -) - -(MT.CHANGE.BRIGHTBAR -(LAMBDA (BRIGHTNESS) (* \; "Edited 8-Sep-88 19:01 by Briggs") (* |;;;| "Moves the cursor in BRIGHTBAR from one place to another.") (BITBLT INITIALBRIGHTBAR NIL NIL BRIGHTBAR NIL NIL NIL NIL NIL (QUOTE REPLACE)) (BITBLT MANCURSOR NIL NIL BRIGHTBAR (IPLUS 60 (FIX (TIMES BRIGHTNESS 2))) 0 10 10 NIL (QUOTE INVERT)) (FM.CHANGELABEL (FM.GETITEM (QUOTE BRIGHTBAR) NIL MT.CONTROL.MENUWINDOW) BRIGHTBAR MT.CONTROL.MENUWINDOW)) -) - -(MT.RAISEBRIGHTNESS -(LAMBDA NIL (* \; "Edited 5-Mar-87 13:05 by RDC") (|if| (LEQ (IPLUS MT.BRIGHTNESS 4) 28) |then| (MT.CHANGE.BRIGHTBAR (SETQ MT.BRIGHTNESS (IPLUS MT.BRIGHTNESS 4)))) (FM.CHANGELABEL (FM.GETITEM (QUOTE BRIGHTNESS) NIL MT.CONTROL.MENUWINDOW) MT.BRIGHTNESS MT.CONTROL.MENUWINDOW)) -) - -(MT.LOWERBRIGHTNESS -(LAMBDA NIL (* \; "Edited 5-Mar-87 13:04 by RDC") (|if| (GEQ (IDIFFERENCE MT.BRIGHTNESS 4) -24) |then| (MT.CHANGE.BRIGHTBAR (SETQ MT.BRIGHTNESS (IDIFFERENCE MT.BRIGHTNESS 4)))) (FM.CHANGELABEL (FM.GETITEM (QUOTE BRIGHTNESS) NIL MT.CONTROL.MENUWINDOW) MT.BRIGHTNESS MT.CONTROL.MENUWINDOW)) -) - -(MT.CHANGE.CONTRASTBAR -(LAMBDA (CONTRAST) (* \; "Edited 8-Sep-88 19:01 by Briggs") (* |;;;| "Moves the diamond cursor around inside CONTRASTBAR.") (BITBLT INITIALCONTRASTBAR NIL NIL CONTRASTBAR NIL NIL NIL NIL NIL (QUOTE REPLACE)) (BITBLT MANCURSOR NIL NIL CONTRASTBAR (IPLUS 60 (FIX (TIMES CONTRAST 2))) 0 10 10 NIL (QUOTE INVERT)) (FM.CHANGELABEL (FM.GETITEM (QUOTE CONTRASTBAR) NIL MT.CONTROL.MENUWINDOW) CONTRASTBAR MT.CONTROL.MENUWINDOW)) -) - -(MT.RAISECONTRAST -(LAMBDA NIL (* \; "Edited 5-Mar-87 13:04 by RDC") (|if| (LEQ (IPLUS MT.CONTRAST 4) 28) |then| (MT.CHANGE.CONTRASTBAR (SETQ MT.CONTRAST (IPLUS MT.CONTRAST 4)))) (FM.CHANGELABEL (FM.GETITEM (QUOTE CONTRAST) NIL MT.CONTROL.MENUWINDOW) MT.CONTRAST MT.CONTROL.MENUWINDOW)) -) - -(MT.LOWERCONTRAST -(LAMBDA NIL (* \; "Edited 5-Mar-87 13:03 by RDC") (|if| (GEQ (IDIFFERENCE MT.CONTRAST 4) -24) |then| (MT.CHANGE.CONTRASTBAR (SETQ MT.CONTRAST (IDIFFERENCE MT.CONTRAST 4)))) (FM.CHANGELABEL (FM.GETITEM (QUOTE CONTRAST) NIL MT.CONTROL.MENUWINDOW) MT.CONTRAST MT.CONTROL.MENUWINDOW)) -) - -(MT.SELECT.BACKGROUND -(LAMBDA NIL (* \; "Edited 5-Mar-87 15:09 by RDC") (SETQ MT.BACKGROUND (LISTGET (FM.GETSTATE MT.CONTROL.MENUWINDOW) (QUOTE BACK))) (|if| (STREQUAL MT.BACKGROUND "LINEART") |then| (FM.CHANGELABEL (FM.GETITEM (QUOTE WINDOWTYPE) NIL MT.CONTROL.MENUWINDOW) "HALFTONE" MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X11) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CAR MT.HALFTONEW1) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y11) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADR MT.HALFTONEW1) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X21) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADDR MT.HALFTONEW1) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y21) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADDDR MT.HALFTONEW1) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X12) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CAR MT.HALFTONEW2) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y12) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADR MT.HALFTONEW2) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X22) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADDR MT.HALFTONEW2) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y22) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADDDR MT.HALFTONEW2) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X13) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CAR MT.HALFTONEW3) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y13) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADR MT.HALFTONEW3) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X23) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADDR MT.HALFTONEW3) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y23) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADDDR MT.HALFTONEW3) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X14) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CAR MT.HALFTONEW4) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y14) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADR MT.HALFTONEW4) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X24) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADDR MT.HALFTONEW4) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y24) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADDDR MT.HALFTONEW4) 0.125) MT.CONTROL.MENUWINDOW) |else| (FM.CHANGELABEL (FM.GETITEM (QUOTE WINDOWTYPE) NIL MT.CONTROL.MENUWINDOW) "LINEART" MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X11) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CAR MT.TEXTW1) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y11) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADR MT.TEXTW1) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X21) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADDR MT.TEXTW1) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y21) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADDDR MT.TEXTW1) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X12) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CAR MT.TEXTW2) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y12) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADR MT.TEXTW2) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X22) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADDR MT.TEXTW2) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y22) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADDDR MT.TEXTW2) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X13) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CAR MT.TEXTW3) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y13) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADR MT.TEXTW3) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X23) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADDR MT.TEXTW3) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y23) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADDDR MT.TEXTW3) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X14) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CAR MT.TEXTW4) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y14) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADR MT.TEXTW4) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X24) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADDR MT.TEXTW4) 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y24) NIL MT.CONTROL.MENUWINDOW) (FTIMES (CADDDR MT.TEXTW4) 0.125) MT.CONTROL.MENUWINDOW)) (MT.UPDATE.HTWINDOWS)) -) - -(MT.GETTRANSFRAME -(LAMBDA NIL (* \; "Edited 5-Mar-87 13:28 by RDC") (PROG (WINDOWLOC TWINDOW PAGEMAPWIDTH PAGEMAPHEIGHT ORGX ORGY WIDTH HEIGHT) (TOTOPW MTDISPLAYWINDOW) (SETQ WINDOWLOC (WINDOWPROP MTDISPLAYWINDOW (QUOTE REGION))) (SETQ TWINDOW (SETQ WINDOW (GETREGION))) (SETQ PAGEMAPWIDTH (IDIFFERENCE (WINDOWPROP MTDISPLAYWINDOW (QUOTE WIDTH)) (ITIMES 2 (WINDOWPROP MTDISPLAYWINDOW (QUOTE BORDER))))) (SETQ PAGEMAPHEIGHT (IDIFFERENCE (IDIFFERENCE (WINDOWPROP MTDISPLAYWINDOW (QUOTE HEIGHT)) (ITIMES 2 (WINDOWPROP MTDISPLAYWINDOW (QUOTE BORDER)))) (FONTPROP |WindowTitleDisplayStream| (QUOTE HEIGHT)))) (SETQ ORGX (IMAX 0 (IMIN PAGEMAPWIDTH (IDIFFERENCE (IMAX 0 (IDIFFERENCE (CAR TWINDOW) (CAR WINDOWLOC))) (WINDOWPROP MTDISPLAYWINDOW (QUOTE BORDER)))))) (SETQ ORGY (IMAX 0 (IMIN PAGEMAPHEIGHT (IDIFFERENCE (IMAX 0 (IDIFFERENCE (CADR TWINDOW) (CADR WINDOWLOC))) 25)))) (SETQ WIDTH (IMIN PAGEMAPWIDTH (CADDR TWINDOW))) (|if| (GREATERP (IPLUS ORGX WIDTH) PAGEMAPWIDTH) |then| (SETQ WIDTH (IDIFFERENCE PAGEMAPWIDTH ORGX))) (SETQ HEIGHT (IMIN PAGEMAPHEIGHT (CADDDR TWINDOW))) (|if| (GREATERP (IPLUS ORGY HEIGHT) PAGEMAPHEIGHT) |then| (SETQ HEIGHT (IDIFFERENCE PAGEMAPHEIGHT ORGY))) (SETQ X1 (FIX (QUOTIENT ORGX 5.0))) (SETQ Y1 (FIX (QUOTIENT (IDIFFERENCE PAGEMAPHEIGHT (IPLUS ORGY HEIGHT)) 5.0))) (SETQ X2 (FIX (QUOTIENT (IPLUS ORGX WIDTH) 5.0))) (SETQ Y2 (FIX (QUOTIENT (IDIFFERENCE PAGEMAPHEIGHT ORGY) 5.0))) (FM.CHANGESTATE (FM.GETITEM (QUOTE TX1) NIL MT.CONTROL.MENUWINDOW) (FTIMES X1 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE TY1) NIL MT.CONTROL.MENUWINDOW) (FTIMES Y1 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE TX2) NIL MT.CONTROL.MENUWINDOW) (FTIMES X2 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE TY2) NIL MT.CONTROL.MENUWINDOW) (FTIMES Y2 0.125) MT.CONTROL.MENUWINDOW) (SETQ MT.FRAME (LIST X1 Y1 X2 Y2)) (SETQ MT.FRAME.BOX (LIST ORGX (IPLUS ORGY 20) WIDTH HEIGHT)) (MT.UPDATE.HTWINDOWS))) -) - -(MT.GETWINDOW1 -(LAMBDA NIL (* \; "Edited 5-Mar-87 14:23 by RDC") (PROG (WINDOWLOC TWINDOW PAGEMAPWIDTH PAGEMAPHEIGHT ORGX ORGY WIDTH HEIGHT) (TOTOPW MTDISPLAYWINDOW) (SETQ WINDOWLOC (WINDOWPROP MTDISPLAYWINDOW (QUOTE REGION))) (SETQ TWINDOW (SETQ WINDOW (GETREGION))) (SETQ PAGEMAPWIDTH (IDIFFERENCE (WINDOWPROP MTDISPLAYWINDOW (QUOTE WIDTH)) (ITIMES 2 (WINDOWPROP MTDISPLAYWINDOW (QUOTE BORDER))))) (SETQ PAGEMAPHEIGHT (IDIFFERENCE (IDIFFERENCE (WINDOWPROP MTDISPLAYWINDOW (QUOTE HEIGHT)) (ITIMES 2 (WINDOWPROP MTDISPLAYWINDOW (QUOTE BORDER)))) (FONTPROP |WindowTitleDisplayStream| (QUOTE HEIGHT)))) (SETQ ORGX (IMAX 0 (IMIN PAGEMAPWIDTH (IDIFFERENCE (IMAX 0 (IDIFFERENCE (CAR TWINDOW) (CAR WINDOWLOC))) (WINDOWPROP MTDISPLAYWINDOW (QUOTE BORDER)))))) (SETQ ORGY (IMAX 0 (IMIN PAGEMAPHEIGHT (IDIFFERENCE (IMAX 0 (IDIFFERENCE (CADR TWINDOW) (CADR WINDOWLOC))) 25)))) (SETQ WIDTH (IMIN PAGEMAPWIDTH (CADDR TWINDOW))) (|if| (GREATERP (IPLUS ORGX WIDTH) PAGEMAPWIDTH) |then| (SETQ WIDTH (IDIFFERENCE PAGEMAPWIDTH ORGX))) (SETQ HEIGHT (IMIN PAGEMAPHEIGHT (CADDDR TWINDOW))) (|if| (GREATERP (IPLUS ORGY HEIGHT) PAGEMAPHEIGHT) |then| (SETQ HEIGHT (IDIFFERENCE PAGEMAPHEIGHT ORGY))) (SETQ X1 (FIX (QUOTIENT ORGX 5.0))) (SETQ Y1 (FIX (QUOTIENT (IDIFFERENCE PAGEMAPHEIGHT (IPLUS ORGY HEIGHT)) 5.0))) (SETQ X2 (FIX (QUOTIENT (IPLUS ORGX WIDTH) 5.0))) (SETQ Y2 (FIX (QUOTIENT (IDIFFERENCE PAGEMAPHEIGHT ORGY) 5.0))) (FM.CHANGESTATE (FM.GETITEM (QUOTE X11) NIL MT.CONTROL.MENUWINDOW) (FTIMES X1 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y11) NIL MT.CONTROL.MENUWINDOW) (FTIMES Y1 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X21) NIL MT.CONTROL.MENUWINDOW) (FTIMES X2 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y21) NIL MT.CONTROL.MENUWINDOW) (FTIMES Y2 0.125) MT.CONTROL.MENUWINDOW) (|if| (STREQUAL "HALFTONE" (LISTGET (FM.GETSTATE MT.CONTROL.MENUWINDOW) (QUOTE BACK))) |then| (SETQ MT.TEXTW1 (LIST X1 Y1 X2 Y2)) (SETQ MT.TEXTW1BOX (LIST ORGX (IPLUS ORGY 20) WIDTH HEIGHT)) |else| (SETQ MT.HALFTONEW1 (LIST X1 Y1 X2 Y2)) (SETQ MT.HALFTONEW1BOX (LIST ORGX (IPLUS ORGY 20) WIDTH HEIGHT))) (MT.UPDATE.HTWINDOWS))) -) - -(MT.GETWINDOW2 -(LAMBDA NIL (* \; "Edited 5-Mar-87 14:24 by RDC") (PROG (WINDOWLOC TWINDOW PAGEMAPWIDTH PAGEMAPHEIGHT ORGX ORGY WIDTH HEIGHT) (TOTOPW MTDISPLAYWINDOW) (SETQ WINDOWLOC (WINDOWPROP MTDISPLAYWINDOW (QUOTE REGION))) (SETQ TWINDOW (SETQ WINDOW (GETREGION))) (SETQ PAGEMAPWIDTH (IDIFFERENCE (WINDOWPROP MTDISPLAYWINDOW (QUOTE WIDTH)) (ITIMES 2 (WINDOWPROP MTDISPLAYWINDOW (QUOTE BORDER))))) (SETQ PAGEMAPHEIGHT (IDIFFERENCE (IDIFFERENCE (WINDOWPROP MTDISPLAYWINDOW (QUOTE HEIGHT)) (ITIMES 2 (WINDOWPROP MTDISPLAYWINDOW (QUOTE BORDER)))) (FONTPROP |WindowTitleDisplayStream| (QUOTE HEIGHT)))) (SETQ ORGX (IMAX 0 (IMIN PAGEMAPWIDTH (IDIFFERENCE (IMAX 0 (IDIFFERENCE (CAR TWINDOW) (CAR WINDOWLOC))) (WINDOWPROP MTDISPLAYWINDOW (QUOTE BORDER)))))) (SETQ ORGY (IMAX 0 (IMIN PAGEMAPHEIGHT (IDIFFERENCE (IMAX 0 (IDIFFERENCE (CADR TWINDOW) (CADR WINDOWLOC))) 25)))) (SETQ WIDTH (IMIN PAGEMAPWIDTH (CADDR TWINDOW))) (|if| (GREATERP (IPLUS ORGX WIDTH) PAGEMAPWIDTH) |then| (SETQ WIDTH (IDIFFERENCE PAGEMAPWIDTH ORGX))) (SETQ HEIGHT (IMIN PAGEMAPHEIGHT (CADDDR TWINDOW))) (|if| (GREATERP (IPLUS ORGY HEIGHT) PAGEMAPHEIGHT) |then| (SETQ HEIGHT (IDIFFERENCE PAGEMAPHEIGHT ORGY))) (SETQ X1 (FIX (QUOTIENT ORGX 5.0))) (SETQ Y1 (FIX (QUOTIENT (IDIFFERENCE PAGEMAPHEIGHT (IPLUS ORGY HEIGHT)) 5.0))) (SETQ X2 (FIX (QUOTIENT (IPLUS ORGX WIDTH) 5.0))) (SETQ Y2 (FIX (QUOTIENT (IDIFFERENCE PAGEMAPHEIGHT ORGY) 5.0))) (FM.CHANGESTATE (FM.GETITEM (QUOTE X12) NIL MT.CONTROL.MENUWINDOW) (FTIMES X1 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y12) NIL MT.CONTROL.MENUWINDOW) (FTIMES Y1 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X22) NIL MT.CONTROL.MENUWINDOW) (FTIMES X2 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y22) NIL MT.CONTROL.MENUWINDOW) (FTIMES Y2 0.125) MT.CONTROL.MENUWINDOW) (|if| (STREQUAL "HALFTONE" (LISTGET (FM.GETSTATE MT.CONTROL.MENUWINDOW) (QUOTE BACK))) |then| (SETQ MT.TEXTW2 (LIST X1 Y1 X2 Y2)) (SETQ MT.TEXTW2BOX (LIST ORGX (IPLUS ORGY 20) WIDTH HEIGHT)) |else| (SETQ MT.HALFTONEW2 (LIST X1 Y1 X2 Y2)) (SETQ MT.HALFTONEW2BOX (LIST ORGX (IPLUS ORGY 20) WIDTH HEIGHT))) (MT.UPDATE.HTWINDOWS))) -) - -(MT.GETWINDOW3 -(LAMBDA NIL (* \; "Edited 5-Mar-87 14:25 by RDC") (PROG (WINDOWLOC TWINDOW PAGEMAPWIDTH PAGEMAPHEIGHT ORGX ORGY WIDTH HEIGHT) (TOTOPW MTDISPLAYWINDOW) (SETQ WINDOWLOC (WINDOWPROP MTDISPLAYWINDOW (QUOTE REGION))) (SETQ TWINDOW (SETQ WINDOW (GETREGION))) (SETQ PAGEMAPWIDTH (IDIFFERENCE (WINDOWPROP MTDISPLAYWINDOW (QUOTE WIDTH)) (ITIMES 2 (WINDOWPROP MTDISPLAYWINDOW (QUOTE BORDER))))) (SETQ PAGEMAPHEIGHT (IDIFFERENCE (IDIFFERENCE (WINDOWPROP MTDISPLAYWINDOW (QUOTE HEIGHT)) (ITIMES 2 (WINDOWPROP MTDISPLAYWINDOW (QUOTE BORDER)))) (FONTPROP |WindowTitleDisplayStream| (QUOTE HEIGHT)))) (SETQ ORGX (IMAX 0 (IMIN PAGEMAPWIDTH (IDIFFERENCE (IMAX 0 (IDIFFERENCE (CAR TWINDOW) (CAR WINDOWLOC))) (WINDOWPROP MTDISPLAYWINDOW (QUOTE BORDER)))))) (SETQ ORGY (IMAX 0 (IMIN PAGEMAPHEIGHT (IDIFFERENCE (IMAX 0 (IDIFFERENCE (CADR TWINDOW) (CADR WINDOWLOC))) 25)))) (SETQ WIDTH (IMIN PAGEMAPWIDTH (CADDR TWINDOW))) (|if| (GREATERP (IPLUS ORGX WIDTH) PAGEMAPWIDTH) |then| (SETQ WIDTH (IDIFFERENCE PAGEMAPWIDTH ORGX))) (SETQ HEIGHT (IMIN PAGEMAPHEIGHT (CADDDR TWINDOW))) (|if| (GREATERP (IPLUS ORGY HEIGHT) PAGEMAPHEIGHT) |then| (SETQ HEIGHT (IDIFFERENCE PAGEMAPHEIGHT ORGY))) (SETQ X1 (FIX (QUOTIENT ORGX 5.0))) (SETQ Y1 (FIX (QUOTIENT (IDIFFERENCE PAGEMAPHEIGHT (IPLUS ORGY HEIGHT)) 5.0))) (SETQ X2 (FIX (QUOTIENT (IPLUS ORGX WIDTH) 5.0))) (SETQ Y2 (FIX (QUOTIENT (IDIFFERENCE PAGEMAPHEIGHT ORGY) 5.0))) (FM.CHANGESTATE (FM.GETITEM (QUOTE X13) NIL MT.CONTROL.MENUWINDOW) (FTIMES X1 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y13) NIL MT.CONTROL.MENUWINDOW) (FTIMES Y1 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X23) NIL MT.CONTROL.MENUWINDOW) (FTIMES X2 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y23) NIL MT.CONTROL.MENUWINDOW) (FTIMES Y2 0.125) MT.CONTROL.MENUWINDOW) (|if| (STREQUAL "HALFTONE" (LISTGET (FM.GETSTATE MT.CONTROL.MENUWINDOW) (QUOTE BACK))) |then| (SETQ MT.TEXTW3 (LIST X1 Y1 X2 Y2)) (SETQ MT.TEXTW3BOX (LIST ORGX (IPLUS ORGY 20) WIDTH HEIGHT)) |else| (SETQ MT.HALFTONEW3 (LIST X1 Y1 X2 Y2)) (SETQ MT.HALFTONEW3BOX (LIST ORGX (IPLUS ORGY 20) WIDTH HEIGHT))) (MT.UPDATE.HTWINDOWS))) -) - -(MT.GETWINDOW4 -(LAMBDA NIL (* \; "Edited 5-Mar-87 14:26 by RDC") (PROG (WINDOWLOC TWINDOW PAGEMAPWIDTH PAGEMAPHEIGHT ORGX ORGY WIDTH HEIGHT) (TOTOPW MTDISPLAYWINDOW) (SETQ WINDOWLOC (WINDOWPROP MTDISPLAYWINDOW (QUOTE REGION))) (SETQ TWINDOW (SETQ WINDOW (GETREGION))) (SETQ PAGEMAPWIDTH (IDIFFERENCE (WINDOWPROP MTDISPLAYWINDOW (QUOTE WIDTH)) (ITIMES 2 (WINDOWPROP MTDISPLAYWINDOW (QUOTE BORDER))))) (SETQ PAGEMAPHEIGHT (IDIFFERENCE (IDIFFERENCE (WINDOWPROP MTDISPLAYWINDOW (QUOTE HEIGHT)) (ITIMES 2 (WINDOWPROP MTDISPLAYWINDOW (QUOTE BORDER)))) (FONTPROP |WindowTitleDisplayStream| (QUOTE HEIGHT)))) (SETQ ORGX (IMAX 0 (IMIN PAGEMAPWIDTH (IDIFFERENCE (IMAX 0 (IDIFFERENCE (CAR TWINDOW) (CAR WINDOWLOC))) (WINDOWPROP MTDISPLAYWINDOW (QUOTE BORDER)))))) (SETQ ORGY (IMAX 0 (IMIN PAGEMAPHEIGHT (IDIFFERENCE (IMAX 0 (IDIFFERENCE (CADR TWINDOW) (CADR WINDOWLOC))) 25)))) (SETQ WIDTH (IMIN PAGEMAPWIDTH (CADDR TWINDOW))) (|if| (GREATERP (IPLUS ORGX WIDTH) PAGEMAPWIDTH) |then| (SETQ WIDTH (IDIFFERENCE PAGEMAPWIDTH ORGX))) (SETQ HEIGHT (IMIN PAGEMAPHEIGHT (CADDDR TWINDOW))) (|if| (GREATERP (IPLUS ORGY HEIGHT) PAGEMAPHEIGHT) |then| (SETQ HEIGHT (IDIFFERENCE PAGEMAPHEIGHT ORGY))) (SETQ X1 (FIX (QUOTIENT ORGX 5.0))) (SETQ Y1 (FIX (QUOTIENT (IDIFFERENCE PAGEMAPHEIGHT (IPLUS ORGY HEIGHT)) 5.0))) (SETQ X2 (FIX (QUOTIENT (IPLUS ORGX WIDTH) 5.0))) (SETQ Y2 (FIX (QUOTIENT (IDIFFERENCE PAGEMAPHEIGHT ORGY) 5.0))) (FM.CHANGESTATE (FM.GETITEM (QUOTE X14) NIL MT.CONTROL.MENUWINDOW) (FTIMES X1 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y14) NIL MT.CONTROL.MENUWINDOW) (FTIMES Y1 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE X24) NIL MT.CONTROL.MENUWINDOW) (FTIMES X2 0.125) MT.CONTROL.MENUWINDOW) (FM.CHANGESTATE (FM.GETITEM (QUOTE Y24) NIL MT.CONTROL.MENUWINDOW) (FTIMES Y2 0.125) MT.CONTROL.MENUWINDOW) (|if| (STREQUAL "HALFTONE" (LISTGET (FM.GETSTATE MT.CONTROL.MENUWINDOW) (QUOTE BACK))) |then| (SETQ MT.TEXTW4 (LIST X1 Y1 X2 Y2)) (SETQ MT.TEXTW4BOX (LIST ORGX (IPLUS ORGY 20) WIDTH HEIGHT)) |else| (SETQ MT.HALFTONEW4 (LIST X1 Y1 X2 Y2)) (SETQ MT.HALFTONEW4BOX (LIST ORGX (IPLUS ORGY 20) WIDTH HEIGHT))) (MT.UPDATE.HTWINDOWS))) -) - -(MT.UPDATE.HTWINDOWS -(LAMBDA NIL (* \; "Edited 12-Mar-87 12:29 by rdc") (PROG ((PARAMETER.LIST (FM.GETSTATE MT.CONTROL.MENUWINDOW)) (WINDOW (LIST 0 0 0 0))) (CLEARW MTDISPLAYWINDOW) (BITBLT MT.GRID 0 0 MTDISPLAYWINDOW) (MT.DRAWAREABOX (CAR MT.FRAME.BOX) (CADR MT.FRAME.BOX) (CADDR MT.FRAME.BOX) (CADDDR MT.FRAME.BOX) 2 NIL MTDISPLAYWINDOW) (|if| (STREQUAL (LISTGET PARAMETER.LIST (QUOTE SW1)) "YES") |then| (|if| (STREQUAL (LISTGET PARAMETER.LIST (QUOTE BACK)) "HALFTONE") |then| (SETQ WINDOW MT.TEXTW1BOX) |else| (SETQ WINDOW MT.HALFTONEW1BOX))) (BLTSHADE 2000 MTDISPLAYWINDOW (CAR WINDOW) (CADR WINDOW) (CADDR WINDOW) (CADDDR WINDOW)) (|if| (STREQUAL (LISTGET PARAMETER.LIST (QUOTE SW2)) "YES") |then| (|if| (STREQUAL (LISTGET PARAMETER.LIST (QUOTE BACK)) "HALFTONE") |then| (SETQ WINDOW MT.TEXTW2BOX) |else| (SETQ WINDOW MT.HALFTONEW2BOX))) (BLTSHADE GRAYSHADE MTDISPLAYWINDOW (CAR WINDOW) (CADR WINDOW) (CADDR WINDOW) (CADDDR WINDOW)) (|if| (STREQUAL (LISTGET PARAMETER.LIST (QUOTE SW3)) "YES") |then| (|if| (STREQUAL (LISTGET PARAMETER.LIST (QUOTE BACK)) "HALFTONE") |then| (SETQ WINDOW MT.TEXTW3BOX) |else| (SETQ WINDOW MT.HALFTONEW3BOX))) (BLTSHADE 45 MTDISPLAYWINDOW (CAR WINDOW) (CADR WINDOW) (CADDR WINDOW) (CADDDR WINDOW)) (|if| (STREQUAL (LISTGET PARAMETER.LIST (QUOTE SW4)) "YES") |then| (|if| (STREQUAL (LISTGET PARAMETER.LIST (QUOTE BACK)) "HALFTONE") |then| (SETQ WINDOW MT.TEXTW4BOX) |else| (SETQ WINDOW MT.HALFTONEW4BOX))) (BLTSHADE 50000 MTDISPLAYWINDOW (CAR WINDOW) (CADR WINDOW) (CADDR WINDOW) (CADDDR WINDOW)))) -) - -(MT.DRAWAREABOX -(LAMBDA (BOXLEFT BOXBOTTOM BOXWIDTH BOXHEIGHT BORDER OP W TEXTURE) (* \; "Edited 8-Sep-88 19:02 by Briggs") (OR TEXTURE (SETQ TEXTURE BLACKSHADE)) (* \; "draws lines inside the region.") (* \; "draw left edge") (BITBLT NIL NIL NIL W BOXLEFT BOXBOTTOM BORDER BOXHEIGHT (QUOTE TEXTURE) OP TEXTURE) (* \; "draw top") (BITBLT NIL NIL NIL W (PLUS BOXLEFT BORDER) (DIFFERENCE (PLUS BOXBOTTOM BOXHEIGHT) BORDER) (DIFFERENCE BOXWIDTH (PLUS BORDER BORDER)) BORDER (QUOTE TEXTURE) OP TEXTURE) (* \; "draw bottom") (BITBLT NIL NIL NIL W (PLUS BOXLEFT BORDER) BOXBOTTOM (DIFFERENCE BOXWIDTH (PLUS BORDER BORDER)) BORDER (QUOTE TEXTURE) OP TEXTURE) (* \; "draw right edge") (BITBLT NIL NIL NIL W (DIFFERENCE (PLUS BOXLEFT BOXWIDTH) BORDER) BOXBOTTOM BORDER BOXHEIGHT (QUOTE TEXTURE) OP TEXTURE)) -) -) - (* * |Command| |Functions|) - -(DEFINEQ - -(MT.COMMAND.MENU -(LAMBDA NIL (* \; "Edited 8-Sep-88 19:02 by Briggs") (PROG (MENU.DESCRIPTION) (SETQ MENU.DESCRIPTION (BQUOTE (((PROPS ID COMMAND) (GROUP (PROPS FORMAT TABLE BACKGROUND 23130) ((TYPE MOMENTARY LABEL SCAN! FONT (MODERN 12 BOLD) SELECTEDFN MT.SCAN BOX 3) (TYPE MOMENTARY LABEL STOP! FONT (MODERN 12 BOLD) SELECTEDFN MT.STOP.SCANNING BOX 3) (TYPE MOMENTARY LABEL RESET! FONT (MODERN 12 BOLD) SELECTEDFN MT.RESET BOX 3) (TYPE MOMENTARY LABEL PAGEMAP! FONT (MODERN 12 BOLD) SELECTEDFN MT.PAGEMAP BOX 3) (TYPE MOMENTARY LABEL QUIT! ID QUIT FONT (MODERN 12 BOLD) SELECTEDFN MT.QUIT BOX 3)))) ((PROPS ID COMMAND2) (GROUP (PROPS FORMAT TABLE BACKGROUND 23130) ((TYPE MOMENTARY LABEL "Output Filename!: " FONT (MODERN 10 BOLD) SELECTEDFN MT.GET.OUTFILENAME BOX 1) (TYPE EDIT ID OUTFILENAME LABEL {DSK}IMAGE BOX 1 MAXWIDTH 375))))))) (SETQ MT.COMMAND.MENUWINDOW (FREEMENU MENU.DESCRIPTION "Microtek Command Menu" 23130 5)) (OPENW MT.COMMAND.MENUWINDOW))) -) - -(MT.GET.OUTFILENAME -(LAMBDA NIL (* \; "Edited 12-Mar-87 14:48 by rdc") (FM.EDITITEM (FM.GETITEM (QUOTE OUTFILENAME) NIL MT.COMMAND.MENUWINDOW) MT.COMMAND.MENUWINDOW)) -) - -(MT.SCAN -(LAMBDA NIL (* \; "Edited 8-Sep-88 19:02 by Briggs") (ADD.PROCESS (QUOTE (MT.START.SCANNING)) (QUOTE NAME) (QUOTE MICROTEK.SCANNING))) -) - -(MT.START.SCANNING -(LAMBDA NIL (* \; "Edited 8-Sep-88 21:36 by Briggs") (PROG (HDR DATACOUNT (SCANLINECOUNT 0) CHECKSUM NUMBEROFBYTES OUTFILESTREAM CORESTREAM SOR RT (LINEBUFFERSIZE 0) LINEBUFFER GREYLEVEL REDUCTION DATASIZE) (* |;;| "Reset the Scanner") (MT.RESET) (* |;;| "Send the scan parameters") (|if| (NOT (MT.SEND.SCAN.PARAMETERS)) |then| (MT.PRINT.STATUS "Scanning parameters not valid") (RINGBELLS) (BLOCK 2000) (MT.RESET) (RETURN NIL)) (* |;;| "Setup the Core output file") (SETQ CORESTREAM (MT.SETUPSCANFILE)) (* |;;| "Send start scanning command") (MT.SENDCOMMAND 1 (LIST (QUOTE S))) (MT.PRINT.STATUS "[scanning]") (* |;;| "Get headerof each line") AGAIN (SETQ SOR (BIN MT.INSTREAM)) (SETQ RT (BIN MT.INSTREAM)) (SETQ DATACOUNT (IPLUS (ITIMES 256 (BIN MT.INSTREAM)) (BIN MT.INSTREAM))) (SELECTQ RT ((0 4) (* |;;| "since we never NAK, we can speed up the processing by ACKing early") (MT.SENDACK) (SETQ DATASIZE DATACOUNT) (* \; "needed later") (SETQ SCANLINECOUNT (IPLUS SCANLINECOUNT 1)) (COND ((IGREATERP DATACOUNT LINEBUFFERSIZE) (SETQ LINEBUFFER (ARRAY DATACOUNT (QUOTE BYTE) 0 0)))) (AIN LINEBUFFER 0 DATACOUNT MT.INSTREAM) (AOUT LINEBUFFER 0 DATACOUNT CORESTREAM) (SETQ CHECKSUM (BIN MT.INSTREAM)) (GO AGAIN)) (128 (SELCHARQ (BIN MT.INSTREAM) (E (BIN MT.INSTREAM) (MT.SENDACK) (MT.PRINT.STATUS "[scanning done]")) (? (|to| DATACOUNT |do| (MT.PRINT.ERROR.MSG (BIN MT.INSTREAM))) (MT.SENDACK) (CLOSEF? CORESTREAM) (RETURN NIL)) NIL)) (PROGN (MT.PRINT.STATUS "[ERROR: unrecognized record type from scanner]") (RETURN NIL))) (MT.PRINT.STATUS "[copying to file]") (SETQ NUMBEROFBYTES (GETFILEPTR CORESTREAM)) (SETQ OUTFILESTREAM (OPENSTREAM (LISTGET (FM.GETSTATE MT.COMMAND.MENUWINDOW) (QUOTE OUTFILENAME)) (QUOTE OUTPUT))) (* |;;| "print header on file, the NO indicates that this file does not contain compressed data") (PRINT (QUOTE NO) OUTFILESTREAM) (SETQ REDUCTION (SUBSTRING (CADR (MEMBER "Reduction!" (FM.GETSTATE MT.CONTROL.MENUWINDOW))) 1 2)) (|if| (STREQUAL (SUBSTRING REDUCTION 1 1) " ") |then| (SETQ REDUCTION (SUBSTRING REDUCTION 2 2))) (PRINT (MKATOM REDUCTION) OUTFILESTREAM) (SETQ GREYLEVEL (SUBSTRING (CADR (MEMBER "Gray Level!" (FM.GETSTATE MT.CONTROL.MENUWINDOW))) 1 2)) (|if| (STREQUAL (SUBSTRING GREYLEVEL 1 1) " ") |then| (SETQ GREYLEVEL (SUBSTRING GREYLEVEL 2 2))) (PRINT (MKATOM GREYLEVEL) OUTFILESTREAM) (PRINT (LISTGET (FM.GETSTATE MT.CONTROL.MENUWINDOW) (QUOTE CONTRAST)) OUTFILESTREAM) (PRINT (LISTGET (FM.GETSTATE MT.CONTROL.MENUWINDOW) (QUOTE BRIGHTNESS)) OUTFILESTREAM) (PRINT SCANLINECOUNT OUTFILESTREAM) (PRINT DATASIZE OUTFILESTREAM) (SETFILEPTR CORESTREAM 0) (COPYBYTES CORESTREAM OUTFILESTREAM NUMBEROFBYTES) (CLOSEF OUTFILESTREAM) (CLOSEF CORESTREAM) (MT.PRINT.STATUS "[done]"))) -) - -(MT.SETUPSCANFILE -(LAMBDA NIL (* \; "Edited 8-Sep-88 21:13 by Briggs") (* |;;;| "will check to see if the scratch file is in core. If it is it will dirty 500 pages to bring them into real memory (speedup when writing to them!). If there wasn't a file, it creates it and then dirtys 500 pgs. RETURNS: stream to the file") (PROG (RECOG FILE) (MT.PRINT.STATUS "[setting up scratch file]") (SETQ FILE (OPENSTREAM (QUOTE {SCRATCH}) (QUOTE BOTH) (QUOTE NEW) (QUOTE (SEQUENTIAL T)))) (* |;;;| "now expand the file so you can read and transfer fast") (|for| I |from| 0 |to| 260000 |by| 512 |do| (SETFILEPTR FILE I) (BOUT FILE 1)) (* |;;;| "and reset to the beginning") (SETFILEPTR FILE 0) (MT.PRINT.STATUS "[scratch file set up]") (RETURN FILE))) -) - -(MT.SEND.SCAN.PARAMETERS -(LAMBDA NIL (DECLARE (GLOBALVARS MT.CONTROL.MENUWINDOW MT.PAPERLENGTH MT.FRAME)) (* \; "Edited 8-Sep-88 18:38 by Briggs") (PROG (PARAMETER.LIST PAPERLENGTH SCANFRAME BACKGROUND GREYLEVEL CONTRAST BRIGHTNESS RESOLUTION REDUCTION DATACOMPRESSION (NO.OF.WINDOWS 0) (COORD.LIST NIL)) (SETQ PARAMETER.LIST (FM.GETSTATE MT.CONTROL.MENUWINDOW)) (SETQ PAPERLENGTH (IPLUS 24 (QUOTIENT (FDIFFERENCE MT.PAPERLENGTH 3.0) 0.125))) (SETQ SCANFRAME MT.FRAME) (|if| (EQ (MKATOM (LISTGET PARAMETER.LIST (QUOTE BACK))) (QUOTE HALFTONE)) |then| (SETQ BACKGROUND (QUOTE H)) |else| (SETQ BACKGROUND (QUOTE T))) (|if| (STREQUAL (LISTGET PARAMETER.LIST (QUOTE SW1)) "YES") |then| (SETQ NO.OF.WINDOWS (IPLUS NO.OF.WINDOWS 1)) (SETQ COORD.LIST (APPEND COORD.LIST (|if| (EQ BACKGROUND (QUOTE H)) |then| MT.TEXTW1 |else| MT.HALFTONEW1)))) (|if| (STREQUAL (LISTGET PARAMETER.LIST (QUOTE SW2)) "YES") |then| (SETQ NO.OF.WINDOWS (IPLUS NO.OF.WINDOWS 1)) (SETQ COORD.LIST (APPEND COORD.LIST (|if| (EQ BACKGROUND (QUOTE H)) |then| MT.TEXTW2 |else| MT.HALFTONEW2)))) (|if| (STREQUAL (LISTGET PARAMETER.LIST (QUOTE SW3)) "YES") |then| (SETQ NO.OF.WINDOWS (IPLUS NO.OF.WINDOWS 1)) (SETQ COORD.LIST (APPEND COORD.LIST (|if| (EQ BACKGROUND (QUOTE H)) |then| MT.TEXTW3 |else| MT.HALFTONEW3)))) (|if| (STREQUAL (LISTGET PARAMETER.LIST (QUOTE SW4)) "YES") |then| (SETQ NO.OF.WINDOWS (IPLUS NO.OF.WINDOWS 1)) (SETQ COORD.LIST (APPEND COORD.LIST (|if| (EQ BACKGROUND (QUOTE H)) |then| MT.TEXTW4 |else| MT.HALFTONEW4)))) (|if| (STREQUAL (SUBSTRING (SETQ GREYLEVEL (SUBSTRING (CADR (MEMBER "Gray Level!" PARAMETER.LIST)) 1 2)) 1 1) " ") |then| (SETQ GREYLEVEL (SUBSTRING GREYLEVEL 2 2))) (SETQ GREYLEVEL (MKATOM GREYLEVEL)) (SETQ CONTRAST (IPLUS 7 (IQUOTIENT (MKATOM (LISTGET PARAMETER.LIST (QUOTE CONTRAST))) 4))) (SETQ BRIGHTNESS (IPLUS 7 (IQUOTIENT (MKATOM (LISTGET PARAMETER.LIST (QUOTE BRIGHTNESS))) 4))) (|if| (STREQUAL (SUBSTRING (SETQ REDUCTION (SUBSTRING (CADR (MEMBER "Reduction!" PARAMETER.LIST)) 1 2)) 1 1) " ") |then| (SETQ REDUCTION (SUBSTRING REDUCTION 2 2))) (SETQ RESOLUTION (LISTGET (QUOTE (0 16 5 17 10 18 15 19 20 20 25 21 33 22 35 23 40 24 45 25 50 26 55 27 60 28 67 29 70 30 75 31)) (MKATOM REDUCTION))) (|if| (EQ (QUOTE YES) (MKATOM (LISTGET PARAMETER.LIST (QUOTE COMPRESSDATA)))) |then| (SETQ DATACOMPRESSION 1) |else| (SETQ DATACOMPRESSION 0)) (|if| (AND (MT.SENDCOMMAND 2 (LIST (QUOTE L) PAPERLENGTH)) (MT.SENDCOMMAND 5 (APPEND (LIST (QUOTE F)) SCANFRAME)) (|if| (GREATERP NO.OF.WINDOWS 0) |then| (MT.SENDCOMMAND (IPLUS 2 (ITIMES NO.OF.WINDOWS 4)) (APPEND (LIST BACKGROUND) (LIST NO.OF.WINDOWS) COORD.LIST)) |else| (MT.SENDCOMMAND 2 (APPEND (LIST BACKGROUND) (LIST 0)))) (MT.SENDCOMMAND 2 (APPEND (LIST (QUOTE G)) (LIST GREYLEVEL))) (MT.SENDCOMMAND 2 (APPEND (LIST (QUOTE K)) (LIST CONTRAST))) (MT.SENDCOMMAND 2 (APPEND (LIST (QUOTE B)) (LIST BRIGHTNESS))) (MT.SENDCOMMAND 2 (APPEND (LIST (QUOTE R)) (LIST RESOLUTION))) (MT.SENDCOMMAND 2 (APPEND (LIST (QUOTE C)) (LIST DATACOMPRESSION)))) |then| (RETURN T) |else| (RETURN NIL)))) -) - -(MT.SENDCOMMAND -(LAMBDA (DATACOUNT DATALIST) (* \; "Edited 8-Sep-88 19:03 by Briggs") (PROG (DATA RESPONSE (CHECKSUM 0) (RETRYCOUNT 0)) (* \; "SEND \\ AND 80H") RETRY (BOUT MT.OUTSTREAM (CHARCODE "\\")) (BOUT MT.OUTSTREAM 128) (BOUT MT.OUTSTREAM 0) (BOUT MT.OUTSTREAM DATACOUNT) (SETQ CHECKSUM (IPLUS CHECKSUM 128 0 DATACOUNT)) (|for| DATA |in| DATALIST |do| (|if| (NUMBERP DATA) |then| (BOUT MT.OUTSTREAM DATA) (SETQ CHECKSUM (IPLUS CHECKSUM DATA)) |else| (BOUT MT.OUTSTREAM (CAR (CHCON DATA))) (SETQ CHECKSUM (IPLUS CHECKSUM (CAR (CHCON DATA)))))) (FORCEOUTPUT MT.OUTSTREAM) (BOUT MT.OUTSTREAM (IPLUS (LOGXOR 255 CHECKSUM) 1)) (FORCEOUTPUT MT.OUTSTREAM) REREAD (BLOCK 500) (SETQ RESPONSE (|while| (READP MT.INSTREAM) |collect| (BIN MT.INSTREAM))) (|if| (AND (NEQ (CAR RESPONSE) 92) (NEQ (CAR RESPONSE) 6)) |then| (SETQ CHECKSUM 0) (SETQ RETRYCOUNT (IPLUS RETRYCOUNT 1)) (|if| (EQ RETRYCOUNT 5) |then| (RETURN NIL) |else| (GO RETRY))) (|if| (GREATERP (LENGTH RESPONSE) 2) |then| (* |;;;| "Compute checksum on all characters after the \\") (|if| (NOT (SETQ RESPONSE (MT.COMPUTECHECKSUM (CDR (MEMBER (CHARCODE "\\") RESPONSE))))) |then| (GO REREAD)) (|if| (EQP (CAR RESPONSE) (CHARCODE ?)) |then| (MT.PRINT.ERROR.MSG (CADR RESPONSE)) (RETURN NIL) |else| (RETURN (PACKC RESPONSE))) |else| (RETURN T)))) -) - -(MT.COMPUTECHECKSUM -(LAMBDA (RESPONSE) (* \; "Edited 8-Sep-88 19:03 by Briggs") (* |;;;| "Response should be all bytes after the \\. Byte 1 = Command type Byte 2 = High part data count Byte 3 = Low part of data count after databytes should be Checksum and remaining data after this is extraneous") (PROG (DATACOUNT LENGTHDIFF DATALIST CHECKSUM (SUMCHECK 0)) (SETQ DATALIST RESPONSE) (SETQ DATACOUNT (IPLUS (LLSH (CADR RESPONSE) 8) (CADDR RESPONSE))) (SETQ LENGTHDIFF (IDIFFERENCE (LENGTH RESPONSE) (IPLUS DATACOUNT 3))) (|for| I |from| 1 |to| LENGTHDIFF |do| (SETQ DATALIST (REVERSE (CDR (REVERSE DATALIST))))) (SETQ CHECKSUM (CAR (NTH RESPONSE (IPLUS 4 DATACOUNT)))) (|for| DATA |in| DATALIST |do| (SETQ SUMCHECK (IPLUS SUMCHECK DATA))) (|if| (OR (EQP CHECKSUM (IPLUS (LOGXOR 255 (LRSH (LLSH SUMCHECK 24) 24)) 1)) (EQ CHECKSUM 0)) |then| (MT.SENDACK) (* |;;;| "Return data minus the response type, hi & low data count and checksum") (RETURN (CDDDR DATALIST)) |else| (MT.SENDNAK) (RETURN NIL)))) -) - -(MT.PRINT.ERROR.MSG -(LAMBDA (ERRORCODE) (* \; "Edited 8-Sep-88 12:52 by Briggs") (RINGBELLS) (SELECTQ ERRORCODE (1 (MT.PRINT.STATUS "U88 ROM FAILURE")) (2 (MT.PRINT.STATUS "U81 ROM FAILURE")) (3 (MT.PRINT.STATUS "U64 ROM FAILURE")) (4 (MT.PRINT.STATUS "U72 ROM FAILURE")) (6 (MT.PRINT.STATUS "U23 ROM FAILURE")) (7 (MT.PRINT.STATUS "U31 ROM FAILURE")) (8 (MT.PRINT.STATUS "U29 ROM FAILURE")) (9 (MT.PRINT.STATUS "Paper sensor failure")) (16 (MT.PRINT.STATUS "Lamp failure or image sensor circuit failure")) (128 (MT.PRINT.STATUS "Illegal Command")) (129 (MT.PRINT.STATUS "Illegal Gray Scale Setting")) (131 (MT.PRINT.STATUS "Illegal Resolution Setting")) (132 (MT.PRINT.STATUS "Illegal Data Compression Parameter")) (133 (MT.PRINT.STATUS "Illegal Scanning Frame Coordinate")) (134 (MT.PRINT.STATUS "Illegal number of windows")) (135 (MT.PRINT.STATUS "Illegal window coordinate")) (136 (MT.PRINT.STATUS "Illegal Contrast Setting")) (137 (MT.PRINT.STATUS "Illegal Paper Length setting")) (138 (MT.PRINT.STATUS "Record Type error")) (139 (MT.PRINT.STATUS "NAK receiced on 5 consecutive transmissions")) (140 (MT.PRINT.STATUS "Paper jammed or longer than length setting")) (141 (MT.PRINT.STATUS "Illegal Brightness setting")) NIL)) -) - -(MT.SENDACK -(LAMBDA NIL (* \; "Edited 8-Sep-88 19:03 by Briggs") (BOUT MT.OUTSTREAM 6) (FORCEOUTPUT MT.OUTSTREAM)) -) - -(MT.SENDNAK -(LAMBDA NIL (* \; "Edited 8-Sep-88 19:03 by Briggs") (BOUT MT.OUTSTREAM 21) (FORCEOUTPUT MT.OUTSTREAM)) -) - -(MT.STOP.SCANNING -(LAMBDA NIL (* \; "Edited 8-Sep-88 19:03 by Briggs") (PROG NIL (BOUT MT.OUTSTREAM 3) (FORCEOUTPUT MT.OUTSTREAM) (DEL.PROCESS (BQUOTE MICROTEK.SCANNING)) (MT.RESET))) -) - -(MT.RESET -(LAMBDA NIL (* \; "Edited 8-Sep-88 12:51 by Briggs") (|if| (AND (EQ \\RS232C.READY T) (EQ (CDAR (RS232C.GET.PARAMETERS (QUOTE (|BaudRate|)))) MT.BAUDRATE) (EQ (CADAR (RS232C.GET.PARAMETERS (QUOTE (|FlowControl|)))) 0) (LEQ (CDAR (RS232C.GET.PARAMETERS (QUOTE (FRAME.TIMEOUT)))) 50) (OPENP MT.OUTSTREAM) (OPENP MT.INSTREAM)) |then| (MT.SENDCOMMAND 1 (LIST (QUOTE X))) |else| (RS232C.INIT MT.BAUDRATE 8 (QUOTE NONE) 1 (QUOTE DTR)) (CLOSEF? MT.OUTSTREAM) (CLOSEF? MT.INSTREAM) (SETQ MT.OUTSTREAM (OPENSTREAM (QUOTE {RS232}) (QUOTE OUTPUT))) (SETQ MT.INSTREAM (RS232C.OTHER.STREAM MT.OUTSTREAM)) (RS232C.SET.PARAMETERS (LIST (BQUOTE (FRAME.TIMEOUT \\\, MT.RS232C.FRAME.TIMEOUT))))) (DELFILE (CLOSEF? (QUOTE {CORE}SCANNER.SCRATCH))) (MT.SENDCOMMAND 1 (LIST (QUOTE !))) (MT.SENDCOMMAND 1 (LIST (QUOTE !))) (LET ((RESPONSE (MT.SENDCOMMAND 1 (LIST (QUOTE !))))) (|if| RESPONSE |then| (CLRPROMPT) (MT.PRINT.STATUS (CONCAT RESPONSE " ready")) |else| (RINGBELLS) (MT.PRINT.STATUS "Microtek Not Responding ...Check scanner and cables")))) -) - -(MT.PAGEMAP -(LAMBDA NIL (* \; "Edited 8-Sep-88 19:04 by Briggs") (|if| (OPENWP MTDISPLAYWINDOW) |then| (CLOSEW MTDISPLAYWINDOW) |else| (OPENW MTDISPLAYWINDOW))) -) - -(MT.QUIT -(LAMBDA NIL (* \; "Edited 8-Sep-88 19:04 by Briggs") (SETQ RESPONSE (MENU (|create| MENU ITEMS _ (QUOTE ("QUIT" "SHUTDOWN RS232 PORT ONLY")) MENUFONT _ (FONTCREATE (QUOTE MODERN) 10 (QUOTE BOLD))))) (CLOSEF? MT.INSTREAM) (CLOSEF? MT.OUTSTREAM) (RS232C.SHUTDOWN) (|if| (STREQUAL RESPONSE "QUIT") |then| (DELFILE (CLOSEF? (QUOTE {CORE}SCANNER.SCRATCH))) (CLOSEW MTDISPLAYWINDOW) (CLOSEW MT.CONTROL.MENUWINDOW))) -) -) - (* * |Functions| |to| |convert| |and| |print| |scanned| |images|) - -(DEFINEQ - -(MT.DISPLAY.MENU -(LAMBDA NIL (* \; "Edited 8-Sep-88 19:04 by Briggs") (PROG (MENU.DESCRIPTION) (SETQ MENU.DESCRIPTION (BQUOTE (((PROPS ID DISPLAY1) (GROUP (PROPS FORMAT EXPLICIT COORDINATES GROUP BACKGROUND 23130) (TYPE MOMENTARY LABEL "CREATE BITMAP!" FONT (MODERN 12 BOLD) SELECTEDFN MT.CREATEBM BOX 3 LEFT 1 BOTTOM 35) (TYPE MOMENTARY LABEL "Bitmap Name!: " FONT (MODERN 10 BOLD) SELECTEDFN MT.GET.BITMAPNAME BOX 1 LEFT 1 BOTTOM 18) (TYPE EDIT ID BITMAPNAME LABEL "IMAGE" BOX 1 LEFT 100 BOTTOM 18 MAXWIDTH 170) (TYPE STATE LABEL "Shrinkfactor! " MENUITEMS (10 9 8 7 6 5 4 3 2 1) INITSTATE 1 LINKS (DISPLAY (GROUP BMSHRINKFACTOR)) FONT (MODERN 10 BOLD) BOX 1 LEFT 278 BOTTOM 18) (TYPE DISPLAY LABEL "" ID BMSHRINKFACTOR BOX 1 LEFT 350 BOTTOM 18 MAXWIDTH 16) (TYPE STATE LABEL "Rotation! " MENUITEMS ("NONE" "LEFT" "RIGHT") LINKS (DISPLAY (GROUP ROTATE)) INITSTATE "NONE" FONT (MODERN 10 BOLD) BOX 1 LEFT 382 BOTTOM 18) (TYPE DISPLAY LABEL "" ID ROTATE BOX 1 LEFT 439 BOTTOM 18 MAXWIDTH 37) (TYPE DISPLAY LABEL "Source Filename!: " FONT (MODERN 10 BOLD) SELECTEDFN MT.GET.SOURCEFILENAME BOX 1 LEFT 1 BOTTOM 1) (TYPE EDIT ID SOURCEFILENAME LABEL {DSK}IMAGE BOX 1 LEFT 100 BOTTOM 1 MAXWIDTH 379)))))) (SETQ MT.DISPLAY.MENUWINDOW (FREEMENU MENU.DESCRIPTION "Microtek Display Menu" 23130 5)) (FM.CHANGESTATE (FM.GETITEM (QUOTE BMSHRINKFACTOR) NIL MT.DISPLAY.MENUWINDOW) MT.BMSHRINKFACTOR MT.DISPLAY.MENUWINDOW) (OPENW MT.DISPLAY.MENUWINDOW))) -) - -(MT.GET.SOURCEFILENAME -(LAMBDA NIL (* \; "Edited 12-Mar-87 15:41 by rdc") (FM.EDITITEM (FM.GETITEM (QUOTE SOURCEFILENAME) NIL MT.DISPLAY.MENUWINDOW) MT.DISPLAY.MENUWINDOW)) -) - -(MT.GET.BITMAPNAME -(LAMBDA NIL (* \; "Edited 12-Mar-87 15:42 by rdc") (FM.EDITITEM (FM.GETITEM (QUOTE BITMAPNAME) NIL MT.DISPLAY.MENUWINDOW) MT.DISPLAY.MENUWINDOW)) -) - -(MT.CREATEBM -(LAMBDA NIL (* \; "Edited 8-Sep-88 19:04 by Briggs") (MT.BITMAPCREATE (LISTGET (FM.GETSTATE MT.DISPLAY.MENUWINDOW) (QUOTE BITMAPNAME)) (LISTGET (FM.GETSTATE MT.DISPLAY.MENUWINDOW) (QUOTE SOURCEFILENAME)) (CADR (MEMBER "Shrinkfactor! " (FM.GETSTATE MT.DISPLAY.MENUWINDOW))) (MKATOM (CADR (MEMBER "Rotation! " (FM.GETSTATE MT.DISPLAY.MENUWINDOW)))))) -) - -(MT.BITMAPCREATE -(LAMBDA (BITMAPNAME INFILENAME BMSHRINKFACTOR ROTATION) (* \; "Edited 8-Sep-88 19:04 by Briggs") (PROG* (SCANFILE COMPRESSION RESOLUTION GREYLEVEL CONTRAST BRIGHTNESS SCANLINES SCANTYPE BYTESPERSCANLINE SCANDENSITY FINISHEDBM) (SETQ FINISHEDBM (MKATOM BITMAPNAME)) (|if| (AND INFILENAME FINISHEDBM) |then| (SETQ SCANFILE (OPENSTREAM INFILENAME (QUOTE INPUT))) (SETQ COMPRESSION (READ SCANFILE)) (SETQ RESOLUTION (READ SCANFILE)) (SETQ GREYLEVEL (READ SCANFILE)) (SETQ CONTRAST (READ SCANFILE)) (SETQ BRIGHTNESS (READ SCANFILE)) (SETQ SCANLINES (READ SCANFILE)) (SETQ BYTESPERSCANLINE (READ SCANFILE)) (* |;;;| "To Pick up trailing CR") (BIN SCANFILE) (|if| (EQ COMPRESSION (QUOTE NO)) |then| (SET FINISHEDBM (MT.CONVERTIMAGETOBM SCANFILE SCANLINES BYTESPERSCANLINE FINISHEDBM BMSHRINKFACTOR ROTATION)) (PUTPROP (MKATOM BITMAPNAME) (QUOTE RESOLUTION) RESOLUTION) |else| (MT.PRINT.STATUS "NOT YET IMPLEMENTED") (CLOSEF? SCANFILE)) |else| (MT.PRINT.STATUS "ERROR IN BITMAP OR SCANFILE NAME") (CLOSEF? SCANFILE)) (RETURN FINISHEDBM))) -) - -(MT.CONVERTIMAGETOBM -(LAMBDA (BFILE SCANLINES BYTESPERSCANLINE BMAPNAME SCANNERSHRINKFACTOR ROTATION) (* \; "Edited 8-Sep-88 19:04 by Briggs") (* |;;;| "Returns a bitmap that is shrunken (by factor) image of the data. Creates a temporary bitmap that is exact width but only 200 lines max long. That is shrunken then blt'ed into the final bitmap") (PROG (OFFSET BITWIDTH LINEOFFSET TEMPBM FINALBMOFFSET FINALBMWNAME FINALBMOFFSETFACTOR FINALBM FINALBMLINES CLINE BMPTR CBYTE SHRINKHEIGHTFACTOR SHRINKWIDTHFACTOR) (SETQ OFFSET 0) (SETQ BITWIDTH (ITIMES BYTESPERSCANLINE 8)) (SETQ LINEOFFSET (|if| (ODDP BYTESPERSCANLINE) |then| (IPLUS BYTESPERSCANLINE 1) |else| BYTESPERSCANLINE)) (SETQ TEMPBM (BITMAPCREATE BITWIDTH 200)) (SETQ FINALBMOFFSET -1) (SETQ FINALBMWNAME (MKATOM (CONCAT BMAPNAME (QUOTE WINDOW)))) (SETQ FINALBMOFFSETFACTOR (QUOTIENT 200 SCANNERSHRINKFACTOR)) (MT.PRINT.STATUS "SETTING UP BITMAP...") (* |;;;| "Set up the bmap parameters") (SETQ SHRINKHEIGHTFACTOR SCANNERSHRINKFACTOR) (SETQ SHRINKWIDTHFACTOR SCANNERSHRINKFACTOR) (* |;;;| "Set number of lines in final bitmap") (SETQ FINALBMLINES (IPLUS (IQUOTIENT SCANLINES SHRINKHEIGHTFACTOR) 1)) (* |;;;| "create the final bitmap FACTOR width and FACTOR high") (SETQ FINALBM (|if| (GEQ (ITIMES BITWIDTH SCANLINES) 2000000) |then| (MT.CREATE.BIG.BM BITWIDTH SCANLINES) |else| (BITMAPCREATE (QUOTIENT (ITIMES BYTESPERSCANLINE 8) SHRINKWIDTHFACTOR) FINALBMLINES))) (* |;;;| "make a window that you can bitblt the image to while you are working...") (* |;;;| "now start doing the serious work") (MT.PRINT.STATUS "WORKING...") (SETQ BMPTR (|fetch| BITMAPBASE |of| TEMPBM)) (|for| Y |from| 0 |to| (SUB1 SCANLINES) |do| (|if| (EQ OFFSET 200) |then| (* \; "We've done 200 lines, so now lets move it and reset the offset pointers!") (MT.PRINT.STATUS "BLT'ING A CHUNK...") (* |;;;| "first reset everything") (SETQ BMPTR (|fetch| BITMAPBASE |of| TEMPBM)) (SETQ OFFSET 0) (* |;;;| "set the new offset into the final bitmap DONT forget we are working top down in BMAP") (SETQ FINALBMOFFSET (IPLUS FINALBMOFFSET FINALBMOFFSETFACTOR)) (* |;;;| "BITBLT the shrunken bitmap (by SHRINKHEIGHTFACTOR) to the final bitmap and then the finalbitmap to the display window") (BITBLT (SHRINKBITMAP TEMPBM SHRINKWIDTHFACTOR SHRINKHEIGHTFACTOR) 0 0 FINALBM 0 (IDIFFERENCE FINALBMLINES FINALBMOFFSET)) (MT.PRINT.STATUS "DONE...WORKING...")) (SETQ CLINE (ITIMES OFFSET LINEOFFSET)) (|for| X |from| 0 |to| (IDIFFERENCE BYTESPERSCANLINE 1) |do| (\\PUTBASEBYTE BMPTR (PLUS X CLINE) (BIN BFILE))) (SETQ OFFSET (ADD1 OFFSET))) (* |;;;| "Now do the final shrink and blt") (MT.PRINT.STATUS " BLT'ING FINAL CHUNK...") (SETQ OFFSET (IPLUS (IMOD OFFSET SHRINKHEIGHTFACTOR) (QUOTIENT OFFSET SHRINKHEIGHTFACTOR))) (SETQ FINALBMOFFSET (IPLUS FINALBMOFFSET OFFSET)) (BITBLT (SHRINKBITMAP TEMPBM SHRINKWIDTHFACTOR SHRINKHEIGHTFACTOR) 0 (IDIFFERENCE FINALBMOFFSETFACTOR OFFSET) FINALBM 0 (IDIFFERENCE FINALBMLINES FINALBMOFFSET)) (MT.CREATE.DISPLAYWINDOW (|if| (EQ ROTATION (QUOTE LEFT)) |then| (MT.PRINT.STATUS "..ROTATING BITMAP...PLEASE WAIT") (SETQ FINALBM (ROTATE.BITMAP.LEFT FINALBM)) |elseif| (EQ ROTATION (QUOTE RIGHT)) |then| (MT.PRINT.STATUS "..ROTATING BITMAP...PLEASE WAIT") (SETQ FINALBM (ROTATE.BITMAP.RIGHT FINALBM)) |else| FINALBM)) (MT.PRINT.STATUS "DONE") (CLOSEF BFILE) (CLRPROMPT) (RETURN FINALBM))) -) - -(MT.CREATE.BIG.BM -(LAMBDA (WIDTH HEIGHT) (* \; "Edited 8-Sep-88 19:05 by Briggs") (LET* ((RASTERWIDTH (IQUOTIENT (IPLUS WIDTH (IDIFFERENCE 16 (IMOD WIDTH 16))) 16)) (TOTALBYTES (ITIMES HEIGHT (ITIMES RASTERWIDTH 2))) (NPAGES (COND ((ZEROP (IMOD TOTALBYTES 512)) (IQUOTIENT TOTALBYTES 512)) (T (ADD1 (IQUOTIENT TOTALBYTES 512))))) (BMPTR (\\ALLOCPAGEBLOCK NPAGES)) (REALLYBIGBM (|create| BITMAP BITMAPBASE _ BMPTR BITMAPRASTERWIDTH _ RASTERWIDTH BITMAPHEIGHT _ HEIGHT BITMAPWIDTH _ WIDTH BITMAPBITSPERPIXEL _ 1))) (BLTSHADE WHITESHADE REALLYBIGBM) REALLYBIGBM)) -) - -(MT.CREATE.DISPLAYWINDOW -(LAMBDA (BITMAP) (* \; "Edited 13-Mar-87 15:10 by rdc") (PROG (WINDOW) (RINGBELLS) (MT.PRINT.STATUS "SWEEP OUT WINDOW FOR BITMAP") (SETQ WINDOW (CREATEW NIL (LISTGET (FM.GETSTATE MT.DISPLAY.MENUWINDOW) (QUOTE BITMAPNAME)))) (WINDOWPROP WINDOW (QUOTE SRCBM) BITMAP) (WINDOWPROP WINDOW (QUOTE REPAINTFN) (FUNCTION MT.REPAINTWINDOW)) (WINDOWPROP WINDOW (QUOTE RESHAPEFN) (FUNCTION MT.RESHAPEWINDOW)) (WINDOWPROP WINDOW (QUOTE SCROLLFN) (FUNCTION SCROLLBYREPAINTFN)) (MT.RESHAPEWINDOW WINDOW) (RETURN WINDOW))) -) - -(MT.REPAINTWINDOW -(LAMBDA (WINDOW REGION) (* \; "Edited 8-Sep-88 19:05 by Briggs") (MOVETO (WINDOWPROP WINDOW (QUOTE BMORIGX)) (WINDOWPROP WINDOW (QUOTE BMORIGY)) WINDOW) (BITBLT (WINDOWPROP WINDOW (QUOTE SRCBM)) 0 0 WINDOW)) -) - -(MT.RESHAPEWINDOW -(LAMBDA (WINDOW) (* \; "Edited 8-Sep-88 19:05 by Briggs") (PROG NIL (DSPRESET WINDOW) (WINDOWPROP WINDOW (QUOTE BMORIGX) (DSPXPOSITION NIL WINDOW)) (WINDOWPROP WINDOW (QUOTE BMORIGY) (DSPYPOSITION NIL WINDOW)) (MT.REPAINTWINDOW WINDOW) (WINDOWPROP WINDOW (QUOTE EXTENT) (CREATEREGION 0 0 (BITMAPWIDTH (WINDOWPROP WINDOW (QUOTE SRCBM))) (BITMAPHEIGHT (WINDOWPROP WINDOW (QUOTE SRCBM))))))) -) -) - -(ADDTOVAR |BackgroundMenuCommands| ("MicrotekScanner" (MT.INIT) "Open Microtek Scanner Command and Display windows, initilalize RS232 port and verifies Microtek Scanner is ready")) - -(RPAQQ |BackgroundMenu| NIL) - -(RPAQQ MT.ICON #*(50 50)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OOOOOH@@@@@@@@@@H@@@@H@@@@@@@@@@H@@@@H@@@@@@@@@@H@@@@OOOOL@@@@@AH@@@@H@@@L@@@@@BH@@@@H@@AD@@@@@DH@@@@H@@BD@@@@@HH@@@@H@@DD@@@@A@H@@@@H@@HD@@@@B@H@@@@H@A@D@@@@DCH@@@@N@B@D@@@@HCOOOOON@D@D@@@A@@@@@@@@@H@D@@@B@@@@@@@@A@@D@@@GOOOOOOOON@@H@@@D@@@@@@@@B@A@@@@D@@@@@@@@B@B@@@@D@@@@@@@@B@D@@@@DOOOOOOOOB@H@@@@DH@@@@@@ABA@@@@@DH@@@@@@ABB@@@@@DH@@@@@@ABD@@@@@DH@@@@@@ABH@@@@@DH@@@@@@AC@@@@@@GOOOOOOOON@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@) - -(RPAQQ MT.ICON.MASK #*(50 50)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OOOOOH@@@@@@@@@@OOOOOH@@@@@@@@@@OOOOOH@@@@@@@@@@OOOOOOOOOL@@@@@AOOOOOOOOOL@@@@@COOOOOOOOOL@@@@@GOOOOOOOOOL@@@@@OOOOOOOOOOL@@@@AOOOOOOOOOOL@@@@COOOOOOOOOOL@@@@GOOOOOOOOOOL@@@@OOOOOOOOOOOL@@@AOOOOOOOOOOOL@@@COOOOOOOOOOOL@@@GOOOOOOOOOOOH@@@GOOOOOOOOOOO@@@@GOOOOOOOOOON@@@@GOOOOOOOOOOL@@@@GOOOOOOOOOOH@@@@GOOOOOOOOOO@@@@@GOOOOOOOOON@@@@@GOOOOOOOOOL@@@@@GOOOOOOOOOH@@@@@GOOOOOOOOO@@@@@@GOOOOOOOON@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@) - -(RPAQQ BRIGHTBAR #*(128 10)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@AD@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@CF@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@GG@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@OGH@@@@@@@@@@@@@AH@@@@@@@@@@@@@@GG@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@CF@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@AD@@@@@@@@@@@@@@AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO) - -(RPAQQ CONTRASTBAR #*(128 10)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@AD@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@CF@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@GG@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@OGH@@@@@@@@@@@@@AH@@@@@@@@@@@@@@GG@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@CF@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@AD@@@@@@@@@@@@@@AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO) - -(RPAQQ INITIALBRIGHTBAR #*(128 10)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO) - -(RPAQQ INITIALCONTRASTBAR #*(128 10)OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@AH@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@AOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO) - -(RPAQQ LEFTARROW #*(10 10)@H@@AH@@CH@@GOL@OOL@OOL@GOL@CH@@AH@@@H@@) - -(RPAQQ MANCURSOR #*(9 9)@H@@AL@@CN@@GO@@OOH@GO@@CN@@AL@@@@@@) - -(RPAQQ RIGHTARROW #*(10 10)@D@@@F@@@G@@OOH@OOL@OOL@OOH@@G@@@F@@@D@@) - -(RPAQQ MT.POINTER #*(16 16)L@@@O@@@OL@@OO@@OOL@OOO@OOOLOOOOOOOOOOOLOOO@OOL@OO@@OL@@O@@@L@@@) - -(RPAQ? MT.BAUDRATE 19200) - -(RPAQ? MT.RS232C.FRAME.TIMEOUT 2) - -(RPAQ? MT.DISPLAYFRAME (QUOTE YES)) - -(RPAQ? MT.PAPERLENGTH 4) - -(RPAQ? MT.REDUCTION 0) - -(RPAQ? MT.CONTRAST 0) - -(RPAQ? MT.BRIGHTNESS 0) - -(RPAQ? MT.GREYLEVEL 0) - -(RPAQ? MT.DATACOMPRESSION (QUOTE NO)) - -(RPAQ? MT.BACKGROUND (QUOTE HALFTONE)) - -(RPAQ? MT.WINDOW (QUOTE LINEART)) - -(RPAQ? MT.FRAME (QUOTE (0 0 40 24))) - -(RPAQ? MT.FRAME.BOX (QUOTE (0 460 200 120))) - -(RPAQ? MT.TEXTW1 (QUOTE (0 0 0 0))) - -(RPAQ? MT.TEXTW2 (QUOTE (0 0 0 0))) - -(RPAQ? MT.TEXTW3 (QUOTE (0 0 0 0))) - -(RPAQ? MT.TEXTW4 (QUOTE (0 0 0 0))) - -(RPAQ? MT.TEXTW1BOX (QUOTE (0 0 0 0))) - -(RPAQ? MT.TEXTW2BOX (QUOTE (0 0 0 0))) - -(RPAQ? MT.TEXTW3BOX (QUOTE (0 0 0 0))) - -(RPAQ? MT.TEXTW4BOX (QUOTE (0 0 0 0))) - -(RPAQ? MT.HALFTONEW1 (QUOTE (0 0 0 0))) - -(RPAQ? MT.HALFTONEW2 (QUOTE (0 0 0 0))) - -(RPAQ? MT.HALFTONEW3 (QUOTE (0 0 0 0))) - -(RPAQ? MT.HALFTONEW4 (QUOTE (0 0 0 0))) - -(RPAQ? MT.HALFTONEW1BOX (QUOTE (0 0 0 0))) - -(RPAQ? MT.HALFTONEW2BOX (QUOTE (0 0 0 0))) - -(RPAQ? MT.HALFTONEW3BOX (QUOTE (0 0 0 0))) - -(RPAQ? MT.HALFTONEW4BOX (QUOTE (0 0 0 0))) - -(RPAQ? MT.OUTSTREAM NIL) - -(RPAQ? MT.INSTREAM NIL) - -(RPAQ? MT.BMSHRINKFACTOR 1) -(DECLARE\: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS MT.RS232C.FRAME.TIMEOUT MT.STATUSWINDOW MT.HEIGHTRULER MT.GRID MT.PAPERLENGTH MT.REDUCTION MT.BRIGHTNESS MT.CONTRAST MT.GREYLEVEL MT.DATACOMPRESSION MT.BACKGROUND MT.WINDOW MT.HEIGHTWINDOW MT.FRAME MT.FRAME.BOX MT.TEXTW1 MT.TEXTW2 MT.TEXTW3 MT.TEXTW4 MT.HALFTONEW1 MT.HALFTONEW2 MT.HALFTONEW3 MT.HALFTONEW4 MT.OUTSTREAM MT.INSTREAM BRIGHTBAR CONTRASTBAR LEFTARROW MANCURSOR RIGHTARROW) -) - -(PUTPROPS MICROTEK MAKEFILE-ENVIRONMENT (:READTABLE "XCL" :PACKAGE "INTERLISP")) -(PUTPROPS MICROTEK COPYRIGHT ("XEROX Corporation" 1987 1988)) -(DECLARE\: DONTCOPY - (FILEMAP (NIL (3704 36121 (MT.INIT 3714 . 5283) (MT.SHRINKFN 5285 . 5611) (MICROTEKSCANNER 5613 . 7281 -) (RULERX 7283 . 7517) (RULEX# 7519 . 7756) (RULERY 7758 . 8107) (RULEY# 8109 . 8346) (MT.GETLENGTH -8348 . 8889) (MT.CURSOR.IN 8891 . 9003) (MT.CURSOR.OUT 9005 . 9090) (MT.PRINT.STATUS 9092 . 9224) ( -MT.CONTROL.MENU 9226 . 16550) (MT.CHANGE.BRIGHTBAR 16552 . 16999) (MT.RAISEBRIGHTNESS 17001 . 17303) ( -MT.LOWERBRIGHTNESS 17305 . 17620) (MT.CHANGE.CONTRASTBAR 17622 . 18072) (MT.RAISECONTRAST 18074 . -18366) (MT.LOWERCONTRAST 18368 . 18673) (MT.SELECT.BACKGROUND 18675 . 23111) (MT.GETTRANSFRAME 23113 - . 25079) (MT.GETWINDOW1 25081 . 27252) (MT.GETWINDOW2 27254 . 29425) (MT.GETWINDOW3 29427 . 31598) ( -MT.GETWINDOW4 31600 . 33771) (MT.UPDATE.HTWINDOWS 33773 . 35312) (MT.DRAWAREABOX 35314 . 36119)) ( -36156 49637 (MT.COMMAND.MENU 36166 . 37143) (MT.GET.OUTFILENAME 37145 . 37317) (MT.SCAN 37319 . 37469) - (MT.START.SCANNING 37471 . 40210) (MT.SETUPSCANFILE 40212 . 40960) (MT.SEND.SCAN.PARAMETERS 40962 . -44005) (MT.SENDCOMMAND 44007 . 45314) (MT.COMPUTECHECKSUM 45316 . 46319) (MT.PRINT.ERROR.MSG 46321 . -47555) (MT.SENDACK 47557 . 47678) (MT.SENDNAK 47680 . 47802) (MT.STOP.SCANNING 47804 . 47994) ( -MT.RESET 47996 . 49039) (MT.PAGEMAP 49041 . 49208) (MT.QUIT 49210 . 49635)) (49710 58061 ( -MT.DISPLAY.MENU 49720 . 51177) (MT.GET.SOURCEFILENAME 51179 . 51357) (MT.GET.BITMAPNAME 51359 . 51529) - (MT.CREATEBM 51531 . 51899) (MT.BITMAPCREATE 51901 . 52955) (MT.CONVERTIMAGETOBM 52957 . 56302) ( -MT.CREATE.BIG.BM 56304 . 56871) (MT.CREATE.DISPLAYWINDOW 56873 . 57410) (MT.REPAINTWINDOW 57412 . -57644) (MT.RESHAPEWINDOW 57646 . 58059))))) -STOP diff --git a/obsolete/lispusers/MICROTEK.LCOM b/obsolete/lispusers/MICROTEK.LCOM deleted file mode 100644 index 2fa62f632bd01262effdd5e40bc58649258e0ff5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50092 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�X-t6MJy$ztD?B9|=%=%->^esri%oX*ZwT2!Te z2LkKbB4MO1s1!)Srr(cDsh#7;2%KIGcnl~;S0zDIq4_3J2G97(XCmk+_gvLII0$*Q z$|9a0WDin#baa$^8}Kv=^?D0hV<U@u zorChR=Zg--g?go&2U%wOV7Ues-;~!#Z8M&E4U}JVi2Fn)1dmj%+`^4WkH#JFdV2^; zo?I0u0C!9145mR~5onQPNHV>j|79Y#x_xEos;WT_Ka#VbG%ob@i`D2%m>P}qpOry; z{}Sx%XI`C<29vwCG?^%P@Bqj-y`0KpC7vF-fac29>c;v@OUv7vTl91l;iG<@658fT zm|USc2EoG_4hUJ8vGBbbc24W@C}j*W4t$$Zx=cH*pv|V48cD(n{^@m>2=4Pdk!}a` zM9wck5mvV|rnpG28=KqwEN!gE3F2!|g;R<6VdDf|Hh{BTk8U{gpcGex@K}1zE#>CdcfBAHi)kT9w(ck>F>o!FRI(VKt`mfI1yoZ7Gyy znD##|vW$GQ3?LD_H_-PIM`Bn4Vt*Eh0iv6d_Gqe#UA8t1lFnST{m>j)CPLiRViF*N z+X+yU*}?c}6R5d+x{v{-B z7mBrJxkdNufew*(ZXJ6J?PZHd7)udg+DTp}CWU->&2t%S!ep0T=u5(w4^M+Z#G!CEGk@Zw}!Wj`e6}(Rd;Tyt_ z*w7uannM9W&tqZl0SOU`e{6{GAXv-8tU|{{Ism#8lYg-x;$JolARaYw7}`hvg@RLl zBMy(odXMGjzgtC<*>P;MFaWr|m44udz~UbtBN7>qqOoi^TFx4U@xU{72?Pk% z5q9YfKu<#Ag#$UhaEcxBRV7!YFd;Nnr$pczx9G{YH$6@MW-M?b9&1+O=NSPB?IVBy zp`$<5IxjJppHQ|GffNW-W!$q@fL(@kIy#=tPFXk)dpcG_4Xe-+b$MarAkJyD2M>*} zRazS1^5m64OA6YcKRwmgcmK)18C+Y)`47Iim}{?pZ|%;%S>Jo6?0=1s_t`6NUz9Ue z9OQNJod31Lx1JA?w{Yo9`_kF0cjnvcdzZvFyPSRVt$$a}a-QF#qP?@<^5}v%a*_{o z&hjexdf%nt?D}oE2Y$dK2k_6l-uGIm?SJjgt)gXG+6{qW*u|xgU!L{OdS`e+t+l-q zxYn|ATb7-jtMt^HaC6FW@h826r|_hVH;j){Z%nDb+Vv9aZ(K^;{J{s=xeUJMmmYcj z?cexd*u;`|hMSGwZ|yBqN_!WrYHOw2k&2756TNfmLv|Ci+xn#wH)VTy=hiQT|D*_6OIGh0^ZEV_7RQ~-L@Xm`NWHJ$*yf4Z6cp& zL3>@CBO0AZpB<=MhwsJ5j0?!FjJS3m{5htzp9C%7!_> zNDgOiCyS?WRef#921KE;4 z@aCI~8~ty8@0qnbUnoCy-?1=d&VJ+A zZhPt*$9LQ7-?(r0WdD6@RbKtoA*Ot{{*p_$`Imhoa0t10arzmYTms|3gqzdNV54vw ztH76odc-~*wmz)qa@6BP9jZYo#4ZOKZM06mry#$Elb-$1a4>-gsm6+^F+{HA)-MQI znqpch2f#V??!w&j5(y@vM*`0;W$Wh7SQre!?xo=@l7NInBOn$>BjEBDjUas)BMf}8 zyTs!7x}^11o5>X`6>`Ui)B%OCR{_G{9X6bmXie7?yk8^|-&kHKA=+kGcy$B-L^rE5 z>j{7#WLO%Of3uMX#u9Z4B}&rlkX!wHu~;X~v6(!Wdo-9Vg=on<)x?kW{kX)8HC<4B z4%p+sR49$wpFCGq#9DjGY(*eu1!NN1Dad3TrxFoW|L3{~R ztOKxvLbJYD_ppbeEeq@{Q2^+n0I(1M;7QLW`GFQmc&1woc<^CWk`K6Y!OIhpG2@}0 z4=7sg3Bj>!kYxA-Vh=?p!Hk6w5wutu_3VWUkw`l43j+d#!Dhw7CZJFe{j?&*g^U9o z3VuR8p>~W8b4TrzH&(Y-ac<<-SzUw(*eCFpl$tw(YG?ZT2EWyM4L6&QOxKz;T5M3l zuNGZvK{K>Ss~U5aVq<}S79Nw(BL6HtM)@%d+G~!q#`5|i3Z*0+pf!k4L?ED4+Is5y z+!?x*t<8WnG1unTfH9S^hm@&`_|t_{lw{=+!IkXHCXQ-|KGlYZ?nlh10`v&aztx)J z04ouKOf19%Xvga9AjE=75MoiL>+TlTt2eUqSrAp|*USWJ#|2DOuL%N<;91LpDB`6x zk#pD759~e^6%MVTb(Wa=46LFjKuG^P#h z$@5XQN>supGSLyUm%6&Swau^?^VOGDJJ-5PT)n1En}bktsu5{*tkF9PZYV)2H4@8@ zMv;C;tJ&tPcA=*gYE~wFQ)lc)Y1N>Pv4Kd4$6-szVc|2cOe}OHu*(B+EyBn&LfNH> zs6BAJfKTlh*%fFGwY@K5qg8aL0@Cz63IQ0oFz3N(1BU{rXGpb=U!^1}Jcw_KHw{-5 zL2clcvffR{gxWS8A%3o*mQ7b&^K`w|nXr*TX_Rr@*AN=pi~}kCb#8zRrpOB)dkV)LGjRGGK?p=8MN?t&7@et|567gg^ zm2aIo2!QXG>IFbkF6S$vee7;N-&@tI2$W#Pd*12l1vQf@2|)H8h5({_D0E)~2;2}6 z8?3Hs4jPi6oPCGIZZO~TWz~n5V#1jXiaKa`LQ6K$0iM*r)gp+A8O0o){+WuG%T{>B zqDej1CgRB`HrEWvtH_Hipb(XzJC^9zUZA|xgEN^(v=$;l!7}CS`gw0EBfc0ZXLu$P zA>9g|@?v?Wq-A@`D@)CMj1s~jpjVFhV(CFJGDu~qAsA_gnOG3y3_*y+jUdDs!_h|_ z!MKO=l<6xG+>n+I_9CX3JKmsFv$Jead$L%2y4>(;qyP>CM398RLqya;VsI@F^QvO3 z;yumZj6@!5v#>XlNP~>ReTGmWsr)LScDi-oy+Ryq%n73RST!<^kJPevz9mk|!boIQk>>=Jpv-*EkeJROV2 zfkS~acFr1{o}bn%a~-j;kixKbO#y?5czS+1NaBxp`pnG1>E2AV0Y}Y$Sp8k??>Q(| zWH`FEoOEw|^)$xk=SLXduFd{CALJ;GO~o52{5S;qsZY1?wdZGu#69#U_l9{NT<$`X zo?~l8hQl20qiA%YDZw@XgpCl5gufXuB4U>GAAM6CBO!i6X((G0O*w5PCe@^r03MPD zW0>)#kh{dc6wV5733FQ-u&@avz!8B45vI(h2`noUVWu>|giQ!^XVeDRm7L5ustA=& zq1h;a{-b_)^k2mq3;Nb+8WwpduP*%Kw7ZRI;A9KMDLuFPuAO&ZWt>%tz2i^WnQg_K z1#d_^^cz;Jr5cFD+nPEHJgy?psuR-JSx}bNKm(XvdjxDB)tyz){tCP}5NjMlMNU+U zX8~)CLADbjfZ*IP*$U_)Vmk5Cqd>aRlc_6A fFbnV}S%6h#3zibLt-?EJ5_W6+nLuu|ckurK0$BXd diff --git a/obsolete/lispusers/MICROTEKPRINT b/obsolete/lispusers/MICROTEKPRINT deleted file mode 100644 index f61bea39..00000000 --- a/obsolete/lispusers/MICROTEKPRINT +++ /dev/null @@ -1,187 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "27-Jan-89 10:23:15" {DSK}MICROTEK>MICROTEKPRINT.;1 10179 - - changes to%: (FNS MT.CREATEPRINTMASTER) - - previous date%: "23-Jul-88 15:18:48" {ERINYES}MEDLEY>LISPUSERS>MICROTEKPRINT.;1) - - -(* " -Copyright (c) 1986, 1987, 1988, 1989 by XEROX Corporation. All rights reserved. -") - -(PRETTYCOMPRINT MICROTEKPRINTCOMS) - -(RPAQQ MICROTEKPRINTCOMS - [(P (FILESLOAD MICROTEK)) - (FNS MT.PRINT.MENU MT.GETXPOS MT.GETYPOS MT.CREATEPRINT MT.CREATEPRINTMASTER - MT.SELECT.SCALEFACTOR) - (P (IF (AND (BOUNDP 'MT.DISPLAY.MENUWINDOW) - (OPENWP MT.DISPLAY.MENUWINDOW)) - THEN - (MT.PRINT.MENU]) - -(FILESLOAD MICROTEK) -(DEFINEQ - -(MT.PRINT.MENU - [LAMBDA NIL (* ; - "Edited 21-May-87 09:23 by ronald clarke:xsis:xerox") - - (PROG (MENU.DESCRIPTION) - [SETQ MENU.DESCRIPTION - `(((PROPS ID MPRINT) - (GROUP (PROPS FORMAT EXPLICIT COORDINATES GROUP BACKGROUND 23130) - (TYPE MOMENTARY LABEL "PRINT" BOX 3 LEFT 0 BOTTOM 2 FONT (MODERN 12 BOLD) - SELECTEDFN MT.CREATEPRINT) - (TYPE STATE LABEL "Printer!: " ID PRINTERTYPE MENUITEMS (8044 4045) - INITSTATE 8044 LINKS (DISPLAY (GROUP PRINTER)) - FONT - (MODERN 10 BOLD) - BOX 1 LEFT 60 BOTTOM 3) - (TYPE DISPLAY ID PRINTER LABEL "" LEFT 115 BOTTOM 3 BOX 1 MAXWIDTH 30) - (TYPE MOMENTARY LABEL "XPOS!: " SELECTEDFN MT.GETXPOS FONT (MODERN 10 BOLD) - LEFT 175 BOTTOM 3 BOX 1) - (TYPE EDIT ID XPOS LABEL 0 MAXWIDTH 45 LEFT 220 BOTTOM 3 BOX 1) - (TYPE MOMENTARY LABEL "YPOS!: " SELECTEDFN MT.GETYPOS FONT (MODERN 10 BOLD) - LEFT 280 BOTTOM 3 BOX 1) - (TYPE EDIT ID YPOS LABEL 0 MAXWIDTH 45 LEFT 325 BOTTOM 3 BOX 1) - (TYPE MOMENTARY LABEL "SCALE!: " FONT (MODERN 10 BOLD) - LEFT 385 BOTTOM 3 BOX 1 SELECTEDFN MT.SELECT.SCALEFACTOR) - (TYPE EDIT LABEL "1:1" ID SCALEFACTOR LEFT 435 BOTTOM 3 BOX 1] - (SETQ MT.PRINT.MENUWINDOW (FREEMENU MENU.DESCRIPTION "Microtek Print Menu" 23130 5)) - (OPENW MT.PRINT.MENUWINDOW) - (ATTACHWINDOW MT.PRINT.MENUWINDOW MT.DISPLAY.MENUWINDOW 'BOTTOM 'JUSTIFY]) - -(MT.GETXPOS - [LAMBDA NIL (* ; - "Edited 21-May-87 09:15 by ronald clarke:xsis:xerox") - - (FM.EDITITEM (FM.GETITEM 'XPOS NIL MT.PRINT.MENUWINDOW) - MT.PRINT.MENUWINDOW]) - -(MT.GETYPOS - [LAMBDA NIL (* ; - "Edited 21-May-87 09:17 by ronald clarke:xsis:xerox") - - (FM.EDITITEM (FM.GETITEM 'YPOS NIL MT.PRINT.MENUWINDOW) - MT.PRINT.MENUWINDOW]) - -(MT.CREATEPRINT - [LAMBDA NIL (* ; - "Edited 21-May-87 09:29 by ronald clarke:xsis:xerox") - - (PROG NIL - (if (AND [BOUNDP (SETQ BITMAP (MKATOM (LISTGET (FM.GETSTATE MT.DISPLAY.MENUWINDOW) - 'BITMAPNAME] - (BITMAPP (SETQ BITMAP (EVAL BITMAP))) - (if (OR [AND (EQ (MKATOM (LISTGET (FM.GETSTATE MT.PRINT.MENUWINDOW) - 'PRINTERTYPE)) - 4045) - (FMEMB (MKATOM (LISTGET (FM.GETSTATE MT.PRINT.MENUWINDOW) - 'SCALEFACTOR)) - '(4%:1 2%:1 1%:1 1%:2 1%:4] - (EQ (MKATOM (LISTGET (FM.GETSTATE MT.PRINT.MENUWINDOW) - 'PRINTERTYPE)) - 8044)) - then T - else (FLASHWINDOW MT.STATUSWINDOW 3) - (MT.PRINT.STATUS "Not a valid scale for 4045 printer") - (RETURN NIL))) - then (MT.PRINT.STATUS "") - [MT.CREATEPRINTMASTER BITMAP (MKATOM (LISTGET (FM.GETSTATE MT.PRINT.MENUWINDOW) - 'XPOS)) - (MKATOM (LISTGET (FM.GETSTATE MT.PRINT.MENUWINDOW) - 'YPOS)) - (MKATOM (LISTGET (FM.GETSTATE MT.PRINT.MENUWINDOW) - 'SCALEFACTOR] - else (FLASHWINDOW MT.STATUSWINDOW 3) - (MT.PRINT.STATUS "This atom is not a bitmap") - (RETURN NIL]) - -(MT.CREATEPRINTMASTER - [LAMBDA (BITMAP X Y SCALEFACTOR) (* ; "Edited 27-Jan-89 10:21 by rclarke.pa") - (PROG (IPS SCANFACTOR SCALE) - [if (EQP (LISTGET (FM.GETSTATE MT.PRINT.MENUWINDOW) - 'PRINTERTYPE) - 8044) - then (if [NOT (SETQ SCANFACTOR - (LISTGET '(0 0.24 5 0.252 10 0.266 15 0.282 20 0.3 25 0.32 33 - 0.36 35 0.369 40 0.4 45 0.439 50 0.48 55 0.533 60 - 0.6 67 0.7200001 70 0.8 75 0.96) - (GETPROP (MKATOM (LISTGET (FM.GETSTATE - MT.DISPLAY.MENUWINDOW) - 'BITMAPNAME)) - 'RESOLUTION] - then (MT.PRINT.STATUS "") - (FLASHWINDOW MT.STATUSWINDOW 3) - (if [NOT (NUMBERP (SETQ SCANFACTOR - (MKATOM (PROMPTFORWORD - "Resolution not on Bitmap proplist. Enter #:" - "1" NIL MT.STATUSWINDOW] - then (FLASHWINDOW MT.STATUSWINDOW 2) - (MT.PRINT.STATUS "This is not a number") - (RETURN NIL)) - (MT.PRINT.STATUS "")) - [SETQ SCALE (FQUOTIENT (CAR (UNPACK SCALEFACTOR)) - (CADDR (UNPACK SCALEFACTOR] - (SETQ IPS (OPENIMAGESTREAM '{LPT}.IP)) - (SCALEDBITBLT BITMAP 0 0 IPS X Y 21590 27940 'INPUT 'REPLACE NIL - '(0 0 21590 27940) - (FTIMES SCALE SCANFACTOR)) - else (if [NOT (SETQ SCANFACTOR - (LISTGET '(0 1 5 1 10 1 15 1 20 1 25 1 33 1 35 1 40 2 45 2 50 2 55 - 2 60 2 67 4 70 4 75 4) - (GETPROP (MKATOM (LISTGET (FM.GETSTATE - MT.DISPLAY.MENUWINDOW) - 'BITMAPNAME)) - 'RESOLUTION] - then (MT.PRINT.STATUS "") - (FLASHWINDOW MT.STATUSWINDOW 3) - (if [NOT (NUMBERP (SETQ SCANFACTOR - (MKATOM (PROMPTFORWORD - "Resolution not on Bitmap proplist. Enter #:" - "1" NIL MT.STATUSWINDOW] - then (FLASHWINDOW MT.STATUSWINDOW 2) - (MT.PRINT.STATUS "This is not a number") - (RETURN NIL)) - (MT.PRINT.STATUS "")) - [SETQ SCALE (FQUOTIENT (CAR (UNPACK SCALEFACTOR)) - (CADDR (UNPACK SCALEFACTOR] - (SETQ IPS (OPENIMAGESTREAM '{LPT}.4045XLP)) - (if (GREATERP (FTIMES SCALE SCANFACTOR) - 4) - then (FLASHWINDOW MT.STATUSWINDOW 2) - (MT.PRINT.STATUS "Not a valid scale for reduction used on this bitmap") - (RETURN NIL)) - (SCALEDBITBLT BITMAP 0 0 IPS X Y 2550 3300 'INPUT 'REPLACE NIL - '(0 0 2550 3300) - (FIXR (FTIMES SCALE SCANFACTOR] - (CLOSEF IPS) - (MT.PRINT.STATUS "Bitmap sent to printer"]) - -(MT.SELECT.SCALEFACTOR - [LAMBDA NIL (* ; - "Edited 21-May-87 09:26 by ronald clarke:xsis:xerox") - - (PROG [(PRINTERTYPE (LISTGET (FM.GETSTATE MT.PRINT.MENUWINDOW) - 'PRINTERTYPE] - [if (EQP PRINTERTYPE 8044) - then (SETQ FACTORS - '(8%:1 7%:1 6%:1 5%:1 4%:1 3%:1 2%:1 1%:1 1%:2 1%:3 1%:4 1%:5 1%:6 1%:7 1%:8)) - else (SETQ FACTORS '(4%:1 2%:1 1%:1 1%:2 1%:4] - (FM.CHANGESTATE (FM.GETITEM 'SCALEFACTOR NIL MT.PRINT.MENUWINDOW) - (MENU (create MENU - ITEMS _ FACTORS)) - MT.PRINT.MENUWINDOW]) -) - -(IF (AND (BOUNDP 'MT.DISPLAY.MENUWINDOW) - (OPENWP MT.DISPLAY.MENUWINDOW)) - THEN (MT.PRINT.MENU)) -(PUTPROPS MICROTEKPRINT COPYRIGHT ("XEROX Corporation" 1986 1987 1988 1989)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (794 9954 (MT.PRINT.MENU 804 . 2630) (MT.GETXPOS 2632 . 2912) (MT.GETYPOS 2914 . 3194) ( -MT.CREATEPRINT 3196 . 5070) (MT.CREATEPRINTMASTER 5072 . 9197) (MT.SELECT.SCALEFACTOR 9199 . 9952)))) -) -STOP diff --git a/obsolete/lispusers/MICROTEKPRINT.LCOM b/obsolete/lispusers/MICROTEKPRINT.LCOM deleted file mode 100644 index b08965b991f307192dadf079d116e2ef95746102..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5751 zcmd5=PmkkR5l{CFNV{x{8EG!;qTRyFXp%!me$RGdht&vo;!JzSaoo0hr?V0gJ)JP! zOD1WhyH`T9D}=-+K;jE<;fQwT0$f^%GZ%!!7uW-W%SuRG;aAUg;v|znAR*CGKfk;` z^{VPs{iUvk%5+7w0F_ z+2}rZt}aHii~Bvl9rsi3Q51uL`gcT)b~I`4KD-($g3Xq+TV_L}CrodAZ%Ah#*BcGT zqaTs9cHOI|ysloaYcxE*#BthUROl^TwoFG`NLDZUT+g=zKQ%jEO&Ur( z+a_VP1jMs7+Ij9l0Ru1j>;q=ue$VR!-rzp>4-+q5uv2hR$6{Mx+z} zs&~Ak9s5!0_e1KEpry5s{jk%2jB&~19UKw3gF5faW@=Qiwzeyk+qWvy3jU6U>NEN1 zqw!bX;(?Rx;T!xth@bLDHEQDYR;6k>EU6L z`rQE;4(;{RwBN%pObFL|b~2k@j($kd>}+yLz0u@Kqb60W)hO;q3HcrBDbZ_GeGvB# zBg!Yb{kZ3*Q&UN51ltwT|!Zdx_+LqE+ZsKLMwA7Md$eT5=&GPT+YkIX#t z$nuCxp2l1tqhPQgw&17WR?GGXVHH|1a#}t2=&|2P_vtmtJc{~>5_DNb54@CTHn6Ic zE}E+c7QA{LTre0_6tYW$@fXaPR>rWD3n?>(i~VaiKG?`4&%BOFX>U5DU{X=o$fO}R z3Ax5((slz+sdCu{i~ChdGwfA*E4GF`T=AXbEMSrDd5?O=FdQ zjsF;tiYrxc)MYp-qtqN{&J8H z{GN4#fj=Lh`D3)YWAgPseEFiYHat{BzkKa z_{$gj3jEcX*9U7${{2867{1RkjBluGzFv?#y|rueV%0_9zzS&Fqe z$HKDa%K_%)1FZ7dN- z)G3EL6Tp>uiYR)a+w;IZ$tF^P^z`h4jxVRr2;a%{l8))g+2yn2a}D`~Lt3bYJ~gjqS?K+xm7|a%(uAaum4x@0713rO8ECt+_XN z`MrfdU9Y>7nmkqG$`{rCfpP2QJK5Upb)PKJYpdm3*=Kuu>u&ucLS1PYdgUWIB{!P*!i;@TJ@VC*IR;7~mQB_3fJ%rdx=1V$HJ z3CGE~63v1GA1DZBSBVNXh!utqw^oO&rK8QIlMy9K=+7u`;(E0`1?hA#!fWqxxAdp7&{=)L?9qex3j=9k13O@ zXHP~m#1tE$0$HzwO=|JzVmiK3^f>Z>Y|iKTY%P@Q9{~XwlTUK@hDWH_>x7z!|Wh>6j?OAS$aP z1&D1B2Z;+yfC1K%P^Z?BBw3`_CA<%epaWBdQ0Ul_1=H&Wi-wP6>F{l^fc$k> zNWG3HEdMs~(ub(%*etDHx3C-%>-7f9tk;`T$Dd%?^}5Z{>vgA*y)4$>EQ^{)$)<{o zJA=DLq*bvwi|Ppq9Mf$SILf*A?b}=XMcDnh!ttM~_T;PASx}4BJ4J=e_lC)xo7Y+P ze20q8H?Kb)PJaB);pyA>`_0h5^X9b*3fV>u2m;`PWUjsMhK$(?{2(ne$$H81JoW5B zddG0Gl>5P3;GwACxraf@d-lD6YYos`JBTw-W3_&I^9IjyCE@)~2|!RzTyTLUWw8U| zrm8AYQ(0SNo8`5jEpK@Eb_xF$CZZY*xp4ugB^+f*iq-0*G-R(`hyW4YUEa%1Br zQK|9LbkIgH;ffzE)&DTcudO(84-VF6Pyj-uM^)#7zKa@AUOGgvL)G5^M2lNzSSlW) zSy!dBD@h=)YO6Y?+L=EKFt~1QI0UErU8=e$9#!+~yLxbl>ZL0Et!I7An5un6e9kN9 z(|s>QC8^AL_LhE?oI9J2-$ebtIvrPZsDgGf*Kl@K?S3?f{RjIfeQ8Htj7m~_Iy;}v aju|46W;*~+G`MPqYnzVk;J!mY*!dTcgFDs$ diff --git a/obsolete/lispusers/MTP b/obsolete/lispusers/MTP deleted file mode 100644 index 620f6552..00000000 --- a/obsolete/lispusers/MTP +++ /dev/null @@ -1,737 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) - -(FILECREATED " 1-Feb-2022 17:06:07" {DSK}kaplan>Local>medley3.5>my-medley>lispusers>MTP.;2 31571 - - :CHANGES-TO (VARS MTPCOMS) - (FNS MTP.MAKEANSWERFORM) - - :PREVIOUS-DATE "19-May-86 16:54:58" -{DSK}kaplan>Local>medley3.5>my-medley>lispusers>MTP.;1) - - -(* ; " -Copyright (c) 1983-1984, 1986 by Xerox Corporation. -") - -(PRETTYCOMPRINT MTPCOMS) - -(RPAQQ MTPCOMS - ((COMS (* Lafite mode MTP) - (FNS MTP.GET.USERDATA MTP.DELIVERMESSAGE MTP.PREPARE.SEND MTP.MAKEANSWERFORM) - (ADDVARS (LAFITEMODELST (MTP MTP.PREPARE.SEND MTP.DELIVERMESSAGE MTP.MAKEANSWERFORM - MTP.GET.USERDATA))) - (FNS \MTP.AUTHENTICATE \MTP.COERCE.MSG \MTP.FILL \MTP.INDENT \MTP.CLRBUF - \MTP.PRINTADDRESSES) - (INITVARS (MTP.SERVER) - (MTP.LINELENGTH 70) - (MTP.RIGHTMARGINWIDTH 10) - (MTP.FILLMSGFLG %'ASK) - (MTP.INSERTANSWERFLG T) - (MTP.INSERTANSWERNSPACES 3))) - [COMS (* MTP mail server) - (FNS MTP.OPENMAILBOX MTP.POLLNEWMAIL MTP.NEXTMESSAGE MTP.RETRIEVEMESSAGE - MTP.CLOSEMAILBOX) - (FNS \MTP.ENDOFMESSAGESTATE \MTP.POLLNEWMAIL) - (ADDVARS (MAILSERVERTYPES (MTP MTP.POLLNEWMAIL MTP.OPENMAILBOX MTP.NEXTMESSAGE - MTP.RETRIEVEMESSAGE MTP.CLOSEMAILBOX ETHERPORT] - (FILES LAFITE) - (DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS MTPMAILBOX MTPPARSE) - (CONSTANTS \PUPSOCKET.MTP \PUPSOCKET.MISCSERVICES) - (CONSTANTS * PUPTYPES) - (GLOBALVARS MTP.SERVER MTP.LINELENGTH MTP.RIGHTMARGINWIDTH MTP.FILLMSGFLG - MTP.INSERTANSWERFLG MTP.INSERTANSWERNSPACES \LAPARSE.FULL LAFITEEDITORFONT - UNSUPPLIEDFIELDSTR MESSAGESTR \LAFITEUSERDATA MAILSERVERTYPES - \LAFITE.AUTHENTICATION.FAILURE) - (FILES (LOADCOMP) - LAFITE DPUPFTP)))) - - - -(* Lafite mode MTP) - -(DEFINEQ - -(MTP.GET.USERDATA - [LAMBDA NIL (* drc%: "29-Apr-86 23:31") - (LET ((PORT (ETHERPORT MTP.SERVER)) - USER/PWD) - (SETQ \LAFITEUSERDATA - (if (NULL PORT) - then (PRINTOUT PROMPTWINDOW T "MTP.SERVER not found -- " MTP.SERVER T) - (SETQ \LAFITE.AUTHENTICATION.FAILURE "No Server") - NIL - else (SETQ USER/PWD (\INTERNAL/GETPASSWORD MTP.SERVER)) - (AND (\MTP.AUTHENTICATE MTP.SERVER USER/PWD) - (create LAFITEUSERDATA - FULLUSERNAME _ (CAR USER/PWD) - ENCRYPTEDPASSWORD _ (CDR USER/PWD) - SHORTUSERNAME _ (CAR USER/PWD) - MAILSERVERS _ (LIST (create MAILSERVER - MAILPORT _ PORT - MAILSERVERNAME _ MTP.SERVER - MAILSERVEROPS _ (CDR (ASSOC %'MTP - MAILSERVERTYPES]) - -(MTP.DELIVERMESSAGE - [LAMBDA (MSG PARSE W ABORTW) (* drc%: "29-Apr-86 23:38") - (DECLARE (GLOBALVARS FTPDEBUGFLG FTPDEBUGLOG)) - (RESETLST - (LET* ((USERDATA (\LAFITE.GET.USER.DATA)) - (USER (fetch (LAFITEUSERDATA FULLUSERNAME) of USERDATA)) - (MAILSERVER (CAR (fetch (LAFITEUSERDATA MAILSERVERS) of USERDATA))) - [PLIST (LIST (LIST %'MAILBOX (fetch (MTPPARSE MAILBOX) of PARSE)) - (LIST %'SENDER (CONCAT USER "@" (fetch MAILSERVERNAME of MAILSERVER] - (PW (GETPROMPTWINDOW W)) - (TEXT (\MTP.COERCE.MSG MSG (fetch (MTPPARSE EOH) of PARSE) - PW)) - INS OUTS) - (AND (WINDOWPROP ABORTW %'ABORT) - (ERROR!)) - (PRINTOUT PW "delivering...") - (SETQ INS (OPENBSPSTREAM (CONS (CAR (fetch (MAILSERVER MAILPORT) of MAILSERVER)) - \PUPSOCKET.MTP) - NIL %'\FTP.ERRORHANDLER)) - (if INS - then (RESETSAVE NIL (LIST %'CLOSEBSPSTREAM INS 5000)) - else (PRINTOUT PW (fetch (MAILSERVER MAILSERVERNAME) of MAILSERVER) - " not responding. ") - (ERROR!)) - (SETQ OUTS (BSPOUTPUTSTREAM INS)) - (FTPPUTMARK OUTS (MARK# STORE-MAIL)) - (\FTP.PRINTPLIST OUTS PLIST) - (FTPPUTMARK OUTS (MARK# EOC)) - (SELECTC (FTPGETMARK INS) - ((MARK# YES) - (FTPGETCODE INS) - (\FTP.FLUSH.TO.EOC INS (AND FTPDEBUGFLG FTPDEBUGLOG))) - ((MARK# NO) - (FTPGETCODE INS) - (\FTP.FLUSH.TO.EOC INS PW) - (ERROR!)) - (\FTPERROR INS)) - (FTPPUTMARK OUTS (MARK# HERE-IS-FILE)) - (PRINTOUT OUTS (fetch (MTPPARSE FROMLINE) of PARSE) - T) - (PRINTOUT OUTS (fetch (MTPPARSE DATELINE) of PARSE) - T) - (COPYBYTES TEXT OUTS) - (if (WINDOWPROP ABORTW %'ABORT) - then (FTPPUTMARK OUTS (MARK# NO)) - (ERROR!) - else (FTPPUTMARK OUTS (MARK# YES))) - (FTPPUTMARK OUTS (MARK# EOC)) - (SELECTC (FTPGETMARK INS) - ((MARK# YES) - (FTPGETCODE INS) - (\FTP.FLUSH.TO.EOC INS (AND FTPDEBUGFLG FTPDEBUGLOG))) - (PROGN (FTPGETCODE INS) - (\FTP.FLUSH.TO.EOC INS PROMPTWINDOW) - (ERROR!))) - T))]) - -(MTP.PREPARE.SEND - [LAMBDA (MSG W) (* drc%: "17-May-86 17:34") - (LET* [(PARSE (\LAFITE.PREPARE.SEND MSG W)) - (RECIPIENTS (APPEND (CDR (FASSOC %'To PARSE)) - (CDR (FASSOC %'cc PARSE] - (OR PARSE (\SENDMESSAGEFAIL W "Bad message format.")) - (AND (FASSOC %'Sender PARSE) - (\SENDMESSAGEFAIL W "Can't specify Sender!")) - (AND (FASSOC %''Date PARSE) - (\SENDMESSAGEFAIL W "Can't specify Date!")) - (OR RECIPIENTS (\SENDMESSAGEFAIL W "No recipients?")) - (create MTPPARSE - FROMLINE _ (CONCAT (if (ASSOC %'From PARSE) - then "Sender: " - else "From: ") - (FULLUSERNAME)) - MAILBOX _ [CONCATLIST (for TAIL on RECIPIENTS - collect (if (CDR TAIL) - then (CONCAT (CAR TAIL) - ", ") - else (CAR TAIL] - EOH _ (CADR (FASSOC %'EOF PARSE)) - DATELINE _ (CONCAT "Date: " (DATE (DATEFORMAT DAY.OF.WEEK SPACES TIME.ZONE - NO.SECONDS]) - -(MTP.MAKEANSWERFORM - [LAMBDA (MSGS FOLDER) (* ; "Edited 1-Feb-2022 17:05 by rmk") - (* drc%: "19-May-86 15:39") - (PROG ((OLD.MSG (OR (CAR (LISTP MSGS)) - MSGS)) - [INSERT? (AND MTP.INSERTANSWERFLG (MENU (\LAFITE.CREATE.MENU %' (("Yes" T - "Insert the text of the message being answered" - ) - ("No" NIL - "Normal answer form" - ) - ("Abort" %'ABORT - "Abort Answer command" - )) - "Insert Message?"] - (OLD.TEXT (\LAFITE.OPEN.FOLDER FOLDER %'INPUT)) - START END OLD.FIELDS SUBJECT FROM TO CC DATE REPLY-TO SENDER NEW.MSG NEW.TO NEW.CC) - (if (EQ INSERT? %'ABORT) - then (RETURN)) - (SETQ START (fetch (LAFITEMSG START) of OLD.MSG)) - (SETQ END (fetch (LAFITEMSG END) of OLD.MSG)) - (SETQ OLD.FIELDS (LAFITE.PARSE.HEADER OLD.TEXT \LAPARSE.FULL START END)) - (for PAIR in OLD.FIELDS do (SELECTQ (CAR PAIR) - (Subject (SETQ SUBJECT (CADR PAIR))) - (From (SETQ FROM (CDR PAIR))) - (To (SETQ TO (CDR PAIR))) - (cc (SETQ CC (CDR PAIR))) - (Date (SETQ DATE (CADR PAIR))) - (Reply-to (SETQ REPLY-TO (CDR PAIR))) - (Sender (SETQ SENDER (CDR PAIR))) - NIL)) - (SETQ NEW.TO (OR REPLY-TO FROM SENDER)) - (OR NEW.TO (RETURN (LAB.PROMPTPRINT FOLDER "Can't reply -- no From or Sender"))) - (SETQ NEW.MSG (OPENTEXTSTREAM NIL NIL NIL NIL (LIST %'FONT LAFITEEDITORFONT))) - (LINELENGTH MAX.SMALLP NEW.MSG) - (PRINTOUT NEW.MSG "Subject: ") - (if (NOT (STRING-EQUAL (SUBSTRING SUBJECT 1 3) - "Re:")) - then (printout NEW.MSG "Re: ")) - (PRINTOUT NEW.MSG (OR SUBJECT UNSUPPLIEDFIELDSTR) - T) - (AND FROM (PRINTOUT NEW.MSG "In-reply-to: " (CAR FROM) - "'s message of " DATE T)) - (PRINTOUT NEW.MSG "To: ") - (\MTP.PRINTADDRESSES NEW.TO NEW.MSG) - (SETQ NEW.CC (LA.SETDIFFERENCE (if REPLY-TO - then (LIST (FULLUSERNAME)) - else (LA.REMOVEDUPLICATES (APPEND TO CC))) - NEW.TO)) - (if NEW.CC - then (PRINTOUT NEW.MSG "cc: ") - (\MTP.PRINTADDRESSES NEW.CC NEW.MSG)) - (TERPRI NEW.MSG) - (if INSERT? - then (\MTP.FILL OLD.TEXT NEW.MSG MTP.INSERTANSWERNSPACES MTP.LINELENGTH START END) - (PRINTOUT NEW.MSG MESSAGESTR T) - else (LET [(SELECTPOSITION (ADD1 (GETFILEPTR NEW.MSG] - (PRINTOUT NEW.MSG MESSAGESTR T) - (TEDIT.SETSEL NEW.MSG SELECTPOSITION (NCHARS MESSAGESTR) - %'RIGHT T))) - (RETURN NEW.MSG]) -) - -(ADDTOVAR LAFITEMODELST (MTP MTP.PREPARE.SEND MTP.DELIVERMESSAGE MTP.MAKEANSWERFORM MTP.GET.USERDATA)) -(DEFINEQ - -(\MTP.AUTHENTICATE - [LAMBDA (HOST USER/PWD) (* drc%: "25-Apr-86 13:06") - - (* I couldn't get PUP authentication to work w/ our Misc server, so we just check - for mailbox existence. Password checking is done when retrieving mail.) - - (LET* ((RESPONSE (\MTP.POLLNEWMAIL HOST (CAR USER/PWD))) - (TYPE (CAR RESPONSE)) - (MESSAGE (CDR RESPONSE))) - (SELECTC TYPE - ((LIST \PT.NEWMAIL \PT.NONEWMAIL) - T) - ((LIST \PT.NOMAILBOX \PT.ERROR) - (SETQ \LAFITE.AUTHENTICATION.FAILURE MESSAGE) - NIL) - (NIL (PRINTOUT PROMPTWINDOW T HOST " not responding to authentication request." T) - (SETQ \LAFITE.AUTHENTICATION.FAILURE "No Server") - NIL) - NIL]) - -(\MTP.COERCE.MSG - [LAMBDA (MSG EOH ECHOSTREAM) (* drc%: "19-May-86 16:08") - (DECLARE (GLOBALVARS MTP.LINELENGTH)) - (LET [(STREAM (COERCETEXTOBJ MSG %'STREAM)) - (FILL? (SELECTQ MTP.FILLMSGFLG - (ALWAYS T) - (ASK (MENU (\LAFITE.CREATE.MENU %' (("Yes" T - "Break long lines in message to MTP.LINELENGTH" - ) - ("No" NIL "Deliver message as is") - ("Abort" %'ABORT "Abort deliver command")) - "Fill Text?"))) - (NEVER NIL) - (SHOULDNT] - (if (EQ FILL? %'ABORT) - then (ERROR!)) - (if FILL? - then (PRINTOUT ECHOSTREAM "filling...") - (LET ((OUTS (OPENSTREAM %'{NODIRCORE} %'BOTH))) - (COPYBYTES STREAM OUTS 0 EOH) - (\MTP.FILL STREAM OUTS 0 MTP.LINELENGTH) - (SETFILEPTR OUTS 0) - OUTS) - else STREAM]) - -(\MTP.FILL - [LAMBDA (INS OUTS LMARGIN RMARGIN START END) (* drc%: "19-May-86 16:46") - - (* * Copy bytes from INS to OUTS, indenting to LMARGIN. - New lines started at last space before RMARGIN -- - unless the line ends before RMARGIN + MTP.RIGHTMARGINWIDTH anyway. - Copy from START (default is current pos) to END - (default is EOF)%.) - - (until (GEQ (GETFILEPTR INS) - END) as COLUMN from (ADD1 LMARGIN) bind (LINEBUF _ (OPENSTREAM %'{NODIRCORE} %'BOTH)) - (CARRY _ LMARGIN) - (END _ (OR END (GETEOFPTR INS))) - (LIMIT _ (IPLUS RMARGIN MTP.RIGHTMARGINWIDTH) - ) - (EDGE _ (ADD1 RMARGIN)) - BYTE SPACE SPACES - first (AND START (SETFILEPTR INS START)) - (\MTP.INDENT INS OUTS END LMARGIN) eachtime (SETQ BYTE (BIN INS)) - (SELCHARQ BYTE - ((SPACE TAB) - (BOUT LINEBUF BYTE) - (push SPACES COLUMN)) - (EOL (SETFILEPTR LINEBUF 0) - (\MTP.CLRBUF LINEBUF OUTS) - (BOUT OUTS (CHARCODE EOL)) - (\MTP.INDENT INS OUTS END LMARGIN) - (SETQ CARRY (SETQ COLUMN LMARGIN))) - (BOUT LINEBUF BYTE)) - when (IGREATERP COLUMN LIMIT) do [if (SETQ SPACE (for SPACE in SPACES - thereis (LEQ SPACE EDGE))) - then (* dump line up to space) - (COPYBYTES LINEBUF OUTS 0 (SUB1 (IDIFFERENCE SPACE - CARRY))) - (BIN LINEBUF) - (* eat up space) - (SETQ COLUMN (IPLUS LMARGIN (IDIFFERENCE COLUMN - SPACE))) - else (* punt) - (COPYBYTES LINEBUF OUTS 0 (IDIFFERENCE RMARGIN CARRY)) - (SETQ COLUMN (ADD1 (IPLUS LMARGIN MTP.RIGHTMARGINWIDTH - ] - (BOUT OUTS (CHARCODE EOL)) - (\MTP.INDENT INS OUTS END LMARGIN) - (\MTP.CLRBUF LINEBUF OUTS) - (SETQ SPACES) - (SETQ CARRY COLUMN) finally (SETFILEPTR LINEBUF 0) - (COPYBYTES LINEBUF OUTS]) - -(\MTP.INDENT - [LAMBDA (INS OUTS END LMARGIN) (* drc%: "18-May-86 18:31") - - (* * indent OUTS to LMARGIN, unless at end of INS or on an empty line) - - (if (AND (ILESSP (GETFILEPTR INS) - END) - (NEQ (PEEKCCODE INS) - (CHARCODE EOL))) - then (to LMARGIN do (BOUT OUTS (CHARCODE SPACE]) - -(\MTP.CLRBUF - [LAMBDA (INS OUTS) (* drc%: "30-Apr-86 00:14") - - (* * Flush INS to OUTS, and then clear INS) - - (COPYBYTES INS OUTS) - (\SETEOFPTR INS 0) - (SETFILEPTR INS 0]) - -(\MTP.PRINTADDRESSES - [LAMBDA (ADDRESSLIST STREAM) (* bvm%: "20-Dec-83 18:20") - (for ADDR in ADDRESSLIST bind NTHTIME when ADDR do (COND - (NTHTIME (PRIN1 ", " STREAM)) - (T (SETQ NTHTIME T))) - (PRIN1 ADDR STREAM)) - (TERPRI STREAM]) -) - -(RPAQ? MTP.SERVER ) - -(RPAQ? MTP.LINELENGTH 70) - -(RPAQ? MTP.RIGHTMARGINWIDTH 10) - -(RPAQ? MTP.FILLMSGFLG %'ASK) - -(RPAQ? MTP.INSERTANSWERFLG T) - -(RPAQ? MTP.INSERTANSWERNSPACES 3) - - - -(* MTP mail server) - -(DEFINEQ - -(MTP.OPENMAILBOX - [LAMBDA (PORT USER PWD MAILSERVER) (* drc%: "20-Apr-86 17:49") - (PROG ((MTP.PORT (CONS (CAR PORT) - \PUPSOCKET.MTP)) - (HOST (fetch (MAILSERVER MAILSERVERNAME) of MAILSERVER)) - (LOGINFO (CONS USER PWD)) - INS OUTS) - (SELECTQ (MTP.POLLNEWMAIL PORT USER) - (NIL (RETURN %'EMPTY)) - (? (RETURN)) - NIL) - NEWCONNECTION - (OR (SETQ INS (OPENBSPSTREAM MTP.PORT NIL (FUNCTION \FTP.ERRORHANDLER))) - (RETURN)) - (SETQ OUTS (BSPOUTPUTSTREAM INS)) - RETRY - (FTPPUTMARK OUTS (MARK# RETRIEVE-MAIL)) - [\FTP.PRINTPLIST OUTS (LIST (LIST %'USER-NAME (CAR LOGINFO)) - (LIST %'USER-PASSWORD (CDR LOGINFO] - (.EOC. OUTS) - (SELECTC (FTPGETMARK INS) - ((MARK# NO) - (SELECTQ (FTPGETCODE INS) - ((16 17) (* bad user/pwd) - (PRINTOUT PROMPTWINDOW T HOST " : ") - (\FTP.FLUSH.TO.EOC INS PROMPTWINDOW) - (TERPRI PROMPTWINDOW) - (SETQ LOGINFO (\INTERNAL/GETPASSWORD HOST T NIL NIL NIL %'UNIX)) - (MTP.GET.USERDATA) - (if (BSPOPENP INS %'INPUT) - then (GO RETRY) - else (GO NEWCONNECTION))) - (RETURN (\FTPERROR INS "MTP error")))) - ((MARK# HERE-IS-PLIST) - (RETURN (CONS (create MTPMAILBOX - MTPIN _ INS - MTPOUT _ OUTS - MTPSTATE _ %'OPEN)))) - (RETURN (\FTPERROR NIL "MTP error"]) - -(MTP.POLLNEWMAIL - [LAMBDA (HOSTPORT USER) (* drc%: "25-Apr-86 12:44") - (LET* ((RESPONSE (\MTP.POLLNEWMAIL HOSTPORT USER)) - (TYPE (CAR RESPONSE)) - (MESSAGE (CDR RESPONSE))) - (SELECTC TYPE - (\PT.NEWMAIL T) - (\PT.NONEWMAIL NIL) - ((LIST \PT.NOMAILBOX \PT.ERROR) - (printout PROMPTWINDOW T HOSTPORT " : " MESSAGE T) - %'?) - (NIL %'?) - NIL]) - -(MTP.NEXTMESSAGE - [LAMBDA (MAILBOX) (* bvm%: " 6-JUL-83 14:27") - (SELECTQ (fetch MTPSTATE of MAILBOX) - (EMPTY NIL) - (OPEN [PROG ((PLIST (READPLIST (fetch MTPIN of MAILBOX))) - (NEXTSTATE 'MESSAGE)) - (RETURN (PROG1 (OR (for PAIR in PLIST - do (SELECTQ (CAR PAIR) - (LENGTH (push $$VAL 'LENGTH (CADR PAIR))) - (OPENED (SELECTQ (CADR PAIR) - ((YES Yes yes) - (push $$VAL 'EXAMINED T)) - NIL)) - (DELETED (SELECTQ (CADR PAIR) - ((YES Yes yes) - (push $$VAL 'DELETEDFLG T) - (FTPGETMARK (fetch MTPIN - of MAILBOX)) - (\FTP.FLUSH.TO.MARK (fetch MTPIN - of MAILBOX) - ) - (SETQ NEXTSTATE - (\MTP.ENDOFMESSAGESTATE - (fetch MTPIN of MAILBOX)))) - NIL)) - NIL)) - T) - (replace MTPSTATE of MAILBOX with NEXTSTATE]) - (ERROR "Mailbox not in good state for NEXTMESSAGE" MAILBOX]) - -(MTP.RETRIEVEMESSAGE - [LAMBDA (MAILBOX OUTSTREAM) (* bvm%: " 6-JUL-83 14:27") - (SELECTQ (fetch MTPSTATE of MAILBOX) - (MESSAGE [COND - ((EQ (FTPGETMARK (fetch MTPIN of MAILBOX)) - (MARK# HERE-IS-FILE)) - (\FTP.FLUSH.TO.MARK (fetch MTPIN of MAILBOX) - OUTSTREAM) - (replace MTPSTATE of MAILBOX with (\MTP.ENDOFMESSAGESTATE (fetch MTPIN - of MAILBOX]) - (\FTPERROR]) - -(MTP.CLOSEMAILBOX - [LAMBDA (MAILBOX FLUSHP) (* bvm%: " 9-May-84 15:35") - (COND - ((BSPOPENP (fetch MTPIN of MAILBOX)) - (PROG1 [COND - ((AND FLUSHP (EQ (fetch MTPSTATE of MAILBOX) - 'EMPTY)) - (FTPPUTMARK (fetch MTPOUT of MAILBOX) - (MARK# FLUSH-MAILBOX)) - (.EOC. (fetch MTPOUT of MAILBOX)) - (SELECTC (FTPGETMARK (fetch MTPIN of MAILBOX)) - ((MARK# YES) - (FTPGETCODE (fetch MTPIN of MAILBOX)) - (\FTP.FLUSH.TO.EOC (fetch MTPIN of MAILBOX) - (.FTPDEBUGLOG.)) - T) - ((MARK# NO) - (FTPGETCODE (fetch MTPIN of MAILBOX)) - (\FTP.FLUSH.TO.EOC (fetch MTPIN of MAILBOX) - PROMPTWINDOW) - '?) - (PROGN (\FTPERROR) - '?] - (CLOSEBSPSTREAM (fetch MTPIN of MAILBOX) - 5000))]) -) -(DEFINEQ - -(\MTP.ENDOFMESSAGESTATE - [LAMBDA (INSTREAM) (* bvm%: " 5-SEP-83 18:08") - (SELECTC (FTPGETMARK INSTREAM) - ((MARK# HERE-IS-PLIST) - 'OPEN) - ((MARK# YES) - (FTPGETCODE INSTREAM) - (\FTP.FLUSH.TO.EOC INSTREAM (.FTPDEBUGLOG.)) - 'EMPTY) - ((MARK# NO) - (FTPGETCODE INSTREAM) - (\FTP.FLUSH.TO.EOC INSTREAM PROMPTWINDOW) - 'ERROR) - (\FTPERROR]) - -(\MTP.POLLNEWMAIL - [LAMBDA (HOSTPORT USER) (* drc%: "25-Apr-86 12:28") - - (* * Does a Laurel-style mail check for USER on machine HOSTPORT, returning NIL - (timeout) or a cons of the PUP type of the response and the contents of the - response) - - (LET ((SOC (\GETMISCSOCKET)) - (OUTPUP (ALLOCATE.PUP)) - INPUP RESPONSE) - (SETUPPUP OUTPUP HOSTPORT \PUPSOCKET.MISCSERVICES \PT.LAURELCHECK NIL SOC T) - (PUTPUPSTRING OUTPUP USER) - [SETQ RESPONSE (to \MAXETHERTRIES when (SETQ INPUP (EXCHANGEPUPS SOC OUTPUP NIL T)) - do (RETURN (CONS (fetch PUPTYPE of INPUP) - (GETPUPSTRING INPUP))) - finally (AND PUPTRACEFLG (printout PUPTRACEFILE "Mail check timed out" T] - (AND INPUP (RELEASE.PUP INPUP)) - (RELEASE.PUP OUTPUP) - RESPONSE]) -) - -(ADDTOVAR MAILSERVERTYPES (MTP MTP.POLLNEWMAIL MTP.OPENMAILBOX MTP.NEXTMESSAGE MTP.RETRIEVEMESSAGE - MTP.CLOSEMAILBOX ETHERPORT)) - -(FILESLOAD LAFITE) -(DECLARE%: EVAL@COMPILE DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RECORD MTPMAILBOX (MTPIN MTPOUT MTPSTATE)) - -(RECORD MTPPARSE (FROMLINE MAILBOX EOH DATELINE)) -) - -(DECLARE%: EVAL@COMPILE - -(RPAQQ \PUPSOCKET.MTP 7) - -(RPAQQ \PUPSOCKET.MISCSERVICES 4) - - -(CONSTANTS \PUPSOCKET.MTP \PUPSOCKET.MISCSERVICES) -) - - -(RPAQQ PUPTYPES - ((\PT.ECHOME 1) - (\PT.IAMECHO 2) - (\PT.IAMBADECHO 3) - (\PT.ERROR 4) - (\PT.RFC 8) - (\PT.ABORT 9) - (\PT.END 10) - (\PT.ENDREPLY 11) - (\PT.DATA 16) - (\PT.ADATA 17) - (\PT.ACK 18) - (\PT.MARK 19) - (\PT.INTERRUPT 20) - (\PT.INTERRUPTREPLY 21) - (\PT.AMARK 22) - (\PT.GATEWAYREQUEST 128) - (\PT.GATEWAYRESPONSE 129) - (\PT.ALTOTIMEREQUEST 134) - (\PT.ALTOTIMERESPONSE 135) - (\PT.MSGCHECK 136) - (\PT.NEWMAIL 137) - (\PT.NONEWMAIL 138) - (\PT.NOMAILBOX 139) - (\PT.LAURELCHECK 140) - (\PT.NAMELOOKUP 144) - (\PT.NAMERESPONSE 145) - (\PT.NAME/ADDRERROR 146) - (\PT.ADDRLOOKUP 147) - (\PT.ADDRRESPONSE 148) - (\PT.PRINTERSTATUS 128) - (\PT.STATUSRESPONSE 129) - (\PT.PRINTERCAPABILITY 130) - (\PT.CAPABILITYRESPONSE 131) - (\PT.PRINTJOBSTATUS 132) - (\PT.PRINTJOBRESPONSE 133) - (\PT.WHEREUSERREQUEST 152) - (\PT.WHEREUSERRESPONSE 153) - (\PT.WHEREUSERERROR 154) - (\PT.AUTHREQ 168) - (\PT.AUTHPOSRESP 169) - (\PT.AUTHNEGRESP 170))) -(DECLARE%: EVAL@COMPILE - -(RPAQQ \PT.ECHOME 1) - -(RPAQQ \PT.IAMECHO 2) - -(RPAQQ \PT.IAMBADECHO 3) - -(RPAQQ \PT.ERROR 4) - -(RPAQQ \PT.RFC 8) - -(RPAQQ \PT.ABORT 9) - -(RPAQQ \PT.END 10) - -(RPAQQ \PT.ENDREPLY 11) - -(RPAQQ \PT.DATA 16) - -(RPAQQ \PT.ADATA 17) - -(RPAQQ \PT.ACK 18) - -(RPAQQ \PT.MARK 19) - -(RPAQQ \PT.INTERRUPT 20) - -(RPAQQ \PT.INTERRUPTREPLY 21) - -(RPAQQ \PT.AMARK 22) - -(RPAQQ \PT.GATEWAYREQUEST 128) - -(RPAQQ \PT.GATEWAYRESPONSE 129) - -(RPAQQ \PT.ALTOTIMEREQUEST 134) - -(RPAQQ \PT.ALTOTIMERESPONSE 135) - -(RPAQQ \PT.MSGCHECK 136) - -(RPAQQ \PT.NEWMAIL 137) - -(RPAQQ \PT.NONEWMAIL 138) - -(RPAQQ \PT.NOMAILBOX 139) - -(RPAQQ \PT.LAURELCHECK 140) - -(RPAQQ \PT.NAMELOOKUP 144) - -(RPAQQ \PT.NAMERESPONSE 145) - -(RPAQQ \PT.NAME/ADDRERROR 146) - -(RPAQQ \PT.ADDRLOOKUP 147) - -(RPAQQ \PT.ADDRRESPONSE 148) - -(RPAQQ \PT.PRINTERSTATUS 128) - -(RPAQQ \PT.STATUSRESPONSE 129) - -(RPAQQ \PT.PRINTERCAPABILITY 130) - -(RPAQQ \PT.CAPABILITYRESPONSE 131) - -(RPAQQ \PT.PRINTJOBSTATUS 132) - -(RPAQQ \PT.PRINTJOBRESPONSE 133) - -(RPAQQ \PT.WHEREUSERREQUEST 152) - -(RPAQQ \PT.WHEREUSERRESPONSE 153) - -(RPAQQ \PT.WHEREUSERERROR 154) - -(RPAQQ \PT.AUTHREQ 168) - -(RPAQQ \PT.AUTHPOSRESP 169) - -(RPAQQ \PT.AUTHNEGRESP 170) - - -(CONSTANTS (\PT.ECHOME 1) - (\PT.IAMECHO 2) - (\PT.IAMBADECHO 3) - (\PT.ERROR 4) - (\PT.RFC 8) - (\PT.ABORT 9) - (\PT.END 10) - (\PT.ENDREPLY 11) - (\PT.DATA 16) - (\PT.ADATA 17) - (\PT.ACK 18) - (\PT.MARK 19) - (\PT.INTERRUPT 20) - (\PT.INTERRUPTREPLY 21) - (\PT.AMARK 22) - (\PT.GATEWAYREQUEST 128) - (\PT.GATEWAYRESPONSE 129) - (\PT.ALTOTIMEREQUEST 134) - (\PT.ALTOTIMERESPONSE 135) - (\PT.MSGCHECK 136) - (\PT.NEWMAIL 137) - (\PT.NONEWMAIL 138) - (\PT.NOMAILBOX 139) - (\PT.LAURELCHECK 140) - (\PT.NAMELOOKUP 144) - (\PT.NAMERESPONSE 145) - (\PT.NAME/ADDRERROR 146) - (\PT.ADDRLOOKUP 147) - (\PT.ADDRRESPONSE 148) - (\PT.PRINTERSTATUS 128) - (\PT.STATUSRESPONSE 129) - (\PT.PRINTERCAPABILITY 130) - (\PT.CAPABILITYRESPONSE 131) - (\PT.PRINTJOBSTATUS 132) - (\PT.PRINTJOBRESPONSE 133) - (\PT.WHEREUSERREQUEST 152) - (\PT.WHEREUSERRESPONSE 153) - (\PT.WHEREUSERERROR 154) - (\PT.AUTHREQ 168) - (\PT.AUTHPOSRESP 169) - (\PT.AUTHNEGRESP 170)) -) - -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS MTP.SERVER MTP.LINELENGTH MTP.RIGHTMARGINWIDTH MTP.FILLMSGFLG MTP.INSERTANSWERFLG - MTP.INSERTANSWERNSPACES \LAPARSE.FULL LAFITEEDITORFONT UNSUPPLIEDFIELDSTR MESSAGESTR - \LAFITEUSERDATA MAILSERVERTYPES \LAFITE.AUTHENTICATION.FAILURE) -) - - -(FILESLOAD (LOADCOMP) - LAFITE DPUPFTP) -) -(PUTPROPS MTP COPYRIGHT ("Xerox Corporation" 1983 1984 1986)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (2193 11600 (MTP.GET.USERDATA 2203 . 3410) (MTP.DELIVERMESSAGE 3412 . 6253) ( -MTP.PREPARE.SEND 6255 . 7703) (MTP.MAKEANSWERFORM 7705 . 11598)) (11709 18664 (\MTP.AUTHENTICATE 11719 - . 12593) (\MTP.COERCE.MSG 12595 . 13858) (\MTP.FILL 13860 . 17553) (\MTP.INDENT 17555 . 17955) ( -\MTP.CLRBUF 17957 . 18197) (\MTP.PRINTADDRESSES 18199 . 18662)) (18894 25470 (MTP.OPENMAILBOX 18904 . -20828) (MTP.POLLNEWMAIL 20830 . 21345) (MTP.NEXTMESSAGE 21347 . 23541) (MTP.RETRIEVEMESSAGE 23543 . -24195) (MTP.CLOSEMAILBOX 24197 . 25468)) (25471 26963 (\MTP.ENDOFMESSAGESTATE 25481 . 25977) ( -\MTP.POLLNEWMAIL 25979 . 26961))))) -STOP diff --git a/obsolete/lispusers/NGROUP b/obsolete/lispusers/NGROUP deleted file mode 100644 index 6430c691..00000000 --- a/obsolete/lispusers/NGROUP +++ /dev/null @@ -1,1102 +0,0 @@ -(FILECREATED "18-Feb-87 15:45:59" {SUMEX-AIM}PS:NGROUP.;3 43703 - - changes to: (FNS NGROUP.BUTTONEVENTINFN) - - previous date: "17-Feb-87 14:25:08" {SUMEX-AIM}PS:NGROUP.;3) - - -(* Copyright (c) 1987 by Leland Stanford Junior University. All rights reserved.) - -(PRETTYCOMPRINT NGROUPCOMS) - -(RPAQQ NGROUPCOMS ((* Developed under support from NIH grant RR-00785.) - (* Written by Frank Gilmurray and Sami Shaio.) - (* * NUMBER ImageObject functions) - (FNS NUMBEROBJ NUMBEROBJP NGROUP.NUMBEROBJP NUMBER.DISPLAYFN NUMBER.IMAGEBOXFN NUMBER.PUTFN - NUMBER.GETFN NUMBER.BUTTONEVENTINFN) - (FNS NGROUP.BUTTONEVENTINFN NGROUP.WHENSELECTEDFN) - (* * Number Group GRAPH functions) - (FNS GRAPHMENU TSP.NGROUP.GRAPHP INITIAL.NGROUP.GRAPH TSPGRAPHREGION - ADD.NGROUP.TO.MOTHER.NODE ADD.NODE.TO.GRAPH COLLECT.HASHARRAY CREATE.NGROUP.NODE - GET.FROMNODES GET.MOTHER.GROUP MAKE.MOTHER.NODE MAKE.NGROUP.NODELST GET.TONODES - FIND.NODE) - (* * Other unsorted functions) - (FNS INSERT.NGROUP VERIFY.NGROUP.ORDER ADD.NUMBER.GROUP ADD.NGROUP.TO.DBASE COLLECT.NGROUPS - LIST.FONT.PROPS MAP.NGROUP.LOOKS NGROUP.GETFONT CHANGE.NGROUP CHANGE.NGROUP.FONT - CHANGE.NGROUP.FORMAT CHANGE.NGROUP.CHARTYPE CHANGE.NGROUP.DELIMIT CHANGE.NGROUP.START - CHANGE.NGROUP.ADDTOTOC TSP.GET.NGROUP.ARRAY TSP.LEGALID) - (* * Number counting functions) - (FNS UPDATE.NUMBEROBJS RESET.DEPENDENT.CLASSES RESET.NCOUNTER GET.NCOUNTER NCOUNTER? - LIST.ANCESTORS FLATTEN.TREE.TO.STRING NGROUP.CHARTYPE NUMBER.TO.LETTER - REMOVE.ALL.COUNTERS) - (* * Table-of-Contents functions) - (FNS TOC.ENABLED? GET.TOC.TEXTSTRING CREATE.TOC.FILE VIEW.TOC.FILE GET.TOC.FILE - WRITE.TOC.FILE) - (RECORDS NGCOUNTER NGTEMPLATE NUMBEROBJ))) - - - -(* Developed under support from NIH grant RR-00785.) - - - - -(* Written by Frank Gilmurray and Sami Shaio.) - - (* * NUMBER ImageObject functions) - -(DEFINEQ - -(NUMBEROBJ - (LAMBDA (USE TEMPLATE NUMSTRING LINK.TO REF.TYPE FONT) (* fsg " 4-Feb-87 13:26") - (LET ((NEWOBJ (IMAGEOBJCREATE (create NUMBEROBJ - REF.TYPE _ REF.TYPE - NUMSTRING _(OR NUMSTRING "^n") - USE _ USE - TEMPLATE _ TEMPLATE - LINK.TO _ LINK.TO - NUMBER.TEXT _ NIL - PAGE.NUMBER _ NIL - FONT _ FONT) - (IMAGEFNSCREATE (FUNCTION NUMBER.DISPLAYFN) - (FUNCTION NUMBER.IMAGEBOXFN) - (FUNCTION NUMBER.PUTFN) - (FUNCTION NUMBER.GETFN) - (FUNCTION NILL) - (FUNCTION NUMBER.BUTTONEVENTINFN) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION XREF.WHENDELETEDFN) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL))))) - (IMAGEOBJPROP NEWOBJ 'TYPE - 'NUMBEROBJ) - NEWOBJ))) - -(NUMBEROBJP - (LAMBDA (IMOBJ) (* ss: "25-Jun-85 12:11") - - (* Tests an imageobj to see if it is a number imageobject. By convention, testing functions for an imageobject will - be named (CONCAT "P")) - - - (AND IMOBJ (EQ (IMAGEOBJPROP IMOBJ 'TYPE) - 'NUMBEROBJ)))) - -(NGROUP.NUMBEROBJP - (LAMBDA (IMOBJ) (* fsg "15-Dec-86 09:57") - - (* * Like NUMBEROBJP but also checks for NGroup ImageObject.) - - - (AND (NUMBEROBJP IMOBJ) - (EQ (fetch (NUMBEROBJ USE) of (fetch OBJECTDATUM of IMOBJ)) - 'NGROUP)))) - -(NUMBER.DISPLAYFN - (LAMBDA (OBJ STREAM) (* fsg "17-Feb-87 14:20") - - (* Display function for numberobjs. Allows different formats for display according to the use to which the  - numberobj is being put. If no specific action is specified, displaying defaults to printing out as a plain  - number.*) - - - (LET* ((DATUM (fetch OBJECTDATUM of OBJ)) - (NUMSTRING (MKSTRING (fetch NUMSTRING of DATUM))) - (NUMBER.TEXT (fetch NUMBER.TEXT of DATUM)) - (TEMPLATE (MKSTRING (fetch TEMPLATE of DATUM))) - (USE (fetch USE of DATUM)) - (REF.TYPE (fetch REF.TYPE of DATUM)) - (MAIN.WINDOW (CAR (fetch \WINDOW of TEXTOBJ))) - (FONT (SELECTQ USE - (NOTE (fetch NUMBER.FONT of (GET.ENDNOTE.FONTS MAIN.WINDOW))) - (NGROUP (NGROUP.GETFONT REF.TYPE MAIN.WINDOW)) - (SHOULDNT "Undefined USE field, neither NOTE nor NGroup")))) - (AND (STRINGP NUMBER.TEXT) - (EQ USE 'NGROUP) - (SETQ NUMSTRING (CONCAT NUMSTRING NUMBER.TEXT))) - (AND (FONTP FONT) - (DSPFONT (FONTCREATE (FONTPROP FONT 'FAMILY) - (FONTPROP FONT 'SIZE) - (FONTPROP FONT 'FACE)) - STREAM)) - (SELECTQ USE - (NGROUP (PRIN3 NUMSTRING STREAM) - (SELECTQ (IMAGESTREAMTYPE STREAM) - (DISPLAY NIL) - (replace PAGE.NUMBER of DATUM - with (CAR FORMATTINGSTATE)))) - (NOTE (LET ((CURRENT.YPOS (DSPYPOSITION NIL STREAM)) - (IMAGEBOX (LISTGET (fetch IMAGEOBJPLIST of OBJ) - 'BOUNDBOX))) - (DSPYPOSITION (IPLUS CURRENT.YPOS - (IDIFFERENCE (fetch YSIZE - of IMAGEBOX) - (FONTPROP STREAM - 'HEIGHT))) - STREAM) - (PRIN1 NUMSTRING STREAM) - (DSPYPOSITION CURRENT.YPOS STREAM))) - NIL)))) - -(NUMBER.IMAGEBOXFN - (LAMBDA (OBJ STREAM CURRENTX RIGHTMARGIN) (* fsg "17-Feb-87 11:21") - - (* * The YSize is computed as the current font height plus half of the NOTE or NGroup font. - The reason is weird. Ask Sami for more details.) - - - (LET* ((MAIN.WINDOW (CAR (fetch \WINDOW of TEXTOBJ))) - (DATUM (fetch OBJECTDATUM of OBJ)) - (USE (fetch USE of DATUM)) - (REF.TYPE (fetch REF.TYPE of DATUM)) - (DEFAULTSTRING (MKSTRING (fetch NUMSTRING of DATUM))) - (NUMBER.TEXT (fetch NUMBER.TEXT of DATUM)) - (FONT (SELECTQ USE - (NOTE (fetch NUMBER.FONT of (GET.ENDNOTE.FONTS MAIN.WINDOW))) - (NGROUP (NGROUP.GETFONT REF.TYPE MAIN.WINDOW)) - (SHOULDNT "Undefined USE field, neither NOTE nor NGroup")))) - (AND (STRINGP NUMBER.TEXT) - (EQ USE 'NGROUP) - (SETQ DEFAULTSTRING (CONCAT DEFAULTSTRING NUMBER.TEXT))) - (AND (FONTP FONT) - (DSPFONT (FONTCREATE (FONTPROP FONT 'FAMILY) - (FONTPROP FONT 'SIZE) - (FONTPROP FONT 'FACE)) - STREAM)) - (create IMAGEBOX - XSIZE _(STRINGWIDTH DEFAULTSTRING STREAM) - YSIZE _(IPLUS (FONTPROP (CURRENT.DISPLAY.FONT STREAM) - 'HEIGHT) - (FIX (TIMES .5 (FONTPROP STREAM 'HEIGHT)))) - YDESC _(FONTPROP STREAM 'DESCENT) - XKERN _ 0)))) - -(NUMBER.PUTFN - (LAMBDA (OBJ STREAM) (* fsg " 4-Feb-87 13:29") - (LET ((USE (fetch USE of (fetch OBJECTDATUM of OBJ))) - (MAIN.WINDOW (PROCESSPROP (THIS.PROCESS) - 'WINDOW))) - (SELECTQ USE - (NOTE (NOTE.PUTFN OBJ STREAM MAIN.WINDOW)) - (NGROUP (replace (NUMBEROBJ FONT) of (fetch OBJECTDATUM of OBJ) - with (LIST.FONT.PROPS (NGROUP.GETFONT (fetch REF.TYPE - of (fetch - OBJECTDATUM - of OBJ)) - MAIN.WINDOW))) - (replace NGROUP.MOTHER of (fetch OBJECTDATUM of OBJ) - with (GET.FROMNODES (fetch REF.TYPE - of (fetch OBJECTDATUM of OBJ)) - MAIN.WINDOW)) - (PRIN4 (LIST 'NGroup - (IMAGEOBJPROP OBJ 'TAG) - (fetch OBJECTDATUM of OBJ)) - STREAM)) - (PRIN4 (LIST 'Unknown% Number% Type - (IMAGEOBJPROP OBJ 'TAG) - (fetch OBJECTDATUM of OBJ)) - STREAM))))) - -(NUMBER.GETFN - (LAMBDA (STREAM) (* edited: "29-Jan-87 16:27") - (LET* ((USE/TEXT (CDR (READ STREAM))) - (NEWOBJ (NUMBEROBJ)) - (USE (MKATOM (fetch USE of (CADR USE/TEXT)))) - (WINDOW (PROCESSPROP (THIS.PROCESS) - 'WINDOW))) - (OR (WINDOWPROP WINDOW 'IMAGEOBJ.MENUW) - (TSP.FMMENU (TEXTSTREAM WINDOW))) - (IMAGEOBJPROP NEWOBJ 'TAG - (CAR USE/TEXT)) - (SETQ USE/TEXT (CADR USE/TEXT)) - (replace USE of (fetch OBJECTDATUM of NEWOBJ) with USE) - (SELECTQ USE - (NOTE (NOTE.GETFN NEWOBJ USE/TEXT WINDOW)) - (NGROUP (ADD.NGROUP.TO.DBASE (fetch REF.TYPE of USE/TEXT) - (fetch TEMPLATE of USE/TEXT) - (fetch NGROUP.MOTHER of USE/TEXT) - (AND (fetch (NUMBEROBJ FONT) of USE/TEXT) - (replace (NUMBEROBJ FONT) - of USE/TEXT - with (APPLY* - 'FONTCREATE - (fetch (NUMBEROBJ FONT) - of USE/TEXT)))) - (CREATE.NGROUP.NODE (fetch REF.TYPE - of USE/TEXT) - (fetch NGROUP.MOTHER - of USE/TEXT) - USE/TEXT WINDOW) - WINDOW) - (CREATE.NGROUP.NODE (fetch NGROUP.MOTHER of USE/TEXT) - NIL NIL WINDOW) - (ADD.NGROUP.TO.MOTHER.NODE (fetch REF.TYPE of USE/TEXT) - (fetch NGROUP.MOTHER of USE/TEXT) - WINDOW) - (WINDOWPROP WINDOW 'REBUILD.GRAPHFLG - T) - (replace OBJECTDATUM of NEWOBJ with USE/TEXT)) - (replace OBJECTDATUM of NEWOBJ with USE/TEXT)) - NEWOBJ))) - -(NUMBER.BUTTONEVENTINFN - (LAMBDA (NUMBEROBJ STREAM) (* fsg " 4-Feb-87 13:31") - (LET ((USE (fetch USE of (fetch OBJECTDATUM of NUMBEROBJ))) - (REF.TYPE (fetch REF.TYPE of (fetch OBJECTDATUM of NUMBEROBJ))) - (CHANGED NIL)) - (AND (MOUSESTATE MIDDLE) - (SELECTQ USE - (NOTE (NOTE.BUTTONEVENTINFN NUMBEROBJ STREAM)) - (NGROUP.BUTTONEVENTINFN REF.TYPE NUMBEROBJ STREAM))) - CHANGED))) -) -(DEFINEQ - -(NGROUP.BUTTONEVENTINFN - (LAMBDA (USE NUMBEROBJ STREAM) (* fsg "18-Feb-87 11:19") - (LET* ((TAG (IMAGEOBJPROP NUMBEROBJ 'TAG)) - (NMENU (create MENU - TITLE _(COND - (TAG (CONCAT USE " Tag:" TAG)) - (T USE)) - ITEMS _(COND - (TAG '(Change% Tag)) - (T '(Tag))) - WHENSELECTEDFN _ 'NGROUP.WHENSELECTEDFN))) - (PUTMENUPROP NMENU 'OBJ - NUMBEROBJ) - (MENU NMENU)))) - -(NGROUP.WHENSELECTEDFN - (LAMBDA (ITEM MENU MB) (* fsg " 4-Feb-87 13:41") - (LET ((TSTREAM (TEXTSTREAM WINDOW)) - (OBJ (GETMENUPROP MENU 'OBJ)) - PREV.CODE CODE) - (SETQ CODE (TSP.GET.INCODE TSTREAM)) - (AND (SETQ PREV.CODE (IMAGEOBJPROP OBJ 'TAG)) - (TSP.PUTCODE PREV.CODE NIL WINDOW)) - (IMAGEOBJPROP OBJ 'TAG - CODE) - (COND - (CODE (TSP.PUTCODE CODE OBJ WINDOW) - (TSP.PUTCODE PREV.CODE NIL WINDOW)))))) -) - (* * Number Group GRAPH functions) - -(DEFINEQ - -(GRAPHMENU - (LAMBDA (TSTREAM TWINDOW) (* fsg " 2-Dec-86 08:54") - (LET* ((RESHAPEFLG NIL) - (GRAPH (OR (AND (NOT (WINDOWPROP TWINDOW 'REBUILD.GRAPHFLG)) - (WINDOWPROP TWINDOW 'NGROUP.GRAPH)) - (INITIAL.NGROUP.GRAPH TWINDOW))) - (REGION (TSPGRAPHREGION GRAPH TWINDOW T)) - (GRAPHW (OR (WINDOWPROP TWINDOW 'NGROUPW) - (CREATEW REGION "Number Group Graph" NIL T)))) - (WINDOWPROP GRAPHW 'REPAINTFN - NIL) - (ATTACHWINDOW (SHAPEW GRAPHW REGION) - TWINDOW - 'TOP - 'JUSTIFY - 'LOCALCLOSE) - (SHOWGRAPH GRAPH GRAPHW (FUNCTION INSERT.NGROUP) - (FUNCTION CHANGE.NGROUP)) - (WINDOWPROP TWINDOW 'REBUILD.GRAPHFLG - NIL) - (WINDOWPROP TWINDOW 'NGROUPW - GRAPHW) - (WINDOWPROP TWINDOW 'NGROUP.GRAPH - GRAPH) - (WINDOWPROP GRAPHW 'CLOSEFN - 'DETACHWINDOW) - (WINDOWPROP GRAPHW 'TWINDOW - TWINDOW) - (WINDOWPROP GRAPHW 'TSTREAM - TSTREAM)))) - -(TSP.NGROUP.GRAPHP - (LAMBDA (TWINDOW) (* fsg "15-Dec-86 15:27") - (LET* ((MENUW (WINDOWPROP TWINDOW 'IMAGEOBJ.MENUW)) - (ITEM (FM.ITEMFROMID MENUW 'NGroup% Menu))) - (FM.ITEMPROP ITEM 'STATE)))) - -(INITIAL.NGROUP.GRAPH - (LAMBDA (WINDOW) (* ss: "24-Apr-86 14:31") - (LET* ((ROOTNODE (NODECREATE 'NEW.NGROUP - 'NEW.NGROUP - NIL NIL NIL NIL 1)) - (NODELST (for NODE in (COLLECT.HASHARRAY (TSP.GET.NGROUP.ARRAY WINDOW)) - collect (CADR NODE)))) - (OR (FIND.NODE 'NEW.NGROUP - WINDOW) - (PROGN (SETQ NODELST (CONS ROOTNODE NODELST)) - (ADD.NGROUP.TO.DBASE 'NEW.NGROUP - NIL NIL NIL ROOTNODE WINDOW))) - (LAYOUTGRAPH NODELST '(NEW.NGROUP))))) - -(TSPGRAPHREGION - (LAMBDA (GRAPH MAIN.WINDOW TITLEFLG BORDER) (* ss: " 2-Apr-86 16:28") - (LET ((R (GRAPHREGION GRAPH)) - (MAIN.R (WINDOWREGION MAIN.WINDOW))) - (replace (REGION WIDTH) of R with (WIDTHIFWINDOW (fetch (REGION WIDTH) of R))) - (replace (REGION HEIGHT) of R with (HEIGHTIFWINDOW (fetch (REGION HEIGHT) - of R) - TITLEFLG BORDER)) - R))) - -(ADD.NGROUP.TO.MOTHER.NODE - (LAMBDA (ID MOTHERID W) (* ss: " 3-Apr-86 17:50") - (LET* ((MOTHER.NODE (FIND.NODE MOTHERID W)) - (TONODES (fetch (GRAPHNODE TONODES) of MOTHER.NODE))) - (OR (MEMBER ID TONODES) - (replace (GRAPHNODE TONODES) of MOTHER.NODE with (CONS ID TONODES)))))) - -(ADD.NODE.TO.GRAPH - (LAMBDA (NODE GRAPH WINDOW) (* ss: "24-Apr-86 14:26") - (LET* ((PARENT.NODE (FIND.NODE (CAR (fetch (GRAPHNODE FROMNODES) of NODE)) - WINDOW)) - (TONODES (fetch (GRAPHNODE TONODES) of NODE))) - (OR (MEMBER (fetch (GRAPHNODE NODEID) of NODE) - TONODES) - (PROGN (replace (GRAPHNODE TONODES) of PARENT.NODE - with (CONS (fetch (GRAPHNODE NODEID) of NODE) - (fetch (GRAPHNODE TONODES) of PARENT.NODE))) - (replace (GRAPH GRAPHNODES) of GRAPH - with (CONS NODE (fetch (GRAPH GRAPHNODES) of GRAPH))))) - (LAYOUTGRAPH (fetch (GRAPH GRAPHNODES) of GRAPH) - '(NEW.NGROUP))))) - -(COLLECT.HASHARRAY - (LAMBDA (HARRAY) (* ss: " 3-Apr-86 16:46") - (LET ((RESULT NIL)) - (MAPHASH HARRAY '(LAMBDA (VAL KY) - (SETQ RESULT (CONS VAL RESULT)))) - RESULT))) - -(CREATE.NGROUP.NODE - (LAMBDA (ID MOTHER USERDATA W) (* ss: " 4-Apr-86 13:13") - (LET* ((NGROUP.HARRAY (TSP.GET.NGROUP.ARRAY W)) - (NODE (GETHASH ID NGROUP.HARRAY))) - (OR NODE (LET ((NEW.NODE (NODECREATE ID ID NIL NIL (LIST MOTHER)))) - (PUTHASH ID (LIST USERDATA NEW.NODE) - (LIST NGROUP.HARRAY)) - NEW.NODE)) - (OR (AND NODE (CAR NODE)) - (AND USERDATA NODE (RPLACA NODE USERDATA)))))) - -(GET.FROMNODES - (LAMBDA (NGID WINDOW) (* ss: " 3-Apr-86 16:00") - (CAR (fetch (GRAPHNODE FROMNODES) of (FIND.NODE NGID WINDOW))))) - -(GET.MOTHER.GROUP - (LAMBDA (DEPENDENT WINDOW) (* ss: " 2-Apr-86 16:30") - (CAR (fetch (GRAPHNODE FROMNODES) of (FIND.NODE DEPENDENT WINDOW))))) - -(MAKE.MOTHER.NODE - (LAMBDA NIL (* ss: " 8-Feb-86 16:01") - (LET ((TONODES NIL)) - (NODECREATE 'NEW.NGROUP - 'NEW.NGROUP - NIL - (for NGROUP in (TSP.GET 'NGROUPS) - do (COND - ((NOT (GET.FROMNODES (fetch REF.TYPE of NGROUP))) - (SETQ TONODES (CONS (fetch REF.TYPE of NGROUP) - TONODES)))) - finally (RETURN TONODES)) - NIL NIL 1)))) - -(MAKE.NGROUP.NODELST - (LAMBDA NIL (* ss: " 8-Feb-86 16:04") - (LET* ((NODELST (for NGROUP in (TSP.GET 'NGROUPS) - collect (NODECREATE (fetch REF.TYPE of NGROUP) - (fetch REF.TYPE of NGROUP) - NIL - (GET.TONODES (fetch REF.TYPE of NGROUP)) - (GET.FROMNODES (fetch REF.TYPE of NGROUP)))))) - (SETQ NODELST (CONS (MAKE.MOTHER.NODE) - NODELST))))) - -(GET.TONODES - (LAMBDA (MOTHER-GROUP WINDOW) (* ss: " 2-Apr-86 16:31") - (fetch (GRAPHNODE TONODES) of (FIND.NODE MOTHER-GROUP WINDOW)))) - -(FIND.NODE - (LAMBDA (NID WINDOW) (* ss: " 3-Apr-86 18:26") - (CADR (GETHASH NID (TSP.GET.NGROUP.ARRAY WINDOW))))) -) - (* * Other unsorted functions) - -(DEFINEQ - -(INSERT.NGROUP - (LAMBDA (NODE GRAPHW) (* fsg "13-Jan-87 16:21") - (AND NODE (LET* ((TWINDOW (WINDOWPROP GRAPHW 'TWINDOW)) - (TSTREAM (WINDOWPROP GRAPHW 'TSTREAM)) - (LABEL (fetch (GRAPHNODE NODELABEL) of NODE)) - (TEMPLATE (fetch (NUMBEROBJ TEMPLATE) - of (CAR (GETHASH LABEL (TSP.GET.NGROUP.ARRAY TWINDOW))))) - (OLDLOOKS (fetch CARETLOOKS of (TEXTOBJ TSTREAM))) - (NEWLOOKS (NGROUP.GETFONT LABEL TWINDOW))) - (SELECTQ LABEL - (NEW.NGROUP (COND - ((ADD.NUMBER.GROUP TWINDOW TSTREAM) - (CLOSEW GRAPHW) - (GRAPHMENU TSTREAM TWINDOW)) - (T NIL))) - (AND (VERIFY.NGROUP.ORDER TWINDOW TSTREAM LABEL) - (PROGN (TEDIT.CARETLOOKS TSTREAM NEWLOOKS) - (LET ((NEWOBJ (NUMBEROBJ 'NGROUP - TEMPLATE - (CONCAT "[" LABEL "]") - NIL LABEL NEWLOOKS))) - (AND (TOC.ENABLED? TWINDOW) - (GET.TOC.TEXTSTRING NEWOBJ TSTREAM - LABEL)) - (IMAGEOBJPROP NEWOBJ 'TWINDOW - TWINDOW) - (TEDIT.INSERT.OBJECT NEWOBJ TSTREAM)) - (TEDIT.CARETLOOKS TSTREAM OLDLOOKS) - (AND (UPDATE? TWINDOW) - (UPDATE.NUMBEROBJS TWINDOW - 'NUMBEROBJP))))))))) - -(VERIFY.NGROUP.ORDER - (LAMBDA (WINDOW STREAM LABEL) (* fsg "15-Dec-86 15:46") - - (* * Verify the NGroup order before inserting a new NGroup. The order is valid if the new NGroup is a top level  - node or the previous NGroup is the same as or the mother of this new NGroup. Note that the "previous NGroup" must  - be a member of this NGroup`s tree branch.) - - - (OR (EQ (GET.FROMNODES LABEL WINDOW) - 'NEW.NGROUP) - (LET* ((ANCESTORS (LIST.ANCESTORS LABEL NIL WINDOW)) - (MOTHER (CAR (LAST ANCESTORS))) - (SELECTION (TEDIT.GETSEL STREAM)) - (CH# (SELECTQ (fetch POINT of SELECTION) - (LEFT (fetch CH# of SELECTION)) - (ADD1 (fetch CH# of SELECTION)))) - PREV.NGROUP) - (NCONC1 ANCESTORS LABEL) - (SETQ PREV.NGROUP (for OBJ in (REVERSE (TSP.LIST.OF.OBJECTS (TEXTOBJ - WINDOW) - ' - NGROUP.NUMBEROBJP)) - bind REF.TYPE - do (COND - ((AND (IGREATERP CH# (CADR OBJ)) - (MEMB (SETQ REF.TYPE - (fetch (NUMBEROBJ REF.TYPE) - of (fetch OBJECTDATUM - of (CAR OBJ)))) - ANCESTORS)) - (RETURN REF.TYPE)) - (T NIL)))) - (COND - ((OR (EQ PREV.NGROUP LABEL) - (EQ PREV.NGROUP MOTHER)) - T) - (T (TEDIT.PROMPTPRINT STREAM (CONCAT "%"" LABEL - "%" not inserted, no preceding %"" - MOTHER "%" NGroup.") - T) - NIL)))))) - -(ADD.NUMBER.GROUP - (LAMBDA (TWINDOW STREAM) (* fsg "14-Jan-87 11:30") - (OR (TSP.NGROUP.GRAPHP TWINDOW) - (PROGN (FM.CHANGESTATE (FM.ITEMFROMID (WINDOWPROP TWINDOW 'IMAGEOBJ.MENUW) - 'NGroup% Menu) - (WINDOWPROP TWINDOW 'IMAGEOBJ.MENUW)) - (GRAPHMENU STREAM TWINDOW))) - (LET* ((PREV.ITEMS (COLLECT.NGROUPS TWINDOW)) - (NEW.GROUPID (MKATOM (TSP.LEGALID NIL (CONS 'NEW.NGROUP - PREV.ITEMS) - STREAM))) - TEMPLATE DEPENDENT.CLASS NEW.NODE) - (COND - (NEW.GROUPID (SETQ DEPENDENT.CLASS - (MKATOM (AND PREV.ITEMS (MENU (create MENU - TITLE _ - "Select Parent Group OR none" - ITEMS _(SORT PREV.ITEMS - 'UALPHORDER))) - ))) - (SETQ TEMPLATE (OR TEMPLATE (create NGTEMPLATE - NG.CHARTYPE _ 'Number - NG.DELIMIT _ "." - NG.START _ 1 - NG.ADDTOTOC _ T))) - (SETQ NEW.NODE (NODECREATE NEW.GROUPID NEW.GROUPID NIL NIL - (LIST (OR DEPENDENT.CLASS - 'NEW.NGROUP)))) - (ADD.NGROUP.TO.DBASE NEW.GROUPID TEMPLATE DEPENDENT.CLASS GP.DefaultFont - NEW.NODE TWINDOW) - (ADD.NODE.TO.GRAPH NEW.NODE (WINDOWPROP TWINDOW 'NGROUP.GRAPH) - TWINDOW)) - (T NIL))))) - -(ADD.NGROUP.TO.DBASE - (LAMBDA (NEW.GROUPID TEMPLATE DEPENDENT.CLASS FONT NGROUP.NODE TWINDOW) - (* ss: "24-Apr-86 14:19") - (LET ((NGROUP.ARRAY (TSP.GET.NGROUP.ARRAY TWINDOW))) - (OR (GETHASH NEW.GROUPID NGROUP.ARRAY) - (PROGN (WINDOWPROP TWINDOW 'REBUILD.GRAPHFLG - T) - (PUTHASH NEW.GROUPID - (LIST (create NUMBEROBJ - NGROUP.MOTHER _ DEPENDENT.CLASS - FONT _ FONT - REF.TYPE _ NEW.GROUPID - TEMPLATE _ TEMPLATE) - NGROUP.NODE) - (LIST NGROUP.ARRAY))))))) - -(COLLECT.NGROUPS - (LAMBDA (TWINDOW) (* ss: "31-Mar-86 13:53") - (LET ((GRAPH (WINDOWPROP TWINDOW 'NGROUP.GRAPH))) - (for NODE in (fetch (GRAPH GRAPHNODES) of GRAPH) collect (fetch - (GRAPHNODE NODEID) - of NODE) - unless (EQ (fetch (GRAPHNODE NODEID) of NODE) - 'NEW.NGROUP))))) - -(LIST.FONT.PROPS - (LAMBDA (FONTDES) (* ss: " 6-Feb-86 16:12") - (AND FONTDES (LIST (FONTPROP FONTDES 'FAMILY) - (FONTPROP FONTDES 'SIZE) - (FONTPROP FONTDES 'FACE))))) - -(MAP.NGROUP.LOOKS - (LAMBDA (LABEL NEWFDESC TWINDOW) (* ss: " 2-Apr-86 18:04") - (TEDIT.PROMPTPRINT (TEXTSTREAM TWINDOW) - (CONCAT "Updating looks for " LABEL " numbers...") - T) - (for NOTE/CH# in (TSP.LIST.OF.OBJECTS (TEXTOBJ TWINDOW) - (BQUOTE (LAMBDA (OBJ) - (AND (IMAGEOBJP OBJ) - (EQ (FETCH REF.TYPE - OF OBJ:OBJECTDATUM) - , - (KWOTE LABEL)))))) - do (TEDIT.LOOKS (TEXTSTREAM TWINDOW) - NEWFDESC - (CADR NOTE/CH#) - 1)) - (TEDIT.PROMPTPRINT (TEXTSTREAM TWINDOW) - "done."))) - -(NGROUP.GETFONT - (LAMBDA (NGROUP.NAME WINDOW) (* ss: " 3-Apr-86 18:26") - (fetch (NUMBEROBJ FONT) of (CAR (GETHASH NGROUP.NAME (TSP.GET.NGROUP.ARRAY WINDOW))))) -) - -(CHANGE.NGROUP - (LAMBDA (NODE GRAPHW) (* fsg "13-Jan-87 15:11") - - (* * Here when number group node is middle buttoned. Allow user to change the font and/or format of the ngroup.) - - - (AND NODE (OR (EQ 'NEW.NGROUP - (fetch (GRAPHNODE NODELABEL) of NODE)) - (LET ((LABEL (fetch NODELABEL of NODE)) - (ITEM.TO.CHANGE (MENU (create MENU - TITLE _ "Item to change" - CENTERFLG _ T - ITEMS _ '(Font Format))))) - (SELECTQ ITEM.TO.CHANGE - (Font (CHANGE.NGROUP.FONT LABEL GRAPHW)) - (Format (CHANGE.NGROUP.FORMAT LABEL GRAPHW)) - NIL)))))) - -(CHANGE.NGROUP.FONT - (LAMBDA (LABEL GRAPHW) (* fsg "13-Jan-87 15:13") - - (* * Change the font of a number group.) - - - (LET* ((TSTREAM (WINDOWPROP GRAPHW 'TSTREAM)) - (TWINDOW (WINDOWPROP GRAPHW 'TWINDOW)) - (NBROBJ (CAR (GETHASH LABEL (TSP.GET.NGROUP.ARRAY TWINDOW)))) - (OLD.FONT (fetch (NUMBEROBJ FONT) of NBROBJ)) - NEW.FONT) - (TEDIT.PROMPTPRINT TSTREAM (CONCAT "%"" LABEL "%" font is " (LIST (ABBREVIATE.FONT - OLD.FONT)) - ", change to...") - T) - (SETQ NEW.FONT (FONTCREATE (GET.TSP.FONT TWINDOW OLD.FONT))) - (COND - ((NEQ OLD.FONT NEW.FONT) - (replace (NUMBEROBJ FONT) of NBROBJ with NEW.FONT) - (MAP.NGROUP.LOOKS LABEL NEW.FONT TWINDOW)) - (T NIL)) - (TEDIT.PROMPTPRINT TSTREAM "" T)))) - -(CHANGE.NGROUP.FORMAT - (LAMBDA (LABEL GRAPHW) (* fsg "14-Jan-87 11:40") - - (* * Change the format of a number group. The format is three element record; the character type, the delimiter,  - and starting value.) - - - (LET* ((TSTREAM (WINDOWPROP GRAPHW 'TSTREAM)) - (TWINDOW (WINDOWPROP GRAPHW 'TWINDOW)) - (NBROBJ (CAR (GETHASH LABEL (TSP.GET.NGROUP.ARRAY TWINDOW)))) - (OLD.TEMPLATE (fetch (NUMBEROBJ TEMPLATE) of NBROBJ)) - NEW.CHARTYPE NEW.DELIMIT NEW.START NEW.ADDTOTOC) - (AND (SETQ NEW.CHARTYPE (CHANGE.NGROUP.CHARTYPE OLD.TEMPLATE LABEL TSTREAM)) - (replace (NGTEMPLATE NG.CHARTYPE) of OLD.TEMPLATE with NEW.CHARTYPE)) - (AND (SETQ NEW.DELIMIT (CHANGE.NGROUP.DELIMIT OLD.TEMPLATE LABEL TSTREAM)) - (replace (NGTEMPLATE NG.DELIMIT) of OLD.TEMPLATE with NEW.DELIMIT)) - (AND (SETQ NEW.START (CHANGE.NGROUP.START OLD.TEMPLATE LABEL TSTREAM)) - (replace (NGTEMPLATE NG.START) of OLD.TEMPLATE with NEW.START)) - (AND (SETQ NEW.ADDTOTOC (CHANGE.NGROUP.ADDTOTOC OLD.TEMPLATE LABEL TSTREAM)) - (replace (NGTEMPLATE NG.ADDTOTOC) of OLD.TEMPLATE with (CDR NEW.ADDTOTOC))) - (COND - ((OR NEW.CHARTYPE NEW.DELIMIT NEW.START) - (MAP.NGROUP.LOOKS LABEL (fetch (NUMBEROBJ FONT) of NBROBJ) - TWINDOW)) - (T (TEDIT.PROMPTPRINT TSTREAM "" T)))))) - -(CHANGE.NGROUP.CHARTYPE - (LAMBDA (TEMPLATE LABEL STREAM) (* fsg "13-Jan-87 14:52") - - (* * Show this NGroup's display type and return a possibly new display type.) - - - (TEDIT.PROMPTPRINT STREAM (CONCAT "%"" LABEL "%" displayed as " (fetch (NGTEMPLATE - NG.CHARTYPE) - of TEMPLATE) - ", change to...") - T) - (MENU (create MENU - TITLE _ "NGroup Types" - CENTERFLG _ T - ITEMS _ '(Number Null% String Uppercase% Letter Lowercase% Letter - Uppercase% Roman Lowercase% Roman))))) - -(CHANGE.NGROUP.DELIMIT - (LAMBDA (TEMPLATE LABEL STREAM) (* fsg "13-Jan-87 14:38") - - (* * Show the delimiter following this NGroup and return a possibly new delimiter.) - - - (TEDIT.PROMPTPRINT STREAM (CONCAT "Delimiter following %"" LABEL "%" is %"" - (fetch (NGTEMPLATE NG.DELIMIT) of TEMPLATE) - "%", change to...") - T) - (LET ((NEW.DELIMIT (MENU (create MENU - TITLE _ "NGroup Delimiters" - CENTERFLG _ T - ITEMS _ '((Dot ".") - (Dash "-") - (Null% String "") - Other))))) - (COND - ((EQ NEW.DELIMIT 'Other) - (MKSTRING (TEDIT.GETINPUT STREAM (CONCAT "Specify delimiter following " LABEL ":")) - )) - (T NEW.DELIMIT))))) - -(CHANGE.NGROUP.START - (LAMBDA (TEMPLATE LABEL STREAM) (* fsg "13-Jan-87 15:09") - - (* * Show this NGroup's starting value and return a possibly new starting value.) - - - (TEDIT.PROMPTPRINT STREAM (CONCAT "Starting value of %"" LABEL "%" is " - (fetch (NGTEMPLATE NG.START) of TEMPLATE) - ", change it?") - T) - (MENU (create MENU - TITLE _ "Change start?" - CENTERFLG _ T - ITEMS _ '(YES NO) - WHENSELECTEDFN _(FUNCTION (LAMBDA (ITEM) - (COND - ((EQ ITEM 'YES) - (NUMBERPAD.READ (CREATE.NUMBERPAD.READER "Starting NGroup Value" - NIL NIL NIL T))) - (T NIL)))))))) - -(CHANGE.NGROUP.ADDTOTOC - (LAMBDA (TEMPLATE LABEL STREAM) (* fsg "14-Jan-87 13:17") - - (* * Say if this NGroup will/won't be included in the TOC, if any and retrun a possibly new ADD-TO-TOC flag.) - - - (TEDIT.PROMPTPRINT STREAM (CONCAT "%"" LABEL "%" is " (COND - ((fetch (NGTEMPLATE NG.ADDTOTOC) of TEMPLATE) - "") - (T "NOT ")) - "included in TOC. Do you want it included?") - T) - (MENU (create MENU - TITLE _ "Include in TOC?" - CENTERFLG _ T - ITEMS _ '(YES NO) - WHENSELECTEDFN _(FUNCTION (LAMBDA (ITEM) - (CONS ITEM (COND - ((EQ ITEM 'YES) - T) - (T NIL))))))))) - -(TSP.GET.NGROUP.ARRAY - (LAMBDA (W) (* ss: " 3-Apr-86 18:25") - (WINDOWPROP W 'TSP.NGROUP.ARRAY))) - -(TSP.LEGALID - (LAMBDA (NAME NGROUPS STREAM) (* ss: "31-Mar-86 14:23") - (LET ((LEGAL T) - (ID (OR NAME (MKATOM (TEDIT.GETINPUT STREAM "Group name>"))))) - (COND - ((MEMBER ID NGROUPS) - (TSP.LEGALID (MKATOM (TEDIT.GETINPUT STREAM "Illegal name... Group name>")) - NGROUPS STREAM)) - (T ID))))) -) - (* * Number counting functions) - -(DEFINEQ - -(UPDATE.NUMBEROBJS - (LAMBDA (WINDOW TESTFN TESTFNARG) (* fsg " 3-Feb-87 10:30") - (LET* ((TEXTOBJ (TEXTOBJ WINDOW)) - (STREAM (TEXTSTREAM WINDOW)) - (NBROBJ.LIST (TSP.LIST.OF.OBJECTS TEXTOBJ TESTFN TESTFNARG))) - (TEDIT.PROMPTPRINT STREAM "Updating Number Group ImageObjects..." T) - (for NUMBEROBJ in NBROBJ.LIST - do (LET* ((OBJECTDATUM (fetch OBJECTDATUM of (CAR NUMBEROBJ))) - (REF.TYPE (fetch REF.TYPE of OBJECTDATUM)) - (NUMSTRING (MKATOM (fetch NUMSTRING of OBJECTDATUM))) - (USE (fetch USE of OBJECTDATUM)) - (TEMPLATE (SELECTQ USE - (NGROUP (fetch TEMPLATE of OBJECTDATUM)) - NIL)) - (DEPENDENT.CLASS (GET.MOTHER.GROUP REF.TYPE WINDOW)) - NEW.COUNT) - (RESET.DEPENDENT.CLASSES WINDOW USE REF.TYPE) - (SETQ NEW.COUNT (GET.NCOUNTER WINDOW USE REF.TYPE DEPENDENT.CLASS - TEMPLATE)) - (COND - ((EQ NEW.COUNT NUMSTRING)) - (T (replace NUMSTRING of OBJECTDATUM with NEW.COUNT) - (TEDIT.OBJECT.CHANGED STREAM (CAR NUMBEROBJ))))) - finally (REMOVE.ALL.COUNTERS WINDOW)) - (TEDIT.PROMPTPRINT STREAM "done")))) - -(RESET.DEPENDENT.CLASSES - (LAMBDA (WINDOW USE REF.TYPE) (* fsg "12-Dec-86 10:50") - (for DEPENDENT in (fetch (GRAPHNODE TONODES) of (FIND.NODE REF.TYPE WINDOW)) - do (PROGN (RESET.NCOUNTER WINDOW USE DEPENDENT) - (RESET.DEPENDENT.CLASSES WINDOW USE DEPENDENT))))) - -(RESET.NCOUNTER - (LAMBDA (WINDOW USE REF.TYPE) (* fsg "12-Dec-86 11:07") - (LET* ((TEMPLATE (SELECTQ USE - (NGROUP (fetch (NUMBEROBJ TEMPLATE) - of (CAR (GETHASH REF.TYPE (TSP.GET.NGROUP.ARRAY - WINDOW))))) - NIL)) - (COUNTER (NCOUNTER? WINDOW USE REF.TYPE TEMPLATE))) - (replace NCOUNT of COUNTER with (COND - (TEMPLATE (SUB1 (fetch NG.START of TEMPLATE))) - (T 0)))))) - -(GET.NCOUNTER - (LAMBDA (WINDOW USE REF.TYPE MOTHER.CLASS TEMPLATE) (* fsg "17-Dec-86 16:33") - (LET ((COUNTER (NCOUNTER? WINDOW USE REF.TYPE TEMPLATE))) - (COND - (COUNTER (PROGN (replace NCOUNT of COUNTER with (ADD1 (fetch NCOUNT - of COUNTER))) - (COND - (MOTHER.CLASS (FLATTEN.TREE.TO.STRING WINDOW USE REF.TYPE)) - (T (fetch NCOUNT of COUNTER))))) - (T NIL))))) - -(NCOUNTER? - (LAMBDA (WINDOW USE REF.TYPE TEMPLATE) (* fsg "23-Dec-86 09:13") - - (* * Return the record for this number counter. If the record doesn't exist, we create one based on the USE value.) - - - (LET ((COUNTER.ID (MKATOM (CONCAT (SELECTQ USE - (NGROUP REF.TYPE) - USE) - "COUNTER")))) - (OR (WINDOWPROP WINDOW COUNTER.ID) - (PROGN (WINDOWPROP WINDOW COUNTER.ID - (create NGCOUNTER - NCOUNT _(COND - ((AND (EQ USE 'NGROUP) - TEMPLATE) - (SUB1 (fetch NG.START of TEMPLATE))) - (T 0)) - ANCESTRY _(SELECTQ USE - (NGROUP (LIST.ANCESTORS - REF.TYPE NIL - WINDOW)) - NIL))) - (WINDOWADDPROP WINDOW 'COUNTERS - COUNTER.ID) - (WINDOWPROP WINDOW COUNTER.ID)))))) - -(LIST.ANCESTORS - (LAMBDA (NID ANCESTORS WINDOW) (* ss: " 2-Apr-86 16:32") - (LET* ((NODE (FIND.NODE NID WINDOW)) - (MOTHER (AND NODE (CAR (fetch (GRAPHNODE FROMNODES) of NODE))))) - (COND - ((AND MOTHER (NEQ MOTHER 'NEW.NGROUP)) - (LIST.ANCESTORS MOTHER (CONS MOTHER ANCESTORS) - WINDOW)) - (T ANCESTORS))))) - -(FLATTEN.TREE.TO.STRING - (LAMBDA (WINDOW USE REF.TYPE) (* fsg "17-Dec-86 16:45") - (LET ((NCOUNTER (NCOUNTER? WINDOW USE REF.TYPE)) - (FLAT.TREE "")) - (COND - ((fetch ANCESTRY of NCOUNTER) - (for (ANCESTOR ANCESTOR.NCOUNT) in (REVERSE (fetch ANCESTRY of NCOUNTER)) - do (SETQ ANCESTOR.NCOUNT (fetch NCOUNT of (NCOUNTER? WINDOW USE ANCESTOR))) - (SETQ FLAT.TREE (CONCAT (SELECTQ USE - (NGROUP (NGROUP.CHARTYPE WINDOW - ANCESTOR - ANCESTOR.NCOUNT T)) - (CONCAT ANCESTOR.NCOUNT '-)) - FLAT.TREE)) - finally (SETQ FLAT.TREE - (MKATOM (CONCAT FLAT.TREE - (SELECTQ USE - (NGROUP (NGROUP.CHARTYPE WINDOW REF.TYPE - (fetch NCOUNT - of - NCOUNTER) - NIL)) - (fetch NCOUNT of NCOUNTER))))))) - (T (SETQ FLAT.TREE (SELECTQ USE - (NGROUP (NGROUP.CHARTYPE WINDOW REF.TYPE - (fetch NCOUNT of NCOUNTER) - NIL)) - (fetch NCOUNT of NCOUNTER))))) - FLAT.TREE))) - -(NGROUP.CHARTYPE - (LAMBDA (WINDOW REF.TYPE NCOUNT MORE.FIELDS?) (* fsg "13-Jan-87 15:26") - - (* * Convert the number NCOUNT to the format specified in TEMPLATE.) - - - (LET* ((NBROBJ (CAR (GETHASH REF.TYPE (TSP.GET.NGROUP.ARRAY WINDOW)))) - (TEMPLATE (fetch (NUMBEROBJ TEMPLATE) of NBROBJ)) - (CHARTYPE (fetch (NGTEMPLATE NG.CHARTYPE) of TEMPLATE))) - (CONCAT (COND - ((OR (NOT (NUMBERP NCOUNT)) - (ILEQ NCOUNT 0)) - "?") - (T (SELECTQ CHARTYPE - (Number (MKSTRING NCOUNT)) - (Uppercase% Letter (NUMBER.TO.LETTER NCOUNT T)) - (Lowercase% Letter (NUMBER.TO.LETTER NCOUNT)) - (Uppercase% Roman (ROMANNUMERALS NCOUNT T)) - (Lowercase% Roman (ROMANNUMERALS NCOUNT)) - (Null% String "") - NIL))) - (COND - ((OR MORE.FIELDS? (EQ (GET.FROMNODES REF.TYPE WINDOW) - 'NEW.NGROUP)) - (fetch (NGTEMPLATE NG.DELIMIT) of TEMPLATE)) - (T "")))))) - -(NUMBER.TO.LETTER - (LAMBDA (NUMBER UCFLG) (* fsg " 5-Dec-86 10:18") - - (* * Convert NUMBER to equivalent letter code.) - - - (LET ((LTRLST (MKSTRING (CHARACTER (IPLUS (CHARCODE A) - (IREMAINDER (SUB1 NUMBER) - 26))))) - (LTRNBR (IQUOTIENT (SUB1 NUMBER) - 26))) - (until (ZEROP LTRNBR) - do (SETQ LTRLST (CONCAT (CHARACTER (SUB1 (IPLUS (CHARCODE A) - (IREMAINDER LTRNBR 26)))) - LTRLST)) - (SETQ LTRNBR (IQUOTIENT LTRNBR 26))) - (COND - (UCFLG (U-CASE LTRLST)) - (T (L-CASE LTRLST)))))) - -(REMOVE.ALL.COUNTERS - (LAMBDA (WINDOW) (* ss: "30-Sep-85 09:38") - (for COUNTER in (WINDOWPROP WINDOW 'COUNTERS) do (WINDOWPROP WINDOW COUNTER NIL) - finally (WINDOWPROP WINDOW 'COUNTERS - NIL)))) -) - (* * Table-of-Contents functions) - -(DEFINEQ - -(TOC.ENABLED? - (LAMBDA (WINDOW) (* fsg "10-Dec-86 15:40") - (WINDOWPROP WINDOW 'ENABLETOC))) - -(GET.TOC.TEXTSTRING - (LAMBDA (NBROBJ STREAM LABEL) (* fsg "14-Jan-87 09:35") - - (* * Here if TOC is enabled to get the Table-Of-Contents text string for this NGroup. Because the WRITE.TOC.FILE  - function uses a tab to align the page numbers, any tabs in the TOC string are converted to spaces.) - - - (LET ((TOC.STRING (TEDIT.GETINPUT STREAM (CONCAT "Text for " LABEL ": ")))) - (AND TOC.STRING (replace (NUMBEROBJ NUMBER.TEXT) of (fetch OBJECTDATUM of NBROBJ) - with (CONCAT " " - (MKSTRING - (PACK (for TOC.CHAR in (UNPACK TOC.STRING) - collect - (COND - ((EQ TOC.CHAR - (CHARACTER (CHARCODE TAB))) - (CHARACTER (CHARCODE SPACE))) - (T TOC.CHAR))))))))))) - -(CREATE.TOC.FILE - (LAMBDA (STREAM WINDOW) (* fsg "27-Jan-87 09:32") - - (* * Here to print the Table Of Contents. Each Line of the TOC consists of the NGroup, the corresponding text,  - followed by the current listing page number.) - - - (LET* ((TOC.LIST (TSP.LIST.OF.OBJECTS (TEXTOBJ WINDOW) - 'NGROUP.NUMBEROBJP)) - (TOC.FILE (GET.TOC.FILE (WINDOWPROP WINDOW 'IMAGEOBJ.MENUW))) - (TOC.TABSTOP (LIST 'PARALOOKS - (LIST 'TABS - (LIST NIL (CONS (FIXR (ITIMES 72.27 5.5)) - 'DOTTEDLEFT))))) - (TOC.STREAM (AND TOC.FILE (OPENTEXTSTREAM NIL NIL NIL NIL TOC.TABSTOP)))) - (COND - ((AND TOC.LIST TOC.FILE) - (TEDIT.PROMPTPRINT STREAM (CONCAT "Putting Table-Of-Contents in " TOC.FILE "...") - T) - (WRITE.TOC.FILE TOC.STREAM TOC.LIST WINDOW) - (TEDIT.PROMPTPRINT STREAM "done") - (TEDIT.PUT TOC.STREAM TOC.FILE) - TOC.FILE) - (TOC.LIST (TEDIT.PROMPTPRINT STREAM - "Specify a file name for the Table-Of-Contents first." - T) - NIL) - (T (TEDIT.PROMPTPRINT STREAM "There are no NGroups in this document." T) - NIL))))) - -(VIEW.TOC.FILE - (LAMBDA (STREAM WINDOW) (* fsg "15-Dec-86 13:48") - - (* * Writes out the TOC file via CREATE.TOC.FILE and then opens another TEdit window where this new file is  - displayed.) - - - (LET ((TOC.FILE (CREATE.TOC.FILE STREAM WINDOW)) - (TOC.FILEW (WINDOWPROP WINDOW 'TOC.WINDOW))) - (AND TOC.FILE (COND - ((WINDOWP TOC.FILEW) - (COND - ((OPENWP TOC.FILEW) - (TEDIT.GET (TEXTOBJ TOC.FILEW) - TOC.FILE)) - ((OPENW TOC.FILEW) - (TEDIT TOC.FILE TOC.FILEW)))) - (T (WINDOWPROP WINDOW 'TOC.WINDOW - (SETQ TOC.FILEW (CREATEW NIL (CONCAT "Viewing TOC file: " - TOC.FILE)))) - (TEDIT TOC.FILE TOC.FILEW))))))) - -(GET.TOC.FILE - (LAMBDA (MENUW) (* fsg "11-Dec-86 10:27") - - (* * Return the user specified Table-Of-Contents file name.) - - - (LET* ((ITEM (FM.ITEMFROMID MENUW 'TOC.FILE)) - (TOC.FILENAME (FM.ITEMPROP ITEM 'LABEL))) - (COND - ((NOT (STREQUAL TOC.FILENAME "")) - (MKATOM TOC.FILENAME)) - (T NIL))))) - -(WRITE.TOC.FILE - (LAMBDA (TOC.STREAM TOC.LIST WINDOW) (* fsg "28-Jan-87 13:27") - - (* * Here to do the actual output to the TOC file.) - - - (DSPFONT (FONTCREATE '(HELVETICA 14 BRR)) - TOC.STREAM) - (PRINTOUT TOC.STREAM "Table of Contents" T) - (for (TOC.ITEM OBJECTDATUM ITEM.LEVEL) in TOC.LIST - when (fetch (NGTEMPLATE NG.ADDTOTOC) of (fetch (NUMBEROBJ TEMPLATE) - of (fetch OBJECTDATUM - of (CAR TOC.ITEM)))) - do (SETQ OBJECTDATUM (fetch OBJECTDATUM of (CAR TOC.ITEM))) - (DSPFONT (fetch (NUMBEROBJ FONT) of OBJECTDATUM) - TOC.STREAM) - (SETQ ITEM.LEVEL (LENGTH (LIST.ANCESTORS (fetch (NUMBEROBJ REF.TYPE) - of OBJECTDATUM) - NIL WINDOW))) - (COND - ((ZEROP ITEM.LEVEL) - (PRINTOUT TOC.STREAM T T)) - (T (RPTQ ITEM.LEVEL (PRINTOUT TOC.STREAM " ")))) - (PRINTOUT TOC.STREAM (CONCAT (fetch (NUMBEROBJ NUMSTRING) of OBJECTDATUM) - (OR (fetch (NUMBEROBJ NUMBER.TEXT) of OBJECTDATUM) - ""))) - (DSPFONT GP.DefaultFont TOC.STREAM) - (PRINTOUT TOC.STREAM (CHARACTER (CHARCODE TAB)) - (fetch (NUMBEROBJ PAGE.NUMBER) of OBJECTDATUM) - T) - (AND (ZEROP ITEM.LEVEL) - (PRINTOUT TOC.STREAM T))))) -) -[DECLARE: EVAL@COMPILE - -(RECORD NGCOUNTER (NCOUNT . ANCESTRY)) - -(RECORD NGTEMPLATE (NG.CHARTYPE NG.DELIMIT NG.START NG.ADDTOTOC)) - -(RECORD NUMBEROBJ (REF.TYPE NUMSTRING USE NGROUP.MOTHER TEMPLATE LINK.TO NUMBER.TEXT PAGE.NUMBER - FONT)) -] -(PUTPROPS NGROUP COPYRIGHT ("Leland Stanford Junior University" 1987)) -(DECLARE: DONTCOPY - (FILEMAP ((10049) (1916 NIL (NUMBEROBJ 1926 . 2911) (NUMBEROBJP 2913 . 3283) (NGROUP.NUMBEROBJP 3285 - . 3616) (NUMBER.DISPLAYFN 3618 . 5633) (NUMBER.IMAGEBOXFN 5635 . 7099) (NUMBER.PUTFN 7101 . 8230) ( -NUMBER.GETFN 8232 . 10048))))) -STOP -TONEVENTINFN 10294 . 10801)) (10806 11877 ( -NGROUP.BUTTONEVENTINFN 10818 . 11322) (NGROUP.WHENSELECTEDFN 11326 . 11874)) (11922 18225 (GRAPHMENU -11934 . 13037) (TSP.NGROUP.GRAPHP 13041 . 13313) (INITIAL.NGROUP.GRAPH 13317 . 13924) (TSPGRAPHREGION -13928 . 14408) (ADD.NGROUP.TO.MOTHER.NODE 14412 . 14788) (ADD.NODE.TO.GRAPH 14792 . 15593) ( -COLLECT.HASHARRAY 15597 . 15845) (CREATE.NGROUP.NODE 15849 . 16377) (GET.FROMNODES 16381 . 16577) ( -GET.MOTHER.GROUP 16581 . 16785) (MAKE.MOTHER.NODE 16789 . 17307) (MAKE.NGROUP.NODELST 17311 . 17848) ( -GET.TONODES 17852 . 18042) (FIND.NODE 18046 . 18222)) (18266 31833 (INSERT.NGROUP 18278 . 19721) ( -VERIFY.NGROUP.ORDER 19725 . 21385) (ADD.NUMBER.GROUP 21389 . 22799) (ADD.NGROUP.TO.DBASE 22803 . 23454 -) (COLLECT.NGROUPS 23458 . 23884) (LIST.FONT.PROPS 23888 . 24139) (MAP.NGROUP.LOOKS 24143 . 24833) ( -NGROUP.GETFONT 24837 . 25067) (CHANGE.NGROUP 25071 . 25812) (CHANGE.NGROUP.FONT 25816 . 26765) ( -CHANGE.NGROUP.FORMAT 26769 . 28318) (CHANGE.NGROUP.CHARTYPE 28322 . 28949) (CHANGE.NGROUP.DELIMIT -28953 . 29755) (CHANGE.NGROUP.START 29759 . 30503) (CHANGE.NGROUP.ADDTOTOC 30507 . 31267) ( -TSP.GET.NGROUP.ARRAY 31271 . 31432) (TSP.LEGALID 31436 . 31830)) (31875 39290 (UPDATE.NUMBEROBJS 31887 - . 33206) (RESET.DEPENDENT.CLASSES 33210 . 33563) (RESET.NCOUNTER 33567 . 34089) (GET.NCOUNTER 34093 - . 34583) (NCOUNTER? 34587 . 35516) (LIST.ANCESTORS 35520 . 35938) (FLATTEN.TREE.TO.STRING 35942 . -37182) (NGROUP.CHARTYPE 37186 . 38274) (NUMBER.TO.LETTER 38278 . 38989) (REMOVE.ALL.COUNTERS 38993 . -39287)) (39334 44416 (TOC.ENABLED? 39346 . 39497) (GET.TOC.TEXTSTRING 39501 . 40412) (CREATE.TOC.FILE -40416 . 41696) (VIEW.TOC.FILE 41700 . 42519) (GET.TOC.FILE 42523 . 42942) (WRITE.TOC.FILE 42946 . -44413))))) -STOP diff --git a/obsolete/lispusers/NOTECARDS-4045XLPPATCH b/obsolete/lispusers/NOTECARDS-4045XLPPATCH deleted file mode 100644 index 3e0b02b2..00000000 --- a/obsolete/lispusers/NOTECARDS-4045XLPPATCH +++ /dev/null @@ -1,47 +0,0 @@ -(FILECREATED "15-Dec-86 16:30:35" {DANTE}4045>V1.4>NOTECARDS-4045XLPPATCH.;2 1578 - - changes to: (FNS 4045XLP.NoteCardsAdvice) - - previous date: "26-Sep-86 14:20:43" {DANTE}4045>V1.4>NOTECARDS-4045XLPPATCH.;1) - - -(* Copyright (c) 1986 by Xerox Corporation and Will Snow. All rights reserved.) - -(PRETTYCOMPRINT NOTECARDS-4045XLPPATCHCOMS) - -(RPAQQ NOTECARDS-4045XLPPATCHCOMS ((FNS 4045XLP.NoteCardsAdvice) - (P (4045XLP.NoteCardsAdvice)))) -(DEFINEQ - -(4045XLP.NoteCardsAdvice - [LAMBDA NIL (* edited: "15-Dec-86 16:29") - [ADVISE (QUOTE NC.LinkIconDisplayFn) - (QUOTE BEFORE) - NIL - (QUOTE (COND ((OR (NULL STREAMTYPE) - (EQ STREAMTYPE (QUOTE 4045XLP))) - (SETQ STREAMTYPE (QUOTE DISPLAY] - (ADVISE (QUOTE (STRINGWIDTH IN NC.LinkIconImageBoxFn)) - (QUOTE AFTER) - NIL - (QUOTE (AND (EQ (IMAGESTREAMTYPE ImageStream) - (QUOTE 4045XLP)) - (RETURN (IQUOTIENT (STRINGWIDTH (CONCAT "nn" - (if Label - then - (CONCAT "<" - Label ">") - else "") - (if (AND Label - Title) - then " " - else "") - (OR Title "")) - ImageStream) - Scale]) -) -(4045XLP.NoteCardsAdvice) -(PUTPROPS NOTECARDS-4045XLPPATCH COPYRIGHT ("Xerox Corporation and Will Snow" 1986)) -(DECLARE: DONTCOPY - (FILEMAP (NIL (478 1445 (4045XLP.NoteCardsAdvice 488 . 1443))))) -STOP diff --git a/obsolete/lispusers/NSALLOCATION b/obsolete/lispusers/NSALLOCATION deleted file mode 100644 index a312c196..00000000 --- a/obsolete/lispusers/NSALLOCATION +++ /dev/null @@ -1,106 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP") -(FILECREATED "19-Feb-88 19:27:57" {QV}LISP>NSALLOCATION.\;3 6361 - - |changes| |to:| (FNS NSALLOCATION.STATS NSALLOCATION) - - |previous| |date:| "19-Feb-88 18:05:54" {QV}LISP>NSALLOCATION.\;1) - - -; Copyright (c) 1988 by Xerox Corporation. All rights reserved. - -(PRETTYCOMPRINT NSALLOCATIONCOMS) - -(RPAQQ NSALLOCATIONCOMS ((FNS NSALLOCATION NSALLOCATION.STATS))) -(DEFINEQ - -(NSALLOCATION - (LAMBDA (|FileServers| |ReportFile| |Filter|) (* \; "Edited 19-Feb-88 18:10 by bbb") - - (LET ((|NSDiskSizeInPages| 433907) - |ReportFileStream|) - (CL:WITH-OPEN-FILE (|ReportFileStream| |ReportFile| :DIRECTION :OUTPUT) - (|if| |Filter| - |then| (|printout| |ReportFileStream| "Using Filter " |Filter| T T)) - (|printout| |ReportFileStream| .FONT '(TERMINAL 12) "File Service" .TAB 20 - "# Pages Used" .TAB 35 "as %" .TAB 45 "# Pages Used" .TAB 60 "as %" .TAB 70 - "# Pages" .TAB 80 "as %" .TAB 90 "Total % Used" T) - (|printout| |ReportFileStream| "Name" .TAB 20 "Unrestricted" .TAB 35 "of disk" .TAB - 45 "Restricted" .TAB 60 "of alloc" .TAB 70 "alloc" .TAB 80 "of disk" .TAB 90 - "of disk" T) - (|printout| |ReportFileStream| "----------------" .TAB 20 "------------" .TAB 35 - "-------" .TAB 45 "------------" .TAB 60 "--------" .TAB 70 "-------" .TAB 80 - "-------" .TAB 90 "------------" T) - (|printout| |ReportFileStream| T) - (|for| |Server| |in| |FileServers| |bind| |Result| |PagesUnrestricted| - |PagesRestricted| |PagesAllocated| - |PercentUnrestricted| - |PercentRestrictedofAllocated| - |PercentAllocated| |TotalPercentUsed| - |when| (SETQ |Result| (NSALLOCATION.STATS |Server| |Filter|)) - |do| (SETQ |PagesUnrestricted| (CAR (NTH |Result| 1))) - (SETQ |PagesRestricted| (CAR (NTH |Result| 2))) - (SETQ |PagesAllocated| (CAR (NTH |Result| 3))) - (SETQ |PercentUnrestricted| (TIMES (FQUOTIENT |PagesUnrestricted| - |NSDiskSizeInPages|) - 100.0)) - (SETQ |PercentRestrictedofAllocated| (TIMES (FQUOTIENT |PagesRestricted| - |PagesAllocated|) - 100.0)) - (SETQ |PercentAllocated| (TIMES (FQUOTIENT |PagesAllocated| - |NSDiskSizeInPages|) - 100.0)) - (SETQ |TotalPercentUsed| (TIMES (FQUOTIENT (PLUS |PagesUnrestricted| - |PagesRestricted|) - |NSDiskSizeInPages|) - 100.0)) - (|printout| |ReportFileStream| |Server| .TAB 20 |.I12| |PagesUnrestricted| - .TAB 35 |.F7.1| |PercentUnrestricted| .TAB 45 |.I12| |PagesRestricted| - .TAB 60 |.F8.2| |PercentRestrictedofAllocated| .TAB 70 |.I7| - |PagesAllocated| .TAB 80 |.F7.1| |PercentAllocated| .TAB 90 |.F12.1| - |TotalPercentUsed| T)))))) - -(NSALLOCATION.STATS - (LAMBDA (|FileServiceName| |Filter|) (* \; "Edited 19-Feb-88 19:20 by bbb") - - (* |;;| - "Given a file service name the following three pieces of data are returned in a list: ") - - (* |;;| " 1) number of pages in use of unrestricted file drawers") - - (* |;;| " 2) number of pages in use in restricted file drawers") - - (* |;;| " 3) number of pages allocated to file drawers") - - (* |;;| "") - - (* |;;| " If Filter is NON-NIL then it is used as a file pattern for selecting directories") - - (LET* ((|FileServiceDirectories| (DIRECTORY (CONCAT "{" |FileServiceName| "}") - 'COLLECT)) - (|FileServiceDevice| (\\GETDEVICEFROMNAME |FileServiceName|)) - (|NumBytesUnrestricted| 0) - (|NumBytesRestricted| 0) - (|NumBytesAllocated| 0) - (|BytesPerPage| 512) - (|Filter| (|if| |Filter| - |then| (DIRECTORY.MATCH.SETUP |Filter|)))) - (|for| |Directory| |in| |FileServiceDirectories| |bind| |DirectoryAllocation| - |DirectoryUsed| - |when| (OR (NULL |Filter|) - (DIRECTORY.MATCH |Filter| |Directory|)) - |do| (SETQ |DirectoryAllocation| (\\NSFILING.GETFILEINFO |Directory| 'SUBTREE.SIZE.LIMIT - |FileServiceDevice|)) - (SETQ |DirectoryUsed| (\\NSFILING.GETFILEINFO |Directory| 'SUBTREE.SIZE - |FileServiceDevice|)) - (|if| (IGEQ |DirectoryAllocation| 0) - |then| (|add| |NumBytesAllocated| |DirectoryAllocation|) - (|add| |NumBytesRestricted| |DirectoryUsed|) - |else| (|add| |NumBytesUnrestricted| |DirectoryUsed|))) - (LIST (FQUOTIENT |NumBytesUnrestricted| |BytesPerPage|) - (FQUOTIENT |NumBytesRestricted| |BytesPerPage|) - (FQUOTIENT |NumBytesAllocated| |BytesPerPage|))))) -) -(PUTPROPS NSALLOCATION COPYRIGHT ("Xerox Corporation" 1988)) -(DECLARE\: DONTCOPY - (FILEMAP (NIL (457 6277 (NSALLOCATION 467 . 3985) (NSALLOCATION.STATS 3987 . 6275))))) -STOP diff --git a/obsolete/lispusers/NSCOPYFILE b/obsolete/lispusers/NSCOPYFILE deleted file mode 100644 index 8c4f0ab1..00000000 --- a/obsolete/lispusers/NSCOPYFILE +++ /dev/null @@ -1,37 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "10-Dec-87 11:40:53" {ERIS}LISP>NSCOPYFILE.;3 2187 - - changes to%: (FNS NSCOPYFILE) - - previous date%: " 9-Oct-87 17:35:59" {ERIS}LISP>NSCOPYFILE.;2) - - -(* " -Copyright (c) 1987 by Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT NSCOPYFILECOMS) - -(RPAQQ NSCOPYFILECOMS ((FNS NSCOPYFILE) (PROP FILETYPE NSCOPYFILE) (LOCALVARS . T) (DECLARE%: DONTEVAL@LOAD DOCOPY (P (MOVD? (QUOTE COPYFILE) (QUOTE \GENERIC.COPYFILE)) (AND (EQ MAKESYSNAME :LYRIC) (FILESLOAD (SYSLOAD) NSRANDOM)) (AND (CCODEP (QUOTE \NSFILING.COPYFILE)) (CCODEP (QUOTE NSCOPYFILE)) (MOVD (QUOTE NSCOPYFILE) (QUOTE COPYFILE) NIL T))))) -) -(DEFINEQ - -(NSCOPYFILE -(LAMBDA (FROMFILE TOFILE DESTPARAMETERS) (* ; "Edited 10-Dec-87 11:40 by bvm:") (* ;; "Special version of COPYFILE that lets NS servers do efficient or information-preserving copy. Perhaps COPYFILE will be a device method some day.") (LET ((*UPPER-CASE-FILE-NAMES* NIL) FROMDEV TODEV) (if (AND (NULL DESTPARAMETERS) (NOT (NULL TOFILE)) (NEQ TOFILE T) (SETQ FROMDEV (\GETDEVICEFROMNAME (SETQ FROMFILE (\ADD.CONNECTED.DIR (if (TYPEP FROMFILE (QUOTE PATHNAME)) then (\CONVERT-PATHNAME FROMFILE) else FROMFILE))))) (EQ (fetch (FDEV OPENFILE) of FROMDEV) (FUNCTION \NSFILING.OPENFILE)) (SETQ TODEV (\GETDEVICEFROMNAME (SETQ TOFILE (\ADD.CONNECTED.DIR (if (TYPEP TOFILE (QUOTE PATHNAME)) then (\CONVERT-PATHNAME TOFILE) else TOFILE))))) (EQ (fetch (FDEV OPENFILE) of TODEV) (FUNCTION \NSFILING.OPENFILE))) then (* ; "Both source and destination are NS servers.") (\NSFILING.COPYFILE FROMDEV FROMFILE TODEV TOFILE) else (\GENERIC.COPYFILE FROMFILE TOFILE DESTPARAMETERS)))) -) -) - -(PUTPROPS NSCOPYFILE FILETYPE :COMPILE-FILE) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(LOCALVARS . T) -) -(DECLARE%: DONTEVAL@LOAD DOCOPY -(MOVD? (QUOTE COPYFILE) (QUOTE \GENERIC.COPYFILE)) -(AND (EQ MAKESYSNAME :LYRIC) (FILESLOAD (SYSLOAD) NSRANDOM)) -(AND (CCODEP (QUOTE \NSFILING.COPYFILE)) (CCODEP (QUOTE NSCOPYFILE)) (MOVD (QUOTE NSCOPYFILE) (QUOTE COPYFILE) NIL T)) -) -(PUTPROPS NSCOPYFILE COPYRIGHT ("Xerox Corporation" 1987)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (738 1735 (NSCOPYFILE 748 . 1733))))) -STOP diff --git a/obsolete/lispusers/NSCOPYFILE.LCOM b/obsolete/lispusers/NSCOPYFILE.LCOM deleted file mode 100644 index dd322f14c53bc98cabcf3f7954489c9f4f93c4d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1694 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 diff --git a/obsolete/lispusers/NSREADERPATCH b/obsolete/lispusers/NSREADERPATCH deleted file mode 100644 index 092afe8c..00000000 --- a/obsolete/lispusers/NSREADERPATCH +++ /dev/null @@ -1,19 +0,0 @@ -(FILECREATED "18-Jun-86 16:14:22" {ERIS}LISPCORE>NSREADERPATCH.;1 577 - - changes to: (VARS NSREADERPATCHCOMS)) - - -(* Copyright (c) 1986 by Xerox Corporation. All rights reserved.) - -(PRETTYCOMPRINT NSREADERPATCHCOMS) - -(RPAQQ NSREADERPATCHCOMS [(ADDVARS (FILEINFOTYPES (READER 11)) - (\LISP.TO.NSFILING.ATTRIBUTES (READER READ.BY]) - -(ADDTOVAR FILEINFOTYPES (READER 11)) - -(ADDTOVAR \LISP.TO.NSFILING.ATTRIBUTES (READER READ.BY)) -(PUTPROPS NSREADERPATCH COPYRIGHT ("Xerox Corporation" 1986)) -(DECLARE: DONTCOPY - (FILEMAP (NIL))) -STOP diff --git a/obsolete/lispusers/NSROUTINGHASH b/obsolete/lispusers/NSROUTINGHASH deleted file mode 100644 index fcbb9d36..00000000 --- a/obsolete/lispusers/NSROUTINGHASH +++ /dev/null @@ -1,206 +0,0 @@ -(FILECREATED " 7-Feb-89 23:16:44" {ERINYES}KOTO>NSROUTINGHASH.;2 13641 - - changes to: (RECORDS NSROUTINGINFO) (VARS NSROUTINGHASHCOMS) - - previous date: "11-Jan-88 21:27:31" {ERINYES}KOTO>NSROUTINGHASH.;1) - - -(* Copyright (c) 1987, 1988, 1989 by Xerox Corporation. All rights reserved.) - -(PRETTYCOMPRINT NSROUTINGHASHCOMS) - -(RPAQQ NSROUTINGHASHCOMS ((FNS \AGE.ROUTING.TABLE.HASH \HANDLE.NS.ROUTING.INFO.NEW -\HANDLE.RAW.XIP.NEW \LOCATE.NSNET.NEW \FLUSHNDBS.NEW \MAP.ROUTING.TABLE.NEW \NSGATELISTENER.NEW -\NSROUTING.HASHBITSFN \NSROUTING.EQUIVFN PRINTROUTINGTABLE) (GLOBALVARS \NS.ROUTING.TABLE) (* * -LOADCOMP LLNS *before* loading this module so that this record declaration is in effect) (RECORDS -NSROUTINGINFO) (FNS INSTALL UNINSTALL) (* installation utilities) (COMS (* debugging tools) (FNS -ROUTINGPROBE)) (DECLARE: DONTEVAL@LOAD DOCOPY (P (UNINTERRUPTABLY (INSTALL (QUOTE \FLUSHNDBS)) ( -INSTALL (QUOTE \MAP.ROUTING.TABLE)) (INSTALL (QUOTE \HANDLE.NS.ROUTING.INFO)) (INSTALL (QUOTE -\LOCATE.NSNET)) (INSTALL (QUOTE \HANDLE.RAW.XIP)) (INSTALL (QUOTE \NSGATELISTENER)) (RESTART.ETHER) ( -\LOCATE.NSNET -1)))))) -(DEFINEQ - -(\AGE.ROUTING.TABLE.HASH -(LAMBDA (TABLE) (* ; "Edited 21-Jun-87 23:23 by BRIGGS") (MAPHASH TABLE (FUNCTION (LAMBDA (ENTRY KEY) -(if (if (AND (NEQ (fetch RTHOPCOUNT of ENTRY) 0) (TIMEREXPIRED? (fetch RTTIMER of ENTRY))) then (COND -((fetch RTRECENT of ENTRY) (* New entry, make it old) (replace RTRECENT of ENTRY with NIL) (SETUPTIMER - \RT.TIMEOUTINTERVAL (fetch RTTIMER of ENTRY)) NIL) (T \RT.PURGEFLG))) then (PUTHASH KEY NIL TABLE)))) -))) - -(\HANDLE.NS.ROUTING.INFO.NEW -(LAMBDA (XIP) (* edited: "11-Jan-88 20:48") (* ; "Edited 21-Jun-87 23:11 by BRIGGS") (* Processes a -routing info XIP) (COND ((EQ (fetch XIPFIRSTDATAWORD of XIP) \XROUTINGINFO.OP.RESPONSE) (* Unless -we're a gateway, we only handle responses) (PROG ((HOST (fetch XIPSOURCEHOST of XIP)) (NDB (fetch -EPNETWORK of XIP)) (LENGTH (SUB1 (FOLDLO (IDIFFERENCE (fetch XIPLENGTH of XIP) \XIPOVLEN) BYTESPERWORD -))) (BASE (\ADDBASE (fetch XIPCONTENTS of XIP) 1)) ENTRY NET HOPS NETHASH) (COND ((NEQ (fetch NETTYPE -of NDB) 10) (OR (SETQ HOST (\TRANSLATE.10TO3 HOST NDB)) (RETURN)))) (SETQ \NSROUTER.PROBECOUNT 0) ( -while (IGEQ LENGTH \NS.ROUTINGINFO.WORDS) do (SETQ HOPS (fetch (NSROUTINGINFO #HOPS) of BASE)) (COND ( -(OR (SETQ ENTRY (GETHASH BASE \NS.ROUTING.TABLE)) (COND ((ILEQ HOPS \NS.ROUTING.TABLE.RADIUS) (SETQ -NET (fetch (NSROUTINGINFO NET#) of BASE)) (PUTHASH NET (SETQ ENTRY (create ROUTING RTNET# _ NET -RTTIMER _ (SETUPTIMER 0))) \NS.ROUTING.TABLE) T))) (* Update the entry if this entry not for directly -connected net and - current entry timed out, or - new gateway same as old, or - new route has fewer -hops than old) (COND ((AND (NEQ (fetch RTHOPCOUNT of ENTRY) 0) (OR (NOT (fetch RTRECENT of ENTRY)) ( -AND (EQUAL HOST (fetch RTGATEWAY# of ENTRY)) (EQ NDB (fetch RTNDB of ENTRY))) (ILESSP HOPS (fetch -RTHOPCOUNT of ENTRY)))) (replace RTGATEWAY# of ENTRY with HOST) (replace RTNDB of ENTRY with NDB) ( -replace RTHOPCOUNT of ENTRY with HOPS) (COND ((ILESSP HOPS \RT.INFINITY) (replace RTRECENT of ENTRY -with T) (SETUPTIMER \RT.TIMEOUTINTERVAL (fetch RTTIMER of ENTRY)))))))) (SETQ LENGTH (IDIFFERENCE -LENGTH \NS.ROUTINGINFO.WORDS)) (SETQ BASE (\ADDBASE BASE \NS.ROUTINGINFO.WORDS)))))) ( -\RELEASE.ETHERPACKET XIP))) - -(\HANDLE.RAW.XIP.NEW -(LAMBDA (XIP TYPE) (* edited: "11-Jan-88 20:47") (* N.H.Briggs "21-Jun-87 23:53") (* Handles the -arrival of a raw XIP. If it is destined for a local socket that has room for it, we queue it up, else -release it) (COND ((EQ TYPE \EPT.XIP) (PROG (NSOC CSUM NDB DESTNET MYNET) (COND ((NULL \NS.READY) ( -RETURN (RELEASE.XIP XIP)))) (COND ((AND (NOT (EQNSHOSTNUMBER (fetch XIPDESTHOST of XIP) -\MY.NSHOSTNUMBER)) (NOT (EQNSHOSTNUMBER (fetch XIPDESTHOST of XIP) BROADCASTNSHOSTNUMBER))) (* Not for - us) (RETURN (\FORWARD.XIP XIP)))) (SETQ NDB (fetch EPNETWORK of XIP)) (COND ((AND (NOT (IEQP (SETQ -DESTNET (fetch XIPDESTNET of XIP)) (SETQ MYNET (fetch NDBNSNET# of NDB)))) (NEQ MYNET 0) (NEQ DESTNET -0)) (* explicitly for a net other than us) (RETURN (\FORWARD.XIP XIP)))) (COND ((NULL (SETQ NSOC ( -\NSOCKET.FROM# (fetch XIPDESTSOCKET of XIP)))) (* Packets addressed to non-active sockets are just -ignored.) (COND (XIPTRACEFLG (PRIN1 (QUOTE '&) XIPTRACEFILE))) (PROG (XIPBASE) (COND ((AND (EQ (fetch -XIPTYPE of XIP) \XIPT.ECHO) (EQ (fetch XIPDESTSOCKET of XIP) \NS.WKS.Echo) (EQ (\GETBASE (SETQ XIPBASE - (fetch XIPCONTENTS of XIP)) 0) \XECHO.OP.REQUEST)) (* Play echo server) (COND ((AND (NEQ (SETQ CSUM ( -fetch XIPCHECKSUM of XIP)) MASKWORD1'S) (NEQ CSUM (\CHECKSUM (fetch XIPCHECKSUMBASE of XIP) (SUB1 ( -FOLDHI (fetch XIPLENGTH of XIP) BYTESPERWORD))))) (\XIPERROR XIP \XIPE.CHECKSUM)) (T (\PUTBASE XIPBASE - 0 \XECHO.OP.REPLY) (SWAPXIPADDRESSES XIP) (replace EPREQUEUE of XIP with (QUOTE FREE)) (SENDXIP NIL -XIP)))) (T (\XIPERROR XIP \XIPE.NOSOCKET))))) ((IGEQ (fetch (NSOCKET INQUEUELENGTH) of NSOC) (fetch ( -NSOCKET NSOC#ALLOCATION) of NSOC)) (* Note that packets are just "dropped" when the queue overflows.) -(\XIPERROR XIP \XIPE.SOCKETFULL)) ((AND \NS.CHECKSUMFLG (NEQ (SETQ CSUM (fetch XIPCHECKSUM of XIP)) -MASKWORD1'S) (NEQ CSUM (\CHECKSUM (fetch XIPCHECKSUMBASE of XIP) (SUB1 (FOLDHI (fetch XIPLENGTH of XIP -) BYTESPERWORD))))) (\XIPERROR XIP \XIPE.CHECKSUM)) (T (COND ((EQ DESTNET 0) (* Fill in unspecified -destination net (possibly redundantly with zero)) (replace XIPDESTNET of XIP with MYNET)) ((EQ MYNET 0 -) (* Packet of specific destination net has arrived on a socket that we listen to. If we don't know -our own net number, assume sender is telling the truth) (replace NDBNSNET# of NDB with DESTNET) ( -replace NSNET of \MY.NSADDRESS with (SETQ \MY.NSNETNUMBER DESTNET)) (PROG ((ENTRY (\LOCATE.NSNET -DESTNET T))) (OR ENTRY (PUTHASH DESTNET (SETQ ENTRY (create ROUTING RTNET# _ DESTNET)) -\NS.ROUTING.TABLE)) (replace RTHOPCOUNT of ENTRY with 0) (replace RTGATEWAY# of ENTRY with NIL) ( -replace RTNDB of ENTRY with NDB) (replace RTRECENT of ENTRY with T)))) (UNINTERRUPTABLY (\ENQUEUE ( -fetch (NSOCKET INQUEUE) of NSOC) XIP) (add (fetch (NSOCKET INQUEUELENGTH) of NSOC) 1) (NOTIFY.EVENT ( -fetch NSOCEVENT of NSOC)))))) T)))) - -(\LOCATE.NSNET.NEW -(LAMBDA (NET DONTPROBE) (* edited: "11-Jan-88 20:49") (* N.H.Briggs "21-Jun-87 23:54") (LET ((DATA ( -GETHASH NET \NS.ROUTING.TABLE))) (if DATA then (AND (ILESSP (fetch RTHOPCOUNT of DATA) \RT.INFINITY) -DATA) elseif (NOT DONTPROBE) then (PUTHASH NET (create ROUTING RTNET# _ NET RTHOPCOUNT _ \RT.INFINITY -RTTIMER _ (SETUPTIMER 30000)) \NS.ROUTING.TABLE) (* Insert an entry for the net, to be purged in 30 -sec if router process hasn't filled it by then) (SETQ \NSROUTER.PROBECOUNT 5) (SETQ -\NSROUTER.PROBETIMER (SETUPTIMER 0 \NSROUTER.PROBETIMER)) (WAKE.PROCESS (QUOTE \NSGATELISTENER)) ( -BLOCK) (* ;; "return NIL in this case to indicate we didn't find it yet.") NIL)))) - -(\FLUSHNDBS.NEW -(LAMBDA (EVENT) (* edited: "11-Jan-88 21:20") (* bvm: " 4-AUG-83 22:51") (bind NDB QUEUE while (SETQ -NDB \LOCALNDBS) do (SETQ \LOCALNDBS (fetch NDBNEXT of NDB)) (replace NDBNEXT of NDB with NIL) (COND (( -EQ EVENT (QUOTE RESTART)) (APPLY* (fetch NDBETHERFLUSHER of NDB) NDB))) (DEL.PROCESS (fetch NDBWATCHER - of NDB)) (replace NDBWATCHER of NDB with (replace NDBTRANSLATIONS of NDB with NIL)) (COND ((SETQ -QUEUE (fetch NDBTQ of NDB)) (\FLUSH.NDB.QUEUE QUEUE EVENT (QUOTE OUTPUT)) (* Don't do this just yet, -because of possible race in \PUPGATELISTENER - (replace NDBTQ of NDB with NIL)))) (COND ((SETQ QUEUE ( -fetch NDBIQ of NDB)) (\FLUSH.NDB.QUEUE QUEUE EVENT (QUOTE INPUT)) (replace NDBIQ of NDB with NIL)))) ( -SETQ \PUP.ROUTING.TABLE (CONS)) (SETQ \NS.ROUTING.TABLE (HASHARRAY 100 50 (FUNCTION -\NSROUTING.HASHBITSFN) (FUNCTION \NSROUTING.EQUIVFN))))) - -(\MAP.ROUTING.TABLE.NEW -(LAMBDA (TABLE MAPFN) (* edited: "11-Jan-88 20:53") (* bvm: "22-SEP-83 14:21") (if (HARRAYP TABLE) -then (MAPHASH TABLE MAPFN) else (for ENTRY in (APPEND (CDR (OR TABLE \PUP.ROUTING.TABLE))) do (APPLY* -MAPFN ENTRY))))) - -(\NSGATELISTENER.NEW -(LAMBDA NIL (* edited: "11-Jan-88 20:47") (* ; "Edited 16-Jun-87 15:32 by BRIGGS") (PROG ((NSOC ( -OPENNSOCKET \NS.WKS.RoutingInformation T)) (TIMER (SETUPTIMER 0)) EVENT XIP BASE) (SETQ EVENT (fetch -NSOCEVENT of NSOC)) LP (COND ((SETQ XIP (GETXIP NSOC)) (\HANDLE.NS.ROUTING.INFO XIP) (BLOCK)) ((EQ ( -AWAIT.EVENT EVENT (COND ((IGREATERP \NSROUTER.PROBECOUNT 0) \NSROUTER.PROBETIMER) (T TIMER)) T) EVENT) - (GO LP))) (COND ((TIMEREXPIRED? TIMER) (\AGE.ROUTING.TABLE.HASH \NS.ROUTING.TABLE) (SETUPTIMER -\RT.AGEINTERVAL TIMER))) (COND ((AND (IGREATERP \NSROUTER.PROBECOUNT 0) (TIMEREXPIRED? -\NSROUTER.PROBETIMER)) (* Routing info desired. Broadcast a routing request on each directly-connected - net) (SETQ XIP (\FILLINXIP \XIPT.ROUTINGINFO NSOC BROADCASTNSHOSTNUMBER \NS.WKS.RoutingInformation 0 -(IPLUS \XIPOVLEN BYTESPERWORD (UNFOLD \NS.ROUTINGINFO.WORDS BYTESPERWORD)))) (replace XIPFIRSTDATAWORD - of XIP with \XROUTINGINFO.OP.REQUEST) (SETQ BASE (\ADDBASE (fetch XIPCONTENTS of XIP) 1)) (replace ( -NSROUTINGINFO NET#) of BASE with -1) (replace (NSROUTINGINFO #HOPS) of BASE with \RT.INFINITY) ( -SENDXIP NSOC XIP) (SETUPTIMER \NSROUTER.PROBEINTERVAL \NSROUTER.PROBETIMER) (SETQ \NSROUTER.PROBECOUNT - (SUB1 \NSROUTER.PROBECOUNT)))) (GO LP)))) - -(\NSROUTING.HASHBITSFN -(LAMBDA (OBJECT) (* ; "Edited 21-Jun-87 23:08 by BRIGGS") (SELECTQ (TYPENAME OBJECT) (ETHERPACKET (* ; - "a piece of a routing table packet") (LOGXOR (fetch (NSROUTINGINFO NET#-HI) of OBJECT) (fetch ( -NSROUTINGINFO NET#-LO) of OBJECT))) (SMALLP (* ; "a net as a small number") OBJECT) (FIXP (* ; -"a net as a number") (LOGXOR (\GETBASE OBJECT 0) (\GETBASE OBJECT 1))) (ERROR -"Illegal arg (neither FIXP, SMALLP, nor ETHERPACKET)" OBJECT)))) - -(\NSROUTING.EQUIVFN -(LAMBDA (X Y) (* N.H.Briggs "22-Jun-87 14:34") (SELECTQ (TYPENAME X) (ETHERPACKET (SELECTQ (TYPENAME Y -) (SMALLP (AND (EQ (fetch (NSROUTINGINFO NET#-HI) of X) 0) (EQ (fetch (NSROUTINGINFO NET#-LO) of X) Y) -)) (FIXP (AND (EQ (fetch (NSROUTINGINFO NET#-HI) of X) (\GETBASE Y 0)) (EQ (fetch (NSROUTINGINFO -NET#-LO) of X) (\GETBASE Y 1)))) (ETHERPACKET (AND (EQ (fetch (NSROUTINGINFO NET#-HI) of X) (fetch ( -NSROUTINGINFO NET#-HI) of Y)) (EQ (fetch (NSROUTINGINFO NET#-LO) of X) (fetch (NSROUTINGINFO NET#-LO) -of Y)))) NIL)) (SMALLP (SELECTQ (TYPENAME Y) (SMALLP (EQ X Y)) (FIXP (EQUAL X Y)) (ETHERPACKET (AND ( -EQ (fetch (NSROUTINGINFO NET#-HI) of Y) 0) (EQ (fetch (NSROUTINGINFO NET#-LO) of Y) X))) NIL)) (FIXP ( -SELECTQ (TYPENAME Y) ((SMALLP FIXP) (EQUAL X Y)) (ETHERPACKET (AND (EQ (fetch (NSROUTINGINFO NET#-HI) -of Y) (\GETBASE X 0)) (EQ (fetch (NSROUTINGINFO NET#-LO) of Y) (\GETBASE X 1)))) NIL)) NIL))) - -(PRINTROUTINGTABLE -(LAMBDA (TABLE SORT? FILE) (* edited: "11-Jan-88 21:25") (* N.H.Briggs "14-Dec-87 12:17") (PROG ( -HASHENTRIES) (SELECTQ TABLE (NS (MAPHASH \NS.ROUTING.TABLE (FUNCTION (LAMBDA (X) (push HASHENTRIES X)) -)) (SETQ TABLE (CONS NIL HASHENTRIES))) ((NIL PUP) (SETQ TABLE \PUP.ROUTING.TABLE)) NIL) (RESETFORM ( -RADIX 8) (printout FILE " Net# Gateway #Hops Recent?" T) (for ENTRY in (COND (SORT? ( -SORT (APPEND (CDR TABLE)) (if (EQ SORT? (QUOTE HOPS)) then (FUNCTION (LAMBDA (X Y) (ILESSP (fetch -RTHOPCOUNT of X) (fetch RTHOPCOUNT of Y)))) else T))) (T (CDR TABLE))) bind GATE do (printout FILE -.I6.8 (fetch RTNET# of ENTRY)) (COND ((NOT (SETQ GATE (fetch RTGATEWAY# of ENTRY))) (PRIN1 -" --- " FILE)) ((FIXP GATE) (printout FILE .I9.8 GATE)) (T (SPACES 2 FILE) (PRINTNSHOSTNUMBER -GATE FILE))) (printout FILE 30 .I2 (fetch RTHOPCOUNT of ENTRY) (COND ((fetch RTRECENT of ENTRY) -" Yes") ((TIMEREXPIRED? (fetch RTTIMER of ENTRY)) " timed out") (T " No")) T)) (TERPRI FILE)) -))) -) -(DECLARE: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS \NS.ROUTING.TABLE) -) - (* * LOADCOMP LLNS *before* loading this module so that this record declaration is in effect) - -[DECLARE: EVAL@COMPILE - -(BLOCKRECORD NSROUTINGINFO ((* Format of each entry in a routing info packet, the hashing code relys - on the fact that the net number comes first.) (NET#-HI WORD) (NET#-LO WORD) (#HOPS WORD)) (ACCESSFNS -((NET# (\GETBASEFIXP DATUM 0) (\PUTBASEFIXP DATUM 0 NEWVALUE))))) -] -(DEFINEQ - -(INSTALL -(LAMBDA (FN) (* ; "Edited 21-Jun-87 22:08 by BRIGGS") (if (NOT (GETD (MKATOM (CONCAT FN ".OLD")))) -then (MOVD FN (MKATOM (CONCAT FN ".OLD")) NIL T)) (MOVD (MKATOM (CONCAT FN ".NEW")) FN NIL T))) - -(UNINSTALL -(LAMBDA (FN) (* ; "Edited 21-Jun-87 22:08 by BRIGGS") (if (GETD (MKATOM (CONCAT FN ".OLD"))) then ( -MOVD (MKATOM (CONCAT FN ".OLD")) FN NIL T)))) -) - - - -(* installation utilities) - - - - -(* debugging tools) - -(DEFINEQ - -(ROUTINGPROBE -(LAMBDA NIL (* ; "Edited 17-Jun-87 18:16 by BRIGGS") (LET ((NSOC (OPENNSOCKET -\NS.WKS.RoutingInformation T)) XIP BASE) (SETQ XIP (\FILLINXIP \XIPT.ROUTINGINFO NSOC -BROADCASTNSHOSTNUMBER \NS.WKS.RoutingInformation 0 (IPLUS \XIPOVLEN BYTESPERWORD (UNFOLD -\NS.ROUTINGINFO.WORDS BYTESPERWORD)))) (replace XIPFIRSTDATAWORD of XIP with \XROUTINGINFO.OP.REQUEST) - (SETQ BASE (\ADDBASE (fetch XIPCONTENTS of XIP) 1)) (replace (NSROUTINGINFO NET#) of BASE with -1) ( -replace (NSROUTINGINFO #HOPS) of BASE with \RT.INFINITY) (SENDXIP NSOC XIP)))) -) -(DECLARE: DONTEVAL@LOAD DOCOPY -(UNINTERRUPTABLY (INSTALL (QUOTE \FLUSHNDBS)) (INSTALL (QUOTE \MAP.ROUTING.TABLE)) (INSTALL (QUOTE -\HANDLE.NS.ROUTING.INFO)) (INSTALL (QUOTE \LOCATE.NSNET)) (INSTALL (QUOTE \HANDLE.RAW.XIP)) (INSTALL ( -QUOTE \NSGATELISTENER)) (RESTART.ETHER) (\LOCATE.NSNET -1)) -) -(PUTPROPS NSROUTINGHASH COPYRIGHT ("Xerox Corporation" 1987 1988 1989)) -(DECLARE: DONTCOPY - (FILEMAP (NIL (1158 11765 (\AGE.ROUTING.TABLE.HASH 1168 . 1612) (\HANDLE.NS.ROUTING.INFO.NEW 1614 . -3371) (\HANDLE.RAW.XIP.NEW 3373 . 6241) (\LOCATE.NSNET.NEW 6243 . 6939) (\FLUSHNDBS.NEW 6941 . 7817) ( -\MAP.ROUTING.TABLE.NEW 7819 . 8066) (\NSGATELISTENER.NEW 8068 . 9335) (\NSROUTING.HASHBITSFN 9337 . -9803) (\NSROUTING.EQUIVFN 9805 . 10738) (PRINTROUTINGTABLE 10740 . 11763)) (12235 12617 (INSTALL 12245 - . 12453) (UNINSTALL 12455 . 12615)) (12681 13250 (ROUTINGPROBE 12691 . 13248))))) -STOP diff --git a/obsolete/lispusers/NSTHASIZE b/obsolete/lispusers/NSTHASIZE deleted file mode 100644 index d282cebf..00000000 --- a/obsolete/lispusers/NSTHASIZE +++ /dev/null @@ -1,256 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") -(FILECREATED " 3-Mar-89 18:17:39" {ERINYES}MEDLEY>NSTHASIZE.;1 13450 - - changes to%: (FNS NSTHASIZE) - (VARS NSTHASIZECOMS) - - previous date%: " 8-Apr-86 09:09:30" {DSK}/usr/local/koto/lispusers/nsthasize.;1) - - -(* " -Copyright (c) 1986, 1989 by Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT NSTHASIZECOMS) - -(RPAQQ NSTHASIZECOMS ((INITVARS (GV.TO.NS.REG)) - (FNS CONVERT.GV.TO.NS GV.READFORWARDING READ-GV-NS-MAPPING NSTHASIZE - \GETSTRING \GV.COLLECT.ENTRY \GV.COLLECT.ENTRY.1 - \GV.COLLECT.ENTRY.LIST) - (FILES (LOADCOMP) - MAINTAIN))) - -(RPAQ? GV.TO.NS.REG ) -(DEFINEQ - -(CONVERT.GV.TO.NS - [LAMBDA (X) (* lmm " 7-Apr-86 16:23") - (COND - ((SETQ X (\CHECKNAME X)) - (PROG ([REG (MKATOM (U-CASE (CDR X] - NSREG) - (RETURN (if (EQ REG 'NS) - then (OR (CH.LOOKUP.OBJECT (SUBSTRING (CAR X) - 2 -2)) - (PROGN (PRINTOUT T "[Unable to check " X - " in clearinghouse, assuming correct]") - (SUBSTRING (CAR X) - 2 -2))) - else (OR (SETQ NSREG (ASSOC REG GV.TO.NS.REG)) - (RETURN)) - (LET (NAME) - (OR [CH.LOOKUP.OBJECT (SETQ NAME (CONCAT (CAR X) - ":" - (CDR NSREG] - (PROGN (PRINTOUT T "[Unable to check " NAME - " in clearinghouse, assuming correct]") - NAME]) - -(GV.READFORWARDING - [LAMBDA (X) (* lmm "19-Nov-85 11:20") - (CDR (ASSOC 'Forwarding (GV.READENTRY X NIL '\GV.COLLECT.ENTRY]) - -(READ-GV-NS-MAPPING - [LAMBDA NIL (* lmm " 4-Apr-86 16:56") - (SETQ GV.TO.NS.REG - (RESETLST - (PROG ((STREAM (OPENSTREAM '{INDIGO}GV>GV-NS-MAPPING.TXT 'INPUT 'OLD)) - (RT (COPYREADTABLE 'ORIG)) - LINES) - RESTART - (RESETSAVE NIL (LIST 'CLOSEF? STREAM)) - (SETSEPR NIL NIL RT) - (SETBRK (CHARCODE (CR)) - NIL RT) - (OR (FFILEPOS "GV-to-NS Mappings:" STREAM 0 NIL NIL T) - (ERROR "Couldn't find string GV-to-NS Mappings in " (FULLNAME STREAM))) - (FILEPOS " " STREAM) - [RETURN - (do (SELCHARQ (BIN STREAM) - (TAB) - (CR (RETURN LINES)) - (%. [LET ((LINE (RSTRING STREAM RT))) - (PRINTOUT T LINE T) - (push LINES (LET ((POS (STRPOS " -> " LINE))) - (OR POS (GO BADFORMAT)) - (CONS [MKATOM (U-CASE (SUBSTRING - LINE 1 (SUB1 POS] - (SUBSTRING LINE (PLUS POS 4) - -1] - (BIN STREAM)) - (GO BADFORMAT] - BADFORMAT - (ERROR "bad format on {INDIGO}GV>GV-NS-MAPPING.TXT")))]) - -(NSTHASIZE - [LAMBDA (GVDL NSDL NODELETE) (* ; "Edited 3-Mar-89 18:16 by masinter") - (OR GV.TO.NS.REG (PROGN (PRIN1 "Reading gv to ns mapping ...") - (READ-GV-NS-MAPPING))) (* lmm " 8-Apr-86 09:03") - (SETQ GVDL (OR (\CHECKNAME GVDL) - (ERROR "Invalid grapevine group" GVDL))) - (SETQ NSDL (OR (CH.LOOKUP.OBJECT NSDL) - (ERROR "Invalid NS distribution list" NSDL))) - (LET - (FORWARDING NSADDRESS) - (for X in (CDR (GV.READMEMBERS GVDL)) - do (if (OR (COND - ((SETQ NSADDRESS (CONVERT.GV.TO.NS X)) - (PRINTOUT T X) - T)) - (AND (SETQ FORWARDING (GV.READFORWARDING X)) - (PROGN (PRINTOUT T X " => " FORWARDING) - (if (CDR FORWARDING) - then (PRINTOUT T " -- more than one address." T) - NIL - else T)) - (if [NOT (SETQ NSADDRESS (CONVERT.GV.TO.NS (CAR FORWARDING] - then (PRINTOUT T " not an NS equivalent address." T) - NIL - else T))) - then (PRINTOUT T " => " NSADDRESS "...") - (PROG (VALUE) - LP (if (OR (type? NSNAME (SETQ VALUE (CH.ADD.MEMBER NSDL - 'MEMBERS NSADDRESS))) - (MATCH VALUE WITH (%'ERROR %'UPDATE.ERROR %'NoChange - --))) - then (if (AND NODELETE (OR (NEQ NODELETE 'FIRST) - (NLISTP VALUE))) - then (PRINTOUT T "ok." T) - else (PRINTOUT T "ok, delete: " (GV.REMOVEMEMBER - GVDL X) - T)) - elseif (COND - ((AND (EQ (CAR VALUE) - 'ERROR) - (SELECTQ (CAR (CDR VALUE)) - (CALL.ERROR (SELECTQ (CADDR VALUE) - (TooBusy (PRINTOUT T - " error:" - VALUE - " ... retrying" - " ...")) - (AccessRightsInsufficient - (PRINTOUT T " error:" - VALUE - " will not move..." - T) - (RETURN)) - (HELP VALUE)) - (GO LP)) - (HELP VALUE))) - T)) - then (TERPRI T) - NIL - else (HELP VALUE]) - -(\GETSTRING - [LAMBDA (STREAM LENGTH) (* lmm "19-Nov-85 10:21") - (COND - ((IGREATERP LENGTH \MAXGVSTRING) - (ERROR "stream must be confused - string too long" LENGTH)) - (T (LET ((STRING (ALLOCSTRING LENGTH))) - (AIN STRING 1 LENGTH STREAM) - (COND - ((ODDP LENGTH) - (BIN STREAM))) - STRING]) - -(\GV.COLLECT.ENTRY - [LAMBDA (INSTREAM) (* lmm " 4-Apr-86 16:53") - - (* * Called by GV.READENTRY to parse and display some of what Grapevine sends - back as "the entire database entry" for NAME. - The contents are different for groups, individuals, and dead folk) - - (LET (NAMETYPE (RESULTS)) - (\RECEIVESTAMP INSTREAM T) (* Skip stamp) - (BIN16 INSTREAM) (* Skip component count) - - (* First component is the "prefix" %, which contains, among other things, the - name's type and its "official" name) - - (BIN16 INSTREAM) (* Length of this component) - (\RECEIVESTAMP INSTREAM T) (* Skip stamp) - (SETQ NAMETYPE (BIN16 INSTREAM)) - (\RECEIVERNAME INSTREAM) - (SELECTC NAMETYPE - (\NAMETYPE.INDIVIDUAL - (\SKIPCOMPONENT INSTREAM) (* Skip password) - (SETQ RESULTS (\GV.COLLECT.ENTRY.1 INSTREAM 'ConnectSite RESULTS)) - (SETQ RESULTS (\GV.COLLECT.ENTRY.LIST INSTREAM 'Forwarding RESULTS)) - (SETQ RESULTS (\GV.COLLECT.ENTRY.LIST INSTREAM 'MailboxSites RESULTS))) - (\NAMETYPE.GROUP - (\GV.COLLECT.ENTRY.1 INSTREAM 'Remark RESULTS) - (\MT.SKIPSTRINGLIST INSTREAM) - (\SKIPCOMPONENT INSTREAM) (* Skip stamp list) - (\SKIPCOMPONENT INSTREAM) (* Skip DelMembers) - (\SKIPCOMPONENT INSTREAM) (* Skip stamp list) - (PROGN (* owners) - (\MT.SKIPSTRINGLIST INSTREAM) - (\SKIPCOMPONENT INSTREAM) - (\SKIPCOMPONENT INSTREAM) - (\SKIPCOMPONENT INSTREAM)) - (PROGN (* friends) - (\MT.SKIPSTRINGLIST INSTREAM) - (\SKIPCOMPONENT INSTREAM) - (\SKIPCOMPONENT INSTREAM) - (\SKIPCOMPONENT INSTREAM)) - '((GROUP . T))) - (\NAMETYPE.DEAD - '((DEAD . T))) - NIL]) - -(\GV.COLLECT.ENTRY.1 - [LAMBDA (INSTREAM HEADING RESULTS) (* lmm " 2-Apr-86 12:51") - (COND - ((EQ (BIN16 INSTREAM) - 0) - RESULTS) - (T (CONS (CONS HEADING (LET [(STRLEN (PROGN (\RECEIVESTAMP INSTREAM T) - (* Skip stamp) - (BIN16 INSTREAM] - (LET ((STRING (ALLOCSTRING STRLEN))) - (AIN STRING 1 STRLEN INSTREAM) - (COND - ((ODDP STRLEN) - (BIN INSTREAM))) - STRING))) - RESULTS]) - -(\GV.COLLECT.ENTRY.LIST - [LAMBDA (INSTREAM HEADING RESULTS) (* lmm " 2-Apr-86 12:52") - - (* * return a component consisting of an RList, a stamp list, a "removal" RList - (not interesting) and another stamp list) - - (PROG1 (PROG ((CNT 0) - (NWORDS (BIN16 INSTREAM)) - STRLEN RMAR VAL) - (COND - ((EQ NWORDS 0) - (RETURN RESULTS))) - [do (add CNT 1) - (SETQ STRLEN (BIN16 INSTREAM)) - (BIN16 INSTREAM) (* ignore maxLength) - (push VAL (\GETSTRING INSTREAM STRLEN)) - (SETQ NWORDS (IDIFFERENCE NWORDS (IPLUS (QUOTIENT (ADD1 STRLEN) - 2) - 2))) - (COND - ((ILEQ NWORDS 0) - (RETURN] - (RETURN (CONS (CONS HEADING VAL) - RESULTS))) - (\SKIPCOMPONENT INSTREAM) - (\SKIPCOMPONENT INSTREAM) - (\SKIPCOMPONENT INSTREAM))]) -) - -(FILESLOAD (LOADCOMP) - MAINTAIN) -(PUTPROPS NSTHASIZE COPYRIGHT ("Xerox Corporation" 1986 1989)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (830 13324 (CONVERT.GV.TO.NS 840 . 2194) (GV.READFORWARDING 2196 . 2378) ( -READ-GV-NS-MAPPING 2380 . 4071) (NSTHASIZE 4073 . 8385) (\GETSTRING 8387 . 8814) (\GV.COLLECT.ENTRY -8816 . 11260) (\GV.COLLECT.ENTRY.1 11262 . 12058) (\GV.COLLECT.ENTRY.LIST 12060 . 13322))))) -STOP diff --git a/obsolete/lispusers/OSS-LYRIC-PATCHES b/obsolete/lispusers/OSS-LYRIC-PATCHES deleted file mode 100644 index ad21906f..00000000 --- a/obsolete/lispusers/OSS-LYRIC-PATCHES +++ /dev/null @@ -1,31 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP") -(filecreated "24-Mar-88 18:01:18" {eris}oss>lyric>oss-lyric-patches.\;1 2853 - - |changes| |to:| (vars oss-lyric-patchescoms) - - |previous| |date:| "24-Mar-88 16:56:45" {eris}oss>lyric>lyric-do-patch.\;1) - - -; Copyright (c) 1988 by Xerox Corporation. All rights reserved. - -(prettycomprint oss-lyric-patchescoms) - -(rpaqq oss-lyric-patchescoms ((* |;;| "Patches for some Lyric Common LISP bugs fixed in Medley.") (fns (* |;;| "from CMLSPECIALFORMS") \\do.translate) (functions (* |;;| "from CMLLIST") cl::%mapcar-multiple cl::%fill-slice-from-lists)) -) - - - -(* |;;| "Patches for some Lyric Common LISP bugs fixed in Medley.") - -(defineq - -(\\do.translate -(lambda (vars end-test body sequentialp env) (* \; "Edited 24-Mar-88 16:40 by drc:") (let ((vars-and-initial-values (mapcar vars (function (lambda (x) (cond ((nlistp x) (list x nil)) (t (list (car x) (cadr x)))))))) (subsequent-values (mapcar vars (function (lambda (x) (and (listp x) (cddr x) (list (car x) (caddr x))))))) (tag (gensym))) (and (setq subsequent-values (remove nil subsequent-values)) (setq subsequent-values (cons (cond (sequentialp (quote cl:setq)) (t (quote cl:psetq))) (apply (function append) subsequent-values)))) (cl:multiple-value-bind (body decls) (parse-body body env) (bquote ((\\\, (cond (sequentialp (quote prog*)) (t (quote prog)))) (\\\, vars-and-initial-values) (\\\,@ decls) (\\\, tag) (cond ((\\\, (car end-test)) (return (progn (\\\,@ (cdr end-test)))))) (\\\,@ body) (\\\, subsequent-values) (go (\\\, tag))))))) -) -) -(cl:defun cl::%mapcar-multiple (cl::fn cl::lists) (let ((cl::arg-slice (cl:make-list (length cl::lists)))) (cl:do ((cl::result nil) (cl::result-tail nil) (cl::current-slice cl::arg-slice) cl::element) ((null cl::current-slice) cl::result) (cl:setq cl::current-slice (cl::%fill-slice-from-lists cl::lists cl::arg-slice (car cl::arg-tail))) (cond (cl::current-slice (* \; "There is really more work to do.") (cl:setq cl::element (cl:apply cl::fn cl::current-slice)) (cl::%list-collect cl::result cl::result-tail (list cl::element))))))) -(defmacro cl::%fill-slice-from-lists (cl::lists cl::arg-slice cl::arg-tail-form) (bquote (cl:do ((cl::subslice (\\\, cl::arg-slice) (cdr cl::subslice)) (cl::sublist (\\\, cl::lists) (cdr cl::sublist)) (cl::some-list-empty nil) list) ((null cl::sublist) (cond (cl::some-list-empty (* \; "Ran out of entries in a list.") nil) (t (* \; "still work to do; return it.") (\\\, cl::arg-slice)))) (cl:setq list (car cl::sublist)) (cl:setq cl::some-list-empty (or cl::some-list-empty (null list))) (rplaca cl::subslice (prog1 (\\\, (cl:subst (quote list) (quote cl::arg-tail) cl::arg-tail-form)) (rplaca cl::sublist (cdr list))))))) -(putprops oss-lyric-patches copyright ("Xerox Corporation" 1988)) -(declare\: dontcopy - (filemap (nil (723 1605 (\\do.translate 733 . 1603))))) -stop diff --git a/obsolete/lispusers/PACKED-STRUCTURE b/obsolete/lispusers/PACKED-STRUCTURE deleted file mode 100644 index fc2753bd..00000000 --- a/obsolete/lispusers/PACKED-STRUCTURE +++ /dev/null @@ -1,24 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "XCL-USER") -(il:filecreated "19-Oct-87 14:53:33" il:{erinyes}lyric>packed-structure.\;1 4305 - - il:|changes| il:|to:| (il:setfs logbitp) (il:functions def-packed-structure signed-ldb) - - il:|previous| il:|date:| "29-Sep-87 18:13:33" -il:|{IE:PARC:XEROX}LYRIC>LISPUSERS>PACKED-STRUCTURE.;1|) - - -; Copyright (c) 1987 by Xerox Corporation. All rights reserved. - -(il:prettycomprint il:packed-structurecoms) - -(il:rpaqq il:packed-structurecoms ((il:functions def-packed-structure signed-ldb) (il:setfs logbitp) (il:prop il:makefile-environment il:packed-structure)) -) -(defdefiner def-packed-structure il:structures (name &rest slots) (let* ((*package* (symbol-package name)) (count 0) (max-count 0) (locations)) (labels ((slot-name (slot) (car slot)) (slot-type (slot) (let ((type (getf (cddr slot) (quote :type) t))) (cond ((subtypep type (quote (member nil t))) (quote :boolean)) (t (il:* il:\; " punt for now, this should really coerce other things into stuff that looks like signed or unsigned byte ") type)))) (infix (x y) (intern (format nil "~A-~A" (string x) (string y)))) (slot-location (slot) (cdr (assoc (slot-name slot) locations))) (slot-supplied-p (slot) (infix (slot-name slot) "SUPPLIED-P")) (slot-signed (slot) (and (listp (slot-type slot)) (eq (car (slot-type slot)) (quote signed-byte)))) (slot-size (slot) (let ((type (slot-type slot))) (case type (:boolean 1) (t (ecase (car type) ((unsigned-byte signed-byte) (second type)))))))) (mapc (function (lambda (slot) (when (getf (cddr slot) (quote :overlay)) (setq count 0)) (push (cons (slot-name slot) count) locations) (incf count (slot-size slot)) (setq max-count (max max-count count)))) slots) (il:bquote (progn (deftype (il:\\\, name) nil (quote (unsigned-byte (il:\\\, count)))) (il:\\\,@ (mapcar (function (lambda (s) (il:bquote (defmacro (il:\\\, (infix name (slot-name s))) (x) (il:\\\, (cond ((eq (slot-type s) (quote :boolean)) (il:bquote (il:bquote (logbitp (il:\\\, (quote (il:\\\, (slot-location s)))) (il:\\\, x))))) (t (il:bquote (il:bquote ((il:\\\, (quote (il:\\\, (if (slot-signed s) (quote signed-ldb) (quote ldb))))) (il:\\\, (quote (il:\\\, (byte (slot-size s) (slot-location s))))) (il:\\\, x))))))))))) slots)) (defmacro (il:\\\, (infix "MAKE" name)) (&key (il:\\\,@ (mapcar (function (lambda (s) (list (slot-name s) (second s) (slot-supplied-p s)))) slots)) &aux (value 0)) (il:\\\,@ (mapcar (function (lambda (s) (il:bquote (when (il:\\\, (slot-supplied-p s)) (setq value (il:\\\, (cond ((eq (slot-type s) (quote :boolean)) (il:bquote (il:bquote (logior (if (il:\\\, (il:\\\, (slot-name s))) (il:\\\, (quote (il:\\\, (ash 1 (slot-location s))))) 0) (il:\\\, value))))) ((slot-signed s) (il:bquote (il:bquote (dpb (il:\\\, (il:\\\, (slot-name s))) (il:\\\, (quote (il:\\\, (byte (slot-size s) (slot-location s))))) (il:\\\, value))))) (t (il:bquote (il:bquote (logior (ash (il:\\\, (il:\\\, (slot-name s))) (il:\\\, (quote (il:\\\, (slot-location s))))) (il:\\\, value)))))))))))) slots)) value)))))) -(defun signed-ldb (bytespec integer) (flet ((sign-extend (number position) (if (logbitp (1- position) number) (dpb number (byte position 0) -1) number))) (sign-extend (ldb bytespec integer) (byte-size bytespec)))) -(define-setf-method logbitp (index integer) (multiple-value-bind (temps vals stores store-form access-form) (get-setf-method integer) (il:* il:\; "get SETF method for integer.") (let ((btemp (il:gensym)) (il:* il:\; "Temp var for index") (store (il:gensym)) (il:* il:\; "Temp var for new value") (stemp (first stores)) (il:* il:\; "Temp var for int to store.")) (values (cons btemp temps) (il:* il:\; "Temporary variables.") (cons index vals) (il:* il:\; "Value forms.") (list store) (il:* il:\; "Store variables.") (il:bquote (let (((il:\\\, stemp) (if (il:\\\, store) (logior (il:\\\, access-form) (ash 1 (il:\\\, btemp))) (logandc2 (il:\\\, access-form) (ash 1 (il:\\\, btemp)))))) (il:\\\, store-form) (il:\\\, store))) (il:* il:\; "Storing form") (il:bquote (logbitp (il:\\\, btemp) (il:\\\, access-form))))))) - -(il:putprops il:packed-structure il:makefile-environment (:readtable "XCL" :package "XCL-USER")) -(il:putprops il:packed-structure il:copyright ("Xerox Corporation" 1987)) -(il:declare\: il:dontcopy - (il:filemap (nil))) -il:stop diff --git a/obsolete/lispusers/PACKED-STRUCTURE.LCOM b/obsolete/lispusers/PACKED-STRUCTURE.LCOM deleted file mode 100644 index 2acdf075..00000000 --- a/obsolete/lispusers/PACKED-STRUCTURE.LCOM +++ /dev/null @@ -1 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "XCL-USER") (IL:FILECREATED " 9-Sep-94 14:12:09" ("compiled on " IL:|{DSK}lispusers>PACKED-STRUCTURE.;1| ) "28-Jul-94 17:28:46" IL:|bcompl'd| IL:|in| "Medley 25-Aug-94 ..." IL:|dated| "25-Aug-94 10:02:49") (IL:FILECREATED "19-Oct-87 14:53:33" IL:{ERINYES}LYRIC>PACKED-STRUCTURE.\;1 4305 IL:|changes| IL:|to:| (IL:SETFS LOGBITP) (IL:FUNCTIONS DEF-PACKED-STRUCTURE SIGNED-LDB) IL:|previous| IL:|date:| "29-Sep-87 18:13:33" IL:|{IE:PARC:XEROX}LYRIC>LISPUSERS>PACKED-STRUCTURE.;1|) (IL:PRETTYCOMPRINT IL:PACKED-STRUCTURECOMS) (IL:RPAQQ IL:PACKED-STRUCTURECOMS ((IL:FUNCTIONS DEF-PACKED-STRUCTURE SIGNED-LDB) (IL:SETFS LOGBITP) ( IL:PROP IL:MAKEFILE-ENVIRONMENT IL:PACKED-STRUCTURE))) (DEFDEFINER DEF-PACKED-STRUCTURE IL:STRUCTURES (NAME &REST SLOTS) (LET* ((*PACKAGE* (SYMBOL-PACKAGE NAME)) (COUNT 0) (MAX-COUNT 0) (LOCATIONS)) (LABELS ((SLOT-NAME (SLOT) (CAR SLOT)) (SLOT-TYPE (SLOT) ( LET ((TYPE (GETF (CDDR SLOT) (QUOTE :TYPE) T))) (COND ((SUBTYPEP TYPE (QUOTE (MEMBER NIL T))) (QUOTE :BOOLEAN)) (T (IL:* IL:\; " punt for now, this should really coerce other things into stuff that looks like signed or unsigned byte " ) TYPE)))) (INFIX (X Y) (INTERN (FORMAT NIL "~A-~A" (STRING X) (STRING Y)))) (SLOT-LOCATION (SLOT) ( CDR (ASSOC (SLOT-NAME SLOT) LOCATIONS))) (SLOT-SUPPLIED-P (SLOT) (INFIX (SLOT-NAME SLOT) "SUPPLIED-P") ) (SLOT-SIGNED (SLOT) (AND (LISTP (SLOT-TYPE SLOT)) (EQ (CAR (SLOT-TYPE SLOT)) (QUOTE SIGNED-BYTE)))) (SLOT-SIZE (SLOT) (LET ((TYPE (SLOT-TYPE SLOT))) (CASE TYPE (:BOOLEAN 1) (T (ECASE (CAR TYPE) (( UNSIGNED-BYTE SIGNED-BYTE) (SECOND TYPE)))))))) (MAPC (FUNCTION (LAMBDA (SLOT) (WHEN (GETF (CDDR SLOT) (QUOTE :OVERLAY)) (SETQ COUNT 0)) (PUSH (CONS (SLOT-NAME SLOT) COUNT) LOCATIONS) (INCF COUNT ( SLOT-SIZE SLOT)) (SETQ MAX-COUNT (MAX MAX-COUNT COUNT)))) SLOTS) (IL:BQUOTE (PROGN (DEFTYPE (IL:\\\, NAME) NIL (QUOTE (UNSIGNED-BYTE (IL:\\\, COUNT)))) (IL:\\\,@ (MAPCAR (FUNCTION (LAMBDA (S) (IL:BQUOTE (DEFMACRO (IL:\\\, (INFIX NAME (SLOT-NAME S))) (X) (IL:\\\, (COND ((EQ (SLOT-TYPE S) (QUOTE :BOOLEAN)) (IL:BQUOTE (IL:BQUOTE (LOGBITP (IL:\\\, (QUOTE (IL:\\\, (SLOT-LOCATION S)))) (IL:\\\, X))))) (T ( IL:BQUOTE (IL:BQUOTE ((IL:\\\, (QUOTE (IL:\\\, (IF (SLOT-SIGNED S) (QUOTE SIGNED-LDB) (QUOTE LDB))))) (IL:\\\, (QUOTE (IL:\\\, (BYTE (SLOT-SIZE S) (SLOT-LOCATION S))))) (IL:\\\, X))))))))))) SLOTS)) ( DEFMACRO (IL:\\\, (INFIX "MAKE" NAME)) (&KEY (IL:\\\,@ (MAPCAR (FUNCTION (LAMBDA (S) (LIST (SLOT-NAME S) (SECOND S) (SLOT-SUPPLIED-P S)))) SLOTS)) &AUX (VALUE 0)) (IL:\\\,@ (MAPCAR (FUNCTION (LAMBDA (S) ( IL:BQUOTE (WHEN (IL:\\\, (SLOT-SUPPLIED-P S)) (SETQ VALUE (IL:\\\, (COND ((EQ (SLOT-TYPE S) (QUOTE :BOOLEAN)) (IL:BQUOTE (IL:BQUOTE (LOGIOR (IF (IL:\\\, (IL:\\\, (SLOT-NAME S))) (IL:\\\, (QUOTE (IL:\\\, (ASH 1 (SLOT-LOCATION S))))) 0) (IL:\\\, VALUE))))) ((SLOT-SIGNED S) (IL:BQUOTE (IL:BQUOTE (DPB ( IL:\\\, (IL:\\\, (SLOT-NAME S))) (IL:\\\, (QUOTE (IL:\\\, (BYTE (SLOT-SIZE S) (SLOT-LOCATION S))))) ( IL:\\\, VALUE))))) (T (IL:BQUOTE (IL:BQUOTE (LOGIOR (ASH (IL:\\\, (IL:\\\, (SLOT-NAME S))) (IL:\\\, ( QUOTE (IL:\\\, (SLOT-LOCATION S))))) (IL:\\\, VALUE)))))))))))) SLOTS)) VALUE)))))) (DEFUN SIGNED-LDB (BYTESPEC INTEGER) (FLET ((SIGN-EXTEND (NUMBER POSITION) (IF (LOGBITP (1- POSITION) NUMBER) (DPB NUMBER (BYTE POSITION 0) -1) NUMBER))) (SIGN-EXTEND (LDB BYTESPEC INTEGER) (BYTE-SIZE BYTESPEC)))) (DEFINE-SETF-METHOD LOGBITP (INDEX INTEGER) (MULTIPLE-VALUE-BIND (TEMPS VALS STORES STORE-FORM ACCESS-FORM) (GET-SETF-METHOD INTEGER) (IL:* IL:\; "get SETF method for integer.") (LET ((BTEMP ( IL:GENSYM)) (IL:* IL:\; "Temp var for index") (STORE (IL:GENSYM)) (IL:* IL:\; "Temp var for new value" ) (STEMP (FIRST STORES)) (IL:* IL:\; "Temp var for int to store.")) (VALUES (CONS BTEMP TEMPS) (IL:* IL:\; "Temporary variables.") (CONS INDEX VALS) (IL:* IL:\; "Value forms.") (LIST STORE) (IL:* IL:\; "Store variables.") (IL:BQUOTE (LET (((IL:\\\, STEMP) (IF (IL:\\\, STORE) (LOGIOR (IL:\\\, ACCESS-FORM ) (ASH 1 (IL:\\\, BTEMP))) (LOGANDC2 (IL:\\\, ACCESS-FORM) (ASH 1 (IL:\\\, BTEMP)))))) (IL:\\\, STORE-FORM) (IL:\\\, STORE))) (IL:* IL:\; "Storing form") (IL:BQUOTE (LOGBITP (IL:\\\, BTEMP) (IL:\\\, ACCESS-FORM))))))) (IL:PUTPROPS IL:PACKED-STRUCTURE IL:MAKEFILE-ENVIRONMENT (:READTABLE "XCL" :PACKAGE "XCL-USER")) (IL:PUTPROPS IL:PACKED-STRUCTURE IL:COPYRIGHT ("Xerox Corporation" 1987)) NIL \ No newline at end of file diff --git a/obsolete/lispusers/PATCH-LARGEIPBITMAP b/obsolete/lispusers/PATCH-LARGEIPBITMAP deleted file mode 100644 index 498042aa..00000000 --- a/obsolete/lispusers/PATCH-LARGEIPBITMAP +++ /dev/null @@ -1,111 +0,0 @@ -(FILECREATED "25-Aug-87 14:23:20" {ERINYES}KOTO>PATCH-LARGEIPBITMAP.;1 5638 - - changes to: (VARS PATCH-LARGEIPBITMAPCOMS) - (FNS SHOWBITMAP1.IP)) - - -(* Copyright (c) 1987 by Xerox Corporation. All rights reserved.) - -(PRETTYCOMPRINT PATCH-LARGEIPBITMAPCOMS) - -(RPAQQ PATCH-LARGEIPBITMAPCOMS ((* * Fix problem of SHOWBITMAP1.IP in Koto placing the parts of a - large bitmap in the wrong order) - (FNS SHOWBITMAP1.IP))) - (* * Fix problem of SHOWBITMAP1.IP in Koto placing the parts of a large bitmap in the wrong -order) - -(DEFINEQ - -(SHOWBITMAP1.IP - [LAMBDA (IPSTREAM BITMAP LEFT FIRSTROW XPIXELS YPIXELS SCALEFACTOR ROTATION HEIGHT XBYTES - REGIONBOTTOM) (* N.H.Briggs "25-Aug-87 14:06") - (* jds "13-Jan-86 18:13") - (* ;; -"Move a segment of bitmap to an INTERPRESS file.") (* ;;  -  -"FIRSTROW is the row count -- STARTING FROM THE TOP OF THE BITMAP AS ZERO -- for the first row to be displayed.") - (* ;;  -  -"By the time we get here, XBYTES should have been raised to the next multiple of 32-bits-worth, since that's the required width of packed pixel vectors." -) - (PROG [(TOTALBYTES (ITIMES XBYTES YPIXELS)) - (SCRATCHBM (BITMAPCREATE (CEIL XPIXELS BITSPERCELL) - 1)) - (BMBASE (\ADDBASE (fetch (BITMAP BITMAPBASE) of BITMAP) - (ITIMES (IDIFFERENCE (IPLUS HEIGHT (OR REGIONBOTTOM 0)) - (IPLUS FIRSTROW YPIXELS)) - (fetch (BITMAP BITMAPRASTERWIDTH) of BITMAP] - (APPENDOP.IP IPSTREAM DOSAVESIMPLEBODY) - (APPENDOP.IP IPSTREAM {) (* ;  -  -"Start the SIMPLEBODY for displaying this part of the bitmap.") - (TRANS.IP IPSTREAM) (* ; "Translate to the current position") - (APPENDNUMBER.IP IPSTREAM YPIXELS) (* ;  -  -"For the master, this is the number of pixels in the slow direction") - (APPENDNUMBER.IP IPSTREAM (CEIL XPIXELS BITSPERCELL)) - (* ; "Number of pixels in the master's fast direction" -) - (APPENDINTEGER.IP IPSTREAM 1) (* ; "Reserved for future expansion") - (APPENDINTEGER.IP IPSTREAM 1) - (APPENDINTEGER.IP IPSTREAM 1) - (SELECTQ (IMOD (OR ROTATION 0) - 360) - (0 (* ;  -  -"Bitmaps are really shown on their sides, hanging from the upper left corner (I think--JDS)") - (ROTATE.IP IPSTREAM -90) - (TRANSLATE.IP IPSTREAM 0 (IPLUS FIRSTROW YPIXELS)) - (* ;;  -  -"Push this segment up to its 'true' height -- i.e., The first segment gets pushed up all the way (since it's the top of the bitmap), the next segment gets pushed up HEIGHT-#ofRowsIn1stSeg (to account for the first segment), and so on." -) - (CONCAT.IP IPSTREAM)) - (90 (* ; "need nop") - (TRANSLATE.IP IPSTREAM (IDIFFERENCE HEIGHT (IPLUS FIRSTROW YPIXELS)) - 0) (* ;;  -  -"Push this segment up to its 'true' bottom -- i.e., The first segment gets pushed up to bitmapHeight-HeightOfSegment (since it's the top of the bitmap), the next segment gets pushed up HEIGHT-RowsIn1stSeg-RowsThisSeg (to account for the first segment), and so on." -) - ) - (180 (* ;;  -  -"The translation for this hasn't been tested yet. It may well be the inverse of the rotation-0 correction") - (ROTATE.IP IPSTREAM 90) - (TRANSLATE.IP IPSTREAM 0 (IPLUS FIRSTROW YPIXELS)) - (CONCAT.IP IPSTREAM)) - (270 (* ;;  -  -"The translation for this hasn't been tested yet. It may well be the inverse of the rotation-90 correction") - (ROTATE.IP IPSTREAM 180) - (TRANSLATE.IP IPSTREAM (IDIFFERENCE HEIGHT (IPLUS FIRSTROW YPIXELS)) - 0) - (CONCAT.IP IPSTREAM)) - (ERROR ROTATION - "rotation by other than multiples of 90 degrees not implemented")) - (SCALE.IP IPSTREAM SCALEFACTOR) (* ; "Scale the bitmap to its final size") - (CONCAT.IP IPSTREAM) - (APPENDSEQUENCEDESCRIPTOR.IP IPSTREAM SEQPACKEDPIXELVECTOR (IPLUS 4 TOTALBYTES)) - (APPENDINT.IP IPSTREAM 1 2) - (APPENDINT.IP IPSTREAM (CEIL XPIXELS BITSPERCELL) - 2) (* ;;  -  -"Now put put the bitmap -- each line must be a 32-bit multiple long") - (for Y (XWORDS _ (FOLDHI XBYTES BYTESPERWORD)) from 1 to YPIXELS - do (BITBLT BITMAP (OR LEFT 0) - (IDIFFERENCE (IPLUS (OR REGIONBOTTOM 0) - FIRSTROW YPIXELS) - Y) - SCRATCHBM 0 0 XPIXELS 1 (QUOTE INPUT) - (QUOTE REPLACE)) - (\BOUTS IPSTREAM (fetch (BITMAP BITMAPBASE) of SCRATCHBM) - 0 - (CEIL XBYTES BYTESPERCELL))) - (APPENDOP.IP IPSTREAM MAKEPIXELARRAY) - (APPENDOP.IP IPSTREAM MASKPIXEL) - (APPENDOP.IP IPSTREAM }]) -) -(PUTPROPS PATCH-LARGEIPBITMAP COPYRIGHT ("Xerox Corporation" 1987)) -(DECLARE: DONTCOPY - (FILEMAP (NIL (565 5548 (SHOWBITMAP1.IP 575 . 5546))))) -STOP diff --git a/obsolete/lispusers/PATCH-TWOSIDED b/obsolete/lispusers/PATCH-TWOSIDED deleted file mode 100644 index 265a7bc2..00000000 --- a/obsolete/lispusers/PATCH-TWOSIDED +++ /dev/null @@ -1,169 +0,0 @@ -(FILECREATED " 1-Sep-87 11:23:23" {ERINYES}KOTO>PATCH-TWOSIDED.;1 6479 - - previous date: "15-Oct-86 12:20:47" {QV}LISP>PATCH-TWOSIDED.;1) - - -(* Copyright (c) 1986, 1987 by Xerox Corporation. All rights reserved.) - -(PRETTYCOMPRINT PATCH-TWOSIDEDCOMS) - -(RPAQQ PATCH-TWOSIDEDCOMS ((FNS \NSPRINT.INTERNAL) - (DECLARE: EVAL@COMPILE DONTEVAL@LOAD DONTCOPY (FILES (LOADCOMP) - NSPRINT)))) -(DEFINEQ - -(\NSPRINT.INTERNAL - [LAMBDA (PRINTER OPTIONS TRANSFERFN) (* N.H.Briggs "27-Sep-86 16:31") - - (* * Calls the PRINT program for PRINTER, interpreting OPTIONS as a plist of print options. - TRANSFERFN is a function applied to the transfer stream to actually send the Interpress master) - - - (PROG ((MEDIUM (OR (LISTGET OPTIONS (QUOTE MEDIUM)) - NSPRINT.DEFAULT.MEDIUM)) - (STAPLE? (LISTGET OPTIONS (QUOTE STAPLE?))) - (TWO.SIDED? (EQ 2 (OR (LISTGET OPTIONS (QUOTE #SIDES)) - EMPRESS#SIDES))) - (SENDER.NAME (OR (LISTGET OPTIONS (QUOTE SENDER.NAME)) - (USERNAME NIL NIL T))) - (DOCNAME (OR (LISTGET OPTIONS (QUOTE DOCUMENT.NAME)) - "Document")) - PROPERTIES ATTRIBUTES COURIERSTREAM VALUE PRINTOPTIONS STATUS) - [SETQ ATTRIBUTES (BQUOTE ((PRINT.OBJECT.NAME , DOCNAME) - (PRINT.OBJECT.CREATE.DATE , (OR (LISTGET OPTIONS - (QUOTE - - DOCUMENT.CREATION.DATE)) - (IDATE))) - (SENDER.NAME , SENDER.NAME] - [SETQ PRINTOPTIONS (BQUOTE ((COPY.COUNT , (FIX (OR (LISTGET OPTIONS - (QUOTE #COPIES)) - 1] - (* This "option" seems to be required) - [COND - ((SETQ VALUE (LISTGET OPTIONS (QUOTE RECIPIENT.NAME))) - (push PRINTOPTIONS (LIST (QUOTE RECIPIENT.NAME) - (OR (STRINGP VALUE) - (MKSTRING VALUE] - [COND - ((SETQ VALUE (LISTGET OPTIONS (QUOTE PRIORITY))) - (push PRINTOPTIONS (LIST (QUOTE PRIORITY.HINT) - (SELECTQ VALUE - ((HOLD LOW NORMAL HIGH) - VALUE) - (\ILLEGAL.ARG VALUE] - [COND - ((SETQ VALUE (LISTGET OPTIONS (QUOTE MESSAGE))) - (push PRINTOPTIONS (LIST (QUOTE MESSAGE) - (OR (STRINGP VALUE) - (MKSTRING VALUE] - [COND - ((SETQ VALUE (LISTGET OPTIONS (QUOTE PAGES.TO.PRINT))) - (* A page range to print, (first# last#)) - (COND - ((AND (LISTP VALUE) - (LISTP (CDR VALUE)) - (NULL (CDDR VALUE)) - (SMALLPOSP (CAR VALUE)) - (SMALLPOSP (CADR VALUE))) - (push PRINTOPTIONS (LIST (QUOTE PAGES.TO.PRINT) - VALUE))) - (T (\ILLEGAL.ARG VALUE] - RETRY - (COND - ((NOT (SETQ COURIERSTREAM (\NSPRINT.COURIER.OPEN PRINTER))) - (printout PROMPTWINDOW .TAB0 0 "No response from printer " (fetch NSPRINTERNAME - of PRINTER)) - (DISMISS 5000) - (GO RETRY))) - (RESETSAVE NIL (LIST (FUNCTION \SPP.RESETCLOSE) - COURIERSTREAM)) (* Check the status of the printer.) - (bind (LASTSTATUS _ 0) - do (SETQ STATUS (COURIER.CALL COURIERSTREAM (QUOTE PRINTING) - (QUOTE GET.PRINTER.STATUS) - (QUOTE RETURNERRORS))) - [COND - ((EQ (CAR STATUS) - (QUOTE ERROR)) - (COND - ((NOT (EQUAL STATUS LASTSTATUS)) - (printout PROMPTWINDOW T "[From " (fetch NSPRINTERNAME of PRINTER) - " Error: " - (SUBSTRING (CDR STATUS) - 2 -2) - "; will retry]"))) (* Wait longer for this problem) - (DISMISS 30000)) - ((NEQ (SETQ STATUS (CADR (ASSOC (QUOTE SPOOLER) - STATUS))) - LASTSTATUS) - (SELECTQ STATUS - (Available (RETURN)) - (Busy (printout PROMPTWINDOW T "[From " (fetch NSPRINTERNAME - of PRINTER) - " Status: Spooler busy; will retry]")) - (ERROR "Printer spooler" STATUS] - (SETQ LASTSTATUS STATUS) - (DISMISS 5000)) - [COND - ((OR MEDIUM STAPLE? TWO.SIDED?) (* Check that the printer supports these options.) - (SETQ PROPERTIES (COURIER.CALL COURIERSTREAM (QUOTE PRINTING) - (QUOTE GET.PRINTER.PROPERTIES) - (QUOTE RETURNERRORS))) - (COND - ((EQ (CAR PROPERTIES) - (QUOTE ERROR)) - (SETQ STATUS PROPERTIES) - (GO HANDLE.ERROR))) - [COND - (MEDIUM (COND - ((SETQ VALUE (\NSPRINT.MEDIUM.CHECK MEDIUM - (CADR (ASSOC (QUOTE MEDIA) - PROPERTIES)) - PRINTER)) - (push PRINTOPTIONS (LIST (QUOTE MEDIUM.HINT) - VALUE)) - (SETQ MEDIUM] - [COND - (STAPLE? (COND - ((CADR (ASSOC (QUOTE STAPLE) - PROPERTIES)) - (push PRINTOPTIONS (LIST (QUOTE STAPLE) - T)) - (SETQ STAPLE?)) - (T (printout PROMPTWINDOW .TAB0 0 - "[Printer does not support stapled copies]"] - (COND - (TWO.SIDED? (COND - ((CADR (ASSOC (QUOTE TWO.SIDED) - PROPERTIES)) - (push PRINTOPTIONS (QUOTE (TWO.SIDED T))) - (SETQ TWO.SIDED?)) - (T (printout PROMPTWINDOW .TAB0 0 - "Printer does not support two-sided copies"] - - (* * Finally, send the print document) - - - (SETQ STATUS (COURIER.CALL COURIERSTREAM (QUOTE PRINTING) - (QUOTE PRINT) - TRANSFERFN ATTRIBUTES PRINTOPTIONS (QUOTE RETURNERRORS))) - (COND - ((NEQ (CAR STATUS) - (QUOTE ERROR)) - (RETURN STATUS))) - HANDLE.ERROR - (ERROR (CONCAT "Unexpected error from " (fetch NSPRINTERNAME of PRINTER) - " attempting to print " DOCNAME " -RETURN to try again.") - (CDR STATUS)) - (CLOSEF COURIERSTREAM) - (GO RETRY]) -) -(DECLARE: EVAL@COMPILE DONTEVAL@LOAD DONTCOPY -(FILESLOAD (LOADCOMP) - NSPRINT) -) -(PUTPROPS PATCH-TWOSIDED COPYRIGHT ("Xerox Corporation" 1986 1987)) -(DECLARE: DONTCOPY - (FILEMAP (NIL (433 6305 (\NSPRINT.INTERNAL 443 . 6303))))) -STOP diff --git a/obsolete/lispusers/POSTSCRIPT-old/POSTSCRIPT b/obsolete/lispusers/POSTSCRIPT-old/POSTSCRIPT deleted file mode 100644 index 169d3161..00000000 --- a/obsolete/lispusers/POSTSCRIPT-old/POSTSCRIPT +++ /dev/null @@ -1 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP") (FILECREATED "30-Mar-89 09:18:42" {ERINYES}MEDLEY>POSTSCRIPT>POSTSCRIPT.;6 109842 changes to%: (FNS POSTSCRIPT.INIT \BITBLT.PSC) previous date%: "22-Feb-89 15:28:19" {ERINYES}MEDLEY>POSTSCRIPT>POSTSCRIPT.;5) (* " Copyright (c) 1986, 1987, 1988, 1989 by Beckman Instruments, Inc. All rights reserved. ") (PRETTYCOMPRINT POSTSCRIPTCOMS) (RPAQQ POSTSCRIPTCOMS [(RECORDS BRUSH FONTID ARRAYP PSCFONT \POSTSCRIPTDATA) (FNS CLOSEPOSTSCRIPTSTREAM OPENPOSTSCRIPTSTREAM POSTSCRIPT.BITMAPSCALE POSTSCRIPT.CLOSESTRING POSTSCRIPT.FONTCREATE POSTSCRIPT.FONTSAVAILABLE POSTSCRIPT.GETFONTID POSTSCRIPT.HARDCOPYW POSTSCRIPT.INIT POSTSCRIPT.OUTSTR POSTSCRIPT.PUTBITMAPBYTES POSTSCRIPT.PUTCOMMAND POSTSCRIPT.SHOWACCUM POSTSCRIPT.STARTPAGE POSTSCRIPT.TEDIT POSTSCRIPT.TEXT POSTSCRIPTFILEP PSCFONT.READFONT PSCFONT.SPELLFILE PSCFONT.WRITEFONT READ-AFM-FILE \BITBLT.PSC \BLTSHADE.PSC \CHARWIDTH.PSC \DRAWARC.PSC \DRAWCIRCLE.PSC \DRAWCURVE.PSC \DRAWELLIPSE.PSC \DRAWLINE.PSC \DRAWPOLYGON.PSC \DSPBOTTOMMARGIN.PSC \DSPCLIPPINGREGION.PSC \DSPFONT.PSC \DSPLEFTMARGIN.PSC \DSPLINEFEED.PSC \DSPRESET.PSC \DSPRIGHTMARGIN.PSC \DSPSCALE.PSC \DSPSPACEFACTOR.PSC \DSPTOPMARGIN.PSC \DSPXPOSITION.PSC \DSPYPOSITION.PSC \FILLCIRCLE.PSC \FILLPOLYGON.PSC \MOVETO.PSC \NEWPAGE.PSC \POSTSCRIPT.OUTCHARFN \POSTSCRIPT.PUTCHAR \STRINGWIDTH.PSC \TERPRI.PSC \DSPROTATE.PSC \DSPTRANSLATE.PSC \DRAWPOINT.PSC) (VARS (\POSTSCRIPT.ORIENTATION.MENU (create MENU ITEMS _ '(("Landscape" T "Print this file/document/image in Landscape Orientation" ) ("Portrait" 'NIL "Print this file/document/image in Portrait Orientation" )) TITLE _ "Orientation" CENTERFLG _ T MENUOFFSET _ (create POSITION XCOORD _ -1 YCOORD _ 0) CHANGEOFFSETFLG _ 'Y)) PS.BITMAPARRAY \POSTSCRIPT.JOB.SETUP SlopeMenuItems WeightMenuItems) (CONSTANTS (GOLDEN.RATIO 1.618034)) (INITVARS (POSTSCRIPT.BITMAP.SCALE 1) (POSTSCRIPT.IMAGESIZEFACTOR 1.0) (POSTSCRIPT.PREFER.LANDSCAPE NIL) (POSTSCRIPT.TEXTFILE.LANDSCAPE NIL) (POSTSCRIPT.TEXTURE.SCALE 4) (POSTSCRIPTFONTDIRECTORIES '("{DSK}FONTS>PSC>")) (\POSTSCRIPT.LONGEDGE.SHIFT 0) (\POSTSCRIPT.SHORTEDGE.SHIFT 0) (\POSTSCRIPT.LONGEDGE.PTS (+ (TIMES 72 10.92) \POSTSCRIPT.SHORTEDGE.SHIFT)) (\POSTSCRIPT.SHORTEDGE.PTS (+ (TIMES 72 8.0) \POSTSCRIPT.LONGEDGE.SHIFT)) (\POSTSCRIPT.MAX.WILD.FONTSIZE 72)) [ADDVARS (POSTSCRIPT.FONT.ALIST (HELVETICA . HELVETICA) (TIMESROMAN . TIMES) (TIMESROMAND . TIMES) (COURIER . COURIER) (GACHA . COURIER) (CLASSIC . TIMES) (MODERN . HELVETICA) (CREAM . HELVETICA) (TERMINAL . COURIER) (LOGO . HELVETICA)) [PRINTERTYPES ((POSTSCRIPT) (CANPRINT (POSTSCRIPT)) (STATUS TRUE) (PROPERTIES NILL) (SEND POSTSCRIPT.SEND) (BITMAPSCALE POSTSCRIPT.BITMAPSCALE) (BITMAPFILE (POSTSCRIPT.HARDCOPYW FILE BITMAP SCALEFACTOR REGION ROTATION TITLE] [PRINTFILETYPES (POSTSCRIPT (TEST POSTSCRIPTFILEP) (EXTENSION (PS PSC)) (CONVERSION (TEXT POSTSCRIPT.TEXT TEDIT POSTSCRIPT.TEDIT] (IMAGESTREAMTYPES (POSTSCRIPT (OPENSTREAM OPENPOSTSCRIPTSTREAM) (FONTCREATE POSTSCRIPT.FONTCREATE) (FONTSAVAILABLE POSTSCRIPT.FONTSAVAILABLE) (CREATECHARSET NILL] (GLOBALVARS DEFAULTPRINTINGHOST POSTSCRIPT.BITMAP.SCALE POSTSCRIPT.FONT.ALIST POSTSCRIPT.PREFER.LANDSCAPE POSTSCRIPT.TEXTFILE.LANDSCAPE POSTSCRIPT.TEXTURE.SCALE POSTSCRIPTFONTDIRECTORIES \POSTSCRIPT.JOB.SETUP \POSTSCRIPT.LONGEDGE.PTS \POSTSCRIPT.LONGEDGE.SHIFT \POSTSCRIPT.MAX.WILD.FONTSIZE \POSTSCRIPT.ORIENTATION.MENU \POSTSCRIPT.SHORTEDGE.PTS \POSTSCRIPT.SHORTEDGE.SHIFT \POSTSCRIPTIMAGEOPS) (FILES PS-SEND) (P (POSTSCRIPT.INIT)) (PROP (FILETYPE MAKEFILE-ENVIRONMENT) POSTSCRIPT) (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA) (NLAML) (LAMA POSTSCRIPT.PUTCOMMAND ]) (DECLARE%: EVAL@COMPILE (RECORD BRUSH (BRUSHSHAPE BRUSHSIZE BRUSHCOLOR) BRUSHSHAPE _ 'ROUND BRUSHSIZE _ 1) (RECORD FONTID (FONTIDNAME FONTXFACTOR FONTOBLIQUEFACTOR)) (DATATYPE ARRAYP ((ORIG BITS 1) (NIL BITS 1) (READONLY FLAG) (* ; "probably no READONLY arrays now") (NIL BITS 1) (TYP BITS 4) (BASE POINTER) (LENGTH WORD) (OFFST WORD)) (* ;; "note that while ARRAYP is a DATATYPE, the allocation of it actually happens at MAKEINIT time under INITDATATYPE{NAMES}") ) (RECORD PSCFONT (FID IL-FONTID FIRSTCHAR LASTCHAR ASCENT DESCENT WIDTHS)) (DATATYPE \POSTSCRIPTDATA (POSTSCRIPTFONT (* ;  "The fontdescriptor of the current font") POSTSCRIPTX POSTSCRIPTY POSTSCRIPTLEFTMARGIN POSTSCRIPTRIGHTMARGIN POSTSCRIPTBOTTOMMARGIN POSTSCRIPTTOPMARGIN POSTSCRIPTLINESPACING POSTSCRIPTCOLOR POSTSCRIPTSCALE POSTSCRIPTOPERATION POSTSCRIPTCLIPPINGREGION POSTSCRIPTPAGENUM POSTSCRIPTHEADING POSTSCRIPTHEADINGFONT POSTSCRIPTSPACEFACTOR (* ;  "The expansion factor for spaces (see DSPSPACEFACTOR)") POSTSCRIPTLANDSCAPE (* ;  "T means that the paper is in 'landscape' mode") POSTSCRIPTCHARSTOSHOW (* ;  "T means that the string of chars has already been started") ) POSTSCRIPTSPACEFACTOR _ 1 POSTSCRIPTPAGENUM _ 0) ) (/DECLAREDATATYPE 'ARRAYP '((BITS 1) (BITS 1) FLAG (BITS 1) (BITS 4) POINTER WORD WORD) '((ARRAYP 0 (BITS . 0)) (ARRAYP 0 (BITS . 16)) (ARRAYP 0 (FLAGBITS . 32)) (ARRAYP 0 (BITS . 48)) (ARRAYP 0 (BITS . 67)) (ARRAYP 0 POINTER) (ARRAYP 2 (BITS . 15)) (ARRAYP 3 (BITS . 15))) '4) (/DECLAREDATATYPE '\POSTSCRIPTDATA '(POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER) '((\POSTSCRIPTDATA 0 POINTER) (\POSTSCRIPTDATA 2 POINTER) (\POSTSCRIPTDATA 4 POINTER) (\POSTSCRIPTDATA 6 POINTER) (\POSTSCRIPTDATA 8 POINTER) (\POSTSCRIPTDATA 10 POINTER) (\POSTSCRIPTDATA 12 POINTER) (\POSTSCRIPTDATA 14 POINTER) (\POSTSCRIPTDATA 16 POINTER) (\POSTSCRIPTDATA 18 POINTER) (\POSTSCRIPTDATA 20 POINTER) (\POSTSCRIPTDATA 22 POINTER) (\POSTSCRIPTDATA 24 POINTER) (\POSTSCRIPTDATA 26 POINTER) (\POSTSCRIPTDATA 28 POINTER) (\POSTSCRIPTDATA 30 POINTER) (\POSTSCRIPTDATA 32 POINTER) (\POSTSCRIPTDATA 34 POINTER)) '36) (DEFINEQ (CLOSEPOSTSCRIPTSTREAM [LAMBDA (VSTREAM) (* ; "Edited 20-Jan-88 17:43 by Matt Heffron") (POSTSCRIPT.PUTCOMMAND VSTREAM " savepage restore showpage %%%%Trailer "]) (OPENPOSTSCRIPTSTREAM [LAMBDA (FILE OPTIONS) (* ; "Edited 20-Oct-88 14:45 by Matt Heffron") (LET ([FP (OPENSTREAM (if (AND (STRING-EQUAL (UNPACKFILENAME.STRING FILE 'EXTENSION) "") (STRING-EQUAL (UNPACKFILENAME.STRING FILE 'HOST) "LPT")) then (PACKFILENAME.STRING 'HOST "LPT" 'NAME (UNPACKFILENAME.STRING FILE 'NAME) 'EXTENSION "PS") else FILE) 'OUTPUT NIL '((TYPE POSTSCRIPT) (SEQUENTIAL T] (IMAGEDATA (create \POSTSCRIPTDATA)) LANDSCAPE? FONT IMAGESIZEFACTOR SHORTEDGE LONGEDGE TEMP) (SETFILEINFO FP 'EOL 'CR) (replace (STREAM OUTCHARFN) of FP with '\FILEOUTCHARFN) (printout FP "%%!PS-Adobe-2.0" T "%%%%Title: " (MKSTRING (OR (LISTGET OPTIONS 'DOCUMENT.NAME) FILE)) T "%%%%Creator: PostScript ImageStream Driver by Matt Heffron of Beckman Instruments" T "%%%%CreationDate: " (DATE) T "%%%%For: " (if (STRING-EQUAL INITIALS "Edited:") then (MKSTRING USERNAME) else INITIALS) T "%%%%EndComments" T) (for PJS in \POSTSCRIPT.JOB.SETUP do (PRIN1 PJS FP) (TERPRI FP)) [if (SETQ LANDSCAPE? (CL:GETF OPTIONS 'ROTATION 'DEFAULTNIL)) then (if (EQ LANDSCAPE? 'DEFAULTNIL) then (SETQ LANDSCAPE? (if (EQ POSTSCRIPT.PREFER.LANDSCAPE 'ASK) then (MENU \POSTSCRIPT.ORIENTATION.MENU) else POSTSCRIPT.PREFER.LANDSCAPE] (replace POSTSCRIPTLANDSCAPE of IMAGEDATA with LANDSCAPE?) (if (NOT (AND (SETQ IMAGESIZEFACTOR (LISTGET OPTIONS 'IMAGESIZEFACTOR)) (NUMBERP IMAGESIZEFACTOR) (CL:PLUSP IMAGESIZEFACTOR))) then (SETQ IMAGESIZEFACTOR 1.0)) (if (AND (NUMBERP POSTSCRIPT.IMAGESIZEFACTOR) (CL:PLUSP POSTSCRIPT.IMAGESIZEFACTOR)) then (SETQ IMAGESIZEFACTOR (TIMES IMAGESIZEFACTOR POSTSCRIPT.IMAGESIZEFACTOR))) (PRIN1 "/imagesizefactor " FP) (PRIN1 IMAGESIZEFACTOR FP) (PRIN1 " def" FP) (TERPRI FP) (PRIN1 "%%%%EndSetup" FP) (TERPRI FP) (replace POSTSCRIPTSCALE of IMAGEDATA with 100.0) (SETQ LONGEDGE (FQUOTIENT (FTIMES \POSTSCRIPT.LONGEDGE.PTS 100.0) IMAGESIZEFACTOR)) (SETQ SHORTEDGE (FQUOTIENT (FTIMES \POSTSCRIPT.SHORTEDGE.PTS 100.0) IMAGESIZEFACTOR)) (replace (STREAM IMAGEOPS) of FP with \POSTSCRIPTIMAGEOPS) (replace (STREAM IMAGEDATA) of FP with IMAGEDATA) (replace (STREAM LINELENGTH) of FP with MAX.SMALLP) (replace (STREAM CHARPOSITION) of FP with 0) (replace (STREAM OUTCHARFN) of FP with '\POSTSCRIPT.OUTCHARFN) (if LANDSCAPE? then (\DSPTOPMARGIN.PSC FP (FIXR SHORTEDGE)) (\DSPRIGHTMARGIN.PSC FP (FIXR LONGEDGE)) (replace POSTSCRIPTCLIPPINGREGION of IMAGEDATA with (create REGION LEFT _ 0.0 BOTTOM _ 0.0 WIDTH _ LONGEDGE HEIGHT _ SHORTEDGE)) else (\DSPTOPMARGIN.PSC FP (FIXR LONGEDGE)) (\DSPRIGHTMARGIN.PSC FP (FIXR SHORTEDGE)) (replace POSTSCRIPTCLIPPINGREGION of IMAGEDATA with (create REGION LEFT _ 0.0 BOTTOM _ 0.0 WIDTH _ SHORTEDGE HEIGHT _ LONGEDGE))) (SETQ FONT (FONTCREATE (OR [CAR (MKLIST (LISTGET OPTIONS 'FONTS] DEFAULTFONT) NIL NIL NIL FP)) (if (SETQ TEMP (LISTGET OPTIONS 'HEADING)) then (replace POSTSCRIPTHEADING of IMAGEDATA with TEMP) (replace POSTSCRIPTHEADINGFONT of IMAGEDATA with FONT)) (\DSPLEFTMARGIN.PSC FP 0) (\DSPBOTTOMMARGIN.PSC FP 0) (\DSPFONT.PSC FP FONT) (\DSPLINEFEED.PSC FP (IMINUS (fetch (FONTDESCRIPTOR \SFHeight) of FONT))) (POSTSCRIPT.STARTPAGE FP) FP]) (POSTSCRIPT.BITMAPSCALE [LAMBDA (WIDTH HEIGHT) (* ; "Edited 20-Oct-88 14:48 by Matt Heffron") (LET* ([MINDIMP (MIN (FQUOTIENT \POSTSCRIPT.LONGEDGE.PTS (SETQ HEIGHT (TIMES HEIGHT POSTSCRIPT.BITMAP.SCALE ))) (FQUOTIENT \POSTSCRIPT.SHORTEDGE.PTS (SETQ WIDTH (TIMES WIDTH POSTSCRIPT.BITMAP.SCALE ] (MINDIML (MIN (FQUOTIENT \POSTSCRIPT.SHORTEDGE.PTS HEIGHT) (FQUOTIENT \POSTSCRIPT.LONGEDGE.PTS WIDTH))) (PPL (if (EQ POSTSCRIPT.PREFER.LANDSCAPE 'ASK) then (MENU \POSTSCRIPT.ORIENTATION.MENU) else POSTSCRIPT.PREFER.LANDSCAPE)) MINDIM OTHERDIM SF1 SF2) (if PPL then (SETQ MINDIM MINDIML) (SETQ OTHERDIM MINDIMP) else (SETQ MINDIM MINDIMP) (SETQ OTHERDIM MINDIML)) (SETQ SF1 (if (GREATERP MINDIM 1) then 1 elseif (GREATERP MINDIM 0.75) then 0.75 elseif (GREATERP MINDIM 0.5) then 0.5 elseif (GREATERP MINDIM 0.25) then 0.25 else MINDIM)) (SETQ SF2 (if (GREATERP OTHERDIM 1) then 1 elseif (GREATERP OTHERDIM 0.75) then 0.75 elseif (GREATERP OTHERDIM 0.5) then 0.5 elseif (GREATERP OTHERDIM 0.25) then 0.25 else OTHERDIM)) (if (AND (LESSP SF1 1) (LESSP SF1 SF2)) then (CONS SF2 (NOT PPL)) else (CONS SF1 PPL]) (POSTSCRIPT.CLOSESTRING [LAMBDA (STREAM) (* ; "Edited 12-Jan-88 12:33 by Matt Heffron") (LET ((IMAGEDATA (fetch IMAGEDATA of STREAM))) (if (fetch POSTSCRIPTCHARSTOSHOW of IMAGEDATA) then (POSTSCRIPT.OUTSTR STREAM ") ") (replace POSTSCRIPTCHARSTOSHOW of IMAGEDATA with NIL) T else NIL]) (POSTSCRIPT.FONTCREATE [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE) (* ; "Edited 12-Jan-88 12:36 by Matt Heffron") (LET (UNITFONT FULLNAME SCALEFONTP PSCFD ASCENT DESCENT FIXPWIDTHS CHARSETINFO0 WIDTHSBLOCK FD FACECHANGED (WEIGHT (CAR FACE)) (SLOPE (CADR FACE)) (EXPANSION (CADDR FACE))) (* ;;  "Ignore rotations, it is **MUCH** easier to rotate the Postscript stream user space coordinates.") (if (EQ SIZE 1) then (* ;; "Since a 1 point font is rediculously small, and it is the standard size for Postscript font info, a 1 point font is presumed to be the unit size Postscript font info") (if (SETQ FULLNAME (PSCFONT.SPELLFILE FAMILY SIZE FACE ROTATION DEVICE)) then (SETQ FACECHANGED NIL) elseif (AND (NEQ EXPANSION 'REGULAR) (SETQ FULLNAME (PSCFONT.SPELLFILE FAMILY SIZE (LIST WEIGHT SLOPE 'REGULAR) ROTATION DEVICE))) then (SETQ FACECHANGED T) elseif (AND (EQ SLOPE 'ITALIC) (SETQ FULLNAME (PSCFONT.SPELLFILE FAMILY SIZE (LIST WEIGHT 'REGULAR EXPANSION) ROTATION DEVICE))) then (SETQ FACECHANGED T) elseif (AND (NEQ EXPANSION 'REGULAR) (EQ SLOPE 'ITALIC) (SETQ FULLNAME (PSCFONT.SPELLFILE FAMILY SIZE (LIST WEIGHT 'REGULAR 'REGULAR) ROTATION DEVICE))) then (SETQ FACECHANGED T) elseif (AND (NEQ WEIGHT 'MEDIUM) (SETQ FULLNAME (PSCFONT.SPELLFILE FAMILY SIZE (LIST 'MEDIUM SLOPE EXPANSION) ROTATION DEVICE))) then (SETQ FACECHANGED T) elseif (AND (NEQ WEIGHT 'MEDIUM) (NEQ EXPANSION 'REGULAR) (SETQ FULLNAME (PSCFONT.SPELLFILE FAMILY SIZE (LIST 'MEDIUM SLOPE 'REGULAR) ROTATION DEVICE))) then (SETQ FACECHANGED T) elseif (AND (NEQ WEIGHT 'MEDIUM) (EQ SLOPE 'ITALIC) (SETQ FULLNAME (PSCFONT.SPELLFILE FAMILY SIZE (LIST 'MEDIUM 'REGULAR EXPANSION) ROTATION DEVICE))) then (SETQ FACECHANGED T) elseif (AND (NEQ WEIGHT 'MEDIUM) (NEQ EXPANSION 'REGULAR) (EQ SLOPE 'ITALIC) (SETQ FULLNAME (PSCFONT.SPELLFILE FAMILY SIZE (LIST 'MEDIUM 'REGULAR 'REGULAR) ROTATION DEVICE))) then (SETQ FACECHANGED T)) [if FULLNAME then (SETQ PSCFD (PSCFONT.READFONT FULLNAME)) (SETQ ASCENT (FIXR (TIMES (fetch (PSCFONT ASCENT) of PSCFD) 0.1))) (SETQ DESCENT (FIXR (TIMES (fetch (PSCFONT DESCENT) of PSCFD) 0.1))) (if FACECHANGED then (replace (PSCFONT IL-FONTID) of PSCFD with (POSTSCRIPT.GETFONTID (fetch (PSCFONT FID) of PSCFD) WEIGHT SLOPE EXPANSION] elseif (SETQ UNITFONT (FONTCREATE FAMILY 1 FACE ROTATION DEVICE T)) then (SETQ PSCFD (fetch (FONTDESCRIPTOR FONTDEVICESPEC) of UNITFONT)) (* ;; "Scale the ASCENT and DESCENT") (SETQ ASCENT (FIXR (TIMES SIZE (fetch (PSCFONT ASCENT) of PSCFD) 0.1))) (SETQ DESCENT (FIXR (TIMES SIZE (fetch (PSCFONT DESCENT) of PSCFD) 0.1))) (SETQ SCALEFONTP T) else (* ;; "Here for fonts that only come in specific sizes. Their info is not scaled like built-in Postscript fonts, it is already correct for this pointsize.") (if (SETQ FULLNAME (PSCFONT.SPELLFILE FAMILY SIZE FACE ROTATION DEVICE)) then (SETQ PSCFD (PSCFONT.READFONT FULLNAME)) (SETQ ASCENT (fetch (PSCFONT ASCENT) of PSCFD)) (SETQ DESCENT (fetch (PSCFONT DESCENT) of PSCFD)) (SETQ SCALEFONTP NIL))) (if PSCFD then (SETQ FIXPWIDTHS (fetch (PSCFONT WIDTHS) of PSCFD)) (SETQ CHARSETINFO0 (create CHARSETINFO)) (SETQ WIDTHSBLOCK (fetch (CHARSETINFO WIDTHS) of CHARSETINFO0)) (SETQ FD (create FONTDESCRIPTOR FONTDEVICESPEC _ PSCFD FONTSCALE _ 100.0 FONTDEVICE _ DEVICE FONTFAMILY _ FAMILY FONTSIZE _ SIZE FONTFACE _ FACE ROTATION _ 0 \SFHeight _ (IPLUS ASCENT DESCENT) \SFAscent _ ASCENT \SFDescent _ DESCENT \SFRWidths _ WIDTHSBLOCK FONTIMAGEWIDTHS _ WIDTHSBLOCK)) (replace (CHARSETINFO IMAGEWIDTHS) of CHARSETINFO0 with WIDTHSBLOCK) (replace (CHARSETINFO CHARSETASCENT) of CHARSETINFO0 with ASCENT) (replace (CHARSETINFO CHARSETDESCENT) of CHARSETINFO0 with DESCENT) [if SCALEFONTP then [for CH from 0 to 255 do (\FSETWIDTH WIDTHSBLOCK CH (FIXR (TIMES SIZE (ELT FIXPWIDTHS CH) 0.1] else (for CH from 0 to 255 do (\FSETWIDTH WIDTHSBLOCK CH (ELT FIXPWIDTHS CH] (\SETCHARSETINFO (fetch FONTCHARSETVECTOR of FD) 0 CHARSETINFO0) FD else NIL]) (POSTSCRIPT.FONTSAVAILABLE [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE) (* ; "Edited 12-Jan-88 13:04 by Matt Heffron") (* ;; "the filtering code was borrowed from Richard Burton's \SEARCHINTERPRESSFONTS. Note that without it [HELVETICA * (MEDIUM REGULAR REGULAR)] would pick up [HELVETICA-NARROW * (MEDIUM REGULAR REGULAR)] as well.") (LET ((PATTERN (\FONTFILENAME (OR (CDR (ASSOC FAMILY POSTSCRIPT.FONT.ALIST)) FAMILY) SIZE FACE 'PSCFONT)) [INVERSE.ALIST (for PAIR in POSTSCRIPT.FONT.ALIST collect (CONS (CDR PAIR) (CAR PAIR] FONTSAVAILABLE) (SETQ FONTSAVAILABLE (for FD in [for DIRECTORY in POSTSCRIPTFONTDIRECTORIES join (for FILE in (DIRECTORY (CONCAT DIRECTORY PATTERN)) collect (LET* ((RAWFD (\FONTINFOFROMFILENAME FILE DEVICE) ) (RAWNAME (CAR RAWFD))) (RPLACA RAWFD (OR (CDR (ASSOC RAWNAME INVERSE.ALIST)) RAWNAME] when (AND (OR (EQ FAMILY '*) (EQ FAMILY (CAR FD))) (OR (EQ SIZE '*) (EQ SIZE (CADR FD)) (EQ (CADR FD) 1)) (OR (EQ FACE '*) (EQUAL FACE (CADDR FD)) (EQUAL [CDR (ASSOC FACE '((MRR MEDIUM REGULAR REGULAR) (STANDARD MEDIUM REGULAR REGULAR) (MIR MEDIUM ITALIC REGULAR) (ITALIC MEDIUM ITALIC REGULAR) (BRR BOLD REGULAR REGULAR) (BOLD BOLD REGULAR REGULAR) (BIR BOLD ITALIC REGULAR) (BOLDITALIC BOLD ITALIC REGULAR] (CADDR FD))) (NOT (MEMBER FD $$VAL))) collect FD)) (if (EQ SIZE '*) then (* ;;; "If SIZE was wildcarded, then provide list of pointsizes for Postscript scaled fonts (those with a 1 point descriptor file)") (for FD in FONTSAVAILABLE join (if (EQ 1 (CADR FD)) then (CONS FD (for NF in (for S from 2 to \POSTSCRIPT.MAX.WILD.FONTSIZE collect (LET ((NFD (COPY FD))) (RPLACA (CDR NFD) S) NFD)) unless (MEMBER NF FONTSAVAILABLE) collect NF)) else (LIST FD))) else FONTSAVAILABLE]) (POSTSCRIPT.GETFONTID [LAMBDA (FID WEIGHT SLOPE EXPANSION) (* ; "Edited 12-Jan-88 12:58 by Matt Heffron") (LET (FONTID) (SETQ FONTID (create FONTID FONTIDNAME _ (CAR FID) FONTXFACTOR _ 1.0 FONTOBLIQUEFACTOR _ 0.0)) [if (AND (NEQ (CADDR FID) SLOPE) (EQ SLOPE 'ITALIC)) then (replace FONTOBLIQUEFACTOR of FONTID with (CONSTANT (TAN 7.0] (if (AND (NEQ (CADR FID) WEIGHT) (EQ WEIGHT 'BOLD)) then (* ; "Fake bold by slight expansion.") (replace FONTXFACTOR of FONTID with 1.1)) [if (NEQ EXPANSION 'REGULAR) then (replace FONTXFACTOR of FONTID with (TIMES (fetch FONTXFACTOR of FONTID) (if (EQ EXPANSION 'COMPRESSED) then (CONSTANT (QUOTIENT 1.0 GOLDEN.RATIO)) else GOLDEN.RATIO] FONTID]) (POSTSCRIPT.HARDCOPYW [LAMBDA (FILE BITMAP SCALEFACTOR REGION Landscape? TITLE) (* ; "Edited 4-Feb-88 13:18 by Matt Heffron") (SPAWN.MOUSE) (* ;  "(SETQ Landscape? T) ;Must be landscape to prevent printer hang??") (LET ((STREAM (OPENPOSTSCRIPTSTREAM FILE (LIST 'DOCUMENT.NAME TITLE 'ROTATION Landscape? 'IMAGESIZEFACTOR SCALEFACTOR))) SCLIP W H SCALE) [SETQ W (fetch (REGION WIDTH) of (SETQ SCLIP (DSPCLIPPINGREGION NIL STREAM] (SETQ H (fetch (REGION HEIGHT) of SCLIP)) [if REGION then (SETQ REGION (COPY REGION)) (* ; "In case we need to change it.") [if (< (BITMAPWIDTH BITMAP) (+ (fetch (REGION LEFT) of REGION) (fetch (REGION WIDTH) of REGION))) then (replace (REGION WIDTH) of REGION with (- (BITMAPWIDTH BITMAP) (fetch (REGION LEFT) of REGION] [if (< (BITMAPHEIGHT BITMAP) (+ (fetch (REGION BOTTOM) of REGION) (fetch (REGION HEIGHT) of REGION))) then (replace (REGION HEIGHT) of REGION with (- (BITMAPHEIGHT BITMAP) (fetch (REGION BOTTOM) of REGION] else (SETQ REGION (create REGION LEFT _ 0 BOTTOM _ 0 WIDTH _ (BITMAPWIDTH BITMAP) HEIGHT _ (BITMAPHEIGHT BITMAP] (SETQ SCALE (TIMES POSTSCRIPT.BITMAP.SCALE (DSPSCALE NIL STREAM))) (BITBLT BITMAP (fetch (REGION LEFT) of REGION) (fetch (REGION BOTTOM) of REGION) STREAM (QUOTIENT (DIFFERENCE W (TIMES SCALE (fetch (REGION WIDTH) of REGION))) 2) (QUOTIENT (DIFFERENCE H (TIMES SCALE (fetch (REGION HEIGHT) of REGION))) 2) (fetch (REGION WIDTH) of REGION) (fetch (REGION HEIGHT) of REGION) 'INPUT 'REPLACE) (CLOSEF STREAM) (FULLNAME STREAM]) (POSTSCRIPT.INIT [LAMBDA NIL (* ; "Edited 29-Mar-89 11:21 by snow") [MAPC [CL:REMOVE-DUPLICATES (NCONC (for FD in FONTDEFS join (for FP in (CDR (ASSOC 'FONTPROFILE (CDR FD))) collect (CAR FP))) '(FONT7 FONT6 FONT5 FONT4 FONT3 FONT2 FONT1 BOLDFONT LITTLEFONT BIGFONT PRETTYCOMFONT COMMENTFONT USERFONT SYSTEMFONT CLISPFONT LAMBDAFONT CHANGEFONT DEFAULTFONT] (FUNCTION (LAMBDA (CLASS) (LET (COPYFD OLDPSCFD) (if (BOUNDP CLASS) then (SETQ CLASS (EVALV CLASS)) (if (TYPEP CLASS 'FONTCLASS) then (SETQ COPYFD (OR (fetch (FONTCLASS PRESSFD) of CLASS) (fetch (FONTCLASS INTERPRESSFD) of CLASS) (fetch (FONTCLASS DISPLAYFD) of CLASS))) (if (SETQ OLDPSCFD (ASSOC 'POSTSCRIPT (fetch (FONTCLASS OTHERFDS) of CLASS))) then [if (NOT (CDR OLDPSCFD)) then (RPLACD OLDPSCFD (if (LISTP COPYFD) then COPYFD else (FONTUNPARSE COPYFD] else (push (fetch (FONTCLASS OTHERFDS) of CLASS) (CONS 'POSTSCRIPT (if (LISTP COPYFD) then COPYFD else (FONTUNPARSE COPYFD] (SETQ \POSTSCRIPTIMAGEOPS (create IMAGEOPS IMAGETYPE _ 'POSTSCRIPT IMCLOSEFN _ (FUNCTION CLOSEPOSTSCRIPTSTREAM) IMXPOSITION _ (FUNCTION \DSPXPOSITION.PSC) IMYPOSITION _ (FUNCTION \DSPYPOSITION.PSC) IMMOVETO _ (FUNCTION \MOVETO.PSC) IMFONT _ (FUNCTION \DSPFONT.PSC) IMLEFTMARGIN _ (FUNCTION \DSPLEFTMARGIN.PSC) IMRIGHTMARGIN _ (FUNCTION \DSPRIGHTMARGIN.PSC) IMLINEFEED _ (FUNCTION \DSPLINEFEED.PSC) IMDRAWLINE _ (FUNCTION \DRAWLINE.PSC) IMDRAWCURVE _ (FUNCTION \DRAWCURVE.PSC) IMDRAWCIRCLE _ (FUNCTION \DRAWCIRCLE.PSC) IMDRAWELLIPSE _ (FUNCTION \DRAWELLIPSE.PSC) IMFILLCIRCLE _ (FUNCTION \FILLCIRCLE.PSC) IMBLTSHADE _ (FUNCTION \BLTSHADE.PSC) IMBITBLT _ (FUNCTION \BITBLT.PSC) IMNEWPAGE _ (FUNCTION \NEWPAGE.PSC) IMSCALE _ (FUNCTION \DSPSCALE.PSC) IMTERPRI _ (FUNCTION \TERPRI.PSC) IMTOPMARGIN _ (FUNCTION \DSPTOPMARGIN.PSC) IMBOTTOMMARGIN _ (FUNCTION \DSPBOTTOMMARGIN.PSC) IMSPACEFACTOR _ (FUNCTION \DSPSPACEFACTOR.PSC) IMFONTCREATE _ 'POSTSCRIPT IMCLIPPINGREGION _ (FUNCTION \DSPCLIPPINGREGION.PSC) IMRESET _ (FUNCTION \DSPRESET.PSC) IMDRAWPOLYGON _ (FUNCTION \DRAWPOLYGON.PSC) IMFILLPOLYGON _ (FUNCTION \FILLPOLYGON.PSC) IMSTRINGWIDTH _ (FUNCTION \STRINGWIDTH.PSC) IMCHARWIDTH _ (FUNCTION \CHARWIDTH.PSC) IMDRAWARC _ (FUNCTION \DRAWARC.PSC) IMROTATE _ (FUNCTION \DSPROTATE.PSC) IMTRANSLATE _ (FUNCTION \DSPTRANSLATE.PSC) IMDRAWPOINT _ (FUNCTION \DRAWPOINT.PSC) IMSCALEDBITBLT _ (FUNCTION \BITBLT.PSC]) (POSTSCRIPT.OUTSTR [LAMBDA (STREAM STRING) (* ; "Edited 13-Apr-88 16:33 by Matt Heffron") (if (OR (LITATOM STRING) (STRINGP STRING) (AND (ZEROP STRING) (SETQ STRING "0.0"))) then [for CI from 1 to (NCHARS STRING) do (BOUT STREAM (LOGAND 255 (NTHCHARCODE STRING CI] else (for CC in (CHCON STRING) do (BOUT STREAM (LOGAND 255 CC]) (POSTSCRIPT.PUTBITMAPBYTES [LAMBDA (STREAM BITMAP DELIMFLG) (DECLARE (GLOBALVARS PS.BITMAPARRAY) (LOCALVARS . T)) (* ; "Edited 27-Jan-89 11:16 by Matt Heffron") (LET ((BMBASE (fetch BITMAPBASE of BITMAP)) (BYTESPERROW (LRSH (IPLUS (fetch BITMAPWIDTH of BITMAP) 7) 3)) (BYTEOFFSETPERROW (LSH (fetch BITMAPRASTERWIDTH of BITMAP) 1)) (HEIGHT (fetch BITMAPHEIGHT of BITMAP)) (POS 0) (BYTE) (PS.BITMAPARRAYBASE (fetch (ARRAYP BASE) of PS.BITMAPARRAY))) (* ;; "PS.BITMAPARRAY code speedup by Will Snow @ Envos") (if DELIMFLG then (POSTSCRIPT.OUTSTR STREAM " < ")) (for R from (SUB1 HEIGHT) to 0 by -1 as ROWOFFSET from (ITIMES (SUB1 HEIGHT) BYTEOFFSETPERROW) by (IMINUS BYTEOFFSETPERROW) do (for B from 1 to BYTESPERROW as BYTEOFFSET from ROWOFFSET by 1 do (if (IGEQ POS 254) then (\BUFFERED.BOUT STREAM (CHARCODE EOL)) (SETQ POS 0)) (SETQ BYTE (\GETBASEBYTE BMBASE BYTEOFFSET)) [\BUFFERED.BOUT STREAM (\GETBASEBYTE PS.BITMAPARRAYBASE (LOGAND 15 (LRSH BYTE 4] (\BUFFERED.BOUT STREAM (\GETBASEBYTE PS.BITMAPARRAYBASE (LOGAND 15 BYTE))) (SETQ POS (IPLUS POS 2))) (\BUFFERED.BOUT STREAM (CHARCODE EOL)) (SETQ POS 0)) (if DELIMFLG then (POSTSCRIPT.OUTSTR STREAM "> "]) (POSTSCRIPT.PUTCOMMAND [LAMBDA S.STRS (* ; "Edited 12-Jan-88 13:01 by Matt Heffron") (LET ((STREAM (ARG S.STRS 1))) (POSTSCRIPT.SHOWACCUM STREAM) (for STR# from 2 to S.STRS do (POSTSCRIPT.OUTSTR STREAM (ARG S.STRS STR# ]) (POSTSCRIPT.SHOWACCUM [LAMBDA (STREAM) (* ; "Edited 12-Jan-88 16:06 by Matt Heffron") (if (POSTSCRIPT.CLOSESTRING STREAM) then (LET* ((IMAGEDATA (fetch IMAGEDATA of STREAM)) (SPACEFACTOR (fetch POSTSCRIPTSPACEFACTOR of IMAGEDATA)) WIDTH) (if (EQP SPACEFACTOR 1) then (POSTSCRIPT.OUTSTR STREAM "show ") else (replace POSTSCRIPTSPACEFACTOR of IMAGEDATA with 1) (SETQ WIDTH (\CHARWIDTH.PSC STREAM (CHARCODE SPACE))) (replace POSTSCRIPTSPACEFACTOR of IMAGEDATA with SPACEFACTOR) (POSTSCRIPT.OUTSTR STREAM (TIMES WIDTH (DIFFERENCE SPACEFACTOR 1)) ) (POSTSCRIPT.OUTSTR STREAM " 0 ") (POSTSCRIPT.OUTSTR STREAM (CHARCODE SPACE)) (POSTSCRIPT.OUTSTR STREAM " 4 -1 roll widthshow "]) (POSTSCRIPT.STARTPAGE [LAMBDA (STREAM) (* ; "Edited 9-Sep-88 10:48 by Matt Heffron") (LET* ((IMAGEDATA (fetch (STREAM IMAGEDATA) of STREAM)) (CLIPREGN (fetch POSTSCRIPTCLIPPINGREGION of IMAGEDATA)) (CFONT (fetch POSTSCRIPTFONT of IMAGEDATA)) LEFT BOTTOM WIDTH HEIGHT) (POSTSCRIPT.PUTCOMMAND STREAM " %%%%BeginPageSetup ") (if (fetch POSTSCRIPTLANDSCAPE of IMAGEDATA) then (POSTSCRIPT.PUTCOMMAND STREAM "xmax ymin translate 90 rotate ") (if (OR (NOT (ZEROP \POSTSCRIPT.SHORTEDGE.SHIFT)) (NOT (ZEROP \POSTSCRIPT.LONGEDGE.SHIFT))) then (POSTSCRIPT.PUTCOMMAND STREAM \POSTSCRIPT.SHORTEDGE.SHIFT " " (MINUS \POSTSCRIPT.LONGEDGE.SHIFT) " translate ")) else (if (AND (ZEROP \POSTSCRIPT.LONGEDGE.SHIFT) (ZEROP \POSTSCRIPT.SHORTEDGE.SHIFT)) then (POSTSCRIPT.PUTCOMMAND STREAM "xmin ymin translate ") else (POSTSCRIPT.PUTCOMMAND STREAM "xmin " \POSTSCRIPT.LONGEDGE.SHIFT " add ymin " \POSTSCRIPT.SHORTEDGE.SHIFT " add translate "))) (POSTSCRIPT.PUTCOMMAND STREAM "0.01 imagesizefactor mul 0.01 imagesizefactor mul scale %%%%EndPageSetup /savepage save def") (* ;; "Since the clipping region is per page in Postscript by virtue of the savepage ..., reset the current clipping region for this page.") (SETQ LEFT (fetch LEFT of CLIPREGN)) (SETQ BOTTOM (fetch BOTTOM of CLIPREGN)) (SETQ WIDTH (fetch (REGION WIDTH) of CLIPREGN)) (SETQ HEIGHT (fetch (REGION HEIGHT) of CLIPREGN)) (POSTSCRIPT.PUTCOMMAND STREAM " newpath " LEFT " " BOTTOM " mto " WIDTH " 0 rlineto 0 " HEIGHT " rlineto " (IMINUS WIDTH) " 0 rlineto closepath clip newpath ") (* ;; "It seems that Lisp depends on the current font being carried over from page to page, so reset it explicitly here.") (replace POSTSCRIPTFONT of IMAGEDATA with NIL) (* ;  "There is no FONT at the beginning of a page.") (if (fetch POSTSCRIPTHEADING of IMAGEDATA) then (* ;; "Here we handle headings. This imitates the INTERPRESS code.") (\DSPFONT.PSC STREAM (fetch POSTSCRIPTHEADINGFONT of IMAGEDATA)) (\DSPRESET.PSC STREAM) (PRIN3 (fetch POSTSCRIPTHEADING of IMAGEDATA) STREAM) (RELMOVETO 7200 0 STREAM) (* ; "Skip an inch before page number") (PRIN3 "Page " STREAM) (PRIN3 (CL:INCF (fetch POSTSCRIPTPAGENUM of IMAGEDATA)) STREAM) (\TERPRI.PSC STREAM) (* ; "Skip 2 lines") (\TERPRI.PSC STREAM) (\DSPFONT.PSC STREAM CFONT) else (\DSPFONT.PSC STREAM CFONT) (\DSPRESET.PSC STREAM]) (POSTSCRIPT.TEDIT [LAMBDA (FILE PFILE) (* ; "Edited 12-Jan-88 13:03 by Matt Heffron") (SETQ FILE (OPENTEXTSTREAM FILE)) (TEDIT.FORMAT.HARDCOPY FILE PFILE T NIL NIL NIL 'POSTSCRIPT) (CLOSEF? FILE) PFILE]) (POSTSCRIPT.TEXT [LAMBDA (FILE PSCFILE FONTS HEADING TABS) (* ; "Edited 12-Jan-88 13:03 by Matt Heffron") (TEXTTOIMAGEFILE FILE PSCFILE 'POSTSCRIPT FONTS HEADING TABS (if POSTSCRIPT.TEXTFILE.LANDSCAPE then '(ROTATION T) else NIL]) (POSTSCRIPTFILEP [LAMBDA (FILE) (* ; "Edited 4-Apr-88 16:31 by Matt Heffron") (OR (CL:MEMBER (UNPACKFILENAME.STRING FILE 'EXTENSION) '("PS" "PSC") :TEST (FUNCTION STRING-EQUAL)) (CL:UNWIND-PROTECT [PROGN (SETQ FILE (OPENSTREAM FILE 'INPUT)) (AND (EQ (BIN FILE) (CHARCODE %%)) (EQ (BIN FILE) (CHARCODE !] (CLOSEF? FILE))]) (PSCFONT.READFONT [LAMBDA (FONTFILENAME) (* ; "Edited 15-Oct-87 11:10 by Matt Heffron") (LET ((PF (create PSCFONT)) [S (OPENSTREAM FONTFILENAME 'INPUT NIL '((SEQUENTIAL T] FID W) [replace (PSCFONT FID) of PF with (SETQ FID (READ S (FIND-READTABLE "INTERLISP"] (CL:DO NIL ((EQ (BIN S) 255)) (* ;; "Body of the loop is empty, the test does all of the work") ) (replace (PSCFONT IL-FONTID) of PF with (CAR FID)) (replace (PSCFONT FIRSTCHAR) of PF with (\WIN S)) (replace (PSCFONT LASTCHAR) of PF with (\WIN S)) (replace (PSCFONT ASCENT) of PF with (\WIN S)) (replace (PSCFONT DESCENT) of PF with (\WIN S)) (replace (PSCFONT WIDTHS) of PF with (SETQ W (ARRAY 256 'SMALLPOSP 0 0))) (for C from 0 to 255 do (SETA W C (\WIN S))) (CLOSEF S) PF]) (PSCFONT.SPELLFILE [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE) (* ; "Edited 12-Jan-88 13:04 by Matt Heffron") (SETQ FAMILY (OR (CDR (ASSOC FAMILY POSTSCRIPT.FONT.ALIST)) FAMILY)) (bind FULLNAME for PATH in POSTSCRIPTFONTDIRECTORIES thereis [SETQ FULLNAME (INFILEP (CONCAT PATH (\FONTFILENAME FAMILY SIZE FACE '.PSCFONT] finally (RETURN FULLNAME]) (PSCFONT.WRITEFONT [LAMBDA (FONTFILENAME PF) (* ; "Edited 15-Oct-87 11:12 by Matt Heffron") (LET ([S (OPENSTREAM FONTFILENAME 'OUTPUT NIL '((TYPE BINARY) (SEQUENTIAL T] (W (fetch (PSCFONT WIDTHS) of PF)) (*READTABLE* (FIND-READTABLE "INTERLISP"))) (PRIN3 (fetch (PSCFONT FID) of PF) S) (BOUT S 0) (BOUT S 255) (\WOUT S (fetch (PSCFONT FIRSTCHAR) of PF)) (\WOUT S (fetch (PSCFONT LASTCHAR) of PF)) (\WOUT S (fetch (PSCFONT ASCENT) of PF)) (\WOUT S (fetch (PSCFONT DESCENT) of PF)) (for C from 0 to 255 do (\WOUT S (ELT W C))) (CLOSEF S) FONTFILENAME]) (READ-AFM-FILE [LAMBDA (FILE) (* ; "Edited 20-Jan-88 17:22 by Matt Heffron") (LET ((IFILE (OPENSTREAM FILE 'INPUT)) (PSCFONT (create PSCFONT)) (FCHAR 1000) (LCHAR 0) (W (ARRAY 256 'SMALLPOSP 0 0)) TOKEN WEIGHT SLOPE CMCOUNT FBBOX) (with PSCFONT PSCFONT (repeatuntil (STRING-EQUAL "FontName" (RSTRING IFILE)) do (READCCODE IFILE)) (repeatwhile (STRING-EQUAL "" (SETQ TOKEN (RSTRING IFILE))) do (READCCODE IFILE)) [if (NOT (AND (BOUNDP 'WeightMenu) (type? MENU WeightMenu))) then (SETQ WeightMenu (create MENU ITEMS _ WeightMenuItems MENUFONT _ (FONTCREATE 'HELVETICA 12] [if (NOT (AND (BOUNDP 'SlopeMenu) (type? MENU SlopeMenu))) then (SETQ SlopeMenu (create MENU ITEMS _ SlopeMenuItems MENUFONT _ (FONTCREATE 'HELVETICA 12] (printout T T "Font WEIGHT for " PSCFONT ": " (SETQ WEIGHT (MENU WeightMenu)) T) (printout T T "Font SLOPE for " PSCFONT ": " (SETQ SLOPE (MENU SlopeMenu)) T) (SETQ FID (LIST TOKEN WEIGHT SLOPE 'REGULAR)) [SETQ IL-FONTID (if (AND (EQ SLOPE 'REGULAR) (EQ WEIGHT 'MEDIUM)) then TOKEN else (POSTSCRIPT.GETFONTID FID WEIGHT SLOPE 'REGULAR] (repeatuntil (STRING-EQUAL "StartCharMetrics" TOKEN) do (SETQ TOKEN (RSTRING IFILE)) (if (STRING-EQUAL "FontBBox" TOKEN) then (SETQ FBBOX (LIST (READ IFILE) (READ IFILE) (READ IFILE) (READ IFILE))) (* ;; "The Ascender and Descender properties from the AFM file are currently ignored, and the values from the FontBBox are used.") (SETQ DESCENT (IABS (CADR FBBOX))) (SETQ ASCENT (CADDDR FBBOX)) else (READCCODE IFILE))) (SETQ CMCOUNT (RATOM IFILE)) (repeatuntil (EQ (CHARCODE EOL) (READCCODE IFILE)) do) (SETQ WIDTHS W) (for CC from 1 to CMCOUNT do (LET (CCODE) (repeatuntil (EQ 'C (RATOM IFILE)) do) (SETQ CCODE (READ IFILE)) (if (CL:PLUSP CCODE) then (if (ILESSP CCODE FCHAR) then (SETQ FCHAR CCODE)) (if (IGREATERP CCODE LCHAR) then (SETQ LCHAR CCODE)) (RATOMS 'WX IFILE) (SETA W CCODE (READ IFILE))) (repeatuntil (EQ (CHARCODE EOL) (READCCODE IFILE)) do))) (SETQ FIRSTCHAR FCHAR) (SETQ LASTCHAR LCHAR)) (CLOSEF IFILE) PSCFONT]) (\BITBLT.PSC [LAMBDA (SOURCEBITMAP SOURCELEFT SOURCEBOTTOM STREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION CLIPPEDSOURCELEFT CLIPPEDSOURCEBOTTOM SCALEFACTOR) (* ; "Edited 29-Mar-89 18:31 by snow") (* ;;  "Added SCALEFACTOR so this can be used by both IMBITBLT and IMSCALEDBITBLT. --was 29-Mar-89") (* ;; "Postscript can only handle OPERATION REPLACE and PAINT. SOURCETYPE = TEXTURE is converted to BLTSHADE before getting here (so the TEXTURE argument can be ignored) (What are the CLIPPEDSOURCELEFT & CLIPPEDSOURCEBOTTOM arguments? They are not documented)") (LET (RGN LEFT BOTTOM TEMPBM (SCALE (DSPSCALE NIL STREAM))) (* ;; "scaledbitblt may pass nil as DESTINATIONLEFT or DESTINATIONBOTTOM, which means print this at the current position.") (SETQ DESTINATIONLEFT (OR DESTINATIONLEFT (DSPXPOSITION NIL STREAM))) (SETQ DESTINATIONBOTTOM (OR DESTINATIONBOTTOM (DSPYPOSITION NIL STREAM))) (SETQ RGN (create REGION LEFT _ (QUOTIENT DESTINATIONLEFT SCALE) BOTTOM _ (QUOTIENT DESTINATIONBOTTOM SCALE) WIDTH _ WIDTH HEIGHT _ HEIGHT)) (if CLIPPINGREGION then (SETQ RGN (INTERSECTREGIONS CLIPPINGREGION RGN)) (SETQ LEFT (TIMES (fetch (REGION LEFT) of RGN) SCALE)) (SETQ BOTTOM (TIMES (fetch (REGION BOTTOM) of RGN) SCALE)) (SETQ WIDTH (fetch (REGION WIDTH) of RGN)) (SETQ HEIGHT (fetch (REGION HEIGHT) of RGN)) else (SETQ LEFT DESTINATIONLEFT) (SETQ BOTTOM DESTINATIONBOTTOM)) (if RGN then (SETQ TEMPBM (BITMAPCREATE WIDTH HEIGHT 1)) (BITBLT SOURCEBITMAP SOURCELEFT SOURCEBOTTOM TEMPBM 0 0 WIDTH HEIGHT SOURCETYPE 'REPLACE) (SETQ SCALE (TIMES SCALE (OR (AND (BOUNDP 'POSTSCRIPT.BITMAP.SCALE) (NUMBERP POSTSCRIPT.BITMAP.SCALE)) 1) (OR SCALEFACTOR 1))) (POSTSCRIPT.PUTCOMMAND STREAM " /bitbltsave save def " LEFT " " BOTTOM " translate " (TIMES SCALE WIDTH) " " (TIMES SCALE HEIGHT) " scale " WIDTH " " HEIGHT (if (EQ OPERATION 'PAINT) then " true" else " false") " thebitimage ") (POSTSCRIPT.PUTBITMAPBYTES STREAM TEMPBM NIL) (POSTSCRIPT.OUTSTR STREAM " bitbltsave restore ") (\MOVETO.PSC STREAM DESTINATIONLEFT DESTINATIONBOTTOM) T else NIL]) (\BLTSHADE.PSC [LAMBDA (TEXTURE STREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT OPERATION CLIPPINGREGION) (* ; "Edited 9-Sep-88 10:56 by Matt Heffron") (* ;; "Maybe we should do something with OPERATION") (LET (TEXTUREBM TEXTUREWIDTH LEFT BOTTOM RGN) (if CLIPPINGREGION then (SETQ RGN (INTERSECTREGIONS CLIPPINGREGION (create REGION LEFT _ DESTINATIONLEFT BOTTOM _ DESTINATIONBOTTOM WIDTH _ WIDTH HEIGHT _ HEIGHT))) (SETQ LEFT (fetch (REGION LEFT) of RGN)) (SETQ BOTTOM (fetch (REGION BOTTOM) of RGN)) (SETQ WIDTH (fetch (REGION WIDTH) of RGN)) (SETQ HEIGHT (fetch (REGION HEIGHT) of RGN)) else (SETQ RGN T) (SETQ LEFT DESTINATIONLEFT) (SETQ BOTTOM DESTINATIONBOTTOM)) (if RGN then (POSTSCRIPT.PUTCOMMAND STREAM " gsave newpath ") (if (FIXP TEXTURE) then (if (ZEROP TEXTURE) then (SETQ TEXTURE 1.0) (* ; "The setgray version of white") elseif (OR (EQL TEXTURE 65535) (EQL TEXTURE -1)) then (SETQ TEXTURE 0.0) (* ; "The setgray version of black") )) (if (FLOATP TEXTURE) then (* ;;  "If TEXTURE is a FLOATP, then it is specified in PostScript setgray notation.") (POSTSCRIPT.PUTCOMMAND STREAM TEXTURE " setgray ") elseif (OR (TEXTUREP TEXTURE) (NULL TEXTURE)) then (SETQ TEXTUREBM (BITMAPCREATE 16 16 1)) (SETQ TEXTUREWIDTH 16) (BLTSHADE TEXTURE TEXTUREBM) elseif (BITMAPP TEXTURE) then (SETQ TEXTUREWIDTH (MIN (fetch BITMAPWIDTH of TEXTUREBM) (fetch BITMAPHEIGHT of TEXTUREBM))) (SETQ TEXTUREBM (BITMAPCREATE TEXTUREWIDTH TEXTUREWIDTH 1)) (BITBLT TEXTURE 0 0 TEXTUREBM 0 0 TEXTUREWIDTH TEXTUREWIDTH 'INPUT 'REPLACE)) (if TEXTUREBM then (POSTSCRIPT.PUTCOMMAND STREAM "100 100 scale " (QUOTIENT LEFT 100.0) " " (QUOTIENT BOTTOM 100.0) " mto " (SETQ WIDTH (QUOTIENT WIDTH 100.0)) " 0 rlineto 0 " (QUOTIENT HEIGHT 100.0) " rlineto " (MINUS WIDTH) " 0 rlineto closepath ") (POSTSCRIPT.PUTBITMAPBYTES STREAM TEXTUREBM T) (POSTSCRIPT.PUTCOMMAND STREAM TEXTUREWIDTH " " (LSH (fetch BITMAPRASTERWIDTH of TEXTUREBM) 1) " 0 " (TIMES 72 (QUOTIENT (DSPSCALE NIL STREAM) 100.0)) " findresolution " TEXTUREWIDTH " div div ceiling " POSTSCRIPT.TEXTURE.SCALE " mul setpattern eofill grestore ") else (POSTSCRIPT.PUTCOMMAND STREAM LEFT " " BOTTOM " mto " WIDTH " 0 rlineto 0 " HEIGHT " rlineto " (MINUS WIDTH) " 0 rlineto closepath eofill grestore ")) (\MOVETO.PSC STREAM DESTINATIONLEFT DESTINATIONBOTTOM) T else NIL]) (\CHARWIDTH.PSC [LAMBDA (STREAM CHARCODE) (* ; "Edited 12-Jan-88 15:54 by Matt Heffron") (* ;; "no NS character set treatment yet") (LET (WID SPACEFACTOR (IMAGEDATA (fetch IMAGEDATA of STREAM))) (SETQ WID (\FGETWIDTH (fetch FONTIMAGEWIDTHS of (fetch POSTSCRIPTFONT of IMAGEDATA)) (LOGAND CHARCODE 255))) (if (AND (EQ CHARCODE (CHARCODE SPACE)) (NOT (EQP (SETQ SPACEFACTOR (fetch POSTSCRIPTSPACEFACTOR of IMAGEDATA)) 1))) then (FIXR (TIMES WID SPACEFACTOR)) else WID]) (\DRAWARC.PSC [LAMBDA (STREAM CENTERX CENTERY RADIUS STARTANGLE NDEGREES BRUSH DASHING) (* ; "Edited 9-Sep-88 10:59 by Matt Heffron") (LET (WIDTH COLOR) (if (NUMBERP BRUSH) then (SETQ WIDTH BRUSH) elseif (LISTP BRUSH) then (if (NEQ (fetch BRUSHSHAPE of BRUSH) 'ROUND) then (printout T T "[In \DRAWARC.PSC: Non-ROUND BRUSH not supported.] [Using ROUND BRUSH]" T)) (SETQ WIDTH (fetch BRUSHSIZE of BRUSH)) (SETQ COLOR (fetch BRUSHCOLOR of BRUSH)) else (* ;  "If FUNCTIONAL BRUSH big trouble!") (printout T T "[In \DRAWARC.PSC: Functional BRUSH not supported.] [Using ROUND 1 point BRUSH]" T) (SETQ WIDTH (DSPSCALE NIL STREAM))) (if (NOT (ZEROP WIDTH)) then (POSTSCRIPT.PUTCOMMAND STREAM " gsave newpath ") (if (FLOATP COLOR) then (POSTSCRIPT.PUTCOMMAND STREAM COLOR " setgray ") (* ;  "COLOR is specified in POSTSCRIPT setgray notation.") ) (if (LISTP DASHING) then (POSTSCRIPT.OUTSTR STREAM " [") (for D in DASHING do (POSTSCRIPT.PUTCOMMAND STREAM (TIMES D WIDTH) " ")) (POSTSCRIPT.OUTSTR STREAM "] 0 setdash ") (* ;  "Since Interlisp DASHING are in terms of BRUSH units, we must multiply by the brush size.") ) (POSTSCRIPT.PUTCOMMAND STREAM WIDTH " setlinewidth 1 setlinecap 1 setlinejoin " CENTERX " " CENTERY " " RADIUS " " STARTANGLE " " (+ STARTANGLE NDEGREES) " arc stroke grestore")) (\MOVETO.PSC STREAM CENTERX CENTERY]) (\DRAWCIRCLE.PSC [LAMBDA (STREAM CENTERX CENTERY RADIUS BRUSH DASHING) (* ; "Edited 9-Sep-88 10:59 by Matt Heffron") (LET (WIDTH COLOR) (if (NUMBERP BRUSH) then (SETQ WIDTH BRUSH) elseif (LISTP BRUSH) then (if (NEQ (fetch BRUSHSHAPE of BRUSH) 'ROUND) then (printout T T "[In \DRAWCIRCLE.PSC: Non-ROUND BRUSH not supported.] [Using ROUND BRUSH]" T)) (SETQ WIDTH (fetch BRUSHSIZE of BRUSH)) (SETQ COLOR (fetch BRUSHCOLOR of BRUSH)) else (* ;  "If FUNCTIONAL BRUSH big trouble!") (printout T T "[In \DRAWCIRCLE.PSC: Functional BRUSH not supported.] [Using (ROUND 1) BRUSH]" T) (SETQ WIDTH 1)) (if (NOT (ZEROP WIDTH)) then (POSTSCRIPT.PUTCOMMAND STREAM " gsave newpath ") (if (FLOATP COLOR) then (POSTSCRIPT.PUTCOMMAND STREAM COLOR " setgray ") (* ;  "COLOR is specified in POSTSCRIPT setgray notation.") ) (if (LISTP DASHING) then (POSTSCRIPT.OUTSTR STREAM " [") (for D in DASHING do (POSTSCRIPT.PUTCOMMAND STREAM (TIMES D WIDTH) " ")) (POSTSCRIPT.OUTSTR STREAM "] 0 setdash ") (* ;  "Since Interlisp DASHING are in terms of BRUSH units, we must multiply by the brush size.") ) (POSTSCRIPT.PUTCOMMAND STREAM WIDTH " setlinewidth 1 setlinecap 1 setlinejoin " CENTERX " " CENTERY " " RADIUS " 0 360 arc stroke grestore")) (\MOVETO.PSC STREAM CENTERX CENTERY]) (\DRAWCURVE.PSC [LAMBDA (STREAM KNOTS CLOSED BRUSH DASHING) (* ; "Edited 9-Sep-88 10:56 by Matt Heffron") (LET (WIDTH SHAPE COLOR PSPLINE XA YA DXA DYA N PREVX PREVY PREV-DX3 PREV-DY3) (if (NUMBERP BRUSH) then (SETQ WIDTH BRUSH) (SETQ SHAPE 'ROUND) elseif (LISTP BRUSH) then (SETQ WIDTH (fetch BRUSHSIZE of BRUSH)) (SETQ SHAPE (fetch BRUSHSHAPE of BRUSH)) (SETQ COLOR (fetch BRUSHCOLOR of BRUSH)) else (* ;; "If FUNCTIONAL BRUSH then BIG trouble!") (printout T T "[In \DRAWCURVE.PSC: Functional BRUSH not supported.] [Using (ROUND 1) BRUSH]" T) (SETQ WIDTH (DSPSCALE NIL STREAM)) (SETQ SHAPE 'ROUND)) (if (NOT (ZEROP WIDTH)) then (POSTSCRIPT.PUTCOMMAND STREAM " gsave newpath ") (if (FLOATP COLOR) then (POSTSCRIPT.PUTCOMMAND STREAM COLOR " setgray ") (* ;; "COLOR is specified in POSTSCRIPT setgray notation.") ) (if (LISTP DASHING) then (POSTSCRIPT.OUTSTR STREAM " [") (for D in DASHING do (POSTSCRIPT.PUTCOMMAND STREAM (TIMES D WIDTH) " ")) (POSTSCRIPT.OUTSTR STREAM "] 0 setdash ") (* ;;  "Since Interlisp DASHING are in terms of BRUSH units, we must multiply by the brush size.") ) (SETQ PSPLINE (PARAMETRICSPLINE KNOTS CLOSED NIL)) (SETQ N (pop PSPLINE)) (SETQ XA (pop PSPLINE)) (SETQ YA (pop PSPLINE)) (SETQ DXA (pop PSPLINE)) (SETQ DYA (pop PSPLINE)) (POSTSCRIPT.PUTCOMMAND STREAM (SELECTQ SHAPE (ROUND " 1 setlinecap 1 setlinejoin ") (SQUARE " 2 setlinecap 0 setlinejoin ") " 0 setlinecap 0 setlinejoin ") WIDTH " setlinewidth " (SETQ PREVX (ELT XA 1)) " " (SETQ PREVY (ELT YA 1)) " mto ") (SETQ PREV-DX3 (FQUOTIENT (ELT DXA 1) 3.0)) (SETQ PREV-DY3 (FQUOTIENT (ELT DYA 1) 3.0)) (for C from 2 to N do (POSTSCRIPT.PUTCOMMAND STREAM (FPLUS PREVX PREV-DX3) " " (FPLUS PREVY PREV-DY3) " " (FDIFFERENCE (SETQ PREVX (ELT XA C)) (SETQ PREV-DX3 (FQUOTIENT (ELT DXA C) 3.0))) " " (FDIFFERENCE (SETQ PREVY (ELT YA C)) (SETQ PREV-DY3 (FQUOTIENT (ELT DYA C) 3.0))) " " PREVX " " PREVY " curveto ")) (POSTSCRIPT.PUTCOMMAND STREAM "stroke grestore")) (\MOVETO.PSC STREAM PREVX PREVY)) NIL]) (\DRAWELLIPSE.PSC [LAMBDA (STREAM CENTERX CENTERY MINORRADIUS MAJORRADIUS ORIENTATION BRUSH DASHING) (* ; "Edited 9-Sep-88 10:59 by Matt Heffron") (LET (WIDTH COLOR) (if (NUMBERP BRUSH) then (SETQ WIDTH BRUSH) elseif (LISTP BRUSH) then (if (NEQ (fetch BRUSHSHAPE of BRUSH) 'ROUND) then (printout T T "[In \DRAWELLIPSE.PSC: Non-ROUND BRUSH not supported.] [Using ROUND BRUSH]" T)) (SETQ WIDTH (fetch BRUSHSIZE of BRUSH)) (SETQ COLOR (fetch BRUSHCOLOR of BRUSH)) else (* ;  "If FUNCTIONAL BRUSH, big trouble!") (printout T T "[In \DRAWELLIPSE.PSC: Functional BRUSH not supported.] [Using (ROUND 1) BRUSH]" T) (SETQ WIDTH 1)) (if (NOT (ZEROP WIDTH)) then (POSTSCRIPT.PUTCOMMAND STREAM " gsave newpath ") (if (FLOATP COLOR) then (POSTSCRIPT.PUTCOMMAND STREAM COLOR " setgray ") (* ;  "COLOR is specified in POSTSCRIPT setgray notation.") ) (if (LISTP DASHING) then (POSTSCRIPT.OUTSTR STREAM " [") (for D in DASHING do (POSTSCRIPT.PUTCOMMAND STREAM (TIMES D WIDTH) " ")) (POSTSCRIPT.OUTSTR STREAM "] 0 setdash ") (* ;  "Since Interlisp DASHING are in terms of BRUSH units, we must multiply by the brush size.") ) (POSTSCRIPT.PUTCOMMAND STREAM WIDTH " setlinewidth 1 setlinecap 1 setlinejoin " CENTERX " " CENTERY " " MAJORRADIUS " " MINORRADIUS " " ORIENTATION " 0 360 ellipse stroke grestore")) (\MOVETO.PSC STREAM CENTERX CENTERY]) (\DRAWLINE.PSC [LAMBDA (STREAM X1 Y1 X2 Y2 WIDTH OPERATION COLOR DASHING) (* ; "Edited 22-Feb-89 11:26 by snow") (LET ((IMAGEDATA (fetch IMAGEDATA of STREAM))) (if (NOT (NUMBERP WIDTH)) then (* ;; "The WIDTH = NIL should have been handled before here, but just in case!") (SETQ WIDTH (DSPSCALE NIL STREAM))) (if (NOT (ZEROP WIDTH)) then (POSTSCRIPT.PUTCOMMAND STREAM " gsave newpath ") (if (FLOATP COLOR) then (POSTSCRIPT.PUTCOMMAND STREAM COLOR " setgray ") (* ;; "COLOR is specified in POSTSCRIPT setgray notation.") ) (if (LISTP DASHING) then (POSTSCRIPT.OUTSTR STREAM " [") (for D in DASHING do (POSTSCRIPT.PUTCOMMAND STREAM (TIMES D WIDTH) " ")) (POSTSCRIPT.OUTSTR STREAM "] 0 setdash ") (* ;;  "Since Interlisp DASHING are in terms of BRUSH units, we must multiply by the brush size.") ) (POSTSCRIPT.PUTCOMMAND STREAM WIDTH " setlinewidth 0 setlinecap " X1 " " Y1 " mto " X2 " " Y2 " lineto stroke grestore " X2 " " Y2 " mto ")) (replace POSTSCRIPTX of IMAGEDATA with X2) (replace POSTSCRIPTY of IMAGEDATA with Y2]) (\DRAWPOLYGON.PSC [LAMBDA (STREAM POINTS CLOSED BRUSH DASHING) (* ; "Edited 9-Sep-88 11:00 by Matt Heffron") (LET ((LASTPOINT (CAR (LAST POINTS))) WIDTH SHAPE COLOR) (if (NUMBERP BRUSH) then (SETQ WIDTH BRUSH) (SETQ SHAPE 'ROUND) elseif (LISTP BRUSH) then (SETQ WIDTH (fetch BRUSHSIZE of BRUSH)) (SETQ SHAPE (fetch BRUSHSHAPE of BRUSH)) (SETQ COLOR (fetch BRUSHCOLOR of BRUSH)) else (* ;; "If FUNCTIONAL BRUSH then BIG trouble!") (printout T T "[In \DRAWPOLYGON.PSC: Functional BRUSH not supported.] [Using (ROUND 1) BRUSH]" T) (SETQ WIDTH (DSPSCALE NIL STREAM)) (SETQ SHAPE 'ROUND)) (if (NOT (ZEROP WIDTH)) then (POSTSCRIPT.PUTCOMMAND STREAM " gsave newpath ") (if (FLOATP COLOR) then (POSTSCRIPT.PUTCOMMAND STREAM COLOR " setgray ") (* ;; "COLOR is specified in POSTSCRIPT setgray notation.") ) (if (LISTP DASHING) then (POSTSCRIPT.OUTSTR STREAM " [") (for D in DASHING do (POSTSCRIPT.PUTCOMMAND STREAM (TIMES D WIDTH) " ")) (POSTSCRIPT.OUTSTR STREAM "] 0 setdash ") (* ;  "Since Interlisp DASHING are in terms of BRUSH units, we must multiply by the brush size.") ) (POSTSCRIPT.PUTCOMMAND STREAM (SELECTQ SHAPE (ROUND " 1 setlinecap 1 setlinejoin ") (SQUARE " 2 setlinecap 0 setlinejoin ") " 0 setlinecap 0 setlinejoin ") WIDTH " setlinewidth " (fetch XCOORD of (CAR POINTS)) " " (fetch YCOORD of (CAR POINTS)) " mto ") (for P in (CDR POINTS) do (POSTSCRIPT.PUTCOMMAND STREAM (fetch XCOORD of P) " " (fetch YCOORD of P) " lineto ")) (if CLOSED then (POSTSCRIPT.PUTCOMMAND STREAM " closepath")) (POSTSCRIPT.PUTCOMMAND STREAM " stroke grestore")) (\MOVETO.PSC STREAM (fetch XCOORD of LASTPOINT) (fetch YCOORD of LASTPOINT]) (\DSPBOTTOMMARGIN.PSC [LAMBDA (STREAM YPOSITION) (* ; "Edited 12-Jan-88 13:14 by Matt Heffron") (PROG1 (fetch POSTSCRIPTBOTTOMMARGIN of (fetch IMAGEDATA of STREAM)) (if YPOSITION then (replace POSTSCRIPTBOTTOMMARGIN of (fetch IMAGEDATA of STREAM) with YPOSITION)))]) (\DSPCLIPPINGREGION.PSC [LAMBDA (STREAM REGION) (* ; "Edited 12-Jan-88 13:15 by Matt Heffron") (LET* ((IMAGEDATA (fetch IMAGEDATA of STREAM)) (CURRGN (fetch POSTSCRIPTCLIPPINGREGION of IMAGEDATA)) (SCALE (fetch POSTSCRIPTSCALE of IMAGEDATA)) (LONGEDGE (TIMES \POSTSCRIPT.LONGEDGE.PTS (QUOTIENT 10000 SCALE))) (SHORTEDGE (TIMES \POSTSCRIPT.SHORTEDGE.PTS (QUOTIENT 10000 SCALE))) RGN WIDTH DEFREGION) (SETQ DEFREGION (if (fetch POSTSCRIPTLANDSCAPE of IMAGEDATA) then (create REGION LEFT _ 0.0 BOTTOM _ 0.0 WIDTH _ LONGEDGE HEIGHT _ SHORTEDGE) else (create REGION LEFT _ 0.0 BOTTOM _ 0.0 WIDTH _ SHORTEDGE HEIGHT _ LONGEDGE))) (if REGION then (SETQ RGN (INTERSECTREGIONS REGION DEFREGION)) (* ;; "If the new clipping region doesn't intersect with the default for the appropriate page orientation, just ignore this and reset to the default.") (if RGN then (replace POSTSCRIPTCLIPPINGREGION of IMAGEDATA with RGN) (SETQ WIDTH (fetch (REGION WIDTH) of RGN)) (POSTSCRIPT.PUTCOMMAND STREAM " initclip newpath " (fetch LEFT of RGN) " " (fetch BOTTOM of RGN) " moveto " WIDTH " 0 rlineto 0 " (fetch (REGION HEIGHT) of RGN) " rlineto " (IMINUS WIDTH) " 0 rlineto closepath clip newpath") else DEFREGION)) CURRGN]) (\DSPFONT.PSC [LAMBDA (STREAM FONT) (* ; "Edited 9-Sep-88 10:57 by Matt Heffron") (LET* ((IMAGEDATA (fetch IMAGEDATA of STREAM)) FONTID) (PROG1 (fetch POSTSCRIPTFONT of IMAGEDATA) [if FONT then (SETQ FONT (SELECTQ (TYPENAME FONT) (FONTDESCRIPTOR FONT) (FONTCLASS (FONTCREATE FONT NIL NIL NIL STREAM)) (SHOULDNT "arg not FONT descriptor or class"))) (if (NEQ (IMAGESTREAMTYPE STREAM) (fetch FONTDEVICE of FONT)) then (SETQ FONT (with FONTDESCRIPTOR FONT (FONTCREATE FONTFAMILY FONTSIZE FONTFACE NIL STREAM] [if (AND FONT (NEQ FONT (fetch POSTSCRIPTFONT of IMAGEDATA))) then (SETQ FONTID (fetch (PSCFONT IL-FONTID) of (fetch ( FONTDESCRIPTOR FONTDEVICESPEC ) of FONT))) (if (LISTP FONTID) then (POSTSCRIPT.PUTCOMMAND STREAM " /" (fetch FONTIDNAME of FONTID) " findfont [" (TIMES (fetch FONTXFACTOR of FONTID) (fetch (FONTDESCRIPTOR FONTSIZE) of FONT) 100) " 0 " (TIMES (fetch FONTOBLIQUEFACTOR of FONTID) (fetch (FONTDESCRIPTOR FONTSIZE) of FONT) 100) " " (TIMES (fetch (FONTDESCRIPTOR FONTSIZE) of FONT) 100) " 0 0] makefont setfont ") else (POSTSCRIPT.PUTCOMMAND STREAM " /" FONTID " findfont " (TIMES (fetch (FONTDESCRIPTOR FONTSIZE) of FONT) 100) " scalefont setfont ")) (replace POSTSCRIPTFONT of IMAGEDATA with FONT) (\DSPLINEFEED.PSC STREAM (IMINUS (fetch (FONTDESCRIPTOR \SFHeight) of FONT])]) (\DSPLEFTMARGIN.PSC [LAMBDA (STREAM XPOSITION) (* ; "Edited 12-Jan-88 13:15 by Matt Heffron") (PROG1 (fetch POSTSCRIPTLEFTMARGIN of (fetch IMAGEDATA of STREAM)) (if XPOSITION then (replace POSTSCRIPTLEFTMARGIN of (fetch IMAGEDATA of STREAM) with XPOSITION)))]) (\DSPLINEFEED.PSC [LAMBDA (STREAM LINELEADING) (* ; "Edited 12-Jan-88 13:16 by Matt Heffron") (PROG1 (fetch POSTSCRIPTLINESPACING of (fetch IMAGEDATA of STREAM)) (if LINELEADING then (replace POSTSCRIPTLINESPACING of (fetch IMAGEDATA of STREAM) with LINELEADING)))]) (\DSPRESET.PSC [LAMBDA (STREAM) (* ; "Edited 9-Sep-88 11:00 by Matt Heffron") (LET ((IMAGEDATA (fetch IMAGEDATA of STREAM))) (\MOVETO.PSC STREAM (fetch POSTSCRIPTLEFTMARGIN of IMAGEDATA) (DIFFERENCE (fetch POSTSCRIPTTOPMARGIN of IMAGEDATA) (FONTPROP (fetch POSTSCRIPTFONT of IMAGEDATA) 'ASCENT]) (\DSPRIGHTMARGIN.PSC [LAMBDA (STREAM XPOSITION) (* ; "Edited 12-Jan-88 13:16 by Matt Heffron") (PROG1 (fetch POSTSCRIPTRIGHTMARGIN of (fetch IMAGEDATA of STREAM)) (if XPOSITION then (replace POSTSCRIPTRIGHTMARGIN of (fetch IMAGEDATA of STREAM) with XPOSITION)))]) (\DSPSCALE.PSC [LAMBDA (STREAM SCALE) (* ; "Edited 28-Sep-87 13:30 by Matt Heffron") (LET* ((IMAGEDATA (fetch IMAGEDATA of STREAM)) (OSCALE (fetch POSTSCRIPTSCALE of IMAGEDATA)) NSCALE) (if (AND NIL (* ;; "Changing SCALE is not implemented. According to IRM.") (NUMBERP SCALE) (CL:PLUSP SCALE)) then (SETQ NSCALE (QUOTIENT SCALE OSCALE)) (* ;;  "NSCALE is the adjustment for the fact that the scale operator takes RELATIVE scale changes.") (POSTSCRIPT.PUTCOMMAND STREAM " " NSCALE " " NSCALE " scale") (replace POSTSCRIPTSCALE of IMAGEDATA with SCALE)) OSCALE]) (\DSPSPACEFACTOR.PSC [LAMBDA (STREAM FACTOR) (* ; "Edited 12-Jan-88 13:49 by Matt Heffron") (LET ((IMAGEDATA (fetch IMAGEDATA of STREAM))) (PROG1 (fetch POSTSCRIPTSPACEFACTOR of IMAGEDATA) (if FACTOR then (POSTSCRIPT.SHOWACCUM STREAM) (replace POSTSCRIPTSPACEFACTOR of IMAGEDATA with FACTOR)))]) (\DSPTOPMARGIN.PSC [LAMBDA (STREAM YPOSITION) (* ; "Edited 12-Jan-88 13:17 by Matt Heffron") (PROG1 (fetch POSTSCRIPTTOPMARGIN of (fetch IMAGEDATA of STREAM)) (if YPOSITION then (replace POSTSCRIPTTOPMARGIN of (fetch IMAGEDATA of STREAM) with YPOSITION)))]) (\DSPXPOSITION.PSC [LAMBDA (STREAM XPOSITION) (* ; "Edited 9-Sep-88 10:58 by Matt Heffron") (LET ((IMAGEDATA (fetch IMAGEDATA of STREAM)) OLDX) (PROG1 (SETQ OLDX (fetch POSTSCRIPTX of IMAGEDATA)) (if (AND XPOSITION (NOT (EQUAL XPOSITION OLDX))) then (\MOVETO.PSC STREAM XPOSITION (fetch POSTSCRIPTY of IMAGEDATA)) ))]) (\DSPYPOSITION.PSC [LAMBDA (STREAM YPOSITION) (* ; "Edited 9-Sep-88 10:58 by Matt Heffron") (LET ((IMAGEDATA (fetch IMAGEDATA of STREAM)) OLDY) (PROG1 (SETQ OLDY (fetch POSTSCRIPTY of IMAGEDATA)) (if (AND YPOSITION (NOT (EQUAL YPOSITION OLDY))) then (\MOVETO.PSC STREAM (fetch POSTSCRIPTX of IMAGEDATA) YPOSITION)))]) (\FILLCIRCLE.PSC [LAMBDA (STREAM CENTERX CENTERY RADIUS TEXTURE) (* ; "Edited 9-Sep-88 11:00 by Matt Heffron") (LET (TEXTUREBM TEXTUREWIDTH) (POSTSCRIPT.PUTCOMMAND STREAM " gsave newpath ") (if (FIXP TEXTURE) then (if (ZEROP TEXTURE) then (SETQ TEXTURE 1.0) (* ; "The setgray version of white") elseif (OR (EQL TEXTURE 65535) (EQL TEXTURE -1)) then (SETQ TEXTURE 0.0) (* ; "The setgray version of black") )) (if (FLOATP TEXTURE) then (* ;;  "If TEXTURE is a FLOATP, then it is specified in PostScript setgray notation.") (POSTSCRIPT.PUTCOMMAND STREAM TEXTURE " setgray ") elseif (OR (TEXTUREP TEXTURE) (NULL TEXTURE)) then (SETQ TEXTUREBM (BITMAPCREATE 16 16 1)) (SETQ TEXTUREWIDTH 16) (BLTSHADE TEXTURE TEXTUREBM) elseif (BITMAPP TEXTURE) then (SETQ TEXTUREWIDTH (MIN (fetch BITMAPWIDTH of TEXTUREBM) (fetch BITMAPHEIGHT of TEXTUREBM))) (SETQ TEXTUREBM (BITMAPCREATE TEXTUREWIDTH TEXTUREWIDTH 1)) (BITBLT TEXTURE 0 0 TEXTUREBM 0 0 TEXTUREWIDTH TEXTUREWIDTH 'INPUT 'REPLACE)) (POSTSCRIPT.PUTCOMMAND STREAM " " CENTERX " " CENTERY " " RADIUS " 0 360 arc ") (if TEXTUREBM then (POSTSCRIPT.PUTCOMMAND STREAM "100 100 scale ") (POSTSCRIPT.PUTBITMAPBYTES STREAM TEXTUREBM T) (POSTSCRIPT.PUTCOMMAND STREAM TEXTUREWIDTH " " (LSH (fetch BITMAPRASTERWIDTH of TEXTUREBM) 1) " 0 " (TIMES 72 (QUOTIENT (DSPSCALE NIL STREAM) 100.0)) " findresolution " TEXTUREWIDTH " div div ceiling " POSTSCRIPT.TEXTURE.SCALE " mul setpattern eofill grestore ") else (POSTSCRIPT.PUTCOMMAND STREAM " eofill grestore ")) (\MOVETO.PSC STREAM CENTERX CENTERY]) (\FILLPOLYGON.PSC [LAMBDA (STREAM KNOTS TEXTURE OPERATION WINDNUMBER) (* ; "Edited 9-Sep-88 11:01 by Matt Heffron") (DECLARE (SPECVARS FILL.WRULE)) (* ;; "OPERATION is ignored here") (LET ((LASTPOINT (CAR (LAST KNOTS))) TEXTUREBM TEXTUREWIDTH) (POSTSCRIPT.PUTCOMMAND STREAM " gsave newpath ") (if (NOT (OR (ZEROP WINDNUMBER) (EQL WINDNUMBER 1))) then (SETQ WINDNUMBER FILL.WRULE)) (if (FIXP TEXTURE) then (if (ZEROP TEXTURE) then (SETQ TEXTURE 1.0) (* ; "The setgray version of white") elseif (OR (EQL TEXTURE 65535) (EQL TEXTURE -1)) then (SETQ TEXTURE 0.0) (* ; "The setgray version of black") )) (if (FLOATP TEXTURE) then (* ;;  "If TEXTURE is a FLOATP, then it is specified in PostScript setgray notation.") (POSTSCRIPT.PUTCOMMAND STREAM TEXTURE " setgray ") elseif (OR (TEXTUREP TEXTURE) (NULL TEXTURE)) then (SETQ TEXTUREBM (BITMAPCREATE 16 16 1)) (SETQ TEXTUREWIDTH 16) (BLTSHADE TEXTURE TEXTUREBM) elseif (BITMAPP TEXTURE) then (SETQ TEXTUREWIDTH (MIN (fetch BITMAPWIDTH of TEXTUREBM) (fetch BITMAPHEIGHT of TEXTUREBM))) (SETQ TEXTUREBM (BITMAPCREATE TEXTUREWIDTH TEXTUREWIDTH 1)) (BITBLT TEXTURE 0 0 TEXTUREBM 0 0 TEXTUREWIDTH TEXTUREWIDTH 'INPUT 'REPLACE)) (POSTSCRIPT.PUTCOMMAND STREAM (fetch XCOORD of (CAR KNOTS)) " " (fetch YCOORD of (CAR KNOTS)) " mto ") (for K in (CDR KNOTS) do (POSTSCRIPT.PUTCOMMAND STREAM (fetch XCOORD of K) " " (fetch YCOORD of K) " lineto ")) (POSTSCRIPT.PUTCOMMAND STREAM " closepath ") (if TEXTUREBM then (POSTSCRIPT.PUTCOMMAND STREAM "100 100 scale ") (POSTSCRIPT.PUTBITMAPBYTES STREAM TEXTUREBM T) (POSTSCRIPT.PUTCOMMAND STREAM TEXTUREWIDTH " " (LSH (fetch BITMAPRASTERWIDTH of TEXTUREBM) 1) " 0 " (TIMES 72 (QUOTIENT (DSPSCALE NIL STREAM) 100.0)) " findresolution " TEXTUREWIDTH " div div ceiling " POSTSCRIPT.TEXTURE.SCALE " mul setpattern")) (POSTSCRIPT.PUTCOMMAND STREAM (if (ZEROP WINDNUMBER) then " fill grestore " else " eofill grestore ")) (\MOVETO.PSC STREAM (fetch XCOORD of LASTPOINT) (fetch YCOORD of LASTPOINT]) (\MOVETO.PSC [LAMBDA (STREAM X Y) (* ; "Edited 12-Jan-88 13:18 by Matt Heffron") (LET ((IMAGEDATA (fetch IMAGEDATA of STREAM))) (POSTSCRIPT.PUTCOMMAND STREAM " " X " " Y " mto ") (with \POSTSCRIPTDATA IMAGEDATA (SETQ POSTSCRIPTX X) (SETQ POSTSCRIPTY Y]) (\NEWPAGE.PSC [LAMBDA (STREAM) (* ; "Edited 20-Jan-88 17:36 by Matt Heffron") (POSTSCRIPT.PUTCOMMAND STREAM " savepage restore showpage") (POSTSCRIPT.STARTPAGE STREAM]) (\POSTSCRIPT.OUTCHARFN [LAMBDA (STREAM CHAR) (* ; "Edited 9-Sep-88 11:02 by Matt Heffron") (LET* ((POSTSCRIPTDATA (fetch IMAGEDATA of STREAM))) (SELCHARQ CHAR ((CR LF TENEXEOL) (\TERPRI.PSC STREAM)) (FF (\NEWPAGE.PSC STREAM)) (PROGN (if (NOT (fetch POSTSCRIPTCHARSTOSHOW of POSTSCRIPTDATA)) then (POSTSCRIPT.OUTSTR STREAM " (") (replace POSTSCRIPTCHARSTOSHOW of POSTSCRIPTDATA with T)) (\POSTSCRIPT.PUTCHAR STREAM CHAR]) (\POSTSCRIPT.PUTCHAR [LAMBDA (STREAM CHAR) (* ; "Edited 5-Feb-88 10:29 by Matt Heffron") (LET* ((POSTSCRIPTDATA (fetch IMAGEDATA of STREAM)) (FONT (fetch POSTSCRIPTFONT of POSTSCRIPTDATA)) TEMP) (SETQ CHAR (LOGAND CHAR 255)) (* ;  "no NS character set treatment yet") (if (EQ CHAR (CHARCODE TAB)) then (RPTQ 8 (\POSTSCRIPT.PUTCHAR STREAM (CHARCODE SPACE))) (* ; "wimpy, but no better way yet.") else (if (FMEMB CHAR (CHARCODE (%( %) \))) then (BOUT STREAM (CHARCODE \)) (BOUT STREAM CHAR) elseif (NOT (<= (CHARCODE SPACE) CHAR 126)) then (BOUT STREAM (CHARCODE \)) (SETQ TEMP (CHCON (OCTALSTRING CHAR))) (if (< (LENGTH TEMP) 3) then (SETQ TEMP (APPEND [if (CDR TEMP) then (CONSTANT (CHARCODE (0))) else (CONSTANT (CHARCODE (0 0] TEMP))) (for CC in TEMP do (BOUT STREAM CC)) else (BOUT STREAM CHAR)) (add (fetch POSTSCRIPTX of POSTSCRIPTDATA) (\FGETWIDTH (fetch FONTIMAGEWIDTHS of FONT) CHAR))) CHAR]) (\STRINGWIDTH.PSC [LAMBDA (STREAM STR RDTBL) (* DECLARATIONS%: INTEGER) (* ;  "Edited 12-Jan-88 13:27 by Matt Heffron") (LET* [(FNT (DSPFONT NIL STREAM)) (SPACEFACTOR (fetch POSTSCRIPTSPACEFACTOR of (fetch (STREAM IMAGEDATA) of STREAM))) (WA (fetch (PSCFONT WIDTHS) of (fetch (FONTDESCRIPTOR FONTDEVICESPEC) of FNT))) (W (for CI from 1 to (NCHARS STR) sum (LET* ((CC (LOGAND 255 (NTHCHARCODE STR CI NIL RDTBL))) (WID (ELT WA CC))) (if (EQ CC (CHARCODE SPACE)) then (TIMES WID SPACEFACTOR) else WID] (FIXR (TIMES W (fetch (FONTDESCRIPTOR FONTSIZE) of FNT) 0.1]) (\TERPRI.PSC [LAMBDA (STREAM) (* ; "Edited 9-Sep-88 11:02 by Matt Heffron") (LET ((IMAGEDATA (fetch IMAGEDATA of STREAM))) (with \POSTSCRIPTDATA IMAGEDATA (SETQ POSTSCRIPTX POSTSCRIPTLEFTMARGIN) (SETQ POSTSCRIPTY (IPLUS POSTSCRIPTY POSTSCRIPTLINESPACING)) (* ;; "IPLUS because POSTSCRIPTLINESPACING is -ve if correct.") (if (LESSP POSTSCRIPTY (IPLUS (fetch (FONTDESCRIPTOR \SFDescent) of POSTSCRIPTFONT ) POSTSCRIPTBOTTOMMARGIN)) then (\NEWPAGE.PSC STREAM) else (\MOVETO.PSC STREAM POSTSCRIPTX POSTSCRIPTY]) (\DSPROTATE.PSC [LAMBDA (STREAM ROTATION) (* ; "Edited 22-Feb-89 13:47 by snow") (* ;; "rotate the postscript stream by ROTATION") (* ;; "we only know 90 degrees of rotation for now.") (LET ((IMAGEDATA (fetch (STREAM IMAGEDATA) of STREAM))) (replace POSTSCRIPTLANDSCAPE of IMAGEDATA with (IF (EQ ROTATION 0) THEN NIL ELSE T)) (\NEWPAGE.PSC STREAM)) 1]) (\DSPTRANSLATE.PSC [LAMBDA (STREAM TX TY) (* ; "Edited 22-Feb-89 11:40 by snow") (* ;; "the translation happens automatically when we do a rotate. This isn't really a translate function, but it works for the simple rotate by 90 case that occurs most often.") 1]) (\DRAWPOINT.PSC [LAMBDA (STREAM X Y BRUSH OPERATION) (* ; "Edited 22-Feb-89 15:24 by snow") (* ;; "draw a point on the stream ") (IF (BITMAPP BRUSH) THEN (LET ((WIDTH (BITMAPWIDTH BRUSH)) (HEIGHT (BITMAPHEIGHT BRUSH))) (BITBLT BRUSH 0 0 STREAM (- X (IQUOTIENT WIDTH 2)) (- Y (IQUOTIENT HEIGHT 2)) WIDTH HEIGHT OPERATION)) ELSE (\DRAWLINE.PSC STREAM X Y X Y BRUSH OPERATION]) ) (RPAQ \POSTSCRIPT.ORIENTATION.MENU (create MENU ITEMS _ '(("Landscape" T "Print this file/document/image in Landscape Orientation" ) ("Portrait" 'NIL "Print this file/document/image in Portrait Orientation" )) TITLE _ "Orientation" CENTERFLG _ T MENUOFFSET _ (create POSITION XCOORD _ -1 YCOORD _ 0) CHANGEOFFSETFLG _ 'Y)) (RPAQ PS.BITMAPARRAY (READARRAY-FROM-LIST 16 (QUOTE BYTE) 0 (QUOTE (48 49 50 51 52 53 54 55 56 57 65 66 67 68 69 70 NIL)))) (RPAQQ \POSTSCRIPT.JOB.SETUP ("/s /show load def" "/mto /moveto load def" "/ellipsedict 9 dict def" "ellipsedict /mtrx matrix put" "/ellipse" " { ellipsedict begin" " /endangle exch def" " /startangle exch def" " /orientation exch def" " /minorrad exch def" " /majorrad exch def" " /y exch def" " /x exch def" " /savematrix mtrx currentmatrix def" " x y translate" " orientation rotate" " majorrad minorrad scale" " 0 0 1 startangle endangle arc" " savematrix setmatrix" " end } bind def" "/concatprocs" " {/proc2 exch cvlit def" " /proc1 exch cvlit def" " /newproc proc1 length proc2 length add array def" " newproc 0 proc1 putinterval" " newproc proc1 length proc2 putinterval" " newproc cvx" " } bind def" "/resmatrix matrix def" "/findresolution" " {72 0 resmatrix defaultmatrix dtransform" " /yres exch def /xres exch def" " xres dup mul yres dup mul add sqrt" " } bind def" "/thebitimage" " {/maskp exch def" " /bihgt exch def" " /biwid exch def" " /strbuf biwid 8 div ceiling cvi string def" " {1 exch sub} currenttransfer concatprocs settransfer" " biwid bihgt" " maskp { false } { 1 } ifelse" " [biwid 0 0 bihgt 0 0]" " { currentfile strbuf readhexstring pop }" " maskp { imagemask } { image } ifelse" " } bind def" "/setuserscreendict 22 dict def" "setuserscreendict begin" " /tempctm matrix def" " /temprot matrix def" " /tempscale matrix def" "end" "/setuserscreen" " {setuserscreendict begin" " /spotfunction exch def" " /screenangle exch def" " /cellsize exch def" " /m tempctm currentmatrix def" " /rm screenangle temprot rotate def" " /sm cellsize dup tempscale scale def" " sm rm m m concatmatrix m concatmatrix pop" " 1 0 m dtransform /y1 exch def /x1 exch def" " /veclength x1 dup mul y1 dup mul add sqrt def" " /frequency findresolution veclength div def" " /newscreenangle y1 x1 atan def" " m 2 get m 1 get mul m 0 get m 3 get mul sub" " 0 gt { { neg } /spotfunction load concatprocs" " /spotfunction exch def } if" " frequency newscreenangle /spotfunction load setscreen" " end" " } bind def" "/setpatterndict 18 dict def" "setpatterndict begin" " /bitison" " {/ybit exch def /xbit exch def" " /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def" " /mask 1 7 xbit 8 mod sub bitshift def" " bytevalue mask and 0 ne" " } bind def" "end" "/bitpatternspotfunction" " {setpatterndict begin" " /y exch def /x exch def" " /xindex x 1 add 2 div bpside mul cvi def" " /yindex y 1 add 2 div bpside mul cvi def" " xindex yindex bitison" " {/onbits onbits 1 add def 1}" " {/offbits offbits 1 add def 0} ifelse" " end" " } bind def" "/setpattern" " {setpatterndict begin" " /cellsz exch def" " /angle exch def" " /bwidth exch def" " /bpside exch def" " /bstring exch def" " /onbits 0 def /offbits 0 def" " cellsz angle /bitpatternspotfunction load setuserscreen" " {} settransfer" " offbits offbits onbits add div setgray" " end" " } bind def" "%%%%EndProlog" "%%%%BeginSetup" "clippath pathbbox" "/ymax exch def /xmax exch def /ymin exch def /xmin exch def")) (RPAQQ SlopeMenuItems ((Italic 'ITALIC "This is an Italic Slope font") (Regular 'REGULAR "This is a Regular Slope font"))) (RPAQQ WeightMenuItems ((Bold 'BOLD "This is a Bold Weight font") (Medium 'MEDIUM "This is a Medium Weight font") (Light 'LIGHT "This is a Light Weight font"))) (DECLARE%: EVAL@COMPILE (RPAQQ GOLDEN.RATIO 1.618034) (CONSTANTS (GOLDEN.RATIO 1.618034)) ) (RPAQ? POSTSCRIPT.BITMAP.SCALE 1) (RPAQ? POSTSCRIPT.IMAGESIZEFACTOR 1.0) (RPAQ? POSTSCRIPT.PREFER.LANDSCAPE NIL) (RPAQ? POSTSCRIPT.TEXTFILE.LANDSCAPE NIL) (RPAQ? POSTSCRIPT.TEXTURE.SCALE 4) (RPAQ? POSTSCRIPTFONTDIRECTORIES '("{DSK}FONTS>PSC>")) (RPAQ? \POSTSCRIPT.LONGEDGE.SHIFT 0) (RPAQ? \POSTSCRIPT.SHORTEDGE.SHIFT 0) (RPAQ? \POSTSCRIPT.LONGEDGE.PTS (+ (TIMES 72 10.92) \POSTSCRIPT.SHORTEDGE.SHIFT)) (RPAQ? \POSTSCRIPT.SHORTEDGE.PTS (+ (TIMES 72 8.0) \POSTSCRIPT.LONGEDGE.SHIFT)) (RPAQ? \POSTSCRIPT.MAX.WILD.FONTSIZE 72) (ADDTOVAR POSTSCRIPT.FONT.ALIST (HELVETICA . HELVETICA) (TIMESROMAN . TIMES) (TIMESROMAND . TIMES) (COURIER . COURIER) (GACHA . COURIER) (CLASSIC . TIMES) (MODERN . HELVETICA) (CREAM . HELVETICA) (TERMINAL . COURIER) (LOGO . HELVETICA)) (ADDTOVAR PRINTERTYPES ((POSTSCRIPT) (CANPRINT (POSTSCRIPT)) (STATUS TRUE) (PROPERTIES NILL) (SEND POSTSCRIPT.SEND) (BITMAPSCALE POSTSCRIPT.BITMAPSCALE) (BITMAPFILE (POSTSCRIPT.HARDCOPYW FILE BITMAP SCALEFACTOR REGION ROTATION TITLE)))) (ADDTOVAR PRINTFILETYPES (POSTSCRIPT (TEST POSTSCRIPTFILEP) (EXTENSION (PS PSC)) (CONVERSION (TEXT POSTSCRIPT.TEXT TEDIT POSTSCRIPT.TEDIT)))) (ADDTOVAR IMAGESTREAMTYPES (POSTSCRIPT (OPENSTREAM OPENPOSTSCRIPTSTREAM) (FONTCREATE POSTSCRIPT.FONTCREATE) (FONTSAVAILABLE POSTSCRIPT.FONTSAVAILABLE) (CREATECHARSET NILL))) (DECLARE%: DOEVAL@COMPILE DONTCOPY (GLOBALVARS DEFAULTPRINTINGHOST POSTSCRIPT.BITMAP.SCALE POSTSCRIPT.FONT.ALIST POSTSCRIPT.PREFER.LANDSCAPE POSTSCRIPT.TEXTFILE.LANDSCAPE POSTSCRIPT.TEXTURE.SCALE POSTSCRIPTFONTDIRECTORIES \POSTSCRIPT.JOB.SETUP \POSTSCRIPT.LONGEDGE.PTS \POSTSCRIPT.LONGEDGE.SHIFT \POSTSCRIPT.MAX.WILD.FONTSIZE \POSTSCRIPT.ORIENTATION.MENU \POSTSCRIPT.SHORTEDGE.PTS \POSTSCRIPT.SHORTEDGE.SHIFT \POSTSCRIPTIMAGEOPS) ) (FILESLOAD PS-SEND) (POSTSCRIPT.INIT) (PUTPROPS POSTSCRIPT FILETYPE :TCOMPL) (PUTPROPS POSTSCRIPT MAKEFILE-ENVIRONMENT (:PACKAGE "INTERLISP" :READTABLE "INTERLISP")) (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDTOVAR NLAMA ) (ADDTOVAR NLAML ) (ADDTOVAR LAMA POSTSCRIPT.PUTCOMMAND) ) (PUTPROPS POSTSCRIPT COPYRIGHT ("Beckman Instruments, Inc" 1986 1987 1988 1989)) (DECLARE%: DONTCOPY (FILEMAP (NIL (9155 101635 (CLOSEPOSTSCRIPTSTREAM 9165 . 9380) (OPENPOSTSCRIPTSTREAM 9382 . 14794) ( POSTSCRIPT.BITMAPSCALE 14796 . 17008) (POSTSCRIPT.CLOSESTRING 17010 . 17459) (POSTSCRIPT.FONTCREATE 17461 . 25278) (POSTSCRIPT.FONTSAVAILABLE 25280 . 29046) (POSTSCRIPT.GETFONTID 29048 . 30328) ( POSTSCRIPT.HARDCOPYW 30330 . 33031) (POSTSCRIPT.INIT 33033 . 38121) (POSTSCRIPT.OUTSTR 38123 . 38620) (POSTSCRIPT.PUTBITMAPBYTES 38622 . 40679) (POSTSCRIPT.PUTCOMMAND 40681 . 41085) (POSTSCRIPT.SHOWACCUM 41087 . 42341) (POSTSCRIPT.STARTPAGE 42343 . 45870) (POSTSCRIPT.TEDIT 45872 . 46132) (POSTSCRIPT.TEXT 46134 . 46609) (POSTSCRIPTFILEP 46611 . 47160) (PSCFONT.READFONT 47162 . 48234) (PSCFONT.SPELLFILE 48236 . 48663) (PSCFONT.WRITEFONT 48665 . 49497) (READ-AFM-FILE 49499 . 53395) (\BITBLT.PSC 53397 . 56573) (\BLTSHADE.PSC 56575 . 61298) (\CHARWIDTH.PSC 61300 . 62051) (\DRAWARC.PSC 62053 . 64572) ( \DRAWCIRCLE.PSC 64574 . 66993) (\DRAWCURVE.PSC 66995 . 70820) (\DRAWELLIPSE.PSC 70822 . 73341) ( \DRAWLINE.PSC 73343 . 75058) (\DRAWPOLYGON.PSC 75060 . 78208) (\DSPBOTTOMMARGIN.PSC 78210 . 78603) ( \DSPCLIPPINGREGION.PSC 78605 . 80921) (\DSPFONT.PSC 80923 . 84170) (\DSPLEFTMARGIN.PSC 84172 . 84559) (\DSPLINEFEED.PSC 84561 . 84952) (\DSPRESET.PSC 84954 . 85413) (\DSPRIGHTMARGIN.PSC 85415 . 85805) ( \DSPSCALE.PSC 85807 . 86661) (\DSPSPACEFACTOR.PSC 86663 . 87102) (\DSPTOPMARGIN.PSC 87104 . 87488) ( \DSPXPOSITION.PSC 87490 . 87953) (\DSPYPOSITION.PSC 87955 . 88430) (\FILLCIRCLE.PSC 88432 . 91049) ( \FILLPOLYGON.PSC 91051 . 94736) (\MOVETO.PSC 94738 . 95086) (\NEWPAGE.PSC 95088 . 95318) ( \POSTSCRIPT.OUTCHARFN 95320 . 96082) (\POSTSCRIPT.PUTCHAR 96084 . 98010) (\STRINGWIDTH.PSC 98012 . 99148) (\TERPRI.PSC 99150 . 100132) (\DSPROTATE.PSC 100134 . 100753) (\DSPTRANSLATE.PSC 100755 . 101078) (\DRAWPOINT.PSC 101080 . 101633))))) STOP \ No newline at end of file diff --git a/obsolete/lispusers/POSTSCRIPT-old/POSTSCRIPT.PS b/obsolete/lispusers/POSTSCRIPT-old/POSTSCRIPT.PS deleted file mode 100644 index accfdb48..00000000 --- a/obsolete/lispusers/POSTSCRIPT-old/POSTSCRIPT.PS +++ /dev/null @@ -1 +0,0 @@ -%!PS-Adobe-2.0 %%Title: POSTSCRIPT.PS %%Creator: PostScript ImageStream Driver by Matt Heffron of Beckman Instruments %%CreationDate: 9-Feb-88 14:19:16 %%For: Matt Heffron %%EndComments /s /show load def /mto /moveto load def /ellipsedict 9 dict def ellipsedict /mtrx matrix put /ellipse { ellipsedict begin /endangle exch def /startangle exch def /orientation exch def /minorrad exch def /majorrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate orientation rotate majorrad minorrad scale 0 0 1 startangle endangle arc savematrix setmatrix end } bind def /concatprocs {/proc2 exch cvlit def /proc1 exch cvlit def /newproc proc1 length proc2 length add array def newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx } bind def /resmatrix matrix def /findresolution {72 0 resmatrix defaultmatrix dtransform /yres exch def /xres exch def xres dup mul yres dup mul add sqrt } bind def /thebitimage {/maskp exch def /bihgt exch def /biwid exch def /strbuf biwid 8 div ceiling cvi string def {1 exch sub} currenttransfer concatprocs settransfer biwid bihgt maskp { false } { 1 } ifelse [biwid 0 0 bihgt 0 0] { currentfile strbuf readhexstring pop } maskp { imagemask } { image } ifelse } bind def /setuserscreendict 22 dict def setuserscreendict begin /tempctm matrix def /temprot matrix def /tempscale matrix def end /setuserscreen {setuserscreendict begin /spotfunction exch def /screenangle exch def /cellsize exch def /m tempctm currentmatrix def /rm screenangle temprot rotate def /sm cellsize dup tempscale scale def sm rm m m concatmatrix m concatmatrix pop 1 0 m dtransform /y1 exch def /x1 exch def /veclength x1 dup mul y1 dup mul add sqrt def /frequency findresolution veclength div def /newscreenangle y1 x1 atan def m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt { { neg } /spotfunction load concatprocs /spotfunction exch def } if frequency newscreenangle /spotfunction load setscreen end } bind def /setpatterndict 18 dict def setpatterndict begin /bitison {/ybit exch def /xbit exch def /bytevalue bstring ybit bwidth mul xbit 8 idiv add get def /mask 1 7 xbit 8 mod sub bitshift def bytevalue mask and 0 ne } bind def end /bitpatternspotfunction {setpatterndict begin /y exch def /x exch def /xindex x 1 add 2 div bpside mul cvi def /yindex y 1 add 2 div bpside mul cvi def xindex yindex bitison {/onbits onbits 1 add def 1} {/offbits offbits 1 add def 0} ifelse end } bind def /setpattern {setpatterndict begin /cellsz exch def /angle exch def /bwidth exch def /bpside exch def /bstring exch def /onbits 0 def /offbits 0 def cellsz angle /bitpatternspotfunction load setuserscreen {} settransfer offbits offbits onbits add div setgray end } bind def %%EndProlog %%BeginSetup clippath pathbbox /ymax exch def /xmax exch def /ymin exch def /xmin exch def /imagesizefactor 1.0 def %%EndSetup /Courier findfont 800 scalefont setfont %%BeginPageSetup xmin -5 add ymin 0 add translate 0.01 imagesizefactor mul 0.01 imagesizefactor mul scale %%EndPageSetup /savepage save def newpath 0.0 0.0 mto 57100.0 0 rlineto 0 78624.0 rlineto -57100 0 rlineto closepath clip newpath /Courier findfont 800 scalefont setfont 0 77940 mto initclip newpath 0 0 moveto 57100 0 rlineto 0 78624 rlineto -57100 0 rlineto closepath clip newpath 7200 73200 mto /Helvetica findfont 2400 scalefont setfont (XEROX) show 15603 73200 mto /Helvetica findfont 600 scalefont setfont 46410 73200 mto 46410 73200 mto /Helvetica findfont 1000 scalefont setfont (POSTSCRIPT) show 52800 73200 mto 7200 72470 mto gsave newpath 200 setlinewidth 0 setlinecap 7200 72570 mto 52800 72570 lineto stroke grestore 52800 72570 mto 52800 72470 mto 52800 72470 mto 21000 71599 mto gsave newpath 400 setlinewidth 0 setlinecap 21000 71799 mto 38400 71799 lineto stroke grestore 38400 71799 mto 38400 71599 mto 38400 71599 mto 21000 71099 mto gsave newpath 100 setlinewidth 0 setlinecap 21000 71149 mto 38400 71149 lineto stroke grestore 38400 71149 mto 38400 71099 mto 38400 71099 mto 25867 68971 mto /Helvetica-Bold findfont 1200 scalefont setfont (POSTSCRIPT) show 33533 68971 mto 21000 67606 mto gsave newpath 100 setlinewidth 0 setlinecap 21000 67656 mto 38400 67656 lineto stroke grestore 38400 67656 mto 38400 67606 mto 38400 67606 mto 21000 66806 mto gsave newpath 400 setlinewidth 0 setlinecap 21000 67006 mto 38400 67006 lineto stroke grestore 38400 67006 mto 38400 66806 mto 38400 66806 mto 17990 63766 mto /Helvetica findfont 1000 scalefont setfont (By: Matt Heffron \(BEC.HEFFRON@ECLA.USC.EDU\)) show 42009 63766 mto 7200 61105 mto /Helvetica-Bold findfont 1000 scalefont setfont (INTRODUCTION) show 14866 61105 mto /Helvetica findfont 1000 scalefont setfont 14866 61105 mto 7200 58444 mto (The PostScript package defines a set of imageops for printers which understand the PostScript page) 81.00001 0 32 4 -1 roll widthshow 52800 58444 mto 7200 56883 mto (description language by Adobe. At Beckman we have successfully used TEdit, Sketch, and) 390.76923 0 32 4 -1 roll widthshow 52799 56883 mto 7200 55322 mto (HARDCOPYW to an Apple LaserWriter and an AST TurboLaser PS. \(Actually, the PostScript) 322.7692 0 32 4 -1 roll widthshow 52799 55322 mto 7200 53761 mto (imagestream output was directed to a file, which was then moved to a PC which actually) 438.93338 0 32 4 -1 roll widthshow 52799 53761 mto 7200 52200 mto (communicated with the laser printer.\) The PostScript imagestream driver installs itself when it is) 191.0 0 32 4 -1 roll widthshow 52800 52200 mto 7200 50639 mto (loaded. All symbols in the PostScript driver are located in the INTERLISP: package.) show 44438 50639 mto 7200 47978 mto /Helvetica-Bold findfont 1000 scalefont setfont (VARIABLES) show 12978 47978 mto 7200 45317 mto /Helvetica findfont 1000 scalefont setfont (POSTSCRIPT.FONT.ALIST) show 19647 45317 mto /Helvetica findfont 1000 scalefont setfont 47242 45317 mto 47242 45317 mto /Helvetica findfont 1000 scalefont setfont ([InitVariable]) show 52800 45317 mto 7200 42656 mto (POSTSCRIPT.FONT.ALIST is an ALIST mapping Xerox Lisp font names intothe root names of) 307.8333 0 32 4 -1 roll widthshow 52799 42656 mto 7200 41095 mto (PostScript font files. It is also used for font family coercions. The default value should be acceptable) 56.833324 0 32 4 -1 roll widthshow 52799 41095 mto 7200 39534 mto (for any of the fonts which are built into the Apple Laserwriter.) show 34046 39534 mto 7200 36873 mto (POSTSCRIPTFONTDIRECTORIES) show 23146 36873 mto /Helvetica findfont 1000 scalefont setfont 47242 36873 mto 47242 36873 mto /Helvetica findfont 1000 scalefont setfont ([InitVariable]) show 52800 36873 mto 7200 34212 mto (POSTSCRIPTFONTDIRECTORIES is the list of directories where the PostScript .PSCFONT font files) 58.54545 0 32 4 -1 roll widthshow 52799 34212 mto 7200 32651 mto (can be found. The default value is: \("{DSK}FONTS>PSC>"\).) show 40427 32651 mto 7200 29990 mto (\\POSTSCRIPT.SHORTEDGE.SHIFT) show 23647 29990 mto /Helvetica findfont 1000 scalefont setfont 47242 29990 mto 47242 29990 mto /Helvetica findfont 1000 scalefont setfont ([InitVariable]) show 52800 29990 mto 7200 27329 mto (\\POSTSCRIPT.SHORTEDGE.SHIFT is the distance \(in points\) to shift the image perpendicular to the) 67.166664 0 32 4 -1 roll widthshow 52799 27329 mto 7200 25768 mto (short edge of the paper. A positive value gives a shift upward in portrait mode, and to the right in) 140.0 0 32 4 -1 roll widthshow 52800 25768 mto 7200 24207 mto (landscape mode. The default value is: 0.) show 25432 24207 mto 7200 21546 mto (\\POSTSCRIPT.LONGEDGE.SHIFT) show 22981 21546 mto /Helvetica findfont 1000 scalefont setfont 47242 21546 mto 47242 21546 mto /Helvetica findfont 1000 scalefont setfont ([InitVariable]) show 52800 21546 mto 7200 18885 mto (\\POSTSCRIPT.LONGEDGE.SHIFT is the corresponding variable for shifts perpendicular to the long) 141.7 0 32 4 -1 roll widthshow 52799 18885 mto 7200 17324 mto (edge of the paper. A positive value here gives a shift to the right in portrait mode and downward in) 101.09999 0 32 4 -1 roll widthshow 52799 17324 mto 7200 15763 mto (landscape mode. The default value is: 0.) show 25432 15763 mto 7200 13102 mto (\\POSTSCRIPT.SHORTEDGE.PTS) show 22703 13102 mto /Helvetica findfont 1000 scalefont setfont 47242 13102 mto 47242 13102 mto /Helvetica findfont 1000 scalefont setfont ([InitVariable]) show 52800 13102 mto savepage restore showpage %%BeginPageSetup xmin -5 add ymin 0 add translate 0.01 imagesizefactor mul 0.01 imagesizefactor mul scale %%EndPageSetup /savepage save def newpath 0 0 mto 57100 0 rlineto 0 78624 rlineto -57100 0 rlineto closepath clip newpath /Helvetica findfont 1000 scalefont setfont 0 77684 mto initclip newpath 0 0 moveto 57100 0 rlineto 0 78624 rlineto -57100 0 rlineto closepath clip newpath 30322 5021 mto (2) show 30878 5021 mto 7200 73200 mto /Helvetica findfont 2400 scalefont setfont (XEROX) show 15603 73200 mto /Helvetica findfont 600 scalefont setfont 46410 73200 mto 46410 73200 mto /Helvetica findfont 1000 scalefont setfont (POSTSCRIPT) show 52800 73200 mto 7200 72470 mto gsave newpath 200 setlinewidth 0 setlinecap 7200 72570 mto 52800 72570 lineto stroke grestore 52800 72570 mto 52800 72470 mto 52800 72470 mto 7200 71059 mto (\\POSTSCRIPT.SHORTEDGE.PTS indicates the printable region of the page \(in points\) along the short) 16.000013 0 32 4 -1 roll widthshow 52800 71059 mto 7200 69498 mto (edge of the paper. It should be adjusted to allow for any shifts of the image \(see above\). The default) 43.238094 0 32 4 -1 roll widthshow 52799 69498 mto 7200 67937 mto (value is: 576 \(= 8 inches\).) show 18622 67937 mto 7200 65276 mto (\\POSTSCRIPT.LONGEDGE.PTS) show 22037 65276 mto /Helvetica findfont 1000 scalefont setfont 47242 65276 mto 47242 65276 mto /Helvetica findfont 1000 scalefont setfont ([InitVariable]) show 52800 65276 mto 7200 62615 mto (\\POSTSCRIPT.LONGEDGE.PTS indicates the printable region of the page \(in points\) along the long) 99.25001 0 32 4 -1 roll widthshow 52800 62615 mto 7200 61054 mto (edge of the paper. It should be adjusted to allow for any shifts of the image \(see above\). The default) 43.238094 0 32 4 -1 roll widthshow 52799 61054 mto 7200 59493 mto (value is: 786.24 \(= 10.92 inches\).) show 21958 59493 mto 7200 56832 mto (\\POSTSCRIPT.MAX.WILD.FONTSIZE) show 24314 56832 mto /Helvetica findfont 1000 scalefont setfont 47242 56832 mto 47242 56832 mto /Helvetica findfont 1000 scalefont setfont ([InitVariable]) show 52800 56832 mto 7200 54171 mto (\\POSTSCRIPT.MAX.WILD.FONTSIZE indicates the maximum point size that should be returned from) 64.100006 0 32 4 -1 roll widthshow 52799 54171 mto 7200 52610 mto (FONTSAVAILABLE when the SIZE argument is wild \(i.e. *\). All integer pointsizes from 1 to) 353.80002 0 32 4 -1 roll widthshow 52799 52610 mto 7200 51049 mto (\\POSTSCRIPT.MAX.WILD.FONTSIZE will be indicated as available. The default value is: 72.) show 48659 51049 mto 7200 48388 mto (POSTSCRIPT.PREFER.LANDSCAPE) show 24259 48388 mto /Helvetica findfont 1000 scalefont setfont 47242 48388 mto 47242 48388 mto /Helvetica findfont 1000 scalefont setfont ([InitVariable]) show 52800 48388 mto 7200 45727 mto (POSTSCRIPT.PREFER.LANDSCAPE indicates if the OPENIMAGESTREAM method should default) 178.85713 0 32 4 -1 roll widthshow 52799 45727 mto 7200 44166 mto (the orientation of output files to LANDSCAPE. The default value is: NIL.) show 39105 44166 mto 7200 41505 mto (POSTSCRIPT.TEXTFILE.LANDSCAPE) show 24871 41505 mto /Helvetica findfont 1000 scalefont setfont 47242 41505 mto 47242 41505 mto /Helvetica findfont 1000 scalefont setfont ([InitVariable]) show 52800 41505 mto 7200 38844 mto (POSTSCRIPT.TEXTFILE.LANDSCAPE indicates if the printing of TEXT files \(e.g. LISTFILES, ...\)) 252.9 0 32 4 -1 roll widthshow 52799 38844 mto 7200 37283 mto (should force the orientation of output files to LANDSCAPE. The default value is: T.) show 43885 37283 mto 7200 34622 mto (POSTSCRIPT.BITMAP.SCALE) show 21148 34622 mto /Helvetica findfont 1000 scalefont setfont 47242 34622 mto 47242 34622 mto /Helvetica findfont 1000 scalefont setfont ([InitVariable]) show 52800 34622 mto 7200 31961 mto (POSTSCRIPT.BITMAP.SCALE specifies an independent scale factor for display of bitmap images) 219.40001 0 32 4 -1 roll widthshow 52799 31961 mto 7200 30400 mto (\(e.g. window hardcopies\). Values less than 1 will reduce the image size. \(I.e. a value of 0.5 will give a) 29.049988 0 32 4 -1 roll widthshow 52799 30400 mto 7200 28839 mto (half size bitmap image.\) The position of the scaled bitmap will still have the SAME lower-left corner) 102.999985 0 32 4 -1 roll widthshow 52800 28839 mto 7200 27278 mto (\(i.e. the scaled bitmap is not centered in the region of the full size bitmap image\). The default value is:) 20.600004 0 32 4 -1 roll widthshow 52799 27278 mto 7200 25717 mto (1.) show 8034 25717 mto 28833 23656 mto /Helvetica-Bold findfont 1000 scalefont setfont (HINT) show 31166 23656 mto /Helvetica findfont 1000 scalefont setfont 31166 23656 mto 10800 21595 mto (Setting POSTSCRIPT.BITMAP.SCALE to 0.96, instead of 1, will give cleaner BITMAP) 38.50001 0 32 4 -1 roll widthshow 49200 21595 mto 10800 20034 mto (images on a 300 dpi printer. \(This corrects for the 72 ppi imagestream ) 58.529408 0 32 4 -1 roll widthshow 43076 20034 mto /Helvetica-Oblique findfont 1000 scalefont setfont (vs) 58.529408 0 32 4 -1 roll widthshow 44076 20034 mto /Helvetica findfont 1000 scalefont setfont (. the 75 dpi) 58.529408 0 32 4 -1 roll widthshow 49199 20034 mto 10800 18473 mto (printer, using 4x4 device dots per bitmap pixel.\) Also, values of 0.24, 0.48 and 0.72,) 80.93333 0 32 4 -1 roll widthshow 49199 18473 mto 10800 16912 mto (instead of 0.25, 0.5 and 0.75, will also give cleaner images for reduced size output. In) 23.750011 0 32 4 -1 roll widthshow 49200 16912 mto 10800 15351 mto (general, use integer multiples of 0.24 for a 300 dpi printer.) show 36424 15351 mto 7200 12690 mto (POSTSCRIPT.TEXTURE.SCALE) show 22092 12690 mto /Helvetica findfont 1000 scalefont setfont 47242 12690 mto 47242 12690 mto /Helvetica findfont 1000 scalefont setfont ([InitVariable]) show 52800 12690 mto 7200 10029 mto (POSTSCRIPT.TEXTURE.SCALE specifies an independent scale for the display of bitmap textures.) 174.9 0 32 4 -1 roll widthshow 52799 10029 mto 7200 8468 mto (The value represents the number of device space units per texture unit \(bitmap bit\). The default value) 50.06249 0 32 4 -1 roll widthshow 52800 8468 mto savepage restore showpage %%BeginPageSetup xmin -5 add ymin 0 add translate 0.01 imagesizefactor mul 0.01 imagesizefactor mul scale %%EndPageSetup /savepage save def newpath 0 0 mto 57100 0 rlineto 0 78624 rlineto -57100 0 rlineto closepath clip newpath /Helvetica findfont 1000 scalefont setfont 0 77684 mto initclip newpath 0 0 moveto 57100 0 rlineto 0 78624 rlineto -57100 0 rlineto closepath clip newpath 30322 5021 mto (3) show 30878 5021 mto 7200 73200 mto /Helvetica findfont 2400 scalefont setfont (XEROX) show 15603 73200 mto /Helvetica findfont 600 scalefont setfont 46410 73200 mto 46410 73200 mto /Helvetica findfont 1000 scalefont setfont (POSTSCRIPT) show 52800 73200 mto 7200 72470 mto gsave newpath 200 setlinewidth 0 setlinecap 7200 72570 mto 52800 72570 lineto stroke grestore 52800 72570 mto 52800 72470 mto 52800 72470 mto 7200 71059 mto (is 4, which represents each bit of the texture as a 4x4 block, so that textures are approximately the) 115.5 0 32 4 -1 roll widthshow 52800 71059 mto 7200 69498 mto (same resolution as on the screen \(for 300 dpi output devices, such as the Apple Laserwriter\). ) show 48886 69498 mto 7200 66837 mto (The PostScript package extends the allowed representations of a texture, beyond 16-bit FIXP and) 181.15385 0 32 4 -1 roll widthshow 52799 66837 mto 7200 65276 mto (16x16 bitmap, to ANY square bitmap. \(If the bitmap is not square, its longer edge is truncated from the) 4.1052732 0 32 4 -1 roll widthshow 52799 65276 mto 7200 63715 mto (top or right to make it square.\) Use this feature with caution, as large bitmap textures, or sizes other) 71.52632 0 32 4 -1 roll widthshow 52799 63715 mto 7200 62154 mto (than multiples of 16 bits square, require large amounts of storage in the PostScript interpreter \(in the) 81.37499 0 32 4 -1 roll widthshow 52800 62154 mto 7200 60593 mto (printer controller\), and can cause limitcheck errors when actually printing.) show 39544 60593 mto 7200 57932 mto (Anywhere that a texture or color can be used on an imagestream or in the specification of a BRUSH,) 66.166664 0 32 4 -1 roll widthshow 52799 57932 mto 7200 56371 mto (you can instead give a FLOATP between 0.0 and 1.0 \(inclusive\) to represent a PostScript halftone gray) 1.3749862 0 32 4 -1 roll widthshow 52800 56371 mto 7200 54810 mto (shade. \(0.0 is black and 1.0 is white. Specifically, the value sets the brightness of the shade.\) The) 84.45 0 32 4 -1 roll widthshow 52799 54810 mto 7200 53249 mto (value you specify will not be range checked, and will be passed directly through to the PostScript) 178.62498 0 32 4 -1 roll widthshow 52800 53249 mto 7200 51688 mto (setgray operator. \(E.g. you can pass 0.33 as the color to DRAWLINE to get a dark gray line with) 153.36842 0 32 4 -1 roll widthshow 52799 51688 mto 7200 50127 mto (approximately 67% of the pixels in the line black.\)) show 29098 50127 mto 7200 47466 mto /Helvetica-Bold findfont 1000 scalefont setfont (MISCELLANEOUS) show 15867 47466 mto 7200 44805 mto /Helvetica findfont 1000 scalefont setfont (The SCALE of a PostScript imagestream is 100. This is to allow enough resolution in the width) 210.70587 0 32 4 -1 roll widthshow 52799 44805 mto 7200 43244 mto (information for fonts to enable TEdit to correctly fill and justify text.) show 36379 43244 mto 7200 40583 mto (The first time any PostScript imagestream is created \(even if only to hardcopy a bitmap or window\) the) 21.235302 0 32 4 -1 roll widthshow 52799 40583 mto 7200 39022 mto (DEFAULTFONT is instantiated \(unless a FONTS option was given to the OPENIMAGESTREAM, in) 132.16666 0 32 4 -1 roll widthshow 52799 39022 mto 7200 37461 mto (which case the initial font for the imagestream will be set to that font, or to the CAR if a list\).) show 47495 37461 mto 7200 34800 mto (The PostScript imagestream method for FILLPOLYGON uses the global variable FILL.WRULE as the) 62.41665 0 32 4 -1 roll widthshow 52799 34800 mto 7200 33239 mto (default value for the WINDINGNUMBER argument. \(This is the same variable which is used by the) 109.5 0 32 4 -1 roll widthshow 52800 33239 mto 7200 31678 mto (DISPLAY imagestream method for FILLPOLYGON.\)) show 30375 31678 mto 7200 29017 mto (The PostScript imagestream methods for OPENIMAGESTREAM and SEND.FILE.TO.PRINTER) 457.0 0 32 4 -1 roll widthshow 52800 29017 mto 7200 27456 mto (\(OPENPOSTSCRIPTSTREAM and POSTSCRIPT.SEND, respectively\), support an) 1751.4 0 32 4 -1 roll widthshow 52799 27456 mto 7200 25895 mto (IMAGESIZEFACTOR option to change the overall size of the printed image. The) 812.5834 0 32 4 -1 roll widthshow 52799 25895 mto 7200 24334 mto (IMAGESIZEFACTOR re-sizing affects the entire printed output \(specifically, it superimposes its effects) 37.999992 0 32 4 -1 roll widthshow 52800 24334 mto 7200 22773 mto (upon those of POSTSCRIPT.BITMAP.SCALE and POSTSCRIPT.TEXTURE.SCALE\). Values greater) 66.0 0 32 4 -1 roll widthshow 52800 22773 mto 7200 21212 mto (than 1 enlarge the printed image, and values less than 1 reduce it. \(Specifying an) 627.60004 0 32 4 -1 roll widthshow 52799 21212 mto 7200 19651 mto (IMAGESIZEFACTOR of 0 will cause a divide by zero error!\) ) show 34152 19651 mto 7200 16990 mto (The PostScript package is contained in the files: POSTSCRIPT.LCOM & PS-SEND.LCOM, with the) 136.66667 0 32 4 -1 roll widthshow 52799 16990 mto 7200 15429 mto (source in the files: POSTSCRIPT & PS-SEND. The module PS-SEND.LCOM is required and will be) 60.937504 0 32 4 -1 roll widthshow 52800 15429 mto 7200 13868 mto (loaded automatically when POSTSCRIPT.LCOM is loaded. It contains the function which is called by) 57.428555 0 32 4 -1 roll widthshow 52799 13868 mto 7200 12307 mto (SEND.FILE.TO.PRINTER to actually transmit the file to the printer. It is, by its nature, quite site) 213.5625 0 32 4 -1 roll widthshow 52800 12307 mto 7200 10746 mto (specific, so it is in a separate file to make modifying it for any site relatively simple. System record) 118.52633 0 32 4 -1 roll widthshow 52799 10746 mto 7200 9185 mto (declarations required to compile POSTSCRIPT can be found in EXPORTS.ALL. ) show 42826 9185 mto savepage restore showpage %%BeginPageSetup xmin -5 add ymin 0 add translate 0.01 imagesizefactor mul 0.01 imagesizefactor mul scale %%EndPageSetup /savepage save def newpath 0 0 mto 57100 0 rlineto 0 78624 rlineto -57100 0 rlineto closepath clip newpath /Helvetica findfont 1000 scalefont setfont 0 77684 mto initclip newpath 0 0 moveto 57100 0 rlineto 0 78624 rlineto -57100 0 rlineto closepath clip newpath 30322 5021 mto (4) show 30878 5021 mto 7200 73200 mto /Helvetica findfont 2400 scalefont setfont (XEROX) show 15603 73200 mto /Helvetica findfont 600 scalefont setfont 46410 73200 mto 46410 73200 mto /Helvetica findfont 1000 scalefont setfont (POSTSCRIPT) show 52800 73200 mto 7200 72470 mto gsave newpath 200 setlinewidth 0 setlinecap 7200 72570 mto 52800 72570 lineto stroke grestore 52800 72570 mto 52800 72470 mto 52800 72470 mto 7200 71059 mto (I'm pretty sure that the output generated by the PostScript imageops fully conforms to the Adobe) 168.06252 0 32 4 -1 roll widthshow 52800 71059 mto 7200 69498 mto (Systems Document Structuring Conventions, Version 2.0, January 31, 1987.) show 40993 69498 mto /Helvetica-Bold findfont 1000 scalefont setfont 40993 69498 mto 7200 66837 mto (Including Other PostScript Operations) show 25426 66837 mto 7200 64176 mto /Helvetica findfont 1000 scalefont setfont (If you wish to insert your own specific PostScript operations into a PostScript imagestream, you can do) 15.499995 0 32 4 -1 roll widthshow 52800 64176 mto 7200 62615 mto (so with either POSTSCRIPT.OUTSTR or POSTSCRIPT.PUTCOMMAND.) show 39816 62615 mto 7200 59954 mto (\(POSTSCRIPT.OUTSTR ) show 18868 59954 mto /Helvetica-Oblique findfont 1000 scalefont setfont (STREAM STRING) show 27091 59954 mto /Helvetica findfont 1000 scalefont setfont (\)) show 27424 59954 mto /Helvetica findfont 1000 scalefont setfont 48409 59954 mto 48409 59954 mto /Helvetica findfont 1000 scalefont setfont ([Function]) show 52800 59954 mto 7200 57293 mto (POSTSCRIPT.OUTSTR outputs a string or value to the imagestream. ) 164.7143 0 32 4 -1 roll widthshow 40247 57293 mto /Helvetica-Oblique findfont 1000 scalefont setfont (STREAM) 164.7143 0 32 4 -1 roll widthshow 44414 57293 mto /Helvetica findfont 1000 scalefont setfont ( must be an open) 164.7143 0 32 4 -1 roll widthshow 52799 57293 mto 7200 55732 mto (PostScript imagestream. ) 77.42856 0 32 4 -1 roll widthshow 18880 55732 mto /Helvetica-Oblique findfont 1000 scalefont setfont (STRING) 77.42856 0 32 4 -1 roll widthshow 22658 55732 mto /Helvetica findfont 1000 scalefont setfont ( is the value to output \(STRINGP and LITATOM are most efficient,) 77.42856 0 32 4 -1 roll widthshow 52799 55732 mto 7200 54171 mto (but any value can be output \(its PRIN1 pname is used\)\).) show 32045 54171 mto 7200 51510 mto (\(POSTSCRIPT.PUTCOMMAND ) show 22034 51510 mto /Helvetica-Oblique findfont 1000 scalefont setfont (STREAM STRING) show 30257 51510 mto 30257 51310 mto (1) show 30813 51510 mto ( ... STRING) show 35981 51510 mto 35981 51310 mto (n) show 36537 51510 mto /Helvetica findfont 1000 scalefont setfont (\)) show 36870 51510 mto /Helvetica findfont 1000 scalefont setfont 43629 51510 mto 43629 51510 mto /Helvetica findfont 1000 scalefont setfont ([NoSpread Function]) show 52800 51510 mto 7200 48649 mto (POSTSCRIPT.PUTCOMMAND is more general for sequences of commands and values. It calls) 238.75 0 32 4 -1 roll widthshow 52800 48649 mto 7200 47088 mto (POSTSCRIPT.OUTSTR repeatedly to output each of the ) show 32600 47088 mto /Helvetica-Oblique findfont 1000 scalefont setfont (STRING) show 36378 47088 mto 36378 46888 mto (i) show 36600 47088 mto /Helvetica findfont 1000 scalefont setfont ( arguments to ) show 42992 47088 mto /Helvetica-Oblique findfont 1000 scalefont setfont (STREAM) show 47159 47088 mto /Helvetica findfont 1000 scalefont setfont (.) show 47437 47088 mto 7200 44227 mto (\(\\POSTSCRIPT.OUTCHARFN ) show 21312 44227 mto /Helvetica-Oblique findfont 1000 scalefont setfont (STREAM CHAR) show 28590 44227 mto /Helvetica findfont 1000 scalefont setfont (\)) show 28923 44227 mto /Helvetica findfont 1000 scalefont setfont 48409 44227 mto 48409 44227 mto /Helvetica findfont 1000 scalefont setfont ([Function]) show 52800 44227 mto 7200 41566 mto (\\POSTSCRIPT.OUTCHARFN is used to output the characters forming the text of a PostScript string) 113.30768 0 32 4 -1 roll widthshow 52799 41566 mto 7200 40005 mto (\(e.g. the argument to a show or charpath operator\). ) 64.06249 0 32 4 -1 roll widthshow 31075 40005 mto /Helvetica-Oblique findfont 1000 scalefont setfont (STREAM) 64.06249 0 32 4 -1 roll widthshow 35242 40005 mto /Helvetica findfont 1000 scalefont setfont ( is the open PostScript imagestream to) 64.06249 0 32 4 -1 roll widthshow 52800 40005 mto 7200 38444 mto (output to, and ) 18.894743 0 32 4 -1 roll widthshow 13650 38444 mto /Helvetica-Oblique findfont 1000 scalefont setfont (CHAR) 18.894743 0 32 4 -1 roll widthshow 16483 38444 mto /Helvetica findfont 1000 scalefont setfont ( is the CHARCODE of the character to output. The ) 18.894743 0 32 4 -1 roll widthshow 39590 38444 mto /Helvetica-Bold findfont 1000 scalefont setfont (/) 18.894743 0 32 4 -1 roll widthshow 39868 38444 mto /Helvetica findfont 1000 scalefont setfont ( \(slash\), ) 18.894743 0 32 4 -1 roll widthshow 43740 38444 mto /Helvetica-Bold findfont 1000 scalefont setfont (\() 18.894743 0 32 4 -1 roll widthshow 44073 38444 mto /Helvetica findfont 1000 scalefont setfont ( and ) 18.894743 0 32 4 -1 roll widthshow 46335 38444 mto /Helvetica-Bold findfont 1000 scalefont setfont (\)) 18.894743 0 32 4 -1 roll widthshow 46668 38444 mto /Helvetica findfont 1000 scalefont setfont ( \(parenthesis\)) 18.894743 0 32 4 -1 roll widthshow 52799 38444 mto 7200 36883 mto (characters will be quoted with) 30.882341 0 32 4 -1 roll widthshow 20439 36883 mto /Helvetica-Bold findfont 1000 scalefont setfont ( /) 30.882341 0 32 4 -1 roll widthshow 21026 36883 mto /Helvetica findfont 1000 scalefont setfont (, and characters with ASCII values less than 32 \(space\) or greater than) 30.882341 0 32 4 -1 roll widthshow 52799 36883 mto 7200 35322 mto (126 \(tilde\) will be output as ) 36.687508 0 32 4 -1 roll widthshow 19593 35322 mto /Helvetica-Bold findfont 1000 scalefont setfont (/nnn) 36.687508 0 32 4 -1 roll widthshow 21704 35322 mto /Helvetica findfont 1000 scalefont setfont ( \(in octal\). \\POSTSCRIPT.OUTCHARFN will output the ) 36.687508 0 32 4 -1 roll widthshow 46836 35322 mto /Helvetica-Bold findfont 1000 scalefont setfont (\() 36.687508 0 32 4 -1 roll widthshow 47169 35322 mto /Helvetica findfont 1000 scalefont setfont ( character to) 36.687508 0 32 4 -1 roll widthshow 52800 35322 mto 7200 33761 mto (open the string if necessary. It is important to use POSTSCRIPT.CLOSESTRING to output the ) 232.07143 0 32 4 -1 roll widthshow 52466 33761 mto /Helvetica-Bold findfont 1000 scalefont setfont (\)) 232.07143 0 32 4 -1 roll widthshow 52799 33761 mto /Helvetica findfont 1000 scalefont setfont 52799 33761 mto 7200 32200 mto (character to close the string, because it also clears the stream state flag that indicates that a string is in) 4.1579 0 32 4 -1 roll widthshow 52799 32200 mto 7200 30639 mto (progress \(otherwise, the next POSTSCRIPT.PUTCOMMAND would output the commands to close the) 2.4166815 0 32 4 -1 roll widthshow 52799 30639 mto 7200 29078 mto (string and show it\).) show 15592 29078 mto 7200 26417 mto /Helvetica-Bold findfont 1000 scalefont setfont (Warning) show 11200 26417 mto 7200 23756 mto /Helvetica findfont 1000 scalefont setfont (Do not attempt to create a PostScript font larger than about 600 points, as much of Interlisp's font) 154.88237 0 32 4 -1 roll widthshow 52799 23756 mto 7200 22195 mto (information is stored in SMALLP integers, and too large a font would overflow the font's height, or the) 56.88234 0 32 4 -1 roll widthshow 52799 22195 mto 7200 20634 mto (width for any of the wider characters. \(I know that 600 points is a rediculously large limit \(about 8.3) 100.78947 0 32 4 -1 roll widthshow 52799 20634 mto 7200 19073 mto (inches\), but I thought I'd better mention it, or someone might try it!\)) show 36658 19073 mto 7200 16412 mto /Helvetica-Bold findfont 1000 scalefont setfont (Known Problems/Limitations) show 20980 16412 mto 7200 13751 mto /Helvetica findfont 1000 scalefont setfont (The output generated for a PostScript imagestream is rather brute force. It isn't particularly careful to) 60.624992 0 32 4 -1 roll widthshow 52800 13751 mto 7200 12190 mto (generate the smallest output file for a given sequence of operations. Specifically, it often generates) 112.533325 0 32 4 -1 roll widthshow 52799 12190 mto 7200 10629 mto (extra end-of-lines between PostScript operator sequences \(this has no effect on the printed output,) 151.23079 0 32 4 -1 roll widthshow 52799 10629 mto 7200 9068 mto (only on the file size\).) show 16315 9068 mto savepage restore showpage %%BeginPageSetup xmin -5 add ymin 0 add translate 0.01 imagesizefactor mul 0.01 imagesizefactor mul scale %%EndPageSetup /savepage save def newpath 0 0 mto 57100 0 rlineto 0 78624 rlineto -57100 0 rlineto closepath clip newpath /Helvetica findfont 1000 scalefont setfont 0 77684 mto initclip newpath 0 0 moveto 57100 0 rlineto 0 78624 rlineto -57100 0 rlineto closepath clip newpath 30322 5021 mto (5) show 30878 5021 mto 7200 73200 mto /Helvetica findfont 2400 scalefont setfont (XEROX) show 15603 73200 mto /Helvetica findfont 600 scalefont setfont 46410 73200 mto 46410 73200 mto /Helvetica findfont 1000 scalefont setfont (POSTSCRIPT) show 52800 73200 mto 7200 72470 mto gsave newpath 200 setlinewidth 0 setlinecap 7200 72570 mto 52800 72570 lineto stroke grestore 52800 72570 mto 52800 72470 mto 52800 72470 mto 7200 71059 mto (Using BITMAPs or Functions as BRUSH arguments to the curve drawing functions is not supported,) 101.142845 0 32 4 -1 roll widthshow 52799 71059 mto 7200 69498 mto (nor is using a non-ROUND BRUSH with DRAWCIRCLE or DRAWELLIPSE.) show 40762 69498 mto 7200 66837 mto (There is no support for NS character sets other than 0, and there is no translation of the character) 134.00002 0 32 4 -1 roll widthshow 52800 66837 mto 7200 65276 mto (code values from NS encoding to PostScript encoding.) show 31378 65276 mto 7200 62615 mto (There is no support for color.) show 19983 62615 mto 7200 59954 mto (\\POSTSCRIPT.OUTCHARFN is pretty wimpy in its handling of TAB characters. It just outputs 8) 228.42859 0 32 4 -1 roll widthshow 52799 59954 mto 7200 58393 mto (SPACEs for the TAB.) show 16704 58393 mto 7200 55732 mto (I haven't yet documented how to build the .PSCFONT files for any new fonts that become available, I'll) 21.000006 0 32 4 -1 roll widthshow 52800 55732 mto 7200 54171 mto (do that eventually.) show 15316 54171 mto savepage restore showpage %%Trailer \ No newline at end of file diff --git a/obsolete/lispusers/POSTSCRIPT-old/PostScript.TEDIT b/obsolete/lispusers/POSTSCRIPT-old/PostScript.TEDIT deleted file mode 100644 index 83a128d2..00000000 --- a/obsolete/lispusers/POSTSCRIPT-old/PostScript.TEDIT +++ /dev/null @@ -1,14 +0,0 @@ -en·vÅos POSTSCRIPT 2 4 1 POSTSCRIPT 1 4 By: Matt Heffron (BEC.HEFFRON@ECLA.USC.EDU) INTRODUCTION The PostScript package defines a set of imageops for printers which understand the PostScript page description language by Adobe. At Beckman we have successfully used TEdit, Sketch, LISTFILES, and HARDCOPYW to an Apple LaserWriter and an AST TurboLaser PS. The PostScript imagestream driver installs itself when it is loaded. All symbols in the PostScript driver are located in the INTERLISP: package. VARIABLES POSTSCRIPT.FONT.ALIST [InitVariable] POSTSCRIPT.FONT.ALIST is an ALIST mapping Xerox Lisp font names into the root names of PostScript font files. It is also used for font family coercions. The default value should be acceptable for any of the fonts which are built into the Apple Laserwriter. POSTSCRIPTFONTDIRECTORIES [InitVariable] POSTSCRIPTFONTDIRECTORIES is the list of directories where the PostScript .PSCFONT font files can be found. The default value is: ("{DSK}FONTS>PSC>"). \POSTSCRIPT.SHORTEDGE.SHIFT [InitVariable] \POSTSCRIPT.SHORTEDGE.SHIFT is the distance (in points) to shift the image perpendicular to the short edge of the paper. A positive value gives a shift upward in portrait mode, and to the right in landscape mode. The default value is: 0. \POSTSCRIPT.LONGEDGE.SHIFT [InitVariable] \POSTSCRIPT.LONGEDGE.SHIFT is the corresponding variable for shifts perpendicular to the long edge of the paper. A positive value here gives a shift to the right in portrait mode and downward in landscape mode. The default value is: 0. \POSTSCRIPT.SHORTEDGE.PTS [InitVariable] \POSTSCRIPT.SHORTEDGE.PTS indicates the printable region of the page (in points) along the short edge of the paper. It should be adjusted to allow for any shifts of the image (see above). The default value is: 576 (= 8 inches). \POSTSCRIPT.LONGEDGE.PTS [InitVariable] \POSTSCRIPT.LONGEDGE.PTS indicates the printable region of the page (in points) along the long edge of the paper. It should be adjusted to allow for any shifts of the image (see above). The default value is: 786.24 (= 10.92 inches). HINT The AST TurboLaser PS has an imageable area on the page which is a different size than that of the Apple LaserWriter. The values of \POSTSCRIPT.SHORTEDGE.PTS and \POSTSCRIPT.LONGEDGE.PTS for the AST are 575.76 and 767.76, respectively. \POSTSCRIPT.MAX.WILD.FONTSIZE [InitVariable] \POSTSCRIPT.MAX.WILD.FONTSIZE indicates the maximum point size that should be returned from FONTSAVAILABLE when the SIZE argument is wild (i.e. *). All integer pointsizes from 1 to \POSTSCRIPT.MAX.WILD.FONTSIZE will be indicated as available. The default value is: 72. POSTSCRIPT.PREFER.LANDSCAPE [InitVariable] POSTSCRIPT.PREFER.LANDSCAPE indicates if the OPENIMAGESTREAM method should default the orientation of output files to LANDSCAPE. It can have one of three values: NIL, T, or ASK. NIL means prefer portrait orientation output, T means prefer landscape, and ASK says to bring up a menu to ask the preferred orientation if it wasn't explicitly indicated in the OPENIMAGESTREAM call (with the ROTATION option). The default value is: NIL. POSTSCRIPT.TEXTFILE.LANDSCAPE [InitVariable] POSTSCRIPT.TEXTFILE.LANDSCAPE indicates if the printing of TEXT files (e.g. LISTFILES, ...) should force the orientation of output files to LANDSCAPE. The default value is: NIL. POSTSCRIPT.BITMAP.SCALE [InitVariable] POSTSCRIPT.BITMAP.SCALE specifies an independent scale factor for display of bitmap images (e.g. window hardcopies). Values less than 1 will reduce the image size. (I.e. a value of 0.5 will give a half size bitmap image.) The position of the scaled bitmap will still have the SAME lower-left corner (i.e. the scaled bitmap is not centered in the region of the full size bitmap image). The default value is: 1. HINT Setting POSTSCRIPT.BITMAP.SCALE to 0.96, instead of 1, will give cleaner BITMAP images on a 300 dpi printer. (This corrects for the 72 ppi imagestream vs. the 75 dpi printer, using 4x4 device dots per bitmap pixel.) Also, values of 0.24, 0.48 and 0.72, instead of 0.25, 0.5 and 0.75, will also give cleaner images for reduced size output. In general, use integer multiples of 0.24 for a 300 dpi printer. POSTSCRIPT.TEXTURE.SCALE [InitVariable] POSTSCRIPT.TEXTURE.SCALE specifies an independent scale for the display of bitmap textures. The value represents the number of device space units per texture unit (bitmap bit). The default value is 4, which represents each bit of the texture as a 4x4 block, so that textures are approximately the same resolution as on the screen (for 300 dpi output devices, such as the Apple Laserwriter). The PostScript package extends the allowed representations of a texture, beyond 16-bit FIXP and 16x16 bitmap, to ANY square bitmap. (If the bitmap is not square, its longer edge is truncated from the top or right to make it square.) Use this feature with caution, as large bitmap textures, or sizes other than multiples of 16 bits square, require large amounts of storage in the PostScript interpreter (in the printer controller), and can cause limitcheck errors when actually printing. Anywhere that a texture or color can be used on an imagestream or in the specification of a BRUSH, you can instead give a FLOATP between 0.0 and 1.0 (inclusive) to represent a PostScript halftone gray shade. (0.0 is black and 1.0 is white. Specifically, the value sets the brightness of the shade.) The value you specify will not be range checked, and will be passed directly through to the PostScript setgray operator. (E.g. you can pass 0.33 as the color to DRAWLINE to get a dark gray line with approximately 67% of the pixels in the line black.) POSTSCRIPT.IMAGESIZEFACTOR [InitVariable] POSTSCRIPT.IMAGESIZEFACTOR specifies an independent factor to change the overall size of the printed image. This re-sizing affects the entire printed output (specifically, it superimposes its effects upon those of POSTSCRIPT.BITMAP.SCALE and POSTSCRIPT.TEXTURE.SCALE). Values greater than 1 enlarge the printed image, and values less than 1 reduce it. An invalid POSTSCRIPT.IMAGESIZEFACTOR (i.e. not a positive, non-zero number) will use a value of 1. The BITMAPSCALE function for the POSTSCRIPT printer type does NOT consider the POSTSCRIPT.IMAGESIZEFACTOR when determining the scale factor for a bitmap. MISCELLANEOUS The SCALE of a PostScript imagestream is 100. This is to allow enough resolution in the width information for fonts to enable TEdit to correctly fill and justify text. The first time any PostScript imagestream is created (even if only to hardcopy a bitmap or window) the DEFAULTFONT is instantiated (unless a FONTS option was given to the OPENIMAGESTREAM, in which case the initial font for the imagestream will be set to that font, or to the CAR if a list). The PostScript imagestream method for FILLPOLYGON uses the global variable FILL.WRULE as the default value for the WINDINGNUMBER argument. (This is the same variable which is used by the DISPLAY imagestream method for FILLPOLYGON.) The PostScript imagestream method for OPENIMAGESTREAM (and, therefore, SEND.FILE.TO.PRINTER), supports an IMAGESIZEFACTOR option to change the size of the printed image. The IMAGESIZEFACTOR re-sizing is combined with the POSTSCRIPT.IMAGESIZEFACTOR to produce an overall re-sizing of the printed image. A HEADING option is also supported to give a running header on each page of output. The value of the HEADING option is printed at the top left of the page, followed by "Page " and the appropriate page number. They are printed in the DEFAULTFONT (unless a FONTS option was given to the OPENIMAGESTREAM, in which case it will be that font, or to the CAR if a list). The PostScript package is contained in the files: POSTSCRIPT.LCOM & PS-SEND.LCOM, with the source in the files: POSTSCRIPT & PS-SEND. The module PS-SEND.LCOM is required and will be loaded automatically when POSTSCRIPT.LCOM is loaded. It contains the function which is called by SEND.FILE.TO.PRINTER to actually transmit the file to the printer. It is, by its nature, quite site specific, so it is in a separate file to make modifying it for any site relatively simple. System record declarations required to compile POSTSCRIPT can be found in EXPORTS.ALL. I'm pretty sure that the output generated by the PostScript imageops fully conforms to the Adobe Systems Document Structuring Conventions, Version 2.0, January 31, 1987. Including Other PostScript Operations If you wish to insert your own specific PostScript operations into a PostScript imagestream, you can do so with the following functions: (POSTSCRIPT.OUTSTR STREAM STRING) [Function] POSTSCRIPT.OUTSTR outputs a string or value to the imagestream. STREAM must be an open PostScript imagestream. STRING is the value to output (STRINGP and LITATOM are most efficient, but any value can be output (its PRIN1 pname is used)). (POSTSCRIPT.PUTCOMMAND STREAM STRING1 ... STRINGn) [NoSpread Function] POSTSCRIPT.PUTCOMMAND is more general for sequences of commands and values. It calls POSTSCRIPT.OUTSTR repeatedly to output each of the STRINGi arguments to STREAM. (\POSTSCRIPT.OUTCHARFN STREAM CHAR) [Function] \POSTSCRIPT.OUTCHARFN is used to output the characters forming the text of a PostScript string (e.g. the argument to a show or charpath operator). STREAM is the open PostScript imagestream to output to, and CHAR is the CHARCODE of the character to output. The / (slash), ( and ) (parenthesis) characters will be quoted with /, and characters with ASCII values less than 32 (space) or greater than 126 (tilde) will be output as /nnn (in octal). \POSTSCRIPT.OUTCHARFN will output the ( character to open the string, if necessary. Use POSTSCRIPT.CLOSESTRING (below) to close the string. (POSTSCRIPT.CLOSESTRING STREAM) [Function] POSTSCRIPT.CLOSESTRING closes a PostScript string (e.g. the argument to a show or charpath operator). STREAM is the open PostScript imagestream. It is important to use POSTSCRIPT.CLOSESTRING to output the ) character to close the string, because it also clears the stream state flag that indicates that a string is in progress (otherwise, the next POSTSCRIPT.PUTCOMMAND would output the commands to close the string and show it). Warning Do not attempt to create a PostScript font larger than about 600 points, as much of Interlisp's font information is stored in SMALLP integers, and too large a font would overflow the font's height, or the width for any of the wider characters. (I know that 600 points is a ridiculously large limit (about 8.3 inches), but I thought I'd better mention it, or someone might try it!) Changes from the Lyric Release The Medley release of this PostScript imagestream driver changed the default value of POSTSCRIPT.TEXTFILE.LANDSCAPE from T to NIL. It also added the support for the HEADING option. Known Problems/Limitations The output generated for a PostScript imagestream is rather brute force. It isn't particularly careful to generate the smallest output file for a given sequence of operations. Specifically, it often generates extra end-of-lines between PostScript operator sequences (this has no effect on the printed output, only on the file size). Using BITMAPs or Functions as BRUSH arguments to the curve drawing functions is not supported, nor is using a non-ROUND BRUSH with DRAWCIRCLE or DRAWELLIPSE. There is no support for NS character sets other than 0, and there is no translation of the character code values from NS encoding to PostScript encoding. There is no support for color. \POSTSCRIPT.OUTCHARFN is pretty wimpy in its handling of TAB characters. It just outputs 8 SPACEs for the TAB. I haven't yet documented how to build the .PSCFONT files for any new fonts that become available, I'll do that eventually.(LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "")) (0 0 612 792) ((HEADING NIL (HEADINGTYPE RUNNINGHEAD) (72 732 540 36) NIL) (TEXT NIL NIL (72 72 468 648) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (162 48 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (72 732 540 36) NIL) (TEXT NIL NIL (72 72 468 648) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (162 48 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (72 732 540 36) NIL) (TEXT NIL NIL (72 72 468 648) NIL))))) -5È ÈHÈ -È PAGEHEADING RUNNINGHEAD,66’,È5È È,È ,È,ŠŠ8,ŠŠ8HÈÈ PAGEHEADING RUNNINGHEAD CLASSICCLASSICMODERN -ÿþ HELVETICA -MODERN -MODERN -MODERN MODERN -MODERN -  HRULE.GETFNMODERN -  HRULE.GETFNMODERN -  HRULE.GETFNMODERN -  HRULE.GETFNMODERN   HRULE.GETFNMODERN - • -¤ðîæëí³³˜ýŠé*e©#é¢3©&‰  A*y  ‰  ”62 --f4f gbá~¶Ožšpz.Lâzº \ No newline at end of file diff --git a/obsolete/lispusers/PRESSFROMNS b/obsolete/lispusers/PRESSFROMNS deleted file mode 100644 index 9817f18d..00000000 --- a/obsolete/lispusers/PRESSFROMNS +++ /dev/null @@ -1,1387 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) - -(FILECREATED "14-Jul-2025 23:24:28"  -{DSK}kaplan>Local>medley3.5>working-medley>lispusers>PRESSFROMNS.;3 80159 - - :EDIT-BY rmk - - :CHANGES-TO (FNS GETCHARPRESSTRANSLATION PUTCHARPRESSTRANSLATION) - - :PREVIOUS-DATE " 5-Jul-2025 18:52:47" -{DSK}kaplan>Local>medley3.5>working-medley>lispusers>PRESSFROMNS.;2) - - -(PRETTYCOMPRINT PRESSFROMNSCOMS) - -(RPAQQ PRESSFROMNSCOMS - [(* This file uses CONSTANTS defined in PRESS, so it is necessary to LOADFROM PRESS before - changing this file.) - (FNS \SMASHPRESSFONTS) - (FNS GETCHARPRESSTRANSLATION PRESS.NSARRAY PUTCHARPRESSTRANSLATION) - (FNS \DSPFONT.PRESS \DSPSPACEFACTOR.PRESS \ENTITYSTART.PRESS \SETSPACE.PRESS \STARTPAGE.PRESS - \PRESS.COERCEFONT \DSPFONT.PRESSFONT SETUPFONTS.PRESS) - (FNS \CREATEPRESSFONT \CREATECHARSET.PRESS \CREATECHARSETZERO.PRESS) - (FNS \PRESSCURVE2) - (COMS (* Generic utility for coercing fonts, could be used by other devices) - (FNS \COERCEFONT)) - (ALISTS (FONTCOERCIONS PRESS) - (MISSINGFONTCOERCIONS PRESS)) - (GLOBALVARS FONTCOERCIONS MISSINGFONTCOERCIONS) - (FNS \STRINGWIDTH.PRESS \CHARWIDTH.PRESS \OUTCHARFN.PRESS) - (* * new declaration for PRESSDATA) - (DECLARE%: DONTCOPY (RECORDS PRESSDATA)) - (INITRECORDS PRESSDATA) - (* * NSTOASCIITRANSLATIONS is a list with elements of the form (charset translationArrayName) - %, where translationArrayName is bound to a translation array for charset which contains - (fontFamily charcode) - lists) - (FNS \NSTOASCIIARRAY \NSTOASCIITRANSLATION) - (GLOBALVARS NSTOASCIITRANSLATIONS PRESSFONTFAMILIES) - [INITVARS (PRESSFONTFAMILIES '((GACHA) - (TIMESROMAN) - (HELVETICA) - (SYMBOL) - (MATH) - (HIPPO) - (CYRILLIC) - (NEWVEC) - (SNEWVEC) - (HNEWVEC) - (VNEWVEC] - (INITVARS (NSTOASCIITRANSLATIONS)) - (ADDVARS (NSTOASCIITRANSLATIONS (0 ASCIIFROM0ARRAY) - (38 ASCIIFROM38ARRAY) - (39 ASCIIFROM39ARRAY) - (239 ASCIIFROM239ARRAY))) - (UGLYVARS ASCIIFROM0ARRAY ASCIIFROM38ARRAY ASCIIFROM39ARRAY ASCIIFROM239ARRAY) - (P (\SMASHPRESSFONTS)) - (DECLARE%: DONTCOPY (CONSTANTS (unknownCharTranslation '(MATH 59]) - - - -(* This file uses CONSTANTS defined in PRESS, so it is necessary to LOADFROM PRESS before changing -this file.) - -(DEFINEQ - -(\SMASHPRESSFONTS - [LAMBDA NIL (* ; "Edited 29-Feb-88 10:21 by thh:") - - (* ;; "Executed after all patchfns have been loaded, coerces existing Koto press fonts into NS-type press fonts") - - (for F in (FONTSAVAILABLE '* '* '* '* 'PRESS) do (\CREATECHARSET 0 (FONTCREATE F]) -) -(DEFINEQ - -(GETCHARPRESSTRANSLATION - [LAMBDA (CHARCODE FONT) (* ; "Edited 14-Jul-2025 23:23 by rmk") - (* ; "Edited 5-Jul-2025 18:51 by rmk") - (* thh%: "28-Feb-86 12:03") - (* ; - "returns the Press translation for a character in a font") - (COND - ((OR (CHARCODEP CHARCODE) - (EQ CHARCODE 256)) (* ; - "bitmap for char 256 is what gets printed if char not found") - ) - ((OR (STRINGP CHARCODE) - (LITATOM CHARCODE)) - (SETQ CHARCODE (CHCON1 CHARCODE))) - (T (\ILLEGAL.ARG CHARCODE))) - (LET [TR CSINFO (FONTDESC (FONTCOPY FONT NIL NIL NIL 'PRESS] - (* ; - "fetch the csinfo for the character set of this character.") - (SETQ CSINFO (\GETCHARSETINFO (\CHARSET CHARCODE) - FONTDESC)) - (SETQ TR (\GETBASEPTR (fetch (CHARSETINFO CHARSETBITMAP) of CSINFO) - (UNFOLD (\CHAR8CODE CHARCODE) - 2))) (* ; "Return a copy") - (LIST (CAR TR) - (CDR TR]) - -(PRESS.NSARRAY - [LAMBDA (CHARSET FAMILY ASCIIARRAY) (* thh%: "28-Feb-86 12:08") - - (* using info in ASCIIARRAY or ASCIITONSTRANSLATIONS, creates an array of - (pressFont charcode) lists) - - (LET* ((min (TIMES 256 CHARSET)) - (max (PLUS min 255)) - (array (ARRAY 256 NIL NIL 0))) - [for item in (COND - [ASCIIARRAY `((%, FAMILY ASCIIARRAY] - (T ASCIITONSTRANSLATIONS)) bind asciiArray - do - - (* * item is of the form (PressFont TranslationArray NSFont)) - - (SETQ asciiArray (EVAL (CADR item))) - (COND - (asciiArray (for i from 0 to 255 - do (SETA array (REMAINDER (ELT asciiArray i) - 256) - (LIST (CAR item) - i)) - when (AND (LEQ min (ELT asciiArray i)) - (LEQ (ELT asciiArray i) - max] - array]) - -(PUTCHARPRESSTRANSLATION - [LAMBDA (CHARCODE FONT NEWTRANSLATION) (* ; "Edited 14-Jul-2025 23:24 by rmk") - (* ; "Edited 5-Jul-2025 18:51 by rmk") - (* ; "Edited 29-Feb-88 10:28 by thh:") - (* ; - "Changes the Press translation for a character in a font") - (COND - ((CHARCODEP CHARCODE)) - ((OR (STRINGP CHARCODE) - (LITATOM CHARCODE)) - (SETQ CHARCODE (CHCON1 CHARCODE))) - (T (\ILLEGAL.ARG CHARCODE))) - (PROG* ((FONTDESC (FONTCREATE FONT NIL NIL NIL 'PRESS)) - (CSINFO (\GETCHARSETINFO (\CHARSET CHARCODE) - FONTDESC)) - (CHAR8CODE (\CHAR8CODE CHARCODE)) - (TR (\NSTOASCIITRANSLATION NEWTRANSLATION NIL FONTDESC))) - (UNINTERRUPTABLY - (\RPLPTR (ffetch (CHARSETINFO CHARSETBITMAP) of CSINFO) - (UNFOLD CHAR8CODE 2) - TR) - (\PUTBASE (ffetch (CHARSETINFO WIDTHS) of CSINFO) - CHAR8CODE - (\FGETCHARWIDTH (CAR TR) - (CDR TR))) - [change (ffetch CHARSETASCENT of CSINFO) - (MAX DATUM (ffetch \SFAscent of (CAR TR] - [change (ffetch CHARSETDESCENT of CSINFO) - (MAX DATUM (ffetch \SFDescent of (CAR TR] - [freplace \SFHeight of FONTDESC with (PLUS (change (ffetch \SFAscent of FONTDESC) - (MAX DATUM (ffetch CHARSETASCENT - of CSINFO))) - (change (ffetch \SFDescent of FONTDESC) - (MAX DATUM (ffetch CHARSETDESCENT - of CSINFO]) - (RETURN NEWTRANSLATION]) -) -(DEFINEQ - -(\DSPFONT.PRESS - [LAMBDA (PRSTREAM FONT) (* rmk%: "25-Feb-86 11:05") - - (* * The DSPFONT method for PRESS-type image streams -- - change the stream's current logical font to FONT; - the device font changes only when we print a character) - - (PROG (OLDFONT FDENTRY (PRDATA (ffetch IMAGEDATA of PRSTREAM))) - (SETQ OLDFONT (ffetch PRLOGICALFONT of PRDATA)) - (COND - ([OR (NULL FONT) - (EQ OLDFONT (SETQ FONT (OR (\GETFONTDESC FONT 'PRESS T) - (FONTCOPY OLDFONT FONT] - (RETURN OLDFONT))) - (freplace PRLOGICALFONT of PRDATA with FONT) - (freplace PRLOGICALCHARSET of PRDATA with NIL) - [\SETSPACE.PRESS PRSTREAM (FIXR (TIMES (ffetch PRSPACEFACTOR of PRDATA) - (\FGETCHARWIDTH FONT (CHARCODE SPACE] - [freplace PRLINEFEED of PRDATA with (IDIFFERENCE (CONSTANT (IMINUS - MicasPerPoint - )) - (FONTPROP FONT 'HEIGHT] - (\FIXLINELENGTH.PRESS PRSTREAM) - (RETURN OLDFONT]) - -(\DSPSPACEFACTOR.PRESS - [LAMBDA (STREAM FACTOR) (* rmk%: "24-Feb-86 09:49") - (LET ((PRDATA (ffetch IMAGEDATA of STREAM))) - (PROG1 (ffetch PRSPACEFACTOR of PRDATA) - (COND - (FACTOR (SHOW.PRESS STREAM) - (freplace PRSPACEFACTOR of PRDATA with FACTOR) - (\SETSPACE.PRESS STREAM (FIXR (TIMES FACTOR - (\FGETCHARWIDTH (ffetch - PRLOGICALFONT - of PRDATA) - (CHARCODE SPACE]) - -(\ENTITYSTART.PRESS - [LAMBDA (PRSTREAM) (* thh%: "10-Dec-86 08:33") - (PROG ((PRDATA (fetch IMAGEDATA of PRSTREAM))) - (freplace PRSPACEWIDTH of PRDATA with NIL) - - (* This really should be the spacewidth of the current font. - But then, if we switch fonts to one whose space*spacefactor comes out the - same, we won't know to put out a setspace command. - So when we actually set up the first font in this entity, we will end up - putting out an explicit setspace (even if the space factor is 1)) - - (freplace PRFONT of PRDATA with NIL) - (freplace PRLOGICALFONT of PRDATA with NIL) - - (* We set the font to NIL, knowing that the current font can be recoverd from - the PRCURRFDE. This font will be set in the press file before the first show, - if no explicit dspfont intervenes. Note, however, that up until the first - dspfont, the widthscache still corresponds to what was the PRLOGICALFONT) - - (freplace DLSTARTBYTE of PRDATA with (\GETFILEPTR PRSTREAM)) - (freplace ELSTARTBYTE of PRDATA with (\GETFILEPTR (fetch ELSTREAM - of PRDATA))) - (freplace STARTCHARBYTE of PRDATA with (\GETFILEPTR PRSTREAM)) - - (* Entity starts with position at 0,0 so must re-establish current position - (?)) - - (SETXY.PRESS PRSTREAM (fetch PRXPOS of PRDATA) - (fetch PRYPOS of PRDATA]) - -(\SETSPACE.PRESS - [LAMBDA (PRSTREAM S) (* rmk%: "31-Mar-86 16:08") - (PROG (ELSTREAM (PRDATA (fetch IMAGEDATA of PRSTREAM))) - (AND (EQ S (ffetch PRSPACEWIDTH of PRDATA)) - (RETURN)) - (SHOW.PRESS PRSTREAM) - (SETQ ELSTREAM (fetch ELSTREAM of (fetch IMAGEDATA of PRSTREAM))) - (if (ILEQ S 2047) - then (\WOUT ELSTREAM (IPLUS (LLSH SetSpaceXShortCode 8) - S)) - else (\BOUT ELSTREAM SetSpaceXCode) - (\WOUT ELSTREAM S)) - (freplace PRSPACEWIDTH of PRDATA with S]) - -(\STARTPAGE.PRESS - [LAMBDA (PRSTREAM) (* rmk%: "25-Feb-86 11:36") - - (* Should be called only when no previous page is open) - - (PROG (CFONT HFONT SPACEFACTOR (PRDATA (ffetch IMAGEDATA of PRSTREAM))) - (SETQ CFONT (ffetch PRLOGICALFONT of PRDATA)) - - (* Save current font so that \ENTITYSTART.PRESS can make PRLOGICALFONT be - NIL, indicating that there is no actual font at the beginning of a page) - - (\ENTITYSTART.PRESS PRSTREAM) - [COND - ((ffetch PRHEADING of PRDATA) - (SETQ SPACEFACTOR (ffetch PRSPACEFACTOR of PRDATA)) - (freplace PRSPACEFACTOR of PRDATA with 1) - (SETQ HFONT (ffetch PRHEADINGFONT of PRDATA)) - (\DSPFONT.PRESS PRSTREAM HFONT) (* Set up heading font) - [SETXY.PRESS PRSTREAM (ffetch PRLEFT of PRDATA) - (IDIFFERENCE (ffetch PRTOP of PRDATA) - (FONTPROP HFONT 'ASCENT] - (PRIN3 (ffetch PRHEADING of PRDATA) - PRSTREAM) (* Skip an inch before page number) - (SHOW.PRESS PRSTREAM) - (SETX.PRESS PRSTREAM (IPLUS MICASPERINCH (ffetch PRXPOS of PRDATA))) - (PRIN3 "Page " PRSTREAM) - (PRIN3 (add (ffetch PRPAGENUM of PRDATA) - 1) - PRSTREAM) - (NEWLINE.PRESS PRSTREAM) (* Skip 2 lines) - (NEWLINE.PRESS PRSTREAM) - (freplace PRSPACEFACTOR of PRDATA with SPACEFACTOR)) - (T (SETXY.PRESS PRSTREAM (ffetch PRLEFT of PRDATA) - (IDIFFERENCE (ffetch PRTOP of PRDATA) - (FONTPROP CFONT 'ASCENT] - - (* Now we set the font to our (previous) current font) - - (\DSPFONT.PRESS PRSTREAM CFONT]) - -(\PRESS.COERCEFONT - [LAMBDA (FONT FAMILY) (* rmk%: "25-Mar-86 15:44") - - (* coerces FONT to be new FAMILY FAMILY, and caches result on - \PRESS.COERCEDFONTS) - - (DECLARE (GLOBALVARS \PRESS.COERCEDFONTS)) - (COND - [[OR (NOT FAMILY) - (EQ FAMILY (FONTPROP FONT 'FAMILY] - - (* Don't call FONTCOPY if it's the same font. - This avoids circularity thru AVGCHARWIDTH and CHARWIDTH before the font has - been stored in \FONTSINCORE.) - - (COND - ((EQ 'PRESS (FONTPROP FONT 'DEVICE)) (* How could it not be PRESS? Ask - Tad.) - FONT) - (T (FONTCOPY FONT 'DEVICE 'PRESS] - ((OR (FONTP FAMILY) - (LISTP FAMILY)) (* FAMILY is a font specification) - (FONTCOPY FAMILY 'DEVICE 'PRESS)) - [(FONTP (CADR (ASSOC FONT (CDR (ASSOC FAMILY \PRESS.COERCEDFONTS] - (T (LET [(pressFont (OR (FONTCOPY FONT 'FAMILY FAMILY 'DEVICE 'PRESS 'NOERROR T) - (FONTCOPY FONT 'FAMILY FAMILY 'FACE 'STANDARD 'DEVICE 'PRESS] - (push [CDR (OR (ASSOC FAMILY \PRESS.COERCEDFONTS) - (CAR (push \PRESS.COERCEDFONTS (CONS FAMILY] - (LIST FONT pressFont)) - pressFont]) - -(\DSPFONT.PRESSFONT - [LAMBDA (PRSTREAM PRFONT) (* thh%: "16-Jun-86 10:50") - (* Changes the Pressfiles device - font) - (PROG (FDENTRY LFONT OLDFONT (PRDATA (ffetch IMAGEDATA of PRSTREAM))) - (SETQ OLDFONT (ffetch PRFONT of PRDATA)) - (SHOW.PRESS PRSTREAM) - (SETQ FDENTRY (\DEFINEFONT.PRESS PRSTREAM PRFONT)) - (COND - ((NEQ (ffetch FONTSET# of FDENTRY) - (ffetch FONTSET# of (ffetch PRCURRFDE of PRDATA))) - (* Swtich font sets) - - (* must save and restore current logical font since \ENTITYSTART.PRESS makes - it NIL) - - (SETQ LFONT (ffetch PRLOGICALFONT of PRDATA)) - (\ENTITYEND.PRESS PRSTREAM) - (\ENTITYSTART.PRESS PRSTREAM) - (\DSPFONT.PRESS PRSTREAM LFONT))) - (freplace PRCURRFDE of PRDATA with FDENTRY) - (freplace PRFONT of PRDATA with PRFONT) - (\BOUT (ffetch ELSTREAM of PRDATA) - (LOGOR FontCode (ffetch FONT# of FDENTRY))) - (RETURN OLDFONT]) - -(SETUPFONTS.PRESS - [LAMBDA (PRSTREAM FONTS) (* thh%: "10-Dec-86 08:43") - - (* creates fonts in the initial fontset. - and sets heading font. Leaves PRFONT as NIL. - This means that \DSPFONT.PRESS of the heading font will establish that as the - current font when the first page opens.) - - (* since FONTS are logical, not device, fonts, they are not added to the - fontset here) - - (for F FLG inside (OR FONTS DEFAULTFONT) - do (SETQ F (FONTCREATE F NIL NIL NIL 'PRESS)) - (COND - (FLG NIL) - (T (\DSPFONT.PRESS PRSTREAM F) - - (* Install first font as current logical font and heading font.) - - (\ENTITYEND.PRESS PRSTREAM) - (replace PRHEADINGFONT of (fetch IMAGEDATA of PRSTREAM) - with F) - (SETQ FLG T]) -) -(DEFINEQ - -(\CREATEPRESSFONT - [LAMBDA (FAMILY PSIZE FACE ROTATION DEVICE) (* ; "Edited 9-Mar-88 15:54 by thh:") - (* ;; "Widths array is fully allocated, with zeroes for characters with no information. An array is not allocated for fixed WidthsY. DEVICE is PRESS or INTERPRESS") - - (DECLARE (GLOBALVARS PRESSFONTWIDTHSFILES)) - (RESETLST (* ; - "RESETLST to make sure the fontfiles get closed") - (PROG ((FD (create FONTDESCRIPTOR - FONTDEVICE _ DEVICE - FONTFAMILY _ FAMILY - FONTSIZE _ PSIZE - FONTFACE _ FACE - \SFFACECODE _ (\FACECODE FACE) - ROTATION _ ROTATION - FONTSCALE _ (CONSTANT (FQUOTIENT 2540 72)) - \SFHeight _ 0 - \SFAscent _ 0 - \SFDescent _ 0))) - (OR (\GETCHARSETINFO 0 FD T) - (RETURN NIL)) - (RETURN FD]) - -(\CREATECHARSET.PRESS - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHARSET FONTDESC) - (* ; "Edited 9-Mar-88 15:19 by thh:") -(* ;;; "determines widths and translations to print the charset with Press fonts. Note that we get widths from widths of font translated to, which should be original press values because translations are always to press fonts.") -(* ;;; "NOTE: This code makes fonts that translate to themselves circular, and also gives fonts high reference counts. The translations should not be circular.") - - (DECLARE (GLOBALVARS PRESSFONTFAMILIES)) - (PROG ((CSETTRANSLATIONARRAY (\NSTOASCIIARRAY CHARSET)) - CSINFO widths (translationArray (ARRAY 256 NIL NIL 0)) - (ascent 0) - (descent 0) - CSETZEROTRANSLATIONS) - (* ;; "Determine translations for this charset") - - [COND - [(ZEROP CHARSET) - (* ;; "set up charsetinfo -- includes any coercions to known press fonts") - - (SETQ CSINFO (\CREATECHARSETZERO.PRESS FAMILY SIZE FACE ROTATION DEVICE FONTDESC)) - (OR CSINFO (RETURN NIL)) (* ; - "unable to coerce to a press font") - (* ;; "get translations for charset-0") - - (COND - [(SETQ CSETZEROTRANSLATIONS (ASSOC (FONTPROP FONTDESC 'FAMILY) - PRESSFONTFAMILIES)) - (* ; "use identity transformation") - (for i from 0 to 255 do (SETA translationArray i (CONS FONTDESC i)) - ) (* ; - "except for font-specific non-identities") - (for X in (CDR CSETZEROTRANSLATIONS) - do (SETA translationArray (CAR X) - (\NSTOASCIITRANSLATION (CADR X) - FAMILY FONTDESC] - (T - (* ;; "Not a press font: assume NS font which will be translated into a press font") - - (for i from 0 to 255 - do (SETA translationArray i - (\NSTOASCIITRANSLATION - (COND - ((AND CSETTRANSLATIONARRAY (ELT CSETTRANSLATIONARRAY i))) - (T (LIST (OR FAMILY (FONTPROP FONTDESC 'FAMILY)) - i))) - FAMILY FONTDESC] - (T - (* ;; "CHARSET not zero, assume NS codes") - - (for i from 0 to 255 do (SETA translationArray i - (\NSTOASCIITRANSLATION - (AND CSETTRANSLATIONARRAY - (ELT CSETTRANSLATIONARRAY i)) - FAMILY FONTDESC] - (* ;; "Set the widths array and install the translations in the CHARSETINFO") - - (OR CSINFO (SETQ CSINFO (create CHARSETINFO))) - (SETQ widths (fetch (CHARSETINFO WIDTHS) of CSINFO)) - (for i from 0 to 255 bind translation pressFont newAscent newDescent - do (SETQ translation (ELT translationArray i)) - (SETQ pressFont (CAR translation)) - [COND - ((AND (ZEROP CHARSET) - (EQ pressFont FONTDESC)) (* ; - "this is charset-0 font translating to itself, use widths already defined") - (\FSETWIDTH widths i (\FGETWIDTH widths (CDR translation))) - (SETQ newAscent (fetch (CHARSETINFO CHARSETASCENT) of CSINFO)) - (SETQ newDescent (fetch (CHARSETINFO CHARSETDESCENT) of CSINFO))) - (T (\FSETWIDTH widths i (\FGETCHARWIDTH pressFont (CDR translation))) - (SETQ newAscent (ffetch (FONTDESCRIPTOR \SFAscent) of pressFont)) - (SETQ newDescent (ffetch (FONTDESCRIPTOR \SFDescent) of pressFont] - (SETQ ascent (MAX ascent newAscent)) - (SETQ descent (MAX descent newDescent))) - (replace (CHARSETINFO CHARSETBITMAP) of CSINFO with (ffetch (ARRAYP BASE) - of translationArray) - ) - (replace (CHARSETINFO CHARSETASCENT) of CSINFO with ascent) - (replace (CHARSETINFO CHARSETDESCENT) of CSINFO with descent) - (RETURN CSINFO]) - -(\CREATECHARSETZERO.PRESS - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE FD) (* ; "Edited 9-Mar-88 15:27 by thh:") -(* ;;; -"creates CSINFO for charset 0 of press fonts from info in widths file (without translations).") - - (DECLARE (GLOBALVARS PRESSFONTWIDTHSFILES FONTCOERCIONS MISSINGFONTCOERCIONS)) - (RESETLST (* ; - "RESETLST to make sure the fontfiles get closed") - (PROG* (WSTRM STRMCACHE FIXEDFLAGS RELFLAG FIRSTCHAR LASTCHAR TEM WIDTHSY WIDTHS - (PRESSMICASIZE (IQUOTIENT (ITIMES SIZE 2540) - 72)) - (NSMICASIZE (FIXR (FQUOTIENT (ITIMES SIZE 2540) - 72))) - (FACECODE (\FACECODE FACE)) - (CSINFO (create CHARSETINFO)) - CHARSETHEIGHT FOO FBBOX) -(* ;;; "Go look for the fonts.widths file that has this font's info in it.") - - (OR [bind XLATEDNAME NEWFAMILY NEWNSMICASIZE NEWFACECODE for F inside - - PRESSFONTWIDTHSFILES - when (INFILEP F) - first (SETQ XLATEDNAME (\COERCEFONT FAMILY SIZE FACE ROTATION - 'PRESS FONTCOERCIONS)) - [COND - (XLATEDNAME (SETQ NEWFAMILY (CAR XLATEDNAME)) - (SETQ NEWNSMICASIZE (FIXR (FQUOTIENT (ITIMES (CADR - XLATEDNAME - ) - 2540) - 72))) - (SETQ NEWFACECODE (\FACECODE (CADDR XLATEDNAME] - do (* ; - "Look thru the candidate PRESSFONTWIDTHSFILES for a file that has a description for this font.") - [COND - [(SETQ WSTRM (\GETSTREAM F 'INPUT T)) - (COND - ((RANDACCESSP WSTRM) - (RESETSAVE NIL (LIST 'SETFILEPTR WSTRM (GETFILEPTR WSTRM))) - (SETFILEPTR WSTRM 0] - (T (RESETSAVE (SETQ WSTRM (OPENSTREAM F 'INPUT 'OLD 8)) - '(PROGN (CLOSEF? OLDVALUE] - [OR (RANDACCESSP WSTRM) - (COPYBYTES WSTRM (SETQ WSTRM (OPENSTREAM '{NODIRCORE} 'BOTH - 'NEW] - (push STRMCACHE WSTRM) (* ; "Save for coercions below") - (COND - ((SETQ RELFLAG (\POSITIONFONTFILE WSTRM (OR NEWNSMICASIZE - NSMICASIZE) - FIRSTCHAR LASTCHAR (OR NEWFAMILY FAMILY) - (OR NEWFACECODE FACECODE))) - (* ; - "OK, we found this font described in this file.") - (COND - (XLATEDNAME (replace FONTDEVICESPEC of FD with - XLATEDNAME) - (SETQ NSMICASIZE NEWNSMICASIZE))) - (RETURN T] - [bind XLATEDNAME NEWFAMILY NEWNSMICASIZE NEWFACECODE XLATEDNAMES - first (SETQ STRMCACHE (DREVERSE STRMCACHE)) - while (SETQ XLATEDNAME (\COERCEFONT FAMILY SIZE FACE ROTATION - 'PRESS MISSINGFONTCOERCIONS XLATEDNAMES)) - thereis (push XLATEDNAMES XLATEDNAME) - (for old WSTRM in STRMCACHE - first (SETQ NEWFAMILY (CAR XLATEDNAME)) - (SETQ NEWNSMICASIZE (FIXR (FQUOTIENT (ITIMES (CADR XLATEDNAME - ) - 2540) - 72))) - (SETQ NEWFACECODE (\FACECODE (CADDR XLATEDNAME))) - do (* ; - "Now try coercing the family name") - (* ;; "We know the file was left open and is randaccessp from the previous loop, which must have run off the end of the file list") - - (SETFILEPTR WSTRM 0) - (COND - ((SETQ RELFLAG (\POSITIONFONTFILE WSTRM NEWNSMICASIZE - FIRSTCHAR LASTCHAR NEWFAMILY - NEWFACECODE)) - (replace FONTDEVICESPEC of FD with XLATEDNAME - ) - (SETQ NSMICASIZE NEWNSMICASIZE) - (RETURN T] - (RETURN NIL)) -(* ;;; "Having found the font-widths file, now read the width info from it.") - - (SETQ RELFLAG (ZEROP RELFLAG)) (* ; -"Actually, \POSITIONFONTFILE returns zero if the font metrics are size-relative and must be scaled.") - (SETQ WIDTHS (fetch (CHARSETINFO WIDTHS) of CSINFO)) - (SETFILEPTR WSTRM (UNFOLD (\FIXPIN WSTRM) - BYTESPERWORD)) - (* ;; "Read the location of the WD segment for this font (we're in the directory part of the file now), and go there.") - - (SETQ FBBOX (SIGNED (\WIN WSTRM) - BITSPERWORD)) (* ; - "replace (FONTDESCRIPTOR FBBOX) of FD with (SIGNED (\WIN WSTRM) BITSPERWORD)") - (* ; - "Get the max bounding width for the font") - (replace (CHARSETINFO CHARSETDESCENT) of CSINFO - with (IMINUS (SIGNED (\WIN WSTRM) - BITSPERWORD))) (* ; "Descent is -FBBOY") - (SETQ FOO (\WIN WSTRM)) (* ; - "replace (FONTDESCRIPTOR FBBDX) of FD with (SIGNED (\WIN WSTRM) BITSPERWORD)") - (* ; "And the standard kern value (?)") - (SETQ CHARSETHEIGHT (SIGNED (\WIN WSTRM) - BITSPERWORD)) (* ; - "replace \SFHeight of FD with (SIGNED (\WIN WSTRM) BITSPERWORD)") - (* ; "Height is FBBDY") - [COND - (RELFLAG (* ; - "Dimensions are relative, must be scaled") - (* ;; "replace (FONTDESCRIPTOR FBBOX) of FD with (IQUOTIENT (ITIMES (fetch (FONTDESCRIPTOR FBBOX) of FD) NSMICASIZE) 1000)") - - (replace (CHARSETINFO CHARSETDESCENT) of CSINFO - with (IQUOTIENT (ITIMES (fetch (CHARSETINFO CHARSETDESCENT) - of CSINFO) - NSMICASIZE) - 1000)) - (* ;; "replace (FONTDESCRIPTOR FBBDX) of FD with (IQUOTIENT (ITIMES (fetch (FONTDESCRIPTOR FBBDX) of FD) NSMICASIZE) 1000)") - - (SETQ CHARSETHEIGHT (IQUOTIENT (ITIMES CHARSETHEIGHT NSMICASIZE) - 1000] - (replace (CHARSETINFO CHARSETASCENT) of CSINFO - with (IDIFFERENCE CHARSETHEIGHT (fetch CHARSETDESCENT of CSINFO))) - (SETQ FIXEDFLAGS (LRSH (\BIN WSTRM) - 6)) (* ; "The fixed flags") - (\BIN WSTRM) (* ; "Skip the spares") - [COND - ((EQ 2 (LOGAND FIXEDFLAGS 2)) (* ; "This font is fixed width.") - (SETQ TEM (\WIN WSTRM)) (* ; - "Read the fixed width for this font") - [COND - ((AND RELFLAG (NOT (ZEROP TEM))) (* ; - "If it's size relative, scale it.") - (SETQ TEM (IQUOTIENT (ITIMES TEM NSMICASIZE) - 1000] - (for I from FIRSTCHAR to LASTCHAR - do (* ; - "Fill in the char widths table with the width.") - (\FSETWIDTH WIDTHS I TEM))) - (T (* ; - "Variable width font, so we have to read widths.") - (* ; - "AIN WIDTHS FIRSTCHAR (ADD1 (IDIFFERENCE LASTCHAR FIRSTCHAR)) WSTRM") - (for I from FIRSTCHAR to LASTCHAR - do (\FSETWIDTH WIDTHS I noInfoCode)) - (\BINS (\GETOFD WSTRM 'INPUT) - WIDTHS - (UNFOLD FIRSTCHAR BYTESPERWORD) - (UNFOLD (ADD1 (IDIFFERENCE LASTCHAR FIRSTCHAR)) - BYTESPERWORD)) (* ; "Read the X widths.") - (for I from FIRSTCHAR to LASTCHAR - when (EQ noInfoCode (\FGETWIDTH WIDTHS I)) - do (* ; - "For chars that have no width info, let width be zero.") - (\FSETWIDTH WIDTHS I 0)) - (COND - (RELFLAG (* ; - "If the widths are size-relative, scale them.") - (for I from FIRSTCHAR to LASTCHAR - do (\FSETWIDTH WIDTHS I (IQUOTIENT (ITIMES (\FGETWIDTH - WIDTHS I) - NSMICASIZE) - 1000] - [COND - [(EQ 1 (LOGAND FIXEDFLAGS 1)) - (COND - ((ILESSP (GETFILEPTR WSTRM) - (GETEOFPTR WSTRM)) - (SETQ WIDTHSY (\WIN WSTRM))) - (T (* ; - "STAR FONT FILES LIKE TO LEAVE OFF THE Y WIDTH.") - (SETQ WIDTHSY 0))) (* ; - "The fixed width-Y for this font; the width-Y field is a single integer in the FD") - (replace (CHARSETINFO YWIDTHS) of CSINFO - with (COND - ((AND RELFLAG (NOT (ZEROP WIDTHSY))) - (IQUOTIENT (ITIMES WIDTHSY NSMICASIZE) - 1000)) - (T WIDTHSY] - (T (* ; - "Variable Y-width font. Fill it in as above") - (SETQ WIDTHSY (replace (CHARSETINFO YWIDTHS) of CSINFO with - ( - \CREATECSINFOELEMENT - ))) - (for I from FIRSTCHAR to LASTCHAR - do (\FSETWIDTH WIDTHSY I noInfoCode)) - (\BINS (\GETOFD WSTRM 'INPUT) - WIDTHSY - (UNFOLD FIRSTCHAR BYTESPERWORD) - (UNFOLD (ADD1 (IDIFFERENCE LASTCHAR FIRSTCHAR)) - BYTESPERWORD)) (* ; "Read the Y widths") - (for I from FIRSTCHAR to LASTCHAR - when (EQ noInfoCode (\FGETWIDTH WIDTHSY I)) - do (* ; - "Let any characters with no width info be zero height") - (\FSETWIDTH WIDTHSY I 0)) - (COND - (RELFLAG (* ; - "If the widths are size-relative, scale them.") - (for I from FIRSTCHAR to LASTCHAR - do (\FSETWIDTH WIDTHSY I (IQUOTIENT (ITIMES (\FGETWIDTH - WIDTHSY I) - NSMICASIZE) - 1000] - (RETURN CSINFO]) -) -(DEFINEQ - -(\PRESSCURVE2 - [LAMBDA (PRSTREAM SPLINE DASHING BRUSHFONT) (* thh%: "16-Jun-86 10:53") - - (* Given a spline curve and a font, draw the lines to PRSTREAM) - - (RESETLST (RESETSAVE NIL (LIST '\DSPFONT.PRESSFONT PRSTREAM (\DSPFONT.PRESSFONT PRSTREAM - BRUSHFONT))) - [PROG ((PRDATA (fetch IMAGEDATA of PRSTREAM))) - (COND - ((IGREATERP (IDIFFERENCE (GETFILEPTR (fetch ELSTREAM of PRDATA)) - (fetch ELSTARTBYTE of PRDATA)) - 25000) - (\ENTITYEND.PRESS PRSTREAM) (* Hack to prevent mysterious - overflow in length of entities) - (\ENTITYSTART.PRESS PRSTREAM] - (\BOUT (fetch ELSTREAM of (fetch IMAGEDATA of PRSTREAM)) - ResetSpaceCode) - - (* because the space code shouldn't be interpreted specially when we are - drawing in the vector font) - - (PROG ((XPOLY (create POLYNOMIAL)) - (X'POLY (create POLYNOMIAL)) - (YPOLY (create POLYNOMIAL)) - (Y'POLY (create POLYNOMIAL)) - (X (fetch (SPLINE SPLINEX) of SPLINE)) - (Y (fetch (SPLINE SPLINEY) of SPLINE)) - (X' (fetch (SPLINE SPLINEDX) of SPLINE)) - (Y' (fetch (SPLINE SPLINEDY) of SPLINE)) - (X'' (fetch (SPLINE SPLINEDDX) of SPLINE)) - (Y'' (fetch (SPLINE SPLINEDDY) of SPLINE)) - (X''' (fetch (SPLINE SPLINEDDDX) of SPLINE)) - (Y''' (fetch (SPLINE SPLINEDDDY) of SPLINE)) - (%#KNOTS (fetch %#KNOTS of SPLINE)) - (X0 (ELT (fetch (SPLINE SPLINEX) of SPLINE) - 1)) - (Y0 (ELT (fetch (SPLINE SPLINEY) of SPLINE) - 1)) - IX IY DX DY XT YT X'T Y'T NEWXT NEWYT XDIFF YDIFF XWALLDT YWALLDT DUPLICATEKNOT - EXTRANEOUS TT NEWT DELTA DASHON DASHLST DASHCNT HALFVECWIDTH PUTDX EXTRADX PUTDY - EXTRADY) - (SETQ HALFVECWIDTH (FONTPROP BRUSHFONT 'SIZE)) - - (* Half the width of the brush, in dots. - Used to help decide when the line we're drawing goes off-paper.) - - (SETQ DASHON T) - - (* These are initialized outside the prog-bindings cause the compiler can't - hack so many initialized variables) - - (SETQ DASHLST DASHING) - (SETQ DASHCNT (CAR DASHING)) - (SETXY.PRESS PRSTREAM (FIXR (FTIMES X0 MicasPerScan)) - (FIXR (FTIMES Y0 MicasPerScan))) (* Move to the first knot on the - curve) - (replace VECMOVINGRIGHT of (fetch IMAGEDATA of PRSTREAM) - with T) (* Start by assuming we're moving in - increasing X (since the vector fonts - only have strokes that work in that - direction)) - (replace VECWASDISPLAYING of (fetch IMAGEDATA of PRSTREAM) - with (AND (GEQ X0 0) - (GEQ Y0 0))) - (replace VECSEGCHARS of (fetch IMAGEDATA of PRSTREAM) with - NIL) - (replace VECCURX of (fetch IMAGEDATA of PRSTREAM) with X0) - - (* And set the current X and Y positions, denominated in dover spots) - - (replace VECCURY of (fetch IMAGEDATA of PRSTREAM) with Y0) - (* Set up initial values in vec - variables, perform SetX/SetY.) - (SETQ TT 0.0) - (SETQ DELTA 16) - (SETQ IX (FIXR X0)) - (SETQ IY (FIXR Y0)) - [for KNOT# from 1 to (SUB1 %#KNOTS) - do (LOADPOLY XPOLY X'POLY (ELT X''' KNOT#) - (ELT X'' KNOT#) - (ELT X' KNOT#) - (ELT X KNOT#)) - - (* Set up the polynomials that describe X and X' over this segment) - - (LOADPOLY YPOLY Y'POLY (ELT Y''' KNOT#) - (ELT Y'' KNOT#) - (ELT Y' KNOT#) - (ELT Y KNOT#)) - - (* Set up the polynomials that describe Y and Y' over this segment) - - (SETQ XT (POLYEVAL TT XPOLY 3)) (* XT _ X (t) --Evaluate the next - point) - (SETQ YT (POLYEVAL TT YPOLY 3)) (* YT _ Y (t)) - (COND - [(NOT (IEQP KNOT# (SUB1 %#KNOTS))) - - (* This isn't the last knot. Check to see if the next knot in line is a - duplicated knot.) - - (SETQ DUPLICATEKNOT (AND (EQP (ELT X (ADD1 KNOT#)) - (ELT X (IPLUS KNOT# 2))) - (EQP (ELT Y (ADD1 KNOT#)) - (ELT Y (IPLUS KNOT# 2] - (T (SETQ DUPLICATEKNOT NIL))) - [until (GEQ TT 1.0) - do - - (* Run the parameter, TT, from 0.0 up to |1.0.| - That moves the X and Y locations smoothly from this knot to the next one.) - - (SETQ X'T (POLYEVAL TT X'POLY 2)) - (* X'T _ X' (t)) - (SETQ Y'T (POLYEVAL TT Y'POLY 2)) - (* Y'T _ Y' (t)) - (COND - ((EQP X'T 0.0) - - (* Never let X' really get to 0.0 -- things become ill-conditioned there.) - - (SETQ X'T 5.0E-4))) - (COND - ((EQP Y'T 0.0) (* Likewise Y'.) - (SETQ Y'T 5.0E-4))) - [COND - ((FGTP X'T 0.0) - - (* If X' is positive, we'll try moving in the +X direction) - - (SETQ DX DELTA)) - (T (* If not, we'll try the -X - direction.) - (SETQ DX (IMINUS DELTA] - [COND - ((FGTP Y'T 0.0) - - (* Likewise, if Y' is positive, try moving by DELTA in the +Y direction) - - (SETQ DY DELTA)) - (T (SETQ DY (IMINUS DELTA] - (SETQ XWALLDT (FQUOTIENT (FDIFFERENCE (IPLUS IX DX) - XT) - X'T)) - - (* Compute a dT, based on moving by DELTA in X.) - - (SETQ YWALLDT (FQUOTIENT (FDIFFERENCE (IPLUS IY DY) - YT) - Y'T)) - - (* And a dT based on moving by DELTA in Y.) - - [COND - ((FLESSP XWALLDT YWALLDT) - - (* Use the smaller of the two dT's. In this case, dT for X was smaller, so - compute a new DY as depending on DX.) - - (SETQ NEWT (FPLUS TT XWALLDT)) - (SETQ DY (IDIFFERENCE (FIXR (FPLUS YT (FTIMES XWALLDT Y'T))) - IY))) - (T - - (* Changing Y gave the smaller dT. Compute a new DX, as though it depended on - DY.) - - (SETQ NEWT (FPLUS TT YWALLDT)) - (SETQ DX (IDIFFERENCE (FIXR (FPLUS XT (FTIMES YWALLDT X'T))) - IX] - (SETQ PUTDX DX) - (SETQ EXTRADX 0) - (SETQ PUTDY DY) - (SETQ EXTRADY 0) - [COND - ((IGREATERP DX 16) - (SETQ PUTDX 16) - (SETQ EXTRADX (IDIFFERENCE DX 16] - [COND - ((IGREATERP -16 DX) - (SETQ PUTDX -16) - (SETQ EXTRADX (IPLUS DX 16] - [COND - ((IGREATERP DY 16) - (SETQ PUTDY 16) - (SETQ EXTRADY (IDIFFERENCE DY 16] - [COND - ((IGREATERP -16 DY) - (SETQ PUTDY -16) - (SETQ EXTRADY (IPLUS DY 16] - (COND - ([AND (FGTP NEWT 1.0) - (OR DUPLICATEKNOT (EQ KNOT# (SUB1 %#KNOTS] - (SETQ NEWT 1.0))) - (SETQ NEWXT (POLYEVAL NEWT XPOLY 3)) - (* New XT _ X (new t)) - (SETQ NEWYT (POLYEVAL NEWT YPOLY 3)) - (* New YT _ Y (new t)) - (SETQ XDIFF (ABS (FDIFFERENCE (IPLUS IX DX) - NEWXT))) - (SETQ YDIFF (ABS (FDIFFERENCE (IPLUS IY DY) - NEWYT))) - (COND - ((AND (IGREATERP DELTA 1) - (OR (FGTP XDIFF 1.0) - (FGTP YDIFF 1.0))) - - (* If we're more than a dover spot off where we'd expect to be because of the - size of DELTA--and if there's room to make DELTA smaller--then try - DELTA_DELTA/2) - - (SETQ DELTA (LRSH DELTA 1))) - (T - - (* No, this estimate is close enough. Put out a vector segment based on it, - and move to the new TT.) - - (\VECPUT PRSTREAM PUTDX PUTDY HALFVECWIDTH) - (* Print out a stroke using the - vector font.) - (COND - ((OR (NEQ EXTRADX 0) - (NEQ EXTRADY 0)) - - (* If, actually, it was too big for one stroke, use another.) - - (\VECPUT PRSTREAM EXTRADX EXTRADY HALFVECWIDTH))) - (SETQ IX (IPLUS IX DX)) - (* Our new current location, in - Dover spots) - (SETQ IY (IPLUS IY DY)) - (SETQ TT NEWT) (* Set TT to its new value) - (SETQ XT NEWXT) - - (* And set the new floating-point values for X - (t) and Y (t)%.) - - (SETQ YT NEWYT) - (COND - ((AND (ILESSP DELTA 16) - (OR (FLESSP XDIFF 0.5) - (FLESSP YDIFF 0.5))) - - (* If we were especially close, try making DELTA larger for the next go - round.) - - (SETQ DELTA (LLSH DELTA 1] - (SETQ TT (FDIFFERENCE TT 1.0)) - - (* Having moved past a knot, back the value of the parameter TT back down. - However, don't set it to 0.0--let's try to keep the line going from where it - got to in passing the last knot.) - - (COND - (DUPLICATEKNOT - - (* This next knot is a duplicate. Skip over it, and start from the following - knot. This will avoid odd problems trying to go nowhere while obeying the - constraints of X' and Y' at that knot--since it's a duplicate, X' and Y' are - discontinuous there.) - - (add KNOT# 1] - (\ENDVECRUN PRSTREAM HALFVECWIDTH]) -) - - - -(* Generic utility for coercing fonts, could be used by other devices) - -(DEFINEQ - -(\COERCEFONT - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE COERCELIST BUTNOT CREATEFLG) - (* ; "Edited 9-Mar-88 12:58 by thh:") - (* ;; "Returns a font name that the requested font specification coerces to according to COERCELIST. If CREATEFLG is T, only returns name-lists for which a font descriptor has been created. BUTNOT can be a list of font-specs which are not an acceptable coercion--e.g. a previous one that failed, so we want to keep looking beyond that one.") -(* ;;; "NOSLUG? means don't create an empty (slug) csinfo if the charset is not found, just return NIL (probably only useful for display fonts)") - (* ;; "COERCELIST is an alist of font coercions indexed by device, with the value for each device being a list of the form ((user-font real-font) (user-font real-font) ...) --- Each user-font is either simply a family name, or a list of FAMILY, and optionally SIZE, and FACE, in standard font-name order. Any of these can be NIL, meaning that any requested value matches. In addition, the SIZE can be either a specific number, or a constraint of the form (< n) or (> n), which matches requested sizes that are less than or greater than the constraint size n. --- The real-font is a similar family-name or list, except that a NIL field here means that the requested parameter is simply carried over. Also, no size constraints, only explicit sizes, are allowed. (e.g., (GACHA) or (GACHA (< 10)) or (GACHA 10))") - - (for TRANSL in (CDR (ASSOC DEVICE COERCELIST)) bind NEWCSINFO USERSPEC REALSPEC - FAMCONSTRAINT SIZECONSTRAINT - FACECONSTRAINT NEWFONTNAME - when (AND (SETQ USERSPEC (CAR TRANSL)) - (OR [NULL (SETQ FAMCONSTRAINT (COND - ((LISTP USERSPEC) - (pop USERSPEC)) - (T (PROG1 USERSPEC (SETQ USERSPEC NIL] - (EQ FAMILY FAMCONSTRAINT)) - (OR (NOT (SETQ SIZECONSTRAINT (pop USERSPEC))) - (EQ SIZE SIZECONSTRAINT) - (AND (LISTP SIZECONSTRAINT) - (SELECTQ (CAR SIZECONSTRAINT) - (< (LESSP SIZE (CADR SIZECONSTRAINT))) - (> (GREATERP SIZE (CADR SIZECONSTRAINT))) - NIL))) - (OR (NOT (SETQ FACECONSTRAINT (pop USERSPEC))) - (EQUAL FACE FACECONSTRAINT)) - (SETQ REALSPEC (CADR TRANSL)) - (SETQ NEWFONTNAME (LIST (OR [COND - ((LISTP REALSPEC) - (pop REALSPEC)) - (T (PROG1 REALSPEC (SETQ REALSPEC NIL] - FAMILY) - (OR (pop REALSPEC) - SIZE) - (\FONTFACE (OR (pop REALSPEC) - FACE)) - ROTATION DEVICE)) - (NOT (for EXCLUDE in BUTNOT thereis (EQUAL EXCLUDE NEWFONTNAME))) - (OR (NULL CREATEFLG) - (FONTCREATE NEWFONTNAME NIL NIL NIL NIL T))) do (RETURN NEWFONTNAME]) -) - -(ADDTOVAR FONTCOERCIONS (PRESS ((SYMBOL (< 10)) - (SYMBOL 10)) - ((SYMBOL (> 12)) - (SYMBOL 12)))) - -(ADDTOVAR MISSINGFONTCOERCIONS (PRESS (MODERN HELVETICA) - (CLASSIC TIMESROMAN) - (LOGOTYPE LOGO) - (TERMINAL GACHA) - (MODERN FRUTIGER) - (CLASSIC CENTURY))) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS FONTCOERCIONS MISSINGFONTCOERCIONS) -) -(DEFINEQ - -(\STRINGWIDTH.PRESS - [LAMBDA (STREAM STRING RDTBL) (* rmk%: "24-Feb-86 09:49") - - (* Returns the width of STRING in the press STREAM, observing spacefactor) - - (\STRINGWIDTH.GENERIC STRING (ffetch PRLOGICALFONT of (ffetch IMAGEDATA of STREAM - )) - RDTBL - (ffetch PRSPACEWIDTH of (ffetch IMAGEDATA of STREAM]) - -(\CHARWIDTH.PRESS - [LAMBDA (STREAM CHARCODE) (* rmk%: "24-Feb-86 09:49") - - (* Gets the width of CHARCODE in a Press STREAM, observing spacefactor) - - (COND - ((EQ CHARCODE (CHARCODE SPACE)) - (ffetch PRSPACEWIDTH of (ffetch IMAGEDATA of STREAM))) - (T (\FGETCHARWIDTH (ffetch PRLOGICALFONT of (ffetch IMAGEDATA of STREAM)) - CHARCODE]) - -(\OUTCHARFN.PRESS - [LAMBDA (PRSTREAM CHARCODE) (* rmk%: "24-Feb-86 12:18") - - (* Handle all the special-purpose characters going to a PRESS file) - - (SELCHARQ CHARCODE - (EOL (* New Line) - (NEWLINE.PRESS PRSTREAM) - (replace (STREAM CHARPOSITION) of PRSTREAM with 0)) - (LF (* Line feed--move down, but not - over) - (\DSPXPOSITION.PRESS PRSTREAM (PROG1 (DSPXPOSITION NIL PRSTREAM) - (NEWLINE.PRESS PRSTREAM)))) - (^L (* Form Feed) - (replace (STREAM CHARPOSITION) of PRSTREAM with 0) - (NEWPAGE.PRESS PRSTREAM)) - (PROG (XPOS NEWXPOS CLIPPINGREGION PRCHARCODE TRANSLATION (CHARSET (\CHARSET CHARCODE)) - (PRDATA (fetch IMAGEDATA of PRSTREAM))) - [if (NEQ CHARSET (ffetch PRLOGICALCHARSET of PRDATA)) - then (LET [(CSINFO (\GETCHARSETINFO CHARSET (ffetch PRLOGICALFONT - of PRDATA] - (UNINTERRUPTABLY - (freplace PRWIDTHSCACHE of PRDATA - with (fetch (CHARSETINFO WIDTHS) of CSINFO)) - (freplace PRTRANSLATIONCACHE of PRDATA - with (fetch (CHARSETINFO CHARSETBITMAP) of CSINFO - )) - (freplace PRLOGICALCHARSET of PRDATA with CHARSET))] - (SETQ TRANSLATION (\GETBASEPTR (ffetch PRTRANSLATIONCACHE of PRDATA) - (UNFOLD (\CHAR8CODE CHARCODE) - 2))) - (if (NEQ (CAR TRANSLATION) - (fetch PRFONT of PRDATA)) - then (\DSPFONT.PRESSFONT PRSTREAM (CAR TRANSLATION))) - (SETQ PRCHARCODE (CDR TRANSLATION)) - (SETQ XPOS (fetch PRXPOS of PRDATA)) - [SETQ NEWXPOS (IPLUS XPOS (COND - ((EQ CHARCODE (CHARCODE SPACE)) - (ffetch PRSPACEWIDTH of PRDATA)) - (T (\FGETWIDTH (ffetch (PRESSDATA PRWIDTHSCACHE) - of PRDATA) - (\CHAR8CODE CHARCODE] - (COND - ((AND [IGEQ XPOS (fetch LEFT of (SETQ CLIPPINGREGION (fetch - PRClippingRegion - of PRDATA] - (ILEQ NEWXPOS (fetch RIGHT of CLIPPINGREGION)) - (IGEQ (fetch PRYPOS of PRDATA) - (fetch BOTTOM of CLIPPINGREGION))) - - (* Bottom test should really subtract off the descent, and also should do a - top-test) - - (* The Y-tests can probably be done inside SETXY, SETY, and DSPFONT.) - - [COND - ((NOT (ffetch CHARWASDISPLAYING of PRDATA)) - (* Was being clipped, now not) - (freplace CHARWASDISPLAYING of PRDATA with T) - (SHOW.PRESS PRSTREAM) (* SHOW shouldn't be necessary, but - |...|) - (SETXY.PRESS PRSTREAM XPOS (fetch PRYPOS of PRDATA] - (\BOUT PRSTREAM PRCHARCODE)) - (T (SHOW.PRESS PRSTREAM) - - (* Don't put out any characters if out of the clipping region) - - (freplace CHARWASDISPLAYING of PRDATA with NIL))) - (replace PRXPOS of PRDATA with NEWXPOS]) -) - (* * new declaration for PRESSDATA) - -(DECLARE%: DONTCOPY -(DECLARE%: EVAL@COMPILE - -(DATATYPE PRESSDATA (PRHEADING (* ; - "The string to be printed atop each page.") - PRHEADINGFONT (* ; "Font to print the heading in") - PRXPOS (* ; "Current X position") - PRYPOS (* ; "Current Y position") - PRFONT (* ; "Current font") - PRCURRFDE PRESSFONTDIR (PRWIDTHSCACHE POINTER - (* ; - "Widths table for the current logical character set") - ) - PRCOLOR PRLINEFEED PRPAGESTATE PDSTREAM ELSTREAM XPRPAGEREGION PRDOCNAME - (PRLEFT WORD) (* ; "Page left margin") - (PRBOTTOM WORD) (* ; "Page bottom margin") - (PRRIGHT WORD) (* ; "Page right margin") - (PRTOP WORD) (* ; "Page top margin") - (PRPAGENUM WORD) (* ; "Current Page number") - (PRNEXTFONT# BYTE) - (PRMAXFONTSET BYTE) - (PRPARTSTART INTEGER) - (DLSTARTBYTE INTEGER) - (ELSTARTBYTE INTEGER) - (STARTCHARBYTE INTEGER) - (VECMOVINGRIGHT FLAG) (* ; - "If we're drawing a curve with vector fonts, are we moving to the right?") - (VECWASDISPLAYING FLAG) - - (* ;; "Used during curve/line clipping to remember whether we were on-screen or not, so we know when to force a SETXY.") - - VECSEGCHARS (* ; - "Cache for vector characters while we're moving to the left.") - VECCURX (* ; - "Current X position within vector code, in Dover spots") - VECCURY (* ; - "Current Y position with vector code, in Dover spots") - PRSPACEFACTOR PRSPACEWIDTH (CHARWASDISPLAYING FLAG) - (* ; - "Says whether we have been printing characters inside the clipping region") - PRClippingRegion - - (* ;; "The edges of the paper, as far as PRESS is concerned. Used to protect SPRUCE users who get killed when the image goes off-paper") - - PRLOGICALFONT (* ; "Current logical font") - PRLOGICALCHARSET (* ; - "Current logical character set, whose info is cached. NIL if cache is invalid") - (PRTRANSLATIONCACHE POINTER (* ; - "Translation table for the current logical character set") - )) - PRSPACEFACTOR _ 1 PRXPOS _ 0 PRYPOS _ 0 (* ; - "We assume that the origin is translated to the bottom-left of the page region") - PRClippingRegion _ (create REGION - LEFT _ SPRUCEPAPERLEFTMICAS - BOTTOM _ SPRUCEPAPERBOTTOMMICAS - WIDTH _ (DIFFERENCE SPRUCEPAPERRIGHTMICAS - SPRUCEPAPERLEFTMICAS) - HEIGHT _ 29210) - [ACCESSFNS ((PRWIDTH (IDIFFERENCE (fetch (PRESSDATA PRRIGHT) of DATUM) - (fetch (PRESSDATA PRLEFT) of DATUM))) - (PRHEIGHT (IDIFFERENCE (fetch (PRESSDATA PRTOP) of DATUM) - (fetch (PRESSDATA PRBOTTOM) of DATUM))) - (PRPAGEREGION (fetch (PRESSDATA XPRPAGEREGION) of DATUM) - (PROGN (replace (PRESSDATA XPRPAGEREGION) of DATUM - with NEWVALUE) - (replace (PRESSDATA PRLEFT) of DATUM - with (fetch (REGION LEFT) of NEWVALUE)) - (replace (PRESSDATA PRBOTTOM) of DATUM - with (fetch (REGION BOTTOM) of NEWVALUE)) - (replace (PRESSDATA PRRIGHT) of DATUM - with (IPLUS (fetch (REGION LEFT) of NEWVALUE) - (fetch (REGION WIDTH) of NEWVALUE))) - (replace (PRESSDATA PRTOP) of DATUM - with (IPLUS (fetch (REGION BOTTOM) of NEWVALUE) - (fetch (REGION HEIGHT) of NEWVALUE]) -) - -(/DECLAREDATATYPE 'PRESSDATA - '(POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER - POINTER POINTER POINTER POINTER WORD WORD WORD WORD WORD BYTE BYTE FIXP FIXP FIXP FIXP - FLAG FLAG POINTER POINTER POINTER POINTER POINTER FLAG POINTER POINTER POINTER POINTER - ) - '((PRESSDATA 0 POINTER) - (PRESSDATA 2 POINTER) - (PRESSDATA 4 POINTER) - (PRESSDATA 6 POINTER) - (PRESSDATA 8 POINTER) - (PRESSDATA 10 POINTER) - (PRESSDATA 12 POINTER) - (PRESSDATA 14 POINTER) - (PRESSDATA 16 POINTER) - (PRESSDATA 18 POINTER) - (PRESSDATA 20 POINTER) - (PRESSDATA 22 POINTER) - (PRESSDATA 24 POINTER) - (PRESSDATA 26 POINTER) - (PRESSDATA 28 POINTER) - (PRESSDATA 30 (BITS . 15)) - (PRESSDATA 31 (BITS . 15)) - (PRESSDATA 32 (BITS . 15)) - (PRESSDATA 33 (BITS . 15)) - (PRESSDATA 34 (BITS . 15)) - (PRESSDATA 35 (BITS . 7)) - (PRESSDATA 35 (BITS . 135)) - (PRESSDATA 36 FIXP) - (PRESSDATA 38 FIXP) - (PRESSDATA 40 FIXP) - (PRESSDATA 42 FIXP) - (PRESSDATA 28 (FLAGBITS . 0)) - (PRESSDATA 28 (FLAGBITS . 16)) - (PRESSDATA 44 POINTER) - (PRESSDATA 46 POINTER) - (PRESSDATA 48 POINTER) - (PRESSDATA 50 POINTER) - (PRESSDATA 52 POINTER) - (PRESSDATA 52 (FLAGBITS . 0)) - (PRESSDATA 54 POINTER) - (PRESSDATA 56 POINTER) - (PRESSDATA 58 POINTER) - (PRESSDATA 60 POINTER)) - '62) -) - -(/DECLAREDATATYPE 'PRESSDATA - '(POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER - POINTER POINTER POINTER POINTER WORD WORD WORD WORD WORD BYTE BYTE FIXP FIXP FIXP FIXP - FLAG FLAG POINTER POINTER POINTER POINTER POINTER FLAG POINTER POINTER POINTER POINTER - ) - '((PRESSDATA 0 POINTER) - (PRESSDATA 2 POINTER) - (PRESSDATA 4 POINTER) - (PRESSDATA 6 POINTER) - (PRESSDATA 8 POINTER) - (PRESSDATA 10 POINTER) - (PRESSDATA 12 POINTER) - (PRESSDATA 14 POINTER) - (PRESSDATA 16 POINTER) - (PRESSDATA 18 POINTER) - (PRESSDATA 20 POINTER) - (PRESSDATA 22 POINTER) - (PRESSDATA 24 POINTER) - (PRESSDATA 26 POINTER) - (PRESSDATA 28 POINTER) - (PRESSDATA 30 (BITS . 15)) - (PRESSDATA 31 (BITS . 15)) - (PRESSDATA 32 (BITS . 15)) - (PRESSDATA 33 (BITS . 15)) - (PRESSDATA 34 (BITS . 15)) - (PRESSDATA 35 (BITS . 7)) - (PRESSDATA 35 (BITS . 135)) - (PRESSDATA 36 FIXP) - (PRESSDATA 38 FIXP) - (PRESSDATA 40 FIXP) - (PRESSDATA 42 FIXP) - (PRESSDATA 28 (FLAGBITS . 0)) - (PRESSDATA 28 (FLAGBITS . 16)) - (PRESSDATA 44 POINTER) - (PRESSDATA 46 POINTER) - (PRESSDATA 48 POINTER) - (PRESSDATA 50 POINTER) - (PRESSDATA 52 POINTER) - (PRESSDATA 52 (FLAGBITS . 0)) - (PRESSDATA 54 POINTER) - (PRESSDATA 56 POINTER) - (PRESSDATA 58 POINTER) - (PRESSDATA 60 POINTER)) - '62) - (* * NSTOASCIITRANSLATIONS is a list with elements of the form (charset translationArrayName) %, where - translationArrayName is bound to a translation array for charset which contains (fontFamily charcode) - lists) - -(DEFINEQ - -(\NSTOASCIIARRAY - [LAMBDA (CHARSET) (* thh%: "17-Feb-86 09:05") - (* gets the translation array to use - for this charset) - (EVAL (CADR (ASSOC CHARSET NSTOASCIITRANSLATIONS]) - -(\NSTOASCIITRANSLATION - [LAMBDA (TRANSLATION FAMILY FONTDESC) (* thh%: " 5-Mar-86 10:23") - - (* returns (fontdesc . charcode) to use in place of the specified 8-bit - charcode) - - (* FAMILY, if specified, is font family to use when not specified by the - translation array) - - (* * determine the (family charcode) translation) - - (OR TRANSLATION (SETQ TRANSLATION unknownCharTranslation)) - [COND - ((FIXP TRANSLATION) - (SETQ TRANSLATION (LIST (OR FAMILY FONTDESC) - TRANSLATION] - - (* * coerce to a full font descriptor) - - (CONS (\PRESS.COERCEFONT FONTDESC (CAR TRANSLATION)) - (CADR TRANSLATION]) -) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS NSTOASCIITRANSLATIONS PRESSFONTFAMILIES) -) - -(RPAQ? PRESSFONTFAMILIES '((GACHA) - (TIMESROMAN) - (HELVETICA) - (SYMBOL) - (MATH) - (HIPPO) - (CYRILLIC) - (NEWVEC) - (SNEWVEC) - (HNEWVEC) - (VNEWVEC))) - -(RPAQ? NSTOASCIITRANSLATIONS ) - -(ADDTOVAR NSTOASCIITRANSLATIONS (0 ASCIIFROM0ARRAY) - (38 ASCIIFROM38ARRAY) - (39 ASCIIFROM39ARRAY) - (239 ASCIIFROM239ARRAY)) - -(READVARS-FROM-STRINGS '(ASCIIFROM0ARRAY ASCIIFROM38ARRAY ASCIIFROM39ARRAY ASCIIFROM239ARRAY) - "({Y256 POINTER 0 {R163 NIL} (SYMBOL 126) (SYMBOL 127) NIL NIL (SYMBOL 120) NIL 96 NIL NIL (SYMBOL -55) (SYMBOL 34) (SYMBOL 33) (SYMBOL 35) NIL (SYMBOL 6) NIL NIL (SYMBOL 2) NIL (SYMBOL 123) NIL -(SYMBOL 13) 39 {R25 NIL} (SYMBOL 125) {R44 NIL} } {Y256 POINTER 0 (HIPPO 118) {R64 NIL} (HIPPO 65) - (HIPPO 66) NIL (HIPPO 71) (HIPPO 68) (HIPPO 69) NIL NIL (HIPPO 90) (HIPPO 72) (HIPPO 81) ( -HIPPO 73) (HIPPO 75) (HIPPO 76) (HIPPO 77) (HIPPO 78) (HIPPO 67) (HIPPO 79) (HIPPO 80) NIL ( -HIPPO 82) (HIPPO 83) NIL (HIPPO 84) (HIPPO 85) (HIPPO 70) (HIPPO 88) (HIPPO 89) (HIPPO 87) NIL -NIL NIL (HIPPO 97) (HIPPO 98) NIL (HIPPO 103) (HIPPO 100) (HIPPO 101) NIL NIL (HIPPO 122) ( -HIPPO 104) (HIPPO 113) (HIPPO 105) (HIPPO 107) (HIPPO 108) (HIPPO 109) (HIPPO 110) (HIPPO 99) -(HIPPO 111) (HIPPO 112) NIL (HIPPO 114) (HIPPO 115) (HIPPO 106) (HIPPO 116) (HIPPO 117) (HIPPO -102) (HIPPO 120) (HIPPO 121) (HIPPO 119) {R130 NIL} } {Y256 POINTER 0 (CYRILLIC 127) {R32 NIL} ( -CYRILLIC 65) (CYRILLIC 66) (CYRILLIC 86) (CYRILLIC 71) (CYRILLIC 68) (CYRILLIC 69) (CYRILLIC 36) - (CYRILLIC 87) (CYRILLIC 90) (CYRILLIC 73) (CYRILLIC 74) (CYRILLIC 75) (CYRILLIC 76) (CYRILLIC -77) (CYRILLIC 78) (CYRILLIC 79) (CYRILLIC 80) (CYRILLIC 82) (CYRILLIC 83) (CYRILLIC 84) ( -CYRILLIC 85) (CYRILLIC 70) (CYRILLIC 81) (CYRILLIC 126) (CYRILLIC 42) (CYRILLIC 123) (CYRILLIC -125) (CYRILLIC 94) (CYRILLIC 88) (CYRILLIC 67) (CYRILLIC 64) (CYRILLIC 89) (CYRILLIC 72) {R15 -NIL} (CYRILLIC 97) (CYRILLIC 98) (CYRILLIC 118) (CYRILLIC 103) (CYRILLIC 100) (CYRILLIC 101) ( -CYRILLIC 52) (CYRILLIC 119) (CYRILLIC 122) (CYRILLIC 105) (CYRILLIC 106) (CYRILLIC 107) ( -CYRILLIC 108) (CYRILLIC 109) (CYRILLIC 110) (CYRILLIC 111) (CYRILLIC 112) (CYRILLIC 114) ( -CYRILLIC 115) (CYRILLIC 116) (CYRILLIC 117) (CYRILLIC 102) (CYRILLIC 113) (CYRILLIC 54) ( -CYRILLIC 56) (CYRILLIC 91) (CYRILLIC 93) (CYRILLIC 95) (CYRILLIC 120) (CYRILLIC 143) (CYRILLIC -50) (CYRILLIC 121) (CYRILLIC 104) {R12 NIL} (CYRILLIC 99) {R129 NIL} } {Y256 POINTER 0 {R36 NIL} -(TIMESROMAN 155) (TIMESROMAN 156) {R6 NIL} (TIMESROMAN 152) (TIMESROMAN 153) NIL (TIMESROMAN 159) - (MATH 33) (MATH 70) (SYMBOL 104) (SYMBOL 105) NIL NIL (SYMBOL 96) (SYMBOL 97) (MATH 113) NIL ( -SYMBOL 109) (SYMBOL 108) (MATH 116) (MATH 118) (MATH 115) (MATH 117) (MATH 64) NIL (SYMBOL 37) - (SYMBOL 38) {R4 NIL} (MATH 109) NIL (MATH 66) (MATH 78) (MATH 44) (SYMBOL 40) (SYMBOL 44) ( -SYMBOL 41) (MATH 126) (MATH 81) (SYMBOL 36) (MATH 98) NIL NIL (SYMBOL 92) (SYMBOL 91) (SYMBOL -19) (SYMBOL 18) (SYMBOL 27) (SYMBOL 26) NIL NIL (MATH 75) (MATH 72) NIL (MATH 79) (SYMBOL 8) ( -SYMBOL 9) (MATH 54) (SYMBOL 11) (TIMESROMAN 183) (SYMBOL 5) (MATH 104) NIL (SYMBOL 58) NIL ( -SYMBOL 54) NIL NIL (MATH 22) (SYMBOL 16) (MATH 80) (SYMBOL 17) (SYMBOL 29) NIL (SYMBOL 115) ( -MATH 7) (SYMBOL 39) NIL (SYMBOL 25) (MATH 19) (MATH 1) (SYMBOL 112) (SYMBOL 7) {R41 NIL} ( -SYMBOL 59) {R6 NIL} (MATH 82) NIL (SYMBOL 100) (SYMBOL 101) (SYMBOL 98) (SYMBOL 99) (SYMBOL 57) - (SYMBOL 56) (SYMBOL 94) (SYMBOL 95) (MATH 90) (MATH 68) (MATH 100) {R69 NIL} }) -") - -(\SMASHPRESSFONTS) -(DECLARE%: DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RPAQQ unknownCharTranslation (MATH 59)) - - -[CONSTANTS (unknownCharTranslation '(MATH 59] -) -) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (2898 3274 (\SMASHPRESSFONTS 2908 . 3272)) (3275 8422 (GETCHARPRESSTRANSLATION 3285 . -4793) (PRESS.NSARRAY 4795 . 6118) (PUTCHARPRESSTRANSLATION 6120 . 8420)) (8423 19133 (\DSPFONT.PRESS -8433 . 9884) (\DSPSPACEFACTOR.PRESS 9886 . 10738) (\ENTITYSTART.PRESS 10740 . 12462) (\SETSPACE.PRESS -12464 . 13166) (\STARTPAGE.PRESS 13168 . 15276) (\PRESS.COERCEFONT 15278 . 16744) (\DSPFONT.PRESSFONT -16746 . 18120) (SETUPFONTS.PRESS 18122 . 19131)) (19134 40822 (\CREATEPRESSFONT 19144 . 20342) ( -\CREATECHARSET.PRESS 20344 . 25444) (\CREATECHARSETZERO.PRESS 25446 . 40820)) (40823 55366 ( -\PRESSCURVE2 40833 . 55364)) (55446 59198 (\COERCEFONT 55456 . 59196)) (59822 65319 ( -\STRINGWIDTH.PRESS 59832 . 60325) (\CHARWIDTH.PRESS 60327 . 60792) (\OUTCHARFN.PRESS 60794 . 65317)) ( -74712 75877 (\NSTOASCIIARRAY 74722 . 75074) (\NSTOASCIITRANSLATION 75076 . 75875))))) -STOP diff --git a/obsolete/lispusers/PRESSFROMNS.TEDIT b/obsolete/lispusers/PRESSFROMNS.TEDIT deleted file mode 100644 index 26a478d16671da40e14beccadd29bf6f74fd6491..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9032 zcmeHLU2ojR6+X$52Sc~H-E8hOn_JDMJ&0Ef-g|aeDbJs(2g%8aYVmhx;s5fJ zAWfcjCds_r><_*1=>Ad9>yL&_?=;NRJee+|K;g+(3qPNnsytDC6eZ{CFb%RyEz&T~ zgEZr~JgcFrCZ~StPh|M`naWc?<e#;}eyi26IudSfmN${X8fX&5}6JI_h39OVU6^ zi9glyFg**SU_;IQCxObA_y{HV?c;x(sALhuuuLpjo(BFrQ?0NQbodQ0rjumxOobFl zPDF|esDp2JRI@kY+6ROFa9{NvbjRJE=Zux>c*+}hhwh+DPF#=z^JYCs3|fF<0_bTH zMZr{IxxR{*^Wz{@$xNO3SmJRMKrWuD*)pEwA!kj4Y?6k@oDhJ^j)LASu*4^Rj8CLL zoP`h*c9XMkigiz?A+`9CN>YXIGq4foHCR~Cev}+Tq;!SKg1Ss|=z62B+w1r36<+`J zVS)K^6BxR#JL;(@%yM;pngC)D1#?)-!0nlMLcw2i)uNph3*9vJpAG$a0DdKyvPCfA zax&-&8A=tA;1R-%GprN~UuIbJ`6*mm3hC%kM#;3kv`*7`>dzNZa96cjo4}2AF(o#; z<8k*8^=P})2D_(zenEnOj*}&P2UrNZ0;Yu#tFJ*cJlxvttOiTTM@=h8 z)@#@NhVe9bszA&MXqu(TTy4_!_U+pp<@g}2Z~&vL0%SoOrAE=u*nRcbilDH(8 z-lWgZ!zdC&1j?LOenvhB&~UdY*^)paJr4n1*A-tKNB-mq{PC2l0#V_F<%5dsnuBy) zMpNL(8At|8Fl}ykpcnJ<-~`zzOAa*CCC3Fwqq~R-q2|nwmQn~U=L5RUH$v7hx}lDj zNH@k52$6LfBuHH@I1N5qhAF0eD!GA?xgW;SGmG=ut*7n2niP&T0!Teqgwk& zBVTQ8w%ZJ6ih~w^G6@zrYc-d&huxqzcDkO^DK=6J>~#`a3;GyI7dtJ3d2efW)sg~D2a9q^t?ojRA zZgaF6!HfIo;NED^ZZ{b@cbRdh2^Oeg6NXojO+^4n##wP8TZyzp5=+GtvmKSX0OKi^~Asa~*rngzUhQQB#cJ~NvyVYke%MwSY!{OkLkW9AdP0B;JY8mJ7o^S zM;%=fnWCyUa>hM#$bomkgY2`ung=XX_r~P;G{{8%BC9`T@6-h z2V4nn2fAI~U{7ZI!?1IJzBG;1E^MMnoQEf;)lMXPH0J4csEQ;+qWf%qoJ4B3qu^C( z++_YVK|4*i22XjGfr|)AB0flgLA6eTI7kII9LX+uf`TS#}x zS*}CPo&-}KRrOpQ@tPQ|lR3Acq#r?46ri^@_2NNd!HzydOp+j-6m8?`S+o2mZG-j) zoxmoEE0yyEf)aqI*q<0NTI>j{M6Bsv?$a-6+Jtxr%Y{)CZ_K>RMk2t9xM(O*7N3VWv#1RR9x`dKs*I zS%{-1_W5MN!#OwNPE&eDlS6ioD79WVl#3HJc`Ki7u;nX1GWOIkK%eSv`o*JNN*HHU!Q}3L{HifCvV^l!Hu$9QpRAF3`8mA_?E)B!F!rK527TAid#a8TqMJ*K$5G-okf)tkzBH;3OQdf1zTWEK}9` zfDbr%pkT<6AMG76>FdD)kuH#yaf^SEuF@#h*+WBFfZ8`TP>6YTS}na|7^~MOLREV6 zhig)F)(P$_{H)n3j$2#?j>xJ!f9V5r`Sk*03qu)FU_kl^Xi8N2;oIcnf|yszCG4f>=0aBrkqxWc^$UGKbu ze{JP@-LZ$N!nr?H+ncwru1#F~+(G4e@BMAOwPdc*JMIofqYqux`sk>8U-g_Jv^)3P z(!>^D+#?$Ajr)fl6!nJ>`)>cUJ>@zBr{^64iYM=f_Qx8UmPWkq+)8BvKsRQSJ z|LB0goUyTdZSXcezzz3B;y}#SdpqjZ9kso?i$85Gk7IoIKCj9p zb&4175kVXchxouD%-!8l@9pfU+uQbB&-uiYi82`?@87|>|Bkw|iFhL%-T;(N7NP&C zt0Z8)IsI3VP2k(R+iC|vwf&9R+5uw~)Bk6Sf%g2^`r2%@bvb#taiejIb!F|##;g4E z(lz{A`*MwAD?e*qIdGFt#gz4ROu6u532*S@mBQ8RZAj z?_=oN`b*V^OP+3X46--y=NegAe=afA?2X13jW5=A8?SKE3k(=q#J~%IYrV8|?FF(A zC-iwho~i55`9Wr-K{Cz2TaLs<0-~qRLFYe5bZ{SR^BucqWxvO z(PgDpn)!=8Ko9f3NNn(d7$5V&faaWk*aHlhO?!Y6e_9>**UG@!uk8WCV>J>h&&9g- z6C*;`)v!L`7h=6Y%{oGbU zu{X@XbLTYvXhaANhS&dK4=@0KW)ILmcR6q&ASf!EwsALuNCqJK*1sFS`~2_!1#mS{ A6#xJL diff --git a/obsolete/lispusers/PS-PATCH b/obsolete/lispusers/PS-PATCH deleted file mode 100644 index a0cc1ac3..00000000 --- a/obsolete/lispusers/PS-PATCH +++ /dev/null @@ -1,434 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED " 8-Nov-90 18:53:15" |{PELE:MV:ENVOS}MEDLEY>POSTSCRIPT>PS-PATCH.;2| 24907 - - changes to%: (VARS PS-PATCHCOMS) - (PROPS (PS-PATCH MAKEFILE-ENVIRONMENT)) - (FNS FIX-SKETCH) - - previous date%: "22-Feb-89 14:11:29" |{PELE:MV:ENVOS}MEDLEY>POSTSCRIPT>PS-PATCH.;1| -) - - -(* ; " -Copyright (c) 1989, 1990 by ENVOS Corporation. All rights reserved. -") - -(PRETTYCOMPRINT PS-PATCHCOMS) - -(RPAQQ PS-PATCHCOMS - ((PROP (MAKEFILE-ENVIRONMENT FILETYPE) - PS-PATCH) - (FNS ADD.KNOWN.SKETCH.FONT NEW-SK-PICK-FONT NEW-SK-DECREASING-FONT-LIST - NEW-SKETCHW-HARDCOPYFN FIX-SKETCH) - [VARS (SKETCH-PATCHES '((NEW-SK-PICK-FONT . SK.PICK.FONT) - (NEW-SK-DECREASING-FONT-LIST . SK.DECREASING.FONT.LIST) - (NEW-SKETCHW-HARDCOPYFN . SKETCHW.HARDCOPYFN] - - (* ;; - "NOTE: to compile the following 2 functions you need FONT loaded prop and EXPORTS.ALL loaded.") - - (FNS \BUILDSLUGCSINFO \CREATECHARSET) - (ADDVARS (POSTSCRIPT.FONT.CONVERSIONS (HELVETICA . HELVETICA) - (TIMESROMAND . TIMESROMAN) - (COURIER . COURIER) - (GACHA . COURIER) - (CLASSIC . TIMESROMAN) - (MODERN . HELVETICA) - (CREAM . HELVETICA) - (TERMINAL . COURIER) - (LOGO . HELVETICA) - (MODERN . HELVETICA))) - (VARS (\KNOWN.SKETCH.FONTSIZES)) - (GLOBALVARS (\KNOWN.SKETCH.FONTSIZES) - POSTSCRIPT.FONT.CONVERSIONS) - - (* ;; "finally actually do the patching of sketch.") - - (P (FIX-SKETCH)))) - -(PUTPROPS PS-PATCH MAKEFILE-ENVIRONMENT (:PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10 - )) - -(PUTPROPS PS-PATCH FILETYPE :TCOMPL) -(DEFINEQ - -(ADD.KNOWN.SKETCH.FONT - [LAMBDA (FAMILY WID DEVICE FONT) (* ; "Edited 21-Feb-89 15:06 by snow") - - (* ;; "add to the globally cached font list") - - (DECLARE (GLOBALVARS \KNOWN.SKETCH.FONTSIZES)) - (LET ((CACHE (ASSOC FAMILY \KNOWN.SKETCH.FONTSIZES)) - (CACHED)) - (COND - [(NULL CACHE) - (if \KNOWN.SKETCH.FONTSIZES - then [NCONC1 \KNOWN.SKETCH.FONTSIZES (LIST FAMILY (LIST DEVICE (CONS WID FONT] - else (SETQ \KNOWN.SKETCH.FONTSIZES (LIST (LIST FAMILY (LIST DEVICE - (CONS WID FONT] - (T (COND - ((SETQ CACHED (ASSOC DEVICE CACHE)) - (NCONC1 CACHED (CONS WID FONT))) - (T (NCONC1 CACHE (CONS DEVICE (CONS WID FONT]) - -(NEW-SK-PICK-FONT - [LAMBDA (WID STRING DEVICE FAMILY) (* ; "Edited 22-Feb-89 07:53 by snow") - - (* ;; "returns the font in FAMILY that text should be printed in to have the text STRING fit into a region WID points wide") - - (DECLARE (GLOBALVARS \KNOWN.SKETCH.FONTSIZES)) - (PROG (LASTFONT LASTSIZE DISPLAYFONT SCALE CACHEDFONT) - (IF [SETQ CACHEDFONT (ASSOC WID (ASSOC DEVICE (ASSOC FAMILY \KNOWN.SKETCH.FONTSIZES] - THEN (RETURN (CDR CACHEDFONT))) - (RETURN (for FONT in (SK.DECREASING.FONT.LIST FAMILY DEVICE) - when (NOT (GREATERP [SETQ LASTSIZE (COND - ((SETQ SCALE (FONTPROP FONT - 'SCALE)) - - (* ;; - "IF THERE IS A SCALE, YOU MUST SCALE THE FONT.") - - (QUOTIENT (STRINGWIDTH STRING FONT) - SCALE)) - ((SETQ DISPLAYFONT (FONTCOPY - (SETQ LASTFONT - FONT) - 'DEVICE - 'DISPLAY - 'NOERROR T)) - (* ; "use display if it exists.") - (STRINGWIDTH STRING DISPLAYFONT)) - (T - (* ; - "in some cases, font exists for devices other than display.") - (QUOTIENT (STRINGWIDTH STRING FONT) - (FONTPROP FONT 'SCALE] - WID)) do (* ; - "return a font for the proper device even though the display fonts are used to pick a size.") - (ADD.KNOWN.SKETCH.FONT FAMILY WID DEVICE - (FONTCOPY FONT 'DEVICE DEVICE)) - (RETURN (FONTCOPY FONT 'DEVICE DEVICE)) - finally (RETURN (COND - ((OR (NULL LASTFONT) - (GREATERP LASTSIZE (TIMES 1.5 WID))) - 'SHADE) - (T (* ; - "use the smallest if it isn't too large.") - (FONTCOPY LASTFONT 'DEVICE DEVICE]) - -(NEW-SK-DECREASING-FONT-LIST - [LAMBDA (FAMILY DEVICETYPE) (* ; "Edited 21-Feb-89 11:26 by snow") - - (* ;; "returns a list of fonts of family FAMILY which work on device DEVICETYPE") - - [COND - ((NULL FAMILY) - (SETQ FAMILY 'MODERN] - - (* ;; "convert to families that exist on the known devices.") - -(* ;;; "NOTE: this is a very bad way to convert the family. It HARDCODES in the conversions for PRESS and INTERPRESS and does nothing for new device types. I have added the conversion for POSTSCRIPT that does things a little cleaner, but it should really look at a property of the device (fontconversions or some such animal.) --was 2/19/89") - - (LET ((CONVERSION)) - [COND - [(EQ DEVICETYPE 'PRESS) - (COND - ((EQ FAMILY 'MODERN) - (SETQ FAMILY 'HELVETICA)) - ((EQ FAMILY 'CLASSIC) - (SETQ FAMILY 'TIMESROMAN)) - ((EQ FAMILY 'TERMINAL) - (SETQ FAMILY 'GACHA] - [(EQ DEVICETYPE 'INTERPRESS) - (COND - ((EQ FAMILY 'HELVETICA) - (SETQ FAMILY 'MODERN)) - ((EQ FAMILY 'TIMESROMAN) - (SETQ FAMILY 'CLASSIC)) - ((EQ FAMILY 'GACHA) - (SETQ FAMILY 'TERMINAL] - ((EQ DEVICETYPE 'POSTSCRIPT) - (if (SETQ CONVERSION (ASSOC FAMILY POSTSCRIPT.FONT.CONVERSIONS)) - then - - (* ;; - "convert the family here for postscript as well as the other well known devices.") - - (SETQ FAMILY (CDR CONVERSION] - (for FONT in (SK.GUESS.FONTSAVAILABLE FAMILY DEVICETYPE) - collect (FONTCOPY FONT 'DEVICE DEVICETYPE]) - -(NEW-SKETCHW-HARDCOPYFN - [LAMBDA (SKETCHW OPENIMAGESTREAM) (* ; "Edited 22-Feb-89 13:34 by snow") - (* ; - "dumps the sketch onto OPENIMAGESTREAM.") - (* ; - "centers it within the DSPCLIPPINGREGION of OPENIMAGESTREAM") - (PROG ((SKETCH (INSURE.SKETCH (SKETCH.FROM.VIEWER SKETCHW))) - (PAGEREGION (DSPCLIPPINGREGION NIL OPENIMAGESTREAM)) - (SKETCHREGION (SKETCH.REGION.VIEWED SKETCHW)) - (SCALE (VIEWER.SCALE SKETCHW)) - SKETCHREGIONINPAGECOORDS PAGELEFTSPACE PAGEBOTTOMSPACE PAGETOSKETCHFACTOR SKETCHX) - (OR SKETCH (RETURN)) - (SPAWN.MOUSE) - - (* ;; "move the margins out of the way") - - (* ;; - "smallp is to maintain compatibility with koto. For Lute release, this could be increased.") - - (DSPLEFTMARGIN (MIN 0 (fetch (REGION LEFT) of PAGEREGION)) - OPENIMAGESTREAM) - (DSPBOTTOMMARGIN (MIN 0 (fetch (REGION BOTTOM) of PAGEREGION)) - OPENIMAGESTREAM) - (DSPTOPMARGIN (MAX MAX.SMALLP (fetch (REGION TOP) of PAGEREGION)) - OPENIMAGESTREAM) - (DSPRIGHTMARGIN (MAX MAX.SMALLP (fetch (REGION RIGHT) of PAGEREGION)) - OPENIMAGESTREAM) - - (* ;; "PAGETOSKETCHFACTOR is the factor to multiply the page coordinates by to get into sketch coordinates.") - - (STATUSPRINT SKETCHW "Hardcopying ...") - [STREAMPROP OPENIMAGESTREAM 'PRINTOPTIONS (APPEND (LIST 'DOCUMENT.NAME (OR (SKETCH.TITLE - SKETCHW) - "A Sketch")) - (STREAMPROP OPENIMAGESTREAM 'PRINTOPTIONS] - (SETQ PAGETOSKETCHFACTOR (FQUOTIENT SCALE (DSPSCALE NIL OPENIMAGESTREAM))) - (SETQ SKETCHREGIONINPAGECOORDS (SCALE.REGION.OUT SKETCHREGION PAGETOSKETCHFACTOR)) - (COND - ((AND (NOT (EQ (IMAGESTREAMTYPE OPENIMAGESTREAM) - 'PRESS)) - (NOT (EQ (FETCH (IMAGEOPS IMROTATE) OF (FETCH (STREAM IMAGEOPS) - OF OPENIMAGESTREAM)) - 'NILL)) - (GREATERP (fetch WIDTH of SKETCHREGIONINPAGECOORDS) - (fetch WIDTH of PAGEREGION)) - (GREATERP (fetch WIDTH of SKETCHREGIONINPAGECOORDS) - (fetch HEIGHT of SKETCHREGIONINPAGECOORDS))) - - (* ;; "we ;have a stream that supports rotation, use it!") - - (DSPROTATE 90 OPENIMAGESTREAM) - (DSPTRANSLATE 0 (MINUS (FETCH (REGION HEIGHT) OF PAGEREGION)) - OPENIMAGESTREAM) - (DSPCLIPPINGREGION (SETQ PAGEREGION (SK.SWITCH.REGION.X.AND.Y PAGEREGION)) - OPENIMAGESTREAM) - - (* ;; "(ROTATE.IP OPENIMAGESTREAM 90) (CONCATT.IP OPENIMAGESTREAM) (TRANSLATE.IP OPENIMAGESTREAM 0 -21590) (CONCATT.IP OPENIMAGESTREAM) (DSPCLIPPINGREGION (SETQ PAGEREGION (SK.SWITCH.REGION.X.AND.Y PAGEREGION)) OPENIMAGESTREAM)") - - (* ;; "this was an incredibly bogus hack to make INTERPRESS only streams rotate the sketch image if they were too big. Now it tries to do it on any stream that has a dsprotate function.") - - )) - (SETQ PAGELEFTSPACE (QUOTIENT (DIFFERENCE (fetch (REGION WIDTH) of PAGEREGION) - (fetch (REGION WIDTH) of - SKETCHREGIONINPAGECOORDS - )) - 2)) - (SETQ PAGEBOTTOMSPACE (QUOTIENT (DIFFERENCE (fetch (REGION HEIGHT) of PAGEREGION) - (fetch (REGION HEIGHT) of - SKETCHREGIONINPAGECOORDS - )) - 2)) - - (* ;; "translate the sketch so that the lower left corner of the sketch region is at the lower left corner of the image on the page.") - - [SETQ SKETCHX (TRANSLATE.SKETCH SKETCH (MINUS (TIMES (DIFFERENCE - (SETQ PAGELEFTSPACE - (PLUS (fetch (REGION LEFT) - of PAGEREGION) - PAGELEFTSPACE)) - (fetch (REGION LEFT) of - - SKETCHREGIONINPAGECOORDS - )) - PAGETOSKETCHFACTOR)) - (MINUS (TIMES (DIFFERENCE (SETQ PAGEBOTTOMSPACE - (PLUS (fetch (REGION BOTTOM) - of PAGEREGION) - PAGEBOTTOMSPACE)) - (fetch (REGION BOTTOM) of - SKETCHREGIONINPAGECOORDS - )) - PAGETOSKETCHFACTOR] - (* ; - "calculate the local parts for the interpress sketch.") - (SETQ SKETCHX (MAKE.LOCAL.SKETCH SKETCHX (CREATEREGION (TIMES PAGELEFTSPACE - PAGETOSKETCHFACTOR) - (TIMES PAGEBOTTOMSPACE PAGETOSKETCHFACTOR) - (fetch (REGION WIDTH) of - SKETCHREGION - ) - (fetch (REGION HEIGHT) of - SKETCHREGION - )) - PAGETOSKETCHFACTOR OPENIMAGESTREAM)) - (DRAW.LOCAL.SKETCH SKETCHX OPENIMAGESTREAM (CREATEREGION PAGELEFTSPACE PAGEBOTTOMSPACE - (fetch (REGION WIDTH) of - SKETCHREGIONINPAGECOORDS - ) - (fetch (REGION HEIGHT) of - SKETCHREGIONINPAGECOORDS - ))) - (STATUSPRINT SKETCHW " done.") - (RETURN OPENIMAGESTREAM]) - -(FIX-SKETCH - [LAMBDA NIL (* ; "Edited 8-Nov-90 16:32 by jds") - (COND - ((BOUNDP 'ALL.SKETCHES) - - (* ;; "sketch is loaded") - - (for PATCHED-FN in '(NEW-SK-PICK-FONT NEW-SK-DECREASING-FONT-LIST - NEW-SKETCHW-HARDCOPYFN) as ORIGINAL-FN - in '(SK.PICK.FONT SK.DECREASING.FONT.LIST SKETCHW.HARDCOPYFN) - do (MOVD PATCHED-FN ORIGINAL-FN NIL T)) - (PROMPTPRINT "Sketch has been patched!") - T) - (T (PROMPTPRINT "Sketch doesn't seem to be loaded!") - (PROMPTPRINT "When you load sketch, make sure to call the function FIX-SKETCH!") - NIL]) -) - -(RPAQQ SKETCH-PATCHES ((NEW-SK-PICK-FONT . SK.PICK.FONT) - (NEW-SK-DECREASING-FONT-LIST . SK.DECREASING.FONT.LIST) - (NEW-SKETCHW-HARDCOPYFN . SKETCHW.HARDCOPYFN))) - - - -(* ;; "NOTE: to compile the following 2 functions you need FONT loaded prop and EXPORTS.ALL loaded." -) - -(DEFINEQ - -(\BUILDSLUGCSINFO - [LAMBDA (WIDTH ASCENT DESCENT DEVICE SCALE) (* ; "Edited 14-Feb-89 16:46 by snow") - -(* ;;; "builds a csinfo which contains only the slug (black rectangle) character") - - (SETQ SCALE (OR SCALE 1)) - (PROG ((CSINFO (create CHARSETINFO - CHARSETASCENT _ ASCENT - CHARSETDESCENT _ DESCENT - IMAGEWIDTHS _ (\CREATECSINFOELEMENT))) - WIDTHS OFFSETS BITMAP IMAGEWIDTHS) - (SETQ WIDTHS (fetch (CHARSETINFO WIDTHS) of CSINFO)) - (for I from 0 to \MAXTHINCHAR do (\FSETWIDTH WIDTHS I WIDTH)) - (SETQ IMAGEWIDTHS (fetch (CHARSETINFO WIDTHS) of CSINFO)) - (for I from 0 to \MAXTHINCHAR do (\FSETWIDTH WIDTHS I WIDTH)) - [SELECTQ DEVICE - (INTERPRESS (* ; - "don't need offsets in INTERPRESS fonts") - NIL) - (PROGN (replace (CHARSETINFO OFFSETS) of CSINFO with (SETQ OFFSETS ( - \CREATECSINFOELEMENT - ))) - (for I from 0 to \MAXTHINCHAR do (\FSETOFFSET OFFSETS I 0)) - [replace (CHARSETINFO CHARSETBITMAP) of CSINFO - with (SETQ BITMAP (BITMAPCREATE (ROUND (QUOTIENT WIDTH SCALE)) - (ROUND (QUOTIENT (IPLUS ASCENT DESCENT) - SCALE] - (BLTSHADE BLACKSHADE BITMAP 1 NIL (SUB1 (ROUND (QUOTIENT WIDTH SCALE] - (RETURN CSINFO]) - -(\CREATECHARSET - [LAMBDA (CHARSET FONT NOSLUG?) (* ; "Edited 14-Feb-89 16:29 by snow") - - (* ;; "Creates and returns the CHARSETINFO for charset CHARSET in fontdesc FONT, installing it in fonts FONTCHARSETVECTOR") - (* ; - "NOSLUG? means don't create an empty (slug) csinfo if the charset is not found, just return NIL") - (DECLARE (GLOBALVARS \DISPLAYSTREAMTYPES)) - (AND (IGREATERP CHARSET \MAXCHARSET) - (\ILLEGAL.ARG CHARSET)) - (PROG (CSINFO CREATEFN) - - (* ;; "For other charsets, create a font descriptor of info for that charset, and use it to fill things in.") - - (if (OR (AND (IGEQ CHARSET 1) - (ILEQ CHARSET 32)) - (AND (IGEQ CHARSET 127) - (ILEQ CHARSET 160))) - then - - (* ;; "this is an illegal NS character set (reserved for control codes) so just return a slug (unless NOSLUG? is T)") - - [if NOSLUG? - then (RETURN NIL) - else (SETQ CSINFO (\BUILDSLUGCSINFO (fetch (FONTDESCRIPTOR - FONTAVGCHARWIDTH) - of FONT) - (FONTPROP FONT 'ASCENT) - (FONTPROP FONT 'DESCENT) - (FONTPROP FONT 'DEVICE) - (FONTPROP FONT 'SCALE] - else [SETQ CREATEFN (COND - ((FMEMB (FONTPROP FONT 'DEVICE) - \DISPLAYSTREAMTYPES) - (FUNCTION \CREATECHARSET.DISPLAY)) - (T (CADR (ASSOC 'CREATECHARSET - (CDR (ASSOC (FONTPROP FONT 'DEVICE) - IMAGESTREAMTYPES] - [if [NOT (SETQ CSINFO (APPLY CREATEFN (APPEND (FONTPROP FONT 'DEVICESPEC) - (LIST CHARSET FONT NOSLUG?] - then (* ; - "the create method returned NIL. so if NOSLUG? return NIL else build a slug charsetinfo") - (RETURN (if NOSLUG? - then (* ; - "the caller just wants NIL back to signal that nothing was found") - NIL - else (\BUILDSLUGCSINFO (fetch (FONTDESCRIPTOR - FONTAVGCHARWIDTH) - of FONT) - (FONTPROP FONT 'ASCENT) - (FONTPROP FONT 'HEIGHT) - (FONTPROP FONT 'DEVICE) - (FONTPROP FONT 'SCALE] - (replace \SFAscent of FONT with (IMAX (fetch \SFAscent of - FONT) - (fetch CHARSETASCENT - of CSINFO))) - (replace \SFDescent of FONT with (IMAX (fetch \SFDescent - of FONT) - (ffetch CHARSETDESCENT - of CSINFO))) - (replace \SFHeight of FONT with (IPLUS (fetch \SFAscent - of FONT) - (ffetch \SFDescent - of FONT))) - (* ; - "jtm: height = ascent + descent, not (IMAX fontHeight charSetHeight)") - ) - (RETURN (\SETCHARSETINFO (ffetch FONTCHARSETVECTOR of FONT) - CHARSET CSINFO]) -) - -(ADDTOVAR POSTSCRIPT.FONT.CONVERSIONS (HELVETICA . HELVETICA) - (TIMESROMAND . TIMESROMAN) - (COURIER . COURIER) - (GACHA . COURIER) - (CLASSIC . TIMESROMAN) - (MODERN . HELVETICA) - (CREAM . HELVETICA) - (TERMINAL . COURIER) - (LOGO . HELVETICA) - (MODERN . HELVETICA)) - -(RPAQQ \KNOWN.SKETCH.FONTSIZES NIL) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS (\KNOWN.SKETCH.FONTSIZES) - POSTSCRIPT.FONT.CONVERSIONS) -) - - - -(* ;; "finally actually do the patching of sketch.") - - -(FIX-SKETCH) -(PUTPROPS PS-PATCH COPYRIGHT ("ENVOS Corporation" 1989 1990)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (2086 16850 (ADD.KNOWN.SKETCH.FONT 2096 . 2973) (NEW-SK-PICK-FONT 2975 . 6357) ( -NEW-SK-DECREASING-FONT-LIST 6359 . 8183) (NEW-SKETCHW-HARDCOPYFN 8185 . 16115) (FIX-SKETCH 16117 . -16848)) (17182 23954 (\BUILDSLUGCSINFO 17192 . 19090) (\CREATECHARSET 19092 . 23952))))) -STOP diff --git a/obsolete/lispusers/PS-RS232 b/obsolete/lispusers/PS-RS232 deleted file mode 100644 index fdd7826d..00000000 --- a/obsolete/lispusers/PS-RS232 +++ /dev/null @@ -1,76 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") -(FILECREATED " 2-Aug-89 13:35:49" {DSK}PS>PS-RS232.;1 2639 - - changes to%: (VARS PS-RS232COMS) - (PROPS (PS-RS232 MAKEFILE-ENVIRONMENT) - (PS-RS232 PRINTERTYPE) - (PS-RS232 SPOOLFILE)) - (FNS PS-RS232-AFTERLOGOUT PS-RS232-INIT)) - - -(* " -Copyright (c) 1989 by Beckman Instruments, Inc. All rights reserved. -") - -(PRETTYCOMPRINT PS-RS232COMS) - -(RPAQQ PS-RS232COMS ((FILES POSTSCRIPTSTREAM (SYSLOAD FROM LISPUSERS) - DLRS232C) - (INITVARS (PS-RS232-BAUD 9600) - (PS-RS232-DATABITS 8) - (PS-RS232-PARITY 'NONE) - (PS-RS232-STOPBITS 1) - (PS-RS232-FLOWCONTROL 'XOnXOff)) - (FNS PS-RS232-AFTERLOGOUT PS-RS232-INIT) - (ADDVARS (DEFAULTPRINTINGHOST PS-RS232) - (AROUNDEXITFNS PS-RS232-AFTERLOGOUT)) - (P (PS-RS232-INIT)) - (PROP (MAKEFILE-ENVIRONMENT PRINTERTYPE SPOOLFILE) - PS-RS232))) - -(FILESLOAD POSTSCRIPTSTREAM (SYSLOAD FROM LISPUSERS) - DLRS232C) - -(RPAQ? PS-RS232-BAUD 9600) - -(RPAQ? PS-RS232-DATABITS 8) - -(RPAQ? PS-RS232-PARITY 'NONE) - -(RPAQ? PS-RS232-STOPBITS 1) - -(RPAQ? PS-RS232-FLOWCONTROL 'XOnXOff) -(DEFINEQ - -(PS-RS232-AFTERLOGOUT - [LAMBDA (EVENT) - (if (EQ EVENT 'AFTERLOGOUT) - then (RS232C.INIT PS-RS232-BAUD PS-RS232-DATABITS PS-RS232-PARITY PS-RS232-STOPBITS - PS-RS232-FLOWCONTROL]) - -(PS-RS232-INIT - [LAMBDA NIL - [PUTPROP 'PS-RS232 'SPOOLOPTIONS `((BaudRate ,PS-RS232-BAUD) - (BitsPerSerialChar ,PS-RS232-DATABITS) - (Parity ,PS-RS232-PARITY) - (NoOfStopBits ,PS-RS232-STOPBITS) - (FlowControl ,PS-RS232-FLOWCONTROL] - (PS-RS232-AFTERLOGOUT 'AFTERLOGOUT) (* ; "Fake it") - NIL]) -) - -(ADDTOVAR DEFAULTPRINTINGHOST PS-RS232) - -(ADDTOVAR AROUNDEXITFNS PS-RS232-AFTERLOGOUT) - -(PS-RS232-INIT) - -(PUTPROPS PS-RS232 MAKEFILE-ENVIRONMENT (:READTABLE "INTERLISP" :PACKAGE "INTERLISP")) - -(PUTPROPS PS-RS232 PRINTERTYPE POSTSCRIPT) - -(PUTPROPS PS-RS232 SPOOLFILE "{RS232}FOO.PS") -(PUTPROPS PS-RS232 COPYRIGHT ("Beckman Instruments, Inc" 1989)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (1528 2244 (PS-RS232-AFTERLOGOUT 1538 . 1761) (PS-RS232-INIT 1763 . 2242))))) -STOP diff --git a/obsolete/lispusers/PS-RS232.TEDIT b/obsolete/lispusers/PS-RS232.TEDIT deleted file mode 100644 index dcc1d6ae03907b7e3df667ef539c28339c20cc2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3223 zcmeHJ(Qex|6qOyfLzd}bLyPTY*j=#)8%RCd$sD&&lP%g7B8wVHr^$vss5UhVa3oKX z)273Ipg%NVj{^quvvw)jvFD^t7Yuu|U1P8@R|OgrQ3=wc$_JQ~lZQVnJxjHMrhG64@}aS*0K_%lqRB!$pB zm*Z8~%SkYrKqA9&0xpj8Q5?)ti00{Ro#tr_ z0jw0fX%Yb@D{6lpj#4ZRq7bJt7#%t$IkiOB;gB=OG6;h-@TS3Q6nkxU&rgvwmgzhW zRSD?aIoPyEhXUDD-ED6^W?m}63&#-Q1ToCK7>mTjWU1~SioICE2nEH_bc$BIxXfsM z>_smX$AuRM-ixVBs``n+ETe4`ezlyB+s4q`{mDYnCyTh}=zov^{*?SHJ$`hPTe+`E z8cXjSD=?++&8O&98a;(4&04LxVloY3v@OB6vIS}4%9u-(Jnc-p82&wNYmL*zg2mZ3 zMi;A2FYiF(P=~BBaY5bNs&gXh^E8^ZvC2Cz*4OB|HhtEij$qW@R$UkOKqucDcOX2a z;VJd~s;;SPr)*nXK)LK1Jpztp1GZekxb-6eTc&Dfcd2br%jr@m8w^*w1CJizuTp_> z4QkM=H{j?=1AFB@F-*(p;z$hK_>+3c|P}OgL!3cZW4NXjW7-f`XiiEHM+I zLK<+`Y(ev|m4_(4|3qb0&$3o#*pwb~DE}}tOz03t5JpgBr*E*u2p=j#vf~ZQwVV@+ zTll>J?RJ3^n{1V z4GeMfV%D4Jcncb>*4nasSkezmy0#tO<14LHvXkYWc3*3#R^hF-hp*C33EPD~3)$$q z9{XxwnNh@yE!Q&kQ;aDUceX@o+P?NidsAqkruUCk6P9k#&{sjIH@or*-!3cMQ>WG9 z`_cB+j=((n+Ove}9%>(TY=d*FqkWbK6t#8mi!1Pfc0WH)w2yDVKDhx~#No&)SNXBJ zin%`uK-%oqR5e*e3dtHOXBThno_b)E0*W}c*JneURC@&fI~CSQR>X@LmWk^9|0b#( zm1)nnR#8*$Z4y>SF0?NbZ`1zHM72??cwgD4fN$3Ubh>c10pzMxXtoAR2UX|G^-u*2 lHi54<0lo=*wFw+=0@vnnHY2{-1g^2LIBRARY>PS-SKETCH-PATCH.;1 25983 - - changes to%: (VARS PS-SKETCH-PATCHCOMS) - (PROPS (PS-SKETCH-PATCH MAKEFILE-ENVIRONMENT)) - (FNS FIX-SKETCH ADD.KNOWN.SKETCH.FONT NEW-SK-DECREASING-FONT-LIST - NEW-SK-PICK-FONT NEW-SKETCHW-HARDCOPYFN \BUILDSLUGCSINFO \CREATECHARSET)) - - -(* " -Copyright (c) 1989 by ENVOS Corporation. All rights reserved. -") - -(PRETTYCOMPRINT PS-SKETCH-PATCHCOMS) - -(RPAQQ PS-SKETCH-PATCHCOMS ((FILES (SYSLOAD FROM LISPUSERS) - SKETCH) - (FNS FIX-SKETCH ADD.KNOWN.SKETCH.FONT NEW-SK-DECREASING-FONT-LIST - NEW-SK-PICK-FONT NEW-SKETCHW-HARDCOPYFN) - - (* ;; - "NOTE: to compile the following 2 functions you need EXPORTS.ALL loaded.") - - (FNS \BUILDSLUGCSINFO \CREATECHARSET) - [VARS (SKETCH-PATCHES '((NEW-SK-PICK-FONT . SK.PICK.FONT) - (NEW-SK-DECREASING-FONT-LIST - . SK.DECREASING.FONT.LIST) - (NEW-SKETCHW-HARDCOPYFN . SKETCHW.HARDCOPYFN] - (ADDVARS (POSTSCRIPT.FONT.CONVERSIONS (HELVETICA . HELVETICA) - (TIMESROMAND . TIMESROMAN) - (COURIER . COURIER) - (GACHA . COURIER) - (CLASSIC . TIMESROMAN) - (MODERN . HELVETICA) - (CREAM . HELVETICA) - (TERMINAL . COURIER) - (LOGO . HELVETICA) - (MODERN . HELVETICA))) - (VARS (\KNOWN.SKETCH.FONTSIZES)) - (GLOBALVARS (\KNOWN.SKETCH.FONTSIZES) - POSTSCRIPT.FONT.CONVERSIONS) - - (* ;; "finally actually do the patching of sketch.") - - (P (FIX-SKETCH)) - (PROP (MAKEFILE-ENVIRONMENT FILETYPE) - PS-SKETCH-PATCH))) - -(FILESLOAD (SYSLOAD FROM LISPUSERS) - SKETCH) -(DEFINEQ - -(FIX-SKETCH - [LAMBDA NIL (* ; "Edited 7-Jul-89 19:40 by Matt Heffron") - (COND - ((BOUNDP 'ALL.SKETCHES) - - (* ;; "sketch is loaded") - - (for X in SKETCH-PATCHES do (MOVD (CAR X) - (CDR X) - NIL T)) - (PROMPTPRINT "Sketch has been patched!") - T) - (T (PROMPTPRINT "Sketch doesn't seem to be loaded!") - (PROMPTPRINT "When you load sketch, make sure to call the function FIX-SKETCH!") - NIL]) - -(ADD.KNOWN.SKETCH.FONT - [LAMBDA (FAMILY WID DEVICE FONT) (* ; "Edited 21-Feb-89 15:06 by snow") - - (* ;; "add to the globally cached font list") - - (DECLARE (GLOBALVARS \KNOWN.SKETCH.FONTSIZES)) - (LET ((CACHE (ASSOC FAMILY \KNOWN.SKETCH.FONTSIZES)) - (CACHED)) - (COND - [(NULL CACHE) - (if \KNOWN.SKETCH.FONTSIZES - then [NCONC1 \KNOWN.SKETCH.FONTSIZES (LIST FAMILY (LIST DEVICE (CONS WID FONT] - else (SETQ \KNOWN.SKETCH.FONTSIZES (LIST (LIST FAMILY (LIST DEVICE - (CONS WID FONT] - (T (COND - ((SETQ CACHED (ASSOC DEVICE CACHE)) - (NCONC1 CACHED (CONS WID FONT))) - (T (NCONC1 CACHE (CONS DEVICE (CONS WID FONT]) - -(NEW-SK-DECREASING-FONT-LIST - [LAMBDA (FAMILY DEVICETYPE) (* ; "Edited 21-Feb-89 11:26 by snow") - - (* ;; "returns a list of fonts of family FAMILY which work on device DEVICETYPE") - - [COND - ((NULL FAMILY) - (SETQ FAMILY 'MODERN] - - (* ;; "convert to families that exist on the known devices.") - -(* ;;; "NOTE: this is a very bad way to convert the family. It HARDCODES in the conversions for PRESS and INTERPRESS and does nothing for new device types. I have added the conversion for POSTSCRIPT that does things a little cleaner, but it should really look at a property of the device (fontconversions or some such animal.) --was 2/19/89") - - (LET ((CONVERSION)) - [COND - [(EQ DEVICETYPE 'PRESS) - (COND - ((EQ FAMILY 'MODERN) - (SETQ FAMILY 'HELVETICA)) - ((EQ FAMILY 'CLASSIC) - (SETQ FAMILY 'TIMESROMAN)) - ((EQ FAMILY 'TERMINAL) - (SETQ FAMILY 'GACHA] - [(EQ DEVICETYPE 'INTERPRESS) - (COND - ((EQ FAMILY 'HELVETICA) - (SETQ FAMILY 'MODERN)) - ((EQ FAMILY 'TIMESROMAN) - (SETQ FAMILY 'CLASSIC)) - ((EQ FAMILY 'GACHA) - (SETQ FAMILY 'TERMINAL] - ((EQ DEVICETYPE 'POSTSCRIPT) - (if (SETQ CONVERSION (ASSOC FAMILY POSTSCRIPT.FONT.CONVERSIONS)) - then - - (* ;; - "convert the family here for postscript as well as the other well known devices.") - - (SETQ FAMILY (CDR CONVERSION] - (for FONT in (SK.GUESS.FONTSAVAILABLE FAMILY DEVICETYPE) - collect (FONTCOPY FONT 'DEVICE DEVICETYPE]) - -(NEW-SK-PICK-FONT - [LAMBDA (WID STRING DEVICE FAMILY) (* ; "Edited 22-Feb-89 07:53 by snow") - - (* ;; "returns the font in FAMILY that text should be printed in to have the text STRING fit into a region WID points wide") - - (DECLARE (GLOBALVARS \KNOWN.SKETCH.FONTSIZES)) - (PROG (LASTFONT LASTSIZE DISPLAYFONT SCALE CACHEDFONT) - (IF [SETQ CACHEDFONT (ASSOC WID (ASSOC DEVICE (ASSOC FAMILY \KNOWN.SKETCH.FONTSIZES] - THEN (RETURN (CDR CACHEDFONT))) - (RETURN (for FONT in (SK.DECREASING.FONT.LIST FAMILY DEVICE) - when (NOT (GREATERP [SETQ LASTSIZE (COND - ((SETQ SCALE (FONTPROP FONT - 'SCALE)) - - (* ;; - "IF THERE IS A SCALE, YOU MUST SCALE THE FONT.") - - (QUOTIENT (STRINGWIDTH STRING FONT) - SCALE)) - ((SETQ DISPLAYFONT (FONTCOPY - (SETQ LASTFONT - FONT) - 'DEVICE - 'DISPLAY - 'NOERROR T)) - (* ; "use display if it exists.") - (STRINGWIDTH STRING DISPLAYFONT)) - (T - (* ; - "in some cases, font exists for devices other than display.") - (QUOTIENT (STRINGWIDTH STRING FONT) - (FONTPROP FONT 'SCALE] - WID)) do (* ; - "return a font for the proper device even though the display fonts are used to pick a size.") - (ADD.KNOWN.SKETCH.FONT FAMILY WID DEVICE - (FONTCOPY FONT 'DEVICE DEVICE)) - (RETURN (FONTCOPY FONT 'DEVICE DEVICE)) - finally (RETURN (COND - ((OR (NULL LASTFONT) - (GREATERP LASTSIZE (TIMES 1.5 WID))) - 'SHADE) - (T (* ; - "use the smallest if it isn't too large.") - (FONTCOPY LASTFONT 'DEVICE DEVICE]) - -(NEW-SKETCHW-HARDCOPYFN - [LAMBDA (SKETCHW OPENIMAGESTREAM) (* ; "Edited 27-Jul-89 17:52 by Matt Heffron") - (* ; - "dumps the sketch onto OPENIMAGESTREAM.") - (* ; - "centers it within the DSPCLIPPINGREGION of OPENIMAGESTREAM") - (PROG ((SKETCH (INSURE.SKETCH (SKETCH.FROM.VIEWER SKETCHW))) - (PAGEREGION (DSPCLIPPINGREGION NIL OPENIMAGESTREAM)) - (SKETCHREGION (SKETCH.REGION.VIEWED SKETCHW)) - (SCALE (VIEWER.SCALE SKETCHW)) - SKETCHREGIONINPAGECOORDS PAGELEFTSPACE PAGEBOTTOMSPACE PAGETOSKETCHFACTOR SKETCHX) - (OR SKETCH (RETURN)) - (SPAWN.MOUSE) - - (* ;; "move the margins out of the way") - - (DSPLEFTMARGIN (MIN 0 (fetch (REGION LEFT) of PAGEREGION)) - OPENIMAGESTREAM) - (DSPBOTTOMMARGIN (MIN 0 (fetch (REGION BOTTOM) of PAGEREGION)) - OPENIMAGESTREAM) - (DSPTOPMARGIN (MAX (ITIMES MAX.SMALLP MAX.SMALLP) - (fetch (REGION TOP) of PAGEREGION)) - OPENIMAGESTREAM) (* ; - "MAX.SMALLP^2 ought to be big enough...") - (DSPRIGHTMARGIN (MAX (ITIMES MAX.SMALLP MAX.SMALLP) - (fetch (REGION RIGHT) of PAGEREGION)) - OPENIMAGESTREAM) - - (* ;; "PAGETOSKETCHFACTOR is the factor to multiply the page coordinates by to get into sketch coordinates.") - - (STATUSPRINT SKETCHW "Hardcopying ...") - [STREAMPROP OPENIMAGESTREAM 'PRINTOPTIONS (APPEND (LIST 'DOCUMENT.NAME (OR (SKETCH.TITLE - SKETCHW) - "A Sketch")) - (STREAMPROP OPENIMAGESTREAM 'PRINTOPTIONS] - (SETQ PAGETOSKETCHFACTOR (FQUOTIENT SCALE (DSPSCALE NIL OPENIMAGESTREAM))) - (SETQ SKETCHREGIONINPAGECOORDS (SCALE.REGION.OUT SKETCHREGION PAGETOSKETCHFACTOR)) - (COND - ((AND (NOT (EQ (IMAGESTREAMTYPE OPENIMAGESTREAM) - 'PRESS)) - (NOT (EQ (FETCH (IMAGEOPS IMROTATE) OF (FETCH (STREAM IMAGEOPS) - OF OPENIMAGESTREAM)) - 'NILL)) - (GREATERP (fetch WIDTH of SKETCHREGIONINPAGECOORDS) - (fetch WIDTH of PAGEREGION)) - (GREATERP (fetch WIDTH of SKETCHREGIONINPAGECOORDS) - (fetch HEIGHT of SKETCHREGIONINPAGECOORDS))) - - (* ;; "we have a stream that supports rotation, use it!") - - (DSPROTATE 90 OPENIMAGESTREAM) - (COND - ((NOT (EQ (IMAGESTREAMTYPE OPENIMAGESTREAM) - 'POSTSCRIPT)) - - (* ;; "Since PostScript's DSPROTATE does the translate also..., dont't do it here. --HACK! HACK! HACK! --Matt.") - - (DSPTRANSLATE 0 (MINUS (FETCH (REGION HEIGHT) OF PAGEREGION)) - OPENIMAGESTREAM))) - (DSPCLIPPINGREGION (SETQ PAGEREGION (SK.SWITCH.REGION.X.AND.Y PAGEREGION)) - OPENIMAGESTREAM) - - (* ;; "(ROTATE.IP OPENIMAGESTREAM 90) (CONCATT.IP OPENIMAGESTREAM) (TRANSLATE.IP OPENIMAGESTREAM 0 -21590) (CONCATT.IP OPENIMAGESTREAM) (DSPCLIPPINGREGION (SETQ PAGEREGION (SK.SWITCH.REGION.X.AND.Y PAGEREGION)) OPENIMAGESTREAM)") - - (* ;; "this was an incredibly bogus hack to make INTERPRESS only streams rotate the sketch image if they were too big. Now it tries to do it on any stream that has a dsprotate function.") - - )) - (SETQ PAGELEFTSPACE (QUOTIENT (DIFFERENCE (fetch (REGION WIDTH) of PAGEREGION) - (fetch (REGION WIDTH) of - SKETCHREGIONINPAGECOORDS - )) - 2)) - (SETQ PAGEBOTTOMSPACE (QUOTIENT (DIFFERENCE (fetch (REGION HEIGHT) of PAGEREGION) - (fetch (REGION HEIGHT) of - SKETCHREGIONINPAGECOORDS - )) - 2)) - - (* ;; "translate the sketch so that the lower left corner of the sketch region is at the lower left corner of the image on the page.") - - [SETQ SKETCHX (TRANSLATE.SKETCH SKETCH (MINUS (TIMES (DIFFERENCE - (SETQ PAGELEFTSPACE - (PLUS (fetch (REGION LEFT) - of PAGEREGION) - PAGELEFTSPACE)) - (fetch (REGION LEFT) of - - SKETCHREGIONINPAGECOORDS - )) - PAGETOSKETCHFACTOR)) - (MINUS (TIMES (DIFFERENCE (SETQ PAGEBOTTOMSPACE - (PLUS (fetch (REGION BOTTOM) - of PAGEREGION) - PAGEBOTTOMSPACE)) - (fetch (REGION BOTTOM) of - SKETCHREGIONINPAGECOORDS - )) - PAGETOSKETCHFACTOR] - (* ; - "calculate the local parts for the interpress sketch.") - (SETQ SKETCHX (MAKE.LOCAL.SKETCH SKETCHX (CREATEREGION (TIMES PAGELEFTSPACE - PAGETOSKETCHFACTOR) - (TIMES PAGEBOTTOMSPACE PAGETOSKETCHFACTOR) - (fetch (REGION WIDTH) of - SKETCHREGION - ) - (fetch (REGION HEIGHT) of - SKETCHREGION - )) - PAGETOSKETCHFACTOR OPENIMAGESTREAM)) - (DRAW.LOCAL.SKETCH SKETCHX OPENIMAGESTREAM (CREATEREGION PAGELEFTSPACE PAGEBOTTOMSPACE - (fetch (REGION WIDTH) of - SKETCHREGIONINPAGECOORDS - ) - (fetch (REGION HEIGHT) of - SKETCHREGIONINPAGECOORDS - ))) - (STATUSPRINT SKETCHW " done.") - (RETURN OPENIMAGESTREAM]) -) - - - -(* ;; "NOTE: to compile the following 2 functions you need EXPORTS.ALL loaded.") - -(DEFINEQ - -(\BUILDSLUGCSINFO - [LAMBDA (WIDTH ASCENT DESCENT DEVICE SCALE) (* ; "Edited 14-Feb-89 16:46 by snow") - -(* ;;; "builds a csinfo which contains only the slug (black rectangle) character") - - (SETQ SCALE (OR SCALE 1)) - (PROG ((CSINFO (create CHARSETINFO - CHARSETASCENT _ ASCENT - CHARSETDESCENT _ DESCENT - IMAGEWIDTHS _ (\CREATECSINFOELEMENT))) - WIDTHS OFFSETS BITMAP IMAGEWIDTHS) - (SETQ WIDTHS (fetch (CHARSETINFO WIDTHS) of CSINFO)) - (for I from 0 to \MAXTHINCHAR do (\FSETWIDTH WIDTHS I WIDTH)) - (SETQ IMAGEWIDTHS (fetch (CHARSETINFO WIDTHS) of CSINFO)) - (for I from 0 to \MAXTHINCHAR do (\FSETWIDTH WIDTHS I WIDTH)) - [SELECTQ DEVICE - (INTERPRESS (* ; - "don't need offsets in INTERPRESS fonts") - NIL) - (PROGN (replace (CHARSETINFO OFFSETS) of CSINFO with (SETQ OFFSETS ( - \CREATECSINFOELEMENT - ))) - (for I from 0 to \MAXTHINCHAR do (\FSETOFFSET OFFSETS I 0)) - [replace (CHARSETINFO CHARSETBITMAP) of CSINFO - with (SETQ BITMAP (BITMAPCREATE (ROUND (QUOTIENT WIDTH SCALE)) - (ROUND (QUOTIENT (IPLUS ASCENT DESCENT) - SCALE] - (BLTSHADE BLACKSHADE BITMAP 1 NIL (SUB1 (ROUND (QUOTIENT WIDTH SCALE] - (RETURN CSINFO]) - -(\CREATECHARSET - [LAMBDA (CHARSET FONT NOSLUG?) (* ; "Edited 14-Feb-89 16:29 by snow") - - (* ;; "Creates and returns the CHARSETINFO for charset CHARSET in fontdesc FONT, installing it in fonts FONTCHARSETVECTOR") - (* ; - "NOSLUG? means don't create an empty (slug) csinfo if the charset is not found, just return NIL") - (DECLARE (GLOBALVARS \DISPLAYSTREAMTYPES)) - (AND (IGREATERP CHARSET \MAXCHARSET) - (\ILLEGAL.ARG CHARSET)) - (PROG (CSINFO CREATEFN) - - (* ;; "For other charsets, create a font descriptor of info for that charset, and use it to fill things in.") - - (if (OR (AND (IGEQ CHARSET 1) - (ILEQ CHARSET 32)) - (AND (IGEQ CHARSET 127) - (ILEQ CHARSET 160))) - then - - (* ;; "this is an illegal NS character set (reserved for control codes) so just return a slug (unless NOSLUG? is T)") - - [if NOSLUG? - then (RETURN NIL) - else (SETQ CSINFO (\BUILDSLUGCSINFO (fetch (FONTDESCRIPTOR - FONTAVGCHARWIDTH) - of FONT) - (FONTPROP FONT 'ASCENT) - (FONTPROP FONT 'DESCENT) - (FONTPROP FONT 'DEVICE) - (FONTPROP FONT 'SCALE] - else [SETQ CREATEFN (COND - ((FMEMB (FONTPROP FONT 'DEVICE) - \DISPLAYSTREAMTYPES) - (FUNCTION \CREATECHARSET.DISPLAY)) - (T (CADR (ASSOC 'CREATECHARSET - (CDR (ASSOC (FONTPROP FONT 'DEVICE) - IMAGESTREAMTYPES] - [if [NOT (SETQ CSINFO (APPLY CREATEFN (APPEND (FONTPROP FONT 'DEVICESPEC) - (LIST CHARSET FONT NOSLUG?] - then (* ; - "the create method returned NIL. so if NOSLUG? return NIL else build a slug charsetinfo") - (RETURN (if NOSLUG? - then (* ; - "the caller just wants NIL back to signal that nothing was found") - NIL - else (\BUILDSLUGCSINFO (fetch (FONTDESCRIPTOR - FONTAVGCHARWIDTH) - of FONT) - (FONTPROP FONT 'ASCENT) - (FONTPROP FONT 'HEIGHT) - (FONTPROP FONT 'DEVICE) - (FONTPROP FONT 'SCALE] - (replace \SFAscent of FONT with (IMAX (fetch \SFAscent of - FONT) - (fetch CHARSETASCENT - of CSINFO))) - (replace \SFDescent of FONT with (IMAX (fetch \SFDescent - of FONT) - (ffetch CHARSETDESCENT - of CSINFO))) - (replace \SFHeight of FONT with (IPLUS (fetch \SFAscent - of FONT) - (ffetch \SFDescent - of FONT))) - (* ; - "jtm: height = ascent + descent, not (IMAX fontHeight charSetHeight)") - ) - (RETURN (\SETCHARSETINFO (ffetch FONTCHARSETVECTOR of FONT) - CHARSET CSINFO]) -) - -(RPAQQ SKETCH-PATCHES ((NEW-SK-PICK-FONT . SK.PICK.FONT) - (NEW-SK-DECREASING-FONT-LIST . SK.DECREASING.FONT.LIST) - (NEW-SKETCHW-HARDCOPYFN . SKETCHW.HARDCOPYFN))) - -(ADDTOVAR POSTSCRIPT.FONT.CONVERSIONS (HELVETICA . HELVETICA) - (TIMESROMAND . TIMESROMAN) - (COURIER . COURIER) - (GACHA . COURIER) - (CLASSIC . TIMESROMAN) - (MODERN . HELVETICA) - (CREAM . HELVETICA) - (TERMINAL . COURIER) - (LOGO . HELVETICA) - (MODERN . HELVETICA)) - -(RPAQQ \KNOWN.SKETCH.FONTSIZES NIL) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS (\KNOWN.SKETCH.FONTSIZES) - POSTSCRIPT.FONT.CONVERSIONS) -) - - - -(* ;; "finally actually do the patching of sketch.") - - -(FIX-SKETCH) - -(PUTPROPS PS-SKETCH-PATCH MAKEFILE-ENVIRONMENT (:PACKAGE "INTERLISP" :READTABLE "INTERLISP")) - -(PUTPROPS PS-SKETCH-PATCH FILETYPE :TCOMPL) -(PUTPROPS PS-SKETCH-PATCH COPYRIGHT ("ENVOS Corporation" 1989)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (2758 17798 (FIX-SKETCH 2768 . 3382) (ADD.KNOWN.SKETCH.FONT 3384 . 4261) ( -NEW-SK-DECREASING-FONT-LIST 4263 . 6087) (NEW-SK-PICK-FONT 6089 . 9471) (NEW-SKETCHW-HARDCOPYFN 9473 - . 17796)) (17888 24660 (\BUILDSLUGCSINFO 17898 . 19796) (\CREATECHARSET 19798 . 24658))))) -STOP diff --git a/obsolete/lispusers/PS-SKETCH-PATCH.LCOM b/obsolete/lispusers/PS-SKETCH-PATCH.LCOM deleted file mode 100644 index 7e130c6ad96aa49dc103405ef82d973a6a9f67e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7071 zcmcgx&2JmW6(=djNuAJ@WJNWMB6(q&hAJYKyZjR6z~z!$i7PF4*WA^YEq}NNYG0Iw7nEXR0}#ZJ@C?lb1;xYoVYy|xfTdw_z!S@Z)TStqU5G1 zT0j(M-n@D9=FR(NysS?cmOeURnEI$;P1y8;qm`z$Nu6Sb<>@ukaGe;vP}8-trxndE z@JKYy`$|~!^fJXr8J)VdHJVpQQO7f>@l-BG@z`?X+V!=~l{z)HfD(P{O-DEN@#^fj zZq3^6PhRH}W?a4Io~i0(Q(rja*skZ6YKG&TaokaNTK7toQAfl7#A)TN5fI6aR+nyz zb5i5U+_;jB(G@;s^VK@7ZBaC4u5DjmZroU*Hfkb~h*5p%CK%}^kV=oIQ?Z`Aq(`+| zS4YS4q-4j__#2DSn`L)e^2^tD&zMHBrq#f350|87@?$AlUR~O{y0T3-8?TI0d{(Qu z6y1khva9Y0#hse%xcKU(L{)7X?}Mj-tc;p%Rdvf70s4gH(u6VZ3x}dwxty4`>^UnT z#g&+_EsrdH4j7|l@j|X)O^z~n6asIpIYwz(Kz(GE_1tJhtCdT(voK*%bg?*Nm}S?T znJj?>6l77pcL_+Y4sN0yjEt9a(YQlNnx_d;sPpY~Tr+eg91ex9hC-ol;dAHZvpXm1 z;el|d60Ss6*Pa9HM5J%;tA>xT)*p<5@74ZLJTpd+R@L#G8Z?wL$*yU-d#dKBYR{G_ zM@4(aDm!@Q6ltdE%Lz(%@y?T?jS5~g^&MPZ|>`MKmSd>z2 zyw#;`tl{A6OE`{~M-F*PU$6?5v{D7O#xfQ|GAKpjwGC3Ktj`)H9WaIFj55BHG@(@u za{;pVBB9Wc!ez*Icwiu0*?o1W0TW zqfmTIp+&1?TP2lp?O{d@pe*z>E%qp=Yn;FhSM@q_Da9CO$Qu^ytp-`mod)Cn_q2@q;NUQVs>pPidL5@CX`ind3V&(l{dcGhr z-2gBp=c%5JidblEjQJZ+`5WKSb6ul^agscvs=F{+%_2mH zs$JG=7LBE;qMNh2XOuJovm)L&HE>ATfKVpiCZEQ*O(&gdodD%(6A~6L=qovR2Bwzr zPwdp1w&U|vB^#(p+P5)bR1U1mEoq2*4x1N3m8mWGD+=L;9xJghN1phG2#XX}2i5Ab zN!NqRniL8L^MpT-)J3p)N2C>ZQlvO*_3C@o1Ds?NBp@RdEl2SU*6iI+X9h3rc71Dqpyb9&B zUDL6#_P%VUYblcxOM;5ZAtup|Z&F=3zOhmR)Axr;T4@c{Y-^Yt^WSz%CCk=pHM>T+ zvEY>{mkuy9ffA(Cbv;G*q$$P$p3v7%)J%+x2m00N!_p_)Dk?`Bv`s$|=>vJ3Qpb5`F@G%P8ClH7%9 z(q9+u(ROspsDcn4N!O}EW##s{5eoky%1)AFIDb}!YZ6oOZ{U~DRX$wpe+ElNxW4}A z-R8Q$Fe06^t;dh+e+S5jL?Yn_*B(E(G}OE_Xb(O5g+2JTJtTHW97d5CC!3ds?UTS5 ze%n4NPi5m^9TzT>^;NL2ca-6XY68sb{9#3(mfZgH((x(#I0F|oz60<4diR`m6yKjD z#DD3%cPC7o&Kx|tbDD?v@c4(D=L7@I_Vz!n*TrS-3!mIHnC^l^;{Ck&{$}Kh3j#@y z;pxT7x)H8^cEJqaw~v2*e;p#RKD%fFm#56~rT%&qV+)@t(7-1WW_z`dYy5>}t!lMc zV-W8uv?K%LO~XyQp61QCGHFUH(CwNwmoRNOH$NGow1T8UB=f#fq}W*_1?@&l!Etw^ zW#Qp#n&q0P0|H`d9+u=fCDU*mI6a@Dnip}%oijL{m%zk)LbJ+=1yaXgo37I$MQS!j z9a<=&wVH)3;~F-uqm!CU_h2YES@`ULzCGiS0+)hq(w8g9SfpZ0XOzp)qUJ#5%PJ{3 z;hCWHaxDY*Bg`w|86M&Q`;tykazJE$jLC{u)oPOlLYz3tvmJj9&j}1^#y%)5P}qun z0DK1Q83}yVMlnQcnr01sPOl|=j`IN*zRbjG8Qd`GeL@~XD0OFQt)~baL}CIVI3el6 zPpL@O+M%9Qb&M>-G%--6Ot~ac5z~Dipu%6ufU0DXByjd^J04sP=Ws|M?9vR^Ckacd zvY6n!I#Adzrj*Ke zq&av1G;$y`)Epepj!p?j6gt28czq!9jNNY^fArC`-T!IfUZ`pJZ+v#Cf9Ij zbj%*I2N`KdA`Jm)2uLOA;8p~3Cl`xD5%3D~&)FyK;YS~t_Q_AznfyuYJQf36(9tFwbai9ZU)}hd$U3IrZ&W0dMbne9Qq88Q#?=?JI_tlQ^dA7I!BQ$f zVoO~_iDs9I_)JqS+cib8*0~Dn>zJ}uBf$H$sVG+!?C+Xq**uW5`l^f+rE@tC-zFY?5cw)P)y%7qI4Ejhpd@7543D9qJJb*$g6yU35WU$n~xv9C&F5DpwPEbc=+4GCO!Q1=1&U`cV91T{^sFsw)pO9zldFTzbC&2 z<=2T;{A&%w8_oYI)NDa6<1xSc9xKSs^ZdWH;0;HHBjJVCyr2~kQbqm83NXK`7I%Ms z(6K|UEveE=5zIUQ?VNkn!;=#S4 zruIp^@Q+U`L!k<5TM||0{x*ezl#<0Pz4%y1)~IA)%Z_8BDoS@ceiY{I4JvBFV0T^? zQi2jv#h#-OK3cfYuGSbyBK)a7i3p3pz`BXLhF96EaDNL)9*492AViq`AfLC+jc}$N ziU~(8)9X%@q-3lEq;UKd^^Ai4RFEFSMD`uX9=-?EbAX6_qUGQ^Ix0QHih!g7vl6L9 zpy5gqb$%Bp;g?gChoJni3^i1;bC@3|U6&_0e)B6dTB-J;i~d)@*X zZ!#C!*K-pMxoEuRXlKvT0c#W&O;0rI+y&RPwK8#3rB)Yn#1GW}&n_L#`T?CjjmD>C zd-}L&R>`ib>{m55Hyc0ZpsKcdSKFf5wY7qFs6Ox5HP21J=lX3bL|)lr>{0c7UJq!Z zs~MLmlI+sr>EdT+zz9U;_h{PHb^_u_@Kn@l*#E>fj=(;!z9XM>Pj$sx1TfL=Vve9o z$!$|qsgm7x+SA+Nh_`zQiFRKByW7o&G9@}%5m+kOGc`l6MFIDR0LoTKCnRWz?Az`4 zL%L66Q>lVpiyKgkwpuNnR84!*-iLSqMZUkh{2`4vMu<+Dc2P5*jMtGg_DByjd`)~~ zZ43R<+qATN^OhLY8$uaHtCMxH@rK`K724)N;aUxCW<_}0_(2VDv|UY|UBpOFH=Q3^ zny0YLe`lhBneW%$Z=kkMYCa|?dRSZHKUQ1TS`{|$aiq4@YgKX;A8_73>D>q*oDouqLz#i|aobtos? iH52tBejO7(f>Eh)<9g%9691@xQYb%`haTf@(SHE~9s9-r diff --git a/obsolete/lispusers/PS-SKETCH-PATCH.TEDIT b/obsolete/lispusers/PS-SKETCH-PATCH.TEDIT deleted file mode 100644 index 2a0f29374d3e9e045dd31cc8795b7c16266fbdda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2289 zcmeHH+iuf95Z$Du2#O^@An}Ao2q8x*QJa=D@PwOel2sks?5=6cTWGe#Y7!UQz3~a~ zK}ftK@mb8SohITALOfx`mpyZ4=FH4y)#Uxj$2h$bh=*dE%4YXr;Na7$S=NSSty$KW z287VCb^ZikCmM}FOyX0pQ+!s{Z zl2fN=$zhbjI36626dXinDupy2D|mVQDurlL_`&H=O>mj1q`#j&7+fZTP*5&fjMJv{IisQi(E&smU^$aGgZ>CZ4bEW{_XldQ zqAi0Mb84H$zUoAk=xf2o*b;0za5@w`<^p~Nn2Eih;HnHe0Bzr8KJ(f>*baBLSQGBu z!(XKW_A0DGeXRzYk88NHyVPkhuan0q7IH73z(dbNgNBf|i4N;Ec(kz!>-CCeBPi*v zG>%4urqp1g-hlc>Bd6$me?_IKXId+FT;JaoU_T3;7Bs0RDW@p1*>!kf5ut8~*+f__ z^PV%owpLz<*A;%e*3h4KXS{*yyfLfz5H#50m&rVM=K{P%mh#hqT>A!g^&sz_N% zA0aPPp!Wi~_BHwxomonj;3oY;(NhSC0)9e^?}Qog+64q>^qV zLS?COlEXB6v6yHWB`cjno=r78UtH&qq_`Lr%XqFKE5>>b#W+r3mgPl$HBV+m9YBoW zRki@4TxUso4Mhf%EPes`OI=)z56eYTz!~oZ5jSLGFDUUWM$R_Mjw8gQ0uvHqqTaF( zLEpraMO`*LM z_~$~3Gmk^i>44-OcU6e(QDz-RI8aydc4?(9o*YBR83^wZ20@!gJ_P4H@`S$*pd!)d z!LW26`pCGo@u#8VOA+`G@$S%bB9LA{-CVCOxajs240u}%2PBL~o6JMWBQrAUrc{?G z*R&b8{lHOgALdCDJKlmutF<$h_al8j(w*(_H@?zZ&73Uv*gbYgZl=^oWFd&9#SmE0s5ua>Wkl>{)*e>|p0WTifqG z_ObrY*$1xYNGV+QX=$&rUGU3W@H2M5JRR7_Z^1sg4Zh`3?c1x0*|0tWFopRuQf|}} zVqS>zA^uAuvIwZ6?VuM8Jzno})$uEAn`E1K9ig0I)dcu|9cf2AAnoPWsG8@WN!T`W zt$pK2HT)|_>f=`=VbcWyzSsq*%fHPS>PSCFONT-FIX-FILENAME.\;1 5877 - - |changes| |to:| (VARS PSCFONT-FIX-FILENAMECOMS) - (FNS PSCFONT-FILENAME-FIX) - (FILEVARS PSCFONT-FIX-FILENAMECOMS)) - - -; Copyright (c) 1987 by Beckman Instruments, Inc. All rights reserved. - -(PRETTYCOMPRINT PSCFONT-FIX-FILENAMECOMS) - -(RPAQQ PSCFONT-FIX-FILENAMECOMS ((FNS PSCFONT-FILENAME-FIX) - (VARS POSTSCRIPT-FONT-FILENAME-FIXLIST))) -(DEFINEQ - -(PSCFONT-FILENAME-FIX - (LAMBDA NIL (* \; "Edited 11-May-87 15:34 by Matt Heffron") - - (FOR D IN POSTSCRIPTFONTDIRECTORIES - DO (FOR F IN POSTSCRIPT-FONT-FILENAME-FIXLIST - DO (LET (FN) - (CL:WHEN (SETQ FN (INFILEP (CONCAT D (CAR F)))) - (PRINTOUT T FN " => " (RENAMEFILE FN (CONCAT D (\\FONTFILENAME - (CADR F) - 1 - (CADDR F) - '.PSCFONT))) - T))))))) -) - -(RPAQQ POSTSCRIPT-FONT-FILENAME-FIXLIST (("AVANTGARDE-BOOK1" AVANTGARDE-BOOK (MEDIUM REGULAR REGULAR) - ) - ("AVANTGARDE-BOOK1I" AVANTGARDE-BOOK (MEDIUM ITALIC REGULAR) - ) - ("AVANTGARDE-DEMI1" AVANTGARDE-DEMI (MEDIUM REGULAR REGULAR) - ) - ("AVANTGARDE-DEMI1I" AVANTGARDE-DEMI (MEDIUM ITALIC REGULAR) - ) - ("BOOKMAN-DEMI1" BOOKMAN-DEMI (MEDIUM REGULAR REGULAR)) - ("BOOKMAN-DEMI1I" BOOKMAN-DEMI (MEDIUM ITALIC REGULAR)) - ("BOOKMAN-LIGHT1" BOOKMAN-LIGHT (MEDIUM REGULAR REGULAR)) - ("BOOKMAN-LIGHT1I" BOOKMAN-LIGHT (MEDIUM ITALIC REGULAR)) - ("COURIER1" COURIER (MEDIUM REGULAR REGULAR)) - ("COURIER1B" COURIER (BOLD REGULAR REGULAR)) - ("COURIER1BI" COURIER (BOLD ITALIC REGULAR)) - ("COURIER1I" COURIER (MEDIUM ITALIC REGULAR)) - ("HELVETICA-NARROW1" HELVETICA-NARROW (MEDIUM REGULAR - REGULAR)) - ("HELVETICA-NARROW1B" HELVETICA-NARROW (BOLD REGULAR REGULAR - )) - ("HELVETICA-NARROW1BI" HELVETICA-NARROW (BOLD ITALIC REGULAR - )) - ("HELVETICA-NARROW1I" HELVETICA-NARROW (MEDIUM ITALIC - REGULAR)) - ("HELVETICA1" HELVETICA (MEDIUM REGULAR REGULAR)) - ("HELVETICA1B" HELVETICA (BOLD REGULAR REGULAR)) - ("HELVETICA1BI" HELVETICA (BOLD ITALIC REGULAR)) - ("HELVETICA1I" HELVETICA (MEDIUM ITALIC REGULAR)) - ("NEWCENTURYSCHLBK1" NEWCENTURYSCHLBK (MEDIUM REGULAR - REGULAR)) - ("NEWCENTURYSCHLBK1B" NEWCENTURYSCHLBK (BOLD REGULAR REGULAR - )) - ("NEWCENTURYSCHLBK1BI" NEWCENTURYSCHLBK (BOLD ITALIC REGULAR - )) - ("NEWCENTURYSCHLBK1I" NEWCENTURYSCHLBK (MEDIUM ITALIC - REGULAR)) - ("PALATINO1" PALATINO (MEDIUM REGULAR REGULAR)) - ("PALATINO1B" PALATINO (BOLD REGULAR REGULAR)) - ("PALATINO1BI" PALATINO (BOLD ITALIC REGULAR)) - ("PALATINO1I" PALATINO (MEDIUM ITALIC REGULAR)) - ("SYMBOL1" SYMBOL (MEDIUM REGULAR REGULAR)) - ("TIMES1" TIMES (MEDIUM REGULAR REGULAR)) - ("TIMES1B" TIMES (BOLD REGULAR REGULAR)) - ("TIMES1BI" TIMES (BOLD ITALIC REGULAR)) - ("TIMES1I" TIMES (MEDIUM ITALIC REGULAR)) - ("ZAPFCHANCERY-MEDIUM1I" ZAPFCHANCERY-MEDIUM - (MEDIUM REGULAR REGULAR)) - ("ZAPFCHANCERY1I" ZAPFCHANCERY (MEDIUM ITALIC REGULAR)) - ("ZAPFDINGBATS1" ZAPFDINGBATS (MEDIUM REGULAR REGULAR)))) -(PUTPROPS PSCFONT-FIX-FILENAME COPYRIGHT ("Beckman Instruments, Inc" 1987)) -(DECLARE\: DONTCOPY - (FILEMAP (NIL (572 1404 (PSCFONT-FILENAME-FIX 582 . 1402))))) -STOP diff --git a/obsolete/lispusers/READDISPLAYFONT b/obsolete/lispusers/READDISPLAYFONT deleted file mode 100644 index d2f895b1..00000000 --- a/obsolete/lispusers/READDISPLAYFONT +++ /dev/null @@ -1,110 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") -(FILECREATED "15-Jul-88 16:33:54" |{MCS:MCS:STANFORD}READDISPLAYFONT.;2| 4644 - - changes to%: (VARS READDISPLAYFONTCOMS) - - previous date%: " 3-May-88 10:33:05" |{MCS:MCS:STANFORD}READDISPLAYFONT.;1|) - - -(* " -Copyright (c) 1988 by Stanford University. All rights reserved. -") - -(PRETTYCOMPRINT READDISPLAYFONTCOMS) - -(RPAQQ READDISPLAYFONTCOMS ((* Redefinition of DISPLAY font functions to facilitate addition of - new font types) - (FNS \READDISPLAYFONTFILE FONTFILEFORMAT) - (ADDVARS (DISPLAYFONTTYPES (AC \READACFONTFILE) - (STRIKE \READSTRIKEFONTFILE))) - (GLOBALVARS DISPLAYFONTTYPES) - (DECLARE%: DONTCOPY (RECORDS DISPLAYFONTTYPE)))) - - - -(* Redefinition of DISPLAY font functions to facilitate addition of new font types) - -(DEFINEQ - -(\READDISPLAYFONTFILE - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHARSET) (* ; "Edited 3-May-88 10:31 by cdl") - - (DECLARE (GLOBALVARS DISPLAYFONTEXTENSIONS DISPLAYFONTDIRECTORIES)) - (bind FONTFILE FONTTYPE CSINFO STREAM for EXTENSION inside DISPLAYFONTEXTENSIONS - when (SETQ FONTFILE (\FINDFONTFILE FAMILY SIZE FACE ROTATION DEVICE CHARSET - DISPLAYFONTDIRECTORIES (LIST EXTENSION))) - do (* Use CLOSE? to avoid redundant CLOSEF in AC font file case) - (RESETLST [RESETSAVE NIL `(CLOSEF? ,(SETQ STREAM (OPENSTREAM FONTFILE 'INPUT] - (if (SETQ FONTTYPE (ASSOC (FONTFILEFORMAT STREAM T) - DISPLAYFONTTYPES)) - then (SETQ CSINFO (with DISPLAYFONTTYPE FONTTYPE (APPLY* READFN STREAM FAMILY - SIZE FACE))) - else (SHOULDNT))) - (RETURN CSINFO]) - -(FONTFILEFORMAT - [LAMBDA (STREAM LEAVEOPEN) (* ; "Edited 3-May-88 10:26 by cdl") - (* Returns the font format of STREAM) - [OR (OPENP STREAM 'INPUT) - (SETQ STREAM (OPENSTREAM STREAM 'INPUT] - (PROG1 (OR (LET [(EXTENSION (FILENAMEFIELD (FULLNAME STREAM) - 'EXTENSION] - - (* AC and Strike files count on side effects of this function so we have to - handle them separately for now) - - (if (AND [NOT (FMEMB EXTENSION '(AC STRIKE] - (ASSOC EXTENSION DISPLAYFONTTYPES)) - then EXTENSION)) - (SELECTC (\WIN STREAM) - ((LIST (LLSH 1 15) - (LOGOR (LLSH 1 15) - (LLSH 1 13))) - - (* If high bit of type is on, then must be strike. - If 2nd bit is on, must be strike-index, and we punt. - We don't care about the 3rd bit) - - - - (* first word has high bits (onebit index fixed)%. - Onebit means "new-style font" %, index is 0 for simple strike, 1 for index, and - fixed is if all chars have max width. Lisp doesn't care about "fixed") - - 'STRIKE) - ((LOGOR (LLSH 16 8) - 12) - - (* This is the length of a standard index header. - Other files could also have this value, but it's a pretty good discriminator) - - - - (* Skip to byte 25; do it with BINS so works for non-randaccessp devices. - This skips the standard name header, then look for type 3 in the following - header) - - (FRPTQ 22 (\BIN STREAM)) (* (SETFILEPTR STREAM 25)) - (AND (EQ 3 (LRSH (\BIN STREAM) - 4)) - 'AC)) - NIL)) - (OR LEAVEOPEN (CLOSEF STREAM]) -) - -(ADDTOVAR DISPLAYFONTTYPES (AC \READACFONTFILE) - (STRIKE \READSTRIKEFONTFILE)) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS DISPLAYFONTTYPES) -) -(DECLARE%: DONTCOPY -(DECLARE%: EVAL@COMPILE - -(RECORD DISPLAYFONTTYPE (TYPE READFN)) -) -) -(PUTPROPS READDISPLAYFONT COPYRIGHT ("Stanford University" 1988)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (1028 4280 (\READDISPLAYFONTFILE 1038 . 2081) (FONTFILEFORMAT 2083 . 4278))))) -STOP diff --git a/obsolete/lispusers/READDISPLAYFONT.LCOM b/obsolete/lispusers/READDISPLAYFONT.LCOM deleted file mode 100644 index 89e0d0d3b5f9138c7648c6cbff484f8609894026..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2127 zcma)7UvJw~6i>P_x(ScA5`DaL*%}5oqfc0p7F&;#sEe@^H`9^i6H!U&<^e&~rMT2#5i^DChj>AXk<_ zEU5)a6(t@7zSaNcAnryX^n1X=GsE9}e!m+J4qE-g=m8au2GQZ*0ZnUQDofj~I(D%7 zxtIlxFO+g$9(7sBHMLMuGJKCpytE;O#gv}u)ZKYGoIhKG@HC#W8nnkqAWwJ)9md> z0~q!{RYBO+JfDLr4e3tZ&%(iB^fc}t4OoTf%Y&4wH;;2Pf1c*gD?D)jzX0(h%k5ps zL}#Mq^LY_eqr?feRwv+_s=Cs!cTC&JxtlqSZ>{UIX_ROg}L-%I<>XEb9ZNwZ)Cp{qpp{9xK{BcSbAj!&vzpyT!6 zCb+uT3_}G;5)g1%lZf&xQZ9l(@6W@U=?CbdjB$0RsJW1!$xw3Ekaw~1&9M%#> zF$@yAK~aId`Zl5vKrs*hO;))8d$@~?ar+3rf_NcuXQN5d?C1>BLnb?(i33DLrt4z@ zo6n{=j(N!kb}w8+X5z*G!&|UTC{Y+{mu!L5kLgrut}7`YHKPvEh*!wPZ@gnT~l)5&MTYe9`J3A5>)yf#7w6Dj4!`>A zhYF0oetr7)r~-fDr+ee#{C##ndy!-vA>^W5zGN)OB2d=T8(%evWq^c=hGnr8P$Uz$DNntn;tY7=+U4C*l3#|o;Cdtoc5&~y z9zG=3?n6%STy1OXIvWVW3V2Z%wc}nqjPdd4x5ouSyWbl^`>5BV2D)~k-E76(c!+x+ znqfFO(2KqWj(HD{528U9gsSadOTx*uOE`j__#V+s4#Ett5?BNTfDu{K$IQaVO1OlI zSrU0-&0@R_%URbf7V>IDv>HUWG>_n$VBl)i9d{Q5BsV@jK5$q3v-sg?eSw4F#;DL_ z@2Kyc<#7V8K71Hl|LQD&mg1QkwE*98f7tA``-dSkdht_ywd3J24`R7g!g_4e;{E|F C!zBO! diff --git a/obsolete/lispusers/READDISPLAYFONT.TEDIT b/obsolete/lispusers/READDISPLAYFONT.TEDIT deleted file mode 100644 index 2b774494a39657e4d0986feb11e2611553142313..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3415 zcmeHJ+iu%N5T#@%vFi$Gi{2gw=?e)sg00Ax_^GtCvWQTmN>YxUUVyc@iik+0KvI^~ zPsk4y=zD>DLO-W7ONx?RJ8q1kPZcbBcV>3>%$YN^Mflt0A5pUDFumC{+^(sgw`|L+ z)GC#FrLtS8+;pG`9mn${fW|Nmk~EqOMGPhn1*r7=-kpxc)iXU9SKX9{gDCc^%%5s9 z)A9xwM}9B}L;~qhfFC525ud{#3R4(N!+sh>A-Wj%^ML?qRUhY6QCe!5XX%P<-6&t=%(vIAHnk=48k{g9Rb1>SE&dSSq)uE8JF17Ay1*tLx=?@Uqp9O z5ip3OF>n}QiYkDSCV+|4fREskkEX~-a#T@Oy#ca3y|E}ptAOfyj`5OZo@`xswHxH5 z#4a6RdIws1$1u;qHC{7ZH<$)IL0aBmKSKmS@MDoq;}C&0+PdR1&#+oH_&lAC5#@O_ zg;_8ffjWt!3*=_5VUI*s^qGjGD^P-Q%8u(FPCg#*?;1|&pJC6)z7xjlc=6#HX zM4(9xqZE?qWHJgc-z-RnlF0-G=JVLUo=jWO2$w3!WJT>DqGf|}jb&;<9;v#VI2oO_ zfkZJx*9dP-CZdlG7|kjDg}`=?CkUQ2SpX7OsFp$i{m2*FkVLYLNfuS;0ahdhcnEo$ zMe*C)q&bc*^En|s;3!BI2?oiDPmt~jiZK<44d-nkq#63Is~v-oN#!falNm8=`r zhCN3yUuY*2Oa$D|bVEbF)0L|STpm|Oz!S1Mzmu$nPY){${f?M@&t0~?Ot}gXJJI)V`p7m5(5r9>6y9% zu4#8!v3tdglePyP)--w@0>+%h%{`Ynk{+VZ_0AD4t~BJ0-kP@%hs5k2)ZzI))D92v zmzKq=ZTt&^bY^tr8+w(3)3YpekO|Ko*5RODhrQbBSr0oa56T{5$cufb@9o3>&Q6wI z!;?jmWzfIcDk+$U)Bgdo33%&1Z_!BRqpobN%y}05x97UDp?sx0X_&g}8V%)(EC89f&-iT- z`HiyKX67mWXVTD>Pl_A9RyOc;+%YWOT(N$sJkH*vx7t1}k}l(jz2&DYWgtaB*DIyHoYCAoXRZp1LvP#PGwk7^NRd#(@CMf@>2Oll46K29r zh7UnlvX^6D9Hbf^bdY$is7i?@ UZ1vvKFEOV diff --git a/obsolete/lispusers/REGISTER-MACHINE b/obsolete/lispusers/REGISTER-MACHINE deleted file mode 100644 index 0604b026..00000000 --- a/obsolete/lispusers/REGISTER-MACHINE +++ /dev/null @@ -1,101 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) - -(FILECREATED " 1-Feb-2022 16:51:58"  -{DSK}kaplan>Local>medley3.5>my-medley>lispusers>REGISTER-MACHINE.;2 4416 - - :CHANGES-TO (FNS Requst-NS-Registry) - - :PREVIOUS-DATE " 8-Jan-88 18:02:00" -{DSK}kaplan>Local>medley3.5>my-medley>lispusers>REGISTER-MACHINE.;1) - - -(* ; " -Copyright (c) 1986-1988 by Xerox Corporation. -") - -(PRETTYCOMPRINT REGISTER-MACHINECOMS) - -(RPAQQ REGISTER-MACHINECOMS - ( - -(* ;;; "Add a Lafite form that will request that the current machine be registered with the local Clearinghouse") - - (FNS Requst-NS-Registry AmIRegistered) - (ADDVARS (LAFITESPECIALFORMS ("Clearinghouse registry request" 'Requst-NS-Registry - "Make a form to request that the current machine be registered on the local Clearinghouse" - ))) - (P (UNMARKASCHANGED 'LAFITESPECIALFORMS 'VARS) - (SETQ LAFITEFORMSMENU NIL)))) - - - -(* ;;; -"Add a Lafite form that will request that the current machine be registered with the local Clearinghouse" -) - -(DEFINEQ - -(Requst-NS-Registry - [LAMBDA NIL (* ; "Edited 1-Feb-2022 16:46 by rmk") - (* ; "Edited 8-Jan-88 18:00 by Masinter") - -(* ;;; -"Format a nice note requsting that the current machine be registered on the local Clearinghouse.") - - (LET ((*STANDARD-OUTPUT* (OPENTEXTSTREAM NIL NIL NIL NIL (LIST 'FONT LAFITEEDITORFONT))) - (netNumber (fetch NSNET \MY.NSADDRESS)) - (me (FULLUSERNAME)) - (CURRENTLY (AmIRegistered))) - (CL:FORMAT T "To: UserAdministration~A~A~&" (SELECTQ (LAFITEMODE) - (GV ".") - ":") - CH.DEFAULT.DOMAIN) - (CL:FORMAT T "Cc: ~A~%%Reply-to: ~A~%%~%%" me me) - (if CURRENTLY - then (CL:FORMAT T ">>This machine is already registered as ~A <<~%%~%%" CURRENTLY)) - (printout NIL "Primary User: " me T T) - (printout NIL "Name: %"" (OR (ETHERHOSTNAME) - ">>Desired machine name<<") - "%"" T) - (CL:FORMAT T "Network Number: ~5,,'-:D~&" (fetch NSNET \MY.NSADDRESS)) - (CL:FORMAT T "Processor Number: ~5,,'-:D~&" (+ (LSH (fetch NSHNM0 \MY.NSADDRESS) - 32) - (LSH (fetch NSHNM1 \MY.NSADDRESS) - 16) - (fetch NSHNM2 \MY.NSADDRESS))) - (printout NIL "Description: A " (L-CASE (MACHINETYPE) - T) - " (typically running Lisp)" T) - (printout NIL T T "Thank you." T T "-- " FIRSTNAME T) - (LET ((field (TEDIT.FIND *STANDARD-OUTPUT* ">>*<<" 1 NIL T))) - (if field - then (TEDIT.SETSEL *STANDARD-OUTPUT* (CAR field) - (ADD1 (DIFFERENCE (CADR field) - (CAR field))) - 'LEFT T))) - *STANDARD-OUTPUT*]) - -(AmIRegistered - [LAMBDA NIL (* ; "Edited 8-Jan-88 18:00 by Masinter") - - (CL:FLET [(OK (NAMES) - (for wsn in (CH.LIST.OBJECTS NAMES 'WORKSTATION) when (EQUALALL \MY.NSADDRESS - (LOOKUP.NS.SERVER - wsn)) - do (RETURN (LIST wsn] - (OR (AND (ETHERHOSTNAME) - (OK (ETHERHOSTNAME))) - (OK "*"]) -) - -(ADDTOVAR LAFITESPECIALFORMS ("Clearinghouse registry request" 'Requst-NS-Registry - "Make a form to request that the current machine be registered on the local Clearinghouse" - )) - -(UNMARKASCHANGED 'LAFITESPECIALFORMS 'VARS) - -(SETQ LAFITEFORMSMENU NIL) -(PUTPROPS REGISTER-MACHINE COPYRIGHT ("Xerox Corporation" 1986 1987 1988)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (1131 4015 (Requst-NS-Registry 1141 . 3416) (AmIRegistered 3418 . 4013))))) -STOP diff --git a/obsolete/lispusers/SINGLEFILEINDEX b/obsolete/lispusers/SINGLEFILEINDEX deleted file mode 100644 index 98ff537c..00000000 --- a/obsolete/lispusers/SINGLEFILEINDEX +++ /dev/null @@ -1,1057 +0,0 @@ -(FILECREATED "15-Apr-88 09:50:23" {ERINYES}KOTO>SINGLEFILEINDEX.;2 41909 - - changes to: (FNS \SFI.CENTERPRINT) - - previous date: "31-Mar-86 17:15:30" {ERINYES}KOTO>LISPUSERS>SINGLEFILEINDEX.;1) - - -(* Copyright (c) 1984, 1985, 1986, 1988 by Xerox Corporation. All rights reserved.) - -(PRETTYCOMPRINT SINGLEFILEINDEXCOMS) - -(RPAQQ SINGLEFILEINDEXCOMS [(COMS (* * -"Created by Christopher Tong and JonL White, February 1984. Heavily revised by Bill van Melle, March 1986." - ) - (* SINGLEFILEINDEX) - (FNS SINGLEFILEINDEX \SFI.Q1UP \FILELISTING SINGLEFILEINDEX2 - SINGLEFILEINDEX1 \SFI.AnalyzeLine \SFI.FLUSHFONTCHANGE - PrintFnDef INDEXCOPYBYTES INDEXNEWLINE INDEXNEWPAGE - \SFI.SORTINDEX UALPHORDERCAR \SFI.FILTER.INDEX) - (FNS PrintFileTitle \SFI.PRINT.INDEX PrintIndex - \SFI.PrintIndexFactors PrintRelativeFunctionIndex - \SFI.CENTERPRINT PRINTDOTS \SFI.LISTINGHEADER \SFI.BreakLine) - ) - (INITVARS (PRINTERDEVICEFILENAME (QUOTE {LPT})) - (RELATIVEINDEXFLG) - (SINGLEFILEINDEX.TWOSIDED) - (SINGLEFILEINDEX.DONTSPAWN) - (\SFI.PROCESS.COMMANDS) - (\SFI.PROCESSLOCK (CREATE.MONITORLOCK "SINGLEFILEINDEX")) - (\SFI.PROCESS) - (ERRORMESSAGESTREAM T)) - (ADDVARS (SINGLEFILEINDEX.TYPES (MACRO DEFMACRO) - (VAR (RPAQ RPAQ? RPAQQ ADDTOVAR) - TestForVar T) - (VAR READVARS TestForUglyVars) - (BITMAP RPAQ TestForBitmap) - (CONSTANTS CONSTANTS TestForConstants) - (RECORD (eval CLISPRECORDTYPES)) - (PROPERTY PUTPROPS TestForProp) - (COURIERPROGRAM COURIERPROGRAM) - (TEMPLATE SETTEMPLATE TestForQuotedType) - (I.S.OPR I.S.OPR TestForQuotedType) - (RESOURCES PUTDEF TestForResource) - (ADVICE READVISE)) - (SINGLEFILEINDEX.PROPERTIES (COPYRIGHT) - (READVICE ADVICE)) - (SINGLEFILEINDEX.FILTERS (VAR . CONSTANTS) - (VAR . BITMAP))) - (COMS (* "Functions that find types") - (FNS TestForType TestForQuotedType TestForVar TestForBitmap TestForProp TestForResource - TestForUglyVars TestForGenericDefinition TestForConstants SFI.WHOLE.EXPRESSION - SFI.LOOKUP.NAME)) - (DECLARE: EVAL@COMPILE DONTCOPY (MACROS .ERRORSTREAM.) - (RECORDS SFITYPE) - (FILES (IMPORT) - FILEIO) - (GLOBALVARS DEFAULTFONT NOTLISTEDFILES) - (GLOBALVARS FILERDTBL RELATIVEINDEXFLG) - (GLOBALVARS SINGLEFILEINDEX.DONTSPAWN \SFI.PROCESS.COMMANDS \SFI.PROCESSLOCK - \SFI.PROCESS SINGLEFILEINDEX.TWOSIDED SINGLEFILEINDEX.TYPES - SINGLEFILEINDEX.PROPERTIES SINGLEFILEINDEX.FILTERS FILELINELENGTH - MACROPROPS PRINTERDEVICEFILENAME) - DONTEVAL@LOAD - (SPECVARS . T)) - (COMS (FNS SFI.LISTFILES1) - (DECLARE: DOCOPY DONTEVAL@LOAD (P (MOVD? (QUOTE LISTFILES1) - (QUOTE OLDLISTFILES1)) - (/MOVD (QUOTE SFI.LISTFILES1) - (QUOTE LISTFILES1))) - (INITVARS (LINESPERPAGE 65]) - (* * -"Created by Christopher Tong and JonL White, February 1984. Heavily revised by Bill van Melle, March 1986." -) - - - - -(* SINGLEFILEINDEX) - -(DEFINEQ - -(SINGLEFILEINDEX - [LAMBDA (INF OUTF mergedIndexFlg PRINTOPTIONS) (* bvm: "28-Mar-86 17:31") - (LET ((FULL (FINDFILE INF T))) - (COND - ((NOT FULL) (* When called by LISTFILES INF will already be a full - file name) - (printout (.ERRORSTREAM.) - T INF " not found.")) - (SINGLEFILEINDEX.DONTSPAWN (SINGLEFILEINDEX2 FULL OUTF mergedIndexFlg PRINTOPTIONS)) - (T (\SFI.Q1UP (FUNCTION SINGLEFILEINDEX2) - FULL OUTF mergedIndexFlg PRINTOPTIONS) - (* Used to return NIL so that LISTFILES won't try  - removing from NOTLISTEDFILES) - FULL]) - -(\SFI.Q1UP - [LAMBDA (FUN FULL OUTF mergedIndexFlg PRINTOPTIONS) (* bvm: "15-Mar-86 17:11") - - (* * Add a command to list file FULL to OUTF applying FUN) - - - (WITH.MONITOR \SFI.PROCESSLOCK (* Lock protects \SFI.PROCESS.COMMANDS and  - \SFI.PROCESS) - [COND - ((AND \SFI.PROCESS (NOT (FIND.PROCESS \SFI.PROCESS))) - (* Process died, flush handle and any old listing  - requests) - (SETQ \SFI.PROCESS (SETQ \SFI.PROCESS.COMMANDS NIL] - (SETQ \SFI.PROCESS.COMMANDS (NCONC1 \SFI.PROCESS.COMMANDS - (LIST FUN FULL OUTF mergedIndexFlg - PRINTOPTIONS))) - (COND - ((NULL \SFI.PROCESS) - (SETQ \SFI.PROCESS (ADD.PROCESS (LIST (FUNCTION \FILELISTING)) - (QUOTE BEFOREEXIT) - (QUOTE DON'T]) - -(\FILELISTING - [LAMBDA NIL (* bvm: "15-Mar-86 16:58") - - (* * Process that takes listing commands from \SFI.PROCESS.COMMANDS and performs them) - - - (WITH.MONITOR \SFI.PROCESSLOCK (* Lock protects \SFI.PROCESS.COMMANDS and  - \SFI.PROCESS) - (while \SFI.PROCESS.COMMANDS bind FORM - do (SETQ FORM (pop \SFI.PROCESS.COMMANDS)) - (RELEASE.MONITORLOCK \SFI.PROCESSLOCK) - (* Release lock while listing so that others can add  - to my queue) - (APPLY (CAR FORM) - (CDR FORM)) - (OBTAIN.MONITORLOCK \SFI.PROCESSLOCK) - finally (* Nothing left to do, so exit) - (SETQ \SFI.PROCESS NIL]) - -(SINGLEFILEINDEX2 - [LAMBDA (FULL OUTF mergedIndexFlg PRINTOPTIONS) (* bvm: "28-Mar-86 17:44") - - (* * Process a single file FULL to OUTF with options. SINGLEFILEINDEX should have already computed the fullname of  - the input file) - - - (COND - ((COND - ((SINGLEFILEINDEX1 FULL OUTF mergedIndexFlg PRINTOPTIONS) - (AND (NULL OUTF) - (printout (.ERRORSTREAM.) - T "indexed version of " FULL " => " PRINTERDEVICEFILENAME)) - T) - (OUTF (printout (.ERRORSTREAM.) - T FULL " is not LISPSOURCEFILEP -- COPYFILE being called")) - (T (OLDLISTFILES1 FULL PRINTOPTIONS))) (* Do this here since there is little coordination  - between the various multiple processes which are  - listing files) - (SETQ NOTLISTEDFILES (REMOVE (ROOTFILENAME FULL) - NOTLISTEDFILES)) - NIL]) - -(SINGLEFILEINDEX1 - [LAMBDA (FULL OUTF RETINDEXFLG PRINTOPTIONS) (* bvm: "31-Mar-86 15:53") - - (* Makes an indexed file (default is the line printer). The index file will have a number of indices, one for each  - type in INDEXEDTYPESLIST. Each type index will list all the items of that type NIL in alphabetical order and the  - page number of where that item's definition is in the file. - - NOTE1: The indices will be printed last. - - NOTE2: The index file is not "loadable" into LISP.) - - - (DECLARE (SPECVARS FULL) - (USEDFREE LINESPERPAGE)) - (RESETLST (PROG ((LINESPERPAGE LINESPERPAGE) - [typesLST (OR (NULL RELATIVEINDEXFLG) - (EQ RELATIVEINDEXFLG (QUOTE BOTH] - (FNUM 0) - (SOURCESTREAM) - (PAGECOUNT) - (LINECOUNT 1) - (ItemPages) - (INDICES) - lastPage MAP FULLEOLC COMS currentItem nextFnGroup nextFnStart FNSMAPSL TEM) - (DECLARE (SPECVARS MAP LINECOUNT PAGECOUNT LINESPERPAGE SOURCESTREAM - ItemPages typesLST FNUM currentItem linePos newPos - INDICES)) - - (* * Specials are as follows - - SOURCESTREAM -- stream on the input file being formatted - - currentItem -- function, etc currently being printed - - FNUM -- ordinal number of function currently being printed, when RELATIVEINDEXFLG - - PAGECOUNT -- number of current page - - LINECOUNT -- number of current line on page - - ItemPages -- list of (name type page#) constituting the actual index) - - - [RESETSAVE (SETQ SOURCESTREAM (OPENSTREAM FULL (QUOTE INPUT) - (QUOTE OLD))) - (QUOTE (PROGN (CLOSEF? OLDVALUE] - (SETQ FULL (FULLNAME SOURCESTREAM)) - (COND - ([EQ FULL (CAR (SETQ TEM (LISTP (GETP (ROOTFILENAME FULL) - (QUOTE FILEMAP] - (* It appears as though the file has already been  - loaded in some way so that the MAP is already loaded) - (SETQ MAP (CADR TEM))) - ((NULL USEMAPFLG) - (RESETSAVE NIL (QUOTE (SETQ USEMAPFLG))) - (* Really should bind USEMAPFLG to T but this works if - the system still thinks it's a globalvar) - (SETQ USEMAPFLG T))) - (COND - ([OR (AND (NOT (RANDACCESSP SOURCESTREAM)) - (OR typesLST (NULL MAP))) - (AND (NULL MAP) - (NULL (SETQ MAP (GETFILEMAP FULL))) - (NOT (LISPSOURCEFILEP FULL] - (* We just let the "old" listfiles do it when the file - isn't RANDACCESSP or when it's probably some kind of  - binary file) - (RETURN))) - (OR OUTF (SETQ OUTF PRINTERDEVICEFILENAME)) - [COND - [(OPENP OUTF (QUOTE OUTPUT)) - (RESETSAVE (OUTPUT (SETQ OUTF (GETSTREAM OUTF (QUOTE OUTPUT] - (T (RESETSAVE [OUTPUT (SETQ OUTF (OPENSTREAM OUTF (QUOTE OUTPUT) - (QUOTE NEW] - (QUOTE (PROGN (CLOSEF? (OUTPUT OLDVALUE] - [STREAMPROP OUTF (QUOTE PRINTOPTIONS) - (APPEND PRINTOPTIONS (LIST (QUOTE DOCUMENT.NAME) - FULL) - (STREAMPROP OUTF (QUOTE PRINTOPTIONS] - (* Make sure printer knows original name of file) - (RESETSAVE (RADIX 10)) - (SETQ LINESPERPAGE (OR (GETFILEINFO OUTF (QUOTE PAGEHEIGHT)) - LINESPERPAGE)) - (* Determine printing parameters.) - (RESETSAVE (LINELENGTH 1000 OUTF)) - (COND - (RELATIVEINDEXFLG (* All index info up front, derived from file map, no  - absolute page numbers) - (PrintFileTitle FULL (GETFILEINFO SOURCESTREAM - (QUOTE - CREATIONDATE))) - (PrintRelativeFunctionIndex MAP))) - [COND - (typesLST (SETQ typesLST - (for ENTRY in SINGLEFILEINDEX.TYPES - collect (COND - ((EQ (CAR (LISTP (fetch (SFITYPE - PATTERNS) - of ENTRY))) - (QUOTE eval)) - (create SFITYPE - PATTERNS _(EVAL - (CADR (fetch (SFITYPE PATTERNS) - of ENTRY))) - reusing ENTRY)) - (T ENTRY] - (PROGN (SETQ FNSMAPSL (CDR MAP)) - (SETQ FULLEOLC (fetch EOLCONVENTION of SOURCESTREAM)) - (SETQ PAGECOUNT 1) - (SETQ nextFnGroup (CDDR (CAR FNSMAPSL))) - (SETQ nextFnStart (CADAR nextFnGroup))) - - (* * Locate and print definitions for each item.) - - - (bind linePos newPos (currentPos _ 0) - [EOL _(SELECTC FULLEOLC - [CR.EOLC (CONCATCODES (CHARCODE (CR] - [LF.EOLC (CONCATCODES (CHARCODE (LF] - (CONCATCODES (CHARCODE (CR LF] - while (SETQ newPos (FILEPOS EOL SOURCESTREAM currentPos)) - do (* currentPos = how far we have copied; - linePos = start of current line; - newPos = start of next line) - (SETFILEPTR SOURCESTREAM (SETQ linePos currentPos)) - (COND - ([COND - [(EQ (PEEKCCODE SOURCESTREAM) - (CHARCODE ^F)) - (* Line might start with a fontchange sequence) - (\SFI.FLUSHFONTCHANGE SOURCESTREAM) - (* Advance linePos to after any font change chars) - (AND nextFnStart (OR (IEQP linePos nextFnStart) - (IEQP currentPos nextFnStart] - (T (AND nextFnStart (IEQP linePos nextFnStart] - (* Index and print function group.) - (for function in nextFnGroup do (SETQ newPos - (PrintFnDef function - OUTF))) - (* Should point us at the first of two closing parens) - (pop FNSMAPSL) - (SETQ nextFnGroup (CDDAR FNSMAPSL)) - (SETQ nextFnStart (CADAR nextFnGroup))) - (T (* Print and index (when appropriate) next line.) - (SELECTC FULLEOLC - (CRLF.EOLC (READC SOURCESTREAM) - (add newPos 1)) - 0) - (COND - (typesLST (\SFI.AnalyzeLine SOURCESTREAM typesLST))) - (INDEXCOPYBYTES SOURCESTREAM OUTF currentPos newPos) - (* Print the line.) - (INDEXNEWLINE))) - (SETQ currentPos (ADD1 newPos))) - (SETQ lastPage PAGECOUNT) - - (* * Print file index or indices.) - - - (COND - ((OR (NULL RELATIVEINDEXFLG) - (EQ RELATIVEINDEXFLG (QUOTE BOTH))) - (SETQ INDICES (\SFI.SORTINDEX ItemPages)) - [LET ((VARS (ASSOC (QUOTE VAR) - INDICES))) - (* Manually filter out the filecoms var) - (RPLACD VARS (DREMOVE (ASSOC (FILECOMS FULL) - (CDR VARS)) - (CDR VARS] - (\SFI.FILTER.INDEX INDICES) - (INDEXNEWPAGE T) - (COND - ((AND (EVENP PAGECOUNT) - SINGLEFILEINDEX.TWOSIDED) - (* Ensure that the index will not be on the back-side  - of a two-sided listing) - (INDEXNEWPAGE T))) - (PrintFileTitle FULL (GETFILEINFO SOURCESTREAM (QUOTE CREATIONDATE)) - ) - (\SFI.PRINT.INDEX INDICES))) - (RETURN (COND - (RETINDEXFLG (CONS FULL INDICES)) - (T FULL]) - -(\SFI.AnalyzeLine - [LAMBDA (SOURCESTREAM TYPETRIPLES FLG) (* bvm: "30-Mar-86 15:07") - - (* * Retrieve line as string, beginning with first character that isn't a font change char,) - - - (DECLARE (USEDFREE ItemPages)) - (SELECTQ (GETSYNTAX (READCCODE SOURCESTREAM) - FILERDTBL) - [(LEFTPAREN LEFTBRACKET) (* Note that if the first character on the line isn't  - a parens then this line can't be the start of anything - interesting) - (COND - ((EQ (PEEKCCODE SOURCESTREAM) - (CHARCODE ^F)) - - (* It is possible to have a fontchange sequence just after the open parens, though most forms reserve the font  - change for the named object, coming up next) - - - (\SFI.FLUSHFONTCHANGE SOURCESTREAM))) - (LET ((FN (READ SOURCESTREAM FILERDTBL)) - HERE PAT MOVED? ITEMNAME) - (SETQ HERE (GETFILEPTR SOURCESTREAM)) - (for ENTRY in TYPETRIPLES when (COND - ((EQ (SETQ PAT (fetch - (SFITYPE PATTERNS) - of ENTRY)) - T) - (* Matches anything -- TESTFN must be doing all the  - work) - T) - ((LISTP PAT) - (MEMB FN PAT)) - (T (EQ FN PAT))) - do (* ENTRY thinks this line might be interesting) - (COND - (MOVED? (* Previous test may have moved the file pointer, so  - bring it back) - (SETFILEPTR SOURCESTREAM HERE) - (SETQ MOVED? NIL))) - [COND - ([SETQ ITEMNAME (CAR (NLSETQ - (APPLY* (OR (fetch (SFITYPE TESTFN) - of ENTRY) - (FUNCTION TestForType)) - SOURCESTREAM FN ENTRY] - [COND - ((NLISTP ITEMNAME) (* Single object to be indexed as the type in ENTRY) - (push ItemPages (LIST (LET ((TYPE (fetch (SFITYPE NAME) - of ENTRY))) - (OR (CAR (LISTP TYPE)) - TYPE)) - ITEMNAME PAGECOUNT))) - (T (* Index as some other type) - (for PAIR in (COND - ((LITATOM (CAR ITEMNAME)) - (* a single pair) - (LIST ITEMNAME)) - (T - (* many) - ITEMNAME)) - do (for NAME in (CDR PAIR) - do (push ItemPages (LIST (CAR PAIR) - NAME PAGECOUNT] - (COND - ((NOT (fetch (SFITYPE AMBIGUOUS?) of ENTRY)) - (RETURN] - (SETQ MOVED? T] - ((RIGHTPAREN RIGHTBRACKET) (* Well, some lines will be the closing of a DEFINEQ  - or a DECLARE: or whatever) - NIL) - NIL]) - -(\SFI.FLUSHFONTCHANGE - [LAMBDA (STREAM) (* bvm: "15-Mar-86 17:41") - (while (EQ (PEEKCCODE STREAM) - (CHARCODE ^F)) - do (READCCODE STREAM) - (READCCODE STREAM) - (add linePos 2]) - -(PrintFnDef - [LAMBDA (FNDEF OUTSTREAM) - (DECLARE (USEDFREE ItemPages FNUM SOURCESTREAM PAGECOUNT LINESPERPAGE LINECOUNT) - (SPECVARS currentItem)) (* bvm: "28-Mar-86 17:41") - - (* * Prints a FNDEF definition on the file OUTSTREAM - - FNDEF is map entry of form (name start . end)) - - - (PROG ((END (CDDR FNDEF)) - (currentItem (CAR FNDEF))) - (add FNUM 1) - (INDEXNEWLINE) - (COND - (RELATIVEINDEXFLG (printout NIL .SP (IDIFFERENCE FILELINELENGTH (IPLUS - 2 - (NCHARS FNUM))) - .FONT BOLDFONT "[" FNUM "]" .FONT DEFAULTFONT .RESET))) - (INDEXNEWLINE) - (COND - ((NOT (ILEQ (IPLUS LINECOUNT 3) - LINESPERPAGE)) - (INDEXNEWPAGE))) - (push ItemPages (LIST (QUOTE FUNCTION) - currentItem PAGECOUNT)) - (* Print out function.) - (INDEXCOPYBYTES SOURCESTREAM OUTSTREAM (CADR FNDEF) - END) - (RETURN END]) - -(INDEXCOPYBYTES - [LAMBDA (IN OUT START END) - (DECLARE (USEDFREE LINECOUNT LINESPERPAGE)) (* bvm: "15-Mar-86 17:50") - - (* This is similar to COPYBYTES except that, INDEXNEWLINE is called whenever an EOL is read, and IndexNewPage is  - called whenever a form feed is read) - - - (SETFILEPTR IN START) - [PROG ((INSTRM (GETSTREAM IN (QUOTE INPUT))) - (OUTSTRM (GETSTREAM OUT (QUOTE OUTPUT))) - EOLC NLFLG LOOKFORLF CH) - (SETQ EOLC (fetch EOLCONVENTION of INSTRM)) - (FRPTQ (IDIFFERENCE END START) - (SELCHARQ (SETQ CH (BIN INSTRM)) - [CR (SELECTC EOLC - [CR.EOLC (SETQ LOOKFORLF NIL) - (COND - ((AND NLFLG (IGREATERP LINECOUNT - (IDIFFERENCE - LINESPERPAGE 5)) - ) - (* double cr near end of page) - (INDEXNEWPAGE) - (SETQ NLFLG NIL)) - (T (INDEXNEWLINE) - (SETQ NLFLG T] - (CRLF.EOLC - - (* Flag says that EOLC is CRLF and we are looking for next char to be LF. Expanded out this way so that we can keep - track of the character counts accurately) - - - (SETQ LOOKFORLF T)) - (PROGN (SETQ LOOKFORLF NIL) - (\OUTCHAR OUTSTRM (CHARCODE CR] - (LF [COND - [(OR LOOKFORLF (EQ EOLC LF.EOLC)) - (COND - ((AND NLFLG (IGREATERP LINECOUNT (IDIFFERENCE - LINESPERPAGE 5))) - (* double cr near end of page) - (INDEXNEWPAGE) - (SETQ NLFLG NIL)) - (T (INDEXNEWLINE) - (SETQ NLFLG T] - (T (\OUTCHAR OUTSTRM (CHARCODE LF)) - (* If LF comes thru, it is just a vertical tab. - Want to keep horizontal position the same, but update  - line-counts) - (COND - ((AND NLFLG (IGREATERP LINECOUNT (IDIFFERENCE - LINESPERPAGE 5))) - (* double cr near end of page) - (INDEXNEWPAGE) - (SETQ NLFLG NIL)) - (T (COND - ((IGREATERP (add LINECOUNT 1) - LINESPERPAGE) - (INDEXNEWPAGE))) - (SETQ NLFLG T] - (SETQ LOOKFORLF NIL)) - (FF (INDEXNEWPAGE) - (SETQ NLFLG NIL) - (SETQ LOOKFORLF NIL)) - (PROGN (\BOUT OUTSTRM CH) - (SETQ NLFLG NIL) - (SETQ LOOKFORLF NIL] - T]) - -(INDEXNEWLINE - [LAMBDA (DontPrintPageNbrFlg) (* JonL "13-Mar-84 22:04") - (TERPRI) - (COND - ((IGREATERP (add LINECOUNT 1) - LINESPERPAGE) - (INDEXNEWPAGE DontPrintPageNbrFlg]) - -(INDEXNEWPAGE - [LAMBDA (DontPrintPageNbrFlg) (* JonL "13-Mar-84 22:04") - (PRIN3 (FCHARACTER (CHARCODE FF))) - (POSITION NIL 0) - (SETQ LINECOUNT 0) - (COND - (PAGECOUNT (add PAGECOUNT 1))) - (\SFI.LISTINGHEADER DontPrintPageNbrFlg]) - -(\SFI.SORTINDEX - [LAMBDA (TRIPLES) (* bvm: "29-Mar-86 17:26") - - (* * Sort TRIPLES into a set of indices, one per type. Each element is of the form (type name page), while the  - resulting indices are of the form (type . entries), with each entry looking like (name . pagenumbers)) - - - (LET ([TYPENAMES (CONS (QUOTE FUNCTION) - (for X in SINGLEFILEINDEX.TYPES collect (CAR X] - RESULT INDEX OLDNAME) - [for TRIP in TRIPLES - do [COND - ((NULL (SETQ INDEX (ASSOC (CAR TRIP) - RESULT))) - (push RESULT (SETQ INDEX (LIST (CAR TRIP] - (COND - [(SETQ OLDNAME (ASSOC (CADR TRIP) - INDEX)) (* Duplicate entry, so add a page number) - (RPLACD OLDNAME (SORT (UNION (CDDR TRIP) - (CDR OLDNAME] - (T (push (CDR INDEX) - (CDR TRIP] - (for PAIR in RESULT do (SORT (CDR PAIR) - (FUNCTION UALPHORDERCAR))) - (SORT RESULT (FUNCTION (LAMBDA (X Y) (* X is before Y if its car appears before Y's in  - TYPENAMES) - (FMEMB (CAR Y) - (CDR (FMEMB (CAR X) - TYPENAMES]) - -(UALPHORDERCAR - [LAMBDA (A B) (* JonL " 7-Mar-84 19:52") - (* does case independent sort on the CAR of two  - elements.) - (UALPHORDER (CAR A) - (CAR B]) - -(\SFI.FILTER.INDEX - [LAMBDA (INDICES) (* bvm: "30-Mar-86 14:11") - - (* * Remove redundancies from the prepared INDICES) - - - (DECLARE (SPECVARS INDICES)) (* For SFI.LOOKUP.NAME) - (for TYPEPAIR in INDICES bind FILTERS when [SETQ FILTERS (for FILTER in - SINGLEFILEINDEX.FILTERS - collect (CDR FILTER) - when (EQ (CAR FILTER) - (CAR - TYPEPAIR] - do (* Each filter is either a type name or a list whose  - car is a function) - (RPLACD TYPEPAIR (for PAIR in (CDR TYPEPAIR) collect PAIR - unless (for F in FILTERS thereis - (COND - ((NLISTP F) - (* Name exists as another type) - (SFI.LOOKUP.NAME - (CAR PAIR) - F)) - (T (APPLY* (CAR F) - PAIR]) -) -(DEFINEQ - -(PrintFileTitle - [LAMBDA (FILENAME DATE) (* bvm: "15-Mar-86 17:17") - - (* * Print FILENAME title. Should not be called unless FILENAME is essentially "at the top of the page") - - - (\SFI.CENTERPRINT (CONCAT FILENAME " " DATE) - T) - (\SFI.CENTERPRINT (CONCAT "-- Listed on " (DATE) - " --")) - (INDEXNEWLINE]) - -(\SFI.PRINT.INDEX - [LAMBDA (INDICES) (* bvm: "30-Mar-86 15:52") - - (* * For each (type . entries) pair in INDICES print a pretty index for the items of the type) - - - (for PAIR in INDICES when (CDR PAIR) - do (PrintIndex (CDR PAIR) - lastPage - (CAR PAIR)) - (INDEXNEWLINE T)) - (\SFI.BreakLine]) - -(PrintIndex - [LAMBDA (INDEXPAIRS MaxIndexNo TYPE) (* bvm: "30-Mar-86 15:34") - - (* * print index of items in IndexedList.) - - - (DECLARE (USEDFREE LINESPERPAGE LINECOUNT)) - (PROG ([INDEXNOWIDTH (COND - ((ILESSP MaxIndexNo 10) - 1) - ((ILESSP MaxIndexNo 100) - 2) - (T (NCHARS MaxIndexNo] - NCOLUMNS NROWS WIDTH LEFT SPACING NROWSREMAINING LastItem) - (DECLARE (SPECVARS NCOLUMNS LEFT WIDTH SPACING NROWS)) - (SETQ WIDTH (IPLUS (for PAIR in INDEXPAIRS bind - largest (PLUS (NCHARS (CAR PAIR)) - (COND - ((CDDR PAIR) - (* When multiple page nos, must count the extra pages, - plus an additional char each for the separating comma) - (ITIMES (LENGTH (CDDR PAIR)) - (IPLUS 1 INDEXNOWIDTH))) - (T 0))) - finally (RETURN $$EXTREME)) - INDEXNOWIDTH 1)) (* WIDTH is the widest any entry gets: name plus page  - numbers) - (\SFI.PrintIndexFactors INDEXPAIRS) (* Compute NCOLUMNS LEFT WIDTH SPACING NROWS) - (SETQ NROWSREMAINING NROWS) - (AND TYPE (\SFI.BreakLine)) (* When TYPE is non-null, call is from  - PrintOneTypeIndex) - (INDEXNEWLINE T) - (COND - (TYPE [COND - ((AND (IGREATERP (IPLUS NROWS 3) - (IDIFFERENCE LINESPERPAGE LINECOUNT)) - (IGREATERP LINECOUNT (LRSH LINESPERPAGE 1))) - - (* * Don't start an indexing on the bottom half of a page which is going to cross a page boundary before the  - "breaker") - - - (INDEXNEWPAGE T) - (AND TYPE (\SFI.BreakLine] - (\SFI.CENTERPRINT (CONCAT TYPE " INDEX") - T T) - (INDEXNEWLINE T))) - (while INDEXPAIRS - do (SETQ NROWS (IMIN NROWSREMAINING (IDIFFERENCE LINESPERPAGE LINECOUNT))) - (for ROW from 1 to NROWS bind NEXTINDEX - do (SETQ NEXTINDEX ROW) - (for COLUMN from 1 to NCOLUMNS - do [COND - ((SETQ LastItem (FNTH INDEXPAIRS NEXTINDEX)) - (LET* ((ITEM (CAR LastItem)) - (LABEL (CAR ITEM)) - (PAGENO (CDR ITEM))) - [SETQ PAGENO - (COND - [(LISTP PAGENO) - (* More than one occurrence) - (CONCATLIST (CDR (for P in PAGENO - join (LIST "," P] - (T (MKSTRING PAGENO] - (printout NIL .FONT DEFAULTFONT LABEL ,) - (PRINTDOTS (IDIFFERENCE (IDIFFERENCE - WIDTH - (ADD1 (NCHARS LABEL))) - (NCHARS PAGENO))) - (PRIN1 PAGENO) - (COND - ((NEQ COLUMN NCOLUMNS) - (SPACES SPACING] - (add NEXTINDEX NROWS)) - (INDEXNEWLINE T)) - (COND - ((SETQ INDEXPAIRS (CDR LastItem)) - (INDEXNEWPAGE T) - (SETQ NROWSREMAINING (ADD1 (IQUOTIENT (LENGTH INDEXPAIRS) - NCOLUMNS]) - -(\SFI.PrintIndexFactors - [LAMBDA (IndexedList) (* bvm: "30-Mar-86 15:00") - (DECLARE (USEDFREE NCOLUMNS LEFT WIDTH SPACING NROWS)) - (LET ((LEN (LENGTH IndexedList))) - [SETQ NCOLUMNS (IMAX 1 (IMIN LEN (IQUOTIENT FILELINELENGTH (IPLUS WIDTH 2] - (* Number of columns that fit if you allow 2 spaces  - between columns) - (SETQ NROWS (IQUOTIENT (IPLUS LEN (SUB1 NCOLUMNS)) - NCOLUMNS)) - (SETQ NCOLUMNS (IQUOTIENT (IPLUS LEN (SUB1 NROWS)) - NROWS)) (* This might reduce the number of columns if all the  - items, printed in NROWS rows, take fewer columns than  - originally allocated) - (SETQ LEFT (IDIFFERENCE FILELINELENGTH (ITIMES (IPLUS WIDTH 2) - NCOLUMNS))) - (* LEFT is number of spaces remaining after allocating - the columns) - (COND - ((EQ NCOLUMNS 1) (* Only one column, so either make it half the page  - width or the full width) - [SETQ WIDTH (COND - ((GREATERP WIDTH (IQUOTIENT FILELINELENGTH 2)) - FILELINELENGTH) - (T (IQUOTIENT FILELINELENGTH 2] - (SETQ SPACING 0)) - (T (SETQ WIDTH (IMIN (IPLUS WIDTH (IQUOTIENT LEFT 2)) - (IDIFFERENCE (IQUOTIENT FILELINELENGTH NCOLUMNS) - 2))) (* Spaces LEFT gets divided between the dots an the  - between-column spaces.) - (SETQ SPACING (COND - ((EQ NCOLUMNS 1) - 0) - (T (IQUOTIENT (IDIFFERENCE FILELINELENGTH (ITIMES WIDTH NCOLUMNS)) - (SUB1 NCOLUMNS]) - -(PrintRelativeFunctionIndex - [LAMBDA (MAP) (* bvm: "31-Mar-86 15:59") - - (* * Create and print an index for the functions on the file.) - - - (PROG ((MaxIndexNo 0) - IndexedList currentItem) - [SETQ IndexedList (for DFQ in MAP join (for function in (CDDR DFQ) - collect (LIST (CAR function) - (add MaxIndexNo 1] - (* Printout function index.) - (COND - ((NOT IndexedList) - (INDEXNEWLINE T) - (INDEXNEWLINE T) - (printout NIL .FONT BOLDFONT "No Functions." .FONT DEFAULTFONT)) - (T (PrintIndex (SORT IndexedList (FUNCTION UALPHORDERCAR)) - MaxIndexNo))) - (INDEXNEWPAGE T) - (RETURN MAP]) - -(\SFI.CENTERPRINT - [LAMBDA (STR BOLDFLG DontPrintPageNbrFlg) (* //Z\\ "15-Apr-88 09:49") - (* JonL "13-Mar-84 22:07") - (* Be sure to only TAB with a positive index) - (TAB (IQUOTIENT (if (IGREATERP FILELINELENGTH (NCHARS STR)) - then (IDIFFERENCE FILELINELENGTH (NCHARS STR)) - else 0) - 2)) - (COND - (BOLDFLG (printout NIL .FONT BOLDFONT STR .FONT DEFAULTFONT)) - (T (printout NIL STR))) - (INDEXNEWLINE DontPrintPageNbrFlg]) - -(PRINTDOTS - [LAMBDA (N FILE) (* bvm: "15-Mar-86 16:28") - (LET [(STRM (GETSTREAM FILE (QUOTE OUTPUT] - (FRPTQ N (\OUTCHAR STRM (CHARCODE %.]) - -(\SFI.LISTINGHEADER - [LAMBDA (dontPrintPageNumberFlg) (* cht: " 5-JAN-84 15:15") - (COND - (FULL (PRIN1 FULL))) - (COND - ((AND currentItem FNUM RELATIVEINDEXFLG) - (printout NIL " (" .P2 currentItem "[" FNUM "] cont.)")) - (currentItem (printout NIL " (" .P2 currentItem " cont.)"))) - (TAB (IDIFFERENCE FILELINELENGTH 9) - T) - (COND - ((AND PAGECOUNT (NOT dontPrintPageNumberFlg)) - (PRIN1 "Page ") - (PRINTNUM (QUOTE (FIX 4)) - PAGECOUNT))) - (INDEXNEWLINE) - (INDEXNEWLINE]) - -(\SFI.BreakLine - [LAMBDA NIL (* bvm: "15-Mar-86 16:28") - (INDEXNEWLINE T) - [LET [(STRM (GETSTREAM NIL (QUOTE OUTPUT] - (FRPTQ FILELINELENGTH (\OUTCHAR STRM (CHARCODE ~] - (INDEXNEWLINE T]) -) - -(RPAQ? PRINTERDEVICEFILENAME (QUOTE {LPT})) - -(RPAQ? RELATIVEINDEXFLG ) - -(RPAQ? SINGLEFILEINDEX.TWOSIDED ) - -(RPAQ? SINGLEFILEINDEX.DONTSPAWN ) - -(RPAQ? \SFI.PROCESS.COMMANDS ) - -(RPAQ? \SFI.PROCESSLOCK (CREATE.MONITORLOCK "SINGLEFILEINDEX")) - -(RPAQ? \SFI.PROCESS ) - -(RPAQ? ERRORMESSAGESTREAM T) - -(ADDTOVAR SINGLEFILEINDEX.TYPES (MACRO DEFMACRO) - (VAR (RPAQ RPAQ? RPAQQ ADDTOVAR) - TestForVar T) - (VAR READVARS TestForUglyVars) - (BITMAP RPAQ TestForBitmap) - (CONSTANTS CONSTANTS TestForConstants) - (RECORD (eval CLISPRECORDTYPES)) - (PROPERTY PUTPROPS TestForProp) - (COURIERPROGRAM COURIERPROGRAM) - (TEMPLATE SETTEMPLATE TestForQuotedType) - (I.S.OPR I.S.OPR TestForQuotedType) - (RESOURCES PUTDEF TestForResource) - (ADVICE READVISE)) - -(ADDTOVAR SINGLEFILEINDEX.PROPERTIES (COPYRIGHT) - (READVICE ADVICE)) - -(ADDTOVAR SINGLEFILEINDEX.FILTERS (VAR . CONSTANTS) - (VAR . BITMAP)) - - - -(* "Functions that find types") - -(DEFINEQ - -(TestForType - [LAMBDA (STREAM FN TRIPLE) (* bvm: "30-Mar-86 13:20") - - (* * Default testfn for types that are dumped in a form whose second element is the object's name) - - - (LET ((NAME (READ STREAM FILERDTBL))) - (AND NAME (LITATOM NAME) - NAME]) - -(TestForQuotedType - [LAMBDA (STREAM FN TRIPLE) (* bvm: "30-Mar-86 13:29") - - (* * Like TestForType, but tests for something where the second element of the form is the quoted name.) - - - (LET ((NAME (READ STREAM FILERDTBL))) - (AND (EQ (CAR (LISTP NAME)) - (QUOTE QUOTE)) - (CADR NAME]) - -(TestForVar - [LAMBDA (STREAM FN TRIPLE) (* bvm: "29-Mar-86 17:02") - - (* * Called for expressions whose car is one of RPAQ, RPAQQ, RPAQ?, ADDTOVAR -- read the variable name following  - it. Filters after the fact will remove duplications with other variable types) - - - (LET (NAME) - (COND - ([AND (SETQ NAME (READ STREAM FILERDTBL)) - (LITATOM NAME) - (NEQ NAME T) - (NOT (FMEMB NAME (QUOTE (GLOBALVARS SPECVARS LOCALVARS NLAMA NLAML LAMA] - (* Ignore compiler-internal vars) - NAME]) - -(TestForBitmap - [LAMBDA (STREAM FN TRIPLE) (* bvm: "28-Mar-86 17:06") - - (* * Called on (RPAQ --) in case the expression is (RPAQ var (READBITMAP))) - - - (LET ((NAME (READ STREAM FILERDTBL)) - CHAR) - (COND - ([AND NAME (LITATOM NAME) - (EQ (SETQ CHAR (SKIPSEPRCODES STREAM FILERDTBL)) - (CHARCODE "(")) - (PROGN (READCCODE STREAM) (* After the VARS name is the form  - (READBITMAP ...)) - (EQ (RATOM STREAM FILERDTBL) - (QUOTE READBITMAP] - NAME]) - -(TestForProp - [LAMBDA (STREAM FN TRIPLE) (* bvm: "31-Mar-86 12:13") - - (* * Called when given a PUTPROPS expression. Determine what type it is by looking at the property name. - If no more specific type known, then index it as a PROPERTY) - - - (LET ((NAME (READ STREAM FILERDTBL)) - (PROP (READ STREAM FILERDTBL))) (* See if PROP means something more specific than  - "property") - (COND - ((MEMB PROP MACROPROPS) (* Do macros in line so that MACRONAMES can be  - dynamically changed.) - (LIST (QUOTE MACRO) - NAME)) - (T (for PAIR in SINGLEFILEINDEX.PROPERTIES when (EQ (CAR PAIR) - PROP) - do (* Index it under this other type) - (RETURN (AND (CADR PAIR) - (LIST (CADR PAIR) - NAME))) - finally (* Nothing better, so index it as having a property) - (RETURN NAME]) - -(TestForResource - [LAMBDA (STREAM FN TRIPLE) (* bvm: "28-Mar-86 17:08") - (TestForGenericDefinition STREAM FN (QUOTE ((RESOURCES GLOBALRESOURCES]) - -(TestForUglyVars - [LAMBDA (STREAM FN TRIPLE) (* bvm: "30-Mar-86 15:42") - - (* * Uglyvars are dumped as (READVARS var1 var2 ...)) - - - (CONS (QUOTE VAR) - (CDR (SFI.WHOLE.EXPRESSION STREAM]) - -(TestForGenericDefinition - [LAMBDA (STREAM FN TRIPLE) (* bvm: "31-Mar-86 12:02") - - (* * Tests to see if expression is of the form (PUTDEF (QUOTE name) (QUOTE type) (QUOTE value)) where type is one  - specified in TRIPLE) - - - (LET ((DESIREDTYPE (CAR TRIPLE)) - NAME TYPE) - (COND - ([AND (PROGN (* After the PUTDEF should find  - (QUOTE name)) - (EQ [CAR (LISTP (SETQ NAME (READ STREAM FILERDTBL] - (QUOTE QUOTE))) - (PROGN (* then (QUOTE DESIREDTYPE)) - (EQ [CAR (LISTP (SETQ TYPE (READ STREAM FILERDTBL] - (QUOTE QUOTE))) - (OR (EQ [SETQ TYPE (CAR (LISTP (CDR TYPE] - DESIREDTYPE) - (AND (LISTP DESIREDTYPE) - (MEMB TYPE DESIREDTYPE] - (CADR NAME]) - -(TestForConstants - [LAMBDA (STREAM FN TRIPLE) (* bvm: "30-Mar-86 14:17") - - (* * Called when expression is (CONSTANTS --) -- return all elements (or CAR of element when it's a pair) as type  - CONSTANTS) - - - (CONS (QUOTE CONSTANTS) - (for X in (CDR (SFI.WHOLE.EXPRESSION STREAM)) collect (COND - ((LISTP X) - (CAR X)) - (T X]) - -(SFI.WHOLE.EXPRESSION - [LAMBDA (STREAM) (* bvm: "30-Mar-86 13:34") - (DECLARE (USEDFREE linePos)) - - (* * Called by testfns that want to see the whole expression) - - - (SETFILEPTR STREAM linePos) - (READ STREAM FILERDTBL]) - -(SFI.LOOKUP.NAME - [LAMBDA (NAME TYPE) (* bvm: "30-Mar-86 13:44") - (ASSOC NAME (CDR (ASSOC TYPE INDICES]) -) -(DECLARE: EVAL@COMPILE DONTCOPY -(DECLARE: EVAL@COMPILE -(PUTPROPS .ERRORSTREAM. MACRO (NIL (SELECTQ ERRORMESSAGESTREAM (T PROMPTWINDOW) - ERRORMESSAGESTREAM))) -) - -[DECLARE: EVAL@COMPILE - -(RECORD SFITYPE (NAME PATTERNS TESTFN AMBIGUOUS?)) -] - -(FILESLOAD (IMPORT) - FILEIO) - -(DECLARE: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS DEFAULTFONT NOTLISTEDFILES) -) - -(DECLARE: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS FILERDTBL RELATIVEINDEXFLG) -) - -(DECLARE: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS SINGLEFILEINDEX.DONTSPAWN \SFI.PROCESS.COMMANDS \SFI.PROCESSLOCK \SFI.PROCESS - SINGLEFILEINDEX.TWOSIDED SINGLEFILEINDEX.TYPES SINGLEFILEINDEX.PROPERTIES - SINGLEFILEINDEX.FILTERS FILELINELENGTH MACROPROPS PRINTERDEVICEFILENAME) -) -DONTEVAL@LOAD -(DECLARE: DOEVAL@COMPILE DONTCOPY - -(SPECVARS . T) -) -) -(DEFINEQ - -(SFI.LISTFILES1 - [LAMBDA (FILE PRINTOPTIONS) (* rmk: "26-Feb-85 10:36") - (SINGLEFILEINDEX FILE NIL NIL PRINTOPTIONS]) -) -(DECLARE: DOCOPY DONTEVAL@LOAD -(MOVD? (QUOTE LISTFILES1) - (QUOTE OLDLISTFILES1)) -(/MOVD (QUOTE SFI.LISTFILES1) - (QUOTE LISTFILES1)) - - -(RPAQ? LINESPERPAGE 65) -) -(PUTPROPS SINGLEFILEINDEX COPYRIGHT ("Xerox Corporation" 1984 1985 1986 1988)) -(DECLARE: DONTCOPY - (FILEMAP (NIL (3020 25431 (SINGLEFILEINDEX 3030 . 3773) (\SFI.Q1UP 3775 . 4729) (\FILELISTING 4731 . -5618) (SINGLEFILEINDEX2 5620 . 6523) (SINGLEFILEINDEX1 6525 . 14860) (\SFI.AnalyzeLine 14862 . 17966) -(\SFI.FLUSHFONTCHANGE 17968 . 18246) (PrintFnDef 18248 . 19344) (INDEXCOPYBYTES 19346 . 22103) ( -INDEXNEWLINE 22105 . 22350) (INDEXNEWPAGE 22352 . 22669) (\SFI.SORTINDEX 22671 . 24007) (UALPHORDERCAR - 24009 . 24309) (\SFI.FILTER.INDEX 24311 . 25429)) (25432 34128 (PrintFileTitle 25442 . 25842) ( -\SFI.PRINT.INDEX 25844 . 26259) (PrintIndex 26261 . 29594) (\SFI.PrintIndexFactors 29596 . 31498) ( -PrintRelativeFunctionIndex 31500 . 32356) (\SFI.CENTERPRINT 32358 . 33005) (PRINTDOTS 33007 . 33228) ( -\SFI.LISTINGHEADER 33230 . 33837) (\SFI.BreakLine 33839 . 34126)) (35163 40656 (TestForType 35173 . -35494) (TestForQuotedType 35496 . 35877) (TestForVar 35879 . 36548) (TestForBitmap 36550 . 37165) ( -TestForProp 37167 . 38291) (TestForResource 38293 . 38490) (TestForUglyVars 38492 . 38754) ( -TestForGenericDefinition 38756 . 39712) (TestForConstants 39714 . 40177) (SFI.WHOLE.EXPRESSION 40179 - . 40485) (SFI.LOOKUP.NAME 40487 . 40654)) (41455 41631 (SFI.LISTFILES1 41465 . 41629))))) -STOP diff --git a/obsolete/lispusers/TEDITDORADOKEYS b/obsolete/lispusers/TEDITDORADOKEYS deleted file mode 100644 index 5c6597df..00000000 --- a/obsolete/lispusers/TEDITDORADOKEYS +++ /dev/null @@ -1,124 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10) - -(FILECREATED "26-Feb-2024 11:19:15" |{WMEDLEY}TEDITDORADOKEYS.;8| 5385 - - :EDIT-BY |rmk| - - :CHANGES-TO (VARS TEDITDORADOKEYSCOMS) - - :PREVIOUS-DATE "15-Sep-2022 10:10:07" |{WMEDLEY}TEDITDORADOKEYS.;4|) - - -(PRETTYCOMPRINT TEDITDORADOKEYSCOMS) - -(RPAQQ TEDITDORADOKEYSCOMS - ((DECLARE\: EVAL@COMPILE DONTCOPY (FILES TEDIT-EXPORTS.ALL)) - (COMS - (* |;;| "Specialized functions for this module") - - (FNS \\TEDIT.DK.ABORT \\TEDIT.DK.INSERT-PARENS \\TEDIT.DK.INSERT-NEUTRAL-DOUBLEQUOTES - \\TEDIT.DK.INSERT-REAL-DOUBLEQUOTES)) - (VARS (\\TEDIT.DORADO.KEYS '(("Meta,x" EXPAND) - ("Meta,X" EXPAND) - ("Meta,c" FN \\TEDIT.CENTER.SEL) - ("Meta,C" FN \\TEDIT.CENTER.SEL.REV) - ("Meta,b" FN \\TEDIT.BOLD.SEL.ON) - ("Meta,B" FN \\TEDIT.BOLD.SEL.OFF) - ("Meta,i" FN \\TEDIT.ITALIC.SEL.ON) - ("Meta,I" FN \\TEDIT.ITALIC.SEL.OFF) - ("Meta,=" FN \\TEDIT.STRIKEOUT.SEL.ON) - ("Meta,+" FN \\TEDIT.STRIKEOUT.SEL.OFF) - ("Meta,-" FN \\TEDIT.UNDERLINE.SEL.ON) - ("Meta,_" FN \\TEDIT.UNDERLINE.SEL.OFF) - ("Meta,^" FN \\TEDIT.SUBSCRIPTSEL) - ("Meta,|" FN \\TEDIT.SUPERSCRIPTSEL) - ("Meta,SPACE" FN \\TEDIT.DEFAULTSSEL) - ("Meta,?" FN \\TEDIT.SHOWCARETLOOKS) - ("Meta,(" FN \\TEDIT.DK.INSERT-PARENS) - ("Meta,\"" FN \\TEDIT.DK.INSERT-NEUTRAL-DOUBLEQUOTES) - ("Meta,'" FN \\TEDIT.DK.INSERT-REAL-DOUBLEQUOTES)))) - (P (FOR ENTRY IN \\TEDIT.DORADO.KEYS DO (SELECTQ (CADR ENTRY) - (FN (TEDIT.SETFUNCTION (CAR ENTRY) - (CADDR ENTRY))) - (TEDIT.SETSYNTAX (CAR ENTRY) - (CADR ENTRY))))))) -(DECLARE\: EVAL@COMPILE DONTCOPY - -(FILESLOAD TEDIT-EXPORTS.ALL) -) - - - -(* |;;| "Specialized functions for this module") - -(DEFINEQ - -(\\TEDIT.DK.ABORT - (LAMBDA (TEXTOBJ) - (TEDIT.GET TEXTOBJ))) - -(\\TEDIT.DK.INSERT-PARENS - (LAMBDA (TEXTOBJ TEXTSTREAM SEL) (* \; "Edited 28-Oct-87 19:42 by jds") - - (LET ((CH1 (|fetch| CH# |of| SEL)) - (CHLIM (|fetch| CHLIM |of| SEL))) - (TEDIT.INSERT TEXTSTREAM ")" CHLIM) - (TEDIT.INSERT TEXTSTREAM "(" CH1) - (TEDIT.SETSEL TEXTSTREAM CH1 (+ 2 (- CHLIM CH1)))))) - -(\\TEDIT.DK.INSERT-NEUTRAL-DOUBLEQUOTES - (LAMBDA (TEXTOBJ TEXTSTREAM SEL) (* \; "Edited 28-Oct-87 19:45 by jds") - - (* |;;| "Insert ASCII double-quotes (\") around the selection") - - (LET ((CH1 (|fetch| CH# |of| SEL)) - (CHLIM (|fetch| CHLIM |of| SEL))) - (TEDIT.INSERT TEXTSTREAM "\"" CHLIM) - (TEDIT.INSERT TEXTSTREAM "\"" CH1) - (TEDIT.SETSEL TEXTSTREAM CH1 (+ 2 (- CHLIM CH1)))))) - -(\\TEDIT.DK.INSERT-REAL-DOUBLEQUOTES - (LAMBDA (TEXTOBJ TEXTSTREAM SEL) (* \; "Edited 28-Oct-87 19:44 by jds") - - (* |;;| "Insert NS double quotes around the selection.") - - (LET ((CH1 (|fetch| CH# |of| SEL)) - (CHLIM (|fetch| CHLIM |of| SEL))) - (TEDIT.INSERT TEXTSTREAM (CHARCODE 0\,252) - CHLIM) - (TEDIT.INSERT TEXTSTREAM (CHARCODE 0\,272) - CH1) - (TEDIT.SETSEL TEXTSTREAM CH1 (+ 2 (- CHLIM CH1)))))) -) - -(RPAQQ \\TEDIT.DORADO.KEYS - (("Meta,x" EXPAND) - ("Meta,X" EXPAND) - ("Meta,c" FN \\TEDIT.CENTER.SEL) - ("Meta,C" FN \\TEDIT.CENTER.SEL.REV) - ("Meta,b" FN \\TEDIT.BOLD.SEL.ON) - ("Meta,B" FN \\TEDIT.BOLD.SEL.OFF) - ("Meta,i" FN \\TEDIT.ITALIC.SEL.ON) - ("Meta,I" FN \\TEDIT.ITALIC.SEL.OFF) - ("Meta,=" FN \\TEDIT.STRIKEOUT.SEL.ON) - ("Meta,+" FN \\TEDIT.STRIKEOUT.SEL.OFF) - ("Meta,-" FN \\TEDIT.UNDERLINE.SEL.ON) - ("Meta,_" FN \\TEDIT.UNDERLINE.SEL.OFF) - ("Meta,^" FN \\TEDIT.SUBSCRIPTSEL) - ("Meta,|" FN \\TEDIT.SUPERSCRIPTSEL) - ("Meta,SPACE" FN \\TEDIT.DEFAULTSSEL) - ("Meta,?" FN \\TEDIT.SHOWCARETLOOKS) - ("Meta,(" FN \\TEDIT.DK.INSERT-PARENS) - ("Meta,\"" FN \\TEDIT.DK.INSERT-NEUTRAL-DOUBLEQUOTES) - ("Meta,'" FN \\TEDIT.DK.INSERT-REAL-DOUBLEQUOTES))) - -(FOR ENTRY IN \\TEDIT.DORADO.KEYS DO (SELECTQ (CADR ENTRY) - (FN (TEDIT.SETFUNCTION (CAR ENTRY) - (CADDR ENTRY))) - (TEDIT.SETSYNTAX (CAR ENTRY) - (CADR ENTRY)))) -(DECLARE\: DONTCOPY - (FILEMAP (NIL (2626 4130 (\\TEDIT.DK.ABORT 2636 . 2703) (\\TEDIT.DK.INSERT-PARENS 2705 . 3092) ( -\\TEDIT.DK.INSERT-NEUTRAL-DOUBLEQUOTES 3094 . 3586) (\\TEDIT.DK.INSERT-REAL-DOUBLEQUOTES 3588 . 4128)) -))) -STOP diff --git a/obsolete/lispusers/TEDITDORADOKEYS.LCOM b/obsolete/lispusers/TEDITDORADOKEYS.LCOM deleted file mode 100644 index d65bf602ad150691dd8cfb4f26c53336fad85e59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3405 zcmeHJ?{4En5YH9q1V)wM1x};=f(_V;o#d|Pa&V5lZk9N<>)rGcsRH$n?}$i~C~2h= zm>1#^cmuw}`!H*#j-95bBEbjHRaLyZ{>^V^cIG#0)uTQOsqV9Y>MZmlcoI8q-#MZ{ zSSV-`Fdh?ll2FGJPB*~iksIJb*Wnb*rlu&Wv~>|6s0YM)s{84=ZZ)kon5Jz$x6KX# zm0ZlP7L#du3G*2c$bNn`pk6@7zkD^FtQI$`bh-K(?V0eR#POm&9dqOGAk#o0mbGED zT1aQNo5*m!Om8_e$kMlq<;upvY<~U2WcCI}lUWAD9|i$b84SZfS^+wD2w5#_pwKs|914qM^7(SU1U#|b@Q(U9vNo-Yuy zqw{njkJrM}xADLEjDYemU)q_boSx?U7+&9Sx=|v)_6`)4K@;~MiKzRn28|CJjmD#w zAK`D~lZM(UJTs1{(Dp+X?5o;-g@uKjCPI&$goeCei@^l97q9`u$m{k@U|<2K0Y1%q zA1<(71~{#5YwtB0A9NqfZGV5fekz~tJ#yx9iG3`8i*c_Q_ojQS_vat^L^^uwDW^hi z*0$E37cN3eZiZPfin+G0nl0%Sbp?w;=xoOL3R+Krs06T#iAHus9MYjkoIv-YA?o6I z7zz4+i~p1q2Y}CACxAKp2g7gQm;ULm>)cO&+nxCK^L1j^iO1Ac6Ajk0+Wg&#$G50C zA;u`cIKduR*lzk#E=)yDV(0jH*E>*EkGcWs;nW6t;sh@x6ZS~(qENU|Jchhwt`)D- zQH(m|h7$yu2CAe7^>fG$4`qYmi}Yf0Hl6&0t@HKG?BaSdpRM5adUMV5uQD+_gOY(&@Z`sT$5N462O3+ z&_kJO_ajMy$4}nw=9XzYoKlvc#_13!V=NV5vAK3i0_w} zNsWaGCt&V254#tW6Rn+oQA1%1WPKV9#WvX&?}Akv({o(u{4n(7Z5`5WzVB;%Td)e> zcQqUzcDb9dSa#CQxo2CLm?l+JksOX+5VQuwj|^uR2wrd%sBdya=|1m8uUyoO2%@Nu z7vH)#ume|00WYmu8J95Gs1R4OZGgL~x-|Rj9`+qIuE{cwQD#vB3RYw?2DYiuqB|4? z@8N}xf#R)ljB0kg1adfyFz*6n5#h$cS(e1@Qxkqe`e*NV3|hLI{CSZrfUHvuNX$_E*uw9>>!-GsZLC zbP*53ZyuqKz;o~*oHJu*?OjrBMON#XoO8bK+?{Y53j-5Xuvo#*{8D#@pt%8+K&0da zmx9ZP!wNN!r~*vNYilNB2njyubb?tpJ)I4YJ7Fp`_tw zus+e5Laj)r9SOQyuaQ#sATQK~h=p9jx{Oi+k=LY@kr7I=Oqk1BczF2Tw~sXNS2;p? zOmQw0E8+pbPy$adWCI)Yv1Ty`qtJlomacMVlf`?^j96qGHo~MZr>u~c64qiZGFEKe z>p>@wt&Ae3IYvz}+T=2|;YFXMKqa!WGS6#SohPsYDz2Z~=@lFYwp=C2pz{oUW1eJNHQlu= zzDoD|j!VEDXa3o2a^miZJC6LLU^cOL<|IRZI665Ep(_S_&;uMS22ZEqzSC-V%>DV< zXdVXPSvc)X=VSkLIyr%^RG5=VnZXB6Qj{{e#3`W&F*H_Y#!Z!=QRu-Y6*wViI6ePm zIGa>1UO5-%zLP?iWm;inXryuMvi^BxD4pTVf37aMEQt2#3ePcxxK8rM2;oPK-;1)6ln})a2j%hpLA4ovy^)DKcEut(#wOC~C+H ze_rA&>!=X9fi7-H%=@}rI6+m{KhUU>T$yZ9m668R1ouxljU=sR-QNV8bg-;g;ggDNNRm zQ_Z1y#_fy6_2OX-le{zq%W!;4dNKS~;$&**4(H<_fQS2V3$8~sSHW)*{bkqm_5PcA zJo?=8_PodT=6Uz&ynEO4?s(5C(T?M>_rBFQ#NI6tM2hVAxbqeW>*!VpvfRVJ2j2bX zClmb9@ZPgv?;Y=^3`4lG`+T>Z(;x)`ypQP{r9fZM6MdZKiMw72tOYv8kF)UI)jdh^ z4_#{x68zm1km9TBf_F(^nURz%Yy(JOFEtrO_!g#H5(>4&YU^@4Ryz<)Q`>0@?J53m z^L%q?U;Gc#Z5FoZbtJ8Hez;D*#eC4zv@jnwH5C08^HEdN!q_pXBWPhh-HG|EscB(8 yX=+-29yB#A%$H3~3)9jN#_kC9>Fb@C)*QC{95yj6&CyQH=$huwf|Avjofl diff --git a/obsolete/lispusers/TEDITKEY b/obsolete/lispusers/TEDITKEY deleted file mode 100644 index a5761430..00000000 --- a/obsolete/lispusers/TEDITKEY +++ /dev/null @@ -1,1862 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) - -(FILECREATED "14-Oct-2023 14:53:17" {WMEDLEY}TEDITKEY.;4 93014 - - :EDIT-BY rmk - - :CHANGES-TO (FNS \SEL.LINEDESC) - - :PREVIOUS-DATE "24-Oct-2022 15:25:58" {WMEDLEY}TEDITKEY.;2) - - -(* ; " -Copyright (c) 1985-1987 by Xerox Corporation. -") - -(PRETTYCOMPRINT TEDITKEYCOMS) - -(RPAQQ TEDITKEYCOMS - [(COMS - -(* ;;; "This is the Lyric-and-later version of TEditKey") -) - (COMS (* ; - "functions for affecting the selection") - (FNS NTHCAR \TEXTOBJ.WINDEX \TK.PREVSCREEN \TK.UNDERLINE.SEL.ON \TK.UNDERLINE.SEL.OFF - \TK.BOLD.SEL.ON \TK.BOLD.SEL.OFF \TK.ITALIC.SEL.ON \TK.ITALIC.SEL.OFF - \TK.SMALLERSEL \TK.LARGERSEL \TK.SUPERSCRIPTSEL \TK.SUBSCRIPTSEL \TK.DEFAULTSSEL - \TK.DEL.WORD.FORWARD \TK.UCASE.SEL \TK.CAPITALISE.SEL \CAPITALISE \TK.LCASE.SEL) - (* ; - "functions for affecting the paralooks of the selection") - (FNS \TK.CENTER.SEL \TK.CENTER.SEL.REV \TK.NEST \TK.UNNEST)) - (COMS (* ; - "functions for affecting (and displaying) the caret character looks") - (FNS \TK.SHOWCARETLOOKS \TK.BOLD.CARET.ON \TK.BOLD.CARET.OFF \TK.ITALIC.CARET.ON - \TK.ITALIC.CARET.OFF \TK.UNDERLINE.CARET.ON \TK.UNDERLINE.CARET.OFF - \TK.SUPERSCRIPT.CARET \TK.SUBSCRIPT.CARET \TK.SMALLER.CARET \TK.LARGER.CARET - \TK.DEFAULTS.CARET \TK.FONT1 \TK.FONT2 \TK.FONT3 \TK.SETCARETFONT \TK.FONT4 - \TK.FONT5 \TK.FONT6 \TK.FONT7 \TK.FONT8) - (* ; - "the functions which aren't currently used, which toggle the caret looks") - (FNS \TK.BOLDTOGGLE \TK.ITALICTOGGLE \TK.UNDERLINETOGGLE)) - (COMS (* ; - "functions dealing with the default looks") - (FNS \TK.SETDEFAULTLOOKS)) - (COMS (* ; - "functions for positioning within a document") - (FNS GOTONEXTTTYWINDOW \TK.NEXTLINE \TK.PREVLINE \TK.GOTODOCBEGIN \TK.GOTODOCEND - \TK.GOTOLINEBEGIN \TK.GOTOLINEEND \TK.PREVCHAR \TK.NEXTCHAR \TK.FORWARD.WORD - \TK.BACK.WORD \TK.SELECT.ALL)) - (COMS (* ; "other utilities") - (FNS \TK.FIND \TK.REDISPLAY \TK.DELLINEFORWARD \TK.OPENLINE \TK.DELCHARFORWARD - \TK.TRANSPOSECHARS)) - (COMS (* ; - "little selection utilities etc., for building hacks") - (FNS \SEL.LIMIT \TK.SETFILEPTR.TO.CARET \SEL.LINEDESC) - (MACROS \SEL.LIMIT.FORWARD \TK.ONOROFF \LINEDESC.LAST.REAL.CHAR)) - (COMS (* ; "fns for the key interface itself") - (FNS \SHIFTACTION \ACTION TEDITKEY.INSTALL TEDITKEY.DEINSTALL \TK.ACTIONTOCHARCODE - \TK.BUILD.MENU \TK.HELP \TK.SETFONTINLOOKS WRITE.CHARDESC.AUX CHARDESC - TEDITKEY.CONFIGURE \TK.ADDKEY \TK.CHANGEKEY \TK.APPLYPENDING \TK.NTHFONT) - (* ; "redefinition of system junk") - (FNS METASHIFT)) - - (* ;; "(\TK.BOLDTOGGLE (##H ##h) 'toggle Bold caret looks') (\TK.ITALICTOGGLE (##i ##I) 'toggle Italic caret looks') (\TK.SUPERSCRIPT.CARET (##^) 'Superscript the caret looks') (\TK.SUBSCRIPT.CARET (##_) 'Subscript the caret looks')") - - (FNS TEDIT.FULL.FIND) - [VARS \TK.WHITESPACE (TEDIT.INTERRUPTS `((%, (CHARCODE ^G) - ERROR) - (%, (CHARCODE ^C) - HELP] - (CONSTANTS (\TK.WHITESPACE 22)) - (INITVARS (TEDITKEY.VERBOSE T) - (TEDITKEY.METAKEY 'TAB) - (TEDITKEY.LOCKTOGGLEKEY NIL) - (TEDITKEY.NESTWIDTH 36) - (\TK.SIZEINCREMENT 2) - (TEDITKEY.OFFSETINCREMENT 3) - (TEDITKEY.FONTS '(TIMESROMAN HELVETICA GACHA MODERN CLASSIC TERMINAL SYMBOL HIPPO)) - (TEDITKEY.FNKEYFLG T)) - (MACROS METACODE CONTROLCODE LCMETACODE) - (INITVARS (\TK.SELKEY 'OPEN) - (\TK.PENDING)) - [INITVARS [TEDITKEY.KEYBINDINGS `((\TK.FONT1 (%##1) - %, - (CONCAT "change to font " (\TK.NTHFONT 1))) - (\TK.FONT2 (%##2) - %, - (CONCAT "change to font " (\TK.NTHFONT 2))) - (\TK.FONT3 (%##3) - %, - (CONCAT "change to font " (\TK.NTHFONT 3))) - (\TK.FONT4 (%##4) - %, - (CONCAT "change to font " (\TK.NTHFONT 4))) - (\TK.FONT5 (%##5) - %, - (CONCAT "change to font " (\TK.NTHFONT 5))) - (\TK.FONT6 (%##6) - %, - (CONCAT "change to font " (\TK.NTHFONT 6))) - (\TK.FONT7 (%##7) - %, - (CONCAT "change to font " (\TK.NTHFONT 7))) - (\TK.FONT8 (%##8) - %, - (CONCAT "change to font " (\TK.NTHFONT 8))) - NIL - (\TK.DEFAULTS.CARET (%##/) - "restore the default caret looks") - (\TK.SMALLER.CARET (%##9) - "decrease the caret font size") - (\TK.LARGER.CARET (%##0) - "increase the caret font size") - (\TK.SHOWCARETLOOKS (%##=) - "display the current caret looks") - NIL - (\TK.REDISPLAY (%##R %##r) - "Restore the display") - (\TK.HELP (%##?) - "displays the current key bindings") - NIL - (\TK.PREVCHAR (^B ^b) - "Back one character") - (\TK.NEXTCHAR (^F ^f) - "Forward one character") - (\TK.FORWARD.WORD (%##F %##f) - "Forward one word") - (\TK.BACK.WORD (%##B %##b) - "Back one word") - (\TK.GOTOLINEBEGIN (^A ^a) - "go to stArt of line") - (\TK.GOTOLINEEND (^E ^e) - "go to End of line") - (\TK.PREVLINE (^P ^p) - "go to Previous line") - (\TK.NEXTLINE (^N ^n) - "go to Next line") - (\TK.GOTODOCBEGIN (%##<) - "start of document") - (\TK.GOTODOCEND (%##>) - "end of document") - (\TK.SELECT.ALL (%##S %##s) - "Select whole document") - NIL - (\TK.DELLINEFORWARD (^K ^k) - "Kill line") - (\TK.OPENLINE (^O ^o) - "Open up blank line") - (\TK.DELCHARFORWARD (^D ^d) - "Delete character forward") - (\TK.DEL.WORD.FORWARD (%##D %##d) - "Delete word forward") - (\TK.TRANSPOSECHARS (^T ^t) - "Transpose characters") - NIL NIL (\TK.NEST (|##[|) - "indents margins (nest)") - (\TK.UNNEST (|##]|) - "exdents margins (unnest)") - (\TK.CENTER.SEL (%##J %##j) - "alter Justification") - (\TK.UCASE.SEL (%##U %##u) - "Uppercasify selection") - (\TK.CAPITALISE.SEL (%##C %##c) - "Capitalize selection") - (\TK.LCASE.SEL (%##L %##l) - "Lowercasify selection") - (GET.OBJ.FROM.USER (%##O %##o) - "insert Object"] - [TEDITKEY.DLION.KEYACTIONS `((STOP (%, (CHARCODE ^G) - %, - (CHARCODE ^C) - NOLOCKSHIFT)) - (OPEN (%, (CHARCODE 2,1) - %, - (CHARCODE 2,41) - NOLOCKSHIFT)) - (FONT FONTDOWN . FONTUP) - (KEYBOARD USERMODE1DOWN . USERMODE1UP] - (COMS - (* ;; "(TEDITKEY.FNKEYACTIONS (BQUOTE ((CENTER (, (CHARCODE ##^B), (CHARCODE ##^C))) (BOLD (, (CHARCODE ##^D), (CHARCODE ##^E) NOLOCKSHIFT)) (ITALICS (, (CHARCODE ##^F), (CHARCODE ##^G) NOLOCKSHIFT)) (UNDERLINE (, (CHARCODE ##^H), (CHARCODE ##^I) NOLOCKSHIFT)) (SUPERSCRIPT (, (CHARCODE ##^J), (CHARCODE ##^K) NOLOCKSHIFT)) (SUBSCRIPT (, (CHARCODE ##^L), (CHARCODE ##^N) NOLOCKSHIFT)) (LARGER (, (CHARCODE ##^O), (CHARCODE ##^P) NOLOCKSHIFT)) (DEFAULTS (, (CHARCODE ##^Q), (CHARCODE ##^R) NOLOCKSHIFT)) (BS (, (CHARCODE ^H), (CHARCODE ^D) NOLOCKSHIFT)))))") -) - [TEDITKEY.DLION.KEYBINDINGS '(((\ACTION 'OPEN) - \TK.OPENLINE) - ((\ACTION 'HELP) - \TK.HELP) - ((\ACTION 'MARGINS) - \TK.NEST) - ((\SHIFTACTION 'MARGINS) - \TK.UNNEST) - ((\SHIFTACTION 'NEXT) - GOTONEXTTTYWINDOW] - [TEDITKEY.FNKEYBINDINGS '(((\ACTION 'DEFAULTS) - \TK.DEFAULTSSEL) - ((\SHIFTACTION 'DEFAULTS) - \TK.SETDEFAULTLOOKS] - (COMS - (* ;; "NOT NEEDED (TEDITKEY.DLION.KEYSYNTAX (QUOTE (((\ACTION (QUOTE NEXT)) NEXT) ((\ACTION (QUOTE UNDO)) UNDO) ((\ACTION (QUOTE BS)) CHARDELETE))))") -) - [TEDITKEY.DORADO.KEYACTIONS `((BS (%, (CHARCODE ^H) - %, - (CHARCODE ^H))) - (BLANK-BOTTOM (%, (CHARCODE %##^A) - %, - (CHARCODE %##^A))) - (BLANK-TOP FONTDOWN . FONTUP) - (BLANK-MIDDLE USERMODE1DOWN . USERMODE1UP) - (CENTER (2,101 2,141 NOLOCKSHIFT)) - (BOLD (2,102 2,142 NOLOCKSHIFT)) - (ITALICS (2,103 2,143 NOLOCKSHIFT)) - (UNDERLINE (2,106 2,146 NOLOCKSHIFT)) - (SUPERSCRIPT (2,113 2,153 NOLOCKSHIFT)) - (SUBSCRIPT (2,114 2,154 NOLOCKSHIFT)) - (LARGER (2,110 2,150 NOLOCKSHIFT)) - (DEFAULTS (2,115 2,155 NOLOCKSHIFT] - (TEDITKEY.DORADO.KEYSYNTAX '(((CHARCODE %##N) - NEXT) - ((CHARCODE %##n) - NEXT) - ((\ACTION 'BLANK-BOTTOM) - UNDO) - ((\ACTION 'BS) - CHARDELETE] - (P (TEDITKEY.INSTALL)) - (P (\TK.BUILD.MENU)) - (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA) - (NLAML) - (LAMA METASHIFT]) - - - -(* ;;; "This is the Lyric-and-later version of TEditKey") - - - - -(* ; "functions for affecting the selection") - -(DEFINEQ - -(NTHCAR - [LAMBDA (LIST N) (* gbn "10-Oct-85 20:54") - (CAR (NTH LIST N]) - -(\TEXTOBJ.WINDEX - [LAMBDA (TEXTOBJ) (* gbn "10-Oct-85 20:51") - - (* * returns the number which is the position in the list textobj%:\window - indicating which window had the last selection in it. - This number is then an index into line descriptor lists etc.) - - (bind (CURW _ (fetch SELWINDOW of TEXTOBJ)) for J from 1 as W in (fetch \WINDOW of TEXTOBJ) - until (EQ W CURW) do NIL finally (RETURN J]) - -(\TK.PREVSCREEN - [LAMBDA (STREAM TEXTOBJ SEL) (* gbn "10-Oct-85 00:10") - (* moves the selection up one line) - (PROG (THIS PREV) - - (* get the selection on the screen so that it has a line descriptor) - - (TEDIT.NORMALIZECARET STREAM SEL) - (if [SETQ THIS (CAR (MKLIST (fetch L1 of SEL] - then (* empty docs have no line descriptors) - (SETQ PREV (fetch PREVLINE of THIS)) - [if (ZEROP (fetch CHARLIM of PREV)) - then - - (* we need to back format because this is a fake line descriptor) - - (\BACKFORMAT (CAR (fetch LINES of TEXTOBJ)) - TEXTOBJ - (fetch SELWINDOW of TEXTOBJ)) - (SETQ PREV (fetch PREVLINE of THIS)) - (* (SETQ PREV (replace PREVLINE of - THIS with (\FORMATLINE TEXTOBJ NIL - (ADD1 (fetch CHARLIM of THIS))))))] - (TEDIT.NORMALIZECARET STREAM (TEDIT.SETSEL STREAM - (IMIN (IPLUS (fetch CHAR1 of PREV) - (IDIFFERENCE (\SEL.LIMIT SEL) - (fetch CHAR1 of THIS))) - (fetch CHARLIM of PREV)) - 0]) - -(\TK.UNDERLINE.SEL.ON - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "19-Mar-85 12:01") - (COND - ((SHIFTDOWNP 'FONT) - (\TK.FONT4 TEXTSTREAM TEXTOBJ SEL)) - ((SHIFTDOWNP 'USERMODE1) - (\TK.UNDERLINE.CARET.ON TEXTSTREAM TEXTOBJ SEL)) - (T (* do the real function of \tk.underlineon which happens when neither Keyboard - nor font is held) - (TEDIT.LOOKS TEXTSTREAM '(UNDERLINE ON) SEL]) - -(\TK.UNDERLINE.SEL.OFF - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "19-Mar-85 12:01") - (COND - ((SHIFTDOWNP 'FONT) - (\TK.FONT4 TEXTSTREAM TEXTOBJ SEL)) - ((SHIFTDOWNP 'USERMODE1) - (\TK.UNDERLINE.CARET.OFF TEXTSTREAM TEXTOBJ SEL)) - (T (* do the real function of \tk.underlineon which happens when neither Keyboard - nor font is held) - (TEDIT.LOOKS TEXTSTREAM '(UNDERLINE OFF) SEL]) - -(\TK.BOLD.SEL.ON - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "19-Mar-85 12:01") - (COND - ((SHIFTDOWNP 'FONT) - (\TK.FONT2 TEXTSTREAM TEXTOBJ SEL)) - ((SHIFTDOWNP 'USERMODE1) (* do the caret looks case) - (\TK.BOLD.CARET.ON TEXTSTREAM TEXTOBJ SEL)) - (T (* do the real function of \tk.boldon which happens when neither Keyboard nor - font is held) (* acts on the selection) - (TEDIT.LOOKS TEXTSTREAM '(WEIGHT BOLD) SEL]) - -(\TK.BOLD.SEL.OFF - [LAMBDA (TEXTSTREAM TEXTOBJ SEL CHARCODE) (* gbn "19-Mar-85 12:02") - (COND - ((SHIFTDOWNP 'FONT) - (\TK.FONT2 TEXTSTREAM TEXTOBJ SEL)) - ((SHIFTDOWNP 'USERMODE1) (* do the caret looks case) - (\TK.BOLD.CARET.OFF TEXTSTREAM TEXTOBJ SEL)) - (T (* do the real function of \tk.boldon which happens when neither Keyboard nor - font is held) (* acts on the selection) - (TEDIT.LOOKS TEXTSTREAM '(WEIGHT MEDIUM) SEL]) - -(\TK.ITALIC.SEL.ON - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "19-Mar-85 12:02") - (COND - ((SHIFTDOWNP 'FONT) - (\TK.FONT3 TEXTSTREAM TEXTOBJ SEL)) - ((SHIFTDOWNP 'USERMODE1) - (\TK.ITALIC.CARET.ON TEXTSTREAM TEXTOBJ SEL)) - (T (TEDIT.LOOKS TEXTSTREAM '(SLOPE ITALIC) SEL]) - -(\TK.ITALIC.SEL.OFF - [LAMBDA (TEXTSTREAM TEXTOBJ SEL CHARCODE) (* gbn "19-Mar-85 12:02") - (COND - ((SHIFTDOWNP 'FONT) - (\TK.FONT3 TEXTSTREAM TEXTOBJ SEL)) - ((SHIFTDOWNP 'USERMODE1) - (\TK.ITALIC.CARET.OFF TEXTSTREAM TEXTOBJ SEL)) - (T (TEDIT.LOOKS TEXTSTREAM '(SLOPE REGULAR) SEL]) - -(\TK.SMALLERSEL - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "16-Feb-85 21:47") - (COND - ((SHIFTDOWNP 'FONT) - (\TK.FONT7 TEXTSTREAM TEXTOBJ SEL)) - ((SHIFTDOWNP 'USERMODE1) (* do the caret looks case) - (\TK.SMALLER.CARET TEXTSTREAM TEXTOBJ SEL)) - (T (* do the real function of \TK.SUPERSCRIPTSEL which happens when neither - Keyboard nor font is held) (* acts on the selection) - (TEDIT.LOOKS TEXTSTREAM (LIST 'SIZEINCREMENT (IMINUS \TK.SIZEINCREMENT)) - SEL]) - -(\TK.LARGERSEL - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "16-Feb-85 21:47") - (COND - ((SHIFTDOWNP 'FONT) - (\TK.FONT7 TEXTSTREAM TEXTOBJ SEL)) - ((SHIFTDOWNP 'USERMODE1) (* do the caret looks case) - (\TK.LARGER.CARET TEXTSTREAM TEXTOBJ SEL)) - (T (* do the real function of \TK.LARGER.SEL which happens when neither Keyboard - nor font is held) (* acts on the selection) - (TEDIT.LOOKS TEXTSTREAM (LIST 'SIZEINCREMENT \TK.SIZEINCREMENT) - SEL]) - -(\TK.SUPERSCRIPTSEL - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "16-Feb-85 21:56") - (COND - ((SHIFTDOWNP 'FONT) - (\TK.FONT5 TEXTSTREAM TEXTOBJ SEL)) - ((SHIFTDOWNP 'USERMODE1) (* do the caret looks case) - (\TK.SUPERSCRIPT.CARET TEXTSTREAM TEXTOBJ SEL)) - (T (* do the real function of \TK.SUPERSCRIPTSEL which happens when neither - Keyboard nor font is held) (* acts on the selection) - (TEDIT.LOOKS TEXTSTREAM (LIST 'OFFSETINCREMENT TEDITKEY.OFFSETINCREMENT) - SEL]) - -(\TK.SUBSCRIPTSEL - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "16-Feb-85 21:42") - (COND - ((SHIFTDOWNP 'FONT) - (\TK.FONT6 TEXTSTREAM TEXTOBJ SEL)) - ((SHIFTDOWNP 'USERMODE1) (* do the caret looks case) - (\TK.SUBSCRIPT.CARET TEXTSTREAM TEXTOBJ SEL)) - (T (* do the real function of \TK.SUPERSCRIPTSEL which happens when neither - Keyboard nor font is held) (* acts on the selection) - (TEDIT.LOOKS TEXTSTREAM (LIST 'OFFSETINCREMENT (MINUS TEDITKEY.OFFSETINCREMENT)) - SEL]) - -(\TK.DEFAULTSSEL - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "16-Feb-85 21:55") - (* acts on the selection) - (COND - ((SHIFTDOWNP 'FONT) - (\TK.FONT8 TEXTSTREAM TEXTOBJ SEL)) - ((SHIFTDOWNP 'USERMODE1) (* do the caret looks case) - (\TK.DEFAULTS.CARET TEXTSTREAM TEXTOBJ SEL)) - (T (* acts on the selection) - (PROG ((LOOKS (create CHARLOOKS using TEDIT.DEFAULT.CHARLOOKS))) - (TEDIT.CARETLOOKS TEXTSTREAM LOOKS) - (TEDIT.LOOKS TEXTSTREAM LOOKS SEL]) - -(\TK.DEL.WORD.FORWARD - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "20-Mar-85 00:45") - - (* * Deletes from here to the end of the first word Refers to the syntax - classes of the characters according to the TEDIT.WORDBOUND.READTABLE) - - (PROG (HERE) - - (* position the file ptr at the (character after the) caret of the selection) - - (\TK.SETFILEPTR.TO.CARET TEXTSTREAM TEXTOBJ SEL) - - (* record this position as the beginning of the word - (to make the beginning of the selection)) - - (SETQ HERE (ADD1 (GETFILEPTR TEXTSTREAM))) (* skip the whitespace) - (while [AND (NOT (EOFP TEXTSTREAM)) - (EQ \TK.WHITESPACE (TEDIT.WORDGET (\PEEKBIN TEXTSTREAM T] - do (BIN TEXTSTREAM)) - - (* find out what syntax class the first letter of the word has. - The end of the word is marked by a change of syntax classes) - - (if (NOT (EOFP TEXTSTREAM)) - then (SETQ CLASS (TEDIT.WORDGET (\PEEKBIN TEXTSTREAM T))) - (while [AND (NOT (EOFP TEXTSTREAM)) - (EQ CLASS (TEDIT.WORDGET (\PEEKBIN TEXTSTREAM T] - do (BIN TEXTSTREAM))) - (TEDIT.SETSEL TEXTSTREAM HERE (ADD1 (IDIFFERENCE (GETFILEPTR TEXTSTREAM) - HERE)) - 'RIGHT) - (TEDIT.DELETE TEXTSTREAM) - (TEDIT.NORMALIZECARET TEXTOBJ]) - -(\TK.UCASE.SEL - [LAMBDA (STREAM TEXTOBJ SEL) (* gbn "20-Mar-85 00:46") - (* uppercasifies the selection) - (PROG ((STR (TEDIT.SEL.AS.STRING STREAM SEL)) - (POS (fetch CH# of SEL)) - (LEN (fetch DCH of SEL)) - (POINT (fetch POINT of SEL))) - (TEDIT.DELETE STREAM SEL) - (TEDIT.INSERT STREAM (U-CASE STR)) - (TEDIT.SETSEL STREAM POS LEN POINT) - (TEDIT.NORMALIZECARET TEXTOBJ]) - -(\TK.CAPITALISE.SEL - [LAMBDA (STREAM TEXTOBJ SEL) (* gbn "24-Feb-86 16:57") - (* capitalises the selection) - (PROG ((STR (TEDIT.SEL.AS.STRING STREAM SEL)) - (POS (fetch (SELECTION CH#) of SEL)) - (LEN (fetch (SELECTION DCH) of SEL)) - (POINT (fetch (SELECTION POINT) of SEL))) - (TEDIT.DELETE STREAM SEL) - (TEDIT.INSERT STREAM (\CAPITALISE STR)) - (TEDIT.SETSEL STREAM POS LEN POINT) - (TEDIT.NORMALIZECARET TEXTOBJ]) - -(\CAPITALISE - [LAMBDA (STR) (* gbn "24-Feb-86 16:56") - - (* * capitalises a string) - - (SELECTQ (NCHARS STR) - (0 STR) - (1 (U-CASE STR)) - (CONCAT (U-CASE (NTHCHAR STR 1)) - (L-CASE (SUBSTRING STR 2]) - -(\TK.LCASE.SEL - [LAMBDA (STREAM TEXTOBJ SEL) (* gbn "20-Mar-85 00:46") - (* uppercasifies the selection) - (PROG ((STR (TEDIT.SEL.AS.STRING STREAM SEL)) - (POS (fetch CH# of SEL)) - (LEN (fetch DCH of SEL)) - (POINT (fetch POINT of SEL))) - (TEDIT.DELETE STREAM SEL) - (TEDIT.INSERT STREAM (L-CASE STR)) - (TEDIT.SETSEL STREAM POS LEN POINT) - (TEDIT.NORMALIZECARET TEXTOBJ]) -) - - - -(* ; "functions for affecting the paralooks of the selection") - -(DEFINEQ - -(\TK.CENTER.SEL - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "27-Feb-85 18:17") - (COND - ((SHIFTDOWNP 'FONT) - (\TK.FONT1 TEXTSTREAM TEXTOBJ SEL)) - (T (* makes the current paragraph - centered) - (PROG (LOOKS OLDQUAD NEWQUAD NEWQUADS (SAVECH# (fetch CH# of SEL)) - (SAVEDCH (fetch DCH of SEL))) - (for PARA in (\PARAS.IN.SEL SEL TEXTOBJ) - do (SETQ LOOKS (TEDIT.GET.PARALOOKS TEXTSTREAM PARA)) - (SETQ OLDQUAD (LISTGET LOOKS 'QUAD)) - [SETQ NEWQUAD (CADR (MEMB OLDQUAD (CONSTANT '(LEFT JUSTIFIED CENTERED LEFT] - (LISTPUT LOOKS 'QUAD NEWQUAD) - (SETQ PARASEL (TEDIT.SETSEL TEXTSTREAM PARA 1)) - (TEDIT.PARALOOKS TEXTSTREAM LOOKS PARASEL) - (push NEWQUADS NEWQUAD)) - (TEDIT.SETSEL TEXTSTREAM SAVECH# SAVEDCH) - (if TEDITKEY.VERBOSE - then (TEDIT.PROMPTPRINT TEXTSTREAM (DREVERSE NEWQUADS) - T]) - -(\TK.CENTER.SEL.REV - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn " 7-Jun-85 21:34") - (COND - ((SHIFTDOWNP 'FONT) - (\TK.FONT1 TEXTSTREAM TEXTOBJ SEL)) - (T (* * acts like center.sel but cycles in the opposite direction) - (PROG (LOOKS OLDQUAD NEWQUAD NEWQUADS (SAVECH# (fetch CH# of SEL)) - (SAVEDCH (fetch DCH of SEL))) - (for PARA in (\PARAS.IN.SEL SEL TEXTOBJ) - do (SETQ LOOKS (TEDIT.GET.PARALOOKS TEXTSTREAM PARA)) - (SETQ OLDQUAD (LISTGET LOOKS 'QUAD)) - [SETQ NEWQUAD (CADR (MEMB OLDQUAD (CONSTANT '(LEFT CENTERED JUSTIFIED LEFT] - (LISTPUT LOOKS 'QUAD NEWQUAD) - (SETQ PARASEL (TEDIT.SETSEL TEXTSTREAM PARA 1)) - (TEDIT.PARALOOKS TEXTSTREAM LOOKS PARASEL) - (push NEWQUADS NEWQUAD)) - (TEDIT.SETSEL TEXTSTREAM SAVECH# SAVEDCH) - (if TEDITKEY.VERBOSE - then (TEDIT.PROMPTPRINT TEXTSTREAM (DREVERSE NEWQUADS) - T]) - -(\TK.NEST - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "27-Feb-85 18:24") - (PROG (LOOKS (SAVECH# (fetch CH# of SEL)) - (SAVEDCH (fetch DCH of SEL))) - (for PARA in (\PARAS.IN.SEL SEL TEXTOBJ) - do (SETQ LOOKS (TEDIT.GET.PARALOOKS TEXTSTREAM PARA)) - (LISTPUT LOOKS 'LEFTMARGIN (IPLUS (LISTGET LOOKS 'LEFTMARGIN) - TEDITKEY.NESTWIDTH)) - (LISTPUT LOOKS '1STLEFTMARGIN (IPLUS (LISTGET LOOKS '1STLEFTMARGIN) - TEDITKEY.NESTWIDTH)) - (LISTPUT LOOKS 'RIGHTMARGIN (IMAX 0 (IDIFFERENCE (LISTGET LOOKS 'RIGHTMARGIN) - TEDITKEY.NESTWIDTH))) - (TEDIT.SETSEL TEXTSTREAM PARA 1) - (TEDIT.PARALOOKS TEXTOBJ LOOKS)) - (TEDIT.SETSEL TEXTSTREAM SAVECH# SAVEDCH]) - -(\TK.UNNEST - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "27-Feb-85 18:26") - (PROG (LOOKS RIGHT (SAVECH# (fetch CH# of SEL)) - (SAVEDCH (fetch DCH of SEL))) - (for PARA in (\PARAS.IN.SEL SEL TEXTOBJ) - do (SETQ LOOKS (TEDIT.GET.PARALOOKS TEXTSTREAM PARA)) - (LISTPUT LOOKS 'LEFTMARGIN (IMAX (IDIFFERENCE (LISTGET LOOKS 'LEFTMARGIN) - TEDITKEY.NESTWIDTH) - 0)) - (LISTPUT LOOKS '1STLEFTMARGIN (IMAX (IDIFFERENCE (LISTGET LOOKS '1STLEFTMARGIN) - TEDITKEY.NESTWIDTH) - 0)) - (SETQ RIGHT (LISTGET LOOKS 'RIGHTMARGIN)) - (if (NOT (ZEROP RIGHT)) - then (LISTPUT LOOKS 'RIGHTMARGIN (IPLUS (LISTGET LOOKS 'RIGHTMARGIN) - TEDITKEY.NESTWIDTH))) - (TEDIT.SETSEL TEXTSTREAM PARA 1) - (TEDIT.PARALOOKS TEXTOBJ LOOKS)) - (TEDIT.SETSEL TEXTSTREAM SAVECH# SAVEDCH]) -) - - - -(* ; "functions for affecting (and displaying) the caret character looks") - -(DEFINEQ - -(\TK.SHOWCARETLOOKS - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "30-Jan-85 16:06") - - (* * comment) - - (PROG ((LOOKS (fetch CARETLOOKS of TEXTOBJ))) - (TEDIT.PROMPTPRINT TEXTSTREAM (CONCAT (\TK.DESCRIBEFONT (fetch CLFONT of LOOKS)) - (if (AND (fetch CLOFFSET of LOOKS) - (NEQ (fetch CLOFFSET of LOOKS) - 0)) - then (CONCAT " offset " (fetch CLOFFSET - of LOOKS)) - else "") - (if (fetch CLOLINE of LOOKS) - then " overlined" - else "") - (if (fetch CLULINE of LOOKS) - then " underlined" - else "")) - T) - (RETURN]) - -(\TK.BOLD.CARET.ON - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "16-Feb-85 20:54") - (PROG [(LOOKS (create CHARLOOKS using (fetch CARETLOOKS of TEXTOBJ] - (replace CLBOLD of LOOKS with T) - (if (\TK.SETFONTINLOOKS TEXTSTREAM LOOKS) - then (TEDIT.CARETLOOKS TEXTSTREAM LOOKS) - (if TEDITKEY.VERBOSE - then (\TK.SHOWCARETLOOKS TEXTSTREAM TEXTOBJ SEL)) - (RETURN) - else (RETURN]) - -(\TK.BOLD.CARET.OFF - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "16-Feb-85 20:54") - (PROG [(LOOKS (create CHARLOOKS using (fetch CARETLOOKS of TEXTOBJ] - (replace CLBOLD of LOOKS with NIL) - (if (\TK.SETFONTINLOOKS TEXTSTREAM LOOKS) - then (TEDIT.CARETLOOKS TEXTSTREAM LOOKS) - (if TEDITKEY.VERBOSE - then (\TK.SHOWCARETLOOKS TEXTSTREAM TEXTOBJ SEL)) - (RETURN) - else (RETURN]) - -(\TK.ITALIC.CARET.ON - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "16-Feb-85 22:20") - (PROG [(LOOKS (create CHARLOOKS using (fetch CARETLOOKS of TEXTOBJ] - (replace CLITAL of LOOKS with T) - (if (\TK.SETFONTINLOOKS TEXTSTREAM LOOKS) - then (TEDIT.CARETLOOKS TEXTSTREAM LOOKS) - (if TEDITKEY.VERBOSE - then (\TK.SHOWCARETLOOKS TEXTSTREAM TEXTOBJ SEL)) - (RETURN) - else (RETURN]) - -(\TK.ITALIC.CARET.OFF - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "16-Feb-85 22:19") - (PROG [(LOOKS (create CHARLOOKS using (fetch CARETLOOKS of TEXTOBJ] - (replace CLITAL of LOOKS with NIL) - (if (\TK.SETFONTINLOOKS TEXTSTREAM LOOKS) - then (TEDIT.CARETLOOKS TEXTSTREAM LOOKS) - (if TEDITKEY.VERBOSE - then (\TK.SHOWCARETLOOKS TEXTSTREAM TEXTOBJ SEL)) - (RETURN) - else (RETURN]) - -(\TK.UNDERLINE.CARET.ON - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "16-Feb-85 17:59") - (PROG [(LOOKS (create CHARLOOKS using (fetch CARETLOOKS of TEXTOBJ] - (replace CLULINE of LOOKS with T) - (TEDIT.CARETLOOKS TEXTSTREAM LOOKS) - (if TEDITKEY.VERBOSE - then (\TK.SHOWCARETLOOKS TEXTSTREAM TEXTOBJ SEL)) - (RETURN]) - -(\TK.UNDERLINE.CARET.OFF - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "16-Feb-85 18:01") - (PROG [(LOOKS (create CHARLOOKS using (fetch CARETLOOKS of TEXTOBJ] - (replace CLULINE of LOOKS with NIL) - (TEDIT.CARETLOOKS TEXTSTREAM LOOKS) - (if TEDITKEY.VERBOSE - then (\TK.SHOWCARETLOOKS TEXTSTREAM TEXTOBJ SEL)) - (RETURN]) - -(\TK.SUPERSCRIPT.CARET - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "16-Feb-85 22:25") - (PROG [(LOOKS (create CHARLOOKS using (fetch CARETLOOKS of TEXTOBJ] - (if (fetch CLOFFSET of LOOKS) - then (add (fetch CLOFFSET of LOOKS) - TEDITKEY.OFFSETINCREMENT) - else (replace CLOFFSET of LOOKS with TEDITKEY.OFFSETINCREMENT)) - (TEDIT.CARETLOOKS TEXTSTREAM LOOKS) - (if TEDITKEY.VERBOSE - then (\TK.SHOWCARETLOOKS TEXTSTREAM TEXTOBJ SEL)) - (RETURN]) - -(\TK.SUBSCRIPT.CARET - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "16-Feb-85 22:26") - (PROG [(LOOKS (create CHARLOOKS using (fetch CARETLOOKS of TEXTOBJ] - (if (fetch CLOFFSET of LOOKS) - then (add (fetch CLOFFSET of LOOKS) - (IMINUS TEDITKEY.OFFSETINCREMENT)) - else (replace CLOFFSET of LOOKS with (IMINUS TEDITKEY.OFFSETINCREMENT))) - (TEDIT.CARETLOOKS TEXTSTREAM LOOKS) - (if TEDITKEY.VERBOSE - then (\TK.SHOWCARETLOOKS TEXTSTREAM TEXTOBJ SEL)) - (RETURN]) - -(\TK.SMALLER.CARET - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "16-Feb-85 21:45") - (PROG [(LOOKS (create CHARLOOKS using (fetch CARETLOOKS of TEXTOBJ] - (replace CLSIZE of LOOKS with (IMAX 4 (IDIFFERENCE (fetch CLSIZE of LOOKS) - 2))) - (if (NOT (\TK.SETFONTINLOOKS TEXTSTREAM LOOKS)) - then (RETURN)) - (TEDIT.CARETLOOKS TEXTSTREAM LOOKS) - (if TEDITKEY.VERBOSE - then (\TK.SHOWCARETLOOKS TEXTSTREAM TEXTOBJ SEL)) - (RETURN]) - -(\TK.LARGER.CARET - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "16-Feb-85 22:37") - (PROG [(LOOKS (create CHARLOOKS using (fetch CARETLOOKS of TEXTOBJ] - (replace CLSIZE of LOOKS with (IPLUS \TK.SIZEINCREMENT (fetch CLSIZE of LOOKS))) - (if (NOT (\TK.SETFONTINLOOKS TEXTSTREAM LOOKS)) - then (RETURN)) - (TEDIT.CARETLOOKS TEXTSTREAM LOOKS) - (if TEDITKEY.VERBOSE - then (\TK.SHOWCARETLOOKS TEXTSTREAM TEXTOBJ SEL)) - (RETURN]) - -(\TK.DEFAULTS.CARET - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "16-Feb-85 21:54") - (PROGN (TEDIT.CARETLOOKS TEXTSTREAM (create CHARLOOKS using TEDIT.DEFAULT.CHARLOOKS)) - (if TEDITKEY.VERBOSE - then (\TK.SHOWCARETLOOKS TEXTSTREAM TEXTOBJ SEL]) - -(\TK.FONT1 - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "27-Jan-85 17:39") - (\TK.SETCARETFONT TEXTOBJ (CAR (NTH TEDITKEY.FONTS 1]) - -(\TK.FONT2 - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "27-Jan-85 17:43") - (\TK.SETCARETFONT TEXTOBJ (CAR (NTH TEDITKEY.FONTS 2]) - -(\TK.FONT3 - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "27-Jan-85 17:40") - (\TK.SETCARETFONT TEXTOBJ (CAR (NTH TEDITKEY.FONTS 3]) - -(\TK.SETCARETFONT - [LAMBDA (TEXTOBJ FONTNAME) (* gbn "19-Mar-85 12:02") - - (* temporary hack. If this function is called when the keyboard shift is down, - then it refers to the caret looks, otherwise the selection) - - (if (SHIFTDOWNP 'USERMODE1) - then [PROG [(LOOKS (create CHARLOOKS using (fetch CARETLOOKS of TEXTOBJ] - (replace CLNAME of LOOKS with FONTNAME) - (if (\TK.SETFONTINLOOKS TEXTOBJ LOOKS) - then - - (* we found the font, install it as the caret font and tell the user) - - (if TEDITKEY.VERBOSE - then (TEDIT.PROMPTPRINT TEXTOBJ FONTNAME T)) - (RETURN (TEDIT.CARETLOOKS TEXTSTREAM LOOKS] - else (TEDIT.LOOKS TEXTSTREAM (LIST 'FAMILY FONTNAME) - SEL]) - -(\TK.FONT4 - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "27-Jan-85 17:40") - (\TK.SETCARETFONT TEXTOBJ (CAR (NTH TEDITKEY.FONTS 4]) - -(\TK.FONT5 - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "27-Jan-85 17:41") - (\TK.SETCARETFONT TEXTOBJ (CAR (NTH TEDITKEY.FONTS 5]) - -(\TK.FONT6 - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "27-Jan-85 17:41") - (\TK.SETCARETFONT TEXTOBJ (CAR (NTH TEDITKEY.FONTS 6]) - -(\TK.FONT7 - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "27-Jan-85 17:42") - (\TK.SETCARETFONT TEXTOBJ (CAR (NTH TEDITKEY.FONTS 7]) - -(\TK.FONT8 - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "27-Jan-85 17:43") - (\TK.SETCARETFONT TEXTOBJ (CAR (NTH TEDITKEY.FONTS 8]) -) - - - -(* ; "the functions which aren't currently used, which toggle the caret looks") - -(DEFINEQ - -(\TK.BOLDTOGGLE - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "16-Feb-85 20:54") - - (* * toggles boldness in the caret looks) - - (PROG [(LOOKS (create CHARLOOKS using (fetch CARETLOOKS of TEXTOBJ] - (replace CLBOLD of LOOKS with (NOT (fetch CLBOLD of LOOKS))) - (if (\TK.SETFONTINLOOKS TEXTSTREAM LOOKS) - then (if TEDITKEY.VERBOSE - then (TEDIT.PROMPTPRINT TEXTSTREAM (CONCAT "bold: " - (\TK.ONOROFF (fetch CLBOLD - of LOOKS))) - T)) - (RETURN (TEDIT.CARETLOOKS TEXTSTREAM LOOKS)) - else (RETURN]) - -(\TK.ITALICTOGGLE - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "27-Jan-85 19:23") - (PROG [(LOOKS (create CHARLOOKS using (fetch CARETLOOKS of TEXTOBJ] - (replace CLITAL of LOOKS with (NOT (fetch CLITAL of LOOKS))) - (if (\TK.SETFONTINLOOKS TEXTSTREAM LOOKS) - then (if TEDITKEY.VERBOSE - then (TEDIT.PROMPTPRINT TEXTSTREAM (CONCAT "italic: " - (\TK.ONOROFF (fetch CLITAL - of LOOKS))) - T)) - (RETURN (TEDIT.CARETLOOKS TEXTSTREAM LOOKS)) - else (RETURN]) - -(\TK.UNDERLINETOGGLE - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "27-Jan-85 19:23") - (PROG [(LOOKS (create CHARLOOKS using (fetch CARETLOOKS of TEXTOBJ] - (replace CLULINE of LOOKS with (NOT (fetch CLULINE of LOOKS))) - (if TEDITKEY.VERBOSE - then (TEDIT.PROMPTPRINT TEXTSTREAM (CONCAT "underline: " (\TK.ONOROFF (fetch CLULINE - of LOOKS))) - T)) - (RETURN (TEDIT.CARETLOOKS TEXTSTREAM LOOKS]) -) - - - -(* ; "functions dealing with the default looks") - -(DEFINEQ - -(\TK.SETDEFAULTLOOKS - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "16-Feb-85 23:00") - - (* * sets TEDIT.DEFAULT.CHARLOOKS to have the looks of the current selection) - - (PROG NIL - (SETQ TEDIT.DEFAULT.CHARLOOKS (COPY (fetch CARETLOOKS of TEXTOBJ))) - (if TEDITKEY.VERBOSE - then (\TK.SHOWCARETLOOKS TEXTSTREAM TEXTOBJ SEL)) - (RETURN]) -) - - - -(* ; "functions for positioning within a document") - -(DEFINEQ - -(GOTONEXTTTYWINDOW - [LAMBDA NIL (* gbn " 7-May-85 16:19") - - (* * puts the tty in the next appropriate process in the chain) - - (PROG ((CURRENT (TTY.PROCESS))) - (SETQ CANDIDATES (LIST NIL)) - [MAP.PROCESSES (FUNCTION (LAMBDA (PROC) - (PROG (W) - (if (AND (SETQ W (PROCESSPROP PROC 'WINDOW)) - (OPENWP W) - (WINDOWPROP W 'PROCESS)) - then (NCONC1 CANDIDATES PROC] - (SETQ NEW (CDR (MEMBER CURRENT CANDIDATES))) - (SETQ NEW (if NEW - then (CAR NEW) - else (CADR CANDIDATES))) - (TTY.PROCESS NEW) - (FLASHWINDOW (PROCESSPROP NEW 'WINDOW) - 1 1 GRAYSHADE) (* for (PROC _ CURRENT) repeatwhile - (NEQ PROC CURRENT) do - (SETQ W (PROCESSPROP - (SETQ PROC (fetch NEXTPROCHANDLE of - PROC)) (QUOTE WINDOW))) - (PRINTOUT T (PROCESSPROP PROC - (QUOTE NAME))) (if (AND W - (OPENWP W) (WINDOWPROP W - (QUOTE PROCESS))) then - (* this window would probably be - willing to take the tty if clicked in, - so give the process the tty) - (TTY.PROCESS PROC) (FLASHWINDOW W 1 - NIL GRAYSHADE) (RETURN))) - ]) - -(\TK.NEXTLINE - [LAMBDA (STREAM TEXTOBJ SEL) (* gbn "10-Oct-85 22:47") - (* moves the selection down one line) - (PROG (THIS NEXT) - - (* get the selection on the screen so that it has a line descriptor) - - (TEDIT.NORMALIZECARET STREAM SEL) - (SETQ THIS (\SEL.LINEDESC SEL)) - (if THIS - then - - (* an empty doc has no line descriptors, even after normalizing) - - (SETQ NEXT (fetch NEXTLINE of THIS)) - [if (NOT NEXT) - then (* there isn't already a descriptor - for this line) - (SETQ NEXT (replace NEXTLINE of THIS - with (\FORMATLINE TEXTOBJ NIL (ADD1 (fetch CHARLIM - of THIS] - (if NEXT - then - - (* if there are no more characters, then there still may not be a descriptor - when we call \formatline) - - (TEDIT.NORMALIZECARET STREAM - (TEDIT.SETSEL STREAM (IMIN (IPLUS (fetch CHAR1 of NEXT) - (IDIFFERENCE (\SEL.LIMIT SEL) - (fetch CHAR1 of THIS))) - (ADD1 (\LINEDESC.LAST.REAL.CHAR NEXT))) - 0 - 'LEFT]) - -(\TK.PREVLINE - [LAMBDA (STREAM TEXTOBJ SEL) (* gbn "10-Oct-85 22:15") - (* moves the selection up one line) - (PROG (THIS PREV) - - (* get the selection on the screen so that it has a line descriptor) - - (TEDIT.NORMALIZECARET STREAM SEL) - (if (SETQ THIS (\SEL.LINEDESC SEL)) - then (* empty docs have no line descriptors) - (SETQ PREV (fetch PREVLINE of THIS)) - [if (ZEROP (fetch CHARLIM of PREV)) - then - - (* we need to back format because this is a fake line descriptor) - - [\BACKFORMAT (NTHCAR (fetch LINES of TEXTOBJ) - (\TEXTOBJ.WINDEX TEXTOBJ)) - TEXTOBJ - (fetch PTOP of (DSPCLIPPINGREGION NIL (fetch SELWINDOW - of TEXTOBJ] - (SETQ PREV (fetch PREVLINE of THIS)) - (* (SETQ PREV (replace PREVLINE of - THIS with (\FORMATLINE TEXTOBJ NIL - (ADD1 (fetch CHARLIM of THIS))))))] - (TEDIT.NORMALIZECARET STREAM (TEDIT.SETSEL STREAM - (IMIN (IPLUS (fetch CHAR1 of PREV) - (IDIFFERENCE (\SEL.LIMIT SEL) - (fetch CHAR1 of THIS))) - (fetch CHARLIM of PREV)) - 0]) - -(\TK.GOTODOCBEGIN - [LAMBDA (STREAM TEXTOBJ SEL) (* gbn "13-Dec-84 11:24") - (* positions at the beginning of a - document) - (TEDIT.SETSEL STREAM 0 0) - (TEDIT.NORMALIZECARET TEXTOBJ]) - -(\TK.GOTODOCEND - [LAMBDA (STREAM TEXTOBJ SEL) (* gbn " 7-Jun-85 16:32") - (* positions at the end of a document) - (TEDIT.SETSEL STREAM (ADD1 (fetch TEXTLEN of TEXTOBJ)) - 0 - 'LEFT) - (TEDIT.NORMALIZECARET STREAM]) - -(\TK.GOTOLINEBEGIN - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "11-Mar-85 15:04") - - (* * positions the cursor at the beginning of line) - - (PROG (CH) - (TEDIT.NORMALIZECARET TEXTOBJ SEL) - (SETQ CH (fetch CHAR1 of (\SEL.LINEDESC SEL))) (* (if (fetch CR\END of - (fetch L1 of SEL)) then - (* there is a CR at the end of this - line, we want to position before it) - (SETQ CH (SUB1 CH)))) - (TEDIT.SETSEL TEXTSTREAM CH 0 'LEFT]) - -(\TK.GOTOLINEEND - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn " 7-Jun-85 15:47") - - (* * positions the cursor at the end of line) - - (PROG ((POINT 'RIGHT) - LN) - (TEDIT.NORMALIZECARET TEXTOBJ SEL) - (if (SETQ LN (\SEL.LINEDESC SEL)) - then (* empty docs have no linedescriptors) - (SETQ CH (fetch CHARLIM of LN)) - (if (fetch CR\END of LN) - then - - (* there is not a CR at the end of this line, we want to position to the right - of the last char) - - (SETQ POINT 'LEFT)) - (TEDIT.SETSEL TEXTSTREAM CH 1 POINT]) - -(\TK.PREVCHAR - [LAMBDA (STREAM TEXTOBJ SEL) (* gbn "19-Mar-85 12:16") - (* moves the selection back one char) - (PROG NIL - (TEDIT.SETSEL STREAM (IMAX 0 (SUB1 (\SEL.LIMIT.FORWARD SEL))) - 0 - 'LEFT) - - (* I don't think this should be necessary, but there are cases where the caret - is not normalised) - - (TEDIT.NORMALIZECARET TEXTOBJ SEL]) - -(\TK.NEXTCHAR - [LAMBDA (STREAM TEXTOBJ SEL) (* gbn "20-Mar-85 00:48") - (* moves the selection back one char) - (PROG NIL - - (* Note%: addition. does *not* distribute with Min Do not pessimize this!) - - (TEDIT.SETSEL STREAM (IMIN (ADD1 (fetch TEXTLEN of TEXTOBJ)) - (ADD1 (\SEL.LIMIT.FORWARD SEL))) - 0 - 'LEFT) - (TEDIT.NORMALIZECARET TEXTOBJ]) - -(\TK.FORWARD.WORD - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "20-Mar-85 00:48") - - (* * moves the caret one word forward. Refers to the syntax classes of the - characters according to the TEDIT.WORDBOUND.READTABLE) - - (PROG (HERE) - - (* position the file ptr at the (character after the) caret of the selection) - - (\TK.SETFILEPTR.TO.CARET TEXTSTREAM TEXTOBJ SEL) (* skip the whitespace) - (while [AND (NOT (EOFP TEXTSTREAM)) - (EQ \TK.WHITESPACE (TEDIT.WORDGET (\PEEKBIN TEXTSTREAM T] - do (BIN TEXTSTREAM)) - - (* record this position as the beginning of the word - (to make the beginning of the selection)) - - (SETQ HERE (ADD1 (GETFILEPTR TEXTSTREAM))) - - (* find out what syntax class the first letter of the word has. - The end of the word is marked by a change of syntax classes) - - (if (NOT (EOFP TEXTSTREAM)) - then (SETQ CLASS (TEDIT.WORDGET (\PEEKBIN TEXTSTREAM T))) - (while [AND (NOT (EOFP TEXTSTREAM)) - (EQ CLASS (TEDIT.WORDGET (\PEEKBIN TEXTSTREAM T] - do (BIN TEXTSTREAM))) - (TEDIT.SETSEL TEXTSTREAM HERE (ADD1 (IDIFFERENCE (GETFILEPTR TEXTSTREAM) - HERE)) - 'RIGHT) - (TEDIT.NORMALIZECARET TEXTOBJ]) - -(\TK.BACK.WORD - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "20-Mar-85 00:49") - - (* * moves the caret one word back Refers to the syntax classes of the - characters according to the TEDIT.WORDBOUND.READTABLE) - - (PROG (HERE) - - (* position the file ptr at the (character after the) caret of the selection) - - (\TK.SETFILEPTR.TO.CARET TEXTSTREAM TEXTOBJ SEL) (* skip the whitespace) - (while [AND (NOT (ZEROP (GETFILEPTR TEXTSTREAM))) - (EQ \TK.WHITESPACE (TEDIT.WORDGET (\BACKPEEKBIN TEXTSTREAM T] - do (\BACKBIN TEXTSTREAM)) - - (* record this position as the beginning of the word - (to make the beginning of the selection)) - - (SETQ HERE (GETFILEPTR TEXTSTREAM)) - - (* find out what syntax class the last letter of the word has. - The end of the word is marked by a change of syntax classes) - - (if (NOT (ZEROP (GETFILEPTR TEXTSTREAM))) - then (SETQ CLASS (TEDIT.WORDGET (\BACKPEEKBIN TEXTSTREAM T))) - (while [AND (NOT (ZEROP (GETFILEPTR TEXTSTREAM))) - (EQ CLASS (TEDIT.WORDGET (\BACKPEEKBIN TEXTSTREAM T] - do (\BACKBIN TEXTSTREAM))) - (TEDIT.SETSEL TEXTSTREAM (ADD1 (GETFILEPTR TEXTSTREAM)) - (IDIFFERENCE HERE (GETFILEPTR TEXTSTREAM)) - 'LEFT) - (TEDIT.NORMALIZECARET TEXTOBJ]) - -(\TK.SELECT.ALL - [LAMBDA (STREAM TEXTOBJ SEL) (* gbn "24-Feb-86 17:11") - (* positions at the end of a document) - (TEDIT.SETSEL STREAM 0 (ADD1 (fetch TEXTLEN of TEXTOBJ)) - 'LEFT]) -) - - - -(* ; "other utilities") - -(DEFINEQ - -(\TK.FIND - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "10-Dec-84 12:38") - - (* just calls the normal tedit.find starting at the right of the current - selection) - - (TEDIT.FULL.FIND TEXTSTREAM]) - -(\TK.REDISPLAY - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "12-Mar-85 14:27") - - (* * simply redisplays the window in question.) - - (\TEDIT.REPAINTFN (CAR (MKATOM (fetch \WINDOW of TEXTOBJ]) - -(\TK.DELLINEFORWARD - [LAMBDA (STREAM TEXTOBJ SEL) (* gbn "13-Dec-84 11:56") - - (* deletes from the caret to the end of this line) - - (PROG (HERE DESC) - (TEDIT.NORMALIZECARET TEXTOBJ) - (SETQ HERE (\SEL.LIMIT.FORWARD SEL)) - (SETQ DESC (\SEL.LINEDESC SEL)) - (SETQ SEL (TEDIT.SETSEL STREAM HERE (IDIFFERENCE (fetch CHARLIM of DESC) - HERE))) - (TEDIT.DELETE STREAM SEL]) - -(\TK.OPENLINE - [LAMBDA (STREAM TEXTOBJ SEL) (* gbn "30-Jan-85 18:36") - (TEDIT.INSERT STREAM (CONSTANT (CHARCODE EOL))) - (\TK.PREVCHAR STREAM TEXTOBJ SEL]) - -(\TK.DELCHARFORWARD - [LAMBDA (STREAM TEXTOBJ SEL) (* gbn "20-Mar-85 00:50") - - (* * deletes one character forward from the caret) - - (PROG (HERE) - (SETQ SEL (TEDIT.SETSEL STREAM (\SEL.LIMIT.FORWARD SEL) - 1)) - (TEDIT.DELETE STREAM SEL) - (TEDIT.NORMALIZECARET TEXTOBJ]) - -(\TK.TRANSPOSECHARS - [LAMBDA (STREAM TEXTOBJ SEL) (* gbn "20-Mar-85 00:51") - - (* * transposes the two characters on either side of the point, unless it is - the end of a line, in which case it transposes the two characters before the - point) - - (PROG ((KEEPCHARPOS (\SEL.LIMIT.FORWARD SEL)) - KEEPCHAR LINEDESC) - (TEDIT.NORMALIZECARET TEXTOBJ SEL) - - (* get the line that the point of the selection is on) - - (SETQ LINEDESC (\SEL.LINEDESC SEL)) - (if (ILESSP (\LINEDESC.LAST.REAL.CHAR LINEDESC) - KEEPCHARPOS) - then - - (* the point is after the last real char on this line, so transpose the two - before the point.) - - (add KEEPCHARPOS -1)) - (SETQ KEEPCHAR (TEDIT.SEL.AS.STRING STREAM (TEDIT.SETSEL STREAM KEEPCHARPOS 1))) - (if (AND (IGREATERP KEEPCHARPOS 1) - (IGEQ (fetch TEXTLEN of TEXTOBJ) - KEEPCHARPOS)) - then (TEDIT.DELETE STREAM) - (TEDIT.INSERT STREAM KEEPCHAR (SUB1 KEEPCHARPOS)) - (TEDIT.SETSEL STREAM KEEPCHARPOS 1 'RIGHT)) - (TEDIT.NORMALIZECARET TEXTOBJ SEL]) -) - - - -(* ; "little selection utilities etc., for building hacks") - -(DEFINEQ - -(\SEL.LIMIT - [LAMBDA (SEL) (* gbn " 8-Mar-85 12:58") - - (* returns the character that delimits this selection. - The first char if the point is left else the last) - - (if (EQ (fetch POINT of SEL) - 'LEFT) - then (fetch CH# of SEL) - else (SUB1 (fetch CHLIM of SEL]) - -(\TK.SETFILEPTR.TO.CARET - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "23-Feb-85 15:24") - - (* * makes sure that the fileptr is positioned at character on the right of the - CARET of the selection) - - (* NOTE THAT FILEPTR's are one less than the corresponding char# in a sel) - - (SETFILEPTR TEXTSTREAM (SUB1 (\SEL.LIMIT.FORWARD SEL]) - -(\SEL.LINEDESC - [LAMBDA (SEL) (* ; "Edited 14-Oct-2023 14:53 by rmk") - (* ; "Edited 24-Oct-2022 15:24 by rmk") - (* gbn "10-Oct-85 20:57") - -(* ;;; "Returns the line descriptor of the point of the selection in the last selected window") - - (NTHCAR (if (EQ (fetch (SELECTION POINT) of SEL) - 'LEFT) - then (fetch (SELECTION L1) of SEL) - else (fetch (SELECTION LN) of SEL)) - (\TEXTOBJ.WINDEX (fetch (SELECTION SELTEXTOBJ) of SEL]) -) -(DECLARE%: EVAL@COMPILE - -(PUTPROPS \SEL.LIMIT.FORWARD MACRO [LAMBDA (SEL) (* gbn "13-Dec-84 11:43") - (* returns the character in front of - the caret (ch# for left and chlim for - right)) - (if (EQ (fetch POINT of SEL) - 'LEFT) - then (fetch CH# of SEL) - else (fetch CHLIM of SEL]) - -(PUTPROPS \TK.ONOROFF MACRO [LAMBDA (FLG) - (if FLG - then "on" - else "off"]) - -(PUTPROPS \LINEDESC.LAST.REAL.CHAR MACRO [LAMBDA (LINEDESC) - (if (fetch CR\END of LINEDESC) - then (* there is a CR at the end so the - last real char CHLIM-1) - (SUB1 (fetch CHARLIM of LINEDESC)) - else (fetch CHARLIM of LINEDESC]) -) - - - -(* ; "fns for the key interface itself") - -(DEFINEQ - -(\SHIFTACTION - [LAMBDA (KEYNAME) (* gbn "16-Feb-85 16:55") - - (* returns the character code generated by this keyname when typed shifted) - - (CADAR (KEYACTION KEYNAME]) - -(\ACTION - [LAMBDA (KEYNAME) (* gbn "16-Feb-85 16:54") - - (* RETURNS THE CHARACTER CODE GENERATED BY THIS KEYNAME WHEN TYPED UNSHIFTED) - - (CAAR (KEYACTION KEYNAME]) - -(TEDITKEY.INSTALL - [LAMBDA (READTABLE) (* gbn " 1-Apr-86 22:36") - - (* * installs the TEDITKEYBINDINGS on the readtable) - - (PROG [(READTABLE (OR READTABLE TEDIT.READTABLE)) - INTERRUPT - (FNKEYITEM '(Function% Keys 'BUILDFNKEYS "Bring up the DLion fn keys window"] - - (* I think that in Koto, all this is done by the system. - The times, they are a-changin'! (PROGN (* Tell everyone who cares to let ^h be - the backspace character) (if (SETQ INTERRUPT - (GETINTERRUPT (CHARCODE ^H))) then (printout T "Interrupt on ^H disabled") - (SETINTERRUPT (CHARCODE ^H) (QUOTE NIL))) - (SETSYNTAX 8 (QUOTE CHARDELETE) \PROMPTFORWORDTTBL) - (SETSYNTAX 8 (QUOTE CHARDELETE) ASKUSERTTBL) - (SETSYNTAX 8 (QUOTE CHARDELETE) \ORIGTERMTABLE) - (SETSYNTAX 8 (QUOTE CHARDELETE) \PRIMTERMTABLE) - (SETSYNTAX 8 (QUOTE CHARDELETE) DEDITTTBL) - (SETINTERRUPT (CHARCODE ^G) (QUOTE HELP)))) - - (METASHIFT T) - - (* TEditKey redefines METASHIFT to operate on TEDITKEY.METAKEY instead of the - swat (bottom-blank) key) - - (* install the functions on the main keyboard, that is, not the extra dlion - keys) - - [for TRIPLE in TEDITKEY.KEYBINDINGS - do (COND - (TRIPLE (* NILs in the list are for formatting - the menu) - (for KEY in (CADR TRIPLE) - do (APPLY* 'TEDIT.SETFUNCTION (EVAL `(CHARCODE %, KEY)) - (CAR TRIPLE) - READTABLE] (* the function keys are set up by - default (MODIFY.KEYACTIONS - TEDITKEY.FNKEYACTIONS)) - (PROGN (* install the nextttywindow hack) - (* INTERRUPTCHAR (\SHIFTACTION - (QUOTE NEXT)) (QUOTE - (GOTONEXTTTYWINDOW))) - (* So that non-tedits know about the - game) - ) - (SELECTQ (MACHINETYPE) - (DANDELION [if TEDITKEY.LOCKTOGGLEKEY - then (KEYACTION TEDITKEY.LOCKTOGGLEKEY '(LOCKTOGGLE] - (if (AND (BOUNDP 'DLIONFNKEYS) - (OPENWP DLIONFNKEYS)) - then - - (* this machine has real fn keys so close the fake ones) - - (CLOSEW DLIONFNKEYS)) - - (* adjust so that the dlion extra keys return meta control codes) - - (MODIFY.KEYACTIONS TEDITKEY.DLION.KEYACTIONS) - (for PAIR in TEDITKEY.DLION.KEYBINDINGS - do (TEDIT.SETFUNCTION (EVAL (CAR PAIR)) - (CADR PAIR) - READTABLE)) (* hang functions off the dlion extra - keys (e.g. italics, bold)) - (for PAIR in TEDITKEY.FNKEYBINDINGS do (TEDIT.SETFUNCTION - (EVAL (CAR PAIR)) - (CADR PAIR) - READTABLE)) - - (* set next to do next, undo to do undo etc) - (* unnecessary in KOTO - (for PAIR in TEDITKEY.DLION.KEYSYNTAX - do (TEDIT.SETSYNTAX (EVAL - (CAR PAIR)) (CADR PAIR) READTABLE))) - - (* remove the menu item that may have already been installed) - (* you can remove non-existent items - with impunity) - (TEDIT.REMOVE.MENUITEM TEDIT.DEFAULT.MENU FNKEYITEM) - (PROGN (* install the nextttywindow hack) - (INTERRUPTCHAR (\SHIFTACTION 'NEXT) - '(GOTONEXTTTYWINDOW)) (* So that non-tedits know about the - game) - )) - (PROGN (MODIFY.KEYACTIONS TEDITKEY.DORADO.KEYACTIONS) - (for PAIR in TEDITKEY.DORADO.KEYSYNTAX do (TEDIT.SETSYNTAX (EVAL (CAR PAIR)) - (CADR PAIR) - READTABLE)) - (for PAIR in TEDITKEY.FNKEYBINDINGS do (TEDIT.SETFUNCTION (EVAL (CAR PAIR)) - (CADR PAIR) - READTABLE)) - (TEDIT.ADD.MENUITEM TEDIT.DEFAULT.MENU FNKEYITEM))) - (SELECTQ (MACHINETYPE) - ((DORADO DOLPHIN) (* bring up the fake function keys) - (FILESLOAD (SYSLOAD FROM VALUEOF LISPUSERSDIRECTORIES) - DLIONFNKEYS) - (COND - ([AND TEDITKEY.FNKEYFLG (NOT (AND (BOUNDP 'DLIONFNKEYS) - (OPENWP DLIONFNKEYS] - - (* if he has the flag set to do so, then check if there is a fnkey window up - yet, and build one if there isn't) - - (BUILDFNKEYS)))) - (PROGN NIL)) - - (* install the forms necessary to re-establish the correct bindings on a new - machine if this is sysout'ed) - (* if (NOT (ASSOC (QUOTE - TEDITKEY.INSTALL) AFTERMAKESYSFORMS)) - then (push AFTERMAKESYSFORMS - (QUOTE (TEDITKEY.INSTALL)))) - [COND - ((NOT (ASSOC 'TEDITKEY.INSTALL AFTERSYSOUTFORMS)) - (push AFTERSYSOUTFORMS '(TEDITKEY.INSTALL] - (RETURN (CONCAT TEDITKEY.METAKEY "'s action is now Meta. TEditKey actions and key bindings installed. Type #? or press the HELP key to see keybindings" - ]) - -(TEDITKEY.DEINSTALL - [LAMBDA (ARGS |...|) (* gbn "10-Oct-85 00:04") - (MODIFY.KEYACTIONS \ORIGKEYACTIONS) - (SELECTQ (MACHINETYPE) - (DANDELION (MODIFY.KEYACTIONS \DLIONKEYACTIONS)) - (PROGN NIL]) - -(\TK.ACTIONTOCHARCODE - [LAMBDA (FN) (* gbn "23-Feb-85 17:17") - - (* takes the name of the function and looks in TEDITKEY.KEYBINDINGS to find out - which CHARCODE generates that behaviour) - - (PROG ((PAIR (ASSOC FN TEDITKEY.KEYBINDINGS))) - (RETURN (if PAIR - then [EVAL `(CHARCODE %, (CAADR PAIR] - else NIL]) - -(\TK.BUILD.MENU - [LAMBDA (KEYBINDINGS) (* gbn "23-Feb-85 17:17") - (* builds a menu to display the key - bindings) - (PROG (ITEMS) - [for TRIPLE in TEDITKEY.KEYBINDINGS - do (COND - (TRIPLE (push ITEMS (LIST (CADDR TRIPLE) - `(QUOTE %, TRIPLE) - "Function which is performed by the key(s) to the right of the mouse" - )) - (push ITEMS (LIST (for DESC in (CADR TRIPLE) collect (CHARDESC DESC)) - NIL))) - (T - - (* insert a space since NIL marks logical divisions in the list) - - (push ITEMS '("" NIL "")) - (push ITEMS '("" NIL ""] - (SETQ \TK.MENU (create MENU - ITEMS _ (DREVERSE ITEMS) - MENUCOLUMNS _ 2 - CENTERFLG _ T - MENUFONT _ (FONTCREATE 'HELVETICA 10]) - -(\TK.HELP - [LAMBDA (WHATEVER) (* gbn " 5-Nov-84 18:17") - (* brings up a menu of the available - key bindings) - (MENU \TK.MENU]) - -(\TK.SETFONTINLOOKS - [LAMBDA (TEXTSTREAM LOOKS) (* gbn "11-Oct-85 07:12") - - (* * rebuilds the font field of looks according to the values in the fields) - - (PROG (NEWFONT) - (SETQ NEWFONT (FONTCREATE (OR (fetch CLNAME of LOOKS) - (FONTPROP (fetch CLFONT of LOOKS) - 'FAMILY)) - (fetch CLSIZE of LOOKS) - (LIST (if (fetch CLBOLD of LOOKS) - then 'BOLD - else 'MEDIUM) - (if (fetch CLITAL of LOOKS) - then 'ITALIC - else 'REGULAR) - 'REGULAR) - NIL NIL T)) - (if (CAR NEWFONT) - then (* we got the font, so now replace it) - (RETURN (replace CLFONT of LOOKS with NEWFONT)) - else - - (* we lost, print a msg and return NIL so that the caller knows.) - - (TEDIT.PROMPTPRINT TEXTSTREAM - (CONCAT "Font not found: " (CONCAT [L-CASE (OR (fetch CLNAME of LOOKS) - (FONTPROP (fetch CLFONT - of LOOKS) - 'FAMILY] - " " - (fetch CLSIZE of LOOKS) - (if (fetch CLBOLD of LOOKS) - then 'BOLD " bold" - else "") - (if (fetch CLITAL of LOOKS) - then " italic" - else ""))) - T) - (RETURN NIL]) - -(WRITE.CHARDESC.AUX - [LAMBDA (TOKENS) (* gbn "10-Oct-85 00:20") - (COND - ((EQ (LENGTH TOKENS) - 1) - (CONS (CAR TOKENS) - NIL)) - (T (SELECTQ (CAR TOKENS) - (%# [CONS "meta " (WRITE.CHARDESC.AUX (COND - ((AND (CDR TOKENS) - (EQ (CADR TOKENS) - '%#)) - (CDDR TOKENS]) - (^ (CONS "control " (WRITE.CHARDESC.AUX (CDR TOKENS)))) - (ERROR CHARDESC " is a misunderstood character descriptor"]) - -(CHARDESC - [LAMBDA (CHARDESC) (* gbn " 7-Nov-84 14:21") - - (* takes a description in the form taken as input to charcode and writes out a - human readable form) - - (PACK (WRITE.CHARDESC.AUX (UNPACK CHARDESC]) - -(TEDITKEY.CONFIGURE - [LAMBDA NIL (* gbn " 5-Nov-84 18:58") - (PROMPTPRINT "not implemented"]) - -(\TK.ADDKEY - [LAMBDA (TRIPLE) (* gbn " 5-Nov-84 18:41") - (* dummy for now) - ]) - -(\TK.CHANGEKEY - [LAMBDA (THIS) (* gbn " 5-Nov-84 18:42") - (* DUMMY) - ]) - -(\TK.APPLYPENDING - [LAMBDA (TEXTSTREAM TEXTOBJ SEL) (* gbn "10-Dec-84 15:58") - - (* * takes the entries on \TK.PENDING, reverses them and applies them as - incremental changes to the selection.) - - (PROG ((PENDING (DREVERSE \TK.PENDING)) - (LOOKS (LIST NIL))) - (for ENTRY in PENDING do (SELECTQ ENTRY - (BOLDON (LISTPUT LOOKS 'WEIGHT 'BOLD)) - (BOLDOFF (LISTPUT LOOKS 'WEIGHT 'MEDIUM)) - (ITALICON (LISTPUT LOOKS 'SLOPE 'ITALIC)) - (ITALICOFF (LISTPUT LOOKS 'SLOPE 'REGULAR)) - (UNDERLINEON (LISTPUT LOOKS 'UNDERLINE 'ON)) - (UNDERLINEOFF (LISTPUT LOOKS 'UNDERLINE 'OFF)) - (SUPERSCRIPT (* nothing for the moment) - NIL) - (SUBSCRIPT (* nothing for the moment) - NIL) - (LARGER (* nothing for the moment) - NIL) - (SMALLER (* nothing for the moment) - NIL) - (DEFAULTS (SETQ LOOKS (\TEDIT.UNPARSE.CHARLOOKS.LIST - TEDIT.DEFAULT.CHARLOOKS))) - ((TIMESROMAN HELVETICA GACHA MODERN CLASSIC TERMINAL HIPPO - MATH) - (LISTPUT LOOKS 'FAMILY ENTRY)) - (\LISPERROR "Illegal pending operation in \TK.PENDING" ENTRY)) - ) - (SETQ \TK.PENDING NIL) - (RETURN (TEDIT.LOOKS TEXTSTREAM LOOKS SEL]) - -(\TK.NTHFONT - [LAMBDA (N) (* gbn "27-Jan-85 17:51") - (* returns the name of the nth - teditkey font) - (CAR (NTH TEDITKEY.FONTS N]) -) - - - -(* ; "redefinition of system junk") - -(DEFINEQ - -(METASHIFT - [LAMBDA FLG (* gbn " 6-Mar-85 15:43") - - (* Sets interpretation of TEDITKEY.METAKEY key to first arg, where T means - meta-shift, NIL means original setting. Returns previous setting) - - (PROG ((METASTATUS '(METADOWN . METAUP)) - OLDSETTING) - [SETQ OLDSETTING (KEYACTION TEDITKEY.METAKEY (AND (IGREATERP FLG 0) - (COND - ((EQ (ARG FLG 1) - T) - METASTATUS) - (T (OR (ARG FLG 1) - (CDR (ASSOC TEDITKEY.METAKEY - \ORIGKEYACTIONS] - (RETURN (COND - ((EQUAL OLDSETTING METASTATUS) - T) - (T OLDSETTING]) -) - - - -(* ;; -"(\TK.BOLDTOGGLE (##H ##h) 'toggle Bold caret looks') (\TK.ITALICTOGGLE (##i ##I) 'toggle Italic caret looks') (\TK.SUPERSCRIPT.CARET (##^) 'Superscript the caret looks') (\TK.SUBSCRIPT.CARET (##_) 'Subscript the caret looks')" -) - -(DEFINEQ - -(TEDIT.FULL.FIND - [LAMBDA (TEXTSTREAM SEARCHSTRING) (* gbn " 8-Mar-85 12:56") - (PROG (TARGET (TEXTOBJ (TEXTOBJ TEXTSTREAM)) - SEL CH W) (* Case sensitive search, with * and - %# wildcards) - [SETQ W (CAR (MKLIST (fetch \WINDOW of TEXTOBJ] - [SETQ TARGET (OR SEARCHSTRING (TEDIT.GETINPUT TEXTOBJ "Text to find: " (WINDOWPROP - W - ' - TEDIT.LAST.FIND.STRING - ) - (CHARCODE (EOL LF ESC] - [COND - (TARGET (SETQ SEL (fetch SEL of TEXTOBJ)) - (\SHOWSEL SEL NIL NIL) - (TEDIT.PROMPTPRINT TEXTOBJ "Searching..." T) - (SETQ CH (TEDIT.FIND TEXTOBJ (MKSTRING TARGET) - NIL NIL T)) - (COND - (CH (* We found the target text.) - (TEDIT.PROMPTPRINT TEXTOBJ "Done.") - (replace CH# of SEL with (CAR CH))(* Set up SELECTION to be the found - text) - (replace CHLIM of SEL with (ADD1 (CADR CH))) - [replace DCH of SEL with (ADD1 (IDIFFERENCE (CADR CH) - (CAR CH] - (replace POINT of SEL with 'RIGHT) - (replace CARETLOOKS of TEXTOBJ with (\TEDIT.GET.INSERT.CHARLOOKS TEXTOBJ - SEL)) - (TEDIT.RESET.EXTEND.PENDING.DELETE SEL) - (* And never pending a deletion.) - (\FIXSEL SEL TEXTOBJ) - (TEDIT.NORMALIZECARET TEXTOBJ) - (\SHOWSEL SEL NIL T) - (WINDOWPROP W 'TEDIT.LAST.FIND.STRING TARGET) - (* And get it into the window) - ) - (T (TEDIT.PROMPTPRINT TEXTOBJ "(not found)") - (\SHOWSEL SEL NIL T] - (replace \INSERTNEXTCH of TEXTOBJ with -1]) -) - -(RPAQQ \TK.WHITESPACE 22) - -(RPAQ TEDIT.INTERRUPTS `((%, (CHARCODE ^G) - ERROR) - (%, (CHARCODE ^C) - HELP))) -(DECLARE%: EVAL@COMPILE - -(RPAQQ \TK.WHITESPACE 22) - - -(CONSTANTS (\TK.WHITESPACE 22)) -) - -(RPAQ? TEDITKEY.VERBOSE T) - -(RPAQ? TEDITKEY.METAKEY 'TAB) - -(RPAQ? TEDITKEY.LOCKTOGGLEKEY NIL) - -(RPAQ? TEDITKEY.NESTWIDTH 36) - -(RPAQ? \TK.SIZEINCREMENT 2) - -(RPAQ? TEDITKEY.OFFSETINCREMENT 3) - -(RPAQ? TEDITKEY.FONTS '(TIMESROMAN HELVETICA GACHA MODERN CLASSIC TERMINAL SYMBOL HIPPO)) - -(RPAQ? TEDITKEY.FNKEYFLG T) -(DECLARE%: EVAL@COMPILE - -(PUTPROPS METACODE MACRO [LAMBDA (CHARCODE) - (LOGOR CHARCODE 128]) - -(PUTPROPS CONTROLCODE MACRO [LAMBDA (CHARCODE) - (LOGAND CHARCODE 31]) - -(PUTPROPS LCMETACODE MACRO [LAMBDA (CHARCODE) - (LOGOR 160 CHARCODE]) -) - -(RPAQ? \TK.SELKEY 'OPEN) - -(RPAQ? \TK.PENDING ) - -(RPAQ? TEDITKEY.KEYBINDINGS - `((\TK.FONT1 (%##1) - %, - (CONCAT "change to font " (\TK.NTHFONT 1))) - (\TK.FONT2 (%##2) - %, - (CONCAT "change to font " (\TK.NTHFONT 2))) - (\TK.FONT3 (%##3) - %, - (CONCAT "change to font " (\TK.NTHFONT 3))) - (\TK.FONT4 (%##4) - %, - (CONCAT "change to font " (\TK.NTHFONT 4))) - (\TK.FONT5 (%##5) - %, - (CONCAT "change to font " (\TK.NTHFONT 5))) - (\TK.FONT6 (%##6) - %, - (CONCAT "change to font " (\TK.NTHFONT 6))) - (\TK.FONT7 (%##7) - %, - (CONCAT "change to font " (\TK.NTHFONT 7))) - (\TK.FONT8 (%##8) - %, - (CONCAT "change to font " (\TK.NTHFONT 8))) - NIL - (\TK.DEFAULTS.CARET (%##/) - "restore the default caret looks") - (\TK.SMALLER.CARET (%##9) - "decrease the caret font size") - (\TK.LARGER.CARET (%##0) - "increase the caret font size") - (\TK.SHOWCARETLOOKS (%##=) - "display the current caret looks") - NIL - (\TK.REDISPLAY (%##R %##r) - "Restore the display") - (\TK.HELP (%##?) - "displays the current key bindings") - NIL - (\TK.PREVCHAR (^B ^b) - "Back one character") - (\TK.NEXTCHAR (^F ^f) - "Forward one character") - (\TK.FORWARD.WORD (%##F %##f) - "Forward one word") - (\TK.BACK.WORD (%##B %##b) - "Back one word") - (\TK.GOTOLINEBEGIN (^A ^a) - "go to stArt of line") - (\TK.GOTOLINEEND (^E ^e) - "go to End of line") - (\TK.PREVLINE (^P ^p) - "go to Previous line") - (\TK.NEXTLINE (^N ^n) - "go to Next line") - (\TK.GOTODOCBEGIN (%##<) - "start of document") - (\TK.GOTODOCEND (%##>) - "end of document") - (\TK.SELECT.ALL (%##S %##s) - "Select whole document") - NIL - (\TK.DELLINEFORWARD (^K ^k) - "Kill line") - (\TK.OPENLINE (^O ^o) - "Open up blank line") - (\TK.DELCHARFORWARD (^D ^d) - "Delete character forward") - (\TK.DEL.WORD.FORWARD (%##D %##d) - "Delete word forward") - (\TK.TRANSPOSECHARS (^T ^t) - "Transpose characters") - NIL NIL (\TK.NEST (|##[|) - "indents margins (nest)") - (\TK.UNNEST (|##]|) - "exdents margins (unnest)") - (\TK.CENTER.SEL (%##J %##j) - "alter Justification") - (\TK.UCASE.SEL (%##U %##u) - "Uppercasify selection") - (\TK.CAPITALISE.SEL (%##C %##c) - "Capitalize selection") - (\TK.LCASE.SEL (%##L %##l) - "Lowercasify selection") - (GET.OBJ.FROM.USER (%##O %##o) - "insert Object"))) - -(RPAQ? TEDITKEY.DLION.KEYACTIONS - `((STOP (%, (CHARCODE ^G) - %, - (CHARCODE ^C) - NOLOCKSHIFT)) - (OPEN (%, (CHARCODE 2,1) - %, - (CHARCODE 2,41) - NOLOCKSHIFT)) - (FONT FONTDOWN . FONTUP) - (KEYBOARD USERMODE1DOWN . USERMODE1UP))) - -(RPAQ? COMS - (* ;; "(TEDITKEY.FNKEYACTIONS (BQUOTE ((CENTER (, (CHARCODE ##^B), (CHARCODE ##^C))) (BOLD (, (CHARCODE ##^D), (CHARCODE ##^E) NOLOCKSHIFT)) (ITALICS (, (CHARCODE ##^F), (CHARCODE ##^G) NOLOCKSHIFT)) (UNDERLINE (, (CHARCODE ##^H), (CHARCODE ##^I) NOLOCKSHIFT)) (SUPERSCRIPT (, (CHARCODE ##^J), (CHARCODE ##^K) NOLOCKSHIFT)) (SUBSCRIPT (, (CHARCODE ##^L), (CHARCODE ##^N) NOLOCKSHIFT)) (LARGER (, (CHARCODE ##^O), (CHARCODE ##^P) NOLOCKSHIFT)) (DEFAULTS (, (CHARCODE ##^Q), (CHARCODE ##^R) NOLOCKSHIFT)) (BS (, (CHARCODE ^H), (CHARCODE ^D) NOLOCKSHIFT)))))") -) - -(RPAQ? TEDITKEY.DLION.KEYBINDINGS - '(((\ACTION 'OPEN) - \TK.OPENLINE) - ((\ACTION 'HELP) - \TK.HELP) - ((\ACTION 'MARGINS) - \TK.NEST) - ((\SHIFTACTION 'MARGINS) - \TK.UNNEST) - ((\SHIFTACTION 'NEXT) - GOTONEXTTTYWINDOW))) - -(RPAQ? TEDITKEY.FNKEYBINDINGS '(((\ACTION 'DEFAULTS) - \TK.DEFAULTSSEL) - ((\SHIFTACTION 'DEFAULTS) - \TK.SETDEFAULTLOOKS))) - -(RPAQ? COMS - (* ;; "NOT NEEDED (TEDITKEY.DLION.KEYSYNTAX (QUOTE (((\ACTION (QUOTE NEXT)) NEXT) ((\ACTION (QUOTE UNDO)) UNDO) ((\ACTION (QUOTE BS)) CHARDELETE))))") -) - -(RPAQ? TEDITKEY.DORADO.KEYACTIONS - `((BS (%, (CHARCODE ^H) - %, - (CHARCODE ^H))) - (BLANK-BOTTOM (%, (CHARCODE %##^A) - %, - (CHARCODE %##^A))) - (BLANK-TOP FONTDOWN . FONTUP) - (BLANK-MIDDLE USERMODE1DOWN . USERMODE1UP) - (CENTER (2,101 2,141 NOLOCKSHIFT)) - (BOLD (2,102 2,142 NOLOCKSHIFT)) - (ITALICS (2,103 2,143 NOLOCKSHIFT)) - (UNDERLINE (2,106 2,146 NOLOCKSHIFT)) - (SUPERSCRIPT (2,113 2,153 NOLOCKSHIFT)) - (SUBSCRIPT (2,114 2,154 NOLOCKSHIFT)) - (LARGER (2,110 2,150 NOLOCKSHIFT)) - (DEFAULTS (2,115 2,155 NOLOCKSHIFT)))) - -(RPAQ? TEDITKEY.DORADO.KEYSYNTAX '(((CHARCODE %##N) - NEXT) - ((CHARCODE %##n) - NEXT) - ((\ACTION 'BLANK-BOTTOM) - UNDO) - ((\ACTION 'BS) - CHARDELETE))) - -(TEDITKEY.INSTALL) - -(\TK.BUILD.MENU) -(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS - -(ADDTOVAR NLAMA ) - -(ADDTOVAR NLAML ) - -(ADDTOVAR LAMA METASHIFT) -) -(PUTPROPS TEDITKEY COPYRIGHT ("Xerox Corporation" 1985 1986 1987)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (15387 27818 (NTHCAR 15397 . 15526) (\TEXTOBJ.WINDEX 15528 . 16085) (\TK.PREVSCREEN -16087 . 17997) (\TK.UNDERLINE.SEL.ON 17999 . 18479) (\TK.UNDERLINE.SEL.OFF 18481 . 18964) ( -\TK.BOLD.SEL.ON 18966 . 19558) (\TK.BOLD.SEL.OFF 19560 . 20156) (\TK.ITALIC.SEL.ON 20158 . 20506) ( -\TK.ITALIC.SEL.OFF 20508 . 20859) (\TK.SMALLERSEL 20861 . 21498) (\TK.LARGERSEL 21500 . 22131) ( -\TK.SUPERSCRIPTSEL 22133 . 22778) (\TK.SUBSCRIPTSEL 22780 . 23429) (\TK.DEFAULTSSEL 23431 . 24150) ( -\TK.DEL.WORD.FORWARD 24152 . 25748) (\TK.UCASE.SEL 25750 . 26316) (\TK.CAPITALISE.SEL 26318 . 26932) ( -\CAPITALISE 26934 . 27248) (\TK.LCASE.SEL 27250 . 27816)) (27890 32567 (\TK.CENTER.SEL 27900 . 29168) -(\TK.CENTER.SEL.REV 29170 . 30348) (\TK.NEST 30350 . 31330) (\TK.UNNEST 31332 . 32565)) (32651 42379 ( -\TK.SHOWCARETLOOKS 32661 . 33972) (\TK.BOLD.CARET.ON 33974 . 34537) (\TK.BOLD.CARET.OFF 34539 . 35105) - (\TK.ITALIC.CARET.ON 35107 . 35672) (\TK.ITALIC.CARET.OFF 35674 . 36242) (\TK.UNDERLINE.CARET.ON -36244 . 36683) (\TK.UNDERLINE.CARET.OFF 36685 . 37127) (\TK.SUPERSCRIPT.CARET 37129 . 37771) ( -\TK.SUBSCRIPT.CARET 37773 . 38431) (\TK.SMALLER.CARET 38433 . 39075) (\TK.LARGER.CARET 39077 . 39664) -(\TK.DEFAULTS.CARET 39666 . 39991) (\TK.FONT1 39993 . 40165) (\TK.FONT2 40167 . 40339) (\TK.FONT3 -40341 . 40513) (\TK.SETCARETFONT 40515 . 41507) (\TK.FONT4 41509 . 41681) (\TK.FONT5 41683 . 41855) ( -\TK.FONT6 41857 . 42029) (\TK.FONT7 42031 . 42203) (\TK.FONT8 42205 . 42377)) (42468 44800 ( -\TK.BOLDTOGGLE 42478 . 43353) (\TK.ITALICTOGGLE 43355 . 44166) (\TK.UNDERLINETOGGLE 44168 . 44798)) ( -44858 45320 (\TK.SETDEFAULTLOOKS 44868 . 45318)) (45381 58503 (GOTONEXTTTYWINDOW 45391 . 47670) ( -\TK.NEXTLINE 47672 . 49560) (\TK.PREVLINE 49562 . 51662) (\TK.GOTODOCBEGIN 51664 . 52022) ( -\TK.GOTODOCEND 52024 . 52375) (\TK.GOTOLINEBEGIN 52377 . 53161) (\TK.GOTOLINEEND 53163 . 53987) ( -\TK.PREVCHAR 53989 . 54518) (\TK.NEXTCHAR 54520 . 55084) (\TK.FORWARD.WORD 55086 . 56623) ( -\TK.BACK.WORD 56625 . 58193) (\TK.SELECT.ALL 58195 . 58501)) (58536 61575 (\TK.FIND 58546 . 58817) ( -\TK.REDISPLAY 58819 . 59077) (\TK.DELLINEFORWARD 59079 . 59619) (\TK.OPENLINE 59621 . 59828) ( -\TK.DELCHARFORWARD 59830 . 60217) (\TK.TRANSPOSECHARS 60219 . 61573)) (61644 63231 (\SEL.LIMIT 61654 - . 62069) (\TK.SETFILEPTR.TO.CARET 62071 . 62498) (\SEL.LINEDESC 62500 . 63229)) (64698 81534 ( -\SHIFTACTION 64708 . 64954) (\ACTION 64956 . 65198) (TEDITKEY.INSTALL 65200 . 72641) ( -TEDITKEY.DEINSTALL 72643 . 72906) (\TK.ACTIONTOCHARCODE 72908 . 73371) (\TK.BUILD.MENU 73373 . 74689) -(\TK.HELP 74691 . 75002) (\TK.SETFONTINLOOKS 75004 . 77479) (WRITE.CHARDESC.AUX 77481 . 78237) ( -CHARDESC 78239 . 78545) (TEDITKEY.CONFIGURE 78547 . 78702) (\TK.ADDKEY 78704 . 78904) (\TK.CHANGEKEY -78906 . 79101) (\TK.APPLYPENDING 79103 . 81209) (\TK.NTHFONT 81211 . 81532)) (81579 82740 (METASHIFT -81589 . 82738)) (82986 85812 (TEDIT.FULL.FIND 82996 . 85810))))) -STOP diff --git a/obsolete/lispusers/TEDITKEY.LCOM b/obsolete/lispusers/TEDITKEY.LCOM deleted file mode 100644 index a303ab732f7831a6389d1db7e0224645522a1e22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39424 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 to be substituted<< .) shift-NEXT transfers the TTY (which window will receive typed characters) to the next window which can accept typein. Thus one can cycle through the open text windows (mail windows, top level lisp windows, TEdit windows, etc.) without using the mouse. EXPAND expands TEdit abbreviations. (See page 20.31 of the Interlisp Reference Manual.) HELP displays a menu of the keybindings until a mouse key is clicked. UNDO acts as the TEdit UNDO syntax class. Note that it still retains its TELERAID function as does STOP. There are TEditKey operations (such as Transpose Characters) that are implemented with multiple TEdit operations. Since TEdit will UNDO only single operations, it does not fully UNDO these operations. RightArrow enters \, and | when shifted. (Recall that AGAIN is an escape key.) MARGINS indents the margins of the paragraph selected. Shift-MARGINS exdents the margins. If the right margin is a floating margin, it is left unchanged. To control the amount by which the margins are moved, see "User Switches." As well as the previous functions available on the Dandelion's special keys, the following functions are available on the standard keyboard (thus usable on the Dandelion, Dolphin, and Dorado). Each function is shown with the key that invokes it (in conjunction with the control (denoted ^) or meta (denoted #) key). Thus, for the sixth entry, holding down the metakey and hitting f (or "F") would move the caret one word forward. (To find out how to get a metakey see "User Switches" below.) #/ defaults the caret looks #= queries caret looks #9 smaller caret font #0 larger caret font ^b back character ^f forward character #b back word #f forward word ^p previous line ^n next line ^a beginning of line ^e end of line #< beginning of document #> end of document #s select whole document ^k kills line (delete from caret to end of line) ^o opens line ^d deletes character forward (also on shift backspace) #d deletes word forward (as always ^w deletes word backward) ^t transposes characters #[ indents paralooks. Also available on the MARGINS key #] exdents paralooks. Also available as shift-MARGINS #j justification change (same as CENTER key) #u uppercases selection #c capitalizes selection #l lowercases selection #o inserts object into document #? shows keybindings (same as HELP) #r restores the display Note that the positions of any of these functions can be individually changed using TEDIT.SETFUNCTION (see page 20.30 of the Interlisp Reference Manual). For wholesale customization see "User Switches" below. INTERRUPTS Any operation can be aborted by typing the STOP key. This can be used to abort font changes, GETs, PUTs, etc. A stronger form of interrupt is available as shift-STOP, which prompts the user for a menu of processes to interrupt. ^G is available as a synonym for hitting the STOP key within TEditKey. Outside of TEdit, however, ^G will continue to have the meaning specified in the user's init file. This is often the HELP interrupt, which acts as shift-STOP. Users who are accustomed to typing ^E as a soft interrupt should note that ^E moves to the end of the line. As discussed above, hitting the STOP key (or equivalently, typing ^G) accomplishes what ^E did. Since ^H is defined to be the Backspace action in TEditKey, users cannot type ^A to erase characters even outside of TEditKey (Interlisp-D currently does not allow multiple backspace characters). In addition to the changed functionality mentioned above (provided courtesy of TEditKey), the user should be aware of the following standard Interlisp-D/TEdit behavior: SAME operates as a LooksCopy mode key. First make a selection. Now to copy the looks from some other text simply hold down the SAME key, then select the source for the looks. (Paragraph looks can be copied the same way, but by making the final selection while in the left margin. This is the standard way to select a whole paragraph in TEdit.) MOVE and COPY act as mode keys for the selection mechanism. Thus the user can select the destination, then hold down the MOVE key and make a second selection. This selection will be moved (or COPY'd depending on the mode key used) to the (original) caret position. CONTROL operates as a mode key to signal deletion. This means that holding down the CONTROL key and selecting some text will delete that text when the CONTROL key is released. DELETE deletes the current selection when pressed. DORADO EQUIVALENTS Dandelion Key: Equivalent key on Dorado: OPEN ^o ( or ^O) SAME META FIND finds item in TEdit menu AGAIN ESC DELETE DEL COPY SHIFT MOVE CTRL-SHIFT PROP'S META or LOCK depending on switches NEXT #n ( or #N) EXPAND ^x (or ^X) HELP #? MARGINS #[ (unnest (which is shift-MARGINS on the Dandelion) is #] ) FONT top blank KEYBOARD middle blank UNDO bottom blank STOP ^G shift-STOP #^S (intentionally difficult to type accidentally) The function keys (CENTER, BOLD, etc.) are all available on the function key window brought up when TEditKey is loaded on a Dorado. Note that the function key window can be rebuilt on a Dorado by selecting "Function Keys" in the default TEdit menu (obtained by buttoning in the title bar of a TEdit window). USER SWITCHES TEDITKEY.METAKEY The user must choose a metakey to make use of TEditKey. The value of the variable TEDITKEY.METAKEY is the name of the key that will be your metakey. For instance to make TAB (the default) your metakey, (SETQ TEDITKEY 'TAB) before loading TEditKey. (Note that even in the standard system, TAB is available as Control-I). NOTE: METASHIFT (see page 18.9 of the Interlisp Reference Manual) is redefined to operate on TEDITKEY.METAKEY instead of on the bottom-blank key of the Dorado. The operation of TEditKey is controlled by the following (INITVARed) variables: TEDITKEY.LOCKTOGGLEKEY is the key that will be turned into a lock-toggle. If it is non-NIL, that key is set to act as a lock-toggle. Thus hitting this switches the case of the type-in. For those users who have removed the spring from their lock key, TEDITKEY.LOCKTOGGLEKEY is usually PROP'S. The action of LOCK is then made to be '(CTRLDOWN. CTRLUP) providing the user with a control key where LOCK is located and a lock toggle where PROP'S is located. TEDITKEY.FONTS is an eight-element list of the fonts that are invoked by meta-1 through meta-8. The defaults are listed above. TEDIT.DEFAULT.CHARLOOKS defines the looks that result when the DEFAULTS key is pressed or when default caret looks are requested. It is an instance of the CHARLOOKS datatype. To preset it, for instance, to TIMESROMAN 10 type the following to the Lisp top level. (SETQ TEDIT.DEFAULT.CHARLOOKS (CHARLOOKS.FROM.FONT (FONTCREATE 'TIMESROMAN 10))) However, a much simpler method is to select an instance of the desired looks and type shift-DEFAULTS. TEDITKEY.VERBOSE if T (the default), the functions that modify the caret looks print feedback in the (TEdit) prompt window. TEDITKEY.NESTWIDTH is the distance (in points) that the indent and exdent functions move the margins. Initially 36 points (0.5 inches). \TK.SIZEINCREMENT is the amount (in points) which the LARGER function increases the selection (and conversely for SMALLER). Initially 2 points. TEDITKEY.OFFSETINCREMENT is the amount (in points) which the SUBSCRIPT function raises the selection (and conversely for SUPERSCRIPT). Initially 3 points. TEDITKEY.KEYBINDINGS is the list that controls the mapping of keys to functions for the functions that are common to the Dandelion, Dorado, and Dolphin. It consists of triples of function name, list of CHARCODE-style character specifications, and a comment describing what the function does. (The comments are used by the automated menu-building tools and their inclusion is encouraged.) TEDITKEY.DLION.KEYACTIONS is the list that specifies the key actions of the non-Alto keys (to the left and right) on the Dandelion. It is the format acceptable to MODIFY.KEYACTIONS (see page 18.9 of the Interlisp Reference Manual). TEDITKEY.DLION.KEYBINDINGS is the list specifying the functions to be tied to the characters generated from above. The keynames in the CAR of each element are comments. Note that TEDIT.DLION.KEYACTIONS and TEDIT.DLION.KEYBINDINGS must be coordinated (similarly for TEDITKEY.FNKEYACTIONS and TEDITKEY.FNKEYBINDINGS). TEDIT.DLION.KEYSYNTAX is the list of syntax classes to be applied to the Dandelion keys. TEDITKEY.FNKEYACTIONS is the list that specifies the keyactions of the function keys (center, bold, etc.). TEDITKEY.FNKEYBINDINGS is analogous to TEDIT.DLION.KEYBINDINGS but for the function keys. TEDITKEY.DORADO.KEYACTIONS are the keyactions unique to the Dorado (and Dolphin). TEDITKEY.DORADO.KEYSYNTAX is analogous to TEDIT.DLION.KEYSYNTAX. The previous variables in conjunction with the following functions specify the effect of TEditKey. (TEDITKEY.INSTALL readtable) invokes the keyactions and bindings as specified by the above variables on readtable. (Readtable defaults to TEDIT.READTABLE). (\TK.BUILD.MENU) is a function that automagically builds the help menu from the values of the above variables. (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "") STARTINGPAGE# 267) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL NIL (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM)) (282 42 72 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 444 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL NIL (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM)) (282 42 72 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 444 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))))) -ÈT,È2ÈÈ2È02Èx,È,È ,È,ŠŠ8,ŠŠ8HÈÈ PAGEHEADING RUNNINGHEADCLASSICCLASSICCLASSIC -TIMESROMAN -MODERNMODERN MODERN -ÿüMODERN -ÿþMODERN -ÿþMODERN -MODERN -MODERN MODERNMODERN -    HRULE.GETFNMODERN -  - HRULE.GETFNMODERN -  - HRULE.GETFNMODERN -    HRULE.GETFNMODERN   - HRULE.GETFNMODERN   3   -& > #  -~ ¢  - -ß  - -–  - -9  - -  -0  - -x   B  C  -+  - -  - -a $ -5  - -‚ ¹  - -…      -    9 *  - -“  - -G   - -‘  - -P  - -”  - - -ñ  -5   - -@  - -1  - - -E  - -à ð       -           1  7 =  9 7 .    ! $  } :  - - - ç è Í Æ ¨  - -X  - -  -þ  - -ª  - --  -(  - -  - -  - -  - -  - -  - -  - - -  - -#  - -  - -  - -  - -=  - -  - -  - -  - -   -4 „ ¯  - - -T  -á & ` O  - -²  - -q  - -ñ Q d  - -k  - -v  - -  - -ƒ  - -r  - -²   - -#  - -C  - -U  - -C  - -7  - -' b  - - M    - -]  -3f³zº \ No newline at end of file diff --git a/obsolete/lispusers/TKDORADO b/obsolete/lispusers/TKDORADO deleted file mode 100644 index 58923d3f..00000000 --- a/obsolete/lispusers/TKDORADO +++ /dev/null @@ -1,243 +0,0 @@ -(DEFINE-FILE-INFO §PACKAGE "INTERLISP" §READTABLE "INTERLISP" §BASE 10) -(FILECREATED "16-Apr-87 17:28:48" {ERIS}LYRIC>TKDORADO.;5 14764 - - changes to%: (VARS TKDORADOCOMS) - (FNS \TKD.SETLOOKS) - - previous date%: "14-Apr-87 17:10:44" {ERIS}LYRIC>TKDORADO.;4) - - -(* " -Copyright (c) 1986, 1987 by Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT TKDORADOCOMS) - -(RPAQQ TKDORADOCOMS [(FILES TEDITKEY) - (FNS \TKD.SETLOOKS) - (P [SETQ TEDITKEY.KEYBINDINGS - (UNION (APPEND TEDITKEY.KEYBINDINGS '(NIL)) - '(([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (if (ZEROP (fetch DCH of SEL)) - then - (\TK.DEFAULTS.CARET TEXTSTREAM TEXTOBJ SEL) - else - (\TK.DEFAULTSSEL TEXTSTREAM TEXTOBJ SEL] - (%##^V) - "default looks") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL - '(OVERLINE ON] - (%##^D) - "overbar on") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL - '(OVERLINE OFF] - (%##^F) - "overbar off") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL - '(STRIKEOUT ON] - (%##^G) - "strikethru on") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL - '(STRIKEOUT OFF] - (%##^H) - "strikethru off") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL - '(UNDERLINE ON] - (%##^J) - "underlining on") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL - '(UNDERLINE OFF] - (%##^K) - "underlining off") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL - '(WEIGHT BOLD] - (%##^B) - "bold on") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL - '(WEIGHT MEDIUM] - (%##^N) - "bold off") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL - '(SLOPE ITALIC] - (%##^I) - "italics on") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL - '(SLOPE REGULAR] - (%##^O) - "italics off") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (IF (ZEROP (FETCH DCH OF SEL)) - then - (\TK.SMALLER.CARET TEXTSTREAM TEXTOBJ SEL) - else - (\TK.SMALLERSEL TEXTSTREAM TEXTOBJ SEL] - (|##^[|) - "smaller font") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (IF (ZEROP (FETCH DCH OF SEL)) - then - (\TK.LARGER.CARET TEXTSTREAM TEXTOBJ SEL) - else - (\TK.LARGERSEL TEXTSTREAM TEXTOBJ SEL] - (|##^]|) - "larger font") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (IF (ZEROP (FETCH DCH OF SEL)) - then - (\TK.SUPERSCRIPT.CARET TEXTSTREAM TEXTOBJ SEL) - else - (\TK.SUPERSCRIPTSEL TEXTSTREAM TEXTOBJ SEL] - (%##^^) - "superscript") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (IF (ZEROP (FETCH DCH OF SEL)) - then - (\TK.SUBSCRIPT.CARET TEXTSTREAM TEXTOBJ SEL) - else - (\TK.SUBSCRIPTSEL TEXTSTREAM TEXTOBJ SEL] - (%##^_) - "subscript") - (\TK.CENTER.SEL (%##^C) - "center, justify, ... "] - (\TK.BUILD.MENU) - (TEDITKEY.INSTALL) - (AND (BOUNDP 'DLIONFNKEYS) - (OPENWP DLIONFNKEYS) - (CLOSEW DLIONFNKEYS)) - (TEDIT.SETSYNTAX (CHARCODE ESC) - 'REDO]) -(FILESLOAD TEDITKEY) -(DEFINEQ - -(\TKD.SETLOOKS - [LAMBDA (TEXTSTREAM TEXTOBJ SEL LOOKS) (* ; "Edited 16-Apr-87 17:26 by mdd") - (if (ZEROP (fetch DCH of SEL)) - then [LET [(charlooks (create CHARLOOKS using (fetch CARETLOOKS of TEXTOBJ] - [REPLACEFIELD (LISTGET [CONSTANT (LIST 'UNDERLINE (CADADR (RECORDACCESSFORM - 'CLULINE)) - 'OVERLINE - (CADADR (RECORDACCESSFORM 'CLOLINE)) - 'STRIKEOUT - (CADADR (RECORDACCESSFORM 'CLSTRIKE)) - 'SLOPE - (CADADR (RECORDACCESSFORM 'CLITAL)) - 'WEIGHT - (CADADR (RECORDACCESSFORM 'CLBOLD] - (CAR LOOKS)) - charlooks - (FMEMB (CADR LOOKS) - '(ITALIC BOLD ON] - (if (OR (AND (NEQ (CAR LOOKS) - 'SLOPE) - (NEQ (CAR LOOKS) - 'WEIGHT)) - (\TK.SETFONTINLOOKS TEXTSTREAM charlooks)) - then (TEDIT.CARETLOOKS TEXTSTREAM charlooks) - (if TEDITKEY.VERBOSE - then (\TK.SHOWCARETLOOKS TEXTSTREAM TEXTOBJ SEL] - else (TEDIT.LOOKS TEXTSTREAM LOOKS SEL]) -) -[SETQ TEDITKEY.KEYBINDINGS (UNION (APPEND TEDITKEY.KEYBINDINGS '(NIL)) - '(([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (if (ZEROP (fetch DCH of SEL)) - then - (\TK.DEFAULTS.CARET TEXTSTREAM TEXTOBJ SEL) - else - (\TK.DEFAULTSSEL TEXTSTREAM TEXTOBJ SEL] - (%##^V) - "default looks") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL '(OVERLINE ON] - (%##^D) - "overbar on") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL '(OVERLINE OFF] - (%##^F) - "overbar off") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL '(STRIKEOUT ON] - (%##^G) - "strikethru on") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL '(STRIKEOUT OFF] - (%##^H) - "strikethru off") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL '(UNDERLINE ON] - (%##^J) - "underlining on") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL '(UNDERLINE OFF] - (%##^K) - "underlining off") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL '(WEIGHT BOLD] - (%##^B) - "bold on") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL '(WEIGHT MEDIUM] - (%##^N) - "bold off") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL '(SLOPE ITALIC] - (%##^I) - "italics on") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (\TKD.SETLOOKS TEXTSTREAM TEXTOBJ SEL '(SLOPE REGULAR] - (%##^O) - "italics off") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (IF (ZEROP (FETCH DCH OF SEL)) - then - (\TK.SMALLER.CARET TEXTSTREAM TEXTOBJ SEL) - else - (\TK.SMALLERSEL TEXTSTREAM TEXTOBJ SEL] - (|##^[|) - "smaller font") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (IF (ZEROP (FETCH DCH OF SEL)) - then - (\TK.LARGER.CARET TEXTSTREAM TEXTOBJ SEL) - else - (\TK.LARGERSEL TEXTSTREAM TEXTOBJ SEL] - (|##^]|) - "larger font") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (IF (ZEROP (FETCH DCH OF SEL)) - then - (\TK.SUPERSCRIPT.CARET TEXTSTREAM TEXTOBJ SEL) - else - (\TK.SUPERSCRIPTSEL TEXTSTREAM TEXTOBJ SEL] - (%##^^) - "superscript") - ([LAMBDA (TEXTSTREAM TEXTOBJ SEL) - (IF (ZEROP (FETCH DCH OF SEL)) - then - (\TK.SUBSCRIPT.CARET TEXTSTREAM TEXTOBJ SEL) - else - (\TK.SUBSCRIPTSEL TEXTSTREAM TEXTOBJ SEL] - (%##^_) - "subscript") - (\TK.CENTER.SEL (%##^C) - "center, justify, ... "] -(\TK.BUILD.MENU) -(TEDITKEY.INSTALL) -(AND (BOUNDP 'DLIONFNKEYS) - (OPENWP DLIONFNKEYS) - (CLOSEW DLIONFNKEYS)) -(TEDIT.SETSYNTAX (CHARCODE ESC) - 'REDO) -(PUTPROPS TKDORADO COPYRIGHT ("Xerox Corporation" 1986 1987)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (7206 9013 (\TKD.SETLOOKS 7216 . 9011))))) -STOP diff --git a/obsolete/lispusers/TKDORADO.TEDIT b/obsolete/lispusers/TKDORADO.TEDIT deleted file mode 100644 index a667eec220018b9170eed30b65e8657c0f4b3021..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3066 zcmcgt-EQJW6dqXiCr#a|KT>&*&SCp(GRoiN?$6=ab2952o z^aU#IZ6BgiA7P(hAFJn#u?d8xfs0x~9?o~Z^Ecmt3x60~9E?uAVA%2k=NrfQ)^Uy; zr?kKsEH4(%DLoTcoOiCMEl(R3X>cF;kw{PZg2vj=bOKb1 z&?~+eYi1(Mkz1zhiYL}3&ZMM6ED`q3oIo$;Oh?*y!oDs7*+$X{2eQ zsYoe{fK^s97Ag|zGO;Bws

    r8_YE2DSH}fl^QLvKnfYbnWaLjPjMr!S$o zgr_uxJUnKZOsRX#l#r6usnq%^S@(Yd{$nj8s?|C$D1kU$M|yyWlt~dLw^+eVY?J5# zsIR#hGw5q0-N{XClh^?;Nex_UIx*QTZg&ITr2hbTrXp^nP%z+^U8sAT4HEBFgivl%x@XvA!T`KtxT+n_c;Ay+9k&wk62RK$yClE-kb6Oqsv zGwjl^*#tBV+Kn?6S~1Z1M1&I>POM1bWmpIi@_VNms$eOIS6OX_nK6(6)FQd1H>ijy zQ=qSc2%0v0>A<4~fS?oD7Bd$KFVf)lgy5IvX_~eq#phP4rKm9wlc0MLJ&#bH$eVCE z1AVKk>GTvr0{dvta{CO&2>Jf`KecU4;Ep*R`d-k0b;NQY7E{!JJ;MUsdBW5(Hs@^2{JS2~a zi-*cPatN$fYz!Hw)&vaC2z=^$}xF#Pe0_`mDfWDsLwtRpuS4wT_yiU z4u5QQ{I1{fdV>x*9G(vbaKP_Nym-0fi{eN~wP3GI#mV+qe7VC9U25bB`IJ053q1It zChzC0D!F093FObmq}C5Q0r|Wz-0*s@w0%Mzc3SOji!4nL>@#xE_4_aVQLkN^!GF!X zO8q@Kay|c~b>1JH1cMPhqOJ`{kG`%K$749bU&~n!{#@vBy-T9a&hD?Rlp9r!}Gr1?D(UTL1k-8%LoM#-~TTWo3OR#mtM79-BrSBn#$_jng1o%T`E8nG+y)xM=y=N diff --git a/obsolete/lispusers/UPCSTATS b/obsolete/lispusers/UPCSTATS deleted file mode 100644 index 90daba92..00000000 --- a/obsolete/lispusers/UPCSTATS +++ /dev/null @@ -1,297 +0,0 @@ -(FILECREATED "11-Oct-84 14:34:16" {ERIS}LIBRARY>UPCSTATS.;3 9157 - - changes to: (FNS UPCSTATS) - - previous date: "12-NOV-82 12:47:49" {ERIS}LIBRARY>UPCSTATS.;1) - - -(* Copyright (c) by NIL. All rights reserved.) - -(PRETTYCOMPRINT UPCSTATSCOMS) - -(RPAQQ UPCSTATSCOMS ((VARS IMSIZE) - (FNS GATHERUPCSTATS PRINTCUMULATIVEPERCENT PRINTUPC UPCSTATS) - (FNS READMBFILE READNAME) - (FNS PLOTPCS) - (INITVARS (STATSBUFFER) - (VIRTOREAL) - (VIRTONAME)) - (VARS (UPCTHRESHOLD 0 (* lower threshold for percentage to show up on Microcode - PC Sample histogram))) - (MACROS BIN2 UPCCOUNT))) - -(RPAQQ IMSIZE 4096) -(DEFINEQ - -(GATHERUPCSTATS - [LAMBDA (FORM) (* lmm "12-NOV-82 12:45") - (DECLARE (GLOBALVARS STATSBUFFER)) - (OR STATSBUFFER (SETQ STATSBUFFER (\ALLOCLOCKED IMSIZE))) - [\ZEROWORDS STATSBUFFER (\ADDBASE STATSBUFFER (SUB1 (ITIMES IMSIZE (PROG1 2 - (* words per fixp)] - [RESETVARS ((STRF T) - (LCFIL)) - (COMPILE1 (QUOTE STATSDUMMYFUNCTION) - (BQUOTE (LAMBDA NIL ((OPCODES UPCTRACE) - STATSBUFFER) - , FORM ((OPCODES UPCTRACE) - NIL] - (STATSDUMMYFUNCTION]) - -(PRINTCUMULATIVEPERCENT - [LAMBDA NIL (* lmm "29-SEP-80 15:56") - (PROGN (PRIN1 "(" NIL) - (PRIN1 (FQUOTIENT (FPLUS (FTIMES 65536. CUHI) - CULO) - TOTAL) - NIL) - (PRIN1 ")" NIL]) - -(PRINTUPC - [LAMBDA NIL (* lmm "12-NOV-82 11:40") - (COND - (UPCSEEN (do (PRIN1 "Use .MB file: " T) - (SETQ MBFILE (READ T T)) repeatuntil (OR (EQ (NTHCHAR MBFILE 1) - (QUOTE {)) - (EQ MBFILE (QUOTE NIL:)) - (INFILEP MBFILE))) - (READMBFILE MBFILE) - (PRIN1 "Microcode PC Sample: ") - (PLOTPCS))) - (STATSDUMMYFUNCTION]) - -(UPCSTATS - [LAMBDA (FORM DOLISTFLG) (* gbn "11-Oct-84 14:33") - (PROG ((STRF T) - (LCFIL)) - (DECLARE (SPECVARS STRF LCFIL)) - (IF (NOT (EQ (MACHINETYPE) - (QUOTE DORADO))) - THEN (PRINTOUT T " UPCSTATS only runs on Dorados") - (RETURN)) - (GATHERUPCSTATS FORM) - (READMBFILE) - (PLOTPCS]) -) -(DEFINEQ - -(READMBFILE - [LAMBDA (MBFILE) (* lmm "12-NOV-82 12:31") - (OR MBFILE (do (PRIN1 "Use .MB file: " T) - (SETQ MBFILE (READ T T)) repeatuntil (INFILEP MBFILE))) - (PROG ((INX (GETOFD (SETQ MBFILE (OPENFILE MBFILE (QUOTE INPUT) - (QUOTE OLD) - 8)) - (QUOTE INPUT))) - (CURMEMWIDTH 0) - (CURMEM 0) - (CURLOC 0) - IM BLOCKTYPE) - (SETQ MEMORIES) - (OR VIRTOREAL (SETQ VIRTOREAL (ARRAY IMSIZE (QUOTE SMALLP) - 0 0))) - (OR VIRTONAME (SETQ VIRTONAME (ARRAY IMSIZE (QUOTE POINTER) - NIL 0))) - LP (SELECTQ (SETQ BLOCKTYPE (BIN2 INX)) - (0 (RETURN)) - [1 (COND - ((EQ CURMEM IM) - (BIN2 INX) (* source line #) - (BIN2 INX) (* bits 0 to 15) - (BIN2 INX) (* bits 16 to 31) - (BIN2 INX) (* bits 32 to 47) - (FASTSETAW VIRTOREAL (PROG1 CURLOC (add CURLOC 1)) - (LOGAND (BIN2 INX) - 4095)) (* bits 48 to 63) - ) - (T (BIN2 INX) - (FRPTQ CURMEMWIDTH (BIN2 INX] - (2 (SETQ CURMEM (BIN2 INX)) - (SETQ CURLOC (BIN2 INX)) - (SETQ CURMEMWIDTH (IQUOTIENT (IPLUS (CADR (OR (FASSOC CURMEM MEMORIES) - (HELP))) - 15) - 16))) - [3 (* FIXUP MEM# LOC FIRSTBIT,,LASTBIT VALUE) - (COND - ((EQ (BIN2 INX) - IM) - (HELP)) - (T (BIN2 INX) - (BIN2 INX) - (BIN2 INX] - [4 (push MEMORIES (LIST (BIN2 INX) - (BIN2 INX) - (READNAME INX))) - (COND - ((EQ (CADDR (CAR MEMORIES)) - (QUOTE IM)) - (SETQ IM (CAAR MEMORIES)) - (OR (EQ (CADAR MEMORIES) - 64) - (HELP (QUOTE IM) - "wrong # bits"] - [5 (* symbol location) - (COND - ((EQ (BIN2 INX) - IM) - (FASTSETA VIRTONAME (BIN2 INX) - (READNAME INX))) - (T (BIN2 INX) - (READNAME INX T] - (6 (BIN2 INX) - (BIN2 INX) - (BIN2 INX) - (READNAME INX T)) - (HELP)) - (GO LP)) - (CLOSEF MBFILE]) - -(READNAME - [LAMBDA (J FLG) (* lmm "16-MAY-81 16:51") - (bind EVENBYTE CH CHARS do (COND - [(ZEROP (SETQ CH (\BIN J))) - (RETURN (PROG1 (OR FLG (PACKC (DREVERSE CHARS))) - (COND - ((NOT EVENBYTE) - (\BIN J] - (T (SETQ EVENBYTE (NOT EVENBYTE)) - (push CHARS CH]) -) -(DEFINEQ - -(PLOTPCS - [LAMBDA (ALLFLG) (* lmm "12-NOV-82 12:29") - (PROG (NAME (INC 0) - LASTPRINTEDNAME V CNTPERSTAR (BIGGEST 0) - (2NDBIGGEST 0) - (3RDBIGGEST 0) - (TOTHI 0) - (TOTLO 0) - CUM HALFSTAR MAXSTARS LASTSTARPOS NSTARS TABPOS THRESHOLD TOTAL (CUHI 0) - (CULO 0)) - (PRIN1 "Microcode PC Sample: ") - [for I from 0 to (SUB1 IMSIZE) do (COND - ((NEQ (SETQ V (UPCCOUNT I)) - 0) - (add TOTHI (LRSH V 16)) - (add TOTLO (LOGAND V 65535)) - (COND - ((IGREATERP V 3RDBIGGEST) - (COND - [(IGREATERP V 2NDBIGGEST) - (COND - ((IGREATERP V BIGGEST) - (SETQ BIGGEST V)) - (T (SETQ 2NDBIGGEST V] - (T (SETQ 3RDBIGGEST V] - (* Each line has (NAME 14) (+nnn 4)  - (%| 1) stars ((nn.nnnn%%) 10) + 2 for luck) - (SETQ MAXSTARS (IDIFFERENCE [SETQ LASTSTARPOS (IDIFFERENCE (LINELENGTH) - (COND - (ALLFLG 20) - (T 12] - 20)) - (SETQ CNTPERSTAR (IQUOTIENT 3RDBIGGEST MAXSTARS)) - (SETQ HALFSTAR (IQUOTIENT CNTPERSTAR 2)) - (SETQ TOTAL (FPLUS TOTLO (FTIMES TOTHI 65536.0))) - [SETQ THRESHOLD (COND - (ALLFLG 0) - (T (IMAX HALFSTAR (FIX (QUOTIENT (TIMES UPCTHRESHOLD CNTPERSTAR) - TOTAL] - (SETQ TOTAL (FQUOTIENT TOTAL 100.0)) - (printout NIL " Each * = " CNTPERSTAR " count, or " .F8.2 (FQUOTIENT CNTPERSTAR TOTAL) - "%%") - [for VPC from 0 to (SUB1 IMSIZE) - do [COND - ((SETQ V (FASTELT VIRTONAME VPC)) - (SETQ NAME V) - (SETQ INC 0)) - (T (SETQ INC (ADD1 INC] - (SETQ V (UPCCOUNT (FASTELTW VIRTOREAL VPC))) - (COND - (ALLFLG (COND - [(NEQ NAME LASTPRINTEDNAME) - (COND - (LASTPRINTEDNAME (* don't do it the first time) - (TAB LASTSTARPOS) - (PRINTCUMULATIVEPERCENT))) - (TERPRI) - (PRIN1 (COND - ((IGREATERP (SETQ TABPOS (NCHARS (SETQ LASTPRINTEDNAME NAME))) - 14) - (SUBSTRING NAME 1 (SETQ TABPOS 14))) - (T NAME] - (T (TERPRI) - (SPACES TABPOS))) - (add CUHI (LRSH V 16)) - (add CULO (LOGAND V 65535)) - (COND - ((NEQ INC 0) - (printout NIL "+" .I3...T INC))) - (TAB 18) - (printout NIL "#" .I8.4 (FASTELTW VIRTOREAL VPC) - " " .I10 V)) - ((IGREATERP V THRESHOLD) - (COND - [(NEQ NAME LASTPRINTEDNAME) - (COND - (LASTPRINTEDNAME (* don't do it the first time) - (TAB LASTSTARPOS) - (PRINTCUMULATIVEPERCENT))) - (TERPRI) - (PRIN1 (COND - ((IGREATERP (SETQ TABPOS (NCHARS (SETQ LASTPRINTEDNAME NAME))) - 14) - (SUBSTRING NAME 1 (SETQ TABPOS 14))) - (T NAME] - (T (TERPRI) - (SPACES TABPOS))) - (add CUHI (LRSH V 16)) - (add CULO (LOGAND V 65535)) - (COND - ((NEQ INC 0) - (printout NIL "+" .I3...T INC))) - (TAB 18) - (PRIN1 "|") - (FRPTQ (COND - ((IGEQ (SETQ NSTARS (IQUOTIENT (IPLUS V HALFSTAR) - CNTPERSTAR)) - MAXSTARS) - (printout NIL "(" .I4 NSTARS ")") - (IDIFFERENCE MAXSTARS 6)) - (T NSTARS)) - (PRIN1 "*"] - (TAB LASTSTARPOS) - (PRINTCUMULATIVEPERCENT) - (TERPRI) - (SETQ CUHI (IDIFFERENCE TOTHI CUHI)) - (SETQ CULO (IDIFFERENCE TOTLO CULO)) - (printout NIL T T "Not shown: ") - (PRINTCUMULATIVEPERCENT) - (TERPRI]) -) - -(RPAQ? STATSBUFFER ) - -(RPAQ? VIRTOREAL ) - -(RPAQ? VIRTONAME ) - -(RPAQ UPCTHRESHOLD 0 (* lower threshold for percentage to show up on Microcode PC Sample histogram)) -(DECLARE: EVAL@COMPILE - -(PUTPROPS BIN2 MACRO ((INX) - (IPLUS (LLSH (\BIN INX) - 8) - (\BIN INX)))) - -(PUTPROPS UPCCOUNT MACRO [OPENLAMBDA (N) - (\MAKENUMBER (\GETBASE STATSBUFFER (ADD1 (LLSH N 1))) - (\GETBASE STATSBUFFER (LLSH N 1]) -) -(DECLARE: DONTCOPY - (FILEMAP (NIL (698 2431 (GATHERUPCSTATS 708 . 1305) (PRINTCUMULATIVEPERCENT 1307 . 1533) (PRINTUPC -1535 . 1979) (UPCSTATS 1981 . 2429)) (2432 4989 (READMBFILE 2442 . 4644) (READNAME 4646 . 4987)) (4990 - 8641 (PLOTPCS 5000 . 8639))))) -STOP diff --git a/obsolete/lispusers/UPCSTATS.TEDIT b/obsolete/lispusers/UPCSTATS.TEDIT deleted file mode 100644 index f45c716c9382c78dd3e035901de57ac2b8d74d79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2971 zcmcgu+fE}#5FK;b4I!Nzj;;h@w0+sWR)4FW&bzV0XvOol4za7z>ac%A!%zb!Fcd^231p4##d6?s;#kQLs2#16=!v1e z3Wqcp`F$Eiz)NVXMlF@M)I?&mt!0QX9wJAjZgW zAFW(y1x*QUvFtXROs?!H4-MyxB-|mJqz$)rv|*ESI#h!nIh~u@-P{}nk&MSFH||QL zFrX-~r+|%wFIAjOTCtJ#p^6UJ+@>!L`5GjWp^iEjqm&RF*v%L|Zh#CBlGSj^P!CJmT4Awb90#Acx60E7h7+j~eIg=6U;> z5Hq=OGtTU#!5hJo80byNa;tgV@~ThsHskH4n9KaM zFfq>A{=+uw?iGr=`}tx{RLiBE#Z2#y-d=I&Qa^RpTj%vUHvF7= zFMO{!A2?q)k7|uF{#|iCOwX1a=W}QEv~>KugyZRY!wssuVT1F`_R(FsnT-WV*JsX3 zwQ<^TzMLB7A}57RPL`}}tNipBAKMMiv&NRRz|>_4XY0>f=T*lM2M)QVG uKIRPv+cvVr*2b3a@UcENFD#kgrLYRIC>XORCURSORPATCH.\;1 1455 - - |changes| |to:| (VARS XORCURSORPATCHCOMS) - - |previous| |date:| " 7-Oct-86 18:56:37" {PHYLUM}KOTO>XORCURSORPATCH.\;1) - - -; Copyright (c) 1988 by Xerox Corporation. All rights reserved. - -(PRETTYCOMPRINT XORCURSORPATCHCOMS) - -(RPAQQ XORCURSORPATCHCOMS ((FNS DOVE.XOR.CURSOR) (INITVARS (|\\DoveDisplay.VideoColor| 1)) (GLOBALVARS |\\DoveDisplay.VideoColor|) (ADVISE (|\\DoveDisplay.SetVideoColor| :IN VIDEOCOLOR)))) -(DEFINEQ - -(DOVE.XOR.CURSOR -(LAMBDA (FLG) (* |cdl| " 7-Oct-86 18:56") (SELECTQ (MACHINETYPE) (DOVE (|if| (EQP |\\DoveDisplay.VideoColor| 1) |then| (|if| FLG |then| (SETQ |\\DoveDisplay.VideoColor| (|if| (NUMBERP FLG) |then| FLG |else| 9))) |else| (|if| (NULL FLG) |then| (SETQ |\\DoveDisplay.VideoColor| 1))) (|\\DoveDisplay.SetCursorMix| |\\DoveDisplay.VideoColor|) T) NIL)) -) -) - -(RPAQ? |\\DoveDisplay.VideoColor| 1) -(DECLARE\: DOEVAL@COMPILE DONTCOPY - - -(GLOBALVARS |\\DoveDisplay.VideoColor|) -) - -(XCL:REINSTALL-ADVICE (QUOTE (|\\DoveDisplay.SetVideoColor| :IN VIDEOCOLOR)) :AFTER (QUOTE ((:LAST (SELECTQ (MACHINETYPE) (DOVE (|if| (NOT INVERSE?) |then| (|\\DoveDisplay.SetCursorMix| |\\DoveDisplay.VideoColor|))) NIL))))) - -(READVISE (|\\DoveDisplay.SetVideoColor| :IN VIDEOCOLOR)) -(PUTPROPS XORCURSORPATCH COPYRIGHT ("Xerox Corporation" 1988)) -(DECLARE\: DONTCOPY - (FILEMAP (NIL (585 967 (DOVE.XOR.CURSOR 595 . 965))))) -STOP diff --git a/obsolete/lispusers/XORCursorPatch.TEdit b/obsolete/lispusers/XORCursorPatch.TEdit deleted file mode 100644 index 80acd8556776f416db5a041b8aaf2b7e65ea4b14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4359 zcmeHJ-EQMl5O%uVA5$#E0%C=@7>SEI&<#zRP16+;%_dH3HjRtp>~=w1IPpni>e!Kg zng-rr9|>{6<-P&0!^}B$k~-b4xB($y$+10WX3jU?H)q;2%{0#BGsA55&7NVNHmv5c zQc;wuqLdW{?ZYIDg7DOihhws!{n`8}Kyw_rQ5;OiEQF5jGf?UGFiIxu>ap!kN>Ob4 zqabuj%t?xhVvXGhoM4FSehi)+#lRdlW)1{Ce3y80s8n{Kd{Ez4^sZ$Zt$x$ejjo8B z1Ww{HustuBMG%h}l*{$n*DZTK2$_8WYT$eGA|w$DaXEl^<~j}rkmuMAotYgn7`Sl+ z5iXAHm{#U6w0&H@#Kb~6AKQsPjNQQh3Hiiw z!*d}6F7ALk0&53muIE8Cb5n?fVvQ1%ft3LC5oHC`v#WQ&MVu?K1L6t+`aw9cJy;8| z!A~XwY?=X!X9yg2IZfp!R5;2IQ(hF(0b3}&J#nudyFP^20o&Ynj4P;EN|HSsVwZ8| zNLv)$9-#CChP{HUoGhawMaHYi`x#$*oH)4`B;k=J$h&d_d3Z*O%iX|dvdkMd zO^VP$=Gn1}Jwt7VyNNm#xs2{qarQX1T|btod}h0K#hpc1CG*#L|1n1v zfkM^HFY8I9VM=)wc`u9OAUVs3G}8>(OLyB*LokG+?J7TiB(oq&dngxl6Eskev z52K!}5V43C*hF989s(rSB(url^eA#|ZC8;+&T7b715xAQL}u}%3{bkcBJXF#EjAX2 zZHz(RX~>3dguI5}1?Mgv5SSsaaiGZc<*vC{KZtES&L{*%5?|2{3=%p*xOFt9+7!q3y?WU{|PHLQB7%WqzzZnJ9EVGc>cqS~JRFuPBK8>l{lGCWvO{|4aN!5DBF-kw z|2deK6h)%zj@r?C7O3iJ<4EJfN^Kh*-O#&j1Js7uc&0at(6bt*rFW0W=?f@hNxL|d zYUK*-A5`#5#E9@y4C)xh^B$<*_Zux}YF$e+wN??D#|<-G>Ge-Fv)45BQwtOI^dB@R z??StAqIX`wiP6%`F5s9pJ9<|GquoXXrv6+r`WFA{chO_H)-g^sFtww8r(wcNO+Pxe z;6!Wb{gWcJ4fCXd*jLIyz~%ia?A4%Buj8Xgz|nZDHCkAtC?ox_UQz0Pw~Gs8LbrMq z_N!H>;=PQuv@?qb(!3{^gBnzy)S$MzE7BJ+a=|fo`ma!kz$^6%R8j28O2z-Pbz{T* zJ8Tt;{50Q{Wa*IJ3UBzgbZ1kN?n{pf(yk<3Nzxxu;ek~6y-;{l5bHPm9+K^P{QJ`1 zh*#725AnIVafiNcyvk(7eYWtiNjNv~^EP1X0q>|pm0nA)3w7xp?Qjc{3^7Ntfk@tR zW%+1%^A^7rIjl0cQq~sDfb{4{TPuTwVsh6eO82QGA8VZ#nx!`z(t8VskEMHJN@g}B zZ_S3@OB-rP*EK&PMqEq3bPw#0htg)pI5MP1nG=6*V2er8U3$NdH}50*`hYA#ZQ-(k zYg@-=zoV6oG^^b$tbkb-l4i&PA7GMyHjp^r*oE#JyjyOAup~0Yo&~-O`&$F4_$uBD z`pCeE&1fN}zgqPm1J8$guDKSz%)9bDYpw+RVdlzRh>XR?{Dpq#Tr9AW*8E=w3Rncy zGM9w~2aZ@@SmMk=5>uL+3m}-+b|k|mtFdc^5Xgg74>IiM4fVX?8lx1ls6sTMBpv2M zzR4S&<_+KG4Qn{I^B(+wahiDVuZWW2_&gu-S>Eu`s)5MmUAe{-t^AsIo#ze2#j4=< K{*>4+zx@RWA$_m_ diff --git a/obsolete/lispusers/XREF b/obsolete/lispusers/XREF deleted file mode 100644 index 7e5f195a..00000000 --- a/obsolete/lispusers/XREF +++ /dev/null @@ -1,311 +0,0 @@ -(FILECREATED "18-Feb-87 15:48:37" {SUMEX-AIM}PS:XREF.;6 12717 - - changes to: (VARS XREF.DISPLAY.METHODS) - (FNS XREF.IMAGEBOXFN INSERT.REF) - - previous date: " 5-Feb-87 14:57:51" {SUMEX-AIM}PS:XREF.;5) - - -(* Copyright (c) 1987 by Leland Stanford Junior University. All rights reserved.) - -(PRETTYCOMPRINT XREFCOMS) - -(RPAQQ XREFCOMS ((* Developed under support from NIH grant RR-00785.) - (* Written by Frank Gilmurray and Sami Shaio.) - (* An XREF is a general-purpose cross-referencing imageobject. In order to create - an instance of an XREF one simply calls the function XREF with a TAG that is - supposed to link it with some imageobject that it is referencing. In order to - add to the class of imageobjects that can be referenced with XREF one uses the - function XREF.ADD.DISPLAYFN with the type of the imageobject and a function - that operates on it to return some string that XREF will then display in the - document.) - (FNS XREF XREFP XREF.DISPLAYFN XREF.IMAGEBOXFN XREF.PUTFN XREF.GETFN - XREF.BUTTONEVENTINFN XREF.WHENDELETEDFN) - (FNS XREF.GET.DISPLAY.TEXT XREF.GET.TOOBJ TSPOBJ.GETTYPE) - (FNS UPDATE.XREFS REBUILD.TAG.ARRAY INSERT.REF GET.REF TSP.LIST.REFS - XREF.TAG.OBJECT TSP.GET.INCODE TSP.GETCODEVAL TSP.PUTCODE) - (* Functions for adding and retrieving the method for a gven imageobject.) - (FNS XREF.ADD.DISPLAYFN XREF.GET.DISPLAYFN) - (* Examples of some XREF display methods.) - (FNS NGROUP.XREF.DISPLAYFN NOTE.XREF.DISPLAYFN) - (UGLYVARS XREF.DISPLAY.METHODS))) - - - -(* Developed under support from NIH grant RR-00785.) - - - - -(* Written by Frank Gilmurray and Sami Shaio.) - - - - -(* An XREF is a general-purpose cross-referencing imageobject. In order to create an instance -of an XREF one simply calls the function XREF with a TAG that is supposed to link it with some -imageobject that it is referencing. In order to add to the class of imageobjects that can be -referenced with XREF one uses the function XREF.ADD.DISPLAYFN with the type of the imageobject -and a function that operates on it to return some string that XREF will then display in the -document.) - -(DEFINEQ - -(XREF - (LAMBDA (TAG) (* edited: "28-Jan-87 12:53") - - (* Returns a new XREF imageobject. The TAG argument is obligatory and should be the tag that is used to reference  - the object that this XREF object is referencing.) - - - (LET ((NEWOBJ (IMAGEOBJCREATE TAG (IMAGEFNSCREATE (FUNCTION XREF.DISPLAYFN) - (FUNCTION XREF.IMAGEBOXFN) - (FUNCTION XREF.PUTFN) - (FUNCTION XREF.GETFN) - (FUNCTION NILL) - (FUNCTION XREF.BUTTONEVENTINFN) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL) - (FUNCTION NILL))))) - (IMAGEOBJPROP NEWOBJ 'TYPE - 'XREF) - NEWOBJ))) - -(XREFP - (LAMBDA (OBJ) (* edited: "22-Jan-87 21:20") - (* Test whether something is an XREF imageobject.) - (AND (IMAGEOBJP OBJ) - (EQ (IMAGEOBJPROP OBJ 'TYPE) - 'XREF)))) - -(XREF.DISPLAYFN - (LAMBDA (OBJ STREAM) (* edited: "22-Jan-87 21:09") - (* General purpose display function for an XREF  - imageobject. Relies on XREF.GET.DISPLAY.TEXT to get  - the actual text that must be displayed.) - (LET* ((TEXT.TO.DISPLAY (XREF.GET.DISPLAY.TEXT OBJ))) - (PRIN3 TEXT.TO.DISPLAY STREAM)))) - -(XREF.IMAGEBOXFN - (LAMBDA (OBJ STREAM) (* fsg "18-Feb-87 15:35") - (* Returns the size of an XREF imageobject based on  - the string that will be used to display it which is  - found using XREF.GET.DISPLAY.TEXT.) - (DSPFONT (CURRENT.DISPLAY.FONT STREAM) - STREAM) - (create IMAGEBOX - XSIZE _(TEDIT.STRINGWIDTH (XREF.GET.DISPLAY.TEXT OBJ) - STREAM) - YSIZE _(FONTPROP STREAM 'HEIGHT) - YDESC _(FONTPROP STREAM 'DESCENT) - XKERN _ 0))) - -(XREF.PUTFN - (LAMBDA (OBJ STREAM) (* edited: "28-Jan-87 12:54") - (PRIN1 (LIST 'XREF - (fetch OBJECTDATUM of OBJ)) - STREAM))) - -(XREF.GETFN - (LAMBDA (STREAM) (* edited: "28-Jan-87 13:14") - (XREF (CADR (READ STREAM))))) - -(XREF.BUTTONEVENTINFN - (LAMBDA (OBJ STREAM) (* edited: "28-Jan-87 14:51") - (* Bogus buttoneventinfn to tell you what the tag of  - this XREF object is.) - (TEDIT.PROMPTPRINT STREAM (CONCAT "Reference to: " (fetch OBJECTDATUM of OBJ)) - T))) - -(XREF.WHENDELETEDFN - (LAMBDA (IMOBJ TARG.WINDOW.STREAM SOURCE.STR TARG.STR) (* fsg " 4-Feb-87 13:26") - (TSP.PUTCODE (IMAGEOBJPROP IMOBJ 'TAG) - NIL TARG.WINDOW.STREAM) - (AND (UPDATE? TARG.WINDOW.STREAM) - (UPDATE.XREFS TARG.WINDOW.STREAM)))) -) -(DEFINEQ - -(XREF.GET.DISPLAY.TEXT - (LAMBDA (OBJ) (* edited: "22-Jan-87 21:11") - - (* This function will first lookup a "TOOBJ", in other words, the imageobject that the XREF object OBJ is  - referencing. Then, if there is such an object, a suitable XREF display method is found using XREF.GET.DISPLAYFN. - If such a function is found, then it is applied to TOOBJ and a string to be displayed is returned.) - - - (LET ((TOOBJ (XREF.GET.TOOBJ (fetch OBJECTDATUM of OBJ))) - SPECIFIC.DISPLAYFN) - (COND - (TOOBJ (COND - ((SETQ SPECIFIC.DISPLAYFN (XREF.GET.DISPLAYFN TOOBJ)) - (APPLY* SPECIFIC.DISPLAYFN TOOBJ)) - (T (RINGBELLS) - (CONCAT "??? Unknown XREF display method for " (TSPOBJ.GETTYPE TOOBJ) - " ???")))) - (T (CONCAT "")))))) - -(XREF.GET.TOOBJ - (LAMBDA (TAG) (* edited: "22-Jan-87 19:41") - - (* This function is called in a specific context where a reference must be displayed. It is called by an XREF  - object and should return the IMAGEOBJECT that the XREF object is referencing.) - - - (LET ((WINDOW (CAR (fetch \WINDOW of TEXTOBJ)))) - (GETHASH TAG (WINDOWPROP WINDOW 'TSP.CODE.ARRAY))))) - -(TSPOBJ.GETTYPE - (LAMBDA (OBJ) (* edited: "22-Jan-87 20:16") - (IMAGEOBJPROP OBJ 'TYPE))) -) -(DEFINEQ - -(UPDATE.XREFS - (LAMBDA (WINDOW) (* edited: "22-Jan-87 21:05") - (* Update all the XREF objects in the window.) - (LET* ((TEXTOBJ (TEXTOBJ WINDOW)) - (STREAM (TEXTSTREAM WINDOW))) - (TEDIT.PROMPTPRINT STREAM "Updating XRefs..." T) - (for REF in (TSP.LIST.OF.OBJECTS TEXTOBJ (FUNCTION XREFP)) - do (TEDIT.OBJECT.CHANGED STREAM (CAR REF))) - (TEDIT.PROMPTPRINT STREAM "done.")))) - -(REBUILD.TAG.ARRAY - (LAMBDA (WINDOW) (* edited: "28-Jan-87 13:24") - (for TAG in (TSP.LIST.OF.OBJECTS (TEXTOBJ WINDOW) - (FUNCTION (LAMBDA (OBJ) - (AND (NUMBEROBJP OBJ) - (OR (IMAGEOBJPROP OBJ 'TAG) - (EQ (fetch USE - of (fetch OBJECTDATUM - of OBJ)) - 'NGROUP)))))) - do (PROGN (SETQ TAG (CAR TAG)) - (TSP.PUTCODE (OR (IMAGEOBJPROP TAG 'TAG) - (fetch LINK.TO of (fetch OBJECTDATUM of TAG))) - TAG WINDOW))))) - -(INSERT.REF - (LAMBDA (STREAM DISPLAY.PREV) (* edited: "22-Jan-87 21:01") - (LET* ((WINDOW (\TEDIT.MAINW STREAM)) - (CODE (GET.REF WINDOW STREAM "Reference to: " DISPLAY.PREV)) - (REF (XREF CODE))) - (AND CODE (TEDIT.INSERT.OBJECT REF STREAM)) - (TEDIT.PROMPTPRINT STREAM "" T)))) - -(GET.REF - (LAMBDA (WINDOW STREAM PROMPTSTR DISPLAY.PREV) (* ss: " 9-Aug-85 14:49") - (LET ((PREVREFS (TSP.LIST.REFS WINDOW))) - (COND - ((AND PREVREFS DISPLAY.PREV) - (LET ((NMENU (create MENU - TITLE _ "Known Ref Codes" - ITEMS _ PREVREFS))) - (MENU NMENU))) - (T (MKATOM (TEDIT.GETINPUT STREAM "Reference to: "))))))) - -(TSP.LIST.REFS - (LAMBDA (WINDOW) (* fsg "15-Jan-87 14:08") - - (* * Don't collect the Index or IndexEntry references here. Use the INDEX.LIST.REFS function.) - - - (LET ((REFLIST NIL)) - (MAPHASH (WINDOWPROP WINDOW 'TSP.CODE.ARRAY) - (FUNCTION (LAMBDA (VAL KY) - (SETQ REFLIST (CONS KY REFLIST))))) - REFLIST))) - -(XREF.TAG.OBJECT - (LAMBDA (OBJ STREAM TAG) (* fsg " 4-Feb-87 16:35") - - (* TAG an arbitrary imageobject for later cross-referencing. given an imageobject OBJ, a textstream STREAM, and a  - tag TAG. If TAG is nil then the user will be asked for a tag via TSP.GET.INCODE.) - - - (OR TAG (SETQ TAG (TSP.GET.INCODE WINDOW))) - (IMAGEOBJPROP OBJ 'TAG - TAG) - (TSP.PUTCODE TAG OBJ WINDOW))) - -(TSP.GET.INCODE - (LAMBDA (STREAM) (* ss: "24-Apr-86 15:46") - (LET ((CODE (MKATOM (TEDIT.GETINPUT STREAM "Codeword to use as a tag:")))) - (COND - (CODE (COND - ((TSP.GETCODEVAL CODE (\TEDIT.MAINW STREAM)) - (TEDIT.PROMPTPRINT STREAM "[Codeword already in use: Please try again]") - (TSP.GET.INCODE STREAM)) - (T (TEDIT.PROMPTPRINT STREAM "" T) - CODE))) - (T (TEDIT.PROMPTPRINT STREAM "" T)))))) - -(TSP.GETCODEVAL - (LAMBDA (CODE WINDOW) (* fsg " 4-Feb-87 14:32") - (LET ((TSP.CODE.ARRAY (WINDOWPROP WINDOW 'TSP.CODE.ARRAY))) - (GETHASH CODE TSP.CODE.ARRAY)))) - -(TSP.PUTCODE - (LAMBDA (CODE VALUE WINDOW) (* fsg " 4-Feb-87 14:34") - (PUTHASH CODE VALUE (LIST (WINDOWPROP WINDOW 'TSP.CODE.ARRAY))))) -) - - - -(* Functions for adding and retrieving the method for a gven imageobject.) - -(DEFINEQ - -(XREF.ADD.DISPLAYFN - (LAMBDA (OBJTYPE NAME.OF.FUNCTION) (* edited: "22-Jan-87 21:08") - - (* Adds an XREF display method for an imageobject of the given type. This means that the function NAME.OF.FUNCTION  - will be used to display text when an XREF object references an imageobject of type OBJTYPE.) - - - (PUTHASH OBJTYPE NAME.OF.FUNCTION XREF.DISPLAY.METHODS))) - -(XREF.GET.DISPLAYFN - (LAMBDA (OBJ) (* edited: "22-Jan-87 21:11") - (* Returns the XREF display method for an imageobject  - OBJ.) - (GETHASH (fetch USE of (fetch OBJECTDATUM of OBJ)) - XREF.DISPLAY.METHODS))) -) - - - -(* Examples of some XREF display methods.) - -(DEFINEQ - -(NGROUP.XREF.DISPLAYFN - (LAMBDA (NGROUP) (* edited: "29-Jan-87 16:07") - (* A sample XREF display method for NGROUP objects.) - (MKSTRING (fetch NUMSTRING of (fetch OBJECTDATUM of NGROUP))))) - -(NOTE.XREF.DISPLAYFN - (LAMBDA (OBJ) (* edited: "29-Jan-87 16:07") - (* A sample XREF display method for NOTE objects.) - (MKSTRING (fetch NUMSTRING of (fetch OBJECTDATUM of OBJ))))) -) -(READVARS XREF.DISPLAY.METHODS) -({H(20 ERROR) 2 NGROUP.XREF.DISPLAYFN NGROUP NOTE.XREF.DISPLAYFN NOTE }) -(PUTPROPS XREF COPYRIGHT ("Leland Stanford Junior University" 1987)) -(DECLARE: DONTCOPY - (FILEMAP ((7675) (2226 5527 (XREF 2236 . 3078) (XREFP 3080 . 3388) (XREF.DISPLAYFN 3390 . 3854) ( -XREF.IMAGEBOXFN 3856 . 4491) (XREF.PUTFN 4493 . 4693) (XREF.GETFN 4695 . 4851) (XREF.BUTTONEVENTINFN -4853 . 5238) (XREF.WHENDELETEDFN 5240 . 5525)) (5528 7093 (XREF.GET.DISPLAY.TEXT 5538 . 6475) ( -XREF.GET.TOOBJ 6477 . 6940) (TSPOBJ.GETTYPE 6942 . 7091)) (7094 NIL (UPDATE.XREFS 7104 . 7674))))) -STOP -TAG.ARRAY 7854 . 8516) (INSERT.REF 8520 . 8889) (GET.REF 8893 . 9308) (TSP.LIST.REFS 9312 . -9730) (XREF.TAG.OBJECT 9734 . 10217) (TSP.GET.INCODE 10221 . 10753) (TSP.GETCODEVAL 10757 . 10984) ( -TSP.PUTCODE 10988 . 11179)) (11272 12087 (XREF.ADD.DISPLAYFN 11284 . 11708) (XREF.GET.DISPLAYFN 11712 - . 12084)) (12145 12817 (NGROUP.XREF.DISPLAYFN 12157 . 12487) (NOTE.XREF.DISPLAYFN 12491 . 12814))))) -STOP diff --git a/obsolete/lispusers/c150fonts/C150STREAM b/obsolete/lispusers/c150fonts/C150STREAM deleted file mode 100644 index 44366442..00000000 --- a/obsolete/lispusers/c150fonts/C150STREAM +++ /dev/null @@ -1,2193 +0,0 @@ -(FILECREATED " 3-Apr-86 18:16:05" {ERIS}LIBRARY>C150STREAM.;15 139806 - - changes to: (FNS CREATEC150BUFFER) - (VARS C150COLORMAP C150FONTDIRECTORIES) - - previous date: " 3-Apr-86 16:05:11" {ERIS}LIBRARY>C150STREAM.;14) - - -(* Copyright (c) 1985, 1986 by Xerox Corporation. All rights reserved.) - -(PRETTYCOMPRINT C150STREAMCOMS) - -(RPAQQ C150STREAMCOMS - ((CONSTANTS \C150PointsPerInch \C150RealBPP) - (FNS C150.SEPARATOR C150.SETMARGINS \C150.ALLWHITESPACE \C150.BUFFER.DOT \C150.MICROLINEFEED - \C150.SENDLINE \C150.SENDLINEINFO \C150INIT \CREATECHARSET.C150) - (FNS CREATEC150BUFFER NEWLINE.C150 NEWPAGE.C150 OPENC150STREAM C150.RESET SEND.TO.C150 - STARTPAGE.C150 \BITBLT.C150 \BLTCHAR.C150 \BLTSHADE.C150 \C150.CRLF \CHANGECHARSET.C150 - \CHARWIDTH.C150 \CLOSEFN.C150 \CREATEC150FONT \READC150FONTFILE \DRAWCIRCLE.C150 - \DRAWCURVE.C150 \DRAWELLIPSE.C150 \DRAWLINE.C150 \DSPBACKCOLOR.C150 - \DSPCLIPPINGREGION.C150 \DSPCOLOR.C150 \C150.ASSURE.COLOR \C150.LOOKUPRGB \DSPFONT.C150 - \DSPLEFTMARGIN.C150 \DSPLINEFEED.C150 \DSPOPERATION.C150 \DSPPRINTCHAR.C150 - \DSPPRINTCR/LF.C150 \DSPRESET.C150 \DSPRIGHTMARGIN.C150 \DSPXPOSITION.C150 - \DSPYPOSITION.C150 \DUMPPAGEBUFFER.C150 \FILLCIRCLE.C150 \OUTCHARFN.C150 - \SEARCHC150FONTFILES \STRINGWIDTH.C150) - (VARS MISSINGC150FONTCOERCIONS (\C150COLORTABLE) - (\C150.FRAMEBUFFER) - (\C150STREAM) - C150COLORMAP C150FONTCOERCIONS C150FONTDIRECTORIES C150FONTEXTENSIONS) - (INITVARS (C150.CLIPBUFFER T) - (\C150DEFAULTDEVICE (QUOTE CENTRONICS))) - (FNS COLORMAP.TO.C150TABLE) - (FILES COLOR XXGEOM XXFILL) - [P (IF (NOT (GETD (QUOTE POLYSHADE.BLT))) - THEN - (* A fix for KOTO, which is not necessary in n>) - (MOVD (QUOTE POLYSHADE.DISPLAY) - (QUOTE POLYSHADE.BLT] - (DECLARE: DONTEVAL@LOAD DOCOPY (P (\C150INIT)) - (FILES CENTRONICS)) - (DECLARE: EVAL@LOAD DONTCOPY (FILES (LOADFROM) - ADISPLAY LLDISPLAY)) - (MACROS \C150BackingStream))) -(DECLARE: EVAL@COMPILE - -(RPAQQ \C150PointsPerInch 120) - -(RPAQQ \C150RealBPP 4) - -(CONSTANTS \C150PointsPerInch \C150RealBPP) -) -(DEFINEQ - -(C150.SEPARATOR - [LAMBDA (BACKINGSTREAM) (* hdj - " 5-Sep-85 12:12") - (LET ((SEPR.LENGTH 30)) - (for C instring (CONCAT "g0" SEPR.LENGTH " ") do (BOUT BACKINGSTREAM C)) - (for DASH from 1 to SEPR.LENGTH do (BOUT BACKINGSTREAM 255]) - -(C150.SETMARGINS - [LAMBDA (BACKINGSTREAM C150LEFT C150RIGHT) (* hdj - " 5-Sep-85 12:21") - - (* * Set the left and right margins for the C150 printer) - - (LET [[LEFTCODE (CONCAT (FIX (TIMES 10 (if (OR (EQ C150LEFT NIL) - (LESSP C150LEFT .5) - (GEQ C150LEFT 9.0) - (GEQ C150LEFT C150RIGHT)) - then .5 - else C150LEFT] - (RIGHTCODE (CONCAT (FIX (TIMES 10 (if (OR (EQ C150RIGHT NIL) - (GREATERP C150RIGHT 9) - (LEQ C150RIGHT .5) - (LEQ C150RIGHT C150LEFT)) - then 9 - else C150RIGHT] (* send the left margin) - (BOUT BACKINGSTREAM (CHARCODE ESC)) - (BOUT BACKINGSTREAM (CHARCODE l)) - (for CHAR instring LEFTCODE do (BOUT BACKINGSTREAM CHAR)) - (BOUT BACKINGSTREAM (CHARCODE CR)) (* send the right - margin) - (BOUT BACKINGSTREAM (CHARCODE ESC)) - (BOUT BACKINGSTREAM (CHARCODE r)) - (for CHAR instring RIGHTCODE do (BOUT BACKINGSTREAM CHAR)) - (BOUT BACKINGSTREAM (CHARCODE CR]) - -(\C150.ALLWHITESPACE - [LAMBDA (BITMAP TABLES STARTINGSCAN) (* hdj - " 6-Aug-85 15:50") - (* is there anything to - print on the next 4 - scanlines?) - (LET*((MaxX (SUB1 (BITMAPWIDTH BITMAP))) - [MaxColor (SUB1 (EXPT 2 (BITSPERPIXEL BITMAP] - (COLORUSED? (ARRAY (ADD1 MaxColor) - (QUOTE POINTER) - NIL 0)) - (BlackTable (ELT TABLES 0)) - (MagentaTable (ELT TABLES 1)) - (YellowTable (ELT TABLES 2)) - (CyanTable (ELT TABLES 3))) - (for Scanline from STARTINGSCAN to (IDIFFERENCE STARTINGSCAN 3) by -1 - do (for X from 0 to MaxX do (SETA COLORUSED? (BITMAPBIT BITMAP X Scanline) - T))) - (for Value from 0 to MaxColor never (AND (ELT COLORUSED? Value) - (OR (EQ (ELT BlackTable Value) - 1) - (EQ (ELT MagentaTable Value) - 1) - (EQ (ELT YellowTable Value) - 1) - (EQ (ELT CyanTable Value) - 1]) - -(\C150.BUFFER.DOT - [LAMBDA (DOT X BUFFER) (* hdj - " 3-Aug-85 20:55") - (SETA BUFFER X DOT]) - -(\C150.MICROLINEFEED - [LAMBDA (BACKINGSTREAM) (* hdj - " 5-Sep-85 12:12") - (for CHAR instring "k1" do (BOUT BACKINGSTREAM CHAR]) - -(\C150.SENDLINE - [LAMBDA (BACKINGSTREAM LINE# COLOR BUFFER) (* hdj - " 5-Sep-85 12:13") - (for CHAR instring (CONCAT "g" (CHARACTER (IPLUS (ITIMES 4 COLOR) - (IREMAINDER LINE# 4) - (CHARCODE 0))) - (FOLDHI (ARRAYSIZE BUFFER) - 8) - " ") do (BOUT BACKINGSTREAM CHAR)) - (bind (BYTE.TO.SEND _ 0) for BYTE from 0 to (SUB1 (ARRAYSIZE BUFFER)) by 8 - do [for BIT from 7 to 0 by -1 do (SETQ BYTE.TO.SEND (LOGOR BYTE.TO.SEND - (LLSH (ELT BUFFER (IPLUS BYTE BIT)) - BIT] - (BOUT BACKINGSTREAM BYTE.TO.SEND]) - -(\C150.SENDLINEINFO - [LAMBDA (BACKINGSTREAM COLOR LENGTHINBYTES LINE#) (* hdj - " 5-Sep-85 12:13") - (for CHAR instring (CONCAT "g" (CHARACTER (IPLUS (UNFOLD COLOR 4) - LINE# - (CHARCODE 0))) - LENGTHINBYTES " ") do (BOUT BACKINGSTREAM CHAR]) - -(\C150INIT - [LAMBDA NIL (* gbn - " 5-Nov-85 19:34") - (* Initializes global - variables for the C150) - (DECLARE (GLOBALVARS \C150IMAGEOPS)) - (SETQ \C150IMAGEOPS (create IMAGEOPS - IMAGETYPE _(QUOTE C150) - IMFONT _(FUNCTION \DSPFONT.C150) - IMLEFTMARGIN _(FUNCTION \DSPLEFTMARGIN.C150) - IMRIGHTMARGIN _(FUNCTION \DSPRIGHTMARGIN.C150) - IMLINEFEED _(FUNCTION \DSPLINEFEED.C150) - IMXPOSITION _(FUNCTION \DSPXPOSITION.C150) - IMYPOSITION _(FUNCTION \DSPYPOSITION.C150) - IMCLOSEFN _(FUNCTION \CLOSEFN.C150) - IMDRAWCURVE _(FUNCTION \DRAWCURVE.C150) - IMFILLCIRCLE _(QUOTE \FILLCIRCLE.C150) - IMDRAWLINE _(FUNCTION \DRAWLINE.C150) - IMDRAWELLIPSE _(FUNCTION \DRAWELLIPSE.C150) - IMDRAWCIRCLE _(FUNCTION \DRAWCIRCLE.C150) - IMBITBLT _(FUNCTION \BITBLT.C150) - IMBLTSHADE _(FUNCTION \BLTSHADE.C150) - IMNEWPAGE _(FUNCTION NEWPAGE.C150) - IMSCALE _[FUNCTION (LAMBDA NIL - (FQUOTIENT 120 72] - IMSPACEFACTOR _(FUNCTION NILL) - IMFONTCREATE _(QUOTE C150) - IMCOLOR _(FUNCTION \DSPCOLOR.C150) - IMBACKCOLOR _(FUNCTION \DSPBACKCOLOR.C150) - IMOPERATION _(FUNCTION \DSPOPERATION.C150) - IMSTRINGWIDTH _(FUNCTION \STRINGWIDTH.C150) - IMCHARWIDTH _(FUNCTION \CHARWIDTH.C150) - IMCLIPPINGREGION _(FUNCTION \DSPCLIPPINGREGION.C150) - IMRESET _(FUNCTION \DSPRESET.C150) - IMFILLPOLYGON _(FUNCTION POLYSHADE.BLT))) - [push IMAGESTREAMTYPES (LIST (QUOTE C150) - (LIST (QUOTE OPENSTREAM) - (FUNCTION OPENC150STREAM)) - (LIST (QUOTE FONTCREATE) - (FUNCTION \CREATEC150FONT)) - (LIST (QUOTE FONTSAVAILABLE) - (FUNCTION \SEARCHC150FONTFILES)) - (LIST (QUOTE CREATECHARSET) - (FUNCTION \CREATECHARSET.C150] - (push PRINTERTYPES (LIST (LIST (QUOTE C150)) - (LIST (QUOTE CANPRINT) - (LIST (QUOTE C150))) - (LIST (QUOTE STATUS) - (FUNCTION TRUE)) - (LIST (QUOTE PROPERTIES) - (FUNCTION NILL)) - (LIST (QUOTE SEND) - (FUNCTION SEND.TO.C150)) - (LIST (QUOTE BITMAPSCALE) - NIL) - (LIST (QUOTE BITMAPFILE) - NIL))) - (ADDTOVAR DEFAULTPRINTINGHOST (C150 C150)) - (PUTPROP (QUOTE C150) - (QUOTE PRINTERTYPE) - (QUOTE C150)) - [push PRINTFILETYPES (LIST (QUOTE C150) - (LIST (QUOTE TEST) - (FUNCTION NILL)) - (LIST (QUOTE EXTENSION) - (LIST (QUOTE C150] - (DEFAULTFONT (QUOTE C150) - (QUOTE (CLASSIC 10 MRR)) - (QUOTE NEW)) - T]) - -(\CREATECHARSET.C150 - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHARSET FONTDESC NOSLUG?) (* gbn - " 9-Jan-86 13:00") - - (* * tries to build the csinfo required for CHARSET. - Does the necessary coercions. Returns NIL when unsuccessful - (\CREATECHARSET will do the same)) - - (* * NOSLUG? means don't create an empty - (slug) csinfo if the charset is not found, just return NIL) - - (DECLARE (GLOBALVARS C150FONTCOERCIONS MISSINGC150FONTCOERCIONS)) - - (* C150FONTCOERCIONS is a list of font coercions, in the form - ((user-font real-font) (user-font real-font) ...)%. - Each user-font is a list of FAMILY, and optionally SIZE and CHARSET, - (e.g., (GACHA) or (GACHA 10) or (GACHA 10 143)), and each real-font is a - similar list.) - - (COND - ((PROG1 (for TRANSL in C150FONTCOERCIONS bind NEWCSINFO USERFONT REALFONT - when (AND (SETQ USERFONT (CAR TRANSL)) - (EQ FAMILY (CAR USERFONT)) - (OR (NOT (CADR USERFONT)) - (EQ SIZE (CADR USERFONT))) - (OR (NOT (CADDR USERFONT)) - (EQ CHARSET (CADDR USERFONT))) - (SETQ REALFONT (CADR TRANSL)) - (SETQ NEWCSINFO (\CREATECHARSET.C150 (OR (CAR REALFONT) - FAMILY) - (OR (CADR REALFONT) - SIZE) - FACE ROTATION DEVICE (OR (CADDR REALFONT) - CHARSET) - FONTDESC NOSLUG?))) do (RETURN NEWCSINFO)) - (* Just recursively - call ourselves to - handle entries in - C150FONTCOERCIONS) - )) - ((AND (EQ ROTATION 0) (* If it is available, - this will force the - appropriate file to be - read to fill in the - charset entry) - (\READC150FONTFILE FAMILY SIZE FACE ROTATION (QUOTE C150) - CHARSET))) - (T - (* * if we get here, the font is not directly available, either it needs - to be rotated, boldified, or italicised "by hand") - - (PROG (NEWFONT XFONT XLATEDFAM) - (RETURN (COND - [(NEQ ROTATION 0) - - (* to make a rotated font (even if it is bold or whatnot), recursively - call fontcreate to get the unrotated font - (maybe bold, etc), then call \SFMAKEROTATEDFONT on the csinfo.) - - (OR (MEMB ROTATION (QUOTE (90 270))) - (ERROR "only implemented rotations are 0, 90 and 270." ROTATION)) - (COND - ((SETQ XFONT (FONTCREATE FAMILY SIZE FACE 0 (QUOTE C150) - T CHARSET)) - - (* actually call FONTCREATE here, rather than \CREATEC150FONT or - \CREATECHARSET.C150 so that the vanilla font that is built in this process - will be cached and not repeated.) - - (if (SETQ CSINFO (\GETCHARSETINFO CHARSET XFONT T)) - then (\SFROTATECSINFO CSINFO ROTATION) - else NIL] - ((AND (EQ (fetch WEIGHT of FACE) - (QUOTE BOLD)) - (SETQ XFONT (FONTCREATE FAMILY SIZE (create FONTFACE - using FACE WEIGHT _(QUOTE - MEDIUM)) - 0 - (QUOTE C150) - T CHARSET))) (* if we want a bold - font, and the medium - weight font is - available, build the - medium weight version - then call \SFMAKEBOLD - on the csinfo) - (if (SETQ CSINFO (\GETCHARSETINFO CHARSET XFONT T)) - then (\SFMAKEBOLD CSINFO) - else NIL)) - ((AND (EQ (fetch SLOPE of FACE) - (QUOTE ITALIC)) - (SETQ XFONT (FONTCREATE FAMILY SIZE (create FONTFACE - using FACE SLOPE _(QUOTE - REGULAR)) - 0 - (QUOTE C150) - T CHARSET))) - (if (SETQ CSINFO (\GETCHARSETINFO CHARSET XFONT T)) - then (\SFMAKEITALIC CSINFO) - else NIL)) - ((for TRANSL in MISSINGC150FONTCOERCIONS bind NEWCSINFO USERFONT REALFONT - when (AND (SETQ USERFONT (CAR TRANSL)) - (EQ FAMILY (CAR USERFONT)) - (OR (NOT (CADR USERFONT)) - (EQ SIZE (CADR USERFONT))) - (OR (NOT (CADDR USERFONT)) - (EQ CHARSET (CADDR USERFONT))) - (SETQ REALFONT (CADR TRANSL)) - (SETQ NEWCSINFO (\CREATECHARSET.C150 (OR (CAR REALFONT) - FAMILY) - (OR (CADR REALFONT) - SIZE) - FACE ROTATION DEVICE - (OR (CADDR REALFONT) - CHARSET) - FONTDESC NOSLUG?))) - do (RETURN NEWCSINFO))) - ((NOT NOSLUG?) - (\BUILDSLUGCSINFO (fetch (FONTDESCRIPTOR FONTAVGCHARWIDTH) of FONTDESC) - (FONTPROP FONTDESC (QUOTE ASCENT)) - (FONTPROP FONTDESC (QUOTE DESCENT)) - (FONTPROP FONTDESC (QUOTE DEVICE]) -) -(DEFINEQ - -(CREATEC150BUFFER - [LAMBDA (WIDTH HEIGHT) (* FS " 3-Apr-86 18:14") - (LET*((BITWIDTH (ITIMES WIDTH \C150RealBPP)) - (RASTERWIDTH (FOLDHI BITWIDTH BITSPERWORD)) - (PAGES (FOLDHI (ITIMES RASTERWIDTH HEIGHT) - WORDSPERPAGE))) - - (* * (create BITMAP BITMAPBITSPERPIXEL _ \C150RealBPP BITMAPRASTERWIDTH _ - RASTERWIDTH BITMAPWIDTH _ BITWIDTH BITMAPHEIGHT _ HEIGHT BITMAPBASE _ - (OR (\ALLOCPAGEBLOCK PAGES) (HELP - "Can't allocate C150 buffer - pages needed = " PAGES)))) - - (* * Don't think code above is correct, commented out and added below, - changing BITMAPWIDTH, and ignoring \MaxBitMapWords - (safe?????) * *) - - (create BITMAP - BITMAPBITSPERPIXEL _ \C150RealBPP - BITMAPRASTERWIDTH _ RASTERWIDTH - BITMAPWIDTH _ WIDTH - BITMAPHEIGHT _ HEIGHT - BITMAPBASE _(OR (\ALLOCPAGEBLOCK PAGES) - (HELP "Can't allocate C150 buffer - pages needed = " PAGES]) - -(NEWLINE.C150 - [LAMBDA (C150STREAM) (* hdj - " 6-Jun-85 14:01") - (* Go to next line - (or next page if on - last line)) - (LET*[(C150DATA (fetch IMAGEDATA of C150STREAM)) - (NEWYPOS (IPLUS (ffetch DDYPOSITION of C150DATA) - (ffetch DDLINEFEED of C150DATA] - (COND - ((ILESSP NEWYPOS (ffetch DDClippingBottom of C150DATA)) - (NEWPAGE.C150 C150STREAM)) - (T (\DSPXPOSITION.C150 C150STREAM (ffetch DDLeftMargin of C150DATA)) - (\DSPYPOSITION.C150 C150STREAM NEWYPOS]) - -(NEWPAGE.C150 - [LAMBDA (C150STREAM) (* hdj - " 7-Aug-85 16:48") - (LET ((DD (fetch (STREAM IMAGEDATA) of C150STREAM))) - [\DUMPPAGEBUFFER.C150 (fetch DDDestination of DD) - C150STREAM - (OR \C150COLORTABLE (SETQ \C150COLORTABLE (COLORMAP.TO.C150TABLE C150COLORMAP] - (STARTPAGE.C150 C150STREAM]) - -(OPENC150STREAM - [LAMBDA (C150FILE OPTIONS) (* gbn - " 6-Nov-85 19:08") - (* Opens a C150 stream) - - (* open a C150 stream. keep a permanent pointer to the frame buffer, - because it can never be gc'ed any way, and we want to recycle it -- - only allow one of them to be open at a time, due to global frame buffer) - - (DECLARE (GLOBALVARS \C150IMAGEOPS C150BAUDRATE \C150STREAM)) - (if (AND (STREAMP \C150STREAM) - (OPENP \C150STREAM)) - then (ERROR "Sorry - you can only have one C150 stream open at one time" \C150STREAM) - else (if (EQ (FILENAMEFIELD C150FILE (QUOTE HOST)) - (QUOTE LPT)) - then (* if the hardcopy - interface is opening to - the LPT pseudodevice, - change it to be the - device that the printer - is actually connected - to.) - (SETQ C150FILE (PACKFILENAME (QUOTE HOST) - \C150DEFAULTDEVICE - (QUOTE BODY) - C150FILE))) - (LET*[(WIDTH (FIX (TIMES 8.5 \C150PointsPerInch))) - (HEIGHT (FIX (TIMES 11 \C150PointsPerInch))) - (BACKINGSTREAM (OPENSTREAM C150FILE (QUOTE OUTPUT))) - (C150STREAM (SETQ \C150STREAM (DSPCREATE (OR \C150.FRAMEBUFFER (SETQ - \C150.FRAMEBUFFER - (CREATEC150BUFFER - WIDTH HEIGHT] - (replace (STREAM F1) of C150STREAM with BACKINGSTREAM) - (replace (STREAM OUTCHARFN) of C150STREAM with (FUNCTION \OUTCHARFN.C150)) - (replace (STREAM STRMBOUTFN) of C150STREAM with (FUNCTION \DSPPRINTCHAR.C150)) - (replace (STREAM USERCLOSEABLE) of C150STREAM with T) - (replace (STREAM IMAGEOPS) of C150STREAM with \C150IMAGEOPS) - (replace (\DISPLAYDATA DDClippingRegion) of (\GETDISPLAYDATA C150STREAM) - with (CREATEREGION 0 0 WIDTH HEIGHT)) - (STREAMPROP C150STREAM (QUOTE COLORMAPCACHE) - (LIST NIL)) - (DSPLEFTMARGIN 0 C150STREAM) - (DSPRIGHTMARGIN WIDTH C150STREAM) - (DSPCOLOR 0 C150STREAM) - (DSPBACKCOLOR 7 C150STREAM) - (STARTPAGE.C150 C150STREAM) - C150STREAM]) - -(C150.RESET - [LAMBDA NIL (* gbn - " 7-Nov-85 22:42") - - (* * just does things that the user prob doesn't know about.) - - (SETQ \C150STREAM) - (CLOSEF? (QUOTE {CENTRONICS})) - (CENTRONICS.RESET]) - -(SEND.TO.C150 - [LAMBDA (HOST FILE PRINTOPTIONS) (* hdj - " 6-Jun-85 15:37") - (COPYFILE FILE (PACKFILENAME (QUOTE HOST) - (QUOTE LPT) - (QUOTE NAME) - HOST - (QUOTE EXTENSION) - (QUOTE C150]) - -(STARTPAGE.C150 - [LAMBDA (C150STREAM) (* hdj - " 6-Aug-85 11:20") - (LET*((DD (\GETDISPLAYDATA C150STREAM)) - (CREG (fetch DDClippingRegion of DD)) - (FONTASCENT (FONTASCENT (fetch DDFONT of DD))) - (PAGEBUFFER (fetch DDDestination of DD))) - (BLTSHADE (DSPBACKCOLOR NIL C150STREAM) - PAGEBUFFER) - (\DSPXPOSITION.C150 C150STREAM (fetch DDLeftMargin of DD)) - (\DSPYPOSITION.C150 C150STREAM (ADD1 (IDIFFERENCE (fetch TOP of CREG) - FONTASCENT]) - -(\BITBLT.C150 - [LAMBDA (SOURCEBITMAP SOURCELEFT SOURCEBOTTOM DESTSTRM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH - HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION CLIPPEDSOURCELEFT - CLIPPEDSOURCEBOTTOM) (* hdj - " 6-Jun-85 16:17") - (DECLARE (LOCALVARS . T)) - (PROG (stodx stody left top bottom right DESTBITMAP DESTINATIONNBITS (SOURCENBITS - (fetch (BITMAP - BITMAPBITSPERPIXEL - ) - of SOURCEBITMAP)) - (DESTDD (fetch IMAGEDATA of DESTSTRM))) - (SETQ DESTBITMAP (fetch DDDestination of DESTDD)) - [PROGN (* compute limits based - on clipping regions.) - (SETQ left (fetch DDClippingLeft of DESTDD)) - (SETQ bottom (fetch DDClippingBottom of DESTDD)) - (SETQ right (fetch DDClippingRight of DESTDD)) - (SETQ top (fetch DDClippingTop of DESTDD)) - (COND - (CLIPPINGREGION (* hard case, two - destination clipping - regions: do - calculations to merge - them.) - (PROG (CRLEFT CRBOTTOM) - [SETQ left (IMAX left (SETQ CRLEFT (fetch LEFT of CLIPPINGREGION] - [SETQ bottom (IMAX bottom (SETQ CRBOTTOM (fetch BOTTOM of - CLIPPINGREGION - ] - [SETQ right (IMIN right (IPLUS CRLEFT (fetch WIDTH of CLIPPINGREGION - ] - (SETQ top (IMIN top (IPLUS CRBOTTOM (fetch HEIGHT of CLIPPINGREGION] - (SETQ DESTINATIONNBITS (fetch (BITMAP BITMAPBITSPERPIXEL) of DESTBITMAP)) - (* left, right top and - bottom are the limits - in destination taking - into account Clipping - Regions. Clip to region - in the arguments of - this call.) - [PROGN (SETQ left (IMAX DESTINATIONLEFT left)) - (SETQ bottom (IMAX DESTINATIONBOTTOM bottom)) - [COND - (WIDTH (* WIDTH is optional) - (SETQ right (IMIN (IPLUS DESTINATIONLEFT WIDTH) - right] - (COND - (HEIGHT (* HEIGHT is optional) - (SETQ top (IMIN (IPLUS DESTINATIONBOTTOM HEIGHT) - top] (* Clip and translate - coordinates.) - (SETQ stodx (IDIFFERENCE DESTINATIONLEFT SOURCELEFT)) - (SETQ stody (IDIFFERENCE DESTINATIONBOTTOM SOURCEBOTTOM)) - - (* compute the source dimensions (left right bottom top) by intersecting - the source bit map, the source area to be moved with the limits of the - region to be moved in the destination coordinates.) - - [PROGN (* compute left margin) - (SETQ left (IMAX CLIPPEDSOURCELEFT (IDIFFERENCE left stodx) - 0)) (* compute bottom - margin) - (SETQ bottom (IMAX CLIPPEDSOURCEBOTTOM (IDIFFERENCE bottom stody) - 0)) (* compute right margin) - (SETQ right (IMIN (\PIXELOFBITADDRESS SOURCENBITS (ffetch BITMAPWIDTH of - SOURCEBITMAP - )) - (IDIFFERENCE right stodx) - (IPLUS CLIPPEDSOURCELEFT WIDTH))) (* compute top margin) - (SETQ top (IMIN (ffetch BITMAPHEIGHT of SOURCEBITMAP) - (IDIFFERENCE top stody) - (IPLUS CLIPPEDSOURCEBOTTOM HEIGHT] - (COND - ((AND (IGREATERP right left) - (IGREATERP top bottom))) - (T (* there is nothing to - move.) - (RETURN))) - (OR OPERATION (SETQ OPERATION (ffetch (\DISPLAYDATA DDOPERATION) of DESTDD))) - - (* We'd rather handle the slow case when we are interruptable, so we do it - here as a heuristic. But we might get interrupted before we go - interruptable, so we do it there too.) - - (COND - [(EQ SOURCENBITS DESTINATIONNBITS) (* going from one to - another of the same - size.) - (* use LLSH with - constant value rather - than multiple because - it compiles into - opcodes.) - [COND - ((EQ DESTINATIONNBITS 4) - (SETQ left (LLSH left 2)) - (SETQ right (LLSH right 2)) - (SETQ stodx (LLSH stodx 2))) - (T (SETQ left (LLSH left 3)) - (SETQ right (LLSH right 3)) - (SETQ stodx (LLSH stodx 3] (* set texture if it - will ever get looked - at.) - (AND (EQ SOURCETYPE (QUOTE MERGE)) - (SETQ TEXTURE (COLORTEXTUREFROMCOLOR# TEXTURE DESTINATIONNBITS))) - (* easy case of color - to color) - (PROG ([PILOTBBT (COND - ((type? PILOTBBT \SYSPILOTBBT) - \SYSPILOTBBT) - (T (SETQ \SYSPILOTBBT (create PILOTBBT] - (HEIGHT (IDIFFERENCE top bottom)) - (WIDTH (IDIFFERENCE right left)) - (DTY (\SFInvert DESTBITMAP (IPLUS top stody))) - (DLX (IPLUS left stodx)) - (STY (\SFInvert SOURCEBITMAP top)) - (SLX left)) - (replace PBTWIDTH of PILOTBBT with WIDTH) - (replace PBTHEIGHT of PILOTBBT with HEIGHT) - (COND - ((EQ SOURCETYPE (QUOTE MERGE)) - (\BITBLT.MERGE PILOTBBT SOURCEBITMAP SLX STY DESTBITMAP DLX DTY WIDTH HEIGHT - OPERATION TEXTURE)) - (T (\BITBLTSUB PILOTBBT SOURCEBITMAP SLX STY DESTBITMAP DLX DTY HEIGHT - SOURCETYPE OPERATION TEXTURE] - [(EQ SOURCENBITS 1) (* going from a black - and white bitmap to a - color map) - (AND SOURCETYPE (NEQ SOURCETYPE (QUOTE INPUT)) - (ERROR "SourceType not implemented from B&W to color bitmaps." SOURCETYPE)) - (PROG ((HEIGHT (IDIFFERENCE top bottom)) - (WIDTH (IDIFFERENCE right left)) - (DBOT (IPLUS bottom stody)) - (DLFT (IPLUS left stodx))) - (SELECTQ OPERATION - ((NIL REPLACE) - (\BWTOCOLORBLT SOURCEBITMAP left bottom DESTBITMAP DLFT DBOT WIDTH - HEIGHT (COLORNUMBERP (fetch (\DISPLAYDATA DDBACKGROUNDCOLOR) - of DESTDD)) - (COLORNUMBERP (fetch (\DISPLAYDATA DDFOREGROUNDCOLOR) - of DESTDD)) - DESTINATIONNBITS)) - (PAINT) - (INVERT) - (ERASE) - (SHOULDNT] - (T (* going from color map - into black and white - map.) - (ERROR "not implemented to blt between bitmaps of different pixel size."))) - (RETURN T]) - -(\BLTCHAR.C150 - [LAMBDA (CHARCODE C150STREAM C150DATA) (* hdj - "19-Jul-85 13:32") - - (* * puts a character on a C150STREAM. - Since a C150STREAM is based on a color bitmap stream, we can use - \SLOWBLTCHAR) - - [COND - ((NEQ (ffetch DDCHARSET of C150DATA) - (\CHARSET CHARCODE)) (* The charset has - changed.) - (\CHANGECHARSET.C150 C150DATA (\CHARSET CHARCODE] - (LET [(CHAR8CODE (\CHAR8CODE CHARCODE)) - (ROTATION (ffetch (FONTDESCRIPTOR ROTATION) of (ffetch DDFONT of C150DATA] - (COND - [(EQ 0 ROTATION) - (PROG (NEWX LEFT RIGHT (CURX (ffetch DDXPOSITION of C150DATA))) - [COND - ((IGREATERP (SETQ NEWX (IPLUS CURX (\DSPGETCHARWIDTH CHAR8CODE C150DATA))) - (ffetch DDRightMargin of C150DATA)) (* past RIGHT margin, - force eol) - (\DSPPRINTCR/LF.C150 (CHARCODE EOL) - C150STREAM) - (SETQ CURX (ffetch DDXPOSITION of C150DATA)) - (SETQ NEWX (IPLUS CURX (\DSPGETCHARWIDTH CHAR8CODE C150DATA] - (* update the x - position.) - (freplace DDXPOSITION of C150DATA with NEWX) - (SETQ LEFT (IMAX (ffetch DDClippingLeft of C150DATA) - CURX)) - (SETQ RIGHT (IMIN (ffetch DDClippingRight of C150DATA) - NEWX)) - (COND - ((AND (ILESSP LEFT RIGHT) - (NEQ (ffetch PBTHEIGHT of (SETQ NEWX (ffetch DDPILOTBBT of C150DATA))) - 0)) - (SELECTQ (ffetch (BITMAP BITMAPBITSPERPIXEL) of (ffetch (\DISPLAYDATA - DDDestination) - of C150DATA)) - (1 (freplace PBTDESTBIT of NEWX with LEFT) - (freplace PBTWIDTH of NEWX with (IDIFFERENCE RIGHT LEFT)) - (freplace PBTSOURCEBIT of NEWX with (IDIFFERENCE (IPLUS ( - \DSPGETCHAROFFSET - CHAR8CODE - C150DATA) - LEFT) - CURX)) - (\PILOTBITBLT NEWX 0)) - (4 (freplace PBTDESTBIT of NEWX with (SETQ LEFT (LLSH LEFT 2))) - (freplace PBTWIDTH of NEWX with (IDIFFERENCE (LLSH RIGHT 2) - LEFT)) - (freplace PBTSOURCEBIT of NEWX - with (IDIFFERENCE (IPLUS (LLSH (\DSPGETCHAROFFSET CHAR8CODE C150DATA - ) - 2) - LEFT) - (LLSH CURX 2))) - (\PILOTBITBLT NEWX 0)) - (8 (freplace PBTDESTBIT of NEWX with (SETQ LEFT (LLSH LEFT 3))) - (freplace PBTWIDTH of NEWX with (IDIFFERENCE (LLSH RIGHT 3) - LEFT)) - (freplace PBTSOURCEBIT of NEWX - with (IDIFFERENCE (IPLUS (LLSH (\DSPGETCHAROFFSET CHAR8CODE C150DATA - ) - 3) - LEFT) - (LLSH CURX 3))) - (\PILOTBITBLT NEWX 0)) - (SHOULDNT)) - T] - (T (* handle rotated fonts) - (LET [(YPOS (ffetch DDYPOSITION of C150DATA)) - (HEIGHTMOVED (\DSPGETCHARWIDTH CHAR8CODE C150DATA)) - (CSINFO (\GETCHARSETINFO (\CHARSET CHARCODE) - (ffetch DDFONT of C150DATA] - (COND - ((EQ ROTATION 90) (* don't force CR for - rotated fonts.) - (\DSPYPOSITION.C150 C150STREAM (IPLUS YPOS HEIGHTMOVED)) - (* update the display - stream x position.) - (BITBLT (ffetch (CHARSETINFO CHARSETBITMAP) of CSINFO) - 0 - (\DSPGETCHAROFFSET CHAR8CODE C150DATA) - C150STREAM - (ADD1 (IDIFFERENCE (ffetch DDXPOSITION of C150DATA) - (ffetch (CHARSETINFO CHARSETASCENT) of CSINFO))) - YPOS - (IPLUS (ffetch (CHARSETINFO CHARSETASCENT) of CSINFO) - (ffetch (CHARSETINFO CHARSETDESCENT) of CSINFO)) - HEIGHTMOVED)) - ((EQ ROTATION 270) - (\DSPYPOSITION.C150 C150STREAM (IDIFFERENCE YPOS HEIGHTMOVED)) - (BITBLT (ffetch (CHARSETINFO CHARSETBITMAP) of CSINFO) - 0 - (\DSPGETCHAROFFSET CHAR8CODE C150DATA) - C150STREAM - (IDIFFERENCE (ffetch DDXPOSITION of C150DATA) - (ffetch (CHARSETINFO CHARSETDESCENT) of CSINFO)) - (ffetch DDYPOSITION of C150STREAM) - (IPLUS (ffetch (CHARSETINFO CHARSETASCENT) of CSINFO) - (ffetch (CHARSETINFO CHARSETDESCENT) of CSINFO)) - HEIGHTMOVED)) - (T (ERROR "Not implemented to rotate by other than 0, 90 or 270"]) - -(\BLTSHADE.C150 - [LAMBDA (TEXTURE STREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT OPERATION CLIPPINGREGION) - (* gbn - " 5-Nov-85 18:42") - (* BLTSHADE to C150 - color printer) - (DECLARE (LOCALVARS . T)) - (PROG (left top bottom right DESTINATIONNBITS DESTINATIONBITMAP (DESTDD (fetch IMAGEDATA - of STREAM))) - (SETQ DESTINATIONLEFT DESTINATIONLEFT) - (SETQ DESTINATIONBOTTOM DESTINATIONBOTTOM) - [PROGN (* compute limits based - on clipping regions.) - (SETQ left (fetch DDClippingLeft of DESTDD)) - (SETQ bottom (fetch DDClippingBottom of DESTDD)) - (SETQ right (fetch DDClippingRight of DESTDD)) - (SETQ top (fetch DDClippingTop of DESTDD)) - (COND - (CLIPPINGREGION (* hard case, two - destination clipping - regions: do - calculations to merge - them.) - (PROG (CRLEFT CRBOTTOM) - [SETQ left (IMAX left (SETQ CRLEFT (fetch LEFT of CLIPPINGREGION] - [SETQ bottom (IMAX bottom (SETQ CRBOTTOM (fetch BOTTOM of - CLIPPINGREGION - ] - [SETQ right (IMIN right (IPLUS CRLEFT (fetch WIDTH of CLIPPINGREGION - ] - (SETQ top (IMIN top (IPLUS CRBOTTOM (fetch HEIGHT of CLIPPINGREGION] - [SETQ DESTINATIONNBITS (fetch (BITMAP BITMAPBITSPERPIXEL) of (SETQ DESTINATIONBITMAP - (fetch DDDestination - of DESTDD] - (* SETQ right - (\PIXELOFBITADDRESS - DESTINATIONNBITS right)) - (* left, right top and - bottom are the limits - in destination taking - into account Clipping - Regions. Clip to region - in the arguments of - this call.) - [PROGN (SETQ left (IMAX DESTINATIONLEFT left)) - (SETQ bottom (IMAX DESTINATIONBOTTOM bottom)) - [COND - (WIDTH (* WIDTH is optional) - (SETQ right (IMIN (IPLUS DESTINATIONLEFT WIDTH) - right] - (COND - (HEIGHT (* HEIGHT is optional) - (SETQ top (IMIN (IPLUS DESTINATIONBOTTOM HEIGHT) - top] - (COND - ((OR (ILEQ right left) - (ILEQ top bottom)) (* there is nothing to - move.) - (RETURN))) - [SETQ TEXTURE (COND - ((NULL TEXTURE) - (DSPBACKCOLOR NIL STREAM)) - [(FIXP TEXTURE) (* if fixp use the low - order bits as a color - number. This picks up - the case of BLACKSHADE - being used to INVERT.) - (OR (COLORNUMBERP TEXTURE DESTINATIONNBITS T) - (LOGAND TEXTURE (COND - ((EQ DESTINATIONNBITS 4) - 15) - (T 255] - (T (\C150.ASSURE.COLOR TEXTURE STREAM] (* filling an area with - a texture.) - (SETQ left (ITIMES DESTINATIONNBITS left)) - (SETQ right (ITIMES DESTINATIONNBITS right)) - (SETQ TEXTURE (COLORTEXTUREFROMCOLOR# TEXTURE DESTINATIONNBITS)) (* easy case of black - and white bitmap into - black and white or - color to color or - texture filling.) - - (* We'd rather handle the slow case when we are interruptable, so we do it - here as a heuristic. But we might get interrupted before we go - interruptable, so we do it there too.) - - (PROG ([PILOTBBT (COND - ((type? PILOTBBT \SYSPILOTBBT) - \SYSPILOTBBT) - (T (SETQ \SYSPILOTBBT (create PILOTBBT] - (HEIGHT (IDIFFERENCE top bottom))) - (replace PBTWIDTH of PILOTBBT with (IDIFFERENCE right left)) - (replace PBTHEIGHT of PILOTBBT with HEIGHT) - (\BITBLTSUB PILOTBBT NIL left NIL DESTINATIONBITMAP left (\SFInvert DESTINATIONBITMAP - top) - HEIGHT - (QUOTE TEXTURE) - (OR OPERATION (ffetch (\DISPLAYDATA DDOPERATION) of DESTDD)) - TEXTURE)) - (RETURN T]) - -(\C150.CRLF - [LAMBDA (STREAM) (* hdj - "25-Jan-85 17:11") - (* Send a CRLF to the - printer) - (BOUT STREAM (CHARCODE CR)) - (BOUT STREAM (CHARCODE LF]) - -(\CHANGECHARSET.C150 - [LAMBDA (DISPLAYDATA CHARSET) (* hdj - "19-Jul-85 13:48") - (* Called when the - character set - information cached in a - display stream doesn't - correspond to CHARSET) - (PROG [BM (PBT (ffetch DDPILOTBBT of DISPLAYDATA)) - (CSINFO (COND - ((IEQP 1 (fetch (BITMAP BITMAPBITSPERPIXEL) of (fetch (\DISPLAYDATA - DDDestination) - of DISPLAYDATA))) - (\GETCHARSETINFO CHARSET (ffetch DDFONT of DISPLAYDATA))) - (T (\GETCOLORCSINFO (fetch (\DISPLAYDATA DDFONT) of DISPLAYDATA) - (fetch DDFOREGROUNDCOLOR of DISPLAYDATA) - (fetch DDBACKGROUNDCOLOR of DISPLAYDATA) - (fetch (BITMAP BITMAPBITSPERPIXEL) of (fetch (\DISPLAYDATA - DDDestination) - of DISPLAYDATA)) - CHARSET] - (UNINTERRUPTABLY - (freplace DDWIDTHSCACHE of DISPLAYDATA with (ffetch (CHARSETINFO WIDTHS) of CSINFO)) - (freplace DDOFFSETSCACHE of DISPLAYDATA with (ffetch (CHARSETINFO OFFSETS) of CSINFO)) - (freplace DDCHARIMAGEWIDTHS of DISPLAYDATA with (ffetch (CHARSETINFO IMAGEWIDTHS) - of CSINFO)) - (freplace DDCHARSET of DISPLAYDATA with CHARSET) - (SETQ BM (ffetch CHARSETBITMAP of CSINFO)) - (freplace PBTSOURCEBPL of PBT with (UNFOLD (ffetch BITMAPRASTERWIDTH of BM) - BITSPERWORD)) - [if (OR (NEQ (ffetch DDCHARSETASCENT of DISPLAYDATA) - (ffetch CHARSETASCENT of CSINFO)) - (NEQ (ffetch DDCHARSETDESCENT of DISPLAYDATA) - (ffetch CHARSETDESCENT of CSINFO))) - then (\SFFixY DISPLAYDATA CSINFO) - else (freplace PBTSOURCE of PBT with (\ADDBASE (ffetch BITMAPBASE of BM) - (ITIMES (ffetch BITMAPRASTERWIDTH - of BM) - (ffetch DDCHARHEIGHTDELTA - of DISPLAYDATA])]) - -(\CHARWIDTH.C150 - [LAMBDA (C150STREAM CHARCODE) (* hdj - " 5-Jun-85 12:56") - (* gets the width of a - character code in a - display stream. - Need to fix up for - spacefactor.) - (\FGETWIDTH (ffetch (\DISPLAYDATA DDWIDTHSCACHE) of (ffetch IMAGEDATA of C150STREAM)) - CHARCODE]) - -(\CLOSEFN.C150 - [LAMBDA (C150STREAM) (* hdj - " 4-Oct-85 12:31") - - (* * do cleanup prefatory to closing. dump last buffer and close the - backing stream) - - (LET ((DD (fetch (STREAM IMAGEDATA) of C150STREAM))) - [\DUMPPAGEBUFFER.C150 (fetch DDDestination of DD) - C150STREAM - (OR \C150COLORTABLE (SETQ \C150COLORTABLE (COLORMAP.TO.C150TABLE C150COLORMAP] - (CLOSEF (\C150BackingStream C150STREAM]) - -(\CREATEC150FONT - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHARSET) (* gbn - " 8-Jan-86 17:09") - - (* * create a font for the C150, synthesizing it if we must) - - (PROG [(FONTDESC (create FONTDESCRIPTOR - FONTDEVICE _(QUOTE C150) - FONTFAMILY _ FAMILY - FONTSIZE _ SIZE - FONTFACE _ FACE - \SFAscent _ 0 - \SFDescent _ 0 - \SFHeight _ 0 - ROTATION _ ROTATION - FONTDEVICESPEC _(LIST FAMILY SIZE FACE ROTATION (QUOTE C150] - (if (\GETCHARSETINFO CHARSET FONTDESC T) - then (RETURN FONTDESC) - else (RETURN NIL]) - -(\READC150FONTFILE - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHARSET) (* hdj - "26-Sep-85 21:49") - (DECLARE (GLOBALVARS C150FONTEXTENSIONS C150FONTDIRECTORIES)) - (bind FONTFILE CSINFO STRM for EXT inside C150FONTEXTENSIONS - when (SETQ FONTFILE (FINDFILE (\FONTFILENAME FAMILY SIZE FACE EXT CHARSET) - T C150FONTDIRECTORIES)) - do (SETQ STRM (OPENSTREAM FONTFILE (QUOTE INPUT))) - (RESETLST (SETQ CSINFO (\READACFONTFILE STRM FAMILY SIZE FACE))) - - (* If not a recognizable format, I guess we should keep looking for - another possible extension, altho it would also be nice to tell the user - that he has a bogus file.) - - (RETURN CSINFO]) - -(\DRAWCIRCLE.C150 - [LAMBDA (C150STREAM CENTERX CENTERY RADIUS BRUSH DASHING) (* gbn - " 9-Jan-86 13:36") - (* \DRAWCIRCLE.C150 - extended for color. - Color is specified by - either BRUSH or the - DSPCOLOR of DS.) - - (* * how is a litatom passed in as brush?) - - (DECLARE (LOCALVARS . T)) - (COND - ((OR (NOT (NUMBERP RADIUS)) - (ILESSP (SETQ RADIUS (FIXR RADIUS)) - 0)) - (\ILLEGAL.ARG RADIUS)) - ((EQ RADIUS 0) (* don't draw anything.) - NIL) - (T (GLOBALRESOURCE \BRUSHBBT - (PROG ((BRUSH (create BRUSH using BRUSH BRUSHCOLOR _(\C150.ASSURE.COLOR (fetch - BRUSHCOLOR - of BRUSH) - C150STREAM))) - (X 0) - (Y RADIUS) - (D (ITIMES 2 (IDIFFERENCE 1 RADIUS))) - DestinationBitMap LEFT RIGHTPLUS1 TOP BOTTOM BRUSHWIDTH BRUSHHEIGHT - LEFTMINUSBRUSH BOTTOMMINUSBRUSH TOPMINUSBRUSH BRUSHBM DESTINATIONBASE - BRUSHBASE RASTERWIDTH BRUSHRASTERWIDTH NBITSRIGHTPLUS1 OPERATION HEIGHTMINUS1 - CX CY (BBT \BRUSHBBT) - COLOR COLORBRUSHBASE NBITS (DISPLAYDATA (fetch IMAGEDATA of C150STREAM)) - (USERFN (AND (LITATOM BRUSH) - BRUSH))) (* many of these - variables are used by - the macro for \CURVEPT - that passes them to - \BBTCURVEPT and - .SETUP.FOR.\BBTCURVEPT. - sets them up.) - (COND - (USERFN (* if calling user fn, - don't bother with set - up and leave points in - stream coordinates.) - (SETQ CX CENTERX) - (SETQ CY CENTERY)) - (T (.SETUP.FOR.\BBTCURVEPT.) - (SELECTQ NBITS - (1 (SETQ CX (IDIFFERENCE CENTERX (FOLDLO BRUSHWIDTH 2)))) - (4 (SETQ CX (IDIFFERENCE CENTERX (FOLDLO (LRSH BRUSHWIDTH 2) - 2)))) - (8 (SETQ CX (IDIFFERENCE CENTERX (FOLDLO (LRSH BRUSHWIDTH 3) - 2)))) - (SHOULDNT)) (* take into account - the brush thickness.) - (SETQ CY (IDIFFERENCE CENTERY (FOLDLO BRUSHHEIGHT 2))) - (* Move the window to - top while - interruptable, but - verify that it is still - there uninterruptably - with drawing points) - )) - [COND - ((EQ RADIUS 1) (* put a single brush - down.) - (* draw the top and - bottom most points.) - (COND - (USERFN (APPLY* USERFN CX CY C150STREAM)) - (T (\CURVEPT CX CY))) - (RETURN)) - (T (* draw the top and - bottom most points.) - (COND - (USERFN (APPLY* USERFN CX (IPLUS CY RADIUS) - C150STREAM) - (APPLY* USERFN CX (IDIFFERENCE CY RADIUS) - C150STREAM)) - (T (\CURVEPT CX (IPLUS CY RADIUS)) - (\CURVEPT CX (IDIFFERENCE CY RADIUS] - LP (* (UNFOLD x 2) is used - instead of (ITIMES x 2)) - [COND - [(IGREATERP 0 D) - (SETQ X (ADD1 X)) - (COND - ((IGREATERP (UNFOLD (IPLUS D Y) - 2) - 1) - (SETQ D (IPLUS D (UNFOLD (IDIFFERENCE X Y) - 2) - 4)) - (SETQ Y (SUB1 Y))) - (T (SETQ D (IPLUS D (UNFOLD X 2) - 1] - ((OR (EQ 0 D) - (IGREATERP X D)) - (SETQ X (ADD1 X)) - (SETQ D (IPLUS D (UNFOLD (IDIFFERENCE X Y) - 2) - 4)) - (SETQ Y (SUB1 Y))) - (T (SETQ D (IPLUS (IDIFFERENCE D (UNFOLD Y 2)) - 3)) - (SETQ Y (SUB1 Y] - (COND - [(EQ Y 0) (* left most and right - most points are drawn - specially so that they - are not duplicated - which leaves a hole in - XOR mode.) - (COND - (USERFN (APPLY* USERFN (IPLUS CX X) - CY C150STREAM) - (APPLY* USERFN (IDIFFERENCE CX X) - CY C150STREAM)) - (T (\CURVEPT (IPLUS CX X) - CY) - (\CURVEPT (IDIFFERENCE CX X) - CY] - (T (COND - (USERFN (APPLY* USERFN (IPLUS CX X) - (IPLUS CY Y) - C150STREAM) - (APPLY* USERFN (IDIFFERENCE CX X) - (IPLUS CY Y) - C150STREAM) - (APPLY* USERFN (IPLUS CX X) - (IDIFFERENCE CY Y) - C150STREAM) - (APPLY* USERFN (IDIFFERENCE CX X) - (IDIFFERENCE CY Y) - C150STREAM)) - (T (\CIRCLEPTS CX CY X Y))) - (GO LP))) - (MOVETO CENTERX CENTERY C150STREAM) - (RETURN NIL]) - -(\DRAWCURVE.C150 - [LAMBDA (C150STREAM KNOTS CLOSED BRUSH DASHING) (* gbn - "12-Jan-86 15:03") - (* draws a spline curve - with a given brush.) - (GLOBALRESOURCE \BRUSHBBT (PROG ([DASHLST (AND DASHING - (OR (AND (LISTP DASHING) - (EVERY DASHING (FUNCTION FIXP)) - DASHING) - (\ILLEGAL.ARG DASHING] - (BBT \BRUSHBBT) - (CBRUSH (CREATE BRUSH USING BRUSH BRUSHCOLOR _( - \C150.ASSURE.COLOR - (FETCH BRUSHCOLOR - OF BRUSH) - C150STREAM))) - LKNOT) - (SELECTQ (LENGTH KNOTS) - (0 (* No knots => empty - curve rather than - error?) - NIL) - (1 (* only one knot, put - down a brush shape) - (OR (type? POSITION (CAR KNOTS)) - (ERROR "bad knot" (CAR KNOTS))) - (DRAWPOINT (fetch XCOORD of (CAR KNOTS)) - (fetch YCOORD of (CAR KNOTS)) - BRUSH C150STREAM)) - (2 (OR (type? POSITION (CAR KNOTS)) - (ERROR "bad knot" (CAR KNOTS))) - (OR (type? POSITION (CADR KNOTS)) - (ERROR "bad knot" (CADR KNOTS))) - (\LINEWITHBRUSH (fetch XCOORD of (CAR KNOTS)) - (fetch YCOORD of (CAR KNOTS)) - (fetch XCOORD of (CADR KNOTS)) - (fetch YCOORD of (CADR KNOTS)) - BRUSH DASHLST C150STREAM BBT)) - (\CURVE2 (PARAMETRICSPLINE KNOTS CLOSED) - CBRUSH DASHLST BBT C150STREAM)) - (RETURN C150STREAM]) - -(\DRAWELLIPSE.C150 - [LAMBDA (DISPLAYSTREAM CENTERX CENTERY SEMIMINORRADIUS SEMIMAJORRADIUS ORIENTATION BRUSH DASHING) - (* hdj - " 6-Jun-85 16:17") - (DECLARE (LOCALVARS . T)) - - (* Draws an ellipse. At ORIENTATION 0, the semimajor axis is horizontal, - the semiminor axis vertical. Orientation is positive in the - counterclockwise direction. The current location in the stream is left at - the center of the ellipse.) - - (PROG ((CENTERX (FIXR CENTERX)) - (CENTERY (FIXR CENTERY)) - (SEMIMINORRADIUS (FIXR SEMIMINORRADIUS)) - (SEMIMAJORRADIUS (FIXR SEMIMAJORRADIUS))) - (COND - ((OR (EQ 0 SEMIMINORRADIUS) - (EQ 0 SEMIMAJORRADIUS)) - (MOVETO CENTERX CENTERY DISPLAYSTREAM) - (RETURN))) - (COND - ((ILESSP SEMIMINORRADIUS 1) - (\ILLEGAL.ARG SEMIMINORRADIUS)) - ((ILESSP SEMIMAJORRADIUS 1) - (\ILLEGAL.ARG SEMIMAJORRADIUS)) - ((OR (NULL ORIENTATION) - (EQ SEMIMINORRADIUS SEMIMAJORRADIUS)) - (SETQ ORIENTATION 0)) - ((NULL (NUMBERP ORIENTATION)) - (\ILLEGAL.ARG ORIENTATION))) - - (* This function is the implementation of the algorithm given in - "Algorithm for drawing ellipses or hyperbolae with a digital plotter" by - Pitteway appearing in Computer Journal 10: - (3) Nov 1967.0 The input parameters are used to determine the ellipse - equation (1/8) Ayy+ (1/8) Bxx+ (1/4) Gxy+ - (1/4) Ux+ (1/4) Vy= (1/4) K which specifies a translated version of the - desired ellipse. This ellipse passes through the mesh point - (0,0), the initial point of the algorithm. - The power of 2 factors reflect an implementation convenience.) - - (GLOBALRESOURCE \BRUSHBBT - (PROG (DestinationBitMap LEFT RIGHTPLUS1 BOTTOM TOP BOTTOMMINUSBRUSH TOPMINUSBRUSH - LEFTMINUSBRUSH DESTINATIONBASE BRUSHBASE BRUSHHEIGHT BRUSHWIDTH - RASTERWIDTH BRUSHRASTERWIDTH BRUSHBM OPERATION HEIGHTMINUS1 - (BBT \BRUSHBBT) - (cosOrientation (COS ORIENTATION)) - (sinOrientation (SIN ORIENTATION)) - (SEMIMINORRADIUSSQUARED (ITIMES SEMIMINORRADIUS SEMIMINORRADIUS)) - (SEMIMAJORRADIUSSQUARED (ITIMES SEMIMAJORRADIUS SEMIMAJORRADIUS)) - (x 0) - (y 0) - (x2 1) - x1 y1 y2 k1 k2 k3 a b d w A B G U V K CX CY yOffset CYPlusOffset - CYMinusOffset NBITSRIGHTPLUS1 COLORBRUSHBASE COLOR NBITS - (DISPLAYDATA (fetch IMAGEDATA of DISPLAYSTREAM)) - (USERFN (AND (LITATOM BRUSH) - BRUSH))) (* many of these - variables are used by - the macro for \CURVEPT - that passes them to - \BBTCURVEPT and - .SETUP.FOR.\BBTCURVEPT. - sets them up.) - (COND - (USERFN (* if calling user fn, - don't bother with set - up and leave points in - window coordinates.) - (SETQ CX CENTERX) - (SETQ CY CENTERY)) - (T (.SETUP.FOR.\BBTCURVEPT.) (* take into account - the brush thickness.) - (SELECTQ NBITS - (1 (SETQ CX (IDIFFERENCE CENTERX (FOLDLO BRUSHWIDTH 2)))) - (4 (SETQ CX (IDIFFERENCE CENTERX (FOLDLO (LRSH BRUSHWIDTH 2) - 2)))) - (8 (SETQ CX (IDIFFERENCE CENTERX (FOLDLO (LRSH BRUSHWIDTH 3) - 2)))) - (SHOULDNT)) - (SETQ CY (IDIFFERENCE CENTERY (FOLDLO BRUSHHEIGHT 2))) - (* Move the window to - top while - interruptable, but - verify that it is still - there uninterruptably - with drawing points) - )) - (SETQ A (FPLUS (FTIMES SEMIMAJORRADIUSSQUARED cosOrientation cosOrientation) - (FTIMES SEMIMINORRADIUSSQUARED sinOrientation sinOrientation))) - (SETQ B (LSH (FIXR (FPLUS (FTIMES SEMIMINORRADIUSSQUARED cosOrientation - cosOrientation) - (FTIMES SEMIMAJORRADIUSSQUARED sinOrientation - sinOrientation))) - 3)) - (SETQ G (FTIMES cosOrientation sinOrientation (LSH (IDIFFERENCE - SEMIMINORRADIUSSQUARED - SEMIMAJORRADIUSSQUARED - ) - 1))) - [SETQ yOffset (FIXR (FQUOTIENT (ITIMES SEMIMINORRADIUS SEMIMAJORRADIUS) - (SQRT A] - (SETQ CYPlusOffset (IPLUS CY yOffset)) - (SETQ CYMinusOffset (IDIFFERENCE CY yOffset)) - (SETQ U (LSH (FIXR (FTIMES A (LSH yOffset 1))) - 2)) - (SETQ V (LSH (FIXR (FTIMES G yOffset)) - 2)) - (SETQ K (LSH [FIXR (FDIFFERENCE (ITIMES SEMIMINORRADIUSSQUARED - SEMIMAJORRADIUSSQUARED) - (FTIMES A (ITIMES yOffset yOffset] - 2)) - (SETQ A (LSH (FIXR A) - 3)) - (SETQ G (LSH (FIXR G) - 2)) - - (* The algorithm is incremental and iterates through the octants of a - cartesian plane. The octants are labeled from 1 through 8 beginning above - the positive X axis and proceeding counterclockwise. - Decisions in making the incremental steps are determined according to the - error term d which is updated according to the curvature terms a and b. - k1, k2, and k3 are used to correct the error and curvature terms at octant - boundaries. The initial values of these terms depends on the octant in - which drawing begins. The initial move steps - (x1,y1) and (x2,y2) also depend on the starting octant.) - - [COND - [(ILESSP (ABS U) - (ABS V)) - (SETQ x1 0) - (COND - [(MINUSP V) (* start in octant 2) - (SETQ y1 1) - (SETQ y2 1) - (SETQ k1 (IMINUS A)) - (SETQ k2 (IDIFFERENCE k1 G)) - (SETQ k3 (IDIFFERENCE k2 (IPLUS B G))) - (SETQ b (IPLUS U (RSH (IPLUS A G) - 1))) - (SETQ a (IMINUS (IPLUS b V))) - (SETQ d (IPLUS b (RSH B 3) - (RSH V 1) - (IMINUS K] - (T (* start in octant 7) - (SETQ y1 -1) - (SETQ y2 -1) - (SETQ k1 A) - (SETQ k2 (IDIFFERENCE k1 G)) - (SETQ k3 (IPLUS k2 B (IMINUS G))) - (SETQ b (IPLUS U (RSH (IDIFFERENCE G A) - 1))) - (SETQ a (IDIFFERENCE V b)) - (SETQ d (IPLUS b K (IMINUS (IPLUS (RSH V 1) - (RSH B 3] - (T (SETQ x1 1) - (SETQ y1 0) - (COND - [(MINUSP V) (* start in octant 1) - (SETQ y2 1) - (SETQ k1 B) - (SETQ k2 (IPLUS k1 G)) - (SETQ k3 (IPLUS k2 A G)) - [SETQ b (IMINUS (IPLUS V (RSH (IPLUS B G) - 1] - (SETQ a (IDIFFERENCE U b)) - (SETQ d (IPLUS b K (IMINUS (IPLUS (RSH A 3) - (RSH U 1] - (T (* start in octant 8) - (SETQ y2 -1) - (SETQ k1 (IMINUS B)) - (SETQ k2 (IPLUS k1 G)) - (SETQ k3 (IPLUS k2 G (IMINUS A))) - (SETQ b (IPLUS V (RSH (IDIFFERENCE B G) - 1))) - (SETQ a (IDIFFERENCE U b)) - (SETQ d (IPLUS b (RSH A 3) - (IMINUS (IPLUS K (RSH U 1] - - (* The ellipse equation describes an ellipse of the desired size and - ORIENTATION centered at (0,0) and then dropped yOffset mesh points so that - it will pass through (0,0)%. Thus, the intended starting point is - (CX, CY+yOffset) where (CX, CY) is the center of the desired ellipse. - Drawing is accomplished with point relative steps. - In each octant, the error term d is used to choose between move 1 - (an axis move) and move 2 (a diagonal move)%.) - - MOVE - [COND - ((MINUSP d) (* move 1) - (SETQ x (IPLUS x x1)) - (SETQ y (IPLUS y y1)) - (SETQ b (IDIFFERENCE b k1)) - (SETQ a (IPLUS a k2)) - (SETQ d (IPLUS b d))) - (T (* move 2) - (SETQ x (IPLUS x x2)) - (SETQ y (IPLUS y y2)) - (SETQ b (IDIFFERENCE b k2)) - (SETQ a (IPLUS a k3)) - (SETQ d (IDIFFERENCE d a] - (COND - ((MINUSP x) - (MOVETO CENTERX CENTERY DISPLAYSTREAM) - (RETURN NIL))) - [COND - (USERFN (APPLY* USERFN (IPLUS CX x) - (IPLUS CYPlusOffset y) - DISPLAYSTREAM) - (APPLY* USERFN (IDIFFERENCE CX x) - (IDIFFERENCE CYMinusOffset y) - DISPLAYSTREAM)) - (T (\CURVEPT (IPLUS CX x) - (IPLUS CYPlusOffset y)) - (\CURVEPT (IDIFFERENCE CX x) - (IDIFFERENCE CYMinusOffset y] - (AND (MINUSP b) - (GO SQUARE)) - DIAGONAL - (OR (MINUSP a) - (GO MOVE)) (* diagonal octant - change) - (SETQ x1 (IDIFFERENCE x2 x1)) - (SETQ y1 (IDIFFERENCE y2 y1)) - (SETQ w (IDIFFERENCE (LSH k2 1) - k3)) - (SETQ k1 (IDIFFERENCE w k1)) - (SETQ k2 (IDIFFERENCE k2 k3)) - (SETQ k3 (IMINUS k3)) - [SETQ b (IPLUS b a (IMINUS (RSH (ADD1 k2) - 1] - [SETQ d (IPLUS b (RSH (IPLUS k3 4) - 3) - (IMINUS d) - (IMINUS (RSH (ADD1 a) - 1] - (SETQ a (IDIFFERENCE (RSH (ADD1 w) - 1) - a)) - (OR (MINUSP b) - (GO MOVE)) - SQUARE - (* square octant change) - [COND - ((EQ 0 x1) - (SETQ x2 (IMINUS x2))) - (T (SETQ y2 (IMINUS y2] - (SETQ w (IDIFFERENCE k2 k1)) - (SETQ k1 (IMINUS k1)) - (SETQ k2 (IPLUS w k1)) - (SETQ k3 (IDIFFERENCE (LSH w 2) - k3)) - (SETQ b (IDIFFERENCE (IMINUS b) - w)) - (SETQ d (IDIFFERENCE (IDIFFERENCE b a) - d)) - (SETQ a (IDIFFERENCE (IDIFFERENCE a w) - (LSH b 1))) - (GO DIAGONAL]) - -(\DRAWLINE.C150 - [LAMBDA (C150STREAM X1 Y1 X2 Y2 WIDTH OPERATION COLOR) (* gbn - " 5-Nov-85 13:39") - (* C150STREAM is - guaranteed to be a - C150STREAM Draws a line - from x1,y1 to x2,y2 - leaving the position at - x2,y2) - (PROG ((DD (fetch IMAGEDATA of C150STREAM))) - (\CLIPANDDRAWLINE (OR (FIXP X1) - (FIXR X1)) - (OR (FIXP Y1) - (FIXR Y1)) - (OR (FIXP X2) - (FIXR X2)) - (OR (FIXP Y2) - (FIXR Y2)) - [COND - ((NULL WIDTH) - 1) - ((OR (FIXP WIDTH) - (FIXR WIDTH] - (SELECTQ OPERATION - (NIL (ffetch DDOPERATION of DD)) - ((REPLACE PAINT INVERT ERASE) - OPERATION) - (\ILLEGAL.ARG OPERATION)) - (ffetch DDDestination of DD) - (ffetch DDClippingLeft of DD) - (SUB1 (ffetch DDClippingRight of DD)) - (ffetch DDClippingBottom of DD) - (SUB1 (ffetch DDClippingTop of DD)) - C150STREAM - (\C150.ASSURE.COLOR COLOR C150STREAM))) (* the generic case of - MOVETO is used so that - the hardcopy streams - get handled as well.) - (MOVETO X2 Y2 C150STREAM]) - -(\DSPBACKCOLOR.C150 - [LAMBDA (STREAM COLOR) (* rmk: - "12-Sep-84 09:54") - (* sets and returns a - display stream's - background color.) - (PROG (COLORCELL (DD (\GETDISPLAYDATA STREAM))) - (SETQ COLORCELL (fetch DDCOLOR of DD)) - (RETURN (COND - (COLOR (OR (\POSSIBLECOLOR COLOR) - (\ILLEGAL.ARG COLOR)) - (PROG1 (COND - (COLORCELL (PROG1 (CDR COLORCELL) - (RPLACD COLORCELL COLOR))) - (T (* no color cell yet, - make one.) - (replace DDCOLOR of DD with (CONS WHITECOLOR COLOR)) - BLACKCOLOR)) - (\SFFixFont STREAM DD))) - (T (OR (CDR COLORCELL) - BLACKCOLOR]) - -(\DSPCLIPPINGREGION.C150 - [LAMBDA (C150STREAM REGION) (* hdj - " 5-Jun-85 12:56") - (* sets the clipping - region of a display - stream.) - (PROG ((DD (\GETDISPLAYDATA C150STREAM))) - (RETURN (PROG1 (ffetch DDClippingRegion of DD) - (COND - (REGION (OR (type? REGION REGION) - (ERROR REGION " is not a REGION.")) - (UNINTERRUPTABLY - (freplace DDClippingRegion of DD with REGION) - (\SFFixClippingRegion DD) - (\SFFixY DD))]) - -(\DSPCOLOR.C150 - [LAMBDA (STREAM COLOR) (* gbn - "13-Jan-86 12:08") - (* sets and returns a - display stream's - foreground color.) - (LET (CURRENTCOLOR NEWCOLOR (DD (\GETDISPLAYDATA STREAM))) - (SETQ CURRENTCOLOR (fetch DDCOLOR of DD)) - (COND - (COLOR (SETQ NEWCOLOR (\C150.ASSURE.COLOR COLOR STREAM)) - (PROG1 (COND - (CURRENTCOLOR (PROG1 (CAR CURRENTCOLOR) - (RPLACA CURRENTCOLOR NEWCOLOR))) - (T (* no color cell yet, - make one.) - (replace DDCOLOR of DD with (CONS NEWCOLOR BLACKCOLOR)) - WHITECOLOR)) - (\SFFixFont STREAM DD))) - (T (OR (CAR CURRENTCOLOR) - WHITECOLOR]) - -(\C150.ASSURE.COLOR - [LAMBDA (COLOR# C150STREAM) (* gbn - " 7-Jan-86 17:44") - (PROG (LEVELS) - (AND (COND - ((NULL COLOR) - (RETURN (DSPCOLOR NIL C150STREAM))) - [(FIXP COLOR#) - (RETURN (COND - ((AND (IGEQ COLOR# 0) - (ILESSP COLOR# 8) - COLOR#)) - (T (\ILLEGAL.ARG COLOR#] - [(LITATOM COLOR#) - (RETURN (COND - ((SETQ LEVELS (\LOOKUPCOLORNAME COLOR#)) (* recursively look up - color number) - (\C150.ASSURE.COLOR (CDR LEVELS) - C150STREAM)) - (T (ERROR "Unknown color name" COLOR#] - ((EQ (LENGTH COLOR#) - 2) (* temporarily, handle - the case of being given - a texture and a color, - by using the color) - (RETURN (\C150.ASSURE.COLOR (CADR COLOR#) - C150STREAM))) - ((HLSP COLOR#) (* HLS form convert to - RGB) - (SETQ LEVELS (HLSTORGB COLOR#))) - ((RGBP COLOR#) (* check for RGB or HLS) - (SETQ LEVELS COLOR#)) - ((TYPENAMEP COLOR# (QUOTE BITMAP)) (* just a hack to not - blow up) - (RETURN (IMOD (for I from 1 to (BITMAPWIDTH COLOR#) - sum (BITMAPBIT COLOR# I 1)) - 8))) - (T (\ILLEGAL.ARG COLOR#))) - (RETURN (COND - ((\C150.LOOKUPRGB LEVELS C150STREAM)) - (T (ERROR COLOR# "not available in color map"]) - -(\C150.LOOKUPRGB - [LAMBDA (RGB C150STREAM) (* gbn - " 5-Nov-85 15:47") - - (* * returns the colormap index whose value is RGB. - Looks first in the cache, then runs through the colormap. - Returns NIL if RGB NOT found) - - (DECLARE (GLOBALVARS C150COLORMAP)) - (PROG [INDEX (CACHE (STREAMPROP C150STREAM (QUOTE COLORMAPCACHE] - (RETURN (if (SETQ INDEX (SASSOC RGB CACHE)) - then (CDR INDEX) - else [SETQ INDEX (bind (CM _ C150COLORMAP) for I from 0 - to (SUB1 (EXPT 2 3)) - thereis (AND (EQ (\GENERIC.COLORLEVEL CM I (QUOTE RED)) - (fetch (RGB RED) of LEVELS)) - (EQ (\GENERIC.COLORLEVEL CM I (QUOTE GREEN)) - (fetch (RGB GREEN) of LEVELS)) - (EQ (\GENERIC.COLORLEVEL CM I (QUOTE BLUE)) - (fetch (RGB BLUE) of LEVELS] - (if INDEX - then (PUTASSOC RGB INDEX CACHE)) - INDEX]) - -(\DSPFONT.C150 - [LAMBDA (C150STREAM FONT) (* hdj - " 4-Oct-85 11:55") - (* sets the font that a - display stream uses to - print characters. - C150STREAM is - guaranteed to be a - stream of type C150) - (PROG (XFONT OLDFONT (DD (fetch IMAGEDATA of C150STREAM))) (* save old value to - return, smash new value - and update the bitchar - portion of the record.) - (RETURN (PROG1 (SETQ OLDFONT (fetch DDFONT of DD)) - (COND - (FONT (SETQ XFONT (OR (\GETFONTDESC FONT (QUOTE C150) - T) - (FONTCOPY (ffetch DDFONT of DD) - FONT))) (* color case, create a - font with the current - foreground and - background colors.) - - (* (SETQ XFONT (\GETCOLORFONT XFONT (DSPCOLOR NIL C150STREAM) - (DSPBACKCOLOR NIL C150STREAM) (ffetch (BITMAP BITMAPBITSPERPIXEL) of - (ffetch (\DISPLAYDATA DDDestination) of DD))))) - (* updating font - information is fairly - expensive operation. - Don't bother unless - font has changed.) - (OR (EQ XFONT OLDFONT) - (UNINTERRUPTABLY - (freplace DDFONT of DD with XFONT) - (freplace DDLINEFEED of DD - with (IMINUS (fetch \SFHeight of XFONT))) - (\SFFixFont C150STREAM DD))]) - -(\DSPLEFTMARGIN.C150 - [LAMBDA (C150STREAM XPOSITION) (* hdj - " 5-Jun-85 12:56") - (* sets the xposition - that a carriage return - returns to.) - (PROG ((DD (fetch IMAGEDATA of C150STREAM))) - (RETURN (PROG1 (ffetch DDLeftMargin of DD) - (AND XPOSITION (COND - ((AND (SMALLP XPOSITION) - (IGREATERP XPOSITION -1)) - (UNINTERRUPTABLY - (freplace DDLeftMargin of DD with XPOSITION) - (\SFFIXLINELENGTH C150STREAM))) - (T (\ILLEGAL.ARG XPOSITION]) - -(\DSPLINEFEED.C150 - [LAMBDA (C150STREAM DELTAY) (* hdj - " 5-Jun-85 12:56") - (* sets the amount that - a line feed increases - the y coordinate by.) - (PROG ((DD (fetch IMAGEDATA of C150STREAM))) - (RETURN (PROG1 (ffetch DDLINEFEED of DD) - (AND DELTAY (COND - ((NUMBERP DELTAY) - (freplace DDLINEFEED of DD with DELTAY)) - (T (\ILLEGAL.ARG DELTAY]) - -(\DSPOPERATION.C150 - [LAMBDA (C150STREAM OPERATION) (* hdj - " 5-Jun-85 12:56") - (* sets the operation - field of a display - stream) - (PROG ((DD (\GETDISPLAYDATA C150STREAM))) - (RETURN (PROG1 (fetch DDOPERATION of DD) - (COND - (OPERATION (OR (FMEMB OPERATION (QUOTE (PAINT REPLACE INVERT ERASE))) - (LISPERROR "ILLEGAL ARG" OPERATION)) - (UNINTERRUPTABLY - (freplace DDOPERATION of DD with OPERATION) - (* update other fields - that depend on - operation.) - (\SETPBTFUNCTION (fetch DDPILOTBBT of DD) - (fetch DDSOURCETYPE of DD) - OPERATION))]) - -(\DSPPRINTCHAR.C150 - [LAMBDA (STREAM CHARCODE) (* hdj - " 5-Jun-85 12:56") - (* Displays the - character and - increments the - Xposition. STREAM is - guaranteed to be of - type display.) - (PROG ((DD (fetch IMAGEDATA of STREAM))) - (SELCHARQ CHARCODE - ((EOL CR LF) - (\DSPPRINTCR/LF.C150 CHARCODE STREAM) - (replace CHARPOSITION of STREAM with 0)) - (LF (\DSPPRINTCR/LF.C150 CHARCODE STREAM)) - (TAB (PROG (TABWIDTH (SPACEWIDTH (CHARWIDTH (CHARCODE SPACE) - STREAM))) - (SETQ TABWIDTH (UNFOLD SPACEWIDTH 8)) - (if (IGREATERP (\DISPLAYSTREAMINCRXPOSITION - (SETQ TABWIDTH (IDIFFERENCE TABWIDTH - (MOD (IDIFFERENCE (fetch DDXPOSITION - of DD) - (ffetch DDLeftMargin - of DD)) - TABWIDTH))) - DD) - (ffetch DDRightMargin of DD)) - then (* tab was past - rightmargin, force cr.) - (\DSPPRINTCR/LF.C150 (CHARCODE EOL) - STREAM)) (* return the number of - spaces taken.) - (add (fetch CHARPOSITION of STREAM) - (IQUOTIENT TABWIDTH SPACEWIDTH)))) - (add (fetch CHARPOSITION of STREAM) - (IPLUS (if (ILESSP CHARCODE 32) - then (* CONTROL character) - (\BLTCHAR.C150 CHARCODE STREAM DD) - 0 - else (\BLTCHAR.C150 CHARCODE STREAM DD) - 1]) - -(\DSPPRINTCR/LF.C150 - [LAMBDA (CHARCODE DS) (* hdj - " 6-Jun-85 14:08") - (* CHARCODE is EOL, CR, - or LF Assumes that DS - has been checked by - \DSPPRINTCHAR) - (PROG (BTM AMOUNT/BELOW Y ROTATION FONT (DD (fetch IMAGEDATA of DS))) - (COND - ((AND (fetch DDSlowPrintingCase of DD) - (NEQ (SETQ ROTATION (fetch (FONTDESCRIPTOR ROTATION) of (fetch DDFONT of DD))) - 0)) - (PROG ((CLIPREG (ffetch DDClippingRegion of DD)) - X) - [COND - ((EQ CHARCODE (CHARCODE EOL)) (* on LF, no change in - X) - (COND - ((SETQ Y (fetch DDEOLFN of DD)) (* call the eol - function for ds.) - (APPLY* Y DS))) - (\DSPYPOSITION.C150 DS (SELECTQ ROTATION - (90 (fetch (REGION BOTTOM) of CLIPREG)) - (270 (fetch (REGION TOP) of CLIPREG)) - (ERROR - "Only rotations supported are 0, 90 and 270" - ] - [SETQ X (IPLUS (fetch DDXPOSITION of DD) - (SELECTQ ROTATION - (90 (IMINUS (ffetch DDLINEFEED of DD))) - (270 (ffetch DDLINEFEED of DD)) - (ERROR "Only rotations supported are 0, 90 and 270"] - (DSPXPOSITION X DS))) - (T (COND - ((EQ CHARCODE (CHARCODE EOL)) (* on LF, no change in - X) - (COND - ((SETQ Y (fetch DDEOLFN of DD)) (* call the eol - function for ds.) - (APPLY* Y DS))) - (DSPXPOSITION (ffetch DDLeftMargin of DD) - DS))) - (SETQ Y (IPLUS (ffetch DDYPOSITION of DD) - (ffetch DDLINEFEED of DD))) - (DSPYPOSITION Y DS]) - -(\DSPRESET.C150 - [LAMBDA (C150STREAM) (* hdj - " 5-Aug-85 18:57") - (DECLARE (GLOBALVARS \CURRENTDISPLAYLINE)) (* resets a display - stream) - (PROG (CREG FONT FONTASCENT (DD (\GETDISPLAYDATA C150STREAM))) - (SETQ CREG (ffetch DDClippingRegion of DD)) - (SETQ FONT (fetch DDFONT of DD)) - (SETQ FONTASCENT (FONTASCENT FONT)) - (SELECTQ (fetch (FONTDESCRIPTOR ROTATION) of FONT) - (0 (\DSPXPOSITION.C150 C150STREAM (ffetch DDLeftMargin of DD)) - (\DSPYPOSITION.C150 C150STREAM (ADD1 (IDIFFERENCE (fetch TOP of CREG) - FONTASCENT)))) - (90 (\DSPXPOSITION.C150 C150STREAM (IPLUS (fetch LEFT of CREG) - FONTASCENT)) - (\DSPYPOSITION.C150 C150STREAM (fetch BOTTOM of CREG))) - (270 (\DSPXPOSITION.C150 C150STREAM (IDIFFERENCE (fetch RIGHT of CREG) - FONTASCENT)) - (\DSPYPOSITION.C150 C150STREAM (fetch TOP of CREG))) - (ERROR "only supported rotations are 0, 90 and 270")) - (\CLEARBM (ffetch (\DISPLAYDATA DDDestination) of DD) - (DSPBACKCOLOR NIL C150STREAM) - CREG]) - -(\DSPRIGHTMARGIN.C150 - [LAMBDA (C150STREAM XPOSITION) (* hdj - " 5-Jun-85 12:56") - (* Sets the right - margin that determines - when a cr is inserted - by print.) - (PROG (OLDRM (DD (fetch IMAGEDATA of C150STREAM))) - (SETQ OLDRM (ffetch DDRightMargin of DD)) - (COND - ((NULL XPOSITION)) - [(AND (SMALLP XPOSITION) - (IGREATERP XPOSITION -1)) (* Avoid fixing - linelength if right - margin hasn't changed.) - (OR (EQ XPOSITION OLDRM) - (UNINTERRUPTABLY - (freplace DDRightMargin of DD with XPOSITION) - (\SFFIXLINELENGTH C150STREAM))] - (T (\ILLEGAL.ARG XPOSITION))) - (RETURN OLDRM]) - -(\DSPXPOSITION.C150 - [LAMBDA (C150STREAM XPOSITION) (* hdj - " 5-Jun-85 12:56") - (* coordinate position - is stored in 15 bits in - the range -2^15 to - +2^15.) - (PROG ((DD (fetch IMAGEDATA of C150STREAM))) - (RETURN (PROG1 (fetch DDXPOSITION of DD) - (COND - ((NULL XPOSITION)) - ((NUMBERP XPOSITION) - (freplace DDXPOSITION of DD with XPOSITION) (* reset the - charposition field so - that PRINT etc. - won't put out eols.) - (freplace (STREAM CHARPOSITION) of C150STREAM with 0)) - (T (\ILLEGAL.ARG XPOSITION]) - -(\DSPYPOSITION.C150 - [LAMBDA (DISPLAYSTREAM YPOSITION) (* hdj - " 3-Oct-85 17:57") - (LET ((DD (fetch IMAGEDATA of DISPLAYSTREAM))) - (PROG1 (ffetch DDYPOSITION of DD) - (COND - ((NULL YPOSITION)) - ((NUMBERP YPOSITION) - (UNINTERRUPTABLY - (freplace DDYPOSITION of DD with YPOSITION) - (\INVALIDATEDISPLAYCACHE DD))) - (T (\ILLEGAL.ARG YPOSITION]) - -(\DUMPPAGEBUFFER.C150 - [LAMBDA (BITMAP C150STREAM COLOR.TABLES) (* gbn - "13-Jan-86 21:37") - (CENTRONICS.RESET C150STREAM) - (LET*[(BACKINGSTREAM (\C150BackingStream C150STREAM)) - (MAXX (SUB1 (BITMAPWIDTH BITMAP))) - (MAXY (SUB1 (BITMAPHEIGHT BITMAP))) - (LINEBYTES (FOLDHI (BITMAPWIDTH BITMAP) - BITSPERBYTE)) - (PrintingTimeInSeconds 1) - (PrintingTimer (SETUPTIMER PrintingTimeInSeconds NIL (QUOTE SECONDS] - (C150.SETMARGINS BACKINGSTREAM) - (C150.SEPARATOR BACKINGSTREAM) - (bind (BLANKLINES _ 0) - (FIRSTLINE _ T) for SCANLINE from MAXY to 0 by -4 - do - (if (\C150.ALLWHITESPACE BITMAP COLOR.TABLES SCANLINE) - then (add BLANKLINES 1) - (BLOCK) - else - - (* * First dump the buffered microlinefeeds) - - (if (AND FIRSTLINE C150.CLIPBUFFER) - then (* don't bother - printing these - microlinefeeds, since - they are just the - blanks at the top of - the buffer) - (SETQ FIRSTLINE NIL) - else (for I to BLANKLINES do (\C150.MICROLINEFEED BACKINGSTREAM))) - (SETQ BLANKLINES 0) - [for SUBSCAN from 0 to 3 - do - (if (TIMEREXPIRED? PrintingTimer (QUOTE SECONDS)) - then (BLOCK) - (SETUPTIMER PrintingTimeInSeconds PrintingTimer (QUOTE SECONDS))) - (for COLOR from 0 to 3 - do (* loop over (black - magenta yellow cyan)) - (LET [(COLOR.ARRAY.BASE (fetch (ARRAYP BASE) of (ELT COLOR.TABLES COLOR] - (\C150.SENDLINEINFO BACKINGSTREAM COLOR LINEBYTES SUBSCAN) - (for XPOSITION from 0 to MAXX by 8 - do (BOUT BACKINGSTREAM (for BIT from 0 to 7 - sum (LLSH (\GETBASE COLOR.ARRAY.BASE - (BITMAPBIT BITMAP - (IPLUS XPOSITION BIT) - (IDIFFERENCE SCANLINE - SUBSCAN))) - (IDIFFERENCE 7 BIT] - (\C150.MICROLINEFEED BACKINGSTREAM)) - finally (if (NOT C150.CLIPBUFFER) - then (* print out the - remaining - microlinefeeds) - (for I from 1 to BLANKLINES do (\C150.MICROLINEFEED BACKINGSTREAM]) - -(\FILLCIRCLE.C150 - [LAMBDA (C150STREAM CENTERX CENTERY RADIUS TEXTURE) (* hdj - " 6-Jun-85 16:17") - (COND - ((OR (NOT (NUMBERP RADIUS)) - (ILESSP (SETQ RADIUS (FIXR RADIUS)) - 0)) - (\ILLEGAL.ARG RADIUS)) - (T (GLOBALRESOURCE \BRUSHBBT - (PROG (TOP BOTTOM RIGHT LEFT OPERATION DestinationBitMap - (DISPLAYDATA (fetch IMAGEDATA of C150STREAM)) - (X 0) - (Y RADIUS) - (D (ITIMES 2 (IDIFFERENCE 1 RADIUS))) - DESTINATIONBASE RASTERWIDTH CX CY TEXTUREBM GRAYHEIGHT GRAYWIDTH GRAYBASE - NBITS (FCBBT \BRUSHBBT)) - (SETQ TOP (SUB1 (fetch DDClippingTop of DISPLAYDATA))) - (SETQ BOTTOM (fetch DDClippingBottom of DISPLAYDATA)) - (SETQ LEFT (fetch DDClippingLeft of DISPLAYDATA)) - (SETQ RIGHT (SUB1 (fetch DDClippingRight of DISPLAYDATA))) - (SETQ OPERATION (ffetch DDOPERATION of DISPLAYDATA)) - (SETQ DestinationBitMap (fetch DDDestination of DISPLAYDATA)) - (SETQ NBITS (fetch (BITMAP BITMAPBITSPERPIXEL) of DestinationBitMap)) - [SETQ TEXTUREBM (COND - ((BITMAPP TEXTURE)) - [(AND (NEQ NBITS 1) - (BITMAPP (COLORTEXTUREFROMCOLOR# - (COLORNUMBERP (OR TEXTURE (DSPCOLOR NIL - C150STREAM - ] - [(AND (NULL TEXTURE) - (BITMAPP (ffetch DDTexture of DISPLAYDATA] - ([OR (FIXP TEXTURE) - (AND (NULL TEXTURE) - (SETQ TEXTURE (ffetch DDTexture of DISPLAYDATA] - (* create bitmap for - the texture. Could - reuse a bitmap but for - now this is good - enough.) - (SETQ TEXTUREBM (BITMAPCREATE 16 4)) - (SETQ GRAYBASE (fetch (BITMAP BITMAPBASE) of TEXTUREBM)) - (\PUTBASE GRAYBASE 0 (\SFReplicate (LOGAND (LRSH TEXTURE - 12) - 15))) - (\PUTBASE GRAYBASE 1 (\SFReplicate (LOGAND (LRSH TEXTURE 8 - ) - 15))) - (\PUTBASE GRAYBASE 2 (\SFReplicate (LOGAND (LRSH TEXTURE 4 - ) - 15))) - (\PUTBASE GRAYBASE 3 (\SFReplicate (LOGAND TEXTURE 15))) - TEXTUREBM) - (T (\ILLEGAL.ARG TEXTURE] - (SETQ GRAYBASE (fetch (BITMAP BITMAPBASE) of TEXTUREBM)) - (SETQ DESTINATIONBASE (fetch BITMAPBASE of DestinationBitMap)) - (SETQ RASTERWIDTH (fetch BITMAPRASTERWIDTH of DestinationBitMap)) - (* update as many - fields in the brush - bitblt table as - possible from DS.) - (replace PBTFLAGS of FCBBT with 0) - (replace PBTDESTBPL of FCBBT with (UNFOLD RASTERWIDTH BITSPERWORD)) - (* clear gray - information. - PBTSOURCEBPL is used - for gray information - too.) - (replace PBTSOURCEBPL of FCBBT with 0) - (replace PBTUSEGRAY of FCBBT with T) - [replace PBTGRAYWIDTHLESSONE of FCBBT - with (SUB1 (SETQ GRAYWIDTH (IMIN (fetch (BITMAP BITMAPWIDTH) of TEXTUREBM) - 16] - [replace PBTGRAYHEIGHTLESSONE of FCBBT - with (SUB1 (SETQ GRAYHEIGHT (IMIN (fetch (BITMAP BITMAPHEIGHT) of TEXTUREBM - ) - 16] - (replace PBTDISJOINT of FCBBT with T) - (\SETPBTFUNCTION FCBBT (QUOTE TEXTURE) - OPERATION) - (replace PBTHEIGHT of FCBBT with 1) (* take into account - the brush thickness.) - (SETQ CX CENTERX) - (SETQ CY CENTERY) (* change Y TOP and - BOTTOM to be in bitmap - coordinates) - (SETQ CY (\SFInvert DestinationBitMap CY)) - [SETQ BOTTOM (PROG1 (SUB1 (\SFInvert DestinationBitMap TOP)) - (SETQ TOP (SUB1 (\SFInvert DestinationBitMap BOTTOM] - (COND - ((EQ RADIUS 0) (* put a single point - down. Use \LINEBLT to - get proper texture. - NIL) - (\LINEBLT FCBBT CX CY CX DESTINATIONBASE RASTERWIDTH LEFT RIGHT BOTTOM TOP - GRAYWIDTH GRAYHEIGHT GRAYBASE NBITS) - (RETURN))) - LP (* (UNFOLD x 2) is used - instead of (ITIMES x 2)) - [COND - [(IGREATERP 0 D) - (SETQ X (ADD1 X)) - (COND - ((IGREATERP (UNFOLD (IPLUS D Y) - 2) - 1) - (SETQ D (IPLUS D (UNFOLD (IDIFFERENCE X Y) - 2) - 4))) - (T (SETQ D (IPLUS D (UNFOLD X 2) - 1)) (* don't draw unless Y - changes.) - (GO LP] - ((OR (EQ 0 D) - (IGREATERP X D)) - (SETQ X (ADD1 X)) - (SETQ D (IPLUS D (UNFOLD (IDIFFERENCE X Y) - 2) - 4))) - (T (SETQ D (IPLUS (IDIFFERENCE D (UNFOLD Y 2)) - 3] - (COND - ((EQ Y 0) (* draw the middle line - differently to avoid - duplication.) - (\LINEBLT FCBBT (IDIFFERENCE CX X) - CY - (IPLUS CX X) - DESTINATIONBASE RASTERWIDTH LEFT RIGHT BOTTOM TOP GRAYWIDTH - GRAYHEIGHT GRAYBASE NBITS)) - (T (\FILLCIRCLEBLT CX CY X Y) - (SETQ Y (SUB1 Y)) - (GO LP))) - (MOVETO CENTERX CENTERY C150STREAM) - (RETURN NIL]) - -(\OUTCHARFN.C150 - [LAMBDA (C150STREAM CHARCODE) (* hdj - "10-Jun-85 15:14") - (SELCHARQ CHARCODE - (EOL (* New Line) - (NEWLINE.C150 C150STREAM) - (replace (STREAM CHARPOSITION) of C150STREAM with 0)) - (LF (* Line feed--move - down, but not over) - (\DSPXPOSITION.C150 C150STREAM (PROG1 (\DSPXPOSITION.C150 C150STREAM) - (NEWLINE.C150 C150STREAM)))) - (^L (* Form Feed) - (replace (STREAM CHARPOSITION) of C150STREAM with 0) - (NEWPAGE.C150 C150STREAM)) - (\BOUT C150STREAM CHARCODE]) - -(\SEARCHC150FONTFILES - [LAMBDA (FAMILY SIZE FACE ROTATION) (* hdj - " 5-Jun-85 14:19") - - (* * returns a list of the fonts that can be read in for the C150 device. - Rotation is ignored because it is assumed that all devices support 0 90 - and 270) - - (DECLARE (GLOBALVARS DISPLAYFONTEXTENSIONS DISPLAYFONTDIRECTORIES)) - (SELECTQ (SYSTEMTYPE) - (D (for E FILENAMEPATTERN FONTSFOUND THISFONT inside DISPLAYFONTEXTENSIONS - do (SETQ FILENAMEPATTERN (\FONTFILENAME FAMILY SIZE FACE E)) - [for DIR inside DISPLAYFONTDIRECTORIES - do (for FONTFILE in (DIRECTORY (PACKFILENAME (QUOTE DIRECTORY) - DIR - (QUOTE BODY) - FILENAMEPATTERN)) - do (OR (MEMBER (SETQ THISFONT (\FONTINFOFROMFILENAME FONTFILE (QUOTE - DISPLAY - ))) - FONTSFOUND) - (SETQ FONTSFOUND (CONS THISFONT FONTSFOUND] - finally (RETURN FONTSFOUND))) - (SHOULDNT]) - -(\STRINGWIDTH.C150 - [LAMBDA (C150STREAM STR RDTBL) (* hdj - " 5-Jun-85 12:56") - (* Returns the width of - for the current - font/spacefactor in - STREAM.) - (PROG (WIDTHSBASE) - (RETURN (\STRINGWIDTH.GENERIC STR (SETQ WIDTHSBASE (ffetch (\DISPLAYDATA DDWIDTHSCACHE) - of (ffetch IMAGEDATA of C150STREAM))) - RDTBL - (\FGETWIDTH WIDTHSBASE (CHARCODE SPACE]) -) - -(RPAQQ MISSINGC150FONTCOERCIONS (((GACHA) - (MODERN)) - ((TIMESROMAN) - (MODERN)) - ((HELVETICA) - (MODERN)))) - -(RPAQQ \C150COLORTABLE NIL) - -(RPAQQ \C150.FRAMEBUFFER NIL) - -(RPAQQ \C150STREAM NIL) - -(RPAQ C150COLORMAP (READARRAY 16 (QUOTE POINTER) 0)) -((0 0 0) -(0 0 255) -(0 255 0) -(255 0 0) -(255 255 0) -(255 0 255) -(0 255 255) -(255 255 255) -(0 0 0) -(0 0 255) -(0 255 0) -(255 0 0) -(255 255 0) -(255 0 255) -(0 255 255) -(255 255 255) -NIL -) - -(RPAQQ C150FONTCOERCIONS (((CLASSIC 8) - (CLASSIC 10)) - ((MODERN 8) - (MODERN 10)) - ((MODERN 24) - (MODERN 18)) - ((MODERN 18) - (CLASSIC 18)) - ((CLASSIC 24) - (CLASSIC 18)) - ((CLASSIC 12) - (CLASSIC 14)))) - -(RPAQQ C150FONTDIRECTORIES ({ERIS}LIBRARY>)) - -(RPAQQ C150FONTEXTENSIONS (C150FONT)) - -(RPAQ? C150.CLIPBUFFER T) - -(RPAQ? \C150DEFAULTDEVICE (QUOTE CENTRONICS)) -(DEFINEQ - -(COLORMAP.TO.C150TABLE - [LAMBDA (COLORMAP) (* hdj - " 3-Aug-85 21:36") - (LET*((SIZE (ARRAYSIZE COLORMAP)) - (TABLETABLE (ARRAY 4 (QUOTE POINTER) - NIL 0)) - (BLACKTABLE (ARRAY SIZE (QUOTE SMALLP) - 0 0)) - (CYANTABLE (ARRAY SIZE (QUOTE SMALLP) - 0 0)) - (MAGENTATABLE (ARRAY SIZE (QUOTE SMALLP) - 0 0)) - (YELLOWTABLE (ARRAY SIZE (QUOTE SMALLP) - 0 0))) - (bind CYAN MAGENTA YELLOW for PIXELVAL from 0 to (SUB1 SIZE) - do [SETQ CYAN (SETA CYANTABLE PIXELVAL (IDIFFERENCE 1 (IQUOTIENT (fetch (RGB RED) - of (COLORMAPENTRY - COLORMAP - PIXELVAL)) - 128] - [SETQ MAGENTA (SETA MAGENTATABLE PIXELVAL (IDIFFERENCE 1 (IQUOTIENT (fetch (RGB GREEN) - of (COLORMAPENTRY - COLORMAP - PIXELVAL)) - 128] - [SETQ YELLOW (SETA YELLOWTABLE PIXELVAL (IDIFFERENCE 1 (IQUOTIENT (fetch (RGB BLUE) - of (COLORMAPENTRY - COLORMAP PIXELVAL - )) - 128] - (if (AND (EQ CYAN 1) - (EQ MAGENTA 1) - (EQ YELLOW 1)) - then (SETA CYANTABLE PIXELVAL 0) - (SETA MAGENTATABLE PIXELVAL 0) - (SETA YELLOWTABLE PIXELVAL 0) - (SETA BLACKTABLE PIXELVAL 1))) - (SETA TABLETABLE 0 BLACKTABLE) - (SETA TABLETABLE 1 MAGENTATABLE) - (SETA TABLETABLE 2 YELLOWTABLE) - (SETA TABLETABLE 3 CYANTABLE) - TABLETABLE]) -) -(FILESLOAD COLOR XXGEOM XXFILL) -(IF (NOT (GETD (QUOTE POLYSHADE.BLT))) - THEN - (* A fix for KOTO, which is not necessary in n>) - (MOVD (QUOTE POLYSHADE.DISPLAY) - (QUOTE POLYSHADE.BLT))) -(DECLARE: DONTEVAL@LOAD DOCOPY -(\C150INIT) - -(FILESLOAD CENTRONICS) -) -(DECLARE: EVAL@LOAD DONTCOPY -(FILESLOAD (LOADFROM) - ADISPLAY LLDISPLAY) -) -(DECLARE: EVAL@COMPILE -(DEFMACRO \C150BackingStream (C150STREAM) - (BQUOTE (fetch (STREAM F1) - of , C150STREAM))) -) -(PUTPROPS C150STREAM COPYRIGHT ("Xerox Corporation" 1985 1986)) -(DECLARE: DONTCOPY - (FILEMAP (NIL (2416 20778 (C150.SEPARATOR 2426 . 2839) (C150.SETMARGINS 2841 . 4574) ( -\C150.ALLWHITESPACE 4576 . 6320) (\C150.BUFFER.DOT 6322 . 6553) (\C150.MICROLINEFEED 6555 . 6835) ( -\C150.SENDLINE 6837 . 7856) (\C150.SENDLINEINFO 7858 . 8357) (\C150INIT 8359 . 12525) ( -\CREATECHARSET.C150 12527 . 20776)) (20779 135286 (CREATEC150BUFFER 20789 . 21931) (NEWLINE.C150 21933 - . 22878) (NEWPAGE.C150 22880 . 23386) (OPENC150STREAM 23388 . 26698) (C150.RESET 26700 . 27074) ( -SEND.TO.C150 27076 . 27516) (STARTPAGE.C150 27518 . 28241) (\BITBLT.C150 28243 . 39228) (\BLTCHAR.C150 - 39230 . 46739) (\BLTSHADE.C150 46741 . 54213) (\C150.CRLF 54215 . 54665) (\CHANGECHARSET.C150 54667 - . 58079) (\CHARWIDTH.C150 58081 . 58888) (\CLOSEFN.C150 58890 . 59533) (\CREATEC150FONT 59535 . 60463 -) (\READC150FONTFILE 60465 . 61352) (\DRAWCIRCLE.C150 61354 . 70823) (\DRAWCURVE.C150 70825 . 74177) ( -\DRAWELLIPSE.C150 74179 . 90084) (\DRAWLINE.C150 90086 . 92331) (\DSPBACKCOLOR.C150 92333 . 93755) ( -\DSPCLIPPINGREGION.C150 93757 . 94804) (\DSPCOLOR.C150 94806 . 96147) (\C150.ASSURE.COLOR 96149 . -98725) (\C150.LOOKUPRGB 98727 . 100214) (\DSPFONT.C150 100216 . 103285) (\DSPLEFTMARGIN.C150 103287 . -104410) (\DSPLINEFEED.C150 104412 . 105295) (\DSPOPERATION.C150 105297 . 106757) (\DSPPRINTCHAR.C150 -106759 . 109848) (\DSPPRINTCR/LF.C150 109850 . 112967) (\DSPRESET.C150 112969 . 114625) ( -\DSPRIGHTMARGIN.C150 114627 . 115995) (\DSPXPOSITION.C150 115997 . 117372) (\DSPYPOSITION.C150 117374 - . 118012) (\DUMPPAGEBUFFER.C150 118014 . 121744) (\FILLCIRCLE.C150 121746 . 131735) (\OUTCHARFN.C150 -131737 . 132803) (\SEARCHC150FONTFILES 132805 . 134363) (\STRINGWIDTH.C150 134365 . 135284)) (136566 -139219 (COLORMAP.TO.C150TABLE 136576 . 139217))))) -STOP diff --git a/obsolete/lispusers/c150fonts/CLASSIC10-C0.C150FONT b/obsolete/lispusers/c150fonts/CLASSIC10-C0.C150FONT deleted file mode 100644 index 007e5c7566acd17f3ffb9e517d7c59b358e4f3fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8668 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 NGQZ8t9+SOy{1;Hy<4phn diff --git a/obsolete/lispusers/c150fonts/CLASSIC14-C0.C150FONT b/obsolete/lispusers/c150fonts/CLASSIC14-C0.C150FONT deleted file mode 100644 index 1cb874ada5ba539fa2e07588003eca18d584f141..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11982 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 diff --git a/obsolete/lispusers/c150fonts/TIMESROMAN10-C0.C150FONT b/obsolete/lispusers/c150fonts/TIMESROMAN10-C0.C150FONT deleted file mode 100644 index 5ec6b0a0b24d46fa2c06ec1b653c06ad6bfd4ddb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17304 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 J|M-7m`M(*M$Rq#& diff --git a/obsolete/lispusers/c150fonts/TIMESROMAN14-C0.C150FONT b/obsolete/lispusers/c150fonts/TIMESROMAN14-C0.C150FONT deleted file mode 100644 index 06917afa17a3c7601eec546d01615df25ec41419..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28262 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 z 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 diff --git a/obsolete/lispusers/mathserverplot b/obsolete/lispusers/mathserverplot deleted file mode 100644 index 2e7f18fd..00000000 --- a/obsolete/lispusers/mathserverplot +++ /dev/null @@ -1,1567 +0,0 @@ -(FILECREATED "15-Dec-86 11:35:38" {INDIGO}KOTO>LIBRARY>MATHSERVERPLOT.;4 49010 - - changes to: (FNS MAPL.Simple.MakePlot MAPL.ExpandFilename MAPL.Meta.MakePlot MAPL.Gen.MakePlot) - (VARS MATHSERVERPLOTCOMS) - - previous date: " 8-Dec-86 09:46:39" {INDIGO}KOTO>LIBRARY>MATHSERVERPLOT.;3) - - -(* Copyright (c) 1986 by Xerox Corporation. All rights reserved.) - -(PRETTYCOMPRINT MATHSERVERPLOTCOMS) - -(RPAQQ MATHSERVERPLOTCOMS ((* * ALL PLOTS) - (* Files for Log functions) - (FILES plotexamples.dcom {INDIGO}IDLPLOT>FIXES>LOGPATCH.DCOM) - (* Low-level I/0 functions) - (FNS MAPL.TopLevel MAPL.MakeReadtable MAPL.ReadASCIILine - MAPL.ExpandFilename) - (* * METACODE PLOT STUFF) - (* Menu and window functions) - (FNS MAPL.Meta.TopLevel MAPL.Meta.FreeMenu MAPL.Meta.MakeIconWindow) - (* Plot functions) - (FNS MAPL.Meta.MakePlot MAPL.Meta.Plot MAPL.Meta.ASCIIToLisp) - (* Metaplot functions) - (FNS MAPL.Meta.NewPlotCom MAPL.Meta.MoveCom MAPL.Meta.DrawCom - MAPL.Meta.EndPlotCom MAPL.Meta.NewPenCom) - (* Icon bitmaps) - (BITMAPS MAPL.Meta.Icon MAPL.Meta.IconMask) - (* * SIMPLE PLOT STUFF) - (* Menu and window functions) - (FNS MAPL.Simple.TopLevel MAPL.Simple.FreeMenu - MAPL.Simple.MakeIconWindow) - (* Plot functions) - (FNS MAPL.Simple.MakePlot MAPL.Simple.Plot) - (* Icon bitmaps) - (BITMAPS MAPL.Simple.Icon MAPL.Simple.IconMask) - (* * GENERAL PLOT STUFF) - (* Menu and window functions) - (FNS MAPL.Gen.TopLevel MAPL.Gen.FreeMenu MAPL.Gen.MakeIconWindow) - (* Plot functions) - (FNS MAPL.Gen.MakePlot MAPL.Gen.Plot MAPL.Gen.ASCIIToLisp - MAPL.Gen.NewPlot MAPL.Gen.PlotObject MAPL.Gen.EndPlot - MAPL.Gen.NewPen MAPL.Gen.CollectData) - (* Icon bitmaps) - (BITMAPS MAPL.Gen.Icon MAPL.Gen.IconMask) - (* vars) - (P (MAPL.MakeReadtable)) - (GLOBALVARS MAPL.ASCIIRDTBL) - (ADDVARS (BackgroundMenuCommands (Plot% Menus - (QUOTE (MAPL.TopLevel)) - "Opens all Plot Menus" - (SUBITEMS (General% PlotMenu - (QUOTE (MAPL.Gen.TopLevel) - ) - - "Open a General Plot Menu") - (Simple% PlotMenu - (QUOTE ( -MAPL.Simple.TopLevel)) - "Open a Simple Plot Menu") - (Meta% PlotMenu - (QUOTE (MAPL.Meta.TopLevel - )) - - "Open a MetaCode Plot Menu"))))) - (VARS (BackgroundMenu NIL)))) - (* * ALL PLOTS) - - - - -(* Files for Log functions) - -(FILESLOAD plotexamples.dcom {INDIGO}IDLPLOT>FIXES>LOGPATCH.DCOM) - - - -(* Low-level I/0 functions) - -(DEFINEQ - -(MAPL.TopLevel - (LAMBDA NIL (* DSB " 5-Dec-86 11:39") - (* opens all plot menus) - (MAPL.Gen.TopLevel) - (MAPL.Simple.TopLevel) - (MAPL.Meta.TopLevel))) - -(MAPL.MakeReadtable - (LAMBDA NIL (* DSB "24-Nov-86 09:53") - - (* * Makes a readtable that reads ASCII records which end in carriage returns as strings, recognizing only CR as a  - separator character) - - - (SETQ MAPL.ASCIIRDTBL (COPYREADTABLE FILERDTBL)) - (SETSEPR (QUOTE (13)) - NIL MAPL.ASCIIRDTBL))) - -(MAPL.ReadASCIILine - (LAMBDA (fileStream) (* DSB "24-Nov-86 13:27") - - (* * reads one record from a free-form ASCII file and returns a list of the data items in that record) - - - (LET ((stringstream (OPENSTRINGSTREAM (RSTRING fileStream MAPL.ASCIIRDTBL))) - newChar) - (READC fileStream) - (while (NOT (EOFP stringstream)) collect (READ stringstream))))) - -(MAPL.ExpandFilename - (LAMBDA (ITEM WINDOW BUTTONS) (* DSB "15-Dec-86 11:21") - (* if filename is fullFilename, expand it into the  - separate slots) - (PROG ((state (FM.READSTATE WINDOW)) - filename host directory name extension version shortName) - (SETQ filename (LISTGET state (QUOTE FILENAME))) - (SETQ host (UNPACKFILENAME filename (QUOTE HOST))) - (COND - (host (SETQ directory (UNPACKFILENAME filename (QUOTE DIRECTORY))) - (SETQ name (UNPACKFILENAME filename (QUOTE NAME))) - (SETQ extension (UNPACKFILENAME filename (QUOTE EXTENSION))) - (SETQ version (UNPACKFILENAME filename (QUOTE VERSION))) - (SETQ shortName (PACKFILENAME (QUOTE NAME) - name - (QUOTE EXTENSION) - extension - (QUOTE VERSION) - version)) - (FM.CHANGELABEL (FM.ITEMFROMID WINDOW (QUOTE FILENAME)) - WINDOW shortName) - (FM.CHANGELABEL (FM.ITEMFROMID WINDOW (QUOTE DIRECTORY)) - WINDOW directory) - (FM.CHANGELABEL (FM.ITEMFROMID WINDOW (QUOTE HOST)) - WINDOW host) - (SETQ state (FM.READSTATE WINDOW)))) - (RETURN state)))) -) - (* * METACODE PLOT STUFF) - - - - -(* Menu and window functions) - -(DEFINEQ - -(MAPL.Meta.TopLevel - (LAMBDA NIL (* DSB " 5-Dec-86 11:49") - (* Sets up the MetaCode Plot Free Menu) - (PROG (menuWindow) - (SETQ menuWindow (MAPL.Meta.FreeMenu)) (* initialize to PenFlag ON) - (FM.CHANGESTATE (FM.ITEMFROMID menuWindow (QUOTE PEN)) - menuWindow) (* set up menu window) - (WINDOWPROP menuWindow (QUOTE ICONFN) - (FUNCTION MAPL.Meta.MakeIconWindow)) - (SHAPEW menuWindow (QUOTE (200 420 271 127))) - (OPENW menuWindow)))) - -(MAPL.Meta.FreeMenu - (LAMBDA (LEFT BOTTOM) (* DSB " 3-Dec-86 12:33") - (* returns a free menu window for MetaCode plots at  - specified position) - (FM.FORMATMENU (BQUOTE (((TYPE TITLE LABEL Command: FONT (MODERN 12 BOLD)) - (LABEL MakePlot SELECTEDFN MAPL.Meta.MakePlot)) - ((TYPE TITLE LABEL "FILE INFO" FONT (MODERN 12 BOLD))) - ((TYPE EDITSTART LABEL Filename: FONT (MODERN 12 BOLD) - ITEMS - (FILENAME)) - (TYPE EDIT ID FILENAME LABEL "")) - ((TYPE EDITSTART LABEL Directory: FONT (MODERN 12 BOLD) - ITEMS - (DIRECTORY)) - (TYPE EDIT ID DIRECTORY LABEL "")) - ((TYPE EDITSTART LABEL Host: FONT (MODERN 12 BOLD) - ITEMS - (HOST)) - (TYPE EDIT ID HOST LABEL "")) - ((TYPE TITLE LABEL "PLOT INFO" FONT (MODERN 12 BOLD))) - ((TYPE TITLE LABEL PenWidth: FONT (MODERN 12 BOLD)) - (TYPE NWAY ID PEN LABEL ON) - (TYPE NWAY ID PEN LABEL OFF)) - (WINDOWPROPS TITLE "MetaCode Plot Menu" LEFT , LEFT BOTTOM , BOTTOM))) - ))) - -(MAPL.Meta.MakeIconWindow - (LAMBDA (WINDOW OLDICON) (* DSB " 5-Dec-86 18:01") - - (* * Creates a shrink window with an icon formed by two bit maps.) - - - (OR OLDICON (ICONW MAPL.Meta.Icon MAPL.Meta.IconMask)))) -) - - - -(* Plot functions) - -(DEFINEQ - -(MAPL.Meta.MakePlot - (LAMBDA (ITEM WINDOW BUTTONS) (* DSB "15-Dec-86 11:32") - (* checks that required data is specified and that the - fullFilename is valid, and makes the MetaCode plot.) - (PROG ((promptW (GETPROMPTWINDOW WINDOW)) - state filename directory host penFlag fullFilename) - - (* * check that all required data is specified) - - - (CLEARW promptW) - (SETQ state (MAPL.ExpandFilename ITEM WINDOW BUTTONS)) - (SETQ filename (LISTGET state (QUOTE FILENAME))) - (COND - ((EQUAL filename "") - (PRIN1 "Unspecified file name." promptW) - (RETURN))) - (SETQ directory (LISTGET state (QUOTE DIRECTORY))) - (COND - ((EQUAL directory "") - (PRIN1 "Unspecified directory." promptW) - (RETURN))) - (SETQ host (LISTGET state (QUOTE HOST))) - (COND - ((EQUAL host "") - (PRIN1 "Unspecified host (DSK,IVY,etc.)" promptW) - (RETURN))) - (SETQ penFlag (EQ (QUOTE ON) - (LISTGET state (QUOTE PEN)))) - - (* * make fullFilename) - - - (SETQ fullFilename (PACKFILENAME (QUOTE HOST) - host - (QUOTE DIRECTORY) - directory - (QUOTE BODY) - filename)) - - (* * if fullFilename is valid, then make plot) - - - (COND - ((NOT (INFILEP fullFilename)) - (PRIN1 "File not found" promptW) - (RETURN)) - (T (PRIN1 "Making plot ..." promptW) - (MAPL.Meta.Plot fullFilename penFlag) - (CLEARW promptW) - (PRIN1 "Done" promptW) - (RETURN)))))) - -(MAPL.Meta.Plot - (LAMBDA (file penFlag) (* DSB " 3-Dec-86 13:14") - - (* * makes a PLOT of the metacode file) - - - (PROG (dataList plot code newVal1 newVal2 curveList pen) - (SETQ dataList (MAPL.Meta.ASCIIToLisp file)) - (* (PRIN1 dataList PROMPTWINDOW)) - (COND - ((NOT dataList) - (RETURN (PROMPTPRINT "There is no data")))) - (for item in dataList - do (SETQ code (CAR item)) - (SETQ newVal1 (CADR item)) - (SETQ newVal2 (CADDR item)) - (SELECTQ code - (1 (SETQ plot (MAPL.Meta.NewPlotCom)) - (* New plot) - ) - (2 (SETQ curveList (MAPL.Meta.DrawCom curveList newVal1 newVal2))) - (3 (SETQ curveList (MAPL.Meta.MoveCom plot curveList pen newVal1 - newVal2))) - (4 (MAPL.Meta.EndPlotCom plot curveList pen) - (* End of plot) - ) - (5 (SETQ pen (MAPL.Meta.NewPenCom newVal1 penFlag)) - (* New pen) - ) - NIL))))) - -(MAPL.Meta.ASCIIToLisp - (LAMBDA (file) (* DSB "25-Nov-86 09:54") - - (* * returns ASCII data from a file in a list, with one sub-list per line. The file must end in a CR.) - - - (PROG ((tempFile (QUOTE {core}tempplot.dat)) - fileStream dataList) - (COND - ((NOT (INFILEP file)) - (RETURN NIL))) - (COPYFILE file tempFile) (* copy to {core} because reads from filestream to  - {core} are much faster than reads from filestream to a - VAX on the network.) - (SETQ fileStream (OPENSTREAM tempFile (QUOTE INPUT))) - (SETQ dataList (while (NOT (EOFP tempFile)) collect (MAPL.ReadASCIILine - fileStream))) - (CLOSEF fileStream) - (DELFILE tempFile) - (RETURN dataList)))) -) - - - -(* Metaplot functions) - -(DEFINEQ - -(MAPL.Meta.NewPlotCom - (LAMBDA NIL (* DSB " 5-Dec-86 11:51") - - (* * starts a new plot) - - - (PROG NIL - (SETQ curveList NIL) - (RETURN (CREATEPLOT NIL (QUOTE (471 420 250 250)) - "MetaCode Plot"))))) - -(MAPL.Meta.MoveCom - (LAMBDA (plot curveList pen newVal1 newVal2) (* DSB "25-Nov-86 09:01") - - (* * Plots the previous curve, and moves to a new position, starting a new curve) - - - (PROG NIL - (COND - ((AND curveList (GREATERP (LENGTH curveList) - 1)) - (PLOTCURVE plot curveList NIL pen NIL T))) - (SETQ curveList (LIST (CONS newVal1 newVal2))) - (RETURN curveList)))) - -(MAPL.Meta.DrawCom - (LAMBDA (curveList newVal1 newVal2) (* DSB "24-Nov-86 13:31") - - (* * adds a new set of points to the curveList) - - - (PROG NIL - (SETQ curveList (CONS (CONS newVal1 newVal2) - curveList)) - (RETURN curveList)))) - -(MAPL.Meta.EndPlotCom - (LAMBDA (plot curveList pen) (* DSB "25-Nov-86 09:01") - - (* * plots the last curve and opens the plot. It is expected that no more curves will be drawn to the plot) - - - (PROG NIL - (COND - ((AND curveList (GREATERP (LENGTH curveList) - 1)) - (PLOTCURVE plot curveList NIL pen NIL T))) - (OPENPLOTWINDOW plot)))) - -(MAPL.Meta.NewPenCom - (LAMBDA (newVal1 penFlag) (* DSB " 3-Dec-86 15:25") - - (* * If penFlag is OFF, sets pen to 1) - - - - (* * if penFlag is ON, sets the pen to INT ((PEN + 1) /2)) - - - (PROG (pen) - (COND - (penFlag (SETQ pen (IQUOTIENT (PLUS newVal1 1) - 2))) - (T (SETQ pen 1))) - (RETURN pen)))) -) - - - -(* Icon bitmaps) - - -(RPAQ MAPL.Meta.Icon (READBITMAP)) -(70 70 -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"L@@@@@@@@@ON@@@@@L@@" -"L@@@@@@@@@GO@@@@@L@@" -"LGOH@COOOOOOOOOOLL@@" -"LDLH@B@@@@AOH@@@DL@@" -"LDLH@B@@@@@OL@@@DL@@" -"LD@H@B@@@@@GN@@@DL@@" -"LD@H@BB@@@@CO@@@DL@@" -"LNAL@BB@@@@AOH@@DL@@" -"L@@@@BF@@@@@OH@@DL@@" -"L@@@@BB@@@@@GL@@DL@@" -"L@A@@BB@@@@@CL@@DL@@" -"LCO@@BB@@@@@AN@@DL@@" -"LBA@@BF@@@@@@F@@DL@@" -"LB@@@BB@@@@@@C@@DL@@" -"LCH@@BB@@@@@@AH@DL@@" -"LCH@@BB@@CL@@GH@DL@@" -"LB@@@BF@@FF@AL@@DL@@" -"LBAAOBB@@LC@C@@@DL@@" -"LCOAOBB@AHAHN@@@DL@@" -"L@A@@BB@C@@OH@@@DL@@" -"L@@@@BF@F@@@@@@@DL@@" -"L@@@@BB@L@@@@@@@DL@@" -"LCO@@BB@H@@@@@@@DL@@" -"L@L@@BBAH@@@@@@@DL@@" -"L@L@@BFA@@@@@@@@DL@@" -"L@L@@BBC@@@@@@@@DL@@" -"L@L@@BBB@@@@@@@@DL@@" -"L@L@@BBF@@@@@@@@DL@@" -"L@@@@BFD@@@@@@@@DL@@" -"L@@@@BB@@@@@@@@@DL@@" -"L@L@@BB@@@@@@@@@DL@@" -"LAN@@BB@@@@@@@@@DL@@" -"LAB@@BGOOOOOOOONDL@@" -"LCO@@BBBBBBBBBBBDL@@" -"LBA@@B@@@@@@@@@@DL@@" -"LFAH@COOOOOOOOOOLL@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"LOOOOOH@@@@@@@@@@L@@" -"L@LOLL@@@@@@@@@@@L@@" -"LAHGHF@@@@@@@@@@@L@@" -"LC@C@C@@@@@@@@@@@L@@" -"LC@C@C@@@@@@@@@@@L@@" -"LC@C@C@@@@@@@@@@@L@@" -"LC@C@C@@ON@OO@NALL@@" -"LC@C@C@@NF@NG@FAHL@@" -"LC@C@C@@LB@LC@FAHL@@" -"LC@C@C@@H@@LC@FAHL@@" -"LC@C@C@@LH@LC@FAHL@@" -"LC@C@C@@OH@LC@FAHL@@" -"LC@C@C@@LH@LC@FAHL@@" -"LC@GHC@@H@@LC@FAHL@@" -"LC@@@C@@LB@LC@FAHL@@" -"LC@@@C@@NF@LC@GCHL@@" -"LC@@@C@@ONALCHGOHL@@" -"LC@@@C@@@@@@@@@@@L@@" -"LOH@@GL@@@@@@@@@@L@@" -"LOH@@GL@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@") - -(RPAQ MAPL.Meta.IconMask (READBITMAP)) -(70 70 -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@") - (* * SIMPLE PLOT STUFF) - - - - -(* Menu and window functions) - -(DEFINEQ - -(MAPL.Simple.TopLevel - (LAMBDA NIL (* DSB " 8-Dec-86 08:00") - (* Sets up the Simple Plot Free Menu) - (PROG (menuWindow) - (SETQ menuWindow (MAPL.Simple.FreeMenu 200 250)) - - (* * initialize plot defaults) - - - (FM.CHANGESTATE (FM.ITEMFROMID menuWindow (QUOTE TYPE)) - menuWindow) - (FM.CHANGESTATE (FM.ITEMFROMID menuWindow (QUOTE REP)) - menuWindow) - (FM.CHANGESTATE (FM.ITEMFROMID menuWindow (QUOTE DEST)) - menuWindow) - - (* * finish setup of free menu) - - - (WINDOWPROP menuWindow (QUOTE ICONFN) - (FUNCTION MAPL.Simple.MakeIconWindow)) - (OPENW menuWindow)))) - -(MAPL.Simple.FreeMenu - (LAMBDA (LEFT BOTTOM) (* DSB " 8-Dec-86 07:59") - (* returns a free menu window for simple plots at  - specified position) - (FM.FORMATMENU (BQUOTE (((TYPE TITLE LABEL Command: FONT (MODERN 12 BOLD)) - (LABEL MakePlot SELECTEDFN MAPL.Simple.MakePlot)) - ((TYPE TITLE LABEL "FILE INFO" FONT (MODERN 12 BOLD))) - ((TYPE EDITSTART LABEL Filename: FONT (MODERN 12 BOLD) - ITEMS - (FILENAME)) - (TYPE EDIT ID FILENAME LABEL "")) - ((TYPE EDITSTART LABEL Directory: FONT (MODERN 12 BOLD) - ITEMS - (DIRECTORY)) - (TYPE EDIT ID DIRECTORY LABEL "")) - ((TYPE EDITSTART LABEL Host: FONT (MODERN 12 BOLD) - ITEMS - (HOST)) - (TYPE EDIT ID HOST LABEL "")) - ((TYPE TITLE LABEL "PLOT INFO" FONT (MODERN 12 BOLD))) - ((TYPE TITLE LABEL PlotType: FONT (MODERN 12 BOLD)) - (TYPE NWAY ID TYPE LABEL X-Y CLASSNAME XY) - (TYPE NWAY ID TYPE LABEL X-LogY CLASSNAME X-LogY) - (TYPE NWAY ID TYPE LABEL LogX-Y CLASSNAME LogX-Y) - (TYPE NWAY ID TYPE LABEL LogX-LogY CLASSNAME LogX-LogY)) - ((TYPE TITLE LABEL Representation: FONT (MODERN 12 BOLD)) - (TYPE NWAY ID REP LABEL Curve CLASSNAME Curve) - (TYPE NWAY ID REP LABEL Points CLASSNAME Points) - (TYPE NWAY ID REP LABEL Both CLASSNAME Both)) - ((TYPE EDITSTART LABEL PenWidth: FONT (MODERN 12 BOLD) - ITEMS - (PEN)) - (TYPE EDIT ID PEN LABEL "1")) - ((TYPE TITLE LABEL Destination: FONT (MODERN 12 BOLD)) - (TYPE NWAY ID DEST LABEL New CLASSNAME New) - (TYPE NWAY ID DEST LABEL Previous CLASSNAME Previous)) - (WINDOWPROPS TITLE "Simple Plot Menu" LEFT , LEFT BOTTOM , BOTTOM))))) -) - -(MAPL.Simple.MakeIconWindow - (LAMBDA (WINDOW OLDICON) (* DSB " 5-Dec-86 18:00") - - (* * Creates a window with an icon formed by two bit maps.) - - - (OR OLDICON (ICONW MAPL.Simple.Icon MAPL.Simple.IconMask)))) -) - - - -(* Plot functions) - -(DEFINEQ - -(MAPL.Simple.MakePlot - (LAMBDA (ITEM WINDOW BUTTONS) (* DSB "15-Dec-86 11:27") - (* checks that required data is specified and that the - fullFilename is valid, and makes the simple plot.) - (PROG ((promptW (GETPROMPTWINDOW WINDOW)) - state filename directory host type rep penWidth dest fullFilename) - - (* * check that all required data is specified) - - - (CLEARW promptW) - (SETQ state (MAPL.ExpandFilename ITEM WINDOW BUTTONS)) - (SETQ filename (LISTGET state (QUOTE FILENAME))) - (COND - ((EQUAL filename "") - (PRIN1 "Unspecified file name." promptW) - (RETURN))) - (SETQ directory (LISTGET state (QUOTE DIRECTORY))) - (COND - ((EQUAL directory "") - (PRIN1 "Unspecified directory." promptW) - (RETURN))) - (SETQ host (LISTGET state (QUOTE HOST))) - (COND - ((EQUAL host "") - (PRIN1 "Unspecified host (DSK,IVY,etc.)" promptW) - (RETURN))) - (SETQ type (LISTGET state (QUOTE TYPE))) - (COND - ((NOT type) - (PRIN1 "Unspecified plot type (XY, etc)." promptW) - (RETURN))) - (SETQ rep (LISTGET state (QUOTE REP))) - (COND - ((NOT rep) - (PRIN1 "Unspecified represent. (Points,etc.)" promptW) - (RETURN))) - (SETQ penWidth (MKATOM (LISTGET state (QUOTE PEN)))) - (COND - ((AND (NUMBERP penWidth) - (GREATERP penWidth 0)) - (SETQ penWidth (FIX penWidth))) - (T (PRIN1 "PenWidth must be integer > 0" promptW) - (RETURN))) - (SETQ dest (LISTGET state (QUOTE DEST))) - (COND - ((NOT dest) - (PRIN1 "Unspecified destination (New, etc.)" promptW) - (RETURN))) - - (* * make fullFilename) - - - (SETQ fullFilename (PACKFILENAME (QUOTE HOST) - host - (QUOTE DIRECTORY) - directory - (QUOTE BODY) - filename)) - - (* * if fullFilename is valid, then make plot) - - - (COND - ((NOT (INFILEP fullFilename)) - (PRIN1 "File not found" promptW) - (RETURN)) - (T (PRIN1 "Making plot ..." promptW) - (MAPL.Simple.Plot fullFilename promptW rep type penWidth dest) - (CLEARW promptW) - (PRIN1 "Done" promptW) - (RETURN)))))) - -(MAPL.Simple.Plot - (LAMBDA (filename promptW rep type penWidth dest) (* DSB " 8-Dec-86 08:53") - (* Makes the plot and puts it into the appropriate  - window) - - (* * takes an ASCII file of pairs of X-Y values, converts it into list format, and then converts it into a list of  - dotted pairs of data for requested plot.) - - - (PROG ((rightMenuItems (QUOTE ((Logscale SCAT.LOGSCALE "Toggle exponential tics" - (SUBITEMS (X% axis (SCAT.LOGSCALE (QUOTE X)) - "X axis only") - (Y% axis (SCAT.LOGSCALE (QUOTE Y)) - "Y axis only"))) - (Coordinates SCAT.WORLDCOORD - "Display world coordinates at cursor position")))) - (pointMenuItems (QUOTE ((Coordinates SCAT.POINTCOORDS "Display point coordinates")))) - (tempFile (QUOTE {core}tempplot.dat)) - data first second mouseDown? fileStream dataList newPlot) - - (* * copy to {core} and read into a list, with each line in the original file becoming a sub-list) - - - (COPYFILE filename tempFile) - (SETQ fileStream (OPENSTREAM tempFile (QUOTE INPUT))) - (SETQ dataList (while (NOT (EOFP tempFile)) collect (MAPL.ReadASCIILine - fileStream))) - (CLOSEF fileStream) - (DELFILE tempFile) - - (* * translate to list of dotted pairs, depending on type of plot to be made) - - - (SETQ data NIL) - (COND - ((EQUAL type (QUOTE X-Y)) - (for item in dataList - do (SETQ first (CAR item)) - (SETQ second (CADR item)) - (COND - ((AND (NUMBERP first) - (NUMBERP second)) - (SETQ data (CONS (CONS first second) - data)))))) - ((EQUAL type (QUOTE X-LogY)) - (for item in dataList - do (SETQ first (CAR item)) - (SETQ second (CADR item)) - (COND - ((AND (NUMBERP first) - (NUMBERP second) - (GREATERP second 0)) - (SETQ data (CONS (CONS first (PLOT.LOG10 second)) - data)))))) - ((EQUAL type (QUOTE LogX-Y)) - (for item in dataList - do (SETQ first (CAR item)) - (SETQ second (CADR item)) - (COND - ((AND (NUMBERP first) - (GREATERP first 0) - (NUMBERP second)) - (SETQ data (CONS (CONS (PLOT.LOG10 first) - second) - data)))))) - ((EQUAL type (QUOTE LogX-LogY)) - (for item in dataList - do (SETQ first (CAR item)) - (SETQ second (CADR item)) - (COND - ((AND (NUMBERP first) - (GREATERP first 0) - (NUMBERP second) - (GREATERP second 0)) - (SETQ data (CONS (CONS (PLOT.LOG10 first) - (PLOT.LOG10 second)) - data)))))) - (T (CLEARW promptW) - (PRIN1 "Error: Unknown plot type" promptW) - (RETURN))) - (CLEARW promptW) - - (* * If the new data is to be put on a previous plot, the user has 20 seconds to button in the desired plot window) - - - - (* * otherwise, the data goes into a new plot) - - - (COND - ((EQUAL dest (QUOTE Previous)) - (PRIN1 "Button in desired plot window" promptW) - (SETQ mouseDown? (UNTILMOUSESTATE LEFT 20000)) - (COND - (mouseDown? (COND - ((EQUAL rep (QUOTE Points)) - (PLOTPOINTS (WHICHPLOT) - data) - (RETURN)) - ((EQUAL rep (QUOTE Curve)) - (PLOTCURVE (WHICHPLOT) - data NIL penWidth) - (RETURN)) - ((EQUAL rep (QUOTE Both)) - (PLOTPOINTS (WHICHPLOT) - data) - (PLOTCURVE (WHICHPLOT) - data NIL penWidth) - (RETURN)) - (T (PRIN1 "Error: Unknown represent." promptW) - (RETURN)))) - (T (PRIN1 "Making a new plot." promptW))))) - (SETQ newPlot (CREATEPLOT NIL (QUOTE (471 250 250 250)) - "Simple Plot")) - (PLOTADDMENUITEMS newPlot (QUOTE RIGHT) - rightMenuItems) - (PLOTMENUITEMS newPlot (QUOTE POINTMENU) - (APPEND (PLOTMENUITEMS newPlot (QUOTE MIDDLE)) - pointMenuItems)) - (COND - ((EQUAL rep (QUOTE Curve)) - (PLOTCURVE newPlot data NIL penWidth)) - ((EQUAL rep (QUOTE Points)) - (PLOTPOINTS newPlot data)) - ((EQUAL rep (QUOTE Both)) - (PLOTCURVE newPlot data NIL penWidth) - (PLOTPOINTS newPlot data)) - (T (PRIN1 "Error: Unknown represent." promptW) - (RETURN))) - (OPENPLOTWINDOW newPlot)))) -) - - - -(* Icon bitmaps) - - -(RPAQ MAPL.Simple.Icon (READBITMAP)) -(70 70 -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"L@@@@@@@@@ON@@@@@L@@" -"L@@@@@@@@@GO@@@@@L@@" -"L@@@@COOOOOOOOOOLL@@" -"L@@@@B@@@@AOH@@@DL@@" -"L@@@@B@@@@@OL@@@DL@@" -"L@@@@B@@@@@GN@@@DL@@" -"L@@@@BB@@@@CO@@@DL@@" -"L@@@@BB@@@@AOH@@DL@@" -"L@@@@BF@@@@@OH@@DL@@" -"L@@@@BB@@@@@GL@@DL@@" -"L@@@@BB@@@@@CL@@DL@@" -"LOO@@BB@@@@@AN@@DL@@" -"LLC@@BF@@@@@@F@@DL@@" -"LLC@@BB@@@@@@C@@DL@@" -"LL@@@BB@@@@@@AH@DL@@" -"LL@@@BB@@CL@@GH@DL@@" -"LL@@@BF@@FF@AL@@DL@@" -"LL@CNBB@@LC@C@@@DL@@" -"LOOCNBB@AHAHN@@@DL@@" -"L@C@@BB@C@@OH@@@DL@@" -"L@C@@BF@F@@@@@@@DL@@" -"L@C@@BB@L@@@@@@@DL@@" -"L@C@@BB@H@@@@@@@DL@@" -"LLC@@BBAH@@@@@@@DL@@" -"LLC@@BFA@@@@@@@@DL@@" -"LOO@@BBC@@@@@@@@DL@@" -"L@@@@BBB@@@@@@@@DL@@" -"L@@@@BBF@@@@@@@@DL@@" -"L@@@@BFD@@@@@@@@DL@@" -"L@@@@BB@@@@@@@@@DL@@" -"L@@@@BB@@@@@@@@@DL@@" -"L@@@@BB@@@@@@@@@DL@@" -"L@@@@BGOOOOOOOONDL@@" -"L@@@@BBBBBBBBBBBDL@@" -"L@@@@B@@@@@@@@@@DL@@" -"L@@@@COOOOOOOOOOLL@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"LOOOOOH@@@@@@@@@@L@@" -"L@LOLL@@@@@@@@@@@L@@" -"LAHGHF@@@@@@@@@@@L@@" -"LC@C@C@@@@@@@@@@@L@@" -"LC@C@C@@@@@@@@@@@L@@" -"LC@C@C@@@@@@@@@@@L@@" -"LC@C@C@@ON@OO@NALL@@" -"LC@C@C@@NF@NG@FAHL@@" -"LC@C@C@@LB@LC@FAHL@@" -"LC@C@C@@H@@LC@FAHL@@" -"LC@C@C@@LH@LC@FAHL@@" -"LC@C@C@@OH@LC@FAHL@@" -"LC@C@C@@LH@LC@FAHL@@" -"LC@GHC@@H@@LC@FAHL@@" -"LC@@@C@@LB@LC@FAHL@@" -"LC@@@C@@NF@LC@GCHL@@" -"LC@@@C@@ONALCHGOHL@@" -"LC@@@C@@@@@@@@@@@L@@" -"LOH@@GL@@@@@@@@@@L@@" -"LOH@@GL@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@") - -(RPAQ MAPL.Simple.IconMask (READBITMAP)) -(70 70 -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@") - (* * GENERAL PLOT STUFF) - - - - -(* Menu and window functions) - -(DEFINEQ - -(MAPL.Gen.TopLevel - (LAMBDA NIL (* DSB " 5-Dec-86 11:45") - (* Sets up the General Plot Free Menu) - (PROG (menuWindow) - (SETQ menuWindow (MAPL.Gen.FreeMenu 200 50)) - - (* * initialize plot defaults) - - - (FM.CHANGESTATE (FM.ITEMFROMID menuWindow (QUOTE TYPE)) - menuWindow) - (FM.CHANGESTATE (FM.ITEMFROMID menuWindow (QUOTE REP)) - menuWindow) - (FM.CHANGESTATE (FM.ITEMFROMID menuWindow (QUOTE PEN)) - menuWindow) - - (* * finish setup of free menu) - - - (WINDOWPROP menuWindow (QUOTE ICONFN) - (FUNCTION MAPL.Gen.MakeIconWindow)) - (OPENW menuWindow)))) - -(MAPL.Gen.FreeMenu - (LAMBDA (LEFT BOTTOM) (* DSB " 4-Dec-86 13:09") - (* returns a free menu window for simple plots at  - specified position) - (FM.FORMATMENU (BQUOTE (((TYPE TITLE LABEL Command: FONT (MODERN 12 BOLD)) - (LABEL MakePlot SELECTEDFN MAPL.Gen.MakePlot)) - ((TYPE TITLE LABEL "FILE INFO" FONT (MODERN 12 BOLD))) - ((TYPE EDITSTART LABEL Filename: FONT (MODERN 12 BOLD) - ITEMS - (FILENAME)) - (TYPE EDIT ID FILENAME LABEL "")) - ((TYPE EDITSTART LABEL Directory: FONT (MODERN 12 BOLD) - ITEMS - (DIRECTORY)) - (TYPE EDIT ID DIRECTORY LABEL "")) - ((TYPE EDITSTART LABEL Host: FONT (MODERN 12 BOLD) - ITEMS - (HOST)) - (TYPE EDIT ID HOST LABEL "")) - ((TYPE TITLE LABEL "PLOT INFO" FONT (MODERN 12 BOLD))) - ((TYPE EDITSTART LABEL X-Position: FONT (MODERN 12 BOLD) - ITEMS - (XPOS)) - (TYPE EDIT ID XPOS LABEL "1")) - ((TYPE EDITSTART LABEL Y-Position: FONT (MODERN 12 BOLD) - ITEMS - (YPOS)) - (TYPE EDIT ID YPOS LABEL "2")) - ((TYPE TITLE LABEL PlotType: FONT (MODERN 12 BOLD)) - (TYPE NWAY ID TYPE LABEL X-Y CLASSNAME XY) - (TYPE NWAY ID TYPE LABEL X-LogY CLASSNAME X-LogY) - (TYPE NWAY ID TYPE LABEL LogX-Y CLASSNAME LogX-Y) - (TYPE NWAY ID TYPE LABEL LogX-LogY CLASSNAME LogX-LogY)) - ((TYPE TITLE LABEL Representation: FONT (MODERN 12 BOLD)) - (TYPE NWAY ID REP LABEL Curve CLASSNAME Curve) - (TYPE NWAY ID REP LABEL Points CLASSNAME Points) - (TYPE NWAY ID REP LABEL Both CLASSNAME Both)) - ((TYPE TITLE LABEL PenWidth: FONT (MODERN 12 BOLD)) - (TYPE NWAY ID PEN LABEL ON) - (TYPE NWAY ID PEN LABEL OFF)) - (WINDOWPROPS TITLE "General Plot Menu" LEFT , LEFT BOTTOM , BOTTOM)))) - )) - -(MAPL.Gen.MakeIconWindow - (LAMBDA (WINDOW OLDICON) (* DSB " 5-Dec-86 17:42") - - (* * Creates a shrink window with an icon formed by two bit maps.) - - - (OR OLDICON (ICONW MAPL.Gen.Icon MAPL.Gen.IconMask)))) -) - - - -(* Plot functions) - -(DEFINEQ - -(MAPL.Gen.MakePlot - (LAMBDA (ITEM WINDOW BUTTONS) (* DSB "15-Dec-86 11:30") - (* checks that required data is specified and that the - fullFilename is valid, and makes the simple plot.) - (PROG ((promptW (GETPROMPTWINDOW WINDOW)) - state filename directory host type rep xPos yPos penFlag fullFilename) - - (* * check that all required data is specified) - - - (CLEARW promptW) - (SETQ state (MAPL.ExpandFilename ITEM WINDOW BUTTONS)) - (SETQ filename (LISTGET state (QUOTE FILENAME))) - (COND - ((EQUAL filename "") - (PRIN1 "Unspecified file name." promptW) - (RETURN))) - (SETQ directory (LISTGET state (QUOTE DIRECTORY))) - (COND - ((EQUAL directory "") - (PRIN1 "Unspecified directory." promptW) - (RETURN))) - (SETQ host (LISTGET state (QUOTE HOST))) - (COND - ((EQUAL host "") - (PRIN1 "Unspecified host (DSK,IVY,etc.)" promptW) - (RETURN))) - (SETQ xPos (MKATOM (LISTGET state (QUOTE XPOS)))) - (* if xPos is not a number, set it to NIL for a  - Time-Series plot) - (COND - ((NOT (NUMBERP xPos)) - (SETQ xPos (NUMBERP xPos)) - (PRIN1 "Time-series plot..." promptW))) - (SETQ yPos (MKATOM (LISTGET state (QUOTE YPOS)))) - (COND - ((NOT (NUMBERP yPos)) - (PRIN1 "Unspecified position of 'Y' variable" promptW) - (RETURN))) - (SETQ type (LISTGET state (QUOTE TYPE))) - (COND - ((NOT type) - (PRIN1 "Unspecified plot type (XY, etc)." promptW) - (RETURN))) (* if xPos is NIL, do not allow Logs of the "time") - (COND - ((AND (NOT xPos) - (OR (EQUAL type (QUOTE LogX-Y)) - (EQUAL type (QUOTE LogX-LogY)))) - (PRIN1 "Log of X (time) not permitted" promptW) - (RETURN))) - (SETQ rep (LISTGET state (QUOTE REP))) - (COND - ((NOT rep) - (PRIN1 "Unspecified represent. (Points,etc.)" promptW) - (RETURN))) - (SETQ penFlag (EQ (QUOTE ON) - (LISTGET state (QUOTE PEN)))) - - (* * make fullFilename) - - - (SETQ fullFilename (PACKFILENAME (QUOTE HOST) - host - (QUOTE DIRECTORY) - directory - (QUOTE BODY) - filename)) - - (* * if fullFilename is valid, then make plot) - - - (COND - ((NOT (INFILEP fullFilename)) - (PRIN1 "File not found" promptW) - (RETURN)) - (T (PRIN1 "Making plot ..." promptW) - (MAPL.Gen.Plot fullFilename promptW xPos yPos rep type penFlag) - (CLEARW promptW) - (PRIN1 "Done" promptW) - (RETURN)))))) - -(MAPL.Gen.Plot - (LAMBDA (file promptW xPos yPos rep type penFlag) (* DSB " 5-Dec-86 17:41") - - (* * makes a plot from the general plot input format) - - - (PROG (dataList keyword plot objectList (pen 1) - (plotNumber 1)) - - (* * get a data list of those pairs of data you want to plot) - - - (SETQ dataList (MAPL.Gen.ASCIIToLisp file xPos yPos)) - (* (PRIN1 dataList PROMPTWINDOW)) - - (* * parse and plot) - - - (COND - ((NOT dataList) - (RETURN (PRIN1 "There is no data" promptW)))) - (for item in dataList - do (SETQ keyword (CAR item)) - (SELECTQ keyword - (NEWPLOT (SETQ plot (MAPL.Gen.NewPlot plotNumber)) - (* New plot) - ) - (START (SETQ objectList NIL) - (* Start new object) - ) - (END (SETQ objectList (MAPL.Gen.PlotObject plot objectList pen rep) - ) (* Plot the object) - ) - (ENDPLOT (SETQ plotNumber (MAPL.Gen.EndPlot plot plotNumber)) - (* End of plot) - ) - (NEWPEN (SETQ pen (MAPL.Gen.NewPen item penFlag)) - (* New pen) - ) - (SETQ objectList (MAPL.Gen.CollectData objectList item type))))))) - -(MAPL.Gen.ASCIIToLisp - (LAMBDA (file xPos yPos) (* DSB " 5-Dec-86 17:34") - - (* * returns ASCII data from a file in a list, with one sub-list per line. The file must end in a CR.) - - - (PROG ((tempFile (QUOTE {core}tempplot.dat)) - (keywordList (QUOTE (NEWPLOT ENDPLOT START END NEWPEN))) - fileStream dataList lineList key shortList) - (COND - ((NOT (INFILEP file)) - (RETURN NIL))) - (COPYFILE file tempFile) - - (* * copy to {core} because reads from filestream to {core} are much faster than reads from filestream to a VAX on  - the network.) - - - - (* * if Keyword, return the line as is; otherwise, only include the numbers in the positions requested.) - - - - (* * if xPos is NIL, put NIL in the first position of the short list) - - - (SETQ fileStream (OPENSTREAM tempFile (QUOTE INPUT))) - (while (NOT (EOFP tempFile)) - do (SETQ lineList (MAPL.ReadASCIILine fileStream)) - (SETQ key (CAR lineList)) - (COND - ((MEMBER key keywordList) - (SETQ shortList lineList)) - ((NOT xPos) - (SETQ shortList (LIST NIL (CAR (NTH lineList yPos))))) - (T (SETQ shortList (LIST (CAR (NTH lineList xPos)) - (CAR (NTH lineList yPos)))))) - (SETQ dataList (CONS shortList dataList))) - (CLOSEF fileStream) - (DELFILE tempFile) - (RETURN (REVERSE dataList))))) - -(MAPL.Gen.NewPlot - (LAMBDA (plotNumber) (* DSB " 5-Dec-86 11:44") - - (* * starts a new plot with Log scaling) - - - (PROG (newPlot (leftFirst 471) - left - (bottomFirst 50) - bottom region (rightMenuItems (QUOTE - ((Logscale SCAT.LOGSCALE - "Toggle exponential tics" - (SUBITEMS (X% axis - (SCAT.LOGSCALE - (QUOTE X)) - "X axis only") - (Y% axis - (SCAT.LOGSCALE - (QUOTE Y)) - "Y axis only"))) - (Coordinates SCAT.WORLDCOORD - "Display world coordinates at cursor position")))) - (pointMenuItems (QUOTE ((Coordinates SCAT.POINTCOORDS - "Display point coordinates"))))) - (SETQ left (PLUS leftFirst (TIMES 25 (DIFFERENCE plotNumber 1)))) - (SETQ bottom (PLUS bottomFirst (TIMES 25 (DIFFERENCE plotNumber 1)))) - (SETQ region (CREATEREGION left bottom 250 250)) - (SETQ newPlot (CREATEPLOT NIL region "General Plot")) - (PLOTADDMENUITEMS newPlot (QUOTE RIGHT) - rightMenuItems) - (PLOTMENUITEMS newPlot (QUOTE POINTMENU) - (APPEND (PLOTMENUITEMS newPlot (QUOTE MIDDLE)) - pointMenuItems)) - (RETURN newPlot)))) - -(MAPL.Gen.PlotObject - (LAMBDA (plot objectList pen rep) (* DSB " 8-Dec-86 07:28") - - (* * plots the objectList, with specified pen and according to the chosen representation (e.g., points, curve,  - both)) - - - - (* * when plotting points, ignore the pen size) - - - (PROG NIL - (COND - ((NOT plot) - (RETURN (PRIN1 "ERROR: NEWPLOT command omitted. " PROMPTWINDOW)))) - (COND - ((AND objectList (GREATERP (LENGTH objectList) - 0)) - (COND - ((EQUAL rep (QUOTE Curve)) - (PLOTCURVE plot objectList NIL pen NIL T)) - ((EQUAL rep (QUOTE Points)) - (PLOTPOINTS plot objectList NIL NIL NIL T)) - ((EQUAL rep (QUOTE Both)) - (PLOTCURVE plot objectList NIL pen NIL T) - (PLOTPOINTS plot objectList NIL NIL NIL T)))) - (T (PROMPTPRINT "ERROR: PlotObject is NIL and not drawn"))) - (RETURN NIL)))) - -(MAPL.Gen.EndPlot - (LAMBDA (plot plotNumber) (* DSB " 4-Dec-86 14:17") - - (* * opens the plotwindow, and returns a new increment for the next plot position) - - - (PROG NIL - (OPENPLOTWINDOW plot) - (RETURN (PLUS plotNumber 1))))) - -(MAPL.Gen.NewPen - (LAMBDA (item penFlag) (* DSB " 8-Dec-86 07:30") - - (* * If penFlag is OFF, sets pen to 1; otherwise, sets pen width as instructed.) - - - (PROG (pen) - (COND - (penFlag (SETQ pen (CADR item))) - (T (SETQ pen 1))) - (RETURN pen)))) - -(MAPL.Gen.CollectData - (LAMBDA (objectList item type) (* DSB " 8-Dec-86 09:43") - - (* * adds the appropriate dotted pair (determined by dest and the input item) to the objectList.) - - - (PROG ((xVal (CAR item)) - (yVal (CADR item)) - newItem) - - (* * not numbers; don't do anything) - - - (COND - ((NOT (NUMBERP yVal)) - (RETURN objectList))) - - (* * if xVal is NIL (not a number) but yVal is a number, then assume the user is asking for a time sequence. - However, LogX is not allowed. This will slip past MAPL.Gen.MakePlot if the X-position is given as a  - (too large) number. We stop that here.) - - - (COND - ((AND (NOT (NUMBERP xVal)) - (NUMBERP yVal)) - (COND - ((OR (EQUAL type (QUOTE LogX-Y)) - (EQUAL type (QUOTE LogX-LogY))) - (PROMPTPRINT "Log X for X=time-sequence not allowed") - (RETURN objectList))) - (COND - ((NOT objectList) - (SETQ xVal 0)) - (T (SETQ xVal (PLUS 1 (CAAR objectList))))))) - - (* * non time-series plot) - - - (COND - ((EQUAL type (QUOTE X-Y)) - (SETQ newItem (CONS xVal yVal))) - ((EQUAL type (QUOTE X-LogY)) - (COND - ((GREATERP yVal 0) - (SETQ newItem (CONS xVal (PLOT.LOG10 yVal)))) - (T (PROMPTPRINT "ERROR: Attempt to take Log of negative number " yVal)))) - ((EQUAL type (QUOTE LogX-Y)) - (COND - ((GREATERP xVal 0) - (SETQ newItem (CONS (PLOT.LOG10 xVal) - yVal))) - (T (PROMPTPRINT "ERROR: Attempt to take Log of negative number " xVal)))) - ((EQUAL type (QUOTE LogX-LogY)) - (COND - ((AND (GREATERP xVal 0) - (GREATERP yVal 0)) - (SETQ newItem (CONS (PLOT.LOG10 xVal) - (PLOT.LOG10 yVal)))) - (T (PROMPTPRINT "ERROR: Attempt to take Log of neg. number at point (" xVal "," - yVal ")")))) - (T (PRIN1 "ERROR: Unknown plot type requested" PROMPTWINDOW))) - (COND - (newItem (SETQ objectList (CONS newItem objectList)))) - (RETURN objectList)))) -) - - - -(* Icon bitmaps) - - -(RPAQ MAPL.Gen.Icon (READBITMAP)) -(70 70 -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"L@@@@@@@@@ON@@@@@L@@" -"L@@@@@@@@@GO@@@@@L@@" -"L@@@@COOOOOOOOOOLL@@" -"L@@@@B@@@@AOH@@@DL@@" -"L@@@@B@@@@@OL@@@DL@@" -"L@@@@B@@@@@GN@@@DL@@" -"L@@@@BB@@@@CO@@@DL@@" -"L@@@@BB@@@@AOH@@DL@@" -"L@@@@BF@@@@@OH@@DL@@" -"L@@@@BB@@@@@GL@@DL@@" -"L@@@@BB@@@@@CL@@DL@@" -"LOOH@BB@@@@@AN@@DL@@" -"LLAH@BF@@@@@@F@@DL@@" -"LLAH@BB@@@@@@C@@DL@@" -"LL@@@BB@@@@@@AH@DL@@" -"LL@@@BB@@CL@@GH@DL@@" -"LL@@@BF@@FF@AL@@DL@@" -"LL@AOBB@@LC@C@@@DL@@" -"LLOIOBB@AHAHN@@@DL@@" -"LLMH@BB@C@@OH@@@DL@@" -"LLMH@BF@F@@@@@@@DL@@" -"LLAH@BB@L@@@@@@@DL@@" -"LLAH@BB@H@@@@@@@DL@@" -"LLAH@BBAH@@@@@@@DL@@" -"LLAH@BFA@@@@@@@@DL@@" -"LOOH@BBC@@@@@@@@DL@@" -"L@@@@BBB@@@@@@@@DL@@" -"L@@@@BBF@@@@@@@@DL@@" -"L@@@@BFD@@@@@@@@DL@@" -"L@@@@BB@@@@@@@@@DL@@" -"L@@@@BB@@@@@@@@@DL@@" -"L@@@@BB@@@@@@@@@DL@@" -"L@@@@BGOOOOOOOONDL@@" -"L@@@@BBBBBBBBBBBDL@@" -"L@@@@B@@@@@@@@@@DL@@" -"L@@@@COOOOOOOOOOLL@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"LOOOOOH@@@@@@@@@@L@@" -"L@LOLL@@@@@@@@@@@L@@" -"LAHGHF@@@@@@@@@@@L@@" -"LC@C@C@@@@@@@@@@@L@@" -"LC@C@C@@@@@@@@@@@L@@" -"LC@C@C@@@@@@@@@@@L@@" -"LC@C@C@@ON@OO@NALL@@" -"LC@C@C@@NF@NG@FAHL@@" -"LC@C@C@@LB@LC@FAHL@@" -"LC@C@C@@H@@LC@FAHL@@" -"LC@C@C@@LH@LC@FAHL@@" -"LC@C@C@@OH@LC@FAHL@@" -"LC@C@C@@LH@LC@FAHL@@" -"LC@GHC@@H@@LC@FAHL@@" -"LC@@@C@@LB@LC@FAHL@@" -"LC@@@C@@NF@LC@GCHL@@" -"LC@@@C@@ONALCHGOHL@@" -"LC@@@C@@@@@@@@@@@L@@" -"LOH@@GL@@@@@@@@@@L@@" -"LOH@@GL@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"L@@@@@@@@@@@@@@@@L@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@") - -(RPAQ MAPL.Gen.IconMask (READBITMAP)) -(70 70 -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@" -"OOOOOOOOOOOOOOOOOL@@") - - - -(* vars) - -(MAPL.MakeReadtable) -(DECLARE: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS MAPL.ASCIIRDTBL) -) - -(ADDTOVAR BackgroundMenuCommands (Plot% Menus (QUOTE (MAPL.TopLevel)) - "Opens all Plot Menus" - (SUBITEMS (General% PlotMenu (QUOTE (MAPL.Gen.TopLevel - )) - - "Open a General Plot Menu") - (Simple% PlotMenu (QUOTE ( -MAPL.Simple.TopLevel)) - "Open a Simple Plot Menu") - (Meta% PlotMenu (QUOTE (MAPL.Meta.TopLevel)) - "Open a MetaCode Plot Menu") - ))) - -(RPAQQ BackgroundMenu NIL) -(PUTPROPS MATHSERVERPLOT COPYRIGHT ("Xerox Corporation" 1986)) -(DECLARE: DONTCOPY - (FILEMAP (NIL (2744 5312 (MAPL.TopLevel 2754 . 3043) (MAPL.MakeReadtable 3045 . 3446) ( -MAPL.ReadASCIILine 3448 . 3909) (MAPL.ExpandFilename 3911 . 5310)) (5383 7480 (MAPL.Meta.TopLevel 5393 - . 6056) (MAPL.Meta.FreeMenu 6058 . 7203) (MAPL.Meta.MakeIconWindow 7205 . 7478)) (7508 11497 ( -MAPL.Meta.MakePlot 7518 . 9264) (MAPL.Meta.Plot 9266 . 10593) (MAPL.Meta.ASCIIToLisp 10595 . 11495)) ( -11529 13474 (MAPL.Meta.NewPlotCom 11539 . 11840) (MAPL.Meta.MoveCom 11842 . 12308) (MAPL.Meta.DrawCom -12310 . 12621) (MAPL.Meta.EndPlotCom 12623 . 13057) (MAPL.Meta.NewPenCom 13059 . 13472)) (16880 19790 -(MAPL.Simple.TopLevel 16890 . 17706) (MAPL.Simple.FreeMenu 17708 . 19514) (MAPL.Simple.MakeIconWindow -19516 . 19788)) (19818 27100 (MAPL.Simple.MakePlot 19828 . 22323) (MAPL.Simple.Plot 22325 . 27098)) ( -30511 33501 (MAPL.Gen.TopLevel 30521 . 31327) (MAPL.Gen.FreeMenu 31329 . 33227) ( -MAPL.Gen.MakeIconWindow 33229 . 33499)) (33529 45006 (MAPL.Gen.MakePlot 33539 . 36529) (MAPL.Gen.Plot -36531 . 38142) (MAPL.Gen.ASCIIToLisp 38144 . 39718) (MAPL.Gen.NewPlot 39720 . 41084) ( -MAPL.Gen.PlotObject 41086 . 42080) (MAPL.Gen.EndPlot 42082 . 42388) (MAPL.Gen.NewPen 42390 . 42736) ( -MAPL.Gen.CollectData 42738 . 45004))))) -STOP diff --git a/obsolete/lispusers/microtek.tedit b/obsolete/lispusers/microtek.tedit deleted file mode 100644 index 579d190910267f07fa3f165fb87ff397f2350c5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65505 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 diff --git a/obsolete/lispusers/splinefonts/GACHAE.LC1-SF b/obsolete/lispusers/splinefonts/GACHAE.LC1-SF deleted file mode 100644 index 79c03e55..00000000 --- a/obsolete/lispusers/splinefonts/GACHAE.LC1-SF +++ /dev/null @@ -1 +0,0 @@ - ((FAMILY gacha) (CHARACTER 141Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 14:22:31) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((3 ((93 182) (93 182) (143 182)) NIL ((-12.5 0 0 0 75. 0 ) (25. 0 75. 0 -75. 0 )) NATURAL) (19 ((143 182) (147 197) (170 215) (225 221) (290 213) (309 194) (287 165) (191 156) (122 142) (100 128) (85 110) (75 78) (81 46) (96 25) (118 9) (153 -4) (199 -8) (247 -2) (313 14)) NIL ((0.804730058 13.568931 0 0 19.171619 8.5864067 ) (10.390539 17.862133 19.171619 8.5864067 18.1419029 -24.932033 ) (38.63311 13.9825229 37.313522 -16.3456268 -13.7392387 1.14173698 ) (69.07701 -1.79223466 23.574283 -15.2038898 -95.184936 8.36507798 ) (45.058822 -12.813585 -71.610656 -6.83881188 58.47901 -16.602043 ) (2.68767023 -27.953422 -13.131645 -23.440856 -108.73107 64.043106 ) (-64.809524 -19.372722 -121.8627 40.602249 178.4453 -59.570404 ) (-97.44955 -8.5556755 56.58264 -18.968154 0.949485779 24.238521 ) (-40.39218 -15.404567 57.532127 5.27036858 -62.243286 -7.38368893 ) (-13.981699 -13.826044 -4.7111616 -2.11332083 8.02367784 -18.703762 ) (-14.6810188 -25.291248 3.31251764 -20.817085 18.148567 22.19876 ) (-2.29421711 -35.008949 21.461086 1.38167786 -14.617956 13.908697 ) (11.857891 -26.672924 6.8431301 15.290376 -1.67673778 -11.8335666 ) (17.862651 -17.299331 5.16639233 3.45680857 9.3249073 -2.57442284 ) (27.691497 -15.1297359 14.4913 0.882385612 0.377099991 10.1312599 ) (42.371345 -9.1817188 14.8684 11.013647 -22.833305 -1.95062256 ) (45.823097 0.856617928 -7.9649067 9.0630245 36.956123 3.67121887 ) (56.336258 11.7552509 28.991222 12.734243 -28.991222 -12.734243 )) NATURAL) (5 ((313 14) (329 6) (358 -1) (378 0) (397 2)) NIL ((11.8928566 -7.7142849 0 0 24.642856 -1.71428537 ) (24.214283 -8.5714283 24.642856 -1.71428537 -45.214279 14.571426 ) (26.249996 -2.99999952 -20.571426 12.857141 24.214283 -14.571426 ) (17.785713 2.5714283 3.6428566 -1.71428561 -3.6428566 1.71428561 )) NATURAL) (2 ((397 2) (397 36)) NIL ((0 34. 0 0 0 0 )) NATURAL) (4 ((397 36) (378 36) (361 41) (355 51)) NIL ((-18.799999 -1. 0 0 -1.19999981 6. ) (-19.399997 2. -1.19999981 6. 17.999996 0 ) (-11.599998 8. 16.799999 6. -16.799999 -6. )) NATURAL) (2 ((355 51) (355 185)) NIL ((0 134. 0 0 0 0 )) NATURAL) (6 ((355 185) (348 212) (328 232) (304 245) (271 252) (229 256)) NIL ((-3.67464113 28.473682 0 0 -19.952152 -8.84210397 ) (-13.6507168 24.052627 -19.952152 -8.84210397 21.760761 2.21052551 ) (-22.722484 16.315788 1.80861187 -6.63157845 -13.090906 0 ) (-27.459327 9.6842098 -11.282295 -6.63157845 0.602870941 3.78947353 ) (-38.440185 4.94736767 -10.679424 -2.84210491 10.679424 2.84210491 )) NATURAL) (6 ((229 256) (177 253) (135 241) (115 228) (99 209) (93 182)) NIL ((-53.12918 -0.583732248 0 0 6.77511979 -14.497606 ) (-49.741623 -7.83253575 6.77511979 -14.497606 26.1244 18.488033 ) (-29.904304 -13.086122 32.89952 3.99043036 -39.27272 -11.454544 ) (-16.641147 -14.822965 -6.37320519 -7.46411515 22.966503 -2.66985512 ) (-11.531099 -23.622009 16.5932998 -10.13397 -16.5932998 10.13397 )) NATURAL)) ((11 ((308 127) (235 123) (180 115) (142 101) (127 74) (139 46) (174 32) (223 30) (290 45) (308 80) (308 127)) NIL ((-76.935379 -3.13017798 0 0 23.612281 -5.21893215 ) (-65.129226 -5.73964405 23.612281 -5.21893215 -10.061409 2.09466267 ) (-46.54766 -9.91124536 13.5508728 -3.12426949 10.63335 -15.159719 ) (-27.68011 -20.615371 24.184223 -18.2839889 3.5280075 16.544212 ) (-1.73188519 -30.627254 27.71223 -1.73977589 -0.745380402 20.982864 ) (25.607654 -21.875595 26.96685 19.243091 -24.546482 -10.4756908 ) (40.30126 -7.87034989 2.42036581 8.76740075 44.931312 8.9199009 ) (65.187286 5.35700226 47.351684 17.687301 -131.1788 4.79608155 ) (46.949569 25.442344 -83.827118 22.483383 77.783889 -10.1042308 ) (2.0144062 42.87361 -6.04321957 12.379152 6.04321957 -12.379152 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 142Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 14:29:14) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((3 ((73 337) (73 337) (73 0)) NIL ((0 84.25 0 0 0 -505.5 ) (0 -168.5 0 -505.5 0 505.5 )) NATURAL) (2 ((73 0) (122 0)) NIL ((49. 0 0 0 0 0 )) NATURAL) (2 ((122 0) (122 19)) NIL ((0 19. 0 0 0 0 )) NATURAL) (19 ((122 19) (145 7) (186 -3) (223 -6) (274 -2) (306 10) (330 24) (346 42) (358 66) (367 124) (358 182) (346 206) (330 224) (306 238) (274 250) (223 254) (186 251) (145 241) (122 229)) NIL ((17.530986 -12.1277828 0 0 32.814079 0.766703606 ) (33.938026 -11.74443 32.814079 0.766703606 -56.070419 8.166481 ) (38.716896 -6.89448739 -23.25634 8.93318559 59.467628 -3.43263149 ) (45.194366 0.322382927 36.211288 5.50055409 -73.800094 5.56404019 ) (44.505607 8.60495759 -37.588813 11.064594 37.732772 -12.823528 ) (25.783184 13.2577877 0.143964797 -1.75893473 -11.131006 9.73007585 ) (20.361644 16.363891 -10.987041 7.97114278 6.79124547 -14.0967788 ) (12.770227 17.286644 -4.195796 -6.12563706 7.96602345 58.657035 ) (12.5574417 40.489532 3.77022743 52.531402 -32.655334 -52.531402 ) (-3.20374965E-7 66.755233 -28.885112 0 32.655334 -52.531402 ) (-12.5574417 40.489524 3.77022743 -52.531402 -7.96602345 58.657035 ) (-12.770227 17.286644 -4.195796 6.12563706 -6.79124547 -14.0967788 ) (-20.361644 16.363891 -10.987041 -7.97114278 11.131006 9.73007585 ) (-25.783184 13.2577858 0.143965035 1.75893426 -37.732772 -12.823528 ) (-44.505607 8.60495568 -37.588813 -11.064594 73.800094 5.56404019 ) (-45.194366 0.322382271 36.211288 -5.50055409 -59.467628 -3.43263149 ) (-38.716896 -6.89448739 -23.25634 -8.93318559 56.070419 8.166481 ) (-33.938026 -11.74443 32.814079 -0.766703487 -32.814079 0.766703487 )) NATURAL) (2 ((122 229) (122 337)) NIL ((0 108. 0 0 0 0 )) NATURAL) (2 ((122 337) (73 337)) NIL ((-49. 0 0 0 0 0 )) NATURAL)) ((11 ((315 124) (312 86) (300 53) (275 34) (240 28) (220 28) (200 28) (165 34) (140 53) (128 86) (125 124)) NIL ((-1.25837326 -38.552482 0 0 -10.44976 3.31491756 ) (-6.48325349 -36.895027 -10.44976 3.31491756 -1.75119591 13.425411 ) (-17.808612 -26.8674 -12.200956 16.740329 -6.54545403 -3.01657295 ) (-33.282295 -11.6353588 -18.74641 13.7237568 45.933013 -7.35911656 ) (-29.062198 -1.59116006 27.186603 6.36464024 -27.186603 -9.5469589 ) (-15.4688987 0 0 -3.18232012 -27.186603 9.5469589 ) (-29.062198 1.5911603 -27.186603 6.36464024 45.933013 7.35911656 ) (-33.282295 11.6353588 18.74641 13.7237568 -6.54545403 3.01657295 ) (-17.808609 26.8674 12.200956 16.740329 -1.75119781 -13.425413 ) (-6.48325253 36.895027 10.4497585 3.3149166 -10.4497585 -3.3149166 )) NATURAL) (11 ((125 124) (128 162) (140 195) (165 214) (200 220) (220 220) (240 220) (275 214) (300 195) (312 162) (315 124)) NIL ((1.25837326 38.552482 0 0 10.44976 -3.31491756 ) (6.48325349 36.895027 10.44976 -3.31491756 1.75119591 -13.425411 ) (17.808612 26.8674 12.200956 -16.740329 6.54545403 3.01657295 ) (33.282295 11.6353588 18.74641 -13.7237568 -45.933013 7.35911656 ) (29.062198 1.59116006 -27.186603 -6.36464024 27.186603 9.5469589 ) (15.4688987 0 0 3.18232012 27.186603 -9.5469589 ) (29.062198 -1.5911603 27.186603 -6.36464024 -45.933013 -7.35911656 ) (33.282295 -11.6353588 -18.74641 -13.7237568 6.54545403 -3.01657295 ) (17.808609 -26.8674 -12.200956 -16.740329 1.75119781 13.425413 ) (6.48325253 -36.895027 -10.4497585 -3.3149166 10.4497585 3.3149166 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 143Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 7:26:59) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((24 ((379 184) (360 219) (330 239) (291 250) (247 253) (199 250) (165 243) (128 229) (105 209) (87 184) (76 148) (73 124) (76 100) (86 64) (103 37) (124 19) (163 3) (199 -4) (247 -7) (291 -2) (330 9) (358 30) (370 49) (379 74)) NIL ((-16.644897 38.499534 0 0 -14.1306038 -20.997219 ) (-23.710201 28.000923 -14.1306038 -20.997219 4.65302277 14.9861088 ) (-35.514289 14.496757 -9.477581 -6.0111103 7.51851369 -2.94722366 ) (-41.232612 7.01203538 -1.95906663 -8.95833398 -10.727083 2.80278683 ) (-48.55522 -0.544904828 -12.686151 -6.15554715 41.389816 3.73607063 ) (-40.546463 -4.83241654 28.70367 -2.41947651 -46.832206 -5.74706936 ) (-35.258895 -10.125427 -18.128536 -8.16654588 43.939003 1.25220871 ) (-31.41793 -17.665866 25.810466 -6.91433716 -26.923797 6.73823167 ) (-19.069366 -21.21109 -1.11333346 -0.176105380 9.75619889 -22.205131 ) (-15.3045978 -32.48976 8.64286614 -22.381237 -0.101001739 46.08229 ) (-6.71223355 -31.829849 8.5418644 23.701057 -3.35219002 -24.124053 ) (0.153535515 -20.190822 5.18967438 -0.422999382 1.50976372 -21.586059 ) (6.09809209 -31.406852 6.6994381 -22.009059 3.31313324 38.468307 ) (14.4540958 -34.181755 10.012571 16.459247 -14.762298 -6.28718758 ) (17.0855179 -20.8661 -4.74972725 10.17206 37.73606 -13.319557 ) (31.203823 -17.35382 32.986335 -3.14749718 -52.181953 17.565422 ) (38.099174 -11.718605 -19.195617 14.4179268 44.99176 -14.942138 ) (41.399444 -4.7717495 25.796146 -0.524212718 -37.78511 12.203134 ) (48.30303 0.805606008 -11.9889679 11.6789226 10.148691 -9.8704033 ) (41.388412 7.5493269 -1.84027552 1.80851817 -8.8096504 15.278482 ) (35.14331 16.997085 -10.649927 17.087001 -10.910089 -27.243534 ) (19.038337 20.462322 -21.560016 -10.156534 22.450019 21.695667 ) (8.703331 21.153621 0.890004874 11.539133 -0.890004874 -11.539133 )) NATURAL) (2 ((379 74) (329 74)) NIL ((-50. 0 0 0 0 0 )) NATURAL) (20 ((329 74) (329 64) (322 47) (298 35) (268 30) (243 29) (218 30) (176 36) (153 48) (135 71) (124 124) (135 177) (153 200) (176 212) (218 218) (243 219) (268 218) (298 213) (322 201) (329 184)) NIL ((0.788245917 -7.8808317 0 0 -4.72947598 -12.7150058 ) (-1.57649183 -14.238334 -4.72947598 -12.7150058 -18.352619 21.575031 ) (-15.4822788 -16.165821 -23.082096 8.8600273 18.139965 -1.58513355 ) (-29.494392 -8.09836198 -4.94212914 7.27489377 11.792747 -3.23450184 ) (-28.540145 -2.4407196 6.85061837 4.04039192 0.689037323 -3.47685623 ) (-21.345008 -0.138755947 7.53965569 0.563535691 -44.548889 5.14192868 ) (-36.079803 2.99574423 -37.009239 5.70546437 75.50656 0.909141541 ) (-35.335762 9.15577889 38.497322 6.6146059 -41.47737 -2.77849531 ) (-17.577129 14.3811378 -2.98005152 3.83611059 6.4029312 40.204834 ) (-17.3557129 38.319664 3.4228797 44.040947 27.865646 -44.040847 ) (-8.89971852E-6 60.340187 31.288528 9.19930607E-5 -27.865531 -44.041404 ) (17.355751 38.319572 3.42299652 -44.041313 -6.40351487 40.206466 ) (17.576992 14.381498 -2.98051882 -3.83484268 41.47959 -2.78447056 ) (35.336265 9.15442086 38.499076 -6.61931325 -75.514846 0.931411744 ) (36.077919 3.00081348 -37.015777 -5.6879015 44.57981 5.05882263 ) (21.352046 -0.157676696 7.56403638 -0.629078388 -0.804404259 -3.16670466 ) (28.513881 -2.37010717 6.7596321 -3.79578304 -11.3621997 -4.39200688 ) (29.592414 -8.3618946 -4.60256768 -8.1877899 -19.746788 2.73473835 ) (15.116451 -15.1823158 -24.349357 -5.45305157 24.349357 5.45305157 )) NATURAL) (2 ((329 184) (379 184)) NIL ((50. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 144Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 7:36:21) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((3 ((367 337) (367 337) (367 0)) NIL ((0 84.25 0 0 0 -505.5 ) (0 -168.5 0 -505.5 0 505.5 )) NATURAL) (2 ((367 0) (319 0)) NIL ((-48. 0 0 0 0 0 )) NATURAL) (2 ((319 0) (319 19)) NIL ((0 19. 0 0 0 0 )) NATURAL) (19 ((319 19) (288 7) (255 -1) (217 -6) (166 -2) (134 9) (111 24) (94 42) (82 66) (73 124) (82 182) (94 206) (111 224) (134 239) (166 250) (217 254) (255 249) (288 241) (319 229)) NIL ((-30.485801 -12.997631 0 0 -3.08518171 5.9857931 ) (-32.028389 -10.004734 -3.08518171 5.9857931 3.42590904 -5.92896652 ) (-33.400619 -6.98342515 0.340727687 0.0568262711 -28.618454 11.7300739 ) (-47.369117 -1.06156063 -28.277729 11.786901 63.04792 -4.99134064 ) (-44.122886 8.22966958 34.770195 6.79556084 -31.573257 -3.76470709 ) (-25.13932 13.142877 3.19693613 3.03085375 3.24512148 2.05016756 ) (-20.319824 17.198814 6.4420576 5.0810213 0.592772484 -10.4359607 ) (-13.5813789 17.061855 7.0348301 -5.3549404 -11.616209 57.69367 ) (-12.354654 40.553749 -4.58137989 52.338737 33.872062 -52.338737 ) (7.97212123E-7 66.723114 29.290687 -2.04428988E-6 -33.872062 -52.33872 ) (12.354654 40.553749 -4.58137989 -52.338729 11.616209 57.693664 ) (13.5813789 17.061855 7.03482915 5.3549385 -0.592770577 -10.4359588 ) (20.319824 17.198814 6.44205857 -5.08102036 -3.24512196 2.05016661 ) (25.13932 13.142877 3.1969366 -3.03085375 31.573257 -3.76470709 ) (44.122886 8.22966958 34.770195 -6.79556084 -63.04792 -4.99134064 ) (47.369117 -1.06156182 -28.277729 -11.786901 28.618454 11.7300739 ) (33.400619 -6.98342515 0.340728342 -0.0568258986 -3.42591 -5.92896652 ) (32.028389 -10.004734 -3.08518171 -5.9857931 3.08518171 5.9857931 )) NATURAL) (2 ((319 229) (319 337)) NIL ((0 108. 0 0 0 0 )) NATURAL) (2 ((319 337) (367 337)) NIL ((48. 0 0 0 0 0 )) NATURAL)) ((21 ((125 124) (128 86) (140 53) (166 34) (195 28) (220 25) (248 28) (275 34) (300 53) (312 86) (315 124) (312 162) (300 195) (275 214) (240 220) (220 221) (200 220) (166 214) (140 195) (128 162) (125 124)) NIL ((1.51067447 -38.577346 0 0 8.93595315 3.46408939 ) (5.97865105 -36.845298 8.93595315 3.46408939 9.32023049 12.679552 ) (19.574718 -27.041435 18.256183 16.143642 -16.216877 -0.182313919 ) (29.722465 -10.9889488 2.03930521 15.961328 -10.452711 -17.950286 ) (26.535415 -4.0027647 -8.41340638 -1.98896122 16.027721 11.9834747 ) (26.135868 1.15633010E-5 7.6143179 9.99451448 -11.658184 -11.983612 ) (27.921096 4.00271988 -4.04386616 -1.98909831 6.60501576 17.950973 ) (27.179737 10.989109 2.5611496 15.9618759 -20.761878 0.179710388 ) (19.359943 27.04084 -18.200729 16.141586 10.4425125 -12.669805 ) (6.38047219 36.847518 -7.75821686 3.47177982 2.99181557 -3.50048733 ) (0.118163108 38.569053 -4.76640129 -0.0287075825 -4.40977478 -3.32824135 ) (-6.85312558 36.876228 -9.17617608 -3.35694933 -3.35271454 -13.186544 ) (-17.705661 26.926006 -12.5288906 -16.543495 -6.17935753 2.07443428 ) (-33.324226 11.419729 -18.708248 -14.4690609 46.070129 10.8888015 ) (-28.997413 2.39507007 27.36188 -3.58025837 -28.10115 2.3703537 ) (-15.686109 -1.16033479E-5 -0.739272595 -1.20990467 -23.665515 -2.37021637 ) (-28.25814 -2.3950243 -24.404789 -3.58012104 38.763206 -10.889488 ) (-33.281318 -11.419889 14.358423 -14.46961 0.612663269 -2.07182503 ) (-18.616565 -26.92541 14.971086 -16.541435 -5.21385956 13.176794 ) (-6.25240899 -36.878448 9.75722695 -3.36464119 -9.75722695 3.36464119 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 145Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 7:44:36) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((10 ((114 106) (121 71) (140 47) (162 36) (198 28) (232 26) (262 30) (290 38) (310 55) (317 74)) NIL ((3.72561359 -37.048507 0 0 19.646316 12.291084 ) (13.5487728 -30.902969 19.646316 12.291084 -26.23159 4.54457855 ) (20.079292 -16.3395958 -6.5852747 16.8356628 31.280056 -18.469402 ) (29.134048 -8.738636 24.694782 -1.63374018 -32.88864 9.3330364 ) (37.384506 -5.70585728 -8.1938591 7.69929696 4.27451039 -0.862744332 ) (31.327903 1.56206679 -3.91934872 6.8365526 3.79060364 -5.88205815 ) (29.303859 5.4575901 -0.128744781 0.954493762 -7.43692494 12.390974 ) (25.456649 12.6075706 -7.56567 13.345468 -10.0429077 -13.681835 ) (12.8695259 19.112121 -17.608577 -0.336367309 17.608577 0.336367309 )) NATURAL) (2 ((317 74) (367 74)) NIL ((50. 0 0 0 0 0 )) NATURAL) (26 ((367 74) (358 49) (346 30) (318 9) (279 -2) (235 -7) (187 -4) (151 3) (120 17) (92 38) (74 63) (64 90) (61 124) (64 148) (75 184) (92 210) (116 229) (153 245) (188 252) (235 253) (276 248) (315 237) (345 217) (365 189) (375 153) (376 106)) NIL ((-9.14956666 -26.922843 0 0 0.897400857 11.5370788 ) (-8.7008648 -21.154304 0.897400857 11.5370788 -22.487003 -21.685394 ) (-19.046966 -20.459922 -21.589603 -10.148315 11.0506248 27.204502 ) (-35.111259 -17.005985 -10.5389785 17.056186 8.28450204 -15.132629 ) (-41.507988 -7.51611615 -2.25447607 1.92355561 -8.18863679 9.3260288 ) (-47.85678 -0.929544092 -10.443113 11.249586 30.470039 -10.1714935 ) (-43.064872 5.23429489 20.026927 1.07809257 -17.691524 7.3599491 ) (-31.883708 9.99236299 2.33540249 8.4380417 -1.70394110 -1.26830482 ) (-30.400276 17.796249 0.631461263 7.16973687 12.5072899 -2.28672886 ) (-23.51517 23.822624 13.138752 4.883008 -6.32522488 -7.5847759 ) (-13.53903 24.913242 6.8135271 -2.7017684 0.793606759 20.625831 ) (-6.3286991 32.52439 7.60713387 17.924064 -2.84920406 -44.918556 ) (-0.146167755 27.989177 4.7579298 -26.994491 4.60321713 57.048393 ) (6.91337014 29.518886 9.3611469 30.053905 -3.56366348 -51.275047 ) (14.492685 33.935264 5.79748345 -21.221145 -2.34856748 16.051834 ) (19.115882 20.740036 3.44891596 -5.16931153 18.957935 5.067708 ) (32.043769 18.1045799 22.406852 -0.101603269 -37.483184 -12.32267 ) (35.70903 11.84164 -15.0763359 -12.424274 40.974823 8.22297288 ) (41.1201 3.52885342 25.89849 -4.20130062 -42.416122 -2.56921959 ) (45.81053 -1.957057 -16.517631 -6.7705202 20.689662 2.05390358 ) (39.637733 -7.7006254 4.17203236 -4.71661663 -16.342529 -5.64639378 ) (35.638504 -15.24044 -12.1704979 -10.36301 2.68045235 2.53167534 ) (24.808235 -24.337612 -9.49004556 -7.83133507 -0.379274368 1.51969146 ) (15.128551 -31.409103 -9.8693199 -6.3116436 -1.16334915 -8.610445 ) (4.67755604 -42.02597 -11.032669 -14.922088 11.032669 14.922088 )) NATURAL) (2 ((376 106) (114 106)) NIL ((-262. 0 0 0 0 0 )) NATURAL)) ((13 ((111 148) (115 173) (128 195) (142 206) (164 215) (199 220) (219 221) (239 220) (273 215) (296 206) (309 195) (323 173) (327 148)) NIL ((1.59247875 25.037006 0 0 14.445127 -0.222058296 ) (8.8150425 24.925979 14.445127 -0.222058296 -18.225643 -16.889705 ) (14.147348 16.259063 -3.78051567 -17.111766 10.4574489 19.780899 ) (15.595558 9.03774835 6.67693425 2.66913366 18.395839 -8.23390008 ) (31.470413 7.58993245 25.072776 -5.56476689 -54.040817 1.15470123 ) (29.522777 2.60251617 -28.968044 -4.41006565 29.767448 3.61509848 ) (15.438461 -1.19209289E-7 0.799406291 -0.794966818 24.971008 -3.61509848 ) (28.723369 -2.60251665 25.770416 -4.41006565 -45.65148 -1.15470123 ) (31.668045 -7.58993245 -19.881069 -5.56476689 7.63492776 8.23390008 ) (15.60444 -9.03774835 -12.246141 2.66913366 21.111778 -19.780899 ) (13.914188 -16.259067 8.8656368 -17.111766 -26.082042 16.889705 ) (9.73880197 -24.925979 -17.216407 -0.222057551 17.216407 0.222057551 )) NATURAL) (2 ((327 148) (111 148)) NIL ((-216. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 146Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 7:51:03) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((2 ((156 0) (156 210)) NIL ((0 210. 0 0 0 0 )) NATURAL) (2 ((156 210) (60 210)) NIL ((-96. 0 0 0 0 0 )) NATURAL) (2 ((60 210) (60 246)) NIL ((0 36. 0 0 0 0 )) NATURAL) (2 ((60 246) (156 246)) NIL ((96. 0 0 0 0 0 )) NATURAL) (2 ((156 246) (156 292)) NIL ((0 46. 0 0 0 0 )) NATURAL) (10 ((156 292) (165 316) (189 333) (215 341) (243 345) (278 346) (315 342) (348 331) (369 315) (378 292)) NIL ((5.11860848 25.295597 0 0 23.288345 -7.7735853 ) (16.762779 21.408802 23.288345 -7.7735853 -26.441726 -3.1320734 ) (26.83026 12.069181 -3.15338469 -10.9056587 4.47857857 8.3018837 ) (25.916164 5.31446457 1.32519412 -2.60377359 8.5274124 -0.0754714012 ) (31.505065 2.67295551 9.8526077 -2.67924499 -8.58823396 -1.99999904 ) (37.063552 -1.00628972 1.26437258 -4.67924404 -4.17447186 -3.92452908 ) (36.240692 -7.64779854 -2.9100995 -8.6037731 -10.713871 5.69811249 ) (27.973655 -13.402515 -13.6239719 -2.90566063 -0.970033646 -6.86792374 ) (13.8646679 -19.742137 -14.594005 -9.77358438 14.594005 9.77358438 )) NATURAL) (2 ((378 292) (378 272)) NIL ((0 -20. 0 0 0 0 )) NATURAL) (2 ((378 272) (337 272)) NIL ((-41. 0 0 0 0 0 )) NATURAL) (8 ((337 272) (331 295) (319 305) (300 311) (273 313) (245 310) (219 299) (209 283)) NIL ((-4.74338722 26.25661 0 0 -7.53967667 -19.539676 ) (-8.51322557 16.48677 -7.53967667 -19.539676 1.69838524 19.698383 ) (-15.203708 6.79628945 -5.84129143 0.158708185 -5.25386429 -5.25386334 ) (-23.671932 4.32806492 -11.0951557 -5.0951557 13.3170719 1.31707239 ) (-28.10855 -0.108553722 2.22191667 -3.77808333 -6.01442719 -6.01442719 ) (-28.893848 -6.89385033 -3.7925105 -9.792511 28.74063 4.74063969 ) (-18.31604 -14.3160419 24.948123 -5.0518713 -24.948123 5.0518713 )) NATURAL) (2 ((209 283) (209 246)) NIL ((0 -37. 0 0 0 0 )) NATURAL) (2 ((209 246) (313 246)) NIL ((104. 0 0 0 0 0 )) NATURAL) (2 ((313 246) (313 210)) NIL ((0 -36. 0 0 0 0 )) NATURAL) (2 ((313 210) (209 210)) NIL ((-104. 0 0 0 0 0 )) NATURAL) (2 ((209 210) (209 0)) NIL ((0 -210. 0 0 0 0 )) NATURAL) (2 ((209 0) (156 0)) NIL ((-53. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 147Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 8:11:15) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((11 ((367 -36) (360 -58) (339 -81) (316 -96) (276 -109) (223 -113) (171 -109) (130 -96) (106 -81) (87 -58) (79 -36)) NIL ((-3.1312089 -21.157455 0 0 -23.212745 -5.05524826 ) (-14.737581 -23.685081 -23.212745 -5.05524826 32.063728 19.276241 ) (-21.91846 -19.102207 8.85098649 14.220993 -33.042182 -18.04972 ) (-29.588569 -13.906076 -24.1912 -3.82872963 10.105022 16.922653 ) (-48.727256 -9.27347947 -14.0861778 13.093923 16.622085 -7.6408863 ) (-54.502388 6.37024641E-7 2.53591108 5.45303726 7.4066181 7.6408844 ) (-48.263168 9.27347947 9.94252969 13.0939216 13.751432 -16.922649 ) (-31.444919 13.906076 23.693962 -3.82872915 -26.412349 18.04972 ) (-20.957134 19.102207 -2.71838999 14.220993 19.897983 -19.276241 ) (-13.726532 23.685081 17.1795959 -5.05524826 -17.1795959 5.05524826 )) NATURAL) (2 ((79 -36) (134 -36)) NIL ((55. 0 0 0 0 0 )) NATURAL) (8 ((134 -36) (157 -66) (188 -78) (215 -81) (238 -81) (278 -72) (310 -53) (319 -26)) NIL ((20.736858 -34.19924 0 0 13.578838 25.195465 ) (27.526279 -21.601509 13.578838 25.195465 -19.894191 -17.977325 ) (31.15802 -5.39470959 -6.3153553 7.21813775 -6.00206185 -7.28615475 ) (21.841632 -1.81964922 -12.317417 -0.0680177510 43.902435 11.121948 ) (31.475437 3.67330837 31.585022 11.053932 -43.607688 -1.20164871 ) (41.256607 14.126417 -12.0226726 9.85228349 -19.471656 -0.315355301 ) (19.498107 23.821022 -31.49433 9.53692819 31.49433 -9.53692819 )) NATURAL) (2 ((319 -26) (319 19)) NIL ((0 45. 0 0 0 0 )) NATURAL) (19 ((319 19) (294 10) (255 -1) (217 -6) (166 -2) (134 9) (111 24) (94 42) (78 78) (73 124) (77 160) (88 196) (111 224) (134 239) (166 250) (217 254) (263 249) (297 238) (319 229)) NIL ((-20.838954 -8.1762371 0 0 -24.966262 -4.94256687 ) (-33.322082 -10.6475219 -24.966262 -4.94256687 40.83132 12.712835 ) (-37.872688 -9.2336712 15.865064 7.77026845 -48.359054 2.09122372 ) (-46.187156 -0.417790532 -32.493995 9.86149217 68.604934 -3.07773304 ) (-44.378677 7.9048357 36.110939 6.7837591 -34.060707 -1.78029155 ) (-25.298099 13.798448 2.05022669 5.00346756 7.6379194 -7.8010969 ) (-19.428913 14.901367 9.6881466 -2.79762983 -14.490961 26.984676 ) (-16.986244 25.596077 -4.80281449 24.187049 20.325923 -10.1376247 ) (-11.6260967 44.714317 15.523111 14.049425 -6.81274796 -34.43418 ) (0.490640223 41.546646 8.7103634 -20.384758 -5.07493115 27.874359 ) (6.66353799 35.099075 3.63543177 7.489604 15.112472 -17.0632629 ) (17.855205 34.057045 18.747905 -9.5736599 -25.374961 -7.62130547 ) (23.91563 20.672733 -6.62705899 -17.194965 14.387386 17.548488 ) (24.482265 12.252012 7.7603283 0.353523433 21.825416 -8.572649 ) (43.155304 8.31921006 29.585746 -8.21912576 -41.68907 -1.25789261 ) (51.896514 -0.528861285 -12.1033249 -9.47701837 0.930879594 1.60422325 ) (40.258628 -9.20376779 -11.172445 -7.8727951 -4.0344429 12.8409939 ) (27.068962 -10.656065 -15.206888 4.96819878 15.206888 -4.96819878 )) NATURAL) (2 ((319 229) (319 246)) NIL ((0 17. 0 0 0 0 )) NATURAL) (2 ((319 246) (367 246)) NIL ((48. 0 0 0 0 0 )) NATURAL) (2 ((367 246) (367 -36)) NIL ((0 -282. 0 0 0 0 )) NATURAL)) ((11 ((315 124) (312 86) (300 53) (275 34) (240 28) (220 26) (200 28) (166 34) (140 53) (128 86) (125 124)) NIL ((-1.25777840 -38.569053 0 0 -10.453329 3.41436482 ) (-6.4844427 -36.861877 -10.453329 3.41436482 -1.73335266 12.9281749 ) (-17.804447 -26.983425 -12.1866817 16.34254 -6.61325646 -1.12707138 ) (-33.29776 -11.204418 -18.799938 15.215469 46.186386 -14.419889 ) (-29.004505 -3.1988945 27.386447 0.795579792 -28.1323 4.80662918 ) (-15.6842098 4.17232513E-7 -0.745856881 5.60220909 -23.657165 -4.80662918 ) (-28.258647 3.19889498 -24.403022 0.795579315 38.76097 14.419889 ) (-33.28118 11.20442 14.357952 15.215469 0.613256455 1.12706756 ) (-18.6166 26.983425 14.971208 16.3425369 -5.21401215 -12.928171 ) (-6.2523985 36.861877 9.7571964 3.41436482 -9.7571964 -3.41436482 )) NATURAL) (11 ((125 124) (128 162) (140 195) (166 214) (200 220) (220 222) (240 220) (275 214) (300 195) (312 162) (315 124)) NIL ((1.37380051 38.569053 0 0 9.7571964 -3.41436482 ) (6.2523985 36.861877 9.7571964 -3.41436482 5.21401596 -12.9281749 ) (18.616603 26.983425 14.971212 -16.34254 -0.613260269 1.12707138 ) (33.28118 11.204418 14.357952 -15.215469 -38.76097 14.419889 ) (28.258647 3.1988945 -24.403022 -0.795579792 23.657165 -4.80662918 ) (15.6842098 -4.17232513E-7 -0.745855928 -5.60220909 28.1323 4.80662918 ) (29.004505 -3.19889498 27.386447 -0.795579315 -46.186386 -14.419889 ) (33.29776 -11.20442 -18.799942 -15.215469 6.61326218 -1.12706756 ) (17.804447 -26.983425 -12.1866798 -16.3425369 1.73335075 12.928171 ) (6.4844427 -36.861877 -10.453329 -3.41436482 10.453329 3.41436482 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 150Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 8:17:17) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((3 ((81 0) (81 0) (81 337)) NIL ((0 -84.25 0 0 0 505.5 ) (0 168.5 0 505.5 0 -505.5 )) NATURAL) (2 ((81 337) (132 337)) NIL ((51. 0 0 0 0 0 )) NATURAL) (2 ((132 337) (132 221)) NIL ((0 -116. 0 0 0 0 )) NATURAL) (11 ((132 221) (159 239) (190 249) (215 254) (244 256) (273 253) (301 245) (321 236) (336 224) (348 208) (355 187)) NIL ((25.419338 19.823307 0 0 9.48395349 -10.939859 ) (30.161315 14.353378 9.48395349 -10.939859 -23.419769 6.69930363 ) (27.935386 6.76317025 -13.9358158 -4.24055577 24.195125 2.14264202 ) (26.097133 3.59393549 10.2593097 -2.09791374 -13.3607387 -3.26987267 ) (29.676075 -0.138914734 -3.10142994 -5.3677864 5.24783802 -1.06315231 ) (29.198562 -6.03827763 2.14640856 -6.4309387 -13.630613 7.5224819 ) (24.529663 -8.7079754 -11.484205 1.09154343 7.27461815 -5.02677727 ) (16.6827659 -10.1298198 -4.2095871 -3.93523455 2.53214359 0.584630490 ) (13.739254 -13.772739 -1.67744326 -3.35060406 -5.40319538 -3.31174469 ) (9.3602123 -18.779216 -7.08063889 -6.66234875 7.08063889 6.66234875 )) NATURAL) (2 ((355 187) (357 0)) NIL ((2. -187. 0 0 0 0 )) NATURAL) (2 ((357 0) (308 0)) NIL ((-49. 0 0 0 0 0 )) NATURAL) (2 ((308 0) (308 166)) NIL ((0 166. 0 0 0 0 )) NATURAL) (9 ((308 166) (302 195) (283 213) (255 220) (232 221) (202 218) (168 211) (142 191) (132 166)) NIL ((-3.2881074 31.25368 0 0 -16.271354 -13.5220909 ) (-11.423784 24.492633 -16.271354 -13.5220909 3.35677528 1.61045646 ) (-26.01675 11.775772 -12.914579 -11.911634 26.844253 7.08026505 ) (-25.5092 3.40427065 13.929674 -4.8313694 -26.733795 0.0684823990 ) (-24.946426 -1.39285707 -12.8041229 -4.762887 8.09094239 4.64580345 ) (-33.705078 -3.83284283 -4.71318054 -0.117083445 12.370027 -18.651691 ) (-32.233245 -13.275772 7.65684796 -18.7687759 14.4289398 15.9609699 ) (-17.361927 -24.064064 22.085788 -2.80780554 -22.085788 2.80780554 )) NATURAL) (2 ((132 166) (132 0)) NIL ((0 -166. 0 0 0 0 )) NATURAL) (2 ((132 0) (81 0)) NIL ((-51. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 151Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 8:21:40) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((2 ((254 210) (254 0)) NIL ((0 -210. 0 0 0 0 )) NATURAL) (2 ((254 0) (304 0)) NIL ((50. 0 0 0 0 0 )) NATURAL) (2 ((304 0) (304 246)) NIL ((0 246. 0 0 0 0 )) NATURAL) (2 ((304 246) (115 246)) NIL ((-189. 0 0 0 0 0 )) NATURAL) (2 ((115 246) (115 210)) NIL ((0 -36. 0 0 0 0 )) NATURAL) (2 ((115 210) (254 210)) NIL ((139. 0 0 0 0 0 )) NATURAL)) ((13 ((236 313) (240 329) (251 339) (275 345) (299 339) (310 329) (314 313) (310 297) (299 287) (275 281) (251 287) (240 297) (236 313)) NIL ((2.99777937 17.538459 0 0 6.01332379 -9.2307682 ) (6.00444127 12.9230766 6.01332379 -9.2307682 11.93338 10.1538429 ) (17.984455 8.7692299 17.946704 0.923076273 -17.7468529 -19.384609 ) (27.057731 -6.96629285E-7 0.199850619 -18.461536 -18.945957 19.384613 ) (17.784599 -8.7692299 -18.746109 0.923076988 15.530712 -10.1538448 ) (6.80384827 -12.9230766 -3.21539688 -9.2307682 -7.17690278 9.2307682 ) (-7.15255737E-7 -17.538459 -10.3922996 0 7.17690278 9.2307682 ) (-6.80384827 -12.9230747 -3.2153964 9.2307682 -15.5307159 -10.1538448 ) (-17.784603 -8.7692299 -18.746112 -0.923076749 18.945961 19.384613 ) (-27.057731 6.96629285E-7 0.199851840 18.461536 17.7468529 -19.384613 ) (-17.984455 8.7692299 17.946704 -0.923076988 -11.93338 10.1538448 ) (-6.00444127 12.9230766 6.01332379 9.2307682 -6.01332379 -9.2307682 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 152Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 8:27:59) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((2 ((275 -33) (275 210)) NIL ((0 243. 0 0 0 0 )) NATURAL) (2 ((275 210) (136 210)) NIL ((-139. 0 0 0 0 0 )) NATURAL) (2 ((136 210) (136 246)) NIL ((0 36. 0 0 0 0 )) NATURAL) (2 ((136 246) (325 246)) NIL ((189. 0 0 0 0 0 )) NATURAL) (2 ((325 246) (325 -32)) NIL ((0 -278. 0 0 0 0 )) NATURAL) (13 ((325 -32) (321 -50) (312 -67) (298 -83) (279 -97) (250 -107) (193 -113) (136 -107) (108 -97) (88 -83) (75 -67) (66 -50) (61 -34)) NIL ((-2.93862963 -18.215393 0 0 -6.36822224 1.29237032 ) (-6.12274075 -17.569206 -6.36822224 1.29237032 1.84111404 -0.461851597 ) (-11.5704059 -16.5077629 -4.52710819 0.830518723 -0.996235848 0.555036068 ) (-16.59563 -15.3997268 -5.52334404 1.38555479 2.14382934 4.2417059 ) (-21.047061 -11.89332 -3.37951469 5.62726116 -37.579078 -5.52186203 ) (-43.216117 -9.02698899 -40.958595 0.105398297 40.172508 17.845745 ) (-64.088455 0.00128283351 -0.786086679 17.951145 44.889015 -17.861129 ) (-42.43003 9.021862 44.102935 0.0900126547 -45.728599 5.5987873 ) (-21.191398 11.911268 -1.62566781 5.6888008 12.0254 -4.5340147 ) (-16.804367 15.333061 10.3997326 1.15478539 -8.37299348 0.537271738 ) (-10.591131 16.756481 2.02673769 1.69205713 3.466578 -3.6150713 ) (-6.83110524 16.641002 5.4933157 -1.92301416 -5.4933157 1.92301416 )) NATURAL) (2 ((61 -34) (111 -33)) NIL ((50. 1. 0 0 0 0 )) NATURAL) (9 ((111 -33) (120 -56) (145 -71) (170 -75) (193 -77) (216 -75) (241 -71) (266 -56) (275 -33)) NIL ((4.75 -24.371131 0 0 25.5 8.2268028 ) (17.5 -20.257728 25.5 8.2268028 -31.5 6.86598015 ) (27.249996 -8.59793664 -6. 15.0927829 4.5 -17.690719 ) (23.499996 -2.35051536 -1.49999976 -2.59793806 1.49999952 9.8969059 ) (22.75 -1.58324837E-7 -6.38824957E-8 7.29896927 1.5 -9.8969059 ) (23.5 2.35051536 1.5 -2.59793758 4.49999905 17.690715 ) (27.249996 8.59793855 5.99999905 15.092781 -31.499992 -6.86597634 ) (17.499996 20.257728 -25.499996 8.22680474 25.499996 -8.22680474 )) NATURAL)) ((13 ((296 345) (272 339) (261 329) (257 313) (261 297) (272 287) (296 281) (320 287) (331 297) (335 313) (331 329) (320 339) (296 345)) NIL ((-27.115383 -5.32938576 0 0 18.692306 -4.02368546 ) (-17.7692299 -7.34122849 18.692306 -4.02368546 -15.461536 -3.88156986 ) (-6.80769158 -13.305698 3.23076916 -7.9052553 7.15384579 7.549963 ) (2.38418579E-7 -17.43597 10.3846149 -0.355292022 -7.15384579 9.681715 ) (6.80769253 -12.950405 3.23076868 9.32642365 15.461536 -10.2768306 ) (17.7692299 -8.76239778 18.692306 -0.950407744 -18.692306 19.425609 ) (27.115383 -2.57045030E-7 0 18.475204 -18.692306 -19.425609 ) (17.7692299 8.76239778 -18.692306 -0.950407386 15.461538 10.2768306 ) (6.80769158 12.950407 -3.2307682 9.32642365 -7.15384675 -9.681715 ) (-2.38418579E-7 17.43597 -10.3846149 -0.355291724 7.15384579 -7.549963 ) (-6.80769253 13.305698 -3.23076868 -7.9052553 -15.461536 3.88156986 ) (-17.7692299 7.34122849 -18.692306 -4.02368546 18.692306 4.02368546 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 153Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 8:32:02) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((2 ((73 0) (73 337)) NIL ((0 337. 0 0 0 0 )) NATURAL) (2 ((73 337) (120 337)) NIL ((47. 0 0 0 0 0 )) NATURAL) (2 ((120 337) (120 157)) NIL ((0 -180. 0 0 0 0 )) NATURAL) (2 ((120 157) (165 157)) NIL ((45. 0 0 0 0 0 )) NATURAL) (2 ((165 157) (293 246)) NIL ((128. 89. 0 0 0 0 )) NATURAL) (2 ((293 246) (360 246)) NIL ((67. 0 0 0 0 0 )) NATURAL) (2 ((360 246) (199 136)) NIL ((-161. -110. 0 0 0 0 )) NATURAL) (2 ((199 136) (405 0)) NIL ((206. -136. 0 0 0 0 )) NATURAL) (2 ((405 0) (333 0)) NIL ((-72. 0 0 0 0 0 )) NATURAL) (2 ((333 0) (165 110)) NIL ((-168. 110. 0 0 0 0 )) NATURAL) (2 ((165 110) (120 110)) NIL ((-45. 0 0 0 0 0 )) NATURAL) (2 ((120 110) (120 0)) NIL ((0 -110. 0 0 0 0 )) NATURAL) (2 ((120 0) (73 0)) NIL ((-47. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 154Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 8:32:50) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((2 ((232 0) (232 301)) NIL ((0 301. 0 0 0 0 )) NATURAL) (2 ((232 301) (94 301)) NIL ((-138. 0 0 0 0 0 )) NATURAL) (2 ((94 301) (94 337)) NIL ((0 36. 0 0 0 0 )) NATURAL) (2 ((94 337) (283 337)) NIL ((189. 0 0 0 0 0 )) NATURAL) (2 ((283 337) (283 0)) NIL ((0 -337. 0 0 0 0 )) NATURAL) (2 ((283 0) (232 0)) NIL ((-51. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 155Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 8:39:05) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((2 ((31 0) (31 246)) NIL ((0 246. 0 0 0 0 )) NATURAL) (2 ((31 246) (78 246)) NIL ((47. 0 0 0 0 0 )) NATURAL) (2 ((78 246) (78 227)) NIL ((0 -19. 0 0 0 0 )) NATURAL) (9 ((78 227) (88 237) (100 244) (117 250) (153 254) (178 254) (205 250) (225 244) (241 232)) NIL ((9.3958931 10.755245 0 0 3.62463093 -4.53147984 ) (11.20821 8.48950578 3.62463093 -4.53147984 -6.1231556 4.65740013 ) (11.771263 6.286726 -2.49852466 0.125920355 38.867988 -2.09812164 ) (28.706737 5.36358547 36.369468 -1.97220134 -65.348846 -2.26491165 ) (32.401779 2.2589283 -28.979377 -4.237113 42.52742 -0.842230797 ) (24.686119 -2.39930057 13.548048 -5.0793438 -26.76086 5.63383484 ) (24.853736 -4.661726 -13.212812 0.554491878 10.516016 -9.6931133 ) (16.898929 -8.95379258 -2.69679642 -9.13862229 2.69679642 9.13862229 )) NATURAL) (10 ((241 232) (256 241) (274 248) (294 253) (322 255) (358 250) (381 242) (394 231) (403 220) (409 200)) NIL ((14.241657 9.41674615 0 0 4.5500555 -2.50048065 ) (16.516681 8.1665058 4.5500555 -2.50048065 -4.75027752 0.502404452 ) (18.6916 5.91722679 -0.200222254 -1.9980762 8.4510555 0.490862370 ) (22.716903 4.16458225 8.2508335 -1.50721383 6.94605637 -8.46585084 ) (34.440765 -1.57555818 15.1968898 -9.9730663 -36.235282 9.37254716 ) (31.520011 -6.86235047 -21.038398 -0.600517631 11.995113 -5.02434349 ) (16.4791679 -9.9750385 -9.04328538 -5.6248617 6.25482846 10.7248249 ) (10.563299 -10.2374878 -2.78845692 5.09996319 -1.01442861 -19.87495 ) (7.2676277 -15.075002 -3.80288553 -14.77499 3.80288553 14.77499 )) NATURAL) (2 ((409 200) (409 0)) NIL ((0 -200. 0 0 0 0 )) NATURAL) (2 ((409 0) (359 0)) NIL ((-50. 0 0 0 0 0 )) NATURAL) (2 ((359 0) (359 190)) NIL ((0 190. 0 0 0 0 )) NATURAL) (9 ((359 190) (355 206) (341 215) (319 219) (294 219) (271 214) (258 205) (252 190) (250 174)) NIL ((-1.83845734 17.571243 0 0 -12.969255 -9.42746545 ) (-8.32308579 12.857509 -12.969255 -9.42746545 4.84628105 5.1373329 ) (-18.869197 5.99871063 -8.1229744 -4.29013253 5.58413029 0.878129960 ) (-24.200107 2.14764309 -2.53884363 -3.41200256 2.81719446 -2.64985275 ) (-25.330356 -2.58928585 0.278350830 -6.0618553 13.147089 3.72128105 ) (-18.478458 -6.79050065 13.4254398 -2.34057426 -7.40555764 -6.23527337 ) (-8.75579835 -12.2487106 6.0198822 -8.5758476 -1.52485275 9.21980859 ) (-3.49834299 -16.214653 4.49502945 0.643961907 -4.49502945 -0.643961907 )) NATURAL) (2 ((250 174) (250 0)) NIL ((0 -174. 0 0 0 0 )) NATURAL) (2 ((250 0) (201 0)) NIL ((-49. 0 0 0 0 0 )) NATURAL) (2 ((201 0) (201 190)) NIL ((0 190. 0 0 0 0 )) NATURAL) (10 ((201 190) (197 206) (183 215) (161 219) (142 220) (122 218) (99 214) (86 205) (80 190) (78 174)) NIL ((-1.95049953 17.560386 0 0 -12.2970028 -9.3623371 ) (-8.09900094 12.879219 -12.2970028 -9.3623371 1.48501777 4.81169033 ) (-19.653495 5.92272759 -10.811985 -4.55064678 18.356933 2.11557484 ) (-21.287014 2.42986774 7.54494954 -2.43507194 -8.9127617 -1.27399206 ) (-18.198444 -0.642200113 -1.36781311 -3.709064 -6.70588303 2.98039245 ) (-22.9192 -2.86106777 -8.07369615 -0.728671313 23.736293 -4.64757633 ) (-19.124748 -5.91352749 15.662597 -5.37624836 -10.23929 -2.39008522 ) (-8.58179666 -12.484817 5.42330647 -7.76633359 -0.779133797 8.20791627 ) (-3.54805756 -16.1471939 4.64417267 0.441583455 -4.64417267 -0.441583455 )) NATURAL) (2 ((78 174) (78 0)) NIL ((0 -174. 0 0 0 0 )) NATURAL) (2 ((78 0) (31 0)) NIL ((-47. 0 0 0 0 0 )) NATURAL)))) STOP \ No newline at end of file diff --git a/obsolete/lispusers/splinefonts/GACHAE.LC2-SF b/obsolete/lispusers/splinefonts/GACHAE.LC2-SF deleted file mode 100644 index 2b113cd5..00000000 --- a/obsolete/lispusers/splinefonts/GACHAE.LC2-SF +++ /dev/null @@ -1 +0,0 @@ - ((FAMILY gacha) (CHARACTER 156Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 9:03:06) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((3 ((81 0) (81 0) (81 246)) NIL ((0 -61.5 0 0 0 369. ) (0 123. 0 369. 0 -369. )) NATURAL) (2 ((81 246) (132 246)) NIL ((51. 0 0 0 0 0 )) NATURAL) (2 ((132 246) (132 231)) NIL ((0 -15. 0 0 0 0 )) NATURAL) (12 ((132 231) (146 239) (165 247) (188 252) (219 255) (244 255) (273 253) (301 245) (321 236) (336 224) (348 208) (355 187)) NIL ((12.757387 7.8082018 0 0 7.45567608 1.15078807 ) (16.4852218 8.3835945 7.45567608 1.15078807 -7.2783804 -5.75393963 ) (20.301708 6.65741254 0.177295416 -4.60315228 15.657846 3.86497593 ) (28.30793 3.9867487 15.835142 -0.738176108 -31.353008 -3.705966 ) (28.466568 1.39558935 -15.517866 -4.44414234 25.754188 4.95888996 ) (25.825794 -0.569107771 10.236322 0.514747978 -11.6637478 -10.1295967 ) (30.230243 -5.11915779 -1.42742538 -9.6148491 -9.09919549 11.5594978 ) (24.253219 -8.95425797 -10.5266208 1.94464874 6.0605383 -6.10839368 ) (16.756866 -10.0638065 -4.46608258 -4.16374493 2.85703802 0.874077321 ) (13.719303 -13.790512 -1.60904455 -3.2896676 -5.48869324 -3.38791514 ) (9.36591149 -18.774135 -7.09773827 -6.67758275 7.09773827 6.67758275 )) NATURAL) (2 ((355 187) (357 0)) NIL ((2. -187. 0 0 0 0 )) NATURAL) (2 ((357 0) (308 0)) NIL ((-49. 0 0 0 0 0 )) NATURAL) (2 ((308 0) (308 176)) NIL ((0 176. 0 0 0 0 )) NATURAL) (11 ((308 176) (307 191) (295 205) (275 215) (247 219) (223 220) (197 219) (168 215) (149 205) (137 191) (132 176)) NIL ((1.54838872 15.082872 0 0 -15.2903328 -0.497237682 ) (-6.09677697 14.834253 -15.2903328 -0.497237682 10.4516639 -3.51381159 ) (-16.161277 12.5801086 -4.83866883 -4.01104927 -8.5163231 -3.44751453 ) (-25.258106 6.84530354 -13.3549919 -7.4585638 23.613628 5.30386734 ) (-26.806285 2.03867388 10.258636 -2.15469599 -13.938192 0.232043981 ) (-23.516746 -7.96280801E-8 -3.67955732 -1.922652 -3.86084795 -0.232043504 ) (-29.126728 -2.03867388 -7.54040528 -2.15469551 23.381584 -5.3038683 ) (-24.976337 -6.84530354 15.8411789 -7.4585638 -11.665493 3.44751453 ) (-14.9679069 -12.58011 4.17568493 -4.01104927 5.28039456 3.51381159 ) (-8.1520252 -14.834253 9.45607949 -0.497237623 -9.45607949 0.497237623 )) NATURAL) (2 ((132 176) (132 0)) NIL ((0 -176. 0 0 0 0 )) NATURAL) (2 ((132 0) (81 0)) NIL ((-51. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 157Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 9:07:04) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((29 ((220 253) (184 250) (150 243) (111 227) (90 209) (72 184) (61 148) (58 124) (61 100) (72 64) (90 39) (111 21) (148 3) (184 -4) (220 -7) (256 -4) (292 3) (330 21) (351 39) (369 64) (379 100) (382 124) (379 148) (369 184) (351 209) (330 227) (291 243) (256 250) (220 253)) NIL ((-37.23284 -2.5527296 0 0 7.3970537 -2.68362236 ) (-33.534309 -3.89454079 7.3970537 -2.68362236 -24.985267 -10.581888 ) (-38.629898 -11.869106 -17.5882149 -13.26551 50.544029 15.0111789 ) (-30.94609 -17.629028 32.955818 1.74566984 -39.190887 -7.4628372 ) (-17.58572 -19.614776 -6.23507023 -5.71716786 16.219528 -15.159822 ) (-15.711023 -32.911857 9.9844608 -20.876991 -1.68723678 44.102119 ) (-6.5701809 -31.737785 8.29722405 23.225132 -3.47058487 -23.24868 ) (-0.00824896433 -20.136993 4.82663918 -0.0235491991 3.56957626 -23.107383 ) (6.60317803 -31.714237 8.39621545 -23.130935 1.19228363 43.67823 ) (15.595535 -33.00605 9.58849908 20.547298 -14.338714 -13.6055526 ) (18.014675 -19.261531 -4.75021649 6.9417448 32.162574 -13.256025 ) (29.345752 -18.947799 27.412365 -6.31428147 -36.311607 24.629661 ) (38.60231 -12.94725 -8.8992462 18.31538 11.083864 -19.26263 ) (35.244995 -4.26318646 2.18461943 -0.947252036 -2.02385092 10.4208755 ) (36.417686 4.37721610E-7 0.160768091 9.47362519 -2.98846006 -10.420877 ) (35.084228 4.26318646 -2.82769203 -0.947252989 13.977691 19.262634 ) (39.245384 12.947252 11.1499996 18.3153839 -40.922302 -24.629665 ) (29.93423 18.947799 -29.772304 -6.31428147 35.711525 13.256027 ) (18.017688 19.261531 5.93922329 6.94174576 -17.923809 13.6055526 ) (14.995006 33.00605 -11.9845867 20.547298 5.98371315 -43.67823 ) (6.00227643 31.714233 -6.00087357 -23.130935 -0.0110425949 23.107383 ) (-0.00411796570 20.136993 -6.01191617 -0.0235481784 0.0604562759 23.24868 ) (-5.9858074 31.737785 -5.95145989 23.225132 -6.23077584 -44.102119 ) (-15.052654 32.91185 -12.1822357 -20.876987 18.86264 15.159818 ) (-17.803569 19.614776 6.68040753 -5.7171688 -39.219795 7.46283913 ) (-30.733062 17.629028 -32.53939 1.74567079 48.016555 -15.0111828 ) (-39.264167 11.869106 15.4771709 -13.265512 -20.846462 10.58189 ) (-34.210235 3.8945403 -5.36929226 -2.6836214 5.36929226 2.6836214 )) NATURAL)) ((21 ((244 28) (221 26) (196 28) (160 36) (138 47) (117 71) (106 124) (117 177) (138 201) (160 212) (196 220) (221 221) (244 220) (280 212) (303 201) (324 177) (334 124) (324 71) (303 47) (280 36) (244 28)) NIL ((-31.346866 -4.94781018 27.096454 7.89321995 -31.20816 -5.99279499 ) (-19.854492 -0.0509881154 -4.11170769 1.90042472 -18.537914 6.6046543 ) (-33.235153 5.1517639 -22.649623 8.50507928 51.359825 -8.4258213 ) (-30.204864 9.44393159 28.7102 0.0792564750 -36.90139 9.0986347 ) (-19.945362 14.0725078 -8.19119454 9.17789269 18.245773 32.031272 ) (-19.013671 39.266037 10.0545787 41.209167 17.918293 -41.223762 ) (5.46798110E-5 59.863327 27.972873 -0.0145962312 -17.918949 -41.136184 ) (19.01345 39.280632 10.0539245 -41.150787 -18.242496 31.768524 ) (19.946128 14.014112 -8.18857194 -9.38226129 36.88893 10.062099 ) (30.202026 9.6629028 28.700363 0.679839969 -51.313247 -12.016935 ) (33.245758 4.33427334 -22.612884 -11.337097 18.364067 14.005647 ) (19.81491 1.11246481E-6 -4.24881554 2.66855192 31.85696 -14.005661 ) (31.494579 -4.33427906 27.608146 -11.33711 -55.791923 12.0170059 ) (31.206764 -9.66288568 -28.183776 0.679895640 35.31073 -10.062366 ) (20.678356 -14.014175 7.1269579 -9.38247109 -19.451011 -31.767528 ) (18.079803 -39.28041 -12.3240547 -41.15 -11.506668 41.132476 ) (0.00241565704 -59.864166 -23.830722 -0.0175195671 11.477674 41.237594 ) (-18.0894699 -39.262886 -12.353048 41.220077 19.59597 -32.08287 ) (-20.644531 -14.084251 7.24292184 9.1372032 -35.861557 -8.9060955 ) (-31.332393 -9.4000969 -28.618637 0.231106251 57.850273 7.70726395 )) PSEUDOCYCLIC)))) ((FAMILY gacha) (CHARACTER 160Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 9:12:38) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((2 ((73 246) (73 -98)) NIL ((0 -344. 0 0 0 0 )) NATURAL) (2 ((73 -98) (122 -98)) NIL ((49. 0 0 0 0 0 )) NATURAL) (2 ((122 -98) (122 19)) NIL ((0 117. 0 0 0 0 )) NATURAL) (19 ((122 19) (152 6) (186 -2) (223 -6) (274 -2) (306 10) (330 24) (346 42) (358 66) (367 124) (358 182) (346 206) (330 224) (306 238) (274 250) (223 254) (186 250) (149 241) (122 229)) NIL ((28.78485 -14.1662578 0 0 7.29088879 6.99755765 ) (32.43029 -10.6674785 7.29088879 6.99755765 -12.4544449 -4.9877901 ) (33.493957 -6.1638174 -5.1635561 2.00976705 36.526893 6.95360566 ) (46.593849 -0.677247048 31.363338 8.96337319 -67.653137 1.17336273 ) (44.130615 8.87280656 -36.28981 10.1367359 36.0857 -11.6470565 ) (25.883659 13.186014 -0.204107195 -1.51032066 -10.689651 9.4148655 ) (20.334728 16.383125 -10.8937587 7.90454579 6.67289925 -14.012405 ) (12.777418 17.281471 -4.22085953 -6.10786057 7.9980583 58.63475 ) (12.5555877 40.490989 3.77719927 52.526893 -32.66513 -52.526634 ) (2.22682952E-4 66.75456 -28.887935 2.57580541E-4 32.662468 -52.528175 ) (-12.556476 40.49073 3.77453518 -52.527923 -7.98474026 58.639366 ) (-12.7743129 17.282493 -4.21020508 6.11144925 -6.72350693 -14.029323 ) (-20.346271 16.37928 -10.933712 -7.91787434 10.8787708 9.4779205 ) (-25.840599 13.2003688 -0.0549402982 1.56004619 -36.791572 -11.8823547 ) (-44.291328 8.81923677 -36.846519 -10.322309 70.28755 2.05150032 ) (-45.99407 -0.477321923 33.441032 -8.27080918 -46.358634 3.67635918 ) (-35.73236 -6.9099512 -12.917608 -4.59445 31.147007 1.24306249 ) (-33.076461 -10.8828697 18.2294 -3.3513875 -18.2294 3.3513875 )) NATURAL) (2 ((122 229) (122 246)) NIL ((0 17. 0 0 0 0 )) NATURAL) (2 ((122 246) (73 246)) NIL ((-49. 0 0 0 0 0 )) NATURAL)) ((11 ((121 124) (124 162) (136 195) (162 214) (196 220) (222 222) (244 220) (279 214) (304 195) (316 162) (319 124)) NIL ((1.40951395 38.569053 0 0 9.54291535 -3.41436482 ) (6.1809721 36.861877 9.54291535 -3.41436482 6.28541756 -12.9281749 ) (18.866596 26.983425 15.8283329 -16.34254 -4.68458176 1.12707138 ) (32.352638 11.204418 11.143751 -15.215469 -23.547092 14.419889 ) (31.722843 3.1988945 -12.403341 -0.795579792 2.87295532 -4.80662918 ) (20.755977 -4.17232513E-7 -9.53038598 -5.60220909 36.055267 4.80662918 ) (29.25323 -3.19889498 26.524887 -0.795579315 -45.094047 -14.419889 ) (33.231086 -11.20442 -18.569164 -15.215469 6.32094384 -1.12706756 ) (17.822395 -26.983425 -12.24822 -16.3425369 1.81027794 12.928171 ) (6.47931386 -36.861877 -10.437942 -3.41436482 10.437942 3.41436482 )) NATURAL) (11 ((319 124) (316 86) (304 53) (279 34) (244 28) (222 26) (196 28) (162 34) (136 53) (124 86) (121 124)) NIL ((-1.26034259 -38.569053 0 0 -10.437944 3.41436482 ) (-6.4793148 -36.861877 -10.437944 3.41436482 -1.81027794 12.9281749 ) (-17.822395 -26.983425 -12.248222 16.34254 -6.32094193 -1.12707138 ) (-33.231086 -11.204418 -18.569164 15.215469 45.094047 -14.419889 ) (-29.25323 -3.1988945 26.524887 0.795579792 -36.055267 4.80662918 ) (-20.755977 4.17232513E-7 -9.53038598 5.60220909 -2.87295532 -4.80662918 ) (-31.722843 3.19889498 -12.403341 0.795579315 23.547092 14.419889 ) (-32.352638 11.20442 11.143753 15.215469 4.68457794 1.12706756 ) (-18.866596 26.983425 15.828331 16.3425369 -6.28541566 -12.928171 ) (-6.18097115 36.861877 9.54291535 3.41436482 -9.54291535 -3.41436482 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 161Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 9:19:54) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((2 ((367 -98) (319 -98)) NIL ((-48. 0 0 0 0 0 )) NATURAL) (2 ((319 -98) (319 19)) NIL ((0 117. 0 0 0 0 )) NATURAL) (19 ((319 19) (288 7) (255 -1) (217 -6) (166 -2) (134 9) (111 24) (94 42) (82 66) (73 124) (82 182) (94 206) (111 224) (134 239) (166 250) (217 254) (255 250) (292 241) (319 229)) NIL ((-30.485801 -12.997631 0 0 -3.08518171 5.9857931 ) (-32.028389 -10.004734 -3.08518171 5.9857931 3.42590904 -5.92896652 ) (-33.400619 -6.98342515 0.340727687 0.0568262711 -28.618454 11.7300739 ) (-47.369117 -1.06156039 -28.277729 11.786901 63.04792 -4.99134159 ) (-44.122886 8.22966958 34.770195 6.79555989 -31.57326 -3.76470089 ) (-25.13932 13.142879 3.19693089 3.03085899 3.24514675 2.05014229 ) (-20.319816 17.19881 6.44207764 5.08100128 0.592679024 -10.435867 ) (-13.5813999 17.061878 7.03475667 -5.35486698 -11.6158619 57.693328 ) (-12.354574 40.553672 -4.58110619 52.338462 33.870765 -52.337432 ) (-2.96272337E-4 66.723404 29.289665 0.00102418940 -33.867218 -52.34358 ) (12.3557586 40.552642 -4.5775528 -52.342559 11.5981006 57.711776 ) (13.577257 17.065979 7.0205488 5.36921883 -0.525197029 -10.503532 ) (20.335208 17.183429 6.4953518 -5.13431454 -3.49731016 2.30235624 ) (25.081905 13.200292 2.99804163 -2.83195829 32.514434 -4.7058897 ) (44.337165 8.0153904 35.51248 -7.53784848 -66.560455 -1.47879696 ) (46.56941 -0.261858106 -31.047985 -9.01664544 41.727447 4.62108517 ) (36.385154 -6.9679613 10.679462 -4.39556027 -28.349323 0.994450570 ) (32.889953 -10.8662967 -17.66986 -3.4011097 17.66986 3.4011097 )) NATURAL) (2 ((319 229) (319 246)) NIL ((0 17. 0 0 0 0 )) NATURAL) (2 ((319 246) (367 246)) NIL ((48. 0 0 0 0 0 )) NATURAL) (2 ((367 246) (367 -98)) NIL ((0 -344. 0 0 0 0 )) NATURAL)) ((11 ((319 124) (316 162) (304 195) (279 214) (244 220) (220 222) (196 220) (162 214) (136 195) (124 162) (121 124)) NIL ((-1.27691745 38.569053 0 0 -10.338495 -3.41436482 ) (-6.44616604 36.861877 -10.338495 -3.41436482 -2.307518 -12.9281749 ) (-17.938419 26.983425 -12.646013 -16.34254 -4.43143654 1.12707138 ) (-32.800148 11.204418 -17.077449 -15.215469 38.03327 14.419889 ) (-30.860965 3.1988945 20.955825 -0.795579792 -21.701679 -4.80662918 ) (-20.755977 -4.17232513E-7 -0.745855928 -5.60220909 -17.226543 4.80662918 ) (-30.115108 -3.19889498 -17.9724 -0.795579315 30.607864 -14.419889 ) (-32.783577 -11.20442 12.6354656 -15.215469 2.79507446 -1.12706756 ) (-18.750572 -26.983425 15.43054 -16.3425369 -5.78817559 12.928171 ) (-6.21412087 -36.861877 9.6423645 -3.41436482 -9.6423645 3.41436482 )) NATURAL) (11 ((121 124) (124 86) (136 53) (162 34) (196 28) (220 26) (244 28) (279 34) (304 53) (316 86) (319 124)) NIL ((1.39293909 -38.569053 0 0 9.6423645 3.41436482 ) (6.21412087 -36.861877 9.6423645 3.41436482 5.78817749 12.9281749 ) (18.750572 -26.983425 15.430542 16.34254 -2.79507828 -1.12707138 ) (32.783577 -11.204418 12.6354637 15.215469 -30.607864 -14.419889 ) (30.115108 -3.1988945 -17.9724 0.795579792 17.226543 4.80662918 ) (20.755977 4.17232513E-7 -0.745855928 5.60220909 21.701679 -4.80662918 ) (30.860965 3.19889498 20.955825 0.795579315 -38.03327 14.419889 ) (32.800148 11.20442 -17.077449 15.215469 4.43143654 1.12706756 ) (17.938419 26.983425 -12.646013 16.3425369 2.3075161 -12.928171 ) (6.44616509 36.861877 -10.338497 3.41436482 10.338497 -3.41436482 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 162Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 9:24:15) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((3 ((94 0) (94 0) (94 246)) NIL ((0 -61.5 0 0 0 369. ) (0 123. 0 369. 0 -369. )) NATURAL) (2 ((94 246) (146 246)) NIL ((52. 0 0 0 0 0 )) NATURAL) (2 ((146 246) (146 231)) NIL ((0 -15. 0 0 0 0 )) NATURAL) (11 ((146 231) (172 241) (200 250) (226 254) (258 256) (286 253) (315 245) (334 236) (349 224) (361 208) (369 187)) NIL ((25.179721 9.92842675 0 0 4.92166043 0.429432392 ) (27.640552 10.1431427 4.92166043 0.429432392 -12.608301 -8.14716149 ) (26.25806 6.49899483 -7.6866417 -7.71772957 21.51155 8.15921594 ) (29.327194 2.8608737 13.824909 0.441486776 -25.4379 -6.48970318 ) (30.43315 0.0575087815 -11.612993 -6.04821683 20.240062 -0.200402260 ) (28.940189 -6.090909 8.62707139 -6.24861909 -25.522361 7.29131127 ) (24.806079 -8.69387246 -16.89529 1.04269218 15.849386 -4.96484089 ) (15.835481 -10.1336 -1.04590392 -3.92214918 -1.87518859 0.568055630 ) (13.851984 -13.7717228 -2.9210925 -3.35409355 -2.34863329 -3.30738258 ) (9.7565746 -18.779506 -5.2697258 -6.66147614 5.2697258 6.66147614 )) NATURAL) (2 ((369 187) (370 169)) NIL ((1. -18. 0 0 0 0 )) NATURAL) (2 ((370 169) (321 169)) NIL ((-49. 0 0 0 0 0 )) NATURAL) (10 ((321 169) (319 191) (307 205) (288 215) (259 220) (235 221) (209 219) (178 212) (155 193) (146 160)) NIL ((0.395535767 23.935108 0 0 -14.3732147 -11.6106548 ) (-6.79107094 18.129779 -14.3732147 -11.6106548 11.8660736 10.053274 ) (-15.2312488 11.545763 -2.50714111 -1.55738067 -15.091079 -4.60244179 ) (-25.283931 7.68716145 -17.59822 -6.15982247 30.498256 2.35649347 ) (-27.633022 2.70558596 12.9000358 -3.80332899 -16.901958 1.1764698 ) (-23.183967 -0.509507895 -4.00192356 -2.62685919 -4.89041806 -1.06237459 ) (-29.631099 -3.66755486 -8.8923416 -3.68923378 18.46363 -8.9269695 ) (-29.291626 -11.820274 9.57129098 -12.616203 9.03588296 -5.22974015 ) (-15.20239 -27.051349 18.6071739 -17.845943 -18.6071739 17.845943 )) NATURAL) (2 ((146 160) (146 0)) NIL ((0 -160. 0 0 0 0 )) NATURAL) (2 ((146 0) (94 0)) NIL ((-52. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 163Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 9:34:01) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((25 ((351 186) (346 202) (336 220) (306 238) (265 250) (223 254) (183 252) (148 246) (120 234) (106 222) (94 204) (90 183) (96 165) (121 142) (175 120) (226 103) (277 85) (295 58) (281 32) (238 25) (210 26) (171 31) (138 42) (122 59) (117 73)) NIL ((-4.89096356 15.5457267 0 0 -0.654214859 2.72563505 ) (-5.21807099 16.908542 -0.654214859 2.72563505 -26.728923 -1.62817669 ) (-19.236747 18.820091 -27.38314 1.09745836 17.569915 -8.21292687 ) (-37.83493 15.811084 -9.8132229 -7.11546899 10.4492588 -1.52011108 ) (-42.423522 7.9355602 0.636036754 -8.63558007 0.633041024 2.29337406 ) (-41.470962 0.446667433 1.26907777 -6.342206 5.0185728 4.34661293 ) (-37.692596 -3.72223234 6.28765107 -1.99559283 -2.70733642 -7.67982579 ) (-32.758613 -9.55773736 3.58031464 -9.67541886 17.810775 14.372688 ) (-20.272914 -12.046812 21.39109 4.69726944 -26.535766 -13.81093 ) (-12.1497097 -14.2550087 -5.1446762 -9.1136608 16.3322868 4.87103844 ) (-9.1282406 -20.933151 11.187612 -4.24262238 -2.79339218 12.326774 ) (0.662676096 -19.012386 8.39422036 8.0841522 6.8412819 -18.178138 ) (12.477537 -20.017303 15.235502 -10.0939865 29.428268 12.385782 ) (42.427177 -23.918396 44.663772 2.2917962 -64.554397 4.63500405 ) (54.81375 -19.309097 -19.890628 6.92680073 36.789367 -6.92580319 ) (53.3178 -15.845199 16.8987388 9.97102587E-4 -64.603057 -12.9317836 ) (37.915008 -22.310096 -47.704322 -12.930788 23.622894 10.6529445 ) (2.02213144 -29.914409 -24.081428 -2.27784204 -23.888504 30.319995 ) (-34.003547 -17.032253 -47.969932 28.042156 89.931106 -23.932937 ) (-37.007927 -0.956568003 41.961174 4.10921669 -71.835937 -0.588241577 ) (-30.964725 2.85852814 -29.874763 3.52097511 41.412643 2.28590584 ) (-40.133163 7.52245618 11.5378837 5.80688095 8.1853447 3.44461632 ) (-24.502605 15.051645 19.723228 9.25149728 -8.15403558 -16.064369 ) (-8.8563976 16.2709579 11.5691928 -6.81287385 -11.5691928 6.81287385 )) NATURAL) (2 ((117 73) (72 73)) NIL ((-45. 0 0 0 0 0 )) NATURAL) (24 ((72 73) (85 42) (112 15) (144 1) (183 -7) (222 -8) (261 -7) (296 0) (325 13) (349 37) (355 66) (348 95) (330 114) (292 131) (238 148) (187 165) (151 184) (156 213) (188 221) (213 223) (241 221) (277 214) (297 202) (303 186)) NIL ((9.47211839 -31.218654 0 0 21.167285 1.31194877 ) (20.055763 -30.562683 21.167285 1.31194877 -21.836437 17.440254 ) (30.304828 -20.530601 -0.669154763 18.752204 12.1784839 -17.072986 ) (35.724914 -10.3148918 11.5093307 1.67921805 -14.877496 8.8516998 ) (39.795494 -4.20982266 -3.3681674 10.530918 5.33150673 -12.3338146 ) (39.093078 0.154187590 1.96334004 -1.80289674 -6.4485321 10.483564 ) (37.832153 3.59307385 -4.4851923 8.68066789 -3.53737736 -5.60044766 ) (31.578277 9.47351838 -8.02256967 3.08022022 8.59804345 11.918224 ) (27.854728 18.512851 0.575473786 14.998445 -24.854797 -12.0724487 ) (16.0028 27.47507 -24.279323 2.9259963 12.821157 0.371571064 ) (-1.86594367 30.586853 -11.458166 3.29756737 3.57016087 -19.413829 ) (-11.539028 24.177501 -7.88800526 -16.116264 -15.101804 17.28376 ) (-26.977935 16.703121 -22.98981 1.16749811 2.83706665 -1.72122335 ) (-48.549217 17.0100059 -20.152744 -0.553725243 27.753543 1.6011281 ) (-54.825187 17.256843 7.6008024 1.04740286 0.148731231 -4.68328858 ) (-47.150016 15.962604 7.74953366 -3.63588619 43.651519 29.132022 ) (-17.574722 26.89273 51.401054 25.496139 -18.754821 -63.84481 ) (24.448917 20.466461 32.646232 -38.34867 -52.632209 40.247222 ) (30.779045 2.24140549 -19.985977 1.89855599 25.283653 -7.1441021 ) (23.434894 0.567910671 5.297678 -5.24554634 11.497587 0.329174995 ) (34.48136 -4.51304817 16.795265 -4.91637135 -41.274002 -0.172595977 ) (30.639629 -9.51571656 -24.478736 -5.08896733 9.598423 0.361209869 ) (10.9601039 -14.4240799 -14.8803138 -4.72775746 14.8803138 4.72775746 )) NATURAL) (2 ((303 186) (351 186)) NIL ((48. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 164Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 9:41:54) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((2 ((215 316) (169 316)) NIL ((-46. 0 0 0 0 0 )) NATURAL) (2 ((169 316) (169 246)) NIL ((0 -70. 0 0 0 0 )) NATURAL) (2 ((169 246) (73 246)) NIL ((-96. 0 0 0 0 0 )) NATURAL) (2 ((73 246) (73 210)) NIL ((0 -36. 0 0 0 0 )) NATURAL) (2 ((73 210) (169 210)) NIL ((96. 0 0 0 0 0 )) NATURAL) (2 ((169 210) (169 60)) NIL ((0 -150. 0 0 0 0 )) NATURAL) (11 ((169 60) (175 39) (189 20) (205 7) (229 -3) (268 -9) (316 -6) (346 3) (367 20) (381 38) (388 69)) NIL ((3.90507937 -21.153274 0 0 12.5695228 0.919651986 ) (10.18984 -20.693447 12.5695228 0.919651986 -14.847616 7.40174008 ) (15.335556 -16.072925 -2.27809334 8.32139207 10.8209438 -6.526618 ) (18.467933 -11.014843 8.5428505 1.79477358 7.56383896 0.704737187 ) (30.792705 -8.86770059 16.106689 2.49951076 0.923694611 9.7076702 ) (47.361244 -1.51435375 17.030384 12.2071819 -47.258613 -9.53542138 ) (40.762313 5.92511654 -30.228233 2.67175913 26.110794 10.434017 ) (23.589481 13.8138847 -4.1174364 13.1057777 -3.1845789 -20.200649 ) (17.879753 16.8193359 -7.3020153 -7.09487343 -1.37248039 28.368587 ) (9.89149858 23.90876 -8.6744957 21.273715 8.6744957 -21.273715 )) NATURAL) (2 ((388 69) (340 69)) NIL ((-48. 0 0 0 0 0 )) NATURAL) (8 ((340 69) (337 47) (325 33) (303 27) (272 25) (245 29) (222 40) (215 60)) NIL ((-1.11267614 -23.621776 0 0 -11.323942 9.73067666 ) (-6.7746477 -18.756439 -11.323942 9.73067666 2.61971664 -0.653385163 ) (-16.78873 -9.35245515 -8.70422555 9.0772915 -5.1549282 -7.1171398 ) (-28.070419 -3.83373404 -13.8591537 1.96015119 23.999996 5.12195015 ) (-29.929576 0.687392831 10.140844 7.0821018 -12.8450699 -1.37066269 ) (-26.211265 7.08416367 -2.70422554 5.71143914 27.380279 6.3607006 ) (-15.225351 15.975952 24.676055 12.0721397 -24.676055 -12.0721397 )) NATURAL) (2 ((215 60) (215 210)) NIL ((0 150. 0 0 0 0 )) NATURAL) (2 ((215 210) (334 210)) NIL ((119. 0 0 0 0 0 )) NATURAL) (2 ((334 210) (334 246)) NIL ((0 36. 0 0 0 0 )) NATURAL) (2 ((334 246) (215 246)) NIL ((-119. 0 0 0 0 0 )) NATURAL) (2 ((215 246) (215 316)) NIL ((0 70. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 165Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 9:50:36) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((3 ((367 0) (367 0) (367 246)) NIL ((0 -61.5 0 0 0 369. ) (0 123. 0 369. 0 -369. )) NATURAL) (2 ((367 246) (316 246)) NIL ((-51. 0 0 0 0 0 )) NATURAL) (2 ((316 246) (316 90)) NIL ((0 -156. 0 0 0 0 )) NATURAL) (9 ((316 90) (308 59) (278 39) (243 30) (222 29) (196 29) (161 33) (132 49) (123 90)) NIL ((-2.74641037 -33.309829 0 0 -31.521537 13.858984 ) (-18.507179 -26.380336 -31.521537 13.858984 25.607692 -3.29491997 ) (-37.224868 -14.1688137 -5.91384316 10.564064 31.090755 -0.679307938 ) (-27.593334 -3.94440317 25.176914 9.8847561 -35.970726 -11.987848 ) (-20.401783 -0.0535713807 -10.7938156 -2.10309267 -1.20783996 6.63070584 ) (-31.799518 1.1586895 -12.001655 4.52761364 16.802093 3.46502209 ) (-35.400123 7.41881467 4.80043888 7.9926357 23.99945 27.5092 ) (-18.599964 29.166053 28.799892 35.501838 -28.799892 -35.501838 )) NATURAL) (2 ((123 90) (123 246)) NIL ((0 156. 0 0 0 0 )) NATURAL) (2 ((123 246) (75 246)) NIL ((-48. 0 0 0 0 0 )) NATURAL) (2 ((75 246) (76 59)) NIL ((1. -187. 0 0 0 0 )) NATURAL) (11 ((76 59) (82 35) (96 18) (114 5) (141 -4) (175 -8) (204 -9) (235 -6) (258 -1) (277 7) (316 23)) NIL ((4.01473713 -25.642467 0 0 11.911575 9.85482026 ) (9.9705238 -20.715057 11.911575 9.85482026 -11.5578765 -7.27410126 ) (16.1031608 -14.497289 0.353697181 2.58071852 10.3199367 1.24158621 ) (21.616828 -11.295776 10.673635 3.82230473 0.278120041 2.30775452 ) (32.429519 -6.31959534 10.951755 6.13005925 -23.432415 -4.47259999 ) (31.665069 -2.42583704 -12.480661 1.65745854 21.451553 3.5826478 ) (29.910186 1.02294540 8.97089387 5.24010659 -20.373809 -3.85799217 ) (28.694175 4.3340559 -11.4029178 1.38211417 0.0436954498 -0.150678157 ) (17.313106 5.640831 -11.359222 1.23143601 44.199028 10.4607029 ) (28.053398 12.102619 32.839805 11.6921405 -32.839805 -11.6921405 )) NATURAL) (2 ((316 23) (316 0)) NIL ((0 -23. 0 0 0 0 )) NATURAL) (2 ((316 0) (367 0)) NIL ((51. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 166Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 9:55:45) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((2 ((55 246) (195 0)) NIL ((140. -246. 0 0 0 0 )) NATURAL) (2 ((195 0) (242 0)) NIL ((47. 0 0 0 0 0 )) NATURAL) (2 ((242 0) (382 246)) NIL ((140. 246. 0 0 0 0 )) NATURAL) (2 ((382 246) (328 246)) NIL ((-54. 0 0 0 0 0 )) NATURAL) (2 ((328 246) (219 41)) NIL ((-109. -205. 0 0 0 0 )) NATURAL) (2 ((219 41) (110 246)) NIL ((-109. 205. 0 0 0 0 )) NATURAL) (2 ((110 246) (55 246)) NIL ((-55. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 167Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 9:57:51) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((2 ((25 246) (124 0)) NIL ((99. -246. 0 0 0 0 )) NATURAL) (2 ((124 0) (175 0)) NIL ((51. 0 0 0 0 0 )) NATURAL) (2 ((175 0) (219 146)) NIL ((44. 146. 0 0 0 0 )) NATURAL) (2 ((219 146) (262 0)) NIL ((43. -146. 0 0 0 0 )) NATURAL) (2 ((262 0) (313 0)) NIL ((51. 0 0 0 0 0 )) NATURAL) (2 ((313 0) (412 246)) NIL ((99. 246. 0 0 0 0 )) NATURAL) (2 ((412 246) (361 246)) NIL ((-51. 0 0 0 0 0 )) NATURAL) (2 ((361 246) (286 62)) NIL ((-75. -184. 0 0 0 0 )) NATURAL) (2 ((286 62) (237 246)) NIL ((-49. 184. 0 0 0 0 )) NATURAL) (2 ((237 246) (201 246)) NIL ((-36. 0 0 0 0 0 )) NATURAL) (2 ((201 246) (151 62)) NIL ((-50. -184. 0 0 0 0 )) NATURAL) (2 ((151 62) (77 246)) NIL ((-74. 184. 0 0 0 0 )) NATURAL) (2 ((77 246) (25 246)) NIL ((-52. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 170Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 10:01:04) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((2 ((76 246) (190 139)) NIL ((114. -107. 0 0 0 0 )) NATURAL) (2 ((190 139) (43 0)) NIL ((-147. -139. 0 0 0 0 )) NATURAL) (2 ((43 0) (98 0)) NIL ((55. 0 0 0 0 0 )) NATURAL) (2 ((98 0) (219 109)) NIL ((121. 109. 0 0 0 0 )) NATURAL) (2 ((219 109) (340 0)) NIL ((121. -109. 0 0 0 0 )) NATURAL) (2 ((340 0) (394 0)) NIL ((54. 0 0 0 0 0 )) NATURAL) (2 ((394 0) (248 139)) NIL ((-146. 139. 0 0 0 0 )) NATURAL) (2 ((248 139) (361 246)) NIL ((113. 107. 0 0 0 0 )) NATURAL) (2 ((361 246) (305 246)) NIL ((-56. 0 0 0 0 0 )) NATURAL) (2 ((305 246) (219 164)) NIL ((-86. -82. 0 0 0 0 )) NATURAL) (2 ((219 164) (132 246)) NIL ((-87. 82. 0 0 0 0 )) NATURAL) (2 ((132 246) (76 246)) NIL ((-56. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 171Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 10:03:58) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((2 ((67 246) (207 3)) NIL ((140. -243. 0 0 0 0 )) NATURAL) (8 ((207 3) (204 -28) (182 -55) (154 -65) (130 -67) (105 -63) (78 -50) (65 -25)) NIL ((1.58570909 -30.982479 0 0 -27.514255 -0.105117797 ) (-12.171417 -31.035038 -27.514255 -0.105117797 23.571277 24.525589 ) (-27.900032 -18.877357 -3.94297457 24.420471 11.2291298 -19.997249 ) (-26.228443 -4.455513 7.2861557 4.42322159 -8.4878044 1.4634161 ) (-23.186187 0.699416161 -1.20164919 5.88663769 -7.27790929 2.14358997 ) (-28.026794 7.65785027 -8.47955895 8.03022767 31.599445 7.9622154 ) (-20.706626 19.669185 23.119888 15.992443 -23.119888 -15.992443 )) NATURAL) (2 ((65 -25) (18 -25)) NIL ((-47. 0 0 0 0 0 )) NATURAL) (9 ((18 -25) (33 -57) (60 -81) (88 -95) (138 -101) (195 -91) (232 -69) (253 -38) (274 3)) NIL ((11.490978 -33.511222 0 0 21.054122 9.0673771 ) (22.018039 -28.977539 21.054122 9.0673771 -33.270614 2.66310882 ) (26.436855 -18.578605 -12.2164936 11.7304859 46.028343 -7.71980954 ) (37.234535 -10.7080249 33.81185 4.01067639 -24.842777 16.216125 ) (58.625 1.41071462 8.96907235 20.226802 -36.65721 -9.1446972 ) (49.265457 17.065166 -27.688144 11.0821056 9.47165299 -3.63733387 ) (26.31314 26.328605 -18.216491 7.44477177 22.770614 5.69403363 ) (19.481956 36.620391 4.55412293 13.138805 -4.55412293 -13.138805 )) NATURAL) (2 ((274 3) (394 246)) NIL ((120. 243. 0 0 0 0 )) NATURAL) (2 ((394 246) (340 246)) NIL ((-54. 0 0 0 0 0 )) NATURAL) (2 ((340 246) (241 37)) NIL ((-99. -209. 0 0 0 0 )) NATURAL) (2 ((241 37) (122 246)) NIL ((-119. 209. 0 0 0 0 )) NATURAL) (2 ((122 246) (67 246)) NIL ((-55. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 172Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 10:05:23) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((2 ((81 246) (369 246)) NIL ((288. 0 0 0 0 0 )) NATURAL) (2 ((369 246) (369 212)) NIL ((0 -34. 0 0 0 0 )) NATURAL) (2 ((369 212) (140 36)) NIL ((-229. -176. 0 0 0 0 )) NATURAL) (2 ((140 36) (378 36)) NIL ((238. 0 0 0 0 0 )) NATURAL) (2 ((378 36) (378 0)) NIL ((0 -36. 0 0 0 0 )) NATURAL) (2 ((378 0) (63 0)) NIL ((-315. 0 0 0 0 0 )) NATURAL) (2 ((63 0) (63 34)) NIL ((0 34. 0 0 0 0 )) NATURAL) (2 ((63 34) (292 210)) NIL ((229. 176. 0 0 0 0 )) NATURAL) (2 ((292 210) (81 210)) NIL ((-211. 0 0 0 0 0 )) NATURAL) (2 ((81 210) (81 246)) NIL ((0 36. 0 0 0 0 )) NATURAL)))) STOP \ No newline at end of file diff --git a/obsolete/lispusers/splinefonts/GACHAE.NUM-SF b/obsolete/lispusers/splinefonts/GACHAE.NUM-SF deleted file mode 100644 index af6370f4..00000000 --- a/obsolete/lispusers/splinefonts/GACHAE.NUM-SF +++ /dev/null @@ -1 +0,0 @@ - ((FAMILY gacha) (CHARACTER 60Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 11:56:36) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((29 ((220 -2) (177 2) (142 13) (115 28) (97 49) (87 72) (78 108) (72 169) (78 230) (87 266) (97 289) (115 310) (142 325) (177 336) (220 340) (264 336) (298 325) (325 308) (343 289) (354 266) (363 230) (369 169) (363 108) (354 72) (343 49) (325 28) (298 13) (264 2) (220 -2)) NIL ((-44.70249 2.2971487 0 0 10.2149925 10.2171058 ) (-39.595 7.4057026 10.2149925 10.2171058 -3.07496834 -9.08553506 ) (-30.917491 13.0800399 7.14002419 1.13156938 2.08488273 8.12504388 ) (-22.735023 18.274131 9.2249069 9.25661469 0.735431671 -11.4146518 ) (-13.1424007 21.823421 9.9603386 -2.15803718 -11.0266018 13.533569 ) (-8.695364 26.43217 -1.06626343 11.375532 1.37097907 23.280372 ) (-9.07613755 49.44789 0.304715693 34.655906 17.542682 -34.655075 ) (-7.94418156E-5 66.776245 17.8474 8.27937503E-4 -17.541725 -34.660041 ) (9.07645799 49.447059 0.305675328 -34.659217 -1.37578034 23.295288 ) (8.69424249 26.435485 -1.07010507 -11.3639278 11.044849 13.478868 ) (13.146564 21.810989 9.9747448 2.11494064 -0.803623200 -11.210775 ) (22.719497 18.320545 9.1711216 -9.09583474 -1.83035755 7.36423016 ) (30.97544 12.906824 7.34076405 -1.73160457 2.12505627 -6.24614144 ) (39.37873 8.0521488 9.4658203 -7.977746 -6.6698742 -0.379662514 ) (45.509613 -0.115427330 2.79594612 -8.3574085 -17.445552 1.76478958 ) (39.582786 -7.59044076 -14.649606 -6.59261895 10.452091 -0.679496765 ) (30.159225 -14.522808 -4.19751454 -7.2721157 -6.3628168 6.95319844 ) (22.7803 -18.318321 -10.560331 -0.318916559 2.99917793 -3.13330078 ) (13.7195587 -20.203891 -7.5611534 -3.45221758 6.3660984 -6.4199934 ) (9.34145547 -26.866107 -1.19505500 -9.87221147 1.53642988 -25.186718 ) (8.91461564 -49.331672 0.341374993 -35.058929 -18.5118179 35.166854 ) (7.89556652E-5 -66.807174 -18.170444 0.107930347 18.510856 34.519271 ) (-8.91493608 -49.439598 0.340415239 34.627204 -1.53162884 -23.243984 ) (-9.34033395 -26.434387 -1.19121360 11.3832206 -6.38434506 -13.5433178 ) (-13.723722 -21.822826 -7.57555867 -2.1600976 -2.93098736 11.4172649 ) (-22.764774 -18.274292 -10.506546 9.2571678 6.10829259 -8.12574578 ) (-30.217174 -13.079996 -4.39825344 1.13142156 -9.5021801 9.08572198 ) (-39.366516 -7.40571404 -13.900434 10.217144 13.900434 -10.217144 )) NATURAL)) ((15 ((117 169) (117 139) (120 107) (126 75) (143 52) (165 38) (195 29) (220 28) (245 29) (275 38) (298 52) (314 75) (320 107) (323 139) (323 169)) NIL ((-0.787026048 -29.594802 0 0 4.72215653 -2.43117809 ) (1.57405233 -30.81039 4.72215653 -2.43117809 -5.61078453 0.155890941 ) (3.49081659 -33.16362 -0.888628126 -2.27528715 17.720981 13.807613 ) (11.4626827 -28.535102 16.832355 11.5323276 -17.2731628 -1.38635635 ) (19.658454 -17.695949 -0.440809131 10.145971 15.371683 -8.2621956 ) (26.903488 -11.6810779 14.9308757 1.88377571 -26.213573 10.435146 ) (28.727577 -4.57973004 -11.2826976 12.318922 11.482616 -15.478382 ) (23.186187 1.59256160E-7 0.199920326 -3.15946055 10.283096 15.47838 ) (28.527656 4.57973004 10.4830169 12.31892 -22.615001 -10.435144 ) (27.70317 11.6810779 -12.1319866 1.88377547 8.17691995 8.2621975 ) (19.659645 17.695953 -3.95506573 10.145973 -10.0926818 1.38635444 ) (10.658237 28.535102 -14.047748 11.5323276 14.193815 -13.807615 ) (3.70739698 33.16362 0.146066695 -2.27528763 -4.68258286 -0.155889988 ) (1.51217198 30.81039 -4.53651619 -2.43117761 4.53651619 2.43117761 )) NATURAL) (15 ((323 169) (323 199) (320 231) (314 263) (298 286) (275 300) (245 309) (220 310) (195 309) (165 300) (143 286) (126 263) (120 231) (117 199) (117 169)) NIL ((0.756085992 29.594802 0 0 -4.53651619 2.43117809 ) (-1.51217222 30.81039 -4.53651619 2.43117809 4.6825819 -0.155890941 ) (-3.70739698 33.16362 0.146066278 2.27528715 -14.193813 -13.807613 ) (-10.658239 28.535102 -14.047748 -11.5323276 10.0926818 1.38635635 ) (-19.659645 17.695949 -3.95506573 -10.145971 -8.17691995 8.2621956 ) (-27.70317 11.6810779 -12.1319866 -1.88377571 22.615001 -10.435146 ) (-28.527656 4.57973004 10.4830169 -12.318922 -10.283094 15.478382 ) (-23.186187 -1.59256160E-7 0.199920833 3.15946055 -11.48262 -15.47838 ) (-28.727577 -4.57973004 -11.2826995 -12.31892 26.213577 10.435144 ) (-26.903488 -11.6810779 14.930877 -1.88377547 -15.3716869 -8.2621975 ) (-19.658454 -17.695953 -0.440809786 -10.145973 17.273166 -1.38635444 ) (-11.4626808 -28.535102 16.832359 -11.5323276 -17.720985 13.807615 ) (-3.49081612 -33.16362 -0.888629199 2.27528763 5.61078549 0.155889988 ) (-1.57405209 -30.81039 4.72215653 2.43117761 -4.72215653 -2.43117761 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 61Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 11:58:51) (MADE-FROM gachan.cu 0 140 10 925) (SPLINES ((3 ((124 0) (124 0) (367 0)) NIL ((-60.75 0 0 0 364.5 0 ) (121.5 0 364.5 0 -364.5 0 )) NATURAL) (2 ((367 0) (367 36)) NIL ((0 36. 0 0 0 0 )) NATURAL) (2 ((367 36) (273 36)) NIL ((-94. 0 0 0 0 0 )) NATURAL) (2 ((273 36) (273 337)) NIL ((0 301. 0 0 0 0 )) NATURAL) (2 ((273 337) (210 337)) NIL ((-63. 0 0 0 0 0 )) NATURAL) (2 ((210 337) (78 246)) NIL ((-132. -91. 0 0 0 0 )) NATURAL) (2 ((78 246) (134 246)) NIL ((56. 0 0 0 0 0 )) NATURAL) (2 ((134 246) (220 303)) NIL ((86. 57. 0 0 0 0 )) NATURAL) (2 ((220 303) (220 36)) NIL ((0 -267. 0 0 0 0 )) NATURAL) (2 ((220 36) (124 36)) NIL ((-96. 0 0 0 0 0 )) NATURAL) (2 ((124 36) (124 0)) NIL ((0 -36. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 62Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 12:24:12) (MADE-FROM gachan.cu 0 140 10 925) (SPLINES ((3 ((367 0) (367 0) (73 0)) NIL ((73.5 0 0 0 -441. 0 ) (-147. 0 -441. 0 441. 0 )) NATURAL) (2 ((73 0) (73 50)) NIL ((0 50. 0 0 0 0 )) NATURAL) (17 ((73 50) (78 70) (90 89) (123 114) (152 134) (189 159) (230 186) (269 212) (303 239) (306 270) (290 291) (260 301) (216 305) (179 301) (155 293) (137 280) (130 264)) NIL ((4.74380017 20.817619 0 0 1.53719520 -4.90571976 ) (5.51239777 18.364757 1.53719520 -4.90571976 34.314018 18.528598 ) (24.206604 22.723339 35.851219 13.622879 -54.793289 -27.208679 ) (32.66117 22.741878 -18.942073 -13.5858 34.85916 24.306118 ) (31.148681 21.309139 15.917087 10.7203178 -12.643362 -10.0157985 ) (40.744087 27.021556 3.27372408 0.704518795 -8.28570748 -2.24291372 ) (39.874954 26.604618 -5.01198483 -1.53839493 9.78619767 0.987456680 ) (39.756073 25.559951 4.77421379 -0.550938249 -48.859077 10.293085 ) (20.100742 30.155559 -44.084869 9.74214746 29.650135 -24.159797 ) (-9.1590557 27.817802 -14.434732 -14.417652 2.25853729 2.34612083 ) (-22.464519 14.573211 -12.176195 -12.071531 -8.6842861 8.77531434 ) (-38.982856 6.8893385 -20.860481 -3.29621697 32.478599 -7.44738007 ) (-43.604034 -0.130568802 11.61812 -10.743597 4.7698803 9.014204 ) (-29.600975 -6.36706353 16.388 -1.729393 -15.558134 -4.60943508 ) (-20.992042 -10.4011745 0.829866291 -6.33882809 15.462663 3.42353535 ) (-12.430843 -15.028234 16.29253 -2.91529274 -16.29253 2.91529274 )) NATURAL) (2 ((130 264) (130 239)) NIL ((0 -25. 0 0 0 0 )) NATURAL) (2 ((130 239) (82 239)) NIL ((-48. 0 0 0 0 0 )) NATURAL) (2 ((82 239) (82 269)) NIL ((0 30. 0 0 0 0 )) NATURAL) (20 ((82 269) (90 291) (105 308) (129 322) (159 331) (216 338) (273 332) (307 320) (331 305) (348 282) (354 247) (341 216) (312 189) (282 167) (246 143) (211 120) (181 101) (149 81) (131 65) (125 43)) NIL ((6.78662205 23.226146 0 0 7.2802677 -7.356884 ) (10.4267559 19.547702 7.2802677 -7.356884 5.5986595 6.78442288 ) (20.506351 15.58303 12.878927 -0.572460413 -17.6749038 -7.78081227 ) (24.547828 11.1201629 -4.79597855 -8.3532734 47.100959 12.3388309 ) (43.30233 8.936306 42.304985 3.9855585 -44.728965 -23.574516 ) (63.242828 1.13460397 -2.42398405 -19.588958 -30.185062 15.959251 ) (45.72631 -10.4747276 -32.609046 -3.62970686 27.469234 1.73749709 ) (26.851886 -13.235687 -5.1398096 -1.89220977 -1.69189834 -4.90924263 ) (20.866127 -17.582519 -6.83170796 -6.80145264 -2.70164585 -12.100521 ) (12.6835956 -30.434234 -9.5333538 -18.901973 -11.501516 29.311332 ) (-2.60051441 -34.680542 -21.03487 10.4093589 0.707698822 -9.14481927 ) (-23.281532 -28.843593 -20.327171 1.26453852 26.670726 7.2679472 ) (-30.273342 -23.945079 6.3435564 8.53248597 -17.390609 -13.926967 ) (-32.62509 -22.376079 -11.047054 -5.39448166 12.891712 6.4399252 ) (-37.226287 -24.550598 1.84465909 1.04544425 7.82375527 6.1672592 ) (-31.469749 -20.421524 9.66841508 7.2127037 -20.186737 -13.108963 ) (-31.894702 -19.763301 -10.5183239 -5.8962593 30.923206 16.2685928 ) (-26.951423 -17.5252609 20.404884 10.372335 -7.50610734 -21.965419 ) (-10.299591 -18.135635 12.898777 -11.593084 -12.898777 11.593084 )) NATURAL) (2 ((125 43) (367 43)) NIL ((242. 0 0 0 0 0 )) NATURAL) (2 ((367 43) (367 0)) NIL ((0 -43. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 63Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 12:24:51) (MADE-FROM gachan.cu 0 140 10 925) (SPLINES ((2 ((61 99) (111 99)) NIL ((50. 0 0 0 0 0 )) NATURAL) (16 ((111 99) (111 75) (126 51) (153 39) (188 35) (213 34) (238 35) (272 39) (299 48) (319 70) (323 97) (317 126) (304 143) (281 155) (251 161) (226 161)) NIL ((-3.35919046 -23.278705 0 0 20.155143 -4.32776165 ) (6.71838284 -25.442585 20.155143 -4.32776165 -10.775732 21.638805 ) (21.48566 -18.950939 9.3794117 17.311046 4.94778824 -10.2274837 ) (33.338966 -6.7536373 14.3271999 7.0835619 -33.01541 -4.72886086 ) (31.158458 -2.03450584 -18.688217 2.35470104 19.11388 -0.857067586 ) (22.027183 -0.108338594 0.425663412 1.49763345 16.559894 2.15713119 ) (30.732795 2.4678607 16.985561 3.65476465 -31.353477 -1.77145815 ) (32.041618 5.2368965 -14.367916 1.8833065 12.854017 16.928699 ) (24.100711 15.584554 -1.51389813 18.812007 -20.062587 -17.943359 ) (12.555519 25.42488 -21.576488 0.868646980 13.396343 6.8447523 ) (-2.32279682 29.715908 -8.18014527 7.71339989 2.47721863 -27.435646 ) (-9.2643337 23.711479 -5.70292664 -19.722248 -5.30521584 18.89785 ) (-17.619869 13.438158 -11.008142 -0.824397088 0.743648529 -6.1557617 ) (-28.256187 9.53587915 -10.2644939 -6.9801588 20.330616 -0.274801254 ) (-28.355373 2.4183197 10.0661239 -7.25496007 -10.0661239 7.25496007 )) NATURAL) (2 ((226 161) (166 161)) NIL ((-60. 0 0 0 0 0 )) NATURAL) (3 ((166 161) (166 197) (166 197)) NIL ((0 45. 0 0 0 -54. ) (0 18. 0 -54. 0 54. )) NATURAL) (2 ((166 197) (216 197)) NIL ((50. 0 0 0 0 0 )) NATURAL) (15 ((216 197) (241 197) (269 204) (289 217) (298 235) (301 260) (290 283) (268 297) (232 303) (210 303) (187 303) (149 297) (133 286) (125 272) (125 252)) NIL ((23.819458 -1.50491333 0 0 7.08323479 9.02947999 ) (27.361076 3.00982666 7.08323479 9.02947999 -17.416175 -3.14740086 ) (25.736225 10.4656067 -10.332941 5.88207913 -3.4185276 -2.43987894 ) (13.694019 15.127746 -13.751468 3.44220018 13.090288 6.9069147 ) (6.48769475 22.023403 -0.661179662 10.349115 -18.9426269 -13.187776 ) (-3.64480162 25.778629 -19.603809 -2.83866167 14.6802387 -8.1558056 ) (-15.908493 18.862064 -4.92357064 -10.9944687 -21.778327 3.8110094 ) (-31.721229 9.7731018 -26.7019 -7.18345929 54.43308 -1.08823299 ) (-31.206584 2.0455246 27.731185 -8.27169229 -27.954029 12.541927 ) (-17.452415 0.0447963029 -0.222843975 4.27023506 -32.616958 -13.079483 ) (-33.983741 -2.22471094 -32.839805 -8.80924798 74.42189 3.77601147 ) (-29.612598 -9.1459522 41.582084 -5.0332365 -43.07064 3.97543287 ) (-9.56583596 -12.191473 -1.48855781 -1.05780363 13.8606968 -7.6777439 ) (-4.12404633 -17.08815 12.3721389 -8.735548 -12.3721389 8.735548 )) NATURAL) (2 ((125 252) (82 252)) NIL ((-43. 0 0 0 0 0 )) NATURAL) (2 ((82 252) (82 277)) NIL ((0 25. 0 0 0 0 )) NATURAL) (15 ((82 277) (91 294) (108 310) (132 323) (163 332) (213 337) (259 333) (295 323) (321 307) (339 284) (346 254) (342 230) (331 210) (312 190) (294 179)) NIL ((7.3249216 17.1195678 0 0 10.0504665 -0.717417956 ) (12.3501548 16.76086 10.0504665 -0.717417956 -2.25233459 -2.41290998 ) (21.274452 14.836986 7.79813195 -3.13032818 -7.04112816 -1.63093948 ) (25.55202 10.8911876 0.757003189 -4.76126766 30.41685 2.93666792 ) (41.517448 7.59825516 31.173854 -1.8245995 -42.626266 -10.115734 ) (51.378166 0.715788484 -11.452417 -11.940334 2.08823204 7.5262718 ) (40.969863 -7.4614105 -9.36418534 -4.4140625 -1.72665214 -1.98934936 ) (30.742355 -12.8701477 -11.090837 -6.40341187 4.81837368 0.431121826 ) (22.060703 -19.057998 -6.2724638 -5.97229004 -5.5468378 -5.73513413 ) (13.014822 -27.897853 -11.8193016 -11.707424 -0.631027222 22.50941 ) (0.880005479 -28.35057 -12.4503288 10.8019886 8.07095338 -6.3025217 ) (-7.53484727 -20.699844 -4.37937546 4.4994669 -7.65279008 -9.29932405 ) (-15.740617 -20.85004 -12.032165 -4.79985714 16.5402069 19.499816 ) (-19.502677 -15.899986 4.50804138 14.699962 -4.50804138 -14.699962 )) NATURAL) (15 ((294 179) (331 161) (354 138) (364 115) (367 90) (360 61) (339 32) (316 16) (279 3) (216 -2) (159 1) (117 12) (90 28) (72 50) (63 71)) NIL ((39.920318 -16.637714 0 0 -17.5219269 -8.17371179 ) (31.159355 -20.724571 -17.5219269 -8.17371179 3.60964584 10.8685646 ) (15.442251 -23.464 -13.912281 2.6948533 9.08333589 -5.30055332 ) (6.07163716 -23.419422 -4.82894516 -2.60570001 -3.94299126 -1.66635275 ) (-0.728803635 -26.858299 -8.7719364 -4.27205277 -11.3113689 -0.0340318680 ) (-15.156425 -31.147369 -20.083305 -4.30608464 25.188472 25.802475 ) (-22.645492 -22.552211 5.10516835 21.496391 -17.442531 -25.17588 ) (-26.261592 -13.643764 -12.337366 -3.679492 -27.41833 14.9010658 ) (-52.308128 -9.8727226 -39.755699 11.2215747 55.115875 -4.42838192 ) (-64.505874 -0.865339280 15.360178 6.79319287 -1.04520416 2.81245708 ) (-49.668304 7.3340826 14.3149738 9.60564996 3.0649395 -6.82144929 ) (-33.820861 13.5290088 17.379913 2.78420067 -11.2145576 6.4733448 ) (-22.048225 19.549881 6.16535569 9.25754548 5.79330445 -13.0719318 ) (-12.986219 22.271461 11.95866 -3.81438637 -11.95866 3.81438637 )) NATURAL) (2 ((63 71) (61 99)) NIL ((-2. 28. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 64Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 12:27:37) (MADE-FROM gachan.cu 0 140 0 0) (SPLINES ((2 ((287 0) (334 0)) NIL ((47. 0 0 0 0 0 )) NATURAL) (2 ((334 0) (334 84)) NIL ((0 84. 0 0 0 0 )) NATURAL) (2 ((334 84) (388 84)) NIL ((54. 0 0 0 0 0 )) NATURAL) (2 ((388 84) (388 127)) NIL ((0 43. 0 0 0 0 )) NATURAL) (2 ((388 127) (334 127)) NIL ((-54. 0 0 0 0 0 )) NATURAL) (2 ((334 127) (334 337)) NIL ((0 210. 0 0 0 0 )) NATURAL) (2 ((334 337) (287 337)) NIL ((-47. 0 0 0 0 0 )) NATURAL) (2 ((287 337) (61 112)) NIL ((-226. -225. 0 0 0 0 )) NATURAL) (2 ((61 112) (61 84)) NIL ((0 -28. 0 0 0 0 )) NATURAL) (2 ((61 84) (287 84)) NIL ((226. 0 0 0 0 0 )) NATURAL) (2 ((287 84) (287 0)) NIL ((0 -84. 0 0 0 0 )) NATURAL)) ((2 ((287 127) (132 127)) NIL ((-155. 0 0 0 0 0 )) NATURAL) (2 ((132 127) (287 285)) NIL ((155. 158. 0 0 0 0 )) NATURAL) (2 ((287 285) (287 127)) NIL ((0 -158. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 65Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 12:33:57) (MADE-FROM gachan.cu 0 140 0 0) (SPLINES ((2 ((63 99) (113 99)) NIL ((50. 0 0 0 0 0 )) NATURAL) (11 ((113 99) (117 71) (128 55) (149 41) (187 33) (212 31) (238 32) (276 39) (300 56) (317 84) (322 112)) NIL ((2.45260906 -31.158916 0 0 9.2843437 18.953514 ) (7.09478188 -21.682159 9.2843437 18.953514 -4.42172432 -22.76757 ) (14.168264 -14.112432 4.8626194 -3.81405783 26.402553 12.1167736 ) (32.232162 -11.868103 31.265174 8.3027172 -59.188507 -1.69952965 ) (33.903076 -4.41515064 -27.923336 6.60318757 30.351509 -5.31865692 ) (21.155502 -0.471291602 2.42817497 1.28452992 21.782455 4.97415924 ) (34.474899 3.30031872 24.210632 6.25868989 -51.48133 3.42201805 ) (32.944862 11.2700176 -27.270702 9.6807079 28.14289 5.33776856 ) (19.745609 23.619609 0.872188688 15.018476 -19.090236 -18.773094 ) (11.072681 29.251537 -18.218048 -3.7546196 18.218048 3.7546196 )) NATURAL) (12 ((322 112) (319 136) (310 159) (298 174) (278 186) (250 191) (229 192) (203 191) (167 185) (146 173) (134 159) (125 141)) NIL ((-1.50521779 23.720333 0 0 -8.96869279 1.67799902 ) (-5.9895649 24.55933 -8.96869279 1.67799902 8.8434677 -14.389993 ) (-10.5365219 19.042331 -0.125223279 -12.711996 -8.4051876 13.8819828 ) (-14.8643398 13.2713279 -8.53041268 1.16998744 -5.22271347 -11.137939 ) (-26.00611 8.87234689 -13.753126 -9.9679527 29.296043 6.669775 ) (-25.111213 2.23928118 15.542919 -3.29817772 -21.961471 2.45884323 ) (-20.54903 0.170525491 -6.4185524 -0.839334369 -13.450157 -4.50514984 ) (-33.692657 -2.92138386 -19.868709 -5.34448433 45.762107 -2.43824291 ) (-30.680313 -9.48498918 25.893402 -7.78272725 -19.598308 8.2581215 ) (-14.586067 -13.138656 6.29509164 0.475394309 -3.36886454 -6.59424306 ) (-9.97540856 -15.960382 2.92622709 -6.1188488 -2.92622709 6.1188488 )) NATURAL) (3 ((125 141) (73 141) (73 141)) NIL ((-65. 0 0 0 78. 0 ) (-26. 0 78. 0 -78. 0 )) NATURAL) (2 ((73 141) (108 337)) NIL ((35. 196. 0 0 0 0 )) NATURAL) (2 ((108 337) (334 337)) NIL ((226. 0 0 0 0 0 )) NATURAL) (2 ((334 337) (334 295)) NIL ((0 -42. 0 0 0 0 )) NATURAL) (2 ((334 295) (153 295)) NIL ((-181. 0 0 0 0 0 )) NATURAL) (2 ((153 295) (137 202)) NIL ((-16. -93. 0 0 0 0 )) NATURAL) (22 ((137 202) (170 217) (202 224) (237 227) (280 222) (312 211) (337 193) (352 175) (363 153) (367 122) (363 86) (351 57) (325 29) (295 12) (259 2) (208 -2) (160 4) (120 17) (94 34) (76 54) (67 73) (63 99)) NIL ((33.278953 16.989254 0 0 -1.6737628 -11.935539 ) (32.442077 11.021486 -1.6737628 -11.935539 2.36881447 11.677698 ) (31.95272 4.9247961 0.695052028 -0.257840454 16.198501 -10.775257 ) (40.747024 -0.720674277 16.893554 -11.033098 -37.162834 7.42333985 ) (39.059166 -8.0421009 -20.269279 -3.6097579 18.4528389 -6.9181099 ) (28.016304 -15.110916 -1.816437 -10.527868 -12.6485328 14.249101 ) (19.875598 -18.514232 -14.464971 3.72123432 14.141298 -8.07830239 ) (12.481279 -18.832149 -0.323671937 -4.35706902 -7.91666699 -5.9358902 ) (8.19927407 -26.157165 -8.24033929 -10.292959 -0.474626541 1.82187271 ) (-0.278379440 -35.539184 -8.7149658 -8.4710865 3.8151741 22.648395 ) (-7.0857582 -32.686073 -4.89979172 14.1773109 -14.786075 -20.415466 ) (-19.378585 -28.716499 -19.685867 -6.2381563 19.329124 23.013469 ) (-29.39989 -23.447917 -0.356739759 16.775314 -2.53043222 -11.6384296 ) (-31.021846 -12.491817 -2.88717222 5.13688374 -21.207397 -0.459736824 ) (-44.512718 -7.58480263 -24.09457 4.6771469 33.36003 7.47737885 ) (-51.927269 0.831033350 9.26546289 12.1545257 -4.23274899 -5.4497776 ) (-44.778183 10.2606697 5.03271389 6.70474816 13.570957 -3.67826986 ) (-32.959983 15.126283 18.603672 3.02647829 -14.051084 2.16285753 ) (-21.381855 19.234191 4.55258656 5.18933583 6.63338948 -10.9731578 ) (-13.512575 18.936946 11.185976 -5.783823 -6.4824705 17.729778 ) (-5.56783486 22.018013 4.7035055 11.945955 -4.7035055 -11.945955 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 66Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 12:40:25) (MADE-FROM gachan.cu 0 140 0 0) (SPLINES ((11 ((314 260) (306 281) (287 297) (251 308) (210 307) (174 303) (144 291) (125 271) (117 255) (113 235) (110 192)) NIL ((-6.15634823 22.203887 0 0 -11.0619106 -7.2233467 ) (-11.687303 18.592216 -11.0619106 -7.2233467 -10.6904468 6.11673546 ) (-28.094436 14.427236 -21.752357 -1.10661101 17.823703 -17.243595 ) (-40.934944 4.6988287 -3.92865229 -18.350208 11.39562 20.857646 ) (-39.165779 -3.2225542 7.4669695 2.50744152 -3.40619659 -12.186998 ) (-33.401908 -6.80861188 4.0607729 -9.6795578 8.2291622 -2.10965156 ) (-25.226558 -17.542995 12.289936 -11.789209 0.489543915 20.625602 ) (-12.6918487 -19.019401 12.7794799 8.83639527 -10.1873417 -8.39276696 ) (-5.00603962 -14.3793907 2.59213829 0.443627298 -1.74017286 -35.054527 ) (-3.283988 -31.463031 0.851965309 -34.6109 -0.851965309 34.6109 )) NATURAL) (33 ((110 192) (143 210) (181 220) (232 225) (279 222) (310 213) (337 199) (357 180) (370 153) (376 124) (373 91) (363 60) (334 29) (289 8) (226 -1) (174 6) (135 20) (105 40) (87 60) (70 98) (64 164) (69 221) (76 252) (91 283) (111 306) (139 323) (177 335) (235 338) (279 333) (309 323) (331 309) (351 286) (357 260)) NIL ((32.591583 19.91341 0 0 2.45046902 -11.480478 ) (33.816818 14.173172 2.45046902 -11.480478 17.7476539 9.40239717 ) (45.141113 7.39389229 20.198123 -2.07808113 -25.441089 -8.12911416 ) (52.61869 1.25125384 -5.24296665 -10.207195 -17.983284 5.1140623 ) (38.384079 -6.39890957 -23.226253 -5.09313298 25.374244 -0.327138901 ) (27.844951 -11.6556129 2.14799404 -5.42027188 -11.5137119 2.19449425 ) (24.236091 -15.978637 -9.36571885 -3.22577763 2.68060589 -8.45083619 ) (16.210674 -23.429832 -6.68511296 -11.6766147 0.791287423 13.608858 ) (9.9212036 -28.30202 -5.89382553 1.93224478 -5.8457508 -9.9846058 ) (1.10450172 -31.362079 -11.739576 -8.05236245 10.5917167 14.3295707 ) (-5.33921623 -32.249656 -1.14785862 6.27720929 -24.521122 -11.333683 ) (-18.747634 -31.639289 -25.668983 -5.05647373 15.4927768 19.005157 ) (-36.670234 -27.19318 -10.1762066 13.948686 -19.449962 -4.68696213 ) (-56.571426 -15.587976 -29.62617 9.26172448 50.307067 11.742685 ) (-61.044059 -0.454907894 20.6809 21.004409 -7.77833939 -18.283779 ) (-44.252327 11.4076118 12.902561 2.72062778 -7.19371319 7.39244557 ) (-34.946617 17.824459 5.708848 10.113073 12.55319 -17.285995 ) (-22.961177 19.294536 18.262039 -7.17292214 -25.019046 25.751537 ) (-17.20866 24.997383 -6.7570076 18.578617 21.522995 22.279834 ) (-13.20417 54.71591 14.765987 40.85845 -1.07293892 -54.870864 ) (1.02534771 68.13893 13.693048 -14.0124149 -17.231231 -24.796375 ) (6.10277939 41.728324 -3.53818369 -38.808792 15.997869 52.056388 ) (10.5635299 28.94773 12.459686 13.2476 -10.760248 -27.429206 ) (17.643093 28.480728 1.69943738 -14.181606 9.04312516 9.6604328 ) (23.864093 19.129337 10.742563 -4.52117348 -7.412261 0.787478924 ) (30.900527 15.001905 3.33030224 -3.73369455 32.605918 -6.81034947 ) (50.53379 7.86303425 35.936225 -10.544044 -63.011444 2.45392418 ) (54.964294 -1.45404815 -27.075222 -8.0901203 15.439876 2.99464989 ) (35.609008 -8.04684258 -11.635345 -5.09547043 1.25195694 3.56747198 ) (24.599643 -11.3585777 -10.3833885 -1.52799845 15.5522918 -11.264534 ) (21.992401 -18.51884 5.16890335 -12.7925338 -27.461128 11.490667 ) (13.43074 -25.566043 -22.292224 -1.30186629 22.292224 1.30186629 )) NATURAL) (2 ((357 260) (314 260)) NIL ((-43. 0 0 0 0 0 )) NATURAL)) ((21 ((113 119) (121 149) (140 172) (164 185) (208 192) (228 194) (248 192) (291 185) (314 170) (327 147) (333 117) (330 86) (315 57) (290 40) (249 33) (229 31) (209 33) (163 42) (134 61) (119 84) (113 119)) NIL ((4.91333866 31.251632 0 0 18.519966 -7.5098009 ) (14.173322 27.49673 18.519966 -7.5098009 -26.599842 -4.45099545 ) (19.393367 17.761432 -8.07987596 -11.960796 51.879409 7.3137846 ) (37.253196 9.45752908 43.799537 -4.64701176 -90.917816 -0.804142953 ) (35.593818 4.4084463 -47.118286 -5.4511547 47.791908 1.90278578 ) (12.371492 -0.0913158953 0.673623085 -3.54836893 43.750167 -0.806997777 ) (34.920204 -4.04318428 44.423797 -4.3553667 -84.792617 -4.6747942 ) (36.947685 -10.7359466 -40.36882 -9.0301609 37.420303 1.50617122 ) (15.289024 -19.013023 -2.94851398 -7.52398968 -4.88860703 -1.34988689 ) (9.8962059 -27.211956 -7.837121 -8.87387658 0.134121895 9.8933773 ) (2.12614632 -31.139144 -7.7029991 1.01950121 -7.64788056 -2.22362852 ) (-9.40079309 -31.231456 -15.350879 -1.20412731 12.457403 17.0011329 ) (-18.522972 -23.935016 -2.893476 15.797006 -30.181732 -5.78090859 ) (-36.507316 -11.028463 -33.07521 10.016098 72.26953 -5.87750626 ) (-33.44776 -3.95111895 39.19432 4.13859177 -36.896385 -0.709060669 ) (-12.701635 -0.167057514 2.29793119 3.4295311 -50.683975 2.71375179 ) (-35.745689 4.61934948 -48.386047 6.1432829 83.632309 7.85405255 ) (-42.315582 14.689657 35.24626 13.997335 -25.845264 -16.129955 ) (-19.991954 20.622013 9.40099526 -2.13262224 1.7487545 20.665775 ) (-9.71658326 28.82228 11.1497497 18.533153 -11.1497497 -18.533153 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 67Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 12:42:36) (MADE-FROM gachan.cu 0 140 0 0) (SPLINES ((3 ((82 337) (82 337) (82 295)) NIL ((0 10.5 0 0 0 -63. ) (0 -21. 0 -63. 0 63. )) NATURAL) (2 ((82 295) (317 295)) NIL ((235. 0 0 0 0 0 )) NATURAL) (2 ((317 295) (140 0)) NIL ((-177. -295. 0 0 0 0 )) NATURAL) (2 ((140 0) (207 0)) NIL ((67. 0 0 0 0 0 )) NATURAL) (2 ((207 0) (367 307)) NIL ((160. 307. 0 0 0 0 )) NATURAL) (2 ((367 307) (367 337)) NIL ((0 30. 0 0 0 0 )) NATURAL) (2 ((367 337) (82 337)) NIL ((-285. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 70Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 12:49:46) (MADE-FROM gachan.cu 0 140 0 0) (SPLINES ((19 ((291 180) (315 191) (336 207) (351 232) (354 260) (345 290) (324 313) (298 326) (259 336) (219 340) (178 336) (139 326) (114 313) (93 290) (84 260) (87 232) (102 207) (123 191) (147 180)) NIL ((24.558052 10.265171 0 0 -3.34833002 4.4089651 ) (22.883888 12.469654 -3.34833002 4.4089651 -1.25834989 7.95517254 ) (18.906383 20.856205 -4.60667992 12.3641376 -9.61826898 -12.229656 ) (9.49056817 27.105514 -14.2249489 0.134480089 3.73142815 4.96345997 ) (-2.86866617 29.721725 -10.4935207 5.09794045 -5.3074398 -13.624183 ) (-16.015907 28.007572 -15.80096 -8.5262432 17.498333 -4.46672058 ) (-23.067699 17.247966 1.69737339 -12.9929638 -22.685901 13.4910698 ) (-32.713279 11.0005397 -20.988529 0.498106360 25.245277 -7.49756528 ) (-41.07917 7.74986458 4.25675106 -6.99945927 -6.2952261 -1.50080967 ) (-39.97003 -4.76837158E-7 -2.03847551 -8.50026895 -0.0643725395 1.50080967 ) (-42.040695 -7.74986458 -2.10284805 -6.99945927 24.552715 7.49756528 ) (-31.867183 -11.0005397 22.449867 0.498106659 -26.146499 -13.4910717 ) (-22.490562 -17.24797 -3.69663239 -12.9929657 20.03329 4.46672249 ) (-16.170547 -28.007572 16.336658 -8.5262432 -5.98667336 13.624183 ) (-2.82722759 -29.721725 10.349985 5.09794045 3.91341019 -4.96346092 ) (9.47946359 -27.105514 14.263395 0.134479522 -9.6669674 12.22966 ) (18.909374 -20.856205 4.59642697 12.364139 -1.24553394 -7.9551754 ) (22.883033 -12.469654 3.35089302 4.40896416 -3.35089302 -4.40896416 )) NATURAL) (21 ((147 180) (117 170) (87 154) (69 134) (60 100) (67 60) (88 34) (114 18) (139 9) (169 2) (219 -2) (268 2) (298 9) (324 18) (349 34) (370 60) (378 100) (369 134) (351 154) (321 170) (291 180)) NIL ((-29.24649 -8.45737458 0 0 -4.52104187 -9.25575067 ) (-31.50701 -13.0852489 -4.52104187 -9.25575067 22.605209 10.278753 ) (-24.725448 -17.201622 18.084167 1.02300405 -13.899799 -19.859268 ) (-13.5911808 -26.108253 4.18436814 -18.836265 14.993984 9.15831948 ) (-1.90981889 -40.365356 19.178352 -9.6779461 -4.07614327 31.225994 ) (15.230461 -34.430305 15.102209 21.548049 -10.6893997 -14.062305 ) (24.987968 -19.91341 4.41280842 7.4857435 -7.16625214 1.02323055 ) (25.817649 -11.9160499 -2.75344372 8.50897409 3.3544116 -8.03062058 ) (24.741413 -7.42238618 0.600968123 0.478352726 29.7486 1.09926128 ) (40.216682 -6.3944025 30.34957 1.57761407 -32.348823 9.63357545 ) (54.391838 7.15255737E-7 -1.99925756 11.211191 -26.353275 -9.63357736 ) (39.215942 6.3944025 -28.352535 1.57761335 29.761928 -1.09926057 ) (25.744373 7.42238618 1.40939593 0.478352666 -2.69444275 8.03062058 ) (25.806549 11.9160499 -1.28504705 8.50897409 -0.984160424 -1.02323150 ) (24.029418 19.91341 -2.26920748 7.48574258 -11.3689117 14.062307 ) (16.075756 34.430305 -13.63812 21.548049 -7.5401821 -31.225994 ) (-1.3324542 40.365356 -21.178302 -9.6779461 17.529632 -9.15831567 ) (-13.745939 26.108249 -3.64866877 -18.836261 -14.57835 19.859264 ) (-24.683784 17.201622 -18.22702 1.02300405 22.783775 -10.278753 ) (-31.518917 13.0852489 4.55675507 -9.25575067 -4.55675507 9.25575067 )) NATURAL)) ((9 ((131 253) (135 224) (156 204) (194 196) (221 194) (244 196) (281 204) (302 224) (307 253)) NIL ((0.832658768 -30.649482 0 0 19.004047 9.8969059 ) (10.334684 -25.701026 19.004047 9.8969059 6.97975159 4.51546479 ) (32.828605 -13.54639 25.983799 14.41237 -46.923042 -9.9587631 ) (35.350875 -4.1134014 -20.939247 4.45360756 12.712442 -0.680411816 ) (20.767856 1.59256160E-7 -8.22680474 3.77319574 38.073265 0.680411816 ) (31.577686 4.11340237 29.846466 4.45360756 -57.005523 9.9587612 ) (32.921386 13.546392 -27.159057 14.4123687 9.94882585 -4.51546097 ) (10.7367439 25.70103 -17.210231 9.8969078 17.210231 -9.8969078 )) NATURAL) (9 ((307 253) (298 283) (274 300) (244 307) (221 309) (194 307) (164 300) (140 283) (131 253)) NIL ((-5.5618553 32.845359 0 0 -20.628864 -17.072162 ) (-15.876289 24.309276 -20.628864 -17.072162 13.144329 7.36082268 ) (-29.932987 10.917524 -7.4845352 -9.71133996 22.051544 5.6288662 ) (-26.39175 4.02061749 14.5670089 -4.08247376 -23.350509 0.123711586 ) (-23.5 -3.18512320E-7 -8.78350259 -3.95876217 5.3505125 -0.123711586 ) (-29.608245 -4.02061844 -3.4329896 -4.08247376 7.94845296 -5.6288662 ) (-29.067009 -10.917526 4.51546383 -9.71133996 16.855667 -7.36082268 ) (-16.12371 -24.309276 21.371131 -17.072162 -21.371131 17.072162 )) NATURAL)) ((11 ((105 98) (113 128) (132 147) (155 158) (194 164) (220 165) (244 164) (283 158) (305 147) (325 128) (332 98)) NIL ((4.97496033 32.444747 0 0 18.150238 -14.668506 ) (14.050081 25.110496 18.150238 -14.668506 -24.751201 7.34253979 ) (19.824714 14.113258 -6.6009655 -7.32596684 38.854583 3.2983427 ) (32.651046 8.4364624 32.253624 -4.02762413 -58.667167 -2.53591156 ) (35.571083 3.14088345 -26.413543 -6.5635357 21.814094 6.84530354 ) (20.06459 -7.96280801E-8 -4.59944725 0.281768083 37.410774 -6.84530354 ) (34.170532 -3.14088392 32.811332 -6.5635357 -69.457214 2.53591251 ) (32.25325 -8.4364643 -36.645889 -4.02762318 48.41812 -3.2983427 ) (19.816429 -14.113258 11.7722377 -7.32596589 -34.215293 -7.34254265 ) (14.481018 -25.110496 -22.443058 -14.668508 22.443058 14.668508 )) NATURAL) (11 ((332 98) (326 69) (302 47) (275 36) (244 31) (220 29) (194 31) (162 36) (135 47) (111 69) (105 98)) NIL ((-1.27926373 -30.190605 0 0 -28.324417 7.14364625 ) (-15.441473 -26.618782 -28.324417 7.14364625 33.622093 6.2817669 ) (-26.954841 -16.334251 5.29768086 13.425413 -16.163986 -8.2707176 ) (-29.739154 -7.04419804 -10.866306 5.1546955 25.033847 -3.19889402 ) (-28.088535 -3.48895025 14.167543 1.95580148 -17.971408 3.06629705 ) (-22.906696 3.18512320E-7 -3.80386734 5.02209854 -7.1482048 -3.06629753 ) (-30.284668 3.48895025 -10.952072 1.95580101 22.564231 3.19889545 ) (-29.954624 7.044199 11.6121616 5.15469647 -17.1087379 8.2707157 ) (-26.896831 16.334251 -5.4965763 13.425413 33.870712 -6.2817669 ) (-15.4580459 26.618782 28.374141 7.14364625 -28.374141 -7.14364625 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 71Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 12:58:42) (MADE-FROM gachan.cu 0 140 0 0) (SPLINES ((2 ((118 77) (75 77)) NIL ((-43. 0 0 0 0 0 )) NATURAL) (32 ((75 77) (81 51) (100 28) (123 14) (153 4) (196 -1) (255 2) (294 13) (321 31) (340 54) (355 85) (363 116) (367 173) (364 239) (351 277) (333 297) (303 317) (264 331) (205 338) (142 329) (97 308) (67 277) (55 246) (54 213) (60 184) (75 157) (109 130) (153 115) (199 112) (260 118) (302 131) (322 145)) NIL ((2.70768738 -26.21757 0 0 19.753875 1.30543661 ) (12.584625 -25.564853 19.753875 1.30543661 -20.769386 11.472816 ) (21.953807 -18.523006 -1.01551056 12.778253 9.32367517 -11.1967029 ) (25.600135 -11.343107 8.3081646 1.58154917 1.47467994 3.31399965 ) (34.645637 -8.10455705 9.78284455 4.89554882 20.77761 3.94070339 ) (54.81729 -1.23865676 30.560455 8.8362522 -66.585128 -1.07681560 ) (52.085174 7.0591879 -36.024673 7.7594366 29.562927 0.366560936 ) (30.841968 15.001905 -6.46174336 8.12599755 -3.66660023 -6.3894329 ) (22.546924 19.933185 -10.1283435 1.73656463 9.1034622 13.191175 ) (16.970314 28.265338 -1.02488088 14.92774 -8.7472496 -28.375263 ) (11.5718078 29.005447 -9.77213098 -13.447525 7.88553906 52.309883 ) (5.7424469 41.712867 -1.88659143 38.862358 -4.79491043 -24.864299 ) (1.45840072 68.143066 -6.68150235 13.998058 -6.70589734 -54.852653 ) (-8.5760498 54.714805 -13.3873996 -40.854599 13.6184997 22.274959 ) (-15.154197 24.997684 0.231101900 -18.579639 -17.768104 25.752807 ) (-23.807151 19.294448 -17.537006 7.17316819 15.4539318 -17.286197 ) (-33.617187 17.824516 -2.08307314 -10.113031 -26.047618 7.3919878 ) (-48.724075 11.407478 -28.130695 -2.72104311 22.736557 -18.2817459 ) (-65.48648 -0.454440713 -5.39413643 -21.002792 31.101375 11.7350216 ) (-55.329933 -15.589721 25.70724 -9.26777078 -15.14208 -4.65834809 ) (-37.193733 -27.186668 10.5651607 -13.9261188 11.466947 18.898368 ) (-20.895099 -31.6636 22.032108 4.97225094 -12.725717 -10.9351349 ) (-5.2258501 -32.158912 9.30639077 -5.9628849 -2.5640707 12.842174 ) (2.7985053 -31.700714 6.74232007 6.87928963 -1.01799202 -4.43356228 ) (9.03182984 -27.038208 5.72432804 2.44572735 18.636032 -7.1079273 ) (24.074176 -28.146442 24.360363 -4.66219998 -13.526155 20.865268 ) (41.671463 -22.376003 10.8342075 16.203071 -18.53141 -4.35317803 ) (43.239959 -8.34952165 -7.69720364 11.849893 39.651802 -3.45254517 ) (55.368667 1.77409935 31.954605 8.3973484 -62.075828 0.163358688 ) (56.285354 10.253126 -30.121227 8.5607071 4.65153504 -9.20088388 ) (28.489894 14.213392 -25.469692 -0.640176893 25.469692 0.640176893 )) NATURAL) (12 ((322 145) (319 102) (314 82) (307 66) (287 46) (262 36) (226 33) (196 33) (162 36) (141 44) (126 58) (118 77)) NIL ((-2.36525059 -48.755897 0 0 -3.80849552 34.535408 ) (-4.26949787 -31.488193 -3.80849552 34.535408 7.0424776 -34.67704 ) (-4.55675507 -14.291311 3.23398209 -0.141639173 -24.361415 -9.8272133 ) (-13.5034828 -19.346557 -21.127433 -9.968853 24.403202 25.985908 ) (-22.429313 -16.322452 3.27577066 16.017055 -25.251411 -10.1164398 ) (-31.77925 -5.36361695 -21.975643 5.90061569 40.602447 -3.52014017 ) (-33.453666 -1.22307181 18.626808 2.38047552 -35.158393 0.197004795 ) (-32.406059 1.25590610 -16.531585 2.57748031 40.031112 2.73212242 ) (-28.922084 5.19944763 23.49953 5.30960274 -22.966072 0.874502183 ) (-16.90559 10.946302 0.533458472 6.1841049 9.83317567 -0.230131149 ) (-11.455543 17.0153389 10.366634 5.95397377 -10.366634 -5.95397377 )) NATURAL)) ((11 ((323 220) (316 188) (295 164) (268 150) (226 145) (202 143) (179 145) (138 152) (115 166) (99 190) (93 220)) NIL ((-3.30784607 -33.58744 0 0 -22.152923 9.52467538 ) (-14.3843078 -28.825103 -22.152923 9.52467538 26.764621 0.376617432 ) (-23.154918 -19.112121 4.61169815 9.9012928 -36.905563 0.968858719 ) (-36.996009 -8.72639848 -32.293869 10.870151 66.857666 -10.252054 ) (-35.861038 -2.98227548 34.563797 0.618097306 -32.525123 4.039361 ) (-17.559806 -0.344497323 2.03867292 4.6574583 -38.757156 0.0946092606 ) (-34.899719 4.36026573 -36.71849 4.75206757 73.553787 1.58220005 ) (-34.841308 9.90343286 36.835304 6.3342676 -39.458053 5.57659245 ) (-17.735031 19.025997 -2.62274933 11.91086 18.278434 -5.88857556 ) (-11.218561 27.992569 15.655687 6.0222845 -15.655687 -6.0222845 )) NATURAL) (11 ((93 220) (95 251) (111 280) (140 297) (180 307) (204 308) (227 306) (274 295) (302 276) (317 253) (323 220)) NIL ((-1.10016107 30.764175 0 0 18.600967 1.4149456 ) (8.2003212 31.471645 18.600967 1.4149456 -9.00483705 -19.074726 ) (22.29887 23.349227 9.59613038 -17.659782 11.4183807 14.883974 ) (37.604187 13.131431 21.014511 -2.7758069 -48.668686 -10.4611778 ) (34.284355 5.12503529 -27.654178 -13.236986 21.256389 14.9607429 ) (17.258373 -0.631578923 -6.39778805 1.72375726 53.64311 -13.3817978 ) (37.68215 -5.59872055 47.24533 -11.658041 -85.8289 2.5664463 ) (42.01303 -15.973539 -38.583572 -9.0915947 31.672523 9.1160202 ) (19.26572 -20.507122 -6.91104603 0.0244256891 -4.86119175 -15.0305309 ) (9.924078 -27.997962 -11.7722377 -15.006105 11.7722377 15.006105 )) NATURAL)))) STOP \ No newline at end of file diff --git a/obsolete/lispusers/splinefonts/GACHAE.S1-SF b/obsolete/lispusers/splinefonts/GACHAE.S1-SF deleted file mode 100644 index 8a13afa8..00000000 --- a/obsolete/lispusers/splinefonts/GACHAE.S1-SF +++ /dev/null @@ -1 +0,0 @@ - ((FAMILY gacha) (CHARACTER 40Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 13-SEP-77 15:50:28) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES)) ((FAMILY gacha) (CHARACTER 30Q) (FACE M R E) (WIDTH 0 0) (FIDUCIAL 480 480) (VERSION 0 13-SEP-77 15:52:00) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((3 ((0 -112) (0 -112) (441 -112)) NIL ((-110.25 0 0 0 661.5 0 ) (220.5 0 661.5 0 -661.5 0 )) NATURAL) (2 ((441 -112) (441 -76)) NIL ((0 36. 0 0 0 0 )) NATURAL) (2 ((441 -76) (0 -76)) NIL ((-441. 0 0 0 0 0 )) NATURAL) (2 ((0 -76) (0 -112)) NIL ((0 -36. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 41Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 13:12:55) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((13 ((219 -4) (231 -3) (251 9) (261 29) (251 49) (231 61) (219 62) (207 61) (187 49) (177 29) (187 9) (207 -3) (219 -4)) NIL ((9.72938157 0.167401611 -0.927834511 -5.42605019 16.407211 21.273738 ) (17.005153 5.3782215 15.479379 15.84769 -28.469066 -7.81240464 ) (18.249996 17.319709 -12.9896869 8.03528596 -10.530931 -8.02412416 ) (-0.00515493005 21.342933 -23.520618 0.0111602712 10.5927848 -8.09108735 ) (-18.229381 17.3085479 -12.927833 -8.07992745 28.15979 -7.61152077 ) (-17.077316 5.42286206 15.231958 -15.691448 -15.231958 20.53717 ) (-9.46133996 0 -5.11072471E-7 4.8457241 -15.231954 -20.53717 ) (-17.07732 -5.42286206 -15.231956 -15.691448 28.15979 7.61152077 ) (-18.229377 -17.3085479 12.927833 -8.07992745 10.592781 8.09108735 ) (-0.00515333563 -21.342933 23.520614 0.0111602917 -10.5309238 8.02412416 ) (18.25 -17.319709 12.9896908 8.03528596 -28.46907 7.81240464 ) (17.005153 -5.3782215 -15.479381 15.84769 16.407215 -21.273738 )) PSEUDOCYCLIC)))) ((FAMILY gacha) (CHARACTER 42Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 13:18:48) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((8 ((137 197) (130 223) (122 248) (115 273) (112 296) (114 313) (126 331) (147 338)) NIL ((-6.72208787 26.270351 0 0 -1.66746807 -1.62212276 ) (-7.55582238 25.459289 -1.66746807 -1.62212276 2.33734083 2.1106143 ) (-8.05461885 24.892475 0.669872761 0.488491952 4.31810379 -0.820336819 ) (-5.2256956 24.970798 4.98797703 -0.331844926 -1.60975694 -10.8292656 ) (-1.04259658 19.224319 3.37822008 -11.1611118 8.12091828 20.137405 ) (6.39608384 18.131912 11.4991397 8.97629548 -0.873926163 -27.720367 ) (17.458259 13.248024 10.6252136 -18.7440719 -10.6252136 18.7440719 )) NATURAL) (8 ((147 338) (168 331) (180 313) (182 296) (179 273) (172 248) (164 223) (157 197)) NIL ((22.770866 -3.875988 0 0 -10.6252136 -18.7440719 ) (17.458259 -13.248024 -10.6252136 -18.7440719 -0.873926163 27.720367 ) (6.39608288 -18.131912 -11.4991397 8.97629548 8.12091828 -20.137409 ) (-1.04259729 -19.224319 -3.37822008 -11.1611137 -1.60975599 10.829267 ) (-5.2256956 -24.970798 -4.98797608 -0.331844509 4.31810284 0.820336342 ) (-8.05461885 -24.892475 -0.669872761 0.488491833 2.33734083 -2.1106143 ) (-7.55582238 -25.459289 1.66746831 -1.62212276 -1.66746831 1.62212276 )) NATURAL) (2 ((157 197) (137 197)) NIL ((-20. 0 0 0 0 0 )) NATURAL)) ((2 ((302 197) (282 197)) NIL ((-20. 0 0 0 0 0 )) NATURAL) (8 ((282 197) (275 223) (267 248) (260 273) (257 296) (259 313) (271 331) (292 338)) NIL ((-6.72208787 26.270351 0 0 -1.66746807 -1.62212276 ) (-7.55582238 25.459289 -1.66746807 -1.62212276 2.33734083 2.1106143 ) (-8.05461885 24.892475 0.669872761 0.488491952 4.31810379 -0.820336819 ) (-5.2256956 24.970798 4.98797703 -0.331844926 -1.60975694 -10.8292656 ) (-1.04259658 19.224319 3.37822008 -11.1611118 8.12091828 20.137405 ) (6.39608384 18.131912 11.4991397 8.97629548 -0.873926163 -27.720367 ) (17.458259 13.248024 10.6252136 -18.7440719 -10.6252136 18.7440719 )) NATURAL) (8 ((292 338) (313 331) (325 313) (327 296) (324 273) (317 248) (309 223) (302 197)) NIL ((22.770866 -3.875988 0 0 -10.6252136 -18.7440719 ) (17.458259 -13.248024 -10.6252136 -18.7440719 -0.873926163 27.720367 ) (6.39608288 -18.131912 -11.4991397 8.97629548 8.12091828 -20.137409 ) (-1.04259729 -19.224319 -3.37822008 -11.1611137 -1.60975599 10.829267 ) (-5.2256956 -24.970798 -4.98797608 -0.331844509 4.31810284 0.820336342 ) (-8.05461885 -24.892475 -0.669872761 0.488491833 2.33734083 -2.1106143 ) (-7.55582238 -25.459289 1.66746831 -1.62212276 -1.66746831 1.62212276 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 43Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 13:21:04) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((2 ((39 0) (90 0)) NIL ((51. 0 0 0 0 0 )) NATURAL) (2 ((90 0) (144 113)) NIL ((54. 113. 0 0 0 0 )) NATURAL) (2 ((144 113) (246 113)) NIL ((102. 0 0 0 0 0 )) NATURAL) (2 ((246 113) (192 0)) NIL ((-54. -113. 0 0 0 0 )) NATURAL) (2 ((192 0) (243 0)) NIL ((51. 0 0 0 0 0 )) NATURAL) (2 ((243 0) (297 113)) NIL ((54. 113. 0 0 0 0 )) NATURAL) (2 ((297 113) (393 113)) NIL ((96. 0 0 0 0 0 )) NATURAL) (2 ((393 113) (393 148)) NIL ((0 35. 0 0 0 0 )) NATURAL) (2 ((393 148) (313 148)) NIL ((-80. 0 0 0 0 0 )) NATURAL) (2 ((313 148) (337 198)) NIL ((24. 50. 0 0 0 0 )) NATURAL) (2 ((337 198) (415 198)) NIL ((78. 0 0 0 0 0 )) NATURAL) (2 ((415 198) (417 232)) NIL ((2. 34. 0 0 0 0 )) NATURAL) (2 ((417 232) (354 232)) NIL ((-63. 0 0 0 0 0 )) NATURAL) (2 ((354 232) (405 337)) NIL ((51. 105. 0 0 0 0 )) NATURAL) (2 ((405 337) (354 337)) NIL ((-51. 0 0 0 0 0 )) NATURAL) (2 ((354 337) (303 232)) NIL ((-51. -105. 0 0 0 0 )) NATURAL) (2 ((303 232) (201 232)) NIL ((-102. 0 0 0 0 0 )) NATURAL) (2 ((201 232) (252 337)) NIL ((51. 105. 0 0 0 0 )) NATURAL) (2 ((252 337) (201 337)) NIL ((-51. 0 0 0 0 0 )) NATURAL) (2 ((201 337) (150 232)) NIL ((-51. -105. 0 0 0 0 )) NATURAL) (2 ((150 232) (54 232)) NIL ((-96. 0 0 0 0 0 )) NATURAL) (2 ((54 232) (54 197)) NIL ((0 -35. 0 0 0 0 )) NATURAL) (2 ((54 197) (133 197)) NIL ((79. 0 0 0 0 0 )) NATURAL) (2 ((133 197) (109 147)) NIL ((-24. -50. 0 0 0 0 )) NATURAL) (2 ((109 147) (31 147)) NIL ((-78. 0 0 0 0 0 )) NATURAL) (2 ((31 147) (30 113)) NIL ((-1. -34. 0 0 0 0 )) NATURAL) (2 ((30 113) (93 113)) NIL ((63. 0 0 0 0 0 )) NATURAL) (2 ((93 113) (39 0)) NIL ((-54. -113. 0 0 0 0 )) NATURAL)) ((2 ((184 197) (160 147)) NIL ((-24. -50. 0 0 0 0 )) NATURAL) (2 ((160 147) (262 147)) NIL ((102. 0 0 0 0 0 )) NATURAL) (2 ((262 147) (286 197)) NIL ((24. 50. 0 0 0 0 )) NATURAL) (2 ((286 197) (184 197)) NIL ((-102. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 46Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 14:35:37) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((4 ((107 270) (123 246) (161 212) (174 202)) NIL ((8.46666719 -19.733333 0 0 45.199996 -25.599998 ) (31.066665 -32.533332 45.199996 -25.599998 -93.999984 67.999984 ) (29.266662 -24.133331 -48.799995 42.399993 48.799995 -42.399993 )) NATURAL) (13 ((174 202) (197 214) (222 228) (247 246) (259 270) (253 289) (235 303) (205 308) (182 310) (158 308) (131 303) (113 289) (107 270)) NIL ((22.63285 11.613859 0 0 2.202878 2.31683636 ) (23.73429 12.7722778 2.202878 2.31683636 0.985608578 0.415817738 ) (26.429973 15.2970237 3.18848658 2.73265409 -18.145309 8.01989175 ) (20.545803 22.039623 -14.956825 10.752546 -6.4043541 -20.495391 ) (2.38680172 22.544475 -21.361179 -9.74284555 13.7627258 7.9616804 ) (-12.0930137 16.7824669 -7.5984535 -1.78116488 -12.646549 -11.3513279 ) (-26.014743 9.3256397 -20.245002 -13.1324939 36.82347 13.4436359 ) (-27.848007 2.91496467 16.578468 0.311142981 -20.647338 -6.42321969 ) (-21.593212 0.0144983027 -4.0688715 -6.11207677 -2.23410892 6.24923993 ) (-26.779136 -2.97295809 -6.30298043 0.137163698 17.583774 -12.57374 ) (-24.290229 -9.1226635 11.280794 -12.4365768 3.8990078 8.04572106 ) (-11.0599327 -17.53638 15.1798019 -4.39085484 -15.1798019 4.39085484 )) NATURAL)) ((15 ((129 183) (72 242) (61 280) (73 309) (97 326) (132 339) (183 344) (234 339) (268 326) (291 309) (302 280) (294 242) (270 214) (238 196) (200 177)) NIL ((-67.869125 64.199096 0 0 65.214828 -31.194587 ) (-35.261718 48.601799 65.214828 -31.194587 -50.074157 29.972938 ) (4.91602898 32.393684 15.1406707 -1.22164702 -2.91818809 -16.697174 ) (18.597606 22.823448 12.2224827 -17.918823 -4.25308895 18.815761 ) (28.693542 14.312507 7.96939374 0.896939040 13.930542 -10.56587 ) (43.628204 9.92650987 21.899936 -9.66893197 -21.469078 -0.552272797 ) (54.7936 -0.0185569115 0.430855572 -10.2212047 -24.054214 0.774955750 ) (43.197349 -9.85228349 -23.623359 -9.446249 15.6859588 9.4524574 ) (27.416969 -14.5723037 -7.93739987 0.00620953180 -2.68962955 -14.584795 ) (18.134754 -21.858493 -10.627029 -14.578586 -10.927448 0.886726380 ) (2.04400062 -35.993713 -21.554477 -13.69186 4.39942932 29.03789 ) (-17.31076 -35.166626 -17.155048 15.346033 11.329729 -3.0383091 ) (-28.800945 -21.339752 -5.82531929 12.307724 -1.71835041 -16.884651 ) (-35.485443 -17.474353 -7.5436697 -4.57693005 7.5436697 4.57693005 )) NATURAL) (2 ((200 177) (318 80)) NIL ((118. -97. 0 0 0 0 )) NATURAL) (6 ((318 80) (335 99) (346 114) (356 130) (368 156) (372 178)) NIL ((18.459327 19.933013 0 0 -8.75597955 -5.5980854 ) (14.0813389 17.133968 -8.75597955 -5.5980854 7.77990246 3.99043036 ) (9.21531106 13.531099 -0.976076246 -1.60765481 7.63636208 19.63636 ) (12.057415 21.741626 6.66028596 18.028705 -20.325355 -28.53588 ) (8.5550232 25.502391 -13.665069 -10.507175 13.665069 10.507175 )) NATURAL) (2 ((372 178) (421 178)) NIL ((49. 0 0 0 0 0 )) NATURAL) (6 ((421 178) (412 145) (396 115) (373 85) (361 74) (346 59)) NIL ((-7.85167409 -34.186599 0 0 -6.88995267 7.1196165 ) (-11.2966499 -30.626792 -6.88995267 7.1196165 -7.5502367 -17.598083 ) (-21.961719 -32.306213 -14.440189 -10.4784679 37.090904 45.27272 ) (-17.856456 -20.148323 22.650714 34.794258 -32.813392 -49.49282 ) (-11.61244 -10.100477 -10.1626777 -14.698564 10.1626777 14.698564 )) NATURAL) (2 ((346 59) (424 0)) NIL ((78. -59. 0 0 0 0 )) NATURAL) (2 ((424 0) (352 0)) NIL ((-72. 0 0 0 0 0 )) NATURAL) (2 ((352 0) (309 32)) NIL ((-43. 32. 0 0 0 0 )) NATURAL) (12 ((309 32) (270 11) (228 -2) (163 -8) (105 0) (63 18) (37 45) (28 84) (40 124) (64 150) (94 168) (129 183)) NIL ((-39.917266 -22.867206 0 0 5.50363159 11.2032489 ) (-37.16545 -17.265583 5.50363159 11.2032489 -45.518158 -8.0162468 ) (-54.420906 -10.070457 -40.014526 3.18700123 56.569015 14.861742 ) (-66.150909 0.547416330 16.554489 18.048744 -0.757925034 -9.4307308 ) (-49.975395 13.880794 15.796564 8.61801339 0.462682724 -1.13881588 ) (-33.947486 21.929401 16.2592468 7.4791975 -1.09281921 7.98599148 ) (-18.234645 33.401596 15.166427 15.4651889 9.90859605 -12.805143 ) (1.88607931 42.46421 25.075023 2.66004515 -14.5415477 -22.765411 ) (19.690326 33.741546 10.5334758 -20.105369 -5.74240303 13.866802 ) (27.3526 20.56958 4.79107285 -6.23856736 1.51115894 3.29820967 ) (32.899253 15.9801178 6.30223179 -2.94035768 -6.30223179 2.94035768 )) NATURAL)) ((10 ((277 52) (243 38) (192 25) (147 26) (111 37) (86 53) (72 82) (81 112) (105 133) (150 157)) NIL ((-29.138164 -13.446022 0 0 -29.170993 -3.32386208 ) (-43.723663 -15.107954 -29.170993 -3.32386208 43.854972 22.619308 ) (-50.96717 -7.12215996 14.683979 19.295448 -8.2489071 -9.15338517 ) (-40.407638 7.59659577 6.43507195 10.142063 7.14065743 -10.0057678 ) (-30.40224 12.735775 13.575729 0.136293560 -8.3137245 19.176464 ) (-20.983375 22.460304 5.26200485 19.312759 26.114242 -18.700103 ) (-2.66424894 32.423004 31.376247 0.612653733 -24.143245 -16.376026 ) (16.640373 24.847648 7.23299885 -15.763374 22.458747 24.204216 ) (35.102745 21.186382 29.691749 8.44084359 -29.691749 -8.44084359 )) NATURAL) (2 ((150 157) (277 52)) NIL ((127. -105. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 47Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 14:38:09) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((8 ((210 197) (203 223) (195 248) (188 273) (185 296) (187 313) (199 331) (220 338)) NIL ((-6.72208787 26.270351 0 0 -1.66746807 -1.62212276 ) (-7.55582238 25.459289 -1.66746807 -1.62212276 2.33734083 2.1106143 ) (-8.05461885 24.892475 0.669872761 0.488491952 4.31810379 -0.820336819 ) (-5.2256956 24.970798 4.98797703 -0.331844926 -1.60975694 -10.8292656 ) (-1.04259658 19.224319 3.37822008 -11.1611118 8.12091828 20.137405 ) (6.39608384 18.131912 11.4991397 8.97629548 -0.873926163 -27.720367 ) (17.458259 13.248024 10.6252136 -18.7440719 -10.6252136 18.7440719 )) NATURAL) (8 ((220 338) (241 331) (253 313) (255 296) (252 273) (245 248) (237 223) (230 197)) NIL ((22.770866 -3.875988 0 0 -10.6252136 -18.7440719 ) (17.458259 -13.248024 -10.6252136 -18.7440719 -0.873926163 27.720367 ) (6.39608288 -18.131912 -11.4991397 8.97629548 8.12091828 -20.137409 ) (-1.04259729 -19.224319 -3.37822008 -11.1611137 -1.60975599 10.829267 ) (-5.2256956 -24.970798 -4.98797608 -0.331844509 4.31810284 0.820336342 ) (-8.05461885 -24.892475 -0.669872761 0.488491833 2.33734083 -2.1106143 ) (-7.55582238 -25.459289 1.66746831 -1.62212276 -1.66746831 1.62212276 )) NATURAL) (2 ((230 197) (210 197)) NIL ((-20. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 50Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 14:40:32) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((2 ((304 350) (256 350)) NIL ((-48. 0 0 0 0 0 )) NATURAL) (11 ((256 350) (226 328) (190 291) (160 250) (140 202) (127 121) (139 40) (161 -8) (190 -49) (226 -86) (256 -108)) NIL ((-28.149116 -18.291866 0 0 -11.105289 -22.248802 ) (-33.701759 -29.416267 -11.105289 -22.248802 19.526447 21.244014 ) (-35.043823 -41.04306 8.42115785 -1.00478410 4.99949837 3.2727251 ) (-24.12292 -40.411483 13.420656 2.267941 -15.5244369 -52.334915 ) (-18.464481 -64.311004 -2.10378218 -50.066978 39.098243 50.066978 ) (-1.01913643 -89.34448 36.994468 0 -32.868583 50.066978 ) (19.541038 -64.310989 4.1258812 50.066978 2.37611484 -52.334915 ) (24.854976 -40.411476 6.50199605 -2.26794243 5.3641386 3.27272701 ) (34.039039 -41.04306 11.8661346 1.00478482 -23.832664 21.244014 ) (33.988838 -29.416267 -11.9665317 22.248802 11.9665317 -22.248802 )) NATURAL) (2 ((256 -108) (304 -108)) NIL ((48. 0 0 0 0 0 )) NATURAL) (11 ((304 -108) (274 -86) (238 -49) (210 -8) (187 40) (175 121) (189 202) (208 250) (238 291) (274 328) (304 350)) NIL ((-27.892368 18.291866 0 0 -12.6457729 22.248802 ) (-34.215255 29.416267 -12.6457729 22.248802 27.22887 -21.244014 ) (-33.246589 41.04306 14.583097 1.00478410 -12.269714 -3.2727251 ) (-24.798355 40.411483 2.3133831 -2.267941 3.84998512 52.334915 ) (-20.559978 64.311004 6.16336823 50.066978 32.869773 -50.066978 ) (2.03827906 89.34448 39.033142 0 -45.3291 -50.066978 ) (18.406868 64.310989 -6.29596043 -50.066978 22.446659 52.334915 ) (23.334239 40.411476 16.150699 2.26794243 -8.45755387 -3.27272701 ) (35.256164 41.04306 7.69314576 -1.00478482 -18.616432 -21.244014 ) (33.64109 29.416267 -10.923286 -22.248802 10.923286 22.248802 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 51Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 14:42:07) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((11 ((126 350) (156 328) (192 291) (222 250) (241 202) (255 121) (243 40) (220 -8) (192 -49) (156 -86) (126 -108)) NIL ((28.17945 -18.291866 0 0 10.923286 -22.248802 ) (33.64109 -29.416267 10.923286 -22.248802 -18.616432 21.244014 ) (35.256164 -41.04306 -7.69314576 -1.00478410 -8.45755769 3.2727251 ) (23.334239 -40.411483 -16.150703 2.267941 22.446666 -52.334915 ) (18.406868 -64.311004 6.29596425 -50.066978 -45.329109 50.066978 ) (2.03827715 -89.34448 -39.033149 0 32.86978 50.066978 ) (-20.559978 -64.310989 -6.16336537 50.066978 3.84998179 -52.334915 ) (-24.798355 -40.411476 -2.31338358 -2.26794243 -12.269712 3.27272701 ) (-33.246589 -41.04306 -14.583097 1.00478482 27.22887 21.244014 ) (-34.215255 -29.416267 12.6457748 22.248802 -12.6457748 -22.248802 )) NATURAL) (2 ((126 -108) (174 -108)) NIL ((48. 0 0 0 0 0 )) NATURAL) (11 ((174 -108) (204 -86) (240 -49) (269 -8) (291 40) (303 121) (290 202) (270 250) (240 291) (204 328) (174 350)) NIL ((28.005577 18.291866 0 0 11.9665336 22.248802 ) (33.988838 29.416267 11.9665336 22.248802 -23.832668 -21.244014 ) (34.039039 41.04306 -11.8661346 1.00478410 5.36413956 -3.2727251 ) (24.854976 40.411483 -6.50199509 -2.267941 2.37611198 52.334915 ) (19.541038 64.311004 -4.1258831 50.066978 -32.868583 -50.066978 ) (-1.01914072 89.34448 -36.994468 0 39.098243 -50.066978 ) (-18.464481 64.310989 2.10378218 -50.066978 -15.5244369 52.334915 ) (-24.12292 40.411476 -13.420656 2.26794243 4.99949837 -3.27272701 ) (-35.043823 41.04306 -8.42115785 -1.00478482 19.526447 -21.244014 ) (-33.701759 29.416267 11.105289 -22.248802 -11.105289 22.248802 )) NATURAL) (2 ((174 350) (126 350)) NIL ((-48. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 52Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 14:50:44) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((49 ((225 98) (205 106) (196 133) (202 169) (218 201) (186 185) (159 162) (132 150) (105 157) (93 184) (111 202) (144 209) (203 218) (144 227) (111 234) (93 252) (105 279) (132 286) (159 274) (186 251) (218 235) (202 267) (196 303) (205 330) (225 338) (245 330) (254 303) (248 267) (232 235) (264 251) (291 274) (318 286) (345 279) (357 252) (339 234) (306 227) (247 218) (306 209) (339 202) (357 184) (345 157) (318 150) (291 162) (264 185) (232 201) (248 169) (254 133) (245 106) (225 98)) NIL ((-22.53239 0.0906766206 0.746076346 11.4537448 12.9561367 13.094705 ) (-15.308248 18.091774 13.702213 24.54845 -3.25714302 -20.196006 ) (-3.23460579 32.54222 10.44507 4.3524437 24.072422 7.68932534 ) (19.246673 40.739326 34.517494 12.041769 -123.0325 -88.561279 ) (-7.7521 8.50045587 -88.515045 -76.519516 120.0577 82.5558 ) (-36.238273 -26.741153 31.542694 6.03629685 -39.198417 4.33803749 ) (-24.294792 -18.535835 -7.65572835 10.374334 6.73594475 8.09202767 ) (-28.582546 -4.11548805 -0.919782878 18.466362 12.254642 11.293846 ) (-23.375007 19.997795 11.3348598 29.760208 34.245483 -47.267402 ) (5.08259297 26.124298 45.580345 -17.507198 -59.236595 3.77578545 ) (21.044639 10.504995 -13.65625 -13.7314129 112.70089 20.164264 ) (63.738838 6.85571576 99.044647 6.43285275 -325.5669 -6.43285275 ) (5.08129596E-6 10.0721416 -226.5223 0 325.5669 -6.43285275 ) (-63.738838 6.8557148 99.044647 -6.43285275 -112.70089 20.164264 ) (-21.044639 10.504995 -13.6562519 13.7314129 59.2366 3.77578545 ) (-5.0825901 26.124301 45.580352 17.507198 -34.245513 -47.26741 ) (23.375003 19.997791 11.3348369 -29.760215 -12.254545 11.293884 ) (28.582569 -4.11548043 -0.919708253 -18.466331 -6.7362957 8.0918808 ) (24.294712 -18.535869 -7.65600396 -10.3744506 39.199722 4.33859158 ) (36.23857 -26.741024 31.543724 -6.0358591 -120.0626 82.55374 ) (7.75098897 8.49999238 -88.51889 76.51788 123.0507 -88.5536 ) (-19.24253 40.741066 34.531845 -12.0357227 -24.140338 7.6607275 ) (3.21914434 32.535705 10.391504 -4.37499523 3.51062012 -20.08929 ) (15.365957 18.116069 13.902124 -24.464286 -13.902124 12.69643 ) (22.31702 0 -5.11072471E-7 -11.7678566 -13.90212 -12.69643 ) (15.365957 -18.116069 -13.902122 -24.464286 3.5106144 20.089286 ) (3.21914196 -32.535713 -10.391508 -4.37499714 -24.140327 -7.6607256 ) (-19.24253 -40.741066 -34.531837 -12.0357227 123.0507 88.5536 ) (7.75099564 -8.49998284 88.518875 76.51788 -120.06259 -82.55374 ) (36.23857 26.741027 -31.543724 -6.035861 39.199722 -4.33858967 ) (24.294712 18.535869 7.6560049 -10.3744506 -6.73629666 -8.0918808 ) (28.582569 4.11547947 0.919708014 -18.466331 -12.254543 -11.293884 ) (23.375003 -19.997791 -11.3348369 -29.760215 -34.245513 47.26741 ) (-5.08259106 -26.124298 -45.580352 17.507198 59.2366 -3.77578545 ) (-21.044643 -10.504995 13.6562538 13.7314129 -112.70089 -20.164264 ) (-63.738838 -6.85571576 -99.044647 -6.43285275 325.5669 6.43285275 ) (-5.08129596E-6 -10.0721416 226.5223 0 -325.5669 6.43285275 ) (63.738838 -6.8557148 -99.044647 6.43285275 112.70089 -20.164264 ) (21.044639 -10.504995 13.65625 -13.7314129 -59.236595 -3.77578545 ) (5.08259106 -26.124298 -45.580345 -17.507198 34.245483 47.267402 ) (-23.375011 -19.997795 -11.334856 29.760204 12.2546367 -11.293842 ) (-28.582546 4.11548996 0.919782162 18.466362 6.7359457 -8.09202767 ) (-24.294792 18.535839 7.65572835 10.374334 -39.198417 -4.33804226 ) (-36.238273 26.741149 -31.542694 6.03629208 120.0577 -82.555786 ) (-7.75209904 -8.50045968 88.515045 -76.5195 -123.0325 88.56126 ) (19.246673 -40.739326 -34.517494 12.041765 24.072422 -7.6893215 ) (-3.2346077 -32.54222 -10.44507 4.3524437 -3.25714302 20.196006 ) (-15.308248 -18.091774 -13.702213 24.54845 12.9561367 -13.094705 )) PSEUDOCYCLIC)))) ((FAMILY gacha) (CHARACTER 53Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 15:00:01) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((2 ((195 28) (245 28)) NIL ((50. 0 0 0 0 0 )) NATURAL) (2 ((245 28) (245 143)) NIL ((0 115. 0 0 0 0 )) NATURAL) (2 ((245 143) (360 143)) NIL ((115. 0 0 0 0 0 )) NATURAL) (2 ((360 143) (360 193)) NIL ((0 50. 0 0 0 0 )) NATURAL) (2 ((360 193) (245 193)) NIL ((-115. 0 0 0 0 0 )) NATURAL) (2 ((245 193) (245 308)) NIL ((0 115. 0 0 0 0 )) NATURAL) (2 ((245 308) (195 308)) NIL ((-50. 0 0 0 0 0 )) NATURAL) (2 ((195 308) (195 193)) NIL ((0 -115. 0 0 0 0 )) NATURAL) (2 ((195 193) (80 193)) NIL ((-115. 0 0 0 0 0 )) NATURAL) (2 ((80 193) (80 143)) NIL ((0 -50. 0 0 0 0 )) NATURAL) (2 ((80 143) (195 143)) NIL ((115. 0 0 0 0 0 )) NATURAL) (2 ((195 143) (195 28)) NIL ((0 -115. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 54Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 15:04:46) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((20 ((218 -3) (205 -3) (185 9) (175 29) (181 49) (195 61) (213 66) (241 61) (255 50) (263 29) (259 -9) (247 -32) (234 -44) (215 -53) (186 -57) (170 -49) (177 -36) (195 -31) (215 -21) (218 -3)) NIL ((-10.673479 -2.67581272 0 0 -13.959116 16.054878 ) (-17.653038 5.3516264 -13.959116 16.054878 27.795578 -8.27439309 ) (-17.714363 17.269306 13.8364639 7.7804842 4.77679062 -6.95730019 ) (-1.48950290 21.57114 18.613254 0.823183776 -10.902744 -11.896402 ) (11.672378 16.446121 7.7105093 -11.073219 -9.1658039 6.54291535 ) (14.7999859 8.6443615 -1.4552958 -4.53030396 23.565967 -8.275259 ) (25.127674 -0.0235718079 22.110672 -12.8055629 -49.09806 8.5581188 ) (22.689312 -8.55007554 -26.987392 -4.2474432 28.826297 -1.95721721 ) (10.115068 -13.7761268 1.83890605 -6.2046604 -18.207134 -24.729248 ) (2.8504076 -32.345413 -16.3682289 -30.93391 8.00223924 58.874214 ) (-9.51670075 -33.842216 -8.36598969 27.940307 10.198177 -18.767623 ) (-12.7836017 -15.2857189 1.83218932 9.1726837 -6.7949562 -7.80373 ) (-14.34889 -10.0149 -4.9627676 1.3689537 -13.0183487 1.98254585 ) (-25.820835 -7.65467358 -17.981117 3.35149956 34.868362 11.8735466 ) (-26.367767 1.63359928 16.887249 15.225046 11.544872 -7.47673417 ) (-3.70808268 13.120277 28.43212 7.748312 -21.047866 -23.966606 ) (14.2001037 8.8852844 7.3842535 -16.218296 0.646611214 25.343174 ) (21.907661 5.3385763 8.0308647 9.12487985 -35.538574 0.593898773 ) (12.169237 14.760406 -27.507713 9.7187786 27.507713 -9.7187786 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 55Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 15:07:38) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((2 ((320 193) (120 193)) NIL ((-200. 0 0 0 0 0 )) NATURAL) (2 ((120 193) (120 143)) NIL ((0 -50. 0 0 0 0 )) NATURAL) (2 ((120 143) (320 143)) NIL ((200. 0 0 0 0 0 )) NATURAL) (2 ((320 143) (320 193)) NIL ((0 50. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 56Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 15:10:01) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((13 ((218 63) (231 61) (251 49) (261 29) (251 9) (231 -3) (218 -5) (205 -3) (185 9) (175 29) (185 49) (205 61) (218 63)) NIL ((10.989046 -0.181750595 -0.894697548 1.09114074 14.749813 -14.182918 ) (17.469253 -6.18206978 13.8551159 -13.0917778 -26.380886 4.36775208 ) (18.133926 -17.089969 -12.52577 -8.7240257 -11.226255 8.71190835 ) (-0.00497087091 -21.458042 -23.752025 -0.0121169965 11.285902 8.78460885 ) (-18.114044 -17.077854 -12.466123 8.77249337 26.082653 4.14965058 ) (-17.538841 -6.2305355 13.616529 12.9221439 -13.616529 -13.3832149 ) (-10.730577 9.96515154E-8 0 -0.461072266 -13.616529 13.3832149 ) (-17.538841 6.23053647 -13.616529 12.9221439 26.082653 -4.14965058 ) (-18.114044 17.077854 12.466123 8.77249337 11.285898 -8.78460885 ) (-0.00496927649 21.458042 23.752021 -0.0121165085 -11.2262497 -8.71190835 ) (18.133926 17.089969 12.525772 -8.7240257 -26.380889 -4.36775208 ) (17.469253 6.18206883 -13.8551178 -13.0917778 14.749815 14.182918 )) PSEUDOCYCLIC)))) ((FAMILY gacha) (CHARACTER 57Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 15:11:04) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((2 ((73 0) (321 337)) NIL ((248. 337. 0 0 0 0 )) NATURAL) (2 ((321 337) (369 337)) NIL ((48. 0 0 0 0 0 )) NATURAL) (2 ((369 337) (121 0)) NIL ((-248. -337. 0 0 0 0 )) NATURAL) (2 ((121 0) (73 0)) NIL ((-48. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 73Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 15:15:21) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((13 ((219 232) (206 230) (186 218) (176 198) (186 178) (206 166) (219 164) (232 166) (252 178) (262 198) (252 218) (232 230) (219 232)) NIL ((-10.989046 -0.181750595 0.894697548 1.09114074 -14.749813 -14.182918 ) (-17.469253 -6.18206978 -13.8551159 -13.0917778 26.380886 4.36775208 ) (-18.133926 -17.089969 12.52577 -8.7240257 11.226255 8.71190835 ) (0.00497087091 -21.458042 23.752025 -0.0121169965 -11.285902 8.78460885 ) (18.114044 -17.077854 12.466123 8.77249337 -26.082653 4.14965058 ) (17.538841 -6.2305355 -13.616529 12.9221439 13.616529 -13.3832149 ) (10.730577 9.96515154E-8 0 -0.461072266 13.616529 13.3832149 ) (17.538841 6.23053647 13.616529 12.9221439 -26.082653 -4.14965058 ) (18.114044 17.077854 -12.466123 8.77249337 -11.285898 -8.78460885 ) (0.00496927649 21.458042 -23.752021 -0.0121165085 11.2262497 -8.71190835 ) (-18.133926 17.089969 -12.525772 -8.7240257 26.380889 -4.36775208 ) (-17.469253 6.18206883 13.8551178 -13.0917778 -14.749815 14.182918 )) PSEUDOCYCLIC)) ((20 ((218 -3) (215 -21) (195 -31) (177 -36) (170 -49) (186 -57) (215 -53) (234 -44) (247 -32) (259 -9) (263 29) (255 50) (241 61) (213 66) (195 61) (181 49) (175 29) (185 9) (205 -3) (218 -3)) NIL ((1.58461880 -19.619796 0 0 -27.507713 9.7187805 ) (-12.169239 -14.760406 -27.507713 9.7187805 35.538574 -0.593902588 ) (-21.907661 -5.3385763 8.0308647 9.1248779 -0.646611214 -25.343174 ) (-14.2001037 -8.88528634 7.3842535 -16.218296 21.047866 23.966606 ) (3.70808458 -13.120277 28.43212 7.748312 -11.544872 7.47673417 ) (26.367767 -1.63359856 16.887249 15.225046 -34.86837 -11.8735466 ) (25.820831 7.65467358 -17.981121 3.35149956 13.018354 -1.98254537 ) (14.34889 10.0149 -4.9627657 1.36895418 6.7949543 7.80372716 ) (12.7836017 15.2857208 1.8321886 9.1726818 -10.198175 18.767623 ) (9.51670075 33.842208 -8.36598779 27.940307 -8.00224114 -58.874214 ) (-2.85040808 32.345413 -16.3682289 -30.93391 18.207134 24.729248 ) (-10.115068 13.7761268 1.83890652 -6.20466138 -28.826297 1.95721817 ) (-22.689312 8.5500736 -26.987392 -4.2474432 49.09806 -8.5581188 ) (-25.127674 0.0235716477 22.110672 -12.8055629 -23.565967 8.275259 ) (-14.7999859 -8.6443615 -1.45529556 -4.53030396 9.1658039 -6.54291535 ) (-11.672378 -16.446121 7.7105093 -11.073219 10.902744 11.896402 ) (1.48950433 -21.57114 18.613254 0.823183776 -4.77679062 6.95730019 ) (17.714363 -17.269306 13.8364639 7.7804842 -27.795578 8.27439309 ) (17.653038 -5.35162544 -13.959116 16.054878 13.959116 -16.054878 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 72Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 20-SEP-77 15:16:21) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((7 ((219 164) (206 166) (186 178) (176 198) (186 218) (206 230) (219 232)) NIL ((-10.730768 -0.133333206 0 0 -13.615383 12.799999 ) (-17.538459 6.2666664 -13.615383 12.799999 26.076919 -4. ) (-18.115383 17.066665 12.461538 8.79999925 11.3076915 -8.79999925 ) (6.37024641E-7 21.466663 23.769229 0 -11.307693 -8.79999925 ) (18.115383 17.066665 12.461536 -8.79999925 -26.076919 -4. ) (17.538459 6.2666664 -13.615383 -12.799999 13.615383 12.799999 )) NATURAL) (7 ((219 232) (232 230) (252 218) (262 198) (252 178) (232 166) (219 164)) NIL ((10.730768 0.133333206 0 0 13.615383 -12.799999 ) (17.538459 -6.2666664 13.615383 -12.799999 -26.076919 4. ) (18.115383 -17.066665 -12.461538 -8.79999925 -11.3076915 8.79999925 ) (-6.37024641E-7 -21.466663 -23.769229 0 11.307693 8.79999925 ) (-18.115383 -17.066665 -12.461536 8.79999925 26.076919 4. ) (-17.538459 -6.2666664 13.615383 12.799999 -13.615383 -12.799999 )) NATURAL)) ((7 ((219 -3) (206 -1) (186 11) (176 31) (186 51) (206 63) (219 65)) NIL ((-10.730768 -0.133333206 0 0 -13.615383 12.799999 ) (-17.538459 6.2666664 -13.615383 12.799999 26.076919 -4. ) (-18.115383 17.066665 12.461538 8.79999925 11.3076915 -8.79999925 ) (6.37024641E-7 21.466663 23.769229 0 -11.307693 -8.79999925 ) (18.115383 17.066665 12.461536 -8.79999925 -26.076919 -4. ) (17.538459 6.2666664 -13.615383 -12.799999 13.615383 12.799999 )) NATURAL) (7 ((219 65) (232 63) (252 51) (262 31) (252 11) (232 -1) (219 -3)) NIL ((10.730768 0.133333206 0 0 13.615383 -12.799999 ) (17.538459 -6.2666664 13.615383 -12.799999 -26.076919 4. ) (18.115383 -17.066665 -12.461538 -8.79999925 -11.3076915 8.79999925 ) (-6.37024641E-7 -21.466663 -23.769229 0 11.307693 8.79999925 ) (-18.115383 -17.066665 -12.461536 8.79999925 26.076919 4. ) (-17.538459 -6.2666664 13.615383 12.799999 -13.615383 -12.799999 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 45Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 21-SEP-77 8:31:26) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((17 ((118 338) (159 333) (186 321) (201 303) (207 277) (201 251) (186 233) (159 221) (118 216) (78 221) (51 233) (36 251) (30 277) (36 303) (51 321) (78 333) (118 338)) NIL ((43.632125 -0.0974335671 1.31016326 -11.476913 -19.723274 5.01534176 ) (35.08065 -9.0666752 -18.413112 -6.4615717 6.75541115 1.78477382 ) (20.045242 -14.63586 -11.657701 -4.67679787 4.70163059 -6.1544361 ) (10.7383575 -22.389877 -6.9560709 -10.8312339 -7.56193638 10.832973 ) (0.00131877139 -27.804622 -14.518007 0.00173969077 7.5461092 10.8225345 ) (-10.743633 -22.391616 -6.97189809 10.8242759 -4.62250042 -6.1231203 ) (-20.026783 -14.6289 -11.594398 4.70115566 -7.05610657 1.66994285 ) (-35.14923 -9.09277345 -18.650505 6.3710985 20.846931 5.4433527 ) (-43.376274 0 2.19642639 11.814451 13.668373 -5.44335366 ) (-34.345657 9.09277345 15.864799 6.37109757 -3.52042198 -1.66994095 ) (-20.241073 14.6289 12.344377 4.70115662 -5.5866909 6.12311745 ) (-10.6900406 22.391616 6.7576866 10.824274 7.8671856 -10.8225326 ) (0.00123898312 27.804622 14.624872 0.00174020207 -7.8820505 -10.832975 ) (10.685085 22.389877 6.7428217 -10.8312358 5.6610155 6.154438 ) (20.258415 14.63586 12.403837 -4.67679787 3.23799324 -1.78477382 ) (34.281242 9.0666752 15.64183 -6.4615717 -12.6129837 -5.01534176 )) PSEUDOCYCLIC)) ((13 ((318 25) (342 29) (364 43) (370 61) (364 79) (342 93) (318 96) (294 93) (272 79) (266 61) (272 43) (294 29) (318 25)) NIL ((24.01675 0.0585110932 -1.65684819 5.3434658 4.87002945 7.618536 ) (24.794918 9.21124459 3.2131815 12.9620018 -26.409057 -10.1534767 ) (14.803571 17.096508 -23.195877 2.80852413 16.766201 -3.00462341 ) (-0.00920486450 18.402717 -6.42967606 -0.196099460 -16.655742 -1.82802653 ) (-14.766752 17.292606 -23.085418 -2.02412605 25.856773 -13.683267 ) (-24.923782 8.42684747 2.77135515 -15.707393 -2.77135515 14.56109 ) (-23.538105 -8.00937414E-8 -1.27768117E-7 -1.14630294 -2.7713542 -14.56109 ) (-24.923782 -8.42684747 -2.77135467 -15.707393 25.856773 13.6832657 ) (-14.766752 -17.292606 23.085418 -2.02412653 -16.655742 1.82802701 ) (-0.00920422748 -18.402717 6.42967606 -0.196099311 16.766197 3.00462294 ) (14.803571 -17.096508 23.195873 2.80852365 -26.409053 10.1534767 ) (24.794918 -9.21124459 -3.21318102 12.9620018 4.8700285 -7.61853696 )) PSEUDOCYCLIC)) ((2 ((324 337) (73 0)) NIL ((-251. -337. 0 0 0 0 )) NATURAL) (3 ((73 0) (73 0) (118 0)) NIL ((-11.25 0 0 0 67.5 0 ) (22.5 0 67.5 0 -67.5 0 )) NATURAL) (2 ((118 0) (369 337)) NIL ((251. 337. 0 0 0 0 )) NATURAL) (2 ((369 337) (324 337)) NIL ((-45. 0 0 0 0 0 )) NATURAL)) ((17 ((319 122) (360 117) (387 105) (402 87) (408 61) (402 35) (387 17) (360 5) (319 0) (279 5) (252 17) (237 35) (231 61) (237 87) (252 105) (279 117) (319 122)) NIL ((43.632125 -0.0974335671 1.31016326 -11.476913 -19.723274 5.01534176 ) (35.08065 -9.0666752 -18.413112 -6.4615717 6.75541115 1.78477382 ) (20.045242 -14.63586 -11.657701 -4.67679787 4.70163059 -6.1544361 ) (10.7383575 -22.389877 -6.9560709 -10.8312339 -7.56193638 10.832973 ) (0.00131877139 -27.804622 -14.518007 0.00173969077 7.5461092 10.8225345 ) (-10.743633 -22.391616 -6.97189809 10.8242759 -4.62250042 -6.1231203 ) (-20.026783 -14.6289 -11.594398 4.70115566 -7.05610657 1.66994285 ) (-35.14923 -9.09277345 -18.650505 6.3710985 20.846931 5.4433527 ) (-43.376274 0 2.19642639 11.814451 13.668373 -5.44335366 ) (-34.345657 9.09277345 15.864799 6.37109757 -3.52042198 -1.66994095 ) (-20.241073 14.6289 12.344377 4.70115662 -5.5866909 6.12311745 ) (-10.6900406 22.391616 6.7576866 10.824274 7.8671856 -10.8225326 ) (0.00123898312 27.804622 14.624872 0.00174020207 -7.8820505 -10.832975 ) (10.685085 22.389877 6.7428217 -10.8312358 5.6610155 6.154438 ) (20.258415 14.63586 12.403837 -4.67679787 3.23799324 -1.78477382 ) (34.281242 9.0666752 15.64183 -6.4615717 -12.6129837 -5.01534176 )) PSEUDOCYCLIC)) ((13 ((118 312) (142 309) (164 295) (170 277) (164 259) (142 245) (118 241) (94 245) (72 259) (66 277) (72 295) (94 309) (118 312)) NIL ((23.538459 -0.330866456 0 0 2.76922989 -16.014801 ) (24.923076 -8.33826829 2.76922989 -16.014801 -25.846149 14.074016 ) (14.769228 -17.316059 -23.076919 -1.94078445 16.615379 1.71872663 ) (-6.37024641E-7 -18.39748 -6.4615383 -0.222057670 -16.615379 3.0510726 ) (-14.7692318 -17.094001 -23.076919 2.82901525 25.846149 10.0769786 ) (-24.923076 -9.22649766 2.76923036 12.905994 -2.76922989 -7.35899258 ) (-23.538459 3.18512320E-7 2.55536235E-7 5.54700184 -2.76923132 7.35899258 ) (-24.923076 9.22649766 -2.76923132 12.905994 25.846153 -10.0769786 ) (-14.7692299 17.094001 23.076923 2.82901478 -16.6153869 -3.05107212 ) (6.37024641E-7 18.39748 6.4615364 -0.222057640 16.6153869 -1.71872687 ) (14.7692299 17.316059 23.076923 -1.94078469 -25.846153 -14.074014 ) (24.923076 8.33826638 -2.76923084 -16.014801 2.76923084 16.014801 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 44Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 21-SEP-77 9:30:26) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((2 ((236 364) (236 344)) NIL ((0 -20. 0 0 0 0 )) NATURAL) (7 ((236 344) (277 339) (309 330) (331 320) (348 309) (363 291) (367 260)) NIL ((42.793586 -4. 0 0 -10.7615375 -6. ) (37.412818 -7. -10.7615375 -6. -0.192308426 6. ) (26.555126 -9.9999981 -10.9538459 6.81195899E-8 5.5307703 -3.23568030E-7 ) (18.366664 -10. -5.42307568 -2.55448469E-7 8.0692272 -5.9999981 ) (16.978202 -13. 2.6461525 -5.99999905 -19.807685 -12. ) (9.72051049 -25. -17.161533 -18. 17.161533 18. )) NATURAL) (2 ((367 260) (329 260)) NIL ((-38. 0 0 0 0 0 )) NATURAL) (6 ((329 260) (324 280) (312 294) (288 305) (261 312) (236 316)) NIL ((-3.91866016 21.454544 0 0 -6.488039 -8.72727204 ) (-7.16267968 17.090908 -6.488039 -8.72727204 -9.5598049 7.63636208 ) (-18.430622 12.181818 -16.0478439 -1.09090924 14.727268 -3.81818056 ) (-27.11483 9.1818161 -1.32057404 -4.90909004 4.65071678 1.63636303 ) (-26.110046 5.090909 3.33014345 -3.27272701 -3.33014345 3.27272701 )) NATURAL) (2 ((236 316) (236 197)) NIL ((0 -119. 0 0 0 0 )) NATURAL) (11 ((236 197) (280 187) (313 177) (342 161) (366 136) (376 92) (370 55) (346 27) (313 9) (274 -1) (236 -6)) NIL ((46.700439 -10.36273 0 0 -16.202648 2.17638588 ) (38.599113 -9.27453805 -16.202648 2.17638588 15.013242 -10.881929 ) (29.903087 -12.5391159 -1.18940448 -8.7055435 -1.85032797 5.3513317 ) (27.78852 -18.568992 -3.03973246 -3.35421133 -13.6119308 -28.523391 ) (17.942817 -36.184898 -16.651664 -31.877605 2.29807663 48.74224 ) (2.44018984 -43.691383 -14.353588 16.864639 -7.58037568 -10.4455948 ) (-15.703586 -32.049545 -21.933963 6.41904355 16.023418 5.0401411 ) (-29.625843 -23.110427 -5.9105444 11.4591846 -2.51330852 -3.71496868 ) (-36.793037 -13.508728 -8.4238529 7.74421597 12.0298156 -2.18027019 ) (-39.20198 -6.8546486 3.60596323 5.56394577 -3.60596323 -5.56394577 )) NATURAL) (2 ((236 -6) (236 -35)) NIL ((0 -29. 0 0 0 0 )) NATURAL) (2 ((236 -35) (192 -35)) NIL ((-44. 0 0 0 0 0 )) NATURAL) (2 ((192 -35) (192 -6)) NIL ((0 29. 0 0 0 0 )) NATURAL) (6 ((192 -6) (141 -4) (99 8) (75 23) (55 49) (46 85)) NIL ((-52.143539 -0.626794100 0 0 6.8612442 15.760765 ) (-48.712913 7.2535877 6.8612442 15.760765 19.693779 -18.803825 ) (-32.004783 13.61244 26.555023 -3.04306173 -31.63636 17.45454 ) (-21.26794 19.296649 -5.08133984 14.4114818 22.851673 -3.0143528 ) (-14.9234447 32.20095 17.770336 11.397129 -17.770336 -11.397129 )) NATURAL) (2 ((46 85) (90 85)) NIL ((44. 0 0 0 0 0 )) NATURAL) (6 ((90 85) (93 69) (103 49) (127 33) (162 25) (192 22)) NIL ((1.89473676 -14.770334 0 0 6.63157845 -7.37798978 ) (5.21052647 -18.459327 6.63157845 -7.37798978 8.84210588 12.8899498 ) (16.2631569 -19.392341 15.473684 5.51196099 -1.90734863E-6 3.81818199 ) (31.736839 -11.9712906 15.473682 9.33014298 -26.842102 -4.16267872 ) (33.789466 -4.72248745 -11.3684196 5.16746426 11.3684196 -5.16746426 )) NATURAL) (2 ((192 22) (192 159)) NIL ((0 137. 0 0 0 0 )) NATURAL) (11 ((192 159) (151 173) (118 185) (93 197) (70 219) (61 263) (73 296) (94 315) (124 331) (160 341) (192 344)) NIL ((-42.561904 14.467121 0 0 9.37145997 -2.80273056 ) (-37.876174 13.0657558 9.37145997 -2.80273056 1.14269447 2.01365328 ) (-27.933368 11.2698516 10.514154 -0.789076925 -13.9422378 6.74811555 ) (-24.390335 13.854833 -3.4280839 5.95903874 18.626262 30.993877 ) (-18.505283 35.310806 15.198179 36.952919 11.437181 -58.72363 ) (2.41148281 42.901908 26.63536 -21.770717 -22.374977 5.900671 ) (17.859352 24.081527 4.26038075 -15.870046 6.06273175 17.120952 ) (25.1511 16.771957 10.323112 1.25090599 -1.87594414 -8.38448144 ) (34.536239 13.830625 8.44716836 -7.13357545 -16.5589599 -1.5830307 ) (34.703926 5.90553475 -8.1117916 -8.71660615 8.1117916 8.71660615 )) NATURAL) (2 ((192 344) (192 364)) NIL ((0 20. 0 0 0 0 )) NATURAL) (2 ((192 364) (236 364)) NIL ((44. 0 0 0 0 0 )) NATURAL)) ((2 ((192 316) (192 212)) NIL ((0 -104. 0 0 0 0 )) NATURAL) (9 ((192 212) (160 221) (133 229) (109 243) (103 266) (115 290) (134 304) (161 312) (192 316)) NIL ((-33.384933 9.54270936 0 0 8.3096447 -3.25625897 ) (-29.230114 7.9145794 8.3096447 -3.25625897 -11.548229 10.2812957 ) (-26.694583 9.79896928 -3.238585 7.0250368 25.883277 4.13107395 ) (-16.991527 18.889541 22.644695 11.1561107 -1.98490143 -8.8055935 ) (4.66071415 25.642856 20.659793 2.35051584 -17.943664 -16.908687 ) (16.348674 19.539024 2.71612644 -14.558174 7.75957204 10.440353 ) (22.944587 10.2010288 10.475698 -4.11781979 -7.09462357 -0.852724076 ) (29.872974 5.65684796 3.3810749 -4.97054386 -3.3810749 4.97054386 )) NATURAL)) ((10 ((236 143) (268 135) (301 125) (326 111) (339 86) (333 61) (313 41) (286 31) (262 26) (236 23)) NIL ((31.306991 -7.5433216 0 0 4.15804672 -2.74006653 ) (33.386009 -8.91335488 4.15804672 -2.74006653 -14.790233 1.70033264 ) (30.148944 -10.803255 -10.6321869 -1.03973388 1.00288772 -16.061264 ) (20.018199 -19.873619 -9.62929917 -17.1009979 -13.221313 20.544723 ) (3.77824688 -26.702255 -22.850612 3.44372892 9.88235665 -0.117646694 ) (-14.131187 -23.317348 -12.968256 3.32608223 3.69189644 9.92585755 ) (-25.253494 -15.028337 -9.27635957 13.2519397 17.350055 -9.58579064 ) (-25.854827 -6.56929303 8.07369615 3.66614914 -13.092119 -1.58268642 ) (-24.32719 -3.69448757 -5.01842404 2.08346271 5.01842404 -2.08346271 )) NATURAL) (2 ((236 23) (236 143)) NIL ((0 120. 0 0 0 0 )) NATURAL)))) STOP \ No newline at end of file diff --git a/obsolete/lispusers/splinefonts/GACHAE.S2-SF b/obsolete/lispusers/splinefonts/GACHAE.S2-SF deleted file mode 100644 index e293c5ed..00000000 --- a/obsolete/lispusers/splinefonts/GACHAE.S2-SF +++ /dev/null @@ -1 +0,0 @@ - ((FAMILY gacha) (CHARACTER 74Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 21-SEP-77 7:22:05) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((2 ((60 169) (312 0)) NIL ((252. -169. 0 0 0 0 )) NATURAL) (2 ((312 0) (372 0)) NIL ((60. 0 0 0 0 0 )) NATURAL) (2 ((372 0) (120 169)) NIL ((-252. 169. 0 0 0 0 )) NATURAL) (2 ((120 169) (370 337)) NIL ((250. 168. 0 0 0 0 )) NATURAL) (2 ((370 337) (310 337)) NIL ((-60. 0 0 0 0 0 )) NATURAL) (2 ((310 337) (60 169)) NIL ((-250. -168. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 75Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 21-SEP-77 7:22:46) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((2 ((82 148) (82 148)) NIL ((0 0 0 0 0 0 )) NATURAL)) ((2 ((82 148) (357 148)) NIL ((275. 0 0 0 0 0 )) NATURAL) (2 ((357 148) (357 108)) NIL ((0 -40. 0 0 0 0 )) NATURAL) (2 ((357 108) (82 108)) NIL ((-275. 0 0 0 0 0 )) NATURAL) (2 ((82 108) (82 148)) NIL ((0 40. 0 0 0 0 )) NATURAL)) ((2 ((82 190) (357 190)) NIL ((275. 0 0 0 0 0 )) NATURAL) (2 ((357 190) (357 230)) NIL ((0 40. 0 0 0 0 )) NATURAL) (2 ((357 230) (82 230)) NIL ((-275. 0 0 0 0 0 )) NATURAL) (2 ((82 230) (82 190)) NIL ((0 -40. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 76Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 21-SEP-77 7:24:09) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((2 ((370 169) (118 0)) NIL ((-252. -169. 0 0 0 0 )) NATURAL) (2 ((118 0) (58 0)) NIL ((-60. 0 0 0 0 0 )) NATURAL) (2 ((58 0) (310 169)) NIL ((252. 169. 0 0 0 0 )) NATURAL) (2 ((310 169) (60 337)) NIL ((-250. 168. 0 0 0 0 )) NATURAL) (2 ((60 337) (120 337)) NIL ((60. 0 0 0 0 0 )) NATURAL) (2 ((120 337) (370 169)) NIL ((250. -168. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 77Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 21-SEP-77 7:35:10) (MADE-FROM gacha.cu 0 140 0 0) (SPLINES ((13 ((248 24) (243 6) (228 -9) (204 -14) (180 -9) (165 6) (160 24) (165 42) (180 57) (204 62) (228 57) (243 42) (248 24)) NIL ((-2.93116188 -18.230766 0 0 -12.4130268 1.38461542 ) (-9.13767625 -17.538459 -12.4130268 1.38461542 2.06513786 11.076921 ) (-20.518135 -10.615383 -10.3478889 12.461538 10.152477 -3.69230843 ) (-25.789783 3.18512320E-7 -0.195410430 8.7692299 11.3249416 3.69230843 ) (-20.322723 10.615383 11.1295318 12.461538 -1.45225525 -11.076921 ) (-9.91931916 17.538459 9.6772766 1.38461518 0.484085083 -1.38461518 ) (3.18512320E-7 18.230766 10.1613617 -1.91652190E-7 -0.484086990 -1.38461423 ) (9.91931916 17.538459 9.6772747 -1.38461446 1.45225715 -11.076923 ) (20.322723 10.615383 11.1295318 -12.461538 -11.3249416 3.69230843 ) (25.789783 -3.18512320E-7 -0.195410639 -8.7692299 -10.152477 -3.69230843 ) (20.518131 -10.615383 -10.3478889 -12.461538 -2.06513786 11.076921 ) (9.13767434 -17.538459 -12.4130268 -1.38461518 12.4130268 1.38461518 )) NATURAL)) ((18 ((76 258) (82 281) (100 310) (141 337) (184 345) (222 347) (265 344) (301 336) (330 322) (351 301) (358 272) (351 242) (325 219) (291 200) (256 185) (234 163) (230 120) (230 82)) NIL ((4.36275196 21.588817 0 0 9.8234863 8.46708489 ) (9.27449418 25.82236 9.8234863 8.46708489 22.882568 -6.33543015 ) (30.539264 31.12173 32.706054 2.13165474 -35.353759 -31.125358 ) (45.568435 17.690704 -2.64770508 -28.993705 -7.4675293 28.836875 ) (39.186965 3.11543942 -10.115234 -0.156827688 23.223876 -6.22215367 ) (40.68367 -0.152465343 13.108642 -6.3789816 -25.427978 2.05173683 ) (41.078323 -5.505579 -12.3193378 -4.32724476 6.48805333 -1.9847908 ) (32.003013 -10.825218 -5.83128453 -6.31203557 -0.524238587 -0.112575531 ) (25.909606 -17.193542 -6.3555231 -6.4246111 -10.391092 -3.56490803 ) (14.358539 -25.400604 -16.746616 -9.9895191 6.0886116 8.3722038 ) (0.656227112 -31.20402 -10.6580047 -1.61731481 -13.963348 12.0760917 ) (-16.983448 -26.78329 -24.621353 10.458778 19.764766 -8.6765785 ) (-31.722419 -20.662803 -4.85658455 1.78219914 0.904281617 4.63022518 ) (-36.12686 -16.56549 -3.95230293 6.41242505 18.618099 -9.8443241 ) (-30.770114 -15.075229 14.665796 -3.43189907 8.6233196 -31.252922 ) (-11.7926578 -34.13359 23.289115 -34.684822 -23.111393 50.856025 ) (-0.0592400506 -43.390396 0.177720159 16.171203 -0.177720159 -16.171203 )) NATURAL) (2 ((230 82) (178 82)) NIL ((-52. 0 0 0 0 0 )) NATURAL) (9 ((178 82) (176 130) (179 173) (191 195) (215 207) (241 217) (277 231) (300 247) (306 274)) NIL ((-2.93114853 48.008277 0 0 5.58689213 -0.0497055054 ) (-0.137702286 47.983429 5.58689213 -0.0497055054 2.06553745 -29.751472 ) (6.4819584 33.057983 7.65242959 -29.801178 10.150957 23.055595 ) (19.209865 14.7846088 17.803386 -6.74558068 -24.669364 3.52908611 ) (24.678569 9.8035698 -6.86597825 -3.21649456 28.526504 10.828054 ) (32.075843 12.001104 21.660526 7.6115608 -41.43666 -10.8413086 ) (33.018035 14.1920089 -19.776138 -3.2297492 -0.779823304 20.537181 ) (12.8519859 21.230854 -20.555961 17.307434 20.555961 -17.307434 )) NATURAL) (8 ((306 274) (300 293) (276 312) (234 318) (202 317) (155 308) (133 281) (128 258)) NIL ((-2.76743364 18.186187 0 0 -19.395397 4.88285733 ) (-12.4651317 20.627616 -19.395397 4.88285733 -11.023014 -24.414283 ) (-37.372032 13.303329 -30.41841 -19.531429 63.487457 14.774301 ) (-36.046714 1.15905142 33.069046 -4.7571268 -74.926818 1.31707191 ) (-40.441085 -2.9395399 -41.85778 -3.44005489 86.219848 -26.042594 ) (-39.188934 -19.40089 44.362075 -29.48265 -29.952594 42.853309 ) (-9.8031597 -27.456886 14.409479 13.3706627 -14.409479 -13.3706627 )) NATURAL) (2 ((128 258) (76 258)) NIL ((-52. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 100Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 21-SEP-77 7:41:59) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((25 ((274 84) (315 89) (349 101) (378 127) (388 169) (382 261) (346 310) (312 329) (274 340) (222 346) (169 340) (132 329) (97 310) (61 261) (49 169) (61 77) (99 29) (132 9) (169 -2) (222 -8) (273 -1) (312 10) (339 25) (357 40) (372 65)) NIL ((42.841934 4.12846947 0 0 -11.051645 5.22917843 ) (37.316116 6.74305916 -11.051645 5.22917843 13.25823 15.8541069 ) (32.893585 19.899292 2.2065854 21.083286 -29.98128 -26.645618 ) (20.109527 27.659767 -27.774696 -5.562335 22.666904 102.72837 ) (3.66828489 73.461624 -5.10779095 97.166046 -42.686332 -180.2678 ) (-22.782672 80.49371 -47.794128 -83.101837 64.07843 60.343216 ) (-38.537582 27.563484 16.284305 -22.758621 -21.627391 16.8949508 ) (-33.066978 13.252338 -5.3430872 -5.8636694 -13.568861 4.07696724 ) (-45.194496 9.42715455 -18.911949 -1.78670144 15.902847 -15.202821 ) (-56.15502 0.0390407219 -3.00910091 -16.9895248 27.957454 14.734329 ) (-45.185394 -9.5833187 24.948356 -2.25519466 -25.732685 -1.7344985 ) (-33.103378 -12.7057628 -0.784330249 -3.98969317 -9.0267067 -25.796333 ) (-38.401062 -29.593627 -9.81103707 -29.786029 43.839515 -27.080135 ) (-26.292339 -72.91972 34.02848 -56.866165 -16.33139 56.116867 ) (-0.429553986 -101.7274 17.69709 -0.749291659 21.486053 60.612625 ) (28.010566 -72.170425 39.183143 59.863334 -57.61283 -34.567375 ) (38.38729 -29.590789 -18.429687 25.295959 22.96529 -18.343135 ) (31.440254 -13.466398 4.53560543 6.95282174 19.751655 -6.06007004 ) (45.851684 -9.5436115 24.287262 0.892751694 -29.971923 18.583416 ) (55.152984 0.640850663 -5.68466473 19.476169 -7.86394025 -20.273609 ) (45.536346 9.98021318 -13.5486049 -0.797443152 1.42769622 8.51104165 ) (32.70159 13.438291 -12.1209087 7.71360016 2.15315056 -13.770559 ) (21.65726 14.266613 -9.96775819 -6.0569601 7.9596977 22.571197 ) (15.669353 19.49525 -2.00806045 16.51424 2.00806045 -16.51424 )) NATURAL) (2 ((372 65) (326 65)) NIL ((-46. 0 0 0 0 0 )) NATURAL) (13 ((326 65) (310 43) (285 30) (260 22) (223 17) (194 19) (167 25) (140 37) (120 53) (103 82) (98 111) (96 143) (95 169)) NIL ((-13.31982 -24.077533 0 0 -16.0810699 12.4652157 ) (-21.360355 -17.8449249 -16.0810699 12.4652157 26.405349 -8.32608224 ) (-24.23875 -9.5427513 10.3242817 4.1391325 -35.540336 -3.16088247 ) (-31.684639 -6.98406029 -25.21606 0.978249670 43.756027 8.96961595 ) (-35.022682 -1.52100181 18.53997 9.94786645 -19.483806 -8.7175865 ) (-26.224617 4.0680704 -0.943838716 1.23027920 -1.82078004 7.90073395 ) (-28.078846 9.24871636 -2.76461887 9.13101388 14.766931 -10.885349 ) (-23.459995 12.937055 12.0023136 -1.75433612 -15.246952 23.640663 ) (-19.081157 23.003051 -3.24463844 21.886329 22.220874 -29.677307 ) (-11.2153568 30.050727 18.976238 -7.79098035 -19.636566 17.068573 ) (-2.05740309 30.794033 -0.660330892 9.2775936 2.32541323 -20.596992 ) (-1.55502748 29.773132 1.66508269 -11.3193988 -1.66508269 11.3193988 )) NATURAL) (9 ((95 169) (96 195) (98 227) (103 256) (120 285) (140 301) (167 313) (194 319) (223 321)) NIL ((0.722201824 24.113586 0 0 1.66678905 11.318481 ) (1.55559635 29.772827 1.66678905 11.318481 -2.33394575 -20.592411 ) (2.05541229 30.7951 -0.667156935 -9.2739315 19.668994 17.051174 ) (11.222753 30.046756 19.001838 7.7772455 -22.34204 -29.612293 ) (19.053569 23.017852 -3.34020567 -21.835048 15.699186 23.398006 ) (23.562957 12.881811 12.358982 1.56295967 -16.454708 -9.97974778 ) (27.694583 9.454895 -4.09572888 -8.4167881 8.11966134 4.52098465 ) (27.658687 3.29860067 4.02393246 -3.89580298 -4.02393246 3.89580298 )) NATURAL) (7 ((223 321) (252 319) (279 313) (306 301) (326 285) (343 256) (348 227)) NIL ((29.670509 -1.34871792 0 0 -4.02307606 -3.90769243 ) (27.658973 -3.30256414 -4.02307606 -3.90769243 8.11538316 -4.46153736 ) (27.693588 -9.44102479 4.09230709 -8.36923028 -16.438457 9.7538433 ) (23.566665 -12.933332 -12.346153 1.38461446 15.63846 -22.55384 ) (19.039741 -22.825641 3.29230738 -21.169227 -22.115379 26.461532 ) (11.2743568 -30.764099 -18.823074 5.2923069 18.823074 -5.2923069 )) NATURAL) (12 ((348 227) (324 241) (300 250) (262 253) (217 242) (192 227) (174 204) (166 168) (181 124) (204 103) (231 91) (274 84)) NIL ((-24.775428 15.165264 0 0 4.6525793 -6.99158669 ) (-22.449138 11.6694698 4.6525793 -6.99158669 -23.262893 4.95793438 ) (-29.428009 7.1568508 -18.610317 -2.0336523 4.3990097 -18.8401489 ) (-45.83882 -4.2968769 -14.211307 -20.873802 47.666854 22.402671 ) (-36.216697 -13.969343 33.45555 1.52886963 -33.066444 -10.770544 ) (-19.294372 -17.825744 0.389100015 -9.2416744 6.59894753 -3.32049179 ) (-15.605798 -28.727664 6.9880476 -12.562166 24.670658 -5.9474926 ) (3.71757555 -44.26358 31.658706 -18.509658 -27.281574 57.110458 ) (21.735492 -34.218002 4.37713242 38.600799 -5.54436779 -36.494346 ) (23.340442 -13.8643818 -1.16723537 2.10645246 25.459041 4.86693383 ) (34.902725 -9.32446099 24.291809 6.97338677 -24.291809 -6.97338677 )) NATURAL)) ((21 ((203 170) (205 183) (211 201) (225 217) (249 226) (270 229) (291 226) (315 217) (329 201) (335 183) (337 170) (335 157) (329 139) (315 123) (291 114) (270 111) (249 114) (225 123) (211 139) (205 157) (203 170)) NIL ((1.29664564 11.627071 0 0 4.2201252 8.2375679 ) (3.40670824 15.745855 4.2201252 8.2375679 2.89937305 -11.187843 ) (9.076519 18.389499 7.11949826 -2.95027637 8.18238069 -5.48618603 ) (20.287208 12.6961307 15.3018799 -8.4364624 -23.628898 3.13259506 ) (23.774639 5.82596588 -8.32702066 -5.30386734 8.33322335 -1.04419803 ) (19.614231 -3.18512320E-7 0.00620389823 -6.34806538 8.29599954 1.04419803 ) (23.768432 -5.82596684 8.30220414 -5.30386734 -23.517223 -3.13259506 ) (20.312023 -12.6961326 -15.215021 -8.4364624 7.772912 5.48618603 ) (8.98345948 -18.389499 -7.4421091 -2.9502759 4.42556858 11.187843 ) (3.75413466 -15.745855 -3.01654005 8.2375679 -1.47518968 -8.2375679 ) (-8.00937414E-8 -11.627071 -4.49172974 0 1.47518968 -8.2375679 ) (-3.75413513 -15.745855 -3.01654005 -8.2375679 -4.42556763 11.187843 ) (-8.98345948 -18.389499 -7.44210816 2.95027685 -7.77291489 5.48618508 ) (-20.312023 -12.6961307 -15.215023 8.4364624 23.517227 -3.13259506 ) (-23.768432 -5.82596588 8.30220414 5.30386734 -8.29599954 1.04419803 ) (-19.614231 1.59256160E-7 0.00620390940 6.34806538 -8.33322335 -1.04419708 ) (-23.774639 5.82596684 -8.32702066 5.3038683 23.628898 3.1325941 ) (-20.287208 12.6961326 15.3018779 8.4364624 -8.18237878 -5.48618603 ) (-9.076519 18.389499 7.11949826 2.9502759 -2.89937305 -11.187843 ) (-3.40670824 15.745855 4.2201252 -8.2375679 -4.2201252 8.2375679 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 133Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 21-SEP-77 7:43:08) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((2 ((346 351) (94 351)) NIL ((-252. 0 0 0 0 0 )) NATURAL) (2 ((94 351) (94 -112)) NIL ((0 -463. 0 0 0 0 )) NATURAL) (2 ((94 -112) (346 -112)) NIL ((252. 0 0 0 0 0 )) NATURAL) (2 ((346 -112) (346 -76)) NIL ((0 36. 0 0 0 0 )) NATURAL) (2 ((346 -76) (141 -76)) NIL ((-205. 0 0 0 0 0 )) NATURAL) (2 ((141 -76) (141 315)) NIL ((0 391. 0 0 0 0 )) NATURAL) (2 ((141 315) (346 315)) NIL ((205. 0 0 0 0 0 )) NATURAL) (2 ((346 315) (346 351)) NIL ((0 36. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 134Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 21-SEP-77 7:44:28) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((2 ((117 337) (370 0)) NIL ((253. -337. 0 0 0 0 )) NATURAL) (2 ((370 0) (322 0)) NIL ((-48. 0 0 0 0 0 )) NATURAL) (2 ((322 0) (69 337)) NIL ((-253. 337. 0 0 0 0 )) NATURAL) (2 ((69 337) (117 337)) NIL ((48. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 135Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 21-SEP-77 7:45:24) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((2 ((346 351) (94 351)) NIL ((-252. 0 0 0 0 0 )) NATURAL) (2 ((94 351) (94 315)) NIL ((0 -36. 0 0 0 0 )) NATURAL) (2 ((94 315) (299 315)) NIL ((205. 0 0 0 0 0 )) NATURAL) (2 ((299 315) (299 -76)) NIL ((0 -391. 0 0 0 0 )) NATURAL) (2 ((299 -76) (94 -76)) NIL ((-205. 0 0 0 0 0 )) NATURAL) (2 ((94 -76) (94 -112)) NIL ((0 -36. 0 0 0 0 )) NATURAL) (2 ((94 -112) (346 -112)) NIL ((252. 0 0 0 0 0 )) NATURAL) (2 ((346 -112) (346 351)) NIL ((0 463. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 136Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 21-SEP-77 7:48:17) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((2 ((219 302) (71 183)) NIL ((-148. -119. 0 0 0 0 )) NATURAL) (2 ((71 183) (121 183)) NIL ((50. 0 0 0 0 0 )) NATURAL) (2 ((121 183) (198 239)) NIL ((77. 56. 0 0 0 0 )) NATURAL) (2 ((198 239) (198 42)) NIL ((0 -197. 0 0 0 0 )) NATURAL) (2 ((198 42) (240 42)) NIL ((42. 0 0 0 0 0 )) NATURAL) (2 ((240 42) (240 239)) NIL ((0 197. 0 0 0 0 )) NATURAL) (2 ((240 239) (316 183)) NIL ((76. -56. 0 0 0 0 )) NATURAL) (2 ((316 183) (366 183)) NIL ((50. 0 0 0 0 0 )) NATURAL) (2 ((366 183) (219 302)) NIL ((-147. 119. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 137Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 21-SEP-77 7:49:20) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((2 ((22 169) (198 285)) NIL ((176. 116. 0 0 0 0 )) NATURAL) (2 ((198 285) (198 233)) NIL ((0 -52. 0 0 0 0 )) NATURAL) (2 ((198 233) (130 191)) NIL ((-68. -42. 0 0 0 0 )) NATURAL) (2 ((130 191) (411 191)) NIL ((281. 0 0 0 0 0 )) NATURAL) (2 ((411 191) (411 147)) NIL ((0 -44. 0 0 0 0 )) NATURAL) (2 ((411 147) (130 147)) NIL ((-281. 0 0 0 0 0 )) NATURAL) (2 ((130 147) (198 105)) NIL ((68. -42. 0 0 0 0 )) NATURAL) (2 ((198 105) (198 53)) NIL ((0 -52. 0 0 0 0 )) NATURAL) (2 ((198 53) (22 169)) NIL ((-176. 116. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 173Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 21-SEP-77 7:53:08) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((7 ((313 351) (284 348) (250 338) (224 326) (205 311) (191 293) (182 259)) NIL ((-27.201278 -1.20512819 0 0 -10.7923069 -10.7692299 ) (-32.597435 -6.5897436 -10.7923069 -10.7692299 23.961536 11.846151 ) (-31.408973 -11.4358959 13.169229 1.07692265 -7.0538454 -6.61538315 ) (-21.766666 -13.666666 6.1153841 -5.53846073 -1.74615383 8.61538316 ) (-16.5243568 -14.897436 4.36923027 3.07692337 2.03846168 -27.846153 ) (-11.1358966 -25.743587 6.40769196 -24.769229 -6.40769196 24.769229 )) NATURAL) (2 ((182 259) (182 179)) NIL ((0 -80. 0 0 0 0 )) NATURAL) (6 ((182 179) (176 162) (154 142) (130 133) (103 128) (79 126)) NIL ((-1.78468942 -15.4688987 0 0 -25.291862 -9.18660165 ) (-14.430622 -20.062198 -25.291862 -9.18660165 30.459323 27.93301 ) (-24.49282 -15.282295 5.1674633 18.74641 -12.545452 -18.545452 ) (-25.598083 -5.80861187 -7.37798978 0.200957238 13.722486 4.24880219 ) (-26.11483 -3.483253 6.34449769 4.44975949 -6.34449769 -4.44975949 )) NATURAL) (2 ((79 126) (79 106)) NIL ((0 -20. 0 0 0 0 )) NATURAL) (6 ((79 106) (103 104) (130 99) (154 90) (176 70) (182 53)) NIL ((22.942581 -1.25837326 0 0 6.34449673 -4.44976044 ) (26.11483 -3.48325348 6.34449673 -4.44976044 -13.722486 4.24880314 ) (25.598083 -5.80861187 -7.37798978 -0.200957209 12.545454 -18.545452 ) (24.49282 -15.282297 5.16746426 -18.74641 -30.459327 27.933013 ) (14.430622 -20.062198 -25.291866 9.18660356 25.291866 -9.18660356 )) NATURAL) (2 ((182 53) (182 -27)) NIL ((0 -80. 0 0 0 0 )) NATURAL) (7 ((182 -27) (191 -61) (205 -79) (224 -94) (250 -106) (284 -116) (313 -119)) NIL ((7.9320507 -38.128204 0 0 6.40769196 24.769229 ) (11.1358966 -25.743587 6.40769196 24.769229 -2.03846168 -27.846149 ) (16.5243568 -14.897434 4.36923027 -3.07692242 1.74615478 8.61538316 ) (21.766666 -13.666666 6.11538506 5.53846073 7.05384446 -6.61538315 ) (31.408973 -11.4358959 13.169229 -1.07692289 -23.961536 11.846151 ) (32.597435 -6.58974267 -10.7923069 10.7692299 10.7923069 -10.7692299 )) NATURAL) (2 ((313 -119) (332 -119)) NIL ((19. 0 0 0 0 0 )) NATURAL) (2 ((332 -119) (332 -83)) NIL ((0 36. 0 0 0 0 )) NATURAL) (2 ((332 -83) (307 -83)) NIL ((-25. 0 0 0 0 0 )) NATURAL) (5 ((307 -83) (276 -78) (255 -69) (237 -54) (229 -29)) NIL ((-33.642852 4.17857075 0 0 15.857141 4.92857075 ) (-25.714283 6.6428566 15.857141 4.92857075 -19.285709 -0.642856598 ) (-19.5 11.25 -3.42857075 4.28571415 19.285709 9.6428566 ) (-13.285713 20.357139 15.857141 13.9285717 -15.857141 -13.9285717 )) NATURAL) (2 ((229 -29) (229 41)) NIL ((0 70. 0 0 0 0 )) NATURAL) (6 ((229 41) (223 63) (210 84) (195 96) (180 106) (157 116)) NIL ((-4.30622006 21.660285 0 0 -10.1626777 2.03827715 ) (-9.3875599 22.679424 -10.1626777 2.03827715 8.81339456 -16.191383 ) (-15.143539 16.622005 -1.34928202 -14.153108 4.90909004 14.72727 ) (-14.038276 9.8325348 3.55980825 0.574162603 -16.449756 -0.717703223 ) (-18.703346 10.0478458 -12.8899517 -0.143540680 12.8899517 0.143540680 )) NATURAL) (6 ((157 116) (180 126) (195 136) (210 148) (223 169) (229 191)) NIL ((25.148323 9.9760761 0 0 -12.8899517 0.143540561 ) (18.703346 10.0478458 -12.8899517 0.143540561 16.449756 -0.717702747 ) (14.038276 9.8325348 3.55980825 -0.574162245 -4.90909004 14.72727 ) (15.143539 16.622009 -1.3492825 14.153108 -8.81339456 -16.191383 ) (9.38755799 22.679424 -10.1626777 -2.03827715 10.1626777 2.03827715 )) NATURAL) (2 ((229 191) (229 261)) NIL ((0 70. 0 0 0 0 )) NATURAL) (5 ((229 261) (237 286) (255 301) (276 310) (307 315)) NIL ((5.35714245 27.321426 0 0 15.857141 -13.9285698 ) (13.285713 20.357139 15.857141 -13.9285698 -19.285709 9.6428547 ) (19.5 11.249998 -3.42857075 -4.28571415 19.285709 -0.642856598 ) (25.714283 6.6428566 15.857141 -4.92857075 -15.857141 4.92857075 )) NATURAL) (2 ((307 315) (332 315)) NIL ((25. 0 0 0 0 0 )) NATURAL) (2 ((332 315) (332 351)) NIL ((0 36. 0 0 0 0 )) NATURAL) (2 ((332 351) (313 351)) NIL ((-19. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 174Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 21-SEP-77 7:54:25) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((2 ((195 351) (195 -112)) NIL ((0 -463. 0 0 0 0 )) NATURAL) (2 ((195 -112) (246 -112)) NIL ((51. 0 0 0 0 0 )) NATURAL) (2 ((246 -112) (246 351)) NIL ((0 463. 0 0 0 0 )) NATURAL) (2 ((246 351) (195 351)) NIL ((-51. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 175Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 21-SEP-77 7:58:20) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((2 ((139 351) (158 351)) NIL ((19. 0 0 0 0 0 )) NATURAL) (7 ((158 351) (187 348) (221 338) (247 326) (266 311) (280 293) (289 259)) NIL ((27.201278 -1.20512819 0 0 10.7923069 -10.7692299 ) (32.597435 -6.5897436 10.7923069 -10.7692299 -23.961536 11.846151 ) (31.408973 -11.4358959 -13.169229 1.07692265 7.0538454 -6.61538315 ) (21.766666 -13.666666 -6.1153841 -5.53846073 1.74615383 8.61538316 ) (16.5243568 -14.897436 -4.36923027 3.07692337 -2.03846168 -27.846153 ) (11.1358966 -25.743587 -6.40769196 -24.769229 6.40769196 24.769229 )) NATURAL) (2 ((289 259) (289 179)) NIL ((0 -80. 0 0 0 0 )) NATURAL) (6 ((289 179) (295 162) (317 142) (341 133) (368 128) (392 126)) NIL ((1.78468942 -15.4688987 0 0 25.291862 -9.18660165 ) (14.430622 -20.062198 25.291862 -9.18660165 -30.459323 27.93301 ) (24.49282 -15.282295 -5.1674633 18.74641 12.545452 -18.545452 ) (25.598083 -5.80861187 7.37798978 0.200957238 -13.722486 4.24880219 ) (26.11483 -3.483253 -6.34449769 4.44975949 6.34449769 -4.44975949 )) NATURAL) (2 ((392 126) (392 106)) NIL ((0 -20. 0 0 0 0 )) NATURAL) (6 ((392 106) (368 104) (341 99) (317 90) (295 70) (289 53)) NIL ((-22.942581 -1.25837326 0 0 -6.34449673 -4.44976044 ) (-26.11483 -3.48325348 -6.34449673 -4.44976044 13.722486 4.24880314 ) (-25.598083 -5.80861187 7.37798978 -0.200957209 -12.545454 -18.545452 ) (-24.49282 -15.282297 -5.16746426 -18.74641 30.459327 27.933013 ) (-14.430622 -20.062198 25.291866 9.18660356 -25.291866 -9.18660356 )) NATURAL) (2 ((289 53) (289 -27)) NIL ((0 -80. 0 0 0 0 )) NATURAL) (7 ((289 -27) (280 -61) (266 -79) (247 -94) (221 -106) (187 -116) (158 -119)) NIL ((-7.9320507 -38.128204 0 0 -6.40769196 24.769229 ) (-11.1358966 -25.743587 -6.40769196 24.769229 2.03846168 -27.846149 ) (-16.5243568 -14.897434 -4.36923027 -3.07692242 -1.74615478 8.61538316 ) (-21.766666 -13.666666 -6.11538506 5.53846073 -7.05384446 -6.61538315 ) (-31.408973 -11.4358959 -13.169229 -1.07692289 23.961536 11.846151 ) (-32.597435 -6.58974267 10.7923069 10.7692299 -10.7923069 -10.7692299 )) NATURAL) (2 ((158 -119) (139 -119)) NIL ((-19. 0 0 0 0 0 )) NATURAL) (2 ((139 -119) (139 -83)) NIL ((0 36. 0 0 0 0 )) NATURAL) (2 ((139 -83) (164 -83)) NIL ((25. 0 0 0 0 0 )) NATURAL) (5 ((164 -83) (195 -78) (216 -69) (234 -54) (242 -29)) NIL ((33.642852 4.17857075 0 0 -15.857141 4.92857075 ) (25.714283 6.6428566 -15.857141 4.92857075 19.285709 -0.642856598 ) (19.5 11.25 3.42857075 4.28571415 -19.285709 9.6428566 ) (13.285713 20.357139 -15.857141 13.9285717 15.857141 -13.9285717 )) NATURAL) (2 ((242 -29) (242 41)) NIL ((0 70. 0 0 0 0 )) NATURAL) (6 ((242 41) (248 63) (261 84) (276 96) (291 106) (314 116)) NIL ((4.30622006 21.660285 0 0 10.1626777 2.03827715 ) (9.3875599 22.679424 10.1626777 2.03827715 -8.81339456 -16.191383 ) (15.143539 16.622005 1.34928202 -14.153108 -4.90909004 14.72727 ) (14.038276 9.8325348 -3.55980825 0.574162603 16.449756 -0.717703223 ) (18.703346 10.0478458 12.8899517 -0.143540680 -12.8899517 0.143540680 )) NATURAL) (6 ((314 116) (291 126) (276 136) (261 148) (248 169) (242 191)) NIL ((-25.148323 9.9760761 0 0 12.8899517 0.143540561 ) (-18.703346 10.0478458 12.8899517 0.143540561 -16.449756 -0.717702747 ) (-14.038276 9.8325348 -3.55980825 -0.574162245 4.90909004 14.72727 ) (-15.143539 16.622009 1.3492825 14.153108 8.81339456 -16.191383 ) (-9.38755799 22.679424 10.1626777 -2.03827715 -10.1626777 2.03827715 )) NATURAL) (2 ((242 191) (242 261)) NIL ((0 70. 0 0 0 0 )) NATURAL) (5 ((242 261) (234 286) (216 301) (195 310) (164 315)) NIL ((-5.35714245 27.321426 0 0 -15.857141 -13.9285698 ) (-13.285713 20.357139 -15.857141 -13.9285698 19.285709 9.6428547 ) (-19.5 11.249998 3.42857075 -4.28571415 -19.285709 -0.642856598 ) (-25.714283 6.6428566 -15.857141 -4.92857075 15.857141 4.92857075 )) NATURAL) (2 ((164 315) (139 315)) NIL ((-25. 0 0 0 0 0 )) NATURAL) (2 ((139 315) (139 351)) NIL ((0 36. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 176Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 21-SEP-77 8:03:50) (MADE-FROM gachalc.cu 0 140 0 0) (SPLINES ((2 ((70 84) (30 84)) NIL ((-40. 0 0 0 0 0 )) NATURAL) (13 ((30 84) (39 111) (55 131) (76 147) (106 158) (144 161) (184 156) (222 142) (249 131) (286 122) (327 124) (356 145) (366 161)) NIL ((7.34924794 28.65084 0 0 9.9045086 -9.9050579 ) (12.301502 23.69831 9.9045086 -9.9050579 -7.5225458 7.52529336 ) (18.444736 17.5559 2.3819623 -2.37976408 8.18567658 -2.19611978 ) (24.91954 14.078077 10.56764 -4.57588387 -1.22017288 -4.7408142 ) (34.87709 7.1317854 9.3474674 -9.31669808 -9.30498506 3.15938091 ) (39.572067 -0.605221987 0.0424815491 -6.15731717 2.44012308 -7.8967161 ) (40.83461 -10.710897 2.48260498 -14.054033 -24.455505 22.427482 ) (31.089466 -13.551187 -21.9729 8.37345124 41.381904 -9.8132267 ) (29.807518 -10.0843486 19.409004 -1.43977689 -15.07213 10.8254299 ) (41.680458 -6.1114111 4.33687306 9.38565446 -17.093372 20.511505 ) (37.470642 13.5299949 -12.7565 29.897159 -12.5543709 -44.871444 ) (18.436954 20.991428 -25.31087 -14.9742908 25.31087 14.9742908 )) NATURAL) (2 ((366 161) (406 161)) NIL ((40. 0 0 0 0 0 )) NATURAL) (7 ((406 161) (397 134) (381 114) (360 98) (330 87) (292 84) (252 89)) NIL ((-7.3487177 -28.653842 0 0 -9.90769197 9.9230766 ) (-12.3025627 -23.692306 -9.90769197 9.9230766 7.53846074 -7.6153841 ) (-18.441024 -17.576919 -2.36923075 2.30769205 -8.24615098 2.5384612 ) (-24.93333 -13.999998 -10.615383 4.84615326 1.44615364 3.46153832 ) (-34.825637 -7.42307664 -9.1692295 8.30769158 8.4615364 1.61538505 ) (-39.764099 1.69230771 -0.707692385 9.9230766 0.707692385 -9.9230766 )) NATURAL) (7 ((252 89) (214 103) (187 114) (150 123) (109 121) (80 100) (70 84)) NIL ((-41.551277 14.767948 0 0 21.307689 -4.60769177 ) (-30.897434 12.4641018 21.307689 -4.60769177 -40.538452 5.03846073 ) (-29.858974 10.3756408 -19.230766 0.430769324 14.846151 -9.546154 ) (-41.666664 6.03333283 -4.38461495 -9.11538507 17.1538429 -20.853843 ) (-37.474357 -13.508974 12.7692299 -29.96923 12.5384597 44.961532 ) (-18.435894 -20.997432 25.307689 14.992307 -25.307689 -14.992307 )) NATURAL)))) STOP \ No newline at end of file diff --git a/obsolete/lispusers/splinefonts/GACHAE.UC1-SF b/obsolete/lispusers/splinefonts/GACHAE.UC1-SF deleted file mode 100644 index 9cc43ef0..00000000 --- a/obsolete/lispusers/splinefonts/GACHAE.UC1-SF +++ /dev/null @@ -1 +0,0 @@ - ((FAMILY gacha) (CHARACTER 101Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 10:14:09) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((2 ((25 0) (157 337)) NIL ((132. 337. 0 0 0 0 )) NATURAL) (2 ((157 337) (280 337)) NIL ((123. 0 0 0 0 0 )) NATURAL) (2 ((280 337) (412 0)) NIL ((132. -337. 0 0 0 0 )) NATURAL) (2 ((412 0) (359 0)) NIL ((-53. 0 0 0 0 0 )) NATURAL) (2 ((359 0) (321 98)) NIL ((-38. 98. 0 0 0 0 )) NATURAL) (2 ((321 98) (116 98)) NIL ((-205. 0 0 0 0 0 )) NATURAL) (2 ((116 98) (78 0)) NIL ((-38. -98. 0 0 0 0 )) NATURAL) (2 ((78 0) (25 0)) NIL ((-53. 0 0 0 0 0 )) NATURAL)) ((2 ((305 141) (132 141)) NIL ((-173. 0 0 0 0 0 )) NATURAL) (2 ((132 141) (194 301)) NIL ((62. 160. 0 0 0 0 )) NATURAL) (2 ((194 301) (243 301)) NIL ((49. 0 0 0 0 0 )) NATURAL) (2 ((243 301) (305 141)) NIL ((62. -160. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 102Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 10:21:33) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((3 ((60 337) (60 337) (60 0)) NIL ((0 84.25 0 0 0 -505.5 ) (0 -168.5 0 -505.5 0 505.5 )) NATURAL) (2 ((60 0) (225 0)) NIL ((165. 0 0 0 0 0 )) NATURAL) (11 ((225 0) (268 5) (307 15) (340 32) (364 59) (376 97) (370 132) (355 154) (339 167) (312 178) (283 185)) NIL ((43.77365 4.02735329 0 0 -4.64191437 5.83587933 ) (41.45269 6.94529343 -4.64191437 5.83587933 -0.790425301 0.820601464 ) (36.415565 13.191473 -5.43233967 6.6564808 -4.19638348 2.88171577 ) (28.885032 21.28881 -9.62872315 9.53819657 -0.424039841 5.65253067 ) (19.044288 33.653274 -10.052763 15.190727 -12.107458 -19.491832 ) (2.9377985 39.098083 -22.160221 -4.3011055 12.85387 -11.6851997 ) (-12.795486 28.954376 -9.3063507 -15.986305 14.691978 6.2326393 ) (-14.7558479 16.084388 5.3856287 -9.7536659 -23.621791 10.754642 ) (-21.181118 11.7080478 -18.236164 1.00097775 19.795204 -7.25122166 ) (-29.51968 9.08341409 1.5590415 -6.25024415 -1.5590415 6.25024415 )) NATURAL) (12 ((283 185) (318 199) (336 212) (349 227) (358 254) (352 287) (338 306) (319 319) (297 328) (279 332) (256 335) (225 337)) NIL ((39.205406 14.229002 0 0 -25.232437 -1.37401437 ) (26.589183 13.541994 -25.232437 -1.37401437 24.162193 0.870072127 ) (13.437845 12.6030159 -1.07024192 -0.503942251 0.583649278 15.893724 ) (12.6594276 20.045936 -0.486592591 15.3897838 -20.496791 -4.44498253 ) (1.924438 33.213226 -20.983387 10.944801 15.403532 -34.113792 ) (-11.357181 27.101131 -5.579854 -23.16899 0.882661820 20.900169 ) (-16.495704 14.3822269 -4.69719219 -2.26882028 -0.934181214 -1.48690176 ) (-21.659988 11.369955 -5.6313734 -3.75572205 14.854061 -2.9525671 ) (-19.86433 6.13794995 9.22268868 -6.70828915 -16.4820709 7.29716588 ) (-18.882679 3.07824373 -7.25938416 0.588877082 -2.9257679 -2.2360959 ) (-27.604946 2.54907274 -10.185152 -1.64721918 10.185152 1.64721918 )) NATURAL) (2 ((225 337) (60 337)) NIL ((-165. 0 0 0 0 0 )) NATURAL)) ((6 ((236 168) (269 163) (292 153) (304 143) (314 128) (319 101)) NIL ((34.904304 -3.62200928 0 0 -11.4258365 -8.26794244 ) (29.191387 -7.7559805 -11.4258365 -8.26794244 -2.87081337 11.339712 ) (16.330143 -10.3540668 -14.2966499 3.07177019 16.909088 -7.090909 ) (10.488037 -10.827751 2.6124401 -4.01913929 -10.7655506 -12.976072 ) (7.71770287 -21.334926 -8.1531105 -16.995212 8.1531105 16.995212 )) NATURAL) (6 ((319 101) (316 75) (304 57) (287 45) (268 39) (236 36)) NIL ((-0.971291781 -27.813396 0 0 -12.1722488 10.8803825 ) (-7.05741597 -22.373203 -12.1722488 10.8803825 6.8612442 -6.40191365 ) (-15.799041 -14.693779 -5.31100464 4.4784689 8.72727204 2.72727203 ) (-16.74641 -8.8516731 3.4162674 7.20574093 -23.770332 -4.5071764 ) (-25.215309 -3.89952135 -20.354064 2.69856453 20.354064 -2.69856453 )) NATURAL) (3 ((236 36) (211 36) (113 36)) NIL ((-6.75 0 0 0 -109.5 0 ) (-61.5 0 -109.5 0 109.5 0 )) NATURAL) (2 ((113 36) (113 168)) NIL ((0 132. 0 0 0 0 )) NATURAL) (2 ((113 168) (236 168)) NIL ((123. 0 0 0 0 0 )) NATURAL)) ((2 ((113 204) (113 302)) NIL ((0 98. 0 0 0 0 )) NATURAL) (2 ((113 302) (220 302)) NIL ((107. 0 0 0 0 0 )) NATURAL) (2 ((220 302) (245 302)) NIL ((25. 0 0 0 0 0 )) NATURAL) (5 ((245 302) (266 299) (291 291) (305 274) (308 253)) NIL ((19.339283 -2.23214292 0 0 9.9642849 -4.60714245 ) (24.321426 -4.53571415 9.9642849 -4.60714245 -25.821426 -6.96428586 ) (21.374996 -12.625 -15.857141 -11.571428 3.3214283 8.4642849 ) (7.17857075 -19.964283 -12.535713 -3.10714245 12.535713 3.10714245 )) NATURAL) (5 ((308 253) (303 231) (290 217) (266 208) (245 204)) NIL ((-3.6964283 -23.875 0 0 -7.82142926 11.25 ) (-7.60714245 -18.25 -7.82142926 11.25 -8.89285279 -8.25 ) (-19.875 -11.124998 -16.714283 3. 25.392852 3.74999905 ) (-23.892856 -6.24999905 8.6785698 6.74999905 -8.6785698 -6.74999905 )) NATURAL) (2 ((245 204) (220 204)) NIL ((-25. 0 0 0 0 0 )) NATURAL) (2 ((220 204) (113 204)) NIL ((-107. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 103Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 11:50:25) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((25 ((378 260) (370 287) (352 310) (318 332) (271 343) (229 345) (186 342) (141 330) (109 310) (85 285) (69 260) (60 236) (49 169) (60 102) (69 78) (85 53) (109 28) (141 8) (186 -4) (229 -7) (271 -5) (318 6) (352 28) (370 51) (378 78)) NIL ((-6.19386483 28.169479 0 0 -10.836809 -7.01689053 ) (-11.61227 24.661033 -10.836809 -7.01689053 -5.8159504 11.0844516 ) (-25.357055 23.18637 -16.652759 4.0675621 -1.89938736 -19.320919 ) (-42.95951 17.593471 -18.5521469 -15.2533588 31.413505 6.199234 ) (-45.8049 5.43973065 12.8613586 -9.05412484 -15.754644 6.5239849 ) (-40.82086 -0.352400899 -2.8932867 -2.53013944 -4.39492512 -8.29517556 ) (-45.911613 -7.03012753 -7.2882118 -10.825315 27.334346 2.65671539 ) (-39.532653 -16.527084 20.046134 -8.16860009 -14.942476 3.6683216 ) (-26.957756 -22.861526 5.10365868 -4.50027848 2.43556595 0.669996739 ) (-20.636314 -27.026805 7.5392246 -3.83028174 5.20021248 23.651683 ) (-10.4969825 -19.031242 12.739437 19.821403 -29.236415 -89.27673 ) (-12.375753 -43.848213 -16.496978 -69.455337 57.74546 69.45532 ) (3.18139791E-6 -78.57588 41.24848 -4.08857977E-6 -57.74546 69.45535 ) (12.375753 -43.848213 -16.496982 69.45535 29.236419 -89.27676 ) (10.4969825 -19.031242 12.739439 -19.821411 -5.20021439 23.651691 ) (20.636314 -27.026805 7.5392246 3.83028364 -2.43556785 0.669993878 ) (26.957756 -22.861522 5.10365677 4.50027752 14.942482 3.66832447 ) (39.532653 -16.527084 20.046138 8.168602 -27.33435 2.65670967 ) (45.911613 -7.03012658 -7.28821374 10.8253116 4.39492703 -8.29516984 ) (40.82086 -0.352400601 -2.89328623 2.5301404 15.754644 6.52398205 ) (45.8049 5.4397316 12.8613586 9.0541229 -31.413505 6.19923783 ) (42.959503 17.593471 -18.5521469 15.2533607 1.89938736 -19.320922 ) (25.357051 23.18637 -16.652759 -4.0675621 5.8159504 11.0844516 ) (11.612268 24.661033 -10.836809 7.01689053 10.836809 -7.01689053 )) NATURAL) (2 ((378 78) (326 78)) NIL ((-52. 0 0 0 0 0 )) NATURAL) (14 ((326 78) (320 55) (309 40) (286 28) (256 24) (230 23) (199 26) (177 32) (150 46) (132 64) (116 90) (106 120) (102 142) (101 169)) NIL ((-5.3555641 -25.071785 0 0 -3.86661339 12.4307289 ) (-7.2888708 -18.856422 -3.86661339 12.4307289 -10.666933 -14.153646 ) (-16.4889488 -13.5025177 -14.533546 -1.72291755 4.53435135 14.1838588 ) (-28.755321 -8.13350488 -9.9991951 12.460941 22.529521 -12.5817928 ) (-27.489753 -1.9634602 12.5303287 -0.120852127 -28.652446 6.14331818 ) (-29.285652 0.987347246 -16.1221199 6.02246667 38.080276 -5.99148369 ) (-26.36763 4.01407147 21.95816 0.0309827476 -39.668693 11.822618 ) (-24.243816 9.95636369 -17.710533 11.853601 36.594505 -11.298988 ) (-23.657093 16.160469 18.883976 0.554612279 -22.709346 9.37333489 ) (-16.127792 21.401752 -3.82537174 9.927948 12.2428798 -2.19436264 ) (-13.831724 30.232517 8.41750909 7.73358536 -2.26217842 -24.595874 ) (-6.5453043 25.668167 6.15533066 -16.862289 -3.1941638 28.577858 ) (-1.98705554 23.094806 2.96116686 11.71557 -2.96116686 -11.71557 )) NATURAL) (14 ((101 169) (102 196) (106 218) (116 248) (132 274) (150 292) (177 306) (199 312) (230 315) (256 314) (286 310) (309 298) (321 284) (326 260)) NIL ((0.506471396 28.95259 0 0 2.96117163 -11.7155666 ) (1.98705721 23.09481 2.96117163 -11.7155666 3.19414091 28.577835 ) (6.54529954 25.668159 6.15531254 16.86227 2.2622652 -24.595783 ) (13.831745 30.232536 8.41757775 -7.73351479 -12.243206 -2.1946907 ) (16.1277199 21.401676 -3.82562828 -9.9282055 22.710559 9.37454988 ) (23.657371 16.160743 18.884933 -0.553655625 -36.599037 -11.303514 ) (24.242786 9.9553318 -17.714103 -11.85717 39.685585 11.8395099 ) (26.371479 4.01791764 21.971485 -0.0176593437 -38.143325 -6.0545311 ) (29.271297 0.972992898 -16.171844 -6.07219124 28.887744 6.37861539 ) (27.543323 -1.90989017 12.7159 0.306424796 -23.407657 -13.45993 ) (28.555393 -8.33343125 -10.691759 -13.153507 -1.25710296 17.461109 ) (17.235084 -12.7563839 -11.948862 4.30760193 4.43607807 -20.384502 ) (7.504261 -18.641033 -7.512784 -16.0769 7.512784 16.0769 )) NATURAL) (2 ((326 260) (378 260)) NIL ((52. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 105Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 12:00:54) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((3 ((82 337) (82 337) (82 0)) NIL ((0 84.25 0 0 0 -505.5 ) (0 -168.5 0 -505.5 0 505.5 )) NATURAL) (2 ((82 0) (369 0)) NIL ((287. 0 0 0 0 0 )) NATURAL) (2 ((369 0) (369 36)) NIL ((0 36. 0 0 0 0 )) NATURAL) (2 ((369 36) (134 36)) NIL ((-235. 0 0 0 0 0 )) NATURAL) (2 ((134 36) (134 161)) NIL ((0 125. 0 0 0 0 )) NATURAL) (2 ((134 161) (315 161)) NIL ((181. 0 0 0 0 0 )) NATURAL) (2 ((315 161) (315 197)) NIL ((0 36. 0 0 0 0 )) NATURAL) (2 ((315 197) (134 197)) NIL ((-181. 0 0 0 0 0 )) NATURAL) (2 ((134 197) (134 301)) NIL ((0 104. 0 0 0 0 )) NATURAL) (2 ((134 301) (355 301)) NIL ((221. 0 0 0 0 0 )) NATURAL) (2 ((355 301) (355 337)) NIL ((0 36. 0 0 0 0 )) NATURAL) (2 ((355 337) (82 337)) NIL ((-273. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 106Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 12:01:55) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((2 ((328 197) (328 161)) NIL ((0 -36. 0 0 0 0 )) NATURAL) (2 ((328 161) (147 161)) NIL ((-181. 0 0 0 0 0 )) NATURAL) (2 ((147 161) (147 0)) NIL ((0 -161. 0 0 0 0 )) NATURAL) (2 ((147 0) (96 0)) NIL ((-51. 0 0 0 0 0 )) NATURAL) (3 ((96 0) (96 337) (96 337)) NIL ((0 421.25 0 0 0 -505.5 ) (0 168.5 0 -505.5 0 505.5 )) NATURAL) (2 ((96 337) (369 337)) NIL ((273. 0 0 0 0 0 )) NATURAL) (2 ((369 337) (369 301)) NIL ((0 -36. 0 0 0 0 )) NATURAL) (2 ((369 301) (147 301)) NIL ((-222. 0 0 0 0 0 )) NATURAL) (2 ((147 301) (147 197)) NIL ((0 -104. 0 0 0 0 )) NATURAL) (2 ((147 197) (328 197)) NIL ((181. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 107Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 12:14:10) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((2 ((354 0) (388 0)) NIL ((34. 0 0 0 0 0 )) NATURAL) (2 ((388 0) (388 169)) NIL ((0 169. 0 0 0 0 )) NATURAL) (2 ((388 169) (208 169)) NIL ((-180. 0 0 0 0 0 )) NATURAL) (2 ((208 169) (208 134)) NIL ((0 -35. 0 0 0 0 )) NATURAL) (2 ((208 134) (336 134)) NIL ((128. 0 0 0 0 0 )) NATURAL) (8 ((336 134) (336 109) (330 76) (314 51) (285 33) (249 24) (224 22) (199 26)) NIL ((1.08862924 -22.377876 0 0 -6.53177548 -15.732736 ) (-2.17725849 -30.244243 -6.53177548 -15.732736 -3.34112072 30.663684 ) (-10.3795948 -30.645137 -9.8728962 14.93095 -4.1037426 -10.922018 ) (-22.304363 -21.175193 -13.9766388 4.00893116 1.75609588 7.0243902 ) (-35.402954 -13.6540699 -12.2205429 11.033321 33.079353 -5.17554093 ) (-31.083816 -5.20851898 20.85881 5.85778046 -26.073513 1.67777347 ) (-23.261764 1.48814869 -5.2147026 7.53555394 5.2147026 -7.53555394 )) NATURAL) (23 ((199 26) (177 32) (150 46) (131 63) (114 88) (104 118) (100 141) (99 169) (101 196) (104 218) (114 250) (129 277) (148 294) (173 306) (199 312) (230 315) (259 314) (289 309) (309 299) (320 286) (325 270) (325 270) (326 260)) NIL ((-20.09576 3.9550767 0 0 -11.425428 12.2695389 ) (-25.808475 10.0898456 -11.425428 12.2695389 27.127147 -13.347694 ) (-23.67033 15.685537 15.701719 -1.07815694 -19.083168 11.121244 ) (-17.5101928 20.168003 -3.38144875 10.0430889 13.205524 -1.13729667 ) (-14.288881 29.642444 9.8240757 8.90579225 -3.73893929 -24.572052 ) (-6.3342743 26.26221 6.0851364 -15.666261 -4.24976254 27.425514 ) (-2.37401914 24.308708 1.83537364 11.759254 2.73799419 -13.130014 ) (0.830351830 29.502952 4.57336807 -1.37075996 -6.7022152 -10.9054546 ) (2.0526123 22.679466 -2.12884712 -12.2762146 12.070867 32.75183 ) (5.959198 26.77917 9.9420204 20.475616 -5.58125305 -30.101875 ) (13.1105919 32.203842 4.36076737 -9.62625886 -1.74585771 -2.3443203 ) (16.59843 21.405426 2.61490965 -11.970579 6.564682 9.4791603 ) (22.495681 14.1744289 9.17959214 -2.49141884 -12.5128708 -5.57232285 ) (25.418838 8.89684678 -3.3332796 -8.06374169 13.4868049 6.81013394 ) (28.82896 4.23817349 10.153526 -1.25360703 -17.4343529 -3.668221 ) (30.265308 1.15045547 -7.2808275 -4.92182827 14.250612 1.86275148 ) (30.109787 -2.83999729 6.9697857 -3.05907679 -21.5681 -3.78278589 ) (26.295524 -7.7904663 -14.598314 -6.84186268 6.02178765 7.26839066 ) (14.708103 -10.9981346 -8.57652665 0.426528394 3.48095322 -13.290775 ) (7.8720541 -17.216991 -5.09557343 -12.864248 -1.94560623 45.894706 ) (1.80367732 -7.13388539 -7.04117966 33.030464 10.3014736 -56.288078 ) (-0.0867649615 -2.24746179 3.26029491 -23.257614 -3.26029491 23.257614 )) NATURAL) (2 ((326 260) (378 260)) NIL ((52. 0 0 0 0 0 )) NATURAL) (25 ((378 260) (370 287) (352 310) (318 332) (271 343) (229 345) (186 342) (144 331) (109 310) (85 285) (69 260) (60 236) (53 209) (49 169) (52 127) (64 83) (83 52) (108 28) (141 9) (183 -3) (229 -7) (271 -1) (300 9) (326 26) (344 49)) NIL ((-6.1920843 28.170055 0 0 -10.84749 -7.02033616 ) (-11.615829 24.659885 -10.84749 -7.02033616 -5.76254845 11.1016826 ) (-25.344593 23.190391 -16.610038 4.08134747 -2.10231399 -19.386398 ) (-43.00579 17.578537 -18.712352 -15.305053 32.171806 6.44392205 ) (-45.632232 5.4954462 13.459455 -8.86113168 -18.584922 5.6107149 ) (-41.46524 -0.560327769 -5.12547016 -3.25041676 6.16789437 -4.88678265 ) (-43.506767 -6.25413609 1.0424242 -8.1371994 5.9133482 -4.06358147 ) (-39.507667 -16.423126 6.9557724 -12.2007808 6.17871476 9.14110566 ) (-29.462539 -24.053352 13.134487 -3.05967522 -6.62821198 3.49915838 ) (-19.642158 -25.363449 6.50627518 0.439483404 2.33413124 0.862258196 ) (-11.9688167 -24.492836 8.8404064 1.3017416 -8.708313 -0.948191763 ) (-7.48256779 -23.665191 0.132091939 0.353549778 2.49913216 -21.069484 ) (-6.10090924 -33.846382 2.63122415 -20.715938 4.71178627 25.226146 ) (-1.11379099 -41.949249 7.3430109 4.51021099 2.65371418 -13.835115 ) (7.556077 -44.356597 9.99672509 -9.3249054 -3.32663918 30.114315 ) (15.889482 -38.624343 6.6700859 20.789409 -1.34715652 -16.622142 ) (21.88599 -26.146007 5.32292938 4.16726685 2.71526527 0.374253273 ) (28.56655 -21.791614 8.03819467 4.54152012 2.48609352 3.12512875 ) (37.847793 -15.687528 10.524288 7.66664887 -6.6596422 -0.874764443 ) (45.042259 -8.4582615 3.86464596 6.7918844 -5.84751797 6.3739252 ) (45.983146 1.52058458 -1.98287248 13.165809 -17.950279 -12.620937 ) (35.02513 8.37592507 -19.933155 0.544872284 23.648662 8.10982705 ) (26.916309 12.9757118 3.71550894 8.6546993 -16.644382 -1.81837463 ) (22.309623 20.721221 -12.9288768 6.8363247 12.9288768 -6.8363247 )) NATURAL) (2 ((344 49) (354 0)) NIL ((10. -49. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 110Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 12:14:57) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((2 ((61 0) (61 337)) NIL ((0 337. 0 0 0 0 )) NATURAL) (2 ((61 337) (113 337)) NIL ((52. 0 0 0 0 0 )) NATURAL) (2 ((113 337) (113 197)) NIL ((0 -140. 0 0 0 0 )) NATURAL) (2 ((113 197) (326 197)) NIL ((213. 0 0 0 0 0 )) NATURAL) (2 ((326 197) (326 337)) NIL ((0 140. 0 0 0 0 )) NATURAL) (2 ((326 337) (378 337)) NIL ((52. 0 0 0 0 0 )) NATURAL) (2 ((378 337) (378 0)) NIL ((0 -337. 0 0 0 0 )) NATURAL) (2 ((378 0) (326 0)) NIL ((-52. 0 0 0 0 0 )) NATURAL) (2 ((326 0) (326 161)) NIL ((0 161. 0 0 0 0 )) NATURAL) (2 ((326 161) (113 161)) NIL ((-213. 0 0 0 0 0 )) NATURAL) (2 ((113 161) (113 0)) NIL ((0 -161. 0 0 0 0 )) NATURAL) (2 ((113 0) (61 0)) NIL ((-52. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 111Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 12:21:10) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((2 ((194 35) (94 35)) NIL ((-100. 0 0 0 0 0 )) NATURAL) (2 ((94 35) (94 0)) NIL ((0 -35. 0 0 0 0 )) NATURAL) (2 ((94 0) (346 0)) NIL ((252. 0 0 0 0 0 )) NATURAL) (2 ((346 0) (346 35)) NIL ((0 35. 0 0 0 0 )) NATURAL) (2 ((346 35) (245 35)) NIL ((-101. 0 0 0 0 0 )) NATURAL) (2 ((245 35) (245 302)) NIL ((0 267. 0 0 0 0 )) NATURAL) (2 ((245 302) (346 302)) NIL ((101. 0 0 0 0 0 )) NATURAL) (2 ((346 302) (346 337)) NIL ((0 35. 0 0 0 0 )) NATURAL) (2 ((346 337) (94 337)) NIL ((-252. 0 0 0 0 0 )) NATURAL) (2 ((94 337) (94 302)) NIL ((0 -35. 0 0 0 0 )) NATURAL) (2 ((94 302) (194 302)) NIL ((100. 0 0 0 0 0 )) NATURAL) (2 ((194 302) (194 35)) NIL ((0 -267. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 112Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 12:24:11) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((13 ((367 83) (358 56) (342 35) (318 18) (286 5) (249 -4) (213 -7) (177 -4) (139 5) (108 18) (84 35) (67 56) (58 83)) NIL ((-7.5716381 -28.383419 0 0 -8.57017137 8.30051805 ) (-11.8567238 -24.233158 -8.57017137 8.30051805 0.850863457 -5.50259018 ) (-20.001464 -18.683937 -7.7193079 2.79792738 -0.833287240 1.70984411 ) (-28.137416 -15.0310878 -8.55259515 4.50777149 2.48228836 -1.33678722 ) (-35.448867 -11.191709 -6.07030678 3.17098427 8.90413095 3.63730621 ) (-37.067108 -6.20207215 2.83382416 6.80829049 -2.09881306 -1.21243572 ) (-35.282692 0 0.735010863 5.59585476 -6.50887776 1.21243572 ) (-37.802116 6.20207215 -5.7738676 6.80829049 16.1343269 -3.63730621 ) (-35.508819 11.191709 10.360462 3.17098427 -4.02844429 1.33678722 ) (-27.162582 15.0310878 6.3320179 4.50777149 -0.0205554962 -1.70984459 ) (-20.840839 18.683937 6.3114624 2.7979269 4.11067009 5.50259114 ) (-12.4740429 24.233158 10.422132 8.30051805 -10.422132 -8.30051805 )) NATURAL) (2 ((58 83) (58 125)) NIL ((0 42. 0 0 0 0 )) NATURAL) (2 ((58 125) (108 125)) NIL ((50. 0 0 0 0 0 )) NATURAL) (2 ((108 125) (108 83)) NIL ((0 -42. 0 0 0 0 )) NATURAL) (11 ((108 83) (117 61) (134 46) (156 37) (185 31) (214 29) (241 31) (269 37) (291 46) (308 61) (317 83)) NIL ((7.0843725 -23.486187 0 0 11.493761 8.9171257 ) (12.831253 -19.027622 11.493761 8.9171257 -9.4688053 -2.58563423 ) (19.59061 -11.4033146 2.02495432 6.33149148 8.381464 -4.5745859 ) (25.806297 -7.3591156 10.4064197 1.75690555 -12.057056 2.88397884 ) (30.184188 -4.1602211 -1.65063834 4.6408844 -2.15322876 -0.961326600 ) (27.456935 1.59256160E-7 -3.80386734 3.6795578 8.66997529 0.961325646 ) (27.988056 4.1602211 4.86610794 4.64088345 -14.526672 -2.88397694 ) (25.590827 7.3591156 -9.6605644 1.75690627 7.43671513 4.574584 ) (19.64862 11.4033146 -2.22384882 6.3314905 -9.22018624 2.58563518 ) (12.814678 19.027622 -11.444036 8.9171257 11.444036 -8.9171257 )) NATURAL) (2 ((317 83) (317 301)) NIL ((0 218. 0 0 0 0 )) NATURAL) (2 ((317 301) (187 301)) NIL ((-130. 0 0 0 0 0 )) NATURAL) (2 ((187 301) (187 337)) NIL ((0 36. 0 0 0 0 )) NATURAL) (2 ((187 337) (367 337)) NIL ((180. 0 0 0 0 0 )) NATURAL) (2 ((367 337) (367 83)) NIL ((0 -254. 0 0 0 0 )) NATURAL)))) ((FAMILY GACHA) (CHARACTER 113Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 12:28:21) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((3 ((73 0) (73 0) (73 337)) NIL ((0 -84.25 0 0 0 505.5 ) (0 168.5 0 505.5 0 -505.5 )) NATURAL) (2 ((73 337) (120 337)) NIL ((47. 0 0 0 0 0 )) NATURAL) (2 ((120 337) (120 191)) NIL ((0 -146. 0 0 0 0 )) NATURAL) (2 ((120 191) (175 191)) NIL ((55. 0 0 0 0 0 )) NATURAL) (2 ((175 191) (320 338)) NIL ((145. 147. 0 0 0 0 )) NATURAL) (2 ((320 338) (373 338)) NIL ((53. 0 0 0 0 0 )) NATURAL) (2 ((373 338) (214 176)) NIL ((-159. -162. 0 0 0 0 )) NATURAL) (2 ((214 176) (418 0)) NIL ((204. -176. 0 0 0 0 )) NATURAL) (2 ((418 0) (347 0)) NIL ((-71. 0 0 0 0 0 )) NATURAL) (2 ((347 0) (170 155)) NIL ((-177. 155. 0 0 0 0 )) NATURAL) (2 ((170 155) (120 155)) NIL ((-50. 0 0 0 0 0 )) NATURAL) (2 ((120 155) (120 0)) NIL ((0 -155. 0 0 0 0 )) NATURAL) (2 ((120 0) (73 0)) NIL ((-47. 0 0 0 0 0 )) NATURAL)))) ((FAMILY GACHA) (CHARACTER 114Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 12:29:42) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((2 ((82 337) (82 0)) NIL ((0 -337. 0 0 0 0 )) NATURAL) (2 ((82 0) (390 0)) NIL ((308. 0 0 0 0 0 )) NATURAL) (2 ((390 0) (390 36)) NIL ((0 36. 0 0 0 0 )) NATURAL) (2 ((390 36) (134 36)) NIL ((-256. 0 0 0 0 0 )) NATURAL) (2 ((134 36) (134 337)) NIL ((0 301. 0 0 0 0 )) NATURAL) (2 ((134 337) (82 337)) NIL ((-52. 0 0 0 0 0 )) NATURAL)))) ((FAMILY GACHA) (CHARACTER 115Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 12:34:46) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((2 ((40 0) (40 337)) NIL ((0 337. 0 0 0 0 )) NATURAL) (2 ((40 337) (102 337)) NIL ((62. 0 0 0 0 0 )) NATURAL) (2 ((102 337) (219 80)) NIL ((117. -257. 0 0 0 0 )) NATURAL) (2 ((219 80) (335 337)) NIL ((116. 257. 0 0 0 0 )) NATURAL) (2 ((335 337) (397 337)) NIL ((62. 0 0 0 0 0 )) NATURAL) (2 ((397 337) (397 0)) NIL ((0 -337. 0 0 0 0 )) NATURAL) (2 ((397 0) (346 0)) NIL ((-51. 0 0 0 0 0 )) NATURAL) (2 ((346 0) (346 260)) NIL ((0 260. 0 0 0 0 )) NATURAL) (2 ((346 260) (219 -8)) NIL ((-127. -268. 0 0 0 0 )) NATURAL) (2 ((219 -8) (92 260)) NIL ((-127. 268. 0 0 0 0 )) NATURAL) (2 ((92 260) (92 0)) NIL ((0 -260. 0 0 0 0 )) NATURAL) (2 ((92 0) (40 0)) NIL ((-52. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 104Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 21-SEP-77 13:35:12) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((3 ((51 0) (51 0) (51 337)) NIL ((0 -84.25 0 0 0 505.5 ) (0 168.5 0 505.5 0 -505.5 )) NATURAL) (2 ((51 337) (231 337)) NIL ((180. 0 0 0 0 0 )) NATURAL) (13 ((231 337) (280 330) (322 313) (352 291) (373 264) (388 220) (393 169) (388 118) (373 74) (352 47) (322 25) (280 8) (231 0)) NIL ((50.16728 -4.66153813 0 0 -7.0037012 -14.030771 ) (46.665428 -11.6769237 -7.0037012 -14.030771 -6.98149396 10.153858 ) (36.170982 -20.630764 -13.985195 -3.87691164 4.92968178 3.4153304 ) (24.650627 -22.80001 -9.05551339 -0.461581111 5.26276684 -23.815181 ) (18.226497 -35.169181 -3.79274607 -24.276763 -7.9807539 19.845397 ) (10.4433746 -49.523246 -11.7735 -4.4313631 2.66025162 4.43358326 ) (-3.18512320E-7 -51.737815 -9.1132488 0.00222035451 -2.66025162 4.42026043 ) (-10.4433746 -49.525467 -11.7735 4.42248154 7.98075486 19.885368 ) (-18.226497 -35.1603 -3.79274559 24.307849 -5.26276779 -23.961738 ) (-24.650627 -22.83332 -9.05551339 0.346110821 -4.92968178 3.96159315 ) (-36.170982 -20.506412 -13.985195 4.30770397 6.9814949 8.1153679 ) (-46.665428 -12.1410236 -7.00370026 12.4230728 7.00370026 -12.4230728 )) NATURAL) (2 ((231 0) (51 0)) NIL ((-180. 0 0 0 0 0 )) NATURAL)) ((2 ((101 301) (225 301)) NIL ((124. 0 0 0 0 0 )) NATURAL) (15 ((225 301) (250 300) (278 295) (298 286) (314 273) (331 245) (340 208) (343 169) (340 130) (331 93) (314 65) (298 52) (278 43) (250 38) (225 37)) NIL ((23.713207 -0.204053551 0 0 7.72074509 -4.77567864 ) (27.573581 -2.59189272 7.72074509 -4.77567864 -20.603725 -0.121606826 ) (24.992462 -7.42837525 -12.882982 -4.89728546 8.6941681 5.2621088 ) (16.456562 -9.69460679 -4.18881417 0.364823341 9.82705308 -20.926826 ) (17.181274 -19.793197 5.6382389 -20.562004 -18.00238 12.4452057 ) (13.818325 -34.132598 -12.364141 -8.1167984 8.1824684 7.145998 ) (5.54541779 -38.676399 -4.18167305 -0.970800281 -2.72749042 0.970800281 ) (1.58324837E-7 -39.161796 -6.90916348 3.19420294E-8 2.72748947 0.970800043 ) (-5.54541779 -38.676399 -4.181674 0.970800162 -8.1824665 7.145998 ) (-13.818325 -34.132598 -12.364141 8.1167984 18.002376 12.4452057 ) (-17.181274 -19.793193 5.63823796 20.562004 -9.82705117 -20.926826 ) (-16.456562 -9.69460488 -4.1888132 -0.364823401 -8.6941681 5.2621088 ) (-24.992462 -7.4283743 -12.882982 4.89728546 20.603725 -0.121606826 ) (-27.573581 -2.59189272 7.72074509 4.77567864 -7.72074509 -4.77567864 )) NATURAL) (2 ((225 37) (101 36)) NIL ((-124. -1. 0 0 0 0 )) NATURAL) (2 ((101 36) (101 301)) NIL ((0 265. 0 0 0 0 )) NATURAL)))) STOP \ No newline at end of file diff --git a/obsolete/lispusers/splinefonts/GACHAE.UC2-SF b/obsolete/lispusers/splinefonts/GACHAE.UC2-SF deleted file mode 100644 index 56a9f2bd..00000000 --- a/obsolete/lispusers/splinefonts/GACHAE.UC2-SF +++ /dev/null @@ -1 +0,0 @@ - ((FAMILY GACHA) (CHARACTER 116Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 12:42:48) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((3 ((61 0) (61 0) (111 0)) NIL ((-12.5 0 0 0 75. 0 ) (25. 0 75. 0 -75. 0 )) NATURAL) (2 ((111 0) (111 295)) NIL ((0 295. 0 0 0 0 )) NATURAL) (2 ((111 295) (312 0)) NIL ((201. -295. 0 0 0 0 )) NATURAL) (2 ((312 0) (376 0)) NIL ((64. 0 0 0 0 0 )) NATURAL) (2 ((376 0) (376 337)) NIL ((0 337. 0 0 0 0 )) NATURAL) (2 ((376 337) (326 337)) NIL ((-50. 0 0 0 0 0 )) NATURAL) (2 ((326 337) (326 42)) NIL ((0 -295. 0 0 0 0 )) NATURAL) (2 ((326 42) (125 337)) NIL ((-201. 295. 0 0 0 0 )) NATURAL) (2 ((125 337) (61 337)) NIL ((-64. 0 0 0 0 0 )) NATURAL) (2 ((61 337) (61 0)) NIL ((0 -337. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 117Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 12:52:08) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((29 ((222 22) (257 25) (286 34) (316 51) (334 75) (346 105) (351 140) (353 169) (351 198) (346 233) (334 263) (316 287) (286 304) (255 313) (222 316) (189 313) (158 304) (128 287) (110 263) (98 233) (93 198) (91 169) (93 140) (98 105) (110 75) (128 51) (158 34) (187 25) (222 22)) NIL ((36.888336 1.854002 0 0 -11.3300247 6.875988 ) (31.223323 5.291996 -11.3300247 6.875988 20.650123 1.62005996 ) (30.21836 12.978014 9.32010079 8.49604798 -29.270477 -1.35623073 ) (24.90322 20.795944 -19.950378 7.13981724 18.431793 -2.19513702 ) (14.168741 26.838195 -1.51858186 4.9446802 -8.456707 4.13677883 ) (8.42180444 33.851265 -9.9752903 9.08145906 9.3950348 -20.351982 ) (3.14403296 32.756729 -0.580255032 -11.270523 -5.1234331 11.271158 ) (0.00206090975 27.121788 -5.70368862 6.36285287E-4 5.09869957 11.2673397 ) (-3.15227747 32.756095 -0.604988218 11.2679767 -9.2713661 -20.340518 ) (-8.39294816 33.853813 -9.8763561 -9.0725422 7.98676587 4.09474373 ) (-14.2759208 26.82864 -1.88958955 -4.97779846 -16.675693 -2.03846168 ) (-24.50336 20.831611 -18.565284 -7.01626015 22.716026 -1.94089889 ) (-31.710632 12.844902 4.15074253 -8.95715905 -8.18842698 3.80206299 ) (-31.654102 5.78877354 -4.0376854 -5.15509606 4.0376854 -1.26735592 ) (-33.672943 1.58324837E-7 0 -6.42245198 4.0376854 1.26735496 ) (-31.654102 -5.78877449 4.0376854 -5.155097 -8.18842698 -3.80206204 ) (-31.710632 -12.844902 -4.15074253 -8.95715905 22.716026 1.94089889 ) (-24.503356 -20.831611 18.565284 -7.01626015 -16.675693 2.03846168 ) (-14.2759208 -26.82864 1.88958955 -4.97779846 7.98676396 -4.09474564 ) (-8.39294816 -33.853813 9.8763542 -9.0725441 -9.2713642 20.340518 ) (-3.15227747 -32.756095 0.604989052 11.2679767 5.09869957 -11.2673397 ) (0.00206130743 -27.121788 5.70368862 6.36285287E-4 -5.1234331 -11.271158 ) (3.14403296 -32.756729 0.580254913 -11.270523 9.3950348 20.351982 ) (8.42180444 -33.851265 9.9752903 9.08146096 -8.456707 -4.13678074 ) (14.168741 -26.838195 1.51858258 4.9446802 18.431793 2.19513607 ) (24.90322 -20.795944 19.950378 7.13981629 -29.270477 1.35623169 ) (30.21836 -12.978012 -9.32010079 8.49604798 20.650123 -1.62006092 ) (31.223323 -5.29199505 11.3300247 6.87598706 -11.3300247 -6.87598706 )) NATURAL)) ((29 ((42 169) (47 117) (61 78) (80 48) (102 28) (133 10) (180 -3) (222 -7) (264 -3) (311 10) (342 28) (364 48) (383 78) (397 117) (402 169) (397 221) (383 260) (364 290) (342 310) (311 328) (264 341) (222 345) (180 341) (133 328) (102 310) (80 290) (61 260) (47 221) (42 169)) NIL ((0.0957953036 -55.136116 9.7570095 0.390455067 0.154199600 17.645336 ) (9.92990495 -45.922988 9.9112091 18.035793 -5.3130598 -12.5694408 ) (17.184581 -34.171913 4.5981493 5.46635247 -2.90195894 8.63244058 ) (20.331752 -24.389339 1.69619012 14.098793 4.92089939 -15.960325 ) (24.488395 -18.27071 6.61709023 -1.86153316 19.218349 7.20887089 ) (40.71466 -16.527809 25.835441 5.34733773 -39.794303 5.12484169 ) (46.652946 -8.6180496 -13.958868 10.472179 13.9589 -3.70823574 ) (39.67353 1.14440918E-5 3.27086381E-5 6.76394368 13.958702 3.70810032 ) (46.652915 8.61800576 13.958736 10.472044 -39.793716 -5.12416935 ) (40.71479 16.527965 -25.834983 5.34787464 19.216178 -7.21142007 ) (24.487899 18.27013 -6.61880208 -1.86354613 4.92899609 15.969852 ) (20.333595 24.39151 -1.68980574 14.106308 -2.93216896 -8.66798974 ) (17.1777038 34.163818 -4.62197495 5.4383173 -5.20031739 12.7020969 ) (9.9555721 45.953193 -9.8222923 18.140415 -0.266559601 -18.140411 ) (-6.37024641E-7 55.023399 -10.0888519 1.02214494E-6 0.266559601 -18.140419 ) (-9.9555721 45.953186 -9.8222923 -18.140419 5.20031739 12.7021007 ) (-17.1777038 34.163818 -4.62197495 -5.4383173 2.93216944 -8.6679878 ) (-20.333595 24.39151 -1.68980551 -14.106306 -4.92899609 15.96985 ) (-24.487899 18.27013 -6.61880208 1.86354565 -19.216178 -7.21142007 ) (-40.71479 16.527965 -25.834983 -5.34787464 39.793716 -5.12416935 ) (-46.652915 8.61800386 13.958738 -10.472044 -13.958704 3.70809937 ) (-39.67353 1.11255794E-5 3.27086381E-5 -6.76394463 -13.9589 -3.70823288 ) (-46.652946 -8.6180496 -13.958868 -10.472177 39.794303 5.12483883 ) (-40.71466 -16.527809 25.835441 -5.34733868 -19.218349 7.20887185 ) (-24.488391 -18.27071 6.61709119 1.86153364 -4.9209013 -15.960327 ) (-20.331752 -24.389339 1.6961894 -14.0987949 2.90196085 8.63244248 ) (-17.184581 -34.171913 4.59815026 -5.4663515 5.31305886 -12.5694408 ) (-9.929903 -45.922988 9.9112091 -18.035793 -0.154199600 17.645336 )) PSEUDOCYCLIC)))) ((FAMILY gacha) (CHARACTER 120Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 13:02:12) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((3 ((81 0) (81 0) (81 337)) NIL ((0 -84.25 0 0 0 505.5 ) (0 168.5 0 505.5 0 -505.5 )) NATURAL) (2 ((81 337) (261 337)) NIL ((180. 0 0 0 0 0 )) NATURAL) (13 ((261 337) (287 336) (318 331) (346 318) (363 300) (375 272) (381 236) (375 200) (363 172) (346 154) (318 141) (287 136) (261 135)) NIL ((24.635082 -0.447435856 0 0 8.18948937 -3.31538487 ) (28.729827 -2.10512829 8.18948937 -3.31538487 -10.9474468 -7.42307568 ) (31.445594 -9.13205148 -2.75795746 -10.7384605 -12.399702 9.0076904 ) (22.487785 -15.3666668 -15.157659 -1.73076916 12.5462589 -10.6076908 ) (13.603256 -22.401279 -2.61139917 -12.3384609 -1.78534364 3.42307854 ) (10.099184 -33.028198 -4.39674282 -8.9153824 -11.404884 8.91538049 ) (-1.60187482E-7 -37.485893 -15.801628 -5.11072471E-7 11.404884 8.9153843 ) (-10.099184 -33.028198 -4.39674282 8.9153843 1.78534364 3.42307472 ) (-13.603256 -22.401279 -2.61139917 12.338459 -12.5462589 -10.6076889 ) (-22.487785 -15.3666649 -15.157659 1.73077011 12.399702 9.0076885 ) (-31.445594 -9.13204957 -2.7579565 10.7384586 10.947443 -7.42307377 ) (-28.729827 -2.10512829 8.18948747 3.31538487 -8.18948747 -3.31538487 )) NATURAL) (2 ((261 135) (134 135)) NIL ((-127. 0 0 0 0 0 )) NATURAL) (2 ((134 135) (134 0)) NIL ((0 -135. 0 0 0 0 )) NATURAL) (2 ((134 0) (81 0)) NIL ((-53. 0 0 0 0 0 )) NATURAL)) ((9 ((261 301) (283 299) (306 293) (323 270) (329 238) (323 206) (306 183) (283 177) (261 175)) NIL ((21.463916 -1.98214268 0 0 3.21649456 -0.107143402 ) (23.072162 -2.03571415 3.21649456 -0.107143402 -10.0824737 -23.464283 ) (21.247421 -13.875 -6.8659792 -23.571426 -4.88659764 15.964283 ) (11.9381427 -29.464283 -11.7525768 -7.60714245 -0.371133804 7.60714245 ) (-3.18512320E-7 -33.267852 -12.1237106 2.55529982E-7 0.371133804 7.60714055 ) (-11.9381446 -29.464283 -11.7525768 7.6071415 4.88659859 15.9642849 ) (-21.247421 -13.874998 -6.86597825 23.571426 10.0824718 -23.464283 ) (-23.072162 -2.03571415 3.21649504 0.107142448 -3.21649504 -0.107142448 )) NATURAL) (2 ((261 175) (134 175)) NIL ((-127. 0 0 0 0 0 )) NATURAL) (2 ((134 175) (134 301)) NIL ((0 126. 0 0 0 0 )) NATURAL) (2 ((134 301) (261 301)) NIL ((127. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 121Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 13:08:33) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((29 ((222 22) (187 25) (158 34) (128 51) (110 75) (98 105) (93 140) (91 169) (93 198) (98 233) (110 263) (128 287) (158 304) (189 313) (222 316) (255 313) (286 304) (316 287) (334 263) (346 233) (351 198) (353 169) (351 140) (346 105) (334 75) (316 51) (286 34) (257 25) (222 22)) NIL ((-36.888336 1.854002 0 0 11.3300247 6.875988 ) (-31.223323 5.291996 11.3300247 6.875988 -20.650123 1.62005996 ) (-30.21836 12.978014 -9.32010079 8.49604798 29.270477 -1.35623073 ) (-24.90322 20.795944 19.950378 7.13981724 -18.431793 -2.19513702 ) (-14.168741 26.838195 1.51858186 4.9446802 8.456707 4.13677883 ) (-8.42180444 33.851265 9.9752903 9.08145906 -9.3950348 -20.351982 ) (-3.14403296 32.756729 0.580255032 -11.270523 5.1234331 11.271158 ) (-0.00206090975 27.121788 5.70368862 6.36285287E-4 -5.09869957 11.2673397 ) (3.15227747 32.756095 0.604988218 11.2679767 9.2713661 -20.340518 ) (8.39294816 33.853813 9.8763561 -9.0725422 -7.98676587 4.09474373 ) (14.2759208 26.82864 1.88958955 -4.97779846 16.675693 -2.03846168 ) (24.50336 20.831611 18.565284 -7.01626015 -22.716026 -1.94089889 ) (31.710632 12.844902 -4.15074253 -8.95715905 8.18842698 3.80206299 ) (31.654102 5.78877354 4.0376854 -5.15509606 -4.0376854 -1.26735592 ) (33.672943 1.58324837E-7 0 -6.42245198 -4.0376854 1.26735496 ) (31.654102 -5.78877449 -4.0376854 -5.155097 8.18842698 -3.80206204 ) (31.710632 -12.844902 4.15074253 -8.95715905 -22.716026 1.94089889 ) (24.503356 -20.831611 -18.565284 -7.01626015 16.675693 2.03846168 ) (14.2759208 -26.82864 -1.88958955 -4.97779846 -7.98676396 -4.09474564 ) (8.39294816 -33.853813 -9.8763542 -9.0725441 9.2713642 20.340518 ) (3.15227747 -32.756095 -0.604989052 11.2679767 -5.09869957 -11.2673397 ) (-0.00206130743 -27.121788 -5.70368862 6.36285287E-4 5.1234331 -11.271158 ) (-3.14403296 -32.756729 -0.580254913 -11.270523 -9.3950348 20.351982 ) (-8.42180444 -33.851265 -9.9752903 9.08146096 8.456707 -4.13678074 ) (-14.168741 -26.838195 -1.51858258 4.9446802 -18.431793 2.19513607 ) (-24.90322 -20.795944 -19.950378 7.13981629 29.270477 1.35623169 ) (-30.21836 -12.978012 9.32010079 8.49604798 -20.650123 -1.62006092 ) (-31.223323 -5.29199505 -11.3300247 6.87598706 11.3300247 -6.87598706 )) NATURAL)) ((2 ((264 -3) (256 -5)) NIL ((-8. -2. 0 0 0 0 )) NATURAL) (5 ((256 -5) (255 -17) (261 -29) (273 -34) (285 -34)) NIL ((-2.4464283 -11.5892849 0 0 8.6785698 -2.46428537 ) (1.89285755 -12.821428 8.6785698 -2.46428537 -1.39285564 12.321426 ) (9.875 -9.1249981 7.28571416 9.8571415 -9.1071415 -4.82142735 ) (12.607141 -1.67857122 -1.8214283 5.03571415 1.8214283 -5.03571415 )) NATURAL) (2 ((285 -34) (367 -34)) NIL ((82. 0 0 0 0 0 )) NATURAL) (2 ((367 -34) (367 -69)) NIL ((0 -35. 0 0 0 0 )) NATURAL) (2 ((367 -69) (262 -69)) NIL ((-105. 0 0 0 0 0 )) NATURAL) (6 ((262 -69) (243 -66) (225 -58) (213 -44) (208 -22) (208 -4)) NIL ((-18.947364 1.91866016 0 0 -0.315789461 6.48803807 ) (-19.105262 5.16267872 -0.315789461 6.48803807 7.57894707 -2.44019127 ) (-15.631578 10.430622 7.26315785 4.0478468 -9.53674316E-7 9.27272416 ) (-8.36841966 19.11483 7.2631569 13.3205719 -1.57894706 -22.650714 ) (-1.89473653 21.110046 5.68420983 -9.33014298 -5.68420983 9.33014298 )) NATURAL) (2 ((208 -4) (180 -3)) NIL ((-28. 1. 0 0 0 0 )) NATURAL) (27 ((180 -3) (133 10) (102 28) (80 48) (61 78) (47 117) (42 169) (47 221) (61 260) (80 290) (102 310) (133 328) (180 341) (222 345) (264 341) (311 328) (342 310) (364 290) (383 260) (397 221) (402 169) (397 117) (383 78) (364 48) (342 28) (311 10) (264 -3)) NIL ((-50.682457 11.6410236 0 0 22.094749 8.15385057 ) (-39.635078 15.7179489 22.094749 8.15385057 -14.4737549 -10.7692546 ) (-24.777206 18.487171 7.62099457 -2.61540413 -6.19972516 16.923168 ) (-20.256076 24.333354 1.4212687 14.3077659 3.27266073 -8.92342759 ) (-17.1984749 34.179405 4.69392967 5.38433743 5.10908127 12.7705459 ) (-9.95000649 45.949012 9.80301095 18.154884 0.291007995 -18.15876 ) (-0.00149090960 55.02452 10.0940189 -0.00387597363 -0.273111343 -18.135498 ) (9.95597268 45.952888 9.8209076 -18.139377 -5.19856167 12.7007808 ) (17.177597 34.163902 4.62234593 -5.43859673 -2.93264007 -8.66763497 ) (20.333625 24.391487 1.68970585 -14.1062317 4.92912293 15.969757 ) (24.487892 18.2701339 6.61882878 1.86352634 19.216144 -7.2113981 ) (40.714798 16.527961 25.834976 -5.34787178 -39.793716 -5.12416458 ) (46.652908 8.61800767 -13.958744 -10.472036 13.958744 3.7080555 ) (39.673538 -6.37024641E-7 0 -6.76398087 13.958744 -3.70805359 ) (46.652908 -8.61800958 13.958744 -10.472034 -39.793716 5.12416172 ) (40.71479 -16.527961 -25.834976 -5.34787274 19.216144 7.21139908 ) (24.487892 -18.2701339 -6.61882878 1.86352634 4.92912197 -15.969757 ) (20.333625 -24.391487 -1.68970608 -14.1062317 -2.93264055 8.66763497 ) (17.177597 -34.163902 -4.62234688 -5.43859577 -5.1985607 -12.7007808 ) (9.95597077 -45.952888 -9.8209076 -18.139377 -0.273111343 18.135498 ) (-0.00149186514 -55.02452 -10.0940189 -0.00387699622 0.291007995 18.15876 ) (-9.95000649 -45.949012 -9.80301095 18.154884 5.10908127 -12.7705478 ) (-17.198478 -34.179405 -4.69392967 5.38433647 3.2726612 8.9234295 ) (-20.256076 -24.33335 -1.42126846 14.3077659 -6.19972706 -16.923168 ) (-24.777206 -18.487171 -7.6209955 -2.6154046 -14.4737529 10.7692546 ) (-39.635078 -15.7179489 -22.094749 8.15385057 22.094749 -8.15385057 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 122Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 13:19:31) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((3 ((73 0) (73 0) (73 337)) NIL ((0 -84.25 0 0 0 505.5 ) (0 168.5 0 505.5 0 -505.5 )) NATURAL) (2 ((73 337) (244 337)) NIL ((171. 0 0 0 0 0 )) NATURAL) (7 ((244 337) (280 335) (316 328) (345 311) (362 286) (367 255) (367 242)) NIL ((35.673072 -1.27820491 0 0 1.96153855 -4.33076954 ) (36.653839 -3.44358969 1.96153855 -4.33076954 -9.80769158 -8.34615136 ) (33.711532 -11.947435 -7.8461542 -12.6769218 -4.73076725 7.71538354 ) (23.499996 -20.766666 -12.576921 -4.9615383 -1.26923179 -10.5153846 ) (10.2884597 -30.985897 -13.846153 -15.476923 9.80769158 46.346145 ) (1.34615373 -23.289741 -4.03846169 30.869228 4.03846169 -30.869228 )) NATURAL) (6 ((367 242) (367 229) (362 198) (345 173) (316 156) (292 151)) NIL ((0.732057333 -7.84210587 0 0 -4.39234448 -30.947364 ) (-1.46411466 -23.315788 -4.39234448 -30.947364 -8.03827668 46.73683 ) (-9.875597 -30.894733 -12.430622 15.789472 -5.45454407 -11.999998 ) (-25.033493 -21.105262 -17.885166 3.78947306 29.856456 13.2631569 ) (-27.990428 -10.6842098 11.9712906 17.052631 -11.9712906 -17.052631 )) NATURAL) (2 ((292 151) (360 0)) NIL ((68. -151. 0 0 0 0 )) NATURAL) (2 ((360 0) (305 0)) NIL ((-55. 0 0 0 0 0 )) NATURAL) (2 ((305 0) (239 147)) NIL ((-66. 147. 0 0 0 0 )) NATURAL) (2 ((239 147) (120 147)) NIL ((-119. 0 0 0 0 0 )) NATURAL) (2 ((120 147) (120 0)) NIL ((0 -147. 0 0 0 0 )) NATURAL) (2 ((120 0) (73 0)) NIL ((-47. 0 0 0 0 0 )) NATURAL)) ((2 ((120 183) (120 301)) NIL ((0 118. 0 0 0 0 )) NATURAL) (2 ((120 301) (226 301)) NIL ((106. 0 0 0 0 0 )) NATURAL) (6 ((226 301) (272 299) (293 292) (307 280) (313 265) (315 242)) NIL ((52.330139 -1. 0 0 -37.980857 -6. ) (33.339706 -4. -37.980857 -6. 39.904296 0 ) (15.311004 -10. 1.92344451 -6. -13.63636 6. ) (10.416267 -13. -11.712917 0 8.6411457 -12. ) (3.0239234 -19. -3.07177019 -12. 3.07177019 12. )) NATURAL) (6 ((315 242) (313 219) (307 204) (293 192) (272 185) (226 183)) NIL ((-1.48803806 -24.999996 0 0 -3.07177067 11.999998 ) (-3.0239234 -18.999996 -3.07177067 11.999998 -8.6411457 -11.999996 ) (-10.416267 -12.999998 -11.712917 2.54313135E-7 13.636358 5.9999981 ) (-15.311004 -9.9999981 1.92344212 5.99999905 -39.904289 9.53674316E-7 ) (-33.339714 -4. -37.98085 6. 37.98085 -6. )) NATURAL) (2 ((226 183) (120 183)) NIL ((-106. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 123Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 13:39:15) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((2 ((370 259) (328 259)) NIL ((-42. 0 0 0 0 0 )) NATURAL) (19 ((328 259) (319 283) (296 300) (270 309) (220 313) (178 311) (154 307) (129 297) (113 280) (109 264) (115 239) (145 218) (182 212) (218 209) (273 203) (318 191) (350 172) (371 140) (378 88)) NIL ((-4.98698998 25.367855 0 0 -24.07806 -8.2071476 ) (-17.02602 21.264282 -24.07806 -8.2071476 36.390304 -0.964258195 ) (-22.908927 12.575006 12.312244 -9.1714058 -55.48316 6.06417847 ) (-38.338264 6.43568993 -43.17092 -3.10722733 59.54238 -5.29245758 ) (-51.737999 0.682233811 16.371463 -8.3996849 9.31360246 9.10564996 ) (-30.709728 -3.16462517 25.685066 0.705966711 -36.796806 -7.13014699 ) (-23.423069 -6.02373219 -11.1117458 -6.42418099 23.873664 -4.58506012 ) (-22.597984 -14.740444 12.761919 -11.009241 1.30215072 19.470386 ) (-9.1849899 -16.014488 14.0640697 8.4611473 -11.0822677 -25.296493 ) (-0.662053824 -20.201587 2.9818015 -16.835346 31.026916 21.71558 ) (17.833206 -26.179142 34.00872 4.88023567 -29.025417 16.434162 ) (37.329216 -13.081827 4.98330307 21.314399 -16.925239 -21.452232 ) (33.849899 -2.4935441 -11.941936 -0.137833327 48.72637 -2.62523365 ) (46.271156 -3.943995 36.784439 -2.76306724 -57.98026 -4.04682827 ) (54.06546 -8.73047639 -21.195827 -6.8098955 9.19470979 0.812546731 ) (37.466987 -15.134098 -12.0011177 -5.99734879 3.20141602 -5.20335579 ) (27.066577 -23.733127 -8.7997017 -11.2007045 -10.00037 -15.9991169 ) (13.266689 -42.933387 -18.800071 -27.199821 18.800071 27.199821 )) NATURAL) (11 ((378 88) (369 49) (349 23) (314 4) (273 -6) (214 -9) (151 -5) (106 7) (73 25) (46 52) (36 84)) NIL ((-7.0958252 -42.124916 0 0 -11.425045 18.749504 ) (-12.8083477 -32.75016 -11.425045 18.749504 -8.87477494 -15.74752 ) (-28.67078 -21.87442 -20.299819 3.00198221 22.924152 8.2405815 ) (-37.508522 -14.752147 2.62433576 11.242565 -28.821849 -5.2148094 ) (-49.295112 -6.11698628 -26.197517 6.02775574 20.363262 0.618652344 ) (-65.311004 0.220096260 -5.8342533 6.64640809 31.368785 2.74019813 ) (-55.46086 8.2366047 25.534534 9.3866062 -13.838428 -5.57944775 ) (-36.845535 14.833486 11.6961059 3.80715847 -12.015068 7.5775995 ) (-31.156967 22.429443 -0.318962395 11.384758 25.898704 -6.7309475 ) (-18.52658 30.448726 25.579742 4.6538105 -25.579742 -4.6538105 )) NATURAL) (2 ((36 84) (88 84)) NIL ((52. 0 0 0 0 0 )) NATURAL) (4 ((88 84) (103 56) (127 40) (166 28)) NIL ((13.599998 -30.93333 0 0 8.3999996 17.599998 ) (17.799999 -22.133331 8.3999996 17.599998 11.999998 -15.999998 ) (32.199997 -12.5333328 20.399997 1.5999999 -20.399997 -1.5999999 )) NATURAL) (25 ((166 28) (208 23) (248 25) (287 31) (320 57) (330 99) (322 135) (292 152) (248 159) (193 165) (140 174) (103 188) (75 209) (60 237) (57 264) (69 299) (91 320) (124 334) (165 343) (216 345) (261 343) (300 335) (336 316) (360 289) (370 259)) NIL ((42.478797 -6.88853169 0 0 -2.87278843 11.331192 ) (41.042396 -1.22293496 -2.87278843 11.331192 2.36394262 -14.6559658 ) (39.351585 2.78027391 -0.508845687 -3.32477379 -0.582982898 29.292675 ) (38.551246 14.1018409 -1.09182858 25.967903 -30.032005 -6.51475526 ) (22.443412 36.812362 -31.123836 19.453147 18.711029 -27.23365 ) (0.675090075 42.648689 -12.412805 -7.7805023 -14.812124 -16.550632 ) (-19.1437759 26.592868 -27.224929 -24.331134 16.53746 15.43618 ) (-38.099975 9.97982408 -10.6874675 -8.89495469 -3.3377304 8.805912 ) (-50.456306 5.48782635 -14.025198 -0.0890419930 14.813459 3.34016419 ) (-57.074775 7.06886674 0.788262964 3.25112248 22.083881 1.83342743 ) (-45.244567 11.2367038 22.872146 5.0845499 -19.14899 1.3261261 ) (-31.946922 16.984317 3.7231555 6.410676 12.512073 4.8620653 ) (-21.967727 25.826026 16.235229 11.272741 -6.89930726 -20.774387 ) (-9.1821537 26.711574 9.33592225 -9.50164796 9.0851593 30.235496 ) (4.69634819 32.327667 18.421081 20.733848 -11.4413375 -46.167587 ) (17.3967628 29.977726 6.97974396 -25.433738 6.68019105 22.434852 ) (27.716602 15.761413 13.659935 -2.9988861 -9.27941896 -1.57182884 ) (36.736824 11.976614 4.3805151 -4.57071495 12.4374847 -4.14753914 ) (47.336082 5.33212757 16.818 -8.7182541 -28.470516 6.1619911 ) (49.918823 -0.305130005 -11.652515 -2.55626249 5.4445772 -2.50043249 ) (40.988594 -4.1116085 -6.2079382 -5.05669499 6.69220734 -8.16025926 ) (38.126762 -13.248434 0.484269857 -13.216955 -14.213407 5.14147759 ) (31.504329 -23.894649 -13.729139 -8.0754776 -3.83857536 5.59434796 ) (15.855903 -29.172954 -17.567714 -2.48112965 17.567714 2.48112965 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 124Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 13:44:08) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((2 ((192 0) (192 301)) NIL ((0 301. 0 0 0 0 )) NATURAL) (2 ((192 301) (52 301)) NIL ((-140. 0 0 0 0 0 )) NATURAL) (2 ((52 301) (52 337)) NIL ((0 36. 0 0 0 0 )) NATURAL) (2 ((52 337) (388 337)) NIL ((336. 0 0 0 0 0 )) NATURAL) (2 ((388 337) (388 301)) NIL ((0 -36. 0 0 0 0 )) NATURAL) (2 ((388 301) (254 301)) NIL ((-134. 0 0 0 0 0 )) NATURAL) (2 ((254 301) (254 0)) NIL ((0 -301. 0 0 0 0 )) NATURAL) (2 ((254 0) (192 0)) NIL ((-62. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 125Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 13:47:06) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((13 ((390 83) (381 56) (364 35) (340 18) (309 5) (271 -4) (220 -8) (169 -4) (132 5) (100 18) (76 35) (60 56) (51 83)) NIL ((-7.24374676 -28.381198 0 0 -10.5375175 8.2871933 ) (-12.512506 -24.237598 -10.5375175 8.2871933 4.6875944 -5.4359722 ) (-20.706226 -18.668392 -5.84992314 2.85122108 -2.21286487 1.45669841 ) (-27.662582 -15.088821 -8.062788 4.3079195 4.16386414 -0.390820980 ) (-33.643432 -10.9763126 -3.8989234 3.91709852 -14.4425907 0.106587886 ) (-44.763656 -7.00592137 -18.341514 4.0236864 17.606502 5.96446896 ) (-54.301918 6.37024641E-7 -0.735011101 9.98815537 22.016567 -5.9644699 ) (-44.02864 7.00592137 21.281559 4.02368546 -21.67279 -0.106587410 ) (-33.58348 10.9763126 -0.391231656 3.91709805 10.6745968 0.390821457 ) (-28.637413 15.088821 10.283365 4.3079195 -3.02559567 -1.45669794 ) (-19.866848 18.668392 7.25776959 2.85122156 1.42778682 5.43597126 ) (-11.895185 24.237602 8.6855564 8.2871933 -8.6855564 -8.2871933 )) NATURAL) (2 ((51 83) (51 337)) NIL ((0 254. 0 0 0 0 )) NATURAL) (2 ((51 337) (101 337)) NIL ((50. 0 0 0 0 0 )) NATURAL) (2 ((101 337) (101 83)) NIL ((0 -254. 0 0 0 0 )) NATURAL) (10 ((101 83) (110 61) (127 46) (149 37) (196 30) (245 30) (292 37) (314 46) (331 61) (340 83)) NIL ((6.73856164 -23.4566 0 0 13.568626 8.7396221 ) (13.5228748 -19.086792 13.568626 8.7396221 -19.843132 -1.69811344 ) (17.169933 -11.196226 -6.27450753 7.04150868 47.803909 -7.94716836 ) (34.797386 -8.1283016 41.529403 -0.905660153 -51.372535 9.4867897 ) (50.640518 -4.29056549 -9.8431358 8.58113099 19.686271 0 ) (50.640518 4.29056549 9.8431358 8.58113099 -51.372535 -9.4867897 ) (34.797378 8.1283016 -41.529403 -0.905660153 47.803909 7.94716836 ) (17.169933 11.196226 6.27450944 7.04150868 -19.843135 1.69811344 ) (13.5228748 19.086792 -13.568626 8.7396221 13.568626 -8.7396221 )) NATURAL) (2 ((340 83) (340 337)) NIL ((0 254. 0 0 0 0 )) NATURAL) (2 ((340 337) (390 337)) NIL ((50. 0 0 0 0 0 )) NATURAL) (2 ((390 337) (390 83)) NIL ((0 -254. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 126Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 13:51:38) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((2 ((21 337) (192 0)) NIL ((171. -337. 0 0 0 0 )) NATURAL) (2 ((192 0) (248 0)) NIL ((56. 0 0 0 0 0 )) NATURAL) (2 ((248 0) (420 337)) NIL ((172. 337. 0 0 0 0 )) NATURAL) (2 ((420 337) (370 337)) NIL ((-50. 0 0 0 0 0 )) NATURAL) (2 ((370 337) (220 44)) NIL ((-150. -293. 0 0 0 0 )) NATURAL) (2 ((220 44) (71 337)) NIL ((-149. 293. 0 0 0 0 )) NATURAL) (2 ((71 337) (21 337)) NIL ((-50. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 127Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 13:57:20) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((2 ((24 337) (90 0)) NIL ((66. -337. 0 0 0 0 )) NATURAL) (2 ((90 0) (143 0)) NIL ((53. 0 0 0 0 0 )) NATURAL) (2 ((143 0) (221 288)) NIL ((78. 288. 0 0 0 0 )) NATURAL) (2 ((221 288) (298 0)) NIL ((77. -288. 0 0 0 0 )) NATURAL) (2 ((298 0) (351 0)) NIL ((53. 0 0 0 0 0 )) NATURAL) (2 ((351 0) (417 337)) NIL ((66. 337. 0 0 0 0 )) NATURAL) (2 ((417 337) (367 337)) NIL ((-50. 0 0 0 0 0 )) NATURAL) (2 ((367 337) (317 79)) NIL ((-50. -258. 0 0 0 0 )) NATURAL) (2 ((317 79) (247 337)) NIL ((-70. 258. 0 0 0 0 )) NATURAL) (2 ((247 337) (194 337)) NIL ((-53. 0 0 0 0 0 )) NATURAL) (2 ((194 337) (124 79)) NIL ((-70. -258. 0 0 0 0 )) NATURAL) (2 ((124 79) (74 337)) NIL ((-50. 258. 0 0 0 0 )) NATURAL) (2 ((74 337) (24 337)) NIL ((-50. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 130Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 14:06:06) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((2 ((49 0) (107 0)) NIL ((58. 0 0 0 0 0 )) NATURAL) (2 ((107 0) (219 142)) NIL ((112. 142. 0 0 0 0 )) NATURAL) (2 ((219 142) (331 0)) NIL ((112. -142. 0 0 0 0 )) NATURAL) (2 ((331 0) (389 0)) NIL ((58. 0 0 0 0 0 )) NATURAL) (2 ((389 0) (248 179)) NIL ((-141. 179. 0 0 0 0 )) NATURAL) (2 ((248 179) (372 337)) NIL ((124. 158. 0 0 0 0 )) NATURAL) (2 ((372 337) (314 337)) NIL ((-58. 0 0 0 0 0 )) NATURAL) (2 ((314 337) (219 216)) NIL ((-95. -121. 0 0 0 0 )) NATURAL) (2 ((219 216) (125 337)) NIL ((-94. 121. 0 0 0 0 )) NATURAL) (2 ((125 337) (66 337)) NIL ((-59. 0 0 0 0 0 )) NATURAL) (2 ((66 337) (189 179)) NIL ((123. -158. 0 0 0 0 )) NATURAL) (2 ((189 179) (49 0)) NIL ((-140. -179. 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 131Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 14:08:44) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((2 ((190 0) (190 154)) NIL ((0 154. 0 0 0 0 )) NATURAL) (2 ((190 154) (30 337)) NIL ((-160. 183. 0 0 0 0 )) NATURAL) (2 ((30 337) (91 337)) NIL ((61. 0 0 0 0 0 )) NATURAL) (2 ((91 337) (219 188)) NIL ((128. -149. 0 0 0 0 )) NATURAL) (2 ((219 188) (347 337)) NIL ((128. 149. 0 0 0 0 )) NATURAL) (2 ((347 337) (408 337)) NIL ((61. 0 0 0 0 0 )) NATURAL) (2 ((408 337) (247 154)) NIL ((-161. -183. 0 0 0 0 )) NATURAL) (2 ((247 154) (247 0)) NIL ((0 -154. 0 0 0 0 )) NATURAL) (2 ((247 0) (190 0)) NIL ((-57. 0 0 0 0 0 )) NATURAL)))) ((FAMILY gacha) (CHARACTER 132Q) (FACE M R E) (WIDTH 441 0) (FIDUCIAL 480 480) (VERSION 0 19-SEP-77 14:10:13) (MADE-FROM gachac.cu 0 140 0 0) (SPLINES ((2 ((72 337) (72 301)) NIL ((0 -36. 0 0 0 0 )) NATURAL) (2 ((72 301) (293 301)) NIL ((221. 0 0 0 0 0 )) NATURAL) (2 ((293 301) (61 29)) NIL ((-232. -272. 0 0 0 0 )) NATURAL) (2 ((61 29) (61 0)) NIL ((0 -29. 0 0 0 0 )) NATURAL) (2 ((61 0) (378 0)) NIL ((317. 0 0 0 0 0 )) NATURAL) (2 ((378 0) (378 36)) NIL ((0 36. 0 0 0 0 )) NATURAL) (2 ((378 36) (124 36)) NIL ((-254. 0 0 0 0 0 )) NATURAL) (2 ((124 36) (355 308)) NIL ((231. 272. 0 0 0 0 )) NATURAL) (2 ((355 308) (355 337)) NIL ((0 29. 0 0 0 0 )) NATURAL) (2 ((355 337) (72 337)) NIL ((-283. 0 0 0 0 0 )) NATURAL)))) STOP \ No newline at end of file diff --git a/obsolete/lispusers/splinefonts/SFFONT b/obsolete/lispusers/splinefonts/SFFONT deleted file mode 100644 index 5723b532..00000000 --- a/obsolete/lispusers/splinefonts/SFFONT +++ /dev/null @@ -1,717 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") -(FILECREATED " 1-Oct-91 14:10:29" |{PELE:MV:ENVOS}MEDLEY>SFFONT.;2| 36558 - - changes to%: (VARS SFFONTCOMS) - - previous date%: " 4-Feb-87 23:04:29" |{PELE:MV:ENVOS}MEDLEY>SFFONT.;1|) - - -(* ; " -Copyright (c) 1991 by Venue. All rights reserved. -") - -(PRETTYCOMPRINT SFFONTCOMS) - -(RPAQQ SFFONTCOMS - ((RECORDS SF.CHARACTER SF.CHARDESC SF.DERIVATIVE SF.FACE SF.FAMILY SF.FIDUCIAL SF.MADE-FROM - SF.SPLINE SF.SPLINES SF.VERSION SF.WIDTH) - (FNS READ.SPLINE.FONT SF.DERIVS.TO.BEZIER SF.PRINT SFDRAW SFDRAW.CLOSED.CURVE TEST - VIEW.FONT.FILES \LOOKUPSPLINEFONT \SETSPLINEFONT ginit) - (DECLARE%: EVAL@LOAD DONTCOPY (FILES (LOADCOMP) - IRISSTREAM) - (VARS TIMESROMANDFILES TRA TRB TRC TRFILES)) - (INITVARS (\SPLINEFONTSINCORE (LIST NIL))) - (GLOBALVARS \SPLINEFONTSINCORE) - (CONSTANTS (\CHARSEGMENTS.IRIS 10)))) -(DECLARE%: EVAL@COMPILE - -(RECORD SF.CHARACTER (CHARCODE)) - -(ASSOCRECORD SF.CHARDESC (FAMILY CHARACTER FACE WIDTH FIDUCIAL VERSION SPLINES) - (ACCESSFNS (SF.WIDTH (FETCH WIDTH OF DATUM)))) - -(RECORD SF.DERIVATIVE (XPRIME YPRIME XDPRIME YDPRIME XTPRIME YTPRIME)) - -(RECORD SF.FACE (WEIGHT SLOPE EXPANSION)) - -(RECORD SF.FAMILY (SFFAMILY)) - -(RECORD SF.FIDUCIAL (XFIDUCIAL YFIDUCIAL)) - -(RECORD SF.MADE-FROM (FILENAME XCHAR.ORIGIN YCHAR.ORIGIN XFIDUCIAL.ORIGIN YFIDUCIAL.ORIGIN)) - -(RECORD SF.SPLINE (%#OFKNOTS KNOTLIST WEIGHTLIST DERIVATIVELIST . OPTIONALSOLNMETHOD)) - -(RECORD SF.SPLINES (CLOSEDCURVELIST)) - -(RECORD SF.VERSION (VERSION DATE TIME)) - -(RECORD SF.WIDTH (XWIDTH YWIDTH)) -) -(DEFINEQ - -(READ.SPLINE.FONT - [LAMBDA (FILES FAMILY CHARSET) (* ; "Edited 4-Feb-87 22:54 by gbn") - -(* ;;; "reads SF files and updates \SPLINEFONTSINCORE. \SPLINEFONTSINCORE looks like (((FAMILY1 CHARSET#) FONTARRAY1) ...)") - -(* ;;; "should learn about sd files") - - (PROG (FONTARRAY FAM I CHAR) - (PROG1 (RETURN (BIND INPUTSTREAM for F in (OR (LISTP FILES) - (LIST FILES)) - collect (RESETLST (RESETSAVE NIL (LIST 'CLOSEF? INPUTSTREAM)) - (SETQ INPUTSTREAM (OPENSTREAM F 'INPUT)) - (SETQ CHAR (READ INPUTSTREAM FILERDTBL)) - [SETQ FAM (OR FAMILY (U-CASE (fetch SFFAMILY - of (fetch FAMILY - of CHAR] - (* ; - "the fontarray can already be here, since a single file need not contain a whole character set.") - [if (NOT (SETQ FONTARRAY (\LOOKUPSPLINEFONT FAM CHARSET))) - then (\SETSPLINEFONT FAM CHARSET (SETQ FONTARRAY - (ARRAY (ADD1 - \MAXTHINCHAR - ] - (PROG1 (CONS FAM - (bind C - repeatwhile (NEQ 'STOP (SETQ CHAR - (READ INPUTSTREAM - FILERDTBL))) - collect (SETA FONTARRAY - (SETQ C - (fetch CHARCODE - of (fetch CHARACTER - of CHAR))) - CHAR) - (PRINTOUT PROMPTWINDOW - (SETQ C (CHARACTER C))) - C)) - (CLOSEF INPUTSTREAM]) - -(SF.DERIVS.TO.BEZIER - [LAMBDA (KNOT XOFFSET YOFFSET SCALE DERIVATIVES) (* gbn " 1-Aug-84 05:51") - - (* * Compute the Bezier control points from the derivative coefficients. - Stolen from graphics>cgcubicimpl.mesa Returns an array of 4 xyz - points suitable for handing to the iris draw curve function - (IRIS.CURVE format)) - - (PROG [[BEZ (create BEZIER - B0X _ (PLUS XOFFSET (TIMES SCALE (fetch XCOORD of KNOT))) - B0Y _ (PLUS YOFFSET (TIMES SCALE (fetch YCOORD of KNOT] - (DERIVS (for I from 1 to (LENGTH DERIVATIVES) - collect (TIMES SCALE (QUOTIENT (CAR (NTH DERIVATIVES I)) - (ELT \FACT.IRIS (IQUOTIENT (ADD1 I) - 2] - (replace B1X of BEZ with (PLUS (fetch B0X of BEZ) - (QUOTIENT (fetch XPRIME of DERIVS) - 3))) - (replace B1Y of BEZ with (PLUS (fetch B0Y of BEZ) - (QUOTIENT (fetch YPRIME of DERIVS) - 3))) - (replace B2X of BEZ with (PLUS (fetch B1X of BEZ) - (QUOTIENT (PLUS (fetch XPRIME of DERIVS) - (fetch XDPRIME of DERIVS)) - 3))) - (replace B2Y of BEZ with (PLUS (fetch B1Y of BEZ) - (QUOTIENT (PLUS (fetch YPRIME of DERIVS) - (fetch YDPRIME of DERIVS)) - 3))) - (replace B3X of BEZ with (PLUS (fetch B0X of BEZ) - (fetch XPRIME of DERIVS) - (fetch XDPRIME of DERIVS) - (fetch XTPRIME of DERIVS))) - (replace B3Y of BEZ with (PLUS (fetch B0Y of BEZ) - (fetch YPRIME of DERIVS) - (fetch YDPRIME of DERIVS) - (fetch YTPRIME of DERIVS))) - (RETURN BEZ]) - -(SF.PRINT - [LAMBDA (STRING FONTFAMILY SCALE STREAM) (* ; "Edited 16-Jan-87 16:22 by gbn") - (DECLARE%: (GLOBALVARS \SPLINEFONTSINCORE)) - -(* ;;; "Uses SFDRAW to draw a single char at a time to print out a string in the chosen font. Defaults to GACHA") - - (PROG ((FONTARRAY (ASSOC (OR FONTFAMILY 'GACHA) - \SPLINEFONTSINCORE)) - CHAR CHARDESC) - (if FONTARRAY - then (SETQ FONTARRAY (CADR FONTARRAY)) - else (printout T "Spline font" %, FONTFAMILY %, - "not in core. Load it with READ.SPLINE.FONT") - (LISPERROR)) - (for I to (NCHARS STRING) do (SETQ CHAR (NTHCHARCODE STRING I)) - (SETQ CHARDESC (ELT FONTARRAY CHAR)) - (if CHARDESC - then (SFDRAW CHARDESC NIL NIL NIL SCALE STREAM) - else (* ; - "well, what to do? ignore for now. The char is not currently there") - )) - (FLUSHOUTPUT STREAM) - (RETURN STRING]) - -(SFDRAW - [LAMBDA (CHARDESC PRECISION XOFFSET YOFFSET SCALE STREAM) (* gbn "24-Oct-85 16:59") - - (* * takes a character descriptor in SF format and draws it on STREAM) - - (PROG ((PRECISION (OR PRECISION \CHARSEGMENTS.IRIS)) - (X (OR XOFFSET (DSPXPOSITION NIL STREAM))) - (Y (OR YOFFSET (DSPYPOSITION NIL STREAM))) - (SCALE (OR SCALE 1.0)) - XWIDTH) - (for CCURVE in (fetch SPLINES of CHARDESC) - do (SFDRAW.CLOSED.CURVE CCURVE PRECISION X Y SCALE STREAM)) - (MOVETO [IPLUS X (SETQ XWIDTH (TIMES SCALE (fetch XWIDTH of (fetch SF.WIDTH of CHARDESC] - [IPLUS Y (TIMES SCALE (fetch YWIDTH of (fetch SF.WIDTH of CHARDESC] - STREAM) - (RETURN XWIDTH]) - -(SFDRAW.CLOSED.CURVE - [LAMBDA (CCURVE PRECISION XOFFSET YOFFSET SCALE STREAM) (* gbn "21-Jun-85 03:00") - - (* * A closed curve looks like a list of splines. - Each spline is described by the record SF.SPLINE) - - (PROG ((STREAM (if (EQ (TYPENAME STREAM) - 'WINDOW) - then (WINDOWPROP STREAM 'DSP) - else STREAM)) - (SCALE (OR SCALE 1.0)) - SPPOUTSTREAM) - [for SPLINE in CCURVE - do - - (* if necessary destructively change the knot list to be a list of postions) - - [if [NOT (type? POSITION (CAR (fetch KNOTLIST of SPLINE] - then (for KNOT in (fetch KNOTLIST of SPLINE) do (RPLACD KNOT (CADR KNOT] - (* draw a single spline, driven off - the stream type) - (SELECTQ (TYPENAME (fetch IMAGEDATA of STREAM)) - (IRISDATA - - (* this is for the iris colour monitor, which is interested in Bezier control - points. Use the knots together with the derivative list to produce the Bezier - points to send to the Iris) - - (SETQ SPPOUTSTREAM (fetch SPPOUTSTREAM of (fetch IRISDATA of STREAM))) - (bind BEZIER for I to (SUB1 (fetch %#OFKNOTS of SPLINE)) as KNOT - in (fetch KNOTLIST of SPLINE) as DERIVS - in (fetch DERIVATIVELIST of SPLINE) - do (SETQ BEZIER (SF.DERIVS.TO.BEZIER KNOT XOFFSET YOFFSET SCALE - DERIVS)) - - (* get the bezier control points corresponding to the parametric - (derivative) definition) - - (SELECTQ \IRIS.VERSION - (GL2 (IRIS.CRV BEZIER SPPOUTSTREAM)) - (R1C (IRIS.CURVE PRECISION \BEZIERBASIS.IRIS BEZIER - SPPOUTSTREAM)) - (ERROR)))) - (\DISPLAYDATA - - (* since the display is interested in the control points in the derivative form - as found here, just call the internal parametric spline drawing routine for the - display) - (* (GLOBALRESOURCE \BRUSHBBT - (PROG ((%#KNOTS (fetch %#OFKNOTS of - SPLINE)) (BBT \BRUSHBBT) - (RESULT)) (SETQ RESULT - (create SPLINE %#KNOTS _ %#KNOTS DX _ - (ARRAY %#KNOTS 0 0.0) DDX _ - (ARRAY %#KNOTS 0 0.0) DDDX _ - (ARRAY %#KNOTS 0 0.0) DY _ - (ARRAY %#KNOTS 0 0.0) DDY _ - (ARRAY %#KNOTS 0 0.0) DDDY _ - (ARRAY %#KNOTS 0 0.0) X _ - (ARRAY %#KNOTS 0 0.0) Y _ - (ARRAY %#KNOTS 0 0.0))) - (for I to (SUB1 %#KNOTS) as KNOT in - (fetch KNOTLIST of SPLINE) as DERIVS - in (fetch DERIVATIVELIST of SPLINE) do - (SETA (fetch X of RESULT) I - (PLUS XOFFSET (TIMES SCALE - (fetch XCOORD of KNOT)))) - (SETA (fetch Y of RESULT) I - (PLUS YOFFSET (TIMES SCALE - (fetch YCOORD of KNOT)))) - (SETA (fetch (SPLINE DX) of RESULT) I - (TIMES SCALE (fetch XPRIME of DERIVS))) - (SETA (fetch DY of RESULT) I - (TIMES SCALE (fetch YPRIME of DERIVS))) - (SETA (fetch DDX of RESULT) I - (TIMES SCALE (fetch XDPRIME of DERIVS))) - (SETA (fetch DDY of RESULT) I - (TIMES SCALE (fetch YDPRIME of DERIVS))) - (SETA (fetch DDDX of RESULT) I - (TIMES SCALE (fetch XTPRIME of DERIVS))) - (SETA (fetch DDDY of RESULT) I - (TIMES SCALE (fetch YTPRIME of DERIVS))) - finally (\CURVE2 RESULT 1 NIL BBT - STREAM))))) - ) - (PROGN - - (* Don't know what kind of stream so just do it using the standard DSP fns.) - - (* * "JUNK TO NOT TYPE AGAIN" (SETQ %#KNOTS - (fetch %#OFKNOTS of SPLINE)) (replace %#KNOTS of RESULT with %#KNOTS) - (replace DX OF RESULT WITH (ARRAY %#KNOTS 0 0.0)) - (replace DDX of RESULT with (ARRAY %#KNOTS 0 0.0)) - (replace DDDX of RESULT with (ARRAY %#KNOTS 0 0.0)) - (replace DY of RESULT with (ARRAY %#KNOTS 0 0.0)) - (replace DDY of RESULT with (ARRAY %#KNOTS 0 0.0)) - (replace DDDY of RESULT with (ARRAY %#KNOTS 0 0.0)) - (replace X of RESULT with (ARRAY %#KNOTS 0 0.0)) - (replace Y of RESULT with (ARRAY %#KNOTS 0 0.0))) - - (if SCALE - then (printout T - "SCALE specified for device which does not support it") - (LISPERROR)) - (DRAWCURVE (for KNOT in (fetch KNOTLIST of SPLINE) - collect (create POSITION - XCOORD _ (PLUS (fetch XCOORD of KNOT) - XOFFSET) - YCOORD _ (PLUS (fetch YCOORD of KNOT) - YOFFSET))) - NIL NIL NIL STREAM] - (RETURN]) - -(TEST - [LAMBDA (STRING COLOR SCALE) (* gbn " 1-Aug-84 02:45") - - (* * comment) - - (PROG NIL - (IRIS.COLOR IRIS.BLACK) - (IRIS.CLEAR) - (IRIS.COLOR (OR COLOR IRIS.BLUE)) - (SF.PRINT (OR STRING "Greg") - NIL SCALE STR) - (IRIS.GFLUSH) - (RETURN]) - -(VIEW.FONT.FILES - [LAMBDA (FILES) (* edited%: " 9-Aug-84 05:35") - - (* * comment) - - (PROG (FONTARRAY FAMILY I CHAR) - (RETURN (for F in (OR (LISTP FILES) - (LIST FILES)) - collect (SETQ I (OPENSTREAM F 'INPUT)) - (SETQ CHAR (READ I)) - (CONS FAMILY (bind C repeatwhile (NEQ 'STOP (SETQ CHAR (READ I))) - collect [SETQ C (CHARACTER (fetch CHARCODE - of (fetch CHARACTER - of CHAR] - (printout T C %,) - C finally (CLOSEF I]) - -(\LOOKUPSPLINEFONT - [LAMBDA (FAMILY CHARSET) (* gbn "22-Oct-85 12:09") - - (* * if there is a font array in core for this charset of this font family, - this returns it, else nil) - - (LET ((ENTRY (SASSOC (LIST FAMILY CHARSET) - \SPLINEFONTSINCORE))) - (AND ENTRY (CDR ENTRY]) - -(\SETSPLINEFONT - [LAMBDA (FAMILY CHARSET ARRAY) (* gbn "22-Oct-85 11:42") - - (* * installs a font array in \splinefontsincore for this family and charset) - - (PUTASSOC (LIST FAMILY CHARSET) - ARRAY \SPLINEFONTSINCORE]) - -(ginit - [LAMBDA NIL (* edited%: " 6-Aug-84 12:00") - (if (MOUSECONFIRM - "do you really want to ginit. You destroy font definitions which must be reloaded?" - NIL (if (HASTTYWINDOWP) - then T - else PROMPTWINDOW)) - then (IRIS.GINIT) - (IRIS.CURSOFF) - (IRIS.CLEAR) - (makecolormap) - (IRIS.SETCURSOR 0 1 255) - (IRIS.COLOR IRIS.RED]) -) -(DECLARE%: EVAL@LOAD DONTCOPY - -(FILESLOAD (LOADCOMP) - IRISSTREAM) - - -(RPAQQ TIMESROMANDFILES (TIMESROMAND.LC1-SF;1 TIMESROMAND.LC2-SF;1 TIMESROMAND.NUM-SF;1 - TIMESROMAND.S1-SF;1 TIMESROMAND.S3-SF;1 TIMESROMAND.UC1-SF;1 - TIMESROMAND.UC2-SF;1)) - -(RPAQQ TRA - [(FAMILY TIMESROMAND) - (CHARACTER 97) - (FACE M R R) - (WIDTH 237 0) - (FIDUCIAL 385 385) - (VERSION 0 29-SEP-77 |16:35:46|) - (MADE-FROM NIL 121 130 62 40) - (SPLINES ((2 ((200 . 153) - (200 . 45)) - NIL - ((0 -108.0 0 0 0 0)) - NATURAL) - (4 ((200 . 45) - (202 . 28) - (214 . 23) - (223 . 27)) - NIL - ((-0.866666 -19.6 0 0 17.2 15.6) - (7.733334 -11.8 17.2 15.6 -26.0 -6.000002) - (11.93333 0.8000005 -8.8 9.599998 8.8 -9.599998)) - NATURAL) - (2 ((223 . 27) - (227 . 20)) - NIL - ((4.0 -7.0 0 0 0 0)) - NATURAL) - (7 ((227 . 20) - (216 . 9) - (197 . -1) - (170 . -6) - (144 . -2) - (126 . 7) - (117 . 23)) - NIL - ((-9.420512 -11.06538 0 0 -9.476924 0.3923078) - (-14.15898 -10.86923 -9.476924 0.3923078 -0.6153832 4.038461) - (-23.94359 -8.457692 -10.09231 4.430769 11.93846 7.453844) - (-28.06666 -0.2999992 1.846154 11.88461 6.861538 -9.853844) - (-22.78974 6.657692 8.707692 2.030769 2.615385 7.961536) - (-12.77436 12.66923 11.32308 9.992306 -11.32308 -9.992306)) - NATURAL) - (10 ((117 . 23) - (89 . 4) - (62 . -3) - (37 . 3) - (18 . 25) - (18 . 52) - (32 . 77) - (60 . 98) - (92 . 113) - (118 . 125)) - NIL - ((-28.15654 -21.56226 0 0 0.9392528 15.37358) - (-27.68691 -13.87547 0.9392528 15.37358 1.303736 -4.867924) - (-26.0958 -0.9358488 2.242989 10.50566 -0.1541991 10.09811) - (-23.9299 14.61887 2.08879 20.60377 23.31306 -17.52453) - (-10.18458 26.46038 25.40185 3.079245 -15.09804 -6.0) - (7.668246 26.53962 10.30381 -2.920755 7.079094 -0.4754715) - (21.51161 23.38113 17.3829 -3.396226 -13.21835 -4.098113) - (32.28533 17.93585 4.164558 -7.494339 -14.20569 4.867924) - (29.34705 12.87547 -10.04114 -2.626415 10.04114 2.626415)) - NATURAL) - (2 ((118 . 125) - (118 . 166)) - NIL - ((0 41.0 0 0 0 0)) - NATURAL) - (17 ((118 . 166) - (110 . 187) - (91 . 189) - (88 . 171) - (98 . 152) - (85 . 130) - (59 . 124) - (32 . 132) - (21 . 154) - (31 . 182) - (55 . 198) - (86 . 205) - (118 . 208) - (148 . 205) - (175 . 196) - (195 . 177) - (200 . 153)) - NIL - ((-4.255993 24.64079 0 0 -22.46404 -21.84477) - (-15.48801 13.71841 -22.46404 -21.84477 46.32022 -4.776135) - (-14.79195 -10.51443 23.85617 -26.62091 -0.8168106 34.94932) - (8.655816 -19.66068 23.03936 8.328413 -61.05298 -21.02116) - (1.168687 -21.84285 -38.01361 -12.69275 29.0287 37.13531) - (-22.33057 -15.96793 -8.984904 24.44257 4.938131 -13.52012) - (-28.8464 1.714581 -4.046773 10.92245 23.21877 4.945154) - (-21.2838 15.10961 19.172 15.86761 4.186775 -6.260496) - (-0.01840973 27.84697 23.35877 9.607112 -9.965858 -27.90316) - (18.35743 23.5025 13.39291 -18.29605 -6.323341 9.873148) - (28.58868 10.14302 7.069574 -8.422904 -6.740779 6.410579) - (32.28786 4.925408 0.3287937 -2.012324 -2.713542 -5.515475) - (31.25988 0.1553465 -2.384749 -7.527798 -0.4050512 3.651317) - (28.67261 -5.546795 -2.7898 -3.876482 -1.666252 -9.089788) - (25.04968 -13.96817 -4.456052 -12.96627 -16.92993 8.707838) - (12.12866 -22.58052 -21.38599 -4.258433 21.38599 4.258433)) - NATURAL)) - ((2 ((118 . 108) - (118 . 58)) - NIL - ((0 -50.0 0 0 0 0)) - NATURAL) - (9 ((118 . 58) - (118 . 49) - (111 . 38) - (97 . 39) - (90 . 49) - (88 . 66) - (93 . 83) - (104 . 99) - (118 . 108)) - NIL - ((1.256443 -7.739323 0 0 -7.53866 -7.564064) - (-2.512887 -11.52136 -7.53866 -7.564064 -4.3067 25.82032) - (-12.2049 -6.175257 -11.84536 18.25626 24.76546 -11.71723) - (-11.66752 6.222386 12.9201 6.539029 -10.75515 3.048599) - (-4.124999 14.28571 2.164949 9.587628 6.255152 -12.47717) - (1.167526 17.63475 8.420102 -2.889543 -2.265462 4.860088) - (8.454898 17.17526 6.154639 1.970545 -3.193299 -12.96318) - (13.01289 12.66421 2.96134 -10.99263 -2.96134 10.99263)) - NATURAL]) - -(RPAQQ TRB - [(FAMILY TIMESROMAND) - (CHARACTER 99) - (FACE M R R) - (WIDTH 211 0) - (FIDUCIAL 385 385) - (VERSION 0 29-SEP-77 |16:50:06|) - (MADE-FROM NIL 118 130 57 78) - (SPLINES ((2 ((181 . 46) - (189 . 37)) - NIL - ((8.0 -9.0 0 0 0 0)) - NATURAL) - (32 ((189 . 37) - (166 . 14) - (135 . -1) - (92 . -4) - (59 . 7) - (33 . 30) - (16 . 66) - (12 . 101) - (17 . 136) - (30 . 166) - (51 . 189) - (86 . 204) - (125 . 206) - (154 . 202) - (180 . 189) - (196 . 168) - (196 . 143) - (178 . 127) - (155 . 124) - (138 . 134) - (130 . 155) - (130 . 176) - (124 . 189) - (111 . 184) - (96 . 160) - (91 . 129) - (93 . 95) - (102 . 63) - (117 . 42) - (144 . 33) - (167 . 39) - (181 . 46)) - NIL - ((-21.8826 -24.50792 0 0 -6.704422 9.047542) - (-25.23481 -19.98415 -6.704422 9.047542 -14.47789 2.762293) - (-39.17817 -9.555464 -21.18231 11.80983 40.61599 3.903284) - (-40.05249 4.206011 19.43367 15.71312 -15.98606 -6.375422) - (-28.61185 16.73142 3.447612 9.337696 5.328262 9.5984) - (-22.50011 30.86831 8.775874 18.9361 6.673012 -26.01818) - (-10.38772 36.79532 15.44889 -7.082087 -8.020304 10.47433) - (1.051008 34.95039 7.428581 3.392247 1.408212 -9.879148) - (9.183696 33.40307 8.836792 -6.486902 -3.612545 -0.9577408) - (16.21421 26.4373 5.224247 -7.444641 13.04197 1.710107) - (27.95945 19.84771 18.26621 -5.734535 -12.55532 -11.88268) - (39.948 8.171835 5.710896 -17.61722 -22.82069 15.82064) - (34.24855 -1.535063 -17.1098 -1.796579 19.83808 -9.399882) - (27.05779 -8.031584 2.728286 -11.19646 -14.53163 3.778893) - (22.52026 -17.3386 -11.80335 -7.417568 -3.711554 0.2843065) - (8.861142 -24.61401 -15.5149 -7.133261 -6.622156 19.08388) - (-9.964836 -22.20533 -22.13706 11.95062 18.20018 1.380173) - (-23.0018 -9.564632 -3.936874 13.33079 11.82142 -0.6045686) - (-21.02796 3.463873 7.884551 12.72622 0.5141201 1.038099) - (-12.88635 16.70915 8.39867 13.76432 4.122093 -15.54783) - (-2.426633 22.69955 12.52076 -1.783509 -23.00249 -4.846774) - (-1.407115 18.49265 -10.48173 -6.630284 3.887866 -13.06508) - (-9.944906 5.329831 -6.59386 -19.69536 1.451023 -2.892914) - (-15.81326 -15.81199 -5.142837 -22.58827 20.30804 18.63673) - (-10.80207 -29.08189 15.16521 -3.951541 -10.6832 0.3459764) - (-0.978461 -32.86044 4.482012 -3.605564 4.424731 3.979362) - (5.715916 -34.47633 8.906742 0.373798 -7.015726 13.73657) - (11.1148 -27.23424 1.891017 14.11037 17.63817 -4.92565) - (21.8249 -15.5867 19.52919 9.184722 -27.53697 11.96602) - (27.5856 -0.4189663 -8.007784 21.15074 -3.490269 -24.93843) - (17.83268 8.262562 -11.49805 -3.787686 11.49805 3.787686)) - NATURAL]) - -(RPAQQ TRC - [(FAMILY TIMESROMAND) - (CHARACTER 100) - (FACE M R R) - (WIDTH 250 0) - (FIDUCIAL 385 385) - (VERSION 0 29-SEP-77 |16:56:16|) - (MADE-FROM NIL 103 130 57 78) - (SPLINES ((2 ((136 . 269) - (136 . 189)) - NIL - ((0 -80.0 0 0 0 0)) - NATURAL) - (15 ((136 . 189) - (114 . 204) - (86 . 211) - (57 . 203) - (40 . 190) - (25 . 168) - (16 . 140) - (12 . 110) - (13 . 82) - (20 . 51) - (32 . 28) - (52 . 8) - (82 . -2) - (111 . 7) - (136 . 25)) - NIL - ((-20.69145 16.12365 0 0 -7.851328 -6.741922) - (-24.61711 12.75269 -7.851328 -6.741922 3.256639 -14.29039) - (-30.84012 -1.134427 -4.594689 -21.03232 24.82477 21.9035) - (-23.02242 -11.21499 20.23008 0.8711902 -24.55573 -13.32363) - (-15.0702 -17.00562 -4.325648 -12.45244 13.39815 7.391023) - (-12.69677 -25.76255 9.072504 -5.061419 -5.036883 1.759538) - (-6.142708 -29.9442 4.035622 -3.30188 0.749383 9.57082) - (-1.732394 -28.46066 4.785005 6.268941 2.039351 -16.04282) - (4.072286 -30.21314 6.824355 -9.773884 -2.906779 24.60048) - (9.443252 -27.68678 3.917576 14.82659 3.587763 -16.35907) - (15.15471 -21.03973 7.505339 -1.532484 6.555731 10.83583) - (25.93791 -17.1543 14.06107 9.303344 -17.81069 15.01576) - (31.09364 -0.3430727 -3.749619 24.31911 -1.312975 -16.89888) - (26.68753 15.52659 -5.062595 7.420223 5.062595 -7.420223)) - NATURAL) - (2 ((136 . 25) - (136 . -3)) - NIL - ((0 -28.0 0 0 0 0)) - NATURAL) - (2 ((136 . -3) - (241 . 10)) - NIL - ((105.0 13.0 0 0 0 0)) - NATURAL) - (2 ((241 . 10) - (241 . 15)) - NIL - ((0 5.0 0 0 0 0)) - NATURAL) - (5 ((241 . 15) - (231 . 19) - (222 . 26) - (217 . 37) - (217 . 50)) - NIL - ((-10.07143 3.446428 0 0 0.4285715 3.321429) - (-9.857142 5.107143 0.4285715 3.321429 3.857143 1.392856) - (-7.5 9.125 4.285714 4.714285 2.142858 -2.892857) - (-2.142857 12.39286 6.428572 1.821428 -6.428572 -1.821428)) - NATURAL) - (2 ((217 . 50) - (217 . 300)) - NIL - ((0 250.0 0 0 0 0)) - NATURAL) - (2 ((217 . 300) - (117 . 300)) - NIL - ((-100.0 0 0 0 0 0)) - NATURAL) - (2 ((117 . 300) - (117 . 295)) - NIL - ((0 -5.0 0 0 0 0)) - NATURAL) - (4 ((117 . 295) - (128 . 291) - (134 . 283) - (136 . 269)) - NIL - ((12.06667 -3.333333 0 0 -6.4 -4.0) - (8.866666 -5.333333 -6.4 -4.0 2.0 -4.0) - (3.466666 -11.33333 -4.4 -8.0 4.4 8.0)) - NATURAL)) - ((2 ((136 . 159) - (136 . 79)) - NIL - ((0 -80.0 0 0 0 0)) - NATURAL) - (12 ((136 . 79) - (133 . 52) - (122 . 34) - (108 . 40) - (100 . 62) - (96 . 88) - (95 . 116) - (97 . 143) - (104 . 168) - (117 . 179) - (130 . 174) - (136 . 159)) - NIL - ((-1.169987 -27.97882 0 0 -10.98008 5.872907) - (-6.660026 -25.04236 -10.98008 5.872907 6.900384 24.63546) - (-14.18991 -6.851724 -4.079692 30.50837 13.37854 -14.41478) - (-11.58033 16.44926 9.298848 16.0936 -6.414546 -14.97637) - (-5.488757 25.05467 2.884301 1.117225 0.279644 2.320276) - (-2.464635 27.33204 3.163945 3.437501 -0.7040282 -6.304729) - (0.3472968 27.61717 2.459917 -2.867228 2.536468 4.898638) - (4.075448 27.19927 4.996385 2.03141 2.558155 -19.28982) - (10.35091 19.58576 7.55454 -17.25841 -6.769083 0.2606583) - (14.52091 2.457678 0.785456 -16.99775 -11.48182 6.247193) - (9.565454 -11.41648 -10.69636 -10.75056 10.69636 10.75056)) - NATURAL]) - -(RPAQQ TRFILES ({INDIGO}OLDSF>TIMESROMAND.LC1-SF;1 - {INDIGO}OLDSF>TIMESROMAND.LC2-SF;1 - {INDIGO}OLDSF>TIMESROMAND.NUM-SF;1 - {INDIGO}OLDSF>TIMESROMAND.S1-SF;1 - {INDIGO}OLDSF>TIMESROMAND.S3-SF;1 - {INDIGO}OLDSF>TIMESROMAND.UC1-SF;1 - {INDIGO}OLDSF>TIMESROMAND.UC2-SF;1)) -) - -(RPAQ? \SPLINEFONTSINCORE (LIST NIL)) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS \SPLINEFONTSINCORE) -) -(DECLARE%: EVAL@COMPILE - -(RPAQQ \CHARSEGMENTS.IRIS 10) - - -(CONSTANTS (\CHARSEGMENTS.IRIS 10)) -) -(PUTPROPS SFFONT COPYRIGHT ("Venue" 1991)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (1784 19991 (READ.SPLINE.FONT 1794 . 4813) (SF.DERIVS.TO.BEZIER 4815 . 7456) (SF.PRINT -7458 . 8733) (SFDRAW 8735 . 9574) (SFDRAW.CLOSED.CURVE 9576 . 17439) (TEST 17441 . 17819) ( -VIEW.FONT.FILES 17821 . 18759) (\LOOKUPSPLINEFONT 18761 . 19148) (\SETSPLINEFONT 19150 . 19442) (ginit - 19444 . 19989))))) -STOP diff --git a/obsolete/lispusers/splinefonts/TIMESROMAN.LC1-SF b/obsolete/lispusers/splinefonts/TIMESROMAN.LC1-SF deleted file mode 100644 index 3746dd3c..00000000 --- a/obsolete/lispusers/splinefonts/TIMESROMAN.LC1-SF +++ /dev/null @@ -1 +0,0 @@ - ((FAMILY TIMESROMAND) (CHARACTER 141Q) (FACE M R R) (WIDTH 237 0) (FIDUCIAL 385 385) (VERSION 0 29-SEP-77 16:35:46) (MADE-FROM NIL 121 130 62 40) (SPLINES ((2 ((200 153) (200 45)) NIL ((0 -108. 0 0 0 0 )) NATURAL) (4 ((200 45) (202 28) (214 23) (223 27)) NIL ((-0.866666079 -19.599998 0 0 17.1999969 15.6 ) (7.73333359 -11.799999 17.1999969 15.6 -25.999996 -6.0000019 ) (11.933332 0.800000430 -8.79999925 9.59999848 8.79999925 -9.59999848 )) NATURAL) (2 ((223 27) (227 20)) NIL ((4. -7. 0 0 0 0 )) NATURAL) (7 ((227 20) (216 9) (197 -1) (170 -6) (144 -2) (126 7) (117 23)) NIL ((-9.42051126 -11.0653839 0 0 -9.476923 0.392307758 ) (-14.1589737 -10.86923 -9.476923 0.392307758 -0.615383148 4.03846073 ) (-23.943588 -8.4576912 -10.092306 4.43076897 11.938459 7.45384408 ) (-28.066665 -0.299999237 1.84615373 11.884613 6.86153699 -9.8538437 ) (-22.789741 6.65769196 8.7076912 2.03076935 2.61538505 7.9615364 ) (-12.7743587 12.669231 11.323076 9.99230577 -11.323076 -9.99230577 )) NATURAL) (10 ((117 23) (89 4) (62 -3) (37 3) (18 25) (18 52) (32 77) (60 98) (92 113) (118 125)) NIL ((-28.156539 -21.562263 0 0 0.939252735 15.373584 ) (-27.686912 -13.875471 0.939252735 15.373584 1.30373621 -4.86792374 ) (-26.095794 -0.935848833 2.24298906 10.505661 -0.154199123 10.09811 ) (-23.9299 14.6188678 2.08878994 20.603771 23.313056 -17.524524 ) (-10.1845836 26.460376 25.401847 3.07924461 -15.098037 -5.99999905 ) (7.6682453 26.539619 10.30381 -2.92075443 7.07909394 -0.475471497 ) (21.511604 23.38113 17.382904 -3.39622593 -13.218345 -4.09811306 ) (32.285331 17.935848 4.16455746 -7.494339 -14.205694 4.86792374 ) (29.347045 12.875471 -10.0411377 -2.62641525 10.0411377 2.62641525 )) NATURAL) (2 ((118 125) (118 166)) NIL ((0 41. 0 0 0 0 )) NATURAL) (17 ((118 166) (110 187) (91 189) (88 171) (98 152) (85 130) (59 124) (32 132) (21 154) (31 182) (55 198) (86 205) (118 208) (148 205) (175 196) (195 177) (200 153)) NIL ((-4.25599289 24.640792 0 0 -22.464042 -21.844772 ) (-15.488014 13.718408 -22.464042 -21.844772 46.320213 -4.77613449 ) (-14.79195 -10.5144329 23.85617 -26.620906 -0.816810609 34.949317 ) (8.6558151 -19.660678 23.03936 8.328413 -61.05297 -21.02116 ) (1.16868734 -21.842845 -38.01361 -12.692747 29.028705 37.135314 ) (-22.330566 -15.967931 -8.98490335 24.442573 4.93813038 -13.52012 ) (-28.846405 1.71458101 -4.04677296 10.9224529 23.218769 4.94515419 ) (-21.283794 15.109611 19.171997 15.867607 4.1867752 -6.26049615 ) (-0.0184097290 27.846969 23.358772 9.60711099 -9.96585847 -27.90316 ) (18.357429 23.502498 13.3929138 -18.296051 -6.3233404 9.87314797 ) (28.588676 10.1430206 7.0695734 -8.42290307 -6.74077893 6.41057873 ) (32.287857 4.9254074 0.328793704 -2.01232386 -2.71354198 -5.5154743 ) (31.25988 0.155346542 -2.38474846 -7.52779866 -0.405051231 3.65131664 ) (28.672607 -5.54679394 -2.78979969 -3.876482 -1.66625213 -9.08978845 ) (25.049678 -13.96817 -4.45605183 -12.96627 -16.929931 8.70783807 ) (12.128662 -22.58052 -21.385986 -4.25843239 21.385986 4.25843239 )) NATURAL)) ((2 ((118 108) (118 58)) NIL ((0 -50. 0 0 0 0 )) NATURAL) (9 ((118 58) (118 49) (111 38) (97 39) (90 49) (88 66) (93 83) (104 99) (118 108)) NIL ((1.25644326 -7.73932267 0 0 -7.53866006 -7.564064 ) (-2.51288652 -11.5213546 -7.53866006 -7.564064 -4.30669976 25.82032 ) (-12.2048969 -6.17525674 -11.8453598 18.256256 24.76546 -11.7172279 ) (-11.667524 6.2223854 12.920101 6.53902817 -10.7551517 3.04859924 ) (-4.12499905 14.285713 2.16494894 9.5876274 6.25515175 -12.477169 ) (1.16752624 17.634754 8.42010118 -2.88954306 -2.26546192 4.8600874 ) (8.4548969 17.175254 6.15463925 1.97054457 -3.19329929 -12.9631767 ) (13.012886 12.664211 2.96133995 -10.9926338 -2.96133995 10.9926338 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 142Q) (FACE M R R) (WIDTH 252 0) (FIDUCIAL 385 385) (VERSION 0 29-SEP-77 16:44:21) (MADE-FROM NIL 88 130 57 78) (SPLINES ((2 ((112 300) (112 183)) NIL ((0 -117. 0 0 0 0 )) NATURAL) (15 ((112 183) (138 201) (165 207) (195 200) (219 179) (232 150) (238 103) (232 67) (216 33) (186 8) (156 -2) (126 -3) (101 2) (84 11) (67 26)) NIL ((26.012008 20.539005 0 0 -0.0720686913 -15.234035 ) (25.975975 12.921987 -0.0720686913 -15.234035 6.36034299 4.17017746 ) (29.084079 -0.226958573 6.28827477 -11.063858 -13.3693046 -7.44667435 ) (28.687698 -15.014154 -7.08103085 -18.510532 -6.8831148 19.616527 ) (18.165111 -23.716423 -13.964145 1.10599708 10.901762 -35.019447 ) (9.6518459 -40.120147 -3.06238365 -33.913452 -12.723934 60.46128 ) (0.227496445 -43.802963 -15.7863178 26.547828 9.9939747 -32.82569 ) (-10.561834 -33.667976 -5.79234314 -6.2778654 -15.2519607 16.841495 ) (-23.980155 -31.525096 -21.044303 10.563631 27.013866 7.45970345 ) (-31.517528 -17.231613 5.96956349 18.023334 -8.80351258 -10.680305 ) (-29.949722 -4.5484333 -2.83395004 7.343029 8.20018579 -0.738483429 ) (-28.683578 2.42535353 5.36623669 6.6045456 6.0027647 -4.36575794 ) (-20.315956 6.84702016 11.369001 2.23878765 -14.211252 6.20151425 ) (-16.0525818 12.186565 -2.84225082 8.4403019 2.84225082 -8.4403019 )) NATURAL) (2 ((67 26) (36 -3)) NIL ((-31. -29. 0 0 0 0 )) NATURAL) (2 ((36 -3) (31 -3)) NIL ((-5. 0 0 0 0 0 )) NATURAL) (2 ((31 -3) (31 269)) NIL ((0 272. 0 0 0 0 )) NATURAL) (4 ((31 269) (29 283) (23 291) (12 295)) NIL ((-1.26666665 15.333332 0 0 -4.39999962 -8. ) (-3.4666667 11.333332 -4.39999962 -8. -2. 4. ) (-8.8666668 5.333333 -6.3999996 -4. 6.3999996 4. )) NATURAL) (2 ((12 295) (12 300)) NIL ((0 5. 0 0 0 0 )) NATURAL) (2 ((12 300) (112 300)) NIL ((100. 0 0 0 0 0 )) NATURAL)) ((2 ((112 44) (112 151)) NIL ((0 107. 0 0 0 0 )) NATURAL) (13 ((112 151) (119 172) (133 174) (144 161) (150 140) (152 115) (152 86) (150 56) (144 30) (134 16) (123 13) (114 24) (112 44)) NIL ((4.9868555 25.152385 0 0 12.078863 -24.914325 ) (11.026287 12.6952228 12.078863 -24.914325 -18.394321 10.57164 ) (13.907989 -6.9332838 -6.3154583 -14.3426857 1.4984293 6.62775994 ) (8.34174539 -17.962089 -4.817029 -7.71492577 0.400608063 4.91731739 ) (3.72502089 -23.218357 -4.41642094 -2.79760837 2.89913463 -2.29703045 ) (0.758167506 -27.164478 -1.51728606 -5.09463883 0.00285267830 4.2708044 ) (-0.757692457 -30.123714 -1.51443338 -0.823834062 -2.91054487 3.21380949 ) (-3.7273984 -29.340644 -4.42497826 2.38997555 -0.360672951 12.8739547 ) (-8.33271218 -20.51369 -4.7856512 15.263931 4.3532362 -6.70962716 ) (-10.9417457 -8.6045761 -0.432414532 8.5543041 0.947724820 7.9645443 ) (-10.900297 3.93200302 0.515310288 16.518848 9.85586167 -7.14856339 ) (-5.457057 16.876571 10.3711719 9.37028504 -10.3711719 -9.37028504 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 143Q) (FACE M R R) (WIDTH 211 0) (FIDUCIAL 385 385) (VERSION 0 29-SEP-77 16:50:06) (MADE-FROM NIL 118 130 57 78) (SPLINES ((2 ((181 46) (189 37)) NIL ((8. -9. 0 0 0 0 )) NATURAL) (32 ((189 37) (166 14) (135 -1) (92 -4) (59 7) (33 30) (16 66) (12 101) (17 136) (30 166) (51 189) (86 204) (125 206) (154 202) (180 189) (196 168) (196 143) (178 127) (155 124) (138 134) (130 155) (130 176) (124 189) (111 184) (96 160) (91 129) (93 95) (102 63) (117 42) (144 33) (167 39) (181 46)) NIL ((-21.882595 -24.507923 0 0 -6.704422 9.04754067 ) (-25.234806 -19.984149 -6.704422 9.04754067 -14.47789 2.76229286 ) (-39.178169 -9.5554638 -21.182312 11.809833 40.615982 3.90328407 ) (-40.05249 4.20601082 19.433673 15.713117 -15.986061 -6.37542153 ) (-28.611846 16.731418 3.4476118 9.33769609 5.32826138 9.5984001 ) (-22.500103 30.868312 8.77587319 18.936096 6.67301179 -26.01818 ) (-10.3877239 36.795318 15.4488849 -7.0820856 -8.02030374 10.4743309 ) (1.05100774 34.950393 7.42858029 3.39224672 1.40821170 -9.87914659 ) (9.18369485 33.403068 8.836792 -6.48690034 -3.61254501 -0.957740784 ) (16.214214 26.437301 5.22424698 -7.4446411 13.041965 1.71010685 ) (27.959445 19.847713 18.266212 -5.73453427 -12.5553169 -11.8826828 ) (39.947998 8.17183496 5.71089459 -17.617218 -22.820686 15.820638 ) (34.24855 -1.53506326 -17.109794 -1.79657936 19.838077 -9.39988137 ) (27.057792 -8.0315838 2.72828531 -11.1964607 -14.531629 3.77889252 ) (22.520263 -17.3386 -11.8033447 -7.4175682 -3.71155357 0.284306526 ) (8.8611412 -24.614013 -15.514898 -7.13326169 -6.62215615 19.083877 ) (-9.9648361 -22.205333 -22.137054 11.9506168 18.20018 1.38017273 ) (-23.0018 -9.5646324 -3.93687344 13.330789 11.821422 -0.604568482 ) (-21.027961 3.4638729 7.8845501 12.726221 0.514120102 1.03809929 ) (-12.8863506 16.709144 8.3986702 13.76432 4.1220932 -15.547828 ) (-2.42663336 22.699546 12.520763 -1.78350925 -23.002487 -4.8467741 ) (-1.40711474 18.492652 -10.4817257 -6.63028336 3.88786602 -13.0650749 ) (-9.9449062 5.32983113 -6.59385968 -19.695358 1.4510231 -2.89291382 ) (-15.813255 -15.811985 -5.14283657 -22.588272 20.30804 18.63673 ) (-10.8020706 -29.08189 15.1652069 -3.95154047 -10.683195 0.345976353 ) (-0.978460909 -32.860443 4.4820118 -3.60556412 4.4247303 3.979362 ) (5.71591568 -34.476326 8.9067421 0.373797953 -7.01572514 13.736572 ) (11.1147956 -27.234241 1.89101648 14.11037 17.638172 -4.92564965 ) (21.824897 -15.586696 19.52919 9.184721 -27.536972 11.96602 ) (27.585601 -0.418966293 -8.0077839 21.150741 -3.4902687 -24.938427 ) (17.832683 8.2625618 -11.4980526 -3.78768539 11.4980526 3.78768539 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 144Q) (FACE M R R) (WIDTH 250 0) (FIDUCIAL 385 385) (VERSION 0 29-SEP-77 16:56:16) (MADE-FROM NIL 103 130 57 78) (SPLINES ((2 ((136 269) (136 189)) NIL ((0 -80. 0 0 0 0 )) NATURAL) (15 ((136 189) (114 204) (86 211) (57 203) (40 190) (25 168) (16 140) (12 110) (13 82) (20 51) (32 28) (52 8) (82 -2) (111 7) (136 25)) NIL ((-20.691444 16.123653 0 0 -7.8513279 -6.74192143 ) (-24.617107 12.752691 -7.8513279 -6.74192143 3.25663948 -14.2903919 ) (-30.840114 -1.13442683 -4.59468842 -21.032314 24.824771 21.903503 ) (-23.022419 -11.2149887 20.230083 0.871190191 -24.555728 -13.323631 ) (-15.0701999 -17.005615 -4.32564736 -12.452442 13.398151 7.39102364 ) (-12.6967716 -25.762546 9.07250405 -5.06141854 -5.0368824 1.75953817 ) (-6.14270783 -29.944194 4.03562165 -3.30188036 0.749382973 9.57081986 ) (-1.73239398 -28.460662 4.7850046 6.26894093 2.03935051 -16.0428238 ) (4.07228565 -30.213134 6.82435513 -9.7738838 -2.90677929 24.600475 ) (9.44325067 -27.686782 3.91757584 14.826591 3.58776283 -16.359073 ) (15.1547088 -21.039726 7.50533867 -1.53248405 6.5557308 10.8358268 ) (25.937912 -17.1542969 14.061069 9.3033428 -17.810688 15.015764 ) (31.093635 -0.343072712 -3.749619 24.319107 -1.31297540 -16.8988838 ) (26.68753 15.526592 -5.0625944 7.42022229 5.0625944 -7.42022229 )) NATURAL) (2 ((136 25) (136 -3)) NIL ((0 -28. 0 0 0 0 )) NATURAL) (2 ((136 -3) (241 10)) NIL ((105. 13. 0 0 0 0 )) NATURAL) (2 ((241 10) (241 15)) NIL ((0 5. 0 0 0 0 )) NATURAL) (5 ((241 15) (231 19) (222 26) (217 37) (217 50)) NIL ((-10.071428 3.4464283 0 0 0.428571463 3.32142878 ) (-9.8571415 5.10714245 0.428571463 3.32142878 3.85714245 1.39285612 ) (-7.5 9.125 4.28571415 4.7142849 2.14285755 -2.8928566 ) (-2.14285707 12.392856 6.4285717 1.8214283 -6.4285717 -1.8214283 )) NATURAL) (2 ((217 50) (217 300)) NIL ((0 250. 0 0 0 0 )) NATURAL) (2 ((217 300) (117 300)) NIL ((-100. 0 0 0 0 0 )) NATURAL) (2 ((117 300) (117 295)) NIL ((0 -5. 0 0 0 0 )) NATURAL) (4 ((117 295) (128 291) (134 283) (136 269)) NIL ((12.0666656 -3.33333302 0 0 -6.3999996 -4. ) (8.8666649 -5.333333 -6.3999996 -4. 2. -4. ) (3.46666622 -11.333332 -4.39999962 -8. 4.39999962 8. )) NATURAL)) ((2 ((136 159) (136 79)) NIL ((0 -80. 0 0 0 0 )) NATURAL) (12 ((136 79) (133 52) (122 34) (108 40) (100 62) (96 88) (95 116) (97 143) (104 168) (117 179) (130 174) (136 159)) NIL ((-1.1699872 -27.978817 0 0 -10.9800758 5.87290669 ) (-6.6600256 -25.042362 -10.9800758 5.87290669 6.90038396 24.635463 ) (-14.189909 -6.85172368 -4.07969189 30.508373 13.378538 -14.4147758 ) (-11.5803318 16.44926 9.2988472 16.093597 -6.414546 -14.9763717 ) (-5.48875714 25.054672 2.88430118 1.11722469 0.279644012 2.32027578 ) (-2.46463442 27.332035 3.1639452 3.43750048 -0.704028130 -6.30472756 ) (0.347296834 27.617172 2.45991707 -2.86722755 2.53646755 4.89863777 ) (4.07544804 27.199264 4.99638462 2.03141022 2.55815506 -19.289821 ) (10.35091 19.585762 7.55453969 -17.258411 -6.76908303 0.260658264 ) (14.520908 2.45767784 0.785455943 -16.997753 -11.481819 6.24719239 ) (9.56545449 -11.416479 -10.696363 -10.7505607 10.696363 10.7505607 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 145Q) (FACE M R R) (WIDTH 211 0) (FIDUCIAL 385 385) (VERSION 0 29-SEP-77 17:02:38) (MADE-FROM NIL 118 130 57 78) (SPLINES ((19 ((200 104) (197 137) (186 166) (170 186) (148 200) (119 206) (86 205) (51 189) (30 166) (17 136) (12 101) (16 66) (32 30) (59 7) (92 -5) (123 -5) (153 7) (175 25) (195 50)) NIL ((-1.13248205 33.50447 0 0 -11.2051067 -3.02686691 ) (-6.73503495 31.991043 -11.2051067 -3.02686691 8.02553369 -8.86566545 ) (-13.9273739 24.531341 -3.1795721 -11.892532 -2.89703178 8.48953248 ) (-18.555461 16.883575 -6.0766039 -3.4029994 -2.43740368 -7.09246636 ) (-25.850769 9.93434335 -8.51400758 -10.495466 6.6466446 7.880332 ) (-31.041454 3.37904358 -1.86736274 -2.61513424 -6.14917756 -18.428859 ) (-35.983406 -8.45052148 -8.01654054 -21.043994 29.950065 17.835117 ) (-29.024913 -20.576957 21.933525 -3.20887518 -17.651088 -4.9116268 ) (-15.916933 -26.241645 4.28243447 -8.12050248 4.65429688 1.81138706 ) (-9.30734826 -33.45645 8.93673135 -6.3091154 -0.966098786 9.66608239 ) (-0.853666306 -34.932525 7.97063256 3.35696745 5.21010018 -10.475719 ) (9.72201539 -36.813415 13.1807327 -7.11875249 -1.8743 26.236793 ) (21.965599 -30.813774 11.3064327 19.118042 -3.71290112 -10.4714679 ) (31.41558 -16.931465 7.5935316 8.646574 -13.274093 3.64907837 ) (32.372062 -6.46035195 -5.68056298 12.295652 8.8092842 1.87515449 ) (31.096145 6.7728777 3.12872219 14.1708069 -15.963047 -11.1496887 ) (26.243343 15.368839 -12.8343258 3.02111721 13.0429058 6.72360325 ) (19.930469 21.751758 0.208581745 9.74472047 -0.208581745 -9.74472047 )) NATURAL) (2 ((195 50) (185 59)) NIL ((-10. 9. 0 0 0 0 )) NATURAL) (7 ((185 59) (165 43) (143 36) (114 46) (99 67) (94 87) (93 104)) NIL ((-20.189743 -17.4038429 0 0 1.13846111 8.42307664 ) (-19.62051 -13.192306 1.13846111 8.42307664 -17.692302 11.884613 ) (-27.328205 1.17307806 -16.553844 20.307689 39.63076 -7.9615383 ) (-24.066661 17.5 23.076919 12.346151 -14.830766 -16.0384559 ) (-8.40512658 21.826919 8.24615289 -3.692307 -4.30769062 0.115384102 ) (-2.31282043 18.192306 3.93846178 -3.57692289 -3.93846178 3.57692289 )) NATURAL) (2 ((93 104) (200 104)) NIL ((107. 0 0 0 0 0 )) NATURAL)) ((9 ((93 122) (92 141) (93 158) (97 178) (111 188) (125 178) (129 158) (130 141) (129 122)) NIL ((-1.5 19.855667 0 0 3. -5.13401985 ) (0 17.288658 3. -5.13401985 -3. 13.670101 ) (1.5 18.989688 0 8.5360813 15. -19.546386 ) (9. 17.7525749 15. -11.010307 -15. -13.484535 ) (16.5 -9.53674316E-7 0 -24.494842 -15. 13.484533 ) (8.9999981 -17.7525749 -15. -11.010309 15. 19.54639 ) (1.49999976 -18.989688 1.27768117E-7 8.5360813 -3. -13.670101 ) (0 -17.288658 -3. -5.13401985 3. 5.13401985 )) NATURAL) (2 ((129 122) (93 122)) NIL ((-36. 0 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 146Q) (FACE M R R) (WIDTH 206 0) (FIDUCIAL 385 385) (VERSION 0 29-SEP-77 17:13:04) (MADE-FROM NIL 141 130 57 78) (SPLINES ((2 ((123 36) (123 182)) NIL ((0 146. 0 0 0 0 )) NATURAL) (2 ((123 182) (153 182)) NIL ((30. 0 0 0 0 0 )) NATURAL) (2 ((153 182) (153 200)) NIL ((0 18. 0 0 0 0 )) NATURAL) (2 ((153 200) (123 200)) NIL ((-30. 0 0 0 0 0 )) NATURAL) (2 ((123 200) (123 240)) NIL ((0 40. 0 0 0 0 )) NATURAL) (17 ((123 240) (121 259) (120 275) (128 285) (134 278) (134 266) (148 248) (171 244) (191 257) (191 283) (174 298) (150 303) (125 303) (94 297) (69 286) (48 266) (41 240)) NIL ((-1.63036418 19.686523 0 0 -2.21781492 -4.11915779 ) (-2.73927164 17.626945 -2.21781492 -4.11915779 17.089073 2.59579229 ) (3.58745146 14.805685 14.871259 -1.52336526 -18.138488 -24.264011 ) (9.3894653 1.15031027 -3.26723003 -25.78738 -10.53511 28.460277 ) (0.854681612 -10.4069309 -13.802341 2.67289829 36.27893 -17.577106 ) (5.1918087 -16.5225868 22.476593 -14.904209 -14.580635 35.848144 ) (20.378082 -13.5027198 7.89595795 20.943939 -7.9563837 -5.81549454 ) (24.295848 4.53347206 -0.0604261532 15.128444 -25.593822 5.4138298 ) (11.4385109 22.368831 -25.65425 20.542274 8.3316803 -39.83982 ) (-10.0499019 22.991195 -17.32257 -19.297546 10.267128 9.9454651 ) (-22.238906 8.66637994 -7.05544186 -9.3520813 10.5997829 6.05795956 ) (-23.994457 2.34327888 3.54434252 -3.29412127 -16.666267 -4.17730904 ) (-28.783252 -3.03949785 -13.121927 -7.47143078 26.0653 4.65127945 ) (-28.872528 -8.18528939 12.9433727 -2.82015133 -15.594938 -8.42780686 ) (-23.726623 -15.219345 -2.65156555 -11.247959 24.314453 5.05994892 ) (-14.220962 -23.937328 21.662887 -6.1880102 -21.662887 6.1880102 )) NATURAL) (2 ((41 240) (41 200)) NIL ((0 -40. 0 0 0 0 )) NATURAL) (2 ((41 200) (11 200)) NIL ((-30. 0 0 0 0 0 )) NATURAL) (2 ((11 200) (11 182)) NIL ((0 -18. 0 0 0 0 )) NATURAL) (2 ((11 182) (41 182)) NIL ((30. 0 0 0 0 0 )) NATURAL) (2 ((41 182) (41 36)) NIL ((0 -146. 0 0 0 0 )) NATURAL) (4 ((41 36) (38 19) (30 11) (18 8)) NIL ((-1.93333339 -19.066665 0 0 -6.3999996 12.3999996 ) (-5.1333332 -12.8666649 -6.3999996 12.3999996 2. -8. ) (-10.5333328 -4.46666622 -4.39999962 4.39999962 4.39999962 -4.39999962 )) NATURAL) (2 ((18 8) (18 0)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (2 ((18 0) (146 0)) NIL ((128. 0 0 0 0 0 )) NATURAL) (2 ((146 0) (146 8)) NIL ((0 8. 0 0 0 0 )) NATURAL) (4 ((146 8) (134 11) (126 19) (123 36)) NIL ((-12.7333316 2.26666641 0 0 4.39999962 4.39999962 ) (-10.5333328 4.46666622 4.39999962 4.39999962 2. 8. ) (-5.1333332 12.8666668 6.3999996 12.3999996 -6.3999996 -12.3999996 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 147Q) (FACE M R R) (WIDTH 243 0) (FIDUCIAL 385 385) (VERSION 0 29-SEP-77 17:37:45) (MADE-FROM NIL 114 130 44 38) (SPLINES ((2 ((228 196) (228 173)) NIL ((0 -23. 0 0 0 0 )) NATURAL) (2 ((228 173) (198 173)) NIL ((-30. 0 0 0 0 0 )) NATURAL) (29 ((198 173) (209 151) (211 124) (201 98) (178 80) (151 70) (121 68) (95 64) (89 55) (101 47) (129 44) (161 43) (187 38) (209 28) (222 17) (229 3) (230 -24) (218 -47) (192 -64) (156 -74) (119 -76) (91 -75) (66 -72) (41 -66) (20 -53) (15 -37) (28 -25) (47 -19) (63 -14)) NIL ((12.78347 -20.712417 0 0 -10.7008228 -7.7254791 ) (7.43305874 -24.575157 -10.7008228 -7.7254791 -0.495885849 8.62739755 ) (-3.51570749 -27.986938 -11.1967086 0.901919008 -5.31562805 9.21588326 ) (-17.370227 -22.477077 -16.512336 10.1178035 15.758396 -3.49094486 ) (-26.003368 -14.1047439 -0.753939868 6.6268587 -3.71796274 4.74789715 ) (-28.61629 -5.1039362 -4.47190285 11.3747558 5.11345577 -15.500644 ) (-30.531463 -1.47950363 0.641553402 -4.12588978 25.264133 -2.74530792 ) (-17.257843 -6.97804738 25.905689 -6.8711977 -10.169996 8.48187829 ) (3.56284761 -9.60830499 15.7356929 1.61068225 3.41583443 4.81778527 ) (21.006458 -5.58872986 19.151527 6.42846776 -15.493345 -3.75302172 ) (32.411308 -1.03677320 3.65818119 2.67544603 -13.442436 -7.8056984 ) (29.348274 -2.26417684 -9.78425599 -5.13025284 9.2631035 -1.02417946 ) (24.195571 -7.90651894 -0.521150828 -6.1544323 -11.609985 5.90241528 ) (17.869426 -11.109743 -12.1311378 -0.252016604 7.17684079 1.41451549 ) (9.32670976 -10.6545028 -4.95429707 1.16249895 0.902627946 -23.560474 ) (4.82372666 -21.272243 -4.05166912 -22.397975 -10.787355 32.8274 ) (-4.62162113 -27.256519 -14.839025 10.429424 0.246803283 -5.7491474 ) (-19.3372459 -19.701667 -14.592222 4.68027687 3.80014229 2.1691885 ) (-32.029396 -13.936798 -10.7920799 6.84946538 8.55262567 3.07239437 ) (-38.545158 -5.5511341 -2.23945331 9.92185975 15.989345 -8.45877076 ) (-32.789939 0.141339540 13.749893 1.46308779 -12.5100116 0.762699366 ) (-25.295055 1.9857769 1.23988032 2.22578716 -1.94929528 -0.592023611 ) (-25.029823 3.91555214 -0.709414959 1.63376355 2.30719423 7.60539437 ) (-24.585639 9.35201264 1.59777927 9.2391586 16.720512 -5.8295555 ) (-14.627601 15.676393 18.318294 3.40960312 2.81072998 -8.2871742 ) (5.0960598 14.942409 21.129024 -4.87757206 -15.963432 -3.02174187 ) (18.243366 8.5539665 5.1655922 -7.8993139 -10.956989 8.3741417 ) (17.930465 4.84172344 -5.7913971 0.474828482 5.7913971 -0.474828482 )) NATURAL) (8 ((63 -14) (45 -8) (30 3) (22 20) (25 40) (40 55) (59 64) (81 71)) NIL ((-18.455513 5.01511479 0 0 2.73308134 5.90930939 ) (-17.08897 7.96976948 2.73308134 5.90930939 4.33459187 0.453452110 ) (-12.1885948 14.105804 7.06767369 6.3627615 3.92854786 -1.72311878 ) (-3.15664673 19.607006 10.9962215 4.6396427 3.95121765 -11.560976 ) (9.81518365 18.466159 14.947439 -6.9213333 -13.733423 -0.0329771042 ) (17.895908 11.528339 1.21401572 -6.9543104 2.98248005 5.69288826 ) (20.601165 7.42047406 4.196496 -1.26142215 -4.196496 1.26142215 )) NATURAL) (13 ((81 71) (49 84) (30 100) (17 122) (16 147) (23 169) (38 186) (57 197) (84 203) (112 205) (133 204) (160 199) (178 196)) NIL ((-35.25244 12.5588417 0 0 19.514675 2.64694261 ) (-25.495105 13.8823127 19.514675 2.64694261 -19.573375 4.76528645 ) (-15.76712 18.911899 -0.0587015748 7.41222954 16.778831 -3.70809364 ) (-7.43640328 24.470081 16.7201309 3.7041359 -11.541971 -7.93291188 ) (3.51274204 24.207763 5.17815876 -4.22877598 5.38906956 -0.560255051 ) (11.385435 19.69886 10.567228 -4.78903103 -10.014303 -1.82606792 ) (16.9455108 13.9967937 0.552924156 -6.61509896 10.668148 1.86452961 ) (22.832511 8.3139591 11.221073 -4.75056935 -8.6582985 0.367947578 ) (29.724433 3.74736357 2.5627737 -4.38262177 -18.034942 2.6636815 ) (23.269737 0.696582556 -15.4721698 -1.71894026 32.798072 -5.02267456 ) (24.196609 -3.53369522 17.325908 -6.7416153 -35.157379 11.427019 ) (23.943824 -4.56180096 -17.831474 4.68540383 17.831474 -4.68540383 )) NATURAL) (2 ((178 196) (228 196)) NIL ((50. 0 0 0 0 0 )) NATURAL)) ((11 ((122 -17) (160 -21) (170 -36) (153 -54) (124 -60) (99 -58) (82 -51) (73 -36) (80 -21) (99 -16) (122 -17)) NIL ((33.954147 -1.97819113 34.128494 1.78905892 -78.110366 -17.498027 ) (29.027458 -8.9381466 -43.981872 -15.708971 17.780868 10.755794 ) (-6.06398297 -19.269218 -26.201004 -4.95317555 12.9869098 22.474849 ) (-25.77153 -12.984966 -13.214094 17.521675 20.271484 -10.655218 ) (-28.849884 -0.790901423 7.05739117 6.86645699 1.92713833 -3.85396195 ) (-20.828922 4.14857388 8.9845295 3.01249504 -3.9800415 8.0710678 ) (-13.834413 11.1966037 5.00448799 11.0835628 13.9930248 -10.430311 ) (-1.83341241 17.06501 18.997512 0.653250337 -3.99206352 -14.349813 ) (15.1680698 10.543352 15.005449 -13.6965637 -22.024765 7.82957268 ) (19.161136 0.761575103 -7.01931763 -5.86699105 44.091133 7.0315218 )) PSEUDOCYCLIC)) ((17 ((113 84) (123 90) (128 103) (131 119) (131 137) (131 155) (128 171) (123 184) (113 190) (103 184) (98 171) (95 155) (95 137) (95 119) (98 103) (103 90) (113 84)) NIL ((11.253885 0.0487168580 0.0133232101 14.7384567 -7.56328488 -8.50767137 ) (7.48556615 10.5333366 -7.54996205 6.23078538 7.73648549 -3.89238644 ) (3.8038473 14.81793 0.186523854 2.33839893 -5.3826561 0.0772185326 ) (1.29904294 17.194938 -5.19613266 2.41561746 7.7941389 -2.41648722 ) (-1.98682137E-5 18.402309 2.59800672 -8.69973097E-4 -7.7939005 -2.41126728 ) (-1.29896378 17.195808 -5.19589424 -2.41213751 5.3814659 0.0615592003 ) (-3.80412483 14.814449 0.185572236 -2.35057831 -7.73196507 -3.83496952 ) (-7.4845352 10.5463867 -7.5463934 -6.18554783 7.5463934 -8.72167588 ) (-11.25773 -3.18512320E-7 2.55536235E-7 -14.907224 7.54639149 8.72167588 ) (-7.4845352 -10.5463867 7.54639245 -6.18554879 -7.7319641 3.83497095 ) (-3.80412483 -14.814449 -0.185571968 -2.35057783 5.3814659 -0.0615596771 ) (-1.29896354 -17.195808 5.19589424 -2.41213751 -7.7939005 2.41126728 ) (-1.97092667E-5 -18.402309 -2.59800672 -8.69973213E-4 7.79413796 2.41648722 ) (1.29904318 -17.194938 5.1961317 2.41561746 -5.38265515 -0.0772185326 ) (3.8038473 -14.81793 -0.186523586 2.33839893 7.73648549 3.89238644 ) (7.48556615 -10.5333366 7.54996205 6.23078538 -7.56328488 8.50767137 )) PSEUDOCYCLIC)))) ((FAMILY TIMESROMAND) (CHARACTER 150Q) (FACE M R R) (WIDTH 259 0) (FIDUCIAL 385 385) (VERSION 0 29-SEP-77 17:58:05) (MADE-FROM NIL 88 130 57 78) (SPLINES ((2 ((112 300) (112 183)) NIL ((0 -117. 0 0 0 0 )) NATURAL) (8 ((112 183) (130 196) (152 207) (176 212) (198 208) (217 196) (231 169) (235 142)) NIL ((17.098247 13.2576427 0 0 5.41051197 -1.54586053 ) (19.803501 12.484712 5.41051197 -1.54586053 -3.05255985 -4.27069664 ) (23.687732 8.80350305 2.35795212 -5.81655789 -5.2002735 -5.37134838 ) (23.445549 0.301270485 -2.84232187 -11.187906 -0.146341800 7.75609589 ) (20.530056 -7.0085888 -2.98866367 -3.43181038 -0.214358806 -19.653034 ) (17.434211 -20.266918 -3.20302248 -23.084846 -10.9962196 28.856056 ) (8.7330799 -28.923736 -14.199243 5.77121258 14.199243 -5.77121258 )) NATURAL) (2 ((235 142) (235 42)) NIL ((0 -100. 0 0 0 0 )) NATURAL) (4 ((235 42) (235 26) (239 13) (247 8)) NIL ((-0.799999953 -16.266666 0 0 4.80000019 1.60000038 ) (1.5999999 -15.466665 4.80000019 1.60000038 -9.53674316E-7 9.9999981 ) (6.3999996 -8.8666649 4.79999924 11.599998 -4.79999924 -11.599998 )) NATURAL) (2 ((247 8) (247 0)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (2 ((247 0) (135 0)) NIL ((-112. 0 0 0 0 0 )) NATURAL) (2 ((135 0) (135 8)) NIL ((0 8. 0 0 0 0 )) NATURAL) (4 ((135 8) (143 13) (147 26) (147 42)) NIL ((8.79999925 3.0666666 0 0 -4.80000019 11.599998 ) (6.3999996 8.8666668 -4.80000019 11.599998 9.53674316E-7 -9.9999981 ) (1.59999966 15.466665 -4.79999924 1.5999999 4.79999924 -1.5999999 )) NATURAL) (2 ((147 42) (147 142)) NIL ((0 100. 0 0 0 0 )) NATURAL) (6 ((147 142) (146 159) (139 170) (124 168) (115 157) (113 142)) NIL ((-0.0478469506 17.827751 0 0 -5.71291828 -4.9665079 ) (-2.90430641 15.3444957 -5.71291828 -4.9665079 -7.43540669 -11.167459 ) (-12.3349266 4.79425717 -13.1483249 -16.133968 23.454544 7.63636208 ) (-13.755979 -7.5215311 10.306219 -8.49760629 -2.38277435 4.62200833 ) (-4.6411476 -13.7081337 7.92344475 -3.87559795 -7.92344475 3.87559795 )) NATURAL) (2 ((113 142) (113 42)) NIL ((0 -100. 0 0 0 0 )) NATURAL) (4 ((113 42) (113 26) (117 13) (125 8)) NIL ((-0.799999953 -16.266666 0 0 4.80000019 1.60000038 ) (1.5999999 -15.466665 4.80000019 1.60000038 -9.53674316E-7 9.9999981 ) (6.3999996 -8.8666649 4.79999924 11.599998 -4.79999924 -11.599998 )) NATURAL) (2 ((125 8) (125 0)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (2 ((125 0) (17 0)) NIL ((-108. 0 0 0 0 0 )) NATURAL) (2 ((17 0) (17 8)) NIL ((0 8. 0 0 0 0 )) NATURAL) (4 ((17 8) (27 13) (31 26) (31 42)) NIL ((11.333332 3.0666666 0 0 -8. 11.599998 ) (7.333333 8.8666668 -8. 11.599998 4. -9.9999981 ) (1.33333325 15.466665 -4. 1.5999999 4. -1.5999999 )) NATURAL) (2 ((31 42) (31 269)) NIL ((0 227. 0 0 0 0 )) NATURAL) (4 ((31 269) (29 283) (23 291) (12 292)) NIL ((-1.26666665 15.133333 0 0 -4.39999962 -6.8000002 ) (-3.4666667 11.7333316 -4.39999962 -6.8000002 -2. -1.99999904 ) (-8.8666668 3.93333292 -6.3999996 -8.79999925 6.3999996 8.79999925 )) NATURAL) (2 ((12 292) (12 300)) NIL ((0 8. 0 0 0 0 )) NATURAL) (2 ((12 300) (112 300)) NIL ((100. 0 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 151Q) (FACE M R R) (WIDTH 146 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 10:05:21) (MADE-FROM NIL 177 130 57 78) (SPLINES ((2 ((115 205) (13 205)) NIL ((-102. 0 0 0 0 0 )) NATURAL) (2 ((13 205) (13 197)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (4 ((13 197) (24 196) (30 188) (32 174)) NIL ((12.0666656 0.466666520 0 0 -6.3999996 -8.79999925 ) (8.8666649 -3.9333334 -6.3999996 -8.79999925 2. 2. ) (3.46666622 -11.7333335 -4.39999962 -6.79999924 4.39999962 6.79999924 )) NATURAL) (2 ((32 174) (32 34)) NIL ((0 -140. 0 0 0 0 )) NATURAL) (5 ((32 34) (31 25) (28 16) (22 11) (14 8)) NIL ((-0.642857075 -8.75 0 0 -2.14285707 -1.5 ) (-1.71428561 -9.5 -2.14285707 -1.5 -1.28571415 7.5 ) (-4.5 -7.24999905 -3.42857122 6. 1.28571415 -4.5 ) (-7.28571416 -3.49999952 -2.14285707 1.49999976 2.14285707 -1.49999976 )) NATURAL) (2 ((14 8) (14 0)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (2 ((14 0) (133 0)) NIL ((119. 0 0 0 0 0 )) NATURAL) (2 ((133 0) (133 8)) NIL ((0 8. 0 0 0 0 )) NATURAL) (5 ((133 8) (125 11) (119 16) (116 25) (115 34)) NIL ((-8.3571415 2.74999952 0 0 2.14285707 1.50000024 ) (-7.28571416 3.5 2.14285707 1.50000024 1.28571415 4.4999981 ) (-4.49999905 7.25 3.42857122 5.99999905 -1.28571415 -7.4999981 ) (-1.71428561 9.4999981 2.14285707 -1.49999976 -2.14285707 1.49999976 )) NATURAL) (2 ((115 34) (115 205)) NIL ((0 171. 0 0 0 0 )) NATURAL)) ((17 ((73 305) (91 302) (105 294) (113 282) (116 271) (113 260) (105 248) (91 240) (73 237) (55 240) (41 248) (33 260) (30 271) (33 282) (41 294) (55 302) (73 305)) NIL ((18.854923 -0.116663769 -0.497396290 -6.39998913 -3.63736725 1.89995003 ) (16.538845 -5.56667805 -4.13476372 -4.5000391 -2.82878303 -1.09981155 ) (10.9896888 -10.6166229 -6.96354676 -5.59985066 2.95249748 8.49929238 ) (5.5023918 -11.966827 -4.01104927 2.89944172 -2.98120499 -2.89735794 ) (7.40051269E-4 -10.5160637 -6.99225426 0.00208338676 2.97232246 -2.90985823 ) (-5.50535298 -11.96891 -4.0199318 -2.90777492 -2.90808678 8.53679086 ) (-10.979326 -10.6082897 -6.92801858 5.62901592 2.66002369 -1.23730755 ) (-16.577331 -5.59792614 -4.26799488 4.39170838 4.26799488 2.41243648 ) (-18.71133 3.18512320E-7 0 6.80414487 4.26799488 -2.41243648 ) (-16.577331 5.5979271 4.26799488 4.39170838 2.66002273 1.23730755 ) (-10.979326 10.6082897 6.9280176 5.62901592 -2.90808678 -8.53679086 ) (-5.50535202 11.96891 4.01993084 -2.90777492 2.97232437 2.90985775 ) (7.40210526E-4 10.5160637 6.9922552 0.00208325917 -2.98120689 2.89735842 ) (5.50239277 11.966827 4.01104832 2.89944172 2.95249843 -8.49929048 ) (10.9896888 10.6166229 6.96354676 -5.5998497 -2.82878303 1.09980964 ) (16.538845 5.56667805 4.13476372 -4.50004006 -3.63736725 -1.89994907 )) PSEUDOCYCLIC)))) ((FAMILY TIMESROMAND) (CHARACTER 152Q) (FACE M R R) (WIDTH 162 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 10:08:40) (MADE-FROM NIL 146 130 57 78) (SPLINES ((2 ((146 205) (44 205)) NIL ((-102. 0 0 0 0 0 )) NATURAL) (2 ((44 205) (44 197)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (4 ((44 197) (55 196) (61 188) (63 174)) NIL ((12.0666656 0.466666520 0 0 -6.3999996 -8.79999925 ) (8.8666649 -3.9333334 -6.3999996 -8.79999925 2. 2. ) (3.46666622 -11.7333335 -4.39999962 -6.79999924 4.39999962 6.79999924 )) NATURAL) (2 ((63 174) (63 6)) NIL ((0 -168. 0 0 0 0 )) NATURAL) (16 ((63 6) (66 -15) (68 -40) (66 -55) (58 -54) (56 -33) (40 -18) (19 -20) (10 -35) (13 -56) (36 -71) (74 -76) (111 -68) (136 -46) (146 -18) (146 6)) NIL ((3.14361906 -19.411846 0 0 -0.861714364 -9.52890206 ) (2.71276188 -24.1763 -0.861714364 -9.52890206 -1.69142818 23.644516 ) (1.00533318 -21.882942 -2.55314255 14.1156139 -10.3725719 -1.04916954 ) (-6.73409558 -8.291914 -12.925714 13.066444 31.181716 16.552154 ) (-4.06895066 13.0506077 18.256004 29.618598 -42.354309 -41.159439 ) (-6.9900999 22.089481 -24.098304 -11.5408439 18.235511 -7.9143753 ) (-21.970645 6.5914507 -5.86279106 -19.455219 23.412258 6.81695367 ) (-16.127304 -9.45529176 17.549469 -12.638265 -9.88456727 4.64655018 ) (-3.52012062 -19.770282 7.66490174 -7.99171544 16.126018 16.596843 ) (12.207792 -19.463573 23.79092 8.60513116 -6.61951447 0.966056824 ) (32.688949 -10.3754139 17.171405 9.57118798 -19.647953 3.53892136 ) (40.036384 0.965236307 -2.47654915 13.110109 -10.78866 2.87825394 ) (32.165504 15.5144729 -13.265209 15.988363 -3.19739914 -9.05192758 ) (17.301593 26.976871 -16.462608 6.9364357 5.57826233 -14.670543 ) (3.62811518 26.578033 -10.884346 -7.7341089 10.884346 7.7341089 )) NATURAL) (2 ((146 6) (146 205)) NIL ((0 199. 0 0 0 0 )) NATURAL)) ((17 ((104 305) (122 302) (136 294) (144 282) (147 271) (144 260) (136 248) (122 240) (104 237) (86 240) (72 248) (64 260) (61 271) (64 282) (72 294) (86 302) (104 305)) NIL ((18.854923 -0.116663769 -0.497396290 -6.39998913 -3.63736725 1.89995003 ) (16.538845 -5.56667805 -4.13476372 -4.5000391 -2.82878303 -1.09981155 ) (10.9896888 -10.6166229 -6.96354676 -5.59985066 2.95249748 8.49929238 ) (5.5023918 -11.966827 -4.01104927 2.89944172 -2.98120499 -2.89735794 ) (7.40051269E-4 -10.5160637 -6.99225426 0.00208338676 2.97232246 -2.90985823 ) (-5.50535298 -11.96891 -4.0199318 -2.90777492 -2.90808678 8.53679086 ) (-10.979326 -10.6082897 -6.92801858 5.62901592 2.66002369 -1.23730755 ) (-16.577331 -5.59792614 -4.26799488 4.39170838 4.26799488 2.41243648 ) (-18.71133 3.18512320E-7 0 6.80414487 4.26799488 -2.41243648 ) (-16.577331 5.5979271 4.26799488 4.39170838 2.66002273 1.23730755 ) (-10.979326 10.6082897 6.9280176 5.62901592 -2.90808678 -8.53679086 ) (-5.50535202 11.96891 4.01993084 -2.90777492 2.97232437 2.90985775 ) (7.40210526E-4 10.5160637 6.9922552 0.00208325917 -2.98120689 2.89735842 ) (5.50239277 11.966827 4.01104832 2.89944172 2.95249843 -8.49929048 ) (10.9896888 10.6166229 6.96354676 -5.5998497 -2.82878303 1.09980964 ) (16.538845 5.56667805 4.13476372 -4.50004006 -3.63736725 -1.89994907 )) PSEUDOCYCLIC)))) ((FAMILY TIMESROMAND) (CHARACTER 153Q) (FACE M R R) (WIDTH 259 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 10:19:29) (MADE-FROM NIL 88 130 57 78) (SPLINES ((2 ((114 300) (113 117)) NIL ((-1. -183. 0 0 0 0 )) NATURAL) (2 ((113 117) (142 155)) NIL ((29. 38. 0 0 0 0 )) NATURAL) (5 ((142 155) (150 170) (147 185) (138 193) (129 195)) NIL ((10.5178566 14.607141 0 0 -15.107141 2.35714245 ) (2.9642849 15.785713 -15.107141 2.35714245 9.5357132 -11.785711 ) (-7.375 12.249998 -5.5714283 -9.4285698 6.9642849 2.78571319 ) (-9.4642849 4.2142849 1.39285707 -6.6428566 -1.39285707 6.6428566 )) NATURAL) (3 ((129 195) (129 205) (129 205)) NIL ((0 12.5 0 0 0 -15. ) (0 5. 0 -15. 0 15. )) NATURAL) (2 ((129 205) (229 205)) NIL ((100. 0 0 0 0 0 )) NATURAL) (2 ((229 205) (229 195)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (5 ((229 195) (209 189) (192 178) (177 164) (165 150)) NIL ((-20.714283 -4.875 0 0 4.28571415 -6.75 ) (-18.571426 -8.25 4.28571415 -6.75 -3.42857122 3.75000048 ) (-15.999998 -13.125 0.857142807 -2.99999952 3.42857122 3.74999905 ) (-13.4285698 -14.249998 4.28571415 0.749999881 -4.28571415 -0.749999881 )) NATURAL) (2 ((165 150) (233 23)) NIL ((68. -127. 0 0 0 0 )) NATURAL) (3 ((233 23) (242 10) (247 8)) NIL ((10. -15.75 0 0 -6. 16.5 ) (7. -7.5 -6. 16.5 6. -16.5 )) NATURAL) (2 ((247 8) (247 0)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (2 ((247 0) (135 0)) NIL ((-112. 0 0 0 0 0 )) NATURAL) (2 ((135 0) (135 8)) NIL ((0 8. 0 0 0 0 )) NATURAL) (4 ((135 8) (143 11) (146 18) (141 30)) NIL ((8.79999925 2.26666641 0 0 -4.80000019 4.39999962 ) (6.3999996 4.46666622 -4.80000019 4.39999962 -5.99999905 2. ) (-1.40000009 9.8666668 -10.799999 6.3999996 10.799999 -6.3999996 )) NATURAL) (2 ((141 30) (113 90)) NIL ((-28. 60. 0 0 0 0 )) NATURAL) (2 ((113 90) (113 39)) NIL ((0 -51. 0 0 0 0 )) NATURAL) (4 ((113 39) (115 24) (120 13) (125 8)) NIL ((1.20000004 -15.666666 0 0 4.79999924 4. ) (3.5999999 -13.666666 4.79999924 4. -5.99999905 4. ) (5.3999996 -7.66666604 -1.19999981 8. 1.19999981 -8. )) NATURAL) (2 ((125 8) (125 0)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (2 ((125 0) (13 0)) NIL ((-112. 0 0 0 0 0 )) NATURAL) (2 ((13 0) (13 8)) NIL ((0 8. 0 0 0 0 )) NATURAL) (4 ((13 8) (23 13) (31 26) (31 42)) NIL ((10. 3.0666666 0 0 0 11.599998 ) (10. 8.8666668 0 11.599998 -12. -9.9999981 ) (4. 15.466665 -12. 1.5999999 12. -1.5999999 )) NATURAL) (2 ((31 42) (31 269)) NIL ((0 227. 0 0 0 0 )) NATURAL) (5 ((31 269) (30 276) (29 283) (23 290) (12 292)) NIL ((-1.26785707 7.0892849 0 0 1.60714268 -0.535714150 ) (-0.464285731 6.8214283 1.60714268 -0.535714150 -8.0357132 2.67857075 ) (-2.875 7.625 -6.42857075 2.1428566 0.535714150 -10.1785698 ) (-9.0357132 4.67857075 -5.8928566 -8.0357132 5.8928566 8.0357132 )) NATURAL) (2 ((12 292) (12 300)) NIL ((0 8. 0 0 0 0 )) NATURAL) (2 ((12 300) (114 300)) NIL ((102. 0 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 154Q) (FACE M R R) (WIDTH 145 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 10:25:22) (MADE-FROM NIL 167 130 57 78) (SPLINES ((2 ((14 0) (14 8)) NIL ((0 8. 0 0 0 0 )) NATURAL) (4 ((14 8) (24 13) (32 26) (32 42)) NIL ((10. 3.0666666 0 0 0 11.599998 ) (10. 8.8666668 0 11.599998 -12. -9.9999981 ) (4. 15.466665 -12. 1.5999999 12. -1.5999999 )) NATURAL) (2 ((32 42) (32 269)) NIL ((0 227. 0 0 0 0 )) NATURAL) (5 ((32 269) (31 276) (29 283) (22 290) (9 292)) NIL ((-0.982142807 7.0892849 0 0 -0.107142925 -0.535714150 ) (-1.03571415 6.8214283 -0.107142925 -0.535714150 -5.4642849 2.67857075 ) (-3.875 7.625 -5.5714283 2.1428566 -2.03571415 -10.1785698 ) (-10.4642849 4.67857075 -7.60714245 -8.0357132 7.60714245 8.0357132 )) NATURAL) (2 ((9 292) (9 300)) NIL ((0 8. 0 0 0 0 )) NATURAL) (2 ((9 300) (114 300)) NIL ((105. 0 0 0 0 0 )) NATURAL) (2 ((114 300) (114 42)) NIL ((0 -258. 0 0 0 0 )) NATURAL) (4 ((114 42) (114 26) (122 13) (132 8)) NIL ((-2. -16.266666 0 0 12. 1.60000038 ) (4. -15.466665 12. 1.60000038 -12. 9.9999981 ) (10. -8.8666649 0 11.599998 0 -11.599998 )) NATURAL) (2 ((132 8) (132 0)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (2 ((132 0) (14 0)) NIL ((-118. 0 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 155Q) (FACE M R R) (WIDTH 378 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 10:35:30) (MADE-FROM NIL 88 130 86 90) (SPLINES ((2 ((112 179) (112 205)) NIL ((0 26. 0 0 0 0 )) NATURAL) (2 ((112 205) (14 205)) NIL ((-98. 0 0 0 0 0 )) NATURAL) (3 ((14 205) (14 205) (14 197)) NIL ((0 2. 0 0 0 -12. ) (0 -4. 0 -12. 0 12. )) NATURAL) (4 ((14 197) (24 192) (30 179) (31 163)) NIL ((10.7333316 -3.0666666 0 0 -4.39999962 -11.599998 ) (8.5333328 -8.8666668 -4.39999962 -11.599998 -2. 9.9999981 ) (3.1333332 -15.466665 -6.3999996 -1.5999999 6.3999996 1.5999999 )) NATURAL) (2 ((31 163) (31 42)) NIL ((0 -121. 0 0 0 0 )) NATURAL) (4 ((31 42) (31 26) (27 13) (17 8)) NIL ((0.666666627 -16.266666 0 0 -4. 1.60000038 ) (-1.33333325 -15.466665 -4. 1.60000038 -4. 9.9999981 ) (-7.333333 -8.8666649 -8. 11.599998 8. -11.599998 )) NATURAL) (2 ((17 8) (17 0)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (2 ((17 0) (125 0)) NIL ((108. 0 0 0 0 0 )) NATURAL) (2 ((125 0) (125 8)) NIL ((0 8. 0 0 0 0 )) NATURAL) (4 ((125 8) (117 13) (113 26) (113 42)) NIL ((-8.79999925 3.0666666 0 0 4.80000019 11.599998 ) (-6.3999996 8.8666668 4.80000019 11.599998 -9.53674316E-7 -9.9999981 ) (-1.59999966 15.466665 4.79999924 1.5999999 -4.79999924 -1.5999999 )) NATURAL) (2 ((113 42) (113 142)) NIL ((0 100. 0 0 0 0 )) NATURAL) (6 ((113 142) (115 157) (124 168) (139 170) (146 159) (147 142)) NIL ((0.679425836 15.645931 0 0 7.92344475 -3.87559795 ) (4.64114857 13.7081337 7.92344475 -3.87559795 2.38277435 -4.62201023 ) (13.755979 7.52153016 10.306219 -8.49760819 -23.454544 -7.63636017 ) (12.3349266 -4.79425907 -13.1483249 -16.133968 7.43540669 11.167461 ) (2.90430593 -15.344497 -5.71291828 -4.96650696 5.71291828 4.96650696 )) NATURAL) (2 ((147 142) (147 42)) NIL ((0 -100. 0 0 0 0 )) NATURAL) (4 ((147 42) (147 26) (143 13) (135 8)) NIL ((0.799999953 -16.266666 0 0 -4.80000019 1.60000038 ) (-1.5999999 -15.466665 -4.80000019 1.60000038 9.53674316E-7 9.9999981 ) (-6.3999996 -8.8666649 -4.79999924 11.599998 4.79999924 -11.599998 )) NATURAL) (2 ((135 8) (135 0)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (2 ((135 0) (241 0)) NIL ((106. 0 0 0 0 0 )) NATURAL) (2 ((241 0) (241 8)) NIL ((0 8. 0 0 0 0 )) NATURAL) (4 ((241 8) (233 13) (229 26) (229 42)) NIL ((-8.79999925 3.0666666 0 0 4.80000019 11.599998 ) (-6.3999996 8.8666668 4.80000019 11.599998 -9.53674316E-7 -9.9999981 ) (-1.59999966 15.466665 4.79999924 1.5999999 -4.79999924 -1.5999999 )) NATURAL) (2 ((229 42) (229 142)) NIL ((0 100. 0 0 0 0 )) NATURAL) (6 ((229 142) (231 157) (240 168) (255 170) (262 159) (263 142)) NIL ((0.679425836 15.645931 0 0 7.92344475 -3.87559795 ) (4.64114857 13.7081337 7.92344475 -3.87559795 2.38277435 -4.62201023 ) (13.755979 7.52153016 10.306219 -8.49760819 -23.454544 -7.63636017 ) (12.3349266 -4.79425907 -13.1483249 -16.133968 7.43540669 11.167461 ) (2.90430593 -15.344497 -5.71291828 -4.96650696 5.71291828 4.96650696 )) NATURAL) (2 ((263 142) (263 42)) NIL ((0 -100. 0 0 0 0 )) NATURAL) (4 ((263 42) (263 26) (259 13) (251 8)) NIL ((0.799999953 -16.266666 0 0 -4.80000019 1.60000038 ) (-1.5999999 -15.466665 -4.80000019 1.60000038 9.53674316E-7 9.9999981 ) (-6.3999996 -8.8666649 -4.79999924 11.599998 4.79999924 -11.599998 )) NATURAL) (2 ((251 8) (251 0)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (2 ((251 0) (363 0)) NIL ((112. 0 0 0 0 0 )) NATURAL) (2 ((363 0) (363 8)) NIL ((0 8. 0 0 0 0 )) NATURAL) (4 ((363 8) (355 13) (351 26) (351 42)) NIL ((-8.79999925 3.0666666 0 0 4.80000019 11.599998 ) (-6.3999996 8.8666668 4.80000019 11.599998 -9.53674316E-7 -9.9999981 ) (-1.59999966 15.466665 4.79999924 1.5999999 -4.79999924 -1.5999999 )) NATURAL) (2 ((351 42) (351 142)) NIL ((0 100. 0 0 0 0 )) NATURAL) (9 ((351 142) (349 162) (343 179) (329 197) (308 208) (283 209) (261 202) (242 190) (225 175)) NIL ((-1.39175248 20.968242 0 0 -3.64948463 -5.8094616 ) (-3.21649456 18.0635109 -3.64948463 -5.8094616 -5.75257683 11.0473098 ) (-9.7422676 17.777706 -9.40206147 5.23784924 2.65979385 -14.379783 ) (-17.81443 15.82566 -6.7422676 -9.14193536 1.11340236 -1.52816772 ) (-24. 5.91964245 -5.62886524 -10.670103 10.8865966 2.49245453 ) (-24.185565 -3.50423479 5.25773144 -8.17764855 -2.6597929 3.55835629 ) (-20.257728 -9.90270616 2.59793854 -4.61929226 -0.247423649 1.27411556 ) (-17.783504 -13.884941 2.35051489 -3.3451767 -2.35051489 3.3451767 )) NATURAL) (6 ((225 175) (205 200) (179 209) (153 206) (129 194) (112 179)) NIL ((-18.397129 28.583728 0 0 -9.61722375 -21.502391 ) (-23.205741 17.832534 -9.61722375 -21.502391 12.086122 11.5119629 ) (-26.779903 2.08612347 2.46889925 -9.9904289 -2.72727251 -0.545455933 ) (-25.67464 -8.17703248 -0.258373320 -10.5358848 10.8229656 8.6698551 ) (-20.52153 -14.3779888 10.564592 -1.86602878 -10.564592 1.86602878 )) NATURAL)))) STOP \ No newline at end of file diff --git a/obsolete/lispusers/splinefonts/TIMESROMAN.LC2-SF b/obsolete/lispusers/splinefonts/TIMESROMAN.LC2-SF deleted file mode 100644 index 1f75fd04..00000000 --- a/obsolete/lispusers/splinefonts/TIMESROMAN.LC2-SF +++ /dev/null @@ -1 +0,0 @@ - ((FAMILY TIMESROMAND) (CHARACTER 156Q) (FACE M R R) (WIDTH 259 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 10:57:27) (MADE-FROM NIL 88 130 57 78) (SPLINES ((2 ((112 205) (112 183)) NIL ((0 -22. 0 0 0 0 )) NATURAL) (8 ((112 183) (130 196) (152 207) (176 212) (198 208) (217 196) (231 169) (235 142)) NIL ((17.098247 13.2576427 0 0 5.41051197 -1.54586053 ) (19.803501 12.484712 5.41051197 -1.54586053 -3.05255985 -4.27069664 ) (23.687732 8.80350305 2.35795212 -5.81655789 -5.2002735 -5.37134838 ) (23.445549 0.301270485 -2.84232187 -11.187906 -0.146341800 7.75609589 ) (20.530056 -7.0085888 -2.98866367 -3.43181038 -0.214358806 -19.653034 ) (17.434211 -20.266918 -3.20302248 -23.084846 -10.9962196 28.856056 ) (8.7330799 -28.923736 -14.199243 5.77121258 14.199243 -5.77121258 )) NATURAL) (2 ((235 142) (235 42)) NIL ((0 -100. 0 0 0 0 )) NATURAL) (4 ((235 42) (235 26) (239 13) (247 8)) NIL ((-0.799999953 -16.266666 0 0 4.80000019 1.60000038 ) (1.5999999 -15.466665 4.80000019 1.60000038 -9.53674316E-7 9.9999981 ) (6.3999996 -8.8666649 4.79999924 11.599998 -4.79999924 -11.599998 )) NATURAL) (2 ((247 8) (247 0)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (2 ((247 0) (135 0)) NIL ((-112. 0 0 0 0 0 )) NATURAL) (2 ((135 0) (135 8)) NIL ((0 8. 0 0 0 0 )) NATURAL) (4 ((135 8) (143 13) (147 26) (147 42)) NIL ((8.79999925 3.0666666 0 0 -4.80000019 11.599998 ) (6.3999996 8.8666668 -4.80000019 11.599998 9.53674316E-7 -9.9999981 ) (1.59999966 15.466665 -4.79999924 1.5999999 4.79999924 -1.5999999 )) NATURAL) (2 ((147 42) (147 142)) NIL ((0 100. 0 0 0 0 )) NATURAL) (6 ((147 142) (146 159) (139 170) (124 168) (115 157) (113 142)) NIL ((-0.0478469506 17.827751 0 0 -5.71291828 -4.9665079 ) (-2.90430641 15.3444957 -5.71291828 -4.9665079 -7.43540669 -11.167459 ) (-12.3349266 4.79425717 -13.1483249 -16.133968 23.454544 7.63636208 ) (-13.755979 -7.5215311 10.306219 -8.49760629 -2.38277435 4.62200833 ) (-4.6411476 -13.7081337 7.92344475 -3.87559795 -7.92344475 3.87559795 )) NATURAL) (2 ((113 142) (113 42)) NIL ((0 -100. 0 0 0 0 )) NATURAL) (4 ((113 42) (113 26) (117 13) (125 8)) NIL ((-0.799999953 -16.266666 0 0 4.80000019 1.60000038 ) (1.5999999 -15.466665 4.80000019 1.60000038 -9.53674316E-7 9.9999981 ) (6.3999996 -8.8666649 4.79999924 11.599998 -4.79999924 -11.599998 )) NATURAL) (2 ((125 8) (125 0)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (2 ((125 0) (17 0)) NIL ((-108. 0 0 0 0 0 )) NATURAL) (2 ((17 0) (17 8)) NIL ((0 8. 0 0 0 0 )) NATURAL) (4 ((17 8) (27 13) (31 26) (31 42)) NIL ((11.333332 3.0666666 0 0 -8. 11.599998 ) (7.333333 8.8666668 -8. 11.599998 4. -9.9999981 ) (1.33333325 15.466665 -4. 1.5999999 4. -1.5999999 )) NATURAL) (2 ((31 42) (31 174)) NIL ((0 132. 0 0 0 0 )) NATURAL) (4 ((31 174) (29 188) (23 196) (12 197)) NIL ((-1.26666665 15.133333 0 0 -4.39999962 -6.8000002 ) (-3.4666667 11.7333316 -4.39999962 -6.8000002 -2. -1.99999904 ) (-8.8666668 3.93333292 -6.3999996 -8.79999925 6.3999996 8.79999925 )) NATURAL) (2 ((12 197) (12 205)) NIL ((0 8. 0 0 0 0 )) NATURAL) (2 ((12 205) (112 205)) NIL ((100. 0 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 157Q) (FACE M R R) (WIDTH 235 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 11:02:40) (MADE-FROM NIL 109 130 57 78) (SPLINES ((21 ((118 187) (130 178) (136 158) (138 141) (139 122) (140 98) (139 74) (138 55) (136 38) (130 18) (118 9) (106 18) (100 38) (98 55) (97 74) (96 98) (97 122) (98 141) (100 158) (106 178) (118 187)) NIL ((13.420864 0.182411194 -0.271320581 -20.803161 -7.71122647 7.3150177 ) (9.29393006 -16.963241 -7.98254777 -13.4881439 4.184062 22.243881 ) (3.4034133 -19.329444 -3.79848528 8.7557373 2.97497558 -12.2905426 ) (1.09241581 -16.718975 -0.823509694 -3.5348053 1.91603374 -3.08171177 ) (1.22692299 -21.794639 1.09252405 -6.61651707 -4.63911057 6.61738969 ) (-1.08202453E-4 -25.102458 -3.54658651 8.72911885E-4 4.64040852 6.6121521 ) (-1.22649026 -21.795509 1.09382224 6.61302567 -1.92252469 -3.06600189 ) (-1.09393048 -16.715484 -0.828702450 3.54702377 -2.95030975 -12.348144 ) (-3.39778805 -19.342533 -3.7790122 -8.80112077 -4.27623368 22.45858 ) (-9.3149166 -16.9143638 -8.05524636 13.657459 8.05524636 6.5138092 ) (-13.3425407 3.20374965E-7 0 20.171268 8.05524636 -6.5138073 ) (-9.3149166 16.9143638 8.05524636 13.657461 -4.27623368 -22.45858 ) (-3.39778757 19.342533 3.77901268 -8.80112077 -2.95031023 12.3481426 ) (-1.09393024 16.715484 0.828702331 3.5470233 -1.92252445 3.06600237 ) (-1.22649026 21.795509 -1.09382224 6.61302567 4.64040852 -6.6121521 ) (-1.08162406E-4 25.102458 3.54658651 8.72911885E-4 -4.63911057 -6.61738969 ) (1.22692299 21.794639 -1.09252405 -6.61651707 1.91603374 3.08171272 ) (1.09241581 16.7189789 0.823509694 -3.53480434 2.97497558 12.2905388 ) (3.4034133 19.329444 3.79848528 8.7557354 4.18406296 -22.243877 ) (9.29393006 16.963237 7.9825487 -13.488142 -7.71122838 -7.3150158 )) PSEUDOCYCLIC)) ((25 ((118 205) (148 202) (173 194) (195 179) (213 155) (222 131) (225 98) (222 65) (213 41) (195 17) (173 2) (148 -6) (118 -9) (88 -6) (63 2) (41 17) (23 41) (14 65) (11 98) (14 131) (23 155) (41 179) (63 194) (88 202) (118 205)) NIL ((31.161361 -1.97820449 0 0 -6.9681711 -6.1307726 ) (27.677272 -5.04359055 -6.9681711 -6.1307726 4.8408575 0.653862953 ) (23.129531 -10.847431 -2.12731314 -5.47690964 -0.395261765 -8.48467637 ) (20.804588 -20.56668 -2.5225749 -13.961586 -9.2598076 21.284843 ) (13.652109 -23.885841 -11.7823829 7.32325936 7.434494 -22.654708 ) (5.58697129 -27.889938 -4.34788895 -15.331449 -2.47816563 15.333984 ) (-1.59256160E-7 -35.55439 -6.82605458 0.00253645284 2.47816467 15.318765 ) (-5.58697224 -27.892475 -4.3478899 15.321302 -7.43449307 -22.609054 ) (-13.652109 -23.875698 -11.7823829 -7.28775216 9.2598076 21.117458 ) (-20.804588 -20.604721 -2.52257538 13.829706 0.395262241 -7.86078168 ) (-23.129531 -10.705406 -2.12731314 5.96892452 -4.8408575 -1.67433166 ) (-27.677272 -5.5736475 -6.9681711 4.29459286 6.9681711 2.55811024 ) (-31.161361 1.59256160E-7 0 6.8527031 6.9681711 -2.55811024 ) (-27.677272 5.57364846 6.9681711 4.29459286 -4.84085846 1.67433071 ) (-23.129531 10.705406 2.12731266 5.96892357 0.395262718 7.8607826 ) (-20.804588 20.604721 2.52257538 13.829706 9.2598076 -21.117458 ) (-13.652109 23.875698 11.7823829 -7.28775216 -7.43449307 22.609054 ) (-5.58697224 27.892475 4.3478899 15.321304 2.47816467 -15.318767 ) (1.59256160E-7 35.55439 6.82605458 0.00253645284 -2.47816467 -15.333984 ) (5.58697224 27.889938 4.3478899 -15.331449 7.43449307 22.654708 ) (13.652109 23.885841 11.7823829 7.32325936 -9.2598076 -21.284847 ) (20.804588 20.56668 2.52257538 -13.9615879 -0.395262241 8.48467828 ) (23.129531 10.847431 2.12731314 -5.47690964 4.8408575 -0.653862000 ) (27.677272 5.04359055 6.9681711 -6.13077164 -6.9681711 6.13077164 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 160Q) (FACE M R R) (WIDTH 252 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 11:10:37) (MADE-FROM NIL 119 130 57 78) (SPLINES ((5 ((138 -62) (129 -60) (121 -55) (117 -45) (115 -28)) NIL ((-9.0178566 1.42857146 0 0 0.107142925 3.42857122 ) (-8.9642849 3.14285708 0.107142925 3.42857122 5.4642849 0.857142926 ) (-6.12499905 7. 5.5714283 4.28571415 -3.96428537 5.14285565 ) (-2.53571415 13.857143 1.60714292 9.4285698 -1.60714292 -9.4285698 )) NATURAL) (2 ((115 -28) (115 18)) NIL ((0 46. 0 0 0 0 )) NATURAL) (15 ((115 18) (141 2) (171 -5) (198 5) (220 25) (233 53) (239 89) (239 121) (233 152) (219 180) (202 199) (179 209) (155 208) (134 198) (115 180)) NIL ((24.77045 -17.354595 0 0 7.37729645 8.12758447 ) (28.459098 -13.2908039 7.37729645 8.12758447 -12.886484 13.3620777 ) (29.39315 1.51781845 -5.5091877 21.489662 2.16864204 -13.575897 ) (24.968284 16.219532 -3.34054565 7.913764 -7.7880821 -1.05849075 ) (17.733696 23.604049 -11.1286277 6.85527325 4.9836874 5.8098688 ) (9.0969143 33.364257 -6.14494038 12.665142 -0.146670341 -22.180988 ) (2.87863922 34.938903 -6.2916107 -9.51584817 1.60299492 10.9141025 ) (-2.61147404 30.880107 -4.6886158 1.39825439 -6.26530839 -3.47542334 ) (-10.4327449 30.540649 -10.953924 -2.07716894 11.458244 -9.0124092 ) (-15.657547 23.957275 0.504320979 -11.0895786 -9.56767846 3.52506352 ) (-19.937065 14.6302318 -9.0633583 -7.5645151 8.8124714 -5.0878458 ) (-24.594184 4.5217924 -0.250885904 -12.6523609 4.31778717 4.8263235 ) (-22.686176 -5.7174053 4.06690216 -7.8260374 -2.0836277 -2.21745205 ) (-19.66109 -14.65217 1.98327422 -10.043489 -1.98327422 10.043489 )) NATURAL) (2 ((115 180) (115 208)) NIL ((0 28. 0 0 0 0 )) NATURAL) (2 ((115 208) (12 195)) NIL ((-103. -13. 0 0 0 0 )) NATURAL) (2 ((12 195) (12 187)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (5 ((12 187) (22 182) (28 176) (32 166) (33 152)) NIL ((10.982141 -4.9464283 0 0 -5.8928566 -0.321428776 ) (8.0357132 -5.10714245 -5.8928566 -0.321428776 5.4642849 -4.39285565 ) (4.87499905 -7.625 -0.428571522 -4.7142849 -3.9642849 -0.107143402 ) (2.46428537 -12.392856 -4.3928566 -4.8214283 4.3928566 4.8214283 )) NATURAL) (3 ((33 152) (33 152) (33 -28)) NIL ((0 45. 0 0 0 -270. ) (0 -90. 0 -270. 0 270. )) NATURAL) (5 ((33 -28) (32 -42) (29 -54) (22 -60) (13 -62)) NIL ((-0.714285612 -14.1785698 0 0 -1.71428585 1.07142877 ) (-1.57142853 -13.642856 -1.71428585 1.07142877 -3.42857075 6.64285565 ) (-5. -9.2499981 -5.1428566 7.7142849 3.42857075 -3.6428566 ) (-8.4285698 -3.35714245 -1.71428561 4.0714283 1.71428561 -4.0714283 )) NATURAL) (2 ((13 -62) (13 -70)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (2 ((13 -70) (138 -70)) NIL ((125. 0 0 0 0 0 )) NATURAL) (2 ((138 -70) (138 -62)) NIL ((0 8. 0 0 0 0 )) NATURAL)) ((3 ((115 58) (115 58) (115 138)) NIL ((0 -20. 0 0 0 120. ) (0 40. 0 120. 0 -120. )) NATURAL) (12 ((115 138) (117 155) (124 168) (137 169) (148 150) (152 121) (153 86) (150 60) (144 38) (129 29) (117 43) (115 58)) NIL ((1.09614515 17.554847 0 0 5.42312908 -3.32910729 ) (3.80770969 15.8902969 5.42312908 -3.32910729 2.88435459 -7.35446358 ) (10.6730156 8.8839569 8.30748368 -10.6835708 -10.960546 -15.253032 ) (13.500225 -9.4261303 -2.65306425 -25.936603 -7.04216004 20.366596 ) (7.3260803 -25.179435 -9.69522477 -5.5700054 9.12919045 -6.21336556 ) (2.19545078 -33.856124 -0.566033244 -11.7833709 -5.4746065 28.486862 ) (-1.10788536 -31.39606 -6.04063988 16.703491 6.7692318 -17.7340889 ) (-3.76390886 -23.559616 0.728592634 -1.03060031 -15.602321 12.4495067 ) (-10.836477 -18.365459 -14.873729 11.418907 19.640056 21.93605 ) (-15.890178 4.02147007 4.76632786 33.354957 9.04208947 -40.193695 ) (-6.6028061 17.279579 13.808418 -6.8387394 -13.808418 6.8387394 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 161Q) (FACE M R R) (WIDTH 253 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 11:20:18) (MADE-FROM NIL 73 130 57 78) (SPLINES ((5 ((244 -62) (235 -60) (227 -55) (223 -45) (221 -28)) NIL ((-9.0178566 1.42857146 0 0 0.107142925 3.42857122 ) (-8.9642849 3.14285708 0.107142925 3.42857122 5.4642849 0.857142926 ) (-6.12499905 7. 5.5714283 4.28571415 -3.96428537 5.14285565 ) (-2.53571415 13.857143 1.60714292 9.4285698 -1.60714292 -9.4285698 )) NATURAL) (2 ((221 -28) (221 213)) NIL ((0 241. 0 0 0 0 )) NATURAL) (2 ((221 213) (214 213)) NIL ((-7. 0 0 0 0 0 )) NATURAL) (2 ((214 213) (184 184)) NIL ((-30. -29. 0 0 0 0 )) NATURAL) (16 ((184 184) (167 199) (140 211) (104 214) (65 204) (43 189) (27 168) (16 142) (11 101) (14 71) (24 40) (41 17) (61 4) (86 -1) (114 8) (139 30)) NIL ((-14.8281898 15.390228 0 0 -13.030853 -2.34137916 ) (-21.343616 14.219539 -13.030853 -2.34137916 5.15427208 -6.29310418 ) (-31.797332 8.73160745 -7.8765812 -8.63448335 -1.58623886 -8.48620225 ) (-40.467033 -4.14597798 -9.46282006 -17.120685 37.19068 16.237926 ) (-31.33451 -13.147699 27.727863 -0.882758380 -27.176502 -8.46551896 ) (-17.1949 -18.2632179 0.551357627 -9.34827806 5.5153446 11.624151 ) (-13.8858719 -21.799419 6.06670285 2.27587318 -0.884872437 -32.031082 ) (-8.2616043 -35.539085 5.1818304 -29.75521 4.02414227 56.500183 ) (-1.06770372 -37.044204 9.20597268 26.744976 -3.21169567 -37.969665 ) (6.5324211 -29.284065 5.994277 -11.224693 2.82264042 23.378486 ) (13.9380188 -28.819515 8.8169174 12.153795 -8.07886506 -1.54428863 ) (18.715499 -17.437862 0.738050580 10.6095066 5.4928274 -5.20133877 ) (22.199966 -9.42902566 6.23087884 5.40816784 -1.89244747 10.349649 ) (27.484622 1.15396976 4.33843136 15.757818 -9.92303849 -0.197273254 ) (26.861534 16.813148 -5.58460713 15.5605449 5.58460713 -15.5605449 )) NATURAL) (2 ((139 30) (139 -28)) NIL ((0 -58. 0 0 0 0 )) NATURAL) (5 ((139 -28) (138 -42) (135 -54) (128 -60) (119 -62)) NIL ((-0.714285612 -14.1785698 0 0 -1.71428585 1.07142877 ) (-1.57142853 -13.642856 -1.71428585 1.07142877 -3.42857075 6.64285565 ) (-5. -9.2499981 -5.1428566 7.7142849 3.42857075 -3.6428566 ) (-8.4285698 -3.35714245 -1.71428561 4.0714283 1.71428561 -4.0714283 )) NATURAL) (2 ((119 -62) (119 -70)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (2 ((119 -70) (244 -70)) NIL ((125. 0 0 0 0 0 )) NATURAL) (2 ((244 -70) (244 -62)) NIL ((0 8. 0 0 0 0 )) NATURAL)) ((14 ((137 120) (137 84) (133 49) (120 35) (109 38) (101 56) (97 87) (96 120) (98 156) (104 185) (118 195) (130 184) (136 154) (137 120)) NIL ((0.397950232 -35.027526 0 0 -2.38770151 -5.83479405 ) (-0.795900465 -37.94493 -2.38770151 -5.83479405 -12.061491 35.173965 ) (-9.21434785 -26.192737 -14.4491939 29.339176 20.63367 -14.861099 ) (-13.346704 -4.28410912 6.1844778 14.4780769 -4.47319508 0.270425796 ) (-9.3988247 10.3291797 1.71128201 14.7485027 3.25911093 1.77940941 ) (-6.0579872 25.967388 4.97039318 16.527912 -2.56325197 -19.388069 ) (-2.36922026 32.801261 2.40714121 -2.86015797 0.993899346 9.77287675 ) (0.534870506 34.827545 3.40104055 6.91271878 -1.41234493 -13.703434 ) (3.22973871 34.888542 1.98869562 -6.7907152 10.655479 -14.9591388 ) (10.546175 20.618259 12.644176 -21.749855 -17.209579 1.5399971 ) (14.5855598 -0.361596405 -4.56540394 -20.209857 -1.81715488 -3.20084763 ) (9.111578 -22.171875 -6.38255883 -23.410705 0.478199005 23.263381 ) (2.96811962 -33.950889 -5.9043598 -0.147323548 5.9043598 0.147323548 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 162Q) (FACE M R R) (WIDTH 200 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 11:25:39) (MADE-FROM NIL 88 130 57 78) (SPLINES ((2 ((112 205) (112 176)) NIL ((0 -29. 0 0 0 0 )) NATURAL) (10 ((112 176) (136 200) (161 210) (183 200) (188 180) (174 159) (147 157) (132 168) (117 158) (113 142)) NIL ((23.768428 26.483066 0 0 1.38941908 -14.8984089 ) (24.463138 19.033863 1.38941908 -14.8984089 -0.947096229 -9.50795175 ) (25.379009 -0.618523598 0.442322791 -24.40636 -21.601032 16.930221 ) (15.0208149 -16.559772 -21.15871 -7.47613717 3.35123825 1.78705024 ) (-4.46227646 -23.142383 -17.807472 -5.6890869 -3.80392075 29.921569 ) (-24.17171 -13.870685 -21.611393 24.232482 47.86444 -1.47332763 ) (-21.850879 9.6251316 26.253051 22.759155 -37.653862 -60.028259 ) (-14.4247627 2.37015486 -11.400814 -37.269104 30.751018 37.58638 ) (-10.4500675 -16.105758 19.350204 0.317277312 -19.350204 -0.317277312 )) NATURAL) (2 ((113 142) (113 42)) NIL ((0 -100. 0 0 0 0 )) NATURAL) (5 ((113 42) (114 31) (117 19) (124 12) (133 8)) NIL ((0.714285612 -10.4285698 0 0 1.71428585 -3.42857122 ) (1.57142853 -12.1428566 1.71428585 -3.42857122 3.42857075 11.1428547 ) (5. -9.9999981 5.1428566 7.7142849 -3.42857075 -5.1428566 ) (8.4285698 -4.85714245 1.71428561 2.5714283 -1.71428561 -2.5714283 )) NATURAL) (2 ((133 8) (133 0)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (2 ((133 0) (12 0)) NIL ((-121. 0 0 0 0 0 )) NATURAL) (2 ((12 0) (12 8)) NIL ((0 8. 0 0 0 0 )) NATURAL) (4 ((12 8) (22 10) (29 17) (31 31)) NIL ((10.466665 1.13333320 0 0 -2.80000019 5.1999998 ) (9.06666566 3.73333359 -2.80000019 5.1999998 -3.99999905 3.99999905 ) (4.2666664 10.933332 -6.79999924 9.19999887 6.79999924 -9.19999887 )) NATURAL) (2 ((31 31) (31 174)) NIL ((0 143. 0 0 0 0 )) NATURAL) (4 ((31 174) (29 188) (23 195) (12 197)) NIL ((-1.26666665 15.5333328 0 0 -4.39999962 -9.19999887 ) (-3.4666667 10.933332 -4.39999962 -9.19999887 -2. 3.99999905 ) (-8.8666668 3.7333331 -6.3999996 -5.1999998 6.3999996 5.1999998 )) NATURAL) (2 ((12 197) (12 205)) NIL ((0 8. 0 0 0 0 )) NATURAL) (2 ((12 205) (112 205)) NIL ((100. 0 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 163Q) (FACE M R R) (WIDTH 178 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 14:38:38) (MADE-FROM NIL 130 130 0 0) (SPLINES ((3 ((135 148) (135 148) (150 148)) NIL ((-3.75 0 0 0 22.5 0 ) (7.5 0 22.5 0 -22.5 0 )) NATURAL) (2 ((150 148) (150 206)) NIL ((0 58. 0 0 0 0 )) NATURAL) (2 ((150 206) (139 206)) NIL ((-11. 0 0 0 0 0 )) NATURAL) (2 ((139 206) (133 198)) NIL ((-6. -8. 0 0 0 0 )) NATURAL) (16 ((133 198) (116 204) (91 208) (62 206) (39 196) (24 178) (15 151) (19 126) (34 101) (55 84) (76 66) (91 43) (82 22) (59 24) (45 37) (32 62)) NIL ((-15.2221908 6.23116494 0 0 -10.666851 -1.38699484 ) (-20.555614 5.53766823 -10.666851 -1.38699484 5.3342552 -5.06502533 ) (-28.555339 1.61816025 -5.33259583 -6.45202065 13.329832 -2.35289955 ) (-27.223018 -6.01031018 7.99723626 -8.8049202 1.34641075 2.47662639 ) (-18.5525779 -13.576917 9.343647 -6.3282938 -6.71547127 -7.5536108 ) (-12.5666656 -23.682014 2.62817573 -13.881904 13.51547 21.737819 ) (-3.18075228 -26.69501 16.143646 7.855916 -5.3464241 -13.397676 ) (10.289682 -25.537933 10.797222 -5.54176045 -4.12976265 19.852882 ) (19.022022 -21.153247 6.66745949 14.3111248 -8.13452149 -18.013862 ) (21.622219 -15.849058 -1.46706223 -3.70274019 0.667852164 -1.79742288 ) (20.489082 -20.450508 -0.799210072 -5.50016308 -30.53688 1.20355701 ) (4.42143154 -25.348892 -31.336093 -4.29660607 13.47969 38.983184 ) (-20.174816 -10.1539 -17.856403 34.686584 36.618103 -31.13634 ) (-19.72216 8.96451188 18.761703 3.55024195 -21.952129 13.5621948 ) (-11.936523 19.295852 -3.19042635 17.112438 3.19042635 -17.112438 )) NATURAL) (2 ((32 62) (19 62)) NIL ((-13. 0 0 0 0 0 )) NATURAL) (3 ((19 62) (19 62) (19 -1)) NIL ((0 15.75 0 0 0 -94.5 ) (0 -31.5 0 -94.5 0 94.5 )) NATURAL) (2 ((19 -1) (29 -1)) NIL ((10. 0 0 0 0 0 )) NATURAL) (2 ((29 -1) (33 7)) NIL ((4. 8. 0 0 0 0 )) NATURAL) (15 ((33 7) (50 3) (76 -3) (106 -4) (138 7) (162 34) (166 68) (153 99) (127 124) (98 147) (85 166) (93 185) (114 184) (126 172) (135 148)) NIL ((14.8183899 -3.26369524 0 0 13.089653 -4.4178276 ) (21.363216 -5.47260952 13.089653 -4.4178276 -11.4482708 10.0891399 ) (28.728733 -4.84586716 1.64138222 5.67131233 2.70343399 6.06126595 ) (31.721836 3.8560791 4.3448162 11.732578 -11.365465 7.66579056 ) (30.383918 19.42155 -7.02064896 19.398368 -17.241565 -12.72442 ) (14.742483 32.45771 -24.262214 6.67394734 8.3317375 -10.768106 ) (-5.35386276 33.747596 -15.930477 -4.09416008 1.91460991 -4.20314217 ) (-20.327034 27.551868 -14.015867 -8.29730226 8.0098133 9.5806732 ) (-30.337993 24.044906 -6.00605298 1.2833724 26.04613 -10.119556 ) (-23.32098 20.268497 20.040081 -8.83618547 1.80563736 18.897556 ) (-2.37807894 20.881092 21.845718 10.0613708 -3.26868057 -41.470665 ) (17.833297 10.2071285 18.577037 -31.409294 -36.73091 26.985103 ) (18.0448799 -7.7096119 -18.153877 -4.42418766 18.192344 -12.4697628 ) (8.987175 -18.368682 0.0384698063 -16.893951 -0.0384698063 16.893951 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 164Q) (FACE M R R) (WIDTH 173 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 14:42:46) (MADE-FROM NIL 141 130 57 78) (SPLINES ((3 ((121 205) (121 205) (155 205)) NIL ((-8.5 0 0 0 51. 0 ) (17. 0 51. 0 -51. 0 )) NATURAL) (2 ((155 205) (155 181)) NIL ((0 -24. 0 0 0 0 )) NATURAL) (3 ((155 181) (121 181) (121 181)) NIL ((-42.5 0 0 0 51. 0 ) (-17. 0 51. 0 -51. 0 )) NATURAL) (2 ((121 181) (121 51)) NIL ((0 -130. 0 0 0 0 )) NATURAL) (5 ((121 51) (122 36) (130 28) (145 30) (153 38)) NIL ((-0.250000000 -16.267856 0 0 7.5 7.60714245 ) (3.5 -12.4642849 7.5 7.60714245 4.4999981 3.96428585 ) (13.25 -2.87499952 11.999998 11.571428 -25.499996 -5.46428585 ) (12.499998 5.96428585 -13.499998 6.10714245 13.499998 -6.10714245 )) NATURAL) (2 ((153 38) (162 25)) NIL ((9. -13. 0 0 0 0 )) NATURAL) (7 ((162 25) (147 10) (123 -2) (89 -5) (63 3) (44 24) (39 51)) NIL ((-13.442306 -15.310255 0 0 -9.34615327 1.86153841 ) (-18.115383 -14.379486 -9.34615327 1.86153841 -7.2692299 8.6923065 ) (-31.096153 -8.17179299 -16.615383 10.553846 32.423072 -0.630771637 ) (-31.499996 2.06666708 15.807689 9.9230747 -14.4230728 5.8307724 ) (-22.903842 14.905126 1.38461566 15.753847 19.269226 -10.692308 ) (-11.884613 25.31282 20.653842 5.06153775 -20.653842 -5.06153775 )) NATURAL) (2 ((39 51) (39 181)) NIL ((0 130. 0 0 0 0 )) NATURAL) (2 ((39 181) (20 181)) NIL ((-19. 0 0 0 0 0 )) NATURAL) (2 ((20 181) (20 196)) NIL ((0 15. 0 0 0 0 )) NATURAL) (5 ((20 196) (49 209) (71 227) (89 246) (106 272)) NIL ((30.607139 11.607141 0 0 -9.6428566 8.3571415 ) (25.785713 15.785713 -9.6428566 8.3571415 6.2142849 -11.785711 ) (19.249996 18.25 -3.42857122 -3.42857075 2.78571415 14.785711 ) (17.214283 22.214283 -0.642857075 11.357141 0.642857075 -11.357141 )) NATURAL) (2 ((106 272) (121 272)) NIL ((15. 0 0 0 0 0 )) NATURAL) (2 ((121 272) (121 205)) NIL ((0 -67. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 165Q) (FACE M R R) (WIDTH 249 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 14:49:10) (MADE-FROM NIL 94 130 57 78) (SPLINES ((3 ((124 205) (124 205) (222 205)) NIL ((-24.5 0 0 0 147. 0 ) (49. 0 147. 0 -147. 0 )) NATURAL) (2 ((222 205) (222 35)) NIL ((0 -170. 0 0 0 0 )) NATURAL) (5 ((222 35) (222 27) (226 16) (232 11) (238 8)) NIL ((-0.928571344 -6.80357075 0 0 5.5714283 -7.17857075 ) (1.85714292 -10.3928566 5.5714283 -7.17857075 -3.85714245 17.892852 ) (5.5 -8.6249981 1.71428561 10.7142849 -2.1428566 -10.3928547 ) (6.1428566 -3.10714245 -0.428571403 0.321428537 0.428571403 -0.321428537 )) NATURAL) (2 ((238 8) (238 0)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (2 ((238 0) (141 0)) NIL ((-97. 0 0 0 0 0 )) NATURAL) (2 ((141 0) (141 22)) NIL ((0 22. 0 0 0 0 )) NATURAL) (8 ((141 22) (129 10) (110 -3) (84 -8) (60 -3) (46 7) (35 25) (30 47)) NIL ((-10.615938 -11.333904 0 0 -8.30436326 -3.99656487 ) (-14.7681198 -13.3321876 -8.30436326 -3.99656487 -0.478183746 13.982824 ) (-23.311576 -10.337339 -8.782547 9.98625947 10.2171039 2.06526756 ) (-26.985569 0.681553364 1.43455767 12.051527 13.609756 -10.2439 ) (-18.746131 7.61112977 15.044315 1.80762577 -16.656131 8.91033937 ) (-12.029886 13.873926 -1.61181712 10.717966 11.0147686 -7.3974571 ) (-8.1343174 20.893161 9.4029522 3.32050848 -9.4029522 -3.32050848 )) NATURAL) (2 ((30 47) (30 167)) NIL ((0 120. 0 0 0 0 )) NATURAL) (5 ((30 167) (28 180) (25 189) (20 194) (13 197)) NIL ((-1.83928561 13.821428 0 0 -0.964285732 -4.92857075 ) (-2.3214283 11.357141 -0.964285732 -4.92857075 -1.17857122 0.642856598 ) (-3.875 6.74999905 -2.14285707 -4.28571415 -0.321428299 2.35714245 ) (-6.17857075 3.64285708 -2.46428537 -1.92857146 2.46428537 1.92857146 )) NATURAL) (2 ((13 197) (13 205)) NIL ((0 8. 0 0 0 0 )) NATURAL) (2 ((13 205) (109 205)) NIL ((96. 0 0 0 0 0 )) NATURAL) (2 ((109 205) (109 47)) NIL ((0 -158. 0 0 0 0 )) NATURAL) (7 ((109 47) (110 38) (116 30) (126 29) (135 37) (140 51) (141 67)) NIL ((-0.0487179756 -8.91025544 0 0 6.29230786 -0.538461209 ) (3.09743595 -9.1794853 6.29230786 -0.538461209 -1.46153927 8.6923046 ) (8.6589737 -5.37179375 4.83076859 8.15384484 -6.44615269 1.76923179 ) (10.266666 3.6666665 -1.61538458 9.9230766 -2.75384569 -3.76923084 ) (7.27435876 11.7051277 -4.36923027 6.15384579 -0.538461685 -4.69230747 ) (2.63589716 15.512819 -4.90769196 1.46153831 4.90769196 -1.46153831 )) NATURAL) (2 ((141 67) (141 167)) NIL ((0 100. 0 0 0 0 )) NATURAL) (5 ((141 167) (139 180) (136 189) (131 194) (124 197)) NIL ((-1.83928561 13.821428 0 0 -0.964285732 -4.92857075 ) (-2.3214283 11.357141 -0.964285732 -4.92857075 -1.17857122 0.642856598 ) (-3.875 6.74999905 -2.14285707 -4.28571415 -0.321428299 2.35714245 ) (-6.17857075 3.64285708 -2.46428537 -1.92857146 2.46428537 1.92857146 )) NATURAL) (2 ((124 197) (124 205)) NIL ((0 8. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 166Q) (FACE M R R) (WIDTH 215 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 14:54:35) (MADE-FROM NIL 88 130 57 78) (SPLINES ((2 ((138 205) (138 197)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (4 ((138 197) (147 192) (154 182) (157 168)) NIL ((9.2666664 -3.9333334 0 0 -1.60000014 -6.3999996 ) (8.46666528 -7.1333332 -1.60000014 -6.3999996 -3.99999905 2. ) (4.86666584 -12.5333328 -5.59999943 -4.39999962 5.59999943 4.39999962 )) NATURAL) (3 ((157 168) (154 154) (139 96)) NIL ((0 -3. 0 0 -18. -66. ) (-9. -36. -18. -66. 18. 66. )) NATURAL) (5 ((139 96) (118 163) (112 182) (115 192) (121 197)) NIL ((-24.428569 79.303558 0 0 20.571426 -73.821426 ) (-14.1428547 42.392852 20.571426 -73.821426 -12.857141 81.10713 ) (3.18512320E-7 9.125 7.7142849 7.2857132 -5.1428566 -16.607139 ) (5.1428566 8.1071415 2.5714283 -9.3214264 -2.5714283 9.3214264 )) NATURAL) (2 ((121 197) (121 205)) NIL ((0 8. 0 0 0 0 )) NATURAL) (2 ((121 205) (11 205)) NIL ((-110. 0 0 0 0 0 )) NATURAL) (3 ((11 205) (11 205) (11 197)) NIL ((0 2. 0 0 0 -12. ) (0 -4. 0 -12. 0 12. )) NATURAL) (4 ((11 197) (19 192) (26 182) (32 167)) NIL ((8.19999887 -4. 0 0 -1.20000004 -6. ) (7.59999943 -7. -1.20000004 -6. 2.38418579E-7 0 ) (6.3999996 -13. -1.19999981 -6. 1.19999981 6. )) NATURAL) (3 ((32 167) (32 167) (93 0)) NIL ((-15.25 41.75 0 0 91.5 -250.5 ) (30.5 -83.5 91.5 -250.5 -91.5 250.5 )) NATURAL) (2 ((93 0) (138 0)) NIL ((45. 0 0 0 0 0 )) NATURAL) (2 ((138 0) (181 155)) NIL ((43. 155. 0 0 0 0 )) NATURAL) (4 ((181 155) (187 176) (195 189) (202 197)) NIL ((5.3999996 22.799999 0 0 3.5999999 -10.799999 ) (7.1999998 17.399997 3.5999999 -10.799999 -5.99999905 6. ) (7.79999924 9.59999848 -2.39999962 -4.79999924 2.39999962 4.79999924 )) NATURAL) (2 ((202 197) (202 205)) NIL ((0 8. 0 0 0 0 )) NATURAL) (2 ((202 205) (138 205)) NIL ((-64. 0 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 167Q) (FACE M R R) (WIDTH 335 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 15:00:50) (MADE-FROM NIL 88 130 57 78) (SPLINES ((2 ((93 0) (137 0)) NIL ((44. 0 0 0 0 0 )) NATURAL) (2 ((137 0) (170 113)) NIL ((33. 113. 0 0 0 0 )) NATURAL) (2 ((170 113) (213 2)) NIL ((43. -111. 0 0 0 0 )) NATURAL) (2 ((213 2) (255 2)) NIL ((42. 0 0 0 0 0 )) NATURAL) (6 ((255 2) (296 153) (299 167) (304 181) (310 190) (321 197)) NIL ((51.330139 187.7942 0 0 -61.980857 -220.7655 ) (20.33971 77.411468 -61.980857 -220.7655 81.904296 281.8276 ) (-0.688994527 -2.44018984 19.923442 61.062194 -25.63636 -84.54544 ) (6.4162674 16.349277 -5.71291828 -23.483249 14.641145 26.35406 ) (8.02392388 6.0430622 8.92822839 2.87081289 -8.92822839 -2.87081289 )) NATURAL) (2 ((321 197) (321 205)) NIL ((0 8. 0 0 0 0 )) NATURAL) (2 ((321 205) (249 205)) NIL ((-72. 0 0 0 0 0 )) NATURAL) (2 ((249 205) (249 197)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (5 ((249 197) (258 195) (266 187) (268 174) (267 166)) NIL ((8.8928566 -0.839285613 0 0 0.642857075 -6.96428586 ) (9.2142849 -4.3214283 0.642857075 -6.96428586 -9.2142849 -1.17857074 ) (5.24999905 -11.875 -8.5714283 -8.1428566 6.21428586 17.678569 ) (-0.214285850 -11.1785698 -2.35714245 9.5357132 2.35714245 -9.5357132 )) NATURAL) (2 ((267 166) (252 109)) NIL ((-15. -57. 0 0 0 0 )) NATURAL) (2 ((252 109) (230 176)) NIL ((-22. 67. 0 0 0 0 )) NATURAL) (4 ((230 176) (228 186) (231 196) (238 197)) NIL ((-3.0666666 9.3999996 0 0 6.3999996 3.5999999 ) (0.133333504 11.1999988 6.3999996 3.5999999 -2. -17.999996 ) (5.53333283 5.79999924 4.39999962 -14.399999 -4.39999962 14.399999 )) NATURAL) (2 ((238 197) (238 205)) NIL ((0 8. 0 0 0 0 )) NATURAL) (2 ((238 205) (132 205)) NIL ((-106. 0 0 0 0 0 )) NATURAL) (2 ((132 205) (132 197)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (4 ((132 197) (140 194) (144 182) (153 150)) NIL ((9.3999996 -1.93333316 0 0 -8.3999996 -6.40000058 ) (5.1999998 -5.1333332 -8.3999996 -6.40000058 17.999996 -21.999996 ) (5.80000019 -22.533332 9.59999848 -28.399997 -9.59999848 28.399997 )) NATURAL) (2 ((153 150) (139 96)) NIL ((-14. -54. 0 0 0 0 )) NATURAL) (5 ((139 96) (118 163) (112 182) (115 192) (121 197)) NIL ((-24.428569 79.303558 0 0 20.571426 -73.821426 ) (-14.1428547 42.392852 20.571426 -73.821426 -12.857141 81.10713 ) (3.18512320E-7 9.125 7.7142849 7.2857132 -5.1428566 -16.607139 ) (5.1428566 8.1071415 2.5714283 -9.3214264 -2.5714283 9.3214264 )) NATURAL) (2 ((121 197) (121 205)) NIL ((0 8. 0 0 0 0 )) NATURAL) (2 ((121 205) (11 205)) NIL ((-110. 0 0 0 0 0 )) NATURAL) (3 ((11 205) (11 205) (11 197)) NIL ((0 2. 0 0 0 -12. ) (0 -4. 0 -12. 0 12. )) NATURAL) (4 ((11 197) (19 192) (26 182) (32 167)) NIL ((8.19999887 -4. 0 0 -1.20000004 -6. ) (7.59999943 -7. -1.20000004 -6. 2.38418579E-7 0 ) (6.3999996 -13. -1.19999981 -6. 1.19999981 6. )) NATURAL) (3 ((32 167) (32 167) (93 0)) NIL ((-15.25 41.75 0 0 91.5 -250.5 ) (30.5 -83.5 91.5 -250.5 -91.5 250.5 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 170Q) (FACE M R R) (WIDTH 257 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 15:07:03) (MADE-FROM NIL 88 130 57 78) (SPLINES ((6 ((11 197) (23 187) (35 170) (51 147) (71 119) (90 90)) NIL ((12.2057399 -8.46411325 0 0 -1.23444962 -9.21531106 ) (11.588516 -13.0717697 -1.23444962 -9.21531106 6.17224789 4.07655525 ) (13.440191 -20.248802 4.9377985 -5.1387558 0.545454979 -1.09090805 ) (18.650714 -25.933013 5.48325348 -6.22966386 -8.35406686 6.2870798 ) (19.956935 -29.019138 -2.87081337 0.0574161485 2.87081337 -0.0574161485 )) NATURAL) (3 ((90 90) (90 90) (48 31)) NIL ((10.5 14.75 0 0 -63. -88.5 ) (-21. -29.5 -63. -88.5 63. 88.5 )) NATURAL) (4 ((48 31) (39 23) (29 14) (16 8)) NIL ((-8.93333245 -7.5333328 0 0 -0.400000095 -2.79999971 ) (-9.1333332 -8.93333245 -0.400000095 -2.79999971 -3.99999952 7.99999905 ) (-11.5333328 -7.73333264 -4.39999962 5.1999998 4.39999962 -5.1999998 )) NATURAL) (2 ((16 8) (16 0)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (2 ((16 0) (98 0)) NIL ((82. 0 0 0 0 0 )) NATURAL) (2 ((98 0) (98 8)) NIL ((0 8. 0 0 0 0 )) NATURAL) (5 ((98 8) (90 15) (87 25) (93 43) (106 67)) NIL ((-8.8214283 6.66071416 0 0 4.9285717 2.03571463 ) (-6.35714245 7.67857075 4.9285717 2.03571463 5.3571415 7.8214264 ) (1.25000047 13.625 10.285713 9.8571415 -2.35714245 -3.3214283 ) (10.357141 21.821426 7.92857075 6.5357132 -7.92857075 -6.5357132 )) NATURAL) (2 ((106 67) (128 37)) NIL ((22. -30. 0 0 0 0 )) NATURAL) (4 ((128 37) (136 26) (133 14) (121 8)) NIL ((10.333332 -10.333332 0 0 -14. -4. ) (3.33333302 -12.333332 -14. -4. 4. 14. ) (-8.66666604 -9.33333207 -10. 10. 10. -10. )) NATURAL) (2 ((121 8) (121 0)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (2 ((121 0) (244 0)) NIL ((123. 0 0 0 0 0 )) NATURAL) (2 ((244 0) (244 8)) NIL ((0 8. 0 0 0 0 )) NATURAL) (4 ((244 8) (230 23) (209 50) (159 122)) NIL ((-14.066665 14.799999 0 0 0.399999619 1.20000076 ) (-13.8666668 15.399999 0.399999619 1.20000076 -43.999992 65.999984 ) (-35.466667 49.599998 -43.599998 67.199997 43.599998 -67.199997 )) NATURAL) (5 ((159 122) (184 156) (201 178) (214 190) (229 197)) NIL ((26.821426 36.589279 0 0 -10.9285698 -15.535713 ) (21.357139 28.821426 -10.9285698 -15.535713 6.64285565 5.6785717 ) (13.75 16.124996 -4.28571415 -9.8571415 8.3571415 4.82142735 ) (13.642856 8.6785698 4.0714283 -5.03571415 -4.0714283 5.03571415 )) NATURAL) (2 ((229 197) (229 205)) NIL ((0 8. 0 0 0 0 )) NATURAL) (2 ((229 205) (145 205)) NIL ((-84. 0 0 0 0 0 )) NATURAL) (2 ((145 205) (145 197)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (4 ((145 197) (155 194) (163 184) (160 172)) NIL ((9.79999925 -1.26666665 0 0 1.19999981 -10.3999996 ) (10.3999996 -6.46666623 1.19999981 -10.3999996 -17.999996 9.9999981 ) (2.59999943 -11.8666649 -16.799999 -0.399999976 16.799999 0.399999976 )) NATURAL) (3 ((160 172) (144 144) (144 144)) NIL ((-20. -35. 0 0 24. 42. ) (-8. -14. 24. 42. -24. -42. )) NATURAL) (5 ((144 144) (126 170) (118 182) (119 192) (127 197)) NIL ((-20.160713 29.696426 0 0 12.9642849 -22.178569 ) (-13.6785698 18.607139 12.9642849 -22.178569 -4.8214283 26.892852 ) (-3.12499952 9.875 8.1428566 4.7142849 0.321428299 -13.3928547 ) (5.1785717 7.8928566 8.4642849 -8.6785698 -8.4642849 8.6785698 )) NATURAL) (2 ((127 197) (127 205)) NIL ((0 8. 0 0 0 0 )) NATURAL) (2 ((127 205) (11 205)) NIL ((-116. 0 0 0 0 0 )) NATURAL) (3 ((11 205) (11 205) (11 197)) NIL ((0 2. 0 0 0 -12. ) (0 -4. 0 -12. 0 12. )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 171Q) (FACE M R R) (WIDTH 242 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 15:27:56) (MADE-FROM NIL 106 130 52 37) (SPLINES ((2 ((10 205) (130 205)) NIL ((120. 0 0 0 0 0 )) NATURAL) (2 ((130 205) (130 197)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (5 ((130 197) (123 192) (120 180) (130 153) (148 97)) NIL ((-7.28571416 -3.67857122 0 0 1.71428585 -7.92857075 ) (-6.42857075 -7.6428566 1.71428585 -7.92857075 15.4285698 -2.35714435 ) (3. -16.75 17.142856 -10.285715 -9.4285698 -30.642849 ) (15.4285698 -42.357139 7.71428586 -40.928566 -7.71428586 40.928566 )) NATURAL) (2 ((148 97) (168 159)) NIL ((20. 62. 0 0 0 0 )) NATURAL) (5 ((168 159) (169 171) (166 183) (159 192) (147 197)) NIL ((1.875 11.857141 0 0 -5.25 0.857142807 ) (-0.750000001 12.285713 -5.25 0.857142807 2.25 -4.2857132 ) (-4.875 10.999998 -3. -3.42857122 -3.74999905 -1.71428537 ) (-9.75 6.7142849 -6.74999905 -5.1428566 6.74999905 5.1428566 )) NATURAL) (3 ((147 197) (147 205) (147 205)) NIL ((0 10. 0 0 0 -12. ) (0 4. 0 -12. 0 12. )) NATURAL) (2 ((147 205) (230 205)) NIL ((83. 0 0 0 0 0 )) NATURAL) (2 ((230 205) (230 197)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (6 ((230 197) (216 187) (203 163) (182 108) (155 34) (129 -33)) NIL ((-14.722486 -8.07655335 0 0 4.33492756 -11.54067 ) (-12.555023 -13.846889 4.33492756 -11.54067 -15.674638 -26.296646 ) (-16.057415 -38.53588 -11.339712 -37.837318 4.36363602 14.727272 ) (-25.215309 -69.009567 -6.97607613 -23.110046 10.2200946 39.387558 ) (-27.081337 -72.425827 3.24401903 16.277511 -3.24401903 -16.277511 )) NATURAL) (18 ((129 -33) (106 -65) (71 -78) (36 -70) (18 -52) (19 -28) (35 -12) (60 -11) (77 -29) (74 -50) (84 -54) (97 -42) (105 -12) (98 18) (71 88) (44 151) (27 185) (10 197)) NIL ((-20.030921 -35.737548 0 0 -17.814453 22.425304 ) (-28.938152 -24.524894 -17.814453 22.425304 17.072273 1.87346649 ) (-38.216468 -1.16285705 -0.742179275 24.29877 21.525348 -17.919166 ) (-28.195968 14.176328 20.783172 6.37960148 -1.17368698 3.80321789 ) (-7.99964047 22.457538 19.609485 10.182819 -4.83061028 -21.293701 ) (9.19454 21.993507 14.778875 -11.1108818 -3.5038681 -2.62841225 ) (22.221481 9.5684204 11.275007 -13.739294 -17.153915 -10.192644 ) (24.919528 -9.26719476 -5.87891007 -23.931938 -29.88045 19.39899 ) (4.1003933 -23.499637 -35.75936 -4.53294659 64.67572 28.596672 ) (0.678891659 -13.734245 28.916358 24.063728 -30.822425 -13.785705 ) (14.184036 3.43663216 -1.90606785 10.2780227 -1.38602018 20.546138 ) (11.584959 23.987724 -3.29208803 30.824161 -11.6334896 -56.398834 ) (2.47612381 26.612464 -14.925579 -25.574676 -12.0800056 97.049225 ) (-18.489456 49.5624 -27.005584 71.474548 29.953506 -91.79808 ) (-30.518287 75.137909 2.94792461 -20.323539 12.2659607 -11.8568496 ) (-21.437381 48.88594 15.213886 -32.180389 -19.017356 7.22549058 ) (-15.7321758 20.318298 -3.80347204 -24.954898 3.80347204 24.954898 )) NATURAL) (2 ((10 197) (10 205)) NIL ((0 8. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 172Q) (FACE M R R) (WIDTH 216 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 15:28:40) (MADE-FROM NIL 106 130 70 46) (SPLINES ((3 ((34 205) (34 205) (204 205)) NIL ((-42.5 0 0 0 255. 0 ) (85. 0 255. 0 -255. 0 )) NATURAL) (2 ((204 205) (204 195)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (2 ((204 195) (114 17)) NIL ((-90. -178. 0 0 0 0 )) NATURAL) (5 ((114 17) (138 19) (161 30) (173 45) (180 60)) NIL ((23.571426 -0.125000000 0 0 2.5714283 12.75 ) (24.857139 6.25 2.5714283 12.75 -18.857139 -9.75 ) (17.999996 14.125 -16.285713 2.99999952 12.857141 -3.74999905 ) (8.1428566 15.249998 -3.42857122 -0.749999881 3.42857122 0.749999881 )) NATURAL) (2 ((180 60) (198 60)) NIL ((18. 0 0 0 0 0 )) NATURAL) (2 ((198 60) (191 0)) NIL ((-7. -60. 0 0 0 0 )) NATURAL) (2 ((191 0) (9 0)) NIL ((-182. 0 0 0 0 0 )) NATURAL) (3 ((9 0) (107 189) (107 189)) NIL ((122.5 236.25 0 0 -147. -283.5 ) (49. 94.5 -147. -283.5 147. 283.5 )) NATURAL) (5 ((107 189) (88 188) (72 183) (59 171) (50 154)) NIL ((-19.660713 -0.339285672 0 0 3.96428537 -3.96428585 ) (-17.678569 -2.3214283 3.96428537 -3.96428585 -1.8214283 -4.17857075 ) (-14.624998 -8.375 2.14285707 -8.1428566 3.32142782 2.6785717 ) (-10.821428 -15.178571 5.4642849 -5.4642849 -5.4642849 5.4642849 )) NATURAL) (2 ((50 154) (30 154)) NIL ((-20. 0 0 0 0 0 )) NATURAL) (3 ((30 154) (34 205) (34 205)) NIL ((5. 63.75 0 0 -6. -76.5 ) (2. 25.5 -6. -76.5 6. 76.5 )) NATURAL)))) STOP \ No newline at end of file diff --git a/obsolete/lispusers/splinefonts/TIMESROMAN.NUM-SF b/obsolete/lispusers/splinefonts/TIMESROMAN.NUM-SF deleted file mode 100644 index c1ab00ca..00000000 --- a/obsolete/lispusers/splinefonts/TIMESROMAN.NUM-SF +++ /dev/null @@ -1 +0,0 @@ - ((FAMILY TIMESROMAND) (CHARACTER 61Q) (FACE M R R) (WIDTH 248 0) (FIDUCIAL 385 385) (VERSION 0 4-OCT-77 9:40:26) (MADE-FROM NIL 118 130 43 65) (SPLINES ((2 ((49 0) (212 0)) NIL ((163. 0 0 0 0 0 )) NATURAL) (2 ((212 0) (212 10)) NIL ((0 10. 0 0 0 0 )) NATURAL) (5 ((212 10) (198 11) (185 15) (175 27) (173 52)) NIL ((-14.196428 0.535714269 0 0 1.17857146 2.78571415 ) (-13.607141 1.92857146 1.17857146 2.78571415 0.107142686 4.0714283 ) (-12.375 6.75 1.28571415 6.85714245 10.3928566 10.9285698 ) (-5.8928566 19.071426 11.6785717 17.785713 -11.6785717 -17.785713 )) NATURAL) (2 ((173 52) (173 294)) NIL ((0 242. 0 0 0 0 )) NATURAL) (2 ((173 294) (153 294)) NIL ((-20. 0 0 0 0 0 )) NATURAL) (2 ((153 294) (39 255)) NIL ((-114. -39. 0 0 0 0 )) NATURAL) (2 ((39 255) (39 245)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (6 ((39 245) (51 248) (65 250) (79 245) (84 233) (84 212)) NIL ((11.61244 2.85645914 0 0 2.32535887 0.861243725 ) (12.7751178 3.28708124 2.32535887 0.861243725 0.373205185 -10.306217 ) (15.2870807 -1.00478506 2.69856405 -9.4449749 -15.818178 4.36363602 ) (10.076553 -8.26794244 -13.119615 -5.08133888 8.89951898 -7.14832497 ) (1.40669846 -16.9234428 -4.22009564 -12.2296638 4.22009564 12.2296638 )) NATURAL) (2 ((84 212) (84 52)) NIL ((0 -160. 0 0 0 0 )) NATURAL) (5 ((84 52) (82 27) (72 15) (59 11) (49 10)) NIL ((-0.125000000 -27.964283 0 0 -11.25 17.785713 ) (-5.75 -19.071426 -11.25 17.785713 8.25 -10.9285698 ) (-12.875 -6.74999905 -2.99999952 6.85714245 8.2499981 -4.0714283 ) (-11.749998 -1.92857122 5.24999905 2.78571415 -5.24999905 -2.78571415 )) NATURAL) (2 ((49 10) (49 0)) NIL ((0 -10. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 62Q) (FACE M R R) (WIDTH 248 0) (FIDUCIAL 385 385) (VERSION 0 4-OCT-77 9:41:31) (MADE-FROM NIL 137 130 43 65) (SPLINES ((3 ((18 0) (18 0) (208 0)) NIL ((-47.5 0 0 0 285. 0 ) (95. 0 285. 0 -285. 0 )) NATURAL) (2 ((208 0) (235 85)) NIL ((27. 85. 0 0 0 0 )) NATURAL) (2 ((235 85) (223 88)) NIL ((-12. 3. 0 0 0 0 )) NATURAL) (4 ((223 88) (217 79) (207 74) (191 72)) NIL ((-5.333333 -9.8666649 0 0 -4. 5.1999998 ) (-7.333333 -7.2666664 -4. 5.1999998 -4. -2. ) (-13.333332 -3.0666666 -8. 3.1999998 8. -3.1999998 )) NATURAL) (2 ((191 72) (99 72)) NIL ((-92. 0 0 0 0 0 )) NATURAL) (13 ((99 72) (133 104) (159 131) (187 161) (207 195) (212 236) (195 269) (167 288) (134 296) (95 293) (64 278) (41 254) (26 224)) NIL ((36.390373 33.521003 0 0 -14.3422489 -9.1260376 ) (29.219245 28.957984 -14.3422489 -9.1260376 23.71125 15.630188 ) (26.732624 27.64704 9.3690014 6.5041504 -20.502761 -5.39471627 ) (25.850242 31.453834 -11.13376 1.10943412 -1.70019531 11.948675 ) (13.866386 38.537605 -12.8339557 13.058109 -14.696451 -24.399986 ) (-6.3157959 39.39572 -27.530406 -11.3418769 18.485996 -4.34872246 ) (-24.603202 25.879486 -9.0444107 -15.690599 6.75246525 5.7948761 ) (-30.27138 13.0863247 -2.29194546 -9.89572335 -9.49585725 -0.830780030 ) (-37.311256 2.77521038 -11.7878036 -10.726503 25.230964 -2.47175407 ) (-36.483573 -9.18717 13.443161 -13.198257 -7.4280052 4.71779442 ) (-26.754417 -20.026531 6.0151558 -8.48046304 4.4810543 1.60057926 ) (-18.498733 -27.706703 10.49621 -6.87988377 -10.49621 6.87988377 )) NATURAL) (2 ((26 224) (36 219)) NIL ((10. -5. 0 0 0 0 )) NATURAL) (11 ((36 219) (51 235) (73 245) (104 242) (124 216) (125 178) (114 142) (94 105) (70 68) (43 35) (18 10)) NIL ((13.8977489 17.051868 0 0 6.61349774 -6.3112297 ) (17.204498 13.896255 6.61349774 -6.3112297 8.93251039 -4.44385147 ) (28.284252 5.36310005 15.546009 -10.755081 -30.343544 -17.91336 ) (28.658485 -14.348661 -14.7975349 -28.668441 -7.5583267 16.0972938 ) (10.081787 -34.968452 -22.355861 -12.5711479 12.5768566 19.524185 ) (-5.98564625 -37.777504 -9.77900506 6.95303727 -0.749107361 -10.194042 ) (-16.139202 -35.921493 -10.528112 -3.24100542 8.4195709 3.25198889 ) (-22.45753 -37.536499 -2.10854101 0.0109835881 -2.92918157 3.18608713 ) (-26.030662 -35.932472 -5.03772259 3.19707108 9.29715158 8.0036602 ) (-26.419807 -28.733573 4.25942993 11.200731 -4.25942993 -11.200731 )) NATURAL) (2 ((18 10) (18 0)) NIL ((0 -10. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 63Q) (FACE M R R) (WIDTH 248 0) (FIDUCIAL 385 385) (VERSION 0 4-OCT-77 9:42:55) (MADE-FROM NIL 136 130 43 65) (SPLINES ((11 ((31 236) (47 258) (70 280) (99 294) (137 299) (174 293) (200 275) (212 244) (204 214) (181 192) (151 178)) NIL ((14.3884849 21.553886 0 0 9.66908837 2.67667627 ) (19.22303 22.892223 9.66908837 2.67667627 -6.34544755 -13.3833809 ) (25.719394 18.877208 3.32364082 -10.706705 9.7127056 2.85685539 ) (33.899383 9.59893037 13.036346 -7.8498497 -14.5053768 -4.04404068 ) (39.683044 -0.272939324 -1.46903157 -11.89389 -11.6911888 1.31930732 ) (32.368415 -11.507177 -13.160221 -10.574583 1.27013778 -7.2331829 ) (19.843265 -25.698352 -11.890083 -17.8077659 -11.389358 21.613414 ) (2.25850487 -32.699409 -23.279441 3.80565167 8.2872944 4.77950764 ) (-16.8772888 -26.504001 -14.992147 8.5851593 8.24018479 1.26855087 ) (-27.749343 -17.284568 -6.75196267 9.85371018 6.75196267 -9.85371018 )) NATURAL) (22 ((151 178) (181 171) (209 154) (229 119) (228 72) (208 38) (174 12) (127 -2) (78 -4) (40 4) (18 19) (18 44) (44 54) (77 43) (105 24) (136 20) (154 41) (157 76) (145 105) (126 126) (100 141) (75 149)) NIL ((30.282508 -5.32254124 0 0 -1.69506907 -10.0647506 ) (29.434974 -10.3549156 -1.69506907 -10.0647506 -3.52465439 -9.67624665 ) (25.977577 -25.257789 -5.2197237 -19.740997 -20.206306 0.769748688 ) (10.654701 -44.613914 -25.426033 -18.971248 6.34989167 42.597244 ) (-11.5963859 -42.286537 -19.076141 23.625999 6.80674554 -21.158752 ) (-27.269153 -29.239913 -12.2693958 2.4672451 -3.57687187 12.037767 ) (-41.326988 -20.753784 -15.846267 14.505012 13.50074 -2.99231338 ) (-50.42288 -7.74493027 -2.34552717 11.512699 15.573904 -0.0685119629 ) (-44.981452 3.7335124 13.228378 11.444187 2.20362282 -8.73363687 ) (-30.651268 10.8108806 15.432001 2.71054888 5.61161614 17.003063 ) (-12.4134578 22.02296 21.043617 19.713615 11.349899 -41.278625 ) (14.3051128 21.097263 32.393516 -21.56501 -27.011226 -1.88856125 ) (33.193016 -1.41202593 5.38228989 -23.453571 -17.304973 12.83287 ) (29.922817 -18.449161 -11.9226837 -10.6207008 24.231128 28.557079 ) (30.115699 -14.7913208 12.3084449 17.936378 -31.619537 10.938793 ) (26.614376 8.61445428 -19.311092 28.875171 6.2470169 -12.3122406 ) (10.42679 31.333507 -13.064075 16.562931 -5.368515 -27.689838 ) (-5.3215437 34.051513 -18.43259 -11.126909 15.227033 3.07161903 ) (-16.140617 24.460414 -3.20555592 -8.0552902 -7.53962804 3.40336895 ) (-23.115985 18.106807 -10.7451839 -4.65192127 14.931478 -4.6850977 ) (-26.395431 11.112339 4.1862955 -9.33701898 -4.1862955 9.33701898 )) NATURAL) (2 ((75 149) (75 158)) NIL ((0 9. 0 0 0 0 )) NATURAL) (9 ((75 158) (106 169) (126 188) (132 214) (125 241) (107 256) (79 257) (56 244) (41 229)) NIL ((33.150589 9.29224969 0 0 -12.9035339 10.2465019 ) (26.698818 14.4155 -12.9035339 10.2465019 -1.48232650 -3.23251152 ) (13.0541229 23.045745 -14.38586 7.0139904 0.832839966 -3.31645727 ) (-0.915316582 28.401508 -13.55302 3.69753313 4.15096092 -19.501655 ) (-12.392856 22.348213 -9.40205956 -15.8041229 -5.4366741 3.32308579 ) (-24.513252 8.20563127 -14.838733 -12.481037 23.595726 -5.79068375 ) (-27.554122 -7.17074776 8.75699426 -18.27172 1.05375671 19.839649 ) (-18.270248 -15.522642 9.81075097 1.56793022 -9.81075097 -1.56793022 )) NATURAL) (2 ((41 229) (31 236)) NIL ((-10. 7. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 64Q) (FACE M R R) (WIDTH 248 0) (FIDUCIAL 385 385) (VERSION 0 4-OCT-77 9:43:50) (MADE-FROM NIL 106 130 43 65) (SPLINES ((3 ((117 0) (117 0) (210 0)) NIL ((-23.25 0 0 0 139.5 0 ) (46.5 0 139.5 0 -139.5 0 )) NATURAL) (2 ((210 0) (210 57)) NIL ((0 57. 0 0 0 0 )) NATURAL) (2 ((210 57) (232 57)) NIL ((22. 0 0 0 0 0 )) NATURAL) (2 ((232 57) (232 105)) NIL ((0 48. 0 0 0 0 )) NATURAL) (2 ((232 105) (210 105)) NIL ((-22. 0 0 0 0 0 )) NATURAL) (2 ((210 105) (210 294)) NIL ((0 189. 0 0 0 0 )) NATURAL) (2 ((210 294) (166 294)) NIL ((-44. 0 0 0 0 0 )) NATURAL) (2 ((166 294) (13 98)) NIL ((-153. -196. 0 0 0 0 )) NATURAL) (2 ((13 98) (13 57)) NIL ((0 -41. 0 0 0 0 )) NATURAL) (2 ((13 57) (117 57)) NIL ((104. 0 0 0 0 0 )) NATURAL) (2 ((117 57) (117 0)) NIL ((0 -57. 0 0 0 0 )) NATURAL)) ((2 ((117 105) (57 105)) NIL ((-60. 0 0 0 0 0 )) NATURAL) (2 ((57 105) (117 182)) NIL ((60. 77. 0 0 0 0 )) NATURAL) (2 ((117 182) (117 105)) NIL ((0 -77. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 65Q) (FACE M R R) (WIDTH 248 0) (FIDUCIAL 385 385) (VERSION 0 4-OCT-77 9:44:39) (MADE-FROM NIL 140 130 43 65) (SPLINES ((2 ((229 294) (81 294)) NIL ((-148. 0 0 0 0 0 )) NATURAL) (2 ((81 294) (27 138)) NIL ((-54. -156. 0 0 0 0 )) NATURAL) (22 ((27 138) (57 136) (92 131) (134 114) (159 75) (149 35) (115 22) (83 37) (55 51) (25 47) (15 23) (40 1) (88 -4) (144 5) (188 29) (218 63) (228 107) (214 149) (190 176) (158 193) (119 203) (78 207)) NIL ((29.342811 -1.66680526 0 0 3.9431281 -1.99916839 ) (31.314373 -2.66638946 3.9431281 -1.99916839 10.2843589 -8.004158 ) (40.39968 -8.66763688 14.227487 -10.003326 -33.080566 -19.984199 ) (38.086883 -28.663059 -18.85308 -29.987525 -21.962081 27.940948 ) (8.25275994 -44.680107 -40.815162 -2.04657411 12.9289207 34.22039 ) (-26.097942 -29.616481 -27.886241 32.17382 36.24639 3.1774292 ) (-35.860984 4.14605809 8.3601551 35.351249 -1.91453647 -40.930099 ) (-28.458099 19.032257 6.44561864 -5.57885075 -16.588245 -13.457002 ) (-30.306606 6.724905 -10.1426296 -19.035854 32.267524 -7.24187089 ) (-24.315467 -15.931886 22.1249 -26.277725 19.518119 30.424495 ) (7.5684929 -26.99736 41.64302 4.14677334 -20.340023 17.543861 ) (39.041503 -14.078657 21.302997 21.690635 -10.158018 -10.599956 ) (55.265487 2.31199884 11.144979 11.090679 -29.027896 6.85596848 ) (51.896514 16.830661 -17.882919 17.946647 6.2696266 -10.823919 ) (37.148414 29.365348 -11.6132927 7.1227274 -8.0506096 6.43971539 ) (21.509811 39.70793 -19.663902 13.5624428 -10.0671806 -14.934944 ) (-3.18767786 45.8029 -29.731082 -1.37250161 24.319316 -18.699932 ) (-20.759101 35.080429 -5.41176605 -20.072437 -3.210083 11.734699 ) (-27.775909 20.875343 -8.62184907 -8.33773805 0.521009445 1.7611351 ) (-36.137252 13.4181747 -8.1008396 -6.57660294 7.12604905 -0.779245377 ) (-40.675064 6.4519491 -0.974789858 -7.3558483 0.974789858 7.3558483 )) NATURAL) (2 ((78 207) (81 219)) NIL ((3. 12. 0 0 0 0 )) NATURAL) (2 ((81 219) (194 219)) NIL ((113. 0 0 0 0 0 )) NATURAL) (2 ((194 219) (229 294)) NIL ((35. 75. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 66Q) (FACE M R R) (WIDTH 248 0) (FIDUCIAL 385 385) (VERSION 0 4-OCT-77 9:45:32) (MADE-FROM NIL 98 130 43 65) (SPLINES ((3 ((229 298) (229 298) (229 288)) NIL ((0 2.5 0 0 0 -15. ) (0 -5. 0 -15. 0 15. )) NATURAL) (7 ((229 288) (195 281) (165 267) (141 248) (124 227) (112 203) (106 181)) NIL ((-34.75769 -5.46282006 0 0 4.54615307 -9.22307588 ) (-32.48461 -10.074358 4.54615307 -9.22307588 1.26923179 4.1153841 ) (-27.303844 -17.239742 5.81538487 -5.10769177 2.37692165 4.76153755 ) (-20.299999 -19.966663 8.1923065 -0.346153617 -4.77692127 -5.16153813 ) (-14.4961528 -22.893589 3.41538477 -5.50769234 4.73076725 9.88461495 ) (-8.71538354 -23.458972 8.1461525 4.3769226 -8.1461525 -4.3769226 )) NATURAL) (24 ((106 181) (133 186) (161 186) (193 177) (222 151) (236 111) (234 68) (218 34) (189 9) (147 -4) (110 -3) (74 8) (44 29) (24 60) (13 100) (14 144) (24 187) (40 218) (60 243) (85 264) (120 281) (152 291) (191 297) (229 298)) NIL ((27.017456 5.9552679 0 0 -0.104736805 -5.7316103 ) (26.965084 3.08946276 -0.104736805 -5.7316103 6.52368355 -1.3419466 ) (30.122192 -3.31312084 6.4189472 -7.0735569 -7.99000168 -12.900602 ) (32.546135 -16.8369789 -1.57105517 -19.974159 -16.563671 4.94436646 ) (22.693244 -34.33895 -18.134727 -15.0297928 2.24469948 11.123121 ) (5.68086815 -43.807182 -15.890028 -3.90667152 1.58487129 16.563148 ) (-9.41672326 -39.43228 -14.3051567 12.6564789 3.41581917 -5.37572384 ) (-22.013973 -29.463665 -10.8893375 7.28075505 -9.24814797 4.9397459 ) (-37.527381 -19.713039 -20.137485 12.2205009 33.576767 3.61674309 ) (-40.87648 -5.6841688 13.439281 15.837244 -17.058918 -7.4067192 ) (-35.966659 6.44971657 -3.61963892 8.4305248 10.6589126 2.01012611 ) (-34.256843 15.885305 7.0392742 10.4406509 4.42326546 -0.633787155 ) (-25.005939 26.009063 11.4625396 9.80686379 -4.35197258 0.525022507 ) (-15.719387 36.078437 7.1105671 10.331886 6.98462487 -7.46629525 ) (-5.11650753 42.677177 14.0951919 2.86559057 -5.58652687 -0.659839154 ) (6.18542004 45.212844 8.50866509 2.20575142 -2.63851929 -19.894344 ) (13.374826 37.47142 5.8701458 -17.688594 -1.85939884 14.2372398 ) (18.315273 26.901447 4.01074696 -3.45135403 -1.92388344 -1.05462932 ) (21.364078 22.922779 2.08686352 -4.50598336 15.554931 1.98127079 ) (31.228408 19.407428 17.641796 -2.52471256 -30.295848 -6.87045193 ) (33.722274 13.4474907 -12.6540527 -9.3951645 27.628467 7.50054169 ) (34.88246 7.802598 14.9744148 -1.89462209 -20.218017 -5.1317215 ) (39.747863 3.34211445 -5.24360276 -7.0263443 5.24360276 7.0263443 )) NATURAL)) ((12 ((97 136) (105 160) (127 165) (146 144) (150 106) (151 61) (143 27) (121 14) (102 32) (96 66) (94 100) (97 136)) NIL ((4.31370259 27.50521 0 0 22.117782 -21.031272 ) (15.3725929 16.989574 22.117782 -21.031272 -26.588913 -8.84362794 ) (24.195919 -8.46351434 -4.47113037 -29.8749 -17.76213 14.40579 ) (10.843723 -31.135517 -22.233261 -15.46911 25.637439 5.22045326 ) (1.42918324 -43.9944 3.40418053 -10.248657 -12.787641 24.712398 ) (-1.56045842 -41.886856 -9.383461 14.463741 -10.486866 3.9299469 ) (-16.187351 -25.458145 -19.870327 18.393688 24.735099 19.567806 ) (-23.690128 2.71944952 4.86477566 37.961494 13.5464439 -22.201179 ) (-12.0521297 29.580352 18.41122 15.760313 -18.920879 -20.763061 ) (-3.10134888 34.959129 -0.509659410 -5.0027504 8.1370735 9.25343705 ) (0.457528412 34.583099 7.6274147 4.2506876 -7.6274147 -4.2506876 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 67Q) (FACE M R R) (WIDTH 248 0) (FIDUCIAL 385 385) (VERSION 0 4-OCT-77 9:46:19) (MADE-FROM NIL 110 130 43 65) (SPLINES ((3 ((45 294) (45 294) (230 294)) NIL ((-46.25 0 0 0 277.5 0 ) (92.5 0 277.5 0 -277.5 0 )) NATURAL) (2 ((230 294) (119 0)) NIL ((-111. -294. 0 0 0 0 )) NATURAL) (2 ((119 0) (83 0)) NIL ((-36. 0 0 0 0 0 )) NATURAL) (2 ((83 0) (150 208)) NIL ((67. 208. 0 0 0 0 )) NATURAL) (2 ((150 208) (70 208)) NIL ((-80. 0 0 0 0 0 )) NATURAL) (4 ((70 208) (55 207) (41 202) (34 194)) NIL ((-14.799999 -0.133333355 0 0 -1.19999981 -5.1999998 ) (-15.399999 -2.73333311 -1.19999981 -5.1999998 11.999998 2. ) (-10.599998 -6.9333334 10.799999 -3.1999998 -10.799999 3.1999998 )) NATURAL) (2 ((34 194) (24 197)) NIL ((-10. 3. 0 0 0 0 )) NATURAL) (2 ((24 197) (45 294)) NIL ((21. 97. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 70Q) (FACE M R R) (WIDTH 248 0) (FIDUCIAL 385 385) (VERSION 0 4-OCT-77 9:47:01) (MADE-FROM NIL 110 130 43 65) (SPLINES ((11 ((143 187) (124 200) (109 218) (99 241) (100 264) (114 279) (135 278) (147 262) (152 235) (150 209) (143 187)) NIL ((-19.869873 11.9956379 0 0 5.21924973 6.02616978 ) (-17.26025 15.008722 5.21924973 6.02616978 -2.09624863 -0.130851745 ) (-13.0891247 20.969467 3.1230011 5.89531803 9.16574479 -5.50276184 ) (-5.38325024 24.113403 12.2887459 0.392555833 1.43326759 -7.85809708 ) (7.62212754 20.576908 13.722013 -7.46554185 -2.89880943 -11.064842 ) (19.894733 7.5789461 10.823204 -18.530384 -25.838031 4.1174755 ) (17.798923 -8.8927021 -15.014829 -14.412908 10.250944 0.594938278 ) (7.9095659 -23.00814 -4.76388455 -13.81797 -3.16574574 17.502761 ) (1.56280875 -28.074729 -7.92963029 3.68479157 2.41203785 1.39401054 ) (-5.16080189 -23.692932 -5.51759243 5.0788021 5.51759243 -5.0788021 )) NATURAL)) ((11 ((106 126) (98 109) (94 84) (93 54) (103 24) (129 12) (148 26) (153 57) (143 89) (126 112) (106 126)) NIL ((-8.9797363 -15.152502 0 0 5.8784256 -11.0849876 ) (-6.04052354 -20.694995 5.8784256 -11.0849876 -5.39213085 7.4249382 ) (-2.85816383 -28.067512 0.486294031 -3.66004896 9.6901016 -0.614766598 ) (2.47318268 -32.034942 10.176397 -4.27481556 14.6317119 25.034126 ) (19.965435 -23.792697 24.808109 20.759311 -38.216949 8.4782562 ) (25.665069 1.20574236 -13.40884 29.237567 0.236091614 -10.9471588 ) (12.374275 24.96973 -13.172748 18.290409 -4.72740555 -18.689624 ) (-3.16217756 33.915329 -17.900154 -0.399217188 12.6735286 -10.2943229 ) (-14.7255668 28.368946 -5.22662449 -10.6935405 2.03328085 -0.133073806 ) (-18.93555 17.608871 -3.19334364 -10.826614 3.19334364 10.826614 )) NATURAL)) ((16 ((161 178) (191 188) (216 206) (225 234) (214 267) (191 285) (159 295) (117 297) (83 292) (53 279) (31 254) (23 224) (32 192) (51 168) (70 150) (92 135)) NIL ((30.5219 8.40951158 0 0 -3.13142109 9.5429306 ) (28.956192 13.1809768 -3.13142109 9.5429306 -14.342893 0.285345077 ) (18.65332 22.866577 -17.474315 9.82827569 -5.496994 1.31568908 ) (-1.56949138 33.352699 -22.971309 11.1439647 12.330877 -35.548103 ) (-18.375362 26.72261 -10.640432 -24.40414 4.17348099 20.876743 ) (-26.929054 12.756843 -6.46695138 -3.5273943 -11.0248088 -5.95888233 ) (-38.908409 6.25000668 -17.49176 -9.4862766 33.925758 2.95878696 ) (-39.437286 -1.75687647 16.433998 -6.52748967 -16.67823 0.123727798 ) (-31.34241 -8.22250176 -0.244234919 -6.40376187 8.7871742 -9.4536953 ) (-27.193054 -19.353111 8.54294015 -15.857458 5.52952576 13.691059 ) (-15.885351 -28.365039 14.0724659 -2.16639852 5.09471703 -3.31054735 ) (0.734474182 -32.186714 19.167182 -5.47694588 -7.90839387 17.551128 ) (15.94746 -28.888095 11.258789 12.074182 -15.461132 -6.89396477 ) (19.475681 -20.260894 -4.20234394 5.18021775 9.7529297 -1.97527265 ) (20.149803 -16.068313 5.55058575 3.20494509 -5.55058575 -3.20494509 )) NATURAL) (18 ((92 135) (66 126) (40 113) (22 90) (18 58) (31 30) (53 11) (81 0) (112 -4) (151 -3) (187 6) (214 24) (231 50) (236 85) (223 121) (200 147) (180 164) (161 178)) NIL ((-25.61761 -8.46248437 0 0 -2.29432678 -3.22508955 ) (-26.764774 -10.075029 -2.29432678 -3.22508955 11.4716339 -7.87455178 ) (-23.323284 -17.237396 9.1773071 -11.0996418 4.40778733 -1.27669716 ) (-11.942083 -28.975387 13.585094 -12.3763389 6.8972168 18.981342 ) (5.0916214 -31.861053 20.482311 6.60500336 -13.996664 3.35132027 ) (18.575599 -23.58039 6.48564625 9.9563236 1.08945465 -2.38662529 ) (25.605972 -14.817379 7.5751009 7.56969834 -8.36115075 0.195180893 ) (29.000499 -7.15008927 -0.786051036 7.7648792 14.355152 -4.39409924 ) (35.39202 -1.58225989 13.569101 3.37077951 -19.059459 5.3812208 ) (39.431388 4.47912979 -5.4903612 8.7520008 -4.11729336 0.869216920 ) (31.882385 13.665739 -9.60765458 9.6212177 -0.471364975 -2.85809517 ) (22.039047 21.85791 -10.0790195 6.76312256 0.00275802612 4.56316757 ) (11.9614086 30.902614 -10.0762615 11.32629 -11.539667 -9.39457894 ) (-3.88468742 37.531616 -21.615928 1.93171096 10.15591 -14.984844 ) (-20.42266 31.970905 -11.460018 -13.0531349 18.916019 3.33397102 ) (-22.424667 20.584754 7.45600415 -9.7191639 -7.82000447 7.64895535 ) (-18.8786659 14.690069 -0.364001214 -2.07020855 0.364001214 2.07020855 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 71Q) (FACE M R R) (WIDTH 248 0) (FIDUCIAL 385 385) (VERSION 0 4-OCT-77 9:48:02) (MADE-FROM NIL 122 130 43 65) (SPLINES ((7 ((140 116) (133 90) (113 55) (89 31) (63 17) (36 8) (13 5)) NIL ((-3.77564097 -22.973075 0 0 -19.346153 -18.161537 ) (-13.448717 -32.05384 -19.346153 -18.161537 18.730766 36.807685 ) (-23.429485 -31.811534 -0.615384579 18.646152 -1.57692289 -9.06923104 ) (-24.833332 -17.6999969 -2.19230747 9.57692147 -0.423077107 -6.53076649 ) (-27.237178 -11.38846 -2.61538458 3.0461545 9.2692299 5.19230557 ) (-25.217945 -5.74615288 6.65384579 8.23846055 -6.65384579 -8.23846055 )) NATURAL) (2 ((13 5) (13 -5)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (24 ((13 -5) (42 -6) (85 0) (129 13) (167 33) (198 61) (221 96) (235 133) (238 179) (231 223) (212 258) (180 283) (148 293) (114 296) (77 291) (48 276) (29 258) (13 224) (11 183) (21 149) (43 121) (74 108) (109 106) (140 116)) NIL ((25.408454 -2.4763155 0 0 21.549259 8.8578949 ) (36.183082 1.95263242 21.549259 8.8578949 -23.746303 -2.28948021 ) (45.85919 9.66578675 -2.19704437 6.56841469 -4.56403923 0.300027847 ) (41.380126 16.384216 -6.7610836 6.86844254 0.00246334076 1.08936882 ) (34.620277 23.797344 -6.75862027 7.95781136 -1.44581127 1.34249305 ) (27.138748 32.426399 -8.20443154 9.3003044 -0.219215393 -12.459333 ) (18.82471 35.497039 -8.4236469 -3.15902996 -3.67733002 18.494842 ) (8.5623989 41.585426 -12.1009769 15.335813 2.92853546 -19.520042 ) (-2.07431078 47.161224 -9.17244149 -4.18422985 -2.03680992 -6.41466618 ) (-12.2651577 39.76966 -11.209251 -10.598896 -6.7812996 3.17871285 ) (-26.865058 30.76012 -17.990551 -7.42018319 23.162006 -12.30018 ) (-33.274604 17.189842 5.17145634 -19.720363 -7.86673165 16.022014 ) (-32.036514 5.48048878 -2.6952753 -3.69834662 -3.69507694 -3.78789759 ) (-36.579322 -0.111806541 -6.39035226 -7.4862442 16.647037 -6.87042809 ) (-34.646156 -11.033264 10.256685 -14.356672 3.10692024 19.269603 ) (-22.836017 -15.755134 13.363605 4.91293335 -17.0747108 -28.207992 ) (-18.009765 -24.946197 -3.71110535 -23.295059 23.191921 15.562372 ) (-10.12491 -40.460067 19.480815 -7.732687 -9.6929836 19.958496 ) (4.50941372 -38.213508 9.78783227 12.225809 3.5800209 -11.39636 ) (16.087253 -31.685878 13.367853 0.829447270 -4.6271019 19.626949 ) (27.141559 -21.042957 8.74075128 20.456398 -3.07161903 -13.1114368 ) (34.346496 -7.14227963 5.66913224 7.34496117 -13.086414 8.81879617 ) (33.472427 4.61208058 -7.41728306 16.163757 7.41728306 -16.163757 )) NATURAL)) ((14 ((119 277) (102 266) (96 243) (94 215) (94 186) (99 153) (110 133) (128 128) (143 144) (147 175) (146 209) (143 240) (135 267) (119 277)) NIL ((-18.843631 -1.24039459 -2.892457 -23.967063 19.73917 13.343559 ) (-11.8665027 -18.535678 16.846714 -10.6235046 -15.3411178 5.08459187 ) (-2.69034862 -26.616886 1.50559568 -5.53891278 -0.374693632 8.31806947 ) (-1.37209987 -27.996765 1.13090205 2.77915716 4.83989334 -14.35687 ) (2.17874861 -32.396041 5.97079563 -11.5777149 -0.984880448 31.109413 ) (7.6571045 -28.419052 4.98591519 19.5317 5.0996275 -8.08078385 ) (15.1928329 -12.927742 10.0855426 11.450916 -13.413631 13.2137069 ) (18.5715599 5.13002777 -3.32808876 24.664623 -11.4450988 -8.7740402 ) (9.5209198 25.407627 -14.773187 15.890583 11.1940345 -14.1175327 ) (0.344750881 34.23944 -3.5791521 1.77304864 2.66895056 -6.755826 ) (-1.89992594 32.634574 -0.910201312 -4.9827776 -3.86983919 5.14084149 ) (-4.74504757 30.22222 -4.78004074 0.158064514 -5.18959046 -19.80754 ) (-12.119884 20.476512 -9.9696312 -19.649478 6.62820054 -3.91065979 )) PSEUDOCYCLIC)))) ((FAMILY TIMESROMAND) (CHARACTER 60Q) (FACE M R R) (WIDTH 248 0) (FIDUCIAL 385 385) (VERSION 0 4-OCT-77 9:49:21) (MADE-FROM NIL 112 130 43 65) (SPLINES ((29 ((125 302) (162 297) (194 281) (218 251) (229 228) (236 199) (240 165) (240 147) (240 129) (236 95) (229 66) (218 43) (194 13) (162 -3) (125 -8) (88 -3) (56 13) (32 43) (21 66) (14 95) (10 129) (10 147) (10 165) (14 199) (21 228) (32 251) (56 281) (88 297) (125 302)) NIL ((38.123054 -0.494537652 -0.435223341 -9.4098396 -5.4326887 1.19674492 ) (34.971489 -9.30600549 -5.86791229 -8.2130947 -0.225214004 -15.524675 ) (28.99097 -25.28144 -6.0931263 -23.73777 -11.6664486 42.901954 ) (17.064617 -27.568229 -17.7595749 19.164184 16.891006 -30.08316 ) (7.75054837 -23.445625 -0.868566871 -10.9189758 -1.89759016 -0.569307328 ) (5.93318558 -34.649253 -2.76615715 -11.488283 -3.30064392 38.360389 ) (1.51670646 -26.95734 -6.06680108 26.872112 9.1001644 -26.87228 ) (-1.25567112E-5 -13.5213699 3.03336334 -1.70698214E-4 -9.10001374 -26.871257 ) (-1.51665687 -26.957172 -6.06665135 -26.871429 3.29989529 38.35733 ) (-5.9333601 -34.649932 -2.76675606 11.4859066 1.90043187 -0.558097840 ) (-7.7499008 -23.443077 -0.866324187 10.9278087 -16.9016189 -30.12495 ) (-17.067035 -27.577743 -17.767944 -19.197143 11.706064 43.057907 ) (-28.981948 -25.245929 -6.0618801 23.860767 0.0773506165 -16.1067009 ) (-35.005149 -9.4385147 -5.9845295 7.7540655 5.9845295 3.36890125 ) (-37.99742 1.60187482E-7 0 11.1229667 5.9845295 -3.36890125 ) (-35.005149 9.4385166 5.9845295 7.7540655 0.0773506165 16.1067009 ) (-28.981948 25.245933 6.0618801 23.860767 11.706064 -43.057907 ) (-17.0670318 27.577743 17.767944 -19.197143 -16.9016189 30.12495 ) (-7.74989987 23.443077 0.866324187 10.9278087 1.90043092 0.558095932 ) (-5.9333601 34.649932 2.7667551 11.4859047 3.29989624 -38.357338 ) (-1.5166564 26.957172 6.06665135 -26.871433 -9.10001374 26.871261 ) (-1.23977661E-5 13.5213699 -3.03336334 -1.69676088E-4 9.1001644 26.87228 ) (1.51670670 26.95734 6.06680108 26.872112 -3.30064344 -38.360389 ) (5.93318558 34.649253 2.76615763 -11.488283 -1.89759087 0.569309235 ) (7.75054837 23.445625 0.868566752 -10.9189739 16.891006 30.083156 ) (17.064617 27.568233 17.7595749 19.164184 -11.6664467 -42.901954 ) (28.99097 25.281436 6.09312726 -23.73777 -0.225214958 15.524673 ) (34.971489 9.30600549 5.86791229 -8.2130966 -5.4326887 -1.19674301 )) PSEUDOCYCLIC)) ((25 ((125 10) (140 16) (149 39) (152 63) (153 89) (154 119) (155 147) (154 175) (153 205) (152 231) (149 255) (140 278) (125 284) (110 278) (101 255) (98 231) (97 205) (96 175) (95 147) (96 119) (97 89) (98 63) (101 39) (110 16) (125 10)) NIL ((16.35659 -0.115979194 -0.491682887 5.6023569 -6.66450596 19.888801 ) (12.5326557 15.43078 -7.15618897 25.491161 0.272627830 -31.058166 ) (5.51278019 25.392856 -6.88356114 -5.567008 5.57399655 8.3438816 ) (1.41621828 23.997787 -1.30956387 2.77687406 1.43138146 3.68263578 ) (0.822345257 28.615982 0.121817797 6.45950986 0.700474859 -11.0744228 ) (1.29440045 29.538276 0.822292686 -4.61491394 -4.23328018 4.61506176 ) (5.23924827E-5 27.230896 -3.41098833 1.48722116E-4 4.2326498 4.61417103 ) (-1.2946105 29.538127 0.821662307 4.6143198 -0.697323084 -11.0717468 ) (-0.821609855 28.616573 0.124339193 -6.45742798 -1.44335818 3.67282152 ) (-1.41894984 23.995555 -1.31901908 -2.78460646 -5.5292425 8.38046075 ) (-5.50259018 25.401184 -6.84826184 5.5958557 -0.439672470 -31.194671 ) (-12.570688 15.399702 -7.2879343 -25.598815 7.28793336 20.398223 ) (-16.214653 -9.53674316E-7 -2.55536235E-7 -5.20059109 7.28793526 -20.39822 ) (-12.570688 -15.3997039 7.28793526 -25.598812 -0.439674378 31.194664 ) (-5.50259018 -25.40118 6.84826089 5.59585476 -5.5292406 -8.38046075 ) (-1.41894984 -23.995559 1.31901955 -2.78460646 -1.44335866 -3.67282152 ) (-0.821609736 -28.616577 -0.124339282 -6.45742798 -0.697323084 11.0717468 ) (-1.2946105 -29.538127 -0.821662427 4.6143198 4.23265076 -4.61417008 ) (5.25317154E-5 -27.230896 3.4109888 1.48977647E-4 -4.23328114 -4.61506367 ) (1.29440045 -29.538276 -0.822292805 -4.6149149 0.700474978 11.0744247 ) (0.822345257 -28.615982 -0.121817782 6.45950986 1.43138146 -3.6826353 ) (1.41621852 -23.997787 1.30956387 2.77687454 5.57399655 -8.3438835 ) (5.51278115 -25.392856 6.88356114 -5.56700897 0.272626877 31.05817 ) (12.5326557 -15.430778 7.156188 25.491161 -6.66450406 -19.888805 )) PSEUDOCYCLIC)))) STOP \ No newline at end of file diff --git a/obsolete/lispusers/splinefonts/TIMESROMAN.S1-SF b/obsolete/lispusers/splinefonts/TIMESROMAN.S1-SF deleted file mode 100644 index 46103ff2..00000000 --- a/obsolete/lispusers/splinefonts/TIMESROMAN.S1-SF +++ /dev/null @@ -1 +0,0 @@ - ((FAMILY TIMESROMAND) (CHARACTER 41Q) (FACE M R R) (WIDTH 159 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 13:54:31) (MADE-FROM NIL 117 130 35 72) (SPLINES ((9 ((80 299) (58 296) (41 286) (34 268) (37 240) (44 209) (52 176) (61 139) (66 97)) NIL ((-22.794181 -1.52006626 0 0 4.7650957 -8.87960244 ) (-20.411632 -5.95986748 4.7650957 -8.87960244 6.17451955 2.39801216 ) (-12.559276 -13.6404628 10.939615 -6.48159028 0.536821366 -6.7124443 ) (-1.35125184 -23.478275 11.4764366 -13.194034 -8.3217964 12.451765 ) (5.9642849 -30.446426 3.15463877 -0.742267847 -3.24963093 -1.09462428 ) (7.4941082 -31.736007 -0.0949926228 -1.83689213 3.32032347 -2.07326984 ) (9.05927659 -34.609535 3.2253313 -3.91016197 -10.0316639 -2.61229706 ) (7.2687769 -39.825843 -6.80633259 -6.52245904 6.80633259 6.52245904 )) NATURAL) (2 ((66 97) (94 97)) NIL ((28. 0 0 0 0 0 )) NATURAL) (9 ((94 97) (99 139) (108 176) (116 209) (123 240) (126 268) (119 286) (102 296) (80 299)) NIL ((3.86561108 43.087074 0 0 6.80633259 -6.52245904 ) (7.2687769 39.825843 6.80633259 -6.52245904 -10.0316639 2.61229706 ) (9.05927659 34.609535 -3.2253313 -3.91016197 3.32032394 2.07326984 ) (7.4941082 31.736007 0.0949927271 -1.83689213 -3.24963188 1.09462356 ) (5.96428585 30.446426 -3.15463924 -0.742268563 -8.3217964 -12.451763 ) (-1.35125184 23.478275 -11.4764366 -13.1940326 0.536821366 6.71244145 ) (-12.559278 13.6404628 -10.939615 -6.48159123 6.1745205 -2.3980093 ) (-20.411632 5.95986653 -4.76509476 -8.8796005 4.76509476 8.8796005 )) NATURAL)) ((17 ((80 -6) (99 -3) (114 4) (122 13) (125 27) (122 41) (114 50) (99 57) (80 60) (61 57) (46 50) (38 41) (35 27) (38 13) (46 4) (61 -3) (80 -6)) NIL ((19.639171 1.98203754 0 0 -3.83505154 6.10777474 ) (17.721649 5.0359249 -3.83505154 6.10777474 -4.82474232 -6.53887368 ) (11.474226 7.87426186 -8.65979386 -0.431099415 5.1340208 8.04772187 ) (5.38144303 11.4670238 -3.52577257 7.6166229 -3.71134043 -7.65201569 ) (-8.00937414E-8 15.2576389 -7.237113 -0.0353937074 3.71133947 -7.43965436 ) (-5.38144303 11.5024166 -3.52577353 -7.47504807 -5.13401795 7.41063786 ) (-11.474226 7.73268796 -8.65979196 -0.0644102097 4.8247404 -4.20289994 ) (-17.721649 5.5668268 -3.83505154 -4.26731014 3.83505106 -2.59903431 ) (-19.639171 0 -1.27768117E-7 -6.86634446 3.835052 2.59903335 ) (-17.721649 -5.56682778 3.835052 -4.2673111 4.82473946 4.20290089 ) (-11.474226 -7.73268796 8.65979196 -0.0644097030 -5.1340189 -7.4106388 ) (-5.38144303 -11.5024166 3.52577305 -7.475049 3.71133995 7.4396553 ) (1.59256160E-7 -15.2576389 7.237113 -0.0353935584 -3.71133995 7.65201569 ) (5.38144303 -11.4670238 3.52577305 7.6166229 5.1340208 -8.04772187 ) (11.474226 -7.87426186 8.65979386 -0.431099653 -4.82474232 6.53887368 ) (17.721649 -5.0359249 3.83505154 6.10777474 -3.83505154 -6.10777474 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 43Q) (FACE M R R) (WIDTH 378 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 13:59:09) (MADE-FROM NIL 88 130 95 75) (SPLINES ((2 ((73 221) (59 187)) NIL ((-14. -34. 0 0 0 0 )) NATURAL) (2 ((59 187) (109 187)) NIL ((50. 0 0 0 0 0 )) NATURAL) (2 ((109 187) (77 107)) NIL ((-32. -80. 0 0 0 0 )) NATURAL) (2 ((77 107) (27 107)) NIL ((-50. 0 0 0 0 0 )) NATURAL) (2 ((27 107) (13 73)) NIL ((-14. -34. 0 0 0 0 )) NATURAL) (2 ((13 73) (63 73)) NIL ((50. 0 0 0 0 0 )) NATURAL) (2 ((63 73) (34 0)) NIL ((-29. -73. 0 0 0 0 )) NATURAL) (2 ((34 0) (94 0)) NIL ((60. 0 0 0 0 0 )) NATURAL) (2 ((94 0) (123 73)) NIL ((29. 73. 0 0 0 0 )) NATURAL) (2 ((123 73) (193 73)) NIL ((70. 0 0 0 0 0 )) NATURAL) (2 ((193 73) (164 0)) NIL ((-29. -73. 0 0 0 0 )) NATURAL) (2 ((164 0) (224 0)) NIL ((60. 0 0 0 0 0 )) NATURAL) (2 ((224 0) (253 73)) NIL ((29. 73. 0 0 0 0 )) NATURAL) (2 ((253 73) (303 73)) NIL ((50. 0 0 0 0 0 )) NATURAL) (2 ((303 73) (317 107)) NIL ((14. 34. 0 0 0 0 )) NATURAL) (2 ((317 107) (267 107)) NIL ((-50. 0 0 0 0 0 )) NATURAL) (2 ((267 107) (299 187)) NIL ((32. 80. 0 0 0 0 )) NATURAL) (2 ((299 187) (349 187)) NIL ((50. 0 0 0 0 0 )) NATURAL) (2 ((349 187) (363 221)) NIL ((14. 34. 0 0 0 0 )) NATURAL) (2 ((363 221) (313 221)) NIL ((-50. 0 0 0 0 0 )) NATURAL) (2 ((313 221) (343 294)) NIL ((30. 73. 0 0 0 0 )) NATURAL) (2 ((343 294) (283 294)) NIL ((-60. 0 0 0 0 0 )) NATURAL) (2 ((283 294) (253 221)) NIL ((-30. -73. 0 0 0 0 )) NATURAL) (2 ((253 221) (183 221)) NIL ((-70. 0 0 0 0 0 )) NATURAL) (2 ((183 221) (213 294)) NIL ((30. 73. 0 0 0 0 )) NATURAL) (2 ((213 294) (153 294)) NIL ((-60. 0 0 0 0 0 )) NATURAL) (2 ((153 294) (123 221)) NIL ((-30. -73. 0 0 0 0 )) NATURAL) (2 ((123 221) (73 221)) NIL ((-50. 0 0 0 0 0 )) NATURAL)) ((2 ((137 107) (169 187)) NIL ((32. 80. 0 0 0 0 )) NATURAL) (2 ((169 187) (239 187)) NIL ((70. 0 0 0 0 0 )) NATURAL) (2 ((239 187) (207 107)) NIL ((-32. -80. 0 0 0 0 )) NATURAL) (2 ((207 107) (137 107)) NIL ((-70. 0 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 44Q) (FACE M R R) (WIDTH 295 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 14:21:22) (MADE-FROM NIL 111 130 82 78) (SPLINES ((3 ((256 294) (256 294) (256 204)) NIL ((0 22.5 0 0 0 -135. ) (0 -45. 0 -135. 0 135. )) NATURAL) (2 ((256 204) (246 204)) NIL ((-10. 0 0 0 0 0 )) NATURAL) (5 ((246 204) (223 240) (201 260) (173 274) (161 276)) NIL ((-23.982139 40.071426 0 0 5.8928566 -24.428569 ) (-21.035713 27.857139 5.8928566 -24.428569 -23.464283 26.142852 ) (-26.875 16.499996 -17.571426 1.71428418 45.964279 -20.142848 ) (-21.464283 8.1428547 28.392856 -18.428566 -28.392856 18.428566 )) NATURAL) (2 ((161 276) (161 191)) NIL ((0 -85. 0 0 0 0 )) NATURAL) (10 ((161 191) (179 183) (215 165) (253 139) (277 101) (276 56) (259 26) (219 1) (178 -7) (161 -8)) NIL ((13.47525 -5.72048283 0 0 27.148498 -13.677099 ) (27.049499 -12.559032 27.148498 -13.677099 -27.742504 8.38549806 ) (40.326744 -22.04338 -0.594006300 -5.29160118 -12.1784687 -7.86489106 ) (33.6435 -31.267429 -12.772476 -13.156492 -19.543609 -0.925933839 ) (11.09922 -44.886886 -32.316085 -14.082426 24.352932 41.568618 ) (-9.04039956 -38.184997 -7.96315194 27.486198 -23.868145 -33.348571 ) (-28.937622 -27.373088 -31.831298 -5.86237526 29.119644 31.825672 ) (-46.209098 -17.322628 -2.71165275 25.963298 39.389556 -21.954124 ) (-29.225967 -2.33639145 36.677909 4.00917435 -36.677909 -4.00917435 )) NATURAL) (2 ((161 -8) (161 -28)) NIL ((0 -20. 0 0 0 0 )) NATURAL) (2 ((161 -28) (131 -28)) NIL ((-30. 0 0 0 0 0 )) NATURAL) (2 ((131 -28) (131 -7)) NIL ((0 21. 0 0 0 0 )) NATURAL) (7 ((131 -7) (114 -5) (84 1) (62 10) (48 13) (39 9) (32 0)) NIL ((-13.073076 1.22948718 0 0 -23.561534 4.62307644 ) (-24.853843 3.54102564 -23.561534 4.62307644 39.807685 0.884614945 ) (-28.511535 8.60640908 16.2461509 5.50769139 -9.6692276 -14.161535 ) (-17.099998 7.03333283 6.57692338 -8.65384484 -1.13076973 1.7615366 ) (-11.0884609 -0.739743471 5.44615364 -6.89230824 -3.80769205 1.11538601 ) (-7.54615307 -7.07435895 1.63846135 -5.77692223 -1.63846135 5.77692223 )) NATURAL) (2 ((32 0) (22 0)) NIL ((-10. 0 0 0 0 0 )) NATURAL) (2 ((22 0) (22 100)) NIL ((0 100. 0 0 0 0 )) NATURAL) (2 ((22 100) (34 100)) NIL ((12. 0 0 0 0 0 )) NATURAL) (4 ((34 100) (50 63) (73 36) (108 17)) NIL ((14.933332 -39.13333 0 0 6.40000058 12.799999 ) (18.133331 -32.733329 6.40000058 12.799999 9.9999962 -4. ) (29.533332 -21.93333 16.399997 8.79999925 -16.399997 -8.79999925 )) NATURAL) (2 ((108 17) (131 12)) NIL ((23. -5. 0 0 0 0 )) NATURAL) (2 ((131 12) (131 100)) NIL ((0 88. 0 0 0 0 )) NATURAL) (11 ((131 100) (112 110) (74 132) (42 154) (20 185) (15 220) (23 250) (41 273) (67 288) (97 296) (131 300)) NIL ((-13.5979 6.63703728 0 0 -32.41259 20.177772 ) (-29.804195 16.725921 -32.41259 20.177772 48.062957 -28.888866 ) (-38.185302 22.459262 15.650373 -8.7110939 -9.83927728 23.377697 ) (-27.45457 25.437019 5.81109619 14.666603 15.2941398 -10.621927 ) (-13.9964027 34.792656 21.105236 4.04467488 -9.33728219 -10.889978 ) (2.44019174 33.39234 11.7679538 -6.8453045 -1.94501304 0.181846618 ) (13.2356376 26.637962 9.8229408 -6.66345788 -0.882658005 -1.83740043 ) (22.617248 19.055801 8.9402828 -8.5008583 -6.52435876 1.16775417 ) (28.295352 11.1388206 2.41592407 -7.33310414 2.98009395 3.16638088 ) (32.201324 5.38890744 5.39601803 -4.16672325 -5.39601803 4.16672325 )) NATURAL) (2 ((131 300) (131 316)) NIL ((0 16. 0 0 0 0 )) NATURAL) (2 ((131 316) (161 316)) NIL ((30. 0 0 0 0 0 )) NATURAL) (2 ((161 316) (161 298)) NIL ((0 -18. 0 0 0 0 )) NATURAL) (6 ((161 298) (173 296) (201 289) (223 282) (239 284) (244 294)) NIL ((7.34449769 -0.794258357 0 0 27.933013 -7.23444939 ) (21.311004 -4.4114828 27.933013 -7.23444939 -43.665069 6.17224789 ) (27.411479 -8.5598068 -15.732055 -1.06220078 14.72727 12.545454 ) (19.04306 -3.34928227 -1.00478506 11.483253 -15.244016 -2.35406685 ) (10.416267 6.9569378 -16.248802 9.1291866 16.248802 -9.1291866 )) NATURAL) (2 ((244 294) (256 294)) NIL ((12. 0 0 0 0 0 )) NATURAL)) ((6 ((161 14) (183 19) (201 34) (204 62) (187 79) (161 92)) NIL ((22.334926 3.44497585 0 0 -2.00956964 9.33014298 ) (21.330142 8.1100483 -2.00956964 9.33014298 -13.95215 13.349281 ) (12.3444957 24.11483 -15.961721 22.679424 -8.181818 -44.727264 ) (-7.7081337 24.430618 -24.143539 -22.047843 16.679424 21.559803 ) (-23.511959 13.1626777 -7.46411515 -0.488038778 7.46411515 0.488038778 )) NATURAL) (2 ((161 92) (161 14)) NIL ((0 -78. 0 0 0 0 )) NATURAL)) ((7 ((131 278) (111 274) (96 264) (88 248) (91 227) (111 210) (131 199)) NIL ((-20.961536 -2.71410227 0 0 5.76923085 -7.71538449 ) (-18.076919 -6.5717945 5.76923085 -7.71538449 1.15384578 2.57692337 ) (-11.730768 -12.998716 6.92307664 -5.1384611 1.61538315 -2.59230804 ) (-3.99999905 -19.43333 8.53845979 -7.73076916 16.3846168 13.7923069 ) (12.730768 -20.267948 24.923076 6.06153775 -31.153842 1.42307758 ) (22.076919 -13.494871 -6.2307682 7.4846153 6.2307682 -7.4846153 )) NATURAL) (2 ((131 199) (131 278)) NIL ((0 79. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 45Q) (FACE M R R) (WIDTH 334 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 14:31:37) (MADE-FROM NIL 40 130 25 71) (SPLINES ((3 ((271 294) (271 294) (94 0)) NIL ((44.25 73.5 0 0 -265.5 -441. ) (-88.5 -147. -265.5 -441. 265.5 441. )) NATURAL) (2 ((94 0) (62 0)) NIL ((-32. 0 0 0 0 0 )) NATURAL) (3 ((62 0) (239 294) (239 294)) NIL ((221.25 367.5 0 0 -265.5 -441. ) (88.5 147. -265.5 -441. 265.5 441. )) NATURAL) (2 ((239 294) (271 294)) NIL ((32. 0 0 0 0 0 )) NATURAL)) ((21 ((79 127) (105 133) (124 146) (136 164) (141 184) (144 214) (141 244) (136 264) (124 282) (105 295) (79 301) (53 295) (34 282) (22 264) (17 244) (14 214) (17 184) (22 164) (34 146) (53 133) (79 127)) NIL ((27.505523 4.49280548 0 0 -9.0331478 9.0431652 ) (22.988948 9.01438714 -9.0331478 9.0431652 3.16574478 -3.21582604 ) (15.538673 16.449638 -5.86740303 5.82733917 -3.62983322 -8.17986299 ) (7.8563528 18.187046 -9.49723626 -2.35252428 11.353588 17.935279 ) (4.0359106 24.802162 1.85635328 15.582756 -11.7845268 -15.561258 ) (-5.56930899E-7 32.604286 -9.92817498 0.0214966945 11.7845268 -15.6902389 ) (-4.03591156 24.780666 1.85635328 -15.668743 -11.353588 18.322219 ) (-7.85635377 18.273033 -9.49723626 2.65347767 3.62983227 -9.59864427 ) (-15.538673 16.127189 -5.86740399 -6.94516659 -3.16574383 2.07235908 ) (-22.988948 10.2182006 -9.0331478 -4.8728075 9.0331459 -10.690786 ) (-27.505523 -1.60187482E-7 -5.11072471E-7 -15.5635948 9.0331497 10.690784 ) (-22.988948 -10.2182006 9.0331497 -4.8728094 -3.16574574 -2.07235718 ) (-15.538673 -16.127189 5.86740399 -6.94516659 3.62983227 9.59864427 ) (-7.8563528 -18.273033 9.49723626 2.65347767 -11.353588 -18.322219 ) (-4.03591156 -24.780666 -1.85635352 -15.668743 11.7845287 15.6902389 ) (-3.91155481E-8 -32.604286 9.92817689 0.0214962214 -11.7845287 15.56126 ) (4.03591156 -24.802162 -1.85635352 15.5827579 11.353588 -17.935279 ) (7.85635377 -18.187046 9.49723626 -2.35252428 -3.62983227 8.17986299 ) (15.538673 -16.449638 5.86740399 5.82733917 3.16574383 3.21582604 ) (22.988948 -9.01438714 9.0331478 9.0431652 -9.0331478 -9.0431652 )) NATURAL)) ((17 ((79 141) (93 151) (96 172) (97 190) (96 214) (97 238) (96 256) (93 277) (79 287) (65 277) (62 256) (61 238) (62 214) (61 190) (62 172) (65 151) (79 141)) NIL ((16.803104 -0.223070144 0.182082086 24.092327 -17.364887 -10.93856 ) (8.302742 18.399978 -17.1828079 13.153766 19.73196 -23.861171 ) (0.985916854 19.623157 2.54915523 -10.707405 -7.5629673 22.383258 ) (-0.246411472 20.107383 -5.01381207 11.6758537 10.519905 -11.671869 ) (-2.70843506E-4 25.947299 5.50609303 0.00398380961 -10.516653 -11.695772 ) (0.247495413 20.103397 -5.01056099 -11.6917896 7.54671 22.454963 ) (-0.989710332 19.639091 2.5361495 10.763174 -19.670185 -24.12408 ) (-8.28865434 18.340225 -17.134037 -13.360906 17.134037 -9.9586353 ) (-16.8556709 -1.90734863E-6 0 -23.319541 17.134037 9.95863725 ) (-8.2886524 -18.340225 17.134037 -13.3609047 -19.670185 24.124076 ) (-0.989710093 -19.639091 -2.5361495 10.763174 7.54670907 -22.454959 ) (0.247495472 -20.103401 5.01056004 -11.6917877 -10.516653 11.69577 ) (-2.70843506E-4 -25.947299 -5.50609303 0.00398329925 10.519903 11.671871 ) (-0.246411145 -20.107383 5.0138111 11.6758556 -7.56296635 -22.383258 ) (0.985917092 -19.623157 -2.54915523 -10.707405 19.73196 23.861171 ) (8.3027439 -18.399974 17.1828079 13.153768 -17.364887 10.9385585 )) PSEUDOCYCLIC)) ((21 ((257 167) (283 161) (302 148) (314 130) (319 110) (322 80) (319 50) (314 30) (302 12) (283 -1) (257 -7) (231 -1) (212 12) (200 30) (195 50) (192 80) (195 110) (200 130) (212 148) (231 161) (257 167)) NIL ((27.627128 -0.143936932 -0.421261072 -15.064924 -8.49900819 10.058393 ) (22.956363 -10.1796646 -8.9202709 -5.0065298 3.0226221 -1.9024229 ) (15.547403 -16.137405 -5.8976488 -6.9089527 -3.59148312 9.5512943 ) (7.85401345 -18.27071 -9.4891319 2.64234209 11.343313 -18.302753 ) (4.03653813 -24.779747 1.85418176 -15.660413 -11.781774 15.659725 ) (-1.68442726E-4 -32.610298 -9.9275932 -6.87903608E-4 11.7837886 15.663852 ) (-4.03586579 -24.779056 1.85619712 15.663166 -11.3533897 -18.315147 ) (-7.85636616 -18.273464 -9.4971943 -2.65198326 3.62977982 9.59674836 ) (-15.538669 -16.127075 -5.86741448 6.9447651 -3.16573143 -2.07184219 ) (-22.988948 -10.218229 -9.0331459 4.8729229 9.0331459 10.6906147 ) (-27.505523 1.60187482E-7 0 15.563537 9.0331459 -10.6906128 ) (-22.988948 10.218231 9.0331459 4.87292385 -3.16573143 2.07184028 ) (-15.538669 16.127075 5.86741448 6.94476414 3.62977982 -9.59674645 ) (-7.85636426 18.273464 9.4971943 -2.65198326 -11.3533916 18.315151 ) (-4.03586579 24.779056 -1.85619783 15.6631679 11.783792 -15.663854 ) (-1.68045051E-4 32.610298 9.92759515 -6.88414671E-4 -11.781776 -15.659725 ) (4.03653813 24.779747 -1.854182 -15.660413 11.343313 18.302753 ) (7.8540144 18.27071 9.4891319 2.64234161 -3.59148312 -9.5512943 ) (15.547405 16.137405 5.8976488 -6.9089527 3.0226221 1.9024229 ) (22.956363 10.1796627 8.9202709 -5.0065298 -8.4990101 -10.058395 )) PSEUDOCYCLIC)) ((17 ((257 5) (271 15) (274 36) (275 54) (274 78) (275 102) (274 120) (271 141) (257 151) (243 141) (240 120) (239 102) (240 78) (239 54) (240 36) (243 15) (257 5)) NIL ((16.803104 -0.223070144 0.182082086 24.092327 -17.364887 -10.93856 ) (8.302742 18.399978 -17.1828079 13.153766 19.73196 -23.861171 ) (0.985916854 19.623157 2.54915523 -10.707405 -7.5629673 22.383258 ) (-0.246411472 20.107383 -5.01381207 11.6758537 10.519905 -11.671869 ) (-2.70843506E-4 25.947299 5.50609303 0.00398380961 -10.516653 -11.695772 ) (0.247495413 20.103397 -5.01056099 -11.6917896 7.54671 22.454963 ) (-0.989710332 19.639091 2.5361495 10.763174 -19.670185 -24.12408 ) (-8.28865434 18.340225 -17.134037 -13.360906 17.134037 -9.9586353 ) (-16.8556709 -1.90734863E-6 0 -23.319541 17.134037 9.95863725 ) (-8.2886524 -18.340225 17.134037 -13.3609047 -19.670185 24.124076 ) (-0.989710093 -19.639091 -2.5361495 10.763174 7.54670907 -22.454959 ) (0.247495472 -20.103401 5.01056004 -11.6917877 -10.516653 11.69577 ) (-2.70843506E-4 -25.947299 -5.50609303 0.00398329925 10.519903 11.671871 ) (-0.246411145 -20.107383 5.0138111 11.6758556 -7.56296635 -22.383258 ) (0.985917092 -19.623157 -2.54915523 -10.707405 19.73196 23.861171 ) (8.3027439 -18.399974 17.1828079 13.153768 -17.364887 10.9385585 )) PSEUDOCYCLIC)))) ((FAMILY TIMESROMAND) (CHARACTER 46Q) (FACE M R R) (WIDTH 350 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 14:43:50) (MADE-FROM NIL 66 130 35 72) (SPLINES ((3 ((218 174) (218 174) (326 174)) NIL ((-27. 0 0 0 162. 0 ) (54. 0 162. 0 -162. 0 )) NATURAL) (2 ((326 174) (326 164)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (5 ((326 164) (307 154) (289 132) (271 108) (252 83)) NIL ((-19.25 -6.91071416 0 0 1.5 -18.535713 ) (-18.499996 -16.1785698 1.5 -18.535713 -1.5 20.678569 ) (-17.75 -24.375 -6.35782838E-8 2.14285707 -1.49999952 -4.17857075 ) (-18.5 -24.321426 -1.49999976 -2.03571415 1.49999976 2.03571415 )) NATURAL) (5 ((252 83) (270 64) (292 46) (315 38) (332 49)) NIL ((17.107139 -18.892856 0 0 5.35714245 -0.642857075 ) (19.785713 -19.214283 5.35714245 -0.642857075 -2.78571415 9.2142849 ) (23.75 -15.249998 2.5714283 8.5714283 -12.2142849 17.785709 ) (20.214283 2.2142868 -9.6428566 26.357139 9.6428566 -26.357139 )) NATURAL) (3 ((332 49) (332 49) (342 41)) NIL ((-2.5 2. 0 0 15. -12. ) (5. -4. 15. -12. -15. 12. )) NATURAL) (6 ((342 41) (323 17) (294 -4) (262 -11) (226 -3) (193 22)) NIL ((-16.444973 -24.004783 0 0 -15.3301429 0.0287084579 ) (-24.110046 -23.990428 -15.3301429 0.0287084579 16.6507149 17.856456 ) (-31.11483 -15.033491 1.32057380 17.885166 -9.27272607 -5.45454788 ) (-34.430618 0.124403000 -7.95215226 12.430618 14.440189 9.96172715 ) (-35.162674 17.5358848 6.48803807 22.392345 -6.48803807 -22.392345 )) NATURAL) (11 ((193 22) (161 3) (124 -7) (83 -6) (45 7) (22 29) (9 59) (12 94) (32 123) (62 143) (92 157)) NIL ((-30.93714 -20.81504 0 0 -6.37713147 10.8902549 ) (-34.125709 -15.369913 -6.37713147 10.8902549 1.88565731 -0.451280594 ) (-39.560012 -4.70529843 -4.49147415 10.438974 4.83450318 2.9148693 ) (-41.63423 7.19110966 0.343029499 13.3538437 20.776321 -5.2081909 ) (-30.903041 17.9408569 21.119354 8.14565278 -15.939798 -0.0821170807 ) (-17.753585 26.045452 5.1795559 8.0635357 12.9828586 -0.463335037 ) (-6.08260155 33.877319 18.162414 7.60020066 0.00836563111 -16.064537 ) (12.0839958 33.44525 18.17078 -8.4643383 -7.0163231 -1.27850341 ) (26.746616 24.341659 11.154457 -9.7428417 -13.943071 3.17855263 ) (30.929534 16.188095 -2.78861427 -6.5642891 2.78861427 6.5642891 )) NATURAL) (13 ((92 157) (78 188) (72 220) (75 249) (94 278) (126 295) (168 300) (205 296) (235 278) (247 246) (236 215) (209 192) (176 180)) NIL ((-15.753526 30.469062 0 0 10.521162 3.18560314 ) (-10.4929447 32.061866 10.521162 3.18560314 -4.60581589 -9.92801477 ) (-2.27469063 30.283462 5.91534615 -6.74241257 13.902105 12.5264606 ) (10.591711 29.804279 19.817451 5.78404808 -9.0026245 -22.177825 ) (25.907848 24.499412 10.8148269 -16.393779 4.10840798 4.18486214 ) (38.776878 10.198061 14.9232349 -12.2089176 -25.431003 5.43837738 ) (40.98461 0.708333016 -10.5077705 -6.77054024 7.6156225 -7.93837739 ) (34.284652 -10.0313968 -2.89214802 -14.708917 -17.031482 -3.68486214 ) (22.876762 -26.582744 -19.923633 -18.393779 -5.4896736 22.677825 ) (0.208288818 -33.63761 -25.413307 4.28404808 8.9901886 2.97353935 ) (-20.709922 -27.866794 -16.423118 7.25758744 11.528898 7.42801476 ) (-31.36859 -16.8951988 -4.8942194 14.685602 4.8942194 -14.685602 )) NATURAL) (3 ((176 180) (205 138) (236 100)) NIL ((28.5 -43. 0 0 3. 6. ) (30. -40. 3. 6. -3. -6. )) NATURAL) (6 ((236 100) (241 111) (244 131) (241 148) (230 159) (218 164)) NIL ((5.25358773 8.4593296 0 0 -1.52153110 15.244018 ) (4.49282265 16.081337 -1.52153110 15.244018 -4.39234448 -22.220092 ) (0.775119424 20.215309 -5.91387558 -6.97607613 -4.90909004 1.63636398 ) (-7.5933008 14.057415 -10.8229656 -5.33971215 12.0287056 -2.32535934 ) (-12.4019127 7.5550232 1.20574140 -7.66507149 -1.20574140 7.66507149 )) NATURAL) (2 ((218 164) (218 174)) NIL ((0 10. 0 0 0 0 )) NATURAL)) ((9 ((169 197) (179 218) (182 243) (176 269) (158 284) (144 271) (144 246) (155 217) (169 197)) NIL ((11.465389 20.08155 0 0 -8.79234124 5.51067734 ) (7.06921864 22.836891 -8.79234124 5.51067734 1.96170807 -3.55338669 ) (-0.742268205 26.570873 -6.83063317 1.95729065 -11.054491 -9.29713059 ) (-13.100147 23.8796 -17.885124 -7.33983994 24.256256 -31.25809 ) (-18.857139 0.910711766 6.3711338 -38.59793 10.029451 32.32952 ) (-7.4712801 -21.522457 16.400585 -6.26840878 -4.37407494 -2.06001568 ) (6.7422676 -28.820873 12.02651 -8.32842446 -10.533136 23.91053 ) (13.5022087 -25.194034 1.4933722 15.582105 -1.4933722 -15.582105 )) NATURAL)) ((4 ((100 141) (127 100) (150 68) (177 34)) NIL ((28.333332 -43.533332 0 0 -8. 15.1999988 ) (24.333332 -35.933326 -8. 15.1999988 16. -21.999996 ) (24.333332 -31.733333 8. -6.79999924 -8. 6.79999924 )) NATURAL) (7 ((177 34) (148 34) (121 43) (100 63) (88 91) (89 119) (100 141)) NIL ((-29.224357 -1.76794863 0 0 1.34615397 10.6076927 ) (-28.55128 3.53589726 1.34615397 10.6076927 5.26922989 0.961536408 ) (-24.57051 14.624359 6.6153841 11.569229 1.57692241 -2.45384407 ) (-17.166664 24.966663 8.1923065 9.11538507 6.42307854 -9.1461544 ) (-5.76282025 29.508972 14.615385 -0.0307693854 -3.2692337 -8.9615364 ) (7.2179489 24.997432 11.346151 -8.99230767 -11.346151 8.99230767 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 50Q) (FACE M R R) (WIDTH 162 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 14:49:11) (MADE-FROM NIL 142 130 35 72) (SPLINES ((2 ((152 300) (143 312)) NIL ((-9. 12. 0 0 0 0 )) NATURAL) (17 ((143 312) (122 303) (98 289) (74 268) (51 242) (33 213) (22 182) (14 144) (13 112) (14 80) (22 42) (33 11) (51 -18) (74 -44) (98 -65) (122 -79) (143 -88)) NIL ((-20.19886 -8.08247376 0 0 -4.80682278 -5.5051546 ) (-22.602272 -10.8350505 -4.80682278 -5.5051546 6.03411675 -2.47422695 ) (-24.392036 -17.577316 1.22729444 -7.97938157 -1.32964873 3.40206242 ) (-23.829566 -23.855667 -0.102354377 -4.57731915 5.28447628 0.865979195 ) (-21.289684 -28. 5.18212223 -3.71133995 4.19173908 5.13401985 ) (-14.01169 -29.144329 9.3738613 1.42268037 -10.051439 -15.402059 ) (-9.6635475 -35.422676 -0.677578807 -13.979379 12.014028 26.474224 ) (-4.33411217 -36.164947 11.3364505 12.494844 -14.0046749 -12.494842 ) (1.59256160E-7 -29.917522 -2.66822576 5.11072471E-7 14.0046749 -12.494846 ) (4.33411217 -36.164947 11.3364505 -12.494846 -12.014028 26.474227 ) (9.6635475 -35.422676 -0.677578926 13.979381 10.051441 -15.402061 ) (14.011692 -29.144329 9.3738632 -1.42268037 -4.19174195 5.13401985 ) (21.289684 -27.999996 5.18212128 3.71133947 -5.28447533 0.865979672 ) (23.829566 -23.855667 -0.102354094 4.57731915 1.32964825 3.40206146 ) (24.392036 -17.577316 1.22729420 7.9793806 -6.03411675 -2.474226 ) (22.602272 -10.8350505 -4.80682278 5.5051546 4.80682278 -5.5051546 )) NATURAL) (2 ((143 -88) (152 -76)) NIL ((9. 12. 0 0 0 0 )) NATURAL) (6 ((152 -76) (134 -59) (117 -33) (104 3) (97 45) (93 112)) NIL ((-18.081337 15.311004 0 0 0.488038302 10.13397 ) (-17.837318 20.37799 0.488038302 10.13397 3.55980825 3.33014298 ) (-15.5693779 32.177032 4.0478468 13.464113 3.27272701 -17.45454 ) (-9.88516618 36.91387 7.3205738 -3.99043036 -4.65071774 42.488029 ) (-4.8899517 54.167465 2.66985607 38.497604 -2.66985607 -38.497604 )) NATURAL) (6 ((93 112) (97 179) (104 221) (117 257) (134 283) (152 300)) NIL ((3.55502367 73.416259 0 0 2.66985655 -38.497604 ) (4.8899517 54.167457 2.66985655 -38.497604 4.65071678 42.488029 ) (9.88516618 36.91387 7.3205738 3.99042988 -3.27272797 -17.45454 ) (15.5693779 32.177032 4.04784584 -13.464113 -3.5598073 3.33014298 ) (17.837318 20.377986 0.488038302 -10.13397 -0.488038302 10.13397 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 51Q) (FACE M R R) (WIDTH 162 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 14:51:46) (MADE-FROM NIL 226 130 35 72) (SPLINES ((17 ((17 312) (38 303) (62 289) (86 268) (109 242) (127 213) (138 182) (146 144) (147 112) (146 80) (138 42) (127 11) (109 -18) (86 -44) (62 -65) (38 -79) (17 -88)) NIL ((20.19886 -8.08247376 0 0 4.80682278 -5.5051546 ) (22.602272 -10.8350505 4.80682278 -5.5051546 -6.03411675 -2.47422695 ) (24.392036 -17.577316 -1.22729444 -7.97938157 1.32964873 3.40206242 ) (23.829566 -23.855667 0.102354377 -4.57731915 -5.28447628 0.865979195 ) (21.289684 -28. -5.18212223 -3.71133995 -4.19173908 5.13401985 ) (14.01169 -29.144329 -9.3738613 1.42268037 10.051439 -15.402059 ) (9.6635475 -35.422676 0.677578807 -13.979379 -12.014028 26.474224 ) (4.33411217 -36.164947 -11.3364505 12.494844 14.0046749 -12.494842 ) (-1.59256160E-7 -29.917522 2.66822576 5.11072471E-7 -14.0046749 -12.494846 ) (-4.33411217 -36.164947 -11.3364505 -12.494846 12.014028 26.474227 ) (-9.6635475 -35.422676 0.677578926 13.979381 -10.051441 -15.402061 ) (-14.011692 -29.144329 -9.3738632 -1.42268037 4.19174195 5.13401985 ) (-21.289684 -27.999996 -5.18212128 3.71133947 5.28447533 0.865979672 ) (-23.829566 -23.855667 0.102354094 4.57731915 -1.32964825 3.40206146 ) (-24.392036 -17.577316 -1.22729420 7.9793806 6.03411675 -2.474226 ) (-22.602272 -10.8350505 4.80682278 5.5051546 -4.80682278 -5.5051546 )) NATURAL) (2 ((17 -88) (8 -76)) NIL ((-9. 12. 0 0 0 0 )) NATURAL) (11 ((8 -76) (26 -59) (43 -33) (56 3) (63 45) (67 112) (63 179) (56 221) (43 257) (26 283) (8 300)) NIL ((18.091159 15.311004 0 0 -0.546961427 10.13397 ) (17.817676 20.37799 -0.546961427 10.13397 -3.2651925 3.33014298 ) (15.63812 32.177032 -3.81215429 13.464113 -4.39226532 -17.45454 ) (9.6298332 36.91387 -8.2044201 -3.99043036 8.8342533 42.488029 ) (5.84254074 54.167465 0.629834295 38.497604 -12.9447498 -38.497604 ) (-1.99303030E-7 73.416259 -12.3149166 0 12.9447498 -38.497604 ) (-5.84254074 54.167457 0.629834414 -38.497604 -8.8342533 42.488029 ) (-9.6298332 36.91387 -8.2044201 3.99043083 4.39226532 -17.454544 ) (-15.63812 32.177032 -3.81215429 -13.464115 3.26519299 3.33014488 ) (-17.817676 20.377986 -0.546961308 -10.13397 0.546961308 10.13397 )) NATURAL) (2 ((8 300) (17 312)) NIL ((9. 12. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 52Q) (FACE M R R) (WIDTH 282 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 14:56:10) (MADE-FROM NIL 104 130 52 68) (SPLINES ((2 ((129 224) (114 288)) NIL ((-15. 64. 0 0 0 0 )) NATURAL) (2 ((114 288) (164 288)) NIL ((50. 0 0 0 0 0 )) NATURAL) (2 ((164 288) (149 224)) NIL ((-15. -64. 0 0 0 0 )) NATURAL) (2 ((149 224) (198 266)) NIL ((49. 42. 0 0 0 0 )) NATURAL) (2 ((198 266) (223 236)) NIL ((25. -30. 0 0 0 0 )) NATURAL) (2 ((223 236) (158 208)) NIL ((-65. -28. 0 0 0 0 )) NATURAL) (2 ((158 208) (223 180)) NIL ((65. -28. 0 0 0 0 )) NATURAL) (2 ((223 180) (198 150)) NIL ((-25. -30. 0 0 0 0 )) NATURAL) (2 ((198 150) (149 192)) NIL ((-49. 42. 0 0 0 0 )) NATURAL) (2 ((149 192) (164 128)) NIL ((15. -64. 0 0 0 0 )) NATURAL) (2 ((164 128) (114 128)) NIL ((-50. 0 0 0 0 0 )) NATURAL) (2 ((114 128) (129 192)) NIL ((15. 64. 0 0 0 0 )) NATURAL) (2 ((129 192) (80 150)) NIL ((-49. -42. 0 0 0 0 )) NATURAL) (2 ((80 150) (55 180)) NIL ((-25. 30. 0 0 0 0 )) NATURAL) (2 ((55 180) (120 208)) NIL ((65. 28. 0 0 0 0 )) NATURAL) (2 ((120 208) (55 236)) NIL ((-65. 28. 0 0 0 0 )) NATURAL) (2 ((55 236) (80 266)) NIL ((25. 30. 0 0 0 0 )) NATURAL) (2 ((80 266) (129 224)) NIL ((49. -42. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 55Q) (FACE M R R) (WIDTH 267 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 14:58:21) (MADE-FROM NIL 121 130 101 78) (SPLINES ((2 ((213 80) (53 80)) NIL ((-160. 0 0 0 0 0 )) NATURAL) (2 ((53 80) (53 140)) NIL ((0 60. 0 0 0 0 )) NATURAL) (2 ((53 140) (213 140)) NIL ((160. 0 0 0 0 0 )) NATURAL) (2 ((213 140) (213 80)) NIL ((0 -60. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 100Q) (FACE M R R) (WIDTH 241 0) (FIDUCIAL 275 275) (VERSION 0 3-OCT-77 15:01:19) (MADE-FROM NIL 136 116 118 52) (SPLINES ((12 ((158 121) (145 128) (128 130) (110 126) (92 113) (80 98) (72 82) (70 63) (74 45) (89 32) (112 29) (133 40)) NIL ((-11.972738 8.0720539 0 0 -6.16356755 -6.43233109 ) (-15.054521 4.85588837 -6.16356755 -6.43233109 6.8178396 2.16165829 ) (-17.809169 -0.495613098 0.654272318 -4.2706728 -3.10779333 -8.21430207 ) (-18.708793 -8.87343789 -2.45352125 -12.4849758 11.6133327 12.6955566 ) (-15.355648 -15.010633 9.1598129 0.210582316 -7.34554005 -0.567935109 ) (-9.86860658 -15.084018 1.81427216 -0.357352793 5.76882458 -4.42381764 ) (-5.16992092 -17.653282 7.58309746 -4.78117085 -3.72976494 6.26320649 ) (0.548294068 -19.302848 3.85333252 1.48203635 9.15023805 3.37098885 ) (8.9767456 -16.1353149 13.00357 4.85302544 -2.87118912 4.25283432 ) (20.544719 -9.15587426 10.132381 9.10585977 -15.6654758 9.61767388 ) (22.844364 4.75882149 -5.53309536 18.723533 5.53309536 -18.723533 )) NATURAL) (21 ((133 40) (140 32) (148 27) (164 25) (191 37) (208 57) (219 90) (215 123) (198 146) (174 160) (143 167) (108 164) (78 154) (51 134) (31 105) (23 71) (27 43) (43 17) (63 2) (88 -4) (112 -1)) NIL ((7.04713917 -8.83371926 0 0 -0.282836199 5.00231648 ) (6.9057207 -6.33256055 -0.282836199 5.00231648 7.41418076 -7.01158429 ) (10.329975 -4.83603668 7.1313448 -2.00926781 12.626108 23.044021 ) (23.774375 4.67670918 19.757453 21.034755 -39.918617 -19.16452 ) (23.572517 16.1292038 -20.161163 1.8702321 21.04837 17.614074 ) (13.935541 26.806472 0.887209058 19.48431 -20.274875 -21.291782 ) (4.68531037 35.644889 -19.387668 -1.8074727 6.05114175 -10.446945 ) (-11.676788 28.613945 -13.3365268 -12.254419 8.0703125 3.0795784 ) (-20.978157 17.8993149 -5.26621437 -9.1748409 -2.33239746 4.12862969 ) (-27.410572 10.7887878 -7.59861184 -5.04621125 1.25927829 -7.59409905 ) (-34.379539 1.94552779 -6.33933354 -12.64031 15.29528 8.24776269 ) (-33.071235 -6.5709009 8.95594789 -4.39254666 -8.4404068 -7.39695454 ) (-28.335495 -14.661924 0.515540362 -11.789501 6.46634865 3.34005737 ) (-24.586776 -24.781395 6.98188973 -8.4494438 6.57500649 0.0367221832 ) (-14.3173847 -33.212478 13.556896 -8.41272164 -2.76637268 20.51305 ) (-2.1436758 -31.368675 10.7905235 12.10033 4.49048424 -16.0889358 ) (10.8920898 -27.312812 15.2810077 -3.9886055 -15.195562 19.842693 ) (18.575313 -21.380069 0.0854441673 15.854089 8.29176904 -9.281847 ) (22.806644 -10.1669025 8.37721444 6.57224274 -11.971517 5.28469467 ) (25.1981 -0.952312470 -3.5943036 11.856937 3.5943036 -11.856937 )) NATURAL) (2 ((112 -1) (107 19)) NIL ((-5. 20. 0 0 0 0 )) NATURAL) (18 ((107 19) (86 18) (66 26) (50 47) (45 71) (49 95) (63 118) (83 134) (107 143) (136 146) (165 142) (186 130) (199 110) (200 86) (192 68) (184 59) (172 52) (162 56)) NIL ((-21.157852 -2.53653526 0 0 0.947122574 9.21921159 ) (-20.684291 2.07307052 0.947122574 9.21921159 1.26438713 7.9039421 ) (-19.104972 15.244255 2.2115097 17.123153 11.9953289 -16.834991 ) (-10.8958015 23.949909 14.206838 0.288160145 -7.24570466 -0.563958168 ) (-0.311814904 23.956092 6.96113396 -0.275798023 4.9874878 1.09082985 ) (9.1430626 24.225708 11.9486217 0.815032006 -6.70424843 -9.79936029 ) (17.739559 20.141059 5.24437332 -8.9843292 -2.17049026 2.10661602 ) (21.898689 12.210039 3.07388306 -6.8777132 3.38620949 1.37289524 ) (26.665676 6.01877404 6.46009255 -5.50481797 -5.37434674 -1.59819507 ) (30.438594 -0.285140633 1.08574557 -7.10301304 -11.8888187 -0.980116845 ) (25.579929 -7.87821198 -10.8030738 -8.08312989 4.92962837 -0.481334686 ) (17.241668 -16.202007 -5.8734455 -8.56446458 -7.82969475 2.90545654 ) (7.4533777 -23.313743 -13.70314 -5.65900803 2.38915062 12.859506 ) (-5.05518723 -22.542999 -11.3139896 7.20049954 16.273094 5.65650845 ) (-8.23262979 -12.514246 4.95910454 12.8570079 -13.481531 -17.485542 ) (-10.0142917 -8.40000917 -8.5224266 -4.62853527 13.653032 22.285663 ) (-11.710201 -1.88571024 5.13060665 17.657131 -5.13060665 -17.657131 )) NATURAL) (5 ((162 56) (178 116) (178 126) (168 126) (158 121)) NIL ((19.571426 72.76785 0 0 -21.428569 -76.60713 ) (8.8571415 34.464279 -21.428569 -76.60713 11.1428566 83.03569 ) (-7. -0.624999643 -10.285713 6.42857075 12.857141 -15.535713 ) (-10.857141 -1.96428537 2.5714283 -9.1071434 -2.5714283 9.1071434 )) NATURAL)) ((10 ((140 100) (136 107) (124 107) (108 95) (100 75) (104 56) (118 54) (128 64) (136 84) (140 100)) NIL ((-2.25083256 8.15301515 0 0 -10.4950046 -6.9180908 ) (-7.49833489 4.69396878 -10.4950046 -6.9180908 4.47502804 -7.409544 ) (-15.7558269 -5.92889405 -6.0199766 -14.3276348 16.59489 6.55626965 ) (-13.478355 -16.978393 10.5749149 -7.77136517 1.14539718 5.1844616 ) (-2.33074379 -22.157527 11.720312 -2.58690309 2.82352638 26.705879 ) (10.8013305 -11.391489 14.543838 24.118976 -24.439506 -16.007988 ) (13.1254139 4.72349262 -9.89566995 8.1109867 10.934515 7.32608224 ) (8.6970024 16.49752 1.03884577 15.4370689 -7.29855633 -25.296333 ) (6.08656979 19.286418 -6.25971127 -9.85926629 6.25971127 9.85926629 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 134Q) (FACE M R R) (WIDTH 312 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 15:06:12) (MADE-FROM NIL 60 130 27 74) (SPLINES ((2 ((241 0) (33 294)) NIL ((-208. 294. 0 0 0 0 )) NATURAL) (2 ((33 294) (65 294)) NIL ((32. 0 0 0 0 0 )) NATURAL) (2 ((65 294) (273 0)) NIL ((208. -294. 0 0 0 0 )) NATURAL) (2 ((273 0) (241 0)) NIL ((-32. 0 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 176Q) (FACE M R R) (WIDTH 223 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 15:07:05) (MADE-FROM NIL 90 130 59 73) (SPLINES ((2 ((146 200) (186 200)) NIL ((40. 0 0 0 0 0 )) NATURAL) (12 ((186 200) (184 188) (181 173) (173 156) (162 146) (149 142) (133 141) (115 147) (101 154) (87 157) (77 151) (74 143)) NIL ((-2.0406394 -11.4451789 0 0 0.243838072 -3.3289156 ) (-1.91872048 -13.109638 0.243838072 -3.3289156 -7.21918965 -1.35542106 ) (-5.28447724 -17.116264 -6.97535229 -4.68433666 4.63292313 14.7505989 ) (-9.943367 -14.4253 -2.34242868 10.066263 0.687495947 -3.64697933 ) (-11.942049 -6.18252755 -1.65493273 6.41928387 -1.38290715 -6.1626854 ) (-14.288435 -2.84458589 -3.03783989 0.256598294 -1.15586662 10.2977218 ) (-17.904209 2.5608735 -4.1937065 10.554321 12.006374 -11.0282058 ) (-16.094726 7.60109139 7.81266785 -0.473885357 -10.8696327 -2.18489456 ) (-13.716875 6.03475857 -3.05696487 -2.6587801 7.47215558 -10.23221 ) (-13.037763 -1.74012756 4.4151907 -12.890991 4.98101139 13.113739 ) (-6.13206673 -8.07424928 9.3962021 0.222748071 -9.3962021 -0.222748071 )) NATURAL) (2 ((74 143) (34 143)) NIL ((-40. 0 0 0 0 0 )) NATURAL) (12 ((34 143) (36 155) (39 170) (47 187) (58 197) (71 201) (87 202) (105 196) (119 189) (133 186) (143 192) (146 200)) NIL ((2.0406394 11.4451789 0 0 -0.243838072 3.3289156 ) (1.91872048 13.109638 -0.243838072 3.3289156 7.21918965 1.35542106 ) (5.28447724 17.116264 6.97535229 4.68433666 -4.63292313 -14.7505989 ) (9.943367 14.4253 2.34242868 -10.066263 -0.687495947 3.64697933 ) (11.942049 6.18252755 1.65493273 -6.41928387 1.38290715 6.1626854 ) (14.288435 2.84458589 3.03783989 -0.256598294 1.15586662 -10.2977218 ) (17.904209 -2.5608735 4.1937065 -10.554321 -12.006374 11.0282058 ) (16.094726 -7.60109139 -7.81266785 0.473885357 10.8696327 2.18489456 ) (13.716875 -6.03475857 3.05696487 2.6587801 -7.47215558 10.23221 ) (13.037763 1.74012756 -4.4151907 12.890991 -4.98101139 -13.113739 ) (6.13206673 8.07424928 -9.3962021 -0.222748071 9.3962021 0.222748071 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 30Q) (FACE M R R) (WIDTH 490 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 15:10:26) (MADE-FROM NIL 13 131 0 0) (SPLINES ((2 ((0 -53) (489 -53)) NIL ((489. 0 0 0 0 0 )) NATURAL) (2 ((489 -53) (489 -93)) NIL ((0 -40. 0 0 0 0 )) NATURAL) (2 ((489 -93) (0 -93)) NIL ((-489. 0 0 0 0 0 )) NATURAL) (2 ((0 -93) (0 -53)) NIL ((0 40. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 40Q) (FACE M R R) (WIDTH 312 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 15:11:15) (MADE-FROM NIL 142 130 0 0) (SPLINES)) ((FAMILY TIMESROMAND) (CHARACTER 53Q) (FACE M R R) (WIDTH 327 0) (FIDUCIAL 385 385) (VERSION 0 4-OCT-77 9:36:02) (MADE-FROM NIL 122 130 68 75) (SPLINES ((2 ((132 0) (192 0)) NIL ((60. 0 0 0 0 0 )) NATURAL) (2 ((192 0) (192 80)) NIL ((0 80. 0 0 0 0 )) NATURAL) (2 ((192 80) (272 80)) NIL ((80. 0 0 0 0 0 )) NATURAL) (2 ((272 80) (272 140)) NIL ((0 60. 0 0 0 0 )) NATURAL) (2 ((272 140) (192 140)) NIL ((-80. 0 0 0 0 0 )) NATURAL) (2 ((192 140) (192 220)) NIL ((0 80. 0 0 0 0 )) NATURAL) (2 ((192 220) (132 220)) NIL ((-60. 0 0 0 0 0 )) NATURAL) (2 ((132 220) (132 140)) NIL ((0 -80. 0 0 0 0 )) NATURAL) (2 ((132 140) (52 140)) NIL ((-80. 0 0 0 0 0 )) NATURAL) (2 ((52 140) (52 80)) NIL ((0 -60. 0 0 0 0 )) NATURAL) (2 ((52 80) (132 80)) NIL ((80. 0 0 0 0 0 )) NATURAL) (2 ((132 80) (132 0)) NIL ((0 -80. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 75Q) (FACE M R R) (WIDTH 267 0) (FIDUCIAL 385 385) (VERSION 0 4-OCT-77 9:36:52) (MADE-FROM NIL 120 130 84 94) (SPLINES ((2 ((214 40) (54 40)) NIL ((-160. 0 0 0 0 0 )) NATURAL) (2 ((54 40) (54 100)) NIL ((0 60. 0 0 0 0 )) NATURAL) (2 ((54 100) (214 100)) NIL ((160. 0 0 0 0 0 )) NATURAL) (2 ((214 100) (214 40)) NIL ((0 -60. 0 0 0 0 )) NATURAL)) ((2 ((54 140) (54 200)) NIL ((0 60. 0 0 0 0 )) NATURAL) (2 ((54 200) (214 200)) NIL ((160. 0 0 0 0 0 )) NATURAL) (2 ((214 200) (214 140)) NIL ((0 -60. 0 0 0 0 )) NATURAL) (2 ((214 140) (54 140)) NIL ((-160. 0 0 0 0 0 )) NATURAL)))) STOP \ No newline at end of file diff --git a/obsolete/lispusers/splinefonts/TIMESROMAN.S3-SF b/obsolete/lispusers/splinefonts/TIMESROMAN.S3-SF deleted file mode 100644 index 0185738c..00000000 --- a/obsolete/lispusers/splinefonts/TIMESROMAN.S3-SF +++ /dev/null @@ -1 +0,0 @@ - ((FAMILY TIMESROMAND) (CHARACTER 56Q) (FACE M R R) (WIDTH 168 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 16:21:11) (MADE-FROM NIL 201 130 35 72) (SPLINES ((17 ((86 -6) (67 -3) (52 4) (44 13) (41 27) (44 41) (52 50) (67 57) (86 60) (105 57) (120 50) (128 41) (131 27) (128 13) (120 4) (105 -3) (86 -6)) NIL ((-19.639171 1.98203754 0 0 3.83505154 6.10777474 ) (-17.721649 5.0359249 3.83505154 6.10777474 4.82474232 -6.53887368 ) (-11.474226 7.87426186 8.65979386 -0.431099415 -5.1340208 8.04772187 ) (-5.38144303 11.4670238 3.52577257 7.6166229 3.71134043 -7.65201569 ) (8.00937414E-8 15.2576389 7.237113 -0.0353937074 -3.71133947 -7.43965436 ) (5.38144303 11.5024166 3.52577353 -7.47504807 5.13401795 7.41063786 ) (11.474226 7.73268796 8.65979196 -0.0644102097 -4.8247404 -4.20289994 ) (17.721649 5.5668268 3.83505154 -4.26731014 -3.83505106 -2.59903431 ) (19.639171 0 1.27768117E-7 -6.86634446 -3.835052 2.59903335 ) (17.721649 -5.56682778 -3.835052 -4.2673111 -4.82473946 4.20290089 ) (11.474226 -7.73268796 -8.65979196 -0.0644097030 5.1340189 -7.4106388 ) (5.38144303 -11.5024166 -3.52577305 -7.475049 -3.71133995 7.4396553 ) (-1.59256160E-7 -15.2576389 -7.237113 -0.0353935584 3.71133995 7.65201569 ) (-5.38144303 -11.4670238 -3.52577305 7.6166229 -5.1340208 -8.04772187 ) (-11.474226 -7.87426186 -8.65979386 -0.431099653 4.82474232 6.53887368 ) (-17.721649 -5.0359249 -3.83505154 6.10777474 3.83505154 -6.10777474 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 72Q) (FACE M R R) (WIDTH 168 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 16:22:34) (MADE-FROM NIL 201 130 35 72) (SPLINES ((17 ((86 205) (67 202) (52 195) (44 186) (41 172) (44 158) (52 149) (67 142) (86 139) (105 142) (120 149) (128 158) (131 172) (128 186) (120 195) (105 202) (86 205)) NIL ((-19.818656 -0.00128221511 0.621745348 -6.86153794 3.04670906 2.59230709 ) (-17.673553 -5.5666666 3.66845465 -4.26923085 5.0359783 4.20769406 ) (-11.487112 -7.73204995 8.70443345 -0.0615364760 -5.19062138 -7.4230852 ) (-5.37798977 -11.5051288 3.51381207 -7.484622 3.72650528 7.48464394 ) (-9.24904831E-4 -15.2474289 7.24031735 2.27427262E-5 -3.7154026 7.48450757 ) (5.38169098 -11.5051517 3.52491474 7.48453046 5.13510609 -7.42267228 ) (11.474159 -7.7319584 8.6600208 0.0618574098 -4.8250265 4.20618153 ) (17.721668 -5.56700897 3.83499432 4.2680397 -3.83499432 2.59793949 ) (19.6391639 3.18512320E-7 0 6.8659792 -3.83499432 -2.59793949 ) (17.721668 5.56700993 -3.83499432 4.2680397 -4.82502842 -4.20618153 ) (11.474159 7.7319584 -8.66002275 0.0618574098 5.135108 7.4226713 ) (5.38169098 11.5051517 -3.52491427 7.4845295 -3.71540403 -7.4845066 ) (-9.25144181E-4 15.2474289 -7.2403183 2.27427262E-5 3.72650576 -7.48464299 ) (-5.37798977 11.5051288 -3.51381254 -7.48462105 -5.1906185 7.42308427 ) (-11.487112 7.73204995 -8.70443154 -0.0615367144 5.03597546 -4.20769406 ) (-17.673553 5.5666666 -3.6684556 -4.26923085 3.04671001 -2.59230709 )) PSEUDOCYCLIC)) ((17 ((86 -6) (67 -3) (52 4) (44 13) (41 27) (44 41) (52 50) (67 57) (86 60) (105 57) (120 50) (128 41) (131 27) (128 13) (120 4) (105 -3) (86 -6)) NIL ((-19.818656 0.00128221511 0.621745348 6.86153794 3.04670906 -2.59230709 ) (-17.673553 5.5666666 3.66845465 4.26923085 5.0359783 -4.20769406 ) (-11.487112 7.73204995 8.70443345 0.0615364760 -5.19062138 7.4230852 ) (-5.37798977 11.5051288 3.51381207 7.484622 3.72650528 -7.48464394 ) (-9.24904831E-4 15.2474289 7.24031735 -2.27427262E-5 -3.7154026 -7.48450757 ) (5.38169098 11.5051517 3.52491474 -7.48453046 5.13510609 7.42267228 ) (11.474159 7.7319584 8.6600208 -0.0618574098 -4.8250265 -4.20618153 ) (17.721668 5.56700897 3.83499432 -4.2680397 -3.83499432 -2.59793949 ) (19.6391639 -3.18512320E-7 0 -6.8659792 -3.83499432 2.59793949 ) (17.721668 -5.56700993 -3.83499432 -4.2680397 -4.82502842 4.20618153 ) (11.474159 -7.7319584 -8.66002275 -0.0618574098 5.135108 -7.4226713 ) (5.38169098 -11.5051517 -3.52491427 -7.4845295 -3.71540403 7.4845066 ) (-9.25144181E-4 -15.2474289 -7.2403183 -2.27427262E-5 3.72650576 7.48464299 ) (-5.37798977 -11.5051288 -3.51381254 7.48462105 -5.1906185 -7.42308427 ) (-11.487112 -7.73204995 -8.70443154 0.0615367144 5.03597546 4.20769406 ) (-17.673553 -5.5666666 -3.6684556 4.26923085 3.04671001 2.59230709 )) PSEUDOCYCLIC)))) ((FAMILY TIMESROMAND) (CHARACTER 73Q) (FACE M R R) (WIDTH 168 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 16:26:06) (MADE-FROM NIL 201 130 35 72) (SPLINES ((17 ((86 205) (67 202) (52 195) (44 186) (41 172) (44 158) (52 149) (67 142) (86 139) (105 142) (120 149) (128 158) (131 172) (128 186) (120 195) (105 202) (86 205)) NIL ((-19.818656 -0.00128221511 0.621745348 -6.86153794 3.04670906 2.59230709 ) (-17.673553 -5.5666666 3.66845465 -4.26923085 5.0359783 4.20769406 ) (-11.487112 -7.73204995 8.70443345 -0.0615364760 -5.19062138 -7.4230852 ) (-5.37798977 -11.5051288 3.51381207 -7.484622 3.72650528 7.48464394 ) (-9.24904831E-4 -15.2474289 7.24031735 2.27427262E-5 -3.7154026 7.48450757 ) (5.38169098 -11.5051517 3.52491474 7.48453046 5.13510609 -7.42267228 ) (11.474159 -7.7319584 8.6600208 0.0618574098 -4.8250265 4.20618153 ) (17.721668 -5.56700897 3.83499432 4.2680397 -3.83499432 2.59793949 ) (19.6391639 3.18512320E-7 0 6.8659792 -3.83499432 -2.59793949 ) (17.721668 5.56700993 -3.83499432 4.2680397 -4.82502842 -4.20618153 ) (11.474159 7.7319584 -8.66002275 0.0618574098 5.135108 7.4226713 ) (5.38169098 11.5051517 -3.52491427 7.4845295 -3.71540403 -7.4845066 ) (-9.25144181E-4 15.2474289 -7.2403183 2.27427262E-5 3.72650576 -7.48464299 ) (-5.37798977 11.5051288 -3.51381254 -7.48462105 -5.1906185 7.42308427 ) (-11.487112 7.73204995 -8.70443154 -0.0615367144 5.03597546 -4.20769406 ) (-17.673553 5.5666666 -3.6684556 -4.26923085 3.04671001 -2.59230709 )) PSEUDOCYCLIC)) ((24 ((92 -4) (78 -6) (59 -3) (44 4) (36 13) (33 27) (36 41) (44 50) (59 57) (78 60) (101 58) (121 49) (135 33) (140 6) (134 -19) (114 -44) (94 -58) (75 -66) (52 -73) (44 -70) (50 -63) (69 -50) (85 -29) (92 -4)) NIL ((-12.4890136 -3.06699467 0 0 -9.06590844 6.4019699 ) (-17.0219688 0.133990109 -9.06590844 6.4019699 15.3295459 -2.0098505 ) (-18.423103 5.53103447 6.26363755 4.3921194 1.74772072 -4.3625698 ) (-11.285606 7.74186898 8.01135827 0.0295492597 -4.3204298 7.4601326 ) (-5.4344635 11.5014858 3.69092798 7.4896822 3.53399801 -7.47796345 ) (0.0234638825 15.2521858 7.224926 0.0117186158 -3.8155613 -7.548275 ) (5.3406086 11.489765 3.4093647 -7.5365572 5.7282505 7.67106915 ) (11.614099 7.78874398 9.1376152 0.134512752 -7.0974474 -5.13600445 ) (17.202991 5.35525418 2.04016733 -5.0014925 4.6615448 0.872951508 ) (21.573928 0.790237070 6.7017126 -4.128541 -11.5487308 -4.35579968 ) (22.501277 -5.51620388 -4.8470192 -8.48434068 -0.466615677 4.55025006 ) (17.4209518 -11.72542 -5.31363487 -3.93409014 -4.58480644 -13.845201 ) (9.8149128 -22.582111 -9.8984413 -17.779293 0.805843354 26.830558 ) (0.319392502 -26.946125 -9.09259797 9.0512676 -10.638561 -15.4770488 ) (-14.092487 -25.63338 -19.731159 -6.4257822 23.748405 23.07764 ) (-21.94944 -20.520339 4.0172472 16.651859 -0.355079651 -10.8335209 ) (-18.109733 -9.28524209 3.66216755 5.81833744 -16.328083 -9.74355317 ) (-22.61161 -8.33868218 -12.665918 -3.9252162 35.667419 19.807739 ) (-17.443813 -2.36002731 23.001506 15.882526 -12.341625 -15.487413 ) (-0.613120318 5.77879143 10.6598816 0.395112217 7.6990776 6.14191056 ) (13.896299 9.2448597 18.358959 6.53702355 -24.454681 2.91976929 ) (20.027915 17.2417679 -6.09572316 9.4567928 -5.88034535 -5.8209915 ) (10.9920215 23.788063 -11.976068 3.63580132 11.976068 -3.63580132 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 54Q) (FACE M R R) (WIDTH 168 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 16:27:04) (MADE-FROM NIL 201 130 35 72) (SPLINES ((24 ((92 -4) (78 -6) (59 -3) (44 4) (36 13) (33 27) (36 41) (44 50) (59 57) (78 60) (101 58) (121 49) (135 33) (140 6) (134 -19) (114 -44) (94 -58) (75 -66) (52 -73) (44 -70) (50 -63) (69 -50) (85 -29) (92 -4)) NIL ((-12.4890136 -3.06699467 0 0 -9.06590844 6.4019699 ) (-17.0219688 0.133990109 -9.06590844 6.4019699 15.3295459 -2.0098505 ) (-18.423103 5.53103447 6.26363755 4.3921194 1.74772072 -4.3625698 ) (-11.285606 7.74186898 8.01135827 0.0295492597 -4.3204298 7.4601326 ) (-5.4344635 11.5014858 3.69092798 7.4896822 3.53399801 -7.47796345 ) (0.0234638825 15.2521858 7.224926 0.0117186158 -3.8155613 -7.548275 ) (5.3406086 11.489765 3.4093647 -7.5365572 5.7282505 7.67106915 ) (11.614099 7.78874398 9.1376152 0.134512752 -7.0974474 -5.13600445 ) (17.202991 5.35525418 2.04016733 -5.0014925 4.6615448 0.872951508 ) (21.573928 0.790237070 6.7017126 -4.128541 -11.5487308 -4.35579968 ) (22.501277 -5.51620388 -4.8470192 -8.48434068 -0.466615677 4.55025006 ) (17.4209518 -11.72542 -5.31363487 -3.93409014 -4.58480644 -13.845201 ) (9.8149128 -22.582111 -9.8984413 -17.779293 0.805843354 26.830558 ) (0.319392502 -26.946125 -9.09259797 9.0512676 -10.638561 -15.4770488 ) (-14.092487 -25.63338 -19.731159 -6.4257822 23.748405 23.07764 ) (-21.94944 -20.520339 4.0172472 16.651859 -0.355079651 -10.8335209 ) (-18.109733 -9.28524209 3.66216755 5.81833744 -16.328083 -9.74355317 ) (-22.61161 -8.33868218 -12.665918 -3.9252162 35.667419 19.807739 ) (-17.443813 -2.36002731 23.001506 15.882526 -12.341625 -15.487413 ) (-0.613120318 5.77879143 10.6598816 0.395112217 7.6990776 6.14191056 ) (13.896299 9.2448597 18.358959 6.53702355 -24.454681 2.91976929 ) (20.027915 17.2417679 -6.09572316 9.4567928 -5.88034535 -5.8209915 ) (10.9920215 23.788063 -11.976068 3.63580132 11.976068 -3.63580132 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 7Q) (FACE M R R) (WIDTH 168 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 16:31:50) (MADE-FROM NIL 142 130 35 72) (SPLINES ((24 ((80 228) (94 230) (113 227) (128 220) (136 211) (139 197) (136 183) (128 174) (113 167) (94 164) (71 166) (51 175) (37 191) (31 218) (38 243) (58 268) (78 282) (97 290) (120 297) (128 294) (122 287) (103 274) (87 253) (80 228)) NIL ((12.4890136 3.06699467 0 0 9.06591035 -6.4019699 ) (17.0219688 -0.133990109 9.06591035 -6.4019699 -15.329553 2.0098505 ) (18.423103 -5.53103447 -6.26364327 -4.3921194 -1.74769401 4.3625698 ) (11.285612 -7.74186898 -8.01133729 -0.0295492597 4.32033539 -7.4601326 ) (5.43444157 -11.5014858 -3.69100189 -7.4896822 -3.53364849 7.47796345 ) (-0.0233840942 -15.2521858 -7.22465039 -0.0117186158 3.81425572 7.548275 ) (-5.34090615 -11.489765 -3.41039467 7.5365572 -5.7233753 -7.67106915 ) (-11.612989 -7.78874398 -9.13377 -0.134512752 7.07924843 5.13600445 ) (-17.207134 -5.35525418 -2.05452156 5.0014925 -4.59362126 -0.872951508 ) (-21.558467 -0.790237070 -6.6481428 4.128541 11.2952366 4.35579968 ) (-22.55899 5.51620388 4.64709378 8.48434068 1.4126749 -4.55025006 ) (-17.205558 11.72542 6.05976868 3.93409014 1.05406284 13.845201 ) (-10.618759 22.582111 7.1138315 17.779293 6.3710699 -26.830558 ) (-0.319392502 26.946125 13.484901 -9.0512676 3.46165085 15.4770488 ) (14.896333 25.63338 16.946552 6.4257822 -20.217666 -23.07764 ) (21.73405 20.520339 -3.2711153 -16.651859 -0.590978146 10.8335209 ) (18.167446 9.28524209 -3.86209345 -5.81833744 16.581581 9.74355317 ) (22.596145 8.33868218 12.719488 3.9252162 -35.735343 -19.807739 ) (17.447956 2.36002731 -23.015861 -15.882526 12.359827 15.487413 ) (0.612009645 -5.77879143 -10.656034 -0.395112217 -7.7039547 -6.14191056 ) (-13.8960018 -9.2448597 -18.359989 -6.53702355 24.455986 -2.91976929 ) (-20.027996 -17.2417679 6.09599686 -9.4567928 5.88000298 5.8209915 ) (-10.9919986 -23.788063 11.9759998 -3.63580132 -11.9759998 3.63580132 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 47Q) (FACE M R R) (WIDTH 168 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 16:37:31) (MADE-FROM NIL 201 130 35 72) (SPLINES ((24 ((92 236) (85 211) (69 190) (50 177) (44 170) (52 167) (75 174) (94 182) (114 196) (134 221) (140 246) (135 273) (121 289) (101 298) (78 300) (59 297) (44 290) (36 281) (33 267) (36 253) (44 244) (59 237) (78 234) (92 236)) NIL ((-5.00398827 -25.605964 0 0 -11.976068 3.63580179 ) (-10.992023 -23.788063 -11.976068 3.63580179 5.8803463 5.82099056 ) (-20.027915 -17.2417679 -6.0957222 9.4567928 24.454681 -2.91976929 ) (-13.896299 -9.2448597 18.358959 6.53702355 -7.6990757 -6.1419115 ) (0.613121629 -5.77879143 10.659883 0.395111680 12.341619 15.487413 ) (17.443817 2.36002684 23.001503 15.882526 -35.667419 -19.807739 ) (22.61161 8.33868218 -12.665918 -3.9252162 16.328083 9.74355508 ) (18.109733 9.28524209 3.66216755 5.81833935 0.355080604 10.8335189 ) (21.949443 20.520343 4.01724816 16.651859 -23.748405 -23.07764 ) (14.092485 25.63338 -19.731159 -6.4257822 10.638561 15.4770488 ) (-0.319393754 26.946125 -9.09259797 9.0512676 -0.805843354 -26.830555 ) (-9.8149128 22.582111 -9.8984413 -17.779289 4.58480644 13.8451976 ) (-17.4209518 11.72542 -5.31363487 -3.93409157 0.466615677 -4.5502491 ) (-22.501277 5.51620293 -4.8470192 -8.48434068 11.5487308 4.35579968 ) (-21.573928 -0.790237547 6.7017126 -4.128541 -4.6615448 -0.872951508 ) (-17.202991 -5.35525418 2.04016733 -5.0014925 7.0974493 5.1360054 ) (-11.614099 -7.78874398 9.1376171 0.134513020 -5.72825337 -7.67107106 ) (-5.3406086 -11.489765 3.40936375 -7.53655816 3.81556225 7.54827595 ) (-0.0234634876 -15.2521858 7.224926 0.0117186382 -3.53399706 7.4779644 ) (5.4344635 -11.5014858 3.69092894 7.48968316 4.32042694 -7.46013356 ) (11.285606 -7.74186898 8.01135636 0.0295491926 -1.74771785 4.3625698 ) (18.423103 -5.53103447 6.2636385 4.3921194 -15.3295479 2.0098505 ) (17.0219688 -0.133989960 -9.06591035 6.4019699 9.06591035 -6.4019699 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 42Q) (FACE M R R) (WIDTH 303 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 16:38:40) (MADE-FROM NIL 24 130 0 0) (SPLINES ((8 ((211 300) (191 297) (175 289) (168 275) (170 252) (180 223) (191 189) (198 168)) NIL ((-20.560287 -1.93747854 0 0 3.36173153 -6.37512875 ) (-18.879421 -5.1250429 3.36173153 -6.37512875 7.19134236 1.87564373 ) (-11.922018 -10.562349 10.5530738 -4.49948502 -2.1271038 -7.1274452 ) (-2.43249702 -18.6255569 8.42597009 -11.62693 1.31707191 8.63414384 ) (6.65200997 -25.935417 9.743042 -2.99278593 -9.14118577 -9.4091358 ) (11.824457 -33.632766 0.601855278 -12.401922 -6.75231934 35.002395 ) (9.05015374 -28.533493 -6.15046406 22.600479 6.15046406 -22.600479 )) NATURAL) (2 ((198 168) (224 168)) NIL ((26. 0 0 0 0 0 )) NATURAL) (8 ((224 168) (231 189) (242 223) (252 252) (254 275) (247 289) (231 297) (211 300)) NIL ((5.97492218 17.233253 0 0 6.1504631 22.600479 ) (9.05015374 28.533493 6.1504631 22.600479 -6.75231839 -35.002395 ) (11.824457 33.632766 -0.601855397 -12.401922 -9.14118577 9.4091358 ) (6.652009 25.935417 -9.743042 -2.99278593 1.31707191 -8.63414575 ) (-2.4324975 18.6255569 -8.42597009 -11.626932 -2.1271038 7.12744809 ) (-11.9220199 10.562349 -10.5530738 -4.49948406 7.19134236 -1.87564468 ) (-18.879421 5.1250429 -3.36173153 -6.37512875 3.36173153 6.37512875 )) NATURAL)) ((8 ((91 300) (71 297) (55 289) (48 275) (50 252) (60 223) (71 189) (78 168)) NIL ((-20.560287 -1.93747854 0 0 3.36173153 -6.37512875 ) (-18.879421 -5.1250429 3.36173153 -6.37512875 7.19134236 1.87564373 ) (-11.922018 -10.562349 10.5530738 -4.49948502 -2.1271038 -7.1274452 ) (-2.43249702 -18.6255569 8.42597009 -11.62693 1.31707191 8.63414384 ) (6.65200997 -25.935417 9.743042 -2.99278593 -9.14118577 -9.4091358 ) (11.824457 -33.632766 0.601855278 -12.401922 -6.75231934 35.002395 ) (9.05015374 -28.533493 -6.15046406 22.600479 6.15046406 -22.600479 )) NATURAL) (2 ((78 168) (104 168)) NIL ((26. 0 0 0 0 0 )) NATURAL) (8 ((104 168) (111 189) (122 223) (132 252) (134 275) (127 289) (111 297) (91 300)) NIL ((5.97492218 17.233253 0 0 6.1504631 22.600479 ) (9.05015374 28.533493 6.1504631 22.600479 -6.75231839 -35.002395 ) (11.824457 33.632766 -0.601855397 -12.401922 -9.14118577 9.4091358 ) (6.652009 25.935417 -9.743042 -2.99278593 1.31707191 -8.63414575 ) (-2.4324975 18.6255569 -8.42597009 -11.626932 -2.1271038 7.12744809 ) (-11.9220199 10.562349 -10.5530738 -4.49948406 7.19134236 -1.87564468 ) (-18.879421 5.1250429 -3.36173153 -6.37512875 3.36173153 6.37512875 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 57Q) (FACE M R R) (WIDTH 312 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 16:41:07) (MADE-FROM NIL 117 130 0 0) (SPLINES ((2 ((35 0) (67 0)) NIL ((32. 0 0 0 0 0 )) NATURAL) (2 ((67 0) (270 294)) NIL ((203. 294. 0 0 0 0 )) NATURAL) (2 ((270 294) (238 294)) NIL ((-32. 0 0 0 0 0 )) NATURAL) (2 ((238 294) (35 0)) NIL ((-203. -294. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 74Q) (FACE M R R) (WIDTH 267 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 16:44:20) (MADE-FROM NIL 88 130 0 0) (SPLINES ((2 ((166 0) (38 147)) NIL ((-128. 147. 0 0 0 0 )) NATURAL) (2 ((38 147) (166 294)) NIL ((128. 147. 0 0 0 0 )) NATURAL) (2 ((166 294) (226 294)) NIL ((60. 0 0 0 0 0 )) NATURAL) (2 ((226 294) (98 147)) NIL ((-128. -147. 0 0 0 0 )) NATURAL) (2 ((98 147) (226 0)) NIL ((128. -147. 0 0 0 0 )) NATURAL) (2 ((226 0) (166 0)) NIL ((-60. 0 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 76Q) (FACE M R R) (WIDTH 267 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 16:46:22) (MADE-FROM NIL 155 130 0 0) (SPLINES ((2 ((39 0) (167 147)) NIL ((128. 147. 0 0 0 0 )) NATURAL) (2 ((167 147) (39 294)) NIL ((-128. 147. 0 0 0 0 )) NATURAL) (2 ((39 294) (99 294)) NIL ((60. 0 0 0 0 0 )) NATURAL) (2 ((99 294) (227 147)) NIL ((128. -147. 0 0 0 0 )) NATURAL) (2 ((227 147) (99 0)) NIL ((-128. -147. 0 0 0 0 )) NATURAL) (2 ((99 0) (39 0)) NIL ((-60. 0 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 77Q) (FACE M R R) (WIDTH 243 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 16:48:44) (MADE-FROM NIL 166 130 35 72) (SPLINES ((17 ((121 -6) (140 -3) (155 4) (163 13) (166 27) (163 41) (155 50) (140 57) (121 60) (102 57) (87 50) (79 41) (76 27) (79 13) (87 4) (102 -3) (121 -6)) NIL ((19.639171 1.98203754 0 0 -3.83505154 6.10777474 ) (17.721649 5.0359249 -3.83505154 6.10777474 -4.82474232 -6.53887368 ) (11.474226 7.87426186 -8.65979386 -0.431099415 5.1340208 8.04772187 ) (5.38144303 11.4670238 -3.52577257 7.6166229 -3.71134043 -7.65201569 ) (-8.00937414E-8 15.2576389 -7.237113 -0.0353937074 3.71133947 -7.43965436 ) (-5.38144303 11.5024166 -3.52577353 -7.47504807 -5.13401795 7.41063786 ) (-11.474226 7.73268796 -8.65979196 -0.0644102097 4.8247404 -4.20289994 ) (-17.721649 5.5668268 -3.83505154 -4.26731014 3.83505106 -2.59903431 ) (-19.639171 0 -1.27768117E-7 -6.86634446 3.835052 2.59903335 ) (-17.721649 -5.56682778 3.835052 -4.2673111 4.82473946 4.20290089 ) (-11.474226 -7.73268796 8.65979196 -0.0644097030 -5.1340189 -7.4106388 ) (-5.38144303 -11.5024166 3.52577305 -7.475049 3.71133995 7.4396553 ) (1.59256160E-7 -15.2576389 7.237113 -0.0353935584 -3.71133995 7.65201569 ) (5.38144303 -11.4670238 3.52577305 7.6166229 5.1340208 -8.04772187 ) (11.474226 -7.87426186 8.65979386 -0.431099653 -4.82474232 6.53887368 ) (17.721649 -5.0359249 3.83505154 6.10777474 -3.83505154 -6.10777474 )) NATURAL)) ((2 ((100 93) (130 93)) NIL ((30. 0 0 0 0 0 )) NATURAL) (28 ((130 93) (133 114) (143 132) (169 148) (197 169) (216 197) (217 232) (205 259) (181 280) (149 292) (111 295) (72 290) (42 274) (25 246) (33 213) (61 203) (84 206) (101 224) (96 250) (87 265) (96 275) (112 267) (123 245) (127 215) (120 173) (105 141) (99 113) (100 93)) NIL ((2.20930052 21.587924 0 0 4.74419689 -3.52756643 ) (4.58139897 19.824142 4.74419689 -3.52756643 18.279014 -0.362166881 ) (18.465103 16.115493 23.023212 -3.88973332 -23.860263 10.976232 ) (29.558181 17.713874 -0.837053538 7.08650017 -6.83794499 -1.54276752 ) (25.302154 24.028991 -7.67499924 5.54373265 -14.787948 7.1948328 ) (10.233181 33.170143 -22.462947 12.738565 11.989748 -27.23656 ) (-6.2348919 32.29042 -10.4731998 -14.497997 -3.1710453 11.7514228 ) (-18.293613 23.66814 -13.644245 -2.74657297 6.69443608 -7.76913357 ) (-28.59064 17.036998 -6.94980908 -10.515707 0.393295288 1.32511329 ) (-35.343803 7.18384934 -6.55651379 -9.1905937 3.73237848 2.46868038 ) (-40.034126 -0.772403956 -2.8241353 -6.72191334 14.6771907 -5.19983578 ) (-35.519668 -10.094236 11.8530559 -11.921749 -2.44114303 0.330665588 ) (-24.887184 -21.85065 9.4119129 -11.591083 19.087368 -2.12282944 ) (-5.9315853 -34.50315 28.499282 -13.7139129 -1.90833282 50.16065 ) (21.613529 -23.136734 26.59095 36.446739 -41.45404 -30.519794 ) (27.477458 -1.94989419 -14.86309 5.92694378 17.724498 11.918533 ) (21.476619 9.93631745 2.86140919 17.845478 -35.443946 -5.15433884 ) (6.6160507 25.204624 -32.582542 12.691139 28.051315 -33.30117 ) (-11.940832 21.245174 -4.53122425 -20.610034 31.238666 24.359039 ) (-0.852723838 12.814661 26.707443 3.7490058 -21.005985 -28.13499 ) (15.351724 2.49617195 5.70145703 -24.385986 -13.214729 10.180927 ) (14.4458179 -16.79935 -7.51327229 -14.205059 1.86490535 11.411287 ) (7.8649988 -25.298767 -5.64836693 -2.79377174 -6.24489403 -19.826076 ) (-0.905814410 -38.005577 -11.8932609 -22.61985 -0.885330201 43.89302 ) (-13.241739 -38.678909 -12.778591 21.27317 27.786216 -23.746013 ) (-12.1272239 -29.27875 15.007625 -2.4728465 -8.259531 15.0910568 ) (-1.24936437 -24.206069 6.7480936 12.6182117 -6.7480936 -12.6182117 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 133Q) (FACE M R R) (WIDTH 210 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 16:51:16) (MADE-FROM NIL 147 130 0 0) (SPLINES ((2 ((183 294) (183 244)) NIL ((0 -50. 0 0 0 0 )) NATURAL) (2 ((183 244) (133 244)) NIL ((-50. 0 0 0 0 0 )) NATURAL) (2 ((133 244) (133 -32)) NIL ((0 -276. 0 0 0 0 )) NATURAL) (2 ((133 -32) (183 -32)) NIL ((50. 0 0 0 0 0 )) NATURAL) (2 ((183 -32) (183 -82)) NIL ((0 -50. 0 0 0 0 )) NATURAL) (2 ((183 -82) (49 -82)) NIL ((-134. 0 0 0 0 0 )) NATURAL) (2 ((49 -82) (49 294)) NIL ((0 376. 0 0 0 0 )) NATURAL) (2 ((49 294) (183 294)) NIL ((134. 0 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 135Q) (FACE M R R) (WIDTH 208 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 16:52:23) (MADE-FROM NIL 159 130 0 0) (SPLINES ((2 ((157 -82) (23 -82)) NIL ((-134. 0 0 0 0 0 )) NATURAL) (2 ((23 -82) (23 -32)) NIL ((0 50. 0 0 0 0 )) NATURAL) (2 ((23 -32) (73 -32)) NIL ((50. 0 0 0 0 0 )) NATURAL) (2 ((73 -32) (73 244)) NIL ((0 276. 0 0 0 0 )) NATURAL) (2 ((73 244) (23 244)) NIL ((-50. 0 0 0 0 0 )) NATURAL) (2 ((23 244) (23 294)) NIL ((0 50. 0 0 0 0 )) NATURAL) (2 ((23 294) (157 294)) NIL ((134. 0 0 0 0 0 )) NATURAL) (3 ((157 294) (157 294) (157 -82)) NIL ((0 94. 0 0 0 -564. ) (0 -188. 0 -564. 0 564. )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 136Q) (FACE M R R) (WIDTH 223 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 16:53:31) (MADE-FROM NIL 118 130 0 0) (SPLINES ((2 ((142 15) (142 155)) NIL ((0 140. 0 0 0 0 )) NATURAL) (2 ((142 155) (192 155)) NIL ((50. 0 0 0 0 0 )) NATURAL) (2 ((192 155) (112 265)) NIL ((-80. 110. 0 0 0 0 )) NATURAL) (2 ((112 265) (32 155)) NIL ((-80. -110. 0 0 0 0 )) NATURAL) (2 ((32 155) (82 155)) NIL ((50. 0 0 0 0 0 )) NATURAL) (2 ((82 155) (82 15)) NIL ((0 -140. 0 0 0 0 )) NATURAL) (2 ((82 15) (142 15)) NIL ((60. 0 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 137Q) (FACE M R R) (WIDTH 327 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 16:54:28) (MADE-FROM NIL 102 130 0 0) (SPLINES ((2 ((144 27) (144 77)) NIL ((0 50. 0 0 0 0 )) NATURAL) (2 ((144 77) (284 77)) NIL ((140. 0 0 0 0 0 )) NATURAL) (2 ((284 77) (284 137)) NIL ((0 60. 0 0 0 0 )) NATURAL) (2 ((284 137) (144 137)) NIL ((-140. 0 0 0 0 0 )) NATURAL) (2 ((144 137) (144 187)) NIL ((0 50. 0 0 0 0 )) NATURAL) (2 ((144 187) (34 107)) NIL ((-110. -80. 0 0 0 0 )) NATURAL) (2 ((34 107) (144 27)) NIL ((110. -80. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 174Q) (FACE M R R) (WIDTH 163 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 16:57:15) (MADE-FROM NIL 156 130 0 0) (SPLINES ((2 ((124 294) (40 294)) NIL ((-84. 0 0 0 0 0 )) NATURAL) (3 ((40 294) (40 294) (40 -82)) NIL ((0 94. 0 0 0 -564. ) (0 -188. 0 -564. 0 564. )) NATURAL) (2 ((40 -82) (124 -82)) NIL ((84. 0 0 0 0 0 )) NATURAL) (3 ((124 -82) (124 294) (124 294)) NIL ((0 470. 0 0 0 -564. ) (0 188. 0 -564. 0 564. )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 173Q) (FACE M R R) (WIDTH 237 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 16:58:29) (MADE-FROM NIL 126 130 0 0) (SPLINES ((2 ((197 294) (154 294)) NIL ((-43. 0 0 0 0 0 )) NATURAL) (6 ((154 294) (125 289) (105 279) (87 261) (75 236) (70 210)) NIL ((-31.34928 -4.10526276 0 0 14.095693 -5.3684206 ) (-24.301433 -6.78947354 14.095693 -5.3684206 -16.478466 -3.15789509 ) (-18.444973 -13.736841 -2.38277435 -8.5263157 9.81817819 1.90734863E-6 ) (-15.918659 -22.263156 7.43540478 -8.52631379 1.20574283 9.1578922 ) (-7.88038254 -26.210525 8.6411476 0.631578803 -8.6411476 -0.631578803 )) NATURAL) (2 ((70 210) (70 157)) NIL ((0 -53. 0 0 0 0 )) NATURAL) (5 ((70 157) (66 139) (55 127) (40 122) (25 122)) NIL ((-2.41071415 -19.196426 0 0 -9.5357132 7.17857075 ) (-7.1785717 -15.607141 -9.5357132 7.17857075 5.67857075 0.107143402 ) (-13.875 -8.3749981 -3.85714245 7.28571416 4.82142735 -1.6071434 ) (-15.321428 -1.89285683 0.964285732 5.67857075 -0.964285732 -5.67857075 )) NATURAL) (2 ((25 122) (25 96)) NIL ((0 -26. 0 0 0 0 )) NATURAL) (5 ((25 96) (40 96) (55 91) (66 79) (70 61)) NIL ((14.8392849 0.946428419 0 0 0.964285732 -5.67857075 ) (15.321428 -1.89285731 0.964285732 -5.67857075 -4.8214283 -1.6071434 ) (13.874998 -8.375 -3.85714293 -7.28571416 -5.6785698 0.107143402 ) (7.17857075 -15.607141 -9.5357132 -7.17857075 9.5357132 7.17857075 )) NATURAL) (2 ((70 61) (70 8)) NIL ((0 -53. 0 0 0 0 )) NATURAL) (6 ((70 8) (75 -18) (87 -43) (105 -61) (125 -71) (154 -76)) NIL ((3.55980873 -25.894733 0 0 8.6411476 -0.631578923 ) (7.88038254 -26.210525 8.6411476 -0.631578923 -1.20574188 9.15789414 ) (15.918659 -22.263156 7.43540574 8.5263157 -9.81818009 -1.90734863E-6 ) (18.444973 -13.736841 -2.38277483 8.52631379 16.478466 -3.15789318 ) (24.301433 -6.78947354 14.095693 5.3684206 -14.095693 -5.3684206 )) NATURAL) (2 ((154 -76) (197 -76)) NIL ((43. 0 0 0 0 0 )) NATURAL) (2 ((197 -76) (197 -51)) NIL ((0 25. 0 0 0 0 )) NATURAL) (7 ((197 -51) (183 -50) (171 -47) (164 -41) (158 -30) (156 -18) (154 -6)) NIL ((-14.17564 0.588461519 0 0 1.05384636 2.46923065 ) (-13.6487179 1.82307696 1.05384636 2.46923065 6.7307682 -0.346154213 ) (-9.22948648 4.11923027 7.78461457 2.12307644 -9.97692109 4.91538525 ) (-6.4333334 8.69999887 -2.19230747 7.03846169 9.17692185 -7.31538487 ) (-4.037179 12.0807686 6.98461533 -0.276923179 -8.7307682 0.346153974 ) (-1.41794872 11.976923 -1.74615383 0.0692307949 1.74615383 -0.0692307949 )) NATURAL) (2 ((154 -6) (154 57)) NIL ((0 63. 0 0 0 0 )) NATURAL) (5 ((154 57) (151 73) (143 89) (131 100) (114 109)) NIL ((-1.85714292 15.6785698 0 0 -6.85714245 1.92857122 ) (-5.28571415 16.642856 -6.85714245 1.92857122 4.28571415 -9.6428547 ) (-10. 13.749998 -2.5714283 -7.7142849 -4.28571415 6.64285565 ) (-14.7142849 9.3571415 -6.85714245 -1.07142853 6.85714245 1.07142853 )) NATURAL) (5 ((114 109) (131 118) (143 129) (151 145) (154 161)) NIL ((18.142856 8.8214283 0 0 -6.85714245 1.07142877 ) (14.7142849 9.3571415 -6.85714245 1.07142877 4.28571415 6.64285565 ) (9.9999981 13.75 -2.5714283 7.7142849 -4.28571415 -9.6428547 ) (5.28571415 16.642856 -6.85714245 -1.92857146 6.85714245 1.92857146 )) NATURAL) (2 ((154 161) (154 224)) NIL ((0 63. 0 0 0 0 )) NATURAL) (7 ((154 224) (156 236) (158 248) (164 259) (171 265) (183 268) (197 269)) NIL ((2.29102564 12.011537 0 0 -1.74615383 -0.0692307055 ) (1.41794872 11.976923 -1.74615383 -0.0692307055 8.7307682 0.346153498 ) (4.037179 12.0807686 6.98461533 0.276922822 -9.17692185 -7.31538296 ) (6.4333334 8.69999887 -2.19230747 -7.03846074 9.97692109 4.91538334 ) (9.22948648 4.11923027 7.78461457 -2.12307691 -6.7307682 -0.346153259 ) (13.6487179 1.82307672 1.05384612 -2.46923017 -1.05384612 2.46923017 )) NATURAL) (2 ((197 269) (197 294)) NIL ((0 25. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 175Q) (FACE M R R) (WIDTH 237 0) (FIDUCIAL 385 385) (VERSION 0 3-OCT-77 17:00:08) (MADE-FROM NIL 147 130 0 0) (SPLINES ((2 ((42 294) (85 294)) NIL ((43. 0 0 0 0 0 )) NATURAL) (6 ((85 294) (114 289) (134 279) (152 261) (164 236) (169 210)) NIL ((31.34928 -4.10526276 0 0 -14.095693 -5.3684206 ) (24.301433 -6.78947354 -14.095693 -5.3684206 16.478466 -3.15789509 ) (18.444973 -13.736841 2.38277435 -8.5263157 -9.81817819 1.90734863E-6 ) (15.918659 -22.263156 -7.43540478 -8.52631379 -1.20574283 9.1578922 ) (7.88038254 -26.210525 -8.6411476 0.631578803 8.6411476 -0.631578803 )) NATURAL) (2 ((169 210) (169 157)) NIL ((0 -53. 0 0 0 0 )) NATURAL) (5 ((169 157) (173 139) (184 127) (199 122) (214 122)) NIL ((2.41071415 -19.196426 0 0 9.5357132 7.17857075 ) (7.1785717 -15.607141 9.5357132 7.17857075 -5.67857075 0.107143402 ) (13.875 -8.3749981 3.85714245 7.28571416 -4.82142735 -1.6071434 ) (15.321428 -1.89285683 -0.964285732 5.67857075 0.964285732 -5.67857075 )) NATURAL) (2 ((214 122) (214 96)) NIL ((0 -26. 0 0 0 0 )) NATURAL) (5 ((214 96) (199 96) (184 91) (173 79) (169 61)) NIL ((-14.8392849 0.946428419 0 0 -0.964285732 -5.67857075 ) (-15.321428 -1.89285731 -0.964285732 -5.67857075 4.8214283 -1.6071434 ) (-13.874998 -8.375 3.85714293 -7.28571416 5.6785698 0.107143402 ) (-7.17857075 -15.607141 9.5357132 -7.17857075 -9.5357132 7.17857075 )) NATURAL) (2 ((169 61) (169 8)) NIL ((0 -53. 0 0 0 0 )) NATURAL) (6 ((169 8) (164 -18) (152 -43) (134 -61) (114 -71) (85 -76)) NIL ((-3.55980873 -25.894733 0 0 -8.6411476 -0.631578923 ) (-7.88038254 -26.210525 -8.6411476 -0.631578923 1.20574188 9.15789414 ) (-15.918659 -22.263156 -7.43540574 8.5263157 9.81818009 -1.90734863E-6 ) (-18.444973 -13.736841 2.38277483 8.52631379 -16.478466 -3.15789318 ) (-24.301433 -6.78947354 -14.095693 5.3684206 14.095693 -5.3684206 )) NATURAL) (2 ((85 -76) (42 -76)) NIL ((-43. 0 0 0 0 0 )) NATURAL) (2 ((42 -76) (42 -51)) NIL ((0 25. 0 0 0 0 )) NATURAL) (7 ((42 -51) (56 -50) (68 -47) (75 -41) (81 -30) (83 -18) (85 -6)) NIL ((14.17564 0.588461519 0 0 -1.05384636 2.46923065 ) (13.6487179 1.82307696 -1.05384636 2.46923065 -6.7307682 -0.346154213 ) (9.22948648 4.11923027 -7.78461457 2.12307644 9.97692109 4.91538525 ) (6.4333334 8.69999887 2.19230747 7.03846169 -9.17692185 -7.31538487 ) (4.037179 12.0807686 -6.98461533 -0.276923179 8.7307682 0.346153974 ) (1.41794872 11.976923 1.74615383 0.0692307949 -1.74615383 -0.0692307949 )) NATURAL) (2 ((85 -6) (85 57)) NIL ((0 63. 0 0 0 0 )) NATURAL) (5 ((85 57) (88 73) (96 89) (108 100) (125 109)) NIL ((1.85714292 15.6785698 0 0 6.85714245 1.92857122 ) (5.28571415 16.642856 6.85714245 1.92857122 -4.28571415 -9.6428547 ) (10. 13.749998 2.5714283 -7.7142849 4.28571415 6.64285565 ) (14.7142849 9.3571415 6.85714245 -1.07142853 -6.85714245 1.07142853 )) NATURAL) (5 ((125 109) (108 118) (96 129) (88 145) (85 161)) NIL ((-18.142856 8.8214283 0 0 6.85714245 1.07142877 ) (-14.7142849 9.3571415 6.85714245 1.07142877 -4.28571415 6.64285565 ) (-9.9999981 13.75 2.5714283 7.7142849 4.28571415 -9.6428547 ) (-5.28571415 16.642856 6.85714245 -1.92857146 -6.85714245 1.92857146 )) NATURAL) (2 ((85 161) (85 224)) NIL ((0 63. 0 0 0 0 )) NATURAL) (7 ((85 224) (83 236) (81 248) (75 259) (68 265) (56 268) (42 269)) NIL ((-2.29102564 12.011537 0 0 1.74615383 -0.0692307055 ) (-1.41794872 11.976923 1.74615383 -0.0692307055 -8.7307682 0.346153498 ) (-4.037179 12.0807686 -6.98461533 0.276922822 9.17692185 -7.31538296 ) (-6.4333334 8.69999887 2.19230747 -7.03846074 -9.97692109 4.91538334 ) (-9.22948648 4.11923027 -7.78461457 -2.12307691 6.7307682 -0.346153259 ) (-13.6487179 1.82307672 -1.05384612 -2.46923017 1.05384612 2.46923017 )) NATURAL) (2 ((42 269) (42 294)) NIL ((0 25. 0 0 0 0 )) NATURAL)))) STOP \ No newline at end of file diff --git a/obsolete/lispusers/splinefonts/TIMESROMAN.UC1-SF b/obsolete/lispusers/splinefonts/TIMESROMAN.UC1-SF deleted file mode 100644 index e2745a27..00000000 --- a/obsolete/lispusers/splinefonts/TIMESROMAN.UC1-SF +++ /dev/null @@ -1 +0,0 @@ - ((FAMILY TIMESROMAND) (CHARACTER 101Q) (FACE M R R) (WIDTH 344 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 15:54:14) (MADE-FROM NIL 89 130 69 77) (SPLINES ((2 ((191 0) (332 0)) NIL ((141. 0 0 0 0 0 )) NATURAL) (2 ((332 0) (332 10)) NIL ((0 10. 0 0 0 0 )) NATURAL) (3 ((332 10) (320 19) (313 29)) NIL ((-13.25 8.75 0 0 7.5 1.5 ) (-9.5 9.5 7.5 1.5 -7.5 -1.5 )) NATURAL) (2 ((313 29) (180 294)) NIL ((-133. 265. 0 0 0 0 )) NATURAL) (2 ((180 294) (146 294)) NIL ((-34. 0 0 0 0 0 )) NATURAL) (2 ((146 294) (50 54)) NIL ((-96. -240. 0 0 0 0 )) NATURAL) (4 ((50 54) (40 33) (28 18) (11 10)) NIL ((-9.79999925 -22.133331 0 0 -1.20000004 6.8000002 ) (-10.3999996 -18.733329 -1.20000004 6.8000002 -5.99999905 1.99999904 ) (-14.599998 -10.933332 -7.1999998 8.79999925 7.1999998 -8.79999925 )) NATURAL) (2 ((11 10) (11 0)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (2 ((11 0) (116 0)) NIL ((105. 0 0 0 0 0 )) NATURAL) (2 ((116 0) (116 10)) NIL ((0 10. 0 0 0 0 )) NATURAL) (7 ((116 10) (104 13) (89 19) (78 35) (80 58) (84 74) (91 96)) NIL ((-11.152563 2.73589706 0 0 -5.08461476 1.58461571 ) (-13.6948719 3.52820492 -5.08461476 1.58461571 7.42307664 10.076921 ) (-15.067947 10.151281 2.33846187 11.661537 17.392303 0.107692718 ) (-4.03333187 21.866664 19.730766 11.7692299 -22.992301 -28.50769 ) (4.20128155 19.382049 -3.26153803 -16.73846 8.57692147 29.923076 ) (5.22820473 17.605125 5.3153839 13.184616 -5.3153839 -13.184616 )) NATURAL) (3 ((91 96) (177 96) (177 96)) NIL ((107.5 0 0 0 -129. 0 ) (43. 0 -129. 0 129. 0 )) NATURAL) (2 ((177 96) (200 44)) NIL ((23. -52. 0 0 0 0 )) NATURAL) (4 ((200 44) (208 26) (202 13) (191 10)) NIL ((11.3999996 -18.666664 0 0 -20.399997 4. ) (1.19999909 -16.666664 -20.399997 4. 17.999996 10. ) (-10.1999988 -7.66666604 -2.39999962 14. 2.39999962 -14. )) NATURAL) (2 ((191 10) (191 0)) NIL ((0 -10. 0 0 0 0 )) NATURAL)) ((2 ((97 113) (169 113)) NIL ((72. 0 0 0 0 0 )) NATURAL) (2 ((169 113) (129 195)) NIL ((-40. 82. 0 0 0 0 )) NATURAL) (2 ((129 195) (97 113)) NIL ((-32. -82. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 102Q) (FACE M R R) (WIDTH 340 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 15:56:46) (MADE-FROM NIL 91 130 82 78) (SPLINES ((2 ((16 0) (16 10)) NIL ((0 10. 0 0 0 0 )) NATURAL) (5 ((16 10) (27 11) (40 16) (46 27) (47 39)) NIL ((10.0535698 0.339285672 0 0 5.67857075 3.96428585 ) (12.892856 2.3214283 5.67857075 3.96428585 -16.392852 4.17857075 ) (10.374998 8.375 -10.7142849 8.1428566 5.8928566 -8.6785698 ) (2.60714245 12.1785698 -4.8214283 -0.535714269 4.8214283 0.535714269 )) NATURAL) (2 ((47 39) (47 255)) NIL ((0 216. 0 0 0 0 )) NATURAL) (5 ((47 255) (46 267) (40 278) (27 283) (16 284)) NIL ((-0.196428597 11.910713 0 0 -4.8214283 0.535714150 ) (-2.60714292 12.1785698 -4.8214283 0.535714150 -5.8928566 -8.6785698 ) (-10.375 8.3749981 -10.7142849 -8.1428566 16.392852 4.17857075 ) (-12.892856 2.3214283 5.67857075 -3.96428537 -5.67857075 3.96428537 )) NATURAL) (2 ((16 284) (16 294)) NIL ((0 10. 0 0 0 0 )) NATURAL) (2 ((16 294) (191 294)) NIL ((175. 0 0 0 0 0 )) NATURAL) (10 ((191 294) (232 292) (264 284) (287 269) (304 246) (308 215) (297 189) (276 172) (246 160) (204 154)) NIL ((42.83139 -0.786138774 0 0 -10.988382 -7.28316689 ) (37.337204 -4.42772198 -10.988382 -7.28316689 0.941915513 0.415834427 ) (26.819778 -11.5029716 -10.0464668 -6.86733246 7.22071839 -0.380169869 ) (20.38367 -18.560386 -2.82574797 -7.24750233 -11.824789 -4.895154 ) (11.6455288 -28.255466 -14.650537 -12.142656 -1.92156791 19.960781 ) (-3.96579123 -30.417732 -16.572105 7.81812764 7.51106454 3.05201626 ) (-16.7823639 -21.073596 -9.06104089 10.8701439 1.87731838 -8.16884805 ) (-24.904747 -14.287876 -7.1837225 2.7012949 -9.02034379 5.6233797 ) (-36.59864 -8.7748909 -16.204067 8.3246746 16.204067 -8.3246746 )) NATURAL) (11 ((204 154) (236 149) (271 141) (299 127) (317 103) (324 73) (316 40) (295 19) (266 6) (243 2) (225 0)) NIL ((30.846077 -4.45746613 0 0 6.92353726 -3.25520086 ) (34.307838 -6.0850668 6.92353726 -3.25520086 -16.617683 -1.72399473 ) (32.922538 -10.2022647 -9.694149 -4.9791956 -0.452787399 -7.84881879 ) (23.001995 -19.105869 -10.146936 -12.828014 0.428838730 9.11927224 ) (13.069475 -27.374248 -9.7180977 -3.70874214 -7.2625656 -4.628273 ) (-0.279904365 -33.397125 -16.980663 -8.33701516 4.62141609 27.393817 ) (-14.949859 -28.037231 -12.359247 19.056804 0.776903153 -14.947021 ) (-26.920654 -16.453933 -11.582344 4.10978318 22.270965 8.39427377 ) (-27.367511 -8.1470165 10.688623 12.5040569 -5.86077976 -12.6300697 ) (-19.609279 -1.95799517 4.82784367 -0.126014232 -4.82784367 0.126014232 )) NATURAL) (2 ((225 0) (16 0)) NIL ((-209. 0 0 0 0 0 )) NATURAL)) ((3 ((147 161) (147 161) (147 278)) NIL ((0 -29.25 0 0 0 175.5 ) (0 58.5 0 175.5 0 -175.5 )) NATURAL) (9 ((147 278) (165 278) (186 272) (204 256) (214 230) (213 202) (200 175) (172 161) (147 161)) NIL ((17.0887298 1.07391381 0 0 5.4675989 -6.44348336 ) (19.822532 -2.14782762 5.4675989 -6.44348336 -9.3379955 -3.78258324 ) (20.621131 -10.482603 -3.87039757 -10.2260666 -4.11561108 -2.42617798 ) (14.69293 -21.921756 -7.98600865 -12.652244 -4.1995573 13.487295 ) (4.60714245 -27.830356 -12.1855659 0.835051299 2.91384315 -3.5230112 ) (-6.12150193 -28.756809 -9.2717228 -2.68796015 -13.455816 18.604747 ) (-22.121131 -22.142395 -22.727539 15.916788 32.909423 1.10401344 ) (-28.393959 -5.6736002 10.1818847 17.020801 -10.1818847 -17.020801 )) NATURAL)) ((2 ((147 144) (147 36)) NIL ((0 -108. 0 0 0 0 )) NATURAL) (13 ((147 36) (150 25) (161 16) (181 15) (199 22) (214 38) (221 57) (221 83) (215 111) (200 131) (184 141) (166 145) (147 144)) NIL ((1.53440761 -11.070934 0 0 8.7935543 0.425616741 ) (5.93118477 -10.8581276 8.7935543 0.425616741 4.03222656 9.8719158 ) (16.740852 -5.4965515 12.8257808 10.297533 -18.922458 -3.91328716 ) (20.1054 2.84433746 -6.09667969 6.38424588 5.65762043 5.7812376 ) (16.837532 12.1192016 -0.439059258 12.165483 -9.70802117 -13.211664 ) (11.544462 17.678852 -10.147081 -1.04618191 3.17446899 11.0654239 ) (2.98461485 22.165382 -6.97261239 10.019243 3.01014614 -7.0500412 ) (-2.48292446 28.659606 -3.96246624 2.96920204 -9.21505357 -12.865255 ) (-11.052917 25.196178 -13.1775207 -9.8960533 15.8500709 -1.48893165 ) (-16.3054008 14.555662 2.6725502 -11.3849849 -6.18523026 6.82098199 ) (-16.725467 6.5811672 -3.51268005 -4.56400299 2.89085007 -1.79499531 ) (-18.79272 1.1196661 -0.621829868 -6.3589983 0.621829868 6.3589983 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 103Q) (FACE M R R) (WIDTH 317 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 15:57:54) (MADE-FROM NIL 87 130 80 88) (SPLINES ((21 ((295 206) (283 206) (278 217) (269 237) (252 257) (231 271) (203 277) (168 268) (147 247) (135 223) (127 194) (124 157) (127 121) (135 86) (151 54) (176 34) (209 25) (243 31) (271 48) (286 63) (299 51)) NIL ((-14.023639 -2.3255701 0 0 12.1418419 13.95342 ) (-7.95271874 4.65114117 12.1418419 13.95342 -18.709209 -3.76710892 ) (-5.16548252 16.721004 -6.56736756 10.1863117 -3.30500221 -10.884983 ) (-13.385351 21.464824 -9.87236978 -0.698672533 7.92921925 -6.6929493 ) (-19.293109 17.419677 -1.94315004 -7.39162255 -4.41187954 1.65678596 ) (-23.442199 10.856449 -6.35503007 -5.73483658 -8.28169824 -11.9341926 ) (-33.938079 -0.845483781 -14.636728 -17.669029 37.538665 4.07999039 ) (-29.805473 -16.474514 22.901939 -13.5890388 -15.872972 13.614221 ) (-14.840019 -23.256443 7.02896596 0.0251838676 -4.0467739 -4.53687954 ) (-9.8344402 -25.499698 2.98219156 -4.51169586 2.06007337 -7.4667034 ) (-5.82221318 -33.744743 5.04226494 -11.978399 1.80648422 16.403694 ) (0.123294025 -37.521293 6.84874917 4.42529679 -3.2860117 -4.14808369 ) (5.3290367 -35.170044 3.56273747 0.277212322 5.3375635 0.188641011 ) (11.560556 -34.798507 8.90030099 0.465853334 -0.0642452240 15.393518 ) (20.428733 -26.635898 8.83605577 15.859373 0.919410706 -7.7627182 ) (29.724494 -14.657884 9.75546647 8.0966549 -9.61338998 9.65735055 ) (34.673263 -1.73255491 0.142075598 17.754005 -4.4658451 -6.86668587 ) (32.58242 12.588106 -4.32376957 10.8873195 -14.5232219 -6.1906042 ) (20.997036 20.380123 -18.846992 4.69671536 20.558738 -46.370887 ) (12.4294166 1.89139294 1.71174884 -41.674179 -1.71174884 41.674179 )) NATURAL) (26 ((299 51) (277 28) (249 10) (218 -1) (180 -5) (144 -2) (111 8) (82 23) (59 43) (39 69) (27 94) (20 123) (17 154) (21 184) (34 217) (52 244) (76 267) (104 284) (136 295) (172 300) (212 298) (241 293) (262 288) (280 285) (286 294) (296 294)) NIL ((-20.465946 -23.943889 0 0 -9.20431329 5.6633482 ) (-25.068103 -21.112216 -9.20431329 5.6633482 10.021566 1.68325901 ) (-29.26163 -14.6072387 0.817253590 7.3466072 -12.881954 -0.396385193 ) (-34.885353 -7.4588232 -12.064701 6.950222 17.506252 -0.0977230073 ) (-38.196929 -0.557461977 5.44155407 6.852499 -3.14307118 0.787275315 ) (-34.326911 6.68867398 2.29848289 7.6397743 1.06602907 -3.05137062 ) (-31.495414 12.802763 3.36451197 4.5884037 4.8789568 -0.581792832 ) (-25.691421 17.100269 8.24346925 4.00661087 -8.5818615 5.37854195 ) (-21.738884 23.79615 -0.338392854 9.3851528 11.448492 -14.9323749 ) (-16.353031 25.715114 11.1100998 -5.54722309 -7.21210194 12.3509617 ) (-8.84898377 26.343372 3.89799738 6.80373955 -0.600089073 -4.4714737 ) (-5.25102997 30.911376 3.2979083 2.33226585 3.61245775 -6.4650688 ) (-0.146893501 30.011108 6.91036606 -4.13280297 4.15026284 12.3317489 ) (8.83860398 32.044181 11.0606289 8.198946 -8.2135105 -18.861927 ) (15.792476 30.81216 2.84711695 -10.6629829 4.70378399 9.1159687 ) (20.991485 24.707164 7.5509014 -1.54701376 -4.60162544 -5.60194683 ) (26.241573 20.359176 2.94927549 -7.14896107 1.70271826 1.29182338 ) (30.042209 13.8561248 4.65199375 -5.85713768 -2.2092433 0.434653282 ) (33.589576 8.2163143 2.44275045 -5.4224844 7.13425065 -3.03043842 ) (39.599456 1.27861070 9.57700158 -8.4529228 -26.327758 5.68710327 ) (36.012573 -4.33076 -16.750759 -2.76581907 8.17679978 4.28201866 ) (23.350219 -4.95556927 -8.57395936 1.5162003 11.6205539 -4.81518173 ) (20.586536 -5.84696007 3.04659605 -3.29898214 -24.659015 26.978706 ) (11.303623 4.3434124 -21.612422 23.679725 33.015525 -43.099655 ) (6.19896508 6.4733095 11.4031047 -19.419929 -11.4031047 19.419929 )) NATURAL) (2 ((296 294) (295 206)) NIL ((-1. -88. 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 104Q) (FACE M R R) (WIDTH 356 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 15:59:49) (MADE-FROM NIL 93 130 82 78) (SPLINES ((2 ((181 0) (14 0)) NIL ((-167. 0 0 0 0 0 )) NATURAL) (2 ((14 0) (14 10)) NIL ((0 10. 0 0 0 0 )) NATURAL) (5 ((14 10) (25 11) (38 16) (44 27) (45 39)) NIL ((10.0535698 0.339285672 0 0 5.67857075 3.96428585 ) (12.892856 2.3214283 5.67857075 3.96428585 -16.392852 4.17857075 ) (10.374998 8.375 -10.7142849 8.1428566 5.8928566 -8.6785698 ) (2.60714245 12.1785698 -4.8214283 -0.535714269 4.8214283 0.535714269 )) NATURAL) (2 ((45 39) (45 255)) NIL ((0 216. 0 0 0 0 )) NATURAL) (5 ((45 255) (44 267) (38 278) (25 283) (14 284)) NIL ((-0.196428597 11.910713 0 0 -4.8214283 0.535714150 ) (-2.60714292 12.1785698 -4.8214283 0.535714150 -5.8928566 -8.6785698 ) (-10.375 8.3749981 -10.7142849 -8.1428566 16.392852 4.17857075 ) (-12.892856 2.3214283 5.67857075 -3.96428537 -5.67857075 3.96428537 )) NATURAL) (2 ((14 284) (14 294)) NIL ((0 10. 0 0 0 0 )) NATURAL) (2 ((14 294) (181 294)) NIL ((167. 0 0 0 0 0 )) NATURAL) (19 ((181 294) (210 292) (236 288) (260 281) (284 269) (303 254) (321 234) (333 211) (342 176) (343 147) (342 118) (333 83) (321 60) (303 40) (284 25) (260 13) (236 6) (210 2) (181 0)) NIL ((29.633724 -1.5916388 0 0 -3.80235243 -2.45016622 ) (27.732547 -2.81672191 -3.80235243 -2.45016622 1.01176214 0.250832081 ) (24.436077 -5.14147187 -2.79059028 -2.19933414 5.75530434 -4.55316258 ) (24.523136 -9.61738778 2.96471405 -6.7524967 -12.0329799 5.9618187 ) (21.471363 -13.388975 -9.0682659 -0.790677190 12.3766117 -7.29411507 ) (18.5914039 -17.826709 3.30834723 -8.0847931 -13.4734687 11.214649 ) (15.163015 -20.30418 -10.1651229 3.1298561 11.517271 -25.564483 ) (10.7565269 -29.956565 1.35214877 -22.434627 -14.595617 37.04328 ) (4.81086636 -33.869545 -13.243469 14.6086578 16.8652038 -14.6086578 ) (-1.59256160E-7 -26.565223 3.6217351 -5.11072471E-7 -16.8652038 -14.608654 ) (-4.81086827 -33.869545 -13.243469 -14.6086559 14.595617 37.043273 ) (-10.7565288 -29.956562 1.35214853 22.434623 -11.517271 -25.564476 ) (-15.163015 -20.30418 -10.1651229 -3.12985516 13.4734687 11.214647 ) (-18.5914039 -17.826709 3.30834723 8.0847931 -12.3766098 -7.294116 ) (-21.471363 -13.388973 -9.068264 0.790676714 12.032978 5.96181965 ) (-24.523136 -9.61738778 2.96471405 6.7524967 -5.75530434 -4.55316258 ) (-24.436077 -5.14147187 -2.79059028 2.19933367 -1.01176166 0.250832558 ) (-27.732547 -2.81672191 -3.80235195 2.45016622 3.80235195 -2.45016622 )) NATURAL)) ((2 ((145 272) (145 272)) NIL ((0 0 0 0 0 0 )) NATURAL)) ((2 ((145 272) (145 36)) NIL ((0 -236. 0 0 0 0 )) NATURAL) (19 ((145 36) (147 28) (157 18) (182 16) (204 25) (221 41) (234 63) (242 90) (245 119) (246 147) (244 172) (240 198) (232 229) (218 253) (203 268) (184 277) (164 281) (148 280) (145 272)) NIL ((0.969433427 -7.07190228 0 0 6.1833992 -5.56858444 ) (4.06113243 -9.85619355 6.1833992 -5.56858444 17.083004 15.842924 ) (18.786033 -7.50331689 23.266403 10.2743396 -32.515426 2.19688225 ) (25.794723 3.8694644 -9.24902535 12.4712219 4.97872639 -6.63045407 ) (19.03506 13.025459 -4.27029896 5.84076786 0.600520611 0.324934006 ) (15.065023 19.028694 -3.66977835 6.16570187 -1.38080835 -0.669278145 ) (10.7048397 24.859756 -5.0505867 5.49642372 -1.07728576 -3.64782 ) (5.11561108 28.532268 -6.12787247 1.84860348 5.68994999 -2.73944139 ) (1.8327136 29.011154 -0.437921703 -0.890838028 -3.68251753 -3.39441252 ) (-0.446466982 26.423107 -4.12043953 -4.28525067 3.0401206 4.31709099 ) (-3.04684639 24.296402 -1.08031892 0.0318403318 -2.4779644 10.126047 ) (-5.36614704 29.391269 -3.55828333 10.157888 -5.12826252 -20.821285 ) (-11.4885616 29.138511 -8.6865463 -10.6633968 10.991018 1.15910148 ) (-14.6795997 19.054668 2.30447245 -9.50429536 -8.8358135 4.18487263 ) (-16.793033 11.6428089 -6.53134156 -5.31942272 6.3522358 0.101410865 ) (-20.148258 6.3740921 -0.179104834 -5.21801186 1.42686581 1.409482 ) (-19.613929 1.86082101 1.24776101 -3.80852985 17.940292 -5.73933697 ) (-9.39601899 -4.81737709 19.1880569 -9.5478668 -19.1880569 9.5478668 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 105Q) (FACE M R R) (WIDTH 302 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 16:01:30) (MADE-FROM NIL 93 130 82 78) (SPLINES ((2 ((14 0) (14 10)) NIL ((0 10. 0 0 0 0 )) NATURAL) (5 ((14 10) (25 11) (38 16) (44 27) (45 39)) NIL ((10.0535698 0.339285672 0 0 5.67857075 3.96428585 ) (12.892856 2.3214283 5.67857075 3.96428585 -16.392852 4.17857075 ) (10.374998 8.375 -10.7142849 8.1428566 5.8928566 -8.6785698 ) (2.60714245 12.1785698 -4.8214283 -0.535714269 4.8214283 0.535714269 )) NATURAL) (2 ((45 39) (45 255)) NIL ((0 216. 0 0 0 0 )) NATURAL) (5 ((45 255) (44 267) (38 278) (25 283) (14 284)) NIL ((-0.196428597 11.910713 0 0 -4.8214283 0.535714150 ) (-2.60714292 12.1785698 -4.8214283 0.535714150 -5.8928566 -8.6785698 ) (-10.375 8.3749981 -10.7142849 -8.1428566 16.392852 4.17857075 ) (-12.892856 2.3214283 5.67857075 -3.96428537 -5.67857075 3.96428537 )) NATURAL) (2 ((14 284) (14 294)) NIL ((0 10. 0 0 0 0 )) NATURAL) (2 ((14 294) (257 294)) NIL ((243. 0 0 0 0 0 )) NATURAL) (2 ((257 294) (261 218)) NIL ((4. -76. 0 0 0 0 )) NATURAL) (2 ((261 218) (248 218)) NIL ((-13. 0 0 0 0 0 )) NATURAL) (9 ((248 218) (243 227) (237 242) (223 262) (206 274) (186 279) (164 281) (147 280) (145 272)) NIL ((-5.26095295 7.87279034 0 0 1.56572151 6.7632551 ) (-4.4780922 11.254417 1.56572151 6.7632551 -13.828607 2.1837244 ) (-9.8266754 19.109535 -12.262886 8.9469795 11.7487106 -21.498157 ) (-16.215206 17.307434 -0.514174938 -12.551178 -3.16623783 5.8089094 ) (-18.3125 7.66071416 -3.68041277 -6.74226857 0.916238309 4.26251889 ) (-21.534793 3.04970503 -2.76417446 -2.4797492 5.5012865 1.14101576 ) (-21.54832 1.14046359 2.73711204 -1.33873343 19.078605 -8.82658196 ) (-9.2719059 -4.61156082 21.815719 -10.1653156 -21.815719 10.1653156 )) NATURAL) (2 ((145 272) (145 158)) NIL ((0 -114. 0 0 0 0 )) NATURAL) (5 ((145 158) (163 162) (177 174) (186 191) (190 215)) NIL ((18.803569 2.08928585 0 0 -4.8214283 11.4642849 ) (16.392856 7.8214283 -4.8214283 11.4642849 0.107143402 -9.3214264 ) (11.624998 14.625 -4.7142849 2.14285707 -1.6071434 7.82142735 ) (6.10714245 20.678569 -6.3214283 9.9642849 6.3214283 -9.9642849 )) NATURAL) (2 ((190 215) (204 215)) NIL ((14. 0 0 0 0 0 )) NATURAL) (2 ((204 215) (204 89)) NIL ((0 -126. 0 0 0 0 )) NATURAL) (2 ((204 89) (190 89)) NIL ((-14. 0 0 0 0 0 )) NATURAL) (5 ((190 89) (186 109) (177 126) (163 138) (145 142)) NIL ((-2.9464283 20.589283 0 0 -6.3214283 -3.53571415 ) (-6.10714245 18.821426 -6.3214283 -3.53571415 1.6071434 -0.321428776 ) (-11.625 15.124998 -4.7142849 -3.85714293 -0.107143402 -7.1785698 ) (-16.392856 7.67857075 -4.8214283 -11.035713 4.8214283 11.035713 )) NATURAL) (2 ((145 142) (145 36)) NIL ((0 -106. 0 0 0 0 )) NATURAL) (9 ((145 36) (147 30) (156 20) (181 18) (211 21) (233 32) (250 47) (262 64) (271 84)) NIL ((1.14101600 -4.4138441 0 0 5.153903 -9.51693536 ) (3.7179675 -9.17231179 5.153903 -9.51693536 16.230484 23.584678 ) (16.98711 -6.8969059 21.384387 14.067745 -16.0758438 -12.821794 ) (30.333576 0.759941102 5.3085413 1.24594950 -17.927093 9.7025032 ) (26.678569 6.85714245 -12.618555 10.9484539 9.7842388 -7.9882183 ) (18.952133 13.811487 -2.8343153 2.96023512 -3.20986652 -1.7496314 ) (14.512886 15.8969059 -6.04418183 1.21060371 3.05522776 2.98674488 ) (9.9963169 18.600883 -2.98895407 4.1973486 2.98895407 -4.1973486 )) NATURAL) (2 ((271 84) (286 80)) NIL ((15. -4. 0 0 0 0 )) NATURAL) (2 ((286 80) (266 0)) NIL ((-20. -80. 0 0 0 0 )) NATURAL) (2 ((266 0) (14 0)) NIL ((-252. 0 0 0 0 0 )) NATURAL)) ((2 ((145 272) (145 272)) NIL ((0 0 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 106Q) (FACE M R R) (WIDTH 274 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 16:03:04) (MADE-FROM NIL 93 130 82 78) (SPLINES ((2 ((14 0) (14 10)) NIL ((0 10. 0 0 0 0 )) NATURAL) (5 ((14 10) (25 11) (38 16) (44 27) (45 39)) NIL ((10.0535698 0.339285672 0 0 5.67857075 3.96428585 ) (12.892856 2.3214283 5.67857075 3.96428585 -16.392852 4.17857075 ) (10.374998 8.375 -10.7142849 8.1428566 5.8928566 -8.6785698 ) (2.60714245 12.1785698 -4.8214283 -0.535714269 4.8214283 0.535714269 )) NATURAL) (2 ((45 39) (45 255)) NIL ((0 216. 0 0 0 0 )) NATURAL) (5 ((45 255) (44 267) (38 278) (25 283) (14 284)) NIL ((-0.196428597 11.910713 0 0 -4.8214283 0.535714150 ) (-2.60714292 12.1785698 -4.8214283 0.535714150 -5.8928566 -8.6785698 ) (-10.375 8.3749981 -10.7142849 -8.1428566 16.392852 4.17857075 ) (-12.892856 2.3214283 5.67857075 -3.96428537 -5.67857075 3.96428537 )) NATURAL) (2 ((14 284) (14 294)) NIL ((0 10. 0 0 0 0 )) NATURAL) (2 ((14 294) (257 294)) NIL ((243. 0 0 0 0 0 )) NATURAL) (2 ((257 294) (261 228)) NIL ((4. -66. 0 0 0 0 )) NATURAL) (2 ((261 228) (245 228)) NIL ((-16. 0 0 0 0 0 )) NATURAL) (5 ((245 228) (237 248) (220 266) (199 277) (173 280)) NIL ((-5.78571415 20.178569 0 0 -13.285713 -1.07142877 ) (-12.4285717 19.642856 -13.285713 -1.07142877 12.4285698 -6.64285565 ) (-19.5 15.249998 -0.857143045 -7.7142849 -6.4285698 -2.3571434 ) (-23.571426 6.35714245 -7.2857132 -10.071428 7.2857132 10.071428 )) NATURAL) (2 ((173 280) (145 280)) NIL ((-28. 0 0 0 0 0 )) NATURAL) (2 ((145 280) (145 162)) NIL ((0 -118. 0 0 0 0 )) NATURAL) (5 ((145 162) (165 164) (180 171) (191 185) (196 214)) NIL ((21.160713 0.892857195 0 0 -6.9642849 6.6428566 ) (17.678569 4.2142849 -6.9642849 6.6428566 4.82142735 -3.21428442 ) (13.124998 9.25 -2.14285707 3.42857218 -6.32142735 18.214279 ) (7.8214283 21.785713 -8.4642849 21.642852 8.4642849 -21.642852 )) NATURAL) (2 ((196 214) (210 214)) NIL ((14. 0 0 0 0 0 )) NATURAL) (2 ((210 214) (210 89)) NIL ((0 -125. 0 0 0 0 )) NATURAL) (2 ((210 89) (196 89)) NIL ((-14. 0 0 0 0 0 )) NATURAL) (5 ((196 89) (191 118) (180 132) (165 139) (145 141)) NIL ((-3.58928585 32.607139 0 0 -8.4642849 -21.642856 ) (-7.8214283 21.785713 -8.4642849 -21.642856 6.32142735 18.214283 ) (-13.125 9.2499981 -2.14285707 -3.42857122 -4.8214283 -3.21428537 ) (-17.678569 4.2142849 -6.96428586 -6.6428566 6.96428586 6.6428566 )) NATURAL) (2 ((145 141) (145 39)) NIL ((0 -102. 0 0 0 0 )) NATURAL) (5 ((145 39) (146 27) (152 16) (165 11) (176 10)) NIL ((0.196428597 -11.910713 0 0 4.8214283 -0.535714150 ) (2.60714292 -12.1785698 4.8214283 -0.535714150 5.8928566 8.6785698 ) (10.375 -8.3749981 10.7142849 8.1428566 -16.392852 -4.17857075 ) (12.892856 -2.3214283 -5.67857075 3.96428537 5.67857075 -3.96428537 )) NATURAL) (2 ((176 10) (176 0)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (2 ((176 0) (14 0)) NIL ((-162. 0 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 107Q) (FACE M R R) (WIDTH 350 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 16:04:05) (MADE-FROM NIL 93 130 82 78) (SPLINES ((25 ((298 296) (289 284) (268 287) (236 296) (200 301) (166 300) (130 295) (98 284) (70 267) (46 244) (28 217) (17 188) (12 154) (14 123) (21 94) (32 68) (52 42) (76 23) (105 8) (138 -2) (174 -6) (214 -6) (253 -1) (289 9) (315 20)) NIL ((-6.48319245 -15.5386657 0 0 -15.100845 21.231998 ) (-14.033615 -4.92266464 -15.100845 21.231998 3.5042324 -16.160003 ) (-27.382343 8.22933007 -11.5966129 5.07199288 7.08391667 -10.5919685 ) (-35.436996 8.00533868 -4.51269627 -5.5199766 10.160097 -1.47210884 ) (-34.869644 1.74930858 5.64740086 -6.99208546 -11.724308 4.48040486 ) (-35.084396 -3.00257444 -6.07690716 -2.5116806 12.7371368 -4.44951058 ) (-34.792739 -7.7390108 6.66022969 -6.96119118 -3.22424364 1.3176403 ) (-29.744628 -14.0413818 3.43598604 -5.64355088 0.159837722 -0.821053506 ) (-26.228725 -20.095459 3.59582377 -6.46460438 2.58489275 1.96657467 ) (-21.340454 -25.576774 6.1807165 -4.4980297 1.50059128 4.95475292 ) (-14.4094429 -27.597427 7.6813078 0.456723809 -2.58725929 -9.7855873 ) (-8.02176477 -32.0335 5.0940485 -9.32886506 2.8484478 16.1876068 ) (-1.50349259 -33.268562 7.9424963 6.85874367 -2.80653286 -6.96485234 ) (5.03573704 -29.892242 5.13596344 -0.106108874 -3.62231398 5.67179966 ) (8.3605423 -27.162452 1.51364922 5.565691 11.2957878 -9.72234918 ) (15.522087 -26.457935 12.8094387 -4.15665818 -11.560844 15.2176017 ) (22.551101 -23.005794 1.24859380 11.0609436 4.94758892 -9.14805795 ) (26.27349 -16.5188789 6.1961832 1.91288566 -2.22951364 3.37462616 ) (31.354919 -12.91868 3.96666956 5.28751183 -2.02953386 1.64955234 ) (34.306823 -6.80639268 1.93713569 6.93706418 4.34765053 -3.97283316 ) (38.417778 -1.85574507 6.28478623 2.96423101 -9.3610668 2.2417779 ) (40.022033 2.22937488 -3.07628202 5.2060089 3.0966239 1.00572204 ) (38.494064 7.9382448 0.0203422196 6.21173096 -15.0254268 -6.2646637 ) (31.001693 11.0176429 -15.005085 -0.0529328808 15.005085 0.0529328808 )) NATURAL) (2 ((315 20) (315 89)) NIL ((0 69. 0 0 0 0 )) NATURAL) (5 ((315 89) (316 108) (324 117) (331 120) (339 123)) NIL ((-0.964285494 21.25 0 0 11.785713 -13.5 ) (4.9285717 14.499998 11.785713 -13.5 -16.928569 7.50000096 ) (8.2499981 4.74999905 -5.1428566 -5.99999905 7.92857075 7.4999981 ) (7.0714283 2.5 2.78571415 1.49999976 -2.78571415 -1.49999976 )) NATURAL) (2 ((339 123) (339 133)) NIL ((0 10. 0 0 0 0 )) NATURAL) (2 ((339 133) (187 133)) NIL ((-152. 0 0 0 0 0 )) NATURAL) (2 ((187 133) (187 123)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (5 ((187 123) (199 122) (210 115) (215 102) (217 90)) NIL ((11.8928566 0.160714298 0 0 0.642857075 -6.96428586 ) (12.2142849 -3.3214283 0.642857075 -6.96428586 -9.2142849 -1.17857074 ) (8.2499981 -10.875 -8.5714283 -8.1428566 6.21428586 11.6785698 ) (2.78571415 -13.1785698 -2.35714245 3.53571415 2.35714245 -3.53571415 )) NATURAL) (2 ((217 90) (217 19)) NIL ((0 -71. 0 0 0 0 )) NATURAL) (16 ((217 19) (200 11) (172 13) (146 28) (128 56) (120 97) (118 141) (121 181) (130 223) (145 253) (170 274) (206 279) (240 266) (266 245) (282 224) (295 196)) NIL ((-14.0182419 -9.93531228 0 0 -17.890541 11.611883 ) (-22.963512 -4.12937165 -17.890541 11.611883 23.452705 1.94058037 ) (-29.1277 8.45280076 5.56216717 13.552463 2.07970333 -1.37420463 ) (-22.52568 21.31816 7.6418705 12.1782589 4.22847367 3.55624008 ) (-12.769571 35.274536 11.870344 15.7344989 -6.9935951 -12.8507557 ) (-4.39602566 44.583663 4.87674904 2.88374233 -0.254091263 -12.1532116 ) (0.353678048 41.390792 4.62265778 -9.2694702 2.00995827 19.463611 ) (5.98131466 41.853134 6.63261605 10.194141 -1.78574085 -29.70124 ) (11.7210598 37.196655 4.84687519 -19.507099 5.1330061 15.341362 ) (19.134437 25.360233 9.9798813 -4.1657362 5.2537136 -13.664211 ) (31.741176 14.362392 15.2335949 -17.829948 -20.147857 -2.68451309 ) (36.90084 -4.8098135 -4.91426468 -20.514461 -2.66227054 12.402265 ) (30.65544 -19.123142 -7.5765352 -8.11219598 -5.20305348 13.075447 ) (20.477378 -20.697612 -12.7795887 4.96325207 11.474485 -16.704063 ) (13.4350338 -24.086395 -1.30510235 -11.740812 1.30510235 11.740812 )) NATURAL) (2 ((295 196) (310 196)) NIL ((15. 0 0 0 0 0 )) NATURAL) (2 ((310 196) (308 296)) NIL ((-2. 100. 0 0 0 0 )) NATURAL) (2 ((308 296) (298 296)) NIL ((-10. 0 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 110Q) (FACE M R R) (WIDTH 398 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 16:09:07) (MADE-FROM NIL 86 130 82 78) (SPLINES ((2 ((15 0) (15 10)) NIL ((0 10. 0 0 0 0 )) NATURAL) (5 ((15 10) (26 11) (39 16) (45 27) (46 39)) NIL ((10.0535698 0.339285672 0 0 5.67857075 3.96428585 ) (12.892856 2.3214283 5.67857075 3.96428585 -16.392852 4.17857075 ) (10.374998 8.375 -10.7142849 8.1428566 5.8928566 -8.6785698 ) (2.60714245 12.1785698 -4.8214283 -0.535714269 4.8214283 0.535714269 )) NATURAL) (2 ((46 39) (46 255)) NIL ((0 216. 0 0 0 0 )) NATURAL) (5 ((46 255) (45 267) (39 278) (26 283) (15 284)) NIL ((-0.196428597 11.910713 0 0 -4.8214283 0.535714150 ) (-2.60714292 12.1785698 -4.8214283 0.535714150 -5.8928566 -8.6785698 ) (-10.375 8.3749981 -10.7142849 -8.1428566 16.392852 4.17857075 ) (-12.892856 2.3214283 5.67857075 -3.96428537 -5.67857075 3.96428537 )) NATURAL) (2 ((15 284) (15 294)) NIL ((0 10. 0 0 0 0 )) NATURAL) (2 ((15 294) (177 294)) NIL ((162. 0 0 0 0 0 )) NATURAL) (2 ((177 294) (177 284)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (5 ((177 284) (166 283) (153 278) (147 267) (146 255)) NIL ((-10.0535698 -0.339285672 0 0 -5.67857075 -3.96428585 ) (-12.892856 -2.3214283 -5.67857075 -3.96428585 16.392852 -4.17857075 ) (-10.374998 -8.375 10.7142849 -8.1428566 -5.8928566 8.6785698 ) (-2.60714245 -12.1785698 4.8214283 0.535714269 -4.8214283 -0.535714269 )) NATURAL) (2 ((146 255) (146 161)) NIL ((0 -94. 0 0 0 0 )) NATURAL) (2 ((146 161) (247 161)) NIL ((101. 0 0 0 0 0 )) NATURAL) (2 ((247 161) (247 255)) NIL ((0 94. 0 0 0 0 )) NATURAL) (5 ((247 255) (246 267) (240 278) (227 283) (216 284)) NIL ((-0.196428597 11.910713 0 0 -4.8214283 0.535714150 ) (-2.60714292 12.1785698 -4.8214283 0.535714150 -5.8928566 -8.6785698 ) (-10.375 8.3749981 -10.7142849 -8.1428566 16.392852 4.17857075 ) (-12.892856 2.3214283 5.67857075 -3.96428537 -5.67857075 3.96428537 )) NATURAL) (2 ((216 284) (216 294)) NIL ((0 10. 0 0 0 0 )) NATURAL) (2 ((216 294) (378 294)) NIL ((162. 0 0 0 0 0 )) NATURAL) (2 ((378 294) (378 284)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (5 ((378 284) (367 283) (354 278) (348 267) (347 255)) NIL ((-10.0535698 -0.339285672 0 0 -5.67857075 -3.96428585 ) (-12.892856 -2.3214283 -5.67857075 -3.96428585 16.392852 -4.17857075 ) (-10.374998 -8.375 10.7142849 -8.1428566 -5.8928566 8.6785698 ) (-2.60714245 -12.1785698 4.8214283 0.535714269 -4.8214283 -0.535714269 )) NATURAL) (2 ((347 255) (347 39)) NIL ((0 -216. 0 0 0 0 )) NATURAL) (5 ((347 39) (348 27) (354 16) (367 11) (378 10)) NIL ((0.196428597 -11.910713 0 0 4.8214283 -0.535714150 ) (2.60714292 -12.1785698 4.8214283 -0.535714150 5.8928566 8.6785698 ) (10.375 -8.3749981 10.7142849 8.1428566 -16.392852 -4.17857075 ) (12.892856 -2.3214283 -5.67857075 3.96428537 5.67857075 -3.96428537 )) NATURAL) (2 ((378 10) (378 0)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (2 ((378 0) (216 0)) NIL ((-162. 0 0 0 0 0 )) NATURAL) (2 ((216 0) (216 10)) NIL ((0 10. 0 0 0 0 )) NATURAL) (5 ((216 10) (227 11) (240 16) (246 27) (247 39)) NIL ((10.0535698 0.339285672 0 0 5.67857075 3.96428585 ) (12.892856 2.3214283 5.67857075 3.96428585 -16.392852 4.17857075 ) (10.374998 8.375 -10.7142849 8.1428566 5.8928566 -8.6785698 ) (2.60714245 12.1785698 -4.8214283 -0.535714269 4.8214283 0.535714269 )) NATURAL) (2 ((247 39) (247 139)) NIL ((0 100. 0 0 0 0 )) NATURAL) (2 ((247 139) (146 139)) NIL ((-101. 0 0 0 0 0 )) NATURAL) (2 ((146 139) (146 39)) NIL ((0 -100. 0 0 0 0 )) NATURAL) (5 ((146 39) (147 27) (153 16) (166 11) (177 10)) NIL ((0.196428597 -11.910713 0 0 4.8214283 -0.535714150 ) (2.60714292 -12.1785698 4.8214283 -0.535714150 5.8928566 8.6785698 ) (10.375 -8.3749981 10.7142849 8.1428566 -16.392852 -4.17857075 ) (12.892856 -2.3214283 -5.67857075 3.96428537 5.67857075 -3.96428537 )) NATURAL) (2 ((177 10) (177 0)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (2 ((177 0) (15 0)) NIL ((-162. 0 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 111Q) (FACE M R R) (WIDTH 193 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 16:10:25) (MADE-FROM NIL 104 130 82 78) (SPLINES ((2 ((14 0) (14 10)) NIL ((0 10. 0 0 0 0 )) NATURAL) (5 ((14 10) (25 11) (38 16) (44 27) (45 39)) NIL ((10.0535698 0.339285672 0 0 5.67857075 3.96428585 ) (12.892856 2.3214283 5.67857075 3.96428585 -16.392852 4.17857075 ) (10.374998 8.375 -10.7142849 8.1428566 5.8928566 -8.6785698 ) (2.60714245 12.1785698 -4.8214283 -0.535714269 4.8214283 0.535714269 )) NATURAL) (2 ((45 39) (45 255)) NIL ((0 216. 0 0 0 0 )) NATURAL) (5 ((45 255) (44 267) (38 278) (25 283) (14 284)) NIL ((-0.196428597 11.910713 0 0 -4.8214283 0.535714150 ) (-2.60714292 12.1785698 -4.8214283 0.535714150 -5.8928566 -8.6785698 ) (-10.375 8.3749981 -10.7142849 -8.1428566 16.392852 4.17857075 ) (-12.892856 2.3214283 5.67857075 -3.96428537 -5.67857075 3.96428537 )) NATURAL) (2 ((14 284) (14 294)) NIL ((0 10. 0 0 0 0 )) NATURAL) (2 ((14 294) (176 294)) NIL ((162. 0 0 0 0 0 )) NATURAL) (2 ((176 294) (176 284)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (5 ((176 284) (165 283) (152 278) (146 267) (145 255)) NIL ((-10.0535698 -0.339285672 0 0 -5.67857075 -3.96428585 ) (-12.892856 -2.3214283 -5.67857075 -3.96428585 16.392852 -4.17857075 ) (-10.374998 -8.375 10.7142849 -8.1428566 -5.8928566 8.6785698 ) (-2.60714245 -12.1785698 4.8214283 0.535714269 -4.8214283 -0.535714269 )) NATURAL) (2 ((145 255) (144 39)) NIL ((-1. -216. 0 0 0 0 )) NATURAL) (5 ((144 39) (145 27) (151 16) (164 11) (175 10)) NIL ((0.196428597 -11.910713 0 0 4.8214283 -0.535714150 ) (2.60714292 -12.1785698 4.8214283 -0.535714150 5.8928566 8.6785698 ) (10.375 -8.3749981 10.7142849 8.1428566 -16.392852 -4.17857075 ) (12.892856 -2.3214283 -5.67857075 3.96428537 5.67857075 -3.96428537 )) NATURAL) (2 ((175 10) (175 0)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (2 ((175 0) (14 0)) NIL ((-161. 0 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 112Q) (FACE M R R) (WIDTH 271 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 16:11:38) (MADE-FROM NIL 115 130 82 78) (SPLINES ((2 ((124 59) (124 255)) NIL ((0 196. 0 0 0 0 )) NATURAL) (5 ((124 255) (123 267) (117 278) (104 283) (93 284)) NIL ((-0.196428597 11.910713 0 0 -4.8214283 0.535714150 ) (-2.60714292 12.1785698 -4.8214283 0.535714150 -5.8928566 -8.6785698 ) (-10.375 8.3749981 -10.7142849 -8.1428566 16.392852 4.17857075 ) (-12.892856 2.3214283 5.67857075 -3.96428537 -5.67857075 3.96428537 )) NATURAL) (2 ((93 284) (93 294)) NIL ((0 10. 0 0 0 0 )) NATURAL) (2 ((93 294) (255 294)) NIL ((162. 0 0 0 0 0 )) NATURAL) (2 ((255 294) (255 284)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (5 ((255 284) (244 283) (231 278) (225 267) (224 255)) NIL ((-10.0535698 -0.339285672 0 0 -5.67857075 -3.96428585 ) (-12.892856 -2.3214283 -5.67857075 -3.96428585 16.392852 -4.17857075 ) (-10.374998 -8.375 10.7142849 -8.1428566 -5.8928566 8.6785698 ) (-2.60714245 -12.1785698 4.8214283 0.535714269 -4.8214283 -0.535714269 )) NATURAL) (2 ((224 255) (223 79)) NIL ((-1. -176. 0 0 0 0 )) NATURAL) (18 ((223 79) (217 45) (197 18) (164 1) (118 -5) (78 -3) (42 7) (21 25) (12 53) (26 81) (56 91) (86 81) (101 55) (92 33) (95 15) (111 16) (124 36) (124 59)) NIL ((-2.9017105 -35.337036 0 0 -18.5897369 8.0222225 ) (-12.1965789 -31.325923 -18.5897369 8.0222225 8.9486904 1.8888855 ) (-26.311969 -22.359256 -9.6410465 9.911108 -11.2050266 2.42223167 ) (-41.555526 -11.2370338 -20.846073 12.3333397 35.871421 -5.57781029 ) (-44.465889 -1.69259977 15.02535 6.7555294 -18.280677 1.88901138 ) (-38.580879 6.0074358 -3.25532723 8.6445408 25.251281 -1.97823906 ) (-29.210563 13.662857 21.995956 6.66630173 -16.724468 6.02394868 ) (-15.576843 23.341133 5.27148724 12.69025 23.646598 -10.1175556 ) (1.51794481 30.972602 28.918087 2.57269335 -11.8619308 -25.553714 ) (24.505065 20.768436 17.056156 -22.981021 -18.198871 4.3324356 ) (32.461784 -0.0463663712 -1.14271569 -18.648586 -11.342575 -3.77604294 ) (25.647781 -20.582973 -12.485292 -22.424629 -26.43082 34.771736 ) (-0.0529238358 -25.62173 -38.916114 12.3471107 63.065887 -15.310928 ) (-7.43609429 -20.930084 24.149772 -2.96381903 -9.8327484 26.47198 ) (11.797304 -10.657913 14.317024 23.508163 -17.734897 -0.577007294 ) (17.246875 12.5617447 -3.41787434 22.931156 -15.227651 -24.163944 ) (6.21517563 23.410926 -18.645526 -1.23278904 18.645526 1.23278904 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 113Q) (FACE M R R) (WIDTH 347 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 16:15:22) (MADE-FROM NIL 93 130 82 78) (SPLINES ((2 ((191 284) (191 294)) NIL ((0 10. 0 0 0 0 )) NATURAL) (2 ((191 294) (311 294)) NIL ((120. 0 0 0 0 0 )) NATURAL) (2 ((311 294) (311 286)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (4 ((311 286) (285 273) (255 248) (208 199)) NIL ((-26.066665 -11.3999996 0 0 0.399999619 -9.60000039 ) (-25.866664 -16.1999969 0.399999619 -9.60000039 -25.999996 -23.999996 ) (-38.466667 -37.799995 -25.599998 -33.599998 25.599998 33.599998 )) NATURAL) (4 ((208 199) (273 90) (311 30) (335 8)) NIL ((71.26666 -119.5333 0 0 -37.599998 63.199997 ) (52.466659 -87.933319 -37.599998 63.199997 26. -22. ) (27.866664 -35.733329 -11.599998 41.199996 11.599998 -41.199996 )) NATURAL) (2 ((335 8) (335 0)) NIL ((0 -8. 0 0 0 0 )) NATURAL) (2 ((335 0) (192 0)) NIL ((-143. 0 0 0 0 0 )) NATURAL) (2 ((192 0) (192 10)) NIL ((0 10. 0 0 0 0 )) NATURAL) (3 ((192 10) (204 17) (204 28)) NIL ((15. 6. 0 0 -18. 6. ) (6. 9. -18. 6. 18. -6. )) NATURAL) (2 ((204 28) (145 137)) NIL ((-59. 109. 0 0 0 0 )) NATURAL) (2 ((145 137) (145 39)) NIL ((0 -98. 0 0 0 0 )) NATURAL) (4 ((145 39) (146 27) (152 16) (162 10)) NIL ((-0.0666666031 -11.933332 0 0 6.3999996 -0.399999857 ) (3.1333332 -12.133333 6.3999996 -0.399999857 -2. 7.99999905 ) (8.5333328 -8.5333328 4.39999962 7.59999943 -4.39999962 -7.59999943 )) NATURAL) (2 ((162 10) (162 0)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (2 ((162 0) (24 0)) NIL ((-138. 0 0 0 0 0 )) NATURAL) (2 ((24 0) (24 10)) NIL ((0 10. 0 0 0 0 )) NATURAL) (4 ((24 10) (38 16) (44 27) (45 39)) NIL ((15.799999 4.73333264 0 0 -10.799999 7.59999943 ) (10.3999996 8.5333328 -10.799999 7.59999943 6. -7.99999905 ) (2.59999943 12.133333 -4.79999924 -0.399999976 4.79999924 0.399999976 )) NATURAL) (2 ((45 39) (45 255)) NIL ((0 216. 0 0 0 0 )) NATURAL) (4 ((45 255) (44 267) (38 278) (24 284)) NIL ((-0.199999958 11.933332 0 0 -4.80000019 0.399999857 ) (-2.5999999 12.133333 -4.80000019 0.399999857 -5.99999905 -7.99999905 ) (-10.3999996 8.5333328 -10.799999 -7.59999943 10.799999 7.59999943 )) NATURAL) (2 ((24 284) (24 294)) NIL ((0 10. 0 0 0 0 )) NATURAL) (2 ((24 294) (162 294)) NIL ((138. 0 0 0 0 0 )) NATURAL) (2 ((162 294) (162 284)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (4 ((162 284) (152 278) (146 267) (145 255)) NIL ((-10.7333316 -4.73333264 0 0 4.39999962 -7.59999943 ) (-8.5333328 -8.5333328 4.39999962 -7.59999943 2. 7.99999905 ) (-3.1333332 -12.133333 6.3999996 0.399999976 -6.3999996 -0.399999976 )) NATURAL) (2 ((145 255) (145 163)) NIL ((0 -92. 0 0 0 0 )) NATURAL) (7 ((145 163) (174 190) (205 222) (221 247) (222 268) (206 280) (191 284)) NIL ((27.587177 25.198715 0 0 8.476923 10.8076915 ) (31.825637 30.602561 8.476923 10.8076915 -30.384613 -24.038459 ) (25.110256 29.391021 -21.907691 -13.230768 11.0615387 13.346151 ) (8.73333169 22.833332 -10.846153 0.115384549 -13.8615379 -11.346151 ) (-9.04358865 17.275638 -24.70769 -11.230768 32.384613 2.03846168 ) (-17.558971 7.06410218 7.6769228 -9.1923065 -7.6769228 9.1923065 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 114Q) (FACE M R R) (WIDTH 277 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 16:18:16) (MADE-FROM NIL 125 130 82 78) (SPLINES ((2 ((12 0) (12 10)) NIL ((0 10. 0 0 0 0 )) NATURAL) (5 ((12 10) (23 11) (36 16) (42 27) (43 39)) NIL ((10.0535698 0.339285672 0 0 5.67857075 3.96428585 ) (12.892856 2.3214283 5.67857075 3.96428585 -16.392852 4.17857075 ) (10.374998 8.375 -10.7142849 8.1428566 5.8928566 -8.6785698 ) (2.60714245 12.1785698 -4.8214283 -0.535714269 4.8214283 0.535714269 )) NATURAL) (2 ((43 39) (43 255)) NIL ((0 216. 0 0 0 0 )) NATURAL) (5 ((43 255) (42 267) (36 278) (23 283) (12 284)) NIL ((-0.196428597 11.910713 0 0 -4.8214283 0.535714150 ) (-2.60714292 12.1785698 -4.8214283 0.535714150 -5.8928566 -8.6785698 ) (-10.375 8.3749981 -10.7142849 -8.1428566 16.392852 4.17857075 ) (-12.892856 2.3214283 5.67857075 -3.96428537 -5.67857075 3.96428537 )) NATURAL) (2 ((12 284) (12 294)) NIL ((0 10. 0 0 0 0 )) NATURAL) (2 ((12 294) (174 294)) NIL ((162. 0 0 0 0 0 )) NATURAL) (2 ((174 294) (174 284)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (5 ((174 284) (163 283) (150 278) (144 267) (143 255)) NIL ((-10.0535698 -0.339285672 0 0 -5.67857075 -3.96428585 ) (-12.892856 -2.3214283 -5.67857075 -3.96428585 16.392852 -4.17857075 ) (-10.374998 -8.375 10.7142849 -8.1428566 -5.8928566 8.6785698 ) (-2.60714245 -12.1785698 4.8214283 0.535714269 -4.8214283 -0.535714269 )) NATURAL) (2 ((143 255) (143 39)) NIL ((0 -216. 0 0 0 0 )) NATURAL) (8 ((143 39) (145 29) (154 19) (184 19) (214 31) (235 51) (247 71) (256 101)) NIL ((1.59704542 -9.46822358 0 0 2.41772652 -3.1906557 ) (2.80590868 -11.0635509 2.41772652 -3.1906557 29.911365 15.953277 ) (20.179317 -6.2775669 32.329093 12.7626228 -38.063201 -0.622465134 ) (33.476806 6.17382336 -5.73411179 12.1401577 -3.658535 -1.46341705 ) (25.913429 17.582271 -9.3926468 10.6767406 -1.30264663 -17.523868 ) (15.869459 19.497077 -10.695293 -6.84713078 8.86911584 23.55891 ) (9.6087246 24.429405 -1.8261764 16.71178 1.8261764 -16.71178 )) NATURAL) (2 ((256 101) (269 98)) NIL ((13. -3. 0 0 0 0 )) NATURAL) (2 ((269 98) (256 0)) NIL ((-13. -98. 0 0 0 0 )) NATURAL) (2 ((256 0) (12 0)) NIL ((-244. 0 0 0 0 0 )) NATURAL)))) ((FAMILY TIMESROMAND) (CHARACTER 115Q) (FACE M R R) (WIDTH 452 0) (FIDUCIAL 385 385) (VERSION 0 30-SEP-77 16:20:58) (MADE-FROM NIL 35 130 82 78) (SPLINES ((2 ((12 0) (12 10)) NIL ((0 10. 0 0 0 0 )) NATURAL) (5 ((12 10) (23 11) (36 16) (42 27) (43 39)) NIL ((10.0535698 0.339285672 0 0 5.67857075 3.96428585 ) (12.892856 2.3214283 5.67857075 3.96428585 -16.392852 4.17857075 ) (10.374998 8.375 -10.7142849 8.1428566 5.8928566 -8.6785698 ) (2.60714245 12.1785698 -4.8214283 -0.535714269 4.8214283 0.535714269 )) NATURAL) (2 ((43 39) (43 255)) NIL ((0 216. 0 0 0 0 )) NATURAL) (5 ((43 255) (42 267) (36 278) (23 283) (12 284)) NIL ((-0.196428597 11.910713 0 0 -4.8214283 0.535714150 ) (-2.60714292 12.1785698 -4.8214283 0.535714150 -5.8928566 -8.6785698 ) (-10.375 8.3749981 -10.7142849 -8.1428566 16.392852 4.17857075 ) (-12.892856 2.3214283 5.67857075 -3.96428537 -5.67857075 3.96428537 )) NATURAL) (2 ((12 284) (12 294)) NIL ((0 10. 0 0 0 0 )) NATURAL) (2 ((12 294) (148 294)) NIL ((136. 0 0 0 0 0 )) NATURAL) (2 ((148 294) (228 121)) NIL ((80. -173. 0 0 0 0 )) NATURAL) (2 ((228 121) (304 294)) NIL ((76. 173. 0 0 0 0 )) NATURAL) (2 ((304 294) (436 294)) NIL ((132. 0 0 0 0 0 )) NATURAL) (2 ((436 294) (436 284)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (5 ((436 284) (425 283) (412 278) (406 267) (405 255)) NIL ((-10.0535698 -0.339285672 0 0 -5.67857075 -3.96428585 ) (-12.892856 -2.3214283 -5.67857075 -3.96428585 16.392852 -4.17857075 ) (-10.374998 -8.375 10.7142849 -8.1428566 -5.8928566 8.6785698 ) (-2.60714245 -12.1785698 4.8214283 0.535714269 -4.8214283 -0.535714269 )) NATURAL) (2 ((405 255) (405 39)) NIL ((0 -216. 0 0 0 0 )) NATURAL) (5 ((405 39) (406 27) (412 16) (425 11) (436 10)) NIL ((0.196428597 -11.910713 0 0 4.8214283 -0.535714150 ) (2.60714292 -12.1785698 4.8214283 -0.535714150 5.8928566 8.6785698 ) (10.375 -8.3749981 10.7142849 8.1428566 -16.392852 -4.17857075 ) (12.892856 -2.3214283 -5.67857075 3.96428537 5.67857075 -3.96428537 )) NATURAL) (2 ((436 10) (436 0)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (2 ((436 0) (274 0)) NIL ((-162. 0 0 0 0 0 )) NATURAL) (2 ((274 0) (274 10)) NIL ((0 10. 0 0 0 0 )) NATURAL) (5 ((274 10) (285 11) (298 16) (304 27) (305 39)) NIL ((10.0535698 0.339285672 0 0 5.67857075 3.96428585 ) (12.892856 2.3214283 5.67857075 3.96428585 -16.392852 4.17857075 ) (10.374998 8.375 -10.7142849 8.1428566 5.8928566 -8.6785698 ) (2.60714245 12.1785698 -4.8214283 -0.535714269 4.8214283 0.535714269 )) NATURAL) (2 ((305 39) (305 231)) NIL ((0 192. 0 0 0 0 )) NATURAL) (2 ((305 231) (205 0)) NIL ((-100. -231. 0 0 0 0 )) NATURAL) (3 ((205 0) (180 0) (180 0)) NIL ((-31.25 0 0 0 37.5 0 ) (-12.5 0 37.5 0 -37.5 0 )) NATURAL) (2 ((180 0) (75 225)) NIL ((-105. 225. 0 0 0 0 )) NATURAL) (2 ((75 225) (75 39)) NIL ((0 -186. 0 0 0 0 )) NATURAL) (5 ((75 39) (76 27) (82 16) (95 11) (106 10)) NIL ((0.196428597 -11.910713 0 0 4.8214283 -0.535714150 ) (2.60714292 -12.1785698 4.8214283 -0.535714150 5.8928566 8.6785698 ) (10.375 -8.3749981 10.7142849 8.1428566 -16.392852 -4.17857075 ) (12.892856 -2.3214283 -5.67857075 3.96428537 5.67857075 -3.96428537 )) NATURAL) (2 ((106 10) (106 0)) NIL ((0 -10. 0 0 0 0 )) NATURAL) (2 ((106 0) (12 0)) NIL ((-94. 0 0 0 0 0 )) NATURAL)))) STOP \ No newline at end of file diff --git a/obsolete/sources/FILESETS.NOETHER b/obsolete/sources/FILESETS.NOETHER deleted file mode 100644 index 0ac33fbb..00000000 --- a/obsolete/sources/FILESETS.NOETHER +++ /dev/null @@ -1 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) (FILECREATED "15-Feb-90 16:21:14" {DSK}/users/osamu/SUNLOADUP/FILESETS.;1 6850 previous date%: " 5-Apr-89 16:28:12" {ERIS}SUNLOADUP>FILESETS.;7) (* " Copyright (c) 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990 by Xerox Corporation. All rights reserved. ") (PRETTYCOMPRINT FILESETSCOMS) (RPAQQ FILESETSCOMS ( (* ;;; "contains all of the lists of files which are used in various ways") (* ;; "I took out the EXPORT of the filesets because it led to inconsistency when one had loaded ABC. -- Pavel") (* ;; "'90/02/15 osamu: REMOVE LLETHER from 1LISPSET.") (VARS * FILESETS) (VARS EXPORTFILES) (VARS MAKEINITFILES MAKEINITTYPES RENAMETYPES ABCFILES READSYSFILES DATABASEFILES) (VARS DEADFNS))) (* ;;; "contains all of the lists of files which are used in various ways") (* ;; "I took out the EXPORT of the filesets because it led to inconsistency when one had loaded ABC. -- Pavel" ) (* ;; "'90/02/15 osamu: REMOVE LLETHER from 1LISPSET.") (RPAQQ FILESETS (0LISPSET 1LISPSET 2LISPSET 3LISPSET 4LISPSET 5LISPSET 6LISPSET 7LISPSET 8LISPSET 9LISPSET)) (RPAQQ 0LISPSET (PACKAGE-CONVERSION-TABLE LLFAULT LLSUBRS LLBFS LLNEW FILEIO IMAGEIO LLBASIC LLGC LLARRAYELT LLINTERP LLMVS DEFSTRUCT-RUN-TIME SETF-RUNTIME CMLSEQBASICS LLARITH LLFLOAT LLBIGNUM LLREAD LLCHAR LLSTK LLDATATYPE LLKEY LLTIMER)) (RPAQQ 1LISPSET (ASTACK DTDECLARE ATBL LLCODE ACODE IOCHAR COREIO AOFD ADIR PMAP VANILLADISK MOD44IO ATERM APRINT ABASIC AERROR AINTERRUPT MISC BOOTSTRAP CMLMACROS CMLEVAL CMLPROGV CMLSPECIALFORMS LLRESTART LLERROR LLSYMBOL LLPACKAGE PACKAGE-STARTUP CONDITION-PACKAGE XCL-PACKAGE PROC CMLARRAY DSK UFS UFSCALLC PASSWORDS FONT SUNFONT LLDISPLAY APUTDQ COMPATIBILITY DMISC CMLMACROS CMLLIST CMLCHARACTER CMLREADTABLE MAIKOLOADUPFNS MAIKOBITBLT MAIKOINIT)) (RPAQQ 2LISPSET (MACHINEINDEPENDENT POSTLOADUP)) (RPAQQ 3LISPSET (MACROS DLAP BYTECOMPILER COMPILE)) (RPAQQ 4LISPSET (EDIT WEDIT HELPDL PRETTY COMMENT BREAK ADVISE LOADFNS FILEPKG DFILE DMISC)) (RPAQQ 5LISPSET (HIST UNDO SPELL DWIM WTFIX CLISP DWIMIFY CLISPIFY RECORD ASSIST)) (RPAQQ 6LISPSET (MSANALYZE MSPARSE MASTERSCOPE HPRINT BRKDWN MATCH)) (RPAQQ 7LISPSET (ADISPLAY DEXEC AARITH AFONT HARDCOPY PRESS HLDISPLAY MENU WINDOW WBREAK INSPECT INSPECT-CLOSURE BSP CHAT TRSERVER 10MBDRIVER LLNS DISKDLION SPP COURIER NSPRINT CLEARINGHOUSE NSFILING INTERPRESS ADDARITH MACROAUX DEDIT DSPRINTDEF NEWPRINTDEF TTYIN DPUPFTP FLOPPY)) (RPAQQ 8LISPSET (MAKEINIT MEM RENAMEFNS)) (RPAQQ 9LISPSET (LLFCOMPILE VMEM READSYS APS PCALLSTATS UPCSTATS REMOTEVMEM)) (RPAQQ EXPORTFILES (FILESETS MODARITH LLPARAMS LLCODE AERROR AOFD APRINT ATERM LLARRAYELT LLDATATYPE LLNEW LLBASIC LLCHAR LLSTK PMAP LLGC ATBL FILEIO LLARITH LLFLOAT FONT LLKEY LLDISPLAY ADISPLAY AINTERRUPT PUP RENAMEMACROS HLDISPLAY WINDOW MACROAUX ADDARITH LLFAULT LLTIMER LLETHER IMAGEIO PROC LLREAD PASSWORDS INTERPRESS HARDCOPY CMLARRAY LLSUBRS)) (RPAQQ MAKEINITFILES (MAKEINIT MEM I-NEW)) (RPAQQ MAKEINITTYPES ((NIL INIT (0 1) 2LISPSET 1600) (SMALLINIT SMALLINIT (LLFAULT LLSUBRS LLNEW FILEIO LLBASIC LLGC LLINTERP LLARITH LLREAD LLCHAR TINYPATCH)) (MACROTEST MACROTEST ((MACROTEST) 0 1) 2LISPSET) (MICROTEST MICROTEST ((MICROTEST LLFAULT LLSTK LLSUBRS LLKEY LLBFS))) (NANOTEST NANOTEST ((MICROTEST LLSUBRS))) (NULL NULL ((DUMMY))) (MILLITEST MILLITEST ((MACROTEST LLFAULT LLSUBRS LLNEW LLBASIC LLGC LLINTERP LLARITH LLFLOAT LLARRAYELT LLSTK LLDATATYPE LLKEY ABASIC LLCHAR ASTACK MISC APUTDQ))) (CHECKARRAYS CHECKARRAYS (CHECKARRAYSPACE 0 1) 2LISPSET))) (RPAQQ RENAMETYPES ((I (FILES LLPARAMS LLCODE LLARRAYELT LLCHAR LLNEW LLBASIC LLDATATYPE LLGC LLSTK RENAMEMACROS MODARITH LLFAULT LLKEY LLBFS LLTIMER) (RENAMEDFILE . I-NEW) (SUBNAME . MKI.SUBFNS) (COMSNAME . INEWCOMS) (EXTRACOMS (VARS INITPTRS INITVALUES) (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP) MAKEINIT))) (MKI.SUBFNS) (INEWCOMS) (VALUES . INITVALUES) (PTRS . INITPTRS) (PREFIX . I.) (VAG2FN . I.VAG2)) (R (FILES LLCODE LLPARAMS LLBASIC LLDATATYPE LLNEW ACODE LLARRAYELT LLCHAR LLINTERP LLSTK RENAMEMACROS MODARITH LLFAULT) (RENAMEDFILE . RDSYS) (SUBNAME . RD.SUBFNS) (COMSNAME . RDCOMS) (EXTRACOMS (FILES VMEM) (VARS RDVALS RDPTRS) (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP) VMEM))) (RD.SUBFNS (\CALLME . *)) (RDCOMS) (PTRS . RDPTRS) (PREFIX . V) (VAG2FN . VVAG2) (VALUES . RDVALS) (RDPTRS) (RDVALUES)))) (RPAQQ ABCFILES (LOADABC COMPILEBANG SAMEDIR WHEREIS COMPILEFORMSLIST CHECKSET CMACROS DCODEFOR10 DTDECLARE BYTECOMPILER DLAP LLCODE ACODE MACROAUX)) (RPAQQ READSYSFILES (RDSYS READSYS VMEM REMOTEVMEM)) (RPAQQ DATABASEFILES (0LISPSET 1LISPSET (2LISPSET ACODE) (3LISPSET DLAP) (4LISPSET DFILE DMISC) 7LISPSET (8LISPSET MAKEINIT MEM) 9LISPSET (10LISPSET LLPARAMS) (NIL CHECKARRAYSPACE MAKEINEW PMEMSTATS PPAGESTATS LLFCOMPILE))) (RPAQQ DEADFNS ((PUTBASE \PUTBASE) (GETBASE \GETBASE) (ADDBASE \ADDBASE) (GETBASEBYTE \GETBASEBYTE) (PUTBASEBYTE \PUTBASEBYTE) (PUTBASEPTR \PUTBASEPTR) (HILOC \HILOC) (LOLOC \LOLOC) (VAG2 \VAG2) (PAGEBASE NIL) (PAGELOC NIL) (WordsPerPage WORDSPERPAGE) (ALTOMACRO DMACRO) (\STACKSPACE ??) (GETBASEPTR \GETBASEPTR) (FPLUS2) (FTIMES2) (CREATECELL \CREATECELL))) (PUTPROPS FILESETS COPYRIGHT ("Xerox Corporation" 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990)) (DECLARE%: DONTCOPY (FILEMAP (NIL))) STOP \ No newline at end of file diff --git a/obsolete/sources/FILESETS.ORIG b/obsolete/sources/FILESETS.ORIG deleted file mode 100644 index a88668a2..00000000 --- a/obsolete/sources/FILESETS.ORIG +++ /dev/null @@ -1 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) (FILECREATED " 5-Apr-89 16:28:12" {ERIS}SUNLOADUP>FILESETS.;7 7015 changes to%: (VARS 1LISPSET) previous date%: " 6-Feb-89 15:49:03" {ERIS}SUNLOADUP>FILESETS.;6) (* " Copyright (c) 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989 by Xerox Corporation. All rights reserved. ") (PRETTYCOMPRINT FILESETSCOMS) (RPAQQ FILESETSCOMS ( (* ;;; "contains all of the lists of files which are used in various ways") (* ;; "I took out the EXPORT of the filesets because it led to inconsistency when one had loaded ABC. -- Pavel") (VARS * FILESETS) (VARS EXPORTFILES) (VARS MAKEINITFILES MAKEINITTYPES RENAMETYPES ABCFILES READSYSFILES DATABASEFILES) (VARS DEADFNS))) (* ;;; "contains all of the lists of files which are used in various ways") (* ;; "I took out the EXPORT of the filesets because it led to inconsistency when one had loaded ABC. -- Pavel" ) (RPAQQ FILESETS (0LISPSET 1LISPSET 2LISPSET 3LISPSET 4LISPSET 5LISPSET 6LISPSET 7LISPSET 8LISPSET 9LISPSET)) (RPAQQ 0LISPSET (PACKAGE-CONVERSION-TABLE LLFAULT LLSUBRS LLBFS LLNEW FILEIO IMAGEIO LLBASIC LLGC LLARRAYELT LLINTERP LLMVS DEFSTRUCT-RUN-TIME SETF-RUNTIME CMLSEQBASICS LLARITH LLFLOAT LLBIGNUM LLREAD LLCHAR LLSTK LLDATATYPE LLKEY LLTIMER)) (RPAQQ 1LISPSET (ASTACK DTDECLARE ATBL LLCODE ACODE IOCHAR COREIO AOFD ADIR PMAP VANILLADISK MOD44IO ATERM APRINT ABASIC AERROR AINTERRUPT MISC BOOTSTRAP CMLMACROS CMLEVAL CMLPROGV CMLSPECIALFORMS LLRESTART LLERROR LLSYMBOL LLPACKAGE PACKAGE-STARTUP CONDITION-PACKAGE XCL-PACKAGE PROC CMLARRAY DSK UFS UFSCALLC LLETHER PASSWORDS FONT SUNFONT LLDISPLAY APUTDQ COMPATIBILITY DMISC CMLMACROS CMLLIST CMLCHARACTER CMLREADTABLE MAIKOLOADUPFNS MAIKOBITBLT MAIKOINIT)) (RPAQQ 2LISPSET (MACHINEINDEPENDENT POSTLOADUP)) (RPAQQ 3LISPSET (MACROS DLAP BYTECOMPILER COMPILE)) (RPAQQ 4LISPSET (EDIT WEDIT HELPDL PRETTY COMMENT BREAK ADVISE LOADFNS FILEPKG DFILE DMISC)) (RPAQQ 5LISPSET (HIST UNDO SPELL DWIM WTFIX CLISP DWIMIFY CLISPIFY RECORD ASSIST)) (RPAQQ 6LISPSET (MSANALYZE MSPARSE MASTERSCOPE HPRINT BRKDWN MATCH)) (RPAQQ 7LISPSET (ADISPLAY DEXEC AARITH AFONT HARDCOPY PRESS HLDISPLAY MENU WINDOW WBREAK INSPECT INSPECT-CLOSURE BSP CHAT TRSERVER 10MBDRIVER LLNS DISKDLION SPP COURIER NSPRINT CLEARINGHOUSE NSFILING INTERPRESS ADDARITH MACROAUX DEDIT DSPRINTDEF NEWPRINTDEF TTYIN DPUPFTP FLOPPY)) (RPAQQ 8LISPSET (MAKEINIT MEM RENAMEFNS)) (RPAQQ 9LISPSET (LLFCOMPILE VMEM READSYS APS PCALLSTATS UPCSTATS REMOTEVMEM)) (RPAQQ EXPORTFILES (FILESETS MODARITH LLPARAMS LLCODE AERROR AOFD APRINT ATERM LLARRAYELT LLDATATYPE LLNEW LLBASIC LLCHAR LLSTK PMAP LLGC ATBL FILEIO LLARITH LLFLOAT FONT LLKEY LLDISPLAY ADISPLAY AINTERRUPT PUP RENAMEMACROS HLDISPLAY WINDOW MACROAUX ADDARITH LLFAULT LLTIMER LLETHER IMAGEIO PROC LLREAD PASSWORDS INTERPRESS HARDCOPY CMLARRAY LLSUBRS)) (RPAQQ MAKEINITFILES (MAKEINIT MEM I-NEW)) (RPAQQ MAKEINITTYPES ((NIL INIT (0 1) 2LISPSET 1600) (SMALLINIT SMALLINIT (LLFAULT LLSUBRS LLNEW FILEIO LLBASIC LLGC LLINTERP LLARITH LLREAD LLCHAR TINYPATCH)) (MACROTEST MACROTEST ((MACROTEST) 0 1) 2LISPSET) (MICROTEST MICROTEST ((MICROTEST LLFAULT LLSTK LLSUBRS LLKEY LLBFS))) (NANOTEST NANOTEST ((MICROTEST LLSUBRS))) (NULL NULL ((DUMMY))) (MILLITEST MILLITEST ((MACROTEST LLFAULT LLSUBRS LLNEW LLBASIC LLGC LLINTERP LLARITH LLFLOAT LLARRAYELT LLSTK LLDATATYPE LLKEY ABASIC LLCHAR ASTACK MISC APUTDQ))) (CHECKARRAYS CHECKARRAYS (CHECKARRAYSPACE 0 1) 2LISPSET))) (RPAQQ RENAMETYPES ((I (FILES LLPARAMS LLCODE LLARRAYELT LLCHAR LLNEW LLBASIC LLDATATYPE LLGC LLSTK RENAMEMACROS MODARITH LLFAULT LLKEY LLBFS LLTIMER) (RENAMEDFILE . I-NEW) (SUBNAME . MKI.SUBFNS) (COMSNAME . INEWCOMS) (EXTRACOMS (VARS INITPTRS INITVALUES) (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP) MAKEINIT))) (MKI.SUBFNS) (INEWCOMS) (VALUES . INITVALUES) (PTRS . INITPTRS) (PREFIX . I.) (VAG2FN . I.VAG2)) (R (FILES LLCODE LLPARAMS LLBASIC LLDATATYPE LLNEW ACODE LLARRAYELT LLCHAR LLINTERP LLSTK RENAMEMACROS MODARITH LLFAULT) (RENAMEDFILE . RDSYS) (SUBNAME . RD.SUBFNS) (COMSNAME . RDCOMS) (EXTRACOMS (FILES VMEM) (VARS RDVALS RDPTRS) (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP) VMEM))) (RD.SUBFNS (\CALLME . *)) (RDCOMS) (PTRS . RDPTRS) (PREFIX . V) (VAG2FN . VVAG2) (VALUES . RDVALS) (RDPTRS) (RDVALUES)))) (RPAQQ ABCFILES (LOADABC COMPILEBANG SAMEDIR WHEREIS COMPILEFORMSLIST CHECKSET CMACROS DCODEFOR10 DTDECLARE BYTECOMPILER DLAP LLCODE ACODE MACROAUX)) (RPAQQ READSYSFILES (RDSYS READSYS VMEM REMOTEVMEM)) (RPAQQ DATABASEFILES (0LISPSET 1LISPSET (2LISPSET ACODE) (3LISPSET DLAP) (4LISPSET DFILE DMISC) 7LISPSET (8LISPSET MAKEINIT MEM) 9LISPSET (10LISPSET LLPARAMS) (NIL CHECKARRAYSPACE MAKEINEW PMEMSTATS PPAGESTATS LLFCOMPILE))) (RPAQQ DEADFNS ((PUTBASE \PUTBASE) (GETBASE \GETBASE) (ADDBASE \ADDBASE) (GETBASEBYTE \GETBASEBYTE) (PUTBASEBYTE \PUTBASEBYTE) (PUTBASEPTR \PUTBASEPTR) (HILOC \HILOC) (LOLOC \LOLOC) (VAG2 \VAG2) (PAGEBASE NIL) (PAGELOC NIL) (WordsPerPage WORDSPERPAGE) (ALTOMACRO DMACRO) (\STACKSPACE ??) (GETBASEPTR \GETBASEPTR) (FPLUS2) (FTIMES2) (CREATECELL \CREATECELL))) (PUTPROPS FILESETS COPYRIGHT ("Xerox Corporation" 1981 1982 1983 1984 1985 1986 1987 1988 1989)) (DECLARE%: DONTCOPY (FILEMAP (NIL))) STOP \ No newline at end of file diff --git a/obsolete/sources/FILESETS.PUP b/obsolete/sources/FILESETS.PUP deleted file mode 100644 index 3dac6662..00000000 --- a/obsolete/sources/FILESETS.PUP +++ /dev/null @@ -1 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) (FILECREATED " 9-Apr-90 16:57:44" {DSK}mitani>SUNLOADUP>FILESETS;2 5281 changes to%: (VARS 1LISPSET) previous date%: " 5-Apr-89 16:28:12" {DSK}mitani>SUNLOADUP>FILESETS;1) (* " Copyright (c) 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990 by Xerox Corporation. All rights reserved. ") (PRETTYCOMPRINT FILESETSCOMS) (RPAQQ FILESETSCOMS ((* ;;; "contains all of the lists of files which are used in various ways") (* ;; "I took out the EXPORT of the filesets because it led to inconsistency when one had loaded ABC. -- Pavel") (VARS * FILESETS) (VARS EXPORTFILES) (VARS MAKEINITFILES MAKEINITTYPES RENAMETYPES ABCFILES READSYSFILES DATABASEFILES) (VARS DEADFNS))) (* ;;; "contains all of the lists of files which are used in various ways") (* ;; "I took out the EXPORT of the filesets because it led to inconsistency when one had loaded ABC. -- Pavel" ) (RPAQQ FILESETS (0LISPSET 1LISPSET 2LISPSET 3LISPSET 4LISPSET 5LISPSET 6LISPSET 7LISPSET 8LISPSET 9LISPSET)) (RPAQQ 0LISPSET (PACKAGE-CONVERSION-TABLE LLFAULT LLSUBRS LLBFS LLNEW FILEIO IMAGEIO LLBASIC LLGC LLARRAYELT LLINTERP LLMVS DEFSTRUCT-RUN-TIME SETF-RUNTIME CMLSEQBASICS LLARITH LLFLOAT LLBIGNUM LLREAD LLCHAR LLSTK LLDATATYPE LLKEY LLTIMER)) (RPAQQ 1LISPSET (ASTACK DTDECLARE ATBL LLCODE ACODE IOCHAR COREIO AOFD ADIR PMAP VANILLADISK MOD44IO ATERM APRINT ABASIC AERROR AINTERRUPT MISC BOOTSTRAP CMLMACROS CMLEVAL CMLPROGV CMLSPECIALFORMS LLRESTART LLERROR LLSYMBOL LLPACKAGE PACKAGE-STARTUP CONDITION-PACKAGE XCL-PACKAGE PROC CMLARRAY DSK UFS UFSCALLC LLETHER PUP LEAF PASSWORDS FONT SUNFONT LLDISPLAY APUTDQ COMPATIBILITY DMISC CMLMACROS CMLLIST CMLCHARACTER CMLREADTABLE MAIKOLOADUPFNS MAIKOBITBLT MAIKOINIT)) (RPAQQ 2LISPSET (MACHINEINDEPENDENT POSTLOADUP)) (RPAQQ 3LISPSET (MACROS DLAP BYTECOMPILER COMPILE)) (RPAQQ 4LISPSET (EDIT WEDIT HELPDL PRETTY COMMENT BREAK ADVISE LOADFNS FILEPKG DFILE DMISC)) (RPAQQ 5LISPSET (HIST UNDO SPELL DWIM WTFIX CLISP DWIMIFY CLISPIFY RECORD ASSIST)) (RPAQQ 6LISPSET (MSANALYZE MSPARSE MASTERSCOPE HPRINT BRKDWN MATCH)) (RPAQQ 7LISPSET (ADISPLAY DEXEC AARITH AFONT HARDCOPY PRESS HLDISPLAY MENU WINDOW WBREAK INSPECT INSPECT-CLOSURE BSP CHAT TRSERVER 10MBDRIVER LLNS DISKDLION SPP COURIER NSPRINT CLEARINGHOUSE NSFILING INTERPRESS ADDARITH MACROAUX DEDIT DSPRINTDEF NEWPRINTDEF TTYIN DPUPFTP FLOPPY)) (RPAQQ 8LISPSET (MAKEINIT MEM RENAMEFNS)) (RPAQQ 9LISPSET (LLFCOMPILE VMEM READSYS APS PCALLSTATS UPCSTATS REMOTEVMEM)) (RPAQQ EXPORTFILES (FILESETS MODARITH LLPARAMS LLCODE AERROR AOFD APRINT ATERM LLARRAYELT LLDATATYPE LLNEW LLBASIC LLCHAR LLSTK PMAP LLGC ATBL FILEIO LLARITH LLFLOAT FONT LLKEY LLDISPLAY ADISPLAY AINTERRUPT PUP RENAMEMACROS HLDISPLAY WINDOW MACROAUX ADDARITH LLFAULT LLTIMER LLETHER IMAGEIO PROC LLREAD PASSWORDS INTERPRESS HARDCOPY CMLARRAY LLSUBRS)) (RPAQQ MAKEINITFILES (MAKEINIT MEM I-NEW)) (RPAQQ MAKEINITTYPES ((NIL INIT (0 1) 2LISPSET 1600) (SMALLINIT SMALLINIT (LLFAULT LLSUBRS LLNEW FILEIO LLBASIC LLGC LLINTERP LLARITH LLREAD LLCHAR TINYPATCH)) (MACROTEST MACROTEST ((MACROTEST) 0 1) 2LISPSET) (MICROTEST MICROTEST ((MICROTEST LLFAULT LLSTK LLSUBRS LLKEY LLBFS))) (NANOTEST NANOTEST ((MICROTEST LLSUBRS))) (NULL NULL ((DUMMY))) (MILLITEST MILLITEST ((MACROTEST LLFAULT LLSUBRS LLNEW LLBASIC LLGC LLINTERP LLARITH LLFLOAT LLARRAYELT LLSTK LLDATATYPE LLKEY ABASIC LLCHAR ASTACK MISC APUTDQ))) (CHECKARRAYS CHECKARRAYS (CHECKARRAYSPACE 0 1) 2LISPSET))) (RPAQQ RENAMETYPES ((I (FILES LLPARAMS LLCODE LLARRAYELT LLCHAR LLNEW LLBASIC LLDATATYPE LLGC LLSTK RENAMEMACROS MODARITH LLFAULT LLKEY LLBFS LLTIMER) (RENAMEDFILE . I-NEW) (SUBNAME . MKI.SUBFNS) (COMSNAME . INEWCOMS) (EXTRACOMS (VARS INITPTRS INITVALUES) (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP) MAKEINIT))) (MKI.SUBFNS) (INEWCOMS) (VALUES . INITVALUES) (PTRS . INITPTRS) (PREFIX . I.) (VAG2FN . I.VAG2)) (R (FILES LLCODE LLPARAMS LLBASIC LLDATATYPE LLNEW ACODE LLARRAYELT LLCHAR LLINTERP LLSTK RENAMEMACROS MODARITH LLFAULT) (RENAMEDFILE . RDSYS) (SUBNAME . RD.SUBFNS) (COMSNAME . RDCOMS) (EXTRACOMS (FILES VMEM) (VARS RDVALS RDPTRS) (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP) VMEM))) (RD.SUBFNS (\CALLME . *)) (RDCOMS) (PTRS . RDPTRS) (PREFIX . V) (VAG2FN . VVAG2) (VALUES . RDVALS) (RDPTRS) (RDVALUES)))) (RPAQQ ABCFILES (LOADABC COMPILEBANG SAMEDIR WHEREIS COMPILEFORMSLIST CHECKSET CMACROS DCODEFOR10 DTDECLARE BYTECOMPILER DLAP LLCODE ACODE MACROAUX)) (RPAQQ READSYSFILES (RDSYS READSYS VMEM REMOTEVMEM)) (RPAQQ DATABASEFILES (0LISPSET 1LISPSET (2LISPSET ACODE) (3LISPSET DLAP) (4LISPSET DFILE DMISC) 7LISPSET (8LISPSET MAKEINIT MEM) 9LISPSET (10LISPSET LLPARAMS) (NIL CHECKARRAYSPACE MAKEINEW PMEMSTATS PPAGESTATS LLFCOMPILE))) (RPAQQ DEADFNS ((PUTBASE \PUTBASE) (GETBASE \GETBASE) (ADDBASE \ADDBASE) (GETBASEBYTE \GETBASEBYTE) (PUTBASEBYTE \PUTBASEBYTE) (PUTBASEPTR \PUTBASEPTR) (HILOC \HILOC) (LOLOC \LOLOC) (VAG2 \VAG2) (PAGEBASE NIL) (PAGELOC NIL) (WordsPerPage WORDSPERPAGE) (ALTOMACRO DMACRO) (\STACKSPACE ??) (GETBASEPTR \GETBASEPTR) (FPLUS2) (FTIMES2) (CREATECELL \CREATECELL))) (PUTPROPS FILESETS COPYRIGHT ("Xerox Corporation" 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990)) (DECLARE%: DONTCOPY (FILEMAP (NIL))) STOP \ No newline at end of file diff --git a/obsolete/sources/LISPBCPLFILES.DM b/obsolete/sources/LISPBCPLFILES.DM deleted file mode 100644 index b4a5edfb94fd5dd60dd85e2faa9be5055c129600..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192713 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. // ////////////////////////////////////////////////////////////////////////// ftp ERINYES Directory/C LispCore>SOURCES Retrieve/<>A LOADFULL.CM LoadInit.cm LoadFullFromDLInit.cm @LoadInit.CM@ @LoadFullFromDLInit.cm@ \ No newline at end of file diff --git a/obsolete/sources/LOADFULL.LISP b/obsolete/sources/LOADFULL.LISP deleted file mode 100644 index d5b39ee1..00000000 --- a/obsolete/sources/LOADFULL.LISP +++ /dev/null @@ -1 +0,0 @@ -(RESETVARS ((IDLE.PROFILE (QUOTE (TIMEOUT NIL)))) (DEL.PROCESS (QUOTE IDLE)) (SETQQ DISPLAYFONTDIRECTORIES ({ERIS}FONTS>)) (SETQQ PRESSFONTWIDTHSFILES ({ERIS}FONTS>FONTS.WIDTHS)) (SETQQ INTERPRESSFONTDIRECTORIES ({ERIS}FONTS>)) (SETQQ *DEFAULT-CLEANUP-COMPILER* BCOMPL) (SETQQ LOADUPDIRECTORIES ({Eris}Sources> {Eris}Library> {Eris}Internal>Library>)) (LOADUP (QUOTE (GIVE-AND-TAKE CHANGECONTROL CHAT PUPCHAT NSCHAT PRESS PUPPRINT TEDIT HRULE TEDITCHAT READNUMBER EDITBITMAP MAILCLIENT GRAPEVINE NSMAIL LAFITE FILEBROWSER TELERAID GRAPHER SPY AREDIT WHERE-IS COPYFILES MSANALYZE MSPARSE MASTERSCOPE))) (\DAYTIME0 \LASTUSERACTION) (ENDLOADUP)) STOP \ No newline at end of file diff --git a/obsolete/sources/LOADFULLFROMDLINIT.CM b/obsolete/sources/LOADFULLFROMDLINIT.CM deleted file mode 100644 index a8677653..00000000 --- a/obsolete/sources/LOADFULLFROMDLINIT.CM +++ /dev/null @@ -1 +0,0 @@ -////////////////////////////////////////////////////////////////////////// // // L O A D F U L L F R O M D L I N I T . C M // // (C) Copyright 1990, Venue & Fuji Xerox, Ltd. // All Rights Reserved. // // Make the INIT.DLINIT into a LISP.SYSOUT & a FULL.SYSOUT. // ////////////////////////////////////////////////////////////////////////// // IF YOU EDIT THIS FILE, BE SURE TO EDIT LOADFULLFROMDLINITSLOW.CM // LoadFullFromDLInit.cm, edited 8-Mar-87 15:40:50 vanMelle // ^^^ READ ^^^ UPDATE ^^^ READ ^^^ UPDATE ^^^ READ ^^^ UPDATE // bring over files necessary to run INIT.DLINIT. FTP/-E ERINYES Directory/C LispCore>Next Ret/<>A Lisp.run DoradoLispMc.eb; // start up DLInit. MAKESYSNAME gets set here. The (SPECVARS . T) is because some file in the loadup (unknown) sets it wrong Lisp {DSK6}Init.DLInit ;" (SETQQ MAKESYSNAME LISPCORE) (PROGN (LOAD (QUOTE \"{Pele:MV:Envos}SOURCES>LOADUP.LISP\")) (HARDRESET)) SHH(PROGN (IL:ENDLOADUP) (IL:SPECVARS . T) (IL:MAKESYS '\"{Pele:MV:Envos}Basics>LISP.SYSOUT\")) SHH(PROGN (IL:LOAD '\"{Pele:MV:Envos}SOURCES>LOADFULL.LISP\") (IL:MAKESYS '\"{Pele:MV:Envos}Basics>FULL.SYSOUT\") (IL:LOGOUT T)) " \ No newline at end of file diff --git a/obsolete/sources/LOADFULLFROMDLINITSLOW.CM b/obsolete/sources/LOADFULLFROMDLINITSLOW.CM deleted file mode 100644 index 9058d7f3..00000000 --- a/obsolete/sources/LOADFULLFROMDLINITSLOW.CM +++ /dev/null @@ -1 +0,0 @@ -// IF YOU EDIT THIS FILE, BE SURE TO EDIT LOADFULLFROMDLINIT.CM // LoadFullFromDLInitSlow.cm, edited 8-Mar-87 15:40:50 vanMelle // ^^^ READ ^^^ UPDATE ^^^ READ ^^^ UPDATE ^^^ READ ^^^ UPDATE // bring over files necessary to run INIT.DLINIT. FTP/-E ERIS Directory/C LispCore>Next Ret/<>A Lisp.run DoradoLispMc.eb; // start up DLInit. MAKESYSNAME gets set here. The (SPECVARS . T) is because some file in the loadup (unknown) sets it wrong Lisp [ERIS]Next>Init.dlinit ;" (SETQQ MAKESYSNAME LISPCORE) (PROGN (LOAD (QUOTE {ERIS}SOURCES>LOADUP.LISP))(HARDRESET)) SHH(PROGN (IL:ENDLOADUP) (IL:SPECVARS . T) (IL:* IL:MAKESYS '{ERIS}NEXT>LISP.SYSOUT)) SHH(PROGN (IL:LOAD '{ERIS}SOURCES>LOADFULL.LISP) (IL:MAKESYS '{ERIS}NEXT>FULL.SYSOUT) (IL:LOGOUT T)) " \ No newline at end of file diff --git a/obsolete/sources/LOADFULLFROMLISP.CM b/obsolete/sources/LOADFULLFROMLISP.CM deleted file mode 100644 index 64c731cd..00000000 --- a/obsolete/sources/LOADFULLFROMLISP.CM +++ /dev/null @@ -1 +0,0 @@ -// LoadFullFromLisp.cm Edited 24-Feb-87 19:10:47 -- van Melle -- Delete INIT.DFASL!* INIT.SAVE* // otherwise Lisp might read INIT.DFASL!2 Copy INIT.SAVE _ INIT.DFASL // save away site file to be restored below FTP/-E ERIS Login/C Dir/C LispCore>Next Ret/<>A Lisp.run DoradoLispMc.eb Ret/S Current>Init.null Init.DFASL Lisp [ERIS]Next>Lisp.sysout ;" SHH(PROGN (DELFILE '{DSK}INIT.DFASL) (RENAMEFILE '{DSK}INIT.SAVE '{DSK}INIT.DFASL;1) ) SHH(LOAD '{ERIS}SOURCES>LOADFULL.LISP) SHH(MAKESYS '{ERIS}NEXT>FULL.SYSOUT] SHH(LOGOUT] " \ No newline at end of file diff --git a/obsolete/sources/LOADFULLSLOW.CM b/obsolete/sources/LOADFULLSLOW.CM deleted file mode 100644 index 33eaa7e8..00000000 --- a/obsolete/sources/LOADFULLSLOW.CM +++ /dev/null @@ -1 +0,0 @@ -ftp ERIS Directory/C LispCore>SOURCES Retrieve/<>A LOADFULLSLOW.CM LoadInitSlow.cm LoadFullFromDLInitSlow.cm @LoadInitSlow.CM@ @LoadFullFromDLInitSlow.cm@ \ No newline at end of file diff --git a/obsolete/sources/LOADINIT.CM b/obsolete/sources/LOADINIT.CM deleted file mode 100644 index 3353168f..00000000 --- a/obsolete/sources/LOADINIT.CM +++ /dev/null @@ -1 +0,0 @@ -////////////////////////////////////////////////////////////////////////// // // L O A D I N I T . C M // // (C) Copyright 1990, Venue & Fuji Xerox, Ltd. // All Rights Reserved. // // Make the INIT.DLINIT starting sysout for a new loadup. // ////////////////////////////////////////////////////////////////////////// // IF YOU EDIT THIS FILE, EDIT LOADINITSLOW.CM TOO!!!! // Edit November 3, 1987 by vanMelle, note comment ^^ // The path given to the Lisp command below should point to the LispCore sysout cache. // Code that runs after Lisp starts up assures that the cached sysout // is the most recent, and if not, fetches a new one and restarts itself. // Edited so that the most recent patch file is loaded // Updated Lisp version for big physical memory --bvm 11/3/87 Delete INIT.DFASL!* INIT.SAVE* // otherwise Lisp might read INIT.LISP!2 Copy INIT.SAVE _ INIT.DFASL // save away site file to be restored below FTP/-E ERINYES Login/C Directory/C LispCore>Next Ret/<>A Lisp.run DoradoLispMc.eb Ret/S Current>Init-NOGREET Init.DFASL Lisp {DSK7}LispCore.Sysout;" (XCL:RESTORE-PROFILE \"INTERLISP\") (DELFILE '{DSK}INIT.DFASL) (AND (INFILEP '{DSK}INIT.SAVE) (RENAMEFILE '{DSK}INIT.SAVE '{DSK}INIT.DFASL)) (DIRECTORY '{DSK6}INIT.DLINIT;* '(DELETE)) (* Make sure we have a valid sysout) (LET ((DATE (CAR (NLSETQ (GETFILEINFO '{Pele:mv:envos}Saved>FULL.SYSOUT 'ICREATIONDATE))))) (IF (AND DATE (IGREATERP DATE (GETFILEINFO '{DSK7}LispCore.Sysout;1 'ICREATIONDATE))) THEN (* Get new saved sysout) (NLSETQ (PROGN (COPYFILE '{Pele:mv:envos}Saved>FULL.SYSOUT '{DSK7}LispCore.Sysout;1) (COPYFILE '{DSK}REM.CM;1 '{CORE}REM.CM) (* Repeat current command now) (OUTFILE '{DSK}REM.CM;1) (PRIN1 '@LoadInit.cm@) (COPYBYTES (OPENSTREAM '{CORE}REM.CM 'INPUT)) (CLOSEF) (LOGOUT T] (PROGN (* Make old sysout work with new read tables) (SETSYNTAX (CHARCODE ^^) 'PACKAGEDELIM FILERDTBL) (SETSYNTAX (CHARCODE ^^) 'PACKAGEDELIM CODERDTBL) (SETSYNTAX (CHARCODE ^^) 'PACKAGEDELIM \\ORIGREADTABLE)) (LOAD \"{Pele:mv:envos}NEXT>LOAD-LISPCORE-PATCH\") CONN \"{pele:mv:envos}SOURCES>\" (SETQ DIRECTORIES '(\"{Pele:MV:Envos}SOURCES>\" \"{Pele:MV:Envos}LIBRARY>\" \"{Pele:MV:Envos}INTERNAL>LIBRARY>\")) (SETQ LITATOM-PACKAGE-CONVERSION-ENABLED NIL) (SETQ *REMOVE-INTERLISP-COMMENTS* NIL) (* Get new exports since last loadup) (LOAD 'CONDITION-PACKAGE.LCOM 'SYSLOAD) (LOAD 'XCL-PACKAGE.LCOM 'SYSLOAD) (* FILESETS has where to get things from) (LOAD 'FILESETS) (FILESLOAD RENAMEFNS MAKEINIT DLFIXINIT CMLARRAY-SUPPORT) (* Versions are Lisp Microcode Bcpl) (PROGN (CNDIR '{CORE}) (IDLE.SET.OPTION 'TIMEOUT 0) (IDLE.SET.OPTION 'SAVEVM 0) (DORENAME 'I) (DLFIXINIT (MAKEINIT '(115000Q 13062Q 25400Q) NIL NIL '(\"{Pele:MV:Envos}SOURCES>\" \"{Pele:MV:Envos}INTERNAL>LIBRARY>\" \"{Pele:MV:Envos}LIBRARY>\")) '{DSK6}INIT.DLINIT \"{Pele:MV:Envos}NEXT>LispDLion.db\" 300) (LOGOUT T]] " \ No newline at end of file diff --git a/obsolete/sources/LOADINITSLOW.CM b/obsolete/sources/LOADINITSLOW.CM deleted file mode 100644 index 5628c9a8..00000000 --- a/obsolete/sources/LOADINITSLOW.CM +++ /dev/null @@ -1 +0,0 @@ -// LoadInitSlow.cm edited: November 3, 1987 by vanMelle // IF YOU EDIT THIS FILE, EDIT LOADINIT.CM TOO // edit 30-Nov-86 12:06:48 by masinter, merge LOADINIT changes, add comment above // Updated Lisp version for big physical memory --bvm 11/3/87 // The path given to the Lisp command below should point to the LispCore sysout cache. Delete INIT.DFASL!* INIT.SAVE* // otherwise Lisp might read INIT.LISP!2 Copy INIT.SAVE _ INIT.DFASL // save away site file to be restored below FTP/-E ERIS Login/C Directory/C LispCore>Next Ret/<>A Lisp.run DoradoLispMc.eb Ret/S Current>Init-NOGREET Init.DFASL Lisp [ERIS]saved>Full.Sysout;" (XCL:RESTORE-PROFILE \"INTERLISP\") (DELFILE '{DSK}INIT.DFASL) (AND (INFILEP '{DSK}INIT.SAVE) (RENAMEFILE '{DSK}INIT.SAVE '{DSK}INIT.DFASL)) (PROGN (* Make old sysout work with new read tables) (SETSYNTAX (CHARCODE ^^) 'PACKAGEDELIM FILERDTBL) (SETSYNTAX (CHARCODE ^^) 'PACKAGEDELIM CODERDTBL) (SETSYNTAX (CHARCODE ^^) 'PACKAGEDELIM \\ORIGREADTABLE)) (LOAD '{ERIS}NEXT>LOAD-LISPCORE-PATCH) CONN {ERIS}SOURCES> (SETQ DIRECTORIES '({ERIS}SOURCES> {ERIS}LIBRARY> {ERIS}INTERNAL>LIBRARY>)) (SETQ LITATOM-PACKAGE-CONVERSION-ENABLED NIL) (SETQ *REMOVE-INTERLISP-COMMENTS* NIL) (* Get new exports since last loadup) (LOAD 'CONDITION-PACKAGE.LCOM 'SYSLOAD) (LOAD 'XCL-PACKAGE.LCOM 'SYSLOAD) (* FILESETS has where to get things from) (LOAD 'FILESETS) (FILESLOAD RENAMEFNS MAKEINIT DLFIXINIT CMLARRAY-SUPPORT) (* Versions are Lisp Microcode Bcpl) (PROGN (CNDIR '{CORE}) (IDLE.SET.OPTION 'TIMEOUT 0) (IDLE.SET.OPTION 'SAVEVM 0) (DORENAME 'I) (DLFIXINIT (MAKEINIT '(115000Q 13062Q 25400Q) NIL NIL '({ERIS}SOURCES> {ERIS}LIBRARY>)) '{ERIS}NEXT>INIT.DLINIT '{ERIS}NEXT>LispDLion.db 300) (LOGOUT T]] " \ No newline at end of file diff --git a/obsolete/sources/LOADUP.LISP b/obsolete/sources/LOADUP.LISP deleted file mode 100644 index 5f2c4783..00000000 --- a/obsolete/sources/LOADUP.LISP +++ /dev/null @@ -1,53 +0,0 @@ -(SETQQ COMPILE.EXT LCOM) -(SETQ SYSFILES (UNION BOOTLOADEDFILES SYSFILES)) -(SETQ BOOTLOADEDFILES) -(* ;; "following files are really loaded earlier, this call to LOADUP just cleans up") -(LOADUP (QUOTE (ACODE MACHINEINDEPENDENT POSTLOADUP))) -(* ;; "establish all package exports early") -(LOADUP (QUOTE (LISP-PACKAGE FASL-PACKAGE D-ASSEM-PACKAGE COMPILER-PACKAGE))) -(* ;; "load FASL loader here, so we can load DFASLs earlier in loadup") -(LOADUP (QUOTE (ERROR-RUNTIME CMLARITH CONDITION-HIERARCHY CMLHASH D-ASSEM FASLOAD))) -(* ;; "These are needed by any FASL files") -(LOADUP (QUOTE (DEFFER-RUNTIME CMLPRINT CLSTREAMS CMLSTRING CMLSYMBOL CMLTYPES CMLSEQCOMMON CMLSEQMAPPERS CMLPATHNAME CMLFILESYS))) -(* ;;; "* 'FASL files may be loaded after this point' * * *") -(LOADUP (QUOTE (CMLDEFFER ERROR-RUNTIME-AFTER-FASL WRAPPERS))) -(* ;; "early runtime support for Common Lisp and (temporarily) debugger") -(LOADUP (QUOTE (STACKFNS CMLMVS MACROS MACROAUX UNWINDMACROS))) -(LOADUP (QUOTE (COMMON XCLC-RUNTIME CMLTYPES CL-ERROR))) -(LOADUP (QUOTE (AFONT EDIT WEDIT PRETTY DSPRINTDEF NEWPRINTDEF FONTPROFILE SPELLFILE PRINTFN LOADFNS -DMISC DIRECTORY SPELLFILE FILEPKG RESOURCE))) -(* ;; "needed for makesys") -(LOADUP (QUOTE (MOD44IO))) -(* ;; -"The Byte Compiler (DLAP, BYTECOMPILER, COMPILER) used to be here. Moved after XCL Compiler so that one byte compiler init will work. JDS 10/11/89" -) -(LOADUP (QUOTE (HIST UNDO SPELL DWIM WTFIX CLISP DWIMIFY CLISPIFY RECORD))) -(LOADUP (QUOTE (GAINSPACE COROUTINE ARGLIST ASKUSER SYSPRETTY COMMON COMPARE))) -(DWIM (QUOTE C)) -(* ;; "Kernel Common Lisp files") -(LOADUP (QUOTE (CMLSTEP CMLDOC CMLPARSE CMLSETF CMLPRED CMLREAD WALKER CMLSEQFINDER CMLSEQMODIFY CMLSORT DEFSTRUCT CMLMISCIO CMLCOMPILE CMLDESTRUCT CL-ERROR CMLFORMAT CMLENVIRONMENT CMLLOAD CMLFLOAT CMLTIME CMLRAND CMLMODULES))) -(LOADUP (QUOTE (PROFILE CMLEXEC EXEC-COMMANDS DEBUGGER IL-ERROR-STUFF DEBUGEDIT))) -(LOADUP (QUOTE (ADDARITH))) -(LOADUP (QUOTE (CMLPATHNAME HPRINT AARITH ADISPLAY HLDISPLAY MENU WINDOWOBJ WINDOWSCROLL WINDOW WINDOWICON PAINTW ATTACHEDWINDOW XXGEOM XXFILL DEXEC INSPECT DESCRIBE CMLARRAYINSPECTOR EDITINTERFACE TTYIN))) -(LOADUP (QUOTE (BREAK-AND-TRACE))) -(LOADUP (QUOTE (FASDUMP XCL-COMPILER ADVISE))) -(* ;; "the bytecompiler and Interlisp compiler interface functions") -(LOADUP (QUOTE (DLAP BYTECOMPILER COMPILE))) -(LOADUP (QUOTE (HARDCOPY LOGOW IDLER ICONW FREEMENU SEDIT))) -(CLOSEW (LOGOW)) (MOVD 'NILL 'LOGOW) -(LOADUP (QUOTE (DSK UFS UFSCALLC MAIKOBITBLT))) -(LOADUP (QUOTE (TIME))) -(LOADUP (QUOTE (XCL-EXTRAS))) -(* "CMLPACKAGE pushes onto INSPECTMACROS") -(LOADUP (QUOTE (CMLPACKAGE))) -(* ;; -"Puts ARGNAME properties on CL and XCL functions that IL:SMARTARGLIST can't hack. Keep this last so everything will be defined when it runs" -) -(LOADUP (QUOTE (CMLSMARTARGS))) -(LOADUP (QUOTE (IMPLICIT-KEY-HASH CLOSURE-CACHE))) -(* ;; "Already enabled, but this time fixes tables that weren't defined in the init") - (PACKAGE-ENABLE) - (* ;; "Additional stuff that should be folded into original definitions") - (LOADUP (QUOTE (LOADUP-LISP))) - STOP - diff --git a/obsolete/sources/LispDMC.DM b/obsolete/sources/LispDMC.DM deleted file mode 100644 index e88c9f69050f3a97e7444b1ee3971f6241f9a826..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354892 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

    >j!Koo(Mv7*>=gY|@&dVjx3+7Fu2!12a{K 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 diff --git a/obsolete/sources/MAPATOMS b/obsolete/sources/MAPATOMS deleted file mode 100644 index 299f47a3..00000000 --- a/obsolete/sources/MAPATOMS +++ /dev/null @@ -1 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP") (FILECREATED "29-Mar-95 11:53:28" |{DSK}sources>MAPATOMS.;2| 3719 |changes| |to:| (FNS MAPATOMS) |previous| |date:| "29-Mar-95 10:47:32" |{DSK}sources>MAPATOMS.;1|) (PRETTYCOMPRINT MAPATOMSCOMS) (RPAQQ MAPATOMSCOMS ((FNS MAPATOMS))) (DEFINEQ (MAPATOMS (LAMBDA (FN) (* \; "Edited 29-Mar-95 11:52 by sybalsky") (* |;;| "8-FEB-92 JDS: We now switch over into big-atom mode at 12288 (changes in \\CREATE.SYMBOL should be lected here)") (PROG ((A 0) (DTD (\\GETDTD \\NEW-ATOM))) (|for| |old| A |from| 0 |to| (IMIN |\\AtomFrLst| 12286) |do| (APPLY* FN (\\INDEXATOMPNAME A))) (COND ((IGREATERP |\\AtomFrLst| 12286) (LET* ((SIZE (|fetch| DTDSIZE |of| DTD)) (ATOM# A) (FIRSTFREE (|fetch| DTDFREE |of| DTD)) (LASTFREE (|create| POINTER PAGE# _ (LOGAND (|fetch| (POINTER PAGE#) |of| FIRSTFREE ) 65534))) (LASTFREE2 (|create| POINTER PAGE# _ (ADD1 (LOGAND (|fetch| (POINTER PAGE#) |of| FIRSTFREE) 65534)))) RESULT FIRSTPAGE LASTPAGE LIMIT) (COND ((.ALLOCATED.PER.PAGE. SIZE) (SETQ LASTPAGE (SUB1 |\\PagesPerMDSUnit|)) (SETQ LIMIT WORDSPERPAGE)) (T (SETQ LASTPAGE 0) (SETQ LIMIT (FOLDLO |\\MDSIncrement| |\\PagesPerMDSUnit|)))) (|for| MDSPAGE# |from| 0 |by| (ADD1 LASTPAGE) |while| (<= MDSPAGE# \\MAXVMPAGE) |when| (EQ (MDSTYPE# MDSPAGE#) \\NEW-ATOM) |do| (* |;;|  "Now collect all pointers not on free list. This code parallels \\INITMDSPAGE") (|for| N |from| 0 |to| LASTPAGE |do| (SETQ FIRSTPAGE (|create| POINTER PAGE# _ (IPLUS N MDSPAGE#))) (|for| (DISP _ 0) |while| (<= (|add| DISP SIZE) LIMIT) |as| (DATUMBASE _ FIRSTPAGE) |by| (\\ADDBASE DATUMBASE SIZE) |when| (OR (AND (NEQ FIRSTPAGE LASTFREE) (NEQ FIRSTPAGE LASTFREE2)) (|for| (FREE _ FIRSTFREE) |by| (\\GETBASEPTR FREE 0) |while| FREE |never| (EQ DATUMBASE FREE))) |do| (APPLY* FN DATUMBASE) (|add| ATOM# 1)))) NIL)))))) ) (DECLARE\: DONTCOPY (FILEMAP (NIL (341 3696 (MAPATOMS 351 . 3694))))) STOP \ No newline at end of file diff --git a/obsolete/sources/MAPATOMS.LCOM b/obsolete/sources/MAPATOMS.LCOM deleted file mode 100644 index a09cf6f2089ec4451effb5207f660aefd4771169..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1164 zcma)6Pi)&%7*96-45Va9*P^MarVmpU=a3TH$&whDaBGKnwf#KXLjwv~mRQRl&xw*0 zX~IYdi33MAZWC9|ZOVy@uiLGK9xB9Ti+XQWt}J}dQ&%P~^WnYs`@P@$zMuVl&#bIe zR71&DR87gMMuos7OOa$pTG13>ZmenyTr#EAHR)r7s^KV>rrIWxNwD<9Dry}?28J(W zuh#u+xddEM%ojwizyQlMdUyJ5&uv1_2L^(#Wqa+L54`rU-{=k8E5qK#py3X$=#nWp zM7NjU7lI5V7$KL{>w|2$0DMjq1TmM#v$tq0@7-nqLE8_2(cPx!-UTk7l{Riu?eg+6 z%9{0&iyG#X=L#Z^mP-G(Ts}#|abiIb`O?c+Y@1lLcPJ`=rP$XshpzKbQ7zk{dlU+wNvDVhP1V&%$3+_zOHp{L%RPsP z%0LT7LzkXKqcTKAu+`6^upm1!5;>4S#j#>!Al{mb#p0ctF?_r^Z|2XPwDnqqn*MuF zkM4&!{?@tCym~wyg%MBbU(bHG6&KWpXVY)LQLW8{>Z4a`sox)y)E|?5fBN*`^U0bw zJ$SsEj=xF%%XjzJC)%?e>AZjM+&P-|X!}Dy9wW)WNb<=)N8?-sj>c?vb4h^lT($XX z{HL%}-Th%Qsru9D!S1)!?nmd7VYR!rHEnfj^C6z7T?{+vc#1%ehCIHv6}x|vt_VEY zc^LCwpB{K~hvNa6@1)PnkVV2AZ#Qv*{VyhZWT>_fcF02d%q&?V$-UYVxp=%?CJSWt z@E084IvmfE)RzwkYaIUA`rddH+x)xzGhrhmWTv}^AAztWxl?1q&F}(QL}qdG!36?j zzPrCygRN=1m5Q+(pT}a_<|m3}tHi(y%X38t*4MEyoV$J3so(P40P+Imq*3oqWuOg5 z0qvz1i2}t~PP<=kxGVLci~Y!A2Ntn;xZLG3BGXbF=hIc9n-=~e;N%t{VdJi4O4qKv SKmr?GmlItklSvq=miQOK;BVUi diff --git a/obsolete/sources/NEW-EDIT-INTERFACE b/obsolete/sources/NEW-EDIT-INTERFACE deleted file mode 100644 index 2c6a174e..00000000 --- a/obsolete/sources/NEW-EDIT-INTERFACE +++ /dev/null @@ -1 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP") (FILECREATED "25-Jan-91 16:57:19" |{DSK}woz>SOURCES>NEW-EDIT-INTERFACE.;8| 6497 |changes| |to:| (FUNCTIONS XCL::EDIT-EXPRESSION XCL::EDIT-DEFINITION XCL::EDIT SEDIT::EDIT-EXPRESSION SEDIT::MYED) (VARS NEW-EDIT-INTERFACECOMS) |previous| |date:| " 3-Dec-90 18:01:41" |{DSK}woz>SOURCES>NEW-EDIT-INTERFACE.;1|) ; Copyright (c) 1990, 1991 by Venue. All rights reserved. (PRETTYCOMPRINT NEW-EDIT-INTERFACECOMS) (RPAQQ NEW-EDIT-INTERFACECOMS ((FUNCTIONS XCL::EDIT XCL::EDIT-DEFINITION XCL::EDIT-EXPRESSION))) (CL:DEFUN XCL::EDIT (CL:STRUCTURE XCL::PROPS XCL::OPTIONS) (* |;;;| "this is the new way to start the current editor, once you have all the props and options figured out.") (CL:UNLESS (CL:LISTP XCL::OPTIONS) (CL:SETQ XCL::OPTIONS (LIST XCL::OPTIONS))) (CL:FUNCALL (EDITMODE) CL:STRUCTURE XCL::PROPS XCL::OPTIONS)) (CL:DEFUN XCL::EDIT-DEFINITION (XCL::NAME TYPE &OPTIONAL XCL::SOURCE XCL::OPTIONS XCL::PROPS) (* |;;;| "this is a new version of IL:EDITDEF, consistent with the new definition of how to start the current editor. figure out how to get the definition (same as il:editdef), then build the necessary stuff to start the editor and have completion work properly. since we have a \"definition\" there is no need for a root-changed-fn, because putdef will be handed the right structure on completion anyway. Do not wait for completion, just return NAME.") (CL:UNLESS (CL:LISTP XCL::OPTIONS) (CL:SETQ XCL::OPTIONS (LIST XCL::OPTIONS))) (LET* ((XCL::DEFINITION (COND (XCL::SOURCE (GETDEF XCL::NAME TYPE XCL::SOURCE '(EDIT NOCOPY))) ((GETDEF XCL::NAME TYPE 'CURRENT '(EDIT NOCOPY NOERROR))) ((GETDEF XCL::NAME TYPE 'SAVED '(EDIT NOCOPY NOERROR))) (T (LET ((XCL::FILES (WHEREIS XCL::NAME TYPE T))) (CL:IF (NULL XCL::FILES) (CL:FORMAT T "~S has no ~A definition.~%" XCL::NAME TYPE) (LET ((XCL::FILE (PROGN (CL:FORMAT T "~S is contained on~{ ~S~}.~%" XCL::NAME XCL::FILES) (CL:IF (CL:ENDP (CDR XCL::FILES)) (CL:IF (CL:Y-OR-N-P "Shall I load this file PROP? " ) (CAR XCL::FILES)) (ASKUSER NIL NIL "indicate which file to load PROP: " (MAKEKEYLST XCL::FILES) T))))) (CL:WHEN XCL::FILE (LOAD XCL::FILE 'PROP) (GETDEF XCL::NAME TYPE '? '(EDIT NOCOPY))))))))) (XCL::USER-COMPLETION (LISTGET XCL::PROPS :COMPLETION-FN)) (XCL::COMPLETION-FN #'(CL:LAMBDA (XCL::CONTEXT XCL::NEW-DEF XCL::CHANGED?) (CL:WHEN XCL::USER-COMPLETION (CL:FUNCALL XCL::USER-COMPLETION XCL::CONTEXT XCL::NEW-DEF XCL::CHANGED?)) (CL:WHEN (EQ XCL::CHANGED? T) (* |;;| "don't reinstall on :ABORT or NIL (no changes)") (PUTDEF XCL::NAME TYPE XCL::NEW-DEF 'CHANGED))))) (CL:WHEN XCL::DEFINITION (XCL::EDIT XCL::DEFINITION (LIST :NAME XCL::NAME :TYPE TYPE :COMPLETION-FN XCL::COMPLETION-FN) XCL::OPTIONS)) XCL::NAME)) (CL:DEFUN XCL::EDIT-EXPRESSION (XCL::EXPR &OPTIONAL XCL::OPTIONS XCL::PROPS) (* |;;;| "similar to ED, but just a one-time un-named edit of an expression. start the editor with :close-on-completion, wait until the edit session completes, and return the structure. Copy the expression before starting the editor so that changes won't be destructive, then recreate eqness on completion. This way aborted changes will not be kept.") (CL:UNLESS (CL:CONSP XCL::EXPR) (CL:ERROR "~S - Not Editable. Must be a list expression." XCL::EXPR) (CL:RETURN-FROM XCL::EDIT-EXPRESSION NIL)) (CL:UNLESS (CL:LISTP XCL::OPTIONS) (CL:SETQ XCL::OPTIONS (LIST XCL::OPTIONS))) (LET* ((XCL::EVENT (CREATE.EVENT "EDIT-EXPRESSION Completion")) (XCL::USER-COMPLETION (LISTGET XCL::PROPS :COMPLETION-FN)) (XCL::NEW-EXPR NIL) (XCL::COMPLETION-FN #'(CL:LAMBDA (XCL::CONTEXT CL:STRUCTURE XCL::CHANGED?) (CL:WHEN XCL::USER-COMPLETION (CL:FUNCALL XCL::USER-COMPLETION XCL::CONTEXT CL:STRUCTURE XCL::CHANGED?)) (CL:WHEN (EQ XCL::CHANGED? T) (CL:SETQ XCL::NEW-EXPR CL:STRUCTURE)) (NOTIFY.EVENT XCL::EVENT)))) (XCL::EDIT (CL:COPY-TREE XCL::EXPR) (LIST :COMPLETION-FN XCL::COMPLETION-FN) (LIST* :CLOSE-ON-COMPLETION XCL::OPTIONS)) (CL:UNLESS (CL:MEMBER :DONTWAIT XCL::OPTIONS) (AWAIT.EVENT XCL::EVENT)) (CL:IF (AND XCL::NEW-EXPR (CL:CONSP XCL::NEW-EXPR)) (RPLNODE2 XCL::EXPR (CL:COPY-TREE XCL::NEW-EXPR)) XCL::EXPR))) (PUTPROPS NEW-EDIT-INTERFACE COPYRIGHT ("Venue" 1990 1991)) (DECLARE\: DONTCOPY (FILEMAP (NIL))) STOP \ No newline at end of file diff --git a/obsolete/sources/NEW-EDIT-INTERFACE.LCOM b/obsolete/sources/NEW-EDIT-INTERFACE.LCOM deleted file mode 100644 index db8f911d..00000000 --- a/obsolete/sources/NEW-EDIT-INTERFACE.LCOM +++ /dev/null @@ -1 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP") (FILECREATED "25-Jan-98 18:00:13" ("compiled on " |{DSK}sources>NEW-EDIT-INTERFACE.;1|) "30-Mar-95 20:33:04" |bcompl'd| |in| "Medley 14-Aug-95 ..." |dated| "14-Aug-95 15:27:48") (FILECREATED "25-Jan-91 16:57:19" |{DSK}woz>SOURCES>NEW-EDIT-INTERFACE.;8| 6497 |changes| |to:| (FUNCTIONS XCL::EDIT-EXPRESSION XCL::EDIT-DEFINITION XCL::EDIT SEDIT::EDIT-EXPRESSION SEDIT::MYED) ( VARS NEW-EDIT-INTERFACECOMS) |previous| |date:| " 3-Dec-90 18:01:41" |{DSK}woz>SOURCES>NEW-EDIT-INTERFACE.;1|) (PRETTYCOMPRINT NEW-EDIT-INTERFACECOMS) (RPAQQ NEW-EDIT-INTERFACECOMS ((FUNCTIONS XCL::EDIT XCL::EDIT-DEFINITION XCL::EDIT-EXPRESSION))) (CL:DEFUN XCL::EDIT (CL:STRUCTURE XCL::PROPS XCL::OPTIONS) (* |;;;| "this is the new way to start the current editor, once you have all the props and options figured out." ) (CL:UNLESS (CL:LISTP XCL::OPTIONS) (CL:SETQ XCL::OPTIONS (LIST XCL::OPTIONS))) (CL:FUNCALL (EDITMODE ) CL:STRUCTURE XCL::PROPS XCL::OPTIONS)) (CL:DEFUN XCL::EDIT-DEFINITION (XCL::NAME TYPE &OPTIONAL XCL::SOURCE XCL::OPTIONS XCL::PROPS) (* |;;;| "this is a new version of IL:EDITDEF, consistent with the new definition of how to start the current editor. figure out how to get the definition (same as il:editdef), then build the necessary stuff to start the editor and have completion work properly. since we have a \"definition\" there is no need for a root-changed-fn, because putdef will be handed the right structure on completion anyway. Do not wait for completion, just return NAME." ) (CL:UNLESS (CL:LISTP XCL::OPTIONS) (CL:SETQ XCL::OPTIONS (LIST XCL::OPTIONS))) (LET* ((XCL::DEFINITION (COND (XCL::SOURCE (GETDEF XCL::NAME TYPE XCL::SOURCE (QUOTE (EDIT NOCOPY)))) ((GETDEF XCL::NAME TYPE (QUOTE CURRENT) (QUOTE (EDIT NOCOPY NOERROR)))) ((GETDEF XCL::NAME TYPE (QUOTE SAVED) (QUOTE (EDIT NOCOPY NOERROR)))) (T (LET ((XCL::FILES (WHEREIS XCL::NAME TYPE T))) (CL:IF (NULL XCL::FILES) (CL:FORMAT T "~S has no ~A definition.~%" XCL::NAME TYPE) (LET ((XCL::FILE (PROGN (CL:FORMAT T "~S is contained on~{ ~S~}.~%" XCL::NAME XCL::FILES) (CL:IF (CL:ENDP (CDR XCL::FILES)) (CL:IF ( CL:Y-OR-N-P "Shall I load this file PROP? ") (CAR XCL::FILES)) (ASKUSER NIL NIL "indicate which file to load PROP: " (MAKEKEYLST XCL::FILES) T))))) (CL:WHEN XCL::FILE (LOAD XCL::FILE (QUOTE PROP)) (GETDEF XCL::NAME TYPE (QUOTE ?) (QUOTE (EDIT NOCOPY)))))))))) (XCL::USER-COMPLETION ( LISTGET XCL::PROPS :COMPLETION-FN)) (XCL::COMPLETION-FN (CL:FUNCTION (CL:LAMBDA (XCL::CONTEXT XCL::NEW-DEF XCL::CHANGED?) (CL:WHEN XCL::USER-COMPLETION (CL:FUNCALL XCL::USER-COMPLETION XCL::CONTEXT XCL::NEW-DEF XCL::CHANGED?)) (CL:WHEN (EQ XCL::CHANGED? T) (* |;;| "don't reinstall on :ABORT or NIL (no changes)") (PUTDEF XCL::NAME TYPE XCL::NEW-DEF (QUOTE CHANGED))) )))) (CL:WHEN XCL::DEFINITION (XCL::EDIT XCL::DEFINITION (LIST :NAME XCL::NAME :TYPE TYPE :COMPLETION-FN XCL::COMPLETION-FN) XCL::OPTIONS)) XCL::NAME)) (CL:DEFUN XCL::EDIT-EXPRESSION (XCL::EXPR &OPTIONAL XCL::OPTIONS XCL::PROPS) (* |;;;| "similar to ED, but just a one-time un-named edit of an expression. start the editor with :close-on-completion, wait until the edit session completes, and return the structure. Copy the expression before starting the editor so that changes won't be destructive, then recreate eqness on completion. This way aborted changes will not be kept." ) (CL:UNLESS (CL:CONSP XCL::EXPR) (CL:ERROR "~S - Not Editable. Must be a list expression." XCL::EXPR ) (CL:RETURN-FROM XCL::EDIT-EXPRESSION NIL)) (CL:UNLESS (CL:LISTP XCL::OPTIONS) (CL:SETQ XCL::OPTIONS (LIST XCL::OPTIONS))) (LET* ((XCL::EVENT (CREATE.EVENT "EDIT-EXPRESSION Completion")) ( XCL::USER-COMPLETION (LISTGET XCL::PROPS :COMPLETION-FN)) (XCL::NEW-EXPR NIL) (XCL::COMPLETION-FN ( CL:FUNCTION (CL:LAMBDA (XCL::CONTEXT CL:STRUCTURE XCL::CHANGED?) (CL:WHEN XCL::USER-COMPLETION ( CL:FUNCALL XCL::USER-COMPLETION XCL::CONTEXT CL:STRUCTURE XCL::CHANGED?)) (CL:WHEN (EQ XCL::CHANGED? T ) (CL:SETQ XCL::NEW-EXPR CL:STRUCTURE)) (NOTIFY.EVENT XCL::EVENT))))) (XCL::EDIT (CL:COPY-TREE XCL::EXPR ) (LIST :COMPLETION-FN XCL::COMPLETION-FN) (LIST* :CLOSE-ON-COMPLETION XCL::OPTIONS)) (CL:UNLESS ( CL:MEMBER :DONTWAIT XCL::OPTIONS) (AWAIT.EVENT XCL::EVENT)) (CL:IF (AND XCL::NEW-EXPR (CL:CONSP XCL::NEW-EXPR)) (RPLNODE2 XCL::EXPR (CL:COPY-TREE XCL::NEW-EXPR)) XCL::EXPR))) (PUTPROPS NEW-EDIT-INTERFACE COPYRIGHT ("Venue" 1990 1991)) NIL \ No newline at end of file diff --git a/obsolete/sources/POSTLOADUP b/obsolete/sources/POSTLOADUP deleted file mode 100644 index 3b6e5450..00000000 --- a/obsolete/sources/POSTLOADUP +++ /dev/null @@ -1,37 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") -(FILECREATED "16-May-90 21:05:36" {DSK}local>lde>lispcore>sources>POSTLOADUP.;2 870 - - changes to%: (VARS POSTLOADUPCOMS) - - previous date%: " 8-DEC-81 15:27:54" {DSK}local>lde>lispcore>sources>POSTLOADUP.;1) - - -(* ; " -Copyright (c) 1990 by Venue. All rights reserved. -") - -(PRETTYCOMPRINT POSTLOADUPCOMS) - -(RPAQQ POSTLOADUPCOMS - [(* set up so that files can be loaded directly from phylum) - (* turn off checking for dates of source) - (P (MOVD 'NILL 'LOADUP2A) - (CHANGENAME 'LOADUP2 'ASSOC 'TRUE]) - - - -(* set up so that files can be loaded directly from phylum) - - - - -(* turn off checking for dates of source) - - -(MOVD 'NILL 'LOADUP2A) - -(CHANGENAME 'LOADUP2 'ASSOC 'TRUE) -(PUTPROPS POSTLOADUP COPYRIGHT ("Venue" 1990)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL))) -STOP diff --git a/obsolete/sources/POSTLOADUP.LCOM b/obsolete/sources/POSTLOADUP.LCOM deleted file mode 100644 index e46fea2b..00000000 --- a/obsolete/sources/POSTLOADUP.LCOM +++ /dev/null @@ -1 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") (FILECREATED "26-Jan-98 13:27:16" ("compiled on " {DSK}disk2>jdstools>lc3>lispcore3.0>sources>POSTLOADUP.;1) "30-Mar-95 20:33:04" bcompl'd in "Medley 14-Aug-95 ..." dated "14-Aug-95 15:27:48") (FILECREATED "16-May-90 21:05:36" {DSK}local>lde>lispcore>sources>POSTLOADUP.;2 870 changes to%: (VARS POSTLOADUPCOMS) previous date%: " 8-DEC-81 15:27:54" {DSK}local>lde>lispcore>sources>POSTLOADUP.;1) (PRETTYCOMPRINT POSTLOADUPCOMS) (RPAQQ POSTLOADUPCOMS ((* set up so that files can be loaded directly from phylum) (* turn off checking for dates of source) (P (MOVD (QUOTE NILL) (QUOTE LOADUP2A)) (CHANGENAME (QUOTE LOADUP2) ( QUOTE ASSOC) (QUOTE TRUE))))) (MOVD (QUOTE NILL) (QUOTE LOADUP2A)) (CHANGENAME (QUOTE LOADUP2) (QUOTE ASSOC) (QUOTE TRUE)) (PUTPROPS POSTLOADUP COPYRIGHT ("Venue" 1990)) NIL \ No newline at end of file diff --git a/obsolete/sources/SUNFONT b/obsolete/sources/SUNFONT deleted file mode 100644 index c449f5e4..00000000 --- a/obsolete/sources/SUNFONT +++ /dev/null @@ -1,32 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP") -(FILECREATED "28-Jan-98 10:46:39" |{DSK}disk2>jdstools>lc3>lispcore3.0>SUNLOADUP>SUNFONT.;2| 1164 - - |changes| |to:| (VARS DISPLAYFONTDIRECTORIES) - - |previous| |date:| "24-Jan-90 15:53:22" -|{DSK}disk2>jdstools>lc3>lispcore3.0>SUNLOADUP>SUNFONT.;1|) - - -; Copyright (c) 1990, 1998 by John Sybalsky. All rights reserved. - -(PRETTYCOMPRINT SUNFONTCOMS) - -(RPAQQ SUNFONTCOMS ((VARS DISPLAYFONTDIRECTORIES))) - -(RPAQQ DISPLAYFONTDIRECTORIES ( - "{DSK}~/lispcore/fonts/display/presentation/" - - "{DSK}~/lispcore/fonts/display/PRINTWHEEL/" - - "{DSK}~/lispcore/fonts/display/publishing/" - - "{DSK}~/lispcore/fonts/display/miscellaneous/" - )) -(PUTPROPS SUNFONT COPYRIGHT ("John Sybalsky" 1990 1998)) -(DECLARE\: DONTCOPY - (FILEMAP (NIL))) -STOP - - - - diff --git a/obsolete/sources/SYNCLISPFILES b/obsolete/sources/SYNCLISPFILES deleted file mode 100644 index 6f003db6..00000000 --- a/obsolete/sources/SYNCLISPFILES +++ /dev/null @@ -1 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") (FILECREATED " 6-Feb-2021 15:19:48" {DSK}larry>ilisp>medley>sources>SYNCLISPFILES.;2 7670 changes to%: (FNS SYNCLISPFILES) previous date%: " 5-Feb-2021 15:41:04" {DSK}larry>ilisp>medley>sources>SYNCLISPFILES.;1 ) (PRETTYCOMPRINT SYNCLISPFILESCOMS) (RPAQQ SYNCLISPFILESCOMS ((FNS) (FNS SYNCLISPFILES NOPUPPATCH))) (DEFINEQ (SYNCLISPFILES [LAMBDA (NOSYSLOAD) (* ; "Edited 6-Feb-2021 15:16 by larry") (* ; "Edited 5-Feb-2021 15:40 by lmm") (* ;  "Edited 23-Oct-2020 23:51 by rmk:") (* ;  "Edited 20-Apr-2018 18:28 by rmk:") (* ;; "This ensures that files in the xlisp.sysout are as up-to-date as possible with respect to sources. Reload (compiled, if possible) files that correspond to symbolic files whose filedates are later than the filedate in the system. If you want a new compilation of a file that has not been modified to be included, then you must make a trivial update of the symbolic file and recompile it, to give it a new, later date. This is because it is unsafe as a general default to load compiled files with dates later than the sysout, and the sysout doesn't record the dates of loaded compiled files, just their symbolic versions.") (* ;; " Should be run while connected to MEDLEYDIR") (LET ((SKIPFILES '(SYNCLISPFILES)) (SOURCEDIR (MEDLEYDIR "sources"))) (* ;;  "FASLOAD has to come first, unconditionally, to get the DFASL file dates converted properly.") (PRINTOUT T T "Synchronizing Lisp sysout at " (DATE) T) (PRINTOUT T 5 (CDAR (GETP 'SYNCLISPFILES 'FILEDATES)) T 5 "created " (CAAR (GETP 'SYNCLISPFILES 'FILEDATES)) T T) (* ;;  "FASLOAD has to come first, unconditionally, to get the DFASL file dates converted properly.") (push SKIPFILES 'FASLOAD) (LOAD (MEDLEYDIR "sources" "FASLOAD.DFASL") (IF NOSYSLOAD THEN NIL ELSE 'SYSLOAD)) (push SKIPFILES 'ATBL) (* ;  "Whole file can't be reloaded--smashes readtabl") (LOADFNS '(\ATBLSET \MAPCHARTABLE RESETREADTABLE) (MEDLEYDIR "sources" "ATBL.LCOM") 'SYSLOAD) (LOADVARS '\KEYNAMES (MEDLEYDIR "sources" "LLKEY") 'SYSLOAD) (* ; "Extended keynames for Mac/PC") (push SKIPFILES 'LLKEY) (* ; "Loading whole file freezes") (push SKIPFILES 'MAIKOLOADUPFNS) (* ;  "Can't reload even if compiled files are later") (push SKIPFILES 'SUNFONT) (* ;  "Old font organization, not relevant") (for LF FF CFILE LOADEDDATE FILEDATE IFILEDATE NOCOMPILEDFILES CFILES (COUNT _ 0) in (LDIFFERENCE SYSFILES SKIPFILES) do [SETQ LOADEDDATE (CAAR (GETP LF 'FILEDATES] (* ;  "Date of symbolic file whose compile file was loaded") (CL:UNLESS LOADEDDATE (PRINTOUT T T LF " does not have a loaded filedate, probably not a Lisp file; skipped" T) (GO $$ITERATE)) (SETQ FF (PACKFILENAME.STRING 'NAME LF 'BODY SOURCEDIR)) (SETQ FILEDATE (FILEDATE FF)) (* ; "Date of current source file") (CL:UNLESS FILEDATE (PRINTOUT T LF " does not have a file-directory date, not updated" T) (GO $$ITERATE)) (SETQ CFILES (for EXT in *COMPILED-EXTENSIONS* when (SETQ CFILE (INFILEP (PACKFILENAME.STRING 'EXTENSION EXT 'BODY FF))) collect CFILE) ) (SETQ CFILE (COND [CFILES (* ;;  "If more than one (LCOM, DFASL), pick the newest one.") (for CF in CFILES largest (IDATE (FILEDATE CF T] (T (PRINTOUT T "Note: No compiled file for " LF T) (push NOTCOMPILEDFILES LF) FF))) (SETQ IFILEDATE (IDATE FILEDATE)) (CL:UNLESS (IGREATERP IFILEDATE 0) (PRINTOUT T "Funny file date " FILEDATE " for " LF ", not updated" T) (GO $$ITERATE)) (* ;; "Load the compiled file if the date of the symbolic file is later than the symbolic file-date in the sysout. If an updated source and compiled file were copied from another directory, we update the FILEDATES property to point to the new location. If the loaded and file dates are the same, then update the FILEDATES property to point to the possibly new path name and version even if we don't need to load.") (SETQ LOADEDDATE (IDATE LOADEDDATE)) (if (IGREATERP IFILEDATE LOADEDDATE) then (add COUNT 1) (* ;; " FINALLY do the load") (LOAD CFILE (if NOSYSLOAD then NIL else 'SYSLOAD)) (CL:WHEN [STREQUAL FILEDATE (CAAR (GETP LF 'FILEDATES] (* ;; "If copied, the compiled file may install the original location. Not sure what happens with copied DFASLs") (RPLACD (CAR (GETP LF 'FILEDATES)) (INFILEP FF))) elseif (IEQP IFILEDATE LOADEDDATE) then (RPLACD (CAR (GETP LF 'FILEDATES)) (INFILEP FF))) finally (PRINTOUT T T T COUNT " files loaded" T) (CL:WHEN NOCOMPILEDFILES (PRINTOUT T "Symbolic files loaded: " .PPVTL NOCOMPILEDFILES T T))) (NOPUPPATCH]) (NOPUPPATCH [LAMBDA NIL (* ;  "Edited 14-May-2018 12:22 by rmk:") (* ;; "Fix it so pup stuff never gets run") (SETQ \PROCESSES (DREMOVE (FIND.PROCESS '\PUPGATELISTENER) \PROCESSES)) (SETQ \FILEDEVICES (for F in \FILEDEVICES unless (STRPOS "LEAF" F) collect F)) (MOVD 'NILL '\CANONICALIZE.PUP.HOSTNAME]) ) (PUTPROPS SYNCLISPFILES COPYRIGHT (NONE)) (DECLARE%: DONTCOPY (FILEMAP (NIL (449 7605 (SYNCLISPFILES 459 . 7113) (NOPUPPATCH 7115 . 7603))))) STOP \ No newline at end of file diff --git a/obsolete/sources/SYNCLISPFILES.LCOM b/obsolete/sources/SYNCLISPFILES.LCOM deleted file mode 100644 index ef7cdd666e6a6d4660ce56cf7229bf1c79a91dc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3593 zcmbVP-ESjT6^|2&fYwoxmSr2Q!qKQicC;~`Pmf&`G3yy8vmVd&dM3+e74Ui!ckQh= zj_jn8LA+Fb=1cIvUx0W^wu%H4;Xj}+MdGFZMGG&yRONT?%=ja_fYf=Ix%ZrNf9LDo zd(LERr{em~cE$CaZP%|b+GseI9a?uhha}ezordQIb%{3WR=H~J&JnZe3}08qiqNr1 zB4fMKe!Q*Z6`5qcBo|A%E>T80>OVW}_S(nPKY>vCXLeBi`42k%XYHL{YcLq?bbH<5 z>CUtEaj!kv8TQWyNA2NGaNw7@YOW#3y{%-iw76}Z4uGG}lWdmqa!FMr8nh?)N1fKm zllJg?B}&gNr!ExN1U{)bohs+O9t9()IwO*&M(1)liH=)mFjbnRD@sX)K2!St9&4sV zU(G=(7==8gV;|_O4>vLuKcG2RvUECVzt`=b4~3zSkw~9#~gnqH zuijm{I*Nl6f2y(Bv#!M~_Qvz?&yv|25u?-Xbkkqwz~gzW*F}(5Qino&6w6d|`NPdv z%=@ppE>pi1YdrCGU*q6E7D;TbeE8k}weIjow^ywdc5~@!>HW)vU$FJH=8db-tl7!x z#E3^6eEmE8J+A$Ytwd_po__wD%Y{G9E@Ue&u{S}R6^xKC7d~0FzRjeis|tH-?cxuq zCXIzVjKrrVyb{`ea<%l!=Ej)ax_X^$bk>`F#m z_HB(>=67t1W&ZVhw$;px*=F;tF_RXX(#5aXawM}nW^2c6`Sa(u$JKZL@sU5j&Bkmc z3U8bk@%ex)fBN*Z=Qn0KHG%f#`0nDv%P;=EkTG?YP)2a@appCHcAXFdr9eU0aPI9} z9wzyinm5EfK!t)%uDA;dDsGK{lEboz8loJsZ;fM`V3y~QiN;;_qCM^nVDH$Mpce#j!`h_4zmx) zD9F4vMiqy2qllD+NiE`Q0}$00iJGBB02w%|f?}fj?W0daT~rDR z)hxHlcwG1EBIdyIysC46Bxw^96;-1{5IH#VqD(n*(I6|l zDKg6ITsK06=`jrmF3)ihMI1(zq}z1TKcn+g(ORKRltH6+`UBp(6cv&x=O-s4dIvqC zXlgha36lK&S-V7jpC%2S5Q!FQMGkV@Zx01{r}bW&S^{JHxQm|ftUnkDw0Y%e($vCB z7WVqBW3+u-0k`rt+N}QL*5lqtpts0Fiz>Kp)9~Hy>1q2|!nuO&!RXoJey@8Zm_v$i zN<>ncRGbF*3CM&l;k;-hi4pE>00zzONFX4T7k zRwL@u8xClbwmq9B89PIYQ<$^)0PQSpgsCzaJ)3kiXve)SH#8WX9CZf$lkQKuCr=`O zhf#~%I)fXt#=w;ML}$}8*HhdwVrOJ&q4^4Gr>JS7Qas|NR8$jDRK;}F`r6*o)tl~` zAPHIV5@IW2Hm?;t2EZ4Cg!od2q9|$zn^@E1HyBAUhF>oLWf7AZ~y`ED@ diff --git a/obsolete/sources/XMAS b/obsolete/sources/XMAS deleted file mode 100644 index f6a6705d..00000000 --- a/obsolete/sources/XMAS +++ /dev/null @@ -1 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") (FILECREATED " 3-Oct-91 20:16:54" |{PELE:MV:ENVOS}SOURCES>XMAS.;1| 160511 changes to%: (RECORDS XSCREEN) (FNS CREATEXSCREEN) previous date%: " 2-Oct-91 15:15:20" {DSK}nilsson>xmas-split>XMAS.;3) (* ; " Copyright (c) 1991 by Venue. All rights reserved. ") (PRETTYCOMPRINT XMASCOMS) (RPAQQ XMASCOMS [(RECORDS XSCREEN SCREENREGION) (INITVARS XLIB::*DISPLAY* XLIB::*SCREEN* XLIB::*ROOT* XLIB::*BLACK* XLIB::*WHITE* XLIB::*DEFAULTFONT* (XLIB::*DEFAULT-FONT-NAME* "FIXED") XLIB::*GC* XLIB::*COLORMAP*) (MACROS \XCURVESMOOTH) (FNS XLIB::SETUP-CLX) (FNS \XDISPLAYINIT CREATEXSCREEN BITSPERPIXEL BITMAPHEIGHT BITMAPWIDTH DSPDESTINATION XDSPCREATE \DSPOPERATION.XDISPLAY \DSPRESET.XDISPLAY \BLTSHADE.XDISPLAY \BITBLT.XDISPLAY \XBITBLTSUB \XBLTSHADE.PIXMAP \XBITBLT.PIXMAP \DRAWPOINT.XDISPLAY \DRAWLINE.XDISPLAY \XLINEWITHBRUSH \DRAWCIRCLE.XDISPLAY \DRAWCURVE.XDISPLAY \XCURVE2 \XCURVE) (FNS BITBLT) (FNS XCREATEWFROMPIXMAP PIXMAPCREATE PIXMAPWIDTH PIXMAPHEIGHT) (FNS XCREATEW ADVISEXWDS XOPENW \XOPENW1 XCLOSEW \XCLOSEW1 \XSFFixClippingRegion XSHOWWFRAME XSHOWWTITLE \XCREATEBASEW \DSPCLIPPINGREGION.XDISPLAY) (FNS \XDSPPRINTCHAR \XBLTCHAR \XDSPPRINTCR/LF) (FNS OPENWINDOWS \INSURESCREEN DSPSOURCETYPE PUTWINDOWPROP RESHOWBORDER \XRESHOWBORDER1 \GETWINDOWHEIGHT) (FNS XWHICHW) (FNS TOTOPW) (FNS XSHAPEW1 XMOVEW XMOVEW1 XMOVEORRESIZED.WINDOW XMOVED.WINDOW) (INITVARS (\XSCREEN NIL)) [ADDVARS (\DISPLAYSTREAMTYPES XDISPLAY) (IMAGESTREAMTYPES (XDISPLAY (OPENSTREAM NILL) (FONTCREATE \CREATEXDISPLAYFONT) (FONTSAVAILABLE NILL) (CREATECHARSET NILL] (FILES XLLKEY XLLBITMAP XLLCURSOR XLLMOUSE XLLFONT XSERVER XWATCHER) (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA) (NLAML) (LAMA XLIB::SETUP-CLX]) (DECLARE%: EVAL@COMPILE (DATATYPE XSCREEN (SCONOFF SCDESTINATION SCTOPW SCTOPWDS SCTITLEDS SCFDEV SCDS SCDATA (* ;; "Access fns and their caches.") \SCBITSPERPIXELCACHE (* ; "The cache for pixeldepth.") \GETSCBITSPERPIXEL (* ; "The access function for pixdepth. This function must return a number, larger than 0. This function is applied to the screen structure.") \SCWIDTHCACHE (* ; "The screenwidth cache. ") \GETSCWIDTH (* ; "The access function for screenwidth. This function must return a number, larger than 0. This function is applied to the screen structure.") \SCHEIGHTCACHE (* ; "The screenheigth cache. ") \GETSCHEIGHT (* ; "The access function for screenheigth. This function must return a number, larger than 0. This function is applied to the screen structure") CREATEWFN OPENWFN CLOSEWFN) SCONOFF _ 'OFF (* ;; "The function for getting the pixeldepth of the screen.") [ACCESSFNS ((SCBITSPERPIXEL (OR \SCBITSPERPIXELCACHE (replace (XSCREEN \SCBITSPERPIXELCACHE) of DATUM with (APPLY (fetch (XSCREEN \GETSCBITSPERPIXEL ) of DATUM) (LIST DATUM))) (SHOULDNT "Pixel depth of screen is NIL")) (replace (XSCREEN \SCBITSPERPIXELCACHE) of DATUM with NEWVALUE)) (SCWIDTH (OR \SCWIDTHCACHE (replace (XSCREEN \SCWIDTHCACHE) of DATUM with (APPLY (fetch (XSCREEN \GETSCWIDTH ) of DATUM) (LIST DATUM))) (SHOULDNT "Width of screen is NIL")) (replace (XSCREEN \SCWIDTHCACHE) of DATUM with NEWVALUE)) (SCHEIGHT (OR \SCHEIGHTCACHE (replace (XSCREEN \SCHEIGHTCACHE) of DATUM with (APPLY (fetch (XSCREEN \GETSCHEIGHT ) of DATUM) (LIST DATUM))) (SHOULDNT "Heigth of screen is NIL")) (replace (XSCREEN \SCHEIGHTCACHE) of DATUM with NEWVALUE)) (SCREGION (create REGION LEFT _ 0 BOTTOM _ 0 (* ; "Behold clever recursion.") WIDTH _ (fetch (XSCREEN SCWIDTH) of DATUM) (* ; "Dito.") HEIGHT _ (fetch (XSCREEN SCHEIGHT) of DATUM] (SYSTEM)) (RECORD SCREENREGION (SCREEN . REGION) (SUBRECORD REGION) [TYPE? (AND (LISTP DATUM) (type? SCREEN (CAR DATUM)) (type? REGION (CDR DATUM] (SYSTEM)) ) (/DECLAREDATATYPE 'XSCREEN '(POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER) '((XSCREEN 0 POINTER) (XSCREEN 2 POINTER) (XSCREEN 4 POINTER) (XSCREEN 6 POINTER) (XSCREEN 8 POINTER) (XSCREEN 10 POINTER) (XSCREEN 12 POINTER) (XSCREEN 14 POINTER) (XSCREEN 16 POINTER) (XSCREEN 18 POINTER) (XSCREEN 20 POINTER) (XSCREEN 22 POINTER) (XSCREEN 24 POINTER) (XSCREEN 26 POINTER) (XSCREEN 28 POINTER) (XSCREEN 30 POINTER) (XSCREEN 32 POINTER)) '34) (RPAQ? XLIB::*DISPLAY* NIL) (RPAQ? XLIB::*SCREEN* NIL) (RPAQ? XLIB::*ROOT* NIL) (RPAQ? XLIB::*BLACK* NIL) (RPAQ? XLIB::*WHITE* NIL) (RPAQ? XLIB::*DEFAULTFONT* NIL) (RPAQ? XLIB::*DEFAULT-FONT-NAME* "FIXED") (RPAQ? XLIB::*GC* NIL) (RPAQ? XLIB::*COLORMAP* NIL) (DECLARE%: EVAL@COMPILE (PUTPROPS \XCURVESMOOTH MACRO (OPENLAMBDA (NEWX NEWY USERFN DISPLAYSTREAM) (PROG [(DX (IABS (IDIFFERENCE NEWX \OLDX))) (DY (IABS (IDIFFERENCE NEWY \OLDY] (COND ((OR (IGREATERP DX 1) (IGREATERP DY 1)) [COND ((NEQ [IPLUS (ADD1 (IDIFFERENCE \OLDX \OLDERX)) (ITIMES 3 (ADD1 (IDIFFERENCE \OLDY \OLDERY] 4) [COND (DASHON (COND (USERFN (APPLY* USERFN \OLDX \OLDY DISPLAYSTREAM)) (T (DRAWPOINT \OLDX \OLDY BRUSHBM DISPLAYSTREAM] (COND (DASHTAIL (COND ((EQ 0 (SETQ DASHCNT (SUB1 DASHCNT))) (SETQ DASHON (NOT DASHON)) (SETQ DASHTAIL (OR (LISTP (CDR DASHTAIL)) DASHLST)) (SETQ DASHCNT (CAR DASHTAIL] (SETQ \OLDERX \OLDX) (SETQ \OLDERY \OLDY) (SETQ \OLDX \CURX) (SETQ \OLDY \CURY))) (SETQ \CURX NEWX) (SETQ \CURY NEWY)))) ) (DEFINEQ (XLIB::SETUP-CLX [CL:LAMBDA (&OPTIONAL (XLIB:DISPLAY "unix:0.0")) (* ; "Edited 11-Sep-91 19:29 by jn") (CL:BLOCK XLIB::SETUP-CLX (LET ((XLIB::HOST-PORT (XSERVERNAME XLIB:DISPLAY))) (CL:SETQ XLIB::*DISPLAY* (XLIB:OPEN-DISPLAY (CAR XLIB::HOST-PORT) :DISPLAY (CDR XLIB::HOST-PORT))) (CL:SETQ XLIB::*SCREEN* (XLIB:DISPLAY-DEFAULT-SCREEN XLIB::*DISPLAY*)) (CL:SETQ XLIB::*BLACK* (XLIB:SCREEN-BLACK-PIXEL XLIB::*SCREEN*)) (CL:SETQ XLIB::*WHITE* (XLIB:SCREEN-WHITE-PIXEL XLIB::*SCREEN*)) (CL:SETQ XLIB::*COLORMAP* (XLIB:SCREEN-DEFAULT-COLORMAP XLIB::*SCREEN*)) (CL:SETQ XLIB::*ROOT* (XLIB:SCREEN-ROOT XLIB::*SCREEN*)) (CL:SETQ XLIB::*DEFAULTFONT* (XLIB:OPEN-FONT XLIB::*DISPLAY* XLIB::*DEFAULT-FONT-NAME*)) (CL:SETQ XLIB::*GC* (XLIB:CREATE-GCONTEXT :DRAWABLE XLIB::*ROOT*)) (CL:SETF (XLIB:DISPLAY-AFTER-FUNCTION XLIB::*DISPLAY*) #'XLIB:DISPLAY-FINISH-OUTPUT)))]) ) (DEFINEQ (\XDISPLAYINIT [LAMBDA NIL (DECLARE (GLOBALVARS XDisplayFDEV \XDISPLAYIMAGEOPS \XDisplayDeviceMethods \XDisplayDeviceData)) (* ; "Edited 16-Feb-91 15:03 by matsuda") (SETQ \XDisplayDeviceMethods (create WSOPS)) (SETQ \XDisplayDeviceData (create WSDATA WSDESTINATION _ "Destination" WSREGION _ (create REGION LEFT _ 0 BOTTOM _ 0 WIDTH _ 1024 HEIGHT _ 808))) (SETQ \XDISPLAYIMAGEOPS (create IMAGEOPS IMAGETYPE _ 'XDISPLAY IMFONT _ (FUNCTION \DSPFONT.XDISPLAY) IMLEFTMARGIN _ (FUNCTION \DSPLEFTMARGIN.DISPLAY) IMRIGHTMARGIN _ (FUNCTION \DSPRIGHTMARGIN.DISPLAY) IMLINEFEED _ (FUNCTION \DSPLINEFEED.DISPLAY) IMXPOSITION _ (FUNCTION \DSPXPOSITION.DISPLAY) IMYPOSITION _ (FUNCTION \DSPYPOSITION.DISPLAY) IMCLOSEFN _ (FUNCTION NILL) IMDRAWCURVE _ (FUNCTION \DRAWCURVE.XDISPLAY) IMFILLCIRCLE _ '\FILLCIRCLE.XDISPLAY IMDRAWLINE _ (FUNCTION \DRAWLINE.XDISPLAY) IMDRAWELLIPSE _ (FUNCTION \DRAWELLIPSE.XDISPLAY) IMDRAWCIRCLE _ (FUNCTION \DRAWCIRCLE.XDISPLAY) IMFILLPOLYGON _ (FUNCTION POLYSHADE.XDISPLAY) IMBITBLT _ (FUNCTION \BITBLT.XDISPLAY) IMSCALEDBITBLT _ (FUNCTION \SCALEDBITBLT.XDISPLAY) IMBLTSHADE _ (FUNCTION \BLTSHADE.XDISPLAY) IMNEWPAGE _ (FUNCTION \NEWPAGE.XDISPLAY) IMSCALE _ [FUNCTION (LAMBDA NIL 1] IMSPACEFACTOR _ (FUNCTION NILL) IMFONTCREATE _ 'XDISPLAY IMCOLOR _ (FUNCTION NILL) IMBACKCOLOR _ (FUNCTION \BACKCOLOR.XDISPLAY) IMOPERATION _ (FUNCTION \DSPOPERATION.XDISPLAY) IMSTRINGWIDTH _ (FUNCTION \STRINGWIDTH.XDISPLAY) IMCHARWIDTH _ (FUNCTION \CHARWIDTH.XDISPLAY) IMCLIPPINGREGION _ (FUNCTION \DSPCLIPPINGREGION.XDISPLAY) IMRESET _ (FUNCTION \DSPRESET.XDISPLAY) IMDRAWARC _ (FUNCTION \DRAWARC.XDISPLAY) IMDRAWPOLYGON _ (FUNCTION \DRAWPOLYGON.XDISPLAY) IMDRAWPOINT _ (FUNCTION \DRAWPOINT.XDISPLAY))) (SETQ XDisplayFDEV (create FDEV DEVICENAME _ 'XDISPLAY RESETABLE _ NIL RANDOMACCESSP _ NIL PAGEMAPPED _ NIL CLOSEFILE _ (FUNCTION NILL) DELETEFILE _ (FUNCTION NILL) GETFILEINFO _ (FUNCTION NILL) OPENFILE _ [FUNCTION (LAMBDA (NAME ACCESS RECOG OTHERINFO FDEV) NAME] READPAGES _ (FUNCTION \ILLEGAL.DEVICEOP) SETFILEINFO _ (FUNCTION NILL) GENERATEFILES _ (FUNCTION \GENERATENOFILES) TRUNCATEFILE _ (FUNCTION NILL) WRITEPAGES _ (FUNCTION \ILLEGAL.DEVICEOP) GETFILENAME _ [FUNCTION (LAMBDA (NAME RECOG FDEV) NAME] REOPENFILE _ [FUNCTION (LAMBDA (NAME) NAME] EVENTFN _ (FUNCTION \XDisplayEventFn) DIRECTORYNAMEP _ (FUNCTION NILL) HOSTNAMEP _ (FUNCTION NILL) BIN _ (FUNCTION \ILLEGAL.DEVICEOP) BOUT _ (FUNCTION \DSPPRINTCHAR) PEEKBIN _ (FUNCTION \ILLEGAL.DEVICEOP) BACKFILEPTR _ (FUNCTION \PAGEDBACKFILEPTR) BLOCKIN _ (FUNCTION \ILLEGAL.DEVICEOP) BLOCKOUT _ (FUNCTION \NONPAGEDBOUTS) WINDOWOPS _ \DisplayDeviceMethods WINDOWDATA _ \DisplayDeviceData DEVICEINFO _ (create DISPLAYSTATE))) (\DEFINEDEVICE 'XDISPLAY XDisplayFDEV]) (CREATEXSCREEN [LAMBDA (DESTINATION) (* ; "Edited 3-Oct-91 20:15 by jn") (PROG (TITLEDS SCREEN) (SETQ TITLEDS (XDSPCREATE DESTINATION)) (* ; "Create TITLEDS. ") (DSPOPERATION 'INVERT TITLEDS) (DSPFONT XWINDOWTITLEFONT TITLEDS) (DSPRIGHTMARGIN MAX.SMALLP TITLEDS) (* ;  "Set right margin so title doesn't autoCR. ") (* ;; "now create SCREEN. ") [SETQ SCREEN (create XSCREEN SCONOFF _ 'OFF SCDESTINATION _ DESTINATION SCTOPW _ NIL SCTITLEDS _ TITLEDS (* ;; "Cached fns.") \GETSCWIDTH _ '[LAMBDA (DATUM) (XLIB:DRAWABLE-WIDTH (fetch (XSCREEN SCDESTINATION ) of DATUM] \GETSCHEIGHT _ '[LAMBDA (DATUM) (XLIB:DRAWABLE-HEIGHT (fetch (XSCREEN SCDESTINATION ) of DATUM] \GETSCBITSPERPIXEL _ '(LAMBDA (DATUM) (XLIB:DRAWABLE-DEPTH (fetch (XSCREEN SCDESTINATION ) of DATUM] (RETURN SCREEN]) (BITSPERPIXEL [LAMBDA (BITMAP) (* ; "Edited 31-Jan-91 14:24 by matsuda") (* ;; "returns the height in pixels of a bitmap.") (COND ((type? BITMAP BITMAP) (fetch (BITMAP BITMAPBITSPERPIXEL) of BITMAP)) ((XLIB:DRAWABLE-P BITMAP) (XLIB:DRAWABLE-DEPTH BITMAP)) ((type? SCREEN BITMAP) (BITSPERPIXEL (fetch (SCREEN SCDESTINATION) of BITMAP))) ((type? XSCREEN BITMAP) (BITSPERPIXEL (fetch (XSCREEN SCDESTINATION) of BITMAP))) ((type? WINDOW BITMAP) (BITSPERPIXEL (fetch (WINDOW SCREEN) of BITMAP))) ((ARRAYP BITMAP) (* ;  "Consider array to be a colormap.") (SELECTQ (ARRAYSIZE BITMAP) (256 8) (16 4) (LISPERROR "ILLEGAL ARG" BITMAP))) (T (LISPERROR "ILLEGAL ARG" BITMAP]) (BITMAPHEIGHT [LAMBDA (BITMAP) (* ; "Edited 17-Jul-91 08:44 by matsuda") (* ;; "returns the height in pixels of a bitmap.") (COND ((type? BITMAP BITMAP) (fetch (BITMAP BITMAPHEIGHT) of BITMAP)) ((XLIB:DRAWABLE-P BITMAP) (XLIB:DRAWABLE-HEIGHT BITMAP)) ((type? WINDOW BITMAP) (WINDOWPROP BITMAP 'HEIGHT)) (T (\ILLEGAL.ARG BITMAP]) (BITMAPWIDTH [LAMBDA (BITMAP) (* ; "Edited 17-Jul-91 08:42 by matsuda") (* ;; "returns the width of a bitmap in pixels") (COND ((type? BITMAP BITMAP) (ffetch (BITMAP BITMAPWIDTH) of BITMAP)) ((XLIB:DRAWABLE-P BITMAP) (XLIB:DRAWABLE-WIDTH BITMAP)) ((type? WINDOW BITMAP) (WINDOWPROP BITMAP 'WIDTH)) (T (\ILLEGAL.ARG BITMAP]) (DSPDESTINATION [LAMBDA (DESTINATION DISPLAYSTREAM) (* ; "Edited 31-Jan-91 14:46 by matsuda") (DECLARE (GLOBALVARS \DISPLAYIMAGEOPS \4DISPLAYIMAGEOPS \8DISPLAYIMAGEOPS \24DISPLAYIMAGEOPS \XDISPLAYIMAGEOPS)) (PROG (DD) (SETQ DD (\GETDISPLAYDATA DISPLAYSTREAM DISPLAYSTREAM)) (RETURN (PROG1 (ffetch (\DISPLAYDATA DDDestination) of DD) [COND (DESTINATION (COND ((XLIB:DRAWABLE-P DESTINATION) (* ; "XDISPLAY case ") (UNINTERRUPTABLY (replace (STREAM DEVICE) of DISPLAYSTREAM with XDisplayFDEV) (replace (STREAM IMAGEOPS) of DISPLAYSTREAM with \XDISPLAYIMAGEOPS) (freplace (\DISPLAYDATA DDDestination) of DD with DESTINATION))) (T (* ; "LFDISPLAY case") (SETQ DESTINATION (\DTEST DESTINATION 'BITMAP)) (UNINTERRUPTABLY (replace (STREAM DEVICE) of DISPLAYSTREAM with (SELECTQ (fetch (BITMAP BITMAPBITSPERPIXEL ) of DESTINATION) (1 DisplayFDEV) (4 \4DISPLAYFDEV) (8 \8DISPLAYFDEV) (24 \24DISPLAYFDEV) (SHOULDNT))) (replace (STREAM IMAGEOPS) of DISPLAYSTREAM with (SELECTQ (fetch (BITMAP BITMAPBITSPERPIXEL ) of DESTINATION) (1 \DISPLAYIMAGEOPS) (4 \4DISPLAYIMAGEOPS) (8 \8DISPLAYIMAGEOPS) (24 \24DISPLAYIMAGEOPS) (SHOULDNT))) (freplace (\DISPLAYDATA DDDestination) of DD with DESTINATION) (\SFFixDestination DD DISPLAYSTREAM))])]) (XDSPCREATE [LAMBDA (DESTINATION) (* ; "Edited 15-Feb-91 18:29 by matsuda") (LET (DSTRM GC) (COND ((XLIB:DRAWABLE-P DESTINATION) (SETQ DSTRM (create STREAM USERCLOSEABLE _ NIL OUTCHARFN _ (FUNCTION \XDSPPRINTCHAR) IMAGEDATA _ (create \DISPLAYDATA) IMAGEOPS _ \XDISPLAYIMAGEOPS DEVICE _ XDisplayFDEV ACCESS _ 'OUTPUT)) (replace (\DISPLAYDATA DDPILOTBBT) of (fetch (STREAM IMAGEDATA) of DSTRM) with (SETQ GC (XLIB:CREATE-GCONTEXT :DRAWABLE DESTINATION))) (CL:SETF (XLIB:GCONTEXT-FOREGROUND GC) XLIB::*BLACK*) (* ; "temp foreground color ") (CL:SETF (XLIB:GCONTEXT-BACKGROUND GC) XLIB::*WHITE*) (* ; "temp background color") (DSPFONT XDEFAULTFONT DSTRM) (DSPDESTINATION DESTINATION DSTRM) (DSPRIGHTMARGIN (MAX SCREENWIDTH (XLIB:DRAWABLE-WIDTH DESTINATION)) DSTRM) (DSPSOURCETYPE 'INPUT DSTRM) (DSPOPERATION 'REPLACE DSTRM) DSTRM) (T NIL]) (\DSPOPERATION.XDISPLAY [LAMBDA (DISPLAYSTREAM OPERATION) (* ; "Edited 15-Feb-91 12:32 by matsuda") (* ;; "sets the operation field of a display stream") (PROG ((DD (\GETDISPLAYDATA DISPLAYSTREAM))) (RETURN (PROG1 (fetch DDOPERATION of DD) [COND (OPERATION (OR (FMEMB OPERATION '(PAINT REPLACE INVERT ERASE)) (LISPERROR "ILLEGAL ARG" OPERATION)) (UNINTERRUPTABLY (freplace DDOPERATION of DD with OPERATION) (\SETGCFUNCTION (fetch DDPILOTBBT of DD) (fetch DDSOURCETYPE of DD) OPERATION))])]) (\DSPRESET.XDISPLAY [LAMBDA (DISPLAYSTREAM) (DECLARE (GLOBALVARS \CURRENTDISPLAYLINE)) (* ; "Edited 22-Feb-91 17:41 by matsuda") (LET [CREG FONT FONTASCENT (DD (\DTEST (fetch (STREAM IMAGEDATA) of (SETQ DISPLAYSTREAM (\OUTSTREAMARG DISPLAYSTREAM))) '\DISPLAYDATA] (SETQ CREG (ffetch (\DISPLAYDATA DDClippingRegion) of DD)) (SETQ FONT (fetch (\DISPLAYDATA DDFONT) of DD)) (SETQ FONTASCENT (FONTASCENT FONT)) (SELECTQ (fetch (FONTDESCRIPTOR ROTATION) of FONT) (0 (\DSPXPOSITION.DISPLAY DISPLAYSTREAM (ffetch (\DISPLAYDATA DDLeftMargin) of DD)) (\DSPYPOSITION.DISPLAY DISPLAYSTREAM (ADD1 (IDIFFERENCE (fetch (REGION TOP) of CREG) FONTASCENT)))) (ERROR "only supported rotations are 0")) (CL:SETF (XLIB:GCONTEXT-FOREGROUND XLIB::*GC*) XLIB::*WHITE*) (XLIB:DRAW-RECTANGLE (fetch (\DISPLAYDATA DDDestination) of DD) XLIB::*GC* (\DSPTRANSFORMX (fetch (REGION LEFT) of CREG) DD) (\DSPTRANSFORMY (fetch (REGION BOTTOM) of CREG) DD) (fetch (REGION WIDTH) of CREG) (fetch (REGION HEIGHT) of CREG) T) (* ; "(BITBLT NIL NIL NIL DISPLAYSTREAM (fetch (REGION LEFT) of CREG) (fetch (REGION BOTTOM) of CREG) (fetch (REGION WIDTH) of CREG) (fetch (REGION HEIGHT) of CREG) 'TEXTURE 'REPLACE (ffetch (\DISPLAYDATA DDTexture) of DD))") (* ;; "if this display stream is the tty display stream of a process, reset the # of lines in that process.") (PROG ((X (WFROMDS DISPLAYSTREAM T))) (COND ((AND X (SETQ X (WINDOWPROP X 'PROCESS)) (EQ (PROCESS.TTY X) DISPLAYSTREAM)) (PROCESS.EVAL X '(SETQ \CURRENTDISPLAYLINE 0]) (\BLTSHADE.XDISPLAY [LAMBDA (TEXTURE STREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT OPERATION CLIPPINGREGION) (* ; "Edited 28-Feb-91 13:08 by matsuda") (* ; "BLTSHADE to a display stream") (DECLARE (LOCALVARS . T)) (PROG (left top bottom right DESTINATIONBITMAP DESTDD DESTINATIONNBITS GC PIXMAP ORGFUNCTION) (SETQ DESTDD (fetch (STREAM IMAGEDATA) of STREAM)) (SETQ GC (fetch (\DISPLAYDATA DDPILOTBBT) of DESTDD)) (SETQ DESTINATIONLEFT (\DSPTRANSFORMX DESTINATIONLEFT DESTDD)) (SETQ DESTINATIONBOTTOM (\DSPTRANSFORMY DESTINATIONBOTTOM DESTDD)) [PROGN (* ;  "compute limits based on clipping regions.") (SETQ left (fetch (\DISPLAYDATA DDClippingLeft) of DESTDD)) (SETQ bottom (fetch (\DISPLAYDATA DDClippingBottom) of DESTDD)) (SETQ right (fetch (\DISPLAYDATA DDClippingRight) of DESTDD)) (SETQ top (fetch (\DISPLAYDATA DDClippingTop) of DESTDD)) (COND (CLIPPINGREGION (* ;  "hard case, two destination clipping regions: do calculations to merge them.") (PROG (CRLEFT CRBOTTOM) [SETQ left (IMAX left (SETQ CRLEFT (\DSPTRANSFORMX (fetch (REGION LEFT) of CLIPPINGREGION) DESTDD] [SETQ bottom (IMAX bottom (SETQ CRBOTTOM (\DSPTRANSFORMY (fetch (REGION BOTTOM) of CLIPPINGREGION) DESTDD] [SETQ right (IMIN right (IPLUS CRLEFT (fetch (REGION WIDTH) of CLIPPINGREGION] (SETQ top (IMIN top (IPLUS CRBOTTOM (fetch (REGION HEIGHT) of CLIPPINGREGION] (SETQ DESTINATIONBITMAP (fetch (\DISPLAYDATA DDDestination) of DESTDD)) (SETQ DESTINATIONNBITS (BITSPERPIXEL DESTINATIONBITMAP)) (* ;; "left, right top and bottom are the limits in destination taking into account Clipping Regions. Clip to region in the arguments of this call.") [PROGN (SETQ left (IMAX DESTINATIONLEFT left)) (SETQ bottom (IMAX DESTINATIONBOTTOM bottom)) [COND (WIDTH (* ; "WIDTH is optional") (SETQ right (IMIN (IPLUS DESTINATIONLEFT WIDTH) right] (COND (HEIGHT (* ; "HEIGHT is optional") (SETQ top (IMIN (IPLUS DESTINATIONBOTTOM HEIGHT) top] (COND ((OR (ILEQ right left) (ILEQ top bottom)) (* ; "there is nothing to move.") (RETURN))) (SETQ TEXTURE (SELECTQ (TYPENAME TEXTURE) (LITATOM (COND ((NULL TEXTURE) (* ;  "NIL case. default texture to background texture.") (ffetch (\DISPLAYDATA DDTexture) of DESTDD)) (T (\ILLEGAL.ARG TEXTURE)))) ((SMALLP FIXP) (LOGAND TEXTURE 65535)) (BITMAP TEXTURE) (\ILLEGAL.ARG TEXTURE))) (SETQ PIXMAP (PIXMAPFROMTEXTURE TEXTURE)) (SETQ ORGFUNCTION (XLIB:GCONTEXT-FUNCTION GC)) (CL:SETF (XLIB:GCONTEXT-FUNCTION GC) (SELECTQ (OR OPERATION (ffetch (\DISPLAYDATA DDOPERATION) of DESTDD)) (REPLACE CL:BOOLE-1) (PAINT CL:BOOLE-IOR) (INVERT CL:BOOLE-XOR) (ERASE CL:BOOLE-ANDC1) CL:BOOLE-1)) (CL:SETF (XLIB:GCONTEXT-TILE GC) PIXMAP) (CL:SETF (XLIB:GCONTEXT-FILL-STYLE GC) :TILED) (PROG (Y WIDTH HEIGHT) (SETQ HEIGHT (IDIFFERENCE top bottom)) (SETQ WIDTH (IDIFFERENCE right left)) (SETQ Y (IDIFFERENCE (XLIB:DRAWABLE-HEIGHT DESTINATIONBITMAP) top)) (XLIB:DRAW-RECTANGLE DESTINATIONBITMAP GC left Y WIDTH HEIGHT :FILL-P T)) (CL:SETF (XLIB:GCONTEXT-FUNCTION GC) ORGFUNCTION) (RETURN T]) (\BITBLT.XDISPLAY [LAMBDA (SOURCEBITMAP SOURCELEFT SOURCEBOTTOM DESTSTRM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION CLIPPEDSOURCELEFT CLIPPEDSOURCEBOTTOM) (DECLARE (LOCALVARS . T)) (* ; "Edited 17-Jul-91 10:37 by matsuda") (PROG (stodx stody left top bottom right DESTDD DESTBITMAP DESTINATIONNBITS SOURCENBITS MAXSHADE) (SETQ DESTDD (fetch (STREAM IMAGEDATA) of DESTSTRM)) (SETQ DESTBITMAP (fetch (\DISPLAYDATA DDDestination) of DESTDD)) (SETQ DESTINATIONLEFT (\DSPTRANSFORMX DESTINATIONLEFT DESTDD)) (SETQ DESTINATIONBOTTOM (\DSPTRANSFORMY DESTINATIONBOTTOM DESTDD)) [PROGN (* ;  "compute limits based on clipping regions.") (SETQ left (fetch (\DISPLAYDATA DDClippingLeft) of DESTDD)) (SETQ bottom (fetch (\DISPLAYDATA DDClippingBottom) of DESTDD)) (SETQ right (fetch (\DISPLAYDATA DDClippingRight) of DESTDD)) (SETQ top (fetch (\DISPLAYDATA DDClippingTop) of DESTDD)) (COND (CLIPPINGREGION (* ;  "hard case, two destination clipping regions: do calculations to merge them.") (PROG (CRLEFT CRBOTTOM) [SETQ left (IMAX left (SETQ CRLEFT (\DSPTRANSFORMX (fetch (REGION LEFT) of CLIPPINGREGION) DESTDD] [SETQ bottom (IMAX bottom (SETQ CRBOTTOM (\DSPTRANSFORMY (fetch (REGION BOTTOM) of CLIPPINGREGION) DESTDD] [SETQ right (IMIN right (IPLUS CRLEFT (fetch (REGION WIDTH) of CLIPPINGREGION] (SETQ top (IMIN top (IPLUS CRBOTTOM (fetch (REGION HEIGHT) of CLIPPINGREGION] [PROGN (SETQ left (IMAX DESTINATIONLEFT left)) (SETQ bottom (IMAX DESTINATIONBOTTOM bottom)) [COND (WIDTH (* ; "WIDTH is optional") (SETQ right (IMIN (IPLUS DESTINATIONLEFT WIDTH) right] (COND (HEIGHT (* ; "HEIGHT is optional") (SETQ top (IMIN (IPLUS DESTINATIONBOTTOM HEIGHT) top] (* ; "Clip and translate coordinates.") (SETQ stodx (IDIFFERENCE DESTINATIONLEFT SOURCELEFT)) (SETQ stody (IDIFFERENCE DESTINATIONBOTTOM SOURCEBOTTOM)) [PROGN (* ; "compute left margin") (SETQ left (IMAX CLIPPEDSOURCELEFT (IDIFFERENCE left stodx) 0)) (* ; "compute bottom margin") (SETQ bottom (IMAX CLIPPEDSOURCEBOTTOM (IDIFFERENCE bottom stody) 0)) (* ; "compute right margin") (SETQ right (IMIN (BITMAPWIDTH SOURCEBITMAP) (IDIFFERENCE right stodx) (IPLUS CLIPPEDSOURCELEFT WIDTH))) (* ; "compute top margin") (SETQ top (IMIN (BITMAPHEIGHT SOURCEBITMAP) (IDIFFERENCE top stody) (IPLUS CLIPPEDSOURCEBOTTOM HEIGHT] (COND ((OR (ILEQ right left) (ILEQ top bottom)) (* ; "there is nothing to move.") (RETURN))) (OR OPERATION (SETQ OPERATION (ffetch (\DISPLAYDATA DDOPERATION) of DESTDD))) (PROG (GC HEIGHT WIDTH DTY DLX STY SLX) (SETQ GC (fetch (\DISPLAYDATA DDPILOTBBT) of DESTDD)) (SETQ HEIGHT (IDIFFERENCE top bottom)) (SETQ WIDTH (IDIFFERENCE right left)) (SETQ DTY (IDIFFERENCE (XLIB:DRAWABLE-HEIGHT DESTBITMAP) (IPLUS top stody))) (SETQ DLX (IPLUS left stodx)) (SETQ STY (IDIFFERENCE (BITMAPWIDTH SOURCEBITMAP) top)) (SETQ SLX left) (\XBITBLTSUB GC SOURCEBITMAP SLX STY DESTBITMAP DLX DTY WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE)) (RETURN T]) (\XBITBLTSUB [LAMBDA (GC SourceBitMap SLX STY DestinationDrawable DLX DTY WIDTH HEIGHT SourceType Operation Texture WindowXOffset WindowYOffset) (* ; "Edited 17-Jul-91 08:31 by matsuda") (CL:SETF (XLIB:GCONTEXT-FUNCTION GC) (SELECTQ SourceType (INVERT (SELECTQ SourceType (PAINT CL:BOOLE-ORC1) (INVERT CL:BOOLE-EQV) (ERASE CL:BOOLE-AND) CL:BOOLE-C1)) (SELECTQ Operation (PAINT CL:BOOLE-IOR) (INVERT CL:BOOLE-XOR) (ERASE CL:BOOLE-ANDC1) CL:BOOLE-1))) (SELECTQ (TYPENAME SourceBitMap) (BITMAP [PROG (XIMAGE) (SETQ XIMAGE (XIMAGEFROMBITMAP SourceBitMap)) (COND ((EQ (BITSPERPIXEL SourceBitMap) 1) (XLIB:PUT-IMAGE DestinationDrawable GC XIMAGE :SRC-X SLX :SRC-Y STY :X DLX :Y DTY :HEIGHT HEIGHT :WIDTH WIDTH :BITMAP-P T)) (T (XLIB:PUT-IMAGE DestinationDrawable GC XIMAGE :SRC-X SLX :SRC-Y STY :X DLX :Y DTY :HEIGHT HEIGHT :WIDTH WIDTH]) ((XLIB:WINDOW XLIB:PIXMAP) (XLIB:COPY-AREA SourceBitMap GC SLX STY WIDTH HEIGHT DestinationDrawable DLX DTY)) NIL]) (\XBLTSHADE.PIXMAP [LAMBDA (TEXTURE DESTINATIONBITMAP DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT OPERATION CLIPPINGREGION) (DECLARE (LOCALVARS . T)) (* ; "Edited 6-Mar-91 17:09 by matsuda") (PROG (left bottom top right PIXMAP) (SETQ left 0) (SETQ bottom 0) (SETQ top (PIXMAPHEIGHT DESTINATIONBITMAP)) (SETQ right (PIXMAPWIDTH DESTINATIONBITMAP)) [COND (CLIPPINGREGION (* ; "adjust limits") (SETQ left (IMAX left (fetch (REGION LEFT) of CLIPPINGREGION))) (SETQ bottom (IMAX bottom (fetch (REGION BOTTOM) of CLIPPINGREGION))) [SETQ right (IMIN right (IPLUS (fetch (REGION WIDTH) of CLIPPINGREGION) (fetch (REGION LEFT) of CLIPPINGREGION] (SETQ top (IMIN top (IPLUS (fetch (REGION BOTTOM) of CLIPPINGREGION) (fetch (REGION HEIGHT) of CLIPPINGREGION] (OR DESTINATIONLEFT (SETQ DESTINATIONLEFT 0)) (OR DESTINATIONBOTTOM (SETQ DESTINATIONBOTTOM 0)) [PROGN (SETQ left (IMAX DESTINATIONLEFT left)) (SETQ bottom (IMAX DESTINATIONBOTTOM bottom)) [COND (WIDTH (* ; "WIDTH is optional") (SETQ right (IMIN (IPLUS DESTINATIONLEFT WIDTH) right] (COND (HEIGHT (* ; "HEIGHT is optional") (SETQ top (IMIN (IPLUS DESTINATIONBOTTOM HEIGHT) top] (COND ((OR (ILEQ right left) (ILEQ top bottom)) (* ; "there is nothing to move.") (RETURN))) (SETQ TEXTURE (SELECTQ (TYPENAME TEXTURE) (LITATOM (* ; "includes NIL case") (COND ((NULL TEXTURE) WHITESHADE) (T (\ILLEGAL.ARG TEXTURE)))) ((SMALLP FIXP) (LOGAND TEXTURE BLACKSHADE)) (BITMAP TEXTURE) (\ILLEGAL.ARG TEXTURE))) (SETQ PIXMAP (PIXMAPFROMTEXTURE TEXTURE)) (CL:SETF (XLIB:GCONTEXT-FUNCTION XLIB::*GC*) (SELECTQ OPERATION (REPLACE CL:BOOLE-1) (PAINT CL:BOOLE-IOR) (INVERT CL:BOOLE-XOR) (ERASE CL:BOOLE-ANDC1) CL:BOOLE-1)) (CL:SETF (XLIB:GCONTEXT-TILE XLIB::*GC*) PIXMAP) (CL:SETF (XLIB:GCONTEXT-FILL-STYLE XLIB::*GC*) :TILED) (PROG (Y WIDTH HEIGHT) (SETQ HEIGHT (IDIFFERENCE top bottom)) (SETQ WIDTH (IDIFFERENCE right left)) (SETQ Y (IDIFFERENCE (XLIB:DRAWABLE-HEIGHT DESTINATIONBITMAP) top)) (XLIB:DRAW-RECTANGLE DESTINATIONBITMAP XLIB::*GC* left Y WIDTH HEIGHT :FILL-P T)) (RETURN T]) (\XBITBLT.PIXMAP [LAMBDA (SOURCEBITMAP SOURCELEFT SOURCEBOTTOM DESTBITMAP DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION CLIPPEDSOURCELEFT CLIPPEDSOURCEBOTTOM) (DECLARE (LOCALVARS . T)) (* ; "Edited 17-Jul-91 08:46 by matsuda") (PROG (stodx stody right top DESTINATIONNBITS left bottom SOURCENBITS) (SETQ top (PIXMAPHEIGHT DESTBITMAP)) (SETQ left 0) (SETQ bottom 0) (SETQ SOURCENBITS (BITSPERPIXEL SOURCEBITMAP)) (SETQ right (PIXMAPWIDTH DESTBITMAP)) [COND (CLIPPINGREGION (* ; "adjust limits") (SETQ left (IMAX left (fetch (REGION LEFT) of CLIPPINGREGION))) (SETQ bottom (IMAX bottom (fetch (REGION BOTTOM) of CLIPPINGREGION))) [SETQ right (IMIN right (IPLUS (fetch (REGION WIDTH) of CLIPPINGREGION) (fetch (REGION LEFT) of CLIPPINGREGION] (SETQ top (IMIN top (IPLUS (fetch (REGION BOTTOM) of CLIPPINGREGION) (fetch (REGION HEIGHT) of CLIPPINGREGION] [PROGN (SETQ left (IMAX DESTINATIONLEFT left)) (SETQ bottom (IMAX DESTINATIONBOTTOM bottom)) [COND (WIDTH (* ; "WIDTH is optional") (SETQ right (IMIN (IPLUS DESTINATIONLEFT WIDTH) right] (COND (HEIGHT (* ; "HEIGHT is optional") (SETQ top (IMIN (IPLUS DESTINATIONBOTTOM HEIGHT) top] (* ; "Clip and translate coordinates.") (SETQ stodx (IDIFFERENCE DESTINATIONLEFT SOURCELEFT)) (SETQ stody (IDIFFERENCE DESTINATIONBOTTOM SOURCEBOTTOM)) [PROGN (* ; "compute left margin") (SETQ left (IMAX CLIPPEDSOURCELEFT 0 (IDIFFERENCE left stodx))) (* ; "compute bottom margin") (SETQ bottom (IMAX CLIPPEDSOURCEBOTTOM 0 (IDIFFERENCE bottom stody))) (* ; "compute right margin") (SETQ right (IMIN (BITMAPWIDTH SOURCEBITMAP) (IDIFFERENCE right stodx) (IPLUS CLIPPEDSOURCELEFT WIDTH))) (* ; "compute top margin") (SETQ top (IMIN (BITMAPHEIGHT SOURCEBITMAP) (IDIFFERENCE top stody) (IPLUS CLIPPEDSOURCEBOTTOM HEIGHT] (COND ((OR (ILEQ right left) (ILEQ top bottom)) (* ; "there is nothing to move.") (RETURN))) (SELECTQ SOURCETYPE (MERGE (\ILLEGAL.ARG TEXTURE)) NIL) (COND ((OR (XLIB:DRAWABLE-P SOURCEBITMAP) (EQ SOURCENBITS 1)) (PROG (HEIGHT WIDTH DTY DLX STY SLX) (SETQ HEIGHT (IDIFFERENCE top bottom)) (SETQ WIDTH (IDIFFERENCE right left)) (SETQ DTY (IDIFFERENCE (XLIB:DRAWABLE-HEIGHT DESTBITMAP) (IPLUS top stody))) (SETQ DLX (IPLUS left stodx)) (SETQ STY (\SFInvert SOURCEBITMAP top)) (SETQ SLX left) (\XBITBLTSUB XLIB::*GC* SOURCEBITMAP SLX STY DESTBITMAP DLX DTY WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE))) (T (ERROR "Source bitmap should not color bitmaps." SOURCEBITMAP))) (RETURN T]) (\DRAWPOINT.XDISPLAY [LAMBDA (DISPLAYSTREAM X Y BRUSH OPERATION) (* ; "Edited 17-Jul-91 10:43 by matsuda") (PROG ((BRUSHBM (XPIXMAPFROMBRUSH BRUSH))) (RETURN (BITBLT BRUSHBM 0 0 DISPLAYSTREAM [IDIFFERENCE X (HALF (SUB1 (BITMAPWIDTH BRUSHBM] [IDIFFERENCE Y (HALF (SUB1 (BITMAPHEIGHT BRUSHBM] NIL NIL NIL (SELECTQ (OR OPERATION (DSPOPERATION NIL DISPLAYSTREAM)) (REPLACE 'PAINT) OPERATION]) (\DRAWLINE.XDISPLAY [LAMBDA (DISPLAYSTREAM X1 Y1 X2 Y2 WIDTH OPERATION COLOR DASHING) (* ; "Edited 16-Jul-91 13:20 by matsuda") [COND [(OR DASHING (BRUSHP WIDTH)) (LET ((BRUSH (INSURE.BRUSH WIDTH))) (if COLOR then (replace (BRUSH BRUSHCOLOR) of BRUSH with COLOR)) (\XLINEWITHBRUSH X1 Y1 X2 Y2 BRUSH (\GOOD.DASHLST DASHING BRUSH) DISPLAYSTREAM (SELECTQ OPERATION (NIL (ffetch DDOPERATION of (fetch IMAGEDATA of DISPLAYSTREAM ))) ((REPLACE PAINT INVERT ERASE) OPERATION) (\ILLEGAL.ARG OPERATION] (T (PROG ((DD (fetch IMAGEDATA of DISPLAYSTREAM)) X Y DRAWABLE GC) (SETQ DRAWABLE (fetch (\DISPLAYDATA DDDestination) of DD)) (SETQ GC (fetch (\DISPLAYDATA DDPILOTBBT) of DD)) (SETQ X1 (\DSPTRANSFORMX (OR (FIXP X1) (FIXR X1)) DD)) (SETQ Y1 (IDIFFERENCE (XLIB:DRAWABLE-HEIGHT DRAWABLE) (\DSPTRANSFORMY (OR (FIXP Y1) (FIXR Y1)) DD))) (SETQ X (\DSPTRANSFORMX (OR (FIXP X2) (FIXR X2)) DD)) (SETQ Y (IDIFFERENCE (XLIB:DRAWABLE-HEIGHT DRAWABLE) (\DSPTRANSFORMY (OR (FIXP Y2) (FIXR Y2)) DD))) (SETQ OPERATION (SELECTQ OPERATION (NIL (ffetch DDOPERATION of DD)) ((REPLACE PAINT INVERT ERASE) OPERATION) (\ILLEGAL.ARG OPERATION))) (CL:SETF (XLIB:GCONTEXT-FUNCTION GC) (SELECTQ OPERATION (REPLACE CL:BOOLE-1) (PAINT CL:BOOLE-IOR) (INVERT CL:BOOLE-XOR) (ERASE CL:BOOLE-ANDC1) CL:BOOLE-1)) [CL:SETF (XLIB:GCONTEXT-LINE-WIDTH GC) (COND ((NULL WIDTH) 1) ((OR (FIXP WIDTH) (FIXR WIDTH] (CL:SETF (XLIB:GCONTEXT-JOIN-STYLE GC) :ROUND) (CL:SETF (XLIB:GCONTEXT-CAP-STYLE GC) :ROUND) (XLIB:DRAW-LINE DRAWABLE GC X1 Y1 X Y] (MOVETO X2 Y2 DISPLAYSTREAM]) (\XLINEWITHBRUSH [LAMBDA (X1 Y1 X2 Y2 BRUSH DASHLST DISPLAYSTREAM OPERATION) (DECLARE (LOCALVARS . T)) (* ; "Edited 16-Jul-91 13:38 by matsuda") (PROG (DestinationBitMap LEFT RIGHTPLUS1 TOP BOTTOM BRUSHWIDTH BRUSHHEIGHT LEFTMINUSBRUSH BOTTOMMINUSBRUSH TOPMINUSBRUSH BRUSHBM DESTINATIONBASE BRUSHBASE RASTERWIDTH BRUSHRASTERWIDTH NBITSRIGHTPLUS1 HEIGHTMINUS1 COLOR COLORBRUSHBASE NBITS HALFBRUSHWIDTH HALFBRUSHHEIGHT DX DY YINC CDL (DASHON T) (DASHTAIL DASHLST) (DASHCNT (CAR DASHLST)) (DISPLAYDATA (fetch IMAGEDATA of DISPLAYSTREAM)) (USERFN (AND (LITATOM BRUSH) BRUSH)) (DISPLAYDATA (fetch IMAGEDATA of DISPLAYSTREAM))) (* ;  "arrange things so that dx is positive.") (COND ((IGREATERP X1 X2) (* ; "switch points") (swap X1 X2) (swap Y1 Y2))) (SETQ DX (ADD1 (IDIFFERENCE X2 X1))) [SETQ DY (ADD1 (COND ((IGREATERP Y2 Y1) (SETQ YINC 1) (IDIFFERENCE Y2 Y1)) (T (SETQ YINC -1) (IDIFFERENCE Y1 Y2] [SETQ CDL (HALF (COND ((IGREATERP DX DY) (* ;  "set up the bucket so that the ends will be the same.") (IREMAINDER DX DY)) (T (IREMAINDER DY DX] [COND [USERFN (* ;  "if user function is being called, don't bother bringing window to top uninterruptably.") (COND ((IGEQ DX DY) (* ; "X is the fastest mover.") (until (IGREATERP X1 X2) do (* ; "main loop") (COND (DASHON (APPLY* USERFN X1 Y1 DISPLAYSTREAM))) [COND (DASHTAIL (* ; "do dashing.") (COND ((EQ 0 (SETQ DASHCNT (SUB1 DASHCNT))) (SETQ DASHON (NOT DASHON)) (SETQ DASHTAIL (OR (LISTP (CDR DASHTAIL)) DASHLST)) (SETQ DASHCNT (CAR DASHTAIL] [COND ((NOT (IGREATERP DX (add CDL DY))) (add Y1 YINC) (COND ((COND ((EQ YINC -1) (ILESSP Y1 Y2)) ((IGREATERP Y1 Y2))) (RETURN))) (SETQ CDL (IDIFFERENCE CDL DX] (add X1 1))) (T (* ; "Y is the fastest mover.") (until (COND ((EQ YINC -1) (ILESSP Y1 Y2)) ((IGREATERP Y1 Y2))) do (* ; "main loop") (COND (DASHON (APPLY* USERFN X1 Y1 DISPLAYSTREAM))) [COND (DASHTAIL (* ; "do dashing.") (COND ((EQ 0 (SETQ DASHCNT (SUB1 DASHCNT))) (SETQ DASHON (NOT DASHON)) (SETQ DASHTAIL (OR (LISTP (CDR DASHTAIL)) DASHLST)) (SETQ DASHCNT (CAR DASHTAIL] [COND ([NOT (IGREATERP DY (SETQ CDL (IPLUS CDL DX] (COND ((IGREATERP (SETQ X1 (ADD1 X1)) X2) (RETURN))) (SETQ CDL (IDIFFERENCE CDL DY] (add Y1 YINC] (T (* ;  "when we put the points down make it uninterruptable") (COND [(IGEQ DX DY) (* ; "X is the fastest mover.") (until (IGREATERP X1 X2) do (* ; "main loop") (COND (DASHON (DRAWPOINT X1 Y1 BRUSH DISPLAYSTREAM OPERATION))) [COND (DASHTAIL (* ; "do dashing.") (COND ((EQ 0 (SETQ DASHCNT (SUB1 DASHCNT))) (SETQ DASHON (NOT DASHON)) (SETQ DASHTAIL (OR (LISTP (CDR DASHTAIL)) DASHLST)) (SETQ DASHCNT (CAR DASHTAIL] [COND ([NOT (IGREATERP DX (SETQ CDL (IPLUS CDL DY] (SETQ Y1 (IPLUS Y1 YINC)) (COND ((COND ((EQ YINC -1) (ILESSP Y1 Y2)) ((IGREATERP Y1 Y2))) (RETURN))) (SETQ CDL (IDIFFERENCE CDL DX] (SETQ X1 (ADD1 X1] (T (* ; "Y is the fastest mover.") (until (COND ((EQ YINC -1) (ILESSP Y1 Y2)) ((IGREATERP Y1 Y2))) do (* ; "main loop") (COND (DASHON (DRAWPOINT X1 Y1 BRUSH DISPLAYSTREAM OPERATION))) [COND (DASHTAIL (* ; "do dashing.") (COND ((EQ 0 (SETQ DASHCNT (SUB1 DASHCNT))) (SETQ DASHON (NOT DASHON)) (SETQ DASHTAIL (OR (LISTP (CDR DASHTAIL)) DASHLST)) (SETQ DASHCNT (CAR DASHTAIL] [COND ([NOT (IGREATERP DY (SETQ CDL (IPLUS CDL DX] (COND ((IGREATERP (SETQ X1 (ADD1 X1)) X2) (RETURN))) (SETQ CDL (IDIFFERENCE CDL DY] (SETQ Y1 (IPLUS Y1 YINC] (RETURN NIL]) (\DRAWCIRCLE.XDISPLAY [LAMBDA (DISPLAYSTREAM CENTERX CENTERY RADIUS BRUSH DASHING) (DECLARE (LOCALVARS . T)) (* ; "Edited 16-Jul-91 14:59 by matsuda") (COND ((OR (NOT (NUMBERP RADIUS)) (ILESSP (SETQ RADIUS (FIXR RADIUS)) 0)) (\ILLEGAL.ARG RADIUS)) ((EQ RADIUS 0) NIL) (DASHING (DRAWCURVE (CDR (\COMPUTE.ARC.POINTS CENTERX CENTERY RADIUS 0 360)) T BRUSH DASHING DISPLAYSTREAM)) (T (PROG (X Y D DestinationBitMap LEFT RIGHTPLUS1 TOP BOTTOM BRUSHWIDTH BRUSHHEIGHT LEFTMINUSBRUSH BOTTOMMINUSBRUSH TOPMINUSBRUSH BRUSHBM DESTINATIONBASE BRUSHBASE RASTERWIDTH BRUSHRASTERWIDTH NBITSRIGHTPLUS1 OPERATION HEIGHTMINUS1 CX CY BBT COLOR COLORBRUSHBASE NBITS DISPLAYDATA USERFN) (SETQ X 0) (SETQ Y RADIUS) (SETQ D (ITIMES 2 (IDIFFERENCE 1 RADIUS))) (SETQ DISPLAYDATA (fetch (STREAM IMAGEDATA) of DISPLAYSTREAM)) (SETQ USERFN (AND (LITATOM BRUSH) BRUSH)) (SETQ CX CENTERX) (SETQ CY CENTERY) [COND ((EQ RADIUS 1) (COND (USERFN (APPLY* USERFN CX CY DISPLAYSTREAM)) (T (DRAWPOINT CX CY BRUSH DISPLAYSTREAM))) (RETURN)) (T (COND (USERFN (APPLY* USERFN CX (IPLUS CY RADIUS) DISPLAYSTREAM) (APPLY* USERFN CX (IDIFFERENCE CY RADIUS) DISPLAYSTREAM)) (T (DRAWPOINT CX (IPLUS CY RADIUS) BRUSH DISPLAYSTREAM) (DRAWPOINT CX (IDIFFERENCE CY RADIUS) BRUSH DISPLAYSTREAM] LP [COND [(IGREATERP 0 D) (SETQ X (ADD1 X)) (COND ((IGREATERP (UNFOLD (IPLUS D Y) 2) 1) (SETQ D (IPLUS D (UNFOLD (IDIFFERENCE X Y) 2) 4)) (SETQ Y (SUB1 Y))) (T (SETQ D (IPLUS D (UNFOLD X 2) 1] ((OR (EQ 0 D) (IGREATERP X D)) (SETQ X (ADD1 X)) (SETQ D (IPLUS D (UNFOLD (IDIFFERENCE X Y) 2) 4)) (SETQ Y (SUB1 Y))) (T (SETQ D (IPLUS (IDIFFERENCE D (UNFOLD Y 2)) 3)) (SETQ Y (SUB1 Y] (COND [(EQ Y 0) (COND (USERFN (APPLY* USERFN (IPLUS CX X) CY DISPLAYSTREAM) (APPLY* USERFN (IDIFFERENCE CX X) CY DISPLAYSTREAM)) (T (DRAWPOINT (IPLUS CX X) CY BRUSH DISPLAYSTREAM) (DRAWPOINT (IDIFFERENCE CX X) CY BRUSH DISPLAYSTREAM] (T (COND (USERFN (APPLY* USERFN (IPLUS CX X) (IPLUS CY Y) DISPLAYSTREAM) (APPLY* USERFN (IDIFFERENCE CX X) (IPLUS CY Y) DISPLAYSTREAM) (APPLY* USERFN (IPLUS CX X) (IDIFFERENCE CY Y) DISPLAYSTREAM) (APPLY* USERFN (IDIFFERENCE CX X) (IDIFFERENCE CY Y) DISPLAYSTREAM)) (T (DRAWPOINT (IPLUS CX X) (IPLUS CY Y) BRUSH DISPLAYSTREAM) (DRAWPOINT (IDIFFERENCE CX X) (IPLUS CY Y) BRUSH DISPLAYSTREAM) (DRAWPOINT (IPLUS CX X) (IDIFFERENCE CY Y) BRUSH DISPLAYSTREAM) (DRAWPOINT (IDIFFERENCE CX X) (IDIFFERENCE CY Y) BRUSH DISPLAYSTREAM))) (GO LP))) (MOVETO CENTERX CENTERY DISPLAYSTREAM) (RETURN NIL]) (\DRAWCURVE.XDISPLAY [LAMBDA (DISPLAYSTREAM KNOTS CLOSED BRUSH DASHING) (* ; "Edited 16-Jul-91 17:04 by matsuda") (PROG ((DASHLST (\GOOD.DASHLST DASHING BRUSH))) (SELECTQ (LENGTH KNOTS) (0 (* ;  "No knots => empty curve rather than error?") NIL) (1 (* ;  "only one knot, put down a brush shape") (OR (type? POSITION (CAR KNOTS)) (ERROR "bad knot" (CAR KNOTS))) (\DRAWPOINT.DISPLAY DISPLAYSTREAM (fetch XCOORD of (CAR KNOTS)) (fetch YCOORD of (CAR KNOTS)) BRUSH)) (2 (OR (type? POSITION (CAR KNOTS)) (ERROR "bad knot" (CAR KNOTS))) (OR (type? POSITION (CADR KNOTS)) (ERROR "bad knot" (CADR KNOTS))) (\XLINEWITHBRUSH (fetch XCOORD of (CAR KNOTS)) (fetch YCOORD of (CAR KNOTS)) (fetch XCOORD of (CADR KNOTS)) (fetch YCOORD of (CADR KNOTS)) BRUSH DASHLST DISPLAYSTREAM)) (\XCURVE2 (PARAMETRICSPLINE KNOTS CLOSED) BRUSH DASHLST DISPLAYSTREAM)) (RETURN DISPLAYSTREAM]) (\XCURVE2 [LAMBDA (SPLINE BRUSH DASHLST DISPLAYSTREAM) (DECLARE (SPECVARS . T)) (* ; "Edited 16-Jul-91 17:16 by matsuda") (PROG (BRUSHBM DestinationBitMap OPERATION BRUSHWIDTH BRUSHHEIGHT BRUSHBASE BRUSHRASTERWIDTH LEFT RIGHTPLUS1 TOP BOTTOM DESTINATIONBASE LEFTMINUSBRUSH BOTTOMMINUSBRUSH TOPMINUSBRUSH RASTERWIDTH NBITSRIGHTPLUS1 HEIGHTMINUS1 COLOR COLORBRUSHBASE NBITS \CURX \CURY \OLDX \OLDY \OLDERX \OLDERY LKNOT (DASHON T) (DASHTAIL DASHLST) (DASHCNT (CAR DASHLST)) NPOINTS NSEGS POINTSPERSEG DX D2X D3X DY D2Y D3Y D1 D2 D3 X0 Y0 X1 Y1 DX DDX DDDX DY DDY DDDY (XPOLY (create POLYNOMIAL)) (X/PRIME/POLY (create POLYNOMIAL)) (YPOLY (create POLYNOMIAL)) (Y/PRIME/POLY (create POLYNOMIAL)) (DISPLAYDATA (fetch IMAGEDATA of DISPLAYSTREAM)) (USERFN (AND (LITATOM BRUSH) BRUSH))) (SETQ BRUSHBM (\GETBRUSH BRUSH)) (\CURVESTART (ELT (fetch (SPLINE SPLINEX) of SPLINE) 1) (ELT (fetch (SPLINE SPLINEY) of SPLINE) 1)) [bind PERSEG for KNOT from 1 to (SUB1 (fetch %#KNOTS of SPLINE)) when (PROGN (* ;;  "Loop thru the segments of the spline curve, drawing each in turn.") (SETQ X0 (ELT (fetch (SPLINE SPLINEX) of SPLINE) KNOT)) (SETQ Y0 (ELT (fetch (SPLINE SPLINEY) of SPLINE) KNOT)) (SETQ X1 (ELT (fetch (SPLINE SPLINEX) of SPLINE) (ADD1 KNOT))) (SETQ Y1 (ELT (fetch (SPLINE SPLINEY) of SPLINE) (ADD1 KNOT))) (SETQ DX (ELT (fetch (SPLINE SPLINEDX) of SPLINE) KNOT)) (SETQ DY (ELT (fetch (SPLINE SPLINEDY) of SPLINE) KNOT)) (SETQ DDX (ELT (fetch SPLINEDDX of SPLINE) KNOT)) (SETQ DDY (ELT (fetch SPLINEDDY of SPLINE) KNOT)) (SETQ DDDX (ELT (fetch SPLINEDDDX of SPLINE) KNOT)) (SETQ DDDY (ELT (fetch SPLINEDDDY of SPLINE) KNOT)) (SETQ NPOINTS (FOLDLO (ITIMES (IMAX (IABS (IDIFFERENCE X1 X0)) (IABS (IDIFFERENCE Y1 Y0))) 3) 2)) (NOT (ZEROP NPOINTS))) do [COND ((ILEQ NPOINTS 64) (SETQ NSEGS 1) (SETQ POINTSPERSEG NPOINTS)) (T (SETQ NSEGS (FOLDLO NPOINTS 64)) (SETQ POINTSPERSEG 64) (SETQ NPOINTS (UNFOLD NSEGS 64] (SETQ D1 (FQUOTIENT 1.0 NPOINTS)) (SETQ D2 (FTIMES D1 D1)) (SETQ D3 (FTIMES D2 D1)) (SETQ D3X (FTIMES D3 DDDX)) (SETQ D3Y (FTIMES D3 DDDY)) (COND [(EQ NSEGS 1) [SETQ DX (FPLUS (FTIMES D1 DX) (FTIMES DDX D2 0.5) (FTIMES DDDX D3 (CONSTANT (FQUOTIENT 1.0 6.0] (SETQ D2X (FPLUS (FTIMES D2 DDX) (FTIMES D3 DDDX))) [SETQ DY (FPLUS (FTIMES D1 DY) (FTIMES D2 DDY 0.5) (FTIMES D3 DDDY (CONSTANT (FQUOTIENT 1.0 6.0] (SETQ D2Y (FPLUS (FTIMES D2 DDY) (FTIMES D3 DDDY))) (COND (USERFN (\XCURVE X0 Y0 X1 Y1 DX DY D2X D2Y D3X D3Y NPOINTS BRUSHBM DISPLAYDATA NIL NIL USERFN DISPLAYSTREAM)) (T (\XCURVE X0 Y0 X1 Y1 DX DY D2X D2Y D3X D3Y NPOINTS BRUSHBM DISPLAYDATA NIL NIL NIL DISPLAYSTREAM] (T (SETQ PERSEG (FQUOTIENT 1.0 NSEGS)) (LOADPOLY XPOLY X/PRIME/POLY DDDX DDX DX X0) (LOADPOLY YPOLY Y/PRIME/POLY DDDY DDY DY Y0) (bind (TT _ 0.0) (DDDX/PER/SEG _ (FTIMES DDDX PERSEG)) (DDDY/PER/SEG _ (FTIMES DDDY PERSEG)) [D3XFACTOR _ (FTIMES D3 DDDX (CONSTANT (FQUOTIENT 1.0 6.0] [D3YFACTOR _ (FTIMES D3 DDDY (CONSTANT (FQUOTIENT 1.0 6.0] for I from 0 to (SUB1 NSEGS) do (SETQ TT (FPLUS TT PERSEG)) (SETQ X1 (POLYEVAL TT XPOLY 3)) (SETQ Y1 (POLYEVAL TT YPOLY 3)) (SETQ DX (FPLUS (FTIMES D1 DX) (FTIMES D2 DDX 0.5) D3XFACTOR)) (SETQ D2X (FPLUS (FTIMES D2 DDX) (FTIMES D3 DDDX))) (SETQ DY (FPLUS (FTIMES D1 DY) (FTIMES D2 DDY 0.5) D3YFACTOR)) (SETQ D2Y (FPLUS (FTIMES D2 DDY) (FTIMES D3 DDDY))) (COND (USERFN (\XCURVE X0 Y0 X1 Y1 DX DY D2X D2Y D3X D3Y 64 BRUSHBM DISPLAYDATA NIL NIL USERFN DISPLAYSTREAM) ) (T (\XCURVE X0 Y0 X1 Y1 DX DY D2X D2Y D3X D3Y 64 BRUSHBM DISPLAYDATA NIL NIL NIL DISPLAYSTREAM))) (SETQ X0 X1) (SETQ Y0 Y1) (SETQ DDX (FPLUS DDX DDDX/PER/SEG)) (SETQ DDY (FPLUS DDY DDDY/PER/SEG)) (SETQ DX (POLYEVAL TT X/PRIME/POLY 2)) (SETQ DY (POLYEVAL TT Y/PRIME/POLY 2] (COND (USERFN (\XCURVE 0 0 0 0 0 0 0 0 0 0 0 BRUSHBM DISPLAYDATA NIL T USERFN DISPLAYSTREAM)) (T (\XCURVE 0 0 0 0 0 0 0 0 0 0 0 BRUSHBM DISPLAYDATA NIL T NIL DISPLAYSTREAM]) (\XCURVE [LAMBDA (X0 Y0 X1 Y1 DX DY DDX DDY DDDX DDDY N BRUSHBM DISPLAYDATA BBT ENDING USERFN DISPLAYSTREAM) (DECLARE (LOCALVARS . T)) (* ; "Edited 16-Jul-91 16:57 by matsuda") (PROG (OLDX X Y OLDY DELTAX DELTAY DELTA TX TY OOLDX OOLDY) [COND ((NEQ N 0) (SETQ OLDX X0) (SETQ OLDY Y0) (\XCURVESMOOTH OLDX OLDY USERFN DISPLAYSTREAM) (SETQ X (\CONVERTTOFRACTION (FPLUS OLDX 0.49))) (SETQ Y (\CONVERTTOFRACTION (FPLUS OLDY 0.49))) (SETQ DX (\CONVERTTOFRACTION DX)) (SETQ DY (\CONVERTTOFRACTION DY)) (SETQ DDX (\CONVERTTOFRACTION DDX)) (SETQ DDY (\CONVERTTOFRACTION DDY)) (SETQ DDDX (\CONVERTTOFRACTION DDDX)) (SETQ DDDY (\CONVERTTOFRACTION DDDY)) [for I from 1 to N do (\BOXIPLUS X DX) (\BOXIPLUS DX DDX) (\BOXIPLUS DDX DDDX) (\BOXIPLUS Y DY) (\BOXIPLUS DY DDY) (\BOXIPLUS DDY DDDY) (SETQ OOLDX OLDX) (SETQ OOLDY OLDY) (SETQ DELTAX (IDIFFERENCE (SETQ OLDX ( \GETINTEGERPART X)) OOLDX)) (SETQ DELTAY (IDIFFERENCE (SETQ OLDY ( \GETINTEGERPART Y)) OOLDY)) (SETQ DELTA (IMAX (IABS DELTAX) (IABS DELTAY))) (COND ((EQ DELTA 1) (\XCURVESMOOTH OLDX OLDY USERFN DISPLAYSTREAM) )) (COND ((IGREATERP DELTA 1) (SETQ DELTAX (\CONVERTTOFRACTION (FQUOTIENT DELTAX DELTA ))) (SETQ DELTAY (\CONVERTTOFRACTION (FQUOTIENT DELTAY DELTA ))) (SETQ TX (\CONVERTTOFRACTION OOLDX)) (SETQ TY (\CONVERTTOFRACTION OOLDY)) (for I from 0 to DELTA do (\XCURVESMOOTH (\GETINTEGERPART TX) (\GETINTEGERPART TY) USERFN DISPLAYSTREAM) (\BOXIPLUS TX DELTAX) (\BOXIPLUS TY DELTAY] (COND (USERFN (\XCURVESMOOTH X1 Y1 USERFN DISPLAYSTREAM)) (T (\XCURVESMOOTH X1 Y1 NIL DISPLAYSTREAM))) (AND DISPLAYSTREAM (MOVETO X1 Y1 DISPLAYSTREAM] (COND (ENDING (\XCURVESMOOTH (IPLUS \CURX \CURX (IMINUS \OLDX)) (IPLUS \CURY \CURY (IMINUS \OLDY)) USERFN DISPLAYSTREAM) (\XCURVESMOOTH (IPLUS \CURX \CURX (IMINUS \OLDX)) (IPLUS \CURY \CURY (IMINUS \OLDY)) USERFN DISPLAYSTREAM))) (RETURN NIL]) ) (DEFINEQ (BITBLT [LAMBDA (SOURCE SOURCELEFT SOURCEBOTTOM DESTINATION DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION) (* ; "Edited 17-Jul-91 08:49 by matsuda") (DECLARE (LOCALVARS . T)) (* ;; "IRM defined defaults") (OR DESTINATIONLEFT (SETQ DESTINATIONLEFT 0)) (OR DESTINATIONBOTTOM (SETQ DESTINATIONBOTTOM 0)) (COND [(EQ SOURCETYPE 'TEXTURE) (COND ((type? BITMAP DESTINATION) (\BLTSHADE.BITMAP TEXTURE DESTINATION DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT OPERATION CLIPPINGREGION)) ((XLIB:DRAWABLE-P DESTINATION) (\XBLTSHADE.PIXMAP TEXTURE DESTINATION DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT OPERATION CLIPPINGREGION)) (T (PROG ((STREAM (\OUTSTREAMARG DESTINATION))) (RETURN (IMAGEOP 'IMBLTSHADE STREAM TEXTURE STREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT OPERATION CLIPPINGREGION] (T (PROG (SOURCEDD SOURCEBM CLIPPEDSOURCELEFT CLIPPEDSOURCEBOTTOM) [COND [(OR (type? BITMAP SOURCE) (XLIB:DRAWABLE-P SOURCE)) (OR SOURCELEFT (SETQ SOURCELEFT 0)) (OR SOURCEBOTTOM (SETQ SOURCEBOTTOM 0)) (SETQ SOURCEBM SOURCE) (SETQ CLIPPEDSOURCELEFT SOURCELEFT) (SETQ CLIPPEDSOURCEBOTTOM SOURCEBOTTOM) (* ;  "limit the WIDTH and HEIGHT to the source size.") [SETQ WIDTH (COND (WIDTH (IMIN WIDTH (IDIFFERENCE (BITMAPWIDTH SOURCE) SOURCELEFT))) (T (BITMAPWIDTH SOURCE] (SETQ HEIGHT (COND (HEIGHT (IMIN HEIGHT (IDIFFERENCE (BITMAPHEIGHT SOURCE) SOURCEBOTTOM))) (T (BITMAPHEIGHT SOURCE] ((SETQ SOURCEDD (\GETDISPLAYDATA SOURCE)) [OR SOURCELEFT (SETQ SOURCELEFT (fetch (REGION LEFT) of (ffetch (\DISPLAYDATA DDClippingRegion) of SOURCEDD] [OR SOURCEBOTTOM (SETQ SOURCEBOTTOM (fetch (REGION BOTTOM) of (ffetch (\DISPLAYDATA DDClippingRegion ) of SOURCEDD ] (* ;  "do transformations coming out of source") (SETQ SOURCEBM (fetch (\DISPLAYDATA DDDestination) of SOURCEDD)) (SETQ CLIPPEDSOURCELEFT (IMAX (SETQ SOURCELEFT (\DSPTRANSFORMX SOURCELEFT SOURCEDD)) (fetch (\DISPLAYDATA DDClippingLeft) of SOURCEDD))) (SETQ CLIPPEDSOURCEBOTTOM (IMAX (SETQ SOURCEBOTTOM (\DSPTRANSFORMY SOURCEBOTTOM SOURCEDD)) (fetch (\DISPLAYDATA DDClippingBottom) of SOURCEDD))) (* ;  "limit the WIDTH and HEIGHT by the source dimensions.") [SETQ WIDTH (COND (WIDTH (IMIN WIDTH (IDIFFERENCE (fetch (\DISPLAYDATA DDClippingRight) of SOURCEDD) CLIPPEDSOURCELEFT))) (T (IDIFFERENCE (fetch (\DISPLAYDATA DDClippingRight) of SOURCEDD) CLIPPEDSOURCELEFT] [SETQ HEIGHT (COND (HEIGHT (IMIN HEIGHT (IDIFFERENCE (fetch (\DISPLAYDATA DDClippingTop ) of SOURCEDD) CLIPPEDSOURCEBOTTOM))) (T (IDIFFERENCE (fetch (\DISPLAYDATA DDClippingTop) of SOURCEDD) CLIPPEDSOURCEBOTTOM] (* ;  "if texture is not given, use the display stream's.") (OR TEXTURE (SETQ TEXTURE (ffetch (\DISPLAYDATA DDTexture) of SOURCEDD] (COND ((OR (IGEQ 0 WIDTH) (IGEQ 0 HEIGHT)) (* ;  "if either width or height is 0, don't do anything.") (RETURN))) (RETURN (COND [(type? BITMAP DESTINATION) (COND ((WINDOWP SOURCE) (* ;; "bring source window to the top. Note: this doesn't work if the user passes in a display stream onto the screen instead of a window.") (.WHILE.TOP.DS. (\OUTSTREAMARG SOURCE) (\BITBLT.BITMAP SOURCEBM SOURCELEFT SOURCEBOTTOM DESTINATION DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION CLIPPEDSOURCELEFT CLIPPEDSOURCEBOTTOM))) (T (\BITBLT.BITMAP SOURCEBM SOURCELEFT SOURCEBOTTOM DESTINATION DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION CLIPPEDSOURCELEFT CLIPPEDSOURCEBOTTOM] ((XLIB:DRAWABLE-P DESTINATION) (\XBITBLT.PIXMAP SOURCEBM SOURCELEFT SOURCEBOTTOM DESTINATION DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION CLIPPEDSOURCELEFT CLIPPEDSOURCEBOTTOM)) (T (PROG (STREAM) (SETQ STREAM (\OUTSTREAMARG DESTINATION)) (COND ((AND (NEQ SOURCE DESTINATION) (WINDOWP SOURCE)) (* ;; "both source and destination are windows, see if they overlap and use an intermediate bitmap. Note: this doesn't work if the user passes in a display stream onto the screen instead of a window.") [COND ((WINDOWP DESTINATION) (COND ((WOVERLAPP SOURCE DESTINATION) (RETURN (PROG (SCRATCHBM) (.WHILE.TOP.DS. (\OUTSTREAMARG SOURCE) (BITBLT SOURCEBM SOURCELEFT SOURCEBOTTOM (SETQ SCRATCHBM (BITMAPCREATE WIDTH HEIGHT)) 0 0 WIDTH HEIGHT 'INPUT 'REPLACE)) (RETURN (BITBLT SCRATCHBM 0 0 STREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION] (* ;  "bring the source to the top. this should be done uninterruptably but is better than nothing.") (TOTOPW SOURCE))) (IMAGEOP 'IMBITBLT STREAM SOURCEBM SOURCELEFT SOURCEBOTTOM STREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION CLIPPEDSOURCELEFT CLIPPEDSOURCEBOTTOM]) ) (DEFINEQ (XCREATEWFROMPIXMAP [LAMBDA (PIXMAP SCREEN) (* ; "Edited 7-Mar-91 16:39 by matsuda") (PROG (WINDOW WIDTH HEIGHT) (SETQ WINDOW (XCREATEW (create SCREENREGION SCREEN _ (\INSURESCREEN SCREEN) LEFT _ 0 BOTTOM _ 0 WIDTH _ (SETQ WIDTH (PIXMAPWIDTH PIXMAP)) HEIGHT _ (SETQ HEIGHT (PIXMAPHEIGHT PIXMAP))) NIL 0 T)) (WINDOWPROP WINDOW 'MINSIZE (CONS (IMIN MinWindowWidth WIDTH) (IMIN MinWindowWidth HEIGHT))) (CL:SETF (XLIB:GCONTEXT-FUNCTION XLIB::*GC*) CL:BOOLE-1) (XLIB:COPY-AREA PIXMAP XLIB::*GC* 0 0 WIDTH HEIGHT (fetch (WINDOW SAVE) of WINDOW) 0 0) (RETURN WINDOW]) (PIXMAPCREATE [LAMBDA (WIDTH HEIGHT BITSPERPIXEL) (* ; "Edited 6-Mar-91 17:25 by matsuda") (PROG NIL (SETQ BITSPERPIXEL (\INSUREBITSPERPIXEL BITSPERPIXEL)) (RETURN (XLIB:CREATE-PIXMAP :WIDTH WIDTH :HEIGHT HEIGHT :DEPTH BITSPERPIXEL :DRAWABLE XLIB::*ROOT*]) (PIXMAPWIDTH [LAMBDA (PIXMAP) (* ; "Edited 6-Mar-91 16:34 by matsuda") (COND ((XLIB:DRAWABLE-P PIXMAP) (XLIB:DRAWABLE-WIDTH PIXMAP)) ((type? WINDOW PIXMAP) (WINDOWPROP PIXMAP 'WIDTH)) (T (\ILLEGAL.ARG PIXMAP]) (PIXMAPHEIGHT [LAMBDA (PIXMAP) (* ; "Edited 6-Mar-91 16:37 by matsuda") (COND ((XLIB:DRAWABLE-P PIXMAP) (XLIB:DRAWABLE-HEIGHT PIXMAP)) ((type? WINDOW PIXMAP) (WINDOWPROP PIXMAP 'HEIGHT)) (T (\ILLEGAL.ARG PIXMAP]) ) (DEFINEQ (XCREATEW [LAMBDA (REGION TITLE BORDERSIZE NOOPENFLG) (* ; "Edited 10-Apr-91 14:02 by matsuda") (* ;; "creates and returns a window.") (PROG (SCREEN REG DSP DISPLAYDATA TITLEHEIGHT WINDOW WBORDER) (SETQ WBORDER (COND ((NUMBERP BORDERSIZE) (ABS BORDERSIZE)) ((NUMBERP WBorder) (ABS WBorder)) (T 2))) (COND ((type? REGION REGION) (SETQ SCREEN \XSCREEN) (* ;  "Protect against user smashing REGION later on.") (SETQ REG (COPY REGION))) [(type? SCREENREGION REGION) (SETQ SCREEN (fetch (SCREENREGION SCREEN) of REGION)) (SETQ REG (COPY (fetch (SCREENREGION REGION) of REGION] (T (ERROR "Not a region" REG))) [COND ((NULL DSP) (* ;  "Don't have a DSP yet. User passed some kind of region.") (SETQ DSP (XDSPCREATE (fetch (XSCREEN SCDESTINATION) of SCREEN))) (SETQ DISPLAYDATA (fetch (STREAM IMAGEDATA) of DSP] (COND ((NOT (IGREATERP (IMIN (fetch (REGION WIDTH) of REG) (fetch (REGION HEIGHT) of REG)) (UNFOLD WBORDER 2))) (ERROR "Region too small to use as a window" REG))) (SETQ WINDOW (create WINDOW DSP _ DSP REG _ REG SAVE _ NIL WTITLE _ TITLE WBORDER _ WBORDER NEXTW _ 'CLOSED SCREEN _ SCREEN BUTTONEVENTFN _ NIL)) (replace (\DISPLAYDATA XWINDOWHINT) of DISPLAYDATA with WINDOW) (XSHOWWFRAME WINDOW) (DSPDESTINATION (fetch (WINDOW SAVE) of WINDOW) DSP) (ADVISEXWDS WINDOW) (* ;  "make the display stream and window agree about dimensions.") (MOVETOUPPERLEFT WINDOW) (AND TITLE (XLIB:SET-STANDARD-PROPERTIES (fetch (WINDOW SAVE) of WINDOW) :NAME TITLE)) (COND ((NOT NOOPENFLG) (XOPENW WINDOW))) (RETURN WINDOW]) (ADVISEXWDS [LAMBDA (WINDOW OLDREG MOVEONLYFLG) (DECLARE (LOCALVARS . T)) (* ; "Edited 25-Feb-91 18:26 by matsuda") (PROG (R D WBORDERSIZE CLIPREG TWICEBORDER PROC OFFSET) (SETQ R (fetch (WINDOW REG) of WINDOW)) (SETQ D (fetch (WINDOW DSP) of WINDOW)) (SETQ WBORDERSIZE (fetch (WINDOW WBORDER) of WINDOW)) (SETQ TWICEBORDER (UNFOLD WBORDERSIZE 2)) (COND (OLDREG (OR MOVEONLYFLG (DSPCLIPPINGREGION [create REGION LEFT _ 0 BOTTOM _ 0 WIDTH _ (IDIFFERENCE (fetch (REGION WIDTH) of R) TWICEBORDER) HEIGHT _ (IPLUS (IDIFFERENCE (fetch (REGION HEIGHT) of R) TWICEBORDER) (COND [(fetch (WINDOW WTITLE) of WINDOW) (DSPLINEFEED NIL (fetch (XSCREEN SCTITLEDS) of (fetch (WINDOW SCREEN ) of WINDOW] (T 0] D))) (T (SETQ OFFSET (IMAX (FOLDHI WBORDERSIZE 2) (IDIFFERENCE WBORDERSIZE 2))) (DSPXOFFSET OFFSET D) (DSPYOFFSET OFFSET D) (DSPCLIPPINGREGION [create REGION LEFT _ 0 BOTTOM _ 0 WIDTH _ (IDIFFERENCE (fetch (REGION WIDTH) of R) TWICEBORDER) HEIGHT _ (IPLUS (IDIFFERENCE (fetch (REGION HEIGHT) of R) TWICEBORDER) (COND [(fetch (WINDOW WTITLE) of WINDOW) (DSPLINEFEED NIL (fetch (XSCREEN SCTITLEDS) of (fetch (WINDOW SCREEN) of WINDOW] (T 0] D))) [COND ((NULL MOVEONLYFLG) (* ;  "if the previous right margin was the default, change it.") (AND (OR (NOT OLDREG) (EQ (DSPRIGHTMARGIN NIL D) (IDIFFERENCE (fetch (REGION WIDTH) of OLDREG) TWICEBORDER))) (DSPRIGHTMARGIN (IDIFFERENCE (fetch (REGION WIDTH) of R) TWICEBORDER) D)) (COND ((AND (SETQ PROC (WINDOWPROP WINDOW 'PROCESS)) (EQ D (PROCESS.TTY PROC))) (* ;  "if the window changing is a tty, set its linelength.") [PROCESS.EVAL PROC (LIST (FUNCTION PAGEHEIGHT) (IQUOTIENT (fetch (REGION HEIGHT) of (SETQ CLIPREG (DSPCLIPPINGREGION NIL D))) (IMINUS (DSPLINEFEED NIL D] (PROCESS.EVAL PROC '(SETLINELENGTH)) (IF NIL THEN (* ; "try it without this.") (COND ((EQ (PROCESSPROP PROC 'NAME) 'EXEC) (* ;; "in the exec process, make sure the current position is inside the new shape. reuse variables R and TWICEBORDER to save binding.") (COND ((ILESSP (SETQ R (DSPYPOSITION NIL D)) (SETQ TWICEBORDER (fetch (REGION BOTTOM) of CLIPREG ))) (DSPYPOSITION TWICEBORDER D)) ((IGREATERP R (SETQ TWICEBORDER (IPLUS (fetch (REGION HEIGHT) of CLIPREG) TWICEBORDER))) (DSPYPOSITION (IDIFFERENCE TWICEBORDER (FONTPROP D 'ASCENT)) D] (UPDATE/SCROLL/REG WINDOW)) WINDOW]) (XOPENW [LAMBDA (WINDOW) (* ; "Edited 31-Jan-91 15:28 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (COND ((OPENWP WINDOW) (* ;  "used to bring the window to top but doesn't since TOTOPW has been documented.") NIL) (T (PROG [(USEROPENFN (WINDOWPROP WINDOW 'OPENFN] (COND ((\USERFNISDON'T USEROPENFN) (* ; "one of the OPENFNs is DON'T") NIL) (T (* ;  "open it by putting it on top and swapping its bits in") (* \OPENW1 WINDOW) (* ;  "call the openfns after the window has been opened.") (\XOPENW1 WINDOW) (DOUSERFNS USEROPENFN WINDOW) (RETURN WINDOW]) (\XOPENW1 [LAMBDA (WINDOW) (* ; "Edited 1-Feb-91 15:50 by matsuda") (if (EQ (fetch (WINDOW NEXTW) of WINDOW) 'CLOSED) then (PROG ((BASEW (WINDOWPROP WINDOW 'XBASEW)) XWIN REG BORDER XTITLEW TOP (SCREEN (fetch (WINDOW SCREEN) of WINDOW) ) DD) (if BASEW then (XLIB:MAP-WINDOW BASEW) else (WINDOWPROP WINDOW 'XBASEW (SETQ BASEW (\XCREATEBASEW WINDOW))) [AND (WINDOWPROP WINDOW 'TITLE) (SETQ XTITLEW (WINDOWPROP WINDOW 'XTITLEW] (SETQ XWIN (fetch (WINDOW SAVE) of WINDOW)) (SETQ BORDER (XLIB:DRAWABLE-BORDER-WIDTH XWIN)) (SETQ TOP 0) [COND (XTITLEW (XLIB:REPARENT-WINDOW XTITLEW BASEW 0 0) (SETQ TOP (XLIB:DRAWABLE-HEIGHT XTITLEW] (XLIB:REPARENT-WINDOW XWIN BASEW 0 TOP) (XLIB:MAP-SUBWINDOWS BASEW) (XLIB:MAP-WINDOW BASEW)) (UNINTERRUPTABLY (XLIB:MAP-WINDOW (fetch (WINDOW SAVE) of WINDOW)) (replace (WINDOW NEXTW) of WINDOW with (fetch (XSCREEN SCTOPW) of SCREEN)) (replace (XSCREEN SCTOPW) of SCREEN with WINDOW))]) (XCLOSEW [LAMBDA (WINDOW) (* ; "Edited 31-Jan-91 16:12 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (COND ((OPENWP WINDOW) (COND ((\OKTOCLOSEW WINDOW) (AND (OPENWP WINDOW) (\XCLOSEW1 WINDOW)) T]) (\XCLOSEW1 [LAMBDA (WINDOW) (* ; "Edited 1-Feb-91 15:07 by matsuda") (LET (SCREEN NEXTW SAVE) (SETQ SCREEN (fetch (WINDOW SCREEN) of WINDOW)) (SETQ NEXTW (fetch (XSCREEN SCTOPW) of SCREEN)) (COND ((NULL NEXTW) NIL) ((EQ NEXTW WINDOW) (UNINTERRUPTABLY (XLIB:UNMAP-WINDOW (WINDOWPROP NEXTW 'XBASEW)) (replace (XSCREEN SCTOPW) of SCREEN with (fetch (WINDOW NEXTW) of NEXTW)) (replace (WINDOW NEXTW) of WINDOW with 'CLOSED)) T) (T (PROG NIL (SETQ SAVE NEXTW) (SETQ NEXTW (fetch (WINDOW NEXTW) of SAVE)) LOOP (COND (NEXTW (COND [(EQ NEXTW WINDOW) (UNINTERRUPTABLY (XLIB:UNMAP-WINDOW (WINDOWPROP NEXTW 'XBASEW)) (replace (WINDOW NEXTW) of SAVE with (fetch (WINDOW NEXTW) of NEXTW)) (replace (WINDOW NEXTW) of NEXTW with 'CLOSED))] (T (SETQ SAVE NEXTW) (SETQ NEXTW (fetch (WINDOW NEXTW) of SAVE)) (GO LOOP]) (\XSFFixClippingRegion [LAMBDA (DISPLAYDATA) (* ; "Edited 25-Feb-91 18:43 by matsuda") (* ;; "compute the top, bottom, left and right edges of the clipping region in destination coordinates to save computation every BltChar and coordinate transformation taking into account the size of the bit map as well as the clipping region.") (PROG ((CLIPREG (ffetch (\DISPLAYDATA DDClippingRegion) of DISPLAYDATA)) (BM (ffetch (\DISPLAYDATA DDDestination) of DISPLAYDATA)) (GC (ffetch (\DISPLAYDATA DDPILOTBBT) of DISPLAYDATA))) (freplace (\DISPLAYDATA DDClippingRight) of DISPLAYDATA with (IMAX 0 (\DSPTRANSFORMX (IPLUS (ffetch (REGION LEFT) of CLIPREG) (ffetch (REGION WIDTH) of CLIPREG)) DISPLAYDATA))) (freplace (\DISPLAYDATA DDClippingLeft) of DISPLAYDATA with (IMIN (IMAX (\DSPTRANSFORMX (ffetch (REGION LEFT) of CLIPREG) DISPLAYDATA) 0) MAX.SMALL.INTEGER)) (freplace (\DISPLAYDATA DDClippingTop) of DISPLAYDATA with (IMAX 0 (\DSPTRANSFORMY (IPLUS (ffetch (REGION BOTTOM) of CLIPREG) (ffetch (REGION HEIGHT) of CLIPREG)) DISPLAYDATA))) (freplace (\DISPLAYDATA DDClippingBottom) of DISPLAYDATA with (IMIN (IMAX (\DSPTRANSFORMY (ffetch (REGION BOTTOM) of CLIPREG) DISPLAYDATA) 0) MAX.SMALL.INTEGER)) (CL:SETF (XLIB:GCONTEXT-CLIP-MASK GC) (LIST (fetch (\DISPLAYDATA DDClippingLeft) of DISPLAYDATA) (IDIFFERENCE (XLIB:DRAWABLE-HEIGHT BM) (fetch (\DISPLAYDATA DDClippingTop) of DISPLAYDATA)) (fetch (REGION WIDTH) of CLIPREG) (fetch (REGION HEIGHT) of CLIPREG]) (XSHOWWFRAME [LAMBDA (WIN) (* ; "Edited 27-Feb-91 17:38 by matsuda") (* ;; "Displays the border and title in the save image of a window") [PROG ((TITLE (fetch (WINDOW WTITLE) of WIN)) (BORDER (fetch (WINDOW WBORDER) of WIN)) (SAVEIMAGE (fetch (WINDOW SAVE) of WIN)) (SCREEN (fetch (WINDOW SCREEN) of WIN)) (REG (fetch (WINDOW REG) of WIN)) BLACKPART (TITLE-H 0)) (* ; "make most of the border black") (SETQ BLACKPART (IMAX (FOLDHI BORDER 2) (IDIFFERENCE BORDER 2))) (XSHOWWTITLE TITLE SAVEIMAGE BORDER NIL WIN) [AND TITLE (SETQ TITLE-H (XLIB:DRAWABLE-HEIGHT (WINDOWPROP WIN 'XTITLEW] (if SAVEIMAGE then (CL:SETF (XLIB:DRAWABLE-Y SAVEIMAGE) TITLE-H) (CL:SETF (XLIB:DRAWABLE-X SAVEIMAGE) 0) (CL:SETF (XLIB:DRAWABLE-WIDTH SAVEIMAGE) (IDIFFERENCE (fetch (REGION WIDTH) of REG) (ITIMES BLACKPART 2))) [CL:SETF (XLIB:DRAWABLE-HEIGHT SAVEIMAGE) (IDIFFERENCE (fetch (REGION HEIGHT) of REG) (IPLUS TITLE-H (ITIMES BLACKPART 2] else (replace SAVE of WIN with (SETQ SAVEIMAGE (XLIB:CREATE-WINDOW :PARENT (fetch (XSCREEN SCDESTINATION) of SCREEN) :X (fetch (REGION LEFT) of REG) :Y (IDIFFERENCE (fetch (XSCREEN SCHEIGHT) of SCREEN) (IDIFFERENCE (fetch (REGION TOP) of REG) (IPLUS TITLE-H BLACKPART))) :WIDTH (IDIFFERENCE (fetch (REGION WIDTH) of REG) (ITIMES BLACKPART 2)) :HEIGHT (IDIFFERENCE (fetch (REGION HEIGHT) of REG) (IPLUS TITLE-H (ITIMES BLACKPART 2))) :BORDER-WIDTH BLACKPART :BACKGROUND XLIB::*WHITE* :BIT-GRAVITY :NORTH-WEST :BACKING-STORE :ALWAYS] WIN]) (XSHOWWTITLE [LAMBDA (TITLE BM BORDER CENTERFLG WINDOW) (* ; "Edited 27-Feb-91 16:51 by matsuda") (PROG ((XTITLEW (WINDOWPROP WINDOW 'XTITLEW)) (XBASEW (WINDOWPROP WINDOW 'XBASEW)) FONT HEIGHT ASCENT (REG (fetch (WINDOW REG) of WINDOW))) (if TITLE then (SETQ HEIGHT (IPLUS (SETQ ASCENT (XLIB:FONT-ASCENT XLIB::*DEFAULTFONT*)) (XLIB:FONT-DESCENT XLIB::*DEFAULTFONT*))) (if XTITLEW then (CL:SETF (XLIB:DRAWABLE-WIDTH XTITLEW) (fetch (REGION WIDTH) of REG)) else (SETQ XTITLEW (XLIB:CREATE-WINDOW :PARENT (OR XBASEW XLIB::*ROOT*) :X 0 :Y 0 :WIDTH (IPLUS (fetch (REGION WIDTH) of REG) (IMAX (ITIMES (- BORDER 2) 2) 0)) :HEIGHT (IPLUS HEIGHT 2) :BORDER-WIDTH 0 :BACKGROUND XLIB::*BLACK* :BACKING-STORE :ALWAYS :BIT-GRAVITY :NORTH-WEST)) ) (if XBASEW then (XLIB:MAP-WINDOW XTITLEW)) (CL:SETF (XLIB:GCONTEXT-FONT XLIB::*GC*) XLIB::*DEFAULTFONT*) (CL:SETF (XLIB:GCONTEXT-FOREGROUND XLIB::*GC*) XLIB::*WHITE*) (CL:SETF (XLIB:GCONTEXT-BACKGROUND XLIB::*GC*) XLIB::*BLACK*) (CL:SETF (XLIB:GCONTEXT-FUNCTION XLIB::*GC*) CL:BOOLE-1) (XLIB:CLEAR-AREA XTITLEW) (XLIB:DRAW-IMAGE-GLYPHS XTITLEW XLIB::*GC* BORDER (ADD1 ASCENT) TITLE) else (AND XTITLEW (XLIB:DESTROY-WINDOW XTITLEW)) (SETQ XTITLEW NIL)) (WINDOWPROP WINDOW 'XTITLEW XTITLEW) (RETURN XTITLEW]) (\XCREATEBASEW [LAMBDA (WINDOW) (* ; "Edited 11-Jul-91 14:07 by matsuda") (PROG ((XWIN (fetch (WINDOW SAVE) of WINDOW)) (XTITLEW (WINDOWPROP WINDOW 'XTITLEW)) (REG (fetch (WINDOW REG) WINDOW)) (XCURSOR (XCURSORFROMCURSOR DEFAULTCURSOR)) WIDTH HEIGHT XBORDER BASEW TITLE) [SETQ WIDTH (IPLUS (XLIB:DRAWABLE-WIDTH XWIN) (SETQ XBORDER (ITIMES (XLIB:DRAWABLE-BORDER-WIDTH XWIN) 2] (SETQ HEIGHT (IPLUS (XLIB:DRAWABLE-HEIGHT XWIN) XBORDER)) [COND (XTITLEW (SETQ HEIGHT (IPLUS HEIGHT (XLIB:DRAWABLE-HEIGHT XTITLEW] (SETQ BASEW (XLIB:CREATE-WINDOW :PARENT XLIB::*ROOT* :X (fetch (REGION LEFT) of REG) :Y (fetch (REGION TOP) of REG) :WIDTH WIDTH :HEIGHT HEIGHT :BORDER-WIDTH 0 :BACKGROUND XLIB::*WHITE* :GRAVITY :NORTH-WEST :CURSOR XCURSOR :EVENT-MASK (XLIB:MAKE-EVENT-MASK :STRUCTURE-NOTIFY :KEY-PRESS :KEY-RELEASE :BUTTON-PRESS :BUTTON-RELEASE :POINTER-MOTION :ENTER-WINDOW :LEAVE-WINDOW))) (WINDOWPROP WINDOW 'XCURSOR XCURSOR) (AND (SETQ TITLE (WINDOWPROP WINDOW 'TITLE)) (XLIB:SET-STANDARD-PROPERTIES BASEW :NAME TITLE :INPUT :ON)) (RETURN BASEW]) (\DSPCLIPPINGREGION.XDISPLAY [LAMBDA (DISPLAYSTREAM REGION) (* ; "Edited 1-Feb-91 10:01 by matsuda") (* ;; "sets the clipping region of a display stream.") (PROG ((DD (\GETDISPLAYDATA DISPLAYSTREAM))) (RETURN (PROG1 (ffetch DDClippingRegion of DD) [COND (REGION (OR (type? REGION REGION) (ERROR REGION " is not a REGION.")) (UNINTERRUPTABLY (freplace DDClippingRegion of DD with REGION) (\XSFFixClippingRegion DD) (\INVALIDATEDISPLAYCACHE DD))])]) ) (DEFINEQ (\XDSPPRINTCHAR [LAMBDA (STREAM CHARCODE) (* ; "Edited 15-Feb-91 17:37 by matsuda") (PROG ((DD (ffetch (STREAM IMAGEDATA) of STREAM))) (* \CHECKCARET STREAM) (\MAYBE-DRIBBLE-CHAR STREAM CHARCODE) (* ; "if dribbling, dribble.") (SELECTC (ffetch (TERMCODE CCECHO) of (\SYNCODE \PRIMTERMSA CHARCODE)) (REAL.CCE (* ;; "All fat characters are defined as REAL according to \SYNCODE, so we don't have worry about any of the special cases") [COND ((IGREATERP CHARCODE (CONSTANT (IMAX (CHARCODE EOL) (CHARCODE CR) (CHARCODE LF) ERASECHARCODE))) (* ;  "This is for sure a printing character; take the fast way out.") (\XBLTCHAR CHARCODE STREAM DD) (add (ffetch (STREAM CHARPOSITION) of STREAM) 1)) (T (* ; "Take the slow check.") (SELECTC CHARCODE ((CHARCODE (EOL CR LF)) (\XDSPPRINTCR/LF CHARCODE STREAM) (freplace (STREAM CHARPOSITION) of STREAM with 0)) (ERASECHARCODE (DSPBACKUP (CHARWIDTH (CHARCODE A) STREAM) STREAM) (* ;  "line buffering routines have already taken care of backing up the position") 0) (PROGN (\XBLTCHAR CHARCODE STREAM DD) (add (ffetch (STREAM CHARPOSITION) of STREAM) 1]) (INDICATE.CCE (* ;  "Make sure that all the chars in the indicate-string fit on the line or wrap-around together.") (PROG (STR) (SETQ STR (\INDICATESTRING CHARCODE)) (* ; "This isn't right for rotated fonts. But then there should probably be a separate rotated outcharfn") [COND ((IGREATERP (\STRINGWIDTH.DISPLAY STREAM STR) (IDIFFERENCE (ffetch (\DISPLAYDATA DDRightMargin) of DD) (ffetch (\DISPLAYDATA DDXPOSITION) of DD))) (\XDSPPRINTCR/LF (CHARCODE EOL) STREAM) (freplace (STREAM CHARPOSITION) of STREAM with (NCHARS STR))) (T (add (ffetch (STREAM CHARPOSITION) of STREAM) (NCHARS STR] (for I from 1 do (\XBLTCHAR (OR (NTHCHARCODE STR I) (RETURN)) STREAM DD)))) (SIMULATE.CCE (SELCHARQ CHARCODE ((EOL CR LF) (\XDSPPRINTCR/LF CHARCODE STREAM) (freplace (STREAM CHARPOSITION) of STREAM with 0)) (ESCAPE (\XBLTCHAR (CHARCODE $) STREAM DD) (add (ffetch (STREAM CHARPOSITION) of STREAM) 1)) (BELL (* ;  "make switching of bits uninterruptable but allow interrupts between flashes.") (SELECTC \MACHINETYPE ((LIST \DANDELION \DAYBREAK \MAIKO) [PLAYTUNE '((880 . 2500]) (FLASHWINDOW (WFROMDS STREAM)))) (TAB (PROG (TABWIDTH (SPACEWIDTH (CHARWIDTH (CHARCODE SPACE) STREAM))) (SETQ TABWIDTH (UNFOLD SPACEWIDTH 8)) (COND ((IGREATERP (\DISPLAYSTREAMINCRXPOSITION (SETQ TABWIDTH (IDIFFERENCE TABWIDTH (MOD (IDIFFERENCE (ffetch (\DISPLAYDATA DDXPOSITION) of DD) (ffetch (\DISPLAYDATA DDLeftMargin) of DD)) TABWIDTH))) DD) (ffetch (\DISPLAYDATA DDRightMargin) of DD)) (* ;  "tab was past rightmargin, force cr.") (\XDSPPRINTCR/LF (CHARCODE EOL) STREAM))) (* ;  "return the number of spaces taken.") (add (ffetch (STREAM CHARPOSITION) of STREAM) (IQUOTIENT TABWIDTH SPACEWIDTH)))) (PROGN (* ;  "this case was copied from \DSCCOUT.") (\XBLTCHAR CHARCODE STREAM DD) (add (ffetch (STREAM CHARPOSITION) of STREAM) 1)))) (IGNORE.CCE) (SHOULDNT]) (\XBLTCHAR [LAMBDA (CHARCODE DISPLAYSTREAM DISPLAYDATA) (DECLARE (LOCALVARS . T)) (* ; "Edited 1-Oct-91 13:38 by jn") (PROG (LOCAL1 RIGHT LEFT CURX CURY CHAR8CODE DESTINATION) (SETQ CHAR8CODE (\CHAR8CODE CHARCODE)) CRLP [COND ((NOT (EQ (ffetch (\DISPLAYDATA DDCHARSET) of DISPLAYDATA) (\CHARSET CHARCODE))) (\CHANGECHARSET.XDISPLAY DISPLAYDATA (\CHARSET CHARCODE] (SETQ CURX (ffetch (\DISPLAYDATA DDXPOSITION) of DISPLAYDATA)) (SETQ RIGHT (IPLUS CURX (\DSPGETCHARWIDTH CHAR8CODE DISPLAYDATA))) [COND ((IGREATERP RIGHT (ffetch (\DISPLAYDATA DDRightMargin) of DISPLAYDATA)) (* ;  "would go past right margin, force a cr") (COND ((IGREATERP CURX (ffetch (\DISPLAYDATA DDLeftMargin) of DISPLAYDATA)) (* ;  "don't bother CR if position is at left margin anyway. This also serves to break the loop.") (\XDSPPRINTCR/LF (CHARCODE EOL) DISPLAYSTREAM) (* ;  "reuse the code in the test of this conditional rather than repeat it here.") (GO CRLP] (* ;  "update the display stream x position.") (freplace (\DISPLAYDATA DDXPOSITION) of DISPLAYDATA with (IPLUS CURX ( \DSPGETCHARWIDTH CHAR8CODE DISPLAYDATA))) (* ;  "transforms an x coordinate into the destination coordinate.") (SETQ LOCAL1 (ffetch (\DISPLAYDATA DDXOFFSET) of DISPLAYDATA)) (SETQ CURX (IPLUS CURX LOCAL1)) (SETQ CURY (IPLUS (ffetch (\DISPLAYDATA DDYPOSITION) of DISPLAYDATA) (ffetch (\DISPLAYDATA DDXOFFSET) of DISPLAYDATA))) (XLIB:DRAW-IMAGE-GLYPH (SETQ DESTINATION (fetch (\DISPLAYDATA DDDestination) of DISPLAYDATA)) (fetch (\DISPLAYDATA DDPILOTBBT) of DISPLAYDATA) CURX (IDIFFERENCE (\GETWINDOWHEIGHT (* ;  "No roundtrip needed BUT: we have to remember to keep the height in sync with reality. /jarl") (WFROMDS DISPLAYSTREAM)) CURY) CHAR8CODE) (RETURN T]) (\XDSPPRINTCR/LF [LAMBDA (CHARCODE DISPLAY-STREAM) (* ; "Edited 28-Feb-91 12:05 by matsuda") (COND ((EQ DISPLAY-STREAM (TTYDISPLAYSTREAM)) (\STOPSCROLL?) (* ;  "\STOPSCROLL may have turned on the caret.") (* \CHECKCARET DISPLAY-STREAM) )) (PROG (BTM AMOUNT/BELOW Y ROTATION FONT (DD (fetch (STREAM IMAGEDATA) of DISPLAY-STREAM)) ) (COND ((EQ CHARCODE (CHARCODE EOL)) (* ; "on LF, no change in X") (COND ((SETQ Y (fetch (\DISPLAYDATA DDEOLFN) of DD)) (* ; "call the eol function for ds.") (APPLY* Y DISPLAY-STREAM))) (DSPXPOSITION (ffetch (\DISPLAYDATA DDLeftMargin) of DD) DISPLAY-STREAM))) (SETQ Y (IPLUS (ffetch (\DISPLAYDATA DDYPOSITION) of DD) (ffetch (\DISPLAYDATA DDLINEFEED) of DD))) [COND ((AND (fetch (\DISPLAYDATA DDScroll) of DD) (IGREATERP (SETQ AMOUNT/BELOW (IDIFFERENCE (IPLUS (SETQ BTM (fetch (\DISPLAYDATA DDClippingBottom ) of DD)) (fetch (FONTDESCRIPTOR \SFDescent) of (fetch (\DISPLAYDATA DDFONT) of DD))) (\DSPTRANSFORMY Y DD))) 0)) (* ;; "automatically scroll up enough to make the entire next character visible. Descent check is so that the bottoms of characters will be printed also.") [PROG (LFT WDTH BKGRND DBITMAP HGHT H) (SETQ LFT (fetch (\DISPLAYDATA DDClippingLeft) of DD)) (SETQ DBITMAP (fetch (\DISPLAYDATA DDDestination) of DD)) (SETQ HGHT (IDIFFERENCE (ffetch (\DISPLAYDATA DDClippingTop) of DD) BTM)) (SETQ WDTH (IDIFFERENCE (fetch (\DISPLAYDATA DDClippingRight) of DD) LFT)) (SETQ BKGRND (ffetch (\DISPLAYDATA DDTexture) of DD)) (COND ((IGREATERP AMOUNT/BELOW HGHT) (* ;  "scrolling more than the window size, use different method.") (* ;  "clear the window with background.") (BLTSHADE BKGRND DISPLAY-STREAM LFT BTM WDTH HGHT 'REPLACE)) (T (CL:SETF (XLIB:GCONTEXT-FUNCTION XLIB::*GC*) CL:BOOLE-1) (XLIB:COPY-AREA DBITMAP XLIB::*GC* LFT [IDIFFERENCE (SETQ H ( XLIB:DRAWABLE-HEIGHT DBITMAP)) (IPLUS BTM (SETQ HGHT (IDIFFERENCE HGHT AMOUNT/BELOW] WDTH HGHT DBITMAP LFT (IDIFFERENCE H (IPLUS (IPLUS BTM AMOUNT/BELOW) HGHT))) (BLTSHADE BKGRND DISPLAY-STREAM LFT BTM WDTH AMOUNT/BELOW 'REPLACE] (SETQ Y (IPLUS Y AMOUNT/BELOW] (DSPYPOSITION Y DISPLAY-STREAM]) ) (DEFINEQ (OPENWINDOWS [LAMBDA (SCREEN) (* ; "Edited 15-Feb-91 16:24 by matsuda") (* ;; "returns a list of all open windows") (PROG (WINDOW WINDOWS) (COND ((EQ SCREEN T) (* ; "Return all open windows.") (SETQ WINDOWS (for SCREEN in \SCREENS join (OPENWINDOWS SCREEN))) (RETURN WINDOWS))) (SETQ SCREEN (\INSURESCREEN SCREEN)) [SETQ WINDOW (COND ((type? SCREEN SCREEN) (fetch (SCREEN SCTOPW) of SCREEN)) ((type? XSCREEN SCREEN) (fetch (XSCREEN SCTOPW) of SCREEN] (while WINDOW do (SETQ WINDOWS (CONS WINDOW WINDOWS)) (SETQ WINDOW (fetch (WINDOW NEXTW) of WINDOW))) (SETQ WINDOWS (DREVERSE WINDOWS)) (RETURN WINDOWS]) (\INSURESCREEN [LAMBDA (SCREEN) (* ; "Edited 15-Feb-91 16:22 by matsuda") (COND ((type? SCREEN SCREEN) SCREEN) ((type? XSCREEN SCREEN) SCREEN) ((NULL SCREEN) \CURSORSCREEN) (T (\ILLEGAL.ARG SCREEN]) (DSPSOURCETYPE [LAMBDA (SOURCETYPE DISPLAYSTREAM) (* ; "Edited 15-Feb-91 13:02 by matsuda") (* ;; "sets the operation field of a display stream") (PROG ((DD (\GETDISPLAYDATA DISPLAYSTREAM)) PBT) (RETURN (PROG1 (fetch DDSOURCETYPE of DD) [COND (SOURCETYPE (OR (FMEMB SOURCETYPE '(INPUT INVERT)) (LISPERROR "ILLEGAL ARG" SOURCETYPE)) (UNINTERRUPTABLY (freplace DDSOURCETYPE of DD with SOURCETYPE) (* ;  "update other fields that depend on operation.") [COND ((type? PILOTBBT (SETQ PBT (fetch DDPILOTBBT of DD))) (\SETPBTFUNCTION PBT SOURCETYPE (fetch DDOPERATION of DD))) ((XLIB:GCONTEXT-P PBT) (\SETGCFUNCTION PBT SOURCETYPE (fetch DDOPERATION of DD])])]) (PUTWINDOWPROP [LAMBDA (WINDOW PROP VALUE) (* ; "Edited 27-Feb-91 16:46 by matsuda") [OR (type? WINDOW WINDOW) (COND ((DISPLAYSTREAMP (\OUTSTREAMARG WINDOW)) (SETQ WINDOW (WFROMDS WINDOW))) (T (\ILLEGAL.ARG WINDOW] (SELECTQ PROP (RIGHTBUTTONFN (PROG1 (fetch (WINDOW RIGHTBUTTONFN) of WINDOW) (replace (WINDOW RIGHTBUTTONFN) of WINDOW with VALUE))) (BUTTONEVENTFN (PROG1 (fetch (WINDOW BUTTONEVENTFN) of WINDOW) (replace (WINDOW BUTTONEVENTFN) of WINDOW with VALUE))) (CLOSEFN (PROG1 (fetch (WINDOW CLOSEFN) of WINDOW) (replace (WINDOW CLOSEFN) of WINDOW with VALUE))) (MOVEFN (PROG1 (fetch (WINDOW MOVEFN) of WINDOW) (replace (WINDOW MOVEFN) of WINDOW with VALUE))) (CURSORINFN (PROG1 (fetch (WINDOW CURSORINFN) of WINDOW) (replace (WINDOW CURSORINFN) of WINDOW with VALUE))) (CURSOROUTFN (PROG1 (fetch (WINDOW CURSOROUTFN) of WINDOW) (replace (WINDOW CURSOROUTFN) of WINDOW with VALUE))) (CURSORMOVEDFN (PROG1 (fetch (WINDOW CURSORMOVEDFN) of WINDOW) (replace (WINDOW CURSORMOVEDFN) of WINDOW with VALUE))) (DSP (ERROR "Can't change DSP of a window" WINDOW)) (SCREEN (ERROR "Can't change SCREEN of a window" WINDOW)) (RESHAPEFN (PROG1 (fetch (WINDOW RESHAPEFN) of WINDOW) (replace (WINDOW RESHAPEFN) of WINDOW with VALUE))) (REPAINTFN (PROG1 (fetch (WINDOW REPAINTFN) of WINDOW) (replace (WINDOW REPAINTFN) of WINDOW with VALUE))) (EXTENT (PROG1 (fetch (WINDOW EXTENT) of WINDOW) (OR (NULL VALUE) (REGIONP VALUE) (\ILLEGAL.ARG VALUE)) (replace (WINDOW EXTENT) of WINDOW with VALUE))) (SCROLLFN (PROG1 (fetch (WINDOW SCROLLFN) of WINDOW) (replace (WINDOW SCROLLFN) of WINDOW with VALUE) (UPDATE/SCROLL/REG WINDOW))) (IMAGECOVERED (ERROR "Not implemented to change IMAGECOVERED property." WINDOW)) (HEIGHT (ERROR "Not implemented to change HEIGHT as property." WINDOW)) (WIDTH (ERROR "Not implemented to change WIDTH as property." WINDOW)) (REGION [PROG (CURREGION) (SETQ CURREGION (WINDOWPROP WINDOW 'REGION)) (COND ((NOT (REGIONP VALUE)) (\ILLEGAL.ARG VALUE))) (* ;; "there is no check for where the new region is nor how big it is; this is left to MOVEW and RESHAPEW.") (COND ((AND (EQ (fetch (REGION WIDTH) of CURREGION) (fetch (REGION WIDTH) of VALUE)) (EQ (fetch (REGION HEIGHT) of CURREGION) (fetch (REGION HEIGHT) of VALUE))) (* ;  "width and height are the same, move the window") (MOVEW WINDOW (fetch (REGION LEFT) of VALUE) (fetch (REGION BOTTOM) of VALUE))) (T (* ; "dimensions changed, reshape it.") (SHAPEW WINDOW VALUE]) (NEWREGIONFN (PROG1 (fetch (WINDOW NEWREGIONFN) of WINDOW) (replace (WINDOW NEWREGIONFN) of WINDOW with VALUE))) (TITLE (PROG1 (fetch (WINDOW WTITLE) of WINDOW) (COND ((type? SCREEN (fetch (WINDOW SCREEN) of WINDOW)) (RESHOWTITLE VALUE WINDOW)) ((type? XSCREEN (fetch (WINDOW SCREEN) of WINDOW)) (replace (WINDOW WTITLE) of WINDOW with VALUE) (XSHOWWTITLE VALUE NIL (fetch (WINDOW WBORDER) of WINDOW) NIL WINDOW))))) (BORDER (PROG1 (fetch (WINDOW WBORDER) of WINDOW) (COND ((NUMBERP VALUE) (RESHOWBORDER VALUE WINDOW)) (T (\ILLEGAL.ARG VALUE))))) (PROCESS (PROG1 (fetch (WINDOW PROCESS) of WINDOW) (replace (WINDOW PROCESS) of WINDOW with VALUE))) (WINDOWENTRYFN (PROG1 (fetch (WINDOW WINDOWENTRYFN) of WINDOW) (replace (WINDOW WINDOWENTRYFN) of WINDOW with VALUE))) (PROG (OLDDATA OLDVALUE) (SETQ OLDDATA (fetch (WINDOW USERDATA) of WINDOW)) (RETURN (PROG1 (COND (OLDDATA (SETQ OLDVALUE (LISTGET OLDDATA PROP)) [COND (VALUE (LISTPUT OLDDATA PROP VALUE)) (OLDVALUE (* Remove the property) (COND ((EQ (CAR OLDDATA) PROP) (replace (WINDOW USERDATA) of WINDOW with (CDDR OLDDATA))) (T (for TAIL on (CDR OLDDATA) by (CDDR TAIL) when (EQ (CADR TAIL) PROP) do (FRPLACD TAIL (CDDDR TAIL)) (RETURN] OLDVALUE) (VALUE (replace (WINDOW USERDATA) of WINDOW with (LIST PROP VALUE)) (* know old value is NIL) NIL)) (COND ((AND (fetch (WINDOW WTITLE) of WINDOW) (EQ PROP 'WINDOWTITLESHADE)) (* change windowtitleshade.) (RESHOWTITLE (fetch (WINDOW WTITLE) of WINDOW) WINDOW T))))]) (RESHOWBORDER [LAMBDA (BORDER WINDOW) (* ; "Edited 27-Feb-91 17:15 by matsuda") (* ;; "updates a windows display with a new border") (* ;  "if the border is the same, don't change anything.") (OR (EQ BORDER (fetch (WINDOW WBORDER) of WINDOW)) (COND ((type? SCREEN (fetch (WINDOW SCREEN) of WINDOW)) (\RESHOWBORDER1 BORDER (fetch (WINDOW WBORDER) of WINDOW) WINDOW)) ((type? XSCREEN (fetch (WINDOW SCREEN) of WINDOW)) (\XRESHOWBORDER1 BORDER (fetch (WINDOW WBORDER) of WINDOW) WINDOW]) (\XRESHOWBORDER1 [LAMBDA (NEWBORDER OLDBORDER WINDOW) (* ; "Edited 27-Feb-91 17:45 by matsuda") (PROG ((REGION (fetch (WINDOW REG) of WINDOW)) (OLDSAVE (fetch (WINDOW SAVE) of WINDOW)) DELTA NUWIDTH NUHEIGHT XBASEW) (SETQ DELTA (IDIFFERENCE NEWBORDER OLDBORDER)) (SETQ NUWIDTH (IPLUS (fetch (REGION WIDTH) of REGION) (ITIMES DELTA 2))) [SETQ NUHEIGHT (IDIFFERENCE (IPLUS (fetch (REGION HEIGHT) of (DSPCLIPPINGREGION NIL (fetch (WINDOW DSP) of WINDOW))) (ITIMES NEWBORDER 2)) (COND [(fetch (WINDOW WTITLE) of WINDOW) (DSPLINEFEED NIL (fetch (XSCREEN SCTITLEDS) of (fetch (WINDOW SCREEN) of WINDOW] (T 0] (replace (WINDOW WBORDER) of WINDOW with NEWBORDER) (CL:SETF (XLIB:DRAWABLE-BORDER-WIDTH OLDSAVE) (IMAX (FOLDHI NEWBORDER 2) (IDIFFERENCE NEWBORDER 2))) (replace (WINDOW REG) of WINDOW with (create REGION LEFT _ (IDIFFERENCE (fetch (REGION LEFT) of REGION) DELTA) BOTTOM _ (IDIFFERENCE (fetch (REGION BOTTOM ) of REGION) DELTA) WIDTH _ NUWIDTH HEIGHT _ NUHEIGHT)) (SETQ XBASEW (WINDOWPROP WINDOW 'XBASEW)) (if (SETQ XBASEW (WINDOWPROP WINDOW 'XBASEW)) then (CL:SETF (XLIB:DRAWABLE-WIDTH XBASEW) NUWIDTH) (CL:SETF (XLIB:DRAWABLE-HEIGHT XBASEW) NUHEIGHT)) (UPDATE/SCROLL/REG WINDOW) (XSHOWWFRAME WINDOW]) (\GETWINDOWHEIGHT [LAMBDA (WINDOW) (* ; "Edited 27-Feb-91 16:24 by matsuda") (* ;; "calculate the height from the REGION in case user has changed the clipping region. This won't work if the height of the title display stream has changed.") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (DIFFERENCE (fetch (REGION HEIGHT) of (fetch (WINDOW REG) of WINDOW)) (DIFFERENCE (ITIMES 2 (fetch (WINDOW WBORDER) of WINDOW)) (COND [(fetch (WINDOW WTITLE) of WINDOW) (DSPLINEFEED NIL (COND ((type? SCREEN (fetch (WINDOW SCREEN) of WINDOW )) (fetch (SCREEN SCTITLEDS) of (fetch (WINDOW SCREEN) of WINDOW))) ((TYPE? XSCREEN (fetch (WINDOW SCREEN) of WINDOW)) (fetch (XSCREEN SCTITLEDS) of (fetch (WINDOW SCREEN) of WINDOW] (T 0]) ) (DEFINEQ (XWHICHW [LAMBDA NIL (* ; "Edited 10-Apr-91 14:11 by matsuda") XLASTWINDOW]) ) (DEFINEQ (TOTOPW [LAMBDA (WINDOW NOCALLTOTOPFNFLG) (* ; "Edited 2-Oct-91 15:13 by jn") (* ;; "user entry to bring a window to the top. Unless NOCALLTOTOPFNFLG is non-NIL, it will call the windows TOTOPFN") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (COND [(type? XSCREEN (fetch (WINDOW SCREEN) of WINDOW)) (XLIB:CIRCULATE-WINDOW-UP (WINDOWPROP WINDOW 'XBASEW] ((EQ WINDOW (fetch (SCREEN SCTOPW) of (fetch (WINDOW SCREEN) of WINDOW))) (PROGN (* (SETQ \TOPWDS (fetch  (WINDOW DSP) of WINDOW))) NIL)) ((OPENWP WINDOW) (OR NOCALLTOTOPFNFLG (DOUSERFNS (WINDOWPROP WINDOW 'TOTOPFN) WINDOW)) (\INTERNALTOTOPW WINDOW)) ((OPENW WINDOW) (* ;  "if it is not open, open it and then call the TOTOPFN") (OR NOCALLTOTOPFNFLG (DOUSERFNS (WINDOWPROP WINDOW 'TOTOPFN) WINDOW))) (T (* ;  "window won't open probably because of DON'T OPENFN") (ERROR "Window won't open; Can't be brought to top." WINDOW))) WINDOW]) ) (DEFINEQ (XSHAPEW1 [LAMBDA (WINDOW REGION) (DECLARE (LOCALVARS . T)) (* ; "Edited 16-Feb-91 16:14 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (OR (REGIONP REGION) (\ILLEGAL.ARG REGION)) (PROG ((OLDREGION (fetch (WINDOW REG) of WINDOW)) (OLDCLIPREG (DSPCLIPPINGREGION NIL (fetch (WINDOW DSP) of WINDOW))) (WBORDER (fetch (WINDOW WBORDER) of WINDOW)) SCREEN NUSAV NOWOPEN?) (SETQ SCREEN (fetch (WINDOW SCREEN) of WINDOW)) (UNINTERRUPTABLY (* ; "Save window image") (replace (WINDOW REG) of WINDOW with REGION) (ADVISEXWDS WINDOW OLDREGION) (XSHOWWFRAME WINDOW)) (* ; " (DOUSERFNS2 (OR (fetch (WINDOW RESHAPEFN) of WINDOW) (FUNCTION RESHAPEBYREPAINTFN)) WINDOW NUSAV (create REGION LEFT _ WBORDER BOTTOM _ WBORDER WIDTH _ (fetch (REGION WIDTH) of OLDCLIPREG) HEIGHT _ (fetch (REGION HEIGHT) of OLDCLIPREG)) OLDREGION)") (RETURN WINDOW]) (XMOVEW [LAMBDA (WINDOW POSorX Y) (* ; "Edited 7-Mar-91 14:24 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (PROG ((OLDREGION (fetch (WINDOW REG) of WINDOW)) (USERMOVEFN (fetch (WINDOW MOVEFN) of WINDOW)) POS NEWREGION OLDLEFT OLDBOTTOM OLDWIDTH OLDHEIGHT XBASEW) (COND ([COND ((LISTP USERMOVEFN) (FMEMB 'DON'T USERMOVEFN)) (T (EQ USERMOVEFN 'DON'T] (PROMPTPRINT "This window cannot be moved.") (RETURN))) (SETQ OLDLEFT (fetch (REGION LEFT) of OLDREGION)) (SETQ OLDBOTTOM (ffetch (REGION BOTTOM) of OLDREGION)) (SETQ OLDWIDTH (ffetch (REGION WIDTH) of OLDREGION)) (SETQ OLDHEIGHT (ffetch (REGION HEIGHT) of OLDREGION)) (COND [(AND POSorX (SETQ POS (COND ((POSITIONP POSorX) POSorX) [(NUMBERP POSorX) (COND ((NUMBERP Y) (create POSITION XCOORD _ POSorX YCOORD _ Y)) (T (\ILLEGAL.ARG Y] ((REGIONP POSorX) (create POSITION XCOORD _ (fetch (REGION LEFT) of POSorX) YCOORD _ (fetch (REGION BOTTOM) of POSorX))) (T (\ILLEGAL.ARG POSorX] (T (\ILLEGAL.ARG POSorX))) [COND ((AND (LISTP USERMOVEFN) (NOT (FMEMB (CAR USERMOVEFN) LAMBDASPLST))) (AND (EQ [for MFN in USERMOVEFN do (SETQ NEWREGION (APPLY* MFN WINDOW POS)) (COND ((EQ NEWREGION 'DON'T) (RETURN 'DON'T)) ((POSITIONP NEWREGION) (SETQ POS NEWREGION] 'DON'T) (RETURN))) (USERMOVEFN (SETQ NEWREGION (APPLY* USERMOVEFN WINDOW POS)) (COND ((EQ NEWREGION 'DON'T) (RETURN)) ((POSITIONP NEWREGION) (SETQ POS NEWREGION] (COND ((OR (NOT (EQ (fetch (POSITION XCOORD) of POS) OLDLEFT)) (NOT (EQ (fetch (POSITION YCOORD) of POS) OLDBOTTOM))) (SETQ NEWREGION (create REGION LEFT _ (ffetch (POSITION XCOORD) of POS) BOTTOM _ (ffetch (POSITION YCOORD) of POS) WIDTH _ OLDWIDTH HEIGHT _ OLDHEIGHT)) (UNINTERRUPTABLY [COND ((SETQ XBASEW (WINDOWPROP WINDOW 'XBASEW)) (XLIB:WITH-STATE (XBASEW) (CL:SETF (XLIB:DRAWABLE-Y XBASEW) (IDIFFERENCE (fetch (XSCREEN SCHEIGHT) of \XSCREEN) (fetch (REGION TOP) of NEWREGION))) (CL:SETF (XLIB:DRAWABLE-X XBASEW) (fetch (REGION LEFT) of NEWREGION] (replace (WINDOW REG) of WINDOW with NEWREGION) (ADVISEXWDS WINDOW OLDREGION T)) (DOUSERFNS (WINDOWPROP WINDOW 'AFTERMOVEFN) WINDOW))) (RETURN POS]) (XMOVEW1 [LAMBDA (WINDOW POSorX Y) (* ; "Edited 16-Feb-91 18:04 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (PROG ((OLDREGION (fetch (WINDOW REG) of WINDOW)) OLDLEFT OLDBOTTOM OLDWIDTH OLDHEIGHT POS NEWREGION REG) (SETQ OLDLEFT (fetch (REGION LEFT) of OLDREGION)) (SETQ OLDBOTTOM (ffetch (REGION BOTTOM) of OLDREGION)) (SETQ OLDWIDTH (ffetch (REGION WIDTH) of OLDREGION)) (SETQ OLDHEIGHT (ffetch (REGION HEIGHT) of OLDREGION)) [AND POSorX (SETQ POS (COND ((POSITIONP POSorX) POSorX) [(NUMBERP POSorX) (COND ((NUMBERP Y) (create POSITION XCOORD _ POSorX YCOORD _ Y)) (T (\ILLEGAL.ARG Y] ((REGIONP POSorX) (create POSITION XCOORD _ (fetch (REGION LEFT) of POSorX) YCOORD _ (fetch (REGION BOTTOM) of POSorX))) (T (\ILLEGAL.ARG POSorX] (COND ((OR (NOT (EQ (fetch (POSITION XCOORD) of POS) OLDLEFT)) (NOT (EQ (ffetch (POSITION YCOORD) of POS) OLDBOTTOM))) (SETQ NEWREGION (create REGION LEFT _ (ffetch (POSITION XCOORD) of POS) BOTTOM _ (ffetch (POSITION YCOORD) of POS) WIDTH _ OLDWIDTH HEIGHT _ OLDHEIGHT)) (UNINTERRUPTABLY (replace (WINDOW REG) of WINDOW with NEWREGION) (ADVISEXWDS WINDOW OLDREGION T)) (DOUSERFNS (WINDOWPROP WINDOW 'AFTERMOVEFN) WINDOW]) (XMOVEORRESIZED.WINDOW [LAMBDA (WINDOW X Y WIDTH HEIGHT) (* ; "Edited 11-Apr-91 09:37 by matsuda") (PROG ((NEXTW (fetch (XSCREEN SCTOPW) of \XSCREEN)) XBASEW OLDREG NEWREG) LOOP (COND (NEXTW (SETQ XBASEW (WINDOWPROP NEXTW 'XBASEW)) (COND [(EQ WINDOW XBASEW) (SETQ OLDREG (fetch (WINDOW REG) NEXTW)) (SETQ NEWREG (create REGION LEFT _ X BOTTOM _ (IDIFFERENCE (fetch (XSCREEN SCHEIGHT) of \XSCREEN) (IPLUS Y HEIGHT)) WIDTH _ WIDTH HEIGHT _ HEIGHT)) (COND ((AND (EQ (fetch (REGION WIDTH) of OLDREG) WIDTH) (EQ (fetch (REGION HEIGHT) of OLDREG) HEIGHT)) (XMOVEW1 NEXTW (fetch (REGION LEFT) of NEWREG) (fetch (REGION BOTTOM) of NEWREG))) (T (XSHAPEW1 NEXTW NEWREG] (T (SETQ NEXTW (fetch (WINDOW NEXTW) of NEXTW)) (GO LOOP]) (XMOVED.WINDOW [LAMBDA (WINDOW) (* ; "Edited 1-Feb-91 16:48 by matsuda") NIL]) ) (RPAQ? \XSCREEN NIL) (ADDTOVAR \DISPLAYSTREAMTYPES XDISPLAY) (ADDTOVAR IMAGESTREAMTYPES (XDISPLAY (OPENSTREAM NILL) (FONTCREATE \CREATEXDISPLAYFONT) (FONTSAVAILABLE NILL) (CREATECHARSET NILL))) (FILESLOAD XLLKEY XLLBITMAP XLLCURSOR XLLMOUSE XLLFONT XSERVER XWATCHER) (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDTOVAR NLAMA ) (ADDTOVAR NLAML ) (ADDTOVAR LAMA XLIB::SETUP-CLX) ) (PUTPROPS XMAS COPYRIGHT ("Venue" 1991)) (DECLARE%: DONTCOPY (FILEMAP (NIL (11150 12401 (XLIB::SETUP-CLX 11160 . 12399)) (12402 80675 (\XDISPLAYINIT 12412 . 17445) (CREATEXSCREEN 17447 . 19460) (BITSPERPIXEL 19462 . 20487) (BITMAPHEIGHT 20489 . 20949) (BITMAPWIDTH 20951 . 21406) (DSPDESTINATION 21408 . 25038) (XDSPCREATE 25040 . 26540) (\DSPOPERATION.XDISPLAY 26542 . 27406) (\DSPRESET.XDISPLAY 27408 . 29848) (\BLTSHADE.XDISPLAY 29850 . 35267) (\BITBLT.XDISPLAY 35269 . 40602) (\XBITBLTSUB 40604 . 42083) (\XBLTSHADE.PIXMAP 42085 . 45581) (\XBITBLT.PIXMAP 45583 . 49709) (\DRAWPOINT.XDISPLAY 49711 . 50368) (\DRAWLINE.XDISPLAY 50370 . 53414) (\XLINEWITHBRUSH 53416 . 61792) (\DRAWCIRCLE.XDISPLAY 61794 . 66819) (\DRAWCURVE.XDISPLAY 66821 . 68378) (\XCURVE2 68380 . 75910) (\XCURVE 75912 . 80673)) (80676 91382 (BITBLT 80686 . 91380)) (91383 93367 (XCREATEWFROMPIXMAP 91393 . 92408) (PIXMAPCREATE 92410 . 92748) (PIXMAPWIDTH 92750 . 93055) (PIXMAPHEIGHT 93057 . 93365)) (93368 117849 (XCREATEW 93378 . 95995) (ADVISEXWDS 95997 . 102452) (XOPENW 102454 . 103586) (\XOPENW1 103588 . 105484) (XCLOSEW 105486 . 105815) (\XCLOSEW1 105817 . 107434) (\XSFFixClippingRegion 107436 . 109725) (XSHOWWFRAME 109727 . 112983) (XSHOWWTITLE 112985 . 115389) (\XCREATEBASEW 115391 . 117085) (\DSPCLIPPINGREGION.XDISPLAY 117087 . 117847)) (117850 133562 (\XDSPPRINTCHAR 117860 . 125664) ( \XBLTCHAR 125666 . 128836) (\XDSPPRINTCR/LF 128838 . 133560)) (133563 148886 (OPENWINDOWS 133573 . 134579) (\INSURESCREEN 134581 . 134893) (DSPSOURCETYPE 134895 . 136365) (PUTWINDOWPROP 136367 . 143483 ) (RESHOWBORDER 143485 . 144286) (\XRESHOWBORDER1 144288 . 147269) (\GETWINDOWHEIGHT 147271 . 148884)) (148887 149034 (XWHICHW 148897 . 149032)) (149035 150494 (TOTOPW 149045 . 150492)) (150495 159902 ( XSHAPEW1 150505 . 151645) (XMOVEW 151647 . 155883) (XMOVEW1 155885 . 158159) (XMOVEORRESIZED.WINDOW 158161 . 159765) (XMOVED.WINDOW 159767 . 159900))))) STOP \ No newline at end of file diff --git a/obsolete/sources/XMAS2 b/obsolete/sources/XMAS2 deleted file mode 100644 index 42ada05c..00000000 --- a/obsolete/sources/XMAS2 +++ /dev/null @@ -1 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP") (FILECREATED "22-Oct-91 17:03:36" |{PELE:MV:ENVOS}SOURCES>XMAS2.;1| 62023 changes to%: (FNS XSHOWWFRAME) previous date%: "22-Oct-91 16:41:50" {DSK}nilsson>xmas-split>xmas2.;5) (* ; " Copyright (c) 1991 by Fuji Xerox Co., Ltd. All rights reserved. ") (PRETTYCOMPRINT XMAS2COMS) (RPAQQ XMAS2COMS ((RECORDS WINDOWOPS) (FNS CREATESCREEN DSPCREATE CREATEW.NEW OPENW.NEW CLOSEW.NEW MOVEW.NEW SHAPEW.NEW SHRINKW.NEW EXPANDW.NEW) (FNS CREATEW.XDISPLAY OPENW.XDISPLAY CLOSEW.XDISPLAY MOVEW.XDISPLAY SHAPEW.XDISPLAY SHRINKW.XDISPLAY EXPANDW.XDISPLAY TOTOPW.XDISPLAY BURYW.XDISPLAY) (FNS \XOPENW1 XSHOWWFRAME ADVISEXWDS XMOVEORRESIZED.WINDOW \XMOUSELEFT \XMOUSEMOVED \FINDWINDOW \XMOUSEENTERED XMOVEW \XCLOSEW1 XSHAPEW \XSHAPEW1 XCREATEWFROMPIXMAP XCLOSEMAINWINDOW \XINTERNALTOTOPW) (FNS ISXWINDOW?) (FNS INIT.XMAS2) (VARS XMAS2COMS))) (DECLARE%: EVAL@COMPILE (DATATYPE WINDOWOPS (CREATEW OPENW CLOSEW MOVEW SHAPEW SHRINKW EXPANDW) CREATEW _ (FUNCTION NILL) OPENW _ (FUNCTION NILL) CLOSEW _ (FUNCTION NILL) MOVEW _ (FUNCTION NILL) SHAPEW _ (FUNCTION NILL) SHRINKW _ (FUNCTION NILL) EXPANDW _ (FUNCTION NILL)) ) (/DECLAREDATATYPE 'WINDOWOPS '(POINTER POINTER POINTER POINTER POINTER POINTER POINTER) '((WINDOWOPS 0 POINTER) (WINDOWOPS 2 POINTER) (WINDOWOPS 4 POINTER) (WINDOWOPS 6 POINTER) (WINDOWOPS 8 POINTER) (WINDOWOPS 10 POINTER) (WINDOWOPS 12 POINTER)) '14) (DEFINEQ (CREATESCREEN [LAMBDA (DESTINATION) (* ; "Edited 5-Sep-91 15:20 by matsuda") (* ;;; "destination is the framebuffer for the screen you want created.e.g. (SCREENBITMAP)") (PROG (TITLEDS SCREEN) (COND ((OR (NULL DESTINATION) (TYPE? BITMAP DESTINATION)) (SETQ TITLEDS (DSPCREATE DESTINATION)) (* ; "Create TITLEDS. ") (DSPOPERATION 'INVERT TITLEDS) (DSPFONT WINDOWTITLEFONT TITLEDS) (DSPRIGHTMARGIN MAX.SMALLP TITLEDS) (* ;  "Set right margin so title doesn't autoCR. ") (* ;; "now create SCREEN. ") (SETQ SCREEN (create SCREEN SCONOFF _ 'OFF SCDESTINATION _ DESTINATION SCWIDTH _ (BITMAPWIDTH DESTINATION) SCHEIGHT _ (BITMAPHEIGHT DESTINATION) SCTOPW _ NIL SCTITLEDS _ TITLEDS)) (RETURN SCREEN)) ((XLIB:DRAWABLE-P DESTINATION) (SETQ TITLEDS (XDSPCREATE DESTINATION)) (* ; "Create TITLEDS. ") (DSPOPERATION 'INVERT TITLEDS) (DSPFONT XWINDOWTITLEFONT TITLEDS) (DSPRIGHTMARGIN MAX.SMALLP TITLEDS) (* ;  "Set right margin so title doesn't autoCR. ") (* ;; "now create SCREEN. ") (SETQ SCREEN (create SCREEN SCONOFF _ 'OFF SCDESTINATION _ DESTINATION SCWIDTH _ (BITMAPWIDTH DESTINATION) SCHEIGHT _ (BITMAPHEIGHT DESTINATION) SCTOPW _ NIL SCTITLEDS _ TITLEDS)) (RETURN SCREEN]) (DSPCREATE [LAMBDA (DESTINATION) (* ; "Edited 5-Sep-91 15:34 by matsuda") (* ;; "Creates a stream-of-type-display on the DESTINATION bitmap or display device") (LET (DSTRM) (OR DESTINATION (SETQ DESTINATION ScreenBitMap)) (* ; "") (* ;  "(COND ((NULL DESTINATION)) (T (\DTEST DESTINATION 'BITMAP)))") (COND ((type? BITMAP DESTINATION) (SETQ DSTRM (create STREAM USERCLOSEABLE _ NIL OUTCHARFN _ (FUNCTION \DSPPRINTCHAR) IMAGEDATA _ (create \DISPLAYDATA) IMAGEOPS _ \DISPLAYIMAGEOPS DEVICE _ DisplayFDEV ACCESS _ 'OUTPUT)) (* ;  "initial x and y positions are 0 when the data is created.") (DSPFONT DEFAULTFONT DSTRM) (* ;  "dspfont can win since the (default) display imageops are filled in the stream") (DSPDESTINATION DESTINATION DSTRM) (* ;  "dspdestination calls \SFFixFont, which presumes there is a font present.") (DSPFONT DEFAULTFONT DSTRM) (* ;; "the reference to SCREENWIDTH here is for historic reasons: until 3-feb-86 the default right margin was always SCREENWIDTH. It should be the width of the destination and for any destination larger than the screen this is a serious bug and was fixed. The MAX of the right value and SCREENWIDTH was left in because existing code might be assumine a large right margin for small bitmaps and auto-CR in without it. rrb") (DSPRIGHTMARGIN (MAX SCREENWIDTH (fetch (BITMAP BITMAPWIDTH) of DESTINATION)) DSTRM) (DSPSOURCETYPE 'INPUT DSTRM) (DSPOPERATION 'REPLACE DSTRM) (* ;  "called to cause the updating of the bitblt table from the fields initialized earlier.") ) ((XLIB:DRAWABLE-P DESTINATION) (SETQ DSTRM (create STREAM USERCLOSEABLE _ NIL OUTCHARFN _ (FUNCTION \XDSPPRINTCHAR) IMAGEDATA _ (create \DISPLAYDATA) IMAGEOPS _ \XDISPLAYIMAGEOPS DEVICE _ XDisplayFDEV ACCESS _ 'OUTPUT)) (replace (\DISPLAYDATA DDPILOTBBT) of (fetch (STREAM IMAGEDATA) of DSTRM) with (SETQ GC (XLIB:CREATE-GCONTEXT :DRAWABLE DESTINATION))) (CL:SETF (XLIB:GCONTEXT-FOREGROUND GC) XLIB::*BLACK*) (* ; "temp foreground color ") (CL:SETF (XLIB:GCONTEXT-BACKGROUND GC) XLIB::*WHITE*) (* ; "temp background color") (DSPFONT XDEFAULTFONT DSTRM) (DSPDESTINATION DESTINATION DSTRM) (DSPRIGHTMARGIN (MAX SCREENWIDTH (XLIB:DRAWABLE-WIDTH DESTINATION)) DSTRM) (DSPSOURCETYPE 'INPUT DSTRM) (DSPOPERATION 'REPLACE DSTRM))) DSTRM]) (CREATEW.NEW [LAMBDA (REGION TITLE BORDERSIZE NOOPENFLG) (* ; "Edited 20-Oct-91 10:53 by jn") (* ;; "creates and returns a window.") (PROG (SCREEN) (COND ((AND (BOUNDP '\SCREEN) \SCREEN) (SETQ SCREEN \SCREEN)) ((type? SCREENREGION REGION) (SETQ SCREEN (fetch (SCREENREGION SCREEN) of REGION))) (T (SETQ SCREEN \MAINSCREEN) (* ; "Default screen is \MAINSCREEN.") )) (RETURN (APPLY* (fetch (WINDOWOPS CREATEW) of (fetch (SCREEN SCDATA) of SCREEN)) REGION TITLE BORDERSIZE NOOPENFLG]) (OPENW.NEW [LAMBDA (WINDOW) (* ; "Edited 9-Sep-91 18:05 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (APPLY* (fetch (WINDOWOPS OPENW) of (fetch (SCREEN SCDATA) of (fetch (WINDOW SCREEN) of WINDOW))) WINDOW]) (CLOSEW.NEW [LAMBDA (WINDOW) (* ; "Edited 9-Sep-91 18:01 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (APPLY* (fetch (WINDOWOPS CLOSEW) of (fetch (SCREEN SCDATA) of (fetch (WINDOW SCREEN) of WINDOW)) ) WINDOW]) (MOVEW.NEW [LAMBDA (WINDOW POSorX Y) (* ; "Edited 10-Sep-91 15:55 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (APPLY* (fetch (WINDOWOPS MOVEW) of (fetch (SCREEN SCDATA) of (fetch (WINDOW SCREEN) of WINDOW))) WINDOW POSorX Y]) (SHAPEW.NEW [LAMBDA (WINDOW NEWREGION) (* ; "Edited 13-Sep-91 14:09 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (APPLY* (fetch (WINDOWOPS SHAPEW) of (fetch (SCREEN SCDATA) of (fetch (WINDOW SCREEN) of WINDOW)) ) WINDOW NEWREGION]) (SHRINKW.NEW [LAMBDA (WINDOW TOWHAT ICONPOSITION EXPANDFN) (* ; "Edited 13-Sep-91 16:39 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (APPLY* (fetch (WINDOWOPS SHRINKW) of (fetch (SCREEN SCDATA) of (fetch (WINDOW SCREEN) of WINDOW) )) WINDOW TOWHAT ICONPOSITION EXPANDFN]) (EXPANDW.NEW [LAMBDA (ICONW) (* ; "Edited 13-Sep-91 16:07 by matsuda") (SETQ ICONW (\INSUREWINDOW ICONW)) (APPLY* (fetch (WINDOWOPS EXPANDW) of (fetch (SCREEN SCDATA) of (fetch (WINDOW SCREEN) of ICONW)) ) ICONW]) ) (DEFINEQ (CREATEW.XDISPLAY [LAMBDA (REGION TITLE BORDERSIZE NOOPENFLG) (* ; "Edited 9-Sep-91 17:03 by matsuda") (* ;; "creates and returns a window.") (PROG (SCREEN REG DSP DISPLAYDATA TITLEHEIGHT WINDOW WBORDER) (SETQ WBORDER (COND ((NUMBERP BORDERSIZE) (ABS BORDERSIZE)) ((NUMBERP WBorder) (ABS WBorder)) (T 2))) (COND ((type? REGION REGION) (SETQ SCREEN \XSCREEN) (* ;  "Protect against user smashing REGION later on.") (SETQ REG (COPY REGION))) [(type? SCREENREGION REGION) (SETQ SCREEN (fetch (SCREENREGION SCREEN) of REGION)) (SETQ REG (COPY (fetch (SCREENREGION REGION) of REGION] (T (ERROR "Not a region" REG))) [COND ((NULL DSP) (* ;  "Don't have a DSP yet. User passed some kind of region.") (SETQ DSP (DSPCREATE (fetch (SCREEN SCDESTINATION) of SCREEN))) (SETQ DISPLAYDATA (fetch (STREAM IMAGEDATA) of DSP] (COND ((NOT (IGREATERP (IMIN (fetch (REGION WIDTH) of REG) (fetch (REGION HEIGHT) of REG)) (UNFOLD WBORDER 2))) (ERROR "Region too small to use as a window" REG))) (SETQ WINDOW (create WINDOW DSP _ DSP REG _ REG SAVE _ NIL WTITLE _ TITLE WBORDER _ WBORDER NEXTW _ 'CLOSED SCREEN _ SCREEN BUTTONEVENTFN _ NIL)) (replace (\DISPLAYDATA XWINDOWHINT) of DISPLAYDATA with WINDOW) (XSHOWWFRAME WINDOW) (DSPDESTINATION (fetch (WINDOW SAVE) of WINDOW) DSP) (ADVISEXWDS WINDOW) (* ;  "make the display stream and window agree about dimensions.") (MOVETOUPPERLEFT WINDOW) (COND ((NOT NOOPENFLG) (XOPENW WINDOW))) (RETURN WINDOW]) (OPENW.XDISPLAY [LAMBDA (WINDOW) (* ; "Edited 10-Sep-91 15:59 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (COND ((OPENWP WINDOW) NIL) (T (PROG [(USEROPENFN (WINDOWPROP WINDOW 'OPENFN] (COND ((\USERFNISDON'T USEROPENFN) NIL) (T (\XOPENW1 WINDOW) (DOUSERFNS USEROPENFN WINDOW) (RETURN WINDOW]) (CLOSEW.XDISPLAY [LAMBDA (WINDOW) (* ; "Edited 9-Sep-91 17:44 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (COND ((OPENWP WINDOW) (COND ((\OKTOCLOSEW WINDOW) (AND (OPENWP WINDOW) (\XCLOSEW1 WINDOW)) T]) (MOVEW.XDISPLAY [LAMBDA (WINDOW POSorX Y) (* ; "Edited 10-Sep-91 16:04 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (PROG ((OLDREGION (fetch (WINDOW REG) of WINDOW)) (USERMOVEFN (fetch (WINDOW MOVEFN) of WINDOW)) POS NEWREGION OLDLEFT OLDBOTTOM OLDWIDTH OLDHEIGHT XBASEW) (COND ([COND ((LISTP USERMOVEFN) (FMEMB 'DON'T USERMOVEFN)) (T (EQ USERMOVEFN 'DON'T] (PROMPTPRINT "This window cannot be moved.") (RETURN))) (SETQ OLDLEFT (fetch (REGION LEFT) of OLDREGION)) (SETQ OLDBOTTOM (ffetch (REGION BOTTOM) of OLDREGION)) (SETQ OLDWIDTH (ffetch (REGION WIDTH) of OLDREGION)) (SETQ OLDHEIGHT (ffetch (REGION HEIGHT) of OLDREGION)) (COND [(AND POSorX (SETQ POS (COND ((POSITIONP POSorX) POSorX) [(NUMBERP POSorX) (COND ((NUMBERP Y) (create POSITION XCOORD _ POSorX YCOORD _ Y)) (T (\ILLEGAL.ARG Y] ((REGIONP POSorX) (create POSITION XCOORD _ (fetch (REGION LEFT) of POSorX) YCOORD _ (fetch (REGION BOTTOM) of POSorX))) (T (\ILLEGAL.ARG POSorX] (T (\ILLEGAL.ARG POSorX))) [COND ((AND (LISTP USERMOVEFN) (NOT (FMEMB (CAR USERMOVEFN) LAMBDASPLST))) (AND (EQ [for MFN in USERMOVEFN do (SETQ NEWREGION (APPLY* MFN WINDOW POS)) (COND ((EQ NEWREGION 'DON'T) (RETURN 'DON'T)) ((POSITIONP NEWREGION) (SETQ POS NEWREGION] 'DON'T) (RETURN))) (USERMOVEFN (SETQ NEWREGION (APPLY* USERMOVEFN WINDOW POS)) (COND ((EQ NEWREGION 'DON'T) (RETURN)) ((POSITIONP NEWREGION) (SETQ POS NEWREGION] (COND ((OR (NOT (EQ (fetch (POSITION XCOORD) of POS) OLDLEFT)) (NOT (EQ (fetch (POSITION YCOORD) of POS) OLDBOTTOM))) (SETQ NEWREGION (create REGION LEFT _ (ffetch (POSITION XCOORD) of POS) BOTTOM _ (ffetch (POSITION YCOORD) of POS) WIDTH _ OLDWIDTH HEIGHT _ OLDHEIGHT)) (UNINTERRUPTABLY [COND ((SETQ XBASEW (WINDOWPROP WINDOW 'XBASEW)) (XLIB:WITH-STATE (XBASEW) (CL:SETF (XLIB:DRAWABLE-Y XBASEW) (IDIFFERENCE (fetch (SCREEN SCHEIGHT) of \XSCREEN) (fetch (REGION TOP) of NEWREGION))) (CL:SETF (XLIB:DRAWABLE-X XBASEW) (fetch (REGION LEFT) of NEWREGION] (replace (WINDOW REG) of WINDOW with NEWREGION) (ADVISEXWDS WINDOW OLDREGION T)) (DOUSERFNS (WINDOWPROP WINDOW 'AFTERMOVEFN) WINDOW))) (RETURN POS]) (SHAPEW.XDISPLAY [LAMBDA (WINDOW NEWREGION) (* ; "Edited 13-Sep-91 14:11 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (PROG ((OLDSIZE (WINDOWPROP WINDOW 'REGION)) NEWSIZE) (COND ((\USERFNISDON'T (fetch (WINDOW RESHAPEFN) of WINDOW)) (* ;  "don't allow the window to be reshaped.") (PROMPTPRINT "This window cannot be reshaped.") (RETURN NIL))) (SETQ NEWSIZE (MINIMUMWINDOWSIZE WINDOW)) [SETQ NEWSIZE (COND (NEWREGION (* ;  "An explicit new region was specified; make sure it's big enough.") (COND [(OR (LESSP (fetch (REGION WIDTH) of NEWREGION) (CAR NEWSIZE)) (LESSP (fetch (REGION HEIGHT) of NEWREGION) (CDR NEWSIZE))) (* ;  "given a region that is too small, so expand the width and height to at least the minima.") (CREATEREGION (fetch (REGION LEFT) of NEWREGION) (fetch (REGION BOTTOM) of NEWREGION) (IMAX (CAR NEWSIZE) (fetch (REGION WIDTH) of NEWREGION)) (IMAX (CDR NEWSIZE) (fetch (REGION HEIGHT) of NEWREGION] (T NEWREGION))) (T (ERROR "NEWREGION must be specified."] (RETURN (if (EQUAL NEWSIZE OLDSIZE) then (* ;; "if same size and place as before, do nothing") NIL elseif (AND (EQ (fetch (REGION WIDTH) of NEWSIZE) (fetch (REGION WIDTH) of OLDSIZE)) (EQ (fetch (REGION HEIGHT) of NEWSIZE) (fetch (REGION HEIGHT) of OLDSIZE))) then (* ;; "if same width and height, then optimize to a move") (MOVEW.XDISPLAY WINDOW (fetch (REGION LEFT) of NEWSIZE) (fetch (REGION BOTTOM) of NEWSIZE)) else (* ;; "do the shape, checking for a doshapefn") (APPLY* (OR (WINDOWPROP WINDOW 'DOSHAPEFN) '\XSHAPEW1) WINDOW (COPYALL NEWSIZE]) (SHRINKW.XDISPLAY [LAMBDA (WINDOW TOWHAT ICONPOSITION EXPANDFN) (* ; "Edited 11-Sep-91 15:59 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (COND ((NOT (OPENWP WINDOW)) NIL) ((WINDOWPROP WINDOW 'ICONFOR) NIL) ((EQ (DOUSERFNS (WINDOWPROP WINDOW 'SHRINKFN) WINDOW T) 'DON'T) NIL) (T (LET (TITLE ICONW FN ICONISBITMAP ICONISPIXMAP) [SETQ ICONW (COND ((type? BITMAP TOWHAT) [SETQ ICONISPIXMAP (PIXMAPFROMBITMAP TOWHAT (BITSPERPIXEL (fetch (SCREEN SCDESTINATION ) of (fetch (WINDOW SCREEN) of WINDOW] [WINDOWPROP WINDOW 'ICON (SETQ TOWHAT (XCREATEWFROMPIXMAP ICONISPIXMAP (fetch (WINDOW SCREEN) of WINDOW] (XLIB:FREE-PIXMAP ICONISPIXMAP) TOWHAT) ((XLIB:DRAWABLE-P TOWHAT) [WINDOWPROP WINDOW 'ICON (SETQ TOWHAT (XCREATEWFROMPIXMAP TOWHAT (fetch (WINDOW SCREEN) of WINDOW] TOWHAT) ((ISXWINDOW? TOWHAT) (WINDOWPROP WINDOW 'ICON TOWHAT) TOWHAT) ((STRINGP TOWHAT) [WINDOWPROP WINDOW 'ICON (SETQ TOWHAT (\DTEST (APPLY* DEFAULTICONFN WINDOW TOWHAT) 'WINDOW] TOWHAT) (T [SETQ TOWHAT (COND ((SETQ FN (WINDOWPROP WINDOW 'ICONFN)) (* ;  "User fn to create an icon. Can return cached value") (APPLY* FN WINDOW (WINDOWPROP WINDOW 'ICONWINDOW) (POSITIONP ICONPOSITION))) (T (WINDOWPROP WINDOW 'ICON] (COND ((ISXWINDOW? TOWHAT) TOWHAT) ((type? BITMAP TOWHAT) [SETQ ICONISPIXMAP (PIXMAPFROMBITMAP TOWHAT (BITSPERPIXEL (fetch (SCREEN SCDESTINATION ) of (fetch (WINDOW SCREEN) of WINDOW] (XCREATEWFROMPIXMAP ICONISPIXMAP (fetch (WINDOW SCREEN) of WINDOW)) (XLIB:FREE-PIXMAP ICONISPIXMAP)) ((XLIB:DRAWABLE-P TOWHAT) (XCREATEWFROMPIXMAP TOWHAT (fetch (WINDOW SCREEN) of WINDOW))) (T (\DTEST (APPLY* XDEFAULTICONFN WINDOW TOWHAT) 'WINDOW] (WINDOWPROP WINDOW 'ICONWINDOW ICONW) (WINDOWPROP ICONW 'ICONFOR WINDOW) (WINDOWADDFNPROP ICONW 'CLOSEFN (FUNCTION XCLOSEMAINWINDOW)) (* ; "(COND ((EQ (WINDOWPROP ICONW 'BUTTONEVENTFN) 'TOTOPW) (WINDOWPROP ICONW 'BUTTONEVENTFN (FUNCTION ICONBUTTONEVENTFN))))") (WINDOWADDFNPROP WINDOW 'OPENFN (FUNCTION CLOSEICONWINDOW)) (WINDOWADDFNPROP ICONW 'MOVEFN (FUNCTION \NOTENEWICONPOSITION)) (AND EXPANDFN (WINDOWADDFNPROP WINDOW 'EXPANDFN EXPANDFN)) (* ;  "(WINDOWPROP ICONW 'DOWINDOWCOMFN (FUNCTION DOICONWINDOWCOM))") [COND [(AND (NEQ ICONPOSITION 'SAME) (OR ICONISBITMAP (POSITIONP ICONPOSITION))) (MOVEW ICONW (COND ((POSITIONP ICONPOSITION) ICONPOSITION) ((PROG1 [POSITIONP (SETQ ICONPOSITION (WINDOWPROP WINDOW 'ICONPOSITION] (* ;  "leave it in its current location.") )) (T (SETQ ICONPOSITION (ICONPOSITION.FROM.WINDOW WINDOW (WINDOWPROP ICONW 'REGION] (T (SETQ ICONPOSITION (LET [(REG (WINDOWPROP ICONW 'REGION] (create POSITION XCOORD _ (fetch (REGION LEFT) of REG) YCOORD _ (fetch (REGION BOTTOM) of REG] (WINDOWPROP WINDOW 'ICONPOSITION ICONPOSITION)(* ; "(TOTOPW WINDOW T)") (\XCLOSEW1 WINDOW) (OPENW ICONW) ICONW]) (EXPANDW.XDISPLAY [LAMBDA (ICONW) (* ; "Edited 11-Sep-91 16:58 by matsuda") (PROG ((IW ICONW) MAINWINDOW USEREXPANDFN EXPANDREGION) [COND [(SETQ MAINWINDOW (WINDOWPROP IW 'ICONFOR] ((SETQ IW (WINDOWPROP IW 'ICONWINDOW)) (COND ((OPENWP (SETQ MAINWINDOW ICONW)) (RETURN ICONW] (COND ([AND MAINWINDOW (NULL (\USERFNISDON'T (SETQ USEREXPANDFN (WINDOWPROP MAINWINDOW 'EXPANDFN] (if (AND (WINDOWPROP MAINWINDOW 'EXPANDREGIONFN) (SETQ EXPANDREGION (APPLY* (WINDOWPROP MAINWINDOW 'EXPANDREGIONFN) MAINWINDOW))) then (\XSHAPEW1 MAINWINDOW EXPANDREGION) else (\XOPENW1 MAINWINDOW)) (\XCLOSEW1 IW) (WINDOWDELPROP MAINWINDOW 'OPENFN 'CLOSEICONWINDOW) (WINDOWDELPROP IW 'CLOSEFN 'CLOSEMAINWINDOW) (DOUSERFNS USEREXPANDFN MAINWINDOW) (RETURN (WINDOWPROP IW 'ICONFOR NIL]) (TOTOPW.XDISPLAY [LAMBDA (WINDOW NOCALLTOTOPFNFLG) (* ; "Edited 13-Sep-91 16:51 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (COND ((OPENWP WINDOW) (OR NOCALLTOTOPFNFLG (DOUSERFNS (WINDOWPROP WINDOW 'TOTOPFN) WINDOW)) (\XINTERNALTOTOPW WINDOW)) ((OPENW WINDOW) (OR NOCALLTOTOPFNFLG (DOUSERFNS (WINDOWPROP WINDOW 'TOTOPFN) WINDOW))) (T (* ;  "window won't open probably because of DON'T OPENFN") (ERROR "Window won't open; Can't be bring to top." WINDOW))) WINDOW]) (BURYW.XDISPLAY [LAMBDA (WINDOW) (* ; "Edited 13-Sep-91 18:02 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (PROG [(BASEW (WINDOWPROP WINDOW 'XBASEW] (AND BASEW (XLIB::SET-WINDOW-PRIORITY :BELOW BASEW]) ) (DEFINEQ (\XOPENW1 [LAMBDA (WINDOW) (* ; "Edited 6-Sep-91 15:22 by matsuda") (if (EQ (fetch (WINDOW NEXTW) of WINDOW) 'CLOSED) then (PROG ((BASEW (WINDOWPROP WINDOW 'XBASEW)) XWIN REG BORDER XTITLEW TOP (SCREEN (fetch (WINDOW SCREEN) of WINDOW) ) DD) (if BASEW then (XLIB:MAP-WINDOW BASEW) else (WINDOWPROP WINDOW 'XBASEW (SETQ BASEW (\XCREATEBASEW WINDOW))) [AND (WINDOWPROP WINDOW 'TITLE) (SETQ XTITLEW (WINDOWPROP WINDOW 'XTITLEW] (SETQ XWIN (fetch (WINDOW SAVE) of WINDOW)) (SETQ BORDER (XLIB:DRAWABLE-BORDER-WIDTH XWIN)) (SETQ TOP 0) [COND (XTITLEW (XLIB:REPARENT-WINDOW XTITLEW BASEW 0 0) (SETQ TOP (XLIB:DRAWABLE-HEIGHT XTITLEW] (XLIB:REPARENT-WINDOW XWIN BASEW 0 TOP) (XLIB:MAP-SUBWINDOWS BASEW) (CL:SETF (XLIB:TRANSIENT-FOR BASEW) BASEW) (XLIB:MAP-WINDOW BASEW)) (UNINTERRUPTABLY (XLIB:MAP-WINDOW (fetch (WINDOW SAVE) of WINDOW)) (replace (WINDOW NEXTW) of WINDOW with (fetch (SCREEN SCTOPW) of SCREEN)) (replace (SCREEN SCTOPW) of SCREEN with WINDOW))]) (XSHOWWFRAME [LAMBDA (WIN) (* ; "Edited 22-Oct-91 17:03 by jn") (* ;; "Displays the border and title in the save image of a window ") [PROG ((TITLE (fetch (WINDOW WTITLE) of WIN)) (BORDER (fetch (WINDOW WBORDER) of WIN)) (SAVEIMAGE (fetch (WINDOW SAVE) of WIN)) (SCREEN (fetch (WINDOW SCREEN) of WIN)) (REG (fetch (WINDOW REG) of WIN)) BLACKPART FOOT (TITLE-H 0)) (* ; "make most of the border black") (SETQ BLACKPART (IMAX (FOLDHI BORDER 2) (IDIFFERENCE BORDER 2))) (XSHOWWTITLE TITLE SAVEIMAGE BORDER NIL WIN) [AND TITLE (SETQ TITLE-H (XLIB:DRAWABLE-HEIGHT (WINDOWPROP WIN 'XTITLEW] (if SAVEIMAGE then [XLIB:WITH-STATE (SAVEIMAGE) (CL:SETF (XLIB:DRAWABLE-Y SAVEIMAGE) TITLE-H) (CL:SETF (XLIB:DRAWABLE-X SAVEIMAGE) 0) (CL:SETF (XLIB:DRAWABLE-WIDTH SAVEIMAGE) (IDIFFERENCE (fetch (REGION WIDTH) of REG) (ITIMES BLACKPART 2))) (CL:SETF (XLIB:DRAWABLE-HEIGHT SAVEIMAGE) (IDIFFERENCE (fetch (REGION HEIGHT) of REG) (IPLUS TITLE-H (ITIMES BLACKPART 2] else (replace SAVE of WIN with (SETQ SAVEIMAGE (XLIB:CREATE-WINDOW :PARENT (fetch (SCREEN SCDESTINATION) of SCREEN) :X (fetch (REGION LEFT) of REG) :Y (IDIFFERENCE (fetch (SCREEN SCHEIGHT) of SCREEN) (IDIFFERENCE (fetch (REGION TOP) of REG) (IPLUS TITLE-H BLACKPART))) :WIDTH (IDIFFERENCE (fetch (REGION WIDTH) of REG) (ITIMES BLACKPART 2)) :HEIGHT (IDIFFERENCE (fetch (REGION HEIGHT) of REG) (IPLUS TITLE-H (ITIMES BLACKPART 2))) :BORDER-WIDTH BLACKPART :BACKGROUND XLIB::*WHITE* :BIT-GRAVITY :NORTH-WEST :BACKING-STORE :ALWAYS] WIN]) (ADVISEXWDS [LAMBDA (WINDOW OLDREG MOVEONLYFLG) (DECLARE (LOCALVARS . T)) (* ; "Edited 5-Sep-91 16:23 by matsuda") (PROG (R D WBORDERSIZE CLIPREG TWICEBORDER PROC OFFSET) (SETQ R (fetch (WINDOW REG) of WINDOW)) (SETQ D (fetch (WINDOW DSP) of WINDOW)) (SETQ WBORDERSIZE (fetch (WINDOW WBORDER) of WINDOW)) (SETQ TWICEBORDER (UNFOLD WBORDERSIZE 2)) (COND (OLDREG (OR MOVEONLYFLG (DSPCLIPPINGREGION [create REGION LEFT _ 0 BOTTOM _ 0 WIDTH _ (IDIFFERENCE (fetch (REGION WIDTH) of R) TWICEBORDER) HEIGHT _ (IPLUS (IDIFFERENCE (fetch (REGION HEIGHT) of R) TWICEBORDER) (COND [(fetch (WINDOW WTITLE) of WINDOW) (DSPLINEFEED NIL (fetch (SCREEN SCTITLEDS) of (fetch (WINDOW SCREEN ) of WINDOW] (T 0] D))) (T (SETQ OFFSET (IMAX (FOLDHI WBORDERSIZE 2) (IDIFFERENCE WBORDERSIZE 2))) (DSPXOFFSET OFFSET D) (DSPYOFFSET OFFSET D) (DSPCLIPPINGREGION [create REGION LEFT _ 0 BOTTOM _ 0 WIDTH _ (IDIFFERENCE (fetch (REGION WIDTH) of R) TWICEBORDER) HEIGHT _ (IPLUS (IDIFFERENCE (fetch (REGION HEIGHT) of R) TWICEBORDER) (COND [(fetch (WINDOW WTITLE) of WINDOW) (DSPLINEFEED NIL (fetch (SCREEN SCTITLEDS) of (fetch (WINDOW SCREEN) of WINDOW] (T 0] D))) [COND ((NULL MOVEONLYFLG) (* ;  "if the previous right margin was the default, change it.") (AND (OR (NOT OLDREG) (EQ (DSPRIGHTMARGIN NIL D) (IDIFFERENCE (fetch (REGION WIDTH) of OLDREG) TWICEBORDER))) (DSPRIGHTMARGIN (IDIFFERENCE (fetch (REGION WIDTH) of R) TWICEBORDER) D)) (COND ((AND (SETQ PROC (WINDOWPROP WINDOW 'PROCESS)) (EQ D (PROCESS.TTY PROC))) (* ;  "if the window changing is a tty, set its linelength.") [PROCESS.EVAL PROC (LIST (FUNCTION PAGEHEIGHT) (IQUOTIENT (fetch (REGION HEIGHT) of (SETQ CLIPREG (DSPCLIPPINGREGION NIL D))) (IMINUS (DSPLINEFEED NIL D] (PROCESS.EVAL PROC '(SETLINELENGTH)) (IF NIL THEN (* ; "try it without this.") (COND ((EQ (PROCESSPROP PROC 'NAME) 'EXEC) (* ;; "in the exec process, make sure the current position is inside the new shape. reuse variables R and TWICEBORDER to save binding.") (COND ((ILESSP (SETQ R (DSPYPOSITION NIL D)) (SETQ TWICEBORDER (fetch (REGION BOTTOM) of CLIPREG ))) (DSPYPOSITION TWICEBORDER D)) ((IGREATERP R (SETQ TWICEBORDER (IPLUS (fetch (REGION HEIGHT) of CLIPREG) TWICEBORDER))) (DSPYPOSITION (IDIFFERENCE TWICEBORDER (FONTPROP D 'ASCENT)) D] (UPDATE/SCROLL/REG WINDOW)) WINDOW]) (XMOVEORRESIZED.WINDOW [LAMBDA (WINDOW X Y WIDTH HEIGHT) (* ; "Edited 5-Sep-91 16:57 by matsuda") (PROG ((NEXTW (fetch (SCREEN SCTOPW) of \XSCREEN)) XBASEW OLDREG NEWREG) LOOP (COND (NEXTW (SETQ XBASEW (WINDOWPROP NEXTW 'XBASEW)) (COND [(EQ WINDOW XBASEW) (SETQ OLDREG (fetch (WINDOW REG) NEXTW)) (SETQ NEWREG (create REGION LEFT _ X BOTTOM _ (IDIFFERENCE (fetch (SCREEN SCHEIGHT) of \XSCREEN) (IPLUS Y HEIGHT)) WIDTH _ WIDTH HEIGHT _ HEIGHT)) (COND ((AND (EQ (fetch (REGION WIDTH) of OLDREG) WIDTH) (EQ (fetch (REGION HEIGHT) of OLDREG) HEIGHT)) (XMOVEW1 NEXTW (fetch (REGION LEFT) of NEWREG) (fetch (REGION BOTTOM) of NEWREG))) (T (XSHAPEW1 NEXTW NEWREG] (T (SETQ NEXTW (fetch (WINDOW NEXTW) of NEXTW)) (GO LOOP]) (\XMOUSELEFT [LAMBDA (WINDOW X Y) (* ; "Edited 5-Sep-91 16:56 by matsuda") (SETQ XLASTMOUSEX X) (SETQ XLASTMOUSEY (IDIFFERENCE (fetch (SCREEN SCHEIGHT) of \XSCREEN) Y)) (COND ((EQ XLASTWINDOW (\FINDWINDOW WINDOW) XLASTWINDOW) (DOUSERFNS (fetch (WINDOW CURSORINFN) of XLASTWINDOW) XLASTWINDOW))) (SETQ XLASTWINDOW NIL]) (\XMOUSEMOVED [LAMBDA (WINDOW X Y) (* ; "Edited 5-Sep-91 16:55 by matsuda") (SETQ XLASTMOUSEX X) (SETQ XLASTMOUSEY (IDIFFERENCE (fetch (SCREEN SCHEIGHT) of \XSCREEN) Y)) (SETQ XLASTWINDOW (\FINDWINDOW WINDOW)) (DOUSERFNS (fetch (WINDOW CURSORMOVEDFN) of XLASTWINDOW) XLASTWINDOW]) (\FINDWINDOW [LAMBDA (WINDOW) (* ; "Edited 5-Sep-91 16:51 by matsuda") (PROG ((NEXTW (fetch (SCREEN SCTOPW) of \XSCREEN)) XBASEW) LOOP (COND (NEXTW (SETQ XBASEW (WINDOWPROP NEXTW 'XBASEW)) (COND ((EQ WINDOW XBASEW) (RETURN NEXTW)) (T (SETQ NEXTW (fetch (WINDOW NEXTW) of NEXTW)) (GO LOOP]) (\XMOUSEENTERED [LAMBDA (WINDOW X Y) (* ; "Edited 5-Sep-91 17:13 by matsuda") (SETQ XLASTMOUSEX X) (SETQ XLASTMOUSEY (IDIFFERENCE (fetch (SCREEN SCHEIGHT) of \XSCREEN) Y)) (SETQ XLASTWINDOW (\FINDWINDOW WINDOW)) (DOUSERFNS (fetch (WINDOW CURSORINFN) of XLASTWINDOW) XLASTWINDOW]) (XMOVEW [LAMBDA (WINDOW POSorX Y) (* ; "Edited 7-Mar-91 14:24 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (PROG ((OLDREGION (fetch (WINDOW REG) of WINDOW)) (USERMOVEFN (fetch (WINDOW MOVEFN) of WINDOW)) POS NEWREGION OLDLEFT OLDBOTTOM OLDWIDTH OLDHEIGHT XBASEW) (COND ([COND ((LISTP USERMOVEFN) (FMEMB 'DON'T USERMOVEFN)) (T (EQ USERMOVEFN 'DON'T] (PROMPTPRINT "This window cannot be moved.") (RETURN))) (SETQ OLDLEFT (fetch (REGION LEFT) of OLDREGION)) (SETQ OLDBOTTOM (ffetch (REGION BOTTOM) of OLDREGION)) (SETQ OLDWIDTH (ffetch (REGION WIDTH) of OLDREGION)) (SETQ OLDHEIGHT (ffetch (REGION HEIGHT) of OLDREGION)) (COND [(AND POSorX (SETQ POS (COND ((POSITIONP POSorX) POSorX) [(NUMBERP POSorX) (COND ((NUMBERP Y) (create POSITION XCOORD _ POSorX YCOORD _ Y)) (T (\ILLEGAL.ARG Y] ((REGIONP POSorX) (create POSITION XCOORD _ (fetch (REGION LEFT) of POSorX) YCOORD _ (fetch (REGION BOTTOM) of POSorX))) (T (\ILLEGAL.ARG POSorX] (T (\ILLEGAL.ARG POSorX))) [COND ((AND (LISTP USERMOVEFN) (NOT (FMEMB (CAR USERMOVEFN) LAMBDASPLST))) (AND (EQ [for MFN in USERMOVEFN do (SETQ NEWREGION (APPLY* MFN WINDOW POS)) (COND ((EQ NEWREGION 'DON'T) (RETURN 'DON'T)) ((POSITIONP NEWREGION) (SETQ POS NEWREGION] 'DON'T) (RETURN))) (USERMOVEFN (SETQ NEWREGION (APPLY* USERMOVEFN WINDOW POS)) (COND ((EQ NEWREGION 'DON'T) (RETURN)) ((POSITIONP NEWREGION) (SETQ POS NEWREGION] (COND ((OR (NOT (EQ (fetch (POSITION XCOORD) of POS) OLDLEFT)) (NOT (EQ (fetch (POSITION YCOORD) of POS) OLDBOTTOM))) (SETQ NEWREGION (create REGION LEFT _ (ffetch (POSITION XCOORD) of POS) BOTTOM _ (ffetch (POSITION YCOORD) of POS) WIDTH _ OLDWIDTH HEIGHT _ OLDHEIGHT)) (UNINTERRUPTABLY [COND ((SETQ XBASEW (WINDOWPROP WINDOW 'XBASEW)) (XLIB:WITH-STATE (XBASEW) (CL:SETF (XLIB:DRAWABLE-Y XBASEW) (IDIFFERENCE (fetch (XSCREEN SCHEIGHT) of \XSCREEN) (fetch (REGION TOP) of NEWREGION))) (CL:SETF (XLIB:DRAWABLE-X XBASEW) (fetch (REGION LEFT) of NEWREGION] (replace (WINDOW REG) of WINDOW with NEWREGION) (ADVISEXWDS WINDOW OLDREGION T)) (DOUSERFNS (WINDOWPROP WINDOW 'AFTERMOVEFN) WINDOW))) (RETURN POS]) (\XCLOSEW1 [LAMBDA (WINDOW) (* ; "Edited 10-Sep-91 17:31 by matsuda") (LET (SCREEN NEXTW SAVE) (SETQ SCREEN (fetch (WINDOW SCREEN) of WINDOW)) (SETQ NEXTW (fetch (SCREEN SCTOPW) of SCREEN)) (COND ((NULL NEXTW) NIL) ((EQ NEXTW WINDOW) (UNINTERRUPTABLY (XLIB:UNMAP-WINDOW (WINDOWPROP NEXTW 'XBASEW)) (replace (SCREEN SCTOPW) of SCREEN with (fetch (WINDOW NEXTW) of NEXTW)) (replace (WINDOW NEXTW) of WINDOW with 'CLOSED)) T) (T (PROG NIL (SETQ SAVE NEXTW) (SETQ NEXTW (fetch (WINDOW NEXTW) of SAVE)) LOOP (COND (NEXTW (COND [(EQ NEXTW WINDOW) (UNINTERRUPTABLY (XLIB:UNMAP-WINDOW (WINDOWPROP NEXTW 'XBASEW)) (replace (WINDOW NEXTW) of SAVE with (fetch (WINDOW NEXTW) of NEXTW)) (replace (WINDOW NEXTW) of NEXTW with 'CLOSED))] (T (SETQ SAVE NEXTW) (SETQ NEXTW (fetch (WINDOW NEXTW) of SAVE)) (GO LOOP]) (XSHAPEW [LAMBDA (WINDOW NEWREGION) (* ; "Edited 6-Sep-91 17:49 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (PROG ((OLDSIZE (WINDOWPROP WINDOW 'REGION)) NEWSIZE) (COND ((\USERFNISDON'T (fetch (WINDOW RESHAPEFN) of WINDOW)) (* ;  "don't allow the window to be reshaped.") (PROMPTPRINT "This window cannot be reshaped.") (RETURN NIL))) (SETQ NEWSIZE (MINIMUMWINDOWSIZE WINDOW)) [SETQ NEWSIZE (COND (NEWREGION (* ;  "An explicit new region was specified; make sure it's big enough.") (COND [(OR (LESSP (fetch (REGION WIDTH) of NEWREGION) (CAR NEWSIZE)) (LESSP (fetch (REGION HEIGHT) of NEWREGION) (CDR NEWSIZE))) (* ;  "given a region that is too small, so expand the width and height to at least the minima.") (CREATEREGION (fetch (REGION LEFT) of NEWREGION) (fetch (REGION BOTTOM) of NEWREGION) (IMAX (CAR NEWSIZE) (fetch (REGION WIDTH) of NEWREGION)) (IMAX (CDR NEWSIZE) (fetch (REGION HEIGHT) of NEWREGION] (T NEWREGION))) (T (ERROR "NEWREGION must be specified."] (RETURN (if (EQUAL NEWSIZE OLDSIZE) then (* ;; "if same size and place as before, do nothing") NIL elseif (AND (EQ (fetch (REGION WIDTH) of NEWSIZE) (fetch (REGION WIDTH) of OLDSIZE)) (EQ (fetch (REGION HEIGHT) of NEWSIZE) (fetch (REGION HEIGHT) of OLDSIZE))) then (* ;; "if same width and height, then optimize to a move") (XMOVEW WINDOW (fetch (REGION LEFT) of NEWSIZE) (fetch (REGION BOTTOM) of NEWSIZE)) else (* ;; "do the shape, checking for a doshapefn") (APPLY* (OR (WINDOWPROP WINDOW 'DOSHAPEFN) '\XSHAPEW1) WINDOW (COPYALL NEWSIZE]) (\XSHAPEW1 [LAMBDA (WINDOW REGION) (* ; "Edited 6-Sep-91 18:05 by matsuda") (SETQ WINDOW (\INSUREWINDOW WINDOW)) (OR (REGIONP REGION) (\ILLEGAL.ARG REGION)) (PROG [(XBASEW (WINDOWPROP WINDOW 'XBASEW] (IF XBASEW THEN (XLIB:WITH-STATE (XBASEW) (CL:SETF (XLIB:DRAWABLE-X XBASEW) (fetch (REGION LEFT) of REGION)) (CL:SETF (XLIB:DRAWABLE-Y XBASEW) (IDIFFERENCE (XLIB:DRAWABLE-HEIGHT XLIB::*ROOT*) (fetch (REGION TOP) of REGION))) (CL:SETF (XLIB:DRAWABLE-WIDTH XBASEW) (fetch (REGION WIDTH) of REGION)) (CL:SETF (XLIB:DRAWABLE-HEIGHT XBASEW) (fetch (REGION HEIGHT) of REGION]) (XCREATEWFROMPIXMAP [LAMBDA (PIXMAP SCREEN) (* ; "Edited 13-Sep-91 14:33 by matsuda") (PROG (WINDOW WIDTH HEIGHT) (SETQ WINDOW (CREATEW (create SCREENREGION SCREEN _ (\INSURESCREEN SCREEN) LEFT _ 0 BOTTOM _ 0 WIDTH _ (SETQ WIDTH (PIXMAPWIDTH PIXMAP)) HEIGHT _ (SETQ HEIGHT (PIXMAPHEIGHT PIXMAP))) NIL 0 T)) (WINDOWPROP WINDOW 'MINSIZE (CONS (IMIN MinWindowWidth WIDTH) (IMIN MinWindowWidth HEIGHT))) (CL:SETF (XLIB:GCONTEXT-FUNCTION XLIB::*GC*) CL:BOOLE-1) (XLIB:COPY-AREA PIXMAP XLIB::*GC* 0 0 WIDTH HEIGHT (fetch (WINDOW SAVE) of WINDOW) 0 0) (RETURN WINDOW]) (XCLOSEMAINWINDOW [LAMBDA (ICONWIN) (* ; "Edited 11-Sep-91 11:22 by matsuda") (PROG [(MAINWIN (WINDOWPROP ICONWIN 'ICONFOR] [COND (MAINWIN (COND ((NULL (\OKTOCLOSEW MAINWIN)) (RETURN 'DON'T)) (T (AND (OPENWP MAINWIN) (\XCLOSEW1 MAINWIN] (WINDOWPROP ICONWIN 'ICONFOR NIL) (RETURN NIL]) (\XINTERNALTOTOPW [LAMBDA (WINDOW) (* ; "Edited 13-Sep-91 18:02 by matsuda") (PROG [(BASEW (WINDOWPROP WINDOW 'XBASEW] (AND BASEW (XLIB::SET-WINDOW-PRIORITY :ABOVE BASEW]) ) (DEFINEQ (ISXWINDOW? [LAMBDA (WINDOW) (* ; "Edited 11-Sep-91 10:56 by matsuda") (AND (TYPE? WINDOW WINDOW) (XLIB:DRAWABLE-P (fetch (SCREEN SCDESTINATION) of (fetch (WINDOW SCREEN) of WINDOW))) WINDOW]) ) (DEFINEQ (INIT.XMAS2 [LAMBDA NIL (* ; "Edited 20-Oct-91 10:55 by jn") (MOVD 'CREATEW 'CREATEW.DISPLAY) (MOVD 'CREATEW.NEW 'CREATEW) (MOVD 'CLOSEW 'CLOSEW.DISPLAY) (MOVD 'CLOSEW.NEW 'CLOSEW) (MOVD 'OPENW 'OPENW.DISPLAY) (MOVD 'OPENW.NEW 'OPENW) (MOVD 'MOVEW 'MOVEW.DISPLAY) (MOVD 'MOVEW.NEW 'MOVEW) (MOVD 'SHAPEW 'SHAPEW.DISPLAY) (MOVD 'SHAPEW.NEW 'SHAPEW) (MOVD 'SHRINKW 'SHRINKW.DISPLAY) (MOVD 'SHRINKW.NEW 'SHRINKW) (MOVD 'EXPANDW 'EXPANDW.DISPLAY) (MOVD 'EXPANDW.NEW 'EXPANDW) (SETQ \XSCREEN (CREATESCREEN XLIB::*ROOT*)) [replace (SCREEN SCDATA) of \XSCREEN with (SETQ \XDisplayWindowOps (CREATE WINDOWOPS CREATEW _ (FUNCTION CREATEW.XDISPLAY) OPENW _ (FUNCTION OPENW.XDISPLAY) CLOSEW _ (FUNCTION CLOSEW.XDISPLAY) MOVEW _ (FUNCTION MOVEW.XDISPLAY) SHAPEW _ (FUNCTION SHAPEW.XDISPLAY) SHRINKW _ (FUNCTION SHRINKW.XDISPLAY) EXPANDW _ (FUNCTION EXPANDW.XDISPLAY] [replace (SCREEN SCDATA) of \MAINSCREEN with (SETQ \DisplayWindowOps (CREATE WINDOWOPS CREATEW _ (FUNCTION CREATEW.DISPLAY) OPENW _ (FUNCTION OPENW.DISPLAY) CLOSEW _ (FUNCTION CLOSEW.DISPLAY) MOVEW _ (FUNCTION MOVEW.DISPLAY) SHAPEW _ (FUNCTION SHAPEW.DISPLAY) SHRINKW _ (FUNCTION SHRINKW.DISPLAY) EXPANDW _ (FUNCTION EXPANDW.DISPLAY] (CL:PUSH \XSCREEN \SCREENS]) ) (RPAQQ XMAS2COMS ((RECORDS WINDOWOPS) (FNS CREATESCREEN DSPCREATE CREATEW.NEW OPENW.NEW CLOSEW.NEW MOVEW.NEW SHAPEW.NEW SHRINKW.NEW EXPANDW.NEW) (FNS CREATEW.XDISPLAY OPENW.XDISPLAY CLOSEW.XDISPLAY MOVEW.XDISPLAY SHAPEW.XDISPLAY SHRINKW.XDISPLAY EXPANDW.XDISPLAY TOTOPW.XDISPLAY BURYW.XDISPLAY) (FNS \XOPENW1 XSHOWWFRAME ADVISEXWDS XMOVEORRESIZED.WINDOW \XMOUSELEFT \XMOUSEMOVED \FINDWINDOW \XMOUSEENTERED XMOVEW \XCLOSEW1 XSHAPEW \XSHAPEW1 XCREATEWFROMPIXMAP XCLOSEMAINWINDOW \XINTERNALTOTOPW) (FNS ISXWINDOW?) (FNS INIT.XMAS2) (VARS XMAS2COMS))) (PUTPROPS XMAS2 COPYRIGHT ("Fuji Xerox Co., Ltd" 1991)) (DECLARE%: DONTCOPY (FILEMAP (NIL (1816 10841 (CREATESCREEN 1826 . 3905) (DSPCREATE 3907 . 7484) (CREATEW.NEW 7486 . 8271) (OPENW.NEW 8273 . 8747) (CLOSEW.NEW 8749 . 9129) (MOVEW.NEW 9131 . 9614) (SHAPEW.NEW 9616 . 10006) ( SHRINKW.NEW 10008 . 10458) (EXPANDW.NEW 10460 . 10839)) (10842 30847 (CREATEW.XDISPLAY 10852 . 13334) (OPENW.XDISPLAY 13336 . 13835) (CLOSEW.XDISPLAY 13837 . 14174) (MOVEW.XDISPLAY 14176 . 18419) ( SHAPEW.XDISPLAY 18421 . 21590) (SHRINKW.XDISPLAY 21592 . 28583) (EXPANDW.XDISPLAY 28585 . 29816) ( TOTOPW.XDISPLAY 29818 . 30569) (BURYW.XDISPLAY 30571 . 30845)) (30848 57817 (\XOPENW1 30858 . 32860) ( XSHOWWFRAME 32862 . 36235) (ADVISEXWDS 36237 . 42690) (XMOVEORRESIZED.WINDOW 42692 . 44286) ( \XMOUSELEFT 44288 . 44760) (\XMOUSEMOVED 44762 . 45165) (\FINDWINDOW 45167 . 45683) (\XMOUSEENTERED 45685 . 46087) (XMOVEW 46089 . 50325) (\XCLOSEW1 50327 . 51941) (XSHAPEW 51943 . 55096) (\XSHAPEW1 55098 . 56108) (XCREATEWFROMPIXMAP 56110 . 57083) (XCLOSEMAINWINDOW 57085 . 57578) (\XINTERNALTOTOPW 57580 . 57815)) (57818 58184 (ISXWINDOW? 57828 . 58182)) (58185 61281 (INIT.XMAS2 58195 . 61279))))) STOP \ No newline at end of file diff --git a/obsolete/sources/new-edit-interface.tedit b/obsolete/sources/new-edit-interface.tedit deleted file mode 100644 index 693420f8be0acdee34c0a649f8b8ed9b9cf17369..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4542 zcmaJ_+m0K@5gj`LVg%qr{-C`tB88=t4PZdwi?Fs<@dC0|kQgAZ&6ysu&6#exyJxx7 z*Z4c~nlH*1DCbnqg)|WFLd)SycXidNs#9k)Tknjjebe}(bz9|pGEteQL!+%z?Mcm# z{_{fF%4p?lb=>Ks5_Xu%rlobsgj$zI#hve(N^Oh^CLX+tcGJ*oxK`R#d0UCw$)=76 z@a7e5_;B@NHoJ9V&#7PYkkJ)P+LSry98hD}9hmQ{*KIPMC&4hGPjg2Y$|L|db|M0$l z&fCOdZ%#)as(7t7KJApQYlBmOA#HEWPCr_nRgZZ2fP>a}IG(U7eS2sO{a)5i#e*qr zZTl#vz&(L2b<-F^X|nfSG(q+I`yB+dKjPBx(KgMw4GVvJAiLH$0QLXSROL>)t*Krw zu6Z=T9#JD&G{RHi*mQqx9^oTE)*ByyVDwmbRyR2%Qa7cPjU@>5LtS;Q@_FACPRxmA zvGmDB>XH69B83MT4WgqG4;r&9h1UlTuqr;T?Un`OyOe7Zw{YGu`~ zff$CCkBIMn$b3XXYg7nMWG$*_Vk8r&x!i+;aThwbU#w<;{Jb9p8V}+^awKFD25nrA zzG8RVq2U|v_arnF94fF0Mpq~BB)A~AJn(IGDtBnbInYEYX#$MKWf&tX+Qx!e&PZWu z2Jna}H7W+U{U$+@7dgy0u!OI*OnyMs1C?I5BIddEc6v1T< zRrSl2C^hjV*zGs;C+yAKLtQBHmz0{hmzFuXcU6tie+VL>uerrW7$a> z`1mrLLfkmSaWGrp4ET27Kb?z>Ipn5{FbVJXoVTv_FJ@o96ota?y4V%Ah`4GCUsQ!D z8eHc)CGNDv0e5Us7P?4yTH)!YIN@)?PJ_=HPfC2tceskSbP7wtCGMs*9_eYfSmCbYsxVJtHRf&pLvSg@Io4&ou z!vhPm3A=UhPb!XOfa7NPS%Vi?Q;#N)uGrO|?wHK^&C9=i_ww&IkX?~aPpWJ@E0*I8 zx26IDISk1MI@ryK7rCZ$TKxgTrG7dd<4rxBZpKwolp;tUk(`iEJPDCf;7KFk zm`Pe@|B*OIlBz+zM~_~>M@cBQQga~UXs(rr377!+<2qR=1d%Wl5g6nxlhPLr!R2zO z74cS@nfOQFLZ7vub)I^zb0R9jDG24#AmIQ@LLX#i6q=)1AWzE<4zWYiuFIu3xlirq zAeutvJM4*OBB&9Gi!}D(jv}$QW(Wm~3*kX8<21y;v|@5)5qvF5Qq66%;{Dcxfb)W- z!&D!2-q}4FlbruqmrMNt2|)eG(au61{dg*yl^8~8Qj(ForcrdE!!cLJ)l0l`prNG^ z`mrGD-8^ZELspJh$-{Q=SVSgsOV7_F=pb6mFAg^8KFp)MhVq}FzwlvdEKWp@CNga> zl4H@Q6aYPNSd8AU`4v+N-z2;EcIf0ArotXY9sWlV^rG;~6*OoCF>g zom8d;jSxg^=(r#9E~(1X9m8OdOmYaz`y~y}W}H)*^=TZc*u>eaSFPC{QL`5B+N?Lc znnAIZ~ysj{r2JgTHUDmKW=~c@mAgZbunDN!qxij<4^bRZ{Mj`i$(Eg g*)D(n^k05_g@6Akim!R`&9D8PzpRTteE#?U01I&(D*ylh diff --git a/obsolete/sources/subrs.h b/obsolete/sources/subrs.h deleted file mode 100644 index 8f8dd528..00000000 --- a/obsolete/sources/subrs.h +++ /dev/null @@ -1,150 +0,0 @@ -/* This file written from LLSUBRS on 17-Mar-2021 11:14:28 */ -/* Do not edit this file! Instead, edit the list \initsubrs */ -/* on the lisp file LLSUBRS and then call WRITECALLSUBRS to */ -/* generate a new version. */ -#ifndef SUBRS_H -#define SUBRS_H 1 -#define sb_YIELD 0322 -#define sb_BACKGROUNDSUBR 06 -#define sb_CHECKBCPLPASSWORD 07 -#define sb_DISKPARTITION 010 -#define sb_DSPBOUT 011 -#define sb_DSPRATE 012 -#define sb_GATHERSTATS 013 -#define sb_GETPACKETBUFFER 014 -#define sb_LISPFINISH 015 -#define sb_MOREVMEMFILE 016 -#define sb_RAID 017 -#define sb_READRAWPBI 020 -#define sb_WRITERAWPBI 021 -#define sb_SETSCREENCOLOR 022 -#define sb_SHOWDISPLAY 023 -#define sb_PUPLEVEL1STATE 024 -#define sb_WRITESTATS 025 -#define sb_CONTEXTSWITCH 026 -#define sb_COPYSYS0SUBR 027 -#define sb_WRITEMAP 030 -#define sb_UFS_GETFILENAME 042 -#define sb_UFS_DELETEFILE 043 -#define sb_UFS_RENAMEFILE 044 -#define sb_COM_READPAGES 045 -#define sb_COM_WRITEPAGES 046 -#define sb_COM_TRUNCATEFILE 047 -#define sb_UFS_DIRECTORYNAMEP 051 -#define sb_COM_GETFREEBLOCK 055 -#define sb_SETUNIXTIME 060 -#define sb_GETUNIXTIME 061 -#define sb_COPYTIMESTATS 062 -#define sb_UNIX_USERNAME 063 -#define sb_UNIX_FULLNAME 064 -#define sb_UNIX_GETENV 065 -#define sb_UNIX_GETPARM 066 -#define sb_CHECK_SUM 067 -#define sb_ETHER_SUSPEND 070 -#define sb_ETHER_RESUME 071 -#define sb_ETHER_AVAILABLE 072 -#define sb_ETHER_RESET 073 -#define sb_ETHER_GET 074 -#define sb_ETHER_SEND 075 -#define sb_ETHER_SETFILTER 076 -#define sb_ETHER_CHECK 077 -#define sb_DSPCURSOR 0100 -#define sb_SETMOUSEXY 0101 -#define sb_DSP_VIDEOCOLOR 0102 -#define sb_DSP_SCREENWIDTH 0103 -#define sb_DSP_SCREENHEIGHT 0104 -#define sb_BITBLTSUB 0105 -#define sb_BLTCHAR 0106 -#define sb_TEDIT_BLTCHAR 0107 -#define sb_BITBLT_BITMAP 0110 -#define sb_BLTSHADE_BITMAP 0111 -#define sb_RS232C_CMD 0112 -#define sb_RS232C_READ_INIT 0113 -#define sb_RS232C_WRITE 0114 -#define sb_KEYBOARDBEEP 0120 -#define sb_KEYBOARDMAP 0121 -#define sb_KEYBOARDSTATE 0122 -#define sb_VMEMSAVE 0131 -#define sb_LISP_FINISH 0132 -#define sb_NEWPAGE 0133 -#define sb_DORECLAIM 0134 -#define sb_DUMMY_135Q 0135 -#define sb_NATIVE_MEMORY_REFERENCE 0136 -#define sb_OLD_COMPILE_LOAD_NATIVE 0137 -#define sb_DISABLEGC 0140 -#define sb_COM_SETFILEINFO 0147 -#define sb_COM_OPENFILE 0150 -#define sb_COM_CLOSEFILE 0151 -#define sb_DSK_GETFILENAME 0152 -#define sb_DSK_DELETEFILE 0153 -#define sb_DSK_RENAMEFILE 0154 -#define sb_COM_NEXT_FILE 0156 -#define sb_COM_FINISH_FINFO 0157 -#define sb_COM_GEN_FILES 0160 -#define sb_DSK_DIRECTORYNAMEP 0161 -#define sb_COM_GETFILEINFO 0162 -#define sb_COM_CHANGEDIR 0164 -#define sb_UNIX_HANDLECOMM 0165 -#define sb_RPC_CALL 0167 -#define sb_MESSAGE_READP 0170 -#define sb_MESSAGE_READ 0171 -#define sb_MONITOR_CONTROL 0200 -#define sb_GET_NATIVE_ADDR_FROM_LISP_PTR 0203 -#define sb_GET_LISP_PTR_FROM_NATIVE_ADDR 0204 -#define sb_LOAD_NATIVE_FILE 0205 -#define sb_SUSPEND_LISP 0206 -#define sb_NEW_BLTCHAR 0207 -#define sb_COLOR_INIT 0210 -#define sb_COLOR_SCREENMODE 0211 -#define sb_COLOR_MAP 0212 -#define sb_COLOR_BASE 0213 -#define sb_C_SlowBltChar 0214 -#define sb_UNCOLORIZE_BITMAP 0215 -#define sb_COLORIZE_BITMAP 0216 -#define sb_COLOR_8BPPDRAWLINE 0217 -#define sb_TCP_OP 0220 -#define sb_WITH_SYMBOL 0221 -#define sb_CAUSE_INTERRUPT 0222 -#define sb_OPEN_SOCKET 0240 -#define sb_CLOSE_SOCKET 0241 -#define sb_READ_SOCKET 0242 -#define sb_WRITE_SOCKET 0243 -#define sb_CALL_C_FUNCTION 0247 -#define sb_DLD_LINK 0250 -#define sb_DLD_UNLINK_BY_FILE 0251 -#define sb_DLD_UNLINK_BY_SYMBOL 0252 -#define sb_DLD_GET_SYMBOL 0253 -#define sb_DLD_GET_FUNC 0254 -#define sb_DLD_FUNCTION_EXECUTABLE_P 0255 -#define sb_DLD_LIST_UNDEFINED_SYMBOLS 0256 -#define sb_C_MALLOC 0257 -#define sb_C_FREE 0260 -#define sb_C_PUTBASEBYTE 0261 -#define sb_C_GETBASEBYTE 0262 -#define sb_CHAR_OPENFILE 0310 -#define sb_CHAR_BIN 0311 -#define sb_CHAR_BOUT 0312 -#define sb_CHAR_IOCTL 0313 -#define sb_CHAR_CLOSEFILE 0314 -#define sb_CHAR_EOFP 0315 -#define sb_CHAR_READP 0316 -#define sb_CHAR_BINS 0317 -#define sb_CHAR_BOUTS 0320 -#define sb_CHAR_FILLBUFFER 0321 -/* MISCN opcodes */ -#define miscn_USER_SUBR 00 -#define miscn_VALUES 01 -#define miscn_SXHASH 02 -#define miscn_EQLHASHBITSFN 03 -#define miscn_STRINGHASHBITS 04 -#define miscn_STRING_EQUAL_HASHBITS 05 -#define miscn_VALUES_LIST 06 -#define miscn_LCFetchMethod 07 -#define miscn_LCFetchMethodOrHelp 010 -#define miscn_LCFindVarIndex 011 -#define miscn_LCGetIVValue 012 -#define miscn_LCPutIVValue 013 -/* Assigned USER SUBR numbers */ -#define user_subr_DUMMY 012 -#define user_subr_SAMPLE_USER_SUBR 00 -#endif diff --git a/obsolete/sunloadup/FASTINIT b/obsolete/sunloadup/FASTINIT deleted file mode 100644 index 9ca76db7..00000000 --- a/obsolete/sunloadup/FASTINIT +++ /dev/null @@ -1,82 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP") -(FILECREATED "26-Jan-90 11:46:56" |{DSK}/home/neptune/jds/FASTINIT.;1| 2946 - - |changes| |to:| (VARS FASTINITCOMS) - (FNS FASTSETAW FASTSETA FASTELTW FASTELT)) - - -(PRETTYCOMPRINT FASTINITCOMS) - -(RPAQQ FASTINITCOMS ( - (* |;;| - "Function definitions for the \"fast\" array accessors used in making the INIT.") - - - (* |;;| - "<...>Library>VMEM defines these as ELT & SETA, which aren't too fast.") - - - (* |;;| - "This is an attempt to speed up INIT building on Suns. --JDS 1/26/90") - - (FNS FASTELT FASTELTW FASTSETA FASTSETAW))) - - - -(* |;;| "Function definitions for the \"fast\" array accessors used in making the INIT.") - - - - -(* |;;| "<...>Library>VMEM defines these as ELT & SETA, which aren't too fast.") - - - - -(* |;;| "This is an attempt to speed up INIT building on Suns. --JDS 1/26/90") - -(DEFINEQ - -(FASTELT - (LAMBDA (A N) (* \; "Edited 26-Jan-90 11:39 by jds") - - (* |;;| "Fast version of pointer-array ELT, for use in building INIT.") - - (PROG ((BASE (|ffetch| (ARRAYP BASE) |of| A)) - (N0 (IDIFFERENCE N (|ffetch| (ARRAYP ORIG) |of| A)))) - (SETQ N0 (IPLUS N0 (|ffetch| (ARRAYP OFFST) |of| A))) - (RETURN (\\GETBASEPTR (\\ADDBASE2 BASE N0) - 0))))) - -(FASTELTW - (LAMBDA (A N) (* \; "Edited 26-Jan-90 11:40 by jds") - (PROG ((BASE (|fetch| (ARRAYP BASE) |of| A)) - (N0 (IDIFFERENCE N (|fetch| (ARRAYP ORIG) |of| A)))) - (SETQ N0 (IPLUS N0 (|fetch| (ARRAYP OFFST) |of| A))) - (RETURN (\\GETBASE BASE N0))))) - -(FASTSETA - (LAMBDA (A N V) (* \; "Edited 26-Jan-90 11:41 by jds") - - (* |;;| "Fast version of SETA for pointer arrays for the INIT building code.") - - (PROG ((BASE (|fetch| (ARRAYP BASE) |of| A)) - (N0 (IDIFFERENCE N (|fetch| (ARRAYP ORIG) |of| A)))) - (SETQ N0 (IPLUS N0 (|fetch| (ARRAYP OFFST) |of| A))) - (RETURN (\\RPLPTR (\\ADDBASE2 BASE N0) - 0 V))))) - -(FASTSETAW - (LAMBDA (A N V) (* \; "Edited 26-Jan-90 11:42 by jds") - - (* |;;| "Fast version of SETA for wrod-arrays, for INIT building code.") - - (PROG ((BASE (|fetch| (ARRAYP BASE) |of| A)) - (N0 (IDIFFERENCE N (|fetch| (ARRAYP ORIG) |of| A)))) - (SETQ N0 (IPLUS N0 (|fetch| (ARRAYP OFFST) |of| A))) - (RETURN (\\PUTBASE BASE N0 V))))) -) -(DECLARE\: DONTCOPY - (FILEMAP (NIL (1126 2923 (FASTELT 1136 . 1622) (FASTELTW 1624 . 1983) (FASTSETA 1985 . 2474) ( -FASTSETAW 2476 . 2921))))) -STOP diff --git a/obsolete/sunloadup/FASTINIT-2.0.DFASL b/obsolete/sunloadup/FASTINIT-2.0.DFASL deleted file mode 100644 index 09dbca9ed15d0e541dc337e10520a086a6debbb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1356 zcmaiz-*1~%6vr>%{BSoPRbI#$*uW0$ZriPpTaO4h1 zfc+>OMIk=+15EuW=n{Mke*9dv9=~`PQ4-KP9UnOZ`fOacI=W^^a>uNHt{ZbB6XqT*6kR44!w()@z zbo(qsybO6z6Sqsbi$9Vx{ zRh(b5Y)O};wp>(ovtzF%abCosKPnE$Ph`LbFytXc@;Y8_b@ZmK8hUcV{lb3^3G=ej zQgx-s@|Vr2J!#mSM)bk%2H_+P#`-P`8o^|$Q4!tWNBuqQZOrh0FY`XP7t^l~NuEaI|{)m-U=b!>~ McO~feM;90W0Yyobp8x;= diff --git a/obsolete/sunloadup/FASTINIT.DFASL b/obsolete/sunloadup/FASTINIT.DFASL deleted file mode 100644 index d58457d7027dca55ab59272e87657a72d33dd7b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1430 zcma)5-)q}e6qaPyiI-;BqqG}i^u~jZrIBpeb=oAwM7HEksUitWZo0A;)xN2<+LFqOx-aK zkRM0WI70h=fI>eG1{m!_9=(vQhcE9B-SD~C8oS|i;0L%N)LK?w*9=MSo2{;7*{ZJE z!j`yfU8o!c*op8E?ct$^!=ZDqhQxblCmtUlabu$ftHx%%wpnWk%g{nQgPRpuP80`O zP5lnqalF_Gva)+n*4(_azS*b?%cp;)$K2OG1J|?pV~IxPGMlA~bWvhBHa$u{?W&s6 z=_!(}$ePjNnDlj0TD5FRm!+P}tGd~@SJR{jcP&MiSf!RXu2vH)RGR(ncT%zd67=4l3a$hOqh zlr+h~IY4T`lsXTk2aqVLx~=py)iT*MDZJ3*@%SYJTA7s(GBbIZ*0))B<4kFql*Pk7DE9?HXld@#0M5MiXjj=iYmY;^ImE~bk)qk?7P1suT0=jN+`$N7u=h;_ z(tSj6g?YP+98x zT6%Z|H0Qdy1+N7<6CeO#HXaD~W-(<1aglDJ@!k@QJ^h_alh5kwJouR3s3B3L25zn& zC6(;&s*d~#u6lSH#U8HyI1H<^slzYDydgK!<2>4a$4J}%FwB2tj#anE`A_JnzW?hx z^+Y{+H?ugW*TB|CNxm&v3PTT&)xo^*lE_W)F-L8X-LI44EyJXCmNc?PZc|InUH6JD zL(SD69w;_#)Kwpw0QQC;Ai{4KC^BV}1#?Q->LRbdGgjnVjv=cIOKyV+*9f}Eg76fY zR9~@(h`BESvmo_)()Z>PX>z1VAy?AlD~(G-swYp{*O<3$`p2IGb5#AKIsQtHVRGkF l$e-iioiiZK56Bfju3Z|r{qIMxmitani>SUNLOADUP>FILESETS;2 5281 - - changes to%: (VARS 1LISPSET) - - previous date%: " 5-Apr-89 16:28:12" {DSK}mitani>SUNLOADUP>FILESETS;1) - - -(* " -Copyright (c) 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990 by Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT FILESETSCOMS) - -(RPAQQ FILESETSCOMS ((* ;;; "contains all of the lists of files which are used in various ways") (* ;; "I took out the EXPORT of the filesets because it led to inconsistency when one had loaded ABC. -- Pavel") (VARS * FILESETS) (VARS EXPORTFILES) (VARS MAKEINITFILES MAKEINITTYPES RENAMETYPES ABCFILES READSYSFILES DATABASEFILES) (VARS DEADFNS))) - - - -(* ;;; "contains all of the lists of files which are used in various ways") - - - - -(* ;; -"I took out the EXPORT of the filesets because it led to inconsistency when one had loaded ABC. -- Pavel" -) - - -(RPAQQ FILESETS (0LISPSET 1LISPSET 2LISPSET 3LISPSET 4LISPSET 5LISPSET 6LISPSET 7LISPSET 8LISPSET 9LISPSET)) - -(RPAQQ 0LISPSET (PACKAGE-CONVERSION-TABLE LLFAULT LLSUBRS LLBFS LLNEW FILEIO IMAGEIO LLBASIC LLGC LLARRAYELT LLINTERP LLMVS DEFSTRUCT-RUN-TIME SETF-RUNTIME CMLSEQBASICS LLARITH LLFLOAT LLBIGNUM LLREAD LLCHAR LLSTK LLDATATYPE IOCHAR LLKEY LLTIMER)) - -(RPAQQ 1LISPSET (ASTACK DTDECLARE ATBL LLCODE ACODE COREIO AOFD ADIR PMAP VANILLADISK MOD44IO ATERM APRINT ABASIC AERROR AINTERRUPT MISC BOOTSTRAP CMLMACROS CMLEVAL CMLPROGV CMLSPECIALFORMS LLRESTART LLERROR LLSYMBOL LLPACKAGE PACKAGE-STARTUP CONDITION-PACKAGE XCL-PACKAGE PROC CMLARRAY DSK UFS UFSCALLC LLETHER PUP LEAF PASSWORDS FONT SUNFONT LLDISPLAY APUTDQ COMPATIBILITY DMISC CMLMACROS CMLLIST CMLCHARACTER CMLREADTABLE MAIKOLOADUPFNS MAIKOBITBLT MAIKOINIT)) - -(RPAQQ 2LISPSET (MACHINEINDEPENDENT POSTLOADUP)) - -(RPAQQ 3LISPSET (MACROS DLAP BYTECOMPILER COMPILE)) - -(RPAQQ 4LISPSET (EDIT WEDIT HELPDL PRETTY COMMENT BREAK ADVISE LOADFNS FILEPKG DFILE DMISC)) - -(RPAQQ 5LISPSET (HIST UNDO SPELL DWIM WTFIX CLISP DWIMIFY CLISPIFY RECORD ASSIST)) - -(RPAQQ 6LISPSET (MSANALYZE MSPARSE MASTERSCOPE HPRINT BRKDWN MATCH)) - -(RPAQQ 7LISPSET (ADISPLAY DEXEC AARITH AFONT HARDCOPY PRESS HLDISPLAY MENU WINDOW WBREAK INSPECT INSPECT-CLOSURE BSP CHAT TRSERVER 10MBDRIVER LLNS DISKDLION SPP COURIER NSPRINT CLEARINGHOUSE NSFILING INTERPRESS ADDARITH MACROAUX DEDIT DSPRINTDEF NEWPRINTDEF TTYIN DPUPFTP FLOPPY)) - -(RPAQQ 8LISPSET (MAKEINIT MEM RENAMEFNS)) - -(RPAQQ 9LISPSET (LLFCOMPILE VMEM READSYS APS PCALLSTATS UPCSTATS REMOTEVMEM)) - -(RPAQQ EXPORTFILES (FILESETS MODARITH LLPARAMS LLCODE AERROR AOFD APRINT ATERM LLARRAYELT LLDATATYPE LLNEW LLBASIC LLCHAR LLSTK PMAP LLGC ATBL FILEIO LLARITH LLFLOAT FONT LLKEY LLDISPLAY ADISPLAY AINTERRUPT PUP RENAMEMACROS HLDISPLAY WINDOW MACROAUX ADDARITH LLFAULT LLTIMER LLETHER IMAGEIO PROC LLREAD PASSWORDS INTERPRESS HARDCOPY CMLARRAY LLSUBRS)) - -(RPAQQ MAKEINITFILES (MAKEINIT MEM I-NEW)) - -(RPAQQ MAKEINITTYPES ((NIL INIT (0 1) 2LISPSET 1600) (SMALLINIT SMALLINIT (LLFAULT LLSUBRS LLNEW FILEIO LLBASIC LLGC LLINTERP LLARITH LLREAD LLCHAR TINYPATCH)) (MACROTEST MACROTEST ((MACROTEST) 0 1) 2LISPSET) (MICROTEST MICROTEST ((MICROTEST LLFAULT LLSTK LLSUBRS LLKEY LLBFS))) (NANOTEST NANOTEST ((MICROTEST LLSUBRS))) (NULL NULL ((DUMMY))) (MILLITEST MILLITEST ((MACROTEST LLFAULT LLSUBRS LLNEW LLBASIC LLGC LLINTERP LLARITH LLFLOAT LLARRAYELT LLSTK LLDATATYPE LLKEY ABASIC LLCHAR ASTACK MISC APUTDQ))) (CHECKARRAYS CHECKARRAYS (CHECKARRAYSPACE 0 1) 2LISPSET))) - -(RPAQQ RENAMETYPES ((I (FILES LLPARAMS LLCODE LLARRAYELT LLCHAR LLNEW LLBASIC LLDATATYPE LLGC LLSTK RENAMEMACROS MODARITH LLFAULT LLKEY LLBFS LLTIMER) (RENAMEDFILE . I-NEW) (SUBNAME . MKI.SUBFNS) (COMSNAME . INEWCOMS) (EXTRACOMS (VARS INITPTRS INITVALUES) (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP) MAKEINIT))) (MKI.SUBFNS) (INEWCOMS) (VALUES . INITVALUES) (PTRS . INITPTRS) (PREFIX . I.) (VAG2FN . I.VAG2)) (R (FILES LLCODE LLPARAMS LLBASIC LLDATATYPE LLNEW ACODE LLARRAYELT LLCHAR LLINTERP LLSTK RENAMEMACROS MODARITH LLFAULT) (RENAMEDFILE . RDSYS) (SUBNAME . RD.SUBFNS) (COMSNAME . RDCOMS) (EXTRACOMS (FILES VMEM) (VARS RDVALS RDPTRS) (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP) VMEM))) (RD.SUBFNS (\CALLME . *)) (RDCOMS) (PTRS . RDPTRS) (PREFIX . V) (VAG2FN . VVAG2) (VALUES . RDVALS) (RDPTRS) (RDVALUES)))) - -(RPAQQ ABCFILES (LOADABC COMPILEBANG SAMEDIR WHEREIS COMPILEFORMSLIST CHECKSET CMACROS DCODEFOR10 DTDECLARE BYTECOMPILER DLAP LLCODE ACODE MACROAUX)) - -(RPAQQ READSYSFILES (RDSYS READSYS VMEM REMOTEVMEM)) - -(RPAQQ DATABASEFILES (0LISPSET 1LISPSET (2LISPSET ACODE) (3LISPSET DLAP) (4LISPSET DFILE DMISC) 7LISPSET (8LISPSET MAKEINIT MEM) 9LISPSET (10LISPSET LLPARAMS) (NIL CHECKARRAYSPACE MAKEINEW PMEMSTATS PPAGESTATS LLFCOMPILE))) - -(RPAQQ DEADFNS ((PUTBASE \PUTBASE) (GETBASE \GETBASE) (ADDBASE \ADDBASE) (GETBASEBYTE \GETBASEBYTE) (PUTBASEBYTE \PUTBASEBYTE) (PUTBASEPTR \PUTBASEPTR) (HILOC \HILOC) (LOLOC \LOLOC) (VAG2 \VAG2) (PAGEBASE NIL) (PAGELOC NIL) (WordsPerPage WORDSPERPAGE) (ALTOMACRO DMACRO) (\STACKSPACE ??) (GETBASEPTR \GETBASEPTR) (FPLUS2) (FTIMES2) (CREATECELL \CREATECELL))) -(PUTPROPS FILESETS COPYRIGHT ("Xerox Corporation" 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL))) -STOP diff --git a/obsolete/sunloadup/FILESETS.NOETHER b/obsolete/sunloadup/FILESETS.NOETHER deleted file mode 100644 index 5f3a9f88..00000000 --- a/obsolete/sunloadup/FILESETS.NOETHER +++ /dev/null @@ -1,175 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "15-Feb-90 16:21:14" {DSK}/users/osamu/SUNLOADUP/FILESETS.;1 6850 - - previous date%: " 5-Apr-89 16:28:12" {ERIS}SUNLOADUP>FILESETS.;7) - - -(* " -Copyright (c) 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990 by Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT FILESETSCOMS) - -(RPAQQ FILESETSCOMS - ( - -(* ;;; "contains all of the lists of files which are used in various ways") - - - (* ;; "I took out the EXPORT of the filesets because it led to inconsistency when one had loaded ABC. -- Pavel") - - - (* ;; "'90/02/15 osamu: REMOVE LLETHER from 1LISPSET.") - - (VARS * FILESETS) - (VARS EXPORTFILES) - (VARS MAKEINITFILES MAKEINITTYPES RENAMETYPES ABCFILES READSYSFILES DATABASEFILES) - (VARS DEADFNS))) - - - -(* ;;; "contains all of the lists of files which are used in various ways") - - - - -(* ;; -"I took out the EXPORT of the filesets because it led to inconsistency when one had loaded ABC. -- Pavel" -) - - - - -(* ;; "'90/02/15 osamu: REMOVE LLETHER from 1LISPSET.") - - -(RPAQQ FILESETS (0LISPSET 1LISPSET 2LISPSET 3LISPSET 4LISPSET 5LISPSET 6LISPSET 7LISPSET 8LISPSET - 9LISPSET)) - -(RPAQQ 0LISPSET (PACKAGE-CONVERSION-TABLE LLFAULT LLSUBRS LLBFS LLNEW FILEIO IMAGEIO LLBASIC LLGC - LLARRAYELT LLINTERP LLMVS DEFSTRUCT-RUN-TIME SETF-RUNTIME CMLSEQBASICS - LLARITH LLFLOAT LLBIGNUM LLREAD LLCHAR LLSTK LLDATATYPE LLKEY LLTIMER)) - -(RPAQQ 1LISPSET - (ASTACK DTDECLARE ATBL LLCODE ACODE IOCHAR COREIO AOFD ADIR PMAP VANILLADISK MOD44IO ATERM - APRINT ABASIC AERROR AINTERRUPT MISC BOOTSTRAP CMLMACROS CMLEVAL CMLPROGV - CMLSPECIALFORMS LLRESTART LLERROR LLSYMBOL LLPACKAGE PACKAGE-STARTUP CONDITION-PACKAGE - XCL-PACKAGE PROC CMLARRAY DSK UFS UFSCALLC PASSWORDS FONT SUNFONT LLDISPLAY APUTDQ - COMPATIBILITY DMISC CMLMACROS CMLLIST CMLCHARACTER CMLREADTABLE MAIKOLOADUPFNS - MAIKOBITBLT MAIKOINIT)) - -(RPAQQ 2LISPSET (MACHINEINDEPENDENT POSTLOADUP)) - -(RPAQQ 3LISPSET (MACROS DLAP BYTECOMPILER COMPILE)) - -(RPAQQ 4LISPSET (EDIT WEDIT HELPDL PRETTY COMMENT BREAK ADVISE LOADFNS FILEPKG DFILE DMISC)) - -(RPAQQ 5LISPSET (HIST UNDO SPELL DWIM WTFIX CLISP DWIMIFY CLISPIFY RECORD ASSIST)) - -(RPAQQ 6LISPSET (MSANALYZE MSPARSE MASTERSCOPE HPRINT BRKDWN MATCH)) - -(RPAQQ 7LISPSET - (ADISPLAY DEXEC AARITH AFONT HARDCOPY PRESS HLDISPLAY MENU WINDOW WBREAK INSPECT - INSPECT-CLOSURE BSP CHAT TRSERVER 10MBDRIVER LLNS DISKDLION SPP COURIER NSPRINT - CLEARINGHOUSE NSFILING INTERPRESS ADDARITH MACROAUX DEDIT DSPRINTDEF NEWPRINTDEF TTYIN - DPUPFTP FLOPPY)) - -(RPAQQ 8LISPSET (MAKEINIT MEM RENAMEFNS)) - -(RPAQQ 9LISPSET (LLFCOMPILE VMEM READSYS APS PCALLSTATS UPCSTATS REMOTEVMEM)) - -(RPAQQ EXPORTFILES - (FILESETS MODARITH LLPARAMS LLCODE AERROR AOFD APRINT ATERM LLARRAYELT LLDATATYPE LLNEW - LLBASIC LLCHAR LLSTK PMAP LLGC ATBL FILEIO LLARITH LLFLOAT FONT LLKEY LLDISPLAY - ADISPLAY AINTERRUPT PUP RENAMEMACROS HLDISPLAY WINDOW MACROAUX ADDARITH LLFAULT LLTIMER - LLETHER IMAGEIO PROC LLREAD PASSWORDS INTERPRESS HARDCOPY CMLARRAY LLSUBRS)) - -(RPAQQ MAKEINITFILES (MAKEINIT MEM I-NEW)) - -(RPAQQ MAKEINITTYPES - ((NIL INIT (0 1) - 2LISPSET 1600) - (SMALLINIT SMALLINIT (LLFAULT LLSUBRS LLNEW FILEIO LLBASIC LLGC LLINTERP LLARITH LLREAD - LLCHAR TINYPATCH)) - (MACROTEST MACROTEST ((MACROTEST) - 0 1) - 2LISPSET) - (MICROTEST MICROTEST ((MICROTEST LLFAULT LLSTK LLSUBRS LLKEY LLBFS))) - (NANOTEST NANOTEST ((MICROTEST LLSUBRS))) - (NULL NULL ((DUMMY))) - (MILLITEST MILLITEST - ((MACROTEST LLFAULT LLSUBRS LLNEW LLBASIC LLGC LLINTERP LLARITH LLFLOAT LLARRAYELT - LLSTK LLDATATYPE LLKEY ABASIC LLCHAR ASTACK MISC APUTDQ))) - (CHECKARRAYS CHECKARRAYS (CHECKARRAYSPACE 0 1) - 2LISPSET))) - -(RPAQQ RENAMETYPES - ((I (FILES LLPARAMS LLCODE LLARRAYELT LLCHAR LLNEW LLBASIC LLDATATYPE LLGC LLSTK RENAMEMACROS - MODARITH LLFAULT LLKEY LLBFS LLTIMER) - (RENAMEDFILE . I-NEW) - (SUBNAME . MKI.SUBFNS) - (COMSNAME . INEWCOMS) - (EXTRACOMS (VARS INITPTRS INITVALUES) - (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP) - MAKEINIT))) - (MKI.SUBFNS) - (INEWCOMS) - (VALUES . INITVALUES) - (PTRS . INITPTRS) - (PREFIX . I.) - (VAG2FN . I.VAG2)) - (R (FILES LLCODE LLPARAMS LLBASIC LLDATATYPE LLNEW ACODE LLARRAYELT LLCHAR LLINTERP LLSTK - RENAMEMACROS MODARITH LLFAULT) - (RENAMEDFILE . RDSYS) - (SUBNAME . RD.SUBFNS) - (COMSNAME . RDCOMS) - (EXTRACOMS (FILES VMEM) - (VARS RDVALS RDPTRS) - (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP) - VMEM))) - (RD.SUBFNS (\CALLME . *)) - (RDCOMS) - (PTRS . RDPTRS) - (PREFIX . V) - (VAG2FN . VVAG2) - (VALUES . RDVALS) - (RDPTRS) - (RDVALUES)))) - -(RPAQQ ABCFILES (LOADABC COMPILEBANG SAMEDIR WHEREIS COMPILEFORMSLIST CHECKSET CMACROS DCODEFOR10 - DTDECLARE BYTECOMPILER DLAP LLCODE ACODE MACROAUX)) - -(RPAQQ READSYSFILES (RDSYS READSYS VMEM REMOTEVMEM)) - -(RPAQQ DATABASEFILES (0LISPSET 1LISPSET (2LISPSET ACODE) - (3LISPSET DLAP) - (4LISPSET DFILE DMISC) - 7LISPSET - (8LISPSET MAKEINIT MEM) - 9LISPSET - (10LISPSET LLPARAMS) - (NIL CHECKARRAYSPACE MAKEINEW PMEMSTATS PPAGESTATS LLFCOMPILE))) - -(RPAQQ DEADFNS - ((PUTBASE \PUTBASE) - (GETBASE \GETBASE) - (ADDBASE \ADDBASE) - (GETBASEBYTE \GETBASEBYTE) - (PUTBASEBYTE \PUTBASEBYTE) - (PUTBASEPTR \PUTBASEPTR) - (HILOC \HILOC) - (LOLOC \LOLOC) - (VAG2 \VAG2) - (PAGEBASE NIL) - (PAGELOC NIL) - (WordsPerPage WORDSPERPAGE) - (ALTOMACRO DMACRO) - (\STACKSPACE ??) - (GETBASEPTR \GETBASEPTR) - (FPLUS2) - (FTIMES2) - (CREATECELL \CREATECELL))) -(PUTPROPS FILESETS COPYRIGHT ("Xerox Corporation" 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL))) -STOP diff --git a/obsolete/sunloadup/FILESETS.ORIG b/obsolete/sunloadup/FILESETS.ORIG deleted file mode 100644 index ea51dea1..00000000 --- a/obsolete/sunloadup/FILESETS.ORIG +++ /dev/null @@ -1,168 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED " 5-Apr-89 16:28:12" {ERIS}SUNLOADUP>FILESETS.;7 7015 - - changes to%: (VARS 1LISPSET) - - previous date%: " 6-Feb-89 15:49:03" {ERIS}SUNLOADUP>FILESETS.;6) - - -(* " -Copyright (c) 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989 by Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT FILESETSCOMS) - -(RPAQQ FILESETSCOMS ( - -(* ;;; "contains all of the lists of files which are used in various ways") - - - (* ;; "I took out the EXPORT of the filesets because it led to inconsistency when one had loaded ABC. -- Pavel") - - (VARS * FILESETS) - (VARS EXPORTFILES) - (VARS MAKEINITFILES MAKEINITTYPES RENAMETYPES ABCFILES READSYSFILES - DATABASEFILES) - (VARS DEADFNS))) - - - -(* ;;; "contains all of the lists of files which are used in various ways") - - - - -(* ;; -"I took out the EXPORT of the filesets because it led to inconsistency when one had loaded ABC. -- Pavel" -) - - -(RPAQQ FILESETS (0LISPSET 1LISPSET 2LISPSET 3LISPSET 4LISPSET 5LISPSET 6LISPSET 7LISPSET 8LISPSET - 9LISPSET)) - -(RPAQQ 0LISPSET - (PACKAGE-CONVERSION-TABLE LLFAULT LLSUBRS LLBFS LLNEW FILEIO IMAGEIO LLBASIC LLGC LLARRAYELT - LLINTERP LLMVS DEFSTRUCT-RUN-TIME SETF-RUNTIME CMLSEQBASICS LLARITH LLFLOAT LLBIGNUM - LLREAD LLCHAR LLSTK LLDATATYPE LLKEY LLTIMER)) - -(RPAQQ 1LISPSET - (ASTACK DTDECLARE ATBL LLCODE ACODE IOCHAR COREIO AOFD ADIR PMAP VANILLADISK MOD44IO ATERM - APRINT ABASIC AERROR AINTERRUPT MISC BOOTSTRAP CMLMACROS CMLEVAL CMLPROGV - CMLSPECIALFORMS LLRESTART LLERROR LLSYMBOL LLPACKAGE PACKAGE-STARTUP CONDITION-PACKAGE - XCL-PACKAGE PROC CMLARRAY DSK UFS UFSCALLC LLETHER PASSWORDS FONT SUNFONT LLDISPLAY - APUTDQ COMPATIBILITY DMISC CMLMACROS CMLLIST CMLCHARACTER CMLREADTABLE MAIKOLOADUPFNS MAIKOBITBLT MAIKOINIT)) - -(RPAQQ 2LISPSET (MACHINEINDEPENDENT POSTLOADUP)) - -(RPAQQ 3LISPSET (MACROS DLAP BYTECOMPILER COMPILE)) - -(RPAQQ 4LISPSET (EDIT WEDIT HELPDL PRETTY COMMENT BREAK ADVISE LOADFNS FILEPKG DFILE DMISC)) - -(RPAQQ 5LISPSET (HIST UNDO SPELL DWIM WTFIX CLISP DWIMIFY CLISPIFY RECORD ASSIST)) - -(RPAQQ 6LISPSET (MSANALYZE MSPARSE MASTERSCOPE HPRINT BRKDWN MATCH)) - -(RPAQQ 7LISPSET - (ADISPLAY DEXEC AARITH AFONT HARDCOPY PRESS HLDISPLAY MENU WINDOW WBREAK INSPECT - INSPECT-CLOSURE BSP CHAT TRSERVER 10MBDRIVER LLNS DISKDLION SPP COURIER NSPRINT - CLEARINGHOUSE NSFILING INTERPRESS ADDARITH MACROAUX DEDIT DSPRINTDEF NEWPRINTDEF TTYIN - DPUPFTP FLOPPY)) - -(RPAQQ 8LISPSET (MAKEINIT MEM RENAMEFNS)) - -(RPAQQ 9LISPSET (LLFCOMPILE VMEM READSYS APS PCALLSTATS UPCSTATS REMOTEVMEM)) - -(RPAQQ EXPORTFILES - (FILESETS MODARITH LLPARAMS LLCODE AERROR AOFD APRINT ATERM LLARRAYELT LLDATATYPE LLNEW - LLBASIC LLCHAR LLSTK PMAP LLGC ATBL FILEIO LLARITH LLFLOAT FONT LLKEY LLDISPLAY - ADISPLAY AINTERRUPT PUP RENAMEMACROS HLDISPLAY WINDOW MACROAUX ADDARITH LLFAULT LLTIMER - LLETHER IMAGEIO PROC LLREAD PASSWORDS INTERPRESS HARDCOPY CMLARRAY LLSUBRS)) - -(RPAQQ MAKEINITFILES (MAKEINIT MEM I-NEW)) - -(RPAQQ MAKEINITTYPES - ((NIL INIT (0 1) - 2LISPSET 1600) - (SMALLINIT SMALLINIT (LLFAULT LLSUBRS LLNEW FILEIO LLBASIC LLGC LLINTERP LLARITH LLREAD - LLCHAR TINYPATCH)) - (MACROTEST MACROTEST ((MACROTEST) - 0 1) - 2LISPSET) - (MICROTEST MICROTEST ((MICROTEST LLFAULT LLSTK LLSUBRS LLKEY LLBFS))) - (NANOTEST NANOTEST ((MICROTEST LLSUBRS))) - (NULL NULL ((DUMMY))) - (MILLITEST MILLITEST - ((MACROTEST LLFAULT LLSUBRS LLNEW LLBASIC LLGC LLINTERP LLARITH LLFLOAT LLARRAYELT - LLSTK LLDATATYPE LLKEY ABASIC LLCHAR ASTACK MISC APUTDQ))) - (CHECKARRAYS CHECKARRAYS (CHECKARRAYSPACE 0 1) - 2LISPSET))) - -(RPAQQ RENAMETYPES - ((I (FILES LLPARAMS LLCODE LLARRAYELT LLCHAR LLNEW LLBASIC LLDATATYPE LLGC LLSTK RENAMEMACROS - MODARITH LLFAULT LLKEY LLBFS LLTIMER) - (RENAMEDFILE . I-NEW) - (SUBNAME . MKI.SUBFNS) - (COMSNAME . INEWCOMS) - (EXTRACOMS (VARS INITPTRS INITVALUES) - (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP) - MAKEINIT))) - (MKI.SUBFNS) - (INEWCOMS) - (VALUES . INITVALUES) - (PTRS . INITPTRS) - (PREFIX . I.) - (VAG2FN . I.VAG2)) - (R (FILES LLCODE LLPARAMS LLBASIC LLDATATYPE LLNEW ACODE LLARRAYELT LLCHAR LLINTERP LLSTK - RENAMEMACROS MODARITH LLFAULT) - (RENAMEDFILE . RDSYS) - (SUBNAME . RD.SUBFNS) - (COMSNAME . RDCOMS) - (EXTRACOMS (FILES VMEM) - (VARS RDVALS RDPTRS) - (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP) - VMEM))) - (RD.SUBFNS (\CALLME . *)) - (RDCOMS) - (PTRS . RDPTRS) - (PREFIX . V) - (VAG2FN . VVAG2) - (VALUES . RDVALS) - (RDPTRS) - (RDVALUES)))) - -(RPAQQ ABCFILES (LOADABC COMPILEBANG SAMEDIR WHEREIS COMPILEFORMSLIST CHECKSET CMACROS DCODEFOR10 - DTDECLARE BYTECOMPILER DLAP LLCODE ACODE MACROAUX)) - -(RPAQQ READSYSFILES (RDSYS READSYS VMEM REMOTEVMEM)) - -(RPAQQ DATABASEFILES (0LISPSET 1LISPSET (2LISPSET ACODE) - (3LISPSET DLAP) - (4LISPSET DFILE DMISC) - 7LISPSET - (8LISPSET MAKEINIT MEM) - 9LISPSET - (10LISPSET LLPARAMS) - (NIL CHECKARRAYSPACE MAKEINEW PMEMSTATS PPAGESTATS LLFCOMPILE))) - -(RPAQQ DEADFNS ((PUTBASE \PUTBASE) - (GETBASE \GETBASE) - (ADDBASE \ADDBASE) - (GETBASEBYTE \GETBASEBYTE) - (PUTBASEBYTE \PUTBASEBYTE) - (PUTBASEPTR \PUTBASEPTR) - (HILOC \HILOC) - (LOLOC \LOLOC) - (VAG2 \VAG2) - (PAGEBASE NIL) - (PAGELOC NIL) - (WordsPerPage WORDSPERPAGE) - (ALTOMACRO DMACRO) - (\STACKSPACE ??) - (GETBASEPTR \GETBASEPTR) - (FPLUS2) - (FTIMES2) - (CREATECELL \CREATECELL))) -(PUTPROPS FILESETS COPYRIGHT ("Xerox Corporation" 1981 1982 1983 1984 1985 1986 1987 1988 1989)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL))) -STOP diff --git a/obsolete/sunloadup/FILESETS.PUP b/obsolete/sunloadup/FILESETS.PUP deleted file mode 100644 index cfc9462d..00000000 --- a/obsolete/sunloadup/FILESETS.PUP +++ /dev/null @@ -1,69 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED " 9-Apr-90 16:57:44" {DSK}mitani>SUNLOADUP>FILESETS;2 5281 - - changes to%: (VARS 1LISPSET) - - previous date%: " 5-Apr-89 16:28:12" {DSK}mitani>SUNLOADUP>FILESETS;1) - - -(* " -Copyright (c) 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990 by Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT FILESETSCOMS) - -(RPAQQ FILESETSCOMS ((* ;;; "contains all of the lists of files which are used in various ways") (* ;; "I took out the EXPORT of the filesets because it led to inconsistency when one had loaded ABC. -- Pavel") (VARS * FILESETS) (VARS EXPORTFILES) (VARS MAKEINITFILES MAKEINITTYPES RENAMETYPES ABCFILES READSYSFILES DATABASEFILES) (VARS DEADFNS))) - - - -(* ;;; "contains all of the lists of files which are used in various ways") - - - - -(* ;; -"I took out the EXPORT of the filesets because it led to inconsistency when one had loaded ABC. -- Pavel" -) - - -(RPAQQ FILESETS (0LISPSET 1LISPSET 2LISPSET 3LISPSET 4LISPSET 5LISPSET 6LISPSET 7LISPSET 8LISPSET 9LISPSET)) - -(RPAQQ 0LISPSET (PACKAGE-CONVERSION-TABLE LLFAULT LLSUBRS LLBFS LLNEW FILEIO IMAGEIO LLBASIC LLGC LLARRAYELT LLINTERP LLMVS DEFSTRUCT-RUN-TIME SETF-RUNTIME CMLSEQBASICS LLARITH LLFLOAT LLBIGNUM LLREAD LLCHAR LLSTK LLDATATYPE LLKEY LLTIMER)) - -(RPAQQ 1LISPSET (ASTACK DTDECLARE ATBL LLCODE ACODE IOCHAR COREIO AOFD ADIR PMAP VANILLADISK MOD44IO ATERM APRINT ABASIC AERROR AINTERRUPT MISC BOOTSTRAP CMLMACROS CMLEVAL CMLPROGV CMLSPECIALFORMS LLRESTART LLERROR LLSYMBOL LLPACKAGE PACKAGE-STARTUP CONDITION-PACKAGE XCL-PACKAGE PROC CMLARRAY DSK UFS UFSCALLC LLETHER PUP LEAF PASSWORDS FONT SUNFONT LLDISPLAY APUTDQ COMPATIBILITY DMISC CMLMACROS CMLLIST CMLCHARACTER CMLREADTABLE MAIKOLOADUPFNS MAIKOBITBLT MAIKOINIT)) - -(RPAQQ 2LISPSET (MACHINEINDEPENDENT POSTLOADUP)) - -(RPAQQ 3LISPSET (MACROS DLAP BYTECOMPILER COMPILE)) - -(RPAQQ 4LISPSET (EDIT WEDIT HELPDL PRETTY COMMENT BREAK ADVISE LOADFNS FILEPKG DFILE DMISC)) - -(RPAQQ 5LISPSET (HIST UNDO SPELL DWIM WTFIX CLISP DWIMIFY CLISPIFY RECORD ASSIST)) - -(RPAQQ 6LISPSET (MSANALYZE MSPARSE MASTERSCOPE HPRINT BRKDWN MATCH)) - -(RPAQQ 7LISPSET (ADISPLAY DEXEC AARITH AFONT HARDCOPY PRESS HLDISPLAY MENU WINDOW WBREAK INSPECT INSPECT-CLOSURE BSP CHAT TRSERVER 10MBDRIVER LLNS DISKDLION SPP COURIER NSPRINT CLEARINGHOUSE NSFILING INTERPRESS ADDARITH MACROAUX DEDIT DSPRINTDEF NEWPRINTDEF TTYIN DPUPFTP FLOPPY)) - -(RPAQQ 8LISPSET (MAKEINIT MEM RENAMEFNS)) - -(RPAQQ 9LISPSET (LLFCOMPILE VMEM READSYS APS PCALLSTATS UPCSTATS REMOTEVMEM)) - -(RPAQQ EXPORTFILES (FILESETS MODARITH LLPARAMS LLCODE AERROR AOFD APRINT ATERM LLARRAYELT LLDATATYPE LLNEW LLBASIC LLCHAR LLSTK PMAP LLGC ATBL FILEIO LLARITH LLFLOAT FONT LLKEY LLDISPLAY ADISPLAY AINTERRUPT PUP RENAMEMACROS HLDISPLAY WINDOW MACROAUX ADDARITH LLFAULT LLTIMER LLETHER IMAGEIO PROC LLREAD PASSWORDS INTERPRESS HARDCOPY CMLARRAY LLSUBRS)) - -(RPAQQ MAKEINITFILES (MAKEINIT MEM I-NEW)) - -(RPAQQ MAKEINITTYPES ((NIL INIT (0 1) 2LISPSET 1600) (SMALLINIT SMALLINIT (LLFAULT LLSUBRS LLNEW FILEIO LLBASIC LLGC LLINTERP LLARITH LLREAD LLCHAR TINYPATCH)) (MACROTEST MACROTEST ((MACROTEST) 0 1) 2LISPSET) (MICROTEST MICROTEST ((MICROTEST LLFAULT LLSTK LLSUBRS LLKEY LLBFS))) (NANOTEST NANOTEST ((MICROTEST LLSUBRS))) (NULL NULL ((DUMMY))) (MILLITEST MILLITEST ((MACROTEST LLFAULT LLSUBRS LLNEW LLBASIC LLGC LLINTERP LLARITH LLFLOAT LLARRAYELT LLSTK LLDATATYPE LLKEY ABASIC LLCHAR ASTACK MISC APUTDQ))) (CHECKARRAYS CHECKARRAYS (CHECKARRAYSPACE 0 1) 2LISPSET))) - -(RPAQQ RENAMETYPES ((I (FILES LLPARAMS LLCODE LLARRAYELT LLCHAR LLNEW LLBASIC LLDATATYPE LLGC LLSTK RENAMEMACROS MODARITH LLFAULT LLKEY LLBFS LLTIMER) (RENAMEDFILE . I-NEW) (SUBNAME . MKI.SUBFNS) (COMSNAME . INEWCOMS) (EXTRACOMS (VARS INITPTRS INITVALUES) (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP) MAKEINIT))) (MKI.SUBFNS) (INEWCOMS) (VALUES . INITVALUES) (PTRS . INITPTRS) (PREFIX . I.) (VAG2FN . I.VAG2)) (R (FILES LLCODE LLPARAMS LLBASIC LLDATATYPE LLNEW ACODE LLARRAYELT LLCHAR LLINTERP LLSTK RENAMEMACROS MODARITH LLFAULT) (RENAMEDFILE . RDSYS) (SUBNAME . RD.SUBFNS) (COMSNAME . RDCOMS) (EXTRACOMS (FILES VMEM) (VARS RDVALS RDPTRS) (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP) VMEM))) (RD.SUBFNS (\CALLME . *)) (RDCOMS) (PTRS . RDPTRS) (PREFIX . V) (VAG2FN . VVAG2) (VALUES . RDVALS) (RDPTRS) (RDVALUES)))) - -(RPAQQ ABCFILES (LOADABC COMPILEBANG SAMEDIR WHEREIS COMPILEFORMSLIST CHECKSET CMACROS DCODEFOR10 DTDECLARE BYTECOMPILER DLAP LLCODE ACODE MACROAUX)) - -(RPAQQ READSYSFILES (RDSYS READSYS VMEM REMOTEVMEM)) - -(RPAQQ DATABASEFILES (0LISPSET 1LISPSET (2LISPSET ACODE) (3LISPSET DLAP) (4LISPSET DFILE DMISC) 7LISPSET (8LISPSET MAKEINIT MEM) 9LISPSET (10LISPSET LLPARAMS) (NIL CHECKARRAYSPACE MAKEINEW PMEMSTATS PPAGESTATS LLFCOMPILE))) - -(RPAQQ DEADFNS ((PUTBASE \PUTBASE) (GETBASE \GETBASE) (ADDBASE \ADDBASE) (GETBASEBYTE \GETBASEBYTE) (PUTBASEBYTE \PUTBASEBYTE) (PUTBASEPTR \PUTBASEPTR) (HILOC \HILOC) (LOLOC \LOLOC) (VAG2 \VAG2) (PAGEBASE NIL) (PAGELOC NIL) (WordsPerPage WORDSPERPAGE) (ALTOMACRO DMACRO) (\STACKSPACE ??) (GETBASEPTR \GETBASEPTR) (FPLUS2) (FTIMES2) (CREATECELL \CREATECELL))) -(PUTPROPS FILESETS COPYRIGHT ("Xerox Corporation" 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL))) -STOP diff --git a/obsolete/sunloadup/HOWTO-LOADUP-SUNLISP.TXT b/obsolete/sunloadup/HOWTO-LOADUP-SUNLISP.TXT deleted file mode 100644 index 9e250cf3..00000000 --- a/obsolete/sunloadup/HOWTO-LOADUP-SUNLISP.TXT +++ /dev/null @@ -1,173 +0,0 @@ -Notes on making a Sun Loadup - -update Jan. 25, 1990 by osamu - -In a medley sysout on cottonmouth do the following: - -;;CONN {DSK}/cottonmouth/users/medley/sources/ - --- Make sure all the files are current. There are SUN specific changes to --- the following files: - --- FILESETS: took PUP and LEAF out of 1LISPSET - -(CL:IN-PACKAGE "IL") - --- make copyfiles go faster - -(SETQ COPYFILESENUMERATE NIL) - -(COPYFILES '{ERIS}SOURCES>*.* - '{DSK}/cottonmouth/USERS/MEDLEY/SOURCES/ '(>A)) - -(COPYFILE '{ERIS}SUNLOADUP>FILESETS 'FILESETS) - -(COPYFILE '{ERIS}SUNLOADUP>LOADUP.LISP 'LOADUP.LISP) - -(COPYFILE '{ERIS}SUNLOADUP>FIX-ETHER.LCOM 'FIX-ETHER.LCOM) - -(COPYFILES '{ERIS}SUNLOADUP>MAIKOLOADUPFNS.* '{DSK}/cottonmouth/USERS/MEDLEY/SOURCES/ '(>A)) - - --- You will need the instructions on your local directory. - -;;;(COPYFILE '{ERIS}SUNLOADUP>HOWTO-LOADUPSUN.TXT '{DSK}HOWTO-LOADUP-SUNLISP.TXT) - --- set the directories so you can find all the proper files... - -;;;(SETQ DIRECTORIES '( -;;;"{DSK}/home2/will/sybalsky/lispcore/Sources/" -;;; "{DSK}/home2/will/sybalsky/lispcore/library/" -;;; "{DSK}/home2/will/sybalsky/lispcore/internal/library/" ;;;"{dsk}/home2/will/sybalsky/lispcore/sunloadup/")) - -(DRIBBLE "{DSK}SUNLOADUP/LOADUP.LOG") - -;(SETQ DIRECTORIES '( -;"{DSK}~/SUNLOADUP/lispcore/Sources/" -; "{DSK}~/SUNLOADUP/lispcore/library/" -; "{DSK}~/SUNLOADUP/lispcore/internal/library/" "{dsk}~/SUNLOADUP/lispcore/sunloadup/")) - -(SETQ DIRECTORIES '( -"{DSK}/users/sybalsky/lispcore/Sources/" - "{DSK}/users/sybalsky/lispcore/library/" - "{DSK}/users/sybalsky/lispcore/internal/library/" "{dsk}/users/sybalsky/lispcore/sunloadup/")) - - ---you really want the source code for this - -(LOAD 'FILESETS) - -(FILESLOAD RENAMEFNS MAKEINIT DLFIXINIT CMLARRAY-SUPPORT) -(LOAD "{DSK}/users/sybalsky/FASTINIT.DFASL") - --- turn off idle or you get stuck. - -(IDLE.SET.OPTION 'TIMEOUT T) - --- and start making the init. This takes about 2.5 hrs. - -;(PROGN -; (DORENAME 'I) -; (DLFIXINIT -; (MAKEINIT '(11500Q 13062Q 25400Q) -; NIL NIL -; '({DSK}/home2/will/sybalsky/lispcore/Sources/ {dsk}/home2/will/sybalsky/lispcore/sunloadup/ )) -; '{DSK}INIT.DLINIT -; '{dsk}/medley/project4/venue/LISPDLION.DB -; 300) -; (COPYFILE '{eris}sunloadup>XREM.CM '{DSK}XREM.CM) -; (COPYFILE '{eris}sunloadup>LOADUP-REM.CM '{DSK}LOADUP-REM.CM) -; (LOGOUT T) -;) -(PROGN - (DORENAME 'I) - (DLFIXINIT - (MAKEINIT '(11500Q 13062Q 25400Q) - NIL NIL - '({DSK}/users/sybalsky/lispcore/Sources/ {dsk}/users/sybalsky/lispcore/sunloadup/ )) - '{DSK}INIT.DLINIT - '{dsk}/users/sybalsky/lispcore/next/LISPDLION.DB - 300) - (COPYFILE '{dsk}/users/sybalsky/lispcore/sunloadup/XREM.CM - '{DSK}SUNLOADUP/XREM.CM) - (COPYFILE '{dsk}/users/sybalsky/lispcore/sunloadup/LOADUP-REM.CM - '{DSK}SUNLOADUP/LOADUP-REM.CM) - (DATE) - (DRIBBLE) - (LOGOUT T) -) - --- Now, if you are on the "loadup" machine, exit medley and go to another --- machine. RLOGIN to the loadup machine and do the following: - --- Build an init-specific lde note: you must have a directory under --- the maiko directory called init.ARCH where ARCH is the architecture --- of the machine you will run the lde on. On a sun4, it would be init.sparc. - -cd ~/maiko/bin -makeinitlde -e - --- connect back to your home directory and make a link to the lde and --- ldeether (fill in yourname and machine os and arch in the proper --- slots below - -cd ~ -ln -s /users/YOURNAME/maiko/init.ARCH/lde -ln -s /users/YOURNAME/maiko/init.ARCH/ldeether - --- make sure you don't have LDEDESTSYSOUT set as you want the sysout on your home --- directory. - --- You will need dbxinit.txt available - --- YOU MUST USE A FRESH COPY OF XREM.CM EVERY TIME YOU TRY THIS AS IT --- GETS SMASHED AT STARTUP - -cp ~/XREM.CM ~/REM.CM - --- start lde under dbx - --- init lde can't treat 'LDEDESTSYSOUT' -unsetenv LDEDESTSYSOUT - -dbx lde - --- load the dbxinit - -source /users/maiko/working/bin/dbxinit.txt - --- now set up to stop on error (before URAID, which loses 'cause --- it can't find the keyboard.) - -err - -run ~/INIT.DLINIT -INIT -NF - --- this is going to run and eventually log itself out. when dbx returns, quit --- from dbx and presto! You've built the beginnings of a loadup. - ---- - --- go to the loadup machine and connect to the place where you normally --- get your lde from - -cd ~/maiko/sunos4.sparc/ - --- Get the new REM.CM: (YOU MUST DO THIS EVERYTIME AS --- REM.CM gets wasted on startup!!) - -cp ~/LOADUP-REM.CM ~/REM.CM -ldeether - --- Now this is going to march happily through loading files. When it turns --- on the windowworld, you may have to hit the space bar to make it continue. - --- I don't know how to make PUP and LEAF load at this point, but I'm working --- on it. - --- I am also working on integrating the changes to the emulator with the latest --- stuff. - --- closure caching is still off. - --- Questions or comments? diff --git a/obsolete/sunloadup/HOWTO-MAKE-SYSOUT.TEDIT b/obsolete/sunloadup/HOWTO-MAKE-SYSOUT.TEDIT deleted file mode 100644 index 400adf15f6ad2aad23c5a07e3dd2b55b3aeb37fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12209 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 TenK<~Kvw`i_{Ye`7k~RVl`7)+ diff --git a/obsolete/sunloadup/INIT.DO-TEST b/obsolete/sunloadup/INIT.DO-TEST deleted file mode 100644 index 3a569f01..00000000 --- a/obsolete/sunloadup/INIT.DO-TEST +++ /dev/null @@ -1,55 +0,0 @@ -;; Automatic DO-TEST -(in-package "INTERLISP") - -;; search path when file not found on current directory -;(SETQ DIRECTORIES '( -; "{dsk}/usr/local/lde/internal/library/" -;)) - -;; paths for display fonts; list the ones that are installed -(SETQ DISPLAYFONTDIRECTORIES - '("{DSK}/usr/local/lde/fonts/display/presentation" - "{DSK}/usr/local/lde/fonts/display/publishing" - "{DSK}/usr/local/lde/fonts/display/printwheel" - "{DSK}/usr/local/lde/fonts/display/miscellaneous" - "{DSK}/usr/local/lde/fonts/display/jis1" - "{DSK}/usr/local/lde/fonts/display/jis2" - "{DSK}/usr/local/lde/fonts/display/chinese")) - -;; paths for interpress font widths; list the ones that are installed -(SETQ INTERPRESSFONTDIRECTORIES - '("{DSK}/usr/local/lde/fonts/interpress/presentation" - "{DSK}/usr/local/lde/fonts/interpress/publishing" - "{DSK}/usr/local/lde/fonts/interpress/printwheel" - "{DSK}/usr/local/lde/fonts/interpress/miscellaneous" - "{DSK}/usr/local/lde/fonts/interpress/jis1" - "{DSK}/usr/local/lde/fonts/interpress/jis2" - "{DSK}/usr/local/lde/fonts/interpress/chinese")) - -;; let any user with a valid UNIX login to exit Idle mode -(LISTPUT IDLE.PROFILE 'AUTHENTICATE 'UNIX) -(LISTPUT IDLE.PROFILE 'ALLOWED.LOGINS '(*)) -(LISTPUT IDLE.PROFILE 'SAVEVM NIL) -(IDLE.SET.OPTION 'TIMEOUT T) -(SETQ |\\BeginDST| 98) -(SETQ |\\EndDST| 305) - -;; edit to have your particular site parameters-- for standalone, short -;; site name is host name - -(SETQ XCL:*LONG-SITE-NAME* -(SETQ XCL:*SHORT-SITE-NAME* (UNIX-GETPARM "HOSTNAME"))) - -;; Now loading DO-TEST and run DO-TEST -;(load "{DSK}/python1/fuji/TESTTOOL/omake/DO-TEST.DFASL") -(load "{DSK}~/lispcore/internal/library/DO-TEST.DFASL") -(il:load? 'masterscope.dfasl) - -(il:cndir "{dsk}/python1/fuji/TESTTOOL/LANGUAGE/") -(xcl-test::do-all-tests - :results "{DSK}~/DO-TEST/AUTO-TESTS.results" - :patterns '("*.TEST")) - -(DATE) -(PRINT "DO-TEST completed.") - diff --git a/obsolete/sunloadup/INIT.LOADFULL b/obsolete/sunloadup/INIT.LOADFULL deleted file mode 100644 index 3bbaf7cf..00000000 --- a/obsolete/sunloadup/INIT.LOADFULL +++ /dev/null @@ -1,5 +0,0 @@ -" -SHH(LOAD '{DSK}~/SUNLOADUP/LOADFULL.LISP) -SHH(MAKESYS '{DSK}~/FULL.SYSOUT] -SHH(LOGOUT] " - diff --git a/obsolete/sunloadup/INIT.LOADFULLFROMLISP b/obsolete/sunloadup/INIT.LOADFULLFROMLISP deleted file mode 100644 index 431211f1..00000000 --- a/obsolete/sunloadup/INIT.LOADFULLFROMLISP +++ /dev/null @@ -1,2 +0,0 @@ -(PROGN (ILLOAD '{dsk}SUNLOADUP/LOADFULL.LISP) (ILMAKESYS 'FULL.SYSOUT) (ILLOGOUT T)) - diff --git a/obsolete/sunloadup/INIT.MAKEBIG b/obsolete/sunloadup/INIT.MAKEBIG deleted file mode 100644 index c458e4a0..00000000 --- a/obsolete/sunloadup/INIT.MAKEBIG +++ /dev/null @@ -1,50 +0,0 @@ -; -; Run MAKEINIT on SUN -; '90/02/09 Osamu -; '90.05/23 change DIRECTORIES -; Same as INIT.MAKEINITFULL, but points to DSK for files, not Pele:. -; -(CL:IN-PACKAGE "IL") -(DRIBBLE "{DSK}~/lispcore/SUNLOADUP/LOADUP.LOG") -(SETQ CH.DEFAULT.DOMAIN "mv") -(SETQ CH.DEFAULT.ORGANIZATION "envos") -(CNDIR "{dsk}~/lispcore/sources/") -(SETQ HELPFLAG 'BREAK!)(SETQ HELPDEPTH 0) -(SETQ CROSSCOMPILING T) - -(SETQ DIRECTORIES '( - "{dsk}~/lispcore/sources/" "{dsk}~/lispcore/library/" - "{DSK}~/lispcore/internal/library/" - "{DSK}~/lispcore/sunloadup/" )) -(LOAD "{dsk}~/lispcore/SUNLOADUP/FILESETS") -;;(PUTPROP :D8 'CODEREADER (GETPROP :D7 'CODEREADER)) -(LOAD "{dsk}~/lispcore/library/VMEM.LCOM") -(LOAD "{dsk}~/lispcore/sources/MEM.LCOM") -(LOAD "{dsk}~/lispcore/library/READSYS.LCOM") -(LOAD "{dsk}~/lispcore/library/RDSYS.LCOM") -(LOAD "{DSK}~/lispcore/sources/DTDECLARE.LCOM") -;; Not when start in .30(LOAD "{DSK}~/lispcore/medley2.01/cmlarray-support.lcom") -;;(LOADFNS '\MAP-CODE-POINTERS "{dsk}~/lispcore/sources/ACODE.LCOM;1") -;;(LOADFNS 'VNTYPX "{dsk}~/lispcore/sources/RDSYS.LCOM") -(FILESLOAD RENAMEFNS MAKEINIT DLFIXINIT CMLARRAY-SUPPORT) -(LOAD "{DSK}~/lispcore/SUNLOADUP/FASTINIT.DFASL") -;; turn off idle or you get stuck. -(IDLE.SET.OPTION 'TIMEOUT T) -;;and start making the init. This takes about 2.5 hrs. -(CNDIR "{dsk}~/lispcore/4-BYTE-ATOMS/") -(PROGN -(DORENAME 'I) ;; At times, this is commented out if I-NEW needs hand tweeking... - (DLFIXINIT - (MAKEINIT '(35010 35010 25400Q) - NIL '{dsk}~/lispcore/INIT.SYSOUT - '("{dsk}~/lispcore/4-BYTE-ATOMS/" - "{dsk}~/lispcore/sources/" - "{dsk}~/lispcore/3-BYTE-ATOMS/" - "{DSK}~/lispcore/sunloadup/" )) - '{DSK}~/lispcore/INIT.DLINIT - '{dsk}~/lispcore/SUNLOADUP/LISPDLION.DB - 300) - (DATE) - (DRIBBLE) - (LOGOUT T) -) diff --git a/obsolete/sunloadup/INIT.MAKEBIGFULLFROMLISP b/obsolete/sunloadup/INIT.MAKEBIGFULLFROMLISP deleted file mode 100644 index 5d36eae5..00000000 --- a/obsolete/sunloadup/INIT.MAKEBIGFULLFROMLISP +++ /dev/null @@ -1,13 +0,0 @@ -; -; Run MAKEINIT on SUN -; '90/02/09 Osamu -; '90.05/23 change DIRECTORIES -; -(CL:IN-PACKAGE "IL") -(SETQ DIRECTORIES '( - "{dsk}/users/sybalsky/4-BYTE-ATOMS/" - "{dsk}/king/export/lispcore/lafite/parc-94/" - "{DSK}/users/sybalsky/4-byte-lib/" - "{DSK}/users/sybalsky/4-byte-intlib/" - "{DSK}/users/sybalsky/sunloadup/" )) -) diff --git a/obsolete/sunloadup/INIT.MAKEBIGSGI b/obsolete/sunloadup/INIT.MAKEBIGSGI deleted file mode 100644 index 8e1ea878..00000000 --- a/obsolete/sunloadup/INIT.MAKEBIGSGI +++ /dev/null @@ -1,48 +0,0 @@ -; -; Run MAKEINIT on SUN -; '90/02/09 Osamu -; '90.05/23 change DIRECTORIES -; Same as INIT.MAKEINITFULL, but points to DSK for files, not Pele:. -; -(CL:IN-PACKAGE "IL") -(DRIBBLE "{DSK}/users/sybalsky/SUNLOADUP/LOADUP.LOG") -(SETQ CH.DEFAULT.DOMAIN "mv") -(SETQ CH.DEFAULT.ORGANIZATION "envos") -(CNDIR "{dsk}/king/export/lispcore/sources/") -(SETQ HELPFLAG 'BREAK!)(SETQ HELPDEPTH 0) -(SETQ CROSSCOMPILING T) - -(SETQ DIRECTORIES '( - "{dsk}/king/export/lispcore/sources/" "{dsk}/king/export/lispcore/library/" - "{DSK}/king/export/lispcore/internal/library/" - "{DSK}/users/sybalsky/sunloadup/" )) -(LOAD "{dsk}/users/sybalsky/SUNLOADUP/FILESETS") -(PUTPROP :D8 'CODEREADER (GETPROP :D7 'CODEREADER)) -(LOAD "{dsk}/king/export/lispcore/library/VMEM.LCOM") -(LOAD "{dsk}/king/export/lispcore/sources/MEM.LCOM") -(LOAD "{dsk}/king/export/lispcore/library/READSYS.LCOM") -(LOAD "{dsk}/king/export/lispcore/library/RDSYS.LCOM") -(LOAD "{DSK}/king/export/lispcore/sources/DTDECLARE.LCOM") -;;(LOAD "{DSK}/users/sybalsky/medley2.01/cmlarray-support.lcom") -(LOADFNS '\MAP-CODE-POINTERS "{dsk}/king/export/lispcore/sources/ACODE.LCOM;1") -(LOADFNS 'VNTYPX "{dsk}/king/export/lispcore/sources/RDSYS.LCOM") -(FILESLOAD RENAMEFNS MAKEINIT DLFIXINIT CMLARRAY-SUPPORT) -(LOAD "{DSK}/users/sybalsky/SUNLOADUP/FASTINIT.DFASL") -;; turn off idle or you get stuck. -(IDLE.SET.OPTION 'TIMEOUT T) -;;and start making the init. This takes about 2.5 hrs. -(CNDIR "{dsk}/users/sybalsky/4-BYTE-ATOMS/") -(PROGN -;; (DORENAME 'I) ;; At times, this is commented out if I-NEW needs hand tweeking... - (DLFIXINIT - (MAKEINIT '(21000 21000 25400Q) - NIL '{dsk}/users/sybalsky/INIT.SYSOUT - '("{dsk}/users/sybalsky/4-BYTE-ATOMS/" - "{DSK}/users/sybalsky/sunloadup/" )) - '{DSK}/users/sybalsky/INIT.DLINIT - '{dsk}/users/sybalsky/SUNLOADUP/LISPDLION.DB - 300) - (DATE) - (DRIBBLE) - (LOGOUT T) -) diff --git a/obsolete/sunloadup/INIT.MAKECLTL2SGI b/obsolete/sunloadup/INIT.MAKECLTL2SGI deleted file mode 100644 index f023705b..00000000 --- a/obsolete/sunloadup/INIT.MAKECLTL2SGI +++ /dev/null @@ -1,51 +0,0 @@ -; -; Run MAKEINIT on SUN -; '90/02/09 Osamu -; '90.05/23 change DIRECTORIES -; Same as INIT.MAKEINITFULL, but points to DSK for files, not Pele:. -; -(CL:IN-PACKAGE "IL") -(DRIBBLE "{DSK}/users/sybalsky/SUNLOADUP/LOADUP.LOG") -(SETQ CH.DEFAULT.DOMAIN "mv") -(SETQ CH.DEFAULT.ORGANIZATION "envos") -(CNDIR "{dsk}~/4-byte-atoms/") -(SETQ HELPFLAG 'BREAK!)(SETQ HELPDEPTH 0) -(SETQ CROSSCOMPILING T) - -(SETQ DIRECTORIES '( - "{dsk}~/4-byte-lib/" "{dsk}~/4-byte-atoms/" "{dsk}/king/export/lispcore/sources/cltl2/" - "{dsk}/king/export/lispcore/sources/" "{dsk}/king/export/lispcore/library/" - "{DSK}/king/export/lispcore/internal/library/" - "{DSK}/users/sybalsky/sunloadup/" )) -(LOAD "{dsk}/users/sybalsky/SUNLOADUP/FILESETS") -(FILESLOAD VMEM MEM READSYS RDSYS) -; (LOAD "{dsk}/king/export/lispcore/library/VMEM.LCOM") -; (LOAD "{dsk}/king/export/lispcore/sources/MEM.LCOM") -; (LOAD "{dsk}/king/export/lispcore/library/READSYS.LCOM") -; (LOAD "{dsk}/king/export/lispcore/library/RDSYS.LCOM") -; (LOAD "{DSK}/king/export/lispcore/sources/DTDECLARE.LCOM") -; (LOAD "{DSK}/users/sybalsky/medley2.01/cmlarray-support.lcom") -; (LOADFNS '\MAP-CODE-POINTERS "{dsk}/king/export/lispcore/sources/ACODE.LCOM;1") -; (LOADFNS 'VNTYPX "{dsk}/king/export/lispcore/sources/RDSYS.LCOM") -(LOAD '{dsk}/king/export/lispcore/sources/cltl2/MACHINEINDEPENDENT.LCOM) -(FILESLOAD RENAMEFNS MAKEINIT DLFIXINIT CMLARRAY-SUPPORT) -(LOAD "{DSK}/users/sybalsky/SUNLOADUP/bigFASTINIT.DFASL") -;; turn off idle or you get stuck. -(IDLE.SET.OPTION 'TIMEOUT T) -;;and start making the init. This takes about 2.5 hrs. -(CNDIR "{dsk}/king/export/lispcore/sources/cltl2/") -(PROGN - (DORENAME 'I) - (DLFIXINIT - (MAKEINIT '(11500Q 13062Q 25400Q) - NIL '{dsk}/users/sybalsky/INIT.SYSOUT - '("{dsk}/king/export/lispcore/sources/cltl2/" - "{dsk}/users/sybalsky/4-BYTE-ATOMS/" - "{DSK}/users/sybalsky/sunloadup/" )) - '{DSK}/users/sybalsky/INIT.DLINIT - '{dsk}/users/sybalsky/SUNLOADUP/LISPDLION.DB - 300) - (DATE) - (DRIBBLE) - (LOGOUT T) -) diff --git a/obsolete/sunloadup/INIT.MAKEINIT b/obsolete/sunloadup/INIT.MAKEINIT deleted file mode 100644 index f86fd79b..00000000 --- a/obsolete/sunloadup/INIT.MAKEINIT +++ /dev/null @@ -1,48 +0,0 @@ -; -; Run MAKEINIT on SUN -; '90/02/09 Osamu -; '90.05/23 change DIRECTORIES -; -(CL:IN-PACKAGE "IL") -(DRIBBLE "{DSK}SUNLOADUP/LOADUP.LOG") -(SETQ DIRECTORIES '( - "{dsk}/users/sybalsky/3-byte-atom-changes/" - "{pele:mv:envos}sources>" - "{DSK}/usr/local/lde/lispcore/library/" - "{DSK}/usr/local/lde/lispcore/internal/library/" - "{DSK}/users/sybalsky/sunloadup/" )) -(LOAD "{dsk}~/SUNLOADUP/FILESETS") -(FILESLOAD RENAMEFNS MAKEINIT DLFIXINIT CMLARRAY-SUPPORT) -(LOAD "{DSK}SUNLOADUP/FASTINIT.DFASL") -(FOR FILE IN '(xclc-env-ctxt.lcom xclc-top-level.dfasl dtdeclare.lcom lldatatype.lcom bytecompiler.lcom dlap.lcom d-assem.lcom llarrayelt.lcom llcode.lcom set-target) - do (LOAD FILE)) -(SET-TARGET NIL) ;; should effectively replace these lines: -;(PUTPROP 'FLOAT 'DOPVAL '((1 DTEST 0 (ATOM . FLOATP)))) -;(SETQ COMPILER::*HOST-ARCHITECTURE* NIL) -;(SETQ COMPILER::*TARGET-ARCHITECTURE* NIL) -;(SETQ *BC-MACRO-ENVIRONMENT* (COMPILER::MAKE-ENV :PARENT T)) -; -; Mark this as making a 3-byte INIT: -(SETQ COMPILER::*TARGET-ARCHITECTURE* '(:3-BYTE-INIT)) -(SETQ *BC-MACRO-ENVIRONMENT* (COMPILER::MAKE-ENV :PARENT T)) -; -; -;; turn off idle or you get stuck. -(IDLE.SET.OPTION 'TIMEOUT T) -;;and start making the init. This takes about 2.5 hrs. -(PROGN - (DORENAME 'I) - (SET-TARGET T) - - (DLFIXINIT - (MAKEINIT '(11500Q 13062Q 25400Q) - NIL NIL - '("{DSK}/users/sybalsky/3-BYTE-ATOMS/" - "{DSK}/users/sybalsky/sunloadup/" )) - '{DSK}~/INIT.DLINIT - '{dsk}/python1/fuji/sunloadup/LISPDLION.DB - 300) - (DATE) - (DRIBBLE) - (LOGOUT T) -) diff --git a/obsolete/sunloadup/INIT.MAKEINIT-3BYTE b/obsolete/sunloadup/INIT.MAKEINIT-3BYTE deleted file mode 100644 index f86fd79b..00000000 --- a/obsolete/sunloadup/INIT.MAKEINIT-3BYTE +++ /dev/null @@ -1,48 +0,0 @@ -; -; Run MAKEINIT on SUN -; '90/02/09 Osamu -; '90.05/23 change DIRECTORIES -; -(CL:IN-PACKAGE "IL") -(DRIBBLE "{DSK}SUNLOADUP/LOADUP.LOG") -(SETQ DIRECTORIES '( - "{dsk}/users/sybalsky/3-byte-atom-changes/" - "{pele:mv:envos}sources>" - "{DSK}/usr/local/lde/lispcore/library/" - "{DSK}/usr/local/lde/lispcore/internal/library/" - "{DSK}/users/sybalsky/sunloadup/" )) -(LOAD "{dsk}~/SUNLOADUP/FILESETS") -(FILESLOAD RENAMEFNS MAKEINIT DLFIXINIT CMLARRAY-SUPPORT) -(LOAD "{DSK}SUNLOADUP/FASTINIT.DFASL") -(FOR FILE IN '(xclc-env-ctxt.lcom xclc-top-level.dfasl dtdeclare.lcom lldatatype.lcom bytecompiler.lcom dlap.lcom d-assem.lcom llarrayelt.lcom llcode.lcom set-target) - do (LOAD FILE)) -(SET-TARGET NIL) ;; should effectively replace these lines: -;(PUTPROP 'FLOAT 'DOPVAL '((1 DTEST 0 (ATOM . FLOATP)))) -;(SETQ COMPILER::*HOST-ARCHITECTURE* NIL) -;(SETQ COMPILER::*TARGET-ARCHITECTURE* NIL) -;(SETQ *BC-MACRO-ENVIRONMENT* (COMPILER::MAKE-ENV :PARENT T)) -; -; Mark this as making a 3-byte INIT: -(SETQ COMPILER::*TARGET-ARCHITECTURE* '(:3-BYTE-INIT)) -(SETQ *BC-MACRO-ENVIRONMENT* (COMPILER::MAKE-ENV :PARENT T)) -; -; -;; turn off idle or you get stuck. -(IDLE.SET.OPTION 'TIMEOUT T) -;;and start making the init. This takes about 2.5 hrs. -(PROGN - (DORENAME 'I) - (SET-TARGET T) - - (DLFIXINIT - (MAKEINIT '(11500Q 13062Q 25400Q) - NIL NIL - '("{DSK}/users/sybalsky/3-BYTE-ATOMS/" - "{DSK}/users/sybalsky/sunloadup/" )) - '{DSK}~/INIT.DLINIT - '{dsk}/python1/fuji/sunloadup/LISPDLION.DB - 300) - (DATE) - (DRIBBLE) - (LOGOUT T) -) diff --git a/obsolete/sunloadup/INIT.MAKEINIT-MAIN b/obsolete/sunloadup/INIT.MAKEINIT-MAIN deleted file mode 100644 index 0e597456..00000000 --- a/obsolete/sunloadup/INIT.MAKEINIT-MAIN +++ /dev/null @@ -1,34 +0,0 @@ -; -; Run MAKEINIT on SUN -; '90/02/09 Osamu -; '90.05/23 change DIRECTORIES -; -(CL:IN-PACKAGE "IL") -(DRIBBLE "{DSK}SUNLOADUP/LOADUP.LOG") -(SETQ DIRECTORIES '( - "{DSK}/usr/local/lde/lispcore/sources/" - "{DSK}/usr/local/lde/lispcore/library/" - "{DSK}/usr/local/lde/lispcore/internal/library/" - "{DSK}/python1/fuji/sunloadup/" - "{dsk}/users/sybalsky/lispcore/sunloadup/" )) -(LOAD "{dsk}SUNLOADUP/FILESETS") -(FILESLOAD RENAMEFNS MAKEINIT DLFIXINIT CMLARRAY-SUPPORT) -(LOAD "{DSK}SUNLOADUP/FASTINIT.DFASL") -;; turn off idle or you get stuck. -(IDLE.SET.OPTION 'TIMEOUT T) -;;and start making the init. This takes about 45 min. -(PROGN - (DORENAME 'I) - (DLFIXINIT - (MAKEINIT '(11500Q 13062Q 25400Q) - NIL NIL - '({DSK}/usr/local/lde/lispcore/sources/ - {dsk}/users/osamu/sunloadup/ - {DSK}/python1/fuji/sunloadup/ )) - '{DSK}INIT.DLINIT - '{dsk}/python1/fuji/sunloadup/LISPDLION.DB - 300) - (DATE) - (DRIBBLE) - (LOGOUT T) -) diff --git a/obsolete/sunloadup/INIT.MAKEINIT-NOETHER b/obsolete/sunloadup/INIT.MAKEINIT-NOETHER deleted file mode 100644 index 733f821c..00000000 --- a/obsolete/sunloadup/INIT.MAKEINIT-NOETHER +++ /dev/null @@ -1,34 +0,0 @@ -; -; Run MAKEINIT on SUN -; '90/02/15 Osamu -; Making LISP.SYSOUT that doesn't support XNS,PUP -; -(CL:IN-PACKAGE "IL") -(DRIBBLE "{DSK}SUNLOADUP/LOADUP.LOG") -(SETQ DIRECTORIES '( - "{DSK}/users/sybalsky/lispcore/Sources/" - "{DSK}/users/sybalsky/lispcore/library/" - "{DSK}/users/sybalsky/lispcore/internal/library/" - "{dsk}/users/sybalsky/lispcore/sunloadup/" )) -; -; remove LLETHER from 1LISPSET -(LOAD "{dsk}/users/osamu/SUNLOADUP/FILESETS") -(FILESLOAD RENAMEFNS MAKEINIT DLFIXINIT CMLARRAY-SUPPORT) -(LOAD "{DSK}/users/sybalsky/FASTINIT.DFASL") -;; turn off idle or you get stuck. -(IDLE.SET.OPTION 'TIMEOUT T) -;;and start making the init. This takes about 2.5 hrs. -(PROGN - (DORENAME 'I) - (DLFIXINIT - (MAKEINIT '(11500Q 13062Q 25400Q) - NIL NIL - '({DSK}/users/sybalsky/lispcore/Sources/ - {dsk}/users/sybalsky/lispcore/sunloadup/ )) - '{DSK}INIT.DLINIT - '{dsk}/users/sybalsky/lispcore/next/LISPDLION.DB - 300) - (DATE) - (DRIBBLE) - (LOGOUT T) -) diff --git a/obsolete/sunloadup/INIT.MAKEINITDSK b/obsolete/sunloadup/INIT.MAKEINITDSK deleted file mode 100644 index b65e9a20..00000000 --- a/obsolete/sunloadup/INIT.MAKEINITDSK +++ /dev/null @@ -1,48 +0,0 @@ -; -; Run MAKEINIT on SUN -; '90/02/09 Osamu -; '90.05/23 change DIRECTORIES -; Same as INIT.MAKEINITFULL, but points to DSK for files, not Pele:. -; -(CL:IN-PACKAGE "IL") -(DRIBBLE "{DSK}SUNLOADUP/LOADUP.LOG") -(SETQ CH.DEFAULT.DOMAIN "mv") -(SETQ CH.DEFAULT.ORGANIZATION "envos") -(CNDIR "{dsk}/king/export/lispcore/sources/") -(SETQ HELPFLAG 'BREAK!)(SETQ HELPDEPTH 0) -(SETQ CROSSCOMPILING T) - -(SETQ DIRECTORIES '( - "{dsk}/king/export/lispcore/sources/" "{dsk}/king/export/lispcore/library/" - "{DSK}/king/export/lispcore/internal/library/" - "{DSK}/users/sybalsky/sunloadup/" )) -(LOAD "{dsk}~/SUNLOADUP/FILESETS") -(LOAD "{dsk}/king/export/lispcore/library-2.0/VMEM.LCOM") -(LOAD "{dsk}~/3-BYTE-ATOMS/MEM.LCOM") -(LOAD "{dsk}/king/export/lispcore/library-2.0/READSYS.LCOM") -(LOAD "{dsk}/king/export/lispcore/library-2.0/RDSYS.LCOM") -(LOAD "{DSK}~/3-BYTE-ATOMS/DTDECLARE.LCOM") -(LOAD "{DSK}/king/export/release/medley/2.0/library/cmlarray-support.lcom") -(FILESLOAD RENAMEFNS MAKEINIT DLFIXINIT CMLARRAY-SUPPORT) -(LOAD "{DSK}SUNLOADUP/FASTINIT.DFASL") -;; turn off idle or you get stuck. -(IDLE.SET.OPTION 'TIMEOUT T) -;;and start making the init. This takes about 2.5 hrs. -(CNDIR "{dsk}~/3-BYTE-ATOMS/") -(PROGN - ;;(DORENAME 'I) - (DLFIXINIT - (MAKEINIT '(20101 ;LISP VERSION - 20100 ; MIN MICROCODE VERSION FOR XEROX - 20100 ; MIN EMULATOR VERSION FOR UNIX/DOS, BCPL FOR XEROX - ) - NIL '{dsk}~/INIT.SYSOUT - '("{dsk}/users/sybalsky/3-BYTE-ATOMS/" - "{DSK}/users/sybalsky/sunloadup/" )) - '{DSK}~/INIT.DLINIT - '{dsk}~/SUNLOADUP/LISPDLION.DB - 300) - (DATE) - (DRIBBLE) - (LOGOUT T) -) diff --git a/obsolete/sunloadup/INIT.MAKEINITFULL b/obsolete/sunloadup/INIT.MAKEINITFULL deleted file mode 100644 index 1c181619..00000000 --- a/obsolete/sunloadup/INIT.MAKEINITFULL +++ /dev/null @@ -1,41 +0,0 @@ -; -; Run MAKEINIT on SUN -; '90/02/09 Osamu -; '90.05/23 change DIRECTORIES -; -(CL:IN-PACKAGE "IL") -(DRIBBLE "{DSK}SUNLOADUP/LOADUP.LOG") -(SETQ CH.DEFAULT.DOMAIN "mv") -(SETQ CH.DEFAULT.ORGANIZATION "envos") -(CNDIR "{pele:mv:envos}2.01>sources>") -(SETQ HELPFLAG 'BREAK!)(SETQ HELPDEPTH 0) - -(SETQ DIRECTORIES '( - "{pele:mv:envos}2.01>sources>" - "{pele:mv:envos}2.0>sources>" "{PELE:MV:ENVOS}2.0>LIBRARY>" - "{DSK}/users/sybalsky/sunloadup/" )) -(LOAD "{dsk}~/SUNLOADUP/FILESETS") -(LOAD "{pele:mv:envos}2.0>library>VMEM.LCOM") -(LOAD "{pele:mv:envos}2.0>library>READSYS.LCOM") -(LOAD "{pele:mv:envos}2.0>library>RDSYS.LCOM") -(LOAD "{pele:mv:envos}2.0>library>cmlarray-support.lcom") -(FILESLOAD RENAMEFNS MAKEINIT DLFIXINIT ) -(LOAD "{DSK}SUNLOADUP/FASTINIT.DFASL") -;; turn off idle or you get stuck. -(IDLE.SET.OPTION 'TIMEOUT T) -;;and start making the init. This takes about 2.5 hrs. -(CNDIR "{dsk}~/3-BYTE-ATOMS/") -(PROGN - (DORENAME 'I) - (DLFIXINIT - (MAKEINIT '(11500Q 13062Q 25400Q) - NIL '{dsk}~/INIT.SYSOUT - '("{dsk}/users/sybalsky/3-BYTE-ATOMS/" - "{DSK}/users/sybalsky/sunloadup/" )) - '{DSK}~/INIT.DLINIT - '{dsk}~/SUNLOADUP/LISPDLION.DB - 300) - (DATE) - (DRIBBLE) - (LOGOUT T) -) diff --git a/obsolete/sunloadup/INIT.MAKEINITFULLFROMLISP b/obsolete/sunloadup/INIT.MAKEINITFULLFROMLISP deleted file mode 100644 index 5d36eae5..00000000 --- a/obsolete/sunloadup/INIT.MAKEINITFULLFROMLISP +++ /dev/null @@ -1,13 +0,0 @@ -; -; Run MAKEINIT on SUN -; '90/02/09 Osamu -; '90.05/23 change DIRECTORIES -; -(CL:IN-PACKAGE "IL") -(SETQ DIRECTORIES '( - "{dsk}/users/sybalsky/4-BYTE-ATOMS/" - "{dsk}/king/export/lispcore/lafite/parc-94/" - "{DSK}/users/sybalsky/4-byte-lib/" - "{DSK}/users/sybalsky/4-byte-intlib/" - "{DSK}/users/sybalsky/sunloadup/" )) -) diff --git a/obsolete/sunloadup/INIT.MAKEINITFULLSGI b/obsolete/sunloadup/INIT.MAKEINITFULLSGI deleted file mode 100644 index 4bf11849..00000000 --- a/obsolete/sunloadup/INIT.MAKEINITFULLSGI +++ /dev/null @@ -1,40 +0,0 @@ -; -; Run MAKEINIT on INDIGO, no NS access -; '90/02/09 Osamu -; '90.05/23 change DIRECTORIES -; -(CL:IN-PACKAGE "IL") -(DRIBBLE "{DSK}SUNLOADUP/LOADUP.LOG") -(SETQ CH.DEFAULT.DOMAIN "mv") -(SETQ CH.DEFAULT.ORGANIZATION "envos") -(CNDIR "{dsk}/users/sybalsky/medley2.01>") -(SETQ HELPFLAG 'BREAK!)(SETQ HELPDEPTH 0) - -(SETQ DIRECTORIES '( - "{dsk}sybalsky>medley2.01>" - "{DSK}/users/sybalsky/sunloadup/" )) -(LOAD "{dsk}~/SUNLOADUP/FILESETS") -(LOAD "VMEM.LCOM") -(LOAD "READSYS.LCOM") -(LOAD "RDSYS.LCOM") -(LOAD "cmlarray-support.lcom") -(FILESLOAD RENAMEFNS MAKEINIT DLFIXINIT CMLARRAY-SUPPORT) -(LOAD "{DSK}SUNLOADUP/FASTINIT.DFASL") -;; turn off idle or you get stuck. -(IDLE.SET.OPTION 'TIMEOUT T) -;;and start making the init. This takes about 2.5 hrs. -(CNDIR "{dsk}~/3-BYTE-ATOMS/") -(PROGN - (DORENAME 'I) - (DLFIXINIT - (MAKEINIT '(11500Q 13062Q 25400Q) - NIL '{dsk}~/INIT.SYSOUT - '("{dsk}/users/sybalsky/3-BYTE-ATOMS/" - "{DSK}/users/sybalsky/sunloadup/" )) - '{DSK}~/INIT.DLINIT - '{dsk}~/SUNLOADUP/LISPDLION.DB - 300) - (DATE) - (DRIBBLE) - (LOGOUT T) -) diff --git a/obsolete/sunloadup/LOADBIGFULLFROMLISP-REM.CM b/obsolete/sunloadup/LOADBIGFULLFROMLISP-REM.CM deleted file mode 100644 index 6955cd0f..00000000 --- a/obsolete/sunloadup/LOADBIGFULLFROMLISP-REM.CM +++ /dev/null @@ -1,5 +0,0 @@ -" -SHH(PROGN (IL:LOAD '\"{dsk}SUNLOADUP/LOADFULL-BIG.LISP\") (IL:MAKESYS '\"{dsk}FULL.SYSOUT\") (IL:LOGOUT T)) - -" - diff --git a/obsolete/sunloadup/LOADFULL-BIG.LISP b/obsolete/sunloadup/LOADFULL-BIG.LISP deleted file mode 100644 index dc7d5412..00000000 --- a/obsolete/sunloadup/LOADFULL-BIG.LISP +++ /dev/null @@ -1,28 +0,0 @@ -(RESETVARS - ((IDLE.PROFILE (QUOTE (TIMEOUT NIL)))) - (DEL.PROCESS (QUOTE IDLE)) - (SETQQ DISPLAYFONTDIRECTORIES - ("{DSK}/mo/release/fonts/display/presentation/" -"{DSK}/mo/release/fonts/display/publishing/" -"{DSK}/mo/release/fonts/display/miscellaneous/" )) - (SETQQ INTERPRESSFONTDIRECTORIES - ("{DSK}/mo/release/fonts/interpress/presentation/" -"{DSK}/mo/release/fonts/interpress/publishing/" -"{DSK}/mo/release/fonts/interpress/miscellaneous/" )) - (SETQQ *DEFAULT-CLEANUP-COMPILER* BCOMPL) - (SETQQ LOADUPDIRECTORIES - ({dsk}~/4-byte-lib/ {dsk}~/4-byte-intlib/ - {dsk}/king/export/lispcore/lafite/parc-94/ - {dsk}/king/export/lispcore/library/ - {dsk}/king/export/lispcore/internal/library/ -)) - (* used to include after EDITBITMAL: MAILCLIENT NSMAIL LAFITE NEWNSMAIL) - (* used to include MAILCLIENT before NSMAIL ) - (LOADUP (QUOTE (MSANALYZE MSPARSE MASTERSCOPE GIVE-AND-TAKE CHANGECONTROL CHAT PUPCHAT NSCHAT TEDIT HRULE - TEDITCHAT READNUMBER EDITBITMAP NSMAIL LAFITE - NEWNSMAIL FILEBROWSER GRAPHER SPY AREDIT WHERE-IS COPYFILES - UNIXCOMM UNIXCHAT - POSTSCRIPTSTREAM UNIXPRINT))) - (\DAYTIME0 \LASTUSERACTION) - (ENDLOADUP)) -STOP diff --git a/obsolete/sunloadup/LOADFULL-REM.CM b/obsolete/sunloadup/LOADFULL-REM.CM deleted file mode 100644 index 4516887c..00000000 --- a/obsolete/sunloadup/LOADFULL-REM.CM +++ /dev/null @@ -1,7 +0,0 @@ -" -(PROGN (LOAD (QUOTE {dsk}~/lispcore/SUNLOADUP/LOADUP.LISP))(SETQ IL:MAKESYSNAME :MEDLEY)(HARDRESET)) -SHH(PROGN (IL:ENDLOADUP) (IL:SPECVARS . T) (IL:MAKESYS 'LISP.SYSOUT)) -SHH(PROGN (IL:LOAD '{dsk}~/lispcore/SUNLOADUP/LOADFULL.LISP) (IL:MAKESYS 'FULL.SYSOUT) (IL:LOGOUT T)) - -" - diff --git a/obsolete/sunloadup/LOADFULL.LISP b/obsolete/sunloadup/LOADFULL.LISP deleted file mode 100644 index d7290d01..00000000 --- a/obsolete/sunloadup/LOADFULL.LISP +++ /dev/null @@ -1,29 +0,0 @@ -(RESETVARS - ((IDLE.PROFILE (QUOTE (TIMEOUT NIL)))) - (DEL.PROCESS (QUOTE IDLE)) - (SETQQ DISPLAYFONTDIRECTORIES - ("{DSK}~/lispcore/fonts/display/presentation/" -"{DSK}~/lispcore/fonts/display/publishing/" -"{DSK}~/lispcore/fonts/display/miscellaneous/" )) - (SETQQ INTERPRESSFONTDIRECTORIES - ("{DSK}~/lispcore/fonts/interpress/presentation/" -"{DSK}~/lispcore/fonts/interpress/publishing/" -"{DSK}~/lispcore/fonts/interpress/miscellaneous/" )) - (SETQQ *DEFAULT-CLEANUP-COMPILER* BCOMPL) - (SETQQ LOADUPDIRECTORIES - ({dsk}~/lispcore/lafite/medley-2.01/ - {dsk}~/lispcore/library/ - {dsk}~/lispcore/internal/library/ - -)) - (SETQ CH.DEFAULT.DOMAIN "MV") (SETQ CH.DEFAULT.ORGANIZATION "Envos") - (* used to include after EDITBITMAL: MAILCLIENT NSMAIL LAFITE NEWNSMAIL) - (LOADUP (QUOTE (MSPARSE MSANALYZE MASTERSCOPE - GIVE-AND-TAKE CHANGECONTROL CHAT PUPCHAT NSCHAT TEDIT HRULE - TEDITCHAT READNUMBER EDITBITMAP MAILCLIENT NSMAIL LAFITE - NEWNSMAIL FILEBROWSER GRAPHER SPY AREDIT WHERE-IS COPYFILES - UNIXCOMM UNIXCHAT - POSTSCRIPTSTREAM UNIXPRINT MULTI-COMPILE))) - (\DAYTIME0 \LASTUSERACTION) - (ENDLOADUP)) -STOP diff --git a/obsolete/sunloadup/LOADFULLFROMLISP-REM.CM b/obsolete/sunloadup/LOADFULLFROMLISP-REM.CM deleted file mode 100644 index 57b12cf8..00000000 --- a/obsolete/sunloadup/LOADFULLFROMLISP-REM.CM +++ /dev/null @@ -1,5 +0,0 @@ -" -SHH(PROGN (IL:LOAD '\"{dsk}/disk/disk2/jdstools/lc3/lispcore3.0/SUNLOADUP/LOADFULL.LISP\") (IL:MAKESYS '\"{dsk}FULL.SYSOUT\") (IL:LOGOUT T)) - -" - diff --git a/obsolete/sunloadup/LOADUP-BIG.LISP b/obsolete/sunloadup/LOADUP-BIG.LISP deleted file mode 100644 index 602c01df636bb52ab77822a541a9e722c3027ba6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3993 zcmaJ^+iu%P5_N!m8X(v|2nv4Kl?}^@kzHUiZ!NMZam1UOP0PY&9%!o-aYK^=Ma852 zwE4O{)g_U4*MlqIR+%ck9t zGCR|JGb@aSd9`2XkL|uOD=I2#H-@sRXwggCyfr(j*Cd`yQ#|I^=NE5BxFx9b)sFUC zDvRBg)^$UnS(WBMAFn^q-!O4S&qceTe~c$fEr(O{=5d2_?Nxlz+fgd@?JdL&6F-pG z@?KMb4({NIVO+g?cR7nwJr>HD`C2+UQ}U8Vw^@v{NALPe-hH%}U0e*?(`D-6*pxi-68iUk*V1EY@`^3S2J9yW1%wm3l0pIHBI!r2OeB6HO$n6l*0NGo z7PD*f2N-=re91O{{F;9;WPab)4ZO;798TO2_-QgugfkaYNuEf9W5*qfG?n48-@8H$ z1ILR2kBaJwJe|<4hN5|EwFd^C3yAVyXr1p`)10_|k|yLPS%SUC^Vo7$l+K0?ZA@dX z_~>T?3s!cRTo$&|3-)Ck@xGH*luE^Ftg=Y^p(G~^g!1(a7>Zn9!~Nr#FBKzb$&)jY z&Zt-3iUD68Wz!o(hjnvh4Ey)tKzViO#I+bWp`2;aIgKsN4q9PTMV`&~Fc*UeX) z^Q)WE&4>3lH}8M`1kC>rXl8z@;Sx9Q^dfiRhqTb1e-GS)bnJldA>_En4cH-8eW<K_sL zXEDrir)9$N=f)0yaCU0h1PRHr14_F5MM%4}5WyTm@iuwuF?A1}Fm|oln2D7pU;g3Gz(9IRM0NuAXGnb~ zaXx?+=g52M5dVzXoY)J%%1JhzLJ_|gWSr{E^SW^ki<4&x*R_0mauOFE32fG}qUhLJ zxPV0kG8ZRgTa`b|P26@aRP{6zC{(dUs z5FbQZ0Qp&0Mi?RyJsjyz`b43`vY&{RB>)^JmB&y70r=5LttNoLd<>h7wZh7iYe1WB z7A72jY+n#q$V-zx9`W1NF7FWk%u(xSYs3FnrtH-vetKF$I1g7|b zCo1C`*z|BPQ`{`#d`| ztOI#bM|EgOJ%gS+@a3f5i4;_ z_2)K_x+-qF-=RuDMF!sQvD+oZ6PS3}b_7APN4W@cwME6Yskf$S3ws`@+GcD{8AqUX z^`0O6l7>R*fs|3E{k^3PiqLDC8?)`|j1pxa*Ky{XX$~leQ8y12;>xUx3W@1?V=6+b zLFI4?!;p8l=QM-)VG{U`ug7z_9NSXP3E~v5g0aH{aMV(isMA*mGFARin$;CO?AuOA zTd=H)-=Q)W)coO!_8IAubs7ZipF^A%*{*#FJ(iJ}1hOy5Ib9nBF|tg{N>}Z=qUU^v zH$oR&{UKekH% z4EM499$@+_s_JJ9>6%tuU5>XG3W5Ba;nR26iW;4d3G?DB+|r9W-hgLH`>Mgi#1eoF zq3bZdbJJ`5vBsafF*ojpho=>W?Q4arD*A{~Rtpt=An#;wgFYWJywE<|sKiX9y=Z)K za+n`&c2DF7Cl`!)#pfvHi@5dung4eNlmfu&Yr6q1OLd&QJ>$Q>oV_`_JDZJ=oJAIB zTm9Y8XbRN?svZd1HGf76bP)QH2#7oUF5~o(=$9oI7iT}&Q|-@RFZuK4>sybalsky>lispcore>sunloadup>FILESETS.;1 File created 9-Apr-90 16:57:44 FILESETSCOMS {DSK}sybalsky>lispcore>library>VMEM.LCOM;1 compiled on 21-Jan-93 18:50:40 File created 20-Jan-93 15:04:46 VMEMCOMS {DSK}sybalsky>lispcore>sources>MEM.LCOM;3 compiled on 25-Jan-98 17:45:42 File created 5-Nov-92 15:57:00 MEMCOMS =|{DSK}sybalsky>lispcore>sources>READSYS.LCOM;2| {DSK}sybalsky>lispcore>sources>READSYS.LCOM;2 compiled on 30-Jan-98 11:49:54 File created 9-Nov-92 03:25:43 READSYSCOMS {DSK}sybalsky>lispcore>library>RDSYS.LCOM;16 compiled on 20-Dec-98 14:54:58 File created 20-Dec-98 14:54:54 RDSYSCOMS {DSK}sybalsky>lispcore>sources>DTDECLARE.LCOM;6 compiled on 25-Jan-98 12:59:44 File created 8-Mar-95 10:22:57 (/DECLAREDATATYPE redefined) (DECLAREDATATYPE redefined) (TRANSLATE.DATATYPE redefined) (\\REUSETO redefined) (\\TYPEGLOBALVARIABLE redefined) (TYPE-VARIABLE-FROM-TYPE-NAME redefined) (|BitFieldMask| redefined) (|BitFieldShift| redefined) (|BitFieldShiftedMask| redefined) (|MakeBitField| redefined) (|BitFieldWidth| redefined) (|BitFieldFirst| redefined) (|optimize-FETCHFIELD| redefined) (|optimize-FFETCHFIELD| redefined) (|optimize-REPLACEFIELD| redefined) (|optimize-FREPLACEFIELD| redefined) (|optimize-REPLACEFIELDVAL| redefined) (|optimize-FREPLACEFIELDVAL| redefined) (|optimize-NCREATE| redefined) (|optimize-\\DTEST| redefined) (COMPILEDFETCHFIELD redefined) (COMPILEDREPLACEFIELD redefined) (COMPILEDNCREATE redefined) (TRANSLATE.LOCF redefined) {DSK}sybalsky>lispcore>sources>RENAMEFNS.LCOM;5 compiled on 29-Jan-98 15:47:13 File created 29-Jan-98 15:47:09 {DSK}sybalsky>lispcore>sources>MAKEINIT.LCOM;9 compiled on 31-Jan-98 09:41:08 File created 30-Jan-98 12:46:00 MAKEINITCOMS {DSK}sybalsky>lispcore>sources>DLFIXINIT.LCOM;1 compiled on 31-Jan-98 09:40:56 File created 29-Jan-98 17:51:06 DLFIXINITCOMS {DSK}sybalsky>lispcore>sources>CMLARRAY-SUPPORT.LCOM;2 compiled on 2-May-99 14:58:00 File created 2-May-99 14:57:41 {DSK}sybalsky>lispcore>sunloadup>FASTINIT.DFASL;3 XCL Compiler output for source file {DSK}lispcore3.0>SUNLOADUP>FASTINIT.;1 Source file created Wednesday, 18 July 1990, 13:20:03. FASL file created Saturday, 24 January 1998, 15:46:32. {DSK}sybalsky>lispcore>sunloadup>LLPARAMS.;1 File created 31-Jan-98 09:16:51 LLPARAMSCOMS {DSK}sybalsky>lispcore>sources>LLCODE.;1 File created 19-Jan-93 10:45:33 LLCODECOMS (INEWCOMS reset) (DONTCOMPILEFNS reset) (INEWCOMS reset) (MKI.SUBFNS reset) (NLAMA reset) {DSK}sybalsky>lispcore>sources>LLARRAYELT.;8 File created 15-Sep-94 11:08:59 LLARRAYELTCOMS {DSK}sybalsky>lispcore>sources>RENAMEMACROS.;3 File created 27-Apr-94 15:43:27 RENAMEMACROSCOMS (RD.SUBFNS reset) (MKI.SUBFNS reset) (EXPANDMACROFNS reset) (EXPANDMACROFNS reset) (INEWCOMS reset) (MKI.SUBFNS reset) (EXPANDMACROFNS reset) (RDCOMS reset) (RD.SUBFNS reset) (DONTCOMPILEFNS reset) (DONTCOMPILEFNS reset) (DONTCOMPILEFNS reset) (LAMA reset) {DSK}sybalsky>lispcore>sources>LLCHAR.;3 File created 12-Jan-94 10:12:34 LLCHARCOMS (INEWCOMS reset) (INEWCOMS reset) (EXPANDMACROFNS reset) (DONTCOMPILEFNS reset) {DSK}sybalsky>lispcore>sources>LLNEW.;16 File created 2-Feb-95 16:21:44 LLNEWCOMS (INEWCOMS reset) (RDCOMS reset) (INITPTRS reset) (MKI.SUBFNS reset) (RD.SUBFNS reset) (DONTCOMPILEFNS reset) (INEWCOMS reset) (EXPANDMACROFNS reset) (MKI.SUBFNS reset) (RD.SUBFNS reset) (INEWCOMS reset) (DONTCOMPILEFNS reset) {DSK}sybalsky>lispcore>sources>LLBASIC.;13 File created 31-Jan-98 09:55:50 LLBASICCOMS (DONTCOMPILEFNS reset) (INITVALUES reset) (INITPTRS reset) (INEWCOMS reset) (EXPANDMACROFNS reset) (MKI.SUBFNS reset) (RD.SUBFNS reset) (RDCOMS reset) {DSK}sybalsky>lispcore>sources>LLDATATYPE.;12 File created 28-Jun-99 16:57:50 LLDATATYPECOMS (INITVALUES reset) (INITPTRS reset) (INEWCOMS reset) (RDCOMS reset) (RD.SUBFNS reset) (EXPANDMACROFNS reset) (MKI.SUBFNS reset) (DONTCOMPILEFNS reset) (new COPYRIGHT property for LLDATATYPE) {DSK}sybalsky>lispcore>sources>LLGC.;4 File created 19-Oct-94 12:30:11 LLGCCOMS (MKI.SUBFNS reset) (INEWCOMS reset) (DONTCOMPILEFNS reset) {DSK}sybalsky>lispcore>sources>LLSTK.;1 File created 6-Jan-93 18:07:37 LLSTKCOMS (INEWCOMS reset) (EXPANDMACROFNS reset) (DONTCOMPILEFNS reset) LLSTKCOMS (LLSTKCOMS reset) (LAMA reset) (LAMA reset) {DSK}sybalsky>lispcore>sources>RENAMEMACROS.;3 File created 27-Apr-94 15:43:27 RENAMEMACROSCOMS {DSK}sybalsky>lispcore>sources>MODARITH.;1 File created 16-May-90 20:46:21 MODARITHCOMS (EXPANDMACROFNS reset) {DSK}sybalsky>lispcore>sources>LLFAULT.;1 File created 2-Jan-93 12:26:58 LLFAULTCOMS (INEWCOMS reset) (RDCOMS reset) (EXPANDMACROFNS reset) (MKI.SUBFNS reset) (RD.SUBFNS reset) (DONTCOMPILEFNS reset) (INEWCOMS reset) LLFAULTCOMS (LLFAULTCOMS reset) (LAMA reset) (LAMA reset) {DSK}sybalsky>lispcore>sources>LLKEY.;7 File created 9-Apr-2000 16:28:23 LLKEYCOMS (INEWCOMS reset) (RDCOMS reset) (new COPYRIGHT property for LLKEY) (NLAML reset) (LAMA reset) {DSK}sybalsky>lispcore>sources>LLBFS.;1 File created 17-Dec-92 01:31:53 LLBFSCOMS (INITPTRS reset) (INEWCOMS reset) (DONTCOMPILEFNS reset) (INEWCOMS reset) {DSK}sybalsky>lispcore>sources>LLTIMER.;1 File created 16-May-90 20:13:11 LLTIMERCOMS (INEWCOMS reset) (\TIMEREXPIRED.BOX reset) New fns definition for \SETUPTIMERmacrofn. listing? F (I.MAKEINITBFS NIL (uses I.FREEPAGEFID I.DISKREQUESTBLOCK I.SWAPREQUESTBLOCK I.SWAPDSK2 I.SWAPDSK1 I.MAINDISK)) (I.\\LOCKFN (FN)) (I.\\LOCKVAR (VAR)) (I.\\LOCKCELL (X NPGS)) (I.\\LOCKWORDS (BASE NWORDS)) (I.\\LOCKCODE (CODEBLOCK)) (I.DUMPINITPAGES (CODEFIRSTPAGE CODENEXTPAGE VERSIONS) (uses |MKI.Page0Byte| NEXTVMEM NEXTPM)) (I.SETUPPAGEMAP NIL (uses NEXTVMEM NEXTPM)) (I.ADDPME (VP NEWPAGEOK) (uses NEXTVMEM NEXTPM)) (I.MAKEROOMFORPME (VP) (uses NEXTPM)) (I.MAPPAGES (BOT TOP FN)) (I.SETUPSTACK (INITFLG) (uses RESETPTR RESETPC)) (I.\\SETUPSTACK1 (STKP ALINK CLINK STKEND NARGS PC DEFPTR ARGS INITFLG ARGSLENGTH)) (I.\\SETUPGUARDBLOCK (STKP LEN)) (I.\\MAKEFREEBLOCK (STK SIZE)) (I.INITGC NIL) (I.NTYPX (X)) (I.\\ALLOCMDSPAGE (TYP) (uses |I.NxtMDSPage| I.MDSFREELISTPAGE)) (I.\\MAKEMDSENTRY (VP V)) (I.\\INITMDSPAGE (BASE SIZE PREV)) (I.\\ASSIGNDATATYPE1A0001 (PAGE)) (I.\\ASSIGNDATATYPE1 (NAME DESCRIPTORS SIZE SPECS PTRFIELDS SUPERTYPE) (uses |I.MaxTypeNumber| |I.MaxSysTypeNum|)) (I.\\TYPENUMBERFROMNAME (TYPE) (uses |I.MaxTypeNumber|)) (I.\\CREATECELL (TYP)) (I.\\NEW2PAGE (BASE)) (I.CREATEMDSTYPETABLE NIL) (I.INITDATATYPES NIL (uses |I.MaxTypeNumber| |I.MaxSysTypeNum| I.LISTPDTD INITIALDTDCONTENTS)) (I.INITDATATYPENAMES NIL (uses INITIALDTDCONTENTS I.FINALIZATION.FUNCTIONS)) (I.FSETVAL (ATM VAL)) (I.SETPROPLIST (ATM LST)) (I.PUTDEFN (FN CA SIZE) (uses OUTX RESETPC RESETPTR LOCKEDFNS)) (I.\\BLT (DBASE SBASE NWORDS)) (I.\\MKATOM (BASE OFFST LEN FATP NONNUMERICP) (uses \\ORIGREADTABLE |I.OneCharAtomBase|)) (I.\\CREATE.SYMBOL (BASE OFFSET LEN FATP FATCHARSEENP) (uses |I.AtomFrLst|)) (I.\\INITATOMPAGE (PN)) (I.\\MOVEBYTES (SBASE SBYTE DBASE DBYTE NBYTES)) (I.\\STKMIN (CODE CODEISBLOCK PRINT)) (I.COPYATOM (X) (uses I.SCRATCHSTRING)) (I.INITATOMS NIL (uses |I.OneCharAtomBase| I.SCRATCHSTRING)) (I.MAKEINITFIRST NIL) (I.\\COPY (X)) (I.MAKEINITLASTA0001 (P A)) (I.MAKEINITLASTA0002 (V A)) (I.MAKEINITLAST (VERSIONS) (uses MKI.ATOMARRAY LOCKEDVARS MKI.PTRS MKI.VALUES INITPTRS INITVALUES MKI.CODESTARTOFFSET MKI.CODELASTPAGE MKI.TVHA MKI.PLHA)) (I.\\CONS.UFN (X Y) (uses I.LISTPDTD)) (I.\\MAIKO.CONS.UFN (X Y)) (I.\\INITCONSPAGE (BASE LINK)) (I.\\NEXTCONSPAGE NIL (uses I.LISTPDTD)) (I.\\GETBASEBYTE (PTR N)) (I.\\PUTBASEBYTE (PTR DISP BYTE)) (I.CREATEPAGES (VA N BLANKFLG LOCKFLG)) (I.\\NEW4PAGE (PTR)) (I.ALLOCSTRING (N INITCHAR OLD FATFLG)) (I.%COPY-ONED-ARRAY (LOCAL-ARRAY)) (I.%COPY-STRING-TO-ARRAY (LOCAL-STRING)) (I.\\#BLOCKDATACELLS (DATAWORD) (uses I.HUNKING?)) (I.\\PREFIXALIGNMENT? (ARLEN INITONPAGE ALIGN GCTYPE BASE)) (I.\\ALLOCBLOCK (NCELLS GCTYPE INITONPAGE ALIGN) (uses I.HUNKING?)) -----In I.\\MAIKO.ALLOCBLOCK\: *****((*) - |value| |of| |comment| |used?|) (I.\\MAIKO.ALLOCBLOCK (NCELLS GCTYPE INITONPAGE ALIGN) (uses I.HUNKING?)) ----- (I.\\ALLOCBLOCK.NEW (ARLEN GCTYPE INITONPAGE ALIGN) (uses |I.NxtMDSPage|)) (I.\\MAKEFREEARRAYBLOCK (BLOCK LENGTH)) (I.\\MERGEBACKWARD (BASE)) (I.\\LINKBLOCK (BASE) (uses I.FREEBLOCKBUCKETS)) (I.\\ALLOCHUNK (NCELLS GCTYPE INITONPAGE ALIGN) (uses I.PTRHUNK.TYPENUM.TABLE I.CODEHUNK.TYPENUM.TABLE I.UNBOXEDHUNK.TYPENUM.TABLE)) (I.PREINITARRAYS NIL) (I.POSTINITARRAYS (AFTERCODEPTR CODESTARTPAGE CODENEXTPAGE) (uses I.FREEBLOCKBUCKETS)) (I.FILEARRAYBASE NIL (uses |MKI.FirstDataByte| MKI.CODESTARTOFFSET)) (I.FILEBLOCKTRAILER (BLOCKINFO) (uses OUTX)) (I.FILECODEBLOCK (NCELLS INITONPAGE) (uses OUTX)) (I.FILEPATCHBLOCK (ARLEN) (uses OUTX)) (I.\\SETUP.HUNK.TYPENUMBERS NIL (uses \\BUILT-IN-SYSTEM-TYPES INITIALDTDCONTENTS)) (I.\\COMPUTE.HUNK.TYPEDECLS (SIZELST GCTYPE PREFIX)) (I.\\TURN.ON.HUNKING NIL (uses I.HUNKING? I.PTRHUNK.TYPENUM.TABLE I.CODEHUNK.TYPENUM.TABLE I.UNBOXEDHUNK.TYPENUM.TABLE)) (I.\\SETUP.TYPENUM.TABLE (SIZELST GCTYPE PREFIX) (uses INITIALDTDCONTENTS)) (I.DCODERD (FN) (uses I.CODERDTBL)) (I.INITUFNTABLE NIL) (I.\\SETUFNENTRY (INDEX FN NARGS NEXTRA)) {DSK}sybalsky>lispcore>sources>MEM.LCOM;3 compiled on 25-Jan-98 17:45:42 File created 5-Nov-92 15:57:00 MEMCOMS {DSK}sybalsky>lispcore>4-BYTE-ATOMS>I-NEW.LCOM;48 compiled on 10-Apr-2000 01:45:23 File created 10-Apr-2000 01:45:05 I-NEWCOMS |{DSK}sybalsky>lispcore>sources>PACKAGE-CONVERSION-TABLE.LCOM;2| (CL:PROCLAIM (QUOTE (CL:SPECIAL LITATOM-PACKAGE-CONVERSION-TABLE))) (OR (BOUNDP (QUOTE LITATOM-PACKAGE-CONVERSION-TABLE)) (CL:SETQ LITATOM-PACKAGE-CONVERSION-TABLE (QUOTE (("CL::" NIL "LISP" :INTERNAL) ("CL:" ("CL:FLG" "CL:MAKE-SYMBOL" "CL:COPY-SYMBOL" "CL:INTERN" "CL:MAKE-KEYWORD" "CL:GENTEMP" "CL:KEYWORDP") "LISP" :EXTERNAL) (":" NIL "KEYWORD" :EXTERNAL) ( "CONDITIONS::" NIL "CONDITIONS" :INTERNAL) ("CONDITIONS:" NIL "CONDITIONS" :EXTERNAL) ("XCL::" NIL "XCL" :INTERNAL) ("XCL:" NIL "XCL" :EXTERNAL) ("SI::" NIL "SI" :INTERNAL) ("SI:" NIL "SI" :EXTERNAL) ("COMPILER::" NIL "COMPILER" :INTERNAL) ("COMPILER:" NIL "COMPILER" :EXTERNAL) ("FASL::" NIL "FASL" :INTERNAL) ("FASL:" NIL "FASL" :EXTERNAL))))) |{DSK}sybalsky>lispcore>sources>LLFAULT.LCOM;7| |{DSK}sybalsky>lispcore>sources>LLSUBRS.LCOM;2| (SETF-MACRO-FUNCTION (QUOTE MISCN) (QUOTE expand-MISCN)) (PUTPROP (QUOTE MISCN) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE optimize-MISCN) (GET (QUOTE MISCN) (QUOTE COMPILER:OPTIMIZER-LIST)))) (SETF-MACRO-FUNCTION (QUOTE USER-SUBR) (QUOTE expand-USER-SUBR)) (SETF-MACRO-FUNCTION (QUOTE SUBRCALL) (QUOTE expand-SUBRCALL)) (PUTPROP (QUOTE SUBRCALL) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE optimize-SUBRCALL) (GET (QUOTE SUBRCALL) (QUOTE COMPILER:OPTIMIZER-LIST)))) |{DSK}sybalsky>lispcore>sources>LLBFS.LCOM;2| |{DSK}sybalsky>lispcore>sources>LLNEW.LCOM;4| |{DSK}sybalsky>lispcore>sources>FILEIO.LCOM;3| (/DECLAREDATATYPE (QUOTE STREAM) (QUOTE (WORD WORD FLAG (BITS 3) POINTER BYTE BYTE WORD WORD WORD FLAG FLAG FLAG FLAG POINTER FLAG FLAG FLAG FLAG POINTER FLAG (BITS 2) FLAG POINTER POINTER POINTER WORD WORD POINTER POINTER POINTER POINTER POINTER WORD WORD WORD WORD POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER WORD WORD POINTER)) (QUOTE ((STREAM 0 (BITS . 15)) (STREAM 1 (BITS . 15)) (STREAM 2 (FLAGBITS . 0)) (STREAM 2 (BITS . 18 )) (STREAM 2 POINTER) (STREAM 4 (BITS . 7)) (STREAM 4 (BITS . 135)) (STREAM 5 (BITS . 15)) (STREAM 6 (BITS . 15)) (STREAM 7 (BITS . 15)) (STREAM 8 ( FLAGBITS . 0)) (STREAM 8 (FLAGBITS . 16)) (STREAM 8 (FLAGBITS . 32)) (STREAM 8 (FLAGBITS . 48)) (STREAM 8 POINTER) (STREAM 10 (FLAGBITS . 0)) (STREAM 10 ( FLAGBITS . 16)) (STREAM 10 (FLAGBITS . 32)) (STREAM 10 (FLAGBITS . 48)) ( STREAM 10 POINTER) (STREAM 12 (FLAGBITS . 0)) (STREAM 12 (BITS . 17)) (STREAM 12 (FLAGBITS . 48)) (STREAM 12 POINTER) (STREAM 14 POINTER) (STREAM 16 POINTER) (STREAM 18 (BITS . 15)) (STREAM 19 (BITS . 15)) (STREAM 20 POINTER) (STREAM 22 POINTER) (STREAM 24 POINTER) (STREAM 26 POINTER) (STREAM 28 POINTER) (STREAM 30 (BITS . 15)) (STREAM 31 (BITS . 15)) (STREAM 32 (BITS . 15)) (STREAM 33 (BITS . 15)) (STREAM 34 POINTER) (STREAM 36 POINTER) (STREAM 38 POINTER) (STREAM 40 POINTER) (STREAM 42 POINTER) (STREAM 44 POINTER) ( STREAM 46 POINTER) (STREAM 48 POINTER) (STREAM 50 POINTER) (STREAM 52 (BITS . 15)) (STREAM 53 (BITS . 15)) (STREAM 54 POINTER))) (QUOTE 56)) (DEFPRINT (QUOTE STREAM) (FUNCTION \STREAM.DEFPRINT)) (DEFPRINT (QUOTE FDEV) (FUNCTION \FDEV.DEFPRINT)) (/DECLAREDATATYPE (QUOTE FDEV) (QUOTE (FLAG FLAG FLAG FLAG FLAG FLAG FLAG FLAG POINTER FLAG FLAG FLAG FLAG POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER)) (QUOTE ((FDEV 0 (FLAGBITS . 0)) (FDEV 0 (FLAGBITS . 16)) (FDEV 0 ( FLAGBITS . 32)) (FDEV 0 (FLAGBITS . 48)) (FDEV 0 (FLAGBITS . 64)) (FDEV 0 ( FLAGBITS . 80)) (FDEV 0 (FLAGBITS . 96)) (FDEV 0 (FLAGBITS . 112)) (FDEV 2 POINTER) (FDEV 2 (FLAGBITS . 0)) (FDEV 2 (FLAGBITS . 16)) (FDEV 2 (FLAGBITS . 32)) (FDEV 2 (FLAGBITS . 48)) (FDEV 4 POINTER) (FDEV 6 POINTER) (FDEV 8 POINTER) (FDEV 10 POINTER) (FDEV 12 POINTER) (FDEV 14 POINTER) (FDEV 16 POINTER) (FDEV 18 POINTER) (FDEV 20 POINTER) (FDEV 22 POINTER) (FDEV 24 POINTER) (FDEV 26 POINTER) (FDEV 28 POINTER) (FDEV 30 POINTER) (FDEV 32 POINTER) (FDEV 34 POINTER) (FDEV 36 POINTER) (FDEV 38 POINTER) (FDEV 40 POINTER) (FDEV 42 POINTER) (FDEV 44 POINTER) (FDEV 46 POINTER) (FDEV 48 POINTER) (FDEV 50 POINTER) (FDEV 52 POINTER) (FDEV 54 POINTER) (FDEV 56 POINTER) (FDEV 58 POINTER) (FDEV 60 POINTER) (FDEV 62 POINTER) (FDEV 64 POINTER) (FDEV 66 POINTER) (FDEV 68 POINTER) (FDEV 70 POINTER) (FDEV 72 POINTER) (FDEV 74 POINTER) (FDEV 76 POINTER) (FDEV 78 POINTER) (FDEV 80 POINTER) (FDEV 82 POINTER) (FDEV 84 POINTER) (FDEV 86 POINTER) (FDEV 88 POINTER) (FDEV 90 POINTER) (FDEV 92 POINTER) (FDEV 94 POINTER) (FDEV 96 POINTER) (FDEV 98 POINTER) (FDEV 100 POINTER) (FDEV 102 POINTER) (FDEV 104 POINTER))) (QUOTE 106)) (/DECLAREDATATYPE (QUOTE EXTERNALFORMAT) (QUOTE (FLAG (BITS 2) (BITS 1) POINTER POINTER POINTER POINTER)) (QUOTE ((EXTERNALFORMAT 0 (FLAGBITS . 0)) ( EXTERNALFORMAT 0 (BITS . 17)) (EXTERNALFORMAT 0 (BITS . 48)) (EXTERNALFORMAT 0 POINTER) (EXTERNALFORMAT 2 POINTER) (EXTERNALFORMAT 4 POINTER) ( EXTERNALFORMAT 6 POINTER))) (QUOTE 8)) (\CREATE.JIS.EXTERNALFORMAT) (\CREATE.SHIFTJIS.EXTERNALFORMAT) (\CREATE.EUC.EXTERNALFORMAT) (\CREATE.THROUGH.EXTERNALFORMAT) (MAPC (QUOTE ((FORCEOUTPUT FLUSHOUTPUT) (FORCEOUTPUT FLUSHMAP) (\GENERIC.BINS \NONPAGEDBINS) (\GENERIC.BOUTS \NONPAGEDBOUTS))) (FUNCTION (LAMBDA (PAIR) ( PUTD (CADR PAIR) (GETD (CAR PAIR)) T)))) (\NULLDEVICE) |{DSK}sybalsky>lispcore>sources>IMAGEIO.LCOM;4| (/DECLAREDATATYPE (QUOTE IMAGEOPS) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER)) (QUOTE (( IMAGEOPS 0 POINTER) (IMAGEOPS 2 POINTER) (IMAGEOPS 4 POINTER) (IMAGEOPS 6 POINTER) (IMAGEOPS 8 POINTER) (IMAGEOPS 10 POINTER) (IMAGEOPS 12 POINTER) ( IMAGEOPS 14 POINTER) (IMAGEOPS 16 POINTER) (IMAGEOPS 18 POINTER) (IMAGEOPS 20 POINTER) (IMAGEOPS 22 POINTER) (IMAGEOPS 24 POINTER) (IMAGEOPS 26 POINTER) ( IMAGEOPS 28 POINTER) (IMAGEOPS 30 POINTER) (IMAGEOPS 32 POINTER) (IMAGEOPS 34 POINTER) (IMAGEOPS 36 POINTER) (IMAGEOPS 38 POINTER) (IMAGEOPS 40 POINTER) ( IMAGEOPS 42 POINTER) (IMAGEOPS 44 POINTER) (IMAGEOPS 46 POINTER) (IMAGEOPS 48 POINTER) (IMAGEOPS 50 POINTER) (IMAGEOPS 52 POINTER) (IMAGEOPS 54 POINTER) ( IMAGEOPS 56 POINTER) (IMAGEOPS 58 POINTER) (IMAGEOPS 60 POINTER) (IMAGEOPS 62 POINTER) (IMAGEOPS 64 POINTER) (IMAGEOPS 66 POINTER) (IMAGEOPS 68 POINTER) ( IMAGEOPS 70 POINTER) (IMAGEOPS 72 POINTER) (IMAGEOPS 74 POINTER) (IMAGEOPS 76 POINTER) (IMAGEOPS 78 POINTER) (IMAGEOPS 80 POINTER) (IMAGEOPS 82 POINTER) ( IMAGEOPS 84 POINTER) (IMAGEOPS 86 POINTER) (IMAGEOPS 88 POINTER) (IMAGEOPS 90 POINTER) (IMAGEOPS 92 POINTER) (IMAGEOPS 94 POINTER))) (QUOTE 96)) (\IMAGEIOINIT) (SETTOPVAL (QUOTE \DISPLAYSTREAMTYPES) (CONS (QUOTE DISPLAY) \COLORDISPLAYSTREAMTYPES)) (\DISPLAYINIT) (\4DISPLAYINIT) (\8DISPLAYINIT) (\24DISPLAYINIT) |{DSK}sybalsky>lispcore>sources>LLBASIC.LCOM;12| (PUTPROP (QUOTE ATOM) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE definline-ATOM) (GET (QUOTE ATOM) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE \ATOMCELL) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE optimize-\ATOMCELL) (GET (QUOTE \ATOMCELL) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE GETPROPLIST) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE optimize-GETPROPLIST) (GET (QUOTE GETPROPLIST) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE SETPROPLIST) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE optimize-SETPROPLIST) (GET (QUOTE SETPROPLIST) (QUOTE COMPILER:OPTIMIZER-LIST)))) |{DSK}sybalsky>lispcore>sources>LLGC.LCOM;2| (SETTOPVAL (QUOTE \GCTIME1) (CREATECELL \FIXP)) (SETTOPVAL (QUOTE \GCTIME2) (CREATECELL \FIXP)) |{DSK}sybalsky>lispcore>sources>LLARRAYELT.LCOM;2| (DEFPRINT (QUOTE HARRAYP) (QUOTE \HASHTABLE.DEFPRINT)) (/DECLAREDATATYPE (QUOTE HARRAYP) (QUOTE (WORD WORD POINTER FLAG POINTER WORD WORD POINTER POINTER POINTER)) (QUOTE ((HARRAYP 0 (BITS . 15)) (HARRAYP 1 ( BITS . 15)) (HARRAYP 2 POINTER) (HARRAYP 2 (FLAGBITS . 0)) (HARRAYP 4 POINTER ) (HARRAYP 6 (BITS . 15)) (HARRAYP 7 (BITS . 15)) (HARRAYP 8 POINTER) ( HARRAYP 10 POINTER) (HARRAYP 12 POINTER))) (QUOTE 14)) |{DSK}sybalsky>lispcore>sources>LLINTERP.LCOM;7| (MOVD? (QUOTE SETQ) (QUOTE SETN) NIL T) (MOVD? (QUOTE FUNCTION) (QUOTE CL:FUNCTION) NIL T) (SETTOPVAL (QUOTE COMPVARMACROHASH) (HASHARRAY 100)) |{DSK}sybalsky>lispcore>sources>LLMVS.LCOM;2| (XCL::SET-CONSTANTP (QUOTE CL:MULTIPLE-VALUES-LIMIT) NIL) (CL:PROCLAIM (QUOTE (SI::CONSTANT CL:MULTIPLE-VALUES-LIMIT))) |{DSK}sybalsky>lispcore>sources>DEFSTRUCT-RUN-TIME.LCOM;2| (PROCLAIM (QUOTE (SPECIAL *PARSED-DEFSTRUCTS*))) (OR (BOUNDP (QUOTE *PARSED-DEFSTRUCTS*)) (SETQ *PARSED-DEFSTRUCTS* ( IL:HASHARRAY 100))) (IL:SETF-MACRO-FUNCTION (QUOTE PARSED-STRUCTURE) (QUOTE |expand-PARSED-STRUCTURE|)) (SET-SETF-INVERSE (QUOTE PARSED-STRUCTURE) (QUOTE SET-PARSED-STRUCTURE)) (IL:\\ASSIGNDATATYPE1 (QUOTE STRUCTURE-OBJECT) NIL 0) (PROCLAIM (QUOTE (SPECIAL *DEFSTRUCT-INFO-CACHE*))) (OR (BOUNDP (QUOTE *DEFSTRUCT-INFO-CACHE*)) (SETQ *DEFSTRUCT-INFO-CACHE* ( IL:HASHARRAY 100))) (PROCLAIM (QUOTE (SPECIAL XCL:*PRINT-STRUCTURE*))) (OR (BOUNDP (QUOTE XCL:*PRINT-STRUCTURE*)) (SETQ XCL:*PRINT-STRUCTURE* T)) (IL:SET-DOCUMENTATION (QUOTE XCL:*PRINT-STRUCTURE*) (QUOTE VARIABLE) "Flag indicating whether the contents of structures are to be printed.") |{DSK}sybalsky>lispcore>sources>SETF-RUNTIME.LCOM;2| |{DSK}sybalsky>lispcore>sources>CMLSEQBASICS.LCOM;2| (SET-DOCUMENTATION (QUOTE CL:COPY-SEQ) (QUOTE CL:FUNCTION) "Returns a copy of SEQUENCE which is EQUALP to SEQUENCE but not EQ.") (SET-DOCUMENTATION (QUOTE CL:MAKE-SEQUENCE) (QUOTE CL:FUNCTION) "Make a sequnce of the specified type") (SET-DOCUMENTATION (QUOTE CL:NREVERSE) (QUOTE CL:FUNCTION) "Returns a sequence of the same elements in reverse order (the argument is destroyed).") (SET-DOCUMENTATION (QUOTE CL:REVERSE) (QUOTE CL:FUNCTION) "Returns a new sequence containing the same elements but in reverse order.") (CL::SET-SETF-INVERSE (QUOTE CL:ELT) (QUOTE %%SETELT)) (CL::SET-SETF-METHOD-EXPANDER (QUOTE CL:SUBSEQ) (QUOTE CL::SUBSEQ-setf-expander)) |{DSK}sybalsky>lispcore>sources>LLARITH.LCOM;2| (CONSTANTS (MAX.SMALLP 65535) (MIN.SMALLP -65536) (MAX.FIXP 2147483647) ( MIN.FIXP -2147483648) (\\SIGNBIT 32768)) |{DSK}sybalsky>lispcore>sources>LLFLOAT.LCOM;2| (SETTOPVAL (QUOTE MAX.FLOAT) (\INFINITY 0)) (SETTOPVAL (QUOTE MIN.FLOAT) (\INFINITY 1)) (MOVD? (QUOTE FGREATERP) (QUOTE FGTP)) (CL:PROCLAIM (QUOTE (CL:SPECIAL INTPOWERS))) (OR (BOUNDP (QUOTE INTPOWERS)) (CL:SETQ INTPOWERS (LET ((AR (CL:MAKE-ARRAY 10 ))) (ASET 1 AR 0) (ASET 10 AR 1) (ASET 100 AR 2) (ASET 1000 AR 3) (ASET 10000 AR 4) (ASET 100000 AR 5) (ASET 1000000 AR 6) (ASET 10000000 AR 7) (ASET 100000000 AR 8) (ASET 1000000000 AR 9) AR))) (SETF-MACRO-FUNCTION (QUOTE SPLIT8) (QUOTE expand-SPLIT8)) (\INIT.POWERS.OF.TEN) |{DSK}sybalsky>lispcore>sources>LLBIGNUM.LCOM;3| (/DECLAREDATATYPE (QUOTE BIGNUM) (QUOTE (POINTER)) (QUOTE ((BIGNUM 0 POINTER) )) (QUOTE 2)) (DEFPRINT (QUOTE BIGNUM) (QUOTE BIGNUM.DEFPRINT)) (SETTOPVAL (QUOTE \BIGNUM.BETA) (EXPT 2 14)) (SETTOPVAL (QUOTE \BIGNUM.BETA1) (SUB1 \BIGNUM.BETA)) (CONSTANTS \BIGNUM.THETA (\BIGNUM.BETA (EXPT 2 14)) (\BIGNUM.BETA1 (SUB1 \BIGNUM.BETA))) (\INITBIGNUMS) |{DSK}sybalsky>lispcore>sources>LLREAD.LCOM;2| (Value of CHARACTERNAMES changed from ((INFINITY 8551)) to (("Page" 12) ("Form" 12) ("FF" 12) ("Rubout" 127) ("Del" 127) ("Null" 0) ("Escape" 27) ("Esc" 27) ("Bell" 7) ("Tab" 9) ("Backspace" 8) ("Bs" 8) ("Newline" 13) ("CR" 13) ("EOL" 13) ("Return" 13) ("Tenexeol" 31) ("Space" 32) ("Sp" 32) ("Linefeed" 10) ("LF" 10))) (\MAKE.JIS.TO.XCCS.CONV.TABLE) |{DSK}sybalsky>lispcore>sources>LLCHAR.LCOM;2| (MOVD? (QUOTE STRING.EQUAL) (QUOTE STRING-EQUAL) NIL T) (MOVD? (QUOTE STRING.EQUAL) (QUOTE CL::SIMPLE-STRING-EQUAL) NIL T) (MOVD? (QUOTE CHARACTER) (QUOTE FCHARACTER) NIL T) |{DSK}sybalsky>lispcore>sources>LLSTK.LCOM;6| |{DSK}sybalsky>lispcore>4-BYTE-ATOMS>LLDATATYPE.LCOM;1| (AND (EQ \MACHINETYPE \MAIKO) (MOVD (QUOTE \MAIKO.SET.STORAGE.STATE) (QUOTE \SET.STORAGE.STATE))) (MOVD? (QUOTE FETCHFIELD) (QUOTE FFETCHFIELD) NIL T) (MOVD? (QUOTE REPLACEFIELD) (QUOTE FREPLACEFIELD) NIL T) (MOVD? (QUOTE REPLACEFIELDVAL) (QUOTE FREPLACEFIELDVAL) NIL T) (PUTPROP (QUOTE TYPENAMEP) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE optimize-TYPENAMEP) (GET (QUOTE TYPENAMEP) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE \INSTANCE-P) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE optimize-\INSTANCE-P) (GET (QUOTE \INSTANCE-P) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE PUTBASEPTRX) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE optimize-PUTBASEPTRX) (GET (QUOTE PUTBASEPTRX) (QUOTE COMPILER:OPTIMIZER-LIST)))) (CONSTANTS \SMALLP \FIXP \FLOATP \LITATOM \LISTP \ARRAYP \STACKP \VMEMPAGEP \STREAM \NEW-ATOM) |{DSK}sybalsky>lispcore>sources>IOCHAR.LCOM;2| (MOVD? (QUOTE SETA) (QUOTE SETCASEARRAY)) (MOVD? (QUOTE ELT) (QUOTE GETCASEARRAY)) (SETTOPVAL (QUOTE \TRANSPARENT) (CASEARRAY)) (SETTOPVAL (QUOTE UPPERCASEARRAY) (UPPERCASEARRAY)) (PUTPROP (QUOTE DATEFORMAT) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE optimize-DATEFORMAT) (GET (QUOTE DATEFORMAT) (QUOTE COMPILER:OPTIMIZER-LIST) ))) |{DSK}sybalsky>lispcore>sources>LLKEY.LCOM;8| (MOVD? (QUOTE NILL) (QUOTE CARET)) (CONSTANTS (\SUN.TYPE3KEYBOARD 0) (\SUN.TYPE4KEYBOARD 1) (\SUN.JLEKEYBOARD 2) (\TOSHIBA.JIS 7)) (\KEYBOARDINIT) (PUTPROP (QUOTE \KEYNAMETONUMBER) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE optimize-\KEYNAMETONUMBER) (GET (QUOTE \KEYNAMETONUMBER) (QUOTE COMPILER:OPTIMIZER-LIST)))) (\INIT.KEYBOARD.STREAM) (CONSTANTS (HARDCURSORHEIGHT 16) (HARDCURSORWIDTH 16)) (MOVD (QUOTE CURSOR) (QUOTE SETCURSOR)) (MOVD (QUOTE \CURSORPOSITION) (QUOTE \SETCURSORPOSITION)) (SETTOPVAL (QUOTE \SFPosition) (CREATEPOSITION)) |{DSK}sybalsky>lispcore>sources>LLTIMER.LCOM;2| (PUTPROP (QUOTE \RCLOCK0) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE optimize-\RCLOCK0) (GET (QUOTE \RCLOCK0) (QUOTE COMPILER:OPTIMIZER-LIST)))) (SETTOPVAL (QUOTE \TIMEREXPIRED.BOX) (SETUPTIMER 0)) |{DSK}sybalsky>lispcore>sources>ASTACK.LCOM;5| |{DSK}sybalsky>lispcore>sources>DTDECLARE.LCOM;6| (PUTPROP (QUOTE FETCHFIELD) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE |optimize-FETCHFIELD|) (GET (QUOTE FETCHFIELD) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE FFETCHFIELD) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE |optimize-FFETCHFIELD|) (GET (QUOTE FFETCHFIELD) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE REPLACEFIELD) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE |optimize-REPLACEFIELD|) (GET (QUOTE REPLACEFIELD) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE FREPLACEFIELD) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE |optimize-FREPLACEFIELD|) (GET (QUOTE FREPLACEFIELD) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE REPLACEFIELDVAL) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE |optimize-REPLACEFIELDVAL|) (GET (QUOTE REPLACEFIELDVAL) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE FREPLACEFIELDVAL) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE |optimize-FREPLACEFIELDVAL|) (GET (QUOTE FREPLACEFIELDVAL) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE NCREATE) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE |optimize-NCREATE|) (GET (QUOTE NCREATE) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE \\DTEST) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE |optimize-\\DTEST|) (GET (QUOTE \\DTEST) (QUOTE COMPILER:OPTIMIZER-LIST)))) |{DSK}sybalsky>lispcore>sources>ATBL.LCOM;2| (/DECLAREDATATYPE (QUOTE TERMTABLEP) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER FLAG FLAG)) (QUOTE ((TERMTABLEP 0 POINTER) ( TERMTABLEP 2 POINTER) (TERMTABLEP 4 POINTER) (TERMTABLEP 6 POINTER) ( TERMTABLEP 8 POINTER) (TERMTABLEP 10 POINTER) (TERMTABLEP 12 POINTER) ( TERMTABLEP 14 POINTER) (TERMTABLEP 14 (FLAGBITS . 0)) (TERMTABLEP 14 ( FLAGBITS . 16)))) (QUOTE 16)) (/DECLAREDATATYPE (QUOTE READTABLEP) (QUOTE (POINTER POINTER FLAG FLAG FLAG ( BITS 5) FLAG FLAG FLAG FLAG FLAG FLAG FLAG FLAG POINTER BYTE BYTE BYTE BYTE POINTER)) (QUOTE ((READTABLEP 0 POINTER) (READTABLEP 2 POINTER) (READTABLEP 2 (FLAGBITS . 0)) (READTABLEP 2 (FLAGBITS . 16)) (READTABLEP 2 (FLAGBITS . 32) ) (READTABLEP 4 (BITS . 4)) (READTABLEP 2 (FLAGBITS . 48)) (READTABLEP 0 ( FLAGBITS . 0)) (READTABLEP 0 (FLAGBITS . 16)) (READTABLEP 0 (FLAGBITS . 32)) (READTABLEP 0 (FLAGBITS . 48)) (READTABLEP 4 (FLAGBITS . 80)) (READTABLEP 4 ( FLAGBITS . 96)) (READTABLEP 4 (FLAGBITS . 112)) (READTABLEP 6 POINTER) ( READTABLEP 5 (BITS . 7)) (READTABLEP 5 (BITS . 135)) (READTABLEP 4 (BITS . 135)) (READTABLEP 8 (BITS . 7)) (READTABLEP 10 POINTER))) (QUOTE 12)) (/DECLAREDATATYPE (QUOTE READER-ENVIRONMENT) (QUOTE (POINTER POINTER POINTER POINTER)) (QUOTE ((READER-ENVIRONMENT 0 POINTER) (READER-ENVIRONMENT 2 POINTER) (READER-ENVIRONMENT 4 POINTER) (READER-ENVIRONMENT 6 POINTER))) ( QUOTE 8)) (\ATBLSET) |{DSK}sybalsky>lispcore>sources>LLCODE.LCOM;2| (SETTOPVAL (QUOTE CODERDTBL) (COPYREADTABLE (QUOTE ORIG))) (SETSYNTAX 25 (QUOTE (MACRO (LAMBDA (FILE RDTBL) (EVAL (READ FILE RDTBL))))) CODERDTBL) (SETSYNTAX 124 (QUOTE (MACRO ALWAYS READVBAR)) CODERDTBL) (READTABLEPROP CODERDTBL (QUOTE USESILPACKAGE) NIL) (/DECLAREDATATYPE (QUOTE COMPILED-CLOSURE) (QUOTE (POINTER POINTER)) (QUOTE ( (COMPILED-CLOSURE 0 POINTER) (COMPILED-CLOSURE 2 POINTER))) (QUOTE 4)) (DEFPRINT (QUOTE COMPILED-CLOSURE) (QUOTE \CCLOSURE.DEFPRINT)) |{DSK}sybalsky>lispcore>sources>ACODE.LCOM;5| |{DSK}sybalsky>lispcore>sources>COREIO.LCOM;3| (/DECLAREDATATYPE (QUOTE COREFILEINFOBLK) (QUOTE (FIXP FIXP FIXP POINTER POINTER POINTER WORD WORD (BITS 2) WORD)) (QUOTE ((COREFILEINFOBLK 0 FIXP) ( COREFILEINFOBLK 2 FIXP) (COREFILEINFOBLK 4 FIXP) (COREFILEINFOBLK 6 POINTER) (COREFILEINFOBLK 8 POINTER) (COREFILEINFOBLK 10 POINTER) (COREFILEINFOBLK 12 (BITS . 15)) (COREFILEINFOBLK 13 (BITS . 15)) (COREFILEINFOBLK 10 (BITS . 1)) (COREFILEINFOBLK 14 (BITS . 15)))) (QUOTE 16)) (COREDEVICE (QUOTE NODIRCORE) T) (COREDEVICE (QUOTE CORE)) (COREDEVICE (QUOTE SCRATCH) T) |{DSK}sybalsky>lispcore>sources>AOFD.LCOM;2| (\BASEBYTES.IO.INIT) (\STRINGSTREAM.INIT) |{DSK}sybalsky>lispcore>sources>ADIR.LCOM;2| (CONSTANTS (MULTIPLE.STREAMS.PER.FILE.ALLOWED T)) (MOVD? (QUOTE SIMPLE.FINDFILE) (QUOTE FINDFILE) NIL T) (MOVD? (QUOTE NILL) (QUOTE CL:PATHNAMEP)) |{DSK}sybalsky>lispcore>sources>PMAP.LCOM;2| (PUTD (QUOTE \PAGEDBIN) (GETD (QUOTE \BUFFERED.BIN)) T) (PUTD (QUOTE \PAGEDPEEKBIN) (GETD (QUOTE \BUFFERED.PEEKBIN)) T) (/DECLAREDATATYPE (QUOTE BUFFER) (QUOTE (POINTER XPOINTER POINTER POINTER FLAG FLAG FLAG)) (QUOTE ((BUFFER 0 POINTER) (BUFFER 2 XPOINTER) (BUFFER 4 POINTER) (BUFFER 6 POINTER) (BUFFER 6 (FLAGBITS . 0)) (BUFFER 6 (FLAGBITS . 16)) (BUFFER 6 (FLAGBITS . 32)))) (QUOTE 8)) |{DSK}sybalsky>lispcore>sources>VANILLADISK.LCOM;2| (\\VANILLADISKINIT) |{DSK}sybalsky>lispcore>sources>MOD44IO.LCOM;2| |{DSK}sybalsky>lispcore>sources>ATERM.LCOM;2| (\INITBCPLDISPLAY) (MOVD? (QUOTE NILL) (QUOTE SETDISPLAYHEIGHT)) (MOVD? (QUOTE \OPENLINEBUF) (QUOTE \CREATE.TTYDISPLAYSTREAM)) (SETTOPVAL (QUOTE \DEFAULTLINEBUF) (\SETUP.DEFAULT.LINEBUF)) (\OPENLINEBUF) |{DSK}sybalsky>lispcore>sources>APRINT.LCOM;2| (SETTOPVAL (QUOTE \PNAMEDEVICE) (NCREATE (QUOTE FDEV) (\GETDEVICEFROMHOSTNAME (QUOTE NULL) T))) (PROGN (PUTPROPS NUMFORMATCODE BYTEMACRO (= . PROG1)) (PUTPROPS NUMFORMATCODE DMACRO (= . PROG1))) |{DSK}sybalsky>lispcore>sources>ABASIC.LCOM;2| (DUMMYDEF (WINDOWWORLDP NILL)) (SETTOPVAL (QUOTE \IMAX.FLOAT) (FIX MAX.FLOAT)) (SETTOPVAL (QUOTE \IMIN.FLOAT) (FIX MIN.FLOAT)) |{DSK}sybalsky>lispcore>sources>AERROR.LCOM;2| (CL:PROCLAIM (QUOTE (CL:SPECIAL *LAST-CONDITION*))) (OR (BOUNDP (QUOTE *LAST-CONDITION*)) (CL:SETQ *LAST-CONDITION* NIL)) (SET-DOCUMENTATION (QUOTE *LAST-CONDITION*) (QUOTE CL:VARIABLE) "Last condition signalled. This gets rebound to itself in nested execs.") |{DSK}sybalsky>lispcore>sources>AINTERRUPT.LCOM;2| (INTCHAR T) (SETTOPVAL (QUOTE LAST^TTIMEBOX) (CLOCK 0)) |{DSK}sybalsky>lispcore>sources>MISC.LCOM;2| (SETTOPVAL (QUOTE \GS.STR) (ALLOCSTRING 0)) (CL:PROCLAIM (QUOTE (GLOBAL MAKESYSDATE MAKESYSNAME))) |{DSK}sybalsky>lispcore>sources>BOOTSTRAP.LCOM;2| (SETTOPVAL (QUOTE EOLCHARCODE) (CHCON1 " ")) (Value of PRETTYHEADER changed from NIL to "File created ") (MAPC (QUOTE ((PUTD . /PUTD) (PUTPROP . /PUTPROP) (PUTPROP . PUT) (PUTPROP . SAVEPUT) (ADDPROP . /ADDPROP) (PUT . /PUT) (PRIN1 . LISPXPRIN1) (PRIN2 . LISPXPRIN2) (PRINT . LISPXPRINT) (TERPRI . LISPXTERPRI) (SPACES . LISPXSPACES ) (GETPROP . GETP) (SET . SAVESET) (SET . /SET) (NILL . MISSPELLED?) ( SETTOPVAL . /SETTOPVAL) (BOOTSTRAP-NAMEFIELD . NAMEFIELD) (NILL . RESETRESTORE))) (FUNCTION (LAMBDA (X) (OR (CCODEP (CDR X)) (MOVD (CAR X) (CDR X) NIL T))))) (AND (CCODEP (QUOTE BOOTSTRAP-NAMEFIELD)) (PUTD (QUOTE BOOTSTRAP-NAMEFIELD))) (RADIX 10) |{DSK}sybalsky>lispcore>sources>CMLMACROS.LCOM;2| (APPENDTOVAR COMPILERMACROPROPS DMACRO BYTEMACRO MACRO) (SETF-MACRO-FUNCTION (QUOTE CL:MACROLET) (QUOTE CL::expand-MACROLET)) (CL::SET-SETF-INVERSE (QUOTE CL:MACRO-FUNCTION) (QUOTE SETF-MACRO-FUNCTION)) |{DSK}sybalsky>lispcore>sources>CMLEVAL.LCOM;2| (PUTPROP (QUOTE INTERLISP) (QUOTE SPECIAL-FORM) (QUOTE PROGN)) (CL:PROCLAIM (QUOTE (CL:SPECIAL *CHECK-ARGUMENT-COUNTS*))) (CL:PROCLAIM (QUOTE (GLOBAL *SPECIAL-BINDING-MARK*))) (OR (BOUNDP (QUOTE *SPECIAL-BINDING-MARK*)) (CL:SETQ *SPECIAL-BINDING-MARK* "Variable specially bound. This string should never be visible")) (XCL::SET-CONSTANTP (QUOTE CL:LAMBDA-LIST-KEYWORDS) NIL) (CL:PROCLAIM (QUOTE (SI::CONSTANT CL:LAMBDA-LIST-KEYWORDS))) (XCL::SET-CONSTANTP (QUOTE CL:CALL-ARGUMENTS-LIMIT) NIL) (CL:PROCLAIM (QUOTE (SI::CONSTANT CL:CALL-ARGUMENTS-LIMIT))) (XCL::SET-CONSTANTP (QUOTE CL:LAMBDA-PARAMETERS-LIMIT) NIL) (CL:PROCLAIM (QUOTE (SI::CONSTANT CL:LAMBDA-PARAMETERS-LIMIT))) (CL::SET-PARSED-STRUCTURE (QUOTE CLOSURE) T (QUOTE (CL::PS CLOSURE MAKE-CLOSURE (FUNCTION ENVIRONMENT) CL::DATATYPE NIL NIL "CLOSURE-" ( MAKE-CLOSURE) CLOSURE-P (LAMBDA (CLOSURE STREAM) (LET ((*PRINT-RADIX* NIL)) ( CL:FORMAT STREAM "#" (\\HILOC CLOSURE) (\\LOLOC CLOSURE)))) COPY-CLOSURE NIL 0 NIL ((FUNCTION NIL T NIL (CLOSURE 0 POINTER) CLOSURE-FUNCTION) (ENVIRONMENT NIL T NIL (CLOSURE 2 POINTER) CLOSURE-ENVIRONMENT)) NIL NIL (POINTER POINTER) NIL (:ACCESSOR :PREDICATE) NIL NIL NIL))) (SI::%STRUCTURE-DECLARE-DATATYPE (QUOTE CLOSURE) (QUOTE (POINTER POINTER)) ( QUOTE ((CLOSURE 0 POINTER) (CLOSURE 2 POINTER))) 4 (QUOTE CL::STRUCTURE-OBJECT)) (PUTPROP (QUOTE CLOSURE) (QUOTE :TYPE-EXPANDER) (QUOTE CL::TYPE-EXPAND-STRUCTURE)) (CL::ESTABLISH-PREDICATE (QUOTE CLOSURE)) (CL::ESTABLISH-SETFS-AND-OPTIMIZERS (QUOTE CLOSURE)) (CL::SET-PARSED-STRUCTURE (QUOTE ENVIRONMENT) T (QUOTE (CL::PS ENVIRONMENT NIL (VARS FUNCTIONS BLOCKS TAGBODIES) CL::DATATYPE NIL NIL "ENVIRONMENT-" (( \\MAKE-ENVIRONMENT NIL)) ENVIRONMENT-P (LAMBDA (ENV STREAM DEPTH) (DECLARE ( IGNORE DEPTH)) (LET ((*PRINT-RADIX* NIL)) (CL:FORMAT STREAM "#" (\\HILOC ENV) (\\LOLOC ENV)))) \\COPY-ENVIRONMENT NIL 0 NIL ((VARS NIL T NIL (ENVIRONMENT 0 POINTER) ENVIRONMENT-VARS) (FUNCTIONS NIL T NIL (ENVIRONMENT 2 POINTER) ENVIRONMENT-FUNCTIONS) (BLOCKS NIL T NIL (ENVIRONMENT 4 POINTER) ENVIRONMENT-BLOCKS) (TAGBODIES NIL T NIL (ENVIRONMENT 6 POINTER) ENVIRONMENT-TAGBODIES)) NIL NIL (POINTER POINTER POINTER POINTER) NIL ( :ACCESSOR :PREDICATE) NIL NIL NIL))) (SI::%STRUCTURE-DECLARE-DATATYPE (QUOTE ENVIRONMENT) (QUOTE (POINTER POINTER POINTER POINTER)) (QUOTE ((ENVIRONMENT 0 POINTER) (ENVIRONMENT 2 POINTER) ( ENVIRONMENT 4 POINTER) (ENVIRONMENT 6 POINTER))) 8 (QUOTE CL::STRUCTURE-OBJECT)) (PUTPROP (QUOTE ENVIRONMENT) (QUOTE :TYPE-EXPANDER) (QUOTE CL::TYPE-EXPAND-STRUCTURE)) (CL::ESTABLISH-PREDICATE (QUOTE ENVIRONMENT)) (CL::ESTABLISH-SETFS-AND-OPTIMIZERS (QUOTE ENVIRONMENT)) (SETF-MACRO-FUNCTION (QUOTE \\MAKE-CHILD-ENVIRONMENT) (QUOTE |expand-\\MAKE-CHILD-ENVIRONMENT|)) (SETF-MACRO-FUNCTION (QUOTE ARG-REF) (QUOTE |expand-ARG-REF|)) (PUTPROP (QUOTE CL:COMPILER-LET) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-COMPILER-LET|)) (PUTPROP (QUOTE CL:MACROLET) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-MACROLET|)) (PUTPROP (QUOTE CL:FLET) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-FLET|)) (PUTPROP (QUOTE CL:LABELS) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-LABELS| )) (PUTPROP (QUOTE QUOTE) (QUOTE SPECIAL-FORM) (QUOTE CAR)) (PUTPROP (QUOTE THE) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-THE|)) (PUTPROP (QUOTE CL:EVAL-WHEN) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-EVAL-WHEN|)) (PUTPROP (QUOTE DECLARE) (QUOTE SPECIAL-FORM) (QUOTE FALSE)) (SETF-MACRO-FUNCTION (QUOTE CL:LOCALLY) (QUOTE CL::|expand-LOCALLY|)) (PUTPROP (QUOTE PROGN) (QUOTE SPECIAL-FORM) (QUOTE \\EVAL-PROGN)) (PUTPROP (QUOTE PROG1) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-PROG1|)) (SETF-MACRO-FUNCTION (QUOTE PROG1) (QUOTE CL::|expand-PROG1|)) (PUTPROP (QUOTE LET*) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-LET*|)) (PUTPROP (QUOTE LET) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-LET|)) (PUTPROP (QUOTE COND) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-COND|)) (SETF-MACRO-FUNCTION (QUOTE COND) (QUOTE CL::|expand-COND|)) (PUTPROP (QUOTE CL:IF) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-IF|)) (SETF-MACRO-FUNCTION (QUOTE AND) (QUOTE CL::|expand-AND|)) (SETF-MACRO-FUNCTION (QUOTE OR) (QUOTE CL::|expand-OR|)) (PUTPROP (QUOTE AND) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-AND|)) (PUTPROP (QUOTE OR) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-OR|)) (PUTPROP (QUOTE CL:BLOCK) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-BLOCK|)) (SETF-MACRO-FUNCTION (QUOTE RETURN) (QUOTE CL::|expand-RETURN|)) (PUTPROP (QUOTE CL:RETURN-FROM) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-RETURN-FROM|)) (PUTPROP (QUOTE CL:FUNCTION) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-FUNCTION|)) (PUTPROP (QUOTE FUNCTION) (QUOTE SPECIAL-FORM) (QUOTE |interpret-FUNCTION|)) (PUTPROP (QUOTE CL:MULTIPLE-VALUE-CALL) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-MULTIPLE-VALUE-CALL|)) (PUTPROP (QUOTE CL:MULTIPLE-VALUE-PROG1) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-MULTIPLE-VALUE-PROG1|)) (SET-DOCUMENTATION (QUOTE CL:EVALHOOK) (QUOTE CL:FUNCTION) "Evaluates Form with *Evalhook* bound to Evalhookfn and *Applyhook* bound to applyhookfn. Ignores these hooks once, for the top-level evaluation of Form.") (SET-DOCUMENTATION (QUOTE CL:APPLYHOOK) (QUOTE CL:FUNCTION) "Evaluates Form with *Evalhook* bound to Evalhookfn and *Applyhook* bound to applyhookfn. Ignores these hooks once, for the top-level evaluation of Form.") (CL:PROCLAIM (QUOTE (CL:SPECIAL *EVALHOOK*))) (OR (BOUNDP (QUOTE *EVALHOOK*)) (CL:SETQ *EVALHOOK* NIL)) (CL:PROCLAIM (QUOTE (CL:SPECIAL *APPLYHOOK*))) (OR (BOUNDP (QUOTE *APPLYHOOK*)) (CL:SETQ *APPLYHOOK* NIL)) (CL:PROCLAIM (QUOTE (CL:SPECIAL CL::*SKIP-EVALHOOK*))) (OR (BOUNDP (QUOTE CL::*SKIP-EVALHOOK*)) (CL:SETQ CL::*SKIP-EVALHOOK* NIL)) (SET-DOCUMENTATION (QUOTE CL::*SKIP-EVALHOOK*) (QUOTE CL:VARIABLE) "Used with non-null *EVALHOOK* to suppress the use of the hook-function for one level of eval.") (CL:PROCLAIM (QUOTE (CL:SPECIAL CL::*SKIP-APPLYHOOK*))) (OR (BOUNDP (QUOTE CL::*SKIP-APPLYHOOK*)) (CL:SETQ CL::*SKIP-APPLYHOOK* NIL)) (SET-DOCUMENTATION (QUOTE CL::*SKIP-APPLYHOOK*) (QUOTE CL:VARIABLE) "Used with non-null *APPLYHOOK* to suppress the use of the hook function for one level of eval.") (CL::SET-SETF-INVERSE (QUOTE CL:CONSTANTP) (QUOTE XCL::SET-CONSTANTP)) (PUTPROP (QUOTE CL:SETQ) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-SETQ|)) (PUTPROP (QUOTE SETQ) (QUOTE SPECIAL-FORM) (QUOTE |interpret-SETQ|)) (SETF-MACRO-FUNCTION (QUOTE SETQ) (QUOTE |expand-SETQ|)) (SETF-MACRO-FUNCTION (QUOTE CL:PSETQ) (QUOTE CL::|expand-PSETQ|)) (SETF-MACRO-FUNCTION (QUOTE SETQQ) (QUOTE |expand-SETQQ|)) (PUTPROP (QUOTE CL:CATCH) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-CATCH|)) (PUTPROP (QUOTE CL:THROW) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-THROW|)) (PUTPROP (QUOTE CL:UNWIND-PROTECT) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-UNWIND-PROTECT|)) (SETF-MACRO-FUNCTION (QUOTE PROG) (QUOTE CL::|expand-PROG|)) (SETF-MACRO-FUNCTION (QUOTE PROG*) (QUOTE CL::|expand-PROG*|)) (PUTPROP (QUOTE GO) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-GO|)) (PUTPROP (QUOTE CL:TAGBODY) (QUOTE SPECIAL-FORM) (QUOTE CL::|interpret-TAGBODY|)) (CL:PROCLAIM (QUOTE (CL:SPECIAL *MACROEXPAND-HOOK*))) (CL::SET-SETF-INVERSE (QUOTE XCL::DECL-SPECIFIER-P) (QUOTE XCL::SET-DECL-SPECIFIER-P)) (CL::SET-SETF-INVERSE (QUOTE XCL::GLOBALLY-NOTINLINE-P) (QUOTE XCL::SET-GLOBALLY-NOTINLINE-P)) |{DSK}sybalsky>lispcore>sources>CMLPROGV.LCOM;4| (PUTPROP (QUOTE CL:PROGV) (QUOTE SPECIAL-FORM) (QUOTE CL::interpret-PROGV)) |{DSK}sybalsky>lispcore>sources>CMLSPECIALFORMS.LCOM;2| (IL:SETF-MACRO-FUNCTION (QUOTE LOOP) (QUOTE |expand-LOOP|)) (IL:PUTPROP (QUOTE IDENTITY) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |optimize-IDENTITY|) (GET (QUOTE IDENTITY) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:SETF-MACRO-FUNCTION (QUOTE UNLESS) (QUOTE |expand-UNLESS|)) (IL:SETF-MACRO-FUNCTION (QUOTE WHEN) (QUOTE |expand-WHEN|)) (IL:SETF-MACRO-FUNCTION (QUOTE FLET) (QUOTE |expand-FLET|)) (IL:SETF-MACRO-FUNCTION (QUOTE LABELS) (QUOTE |expand-LABELS|)) (IL:SETF-MACRO-FUNCTION (QUOTE IL:SELECTQ) (QUOTE IL:|expand-SELECTQ|)) (IL:SETF-MACRO-FUNCTION (QUOTE DO) (QUOTE |expand-DO|)) (IL:SETF-MACRO-FUNCTION (QUOTE DO*) (QUOTE |expand-DO*|)) (IL:SETF-MACRO-FUNCTION (QUOTE DOLIST) (QUOTE |expand-DOLIST|)) (IL:SETF-MACRO-FUNCTION (QUOTE DOTIMES) (QUOTE |expand-DOTIMES|)) (IL:SETF-MACRO-FUNCTION (QUOTE CASE) (QUOTE |expand-CASE|)) (Property IL:* of IL:MACRO has been changed) (PROCLAIM (QUOTE (SPECIAL IL:FILEPKGFLG IL:DFNFLG *READTABLE*))) (PROCLAIM (CONS (QUOTE SPECIAL) IL:SYSSPECVARS)) |{DSK}sybalsky>lispcore>sources>LLRESTART.LCOM;2| (CL::SET-PARSED-STRUCTURE (QUOTE RESTART) T (QUOTE (CL::PS RESTART MAKE-RESTART (IL:NAME IL:TAG IL:SELECTOR IL:TEST IL:REPORT INTERACTIVE-FN FUNCTION) CL::DATATYPE NIL NIL "RESTART-" (MAKE-RESTART) RESTART-P %RESTART-PRINTER COPY-RESTART NIL 0 NIL ((IL:NAME NIL T NIL (RESTART 0 IL:POINTER) RESTART-NAME) (IL:TAG NIL T NIL (RESTART 2 IL:POINTER) RESTART-TAG) (IL:SELECTOR NIL T NIL (RESTART 4 IL:POINTER) RESTART-SELECTOR) (IL:TEST NIL T NIL (RESTART 6 IL:POINTER) RESTART-TEST) (IL:REPORT (QUOTE %RESTART-DEFAULT-REPORTER) T NIL (RESTART 8 IL:POINTER) RESTART-REPORT) ( INTERACTIVE-FN NIL T NIL (RESTART 10 IL:POINTER) RESTART-INTERACTIVE-FN) ( FUNCTION NIL T NIL (RESTART 12 IL:POINTER) RESTART-FUNCTION)) NIL NIL ( IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER) NIL (:ACCESSOR :PREDICATE) NIL NIL NIL))) (SI::%STRUCTURE-DECLARE-DATATYPE (QUOTE RESTART) (QUOTE (IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER)) (QUOTE ((RESTART 0 IL:POINTER) (RESTART 2 IL:POINTER) (RESTART 4 IL:POINTER) (RESTART 6 IL:POINTER) (RESTART 8 IL:POINTER) (RESTART 10 IL:POINTER) (RESTART 12 IL:POINTER))) 14 (QUOTE CL::STRUCTURE-OBJECT)) (IL:PUTPROP (QUOTE RESTART) (QUOTE :TYPE-EXPANDER) (QUOTE CL::TYPE-EXPAND-STRUCTURE)) (CL::ESTABLISH-PREDICATE (QUOTE RESTART)) (CL::ESTABLISH-SETFS-AND-OPTIMIZERS (QUOTE RESTART)) |{DSK}sybalsky>lispcore>sources>LLERROR.LCOM;2| (MOVD? (QUOTE SIMPLE-FORMAT) (QUOTE CL:FORMAT)) (CL::SET-PARSED-STRUCTURE (QUOTE PROCEED-CASE) T (QUOTE (CL::PS PROCEED-CASE MAKE-PROCEED-CASE (NAME TAG SELECTOR TEST REPORT CONDITIONS::INTERACTIVE-FN CL:FUNCTION) CL::DATATYPE NIL CONDITIONS:RESTART "%PROCEED-CASE-" ( MAKE-PROCEED-CASE) PROCEED-CASE-P CONDITIONS::%RESTART-PRINTER COPY-PROCEED-CASE NIL 0 NIL ((NAME NIL T NIL (PROCEED-CASE 0 POINTER) %PROCEED-CASE-NAME) (TAG NIL T NIL (PROCEED-CASE 2 POINTER) %PROCEED-CASE-TAG ) (SELECTOR NIL T NIL (PROCEED-CASE 4 POINTER) %PROCEED-CASE-SELECTOR) (TEST NIL T NIL (PROCEED-CASE 6 POINTER) %PROCEED-CASE-TEST) (REPORT (QUOTE CONDITIONS::%RESTART-DEFAULT-REPORTER) T NIL (PROCEED-CASE 8 POINTER) %PROCEED-CASE-REPORT) (CONDITIONS::INTERACTIVE-FN NIL T NIL (PROCEED-CASE 10 POINTER) %PROCEED-CASE-INTERACTIVE-FN) (CL:FUNCTION NIL T NIL (PROCEED-CASE 12 POINTER) %PROCEED-CASE-FUNCTION)) NIL NIL (POINTER POINTER POINTER POINTER POINTER POINTER POINTER) NIL (:ACCESSOR :PREDICATE) NIL NIL NIL))) (SI::%STRUCTURE-DECLARE-DATATYPE (QUOTE PROCEED-CASE) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER)) (QUOTE ((PROCEED-CASE 0 POINTER) ( PROCEED-CASE 2 POINTER) (PROCEED-CASE 4 POINTER) (PROCEED-CASE 6 POINTER) ( PROCEED-CASE 8 POINTER) (PROCEED-CASE 10 POINTER) (PROCEED-CASE 12 POINTER))) 14 (QUOTE CONDITIONS:RESTART)) (PUTPROP (QUOTE PROCEED-CASE) (QUOTE :TYPE-EXPANDER) (QUOTE CL::TYPE-EXPAND-STRUCTURE)) (CL::ESTABLISH-PREDICATE (QUOTE PROCEED-CASE)) (CL::ESTABLISH-SETFS-AND-OPTIMIZERS (QUOTE PROCEED-CASE)) (CL:PROCLAIM (QUOTE (GLOBAL SI::NLSETQ-PROCEED-CASE))) (SETTOPVAL (QUOTE SI::NLSETQ-PROCEED-CASE) (MAKE-PROCEED-CASE :NAME (QUOTE ABORT) :SELECTOR 0 :TEST NIL :REPORT "Unwind to ERRORSET")) (SET-DOCUMENTATION (QUOTE SI::NLSETQ-PROCEED-CASE) (QUOTE CL:VARIABLE) "The prototype proceed-case object for NLSETQ.") |{DSK}sybalsky>lispcore>sources>LLSYMBOL.LCOM;2| (IL:MOVD (QUOTE IL:GETPROPLIST) (QUOTE SYMBOL-PLIST)) (PROCLAIM (QUOTE (SPECIAL *GENSYM-COUNTER*))) (OR (BOUNDP (QUOTE *GENSYM-COUNTER*)) (SETQ *GENSYM-COUNTER* 0)) (PROCLAIM (QUOTE (SPECIAL *GENSYM-PREFIX*))) (OR (BOUNDP (QUOTE *GENSYM-PREFIX*)) (SETQ *GENSYM-PREFIX* "G")) (PROCLAIM (QUOTE (SPECIAL *GENTEMP-COUNTER*))) (OR (BOUNDP (QUOTE *GENTEMP-COUNTER*)) (SETQ *GENTEMP-COUNTER* 0)) |{DSK}sybalsky>lispcore>sources>LLPACKAGE.LCOM;3| (IL:SETF-MACRO-FUNCTION (QUOTE IL:\\FATCHARSEENP) (QUOTE IL:|expand-\\FATCHARSEENP|)) (IL:SETF-MACRO-FUNCTION (QUOTE IL:\\PACKAGIFY) (QUOTE IL:|expand-\\PACKAGIFY| )) (IL:SET-DOCUMENTATION (QUOTE IL:\\PACKAGIFY) (QUOTE FUNCTION) "If OBJ isn't already a package, turn the symbol or string into the package of that name.") (IL:SETF-MACRO-FUNCTION (QUOTE IL:\\STRING-EQUALBASE) (QUOTE IL:|expand-\\STRING-EQUALBASE|)) (IL:SET-DOCUMENTATION (QUOTE IL:\\STRING-EQUALBASE) (QUOTE FUNCTION) "Compare a string to another string, with the second given in base offset length form.") (IL:SETF-MACRO-FUNCTION (QUOTE IL:NUMERIC-UPCASE) (QUOTE IL:|expand-NUMERIC-UPCASE|)) (IL:SET-DOCUMENTATION (QUOTE IL:APROPOS-SEARCH) (QUOTE FUNCTION) "The symbol to substring comparison macro for APROPOS and APROPOS-LIST. The string is assumed to already be uppercase.") (SET-PARSED-STRUCTURE (QUOTE PACKAGE-HASHTABLE) T (QUOTE (PS PACKAGE-HASHTABLE %MAKE-PACKAGE-HASHTABLE (TABLE HASH SIZE FREE DELETED) DATATYPE NIL NIL "PACKAGE-HASHTABLE-" (%MAKE-PACKAGE-HASHTABLE) PACKAGE-HASHTABLE-P PRINT-PACKAGE-HASHTABLE NIL NIL 0 NIL ((TABLE NIL T NIL ( PACKAGE-HASHTABLE 0 IL:POINTER) PACKAGE-HASHTABLE-TABLE) (HASH NIL T NIL ( PACKAGE-HASHTABLE 2 IL:POINTER) PACKAGE-HASHTABLE-HASH) (SIZE NIL T NIL ( PACKAGE-HASHTABLE 4 IL:POINTER) PACKAGE-HASHTABLE-SIZE) (FREE NIL T NIL ( PACKAGE-HASHTABLE 6 IL:POINTER) PACKAGE-HASHTABLE-FREE) (DELETED NIL T NIL ( PACKAGE-HASHTABLE 8 IL:POINTER) PACKAGE-HASHTABLE-DELETED)) NIL "Packages are implemented using a special kind of hashtable (this one). It is an open hashtable with a parallel 8-bit I-vector of hash-codes. The primary purpose of the hash for each entry is to reduce paging by allowing collisions and misses to be detected without paging in the symbol and pname for an entry. If the hash for an entry doesn't match that for the symbol that we are looking for, then we can go on without touching the symbol, pname, or even hastable vector. It turns out that, contrary to my expectations, paging is a very important consideration the design of the package representation. Using a similar scheme without the entry hash, the fasloader was spending more than half its time paging in INTERN. The hash code also indicates the status of an entry. If it zero, the the entry is unused. If it is one, then it is deleted. Double-hashing is used for collision resolution." (IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER) NIL (:ACCESSOR :PREDICATE) NIL NIL NIL)) ) (SI::%STRUCTURE-DECLARE-DATATYPE (QUOTE PACKAGE-HASHTABLE) (QUOTE (IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER)) (QUOTE ((PACKAGE-HASHTABLE 0 IL:POINTER) (PACKAGE-HASHTABLE 2 IL:POINTER) (PACKAGE-HASHTABLE 4 IL:POINTER) (PACKAGE-HASHTABLE 6 IL:POINTER) (PACKAGE-HASHTABLE 8 IL:POINTER))) 10 ( QUOTE STRUCTURE-OBJECT)) (IL:PUTPROP (QUOTE PACKAGE-HASHTABLE) (QUOTE :TYPE-EXPANDER) (QUOTE TYPE-EXPAND-STRUCTURE)) (ESTABLISH-PREDICATE (QUOTE PACKAGE-HASHTABLE)) (ESTABLISH-SETFS-AND-OPTIMIZERS (QUOTE PACKAGE-HASHTABLE)) (IL:SET-DOCUMENTATION (QUOTE PACKAGE-HASHTABLE) (QUOTE STRUCTURE) "Packages are implemented using a special kind of hashtable (this one). It is an open hashtable with a parallel 8-bit I-vector of hash-codes. The primary purpose of the hash for each entry is to reduce paging by allowing collisions and misses to be detected without paging in the symbol and pname for an entry. If the hash for an entry doesn't match that for the symbol that we are looking for, then we can go on without touching the symbol, pname, or even hastable vector. It turns out that, contrary to my expectations, paging is a very important consideration the design of the package representation. Using a similar scheme without the entry hash, the fasloader was spending more than half its time paging in INTERN. The hash code also indicates the status of an entry. If it zero, the the entry is unused. If it is one, then it is deleted. Double-hashing is used for collision resolution.") (SET-PARSED-STRUCTURE (QUOTE PACKAGE) T (QUOTE (PS PACKAGE %MAKE-PACKAGE ( INDEX TABLES NAME NAMESYMBOL NICKNAMES USE-LIST USED-BY-LIST EXTERNAL-ONLY INTERNAL-SYMBOLS EXTERNAL-SYMBOLS SHADOWING-SYMBOLS) DATATYPE NIL NIL %PACKAGE- (%MAKE-PACKAGE) PACKAGEP PRINT-PACKAGE COPY-PACKAGE NIL 0 NIL (( INDEX NIL T NIL (PACKAGE 0 IL:POINTER) %PACKAGE-INDEX) (TABLES (LIST NIL) T NIL (PACKAGE 2 IL:POINTER) %PACKAGE-TABLES) (NAME NIL T NIL (PACKAGE 4 IL:POINTER) %PACKAGE-NAME) (NAMESYMBOL NIL T NIL (PACKAGE 6 IL:POINTER) %PACKAGE-NAMESYMBOL) (NICKNAMES NIL T NIL (PACKAGE 8 IL:POINTER) %PACKAGE-NICKNAMES) (USE-LIST NIL T NIL (PACKAGE 10 IL:POINTER) %PACKAGE-USE-LIST) (USED-BY-LIST NIL T NIL (PACKAGE 12 IL:POINTER) %PACKAGE-USED-BY-LIST) (EXTERNAL-ONLY NIL T NIL (PACKAGE 14 IL:POINTER) %PACKAGE-EXTERNAL-ONLY) (INTERNAL-SYMBOLS NIL T NIL (PACKAGE 16 IL:POINTER) %PACKAGE-INTERNAL-SYMBOLS) (EXTERNAL-SYMBOLS NIL T NIL (PACKAGE 18 IL:POINTER ) %PACKAGE-EXTERNAL-SYMBOLS) (SHADOWING-SYMBOLS NIL T NIL (PACKAGE 20 IL:POINTER) %PACKAGE-SHADOWING-SYMBOLS)) NIL NIL (IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER) NIL (:ACCESSOR :PREDICATE) NIL NIL NIL))) (SI::%STRUCTURE-DECLARE-DATATYPE (QUOTE PACKAGE) (QUOTE (IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER IL:POINTER)) (QUOTE ((PACKAGE 0 IL:POINTER) (PACKAGE 2 IL:POINTER) (PACKAGE 4 IL:POINTER) (PACKAGE 6 IL:POINTER) (PACKAGE 8 IL:POINTER) ( PACKAGE 10 IL:POINTER) (PACKAGE 12 IL:POINTER) (PACKAGE 14 IL:POINTER) ( PACKAGE 16 IL:POINTER) (PACKAGE 18 IL:POINTER) (PACKAGE 20 IL:POINTER))) 22 ( QUOTE STRUCTURE-OBJECT)) (IL:PUTPROP (QUOTE PACKAGE) (QUOTE :TYPE-EXPANDER) (QUOTE TYPE-EXPAND-STRUCTURE)) (ESTABLISH-PREDICATE (QUOTE PACKAGE)) (ESTABLISH-SETFS-AND-OPTIMIZERS (QUOTE PACKAGE)) (IL:SET-DOCUMENTATION (QUOTE IL:MAKE-PACKAGE-HASHTABLE) (QUOTE FUNCTION) "Make a package hashtable having a prime number of entries at least as great as (/ size package-rehash-threshold). If Res is supplied, then it is destructively modified to produce the result. This is useful when changing the size, since there are many pointers to the hashtable.") (PROCLAIM (QUOTE (SPECIAL *PACKAGE*))) (OR (BOUNDP (QUOTE *PACKAGE*)) (SETQ *PACKAGE* NIL)) (IL:SET-DOCUMENTATION (QUOTE *PACKAGE*) (QUOTE VARIABLE) "The current package, in which read symbols are intern'ed.") (PROCLAIM (QUOTE (SPECIAL XCL::*UNSAFE-TO-DELETE-PACKAGE-NAMES*))) (OR (BOUNDP (QUOTE XCL::*UNSAFE-TO-DELETE-PACKAGE-NAMES*)) (SETQ XCL::*UNSAFE-TO-DELETE-PACKAGE-NAMES* (QUOTE ("LISP" "INTERLISP" "XEROX-COMMON-LISP")))) (IL:SET-DOCUMENTATION (QUOTE XCL::*UNSAFE-TO-DELETE-PACKAGE-NAMES*) (QUOTE VARIABLE) "Packages whose deletion requires confirmation.") (PROCLAIM (QUOTE (XCL:GLOBAL IL:*LISP-PACKAGE*))) (OR (BOUNDP (QUOTE IL:*LISP-PACKAGE*)) (SETQ IL:*LISP-PACKAGE* NIL)) (IL:SET-DOCUMENTATION (QUOTE IL:*LISP-PACKAGE*) (QUOTE VARIABLE) "Global for internal references to the lisp package.") (PROCLAIM (QUOTE (XCL:GLOBAL IL:*KEYWORD-PACKAGE*))) (OR (BOUNDP (QUOTE IL:*KEYWORD-PACKAGE*)) (SETQ IL:*KEYWORD-PACKAGE* NIL)) (IL:SET-DOCUMENTATION (QUOTE IL:*KEYWORD-PACKAGE*) (QUOTE VARIABLE) "Global for internal references to the keyword package.") (PROCLAIM (QUOTE (XCL:GLOBAL IL:*INTERLISP-PACKAGE*))) (OR (BOUNDP (QUOTE IL:*INTERLISP-PACKAGE*)) (SETQ IL:*INTERLISP-PACKAGE* NIL) ) (IL:SET-DOCUMENTATION (QUOTE IL:*INTERLISP-PACKAGE*) (QUOTE VARIABLE) "Global for internal references to the interlisp package.") (XCL::SET-CONSTANTP (QUOTE IL:HASHTABLE-SIZE-LIMIT) NIL) (PROCLAIM (QUOTE (SI::CONSTANT IL:HASHTABLE-SIZE-LIMIT))) (IL:SET-DOCUMENTATION (QUOTE IL:HASHTABLE-SIZE-LIMIT) (QUOTE VARIABLE) "The maximum (inclusive, prime) limit to the size of a hashtable.") (PROCLAIM (QUOTE (SPECIAL IL:PACKAGE-REHASH-THRESHOLD))) (IL:SET-DOCUMENTATION (QUOTE IL:PACKAGE-REHASH-THRESHOLD) (QUOTE VARIABLE) "The maximum density allowed in a package hashtable") (XCL::SET-CONSTANTP (QUOTE IL:PRIME-HASHTABLE-SIZES) NIL) (PROCLAIM (QUOTE (SI::CONSTANT IL:PRIME-HASHTABLE-SIZES))) (IL:SET-DOCUMENTATION (QUOTE IL:PRIME-HASHTABLE-SIZES) (QUOTE VARIABLE) "Some valid (prime) hashtable sizes.") (IL:SET-DOCUMENTATION (QUOTE MAKE-SYMBOL) (QUOTE FUNCTION) "Make an uninterned symbol.") (PROCLAIM (QUOTE (XCL:GLOBAL IL:*PACKAGE-FROM-NAME*))) (OR (BOUNDP (QUOTE IL:*PACKAGE-FROM-NAME*)) (SETQ IL:*PACKAGE-FROM-NAME* ( IL:HASHARRAY 255 (QUOTE IL:ERROR) (QUOTE IL:STRINGHASHBITS) (QUOTE IL:STREQUAL)))) (IL:SET-DOCUMENTATION (QUOTE IL:*PACKAGE-FROM-NAME*) (QUOTE VARIABLE) "An equal hashtable from package names to packages.") (PROCLAIM (QUOTE (XCL:GLOBAL IL:*PACKAGE-FROM-INDEX*))) (OR (BOUNDP (QUOTE IL:*PACKAGE-FROM-INDEX*)) (SETQ IL:*PACKAGE-FROM-INDEX* ( MAKE-ARRAY 256 (QUOTE :INITIAL-ELEMENT) NIL))) (IL:SET-DOCUMENTATION (QUOTE IL:*PACKAGE-FROM-INDEX*) (QUOTE VARIABLE) "Index to package converter.") (XCL::SET-CONSTANTP (QUOTE XCL:*TOTAL-PACKAGES-LIMIT*) NIL) (PROCLAIM (QUOTE (SI::CONSTANT XCL:*TOTAL-PACKAGES-LIMIT*))) (IL:SET-DOCUMENTATION (QUOTE XCL:*TOTAL-PACKAGES-LIMIT*) (QUOTE VARIABLE) "The total number of packages that the system may have (excluding the 'uninterned' package).") (XCL::SET-CONSTANTP (QUOTE IL:*UNINTERNED-PACKAGE-INDEX*) NIL) (PROCLAIM (QUOTE (SI::CONSTANT IL:*UNINTERNED-PACKAGE-INDEX*))) (IL:SET-DOCUMENTATION (QUOTE IL:*UNINTERNED-PACKAGE-INDEX*) (QUOTE VARIABLE) "Package index value for uninterned symbols. The function \\PKG-FIND-FREE-PACKAGE-INDEX and the constant *UNINTERNED-PACKAGE-INDEX* are arranged so that SYMBOL-PACKAGE can find NIL in the index vector and NIL can also be the free slot marker. *UNINTERNED-PACKAGE-INDEX* must be zero, otherwise change \\PKG-FIND-FREE-PACKAGE-INDEX .") (IL:SET-DOCUMENTATION (QUOTE IL:\\PKG-FIND-FREE-PACKAGE-INDEX) (QUOTE FUNCTION) "Return the next free table index for a package. Starts counting at 1 because 0 is for uninterned symbols.") (IL:SETF-MACRO-FUNCTION (QUOTE IL:SYMBOL-HASH) (QUOTE IL:|expand-SYMBOL-HASH| )) (IL:SET-DOCUMENTATION (QUOTE IL:SYMBOL-HASH) (QUOTE FUNCTION) "Returns the atom hash of the given string") (IL:SETF-MACRO-FUNCTION (QUOTE IL:REHASH-FACTOR) (QUOTE IL:|expand-REHASH-FACTOR|)) (IL:SETF-MACRO-FUNCTION (QUOTE IL:SYMBOL-HASH-REPROBE) (QUOTE IL:|expand-SYMBOL-HASH-REPROBE|)) (IL:SETF-MACRO-FUNCTION (QUOTE IL:ENTRY-HASH) (QUOTE IL:|expand-ENTRY-HASH|)) (IL:SET-DOCUMENTATION (QUOTE IL:ENTRY-HASH) (QUOTE FUNCTION) "Compute a number from the sxhash of the pname and the length which must be between 2 and 255.") (IL:SETF-MACRO-FUNCTION (QUOTE IL:COUNT-PACKAGE-HASHTABLE) (QUOTE IL:|expand-COUNT-PACKAGE-HASHTABLE|)) (IL:SET-DOCUMENTATION (QUOTE IL:COUNT-PACKAGE-HASHTABLE) (QUOTE FUNCTION) "Return two values: free elements and total size.") (IL:SET-DOCUMENTATION (QUOTE IL:ENTER-NEW-NICKNAMES) (QUOTE FUNCTION) "Enter any new Nicknames for Package into *package-names*. If there is a conflict then give the user a chance to do something about it.") (IL:SET-DOCUMENTATION (QUOTE IL:MAKE-PRIME-HASHTABLE-SIZE) (QUOTE FUNCTION) "Find an appropriate size based on the expected number of elements, N, the rehash threshold and the limit on array size.") (IL:SET-DOCUMENTATION (QUOTE MAKE-PACKAGE) (QUOTE FUNCTION) "Check for package name conflicts in name and nicknames, then make the package. Do a use-package for each thing in the use list so that checking for conflicting exports among used packages is done.") (IL:SET-DOCUMENTATION (QUOTE FIND-PACKAGE) (QUOTE FUNCTION) "Given a name, find the package with that name or nickname") (IL:SET-DOCUMENTATION (QUOTE USE-PACKAGE) (QUOTE FUNCTION) "Make a package use (inherit) symbols from others. Checks for name-conflicts.") (IL:SET-DOCUMENTATION (QUOTE IN-PACKAGE) (QUOTE FUNCTION) "Like Make-Package, but also makes the created package current.") (IL:SET-DOCUMENTATION (QUOTE XCL:PKG-GOTO) (QUOTE FUNCTION) "Like in-package, but confirms creation of new packages.") (IL:SET-DOCUMENTATION (QUOTE RENAME-PACKAGE) (QUOTE FUNCTION) "Change the name if we can, blast any old nicknames and then add in any new ones.") (IL:SET-DOCUMENTATION (QUOTE EXPORT) (QUOTE FUNCTION) "Make the symbols external in the package.") (IL:SET-DOCUMENTATION (QUOTE UNEXPORT) (QUOTE FUNCTION) "Check that all symbols are available, then move from external to internal.") (IL:SET-DOCUMENTATION (QUOTE IMPORT) (QUOTE FUNCTION) "Make the symbol internal in the package, noting name conflicts.") (IL:SET-DOCUMENTATION (QUOTE SHADOWING-IMPORT) (QUOTE FUNCTION) "If a conflicting symbol is present, unintern it, otherwise just stick the symbol in.") (IL:SET-DOCUMENTATION (QUOTE SHADOW) (QUOTE FUNCTION) "Hide the existing symbols with new ones in the package.") (IL:SET-DOCUMENTATION (QUOTE UNUSE-PACKAGE) (QUOTE FUNCTION) "Remove some packages from the use (inherit) list of another package.") (IL:SET-DOCUMENTATION (QUOTE LIST-ALL-PACKAGES) (QUOTE FUNCTION) "Return a list of the names of all existing packages.") (IL:SET-DOCUMENTATION (QUOTE IL:ADD-SYMBOL) (QUOTE FUNCTION) "Add a symbol to a package hashtable. The symbol is assumed not to be present.") (IL:SETF-MACRO-FUNCTION (QUOTE IL:WITH-SYMBOL) (QUOTE IL:|expand-WITH-SYMBOL| )) (IL:SET-DOCUMENTATION (QUOTE IL:WITH-SYMBOL) (QUOTE FUNCTION) "Find where the symbol named String is stored in Table. Index-Var is bound to the index, or NIL if it is not present. Symbol-Var is bound to the symbol. Length and Hash are the length and sxhash of String. Entry-Hash is the entry-hash of the string and length.") (IL:SET-DOCUMENTATION (QUOTE IL:INTERN*) (QUOTE FUNCTION) "If the symbol doesn't exist then create it, special-casing the keyword package.") (IL:SET-DOCUMENTATION (QUOTE IL:FIND-SYMBOL*) (QUOTE FUNCTION) "Check internal and external symbols, then scan down the list of hashtables for inherited symbols. When an inherited symbol is found pull that table to the beginning of the list.") (IL:SET-DOCUMENTATION (QUOTE INTERN) (QUOTE FUNCTION) "Intern the name in the package, returning a symbol.") (IL:SET-DOCUMENTATION (QUOTE FIND-SYMBOL) (QUOTE FUNCTION) "Find a symbol with the given name in a package.") (IL:SET-DOCUMENTATION (QUOTE IL:NUKE-SYMBOL) (QUOTE FUNCTION) "Mark a symbol in a package-hashtable deleted") (IL:SET-DOCUMENTATION (QUOTE UNINTERN) (QUOTE FUNCTION) "Remove a symbol from a package. If uninterning a shadowing symbol, then a name conflict can result, otherwise just nuke the symbol.") (IL:SET-DOCUMENTATION (QUOTE IL:MOBY-UNINTERN) (QUOTE FUNCTION) "Like Unintern, but if symbol is inherited chases down the package it is inherited from and uninterns it there. Used for name-conflict resolution. Shadowing symbols are not uninterned since they do not cause conflicts.") (IL:SETF-MACRO-FUNCTION (QUOTE DO-EXTERNAL-SYMBOLS) (QUOTE |expand-DO-EXTERNAL-SYMBOLS|)) (IL:SET-DOCUMENTATION (QUOTE DO-EXTERNAL-SYMBOLS) (QUOTE FUNCTION) "Do-External-Symbols (Var [Package [Result-Form]]) {Declaration}* {Tag | Statement}* Executes the Forms once for each external symbol in the given Package with Var bound to the current symbol.") (IL:SETF-MACRO-FUNCTION (QUOTE XCL:DO-LOCAL-SYMBOLS) (QUOTE XCL::|expand-DO-LOCAL-SYMBOLS|)) (IL:SET-DOCUMENTATION (QUOTE XCL:DO-LOCAL-SYMBOLS) (QUOTE FUNCTION) "Do-Local-Symbols (Var [Package [Result-Form]]) {Declaration}* {Tag | Statement}* Executes the Forms at least once for each symbol actually in the given Package with Var bound to the current symbol.") (IL:SETF-MACRO-FUNCTION (QUOTE XCL:DO-INTERNAL-SYMBOLS) (QUOTE XCL::|expand-DO-INTERNAL-SYMBOLS|)) (IL:SET-DOCUMENTATION (QUOTE XCL:DO-INTERNAL-SYMBOLS) (QUOTE FUNCTION) "Do-Internal-Symbols (Var [Package [Result-Form]]) {Declaration}* {Tag | Statement}* Executes the Forms at least once for each symbol actually in the given Package and not exported with Var bound to the current symbol.") (IL:SETF-MACRO-FUNCTION (QUOTE DO-SYMBOLS) (QUOTE |expand-DO-SYMBOLS|)) (IL:SET-DOCUMENTATION (QUOTE DO-SYMBOLS) (QUOTE FUNCTION) "Do-Symbols (Var [Package [Result-Form]]) {Declaration}* {Tag | Statement}* Executes the Forms at least once for each symbol accessible in the given Package with Var bound to the current symbol.") (IL:SETF-MACRO-FUNCTION (QUOTE DO-ALL-SYMBOLS) (QUOTE |expand-DO-ALL-SYMBOLS| )) (IL:SET-DOCUMENTATION (QUOTE DO-ALL-SYMBOLS) (QUOTE FUNCTION) "Do-All-Symbols (Var [Package [Result-Form]]) {Declaration}* {Tag | Statement}* Executes the Forms once for each symbol in each package with Var bound to the current symbol.") (IL:SET-DOCUMENTATION (QUOTE FIND-ALL-SYMBOLS) (QUOTE FUNCTION) "Find every symbol in all packages with the given name.") (IL:SET-DOCUMENTATION (QUOTE IL:BRIEFLY-DESCRIBE-SYMBOL) (QUOTE FUNCTION) "Short form description of a symbol.") (IL:SET-DOCUMENTATION (QUOTE APROPOS) (QUOTE FUNCTION) "Find all symbols matching the string pattern in the given (or current) package. The search can be limited to external symbols only. Prints a short description of each found symbols.") (IL:SET-DOCUMENTATION (QUOTE APROPOS-LIST) (QUOTE FUNCTION) "Find all symbols matching the string pattern in the given (or current) package. The search can be limited to external symbols only. Returns a list of the matching symbols.") (IL:SET-DOCUMENTATION (QUOTE IL:FIND-EXACT-SYMBOL) (QUOTE FUNCTION) "True if name of SYMBOL when looked up in PACKAGE is found and is exactly SYMBOL") |{DSK}sybalsky>lispcore>sources>PACKAGE-STARTUP.LCOM;2| (MOVD? (QUOTE ERROR-MISSING-EXTERNAL-SYMBOL) (QUOTE RESOLVE-MISSING-EXTERNAL-SYMBOL)) (MOVD? (QUOTE ERROR) (QUOTE RESOLVE-MISSING-PACKAGE)) (MOVD? (QUOTE ERROR) (QUOTE RESOLVE-USE-PACKAGE-CONFLICT)) (MOVD? (QUOTE ERROR) (QUOTE RESOLVE-EXPORT-CONFLICT)) (MOVD? (QUOTE ERROR) (QUOTE RESOLVE-EXPORT-MISSING-CONFLICT)) (MOVD? (QUOTE ERROR) (QUOTE RESOLVE-IMPORT-CONFLICT)) (MOVD? (QUOTE ERROR) (QUOTE RESOLVE-UNINTERN-CONFLICT)) (MOVD? (QUOTE RETURN-FIRST-OF-THREE) (QUOTE RESOLVE-READER-CONFLICT)) (SET-DOCUMENTATION (QUOTE CHECK-SYMBOL-NAMESTRING) (QUOTE CL:FUNCTION) "Check whether a symbol would rather be in a package.") (SET-DOCUMENTATION (QUOTE \\NEW.READ.SYMBOL) (QUOTE CL:FUNCTION) "Read a number or symbol from the string defined by BASE OFFSET LEN FATP PACKAGE is NIL if no package was specified, a package object or a string if an unknown package was typed (causes error). EXTERNALP is true if symbol was typed with one colon, which requires that the symbol exist and be external (unless it was a keyword). NONNUMERICP is true if we know the symbol is not a number, e.g., some characters in it were escaped.") (SET-DOCUMENTATION (QUOTE \\NEW.MKATOM) (QUOTE CL:FUNCTION) "A version of \\MKATOM which makes symbols in the Interlisp package instead of the old litatom table.") (CL:PROCLAIM (QUOTE (CL:SPECIAL LITATOM-PACKAGE-CONVERSION-ENABLED))) (OR (BOUNDP (QUOTE LITATOM-PACKAGE-CONVERSION-ENABLED)) (CL:SETQ LITATOM-PACKAGE-CONVERSION-ENABLED NIL)) (CL:PROCLAIM (QUOTE (CL:SPECIAL CMLSYMBOLS.VARS))) (CL:PROCLAIM (QUOTE (CL:SPECIAL CMLSYMBOLS.FNNAMES))) (CL:PROCLAIM (QUOTE (CL:SPECIAL CMLSYMBOLS.DECLARATORS))) (CL:PROCLAIM (QUOTE (CL:SPECIAL CMLSYMBOLS.TYPENAMES))) (CL:PROCLAIM (QUOTE (CL:SPECIAL CMLSYMBOLS.MACROS))) (CL:PROCLAIM (QUOTE (CL:SPECIAL CMLSYMBOLS.SPECIALFORMS))) (CL:PROCLAIM (QUOTE (CL:SPECIAL CMLSYMBOLS.LAMBDA.LIST.KEYWORDS))) (CL:PROCLAIM (QUOTE (CL:SPECIAL CMLSYMBOLS.SHARED))) (CL:PROCLAIM (QUOTE (CL:SPECIAL LITATOM-PACKAGE-CONVERSION-TABLE))) (OR (BOUNDP (QUOTE LITATOM-PACKAGE-CONVERSION-TABLE)) (CL:SETQ LITATOM-PACKAGE-CONVERSION-TABLE (QUOTE (("CL::" NIL "LISP" :INTERNAL) ("CL:" ("CL:FLG" "CL:MAKE-SYMBOL" "CL:COPY-SYMBOL" "CL:INTERN" "CL:MAKE-KEYWORD" "CL:GENTEMP" "CL:KEYWORDP") "LISP" :EXTERNAL) (":" NIL "KEYWORD" :EXTERNAL) ( "CONDITIONS::" NIL "CONDITIONS" :INTERNAL) ("CONDITIONS:" NIL "CONDITIONS" :EXTERNAL) ("XCL::" NIL "XCL" :INTERNAL) ("XCL:" NIL "XCL" :EXTERNAL) ("SI::" NIL "SI" :INTERNAL) ("SI:" NIL "SI" :EXTERNAL) ("COMPILER::" NIL "COMPILER" :INTERNAL) ("COMPILER:" NIL "COMPILER" :EXTERNAL) ("FASL::" NIL "FASL" :INTERNAL) ("FASL:" NIL "FASL" :EXTERNAL))))) (SET-DOCUMENTATION (QUOTE TRANSFER-SYMBOL) (QUOTE CL:FUNCTION) "Move the function and plist definition cells of a symbol onto another, leaving name and value alone.") (SET-DOCUMENTATION (QUOTE INTERN-LITATOM) (QUOTE CL:FUNCTION) "Tag a litatom with a package. Add it to the package hashtable. Handle keywords appropriately. Return the symbol.") (SET-DOCUMENTATION (QUOTE PACKAGE-INIT) (QUOTE CL:FUNCTION) "Clear, make structures of, initialize & convert symbols to, and enable use of the symbol package system.") (SET-DOCUMENTATION (QUOTE PACKAGE-CLEAR) (QUOTE CL:FUNCTION) "Clear the global package data (used by FIND-PACKAGE) and reset the globals that hold the existing packages.") (SET-DOCUMENTATION (QUOTE PACKAGE-MAKE) (QUOTE CL:FUNCTION) "Create, but do not fill with symbols, the base packages that need to exist. Also enables the package qualifier characters in the readtables and saves the old definitions of \\READ.SYMBOL and \\MKATOM.") (SET-DOCUMENTATION (QUOTE PACKAGE-ENABLE) (QUOTE CL:FUNCTION) "Turn on the package system, making PACKAGE the current one and redefining \\READ.SYMBOL and \\MKATOM appropriatly.") (SET-DOCUMENTATION (QUOTE PACKAGE-DISABLE) (QUOTE CL:FUNCTION) "Turn off the package system and restore the old definitions of \\\\READ.SYMBOL and \\MKATOM. After disabling, symbols interned under the package system will not be EQ to symbols of the same name reread.") (MOVD? (QUOTE EQ) (QUOTE EQL)) (MOVD? (QUOTE LENGTH) (QUOTE CL:LENGTH)) (MOVD? (QUOTE ID) (QUOTE CL:IDENTITY)) (MOVD? (QUOTE ID) (QUOTE REMOVE-COMMENTS)) (PACKAGE-INIT) |{DSK}sybalsky>lispcore>sources>CONDITION-PACKAGE.LCOM;2| (IL:SET-DOCUMENTATION (QUOTE CL::NATURALIZE) (QUOTE FUNCTION) "Make a symbol, possibly in source, be in source and citizen and export of destination.") (PROCLAIM (QUOTE (XCL:GLOBAL *FUTURE-CITIZENS-OF-CONDITIONS*))) (IL:SET-DOCUMENTATION (QUOTE *FUTURE-CITIZENS-OF-CONDITIONS*) (QUOTE VARIABLE ) "Current citizens of XCL that should be in CONDITIONS: do not change this list!!!") (XCL:DEFPACKAGE "CONDITIONS" (:EXPORT *BREAK-ON-SIGNALS* HANDLER-CASE WITH-SIMPLE-RESTART RESTART-CASE RESTART-BIND COMPUTE-RESTARTS RESTART-NAME FIND-RESTART INVOKE-RESTART INVOKE-RESTART-INTERACTIVELY CONTINUE MUFFLE-WARNING INVOKE-DEBUGGER RESTART TYPE-ERROR-DATUM PROGRAM-ERROR FILE-ERROR FILE-ERROR-PATHNAME DIVISION-BY-ZERO FLOATING-POINT-OVERFLOW FLOATING-POINT-UNDERFLOW)) (MAPC (FUNCTION DEFECT-FROM-XCL-TO-CONDITIONS) *FUTURE-CITIZENS-OF-CONDITIONS*) |{DSK}sybalsky>lispcore>sources>XCL-PACKAGE.LCOM;2| (PROCLAIM (QUOTE (SPECIAL CL::FUTURE-CITIZENS-OF-XCL))) (IL:SET-DOCUMENTATION (QUOTE CL::FUTURE-CITIZENS-OF-XCL) (QUOTE VARIABLE) "A list of names retroactively placed in XCL; do not add to it.") (DEFPACKAGE "XEROX-COMMON-LISP" (:USE "LISP" "CONDITIONS") (:NICKNAMES "XCL") (:PREFIX-NAME "XCL") (:EXPORT ARGLIST SET-EXEC-TYPE SET-DEFAULT-EXEC-TYPE SYNONYM-STREAM-P SYNONYM-STREAM-SYMBOL FOLLOW-SYNONYM-STREAMS BROADCAST-STREAM-P BROADCAST-STREAM-STREAMS CONCATENATED-STREAM-P CONCATENATED-STREAM-STREAMS TWO-WAY-STREAM-P TWO-WAY-STREAM-INPUT-STREAM TWO-WAY-STREAM-OUTPUT-STREAM ECHO-STREAM-P ECHO-STREAM-INPUT-STREAM ECHO-STREAM-OUTPUT-STREAM STRING-STREAM-P OPEN-STREAM-P *CURRENT-CONDITION* *EVAL-FUNCTION* *EXEC-PROMPT* *DEBUGGER-PROMPT* MAKE-PROFILE RESTORE-PROFILE SAVE-PROFILE WITH-PROFILE COPY-PROFILE PROFILE-NAME PROFILE-P FIND-PROFILE LIST-ALL-PROFILES DEFPROFILE PROFILES *DEFAULT-PROFILE* *PROFILE* PACK PACK* *PRINT-STRUCTURE* DO-INTERNAL-SYMBOLS PKG-GOTO READ-CONFLICT READ-CONFLICT-NAME READ-CONFLICT-PACKAGES MISSING-EXTERNAL-SYMBOL MISSING-EXTERNAL-SYMBOL-NAME MISSING-EXTERNAL-SYMBOL-PACKAGE MISSING-PACKAGE MISSING-PACKAGE-PACKAGE-NAME MISSING-PACKAGE-SYMBOL-NAME MISSING-PACKAGE-EXTERNAL PACKAGE-ERROR PACKAGE-ERROR-PACKAGE SYMBOL-CONFLICT SYMBOL-CONFLICT-SYMBOLS USE-CONFLICT USE-CONFLICT-USED-PACKAGE EXPORT-CONFLICT EXPORT-CONFLICT-EXPORTED-SYMBOLS SYMBOL-COLON-ERROR ESCAPE-COLONS-PROCEED EXPORT-CONFLICT-PACAKGES EXPORT-MISSING EXPORT-MISSING-SYMBOLS IMPORT-CONFLICT UNINTERN-CONFLICT UNINTERN-CONFLICT-SYMBOL PREFER-CLSYM-PROCEED RETURN-CLSYM-PROCEED PREFER-ILSYM-PROCEED RETURN-ILSYM-PROCEED MAKE-EXTERNAL-PROCEED MAKE-INTERNAL-PROCEED NEW-PACKAGE-PROCEED UGLY-SYMBOL-PROCEED SHADOW-USE-CONFLICTS-PROCEED UNINTERN-USER-PROCEED UNINTERN-USEE-PROCEED UNINTERN-PROCEED IMPORT-PROCEED SHADOWING-IMPORT-PROCEED *TRACE-IO* HASH-TABLE-FULL HASH-TABLE-FULL-TABLE ATTEMPT-TO-CHANGE-CONSTANT ATTEMPT-TO-CHANGE-CONSTANT-NAME ATTEMPT-TO-RPLAC-NIL ATTEMPT-TO-RPLAC-NIL-NAME TYPE-ERROR-EXPECTED-TYPE SIMPLE-TYPE-ERROR SIMPLE-TYPE-ERROR-EXPECTED-TYPE SIMPLE-TYPE-ERROR-CULPRIT STREAM-NOT-OPEN STREAM-NOT-OPEN-STREAM SYMBOL-NAME-TOO-LONG SYMBOL-NAME-TOO-LONG-STREAM SYMBOL-HT-FULL ARRAY-SPACE-FULL DATA-TYPES-EXHAUSTED DEVICE-ERROR DEVICE-ERROR-DEVICE SIMPLE-DEVICE-ERROR SIMPLE-DEVICE-ERROR-DEVICE SIMPLE-DEVICE-ERROR-MESSAGE FS-ERROR FILE-WONT-OPEN FILE-WONT-OPEN-PATHNAME FS-RESOURCES-EXCEEDED FS-PROTECTION-VIOLATION ARITHMETIC-ERROR ARITHMETIC-ERROR-OPERATION ARITHMETIC-ERROR-OPERANDS FLOATING-OVERFLOW FLOATING-OVERFLOW-OPERATION FLOATING-OVERFLOW-OPERANDS FLOATING-UNDERFLOW FLOATING-UNDERFLOW-OPERATION FLOATING-UNDERFLOW-OPERANDS PATHNAME-ERROR PATHNAME-ERROR-PATHNAME FILE-NOT-FOUND FILE-NOT-FOUND-PATHNAME INVALID-PATHNAME INVALID-PATHNAME-PATHNAME CONTROL-E-INTERRUPT CONTROL-E-INTERRUPT-FUNCTION ASSERTION-FAILED ASSERTION-FAILED-FORMAT-STRING ASSERTION-FAILED-FORMAT-ARGUMENTS BAD-PROCEED-CASE BAD-PROCEED-CASE-NAME TYPE-MISMATCH TYPE-MISMATCH-EXPECTED-TYPE TYPE-MISMATCH-VALUE TYPE-MISMATCH-MESSAGE STORAGE-EXHAUSTED CREATE-TRACE-WINDOW UNBREAK-FUNCTION REBREAK-FUNCTION TRACE-FUNCTION *TRACE-LEVEL* *TRACE-LENGTH* *TRACE-VERBOSE* INNER REINSTALL-ADVICE ADVISE-FUNCTION UNADVISE-FUNCTION READVISE-FUNCTION ADVISED-FUNCTIONS DEFADVICE WITH-COLLECTION COLLECT ONCE-ONLY *SHORT-SITE-NAME* *LONG-SITE-NAME* DEFINER NAMED-PROGN COMPILE-DEFINER COMPILE-FORM FALSE FILE-ENVIRONMENTS DEFINE-FILE-ENVIRONMENT *BREAK-ON-SIGNALS* HANDLER-CASE WITH-SIMPLE-RESTART RESTART-CASE RESTART-BIND COMPUTE-RESTARTS RESTART-NAME FIND-RESTART INVOKE-RESTART INVOKE-RESTART-INTERACTIVELY CONTINUE MUFFLE-WARNING INVOKE-DEBUGGER RESTART TYPE-ERROR TYPE-ERROR-DATUM PROGRAM-ERROR FILE-ERROR FILE-ERROR-PATHNAME DIVISION-BY-ZERO FLOATING-POINT-OVERFLOW FLOATING-POINT-UNDERFLOW ROW-MAJOR-AREF RECORD-FETCH RECORD-FFETCH RECORD-CREATE DEFINE-RECORD PACKAGE-PREFIX)) (IL:MAPC CL::FUTURE-CITIZENS-OF-XCL (QUOTE CL::DEFECT-FROM-IL-TO-XCL)) (CL::CHECK-ALL) |{DSK}sybalsky>lispcore>sources>PROC.LCOM;6| (/DECLAREDATATYPE (QUOTE PROCESS) (QUOTE (WORD WORD BYTE POINTER BYTE POINTER BYTE POINTER FLAG FLAG FLAG FLAG FLAG FLAG FLAG FLAG POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER)) (QUOTE ((PROCESS 0 (BITS . 15)) (PROCESS 1 (BITS . 15)) (PROCESS 2 (BITS . 7)) (PROCESS 4 POINTER) (PROCESS 3 (BITS . 7)) (PROCESS 6 POINTER) (PROCESS 3 (BITS . 135)) (PROCESS 8 POINTER) (PROCESS 8 (FLAGBITS . 0)) (PROCESS 8 (FLAGBITS . 16)) ( PROCESS 8 (FLAGBITS . 32)) (PROCESS 8 (FLAGBITS . 48)) (PROCESS 6 (FLAGBITS . 0)) (PROCESS 6 (FLAGBITS . 16)) (PROCESS 6 (FLAGBITS . 32)) (PROCESS 6 ( FLAGBITS . 48)) (PROCESS 10 POINTER) (PROCESS 12 POINTER) (PROCESS 14 POINTER ) (PROCESS 16 POINTER) (PROCESS 18 POINTER) (PROCESS 20 POINTER) (PROCESS 22 POINTER) (PROCESS 24 POINTER) (PROCESS 26 POINTER) (PROCESS 28 POINTER) ( PROCESS 30 POINTER) (PROCESS 32 POINTER) (PROCESS 34 POINTER) (PROCESS 36 POINTER) (PROCESS 38 POINTER) (PROCESS 40 POINTER) (PROCESS 42 POINTER) ( PROCESS 44 POINTER) (PROCESS 46 POINTER) (PROCESS 48 POINTER) (PROCESS 50 POINTER) (PROCESS 52 POINTER) (PROCESS 54 POINTER) (PROCESS 56 POINTER) ( PROCESS 58 POINTER) (PROCESS 60 POINTER) (PROCESS 62 POINTER) (PROCESS 64 POINTER))) (QUOTE 66)) (/DECLAREDATATYPE (QUOTE PROCESSQUEUE) (QUOTE (BYTE POINTER POINTER POINTER POINTER)) (QUOTE ((PROCESSQUEUE 0 (BITS . 7)) (PROCESSQUEUE 2 POINTER) ( PROCESSQUEUE 4 POINTER) (PROCESSQUEUE 6 POINTER) (PROCESSQUEUE 8 POINTER))) ( QUOTE 10)) (SETTOPVAL (QUOTE \PROCESS.NAME.TABLE) (HASHARRAY 30 NIL (FUNCTION STRING-EQUAL-HASHBITS) (FUNCTION STRING-EQUAL))) (MOVD? (QUOTE PROCESS.RETURN) (QUOTE KILL.ME) NIL T) (/DECLAREDATATYPE (QUOTE EVENT) (QUOTE (FLAG (BITS 3) POINTER POINTER)) ( QUOTE ((EVENT 0 (FLAGBITS . 0)) (EVENT 0 (BITS . 18)) (EVENT 0 POINTER) ( EVENT 2 POINTER))) (QUOTE 4)) (/DECLAREDATATYPE (QUOTE MONITORLOCK) (QUOTE (FLAG FLAG (BITS 2) POINTER POINTER POINTER POINTER)) (QUOTE ((MONITORLOCK 0 (FLAGBITS . 0)) (MONITORLOCK 0 (FLAGBITS . 16)) (MONITORLOCK 0 (BITS . 33)) (MONITORLOCK 0 POINTER) ( MONITORLOCK 2 POINTER) (MONITORLOCK 4 POINTER) (MONITORLOCK 6 POINTER))) ( QUOTE 8)) (SETTOPVAL (QUOTE \PROCTIMER.SCRATCH) (NCREATE (QUOTE FIXP))) (DEFPRINT (QUOTE PROCESS) (FUNCTION \PROCESS.DEFPRINT)) (DEFPRINT (QUOTE EVENT) (FUNCTION \EVENT.DEFPRINT)) (DEFPRINT (QUOTE MONITORLOCK) (FUNCTION \MONITORLOCK.DEFPRINT)) (\PROCESS.INIT) |{DSK}sybalsky>lispcore>sources>CMLARRAY.LCOM;5| (CL::SET-SETF-INVERSE (QUOTE XCL:ROW-MAJOR-AREF) (QUOTE CL::ROW-MAJOR-ASET)) (CL::SET-SETF-METHOD-EXPANDER (QUOTE CL:AREF) (QUOTE CL::|AREF-setf-expander| )) (CL::SET-SETF-METHOD-EXPANDER (QUOTE BIT) (QUOTE CL::|BIT-setf-expander|)) (CL::SET-SETF-METHOD-EXPANDER (QUOTE CL:CHAR) (QUOTE CL::|CHAR-setf-expander| )) (CL::SET-SETF-INVERSE (QUOTE CL:FILL-POINTER) (QUOTE SET-FILL-POINTER)) (CL::SET-SETF-METHOD-EXPANDER (QUOTE CL:SBIT) (QUOTE CL::|SBIT-setf-expander| )) (CL::SET-SETF-METHOD-EXPANDER (QUOTE CL:SCHAR) (QUOTE CL::|SCHAR-setf-expander|)) (CL::SET-SETF-METHOD-EXPANDER (QUOTE CL:SVREF) (QUOTE CL::|SVREF-setf-expander|)) (PUTPROP (QUOTE CL:AREF) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE CL::|optimize-AREF|) (GET (QUOTE CL:AREF) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE ASET) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE XCL::|optimize-ASET|) (GET (QUOTE ASET) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE BIT) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE CL::|optimize-BIT|) (GET (QUOTE BIT) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:CHAR) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE CL::|optimize-CHAR|) (GET (QUOTE CL:CHAR) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:SBIT) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE CL::|optimize-SBIT|) (GET (QUOTE CL:SBIT) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:SCHAR) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE CL::|optimize-SCHAR|) (GET (QUOTE CL:SCHAR) (QUOTE COMPILER:OPTIMIZER-LIST))) ) (PUTPROP (QUOTE CL:SVREF) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE CL::|optimize-SVREF|) (GET (QUOTE CL:SVREF) (QUOTE COMPILER:OPTIMIZER-LIST))) ) (XCL::SET-CONSTANTP (QUOTE CL:ARRAY-RANK-LIMIT) NIL) (SETTOPVAL (QUOTE CL:ARRAY-RANK-LIMIT) (EXPT 2 7)) (CL:PROCLAIM (QUOTE (SI::CONSTANT CL:ARRAY-RANK-LIMIT))) (XCL::SET-CONSTANTP (QUOTE CL:ARRAY-TOTAL-SIZE-LIMIT) NIL) (CL:PROCLAIM (QUOTE (SI::CONSTANT CL:ARRAY-TOTAL-SIZE-LIMIT))) (XCL::SET-CONSTANTP (QUOTE CL:ARRAY-DIMENSION-LIMIT) NIL) (CL:PROCLAIM (QUOTE (SI::CONSTANT CL:ARRAY-DIMENSION-LIMIT))) (CL:PROCLAIM (QUOTE (CL:SPECIAL *DEFAULT-PUSH-EXTENSION-SIZE*))) (PUTPROP (QUOTE %ONED-ARRAY-P) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE |optimize-%ONED-ARRAY-P|) (GET (QUOTE %ONED-ARRAY-P) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE %TWOD-ARRAY-P) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE |optimize-%TWOD-ARRAY-P|) (GET (QUOTE %TWOD-ARRAY-P) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE %GENERAL-ARRAY-P) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE |optimize-%GENERAL-ARRAY-P|) (GET (QUOTE %GENERAL-ARRAY-P) (QUOTE COMPILER:OPTIMIZER-LIST)))) (/DECLAREDATATYPE (QUOTE GENERAL-ARRAY) (QUOTE ((BITS 4) POINTER FLAG FLAG FLAG FLAG FLAG FLAG FLAG FLAG (BITS 8) WORD FIXP FIXP POINTER)) (QUOTE (( GENERAL-ARRAY 0 (BITS . 3)) (GENERAL-ARRAY 0 POINTER) (GENERAL-ARRAY 2 ( FLAGBITS . 0)) (GENERAL-ARRAY 2 (FLAGBITS . 16)) (GENERAL-ARRAY 2 (FLAGBITS . 32)) (GENERAL-ARRAY 2 (FLAGBITS . 48)) (GENERAL-ARRAY 2 (FLAGBITS . 64)) ( GENERAL-ARRAY 2 (FLAGBITS . 80)) (GENERAL-ARRAY 2 (FLAGBITS . 96)) ( GENERAL-ARRAY 2 (FLAGBITS . 112)) (GENERAL-ARRAY 2 (BITS . 135)) ( GENERAL-ARRAY 3 (BITS . 15)) (GENERAL-ARRAY 4 FIXP) (GENERAL-ARRAY 6 FIXP) ( GENERAL-ARRAY 8 POINTER))) (QUOTE 10)) (/DECLAREDATATYPE (QUOTE ONED-ARRAY) (QUOTE ((BITS 4) POINTER FLAG (BITS 1) FLAG FLAG (BITS 1) FLAG FLAG FLAG (BITS 8) WORD FIXP FIXP)) (QUOTE (( ONED-ARRAY 0 (BITS . 3)) (ONED-ARRAY 0 POINTER) (ONED-ARRAY 2 (FLAGBITS . 0)) (ONED-ARRAY 2 (BITS . 16)) (ONED-ARRAY 2 (FLAGBITS . 32)) (ONED-ARRAY 2 ( FLAGBITS . 48)) (ONED-ARRAY 2 (BITS . 64)) (ONED-ARRAY 2 (FLAGBITS . 80)) ( ONED-ARRAY 2 (FLAGBITS . 96)) (ONED-ARRAY 2 (FLAGBITS . 112)) (ONED-ARRAY 2 ( BITS . 135)) (ONED-ARRAY 3 (BITS . 15)) (ONED-ARRAY 4 FIXP) (ONED-ARRAY 6 FIXP))) (QUOTE 8)) (/DECLAREDATATYPE (QUOTE TWOD-ARRAY) (QUOTE ((BITS 4) POINTER FLAG (BITS 1) FLAG (BITS 4) FLAG (BITS 8) FIXP FIXP FIXP)) (QUOTE ((TWOD-ARRAY 0 (BITS . 3) ) (TWOD-ARRAY 0 POINTER) (TWOD-ARRAY 2 (FLAGBITS . 0)) (TWOD-ARRAY 2 (BITS . 16)) (TWOD-ARRAY 2 (FLAGBITS . 32)) (TWOD-ARRAY 2 (BITS . 51)) (TWOD-ARRAY 2 (FLAGBITS . 112)) (TWOD-ARRAY 2 (BITS . 135)) (TWOD-ARRAY 3 FIXP) (TWOD-ARRAY 5 FIXP) (TWOD-ARRAY 7 FIXP))) (QUOTE 10)) (DEFPRINT (QUOTE ONED-ARRAY) (QUOTE %DEFPRINT-VECTOR)) (DEFPRINT (QUOTE TWOD-ARRAY) (QUOTE %DEFPRINT-ARRAY)) (DEFPRINT (QUOTE GENERAL-ARRAY) (QUOTE %DEFPRINT-ARRAY)) (PUTPROP (QUOTE %ARRAY-READ) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE |optimize-%ARRAY-READ|) (GET (QUOTE %ARRAY-READ) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE %ARRAY-WRITE) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE |optimize-%ARRAY-WRITE|) (GET (QUOTE %ARRAY-WRITE) (QUOTE COMPILER:OPTIMIZER-LIST)))) |{DSK}sybalsky>lispcore>sources>DSK.LCOM;2| (SETTOPVAL (QUOTE \DSKtopMonitor) (CREATE.MONITORLOCK "DSKTopMonitor")) |{DSK}sybalsky>lispcore>sources>UFS.LCOM;4| (SETTOPVAL (QUOTE \UFStopMonitor) (CREATE.MONITORLOCK "UFSTopMonitor")) (/DECLAREDATATYPE (QUOTE UFSGENFILESTATE) (QUOTE (FIXP FIXP FIXP POINTER POINTER FLAG POINTER FIXP POINTER FIXP FIXP FIXP FIXP POINTER FIXP POINTER POINTER POINTER)) (QUOTE ((UFSGENFILESTATE 0 FIXP) (UFSGENFILESTATE 2 FIXP) ( UFSGENFILESTATE 4 FIXP) (UFSGENFILESTATE 6 POINTER) (UFSGENFILESTATE 8 POINTER) (UFSGENFILESTATE 8 (FLAGBITS . 0)) (UFSGENFILESTATE 10 POINTER) ( UFSGENFILESTATE 12 FIXP) (UFSGENFILESTATE 14 POINTER) (UFSGENFILESTATE 16 FIXP) (UFSGENFILESTATE 18 FIXP) (UFSGENFILESTATE 20 FIXP) (UFSGENFILESTATE 22 FIXP) (UFSGENFILESTATE 24 POINTER) (UFSGENFILESTATE 26 FIXP) ( UFSGENFILESTATE 28 POINTER) (UFSGENFILESTATE 30 POINTER) (UFSGENFILESTATE 32 POINTER))) (QUOTE 34)) (SETTOPVAL (QUOTE \UFS.GFS.TABLE) (HASHARRAY 20)) |{DSK}sybalsky>lispcore>sources>UFSCALLC.LCOM;2| |{DSK}sybalsky>lispcore>sources>LLETHER.LCOM;2| (/DECLAREDATATYPE (QUOTE SYSQUEUE) (QUOTE (BYTE POINTER BYTE POINTER)) (QUOTE ((SYSQUEUE 0 (BITS . 7)) (SYSQUEUE 2 POINTER) (SYSQUEUE 1 (BITS . 7)) ( SYSQUEUE 4 POINTER))) (QUOTE 6)) (/DECLAREDATATYPE (QUOTE ETHERPACKET) (QUOTE (BYTE POINTER BYTE POINTER BYTE POINTER FLAG FLAG (BITS 6) POINTER BYTE POINTER BYTE POINTER WORD WORD FIXP POINTER WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD)) (QUOTE ((ETHERPACKET 0 (BITS . 7)) (ETHERPACKET 2 POINTER) ( ETHERPACKET 1 (BITS . 7)) (ETHERPACKET 4 POINTER) (ETHERPACKET 1 (BITS . 135) ) (ETHERPACKET 6 POINTER) (ETHERPACKET 6 (FLAGBITS . 0)) (ETHERPACKET 6 ( FLAGBITS . 16)) (ETHERPACKET 0 (BITS . 133)) (ETHERPACKET 8 POINTER) ( ETHERPACKET 10 (BITS . 7)) (ETHERPACKET 12 POINTER) (ETHERPACKET 11 (BITS . 7 )) (ETHERPACKET 14 POINTER) (ETHERPACKET 16 (BITS . 15)) (ETHERPACKET 17 ( BITS . 15)) (ETHERPACKET 18 FIXP) (ETHERPACKET 20 POINTER) (ETHERPACKET 22 ( BITS . 15)) (ETHERPACKET 23 (BITS . 15)) (ETHERPACKET 24 (BITS . 15)) ( ETHERPACKET 25 (BITS . 15)) (ETHERPACKET 26 (BITS . 15)) (ETHERPACKET 27 ( BITS . 15)) (ETHERPACKET 28 (BITS . 15)) (ETHERPACKET 29 (BITS . 15)) ( ETHERPACKET 30 (BITS . 15)) (ETHERPACKET 31 (BITS . 15)) (ETHERPACKET 32 ( BITS . 15)) (ETHERPACKET 33 (BITS . 15)) (ETHERPACKET 34 (BITS . 15)) ( ETHERPACKET 35 (BITS . 15)) (ETHERPACKET 36 (BITS . 15)) (ETHERPACKET 37 ( BITS . 15)) (ETHERPACKET 38 (BITS . 15)) (ETHERPACKET 39 (BITS . 15)) ( ETHERPACKET 40 (BITS . 15)) (ETHERPACKET 41 (BITS . 15)) (ETHERPACKET 42 ( BITS . 15)) (ETHERPACKET 43 (BITS . 15)) (ETHERPACKET 44 (BITS . 15)) ( ETHERPACKET 45 (BITS . 15)) (ETHERPACKET 46 (BITS . 15)) (ETHERPACKET 47 ( BITS . 15)) (ETHERPACKET 48 (BITS . 15)) (ETHERPACKET 49 (BITS . 15)) ( ETHERPACKET 50 (BITS . 15)) (ETHERPACKET 51 (BITS . 15)) (ETHERPACKET 52 ( BITS . 15)) (ETHERPACKET 53 (BITS . 15)) (ETHERPACKET 54 (BITS . 15)) ( ETHERPACKET 55 (BITS . 15)) (ETHERPACKET 56 (BITS . 15)) (ETHERPACKET 57 ( BITS . 15)) (ETHERPACKET 58 (BITS . 15)) (ETHERPACKET 59 (BITS . 15)) ( ETHERPACKET 60 (BITS . 15)) (ETHERPACKET 61 (BITS . 15)) (ETHERPACKET 62 ( BITS . 15)) (ETHERPACKET 63 (BITS . 15)) (ETHERPACKET 64 (BITS . 15)) ( ETHERPACKET 65 (BITS . 15)) (ETHERPACKET 66 (BITS . 15)) (ETHERPACKET 67 ( BITS . 15)) (ETHERPACKET 68 (BITS . 15)) (ETHERPACKET 69 (BITS . 15)) ( ETHERPACKET 70 (BITS . 15)) (ETHERPACKET 71 (BITS . 15)) (ETHERPACKET 72 ( BITS . 15)) (ETHERPACKET 73 (BITS . 15)) (ETHERPACKET 74 (BITS . 15)) ( ETHERPACKET 75 (BITS . 15)) (ETHERPACKET 76 (BITS . 15)) (ETHERPACKET 77 ( BITS . 15)) (ETHERPACKET 78 (BITS . 15)) (ETHERPACKET 79 (BITS . 15)) ( ETHERPACKET 80 (BITS . 15)) (ETHERPACKET 81 (BITS . 15)) (ETHERPACKET 82 ( BITS . 15)) (ETHERPACKET 83 (BITS . 15)) (ETHERPACKET 84 (BITS . 15)) ( ETHERPACKET 85 (BITS . 15)) (ETHERPACKET 86 (BITS . 15)) (ETHERPACKET 87 ( BITS . 15)) (ETHERPACKET 88 (BITS . 15)) (ETHERPACKET 89 (BITS . 15)) ( ETHERPACKET 90 (BITS . 15)) (ETHERPACKET 91 (BITS . 15)) (ETHERPACKET 92 ( BITS . 15)) (ETHERPACKET 93 (BITS . 15)) (ETHERPACKET 94 (BITS . 15)) ( ETHERPACKET 95 (BITS . 15)) (ETHERPACKET 96 (BITS . 15)) (ETHERPACKET 97 ( BITS . 15)) (ETHERPACKET 98 (BITS . 15)) (ETHERPACKET 99 (BITS . 15)) ( ETHERPACKET 100 (BITS . 15)) (ETHERPACKET 101 (BITS . 15)) (ETHERPACKET 102 ( BITS . 15)) (ETHERPACKET 103 (BITS . 15)) (ETHERPACKET 104 (BITS . 15)) ( ETHERPACKET 105 (BITS . 15)) (ETHERPACKET 106 (BITS . 15)) (ETHERPACKET 107 ( BITS . 15)) (ETHERPACKET 108 (BITS . 15)) (ETHERPACKET 109 (BITS . 15)) ( ETHERPACKET 110 (BITS . 15)) (ETHERPACKET 111 (BITS . 15)) (ETHERPACKET 112 ( BITS . 15)) (ETHERPACKET 113 (BITS . 15)) (ETHERPACKET 114 (BITS . 15)) ( ETHERPACKET 115 (BITS . 15)) (ETHERPACKET 116 (BITS . 15)) (ETHERPACKET 117 ( BITS . 15)) (ETHERPACKET 118 (BITS . 15)) (ETHERPACKET 119 (BITS . 15)) ( ETHERPACKET 120 (BITS . 15)) (ETHERPACKET 121 (BITS . 15)) (ETHERPACKET 122 ( BITS . 15)) (ETHERPACKET 123 (BITS . 15)) (ETHERPACKET 124 (BITS . 15)) ( ETHERPACKET 125 (BITS . 15)) (ETHERPACKET 126 (BITS . 15)) (ETHERPACKET 127 ( BITS . 15)) (ETHERPACKET 128 (BITS . 15)) (ETHERPACKET 129 (BITS . 15)) ( ETHERPACKET 130 (BITS . 15)) (ETHERPACKET 131 (BITS . 15)) (ETHERPACKET 132 ( BITS . 15)) (ETHERPACKET 133 (BITS . 15)) (ETHERPACKET 134 (BITS . 15)) ( ETHERPACKET 135 (BITS . 15)) (ETHERPACKET 136 (BITS . 15)) (ETHERPACKET 137 ( BITS . 15)) (ETHERPACKET 138 (BITS . 15)) (ETHERPACKET 139 (BITS . 15)) ( ETHERPACKET 140 (BITS . 15)) (ETHERPACKET 141 (BITS . 15)) (ETHERPACKET 142 ( BITS . 15)) (ETHERPACKET 143 (BITS . 15)) (ETHERPACKET 144 (BITS . 15)) ( ETHERPACKET 145 (BITS . 15)) (ETHERPACKET 146 (BITS . 15)) (ETHERPACKET 147 ( BITS . 15)) (ETHERPACKET 148 (BITS . 15)) (ETHERPACKET 149 (BITS . 15)) ( ETHERPACKET 150 (BITS . 15)) (ETHERPACKET 151 (BITS . 15)) (ETHERPACKET 152 ( BITS . 15)) (ETHERPACKET 153 (BITS . 15)) (ETHERPACKET 154 (BITS . 15)) ( ETHERPACKET 155 (BITS . 15)) (ETHERPACKET 156 (BITS . 15)) (ETHERPACKET 157 ( BITS . 15)) (ETHERPACKET 158 (BITS . 15)) (ETHERPACKET 159 (BITS . 15)) ( ETHERPACKET 160 (BITS . 15)) (ETHERPACKET 161 (BITS . 15)) (ETHERPACKET 162 ( BITS . 15)) (ETHERPACKET 163 (BITS . 15)) (ETHERPACKET 164 (BITS . 15)) ( ETHERPACKET 165 (BITS . 15)) (ETHERPACKET 166 (BITS . 15)) (ETHERPACKET 167 ( BITS . 15)) (ETHERPACKET 168 (BITS . 15)) (ETHERPACKET 169 (BITS . 15)) ( ETHERPACKET 170 (BITS . 15)) (ETHERPACKET 171 (BITS . 15)) (ETHERPACKET 172 ( BITS . 15)) (ETHERPACKET 173 (BITS . 15)) (ETHERPACKET 174 (BITS . 15)) ( ETHERPACKET 175 (BITS . 15)) (ETHERPACKET 176 (BITS . 15)) (ETHERPACKET 177 ( BITS . 15)) (ETHERPACKET 178 (BITS . 15)) (ETHERPACKET 179 (BITS . 15)) ( ETHERPACKET 180 (BITS . 15)) (ETHERPACKET 181 (BITS . 15)) (ETHERPACKET 182 ( BITS . 15)) (ETHERPACKET 183 (BITS . 15)) (ETHERPACKET 184 (BITS . 15)) ( ETHERPACKET 185 (BITS . 15)) (ETHERPACKET 186 (BITS . 15)) (ETHERPACKET 187 ( BITS . 15)) (ETHERPACKET 188 (BITS . 15)) (ETHERPACKET 189 (BITS . 15)) ( ETHERPACKET 190 (BITS . 15)) (ETHERPACKET 191 (BITS . 15)) (ETHERPACKET 192 ( BITS . 15)) (ETHERPACKET 193 (BITS . 15)) (ETHERPACKET 194 (BITS . 15)) ( ETHERPACKET 195 (BITS . 15)) (ETHERPACKET 196 (BITS . 15)) (ETHERPACKET 197 ( BITS . 15)) (ETHERPACKET 198 (BITS . 15)) (ETHERPACKET 199 (BITS . 15)) ( ETHERPACKET 200 (BITS . 15)) (ETHERPACKET 201 (BITS . 15)) (ETHERPACKET 202 ( BITS . 15)) (ETHERPACKET 203 (BITS . 15)) (ETHERPACKET 204 (BITS . 15)) ( ETHERPACKET 205 (BITS . 15)) (ETHERPACKET 206 (BITS . 15)) (ETHERPACKET 207 ( BITS . 15)) (ETHERPACKET 208 (BITS . 15)) (ETHERPACKET 209 (BITS . 15)) ( ETHERPACKET 210 (BITS . 15)) (ETHERPACKET 211 (BITS . 15)) (ETHERPACKET 212 ( BITS . 15)) (ETHERPACKET 213 (BITS . 15)) (ETHERPACKET 214 (BITS . 15)) ( ETHERPACKET 215 (BITS . 15)) (ETHERPACKET 216 (BITS . 15)) (ETHERPACKET 217 ( BITS . 15)) (ETHERPACKET 218 (BITS . 15)) (ETHERPACKET 219 (BITS . 15)) ( ETHERPACKET 220 (BITS . 15)) (ETHERPACKET 221 (BITS . 15)) (ETHERPACKET 222 ( BITS . 15)) (ETHERPACKET 223 (BITS . 15)) (ETHERPACKET 224 (BITS . 15)) ( ETHERPACKET 225 (BITS . 15)) (ETHERPACKET 226 (BITS . 15)) (ETHERPACKET 227 ( BITS . 15)) (ETHERPACKET 228 (BITS . 15)) (ETHERPACKET 229 (BITS . 15)) ( ETHERPACKET 230 (BITS . 15)) (ETHERPACKET 231 (BITS . 15)) (ETHERPACKET 232 ( BITS . 15)) (ETHERPACKET 233 (BITS . 15)) (ETHERPACKET 234 (BITS . 15)) ( ETHERPACKET 235 (BITS . 15)) (ETHERPACKET 236 (BITS . 15)) (ETHERPACKET 237 ( BITS . 15)) (ETHERPACKET 238 (BITS . 15)) (ETHERPACKET 239 (BITS . 15)) ( ETHERPACKET 240 (BITS . 15)) (ETHERPACKET 241 (BITS . 15)) (ETHERPACKET 242 ( BITS . 15)) (ETHERPACKET 243 (BITS . 15)) (ETHERPACKET 244 (BITS . 15)) ( ETHERPACKET 245 (BITS . 15)) (ETHERPACKET 246 (BITS . 15)) (ETHERPACKET 247 ( BITS . 15)) (ETHERPACKET 248 (BITS . 15)) (ETHERPACKET 249 (BITS . 15)) ( ETHERPACKET 250 (BITS . 15)) (ETHERPACKET 251 (BITS . 15)) (ETHERPACKET 252 ( BITS . 15)) (ETHERPACKET 253 (BITS . 15)) (ETHERPACKET 254 (BITS . 15)) ( ETHERPACKET 255 (BITS . 15)) (ETHERPACKET 256 (BITS . 15)) (ETHERPACKET 257 ( BITS . 15)) (ETHERPACKET 258 (BITS . 15)) (ETHERPACKET 259 (BITS . 15)) ( ETHERPACKET 260 (BITS . 15)) (ETHERPACKET 261 (BITS . 15)) (ETHERPACKET 262 ( BITS . 15)) (ETHERPACKET 263 (BITS . 15)) (ETHERPACKET 264 (BITS . 15)) ( ETHERPACKET 265 (BITS . 15)) (ETHERPACKET 266 (BITS . 15)) (ETHERPACKET 267 ( BITS . 15)) (ETHERPACKET 268 (BITS . 15)) (ETHERPACKET 269 (BITS . 15)) ( ETHERPACKET 270 (BITS . 15)) (ETHERPACKET 271 (BITS . 15)) (ETHERPACKET 272 ( BITS . 15)) (ETHERPACKET 273 (BITS . 15)) (ETHERPACKET 274 (BITS . 15)) ( ETHERPACKET 275 (BITS . 15)) (ETHERPACKET 276 (BITS . 15)) (ETHERPACKET 277 ( BITS . 15)) (ETHERPACKET 278 (BITS . 15)) (ETHERPACKET 279 (BITS . 15)) ( ETHERPACKET 280 (BITS . 15)) (ETHERPACKET 281 (BITS . 15)) (ETHERPACKET 282 ( BITS . 15)) (ETHERPACKET 283 (BITS . 15)) (ETHERPACKET 284 (BITS . 15)) ( ETHERPACKET 285 (BITS . 15)) (ETHERPACKET 286 (BITS . 15)) (ETHERPACKET 287 ( BITS . 15)) (ETHERPACKET 288 (BITS . 15)) (ETHERPACKET 289 (BITS . 15)) ( ETHERPACKET 290 (BITS . 15)) (ETHERPACKET 291 (BITS . 15)) (ETHERPACKET 292 ( BITS . 15)) (ETHERPACKET 293 (BITS . 15)) (ETHERPACKET 294 (BITS . 15)) ( ETHERPACKET 295 (BITS . 15)) (ETHERPACKET 296 (BITS . 15)) (ETHERPACKET 297 ( BITS . 15)) (ETHERPACKET 298 (BITS . 15)) (ETHERPACKET 299 (BITS . 15)) ( ETHERPACKET 300 (BITS . 15)) (ETHERPACKET 301 (BITS . 15)) (ETHERPACKET 302 ( BITS . 15)) (ETHERPACKET 303 (BITS . 15)) (ETHERPACKET 304 (BITS . 15)) ( ETHERPACKET 305 (BITS . 15)) (ETHERPACKET 306 (BITS . 15)) (ETHERPACKET 307 ( BITS . 15)) (ETHERPACKET 308 (BITS . 15)) (ETHERPACKET 309 (BITS . 15)) ( ETHERPACKET 310 (BITS . 15)) (ETHERPACKET 311 (BITS . 15)) (ETHERPACKET 312 ( BITS . 15)) (ETHERPACKET 313 (BITS . 15)) (ETHERPACKET 314 (BITS . 15)) ( ETHERPACKET 315 (BITS . 15)) (ETHERPACKET 316 (BITS . 15)) (ETHERPACKET 317 ( BITS . 15)) (ETHERPACKET 318 (BITS . 15)) (ETHERPACKET 319 (BITS . 15)) ( ETHERPACKET 320 (BITS . 15)) (ETHERPACKET 321 (BITS . 15)) (ETHERPACKET 322 ( BITS . 15)))) (QUOTE 324)) (SETTOPVAL (QUOTE \FREE.PACKET.QUEUE) (NCREATE (QUOTE SYSQUEUE))) (/DECLAREDATATYPE (QUOTE NSADDRESS) (QUOTE (FIXP WORD WORD WORD WORD)) (QUOTE ((NSADDRESS 0 FIXP) (NSADDRESS 2 (BITS . 15)) (NSADDRESS 3 (BITS . 15)) ( NSADDRESS 4 (BITS . 15)) (NSADDRESS 5 (BITS . 15)))) (QUOTE 6)) (CL:PROCLAIM (QUOTE (CL:SPECIAL *NSADDRESS-FORMAT*))) (DEFPRINT (QUOTE NSADDRESS) (QUOTE \NSADDRESS.DEFPRINT)) (\ETHERINIT) (MOVD? (QUOTE NILL) (QUOTE BLOCK)) (MOVD? (QUOTE NILL) (QUOTE \STASH.PASSWORDS)) (/DECLAREDATATYPE (QUOTE NDB) (QUOTE (BYTE POINTER BYTE POINTER BYTE POINTER BYTE POINTER BYTE POINTER POINTER BYTE POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER WORD WORD POINTER)) (QUOTE ((NDB 0 (BITS . 7) ) (NDB 2 POINTER) (NDB 1 (BITS . 7)) (NDB 4 POINTER) (NDB 1 (BITS . 135)) ( NDB 6 POINTER) (NDB 0 (BITS . 135)) (NDB 8 POINTER) (NDB 10 (BITS . 7)) (NDB 12 POINTER) (NDB 14 POINTER) (NDB 11 (BITS . 7)) (NDB 16 POINTER) (NDB 18 POINTER) (NDB 20 POINTER) (NDB 22 POINTER) (NDB 24 POINTER) (NDB 26 POINTER) (NDB 28 POINTER) (NDB 30 POINTER) (NDB 32 (BITS . 15)) (NDB 33 (BITS . 15)) ( NDB 34 POINTER))) (QUOTE 36)) (SETTOPVAL (QUOTE \ROUTING.TABLE.TYPENUM) (\TYPENUMBERFROMNAME (PACK* "\PTRHUNK" (ADD1 \ROUTING.TABLE.MASK)))) (SETTOPVAL (QUOTE \CENTICLOCKBOX) (NCREATE (QUOTE FIXP))) |{DSK}sybalsky>lispcore>sources>PUP.LCOM;2| (SETTOPVAL (QUOTE \ETHERPORTS) (HASHARRAY 24Q)) (PUTPROP (QUOTE GETPUPWORD) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE optimize-GETPUPWORD) (GET (QUOTE GETPUPWORD) (QUOTE COMPILER:OPTIMIZER-LIST) ))) (PUTPROP (QUOTE PUTPUPWORD) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE optimize-PUTPUPWORD) (GET (QUOTE PUTPUPWORD) (QUOTE COMPILER:OPTIMIZER-LIST) ))) (PUTPROP (QUOTE GETPUPBYTE) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE optimize-GETPUPBYTE) (GET (QUOTE GETPUPBYTE) (QUOTE COMPILER:OPTIMIZER-LIST) ))) (PUTPROP (QUOTE PUTPUPBYTE) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE optimize-PUTPUPBYTE) (GET (QUOTE PUTPUPBYTE) (QUOTE COMPILER:OPTIMIZER-LIST) ))) (MOVD? (QUOTE NILL) (QUOTE \CANONICALIZE.IP.HOSTNAME) NIL T) (SETTOPVAL (QUOTE \PUP.ROUTING.TABLE) (CONS)) (SETTOPVAL (QUOTE \PUP.READY.EVENT) (CREATE.EVENT "Pup Ready")) (SETTOPVAL (QUOTE \PUP.READY.LOCK) (CREATE.MONITORLOCK "Pup Ready")) (/DECLAREDATATYPE (QUOTE PUPSOCKET) (QUOTE ((BITS 4) POINTER FIXP POINTER WORD WORD WORD WORD (BITS 4) POINTER (BITS 4) POINTER)) (QUOTE ((PUPSOCKET 0 (BITS . 3)) (PUPSOCKET 0 POINTER) (PUPSOCKET 2 FIXP) (PUPSOCKET 4 POINTER) ( PUPSOCKET 6 (BITS . 17Q)) (PUPSOCKET 7 (BITS . 17Q)) (PUPSOCKET 10Q (BITS . 17Q)) (PUPSOCKET 11Q (BITS . 17Q)) (PUPSOCKET 4 (BITS . 3)) (PUPSOCKET 12Q POINTER) (PUPSOCKET 12Q (BITS . 3)) (PUPSOCKET 14Q POINTER))) (QUOTE 16Q)) (\PUPINIT) |{DSK}sybalsky>lispcore>sources>LEAF.LCOM;2| (/DECLAREDATATYPE (QUOTE SEQUIN) (QUOTE (POINTER POINTER POINTER BYTE BYTE BYTE BYTE WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD POINTER POINTER POINTER FLAG FLAG FLAG FLAG POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER WORD WORD WORD FLAG POINTER POINTER POINTER POINTER POINTER POINTER POINTER)) (QUOTE ((SEQUIN 0 POINTER) (SEQUIN 2 POINTER) (SEQUIN 4 POINTER) (SEQUIN 6 (BITS . 7)) (SEQUIN 6 (BITS . 135)) ( SEQUIN 7 (BITS . 7)) (SEQUIN 7 (BITS . 135)) (SEQUIN 8 (BITS . 15)) (SEQUIN 9 (BITS . 15)) (SEQUIN 10 (BITS . 15)) (SEQUIN 11 (BITS . 15)) (SEQUIN 12 ( BITS . 15)) (SEQUIN 13 (BITS . 15)) (SEQUIN 14 (BITS . 15)) (SEQUIN 15 (BITS . 15)) (SEQUIN 16 (BITS . 15)) (SEQUIN 17 (BITS . 15)) (SEQUIN 18 (BITS . 15 )) (SEQUIN 19 (BITS . 15)) (SEQUIN 20 (BITS . 15)) (SEQUIN 22 POINTER) ( SEQUIN 24 POINTER) (SEQUIN 26 POINTER) (SEQUIN 26 (FLAGBITS . 0)) (SEQUIN 26 (FLAGBITS . 16)) (SEQUIN 26 (FLAGBITS . 32)) (SEQUIN 26 (FLAGBITS . 48)) ( SEQUIN 28 POINTER) (SEQUIN 30 POINTER) (SEQUIN 32 POINTER) (SEQUIN 34 POINTER ) (SEQUIN 36 POINTER) (SEQUIN 38 POINTER) (SEQUIN 40 POINTER) (SEQUIN 42 POINTER) (SEQUIN 44 POINTER) (SEQUIN 46 POINTER) (SEQUIN 48 POINTER) (SEQUIN 50 POINTER) (SEQUIN 52 POINTER) (SEQUIN 54 POINTER) (SEQUIN 56 POINTER) ( SEQUIN 58 POINTER) (SEQUIN 60 POINTER) (SEQUIN 62 POINTER) (SEQUIN 21 (BITS . 15)) (SEQUIN 64 (BITS . 15)) (SEQUIN 65 (BITS . 15)) (SEQUIN 62 (FLAGBITS . 0)) (SEQUIN 66 POINTER) (SEQUIN 68 POINTER) (SEQUIN 70 POINTER) (SEQUIN 72 POINTER) (SEQUIN 74 POINTER) (SEQUIN 76 POINTER) (SEQUIN 78 POINTER))) ( QUOTE 80)) (\LEAFINIT) (/DECLAREDATATYPE (QUOTE PUPFILESERVER) (QUOTE (BYTE POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER)) (QUOTE (( PUPFILESERVER 0 (BITS . 7)) (PUPFILESERVER 2 POINTER) (PUPFILESERVER 4 POINTER) (PUPFILESERVER 6 POINTER) (PUPFILESERVER 8 POINTER) (PUPFILESERVER 10 POINTER) (PUPFILESERVER 12 POINTER) (PUPFILESERVER 14 POINTER) ( PUPFILESERVER 16 POINTER) (PUPFILESERVER 18 POINTER) (PUPFILESERVER 20 POINTER) (PUPFILESERVER 22 POINTER))) (QUOTE 24)) |{DSK}sybalsky>lispcore>sources>PASSWORDS.LCOM;2| (SETTOPVAL (QUOTE LOGINPASSWORDS) (HASHARRAY 8)) (SETTOPVAL (QUOTE \GETPASSWORD.LOCK) (CREATE.MONITORLOCK "GetPassword")) (MOVD? (QUOTE NILL) (QUOTE CLBUFS)) |{DSK}sybalsky>lispcore>sources>FONT.LCOM;5| (MOVD (QUOTE FONTCLASSCOMPONENT) (QUOTE FONTCOMPONENT)) (MOVD (QUOTE SETFONTCLASSCOMPONENT) (QUOTE SETFONTCOMPONENT)) (/DECLAREDATATYPE (QUOTE FONTCLASS) (QUOTE (BYTE POINTER POINTER POINTER POINTER POINTER)) (QUOTE ((FONTCLASS 0 (BITS . 7)) (FONTCLASS 2 POINTER) ( FONTCLASS 4 POINTER) (FONTCLASS 6 POINTER) (FONTCLASS 8 POINTER) (FONTCLASS 10 POINTER))) (QUOTE 12)) (/DECLAREDATATYPE (QUOTE FONTDESCRIPTOR) (QUOTE (POINTER POINTER POINTER POINTER WORD WORD WORD WORD SIGNEDWORD SIGNEDWORD SIGNEDWORD SIGNEDWORD POINTER POINTER POINTER POINTER POINTER (BITS 8) WORD POINTER POINTER POINTER )) (QUOTE ((FONTDESCRIPTOR 0 POINTER) (FONTDESCRIPTOR 2 POINTER) ( FONTDESCRIPTOR 4 POINTER) (FONTDESCRIPTOR 6 POINTER) (FONTDESCRIPTOR 8 (BITS . 15)) (FONTDESCRIPTOR 9 (BITS . 15)) (FONTDESCRIPTOR 10 (BITS . 15)) ( FONTDESCRIPTOR 11 (BITS . 15)) (FONTDESCRIPTOR 12 (SIGNEDBITS . 15)) ( FONTDESCRIPTOR 13 (SIGNEDBITS . 15)) (FONTDESCRIPTOR 14 (SIGNEDBITS . 15)) ( FONTDESCRIPTOR 15 (SIGNEDBITS . 15)) (FONTDESCRIPTOR 16 POINTER) ( FONTDESCRIPTOR 18 POINTER) (FONTDESCRIPTOR 20 POINTER) (FONTDESCRIPTOR 22 POINTER) (FONTDESCRIPTOR 24 POINTER) (FONTDESCRIPTOR 26 (BITS . 7)) ( FONTDESCRIPTOR 27 (BITS . 15)) (FONTDESCRIPTOR 28 POINTER) (FONTDESCRIPTOR 30 POINTER) (FONTDESCRIPTOR 32 POINTER))) (QUOTE 34)) (/DECLAREDATATYPE (QUOTE CHARSETINFO) (QUOTE (POINTER POINTER POINTER POINTER POINTER WORD WORD POINTER)) (QUOTE ((CHARSETINFO 0 POINTER) (CHARSETINFO 2 POINTER) (CHARSETINFO 4 POINTER) (CHARSETINFO 6 POINTER) (CHARSETINFO 8 POINTER) (CHARSETINFO 10 (BITS . 15)) (CHARSETINFO 11 (BITS . 15)) ( CHARSETINFO 12 POINTER))) (QUOTE 14)) (\UNITWIDTHSVECTOR) (CONSTANTS (NORUNCODE 255)) (PUTPROP (QUOTE FONTPROP) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE optimize-FONTPROP) (GET (QUOTE FONTPROP) (QUOTE COMPILER:OPTIMIZER-LIST)))) |{DSK}sybalsky>lispcore>sunloadup>SUNFONT.LCOM;4| (Value of DISPLAYFONTDIRECTORIES changed from ({DSK}/USR/LOCAL/LDE/FONTS/DISPLAY/PRESENTATION/ |{dsk}/usr/local/lde/fonts/display/publishing/|) to ("{DSK}~/lispcore/fonts/display/presentation/" "{DSK}~/lispcore/fonts/display/PRINTWHEEL/" "{DSK}~/lispcore/fonts/display/publishing/" "{DSK}~/lispcore/fonts/display/miscellaneous/")) |{DSK}sybalsky>lispcore>sources>LLDISPLAY.LCOM;2| (/DECLAREDATATYPE (QUOTE BITMAP) (QUOTE (POINTER WORD WORD WORD WORD)) (QUOTE ((BITMAP 0 POINTER) (BITMAP 2 (BITS . 15)) (BITMAP 3 (BITS . 15)) (BITMAP 4 (BITS . 15)) (BITMAP 5 (BITS . 15)))) (QUOTE 6)) (/DECLAREDATATYPE (QUOTE PILOTBBT) (QUOTE (WORD WORD WORD SIGNEDWORD WORD WORD WORD SIGNEDWORD WORD WORD WORD WORD WORD WORD WORD WORD)) (QUOTE (( PILOTBBT 0 (BITS . 15)) (PILOTBBT 1 (BITS . 15)) (PILOTBBT 2 (BITS . 15)) ( PILOTBBT 3 (SIGNEDBITS . 15)) (PILOTBBT 4 (BITS . 15)) (PILOTBBT 5 (BITS . 15 )) (PILOTBBT 6 (BITS . 15)) (PILOTBBT 7 (SIGNEDBITS . 15)) (PILOTBBT 8 (BITS . 15)) (PILOTBBT 9 (BITS . 15)) (PILOTBBT 10 (BITS . 15)) (PILOTBBT 11 (BITS . 15)) (PILOTBBT 12 (BITS . 15)) (PILOTBBT 13 (BITS . 15)) (PILOTBBT 14 ( BITS . 15)) (PILOTBBT 15 (BITS . 15)))) (QUOTE 16)) (/DECLAREDATATYPE (QUOTE \DISPLAYDATA) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER WORD WORD WORD WORD WORD FLAG XPOINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER WORD WORD POINTER WORD)) (QUOTE ((\DISPLAYDATA 0 POINTER) (\DISPLAYDATA 2 POINTER) (\DISPLAYDATA 4 POINTER) (\DISPLAYDATA 6 POINTER) (\DISPLAYDATA 8 POINTER) (\DISPLAYDATA 10 POINTER) (\DISPLAYDATA 12 POINTER) (\DISPLAYDATA 14 POINTER) (\DISPLAYDATA 16 POINTER) (\DISPLAYDATA 18 POINTER) (\DISPLAYDATA 20 POINTER) (\DISPLAYDATA 22 POINTER) (\DISPLAYDATA 24 POINTER) (\DISPLAYDATA 26 POINTER) (\DISPLAYDATA 28 POINTER) (\DISPLAYDATA 30 POINTER) (\DISPLAYDATA 32 POINTER) (\DISPLAYDATA 34 (BITS . 15)) ( \DISPLAYDATA 35 (BITS . 15)) (\DISPLAYDATA 36 (BITS . 15)) (\DISPLAYDATA 37 ( BITS . 15)) (\DISPLAYDATA 38 (BITS . 15)) (\DISPLAYDATA 32 (FLAGBITS . 0)) ( \DISPLAYDATA 40 XPOINTER) (\DISPLAYDATA 42 POINTER) (\DISPLAYDATA 44 POINTER) (\DISPLAYDATA 46 POINTER) (\DISPLAYDATA 48 POINTER) (\DISPLAYDATA 50 POINTER ) (\DISPLAYDATA 52 POINTER) (\DISPLAYDATA 54 POINTER) (\DISPLAYDATA 56 POINTER) (\DISPLAYDATA 58 POINTER) (\DISPLAYDATA 60 POINTER) (\DISPLAYDATA 62 POINTER) (\DISPLAYDATA 39 (BITS . 15)) (\DISPLAYDATA 64 (BITS . 15)) ( \DISPLAYDATA 66 POINTER) (\DISPLAYDATA 65 (BITS . 15)))) (QUOTE 68)) (PUTPROP (QUOTE \FBITMAPBIT) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE optimize-\FBITMAPBIT) (GET (QUOTE \FBITMAPBIT) (QUOTE COMPILER:OPTIMIZER-LIST)))) (INITBITMASKS) (SETTOPVAL (QUOTE CursorBitMap) (\CreateCursorBitMap)) (CONSTANTS (MINIMUMCOLOR 0) (MINIMUMSHADE 0)) (MOVD (QUOTE BITMAPBIT) (QUOTE \BITMAPBIT)) (PUTPROP (QUOTE BITMAPBIT) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE optimize-BITMAPBIT) (GET (QUOTE BITMAPBIT) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE BITMAPP) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE optimize-BITMAPP) (GET (QUOTE BITMAPP) (QUOTE COMPILER:OPTIMIZER-LIST)))) (MOVD? (QUOTE BITBLT) (QUOTE BKBITBLT)) (MOVD? (QUOTE \ILLEGAL.ARG) (QUOTE \COERCETODS)) (MOVD? (QUOTE NILL) (QUOTE WFROMDS)) (MOVD? (QUOTE NILL) (QUOTE WINDOWP)) (MOVD? (QUOTE NILL) (QUOTE INVERTW)) (MOVD? (QUOTE NILL) (QUOTE \TOTOPWDS)) (PUTPROP (QUOTE TTYDISPLAYSTREAM) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE optimize-TTYDISPLAYSTREAM) (GET (QUOTE TTYDISPLAYSTREAM) (QUOTE COMPILER:OPTIMIZER-LIST)))) (SETF-MACRO-FUNCTION (QUOTE \MAYBE-DRIBBLE-CHAR) (QUOTE expand-\MAYBE-DRIBBLE-CHAR)) (SET-DOCUMENTATION (QUOTE \MAYBE-DRIBBLE-CHAR) (QUOTE CL:FUNCTION) "if we are dribbling, then dribble this character") (UPDATESCREENDIMENSIONS) (Value of \MaxScreenPage changed from 0 to -1) (SETTOPVAL (QUOTE ScreenBitMap) (\CreateScreenBitMap SCREENWIDTH SCREENHEIGHT )) (CURSOR.INIT) (INITIALIZEDISPLAYSTREAMS) (DISPLAYSTREAMINIT 1000) |{DSK}sybalsky>lispcore>sources>APUTDQ.LCOM;2| (DUMMYDEF (ADDSTATS *) (LISPXWATCH NILL) (CLBUFS NILL) (FINDFILE INFILEP) ( FILEMAP *) (VIRGINFN GETD)) (DUMMYDEF (* QUOTE) (GETP GETPROP) (DECLARE QUOTE) (FRPLNODE2 RPLNODE2) ( DISPLAYTERMP TRUE) (FRPLACA RPLACA) (FRPLACD RPLACD) (MISSPELLED? NILL) ( UNDOSAVE NILL) (SETLINELENGTH ZERO) (DOBE NILL) (RELINK NILL) (PUT PUTPROP) ( /PUT PUTPROP)) (SETTOPVAL (QUOTE SYSHASHARRAY) (HASHARRAY 50)) |{DSK}sybalsky>lispcore>sources>COMPATIBILITY.LCOM;2| (MOVD (QUOTE HARRAYP) (QUOTE HASHARRAYP)) |{DSK}sybalsky>lispcore>sources>DMISC.LCOM;2| (BACKSPACEDEL \ORIGTERMTABLE) (BACKSPACEDEL NIL) (SETTOPVAL (QUOTE \LASTRECLAIM) (\DAYTIME0 (NCREATE (QUOTE FIXP)))) (APPENDTOVAR BACKGROUNDFNS PERIODICALLYRECLAIM) (APPENDTOVAR \SYSTEMTIMERVARS (\LASTRECLAIM SECONDS)) (MOVD (QUOTE RINGBELLS) (QUOTE PRINTBELLS)) (OR (LISTP (EVALV (QUOTE EDITCHARACTERS))) (RPAQ EDITCHARACTERS (QUOTE (J X Z Y N)))) |{DSK}sybalsky>lispcore>sources>CMLMACROS.LCOM;2| (Property CMLMACROS of FILEDATES has been changed) (APPENDTOVAR COMPILERMACROPROPS DMACRO BYTEMACRO MACRO) (Property * of MACRO has been changed) (SETF-MACRO-FUNCTION (QUOTE CL:MACROLET) (QUOTE CL::expand-MACROLET)) (CL::SET-SETF-INVERSE (QUOTE CL:MACRO-FUNCTION) (QUOTE SETF-MACRO-FUNCTION)) (Property CMLMACROS of FILETYPE has been changed) (Property CMLMACROS of COPYRIGHT has been changed) |{DSK}sybalsky>lispcore>sources>CMLLIST.LCOM;2| (SET-SETF-INVERSE (QUOTE NTH) (QUOTE %SET-NTH)) (IL:PUTPROP (QUOTE NTH) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |optimize-NTH|) (GET (QUOTE NTH) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:MOVD (QUOTE %SET-NTH) (QUOTE IL:%SETNTH)) (IL:PUTPROP (QUOTE FIRST) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |definline-FIRST|) (GET (QUOTE FIRST) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE SECOND) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |definline-SECOND|) (GET (QUOTE SECOND) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE THIRD) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |definline-THIRD|) (GET (QUOTE THIRD) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE FOURTH) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |definline-FOURTH|) (GET (QUOTE FOURTH) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE FIFTH) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |definline-FIFTH|) (GET (QUOTE FIFTH) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE SIXTH) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |definline-SIXTH|) (GET (QUOTE SIXTH) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE SEVENTH) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |definline-SEVENTH|) (GET (QUOTE SEVENTH) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE EIGHTH) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |definline-EIGHTH|) (GET (QUOTE EIGHTH) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE NINTH) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |definline-NINTH|) (GET (QUOTE NINTH) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE TENTH) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |definline-TENTH|) (GET (QUOTE TENTH) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE REST) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |definline-REST|) (GET (QUOTE REST) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE NTHCDR) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |optimize-NTHCDR|) (GET (QUOTE NTHCDR) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE MEMBER) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |optimize-MEMBER|) (GET (QUOTE MEMBER) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE ADJOIN) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |optimize-ADJOIN|) (GET (QUOTE ADJOIN) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE ACONS) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |definline-ACONS|) (GET (QUOTE ACONS) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE ASSOC) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |optimize-ASSOC|) (GET (QUOTE ASSOC) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:SETF-MACRO-FUNCTION (QUOTE %LIST-COLLECT) (QUOTE |expand-%LIST-COLLECT|)) (IL:PUTPROP (QUOTE MAPCAR) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |optimize-MAPCAR|) (GET (QUOTE MAPCAR) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE MAPLIST) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |optimize-MAPLIST|) (GET (QUOTE MAPLIST) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE MAPC) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |optimize-MAPC|) (GET (QUOTE MAPC) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE MAPL) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |optimize-MAPL|) (GET (QUOTE MAPL) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE MAPCAN) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |optimize-MAPCAN|) (GET (QUOTE MAPCAN) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE MAPCON) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE |optimize-MAPCON|) (GET (QUOTE MAPCON) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE IL:MAP) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE IL:|optimize-MAP|) (GET (QUOTE IL:MAP) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE IL:MAPC) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE IL:|optimize-MAPC|) (GET (QUOTE IL:MAPC) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE IL:MAPLIST) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE IL:|optimize-MAPLIST|) (GET (QUOTE IL:MAPLIST) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE IL:MAPCAR) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE IL:|optimize-MAPCAR|) (GET (QUOTE IL:MAPCAR) (QUOTE COMPILER:OPTIMIZER-LIST)) )) (IL:PUTPROP (QUOTE IL:MAPCON) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE IL:|optimize-MAPCON|) (GET (QUOTE IL:MAPCON) (QUOTE COMPILER:OPTIMIZER-LIST)) )) (IL:PUTPROP (QUOTE IL:MAPCONC) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE IL:|optimize-MAPCONC|) (GET (QUOTE IL:MAPCONC) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE IL:SOME) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE IL:|optimize-SOME|) (GET (QUOTE IL:SOME) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE IL:EVERY) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE IL:|optimize-EVERY|) (GET (QUOTE IL:EVERY) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE IL:NOTANY) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE IL:|optimize-NOTANY|) (GET (QUOTE IL:NOTANY) (QUOTE COMPILER:OPTIMIZER-LIST)) )) (IL:PUTPROP (QUOTE IL:NOTEVERY) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN ( QUOTE IL:|optimize-NOTEVERY|) (GET (QUOTE IL:NOTEVERY) (QUOTE COMPILER:OPTIMIZER-LIST)))) (IL:PUTPROP (QUOTE IL:SUBSET) (QUOTE COMPILER:OPTIMIZER-LIST) (ADJOIN (QUOTE IL:|optimize-SUBSET|) (GET (QUOTE IL:SUBSET) (QUOTE COMPILER:OPTIMIZER-LIST)) )) (IL:SETF-MACRO-FUNCTION (QUOTE XCL:WITH-COLLECTION) (QUOTE XCL::|expand-WITH-COLLECTION|)) (IL:MOVD (QUOTE IL:FMEMB) (QUOTE IL:MEMQ)) |{DSK}sybalsky>lispcore>sources>CMLCHARACTER.LCOM;5| (PUTPROP (QUOTE CHARCODE) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE optimize-CHARCODE) (GET (QUOTE CHARCODE) (QUOTE COMPILER:OPTIMIZER-LIST)))) (XCL::SET-CONSTANTP (QUOTE \CHARHI) NIL) (CL:PROCLAIM (QUOTE (SI::CONSTANT \CHARHI))) (XCL::SET-CONSTANTP (QUOTE CL:CHAR-BITS-LIMIT) NIL) (CL:PROCLAIM (QUOTE (SI::CONSTANT CL:CHAR-BITS-LIMIT))) (XCL::SET-CONSTANTP (QUOTE CL:CHAR-CODE-LIMIT) NIL) (CL:PROCLAIM (QUOTE (SI::CONSTANT CL:CHAR-CODE-LIMIT))) (XCL::SET-CONSTANTP (QUOTE CL:CHAR-CONTROL-BIT) NIL) (CL:PROCLAIM (QUOTE (SI::CONSTANT CL:CHAR-CONTROL-BIT))) (XCL::SET-CONSTANTP (QUOTE CL:CHAR-FONT-LIMIT) NIL) (CL:PROCLAIM (QUOTE (SI::CONSTANT CL:CHAR-FONT-LIMIT))) (XCL::SET-CONSTANTP (QUOTE CL:CHAR-HYPER-BIT) NIL) (CL:PROCLAIM (QUOTE (SI::CONSTANT CL:CHAR-HYPER-BIT))) (XCL::SET-CONSTANTP (QUOTE CL:CHAR-META-BIT) NIL) (CL:PROCLAIM (QUOTE (SI::CONSTANT CL:CHAR-META-BIT))) (XCL::SET-CONSTANTP (QUOTE CL:CHAR-SUPER-BIT) NIL) (CL:PROCLAIM (QUOTE (SI::CONSTANT CL:CHAR-SUPER-BIT))) (PUTPROP (QUOTE CL:CHAR-CODE) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE CL::optimize-CHAR-CODE) (GET (QUOTE CL:CHAR-CODE) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:CHAR-INT) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE CL::optimize-CHAR-INT) (GET (QUOTE CL:CHAR-INT) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:CODE-CHAR) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE CL::optimize-CODE-CHAR) (GET (QUOTE CL:CODE-CHAR) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:INT-CHAR) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE CL::optimize-INT-CHAR) (GET (QUOTE CL:INT-CHAR) (QUOTE COMPILER:OPTIMIZER-LIST)))) (SETTOPVAL (\TYPEGLOBALVARIABLE (QUOTE CHARACTER) T) (NTYPX (CL:CODE-CHAR 0 0 0))) (DEFPRINT (QUOTE CHARACTER) (QUOTE CHARACTER.PRINT)) (PUTPROP (QUOTE CL:CHAR-UPCASE) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE CL::optimize-CHAR-UPCASE) (GET (QUOTE CL:CHAR-UPCASE) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:CHAR-DOWNCASE) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE CL::optimize-CHAR-DOWNCASE) (GET (QUOTE CL:CHAR-DOWNCASE) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:MAKE-CHAR) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE CL::optimize-MAKE-CHAR) (GET (QUOTE CL:MAKE-CHAR) (QUOTE COMPILER:OPTIMIZER-LIST)))) (SET-DOCUMENTATION (QUOTE CL:DIGIT-CHAR-P) (QUOTE CL:FUNCTION) "Returns the weigh of CHAR in radix RADIX, or NIL if CHAR is not a digit char in that radix.") (PUTPROP (QUOTE CL:CHAR-EQUAL) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE CL::optimize-CHAR-EQUAL) (GET (QUOTE CL:CHAR-EQUAL) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:CHAR-GREATERP) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE CL::optimize-CHAR-GREATERP) (GET (QUOTE CL:CHAR-GREATERP) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:CHAR-LESSP) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE CL::optimize-CHAR-LESSP) (GET (QUOTE CL:CHAR-LESSP) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:CHAR-NOT-EQUAL) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE CL::optimize-CHAR-NOT-EQUAL) (GET (QUOTE CL:CHAR-NOT-EQUAL) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:CHAR-NOT-GREATERP) (QUOTE COMPILER:OPTIMIZER-LIST) ( CL:ADJOIN (QUOTE CL::optimize-CHAR-NOT-GREATERP) (GET (QUOTE CL:CHAR-NOT-GREATERP) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:CHAR-NOT-LESSP) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE CL::optimize-CHAR-NOT-LESSP) (GET (QUOTE CL:CHAR-NOT-LESSP) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:CHAR/=) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE CL::optimize-CHAR/=) (GET (QUOTE CL:CHAR/=) (QUOTE COMPILER:OPTIMIZER-LIST))) ) (PUTPROP (QUOTE CL:CHAR<) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE CL::optimize-CHAR<) (GET (QUOTE CL:CHAR<) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:CHAR<=) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE CL::optimize-CHAR<=) (GET (QUOTE CL:CHAR<=) (QUOTE COMPILER:OPTIMIZER-LIST))) ) (PUTPROP (QUOTE CL:CHAR=) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE CL::optimize-CHAR=) (GET (QUOTE CL:CHAR=) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:CHAR>) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE CL::optimize-CHAR>) (GET (QUOTE CL:CHAR>) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:CHAR>=) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE CL::optimize-CHAR>=) (GET (QUOTE CL:CHAR>=) (QUOTE COMPILER:OPTIMIZER-LIST))) ) (PUTPROP (QUOTE CL:CHARACTERP) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE CL::optimize-CHARACTERP) (GET (QUOTE CL:CHARACTERP) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:LOWER-CASE-P) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE CL::optimize-LOWER-CASE-P) (GET (QUOTE CL:LOWER-CASE-P) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:STRING-CHAR-P) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE CL::optimize-STRING-CHAR-P) (GET (QUOTE CL:STRING-CHAR-P) (QUOTE COMPILER:OPTIMIZER-LIST)))) (PUTPROP (QUOTE CL:UPPER-CASE-P) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN ( QUOTE CL::optimize-UPPER-CASE-P) (GET (QUOTE CL:UPPER-CASE-P) (QUOTE COMPILER:OPTIMIZER-LIST)))) (SETF-MACRO-FUNCTION (QUOTE %%CHAR-DOWNCASE-CODE) (QUOTE expand-%%CHAR-DOWNCASE-CODE)) (SETF-MACRO-FUNCTION (QUOTE %%CHAR-UPCASE-CODE) (QUOTE expand-%%CHAR-UPCASE-CODE)) (SETF-MACRO-FUNCTION (QUOTE %%CODE-CHAR) (QUOTE expand-%%CODE-CHAR)) |{DSK}sybalsky>lispcore>sources>CMLREADTABLE.LCOM;4| (CL:PROCLAIM (QUOTE (CL:SPECIAL *READ-SUPPRESS*))) (OR (BOUNDP (QUOTE *READ-SUPPRESS*)) (CL:SETQ *READ-SUPPRESS* NIL)) (INIT-CML-READTABLES) |{DSK}sybalsky>lispcore>sunloadup>MAIKOLOADUPFNS.LCOM;1| |{DSK}sybalsky>lispcore>sources>MAIKOBITBLT.LCOM;2| (MOVD (QUOTE \\BITBLT.BITMAP) (QUOTE \\MAIKO.OLDBITBLT.BITMAP)) =|{DSK}sybalsky>lispcore>sunloadup>MAIKOINIT.;1| |{DSK}sybalsky>lispcore>sunloadup>MAIKOINIT.;1| (QUOTE (\\TEDIT.BLTCHAR \\MAIKO.PUNTBLTCHAR SI::*CLOSURE-CACHE* XCL::*DELETED-IMPLICIT-HASH-SLOT*)) (Value of LOADUPDIRECTORIES changed from ({ERIS}SOURCES> {ERIS}LIBRARY> {ERIS}) to ("{dsk}~/lispcore/4-BYTE-ATOMS/" "{dsk}~/lispcore/sources/" "{dsk}~/lispcore/3-BYTE-ATOMS/" "{DSK}~/lispcore/sunloadup/")) POSTINITARRAYS: There were 36 allocated but unused array pages. ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** *********************************************************************** [FPTOVP]********************************************************************* ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***********xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx****************** ***********************[PageMaps]******************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ***************************************************************************** ************************ \ No newline at end of file diff --git a/obsolete/sunloadup/LispDlion.db b/obsolete/sunloadup/LispDlion.db deleted file mode 100644 index caf1b2fcf606718c62fed06bb018ceca1793dd04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122726 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

  • mn4R2B0XMNZKWHuIXON&)3XTtOb)Qg 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 diff --git a/obsolete/sunloadup/LispDove.db b/obsolete/sunloadup/LispDove.db deleted file mode 100644 index a2ca1ebd6fd1b6043dfa69f8c51ecfe3d6b16f3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85898 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
  • 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 diff --git a/obsolete/fonts/xerox/itcberkeley.wd.Z b/obsolete/fonts/xerox/itcberkeley.wd.Z deleted file mode 100644 index 83219d3b84919c58f3b3f88b10387a39c1f89706..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1847 zcmWO53s)0o8UWz;`(_A}3or!Ga34Yhl!hHcL z`ivDzs~0qegFMq9qd9OCxP}%!jjS_x#s%TyaqzICTI`)Tc`&sw4F|;>wS{N|k^@+L zRrzDtw0c<_k`);nkNp%Ly;e(tBAG+Xs|Y7L)pWUb20I;1F&Co z4&EMq2I|>Mh#7ROF=^*(O*YDvu+B8G1lT0h$?(oxp0X3%NsfhOBt0MYlh*mr7x5$; zT1jZAi@X%F#xQfSb~PADmfC}4a()h;B?ke%5Wt1uW`-y51vyMdcWGXNRdNs$)eJu! zcgneq8j4PXK1y8;Uy*Yl3|GIY2A1R%u1IMts6pj4um2B8>)~9RlocU!AS*xvH1B}M zS7_kBlsOshkmhW-Nm>^`IZ0PTw^JY+j3qhK=OSixU?8d}3x;p5iAGva_GON=oqeny z`5LX1gClx0Rsx3xi&x1n26^)6eC%9nZT@MH$&0S2xnf9Y>&trC9Y1lwZj^f3 zvk^WW#YNE~bKT9Xm$vd>R7nw=Z|7uh+}wMmC(zaDe*+BbLlicScP>9rf2P0ai?%KI zmO9dVlqt6FL*RXgHWtI{z-vj!9kd#+Y=9&b7XW^qBKjtz4^*T-$ZQGeMjzNNhoZ|`?Vjd#AuL#F4?kh`y-#ii+fba*k7Nw zPhY%sB>&gUf^(|&lufxC;W#_hnY0>^0k1mDE%(K|3wli~mR4~C*AT?86l_r4eXQt= z4T>*YXEJprWdv~Lmh?3~FAsjHAjF@1Ci(kV-U{$@g|vAu49mP%0?%EGjlCt88MVaQ zss_ca$YQp%$?v!J>xpA88g_IYQqHh9_)_3R@F_iBt{H6n$wp&&Gad?>?P9&L2{CEP z$z`l01dfDL-RI09}D#13n&GbWnQb06*ChsqxHO zg$L7WDBicy9fqf+Lhy-)Qj%-+XlYt>Qp~d{YfO!^_BZCpj%{+|yt^~g`_KO_D<2O7Tk6_233#e2EiFpLd#C>R zS9VqC?WrfwDyiz-sa6N7qP}?hUYd1N_S9`fj40h*llfg^PkQC%T?5p;q`L}d)K1j- z{wa&BQ->j*Z!6uM3^<_en|r(XCq}!jM?r${ zBPU*#73z_bJiUo`VoPhoRt{ma@7c*kHs^j8oAum}d zseXpueT2qxKt01G->;f6hWdTTjgNRuWq7A z(%5iAc%TLEPKEf;JBcga@%m+VV>nhJpgvua-@Bn75B}AF+jZrP zN1w*HoG!W5{=);0(4h6Xxum+b%rfTok;oyYE^iqstyL=6bd_*Ww%||BG%@)&@#WTy n_4OH!Z)cLoy#O*Y4*9&bJ((Y!-*Vchl>kh;KM(EwP)q$EJcY4! diff --git a/obsolete/fonts/xerox/tffonts.widths b/obsolete/fonts/xerox/tffonts.widths deleted file mode 100644 index eb47c1f3662a2acc2951d9fc586e290be84f717b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45408 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

    D7LV6?= z>;rq0MiASaui#Vauk-8hfWFRu-|O=_syC>qld+-jt5AVB|@Ls$V?~8cy z4v8!8zx(m-yfg2{yYha!Pwy4#?QXkQ@7R0Vo4arCxO?|by=(8@d-krobMN2#_#VE4 z@8vuBF21Yp===J9zQd&!G6iYV`~>Tl;|l;Jm^8sq08#<~46Rv#0h9n0!N@HU2=EaB z0S^%v@DBk3AI3(n1v~?Pz&r2>JOsbM2k;U+NJ_z9@DzapZ^38q6}&FX!DH|ffd=ov ehwvS|2yeod@F+Y8KftH(AAAc>!mIENJOvM&NPwvT diff --git a/obsolete/fonts/xerox/ITCBauhaus.wd.Z b/obsolete/fonts/xerox/ITCBauhaus.wd.Z deleted file mode 100644 index 333a6174892b50d110c86870083be751aeda05d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 942 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 diff --git a/obsolete/fonts/xerox/ITCGaramond.wd.Z b/obsolete/fonts/xerox/ITCGaramond.wd.Z deleted file mode 100644 index d535b574b78b3772d3ba7e9ed1a3a3decb2bb056..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99911 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

  • MXaWczAj`E11eZop$0yNXw)zj5rpyuCeY{Su=qpqp>LJRo6nQQp2ob zT~WI}h$mw7eqY)h_virGvJ*0>vl^bC)4!M8JSlo7?U7$_si>5RHp(zigp$to(32r| z+Jw&}wq(%w^v?Kks!rQTbNY`SnLHMq?U}OuGPOLfB}F_ZBkg6NXFW!)BFz=cVSZfO zR&?0ALC1odu*yZ_RpUMaW)S`Sc_bQ86qhK5@?-F@`7NsCn$TZRoU?9TzOzsyIx4Wp z29xZ}je^yh9l;U+u9v=6W9UNJC-QTUgiYkqfDd{e^Vt!%;p&|Dh;Zg_JI3A&Q#)V$$7)eVQ=2TC4h(!#h zC{hSiZRAfkdAnohrpiVichZdL6=>`enlx6jQ0cX~8@AB%sw4X4bDH9qfhBpxR1*QQ z$nZalMzSzx5OsZV=G3VI(Zccu^K(<#LywJRj3%IL`AjXDmHY+VJM(ugm`@5GM$*hH z+n`}8oJk)A;%K+9IiV@vsRAqYXq>QIIJV(2{H@k~EQEsdb}q;A*K94AzrzYppix;$ zV?*80qeiB~)iBvRX{jsSaczz9DHz$u+dt*Z&H}3w2M8~lBbo^GwLsUI4CY?eEf}sL z6Grzfv?+>p)X1PxqnnBpKTmu~t6?iGJXgA6_%@CXo9Q7pT9o+d?WOmobs${)S6GaNnaF>TNKyz}OR+7GwMcj-Gz*oQ6%4-%LL*7^b4tP-jXl*P8h}MPz5v zc0=h&o_>(~Q*_4#2JHU{R=$6}K2DRSEIUfoeBuR0Hn<`#Q=!x8rHEzBH&1My76%2! z8{`Yxq1QiG#(jyPCzmqJPs~{^4x12^P=1zJcXV1K-DqNL4-`Xn8(o6wl+&H-pHosK z2;0NvYeHTBBW+Zys4RDDG=#0wZ#lM*cbopu;wJ(xI83Ma`JbuRJd<_k{I)N%GQiW5 zzdqaNe1)vhFHm2A|4`G1Om%=8e``x+Oi!yYB40rnS2{2G(ooH%-an7vmY7-y0(Yhh zS-d&!w+8Q|nxFrlt)?w6ACvH4XY ze`61oG1>dVe-ZX(0siX(#o700E4}5u)EA|rrByN1VOp;zsvqYjGm5s4Bd+IUQmM{D z@ciSU-}g=|lx{`WZ~8%GeqRFlFrIpF8R%YMSk$|$m^)c!aofgVj>-@F2GnW4wm9Q* z)IYw8@q_K6fArODnGLJN9A>cSmJmPI)!#gt>?bSzOPXdV(SR6(I}6P^mzP#` z(iUk;Izq~MN&%{%);X*sw%<(-i)D;&ST+=h@)JVc~l|F?ohKIPJk6V*(*6 zN=V08uJJ_6-^$Cjy~Js)oF^aH~sZ*PI+$P23Q_W+{w(5Er4offV+R? z7ujw{){#R>tstqWHKt_esA2=OQ$|fjas|cF>M7G^b8GmMZ}xN9$@w&AA-(HaicTxJ z4x_%8HR{ekX-Lucm`bb0JxY9cqgVtusk{O0OgixZwQi^K0df8N7Bb|@SjXvi5o z@ik7)TQlXEVVIM!hiOr5i<5l8yELQEC&?Ml1JAft80Qy?KS+Nc8Li=Q+x=%N)~&8$ zO9iO}e5hVG+%Ui6^sSV^7Wjl~UQ;?@Q?dNN2JT_uFGQ7l#YBG86sk_eP-X$w9MeRz zR~~8YYN^a!8#To0Hdu<6o@^-OBb|W|eSw8ohak7l?n%MqMJ+#<4=_O{RU??BQ)c;5 zJs1ZRJDlEhPb!M=a&K*-@*Yn$a=AdlOj_NJ^2kAk$(2GpHlzR&mX!nm8&B{o{=ndn zL1X0q{2|2L6c4BZSw;SGo?OMsL}x8(BA`aV*YUJs-;?-0cs_U5of}W1J^-_wgJ@4% zEC!Khhwe{lfyRRGd6`ON$_d5;m0^-~^56=Hp01s8cbTzzTjO8Bgkjl^AniJOr2O4V z%{r~H@LGGhm_rSX+)+7PPvvoca3nWu4OlOr>7=-X7ru6~%s#*ckKsGv3mEuIe5C23 z!lzkP3LN2{3zHvh_OmPXJuT3`W670|Oi>WEfuAz2)6!6WC}a}gVO5I5tqUC1PP!&3pg_Rx#k(3BqC32%lN*!gsKZ6LQvlc?za^R^57?9|;E}*R@(gBp$!5`qMD<(rO zGlrGI_Mnm_J+ApT^Lxnuz5gt}VUtsrTc|rgEp*~|E_a}-pf;@>6DV9Z{Q8I}m-Q<_@OCzkWQ!Ph|50R_p{ zz;JI(Z5mHrIDc8&$L^l+f%03y?FMHj2)?y=Zlio4xRX1A zzoI?3i*^oGapR-s&ye{O#k{Sp5vCQAGu=w(Eh?JjZ-CTr35J9qzi;r{VVCn)p$^s$?Li-UFQR2;p%S1d}y!o~)!Wdb1dKKa`RjHaf zlPXhq#U8RZdg+Ov2jsbz)4D)kTDabumz5J~Q}Kbme7Ll*lf)W9r;vzELQiGx@aR1| zI+9~>FEaWGLiof-hHOODxgqI1gSbjnf@GIF3t3kskMuD{`Zgb~m@7&$pFH00Z$xdR z+Cew232qD@54m&(#mRx!vmI64fDB!UEf=^}r3iBG6Tm*cWd7}El}WR;`kV8Wp@ZA2 zPJq~Rr>V~-<)m=e<^5RAstw3aS9~$@cGY`Ye7+#{)1bi{A(-RoH3Q4S>KAEt)A7%* zq$|9my+05tvm`UF{I2X&aDciFU((^+4)FL`sX7>;5I1n){u8!Wa18(BPi{@}eFA6G zI0-tDNU@OBeQWjW9#1YVzj!O=`>AddPJo6FxzfV*W9lX4HHf6^&z(N938d>a6$XBZ zIViW`eS`i<;rVBuXfnpgCkj=5rvQMHV?RFb3*rNWIJNK-;VtlzB-0~QsIXzMc%o{9 zaNz7z%2}53k2V#=zqh0~O?qDaJY>k0{6)C#6q$KmALWz!%Jw`9=|Hp%v4(Gyi|n?vt-ZV5oR_Rlq0nHJA!Mvnxs& zg$y~i?1hKxKtyB^bCrf(VqzuNuE=5%Yb_X6F{yT%L^>S14#2Fad^!Xv9+e%GKUiw| zN&@n;<>xy^pG6NTUJ9-g5(bnR^UGH*F+ASbA{*cyspXwfj}bvFc$U`!GE9+aU>{lc zC@s`Fq(#Idbw(z$NraiEr0m0}1MvQ=m|*e$CpbK%LD$XK&-U6ps7-2-F%Pb(;v%ZM zSaj76v_!~cT?ht9Ga#lM7bN6gRLWN1AQ7tWj}Z?N1u$4+2Jo-QBql%ZO35C^f z&bIqS3d7vW9DkX_Nb{`E&|H1$_lOa?{Uh+;jKJN(F@$>P&obE_p--8zdDJHKUgd2q zVgu^Q`q^3n{ra5M_j?z5#6v(UezLr$A1)>-01{vv*r7|A!Rri+Ve%q1ngzz#g6@!2 zV2pi{iGIils^N^_^p^lRFOwxaEeKyce5E-_7w_6=qqqPeM9??BEP^T`$fv>fD(srOud!{I6nFppw3b8^cV=lh#gFsjygf8M&d`1Abn7X zH6-$XX$_L(E(T&jI3OQoKr9IqQ32Y5Kb$B`SQKm4nBAw%p`F|9hcR1DW8^=Fq;NajKD=W@9j=g8LgG0yO zvO-8!R+2>DV;_5$RoOeUtYpuOgd!n3J0TSE^ZWDp=lwe#__q(8$xDS4J zliY`Phk~dQMJOR)kxp!k0(t8MHM6{3CSPdeEa+M$L@?&pS1~S|ucfxs@;a0NT{Geve7u8N`s4#1SBJ|}V>K>Kq z!IBdA-s~0QlAB7vcMrDSxkDJj;nPluaxv6QwaO7RD=rdBv_Sug1~EK2TXhx|SVU{l z@zOUeeN|?b+l$-i0&5WKY*H44>yIT1BkiX>-P-!R(kJy%x9pJa)YaELycxNHjWq9J zi7_*)92-_=7*w80{p=zLRGjD)w8~zuDCy469yfBYB;`?+{f!`KzuGD}4t27ot^=Wj zYxDkYxG-rEC@BuoMku?8UnG)pA*y(`<(q3fGT)aeCf@KT5gGAa1aX03G}%u=2Z5(C7jZBIX*XQ>+T6fy+xu3>?^j9Ra6v};Yg^SCN^O$T`pL?y5J$C@TI@^e{F z)N5^enAC%|5x#1~HkrV$%117!FF!vg5h8hbY9~Y_0HtIKBIE+-4O7?@7WSBe!i%c- zJchPFp9$K$6fO-V795rY8N>#JUOO+`4330Y%b(n;!+NLqt3S+zZgY>tHoQc#TdR}N zDPaSNw)n(3W2X3OwJU=Q1niEyrPpg~kLlL86_jyi8=>NLs!o;F`8UM@oM6iUYApDl zE*?QUQGr8Io&LUF<;?(b&^(HIjt-Ly{A?FsxPFVQNJGuQ>EQPrWqvG}A@7QdNx;|d zxXO->Ri@QoMK6hh;>McU;ks|66o-;kI1MItHjrkTFW8(^;5wAmt#y>u5+8DptynaY zXzbPhA!XXK4CS`;^p#gNoSUr6l%XkyOUc1)G+Ete{B}{Xd@FV5hzp`$+H-L}MjG&8 zei;T5BW?QVkNtzxvLC5!QYdap$4A$J3m{;*E|2RP!-D!$FIvgYNWJ{)>w;|wH_=86 zWroI4qPFtP5Z$MSbtQtPELd_+I$&DKDHM;9rD}036sCqUF&t2BV8)Ctj((qm_mfxC zHFXR==q6oz-VoovbwOMQpc10Xd`^rQH`@Wz0Xs##Fsk>&wiO zudb!&1my(I^u+mBX$#f=0)yLv%dxeX{tq=%M{Xh8ok}K}b^`l|SIl2VZhuV_r0-%* z?1U9{SASxaru>)5`A^Iv$(ALI-#~pxu1wur+W+}IzmG+{PMLE#iiy+YsDiFmh&hRDB5&M^M(2WU%o^1&ST7YfSJy)~}CD3jakRbP<4P>&HdSy^+0d5I4E^M&Y%=FlZ4Y8_nDBuU8cGdQbiI9Ju*f z;s^wo)IkN$Kyb(hgOz$K!rRE<$BxbM*pwtCp^yJW5T3>dM|kDrp^<>1&lOziohbzu z2nRY@YDjR1R;pM1Yn1pms`cWrV8asdHQ86rj$1o{_;NL#=26fSQm_(%a;MetZhfq0 zHC2;1(7!R;YH%!eeY|73=05%3PVhKaidsyZV9~qyn^bz+{wPhc2)ehJ99ww)bLxqF zR|S8t(E5*2K@%A7%rpx|5Y9>YYEUK`5bun=&#XiJDgYqL3ZzI&J(w3ar1WBsg9DqM zz-HZutpKtobqrH?*{Qgnu&S*Qv6{*k!oD>Lu+m6KaRCg-Zzd9Yq=^Hd%J%(m@I)0S zAT$jCEl@z{7SK7>ih1^7_?T`AVw2ukuGtvrAdKJl6$h>pdj!`vgK~A{2&s^&B zcVV7|cq^?4C}7QSU$P7*_Rz#2%s(H)$uLu2GHyt>*B+ZyocPH=_u!sM^H7?9c-max zlj%J^miN_kYnP5oiOpw%AHip*wG4w)PnNUMKZW9QmRp-wV}s zwOF``q8CfrnCFewn0)!Z0xn|)lVA7o<#epsVCe)R6Zef?=u*^z-I95+nta!i)WnK8 zil*8tY*ko%-{Qio6ID&8N5o9FJ~yFzW6g*|jnP0cDFpGEAxL44l6X^0%M3zB(U1UD z++nQ361u1|MqYDj8y^(p8p#rpww5@VLhqB<3(cF)Dk43WE0QPalM2<@s_BrEe7^^q z>5M@SR#fm>do{h$a&_{n_X~2Q@mgNeQ-8`7Tr#eZ*^A_h-S3XuG_4Do`P)XEtptM@ zo8>(N215OZ;ck^WQhd&KSo}M$*VHS=t!-7+XWO*zy1nY+!gKMWdyH#^0SR=UdVETs z{?|s6|INr6XUZ0-c%rBOM)X*^gk(0uU?dvRUcHBsR3 zfU2?3po@y-}Rh}iiH_if|yCckwr*=$CIpeAE_0?L^;qeSP5vtl-&b1ar%I;8X-9cy~gOpn)q4{hp%nkNb&2;ja zWC=dm6TUE6DcN|#o<8D42@+D7u`(DanKSs2ZT9HhCaNuC496`uC=(WL8_f<1Z$__2 zMi$K5fEvS?lgWx&F|D5x*Lt=~+Mo0M{kt)i;w*+2KmO2O_cKKCOf*^qPl@{L;`498 zX@xnzJ>g?}>|tL8y+==G>YFxAv6#5Ot*TX#>mOQQWc{O_wfTVIxuJ^;E6lp_QcsY6 zyV|(i=^*=juhP^T6>w_(p1xAB8^~=_?v38ws&4!4{f6Nmr`C$ttph}&LJi89{|*~p z@tDKZpQVo1d*`S7G3+-rJ^c;^I(n-XWn}W3S&DYH4BFm-Dv3E;tCb;?8Ppt6H*Qt8 z4{t_Q{@Y6c@9QW-YKpDb;#*uqvvSt`96Ut}X4X^HD#pvUn&T@tX*nks8>_Xvoi=V0 zP)-C$9Rn$j}T9*S-DAPs(2Tvs2(GWoCtrWb{N zPl@lQxL@WU)gng|*%ILSg^gyq^`S+Q8I2J3vyaAE7p?m;oo&VgU|f9?}Pb=B|MUrK$WyX@H&Z>SXf z7n+vFqPXT&<ev}lY%?@zefz=-R+ z>^n!WI6mK+7QUV><$3=$Lb8&0^2Ii9%cB*c0!+t{I4qsT!3k`Ugo`zZUMwgUS`OpSm7G1p#O6}XI7fRTw2~)@1UZJ6~s#Q;dJ2Gf8ioK^pwD2*P_Om#sO3iZc6~dpKlZ<)# zU$!!>Kc zyYkwDzh#K-A501c2ai5b0Bs}O$-|ehmLmMvE(FyA#U>AP`M?RH9E24~TIJid9H``K zQ87U>NFHb>dYs|nG|fMr^?lpMWN~fk(ViBMTil6heh8Vm{UkClDMC5ZuW#pYbG_gpvklP zTO7?nYUT&$YR7sP9<&E@?TY&s-$y9DaMOrzE?-l7FEo^q+r->@_|s6mZ)SLOYcg3Z4SrVN z>BOZtq+{g@<#*@;yd4cBZh{kf7#oG;sp}sP`kl6VkCTf@bx6r3gYdrF`&QNN0#Bg< zjG8(%G=U=8z28q&inK{WQ3m!Fr7>P5_YK4=~_NSLpHgg4jh zZN8(d!P;HBRdw`?e@9Zketo_}d$C~2fLZmI1%o-$bxiLN`hcAd8X9LDtYkt?yh{g_ zQhhJgKxZrUv$K%aBfb*_@N|YQGe7KLOazskK|8p{&|t15sn-)e!qR6kQ?}c10j9{w z2~gn`86wx0aq|0QmR0cBjVf<4g>hJL3rH_i*!HK5ymwXRSGTzi#>h0C%kJKG-EG>1 zEA{bXf_A>FhNXzOefTIl+vxVUVLK=~dsy_Yzl6Lf%-W7VK$6Ew zFiuA%9yOVt(6RlFlBpU99d(mrPoXO(sK^8o|Chl`eB?}JvPC7nJRhBIog$2*9+#AO zS6}1aF(a`Z*M^sIZ3w9%yds+;>s{$4ihu0rv0CFjGecFB;e)3=O*K&&xoi`aTQ^6OwOL1ta|0 zN@1!|q~sLicZt?%=&;Kw+iE955YQ#Ymr&?uq z(7#(vT=8UoK$adekv`hWjF}7tC(efu&)F z)=y?KK#(2^vjy;^SvTI_FYgH@v(-^)J^LQ;mUVO7clVz1sYOMRO!!9MI*b|@n#+v# z5p3AWaF~_&(FycCpW^;$dBmM3uA={)SHe`FTJ2Nz@JLZh>@~6>?6($fLlp-0q3X4;r$o&y(4pY% z(r1eL7uj~YYKk;3cxo#!X(XZ42*#>3ml6}$EaIt zDeSCsPM^@p|MV8t2L0IZbfkWpNv7dqpEKcE9`=(b#x*nVh7(kOpKeC=t?2K*KM9h& zZ(04cRfWsbG!H2Nv4YPb^doxq508r6U%#x6o@(kkeP%-Dg{k+x-S&@q>rLfrIj*r` ztw1ZEq@LK0KgJnw6q1AB~Nl4e2ZoIWa;VBPi7AY*Fg{v)o_R%@tF*aAqGx zOJp_k--znMIul%rjtKes)rT~B^+pyOzO5t4ZVi0W-U}V-x3fJ z8P}}Ug?{kgezo(P=CeGE-yccWN6}yaGAFoQ(y0V#8|}C_jEaFV**t1T2=ICLc7iH7ILIIZ)FLIdEs47+bx^ zy}fulu*2j?Z{7stV@qk^sqbYIN;=)O%c82@=lQs+;a2V~!6Z^@YiheH^sm{!6% z0h;@<*Mi{I<0nVE#ZwEDkBqB`_TMWCIE{nuAxlr5rv`l+tGZEgU$JL_4xqP*2LW%I zCe-hFHYIf`k{KvL(9KW7f=w~+oA_$WF;@8+%3;or!9D51$MAh{SNh>D8Hk--{M69Y)Q;cMqx$A}H4=uHM4FNOSZ zQ_Qp+(A^I?1e6eTL@4gI?*j2zXu!gDG1JHj<(jvOf4QON;R~e%zd% z4)^_WGe13MF7eJ`x)O^3-`iXKjdd?a+Uv_q*I)En*Btcy)*7<&wivOFcyISWlY`4- zQcXU{?8)o*WP0C*g`5UEmPY2KYxH+!_iT**W8SFS)IAbxz5VOALa*Q_sj=;|4K0*z zztVx*can>|)zfD+Yc|xWU)3Xk`QiQyT3=JsNxAgfPpZsC$>tI`WP^RdlTxDtk20SN zO$Rn4NM2`O=arn;_kEbEEiOUl^zub|Cy0{ujg@Dmi~g_FZ!;}N@G{=h}#W#4@Y%dwoG`Huq!vB&AH z`cpqmq+9&KEf1AUh1|j?Qyvg_xNQl->QxA}y4d8=|ENWCNP`G_E!Ir-o&eyq3<7)! z{(aEDQg?4hW+geZ0f+}#bQRQj!jb$RB`p|TxerE4-n!l9HFZ~)Qq_=V*V1}GuDk_r znOA$t~J_$}cXPl}_L)LN*XdDzA z&`FC9kBmP^3b`p@7af#7K6pq7r%%!wo~wVWCo(NCTVH1~7&u&dZHrN~L!QOu-EFf~M%->H%zf{bAXSXaJ-l$-*8!2fs0Kk|1=1`(awE6AYEL#(>8DXCA57i!D zh24%9+z#DFWVx+8;B!iGmUChakC0OAtpSJ1o_>n&DSf5`HRnmsww}9k3-S~xlqXiU zON32ctzKpt8-MaWtPK9BN09JINAwIkD67ZqH_|e`Uj}h}n5$R7w7{F{b%4d>2FwYL z@tl7eBClf+CY{zB{edRnHnWaC^2)S{ANj4JPA@i+khsHzP}#0pJ=}`awt2oKb>>-p zO>(ceo1{<9)3MIS zvPRoJSN23ChsP2#x>O@$iQ#&8yEYz=2fU={!iV~Bk_w#h>pq;Gx&K_m(Fox}`D_5` z#+-Yy&gFh{5Mhg-q1A}r?dUUWRDbg#5&F4Zy*F1FIw7z1#-((FCExJKzkbt*0ubkn z&O|7Db!s_9DqS{@$HIKD0WKAgNo=qnEChWeOZifu&}{z4Rw*W1ro;f_pD0 zJxMRaf1DB%t@rYtY>2id?G-)Q^lE*z=b5`SX3dfRx@^lpuXayn!1LJaiunmsM*}l= z31mJlB0kr_fSDj*2Ku6&2?%v^fpPZ*0Z;H4YZWj^+{0?{=FQUp8=Hh%JNbL>qO}^C zdP}FC96t^6B&)g!G6MOF9$1~WyCMN@;;C2rnMm~VT{&#|c}i^7F65%)yF!UB|m z(3Id?sw8tEM&k}$n-j&)AKGd)sBkYY>K%B#5(+Nv{ov8+_Z<>sGkle{{oeNRLdFSe zZfCc{nVq~u!+a+C(c?jqFt-O4MH0e|z;RA{-{O~x&f7J?^TysiyA3$uW&Cs{S_ftIoqdUj}B_RHnLgn zg@>-TzHlX-PbT+O?mtn=#FkZ5gjZaQ~ih4P-FOre+#E z`BI7PU*+ZDz^a7&m%ZR0Kj+&1xpeQGo>3pVj~~c2f7{J|$Ed8D7;5yb+=>2trp(S* zDzY*thR^J<>5j}H#PYCyztqC~ZCyvz#H%0w>h)f<^|+a>U!ijlVkU=F6^JFQ3EIXs<&)64m<>^1ff<*nd;we!Gx#PT>wH zC;;&RHaNLqQj?##f8Z#) zgpf{?uiR=qxF_;)(zUAEP&Tf)Qx4Dnz6~EYhcHfm8#r!#e_w2F`ndPPyW<b#Ke+{L5I*|?Jy<;Sn)pPbAn`*<%@ zo@`$Db}YO**?s?@W`4kD<03%yyXnb^a^S1)NhiOQ{Vx}WPkt+hTz)@0xd;igU;KHp zb`i?8xN<_>{`C9e;mPqu_^ZX6r;zqg!zH0pCY7-N7Ve$W|BFgm`tS6bO604)3|8AY ztNp&w64|f=wMA>{o5bV2<&IPFc3lb~AMlgstyL>^!%Ktr{$=&J9@L+HyL{SpQr{jg zM)#+3D1d!-iu;b=yQ&qbBg;jloZYakslepRaE3qU2Q$TH{28xFSIsj0!=%<8+^ilX`++Vb&&=&v!!WZf2Eh3A(f~A zX+?wfill4(vcG2%&1@J+e`P7mg+>W)gZ&j0-!d*q1fh0Q;S<=Cs3LXF32&+2LSLSj zz3Qq88H;(a!BO*boBFkD4s0Na{7i7JR_qb2R{y_)XF3u2IrDW%dBSJC|K^4~+VX>b z1P$xH0l54B{z2#=b)p+znK2e#+W<~?o49gbGZ!MYG^5 zR(+-=>e3f$5i{b4PuO%ixI@wLz-c=qJ9Obeq0PDjGd@p0V*0$ewVF9fRcAePjr#4|KdcC}F#8trZd z&Bi?}d58eiDdM{*agQFYx%{wb(AfRVC=tCyHM3#9T&nj+w%P+%216eDJ4}>icS^-A(rvCS}*uqn4 z;;yflIG0&l^i7!FBRKJXKj2wJ1MKZRl?F6{AD5cgM-H}-yv1U~`$&kxbvdBsYO4&$ ztc^T#>H6!<{G|tCMCE8|TgCXi^kd8K*P=p~8EtYrw!H06qPx)s@BwY(1aCG^% zbEl%+!Q-XXxQyuCl7wOH5j%R@@68mq;xJ-F0Qw8p>}UhWQ7m$4Zbo&vYL5ey!~kBF z&P&Wd?UF+B=O$?)i^RU6wCHOW?$*nBdMtt)*KZLzoH%~DLa{on#X26&m^aZ4z#trY z1W}Z2C~@!>#HIUp)t`IgfQKLwSNzRa)BTh4Ck1|bIa^hnmf?941m<%Hv`^rOE}Y0k zrg&&zY9RPnpp(83{x#-U2vJ*_qO%V|692;mPctQx_PMz+IDjT}D)&F)1O^;954gNh zX0!;2xl4w>%DMrWLA-z*m%p$7+9Qod87QDWqo54pc?V?Lg^sGZRPAPblQm;0PN7F& z|C=~Wui(yH)$Qm`ioB=G*rn1;`%?ieL{w^sA+IjX zgxm7rl5YwaA)8|yEMg=!;5X!8*Z7DKam6fhN0*XN%?Nf|nIcY<=u~#5dh?`s6aw^Y%VoN-d&*p7-WL=bF41_P?M*X5%T9C zwG2j-{#rAR28hN*g9wqQ*2~RuGwktt#!McbC<3ZNzjW{m#H|=%cVhxfc!w z2tL=STFUiS*DwjSOjMk%5Pz%>a$XiDTXKD}dtnb_s}^-@d77`aQTdU*4l`Ht=`M5FcyCZ8?L4` zHb#iR)=a5``lv+jcNOO;8z2cxMejaC55q#chEaC=0KSUk|d;uA4V;@wX&X7=JTBg9q8-E(;wFKESefRn{!D8{cbP>*$wtk)-drF9g(D3*og@B;vZ2Z0;-#RoM=>pO4ll|D zqnEYxGpU6O%7i>=_ox@=q6^fpQ8UQc9wI1+#KZ#b)IPmGGm_6W72253nn}J%9l&FY z^yA61we7x!w%gNX$;r_sQOevV!N?3j+&5$drl^&H4FM2Uv~9+U<{=0||JP)~Rt{LS zec{uv*zWpZRG{~c(d%!$bPns_EsVkuWqyQ1I~bV+{j8ZF#OOlF?qH*S?T&|+ap2Ev zY2KF!dukxhgSf zQEe{QgE629kqH((KT>m^%v0JLulwIu_S6C+L}VRtjfxRi^8YYzI{{)Z0(f69Xr-#pH!aLo>CA!JF(H|e-b5C_2;$I1kpddv_4gX*mi6WNIsxI?|l+8$@K3@CMuxcZq| z^`vC3^t!;H2W*&NxFb?LV&g#5WIijFrc4fNT0`k;5-RF=)N|88 z#C!C|2+v@Rw1^=mEe#b)4mPdED3g|(bk7X)SGPaeZuSQFYf-9BOo2;lU-NT(8f=3} z*E=OAz%wQ94W(qEUV5{`IkN_-V`N~2X3!9apJc`|x@3)I{G?&ne262!G>zx07Qo-D z;HlY6OBZ<_;c9RvBH*+lJI&0@)%kJEe7+GlFfcl>{r5$nb1Zv>?l1AcU%|S~ltbho zObzBMxf4ff1R-Ldj2_K^OpUmv7IZ3}#~E8w9bMP6lfRP;=~6xiVBmkAh9XeM;z+_x z!_Dg$x`)n2Y@A=o!vi;T1t`@-_o9tk|1PDAK0PgkB^y~=qtls*Y=1)k+c+6-zo28# ztkD2rN+XEPqMMvybnl~E1kQ%I^Fm47iZ&aA2R`(@VM(c84gN6VL>pZQ$y8zWj*dD> z4xicLjE^S?P-^$3!tZbaJ9l<`B3by{(6h9E*eX<5SspkGDbOt=k>U5horn{z zsX*=Gg(XrW6>hWWi=&yGGdg= zS-F%jy%$SluDgd<{40v0F~X1_4^8M0E^`nj#(atp)L2|Hq4ty_OynQXm1m9@{)D4tRu-x}pA@+=Cb%ABUCEpNN`4n}+hnVs0{fLFD zyp6k3tdQFnrMlv4V$V!BcPQH}dnxUz!O>G2n*@w5KBl;PL^INb>S zhkC}tKJEzNy}N883at~?C|&ilBaPR8kJ2goIiMfE&SY$%>lf?km|ScAkpD0<1CxpX zDYoO}k=gvBhnPHuIPg|)_;tmUsvBE!ymob>8V9}fYz&yb2e_$;KEzwn$4cFNGW8so zQN)BL!+^gw%)_cC(#As7j54OJ{caEONng{QIGA3l*_+KlI`3ACUeT%-u6nCIa~)WT zC3Hf8p|j3s;bDv;(q6YdQ?x)9SZ6Y)?Cm<7C$XHYWS@Uqrf&$>1|DFJIAg7{I$ z5z#Ox;>>_&GwvOu{<{Y&lh%KLqBE+kCdWXsw68hS12_r=Skn z=#t_H-WOv6&IC~S0w?GcFH%0p2n~UFs9}fWYHTbrNy)nuRB3cSk>!{ON>Uu)|nC+ zX!|;!=lobZw6`^NyY@(79}hAO{q&H@?wrD(ap2x+^ll&c)4BsbSQ|xGNN<#V#QFl9 zSYNk9JtGh%bn_*=a1^~%A`TAf``8X>;nVQ&lvOQi$)4c%gSR%47*-U05k-!@wya^+ z@p^AKOj5+6PE*Syx+w+XAImB9dAK=AxiC8C@g^#yeCSy8hKETiHHl^*1f!X(O2nf})55z0Tvk^iVl6 zyR^zv2Zx)_knk?51?55=#-LN4{Y^P7DUHXswBeRo+gpqW~`;NVmM&p0CwV)J~<(SW&Q_O4S@q~p!EYxe|=^$ww)lN^t#MvwBn2RJLHT15F zUaJaT&~jK=(w&j>%3Wt7>lDYAK(lqp|{i=dBCOr;= zf%(SqznsCa@eT4}1Zlq}^z9eDeW&^9pFtx3zzwr++EL-DWkR#_c6-g~ zS@n?3bOHliFS@jIYFz>4EV5aH&t!D!Hfo!I|CI0>CNQFsl=dA*Jc(Xrx6*#TuOkZ{ z(ExDX7~m9e{=MuI%A?>~Q<-tW9 zSNjm=lUxsI!Lb}kIF_fl)nC=2+#$he6F^8N3%wek;m$51U#sa5`j(2{h=%*d{%U)u3W4Vw8ANq-iANimbme#O)6wlv0K=6bobN4q^Q( zCq4W817S|(j7o^o#MKom+*%hvqAp|LRJi*-J?6;Rlfh5XP1_>dmA=qYy@RGu4koCx zm_*A2sTNFN89C`|vetH%AEzs!{W{!P!5^BKiMCQ~OrnMtJlpC1yV1?fYryq3_|wge z6|PuG1o0HiI4GzRNi}VL9m0mH8+836x5)e~;dmI{|IE*6DZQDGBU$0uo1u^%m3-r` zZqk}pk^z^{tVD0^Mlun$x-QMDN1FHK4FoV_h; zfg0wh#od9U`nUPTE=!2iNq2xY@-JfJxc(^d8LMKEg5VSsV1bGQ)rQuC_(f)V6UWVz zkHz{_DWpM-BFuq*D#;lyiea)yAP`o$C0it8r11(Ev6NJT9+t<1!7XM4AB4G)@@mik z%kRf15G$-{f;LQ1k``R$qGyVUF@#mTc7&SIJKF0-?{8dJ89bo5YfrSU+eExE;X|YvaaF=Tch5@gI zVM5>Gv{+RBm?I1Y$osqOK{F`K{%Pc^0@x_IN0FRhCZIKgyOY-pivc}abz1o|)!Lv{ zK;{QK9Xth__ZLWN4sy(J$5D1cnZo4gF}2awg8cMVDWZIYIGNOXNRXt;*W8V#{d~pR zv}$;VJ&m)-vu;Djj=z(QbeH}q!34H*j?@6v2I4R6-6BJNMAfVAr!?A=4D)p8n16`* zbM6b6L&UExT>VxNAy0CH`xcB5#Hua`(hyH`=Fg?@Ohszvgpu;DBA512y#U-m^~w$T z6o+5je*#N?sbr{l9ox;2{}o7R)lxy?p#i1Q28?QW;>U76mUAtd)>5#VjaxxydW4uB zU!-&JAjBr$1Tggk|HY1S7$r z^!bA22K>s!FBd5Rq6_3yd)GOoO6RY{OPEV&)v9A%4hlokeTra&karY~ITRgXA7z&p z)8nD~*Ncm~ewN`!3fU0X=pn+|uoonvbe5I4zTdeKjq(toznQqV7}6@^&&y*Z6)}!= ztp8ej9FDvFlEq+S(AECbjY~7ZU+oSoo2GRrOG6O-G&yLNkc})dbcpzY1*n*Qi^=I^ zpG`q0hCZ75*FU`W(?h6JrpWNdz;|b99sOjTaXnh33#~D99m{lQJ&%{f1>Ds#yaeYs zyYOY8lHjVhFCx-pOZTzt6_24Gv-tUW%^!s$iBs;OB=HBC7-{x&YQ)uu+)qsq$uh{1 z3xg}pmimIOE&aTaHzEurFM&xCa|@&VG$@}57|=2+!M+Wp6`8BO8uygbetBV%S_!RG zUq`J@&#M`2u^v%s^P7ds&_^Y6JKUV`%ruq{`|k=;$CjscaT9;~f zQlL+BC^Qo#75b-N8)~@igN`=(PhC?VIYoY7=XZC`0Y*Mnl8AQW=ywOJdFX4a*c0d$JY|UqO}15aKg>| zjPzY@sMKIx%!Lt6;E)YC1@&~?qD*e%r2%x5ykh?GBJJmpaUB{aa`0%B_FY@Gzx%h0 z6yyrE6pjZgOauKgP^D0SgXcj83)w6CF6|p`jjdS!!UE%%(7^5u7kT;QdgN3F7zi#0 z0DhO*D>)BrNsXa}0E4{%(K~t$%?c|`q_7G79Wh9CHNhlG!0%lJ{!xI5C&a6UO6aQc zJXJIajPo4;7MUb~GEf2hO%?++#gw$aT{6`t}O@x zl#GB=M!1qkIH?Cr^sNPI!&4IZAw8_*z@JbM?(_`9agPny3G0A-2ShTiVj+~Sf-32V z(;#SG5D3J=45d?{LlS#Up$?2b%7iomP)17+U?QNMUXmdGkvuM5U^>ff0NSZ21)sBKmo3zYctv1Qhprqg@K9KLq&s@FbB!$SOLpmX25Xnde^ScO(MH3;7)suCiTA&}(SSNYSzsh!P>!1@Kn%DCMcv8{hzIhnZ}PjP?C4@GTFEPF@s2EuzUQEGqfTBI21=I) z&VJpIb=t{xSOhun)#}-3$8YgKa?2p4#FvCnbGkBHH$wd-vO~vlJ`a{6*Ug{*Tis2Y zZ;tu4T$ASGu&@X=R>v@P3x_%?3(Ey3AX8W%xL9jlW21|6G=V~=v1QrgaRsB8c)IIs zQk)Y#QdT@%LY$$J_6G02YEz~>drVbYsb0Sqf_ zFZ<@iy;x{DZy2%40^`|vEefcbY+o|DRo1YsSifKmX7mQNQ{OQ3#jme_BZ4)Wk>3IM zmnOAjzZ%O3l)5$JS`7b9vtEJaO7+)z2K$JOiqX$w14@sIzK+8dh#-kR`92O}ljN^O zJtdr^wVD{v->v@U&OJelCqawnK2s``&G&9&DYZ_nychlBk!bU10kuCsR^0p~#-hFR zDpK9Z{DHlo*&FkHj@|~1w4a4wM>Iq#UmXF+M>NDRfyu|?iH#frMGQQ&jJy^eF9gJY znV8K+&|6bH;FUk@3ws>+6MoM@)+04|ozFwB`{6i+&vlZ;tH`|1sQQPE7FPFIrIE;V znc#I5(^uu=tEw%MtkUzba)4?cozZ02y)wpA00r%({PK%t;FFnx>wL49O%wl>Xj#n+ z-6^`Gh_SF}ziaVp_{rOMUDxZZRG@!EgC`PJM-WC+fGlejYR(5hLWA<6PaQamW^%f?Su9jr0=7nWow;89z+mm`&CMlr@ zi|_sHOJvwppOEhMaxM=PzXP8CkD;@SYpM<7@YxtJdK=xNM@n}yx;v!1B^8kvFkp=C zMoJna1+nN7kQNDFKtM_aLn)T1eNx z!=@uDkz(jI_ccf)hF?52zmrgl8e+DR4ru4`ZInuo38m-_&INm>C6qCK*7`X!;AXDx z-}9e=XmzJ5ya<1ReF@5^Z3((dBiqB4n5UAn&KU#h^?sc%i(_$TqOu$9sC)Qr{yK^z zKlE3V3UC?VU1Xc(Gbv|9&57U372xybgm;U5i5C_MrBGm##A$OV*yECTuY{K|;CG7RSk&I?TY9=~(1wRn_ z8zea1euJH}d=TTy(sLJ_ZmVRuY5ly#1GZbUPN6ulm(;KSjN`55ZH|eV_*BJ6#Z1T< z-G>|Z)!l!{RB#v=z*9K8{DS8#3~G6ybbN8urmF*C6M~M>+PZn36IX0!Ae{vX>BY@Ijgg%TTeL`*8gL0wiZ3E>%b?cg| zo%iDzbXF(qVLx%t=d)Vzrnj@+&SD67BQBo|%Xx8~7v#i1D1yMIi4y(wp}v)D-ovtm zh)t8Lj!ToJ)b z(~GZg@fQCusv&^ffKHO^3XD=;+XTf4=6UAD@u}OGCKOzSv=m!jNp;U~Sfhvr_h}}h zEwYPzeA*Sqd?n%%>yVtqDi!o+bVI~Ml0UD><;a9K4A}cqh;+I%AOfiknzE327K-e* zSYg-|331IMa$X!v7x%*YMDR8DpRkhh{-(!X$tQdlp~Sw|CO*2tIgGz&G>VEjp-i7g z9?HqYR|cjk5*4aoBFWO90O7x)5p zs?D#*UdwNV68@?Nt9_taLKC}dz|);I@>FDK45kkfuX4ZD5Je{}sF~Z}Hwj0xhEX;V zk0!LKyn8H|R%&e=2y0rgFm?eCSJGvP9efWZ)?1N;T*pk82<7tPSn@m;980htc?7EV z-aV(f=NdRqtm(I*s8Cg4qKY;)x;+=I^d-*Ik#O!cIsgi4S~S2t@o91zgcBd^j4p#f z;kmLhypDsRQ5OAu8)iWQ~o|2R?ezv_2R8r^o89rABWj!eo{Jwk~?tjUu()n_ty z=U5x$mS(Y(6gaa{qUshZK3ijvmIw*;pEl@o$45wo)xc?#7kw(FXOMdOXCx;ZLR{2^ zW3i27Ko8c@T_0xzHs=M4;)n(iRV1dY2kMgC@?US9+V@u(KMy=iH%VinAKkcM5di3Z zw8a7)M_pMT<$Y*cx&^8z#3v~BL2G+V5_N+}gR0~}Yd&KNZ=3FpgP4KJJEqu%@8%r7 zMCDGGs^<18bJ-)_T@+I{TR2XNC%)Pm-QI0pW7S~fl((qD6IMdgPq0`k)ycui_e zs$q_gy>55#f4Kjla+_Qe@_Eauy7=f6(ym&j&tendJZ5uQ-*XmBq8Oz1Ei==-u?9=C zVZWzw_H@nI&ul(*>tGf3((9{=fPLX>+=BwsHq>EAt~tCB=R|%1G6x? zDWg2h&|Uwk7%B%8QJA~{)gDGq70TXEa)K(HQmK+ZH_lUCW*L=ZBCXSq6zB;GFQLqI zB<6i-T}k#Q96E#FQLSgKGQEq`prOZpduV&W=17-{FC=vCQnMIe&s0a<)C8seYlx9l z6*ywt^7+9{)0c8i8$a1o7qju1<5iT>CypkIIA^{lrp@dY?kVw1`S^8vnoqS?0Jc%C z8vc%gnNM_NQB87D{9G~xlu}7G5TcDX%~%cNpSP(Um*|F=skzVyn3`bsz;tp(Q>zsk zZ$esCjZvi&v0|Cxbd;4^1R&9u&c^OF@|p+r`b!c`v@>z{HUCv*m^g6wW$eU3QXcjf zQr1em10P0k>*IN(vRrvwD}>?OB?UtbVwtFTe;Eh8YQ&Mgw_BczK)Xu+y)$&iY(pb(pWJV*{oY>^Jm4IK*m5W4hd#nl3%-`i`t?IjGi7QY+Z;LD_qv zIYH&7--^i#+RS$!nErRrkQe_M;u12Wr(G3d7Jon;=a5fmPJi(VOdZDCo+?cpnd9a9 zs(ZkqlDBBnaDQ&)IkVu;qE{_!_9>Mkk|HE%rkT&#XJgLwcXCm=d7=Uf2hhK95pkTb z4_=D}-}IQ{P&$PTy2UDb1(48fu%%pibhgKE=eP2$}M8QE?7L zq2-NyCu*LXhBgjdR$2T@;Nt{Y%A7C!Dzt6+Jo)-1kB(1Y^on$c z8MvZvu=^T?>?;j9ZVnS{7y7VvBc``m8kB4qS1G#;0jC_VYmKytR%i4La%a2nO`-j! zrK3@ex}mrDlI?r0x_?0$g)y{@VPB>ES#GiJ;H<>#;e%rdu}DTl=>=^Oa>4AaXRD+; ze%YV$2(AkF8_saByGUE@pQ9QL%$ZC{dWoCz?j4*2-EE)+N?B(IK5=rML9>Ge3RDJZ zu0kA` zj1Vz{(f!qfDP);ai4@Og{Aqg7-T7y&>{&*x_xoqRiHZR@zB>YcZEiChU37aXIs8K4 zAMi$(mPf5_8d5%Iv{yHv$};e8=-bbuyMbW@T~bAit$LQ#+)XI71R;|@TF?|cK<@nU z`TR*mh~%sKVA&@Lylyk`Plh6|2q56N^hQlBiVn4mzU+WrHvX^XER4TtvUX~rR;GgS zmKmhXausz*!FsU zzE*w^Q_I1sRhJ%6u9NuJCDg>DeDax~6M1VYem}J;9C&ob^TSV@WYdz+m5ZB8XxryK z(pe{~luA0I{rkcRr#Jnc?M;!>XsSDTN*Tsxg4sUY1BXNYa#fY7h1q187&h=)MC(g( zAyG#prn}nIaHYqZqY3JGz4LY*nhbQwU1lcF0V1!a-ln%RLZ8VEKT*U|+1{>%HwI*e%O4fiyI77~ zc6XDwAE^P`VRVR81-z_!jC>|gJIysho4FJU;qEzkURGIqBs4-xA*`yWk;)96?AP>` z$LLP=suC@XChqX+7D{cE+zW(T{`Y9fi)SS-^VF~5akRYjyJ5`g^A7mME|?hHyVPe# zJkXg$6h97GN>b#ld0b`q&5*O_%m{-tqw~ZCPDc$N|0v$J1DWy-7$E5ajD;3$WRR|pVs9Ngg2n?wqm%&!<*+9taC4o=buJK z+=rdBk@UjQ=w&TY)5L^%iUeY6K=UJ7=>4#%(iEW_n?U_0+`SI-~q&GV8y7FDTuf2_HM)V_mc zSkH9>`>>Xh;Y*JwOM&4hbyIy7Rf0&`ECI)zhy^Z5z`seQyR3=#Bsv&2ELDv@PwO^^ zU`V&#%_qkt1?kK-iQotuS9K=03EC;S&(^5(rEIWO{_3E}CF&GVCNjb@%7Bm?EwzbE zDf7wF53$6#eOw}h(<@HwT3TCpTizgdk6QHaL@GneiX|=L!SbIGciP(R^e(#*4!j5b=q8Sf44T9kY*Hk1kobjyfjm1NccTb$ z+T}KASW2VPRLz>$M)RmmKz}7k8$zhB<`2VJ2IU_D7>fr_6AlEVJ{4%Q*3UZ5#r5I@ z#(#1vNCM7EI8GSdH!OlUp6kMlm(eRLzCmqp$Q!E-VI1!Fy&x2gslIPo%E4SSy<@^m zs+30K_94ewAbqT`W1u}`ZXRl_m+dXUKtxbOTf*1QiPxW#J6Y>>mkQ2T1%B{9E45qP z_x&&}dS6t@Of0S+%4kVWVl(}d)(bB|Vg9Jv-*Q@juhrrwzg(6PjT>AoU7akj1}&z{ z75_x(4sCxjJ^C4eeRk`hjk_Q3NaSA-;HyJcPj!d!m_o=9X5G*-p_Z z`P?U-q)@4qw;c`MA#edEN=V+Acz@17dWG(j(9{{i!>8(XJb$lTw?11yU770mY4_6S z9euqDG}{pUox?}6t|akHjB`C~#_TSLV$JWZnM7=5yZ)*lTUwCI4cy&<*@hG0IF)JY znKV*AS6U`@MuNU=$zON*O>3cIg1sr>^New7b3t1G1h^cWJ&Ld7o(8kGMp{iC?UHR3 zP{NCVhksj+4Z``;C0hHvzI4|~Zn3c!+1`c$kHtn2(e85hnI((!Al+v=mIE~tpWI&U}J3_C8@)#5>__i=-#D<)X zU@%Hy#Bi}1OC_K^5jckqNUxm?v5zZn7xYq}VIE1=P3aGEeN4li*6=i$tb01LeJ3V~ zbO~CZtE_KObo1CLrAn>C+S7uatr_N>jnLLqKqTe>&kVXEZ%&*!b4;ct!%@X`kjmORb#gS& zoFH|lq2NEjtD=HDB==o6x%!D%(>czN-C`Fbgq5ID)KSuR<^2#^o+45t00)-W`q6a) zp&DFJV|M1I9!lM+;|DjezH*3hczqnTkQzMhUi^z+x*J9qk4(`gg016wIJsi`C)7K< z%mC6-+mf#%+=F9a*;k3xQpCjDJ3#ypRCr~$!pj1Em68tD?~*>x`+y>)y(r|Kf^oE| z?-KwF4k<7Sfk(w>e&n9tn;hXSTcB~poW|pK1e5APea~P_!2LUuw*S(oayN7?b?IY^ z;}_nk?@B?$9%_2JDtOnkb&Hs&NySGV^+ywtdIZN&o?$aSA8TAAljlu{=xtiiiGr?^ zbbS#fEO$7a?3*4DYR)lcqh19atlC3Ks6|ug)36+IK|rO6vbB-8)S&T@pV{|_VF0Xd zqf7GnC@st>ygAQQbO;GEXND0Yjx$`N(;hmK8(9BaF2xh0v*kQlELY{yealmNR=h*W zEA7=1q`0t*Z*eh*Se;xX+ou5tL#n)qczizA#kwm(*Zfk9flajNShsUF6F#x^tu_@) z$3kHWiJydRyD)RYoE@G9%JVxQhpkqkQa#C~Tglonrtw70%I95E|LJCtGGNIMk5GPL zJlDFk4%T+ID>U!=S8}pIO4h9D*+$V)=^|N zUDfY)*8AxU9Z~ICE!s1@LZBjq9RG6Gqxzl_P@J( z$UV1z@+@5d4Cq3gNom!KT-^~*0pJFR!i3&EKyK3M+w_K;tOrnKq)iN#ts$kX$jN`ZVU;V&?n-XX*bu6G%sn%mTxCtjoYdZi6giu@D zewGopz^E$$xn9NzGKe=%xTZ;E2T_b!@#c)@QFgnIZ9w4WnAHI8XNCjE*Red-7agvF z_8_kAb#k6BS~153pgXI9!??cnukjCDSWX6JoqPsw!%SqXhWRWw^dx&?fZsbM3p z+;c4{Cx(7EAe05NQ~e7X-k0=LqQEX)_Bf3Je>x)AP|=JYS5TK8oSE?6kCpeO4z=4i z(;CAcCj5Cl#UH(DnBMQfvle}rI`O1S?$kY-Zc<6i zz;_XecV6fmG;7_NVXFtfb?8z0Q(@;bSZ}>16yU5IrI);Zy}C^&DS|6FWIHX_yQxh6 zftX^mVC>bdHqo z7&8+Olyur(unu692IPP#M4GwXfg3A#2Snxzdn1>E4inV-$y~QRx1O+co#C&#KMg2g zgeU@dnGHKmUC1IJ8UY=F@XSeNa~?tft{vk3!9{x zD>U|y!*jdM$N>i6*u2l@lo8w+G|<{GpWq`V>f!losRY?Km+5atXzdTpJKQ2wDwFrB zy2hI~7IjnUp)uw<2EVGk=3I|TLn)5zE)p(eepLpVD0{O=QuVi4zCTs7w2PiI&R=&; zRD%*0cPcl)7gHhQ6g8(ikJmN)xtRn;^L+J)s^2Z7M4(&LUh)f(C$zR57}E43KSx{d zAcG4_5MT-V>>QZu=ui}t?(ThbKPj1M>wwe2;eqxgm&>QNlSr$4QOO<->f`{9qx#;S zB+{qFIK59{uA=K5jm&54mGJKkC7Q#9prI_`1|i~yip(je7B8Ck=G`?)eR)cL*yi}^ zDAyR7#kZ6n3Nq~tlvPU&Gu9YVLA5VU!u}e#F`~L1E$_;$EKB=wxchRH0VhV5^R%Ow zYQCF}`8JYsdq=%@OPm7B=!j|IA3H)tmcv`RSAADztYcP>Y^^Tse9_bzrny6#-gR*(lqV= zgJNSCkcE@0npP255_kuPUCYaBWDKe2R+FSDL4+;9VAdxXEp4aXIx6x8G+04^$^+0< zGGzCVU7FAca#sJ>EwQZf)qriprE$_Kg|-L?ibpntYR%+gvgX~gUyg>F4S!^vS~p`Z z9_re8>G4thUUTo_dRDpVw`jy|ro}5^j$$1QBu>^HjI-c~+7Pw#?Z%r3lRe`ZDv36d zbc@2C;0Q*~LLVfsp?= z88p_#%;TUe8%8zkivb4~m;4ek38|a`giWxzAcQgb+voVoCL0jx}1xpk?q+Y z8ul}$KO4I97a#)NEI!2i0<((M>%>Exm6!(c`T2A+{4OoHhH0*idTBLw#@`maI=bn# zT4rBSJ9zygts!mcvAx=yXUdH=aN9Igeo!#k7f$r-?-sS;5X#!+8Z}$Z9y3lPU=I1V z!JFzeM%rHLhZV_!#JgGu`W{c9@=FUw)c+kA|ts=@mI zyn>xF^IKZe>xXj;E0MM?`wLhy%C9rrO4Klxx~|ns1y~)M(m{dMeEA z8XpD~q!L_{M*w!=hveD%2OMYW2eKMF*xJ6x5=}^G8d>o0s?M}#Jk28mH_c1eM>Mb7 zjZun6G-2`DcpN7c%-dGuGOF5Ad{trAl9N3*W>*zU`I@4VGHSrZB|C>0e}7eFDvgQQuV1% zc9_EW8h1!VPb=edN_2%kC81{f_()8en11q$=_$n@!Q}zc7iX)k&HhVoB32noZlq%S zf4{e-hKS9Y80x5q*x^ZDtH!x|2BYPBW`ykfDP=~-r`6$5lpEJ+vAbLh&40v5g2iC= z?@qg}k<9r|zrsxsA1~2YY9s&@;KWFBA&kA~bE^FEyJGH#wPsJ_HR85|7VT!_tf{pX zG>OZBQy&3U6LEoe1n5b;f$Ktbbv6xi1Ia9b+Z0P2IVf$Qhl}?L{+EyvLz9qe#-{9~D9qP>Kw87|dgs|DQo*dd)46?c(AGb$mOuZoowzgpALC^^S>K9p? z6K(cd>t5R4s^RRld9e`1Ja>9&pIUB-29lV((#^RxZ-$z;Ghr2Fk! zz?c5}PA}RwSKDSg3?~yxI5+qc$$A`|_G~fI)WBA=j$kWcQ&Q8X4{CsDBn*)J3jt(_ zL72B@fGANro%?MEPk{<(KmhrW4}dw^o$3(1#(ZXt#vc*8H3&Rm=>>mQ0b@|A&q_l_ z5C#mSfC~V|tR+W}f3!4!0S3UA%`1_cK+@{$?5}GNHeZlp{_y*#=0KrPD9wLv)OeDe3omZ0?zeHJtc8<10yHyyL!$|=WFH(mJ-&~ zPag)3A4`*nij-M(43l#W&(6lc#R=@T=2n?iva%Rc3*AOFeo07KzwnA9nI;e3Dan_8 zG_Gaa^iuXC$Gxnd@*|%Do-e#&0ei0P5}LI5H`VOLCL)uHIB=Z%8{jATBh&9%1ZLB; zr9JIvy0*@}a~7Tt(%GlNY9M0nZ*|}9aln)M?7?JbT2~MYp0SZ`tn%ZaAt_1EWKwX) z7*@4g?45F;K^UGzLY-UMZTq7b>%;%nH6807SdC&|P)+T+dYbmh?lXsyY9Bci9w>e; z%6C-Q_kd!A&l>^3g)t&aHEv+$`G`b+C7QPb~oD)t4&+_ zc_FkNEXwKpN;IiD*IvVG{KVmh{G-xWb058)cG0t*1&H=j!bz!x>c}uKF#N@HjDZdt zRYYjPxy$8|oYrjTe!%Bio6sD8HYv-ppI^#VQELK%Gf=OOB*UA6d1v@`K)e~PMhRF- zy>aha!;QTTVfDuEH3$`~2DkRf(!uu(^o_}(Y46vTm&!H@JYHtn=0q|8UrQu`uF1U|N0Hng{C$MC;0ijh&GJ(v>vH#SP(mO zbF-93pRFL^7{^4?d#%CX15JauYfrubKrgFAu<%AWGAj4|6{-8jvs>8xE(axGt{!B%HvrlPU^o|2Hq2J_=m2qqmmpkD>TAnV z60;bkj>VPK+H2+hdjq0K)4_IGfCelW@iz4v_8|DHAMdAM0?}~>5gRjKv{a9qEnf2qyUOesbm_*jg&MT8+BiA)IzG^wMRNndU z$910QO@cUFWRix{Im3c4jmnuyq`WReo+BSqR(2p7%NL{iL0`RLVQ_rA`EUFcBNRXsnSX`HY~%ia39f=&)dxW|sDzw^nO zStHCx+~UYfEuZv)a7XH)S2e;Gd3N$`!VMw*}!$d41%d=F)7`^CtN6y_n29jka2EyZ@A>Mt)(ft?dAe0=YtCfpHkh;^^jE%k zjUUar|5N;c&~C&MFAm^0f(*D`;Lv&TT%IaScS*kszsz=zUP$wIku+LSF<)t-7W9x3 zJC|)}v9=Pd5RsjPoX~XL#A`O=mYsvVEg6J7mk--vW5j03wY#eWW7XvM6?qaKi%)D> z6G*PoEtB)|kK8twhU-ctMsBABQG7hn;aw&%g)|P!$SQMERvcgxw8=khWvb5#Z+=cT z<1?_H&JjV0#4lB`{)R!l?z0~ZzE7xH_TXcVN~eMM5jn^&I#n9QZJ`)pKitT%|8gEq zCIqSVrHI0e#BNtAC}DhT`^Y=759lqTgbK+RRALRcrj5X1^NF%Q)|3?C!q~18!EJ!h zk|X5{&NWI{=hhSF+4xRY(SSA1Q)iw1Pd}m&rcy-WMG0ijGPXaC zzn=$G(wdaZaghTbfpJ!*tq*ZP7V#=+S}iGXymey%s(i@*Nf5{*s3x}{Bmm&5FWi7z z^Tz`^k_A@LS!^3>t3VyF5P<_@m@W;l>O&uIfH&fC(EnFoq(*a0*58gD^xb%D1!bi=`Z| zyRB~m%F8B{Nd~v;*ZBTXg{=Qu>^)HaOwB(KiDi+jP6b|Svh?)9hTj?MU2-~g9T`AQ z6^J^IIt1sOEGQz_o_Mefx~54p8Yo4@s1Cw-CmNV(3?I z37FP4QF>CFe0i3*Dyim=P_1u$=|N(S2?%%=k=UIe3LJ^#%CqF}ZIf%iA1C&8>^*Fy zB5OGveyhqk5o6O&^7|!egtjgNghFBjQ>5N;lxFw@Cxav@^rrsSZ5sS-yFwJVEpf1o zsgIPUhW-kpO1_)lBRoWQ{w36S5q+j3DcmV|?c!Vcb@9=ooGjjl+CPg#Nk1O5Dh7A+OTDNIGKM=&xQe+7btK3tmHpQV*T=mYk#k-9oU!_&(YZhIxtcj& z5t(7~%OBjJ^;(*L$@#q_?|9DdX5S&*s-*E!iK`XFMdy>e?TkE4!Au)!Nir=zJ^t!> z)X#RGfG!xC{9}Q?y*lFY0}kcLet4jZN9&TV1gFaHmsxr^`*toH^NqKrer%#p*ti%R zH@clk2I-Vt$P4MX{|BG_xX&~Y1#frS_wYkjSyGc_*GP#{)hV+n-v(sK5slKW9F=;>eUF}{bVZ^we_Rv=HlW*d5 zQ6ZtkN<#nbp^#g?*q!5FRmAzXSEhgR5(lUvyS>QYrsHOFq{n1Ts)JP|o%_2f82_nG zQcJqsMVGrG^icB&o=D!RC`{hDD(`B(IGv7x`tvbFX72f>236!t5mtn6^>GhP#W_=g zf6Iy@Gg4pTPF5qy1QwGWygInQB^ugNGWtnirmavf%Bm9N z>31^XZph<^rgxIkt2VjPGL=~~>G5tQ)){Tj0o*fxAplCr_b;os6*8`9a;3(-(sr`j z#BxJ)dTk0$$4CWZFd1JzU443_D3Tng!_j%)bn##*Y^DnmoJv0Rn_(T6k7fanoHuKz zWI3*=p44WhA5K4wPps0NP&`U!ZdUA=z!*p6IAb-#CQIfLtPdGA;{3(N;#2{Hst1WX zrm{Y=H{Mgm*ITg5zC-kQBO8N6^eIU zB*n5o#waVWuaMK3=vp7_4r$=P{k7C4vev{!Of=qAx_FVA`I}{wm?q~fjYS^m0b=Lj zd|HI#R^lAfHwa||#VCP1j~*R;t^`ZwF8TN^rxhOu!gk1w)L7(M)`xGg^y`jg`HnbS zCs;f)LD}AxrIdmNIf*qMRZJne;Th9<`*BWWobq7UW1yQ*ZJpXY=PI{0&)gio0 zJ9}9qx|G|JTTDkYX= z6-UN6q8l+)7jyg}dvCY1HMP9*RDUvIZjJ5{-Bsa`53I~;)g=s_;+?RZ&MKos;6#s| zREBM3L%sM)^ACA}QHWeW3zsh`>+rf>AI>oC-UFF*dq|rce=~U_uuHTEW2h5aE3-NX zl$GkCJnL2cany?0!fI#uL66~0>AS8 zLSh*jFL)A~ra!j}Bq+wpB<61xxn84winwgr5ZlPmDtyV-Nbhx%%3ff>NQ`#QWLyXrO1V*&X__>m)z`gC(wfGyx37rpg z1q2m_@bM7uiSlU|rj~)+4|iHhojbuIp+5v|-G1w_C7HLpE24uEaP>s+=5kk0nv)y@ z-z@}tC0K-0Y5Lk!kXfG-GOTYtHl?`Ub$hwBxAldu%Z5q6S>RKIYb7i$_o6E3l|2Jb zDG@<(DVc)Hnn3&;&B?OhCC%_DGdSYomz~(Usm+2m|5(+cPIqV%C1!$WlC##h6(Os< zq4n#s_gq<%%s!Ze@zpSy9+%Xdl?tsLEcg&|y+}3s_wwO_O8Lqk<4tDt` z0%C%4um&`gP#{6){x-MyO*KZKdJRg@HCrv3~{gL?Fm1w)Hi=!oB^Nx_( z#uqfK@Bw^e(-9f0Lc{KP2qktks(QcbZKG91+%L{BBnuJ7xGK|Lr>$rU?}H>rO$B+~ zq{Si9ZK|Z6=NuWf4;4LU?Ueolhf(iSX~BMa(~k(dLW1|0)HXWivL7};R5c%wnxywK z;FQeG4Xr&pYlv^_uIXlj6xvkVfi$H}@u#}8^^%@U5=9@zrk!WS-WbnJQw*qZA`?kX zU96~K!HEoN8{ArT54(cgUl%SFe@1~VOeBbQDB}2@rTM}fU{N3%30n2hH1ncMk7BYJ z(-Do(LfiS@wor-xio&Pe_J`dF=GfH70;UO@p|)!F*a?_*2KLjQBz>7OQ|=;RMlQRAU}x(rFoC&RP}1x>gd^xP=fued_)qKRqk@zS&nbg++-)U~5XT`GV_P z(tY`drXo$p0{7?^czEZ^RDuX6C@uSn;qz{6@}CGQ+;&Ls70iD)`At4t8?$wb#Yd>( z9TN^&AtnNL&ei(jmGas;%jygtTDlnJ_J3=Bm;b3C;P38PCQ-{cV=(rI z3omHEkhc`v)wlCms13%93Zth{{@f>#Q+#;xcrI*1P?GgTgB}~CesuDH4U~^;n-%%| zY|Z3@CvPZGSX4Q@aqsPw54QL{xz4r}U)ap-Gp`+eZrbwre#ECFP zn#PaTrP*QwuX=cWf&Uxv>2K8u!?GHqre;7b%u4{g$sgtPnjxE>En#;Q3njLBb!DcE z)NEJ(-Z5Cn$rsOnrVzxekQhD{kgIJM3@yA5?O zL@zEbp3SYYa@olfa|*p!J5U`f4(b^vnW^*NNekjpY&BxcPT3e&`7~+x_%p@f1N;3| z_5?#%DON5pjvZmsuG1gfOkx3f&CM4~siBE2t3p&5HjH@XCX(JI9Z?;y>U-K_xcT_# zs}K%)^lYplP1pO3bNhMCab=O4zuj1anfFUVu$gm}y1FK+>E+xB)w+Pv&rQ&|4)LUM z2s1Zs4(_j;-8VCOZ7<1YKw&1vKI0vqj0n}BV#rMq8k6fbsHS|i+owUVP~@_Vzv3*h zb*`Eaa&fOJX5d{CNQ+N}v3l!QkqRT=+)yK^zi#rHMVF7d)Su~LOI=CkeuOaF3-ovu zp>K;Qg`x( zmGQirpapjLi=XMco=0a^xd?9PKZyS!i)+*~pBvYM#I5lP+CP5u4)=?2ok8n&?~@w_ zsV--1m#?DTw?k&#O3J^b^H^8mD@?P{_c`oRB@8P)k${K`+Sv~JT;XnZlOEHfA+huV zBTeRovFYS6J-Zx*Y!Rm>t+y>+7M-D%=`@m^oGJdvG~Oc=-MVZLL6BF9WP`R)joCi9 znY)m-Tll{2SACa-B-8udyf&QaG~K%EVpA=#2T6D~-kH^+EQbd7wL7O=>x^se4YzXG z0)~5E=KIB|s;%s-t<((DJ+&@Tn;HP!W}*)UOqNxAn2f-KS*8eJ~zKrD{W$U%os`0J#{X+eafNA5-9I_OKUYN zADgztfJVSX;4QO^PUOti<%%KH#lCNZoS=aUJ2o>!ch1Au~E4ow;$g5@(ERq|tk-uGW+!`%Z``pu}@ zxos9ghkuB9ZA)>%_u-ald73e6=aUJWO6tj3HqXXw(O2rK(P#ah7H@wGmyX*&j^S*T zkyzq(pd{`ty%ITDWl={38?=&5c&Sm_#S%tlF`uGic!0jB*dhxo-R=19otnLWbbJ-w zjXPbT{h9hKq*&XaY!Svv%<#RcYh0`5hfM>G4L~VG0(k*49+iEOK5wD%WVN?#zTpT~ z^Bvm^W5P*(g%~ zexH1hAI&)=O;W0Wj@67+sBFJu>wLm|&c%jtnTIva*jNzrC<2*Bno>qX#O)167JN+< z%VsoQ{=}Xp6b(Pj-*YKLqI~(@Nx7}p&v>v@g^0$Kt&x`>UFmi=nm_)Uv&d3_ zG5k{Zqe`>Z+FICkk^%80ylykikl*o3ho=e{jEh;|jy!k`9!I*szOmreY9@zn1n zmn+}T`I%TVmnj?Rg86ks63}rodfU z)3*?=5c|bT`3*V0YS*%nX`x-YIl}gg+_)%pWZ0Ou+*zSJPLmq8a}#!}vVPQ3xExvc zP-=o{Ecj`gb!m&r3b)^*o~avmrA`ssnihu@;p6=8Z|yu;yF6{{TLM-@k4wK#GkF)R~E%|497pdR6zBT?U&5dk}w?JcHd|{DMu22$9*VKC5iGT9Z0Z-?kC1BuH2yO zb#R;~+>KBRf;d%5m%wPZL70&1#}!E_ysG(FFNR}vqqw3ndS8dgn60Yyc3W7<0m1OT zrc^(EyT9zLFX^wq?|zc3McBjv$2Ido%>JRG)IM zm8-o0RR#bp$D&|O=O|TsoI^8gmf)%1WbK-+A>fa5khmSXj{>c!O0Pa$@b?zXV~#ft zNDO&$${$l1ChJHA(a9%z6Y(E4N9do2Ozh;W!Sd6`O1qzRQ|7F226r--Ov`n>h!0EH zTOvc4x@oy{o9Zpp?`}I>Kg^Ne;P@21;dfels+&?728A|POoIamt@n(QT`JL8^0H4= z3^^t-9~u(7>er zcR;|v?7-1D%mVskD#b{SA>|eM5B(os6dy?Xw+~4(Y><(XpN zIEagP-99rt&7DKJPF=@%P@<&aWX5?<>tixD$iX7Tiz47+-JRN`f2Go|d5DKYb*-0a_52R^96%@b#?MVBFT=F*z zXVNd!#)f{Zhr>UbsQGKEQ-abejYYNB;1KW+NW%R)95|E73PVegXxCVkva^4KRku5V zoCfgrm{L|dkAV93fWN8}J5A?G1JR$J0yTHQ|3FGd%U3>DK za{^j{_4|OQEGv)7gOhUD4-FtKNEheQOfN!mO`w_}KZqAy%=p96ApQ8 zQ!EKa8xY<8SqTit3js)KGT@a44kHfa`U2<*CP3sZ(SYd`2*?isUb3(N?{Rbg5vcOg zDsHW-0cXx|U^@t+D*HXMk8O1jBTfz6dVZa`H9-wKrT|`n7T9E`7`*ZV1&P=I;^wuD z-!)`lexha1fi#f^P*#0%;6F+N=ihGue`;~yEsh*`FV46i7h&xS;LVsYpYmw7o1TLv z3<3ZQF$<79q{Uke3qAm%Smc2Z@n6*rI|)Q{E&xe{A|Rqq1@OKlaF)3SSiF>hDPq__ zpkB~tIMS9BuK_40!hi?Fqx9f*;xbk=;Hu9T&oU5E3|&=XxszVV$p72?)4f}60264J zSqJz+h`>0MLfSVv94R4sKvoI@v(O1?FA)Gm5Fv7pNvHwqbqJC{OUawLDK_~HHRi!S z#Fa=>Gfw_=(23z@& ziNrED_tA(k=jBDNGf*T$XjQ&0QvW^cRm+eXhN6r>7^c0UrO5Sl)kQPny8z5_BEyG~ zoHtoNkvD#mij<9=;s?=b!o+!#+;Xi(C09)eWwTyrXaizVT!kFleYbUtHbMP(`((Q= zUj1V!lhMvdx$DTYTCONqoJ%XO!yw`#_jDJp4Y<)}f-XE@^W%h7)2Fa!h2&YyJPe zb!_}R{N>o5!tcFpM$&~KsV!*)@*B%-+=Vq<9};wf3R9*CL@VK4a&HD<@4g<$Tt2!H z{?itt@n)GQmZzA`-HrIgpN}!aO7t=?AZLGLiT~C3%o4AzZED0lu{+Sn;!yp*xRnDf0f9AL6 z#DD5EF|WZF9KL^v9WBdya-Gn!C+?Ky;B?BTL7?KelQu5Bu7QztrAV_yGEBVNU8vyG z@q$3;kBbuF2j*%NmT5T4>~GBRqT;RU-kR1av+oxWk}isA%~joZQm~RK`F-b~?)>g- zu?egErWw#t){oqiN&c~{iOJdZe2tg&QrO9`Gp2bcLr-XR9Nl6YOBg3R-MJQ1A>xya zS*Vd=oc4u3{H;)N=6cc9-Hv6t@WsibyMS{scsA;k`8}#}g4}=nVPhC|r@#wOo=DBK zy5wLy{OLA$=|z-no5g!vr-~`1TL-#G&JKS0P?-Inngz4e8)=v@l>@EUW(kxm<%UcT zs*G|_;|!K6?o{(J2RAD?$*jH2q1TxaKbw1lTb8T4GIC1&%zm~-1?ibms@lI3J`*3u zjP)*u{ajSLp*x4Udx{=wPx#}asH;OssuilO)tL+TT-cDT*~{L#0`>jxre5uQ#}41^ z+Oj?+cDHNV>DDDX&e=7y!D!LZM1fYMi61663s<3I$F&A-{E1yg)wiX(?;gkljjt@?jVd1V3pNSR8>5bMt-ZeGvW8mfc zjAT8>=Att3C$%ctC}c|V(qb~sCRFzg&i`zGrMo3`Szc>em2Nloc{HxkXgpFZV~}L} z`Q5VUZJ}Y8IfX@wkbZ%r&|dw&*(?d69EFX*3lpj@{&}M31_u?O!45>~ojR$1u$k=B z+9o)s5iU=zxAQ*DK0~6~5$kj`B9Gp;CEt&d`8adGPz9Q56I#T0Iq~RS7K4UNoy36yiOX##Q?dc+H8+>?vPAcNa z;LAiJeZBeHOjIi~_|4%C^tO!I%e=$C2iYz^u*HD=Q1Tdr5>+a*zqP~ugBts)tPL&1SfCN@( z=)F2svmo=i`h!5|$o(Qn-}dTY^_Mm@l=y4yS?AqmmQIiCDn+7_t= z#VG)PZu2XJZqqEx7bZTu*~vL_yEMZ3sC-ub&cu&5|GxY+rIy$b6?E#hCZd6gsDZm- z4iE)-)l9UB@hoCbuuBOL%b2Z;+NT!dF4jVJvRtOau~605rCogt7~Sqq}bm*5+l`kDw#e!1;FC(1ACl zc3VFczH~IH;b@9;uNZXDRqT3M43s#cfP_1aA2YcOQcTJmV&vv}rK)}t5JFsf?Kk!^ z0x!}7yscM&t!QPwRqAvqj=u7S`XH>NQS|un5*d*{#19WXIUCz)Vw(H`v{`D`Np_}# z*hZ2v?PIL0>YQX`ty$F5TT;Y{o~RS=Y|c#g^aftE(-<8eJccn=6h8&KeA_QA0udmsEk5hE7-}x!B>vE%WvDxH< zNAIh~F2Se%!FOIMb-3l+s?+9V-3pVDr9tIg*%2izF7>_+Kh~|7CmUjeT$XgpblM^m zx5K!HXOGoHI>ChMbDGy~nQv#w7-L7Sn^s{w%I4IJ}&vj1pfJM zsKD`+EjsFPlb^p|Xqd~m=OCjC+aAxdeDYuuy~T9Cgn5T@Yx=S7Wu&{w%jM0U@QQhS zTCbs@3H@kb-xNp!tLQSozW1LVu-Urx;OELEaqr1$LiXRU>%ON4L9#!0Eo5I5Psmt!SmV*{|=WOo^Wvs1J0gX)~#j!yLEB7 zo3shLbIn0dZ@RhfVc_byt!HK*Uc?bCSVyKGs;}f@#9GI=4!13`S^?mi-*mI{bl>Xy)<)sCYekvuYe#+; zm8^c@YrXobLHcsv++lyGGuVA3=SCgDXle^hd>9nAL2joU8X&!i(98doJx=;l^hRMDCo~B%Gc*{IE83 zJ?CnS(k1rIXKj7{{KnB)Y2s^^;;`S95wW(7Yns_gRlC=M=AApKgN2t~MFt>!!dr@& z+iLGUL4?|OLytBQ0Y~lfD zm9*92^0F=V6|yh>tM>7wr-*+8&VdIXx*eh!xCg)gyebBE@4rOBLH<(bO6xC($Q5}# zeBHbjy8rR)&vz4(LL3VYcx=eE_~YG`6R^OrV|TW#CX-5D*cJ68>Cd@vEIvaUwiO7L zF5LQ*oEp)umKqaV>8EZ#@B=cp2Rn{w)&)T@PG4u%*PL|z#0`*+T}taZwERHG!NU)c zcL^aIvb24i_^ZU4cD5(vm(URr9gAi`Lgz_h)L_`xHqIx{n~&8o_DA?Fxw48ga;KxlOy_uWAVQXNucD#8SEWP1 z{cw0N$JV_KW(Wk_Jb1d3yst~;ND=QG+Y0gTbnAoM>VVrdnf>YFght)^^YdrqOue2C zrC)b&3qN@?_136?M1U0BDCzdB`I+up3Xu9J7wVl&t;g{%V)MsvVv32%Qbp9dx;rDcUNV?5PtV~1P^SpSxSMS+@wAt$~GS|d+;-&6b znl1HIWg2L^3O#$>_>GsjO(?xF-_v&Q+vsMc@VM9e_b0#Iqa>%~#0+W9vAc)NecJ3$ z(QW6~W>kGtlDxGCDz6OLP9MW`svlyUA-^+99mj4M{Kp79Uu^&V`>zw5_g`;7Nnh^x zf~GQKS}yR_r`qmTW%|G>2!{3-CFiwr--{HO{uZ4h8<`ciA|792ehtX+yX1b_lK9w< zCGUSd;g!(y&OJ)Hjr}1R_r4EQ)6?OtAm2#dTG7R{>^67O-80n@xA%>1YhweJ!r5|+mgk1(JT>BlTUFOO z)?)*^IhW^%HkmtbFRyneZE`1Xd)011Cpx-EUU<|uEIM|*m95!Mt~9DqSQ0IC)03^8b5A7LiX4o`n5G}MczgWN z?T_DKQ0nUPu@RDxa(nU2iN-A?o8?6*D>&8be6RLSefR9jcab9eMG1%gI7d{=uHiiI%jj3CUa73Pb}K7m;UVZ z1)xw}3Ay>jG(AWwZgB3z%%!VW>cWWU*5_Z`UX6%2I;=&|+Jtu%O_}lCGGi_w4+l0S zfCLprnoCOZ|5n_ct@WAHOu;`r^1jY7eHn*aWl45r9@m z>3`ome53wjco*f&OP-xoXp(C38qc>uHcu4uE6cWIbMwoSU5n>ayxa8b-%JGo(0*K; zU4##RyA`nuxEGJn*^vqEbD#L8`94387!hl9@GL6e!z2DD`nf`UHhSZB^9Mi0Iu=L0 zTi*vM8fqvwWzKQ>VB=WttJYA)6NciQ?{q#J zU_Fg`>>V)i18K8M%LvRlx@eb-oJ9e{ZS7}1@eCC;t>*rS6U9Ww0pOlU}?ie4W z(Ikc2(5*hEDfaZWu1vxDru)A6&c=R!N9+Zo?M5d@#*r_L>`LSUSqe>s11~KGB7S7v z>EjNka^AU|+sZzeZvTmR-=_+ymh3E|oezHb>DYs50OCNevM#i%^tUF5N z7i%(q!nHe3t=hKCq@q!@)*7MQ+t1N@6)QW(bfum=Iomq4WaoOu?~V^XnkNtT`SCiU zd{@p>iK(i5Wcc{b;h#TU4;`H&q%75`xbJ^9_~!xM9vA`QM7AZ0=3_-&{=;*w&lIWZ zDL3+sRE}^j7lxlrH|WX@s*iQV>EE3BX3E-K@H>0ZXUS6*A&N!W;m0yHC2zhd|GjU^H8pYiYSq%P`)e=2vGE`0_6H`^Tx%CxcR*_!4*L35 z?P0V;@{e@|Xk~%zeOvRAN@ceA1*WP!OrFZR+|}oBbb-A&9QNwBTu%j#*q|BxpvL>@ z$$a&k5gY0}GvT9fx5MvWx%DTAFzPu0`-;!{Dp^CEM{a)CSxFApMtH~yX=p^nY|zDk z2O<$3>it@ex0hJH5Y?&ek|q5GsTC3IOhnST`z~C+M*ek%Akpcf*ky0mRURa7B(o$h@#a+J%(8vh zzJXekb6e}38Fy0|{&9c}pw@R^@;Pe#TGI`e_Bqp9bg)rZe}naY8mzfd_-coL45!ek z$nbj0D|+D5je|802lI#KDU-hmXGJy4Zl%XOQ&xvaPpo$~6)!5}okWkMHR_F}Hh~kb zeK{PatmJ2#mEf$|#(#0(;Ikt<`vY@nTkoVaAEBp9Pbmn}?()2rG zo7JO1uecg-{CDDIl#&2wD?w)<-y034>}^)k~(}tC)5q=Cizs z(V>R%_t_n7dTGZ7*f%-L&kE3oST!LA z2dNKlkCiES-HLTCDaUw>u=Xh6y;p7*Q|*d-j0>9que`Og(DAD7q7>&*Cm;JD`)A;uB2Ss}wb;I@0$ zNA)Gd<+f@7Zlp#Oh~zI?0(VOK0;gzXn4G+@03Lomq|;!d zP+RP1apVf=@xP7>xjOZB^AQXAhWxsG!BbCLg4G(2b)?PIJ#&no4c?5Ze#K+Tn02Z? z5r1wGrdb-!$hFTzQyZZxUFH)qH;X`}sZ5D8!Czx==3iY0?BhKzZbYN!=2?om#0qSQN1^BEarC7c9(kNz~?c? zC~w>|9`B%l>qx#2k7<)H-`sGq*L&^>$NrcT%6o-hwPKt-WKbIG5 z6V_-+H?j#E$qKlAKZ`We6T!;*i}g4Mb-JSM6ILvJvGYs#+~Z#^>t*Y)?@bp#)K~Oy zKf8;k&VT(THgqP~YW2oJ`TOK|<$x1N`EmRZc`P%|BTz@e|D=w{x#+(lAKGn2Ov_T% zf3s}!Na3Dc4{yQYCV~a*LRtB#C#PwL`OG0 zi*Z&ornb*%f07zo7v!Pe{ss~0QBXSq;L}KLdJGx_F9&!ykTN)*shbPBV^~9*FoE|| zrs$GZT_yBizJ9L@zaKV!7XLMXIFO+9H}(6NCB(T2eHnJ@tY25g(mHxU%Fs|ZPxyx2 z!&9mdsec^FuPU?X0PmQqmix@(Pd=_R$ThnPJ>#x};feOg>=6=foVhafTgq>gk^KW+ zJNj98qntiidtl#8jjqXI-;cGfr_D9xdxT@3fXXG5UKS@NU+l87FFjrEoV6~f`tVyO z+f=&^fv@mE4AVYDzt6)|6~gu_5oFE?I;hrjNVAO3l_sFMIL z_#-;zBUW+bk4k^;P5IxivKB;@cY(!o9NF;ik`r=#XP>q{Rl|e?@Vl8vT^Xkzh9|_i zshZ##Fb@serk5uemP9k@*;^rbV=WcB&3yj9Bm~~%PHar%#!on3M1dc*{#)5@IzR3j z66Bu+b}Q;G6K8(@=zJaX0Tn-{nRW9D>YKnP?;fbys6n`@H^bYVciM3rXM%Y3-+Him z=0Ht{ixyvl<59@5MSi`vrw{f`e!6U~?5Qo}Wl+nA|p!x8M9s=Q^%G8fEZPdw)D?0;O8v3jXQde8GT<~s==jXClspiw``LwkCL=p z18g*2{N`w?XOy)6WlyzjF8qLnDk|*$g}U6#Iu6Rp(b|uREdEzkNf3a)$?_R564+G= z8im*p5(XBhE46n1J$ntSIV@nKL|Sx?^F2@4EyRMg81373cf(#x!N#)2!#$ev;!eHj zSsrlxYWWAiA)7v36j5JM{c;(t^`Meb8FuZ|(R_o9ZxgW+`KmhzXx7yA8VqEeuopYD z3mAdUy>4A80M$wxj=XuB`I$1G>T@du|6M++;}ToEcN*T!Qb?-l+w#&BrhbJPME=vW}5%s-~MzQFWVpKLencK?>E%<`VN2 z3Taw6;2WrS^_;cou=RmEBELePxNb@I9gozcMB08)**ZEhy)5RU_4V#PLU?Bn#Q{1{ zhn9pIPW~L%(5CjQ?D1J-8m;5{8aW+8uT6vw`YCtSlhWgo_AKfT!1PZ z6LQ9ph4%OOkf0SYYM}q88$MZr8U5AHidQ=Nl@~wR=?J^+^6u@spnolnzbJ_JYlgWG z7DyjnH43}Zub*tM+I=VJ=<+_4!!#SW%ztHm^T^YO3x6+dU9o;q{>j^d{Ci<9fp&yC zUh(N#u~oXNuVb*)4B~wLtLLlXq(fIEGn8UjccC9+mv3^Ld8cHDltx%t)4yD+pOEV# z&o{fGy+z&3EnQdIU7UZep0C5GEBl=Vt?wTrn%Eqyh}rB?hyg}8WDi14%kO7HhqSv` zg|I)L=fPPt@$-+2XV)YtDj=QaQmw;D#7(d~kgDkm>tO(i=U@5fOQ};O6!}A}c4hRbQy@`#l+J@$M0X z*{6n+T^LHpJn>i6t^eQae=keF|GV$RumQ&by}*z!1vnv28Iy0+HAp%&aImjMi^H-w0QhDMcZ&E-482%@vdJn%sBcVkKFl2(kc zX8<{MAo;iQjlj2BUIAw{?%)X8^zwI5cj5z|9|lCzGnp@J7vYI{rwb%ZCe0csS&psF zS}AQPuKcvnjxq>TZVk;JQk3v(PqZmeE%1$!Kb?r!0gl#^u;2K;q-<2ej z??F@!!IPqwyCz>3|DNJUIa9cZf9)8e+n7u!6p4Vzr%9ZooTeQ0+mia{ zAxHsZ+xd;P4D#<%-vwUPe;2SS*Q#mjZKC6%Q9`ByY6eX%u105k`>|JTjIxroPe7Bk ztC0>cO$y$kN8%fGSIL;D;Z;j+ObS#o(r?lxiHE@P@KB|uoHDE4LP4Kj8irDT<^K8a z6IZ3=+RviH%XKMR)MX<>in=yP(STx1k)WAUmW|HXf$e2zRumh`n4KM^M|enZKirAJ z2Xdhpc$nz6gM@&Y!n#0QP)d=F-+*|71RL`KZC4yAZE3(s+>9O0<0A-%S~;#H9iVti zjX4bl9DvXqYfN6{IICS;CckdUYHgz}yIl(Lc}hPS1Oq3vTT z$Qb!0N;$AZsX%5Ml|@aV3N#UgJ_e?FA1Js2&nQe`O|fk0a5f0_11XsNHMo*Lk9HZ7 zPdlRZglg$k1R(&wqw0J=z#aFf&?EGA$dPu}?6UE9wVX5rk>voL?g7~Z1fjLYoao90#)D%woNU5cc%9QIZ>LBgcoV)#-@fOC%&D?{2 ziDJ;*W`m$BieZIjX7>xXeXRl$wNj+m;+*UQdTyA+!lK;$h1bYwg(-ztv^CK|&zAUy znq5dLB%nHp0aB?dJd|2^RG}h8nX-mfqZ~zUQ&F_{nz|Gd;xn2k?Kw@K@{+czBuNXC zH=_h9Sx|b=`zYgf3bdCg4wPiL63v;Cflregr84aH)AS8^Rs)o)s7L;xau@Nr$qT3e zTm^!Z4bCnht?SR~N5co5`6~JYUA>^*WpH+~hGsE*LZ(MK4aE=hDd;H>(`-ZrM;$j1 zmQWWSMrrv)DDa>IY0A!Cd}t8}pa$TRwEVE;{C-urbY!3@k~kG^>>U}8g^Qsgy!lZP z#(>u!txaKr3Ig1u;*|&r0rs;Z4B~*ekQEm$_<}4KawZ+ej|0W= z)uq#5=hM{%TGh6UH6ZztT96sOb=wDORh9#3H4vu?Er@rT7Q|ZCoF6O;0E&W66-5GX z_|(&dGHTs?)Q41S)pxB@E3zw8teeu3L8~BFPVa2yXUdk^A^Tn zMRhQ669NV}s$k&1*nY4x@Gx?I&+!WeurM(24EDLWAN)!Z3V=WG4SRH-6w0P+xJ-!dHN!DgYb?zIcU%-K$X0hXC5Z{fg;|u&|&o z2!Ixzt(d9EFfCW+lbQi&nFX04B6ln&E&KUym3n4PmEJ7%%bG4dq&i;eo%Ob2vUH~O zMsP_n{sU_!M9XgBJv)^Em7{p8Jd*}Gr2a3gLXeNt1Ca0`=Ht@!w?;npUSaN zfvo4+1jF|1%#_a#Z8k%C#=_;IC8AR0R~-Y*PZy1fi-$u3no<46Z><60@FHDW8cG(M zhC)@C8G2xYVWWXpgG7ne5FH>;#Ms|p3j<%7z<`g4`7LXRtF zD<4+QS58;92z3BIkT8j3LVbWW`c0)rIaQ<^d{CrZWG{^nu!cPrLE*9c-l|X+ zN`SkS^rK~cWPS7_cPib5r_rSdrr+O6i1Bu1CRR}LPmYNM3YmjFCS+>3k!@-yKsPqT zDd_-pCEtYXioYo>meS*tDzzY&U?A^!Y=qulop|gmj4Zu8_nc;yc4bz0;c1^DolB`F z{96(pB|cZk)GUoyK_1pvRdUfjtRWYe2iB(_*7#-g)khPOAZaccn}0lil8Vo>%D2d? z%=_i|4mu?Afb<{fG0BB)93)Ai2ga5sS^5bNN5z*vGKed;EnLgS7U*Fe3?3OwVB0kA z01PpA|40M>N>2>)*JZY>-=La@o`nqM*<>8YmbleV_klWl0EU{mQ{8k}gc zXao3nDjph=4AMqLh9mf3SA-~ZG+Y&1OgF*_NT;GX^f?Tb-jRJmI}^&Izco-m^5{~= ze0#{}6c>bya5n%UL_J;9xSlpmZwEfXE|7-*hp? zAG!qNA05sRXFwUU3>k(bLym!GC@`cMNCu9f%8+94F$fH0hOCt+LzAJwP-5sZR2b?E z5r!dy$k1aLF?1Ma3{!>)!+>GV*vHUjs4=V=b_`2~1H+2p$S`I&FR-Al8OUFZM8hi10QMx+a+2lGiV)%c~DbE@7DF(y$~n&}NWo$eC* zD(yWzm`{Z{%CEL}&IqEwY!{Got5l^xl$as1|D|=Rx`p>EW?wEfSeH{siWIx1Z@m*<|Lmv{>dv*;KH0@s;$~kahlD zwYiv7v%+>4(xJtSL;3^p}vVifCo`^d40WNNn1i>OU}>`Nhf%qUDw=X`b-{ z;+P>OYo7kg>JuH$>{fll2eNKvp0yyQEAh85qtnxw{HjNozpYYYJDF|FR%Sbs#yq@t zr`=3Tk39EL@H{v{W-q+}cp^C^C?Pm3$PYBSg@9H01b}L50pJnvNl*~DT+v`H2-L<# zLS_V^fO?Ud6%=?3%v-|%cBGmW47e=|2M)U<04zTO@GUebotEv76#}XuLO^A(Frb?` z>n;o|1JTS;>j(O+5Jhz~K!Tuw^C?Mty&@cn0V>P6a}kE&T4a7$~}?r-jA!~Xu}ZI)9KRLRy2oc z6YO2^&=egxgU{M$;7!O&PF7kUV0Xd`%L7qfFjYdR@%vyyEEZO1iB;Thc{6%E;DFfa zhy!8^o(II{iT{8F>i`!?bW|2EIG$W5l9FH$*D9#Ux)uGyuqsiF6~U^{+6UnzK1`#Mq=R*sj3z%QRKML0Z0SfsKSS3$NC49lZ#oS(cf}c zgAqt4)@cz{!hPfuxjHP5#bq&B9M(ysSLTD19F>INcfNP?u24#fe9}~bCKf46oPLkVJ?s;#WhG;l2lO|&NG8xNh>PmQ9o{PiJ*gV}fX5E-oBEK;5Udq=`NS=)!F{SB@OIlzi$(StQ1 z%`7ClWe*R>DVo5oguw>X1c_~rP3&<=g`6Ek(y~&Eg83^N{ z(|`ku4SfhCLH1k5uq*bSa6DT#DxU2GiDY|a{w4g`L;S^3qyN(O53Y@v_P($9PL1g4 z5jxF-Y{PRSt>Y$b({Up ziHYeV6(Mfo8|kBaUmetY6vl<%NRDEXq|vgh`jY*}u9tLB zEFx#Y8b`Xv9wNPCZ=jx#u9C{ihe)yo3I%ARQ9c52oeh>5VJk$BvF8ecSztpY@+AA4 z?!1{z5N&L|JahG=j;olr|ie< z_v}|9kM{PtkPqw;U>#CYzE#{TvR#bT`@-I0qh-Fa4HA+BZ?S)}wK-0Cg3godH9ts- zp2HLy$=QpBa(K;_E)SQ#faph!k_&KZW=Oie{lasx7l*7s5ykr+~oRxY>xAzBd2%Jhz7$k%< zV|&9ULN1GBocEs3#&R~v5Ai6e4x6W7o9v{+Wlfo-stmHIc}nacSWiF+|3NWh!h$s# z5CihEdgIV+bQI4s68^<5f!nx1y!5Y(_qQsV|W{kPc zyQ~+LtKFq^a=dBti81^=BGECjgy-IOSq_lDdz*sutJK3*`XX@&^s=`KvC=0zD*0zQ zV|&yuCiG?pBl1M%gz7QQ2uFxH#*xnpC-;?1aE#b1oC6$H_I=KN{B@^rmZkS%fj6J2 z$JwYbNJKC>MlA4f)HBQnrYdK!DBR~yo>Z{7!XEz#$K1b01e{NkXcA$BHHl`@A5HlXs;S&>l0kul7BqV@ z_^J$8V-fojH4Ew^5OY^G*A+uZ(mBV?bn^d5Wy?imm9h6i_7fW9K5Hu{Yq4B347fsB zk3F^(1(J({CrPmh^(tVM>pBM`jtkpxKayT5v6LLRPFyX~46(<+EK_b!syVmN*OF^cT*lS$?<=5j()A@>m8m`mpNYZh`JCp`6w zvyTWU6UF2gY2M)C^0!E%du<;D;u522jX`XvkCaS4+9y?aEpZqoRCQZ;nmY``RH3UL zaSw8D3zzB*!`Nu$e1Tvu=wvW4SFY;$UJcEBZL>sfv#?ISuaKponzS}7BN%+aFQTffa=3eLe>j71$T+ciwlC(EL=MGoa#|w&0 zJ`0u5IQH_63JApVTWS4FUfOw|BHLQB31oKga%IV^Gi(|gOc-9t`w zN#Ty^q;Y?+b*d_2^s3SmEDh{oXh5;RGI)ViqOimL&$BYi#B)VKAzHg2SoER&fX^S{ zQ-Rm?d~(ZGeTsLqE93}8!_vOoqkh_+ljWJo&wNMp-@*P9PR=H)_Q%;cKJiB+Y8qVE zxl}HReyOmeWFS>+Zji8;0Fn+1CbReJXII6iayZ?@BJPb;a#e3tWR|$0iTqeZf0Z?w zDom|1C^#y-H_q{2t-4Y*T&3(;uj;Dvj$EjLuz0rTNx?=1qKxgsBf+Y}cJ%_A6ek@A z_$;F~`BA}{grzuxgh!O_1V@|BDtfdrw7aS!;t1<>ResgI!h)*(E`3$v_(u$#g0+P5 zs;p#M)#a+|Rndvxll;TVgLkwaaQ%(2no_nmQa$3r82rzFsEvf^HDBFDG7O|YPsrcRdLn1s*5g?jhtDg7*J`hdcs&14rZ%13K>Z^_qtyv^E>vq*81W)^d`B$HRRkp%E zl2TouMRo-=!?vmtiKA7qMoFfbtf#pjLQp(4y&`f;c8bv^E(ms!HOT7Gq?1Ew@}@^6 zOzl1*-Ux^yZ^i|LRFMyeR+DYvts3^YR*l@GZIM`{RZ?)Mk$#Evj6VUSjj;w~K{mwm zcLA886~;A?d63qgSn@<~D`IhW_i z%jX>zCi7&VZaf;BegRFU85wD&9Igd&9!FcoZ1 zNK|#RW4a29ZG_;mzu0WWQ7F~{46LNiHnfpF2Kx*&u?3C)0SQ*x@n7P!;}^p%+s(mJ<1-}DbJip0GaPu zI#JzK9cU{JGow&(r>pI8E3_|AYl;h`SHhk`4tZW3WWPb{0IARb;6gRh=wkH)a+&Bf zxspaUtF3-a#s)T2{{z4v6zv>up4OD4OVJc3QUkwHB<#(8*2!3>wisU%eDGqW`8kKL1^HSn5#qTJ^Q+HoOYO z1FA-03vE^-a?sVN>dVj(1d*atGgWO)tV7^vCY0ASDVjMY0{TEhjwXf@tf_+UO|Rib zHR1cDj3z}R_F<7r)!3Rf)L{G-N+pINx#wYv;YH1=JSwb*%3=qg0T`Upadb7eld*v` zlCDtYIEnzG5qp#|G1n-bK@#8q3^cJsiD-V%s4(9Pe8q2un#T_GeQ5hEUf!0h>B9d} zR0Ec$PzATO{NVqdU|YyR`c*qis6?3idQ^IW-%{^*+|U2+{6JC6q?h>0Fsj^}o}=PR zXV%yjE@>^|4_2||)RotXrRB9XGWsi&pW17bh4Nm;J?bvE7SERZ54sB>6z(d{#X~L8 z3M|5cBA-EyPOpZFVv~yz&Y85gdYF@i1%%RYIW>U}j*vJE51m~D$CnZm5XHzeu?NC* z#v8tV+RMc7LNR<~;ac@2+PJPxX?)=@jf6C{3q(l(`S^g4R-&(FD>2J16E|1W5>NuI z<&{8#LvLa=#d8WzRjUihf?P}D?4=VY$mhki$XA@W_*A(SyX!UI$oU25X@yla)#Ej? z@>2MTn)p30Q$GF%ExmA*wgBA=bAs;YJ*zo`Cusk~bywyT&Q@Q`wGl~y?+`s9{}k^F znF0giPoS`Cy?&lrDF7oDU z3Q0TFCD32hvo*`)PCEiT4(g>f<+4O|6NyIQlEiL1R) z^PN0W0tg-n!Q0!z z0_0^S7+SSbX0RnIrG)CGiW_ie_A|?JF0`+Jda=wA5-v2smLW*rJZwa@?BW4Vk2XkJU1|Z_G@@rtxct zIp}$Wl(e;!l}3N93N%TcVt>zb*t-vXo43dI7e}Zz*w0ikuXVupNE@27t43?z*DC9M zs7>Rg#q0Urt^HCPn#>jg!G{<^glW73wr|gxFMQSZKGDjc*!*7k7;F(*og*itTy2!a zRMDzK!^QMp2ME=nvqoxPKz1Nt&`X&Wrg>esY-xp_rI@G;zoNiET7x!$FVXclo zOxDI!H$*jylBvrkGsRcxW&@ClCPXd2>vi9a*OAj&n$WMg-C!axUgx1YRODD%8a3sN z2M*OGmz|XPfUUz2=(s3thb`k}llj_hUDwL6C^Akx??qh{(OK7o*rofzdoRFh&nkZo zmiCl(DrQrpS@hJN=l@cmd3<}O8T3nCDU6FcTk-}=^j8VtL9Yv-2w9rGrl*6Dz@Qtf z)Q5jZ`J2)=B~{#PNtob3uqoONujBc^JPpxTd|PYW*Dy+?{%wtfpM>8{o!{g$1^Fs- z*jW{(iX%ETzfk6dN1GWv>udqX{uP&AE=!8=1R>5tVfEiR#QK|iaSiH0`& z1n+)^RqT_-aNaLlEQ|_7VEuUO+Xo5jcoiHswmF+@=D|CgW3iUT1`}WMKpp|fr{BbS zrTRZsknNT@LuwM>ObPW<~`@V<^9Wh&wIr?hkL{O$a}~8%vQB!7-)guThT!^81+@CbYqe~G8hCo$3d zHGBiUG2e)9!YA_0_!j&{o+bY_PmgcPx8kqm+wcwfc6>aa%(v&0_)dItK80_~r}3Tn z)_ey(mG8lK<9qQTIA94<5#x~nX@o29)!w=E*Fd#`pR@S^c3qP%ReBn;XMX@b~pUUk=XZh$tL z8Abp=j=g@w8?7 zBZscl_@XHYr+_2=qL~vu2uk^)`Pr6k#?onm6m{YtyC9`yv1>}o40BIuX>^~8z(H6# zfAeG4oY(%M`C4-jdKC6W^BLHe7yO7VM!CB{y}jkTv&+jcTYSt?w01#mYhLFMLND`; zxBP8)RJ#e1ugxt>@6O;G<%Wi*YTo7>=xaibg0h-?WMu$=277@TUNX7KFK9{9Hy$o8 zyAA556ue$%`tXpxb~Df*2vysCtr0jj$KiAWbr=Bd>1@|N%KwBuWxvfn({{Udk?kq% zf9#Bg|A*e9)w^|$A2h5siO>lfrfC^$t}??w#xxCw2hGNHj%x4I2p*1G^FvRT<7DJLz610D-;XZ`&o8KzY&kf}|3EE7K(~NW-j&%8cQoE#pE{fb9oN~S zwNIlZ%N5!YepTCavqywD!hG}n_02vN!>{-vx|T)^c+V+a+XQ(CJ!|q#GX|V_L&St` z&F(>{m4-AT3Hl4R@j8(A03FPaMBry8$ZV&q0$k z&x1Wq>Q+NzGx^iO^cv=+(&wehKQRritR{IHi+YeXSr za%&-9Y1hkd<3H9i(7#w#$PeDi(_R_o^Itty8SiWmj%nEz%N1m;Jf6!7+wce8m%9OLMrUqw7JmlX`-^D;2A807;Ijrtz7%( zCgxV?NFfIU$>wK(|3iNG1NmIl9jGB+FCD-$Xl#%PV}oYy`XIUasCXZ^?* z9sA+z=3YpG&P;BrRuJTL*;VZ=T0?LMkg%o3Rs%?l)&M4Qt+_11yO<2fNswK$iK_*4 z<(6wfbhLrXV1q!lLHt-7sL#~~x(J^3!H^>$#`et&2AtFB-BPA0(m?*0tP^8aUvnCLSmoAplK2dLaI$2L!?N0rnOH z;M5vJaN7`gvBeM=9x(#Zs>Aj&%{Y4#P?`y_0cr{?X_|r3i9qcZbC5SQ7)ylQw6_Ef zYgqyR1Di0z8nB790Thv!?QY~Upq`=6b!>r)x#vgr=aPU6_P4ZWwbufyU^`$4ZU_9W zX%Eb5+XHJg$$+lT@|yZB6yOb>0%Y4efIV>lb>Ilxws!=#od9S1Ku7>&(!S2!8Y0-> z3^du(z-t~2Xwh*2enq$fC3sh$ZHpTy*A2K0M1;}-kpmt4)*V<|?g7vu?ACh#?|~v6 zPoUi16ByR;0;ro;Hh2Mlj(7o)FmIp|;tib3^#<1J_yE38A3y}O!OrFSf(592ft)S# z@YD9|0DYZx;4#*NTH63>X#;S+`?8N8K+WN7@BeXhH1;1aca0!pBMmIz3b-T(lKR^M&3993MjsO|5taizh>P*-i5|p- z#IF`9Lemm+bOo~}$RAGK)e#hNFtS!=MX*3FiDh;nVZG=`9c)_yir$=!xNh&8M z0`B1W*714brFuJ#C#Rbi9_m4?*7!8a89n0dK`ioffO>Z_E2cZSzQe_n1+Gcg`b;_+ z8R(5$$e~PkD?(FAv^e!E@iC>WLL0fOybB*4v_A-ieNk=@XK8#YL051m+8qZI+{19G zM1mj&=WxR_3x30ClD(ezTc)A6JtxDuBEd=v)f3mAnfiCZKNV2R6_*pS(O8ywkKwND z!?=@hlv5V%Q*5#gF(^JZyYw(Z*CVm!R+Gfw0{0Q+mHw|Gck343-e5k ztYC=X?yB&rr5d3M41$rSrhZgfp+>)FddfW@{hdgLgGWN9ZHY8=~z#Fnx z@TVO5;uGL1yai8@l3Y4L3+rnp6*{b~dH~~Mye*GW&NAcCxwxy*`LL_ey|4yS4=m8I zF~bax$-k$ia^m265!--J+?#C!T^E}3SWCv8=w=1Z%m4cjvUFOc>%_BG?_YeGg7e#emdM$%8Z zy{>$yrw6RpauB>_Ih$?ET*p1pGhOhpN6w35yiB6>GPI^?w6-?%<5INw`=k#WG#VPh z)mrnTJMt{t>V^lQPW{ex_{=e=aq_{O?+J3K#_(G$J-`^4AB{;Kgt98klAqSPGOI^} zdhQF()yH_!xem}R^yvbm6&dqam!8d|&}i&S%YP$d!V;XudBxn^x{p1ShA2j5fpc~( zm7OZ+J6E0s{R)jH;5|MQX2=lh9nRivNS{FmNLUW)pO(S;`@t`;4)C_B7s#E6219-Q z`m_R_2i0b5Lu)7Dsmk@+XhPApa`07Gg@JqpOpJbktOvBMuh0Oy)DfOK&C_e_@5+b% zn==H%_$*iaW_a7;5xxk4Gx`T#lj1CN6;g$NR3-{tgl@uTHVKh0;Ekbpt!m%XNgoM@ z(UYkom|yVg=o>~Xb0c(*CDA5_LIO06hnhDF?^bLPRtU?5l|rVlTKF5B3RXDX=Kdo< z%eYavJB0?rAnyaG>#dE|z2PJHeqJr#nF5XWgwn5ZQ2iMet86>YB*QJ~Zvo0>mEFs@ z*(hYPKsp#*xc{b|wbq@&b@q=&+f z?cQ-Ggl^f*AiDH>mo~|R7;e!oY*@1?H3^0V8M?Nd**uzH9Td}Z({dYTfV+s^fj7^N zY7H~|omZLp)yT8l-0OG+#cuX zypA^I5Y~4F-6&XKRwFN6icPlHyl=ZA+q~LPYl-?GyT|QFKMLmi3iT@9VqA#F}Y1p=4 znAG+!RAAJP`uFi2qbMh;C_V9YbxigwGYI+=w#eJbdldhjv7y$MH%O200Cdy+c8h!) z?xV7e!W&jV+fdp0*>MY{JNSunu%DmTaW|cSShAV*DUm+*B+AX}tmtG0G03OK%_~39 z(fJqiifE1Ht~ia(mv!&^ZoqDca?DR9FwBz~8lA`B4D&JDN1_$oN1_9|!wDC#!wGM; zp#+7Z+fgOSZ$!~a>v`pP3tBl|?qyzvUVjKPaDJn*=+EdSD^-r(AU~cq~SD1QX)K>9J=>KL9=JlbE5YWXGQZ*?Q3D5km-eOnLa&t6EsZ7aTx1*QN-A)lQlDTOutz>G-@m+ zI>&HroEYbsa0YoI9)T!CvJulA%{Z0KrsTSsP%Ua!@CMHQ(FoQlOba}1kITY!5bEs;4AG3bIA*B^gM1tXh;O;KN>F*+G6&l zj3V!q64CX7?`ULERy7kZMD7s2Gq4!jD6$zNZgUcK4E%5+jeXVs(P7|hH)coA6pgxN ziY~N9hW*b*OX!_+C4%116amP^F%IGu;WXjj1_#@yR=7hF>t)5$;zJ^Vklb! zn2kp|4r6NcGx04{Vw5f|3$u(T;(sE|Q2k@q6SliO!$bA{s`@wyAJ-u4HcCB~ugJ5qh1JZcb(3?tF5wXTC* z)!K?B1Me%3ad&Z&3A;E$s8?>q;v#XWcqL`CxKO-BTq3Rzmx;^8)ncZYC9V?Ji0j35 z;zn_$c(eFMH_pk5Fg(;}vKEM}`#JWwqS!gPV69_-;GLt=saF?@>eU^LVl{N?UZ*sn zk5N`kHzSjEbIrYVM>C9#ss?@#ztyL@79s=0yYtG;QI=h}k!(e_r+B_VnBDEWle{2) zoHF2xf%L*xG;i9;DXw)lf{$$T6{W=BXcfiM+Mmb>QI10s@&n=~HOJwUtF~BAbVB?L z{)hNpyff?@;)HlJ6J>S8RHNaNcrH8JxvS?%mAlZ2e8AEf@z^pI(KdQJ<(s3DVGy(1 zg3WkFWO5yu>nkOJUhVxbJ)l3!tC<4rf^SI0CrM1UWx5*g9-ZN4RY1o+g8V2C8#=qt zs12xWULkI*%1YFvta95#Q}OpKJdN!vSg?MCxz10^C-9rPMrr+xt_cj*8>=0~GqsB7 zZbO5yq=x(W|6F$q&8iE+?3_0M-D7g6@z`C6r&gz&zdCJfN*3rLV&b9${QX`-@Aywu?S{e9K6ZcvWW>KfZ{?9vedJc>h%j-Li=TVxar8azBD2dGyLC;PHtMrG zFM%PMH@ued66s-d!=g-5f-A@GhP%XU4K*XbML~2U#nlG=u&anFixxvmWElbpWFu@% z^zmCPu2bD%SBmW0FBSau6?K8YRjP6cEspOz6pX<)Xy}=V0k;x7v14nK8c)8Woo_x5t-fNF6+^`!n7o z=aMW%xROwu1T9F^3wR&@N49Un`}kUn1Ra)`Mr#;g5+&&8PPLW?#w;@}q{hi}d6=F> z?rlkBL01K}H>P}F{E6xZl4jCl$*rar)pNC@-0kR3b>#kL*qAH1|D7b&w?oPa^p)-q zmLavpU{!WpuEU^oK>D6>E~bE%)tBn)Va?3ISl^;u!Q@%n$0;zG$=4G#)0QoDgeQdg zapzi<_35Q~wPS;&^#9@)N?(Z2S~~(;q-J$>T5q^@)GBE?BZX5VP33s8>ZKR4*Bvfm zpGurWN2I@Zg`qEcyp&|Y!q7h?-<|%GoR+?qe3ASqJuAH^{Vcg4y(~Q=y(&E~y(0ae z^e^cbiI3A8$#B6N$^V?PEK+^n2r1A9(%kH`;Q1hfM+{@^lomsGOSkt1vSxd0r3a<- z{%J7wYsZFf-03)@)OzZ_lIldu=6lkgb!>}YpxooAEQ=2ks0VcHURaRqDQXve3q>FEUN;ghgg=Lei&LAd;dlHvz6tPaX{pjh?AgNY zC=*;giGsKwDvr*TSp-oKBp-vO4e=ZsJzaq)9YK)E;tI_wY51~J865Q zBfL}j4}>)SLHjklXURXrrv?8AfApS!o|IN6YR1V7gDPt)jztvmEJ3pVrc^`C-IT=#a5@jO&S;E%kc5;T2=0 zoVwa`vTKR|lMN-(<36$nWmjZ8*@!IK)t-axVK+#GlAO7MqyTlin3vx?QnJ6)H%Gkw zzNKbcbpehN(c{%_+p(hQ3e?K@LN(`=v{Cj(YF#%j>+2%%CuDV`tuj}3ebR8|XK9DU zH>xwd#k0`)hrW5;B;%XFKiDuqkhz(GDcQ)elR{7@;xl1OUfT)((2l$L;sMe7_{SZE z&QtA;iM)z`B7LP>rH@jO<{F5iMQN0=Zp=pPC&@7YimdsFuC&7*jAtR=gFa3e^ucr4f14T_rxqG z70N&wg4%%H2_`rW1$`8WVI=0I>WBD;Y_r_GAS0?dbN}eGBwKHm zOx;`6SEq#$PWOttT-hPeN$DDoZS@CaF=0;zHzmFhmi8T$ozdMlS}bqQv`n7qV<%Bc z_HZ8#DqX&dv-4bswpd)=yQHhKEcsjMM_D|FK6XI1wc=72 zL%u~IF$rfB7q|&@dh~VvF0hs=8Hw!{vhE7Qj^)}jq)k4yGAgZ!YA+ige~xvN`gu`h zo>HUYQ_@8XU#aofM;9;INBJK?zOrzs%pp|zUH+IFCWV>%CL9XU-=?V`#5_f9N{*MF z)^)SCOu$$_!+zA=DE$MU0pE_gAF4%qJJwyXw-gy~P~QPYv_RuF^_J3yB?dh(1r})I z$t8M;hCNsFo+b3f{VjPcr}K~Uw#f4erez1X2e`q8tCmilZiAuoHuNv z&Ktf7Lg)XizvTbeasqbQ^L3qDgE*CxziLas>~A5*C%{^g0|_Z@fdtpue_*YNR;Y|X zz2+VTJ=zg*!SaUbwZK01U8F%U4kL4+E2iTE8K>cet_`F6jaRjQC$|D~xkGqLg?+V< zmtr8~d9Qga|ATFtoTo@u;2AsRX}#Aa$D$YWZb@EC&&k33Up?=o`(=4@I{TBq_70niZDlS=`QT(B}0Iq8w#?e<5;ouqx9l{$7W|MAJ zUW;YoW6>n$K+Mh9S>9vCk*G_e2#f;xincAj%R=g$vi?Rv^O#gFF~9;xwNJD?to_Jd zX?sum!yvm&Uqpfr>j$O0;O z(qZBS>}5qSm6zPE%S(0-`!jZjFc`YI#|K0fzsL^AjwrrzLEfOeM+DXal?5t;mHM(= z`fT*E&HgdZj8#Qqoh0z3u&1K9YD)e=dQRd9Vx5Vc z{J6kWyI!WWlF=%Et$0S9>3ic+z3oAPwBQ`i!8N~b>*%A<+p>@ZeI5vL(=(NA;mfk> zv`aOQ>K&kDIkTd4xMviblo^Mx^yYfVofHm=+e$}iOnIVl3HzOFn$tjWh|Z?h6mW3v zRF!gwFf944_Hb9X#dH57vLmuRqrb@~WtH+n(vQjtc{}M1S1j-8b1gWo#0uGzj0S>? zL0{=9>+|NWiW__88Kv}tN?zuBrN-DzNw$(R`c%5j`~t>8IzM`m}S6b|%mJ|Dw(wb~kzyedBV-Xcgb^J5(qSm$osjt$a+4;w0b z0xDBzl?9Kwx+~VP8vCqeMXq~Tk1X!N?VJ?Iu$Yk8=Q?bcQTe*Dm&EN{gSbEN*8@AP z$y!tN(u%k`3aE=;qbr*DZU=c3yR3pOGKhbh+h|b?)fgwkaT}jWE@HF2i2Nt48F^d9 zq|`Xoy6!pcWvO9SJe5)dfwNyNKg`y|wk@i!B_{S>;<ip%wr>aKDY^2nUt-f+`)>S@+gFqYIC)h%6z-f6tRYz>G~E-?9o(_)tPde0p~ zY19I946(rcx4}@PZE>sVce06S8DS!-EdtlUBT4@c@K zM=34RV^UvyfZU*uD^H>t^!3YGE<m>P0%!C%UW0-3y2`5`Wet_P&&>@s;G$l!eM zy~?<$wM$wFRxk{OGRLRe!T&__v^>xK(fB9V+P*XG`!U0reldo;SUV=y7@R*7edn!w zU2Qq`9joJm&zHfG77Yz90zG5bm(&l!SMggaxjI>q0nB=S|(D} z%lSRAlVHUT)#?<#69=(pwAZ#A)7oXSMrEWjQ61 z4QgR;53KG;(lmP}C%Ph@U3cO+w$Ob&No zSm*#E@~2c1<_s+?_J^^k0KTc8lnnn;F|SC6Jx3D!QI5NXqq?u%GWBBg;D~#;7Z#D~ za7?_79E)*{RMTwY)v@a2$_FZpYd-96EV?aSU2Dv(4pEzmycxxC&7^M`8Dsz8j`b_p z9QePH;{K8BWpcU>GSwX(WV~AalRBeX#&22AQZKuo5s(#&$}ygu8X0ddJ*r4o#)pgL zUoBw{s+g~q9-SG*nQ&tAahnn0fVw?v<2b9wy-t--PClG*7nAN+lh79M8MY?I#jgN+ zthA&)F7KV+@rUH&JydT#Ob4t*m#-fo(GXn0g~-2X>m}2+MXJLhV#L!n7Kr z)By8s%^lTV?=_qDdOxJ+so3?h;s-DTe+BlucmR7DvzZj6_h?+mv!rb#4y%sxEM+#$ z9tE=|CzR14bJ_d){_TDvyD2H>V1;)iKg2r1Mc#eMe^NyI?}`r4syA@C?73s(v^T47 z21bz8#9SIb9Ie~4OVOHbya^W2)EKQdQ5lX#oJ5U{3oYCKmxPXJ&R>~ zlZik2^T)k)dqf*1I70u4B`9vZio7ZH!gwP6xin3FTg{X{A(qmsrTe7!B+1GL<8=12 zeX7ehna?&JUhevhngu?!WE-6iDPcTO&YHZTrq)aPe)hUL%c}A61t&M_JeC`CT1EAl zb^1ajsy?X4J9CVz8XrrewBE19rNqj2EAFW8jGvQ#kmdEx$S;D{*kyT|(zmZ&{ayFE zJWFXgfdo?JH(Nh8TCn_u4^5w#4%W-+thq7k^J+8UNc*^ubmh4%U5>{b!h?cIG z>-Cd-*Z*nP%*0BKqx860f#RQmR-&TD&*JBhI?lMb96HPD>r+pxR?iPcsU1YyC*~#+ z!;VhqH$HOv(Eez!Onws2TW=54Qg_m(2T-h9JNtbwEC` zd*Yosr}JrTUgvx2AE`H06&NDwHrl&!c4B^FWny&VcSCvIH<<>B?L7jCfc~l4$njE# zP<_<&w$IE9Dl^{a)GMl8Emr8~&8^~_s^h5JDvim%RnW=7n1`wbm0j~ARX*&AilX0R zc?|K%)g@su)zi|$ZK!%xn_tb#ASC@44|NlFma83r**vaq21j%J?)YBmgFd_U&iwl| zMLH^>fugm?rgM*BJ-Q69j{0s%On;3jGC!+Zi1h5#X*@h;nwK^16NcOClE7)VGIdLU#n?xkPIbKkAwe^-@AyA?d7Wz#kO`VnH ztUo5t3*__u;AyC>>w?^b#A)?Uku70PUEi*QTvA8WYf*Nq*H2=cO!bi+nz5e5PMu?lH(Qt}(z!A*Hi7ragtLO1ve)NdZX(FEi|e>`?V*#?ld05OdEKz# zEqq*@utdu7edz4%zM^{uC5r+L-pnHyr!<29Nw`5JQ8a=)maVOLTT^13s5YeD!)3;b zF{ag~gir7chfnbRMi(41+z!>8qS{ucs{^4phfNq~__fJLZub$X*?HBw{MJ^{#*9H% zR}uYvT~wW6a$Nh5!28W?7hioMDuJ--aIs4*+$-ytC>=+NT;l6U=iGJ@cE|lBXR`w2 zGs0WW=^;uOI_d2=WNNDHIVJ-7%@PPx22Ex12k+v=4`?m=vIHXpU%@kpBN7ue!8t3I`o4n7YDST3Hz-#Fd zO`dFUnHrg}W7;w2D$M-c<2Ja#YgS!m&{kQdSq+rlfXqo7H&G`;;8Ac~v`>7h^<7t} zHWJVelTFf`-NtECZd1ZZ*QqC_a%4sPYnDgcz2K;j9SKP;m~|GE^rFbtSrcuayHW8| zFD4SF5~fC7Q>P4jaNCG9|EUpD00SduvX*L*LoriMrm3{*c7v(Xl*ly`q(80SZrIcb ziR~u7f{Rm*_)Shs8xM5-4_)s|Fu7fnfxZ%PsY@!PlpL}AY@KhzZFDOjI76MCY`wBt z;D0%=t8!p-##uyXJsBneQ-bh{PjvZ4t7q6||CP_sX7-Wg@$$~RSZ;^KA)0aJIyVcY z^OOLyDdo7Ced9hJ6~C%|&^|ZEN|vk;5bgyx$!q1$MyDk0@-Jh{CL_uSM&{&uaeZyd znn zm#ibrdG2qpIWT8<4orrgS5wG&s&@QSRAV$Q|6;`xR3zHC($B0}P!)Z#!V+~h)o2Wu z{xKnS;G*iMUSYr@yy1s?tJp6aTeIZQV6y}`8Ab>-NgXAV;OPW1EjoKR)3oP@_^Zr` z{RfYRJs=$zJqqv%JnK9pU-EKpb4gwSfmZC`LHtQ$(!1bImIcI3 zsa^>0PFuurs7)^oEUd&~2Tc1<2Tl7;hfI^Q1E=-v2ch)=CV;-`LF6mJ38)EZfqJL1 z3BQ|A*n?)K8`Gv;v9F{dbvLz|o88%=(AUOI%~+M)+EA!1`&xF!vYaKm z+mf9>UCseqyj6a64p1Ktcj#Af&UAIpfyDpDKWVV1gHxNQcWB%P5Yx@mp%ZIl?*yFb z-s$e?zG*qMd-{_A+Hpjb3q4{|+%Z)qEjD#IiW!|=bazT!L71_5?v(|h&g|5C4j+3^ zh~ThRU`giE#-)E}sLavf^} z4dwKE`Xlq8$^DpV+ICzGvJ{z8^G-LVCJ}5$GT#~8@VwmR0^f+vmCD_oi(|>VoRHhA z2Hs+woUz-F5MQgXn+}jm5G|gV{9>wOL5J5W`>eGc7=8b`;-hgln{8oUc?{X8K$#AfZM^y6k7j7rG%K!+b4MM*AM^svzFYaIWkU&h=3W8o%K-ObJ8f*2Btz*1r$uxxNQuPdzh zq7b_-O+NKUO!qO|g!9?1Y6s{Vu*z0tbXWY-q&m!Fo5!dcmyiA@TJa5UthPBX)i1Z& zSG_`P!(^e?IAu8CHr}DKYYt6ij}_rGb^l0Og?DXVgEO%N`dwYW>VM&4@<~n){l%&Z zb8huI8#|G^&O5+o{l*noDT#bb`4TzYp0h*ey7!<&HjM^NV`a{J1M@ zhNX>|dFO|kL0JvKu`?-9!c0qw_Dqk{&ORgXbK{vD2lR~DjIn+SG{Vq7%fDuS^kK|Q z^1HPC)B65m%-fo4mQPV1bp`4v#+8h{l+pA-jKK0un(NGJ+M>4*;gc4lmQb9lsJf>^ zEmL}|-(tDeInL4gve=apCG02MCT1gZKV1bgX=%&IbobcW$UJQ1WF#cI8Dn9qiX=8i z*)(xzd@JE8ewAr?bJ5s&-B z5K#zAT^*{GZUW*4A_!xrn}#r^>%piMU*nM=(~!E(%YsZZrftO$6I-E=@HNb9@O*AA z>SrCi?V#I29m3rlRhxYXQ&_Su&q{JKo|=?A*)o<8s=R1ZV#XZK9l%~nsaCVQ>ki4Bw7<;JNum2R`{v#ztAv%6&{ zd5haU!+l0hh&r^+)!X@o*9BW{oVKV~i;_Brpt=Zj<29+?=B>>|HIb>YvkWaO&FXGL zw0+}WW(ZX`;S8ysa4?dKxvGOAb1_|n1M6>Mn)J0)65In!UNeOqI8@i%N;pTVB{*Pf zQ-h%((-rEn(SKt=YE@V;G>Kh3Z9eV5o>RDMXsP>o&qlxIj0j_TB2qsI41sOaotpJR z#SmNAKbx5Jt^#4#Dc(ur&)%FGo~>t(&gS7TRdH?a4Q}9fG*ie-%xDyayx%C9d494F z_Ga7b>NneN1Z&?QC#^FM22a-?SGJL+b9PD}e`T z+p)JfsJUU9mDWM=i(+Svj)ybHz=4?j&NF5l8=6n?qV}p|uvUmBT~F9>;zBi~2VQv! zyB2k@&~7di+ob!ms;4j~-KPTsTm-%r(dHarfjrvW3#~0-k6_#An!rm(pE>{9w?Mdu zcSBR6GY~j8JsJcbAQ;lR;A4T6`Yz0x(wxqWwcDl>=H$@Cxj|_1+`dJ*J;%AbzRR%YIXzhGoZXxz{PTblv^m;UzfR9}E+#lVO%M6V-&Yrsw`Q)`(Mk(Dw~^r*b(`}eVAWO=Fqk`w8&^rI zi119Zk;5ATw7(O7cCI1uGrqy8A<=TK!HKM8Gv|-99?MuC>8*(AV;w9+A%1kw=CaHk z=6FSM)GMyDMi1whMO=c<9NopCq)zW1B7wMm?$ulrav2sdXX!4eEY}U5>$lwBd?)tV zC=vg~G66nU`XEv%#!{l7#dQN-0)n^x?ApaS#C*Z_6|J~3Ww?anL2Mq2DfMZemxRnN zQmm7`Ii>U&*|AJFS~FQzU!CX^Z&FEf^-@}^z9VfIeu+`rIgK`BZka^MXP+2c8_m%F zGVL7v8{!^jZwr0C42->ghTVkqp8w*ITKHeDXUFOeB+-8-|2qZ)ChggA`>_t`kw1cYxdq{ zm>!p``@}vrZk2Z2i%lzVl6T@lcawK!m?IrfD=^l4B;Ff0jPxcymYVaX_z_k;5@XE_{ zWT4?L33pJg-U+{0cf01G#?mL#nqxSTI<)E;U@hFBmPDEEq4CEu51Q z7uKWiNOi(yu^KWxS=aa`<>_fXt!GrAV7lpar5j{FLhd+~t?jl8LB{+I55gxQaITLd z<@zLD2y2_}C1kZmda;Ui*1{&mzsMiAV1yf3FnZf|kNv}YCk#owMn+Nr_+`Y~wvWUg z-uJZ6cSd>}Pt+mQ)eyJNSXK2eWDC#;vvv5jL4YiC$_I0v5l7#SyCn0N7i53+&4NYB za6Yw3kH*Pr;`CD2bL?ZeLg~$2l6EYN=4T<070)b8Z6n^0y&rYwrV6g8gOl&c%Gw{u@|%UKRF1IMNe!~3)i=f^A#I{f zChvtbIafHf>26KV@j(8C|W2`nBsmNm`!H;5{)89J9!lJz% zptd;0$UghU$UYD@#@=?0XQn57UpPdepfMf0Qm*2kR1WH%WK=qtO7_Cboo)o^`97)a zaL&c8#6B;V3>Be)7;AMSVzjZN8sQ!c84#Vtes}+K`+L+1Cc{Qr8BAHApG4JLys*A3 zj}L>7osp!KYR+a>1VjJJW07*O?L?GivFAOE&boeAEEs)qM?OTbk=~QC~-hYfW<((l_FRV>5 z<6)UcFaVt>(G(8HG%o&)C84j!ovhrt7`Qz|(zMvIXe#MiOmpHaau<6RyB8;-1{eDl zhZYAGM;7}R1&hOrYHaUf4#sZC(Ao#}%!aXDxu{s2Y$-9a1soRcOyspVEEJ)eu(#YT zQ0-M%WIJ3iw?ICNI?@#3ke9Isc^h4=A&+LdT{FrwuQDK1zd+&!jxI)eA6u+4@XFjg z-_e4y+Jo%E|A7!TM2dT1w1p8j3z`&R(5OplVawS@IFpwDu*(To-LSyvHE;0_&_Z_# z^o5gvFmL2Re6sjU|L=kZ)JO3d<(zB<^uxLd3o?>;*#_#3t?dMI`3VtI*+`|{04Wf(QmbZxAg4G ze9fEJ7n=(}iC{u4S zL!A%HQtM@Gj5UE@+@7zFg*9TkP=mom>iB^{SgG1aoI2SEEprF$xyi#_AWFe1ni5P9 z>JtKDCWlm0lRWJUI_Ejza>_&rXRX4ru4p2AI&-?w8aGiB<1;bJbs9P{uALU&XFNgb zH=TH&Y9(^FV&XeQ;mVZpfu-0Ur3-bUoUzd7-+?!;mby=vOb;&^D7+{1Cvxe56L|&1 z3Gq_E1a7>kW>c#9#HaD@=|vec(PrXht_$at(oXTYhb2vzSm1q;bx%B18_$>08|ACY za?0V|H`JyZZ3JY-&(r6bZ1E>!Aw8LI0Bzr9}!nvoYHDBKU!D1AfnJP z|5}Rb(A287vtEjctlofPj@nMp@yJ5I4x9q>CTU}IS(n)z#toCdmYQ7e67Cc365b*2 z60)PFVT^>m@XrlT;OopkfxO%-;S-pXr#be?c4>-c>ffagO519$)Dn50Cb|%B7rq!t zEMG+5!|-ui*FqhGAnztT)#~|=Oc}41)Xa!ky3lo#@@Ln{$(J(|uD>P-Q|}BkCtq1= zP2N>$Pp;chtdbP(R7GQtAqJiLG9J181TFoh(`^U8>acVU#a5Vwp<}b@ftm z!w9|>bpMs9hssOP&!x%n)Y%X?lYUD!y|gZ|jbSm};99v*q;rJ#Rc4iy2WATjM_q&L zjopvPfV+AJNRt-*q~|anQ#}ytWOIfFO2G~>CQ354!wcb?FyiQ&@Bv(cRbQQUMb{>* zBqT}uu{BEO_PEUgK@YPb$yK2?3pQ+~e1+!_yehn^4zXU&RM3ed-@?4W2+k1g&@5LV zMJwIyMgYg-wkVL$k9?mFC-f#HQ+C6P5U&V(Ft3rJ%p%w-8QrG4^@|nXty&n4xn>Dn zj7!=@=OXWILVl50>{uunx>mbc`w-NKvsYVXwtKUY z#tc+t_6*V)p{I3!2L;^cKEKbm3XGj4kNnhahgfOk*mJc5q3s}QFq}I*{7dJieS5bt zBz6R~Oj!QBevrTFeqMWBZq=Hb!-t`v;d?jl$U=-*H6G?aveR3(S?<`{J$wRs82OK# zj?OnQ`uPRlcA2{Dyi8kmS$19irSoI>7oa%;8F?lBr5&UB=ZIu01k5d}0al*U0HYT* zfGps6R;@Fb>34$$;J1teGpTEX-wHG6FdNNL;It1E$Op!K(lj0eBe|)-jWyc90pRzo zmg(*~PrBWf7t9opSsf^(PH3eaJ0CN@c{yAK1=^sF!<5zEBTXI7~rG7e&$tLj?`u5Cp>7zeI|59jt!sj znW09Amp|-V0&XqO^cPA1R@gtm(Kb*~<->Ft1CR zEW>|AbA%h4$|(fyv*mTFKbHSp{%85s^2z1b%TJaEp~arsa~81<{r3gd#@@Bv?6>32 zq;7U`-I(p2yw^-gAmq0J_^;*TD6QZ2IP3hT9qMWhxEWgLu*%1Ef4i?<ApBm<(*PlgVUeGduHqpHC9 z1v>NPRe`d*Fs=FDb0YKl^TP9HNrv;X2s`oA!uilkBhOG)^F_u3V&M^o9K`)0s5W_Q zvtU#(s)yFn>g+w=_eS1X1A*F)@|u@IIFA1_Bahn9dSCb+A%*JbZxPo(WyUmFXrrEm zu+oo9PiCs0@RHJp8==sq(H4AEZi6|h-r2Z+c)(>M4tp8*-&ji6vW+9EMMfJxoaBO1 zG|w?;>aSFSp)Fuus8?D(D2?7rUJwO4SOAJp7>ar)^SiBlJ`4r=xeZWdyQg7TWuja% zTQz=ok3>Cx&bhm$bG~aH6WcZ1Hh+BBF3Gf(Z*e;*B+3)@Ka0l&HVVP0+W8Pv-F(eF zetvN}9Mv%IlPjCtJfEBNXsR@}PEjGbXWpQj%Lns#V9)UqB_mTW%jRe7~e zy}hQW(4eutiex*wHh+1(VuCTcJnvDoPdZfkaLjn@KJ<``wYz+lOvq2<2RRtDGe{>l9F`B(F7y9jx-qNB-DSb0f#$?@XPrjfGg z6Df)=kg6yVp<_L=^2R_*cfRBjklbHiKZNiaUw43zUz`&qGv;9AcM~<@^Cgnv5@fwB zNiu@mfEu4TB>s2){&Tlx_mlM$PxrsIX_86C^)}{-a^f|}+GJ(2FxkV>YrM-grU?;u zQ}`nQx&{NUP|I`w&h3PzO)o>=p-$Bs5tJOsNnfq@q|m+lT|bzMxg8=;nRK@A#5zxQI$D1 zdZyhXj+|G+mp)0Z33%O)o59R9bRR5JpU4~ZBS;d;3H0GR&?>^*AGg#I55WlO3r(Z2@lvfrkm;a{fteS{ydHTg z<#tI#2f4@uD_t*sLQ5r31|_MfpeL#NrSSw7Gjpf$BpFXWGBrZJtb3r}zG`k#7BV^c zkc1GbNvdmPBRSa`5vA5-avtb}Pa|iVRAm3q9`mrOos0N$noI6b6pVjPF_L{MUp6TY zr>7tdR>@gz*>JkIfShhVkYh1RuZ1MY4YC$&6WCU+E8#2t$g_P0%*jZTL? zAT!E)CsTcX$kYi7q*PQflP-`|$&dT+lRr#HCR3G&lM|Dl$WxPIB#Egu;w7Tszy$d~ z`4A-7DlYmnzHVQz)jT=aib94^^2}oW#VAZNy$$9TRXG&;IbRg$NdBCkqUk2?8LI&w zH`Y~*g~gppG!X-O!^?s+C3|z6>Icnk>T6SKO$Wfgml12?Pvs3M&!ujXJ!3m;P$84z z7bKY38*nio1Ehbv85y$7YSjcDktfBo#dVeYpmq|K;!aLKWG2P^Pity^lY1x8Z1)y? z_Al{nD^bt}CPDQi>_% zlpnRabyXCt1gE-M3bd}0Qb8%DfB{7miMkfbB}z5Lw62|!L+PYkptMoyD6Vzgls-x? z#ka1XGDtyF3Mm&Unsqoz4W)aO4fd50OQ*6PTO&n6G zz9`W4Ygiw$$4*Xv8I&c2)hiGV5fa@WXnhL$TIhF>MiM|Zz&Woc!5HdG*rep(HI?%4 z9S-NM-&1xeI|E3^|50vGM$zX+nN3$oiMIbz;%xr|YxjVnMtwxlpq5E!Q-R?-GXI;& zN&eAq);x`AKXvBR* zo~l_-YQc0s+}*i=k(x2TJ`3=!{pr+?s@tt>)l~56UO~M|88DCae_pG9u8Qj3J275j z#R&|Kt(rY_?u5^W5f=L4!2d?F&VL?Jn=M0?hQd(QRpUK>WMh%;{+z%^M;diZ`|;GL zXj{a7`=kozGHmWR^?BYH)u}A9eyd}*0|5Abvs4iw@1ta@TnmjlnpUppeRQD{?Lwil zP9zxdsNP4-4p%Dcmmf>{;j>CLS3lN?ik_#|bPj6rsmdy687*0OU0_?WB08g3Ah3p_64OOao}P>MPWHVxlxx^#v-QB1My? zwO6lp;321l7{YFy7()dbUR9nZOA7#x=p~_D6lrZ8Dm3@b&a+v{Dm34&FJ~k5k9O{- z1$O#oDAGus2WTd=)080n)17Juq@+E&WQA-&-+w#W>soc%n3yBY6)HDZ?6gPqx^ROE zdcHskI?sV;Ds|!^UbHJzDo6(~67{9|UO>|BI0ew|AMmFsb=nz5(MAouX!pd9(L!k@ zF0;a?#EbnP09hV*%OVAhpEda{sfDNNABYBZVns4Sl;5LAq zJ0?OhYUvtO_)jRN?Z9CbKnSV=&;hoXDv$=gyDG4DK@Ft;r~?{vK2UXF7PzK91e7f-Nj~a;9GwXxzF-_$Q|0X!6s7l zp0>O$<2(LP@>~r;NrW!$4%c2Eh%MY4 zfE7#7d&0^Mkn%^)NOT;PI@=l$_x@ro`XlAx&|3>7I(ER0{0ucNs!oSD3_-5bE)j3i zDv0R%OW40?qoliUYU@N)P z@8)NS2lS92Z06A&KsGI5`<>ryO}<$+K-gl=%+og`QTX*k_XyWAjz{yXz? zx)G^eirk(YI@4}yC)V?iHmfjwS2`Xzd?fo^26!N1d=)Axw4>5uW_ zbdq&gJ*()8(Ws|2)*WFPU`Wp`ZA>=TdWTA)Q|NoNRJs;jpRiSbo5rT=)3fOr^d~ev zojCAQVuikSUV@=GH9cULv;ls`kzXqt=`x=)yOpih`5 z{T|&jdoZj)@)6w_9>Du(O^pB`H`T`xskY*UsPt}{yxpZ-cK3$dp#mX~^ z={EEV`uE&}^ySfXODB4|<*uV^?>AbB9VgP4PC!TxoYjaF`Zv@~^u4AL!w1HcTOF7- zOJqEN7che8*$e?}V<3|uK`(>ZGQ#FRr%y{`>9r$iCDHYY^ye6rn!BNTbT39L=eUwVHL)B@$kGZnVP;7873pe@;mUxCSs;=Oi#(7^seU?{A%KB zxn)LJPr^W0k0zjQ@mfw-QPJ~nIhdvc7?1c~@1&`kqKvzm;@5B*{HAoPc9hHqtmW`u zj=1Ivy-@r2RSS`HNJN-M$gLdsjH&gjeWSLo_8nz-63Tm3BNc#IG)2{h>`idQEnxN` z+6SVj`{)Yux#ZOb1pO-Nw>2DGd)`15q51}YTU#qM48Fhk)BFTDllTkGp8hg`l>ZC; zZD29@1{z{_1HFsJkjBo1&EG&j*SUuN8;n%^=zIfx2XY&I-9}>2fcfu$A@dK~h^aH} zrlB|e3~ex-h_PlGPJR!e4jmhfO2CKY4Ll*7KUbYOmAEJK}{`t^sI>m*mE zd1DS4U^0ijm;lq8`2fF&_Gbn$>jtH#rRnbnvSHCoU9jY(Bn>9TL5^vW)w4E=rnd!$g z@8zQ(A_Em-m>SFh<_z-|Gf3kO(=%I(d6(G{aua-C|KM%3CnJ;@$$ZAVfxgC6V@5L{ zFguv{neUki$+wvkI`ho4CNt-(=9?s&oDWN%pJgx~5o53l04_`g_XdrJW}t6j$D3m5 z9E)iBABkgh3mHSu*RMYZOV1eUB6moVNr4i}pp|waHhjoadhn<)yvy*Llmal?Z9XAM zh_`**7)v}x)TcHug2-d-`pnPiSiQG&fDk2qWClvtt6lZJ==ca7Os_n8s)}y=ySq(O z-?8k3Zk%MjBa@=)%sc`&W|d?uH%!t$PtgVwlEZ!8(dAfIhh79#4zf%>r|-(}hB@LYyRR=j&M~Sq&_k z`9{|N=91{fpcc*+xK0E6E2?0~F7HiKEYW}!*GMH!x5IkuusbAm;#cQ~a}$ZFNz&Np z13yr1q9xF~Qq_i+Bo&C^ru(9*jSa0+G+V&k4;u&jAbSTZtarSO6VRg-&nPl<&N0wv zTWT=I$!IqWS>{2^}@Q7HmSomfw}Lun-3 z9Ez+au&!VWnRkccqo63+9?ii!PB9MmJVsyqr%pnfC^VSZ!br#~o)_T2h#{Mkh`5+y*?C`_NFV^u9VdT}G z5OQCLJ?^v*%!Ep89esy>KGP0V=CgzM@vr3ci zVeTgCr(U*9)O$O0YeG%;!;o8x4%`XtpizGCFxnl-(vF;o&vfWHJm`+hHThv_Q})yX zu6Keh)@)7n1M7-l(;-S(FwlnsW_zG782x^Xcj<|B;&Akdlo@-dla zbiu;hYwt89y?qyN%r<5x**?cao;MvqvWw}vJz@-VR2wS}yDt%rdN{{xc#dJ_y~IqA zEaTkR4H|D*$-}3RUhFyZ8Lgx2cSC;c0grF2H(B<&wu3fhUxsvXPJ?l5!vH%4A@)I= z!-Jx=Pc4>hCD?(z0_bVxpec+kWe*IC%35UqP&5iEs3NGrZ2xWB5Dm?bkI)HD9L|(e zXPe_%oxe%uv*kr~*q4vDTV9rw7n2`;$~eH5o&Pad$wm^)*@zw+Y#qCcq2ls4$`Rhg zzR!Bh+H7tbi6uT~Dc8JY=?xyLLa{yAvglQdS3@qyM|!4%ul+u=3<7fdf@Z$6_{{|N zf2?~g@tJ$b#AE~cY4(RqJFvcwnWfMlDNik6uHp-1Hk>WBU`YDg>sri$SC<6L_J2W& z3vJCCqIZnrBeKmChqKL7W&~`>VXXz};jF0h?1dtsNr}Ll)>mB>hi?(LliR6sQ03v| z;lJ1)hQIaK4L-p5C=B8-ihrpb7!uD4enmE-?F>eC-tbr%=}O60e1cA zfHYrrg_1uT%RU~6XP*kZ$_|_PyG_Y)4@qVpTlhX?96ZC8S%_VbXM@tF1&M`%DswI2 z;dc=+3X5#F7JtaehOv;5{i+L^DDVD3{|Rv_wzbibB3)Gq3E zE%7|Y=CooBC-ycYCK%~{oiPoQ!GE3jJ~x&4n%6-9`~?z^o0yrDeQnwa1;=pZ$haHgSIXP}MkT zj$Soku5@W6YI29xfe%Rwt|F^uV=5XxV8)yBFuiOIt5=)}ycihPIryo{EOt7&D&uj@rDWS$JoL zqLD9~Y!SsI&g5{F)YAn^d<#-W|K-A)tbg?0ER3+{^1`CV*(=G`%?a!S zxWt@9_H@O*4PDLrPcq^t3c zgbdwTbbaBI{%^*KEClCMf1Is6r^sQYI}f}rD{*LnDjeJSsl;otG0@HhEsiAT-a<`Q z&w`-RfTLJrYT{Beyl}+f#X?I-T9O6F9`SZTtjL;U&pEsAV-uO}+h^Tu5$tST!>K!M z&2d0`2Si7G_Iil=h&nUf=Iku$%b9?MI6MmR&?fZ)5<&HMBn-h=qkfE8*(pVk6Q!6D zzG)ECRW{LXaAm=;evVGS5EdpUdwcFQ!kgw2A5ECnYDoNRdDEDsn=28G!&qtP)w;gd zi^mC#JgK!H@swgo$+)+XQ8t;5qCx-asMw|B&Z{_yBdeWA|LSDnJS@q%EzO0pM3}kq{qp~3dgwcWs5fIk3lWsTDvEF#YGNQhg)o@>$S+9 z;%K0)Ihuu=gAq6~hr;>-?`+4LmIeM795%iRS>PO;<#NeXmqp)P0oXjZfZ;Jw4;%t?au?gMrKIhrF@N>t{omVk~ ztJs;r-@{M%T-OdyFUP&)yfn5hdCNK4(28+^f8^xRYkEI%a+1Grtn|Kd;DOZrKRE6X zCg%ih3i^j*M%qQ>N~WJ*YebTy{H;k7o_3@^0jap>fdWpa$5qpU?5muq{6nORR=GIg zW4AcJ_p5M!?^omQ$U0;dLxNO{No$Q}FqHWGF=6h}U>`2b zb(Ql|%Z~I?;uzl1M8?`dyub1s?um6MS24FB+oC!=dp~!NbBCkE{i>8k0W2Fv->OaEELj3Gq>GN`d~!vX*$w5tq#2-q-EQ`Z4F;SID*H7I8EB<~gNY zD(7F0+6fn~Dd{(7o$Jo^=6Z3rY+`J*`b4>5NiewDZJ#7O zl_i|4xhY9p?lamVH{Uo4SH`7r4s-e3pBy%4gWD!0#65-c z!pZu)A9>Ennl|HdEErr**F0`qy(YWaQHnuKa$`&Oj0%T}T{I|CC@{dC)`AgF8^e*o zZNrlcA(L!ytz-h>hNwV*lOz*nkPoD$Z>kEsCFe!)KEmbV{qb5Bs##k58@1LM3A}*Z z0|P9=8!1!8QgKRi=;?6ys#Hr}#=f6s2GT#xa^!4uZKuw$?RB>#9CSnTkHDW;`@-3Q z!=XZbs9sh@O}C)ku}N|WZKYH*n|!eVf>(gq=q|@*8lQrtiPP-yupf$VBPX@_oB(|9 z{s8<@%Q#Z8co2SRBm{qaR+Nk3sgo;X`1Q%843FelACD?iNo2Z2w8BC0v{|@r2Fb$W z6#kF6`)HTkeeV>!k-|uQmz+E6b2p=}BfEmfQT->hn)hqwGeNKR0xvVIf!8z5v})$v zWO(2sWgsGoK38Fe zgE)c5!OoE0N+sZ*S|#F(5sBg%vx}S@5}g-rl~0P(_-in4mRJ~}co4qGb0hq~^fCmf zI-Y(+llBJh{-A*8h9`!2;NM0ahlRrHxv>gKQQf>Gj{y9bX#l>iK15H`E{s{=taF3RJYh zF4wj?Y!L|5BH!n!E-LgLUz~J{S@h71BPrUR!6opRS;z77xCvhOzD_$$a;rqzY}mL$ z%#`aQ0=byASQhv+KV0X%)N;#~L_TQ@;jkzN&zr4>a(NvI2cskinXXW+lcpc6rZkGx zoIutXX1Her-1!+x=hl#_j>}t>Hm&Qa!Nzs`A+L+QL^sY?Ev}MG3HR_NgO4@cAs0P8 zA#LJb5UaNKMO%lq#lze>Qoj{nDz{3QLL4n17&@LOn24$r9)VxmD zB?w9ky&IdGhe%C<^5-)u6FSsQ7}6=wce?z=|0Mp?K1QEx;zp-KH8FB)9Zn;VeVi* zE*_X3!?2lm@GGR$q}9s1A>hdLuw;;oxp7MFQ*LxrOLogb@R^TVky13rn$kVlP zT>6i&6Dp1uuDNdW6E98T6;I-B@x0)7cxU9iJc>>3@k(J2c)?3QhOj*N$nva>+ydT4 zj)O2!e9gNd^?Uy-9G?@rG@)xSngBN#b!?Jznm|A3Pg+VrIVR@!r7qc`s(8qyzvi&S zE!1nG=;Fbp;@LLs{H34TFJZM@#c+NiT++K#tl5uSF)q<8iPULH3kqp2$bNu}RsiF; z#UJDD+dKwG5+Q4S$wuzHN@&idr5?$3%Z?=s;_!(Vh?yvVvpJ(N(>WuX#dNM)Wu5RM z?$i?K+qgtkPtC$FSuCAds^PgWN+hrIvX@B7n>>f5nWae;$;FdWYmMY3L5O$hcn>RQ zd_1K2r%e7x+@hGtj>E5|gBrZ0$2b>sc=my^P7f=1C)mm(TwVWKOY8D=scO&9nJ;0t zmgbMd7YetKxhI#dOL|p4^B#?-xjI$xaj@Yfk+h{hyhQBTr58(EIM2nIWS>P!z`G?~ zo1xL!rEtBQxEN1a^Ifi{blBqFasM$S$$nW9X}=u12rNe}N=S;bB_tCTE92lJ|Ik#NQA=UtH!#o2 z=i#lXH_kszx`N7~nzK@tX~YGoVh?1?UV6$=APEuv;M12o$B-5qN@Yt@_#q@u^*0$#LZyPp;HY$s57{q9>~*A0 z{V{u*nHyHUoWM)eGsTvxTyfXuR=9m_34u$D-a8hX^^7xT)Vlm>uxiq)5~egftjhx38rV3RZJ*L8%m0c7322HqGiHf)92T~ z^+`@@f7@%h#|5h8I=C-bO6&zJdAUfZDnecN1Gnm;y2%GF$K>nsTkdNvi*s@LndBeI zdgxuYBBNs&SlQOSV3;WKM|h4XLvvoKRKDC1(|RAG(uH=p+;Q%N2S{<|h(L+`&x*0G12iFLb4=I%4HmTdUKqh;f2PDhlMk5QOzaBsE_8{yA}R z;`B;sPwEP|$&xPuEQeY7XRb&}lq$C5+>+zSqQp6}`?Fji(emn-Bqe@H7O#}8l&(~) zM8emB0EchDvGjC<3oF6tP@Tq=XSsaS7i9{=4f#)`V$tm@?8uIlwv{$S&Puv)&Po9U z%*ERlS=#Y{RllszdCOqo)8n>fT@${Akg>~X?+|D0P7Bw*$rZz1zmOXi8Z+*LroE!} z!;zc8w3U4ZEG4+TjRJecMEb%Kh8w7$yoiS_BkpD;;C?s!&`E&dCZZKmxT2*|L8jn5 z!*8HiTqE2wC&RMI^~TEa!8cOa-V5PpEG+=UY?`G_U{`l<(N+qCWZr%PdveMIAgqv) zLqL^TU&AnVQ!h0x>-;(KzpCB+zlq#jQI`I?^6XfD(6eKH12@ELLj!aD210Vp7cF4I ztB=HWL$k93mQInr9eZG7KTdb_9>2V@kpJEWsb`~5U!MveQer8|rKZ9+#N7vpvhIVj zLF%g-(kSiAW5bcD0Ub!c5Y-`P?TYp@^A8K|=gFB!00%+ewFu{7AyY^txDVfi^DXIw zd~Pi4yPfQ`ns#vA|1PXT>7m>o{TjHi!Aq$cEuH-*3WA3-lZ|VQYws+qlY+?e$zm&V z)S4{wF)b;!(Ro%tfOwyCjN4G(@~MKsCC-o`J81ai>WKpHRZ-hPEBDo%P*tSMsxG1< z0Xt3@f3kAD$Fkk4BrmH8XV6tC`bl2_U}e0jH3fY!!-=KTS9t^TnuY4bF32rF(9?D@llhj6bs{_ zwJCTpYjva?A~CY+t=9?ZG27{Re6%BnNFG`}5je2gJ!Kp9F$-1HF<+Q)!a&mM@JOms z+p5JxdD0`T59ZpXw-^r#G+~zkcax_U6!}B~Z?H1(1u+JUr7B%L&5E8ZTFt(2|%Sw>Mp9Q(ZB2-=FjRbes^ke7|qfkzFFGfJ<|KS+LiWj^%dsH z>b<#-tL3Za-r>ZE2!v47N|g}Hh2`SS4`1=;V-19WIN<#1X{ZAK>F~2UHGTx#x8xXq zxBfU^2^+)zN96=x#w4EK3_r=g2tUQg!ejZ-{8WAlKb;@PPvf8EpW!F)Gx*v3EPf*Y z96yhr%TMCx^Uw1O`KS4r{4#zHznovdujCi=tNEq;3jPIt6~CTe!*Ar*@f-LT`Az&* zehXN3D1W9sg5S*#=WD@2_!|69{s6z9KgieNckz4pVSF4P!^iW{{9*nmpWZ&k-^ZWi zNAgkp5&jT=oIlH-;?M92d@6r}Kh4MTY5aLUgHPfU`D{LgPv+_Dp&8Fo>9#$592LbP;X`YA#Q-NHM`^g9B2n(3`#*F71*U!cgIxz74)5M-M>1@?D`;5M41t;rl*$osXaZ zfLMd6kAp{G8I2d(MKgR)Ul0>B=!%ic6C3t3=u%SF5!PATGt?C`Ub_m_5z!ShSQDs5 ziHuYmblsBIU;D@pRM!zP6m|p8(bE#98Fbx%TC5Q|53cF0xvxDx`~%d*Dy}7TI&>l`DSj}u>mW7f)LJW~ z1jhzir&I8No?>2!{gZZ0PQ%J=c02HkeibksAI{xF=_W(fO+6Txf zu#9RkU%w$pGWh(rj{64~!f_q>YduFt%RAN_3{jFTV7nk!b4z?PMyi*c{z(xLGB+Bj zCa-C@Hmy0-Niu|yYvyY)9ThGMYk#l(K0EC95B12}OKOG7X1oV< zeyvr#)}_K}$|a^6CNj8I*%`Q2xt0qR&9ny{$nOZ(u9-jz*S@cPQTw)5kTC?o`jrZO zSrZY85-9~^m*1>KiB!0(tffQ2GF*7V((8YKS{H^ePx$BTumQ*hq6ljRwVgUyV(8Cr z>O@IOuCq?KK;48g&scTcSae^z+9B7XD;B&KQJA3kk{Z`BcN8WbDrT`R3^f-;XGE(R689yoV2TK>{WU9qS+|COWbdNkx&hVpCv!L`Y>JTaTDQA5kMp!J)FDMGPx z`dtq|29Kfe3P_&$!=H8%UK>qw1bgw@1N|W1>EGFhhn437Rt&m?g-#2J7)Gwi3dsV+ zq7_aomm^1=4Hb?q8hV0Mr_i-nP=}RZRN*p{R_l@hHCuC5{sWB48w!6DT{G-YbN9_& zM+p4@U!yBl+?i~cu>Kr^NtzQX%gk0C4Yw03K0eIJqHPK82?Dm?gud66oUH)kF+8+b&qq<^;)|l%_)dq8CjSeHf ziGJq)D+Zg3bMo%g65NV_b zma7jcWDLM$2$)#P|0&@ngt-S;ZG$9~c<`B>bKMdSgb^$3ju0VybX6F*k4M4fL zgDP|nupCd24CD#?CFTX3xAX=qx_y9fv7l&LzzXHS;aH&W zQEo;y`juJjmfm0MAPRHpLP^Zcrj1FPaFHxg>#k5}*Q20?9nd zAT1;rsJNUAa(+@k-cKqJn~?@o`<9H>>w1*k^(zzR)CBOj3Oz9wA=tho4Qo(Hu3ia?@HF|g1nB2)t0 zfs_K08f9S3S5O@+;=(tE@&=D7#Oj4&$gPskFsaxovsCN_xbDUsDgBLmqrT)$I@t(@ z{$g~X`CGpwFSY5`0$H`v?H&4W*0O4G@9bzAOQ$$7;(zCatu%?7Har{G4Yv)hO{yYz z=VEsdR)ahc)h=HTGhbcpZgxJjF$`^xci)(>3Ew!fp$GTe@ZKm^JP7mMNKv#ZE-(fO zOaPVc%h;=jm;JNvrq6y`kA|PvQXQ?4N3gRS9{^!gH){>^PD6yH67fe?=Kv*clC?`D zqd%7zNSs2w^Df_ThrC;PxwP7Cvy>hqFW=PrNbh&qWeVh}yfhc~GvXLj^(j)=*J4WxUj^OGTIB@g{R+|E??SZdxtiPDHs4hHnUIVcAWMtME*=Iqys znJ#|k{{f?4f2k+h&9ru^`$$V;Pc_!G_8T^tV^Nqy%^$Pr&o=ni654ys+$bc`^4Z`< za>c3u@h$uPF};W}sa|EamF-fGKGF2akcsq{wudqxK?E6XBe`5lb>A#lzLpRASrdF* zZSC$S9o@VLIv{RI$M}10=6hViT-Gb*qQu1r1w;0m#n`yvBI3u@A%_%>A}4h$gRZ%G z7;{+&1+yi;=iJ0RNkJzO$xVzyEr+U#xQh+7gT~91t0mJSSl`GLS+vZowpgXIT)HGq z>WK7w-!E}ZSY~g^DsQ-RuFT-M%^ia+7S9^of4}}S10*ZA{(_EF?|4!VI{yWiOaWmhSQ;YgL@$O8F z)ESL^`k=>2@-x)#qWyf@zSofg1r7HDvY>UT_$cV=;~m>>+9=*EKI^zzGhO(#3Rij| zu&d!Apaf_`RX0yrs(^e-JhX`T@1WxR|DsIzupV#fZ^q_@BUC6jTfI6ULp?S@c1!em z8>(vZc502SCo7)gYYGM|#Ay75Q#7Iw6M2=cDS0@S_v{&;GcdaPL<#ltwxYC zh6t?_OmHF;YXyx0gixbIjUw)BhUN}{IQ0jBNX8Cz3(hvFM3u{D5Toj4aMPgJKC&Ll zClkvjREW96ytG3F`ANSTJmsF(5EgDgUD_A28Uz;v&4M|>tbi;a38;b*3|;Ukiy=_r zd?e@jY(QQs56cJ3y!Xm3$C(*QnP{FflTapZ1i?ym+>26*3v$oNdMmxsoiceBXas=( zHb8miN2l8YGvhmgyMn(2_XK|n9tiFW9tj=_?g%Q|y>0)TDC!|@+^v2s_`CXU^#hsz zDJlT&Fm1snJd-|H&nInQ>^7#lyIH@QW1zY!n}hTFr@BjL`{rYy`t@dlY4ojyysX|@ zX@RWfBNjt-chnf=xS={h232r)F+S=vrsI#kr%u6G!u%A4|WJc9Y&k8Sl z%R!S763A0Vc*{oB|7F2KM;&@NP(Jvi=gH^+a5S9hHO1?;ueR%MRWBg2zV-iJ{5iwJ z8c1IPi~~xTNe;(Ti4{)wsI`iwk8pn(Hm)3wz{GXr2iN4d%-1{sf25rb-}eU^DMWf z+QU>#gBN3Xu1(;2h(=TV2+y_6;McKbi=Gf7$C3DG?(2pEu%f)I8cn{|@)5hNN>$ZZ z-lrLTSk|EH{H@cywdM-$$v*pkZ=G_l(aJHHEUylkLD=+<$$A?L%Vj71T)@^}!hit; ztE*cct_6~I`m)*-O^Mz=SqCs)2i`|MDdWSw?n;w`8 zJ*^+$SlmkuKqTJE`CrI2FE2!K z_j4O7aMxGzoen6@v8D$1-NxVdDTdHS;u1%cDzTqK zE}DLKz7^SE@FQCzYi@g1o4kEZF45-|g1)^u;JJEnSrh3dtJJFt->`ujlpAyU{VU-H zt~tKae+KeO@APkO|M5DU^TJih#MW+mdth^KyNqlrQ7yrixw*YJcFgS7_A#rSZHCHI zE6**iT(!hdyK9a$At+}>y;?$>Q!R0Ot5V|pbURW!UZve^`=8az5*H0FOFXi;ERkqg z(^Q+4XQdqb4&^>|#k`Fnyp;fT+(Ps$rB^Tb2*fNuZ$@o>+1##rI`rYPIr=r}309v! zg_tv1m-;E)jFPe(nGlvcCR5_>>TtBQ0;AF=yDe>|g<0&=yV3>r4&_+>cEbGDc3nfr zF|?__0y6xMR{%msTGsT5oXwRUag6be5n-a^6>;QoyYiaq?UVbNBgf2k!+b}Mu(M)j z+g*l!=DS`AgUh+y30hPOypl(?#gH5{F;Z972K!~ZhOOedV*NVGicXU4=dUk>*C2?W zv3YXVpvFcTL+!pJ(`05=FO7*ruJ%oEh=P1Yu6D&p=9R$1TL#j@_Xf^f2{Z4-y^`x; z=*!OpYZsZ#=3BFj*YW@8-Sh7du#`vxzY1fD-aCjA>hOUQH*&&Eim`nA$>aw>ouc2Y zIpN`)0^=VJq9G3(WO0D*M%X%kX+FU{9MZ-5hHB+71jjEP;f#x}DDwx?#bH}>^y8?6 z;nkrOPS4cs&>5RA{jYRIDxYYHRC;RfhSh29hB34PeQX@Y<*T!tv+4{;bzAVDxStEF zJerdNNXSBW^abB>Bz)wRNF@Zzddz?Ug?w;>n2caTu|D9{un(OZc6^{$O3kR6BUs2v9j!WTiY_$wN5<4y6V z;M`UA5Fy+Y%?v2HO4v*hZp<_m$0D=kq~S1Ya_)Em26eYFIfIn7)>OaBiGMsMh^ zD{BD8NXY4ZA=+gbnyjmiiKmfB3+~mg=UHBdMt_X&6vC47E>+JK$k1heN*(4Yqe3tlb{oT5LqCG1~jhjhwFUs;;@Nbh9vH<)?^-C_czd8BCY*F%J@}gv&{JoJy zWIM8Zle6U+CcGoM1Kok`2<^akAUonaQah46GCRNyVn<|0c1K}HerMl~*pBp$;*Qde z+>Yvw%8ta2#*XsN{vFL79q@Q%`}ghYhPK0VCa2^N7#14a0he`a`_)VC6o~3`FR_g) zTtbXp09*S<#`oboIj5bU=a0B2_8#7`$Jk3`=T8^H?22W)cRY98ckYeYV*=s%GDpJn zZLdrD+PKR)?}Qj<+T4Tr$Vf;qwqK0mq$LJEPvK%@ho1B=Uu~<~m&!~{-hp2kYZ648 zk3Pz2&;EEd+A?#eOa4v2PG{1VP)aSfUSQvUvFDdSOInQJ$eHChU8k+`D&<$OytWj7JWhROm2p z^*5@Tb(XMALA%AwnOI?dSRRokBb}!fjCV($!{=0!eV!(9i7U)lPC4tB%FB(MQ6R$pEz;po?sr(4;l>RoH1Ii-F6g8woeO_{O-$or!V zh?U(Q!VbsJ52iFvhipZ!Xuu6tLA!L_h@Y}!jRvSs%J8)*yYjE` zMZu=pfK|HmFPqbrjIox(ED6W(a{=9a|N13_9hNuUYy_>`yO~hSkL)5`=+1<}eJ|XkLj%c<5Wp31KS<=G76W?Wq zHoZRE@A1r1R7KuoAk@5oq@%EVx$d;&p8W{|S`rH1l$NOJu=}BuCz%X`Bnvek&wbS_ zH6tZ^P-REfD1T7%&@NTa6mD(TB3@#m2CizeB{k$n73@!N^ThhB!?4{^%L5BW^Ho28QcM)GbJJt$$#CVSs7x1ovAG9V%Nveme-e`-?HSl}j91kSKs zf#$0hi2&=}!ZP$G)*00F>#9U<6Ija&oYcN`|83u`aXIby=W_r_;DA#>`txRdb9g__f%Qa zHikdHCBC=a*R*MHmFIfZpm|en53%=oJW+AP#CmJQq~5th#&TC~Ph(GgPi;?i?|Gu` zUIivFz+g{nPk&EyPiHR#skdjgcX+c+<9VXUq}86qUS_e@-s3CJ6A$h+=kevF&Gff* zuUO0JUUAk&90@x3;TTsfM>B_4h$+G(z{Y3qT-4o~m_1eY;qvLaYre}pFr!;U3e5@` zQl#(vrbxfNs_6T^Yv(82ZeihD?`Q69jEkOHYul0zIaJlkzKcE6x4GcG;4Waa$6wuG zKFvLF_|K}jMLtz+=?!TrUC!WTMAFnf>z$lh=?rA8wCluWJz=dg(}La!Og#39r9y+& zcA7>`@`q7yokl`*$nI(lw4l3dPqXmJuGUER-tLj`P01CR2J)r;`faR=?A;_0RDvmC z&!m6^33YtB^J!eLE79`B`Xxr(?qr~nNeoiO75x^>tV>AYtRb-7BL13V!bj zh@W;>m}Ttia{%+-%@VvtFMMyUsHUiC^Ubcz9$xO)s=?mAJ-=C}rV0$H{Dp?fUbEoS z|1oqHP))UA9G?oh5u-y;8dSOl1}FxIN~cOlV-nIJDxgvdf=DyQh>=nvH9!zlwlUc5 zI*7p-o%UyZJMX!7_w4MRo%8NFyU+VP@BjB7*d$^PeId34KoPGHUx^EnVI_vdF#LGM zU*b1nD8B4{2tFH2Mu_MQqW+?vVH1l-O0uyTMYhC^@WDgEnmM<$p#Aj)g{#3=q6-U) ztaH7>J05tx5;gIKYAKB=k7-&w4OhomrKsGv+68$kbhfe|b zGc19|)-RZXG5x;%#FU8(Kw+VD$Ms22uW~%A>5W>hKq5wk{7jNtju7)r{zD>w z-7`o)iC6<$P>jbSoN|X&nGU z>IZ?APBB#c=nl^CumiSJamb6_-jdZ2w9zkEq*eWE)MxT9#(2zNY{Ni*Z1eNCv*IO% zHip@EJ>R?BsC$#>D09!K>5Xyqot9vUq?WSxNzky8m!jGHNOh<@iSr0hZp|ld0^|F4 zfFzqDVvh9okz(RAvw1>&eVWFd>)smn;Qgn>qEmFzGuBCI4j{R{zQ9_;CgHE`&`VSEe32BfGh(cr* zJ_FXvGk_R)7JvwT4g?G40I{7MBA9r!F=wJ20R;TT7>u=+ogU+idXoH195O($T*Si{ zq2acXlqx?GiV#40jSH9vBn6X#NR)tEq$Akdq~mpWNMZc5e8P%bWX5|VS#R^IQsOki z7ZqS6-F>w0Z;u+VMi3?n6P-vrLjHtIPI6;0pgXu*dLm^CJ^wDb_5mzOmnuE)-xIdnSHVcXvpKEU}zZO0~@_=l8*x&QL$ALfmNjFL1q`vOY zq_X$l2*Cq;aI!c?AE?^A#-#g1RaE(Z_Y^CwEdGsVVzg@g4vCC?#faY;M9Otsc%#VI zUghA16t7mo4n=1f3;!hKk?!$b$xs6fq6OeV+9rI9Yv3*B72ry8C0znW zGqUv(yNUp-{!MkmdjqC=y~6zwhi1Dr4EroHYv?d~VoH5D|uuL^`c+bh<+bs?%e zS}R{l>EtxT*70-1((t^BwZ*tLL8}G!&&0;`=7n2wSsEGxudA+AR%9D!o~}4WG_LmS zg5kFGkEUxupI~XhYWuExPKp*wg>=3y5^45-=wcDncc^hW5iY!YuyVjmT zD|nUxwxn?47gDfbIcXC9gCv4HxHhnV zEPKM8TtO};SCU1DRpiGc`-?RL?h|yP5A1bc0XezbIyUF9algrURu7ucT4R}V57R*Q zoM;R>nN=v&PA*X`LL?fkRm~5KM00Y!r_5`a*To@@L>wkx6rkWFJ2EB$W#aKdL`PgI zsf_#@C>zdDN+%f)p-72U4W#z&7o>W83(1P~1UN@pC#90FqHIXpq-W%ajIxnA;sK%) z|4!vGc*|mi=YWH)Jvl173_pdg!lS3+y33lIf=lqm03ublcRA z_a^AEI(EBk_sY0%@V$~PQf~kE_g&Z%kz5fVIBA2|6nBJ2&;qA(;nk280t4MG1 zs!3Idi=;thqx-EWOv@0-8x+NqOppZI6= zL!L`b&V;3@cu9kGBC$!u`f*kBz1)_G6e3_pmD*R>Q;W;HQT3_#Tj_IRxb~%t{)zlB zpZZtCU0@ryN|6x%2^12qQ@#Vs+AugsR@dZP92uj zF%FWpQ*PBAHiVo^ksw6`JuYlBGD@GH>?1Z-EM3(byZ2mQ&At;;mgrVFMgll+j}*tz zjsEo7vf)rZlOKEH7STHs)pv&f^a|<_=n3zhLI+QRh_&R?z$H=!*_r%}lubsEr^w2b z-z3k05I!a8AL(QjICoWJk7P4teagoGtg9jQhO!&pL8(o6OZgyq_C!0Shtfvrq_k7! zL{>G1C}FTcN-g5GM~ZW({7&CTijbZ8l+E)e#4|>D5p3;R-Gs@nx-E%*j!lT=q9C|F zK&L#)IE&sU>h>Ra-V{_Q)kOY_d>5d`-=SEi8vZfAXFm?vhu^Q+U4YiB_4eE*cMz^* z==K{SS(I~VvoYN%eSGEe%Q`OBh&)F=ciO}6>XM5nCxLl#A?YbUUdip71Uu3SIS+_w z0jI#ma>I5S<(wZ9_P-bTPnvYH&_ zDUyGtx+5o5Yv@5EZnESgN!)ZMxal#+p{M+oR1p@y}q)A8&QPf zt{nP?OD_3sy?WKpHE)VLRi%%o#zv=)Kur4bo*4Ou%h%F#M>_r}2mw8T%i=+m(cs|` zjOPjR`PQx(5I10h}ySUUD`XW zJ`IKM#Tw8S_}=TrHA=I1Ru-!qS>6z(MaPvpKqKeAQj zoW71M{KO>1g`Ye1*K`X!r9D=4n#iPmAdLuS)4E>e(7qPt(n2R^3oq6zQ|j;&6g5l$ zrulUnX|w9jAgb>b>LhZWl9**snT|HkViV5*1<0qZ>J?)6L%93YI|lnpGRSk)02x2E zICV4q2F9QpgoAa;;7-U6Q*#7_FEx{52fPwGI#^}r(cq#D@@r&Zvd9>Me1R52MUu<= za>(kn$1QU&Ip1qPKjNO#9;GqZY5Wvf`{@w6Al;g#Pd`APCtge6Ae{p6=$!#sx+(e) zU4-(o>>iaI|B6u910pVrYCPE`X9CwSnP}%)M_Mtyo}_RFHSmQdJ5YnSL^jobFAV9d zexrB;obZ#NjD6RAtVIK>(5=>eoBX|}pzmn<^GsJyAXGwpuX2P%WKe5FKwXRs_a>-{ zDrMv11pz7cOT3kfkT;HLj;%616fAU=&!%;|tu=M!GVR9XH5|)>Rdy72ePDsCLCGN| zpz5*5Dh(2B})0j2@LCm*T2+Id_FpiK9<$;;kN& z$bn>A`J}2tk!i%LpvAXW(CV4r3x{YXMS(QGhj(6mKwTg=?DtBYya+{oj@)T?raRHA z@u)srynoM6@;0r6oO5`DhIiF;SL>S6x`ZEzeu`crr{D_4Qfn^L(s~b4&i5vgSXF^> zNz~xVd+9!y;K^CS-uI(Z#^YNQO-iR?LYBOXFYXQ5iIy3xMUR8)b+6vMF|aA%NWWR% zNB2nmUT8^nqoYgCk$>=ed1pZUxVh4^?;9f?Xy2iqptWFe zg)uTIc~2|i@ywpatO>Fvk94@fy%4fqZ$l4f)c_@EYKL68UoOCKYEVNyp{z*K{xOa+O|y7UVol+^_&YWR+Vs zRObTtlIvT4xJ0Uc9@->6SGDcjB*N(dMtLY8El0Xd$O-};ZdL#U&L2&VPQv`TmU5KMy<(D#nX zMn*H9)FMPCsvB%6qs2a{=2=?I~|=4aPGW z(qz*bbp^ig2=Svmo$<4>x05SyN)&%MxYRL;gI#CLV>cLEj7`Q4W1I1XvCH_z_{#Xf z_|9Nqx!4GhN;#t8WszVZ`KdLPig;5NC;X|}@Plh4#EI(UWP1X8r0}JrJ=oi}RiRqq zQ#n;fT=?rtvFOv7li`D<&F{s^4l%n^;0duowPCL@NnpY9g8D$h1;Vvb|DtQ95nk6y zgNv_~mbqLj_0r8Lopdr`3UeUBGAxFAR$EDr;Yt0*R=n_Q0eHq_3>)j6;^D# zG5(vb8pNE*y|1HlOQ}_5Q#?T3WFlFoG%QsmTG>yO&UC_$IsCt z)xIap(!#K?;#{#1qnXF4Ol^yOS{l&ew0l+sN-`HkS@q7xg~VBSHJLaQWoecq3+5&h zmn?D4sHoG#K&BpNP*~i1C`|iVUvEhcvo$!Hl;ac^tYPCmvPue{Ovi2oEvTqxw{+%RM*p4e^}-E^I4DG69G+TjnNo}0TWtZ5}hDlIRxc z%yZKiyuvDDDdNn=^v5#E8wWxJ;}~z;lKWFBPkW1)x~wZ*-%I7_d0Hg|lWaNgTh`j^ zFu6MBmdI8Xqc$x2Xz73c#_mTXV4Z&TRVOvEXn_r8)KoU|Z}DD1mYCYf^w=6BKh|) zoipEezyo;raS%g_Qj>YQ7tt3^Y^Nbf zXMt~|+f@Q|2jWh7jsD-B5_Bs1%cuwG5!`FwL$3=Yxy83QG(ASotI`q~iVMU2;;Zqu zdfeID^eU;}edWeyP7f)ab=EP^k+l{$scQwOp#s<{6e9T~`*Uw`KNyb%l;eyjcQNby z=igb#hr<8pBZ7YP>dcc!Q}k)TA*`{b*yKi6GF!6mbMKR$rEZrI1=xsclhR4bF1QfL zV3)v=z!Nqi=z8rf2rmAZgeQ9#Xlasy$b+;%+VC+}47rT$L;r$>vn$xQ$YI@A>*mO7 z6mH=OdImrD>L*Pz_K$gCUiDAVn`r{XWz=-l6|l$Tp4|OoM+l^L!AhBUR{LsgHC#bL z06)Y|?CxP#r_UAcp>Yc{;<*BIgrNXxm3W%Z{fW83-TH;FA|j!)H}TG-g%nCQ5Rm6W4OKHOx#}^)G-!1x$xEs)q?{ z{nMrJ_qLD9`j`wI(Iuk;C-0p`q)&EykM0T+KJO9h>i2mfBHGyNrhz0Fs&=u44!5n@ ze*dhhulH`awL+y!Zgq~pHG%u=0^IFBwZ5FzhrOR$ANTf_r}oYeuaK`&i2cTV`b);|p3=Uimhs+t zIH%fb+70ouq8V;6Z9UykAzan@dR8R$2rxdN7|@~j+?^R3=Qv$==T>;c^bnA45jA}s zk2o1WE%=~1?~#^2`{8sg1IZ9Zc1@>DyVaPO9Akr@pM88+)u5(7BjlJ3Yqd!5gFO9M zB?D(rsrzPv`k(et9y-sdGlB?`>~;)|ca+I9G=*Mc{U`h>?}rN!Z)GIg;m;am_LUAX zKQd>hN0{UMp=fk+QcZh;Nvhuke(PcD&6K~ihHFb|eZgB7kGPvp$kqlX`%vqszbahu zN4?CP=dzcgVQ?;*+h5z$ft3b@eLjkP#WICk^pEwPUACf|l$v z!L!xMxPN+4I(@kuuM1lE%8tDk5Vt>kJ5&QvW}V*H)p6!Hg7+bO?*m` z@A%Cu?gz5JW#Fpm?UFi%s4`h#qSMbcKH8ra>aMFgdvO&l%4 zTn7SnP{?s8iFnDfd7NLlGqbW*lp+qR|^Ne>Vmo&WZ z_P%=v5kpSlH{c}^q^9n93>VbXNQ4jLlS$5Xduz^;U>l zJNZbgmSXZE-g>h5;A#SY$5s{kV6}jW0#(XQf-03OveU>eN(uKOEl{(QHpNHzido&l z>drj}q(Rn)*OK9`Q96C970P|8AKdy>rS$t$e}*5MbwNb5oJmV2eZkbRK8^M9wN9^N zuFK4`uFG5_)iCHVg2>|Bsy{{r}kQ?Oj*=&8pGoZu>rn)QDFFq^Q;`jalx0aVEOAc>G}NSYF^v z=gh0w-dXiV+58{THwCKUUK9K9OBH3aPS{6%zO^vdNfPn?8wWJJ1b&hA8A0wi>-TXw zf3|;ie~VgU<%!W~(0f0@_3|i=kJQOr~$GupJ`gH5YKul?&Pn*4=? zBrOZc%Qik;Va1NVs(BXfbJ_h!;ow4G0M1}QufhAceFl{h*HZb<9clfU78}zng8(^2 z$sVyib2pN=#3#iw)K`jk5&NghDioW}NU6a!;YIC?%&lsvX|JlivKzP(wm1C_`S{## z!gbH1$E~!t>jKEWl*NmFvoapK=zMo26e>|B{w($f210901dqkjz*ncMawdf5G7M@- z@5m$QF2ZH9X1OivQ(-qjgMKre6eRBgqqAwm8P5q*^gVXk_-^U^xO^aj7SsKs=gVuk zoAA>kf@|%+s&?8tCW{W-?TjR2QT6oq!5LY_s%mphFrJDwIkntYV$kE!T%TB;dwzCE zbe_A&h|S~a_o;L5g(k&;%QV#?4=3+7+_0Qw$q7@-66_Pp5~O%)IbQ}l$Kg9@O_*n3 zZT8J;h4*u);MWR%420BX;cQ{N)Er-tN;=@v$AMhf+d@Yl`~vbHNXL2iB=_>y zOH&MX29914EU1};d3Fo+AI2@o1QL7Dr2e93ztT;a{;VD;1(LOi-T0TYYWg*_2asK6 ziE;84d@ny;&Nq?_lJCrldL@8)=7Ku) z!MZV#@7AipNtC%L;M0`Yc*%3K^f)I+z=E?lcj~S`DrvNp&3A80xo~1Mv5?P8BSwIYEuxpL2{k zPByir*va$$TgP^Zb_O&jMYsoL^V=)<0J?dW$&$Rpn$rf8)qcMV# zkFz6DSv{9H%>l;}b2x3Zi=A#gavkIQhe4aPdpdVy=K9VE(52O|k5Pjh=Yt>TY?3%{ zM&`yij`@lptG+lg>`*hIDIktLg05sRG{^_p%D1TM*{Je@Th|Xb z&iz%2g+?el862+aD|cTk!K6W-=_tz5Mi@h$mB_>eforP^ z{rHg{)2eWwu?coJg^D^Z)NdEAns@UIRqUE&)oG1F2T83DZpsNsI&Xcu108T5s{I>U z2Yc=D(Hzz9xPy{qHpI#Q^!`d(DE*auVE5g{ePr1FXen07g}znz-g*OPrIl7(ZyXxV zRXXAp27A=?b*^9gH{wPx$xc`2ah1xA|L(ct&c7)oQGqf+S7L$lNq((B4Akf6XWa$qs}COUQZV-jbKd_mh{fsF^Iy z)_AHro&Exe%hOEX$c$+dqZ$|53)Wq(8xh0#_qAD$QClBL9GMd>65Yd+m)=lOTDtMBG^vPqU8i)RWg386CoaosMR+(NqWoDE zg#{wc65ty#H(`kg5u2(8+qtmYF|!9HgdU2d3yDRii=Is^NIF)vzZ6nFP$)+{Joz&F zLaejh)VzlK_I+ckg)~h>Jn_AeqkW%;81b;^X?sm)n*1a|_~3QuB)rJQRrn*JMf{~s za9FV2L8#?(3&-Op+@fz_+@b>vBPZTU1~SNqjn7L0^b{Lp$~jr$fiP4q;w&B;f`zpI79C=;*_%s@;bgg zElAxnC#1RjgfhurRIJ$XT(x#bEdlvgMAzvY^i)P_`Pvkr^hc0wdhBP-itRUwfPZj`MJaYA)bPT8b`@RMzEM5bFwyZwVDdMC6WB@8`-kzfDPP zD|LN`9D@Cg`xn0_{)RF-d9t!AF%Y8P8`6}hWtY`FU1bE1k|aq!xH zC9VTkp6kk0<{siIaP9dAh_B(4q)Kp)+H49aV3JVY+(%Mhs$AL&_9%cRJpz@&><>UA z?46Cy=-lXyv9~abvlosQluNRwJd6|QhR zn8orM7P@d>ukD?EngcKSM(BpsQn-tlILPmqvAg-3M>oy{{$rT(`z|>HpMh%V0ed5@ z0Ci(N18P%PMe2#O7E~U(G+E&KO6V zRoyK4fMlXs>f?33Fg>h!Ht#)ZxJ~C}o;LR^J-5)eBvU9v^^SC-N@V07TZCAnyQP;b z-o}xw&314(ant@xaS435C2};cnrf}v z*?tDH7%3>U*fD)=7P{CuEk0vfSI3ZC42Fdny9uZ()OYS=nO!dtXr^n@Y-d@0y>uLV zL~)7qZM;Q>^N#Y;^#0tqr#nnF+xFwJY0oM;&f&M#qokmq6}tR1DAWWgD6ZRY%(yu?vWihA~R zF{-7((GJ_lNox#c1T@-nAXs?Q@3~IKMyHuTCj-5ohs|zW!@?I=v2kG=*kb}0SQ`5- zB!vpy!&uJcdP`E978@5^78@2@7w=Nq7uO)N*84>QH1vdwD`c%95GgK3w82PW_46eOl1k;AW9M|giF$A$Iq zo8#3O9^Rvlmk|2k0oa(gf%rUrHN4bDGxmV1w78wP8CV|l z6^GB>8}%``&f6o@P1q3kp1Z-bzIB}kM|Kll=yVgL4Y~=X2~H_tlGk~n;`ezAF-|Ej z>bnW&D>T8{0{+R<;{GKd(O%JqJc^)WMT_K+tMS!uZlptkQppn1#tN`>-ct7ukiI}R z?^1+u(@=tB-?%O+@-=S>`~^f7ianUmJ1+o$R4!ET>hh|1Z^SQNrh79)PYG1>TH*al~@?#A0LU`2; zwbRaLMtFXV&sQxV?mTVI2Ogr~yjNx78I>Q>hz8kHB;Id(A`fRuyzhGp?Cn~^;K<018(D_-)xLw?E|U(JwuD6{}EzN!m`EPY607?kq(h?SR5Oe=Zg zhI02cEXECOD&&?-%$s?M_Dl89lE0u6d)1)LygnypF%Teeteq!05Ge4LR~P(_hioWb zgt?)yM^y%RpLw5nuq6Ym>5}=9+0roYOo%e;%Yk6Em<*eRkU;`fTXHTe7RC=iITl zgLISbZ>49(c(30~@dm!AgJ)NRdrF|?3PuGpHw>aD0?K#K=y+9oh}=w9%ES-@jTFAP zci*N>p0}V)&Pz@@0TWlm=MA5WtuDRxT3s48piRnqd|R@WpiSn>ONz}+?1$xce8B?- zHHdtpj*j2ZO}bNxA8oK?iF1r{;z$T+mGO)5lOet=wk)|Uu`InTwJf_Vv%CfR&G4|t zyv zF&ARLtmVdd+WEkBx%q+n@{O|82bm>1j)cieY3PGHj!WS5M7!nViAY~jJsJBPVGcM_ zv|4*c&)YEr?DP3fvxHisc*L@SeS)#&@~P!Zlaju60_Mx-<`g;_hG)1p={04!-opHB zM{hZGnTj4mKc^#SZ4G$jBJ0HE6U&mm%}~5(%<>-L8c#XV6+s&0Wa^B>pT`YSUdml< ze|1(9ic;#JVfwiu$mM?^Pf+@O-@qf@Wywh2gqX%Sk$6`Iw( zgkjqLn$mfdBbr*$Am7r@b60xCSoS^9?5DtW_<@-f`l0CrR8{bLx&NFOrclb-wuPM2 zUqV<~X3+RL1-e3;75e(X3ks=Psys)^PT=i3FbrPltzlRVB~hn$@-|*Sl2f z+KB{hgFJ(as##(v&RgGPfq~K(8EpG-1`(H>h0~%)8f2cPy%!foX5-J%wCRtg1?WXH z0WxOXuP@KDXM7>e)(L z^`&YDGo|8=>MXG|P@wee+w=xovDS#e@`#I18|b0}y+tbzR#1GOY>DClyEKsHbA21n z`{&@O&Zkn+AV-kd9EM#!KT*ec+tpf=ZZLirrIYZ7dD!R3bPDbVMtSTC{^)6b-wR{B z_?<~0Y4mMy0x(~2>Wk@|f)3L-?mKmbJ-ANN7IVLrKlKwZxiZ_{NAkr1D^&D*5|YjC z%c5a82JGW=f9TI?`)9Bm9BB>Lk7`+&B5_FNJwKR=GxEmA=;1VEx!<9U11u5=m?r5h z&XT-vz)}(R$?R+#E_Ex2PkA`?baL+KmY`~DlPoc!MX$21ovt?JWtsB~fBtuHpgOY(NG z;NwqrW1^=$+|F5Ij?8+mMCmv{Qp?w;2kQ@d_k&y2_RxwXlWagF-MC8PXNh3So!Y|s z-_-=O4_Wc6?%MII$IRka^^)UPa|~|R6s3(rbmQI|xuDTv&xblQOw}8`&Y5AudU01& zj+z~28487JLHc_oLV#B4@W|5644j2j-y;p$mJB6! z1!z3EP4q_HC03%cDB(oGqDW#0+io?6xV>_kvTzZm5#!w9_<*RQGbr|m=y1G#B8|8J z2mzVSWW=>;M~VyOQpOh`jkN(>quizB6F;#30X~#UVgXUVP(HO2{!g}^__W&GVUTb- zynsjwnIMcJhao1QK7?59-l}2W{4j%T)`T_oM`@`pvPh5gP)lU2lgS1ylVB{#wGcr| z%w??9iXMbsX*%Idvc%Ze9$I@|b}%(tUu7*qR&9;%Dh_5FX{>p##9Yu^(_TBarctW2 z_P9rH&2Y_N?Z}$e8ebp2X0m3s23ylv(_b@Rvs^p5X0&Fyrn`20?bMp_TD`dOnyz3; z($VxvC0OUdMf)|oHOIB}LRR(~e}BNGqyI)=AIKGo$+u$!D)t$E@ZFvR;vON7w`J;& z9Ig_bVLfj!b}nB1D^e)*8|q^4^|s$mp%NkCq1A`3Sr}i!k>5VpMU-&BZ{#H)^UVl(-{RIc*`_Brv*q|3&Rc zm*OHR=sqf_T5%V*)9yBuTiea(Q5@`^UpDCX##v5-df^qA-uuMSwPsdxE4(k+8_{Py z-8IX6Yg~B4a|fK(=RzM*?4$KFQaHk#VBD?Q!KK@?&eQeNkBg(GuQ_!8XQa@C1Si;(3MC1|e&7fR~1oI)p0V2)ZLz82EUi>4Zz^tks#X%p-t}idW z%$A7}f2_FfFK#E@;c3q7@Fdr&t)FkxEIA~VYUrhVAlgfJI`UVNujQ|#w=nv|N#Web zn$D{el6{JiY{b#ilhxal-f~!v!I)$Eg~!@sHC&CczxYyJx$=dXeAD0PS&j(7htBGf<%uv#d03MiJcg@rPX27H=gGrVwa^N96Oku%sx>UDf4 z+hput!rg&kb}!qta)51Av%cEl=NS&q)_-o@y04G99=`gC%~^j|>dS)*Ot4+0bvvWj zg}C6joWmBLDUAv2X@=(jW6p{E7jutMMRq3E(>~I)r)OttX?oL&bc5;0ps8TVz(W{& zaXEDz*&l=E-ipt__;nI4B^(oL+zBb(dp%wys4w1fp zu*LZ!;o@rLOkAhykgWb_QChTGo|9h$&8KUlRp3^dTeZMj{V{yBemY*-fK(q`9%=fm z*azxcCZC$D46`ZTBu|Z4lZ(79m{CVw&~2% zie2N1KQjsmP&*kN{)f?Yj9YGoq)>`Snlmfkx4?^QmJge=?0s?5?M#XCPojUCej9Wt zjOq#jY{~4?qs7;z`jtL7uRzm z#F_SYwLGdSJ!W{#y4Pi>_#|0zP;BcH`LbySOM$JazX36 zts(0h_?zp5Xn(ot`n&7-rVObxR^<8nx;g>brcD-}{SC=cDnR!NGjOmlsOn7Kgc_E=xK}-O=5fJ*x2s zx+|+?KQFmzuX~>*a%0nfa}iw}UJ_s<{={QrDpAB3Q#B$B$5OI%c?kvy&yDsq=@3_3 zMjEv2>3H8wz58<_!<2@}a$QZTK?BIV?sZ$2x4@x~FFt)c?ae1h?%i{8wSiBIl-~34 z$okm5JHG_lFUekp96q*x>&eYeC-yq*+j`P16?@-&y8NkYv+tJG$43JC?dpdgeA*I(?un@4Sl!Xhf?-yX@*`+b|g;ZE+_53}ZH3fCvvr;ehd_RBdqdaZiIi4=hP+FfS^1+Zt z2VdsR)Z6jwZ>!sI?>q7CkWx7If?N4AoYF-ZEP|cBmASPkyBhu`%RJ_qgJaEa_VcYe z*N7^Qx~;YNAe1e+{jkFfv7Jq67a0f0w zo@yfCMOwGI7%dL%TYp#XOm=N$BYL);S7~7jDd??Ac3YuPVu#?TgWx7!EnMK>;;h)% z7UiAhB9^7t-DQg13QF%XZCJFa)hUe&pW3=EOx`-~N0V$Yy1kaW^=j+XbkWv6!-6f= z))Osqdm(C#0AA&7mCk&B!zSLREw6ZohcMSx>YWzK1e`3H^-e*|uUiF~(Z-;fpIb0^ zmud8k|F-;e1>MP8_R{1n6M5=ZvvtcNaqGY~Ve44>kLnX-$o9Lf$hi(hX>1B=XzL8p zY0vaQ2&b+u2j|*DpL3sC7&oU6RWNA*LA&G;TJXgBxNGwD&Yf`@cYAzd{`>gu_`mR< z{NulIkBBnezvHm&K(iyzkGS*rR|{@N*y5s0i{|{O1_k-rc2iMIv)g5uI41DCCxvpDaGIRYi(_!Wn_vzS7Rx%$$OedQI5L9aa~Ni}I(+}jRw z5mTFRsKN;YwBGE9+}3>(zDE5l;9k$j;=C(=q&e~?KP|_a2vfeb^1>&)$+nI_bj8dai-WUsLujYj z^Zl35501>b|O1sJJ22R9jP739hn``9l0He9r+#Uoe5!W zaHx=nV5pFOlFClIl$NeXnRViwM6I2_AVK6E8P`UO^b4YUkZpUdA^Lpo$QjR{lmAVk zmCRt~r!z7R=f=9Y0`HAHN@MjUN(M_`Djg!oqt8L-anDy_xLL1`eagAnkx$#t=};VE+#!dO zyH{T!D){;Jt>B;B%$?&JzN;kiA)i52r(g+R$XeDYM(dN^?cz^%o1cpiuAOJF)mwj= zI++f0TU!U-kLKN{VTz8kwQxF%+1m+h*KW-|*PhXCIVG{4!{qSk(e7u4;nQQ(vxK|2 zQif;kHtr@Az4KgXaAy?KzT>u1L`yH~Wc2jj?CepFAH7X=>M5qkP@oih@(zhd4rk;7 zB{L}`CCVhtsn&CVOeShQA@5s7D_tk$8T0@!;yYk|r<<=bCyJ^N5gw-^V8jG16{45e z#!jKg*3PbeW_n}&T(uKHvd?e&`_41ATK=z{7wpFs9}H93+4L}N%cu`6|LyFl>eP-` z`48C(u98#g+DkZfxDimj7@95)zNm>|zosaUJPX-P5}5`sk1Z6_UewNWP<^`CI@Kp1 z3zE44pLTkCJ7-}!bLFQMvS#C%?_7Lz2ge0e=gPk}W8LmeOW%j>9)2M1y&ShzG!C6B z-@l$z`K?+)%*)Qv3D##0vD|$OS^`OkC|YeweX9JUdudlf{a=(5|Y_q3a@jqBIYpwhgFrRG57~Jjt%U?vU+&&LMk} z#xc7VEOr=wC^C?6c;PVdFy%1$Fzs*^d|N^dEOMw)nvC&m$UW5J;mWvt7|<{gIPJYgQJv!v4P z!`XtnRyv0chptK&%`6Y?JRXE1WMr%s3hpuw9@ePIo7_*6vD$uDk@x5@Uvv&C1^snc zk+UfA@KE#I#0Cc`K<|I+qE06B`k}hZXlb00>8D_*HCt0!m6JxL)+VrsxLcjKMn7;+)9bP*8+h!3c zG60*u49+|}LlDI(yG3ZXx?vzc)y?j6{EOYMyRTm~gI1x-YpQE%YvOCvuw^xQHCot$ znjbal*u)xLtTr~bMiYA%Ylt<#8e@Of+{0>MO|eE;3#EikfVIXx#NNhQVjp33 zu=lZ#u}`q}SR1SZ))D&*YlqdxI%8j8pJUCjudsKpPqD68C#*X*fksPDmHjTwgZP%3 zi95-Xl0IBVU7CSdY8f;y)XB_mTk=^D}cOGu~*)qrY7je6P^gE*T|mr~2IM4=KU zmDf(PvjsZWqIN#Os-q0_qp{hjSnS2vcr0W)yX$zO7*%c{l2L|=!^UTRN4@Q@^S5VJg55B)CQtW6Q85*t7I>Lumg7TvP5k6G<2I@oQ>L*=4^>iy^5R4>3>l5>;s2ULgI z+2M0vl%R*Shat()b9_h30@eitgyOG`@jb`(X-zsb_V{XvY)6KOat3M*t35m*wub$^ zL%Uso+TCK92^ieNHWnUWVRg5gkFeG)DWlb>d~6fy6gz?a!TAlVcjUbSI=adsa1P&q zd_{W%3yoGgj$k~3&%|J?erE2m9-;FvSV$7XSngh9;XPE=w@j?n#Lb!By10qlKg2|a zP5E&Xw#g^VC|(h3I(v#Ho19{!@R{73que&~uGi5)zrdXF9}emM&mP}9CL1%#wn@8& z3t^kAldY5&dL8nG9(r@%hC#!nt-c(6Z!u@!nErY+u;D%0nsO`qgP~ydMg5tfP#bv$ zG4#)*OXxhf^bporzaa28dzJUm`J&=X%i)f$k*;7dd9-FHdzSU2{`Z^cXZlq~G7-$E zHk0>n-)@DkSLjC^?R9;du`7<6I6>I+GFmdNv8_Fv?>b^x>p6n0^&Ryd*~||e^&eTI zhmXdN1}IxEy8(*I{S4L6-ygh)qp2eYisJmt(E#rR#H05n?d(wy%hJ)@(Rs=~t>XUN zSv!4{e-gIh)v9UyJ_my=GgOC1X3(P}LvGxW2<`C^04yKbUhsK%8Jt2rLlw}yOig`k z$ZZII*mLD`K=(5c`N*9A14U22>n_tVufS-Jfp$S)2s_*H16GdX#O~c0TsP-2-*G`8 z-7x{eb)3j3bnI*w*L{bgtse;qVZV5+*!}+IXLi`JHoy4sXZAUWipEMP3qh)s7b^8s^45BDCtq+uawbO1pKBiMlUqMQh7? z{`LTX`dw-Mt?ood5lFe}{bP-8n`5Kn2gh<)+hhM&J=N`=WbmWdXU8RAr(>oihvTgt zL+)L0&0o3C^gXGu?#EBKjgBp;%T+mh&Qp6G-^7abSR8*iet-P(xQ^E6I5l>L|K8^d zJpsqqZoXsR<50>cmd95v`nwXLNFzJQ;;{ETh?YyqJIJQ0Av(O+9WJ5MF5o8ruX z&GI-i9B=@}`B{KkZdTyzjt2-DVz&&YH39{9+VXJ#LzE}j^p{{@J(_@k4G2Hr((|KM zi&}`H^eqfLAOU<;y`*v(xZf*D z(G`~hz8~w-NCP8xZ_=`Yet~5u>f^EiPr@BnSs?mulHFCHAnuaNHNfPq9KhgO{NlFw zbwI;)19Afxjt{2AT|lZT0`yQNU<;V#zX{w_${jW2W?z!RHr}FM$(a+zn)79j8p-C- zd@lMvn%G#durn2pfZ@Vs=prjeW zT@(e#4{?VTj1WzV0Dcr5drbc*5n)f@4MiwdDM)`ZFi}f#<*6TDTRym$W1>`mo{A+y@|6bJu0WD+4LDsNV#rQH{gEpHQ}y98*l?3u@m|C73NM- zt%`=0%J-&n<{E$9dWtjTcEp9x(yp=2zg=pbt>P6KxXR~_3qG(MdfwlL{@dS+n`^w8 zbFJ<@Zh3QJnrYV$2dVePE#YFDgK-}kgmKupW2`E;^IT_A07D%(5_kP~6z;k1qE7#4 z7OM=-RcT#qcah)s;mSSV6zc|-6l;A}7HK1WhU}@)G1elBA0Ml6nz#^|Lfi_)FH`D@ zxSl*Yocg{LF7aSy0`AF;A7e%Bm*b4b{;bjGs=PKSwMd3`Q3Zed+S;Zf6I=inqZ)g9 z>%rjN$#ygo?gHNc#VbQNY6>eF+zVXb!8lHkZwjZ>(1(NJevI1I%{5hx<}XVOtl=sr zMZIk5%M*0){5Ukiy5;-oV#HtEpT-A4YRUxMTy}V|hOwymY*z2+%Yx5*O=Ur%1ZC4- zB%EqN0`5Ef{JA7t!j&?drD1|~C8v79x=vp1pr0F_2~UInDr1kwh$0N=v%T;a&0&&; zIA8pr3$rABZaAm)u*bSdX>Q#Uc5KimylEG&@6kki+ofGK1O`@!X!ZOy5~g%d&qka2YI*cgEeoKgU(^zQhF`OyIyv)GM!XN29$PfBWC!6c!PfX-iYAxTUNgP03YJ6aUJ1stB>&8_lP(pVOGh^2p!zD zM>@EPcSHCu@FD!Yr~pa=t=vqC))bc1QZEe&PcOUsW zO0sM7Jb$dF_rUD-g8IPU!i)Hk*&v41UYG6dz0tQ{#sZsybcG76^NEQmc=$e|JPMqF z&jhNzDIi=$jDBH>w9v%W za?#^0StO+t2tizKbS`)$!r~}Dt14j;-^X-=U^M7O*=x|{`qf*S_I~$<2VF3QBKQaM z%x^aF4{&*VH&Kspe?L1Yk`BiSVGlV%#gf5x?DDRl@-tZy|vtG&P zgmSewLBU#CgggTGAv42fEj69A758C>NL4t(<{N<>tCIWz%34sKLC8{ESe#lI3Esz< z+!&^Re`~@2;KR3N)~?(P4|!SebbQwFuZAk?x8cHeZ)r`RKFSchW|kyStjWcEuDr!$ zjPM4^g$)(X&;H58_Ox9-J!C%N+0We(+dD`s-R1_yb~cNZ3%EYcy5G!eR75whvPrc) zckpW3d6uGuH=90{kII>}!lmuq$4R!FOl*uvwy=!3*?6{~4h+YAk(^^x#N5TpLhj?H zY!Kob1_)6v>czM_Wlj3cL^SqbB8t9ZB0hyehy|rgL`eykaT$8|aUYobc=VXdxZ!yutMOfw|&+K-HTy+eS6ykejMLr>msQoD}p7VlK1?0I~GSUCLR+^iRNw}CQb;x z$dHK&X)w`bf^AHKNL5;J*+o`{Xitl^Nd_-=dl!WUz7iE7A;yL1bqQ^KZr4FaSU7d-@NPI>NAU+=d3zH(s z0G{KAuc(zxw{8;c5eY;oL=y2TLY-)>qDd^F+!fO%8rJU+)|;f3b|)U=^oa)fFJ`d> zhA}f@De;J4PL%JmB*Fym6CV;mM79zeqVc#BF&ZvO6ehY5FQUxHFHvgMp{~TIo3ahRQJ28UzcASl3R}jUmSq(NLK)a~s|I3C4MTw5yJ zn;9!0y3867br+CxCd6;Vaw6@Clxxtnn90hc2gEbN52C^NBjPE+lw$R5*1WchL{TE! z$pGayg@|rM?vwF1uZc?QZ-_!CTqoyGcux3Fcu)F?q9-ZepHl2|q%bzvx_lBz{7rmG z*`M>|!io6F#S`HZL892nq3a3}er-qV`iUZ3?IbSgd&}_{X&~kM0WpzyT&*$51*9=% z5H|^}ye@UEb*y$>m{xqC-9_yjZN>wb1^TO zGX9#~#PGI^_bU+%xqmOt8Ey7!5i^Nfglyt!U&u*~K=f^n=K8ZR z_^ioeOOw*Rq3zMT1UkIZ+#`Cu@oR#2$4eB=y;K*YZkHZ-IbEu|TBSF|W6t$zH8F?9 zq0XMLNN7K@2wWj#o`lbOoYZ%70T+Ox6T_1~w8kf4h`^>P>2zf*{s7PUS9xk=b`6Q4 z#Qhz-5kbb2-}{N?6L$Ct{n-0ios+MV*u@~6NPjkQxmI?01LJ<8-V%REy`pszIxE+@ zfuTBuoC*$5pRUc;&N5LlJj_pSP&`m_f<76YE8im%15Wk{4{<)#h7|3ub$rQG;Ed@+ z`49OSGI7w0Vaix9x=3~&H@Q8NTYkOIwxy4$CCrqie`8W+((533JAC&&7n~^H_jNGy zL;F@=8>{e)bjjs$Wc%evmD4>9+XcNJESJv}Gzm%%d1lsRd@dB;U*of$g3d~oy4SV0 zQSx~#HdN40iMg$bdc3)0T>X_=nm?A;D64Cs>~fbe;b&6d#NnaQ*znASFw#W9fXFG~ zBoh%`bb9h*>R`r@Ta<+hkeq5fctF!L2g4oibT*8BGD4^{49?$2mZaU7vuwGyy|a~t zHmrtpT@4wq7P`fEAI=d+ehQHfRl)5zqUl|>yf*5N@KDG8EeQADp zIZoXVXgxLJahba0M4f0tx9&JvNYPlh+bCUo=r+*H$@>Udn)T+|F6xiaD8@U;m>Se#YEpCd@SRnfdV?c8=k z#7y;UTNPo$TJcFucqC}05Ft>M(s+hpY#H62n@EmOoqFJ1KM{30UY=fFIAFJ3m(Vr- zW9rTnAA9nt{?r3D!>Pzz6_KpdsGJbdyi>cDgn0wkHi z^CXrbF%tQ~4{-gd!_=vOSwGc8>**PX4Cw&sG8Gcqc?w{APDz$K390WZCVUv9%LISK zbJFD$Qsqd!qqO9T=pDIk*EbI1r}2-%^Q-L*6wfAx2P%GyPw*EFV#X&yJ7r5HO9Dl6 zh#!+_qZ_AeGnoj(A)_J8>DyDjL+?}K$?8(!q=-U&Y(e2sH0c7V`SchMt;c5LH6OXn+i>oB*9oENzOl>O+DX^AFETsZuiI#w$tHlWuxt`QyQ9X zQ&F0NKgQdo$(8oZn2}R+_hynKozGOGXFCbZ_7k~yF<@@yRP2Wli65^OMcXxhikm{8 zMvfZ|dM9_!vZPOtVw;z?7zw#p#rfDNWxBtoR7k_ZTvy{nY3^Pjw|pL9&{ZMW$rWk*p)-k&7J~xbCm82o{lVkW0ypV>0xeBrQ|F zsR+(KlCLT1RFj<8tlFeawj?c|-XTX!$>mRy9uSJ=y5Iewoh6xC_P_j#+&^_jd_TbL zvP{J^*~FA1(hi&#LMJ^D&AD1lUWjy=&`B`{`(YDB*dk8C^_xFprR7K3i(e)i-|bKH zJ|{p>HI&{l(>+m(f=tv}aZS`7Fi+H`(Cj6ON~$j(kO$|E$;3odiCrTb)N=on9EV6m zJYfmObu5dmg(hW4rXlJdc!d7uAP=|&AexgMl-KA69xwWZ(hj%c*OIz$_d_>~+i{JBcL(l}tCp^GRWAACWXF^1F^LTI8Ott|dF&z3ZgS_rJn0!J72!DBH^Md5 zKT^tj);U7HsLZy5nk`PBBrBb5?md(6LD0%*e}5(sQ1OV9A(O9vM*8y@g0(s`ldtgk zI(dF;gIvXHJ8MURtkSGnoI!`ZWZ%33!9=kx(Tj~x$`iA~KX3OQB^EAUlmrHq8AN!T zppxxMx5)$bC|>Ma=HSOMjPXg1%i+o*eZ3;-BkKu&6I8~bjf!51ZXBQWv3hK|imod$v*kUfr{lIOfLA}2v1RS|=dBL>-;dpiztU|g1R%UqfszmB1 z?=It7t^1i#fX5jwX)|1nFm8`zWU@AIvzzPGp^_ zo@Ji}2B=d|a5hIy?a(>1n$e6UP@*^>qwGWoVFFr;~G@H|oZVrk0UqE`u31Rro1^YdPieMy=3x6b$ z`yK%PDfAxrIU8&CzqPoGR&(aYz;f3}n?EI>R zTpvwsc5NZ0mZntvxB%5fIx?C-@92$e-mQ=RfBlj<^ndD?;MV`-qG!a80bl1w zns#U(uolvevU~pH<4E_9$&ElEOpoFvA$!!TA5;bVwJ(D*wkL>nT+Jj|Ik4 z8s#a6l>bvR^v^T7NB=xk81ybuPYxO+}JV8L{17WWVf&V^U8mg zqR0>?aSIRWf91a(CvNet$BA1=B8PURkt~vr-rK=%B=Vh$N_`^YDV?pTU#_-(%)@<2ZM3fL+B&662TyWc#gnZO3ar1I{q}|7l#r|cNcM1YRI68iXZ>G z2(Z2MqROZ4Z-2=ehN69iBI_4OT7IgKq=6)P5p2V}2p`2HBKpNXzWU8yhH<316tQsa zS0v|cv<~GhWWuFuk%Wis(S*6Rssk)T)q#>gB0)(un(e+wk#Vc&m_j@&oAG}|9wSsz z{6i_hGo_qhE#pjgO=%DM($$6@U96#4XdLlANkC0NQ((y?R9e^MQZVb(y926` z%cs~3Bgy<{_Z0PK7tcJf`<#t>uFO^3!Ui+zY=fC@y<+q)lG$NORerCCO`D4zSqVaA zwPtp8t{`_=@6GKdiiH;@igBiI8o$CM?QYDi?)D-L^EY-aVBA5|Z@wJ(U@*IxSN`sz zHzfvMbpCg2H`8d^^(5vt@zP_C`5yF#!F z&du~6G&1t^DUtS}k06w@-2o-}!w6%S+q*kd(7W4kt#`MHt#{YgYIN7_$0H0=_2_P; z(-ot3_h$BqT{ZgOD^o+l^hZ{2rlMtSQSMCdQA@@j`(I5Jg!`d}KS=p=rsqndhwnt; zu6aZ)GliiX==VKr-nr@@cBGVkar&P#aH23E-2BI&ea?=vdrqGci88$U*Bnq?Yetx^ zwcg$SwSir6i{Af*CbrStcE(2-n<`h-GVBG4O#cKUmoc^blH>5l5l4oXgVx7>`s)TA zA1L4c*YX+6FEPK?f^?hLKB3sGyxfBX$2yqTVuXELpxAxxKL3|9``GJ3AlHF@G? zhYsG(kp>o<0x-zUL9e@4!fT)#Ah=C|Cg#H6 zRC<0!ru0X#q$LhBwE%r{5wGB?LZ<&Xx<@E>4b`}H`s)WSX9a`H!6f=Wl&0v%3IjVB z5uFDuysYn^PBZyfcJR;6U%O^V_~bo@8Y(XSYDn0qn?pU2DE_*Vum1ezP2NGm{Nd(< z{)gEJ90J!$KPQ4_EHCbo66iPE|F0-dXhh^f?+qz6yv6+{|Lsp4)d{8h`>#bItJA9afI?HijaZJ;k>XYZH3TKFj z+U{PrsSZkXjd)Ux@v~B{gj*@sG$#o=&zN1Y$^9ZP{^J`w6mR6caTwnvhR<(f>$-&h zV(F5DdJurmuj?~1X?&Y5C1WzI&!+YElgP&_A?KY~GGvq7N@&~W+Zv)Min}emMRO19 zy662uZ_n8m?lv8F2AmGfuaBOW6J9*$ttXTXb7F~-k$k5LPL6yk@(wyZKgt#^?4_1$ z+-#1VU$v5%M!7ep_760sN-}pLPf=Y+JTp}OIomJBI!fHgP@8pLosZ{W92%f0Zha|G zsv;*MHZ9XHLMN+5V;(PHFY>VcNILRM*=?8@uUsNh<;ZYBv*CDd9le-(X-=|{VI=GFDAH&|^ABEn1T|xGB>kJS zYPs2*w5CXxhrP=jE!b!iCw}yp1{A z7wtz|7wx5gSQudB=I7D#x-MNv4q_Lwe;{QS<(@)`Z^x1#^?&$;Y&9RIT={PrKe|O@ zK3(w7>Vohi=^}E~a(O9fO?*cq}RpeA_Da^YbD!zmwBpJBUvzhtKOJY}YR=o?dEtpCu3 z{7>k?Qg#8*f8F-;Cj~*WZT@V53~e~#=tSfTtYYcXW_nfKsaiw9SE%&ipnNp1NA3&kuc-%;2`a{wq)O3jOWb%4PNZvs8{? z;@@0@Ox-JF5SUfsx1f~%`3v}*0^@9exyB}Z#O^L&)IbH8$~a7XX7U*8Ji$uMr}FQc z)Gr<^EtEK&k>w&S%MF^XkV~KLxScoa1`xE`dhD+Z@?X1~&`gc&8~-YVT(60E^Ges( zko!=S-=x+cHtmc{CHei8VNm{A1NlaF-d3O(1awQ4?0x2oSUw%I{X=zIBMtycMU4zd-E> zwQ9$wVUVgo%|;ZD3hdtA*Bdvr$n04Qbo;0#opox# zz}iM_sI-x9!@lJlpgNmk@modR`fL7h;1lu3j(48@HFzV8e>>A!)f$Rrgnava(2#ott_to zuFj^Sh##X^qMOUX6xtC75|MXc6>D4v%}~w0c~l`B#;VEls-aDzj*V%ktX7SF}3cxu;o{aY%ek8H0!6WtN+n_*%*{=E<8lH z^E}UfsP4U7)}-D}F{S-5qsUygBHb-})6!Ca0sC~(zmfC^A+8v=xaB;QtAvl$t| zfVQA(0%BkI`#`*Px;;v>`%zwlc>)2eUB5-qf+v9gIRK!!LH-1s*+PJN$~!DvtXD$K zL`C@T!&P_oW0OVgHDy?|f>v^bsN6KgDy@pd*@A&twLSnE16r(S75ou-LDErtzNWXX#XE0dOy)sbF_LTf^s)%1>mCD~$|LxwA_hww7vIU0KFniqIR11-#wxe2tl&)g%w&_2m)yCkNa*6`=+R(1ZI zWG~Gfdca1@RJEJF*N&s2^m8a1)h#t0s@qE3DzX)ta>I2zsL>M18&~%V!U4QnO*Mz?Ez~&7$N|ZF}TZxWMO9#eUtd9 z2U4?SF*NnPS`{y8!C+Y*pqp=0c!6Q9eABF~?MdnP+jku*!#R4}F9`gUXLi*SDe)W3 zlWHMJSq8pmz1xBo==!D$>}JP>u&r=fl$Jb!=+6CW{vqw#vEYIi1-#URAWBRUhTpWJ zv*&|~;~ILRe77Z!$)8$ei4fQ2n+t*1#oB#u%=7V*g+gYn(rx2Wbt)8Vc*R>4Y8KQ7 z)_d?f7m|hVv`7ZCm(9>U@vP2mm-zW?01*)!RVDBK?WL?FqU~Fve!*&)Or=DL0aLJv z^k+&2=vYg&5v%SqXt(`b>2goUg_|nm9%Y86IN_`#*g9g{Am*+`OmSVGaM)$_T$Dpx zjl8qvbv>)R#;2oi2p1B(LF&3DDL|XB()9VhpO3OU-qK7`?$6V~=;UMG%LUk%~p`5@c}lc)c3FODO%!}Efi*jE#$;{F!>=*_3I zRFbj52S{Vn3vy}^SB?Oe23VJ_r%m4dqsHq(9Qhhdel>5;?_X|vYpY3c>`yS%L@agkJHaV>L)=PF#_tcBYt@N?~ zG}0g&qhDP^^Nz~R_|NmGgoxF&(p+~6ps}{~<3ND$%5H`GihwVznv+bMZZlNPmWgoN ztL#Ez>3xh#X5~-Mm!D*(d&F-9UX)_#BV(+eS)l0KGyt^`HRZeoO z`v$wR>9)`$t1VEKkP>CPN390xuGx+|!_Zu>P z;|S8qFuxb0BBUCd#O*8kD5OHpckxWco1b`V(>46&+`bC-w?oTu_mImy_`HcY6k8ASWgL^AUfRXnv@+b^QR@PD6?CDKm(#*cFrRl2_`{tUQ zSCj88z)wxAQ;^L0nU`T{xWI4nfJ!Ie(Uo9#`Kpgo$EKX`*qEMN|5@m+N5x)YBJKA2 zg7mu!veSB$q@?`C?j-?iuNFnCv|setQKWyhIKOJ#AN4m|e4_yl(#V&}kP|MVeR)Gc zD?BeqxcB_6OM$9hJffEZHS48rL)pZff;AoVH64sJI)gPWpj=>p+WF7pZ(py81YD+i zz3X_1FUg%AaWhEA{|xvzdRw9^-$=!?PcFPZCKw5g&pg`>RH zqonPk#*)8G)<bA$pwWkyq8D_daZb^Tq0uMB(aXKjXB*M0&=_j*n04J4 zh;z&)S2W}OXr`2C*i1AFcg(r_G3+TZoDDI|4PW7XUs*T5veCtIh{tm2#q!L2T~LUW zxF31hJ5nkovK=2ga4Bv`H*VM|jx99qd~sY+d)z>KtlDO*dP=0qW~8EG{I#%n`I7h> zeepWt@kV;_1`TnhGjZmGIOCM~`wj6AX5t?b;!Ow%X5xt!dWlxtiB2U6&V32bHxpjc zCAx4Yy%0}w)k|_yO!B&)?NP0p@3~){gYDoIDnG`~o{4^yJXalML^a6vl z$y9fswxHD40+H@4Qtc36ge8WSEo&3@hLb%=J9T&w=FiHmxCm1nHMmA~3suef?kkHs zJJ)C(H#1xtDCU}E1w=pq>z<|(7+?SZ`WOxc7PDv;P+N-Dt%)=ykajzF`tUd$4glx; z(?h;Wbm;-TDL@OIE&yb5%4GJ7XRefFoV`o87u8mI!$oWRv1103~{1UWiU)`t7plO29*-08IR?%2)jMR8VaNj8w2#_E#|#ANpol<7@! z_=$crEIGo&M{MC47iJ|pQZmly-1qgeq+GH9c-Ax_)6W=4`I?S(&hrY$Qy|Li-j`BH zl`#Abh|}L;vdf?8%VV;8-5U%7fPx7+_i66*nfn zN`;SkiX88N7Vm#-@6)t&DgMw{bR|B0CZ*7?J)0{$H;h=Ay5+_+S`ye;!lYjOF`Uzp zr&M35^htkdha{&=gl*-i2%NEzu@6mIT-NbnI!gRC>!&1`>pOo;2 zlsNSl^oN%x`DCQff9s>m45QDS=_^kRxMvtt8b*|x(JM+y&06-!>;-2UrKa)p=d8?@ zua#yc(Q6x07b?W25A+up#{H-vmLqvG=jn^OQi^*BayzBzfNj3v@3JBK%=W%-PE|iT zQi|y#ijzvSy}~Ql(<-?NK8GK8r_;ApXNcA?EoPv_wb9(=KupA{Wiyrj-Uf zuQR$+YY}*_fzZ$`(l|`lxUpD?5U(vqHr|b|@3>Rmz14U=pdquWwzn@Qq&?eFsU+8> za7eGI<7Tq~TLJU|TtyW0r>`#NZWi2DTRFZs$|dJBPtKpsVu4wf_RV76wt}wI3@hNdiN(K(>p#yZn0R7d4~$v#0&=RF+6P(b~@q${P>jG@wWl*Q4yJnT;6VVTg9 z3%uSI-e3#wwS|uhNrG%)*>Y6bTHx$>aQ1{7)gEnjFeKXnnq33Uj;G6Bq0642&(3Ge zo?yz>I!EnRKn+lPj)6S`X+5t(JvBN~zP6>P3sSo=dcJ1ze9i3n8delv2!?};L}`o6 zphdy-Me&S9`OGxN0KyuOl<6{->3UOH`(CC?!3I#W0alFQwEo{{(NqqnUC? zy)R>WBV&5YVtN~6dWT|qP589MZe}{C0zyV`I^g$mO4qXYv*nqt}tW6$6DrlJvmCZav2C9mYS- z>GdztmyF;H=(NtTB8I(8hLPUR25$ypI-&u{z_9xd@^eP6`&P0$=DhDE45s+c@Rffe8AjLQk_sDsK(LLrkZeKni?*2Kf>|~hDy#(%yp2D2( z)dbzu1Z~xL{N1JifcYsCklRBYN62mye#JDZ4WOwNTh7tEg9WJZECbMd7RJ{s2pV@7 z<0RZGy%+A^koL}(Vd?i}60;2p^GgsjNsVU_fJwO%@j&VlC!Y;x0f@QZhf}mNuxIoY z*dL(0+|$(C{zm5=UvtE$KEMReBFxMIYMnglmm&fo^BGwsOS2VBK$TPjlNwLs+|(Xv z{(yhML%0Dv!U|T0J0^~OZ09PT_9~NQ{W!`BMFTK@!E{!x4ch6-=_v?$9^}8UHg#jWkjI2%jzRu*T^DqmU((bL$e4My($l(R& zatT~;0x`R1BNhA?LYM(Be~5U;4D~q>F*}VrGJPGf=pm-gqcY;700+PUkV9s` zy$$w~4RVG~UfyGhia88HGb#x{ANfsb+*{=rgy4lbEv|H4+oMxyrhW(mZUV=*z>Goh zz@F_2sjVmR*oUfO3+|S})Xo(>idHb@HdzLg76GPRz;GAv%vi*+5fUmnRX+&mCIsex zb=dtdQ^d?%KR=cAm#|AB?7?B}!t2$t7%^s__oVT+A$+buNMC=S2n`;wTqFzg^nS(( zc$Bqbl=WlGjgM|~KFoN&l&!t8eN~&s%V_%J-U>$BnY-|P z->VCEKM?@*Y1-fU3_;?CDsc-&-2MyS&tLih;arU7dicly>%O)82%eR7cKYk=hHq&YV{W8rQ!IS?y>5_lbM@ToXL+PVi<#ed^c|d>V$efJ-iHE zZ@-Zr*9K=D)UY>VQ8olVs~xoqZwWfPNngg$RmuGJ_xRX$F_|6|A}HFnadEpoun>68 zWJ~ukVGVbRLdHD^*kht8ZIe&#mGI~C4Tx2rEuguG0H+8&5%T>J@)l_C`<)sXRMT`( zW^Y;;fJ4bzw*1QOacg}!3X3B0Z5pHE&_Eco>pAsHAgIviO?pU-+=NPf;tfe!Y8(H? zVce>UO3V$i|M7DMu>k7poWK16p*CL1EsEU~Mt`#;?$;=w;!|x*50n474I6l`pO6o$ z|0TE2pq$-~j_pH`LG%{@_&lPmV8sl8n;b@rZa5*v*&aT6@cE`N7aY8<1OEe9`v=Aq z9k6SNL7_;ED?68%1A1rx&te8|lpx+$LrkIOlU*14`9K?lG87FGZFo^PjaU2Sey-NA z&_BpK8<{?r@cykEXq^;54`p>)gct?W6t&T`0ahfmM$`$UaTnel^7sY|C|k$Zk1A&H z6UX!RTfSN0M*i!<7p@1lwDkxf3l3r0G8-+QnuS@6hp&bCMyyJ`pjEcw_8InT3sROu z2m=CRXt!KtM&`0bsfo;jY96OQ#^ph{{DV+_tKo}lB)V(}*uiO2TJ{Q{r4*&*irEY-KZX?jPVajsBVRp2;S`B*(Y<84>Ai+#k zQ{OfXKLve@^ZYB+lR+(TgIVRVg3O1PQX+vtD(HEh^iAjIov+qFO)|N_aiE#_b+B;X zo8aneJjl6MH@`H{fzX#G#sx(MMPERnYM|`)#F#X=8B_U}#?TDx52Z@(*F2yRz{akX zPKS7%FG9p!IqFRSpx}R<%9-q+f(EVob4F4d!kPKhx!l0+Z7f*8a1U}C;5x#j4hXLN zUec!arqXK$QKD)wRK_3lhPO|{RW0V>en86<|M2-8O}YeiMKX6q1^f-QGMXCQMlEz> zg?4EzuXY)v>`z_8!ZkvF+kS-M@@J5MXeJOwHN(zjYbm3q!qX6BFL3vKY6-(DVce#U zTASb;STz*VEW~G|qhrLs93aw5eP!(23h*%oWY4dh{nFP~^EI`&-Hnls&rbJV1yDEB z(4sjvG*p5?5lqbKV3f(K+3zS3Xuy{sn%aj~FM#~NBQI<%4!+T8v}NtS=W+QO*iKnH zi6#f_a@Srclty?|Ud)mPK&yp5u{?6Wh!9Kp+RF@hN5bg;2-ZOT_BedizB0Nx!As)% z$~Ah(0E-7S^7UI6qDqeil%&(*ry zA^oYKzZyWhvs8TeSA6~|F_M1M+7p^)q4bCThV;GH=>S_R4=|)LR$S?x zNCL_1sTqPk-Fd`;|5mTW4K`4(fk3vxo1Q#6Xl&t*UHC^^7b5ka8uosT%(hg6IM4`< zmo2cCC%8vlblxyK;}aTk3R2kv*$NeL`zIA~Pcz#*kfe_i+v`*k#^0gViT8xX38AT( z+h7X*s%XISFTY!$M;lW&NEHe>1^BcK{&a$@_}9+gSIu7R?4tq$o$a^kp>1j=HQ@5WcZruNV4xv6L^K+v+Nkmv=DS1rAjT4vpbH9~h~~cVf!}1Rlo8 zux4Ema?&d`aG@V|y0E66{@hu}z3YNzX{bkQfKrgVryZ9Y4POPUcKz2P@S#YI53uq- z$2b8}uo8XV6#z5<%p24Kh_9$Tq2_=%8QQ4;%(A<)ejP^H77l)c7Rm_X<=*a zx4k0y?f4>t9=?G@1;9?Iqt!A={*HTc%KoYwA@7+W3S!gUaOn=|tJJZVL0F?rTEO2a z4FFVXLhne^pp*9y{3GrOR9te#z@8R0vh2O9yvM1Oyc(PtXcs_dsC>b%{;7S|-_|be z{M>OOk|Wr|O?w!mpMCiyrs}?S@D0vC8(iX0oiD%$TRko9Ui(QW^`Jj>JvFTxBUhUu z8vGmWel_?}1JDWW{0-UwAdJ+M^C?%Gf-QifoJeQ|gaj4=kU#L`90(1fDVfH%^;O(- zS!_$75!@5p2UO4?w>D~je-swgF=gLSAf=Jd_PxUs(CWXo2_pqevaklV!AC%*r;xlh zg-g%`5mvQ!PBv4Gi)m;Ftc$MNvcru+_{j0`1luG#F!aXu8S?5B$NR_FR&v*r85 z#e*0Cd!4q0AC(+ZFL1bQ6Mj2DJLk?;3yn*YAEG z0_8jhuN=AhrU~P7sl~uX!eGAgqt=s(j{7Zj{rnNsMNRkmlfoDwdCxMRY39+HTzzuW zStO(R)6{}`P;M1W3R#x|GICh6gb4nV=t!&_)d9F2wU?K>|d93P_U74dO#z#2k&@F8w3$(x+Lg z$XHBZ2Brx08>)p~jf`g`^@pm%O(BOFwf@t6s?foPwar1)`i(d*90pXrgBf4nCa?(5 ze;m=Sa)TatRX`Ee*6$ve^6h+AXOyi#0_E@ZJr*Q+7gPnhFdvhO4k2cZAX%@iFDg51 zpx2Lkg?uRQCB7$W-4|P?EgAcm4k~|Ono8*IfU1)b4YEy_3Y?wZxxSLi@OwW{?E^bj0{Ac*4U6^N5hwh`ZYy$^`JGoxakKSZ0CD_O#T`MH*VPF>^uGk{k ztcqQj*+NUIGpLnwuP}Uv@J+-7iPk2!eFZ^O5k?+-xj__Cs??*g+66S>*EJyG?zd?b zbgLk(AuY2QobOhnaS5e#NNX5IRI2esyK$Lb_7u&Wgec`3y*5!aB`3+{_GvdY{_0o7 zQ{OKGo(u%sxwH=1u>(>ubBl(~HVQS#edDMuWzPnSK?&eR?W%5b&29V&IlyQ+Uh7iy z%hFTZpRG40&a6mo7}R~X3fr@GH4hVN{3BM|SsZ@VGaQ?+=#YHMLeS7=MV-r&4xX^gU=ZkOun~3bWyYTmsyYqz) zk|M*v-m9Ua?nxAg`u4$>$1jU>+TAafd>wz=ZGPp;-M4)`(I*_T=C`WinGP`n=T2RU z{P4ElJev95%Guu3)4S5|h9{zV@2y?$&3%|okuNB!h(&&mXD&Pi0Iers_k3X0a3s&1 zkd0PKD~8YIED=c?I*L{XF>XLfcZfP(j)2Ef)#pbf)YZ)1YtX_?T9$ttMps)|=M3jB zxU$Xa&}2?F>*LYWhv(RA*v`R8py`mSs=v+dA_>=<6|Vn@j#d4GF<$7L)r`M9)cC`p z8VtlqcQY|K{;RPq1URTPHyfd;dtYx(P#!XI7mq1r#JhGULa3)s>`AB_h?67|F^?62 z(es1iGJG}>l1%swVEuhZtNY63<7YyCMJ;8j9S!qZZ{0I4g|mnNkCW0JKKY!V2&DzL za;kMx7q1fR-dbh^OQ=viUioRuabGr%z>|2kT43&lR;*^!}Hb&s<`dPj%5_%?A>vu?jtsjGNS zfZ7+OZ5yAbchcn6vf_D54D$2VErpy@!^k|6ac8wNSZ~4luVC)yJtR0V51eaG_VNuW z>xc&+CQebZNG}FNDM5`Hm;@=CaE37WTM}+E(9#1K3j93Xjz|SFIHx5l3R6p&^?6qR zLjY`{Hts{TXRK$Qn`C0yz{;a=iRauD2pI?9N$?0@S=DQ|I$`+9PEv`I2*g5^qm{hX zvc*{*ZEx@^IG76Eh+M$rnfMs-MDJZ$W=<`LmgjHbC`Yc`2K;YwO>PT(akU?|1sxR(pUUi zVsrcVT(~CAb4#auco19sD$K26JfvH;`9r5g$@@L3H;_d2`p}e8P`&5~(7}9x-FT=u z8F!JkcXl#WLs4d9c*&!+-+Cg?9u(K0{kI&S=hl^lmj;M1on*GHs&f@8-lL?!5%tx^6C2i zDUB2j`8Rp1?6mtvf$1qb{|TwkNSjxE7ANlFyvB965J#ai3RPdV#4~r#H`)3y0knW` zEqAKeV?vOVw~KP~_tCxi3n7oJc&O1acWU}^rS`GnVtpgdS) zm@Lhi>lt@6UP$2!yk|IGH5(riNh%=)6NfnbC43i96WzKWgO0?hn*JN&%s+d3Z;@M~O zYZm}U{XJyqW9M!uGxkqYJM>+{IIu{tn=VyC{VYA(zN~6G)J>F6LiNAW!TtK*PIj6e zc^8gj?^Pui{F_a9WCr>CxBededwHiwqNcalXQS&)6-BqE0@8WRc%g=5oUbdeLj}?K zDFje%1C)gB@&}WcGCykqX2|=8-LP67-cr{6{V_OjlLz3X{(4LttKiNC5IjH--O3gXQPU|CD02p83Y944B;%ni_3wRJ@ z(F|3adFAwMe(Gi<5D0ub3)s^+L&%~R#heC1Jv(@%cZUT?j00rF+H92qs8;~i_#4~w zDwH03;~T6FAStL5=%pr{WSQfL(14K-&Bq+OBvyCq{7omUysQ zu)6P+X?;yod*G)-gxb`6RXmLMYGd`!`!Z3}QLj?I3F5yBQai8=;-U=%@cp<|OK8_% zavHNn-vWv7rTy1Vi<*c#n_8oAoInfj(CA#)Sj_oW{F~Sw?1MIczI`+3TG!pJrSJzU zonE9^Mc!Ve$IP1trTv(&CF2$F-q!*a-m-%F`zk+J(UPg!nt}NsU(`M2%iM`mi4uP~ z1SqMX7tcSw#>7W%K2&iYB@e$(xQ^Mto&a*58!u{A|NI`iJhyLn`nmD5 zyUkG_?k=@Qn|!q3;(*Z_vA`|zRk^>wj09G^gA$(#Gj%lg=n9E z64~A-W>W(5r&o%s>~$3=CN$VwOJui~bF{YV?7E zR)xeB#P_y$Tz3m|2Hr})azo zQh3m6P)y~gIZmF%P*y6HiYr2@q5i2{wqmL*s8M z{85f%$=pEbakPX3DfI+Ef+UD_OpJNS**H^w@($E3P1=lN3x@AxQoXGaK~X^*hB zQN{*bC)z#gKQr^46f`>qvs(Bx?5p`A>2tLI-8K2K?Cc9?gd=P3^0tcVs4K51%B%f= z?Y>-)RG>4@?oK)w{D4$a-r1kY?C4IcW0e@CdYvvMcb zpJV@T)x(CRyh2D6^5CL9O_!JTZMNyka1>>^l+2I`W-n>)S^@R~MRVRac_{wqKXc2Z zU>n6}9~mT)@b;qy_z@tIfqE>5RA!6$nmlf^%;#HQ_(}V6WAmuD9e?9*Gw1DKsL|6X zYjT}`-IY6eaN46kQMuDWU-T7q^X%WUH~n}R_lmzDL&a|OEchxI;kIzeSFx;W?yo@S zmA9=5F*NcoX#CB`&c+>P>0aw){ST*d+kWBVTFrspMvHj{x%o`P_M#ENI5eR`O{@#% zu7R5U3-a9AF)6w$ZhfAE_h!tcC|S1`f@ITLjE0Gmon--wZc)GC6f%rI!{Zl1C$6N` zZFfR>)K+j{!#HS`0qZS?CkO3 z0n$~Wud*(LO~3{jV}A_9^0M)<=?e!`#b9$c7S_vLbLVj{R01f(k03ew?}KSAuL?5m z*j2b(B=79Y-72l*egq7vg)VZzR06KHTV-QUMR&MdjIi z$+O-wkDF3DPg)Eq^0Zrx%GjO_JRGmRUUpPwZ9I7@SkG3=Ab959&VFUY<7jE?`tkhf zSj-8n5;W5YWub9U-zJloc?Q&oNT%g?A5OnL{R0&rmgx1IcnW}cHhz)x*-ATm1`t>W z+7y1$XwDEg+vTOAM|P(%%erp_5na@*@$0%~zurV zK+tVSlOjDot*9aHd|`Ku9i3qvp?hAqaS{981ol-&`7rJ0lYjGlFQ_41$*hJ~Xt)miORN@96w^!mK6qTmSg3&6z2K5|4iw;)fOY z5^yHee+S2hTJKMBCUR4O(%VX3k#$1a!^bU>$NftuQ=gwY#|y`Qt&jic{QG!(eEvA# zZzS~Vdtg+k_XdIt4g}<>3xeQLK$FTs2jf9-VaJRjN_CS27&y!MX4C#EH?T)vfq6r* zv`4sLdGk1M+YZw!RJFeW0LU@F7h@wy@an(G* zsD4=Ly;` zGbNPmscg|IUW~&cK=F($wu6@FfXeg+BV@VY%?zIxeVc*3dUdOfD0Dvgd)RGtX>y{N zBvD;Dgw9}8?%<3wxJ&(*g_(Xm|{SW zmMo0Dtd+l8COLRHsv82HD5w%EcrU?cV3y8~k^DnAwu79N(JJQ*ts}t1CuXVYwsP3l zgI;x7v?lXAq^L59DSE7Toh-1&eVi{HByU81Kn8LJebQ?O9v+C7WMqSHawOlN=L%Ol z$dovL)T@q&w`4N%eW)(Jn0^~v2#2&Sh)q}6NrD{wfJB( z(I*=f++=!`n9H2(ZL}GWWX20|fC(9|+mz7nWS%TL&9BSaxYAoUR-4DmD*V8ix((P{E9c-#7!%Ks2FyD zPQ>*0H^{_Z12dQbGZPTqfD16|0?`v$eB!iDbU2cvSQ?vVCO~+G1U8d^9Y;U-(Fl;M z?+btIfN#AqhjO;@r)c@Xr89r|ysu=NVFppam26>&>wBXn@+z6@-a=;bC_Yf@f1JRg zIjGgBMb7<1C5yCByu;wIXR%PMEdfzNxdG?N%rFriAT0$%n7{+KNQfXKc`}ym>6n>cdrZWSP z?LZx{l*z_;RtH+jtnUJrz)NUV#u{l4BJMicI6|V@GD1)dcdw>so0b@x9Ds91}YvB4LLyEiK&KFhjoYT;QweY}SS_$J+9^|7w!=iMV8tmqb1+$gewo^{1&w_;`O*mS>48=077qXcZ! z$4s-wusfIzRxCq=fh*O!QJbW1ID_y3+COYlVA_)!WGo90#5l?+S-NBC;um}9O;rDU`ilh&SJ*jgqWo^TIQnBIh41g7fO@o=S z>{%*_>_dmx_A^ggb+8u$6oS=QwsRqfs_vwfA@Wtxx;_YelJN9iGN(G15$WG_{#{|5 zh~m%FmaK8U59XjkY(CRQi7{6T9?gibLQxzZ?0~G@JWh8SEv5fWU~%TJS6qOe5h0>U zeHqow0rbPC9VwKQ88jSh(yFKwD>oG~XJx^)QV`L~5**5jB{KSP20cUm`g)O=U`rj6 zUL?~Gh%NxJFl3#9P+IHAanzOq-Hp?0waxcU`hoH)Js5Tw6r3nPIUQyEyX4&gXD_5w za3&B3HR>(=af`zd{$K>e7+F%3?0+I8p9cpo`nJ7#NovZ!7=1D&O9H=sy7N^(I!niZ z=Rm*rg^9tNT{ASJd|_q7YpnHiC*5pm*L}!zAT>5o$DDo`v+)R>A{F&0t_g3NiO4Npv`yj+dU7fMiWU~Uwcd&T8Nx8^WY+Gx0Og&2kZJ)$!z>+s*J*l?69>ra#SMD* z+XWl&+G+>^w`jilTJlJZDJ(%<0En-3Z-x7L)D0x;FY~Df8@mz+F~I$GS&eV9nryQ~ z6b4^#*7B+0zJtruY)*j{81lvU3<}v)@J*CRMAV&UWxRA&^)@SIi?6d@Em#sgT^8BF zPhXRfIAdmTZvitqk8@p_)xsfhP$;WDkP=F~ZXCL1tm|}@z5ivZq@gqhfdhb`8QO$Ymq5=pSQkm6X`y~Pp$07jiGzXfbLji4JhS|*+_#?K2=?#;vzTnX!)7rL3 z4Ud$ygu}>O4C&Sm4+UAOPqwvW7$xE+)Zn48sprB;rcbkMvFfdx3{?uX;k5J9Gd)mk zqOCmiM(sYrZWWpXu-sm?0cP2!Y{&BQ&NKYkwEN-fA}E-`C++ZBC0}iC{f|Dp{biz- zi__R;B8QDna&Rrg7AVHr^b55X1q@ueWmJWJl*8kyoy}@iyj|ezreBHDZ`F;5E|B(} z2?r*-y2AF>=W;H6I7l!pF1|wLK_O)A!ap?LH_y!NKj(>B;3ydv3wwoIwBu93eoT@%8N%&*(T!ChXYdOnhy@!6r?--13z1@OYRhTGMtI7e)u(Dg3lim1IU*#y3A=N98QRT`j|g&J3czNmC>-3387t2{paODrF@ zyz$C62$OA7#%{EOi_KILlBRL1_N!8i?SgWgc=KjESpR|FM=yfFYNe};IV~1iG7Fak z6dG-@{DPHu>Xa^$A;hiSoL#Ts=~i|gX1R0Ts#J2C+tH-Pwn}`2D*dU5(yu_(Kw`X7 zR@m{LxdLwsl#h^BNqS#eO%8#*dOp-bSH)jHUN7T$i(}Se`!k7<((^=$0!|%1{tS&0rTE&V7Nd}Djw5a8W0yOdA;;H#aVtkaJr=ih9T*Y2C?zCo=bZKG0?S{w;^%5Baz#ZX zkfPoP10-x9s17Uym=g5KVTEOUVB1|R{S+MeHsTD-Omh0NYfL&puRr)xayJahnBoZA zwRqw4)%4oCs`~-kxBqNbbxM4@u=_#(2EI){o%4)rQQPcV5J@{{)g_%9H2DX_tu@2}j8oEUSpr{lL`{uNgN zP;SXMUJrZ9Q1v>CbF15!D)XH00C40bRs^MVw^dV%|DYBa)%yYcwl~zoK?sM0OL;Nx z^8>F$hLIbqD%0K$n?hi2ez9hk$EJ>xX}`6O-33lG@u2rWL?gQ|K%>3l=FK~8PxG}m z3d6D|kEF5TH4wnLa9~T{jTKFdaXDKD3hB4eH2p2kAtnX_2OE%QjY_qH4g3dH+oI09 z{E4<9V0gu$^tH370i(YKPD55H73kkLG&I5o%}~B_>Z&PM3q}cmwWPjKkV{<0q+shT zKXB%4IW(rGbiATigr|-(0@L+_>pK9klHo}9uMXKXXDs32+4lbA^U`RUjr7!VatR25 zv!SSy*I#^2ylzGRlI_YmTVyzHGjl&xiC!$IFLa6mg!T9DRjX@wlpdmdBX1dED(Y^M zZ)r71ycUW)!CbOyVr*+_XkxD&{c4U&qQa;H8tzS2)b!+Q#}WcO5-55u4Cg?-s0k13 zw~f0PRtC4SiI0!z@k2p(Q5F-HpOprrV1MnZh1Nm0t{d@!_*`m#Z0ItUC`_vjPId9D zH@1D6i@3hiA;vq#S@}%*O_x#}DdO%86u8h?I#K*2P)(k_>)GT?-*pYdM1tN1UrpNP z+bavAd1;7;5a=i9E_LtInuFT$8}*$h&mhNdFbF@#3?0&gQnO^%VbgIo(j3gwrA_fk zf0nuU)991RQ7--TEYn|SpTG)~d7vgJCA)Er)lF2K@^IN9Y}Xz3DnJ%_Cs(T6sTaoX zIdePQ8x=c)F45$_p)BR=lOwOL`1S@pdDrkPE5)fGQ;n_<%nJ2+*nIlslNb3uE^ zUaPdHh|3`EAFm+k7A^dxz&*r9adekE`QsB1oUf+GkygNl(w{fzUMYTRy(m)ps;|D> z4kCKzteL!rF&3tg3q>%_P>_q4*BBZ&%o5}s?JB_4s&%2i=lj(dfNfQ9M@U|M)bNlM z^Br{jVt;iLV3MN&RBVu<^f~7_oT!E=2EqU&fi)OlqmX~C53nq&e7 zv56dk74_Z^?#SKr;ox!LCIc)Yh-oPba0`ZHfDE|)0$57i;`s}2PUm)_fCuy6P4H5+ z1GFd5byfcLnUBBZzt&ZPoN?!2h_n9Z3jP$rpr93wDmyb<_6-Db6q*1GhXc7T5Yl|K zaHk%TA*oEMM>S*$QV_8@4lm1ah|PQofSxv5hDg{~aM0r+pgUJ)jHn=fQNC$iwX=Rk zWKkV~nj7%>Xx3q+^oeuKRcGC!{!ishOyCcCFThp=-fx z$7AAWEjqEtX$_mR@2J>iv^wyS3OW%=0o?32VHyuOueJ1n)Rvxh3Ms}vRx73*RyNb2|iDz(dq_uAEI5@_KNTsGT1k%=uOmQGoc44$E` zb~1s0t20#o=AzWLJBba!6Bh{$TGMc8(6oVUA%m7_KX=8Javj^SPh3fY6MD3KL&)bcHjwA#aH}-IxP+mrA0mwux;Q57x-N29_ zj+3a=ZPbZAjG&%s?gM}RvZnXkH@k6Rp*j@4xpNp1=zheg*n}e$$<#AD1~gCrY2+#< zwPlBar=T-i?qMI-Rnc3l^~d*Ge|xcgxnbA#NMZzlGe+BN&0cU*A(Eya8GKX-qbU>+ z$F*+*h)Ix*dh~xj$#!M600?H~`an%H7N)Ch!(CcVv0R;LuHwEt+tRoZeTxq*aNqpM zE6IH8Q^k*}HR<=CAFftims!4eZGiaPvJi|U14qiR57RC>e}x_=?~y^`_HLv4g&HpyjyVoBFq)W7f!kqiS2cY$PO}e@4NfnG6aU` zXsRu;B0P$ZDc$_qaSC_yrbsn+APbT&SLFMqE*_K6mZ0IHKcI_4U3F8tDC$w>Ay6_Y z_WgISe2Le`wc7!lPUYuDtG}+HH$^PS z7E}4(VE0qBoYzB-^WN6`#GB7&-Sn*}BwQ$YHqAL%I2u)#%4nB%|aFF1~JavVn_gEwwJ%($)8=l>U__^K!Cu{k=^>R0K== z{U$E6!q+u9AelN)9r*@h$5oE4T83rMv`_5Jcz_mpvGVNCMz4K{WcANY!IV@e{E)iK zjrE{+yJ*pA#qIo?2%dN_faTZ=%bYj8E-P~}=aB)cZTH3NTXnrjBIU12k$)Lb^Axkz z5^P9AiWMw0P{AEHeXAk>LQM14Je~WGDQ#7i)qj9H>Ys|1;hU5cZJaj4ap&?D$SqKS zh<4GDzzNXzTUop3Ues>8#8vjQ4@o3NBdPG*3@bVfq+mt`*M4uQv8TwMwe`DTxIt@g z-jZxSrneWdka$72+l8BC{)91+CS*e(&)=SK!M@GTlYnp$_;M*wm5uUwxDuR~ec>xZ zZyuV$c$AA*0;gp72XS>X{-$;)o6)$S?t^tIc4UyXnuEri9^3x1L3(aLcoQY;d1v`N z{nVobj$1*cm5hY8)sr)bnl4WO$dOVhp24n{=Bpks2CTkRP?8TbEoH*}Bsw|VPD14# zyhDYz?~Of(4nEhs@XpiY)~6SJ1_@vBFcaZ>`={DSKOA5^BTYTg|43v|+C4*50 zGbDGep@7!c-e(d@1#L19g=AlM_6GCYN^}vGfS-QXKRH^@Qkt)Sb>uDyy>$Kdc|j3t zb|o|U6T6z3Fn7)ixwX_f|Jwkgn5Usr^;dRcZL2^FcyL1GtP}Jf+rY4pFX!D^>dsYR z-6Twul-Gv-(wu?s?*nsYYnF8dOU^r>$2ee#^F_{8`jn~8*WkPnWg)=n)NJ5^de$&Y zk%XmW7l^ITM>UKeOTG5{lxL+!t@*O56*t@$3dLk*g_R~>Q!^6Qzg6<8y(~+DE9#Id zw<{6*+GPlr9FS6l3;k^7Lc5bFXIS~#&YWm%2_Q$BYu8?QYi(zLS^L?gb@vYsjsR5v zhy;Lso#)i^b*)cYPFA6@y1P^zV<@H*3XtS5~paRnsyyvVWc!Er#pE(ueY{0Z{ z!%EuArH)Z(;;OIvVtuC{rZ;U3@B-jVpwrE_5+OJZtxFijeN2{a^H@4-;x$vRb+c6d zN3WeaBmHF`X#x1@%{>qWsQUtGGX6ysq(TVXrvX0lr+1*9At53plRKPIO8dZ7DEzuF z9#zgdPR>(ng7t)q)91g`pk6K;JuQ0WcdpC>UNYx5wcXD9Rjmi^`oKNcvu9lXLB`i8 z-${8_|F8Z%@3uReiz0ghUv=9yyw&1u1m#vJ)vcf&TO~$?B4A;Q_|lv zeYf||_KTjwyM2GQR(k-2C%ikKdw$(zT-sslJ>KsB^3ALVsW8~HbFpVLq>p#^XAk=~ z#-E+4o-ZMT%)9=*r!M!n?@IRy-g}y{JJln6Z)9ROxtIUm(6zn0y`q=L&3D^-|AdS+ z?{)S{UVg^B&(*8+ZNhxNsyDjqT(R_y-;-zOxk^|FDcb=*;$lFh!j&jiQhbgs5e-kM876>g+Y_^rKQf%f3e>NMw3^H(7MK4uA8$W7`sVeN^JgNT zS1lL7d=WydiK;J4DtqlL*%TVs!t9LXwUYC9Yj6VGFFwtH@*RcH5IeO_N7{)`C$1tR zK14>k6}~vSC^>8j-#X3@U>b<@2A@x2+c~bNv|zXs(6YDxV4XS-D3YbNl1CxyFp$Y;!uK{9N zFEKLyp4ucDI0xKQ173ojluO!35YnAlKtwR%k`*vu1lXiQfdk!>Kgu8)w2b-wWMGnm zy^jM>VQ~1EwaA5$demC}lWS#kah)%_)H9kH-$+V3dd)^`<_0bT+=JtIAQ$-N2NZ%2 zc@!A;9;Cv7PhF#YfF^@b03!rd*}2j0@&k_;gPkl6MZs@=be--CN_~^eb}cbx2Y@d- zuAZ0}50Ek-rVA!A{vyjk;e)Q+6Rt%G&xhg6my15I>n=O)m9L2qaZam{zSeRAUnz={ zR!U#>Xbrw7GuhrZ;94i~eH>(A4c7Eu(E{E~*&pyr@TkcgydWGQf^U;5_j9mg>i z!I06NS_D>oFlykKsC~|a8lS^+^EL9G;hC*>4scC@ghCePkl;qeC6 z`qA)Hyd_t6y({s8PcP(q;5@}^0~8~;@G@l-OG+AEe{fXHQ}%;K$n+dWhbC1ps_}|?Iwak^0VVTZoAenBXtNvIAq(c zw5he-q2Ok4Jdh51UTi>j3ur(hz*3(bUu>ji9jt@$1X-mH;N; z>}hd>%AbnE8Z+J{J-Z?eK~&IE;v0M4T2zt`~LVqv8W8yhb*e<6$3A-Q$kv}u}kukr2@^%yW z;3Rw3e`Q3zU?CCI+ZdfRVPs$Rl zC)DouXUa`X6v`$c&n@qA?rc+IkjW#S$l;?XiIUS!kYVwWI+0kXxj2-4SmaId4H(+tX1VO%`Wu?FUn{9 zu7iN&BXm4h$Jrs7=F{PEGXC#_X#ehWOFokAlbRd^P-`bo5(4A)NcBvjO_#mnwXa@N z)~e|I2U!@Clu;6di0%_xf0$g}%apn_7){?pBg-qaY_d_Pt2Z;JyafO=8e83SYUmX- zeyS{dd8@y)-GhcmSHA(#cm^q&&83I2mLihlbsncF_n#eAR_GVW7~}(rSMRg&4z~}$ zA04r|q~Bot^pL~+*FFC0sKsG$z@Vz%@v@|-Id?JFy7)Q^N@SHWNemAwXm8c~EU|tx)`_Y> z7|7muO-xSG@^P_AW$n1S541Q4^+(!euJZNn{~kLXKK-pxAzhxAOQy(6S6&d{SltoP zXGNGMTprL%h~e&l@@RxlFQ9xu^>{AyeXq73iPJw@SZejJz`D~+mrD(}dX#a0r!X@U z(^!hZ7yZ2ev08(PYUzCtX#lN*4mVjYErpJ!>$G;c%*c0qsx*93&Hf)=?nXW_*>GAm zvufH?*UE=&T_w-(`{ZJ7T~}5MB_BgK_I_OVDJlkCzyzW`q%A5V_n~+_QxZb* z@0~C#`o1YuexxqWTB>i^=7prxV66YT%9HPS)@o6Wq!D3D!!WF9rYR}?FCryS7rC)6 z@sl7RYiT`u70Qt+F)9%xC*?IOjhszW&4M!Z{NPcw+>4ogu4imhMUu)`o?7UOQ1}$_ zvEAxgglDk+w0s;k#6p*jy5Y&vFU@kpQ9$fwv!&c@995L40I9#SNy*hr;kLH$f`c&2sv$HhM(!{ z0?Z8)+OQr_EFekIGL*?i-L_eAe72n<4M7Jfp2gy*&b6wSb=?yBR_89$&SimL%@HS? zm7PcC_;??$It9Ql{kWZW(r*D6KG&Uc#}z=Oxhg?WqTU#lQxxil3dkzLi_le_$eGde zBzvf>(jqJcl9|h%3MY;hvARyczN#qgT8+$etb_)RYy;_&E?~DOu(Q^epSd5;OX4VR z=aCDKBPqci*oBeE&@2yyg}w(Na`Ef)eyG5&9>xo^KLR{G%@>r-zP%9oosWWGc; z=U1#tjF?{S+vk?jcxHY8c_gc0c_ZsoWpZA|_28ohCTvFZf5A{TKn++XpN6Uv%Dg+b z#CK8IHROjr7nq5g8D}L%$huMwfQ0CN%T#aX9_=B;)KgH24`~_CEO`}<2^n(UwE0lI$$!ShS#p@$7M|PbW&U#Hp;q>7{>9QCXjoWdnOt6JDVT*#v4(A57c4nd9SZ z%rL2^Iu@SdTNyr(&S>2dPk6f2=J$~H->_-ih=yg2m~?38cjnN8SC`eU+Qbz~B>eo& z3^|cTsS-!&O^g1We=GKH1zJZ|oFyI0+Yk!Fw)U9fqW-?YMZb>i>>&4!ro@}8e)sCR z@Z5AknC-Qk0O>lvLz7@*36jvQF41wXbpnNvG-o=xRMRgt?R9^(X*piDoH0<(A)#&1 z7R*hAzB2u_8l=F|-$|8gJS(A1|LxU|m-+{0>h;l)nC~>fd0$GAPWOpNf!|Qf?)?ou zel49bW_Q8*%_eOu|0ajbM$%IDd(1Dhl)GnbiuuS?a{>oEJGnY4RLRrCD9?(zRjV!qNK*7^x z@yEi9k7;8AmAyia11WzgM+>A=$9mum@e!18X>F$L-Ydn;n|LWuXVT4xCD_NG)|(Zn ztlv@L!VzD@4Ie)5tFB`r5B2doFp|Ni-#b==fI=(#Yuu~y=AHOmN{|9uXA?MFP~vD} zBKYCUCClJD#D}Ac=!eg`(VL(^HQ0_Xz6Xe zT1jckukZP-Cf?c&HD+D1eJf0yV`EyCUohp-HCs#^_KZOKZ$`5tZQNXJjfXGZ`Q{W6|GTTf8 zlm0VmM+4u#0Lv|Y@Jpndq;wWw_KN?G9Sd;Vc`L>Y4Qfne{Q<9LtHXm@<;>)v!XO)2 zaGE`u-qnc&+gq^qb~3E}(A+*Jcc9-7K|4CUK+|fb9)SlCTm=CPz7yt&8RID*Pz#tX z%QV1#2!nBA!T`n_-+v>8wVouLaE<_^*j1a1<8PpV3H7Q{;@X%=0f0}n)dQ2TB<1*Y zFdc$d7Ox52(~$xGJp@yrGQb28H(W#s z*tQsWfyAlY1$6DvIF*|g5bA#_K(r-_e;{w zbRW?(7-t;{x{EW7!-QzP4E+N{pPtpG4Mkv(9;cd`6 z(q{A|X>vS^fq)(atW(*x1~Fm6GAwtbObSn(wOmWt{7!G{mo>58mkUaY4v62*&Soo+VY)eOe&RAh*m5Cszdc-XGKCu zSb_Tp2Y4vSZ%5iac7b~piKJ+Pbhl_x07AjKXWt@_yKU^%blDQ3a|(S}DXl+Ww!XKQ z2zUB0Jjd74~)-bb@&EN10Wzy@hx*YV$S69GiVwpo68%=5drdd+3uQ3s}12Y zH*x~Nq_a_zP@Ch6pSIf0V{R}19MTZ68gK^MTJV1q{6qeeuyrVG`Fx zQ+8udG!-@fc_%-+nGHhPhzM2+R&fVDFIuyirkgv?plm~CiGDqU5C<~^a- zYP0+miw-e+@ZUeZFVn1nTpu+a;7BnY`+Qg^TPACgF;~(^EbI~XZRjt9Ce};Oi>vn` z!WRulYX=__AqAk?-_Rdj+bYOmt&-XaQ%-&$4Z)hm2IX6|GpArg^@TwjB;zpT@P=ou zjR8WN7Mv$Nsm2C$yP8^v2hLg+T);62gM9O9&TNWw9GMEOLazJdeo&oN_XM>{tsNj$ z{#$C1?9XoP#ydMrZt#QB&uzZ?nDY+Mq%bxiBU{Rp9q6CDKrnuqKNb9T=1Lto=WP|Z zz5}Z9%rJL073!{;n(i3%X(Yn8ZGrHN0K)78lIc$_4LIW?*Kgn}?jUW=Za~g=vu{Ck zAH@_VGgQk?woSF*r#~?_rs^P@R>>wnZF@?@{}i2tTT_1<#?Ok4+D12wZW!G-I;6YA z(IBV;Q2|jmKsrWuw}Jv90-}x%kp>ZrfuM*8BUDiI_wxP)=Umr0*E!Gke(w8oyHxUk zyvPdR6*13D;}-w&ikfNtSDTeSC;0Yo-?#fOuIpl*ed%mu3%K9sc^jJK1c5E?f?30pjZeHnt$*H7G>S( zY!RmOcgBAJ6{hxktJwyy1GJpj0$&5CgJ!wJA z{j4myi73H`e&zM~y;Bum(4itRcxZc;EQzT9eq9NUL}6u66+#rl6Ny^4s~ti=JnW)a z*@8#ko&pM-{{7Y~Gig&G>e<4%ZpO0Fop<3bMU95A8_Ya|k$K6P6=c9E*8f22&jQy# zO+0xpkqC;p5M8TEx@WzNBjX}7aR4xOh^$kL2XH54jz~%X+7SC zOLzRBZ7WLg!>3l93~_~o#?=i%2HdV9$t^%9Dzl66zAc2~ZCCC0-2%zKC@%vyQZ9?; zhE<3GDU;b*Vj!t$DF57DU4sBpWH4;mu4>JRb`3RER6PcQ^DU^t?H#V6GUuQ=%SNP; zrGA}khODF#X}a6ry?d6gG@fVhC+$KiBqiH~!^T{0RsSTMd!Nqghi8wzQ~t~YkhA~MR)g%b2l-{s3aMpg^mQDlw*Sj* z3`Z~QO!gN399?-XT4nNPcJbej?@Wb<8WPZ59nu+v>SOk)SAsTNdKV>t0{HtJC?NWj zspdV542nkGqPshC)1QT1uoqO`>K7B*{T1O2l-$jq z;$Cg@Fq$eINHpWs`7DFTE59ap!MO+e{i3M)e)!QQTIXT#sVO((70yO#u1ynP_U9pt zETwL;b9;l%hX(G0DzZ`;|8TFU=4*4^dFG~s!Xqg}XX?ErWN+5Xna!b^7o6YeD3W^& z1Nx9RvAfbSW%zLYeVI~eHq+$RndYY(E@QM01vKHMgzsK`-={c^d80o-?hor2l3|}` zJU0Z)NH4JzGkSY)XP=BdKgS!2<>kDK|*F*_jH(AkW5>9xwjreZzjX~8sZ3tN(R13B>F)!+TGZ8 zlFL_Ui3yV)vE(4)ag)A=kzpx3*X&Dv46fPA-jD9f12u`4>itNsjFi-icNi`w%%9mu zV|0N#^NG<4 zOuxQ+Xr3o|yMKuYNlLvkb{pU#2WD?~ zBGYeWZ%0*K`)+JV=?yq9mQz8{>_lF(W9ZV`mA}!SMaVC#$=1tM7@|cFNoXFdreaM`pLb+(F$Q ze>B*f@_LcqFZSm{DdF!9pF{Ix#-O94+Y0ILKWSXd=n;ho{_&_1Z@O}GMIQCsZ(kMNkak*`X#Liz>`ywbHbW6P-|E*A8}zZ6 zdq)1^MzeY+MeIUG3USGnd;&EgzB(6sClGT%SJDTLfzVJy!CfbUFR!ri<@60 zKDW_G+IFJ1J_i5uU*e=f0u;P*Hz^QnEw5UZQJuJ4)6>QFLQR>zNO)0JFbGv8l6N7( z08b0u2X#ydkvEM^mMbN$@^NwXxB*qMpPf|rdDY8u=%#dxDDVZdcbVp7sLnTEiOkg9iJ3bvU&ucA)9OVD4VYw^0c_hyI@0B`wfkEIS#?bM|Wm zQL%gzn7TxZiVKQeJ``!Lj<`ifY5cZk5*MeNKkn^xUcLqZ%03Bp*~+?g=vIyrMZkvV z9auJ9?S4H-OW6v&Hj@;4ze~P6GXO_*ae@SxxcflY;L#(DJ#-v@Qs12;?$kby`^VC` z-S*4$*{v*2r$3LrKrlP5BHhxljywOII6mt5PnZOK9Y}onx9OPcg{Gvw`mYVqniF_} z?bm>q5Whvfj}={4#GN>*X5V7BZ`BaY5)Oj^IId{N{LvkT7quz4w0_ObBKtD|w-yZj z^lLMcpwgZUJthWe?t3w^M@c7uSj@|8wGczeS&O=^iQ|(D)0VEBU$KLzlUf@dCi?^(wpMLM z3d(LHP5WC5NTTcGZgOedZ|-2v_80K1$*<%1Tj$Bv+{di}18<9ajUhYHd%Bp&(?He@ z;qFs_ZDspj@866MHd#VAA=Q_>>|V`(!(Jx&yTnHN#Fk{@G!1L!9$kd*|81&JS_zyi ze*W!}ehJBe^>gS(e*>a*bRpXFa|gq3$Uc0gK?k&LPnFe*dg`{F=$P1vM-Pb@JLpw{lt+b2bLfWj=+dzSS?Vr-+*_ zsxeV292|oggm6++u9hl?IO;WaqR>7?h$fh>{-r`3{*fwlbJ0qht(Adow_@+_OA`