From: jprins@cs.vu.nl (Someone)
Subject: Multi Window Editor / DOS Shell
Summary: Multi Window Editor / DOS Shell
Keywords: editor, shell
Organization: Fac. Wiskunde & Informatica, VU, Amsterdam
Date: Wed, 18 Nov 1992 14:00:12 GMT


: This is a shar archive.  Extract with sh, not csh.
: This archive ends with exit, so do not worry about trailing junk.
: --------------------------- cut here --------------------------
PATH=/bin:/usr/bin:/usr/ucb
echo Extracting 'readme'
sed 's/^X//' > 'readme' << '+ END-OF-FILE ''readme'
XGreetings,
X
XThis is my Multi Window Editor/ DOS Shell (so far). 
XI am having serious problems with allocating string space. At the moment I
Xcannot process files any larger than about 25Kb, which is really demotivating
Xfor me. I know I have to implement page swapping, but that seems so useless
Xwhen working with pages of about 1Kb (slow).
XThe basics are working fine, resizing, moving etc. windows, dos window..
XTo start this at runtime enter: qb /l q4t /run pedit.asc
XCompiling into an executable could be done when including the q4t library.
X-> q4tool.lib is obtained from simtel20!!
X
XCommand Summary:
X
XAlt-W      Window Menu
XAlt-R      Resize window 
XAlt-M      Move window
XAlt-C      Close window
XAlt-0      Open/Activate window 0 = DOS Shell window
XAlt-<1-4>  Open/Activate window 1
XAlt-O      Options Menu
XAlt-F      File Menu
XAlt-L      Load file
XAlt-S      Save file
X
XHm.. maybe I left a few out.. but.. ok.
X
XWHY am I posting? Maybe someone clever could point out how to go further
Xin a simple manner (or not), maybe it's just a nice idea but not very   
Xpractical, I don't know, and maybe someone could pick up a few hints (ehr..)
X
XRegards, Jeroen. 
X 
+ END-OF-FILE readme
chmod 'u=rw,g=,o=' 'readme'
set `wc -c 'readme'`
count=$1
case $count in
1161)	:;;
*)	echo 'Bad character count in ''readme' >&2
		echo 'Count should be 1161' >&2
esac
echo Extracting 'pedit.cfg'
sed 's/^X//' > 'pedit.cfg' << '+ END-OF-FILE ''pedit.cfg'
X>
X 1 
X 3 
X 1 
X 4 
X 79 
X 14 
X 4 
X 6 
X 110 
X 7 
X 2 
XDOS Shell   
XPEDIT.SWP                                                                       
X 40 
X 1 
X 41 
X 24 
XNONAME01.TXT
XNONAME01.TXT
X 4 
X 4 
X 51 
X 20 
XNONAME02.TXT
XNONAME02.TXT                                                                    
X 14 
X 8 
X 44 
X 17 
XNONAME03.TXT
XNONAME03.TXT                                                                    
X 12 
X 6 
X 27 
X 17 
XNONAME04.TXT
XNONAME04.TXT                                                                    
X 10 
X 11 
X 37 
X 13 
X
X
+ END-OF-FILE pedit.cfg
chmod 'u=rw,g=r,o=r' 'pedit.cfg'
set `wc -c 'pedit.cfg'`
count=$1
case $count in
549)	:;;
*)	echo 'Bad character count in ''pedit.cfg' >&2
		echo 'Count should be 549' >&2
