From 1505b9171037fe42f984b17a01ec5ffb0c2563b4 Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Mon, 6 Oct 2025 21:04:15 -0700 Subject: [PATCH] FONT: mainly to copy the CHARENCODING and MCCS translation function in font replacement (But also now trailing some name changes in MULTI-ALIST that got out of step) --- sources/FONT | 225 ++++++++++++++++++++++++++++------------------ sources/FONT.LCOM | Bin 68767 -> 68984 bytes 2 files changed, 137 insertions(+), 88 deletions(-) diff --git a/sources/FONT b/sources/FONT index 7842e649..35f9f92e 100644 --- a/sources/FONT +++ b/sources/FONT @@ -1,12 +1,13 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "20-Sep-2025 09:39:57" {WMEDLEY}FONT.;603 281160 +(FILECREATED " 6-Oct-2025 17:57:39" {WMEDLEY}FONT.;613 284861 :EDIT-BY rmk - :CHANGES-TO (VARS NSFONTFAMILIES ALTOFONTFAMILIES) + :CHANGES-TO (FNS \CREATECHARSET.DISPLAY \COERCECHARSET COERCEFONTSPEC) + (VARS FONTCOMS NSFONTFAMILIES) - :PREVIOUS-DATE "10-Sep-2025 23:28:04" {WMEDLEY}FONT.;602) + :PREVIOUS-DATE "26-Sep-2025 10:10:37" {WMEDLEY}FONT.;608) (PRETTYCOMPRINT FONTCOMS) @@ -132,6 +133,12 @@ (PALATINO 12)) ((PALATINO (<= * 8)) (PALATINO 10)) + ((TITAN (<= * 9) + BOLD) + (MODERN 10)) + ((TITAN (<= * 9) + ITALIC) + (MODERN 10)) ((TITAN (<= * 9)) (TITAN 10)) (LPT AMTEX] @@ -146,6 +153,7 @@ (SIGMA MODERN) (SYMBOL MODERN) (TITAN CLASSIC) + (PALATINO CLASSIC) (OPTIMA MODERN) (BOLDPS CLASSIC) (PCTERMINAL) @@ -492,7 +500,7 @@ DEVICE NEWFONT)))) ) -(RPAQQ NSFONTFAMILIES (CLASSIC MODERN TERMINAL OPTIMA TITAN BOLDPS PCTERMINAL PALATINO)) +(RPAQQ NSFONTFAMILIES (CLASSIC MODERN TERMINAL OPTIMA TITAN BOLDPS PCTERMINAL)) (RPAQQ ALTOFONTFAMILIES (TIMESROMAN TIMESROMAND HELVETICA HELVETICAD CLARITY BRAVOX TONTO CREAM OLDENGLISH)) @@ -550,7 +558,8 @@ (GO RETRY]) (FONTCREATE1 - [LAMBDA (FONTSPEC CHARSET) (* ; "Edited 30-Aug-2025 23:13 by rmk") + [LAMBDA (FONTSPEC CHARSET) (* ; "Edited 25-Sep-2025 18:41 by rmk") + (* ; "Edited 30-Aug-2025 23:13 by rmk") (* ; "Edited 28-Aug-2025 14:32 by rmk") (* ; "Edited 26-Aug-2025 23:45 by rmk") (* ; "Edited 16-Aug-2025 18:55 by rmk") @@ -571,13 +580,13 @@ (DECLARE (GLOBALVARS \FONTSINCORE)) (CL:UNLESS CHARSET (SETQ CHARSET \DEFAULTCHARSET)) (LET (FONT) - (CL:WHEN (if (SETQ FONT (FETCHMULTI \FONTSINCORE FONTSPEC)) + (CL:WHEN (if (SETQ FONT (FETCHMULTI \FONTSINCORE FONTSPEC T)) elseif (AND (FONTEXISTS? FONTSPEC) (SETQ FONT (\CREATEFONT FONTSPEC))) then (* ;; "Storing stops internal charset recursions") - (STOREMULTI \FONTSINCORE FONTSPEC FONT)) + (STOREMULTI \FONTSINCORE FONTSPEC FONT T)) (* ;; "Even the cached font may not have had the requested charset.") @@ -989,7 +998,8 @@ (DEFINEQ (COERCEFONTSPEC - [LAMBDA (FONTSPEC COERCIONS) (* ; "Edited 28-Aug-2025 14:41 by rmk") + [LAMBDA (FONTSPEC COERCIONS) (* ; "Edited 5-Oct-2025 09:41 by rmk") + (* ; "Edited 28-Aug-2025 14:41 by rmk") (* ; "Edited 25-Aug-2025 10:22 by rmk") (* ; "Edited 17-Aug-2025 19:15 by rmk") (* ; "Edited 16-Aug-2025 17:47 by rmk") @@ -1011,7 +1021,8 @@ FAMILY) (COERCEFONTSPEC.MATCH (pop MATCH) SIZE) - (COERCEFONTSPEC.MATCH (pop MATCH) + (MATCHFONTFACE (\FONTFACE (OR (pop MATCH) + '*)) FACE) (COERCEFONTSPEC.MATCH (CAR MATCH) ROTATION) @@ -1625,7 +1636,8 @@ DESTFONT]) (\MOVEFONTCHAR - [LAMBDA (SOURCEDATA DCODE DFONT) (* ; "Edited 4-Sep-2025 12:37 by rmk") + [LAMBDA (SOURCEDATA DCODE DFONT) (* ; "Edited 25-Sep-2025 21:25 by rmk") + (* ; "Edited 4-Sep-2025 12:37 by rmk") (* ; "Edited 31-Aug-2025 14:36 by rmk") (* ; "Edited 28-Aug-2025 20:50 by rmk") (* ; "Edited 26-Aug-2025 22:25 by rmk") @@ -1645,9 +1657,9 @@ (LET ((DCSINFO (\INSURECHARSETINFO DFONT (\CHARSET DCODE))) (DTHINCODE (\CHAR8CODE DCODE)) DESCENT ASCENT TEMP) - (CL:WHEN [AND (FGETMULTI SOURCEDATA 'IMAGEWIDTHS) - (NEQ (FGETMULTI SOURCEDATA 'WIDTHS) - (FGETMULTI SOURCEDATA 'IMAGEWIDTHS)) + (CL:WHEN [AND (GETMULTI SOURCEDATA 'IMAGEWIDTHS) + (NEQ (GETMULTI SOURCEDATA 'WIDTHS) + (GETMULTI SOURCEDATA 'IMAGEWIDTHS)) (OR (EQ (ffetch (CHARSETINFO WIDTHS) of DCSINFO) (ffetch (CHARSETINFO IMAGEWIDTHS) of DCSINFO)) (NULL (ffetch (CHARSETINFO IMAGEWIDTHS) of DCSINFO] @@ -1657,7 +1669,7 @@ (replace (CHARSETINFO IMAGEWIDTHS) of DCSINFO with (\COPYARRAYBLOCK (ffetch (CHARSETINFO WIDTHS) of DCSINFO)))) - [if (FGETMULTI SOURCEDATA 'SLUG) + [if (GETMULTI SOURCEDATA 'SLUG) then (\MAKESLUGCHAR DTHINCODE DCSINFO) else (CL:WHEN (fetch (CHARSETINFO CSSLUGP) of DCSINFO) (* ; "No longer a slug csinfo") @@ -1665,18 +1677,18 @@ )) (\SETCHARSETINFO DFONT (\CHARSET DCODE) DCSINFO)) - (CL:WHEN (SETQ TEMP (FGETMULTI SOURCEDATA 'BITMAP)) - (\PUTCHARBITMAP.CSINFO DTHINCODE DCSINFO TEMP (FGETMULTI SOURCEDATA 'DESCENT)) + (CL:WHEN (SETQ TEMP (GETMULTI SOURCEDATA 'BITMAP)) + (\PUTCHARBITMAP.CSINFO DTHINCODE DCSINFO TEMP (GETMULTI SOURCEDATA 'DESCENT)) (UPDATEINFOELEMENT WIDTHS) (UPDATEINFOELEMENT IMAGEWIDTHS) (UPDATEINFOELEMENT YWIDTHS) - (CL:WHEN (FGETMULTI SOURCEDATA 'LEFTKERN) - (\FSETLEFTKERN DCSINFO DTHINCODE (FGETMULTI SOURCEDATA 'LEFTKERN))) + (CL:WHEN (GETMULTI SOURCEDATA 'LEFTKERN) + (\FSETLEFTKERN DCSINFO DTHINCODE (GETMULTI SOURCEDATA 'LEFTKERN))) (replace (CHARSETINFO CSSLUGP) of DCSINFO with NIL) (CHARSETPROP DCSINFO 'SOURCE (FONTPROP DFONT 'SPEC)))] - (SETQ DESCENT (IMAX (FGETMULTI SOURCEDATA 'DESCENT) + (SETQ DESCENT (IMAX (GETMULTI SOURCEDATA 'DESCENT) (fetch (CHARSETINFO CHARSETDESCENT) of DCSINFO))) - (SETQ ASCENT (IMAX (FGETMULTI SOURCEDATA 'ASCENT) + (SETQ ASCENT (IMAX (GETMULTI SOURCEDATA 'ASCENT) (fetch (CHARSETINFO CHARSETASCENT) of DCSINFO))) (replace (CHARSETINFO CHARSETDESCENT) of DCSINFO with DESCENT) (replace (CHARSETINFO CHARSETASCENT) of DCSINFO with ASCENT) @@ -1834,7 +1846,7 @@ (PUTPROPS UPDATEINFOELEMENT MACRO [(FIELD) (LET [(DBLOCK (ffetch (CHARSETINFO FIELD) of DCSINFO)) - (NEWVAL (FGETMULTI SOURCEDATA 'FIELD] + (NEWVAL (GETMULTI SOURCEDATA 'FIELD] (CL:WHEN NEWVAL (CL:UNLESS DBLOCK (SETQ DBLOCK (\CREATECSINFOELEMENT)) @@ -2372,7 +2384,8 @@ (SHOULDNT]) (\COERCECHARSET - [LAMBDA (FONTSPEC CHARSET CODE COERCIONS) (* ; "Edited 31-Aug-2025 00:00 by rmk") + [LAMBDA (FONTSPEC CHARSET CODE COERCIONS FONT) (* ; "Edited 6-Oct-2025 17:56 by rmk") + (* ; "Edited 31-Aug-2025 00:00 by rmk") (* ; "Edited 28-Aug-2025 23:07 by rmk") (* ; "Edited 27-Aug-2025 17:08 by rmk") (* ; "Edited 16-Aug-2025 17:48 by rmk") @@ -2394,7 +2407,14 @@ (for CFS CFONT CSINFO in (COERCEFONTSPEC FONTSPEC COERCIONS) when (AND (SETQ CFONT (FONTCREATE1 CFS CHARSET)) (SETQ CSINFO (\INSURECHARSETINFO CFONT CHARSET))) - unless (AND CODE (SLUGCHARP.DISPLAY CODE CFONT)) do (RETURN (LIST CFONT CSINFO]) + unless (AND CODE (SLUGCHARP.DISPLAY CODE CFONT)) + do (CL:WHEN FONT + (replace (FONTDESCRIPTOR FONTCHARENCODING) of FONT with (fetch (FONTDESCRIPTOR + FONTCHARENCODING) + of CFONT)) + (replace (FONTDESCRIPTOR FONTTOMCCSFN) of FONT with (fetch (FONTDESCRIPTOR FONTTOMCCSFN + ) of CFONT))) + (RETURN (LIST CFONT CSINFO]) (\BUILDSLUGCSINFO [LAMBDA (FONT SLUGWIDTH) (* ; "Edited 17-Aug-2025 12:46 by rmk") @@ -2749,7 +2769,8 @@ (DEFINEQ (FONTSAVAILABLE - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHECKFILESTOO?) (* ; "Edited 30-Aug-2025 13:55 by rmk") + [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHECKFILESTOO?) (* ; "Edited 25-Sep-2025 18:39 by rmk") + (* ; "Edited 30-Aug-2025 13:55 by rmk") (* ; "Edited 28-Aug-2025 14:43 by rmk") (* ; "Edited 23-Aug-2025 10:51 by rmk") (* ; "Edited 15-Aug-2025 12:18 by rmk") @@ -2807,7 +2828,8 @@ (APPLY* FN FAMILY SIZE FACE ROTATION DEVICE))))]) (FONTEXISTS? - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE NOCOERCIONS) (* ; "Edited 28-Aug-2025 22:16 by rmk") + [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE NOCOERCIONS) (* ; "Edited 26-Sep-2025 10:10 by rmk") + (* ; "Edited 28-Aug-2025 22:16 by rmk") (* ; "Edited 23-Aug-2025 12:45 by rmk") (* ; "Edited 16-Aug-2025 17:49 by rmk") (* ; "Edited 12-Aug-2025 21:04 by rmk") @@ -2827,9 +2849,9 @@ (* ;;  "FAMILY was a font descriptor, unmodified by other args: record that it exists") - (STOREMULTI \FONTEXISTS?-CACHE FONTSPEC) - else (if (FETCHMULTI \FONTSINCORE FONTSPEC) - elseif (SETQ VAL (FETCHMULTI \FONTEXISTS?-CACHE FONTSPEC)) + (STOREMULTI \FONTEXISTS?-CACHE FONTSPEC T) + else (if (FETCHMULTI \FONTSINCORE FONTSPEC T) + elseif (SETQ VAL (FETCHMULTI \FONTEXISTS?-CACHE FONTSPEC T)) then (CL:UNLESS (EQ VAL 'NO) VAL) else (* ; @@ -2848,7 +2870,7 @@ (FUNCTION TRUE)) FONTSPEC))) (if VAL - then (STOREMULTI \FONTEXISTS?-CACHE FONTSPEC VAL) + then (STOREMULTI \FONTEXISTS?-CACHE FONTSPEC VAL T) elseif [AND (NOT NOCOERCIONS) (find FS in (COERCEFONTSPEC FONTSPEC (FONTDEVICEPROP DEVICE @@ -2857,8 +2879,8 @@ then (* ;; "It's coerceable...but not yet coerced.") - (STOREMULTI \FONTEXISTS?-CACHE FONTSPEC VAL) - else (STOREMULTI \FONTEXISTS?-CACHE FONTSPEC 'NO) + (STOREMULTI \FONTEXISTS?-CACHE FONTSPEC VAL T) + else (STOREMULTI \FONTEXISTS?-CACHE FONTSPEC 'NO T) NIL]) (\SEARCHFONTFILES @@ -2905,19 +2927,21 @@ do (push FONTSFOUND THISFONT))) finally (RETURN (DREVERSE FONTSFOUND]) (FLUSHFONTSINCORE - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE) (* ; "Edited 4-Sep-2025 10:14 by rmk") + [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE) (* ; "Edited 26-Sep-2025 10:04 by rmk") + (* ; "Edited 4-Sep-2025 10:14 by rmk") (* ; "Edited 28-Aug-2025 14:44 by rmk") (* ; "Edited 18-Aug-2025 00:33 by rmk") (* ; "Edited 12-Aug-2025 21:07 by rmk") (* ; "Edited 21-Jul-2025 08:59 by rmk") (* ; "Edited 21-Jun-2025 11:19 by rmk") (DECLARE (SPECVARS . T) - (GLOBALVARS \FONTSINCORE)) + (GLOBALVARS \FONTSINCORE \FONTEXISTS?-CACHE)) (SPREADFONTSPEC (\FONT.CHECKARGS FAMILY SIZE FACE ROTATION DEVICE)) - (LET ((NFLUSHED 0)) - (DECLARE (SPECVARS NFLUSHED)) + (LET ((INCOREFLUSHED 0) + (EXISTSFLUSHED 0)) + (DECLARE (SPECVARS INCOREFLUSHED EXISTSFLUSHED)) [MAPMULTI \FONTSINCORE (FUNCTION (LAMBDA (FM S FC R DPAIR) - (CL:WHEN [AND (OR (EQ FAMILY FM) + (CL:WHEN (AND (OR (EQ FAMILY FM) (EQ FAMILY '*)) (OR (EQ SIZE S) (EQ SIZE '*)) @@ -2925,10 +2949,24 @@ (OR (EQ ROTATION R) (EQ ROTATION '*)) (OR (EQ DEVICE (CAR DPAIR)) - (EQ DEVICE '*] - (ADD NFLUSHED 1) + (EQ DEVICE '*)) + (CDR DPAIR)) + (ADD INCOREFLUSHED 1) (RPLACD DPAIR))] - (LIST NFLUSHED 'flushed]) + [MAPMULTI \FONTEXISTS?-CACHE (FUNCTION (LAMBDA (FM S FC R DPAIR) + (CL:WHEN (AND (OR (EQ FAMILY FM) + (EQ FAMILY '*)) + (OR (EQ SIZE S) + (EQ SIZE '*)) + (MATCHFONTFACE FACE FC) + (OR (EQ ROTATION R) + (EQ ROTATION '*)) + (OR (EQ DEVICE (CAR DPAIR)) + (EQ DEVICE '*)) + (CDR DPAIR)) + (ADD EXISTSFLUSHED 1) + (RPLACD DPAIR))] + (LIST INCOREFLUSHED EXISTSFLUSHED]) (FINDFONTFILES [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE DIRLST EXTLST) (* ; "Edited 28-Aug-2025 14:45 by rmk") @@ -3549,7 +3587,8 @@ INDEX KERNVALUE]) (\FGETLEFTKERN - [LAMBDA (FONT PREVCHARCODE CHARCODE) (* ; "Edited 30-Aug-2025 23:29 by rmk") + [LAMBDA (FONT PREVCHARCODE CHARCODE) (* ; "Edited 25-Sep-2025 21:25 by rmk") + (* ; "Edited 30-Aug-2025 23:29 by rmk") (* ; "Edited 8-Jul-2025 22:15 by rmk") (* ; "Edited 22-May-2025 09:53 by rmk") (* ; "Edited 18-May-2025 21:30 by rmk") @@ -3568,14 +3607,15 @@ ))) (\CHAR8CODE PREVCHARCODE] (OR (FIXP KERN) - (FGETMULTI (LISTP KERN) + (GETMULTI (LISTP KERN) CHARCODE) 0]) ) (DEFINEQ (\CREATEFONT - [LAMBDA (FONTSPEC) (* ; "Edited 28-Aug-2025 14:30 by rmk") + [LAMBDA (FONTSPEC) (* ; "Edited 25-Sep-2025 21:24 by rmk") + (* ; "Edited 28-Aug-2025 14:30 by rmk") (* ; "Edited 18-Aug-2025 00:17 by rmk") (* ; "Edited 16-Aug-2025 20:52 by rmk") (* ; "Edited 12-Aug-2025 23:36 by rmk") @@ -3586,7 +3626,7 @@ (* ;; "") - (LET [(FN (CAR (FGETMULTI IMAGESTREAMTYPES (fetch (FONTSPEC FSDEVICE) of FONTSPEC) + (LET [(FN (CAR (GETMULTI IMAGESTREAMTYPES (fetch (FONTSPEC FSDEVICE) of FONTSPEC) 'FONTCREATE] (CL:WHEN FN (if (EQ (NARGS FN) @@ -3596,7 +3636,8 @@ (APPLY FN FONTSPEC)))]) (\CREATECHARSET - [LAMBDA (CHARSET FONT) (* ; "Edited 2-Sep-2025 22:59 by rmk") + [LAMBDA (CHARSET FONT) (* ; "Edited 25-Sep-2025 21:24 by rmk") + (* ; "Edited 2-Sep-2025 22:59 by rmk") (* ; "Edited 31-Aug-2025 14:36 by rmk") (* ; "Edited 28-Aug-2025 14:31 by rmk") (* ; "Edited 27-Aug-2025 12:55 by rmk") @@ -3624,9 +3665,9 @@ (\ILLEGAL.ARG CHARSET)) (LET [(CSINFO (if (fetch (FONTDESCRIPTOR FONTCOMPLETEP) of FONT) then (\GETCHARSETINFO FONT CHARSET) - else (APPLY* (OR (CAR (FGETMULTI IMAGESTREAMTYPES (fetch (FONTDESCRIPTOR - FONTDEVICE) - of FONT) + else (APPLY* (OR (CAR (GETMULTI IMAGESTREAMTYPES (fetch (FONTDESCRIPTOR + FONTDEVICE) + of FONT) 'CREATECHARSET)) (FUNCTION \READCHARSET)) (create FONTSPEC using (FONTPROP FONT 'DEVICESPEC)) @@ -3786,7 +3827,8 @@ FONTDEVICESPEC _ (create FONTSPEC using FONTSPEC]) (\CREATECHARSET.DISPLAY - [LAMBDA (FONTSPEC FONT CHARSET) (* ; "Edited 2-Sep-2025 23:42 by rmk") + [LAMBDA (FONTSPEC FONT CHARSET) (* ; "Edited 6-Oct-2025 17:56 by rmk") + (* ; "Edited 2-Sep-2025 23:42 by rmk") (* ; "Edited 30-Aug-2025 19:42 by rmk") (* ; "Edited 28-Aug-2025 23:08 by rmk") (* ; "Edited 26-Aug-2025 23:29 by rmk") @@ -3821,7 +3863,7 @@  "If no COERCIONS, skip that first \COERCECHARSET call--easier debugging of the other cases.") (SETQ CSINFO (if (AND (FONTDEVICEPROP 'DISPLAY 'FONTCOERCIONS) - (CADR (\COERCECHARSET FONTSPEC CHARSET))) + (CADR (\COERCECHARSET FONTSPEC CHARSET NIL 'FONTCOERCIONS FONT))) elseif [SETQ CSINFO (OR (\READCHARSET FONTSPEC CHARSET FONT) (CADR (\COERCECHARSET FONTSPEC CHARSET NIL 'CHARCOERCIONS] @@ -4494,6 +4536,12 @@ (PALATINO 12)) ((PALATINO (<= * 8)) (PALATINO 10)) + ((TITAN (<= * 9) + BOLD) + (MODERN 10)) + ((TITAN (<= * 9) + ITALIC) + (MODERN 10)) ((TITAN (<= * 9)) (TITAN 10)) (LPT AMTEX))) @@ -4510,6 +4558,7 @@ (SIGMA MODERN) (SYMBOL MODERN) (TITAN CLASSIC) + (PALATINO CLASSIC) (OPTIMA MODERN) (BOLDPS CLASSIC) (PCTERMINAL) @@ -4576,43 +4625,43 @@ (ADDTOVAR LAMA FONTCOPY) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (11690 21403 (CHARWIDTH 11700 . 12485) (CHARWIDTHY 12487 . 14004) (STRINGWIDTH 14006 . -15099) (\CHARWIDTH.DISPLAY 15101 . 15514) (\STRINGWIDTH.DISPLAY 15516 . 15940) (\STRINGWIDTH.GENERIC -15942 . 21401)) (21404 27924 (DEFAULTFONT 21414 . 22699) (FONTCLASS 22701 . 24863) (FONTCLASSUNPARSE -24865 . 25764) (FONTCLASSCOMPONENT 25766 . 26354) (SETFONTCLASSCOMPONENT 26356 . 26798) ( -GETFONTCLASSCOMPONENT 26800 . 27922)) (29612 53880 (FONTCREATE 29622 . 32867) (FONTCREATE1 32869 . -35371) (FONTCREATE.SLUGFD 35373 . 36855) (\FONT.CHECKARGS 36857 . 43447) (\FONT.CHECKARGS1 43449 . -47972) (\FONTCREATE1.NOFN 47974 . 48188) (FONTFILEP 48190 . 49078) (\READCHARSET 49080 . 53878)) ( -53881 60798 (\FONT.CHECKARGS 53891 . 60481) (\CHARSET.CHECK 60483 . 60796)) (60799 63705 ( -COERCEFONTSPEC 60809 . 63703)) (65775 66565 (MAKEFONTSPEC 65785 . 66563)) (66566 73231 (COMPLETE.FONT -66576 . 68990) (COMPLETEFONTP 68992 . 69615) (COMPLETE.CHARSET 69617 . 72302) (PRUNESLUGCSINFOS 72304 - . 73229)) (73270 81191 (FONTASCENT 73280 . 73664) (FONTDESCENT 73666 . 74151) (FONTHEIGHT 74153 . -74555) (FONTPROP 74557 . 80468) (\AVGCHARWIDTH 80470 . 81189)) (81848 82756 (FONTDEVICEPROP 81858 . -82754)) (82802 83656 (EDITCHAR 82812 . 83654)) (83702 95892 (GETCHARBITMAP 83712 . 84836) ( -PUTCHARBITMAP 84838 . 86996) (\GETCHARBITMAP.CSINFO 86998 . 89014) (\PUTCHARBITMAP.CSINFO 89016 . -95890)) (95893 116274 (MOVECHARBITMAP 95903 . 97797) (MOVEFONTCHARS 97799 . 101759) (\MOVEFONTCHAR -101761 . 106505) (\MOVEFONTCHARS.SOURCEDATA 106507 . 112612) (\MAKESLUGCHAR 112614 . 115149) ( -SLUGCHARP.DISPLAY 115151 . 116272)) (117208 137225 (FONTFILES 117218 . 119051) (\FINDFONTFILE 119053 - . 120770) (\FONTFILENAMES 120772 . 121646) (\FONTFILENAME 121648 . 125631) (\FONTFILENAME.OLD 125633 - . 128582) (\FONTFILENAME.NEW 128584 . 130841) (FONTSPECFROMFILENAME 130843 . 134944) ( -\FONTINFOFROMFILENAME.OLD 134946 . 137223)) (137492 172639 (FONTCOPY 137502 . 142565) (FONTP 142567 . -142866) (FONTUNPARSE 142868 . 144587) (SETFONTDESCRIPTOR 144589 . 146053) (\STREAMCHARWIDTH 146055 . -150219) (\COERCECHARSET 150221 . 152160) (\BUILDSLUGCSINFO 152162 . 155785) (\FONTSYMBOL 155787 . -156437) (\DEVICESYMBOL 156439 . 157308) (\FONTFACE 157310 . 164500) (\FONTFACE.COLOR 164502 . 171422) -(SETFONTCHARENCODING 171424 . 172637)) (172640 191625 (FONTSAVAILABLE 172650 . 177396) (FONTEXISTS? -177398 . 181255) (\SEARCHFONTFILES 181257 . 184342) (FLUSHFONTSINCORE 184344 . 186181) (FINDFONTFILES -186183 . 189397) (SORTFONTSPECS 189399 . 191623)) (191626 195049 (MATCHFONTFACE 191636 . 192451) ( -MAKEFONTFACE 192453 . 193293) (FONTFACETOATOM 193295 . 195047)) (195277 195769 (\UNITWIDTHSVECTOR -195287 . 195767)) (211369 213436 (FONTDESCRIPTOR.DEFPRINT 211379 . 212958) (FONTCLASS.DEFPRINT 212960 - . 213434)) (217265 219947 (\CREATEKERNELEMENT 217275 . 217633) (\FSETLEFTKERN 217635 . 218126) ( -\FGETLEFTKERN 218128 . 219945)) (219948 229370 (\CREATEFONT 219958 . 221289) (\CREATECHARSET 221291 . -225121) (\INSTALLCHARSETINFO 225123 . 228457) (\INSTALLCHARSETINFO.CHARENCODING 228459 . 229368)) ( -229692 231056 (\FONTRESETCHARWIDTHS 229702 . 231054)) (231686 241600 (\CREATEDISPLAYFONT 231696 . -233545) (\CREATECHARSET.DISPLAY 233547 . 239123) (\FONTEXISTS?.DISPLAY 239125 . 241598)) (241601 -256466 (STRIKEFONT.FILEP 241611 . 242499) (STRIKEFONT.GETCHARSET 242501 . 248093) (WRITESTRIKEFONTFILE - 248095 . 253006) (STRIKECSINFO 253008 . 256464)) (256497 272814 (MAKEBOLD.CHARSET 256507 . 260156) ( -MAKEBOLD.CHAR 260158 . 261910) (MAKEITALIC.CHARSET 261912 . 265585) (MAKEITALIC.CHAR 265587 . 267933) -(\SFMAKEBOLD 267935 . 270159) (\SFMAKEITALIC 270161 . 272812)) (272815 276964 (\SFMAKEROTATEDFONT -272825 . 274226) (\SFROTATECSINFO 274228 . 274865) (\SFROTATEFONTCHARACTERS 274867 . 275247) ( -\SFROTATECSINFOOFFSETS 275249 . 276962)) (276965 278346 (\SFMAKECOLOR 276975 . 278344))))) + (FILEMAP (NIL (12161 21874 (CHARWIDTH 12171 . 12956) (CHARWIDTHY 12958 . 14475) (STRINGWIDTH 14477 . +15570) (\CHARWIDTH.DISPLAY 15572 . 15985) (\STRINGWIDTH.DISPLAY 15987 . 16411) (\STRINGWIDTH.GENERIC +16413 . 21872)) (21875 28395 (DEFAULTFONT 21885 . 23170) (FONTCLASS 23172 . 25334) (FONTCLASSUNPARSE +25336 . 26235) (FONTCLASSCOMPONENT 26237 . 26825) (SETFONTCLASSCOMPONENT 26827 . 27269) ( +GETFONTCLASSCOMPONENT 27271 . 28393)) (30074 54455 (FONTCREATE 30084 . 33329) (FONTCREATE1 33331 . +35946) (FONTCREATE.SLUGFD 35948 . 37430) (\FONT.CHECKARGS 37432 . 44022) (\FONT.CHECKARGS1 44024 . +48547) (\FONTCREATE1.NOFN 48549 . 48763) (FONTFILEP 48765 . 49653) (\READCHARSET 49655 . 54453)) ( +54456 61373 (\FONT.CHECKARGS 54466 . 61056) (\CHARSET.CHECK 61058 . 61371)) (61374 64457 ( +COERCEFONTSPEC 61384 . 64455)) (66527 67317 (MAKEFONTSPEC 66537 . 67315)) (67318 73983 (COMPLETE.FONT +67328 . 69742) (COMPLETEFONTP 69744 . 70367) (COMPLETE.CHARSET 70369 . 73054) (PRUNESLUGCSINFOS 73056 + . 73981)) (74022 81943 (FONTASCENT 74032 . 74416) (FONTDESCENT 74418 . 74903) (FONTHEIGHT 74905 . +75307) (FONTPROP 75309 . 81220) (\AVGCHARWIDTH 81222 . 81941)) (82600 83508 (FONTDEVICEPROP 82610 . +83506)) (83554 84408 (EDITCHAR 83564 . 84406)) (84454 96644 (GETCHARBITMAP 84464 . 85588) ( +PUTCHARBITMAP 85590 . 87748) (\GETCHARBITMAP.CSINFO 87750 . 89766) (\PUTCHARBITMAP.CSINFO 89768 . +96642)) (96645 117125 (MOVECHARBITMAP 96655 . 98549) (MOVEFONTCHARS 98551 . 102511) (\MOVEFONTCHAR +102513 . 107356) (\MOVEFONTCHARS.SOURCEDATA 107358 . 113463) (\MAKESLUGCHAR 113465 . 116000) ( +SLUGCHARP.DISPLAY 116002 . 117123)) (118058 138075 (FONTFILES 118068 . 119901) (\FINDFONTFILE 119903 + . 121620) (\FONTFILENAMES 121622 . 122496) (\FONTFILENAME 122498 . 126481) (\FONTFILENAME.OLD 126483 + . 129432) (\FONTFILENAME.NEW 129434 . 131691) (FONTSPECFROMFILENAME 131693 . 135794) ( +\FONTINFOFROMFILENAME.OLD 135796 . 138073)) (138342 174145 (FONTCOPY 138352 . 143415) (FONTP 143417 . +143716) (FONTUNPARSE 143718 . 145437) (SETFONTDESCRIPTOR 145439 . 146903) (\STREAMCHARWIDTH 146905 . +151069) (\COERCECHARSET 151071 . 153666) (\BUILDSLUGCSINFO 153668 . 157291) (\FONTSYMBOL 157293 . +157943) (\DEVICESYMBOL 157945 . 158814) (\FONTFACE 158816 . 166006) (\FONTFACE.COLOR 166008 . 172928) +(SETFONTCHARENCODING 172930 . 174143)) (174146 194697 (FONTSAVAILABLE 174156 . 179011) (FONTEXISTS? +179013 . 182991) (\SEARCHFONTFILES 182993 . 186078) (FLUSHFONTSINCORE 186080 . 189253) (FINDFONTFILES +189255 . 192469) (SORTFONTSPECS 192471 . 194695)) (194698 198121 (MATCHFONTFACE 194708 . 195523) ( +MAKEFONTFACE 195525 . 196365) (FONTFACETOATOM 196367 . 198119)) (198349 198841 (\UNITWIDTHSVECTOR +198359 . 198839)) (214441 216508 (FONTDESCRIPTOR.DEFPRINT 214451 . 216030) (FONTCLASS.DEFPRINT 216032 + . 216506)) (220337 223127 (\CREATEKERNELEMENT 220347 . 220705) (\FSETLEFTKERN 220707 . 221198) ( +\FGETLEFTKERN 221200 . 223125)) (223128 232764 (\CREATEFONT 223138 . 224577) (\CREATECHARSET 224579 . +228515) (\INSTALLCHARSETINFO 228517 . 231851) (\INSTALLCHARSETINFO.CHARENCODING 231853 . 232762)) ( +233086 234450 (\FONTRESETCHARWIDTHS 233096 . 234448)) (235080 245127 (\CREATEDISPLAYFONT 235090 . +236939) (\CREATECHARSET.DISPLAY 236941 . 242650) (\FONTEXISTS?.DISPLAY 242652 . 245125)) (245128 +259993 (STRIKEFONT.FILEP 245138 . 246026) (STRIKEFONT.GETCHARSET 246028 . 251620) (WRITESTRIKEFONTFILE + 251622 . 256533) (STRIKECSINFO 256535 . 259991)) (260024 276341 (MAKEBOLD.CHARSET 260034 . 263683) ( +MAKEBOLD.CHAR 263685 . 265437) (MAKEITALIC.CHARSET 265439 . 269112) (MAKEITALIC.CHAR 269114 . 271460) +(\SFMAKEBOLD 271462 . 273686) (\SFMAKEITALIC 273688 . 276339)) (276342 280491 (\SFMAKEROTATEDFONT +276352 . 277753) (\SFROTATECSINFO 277755 . 278392) (\SFROTATEFONTCHARACTERS 278394 . 278774) ( +\SFROTATECSINFOOFFSETS 278776 . 280489)) (280492 281873 (\SFMAKECOLOR 280502 . 281871))))) STOP diff --git a/sources/FONT.LCOM b/sources/FONT.LCOM index e22513ac78b4711f4a77728a80da34476fbb95d2..278fb93e9d407fbc825343b4044e4fc28899c66a 100644 GIT binary patch delta 7531 zcma)BeQaCTb?1AOWJ$4UN~URvmgQ?!QS=eZ?~@;j)98tOGN1VIXg;~*&-v_Y{IizJ%q65D0lplH*=T?=%LyAAW44%<)!n36xT zVMEiMd+&SVqa0upZ0X)}&pr3+oZtC)Uwyvqzb?1^c`1M*2hB5&9h3w~MPhVPjZP}U zGb`gEQ65FzVI((4C23MrCKdUa)xAgE^ofayFseNG*x3sD2!2%xk9LpD7#TfL(6yqT z1g1Ndl;e1S+uJ3|NQx=3h=`}Sz15kVg}N8ntVBvHSbA|HX;}G;wtyBBrd~+sHW{(r zjF~H1c|9?TMvehHBK?G!wNTC?%^59gWDMOJMU(l0e#|iEtb<9|5gb#B9JJ0pVqbzV zDGHNv6m~Sg#cFSImwJ6@+RP+DY}QQbh1{h_I=P@98AUB)kj0wR0N0J@1IbH2?S#4A zmwwa9?Z-C*vs+tiz6%P+5a-qtFgAkB@-jj0aOc#B^h zv`No9q>eAzW1T^MzEYucFRpnmH&RO##=E?OPM%+1apb*VPfi8+)${feQ!|t+73f$! zsW~*8)V4Z1byZtTvrTjc>-*AgWR^m+c0cqwYZ-yghJinMP^rQV>xF_@K$0XmEinR0 zmP=?w6pL@Uj#$Kf9nqFvL~xHOs=Fsg5$GYgLaAj=S&ShgSJVsks1S3_ipP;-12OV$ z$BcxIB8(%cTZw{^FT&1Mw?rlC5+KL$vlGf5Sw`WUSwvcMD2yZ#|MNtM6Kel6aha#9QWRTI1vO1eHAn4 zk`OEpG|WDbFt8~h)UZ2dh)4)=l}f6=!TYB#uKn&9e)j%_s$$y$H4YRN1(dY%#EwuT zt}qK^mX}A7Xw258NK|&TNp;?y2~dTI&7%sU!z0C`D640u!KmG)h`_|F)W+Eg#f7|% zz|vi$JW?gJ$h5>-$O4KXMIlgNmwO1qVIjX9+%DbXli zo9eq?aqfn$qA0eNvYzBNAw^W&fQJ+zMkII@K(e)|{;{~*cI3F&!Ys#Rd;4-ULfH98 zocx)Huq$HMA;UAcFcrzF=sujR;MJ)R52gq+t6++o=Rq=TwPmK*GBKCX#|M1}+lfISvivAoHXr`< zgXfkj5S4%ih0&SwpM2!}!)G6U4E_H3KY+dh>cAKsJ|!-ou(RS;b}?F8oBnz`C*uc< zL7m!|WlTA)(+@aw73 zlkC7GxUJq26MgSAM z!`6U_d#|t4!1&6cFn;d9>1PTvVT*x;CS+kyCkeC=FG;L5{|blKOSLdt%}Tlj+Y{ig3b#8>1P z(ECEya~)N(U^d`uWVw>`(8eot*6NTsTq%8=9_=|M=;=~~cAupTPng5~ut?Beq|b3E zu*f}Tkhmn`P;8gv3$?f;AGjpWpa+Ftuzo+2;yT6Iba~Jgjm$xNw?yb@;cc1Ossfg8>#LEQF_8k8*3t*3 z=kCjZBQ1TvIm?`bcpu3T@QN%KprT~(8qSc^Dpe*S8)2>L5NgA+5&(sJu0#Si*g4pW zM2)4W&lkbAVrV{*u!aC6<0uO)fJboGu0qDwF_CLgS&wL()v306Koa_^}mqivi$Y>HmYg#S8Pyrb7xjFdcGuWRORP zWQSRH1j^HnMA_jc{)lo*fTUEABtt_hCQ=NC-~oxNS#)~%*T?h@NfOW)!Xu@L6KIMx$ol>Ck}DHho3wVg=FW4 zC+^|Cf&b&gA>n*x_$s+t5tLy|swqM=ZDr<;kmt=i`6ymkyr&nywM7fS66U zIRO9{%tq$W7Ck^uBEHge6jx|3`NLbXLs4 z_g-$8gU6kn*kj#g1Y?MdA^e9I(Ec!V!=xL2BR$RLcY^1tm_vj(gkQTbR8SzGA({)0 zJC9_D$roq9<7V`kVj7A95aWSnYnhChn1=spfE!5E-F?8$mcFRs#-H?&2t8ru7l0FT zdjTyH`*joyL9UI@fBNof1pGN!+ZCTjAdBBhvZFN@mm0f+OSJ<_zu0g`)2ffb2pItDQq#UW)2ZYyvZEtBAUEq#bUZCqEtf~)Q^88YzZ ztwU1P>;Skdl#FCC1)vRpKr&FF6d}H!Hi}sdA}u?dcHIlHf3h?Q-lz{D z)fe|(L~v!~v7ijndV{bn_v%r>Sv(@tPX5uG+iC|s=iLs~9_|-@Pi^YY9^g7ZQ(HMr zj01n+%NN6-D&%dQoDE6<%;`?(N9O>6vd#>HGj7acAmRX=>KVqd|G@#CNIZz}-Vw#**I0DrvV!CDq>bJ!#)Cdhy z@uSz1FYEvy1fzi*yNFa3f2lTH1>0P-bgf{!dD8XB9mfi$222Dik48O zWUtdCX@UTYi4aV-D2fR1Wacsp2%v|;OUx;N4Qy7xpt|NNgwQo{_{#BJ=iv%kp5vJ= z{PdN5hnAP9NA=UYOf6GC#n-)`U*pDFNDGAKc?$o-mC33|uYcBc{rz`PSoC%+wF2qN zLS=nCb)B-;cVxMx&=Rw^tg*}%r?WSp0Qxz@uh)*HW+{O_8vS+3TOVFp|9A@AH%KXa zJawPxZ^|+Kjv%h=gCbkSF0w5=XZmV4mREn2<5$7q_L9kTZm(-D3s2ZamOwk?2<~|; za0-eg#1`~gqM5Cq;1b;jk1Ax5+P!~s%G<&43O{*uygldX0DL;KCi%FHZx-46UGXP*{GV5i zcA~x#PFONxgG5qtd?ee#N zn1Oow6QAE*yLIz@{)EWG_mSy`Hm=;uj`CxV2Ri#%k=%Vms9yB&T*?Rx7=90AL){~g z^0<8q$upYSCCMD`|Hr*v?qhi2*8Uyq{ZrFROx%uk{P?Zk^0651x!qTlpoB_7OZL@j z!a0isffgZ?4_uo>5yG}a%E&=Q$>t*;lwv5YNeEIX@Ur8<(B*k^5T}uR%CqY_T7`al=Y;jFgl8R{JZh@ qFYc=S#XIlc{Slx3cK3FVZvFW8ZTKX(himz+m*l#?{oO9^7XQDQt7*yr delta 7627 zcmb7JeQaCTb?1AO6kE0#N}*|qmZck6mL=Ji-zUFpCwwBG%qM<4nvXIiTQ2Q{N$A+M zv)Rsub^%udMbT|tlU%f}(Akb zbZxV9?|n~vl=sgBTe|0doO|y%=l;&e`}Ip5e|5Fv`Eo!K_E}FnvriHv6$!Dp9E+=w z7tZVn3Gz7V9$q&ph;dbXVR8ErcmL$%W zsbm_?s+Ukq#@b+dT0wBtR7so4>IEc*C1m8Z!@60pkf^H2D#2(DiBcGmJyN=rEE6WifZ-yu?r$BdN+|q%r#Z#KSxzp9Lm`|)| zC$j7)8|Y@sJF>TPwNS?H3%$u&Gl31w8T`>crLM$~UMzydBw2D=AkL(jPiiG3Mr21u zF6=UL0GHFHIsBjylif*|oGO8DfIuS8!PBdt_4psehYytI&NYqykI~#VGVMn5LfQ|O_Z4C`hHWy(pyPA+ zqXU`3igBXauKtI!6<-q!!1Os5@Rr@og9+rhYIUZ+$@`5mqT2wc?g+t_H>0{4TB0W)?FRaS02N9N{ZVF`7dMsfUPYpeCKS;PDvBt! zPX;x!22M5} z$x@_kOlm_$De6Wc3FOtfzodfnTHX>#N^7)k0XVN?3|7kSD2Z+rNnizSYy=n90nEnS zdJ(|^x+jYuA?GHdeP?1$jZ4MV<0gHvE7=BwEDqayN&|p zj>52N7@fX=PIsSs_SD(a)nVwue>xQqRY|Z%oBX1cKKF0f7;Z=d%!i9NBkN%g*YgSHSP3$4{_> zTLnD{p$+KS2~>cH(q$9yD0GN*iaB5gy)hbL5h<*NT+;~jwtipe6ya!tb!af9!)jSZ z?cv%u;{Blw9&nAdDBCg<)5bcxy2uG zm9ge|0_sL<(y>}7RE~xok2ZV!!INaLQa%_uO{bL~3H5mU&B=|VyO%{7H#^L|z1(X{ z++}l&=ed=ca=4s0>&-ssJ8p+VT+NO$e0S)Q9CKWai)DqYOf)n2)bWSx=DAZi#KjSFqFSD!)4$xLU0*E6DfuNzea4*VZ)PfeY^)M;e29A2-5nn`ni0zAf zp*COS17E}$^fvStFzc$5yS?kH3^1nVfPLE2naZ%e&xkq9T+-S;!xhvtM_?ah4}^&G zVuU#ufPDr*LGX_!|Jg75xATV&k)Qr%oe8TPe$U@r`u*e#Jy_Emk#$|U(gUd!oVRbgkU6ctd8`7G6L1OW1F zo+1QKtckysnW?M9O|mH5$WNO{0SDPe0~WQ>5Iwiiu--Cfix8E`fGAEAHgV6A!OOML z04|hEb?*Yu4AeyLd}!|EB9XF2~>L>Dgw6@X6Ay#$4$# zSHG7TJ+}BO&sZ4zHIcJkL}4+Ca#}_w@1KH(8djL-RXC^);DS_u2&xq&W)CS*dq`28 zp|v@{kFJuP$+E*xRveD9Gn+UbI$MfLw!$IwW<8)jvMc`TQ62xs(aAb&HI_HBXkr{r zq^z|S@cmA|0PvWY-)i5^>gc(A`bPx$+!Pky-?v9Q`|-c`{HMQXbtqwjSCGFEPrOCpCm-Y!5Jl6r z>BF5DcJ?JIew+3O`Kv~ng2xi~B0g|IttTqI_F!+2UjWF=8tH5T5Q%XJ1o_Pbe46QZ zJqZ9V)*B4+l~5Bf&J5kyW%ezH&VGE>`{9`n?@?fY{oh!s@|52f!1oMs)RtgoAVDFsvSJRz?7QVC#|fi$`Gb2#Lc-VDTs{ zPJlaMhaLkdZA%*ofOpn05#%>fWNoG?LO%T+a?gsuhAWaOtV2|xGTAgGK-9@KMBUr8 z33D$&)Vo4m8B5^h$_@Go9#n&D%Kp-R-A5nY?nU5UetIGGX0 z-?@l}4gz_QkO$w)Owq01*-&`|Iv*jOk6_=WkrS$&HA0+FKnmo)HeM=f6fH~xPG$A! zQbsT4kpemCf|kvi$tn1sK{6x&Zd!tO-9|%XD*n0;0fHyZ!aS^`Il}@049A?IC?VjL zOS|e3fkg%G$R4na0E@c|9{Tz&JHm9&Qdr{T?t<{e{XD|pY}_>9Lwg5F3N$OJL$alk z3%Fc`s)iwqv&SGQW57qs3GPV{>$zzKviLR{LUY?`C{Sjow~ax$q9t{B*lUCg{$;*w zq)KTEJfF<6E}JI7wbO(E%sHV19%jlYVD*?9XeW8K{U z;NN}4d~CjYk^l~imU@g@h?1dgq?4P|=BsI*jrFE)!)S(wG7+r{aC1}c!8*j(}JV}JgVE;RHgCr>#uTk&|dWaP@d;!8#qr_LYqpawsaC%_GlgH zDi1##MXc2u;bxEUK-s@ISmoZJ6&p@xRlXD6EBR$#uHySdllLzF#Ps>g&e*tzf4P*bA1M28r|eqLZ8~5R-0}mIT%a7ztbQqd27>a>(_@|OgeFxj9rSy~ zNR`hri?k$5UMGZ0U^TOOFd#^DAnDMGhapddC+X-WLY23dmPx}99GO|DKbLY))-|9q z%8ZaABus=t0Dyvo|KSEyS0iY_(zRkTO{|$jZiFubDN8%58Cg=)rDa?!ECyr|!pt_^ zieMmSK0A*H@{+VG%5uuq8^xb(9IJc*oN1d9mNunnMsi~)efuO)%kq{CSA*<;+Iyx} zrQX+1htjo8WCp+Ny}ZPw+q&jSpXVF+k(=?lK}S|*vQ(D*3Kh6baLc>s=$#om;c3f$ z9PPZ7K9hgYH($N6KMkP-U9jvkeXVnuKBLACMwzcdarm;~*Bf)`nWv~nrCZZq6~A|R zw07gsG=vlmr+|x7z~RJIdZA2MwabL_Up9Li@10(J$Mo}ychV4fIE#a>#X-6~J4y`< zMvg&|mZD0E>U>{8Gm7BgSn)=mGpv&JC_oQHrv!=IlOzJ{G+d*2MpQ@~A@fqCYD>*V zg8J9}ONBK=5M$zwmNB-vA>px+;+^H%MzD>%3HgSA#ajWd91gR;BKTQCLj@oH4oFaO zAluVZQOuNp4J?!twg8?7nK&eY2PqXH{THDMK~L|p*r<%T#zQ+Hc_1T>2uQ_bJ-|06 zZ(Z_od3^o$9&N_c<>@RWR<9M9f^Qx=qOD##ViUqF%YSd~wvwyYEW0;UN^z^#N{qro zD@VL=TKs1#(>!3__f|5fhvTRc=?rQdEX61I=NW^-*U>wBM&bQDdG^wU8hlkEHL&cg zMW3X_FjW%-K}3;QZe@8bY zb2fi4tbo_o3I%wn;PNSe0F**4g-V*afVP?}^?mrU4+QSJ7=JLnW5Hpsu^7+4hf6_UDQg;y@+xJ|)BF0jzBgG;%-qFTNhP?kh=AS$sAjT5( zX7>GjAW0@aspoSDtHC1(>@(f=-B`A-ud(bCJ&W?z8A_3d3dwVzmAGx=kkA~@=hys5? md`!gG?#Z0c_~E^g(Od9MljGpC<+dx&c5}nGu6A>G`Tqq2<#sm!