Google
 

Trailing-Edge - PDP-10 Archives - tops10and20_integ_tools_v9_3-aug-86 - tools/crc/packages/lbr.exe
There are no other files named lbr.exe in the archive.
?p0?hP?x+1*38P1301 `@?{x#x'@
(184@P
`p[	6QR(V0I8'HlXL`
hhx?
0W y(N@2H	XT0P
$0(p-x/$  (+HP-p/CCD+R+R0
3?#4#x1@@n\"1BE\"KBFBF 2 BE "f BD@@G "@ BG\" BH "@ BH,pl #,~``,Ma@ ,h`@ ,@ 2 Bw`@+3\"1`@ \",uf4 1O@	,#
,
& "D $5`@  $624	ab+x,`\"7 H\":,+dZ,+d\$;,`,~,{!" BK\"< BN "D $=24	ab+,`\">+d Dm,\,~ m B+FSmPBEO@n,~-<#\$H,`,~!" BK\", BN "D $L24	`b+R D\$X,`,~ "D $`24	`b+d j*"u\$j,`,~ "D $o24	`b+s4$|0d+ Du\$
,`,~ "D $24	`b+s4$0dP+ D~\$$,`,~,\,~l@,
  Bpd   ~1b "/"&"6@88 B~@@ & ~$$<.$*" "E/ B "
 B &*" u BK B " B ~< B p $4* p 0"~$&+@ pl"	4#x pl"!$` u(F
4#x u7@ & $&$$$~ D pl"O4#x+
&0&&&(	&0&@
&h\$7,`,~l +]\$9,`,~l " B4+]\$<,`,~l0+]\$?,`,~l+]\$A,`,~,\,~ "  Bq,,~\$C,`,~7@v+K-<#! "  Bq "D $U24	`b+Y _*""l @,a,~``+`@@h@@h,|,~@,a,~d@ ,7@,~`@+h`@@+n 
[07@ +6Bh2b 7+6Bh3" 7+`@+o,>]0 q@f,^a@+	[0,O".& $ q=F|   q q2$q rJ4#x,>,>,> q\$c@f4#x,^,^,^   q@H4#x,>,>,> q\$r@f4#x,^,^,^`@@+s8
,
++m`@+u,>,>,> q\$r@f4#x,^,^,^d@a`,~ q	`,~,>,>,> q\$w@f4#x,^,^,^ q p@@
4#x,>,>,> q\${@f4#x,^,^,^ qOH4#x,>,>,> q\${@f4#x,^,^,^ /	,>,>,> q\$|@f4#x,^,^,^ q  &J4#x a` D,>,>,> q\$~@f4#x,^,^,^ q @H4#x,>,>,> q\$@f4#x,^,^,^ q  &J4#x,>,>,> q\$@f4#x,^,^,^ q\$@f 8,>,>,> q\$@f4#x,^,^,^ q  &J4#x,>,>,> q\$	@f4#x,^,^,^ q 	 &J4#x,>,>,> q\$
@f4#x,^,^,^ q  &J4#x,>,>,> q\$r@f4#x,^,^,^,~-<#@A4\"``@@ &7D+[  [3b+|: * B9v "D $24	`b+[Z2B+#IZ,,~+|@@h,,~ Dh+#IO@h,,~ Dh+#Il+#Il0+#Il " B4+#I(`H$ @ "D $
24	`b+*Z1F
+#I1F+0F+4Rd7@h.9+#IK3b/9+#I\$:,`,~+l`+@!" BK\"E BN\"F BL\", BM "D $I24	`b+O Dq q U4X+#I\$^,`,~7@v+d`` +m6@	+{!"( BK\"$@@N6@ BN "D $24	`b+ D,\,~l@ajp+9\"r " Z@f
4#x,@,~Zl"	`ajp+>\"
4#x,
+H,`\"Z " @
4#x+#IZ,c,~Z,,UZ,fZ (Dl4Z Bp,N Dx pO4#x4#x Dx,%,q,X,~,
+#I6"y+h 7@+/" $&3"+d,+^+d`@,~,` "``,N\",d,,~ $.".: x D,>\bZ!&@
4#x,^ x D BK B BSd "/4#x+#I yO6   p4#x 
x"l2l!+}Z ""&4" p ""&+@.,3l!+w Z "4"f. p "+@,~-<#,`\"& p
4#x4",ZB: "&$" B  &.D.&=H
 /"BSpX< 1!&4#x `SpX 1!&@44>8(,
 O : l&4#x pl"	4#x@@v &&$&.Fx!"XpO x.x4#x,>,
&,^,+#IO@y7@	+5 x2b+5\";`` x  $.@@y6@+22b+2 7@y Fy2fy+2 Fy Dy.=H,\"?``6@y+8O@y\"@``,~>	 y x3D +E   D /O@  /&$82$+D6@ 
+D.B 
\"G``  .  B 	\"K``  $.@6@+I3& .=BG F\"?`` /x B,~4#x w3F,~ &&w&6@8 &&$,~ "5BX7@+]\"
4#x\"05BS,~\"!& 
4#x,`\"U\"\"Y,~ Y &4#x`h,~+#I Z &4#xfZ(Ht Hw7@+[2H+b,~-<#\$d,`,~!" BK\", BN``+e "D $i24	`b+n D,\,~l  ,
  Bpd  ,
&,~ "D $t24	`b+u,\,~,~ " 4#x " 4#x4B#J" " \$4#x z {@@K1$ +	0d-+{D+@H,> "L\$K/4~ad@+~Z D6@,,^1D+1D+1D,~1D,~4D#JOd D`@ +' "4 Bp,
&l ,~l  B\!"4 Bp,>,>,#l  ,
&,^,^,~]\$@f "B@B,~\"K & (@hl "\$K/4/`d+/ Bl ,~\",
<l +5l  2 Bw7d \$,`,~7@v+d "D $24	`b+Y[Zf2B+ D``+\" BN``+] BM!"``l"`` l" BK\$ ,`,~ "D $%24	`b+) D,\,~da`+P``,>``@,a+/``,^,
	``,d`` (  (D``+1lZc@246``l[(  p4#x"
2*!+b p ""&4yZ ""&4=.*3*!+\ p " 4yZ " 4BZa`	```,>a`+o\"
+o``,^,
	+Q``,
`@+Se`,~,^	`,~ "v BC/,
`@+S\"K,
+d,>,>,>,> "Z`0DH+M p4#x,>  $
@ .2h .$=f,^3b+U B\"V pQ"O4#xl,
,>,>,
&,^,^,^,^,^,^4#x,~\$Y,`,~7@v+d`` +m6@	+{ "D $]24	`b+Y[Zf2B+% D[
(,\,~l@ " .4#x,:	 0.B2b+^@@0K B,
,Y,~ _*"" $l @,a,~,\,~l@\"r]([
(  ".4b,:	 0.B2b+h@@0K B,
\">5@,
+j+*H]4o^r^0\^@Q^PI^Xb$y|_T(]4o^r$y|_T\$,`,~ "D $24	`b+Z
dJ+E+(](,`,~,\,~S
(n,~ "D $
24	`b+
d
](,`,~,\,~S
(f,~\$,`,~7@v+`` +m6@	+{ "D $%24	`b+d j*"u,\,~ &*",~\$&,`,~7@v+,\,~ d" Bl  ,~\$&,`,~7@v+,\,~ l" Bd  ,~\$(,`,~7@v+`` +m6@	+{ "D $024	`b+Y FZf[2B+1 D]( BM\" BN!"``l"  BK\$5,`,~ "D $;24	`b+@ D,\,~l@a`+	@,a,~[(,@@:	 .F2f F " .4IZ``,
	Z
,H+	,
Zl"	4	a`+	\"
+	 4U+	,
,Y,~\$],`,~7@v+`` +m6@	+{!"  BK\" BN "D $c24	`b+@ D,\,~l@ajp+	"\"r " Z@f
4#x,	+,~,
Zl"	`ajp+	*\"Z\"!&
4#x,
+g, B[ ".4b@@:	 .B2b B,H,~+#I\$,`,~7@v+6@	+{ "D $o24	`b+Y Dd`` l``l "D $q24	`b+t"z1B+	EZn+	?l@]8\"@f4#x $D\$4#x B,
\$!"4#x B 
l"!$p!&4	Q,Q`@,~\$!"4#x B,	w,	d,~ @B\$!"4~ B`@+	_ L 
,	\$!"4#xl"+a@,~`@,~\",~!"\$`@\$4B3!"54  B3S3X3@4)\"
4#x\$c`@+
@f4#x  0
4#x\$1@f4#x\$r`@\$1@f4#x 	4#x,~\$!"4#J B,`\"3 "  @
4#x\"8 "	b; 4
,~+[,\,~\"C\"\"F,~\$L,`,~,\,~6@4+
&!"\$N4S B3@54\ B4 "44#xd$@d&@ 444#xS4X3@4d?,> 4@@4#x7@v+
,l,
O+
,@ 494#x,^D6@,
&,~\$j,`,~7@v+`` +m6@	+{,\,~6@	+s,,~ /	\"x``@@z,
p,~=n
;\"{`` /	@@z,
L,~=n
?,R\"~``,
\" zl"	4#x z Bp\" ``,
&\",~6@z+
[ /	$.&"6@8 B $&$$" B{ ". Bz z (D4#x 4#x /	7`+#I z6@+
^. Bz+
[ 
z p (4#x 
(1l+ "l p ""&4#x z ""&+@.,3,!+
b p " 4F
n4#x z " +@ z. Bz+#I6@z+
{ /	$.&"6@8 $&$$" B{ ". Bz /	7`+#I z6@+
~ .Bz+
{SzX"$.<*" { B z ""+@ .B{ .Bz+#I\"
4#x!"\$z@@  *" "E/ B  B  *"  BK B  B /	 B0b+ O@	 z $4* z ""&+@ zl"	4#x zl"!$` (F
4#x z $4#x 4#x+#I\$ ,`,~,\,~,
<\$ ,`,~,\,~\"V,~o\$ ,`,~l +1\$ ,`,~l "D $ a@ $ 24	`b+ "^5";\$ (,`,~ "D $ -24	`b+ 0 D,\,~a@+3\$ 6!"4 : B+P,>C< @,>\"\$ B@fl,a,~d "  B , 
( J1,
+K8
1L + G+GQLl,~`@ ,~\" I,~,>P v@4F v9Q z $4#x z@ &	4#x z 4#x,~a`,~ p4#x&$2d,~,`\" w,
6\" {,~ H5[`@ 	4H } .[87@+i "\$]8:4#xab+o8=Hd`@,~,` "``,N\"!,,~ H6 N57@5+R8X&#*&&``@+|!"`` l" B6 !*"* 5\"'!& af 
4#x\"+ 5 !
4#x "6\$+4! B 
+#Il @ 6 5<HO8[87@+
 "\$]8:4#xab+o8=H
,~``,~,>,>,>,>\"r``+!  " @f
4#x,^,^,^,^,~\$!,`,~,\,~l@6@o+
,)~O@o,~-)~,~\$ "/4!`d@+#I,~7@v,~O : &.l&4#x p`@l"	4#xe@@@p@@v,~O@o6@v+!! p Z &4#xfZ(Ht (D pl`` d4!2Sp :!&P`` d&@4!:O@v "E/2B+!E 5F!U6@	+!_e@,
= `bd  ,~\"!a;Do1D+!i "D;+
&  B "P3"+!r B7@,~ ,.
 "S6@0/4!{.
S "=J
C,~	The LBR program maintains and creates what are known as "universal"
libraries. These are files in your directory that contain many other files, most
of which were originally quite short (only a few pages). LBR conserves disk
space both in your directory, and in the system overhead area, by compressing
lots of small files into one large file. You can extract these small files
whenever you want, or replace them inside the library with new versions, or
remove them altogether, or type them, or get a directory. All of these things
are done with the LBR prorgam.
		Two assumptions are made about the libraries you use. First, it
is assumed that all the files will be of a similar type. Second, as a result
of this, it is assumed that all have the same byte size, and all have the same
extension. These are not required, but when you insert a file into the library,
its name is remembered, but its extension is not. When you extract it, the
extension used by default is one set up for the whole library. Similarly, the
output file will be written with the byte size of the library. For most purposes
this presents no problem. However, it means it may not be easy to mix (say)
binary files and text files in one library, unless you are willing to treat
them all as binary.
		The space savings that can be made are dramatic. We picked just
one user on our system who had 65 1-page files in his directory (mainly files
of commands to a statistical package). They took up, of course, 65 pages
in his directory, and 65 more pages of overhead (from system directories). In
a library, they took up just 12 pages !
	Type HELP FILESPEC for help on the syntax of file and module
specifications in LBR.

	The EDIT command allows you to specifiy a module in the
library which you wish to edit. It starts up the system editor, places the file
in its text buffer, and then automatically replaces the edited module back into
the library when you exit from the editor.
		If you wish to use SED as your editor, type /SED after the
module name. To use SED always, you can type SET SED, which makes LBR
always use SED for the EDIT command. You might want to put this in your LBR.INIT
file. If you only want to use the editor to review a file (ie you do
not wish to change it), type /READONLY after the module name. This will prevent
any accidental changes you make being incorporated into the library.

	File specifications in LBR commands such as COPY, INSERT
LIBRARY, etc. follow the standard TOPS-20 pattern for their names. Both names
and extensions can be upto 39 characters long, and directory specs can be given
which are also 39 characters long. When more than one file can be operated on
by one command, a "wildcard" spec is allowed, where * and % characters are
used in the filename. "*" stands for any combination of characters, "%" for any
single character. Thus A% means all two-character names beginning with A, and
A* means all names beginning with A (including just A, if it exists.)
		Module names follow the same rules, except that they are just
names, with no directories or extensions.
	When wildcards are used for an output filename, they may not work as
expected. If you specify a wildcard in any field in the output filename, it
means "use the value of the input field here". If you do not, that part of the
output filename is used. Thus
COPY A* (to) <Work-directory>BA*.DAT
does NOT add the letter B to the beginning of all your filenames, It copies
the modules specified to directory <WORK-DIRECTORY>, and gives them the
extension DAT. This is the case with all programs that use output wildcards.


The CREATE command makes a new library, and makes it the current library for
following commands. The format is:
CREATE (library) LIBNAM.LBR (type) extension (byte size) n (with room for) N

	A file of this name must not already exist. This prevents you
accidentally overwriting an existing library. To create a new library to
supersede an old one, you must DELETE the old library first.

	Only the name of the library need be type, all the rest defaults.
The extension of the library defaults to .LBR, the default extension for
inserts and extracts to null, and the byte size to 0 (all suitable for
text files.) The number of entries defaults to the minimum possible (which is
around 40 at present). The library is expanded as necessary if room is needed
for more. As the expansion is a lengthy process for large files, if you are
creating a library which you know will contain more than 40 modules, it is worth
your while to allocate more space initially. Each 40 modules of directory space
takes about 1 page of disk space.
 The type will be set when the first file is inserted, as will
the byte size, using those supplied by the first file.

Examples:
CREATE GLIM-COMMANDS
CREATE BINARY-DATA (type) BIN (byte size) 36

The DELETE command deletes modules from a library. Format:
DELETE (modules) name
You can either specify the name of a single module, or a wildcard spec
using * and %. % matches a single character, * any combination of chars.
Thus A* means all modules whose name begins with A ; A% means all modules
whose name begins with and habe 2-letter names. Combinations such as
A%B* are acceptable. Recognition with escape can be used on single names,
but not with wildcard names. You can also use question mark to get a list
of modules.

	The DIRECTORY-class commands are used to list the names of modules in
the library. Optionally, information such as the size and date and time of last
update can also be included. The basic directory command lists all modules ;
typing DIR A* would list all modules beginning with A. The following switches
may be used at the end of the command to modify it:

/AFTER:date+time, or date, or time	Only list modules altered after
					the specified date or time
/BEFORE:...				Like after, but lists only those
					modifed before the specified time.
/FULL					Prints a header before the directory
					like the STATUS command.
/VERBOSE				Includes the size of each module,
					and the date and time of last update.
/OUTPUT:file				Places the directory output in the named
					file.
/SORTED-BY-DATE-AND-TIME		Sorts the output listing so that the
					newest modules are at the top of the
					listing (usually the listing is alpha-
					betical)
	The TDIRECTORY command is like directory with a /SORTED switch
assumed. The FDIRECTORY command assumes the /FULL switch, and the VDIRECTORY
command assumes the /VERBOSE switch. The LIST command requires an output file
name.
	If you want a compact listing of filenames and nothing else, it
may be easiest to type
TYPE ?
	which will give a list of all modules in a compact tabular form.

The INSERT command places new files into a library. Note that when in the
library, we refer to the files as "modules", to distinguish them from real
files. The format of the command is
INSERT (files) filename.type
You can type the name of a single file, or a wildcard file spec. The type
defaults to the default type for the current library. The files are inserted one
by one into the library, with their names typed as it happens, if you ask for
more than one to be inserted. Note that if a file is encountered which clashes
with a module already present, the file is not inserted, and LBR proceeeds to
the next file in the list.


The REPLACE command is used to update a module in a library which is out of
date. A new copy of the file is written into the library. Command:
REPLACE (modules) modnames (with files) filename
You may use wildcards. The filenames default to the module names used. You
should not attempt to override this unless you have to, as you may not have
as many files as there are modules to replace if you use different names.
	You may find the UPDATE command easier to use than REPLACE. They both
perform a similar function.
The  TYPE command types files from a library. This is only useful with
text-file libraries. Format:
TYPE (modules) name

The COPY command copies modules from the library to TOPS-20 files so that
you can use them with another program. Format:
COPY (modules) modnames ( to files) filenames
	The filenames default to the module names, the extension to the
library default extension. You may use wildcards. By default, the output files
are temporary files, and will be expunged when you logout. They will still be
in the library. See the SET NO TEMPORARY command to override this.


	The UPDATE command replaces exisiting modules in the library with
new versions from ordinary TOPS-20 files. The format is
UPDATE (modules) modnam
where modnam is either a single module name or a wildcarded name. This command
assumes that the new versions of the files have the same name as their
corresponding module, and the same type as the library, which is the usual state
of affairs. To do more complex updating, see the REPLACE command.
The LIBRARY command selects a new library to work with. You must give this
command before attempting to use an existing library. format:
LIBRARY (to use is) libnam
The type defaults to .LBR.
			You can also specify the library to be used with
the TOPS-20 command you use to run LBR. Example:

@LBR FRED

	starts LBR running, and makes it use FRED.LBR automatically. This will
override any LIBRARY command that you may have in your LBR.INIT file.

The SET command is used to change various defaults. Arguments are:
SET [NO] AUTO-EXPUNGE
		This controls whether or not LBR will expunge your directory
when it becomes full when writing to the library. By default, if an INSERT or
UPDATE operation on a library causes the directory to become full, the directory
containing the library will be expunged. A failing COPY command will also
cause this to happen. SET NO AUTO-EXPUNGE prevents this.
	LBR then pauses to allow you to create space yourself, selectively.

SET EXTENSION file-extension
			This alters the default file extension used in
INSERT, REPLACE and COPY commands. It permanently alters this in the library
for future use.

SET [NO] SQUEEZE
		By default, every time the library becomes more than one tenth
empty space, LBR performs a "squeeze" operation, which creates a new version
of the library without any deleted space in it. This is usually desirable, but
may not be if you are about to perform a stream of updates to a large library,
when you may mot have enough disk space for the old and new versions of the
library to coexist. This command controls this feature.

SET [NO] TEMPORARY
		This turn on or off the feature whereby output files are
made temporary, so that they are expunged at logout. By default, files
extracted with COPY are made temporary.

SET EPHEMERAL,SET PERMANENT
		These commands allow you to permanently override the SET
[NO] TEMPORARY commands for a particular library. Typing SET PERMANENT means
that every time you use the current library from now on, all output files
will no be temporary, without you having to type SET NO TEMPORARY.

SET SED
		When you use the EDIT command in LBR, your default editor
(usually TV) is used, unless you type EDIT/SED. The SET SED command makes LBR
use SED at all times for the EDIT command.


	The SQUEEZE command compresses your library into its most compact form
removing all deleted space and deleted directory entries. When you delete or
update modules, LBR attempts to find a free space that best fits the new
module in the library. If none is found, the new module goes at the end.
Eventually the library accumulates some small patches of unusable space, the
amount of which is typed on a directory listing as "Free space in bytes:".
The SQUEEZE command creates a new copy of the library with this space removed.
	A SQUEEZE is performed automatically if, after a command has been
executed, more than 10% of the library is empty space. You can suppress this
action with SET NO SQUEEZE. It may be desirable to do so if you are in the
process of updating a large library, as you may not have enough space to keep 2
copies of the library (the old one being squeezed, and the new one being
created.)


	The GO command exits from LBR, just like the EXIT command, but then asks
TOPS-20 to re-perform your last LOAD-class command (ie LOAD, EXECUTE, COMPILE,
DEBUG.) This is useful if you have just edited a program in a LBR-library and
wish to recompile or execute it.


	The APPEND command works just like the COPY command, except that
it appends the modules to the specified output file, instead of creating new
output files. The exception is that you cannot use wildcards for the output of
the append command - APPEND A* FRED appends all modules beginning with A to
file FRED.??? (where ??? is the filetype of your library.)


	This program can be used to list selected bits of info about the system
or the subroutine libraries. The GUIDE program lists info on system commands
and programs ; the SUBS program on the CRC subroutine library ; the NAG program
on the NAG library.
	The INFO command lists info on a particular subject, for instance
INFO TYPE tells you about the TYPE command for typeing files. Type INFO ?
for a list of things you can get info on. The PRINT command is like info,
but prints the information on the lineprinter for later reference.
	The EXIT or QUIT commands get you out of the program. If you want
just info on one thing, you can type the whole command on one line to
the TOPS20 "@" prompt:
@GUIDE TYPE
	for instance, tells you about the TYPE command.


	The STATUS command prints information about the current library,
the default filetype, the default bytesize, the number of modules in the
library, and the amount of deleted space. This information is also printed
in an FDIRECTORY or DIRECTORY/FULL command.
(
(18t@6`3pi
G(8qHPXih2x~9$(i@gH#Xi\$",`,~ "D $"24	`b+"Z
,\,~ ,~\$",`,~,\,~,
O@	,#,`,~,\,~,
O	4[ " $" &24#x<+R,`\"",~ " $Z4D#J\"r,~ " U$@@+ + \"r,~-<# B,`\"" \"" \"\":,~O@vO\$ &#4#x4(xl l @ "44#xad+"!l&44~ " ""*4~+4~l  "!$,4#x,~,`\"""d @,~a` O@	:va`@,~6@v,~,>,>S"/4#x "!$,4#x\""*``,^,^,~> v,~O@va` @@	a`@,~,>,>\"",``e`+,`\"".Sp $a` *4#x< "04#x "!$-4#x,^,^,~+@w,>\""/``,^/,>,>,>,>``+%\""1<+1\""E p,7 "  {4#x\""J {b4#x D|!" {4"L {b4#x2$|+"X\""Z 7 B,^,^,^,^/\""Z<+1\"| !
4#x\$|!"54#x`b@+"i F{,~,>,>,>,>a`+Q\""E ,7 "  {4#x\""J {b4#x D|!" {4"l {b4#x2$|+"r\""Z,^,^,^,^ B{,^/",> {,~,^,^,^,^ l"	`,^l`@,~,` "``,N\">,d,,~ "D $24	`b+"s,}+#I "t@@f*"h "b"t Dg "D $f24	ab+#I,`\""u+hO\$ &#4#x \"|4#x\$"w@f4#x\$|!"4O B4#x BmSBE "XBEO@nl ,~ BE,^B ^B "z BD "D $"x24	+B B+B "y@@K*"R,~,`\"K7@n,~a`,~7@n,~,`\""z``+# m	`d @@m@@n 2 BE,~7@n+[E
ad+ # BE@@n m	`d +d,`,d\"#+QAPPENDCOPYCREATE@DDTDELETEDIRECTORYEDITEXITFDIRECTORYGOHELPINSERTLIBRARYLISTPUSHREPLACESETSQUEEZESTATUSTAKETDIRECTORYTYPEUPDATEVDIRECTORYINFOPRINTQUITREADONLYSEDGUIDESYS:GUIDE.LBRNAGSYS:NAG.LBRSUBSSYS:SUBS.LBR}@RLBR> +t ( +P8
8l ;G? LBR: No such LBR command as ""
COMMANDS FROMCMD@? LBR: Invalid file specification, ? LBR: Cannot OPEN command file, ,`\"B+dnew libraryName of new universal library@(HIa` ",~Invalid library file name - `@,~,` "``,N\"O,d,,~extensionConfirm with carriage return, or file type for all files in library (HYBad extension - `@,~,` "``,N\"b,d,,~8qbyte sizeByte size for files in library0 8HkHoInvalid number - `@,~,` "``,N\"q,d,,~Byte size must be 0-36`@,~,` "``,N\"y,,~Byte size must be less than 36`@,~,` "``,N\",,~with room forInitial number of files to allow for 8H
HoMust have a positive number of files !`@,~,` "``,N\",,~Too many entries specified`@,~,` "``,N\",,~entries initially Cannot open new library - `@,~,` "``,N\"',d,,~IAFTER:BEFORE:FULLOUTPUT:SORTED-BY-TIME-AND-DATEVERBOSEof modules calledof modules, by time of updatefull directory of modulesverbose directoryof current libraryof modules in libraryNo library file selected - use LIBRARY command`@,~,` "``,N\"F,,~Modules to list, or return to list all* 8HPHTInvalid module name - `@,~,` "``,N\"W,d,,~8,,~+g Module name                              Size Last update
,>,>,>q\$a@f4#x,^,^,^+m 
:46A4+m+,rh@ " B4+m
Listing of universal library  at .

Modules in library: 
Last updated: 
Byte size of modules: 
Type of files in library: 
Pages used for overhead: 
Number of deleted modules: 
Free space in bytes: 
[TDIR - beginning sort]
[TDIR - Starting next pass]
7@,~\"``+u`HInvalid switch or confirmation because: `@,~,` "``,N\",d,,~Date, time or date and timeInvalid date or time because: `@,~,` "``,N\"',d,,~Cannot understand date/time field`@,~,` "``,N\"0,,~on output fileIllegal to specify multiple output files`@,~,` "``,N\";,,~LSTDSKName of listing output file@(HFInvalid name for listing file because: `@,~,` "``,N\"K,d,,~Cannot open listing file - `@,~,` "``,N\"U,d,,~new moduleNo library selected - use LIBRARY command`@,~,` "``,N\"`,,~Write access to library required`@,~,` "``,N\"j,,~Command is not permitted on a library that is marked unsafe - rebuild the library`@,~,` "``,N\"s,,~:Module to insert@(HBad module name - `@,~,` "``,N\",d,,~ [OK]%Module is already in library, not replaced: Cannot open file for read - `@,~,` "``,N\",d,,~1"+d,+^+dFailed to update directory - pI "Zd0DH,#x.&"f+[Expanding library directory]File has no free pages`@,~,` "``,N\"),,~@ Cannot expand library - `@,~,` "``,N\"2,d,,~@@
[Scanning for best fit deleted slot] [OK]

[No useful slot found]
[Module fits slot exactly]\"B``+D
[Concatenating deleted entries]
[Scanning<for newhlargesttfreemblock]%Fileltypedofmmoduledoesnotmatchlibrary,`\"O+\[Setting"libraryfiletypeto]~Hpf4#x+k%Byteasizeooflmoduledoesnotmatchlibrary,`\"^+lis``+z+rNameof,libraryto"select@(HfInvalid,library filespec-C`@,~,`o"``,N\"k,d,,~``@,~,`"``,N\",,~HHK1$0+	0d=+	+,^,~?{x,Cannot find specified library - `@,~,` "``,N\",d,,~?Cannot find GUIDE file\"
l`@,~,` "``,N\">,d,,~
[Aborted],^,^,^,^+#x?Serious problem with library: directory is corrupt\"O< [Fixing up library EOF] modulesModule to be deleted,  HZ B 0+"Tables are corrupt - `@,~,` "``,N\"`,d,,~ B 0+1,Y,~AUTO-EXPUNGEon disk quota exceeded errors]H@DEBUGmode on^EPHEMERALEXTENSIONNOPERMAMENTto be the default editor^hwhen library is 1/10 empty_TEMPORARYoutput files_` thing7Invalid set option - `@,~,` "``,N\",d,,~<Invalid SET NO option - `@,~,` "``,N\",d,,~for output files toNo library selected yet - use LIBRARY command`@,~,` "``,N\",,~Default extension for output from this library (H default for libraryexisting modules"Wildcard" module name (H*Module name, -H. _*"" *l @,a,~+swith filesFiles to use to replace modules in library@(H7Invalid input file name - `@,~,` "``,N\"=,d,,~Lookup tables are corrupted - `@,~,` "``,N\"F,d,,~Number of modules does not match number of files: ,>`@,~,` "``,N\"O,^ " @f
4	,,~library using filesFile(s) to update library with@(H_Module does not exist: ,>`@,~,` "``,N\"d,^ " @f
4	.,,~ H.`KInvalid switch - `@,~,` "``,N\"r,d,,~6$Cannout find any output from editor`@,~,` "``,N\"z,,~Cannot delete temporary file - library is OK`@,~,` "``,N\",d,,~%Edit was /READONLY - no update doneEDITOR:SYS:SED.EXECannot find EDITOR: `@,~,` "``,N\",d,,~Cannot create editor fork - `@,~,` "``,N\",d,,~Cannot map editor - `@,~,` "``,N\"&,d,,~EDIT SED $$.-1 /READONLY
%A file already exists in this directory called 
It will be deleted before the editor is entered, to avoid confusion with
the library module you are editing.
?I don't understand "". Use "DIRECTORY" or "LIST" if you want a directory listing.to TOPS-20 EXECSYSTEM:EXEC.EXECannot find EXEC because: `@,~,` "``,N\"P,d,,~Cannot create EXEC fork - `@,~,` "``,N\"Y,d,,~Cannot map EXEC - `@,~,` "``,N\"b,d,,~library to remove empty spaceCannot (or rather WILL not) squeeze an unsafe library`@,~,` "``,N\"m,,~
[Squeezing headers][OK]
[Squeezing data pages][OK]
[Unmapping old library]
[Mapping new library]"l+
i$Cannot get jfn on new library - `@,~,` "``,N\" ,d,,~ /"&"6@8 B+from this programwith this programINDEXon subjectinfo on the printer aboutSubject for help,  H  ,Unknown subject - `@,~,` "``,N\"  ,d,,~on chapter nameIndex chapter name,  H *Unknown chapter - `@,~,` "``,N\" .,d,,~LPT:Cannot find line printer - `@,~,` "``,N\" 7,d,,~1: 
x/Y,~*-INDEX
?Too many index modules in guide file\" C<
	The DIRECTORY commands in LBR are now different. DIRECTORY just prints
a list of filenames in the library ; VDIRECTORY prints all files, together with
date + time of last update, and FDIRECTORY prints the full information like the
old directory command. The STATUS command prints just the header of the old
DIRECTORY command. The switches /FULL,/VERBOSE,/OUTPUT and /SORTED are now
also usable with any flavour of the DIRECTORY command.
H,^,~[Performing automatic SQUEEZE...OK]Library is empty`@,~,` "``,N\" {,,~No modules match that specification 'Cannot open output file - `@,~,` "``,N\"!,d,,~](+
enter DDT - beware !Library directory is corrupt - `@,~,` "``,N\"!,d,,~Library already mapped,
`@,~,` "``,N\"!,,~Cannot open library - `@,~,` "``,N\"!',d,,~
[Opening library read-only]1B,+
91B)+!50Bk+!)\"!/``l  +
&Cannot map library -  p	`@@p`@,~,` "``,N\"!8,d,,~File is not a library,
`@,~,` "``,N\"!B,,~@@Cannot map library extension - ,
`@,~,` "``,N\"!K,d,,~SpX" !Kl&P`` d&@4!O+
5%Library directory appears inconsistent - rebuild,`\"!Z+
6
[Waiting for access to library]Library is being written to by another user`@,~,` "``,N\"!d,,~Library contains too many modules`@,~,` "``,N\"!n,,~Error constructing module name table - `@,~,` "``,N\"!w,d,,~FILESPECSGENERALwith subjectSubject you want help for,0>H"H"Invalid HELP command, try just HELP - `@,~,` "``,N\""
,d,,~from LBRexit from LBR and execute last load-class command@? LBR: Garbage at end-of-command
? LBR:  ",~+x)p0%Cannot enable control-c interrupts, be sure to let all commands finish
[Locking library]
[Unlocking library]^C
[Control-C received]
?Disk quota exceeded or disk full. DELETE and EXPUNGE some files, then
type CONTINUE to allow the operation to proceed. If you do not do so, the
library will be corrupted and must be rebuilt.
[Disk quota exceeded or disk full, expunging ...[NOT OK]
?\""K,d+5[NOT OK]
?No space released by expunge, you must DELETE and EXPUNGE files, then
type CONTINUE.\""N+5[OK]
The library will be corrupt unless you correct the disk space problem
and continue the program.
?Internal error - cannot match directory name\""d<[NOT OK]
\""k+Q[NOT OK]
%No space released by EXPUNGE\""n+Q+^hg6$fInvalid guide phraseLBR.INIT8L?Error in command file, command file aborted?Error in LBR.INIT, file aborted%Error in LBR.INIT, file aborted\""~a`\"#+  LBR: Unexpected COMND JSYS error, restarting...
\"V+""\"#S,"U$@++~\"#U,~,#Pp,>#X/#Y`|+#+#,> .p5>#&,p+#Y Z,^:x,~ ,>Zp>w h+##,> >hh,p+#Y Z,^:x,~,> >hh,p+#[hh Z,^:x,~,>,p7:,^,~,>,>,p7:,^,^,~,>,>,>,>,p7:~,^,^,^,^,~.#]5>#^
|}~,p7:|~}
|/#],~:x,~,> .p5>#P,p+#^ :,^,^/x+p ,>Zp>w h+#L
? JSYS ERROR: 
PROGRAM CANNOT CONTINUE
 Z,^,~hh Z,^,~@+#B +#N,$\"&M6@#_+&O,^,>Zh/( "   &J` #_6@J`\"&R6@#_+&S,~ &V* #g,$\"&W6@#_+&\,^Zh/( "   &J` #_6@J`,>\"&_6@#_+&b,^Z \$\$$@f #_6@`\"&e6@#_+&g\"&j6@#_+&s6@#`+&(<\"&v6@#_+&x " U$@@+ + 7@#_,~ #_U$@@@@#_@@#_,~,~&{&|&}&~&''''''''''	'
''
''''''''''''''''''' '!'"'#'#'$'%'&'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'N'O'P'P'Q'Q'R'R'S'T'T'U'U'V'W'X'Y'Z'['\']'^''`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's's't'u'v'w'x'y'z'{'|'}'~'((((((((((	(
((
((&{&{((((((((&{&{&{&{&{&{&{&{(((((((((&{( (!("(#($(%(&('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:&{&{&{&{&{&{&{&{&{(;&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{(<(=(>(?(@(A(B(C(D(E(F(G(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^((`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({({(|&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{&{(}(~()&{&{&{&{&{&{&{&{&{&{))))))))&{)	 )
* #g,&6@#`+&(< $
4)`f``f@,~Zf7@,~\")6@#_+) &74#x6@#_+)\"&R6@#_+),~\"#h\$)@f4&6 B? ) (
1J+&/.*J=H&, \$)@f4&6\$#h!"4&6Q" )@A4&6<x)x)x)"x)&x)(x),x)/x)3x)5x)8x)<x)?x)Ax)Ax)Ax)Ax)Ax)Ax)Ax)Ax)Ax)Dx)Ax)Ax)Ix)Lx)Lx)Lx)Lx)Lx)Lx)Lx)Nx)Rx)Wx)Yx)]x)_x)ax)cx)fx)jx)ox)s at PC @@#_+#o #_\$&M@f4&N+#o
@@#_+#x #_\$&R@f4&R+#x#`

[JSYS error occured at (octal) PC @@#_+#| #_\$&W@f4&[+#|
 Offending JSYS was @@#_+$ #_\$&_@f4&a+$  ]
@@#_+$ #_\$&e@f4&f+$ Please report this problem, with a record of the error,
 to KEVIN on X2259
@@#$+$f4&r+$
?@@#_+$ #_\$&v@f4&w+$UnknownLOGIN%CRJOB%LGOUT%CACCT%EFACT%SMON%TMON%GETAB%ERSTR%GETER%GJINF%TIME%RUNTM%SYSGT%GNJFN%GTJFN%OPENF%CLOSF%RLJFN%GTSTS%STSTS%DELF%SFPTR%JFNS%FFFFP%RDDIR%CPRTF%CLZFF%RNAMF%SIZEF%GACTF%STDIR%DIRST%BKJFN%RFPTR%CNDIR%RFBSZ%SFBSZ%SWJFN%BIN%BOUT%SIN%SOUT%RIN%ROUT%PMAP%RPACS%SPACS%RMAP%SACTF%GTFDB%CHFDB%DUMPI%DUMPO%DELDF%ASND%RELD%CSYNO%PBIN%PBOUT%PSIN%PSOUT%MTOPR%CFIBF%CFOBF%SIBE%SOBE%DOBE%GTABS%STABS%RFMOD%SFMOD%RFPOS%RFCOC%SFCOC%STI%DTACH%ATACH%DVCHR%STDEV%DEVST%MOUNT%DSMNT%INIDR%SIR%EIR%SKPIR%DIR%AIC%IIC%DIC%RCM%RWM%DEBRK%ATI%DTI%CIS%SIRCM%RIRCM%RIR%GDSTS%SDSTS%RESET%RPCAP%EPCAP%CFORK%KFORK%FFORK%RFORK%RFSTS%SFORK%SFACS%RFACS%HFORK%WFORK%GFRKH%RFRKH%GFRKS%DISMS%HALTF%GTRPW%GTRPI%RTIW%STIW%SOBF%RWSET%GETNM%GET%SFRKV%SAVE%SSAVE%SEVEC%GEVEC%GPJFN%SPJFN%SETNM%FFUFP%DIBE%FDFRE%GDSKC%LITES%TLINK%STPAR%ODTIM%IDTIM%ODCNV%IDCNV%NOUT%NIN%STAD%GTAD%ODTNC%IDTNC%FLIN%FLOUT%DFIN%DFOUT%CRDIR%GTDIR%DSKOP%SPRIW%DSKAS%SJPRI%STO%ARCF%ASNDP%RELDP%ASNDC%RELDC%STRDP%STPDP%STSDP%RDSDP%WATDP%GTNCP%GTHST%ATNVT%CVSKT%CVHST%FLHST%GCVEC%SCVEC%STTYP%GTTYP%BPT%GTDAL%WAIT%HSYS%USRIO%PEEK%MSFRK%ESOUT%SPLFK%ADVIS%JOBTM%DELNF%SWTCH%TFORK%RTFRK%UTFRK%SCTTY%SETER%RSCAN%HPTIM%CRLNM%INLNM%LNMST%RDTXT%SETSN%GETJI%MSEND%MRECV%MUTIL%ENQ%DEQ%ENQC%SNOOP%SPOOL%ALLOC%CHKAC%TIMER%RDTTY%TEXTI%UFPGS%SFPOS%SYERR%DIAG%SINR%SOUTR%RFTAD%SFTAD%TBDEL%TBADD%TBLUK%STCMP%SETJB%GDVEC%SDVEC%COMND%PRARG%GACCT%LPINI%GFUST%SFUST%ACCES%RCDIR%RCUSR%MSTR%STPPN%PPNST%PMCTL%PLOCK%BOOT%UTEST%USAGE%WILD%VACCT%NODE%ADBRK%SINM%SOUTM%SWTRP%GETOK%RCVOK%GIVOK%SKED%MTU%XRIR%XSIR%SNDIM%RCVIM%ASNSQ%RELSQ%METER%SMAP%THIBR%TWAKE%MRPAC%SETPV%MTALN%TTMSG%MDDT%,~
?DECNETerror&- @@#+&##\$)@f4)&' #\$&R@f4)+&'PS:<SYSTEM>H-CRASH.EXE``"No special error""Resource allocation failure""Destination node does not exist""Node shutting down""Destination process does not exist""Invalid name field""Destination process queue overflow""Unspecified error""Third party aborted logical link""User abort (asynchronous disconnect)""Illegal error code !""Undefine error code""Illegal error code""Connect initiate with illegal destination address""Flow control violation""Illegal  error code""Too many connections to node""Too many connections to destination process""Access not permitted""Logical link services mismatch""Invalid account""Segment size too small""Process aborted""No path to destination node""Link aborted due to data loss""Destination logical link address does not exist""Confirmation of disconnect initiate""Image data field too long" @)v *	* )}6@)~+*!"\$*	4*Q"@4*'p "l, B)~ **  )v-)~,~)vSYS:UDDT.EXE
?Cannot get handle on UDDT\"*<
?Cannot map UDDT\"*<h6*6`*PHheP	P	Jk)~PZPZPYPY1;,~PPPPPP
P
P	P	
aSg*(Tg)~P8Pr)v(Tg})vO`
F
PZPZPYPYV'mxMV'NMV'I 1;,~P'B:$P
SGN&
SG&
DqLA1v*LA0{ @P
Ix:$P(g%p$
`R	K{#x
^*#m
^L#_	9s&,	9o&6q9&(dkg#hs{y&/
Num#`z#,u=#`	L{#o[#!i;##>#s#>##kd#Bkb#<kb#<ka#8ka#5E[#.?;#1IYO`G#OX Pzd"OTI@O< xO%?OLZWPk"Pimmz#JOE0^OE!"OE.OD~wODJGODF*
OD9
OD9OD9OD9
OD9
OD9	OD9	OD9
OD9
OD9OD9OD9OD9OD9OD9OD7,OD7OD3QOD17OD,'>OD,?>9[#)>3;#,PHhfPHhePHhePHgLA$5C AP N:pN9XhxN9WF|N9&_q$#&mzt9##VS$#VS#VSM#VSX#8Q#I1;,~#JM',2M'*hM'(@M&~(M&rI@M&NtM&NM&<]M&<\ M&4
M&/DM&-)#
T,#z)0#
St,##N})m!#L	DD#Pzo4#znt4#897r#vJNdy8r
0!5Sb!5,I!3}Q!3w\IY[?wWOn
IOmgS}hSysS
P	~z-
OOrc OOqh OOA3O9RHPI9bPk(u(	'''y|'ymvG3L=5ltl
O}KkO}+|O|Z\Oi[,Oik%WZ'%WRH%WN%WM}%WMw%;74%;)>%;)9%G@O=nE%I
H{g
XKRbbRb\RbCRa~QRa~PRa}=e"94OOwOO#OO=ONyiONm&ON`wON_}ONK]ON@^ON@ION@FON36ON-@ON-ONtON+ONONkONMON
s
ON
]ON
VODp88x1PHhePHgPJYP2iP2iP1~W-`rW-`qW-`pPPJ
,WuP`
,WuP]oWuPJoWuP7oW23{XW.k"	W.OwaW-F#+hW+Z~W+~_P=E%W+
gW+T7W+9'	W+sW+qOW+iw	W+7W++hW*|L"P<WP<NJ
W*u76W)w9mW(RoW(RW(QaxW(J!M~W(J!~W&uyW&YihPA^_3(C[a3(CWo3(CWi3(CN3(CM|3(CMd3(3&53('7
3('3
3(')
3(L53'a63'ZB6N3Y@8)k:PQ%
/i79P]& l=P`@=}S|w	$^w	"Xw	hw	dv3qVw'	j;=WI
Rw*UrHr]ChnK)AnK(BynJq`Mj:@Mj9YMj9>2 Uh0-Uex
CDE*re/'7|Ue'W3PDPD@
/.c;r}Uc;,Ic;@nc;0c;P=l~PZPZPYPY
URO
6URA
?URA
;UT|$T{uLzUT{hfTlD>
[TlD:
nTlD:
iTlD9
bTlD9
^A[
LTbv
{Tbq
~ f
pT(y#T"LT
.
K-AQ9]xOQM}`
EL/q>@K!;BK!9BPLtPEB@*Q*[35
5~5	5n;	5SL55G	5z2PYC@PPPPd
nK)
&Y&|
YL3
/g2^{HHM	4+M	3[9M	3[@PWx$cR
P
P	P	.u^Sg#u^;Lmu^'u^J+HU-,HU*)LrLek
r:^STUHHB)HB(Ll\<Ll[eV~Ll[^u 
k.&?H0KJ'"<P".H`Y?fPLLYf2LYe{xPoP$Pm&XQutiHI HI9~4TAP64D@AVw[MT8a]	 T8aEOPUc
9TOv8R B
&8RO
&8Qio8HiR,3m:
,.	g,.[
(Y Kv%
y%#yPq$s .x$rsN$rgLp"am"O oI$!5
m75
St,#KzK
$KzJ}g`KzJRX@KzJ@JKzJ?|p
:zW
H&/JHS^~j^~[p^~Mx|Lm^guhSYFK8 SXxQ"SXx'[Xx!AGXwuGKXwb?@X#:X#;7X=6X
D4X
5;X
x+:X
`8X
_8X
^!7X
]/9X
]9X
L3X
E\5X
=#5X
,d3X	jsAX	jrAX	jr@X	jq@X	jq?X	jp?X	ja>X	j`>X	j`=X	j_=X	j_<X	j^<X	j^;X	jJ6X	j84X	j72X	j62X	j61X	j51X	j50E%	o#E%	gE%">E$~$E$}K9SE$|.
E${[~E$u92E$PBPE$>NqE$3V*A E$0X
GE$,Q:E$$3E$W6E$!tE$
u1Pf{@S@7\$S@7LE/>TS
&>TIgo>Aj<l <S2!6.2!1J'2!g2 Y@P
mN 2 RsG
l
1TOs1LYC1HT+b
k#KK1+G\ S0IgS/+rO.&s/-osS+@.+?.BKK+m :K+mK+mK+lu_K+lthK+ln< K+lmgK+lO(K+l>@K+l=@K+l9K+l0JK+l/|@K+lj@(Tt.N(TU_?(TUA(T<#(T#(T	d(TJ7!|K@r&=	6'3Hd.xH+LpR
P	~@ S.P.KG;~KFthKF%V|P/IH%.^J.^=
.^=::46Fn	L	K{	KHY4	K4
~${4}*2P}
5}
\!#+RwcSRw]$wS&w{tw+KP	0T.w9	_v{IS
	/ps	wu1Psz	jGjO0wDN@
al7;
ajBaj"w{ajg|$w-eY2eY1eY1
J`y d
_%FR_GS _sqPcUt
_Z7/J^xQ( \}:GR\} $JSz_P3N>JO	)	 RMR^MF"
MF 
	MgMW=MVQMUGo
M+2)MG2JM@:@KTE(KRY";RKRT.
KRIuKQ~	KQjBDJL=AJL  JLC JLPJL~}@JLzU H&<0@JLmf`JLaURK!L:K%8{
Ks	#ll	H_M"0HYc	UHYb}XHY[NYHY@hcHY<]HY
HXqVf
HOC$fz
GE75G@X^{JG_rxXSwREiQk@EdzivC	tRENxfEBt(0RD89w+z#,o&.uR8H.@8v:K7S[87S0D7S%I7S%G7Z27Y,7%[pK2OI"
=2OA
C.0J=+sVO~R.@#N|O/Rj7Ri~HR0q6w,e=Au"H"g&>/ 0W+~_P=E%W+
gW+T7W+9'	W+sW+qOW+iw	W+7W*|L"P<WP<NJ
W*u76W(RoW(RW(QmgW(QaxPA^_PQ%
Vw'	Ue'W3UT|$UT{hfPoP$HI HITAT8a]	 T8aEOPSXxQ"Pf{@S@7\$S@7LE/R\} $>{P0\B:/\>X\>5'\7N+\2g'r'I(\)8*\)7\	\	)\+,\6.\.,[rO.O[mNO[mO[m	O[l|[l{&O[l+O[kO[kO[j]O[jRO[i%r%H([Z[X%[Qgr%0[Ms/[M"-[M	+[L,[FG[@v*r#eOD^w'dw]!+{0