esac
echo Extracting 'pedit.asc'
sed 's/^X//' > 'pedit.asc' << '+ END-OF-FILE ''pedit.asc'
XDECLARE SUB wordleft (nr!)
XDECLARE SUB wordright (nr!)
XDECLARE FUNCTION letter! (c$)
XDECLARE SUB beginofline (nr!)
XDECLARE SUB endofline (nr!)
XDECLARE SUB rewriteline (nr!, lin!, ypos%)
XDECLARE SUB loadinteractive (nr!)
XDECLARE SUB saveinteractive (nr!)
XDECLARE SUB savefile (nr!, filename$, linestart!, lineend!)
XDECLARE FUNCTION extractfilenames! (nr!, c$)
XDECLARE SUB menufile (nr!)
XDECLARE FUNCTION fieldinput$ (title$, tx%, lx%)
XDECLARE SUB dosprompt (writeprompt!)
XDECLARE SUB saveconfig (f$)
XDECLARE SUB closewindow (nr!)
XDECLARE SUB showstatus ()
XDECLARE SUB checkfatal ()
XDECLARE SUB pgdn (nr!)
XDECLARE SUB pgup (nr!)
XDECLARE SUB cursorup (nr!)
XDECLARE SUB cursorright (nr!, skip!)
XDECLARE SUB cursordown (nr!)
XDECLARE SUB resizewindow (nr!)
XDECLARE SUB refresh ()
XDECLARE SUB movewindow (nr!)
XDECLARE SUB outlinewindow (nr!)
XDECLARE SUB moveright (nr!)
XDECLARE SUB moveup (nr!)
XDECLARE SUB moveleft (nr!)
XDECLARE SUB movedown (nr!)
XDECLARE SUB readconfig (f$)
XDECLARE SUB cursorleft (nr!)
XDECLARE SUB readconfigfile ()
XDECLARE SUB loadfile (nr!, filename$, lineno!, scroll!)
XDECLARE SUB scrollup (nr!, steps!)
XDECLARE SUB backspace (nr!, wipe!, skip!)
XDECLARE SUB scrollleft (nr!, steps!)
XDECLARE SUB openwindow (windwnr!)
XDECLARE SUB scrolldown (nr!, steps!)
XDECLARE SUB scrollright (nr!, steps!)
XDECLARE SUB rewritewindow (nr!)
XDECLARE SUB nextline (nr!, insert!)
XDECLARE SUB dosshell ()
XDECLARE SUB delchar (nr!)
XDECLARE SUB curs (nr!, visible!)
XDECLARE SUB writechar (nr!, char$)
XDECLARE SUB menuwindow (nr!)
XDECLARE SUB escape ()
XDECLARE SUB menuoptions ()
XDECLARE SUB openwindow (windwnr!)
XDECLARE SUB activatewindow (windwnr!)
XREM $INCLUDE: 'q4t.bi'
X
X' type declarations
X
XCONST maxwin = 4
XTYPE windwtype
X        titel AS STRING * 12            'title on top of window
X        filename AS STRING * 80         'full pathname of the file
X        tx AS INTEGER                   'top x coordinate
X        ty AS INTEGER                   'top y coordinate
X        lx AS INTEGER                   'width of window
X        ly AS INTEGER                   'height of window
X        x AS INTEGER                    'real x cursor position
X        y AS INTEGER                    'real y cursor position
X        leftmargin AS INTEGER           'real x startpoint in editbuffer
X        topmargin AS INTEGER            'real y startpoint in editbuffer
X        textx AS INTEGER                'relative x cursor position
X        texty AS INTEGER                'relative y cursor position
X        lasty AS INTEGER                'actual number of lines in buffer
X        display AS INTEGER              '1 if window is currently displayed
X        mem AS INTEGER                  'total memory usage of contents
XEND TYPE
XDIM windw(0 TO maxwin) AS windwtype
XDIM scrnbuf(1 TO 1) AS STRING * 4000
XDIM regel$(0 TO maxwin, 500)
XCOMMON SHARED windw() AS windwtype, scrnbuf() AS STRING * 4000, regel$(), back%, sysback%, sysfore%, sysborder%, sysframe%, editback%, editfore%, editborder%, editframe%, shadow%, active, statusline, pagesize, prompt$, cfg$
X
X' setup system
X
XON ERROR GOTO setuperror
Xp = INSTR(COMMAND$, "-")
XIF p > 0 THEN
X        q = INSTR(p + 1, COMMAND$, " ")
X        IF q = 0 THEN q = LEN(COMMAND$)
X        cfg$ = MID$(COMMAND$, p + 1, q - p)
X        c$ = LEFT$(COMMAND$, p - 1) + RIGHT$(COMMAND$, LEN(COMMAND$) - q)
XELSE
X        cfg$ = "pedit.cfg"
X        c$ = COMMAND$
XEND IF
XCALL readconfig(cfg$)
Xpagesize = (FRE(0) - 10000) / maxwin
X
X' read commandline arguments
X
Xnr = extractfilenames(1, c$)
X
X' display windows
X
XLOCATE 1, 1, 0
XCOLOR 0, back%, back%
XCLS
XIF nr > 0 THEN
X        FOR t = 1 TO nr
X                CALL openwindow(t)
X                ON ERROR GOTO loaderror
X                CALL loadfile(t, windw(t).filename, 1, 0)
Xnextfile:
X        NEXT t
X        active = nr
XELSE
X        CALL openwindow(1)
X        active = 1
XEND IF
X
X' welcome screen if no arguments passed
X
XIF COMMAND$ = "" THEN
X        CALL putscrn(scrnbuf(1))
X        CALL dowindow(16, 20, 9, 60, sysborder%, sysback%, sysframe%, shadow%, "Press any key to begin", 1)
X        CALL prtscrn("Welcome to PEDIT V2.0 !", 19, 39, sysfore%)
X        CALL prtscrn("(c) 1992 by Prinssoft Corporation. All rights reserved.", 22, 23, sysfore% - 8)
X        c$ = INPUT$(1)
X        CALL getscrn(scrnbuf(1))
XEND IF
X
XCALL dosprompt(0)
XCALL curs(active, 1)
X
Xmain:
X
XON ERROR GOTO resumer
XCALL checkfatal
XDO
X        c$ = INKEY$
X        IF active >= 0 THEN
X                IF LEFT$(c$, 1) <> CHR$(0) THEN
X                        SELECT CASE LEFT$(c$, 1)
X                        CASE CHR$(27)
X                                CALL escape
X                        CASE CHR$(32) TO CHR$(255)
X                                CALL writechar(active, LEFT$(c$, 1))
X                        CASE CHR$(13)
X                                CALL curs(active, 0)
X                                CALL nextline(active, 1)
X                                IF active = 0 THEN CALL dosshell
X                        CASE CHR$(8)
X                                CALL backspace(active, 1, 1)
X                        CASE ELSE
X                        END SELECT
X                ELSE
X                        SELECT CASE RIGHT$(c$, 1)
X                        CASE CHR$(72)   'cursor-up
X                                CALL cursorup(active)
X                        CASE CHR$(75)   'cursor-left
X                                CALL backspace(active, 0, 1)
X                        CASE CHR$(77)   'cursor-right
X                                CALL cursorright(active, 1)
X                        CASE CHR$(80)   'cursor-down
X                                CALL cursordown(active)
X                        CASE CHR$(73)   'pgup
X                                CALL pgup(active)
X                        CASE CHR$(81)   'pgdn            
X                                CALL pgdn(active)
X                        CASE CHR$(71)   'home
X                                CALL beginofline(active)
X                        CASE CHR$(79)   'end
X                                CALL endofline(active)
X                        CASE CHR$(115)  'ctrl-left
X                                CALL wordleft(active)
X                        CASE CHR$(116)  'ctrl-right
X                                CALL wordright(active)
X                        CASE CHR$(46)   'alt-c
X                                CALL closewindow(active)
X                                IF active = -1 THEN GOTO exitif
X                        CASE CHR$(24)   'alt-o
X                                CALL menuoptions
X                        CASE CHR$(17)   'alt-w
X                                CALL menuwindow(active)
X                                IF active = -1 THEN GOTO exitif
X                        CASE CHR$(50)   'alt-m
X                                CALL movewindow(active)
X                        CASE CHR$(19)   'alt-r
X                                CALL resizewindow(active)
X                        CASE CHR$(33)   'alt-f
X                                CALL menufile(active)
X                        CASE CHR$(38)   'alt-l
X                                CALL loadinteractive(active)
X                        CASE CHR$(31)   'alt-s
X                                CALL saveinteractive(active)
X                        CASE CHR$(120) TO CHR$(120 + maxwin - 1)
X                                CALL curs(active, 0)
X                                active = ASC(RIGHT$(c$, 1)) - 119
X                                CALL activatewindow(active)
X                        CASE CHR$(129)
X                                CALL curs(active, 0)
X                                active = 0
X                                CALL activatewindow(active)
X                        CASE ELSE
X                                REM IF RIGHT$(c$, 1) <> "" THEN PRINT ASC(RIGHT$(c$, 1))
X                        END SELECT
X                END IF
X                IF statusline = 1 THEN CALL showstatus
X        ELSE
X                IF c$ = CHR$(27) THEN CALL escape
X                SELECT CASE RIGHT$(c$, 1)
X                CASE CHR$(120) TO CHR$(120 + maxwin - 1)
X                        active = ASC(RIGHT$(c$, 1)) - 119
X                        CALL activatewindow(active)
X                CASE CHR$(129)
X                        active = 0
X                        CALL activatewindow(active)
X                CASE ELSE
X                END SELECT
X        END IF
Xexitif:
XLOOP
X
Xresumer:
XRESET
XCALL checkfatal
XCALL putscrn(scrnbuf(1))
XIF sysback% = 0 AND sysfore% = 0 THEN
X        sysback% = 4
X        sysfore% = 75
XEND IF
XSELECT CASE ERR
XCASE 53
X        msg$ = "Could not open file!"
XCASE 5
X        msg$ = "System would not accept function call!"
XCASE 9
X        msg$ = "System buffer sizes are too small!"
XCASE 64
X        msg$ = "System command is not accepted!"
XCASE 62
X        msg$ = "Syntax error in config file!"
XCASE ELSE
X        msg$ = "Internal system failure (" + STR$(ERR) + " )"
XEND SELECT
XCALL dowindow(20, 30, 5, 50, sysborder%, sysback%, sysframe%, shadow%, "Internal failure", 0)
Xxpos% = 56 - LEN(msg$) / 2
XCALL prtscrn(msg$, 22, xpos%, sysfore%)
Xc$ = INPUT$(1)
XCALL getscrn(scrnbuf(1))
XRESUME main
X
Xsetuperror:
XPRINT "Sorry.. I could not open configurationfile " + cfg$
XPRINT "You can give an alternative path with  pedit -<filespec>"; ""
XEND
X
Xloaderror:
XRESUME nextfile
X
XSUB activatewindow (nr)
X               
XCALL openwindow(nr)
XCALL rewritewindow(nr)
XCALL curs(nr, 1)
X
XEND SUB
X
XSUB backspace (nr, wipe, skip)
X
XIF wipe = 1 THEN
X        temp$ = regel$(nr, windw(nr).texty)
X        IF windw(nr).textx > LEN(temp$) AND LEN(temp$) > 0 THEN
X                regel$(nr, windw(nr).texty) = LEFT$(temp$, LEN(temp$) - 1)
X        ELSE
X                IF windw(nr).textx > 1 THEN
X                        regel$(nr, windw(nr).texty) = LEFT$(temp$, windw(nr).textx - 2) + RIGHT$(temp$, LEN(temp$) - windw(nr).textx + 1)
X                ELSE
X                        IF windw(nr).texty > 1 THEN
X                                windw(nr).textx = LEN(regel$(nr, windw(nr).texty - 1)) + 1
X                                regel$(nr, windw(nr).texty - 1) = regel$(nr, windw(nr).texty - 1) + regel$(nr, windw(nr).texty)
X                                IF windw(nr).texty <= windw(nr).lasty THEN
X                                        FOR i = windw(nr).texty TO windw(nr).lasty
X                                                regel$(nr, i) = regel$(nr, i + 1)
X                                        NEXT i
X                                        windw(nr).lasty = windw(nr).lasty - 1
X                                END IF
X                                CALL rewritewindow(nr)
X                        END IF
X                END IF
X        END IF
XEND IF
XIF (windw(nr).x > windw(nr).tx + 1 + skip) OR (windw(nr).x = windw(nr).tx + 1 + skip AND windw(nr).leftmargin = skip) THEN
X        CALL curs(nr, 0)
X        windw(nr).x = windw(nr).x - skip
X        windw(nr).textx = windw(nr).textx - skip
X        lin = windw(nr).texty
X        CALL rewriteline(nr, lin, windw(nr).y)
XELSE                         ' we are at the left border of the window
X        IF windw(nr).leftmargin > skip THEN  ' we have more text waiting
X                CALL scrollleft(nr, skip)
X                windw(nr).textx = windw(nr).textx - skip
X        ELSE
X                IF windw(nr).texty > 1 THEN          ' we can go a line back
X                        CALL curs(nr, 0)
X                        IF windw(nr).y > windw(nr).ty + 1 THEN 'we are not at
X                                windw(nr).y = windw(nr).y - 1  'top of window
X                        ELSE
X                                CALL scrollup(nr, 1)
X                        END IF
X                        windw(nr).texty = windw(nr).texty - 1
X                        length = LEN(regel$(nr, windw(nr).texty))
X                        IF wipe = 0 THEN windw(nr).textx = length + 1
X                        IF length < windw(nr).lx - 2 OR windw(nr).textx < windw(nr).lx - 2 THEN
X                                windw(nr).x = windw(nr).tx + windw(nr).textx
X                        ELSE                ' we have to scroll right as well
X                                windw(nr).x = windw(nr).tx + windw(nr).lx - 2
X                                CALL scrollright(nr, windw(nr).textx - (windw(nr).lx - 2))
X                        END IF
X                END IF
X        END IF
XEND IF
XCALL curs(nr, 1)
X
XEND SUB
X
XSUB beginofline (nr)
X
XCALL curs(nr, 0)
Xwindw(nr).textx = 1
Xwindw(nr).x = windw(nr).tx + 1
Xwindw(nr).leftmargin = 1
XCALL rewritewindow(nr)
XCALL curs(nr, 1)
X
XEND SUB
X
XSUB checkfatal
X
XIF FRE(0) < 4000 THEN
X        CALL dowindow(18, 16, 7, 64, sysborder%, sysback%, sysframe%, shadow%, "Fatal Error", 0)
X        CALL prtscrn("Out of memory", 20, 42, sysfore% + 128)
X        CALL prtscrn("I will crash upon resume!", 22, 36, sysfore%)
X        CALL prtscrn("Press a key to flush buffers and quit", 23, 30, sysfore%)
X        c$ = INPUT$(1)
X        FOR i = 1 TO maxwin
X                lineend = windw(i).lasty
X                CALL savefile(i, windw(i).filename, 1, lineend)
X        NEXT i
X        END
XEND IF
XIF FRE(-2) < 0 THEN
X        CALL putscrn(scrnbuf(1))
X        CALL dowindow(18, 30, 7, 50, sysborder%, sysback%, sysframe%, shadow%, "Fatal Error", 0)
X        CALL prtscrn("Out of stack space", 20, 45, sysfore% + 128)
X        CALL prtscrn("I may crash upon further difficulties!", 22, 36, sysfore%)
X        CALL prtscrn("I recommend you to save your files and restart", 23, 32, sysfore%)
X        c$ = INPUT$(1)
X        CALL getscrn(scrnbuf(1))
XEND IF
X
XEND SUB
X
XSUB closewindow (nr)
X
Xwindw(nr).display = 0
XIF nr = active THEN
X        FOR i = active TO 0 STEP -1
X                IF windw(i).display = 1 THEN EXIT FOR
X        NEXT i
X        IF i = -1 THEN
X                FOR i = active + 1 TO maxwin
X                        IF windw(i).display = 1 THEN EXIT FOR
X                NEXT i
X                IF i = maxwin + 1 THEN i = -1
X        END IF
X        active = i
XEND IF
XCALL refresh
X
XEND SUB
X
XSUB curs (nr, visible)
X
XLOCATE windw(nr).y, windw(nr).x, visible, 11, 12
X
XEND SUB
X
XSUB cursordown (nr)
X
XIF windw(nr).texty < windw(nr).lasty THEN
X        CALL curs(nr, 0)
X        windw(nr).texty = windw(nr).texty + 1
X        IF windw(nr).textx > LEN(regel$(nr, windw(nr).texty)) + 1 THEN
X                windw(nr).textx = LEN(regel$(nr, windw(nr).texty)) + 1
X                IF windw(nr).leftmargin > 1 THEN
X                        temp = LEN(regel$(nr, windw(nr).texty - 1)) - LEN(regel$(nr, windw(nr).texty))
X                        IF temp > windw(nr).leftmargin THEN CALL scrollleft(nr, temp)
X                END IF
X                windw(nr).x = windw(nr).tx + windw(nr).textx - windw(nr).leftmargin + 1
X        END IF
X        IF windw(nr).y < windw(nr).ty + windw(nr).ly - 2 THEN
X                windw(nr).y = windw(nr).y + 1
X        ELSE
X                CALL scrolldown(nr, 1)
X        END IF
X        CALL curs(nr, 1)
XEND IF
X
XEND SUB
X
XSUB cursorright (nr, skip)
X
XCALL curs(nr, 0)
Xwindw(nr).textx = windw(nr).textx + skip
XIF windw(nr).textx > LEN(regel$(nr, windw(nr).texty)) + 1 THEN
X        IF windw(nr).texty < windw(nr).lasty THEN
X                CALL nextline(nr, 0)
X        ELSE
X                windw(nr).textx = windw(nr).textx - skip
X        END IF
XELSE
X        IF windw(nr).x > windw(nr).tx + windw(nr).lx - 2 - skip THEN
X                CALL scrollright(nr, skip)
X        ELSE
X                windw(nr).x = windw(nr).x + skip
X        END IF
XEND IF
XCALL curs(nr, 1)
X
XEND SUB
X
XSUB cursorup (nr)
X
XIF windw(nr).texty > 1 THEN
X        CALL curs(nr, 0)
X        windw(nr).texty = windw(nr).texty - 1
X        IF windw(nr).textx > LEN(regel$(nr, windw(nr).texty)) + 1 THEN
X                windw(nr).textx = LEN(regel$(nr, windw(nr).texty)) + 1
X                IF windw(nr).leftmargin > 1 THEN
X                        temp = LEN(regel$(nr, windw(nr).texty + 1)) - LEN(regel$(nr, windw(nr).texty))
X                        IF temp > windw(nr).leftmargin THEN CALL scrollleft(nr, temp)
X                END IF
X                windw(nr).x = windw(nr).tx + windw(nr).textx - windw(nr).leftmargin + 1
X        END IF
X        IF windw(nr).y > windw(nr).ty + 1 THEN
X                windw(nr).y = windw(nr).y - 1
X        ELSE
X                CALL scrollup(nr, 1)
X        END IF
X        CALL curs(nr, 1)
XEND IF
X
XEND SUB
X
XSUB dosprompt (writeprompt)
X
XIF writeprompt = 1 THEN
X        FOR i = 1 TO LEN(prompt$)
X                CALL writechar(0, MID$(prompt$, i, 1))
X        NEXT i
XELSE
X        regel$(0, windw(0).texty) = prompt$
X        windw(0).textx = windw(0).textx + LEN(prompt$)
X        windw(0).x = windw(0).x + LEN(prompt$)
XEND IF
X
XEND SUB
X
XSUB dosshell
X
XON ERROR GOTO resumer
XIF LEFT$(regel$(0, windw(0).texty - 1), LEN(prompt$)) = prompt$ THEN
X        cmd$ = RIGHT$(regel$(0, windw(0).texty - 1), LEN(regel$(0, windw(0).texty - 1)) - LEN(prompt$))
X        IF LCASE$(LEFT$(cmd$, 2)) = "cd" AND LEN(cmd$) > 3 THEN
X                CHDIR RIGHT$(cmd$, LEN(cmd$) - 3)
X        ELSE
X                IF LEN(cmd$) = 2 AND MID$(cmd$, 2, 1) = ":" THEN
X                        SHELL cmd$
X                ELSE
X                        SHELL cmd$ + " > " + windw(0).filename
X                END IF
X                lineno = windw(nr).texty
X                CALL loadfile(0, windw(0).filename, lineno, 1)
X        END IF
X        CALL nextline(0, 1)
X        CALL dosprompt(1)
X        CALL curs(0, 1)
XEND IF
X
XEND SUB
X
XSUB endofline (nr)
X
XCALL curs(nr, 0)
Xwindw(nr).textx = LEN(regel$(nr, windw(nr).texty)) + 1
XIF windw(nr).textx < windw(nr).lx - 2 THEN
X        windw(nr).x = windw(nr).tx + windw(nr).textx
XELSE
X        windw(nr).x = windw(nr).tx + windw(nr).lx - 2
X        CALL scrollright(nr, windw(nr).textx - (windw(nr).lx - 2))
XEND IF
XCALL curs(nr, 1)
X
XEND SUB
X
XSUB escape
X
XCALL putscrn(scrnbuf(1))
XCALL dowindow(20, 50, 5, 30, sysborder%, sysback%, sysframe%, shadow%, "Exit", 0)
XCALL prtscrn("Discard all changes (y/n)?", 22, 52, sysfore%)
XIF LCASE$(INPUT$(1)) = "y" THEN
X        COLOR 7, 0, 0
X        CLS
X        END
XEND IF
XCALL getscrn(scrnbuf(1))
X
XEND SUB
X
XFUNCTION extractfilenames (nr, c$)
X
XDO WHILE (c$ <> "")
X        IF INSTR(c$, " ") > 0 THEN
X                temp$ = LEFT$(c$, INSTR(c$, " ") - 1)
X        ELSE
X                temp$ = c$
X        END IF
X        windw(nr).filename = temp$
X        FOR t = LEN(temp$) TO 1 STEP -1
X                IF MID$(temp$, t, 1) = "\" OR MID$(temp$, t, 1) = "/" THEN EXIT FOR
X        NEXT t
X        temp2$ = RIGHT$(temp$, LEN(temp$) - t)
X        l = LEN(temp2$)
X        IF l > 12 THEN temp2$ = LEFT$(temp2$, 12)
X        windw(nr).titel = SPACE$(INT((12 - l) / 2)) + temp2$ + SPACE$(FIX((12 - l) / 2))
X        IF INSTR(c$, " ") > 0 THEN
X                c$ = RIGHT$(c$, LEN(c$) - LEN(temp$) - 1)
X        ELSE
X                c$ = ""
X        END IF
X        nr = nr + 1
X        IF nr > maxwin THEN EXIT DO
XLOOP
Xextractfilenames = nr - 1
X
XEND FUNCTION
X
XFUNCTION fieldinput$ (title$, tx%, lx%)
X
XCALL dowindow(19, tx%, 5, lx%, sysborder%, sysback%, sysframe%, shadow%, title$, 0)
Xi = tx% + 2
XDO WHILE i < tx% + lx% - 2
X        c$ = INPUT$(1)
X        SELECT CASE c$
X        CASE CHR$(13)
X                EXIT DO
X        CASE CHR$(8)
X                IF LEN(temp$) > 0 THEN temp$ = LEFT$(temp$, LEN(temp$) - 1)
X        CASE ELSE
X        temp$ = temp$ + c$
X        i = i + 1
X        END SELECT
X        CALL prtscrn(temp$ + " ", 21, tx% + 2, sysfore%)
XLOOP
Xfieldinput$ = temp$
X
XEND FUNCTION
X
XFUNCTION letter (c$)
X
XIF (c$ >= CHR$(48) AND c$ <= CHR$(57)) OR (c$ >= CHR$(65) AND c$ <= CHR$(90)) OR (c$ >= CHR$(97) AND c$ <= CHR$(122)) THEN letter = 1 ELSE letter = 0
X
XEND FUNCTION
X
XSUB loadfile (nr, filename$, lineno, scroll)
X
Xbottom = windw(nr).ty + windw(nr).ly - 3
XOPEN filename$ FOR INPUT AS #1
XWHILE NOT EOF(1) AND windw(nr).mem < pagesize
Xtemp = FRE(0)
XLINE INPUT #1, regel$(nr, lineno)
XIF FRE(0) < 4000 THEN CALL checkfatal
Xwindw(nr).mem = windw(nr).mem + temp - FRE(0)
Xlineno = lineno + 1
XIF scroll = 1 THEN
X        IF windw(nr).y > bottom THEN
X                windw(nr).topmargin = windw(nr).topmargin + 1
X        ELSE
X                windw(nr).y = windw(nr).y + 1
X        END IF
XEND IF
XWEND
XCLOSE #1
XIF scroll = 1 THEN windw(nr).texty = lineno
Xwindw(nr).lasty = lineno
Xwindw(nr).leftmargin = 1
XCALL rewritewindow(nr)
X
XEND SUB
X
XSUB loadinteractive (nr)
X
XON ERROR GOTO resumer
XCALL putscrn(scrnbuf(1))
Xname$ = UCASE$(fieldinput$("Enter Filename(s)", 3, 77))
XCALL getscrn(scrnbuf(1))
XIF name$ <> "" THEN
X        FOR i = nr TO extractfilenames(nr, name$)
X                CALL openwindow(i)
X                lineno = windw(i).texty
X                CALL loadfile(i, windw(i).filename, lineno, 0)
X        NEXT i
X        active = i - 1
X        CALL curs(active, 1)
XEND IF
X
XEND SUB
X
XSUB menufile (nr)
X
XCALL putscrn(scrnbuf(1))
XCALL dowindow(14, 65, 11, 15, sysborder%, sysback%, sysframe%, shadow%, "File", 0)
XCALL prtscrn("Load   Alt-l", 16, 67, sysfore%)
XCALL prtscrn("Save   Alt-s", 17, 67, sysfore%)
XCALL prtscrn("save Block", 18, 67, sysfore%)
XCALL prtscrn("Change name", 20, 67, sysfore%)
XCALL prtscrn("New", 22, 67, sysfore%)
XSELECT CASE LCASE$(INPUT$(1))
XCASE "l"
X        CALL getscrn(scrnbuf(1))
X        CALL loadinteractive(nr)
X        EXIT SUB
XCASE "c"
X        name$ = UCASE$(fieldinput$("Enter New Filename(s)", 3, 77))
X        CALL getscrn(scrnbuf(1))
X        IF name$ <> "" THEN
X                FOR i = nr TO extractfilenames(nr, name$)
X                        CALL activatewindow(i)
X                NEXT i
X                active = i - 1
X        END IF
X        EXIT SUB
XCASE "s"
X        CALL getscrn(scrnbuf(1))
X        CALL saveinteractive(nr)
X
XCASE "n"
X        CALL getscrn(scrnbuf(1))
X        CALL curs(nr, 0)
X        FOR i = 1 TO windw(nr).lasty
X                regel$(nr, i) = ""
X        NEXT i
X        windw(nr).lasty = 1
X        windw(nr).leftmargin = 1
X        windw(nr).topmargin = 1
X        windw(nr).texty = 1
X        windw(nr).textx = 1
X        windw(nr).x = windw(nr).tx + 1
X        windw(nr).y = windw(nr).ty + 1
X        CALL rewritewindow(nr)
X        CALL curs(nr, 1)
X        EXIT SUB
XCASE ELSE
XEND SELECT
XCALL getscrn(scrnbuf(1))
X
XEND SUB
X
XSUB menuoptions
X
XCALL putscrn(scrnbuf(1))
XCALL dowindow(4, 55, 20, 25, sysborder%, sysback%, sysframe%, shadow%, "Environment Options", 0)
XCALL prtscrn("1  root background", 6, 57, back%)
XCALL prtscrn("2  system foreground", 8, 57, sysfore%)
XCALL prtscrn("3  system background", 9, 57, sysback%)
XCALL prtscrn("4  system border", 10, 57, sysback% * 16 + sysborder%)
XCALL prtscrn("5  system frame style", 11, 57, sysfore%)
XCALL prtscrn("6  edit foreground", 13, 57, editfore%)
XCALL prtscrn("7  edit background", 14, 57, editback%)
XCALL prtscrn("8  edit border", 15, 57, editback% * 16 + editborder%)
XCALL prtscrn("9  edit frame style", 16, 57, sysfore%)
XCALL prtscrn("shell Prompt", 18, 57, sysfore%)
XCALL prtscrn("Toggle statusline", 19, 57, sysfore%)
XCALL prtscrn("sHadow style", 20, 57, sysfore%)
XCALL prtscrn("Save environment", 22, 57, sysfore%)
XSELECT CASE LCASE$(INPUT$(1))
XCASE "1"
X        CALL dowindow(19, 35, 5, 40, sysborder%, sysback%, sysframe%, shadow%, "Root background", 0)
X        DO
X                CALL prtscrn("Cursor to select, Escape to accept", 21, 37, back%)
X                c$ = INKEY$
X                SELECT CASE c$
X                CASE CHR$(0) + CHR$(72)
X                        IF back% < 7 THEN back% = back% + 1
X                CASE CHR$(0) + CHR$(80)
X                        IF back% > 0 THEN back% = back% - 1
X                CASE CHR$(27)
X                        EXIT DO
X                CASE ELSE
X                END SELECT
X        LOOP
XCASE "2"
X        CALL dowindow(19, 35, 5, 40, sysborder%, sysback%, sysframe%, shadow%, "System foreground", 0)
X        DO
X                CALL prtscrn("Cursor to select, Escape to accept", 21, 37, sysfore%)
X                c$ = INKEY$
X                SELECT CASE c$
X                CASE CHR$(0) + CHR$(72)
X                        IF sysfore% < 127 THEN sysfore% = sysfore% + 1
X                CASE CHR$(0) + CHR$(80)
X                        IF sysfore% > 0 THEN sysfore% = sysfore% - 1
X                CASE CHR$(27)
X                        EXIT DO
X                CASE ELSE
X                END SELECT
X        LOOP
XCASE "3"
X        CALL dowindow(19, 35, 5, 40, sysborder%, sysback%, sysframe%, shadow%, "System background", 0)
X        DO
X                CALL prtscrn("Cursor to select, Escape to accept", 21, 37, sysback%)
X                c$ = INKEY$
X                SELECT CASE c$
X                CASE CHR$(0) + CHR$(72)
X                        IF sysback% < 7 THEN sysback% = sysback% + 1
X                CASE CHR$(0) + CHR$(80)
X                        IF sysback% > 0 THEN sysback% = sysback% - 1
X                CASE CHR$(27)
X                        EXIT DO
X                CASE ELSE
X                END SELECT
X        LOOP
XCASE "4"
X        CALL dowindow(19, 35, 5, 40, sysborder%, sysback%, sysframe%, shadow%, "System border", 0)
X        DO
X                CALL prtscrn("Cursor to select, Escape to accept", 21, 37, sysback% * 16 + sysborder%)
X                c$ = INKEY$
X                SELECT CASE c$
X                CASE CHR$(0) + CHR$(72)
X                        IF sysborder% < 7 THEN sysborder% = sysborder% + 1
X                CASE CHR$(0) + CHR$(80)
X                        IF sysborder% > 0 THEN sysborder% = sysborder% - 1
X                CASE CHR$(27)
X                        EXIT DO
X                CASE ELSE
X                END SELECT
X        LOOP
XCASE "5"
X        CALL dowindow(19, 35, 5, 40, sysborder%, sysback%, sysframe%, shadow%, "System frame style", 0)
X        DO
X                CALL prtscrn("Frame style = " + CHR$(sysframe% + 48), 21, 37, sysback% * 16 + sysborder%)
X                c$ = INKEY$
X                SELECT CASE c$
X                CASE CHR$(0) + CHR$(72)
X                        IF sysframe% < 5 THEN sysframe% = sysframe% + 1
X                CASE CHR$(0) + CHR$(80)
X                        IF sysframe% > 0 THEN sysframe% = sysframe% - 1
X                CASE CHR$(27)
X                        EXIT DO
X                CASE ELSE
X                END SELECT
X        LOOP
XCASE "6"
X        CALL dowindow(19, 35, 5, 40, sysborder%, sysback%, sysframe%, shadow%, "Edit foreground", 0)
X        DO
X                CALL prtscrn("Cursor to select, Escape to accept", 21, 37, editfore%)
X                c$ = INKEY$
X                SELECT CASE c$
X                CASE CHR$(0) + CHR$(72)
X                        IF editfore% < 127 THEN editfore% = editfore% + 1
X                CASE CHR$(0) + CHR$(80)
X                        IF editfore% > 0 THEN editfore% = editfore% - 1
X                CASE CHR$(27)
X                        EXIT DO
X                CASE ELSE
X                END SELECT
X        LOOP
XCASE "7"
X        CALL dowindow(19, 35, 5, 40, sysborder%, sysback%, sysframe%, shadow%, "Edit background", 0)
X        DO
X                CALL prtscrn("Cursor to select, Escape to accept", 21, 37, editback%)
X                c$ = INKEY$
X                SELECT CASE c$
X                CASE CHR$(0) + CHR$(72)
X                        IF editback% < 7 THEN editback% = editback% + 1
X                CASE CHR$(0) + CHR$(80)
X                        IF editback% > 0 THEN editback% = editback% - 1
X                CASE CHR$(27)
X                        EXIT DO
X                CASE ELSE
X                END SELECT
X        LOOP
XCASE "8"
X        CALL dowindow(19, 35, 5, 40, sysborder%, sysback%, sysframe%, shadow%, "Edit border", 0)
X        DO
X                CALL prtscrn("Cursor to select, Escape to accept", 21, 37, editback% * 16 + editborder%)
X                c$ = INKEY$
X                SELECT CASE c$
X                CASE CHR$(0) + CHR$(72)
X                        IF editborder% < 7 THEN editborder% = editborder% + 1
X                CASE CHR$(0) + CHR$(80)
X                        IF editborder% > 0 THEN editborder% = editborder% - 1
X                CASE CHR$(27)
X                        EXIT DO
X                CASE ELSE
X                END SELECT
X        LOOP
XCASE "9"
X        CALL dowindow(19, 35, 5, 40, sysborder%, sysback%, sysframe%, shadow%, "Edit frame style", 0)
X        DO
X                CALL prtscrn("Frame style = " + CHR$(editframe% + 48), 21, 37, sysback% * 16 + sysborder%)
X                c$ = INKEY$
X                SELECT CASE c$
X                CASE CHR$(0) + CHR$(72)
X                        IF editframe% < 5 THEN editframe% = editframe% + 1
X                CASE CHR$(0) + CHR$(80)
X                        IF editframe% > 0 THEN editframe% = editframe% - 1
X                CASE CHR$(27)
X                        EXIT DO
X                CASE ELSE
X                END SELECT
X        LOOP
XCASE "h"
X        CALL dowindow(19, 35, 5, 40, sysborder%, sysback%, sysframe%, shadow%, "Shadow Style", 0)
X        DO
X                SELECT CASE shadow%
X                CASE 0
X                        msg$ = "None               "
X                CASE 1
X                        msg$ = "Left Solid         "
X                CASE 2
X                        msg$ = "Right Solid        "
X                CASE 3
X                        msg$ = "Left Grid (default)"
X                CASE 4
X                        msg$ = "Right Grid         "
X                END SELECT
X                CALL prtscrn(msg$, 21, 37, sysback% * 16 + sysborder%)
X                c$ = INKEY$
X                SELECT CASE c$
X                CASE CHR$(0) + CHR$(72)
X                        IF shadow% < 4 THEN shadow% = shadow% + 1
X                CASE CHR$(0) + CHR$(80)
X                        IF shadow% > 0 THEN shadow% = shadow% - 1
X                CASE CHR$(27)
X                        EXIT DO
X                CASE ELSE
X                END SELECT
X        LOOP
X        CALL refresh
XCASE "p"
X        prompt$ = fieldinput$("New prompt", 50, 15)
XCASE "t"
X        IF statusline = 1 THEN
X                statusline = 0
X                CALL getscrn(scrnbuf(1))
X                CALL prtscrn(STRING$(9, 205), windw(active).ty + windw(active).ly - 1, windw(active).tx + windw(active).lx - 10, editback% * 16 + editborder%)
X                EXIT SUB
X        ELSE
X                statusline = 1
X        END IF
XCASE "s"
X        CALL dowindow(19, 50, 5, 15, sysborder%, sysback%, sysframe%, shadow%, "Save", 0)
X        CALL prtscrn("Saving..", 21, 53, sysfore%)
X        CALL saveconfig(cfg$)
XCASE ELSE
XEND SELECT
XCALL getscrn(scrnbuf(1))
X
XEND SUB
X
XSUB menuwindow (nr)
X
XCALL putscrn(scrnbuf(1))
XCALL dowindow(11, 60, 14, 20, sysborder%, sysback%, sysframe%, shadow%, "Window", 0)
XCALL prtscrn("Move     Alt-M", 13, 62, sysfore%)
XCALL prtscrn("Resize   Alt-R", 14, 62, sysfore%)
XCALL prtscrn("maXimize", 16, 62, sysfore%)
XCALL prtscrn("mInimize", 17, 62, sysfore%)
XCALL prtscrn("Open/Act Alt-<nr>", 19, 62, sysfore%)
XCALL prtscrn("Close    Alt-C", 20, 62, sysfore%)
XCALL prtscrn("reFresh display", 22, 62, sysfore%)
XSELECT CASE LCASE$(INPUT$(1))
XCASE "o", "a"
X        CALL dowindow(19, 50, 5, 15, sysborder%, sysback%, sysframe%, shadow%, "Activate", 0)
X        CALL prtscrn("Window Nr?", 21, 52, sysfore%)
X        c$ = INPUT$(1)
X        CALL getscrn(scrnbuf(1))
X        IF c$ >= "1" AND c$ <= CHR$(maxwin + 48) THEN
X                CALL curs(nr, 0)
X                active = ASC(c$) - 48
X                CALL activatewindow(active)
X        END IF
XCASE "m"
X        CALL getscrn(scrnbuf(1))
X        CALL movewindow(nr)
XCASE "r"
X        CALL getscrn(scrnbuf(1))
X        CALL resizewindow(nr)
XCASE "x"
X        CALL getscrn(scrnbuf(1))
X        windw(nr).x = windw(nr).x - (windw(nr).tx - 3)
X        windw(nr).y = windw(nr).y - (windw(nr).ty - 1)
X        windw(nr).tx = 3
X        windw(nr).ty = 1
X        windw(nr).lx = 78
X        windw(nr).ly = 24
X        CALL refresh
XCASE "i"
X        windw(nr).topmargin = windw(active).texty
X        windw(nr).x = windw(active).tx + 1
X        windw(nr).y = windw(active).ty + 1
X        windw(nr).lx = 18
X        windw(nr).ly = 3
X        CALL refresh
XCASE "c"
X        CALL closewindow(nr)
XCASE "f"
X        CALL refresh
XCASE ELSE
X        CALL getscrn(scrnbuf(1))
XEND SELECT
X
XEND SUB
X
XSUB movewindow (nr)
X
XCALL putscrn(scrnbuf(1))
XCALL outlinewindow(nr)
XDO
X        c$ = INKEY$
X        IF LEFT$(c$, 1) <> CHR$(0) THEN
X                IF LEFT$(c$, 1) = CHR$(27) THEN EXIT DO
X        ELSE
X                SELECT CASE RIGHT$(c$, 1)
X                CASE CHR$(75)
X                        IF windw(nr).tx > 3 THEN
X                                CALL getscrn(scrnbuf(1))
X                                windw(nr).tx = windw(nr).tx - 1
X                                windw(nr).x = windw(nr).x - 1
X                                CALL outlinewindow(nr)
X                        END IF
X                CASE CHR$(77)
X                        IF windw(nr).tx + windw(nr).lx < 81 THEN
X                                CALL getscrn(scrnbuf(1))
X                                windw(nr).tx = windw(nr).tx + 1
X                                windw(nr).x = windw(nr).x + 1
X                                CALL outlinewindow(nr)
X                        END IF
X                CASE CHR$(72)
X                        IF windw(nr).ty > 1 THEN
X                                CALL getscrn(scrnbuf(1))
X                                windw(nr).ty = windw(nr).ty - 1
X                                windw(nr).y = windw(nr).y - 1
X                                CALL outlinewindow(nr)
X                        END IF
X                CASE CHR$(80)
X                        IF windw(nr).ty + windw(nr).ly < 25 THEN
X                                CALL getscrn(scrnbuf(1))
X                                windw(nr).ty = windw(nr).ty + 1
X                                windw(nr).y = windw(nr).y + 1
X                                CALL outlinewindow(nr)
X                        END IF
X                CASE ELSE
X                END SELECT
X        END IF
XLOOP
XCALL refresh
X
XEND SUB
X
XSUB nextline (nr, insert)
X
XIF insert = 1 THEN
X        temp$ = regel$(nr, windw(nr).texty)
X        FOR i = windw(nr).lasty + 1 TO windw(nr).texty + 2 STEP -1
X                regel$(nr, i) = regel$(nr, i - 1)
X        NEXT i
X        IF windw(nr).textx > LEN(temp$) THEN
X                regel$(nr, i) = ""
X        ELSE
X                regel$(nr, i - 1) = LEFT$(temp$, windw(nr).textx - 1)
X                regel$(nr, i) = RIGHT$(temp$, LEN(temp$) - windw(nr).textx + 1)
X        END IF
X        windw(nr).lasty = windw(nr).lasty + 1
XEND IF
Xwindw(nr).x = windw(nr).tx + 1
Xwindw(nr).textx = 1
Xwindw(nr).texty = windw(nr).texty + 1
XIF windw(nr).y < windw(nr).ty + windw(nr).ly - 2 THEN
X        windw(nr).y = windw(nr).y + 1
X        CALL rewritewindow(nr)
XELSE
X        CALL scrolldown(nr, 1)
XEND IF
XIF windw(nr).leftmargin > 1 THEN CALL scrollleft(nr, windw(nr).leftmargin + 1)
XCALL curs(nr, 1)
X
XEND SUB
X
XSUB openwindow (nr)
X
XCALL dowindow(windw(nr).ty, windw(nr).tx, windw(nr).ly, windw(nr).lx, editborder%, editback%, editframe%, shadow%, windw(nr).titel, 2)
Xwindw(nr).display = 1
X
XEND SUB
X
XSUB outlinewindow (nr)
X
XCALL putscrn(scrnbuf(1))
Xocolor% = editback% * 16 + 15 - editborder%
Xtop$ = CHR$(218) + STRING$((((windw(nr).lx - 2) / 2) - LEN(windw(nr).titel) / 2), 196) + windw(nr).titel + STRING$(FIX(((windw(nr).lx - 2) / 2) - LEN(windw(nr).titel) / 2), 196) + CHR$(191)
Xbot$ = CHR$(192) + STRING$(windw(nr).lx - 2, 196) + CHR$(217)
XCALL prtscrn(top$, windw(nr).ty, windw(nr).tx, ocolor%)
XCALL prtscrn(bot$, windw(nr).ty + windw(nr).ly - 1, windw(nr).tx, ocolor%)
XFOR y% = windw(nr).ty + 1 TO windw(nr).ty + windw(nr).ly - 2
X        CALL prtscrn(CHR$(179), y%, windw(nr).tx, ocolor%)
X        CALL prtscrn(CHR$(179), y%, windw(nr).tx + windw(nr).lx - 1, ocolor%)
XNEXT y%
X
XEND SUB
X
XSUB pgdn (nr)
X
XCALL curs(nr, 0)
Xsteps = windw(nr).ly - 2
XIF windw(nr).texty + steps <= windw(nr).lasty THEN
X        CALL scrolldown(nr, steps)
X        windw(nr).texty = windw(nr).texty + steps
XEND IF
XCALL curs(nr, 1)
X
XEND SUB
X
XSUB pgup (nr)
X
XCALL curs(nr, 0)
Xsteps = windw(nr).ly - 2
XIF windw(nr).topmargin - steps >= 1 THEN
X        CALL scrollup(nr, steps)
X        windw(nr).texty = windw(nr).texty - steps
XELSE
X        CALL scrollup(nr, windw(nr).topmargin - 1)
X        windw(nr).texty = 1
X        windw(nr).y = windw(nr).ty + 1
XEND IF
XCALL curs(nr, 1)
X
XEND SUB
X
XSUB readconfig (f$)
X
XOPEN f$ FOR INPUT AS #1
XINPUT #1, prompt$
XINPUT #1, statusline
XINPUT #1, shadow%
XINPUT #1, back%
XINPUT #1, sysback%
XINPUT #1, sysfore%
XINPUT #1, sysborder%
XINPUT #1, sysframe%
XINPUT #1, editback%
XINPUT #1, editfore%
XINPUT #1, editborder%
XINPUT #1, editframe%
XFOR t = 0 TO maxwin
X        INPUT #1, windw(t).titel
X        INPUT #1, windw(t).filename
X        INPUT #1, windw(t).tx
X        INPUT #1, windw(t).ty
X        INPUT #1, windw(t).lx
X        INPUT #1, windw(t).ly
X        windw(t).x = windw(t).tx + 1
X        windw(t).y = windw(t).ty + 1
X        windw(t).leftmargin = 1
X        windw(t).topmargin = 1
X        windw(t).textx = 1
X        windw(t).texty = 1
X        windw(t).lasty = 1
X        windw(t).mem = 1
XNEXT t
XCLOSE #1
X
XEND SUB
X
XSUB refresh
X
XLOCATE , , 0
XCLS
XFOR t = 0 TO maxwin
X        IF windw(t).display = 1 AND t <> active THEN
X                CALL activatewindow(t)
X                CALL curs(t, 0)
X        END IF
XNEXT t
XIF active >= 0 THEN IF windw(active).display = 1 THEN CALL activatewindow(active)
X
XEND SUB
X
XSUB resizewindow (nr)
X
XCALL putscrn(scrnbuf(1))
XCALL outlinewindow(nr)
XDO
X        c$ = INKEY$
X        IF LEFT$(c$, 1) <> CHR$(0) THEN
X                IF LEFT$(c$, 1) = CHR$(27) THEN EXIT DO
X        ELSE
X                SELECT CASE RIGHT$(c$, 1)
X                CASE CHR$(75)
X                        IF windw(nr).lx > 18 THEN
X                                CALL getscrn(scrnbuf(1))
X                                windw(nr).lx = windw(nr).lx - 1
X                                CALL outlinewindow(nr)
X                        END IF
X                CASE CHR$(77)
X                        IF windw(nr).tx + windw(nr).lx < 81 THEN
X                                CALL getscrn(scrnbuf(1))
X                                windw(nr).lx = windw(nr).lx + 1
X                                CALL outlinewindow(nr)
X                        END IF
X                CASE CHR$(72)
X                        IF windw(nr).ly > 3 THEN
X                                CALL getscrn(scrnbuf(1))
X                                windw(nr).ly = windw(nr).ly - 1
X                                CALL outlinewindow(nr)
X                        END IF
X                CASE CHR$(80)
X                        IF windw(nr).ty + windw(nr).ly < 25 THEN
X                                CALL getscrn(scrnbuf(1))
X                                windw(nr).ly = windw(nr).ly + 1
X                                CALL outlinewindow(nr)
X                        END IF
X                CASE ELSE
X                END SELECT
X        END IF
XLOOP
XCALL refresh
X
XEND SUB
X
XSUB rewriteline (nr, lin, ypos%)
X      
Xwinwidth = windw(nr).lx - 2
Xtemp$ = MID$(regel$(nr, lin), windw(nr).leftmargin, winwidth)
XCALL prtscrn(temp$, ypos%, windw(nr).tx% + 1, editfore%)
XIF LEN(temp$) < winwidth THEN CALL prtscrn(SPACE$(winwidth - LEN(temp$)), ypos%, windw(nr).tx% + LEN(temp$) + 1, editfore%)
X
XEND SUB
X
XSUB rewritewindow (nr)
X
XFOR i% = windw(nr).ty + 1 TO windw(nr).ty + windw(nr).ly - 2
X        winwidth = windw(nr).lx - 2
X        temp$ = MID$(regel$(nr, windw(nr).topmargin + (i% - windw(nr).ty) - 1), windw(nr).leftmargin, winwidth)
X        CALL prtscrn(temp$, i%, windw(nr).tx% + 1, editfore%)
X        IF LEN(temp$) < winwidth THEN CALL prtscrn(SPACE$(winwidth - LEN(temp$)), i%, windw(nr).tx% + LEN(temp$) + 1, editfore%)
XNEXT i%
X
XEND SUB
X
XSUB saveconfig (f$)
X
XOPEN f$ FOR OUTPUT AS #1
XPRINT #1, prompt$
XPRINT #1, statusline
XPRINT #1, shadow%
XPRINT #1, back%
XPRINT #1, sysback%
XPRINT #1, sysfore%
XPRINT #1, sysborder%
XPRINT #1, sysframe%
XPRINT #1, editback%
XPRINT #1, editfore%
XPRINT #1, editborder%
XPRINT #1, editframe%
XFOR t = 0 TO maxwin
X        PRINT #1, windw(t).titel
X        PRINT #1, windw(t).filename
X        PRINT #1, windw(t).tx
X        PRINT #1, windw(t).ty
X        PRINT #1, windw(t).lx
X        PRINT #1, windw(t).ly
XNEXT t
XCLOSE #1
X
XEND SUB
X
XSUB savefile (nr, filename$, linestart, lineend)
X
XOPEN filename$ FOR OUTPUT AS #1
XFOR i = linestart TO lineend
X        PRINT #1, regel$(nr, i)
XNEXT i
XCLOSE #1
X
XEND SUB
X
XSUB saveinteractive (nr)
X
XCALL putscrn(scrnbuf(1))
XCALL dowindow(19, 50, 5, 15, sysborder%, sysback%, sysframe%, shadow%, "Save", 0)
XCALL prtscrn("Saving..", 21, 53, sysfore%)
Xlineend = windw(nr).lasty
XCALL savefile(nr, windw(nr).filename, 1, lineend)
XCALL getscrn(scrnbuf(1))
X
XEND SUB
X
XSUB scrolldown (nr, steps)
X
Xwindw(nr).topmargin = windw(nr).topmargin + steps
XCALL rewritewindow(nr)
X
XEND SUB
X
XSUB scrollleft (nr, steps)
X
Xwindw(nr).leftmargin = windw(nr).leftmargin - steps
XIF windw(nr).leftmargin < 1 THEN windw(nr).leftmargin = 1
XCALL rewritewindow(nr)
X
XEND SUB
X
XSUB scrollright (nr, steps)
X
Xwindw(nr).leftmargin = windw(nr).leftmargin + steps
XCALL rewritewindow(nr)
X
XEND SUB
X
XSUB scrollup (nr, steps)
X
Xwindw(nr).topmargin = windw(nr).topmargin - steps
XIF windw(nr).topmargin < 1 THEN windw(nr).topmargin = 1
XCALL rewritewindow(nr)
X
XEND SUB
X
XSUB showstatus
X
Xtemp1$ = RIGHT$(STR$(windw(active).texty), LEN(STR$(windw(active).texty)) - 1)
Xtemp2$ = RIGHT$(STR$(windw(active).textx), LEN(STR$(windw(active).textx)) - 1)
XCALL prtscrn(STRING$(4 - LEN(temp1$), 48) + temp1$ + ":" + STRING$(4 - LEN(temp2$), 48) + temp2$, windw(active).ty + windw(active).ly - 1, windw(active).tx + windw(active).lx - 10, editback% * 16 + editborder%)
X
XEND SUB
X
XSUB wordleft (nr)
X
XIF windw(nr).textx = 1 THEN
X        CALL cursorup(nr)
X        CALL endofline(nr)
XEND IF
Xtemp$ = regel$(nr, windw(nr).texty)
XFOR i = windw(nr).textx - 1 TO 2 STEP -1
X        IF letter(MID$(temp$, i, 1)) = 1 AND letter(MID$(temp$, i - 1, 1)) = 0 THEN EXIT FOR
XNEXT i
XIF i > 1 THEN
X        CALL backspace(nr, 0, windw(nr).textx - i)
XELSE
X        CALL beginofline(nr)
XEND IF
X
XEND SUB
X
XSUB wordright (nr)
X
Xtemp$ = regel$(nr, windw(nr).texty)
XFOR i = windw(nr).textx + 1 TO LEN(temp$)
X        IF letter(MID$(temp$, i - 1, 1)) = 0 AND letter(MID$(temp$, i, 1)) = 1 THEN EXIT FOR
XNEXT i
XIF i <= LEN(temp$) THEN
X        CALL cursorright(nr, i - windw(nr).textx)
XELSE
X        CALL cursordown(nr)
X        CALL beginofline(nr)
XEND IF
X
XEND SUB
X
XSUB writechar (nr, char$)
X
Xtemp$ = regel$(nr, windw(nr).texty)
XIF windw(nr).textx > LEN(temp$) THEN
X        regel$(nr, windw(nr).texty) = temp$ + char$
X        CALL prtscrn(char$, windw(nr).y, windw(nr).x, editfore%)
XELSE
X        regel$(nr, windw(nr).texty) = LEFT$(temp$, windw(nr).textx - 1) + char$ + RIGHT$(temp$, LEN(temp$) - windw(nr).textx + 1)
X        lin = windw(nr).texty
X        CALL rewriteline(nr, lin, windw(nr).y)
XEND IF
Xwindw(nr).textx = windw(nr).textx + 1
XIF windw(nr).x > windw(nr).tx + windw(nr).lx - 3 THEN
X        CALL scrollright(nr, 1)
XELSE
X        windw(nr).x = windw(nr).x + 1
XEND IF
XCALL curs(nr, 1)
X
XEND SUB
X
+ END-OF-FILE pedit.asc
chmod 'u=rw,g=r,o=r' 'pedit.asc'
set `wc -c 'pedit.asc'`
count=$1
case $count in
42576)	:;;
*)	echo 'Bad character count in ''pedit.asc' >&2
		echo 'Count should be 42576' >&2
esac
echo Extracting 'q4t.bi'
sed 's/^X//' > 'q4t.bi' << '+ END-OF-FILE ''q4t.bi'
X'----------------------------------------------------------------------------
X'                            **    Q4T.BI    **
X'     The $INCLUDE file needed for the operation of Q4T.QLB and Q4T.LIB
X'                 Written by R. J. Crouch  -  April 1990
X'                     Copyright  -  1990  -  CareWare
X'----------------------------------------------------------------------------
X
XDECLARE FUNCTION Ctr! (strg$)
XDECLARE SUB Delay (lenght!, Forced%)
X
XTYPE RegType
X   ax    AS INTEGER
X   bx    AS INTEGER
X   cx    AS INTEGER
X   dx    AS INTEGER
X   bp    AS INTEGER
X   si    AS INTEGER
X   di    AS INTEGER
X   flags AS INTEGER
X   ds    AS INTEGER
X   es    AS INTEGER
XEND TYPE
X
+ END-OF-FILE q4t.bi
chmod 'u=rw,g=r,o=r' 'q4t.bi'
set `wc -c 'q4t.bi'`
count=$1
case $count in
702)	:;;
*)	echo 'Bad character count in ''q4t.bi' >&2
		echo 'Count should be 702' >&2
esac
echo Extracting 'q4t.lib.uu'
sed 's/^X//' > 'q4t.lib.uu' << '+ END-OF-FILE ''q4t.lib.uu'
Xbegin 644 q4t.lib
XM\ T  #0   $          ( 9 !=E.EQD96UO7'%B7&%B<V]L=71E+F%S;5>(
XM#   HPAA8G-O;'5T96*( P" GE>6+   !D1'4D]54 U!0E-/3%5415]415A4
XM!$1!5$$$0T]$101?0E-3!5]$051!49@' $@,  ,% 028!P!(   '! $-F < 
XM2   !@0!#IH&  +_ O\#6XP(  5")%-%1P BD \   $(04)33TQ55$4   #Y
XMB 0  *(!T: 0  $  %A:6U)0_S8  /\WRVJ<!@#$!Q8! 7N* @  =     " 
XM%P 593I<9&5M;UQQ8EQI;G1R<'0N87-M&8@*  "C!FEN=')P="2( P" GE>6
XM)0  !D1'4D]54 1$051!!$-/1$4%7T1!5$$+24Y44E!47U1%6%0CF < 2 <!
XM!@0!!I@' $@   4# 1":!  "_P)?D!X   $)24Y415)255!4    "DE.5$52
XM4E505%@-   _B 0  *(!T: + 0$  %6+[(/$XL=&^@@ ZPM5B^R#Q.+'1OH*
XM (EVY(E^XHQ>_)R/1OZ+=@B-?N:+3OK\%@?SI56+=@J+' K_= /I  " ^R5T
XM!8#[)G4.N @ 4+@"RE"X@\10ZP<SP%"XR@90BN.PS5 .N   4!:+Q 4& %"+
XM1O0EU0]0BT;FBU[HBT[JBU;LBW;PBW[R@W[Z"'04@7[V__]T XY>]H%^^/__
XM= ..1OB+;NZ=RU6+[(MN IR/1O3_=OZ=B4;FB5[HB4[JB5;LBT;>B4;NB7;P
XMB7[RC%[VC$;XCE[\C7;F'@>+?@:+3OK\\Z6+=N2+?N*+Y5W*!@"+=@K'!/__
XMBW;DBW[BCE[\B^5=R@8 ZYP/ (0^  $!\0#$9@ ! :@ S(H"  !T    @!D 
XM%V4Z7&1E;6]<<6)<:6YT.#9O;&0N87-MOH@,  "C"&EN=#@V;VQDR8@# (">
XM5Y8G   &1$=23U50#4E.5#@V3TQ$7U1%6%0$1$%4001#3T1%!5]$051!R)@'
XM $@> 0,% ?&8!P!(   &! $.F@0  O\"7Y <   !"$E.5#@V3TQ$    "4E.
XM5#@V6$],1 T  &V(!   H@'1H"(! 0  58OL@\3@QT;X" #K"U6+[(/$X,=&
XM^ H B7;BB7[@G(]&_HMV!N@  (E6_(E&^HMV".@  !Z.VHOPC7[DBT[X_!8'
XM\Z4?58MV"HL<"O]T ^D  (#[)70%@/LF=0ZX" !0N +*4+B#Q%#K!S/ 4+C*
XM!E"*X[#-4 ZX  !0%HO$!08 4(M&\B75#U"+1N2+7N:+3NB+5NJ+=NZ+?O"#
XM?O@(=!2!?O3__W0#CE[T@7[V__]T XY&]HMN[)W+58OLBVX"G(]&\O]V_IV)
XM1N2)7N:)3NB)5NJ+1MR)1NR)=NZ)?O",7O2,1O86'XUVY(Y&_(M^^HM.^/SS
XMI8MVXHM^X(OE7<H& !8?BW8*QP3__XMVXHM^X(OE7<H& (M4 HL$P_^<'0"$
XM)@ ! 1@!A#(  0$8 810  $! P'$>  ! ;H WXH"  !T             ( 1
XM  ]A<VU<9V5T<V-R;BYA<VU>B L  *,'9V5T<V-R;LV6)@  !D1'4D]54 Q'
XM15130U).7U1%6%0$1$%4001#3T1%!5]$051![)@' $@[  ,% =68!P!(   &
XM! $.F@0  O\"7Y .   !!T=E=%-C<FX   "DB 0  *(!T: _  $  %6+[!X&
XM5E>+7@:+#XMW KL  ([#)J%)!#P#?@<\!W0)Z9"0NP"XZ9"0NP"PCL._  #S
XMI%]>!Q]=R@( KZ &  $@ .L1/: &  $F .L$1(H"  %S            @!$ 
XM#V%S;5QP=71S8W)N+F%S;46("P  HP=P=71S8W)NM)8F   &1$=23U50#%!5
XM5%-#4DY?5$585 1$051!!$-/1$4%7T1!5$'3F < 2#T  P4!TY@' $@   8$
XM 0Z:!  "_P)?D X   $'4'5T<V-R;@   &N(!   H@'1H$$  0  58OL'@96
XM5XM>!HL/BW\"NP  CL,FH4D$/ -^!SP'= GID)"[ +CID)"[ + >CML'O@  
XM\Z1?7@<?7<H" &F@!@ !( #K$SN@!@ !)@#K!$2* @ !<P        " #  *
XM431724Y$+D)!4Z^("@  HP9Q-'=I;F1NB"0   !-:6-R;W-O9G0@475I8VM"
XM05-)0R!#;VUP:6QE<B T+C 2B D  (%"0T]--#%HB 8  *$Q0U8'EJH   ="
XM0U]#3T1%!4),04Y+!T)#7U9!4E,'0D-?4T5'4P9$14)465 &1$5"4UE-!T)#
XM7T1!5$$'0E)?1$%400="4E]32UE3!D-/34U/3@="0U]$051!!TY-04Q,3T,(
XM14Y-04Q,3T,%0D-?1E0%0D-?0TX%0D-?1%,&0D-?4T%"!4)#7U-!!R0D5%E0
XM15,))"1364U"3TQ3!D1'4D]54 M1-%=)3D1?0T]$1;68!P!H:@<7 @%NF < 
XM:   "0,![)@' &@   H# >N8!P!X   + P':F < 2 8 # @!_I@' %@   T$
XM ?>8!P!8   .! 'VF < 2   #P4!!)@' &@J ! % ;F8!P!H P 1!0'?F < 
XM2   $@4! 9@' $@$ !,% ?R8!P @   5!P$DF < (   % 8!)IH8 !;_ O\#
XM_P3_!?\&_P?_"/\)_PK_"_\,]IP+ $0!  $!"0($ P7[C!,  R1!0P $)$1!
XM0P %8B1S96< _* (  P       !,G 8 S  $ 0&,H#0  0  8FQ1-%=)3D0@
XM(                                             #__X 0V)P7 ,08
XMA 3$#H0%Q!"$",0@A G$#( * @!AC!$ !D(D14Y200 &0B1305-3 "N@4P !
XM, #I  "Y  ":     +@  %"-1O)0F@    "+=@J#/ !_ ^D  (,\ ;@  '4!
XM2(,\ [D  '4!20O((\EU ^D  (MV%HL$!?[_B4;PB4;NZ0  %YP. ,P'5@3$
XM#(D  ,P45@65H"  "0  %P   $-O<'ER:6=H="TQ.3DP+4-A<F5787)E #"<
XM!@#$ HD$  N@!@ !;  1 -R@.0 !?P"+=@J#/ *X  !U 4B#/ 2Y  !U 4D+
XMR"/)=0/I  "+=A:+!(M^$HO8 P6)1O"#PP*+PXE&[LR@!@ !?0 U *>@!@ !
XMFP 7 *>@0@ !M "+=AB+!(M^% ,%/1D N0  ?@%)@W[P ;@  'T!2 O!BT[P
XM@\$"@_E0N@  ?@%*"] CTG4#Z0  BW8*QP0  "2@!@ !Z0 ' &F,"0 &0B1&
XM4T-. -6@*@ !\@"+=@J#/ -T ^D  (MV&/\TBW86BP1(4+@! %":     (E&
XM[.D  $6<!0#,'%8&&Z &  '[ !L 0Z O  $8 8MV"H,\!'0#Z0  BW88_S2+
XM=A:+!(M^$@,%0%"X 0!0F@    ")1NSI  #]G 4 S"%6!A:@!@ !(0$@ !>@
XM"0 !0P''1NP  !F@!@ !%@$P !*@!@ !00$% !*,(0 &0B1&24PR  9")$E.
XM5#0 !D(D1DE35  &0B1-54DT "*@,P !2 &X$ "94E"+1NR:     ,TT-@  
XMS3V:     )H     )0< @^( 4E":     (E&ZHZ<%@#,"E8'Q!&)' #,%E8(
XMS!M6"<PH5@K'H @ "1P   " 07*@!@ !40 D >.@@0 !=P&+=A:#/ &X  !]
XM 4B+=AB#/ &Y  !] 4D+R"/)= /I  "+=A:+!(M^$@,%2#U0 +D  'X!28MV
XM&(L$BWX4 P5(/1D N@  ?@%*"]$CTG0#Z0  BW8.BP0E!P#1X-'@T>#1X(MV
XM$ ,$B4;HBW8,@SP N   ?@%(@SP&N0  ?;B,$0 &0B1&0TA2  9")%-#050 
XM/:!\  'T 0%)(\@CR74#Z0  @SP!= /I  #'1N;: ,=&Y+\ QT;BP #'1N#9
XM ,=&WL0 QT;<LP#'1MK$ ,=&V+, N+0 4)H     4+@  %":     %"-1M10
XMF@    "X  !0N,, 4)H     4)H     4(U&T%":     .D  (:<(P#,0%8+
XMQ$:)( #,2E8,S%16!<19B2  S&%6"\QG5@S,<58%K: *  D@  $    @LEJ<
XM!@#$ HDD .N@!@ !!0)E .V@=  !; *+=@R#/ )T ^D  ,=&YLD QT;DNP#'
XM1N+( ,=&X+P QT;>S0#'1MRZ ,=&VLT QT;8N@"XM0!0F@    !0N   4)H 
XM    4(U&U%":     +@  %"XQ@!0F@    !0F@    !0C4;04)H     Z0  
XMCYPC ,PX5@O$/HD@ ,Q"5@S,3%8%Q%&)( #,658+S%]6#,QI5@7MH 8  74"
XM90!]H'0  =P"BW8,@SP#= /I  #'1N;5 ,=&Y+@ QT;BU #'1N"^ ,=&WLT 
XMQT;<LP#'1MK- ,=&V+, N+4 4)H     4+@  %":     %"-1M10F@    "X
XM  !0N,8 4)H     4)H     4(U&T%":     .D  !6<(P#,.%8+Q#Z)( #,
XM0E8,S$Q6!<11B2  S%E6"\Q?5@S,:58%[: &  'E F4 #:!T  %, XMV#(,\
XM!'0#Z0  QT;FU@#'1N2W ,=&XM, QT;@T #'1M[$ ,=&W+H QT;:Q #'1MBZ
XM +BT %":     %"X  !0F@    !0C4;44)H     N   4+C# %":     %":
XM     %"-1M!0F@    #I  ":G", S#A6"\0^B2  S$)6#,Q,5@7$48D@ ,Q9
XM5@O,7U8,S&E6!>V@!@ !50-E )R@<0 !O .+=@R#/ 5T ^D  ,=&YML QT;D
XMVP#'1N+; ,=&X-L QT;>WP#'1MS; ,=&VMP QT;8VP"XW0!0F@    !0N   
XM4)H     4(U&U%":     +@  %"XW@!0F@    !0F@    !0C4;04)H     
XM()PC ,PX5@O$/HD@ ,Q"5@S,3%8%Q%&)( #,658+S%]6#,QI5@7MH 8  6H"
XMO0$OH 8  =H"30$OH 8  4H#W0 OH 8  ;H#;0 OH 8  <4#8@ OC D !D(D
XM4U1220"]H($  2D$_W;FF@    !0BW82BP0%_O]0_W;>B4;.F@    !0F@  
XM  !0_W;DF@    !0F@    !0C4;*4)H     _W;<F@    !0_W;.N"  4)H 
XM    4)H     4/]VV)H     4)H     4(U&QE":     /]VXIH     4/]V
XMSO]?G#4 S 16"\P95@W,'U8,S"A6"\PN5@S,.%8%S$!6"\Q-5@W,4U8,S%Q6
XM"\QB5@S,;%8%S'16"Z*,"@ '4%)44T-23@ WH&P  :8$=MJ:     %":    
XM %#_=N":     %":     %"-1L)0F@    "-1LI0_W88_W86C4;H4)H     
XMBW84BP2+?A@#!07^_XE&P(L%0.D  )"-1L90C4:^4/]V%HU&Z%":     (M&
XMOD!CG!T S -6#<P)5@S,$E8+S!A6#,PB5@7,-58.S&!6#AN@!@ !\P09 $F@
XM(P !#@6)1KX[1L!^X(U&PE"-1KY0_W86C4;H4)H     Z0  'IP% ,P85@X7
XMH 8  ?T!+@,JH$<  2T%BW82_S2X( !0F@    !0C4:X4)H     BW84BP2+
XM?A@#!4B)1KR+!>D  (U&N%"-1KY0_W86C4;H4)H     BT:^0$6<#0#,"E8-
XMS!16!<P[5@YXH 8  58%& #FH P  7 %B4:^.T:\?N"VH 8  2L%2P#>C D 
XM!D(D4U1$3 #(H%\  7@%BW8*@SP ?P/I  "+=AB+!(M^%(O8 P5(B4:V0XO#
XMZ0  D+@" %"XL0!0F@    !0C4:R4)H     C4:R4(U&L%"-1O!0C4;J4)H 
XM    C4:R4)H     BT:P0)F<$0#,*U8-S#56!<Q*5@[,4U8/GZ &  &7!3H 
XM@Z!"  '3!8E&L#M&MGZ_BW82_S2XL0!0F@    !0C4:L4)H     C4:L4(U&
XML%"-1NY0C4;J4)H     C4:L4)H     /9P1 ,P25@W,'%8%S#%6#LPZ5@\#
XMH 8  8$%C@!%C D !D(D1DQ%3@#:H&   1$&_W8(F@     +P+D  'X!2?]V
XM"(E.JIH     !00 BW82.P2Y  !] 4DC3JHCR74#Z0  BW8&@SP N   =0%(
XM@SP"N0  =0%)"\@CR74#Z0  BW88BP2)1JCI   -G D S 16$,P75A#<H 8 
XM 6 &"P#HH!(  6T&BW88BP2+?A0#!4B)1JA.H 8  6L&#@#:H#(  7L&BW8&
XM@SP!?P/I  "-1M10_W8(F@    !0C4;04)H     4(U&I%":     .D  /6<
XM#0#,$U8,S!U6#,PG5@5]H 8  80&(P"LH"0  :D&N   4/]V")H     4+@ 
XM %":     %"-1J10F@    #*G!< Q &)( #,"%8,Q Z)( #,$E8,S!Q6!:N@
XM!@ !IP8@ (R,"0 &0B1&25,R .N@4  !R0:+=A:+!)H     BW82BP2+V(U&
XMI%")7J*:     "M&HO?8F@    #--#8  ,TZP9H     B4:@C4:D4(U&J%"-
XM1J!0C4;H4)H     DYP: ,P&5@?,&580S"-6!\0JB28 S#!6$<Q(5@X,H @ 
XM"28     0.F@!@ !0@;1 $"@!@ !E@%]!4"@!@ !QP%,!4"@3  !%0>-1KA0
XMF@    "-1L)0F@    "-1M!0F@    "-1M10F@    "-1L90F@    "-1O)0
XMF@    "-1J10F@    "-1LI0F@    #+G"$ S 56#\P.5@_,%U8/S"!6#\PI
XM5@_,,E8/S#M6#\Q$5@^7H 8  30 5@#/C D !D(D15A300#.H P  5T'F@  
XM  #*% !WG 4 S %6$BJ@!@ !,0 R!^^0#P   0A$3U=)3D1/5S,  +J@!P *
XM  #__P%0C D !D(D0T5.4 #9H D  64'F@    !0G 4 S %6$RF* @ !<P  
XM      " $0 /87-M7'!R='-C<FXN87-M2(@+  "C!W!R='-C<FZWEC    9$
XM1U)/55 ,4%)44T-23E]415A4"4-!4D1?1$%4001$051!!$-/1$4%7T1!5$$P
XMF H  $   &, ! $!M9@' $A<  ,& ;.8!P!(   '!0$,F@0  O\#7I .   "
XM!U!R=%-C<FX   "-B 0  *(!T92K   "&    !D  0 :  , &P $ !P !0 =
XM  8 'P ' "  "@ A  P (P - "0 $  E !( )P 3 "@ %@ I !@ *@ : "P 
XM'0 M "  +@ B "\ )P P "D ,@ K #, +@ T #, -0 V #8 .0 W #L .0 ^
XM #H 0P [ $8 / !) #T 2P _ $T 0 !. $$ 40!" %( 1 !4 $4 50!& %8 
XM1P!7 $@ 6 !) %D @J!@  (  %6+[%<>5@:+7@B+/T^+7@J+!TB+7@R+#^,Z
XMBW<"NP  CL,F]R8   /XT>>X + FBQX  (/C,(/[,'0#N "X)HL6  "#P@:+
XM7@:+'X[ I":('4?B^0=>'U]=R@@ VIP9 ,@>4 %C ,0E4 %* ,0Q4 $0 ,1!
XM4 %C !Z* @ !<P           ( ,  I1-%1/3TPN0D%3HX@*  "C!G$T=&]O
XM;&*()    $UI8W)O<V]F="!1=6EC:T)!4TE#($-O;7!I;&5R(#0N,!*("0  
XM@4)254XT,5*(!@  H3%#5@>6J@  !T)#7T-/1$4%0DQ!3DL'0D-?5D%24P="
XM0U]314=3!D1%0E194 9$14)364T'0D-?1$%400="4E]$051!!T)27U-+65,&
XM0T]-34].!T)#7T1!5$$'3DU!3$Q/0PA%3DU!3$Q/0P5"0U]&5 5"0U]#3@5"
XM0U]$4P9"0U]304(%0D-?4T$')"1465!%4PDD)%-934)/3%,&1$=23U50"U$T
XM5$]/3%]#3T1%J9@' &BP 1<" 2Z8!P!H   ) P'LF < :   "@,!ZY@' '@ 
XM  L# =J8!P!("@ ," 'ZF < 6   #00!]Y@' %@   X$ ?:8!P!(   /!0$$
XMF < :"P $ 4!MY@' &@# !$% =^8!P!(   2!0$!F < 2 0 $P4!_)@' "  
XM !4' 228!P @   4!@$FFA@ %O\"_P/_!/\%_P;_!_\(_PG_"O\+_PSVG L 
XM1 $  0$) @0#!?N,$P #)$%#  0D1$%#  5B)'-E9P#\H @ #        $R<
XM!@#,  0! 8R@-  !  !B;5$T5$]/3" @                            
XM                 /__@ #;G!< Q!B$!,0.A 7$$(0(Q""$"<0,@ H" &&,
XM*0 &0B1305-3  9")$5.4D$ !D(D1DQ%3@ &0B1&24PR  9")$9)4S( B:!+
XM  $P +@  %"X  !0F@    #I  "Y  ":     ,TU!@  _W8(F@    ":    
XM ,TT-@  S3KIF@    ":     (MV!LTU',T]BT8&Y)PM ,0!B0  Q 6+!@#,
XM"58$S!16!<0;B1P S"%6!LPF5@?$+8D@ ,PS5@C,.%8'L: H  D  !<   !#
XM;W!Y<FEG:'0M,3DY,"U#87)E5V%R90   "!"    0(:<!@#$ HD$  N@!@ !
XM00   !B,"0 &0B1%6%-! ,Z@#  !=P":     ,H$ '2<!0#, 58),Z &  $^
XM #\ W) *   ! T-44D   #F,'@ &0B1424U2  M-3U5315-405154P &0B1&
XM0TU0 *2@7P !?P#I  "Y  ":     )H     B_#--02+=@C-- 3--5[RS3V-
XM1O!0F@    "+=@:+!"/ =0/I  "0F@    "+\,TU!,TU7NS-/<TU1O+--4;L
XMS3V:     ';?Z0  Z)P5 ,P'5@7,#%8*S"96"\PX5@K,4E8,LJ &  &S "4 
XM@8P1  9")$E.2UD !D(D4T--4  =H"H  =H F@    !0N   4)H     =0/I
XM  ":     %"-1NA0F@    #KVY")G!8 S %6#<0'B20 S M6#LP55@W,'U8$
XMXJ (  DD       KG 8 Q *)* #GH 8  >P $@!;H"L  0 !S34&  "+=@C-
XM-03-/9H     =0/I  ":     (OPS34$S35>[,T]IIP. ,0#B2@ S Y6#,P8
XM5@I>H @ "2@      ">@!@ !%0$0 #.,#0 *34]54T5#3$E#2P!NH!\  2<!
XMBT;P(\!U ^D  (U&YE"-1N10C4;B4)H     9)P% ,P75@\7H 8  2\!$0 8
XMH%,  4(!F@    !0C4;>4)H     S35&\LTU1NS-/9H     N   =@%(B]B-
XM1MY0N   4(E>W)H     N   = %("T;<"T;F"T;D"T;B(\!U ^EO__^<%@#,
XM 58-S M6!,P:5@S$*XDD ,PR5@ZGH 8  =@ MP#*C D !D(D4U1$3 #(H!8 
XM 9$!C4;>4)H     C4;H4)H     =YP) ,P%5A#,#E80Y* &  &# !H O* ,
XM  &C 9H     R@0 1YP% ,P!5@DSH 8  8  *0&OD P   $%1$5,05F"  !M
XMH < "@  __\!4(P)  9")$-%3E  V: )  &K 9H     $)P% ,P!5A$KB@( 
XM 7,             @ T "U$T34]54T4N0D%35H@+  "C!W$T;6]U<V7UB"0 
XM  !-:6-R;W-O9G0@475I8VM"05-)0R!#;VUP:6QE<B T+C 2B D  (%"4E5.
XM-#%2B 8  *$Q0U8'EJL   ="0U]#3T1%!4),04Y+!T)#7U9!4E,'0D-?4T5'
XM4P9$14)465 &1$5"4UE-!T)#7T1!5$$'0E)?1$%400="4E]32UE3!D-/34U/
XM3@="0U]$051!!TY-04Q,3T,(14Y-04Q,3T,%0D-?1E0%0D-?0TX%0D-?1%,&
XM0D-?4T%"!4)#7U-!!R0D5%E015,))"1364U"3TQ3!D1'4D]54 Q1-$U/55-%
XM7T-/1$5<F < :'8)%P(!8)@' &@   D# >R8!P!H   * P'KF < >   "P,!
XMVI@' $A\  P( 8B8!P!8   -! 'WF < 6   #@0!]I@' $@   \% 028!P!H
XM*@ 0!0&YF < : , $04!WY@' $@  !(% 0&8!P!(!  3!0'\F < (   %0<!
XM))@' "   !0& 2::&  6_P+_ _\$_P7_!O\'_PC_"?\*_PO_#/:<"P!$ 0 !
XM 0D"! ,%^XP3  ,D04, !"1$04, !6(D<V5G /R@"  ,        3)P& ,P 
XM! $!C* T  $  &)M431-3U5312                                  
XM            __^  +"<%P#$&(0$Q Z$!<00A C$((0)Q R "@( 88PD  9"
XM)$1$24T !D(D4T%34P &0B1%3E)!  E)3E1%4E)54%0 N*"!  $P #/ 4/\V
XM  "X @!0N $!4+@  %":     #/ 4/\V  "X @!0N $!4+@  %":     +@ 
XM %"X  !0F@    #I  "Y  ":     (MV"L<$  "+=@C'!   BW8&QP0  ,<&
XM   # ,=&]#, C4;T4+@  %"X  !0F@    "A  ") 9Q' ,0%BV  Q!"+3@#,
XM%%8$Q!V+8 #$*(MB ,PL5@3$,8D  ,0UBW0 S#E6!<Q$5@;$7XL& ,1MBP8 
XMQ'&+%@#,=58'Q'J+& !^H"  "0  %P   $-O<'ER:6=H="TQ.3DP+4-A<F57
XM87)E #"<!@#$ HD$  N@$  !K0!&\B/ =0/I  "C  "#G 8 Q J+> "-H 8 
XM ;0  P"BH"   ;D H0  .T;R=0/I   E 0 CP'4#Z0  BW8*QP0! -"<!@#$
XM 8MX ):@!@ !S  ' (:@&  !U0"A   E @ CP'4#Z0  BW8&QP0! ).<!@#$
XM 8MX ):@!@ !X  ' '*@&  !Z0"A   E!  CP'4#Z0  BW8(QP0! 'N<!@#$
XM 8MX ):@!@ !]  ' %Z@"@ !_0#'!@    "+G 8 Q *+> "5H 8  <( /P!8
XMH 8  7$ ! #DC D !D(D15A300#.H P  0,!F@    #*!@#EG 4 S %6"#2@
XM!@ !;@"; %"0$0   0I-3U5314-,24-+<   ]:"!  $+ >D  +D  )H     
XMBW8(@SP'N   ?@%(BW8*@SP/N0  ?@%)"\B+=@:!//\ N   ?@%("\$CP'0#
XMZ0  QP8   H QP8     QP8     BW8(BP31X-'@T>#1X-'@T>#1X-'@T>#1
XMX-'@T>"+=@J+#-'AT>'1X='AT>'1X='A]9P4 ,P'5@;$/8L& ,1#BP@ Q$F+
XM"@!3H"@  8@!T>$#R(MV!@,,B\&C  #'1O0S (U&]%"X  !0N   4)H     
XM-YP4 ,0,BPP Q!B+!@#$'(L6 ,P@5@>RH 8  40!9@"NH 8  0\! @!'H P 
XM :P!F@    #*!@ \G 4 S %6"#2@!@ !# &F *:0$@   0M-3U5314-54E-/
XM4@X! -R@@0 !M 'I  "Y  ":     (MV!HL$(\!U ^D  (MV#H,\ +@  'X!
XM2(M^#(,] +D  'X!22/(BW8*@SP N   ?@%((\&+=@B#/ "Y  !^ 4DCR"/)
XM=0/I  "+=@Z+!-'@T>#1X 7X_XE&](L%T>#1X-'@!?C_B4;RBW8*BP31X-'@
XMT3J<!0#,!U8&,* ?  $Q N %^/^)1O"+=@B+!-'@T>#1X 7X_XE&[ND  "6@
XM!@ !!@)$  V@!P !3 +I   AH 8  4H" P *H <  4\"Z0  'J &  ') 8< 
XM"* D  %2 HMV#HL$B4;TBW8,BP2)1O*+=@J+!(E&\(MV"(L$B4;N>Z &  %0
XM B  YZ ^  %R L<&   0 (M&\J,  (M&]*,  (M&[J,  (M&\*,  ,=&[#, 
XMC4;L4+@  %"X  !0F@    #'!@    "*G"T Q *+!@#$"HL* ,00BPP Q!:+
XM$ #$'(L2 ,0HBP8 Q"R+%@#,,%8'Q#:+>@"ZH 8  4T"70"MH 8  ;@!"@"6
XMH P  :P"F@    #*"@ WG 4 S %6"#2@!@ !M0'] *:0$P   0Q-3U531458
XM0TQ51$6W 0 %H($  ;0"Z0  N0  F@    "+=@:+!"/ =0/I  "+=@Z#/ "X
XM  !^ 4B+?@R#/0"Y  !^ 4DCR(MV"H,\ +@  'X!2"/!BW8(@SP N0  ?@%)
XM(\@CR74#Z0  BW8.BP31X-'@T> %^/^)1O2+!='@T>#1X 7X_XE&\HMV"HL$
XMT>#1X-$YG 4 S =6!C"@'P !,0/@!?C_B4;PBW8(BP31X-'@T> %^/^)1N[I
XM   DH 8  08#1  ,H <  4P#Z0  (* &  %* P, ": '  %/ ^D  !V@!@ !
XMR0*'  >@)  !4@.+=@Z+!(E&](MV#(L$B4;RBW8*BP2)1O"+=@B+!(E&[GJ@
XM!@ !4 ,@ .:@5  !<@/'!@  " "+1O2C  "+1O"C  #'1NPS (U&[%"X  !0
XMN   4)H     QP8   < BT;RHP  BT;NHP  QT;J,P"-1NI0N   4+@  %":
XM     ).<.P#$ HL& ,0*BPH Q!"+# #$'(L& ,0@BQ8 S"16!\0JBP8 Q#*+
XM"@#$.(L, ,1$BP8 Q$B+%@#,3%8':: &  %- W, EJ &  &X @P DZ ,  '"
XM YH     R@H ()P% ,P!5@@TH 8  ;4"$P&.D!(   $+34]54T5,24U)5%.W
XM @ ^H%L  <H#Z0  N0  F@    "+=@:+!"/ =0/I  "+=@J#/ "X  !^ 4B+
XM?@B#/0"Y  !^ 4DCR"/)=0/I  "+!-'@T>#1X 7X_XE&](L%T>#1X-'@!?C_
XMB4;RZ0  I)P% ,P'5@8PH 8  0 $'P VH <  2$$Z0  2J &  $?! , ,Z '
XM  $D!.D  $>@!@ !WP-& #&@%  !)P2+=@J+!(E&](MV"(L$B4;R:J &  $E
XM!!  (* L  $W!,<&   $ (M&\J,  (M&]*,  ,=&\#, C4;P4+@  %"X  !0
XMF@    !LG!X Q *+!@#$"HL* ,00BPP Q!R+!@#$((L6 ,PD5@?>H 8  2($
XM.P#XH 8  <X#!@""H P  5\$F@    #*!@"&G 4 S %6"#2@!@ !RP.: /&0
XM$@   0M-3U5314Q/0T%41<T# $&,$0 &0B1&24PR  9")$9)4S( :J!R  %G
XM!.D  +D  )H     QP8   , QT;T,P"-1O10N   4+@  %":     (MV!HL$
XM(\!U ^D  *$  )H     S30V  #-- 8  )H     BW8*B02A  ":     ,TT
XM-@  S30&  ":     (MV"(D$Z0  :IQ& ,P'5@;$#8L& ,0;BP8 Q!^+%@#,
XM(U8'Q#2+' #,-U8)Q#Z)' #$0XD@ ,Q&5@K$4(L: ,Q35@G$6HD< ,1?B2  
XMS&)6"B^@#  )'     !!  " /R^@!@ !F 0[ (*@%  !U02A  "+=@J)!*$ 
XM (MV"(D$ IP+ ,0!BQP Q F+&@![H 8  =,$$ !RH 8  6L$ @#HH P  >4$
XMF@    #*!@  G 4 S %6"#2@!@ !: 2# &J0%    0U-3U5315!/4TE424].
XM:@0 XJ!-  'M!.D  +D  )H     BW8&BP2)1O2#?O0 = /I  #'!@    #'
XM1O(S (U&\E"X  !0N   4)H     H0  BW8&B03'!@    #I  ".G"( S =6
XM!L0>BP8 Q"R+!@#$,(L6 ,PT5@?$.8L8 ,1"BWH @J &  $'!2T (* Z  $V
XM!8-^] %T ^D  ,<&   A ,=&\#, C4;P4+@  %"X  !0F@    "A  "+=@:)
XM!,<&     .D  ,Z<'@#$"XL& ,09BP8 Q!V+%@#,(58'Q":+& #$+XMZ ">@
XM!@ !/04M .J,%0 &0B121$E-  I)3E1%4E)54%18 )B@@@ !; 6#?O0"= /I
XM  #'!@  %0#'1NXS (U&[E"X  !0N   4)H     H0  0(E&[#/ 4/]V[+@"
XM %"X 0%0N   4)H     QP8  !8 O@  NP(  UP*CD0"C,"C  "[ @ #7 J.
XM1 *+PZ,  ,=&ZC, C4;J4+@  %"X  !0F@    #^G$0 Q N+!@#$&8L& ,0=
XMBQ8 S"%6!\0FBQ@ Q#N+3@#,/U8+Q$6+)@#$2HM. ,18BS@ Q&:++ #$<HLF
XM ,1VBSH S'I6#,:@!P !Z@7I  " H 8  7,%> !IH$L  >T%@W[T W0#Z0  
XMQP8  !< O@  NP(  UP*CD0"C,"C  "[ @ #7 J.1 *+PZ,  ,=&Z#, C4;H
XM4+@  %"X  !0F@    #I  ".G", Q N+)@#$$(M. ,0>BS@ Q"R++ #$.(LF
XM ,0\BSH S$!6#.B@!@ !] 4^ "*@@@ !- :#?O0$= /I  #'!@  %0#'1N8S
XM (U&YE"X  !0N   4)H     H0  0(E&Y#/ 4/]VY+@" %"X 0%0N   4)H 
XM    QP8  !8 O@  NP(  UP*CD0"C,"C  "[ @ #7 J.1 *+PZ,  ,=&XC, 
XMC4;B4+@  %"X  !0F@    !CG$0 Q N+!@#$&8L& ,0=BQ8 S"%6!\0FBQ@ 
XMQ#N+8@#,/U8+Q$6+)@#$2HMB ,18BS@ Q&:++ #$<HLF ,1VBSH S'I6#)Z@
XM!P !L@;I  "WH 8  3L&> "@H$L  ;4&@W[T!70#Z0  QP8  !< O@  NP( 
XM UP*CD0"C,"C  "[ @ #7 J.1 *+PZ,  ,=&X#, C4;@4+@  %"X  !0F@  
XM  #I  #3G", Q N+)@#$$(MB ,0>BS@ Q"R++ #$.(LF ,0\BSH S$!6#-2@
XM!@ !O 8^ %F@!@ !- 7& 5F@!@ !:@60 5F@!@ !ZP4/ 5F@!@ !,@;( %F@
XM!@ !LP9' %F@!@ !^@8  %F@!@ !\006 $Z@#  !_ ::     ,H" .N<!0#,
XM 58(-* &  'N!!0"49 1   !"DU/55-%4D53153P! !4H%0  00'Z0  N0  
XMF@    "+=@K'!   BW8(QP0  (MV!L<$  #'!@   P#'1O0S (U&]%"X  !0
XMN   4)H     H0  )0$ (\!U ^D  (MV"L<$ 0"AG!T S =6!L0BBP8 Q#"+
XM!@#$-(L6 ,PX5@?$/8L8 'Z@!@ !2P<'  "@&  !5 >A   E @ CP'4#Z0  
XMBW8&QP0!  V<!@#$ 8L8 /:@!@ !7P<' .R@&  !: >A   E!  CP'4#Z0  
XMBW8(QP0! /6<!@#$ 8L8 /:@!@ !<P<' -B@!@ !" <" $B@#  !? >:    
XM ,H& &:<!0#, 58(-* &  $%!WT T) 2   !"TU/55-%4T-23TQ,!P< [* _
XM  &$!^D  +D  )H     QP8  #,UQT;T(0"-1O10N   4+@  %":     (,^
XM    = /I  "+=@;'!   Z0  99P= ,P'5@;$#8LF ,0;BR8 Q!^+.@#,(U8,
XMQ"F+3 !)H 8  ;,'"@"5H"<  ;\'BW8&QP0! ,<&   @ ,=&\C, C4;R4+@ 
XM %"X  !0F@    #!G!0 Q F+!@#$%XL& ,0;BQ8 S!]6![Z@!@ !O0<C '*@
XM!@ !B <$ ,:@#  !X@>:     ,H"  2<!0#, 58(-* &  &%!V, :I 2   !
XM"TU/55-%4U1!5%53AP< 5XP1  9")%-423( !D(D1DU)1 !)H($  >H'Z0  
XMN0  F@    #'!@  ) #'1O0S (U&]%"X  !0N   4)H     N0 !H0  )0#_
XMF??YB4;R4)H     4+@" %"X_W]0F@    !0C4;N4)H     H0  )?  B4;L
XMBPX  (/A#XO!B4;JN   4/]V[)H     4+@" %"X_W^.G#P S =6!L0-BP8 
XMQ!N+!@#$'XL6 ,PC5@?$*XL8 ,PX5@W,1E8.S%!6!<15BQ@ Q%^+& #$:HDD
XM ,QQ5@UTH H "20  0   "X ^IP& ,0"B2@ YXP1  9")%-#050 !D(D4U1$
XM3  IH&P  6<(4)H     4)H     4(U&YE":     (U&YE#_=NJ:     %"X
XM @!0N/]_4)H     4)H     4(U&YE":     (U&[E"-1N90F@    !0_W8&
XMF@    "-1N90F@    "-1NY0F@    #]G"T S )6#LP(5@_,$E8%S!Y6#<PL
XM5@[,,E8/S#Q6!<Q)5@_,4E8%S%M6$,QD5A .H 8  >X'$ !4H P  <\(F@  
XM  #* @ 6G 4 S %6"#2@!@ !ZP?J 'V0$P   0Q-3U53159%4E-)3T[M!P"M
XMH%0  =<(Z0  N0  F@    "+=@:#/ &X  !U 4B#/@   +D  '4!22/((\EU
XM ^D  ,<&   ! ,=&]#, C4;T4+@  %"X  !0F@    #'!@   0#I  #(G"( 
XMS =6!L09BWH Q"V+!@#$.XL& ,0_BQ8 S$-6!\1)BWH _: &  $ "24 *Z!&
XM  $G"8MV!H,\ +@  '4!2(,^   !N0  =0%)(\@CR74#Z0  QP8   ( QT;R
XM,P"-1O)0N   4+@  %":     ,<&     *Z<'@#$#HMZ ,0BBP8 Q#"+!@#$
XM-(L6 ,PX5@?$/HMZ '*@!@ !)0E" .F@!@ !10DB .F@!@ !VP@$ '*@#  !
XM:0F:     ,H" 'N<!0#, 58(-* &  '8")< XI 3   !#$U/55-%5DE324),
XM1=H( ->@!P *  #__P%0C D !D(D0T5.4 #9H D  7$)F@    !"G 4 S %6
XM$2N* @ !<P   /&M 0                                          
XM                                                            
XM                                                            
XM                                                            
XM                                                            
XM                                                            
XM                                                            
XM                                                            
XM                                                            
XM                                                 '%6 $.Q "(F
XM/8["M[PW$P  AQE/,4D E6D?>,A;8LVDG !_K"S2"$%"4T],551% 0  "6%B
XM<V]L=71E(0$  T-44FP!!41%3$%9; $(1$]724Y$3U=E   '1V5T4V-R;DD 
XM"&=E='-C<FXA20  "$E.5#@V3TQ$*@  "6EN=#@V;VQD(2H "4E.5#@V6$],
XM1"H "4E.5$524E505 X "DE.5$524E505%@.   ':6YT<G!T(0X "DU/55-%
XM0TQ)0TO. 0 +34]54T5#55)33U+. 0Q-3U5314580TQ51$7. 0 +34]54T5,
XM24U)5%/. 0M-3U5314Q/0T%41<X!#4U/55-%4$]3251)3T[. 0I-3U5315)%
XM4T54S@$ "TU/55-%4T-23TQ,S@$+34]54T535$%455/. 0Q-3U53159%4E-)
XM3T[. 0 ,34]54T5625-)0DQ%S@$ !U!R=%-C<FY/ 0AP<G1S8W)N(4\!  =0
XM=71S8W)N5P (<'5T<V-R;B%7   (<31M;W5S92'. 0 '<31T;V]L(6P!!W$T
XM=VEN9"%E                                                    
XM                                                            
XM            \D( "0 ! "@ #@ J "H + !) "X 5P P &4 ,@!/ 38 ; $X
XA ,X!/                     $ !@    $ "  !  $ 
X 
Xend
+ END-OF-FILE q4t.lib.uu
chmod 'u=rw,g=,o=' 'q4t.lib.uu'
set `wc -c 'q4t.lib.uu'`
count=$1
case $count in
19166)	:;;
*)	echo 'Bad character count in ''q4t.lib.uu' >&2
		echo 'Count should be 19166' >&2
esac
echo Extracting 'q4t.qlb.uu'
sed 's/^X//' > 'q4t.qlb.uu' << '+ END-OF-FILE ''q4t.qlb.uu'
Xbegin 644 q4t.qlb
XM35J8 3( 90%@ /____]-!0  4^L- !L"'@    $ * !-!3  304X $T%0 !-
XM!4@ 3050 $T%6 !-!6  305H $T%< !-!7@ 306  $T%B !-!9  3068 $T%
XMH !-!:@ 306P $T%N !-!<  307( $T%T !-!=@ 307@ $T%Z !-!?  307X
XM $T%  %-!0@!3040 4T%& %-!2 !304H 4T%, %-!3@!305  4T%2 %-!5 !
XM3058 4T%8 %-!6@!305P 4T%>@%-!8(!306* 4T%D@%-!9H!306B 4T%J@%-
XM!;(!306Z 4T%P@%-!<H!3072 4T%X@%-!>H!307R 4T%^@%-!0("304* DT%
XM$@)-!1H"304B DT%*@)-!3("304Z DT%0@)-!4H"3052 DT%6@)-!6("305J
XM DT%<@)-!7H"306" DT%B@)-!9("306: DT%H@)-!:H"306R DT%N@)-!<("
XM307* DT%T@)-!=H"307B DT%Z@)-!?("307\ DT%! --!0P#3044 TT%' --
XM!20#304L TT%- --!3P#305$ TT%3 --!50#305< TT%9 --!6P#305T TT%
XM? --!80#306, TT%E --!9P#306D TT%K --!;0#306\ TT%Q --!<P#3074
XM TT%W --!>0#307L TT%] --!?P#304$!$T%# 1-!10$304<!$T%) 1-!2P$
XM304T!$T%/ 1-!0, 304. $T%$ !-!1( 3046 $T%' !-!08 2P4Y -8 1@#6
XM ! !U@ [ =8 5 '6 & !U@!E =8 <@'6 #8"U@!  M8 2@+6 %<"U@!= M8 
XM9P+6 *8"U@"P M8 N@+6 ,<"U@#- M8 UP+6 !8#U@ @ ]8 *@/6 #<#U@ ]
XM ]8 1P/6 (8#U@"0 ]8 F@/6 *<#U@"M ]8 MP/6 /8#U@  !-8 "@36 !<$
XMU@ =!-8 )P36 "\$U@!$!-8 2@36 %,$U@!9!-8 8P36 &L$U@!X!-8 ?@36
XM (<$U@"-!-8 EP36 )\$U@"K!-8 L036 +H$U@# !-8 R@36 -T$U@ (!=8 
XM* 76 #D%U@!#!=8 :@76 *4%U@"O!=8 Q 76 ,T%U@#G!=8 \076  8&U@ /
XM!M8 %P;6 "H&U@"0!M8 F@;6 *0&U@"S!M8 O0;6 ,<&U@#1!M8 Y ;6 .X&
XMU@#[!M8 $P?6 !P'U@ E!]8 +@?6 #<'U@! !]8 20?6 %('U@!;!]8 8 ?6
XM &@'U@ * $L%.P!- 48 30%3 $T!6 !- 64 30%J $T!>@!- 8@ 30&- $T!
XMIP!- ;D 30'3 $T!W0!- >< 30'Q $T!^P!- 1 !30$: 4T!0 %- 44!30%/
XM 4T!7@%- 78!30&8 4T!H0%- :8!30&N 4T!#@!+!48 : %> &@!:P!H 78 
XM: &G &@!!@%H 10!: &J 6@!KP%H ;T!: &D F@!KP)H ;T": &8 V@!P -H
XM <4#: '3 V@!701H 6($: %P!&@!C 1H : $: &O!&@!O 1H <L$: 'H!&@!
XM]@1H 2,%: %9!6@!CP5H :T%: 'H!6@!+P9H 5<&: %U!F@!L 9H ?<&: '_
XM!F@!#0=H 3X': %_!V@!C0=H :D': '@!V@!Y0=H ?,': $/"&@!) AH 3((
XM: $\"&@!70AH 6L(: %Q"&@!>PAH 8<(: &5"&@!FPAH :4(: &R"&@!NPAH
XM <0(: '-"&@!T@AH > (: $<"6@!80EH 6P): %T"6@!"@ Q!0X ,042 #$%
XM-0"1 #X D0!( )$ 40"1  @!,  B C  *@(P #(",  Z C  0@(P $H", "/
XM Y$ 2P21 -0",  M S  40,P %D#, !F S  F ,P /\#, !:!#  F 0P *<$
XM, #\!#  204P $X%,  )!C                                      
XM                                                            
XM          !5B^P>!E97BUX&BP^+=P*[  ".PR:A200\ WX'/ =T">L1D+L 
XMN.L$D+L L([#OP  \Z1?7@<?7<H"  !5B^P>!E97BUX&BP^+?P*[  ".PR:A
XM200\ WX'/ =T">L3D+L N.L$D+L L!Z.VP>^  #SI%]>!Q]=R@(  %6+[%<>
XM5@:+7@B+/T^+7@J+!TB+7@R+#^,ZBW<"NT  CL,F]R9*  /XT>>X + FBQX0
XM (/C,(/[,'0#N "X)HL68P"#P@:+7@:+'X[ I":('4?B^0=>'U]=R@@ 6%I;
XM4E#_-LD _S?+58OL@\3BQT;Z" #K"U6+[(/$XL=&^@H B7;DB7[BC%[\G(]&
XM_HMV"(U^YHM.^OP6!_.E58MV"HL<"O]T ^FQ (#[)70%@/LF=0ZX" !0N +*
XM4+B#Q%#K!S/ 4+C*!E"*X[#-4 ZXJ@!0%HO$!08 4(M&]"75#U"+1N:+7NB+
XM3NJ+5NR+=O"+?O*#?OH(=!2!?O;__W0#CE[V@7[X__]T XY&^(MN[IW+58OL
XMBVX"G(]&]/]V_IV)1N:)7NB)3NJ)5NR+1MZ)1NZ)=O")?O*,7O:,1OB.7OR-
XM=N8>!XM^!HM.^OSSI8MVY(M^XHOE7<H& (MV"L<$__^+=N2+?N*.7OR+Y5W*
XM!@  58OL@\3@QT;X" #K"U6+[(/$X,=&^ H B7;BB7[@G(]&_HMV!NCP (E6
XM_(E&^HMV".CD !Z.VHOPC7[DBT[X_!8'\Z4?58MV"HL<"O]T ^FQ (#[)70%
XM@/LF=0ZX" !0N +*4+B#Q%#K!S/ 4+C*!E"*X[#-4 ZXQ !0%HO$!08 4(M&
XM\B75#U"+1N2+7N:+3NB+5NJ+=NZ+?O"#?O@(=!2!?O3__W0#CE[T@7[V__]T
XM XY&]HMN[)W+58OLBVX"G(]&\O]V_IV)1N2)7N:)3NB)5NJ+1MR)1NR)=NZ)
XM?O",7O2,1O86'XUVY(Y&_(M^^HM.^/SSI8MVXHM^X(OE7<H& !8?BW8*QP3_
XM_XMVXHM^X(OE7<H& (M4 HL$P\, .R:V '(@_P;P /]&]LO_#O  _T[V>!6#
XMQ */!DPSCP9*,_\N2C-5B^SI* %5B^SI$@&/!DHSCP9,,_\.\ #_#A,!C6;Z
XM7UZ/!NX 7?\N2C.+Q"O!<M M"@!RRSL&M@!RQ8\&2C./!DPS58OL_S;N %97
XM45 KX8DN[@#_!O  _P83 8O\!AX'T>E!,\#SJP?_+DHS %:+W8O+BQ\['NX 
XM=?:+V3/)BU\$F)8>CMNM'U[#!H[")HL.(@ 'B\0KP7(R+0H <BT[!K8 <B>/
XM!E SCP92,U6+[/\V[@!65U$SP% KX8DN[@#_!O  _P83 ?\N4#-5B^SI7 !5
XMB^SJ) (P %8>4+ *Z(S_CMN6,]N+TUFM"\!T%CO!<P\[PW(+DZUU!#O"=NN2
XMZ^BMZ^4?"]N27L, NP"4Z;< LS8]LS0]LPL]LP4]LP,]LP<]LTD]LP8R_^F;
XM +L'D.OX@<=^ 2[_%<N!P8 !B]DN_R?_'L( 7\/_+KX G@#S ^<#PP55!4P"
XM#P.$ X<#M@)7OP  Z]Q7OP( Z]97OP0 Z]!7OP8 Z\I7OP@ Z\17OPH Z[Y7
XMOPP Z[A7OPX Z[)7OQ  ZZQ7OQ( ZZ97OQ0 ZZ!7OQ8 ZYI7OQ@ ZY17OQH 
XMZXY7OQP ZXA7OQX ZX)7OR  Z7O_5[\B .ET_U>_) #I;?]7OR8 Z6;_5[\H
XM .E?_U>_*@#I6/^[  #J>@$P +L$ .IZ 3  NP@ ZGH!, "[# #J>@$P +L0
XM .IZ 3  NQ0 ZGH!, !5B^PSP.A*_L<&!@$" (D>" &A"@& /@X! '5*"N1U
XM1L8&#@'_BUX&BT<"BU<$HP(!B18$ 5+HA?ZC# %:'H[:BQX. !^+7P2'R^,:
XMBUX&BR^+Q2M&^"M&]BM&]BT* (O@4E'I"?Y=R@( 58OL!HM>!@O;= :#?P( 
XM=07'1@9&,[,,_W8&FHD#,  +P'4$"])T*5'H^@!;4(X&TP"#PP@FQ$<$C,+H
XMZ "26"O0=@H][#-U"(/Z!G<#,\"9DS/ !UW* @!5B^R#[ 2+1@8+TG0HL5]1
XMB]RY 0!348O<4U":8@&1 (/$!HO8BP^+7P* /RYU \8'7T/B]8U>_,=' @  
XM4%.:7P&1 +,(4)J) S  "])U&8U>_%.:A ,P  :.!M, ,]LF.U<.!W,"DYF-
XM7OSH7/Z+Y5W* @"S"CVS#%6+[%97!C+_4_]V!IJA 9$ 6U"6,\"9C@;3 (L,
XMBW0")HL?@^L(@\,()H,_ '09)HM_ E%6\Z9>677K)C@%=>8FQ$<$C,*+RUOH
XM"_X'7UY=R@( C-DKT;$$T^(#PL.Q [@H,^B7 .C7 ,M7!O8&Z0 "= B:YP,P
XM .CC !X'N= TO\0T*\\SP-'I\ZMS :J.!M, )HL6(  FBQX> ":.!AP ,_\+
XMTG0/N0" \ZN,P8#%$([!2G7QB\O1Z?.K<P&JN.PSNO(SB\HKR(/Y!G<6FC0"
XM,  +P'0'DXO" ]/K!KCL,[KR,Z.Z *,, (D6O !!@ [I  *X.C/H P '7\M6
XM5S+MEK@# %%64(O<4U.:AP,P %N#1P(#Z#K_EE.:AP,P .@P_Y<[]W0.@^\$
XMBP4+10)T\O\=Z^Y87@/P6>+(7U[#!KL0 #L>7 !W#(Y' K1)S2&#PP3K[L<&
XM7  ,  ?#5E<&'HL^UP"#/ML  '10,\!0FK8", "+#M4 "]N<= 0KWX?9H=L 
XM'@>.V#/VT>GSI7,!I)UT"@/R _J+RRO.\Z0&'XX&TP FBQ8: ":+'A@ )HX&
XM%@".'N, Z)H ZPJ:' (P )I5!3  'P=?7L-04U%25E<&'J'5  O =$2+R#/2
XMN]D Z*#\"\!T-HX&VP S_XLVUP!!T>GSI8X&TP FBQ8: ":A&  [PG4$"\!T
XM)(O(N^$ Z'#\"\!U"+O9 .AM_.L0B]F+#N, )HX>%@".P>@D !\'7UY:65M8
XMRX,^VP  = :[V0#H1?R#/N,  '0&N^$ Z#C\RS/V,_\+TG06N0" \Z6,P8#%
XM$([!C-F Q1".V4IUZHO+T>GSI7,!I,.:1 (P ,L                     
XM     +@!3,TA              #-/^S-/^W-/_\OS3__,,T__S&:-P"1 ,T_
XM_S*:00"1 ,O-/_\SFDH D0#-/_\TFE, D0#-/_\U            S3\ S3\&
XMS3\'S3\)S3\/S3\3S3\4S3\RS3\SS3\TS3\US3\VS3\WS3\XS3\YS3] S3]!
XMS3]"S3]%S3]&S3]'S3](S3])S3]*S3]+S3].S3]0S3]1S3]2S3]3S3]6S3]7
XMS3]8S3]9S3]:S3];S3]BS3]CS3]DS3]ES3]FS3]HS3]IS3]JS3]KS3]LS3]N
XMS3]PS3]QS3]RS3]SS3]TS3]US3]VS3]WS3]YS3^&S3^'S3^,S3^-S3^/S3^0
XMS3^1S3^3S3^4S3^5S3^6S3^7S3^8S3^CS3^DS3^ES3^FS3^GS3^MS3^NS3^Q
XMS3^RS3^SS3^TS3^US3^VS3^[S3^\S3_!S3_"S3_#S3_$S3_%S3_&S3_+S3_,
XMS3_-S3_.S3_1S3_2S3_3S3_6S3_7S3_8S3_9S3_:S3_;S3_<S3_=S3_>S3_?
XMS3_@S3_AS3_BS3_FS3_GS3_JS3_KS3_NS3_RS3_US3_YS3_ZS3__!,T__P7-
XM/_\'S3__",T__PG-/_\*S3__#<T__P[-/_\;         ,T__Q7-/_\6S3__
XM%\T__QC-/_\9S3__&LT__QS-/_\=S3__'LT__Q_-/_\@S3__(<T__R+-/_\C
XMS3__),T__R7-/_\FS3__)\T__RC-/_\IS3__*LT__RO-/_\LS3__+<T__RX 
XM              #-/P'-/P+-/P/-/P7-/PS-/Q'-/Q+-/Q7-/QC-/QG-/QK-
XM/QO-/QS-/QW-/Q[-/Q_-/R#-/R'-/R+-/R/-/R3-/R7-/R;-/R?-/RC-/RG-
XM/RK-/RO-/RS-/RW-/R[-/R_-/S#-/S'-/SK-/SO-/SS-/SW-/S[-/S_-/T/-
XM/T3-/TS-/TW-/T_-/U3-/U7-/US-/UW-/U[-/U_-/V?-/V_-/WC-/W[-/W_-
XM/X#-/X'-/X+-/X/-/X3-/X7-/Y+-/YG-/YK-/Z#-/ZG-/ZK-/ZO-/ZS-/Z_-
XM/[#-/[?-/[C-/[G-/[K-/\?-/\C-/\G-/\K-/\_-/]#-/]3-/]7-/_\&S3__
XM#\T__Q#-/_\1S3__$LT__Q/-/_\4S3__-LT__S?-/_\XS3__.<T__SKJ/ (P
XM  !5B^Q65P:#?@H =3B_# "+5@B+1@9(=0?H4P!R)^M(BS9< $AT$3OW= V+
XM1 *)1@Y6Z#H 7G,P@\8$@?Y< ',$"])U!KC__YGK'8O:@\,/T=NQ ]/KM$C-
XM(7+IDHD$B50"B39< #/ !U]>B^5=RXM.#HOW.4P"= R#Q@2!_EP =?+YZRR+
XMV@,<<B:+TX[!._=U"#D>O !S$^L6@\,/T=O1Z]'KT>NT2LTA<@62AP2+T<-5
XMB^P6'^I4 3      8FQ1-%=)3D0@(   DC1@,_(S        8#,         
XM-             #__X 0Z3('N58 FFL , "X #10C4;R4)I? 9$ BW8*@SP 
XM?P/I) &#/ &X  !U 4B#/ .Y  !U 4D+R"/)=0/I$0"+=A:+! 7^_XE&\(E&
XM[NDU (MV"H,\ K@  '4!2(,\!+D  '4!20O((\EU ^D7 (MV%HL$BWX2B]@#
XM!8E&\(/# HO#B4;NBW88BP2+?A0#!3T9 +D  'X!28-^\ &X  !] 4@+P8M.
XM\(/! H/Y4+H  'X!2@O0(])U ^D' (MV"L<$  "+=@J#/ -T ^D; (MV&/\T
XMBW86BP1(4+@! %":MP"1 (E&[.DP (MV"H,\!'0#Z2  BW88_S2+=A:+!(M^
XM$@,%0%"X 0!0FK< D0")1NSI!0#'1NP  +@0 )E24(M&[)H( I$ S30V'#3-
XM/9HD I$ FA0"D0 E!P"#X@!24)H% 9$ B4;JBW86@SP!N   ?0%(BW88@SP!
XMN0  ?0%)"\@CR70#Z7T%BW86BP2+?A(#!4@]4 "Y  !^ 4F+=AB+!(M^% ,%
XM2#T9 +H  'X!2@O1(])T ^E,!8MV#HL$)0< T>#1X-'@T>"+=A #!(E&Z(MV
XM#(,\ +@  'X!2(,\!KD  'T!22/((\EU ^DN X,\ 70#Z64 QT;FV@#'1N2_
XM ,=&XL  QT;@V0#'1M[$ ,=&W+, QT;:Q #'1MBS +BT %":=0"1 %"X(#10
XMFF(!D0!0C4;44)I? 9$ N" T4+C# %":=0"1 %":8@&1 %"-1M!0FE\!D0#I
XMO0&+=@R#/ )T ^EE ,=&YLD QT;DNP#'1N+( ,=&X+P QT;>S0#'1MRZ ,=&
XMVLT QT;8N@"XM0!0FG4 D0!0N" T4)IB 9$ 4(U&U%":7P&1 +@@-%"XQ@!0
XMFG4 D0!0FF(!D0!0C4;04)I? 9$ Z4T!BW8,@SP#= /I90#'1N;5 ,=&Y+@ 
XMQT;BU #'1N"^ ,=&WLT QT;<LP#'1MK- ,=&V+, N+4 4)IU )$ 4+@@-%":
XM8@&1 %"-1M10FE\!D0"X(#10N,8 4)IU )$ 4)IB 9$ 4(U&T%":7P&1 .G=
XM (MV#(,\!'0#Z64 QT;FU@#'1N2W ,=&XM, QT;@T #'1M[$ ,=&W+H QT;:
XMQ #'1MBZ +BT %":=0"1 %"X(#10FF(!D0!0C4;44)I? 9$ N" T4+C# %":
XM=0"1 %":8@&1 %"-1M!0FE\!D0#I;0"+=@R#/ 5T ^EB ,=&YML QT;DVP#'
XM1N+; ,=&X-L QT;>WP#'1MS; ,=&VMP QT;8VP"XW0!0FG4 D0!0N" T4)IB
XM 9$ 4(U&U%":7P&1 +@@-%"XW@!0FG4 D0!0FF(!D0!0C4;04)I? 9$ _W;F
XMFG4 D0!0BW82BP0%_O]0_W;>B4;.FHD!D0!0FF(!D0!0_W;DFG4 D0!0FF(!
XMD0!0C4;*4)I? 9$ _W;<FG4 D0!0_W;.N"  4)J) 9$ 4)IB 9$ 4/]VV)IU
XM )$ 4)IB 9$ 4(U&QE":7P&1 /]VXIIU )$ 4/]VSO]VVIJ) 9$ 4)IB 9$ 
XM4/]VX)IU )$ 4)IB 9$ 4(U&PE":7P&1 (U&RE#_=AC_=A:-1NA0F@H !P"+
XM=A2+!(M^& ,%!?[_B4; BP5 Z1D D(U&QE"-1KY0_W86C4;H4)H*  < BT:^
XM0(E&OCM&P'[@C4;"4(U&OE#_=A:-1NA0F@H !P#I2P"+=A+_-+@@ %":B0&1
XM %"-1KA0FE\!D0"+=A2+!(M^& ,%2(E&O(L%Z1@ C4:X4(U&OE#_=A:-1NA0
XMF@H !P"+1KY B4:^.T:\?N"+=@J#/ !_ ^F. (MV&(L$BWX4B]@#!4B)1K9#
XMB\/I.@"0N ( 4+BQ %":B0&1 %"-1K)0FE\!D0"-1K)0C4:P4(U&\%"-1NI0
XMF@H !P"-1K)0FGH!D0"+1K! B4:P.T:V?K^+=A+_-+BQ %":B0&1 %"-1JQ0
XMFE\!D0"-1JQ0C4:P4(U&[E"-1NI0F@H !P"-1JQ0FGH!D0#_=@B:DP"1  O 
XMN0  ?@%)_W8(B4ZJFI, D0 %! "+=A([!+D  'T!22-.JB/)=0/IT0"+=@:#
XM/ "X  !U 4B#/ *Y  !U 4D+R"/)=0/I"P"+=AB+!(E&J.D. (MV&(L$BWX4
XM P5(B4:HBW8&@SP!?P/I(P"-1M10_W8(FF(!D0!0C4;04)IB 9$ 4(U&I%":
XM7P&1 .D@ +@@-%#_=@B:8@&1 %"X(#10FF(!D0!0C4:D4)I? 9$ BW86BP2:
XM" *1 (MV$HL$B]B-1J10B5ZBFI, D0 K1J+WV)H( I$ S30V)C3-.L&:$ *1
XM (E&H(U&I%"-1JA0C4:@4(U&Z%":"@ ' (U&N%":>@&1 (U&PE":>@&1 (U&
XMT%":>@&1 (U&U%":>@&1 (U&QE":>@&1 (U&\E":>@&1 (U&I%":>@&1 (U&
XMRE":>@&1 )H\ #  RA0 FB, D0        !B;5$T5$]/3" @  "B-&8S\C, 
XM      !@,P       # T             /__@ "X,#10N&PS4)I? 9$ Z3\ 
XMN0  FFL , #--09,-/]V")J3 )$ F@@"D0#--#90-,TZZ9H0 I$ F@@"D0"+
XM=@;--1S-/8M&!IH\ #  R@0 Z2D!N1H FFL , ":FP&1 (OPS34$BW8(S30$
XMS35>\LT]C4;P4)J'!V@!BW8&BP0CP'4#Z24 D)J; 9$ B_#--03--5[LS3W-
XM-4;RS35&[,T]FN4!D0!VW^FW )K, )$ 4+A4-%":U0&1 '4#Z1( FLP D0!0
XMC4;H4)I? 9$ Z]N0S34&6#2+=@C--03-/9KE 9$ =0/I$ ":FP&1 (OPS34$
XMS35>[,T]BT;P(\!U ^D1 (U&YE"-1N10C4;B4)IP &@!FLP D0!0C4;>4)I?
XM 9$ S35&\LTU1NS-/9KE 9$ N   =@%(B]B-1MY0N%0T4(E>W)K5 9$ N   
XM= %("T;<"T;F"T;D"T;B(\!U ^EO_XU&WE":>@&1 (U&Z%":>@&1 )H\ #  
XMR@0 FB, D0!B;5$T34]54T4@  "R-' S\C,       !@,P       & T    
XM         /__@  SP%#_-M SN ( 4+@! 5"XOC-0FFP D0 SP%#_-M SN ( 
XM4+@! 5"XTC-0FFP D0"X8#10N.0S4)I? 9$ Z9L N00 FFL , "+=@K'!   
XMBW8(QP0  (MV!L<$  #'!G8S P#'1O0S (U&]%"X=C-0N(8S4)H"  X H8@S
XMB4;R(\!U ^D# */H,Z'H,SM&\G4#Z3\ )0$ (\!U ^D' (MV"L<$ 0"AZ#,E
XM @ CP'4#Z0< BW8&QP0! *'H,R4$ "/ =0/I!P"+=@C'! $ QP;H,P  FCP 
XM, #*!@#II@"Y @"::P P (MV"(,\![@  'X!2(MV"H,\#[D  'X!20O(BW8&
XM@3S_ +@  'X!2 O!(\!T ^EF ,<&=C,* ,<&>#,  ,<&>C,  (MV"(L$T>#1
XMX-'@T>#1X-'@T>#1X-'@T>#1X-'@BW8*BPS1X='AT>'1X='AT>'1X='A \B+
XM=@8##(O!HWPSQT;T,P"-1O10N'8S4+B&,U": @ . )H\ #  R@8 Z?T N0H 
XMFFL , "+=@:+!"/ =0/IAP"+=@Z#/ "X  !^ 4B+?@R#/0"Y  !^ 4DCR(MV
XM"H,\ +@  'X!2"/!BW8(@SP N0  ?@%)(\@CR74#Z40 BW8.BP31X-'@T> %
XM^/^)1O2+!='@T>#1X 7X_XE&\HMV"HL$T>#1X-'@!?C_B4;PBW8(BP31X-'@
XMT> %^/^)1N[I P#I70#I( "+=@Z+!(E&](MV#(L$B4;RBW8*BP2)1O"+=@B+
XM!(E&[L<&=C,0 (M&\J-Z,XM&]*-\,XM&[J. ,XM&\*.",\=&[#, C4;L4+AV
XM,U"XAC-0F@( #@#'!NHS  ":/  P ,H* .D3 ;D, )IK #  BW8&BP0CP'4#
XMZ8< BW8.@SP N   ?@%(BWX,@ST N0  ?@%)(\B+=@J#/ "X  !^ 4@CP8MV
XM"(,\ +D  'X!22/((\EU ^E$ (MV#HL$T>#1X-'@!?C_B4;TBP71X-'@T> %
XM^/^)1O*+=@J+!-'@T>#1X 7X_XE&\(MV"(L$T>#1X-'@!?C_B4;NZ0, Z7, 
XMZ2  BW8.BP2)1O2+=@R+!(E&\HMV"HL$B4;PBW8(BP2)1N['!G8S" "+1O2C
XM>C.+1O"C?#/'1NPS (U&[%"X=C-0N(8S4)H"  X QP9V,P< BT;RHWHSBT;N
XMHWPSQT;J,P"-1NI0N'8S4+B&,U": @ . )H\ #  R@H Z9H N08 FFL , "+
XM=@:+!"/ =0/I1@"+=@J#/ "X  !^ 4B+?@B#/0"Y  !^ 4DCR"/)=0/I'P"+
XM!-'@T>#1X 7X_XE&](L%T>#1X-'@!?C_B4;RZ0, Z3L Z1  BW8*BP2)1O2+
XM=@B+!(E&\L<&=C,$ (M&\J-Z,XM&]*-\,\=&\#, C4;P4+AV,U"XAC-0F@( 
XM#@":/  P ,H& .F# +D" )IK #  QP9V,P, QT;T,P"-1O10N'8S4+B&,U":
XM @ . (MV!HL$(\!U ^D[ *&,,YH( I$ S30V?#3-- : -)H0 I$ BW8*B02A
XMBC.:" *1 ,TT-GPTS30&@#2:$ *1 (MV"(D$Z1  H8PSBW8*B02ABC.+=@B)
XM!)H\ #  R@8 Z10"N18 FFL , "+=@:+!(E&](-^] !T ^DM ,<&=C,  ,=&
XM\C, C4;R4+AV,U"XAC-0F@( #@"AB#.+=@:)!,<&ZC,  .G& 8-^] %T ^DM
XM ,<&=C,A ,=&\#, C4;P4+AV,U"XAC-0F@( #@"AB#.+=@:)!,<&ZC,  .F0
XM 8-^] )T ^EX ,<&=C,5 ,=&[C, C4;N4+AV,U"XAC-0F@( #@"AB#- B4;L
XM,\!0_W;LN ( 4+@! 5"XOC-0FC(#D0#'!I8S%@"^OC.[ @ #7 J.1 *,P*.H
XM,[L"  -<"HY$ HO#HYPSQT;J,P"-1NI0N)8S4+BJ,U":#P . .D/ 8-^] -T
XM ^D^ ,<&EC,7 +Z^,[L"  -<"HY$ HS HZ@SNP(  UP*CD0"B\.CG#/'1N@S
XM (U&Z%"XEC-0N*HS4)H/  X Z<@ @W[T!'0#Z7@ QP9V,Q4 QT;F,P"-1N90
XMN'8S4+B&,U": @ . *&(,T")1N0SP%#_=N2X @!0N $!4+C2,U":,@.1 ,<&
XMEC,6 +[2,[L"  -<"HY$ HS HZ@SNP(  UP*CD0"B\.CG#/'1N(S (U&XE"X
XMEC-0N*HS4)H/  X Z4< @W[T!70#Z3X QP:6,Q< OM(SNP(  UP*CD0"C,"C
XMJ#.[ @ #7 J.1 *+PZ.<,\=&X#, C4;@4+B6,U"XJC-0F@\ #@#I  ":/  P
XM ,H" .E] +D" )IK #  BW8*QP0  (MV",<$  "+=@;'!   QP9V,P, QT;T
XM,P"-1O10N'8S4+B&,U": @ . *&(,R4! "/ =0/I!P"+=@K'! $ H8@S)0( 
XM(\!U ^D' (MV!L<$ 0"AB#,E!  CP'4#Z0< BW8(QP0! )H\ #  R@8 Z6, 
XMN00 FFL , #'!I8S,S7'1O0A (U&]%"XEC-0N*HS4)H/  X @SZ\,P!T ^D*
XM (MV!L<$  #I(P"+=@;'! $ QP9V,R  QT;R,P"-1O)0N'8S4+B&,U": @ .
XM )H\ #  R@( Z>H N1  FFL , #'!G8S) #'1O0S (U&]%"X=C-0N(8S4)H"
XM  X N0 !H8@S)0#_F??YB4;R4)I] 9$ 4+@" %"X_W]0FID D0!0C4;N4)I?
XM 9$ H8@S)?  B4;LBPZ(,X/A#XO!B4;JN(0T4/]V[)I] 9$ 4+@" %"X_W]0
XMFID D0!0FF(!D0!0C4;F4)I? 9$ C4;F4/]VZII] 9$ 4+@" %"X_W]0FID 
XMD0!0FF(!D0!0C4;F4)I? 9$ C4;N4(U&YE":8@&1 %#_=@::7P&1 (U&YE":
XM>@&1 (U&[E":>@&1 )H\ #  R@( Z9< N00 FFL , "+=@:#/ &X  !U 4B#
XM/NHS +D  '4!22/((\EU ^DE ,<&=C,! ,=&]#, C4;T4+AV,U"XAC-0F@( 
XM#@#'!NHS 0#I0@"+=@:#/ "X  !U 4B#/NHS ;D  '4!22/((\EU ^DB ,<&
XM=C," ,=&\C, C4;R4+AV,U"XAC-0F@( #@#'!NHS  ":/  P ,H" )HC )$ 
XM             !<S &L!, !C 3  NP P    $P!83T)83T584$)84$580T)8
XM0T5824)8245#3TU-3TX& $ S                                    
XM                                                            
XM                                                            
XM                                                            
XM                           7  0T0V]P>7)I9VAT+3$Y.3 M0V%R95=A
XM<F4   " 00$ )#0@L@   $         7 #0T0V]P>7)I9VAT+3$Y.3 M0V%R
XM95=A<F4    @0@   $   %@T           7 &0T0V]P>7)I9VAT+3$Y.3 M
XM0V%R95=A<F4     00  @#\! (@T+@        #__P$                 
XM__\!                 /__ 0   -8   !- 0  : $                 
XM    ZA  D0 "=6PB '0!]@(    "307("  "       "      $ 0 22 Y$ 
XM 0!(!$,$D0 ! % $C .1  $ 5@00 )$  0!<!#, U@ ! &4$!@ -  $ ;@1#
XM!)$  0!W!'@#D0 ! ($$0 !- 0$ A03P 9$  0"1!!  D0 ! )P$= .1  $ 
XMJ@1P Y$  0"V! \ #@ ! ,$$MP)H 0$ S02" $T! 0#3!$4 D0 ! -\$*@"1
XM  $ Z 1. )$  0#R!(P#D0 ! /D$.P"1  $ !07:"&@! 0 2!28 D0 ! !P%
XM @ .  $ )@4R )$  0 O!2X D0 ! #L%< !H 0$ 1@4&!C   0!0!0P  P !
XM %@%"@ >  $ 804. 6@! 0!M!<T#: $! 'D%%P >  $ @P5J!&@! 0"1!>T'
XM: $! )X%\@$P  $ J 6W 6@! 0"U!? $: $! , %!P=H 0$ S 4      0#4
XM!0H !P ! -P%AP=H 0   @#H!= T  (" .T%RP   @( \048,P " @#Z!<0T
XM  ("  $&RP   @( !@8" 0 " @ /!@P!  (" !@&!@$  @( (08* 0 " @ J
XM!M,   (" #4&     @( / :>   "!0!%!G:8   " % &=P   @( 5P8"   "
XM @!D!EP   (" &P&#    @( =09<   " @!_!EX   (" (D&J    @( D@:J
XM   " @"<!JP   (" *8&"@   @( L@9K   " @"\!@8   (" ,4&"    @( 
XMS@:X   " @#9!J    (" .$&@@   @( [ 9_   " @#Z!H    ("  @';P  
XM @( #@>O   " @ 6!X0   (" !X'@@   @( )@>&   " @ O!W\   (" #D'
XM@    @( 0P>!   " @!,!W\   (" %@'K@   @( 8@>P   " @!K!Z(   ("
XM '0'?0   @( >@=[   " @"#!WD   (" (X'F@   @( E@><   "   # )X'
XM      , JP<,  ,  P"X!PH !P # ,4'!@ -  , TP<"  X  P#?!PH '@ #
XM .T'"  P  , \@<  )$  P#X!P  U@ #  0(  !- 0, $ @  &@! P ="   
XM  (# "8(     @, +@@    " P S" @ ,04# #D("@ T!0, /@@$ #4% P!"
XM" 0 -04# $4(!  U!0, 20@$ #4% P!-" 0 -04# % (!  U!0, 5 @$ #4%
XM P!8" 0 -04# %L(!  U!0, 7P@  #8% P!G"   -@4$ &\(   V!0, =@@ 
XM #8%! !^" P /@4$ (8( @ _!0, CP@" #\% P"5"   0 4# )L(  !)!0, 
XMH0@$ $L% P"H" 0 2P4# *X(! !,!0, L@@$ $P% P"U" 0 3 4# +D(  !-
XM!0, OP@  $T%  !?8G)K8W1L %]E>&5C=F4 7V5X:70 7VUA:6X 1$]724Y$
XM3U< 04)33TQ55$4 7W-P87=N=F4 7U1%6%1?14Y$ $-44@!?5$585%]35$%2
XM5 !?7V%U;'-T87)T %]?0D1E4F5G4W1A8VL 7U]"4F5G4W1A8VL 24Y415)2
XM55!46 !-3U5314Q)34E44P!$14Q!60!?7V%M<V=?97AI= !?7V-H:W-T:P!?
XM7V-I;G1$258 7U]E>&ET %]?1DU31U]415A4 $U/55-%5DE324),10!?7V9P
XM<F5S970 24Y415)255!4 %]?9G!T<F%P %]?;G5L;&-H96-K $U/55-%0TQ)
XM0TL 4V5T545V96YT %!U='-C<FX 24Y4.#9/3$0 34]54T5#55)33U( 34]5
XM4T5,3T-!5$4 24Y4.#983TQ$ $U/55-%4$]3251)3TX 34]54T5615)324].
XM %]?0E)53D524@!-3U5314580TQ51$4 34]54T5215-%5 !-3U5315-#4D],
XM3 !'97138W)N %!25%-#4DX 34]54T535$%455, 7V5N9  D04, 8E]53%9A
XM<G, 7V5D871A "1$04, 8E]E<G)A9'( 8E]E<G)L:6X 8E]E<G)M;V0 8E]E
XM<G)N=6T 8E]53%-Y;5-E9P!35$M(45$ 7V5N=FER;VX 7U]A8W)T=7-E9 !?
XM97)R;F\ 7U]A86QT<W1K;W9R %]?86)R:W  7U]A8G)K=&( 7U]A8G)K=&)E
XM %]?86-F:6YF;P!?7V%C;61L;@!?7V%C;61S96< 7U]A96YV<V5G %]?865X
XM:71?<G1N %]?86EN=&1I=@!?7V%S:7ID<P!?7V%T;W!S< !?7V)P0D-?4T%"
XM %]?8VAI;&0 7U]D;W-E<G)N;P!?7V1O<W9E<FUA:F]R %]?9&]S=F5R;6EN
XM;W( 7U]F86, 7U]I;G1N;P!?7VYF:6QE %]?;W-E<G( 7U]O<V9I;&4 7U]O
XM<VUA:F]R %]?;W-M:6YO<@!?7V]S;6]D90!?7V]S=F5R<VEO;@!?7V]V;&9L
XM86< 7U]O=FQV96, 7U]P9VUP='( 7U]P<W  7U]P<W!A9'( 7U]U;6%S:W9A
XM; !?7U]A<F=C %]?7V%R9W8 1T544T-23E]415A4 %!55%-#4DY?5$585 !0
XM4E130U).7U1%6%0 04)33TQ55$5?5$585 !)3E124%1?5$585 !)3E0X-D],
XM1%]415A4 $-/1$4 7U1%6%0 431724Y$7T-/1$4 43143T],7T-/1$4 431-
XM3U5315]#3T1% $9!4E]$051! $9!4E]"4U, 3E5,3 !?1$%400!?0E-3 %A)
XM0@!820!8244 6%!" %A0 %A010!80T( 6$, 6$-% $)27T1!5$$ 0E)?4TM9
XM4P!#3TU-3TX 0D-?1$%400!.34%,3$]# $5.34%,3$]# $)#7T94 $)#7T-.
XM $)#7T13 $)#7U-!0@!"0U]300!83T( 6$\ 6$]% %-404-+ %-934)/3   
X! $)#
X 
Xend
+ END-OF-FILE q4t.qlb.uu
chmod 'u=rw,g=,o=' 'q4t.qlb.uu'
set `wc -c 'q4t.qlb.uu'`
count=$1
case $count in
17142)	:;;
*)	echo 'Bad character count in ''q4t.qlb.uu' >&2
		echo 'Count should be 17142' >&2
esac
exit 0
From: galenr@hpgrla.gr.hp.com (Galen Raben)
Date: Thu, 19 Nov 1992 17:00:21 GMT
Subject: Re: Visual Basic
Organization: Hewlett-Packard, Greeley, CO