diff options
41 files changed, 11289 insertions, 5799 deletions
@@ -1,4 +1,11 @@ -Current version is 2.4 (version 2.3 was never publicly released) +Current version is 2.5 + +* Changes since version 2.4 + + io and string libraries are now based on pattern matching; + the old libraries are still available for compatibility + + dofile and dostring can now return values (via return statement) + + better support for 16- and 64-bit machines + + expanded documentation, with more examples * Changes since version 2.2 + external compiler creates portable binary files that can be loaded faster @@ -19,8 +19,8 @@ * Shared libraries If you are running SunOs 4.x, type the following after "make" succeeds: - ld -o lib/liblua.so.2.4 src/*.o - ld -o lib/liblualib.so.2.4 clients/lib/*.o + ld -o lib/liblua.so.2.5 src/*.o + ld -o lib/liblualib.so.2.5 clients/lib/*.o For AIX, the OpenGL clone Mesa includes a script for making shared libraries. For other systems, please let us know how! @@ -1,8 +1,12 @@ # makefile for lua hierarchy all co clean klean: + cd include; make $@ cd src; make $@ cd src/luac; make $@ - cd include; make $@ cd clients/lib; make $@ + cd clients/lib/old; make $@ cd clients/lua; make $@ + +old: + cd clients/lib/old; make $@ @@ -18,8 +18,10 @@ The latest version of Lua is always available at the following locations: In Brazil: ftp://ftp.icad.puc-rio.br/pub/lua/lua.tar.gz In Canada: ftp://csg.uwaterloo.ca/pub/lhf/lua/lua.tar.gz + In Germany: ftp://ftp.uni-trier.de/pub/languages/lua/lua.tar.gz + In Greece: ftp://ftp.ntua.gr/pub/lang/lua/lua.tar.gz Home page: http://www.inf.puc-rio.br/~roberto/lua.html - The current version is 2.4. + The current version is 2.5. * Legal matters Lua is freely available for both academic and commercial purposes. diff --git a/clients/lib/Makefile b/clients/lib/Makefile index ffe2a63f..03888051 100644 --- a/clients/lib/Makefile +++ b/clients/lib/Makefile @@ -4,10 +4,10 @@ LUA= ../.. include $(LUA)/config -EXTRA_DEFS= $(POPEN) +EXTRA_DEFS= $(POPEN) $(NOSTRERROR) OBJS= iolib.o mathlib.o strlib.o -SRCS= iolib.c mathlib.c mathlib.h strlib.c strlib.h +SRCS= iolib.c mathlib.c strlib.c SLIB= $(LIB)/liblualib.a @@ -19,8 +19,8 @@ all: $(SLIB) dynamic: $(DLIB) $(SLIB): $(OBJS) - ar rcuv $@ $(OBJS) - ranlib $(SLIB) + ar rcu $@ $(OBJS) + $(RANLIB) $(SLIB) $(DLIB): $(OBJS) ld -o $@ $(OBJS) diff --git a/clients/lib/iolib.c b/clients/lib/iolib.c index 9ed7e479..c2faf1c5 100644 --- a/clients/lib/iolib.c +++ b/clients/lib/iolib.c @@ -1,10 +1,3 @@ -/* -** iolib.c -** Input/output library to LUA -*/ - -char *rcs_iolib="$Id: iolib.c,v 1.44 1996/05/03 20:10:59 roberto Exp $"; - #include <stdio.h> #include <ctype.h> #include <string.h> @@ -16,7 +9,8 @@ char *rcs_iolib="$Id: iolib.c,v 1.44 1996/05/03 20:10:59 roberto Exp $"; #include "luadebug.h" #include "lualib.h" -static FILE *in=stdin, *out=stdout; + +FILE *lua_infile, *lua_outfile; #ifdef POPEN @@ -31,515 +25,203 @@ int pclose(); static void pushresult (int i) { if (i) - lua_pushnumber (1); - else - lua_pushnil(); -} - -static void closeread (void) -{ - if (in != stdin) - { - if (pclose(in) == -1) - fclose(in); - in = stdin; + lua_pushuserdata(NULL); + else { + lua_pushnil(); +#ifndef NOSTRERROR + lua_pushstring(strerror(errno)); +#else + lua_pushstring("system unable to define the error"); +#endif } } -static void closewrite (void) + +static void closefile (FILE *f) { - if (out != stdout) - { - if (pclose(out) == -1) - fclose(out); - out = stdout; - } + if (f == stdin || f == stdout) + return; + if (f == lua_infile) + lua_infile = stdin; + if (f == lua_outfile) + lua_outfile = stdout; + if (pclose(f) == -1) + fclose(f); } -/* -** Open a file to read. -** LUA interface: -** status = readfrom (filename) -** where: -** status = 1 -> success -** status = nil -> error -*/ + + static void io_readfrom (void) { - if (lua_getparam (1) == LUA_NOOBJECT) - { /* restore standart input */ - closeread(); - lua_pushnumber (1); - } - else - { - char *s = lua_check_string(1, "readfrom"); - FILE *fp = (*s == '|') ? popen(s+1, "r") : fopen(s, "r"); - if (fp == NULL) - lua_pushnil(); - else - { - closeread(); - in = fp; - lua_pushnumber (1); - } - } + lua_Object f = lua_getparam(1); + if (f == LUA_NOOBJECT) + closefile(lua_infile); /* restore standart input */ + else if (lua_isuserdata(f)) + lua_infile = lua_getuserdata(f); + else { + char *s = lua_check_string(1, "readfrom"); + FILE *fp = (*s == '|') ? popen(s+1, "r") : fopen(s, "r"); + if (fp) + lua_infile = fp; + else { + pushresult(0); + return; + } + } + lua_pushuserdata(lua_infile); } -/* -** Open a file to write. -** LUA interface: -** status = writeto (filename) -** where: -** status = 1 -> success -** status = nil -> error -*/ static void io_writeto (void) { - if (lua_getparam (1) == LUA_NOOBJECT) /* restore standart output */ - { - closewrite(); - lua_pushnumber (1); - } - else - { - char *s = lua_check_string(1, "writeto"); - FILE *fp = (*s == '|') ? popen(s+1,"w") : fopen(s,"w"); - if (fp == NULL) - lua_pushnil(); - else - { - closewrite(); - out = fp; - lua_pushnumber (1); - } - } + lua_Object f = lua_getparam(1); + if (f == LUA_NOOBJECT) + closefile(lua_outfile); /* restore standart output */ + else if (lua_isuserdata(f)) + lua_outfile = lua_getuserdata(f); + else { + char *s = lua_check_string(1, "writeto"); + FILE *fp = (*s == '|') ? popen(s+1,"w") : fopen(s,"w"); + if (fp) + lua_outfile = fp; + else { + pushresult(0); + return; + } + } + lua_pushuserdata(lua_outfile); } -/* -** Open a file to write appended. -** LUA interface: -** status = appendto (filename) -** where: -** status = 1 -> success -** status = nil -> error -*/ static void io_appendto (void) { - char *s = lua_check_string(1, "appendto"); - FILE *fp = fopen (s, "a"); - if (fp == NULL) - lua_pushnil(); - else - { - if (out != stdout) fclose (out); - out = fp; - lua_pushnumber(1); - } -} - - -static char getformat (char *f, int *just, int *m, int *n) -{ - int t; - switch (*f++) - { - case 'q': case 'Q': - case 's': case 'S': - case 'i': case 'I': - t = tolower(*(f-1)); - break; - case 'f': case 'F': case 'g': case 'G': case 'e': case 'E': - t = 'f'; - break; - default: - t = 0; /* to avoid compiler warnings */ - lua_arg_error("read/write (format)"); - } - *just = (*f == '<' || *f == '>' || *f == '|') ? *f++ : '>'; - if (isdigit(*f)) - { - *m = 0; - while (isdigit(*f)) - *m = *m*10 + (*f++ - '0'); + char *s = lua_check_string(1, "appendto"); + FILE *fp = fopen (s, "a"); + if (fp != NULL) { + lua_outfile = fp; + lua_pushuserdata(lua_outfile); } else - *m = -1; - if (*f == '.') - { - f++; /* skip point */ - *n = 0; - while (isdigit(*f)) - *n = *n*10 + (*f++ - '0'); - } - else - *n = -1; - return t; + pushresult(0); } -/* -** Read a variable. On error put nil on stack. -** LUA interface: -** variable = read ([format]) -** -** O formato pode ter um dos seguintes especificadores: -** -** s ou S -> para string -** f ou F, g ou G, e ou E -> para reais -** i ou I -> para inteiros -** -** Estes especificadores podem vir seguidos de numero que representa -** o numero de campos a serem lidos. -*/ - -static int read_until_char (int del) -{ - int c; - while((c = fgetc(in)) != EOF && c != del) - luaI_addchar(c); - return c; -} - -static void read_until_blank (void) -{ - int c; - while((c = fgetc(in)) != EOF && !isspace(c)) - luaI_addchar(c); - if (c != EOF) ungetc(c,in); -} - -static void read_m (int m) -{ - int c; - while (m-- && (c = fgetc(in)) != EOF) - luaI_addchar(c); -} - - -static void read_free (void) -{ - int c; - while (isspace(c=fgetc(in))) - ; - if (c == EOF) - { - lua_pushnil(); - return; - } - if (c == '\"' || c == '\'') - { /* string */ - c = read_until_char(c); - if (c == EOF) - lua_pushnil(); - else - lua_pushstring(luaI_addchar(0)); - } - else - { - double d; - char dummy; - char *s; - luaI_addchar(c); - read_until_blank(); - s = luaI_addchar(0); - if (sscanf(s, "%lf %c", &d, &dummy) == 1) - lua_pushnumber(d); - else - lua_pushstring(s); - } -} +#define NEED_OTHER (EOF-1) /* just some flag different from EOF */ static void io_read (void) { - lua_Object o = lua_getparam (1); - luaI_addchar(0); /* initialize buffer */ - if (o == LUA_NOOBJECT) /* free format */ - read_free(); - else /* formatted */ - { - int m, dummy1, dummy2; - switch (getformat(lua_check_string(1, "read"), &dummy1, &m, &dummy2)) - { - case 's': - { - char *s; - if (m < 0) - read_until_blank(); - else - read_m(m); - s = luaI_addchar(0); - if ((m >= 0 && strlen(s) == m) || (m < 0 && strlen(s) > 0)) - lua_pushstring(s); - else - lua_pushnil(); - break; + char *buff; + char *p = lua_opt_string(1, "[^\n]*{\n}", "read"); + int inskip = 0; /* to control {skips} */ + int c = NEED_OTHER; + luaI_addchar(0); + while (*p) { + if (*p == '{' || *p == '}') { + inskip = (*p == '{'); + p++; + } + else { + char *ep = item_end(p); /* get what is next */ + int m; /* match result */ + if (c == NEED_OTHER) c = getc(lua_infile); + m = (c == EOF) ? 0 : singlematch((char)c, p); + if (m) { + if (!inskip) luaI_addchar(c); + c = NEED_OTHER; } - - case 'i': /* can read as float, since it makes no difference to Lua */ - case 'f': - { - double d; - int result; - if (m < 0) - result = fscanf(in, "%lf", &d); - else - { - read_m(m); - result = sscanf(luaI_addchar(0), "%lf", &d); - } - if (result == 1) - lua_pushnumber(d); - else - lua_pushnil(); - break; + switch (*ep) { + case '*': /* repetition */ + if (!m) p = ep+1; /* else stay in (repeat) the same item */ + break; + case '?': /* optional */ + p = ep+1; /* continues reading the pattern */ + break; + default: + if (m) p = ep; /* continues reading the pattern */ + else + goto break_while; /* pattern fails */ } - default: - lua_arg_error("read (format)"); } - } -} - - -/* -** Read characters until a given one. The delimiter is not read. -*/ -static void io_readuntil (void) -{ - int del, c; - lua_Object p = lua_getparam(1); - luaI_addchar(0); /* initialize buffer */ - if (p == LUA_NOOBJECT || lua_isnil(p)) - del = EOF; - else - del = *lua_check_string(1, "readuntil"); - c = read_until_char(del); - if (c != EOF) ungetc(c,in); - lua_pushstring(luaI_addchar(0)); -} - - -/* -** Write a variable. On error put 0 on stack, otherwise put 1. -** LUA interface: -** status = write (variable [,format]) -** -** O formato pode ter um dos seguintes especificadores: -** -** s ou S -> para string -** f ou F, g ou G, e ou E -> para reais -** i ou I -> para inteiros -** -** Estes especificadores podem vir seguidos de: -** -** [?][m][.n] -** -** onde: -** ? -> indica justificacao -** < = esquerda -** | = centro -** > = direita (default) -** m -> numero maximo de campos (se exceder estoura) -** n -> indica precisao para -** reais -> numero de casas decimais -** inteiros -> numero minimo de digitos -** string -> nao se aplica -*/ - -static int write_fill (int n, int c) -{ - while (n--) - if (fputc(c, out) == EOF) - return 0; - return 1; -} - -static int write_string (char *s, int just, int m) -{ - int status; - int l = strlen(s); - int pre; /* number of blanks before string */ - if (m < 0) m = l; - else if (l > m) - { - write_fill(m, '*'); - return 0; - } - pre = (just == '<') ? 0 : (just == '>') ? m-l : (m-l)/2; - status = write_fill(pre, ' '); - status = status && fprintf(out, "%s", s) >= 0; - status = status && write_fill(m-(l+pre), ' '); - return status; -} - -static int write_quoted (int just, int m) -{ - luaI_addchar(0); - luaI_addquoted(lua_check_string(1, "write")); - return write_string(luaI_addchar(0), just, m); -} - -static int write_float (int just, int m, int n) -{ - char buffer[100]; - lua_Object p = lua_getparam(1); - float number; - if (!lua_isnumber(p)) return 0; - number = lua_getnumber(p); - if (n >= 0) - sprintf(buffer, "%.*f", n, number); - else - sprintf(buffer, "%g", number); - return write_string(buffer, just, m); -} - - -static int write_int (int just, int m, int n) -{ - char buffer[100]; - lua_Object p = lua_getparam(1); - int number; - if (!lua_isnumber(p)) return 0; - number = (int)lua_getnumber(p); - if (n >= 0) - sprintf(buffer, "%.*d", n, number); - else - sprintf(buffer, "%d", number); - return write_string(buffer, just, m); + } break_while: + if (c >= 0) /* not EOF nor NEED_OTHER? */ + ungetc(c, lua_infile); + buff = luaI_addchar(0); + if (*buff != 0 || *p == 0) /* read something or did not fail? */ + lua_pushstring(buff); } static void io_write (void) { - int status = 0; - if (lua_getparam (2) == LUA_NOOBJECT) /* free format */ - { - lua_Object o1 = lua_getparam(1); - int t = lua_type(o1); - if (t == LUA_T_NUMBER) - status = fprintf (out, "%g", lua_getnumber(o1)) >= 0; - else if (t == LUA_T_STRING) - status = fprintf (out, "%s", lua_getstring(o1)) >= 0; - } - else /* formated */ - { - int just, m, n; - switch (getformat(lua_check_string(2, "write"), &just, &m, &n)) - { - case 's': - { - lua_Object p = lua_getparam(1); - if (lua_isstring(p)) - status = write_string(lua_getstring(p), just, m); - else - status = 0; - break; - } - case 'q': - status = write_quoted(just, m); - break; - case 'f': - status = write_float(just, m, n); - break; - case 'i': - status = write_int(just, m, n); - break; - } - } - if (status) - lua_pushnumber(status); - else - lua_pushnil(); + int arg = 1; + int status = 1; + char *s; + while ((s = lua_opt_string(arg++, NULL, "write")) != NULL) + status = status && (fputs(s, lua_outfile) != EOF); + pushresult(status); } -/* -** Execute a executable program using "system". -** Return the result of execution. -*/ + static void io_execute (void) { lua_pushnumber(system(lua_check_string(1, "execute"))); } -/* -** Remove a file. On error return nil. -*/ + static void io_remove (void) { pushresult(remove(lua_check_string(1, "remove")) == 0); } + static void io_rename (void) { - char *f1 = lua_check_string(1, "rename"); - char *f2 = lua_check_string(2, "rename"); - pushresult(rename(f1, f2) == 0); + pushresult(rename(lua_check_string(1, "rename"), + lua_check_string(2, "rename")) == 0); } + static void io_tmpname (void) { lua_pushstring(tmpnam(NULL)); } -static void io_errorno (void) -{ -/* lua_pushstring(strerror(errno));*/ -} -/* -** To get a environment variable -*/ static void io_getenv (void) { - char *env = getenv(lua_check_string(1, "getenv")); - lua_pushstring(env); /* if NULL push nil */ + lua_pushstring(getenv(lua_check_string(1, "getenv"))); /* if NULL push nil */ } -/* -** Return user formatted time stamp -*/ + static void io_date (void) { - time_t t; - struct tm *tm; - char *s; - char b[BUFSIZ]; - if (lua_getparam(1) == LUA_NOOBJECT) - s = "%c"; - else - s = lua_check_string(1, "date"); - time(&t); tm = localtime(&t); - if (strftime(b,sizeof(b),s,tm)) - lua_pushstring(b); - else - lua_error("invalid `date' format"); + time_t t; + struct tm *tm; + char *s = lua_opt_string(1, "%c", "date"); + char b[BUFSIZ]; + time(&t); tm = localtime(&t); + if (strftime(b,sizeof(b),s,tm)) + lua_pushstring(b); + else + lua_error("invalid `date' format"); } -/* -** To exit -*/ + static void io_exit (void) { - lua_Object o = lua_getparam(1); - int code = lua_isnumber(o) ? (int)lua_getnumber(o) : 1; - exit(code); + lua_Object o = lua_getparam(1); + exit(lua_isnumber(o) ? (int)lua_getnumber(o) : 1); } -/* -** To debug a lua program. Start a dialog with the user, interpreting - lua commands until an 'cont'. -*/ + static void io_debug (void) { - while (1) - { + while (1) { char buffer[250]; fprintf(stderr, "lua_debug> "); if (fgets(buffer, sizeof(buffer), stdin) == 0) return; - if (strcmp(buffer, "cont") == 0) return; + if (strcmp(buffer, "cont\n") == 0) return; lua_dostring(buffer); } } @@ -550,21 +232,18 @@ static void lua_printstack (FILE *f) int level = 0; lua_Object func; fprintf(f, "Active Stack:\n"); - while ((func = lua_stackedfunction(level++)) != LUA_NOOBJECT) - { + while ((func = lua_stackedfunction(level++)) != LUA_NOOBJECT) { char *name; int currentline; fprintf(f, "\t"); - switch (*lua_getobjname(func, &name)) - { + switch (*lua_getobjname(func, &name)) { case 'g': fprintf(f, "function %s", name); break; case 'f': fprintf(f, "`%s' fallback", name); break; - default: - { + default: { char *filename; int linedefined; lua_funcinfo(func, &filename, &linedefined); @@ -585,8 +264,7 @@ static void lua_printstack (FILE *f) static void errorfb (void) { - lua_Object o = lua_getparam(1); - char *s = lua_isstring(o) ? lua_getstring(o) : "(no messsage)"; + char *s = lua_opt_string(1, "(no messsage)", NULL); fprintf(stderr, "lua: %s\n", s); lua_printstack(stderr); } @@ -597,13 +275,11 @@ static struct lua_reg iolib[] = { {"writeto", io_writeto}, {"appendto", io_appendto}, {"read", io_read}, -{"readuntil",io_readuntil}, {"write", io_write}, {"execute", io_execute}, {"remove", io_remove}, {"rename", io_rename}, {"tmpname", io_tmpname}, -{"ioerror", io_errorno}, {"getenv", io_getenv}, {"date", io_date}, {"exit", io_exit}, @@ -613,6 +289,7 @@ static struct lua_reg iolib[] = { void iolib_open (void) { + lua_infile=stdin; lua_outfile=stdout; luaI_openlib(iolib, (sizeof(iolib)/sizeof(iolib[0]))); lua_setfallback("error", errorfb); } diff --git a/clients/lib/mathlib.c b/clients/lib/mathlib.c index 07081e48..d8f8dc13 100644 --- a/clients/lib/mathlib.c +++ b/clients/lib/mathlib.c @@ -3,7 +3,7 @@ ** Mathematics library to LUA */ -char *rcs_mathlib="$Id: mathlib.c,v 1.17 1996/04/30 21:13:55 roberto Exp $"; +char *rcs_mathlib="$Id: mathlib.c,v 1.18 1996/08/01 14:55:33 roberto Exp $"; #include <stdlib.h> #include <math.h> @@ -92,9 +92,9 @@ static void math_floor (void) static void math_mod (void) { - int d1 = (int)lua_check_number(1, "mod"); - int d2 = (int)lua_check_number(2, "mod"); - lua_pushnumber (d1%d2); + float x = lua_check_number(1, "mod"); + float y = lua_check_number(2, "mod"); + lua_pushnumber(fmod(x, y)); } diff --git a/clients/lib/mathlib.h b/clients/lib/mathlib.h deleted file mode 100644 index 7630144a..00000000 --- a/clients/lib/mathlib.h +++ /dev/null @@ -1,13 +0,0 @@ -/* -** Math library to LUA -** TeCGraf - PUC-Rio -** $Id: mathlib.h,v 1.1 1993/12/17 18:41:19 celes Stab $ -*/ - - -#ifndef strlib_h - -void mathlib_open (void); - -#endif - diff --git a/clients/lib/old/Makefile b/clients/lib/old/Makefile new file mode 100644 index 00000000..b9668617 --- /dev/null +++ b/clients/lib/old/Makefile @@ -0,0 +1,35 @@ +# makefile for lualib + +LUA= ../../.. + +include $(LUA)/config + +EXTRA_DEFS= $(POPEN) $(NOSTRERROR) + +OBJS= iolib.o mathlib.o strlib.o +SRCS= iolib.c mathlib.c strlib.c + +SLIB= $(LIB)/liboldlualib.a + +# dynamic libraries only work for SunOs +DLIB= $(LIB)/liboldlualib.so.$(VERSION) + +all: $(SLIB) + +dynamic: $(DLIB) + +$(SLIB): $(OBJS) + ar rcu $@ $(OBJS) + $(RANLIB) $(SLIB) + +$(DLIB): $(OBJS) + ld -o $@ $(OBJS) + +clean: + rm -f $(OBJS) $(SLIB) $(DLIB) + +co: + co -f -M -rv2_4 $(SRCS) + +klean: clean + rm -f $(SRCS) diff --git a/clients/lib/old/iolib.c b/clients/lib/old/iolib.c new file mode 100644 index 00000000..9ed7e479 --- /dev/null +++ b/clients/lib/old/iolib.c @@ -0,0 +1,618 @@ +/* +** iolib.c +** Input/output library to LUA +*/ + +char *rcs_iolib="$Id: iolib.c,v 1.44 1996/05/03 20:10:59 roberto Exp $"; + +#include <stdio.h> +#include <ctype.h> +#include <string.h> +#include <time.h> +#include <stdlib.h> +#include <errno.h> + +#include "lua.h" +#include "luadebug.h" +#include "lualib.h" + +static FILE *in=stdin, *out=stdout; + + +#ifdef POPEN +FILE *popen(); +int pclose(); +#else +#define popen(x,y) NULL /* that is, popen always fails */ +#define pclose(x) (-1) +#endif + + +static void pushresult (int i) +{ + if (i) + lua_pushnumber (1); + else + lua_pushnil(); +} + +static void closeread (void) +{ + if (in != stdin) + { + if (pclose(in) == -1) + fclose(in); + in = stdin; + } +} + +static void closewrite (void) +{ + if (out != stdout) + { + if (pclose(out) == -1) + fclose(out); + out = stdout; + } +} + +/* +** Open a file to read. +** LUA interface: +** status = readfrom (filename) +** where: +** status = 1 -> success +** status = nil -> error +*/ +static void io_readfrom (void) +{ + if (lua_getparam (1) == LUA_NOOBJECT) + { /* restore standart input */ + closeread(); + lua_pushnumber (1); + } + else + { + char *s = lua_check_string(1, "readfrom"); + FILE *fp = (*s == '|') ? popen(s+1, "r") : fopen(s, "r"); + if (fp == NULL) + lua_pushnil(); + else + { + closeread(); + in = fp; + lua_pushnumber (1); + } + } +} + + +/* +** Open a file to write. +** LUA interface: +** status = writeto (filename) +** where: +** status = 1 -> success +** status = nil -> error +*/ +static void io_writeto (void) +{ + if (lua_getparam (1) == LUA_NOOBJECT) /* restore standart output */ + { + closewrite(); + lua_pushnumber (1); + } + else + { + char *s = lua_check_string(1, "writeto"); + FILE *fp = (*s == '|') ? popen(s+1,"w") : fopen(s,"w"); + if (fp == NULL) + lua_pushnil(); + else + { + closewrite(); + out = fp; + lua_pushnumber (1); + } + } +} + + +/* +** Open a file to write appended. +** LUA interface: +** status = appendto (filename) +** where: +** status = 1 -> success +** status = nil -> error +*/ +static void io_appendto (void) +{ + char *s = lua_check_string(1, "appendto"); + FILE *fp = fopen (s, "a"); + if (fp == NULL) + lua_pushnil(); + else + { + if (out != stdout) fclose (out); + out = fp; + lua_pushnumber(1); + } +} + + +static char getformat (char *f, int *just, int *m, int *n) +{ + int t; + switch (*f++) + { + case 'q': case 'Q': + case 's': case 'S': + case 'i': case 'I': + t = tolower(*(f-1)); + break; + case 'f': case 'F': case 'g': case 'G': case 'e': case 'E': + t = 'f'; + break; + default: + t = 0; /* to avoid compiler warnings */ + lua_arg_error("read/write (format)"); + } + *just = (*f == '<' || *f == '>' || *f == '|') ? *f++ : '>'; + if (isdigit(*f)) + { + *m = 0; + while (isdigit(*f)) + *m = *m*10 + (*f++ - '0'); + } + else + *m = -1; + if (*f == '.') + { + f++; /* skip point */ + *n = 0; + while (isdigit(*f)) + *n = *n*10 + (*f++ - '0'); + } + else + *n = -1; + return t; +} + + +/* +** Read a variable. On error put nil on stack. +** LUA interface: +** variable = read ([format]) +** +** O formato pode ter um dos seguintes especificadores: +** +** s ou S -> para string +** f ou F, g ou G, e ou E -> para reais +** i ou I -> para inteiros +** +** Estes especificadores podem vir seguidos de numero que representa +** o numero de campos a serem lidos. +*/ + +static int read_until_char (int del) +{ + int c; + while((c = fgetc(in)) != EOF && c != del) + luaI_addchar(c); + return c; +} + +static void read_until_blank (void) +{ + int c; + while((c = fgetc(in)) != EOF && !isspace(c)) + luaI_addchar(c); + if (c != EOF) ungetc(c,in); +} + +static void read_m (int m) +{ + int c; + while (m-- && (c = fgetc(in)) != EOF) + luaI_addchar(c); +} + + +static void read_free (void) +{ + int c; + while (isspace(c=fgetc(in))) + ; + if (c == EOF) + { + lua_pushnil(); + return; + } + if (c == '\"' || c == '\'') + { /* string */ + c = read_until_char(c); + if (c == EOF) + lua_pushnil(); + else + lua_pushstring(luaI_addchar(0)); + } + else + { + double d; + char dummy; + char *s; + luaI_addchar(c); + read_until_blank(); + s = luaI_addchar(0); + if (sscanf(s, "%lf %c", &d, &dummy) == 1) + lua_pushnumber(d); + else + lua_pushstring(s); + } +} + +static void io_read (void) +{ + lua_Object o = lua_getparam (1); + luaI_addchar(0); /* initialize buffer */ + if (o == LUA_NOOBJECT) /* free format */ + read_free(); + else /* formatted */ + { + int m, dummy1, dummy2; + switch (getformat(lua_check_string(1, "read"), &dummy1, &m, &dummy2)) + { + case 's': + { + char *s; + if (m < 0) + read_until_blank(); + else + read_m(m); + s = luaI_addchar(0); + if ((m >= 0 && strlen(s) == m) || (m < 0 && strlen(s) > 0)) + lua_pushstring(s); + else + lua_pushnil(); + break; + } + + case 'i': /* can read as float, since it makes no difference to Lua */ + case 'f': + { + double d; + int result; + if (m < 0) + result = fscanf(in, "%lf", &d); + else + { + read_m(m); + result = sscanf(luaI_addchar(0), "%lf", &d); + } + if (result == 1) + lua_pushnumber(d); + else + lua_pushnil(); + break; + } + default: + lua_arg_error("read (format)"); + } + } +} + + +/* +** Read characters until a given one. The delimiter is not read. +*/ +static void io_readuntil (void) +{ + int del, c; + lua_Object p = lua_getparam(1); + luaI_addchar(0); /* initialize buffer */ + if (p == LUA_NOOBJECT || lua_isnil(p)) + del = EOF; + else + del = *lua_check_string(1, "readuntil"); + c = read_until_char(del); + if (c != EOF) ungetc(c,in); + lua_pushstring(luaI_addchar(0)); +} + + +/* +** Write a variable. On error put 0 on stack, otherwise put 1. +** LUA interface: +** status = write (variable [,format]) +** +** O formato pode ter um dos seguintes especificadores: +** +** s ou S -> para string +** f ou F, g ou G, e ou E -> para reais +** i ou I -> para inteiros +** +** Estes especificadores podem vir seguidos de: +** +** [?][m][.n] +** +** onde: +** ? -> indica justificacao +** < = esquerda +** | = centro +** > = direita (default) +** m -> numero maximo de campos (se exceder estoura) +** n -> indica precisao para +** reais -> numero de casas decimais +** inteiros -> numero minimo de digitos +** string -> nao se aplica +*/ + +static int write_fill (int n, int c) +{ + while (n--) + if (fputc(c, out) == EOF) + return 0; + return 1; +} + +static int write_string (char *s, int just, int m) +{ + int status; + int l = strlen(s); + int pre; /* number of blanks before string */ + if (m < 0) m = l; + else if (l > m) + { + write_fill(m, '*'); + return 0; + } + pre = (just == '<') ? 0 : (just == '>') ? m-l : (m-l)/2; + status = write_fill(pre, ' '); + status = status && fprintf(out, "%s", s) >= 0; + status = status && write_fill(m-(l+pre), ' '); + return status; +} + +static int write_quoted (int just, int m) +{ + luaI_addchar(0); + luaI_addquoted(lua_check_string(1, "write")); + return write_string(luaI_addchar(0), just, m); +} + +static int write_float (int just, int m, int n) +{ + char buffer[100]; + lua_Object p = lua_getparam(1); + float number; + if (!lua_isnumber(p)) return 0; + number = lua_getnumber(p); + if (n >= 0) + sprintf(buffer, "%.*f", n, number); + else + sprintf(buffer, "%g", number); + return write_string(buffer, just, m); +} + + +static int write_int (int just, int m, int n) +{ + char buffer[100]; + lua_Object p = lua_getparam(1); + int number; + if (!lua_isnumber(p)) return 0; + number = (int)lua_getnumber(p); + if (n >= 0) + sprintf(buffer, "%.*d", n, number); + else + sprintf(buffer, "%d", number); + return write_string(buffer, just, m); +} + + +static void io_write (void) +{ + int status = 0; + if (lua_getparam (2) == LUA_NOOBJECT) /* free format */ + { + lua_Object o1 = lua_getparam(1); + int t = lua_type(o1); + if (t == LUA_T_NUMBER) + status = fprintf (out, "%g", lua_getnumber(o1)) >= 0; + else if (t == LUA_T_STRING) + status = fprintf (out, "%s", lua_getstring(o1)) >= 0; + } + else /* formated */ + { + int just, m, n; + switch (getformat(lua_check_string(2, "write"), &just, &m, &n)) + { + case 's': + { + lua_Object p = lua_getparam(1); + if (lua_isstring(p)) + status = write_string(lua_getstring(p), just, m); + else + status = 0; + break; + } + case 'q': + status = write_quoted(just, m); + break; + case 'f': + status = write_float(just, m, n); + break; + case 'i': + status = write_int(just, m, n); + break; + } + } + if (status) + lua_pushnumber(status); + else + lua_pushnil(); +} + +/* +** Execute a executable program using "system". +** Return the result of execution. +*/ +static void io_execute (void) +{ + lua_pushnumber(system(lua_check_string(1, "execute"))); +} + +/* +** Remove a file. On error return nil. +*/ +static void io_remove (void) +{ + pushresult(remove(lua_check_string(1, "remove")) == 0); +} + +static void io_rename (void) +{ + char *f1 = lua_check_string(1, "rename"); + char *f2 = lua_check_string(2, "rename"); + pushresult(rename(f1, f2) == 0); +} + +static void io_tmpname (void) +{ + lua_pushstring(tmpnam(NULL)); +} + +static void io_errorno (void) +{ +/* lua_pushstring(strerror(errno));*/ +} + + +/* +** To get a environment variable +*/ +static void io_getenv (void) +{ + char *env = getenv(lua_check_string(1, "getenv")); + lua_pushstring(env); /* if NULL push nil */ +} + +/* +** Return user formatted time stamp +*/ +static void io_date (void) +{ + time_t t; + struct tm *tm; + char *s; + char b[BUFSIZ]; + if (lua_getparam(1) == LUA_NOOBJECT) + s = "%c"; + else + s = lua_check_string(1, "date"); + time(&t); tm = localtime(&t); + if (strftime(b,sizeof(b),s,tm)) + lua_pushstring(b); + else + lua_error("invalid `date' format"); +} + +/* +** To exit +*/ +static void io_exit (void) +{ + lua_Object o = lua_getparam(1); + int code = lua_isnumber(o) ? (int)lua_getnumber(o) : 1; + exit(code); +} + +/* +** To debug a lua program. Start a dialog with the user, interpreting + lua commands until an 'cont'. +*/ +static void io_debug (void) +{ + while (1) + { + char buffer[250]; + fprintf(stderr, "lua_debug> "); + if (fgets(buffer, sizeof(buffer), stdin) == 0) return; + if (strcmp(buffer, "cont") == 0) return; + lua_dostring(buffer); + } +} + + +static void lua_printstack (FILE *f) +{ + int level = 0; + lua_Object func; + fprintf(f, "Active Stack:\n"); + while ((func = lua_stackedfunction(level++)) != LUA_NOOBJECT) + { + char *name; + int currentline; + fprintf(f, "\t"); + switch (*lua_getobjname(func, &name)) + { + case 'g': + fprintf(f, "function %s", name); + break; + case 'f': + fprintf(f, "`%s' fallback", name); + break; + default: + { + char *filename; + int linedefined; + lua_funcinfo(func, &filename, &linedefined); + if (linedefined == 0) + fprintf(f, "main of %s", filename); + else if (linedefined < 0) + fprintf(f, "%s", filename); + else + fprintf(f, "function (%s:%d)", filename, linedefined); + } + } + if ((currentline = lua_currentline(func)) > 0) + fprintf(f, " at line %d", currentline); + fprintf(f, "\n"); + } +} + + +static void errorfb (void) +{ + lua_Object o = lua_getparam(1); + char *s = lua_isstring(o) ? lua_getstring(o) : "(no messsage)"; + fprintf(stderr, "lua: %s\n", s); + lua_printstack(stderr); +} + + +static struct lua_reg iolib[] = { +{"readfrom", io_readfrom}, +{"writeto", io_writeto}, +{"appendto", io_appendto}, +{"read", io_read}, +{"readuntil",io_readuntil}, +{"write", io_write}, +{"execute", io_execute}, +{"remove", io_remove}, +{"rename", io_rename}, +{"tmpname", io_tmpname}, +{"ioerror", io_errorno}, +{"getenv", io_getenv}, +{"date", io_date}, +{"exit", io_exit}, +{"debug", io_debug}, +{"print_stack", errorfb} +}; + +void iolib_open (void) +{ + luaI_openlib(iolib, (sizeof(iolib)/sizeof(iolib[0]))); + lua_setfallback("error", errorfb); +} diff --git a/clients/lib/old/lualib.h b/clients/lib/old/lualib.h new file mode 100644 index 00000000..6005d7c2 --- /dev/null +++ b/clients/lib/old/lualib.h @@ -0,0 +1,33 @@ +/* +** Libraries to be used in LUA programs +** Grupo de Tecnologia em Computacao Grafica +** TeCGraf - PUC-Rio +** $Id: lualib.h,v 1.8 1996/04/30 21:13:55 roberto Exp $ +*/ + +#ifndef lualib_h +#define lualib_h + +#include "lua.h" + +void iolib_open (void); +void strlib_open (void); +void mathlib_open (void); + + +/* auxiliar functions (private) */ + +struct lua_reg { + char *name; + lua_CFunction func; +}; + +void luaI_openlib (struct lua_reg *l, int n); +void lua_arg_error(char *funcname); +char *lua_check_string (int numArg, char *funcname); +double lua_check_number (int numArg, char *funcname); +char *luaI_addchar (int c); +void luaI_addquoted (char *s); + +#endif + diff --git a/clients/lib/old/mathlib.c b/clients/lib/old/mathlib.c new file mode 100644 index 00000000..07081e48 --- /dev/null +++ b/clients/lib/old/mathlib.c @@ -0,0 +1,230 @@ +/* +** mathlib.c +** Mathematics library to LUA +*/ + +char *rcs_mathlib="$Id: mathlib.c,v 1.17 1996/04/30 21:13:55 roberto Exp $"; + +#include <stdlib.h> +#include <math.h> + +#include "lualib.h" +#include "lua.h" + +#ifndef PI +#define PI 3.14159265358979323846 +#endif +#define TODEGREE(a) ((a)*180.0/PI) +#define TORAD(a) ((a)*PI/180.0) + +static void math_abs (void) +{ + double d = lua_check_number(1, "abs"); + if (d < 0) d = -d; + lua_pushnumber (d); +} + + +static void math_sin (void) +{ + double d = lua_check_number(1, "sin"); + lua_pushnumber (sin(TORAD(d))); +} + + + +static void math_cos (void) +{ + double d = lua_check_number(1, "cos"); + lua_pushnumber (cos(TORAD(d))); +} + + + +static void math_tan (void) +{ + double d = lua_check_number(1, "tan"); + lua_pushnumber (tan(TORAD(d))); +} + + +static void math_asin (void) +{ + double d = lua_check_number(1, "asin"); + lua_pushnumber (TODEGREE(asin(d))); +} + + +static void math_acos (void) +{ + double d = lua_check_number(1, "acos"); + lua_pushnumber (TODEGREE(acos(d))); +} + + +static void math_atan (void) +{ + double d = lua_check_number(1, "atan"); + lua_pushnumber (TODEGREE(atan(d))); +} + + +static void math_atan2 (void) +{ + double d1 = lua_check_number(1, "atan2"); + double d2 = lua_check_number(2, "atan2"); + lua_pushnumber (TODEGREE(atan2(d1, d2))); +} + + +static void math_ceil (void) +{ + double d = lua_check_number(1, "ceil"); + lua_pushnumber (ceil(d)); +} + + +static void math_floor (void) +{ + double d = lua_check_number(1, "floor"); + lua_pushnumber (floor(d)); +} + +static void math_mod (void) +{ + int d1 = (int)lua_check_number(1, "mod"); + int d2 = (int)lua_check_number(2, "mod"); + lua_pushnumber (d1%d2); +} + + +static void math_sqrt (void) +{ + double d = lua_check_number(1, "sqrt"); + lua_pushnumber (sqrt(d)); +} + +static int old_pow; + +static void math_pow (void) +{ + lua_Object o1 = lua_getparam (1); + lua_Object o2 = lua_getparam (2); + lua_Object op = lua_getparam(3); + if (!lua_isnumber(o1) || !lua_isnumber(o2) || *(lua_getstring(op)) != 'p') + { + lua_Object old = lua_getref(old_pow); + lua_pushobject(o1); + lua_pushobject(o2); + lua_pushobject(op); + if (lua_callfunction(old) != 0) + lua_error(NULL); + } + else + { + double d1 = lua_getnumber(o1); + double d2 = lua_getnumber(o2); + lua_pushnumber (pow(d1,d2)); + } +} + +static void math_min (void) +{ + int i=1; + double dmin = lua_check_number(i, "min"); + while (lua_getparam(++i) != LUA_NOOBJECT) + { + double d = lua_check_number(i, "min"); + if (d < dmin) dmin = d; + } + lua_pushnumber (dmin); +} + +static void math_max (void) +{ + int i=1; + double dmax = lua_check_number(i, "max"); + while (lua_getparam(++i) != LUA_NOOBJECT) + { + double d = lua_check_number(i, "max"); + if (d > dmax) dmax = d; + } + lua_pushnumber (dmax); +} + +static void math_log (void) +{ + double d = lua_check_number(1, "log"); + lua_pushnumber (log(d)); +} + + +static void math_log10 (void) +{ + double d = lua_check_number(1, "log10"); + lua_pushnumber (log10(d)); +} + + +static void math_exp (void) +{ + double d = lua_check_number(1, "exp"); + lua_pushnumber (exp(d)); +} + +static void math_deg (void) +{ + float d = lua_check_number(1, "deg"); + lua_pushnumber (d*180./PI); +} + +static void math_rad (void) +{ + float d = lua_check_number(1, "rad"); + lua_pushnumber (d/180.*PI); +} + +static void math_random (void) +{ + lua_pushnumber((double)(rand()%RAND_MAX) / (double)RAND_MAX); +} + +static void math_randomseed (void) +{ + srand(lua_check_number(1, "randomseed")); +} + + +static struct lua_reg mathlib[] = { +{"abs", math_abs}, +{"sin", math_sin}, +{"cos", math_cos}, +{"tan", math_tan}, +{"asin", math_asin}, +{"acos", math_acos}, +{"atan", math_atan}, +{"atan2", math_atan2}, +{"ceil", math_ceil}, +{"floor", math_floor}, +{"mod", math_mod}, +{"sqrt", math_sqrt}, +{"min", math_min}, +{"max", math_max}, +{"log", math_log}, +{"log10", math_log10}, +{"exp", math_exp}, +{"deg", math_deg}, +{"rad", math_rad}, +{"random", math_random}, +{"randomseed", math_randomseed} +}; + +/* +** Open math library +*/ +void mathlib_open (void) +{ + luaI_openlib(mathlib, (sizeof(mathlib)/sizeof(mathlib[0]))); + old_pow = lua_refobject(lua_setfallback("arith", math_pow), 1); +} + diff --git a/clients/lib/old/strlib.c b/clients/lib/old/strlib.c new file mode 100644 index 00000000..6a99871c --- /dev/null +++ b/clients/lib/old/strlib.c @@ -0,0 +1,276 @@ +/* +** strlib.c +** String library to LUA +*/ + +char *rcs_strlib="$Id: strlib.c,v 1.23 1996/04/30 21:13:55 roberto Exp $"; + +#include <string.h> +#include <stdio.h> +#include <stdlib.h> +#include <ctype.h> +#include <limits.h> + +#include "lua.h" +#include "lualib.h" + + +void lua_arg_error(char *funcname) +{ + char buff[100]; + sprintf(buff, "incorrect arguments to function `%s'", funcname); + lua_error(buff); +} + +char *lua_check_string (int numArg, char *funcname) +{ + lua_Object o = lua_getparam(numArg); + if (!lua_isstring(o)) + lua_arg_error(funcname); + return lua_getstring(o); +} + +double lua_check_number (int numArg, char *funcname) +{ + lua_Object o = lua_getparam(numArg); + if (!lua_isnumber(o)) + lua_arg_error(funcname); + return lua_getnumber(o); +} + +static int lua_opt_number (int numArg, int def, char *funcname) +{ + return (lua_getparam(numArg) == LUA_NOOBJECT) ? def : + (int)lua_check_number(numArg, funcname); +} + +char *luaI_addchar (int c) +{ + static char *buff = NULL; + static int max = 0; + static int n = 0; + if (n >= max) + { + if (max == 0) + { + max = 100; + buff = (char *)malloc(max); + } + else + { + max *= 2; + buff = (char *)realloc(buff, max); + } + if (buff == NULL) + lua_error("memory overflow"); + } + buff[n++] = c; + if (c == 0) + n = 0; /* prepare for next string */ + return buff; +} + + +/* +** Return the position of the first caracter of a substring into a string +** LUA interface: +** n = strfind (string, substring, init, end) +*/ +static void str_find (void) +{ + char *s1 = lua_check_string(1, "strfind"); + char *s2 = lua_check_string(2, "strfind"); + int init = lua_opt_number(3, 1, "strfind") - 1; + char *f = (init>=0 && init<=strlen(s1)) ? strstr(s1+init,s2) : NULL; + if (f != NULL) + { + int pos = f-s1+1; + if (lua_opt_number(4, INT_MAX, "strfind") >= pos+strlen(s2)-1) + lua_pushnumber (pos); + else + lua_pushnil(); + } + else + lua_pushnil(); +} + +/* +** Return the string length +** LUA interface: +** n = strlen (string) +*/ +static void str_len (void) +{ + char *s = lua_check_string(1, "strlen"); + lua_pushnumber(strlen(s)); +} + + +/* +** Return the substring of a string, from start to end +** LUA interface: +** substring = strsub (string, start, end) +*/ +static void str_sub (void) +{ + char *s = lua_check_string(1, "strsub"); + int start = (int)lua_check_number(2, "strsub"); + int end = lua_opt_number(3, strlen(s), "strsub"); + if (end < start || start < 1 || end > strlen(s)) + lua_pushliteral(""); + else + { + luaI_addchar(0); + while (start <= end) + luaI_addchar(s[start++ - 1]); + lua_pushstring (luaI_addchar(0)); + } +} + +/* +** Convert a string to lower case. +** LUA interface: +** lowercase = strlower (string) +*/ +static void str_lower (void) +{ + char *s = lua_check_string(1, "strlower"); + luaI_addchar(0); + while (*s) + luaI_addchar(tolower(*s++)); + lua_pushstring(luaI_addchar(0)); +} + + +/* +** Convert a string to upper case. +** LUA interface: +** uppercase = strupper (string) +*/ +static void str_upper (void) +{ + char *s = lua_check_string(1, "strupper"); + luaI_addchar(0); + while (*s) + luaI_addchar(toupper(*s++)); + lua_pushstring(luaI_addchar(0)); +} + +/* +** get ascii value of a character in a string +*/ +static void str_ascii (void) +{ + char *s = lua_check_string(1, "ascii"); + int pos = lua_opt_number(2, 1, "ascii") - 1; + if (pos<0 || pos>=strlen(s)) + lua_arg_error("ascii"); + lua_pushnumber(s[pos]); +} + +void luaI_addquoted (char *s) +{ + luaI_addchar('"'); + for (; *s; s++) + { + if (*s == '"' || *s == '\\' || *s == '\n') + luaI_addchar('\\'); + luaI_addchar(*s); + } + luaI_addchar('"'); +} + +#define MAX_CONVERTION 2000 +#define MAX_FORMAT 50 + +static void str_format (void) +{ + int arg = 1; + char *strfrmt = lua_check_string(arg++, "format"); + luaI_addchar(0); /* initialize */ + while (*strfrmt) + { + if (*strfrmt != '%') + luaI_addchar(*strfrmt++); + else if (*++strfrmt == '%') + luaI_addchar(*strfrmt++); /* %% */ + else + { /* format item */ + char form[MAX_FORMAT]; /* store the format ('%...') */ + char buff[MAX_CONVERTION]; /* store the formated value */ + int size = 0; + int i = 0; + form[i++] = '%'; + form[i] = *strfrmt++; + while (!isalpha(form[i])) + { + if (isdigit(form[i])) + { + size = size*10 + form[i]-'0'; + if (size >= MAX_CONVERTION) + lua_error("format size/precision too long in function `format'"); + } + else if (form[i] == '.') + size = 0; /* re-start */ + if (++i >= MAX_FORMAT) + lua_error("bad format in function `format'"); + form[i] = *strfrmt++; + } + form[i+1] = 0; /* ends string */ + switch (form[i]) + { + case 'q': + luaI_addquoted(lua_check_string(arg++, "format")); + buff[0] = '\0'; /* addchar already done */ + break; + case 's': + { + char *s = lua_check_string(arg++, "format"); + if (strlen(s) >= MAX_CONVERTION) + lua_error("string argument too long in function `format'"); + sprintf(buff, form, s); + break; + } + case 'c': case 'd': case 'i': case 'o': + case 'u': case 'x': case 'X': + sprintf(buff, form, (int)lua_check_number(arg++, "format")); + break; + case 'e': case 'E': case 'f': case 'g': + sprintf(buff, form, lua_check_number(arg++, "format")); + break; + default: /* also treat cases 'pnLlh' */ + lua_error("invalid format option in function `format'"); + } + for (i=0; buff[i]; i++) /* move formated value to result */ + luaI_addchar(buff[i]); + } + } + lua_pushstring(luaI_addchar(0)); /* push the result */ +} + + +void luaI_openlib (struct lua_reg *l, int n) +{ + int i; + for (i=0; i<n; i++) + lua_register(l[i].name, l[i].func); +} + +static struct lua_reg strlib[] = { +{"strfind", str_find}, +{"strlen", str_len}, +{"strsub", str_sub}, +{"strlower", str_lower}, +{"strupper", str_upper}, +{"ascii", str_ascii}, +{"format", str_format} +}; + + +/* +** Open string library +*/ +void strlib_open (void) +{ + luaI_openlib(strlib, (sizeof(strlib)/sizeof(strlib[0]))); +} diff --git a/clients/lib/strlib.c b/clients/lib/strlib.c index 6a99871c..47e91f4f 100644 --- a/clients/lib/strlib.c +++ b/clients/lib/strlib.c @@ -3,134 +3,151 @@ ** String library to LUA */ -char *rcs_strlib="$Id: strlib.c,v 1.23 1996/04/30 21:13:55 roberto Exp $"; +char *rcs_strlib="$Id: strlib.c,v 1.33 1996/11/20 13:47:59 roberto Exp $"; #include <string.h> #include <stdio.h> #include <stdlib.h> #include <ctype.h> -#include <limits.h> #include "lua.h" #include "lualib.h" -void lua_arg_error(char *funcname) +struct lbuff { + char *b; + size_t max; + size_t size; +}; + +static struct lbuff lbuffer = {NULL, 0, 0}; + + +static char *lua_strbuffer (unsigned long size) +{ + if (size > lbuffer.max) { + /* ANSI "realloc" doesn't need this test, but some machines (Sun!) + don't follow ANSI */ + lbuffer.b = (lbuffer.b) ? realloc(lbuffer.b, lbuffer.max=size) : + malloc(lbuffer.max=size); + if (lbuffer.b == NULL) + lua_error("memory overflow"); + } + return lbuffer.b; +} + +static char *openspace (unsigned long size) { - char buff[100]; - sprintf(buff, "incorrect arguments to function `%s'", funcname); - lua_error(buff); + char *buff = lua_strbuffer(lbuffer.size+size); + return buff+lbuffer.size; +} + +void lua_arg_check(int cond, char *funcname) +{ + if (!cond) { + char buff[100]; + sprintf(buff, "incorrect argument to function `%s'", funcname); + lua_error(buff); + } } char *lua_check_string (int numArg, char *funcname) { lua_Object o = lua_getparam(numArg); - if (!lua_isstring(o)) - lua_arg_error(funcname); + lua_arg_check(lua_isstring(o), funcname); return lua_getstring(o); } +char *lua_opt_string (int numArg, char *def, char *funcname) +{ + return (lua_getparam(numArg) == LUA_NOOBJECT) ? def : + lua_check_string(numArg, funcname); +} + double lua_check_number (int numArg, char *funcname) { lua_Object o = lua_getparam(numArg); - if (!lua_isnumber(o)) - lua_arg_error(funcname); + lua_arg_check(lua_isnumber(o), funcname); return lua_getnumber(o); } -static int lua_opt_number (int numArg, int def, char *funcname) +long lua_opt_number (int numArg, long def, char *funcname) { return (lua_getparam(numArg) == LUA_NOOBJECT) ? def : - (int)lua_check_number(numArg, funcname); + (long)lua_check_number(numArg, funcname); } char *luaI_addchar (int c) { - static char *buff = NULL; - static int max = 0; - static int n = 0; - if (n >= max) - { - if (max == 0) - { - max = 100; - buff = (char *)malloc(max); - } - else - { - max *= 2; - buff = (char *)realloc(buff, max); - } - if (buff == NULL) - lua_error("memory overflow"); - } - buff[n++] = c; + if (lbuffer.size >= lbuffer.max) + lua_strbuffer(lbuffer.max == 0 ? 100 : lbuffer.max*2); + lbuffer.b[lbuffer.size++] = c; if (c == 0) - n = 0; /* prepare for next string */ - return buff; + lbuffer.size = 0; /* prepare for next string */ + return lbuffer.b; } +static void addnchar (char *s, int n) +{ + char *b = openspace(n); + strncpy(b, s, n); + lbuffer.size += n; +} + +static void addstr (char *s) +{ + addnchar(s, strlen(s)); +} /* -** Return the position of the first caracter of a substring into a string -** LUA interface: -** n = strfind (string, substring, init, end) +** Interface to strtok */ -static void str_find (void) +static void str_tok (void) { - char *s1 = lua_check_string(1, "strfind"); - char *s2 = lua_check_string(2, "strfind"); - int init = lua_opt_number(3, 1, "strfind") - 1; - char *f = (init>=0 && init<=strlen(s1)) ? strstr(s1+init,s2) : NULL; - if (f != NULL) - { - int pos = f-s1+1; - if (lua_opt_number(4, INT_MAX, "strfind") >= pos+strlen(s2)-1) - lua_pushnumber (pos); - else - lua_pushnil(); - } - else - lua_pushnil(); + char *s1 = lua_check_string(1, "strtok"); + char *del = lua_check_string(2, "strtok"); + lua_Object t = lua_createtable(); + int i = 1; + /* As strtok changes s1, and s1 is "constant", make a copy of it */ + s1 = strcpy(lua_strbuffer(strlen(s1+1)), s1); + while ((s1 = strtok(s1, del)) != NULL) { + lua_pushobject(t); + lua_pushnumber(i++); + lua_pushstring(s1); + lua_storesubscript(); + s1 = NULL; /* prepare for next strtok */ + } + lua_pushobject(t); + lua_pushnumber(i-1); /* total number of tokens */ } + /* ** Return the string length -** LUA interface: -** n = strlen (string) */ static void str_len (void) { - char *s = lua_check_string(1, "strlen"); - lua_pushnumber(strlen(s)); + lua_pushnumber(strlen(lua_check_string(1, "strlen"))); } - /* -** Return the substring of a string, from start to end -** LUA interface: -** substring = strsub (string, start, end) +** Return the substring of a string */ static void str_sub (void) { - char *s = lua_check_string(1, "strsub"); - int start = (int)lua_check_number(2, "strsub"); - int end = lua_opt_number(3, strlen(s), "strsub"); - if (end < start || start < 1 || end > strlen(s)) - lua_pushliteral(""); - else - { - luaI_addchar(0); - while (start <= end) - luaI_addchar(s[start++ - 1]); - lua_pushstring (luaI_addchar(0)); - } + char *s = lua_check_string(1, "strsub"); + long start = (long)lua_check_number(2, "strsub"); + long end = lua_opt_number(3, strlen(s), "strsub"); + if (1 <= start && start <= end && end <= strlen(s)) { + luaI_addchar(0); + addnchar(s+start-1, end-start+1); + lua_pushstring(luaI_addchar(0)); + } + else lua_pushliteral(""); } /* ** Convert a string to lower case. -** LUA interface: -** lowercase = strlower (string) */ static void str_lower (void) { @@ -141,11 +158,8 @@ static void str_lower (void) lua_pushstring(luaI_addchar(0)); } - /* ** Convert a string to upper case. -** LUA interface: -** uppercase = strupper (string) */ static void str_upper (void) { @@ -156,78 +170,357 @@ static void str_upper (void) lua_pushstring(luaI_addchar(0)); } +static void str_rep (void) +{ + char *s = lua_check_string(1, "strrep"); + int n = (int)lua_check_number(2, "strrep"); + luaI_addchar(0); + while (n-- > 0) + addstr(s); + lua_pushstring(luaI_addchar(0)); +} + /* ** get ascii value of a character in a string */ static void str_ascii (void) { char *s = lua_check_string(1, "ascii"); - int pos = lua_opt_number(2, 1, "ascii") - 1; - if (pos<0 || pos>=strlen(s)) - lua_arg_error("ascii"); - lua_pushnumber(s[pos]); + long pos = lua_opt_number(2, 1, "ascii") - 1; + lua_arg_check(0<=pos && pos<strlen(s), "ascii"); + lua_pushnumber((unsigned char)s[pos]); +} + + +/* pattern matching */ + +#define ESC '%' +#define SPECIALS "^$*?.([%" + +static char *bracket_end (char *p) +{ + return (*p == 0) ? NULL : strchr((*p=='^') ? p+2 : p+1, ']'); +} + +char *item_end (char *p) +{ + switch (*p++) { + case '\0': return p-1; + case ESC: + if (*p == 0) lua_error("incorrect pattern"); + return p+1; + case '[': { + char *end = bracket_end(p); + if (end == NULL) lua_error("incorrect pattern"); + return end+1; + } + default: + return p; + } +} + +static int matchclass (int c, int cl) +{ + int res; + switch (tolower(cl)) { + case 'a' : res = isalpha(c); break; + case 'c' : res = iscntrl(c); break; + case 'd' : res = isdigit(c); break; + case 'l' : res = islower(c); break; + case 'p' : res = ispunct(c); break; + case 's' : res = isspace(c); break; + case 'u' : res = isupper(c); break; + case 'w' : res = isalnum(c); break; + default: return (cl == c); + } + return (islower(cl) ? res : !res); +} + +int singlematch (int c, char *p) +{ + if (c == 0) return 0; + switch (*p) { + case '.': return 1; + case ESC: return matchclass(c, *(p+1)); + case '[': { + char *end = bracket_end(p+1); + int sig = *(p+1) == '^' ? (p++, 0) : 1; + while (++p < end) { + if (*p == ESC) { + if (((p+1) < end) && matchclass(c, *++p)) return sig; + } + else if ((*(p+1) == '-') && (p+2 < end)) { + p+=2; + if (*(p-2) <= c && c <= *p) return sig; + } + else if (*p == c) return sig; + } + return !sig; + } + default: return (*p == c); + } +} + +#define MAX_CAPT 9 + +static struct { + char *init; + int len; /* -1 signals unfinished capture */ +} capture[MAX_CAPT]; + +static int num_captures; /* only valid after a sucessful call to match */ + + +static void push_captures (void) +{ + int i; + for (i=0; i<num_captures; i++) { + int l = capture[i].len; + char *buff = openspace(l+1); + if (l == -1) lua_error("unfinished capture"); + strncpy(buff, capture[i].init, l); + buff[l] = 0; + lua_pushstring(buff); + } } +static int check_cap (int l, int level) +{ + l -= '1'; + if (!(0 <= l && l < level && capture[l].len != -1)) + lua_error("invalid capture index"); + return l; +} + +static int capture_to_close (int level) +{ + for (level--; level>=0; level--) + if (capture[level].len == -1) return level; + lua_error("invalid pattern capture"); + return 0; /* to avoid warnings */ +} + +static char *matchbalance (char *s, int b, int e) +{ + if (*s != b) return NULL; + else { + int cont = 1; + while (*(++s)) { + if (*s == e) { + if (--cont == 0) return s+1; + } + else if (*s == b) cont++; + } + } + return NULL; /* string ends out of balance */ +} + +static char *match (char *s, char *p, int level) +{ + init: /* using goto's to optimize tail recursion */ + switch (*p) { + case '(': /* start capture */ + if (level >= MAX_CAPT) lua_error("too many captures"); + capture[level].init = s; + capture[level].len = -1; + level++; p++; goto init; /* return match(s, p+1, level); */ + case ')': { /* end capture */ + int l = capture_to_close(level); + char *res; + capture[l].len = s - capture[l].init; /* close capture */ + if ((res = match(s, p+1, level)) == NULL) /* match failed? */ + capture[l].len = -1; /* undo capture */ + return res; + } + case ESC: + if (isdigit(*(p+1))) { /* capture */ + int l = check_cap(*(p+1), level); + if (strncmp(capture[l].init, s, capture[l].len) == 0) { + /* return match(p+2, s+capture[l].len, level); */ + p+=2; s+=capture[l].len; goto init; + } + else return NULL; + } + else if (*(p+1) == 'b') { /* balanced string */ + if (*(p+2) == 0 || *(p+3) == 0) + lua_error("bad balanced pattern specification"); + s = matchbalance(s, *(p+2), *(p+3)); + if (s == NULL) return NULL; + else { /* return match(p+4, s, level); */ + p+=4; goto init; + } + } + else goto dflt; + case '\0': case '$': /* (possibly) end of pattern */ + if (*p == 0 || (*(p+1) == 0 && *s == 0)) { + num_captures = level; + return s; + } + else goto dflt; + default: dflt: { /* it is a pattern item */ + int m = singlematch(*s, p); + char *ep = item_end(p); /* get what is next */ + switch (*ep) { + case '*': { /* repetition */ + char *res; + if (m && (res = match(s+1, p, level))) + return res; + p=ep+1; goto init; /* else return match(s, ep+1, level); */ + } + case '?': { /* optional */ + char *res; + if (m && (res = match(s+1, ep+1, level))) + return res; + p=ep+1; goto init; /* else return match(s, ep+1, level); */ + } + default: + if (m) { s++; p=ep; goto init; } /* return match(s+1, ep, level); */ + else return NULL; + } + } + } +} + +static void str_find (void) +{ + char *s = lua_check_string(1, "strfind"); + char *p = lua_check_string(2, "strfind"); + long init = lua_opt_number(3, 1, "strfind") - 1; + lua_arg_check(0 <= init && init <= strlen(s), "strfind"); + if (lua_getparam(4) != LUA_NOOBJECT || + strpbrk(p, SPECIALS) == NULL) { /* no special caracters? */ + char *s2 = strstr(s+init, p); + if (s2) { + lua_pushnumber(s2-s+1); + lua_pushnumber(s2-s+strlen(p)); + } + } + else { + int anchor = (*p == '^') ? (p++, 1) : 0; + char *s1=s+init; + do { + char *res; + if ((res=match(s1, p, 0)) != NULL) { + lua_pushnumber(s1-s+1); /* start */ + lua_pushnumber(res-s); /* end */ + push_captures(); + return; + } + } while (*s1++ && !anchor); + } +} + +static void add_s (lua_Object newp) +{ + if (lua_isstring(newp)) { + char *news = lua_getstring(newp); + while (*news) { + if (*news != ESC || !isdigit(*++news)) + luaI_addchar(*news++); + else { + int l = check_cap(*news++, num_captures); + addnchar(capture[l].init, capture[l].len); + } + } + } + else if (lua_isfunction(newp)) { + lua_Object res; + struct lbuff oldbuff; + lua_beginblock(); + push_captures(); + /* function may use lbuffer, so save it and create a new one */ + oldbuff = lbuffer; + lbuffer.b = NULL; lbuffer.max = lbuffer.size = 0; + lua_callfunction(newp); + /* restore old buffer */ + free(lbuffer.b); + lbuffer = oldbuff; + res = lua_getresult(1); + addstr(lua_isstring(res) ? lua_getstring(res) : ""); + lua_endblock(); + } + else lua_arg_check(0, "gsub"); +} + +static void str_gsub (void) +{ + char *src = lua_check_string(1, "gsub"); + char *p = lua_check_string(2, "gsub"); + lua_Object newp = lua_getparam(3); + int max_s = lua_opt_number(4, strlen(src), "gsub"); + int anchor = (*p == '^') ? (p++, 1) : 0; + int n = 0; + luaI_addchar(0); + while (*src && n < max_s) { + char *e; + if ((e=match(src, p, 0)) == NULL) + luaI_addchar(*src++); + else { + if (e == src) lua_error("empty pattern in substitution"); + add_s(newp); + src = e; + n++; + } + if (anchor) break; + } + addstr(src); + lua_pushstring(luaI_addchar(0)); + lua_pushnumber(n); /* number of substitutions */ +} + +static void str_set (void) +{ + char *item = lua_check_string(1, "strset"); + int i; + lua_arg_check(*item_end(item) == 0, "strset"); + luaI_addchar(0); + for (i=1; i<256; i++) /* 0 cannot be part of a set */ + if (singlematch(i, item)) + luaI_addchar(i); + lua_pushstring(luaI_addchar(0)); +} + + void luaI_addquoted (char *s) { luaI_addchar('"'); - for (; *s; s++) - { - if (*s == '"' || *s == '\\' || *s == '\n') + for (; *s; s++) { + if (strchr("\"\\\n", *s)) luaI_addchar('\\'); luaI_addchar(*s); } luaI_addchar('"'); } -#define MAX_CONVERTION 2000 -#define MAX_FORMAT 50 +#define MAX_FORMAT 200 static void str_format (void) { int arg = 1; char *strfrmt = lua_check_string(arg++, "format"); luaI_addchar(0); /* initialize */ - while (*strfrmt) - { + while (*strfrmt) { if (*strfrmt != '%') luaI_addchar(*strfrmt++); else if (*++strfrmt == '%') luaI_addchar(*strfrmt++); /* %% */ - else - { /* format item */ + else { /* format item */ char form[MAX_FORMAT]; /* store the format ('%...') */ - char buff[MAX_CONVERTION]; /* store the formated value */ - int size = 0; - int i = 0; - form[i++] = '%'; - form[i] = *strfrmt++; - while (!isalpha(form[i])) - { - if (isdigit(form[i])) - { - size = size*10 + form[i]-'0'; - if (size >= MAX_CONVERTION) - lua_error("format size/precision too long in function `format'"); - } - else if (form[i] == '.') - size = 0; /* re-start */ - if (++i >= MAX_FORMAT) - lua_error("bad format in function `format'"); - form[i] = *strfrmt++; - } - form[i+1] = 0; /* ends string */ - switch (form[i]) - { + char *buff; + char *initf = strfrmt-1; /* -1 to include % */ + strfrmt = match(strfrmt, "[-+ #]*(%d*)%.?(%d*)", 0); + if (capture[0].len > 3 || capture[1].len > 3) /* < 1000? */ + lua_error("invalid format (width/precision too long)"); + strncpy(form, initf, strfrmt-initf+1); /* +1 to include convertion */ + form[strfrmt-initf+1] = 0; + buff = openspace(1000); /* to store the formated value */ + switch (*strfrmt++) { case 'q': luaI_addquoted(lua_check_string(arg++, "format")); - buff[0] = '\0'; /* addchar already done */ - break; - case 's': - { + continue; + case 's': { char *s = lua_check_string(arg++, "format"); - if (strlen(s) >= MAX_CONVERTION) - lua_error("string argument too long in function `format'"); + buff = openspace(strlen(s)); sprintf(buff, form, s); break; } @@ -241,8 +534,7 @@ static void str_format (void) default: /* also treat cases 'pnLlh' */ lua_error("invalid format option in function `format'"); } - for (i=0; buff[i]; i++) /* move formated value to result */ - luaI_addchar(buff[i]); + lbuffer.size += strlen(buff); } } lua_pushstring(luaI_addchar(0)); /* push the result */ @@ -256,14 +548,19 @@ void luaI_openlib (struct lua_reg *l, int n) lua_register(l[i].name, l[i].func); } + static struct lua_reg strlib[] = { -{"strfind", str_find}, +{"strtok", str_tok}, {"strlen", str_len}, {"strsub", str_sub}, +{"strset", str_set}, {"strlower", str_lower}, {"strupper", str_upper}, +{"strrep", str_rep}, {"ascii", str_ascii}, -{"format", str_format} +{"format", str_format}, +{"strfind", str_find}, +{"gsub", str_gsub} }; diff --git a/clients/lib/strlib.h b/clients/lib/strlib.h deleted file mode 100644 index db3d38c5..00000000 --- a/clients/lib/strlib.h +++ /dev/null @@ -1,13 +0,0 @@ -/* -** String library to LUA -** TeCGraf - PUC-Rio -** $Id: strlib.h,v 1.1 1993/12/17 18:41:19 celes Stab $ -*/ - - -#ifndef strlib_h - -void strlib_open (void); - -#endif - diff --git a/clients/lua/Makefile b/clients/lua/Makefile index 7bfde7fe..7ce90fa6 100644 --- a/clients/lua/Makefile +++ b/clients/lua/Makefile @@ -13,7 +13,7 @@ T=$(BIN)/lua all: $T -$T: $(OBJS) +$T: $(OBJS) $(LIB)/liblua.a $(LIB)/liblualib.a $(CC) -o $@ $(OBJS) -L$(LIB) -llua -llualib -lm dynamic: diff --git a/clients/lua/lua.c b/clients/lua/lua.c index bae09e25..a6d558a2 100644 --- a/clients/lua/lua.c +++ b/clients/lua/lua.c @@ -3,7 +3,7 @@ ** Linguagem para Usuarios de Aplicacao */ -char *rcs_lua="$Id: lua.c,v 1.10 1996/05/03 19:20:17 roberto Exp $"; +char *rcs_lua="$Id: lua.c,v 1.14 1996/09/24 17:30:28 roberto Exp $"; #include <stdio.h> #include <string.h> @@ -11,45 +11,23 @@ char *rcs_lua="$Id: lua.c,v 1.10 1996/05/03 19:20:17 roberto Exp $"; #include "lua.h" #include "lualib.h" -static int lua_argc; -static char **lua_argv; -#ifdef POSIX -/* -** although this function is POSIX, there is no standard header file that -** defines it -*/ -int isatty (int fd); +#ifdef _POSIX_SOURCE +#include <unistd.h> #else #define isatty(x) (x==0) /* assume stdin is a tty */ #endif -/* -%F Allow Lua code to access argv strings. -%i Receive from Lua the argument number (starting with 1). -%o Return to Lua the argument, or nil if it does not exist. -*/ -static void lua_getargv (void) -{ - lua_Object lo = lua_getparam(1); - if (!lua_isnumber(lo)) - lua_pushnil(); - else - { - int n = (int)lua_getnumber(lo); - if (n < 1 || n > lua_argc) lua_pushnil(); - else lua_pushstring(lua_argv[n]); - } -} - static void manual_input (void) { - if (isatty(0)) - { - char buffer[250]; - while (fgets(buffer, sizeof(buffer), stdin) != 0) - lua_dostring(buffer); + if (isatty(0)) { + char buffer[250]; + while (fgets(buffer, sizeof(buffer), stdin) != 0) { + lua_beginblock(); + lua_dostring(buffer); + lua_endblock(); + } } else lua_dofile(NULL); /* executes stdin as a file */ @@ -58,43 +36,36 @@ static void manual_input (void) int main (int argc, char *argv[]) { - int i; - int result = 0; - iolib_open (); - strlib_open (); - mathlib_open (); - - lua_register("argv", lua_getargv); - - if (argc < 2) - manual_input(); - else - { - for (i=1; i<argc; i++) - if (strcmp(argv[i], "--") == 0) - { - lua_argc = argc-i-1; - lua_argv = argv+i; - break; - } - for (i=1; i<argc; i++) - { - if (strcmp(argv[i], "--") == 0) - break; - else if (strcmp(argv[i], "-") == 0) + int i; + int result = 0; + iolib_open (); + strlib_open (); + mathlib_open (); + if (argc < 2) manual_input(); - else if (strcmp(argv[i], "-v") == 0) - printf("%s %s\n(written by %s)\n\n", - LUA_VERSION, LUA_COPYRIGHT, LUA_AUTHORS); - else - { - result = lua_dofile (argv[i]); - if (result) - fprintf(stderr, "lua: error trying to run file %s\n", argv[i]); - } + else for (i=1; i<argc; i++) { + if (strcmp(argv[i], "-") == 0) + manual_input(); + else if (strcmp(argv[i], "-v") == 0) + printf("%s %s\n(written by %s)\n\n", + LUA_VERSION, LUA_COPYRIGHT, LUA_AUTHORS); + else if ((strcmp(argv[i], "-e") == 0 && i++) || strchr(argv[i], '=')) { + if (lua_dostring(argv[i]) != 0) { + fprintf(stderr, "lua: error running argument `%s'\n", argv[i]); + return 1; + } + } + else { + result = lua_dofile (argv[i]); + if (result) { + if (result == 2) { + fprintf(stderr, "lua: cannot execute file `%s' - ", argv[i]); + perror(NULL); + } + return 1; + } + } } - } - return result; + return result; } - @@ -2,7 +2,11 @@ # you need an ANSI C compiler CC= gcc -WARN= -Wall -Wmissing-prototypes -Wshadow -ansi +WARN= -ansi -Wall # -Wmissing-prototypes -Wshadow + +# for SGI's with cc +#CC= cc +#WARN= -ansi -fullwarn # in SunOs 4.1.x, uncomment the following line to avoid prototypes warnings # for standard functions @@ -14,9 +18,15 @@ POPEN= -DPOPEN # if your C library is not POSIX compliant, comment the following line: POSIX= -DPOSIX +# if you don't have strerror() in your C library, uncomment the following line: +#NOSTRERROR= -DNOSTRERROR + +# if your system doesn't have ranlib, change "ranlib" to "true" +RANLIB=ranlib + ### NO NEED TO CHANGE ANYTHING BELOW THIS LINE ================================ -VERSION= 2.4 +VERSION= 2.5 INC= $(LUA)/include LIB= $(LUA)/lib diff --git a/doc/refman.ps b/doc/refman.ps index 6d1cf314..24896e0e 100644 --- a/doc/refman.ps +++ b/doc/refman.ps @@ -1,14 +1,14 @@ %!PS-Adobe-2.0 -%%Creator: dvips 5.58 Copyright 1986, 1994 Radical Eye Software +%%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software %%Title: manual.dvi -%%CreationDate: Tue May 14 15:22:07 1996 -%%Pages: 38 +%%Pages: 39 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 +%%DocumentPaperSizes: Letter %%EndComments -%DVIPSCommandLine: _dvips -o manual.ps manual.dvi -%DVIPSParameters: dpi=300, comments removed -%DVIPSSource: TeX output 1996.05.14:1521 +%DVIPSCommandLine: /visgraf/pub/teTeX/bin/sun4/dvips manual +%DVIPSParameters: dpi=600, comments removed +%DVIPSSource: TeX output 1996.11.18:1940 %%BeginProcSet: tex.pro /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 @@ -57,3505 +57,7750 @@ B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end %%EndProcSet -TeXDict begin 40258431 52099146 1000 300 300 -(/home/lhf/w/lua/distr/lua/doc/manual.dvi) @start /Fa -7 115 df<000FE0007FFC01FFFE03F03E07C00E0F80041F00001F00003E00003E00007C -00007C00007C0000F80000F80000F80000F80000F80000F80000F80000F800007C00007C -00007C00003E00003E00001F00001F00010F800307C00703F01F01FFFE007FF8000FE018 -227EA01D>67 D<001FF0007FFC01FFFF03F03F07C00F0F80021F00001F00003E00003C00 -007C00007C0000780000F80000F80000F80000F80000F80000F80000F801FFF801FF7801 -FF7C000F7C000F3C000F3E000F1F000F1F000F0F800F07C00F03F01F01FFFF007FFC001F -E018227EA01E>71 D<FFFFFFC0FFFFFFC0FFFFFFC0001F0000001F0000001F0000001F00 -00001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00 -00001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00 -00001F0000001F0000001F0000001F0000001F0000001F0000001F00001A207E9F1F>84 -D<07E03FF87FFC783E601F400F000F000F01FF0FFF3FFF7F0FF80FF00FF00FF00FF83F7F -FF3FFF1F8F10147E9316>97 D<03F0000FFC001FFE003E1F007C0700780700700380FFFF -80FFFF80FFFF80F00000F00000F000007000007800003C00803E07801FFF8007FF0001F8 -0011147F9314>101 D<007E01FE03FE078207000F000F000F000F000F000F000F00FFF0 -FFF0FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00 -0F000F20809F0E>I<F0E0F3E0F7E0FFE0FF00FC00F800F800F000F000F000F000F000F0 -00F000F000F000F000F000F0000B147D9310>114 D E /Fb 7 121 -df<07F8001FFE003FFF803E07C03E03C01C01E00001E0003FE003FFE00FFFE03FC1E07C -01E07801E0F001E0F001E0F001E07803E07C07E03FFFFE1FFEFE03F87E17157E941A>97 -D<01F80007FF000FFF801F07C03C03C07801E07801E0F000F0F000F0FFFFF0FFFFF0FFFF -F0F000007000007800007C00F03E00F01F03F00FFFE003FFC000FE0014157D941A>101 -D<7F0F8000FF7FE0007FFFF0000FF0F0000FC078000F8078000F0078000F0078000F0078 -000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078 -007FE1FF00FFF3FF807FE1FF00191580941A>110 D<7FC1F8FFC7FC7FDFFE03FE1E03F8 -0C03F00003E00003E00003C00003C00003C00003C00003C00003C00003C00003C00003C0 -0003C0007FFF80FFFF807FFF8017157F941A>114 D<01C00003C00003C00003C00003C0 -0003C00003C0007FFFE0FFFFE0FFFFE003C00003C00003C00003C00003C00003C00003C0 -0003C00003C00003C00003C0F003C0F003C0F003C0F001E1E001FFE000FF80003F00141C -7F9B1A>116 D<7FC7FCFFC7FE7FC7FC0F01E00F01E00F01E00F83E00783C00783C00783 -C003C78003C78003C78001C70001EF0001EF0001EF0000FE0000FE0000FE00007C001715 -7F941A>118 D<7FC7F87FCFFC7FC7F80787C007C78003EF8001FF0000FE0000FC00007C -00007C00007C0000FE0001EF0003EF0003C7800783C00F83E07FC7FCFFC7FE7FC7FC1715 -7F941A>120 D E /Fc 1 122 df<1E0180370380670380670380C707000E07000E07000E -07001C0E001C0E001C0E000C1E000E3C0003DC00001C0038380078380078700030C0001F -00001114808D11>121 D E /Fd 3 121 df<70F8F8F878181818183030606040050E7C84 -0D>59 D<0E07E0001F8FF00033F8780063F0380063E03C0063C03C00C780780007807800 -07807800078078000F00F0000F00F0000F00F0000F01E1801E01E3001E03C3001E03C600 -1E01CE003C01FC001800F00019147F931B>110 D<07C3C00FE7E0187C603078F06079F0 -6079F0C0F1E000F1C000F00000F00001E00001E00039E00079E030FBC060FBC060F3C0C0 -E7E3807CFF00383C0014147E931A>120 D E /Fe 51 121 df<0007F800007FFE0001FC -0F0003F01F0007E03F800FC03F800FC03F800FC03F800FC01F000FC004000FC000000FC0 -00000FC00000FFFFFF80FFFFFF80FFFFFF800FC01F800FC01F800FC01F800FC01F800FC0 -1F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC0 -1F800FC01F800FC01F807FF8FFF07FF8FFF07FF8FFF01C237FA21F>12 -D<3C7EFFFFFFFF7E3C08087C8710>46 D<0000180000380000380000700000700000E000 -00E00000E00001C00001C0000380000380000380000700000700000700000E00000E0000 -1C00001C00001C0000380000380000700000700000700000E00000E00001C00001C00001 -C0000380000380000700000700000700000E00000E00000E00001C00001C000038000038 -0000380000700000700000E00000E00000C0000015317DA41C>I<00FE0007FFC00F83E0 -1F01F03E00F83E00F87C007C7C007C7C007CFC007CFC007EFC007EFC007EFC007EFC007E -FC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C7C007C3E00F8 -3E00F81F01F00F83E007FFC000FE0017207E9F1C>I<00180000780003F800FFF800FFF8 -00FDF80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8 -0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8 -007FFFE07FFFE07FFFE013207C9F1C>I<03FC000FFF003FFFC0783FE07C0FF0FE07F0FE -03F8FE03F8FE03F87C03F83803F80003F80003F00007F00007E0000FC0001F80001F0000 -3C0000780000F00001E03803C0380700380600380C00781FFFF03FFFF07FFFF0FFFFF0FF -FFF0FFFFF015207D9F1C>I<01FE0007FF800FFFE01E07F03F03F03F03F83F83F83F03F8 -1F03F80C03F80003F00007E00007C0001F8001FE0001FF000007E00003F00001F80001FC -0001FE0001FE7C01FE7C01FEFE01FEFE01FCFE01FC7C03F87C07F03FFFE00FFFC003FE00 -17207E9F1C>I<0000E00001E00003E00007E0000FE0000FE0001FE0003FE00077E000E7 -E000E7E001C7E00387E00707E00E07E00E07E01C07E03807E07007E0E007E0FFFFFFFFFF -FFFFFFFF0007E00007E00007E00007E00007E00007E000FFFF00FFFF00FFFF18207E9F1C ->I<2000603C01E03FFFC03FFFC03FFF803FFE003FFC003FF00038000038000038000038 -000039FC003FFF003E0FC03807E03003F00003F00003F00003F80003F83803F87C03F8FC -03F8FC03F8FC03F0F803F07007E03C0FC03FFF800FFF0003F80015207D9F1C>I<001F80 -00FFE003FFF007F0F00FC1F81F81F83F01F83F01F87E00F07E00007E0000FE0800FE7FC0 -FEFFE0FF81F0FF00F8FF00FCFF00FCFE00FEFE00FEFE00FEFE00FE7E00FE7E00FE7E00FE -3E00FC3E00FC1F00F80F83F007FFE003FFC000FF0017207E9F1C>I<7000007C00007FFF -FE7FFFFE7FFFFE7FFFFC7FFFF87FFFF0F00070E000E0E001C0E00380E00700000E00000E -00001C00003C0000380000780000780000F80000F00001F00001F00001F00001F00003F0 -0003F00003F00003F00003F00003F00003F00001E00017227DA11C>I<00FE0003FFC007 -FFE00F83F01E01F01E00F83E00F83E00F83F00F83F80F83FE1F01FF9E01FFFC00FFF8007 -FFC003FFE00FFFF01F7FF83E1FFC7C07FC7C01FEF800FEF8007EF8003EF8003EF8003E7C -003C7E00783F01F81FFFF00FFFC001FF0017207E9F1C>I<00FE0007FF800FFFE01F83F0 -3F01F07E00F87E00F8FE00FCFE00FCFE00FCFE00FEFE00FEFE00FEFE00FE7E01FE7E01FE -3E01FE1F03FE0FFEFE07FCFE0020FE0000FC0000FC1E00FC3F01F83F01F83F01F03F03E0 -1E0FC01FFF800FFE0003F80017207E9F1C>I<00007000000000F800000000F800000000 -F800000001FC00000001FC00000003FE00000003FE00000003FE000000077F000000077F -0000000F7F8000000E3F8000000E3F8000001C1FC000001C1FC000003C1FE00000380FE0 -0000380FE00000700FF000007007F00000F007F80000FFFFF80000FFFFF80001FFFFFC00 -01C001FC0001C001FC00038000FE00038000FE00078000FF000700007F00FFF007FFF8FF -F007FFF8FFF007FFF825227EA12A>65 D<0003FE0180001FFF838000FFFFE78001FF00FF -8003F8003F8007F0001F800FE0000F801FC0000F803F800007803F800007807F80000380 -7F000003807F00000380FF00000000FF00000000FF00000000FF00000000FF00000000FF -00000000FF00000000FF000000007F000000007F000003807F800003803F800003803F80 -0007801FC00007000FE0000F0007F0001E0003F8003C0001FF00F80000FFFFF000001FFF -C0000003FE000021227DA128>67 D<FFFFFF8000FFFFFFF000FFFFFFFC0007F003FE0007 -F0007F0007F0003F8007F0001FC007F0000FE007F0000FE007F0000FF007F00007F007F0 -0007F007F00007F007F00007F807F00007F807F00007F807F00007F807F00007F807F000 -07F807F00007F807F00007F807F00007F807F00007F007F00007F007F00007F007F0000F -E007F0000FE007F0001FC007F0003F8007F0007F0007F003FE00FFFFFFFC00FFFFFFF000 -FFFFFF800025227EA12B>I<FFFFFFFCFFFFFFFCFFFFFFFC07F001FC07F0007C07F0003C -07F0001C07F0001E07F0001E07F01C0E07F01C0E07F01C0E07F01C0E07F03C0007F07C00 -07FFFC0007FFFC0007FFFC0007F07C0007F03C0007F01C0707F01C0707F01C0707F01C0E -07F0000E07F0000E07F0001E07F0001E07F0003E07F0007E07F001FCFFFFFFFCFFFFFFFC -FFFFFFFC20227EA125>I<FFFFFFF8FFFFFFF8FFFFFFF807F003F807F000F807F0007807 -F0003807F0003C07F0003C07F01C1C07F01C1C07F01C1C07F01C1C07F03C0007F07C0007 -FFFC0007FFFC0007FFFC0007F07C0007F03C0007F01C0007F01C0007F01C0007F01C0007 -F0000007F0000007F0000007F0000007F0000007F0000007F00000FFFFC000FFFFC000FF -FFC0001E227EA123>I<FFFF83FFFEFFFF83FFFEFFFF83FFFE07F0001FC007F0001FC007 -F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0 -001FC007F0001FC007F0001FC007FFFFFFC007FFFFFFC007FFFFFFC007F0001FC007F000 -1FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001F -C007F0001FC007F0001FC007F0001FC007F0001FC0FFFF83FFFEFFFF83FFFEFFFF83FFFE -27227EA12C>72 D<FFFF80FFFF80FFFF8007F00007F00007F00007F00007F00007F00007 -F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007 -F00007F00007F00007F00007F00007F00007F00007F00007F00007F000FFFF80FFFF80FF -FF8011227EA115>I<FFFFC000FFFFC000FFFFC00007F0000007F0000007F0000007F000 -0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 -0007F0000007F0000007F0000007F0000007F0003807F0003807F0003807F0003807F000 -7807F0007807F0007807F000F007F001F007F003F007F00FF0FFFFFFF0FFFFFFF0FFFFFF -F01D227EA122>76 D<FFF800001FFFFFF800001FFFFFFC00003FFF07FC00003FE007FC00 -003FE0077E000077E0077E000077E0073F0000E7E0073F0000E7E0071F8001C7E0071F80 -01C7E0071F8001C7E0070FC00387E0070FC00387E00707E00707E00707E00707E00703F0 -0E07E00703F00E07E00703F00E07E00701F81C07E00701F81C07E00700FC3807E00700FC -3807E007007E7007E007007E7007E007007E7007E007003FE007E007003FE007E007001F -C007E007001FC007E007000F8007E0FFF80F80FFFFFFF80F80FFFFFFF80700FFFF30227E -A135>I<0007FC0000003FFF800000FE0FE00003F803F80007E000FC000FC0007E001FC0 -007F001F80003F003F80003F803F80003F807F00001FC07F00001FC07F00001FC0FF0000 -1FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001F -E0FF00001FE07F00001FC07F80003FC07F80003FC03F80003F803FC0007F801FC0007F00 -0FE000FE0007F001FC0003F803F80000FE0FE000003FFF80000007FC000023227DA12A> -79 D<FFFFFF00FFFFFFE0FFFFFFF007F007F807F001FC07F001FE07F000FE07F000FF07 -F000FF07F000FF07F000FF07F000FF07F000FF07F000FE07F001FE07F001FC07F007F807 -FFFFF007FFFFC007F0000007F0000007F0000007F0000007F0000007F0000007F0000007 -F0000007F0000007F0000007F0000007F00000FFFF8000FFFF8000FFFF800020227EA126 ->I<FFFFFE0000FFFFFFC000FFFFFFF00007F007F80007F001FC0007F001FE0007F000FE -0007F000FF0007F000FF0007F000FF0007F000FF0007F000FF0007F000FE0007F001FE00 -07F001FC0007F007F00007FFFFC00007FFFF000007F00FC00007F007E00007F007F00007 -F003F00007F003F80007F003F80007F003F80007F003F80007F003FC0007F003FC0007F0 -03FC0007F003FC0E07F001FE0EFFFF81FF1CFFFF80FFF8FFFF801FF027227EA12A>82 -D<01FE0607FF8E1FFFFE3F01FE7C007E78003E78001EF8001EF8000EF8000EFC0000FF00 -00FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FE00007F00003F0000 -1FE0001FE0001FE0001FF0001EF0003EFC003CFF00FCFFFFF8E7FFE0C0FF8018227DA11F ->I<7FFFFFFF807FFFFFFF807FFFFFFF807E03F81F807C03F807807803F807807003F803 -80F003F803C0F003F803C0E003F801C0E003F801C0E003F801C0E003F801C00003F80000 -0003F800000003F800000003F800000003F800000003F800000003F800000003F8000000 -03F800000003F800000003F800000003F800000003F800000003F800000003F800000003 -F800000003F800000003F8000001FFFFF00001FFFFF00001FFFFF00022227EA127>I<FF -FF001FFEFFFF001FFEFFFF001FFE07F00001C007F80003C003F800038003FC00078001FC -00070001FC00070000FE000E0000FE000E0000FF001E00007F001C00007F803C00003F80 -3800003F803800001FC07000001FC07000001FE0F000000FE0E000000FF0E0000007F1C0 -000007F1C0000007FBC0000003FB80000003FF80000001FF00000001FF00000000FE0000 -0000FE00000000FE000000007C000000007C0000000038000027227FA12A>86 -D<0FFE003FFF807E07E07E03F07E01F07E01F83C01F80001F80001F800FFF807FFF81FE1 -F83F01F87E01F8FC01F8FC01F8FC01F8FC01F87E03F87E0EFF1FFCFF07F03F18167E951B ->97 D<FF800000FF800000FF8000001F8000001F8000001F8000001F8000001F8000001F -8000001F8000001F8000001F8000001F8000001F8FE0001FFFF8001FF07C001FC03E001F -801F001F800F801F800F801F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F -800FC01F800FC01F800F801F801F801F801F001FC03E001FE07C001E7FF8001C0FC0001A -237EA21F>I<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000 -FC0000FC0000FC0000FC00007C00007E00007E00003E00381F00700FC0F007FFC000FF00 -15167E9519>I<0001FF000001FF000001FF0000003F0000003F0000003F0000003F0000 -003F0000003F0000003F0000003F0000003F0000003F0001FE3F0007FFBF000F81FF001F -007F003E003F007E003F007C003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC -003F00FC003F00FC003F007C003F007C003F003E003F001F00FF000F83FFE007FFBFE001 -FC3FE01B237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00 -F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00381F00700FC0F003FF -C000FF0015167E951A>I<001F8000FFE001F1F003E3F007E3F00FC3F00FC1E00FC0000F -C0000FC0000FC0000FC0000FC000FFFE00FFFE00FFFE000FC0000FC0000FC0000FC0000F -C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0007F -FC007FFC007FFC00142380A211>I<01FE1F0007FFFF800F87E7801F03E7801E01E7003E -01F0003E01F0003E01F0003E01F0003E01F0001E01E0001F03E0000F87C0000FFF800019 -FE0000180000001C0000001C0000001FFFE0001FFFF8000FFFFE000FFFFF003FFFFF007C -003F80F8001F80F8000F80F8000F80F8000F807C001F007E003F001F80FC000FFFF80001 -FFC00019217F951C>I<FF800000FF800000FF8000001F8000001F8000001F8000001F80 -00001F8000001F8000001F8000001F8000001F8000001F8000001F87E0001F9FF8001FB8 -FC001FE07C001FC07E001FC07E001F807E001F807E001F807E001F807E001F807E001F80 -7E001F807E001F807E001F807E001F807E001F807E001F807E001F807E00FFF1FFC0FFF1 -FFC0FFF1FFC01A237EA21F>I<1E003F007F807F807F807F803F001E0000000000000000 -0000000000FF80FF80FF801F801F801F801F801F801F801F801F801F801F801F801F801F -801F801F801F80FFF0FFF0FFF00C247FA30F>I<003C007E00FF00FF00FF00FF007E003C -00000000000000000000000003FF03FF03FF003F003F003F003F003F003F003F003F003F -003F003F003F003F003F003F003F003F003F003F003F003F003F783FFC3FFC3EFC7E78FC -7FF01FC0102E83A311>I<FF800000FF800000FF8000001F8000001F8000001F8000001F -8000001F8000001F8000001F8000001F8000001F8000001F8000001F83FF801F83FF801F -83FF801F80F0001F83E0001F8780001F8F00001F9E00001FBE00001FFE00001FFF00001F -FF80001FCFC0001F8FC0001F87E0001F83F0001F83F0001F81F8001F80FC00FFF1FFC0FF -F1FFC0FFF1FFC01A237EA21E>I<FF80FF80FF801F801F801F801F801F801F801F801F80 -1F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80 -1F801F801F80FFF0FFF0FFF00C237FA20F>I<FF87F00FE000FF9FFC3FF800FFB87E70FC -001FE03EC07C001FC03F807E001FC03F807E001F803F007E001F803F007E001F803F007E -001F803F007E001F803F007E001F803F007E001F803F007E001F803F007E001F803F007E -001F803F007E001F803F007E001F803F007E001F803F007E00FFF1FFE3FFC0FFF1FFE3FF -C0FFF1FFE3FFC02A167E952F>I<FF87E000FF9FF800FFB8FC001FE07C001FC07E001FC0 -7E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F80 -7E001F807E001F807E001F807E001F807E00FFF1FFC0FFF1FFC0FFF1FFC01A167E951F> -I<00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC00 -7EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE0017167E951C ->I<FF8FE000FFFFF800FFF07C001FC03E001F801F001F801F801F801F801F800FC01F80 -0FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F801F801F801F801F80 -3F001FC03E001FE0FC001FFFF8001F8FC0001F8000001F8000001F8000001F8000001F80 -00001F8000001F800000FFF00000FFF00000FFF000001A207E951F>I<FF0F80FF1FE0FF -33F01F63F01FC3F01FC3F01FC1E01F80001F80001F80001F80001F80001F80001F80001F -80001F80001F80001F80001F8000FFF800FFF800FFF80014167F9517>114 -D<07F3001FFF00781F00700F00F00700F00700F80000FF0000FFF0007FFC003FFE001FFF -0007FF00003F80E00F80E00780F00780F00780F80700FC1E00FFFC00C7F00011167E9516 ->I<01C00001C00001C00001C00003C00003C00003C00007C00007C0000FC0003FFF00FF -FF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000F -C3800FC3800FC3800FC3800FC3800FC30007E70003FE0000FC0011207F9F16>I<FF83FE -00FF83FE00FF83FE001F807E001F807E001F807E001F807E001F807E001F807E001F807E -001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F80FE001F80FE -000F83FFC007FF7FC001FC7FC01A167E951F>I<FFF03FE0FFF03FE0FFF03FE00FC00E00 -0FE01E0007E01C0007E01C0003F0380003F0380003F8780001F8700001FCF00000FCE000 -00FCE000007FC000007FC000007FC000003F8000003F8000001F0000001F0000000E0000 -1B167F951E>I<FFE3FF8FF8FFE3FF8FF8FFE3FF8FF81FC07C03C00FC0FE03800FC0FE03 -800FE0FF078007E1FF070007E1DF070003F1DF8E0003F38F8E0003F38F8E0001FB8FDC00 -01FF07DC0001FF07FC0000FF07F80000FE03F80000FE03F800007E03F000007C01F00000 -3C01E000003800E00025167F9528>I<FFF0FFE0FFF0FFE0FFF0FFE007E0780007F0F000 -03F8F00001F9E00000FFC00000FF8000007F0000003F0000001F8000003FC000007FE000 -00F7F00001E3F00001C1F80003C0FC000780FE00FFC1FFE0FFC1FFE0FFC1FFE01B167F95 -1E>I E /Ff 1 98 df<03CC0E2E183C381C301C701CE038E038E038E038C073C073C0F3 -60F263361E1C10107C8F14>97 D E /Fg 2 104 df<003C00E001C00380038003800380 -03800380038003800380038003800380038007001E00F8001E0007000380038003800380 -03800380038003800380038003800380038001C000E0003C0E257E9B13>102 -D<F8001E000700038003800380038003800380038003800380038003800380038001C000 -E0003C00E001C0038003800380038003800380038003800380038003800380038007001E -00F8000E257E9B13>I E /Fh 30 122 df<00FC000383000603800E07801C07801C0300 -1C00001C00001C00001C0000FFFF80FFFF801C03801C03801C03801C03801C03801C0380 -1C03801C03801C03801C03801C03801C0380FF8FF0FF8FF0141A809915>12 -D<70F8FCFC7404040808102040060C7D990B>39 D<70F0F8F87808081010102040050C7D -840B>44 D<70F8F8F87005057D840B>46 D<07E01C38381C381C700E700E700EF00FF00F -F00FF00FF00FF00FF00FF00FF00FF00F700E700E700E381C381C1C3807E010187F9713> -48 D<07E01FF8383C781C781E781E301E001E001C0038007007E00038001C000E000F00 -0F700FF80FF80EF01E703C3FF80FE010187F9713>51 D<70F8F8F87000000000000070F0 -F8F8780808101010204005177D8F0B>59 D<000C0000001E0000001E0000001E0000003F -0000003F0000003F000000678000006780000067800000C3C00000C3C00000C3C0000181 -E0000181E0000181E0000300F00003FFF00007FFF80006007800060078000E007C000C00 -3C001E003C00FF81FFC0FF81FFC01A1A7F991D>65 D<07C21FF6383E701E600EE006E006 -E006F000F8007F803FF01FF80FFC01FE001E000F0007C007C007C007E006F00EFC1CDFF8 -87E0101A7E9915>83 D<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 -C0C0C0C0C0C0C0C0C0FEFE07257D9B0B>91 D<FEFE060606060606060606060606060606 -060606060606060606060606060606060606FEFE0725809B0B>93 -D<1FC000707000783800781C00301C00001C0003FC001F1C003C1C00781C00F01C00F01D -80F01D80F03D80785D801F8F0011107F8F13>97 D<FC0000FC00001C00001C00001C0000 -1C00001C00001C00001C00001C00001CFC001F07001E03801C03C01C01C01C01E01C01E0 -1C01E01C01E01C01E01C01E01C01C01C03801E03001F060018F800131A809915>I<07F0 -1C1C383C783C7018F000F000F000F000F000F0007000780C380C1C3807E00E107F8F11> -I<003F00003F0000070000070000070000070000070000070000070000070003E7000C1F -00180F00380700700700F00700F00700F00700F00700F00700F00700700700780700380F -001C3FE007E7E0131A7F9915>I<07C01C7038387038701CF01CFFFCF000F000F000F000 -7000780C38081C3807E00E107F8F11>I<01F007180E3C0C3C1C181C001C001C001C001C -00FFC0FFC01C001C001C001C001C001C001C001C001C001C001C001C00FF80FF800E1A80 -990C>I<0FC700387B80703B80F03C00F03C00F03C00F03C007038003870006FC0004000 -004000006000007FF0003FFC003FFE00600F00C00300C00300C00300C00300600600381C -0007E00011187F8F13>I<387C7C7C380000000000FCFC1C1C1C1C1C1C1C1C1C1C1C1CFF -FF081A80990A>105 D<FC00FC001C001C001C001C001C001C001C001C001C001C001C00 -1C001C001C001C001C001C001C001C001C001C001C00FF80FF80091A80990A>108 -D<FC7C1F00FD8E63801E0781C01E0781C01C0701C01C0701C01C0701C01C0701C01C0701 -C01C0701C01C0701C01C0701C01C0701C01C0701C0FF9FE7F8FF9FE7F81D107F8F20>I< -FC7C00FD87001E03801E03801C03801C03801C03801C03801C03801C03801C03801C0380 -1C03801C0380FF9FF0FF9FF01410808F15>I<07E01C38381C700E700EF00FF00FF00FF0 -0FF00FF00F700E700E381C1C3807E010107F8F13>I<FCFC00FF07001E03801C03C01C03 -C01C01E01C01E01C01E01C01E01C01E01C01E01C03C01C03801E07001F0E001CF8001C00 -001C00001C00001C00001C0000FF8000FF80001317808F15>I<FCF0FD1C1E3C1E3C1C18 -1C001C001C001C001C001C001C001C001C00FF80FF800E10808F0F>114 -D<1F2060E04060C060C060F0007F003FC01FE000F0C070C030E030E020F0408F800C107F -8F0F>I<18001800180018001800180038007FC0FFC03800380038003800380038003800 -386038603860386038601CC007800B177F960F>I<FC1F80FC1F801C03801C03801C0380 -1C03801C03801C03801C03801C03801C03801C03801C07800C07800E0BF003F3F0141080 -8F15>I<FE3F80FE3F803C0E001C0C001C0C000E18000E18000E18000730000730000770 -0003E00003E00001C00001C00001C00011107F8F14>I<FE3F80FE3F803C0E001C0C001C -0C000E18000E18000E180007300007300007700003E00003E00001C00001C00001C00001 -8000018000618000F30000F30000E6000078000011177F8F14>121 -D E /Fi 3 51 df<00C00000C00000C00000C00000C00000C00000C00000C00000C000FF -FF80FFFF8000C00000C00000C00000C00000C00000C00000C00000C00000C00011147E8F -17>43 D<0C007C009C001C001C001C001C001C001C001C001C001C001C001C001C00FF80 -09107E8F0F>49 D<1F006180C0C0E0E0E0E000E000C001C0018003000400082010203FC0 -7FC0FFC00B107F8F0F>I E /Fj 5 107 df<03F0000FFC001FFE003FFF007FFF807FFF80 -FFFFC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC07FFF807FFF803FFF001FFE000FFC0003F000 -12127E9317>15 D<00000006000000000600000000060000000003000000000300000000 -0380000000018000000000C0000000006000000000700000000018FFFFFFFFFFFFFFFFFF -FF00000000180000000070000000006000000000C0000000018000000003800000000300 -000000030000000006000000000600000000060028187E962D>33 -D<001F007F00F801E003C003C003C003C003C003C003C003C003C003C003C003C003C003 -C003C007800F00FE00F800FE000F00078003C003C003C003C003C003C003C003C003C003 -C003C003C003C003C003C001E000F8007F001F102D7DA117>102 -D<F800FE001F00078003C003C003C003C003C003C003C003C003C003C003C003C003C003 -C003C001E000F0007F001F007F00F001E003C003C003C003C003C003C003C003C003C003 -C003C003C003C003C003C007801F00FE00F800102D7DA117>I<C0C0C0C0C0C0C0C0C0C0 -C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C002 -2D7BA10D>106 D E /Fk 2 51 df<06001E00FE00EE000E000E000E000E000E000E000E -000E000E000E000E000E000E000E000E00FFE0FFE00B157D9412>49 -D<1F803FE070F0F870F878F838703800780070007000E001C00180030006000C18101820 -387FF0FFF0FFF00D157E9412>I E /Fl 52 122 df<000FF000007FF80001F81C0003E0 -3E0007E07E000FC07E000FC07E000FC07E000FC03C000FC000000FC000000FC1FF00FFFF -FF00FFFFFF00FFFFFF000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC0 -3F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F007FF9FFE07FF9 -FFE07FF9FFE01B20809F1D>12 D<3C03C07E07E0FF0FF0FF8FF8FF8FF8FF8FF87F87F83D -83D80180180380380300300300300600600E00E01C01C038038030030015117E9F1B>34 -D<3C007E00FF00FF80FF80FF807F803D80018003800300030006000E001C003800300009 -117D9F0F>39 D<3C7EFFFFFFFF7E3C08087D870F>46 D<00380000F80007F800FFF800FF -F800F9F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001 -F80001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFFE07FFFE07F -FFE0131D7D9C1A>49 D<03FC001FFF803FFFC07C1FE0FE07F0FE03F0FE03F8FE01F87C01 -F83801F80003F80003F00007E00007E0000FC0001F00003E00007C0000F00001E0380380 -380700380E00781FFFF83FFFF07FFFF0FFFFF0FFFFF0FFFFF0151D7E9C1A>I<03FC000F -FF801FFFC03C0FE07E07F07E03F07E03F07E03F03C07F00007E0000FC0001F8003FE0003 -FC00000F800007E00003F00003F00003F83803F87C03F8FE03F8FE03F8FE03F0FC07F07C -0FE03FFFC01FFF0003FC00151D7E9C1A>I<0001E00003E00003E00007E0000FE0001FE0 -003BE00073E000F3E001E3E001C3E00383E00703E00E03E01C03E03803E07803E0F003E0 -FFFFFEFFFFFEFFFFFE0007E00007E00007E00007E00007E000FFFE00FFFE00FFFE171D7F -9C1A>I<3800E03FFFE03FFFC03FFF803FFF003FFC003FC0003800003800003800003800 -0039FC003FFF803E07C03803E01003F00003F00003F80003F87803F8FC03F8FC03F8FC03 -F8FC03F07807E07C0FE03FFFC00FFF0003F800151D7E9C1A>I<003F0001FFC007FFE00F -C1E01F03F01E03F03E03F07E03F07C01E07C0000FC1000FCFF00FDFFC0FF03E0FE01F0FE -01F0FC01F8FC01F8FC01F8FC01F87C01F87C01F87C01F83C01F03E01F01F03E00FFFC007 -FF8001FC00151D7E9C1A>I<7000007FFFF87FFFF87FFFF87FFFF07FFFE0FFFFC0F00380 -E00700E00E00E00E00001C0000380000780000700000F00000F00001F00001E00003E000 -03E00003E00007E00007E00007E00007E00007E00007E00003C000018000151E7D9D1A> -I<01FE0007FF801FFFC03E07E03C03F07C01F07C01F07E01F07F81F07FE3E03FF3C03FFF -801FFF000FFF8007FFC01FFFE03E7FF07C1FF87807F8F803F8F801F8F800F8F800F8F800 -F07C01F07F03E03FFFC00FFF8003FC00151D7E9C1A>I<0000E000000001F000000001F0 -00000003F800000003F800000003F800000007FC00000007FC0000000FFE0000000EFE00 -00000EFE0000001C7F0000001C7F0000003C7F800000383F800000383F800000701FC000 -00701FC00000F01FE00000E00FE00000FFFFE00001FFFFF00001FFFFF00003C007F80003 -8003F800038003F800070001FC00070001FC00FFF01FFFE0FFF01FFFE0FFF01FFFE0231F -7E9E28>65 D<FFFFFE00FFFFFFC0FFFFFFE007E007F007E003F807E001FC07E001FC07E0 -01FC07E001FC07E001FC07E001FC07E001F807E003F007E00FE007FFFF8007FFFFE007E0 -03F007E001F807E000FC07E000FC07E000FE07E000FE07E000FE07E000FE07E000FE07E0 -01FC07E001FC07E007F8FFFFFFF0FFFFFFE0FFFFFF001F1F7E9E25>I<0007F806007FFF -0E01FFFFDE03FE03FE07F000FE0FC0007E1F80003E3F80001E3F00001E7F00000E7E0000 -0E7E00000EFE000000FE000000FE000000FE000000FE000000FE000000FE0000007E0000 -007E00000E7F00000E3F00000E3F80001C1F80001C0FC0003807F0007803FE03F001FFFF -C0007FFF800007FC001F1F7D9E26>I<FFFFFE0000FFFFFFC000FFFFFFF00007F007F800 -07F001FC0007F000FE0007F0007F0007F0003F0007F0003F8007F0001F8007F0001F8007 -F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0 -001FC007F0001FC007F0001F8007F0001F8007F0003F8007F0003F0007F0007F0007F000 -7E0007F001FC0007F007F800FFFFFFF000FFFFFFC000FFFFFE0000221F7E9E28>I<FFFF -FFE0FFFFFFE0FFFFFFE007F007E007F003E007F001E007F000F007F000F007F0707007F0 -707007F0707007F0707007F1F00007FFF00007FFF00007FFF00007F1F00007F0700007F0 -701C07F0701C07F0701C07F0003807F0003807F0003807F0007807F0007807F001F807F0 -07F8FFFFFFF0FFFFFFF0FFFFFFF01E1F7E9E22>I<FFFFFFE0FFFFFFE0FFFFFFE007F007 -E007F003E007F001E007F000F007F000F007F0007007F0707007F0707007F0707007F070 -0007F1F00007FFF00007FFF00007FFF00007F1F00007F0700007F0700007F0700007F070 -0007F0000007F0000007F0000007F0000007F0000007F00000FFFFC000FFFFC000FFFFC0 -001C1F7E9E21>I<FFFF80FFFF80FFFF8007F00007F00007F00007F00007F00007F00007 -F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007 -F00007F00007F00007F00007F00007F00007F000FFFF80FFFF80FFFF80111F7F9E14>73 -D<FFFFC000FFFFC000FFFFC00007F0000007F0000007F0000007F0000007F0000007F000 -0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 -0007F001C007F001C007F001C007F001C007F003C007F003C007F0078007F0078007F00F -8007F03F80FFFFFF80FFFFFF80FFFFFF801A1F7E9E1F>76 D<001FF80000FFFF0001F81F -8007E007E00FC003F01F8001F81F0000F83F0000FC7F0000FE7E00007E7E00007EFE0000 -7FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007F7E0000 -7E7F0000FE7F0000FE3F0000FC3F8001FC1F8001F80FC003F007E007E001F81F8000FFFF -00001FF800201F7D9E27>79 D<FFFFFE00FFFFFF80FFFFFFE007F00FF007F003F807F001 -F807F001FC07F001FC07F001FC07F001FC07F001FC07F001FC07F001F807F003F007F00F -F007FFFFC007FFFF0007F0000007F0000007F0000007F0000007F0000007F0000007F000 -0007F0000007F0000007F0000007F00000FFFF8000FFFF8000FFFF80001E1F7E9E24>I< -001FF80000FFFF0001F81F8007E007E00FC003F01F8001F81F8001F83F0000FC7F0000FE -7F0000FE7E00007EFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007F -FE00007FFE00007F7E00007E7E00007E7F0000FE3F0000FC3F87C1FC1F8FE1F80FD833F0 -07F81FE001F81F8000FFFF00001FFE0300000E0300000F0700000FFF000007FF000007FE -000007FE000003FC000001F8000000F020287D9E27>I<FFFFF80000FFFFFF8000FFFFFF -C00007F00FF00007F003F80007F001F80007F001FC0007F001FC0007F001FC0007F001FC -0007F001FC0007F001F80007F003F00007F00FE00007FFFF800007FFFF000007F03F8000 -07F00FC00007F00FE00007F007F00007F007F00007F007F00007F007F00007F007F00007 -F007F00007F007F02007F007F07007F003F070FFFF81F8E0FFFF80FFC0FFFF803F80241F -7E9E27>I<03FC180FFF381FFFF83E03F87C00F8780078F80078F80038F80038FC0000FF -0000FFF8007FFF007FFFC03FFFE01FFFF00FFFF803FFF8001FFC0001FC0000FC00007CE0 -007CE0007CE0007CF00078F800F8FE01F0FFFFE0EFFFC0C1FF00161F7D9E1D>I<7FFFFF -FC7FFFFFFC7FFFFFFC7E0FE0FC780FE03C700FE01CF00FE01EF00FE01EE00FE00EE00FE0 -0EE00FE00EE00FE00E000FE000000FE000000FE000000FE000000FE000000FE000000FE0 -00000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00007FFFF -C007FFFFC007FFFFC01F1E7E9D24>I<FFFF007FF8FFFF007FF8FFFF007FF807F0000700 -07F8000F0003F8000E0003FC000E0001FC001C0001FC001C0001FE003C0000FE00380000 -FF007800007F007000007F807000003F80E000003F80E000001FC1C000001FC1C000001F -E3C000000FE38000000FF780000007F700000007FF00000003FE00000003FE00000003FE -00000001FC00000001FC00000000F800000000F800000000700000251F7F9E28>86 -D<0600600E00E01C01C0380380300300600600600600E00E00C00C00DE0DE0FF0FF0FF8F -F8FF8FF8FF8FF87F87F83F03F01E01E015117D9F1B>92 D<07FC001FFF803F0FC03F07E0 -3F03F03F03F00C03F00003F001FFF00FFFF01F83F07E03F07C03F0F803F0F803F0F803F0 -FC07F07E0DFE3FF8FE07E07E17147F9319>97 D<FF800000FF800000FF8000001F800000 -1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8FE000 -1FFFF8001FF07C001FC03E001F803F001F801F001F801F001F801F801F801F801F801F80 -1F801F801F801F801F801F801F801F001F801F001F803E001FC03E001FE0FC001E7FF000 -1C1FC00019207F9F1D>I<01FE0007FF801F0FC03E0FC03E0FC07C0FC07C0300FC0000FC -0000FC0000FC0000FC0000FC00007C00007E00003E00E03F01C01F83C007FF8001FC0013 -147E9317>I<0007FC000007FC000007FC000000FC000000FC000000FC000000FC000000 -FC000000FC000000FC000000FC000000FC0001FCFC000FFFFC001F83FC003E00FC007E00 -FC007C00FC007C00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC007C00 -FC007C00FC007E00FC003E01FC001F07FF800FFFFF8003F8FF8019207E9F1D>I<01FE00 -07FF800F83C01E01E03E00F07C00F07C00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC0000 -7C00007C00003E00381E00380F80F007FFE000FF8015147F9318>I<003F8000FFC003F3 -E007E7E007C7E00FC7E00FC3C00FC0000FC0000FC0000FC0000FC000FFFC00FFFC00FFFC -000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0 -000FC0000FC0007FFC007FFC007FFC0013207F9F10>I<03FC7C0FFFFE1E07DE3C03DE7C -03EC7C03E07C03E07C03E07C03E03C03C01E07801FFF0033FC003000007000007800007F -FF803FFFF03FFFF81FFFFC3FFFFC7C00FEF8003EF8003EF8003EF8003E7C007C3F01F80F -FFE003FF80171E7F931A>I<FF800000FF800000FF8000001F8000001F8000001F800000 -1F8000001F8000001F8000001F8000001F8000001F8000001F87F0001F9FF8001FB8FC00 -1FE07E001FC07E001FC07E001F807E001F807E001F807E001F807E001F807E001F807E00 -1F807E001F807E001F807E001F807E001F807E00FFF3FFC0FFF3FFC0FFF3FFC01A207E9F -1D>I<1E003F007F807F807F807F803F001E0000000000000000000000FF80FF80FF801F -801F801F801F801F801F801F801F801F801F801F801F801F801F80FFF0FFF0FFF00C217E -A00F>I<FF800000FF800000FF8000001F8000001F8000001F8000001F8000001F800000 -1F8000001F8000001F8000001F8000001F83FF001F83FF001F83FF001F81E0001F83C000 -1F8780001F9E00001FBC00001FFE00001FFF00001FDF00001F9F80001F0FC0001F07E000 -1F03E0001F03F0001F01F800FFE3FF80FFE3FF80FFE3FF8019207F9F1C>107 -D<FF80FF80FF801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F -801F801F801F801F801F801F801F801F801F801F801F80FFF0FFF0FFF00C207E9F0F>I< -FF07F00FE000FF1FFC3FF800FF387E70FC001F603FC07E001FC03F807E001FC03F807E00 -1F803F007E001F803F007E001F803F007E001F803F007E001F803F007E001F803F007E00 -1F803F007E001F803F007E001F803F007E001F803F007E001F803F007E00FFF1FFE3FFC0 -FFF1FFE3FFC0FFF1FFE3FFC02A147E932D>I<FF07F000FF1FF800FF38FC001F607E001F -C07E001FC07E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F -807E001F807E001F807E001F807E00FFF3FFC0FFF3FFC0FFF3FFC01A147E931D>I<01FF -0007FFC01F83F03E00F83E00F87C007C7C007CFC007EFC007EFC007EFC007EFC007EFC00 -7E7C007C7C007C3E00F83E00F81F83F007FFC001FF0017147F931A>I<FF8FE000FFFFF8 -00FFF0FC001FC07E001F803F001F803F001F801F001F801F801F801F801F801F801F801F -801F801F801F801F801F801F001F803F001F803E001FC07E001FE0FC001FFFF0001F9FC0 -001F8000001F8000001F8000001F8000001F8000001F800000FFF00000FFF00000FFF000 -00191D7F931D>I<01F81C0007FE3C001F87FC003F01FC003E00FC007E00FC007C00FC00 -FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC007C00FC007E00FC007E00FC00 -3F01FC001F87FC000FFEFC0003F8FC000000FC000000FC000000FC000000FC000000FC00 -0000FC000007FF800007FF800007FF80191D7E931C>I<FF1F00FF3FC0FF67E01FC7E01F -C7E01FC7E01F81801F80001F80001F80001F80001F80001F80001F80001F80001F80001F -8000FFF800FFF800FFF80013147F9316>I<0FE63FFE783E700EF00EF00EFE00FFE07FF8 -3FFC1FFE0FFF007FE01FE00FF00FF00EFC1EFFFCC7F010147E9315>I<03800380038003 -800780078007800F801F803FFCFFFCFFFC1F801F801F801F801F801F801F801F801F801F -8E1F8E1F8E1F8E1F8E0F9C07F803F00F1D7F9C14>I<FF83FE00FF83FE00FF83FE001F80 -7E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F80 -7E001F807E001F807E001F80FE001F80FE000F83FFC007FF7FC001FC7FC01A147E931D> -I<FFF0FF80FFF0FF80FFF0FF800FC038000FC038000FE0780007E0700007F0F00003F0E0 -0003F9E00001F9C00001F9C00000FF800000FF800000FF8000007F0000007F0000003E00 -00003E0000001C000019147F931C>I<FFE7FF3FE0FFE7FF3FE0FFE7FF3FE01F80FC0700 -0FC1FC0E000FC1FC0E000FC3FE1E0007E3BE1C0007E3BE1C0007F7BF3C0003F71F380003 -F71FB80001FE0FF00001FE0FF00001FE0FF00000FC07E00000FC07E00000FC07E0000078 -03C000007803C00023147F9326>I<FFF3FF00FFF3FF00FFF3FF000FE0E00007E1E00003 -F3C00001FF800000FF000000FE0000007E0000003F0000007F800000FFC00001EFE00003 -C7E0000383F0000781F800FFC3FF80FFC3FF80FFC3FF8019147F931C>I<FFF0FF80FFF0 -FF80FFF0FF800FC038000FC038000FE0780007E0700007F0F00003F0E00003F9E00001F9 -C00001F9C00000FF800000FF800000FF8000007F0000007F0000003E0000003E0000001C -0000001C00000038000078380000FC780000FC700000E0E00000F1E000007F8000001E00 -0000191D7F931C>I E /Fm 86 127 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F87000 -0000000070F8F8F870051C779B18>33 D<2008701CF83EF83EF83EF83EF83EF83E701C70 -1C701C701C701C30180F0E7C9C18>I<030600078F00078F00078F00078F00078F00078F -007FFFC0FFFFE0FFFFE07FFFC00F1E000F1E000F1E000F1E000F1E000F1E007FFFC0FFFF -E0FFFFE07FFFC01E3C001E3C001E3C001E3C001E3C001E3C000C1800131C7E9B18>I<00 -C00001C00001C00001C00003F0000FFC003FFE007DDF0071CF00E1C780E1CF80E1CF80E1 -CF80F1C70079C0007FC0003FF0001FFC0007FE0001FF0001CF0021C78071C380F9C380F9 -C380F1C380F1C70079C7007DDE003FFC001FF80007E00001C00001C00001C00000C00011 -247D9F18>I<3803007C07807C0780EE0F80EE0F00EE0F00EE1F00EE1E00EE1E00EE3E00 -7C3C007C3C00387C0000780000780000F80000F00001F00001E00001E00003E00003C000 -03C00007C0000783800787C00F87C00F0EE00F0EE01F0EE01E0EE01E0EE03E0EE03C07C0 -3C07C018038013247E9F18>I<01C00007E0000FF0000E70001C38001C38001C38001C38 -001C73F81CF3F81CE3F80FC1C00FC3800F83800F03801F07003F87007B8E0071CE00F1FC -00F0FC00F07C00F07870F0787078FE707FFFE03FC7E00F03C0151C7F9B18>I<387C7C7E -3E0E0E0E1C1C38F8F0C0070E789B18>I<007000F001E003C007800F001E001E003C003C -007800780078007000F000F000F000F000F000F000F000F00070007800780078003C003C -001E001E000F00078003C001F000F000700C24799F18>I<6000F00078003C001E000F00 -0780078003C003C001E001E001E000E000F000F000F000F000F000F000F000F000E001E0 -01E001E003C003C0078007800F001E003C007800F00060000C247C9F18>I<01C00001C0 -0001C00001C00061C300F9CF80FDDF807FFF003FFE000FF8000FF8003FFE007FFF00FDDF -80F9CF8061C30001C00001C00001C00001C00011147D9718>I<00600000F00000F00000 -F00000F00000F00000F00000F0007FFFC0FFFFE0FFFFE07FFFC000F00000F00000F00000 -F00000F00000F00000F00000600013147E9718>I<1C3E7E7F3F1F070E1E7CF860080C78 -8518>I<7FFFC0FFFFE0FFFFE07FFFC013047E8F18>I<3078FCFC78300606778518>I<00 -0300000780000780000F80000F00001F00001E00001E00003E00003C00007C0000780000 -780000F80000F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F -00001F00001E00003E00003C00003C00007C0000780000F80000F00000F0000060000011 -247D9F18>I<01F00007FC000FFE001F1F001E0F003C07807803C07803C07803C0F001E0 -F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F803E07803C07803C07C07C0 -3C07801E0F001F1F000FFE0007FC0001F000131C7E9B18>I<01C001C003C007C007C01F -C0FFC0FBC063C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003 -C003C07FFEFFFF7FFE101C7C9B18>I<03F0001FFE003FFF007C0F807807C0F003C0F801 -E0F801E07001E00001E00001E00003C00003C0000780000780000F00001E00003C0000F8 -0001F00003E00007C0000F80001E01E03C01E07FFFE0FFFFE07FFFE0131C7E9B18>I<03 -F8001FFE003FFF003C0F807C07C07C03C07C03C01003C0000380000780000F0003FE0003 -FE0003FF00000F800007C00003C00001E00001E00001E07001E0F801E0F803C0F007C07C -0F807FFF001FFE0007F000131C7E9B18>I<001F00003F00007F0000770000F70001E700 -01C70003C7000787000707000E07001E07003C0700380700780700F00700FFFFF8FFFFF8 -FFFFF8000700000700000700000700000700000700007FF0007FF0007FF0151C7F9B18> -I<3FFF807FFF807FFF807800007800007800007800007800007800007800007800007BF8 -007FFE007FFF007C0F803003C00003C00001E00001E07001E0F801E0F801E0F803C07807 -C07C0F803FFF001FFC0003F000131C7E9B18>I<F00000FFFFE0FFFFE0FFFFE0F007C0F0 -0F80000F00001E00003C00003C0000780000780000F00000F00001E00001E00001E00003 -C00003C00003C00003C00007800007800007800007800007800007800007800003000013 -1D7E9C18>55 D<3078FCFC783000000000000000003078FCFC78300614779318>58 -D<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78F060071A789318>I<0000 -C00003E00007E0001FC0003F8000FE0001FC0007F0000FE0003F80007F0000FC0000FC00 -007F00003F80000FE00007F00001FC0000FE00003F80001FC00007E00003E00000C01318 -7E9918>I<7FFFC0FFFFE0FFFFE07FFFC00000000000000000000000007FFFC0FFFFE0FF -FFE07FFFC0130C7E9318>I<600000F80000FC00007F00003F80000FE00007F00001FC00 -00FE00003F80001FC00007E00007E0001FC0003F8000FE0001FC0007F0000FE0003F8000 -7F0000FC0000F8000060000013187E9918>I<0FF0003FFC007FFF00781F00F80780F807 -80F80780201F00007E0000FC0001F00001E00003C00003C00003C00003C00003C0000380 -0000000000000000000000000000000003800007C00007C00007C000038000111C7D9B18 ->I<007C0001FE0007FF000F87801E03C03C1DC0387FC070FFE071E3E071C1E0E1C1E0E3 -80E0E380E0E380E0E380E0E380E0E380E0E1C1C071C1C071E3C070FF80387F003C1C001E -01E00F83E007FFC001FF80007E00131C7E9B18>I<00F80000F80000F80001FC0001DC00 -01DC0001DC0003DE0003DE0003DE0003DE00038E00078F00078F00078F00078F00078F00 -0F07800FFF800FFF800FFF800F07801E03C01E03C01E03C07F8FF0FF8FF87F8FF0151C7F -9B18>I<7FFE00FFFF007FFF801E07C01E03C01E01E01E01E01E01E01E01E01E01E01E03 -C01E07C01FFF801FFF001FFFC01E03E01E01E01E00F01E00F01E00F01E00F01E00F01E00 -F01E01E01E03E07FFFC0FFFF807FFE00141C7F9B18>I<00F8E003FFE007FFE00F07E01E -03E03C03E03C01E07801E07801E0700000F00000F00000F00000F00000F00000F00000F0 -0000F000007000007801E07801E03C01E03C01E01E03C00F07C007FF8003FE0000F80013 -1C7E9B18>I<7FFC00FFFF007FFF801E07C01E03E01E01E01E01F01E00F01E00F01E00F8 -1E00781E00781E00781E00781E00781E00781E00781E00781E00781E00F01E00F01E01F0 -1E01E01E03E01E07C07FFF80FFFF007FFC00151C809B18>I<FFFFF0FFFFF0FFFFF01E00 -F01E00F01E00F01E00F01E00001E00001E0F001E0F001E0F001FFF001FFF001FFF001E0F -001E0F001E0F001E00001E00001E00781E00781E00781E00781E0078FFFFF8FFFFF8FFFF -F8151C7F9B18>I<FFFFF8FFFFF8FFFFF81E00781E00781E00781E00781E00001E00001E -0F001E0F001E0F001FFF001FFF001FFF001E0F001E0F001E0F001E00001E00001E00001E -00001E00001E00001E0000FFE000FFE000FFE000151C7F9B18>I<01F1C007FFC00FFFC0 -1F0FC01E07C03C03C03803C07803C07803C0700000F00000F00000F00000F00000F00000 -F01FF0F03FF0F01FF07003C07803C07803C03807C03C07C01E0FC01F0FC00FFFC007FFC0 -01F3C0141C7E9B18>I<7F8FF0FFDFF87F8FF01E03C01E03C01E03C01E03C01E03C01E03 -C01E03C01E03C01E03C01FFFC01FFFC01FFFC01E03C01E03C01E03C01E03C01E03C01E03 -C01E03C01E03C01E03C01E03C07F8FF0FFDFF87F8FF0151C7F9B18>I<7FFF80FFFFC07F -FF8001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001 -E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0007FFF80FF -FFC07FFF80121C7D9B18>I<01FFE001FFE001FFE0000F00000F00000F00000F00000F00 -000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00 -000F00700F00F80F00F80F00F83E007FFC003FF8000FE000131C7E9B18>I<FFE000FFE0 -00FFE0001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00 -001E00001E00001E00001E00001E00001E00001E00F01E00F01E00F01E00F01E00F0FFFF -F0FFFFF0FFFFF0141C7F9B18>76 D<FC01F8FE03F8FE03F83F07E03B06E03B06E03B06E0 -3B8EE03B8EE0398CE0398CE039DCE039DCE039DCE038D8E038F8E038F8E03870E03870E0 -3800E03800E03800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F9B18>I<7E07 -F0FF0FF87F07F01F81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61 -C01C71C01C71C01C31C01C39C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0F -C07F07C0FF87C07F03C0151C7F9B18>I<0FFE003FFF807FFFC07C07C07803C0F803E0F0 -01E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F0 -01E0F001E0F001E0F001E0F803E07803C07C07C07FFFC03FFF800FFE00131C7E9B18>I< -FFFE00FFFF80FFFFC01E07C01E03E01E01E01E00F01E00F01E00F01E00F01E00F01E01E0 -1E03E01E07C01FFFC01FFF801FFE001E00001E00001E00001E00001E00001E00001E0000 -1E0000FFC000FFC000FFC000141C7F9B18>I<7FF800FFFE007FFF001E1F801E07801E07 -C01E03C01E03C01E03C01E07C01E07801E1F801FFF001FFE001FFE001E0F001E0F001E07 -801E07801E07801E07801E07801E07BC1E07BC1E07BC7F83F8FFC1F87F80F0161C7F9B18 ->82 D<7FFFF8FFFFF8FFFFF8F07878F07878F07878F07878007800007800007800007800 -007800007800007800007800007800007800007800007800007800007800007800007800 -00780000780007FF8007FF8007FF80151C7F9B18>84 D<FFC7FEFFC7FEFFC7FE1E00F01E -00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E -00F01E00F01E00F01E00F01E00F01E00F00F01E00F01E007C7C003FF8001FF00007C0017 -1C809B18>I<FF07F8FF8FF8FF07F83C01E01E03C01E03C01E03C01E03C00F07800F0780 -0F07800F07800F0780078F00078F00078F00078F00038E00038E0003DE0003DE0001DC00 -01DC0001DC0001FC0001FC0000F80000F800151C7F9B18>I<FE03F8FE03F8FE03F87000 -707000707000703800E03800E03800E03800E03800E038F8E039FCE039DCE039DCE019DC -C019DCC019DCC0198CC0198CC01D8DC01D8DC01D8DC01D05C00F07800F07800F07800E03 -80151C7F9B18>I<7F8FE07F9FE07F8FE00F0F800F8F00079F0007DE0003FE0003FC0001 -FC0001F80000F80000F00000F00000F80001F80001FC0003FC0003DE00079E00078F0007 -8F000F07800F07801E07C07F8FF0FF8FF87F8FF0151C7F9B18>I<FFFCFFFCFFFCF000F0 -00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F0 -00F000F000F000F000F000F000F000F000F000F000FFFCFFFCFFFC0E24789F18>91 -D<600000F00000F00000F800007800007C00003C00003C00003E00001E00001F00000F00 -000F00000F800007800007C00003C00003C00003E00001E00001F00000F00000F8000078 -00007800007C00003C00003E00001E00001E00001F00000F00000F800007800007800003 -0011247D9F18>I<FFFCFFFCFFFC003C003C003C003C003C003C003C003C003C003C003C -003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C -003CFFFCFFFCFFFC0E247F9F18>I<03800FE03FF8FFFEFC7EF01E40040F077C9B18>I<7F -FFC0FFFFE0FFFFE07FFFC013047E7F18>I<061E3E387070E0E0E0F8FC7C7C38070E789E -18>I<0FF0003FFC007FFE007C1F007C0F0038078000078000FF8007FF801FFF807F8780 -7C0780F00780F00780F00780F807807C1F803FFFF81FFBF807E1F815147E9318>I<7F00 -00FF00007F00000F00000F00000F00000F00000F00000F3E000FFF800FFFE00FC1F00F80 -F00F00780F00780F003C0F003C0F003C0F003C0F003C0F003C0F00780F80780F80F00FC1 -F00FFFE00FFF80073E00161C809B18>I<01FC0007FF001FFF803E0F803C0F8078070078 -0000F00000F00000F00000F00000F00000F000007800007803C03C03C03E07C01FFF8007 -FF0001FC0012147D9318>I<001FC0003FC0001FC00003C00003C00003C00003C00003C0 -01F3C007FFC01FFFC03E0FC03C07C07803C07803C0F003C0F003C0F003C0F003C0F003C0 -F003C07803C07807C03C07C03E1FC01FFFF807FBFC01F3F8161C7F9B18>I<01F80007FE -000FFF001F0F803C03C07803C07801C0F001E0F001E0FFFFE0FFFFE0FFFFE0F000007800 -007801E03C01E01F03E00FFFC007FF8000FE0013147E9318>I<001F80007FC000FFE000 -F3E001E3E001E08001E00001E0007FFFC0FFFFC0FFFFC001E00001E00001E00001E00001 -E00001E00001E00001E00001E00001E00001E00001E00001E00001E0007FFF807FFF807F -FF80131C7F9B18>I<03F1E00FFFF01FFFF83E1F783C0F30780780780780780780780780 -7807803C0F003E1F003FFE003FFC003BF0003800003800001FFE001FFFC03FFFE07801F0 -700070E00038E00038E00038E000387800F07E03F01FFFC00FFF8001FC00151F7F9318> -I<7F0000FF00007F00000F00000F00000F00000F00000F00000F1F000F7F800FFFC00FE1 -C00FC1E00F81E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01 -E00F01E07FE3FCFFF3FE7FE3FC171C809B18>I<01C00003E00003E00003E00001C00000 -00000000000000000000007FE000FFE0007FE00001E00001E00001E00001E00001E00001 -E00001E00001E00001E00001E00001E00001E00001E00001E000FFFF80FFFF80FFFF8011 -1D7D9C18>I<001C003E003E003E001C00000000000000000FFE0FFE0FFE001E001E001E -001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E -701CF83CF878FFF87FF01FC00F277E9C18>I<7E0000FE00007E00000E00000E00000E00 -000E00000E00000E3FF00E3FF00E3FF00E07800E0F000E1E000E3C000E78000EF0000FF8 -000FFC000F9C000F0E000E0F000E07000E03800E03C07FC7F8FFC7F87FC7F8151C7F9B18 ->I<FFE000FFE000FFE00001E00001E00001E00001E00001E00001E00001E00001E00001 -E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001 -E00001E000FFFFC0FFFFC0FFFFC0121C7D9B18>I<F9C1C0FFF7F0FFFFF03E3E383C3C38 -3C3C38383838383838383838383838383838383838383838383838383838383838383838 -FE3E3EFE7E7EFE3E3E1714809318>I<7F1F00FF7F807FFFC00FE1C00FC1E00F81E00F01 -E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E07FE3FCFFF3 -FE7FE3FC1714809318>I<01F0000FFE001FFF003E0F803C07807803C07803C0F001E0F0 -01E0F001E0F001E0F001E0F001E07803C07803C03C07803F1F801FFF000FFE0001F00013 -147E9318>I<7F3E00FFFF807FFFE00FC1F00F80F00F00780F00780F003C0F003C0F003C -0F003C0F003C0F003C0F00780F80780F80F00FC1F00FFFE00FFF800F3E000F00000F0000 -0F00000F00000F00000F00000F00007FE000FFF0007FE000161E809318>I<01F9E007FD -E00FFFE01F0FE03C07E07803E07801E0F001E0F001E0F001E0F001E0F001E0F001E07801 -E07803E03C07E03E0FE01FFFE007FDE001F1E00001E00001E00001E00001E00001E00001 -E00001E0000FFC001FFE000FFC171E7F9318>I<FF87E0FF9FF0FFBFF807F87807F03007 -E00007C00007C000078000078000078000078000078000078000078000078000078000FF -FE00FFFF00FFFE0015147F9318>I<07FF003FFF007FFF00700F00E00F00E00F00F00000 -7E00007FF0001FFC0007FF00003F00700780F00380F00380F80380FC0F00FFFF00FFFC00 -E7F00011147D9318>I<0380000780000780000780000780007FFFC0FFFFC0FFFFC00780 -000780000780000780000780000780000780000780000780000780C00781E00781E00781 -E003C3C003FFC001FF00007E0013197F9818>I<7F0FE0FF1FE07F0FE00F01E00F01E00F -01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F03E00F07E007 -FFFC03FFFE01F9FC1714809318>I<7F8FF0FF8FF87F8FF01C01C00E03800E03800E0380 -070700070700070700078F00038E00038E0003DE0001DC0001DC0001DC0000F80000F800 -00700015147F9318>I<FF07F8FF8FF8FF07F83800E03800E03800E03800E01C01C01C71 -C01CF9C01CF9C01CF9C01DDDC00DDD800DDD800DDD800F8F800F8F800F8F800707001514 -7F9318>I<7F8FF07F9FF07F8FF00F0700078E00039E0001DC0001F80000F80000700000 -F00000F80001DC00039E00038E000707000E07807F8FF0FF8FF87F8FF015147F9318>I< -7F8FF0FF8FF87F8FF00E01C00E03800E0380070380070700070700038700038700038E00 -01CE0001CE0001CC0000DC0000FC0000780000780000780000700000700000700000F000 -7CE0007DE00073C0007F80003F00001E0000151E7F9318>I<3FFFF07FFFF07FFFF07803 -E07807C0780F80001F00003E00007C0000F80001F00003E00007C0000F80F01F00F03E00 -F07C00F0FFFFF0FFFFF0FFFFF014147F9318>I<0007E0001FE0007FE0007C0000F00000 -F00000F00000F00000F00000F00000F00000F00000F00000F00000F00001F0007FE000FF -C000FFC0007FE00001F00000F00000F00000F00000F00000F00000F00000F00000F00000 -F00000F00000F000007C00007FE0001FE00007E013247E9F18>I<60F0F0F0F0F0F0F0F0 -F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0600424769F18>I<7E00 -00FF8000FFE00003E00000F00000F00000F00000F00000F00000F00000F00000F00000F0 -0000F00000F00000F800007FC0003FE0003FE0007FC000F80000F00000F00000F00000F0 -0000F00000F00000F00000F00000F00000F00000F00003E000FFE000FF80007E00001324 -7E9F18>I<0E0C1F1E3FBEFBF8F1F060E00F067C9B18>I E /Fn 39 -122 df<00001FE000007FF00001C0380001807800038078000700300007000000070000 -00070000000E0000000E0000000E000000FFFFE000FFFFE0001C01C0001C01C0001C01C0 -001C01C0001C038000380380003803800038038000380700003807000078070000700718 -00700E3000700E3000700E3000600E6000E007E000E003C000E0000000E0000001C00000 -01C00000318000007B800000F30000007E0000003C0000001D29829F1A>12 -D<00003FC0FF800000FFE3FFC00001C1E700E0000381EE01E0000380DC01E00007001C00 -C0000700180000000700380000000700380000000E00380000000E00380000000E007000 -0000FFFFFFFF8000FFFFFFFF80000E00700700001C00700700001C00700700001C00E007 -00001C00E00E00001C00E00E00003800E00E00003800E00E00003801C01C00003801C01C -00003801C01C00007001C01C60007001C038C00070038038C00070038038C00070038039 -8000E003801F8000E003000F0000E00700000000E00700000001C00700000001C00E0000 -0031860E000000798F1C000000F31E380000007E0FF00000003C07C00000002B29829F28 ->14 D<00E001F001F003E003E003E003C003C003C00780078007800700070007000E000E -000E000C000C001C0018001800000000000000000000007000F800F800F000E0000C217B -A00E>33 D<1C1C3E3E7E7E7E7E3E3E06060C0C0C0C1818181830306060C0C080800F0E78 -9F17>I<70F8F8F0E005057B840E>46 D<000200060006000E003C00FC03DC031C003800 -3800380038007000700070007000E000E000E000E001C001C001C001C003800380038003 -80FFF8FFF80F1E7B9D17>49 D<0007C0001FE000386000E0E001C1E001C1E00380C00700 -000F00000E00001E10001E7C001DFE003F07003E07003C07807C07807807807807807807 -80700F00700F00F00F00F00E00F01E00701C0070380070380038F0001FC0000F8000131F -7B9D17>54 D<001F00007F8000E1C001C0E00380E00700E00700E00700E00F01C00F01C0 -0F838007C70007EE0003F80001F80003FC000E7E001C3F00381F00700F00700700E00700 -E00700E00700E00E00E00E00E01C00E0380070F0003FE0001F8000131F7B9D17>56 -D<070F1F1F0E0000000000000000000070F8F8F0E008147B930E>58 -D<0000FE020007FF06001F818C003E00DC0078007C00F0007C01E0003803C00038078000 -380F8000381F0000301F0000303E0000303E0000007C0000007C0000007C0000007C0000 -00F8000000F8000000F8000000F80000C0F80001807800018078000300780003003C0006 -003C000C001E0018000F00300007C0E00003FF800000FE00001F217A9F21>67 -D<01FFFFFC01FFFFF8001E0078001E0038001E0038003C0018003C0018003C0018003C00 -3000780C3000780C3000780C0000781C0000F0380000FFF80000FFF80000F0380001E030 -0001E0300001E0300001E0300003C0000003C0000003C0000003C0000007800000078000 -000780000007800000FFFC0000FFF800001E1F7D9E1E>70 D<00FF007FE001FF00FFC000 -1F001E00001F800C00001F800C0000378018000033C018000033C018000033C018000063 -C030000061E030000061E030000061E0300000C0F0600000C0F0600000C0F0600000C078 -6000018078C000018078C00001803CC00001803CC00003003D800003001F800003001F80 -0003001F800006000F000006000F000006000F00000E000F0000FFC0060000FFC0060000 -231F7D9E22>78 D<01FFFF8001FFFFE0001E01F0001E0078001E0078003C007C003C007C -003C007C003C007C007800F8007800F8007800F0007801E000F003C000F00F8000FFFF00 -00FFF80001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C00000 -07800000078000000780000007800000FFF80000FFF000001E1F7D9E1F>80 -D<0007E040001FF8C0003C1D8000700F8000E0078001C007800180030003800300038003 -0003800300038000000380000003C0000003F8000001FF800001FFE000007FF000001FF0 -000001F80000007800000038000000380000003800300038003000380030003000700070 -00700060007800E0007801C000EE078000C7FE000081F800001A217D9F1A>83 -D<06060E0E1C1C1818303060606060C0C0C0C0F0F0F8F8F8F8F8F870700F0E749F17>92 -D<00F18003FDC0078F800E07801C07803C07803C0700780700780700780700F00E00F00E -00F00E00F00E30F01C60F03C60707C6078FCC03FCFC00F070014147C9317>97 -D<07803F803F000700070007000E000E000E000E001C001C001CF01FFC3F1E3E0E3C0F38 -0F700F700F700F700FE01EE01EE01EE03CE03CE038607071E03FC01F0010207B9F15>I< -007E0001FF000383800F07801E07801C07003C0200780000780000780000F00000F00000 -F00000F00000F00000700200700700381E001FF80007E00011147C9315>I<0000780003 -F80003F00000700000700000700000E00000E00000E00000E00001C00001C000F1C003FD -C0078F800E07801C07803C07803C0700780700780700780700F00E00F00E00F00E00F00E -30F01C60F03C60707C6078FCC03FCFC00F070015207C9F17>I<007C0001FF000783000F -01801E01803C01803C0300780E007FFC007FE000F00000F00000F00000F0000070000070 -02007807003C1E001FF80007E00011147C9315>I<0000F80001FC0003BC00033C000718 -000700000700000E00000E00000E00000E00000E0000FFE001FFE0001C00001C00001C00 -00380000380000380000380000380000700000700000700000700000700000E00000E000 -00E00000E00000E00001C00001C00001C0000180003380007B8000F300007E00003C0000 -1629829F0E>I<003C6000FF7001E3E00381E00701E00F01E00F01C01E01C01E01C01E01 -C03C03803C03803C03803C03803C07003C0F001C1F001E3F000FFE0003CE00000E00000E -00001C00001C00301C00783800F0F0007FE0003F8000141D7E9315>I<01E0000FE0000F -C00001C00001C00001C000038000038000038000038000070000070000073E00077F000E -C3800F81C00F01C00E01C01E03801C03801C03801C0380380700380700380700380E1870 -0E30700E30701C60700C60E00FC060078015207D9F17>I<006000F000F000E000000000 -000000000000000000000F001F80318031C063806380C3800700070007000E000E000E00 -1C301C601C6038C018C01F800F000C1F7D9E0E>I<0001800003C00003C0000380000000 -000000000000000000000000000000000000003C00007E0000C700018700030700030700 -060E00000E00000E00000E00001C00001C00001C00001C00003800003800003800003800 -00700000700000700000700000E00000E00030E00079C000F380007F00003C0000122882 -9E0E>I<01E0000FE0000FC00001C00001C00001C0000380000380000380000380000700 -000700000703C00707E00E0C600E18E00E31E00E61E01CC1C01F80001F00001FC00039E0 -003870003870003838607070C07070C07070C0703980E03F00601E0013207D9F15>I<03 -C01FC01F8003800380038007000700070007000E000E000E000E001C001C001C001C0038 -003800380038007000700070007180E300E300E300E6007E003C000A207C9F0C>I<1E07 -C0F8003F1FE1FC0033B8730E0063E076070063C03C07006380380700C780780E00070070 -0E000700700E000700700E000E00E01C000E00E01C000E00E01C000E00E038601C01C038 -C01C01C038C01C01C071801C01C031803803803F001801801E0023147D9325>I<1E07C0 -3F1FE033B87063E07063C038638038C780700700700700700700700E00E00E00E00E00E0 -0E01C31C01C61C01C61C038C1C018C3801F81800F018147D931A>I<007C0001FF000383 -800F01C01E01C01C01E03C01E07801E07801E07801E0F003C0F003C0F003C0F00780F007 -00700F00701E003838001FF00007C00013147C9317>I<01C1E007E7F8067E3C0C7C1C0C -781E0C701E18E01E00E01E00E01E00E01E01C03C01C03C01C03C01C07803C07803C07003 -C0E003E3C0077F80071E000700000700000E00000E00000E00000E00001C0000FFC000FF -8000171D809317>I<0E0F003F3F8033F1C063C1C063C3C06383C0C78380070000070000 -0700000E00000E00000E00000E00001C00001C00001C00001C000038000018000012147D -9313>114 D<00FC03FE07070E0F0E0F0E0E1E000F800FF007F803FC003E001E701EF01C -F01CE03860703FE01F8010147D9313>I<018001C0038003800380038007000700FFF0FF -F00E000E000E000E001C001C001C001C0038003800380038307060706070C071803F001E -000C1C7C9B0F>I<0F00601F80703180E031C0E06380E06380E0C381C00701C00701C007 -01C00E03800E03800E03800E038C0E07180E07180E0F180E1F3007F3F003E1C016147D93 -18>I<0F01C01F83C03183E031C1E06380E06380E0C380C00700C00700C00700C00E0180 -0E01800E01800E03000E03000E06000E06000F0C0007F80001E00013147D9315>I<0F00 -60E01F8071E03180E1F031C0E0F06380E0706380E070C381C0600701C0600701C0600701 -C0600E0380C00E0380C00E0380C00E0381800E0381800E0781800E078300070F860007F9 -FC0001F0F8001C147D931E>I<0787800FCFC018F8E03070E06071E06071E0C0E1C000E0 -0000E00000E00001C00001C00001C00071C060F380C0F380C0E38180C7C3007CFE00387C -0013147D9315>I<0F00601F80703180E031C0E06380E06380E0C381C00701C00701C007 -01C00E03800E03800E03800E03800E07000E07000E0F000E1F0007FE0003EE00000E0000 -0E00001C00781C0078380070700060E0003FC0001F0000141D7D9316>I -E /Fo 77 123 df<001FC1F0007FF7F801F07E7C03C0FC7C0780FC7C0F00F8380F007800 -0F0078000F0078000F0078000F0078000F007800FFFFFF80FFFFFF800F0078000F007800 -0F0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F007800 -0F0078000F0078000F0078000F0078000F0078007FE3FF807FE3FF801E20809F1B>11 -D<001F8000FFC001E0E003C0F00781F00F01F00F00E00F00000F00000F00000F00000F00 -00FFFFF0FFFFF00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00 -F00F00F00F00F00F00F00F00F00F00F00F00F07FC3FE7FC3FE1720809F19>I<001FB000 -FFF001E1F003C1F00781F00F00F00F00F00F00F00F00F00F00F00F00F00F00F0FFFFF0FF -FFF00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F -00F00F00F00F00F00F00F00F00F07FE7FE7FE7FE1720809F19>I<001FC0FC00007FE7FE -0001F07F070003C0FE07800780FC0F800F00F80F800F007807000F007800000F00780000 -0F007800000F007800000F00780000FFFFFFFF80FFFFFFFF800F007807800F007807800F -007807800F007807800F007807800F007807800F007807800F007807800F007807800F00 -7807800F007807800F007807800F007807800F007807800F007807800F007807807FE3FF -3FF07FE3FF3FF02420809F26>I<070F1F1E3C78F0E0400809779F17>19 -D<7038F87CFC7EFC7E7C3E0C060C060C06180C180C381C3018603040200F0E7F9F17>34 -D<70F8FCFC7C0C0C0C181838306040060E7C9F0D>39 D<006000C001800380070006000E -001C001C003C003800380078007000700070007000F000F000F000F000F000F000F000F0 -00F000F000F000F00070007000700070007800380038003C001C001C000E000600070003 -80018000C000600B2E7CA112>I<C0006000300038001C000C000E000700070007800380 -038003C001C001C001C001C001E001E001E001E001E001E001E001E001E001E001E001E0 -01C001C001C001C003C0038003800780070007000E000C001C00380030006000C0000B2E -7EA112>I<00030000000300000003000000030000000300000003000000030000000300 -0000030000000300000003000000030000000300000003000000030000FFFFFFFCFFFFFF -FC0003000000030000000300000003000000030000000300000003000000030000000300 -000003000000030000000300000003000000030000000300001E207E9A23>43 -D<70F8F8F878181818183030606040050E7C840D>I<FFF0FFF0FFF00C03808B0F>I<70F8 -F8F87005057C840D>I<0000400000C00001800001800001800003000003000003000006 -00000600000C00000C00000C000018000018000018000030000030000060000060000060 -0000C00000C00000C0000180000180000180000300000300000600000600000600000C00 -000C00000C0000180000180000300000300000300000600000600000600000C00000C000 -00122D7EA117>I<03F0000FFC001E1E001C0E00380700780780700380700380700380F0 -03C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F0 -03C07003807003807003807807803807001C0E001E1E000FFC0003F000121F7E9D17>I< -00C001C00FC0FFC0F3C003C003C003C003C003C003C003C003C003C003C003C003C003C0 -03C003C003C003C003C003C003C003C003C003C07FFF7FFF101E7D9D17>I<07F0000FFC -00383E00700F00600F80F80780FC07C0FC07C0FC03C07803C03003C00007C00007800007 -80000F00001E00001C0000380000700000E00001C0000380000300C00600C00C00C01801 -C03FFF807FFF80FFFF80FFFF80121E7E9D17>I<03F0000FFC001C1E00300F00780F807C -0F807C07807C0F803C0F80000F00000F00001E00007C0007F00007F000003C00000E0000 -0F000007800007800007C03007C07807C0FC07C0FC07C0FC0780780F80700F003C1E001F -FC0007F000121F7E9D17>I<000700000700000F00001F00001F00003F00007F0000EF00 -00CF0001CF00038F00030F00070F000E0F000C0F00180F00380F00300F00600F00E00F00 -FFFFF0FFFFF0000F00000F00000F00000F00000F00000F0000FFF000FFF0141E7F9D17> -I<3003003FFF003FFE003FF8003FE00030000030000030000030000030000030000031F0 -0037FC003E1E00380F00380F003007800007800007C00007C00007C07807C0F807C0F807 -C0F80780F00780600F00700E00383C001FF80007E000121F7E9D17>I<007C0001FE0007 -83000E07800C0F801C0F80380700380000780000700000700000F1F800F3FE00F40E00F8 -0700F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003C070038038038038 -07001C07000E1E0007FC0001F000121F7E9D17>I<6000007FFFE07FFFE07FFFC07FFFC0 -E00180C00300C00300C00600000C0000180000180000300000700000600000E00000E000 -01E00001C00001C00003C00003C00003C00003C00007C00007C00007C00007C00007C000 -07C000038000131F7E9D17>I<03F0000FFC001C1E003807003007007003807003807003 -807803807C07007F07003F8E001FFC000FF80007FC0007FE001EFF00387F80701F80700F -C0E003C0E003C0E001C0E001C0E001C0F001807003803807001E0E000FFC0003F000121F -7E9D17>I<03F00007F8001E1C00380E00380700700700700380F00380F00380F003C0F0 -03C0F003C0F003C0F003C07007C07007C03807C01C0BC01FF3C007E3C000038000038000 -07800007003807007C0E007C0E00781C003078001FF0000FC000121F7E9D17>I<70F8F8 -F8700000000000000000000070F8F8F87005147C930D>I<70F8F8F87000000000000000 -00000070F8F8F878181818183030606040051D7C930D>I<FFFFFFFCFFFFFFFC00000000 -00000000000000000000000000000000000000000000000000000000FFFFFFFCFFFFFFFC -1E0C7E9023>61 D<0003800000038000000380000007C0000007C0000007C000000FE000 -000FE000000FE0000019F0000019F0000019F0000030F8000030F8000030F80000607C00 -00607C0000607C0000C03E0000C03E0000C03E0001FFFF0001FFFF0001801F0003000F80 -03000F8003000F80060007C0060007C01F0007E0FFC03FFEFFC03FFE1F207F9F22>65 -D<FFFFE000FFFFF8000F803E000F801E000F801F000F800F800F800F800F800F800F800F -800F800F800F800F000F801F000F803E000F807C000FFFF8000FFFFC000F801F000F800F -800F8007C00F8003C00F8003E00F8003E00F8003E00F8003E00F8003E00F8007C00F8007 -C00F800F800F803F00FFFFFE00FFFFF8001B1F7E9E20>I<000FE010007FF83000F80E70 -03E00370078001F00F0000F01F0000F01E0000703C0000703C0000707C00003078000030 -F8000030F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000 -780000307C0000303C0000303C0000301E0000601F0000600F0000C00780018003E00300 -00F80E00007FFC00000FE0001C217E9F21>I<FFFFF800FFFFFE0007C01F8007C007C007 -C001E007C000F007C000F007C0007807C0007807C0007C07C0003C07C0003C07C0003E07 -C0003E07C0003E07C0003E07C0003E07C0003E07C0003E07C0003E07C0003C07C0003C07 -C0007C07C0007807C000F807C000F007C001E007C007C007C01F80FFFFFE00FFFFF8001F -1F7F9E23>I<FFFFFF80FFFFFF800F800F800F8003800F8003800F8001800F8001C00F80 -00C00F8000C00F80C0C00F80C0C00F80C0000F80C0000F81C0000FFFC0000FFFC0000F81 -C0000F80C0000F80C0000F80C0600F80C0600F8000600F8000C00F8000C00F8000C00F80 -01C00F8001C00F8003C00F800F80FFFFFF80FFFFFF801B1F7E9E1F>I<FFFFFF80FFFFFF -8007C00F8007C0038007C0018007C0018007C001C007C000C007C000C007C060C007C060 -C007C0600007C0600007C0E00007FFE00007FFE00007C0E00007C0600007C0600007C060 -0007C0600007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C000 -00FFFF0000FFFF00001A1F7F9E1E>I<000FE010007FF83000F80E7003E00370078001F0 -0F0000F01F0000F01E0000703C0000703C0000707C00003078000030F8000030F8000000 -F8000000F8000000F8000000F8000000F8000000F8007FFEF8007FFE780001F07C0001F0 -3C0001F03C0001F01E0001F01F0001F00F0001F007C001F003E003F000FC0E70007FFC10 -000FF0001F217E9F24>I<FFF8FFF8FFF8FFF80F800F800F800F800F800F800F800F800F -800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800FFFFF800F -FFFF800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F -800F800F800F800F800F800F800F800F800F80FFF8FFF8FFF8FFF81D1F7E9E22>I<FFF8 -FFF80F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F80 -0F800F800F800F800F800F800F800F800F800F80FFF8FFF80D1F7F9E10>I<07FFE007FF -E0001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F -00001F00001F00001F00001F00001F00001F00001F00001F00001F00781F00FC1F00FC1F -00FC1F00F83E00703E00387C001FF0000FC0001320809E17>I<FFFC00FFFC000F80000F -80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F -80000F80000F80000F80000F80060F80060F80060F80060F800E0F800E0F800C0F801C0F -803C0F80FCFFFFFCFFFFFC171F7E9E1C>76 D<FFC0000FFEFFE0001FFE07E0001FC007E0 -001FC006F00037C006F00037C006F00037C006780067C006780067C006780067C0063C00 -C7C0063C00C7C0063C00C7C0061E0187C0061E0187C0060F0307C0060F0307C0060F0307 -C006078607C006078607C006078607C00603CC07C00603CC07C00603CC07C00601F807C0 -0601F807C00601F807C00600F007C00F00F007C0FFF0F0FFFEFFF060FFFE271F7F9E2A> -I<FF801FF8FFC01FF80FE003C00FE001800DF001800DF001800CF801800CFC01800C7C01 -800C3E01800C3F01800C1F01800C0F81800C0FC1800C07C1800C07E1800C03E1800C01F1 -800C01F9800C00F9800C007D800C007F800C003F800C001F800C001F800C000F800C000F -800C0007801E000380FFC00380FFC001801D1F7E9E22>I<001FE000007FF80001F03E00 -03C00F00078007800F0003C01E0001E03E0001F03C0000F07C0000F87C0000F878000078 -F800007CF800007CF800007CF800007CF800007CF800007CF800007CF800007CF800007C -7C0000F87C0000F87C0000F83C0000F03E0001F01E0001E00F0003C00780078003C00F00 -01F03E00007FF800001FE0001E217E9F23>I<FFFFE000FFFFF8000F803E000F801F000F -800F800F8007800F8007C00F8007C00F8007C00F8007C00F8007C00F8007800F800F800F -801F000F803E000FFFF8000FFFE0000F8000000F8000000F8000000F8000000F8000000F -8000000F8000000F8000000F8000000F8000000F8000000F800000FFF80000FFF800001A -1F7E9E1F>I<FFFF8000FFFFF0000F807C000F803E000F801F000F800F000F800F800F80 -0F800F800F800F800F800F800F000F801F000F803E000F807C000FFFF0000FFFE0000F81 -F8000F807C000F807C000F803E000F803E000F803E000F803E000F803E000F803E000F80 -3E000F803E0C0F803E0C0F801F0CFFF80F18FFF807F8000001F01E207E9E21>82 -D<03F0400FFCC01E0FC03807C07803C07001C0F001C0F000C0F000C0F000C0F80000FC00 -007F00007FF0003FFE001FFF000FFF8003FFC0007FE00007E00003F00001F00000F0C000 -F0C000F0C000F0E000E0E000E0F001E0F801C0FE0780C7FF0081FC0014217E9F19>I<7F -FFFFE07FFFFFE07C0F81E0700F80E0600F8060600F8060E00F8070C00F8030C00F8030C0 -0F8030C00F8030000F8000000F8000000F8000000F8000000F8000000F8000000F800000 -0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800000 -0F8000000F800003FFFE0003FFFE001C1F7E9E21>I<FFF81FF8FFF81FF80F8003C00F80 -01800F8001800F8001800F8001800F8001800F8001800F8001800F8001800F8001800F80 -01800F8001800F8001800F8001800F8001800F8001800F8001800F8001800F8001800F80 -01800F8001800F800180078003000780030003C0030003C0060001E00C0000F83800003F -F000000FC0001D207E9E22>I<FFF807FEFFF807FE0F8000F00F8000E007C000C007C000 -C007C000C003E0018003E0018003F0018001F0030001F0030001F8070000F8060000F806 -0000FC0E00007C0C00007C0C00003E1800003E1800003E1800001F3000001F3000001FB0 -00000FE000000FE000000FE0000007C0000007C0000003800000038000000380001F207F -9E22>I<FFF8FFF83FF0FFF8FFF83FF01F800F8007800F800F8003000F8007C003000FC0 -07C0070007C007C0060007C00FE0060007E00FE00E0003E00FE00C0003E01FF00C0003E0 -19F00C0001F019F0180001F019F0180001F030F8180000F830F8300000F830F8300000F8 -607C3000007C607C6000007C607C6000007CC03E6000007EC03EE000003EC03EC000003F -C03FC000003F801FC000001F801F8000001F801F8000001F000F8000000F000F0000000F -000F0000000E000700000006000600002C207F9E2F>I<FFFFC0C0C0C0C0C0C0C0C0C0C0 -C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FFFF082D7CA1 -0D>91 D<0804180C3018703860306030C060C060C060F87CFC7EFC7E7C3E381C0F0E7A9F -17>I<FFFF03030303030303030303030303030303030303030303030303030303030303 -03030303030303030303FFFF082D80A10D>I<0FE0003FF8007C3C007C1E007C0F00380F -00000F00000F0001FF000FCF003E0F00780F00780F00F00F30F00F30F00F30F01F30783F -F03FC7E00F83C014147E9317>97 D<1E0000FE0000FE00001E00001E00001E00001E0000 -1E00001E00001E00001E00001E00001E3F001EFFC01FC1E01F00F01E00701E00781E0038 -1E003C1E003C1E003C1E003C1E003C1E003C1E00381E00781E00701F00F01D83E01CFF80 -183E0016207F9F19>I<01F80007FE001E1F003C1F00381F00780E00700000F00000F000 -00F00000F00000F00000F000007800007800003C01803C03801F070007FE0001F8001114 -7F9314>I<0001E0000FE0000FE00001E00001E00001E00001E00001E00001E00001E000 -01E00001E003F1E007FDE01F07E03C03E03801E07801E07001E0F001E0F001E0F001E0F0 -01E0F001E0F001E07001E07801E03801E03C03E01E0FE00FFDFC03F1FC16207F9F19>I< -03F0000FFC001E1E003C0F00380700780700700380F00380FFFF80FFFF80F00000F00000 -F000007000007800003801803C03801F070007FE0001F80011147F9314>I<003E0000FF -0003CF80078F80078F800F07000F00000F00000F00000F00000F00000F0000FFF000FFF0 -000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00 -000F00000F00000F00000F00007FF0007FF0001120809F0E>I<0000E003E3F00FFE701C -1C70380E60780F00780F00780F00780F00780F00380E001C1C001FF80033E00020000030 -00003000003FFE003FFF801FFFC01FFFE07001E06000F0E00070E00070E000707000E078 -01E03E07C00FFF0003FC00141F7F9417>I<1E0000FE0000FE00001E00001E00001E0000 -1E00001E00001E00001E00001E00001E00001E1F001E7F801EC3C01F81E01F01E01E01E0 -1E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E0 -FFC7FCFFC7FC16207F9F19>I<1C003E003E003E001C000000000000000000000000001E -00FE00FE001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E00FF -C0FFC00A1F7F9E0D>I<007000F800F800F80070000000000000000000000000007807F8 -07F800F80078007800780078007800780078007800780078007800780078007800780078 -0078007800787078F878F8F0F9E07FC03F000D28839E0E>I<1E0000FE0000FE00001E00 -001E00001E00001E00001E00001E00001E00001E00001E00001E1FF01E1FF01E0F801E0E -001E0C001E18001E30001E70001EF0001FF8001F78001E3C001E3E001E1E001E1F001E0F -801E07801E07C0FFCFF8FFCFF815207F9F18>I<1E00FE00FE001E001E001E001E001E00 -1E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E00 -1E001E001E001E00FFC0FFC00A207F9F0D>I<1E1F80FC00FE7FC3FE00FEC1E60F001F80 -FC07801F00F807801E00F007801E00F007801E00F007801E00F007801E00F007801E00F0 -07801E00F007801E00F007801E00F007801E00F007801E00F007801E00F007801E00F007 -80FFC7FE3FF0FFC7FE3FF024147F9327>I<1E1F00FE7F80FEC3C01F81E01F01E01E01E0 -1E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E0 -FFC7FCFFC7FC16147F9319>I<01F80007FE001E07803C03C03801C07000E07000E0F000 -F0F000F0F000F0F000F0F000F0F000F07000E07801E03801C03C03C01E078007FE0001F8 -0014147F9317>I<1E3F00FEFFC0FFC3E01F00F01E00701E00781E00781E003C1E003C1E -003C1E003C1E003C1E003C1E00781E00781E00F01F00F01F83E01EFF801E3E001E00001E -00001E00001E00001E00001E00001E0000FFC000FFC000161D7F9319>I<01F06007FCE0 -1F0EE03C03E03C03E07801E07801E0F001E0F001E0F001E0F001E0F001E0F001E07801E0 -7801E03803E03C03E01F0FE00FFDE003F1E00001E00001E00001E00001E00001E00001E0 -0001E0000FFC000FFC161D7F9318>I<1E78FEFCFF9E1F1E1F0C1F001E001E001E001E00 -1E001E001E001E001E001E001E001E00FFE0FFE00F147F9312>I<0FC83FF870386018E0 -18E018F000FF807FE03FF81FFC01FC003EC00EC00EE00EE00CF83CDFF887E00F147F9312 ->I<06000600060006000E000E001E003E00FFF8FFF81E001E001E001E001E001E001E00 -1E001E001E001E0C1E0C1E0C1E0C1E0C0F1807F003E00E1C7F9B12>I<1E01E0FE0FE0FE -0FE01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E -01E01E03E01E03E00E0DE007F9FC03F1FC16147F9319>I<FFC7F8FFC7F81E01E01F01C0 -0F01800F018007830007830007830003C60003C60003C60001EC0001EC0001FC0000F800 -00F80000700000700000700015147F9318>I<FF9FF3FCFF9FF3FC1E03C0F01E03C0601F -03C0E00F07C0C00F07E0C00F87E1C0078CE180078CF18007CCF38003D8730003D87B0003 -F87F0001F03E0001F03E0001F03E0000E01C0000E01C0000E01C001E147F9321>I<7FE7 -FC7FE7FC0F83E007838003C30003E70001EE0000FC00007800007800003C00007E0000FE -0001CF000187800387800703C00F03E0FF87FEFF87FE1714809318>I<FFC7F8FFC7F81E -01E01F01C00F01800F018007830007830007830003C60003C60003C60001EC0001EC0001 -FC0000F80000F80000700000700000700000600000600000600070C000F8C000C18000E3 -80007F00003C0000151D7F9318>I<7FFF7FFF781E703E603C607860F861F001E003E007 -C007830F831F031E073C067C06781EFFFEFFFE10147F9314>I E -/Fp 43 122 df<0001FF0000001FFFC000007F81E00000FC01E00001F807F00003F807F0 -0007F007F00007F007F00007F007F00007F007F00007F001C00007F000000007F0000000 -07F000000007F03FF800FFFFFFF800FFFFFFF800FFFFFFF80007F003F80007F003F80007 -F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007F0 -03F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003 -F80007F003F80007F003F80007F003F80007F003F8007FFF3FFF807FFF3FFF807FFF3FFF -80212A7FA925>12 D<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE00 +TeXDict begin 40258431 52099146 1000 600 600 (manual.dvi) +@start /Fa 7 115 df<000000FFF00000000FFFFF8000003FFFFFF00000FFFFFFFC0001 +FFFFFFFC0007FFFFFFFC000FFF803FF8001FFC0003F8003FF00000F8007FC000003800FF +8000001801FF0000000003FE0000000003FC0000000007FC0000000007F8000000000FF0 +000000000FF0000000001FE0000000001FE0000000003FC0000000003FC0000000003FC0 +000000007F80000000007F80000000007F80000000007F8000000000FF0000000000FF00 +00000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00 +00000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000000007F80 +000000007F80000000007F80000000007F80000000003FC0000000003FC0000000003FC0 +000000001FE0000000001FE0000000000FF0000000000FF00000000007F80000000007FC +0000000003FC0000000003FE0000000001FF0000000400FF8000000C007FC000003C003F +F000007C001FFC0001FE000FFF801FFE0007FFFFFFFE0001FFFFFFFC0000FFFFFFF00000 +3FFFFFC000000FFFFF00000000FFF0002F437AC03A>67 D<000000FFF000000007FFFF00 +00003FFFFFE00000FFFFFFF80001FFFFFFFE0007FFFFFFFE000FFF803FFE001FFC0003FC +003FF00000FC007FE000003C00FF8000001C01FF0000000C01FE0000000003FC00000000 +07FC0000000007F8000000000FF0000000000FF0000000001FE0000000001FE000000000 +3FC0000000003FC0000000003FC0000000007F80000000007F80000000007F8000000000 +7F8000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000 +FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF000007FFFF +FF000007FFFFFF000007FFFF7F800007FFFF7F800007FFFF7F800007FFFF7F800000007F +3FC00000007F3FC00000007F3FC00000007F1FE00000007F1FE00000007F0FF00000007F +0FF00000007F07F80000007F07FC0000007F03FC0000007F01FE0000007F01FF0000007F +00FF8000007F007FE000007F003FF000007F001FFC0001FF000FFF801FFF0007FFFFFFFF +0001FFFFFFFF0000FFFFFFFC00003FFFFFF0000007FFFF00000000FFF00030437AC03D> +71 D<FFFFFFFFFFFFFEFFFFFFFFFFFFFEFFFFFFFFFFFFFEFFFFFFFFFFFFFEFFFFFFFFFF +FFFEFFFFFFFFFFFFFE000000FF000000000000FF000000000000FF000000000000FF0000 +00000000FF000000000000FF000000000000FF000000000000FF000000000000FF000000 +000000FF000000000000FF000000000000FF000000000000FF000000000000FF00000000 +0000FF000000000000FF000000000000FF000000000000FF000000000000FF0000000000 +00FF000000000000FF000000000000FF000000000000FF000000000000FF000000000000 +FF000000000000FF000000000000FF000000000000FF000000000000FF000000000000FF +000000000000FF000000000000FF000000000000FF000000000000FF000000000000FF00 +0000000000FF000000000000FF000000000000FF000000000000FF000000000000FF0000 +00000000FF000000000000FF000000000000FF000000000000FF000000000000FF000000 +000000FF000000000000FF000000000000FF000000000000FF000000000000FF00000000 +0000FF000000000000FF000000000000FF000000000000FF000000000000FF0000000000 +00FF000000373E7DBD3E>84 D<000FF80000FFFF0003FFFF800FFFFFE01FFFFFF01FFFFF +F01FF00FF81F8003FC1E0001FC180001FE100000FE000000FF0000007F0000007F000000 +7F0000007F0000007F0000007F0000007F00007FFF000FFFFF007FFFFF01FFFFFF07FFFF +FF0FFFF07F3FFC007F3FC0007F7F00007FFE00007FFC00007FFC00007FFC00007FFC0000 +FFFE0000FFFE0001FF7F8007FF7FE01FFF3FFFFFFF3FFFFFFF1FFFFF7F0FFFFC7F07FFF0 +7F01FF0000202B7CA92C>97 D<0003F80000001FFF0000007FFFC00000FFFFE00001FFFF +F00003FFFFF80007FE07F8000FF801FC000FE000FE001FC0007E003FC0003E003F80003F +003F00001F007F00001F007E00001F007E00000F80FFFFFFFF80FFFFFFFF80FFFFFFFF80 +FFFFFFFF80FFFFFFFF80FFFFFFFF80FC00000000FC00000000FC00000000FE000000007E +000000007E000000007F000000007F000000003F800000003F800000001FC00000001FE0 +0000800FF000038007FC001F8007FF00FF8003FFFFFF8001FFFFFF80007FFFFF00003FFF +FC00000FFFE0000001FF0000212B7DA928>101 D<00001FF00000FFFC0001FFFC0007FF +FC000FFFFC000FFFFC001FE03C003F8004003F0000007F0000007E000000FE000000FE00 +0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00 +0000FE000000FE0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000FE00 +0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00 +0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00 +0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00 +0000FE000000FE000000FE000000FE000000FE000000FE00001E407FBF1C>I<FC007CFC +03FCFC0FFCFC1FFCFC3FFCFC7FFCFCFFC0FDFE00FFF800FFF000FFE000FFC000FFC000FF +8000FF8000FF0000FF0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE +0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE +0000FE0000FE0000FE0000162979A81F>114 D E /Fb 7 121 df<001FFC00000000FFFF +80000003FFFFE0000007FFFFF000000FFFFFFC00001FFFFFFE00001FF007FF00001FE001 +FF00001FE000FF80001FE0003F80000FC0003FC0000780001FC0000000001FE000000000 +0FE0000000000FE0000000000FE0000000000FE0000000000FE00000000FFFE0000001FF +FFE000001FFFFFE000007FFFFFE00001FFFFFFE00007FFFF0FE0000FFFC00FE0001FFC00 +0FE0003FF0000FE0007FC0000FE0007F80000FE000FF00000FE000FE00000FE000FE0000 +0FE000FE00000FE000FE00000FE000FE00000FE000FF00001FE0007F00001FE0007F8000 +7FE0003FE000FFF0003FF807FFFFF01FFFFFFFFFF80FFFFFFFFFF807FFFFF3FFF803FFFF +C1FFF800FFFF003FF0001FF00000002D2E7BAC33>97 D<0000FF80000007FFF000001FFF +FC00003FFFFE0000FFFFFF0001FFFFFF8003FF80FFC007FE003FE007F8000FF00FF00007 +F01FE00007F81FC00003F83FC00003FC3F800001FC7F800001FC7F000001FC7F000001FE +7F000000FEFF000000FEFE000000FEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFF +FFFFFFFEFFFFFFFFFCFE00000000FF000000007F000000007F000000007F000000003F80 +0000003F8000007C1FC00000FE1FE00000FE0FF00000FE0FF80001FE07FC0003FC03FF00 +0FFC01FFC03FF800FFFFFFF0007FFFFFE0003FFFFFC0000FFFFF000003FFFC0000007FE0 +00272E7BAC33>101 D<000001FF00003FFC07FFC0007FFE1FFFF000FFFE7FFFF800FFFE +FFFFF8007FFFFFFFFC003FFFFF07FE0000FFF801FE0000FFF000FE0000FFE000FF0000FF +C0007F0000FF80007F0000FF80007F0000FF00007F0000FF00007F0000FF00007F0000FE +00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE +00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE +00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE +00007F0000FE00007F0000FE00007F0000FE00007F003FFFF80FFFFC7FFFFC1FFFFEFFFF +FE3FFFFFFFFFFE3FFFFF7FFFFC1FFFFE3FFFF80FFFFC302C7FAB33>110 +D<00000003FE007FFF801FFF80FFFFC07FFFE0FFFFC1FFFFE0FFFFC3FFFFF0FFFFC7FFFF +F07FFFCFFE0FF0001FDFF00FF0001FFFC007E0001FFF8003C0001FFF000000001FFE0000 +00001FFC000000001FF8000000001FF8000000001FF0000000001FF0000000001FE00000 +00001FE0000000001FE0000000001FC0000000001FC0000000001FC0000000001FC00000 +00001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00000 +00001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00000 +00001FC0000000001FC00000007FFFFFFE0000FFFFFFFF0000FFFFFFFF0000FFFFFFFF00 +00FFFFFFFF00007FFFFFFE00002C2C7DAB33>114 D<0003C00000000007E0000000000F +E0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000F +E0000000000FE0000000000FE0000000000FE00000003FFFFFFFFC007FFFFFFFFE00FFFF +FFFFFE00FFFFFFFFFE00FFFFFFFFFE007FFFFFFFFC00000FE0000000000FE0000000000F +E0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000F +E0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000F +E0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000F +E0000000000FE0001F00000FE0003F80000FE0003F80000FE0003F80000FE0003F80000F +E0003F80000FE0007F80000FF0007F000007F000FF000007F801FF000007FE07FE000003 +FFFFFC000001FFFFF8000000FFFFF00000007FFFE00000001FFF8000000007FC00002938 +7EB633>116 D<3FFFC00FFFF07FFFE01FFFF8FFFFF03FFFFCFFFFF03FFFFC7FFFE01FFF +F83FFFC00FFFF001F800007E0001FC0000FE0000FC0000FC0000FC0000FC0000FE0001FC +00007E0001F800007E0001F800007F0003F800003F0003F000003F0003F000003F8007F0 +00001F8007E000001F8007E000001FC00FE000000FC00FC000000FC00FC000000FC00FC0 +000007E01F80000007E01F80000007E01F80000007F03F80000003F03F00000003F03F00 +000003F87F00000001F87E00000001F87E00000001FCFE00000000FCFC00000000FCFC00 +000000FFFC000000007FF8000000007FF8000000007FF8000000003FF0000000003FF000 +0000001FE0000000000FC000002E2B7EAA33>118 D<3FFFC07FFF807FFFE0FFFFC0FFFF +F1FFFFE0FFFFF1FFFFE07FFFE0FFFFC03FFFC07FFF8000FE000FE000007F001FC000003F +801FC000003F803F8000001FC07F0000000FE07E00000007F0FE00000007F1FC00000003 +FBF800000001FFF800000000FFF000000000FFE0000000007FC0000000003FC000000000 +1F80000000003F80000000003FC0000000007FE000000000FFE000000001FBF000000001 +F9F800000003F1FC00000007E0FC00000007E07E0000000FC07F0000001FC03F8000003F +801F8000003F001FC000007F000FE00000FE0007F00001FC0003F0007FFFC03FFFE0FFFF +E07FFFF0FFFFE07FFFF0FFFFE07FFFF0FFFFE07FFFF07FFFC03FFFE02C2B7DAA33>120 +D E /Fc 1 43 df<000F0000001F8000001F8000001F8000001F8000001F8000001F8000 +781F81E0FE1F87F0FF1F8FF0FFDFBFF07FFFFFE03FFFFFC00FFFFF0003FFFC0000FFF000 +00FFF00003FFFC000FFFFF003FFFFFC07FFFFFE0FFDFBFF0FF1F8FF0FE1F87F0781F81E0 +001F8000001F8000001F8000001F8000001F8000001F8000000F00001C207BA627>42 +D E /Fd 1 122 df<01E0000007F8000E0E3C001F1C3E003F383E003E303E003E703E00 +3E607E007EE07C007CC07C007CC0FC007C80F800FC00F800F801F800F801F000F801F001 +F803F001F003E001F003E001F003E003F007E003E007C003E007C003E007C007E007C007 +C003C00FC003E01FC003E03FC001F07F80007FEF80001F8F8000001F8000001F0000001F +003E003E003E003E007E007C007E00F8007C01F0007003E0003007C0003C0F80000FFE00 +0003F00000202C7E9D23>121 D E /Fe 3 121 df<1E007F80FF80FFC0FFC0FFE0FFE0FF +E07FE01E60006000600060006000E000C000C000C001C001800380030007000E001C0018 +00380030000B1C798919>59 D<01F0000FF0000007FC003FFE00000F1F00F01F00000E1F +03C00F80001E0F87000FC0001C0F8E0007C0003C0FDC0007E000380FF80007E000380FF0 +0007E000781FF00007E000701FE00007E000701FC00007E000701FC00007E000F01F8000 +0FE000F03F80000FC000003F00000FC000003F00000FC000003F00001FC000007F00001F +8000007E00001F8000007E00003F8000007E00003F000000FE00003F000000FC00007F00 +0000FC00007E000000FC00007E000001FC0000FE038001F80000FC038001F80000FC0380 +01F80001FC078003F80001F8070003F00001F8070003F00001F80F0003F00001F00E0007 +F00001F01E0007E00001F01C0007E00001F0380007E00001F078000FE00000F8F0000FC0 +00007FC000038000001F000031297EA737>110 D<0001F8003F000007FE00FFE0001E0F +83C0F0003807C780F8007003CF03F800E003FE03F801C003FC07F803C003FC07F8038003 +F807F8070003F807F0070003F801C00E0003F000000E0003F000001E0007F000001E0007 +F00000000007E00000000007E0000000000FE0000000000FC0000000000FC0000000000F +C0000000001FC0000000001F80000000001F80000000001F80000000003F80000000003F +0001C000003F0001C000003F0001C000007F0003C01E007F0003803F007E0007807F80FE +0007007F80FE000F00FF81FE001E00FF01DF001C00FE03DF0038007C078F80F0003C0F07 +C1E0001FFC03FF800007F0007E00002D297EA734>120 D E /Ff +51 121 df<0000000FFF0000000001FFFFC00000000FFFFFF00000007FFFFFF8000001FF +F803FC000003FFC000FE00000FFF0003FE00001FFE0007FF00003FFC000FFF00003FF800 +0FFF00007FF0000FFF00007FF0001FFF8000FFF0000FFF0000FFE0000FFF0000FFE0000F +FF0000FFE0000FFF0000FFE00007FE0000FFE00001F80000FFE00000000000FFE0000000 +0000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE000000000 +00FFE001FFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FF +FFFFFFFFFF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FF +E00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE0 +0003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE000 +03FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003 +FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF +8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF80 +00FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF807FFFFFC1FFFFFF7F +FFFFC1FFFFFF7FFFFFC1FFFFFF7FFFFFC1FFFFFF7FFFFFC1FFFFFF38467EC53E>12 +D<07C01FF03FF87FFCFFFEFFFEFFFEFFFEFFFEFFFEFFFE7FFC3FF81FF007C00F0F788E1F +>46 D<0000000001C00000000003E00000000007E00000000007E0000000000FE0000000 +000FC0000000001FC0000000001F80000000001F80000000003F80000000003F00000000 +007F00000000007E00000000007E0000000000FE0000000000FC0000000001FC00000000 +01F80000000001F80000000003F80000000003F00000000003F00000000007F000000000 +07E0000000000FE0000000000FC0000000000FC0000000001FC0000000001F8000000000 +3F80000000003F00000000003F00000000007F00000000007E0000000000FE0000000000 +FC0000000000FC0000000001FC0000000001F80000000003F80000000003F00000000003 +F00000000007F00000000007E0000000000FE0000000000FC0000000000FC0000000001F +C0000000001F80000000003F80000000003F00000000003F00000000007F00000000007E +00000000007E0000000000FE0000000000FC0000000001FC0000000001F80000000001F8 +0000000003F80000000003F00000000007F00000000007E00000000007E0000000000FE0 +000000000FC0000000001FC0000000001F80000000001F80000000003F80000000003F00 +000000007F00000000007E00000000007E0000000000FE0000000000FC0000000001FC00 +00000001F80000000001F80000000003F80000000003F00000000003F00000000007F000 +00000007E0000000000FE0000000000FC0000000000FC0000000001FC0000000001F8000 +0000003F80000000003F00000000003F00000000007F00000000007E0000000000FE0000 +000000FC0000000000FC0000000000F800000000007800000000002B647ACA38>I<0000 +3FF800000001FFFF0000000FFFFFE000003FFFFFF800007FF01FFC0000FFC007FE0001FF +0001FF0003FE0000FF8007FE0000FFC007FC00007FC00FFC00007FE00FF800003FE01FF8 +00003FF01FF800003FF03FF800003FF83FF800003FF83FF000001FF87FF000001FFC7FF0 +00001FFC7FF000001FFC7FF000001FFC7FF000001FFC7FF000001FFCFFF000001FFEFFF0 +00001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF0 +00001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF0 +00001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF0 +00001FFEFFF000001FFE7FF000001FFC7FF000001FFC7FF000001FFC7FF000001FFC7FF0 +00001FFC3FF800003FF83FF800003FF83FF800003FF81FF800003FF01FF800003FF00FF8 +00003FE00FFC00007FE007FC00007FC007FE0000FFC003FF0001FF8001FF8003FF0000FF +C007FE00007FF01FFC00003FFFFFF800000FFFFFE0000003FFFF800000003FF800002F42 +7CC038>I<000003C000000007C00000001FC00000007FC0000003FFC000003FFFC000FF +FFFFC000FFFFFFC000FFFFFFC000FFFFFFC000FFC3FFC0000003FFC0000003FFC0000003 +FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FF +C0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0 +000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC000 +0003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC00000 +03FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003 +FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FF +C0000003FFC0000003FFC0000003FFC000FFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFFFFFFFF +FCFFFFFFFFFC264177C038>I<0000FFE00000000FFFFE0000003FFFFF800000FFFFFFE0 +0003FFFFFFF80007FC03FFFE000FE0007FFF001F80003FFF803F00000FFFC07F000007FF +C07FC00007FFE07FF00003FFE0FFF00001FFF0FFF80001FFF0FFF80001FFF8FFF80000FF +F8FFF80000FFF8FFF80000FFF8FFF80000FFF87FF00000FFF83FE00000FFF81FC00000FF +F800000000FFF800000000FFF000000001FFF000000001FFF000000001FFE000000003FF +E000000003FFC000000007FF800000000FFF000000000FFF000000001FFC000000003FF8 +000000003FF0000000007FE000000000FFC000000001FF0000000003FE0000000007FC00 +0000000FF0000000001FE0000000003F80000000007F0000780000FE0000780001FC0000 +780003F80000F80007E00000F0000FC00000F0001F800000F0003F000000F0007C000001 +F000F8000003F001FFFFFFFFF003FFFFFFFFE007FFFFFFFFE00FFFFFFFFFE01FFFFFFFFF +E03FFFFFFFFFE07FFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFF +C0FFFFFFFFFFC02D417BC038>I<0000FFF000000007FFFF0000001FFFFFC000007FFFFF +F00000FF007FF80003F8003FFE0007E0001FFF0007E0000FFF000FF80007FF800FFE0007 +FF801FFE0007FFC01FFF0007FFC01FFF0007FFC01FFF0007FFC01FFF0007FFC01FFF0007 +FFC01FFF0007FFC00FFE0007FFC007FC0007FF8003F8000FFF800000000FFF000000001F +FF000000001FFE000000003FFC000000007FF800000000FFF000000001FFE00000000FFF +80000007FFFE00000007FFF800000007FFFF00000007FFFFC000000000FFF0000000003F +FC000000000FFE000000000FFF8000000007FF8000000003FFC000000003FFE000000003 +FFE000000001FFF000000001FFF000000001FFF800000001FFF800000001FFF80FC00001 +FFF83FF00001FFF87FF80001FFF87FF80001FFF8FFFC0001FFF8FFFC0001FFF8FFFC0001 +FFF0FFFC0001FFF0FFFC0003FFF0FFFC0003FFE07FF80003FFE07FF00007FFC07FE00007 +FFC03F80000FFF801FF0001FFF000FFE00FFFE0007FFFFFFF80001FFFFFFF000007FFFFF +C000001FFFFE00000001FFE000002D427BC038>I<000000003F0000000000003F000000 +0000007F000000000000FF000000000001FF000000000003FF000000000003FF00000000 +0007FF00000000000FFF00000000001FFF00000000003FFF00000000003FFF0000000000 +7FFF0000000000FFFF0000000001F7FF0000000003E7FF0000000007E7FF0000000007C7 +FF000000000F87FF000000001F07FF000000003E07FF000000007E07FF000000007C07FF +00000000F807FF00000001F007FF00000003E007FF00000007E007FF00000007C007FF00 +00000F8007FF0000001F0007FF0000003E0007FF0000007C0007FF0000007C0007FF0000 +00F80007FF000001F00007FF000003E00007FF000007C00007FF00000FC00007FF00000F +800007FF00001F000007FF00003E000007FF00007C000007FF0000FC000007FF0000FFFF +FFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80000000 +0FFF00000000000FFF00000000000FFF00000000000FFF00000000000FFF00000000000F +FF00000000000FFF00000000000FFF00000000000FFF00000000000FFF00000000000FFF +00000000000FFF000000007FFFFFFF8000007FFFFFFF8000007FFFFFFF8000007FFFFFFF +8000007FFFFFFF8031417DC038>I<07000000030007E000003F0007FF0007FF0007FFFF +FFFF0007FFFFFFFE0007FFFFFFFC0007FFFFFFF80007FFFFFFF00007FFFFFFE00007FFFF +FF800007FFFFFE000007FFFFFC000007FFFFE0000007FFFF00000007C00000000007C000 +00000007C00000000007C00000000007C00000000007C00000000007C00000000007C000 +00000007C00000000007C00000000007C03FF0000007C1FFFF000007C7FFFFC00007DFFF +FFF00007FFE03FFC0007FF000FFE0007FC0007FF0007F00003FF8007E00003FFC007C000 +01FFC003800001FFE000000001FFE000000000FFF000000000FFF000000000FFF0000000 +00FFF800000000FFF800000000FFF800000000FFF80F800000FFF83FE00000FFF87FF000 +00FFF8FFF00000FFF8FFF80000FFF8FFF80000FFF8FFF80000FFF8FFF80000FFF0FFF000 +00FFF0FFF00001FFF07FE00001FFE07FC00001FFE07E000003FFC03E000003FFC03F0000 +07FF801FC0000FFF000FF0001FFE0007FE00FFFC0003FFFFFFF00000FFFFFFE000003FFF +FF8000000FFFFC00000001FFC000002D427BC038>I<000001FF800000001FFFF0000000 +7FFFFC000001FFFFFF000007FF807F80000FFC001F80003FF0001FC0007FE0007FC000FF +C000FFE001FF8001FFE003FF8001FFE003FF0001FFE007FE0001FFE00FFE0001FFE00FFE +0001FFE01FFC0000FFC01FFC00007F801FFC00001E003FFC000000003FFC000000003FF8 +000000007FF8000000007FF8000000007FF807FC00007FF81FFF8000FFF87FFFE000FFF8 +FFFFF800FFF9F01FFC00FFFBC007FE00FFFF8003FF00FFFF8003FF80FFFF0001FFC0FFFE +0001FFC0FFFE0000FFE0FFFE0000FFE0FFFC0000FFF0FFFC0000FFF0FFFC0000FFF0FFFC +0000FFF8FFF80000FFF8FFF80000FFF8FFF80000FFF8FFF80000FFF87FF80000FFF87FF8 +0000FFF87FF80000FFF87FF80000FFF87FF80000FFF83FF80000FFF83FF80000FFF83FF8 +0000FFF03FFC0000FFF01FFC0000FFF01FFC0000FFF00FFC0001FFE00FFC0001FFE007FE +0001FFC007FF0003FF8003FF8003FF0001FFC007FE0000FFE01FFC00007FFFFFF800001F +FFFFF0000007FFFFC0000001FFFF000000003FF000002D427BC038>I<1E00000000001F +00000000001FFC000000001FFFFFFFFFFE1FFFFFFFFFFE1FFFFFFFFFFE1FFFFFFFFFFE3F +FFFFFFFFFE3FFFFFFFFFFC3FFFFFFFFFF83FFFFFFFFFF03FFFFFFFFFE03FFFFFFFFFC03F +FFFFFFFFC07FFFFFFFFF807E0000003F007C0000007E007C000000FC0078000000F80078 +000001F80078000003F000F8000007E000F000000FC000F000000F8000F000001F800000 +00003F00000000007E0000000000FC0000000000FC0000000001F80000000003F8000000 +0003F00000000007F0000000000FE0000000000FE0000000001FE0000000001FC0000000 +003FC0000000003FC0000000007FC0000000007F8000000000FF8000000000FF80000000 +01FF8000000001FF8000000001FF8000000003FF8000000003FF0000000003FF00000000 +03FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000000 +0FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF00000000 +0FFF000000000FFF000000000FFF000000000FFF0000000007FE0000000003FC00000000 +01F80000002F447AC238>I<00007FF000000003FFFF0000000FFFFFC000003FFFFFF000 +007F801FFC0001FC0003FE0003F80001FF0003F00000FF0007E000007F8007E000003F80 +0FC000003FC00FC000003FC01FC000001FC01FC000001FC01FE000001FC01FE000001FC0 +1FF000001FC01FF800001FC01FFE00003FC01FFF00003F801FFFC0007F801FFFF0007F00 +0FFFFC00FF000FFFFE01FE0007FFFF83FC0007FFFFE7F80003FFFFFFE00001FFFFFFC000 +00FFFFFF0000007FFFFFC000003FFFFFE000000FFFFFF800000FFFFFFC00003FFFFFFE00 +00FFFFFFFF0001FF3FFFFF8007FC0FFFFFC00FF803FFFFE01FF000FFFFE01FE0007FFFF0 +3FE0001FFFF07FC00007FFF07F800003FFF87F800000FFF8FF8000007FF8FF0000003FF8 +FF0000001FF8FF0000000FF8FF0000000FF8FF00000007F8FF00000007F8FF00000007F8 +FF80000007F07F80000007F07F8000000FF07FC000000FE03FE000001FE03FF000003FC0 +1FF800007F800FFE0001FF0007FFC00FFE0003FFFFFFFC0000FFFFFFF000003FFFFFC000 +000FFFFF00000000FFF000002D427BC038>I<00007FF000000007FFFE0000001FFFFF80 +00007FFFFFE00000FFE03FF00001FF800FF80003FF0007FC0007FE0007FE000FFC0003FF +001FFC0001FF003FFC0001FF803FFC0001FF807FF80001FFC07FF80000FFC07FF80000FF +E07FF80000FFE0FFF80000FFE0FFF80000FFF0FFF80000FFF0FFF80000FFF0FFF80000FF +F0FFF80000FFF0FFF80000FFF0FFF80000FFF8FFF80000FFF8FFF80000FFF8FFF80000FF +F8FFF80001FFF87FF80001FFF87FF80001FFF87FF80001FFF83FF80003FFF83FF80003FF +F81FFC0003FFF81FFC0007FFF80FFE000FFFF807FE000FFFF803FF001EFFF801FFC07CFF +F800FFFFF8FFF8003FFFF0FFF8000FFFC0FFF00001FF00FFF000000000FFF000000000FF +F000000000FFE000000001FFE000000001FFE003C00001FFE00FF00001FFC01FF80001FF +C03FFC0003FF803FFC0003FF803FFC0003FF003FFC0007FE003FFC000FFE003FFC000FFC +003FF8001FF8001FF0003FF0001FC000FFE0000FF003FFC00007FFFFFF800003FFFFFE00 +0001FFFFF80000007FFFE000000007FE0000002D427BC038>I<000000001F8000000000 +000000001F8000000000000000003FC000000000000000003FC000000000000000007FE0 +00000000000000007FE000000000000000007FE00000000000000000FFF0000000000000 +0000FFF00000000000000001FFF80000000000000001FFF80000000000000001FFF80000 +000000000003FFFC0000000000000003FFFC0000000000000007FFFE0000000000000007 +FFFE0000000000000007FFFE000000000000000FFFFF000000000000000F9FFF00000000 +0000001F9FFF800000000000001F1FFF800000000000001F0FFF800000000000003F0FFF +C00000000000003E07FFC00000000000007E07FFE00000000000007C07FFE00000000000 +007C03FFE0000000000000FC03FFF0000000000000F801FFF0000000000001F801FFF800 +0000000001F001FFF8000000000001F000FFF8000000000003F000FFFC000000000003E0 +007FFC000000000007E0007FFE000000000007C0007FFE000000000007C0003FFE000000 +00000FC0003FFF00000000000F80001FFF00000000001F80001FFF80000000001F00000F +FF80000000001F00000FFF80000000003F00000FFFC0000000003E000007FFC000000000 +7E000007FFE0000000007FFFFFFFFFE0000000007FFFFFFFFFE000000000FFFFFFFFFFF0 +00000000FFFFFFFFFFF000000001FFFFFFFFFFF800000001F0000000FFF800000001F000 +0000FFF800000003F0000000FFFC00000003E00000007FFC00000007E00000007FFE0000 +0007C00000003FFE00000007C00000003FFE0000000F800000003FFF0000000F80000000 +1FFF0000001F800000001FFF8000001F000000000FFF8000003F000000000FFFC000003E +000000000FFFC000007E0000000007FFC000FFFFFF00000FFFFFFFF0FFFFFF00000FFFFF +FFF0FFFFFF00000FFFFFFFF0FFFFFF00000FFFFFFFF0FFFFFF00000FFFFFFFF04C457CC4 +55>65 D<00000000FFF00000700000001FFFFF0000F0000001FFFFFFE001F0000007FFFF +FFF803F000003FFFFFFFFE07F00000FFFFE001FF0FF00001FFFE00003F9FF00007FFF000 +000FFFF0000FFFC0000007FFF0001FFF00000003FFF0003FFE00000001FFF0007FFC0000 +0000FFF000FFF8000000007FF001FFF0000000003FF003FFE0000000001FF007FFE00000 +00001FF007FFC0000000000FF00FFF80000000000FF00FFF800000000007F01FFF000000 +000007F01FFF000000000003F03FFF000000000003F03FFE000000000003F03FFE000000 +000003F07FFE000000000001F07FFE000000000001F07FFE000000000001F07FFC000000 +00000000FFFC00000000000000FFFC00000000000000FFFC00000000000000FFFC000000 +00000000FFFC00000000000000FFFC00000000000000FFFC00000000000000FFFC000000 +00000000FFFC00000000000000FFFC00000000000000FFFC00000000000000FFFC000000 +00000000FFFC00000000000000FFFC000000000000007FFC000000000000007FFE000000 +000000007FFE000000000000F07FFE000000000000F03FFE000000000000F03FFE000000 +000000F03FFF000000000000F01FFF000000000001F01FFF000000000001E00FFF800000 +000001E00FFF800000000003E007FFC00000000003C007FFE00000000007C003FFE00000 +000007C001FFF0000000000F8000FFF8000000001F00007FFC000000003F00003FFE0000 +00007E00001FFF80000000FC00000FFFC0000001F8000007FFF0000007F0000001FFFE00 +001FE0000000FFFFF001FF800000003FFFFFFFFF0000000007FFFFFFFC0000000001FFFF +FFF000000000001FFFFF80000000000000FFF800000044467AC451>67 +D<FFFFFFFFFFFF00000000FFFFFFFFFFFFF0000000FFFFFFFFFFFFFE000000FFFFFFFFFF +FFFF800000FFFFFFFFFFFFFFE00000003FFE00001FFFF80000003FFE000001FFFC000000 +3FFE0000003FFF0000003FFE0000000FFF8000003FFE00000007FFC000003FFE00000003 +FFE000003FFE00000001FFF000003FFE00000000FFF000003FFE000000007FF800003FFE +000000003FFC00003FFE000000003FFC00003FFE000000001FFE00003FFE000000001FFE +00003FFE000000000FFF00003FFE000000000FFF00003FFE000000000FFF80003FFE0000 +00000FFF80003FFE0000000007FF80003FFE0000000007FFC0003FFE0000000007FFC000 +3FFE0000000007FFC0003FFE0000000007FFC0003FFE0000000007FFC0003FFE00000000 +07FFE0003FFE0000000007FFE0003FFE0000000007FFE0003FFE0000000007FFE0003FFE +0000000007FFE0003FFE0000000007FFE0003FFE0000000007FFE0003FFE0000000007FF +E0003FFE0000000007FFE0003FFE0000000007FFE0003FFE0000000007FFE0003FFE0000 +000007FFE0003FFE0000000007FFE0003FFE0000000007FFC0003FFE0000000007FFC000 +3FFE0000000007FFC0003FFE0000000007FFC0003FFE0000000007FFC0003FFE00000000 +07FF80003FFE000000000FFF80003FFE000000000FFF80003FFE000000000FFF00003FFE +000000001FFF00003FFE000000001FFE00003FFE000000003FFE00003FFE000000003FFC +00003FFE000000007FF800003FFE00000000FFF800003FFE00000000FFF000003FFE0000 +0001FFE000003FFE00000007FFC000003FFE0000000FFF8000003FFE0000003FFF000000 +3FFE000001FFFE0000003FFE00000FFFF80000FFFFFFFFFFFFFFF00000FFFFFFFFFFFFFF +C00000FFFFFFFFFFFFFE000000FFFFFFFFFFFFF0000000FFFFFFFFFFFF000000004B447C +C356>I<FFFFFFFFFFFFFFF800FFFFFFFFFFFFFFF800FFFFFFFFFFFFFFF800FFFFFFFFFF +FFFFF800FFFFFFFFFFFFFFFC00001FFF000001FFFC00001FFF0000003FFC00001FFF0000 +000FFC00001FFF00000003FC00001FFF00000001FC00001FFF00000000FC00001FFF0000 +0000FC00001FFF000000007E00001FFF000000003E00001FFF000000003E00001FFF0000 +00003E00001FFF000000001E00001FFF000000001E00001FFF000078001E00001FFF0000 +78001E00001FFF000078000F00001FFF000078000F00001FFF000078000F00001FFF0000 +78000F00001FFF0000F8000000001FFF0000F8000000001FFF0000F8000000001FFF0001 +F8000000001FFF0003F8000000001FFF001FF8000000001FFFFFFFF8000000001FFFFFFF +F8000000001FFFFFFFF8000000001FFFFFFFF8000000001FFFFFFFF8000000001FFF001F +F8000000001FFF0003F8000000001FFF0001F8000000001FFF0000F8000000001FFF0000 +F8000000001FFF0000F80001E0001FFF0000780001E0001FFF0000780001E0001FFF0000 +780003C0001FFF0000780003C0001FFF0000780003C0001FFF0000780003C0001FFF0000 +000003C0001FFF0000000007C0001FFF0000000007C0001FFF000000000780001FFF0000 +00000780001FFF000000000F80001FFF000000000F80001FFF000000001F80001FFF0000 +00001F80001FFF000000003F80001FFF000000007F00001FFF00000000FF00001FFF0000 +0001FF00001FFF00000007FF00001FFF0000001FFF00001FFF000001FFFF00FFFFFFFFFF +FFFFFF00FFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFE00FFFFFFFFFF +FFFFFE0043447DC34A>I<FFFFFFFFFFFFFF80FFFFFFFFFFFFFF80FFFFFFFFFFFFFF80FF +FFFFFFFFFFFF80FFFFFFFFFFFFFFC0003FFE00001FFFC0003FFE000001FFC0003FFE0000 +007FC0003FFE0000003FC0003FFE0000001FC0003FFE0000000FC0003FFE00000007C000 +3FFE00000007E0003FFE00000003E0003FFE00000003E0003FFE00000003E0003FFE0000 +0001E0003FFE00000001E0003FFE00000001E0003FFE0001E001E0003FFE0001E000F000 +3FFE0001E000F0003FFE0001E000F0003FFE0001E000F0003FFE0001E00000003FFE0003 +E00000003FFE0003E00000003FFE0003E00000003FFE0007E00000003FFE000FE0000000 +3FFE007FE00000003FFFFFFFE00000003FFFFFFFE00000003FFFFFFFE00000003FFFFFFF +E00000003FFFFFFFE00000003FFE007FE00000003FFE000FE00000003FFE0007E0000000 +3FFE0003E00000003FFE0003E00000003FFE0003E00000003FFE0001E00000003FFE0001 +E00000003FFE0001E00000003FFE0001E00000003FFE0001E00000003FFE0001E0000000 +3FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000 +000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE000000000000 +3FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000 +000000003FFE0000000000FFFFFFFFF0000000FFFFFFFFF0000000FFFFFFFFF0000000FF +FFFFFFF0000000FFFFFFFFF00000003C447CC346>I<FFFFFFFF8003FFFFFFFEFFFFFFFF +8003FFFFFFFEFFFFFFFF8003FFFFFFFEFFFFFFFF8003FFFFFFFEFFFFFFFF8003FFFFFFFE +003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE000000 +00FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003F +FE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FF +F800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00 +000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800 +003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE000000 +00FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003F +FFFFFFFFFFFFF800003FFFFFFFFFFFFFF800003FFFFFFFFFFFFFF800003FFFFFFFFFFFFF +F800003FFFFFFFFFFFFFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00 +000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800 +003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE000000 +00FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003F +FE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FF +F800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00 +000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800 +003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE000000 +00FFF800FFFFFFFF8003FFFFFFFEFFFFFFFF8003FFFFFFFEFFFFFFFF8003FFFFFFFEFFFF +FFFF8003FFFFFFFEFFFFFFFF8003FFFFFFFE4F447CC358>72 D<FFFFFFFFE0FFFFFFFFE0 +FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0001FFF0000001FFF0000001FFF0000001FFF000000 +1FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001F +FF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF +0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF00 +00001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000 +001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF000000 +1FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001F +FF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF +0000001FFF0000001FFF0000001FFF0000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFF +E0FFFFFFFFE023447DC32A>I<FFFFFFFFF0000000FFFFFFFFF0000000FFFFFFFFF00000 +00FFFFFFFFF0000000FFFFFFFFF0000000003FFE0000000000003FFE0000000000003FFE +0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000 +00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE +0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000 +00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE +0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000 +00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE +0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000 +00003FFE0000000000003FFE0000000780003FFE0000000780003FFE0000000780003FFE +0000000780003FFE0000000F80003FFE0000000F00003FFE0000000F00003FFE0000000F +00003FFE0000000F00003FFE0000001F00003FFE0000001F00003FFE0000001F00003FFE +0000003F00003FFE0000003F00003FFE0000007E00003FFE0000007E00003FFE000000FE +00003FFE000001FE00003FFE000003FE00003FFE000007FE00003FFE00001FFE00003FFE +00007FFE00003FFE0003FFFE00FFFFFFFFFFFFFC00FFFFFFFFFFFFFC00FFFFFFFFFFFFFC +00FFFFFFFFFFFFFC00FFFFFFFFFFFFFC0039447CC343>76 D<FFFFFE0000000000007FFF +FF80FFFFFF000000000000FFFFFF80FFFFFF000000000000FFFFFF80FFFFFF8000000000 +01FFFFFF80FFFFFF800000000001FFFFFF80003FFF800000000001FFFE0000003DFFC000 +00000003DFFE0000003DFFC00000000003DFFE0000003CFFE000000000079FFE0000003C +FFE000000000079FFE0000003C7FF0000000000F1FFE0000003C7FF0000000000F1FFE00 +00003C3FF8000000001E1FFE0000003C3FF8000000001E1FFE0000003C1FFC000000003C +1FFE0000003C1FFC000000003C1FFE0000003C1FFC000000003C1FFE0000003C0FFE0000 +0000781FFE0000003C0FFE00000000781FFE0000003C07FF00000000F01FFE0000003C07 +FF00000000F01FFE0000003C03FF80000001E01FFE0000003C03FF80000001E01FFE0000 +003C01FFC0000003C01FFE0000003C01FFC0000003C01FFE0000003C01FFC0000003C01F +FE0000003C00FFE0000007801FFE0000003C00FFE0000007801FFE0000003C007FF00000 +0F001FFE0000003C007FF000000F001FFE0000003C003FF800001E001FFE0000003C003F +F800001E001FFE0000003C001FFC00003C001FFE0000003C001FFC00003C001FFE000000 +3C001FFC00003C001FFE0000003C000FFE000078001FFE0000003C000FFE000078001FFE +0000003C0007FF0000F0001FFE0000003C0007FF0000F0001FFE0000003C0003FF8001E0 +001FFE0000003C0003FF8001E0001FFE0000003C0001FFC003C0001FFE0000003C0001FF +C003C0001FFE0000003C0000FFE00780001FFE0000003C0000FFE00780001FFE0000003C +0000FFE00780001FFE0000003C00007FF00F00001FFE0000003C00007FF00F00001FFE00 +00003C00003FF81E00001FFE0000003C00003FF81E00001FFE0000003C00001FFC3C0000 +1FFE0000003C00001FFC3C00001FFE0000003C00000FFE7800001FFE0000003C00000FFE +7800001FFE0000003C00000FFE7800001FFE0000003C000007FFF000001FFE0000003C00 +0007FFF000001FFE0000003C000003FFE000001FFE0000003C000003FFE000001FFE0000 +003C000001FFC000001FFE0000003C000001FFC000001FFE0000003C000000FF8000001F +FE0000003C000000FF8000001FFE0000FFFFFF0000FF80007FFFFFFF80FFFFFF00007F00 +007FFFFFFF80FFFFFF00007F00007FFFFFFF80FFFFFF00003E00007FFFFFFF80FFFFFF00 +001C00007FFFFFFF8061447CC36A>I<00000007FFC0000000000000FFFFFE0000000000 +07FFFFFFC0000000001FFFFFFFF0000000007FFE00FFFC00000001FFF0001FFF00000007 +FF800003FFC000000FFF000001FFE000001FFC0000007FF000003FF80000003FF800007F +F00000001FFC0000FFF00000001FFE0001FFE00000000FFF0003FFC000000007FF8003FF +C000000007FF8007FF8000000003FFC007FF8000000003FFC00FFF0000000001FFE00FFF +0000000001FFE01FFF0000000001FFF01FFE0000000000FFF03FFE0000000000FFF83FFE +0000000000FFF83FFE0000000000FFF87FFE0000000000FFFC7FFC00000000007FFC7FFC +00000000007FFC7FFC00000000007FFC7FFC00000000007FFCFFFC00000000007FFEFFFC +00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC +00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC +00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC00000000007FFE7FFC +00000000007FFC7FFE0000000000FFFC7FFE0000000000FFFC7FFE0000000000FFFC3FFE +0000000000FFF83FFE0000000000FFF83FFF0000000001FFF81FFF0000000001FFF01FFF +0000000001FFF01FFF8000000003FFF00FFF8000000003FFE00FFF8000000003FFE007FF +C000000007FFC003FFC000000007FF8003FFE00000000FFF8001FFF00000001FFF0000FF +F80000003FFE00007FFC0000007FFC00003FFE000000FFF800001FFF000001FFF000000F +FFC00007FFE0000007FFF0001FFFC0000001FFFE00FFFF00000000FFFFFFFFFE00000000 +3FFFFFFFF80000000007FFFFFFC00000000000FFFFFE00000000000007FFC00000004746 +7AC454>79 D<FFFFFFFFFFFF000000FFFFFFFFFFFFF00000FFFFFFFFFFFFFE0000FFFFFF +FFFFFFFF8000FFFFFFFFFFFFFFE000001FFF00000FFFF000001FFF000001FFF800001FFF +0000007FFC00001FFF0000003FFE00001FFF0000001FFF00001FFF0000000FFF80001FFF +0000000FFF80001FFF0000000FFFC0001FFF00000007FFC0001FFF00000007FFC0001FFF +00000007FFE0001FFF00000007FFE0001FFF00000007FFE0001FFF00000007FFE0001FFF +00000007FFE0001FFF00000007FFE0001FFF00000007FFE0001FFF00000007FFE0001FFF +00000007FFE0001FFF00000007FFC0001FFF00000007FFC0001FFF0000000FFF80001FFF +0000000FFF80001FFF0000000FFF00001FFF0000001FFF00001FFF0000003FFE00001FFF +0000007FFC00001FFF000001FFF800001FFF00000FFFF000001FFFFFFFFFFFC000001FFF +FFFFFFFF0000001FFFFFFFFFFC0000001FFFFFFFFFC00000001FFF000000000000001FFF +000000000000001FFF000000000000001FFF000000000000001FFF000000000000001FFF +000000000000001FFF000000000000001FFF000000000000001FFF000000000000001FFF +000000000000001FFF000000000000001FFF000000000000001FFF000000000000001FFF +000000000000001FFF000000000000001FFF000000000000001FFF000000000000001FFF +000000000000001FFF000000000000001FFF000000000000001FFF000000000000001FFF +000000000000001FFF000000000000001FFF000000000000001FFF000000000000FFFFFF +FFE000000000FFFFFFFFE000000000FFFFFFFFE000000000FFFFFFFFE000000000FFFFFF +FFE00000000043447DC34D>I<FFFFFFFFFFF800000000FFFFFFFFFFFFC0000000FFFFFF +FFFFFFF8000000FFFFFFFFFFFFFE000000FFFFFFFFFFFFFF800000001FFF00003FFFE000 +00001FFF000003FFF00000001FFF000000FFF80000001FFF0000007FFC0000001FFF0000 +003FFE0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF800000 +1FFF0000000FFF8000001FFF0000000FFF8000001FFF0000000FFFC000001FFF0000000F +FFC000001FFF0000000FFFC000001FFF0000000FFFC000001FFF0000000FFFC000001FFF +0000000FFFC000001FFF0000000FFFC000001FFF0000000FFF8000001FFF0000000FFF80 +00001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000003FFE0000001FFF0000 +003FFC0000001FFF0000007FFC0000001FFF000001FFF00000001FFF000007FFE0000000 +1FFF00003FFF800000001FFFFFFFFFFF000000001FFFFFFFFFF8000000001FFFFFFFFFE0 +000000001FFFFFFFFFF8000000001FFF0000FFFC000000001FFF00003FFF000000001FFF +00000FFF800000001FFF000007FFC00000001FFF000003FFE00000001FFF000003FFE000 +00001FFF000001FFF00000001FFF000001FFF00000001FFF000000FFF80000001FFF0000 +00FFF80000001FFF000000FFF80000001FFF000000FFF80000001FFF000000FFF8000000 +1FFF000000FFF80000001FFF000000FFF80000001FFF000000FFFC0000001FFF000000FF +FC0000001FFF000000FFFC0000001FFF000000FFFC0000001FFF000000FFFC0000001FFF +000000FFFC0000001FFF000000FFFC000F001FFF000000FFFE000F001FFF000000FFFE00 +0F001FFF0000007FFE000F001FFF0000007FFF001F001FFF0000003FFF001EFFFFFFFFE0 +001FFF803EFFFFFFFFE0000FFFE0FCFFFFFFFFE00007FFFFF8FFFFFFFFE00001FFFFF0FF +FFFFFFE000007FFFE00000000000000007FF8050457DC354>82 D<0000FFE0001C000007 +FFFE003C00003FFFFF807C0000FFFFFFE0FC0001FFFFFFF9FC0003FF801FFFFC0007FC00 +01FFFC000FF800007FFC001FF000003FFC003FE000000FFC003FC0000007FC007FC00000 +03FC007F80000003FC007F80000001FC007F80000000FC00FF80000000FC00FF80000000 +7C00FF800000007C00FFC00000007C00FFC00000007C00FFE00000003C00FFF00000003C +00FFF80000003C00FFFC00000000007FFE00000000007FFFE0000000007FFFFE00000000 +3FFFFFF00000003FFFFFFF0000001FFFFFFFE000001FFFFFFFFC00000FFFFFFFFE000007 +FFFFFFFF800003FFFFFFFFC00001FFFFFFFFE000007FFFFFFFF000001FFFFFFFF8000007 +FFFFFFFC000000FFFFFFFC0000000FFFFFFE00000000FFFFFE0000000007FFFF00000000 +007FFF00000000003FFF00000000000FFF800000000007FF800000000003FF80F0000000 +03FF80F000000001FF80F000000001FF80F000000000FF80F000000000FF80F800000000 +FF80F800000000FF80F800000000FF00FC00000000FF00FC00000000FF00FE00000001FF +00FF00000001FE00FF80000003FE00FFC0000003FC00FFE0000007FC00FFF800000FF800 +FFFF00003FF000FFFFF800FFE000FE7FFFFFFFC000FC1FFFFFFF0000F807FFFFFC0000F0 +00FFFFF00000E00007FF80000031467AC43E>I<3FFFFFFFFFFFFFFFE03FFFFFFFFFFFFF +FFE03FFFFFFFFFFFFFFFE03FFFFFFFFFFFFFFFE03FFFFFFFFFFFFFFFE03FFE000FFF8003 +FFE07FE0000FFF80003FF07FC0000FFF80001FF07F00000FFF800007F07F00000FFF8000 +07F07E00000FFF800003F07C00000FFF800001F07C00000FFF800001F07C00000FFF8000 +01F07800000FFF800000F07800000FFF800000F07800000FFF800000F07800000FFF8000 +00F0F800000FFF800000F8F000000FFF80000078F000000FFF80000078F000000FFF8000 +0078F000000FFF80000078F000000FFF800000780000000FFF800000000000000FFF8000 +00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000 +00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000 +00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000 +00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000 +00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000 +00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000 +00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000 +00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000 +00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000 +00000007FFFFFFFFFF00000007FFFFFFFFFF00000007FFFFFFFFFF00000007FFFFFFFFFF +00000007FFFFFFFFFF000045437CC24E>I<FFFFFFFF000000FFFFFFFFFFFFFF000000FF +FFFFFFFFFFFF000000FFFFFFFFFFFFFF000000FFFFFFFFFFFFFF000000FFFFFF003FFE00 +00000000FC00003FFF0000000000FC00001FFF0000000000F800001FFF8000000001F800 +000FFF8000000001F000000FFFC000000001F000000FFFC000000003F0000007FFC00000 +0003E0000007FFE000000007E0000003FFE000000007C0000003FFF00000000FC0000001 +FFF00000000F80000001FFF80000000F80000001FFF80000001F80000000FFFC0000001F +00000000FFFC0000003F000000007FFC0000003E000000007FFE0000007E000000003FFE +0000007C000000003FFF0000007C000000003FFF000000FC000000001FFF800000F80000 +00001FFF800001F8000000000FFF800001F0000000000FFFC00003F00000000007FFC000 +03E00000000007FFE00003E00000000007FFE00007E00000000003FFF00007C000000000 +03FFF0000FC00000000001FFF0000F800000000001FFF8001F800000000000FFF8001F00 +0000000000FFFC003F0000000000007FFC003E0000000000007FFE003E0000000000007F +FE007E0000000000003FFE007C0000000000003FFF00FC0000000000001FFF00F8000000 +0000001FFF81F80000000000000FFF81F00000000000000FFFC1F00000000000000FFFC3 +F000000000000007FFC3E000000000000007FFE7E000000000000003FFE7C00000000000 +0003FFFFC000000000000001FFFF8000000000000001FFFF8000000000000001FFFF8000 +000000000000FFFF0000000000000000FFFF00000000000000007FFE0000000000000000 +7FFE00000000000000003FFC00000000000000003FFC00000000000000003FFC00000000 +000000001FF800000000000000001FF800000000000000000FF000000000000000000FF0 +000000000000000007E0000000000000000007E00000000050457EC355>86 +D<0001FFE0000000001FFFFE000000007FFFFF80000001FFFFFFE0000003FE007FF80000 +07FC001FFC000007FE000FFE00000FFF0007FF00000FFF0007FF00000FFF0003FF80000F +FF0003FF80000FFF0003FF80000FFF0001FFC00007FE0001FFC00003FC0001FFC00000F0 +0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000003 +FFFFC0000000FFFFFFC0000007FFFFFFC000003FFFF1FFC00000FFFC01FFC00003FFE001 +FFC0000FFF8001FFC0001FFE0001FFC0003FFC0001FFC0003FF80001FFC0007FF80001FF +C0007FF00001FFC000FFF00001FFC000FFE00001FFC000FFE00001FFC000FFE00001FFC0 +00FFE00003FFC000FFE00003FFC000FFF00007FFC0007FF8000FFFC0007FF8001FFFF000 +3FFE003EFFFFC01FFF80FC7FFFC007FFFFF87FFFC003FFFFE01FFFC0007FFF8007FFC000 +0FFC00000000322F7DAD36>97 D<007FC000000000FFFFC000000000FFFFC000000000FF +FFC000000000FFFFC000000000FFFFC00000000003FFC00000000001FFC00000000001FF +C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0 +0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000 +00000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000 +000001FFC00FF8000001FFC0FFFF800001FFC3FFFFE00001FFCFFFFFF80001FFDFC03FFC +0001FFFF000FFE0001FFFC0003FF0001FFF80001FF8001FFF00001FFC001FFE00000FFE0 +01FFC00000FFE001FFC000007FF001FFC000007FF001FFC000007FF801FFC000003FF801 +FFC000003FF801FFC000003FF801FFC000003FFC01FFC000003FFC01FFC000003FFC01FF +C000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC0 +00003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FF801FFC000 +003FF801FFC000007FF801FFC000007FF001FFC000007FF001FFC000007FF001FFC00000 +FFE001FFE00000FFC001FFF00001FFC001FFF80003FF8001FF7C0007FF0001FE3E000FFE +0001FC1FC07FFC0001F80FFFFFF00001F003FFFFC00001E000FFFF00000000001FF00000 +36467DC43E>I<00003FFC00000001FFFFC000000FFFFFF000003FFFFFFC00007FF003FE +0000FFC001FF0003FF8003FF0007FF0007FF8007FE0007FF800FFE0007FF801FFC0007FF +801FFC0007FF803FF80007FF803FF80003FF007FF80001FE007FF8000078007FF0000000 +007FF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000 +00FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000 +00FFF0000000007FF8000000007FF8000000007FF8000000003FF8000000003FFC000003 +C03FFC000003C01FFE000007C00FFE000007800FFF00000F8007FF80001F0003FFC0003E +0001FFF0007C00007FFC03F800003FFFFFF000000FFFFFC0000003FFFF000000003FF800 +002A2F7CAD32>I<0000000003FE0000000007FFFE0000000007FFFE0000000007FFFE00 +00000007FFFE0000000007FFFE00000000001FFE00000000000FFE00000000000FFE0000 +0000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE000000 +00000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000 +000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE0000003FE0 +0FFE000003FFFC0FFE00000FFFFF8FFE00003FFFFFCFFE0000FFF807FFFE0001FFC001FF +FE0003FF80007FFE0007FF00003FFE000FFE00001FFE000FFC00000FFE001FFC00000FFE +003FF800000FFE003FF800000FFE003FF800000FFE007FF800000FFE007FF000000FFE00 +7FF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FF +F000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF0 +00000FFE00FFF000000FFE00FFF000000FFE007FF000000FFE007FF000000FFE007FF000 +000FFE007FF800000FFE003FF800000FFE003FF800000FFE001FFC00001FFE001FFC0000 +1FFE000FFE00003FFE0007FE00007FFE0003FF0000FFFF0001FFC003FFFFFC00FFF01FEF +FFFC007FFFFF8FFFFC001FFFFE0FFFFC0007FFF80FFFFC00007FC00FF80036467CC43E> +I<00003FF800000003FFFF8000000FFFFFE000003FFFFFF000007FF83FF80000FFC007FC +0001FF8003FE0003FF0001FF0007FE0000FF800FFC0000FF801FFC00007FC01FF800007F +C03FF800003FE03FF800003FE07FF800003FE07FF000003FE07FF000003FF07FF000001F +F0FFF000001FF0FFF000001FF0FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFF +F0FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000007FF0000000 +007FF0000000007FF8000000007FF8000000003FF8000000003FF8000000F01FFC000000 +F01FFC000001F00FFE000001E007FF000003E003FF800007C001FFC0000F8000FFF0003F +00007FFE01FE00001FFFFFFC000007FFFFF0000001FFFFC00000001FFE00002C2F7DAD33 +>I<000000FF8000000FFFE000007FFFF00001FFFFF80003FF8FFC000FFE0FFE001FFC1F +FE001FF81FFE003FF81FFE007FF01FFE007FF01FFE007FF00FFC00FFE00FFC00FFE003F0 +00FFE000C000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000 +FFE0000000FFE0000000FFE0000000FFE0000000FFE00000FFFFFFF800FFFFFFF800FFFF +FFF800FFFFFFF800FFFFFFF80000FFE0000000FFE0000000FFE0000000FFE0000000FFE0 +000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000 +0000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00000 +00FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000 +FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FF +E000007FFFFFE0007FFFFFE0007FFFFFE0007FFFFFE0007FFFFFE00027467DC522>I<00 +00FFE0007E00000FFFFE03FF80003FFFFF8FFF8000FFFFFFFFFFC001FFC07FFF3FC003FF +001FF83FC007FE000FFC3FC00FFC0007FE1F801FFC0007FF0F001FF80003FF00001FF800 +03FF00003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003 +FF80003FF80003FF80003FF80003FF80003FF80003FF80001FF80003FF00001FF80003FF +00001FFC0007FF00000FFC0007FE000007FE000FFC000003FF001FF8000001FFC07FF000 +0003FFFFFFE0000003FFFFFF800000078FFFFE0000000780FFE00000000F800000000000 +0F8000000000000F8000000000000F8000000000000FC000000000000FE000000000000F +F000000000000FFFFFFFC000000FFFFFFFFC000007FFFFFFFF800007FFFFFFFFE00003FF +FFFFFFF00001FFFFFFFFFC0000FFFFFFFFFC0003FFFFFFFFFE000FFFFFFFFFFF001FF000 +007FFF003FC0000007FF007F80000001FF807F80000000FF80FF00000000FF80FF000000 +007F80FF000000007F80FF000000007F80FF000000007F80FF80000000FF807F80000000 +FF007FC0000001FF003FE0000003FE001FF0000007FC000FFE00003FF80007FFC001FFF0 +0001FFFFFFFFC000007FFFFFFF0000000FFFFFF8000000007FFF00000032427DAC38>I< +007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000FF +FFC00000000003FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF +C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0 +0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000 +00000001FFC00000000001FFC00000000001FFC00000000001FFC007FE000001FFC03FFF +800001FFC0FFFFE00001FFC1FFFFF80001FFC7F03FFC0001FFCF801FFC0001FFDF000FFE +0001FFDE000FFE0001FFFC000FFE0001FFF80007FF0001FFF00007FF0001FFF00007FF00 +01FFE00007FF0001FFE00007FF0001FFE00007FF0001FFC00007FF0001FFC00007FF0001 +FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FF +C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0 +0007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC000 +07FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007 +FF0001FFC00007FF0001FFC00007FF00FFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFF +FEFFFFFF83FFFFFEFFFFFF83FFFFFE37457CC43E>I<007C0001FF0003FF8007FFC007FF +C00FFFE00FFFE00FFFE00FFFE00FFFE007FFC007FFC003FF8001FF00007C000000000000 +00000000000000000000000000000000000000000000000000007FC07FFFC07FFFC07FFF +C07FFFC07FFFC003FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF +C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF +C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF +C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18467CC520>I<000003E000000FF800001FFC00 +003FFE00003FFE00007FFF00007FFF00007FFF00007FFF00007FFF00003FFE00003FFE00 +001FFC00000FF8000003E000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000001FF0003FFFF0003FFFF0003FFFF0003FFFF00 +03FFFF00000FFF000007FF000007FF000007FF000007FF000007FF000007FF000007FF00 +0007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF00 +0007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF00 +0007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF00 +0007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF1F +8007FF3FC007FF7FE007FFFFF007FFFFF00FFEFFF00FFEFFF00FFCFFF01FFCFFE01FF87F +E03FF03FC0FFE01FFFFF800FFFFF0003FFFC0000FFC000205A86C522>I<007FC0000000 +00FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000 +03FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001 +FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF +C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0 +0000000001FFC00000000001FFC00000000001FFC00000000001FFC0007FFFE001FFC000 +7FFFE001FFC0007FFFE001FFC0007FFFE001FFC0007FFFE001FFC0000FE00001FFC0001F +C00001FFC0003F000001FFC0007E000001FFC000FC000001FFC003F8000001FFC007E000 +0001FFC00FC0000001FFC01F80000001FFC07F00000001FFC0FE00000001FFC1FC000000 +01FFC3FE00000001FFC7FE00000001FFDFFF00000001FFFFFF80000001FFFFFFC0000001 +FFFFFFC0000001FFF9FFE0000001FFE1FFF0000001FFC0FFF8000001FF807FF8000001FF +803FFC000001FF803FFE000001FF801FFF000001FF800FFF000001FF8007FF800001FF80 +07FFC00001FF8003FFE00001FF8001FFE00001FF8000FFF00001FF8000FFF80001FF8000 +7FFC0001FF80003FFC00FFFFFF03FFFFF8FFFFFF03FFFFF8FFFFFF03FFFFF8FFFFFF03FF +FFF8FFFFFF03FFFFF835457DC43B>I<007FC000FFFFC000FFFFC000FFFFC000FFFFC000 +FFFFC00003FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 +01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 +01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 +01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 +01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 +01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 +01FFC00001FFC00001FFC00001FFC00001FFC000FFFFFF80FFFFFF80FFFFFF80FFFFFF80 +FFFFFF8019457CC420>I<007F8007FE00000FFC0000FFFF803FFFC0007FFF8000FFFF80 +FFFFF001FFFFE000FFFF81FFFFF803FFFFF000FFFF87F01FFC0FE03FF800FFFF8FC00FFE +1F801FFC0003FF9F000FFF3E001FFE0001FF9E0007FF3C000FFE0001FFBC0007FF78000F +FE0001FFF80003FFF00007FF0001FFF80003FFF00007FF0001FFF00003FFE00007FF0001 +FFE00003FFC00007FF0001FFE00003FFC00007FF0001FFE00003FFC00007FF0001FFC000 +03FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF80 +0007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF +0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FF +C00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003 +FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF8000 +07FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF00 +01FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC0 +0003FF800007FF0001FFC00003FF800007FF00FFFFFF81FFFFFF03FFFFFEFFFFFF81FFFF +FF03FFFFFEFFFFFF81FFFFFF03FFFFFEFFFFFF81FFFFFF03FFFFFEFFFFFF81FFFFFF03FF +FFFE572D7CAC5E>I<007F8007FE0000FFFF803FFF8000FFFF80FFFFE000FFFF81FFFFF8 +00FFFF87F03FFC00FFFF8F801FFC0003FF9F000FFE0001FF9E000FFE0001FFBC000FFE00 +01FFF80007FF0001FFF00007FF0001FFF00007FF0001FFE00007FF0001FFE00007FF0001 +FFE00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FF +C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0 +0007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC000 +07FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007 +FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF +00FFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFE +372D7CAC3E>I<00001FFC0000000001FFFFC000000007FFFFF00000001FFFFFFC000000 +7FF80FFF000000FFC001FF800001FF8000FFC00003FE00003FE00007FE00003FF0000FFC +00001FF8000FF800000FF8001FF800000FFC001FF800000FFC003FF800000FFE003FF000 +0007FE007FF0000007FF007FF0000007FF007FF0000007FF007FF0000007FF00FFF00000 +07FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007 +FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF807FF0000007FF +007FF0000007FF007FF0000007FF007FF0000007FF003FF800000FFE003FF800000FFE00 +1FF800000FFC001FFC00001FFC000FFC00001FF80007FE00003FF00007FE00003FF00003 +FF8000FFE00001FFC001FFC000007FF80FFF0000003FFFFFFE0000000FFFFFF800000001 +FFFFC0000000001FFC000000312F7DAD38>I<007FC00FF80000FFFFC0FFFF8000FFFFC3 +FFFFE000FFFFCFFFFFF800FFFFDFC03FFC00FFFFFF001FFE0003FFFC0007FF0001FFF800 +03FF8001FFF00003FFC001FFE00001FFE001FFC00001FFE001FFC00000FFF001FFC00000 +FFF001FFC000007FF801FFC000007FF801FFC000007FF801FFC000007FF801FFC000003F +FC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC +01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01 +FFC000003FFC01FFC000007FF801FFC000007FF801FFC000007FF801FFC000007FF001FF +C00000FFF001FFC00000FFF001FFC00001FFE001FFE00001FFC001FFF00003FFC001FFF8 +0007FF8001FFFC000FFF0001FFFE001FFE0001FFDFC07FFC0001FFCFFFFFF00001FFC3FF +FFC00001FFC0FFFF000001FFC01FF0000001FFC00000000001FFC00000000001FFC00000 +000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0000000 +0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000 +FFFFFF80000000FFFFFF80000000FFFFFF80000000FFFFFF80000000FFFFFF8000000036 +407DAC3E>I<007F807F00FFFF81FFE0FFFF83FFF0FFFF8FFFF8FFFF8F8FFCFFFF9F1FFE +03FFBE1FFE01FFBC1FFE01FFF81FFE01FFF81FFE01FFF01FFE01FFF00FFC01FFE007F801 +FFE001E001FFE0000001FFE0000001FFE0000001FFC0000001FFC0000001FFC0000001FF +C0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0 +000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC000 +0001FFC0000001FFC0000001FFC0000001FFC0000001FFC00000FFFFFFE000FFFFFFE000 +FFFFFFE000FFFFFFE000FFFFFFE000272D7DAC2E>114 D<001FFC038000FFFF878003FF +FFFF800FFFFFFF801FF003FF803FC000FF803F80003F807F00001F807E00001F80FE0000 +0F80FE00000F80FE00000780FF00000780FF00000780FF80000780FFE0000000FFFE0000 +007FFFF000007FFFFF00003FFFFFC0003FFFFFF0001FFFFFFC000FFFFFFE0003FFFFFF00 +01FFFFFF80007FFFFF80000FFFFFC000003FFFC0000003FFE0000000FFE0F000003FE0F0 +00003FE0F800001FE0F800000FE0F800000FE0FC00000FE0FC00000FE0FE00000FC0FF00 +001FC0FF00001FC0FF80003F80FFE0007F00FFF803FE00FFFFFFFC00FCFFFFF800F03FFF +E000E007FE0000232F7CAD2C>I<0001E000000001E000000001E000000001E000000001 +E000000003E000000003E000000003E000000003E000000007E000000007E00000000FE0 +0000000FE00000001FE00000001FE00000003FE00000007FE0000000FFE0000003FFE000 +000FFFFFFF80FFFFFFFF80FFFFFFFF80FFFFFFFF80FFFFFFFF8000FFE0000000FFE00000 +00FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000 +FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FF +E0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE001E000FFE001E000FFE0 +01E000FFE001E000FFE001E000FFE001E000FFE001E000FFE001E000FFE001E000FFE003 +E000FFF003C0007FF003C0007FF007C0003FF80F80001FFC1F00000FFFFF000007FFFC00 +0001FFF80000003FE00023407EBE2C>I<007FC00001FF00FFFFC003FFFF00FFFFC003FF +FF00FFFFC003FFFF00FFFFC003FFFF00FFFFC003FFFF0003FFC0000FFF0001FFC00007FF +0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF00 +01FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001 +FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FF +C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0 +0007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC000 +0FFF0001FFC0000FFF0001FFC0001FFF0001FFC0001FFF0001FFC0003FFF0000FFC0003F +FF0000FFE0007FFF80007FE001F7FFFE007FF807E7FFFE003FFFFFC7FFFE000FFFFF07FF +FE0003FFFE07FFFE00007FF007FC00372E7CAC3E>I<FFFFFF0003FFFCFFFFFF0003FFFC +FFFFFF0003FFFCFFFFFF0003FFFCFFFFFF0003FFFC01FFE000003E0000FFE000003C0000 +FFF000003C00007FF000007800007FF800007800007FF80000F800003FF80000F000003F +FC0001F000001FFC0001E000001FFE0003E000000FFE0003C000000FFF0007C0000007FF +000780000007FF800F80000003FF800F00000003FFC00F00000003FFC01F00000001FFE0 +1E00000001FFE03E00000000FFE03C00000000FFF07C000000007FF078000000007FF8F8 +000000003FF8F0000000003FFDF0000000001FFDE0000000001FFFE0000000000FFFC000 +0000000FFFC0000000000FFFC00000000007FF800000000007FF800000000003FF000000 +000003FF000000000001FE000000000001FE000000000000FC000000000000FC00000000 +000078000000362C7EAB3B>I<FFFFFE1FFFFF801FFFF0FFFFFE1FFFFF801FFFF0FFFFFE +1FFFFF801FFFF0FFFFFE1FFFFF801FFFF0FFFFFE1FFFFF801FFFF001FFC0003FE000007C +0001FFC0003FF00000780001FFE0003FF00000F80000FFE0001FF80000F00000FFF0001F +F80001F000007FF0000FFC0001E000007FF0000FFC0001E000007FF8001FFC0003E00000 +3FF8001FFE0003C000003FFC003FFE0007C000001FFC003FFF00078000001FFC003FFF00 +078000001FFE0079FF000F8000000FFE0079FF800F0000000FFF00F9FF801F00000007FF +00F0FFC01E00000007FF80F0FFC01E00000003FF81E07FC03C00000003FF81E07FE03C00 +000003FFC3E07FE07C00000001FFC3C03FF07800000001FFE7C03FF07800000000FFE780 +1FF0F000000000FFE7801FF8F000000000FFFF801FF9F0000000007FFF000FFDE0000000 +007FFF000FFFE0000000003FFE0007FFC0000000003FFE0007FFC0000000003FFE0007FF +C0000000001FFC0003FF80000000001FFC0003FF80000000000FF80001FF00000000000F +F80001FF00000000000FF00000FF000000000007F00000FE000000000007F00000FE0000 +00000003E000007C000000000003C000003C0000004C2C7EAB51>I<FFFFFE003FFFF0FF +FFFE003FFFF0FFFFFE003FFFF0FFFFFE003FFFF0FFFFFE003FFFF000FFF00003E000007F +F80007C000003FF8000F8000001FFC001F0000001FFE003F0000000FFF007E00000007FF +807C00000003FFC0F800000001FFC1F000000001FFE3E000000000FFF7C0000000007FFF +80000000003FFF80000000001FFF00000000001FFE00000000000FFF000000000007FF80 +0000000003FFC00000000003FFC00000000007FFE0000000000FFFF0000000000FFFF800 +0000001F3FFC000000003E1FFC000000007C1FFE00000000F80FFF00000001F007FF8000 +0003F003FFC0000007E001FFC0000007C001FFE000000F8000FFF000001F00007FF80000 +3E00003FFC00007E00001FFC00FFFFE000FFFFFCFFFFE000FFFFFCFFFFE000FFFFFCFFFF +E000FFFFFCFFFFE000FFFFFC362C7EAB3B>I E /Fg 6 118 df<0003F000000FF800003E +1C60007C0FF000F807F001F007F003E007F007E003E00FC003E00FC003E01F8007E01F80 +07C03F0007C03F0007C03F000FC07F000F807E000F807E000F807E001F80FE001F00FC00 +1F00FC001F06FC003F07FC003E0FFC003E0EFC007E0E7C007E1E7C00FE1C7C01FC1C3C03 +FC3C3E07BE381F0E1E7807FC0FF001F003C0202278A027>97 D<0000FC000007FF00001F +0780003E03C000FC01C001F803C003F007C007E00FC007C00FC00FC00FC01F8007001F80 +00003F0000003F0000003F0000007F0000007E0000007E0000007E000000FE000000FC00 +0000FC000000FC000000FC0000007C0000C07C0001E07C0001E07C0003C03E000F803E00 +1F001F007C000F81F00003FFC00000FE00001B2278A023>99 D<000FC0000003FFC00000 +03FFC0000003FF800000001F800000001F800000001F800000001F000000001F00000000 +3F000000003F000000003E000000003E000000007E000000007E000000007C000000007C +00000000FC00000000FC00000000F83F800000F8FFE00001FBE0F00001FF80F80001FF00 +780001FE007C0003FC007C0003F8007C0003F0007C0003F0007C0007E000FC0007E000F8 +0007C000F80007C000F8000FC001F8000FC001F0000F8001F0000F8001F0001F8003F000 +1F8003E0001F0007E0001F0007C0C03F0007C1E03F000FC1C03E000F81C03E000F81C07E +000F83C07E000F03807C000F07807C000F0700FC000F0E00FC000F1E00F80007F8007000 +01F00023357BB327>104 D<0003F0001FFC003C1E00780F00F00701E00701E00F03E01F +03C01F03C01F03E00403E00003F00003FF8003FFE001FFF000FFF8007FFC0007FC0000FE +00007E00003E38003EFC003CFC003CFC003CFC007CF00078E000F0F001F07803E03C0F80 +1FFE0003F80018227AA01F>115 D<000300000F80000F80000F80001F80001F80001F00 +001F00003F00003F00003E00003E00007E00007E00007C007FFFF87FFFF8FFFFF800F800 +00F80001F80001F80001F00001F00003F00003F00003E00003E00007E00007E00007C000 +07C0000FC0000FC0000F80000F80601F80F01F80E01F00E01F01E01F01C01F03C01E0380 +1E07001E0F000F1E0007F80001E00015307AAE19>I<01F000000003FC0007000F1E000F +000E1E001F001C1E001F003C1E001F00381E003F00783E003E00703E003E00703E003E00 +707E007E00F07C007C0060FC007C0000F8007C0000F800FC0001F800F80001F000F80001 +F000F80001F001F80003F001F00003E001F00003E001F06003E003F07003E003E0F007C0 +03E0E007C003E0E003C007E1E003C007E1C003E00FC1C003E01FC3C001E03FE38001F071 +E780007FE0FF00001F803C0024227AA029>I E /Fh 2 104 df<000007E000003FE00000 +FE000003F8000007F000000FE000000FC000001FC000001F8000001F8000001F8000001F +8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F +8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F +8000001F8000003F8000003F0000007E000000FC000003F800007FE00000FF0000007FE0 +000003F8000000FC0000007E0000003F0000003F8000001F8000001F8000001F8000001F +8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F +8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F +8000001F8000001FC000000FC000000FE0000007F0000003F8000000FE0000003FE00000 +07E01B4B7BB726>102 D<FC000000FFC0000007F0000001FC000000FE0000007F000000 +3F0000003F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800000 +1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800000 +1F8000001F8000001F8000001F8000001F8000001F8000001F8000001FC000000FC00000 +07E0000003F0000001FC0000007FC000001FE000007FC00001FC000003F0000007E00000 +0FC000001FC000001F8000001F8000001F8000001F8000001F8000001F8000001F800000 +1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800000 +1F8000001F8000001F8000001F8000001F8000001F8000001F8000003F8000003F000000 +7F000000FE000001FC000007F00000FFC00000FC0000001B4B7BB726>I +E /Fi 38 122 df<00003FE00FE00001FFF83FF80007E01EF83C001F800FF07E003F001F +E0FE007E003FE0FE00FC003FC0FE01F8003FC0FE01F8003FC03803F0001F800003F0001F +800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F +800003F0001F800003F0001F800003F0001F800003F0001F8000FFFFFFFFFFC0FFFFFFFF +FFC0FFFFFFFFFFC003F0001F800003F0001F800003F0001F800003F0001F800003F0001F +800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F +800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F +800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F +800003F0001F800003F0001F800007F8003FC000FFFF83FFFF00FFFF83FFFF00FFFF83FF +FF002F357FB42D>11 D<00001FE0000000FFFC000003F01E00000FC00780001F80078000 +3F000FC0007E001FC000FC001FC000FC001FC001F8001FC001F8000F8001F800000001F8 +00000001F800000001F800000001F800000001F800000001F800000001F800000001F800 +000001F8000FC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC001F8001FC001F8000FC001F8000F +C001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC0 +01F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001 +F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8 +000FC003FC001FE07FFFC1FFFF7FFFC1FFFF7FFFC1FFFF28357FB42B>I<3C007E00FF00 +FF00FF80FF807F803D800180018001800180038003000300070006000E000C001C003800 +7000600009177AB315>39 D<3C007E00FF00FF00FF80FF807F803D800180018001800180 +038003000300070006000E000C001C0038007000600009177A8715>44 +D<3C7EFFFFFFFF7E3C08087A8715>46 D<000FE000007FFC0000F83E0003E00F8007C007 +C0078003C00F8003E01F0001F01F0001F03F0001F83F0001F83E0000F87E0000FC7E0000 +FC7E0000FC7E0000FC7E0000FCFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000 +FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000 +FEFE0000FEFE0000FEFE0000FE7E0000FC7E0000FC7E0000FC7E0000FC7E0000FC3F0001 +F83F0001F83F0001F81F0001F01F0001F00F8003E007C007C007C007C003E00F8000F83E +00007FFC00000FE0001F347DB126>48 D<001FE00000FFFC0001FFFF0007E03F800F001F +C01E000FE01C0007F03F0007F03F8007F83F8003F83FC003F83F8003F83F8003F81F0007 +F8000007F8000007F0000007F000000FE000000FC000001FC000003F8000007E000001F8 +00007FE000007FFC0000003F0000001FC000000FE0000007F0000007F8000003F8000003 +FC000001FC000001FE000001FE000001FE7E0001FEFF0001FEFF0001FEFF0001FEFF0001 +FEFF0001FCFE0003FC780003FC700007F8380007F03C000FF01F001FE00FE03F8003FFFF +0000FFFC00001FE0001F347DB126>51 D<3C7EFFFFFFFF7E3C0000000000000000000000 +00000000003C7EFEFFFFFF7F3F03030303070606060E0C1C38307060082F7A9F15>59 +D<000000E0000000000000E0000000000000E0000000000001F0000000000001F0000000 +000003F8000000000003F8000000000003F8000000000007FC000000000007FC00000000 +0007FC00000000000DFE00000000000CFE00000000000CFE0000000000187F0000000000 +187F0000000000187F0000000000303F8000000000303F8000000000703FC00000000060 +1FC000000000601FC000000000E01FE000000000C00FE000000000C00FE000000001800F +F0000000018007F0000000018007F0000000030003F8000000030003F8000000030003F8 +000000060001FC000000060001FC0000000E0001FE0000000FFFFFFE0000000FFFFFFE00 +00001FFFFFFF0000001800007F0000001800007F0000003000007F8000003000003F8000 +003000003F8000006000001FC000006000001FC000006000001FC00000C000000FE00000 +C000000FE00001C000000FF00001C0000007F00003E0000007F0001FF000000FF800FFFE +0001FFFFE0FFFE0001FFFFE0FFFE0001FFFFE033367DB53A>65 D<FFFFFE000000FFFFFE +000000FFFFFE00000003FE0000000001FC0000000001FC0000000001FC0000000001FC00 +00000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00 +00000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00 +00000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00 +00000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00 +00018001FC0000018001FC0000018001FC0000018001FC0000038001FC0000030001FC00 +00030001FC0000030001FC0000030001FC0000070001FC0000070001FC00000F0001FC00 +001F0001FC00003F0001FC00007F0001FC0000FE0003FC0007FE00FFFFFFFFFE00FFFFFF +FFFE00FFFFFFFFFE0029337DB230>76 D<FFFE00001FFFF8FFFF00001FFFF8FFFF80001F +FFF800FF800000FF0000FFC000003C0000DFE00000180000CFF00000180000CFF0000018 +0000C7F80000180000C3FC0000180000C3FC0000180000C1FE0000180000C0FF00001800 +00C07F8000180000C07F8000180000C03FC000180000C01FE000180000C01FE000180000 +C00FF000180000C007F800180000C003FC00180000C003FC00180000C001FE00180000C0 +00FF00180000C000FF00180000C0007F80180000C0003FC0180000C0001FE0180000C000 +1FE0180000C0000FF0180000C00007F8180000C00007F8180000C00003FC180000C00001 +FE180000C00000FF180000C00000FF180000C000007F980000C000003FD80000C000003F +D80000C000001FF80000C000000FF80000C0000007F80000C0000007F80000C0000003F8 +0000C0000001F80000C0000001F80001E0000000F80007F80000007800FFFFC000003800 +FFFFC000003800FFFFC00000180035337EB23A>78 D<001FE00300007FFC070001FFFF07 +0007F01FCF000F8003FF001F0000FF003E00007F003E00003F007C00001F007C00001F00 +7800000F00F800000700F800000700F800000700F800000700FC00000300FC00000300FE +00000300FE000000007F000000007FC00000003FF00000003FFF0000001FFFF000000FFF +FF000007FFFFC00003FFFFF00000FFFFF800003FFFFC000003FFFE0000003FFF00000003 +FF00000000FF800000007F800000003F800000001FC00000000FC0C000000FC0C000000F +C0C0000007C0C0000007C0C0000007C0E0000007C0E0000007C0F000000F80F000000F80 +F800000F00FC00001F00FE00003E00FF00007E00FFC000FC00F1FC03F800E0FFFFE000E0 +1FFF8000C003FE000022377CB42B>83 D<7FFFFFFFFFFE7FFFFFFFFFFE7FFFFFFFFFFE7F +8007F001FE7C0007F0003E780007F0001E700007F0000E700007F0000E600007F00006E0 +0007F00007E00007F00007E00007F00007C00007F00003C00007F00003C00007F00003C0 +0007F00003C00007F00003C00007F00003000007F00000000007F00000000007F0000000 +0007F00000000007F00000000007F00000000007F00000000007F00000000007F0000000 +0007F00000000007F00000000007F00000000007F00000000007F00000000007F0000000 +0007F00000000007F00000000007F00000000007F00000000007F00000000007F0000000 +0007F00000000007F00000000007F00000000007F00000000007F00000000007F0000000 +0007F00000000007F0000000000FF80000001FFFFFFC00001FFFFFFC00001FFFFFFC0030 +337DB237>I<FFFFFE001FFFF8FFFFFE001FFFF8FFFFFE001FFFF801FF000000FF0000FE +0000003C0000FE000000180000FE000000180000FE000000180000FE000000180000FE00 +0000180000FE000000180000FE000000180000FE000000180000FE000000180000FE0000 +00180000FE000000180000FE000000180000FE000000180000FE000000180000FE000000 +180000FE000000180000FE000000180000FE000000180000FE000000180000FE00000018 +0000FE000000180000FE000000180000FE000000180000FE000000180000FE0000001800 +00FE000000180000FE000000180000FE000000180000FE000000180000FE000000180000 +FE000000180000FE000000180000FE000000180000FE0000003800007F0000003000007F +0000003000007F0000007000003F8000006000001F800000E000001FC00001C000000FC0 +0003C0000007E0000780000003F0000F00000001FC001E00000000FF00FC000000003FFF +F0000000000FFFC00000000001FF00000035357EB23A>I<FFF0FFF0FFF0FFF0F000F000 +F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 +F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 +F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 +F000F000F000F000F000F000F000F000F000F000F000FFF0FFF0FFF0FFF00C4B79B715> +91 D<FFF0FFF0FFF0FFF000F000F000F000F000F000F000F000F000F000F000F000F000 +F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 +F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 +F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 +F0FFF0FFF0FFF0FFF00C4B7FB715>93 D<007F80000003FFF000000F80FC00001C003E00 +003F003F00003F801F80003F800FC0003F800FC0003F8007E0001F0007E000000007E000 +000007E000000007E000000007E0000001FFE000001FFFE00000FF87E00003FC07E0000F +F007E0001FC007E0003F8007E0007F8007E0007F0007E000FF0007E0C0FE0007E0C0FE00 +07E0C0FE0007E0C0FE000FE0C0FE000FE0C0FF001FE0C07F003BE0C03F8071F1801FC1E1 +FF8007FFC0FF0000FE003C0022237DA126>97 D<03F0000000FFF0000000FFF0000000FF +F000000007F000000003F000000003F000000003F000000003F000000003F000000003F0 +00000003F000000003F000000003F000000003F000000003F000000003F000000003F000 +000003F000000003F03F800003F0FFE00003F3C0F80003F7007E0003FE003F0003FC001F +8003F8000FC003F0000FC003F00007E003F00007F003F00007F003F00003F003F00003F8 +03F00003F803F00003F803F00003F803F00003F803F00003F803F00003F803F00003F803 +F00003F803F00003F803F00003F003F00007F003F00007E003F00007E003F0000FC003F8 +000FC003FC001F8003EC003F0003CF007C00038381F8000301FFE00000007F000025357E +B32B>I<0007F800003FFF0000FC07C001F000E003E003F007C007F00FC007F01F8007F0 +3F8007F03F0003E07F0000007F0000007E000000FE000000FE000000FE000000FE000000 +FE000000FE000000FE000000FE000000FE000000FE0000007F0000007F0000003F000018 +3F8000181F8000381FC000300FC0007007E000E003F001C000FC0F80003FFE000007F000 +1D237EA122>I<0000003F0000000FFF0000000FFF0000000FFF000000007F000000003F +000000003F000000003F000000003F000000003F000000003F000000003F000000003F00 +0000003F000000003F000000003F000000003F000000003F000000003F000007F03F0000 +3FFC3F0000FC0F3F0001F003BF0007E001FF000FC000FF001F80007F001F80003F003F00 +003F003F00003F007F00003F007E00003F00FE00003F00FE00003F00FE00003F00FE0000 +3F00FE00003F00FE00003F00FE00003F00FE00003F00FE00003F00FE00003F007E00003F +007F00003F007F00003F003F00003F001F80007F001F80007F000FC000FF0007E001FF80 +03F007BFFC00F81E3FFC003FFC3FFC000FE03F0026357DB32B>I<000FE000007FFC0000 +F83F0003F00F8007E00FC00FC007E01F8003E01F8003F03F0003F03F0001F07F0001F87E +0001F87E0001F8FE0001F8FE0001F8FFFFFFF8FFFFFFF8FE000000FE000000FE000000FE +000000FE0000007E0000007F0000007F0000003F0000183F0000181F8000380F8000300F +C0007007E000E001F003C000FC0F00003FFE000007F0001D237EA122>I<0001FC000007 +FF00001F0780003E0FC0007C1FC000FC1FC001F81FC001F81FC003F8070003F0000003F0 +000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0 +000003F00000FFFFF000FFFFF000FFFFF00003F0000003F0000003F0000003F0000003F0 +000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0 +000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0 +000003F0000003F0000007F800007FFFE0007FFFE0007FFFE0001A357FB417>I<000000 +1F00001FC07F8000FFF8E3C001F07FC7C007E03F03C00FC01F83800F800F80001F800FC0 +001F0007C0003F0007E0003F0007E0003F0007E0003F0007E0003F0007E0003F0007E000 +1F0007C0001F800FC0000F800F80000FC01F800007E03F000007F07C00000EFFF800000C +1FC000001C000000001C000000001C000000001E000000001E000000001F000000000FFF +FE00000FFFFFC00007FFFFF00003FFFFFC0007FFFFFE001F0001FE003E00007F007C0000 +3F007C00001F80F800000F80F800000F80F800000F80F800000F80F800000F80FC00001F +807C00001F003E00003E001F00007C000FC001F80003F007E00000FFFF8000001FFC0000 +22337EA126>I<03F0000000FFF0000000FFF0000000FFF000000007F000000003F00000 +0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000 +03F000000003F000000003F000000003F000000003F000000003F000000003F01FC00003 +F07FF00003F1E0FC0003F3807C0003F7007E0003FE007E0003FC003F0003FC003F0003F8 +003F0003F8003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F000 +3F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F +0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0007F8007F80 +FFFFC7FFFCFFFFC7FFFCFFFFC7FFFC26347EB32B>I<07800FC01FE01FE01FE01FE00FC0 +0780000000000000000000000000000000000000000007E0FFE0FFE0FFE00FE007E007E0 +07E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E0 +07E007E007E007E00FF0FFFFFFFFFFFF10337EB215>I<07E0FFE0FFE0FFE00FE007E007 +E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007 +E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007 +E007E007E007E007E007E00FF0FFFFFFFFFFFF10347EB315>108 +D<03F01FE000FF0000FFF07FF803FFC000FFF1E07C0F03E000FFF3803E1C01F00007F700 +3F3801F80003FE003F7001F80003FC001FE000FC0003FC001FE000FC0003F8001FC000FC +0003F8001FC000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F000 +1F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC +0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F000 +1F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC +0003F0001F8000FC0003F0001F8000FC0007F8003FC001FE00FFFFC7FFFE3FFFF0FFFFC7 +FFFE3FFFF0FFFFC7FFFE3FFFF03C217EA041>I<03F01FC000FFF07FF000FFF1E0FC00FF +F3807C0007F7007E0003FE007E0003FC003F0003FC003F0003F8003F0003F8003F0003F0 +003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F000 +3F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F +0003F0003F0003F0003F0003F0003F0003F0003F0007F8007F80FFFFC7FFFCFFFFC7FFFC +FFFFC7FFFC26217EA02B>I<0007F00000003FFE000000FC1F800001F007C00003C001E0 +0007C001F0000F8000F8001F00007C001F00007C003F00007E003E00003E007E00003F00 +7E00003F007E00003F00FE00003F80FE00003F80FE00003F80FE00003F80FE00003F80FE +00003F80FE00003F80FE00003F807E00003F007E00003F007E00003F003F00007E003F00 +007E001F00007C001F8000FC000FC001F80007C001F00003F007E00000FC1F8000003FFE +00000007F0000021237EA126>I<03F03F8000FFF0FFE000FFF3C0F800FFF7007E0007FE +003F0003FC001F8003F8001FC003F0000FC003F0000FE003F00007F003F00007F003F000 +07F003F00003F803F00003F803F00003F803F00003F803F00003F803F00003F803F00003 +F803F00003F803F00003F803F00007F803F00007F003F00007F003F00007E003F0000FE0 +03F0000FC003F8001FC003FC003F8003FC003F0003FF00FC0003F381F80003F1FFE00003 +F07F000003F000000003F000000003F000000003F000000003F000000003F000000003F0 +00000003F000000003F000000003F000000007F8000000FFFFC00000FFFFC00000FFFFC0 +000025307EA02B>I<03E07C00FFE1FF00FFE38F80FFE71FC007EE1FC003EC1FC003EC1F +C003FC0F8003F8000003F8000003F8000003F0000003F0000003F0000003F0000003F000 +0003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F000 +0003F0000003F0000003F0000003F0000007F80000FFFFE000FFFFE000FFFFE0001A217F +A01E>114 D<00FF060007FFCE001F00FE003C003E0078001E0078000E00F0000E00F000 +0600F0000600F8000600F8000600FE000000FF8000007FFC00003FFFC0003FFFF0000FFF +F80007FFFC0000FFFE00000FFF000000FF0000003F80C0001F80C0000F80E0000780E000 +0780E0000780F0000780F0000700F8000F00FC000E00FE001C00F7807800E1FFE000C07F +800019237EA11E>I<00300000300000300000300000300000700000700000700000F000 +00F00001F00001F00003F00007F0001FFFFEFFFFFEFFFFFE03F00003F00003F00003F000 +03F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F003 +03F00303F00303F00303F00303F00303F00303F00303F00701F80601F80600FC0E007E1C +001FF80007E0182F7FAD1E>I<03F0003F00FFF00FFF00FFF00FFF00FFF00FFF0007F000 +7F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F +0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F00 +03F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0007F0003F0007F0003 +F0007F0003F000FF0001F000FF0001F801FF8000F803BFFC007E073FFC001FFE3FFC0007 +F83F0026227EA02B>I<FFFF00FFF0FFFF00FFF0FFFF00FFF00FF0003F8007F0001F0003 +F0000E0003F0000C0003F8001C0001F800180001F800180000FC00300000FC00300000FE +007000007E006000007F006000003F00C000003F00C000001F818000001F818000001FC3 +8000000FC30000000FC300000007E600000007E600000007FE00000003FC00000003FC00 +000001F800000001F800000001F800000000F000000000F00000000060000024217E9F29 +>I<FFFF1FFF81FFF0FFFF1FFF81FFF0FFFF1FFF81FFF007F801FC003F8007F001F8001E +0003F000F8001C0003F000FC001C0001F8007C00180001F8007C00180001FC007E003800 +00FC00FE00300000FC00FE003000007E01FF006000007E019F006000007E019F80600000 +3F030F80C000003F030F80C000003F030FC0C000001F8607C18000001F8607C18000001F +C607E38000000FCC03E30000000FCC03E300000007FC03F600000007F801F600000007F8 +01FE00000003F000FC00000003F000FC00000003F000FC00000001E0007800000001E000 +7800000001E0007800000000C00030000034217F9F37>I<FFFF01FFF8FFFF01FFF8FFFF +01FFF803FE00FF8001FC007C0000FC007800007E007000007F00E000003F81C000001F83 +8000000FC300000007E600000007FE00000003FC00000001F800000000FC00000000FE00 +000000FF00000001FF000000039F800000071FC00000060FE000000C07E000001C03F000 +003801F800007001FC0000F000FC0001F000FE000FF000FF80FFFC03FFFCFFFC03FFFCFF +FC03FFFC26207F9F29>I<7FFF807FF87FFF807FF87FFF807FF807F8001FC003F8000F80 +01F800070001F800060000FC000C0000FC000C0000FE001C00007E001800007E00180000 +3F003000003F003000003F807000001F806000001FC0E000000FC0C000000FC0C0000007 +E180000007E180000007F380000003F300000003FB00000001FE00000001FE00000000FC +00000000FC00000000FC0000000078000000007800000000300000000030000000006000 +0000006000000000E000000000C000000000C0000000018000007801800000FC03000000 +FC03000000FC06000000FC0E000000701C00000078380000001FF00000000FC000000025 +307F9F29>I E /Fj 5 53 df<0000380000000038000000003800000000380000000038 +000000003800000000380000000038000000003800000000380000000038000000003800 +00000038000000003800000000380000000038000000003800000000380000FFFFFFFFFE +FFFFFFFFFEFFFFFFFFFE0000380000000038000000003800000000380000000038000000 +003800000000380000000038000000003800000000380000000038000000003800000000 +3800000000380000000038000000003800000000380000000038000027277C9F2F>43 +D<00E00001E00007E000FFE000F9E00001E00001E00001E00001E00001E00001E00001E0 +0001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0 +0001E00001E00001E00001E00001E00001E00003F000FFFFC0FFFFC012217AA01E>49 +D<01FC0007FF801C0FC03003E06001F06000F8F800F8FC00FCFC00FCFC007C78007C3000 +FC0000FC0000F80000F80001F00003E00003C0000780000F00001E0000380000700000E0 +0001C00C03800C0600180C00181800183FFFF87FFFF8FFFFF0FFFFF016217CA01E>I<00 +FF0003FFC00F03E01C00F01C00F83E00FC3E007C3E007C1E00FC0C00FC0000F80000F800 +01F00003E0000FC001FF0001FF000003E00000F000007800007C00003E00003F30003F78 +003FFC003FFC003FFC003EF8007E60007C3800F81E03F00FFFC001FF0018227DA01E>I< +0000E00001E00001E00003E00007E00007E0000DE0001DE00039E00031E00061E000E1E0 +00C1E00181E00381E00701E00601E00C01E01C01E01801E03001E07001E0E001E0FFFFFF +FFFFFF0001E00001E00001E00001E00001E00001E00003F0003FFF003FFF18227DA11E> +I E /Fk 5 107 df<000FFC0000003FFF000000FFFFC00003FFFFF00007FFFFF8000FFF +FFFC001FFFFFFE003FFFFFFF003FFFFFFF007FFFFFFF807FFFFFFF807FFFFFFF80FFFFFF +FFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFF +C0FFFFFFFFC0FFFFFFFFC07FFFFFFF807FFFFFFF807FFFFFFF803FFFFFFF003FFFFFFF00 +1FFFFFFE000FFFFFFC0007FFFFF80003FFFFF00000FFFFC000003FFF0000000FFC000022 +227BA72D>15 D<0000000000000030000000000000000000780000000000000000007800 +00000000000000007C0000000000000000003C0000000000000000003C00000000000000 +00003E0000000000000000001E0000000000000000001E0000000000000000001F000000 +0000000000000F8000000000000000000F80000000000000000007C00000000000000000 +03E0000000000000000003E0000000000000000001F0000000000000000000F800000000 +00000000007C0000000000000000007E0000000000000000001F8000000000000000000F +C0000000000000000007F07FFFFFFFFFFFFFFFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFF7FFFFFFFFFFFFFFFFFFC000000000000000007F000000000000000000FC000 +000000000000001F8000000000000000007E0000000000000000007C0000000000000000 +00F8000000000000000001F0000000000000000003E0000000000000000003E000000000 +0000000007C000000000000000000F8000000000000000000F8000000000000000001F00 +00000000000000001E0000000000000000001E0000000000000000003E00000000000000 +00003C0000000000000000003C0000000000000000007C00000000000000000078000000 +0000000000007800000000000000000030000050307BAE5B>33 D<0000003F000003FF00 +000FE000003F8000007E000001FC000001F8000003F0000003F0000007E0000007E00000 +07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000 +07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000 +07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000000FE00000 +0FC000001FC000003F8000003F000000FE000003F800007FE00000FF0000007FE0000003 +F8000000FE0000003F0000003F8000001FC000000FC000000FE0000007E0000007E00000 +07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000 +07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000 +07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000003F00000 +03F0000001F8000001FC0000007E0000003F8000000FE0000003FF0000003F205B7AC32D +>102 D<FC000000FFC0000007F0000001FC0000007E0000003F8000001F8000000FC000 +000FC0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 +0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 +0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 +0007E0000007E0000007F0000003F0000003F8000001FC000000FC0000007F0000001FC0 +000007FE000000FF000007FE00001FC000007F000000FC000001FC000003F8000003F000 +0007F0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 +0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 +0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 +0007E0000007E000000FC000000FC000001F8000003F8000007E000001FC000007F00000 +FFC00000FC000000205B7AC32D>I<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 +F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 +F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F060045B +76C319>106 D E /Fl 4 53 df<000C00003C00007C0003FC00FFFC00FC7C00007C0000 +7C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0000 +7C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0000 +7C00007C00007C00007C00007C00007C00007C00007C00007C00007C0000FE007FFFFE7F +FFFE172C7AAB23>49 D<007F800001FFF0000780FC000E003F001C001F8038000FC07000 +0FC0600007E0F00007E0FC0007F0FE0007F0FE0003F0FE0003F0FE0003F07C0007F00000 +07F0000007F0000007E000000FE000000FC000001FC000001F8000003F0000007E000000 +7C000000F8000001F0000003E0000007C000000F8000001E0000003C00000078000000F0 +003000E0003001C0003003800060070000600E0000E01FFFFFE03FFFFFE07FFFFFC0FFFF +FFC0FFFFFFC01C2C7DAB23>I<003FC00001FFF00007C0FC000E007E001C003F001C001F +803F001FC03F001FC03F800FC03F000FC03F000FC00C001FC000001FC000001F8000001F +8000003F0000003E0000007C000000F8000003F00000FFC00000FFF0000000FC0000003F +0000001F8000001FC000000FC000000FE000000FE0000007F0000007F0380007F07C0007 +F0FE0007F0FE0007F0FE0007F0FE000FE0F8000FE060000FC070001FC038001F801E003F +000780FC0001FFF000007FC0001C2D7DAB23>I<00000E0000000E0000001E0000003E00 +00003E0000007E000000FE000000FE000001BE000003BE0000033E0000063E00000E3E00 +000C3E0000183E0000383E0000303E0000603E0000E03E0000C03E0001803E0003803E00 +03003E0006003E000E003E000C003E0018003E0038003E0030003E0060003E00E0003E00 +FFFFFFFCFFFFFFFC00003E0000003E0000003E0000003E0000003E0000003E0000003E00 +00003E0000003E0000007F00001FFFFC001FFFFC1E2D7EAC23>I +E /Fm 52 122 df<000000FFF8000000000FFFFF000000007FFFFF80000001FFFFFFE000 +0007FFC01FF000000FFE0007F000001FF8000FF800003FE0001FF800007FC0003FFC0000 +FFC0003FFC0000FF80003FFC0001FF80003FFC0001FF00003FFC0001FF00003FFC0001FF +00001FF80001FF00000FF00001FF000003C00001FF000000000001FF000000000001FF00 +0000000001FF000000000001FF000000000001FF000000000001FF000003FC00FFFFFFFF +FFFC00FFFFFFFFFFFC00FFFFFFFFFFFC00FFFFFFFFFFFC00FFFFFFFFFFFC0001FF80001F +FC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC +0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC00 +01FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001 +FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF +80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80 +000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC007FFFFE03FFFFF07FFFFE03 +FFFFF07FFFFE03FFFFF07FFFFE03FFFFF07FFFFE03FFFFF034407EBF3A>12 +D<0FC0001F801FE0003FC03FF0007FE07FF800FFF0FFFC01FFF8FFFC01FFF8FFFC01FFF8 +FFFE01FFFCFFFE01FFFCFFFE01FFFC7FFE00FFFC3FFE007FFC1FFE003FFC0FDE001FBC00 +1E00003C001E00003C003E00007C003C000078003C000078007C0000F800780000F00078 +0000F000F80001F001F00003E001F00003E003E00007C007C0000F800F80001F001F8000 +3F003F00007E003E00007C001C0000380026207DBE37>34 D<FFFFFFE0FFFFFFE0FFFFFF +E0FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE01B097F9823>45 +D<0FC01FE03FF07FF8FFFCFFFCFFFCFFFCFFFCFFFC7FF83FF01FE00FC00E0E798D1D>I< +0000FFE000000007FFFC0000001FFFFF0000007FFFFFC00000FFE0FFE00001FF803FF000 +03FE000FF80007FC0007FC0007FC0007FC000FF80003FE001FF80003FF001FF80003FF00 +1FF80003FF003FF00001FF803FF00001FF803FF00001FF807FF00001FFC07FF00001FFC0 +7FF00001FFC07FF00001FFC07FF00001FFC0FFF00001FFE0FFF00001FFE0FFF00001FFE0 +FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0 +FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0 +FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE07FF00001FFC0 +7FF00001FFC07FF00001FFC07FF00001FFC07FF00001FFC03FF00001FF803FF80003FF80 +3FF80003FF801FF80003FF001FF80003FF000FF80003FE000FFC0007FE0007FE000FFC00 +03FF001FF80001FF803FF00000FFE0FFE000007FFFFFC000001FFFFF00000007FFFC0000 +0000FFE000002B3D7CBB34>48 D<00000F000000003F000000007F00000001FF0000000F +FF000001FFFF0000FFFFFF0000FFFFFF0000FFFFFF0000FFF7FF0000FE07FF00000007FF +00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00 +000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF0000 +0007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF000000 +07FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007 +FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF +00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00 +00FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0243C78BB34>I<0003FF +800000003FFFF8000000FFFFFE000003FFFFFF800007FFFFFFC0000FF80FFFE0001FC003 +FFF0003F8000FFF8007FC0007FFC007FE0003FFE00FFF0003FFE00FFF8001FFF00FFF800 +1FFF00FFF8000FFF80FFF8000FFF80FFF8000FFF80FFF8000FFF807FF0000FFF803FE000 +0FFF801FC0000FFF800700000FFF800000000FFF800000001FFF000000001FFF00000000 +1FFE000000003FFE000000003FFC000000007FF8000000007FF800000000FFF000000000 +FFE000000001FFC000000003FF8000000007FE0000000007FC000000000FF8000000001F +E0000000003FC0000000007F8000000000FF000F800001FC000F800003F8000F800007F0 +001F00000FE0001F00001F80001F00003F00001F00007E00003F0000FC00003F0001FFFF +FFFF0003FFFFFFFE0007FFFFFFFE000FFFFFFFFE001FFFFFFFFE003FFFFFFFFE007FFFFF +FFFE00FFFFFFFFFE00FFFFFFFFFC00FFFFFFFFFC00FFFFFFFFFC00FFFFFFFFFC00293C7B +BB34>I<0001FFE00000000FFFFE0000003FFFFF800000FFFFFFE00001FF81FFF00003FC +007FF80007F0003FFC0007F0003FFE000FFC001FFE000FFE001FFF001FFE001FFF001FFF +001FFF001FFF001FFF001FFF001FFF001FFF001FFF001FFF001FFF000FFE001FFF000FFE +001FFE0007FC003FFE0001F0003FFC000000003FFC000000007FF8000000007FF0000000 +00FFE000000001FFC00000000FFF80000007FFFE00000007FFF800000007FFFE00000007 +FFFFC000000001FFF0000000007FF8000000003FFC000000001FFE000000000FFF000000 +000FFF800000000FFF8000000007FFC000000007FFC000000007FFE00FC00007FFE01FE0 +0007FFE03FF00007FFE07FF80007FFE0FFFC0007FFE0FFFC0007FFE0FFFC0007FFE0FFFC +0007FFC0FFFC0007FFC0FFFC000FFFC0FFF8000FFF807FF8000FFF807FF0001FFF003FC0 +003FFE001FE0007FFC000FFE01FFF80007FFFFFFF00003FFFFFFE00000FFFFFF8000003F +FFFE00000003FFE000002B3D7CBB34>I<00000001F80000000003F80000000007F80000 +000007F8000000000FF8000000001FF8000000003FF8000000003FF8000000007FF80000 +0000FFF800000001FFF800000003FFF800000003FFF800000007FFF80000000FFFF80000 +001FBFF80000003F3FF80000003E3FF80000007C3FF8000000FC3FF8000001F83FF80000 +01F03FF8000003E03FF8000007E03FF800000FC03FF800001F803FF800001F003FF80000 +3E003FF800007E003FF80000FC003FF80001F8003FF80001F0003FF80003E0003FF80007 +E0003FF8000FC0003FF8000F80003FF8001F00003FF8003F00003FF8007E00003FF800FC +00003FF800FFFFFFFFFFF8FFFFFFFFFFF8FFFFFFFFFFF8FFFFFFFFFFF8FFFFFFFFFFF800 +00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000 +00007FF8000000007FF8000000007FF8000000007FF8000001FFFFFFF80001FFFFFFF800 +01FFFFFFF80001FFFFFFF80001FFFFFFF82D3C7DBB34>I<0700000038000FE00001F800 +0FFE003FF8000FFFFFFFF8000FFFFFFFF0000FFFFFFFE0000FFFFFFFC0000FFFFFFF8000 +0FFFFFFF00000FFFFFFE00000FFFFFF800000FFFFFF000000FFFFFC000000FFFFE000000 +0F80000000000F80000000000F80000000000F80000000000F80000000000F8000000000 +0F80000000000F80000000000F80000000000F80FFC000000F87FFFC00000F9FFFFF0000 +0FFFFFFF80000FFF01FFE0000FF8007FF0000FF0003FF8000FC0001FFC000F80001FFC00 +0700001FFE000000000FFE000000000FFF000000000FFF000000000FFF000000000FFF80 +0000000FFF800700000FFF801FC0000FFF803FE0000FFF807FF0000FFF80FFF0000FFF80 +FFF8000FFF80FFF8000FFF80FFF8000FFF00FFF8000FFF00FFF0000FFF00FFF0001FFE00 +7FE0001FFE007F80001FFC003F00003FFC003F80007FF8001FE000FFF0000FFC07FFE000 +07FFFFFFC00003FFFFFF000000FFFFFC0000003FFFF000000007FF000000293D7BBB34> +I<000007FF000000003FFFC0000001FFFFF0000007FFFFF800000FFF03FC00003FF800FC +00007FE001FE0000FFC003FE0001FF8007FF0003FF000FFF0003FF000FFF0007FE000FFF +000FFE000FFF000FFE000FFF001FFC000FFF001FFC0007FE003FFC0003FC003FFC0001F8 +003FFC000000007FF8000000007FF8000000007FF8020000007FF83FFE0000FFF87FFF80 +00FFF9FFFFE000FFFBFFFFF000FFFBE03FF800FFFF800FFC00FFFF0007FE00FFFF0007FF +00FFFE0007FF00FFFE0003FF80FFFC0003FFC0FFFC0003FFC0FFFC0003FFC0FFFC0003FF +E0FFF80003FFE0FFF80003FFE0FFF80003FFE0FFF80003FFE07FF80003FFE07FF80003FF +E07FF80003FFE07FF80003FFE07FF80003FFE03FF80003FFE03FF80003FFE03FFC0003FF +C01FFC0003FFC01FFC0003FFC00FFC0007FF800FFE0007FF0007FE0007FF0003FF000FFE +0001FF801FFC0000FFE07FF800007FFFFFF000003FFFFFE000001FFFFF80000007FFFE00 +000000FFF000002B3D7CBB34>I<1F00000000001F80000000001FF8000000001FFFFFFF +FFF01FFFFFFFFFF01FFFFFFFFFF01FFFFFFFFFF03FFFFFFFFFF03FFFFFFFFFE03FFFFFFF +FFC03FFFFFFFFF803FFFFFFFFF003FFFFFFFFE003FFFFFFFFC007FFFFFFFFC007E000001 +F8007E000003F0007C000007E0007C00000FC0007C00001F80007C00001F0000F800003F +0000F800007E0000F80000FC0000000001F80000000003F00000000003F00000000007E0 +000000000FE0000000000FC0000000001FC0000000003FC0000000003F80000000007F80 +000000007F8000000000FF8000000000FF0000000001FF0000000001FF0000000003FF00 +00000003FF0000000003FF0000000007FE0000000007FE0000000007FE000000000FFE00 +0000000FFE000000000FFE000000000FFE000000000FFE000000001FFE000000001FFE00 +0000001FFE000000001FFE000000001FFE000000001FFE000000001FFE000000001FFE00 +0000001FFE000000001FFE000000000FFC0000000007F80000000003F00000002C3F7ABD +34>I<0000FFF000000007FFFE0000001FFFFF8000007FFFFFE00000FFC07FF00001FE00 +1FF80003FC000FFC0007F80007FE0007F80003FE000FF00003FE000FF00003FF000FF000 +01FF001FF00001FF001FF00001FF001FF80001FF001FFC0001FF001FFE0001FF001FFF00 +03FF001FFFC003FE001FFFF003FE000FFFF807FC000FFFFE0FF8000FFFFF9FF00007FFFF +FFE00003FFFFFFC00003FFFFFF800001FFFFFF000000FFFFFF8000007FFFFFE000001FFF +FFF000003FFFFFF80000FFFFFFFC0001FFFFFFFE0007FE3FFFFF000FFC1FFFFF801FF807 +FFFF801FF001FFFFC03FE0007FFFC07FE0003FFFC07FC0000FFFE07FC00003FFE0FF8000 +01FFE0FF800000FFE0FF8000007FE0FF8000007FE0FF8000003FE0FF8000003FE0FF8000 +003FE0FFC000003FC07FC000003FC07FC000007F807FE000007F803FF00000FF001FF800 +01FF001FFE0007FE000FFFC03FFC0007FFFFFFF80001FFFFFFE000007FFFFFC000001FFF +FE00000001FFF000002B3D7CBB34>I<0001FFE00000000FFFFC0000003FFFFF000000FF +FFFFC00001FFE0FFE00003FF003FF00007FE001FF8000FFE000FFC001FFC000FFC001FFC +0007FE003FFC0007FE007FF80007FF007FF80003FF007FF80003FF80FFF80003FF80FFF8 +0003FF80FFF80003FFC0FFF80003FFC0FFF80003FFC0FFF80003FFC0FFF80003FFC0FFF8 +0003FFE0FFF80003FFE0FFF80003FFE0FFF80003FFE07FF80007FFE07FF80007FFE07FF8 +0007FFE07FF80007FFE03FF8000FFFE01FFC000FFFE01FFC001FFFE00FFE001FFFE007FE +003FFFE003FF80FBFFE001FFFFFBFFE0007FFFF3FFE0003FFFC3FFE0000FFF83FFC00000 +0803FFC000000003FFC000000003FFC000000007FF8003F00007FF8007F80007FF800FFC +0007FF001FFE0007FF001FFE000FFE001FFE000FFE001FFE000FFC001FFE001FFC001FFE +003FF8001FFC003FF0000FF800FFE0000FF001FFC00007FC0FFF800003FFFFFF000001FF +FFFC000000FFFFF00000007FFFC00000000FFE0000002B3D7CBB34>I<0FC01FE03FF07F +F8FFFCFFFCFFFCFFFCFFFCFFFC7FF83FF01FE00FC0000000000000000000000000000000 +0000000000000000000FC01FE03FF07FF8FFFCFFFCFFFCFFFCFFFCFFFC7FF83FF01FE00F +C00E2879A71D>I<00000000FC0000000000000000FC0000000000000001FE0000000000 +000001FE0000000000000003FF0000000000000003FF0000000000000003FF0000000000 +000007FF8000000000000007FF800000000000000FFFC00000000000000FFFC000000000 +00000FFFC00000000000001FFFE00000000000001FFFE00000000000003FFFF000000000 +00003FFFF00000000000003FFFF00000000000007FFFF80000000000007CFFF800000000 +0000FCFFFC000000000000F87FFC000000000000F87FFC000000000001F87FFE00000000 +0001F03FFE000000000003F03FFF000000000003E01FFF000000000007E01FFF80000000 +0007C01FFF800000000007C00FFF80000000000FC00FFFC0000000000F8007FFC0000000 +001F8007FFE0000000001F0007FFE0000000001F0003FFE0000000003F0003FFF0000000 +003E0001FFF0000000007E0001FFF8000000007C0000FFF8000000007C0000FFF8000000 +00FC0000FFFC00000000F800007FFC00000001FFFFFFFFFE00000001FFFFFFFFFE000000 +01FFFFFFFFFE00000003FFFFFFFFFF00000003FFFFFFFFFF00000007E000001FFF800000 +07C000000FFF8000000FC000000FFFC000000F8000000FFFC000000F80000007FFC00000 +1F80000007FFE000001F00000003FFE000003F00000003FFF000003E00000003FFF00000 +3E00000001FFF000007E00000001FFF800007C00000000FFF800FFFFFC0000FFFFFFFCFF +FFFC0000FFFFFFFCFFFFFC0000FFFFFFFCFFFFFC0000FFFFFFFCFFFFFC0000FFFFFFFC46 +3F7CBE4F>65 D<FFFFFFFFFFF80000FFFFFFFFFFFF8000FFFFFFFFFFFFF000FFFFFFFFFF +FFFC00FFFFFFFFFFFFFE00003FFC00003FFF00003FFC00000FFF80003FFC000007FFC000 +3FFC000003FFE0003FFC000001FFE0003FFC000001FFF0003FFC000001FFF0003FFC0000 +00FFF8003FFC000000FFF8003FFC000000FFF8003FFC000000FFF8003FFC000000FFF800 +3FFC000000FFF8003FFC000000FFF8003FFC000000FFF0003FFC000001FFF0003FFC0000 +01FFF0003FFC000003FFE0003FFC000003FFC0003FFC000007FF80003FFC00000FFF0000 +3FFC00003FFE00003FFC0001FFF800003FFFFFFFFFE000003FFFFFFFFF8000003FFFFFFF +FFF800003FFFFFFFFFFE00003FFC00000FFF80003FFC000003FFC0003FFC000001FFE000 +3FFC000000FFF0003FFC000000FFF8003FFC0000007FFC003FFC0000007FFC003FFC0000 +003FFE003FFC0000003FFE003FFC0000003FFF003FFC0000003FFF003FFC0000003FFF00 +3FFC0000001FFF003FFC0000003FFF003FFC0000003FFF003FFC0000003FFF003FFC0000 +003FFF003FFC0000003FFE003FFC0000007FFE003FFC0000007FFE003FFC000000FFFC00 +3FFC000001FFF8003FFC000003FFF8003FFC000007FFF0003FFC00003FFFE0FFFFFFFFFF +FFFFC0FFFFFFFFFFFFFF00FFFFFFFFFFFFFC00FFFFFFFFFFFFF000FFFFFFFFFFFF000040 +3E7DBD4A>I<00000007FFC0000E000000FFFFFC001E000007FFFFFF003E00003FFFFFFF +C07E0000FFFFFFFFE1FE0003FFFF803FFBFE0007FFF80003FFFE000FFFC00000FFFE003F +FF0000007FFE007FFE0000001FFE00FFF80000000FFE01FFF000000007FE03FFE0000000 +07FE03FFC000000003FE07FFC000000001FE0FFF8000000001FE0FFF8000000000FE1FFF +0000000000FE1FFF00000000007E3FFF00000000007E3FFE00000000007E3FFE00000000 +003E7FFE00000000003E7FFE00000000003E7FFE00000000003E7FFC000000000000FFFC +000000000000FFFC000000000000FFFC000000000000FFFC000000000000FFFC00000000 +0000FFFC000000000000FFFC000000000000FFFC000000000000FFFC000000000000FFFC +000000000000FFFC000000000000FFFC0000000000007FFC0000000000007FFE00000000 +00007FFE00000000003E7FFE00000000003E3FFE00000000003E3FFE00000000003E3FFF +00000000003E1FFF00000000007E1FFF00000000007C0FFF80000000007C0FFF80000000 +00FC07FFC000000000F803FFE000000001F803FFE000000001F001FFF000000003F000FF +F800000007E0007FFE0000000FC0003FFF0000003F80000FFFC00000FF000007FFF80003 +FE000003FFFF801FFC000000FFFFFFFFF80000003FFFFFFFE000000007FFFFFF80000000 +00FFFFFC000000000007FFC000003F407ABE4C>I<FFFFFFFFFFF8000000FFFFFFFFFFFF +800000FFFFFFFFFFFFF00000FFFFFFFFFFFFFC0000FFFFFFFFFFFFFF0000003FFC00007F +FFC000003FFC000007FFE000003FFC000001FFF000003FFC0000007FF800003FFC000000 +3FFC00003FFC0000001FFE00003FFC0000000FFF00003FFC00000007FF80003FFC000000 +07FF80003FFC00000003FFC0003FFC00000003FFC0003FFC00000001FFE0003FFC000000 +01FFE0003FFC00000001FFF0003FFC00000000FFF0003FFC00000000FFF0003FFC000000 +00FFF8003FFC00000000FFF8003FFC00000000FFF8003FFC00000000FFF8003FFC000000 +00FFFC003FFC00000000FFFC003FFC00000000FFFC003FFC00000000FFFC003FFC000000 +00FFFC003FFC000000007FFC003FFC000000007FFC003FFC000000007FFC003FFC000000 +00FFFC003FFC00000000FFFC003FFC00000000FFFC003FFC00000000FFFC003FFC000000 +00FFFC003FFC00000000FFF8003FFC00000000FFF8003FFC00000000FFF8003FFC000000 +00FFF8003FFC00000000FFF0003FFC00000000FFF0003FFC00000001FFF0003FFC000000 +01FFE0003FFC00000001FFE0003FFC00000003FFC0003FFC00000003FFC0003FFC000000 +07FF80003FFC0000000FFF00003FFC0000001FFF00003FFC0000003FFE00003FFC000000 +7FFC00003FFC000001FFF800003FFC000007FFE000003FFC00007FFFC000FFFFFFFFFFFF +FF8000FFFFFFFFFFFFFE0000FFFFFFFFFFFFF80000FFFFFFFFFFFFC00000FFFFFFFFFFF8 +000000463E7DBD50>I<FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFF +FFFFFFFFFF00FFFFFFFFFFFFFF80003FFE00003FFF80003FFE000007FF80003FFE000001 +FF80003FFE000000FF80003FFE0000003F80003FFE0000003F80003FFE0000001F80003F +FE0000000FC0003FFE0000000FC0003FFE0000000FC0003FFE00000007C0003FFE0007C0 +07C0003FFE0007C007C0003FFE0007C007C0003FFE0007C003E0003FFE0007C003E0003F +FE0007C003E0003FFE000FC003E0003FFE000FC00000003FFE001FC00000003FFE003FC0 +0000003FFE00FFC00000003FFFFFFFC00000003FFFFFFFC00000003FFFFFFFC00000003F +FFFFFFC00000003FFFFFFFC00000003FFE00FFC00000003FFE003FC00000003FFE001FC0 +0000003FFE000FC0007C003FFE000FC0007C003FFE0007C0007C003FFE0007C000F8003F +FE0007C000F8003FFE0007C000F8003FFE0007C000F8003FFE0007C000F8003FFE000000 +01F8003FFE00000001F8003FFE00000001F0003FFE00000003F0003FFE00000003F0003F +FE00000007F0003FFE00000007F0003FFE0000000FF0003FFE0000001FE0003FFE000000 +3FE0003FFE000000FFE0003FFE000003FFE0003FFE00003FFFE0FFFFFFFFFFFFFFE0FFFF +FFFFFFFFFFE0FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC03E3D7DBC45> +I<FFFFFFFFFFFFFE00FFFFFFFFFFFFFE00FFFFFFFFFFFFFE00FFFFFFFFFFFFFE00FFFFFF +FFFFFFFF00003FFE00007FFF00003FFE00000FFF00003FFE000003FF00003FFE000000FF +00003FFE0000007F00003FFE0000007F00003FFE0000003F00003FFE0000001F80003FFE +0000001F80003FFE0000001F80003FFE0000000F80003FFE0000000F80003FFE0007C00F +80003FFE0007C00F80003FFE0007C007C0003FFE0007C007C0003FFE0007C007C0003FFE +0007C007C0003FFE000FC00000003FFE000FC00000003FFE001FC00000003FFE003FC000 +00003FFE00FFC00000003FFFFFFFC00000003FFFFFFFC00000003FFFFFFFC00000003FFF +FFFFC00000003FFFFFFFC00000003FFE00FFC00000003FFE003FC00000003FFE001FC000 +00003FFE000FC00000003FFE000FC00000003FFE0007C00000003FFE0007C00000003FFE +0007C00000003FFE0007C00000003FFE0007C00000003FFE0007C00000003FFE00000000 +00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE +0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000 +00003FFE0000000000003FFE0000000000FFFFFFFFE0000000FFFFFFFFE0000000FFFFFF +FFE0000000FFFFFFFFE0000000FFFFFFFFE00000003A3D7DBC42>I<FFFFFFFF80FFFFFF +FF80FFFFFFFF80FFFFFFFF80FFFFFFFF80003FFE0000003FFE0000003FFE0000003FFE00 +00003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000 +003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE000000 +3FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003F +FE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE +0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE00 +00003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000 +003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000FFFFFFFF80FFFFFFFF80FF +FFFFFF80FFFFFFFF80FFFFFFFF80213E7DBD28>73 D<FFFFFFFFE00000FFFFFFFFE00000 +FFFFFFFFE00000FFFFFFFFE00000FFFFFFFFE00000003FFE00000000003FFE0000000000 +3FFE00000000003FFE00000000003FFE00000000003FFE00000000003FFE00000000003F +FE00000000003FFE00000000003FFE00000000003FFE00000000003FFE00000000003FFE +00000000003FFE00000000003FFE00000000003FFE00000000003FFE00000000003FFE00 +000000003FFE00000000003FFE00000000003FFE00000000003FFE00000000003FFE0000 +0000003FFE00000000003FFE00000000003FFE00000000003FFE00000000003FFE000000 +00003FFE00000000003FFE00000000003FFE00000000003FFE0000003E003FFE0000003E +003FFE0000003E003FFE0000003E003FFE0000007E003FFE0000007C003FFE0000007C00 +3FFE0000007C003FFE0000007C003FFE000000FC003FFE000000FC003FFE000001FC003F +FE000001FC003FFE000003F8003FFE000003F8003FFE000007F8003FFE00000FF8003FFE +00001FF8003FFE00007FF8003FFE0001FFF8003FFE000FFFF8FFFFFFFFFFFFF8FFFFFFFF +FFFFF0FFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFFFFFFF0373E7DBD3F>76 +D<0000003FFF00000000000003FFFFF000000000001FFFFFFE00000000007FFFFFFF8000 +000001FFF807FFE000000007FFC000FFF80000000FFF00003FFC0000003FFC00000FFF00 +00007FF8000007FF800000FFF0000003FFC00001FFE0000001FFE00001FFC0000000FFE0 +0003FFC0000000FFF00007FF800000007FF80007FF800000007FF8000FFF000000003FFC +001FFF000000003FFE001FFF000000003FFE001FFE000000001FFE003FFE000000001FFF +003FFE000000001FFF003FFE000000001FFF007FFC000000000FFF807FFC000000000FFF +807FFC000000000FFF807FFC000000000FFF80FFFC000000000FFFC0FFFC000000000FFF +C0FFFC000000000FFFC0FFFC000000000FFFC0FFFC000000000FFFC0FFFC000000000FFF +C0FFFC000000000FFFC0FFFC000000000FFFC0FFFC000000000FFFC0FFFC000000000FFF +C0FFFC000000000FFFC0FFFC000000000FFFC0FFFC000000000FFFC07FFC000000000FFF +807FFE000000001FFF807FFE000000001FFF807FFE000000001FFF803FFE000000001FFF +003FFE000000001FFF003FFF000000003FFF001FFF000000003FFE001FFF000000003FFE +000FFF800000007FFC000FFF800000007FFC0007FFC0000000FFF80003FFE0000001FFF0 +0003FFE0000001FFF00001FFF0000003FFE00000FFF8000007FFC000007FFC00000FFF80 +00003FFF00003FFF0000001FFFC000FFFE00000007FFF807FFF800000001FFFFFFFFE000 +000000FFFFFFFFC0000000001FFFFFFE000000000003FFFFF00000000000003FFF000000 +0042407ABE4F>79 D<FFFFFFFFFFF00000FFFFFFFFFFFF0000FFFFFFFFFFFFC000FFFFFF +FFFFFFF000FFFFFFFFFFFFFC00003FFC0000FFFE00003FFC00001FFF00003FFC00000FFF +80003FFC000007FFC0003FFC000003FFE0003FFC000003FFE0003FFC000001FFF0003FFC +000001FFF0003FFC000001FFF0003FFC000001FFF8003FFC000001FFF8003FFC000001FF +F8003FFC000001FFF8003FFC000001FFF8003FFC000001FFF8003FFC000001FFF8003FFC +000001FFF8003FFC000001FFF0003FFC000001FFF0003FFC000001FFF0003FFC000003FF +E0003FFC000003FFC0003FFC000007FFC0003FFC00000FFF80003FFC00003FFF00003FFC +0000FFFE00003FFFFFFFFFF800003FFFFFFFFFF000003FFFFFFFFF8000003FFFFFFFFC00 +00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE +0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000 +00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE +0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000 +00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000FFFFFF +FF80000000FFFFFFFF80000000FFFFFFFF80000000FFFFFFFF80000000FFFFFFFF800000 +003D3E7DBD47>I<FFFFFFFFFF8000000000FFFFFFFFFFFC00000000FFFFFFFFFFFF8000 +0000FFFFFFFFFFFFF0000000FFFFFFFFFFFFF8000000003FFC0001FFFE000000003FFC00 +003FFF000000003FFC00000FFF800000003FFC000007FFC00000003FFC000003FFE00000 +003FFC000003FFE00000003FFC000003FFF00000003FFC000001FFF00000003FFC000001 +FFF80000003FFC000001FFF80000003FFC000001FFF80000003FFC000001FFF80000003F +FC000001FFF80000003FFC000001FFF80000003FFC000001FFF80000003FFC000001FFF0 +0000003FFC000001FFF00000003FFC000003FFF00000003FFC000003FFE00000003FFC00 +0003FFC00000003FFC000007FF800000003FFC00000FFF000000003FFC00003FFE000000 +003FFC0001FFFC000000003FFFFFFFFFF0000000003FFFFFFFFFC0000000003FFFFFFFFE +00000000003FFFFFFFFF80000000003FFC000FFFC0000000003FFC0001FFF0000000003F +FC0000FFF8000000003FFC00007FFC000000003FFC00007FFC000000003FFC00003FFE00 +0000003FFC00003FFE000000003FFC00001FFF000000003FFC00001FFF000000003FFC00 +001FFF000000003FFC00001FFF000000003FFC00001FFF000000003FFC00001FFF000000 +003FFC00001FFF800000003FFC00001FFF800000003FFC00001FFF800000003FFC00001F +FF800000003FFC00001FFF800000003FFC00001FFF800000003FFC00001FFF8007C0003F +FC00001FFFC007C0003FFC00001FFFC007C0003FFC00000FFFC00FC0003FFC00000FFFE0 +0F80FFFFFFFF0007FFF01F80FFFFFFFF0003FFFC3F00FFFFFFFF0001FFFFFF00FFFFFFFF +00007FFFFE00FFFFFFFF00001FFFF80000000000000001FFE0004A3F7DBD4E>82 +D<0003FFC001C0001FFFF803C0007FFFFE07C001FFFFFF8FC003FFFFFFDFC007FF00FFFF +C00FF8000FFFC01FF00003FFC01FE00001FFC03FC000007FC07FC000007FC07F8000003F +C07F8000001FC0FF8000001FC0FF8000000FC0FF8000000FC0FFC000000FC0FFC0000007 +C0FFC0000007C0FFE0000007C0FFF0000007C0FFFC00000000FFFF800000007FFFF80000 +007FFFFFC000003FFFFFFC00003FFFFFFF80001FFFFFFFE0001FFFFFFFF8000FFFFFFFFC +0007FFFFFFFE0003FFFFFFFF0001FFFFFFFF80007FFFFFFFC0003FFFFFFFC00007FFFFFF +E000007FFFFFE0000007FFFFF00000003FFFF000000003FFF000000000FFF8000000007F +F8000000003FF8780000003FF8F80000001FF8F80000001FF8F80000000FF8F80000000F +F8FC0000000FF8FC0000000FF8FC0000000FF0FE0000000FF0FE0000001FF0FF0000001F +E0FF8000003FE0FFE000003FC0FFF800007F80FFFE0001FF80FFFFE007FF00FEFFFFFFFE +00FC7FFFFFF800F81FFFFFF000F003FFFFC000E0003FFE00002D407ABE3A>I<3FFFFFFF +FFFFFFFC3FFFFFFFFFFFFFFC3FFFFFFFFFFFFFFC3FFFFFFFFFFFFFFC3FFFFFFFFFFFFFFC +3FFE003FFE003FFC7FF0003FFE000FFE7FC0003FFE0003FE7F80003FFE0001FE7F00003F +FE0000FE7F00003FFE00007E7E00003FFE00007E7E00003FFE00007E7C00003FFE00003E +7C00003FFE00003E7C00003FFE00003E7C00003FFE00003EFC00003FFE00003FF800003F +FE00001FF800003FFE00001FF800003FFE00001FF800003FFE00001FF800003FFE00001F +0000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003F +FE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE000000 +0000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003F +FE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE000000 +0000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003F +FE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE000000 +0000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003F +FE0000000000003FFE000000000FFFFFFFFFF800000FFFFFFFFFF800000FFFFFFFFFF800 +000FFFFFFFFFF800000FFFFFFFFFF800403D7CBC49>I<00700000E000F80001F001F800 +03F003F00007E003E00007C007C0000F800F80001F001F00003E001F00003E003E00007C +003C000078003C000078007C0000F800780000F000780000F000F80001F000F00001E000 +F00001E000F7E001EFC0FFF001FFE0FFF801FFF0FFFC01FFF8FFFE01FFFCFFFE01FFFCFF +FE01FFFC7FFE00FFFC7FFE00FFFC7FFE00FFFC3FFC007FF81FF8003FF00FF0001FE007E0 +000FC0262073BE37>92 D<0007FFC00000003FFFF8000001FFFFFF000003FFFFFF800007 +FE03FFC0000FF800FFE0000FFC003FF0001FFE003FF8001FFE001FFC001FFE001FFC001F +FE001FFC001FFE000FFE001FFE000FFE000FFC000FFE0007F8000FFE0001E0000FFE0000 +00000FFE000000003FFE000000FFFFFE00000FFFFFFE00007FFFFFFE0001FFFE0FFE0003 +FFE00FFE000FFF800FFE001FFE000FFE003FFC000FFE003FF8000FFE007FF0000FFE00FF +F0000FFE00FFE0000FFE00FFE0000FFE00FFE0000FFE00FFE0000FFE00FFE0001FFE00FF +F0001FFE007FF0003FFE007FF8007BFF803FFC00FBFFFE1FFF07F3FFFE0FFFFFE1FFFE03 +FFFF80FFFE00FFFF003FFE001FF80000002F2B7DA933>97 D<00FF0000000000FFFF0000 +000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF000000000007FF000000 +000003FF000000000003FF000000000003FF000000000003FF000000000003FF00000000 +0003FF000000000003FF000000000003FF000000000003FF000000000003FF0000000000 +03FF000000000003FF000000000003FF000000000003FF000000000003FF000000000003 +FF00FFE0000003FF07FFFC000003FF1FFFFF800003FF7FFFFFC00003FFFF81FFF00003FF +FC003FF80003FFF0001FFC0003FFE0000FFE0003FFC00007FE0003FF800007FF0003FF80 +0003FF8003FF800003FF8003FF800003FFC003FF800001FFC003FF800001FFC003FF8000 +01FFC003FF800001FFE003FF800001FFE003FF800001FFE003FF800001FFE003FF800001 +FFE003FF800001FFE003FF800001FFE003FF800001FFE003FF800001FFE003FF800001FF +E003FF800001FFC003FF800001FFC003FF800003FFC003FF800003FF8003FF800003FF80 +03FF800003FF0003FF800007FF0003FFC00007FE0003FFE0000FFC0003FFF0001FF80003 +FFFC007FF00003FCFF01FFE00003F87FFFFFC00003F01FFFFF000003E007FFFC00000000 +01FFC0000033407DBE3A>I<00007FF0000007FFFF00001FFFFFC0007FFFFFE000FFF01F +F001FF800FF803FF001FF807FE003FFC0FFE003FFC1FFC003FFC1FFC003FFC3FF8003FFC +3FF8003FFC7FF8001FF87FF0000FF07FF00003C0FFF0000000FFF0000000FFF0000000FF +F0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0 +0000007FF00000007FF80000007FF80000007FF80000003FF800003E3FFC00003E1FFC00 +007E0FFE00007C07FF0000FC07FF8001F803FFC003F000FFF81FE0007FFFFFC0001FFFFF +800007FFFE0000007FF000272B7DA92E>I<0000000007F80000000007FFF80000000007 +FFF80000000007FFF80000000007FFF80000000007FFF800000000003FF800000000001F +F800000000001FF800000000001FF800000000001FF800000000001FF800000000001FF8 +00000000001FF800000000001FF800000000001FF800000000001FF800000000001FF800 +000000001FF800000000001FF800000000001FF800000000001FF80000007FF01FF80000 +07FFFE1FF800001FFFFF9FF800007FFFFFDFF80000FFF01FFFF80001FFC003FFF80003FF +0001FFF80007FE00007FF8000FFC00007FF8001FFC00003FF8001FF800003FF8003FF800 +003FF8003FF800003FF8007FF800003FF8007FF000003FF8007FF000003FF800FFF00000 +3FF800FFF000003FF800FFF000003FF800FFF000003FF800FFF000003FF800FFF000003F +F800FFF000003FF800FFF000003FF800FFF000003FF800FFF000003FF8007FF000003FF8 +007FF000003FF8007FF000003FF8007FF800003FF8003FF800003FF8003FF800003FF800 +1FFC00007FF8000FFC00007FF8000FFE0000FFF80007FF0003FFFC0003FF8007FFFFE001 +FFF03FFFFFE0007FFFFFBFFFE0003FFFFF3FFFE00007FFFC3FFFE00000FFE03FE0003340 +7DBE3A>I<0000FFF000000007FFFE0000001FFFFF8000007FFFFFC00000FFE07FE00001 +FF801FF00003FF000FF80007FE0007FC000FFC0003FE001FFC0003FE001FF80001FE003F +F80001FF003FF80001FF007FF00001FF007FF00000FF807FF00000FF80FFF00000FF80FF +F00000FF80FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF80FFF000000000FF +F000000000FFF000000000FFF000000000FFF0000000007FF0000000007FF0000000007F +F8000000003FF8000000003FF800000F801FFC00000F801FFC00001F800FFE00001F0007 +FF00003F0003FF80007E0001FFE001FC0000FFF80FF800003FFFFFF000001FFFFFC00000 +03FFFF000000007FF80000292B7DA930>I<000007FE0000007FFF800001FFFFC00007FF +FFE0000FFE3FF0001FF03FF0003FE07FF8007FC07FF800FFC07FF800FF807FF800FF807F +F801FF003FF001FF001FE001FF000FC001FF00000001FF00000001FF00000001FF000000 +01FF00000001FF00000001FF00000001FF00000001FF00000001FF000000FFFFFFE000FF +FFFFE000FFFFFFE000FFFFFFE000FFFFFFE00001FF80000001FF80000001FF80000001FF +80000001FF80000001FF80000001FF80000001FF80000001FF80000001FF80000001FF80 +000001FF80000001FF80000001FF80000001FF80000001FF80000001FF80000001FF8000 +0001FF80000001FF80000001FF80000001FF80000001FF80000001FF80000001FF800000 +01FF80000001FF80000001FF80000001FF80000001FF8000007FFFFF80007FFFFF80007F +FFFF80007FFFFF80007FFFFF800025407DBF20>I<0003FF8007F0003FFFF83FF8007FFF +FCFFFC01FFFFFFFFFE03FF83FFF9FE07FC007FC3FE0FF8003FE1FE1FF8003FF1FC1FF000 +1FF0F81FF0001FF0003FF0001FF8003FF0001FF8003FF0001FF8003FF0001FF8003FF000 +1FF8003FF0001FF8003FF0001FF8001FF0001FF0001FF0001FF0001FF8003FF0000FF800 +3FE00007FC007FC00003FF83FF800003FFFFFF000007FFFFFC000007BFFFF800000F03FF +8000000F00000000000F00000000001F80000000001F80000000001FC0000000001FF000 +0000000FFFFFFF00000FFFFFFFF0000FFFFFFFFC0007FFFFFFFF0007FFFFFFFF8003FFFF +FFFFC001FFFFFFFFE007FFFFFFFFE01FFFFFFFFFF03FE00003FFF07FC000003FF07F8000 +001FF8FF8000000FF8FF00000007F8FF00000007F8FF00000007F8FF00000007F8FF0000 +0007F87F8000000FF07FC000001FF03FC000001FE03FF000007FE01FFC0001FFC007FF80 +0FFF0003FFFFFFFE0000FFFFFFF800003FFFFFE0000001FFFC00002F3D7DA834>I<00FF +0000000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF00 +0000000007FF000000000003FF000000000003FF000000000003FF000000000003FF0000 +00000003FF000000000003FF000000000003FF000000000003FF000000000003FF000000 +000003FF000000000003FF000000000003FF000000000003FF000000000003FF00000000 +0003FF000000000003FF001FF8000003FF00FFFE000003FF03FFFF800003FF07FFFFC000 +03FF0FE0FFE00003FF1F007FE00003FF3C007FF00003FF78007FF00003FFF0003FF80003 +FFE0003FF80003FFE0003FF80003FFC0003FF80003FFC0003FF80003FFC0003FF80003FF +80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80 +003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF8000 +3FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003F +F80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF8 +0003FF80003FF800FFFFFE0FFFFFE0FFFFFE0FFFFFE0FFFFFE0FFFFFE0FFFFFE0FFFFFE0 +FFFFFE0FFFFFE0333F7CBE3A>I<01F80003FC0007FE000FFF001FFF801FFF801FFF801F +FF801FFF801FFF800FFF0007FE0003FC0001F80000000000000000000000000000000000 +000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF0007FF0003FF0003 +FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003 +FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003 +FF0003FF0003FF0003FF00FFFFF8FFFFF8FFFFF8FFFFF8FFFFF815407CBF1D>I<00FF00 +00000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF0000 +00000007FF000000000003FF000000000003FF000000000003FF000000000003FF000000 +000003FF000000000003FF000000000003FF000000000003FF000000000003FF00000000 +0003FF000000000003FF000000000003FF000000000003FF000000000003FF0000000000 +03FF000000000003FF000000000003FF000FFFFE0003FF000FFFFE0003FF000FFFFE0003 +FF000FFFFE0003FF000FFFFE0003FF0001FE000003FF0003FC000003FF0007F0000003FF +001FE0000003FF003FC0000003FF007F80000003FF00FF00000003FF03FC00000003FF07 +F800000003FF0FF000000003FF1FF000000003FF7FF800000003FFFFFC00000003FFFFFC +00000003FFFFFE00000003FFFFFF00000003FFE7FF80000003FFC3FFC0000003FF81FFC0 +000003FF00FFE0000003FF00FFF0000003FF007FF8000003FF003FFC000003FF001FFC00 +0003FF000FFE000003FF000FFF000003FF0007FF800003FF0003FFC00003FF0001FFC000 +03FF0000FFE000FFFFFC07FFFFC0FFFFFC07FFFFC0FFFFFC07FFFFC0FFFFFC07FFFFC0FF +FFFC07FFFFC0323F7DBE37>107 D<00FF00FFFF00FFFF00FFFF00FFFF00FFFF0007FF00 +03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00 +03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00 +03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00 +03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00 +03FF0003FF0003FF00FFFFFCFFFFFCFFFFFCFFFFFCFFFFFC163F7CBE1D>I<00FF001FF8 +0000FFC00000FFFF00FFFF0007FFF80000FFFF03FFFFC01FFFFE0000FFFF07FFFFE03FFF +FF0000FFFF0FE0FFF07F07FF8000FFFF1F003FF0F801FF800007FF3E003FF9F001FFC000 +03FF78003FFBC001FFC00003FFF0001FFF8000FFE00003FFF0001FFF8000FFE00003FFE0 +001FFF0000FFE00003FFC0001FFE0000FFE00003FFC0001FFE0000FFE00003FFC0001FFE +0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FF +E00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003 +FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF8000 +1FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC00 +00FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE0 +0003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF +80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE000FFFFFE07FF +FFF03FFFFF80FFFFFE07FFFFF03FFFFF80FFFFFE07FFFFF03FFFFF80FFFFFE07FFFFF03F +FFFF80FFFFFE07FFFFF03FFFFF8051297CA858>I<00FF001FF80000FFFF00FFFE0000FF +FF03FFFF8000FFFF07FFFFC000FFFF0FE0FFE000FFFF1F007FE00007FF3C007FF00003FF +78007FF00003FFF0003FF80003FFE0003FF80003FFE0003FF80003FFC0003FF80003FFC0 +003FF80003FFC0003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF8000 +3FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003F +F80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF8 +0003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF800 +03FF80003FF80003FF80003FF80003FF80003FF800FFFFFE0FFFFFE0FFFFFE0FFFFFE0FF +FFFE0FFFFFE0FFFFFE0FFFFFE0FFFFFE0FFFFFE033297CA83A>I<00007FF000000003FF +FE0000001FFFFFC000007FFFFFF00000FFE03FF80001FF800FFC0003FE0003FE0007FC00 +01FF000FFC0001FF801FF80000FFC01FF80000FFC03FF80000FFE03FF000007FE07FF000 +007FF07FF000007FF07FF000007FF07FF000007FF0FFF000007FF8FFF000007FF8FFF000 +007FF8FFF000007FF8FFF000007FF8FFF000007FF8FFF000007FF8FFF000007FF8FFF000 +007FF8FFF000007FF87FF000007FF07FF000007FF07FF000007FF07FF000007FF03FF800 +00FFE03FF80000FFE01FF80000FFC00FFC0001FF800FFC0001FF8007FE0003FF0003FF80 +0FFE0001FFE03FFC00007FFFFFF000001FFFFFC0000007FFFF000000007FF000002D2B7D +A934>I<00FF00FFE00000FFFF07FFFC0000FFFF1FFFFF8000FFFF7FFFFFC000FFFFFF81 +FFF000FFFFFC007FF80003FFF0003FFC0003FFE0001FFE0003FFC0000FFE0003FF800007 +FF0003FF800007FF8003FF800007FF8003FF800003FFC003FF800003FFC003FF800003FF +C003FF800001FFC003FF800001FFE003FF800001FFE003FF800001FFE003FF800001FFE0 +03FF800001FFE003FF800001FFE003FF800001FFE003FF800001FFE003FF800001FFE003 +FF800001FFE003FF800003FFC003FF800003FFC003FF800003FFC003FF800003FF8003FF +800007FF8003FF800007FF0003FF80000FFF0003FFC0000FFE0003FFE0001FFC0003FFF0 +003FF80003FFFC00FFF00003FFFF03FFE00003FFFFFFFFC00003FF9FFFFF000003FF87FF +FC000003FF81FFC0000003FF800000000003FF800000000003FF800000000003FF800000 +000003FF800000000003FF800000000003FF800000000003FF800000000003FF80000000 +0003FF800000000003FF800000000003FF8000000000FFFFFE00000000FFFFFE00000000 +FFFFFE00000000FFFFFE00000000FFFFFE00000000333B7DA83A>I<01FE01FE00FFFE07 +FF80FFFE0FFFE0FFFE1FFFF0FFFE3F1FF0FFFE7C3FF807FEF83FF803FEF03FF803FFE03F +F803FFE03FF803FFC01FF003FFC00FE003FF8007C003FF80000003FF80000003FF800000 +03FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003 +FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF +00000003FF00000003FF00000003FF00000003FF00000003FF000000FFFFFF0000FFFFFF +0000FFFFFF0000FFFFFF0000FFFFFF000025297DA82B>114 D<003FFC1E0001FFFFBE00 +07FFFFFE000FFFFFFE001FF00FFE003F8001FE007F0000FE007E00007E007E00007E00FE +00003E00FE00003E00FF00003E00FF80003E00FFC0000000FFF8000000FFFFE000007FFF +FF00007FFFFFC0003FFFFFF0001FFFFFF8000FFFFFFC0007FFFFFE0003FFFFFF0000FFFF +FF80001FFFFF800000FFFF80000007FFC0000000FFC07800007FC0F800003FC0F800001F +C0FC00001FC0FC00001FC0FE00001FC0FE00001F80FF00003F80FF80003F00FFE000FF00 +FFF803FE00FFFFFFFC00FFFFFFF000F87FFFC000E00FFE0000222B7DA929>I<0007C000 +0007C0000007C0000007C0000007C000000FC000000FC000000FC000000FC000001FC000 +001FC000001FC000003FC000007FC000007FC00000FFC00001FFC00007FFC0001FFFFFFE +FFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE01FFC00001FFC00001FFC00001FFC00001FFC000 +01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 +01FFC00001FFC00001FFC00001FFC00001FFC00001FFC01F01FFC01F01FFC01F01FFC01F +01FFC01F01FFC01F01FFC01F01FFC01F01FFC01F00FFE03E00FFE03E007FE07E007FF8FC +003FFFF8001FFFF00007FFE00000FF80203B7EB929>I<00FF80000FF800FFFF800FFFF8 +00FFFF800FFFF800FFFF800FFFF800FFFF800FFFF800FFFF800FFFF80007FF80007FF800 +03FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003 +FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF +80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80 +003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF8000 +3FF80003FF80003FF80003FF80003FF80003FF80007FF80003FF80007FF80003FF80007F +F80003FF8000FFF80001FF8001FFF80001FF8003FFFC0000FFC007DFFFE000FFF01F9FFF +E0007FFFFF1FFFE0003FFFFE1FFFE0000FFFF81FFFE00001FFE01FE000332A7CA83A>I< +FFFFFC003FFFC0FFFFFC003FFFC0FFFFFC003FFFC0FFFFFC003FFFC0FFFFFC003FFFC001 +FFC00003E00001FFE00007E00001FFE00007E00000FFE00007C00000FFF0000FC000007F +F0000F8000007FF8001F8000003FF8001F0000003FFC003F0000001FFC003E0000001FFE +007E0000000FFE007C0000000FFF00FC0000000FFF00FC00000007FF00F800000007FF81 +F800000003FF81F000000003FFC3F000000001FFC3E000000001FFE7E000000000FFE7C0 +00000000FFFFC0000000007FFF80000000007FFF80000000007FFF80000000003FFF0000 +0000003FFF00000000001FFE00000000001FFE00000000000FFC00000000000FFC000000 +000007F8000000000007F8000000000003F0000000000003F000000032287EA737>I<FF +FFFC3FFFFC03FFFEFFFFFC3FFFFC03FFFEFFFFFC3FFFFC03FFFEFFFFFC3FFFFC03FFFEFF +FFFC3FFFFC03FFFE03FF8000FFC0000F8003FFC000FFC0001F8001FFC0007FC0001F0001 +FFE000FFE0003F0000FFE000FFE0003E0000FFE000FFF0003E0000FFF001FFF0007E0000 +7FF001FFF0007C00007FF803FFF800FC00003FF803EFF800F800003FF803EFFC00F80000 +3FFC07EFFC01F800001FFC07C7FC01F000001FFE0FC7FE03F000000FFE0F83FE03E00000 +0FFE0F83FF03E000000FFF1F83FF07E0000007FF1F01FF07C0000007FFBF01FF8FC00000 +03FFBE00FF8F80000003FFBE00FFCF80000003FFFE00FFDF80000001FFFC007FDF000000 +01FFFC007FFF00000000FFF8003FFE00000000FFF8003FFE00000000FFF8003FFE000000 +007FF0001FFC000000007FF0001FFC000000003FE0000FF8000000003FE0000FF8000000 +003FE0000FF8000000001FC00007F0000000001FC00007F0000000000F800003E0000047 +287EA74C>I<FFFFFC03FFFF80FFFFFC03FFFF80FFFFFC03FFFF80FFFFFC03FFFF80FFFF +FC03FFFF8000FFE0007F000000FFF000FE0000007FF800FC0000003FFC01F80000001FFE +03F00000000FFE07F000000007FF0FE000000007FF9FC000000003FFFF8000000001FFFF +0000000000FFFE00000000007FFC00000000007FFC00000000003FFC00000000001FFE00 +000000000FFE00000000000FFF00000000001FFF80000000003FFFC0000000007FFFE000 +000000FEFFF000000001FC7FF000000003F83FF800000003F03FFC00000007E01FFE0000 +000FC00FFF0000001FC007FF0000003F8003FF8000007F0003FFC00000FE0001FFE000FF +FFC007FFFFC0FFFFC007FFFFC0FFFFC007FFFFC0FFFFC007FFFFC0FFFFC007FFFFC03228 +7EA737>I<FFFFFC003FFFC0FFFFFC003FFFC0FFFFFC003FFFC0FFFFFC003FFFC0FFFFFC +003FFFC001FFC00003E00001FFE00007E00001FFE00007E00000FFE00007C00000FFF000 +0FC000007FF0000F8000007FF8001F8000003FF8001F0000003FFC003F0000001FFC003E +0000001FFE007E0000000FFE007C0000000FFF00FC0000000FFF00FC00000007FF00F800 +000007FF81F800000003FF81F000000003FFC3F000000001FFC3E000000001FFE7E00000 +0000FFE7C000000000FFFFC0000000007FFF80000000007FFF80000000007FFF80000000 +003FFF00000000003FFF00000000001FFE00000000001FFE00000000000FFC0000000000 +0FFC000000000007F8000000000007F8000000000003F0000000000003F0000000000003 +F0000000000003E0000000000007E0000000000007C00000000E000FC00000003F800F80 +0000007FC01F80000000FFE01F00000000FFE03F00000000FFE03E00000000FFE07E0000 +0000FFE0FC00000000FFC1F8000000007FC3F0000000007E0FE0000000003FFFC0000000 +001FFF80000000000FFE000000000003F80000000000323B7EA737>I +E /Fn 88 127 df<1C007F00FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80 +FF80FF80FF80FF80FF80FF80FF807F007F007F007F007F007F007F007F007F007F007F00 +7F007F007F007F007F007F007F003E00000000000000000000000000000000001C007F00 +7F00FF80FF80FF807F007F001C0009396DB830>33 D<100004007C001F00FE003F80FE00 +3F80FF007F80FF007F80FE003F80FE003F80FE003F80FE003F80FE003F80FE003F80FE00 +3F80FE003F80FE003F80FE003F80FE003F80FE003F80FE003F80FE003F80FE003F80FE00 +3F80FE003F80FE003F807E003F007C001F003C001E0010000400191C75B830>I<0007C0 +07C0000007C007C000000FE00FE000000FE00FE000000FE00FE000000FE00FE000000FE0 +0FE000000FE00FE000000FE00FE000000FE00FE000001FE01FE000001FE01FE000001FC0 +1FC000001FC01FC000001FC01FC0007FFFFFFFFF007FFFFFFFFF00FFFFFFFFFF80FFFFFF +FFFF80FFFFFFFFFF807FFFFFFFFF003FFFFFFFFE00007F807F8000007F807F8000007F00 +7F0000007F007F0000007F007F0000007F007F0000007F007F0000007F007F0000007F00 +7F0000007F007F0000007F007F000000FF00FF000000FF00FF00003FFFFFFFFE007FFFFF +FFFF00FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF807FFFFFFFFF007FFFFFFFFF0001FC01 +FC000001FC01FC000001FC01FC000003FC03FC000003FC03FC000003F803F8000003F803 +F8000003F803F8000003F803F8000003F803F8000003F803F8000003F803F8000001F001 +F0000001F001F0000029387DB730>I<000038000000007C00000000FC00000000FC0000 +0000FC00000000FC00000003FF0000001FFFE00000FFFFFC0001FFFFFE0007FFFFFF000F +FFFFFF801FFEFDFFC01FF0FC3FE03FC0FC1FE07F80FC0FF07F00FC07F07E00FC07F8FE00 +FC03F8FC00FC03F8FC00FC07F8FC00FC07F8FC00FC07F8FE00FC03F0FE00FC03F07F00FC +00007F80FC00007FC0FC00003FF0FC00001FFEFC00001FFFFC00000FFFFF000007FFFFE0 +0001FFFFF800007FFFFC00001FFFFE000003FFFF000000FFFF800000FDFFC00000FC7FE0 +0000FC1FE00000FC0FF00000FC07F01800FC03F87E00FC03F87E00FC01F8FF00FC01F8FF +00FC01F8FF00FC01F8FE00FC01F8FE00FC01F8FF00FC03F07F00FC03F07F80FC07F07F80 +FC0FE03FC0FC1FE03FF0FC7FC01FFEFFFF800FFFFFFF0007FFFFFE0003FFFFFC0000FFFF +F000003FFFC0000007FE00000000FC00000000FC00000000FC00000000FC00000000FC00 +0000007C0000000038000025477BBE30>I<03C00001E0000FF00003E0001FF80007F000 +3FFC0007F0003FFC000FF0007FFE000FF0007E7E001FE000FE7F001FE000FE7F001FC000 +FC3F003FC000FC3F003FC000FC3F003F8000FC3F007F8000FC3F007F8000FC3F00FF0000 +FE7F00FF0000FE7F00FE00007E7E01FE00007FFE01FE00003FFC01FC00003FFC03FC0000 +1FF803FC00000FF007F8000003C007F80000000007F0000000000FF0000000000FF00000 +00000FE0000000001FE0000000001FE0000000003FC0000000003FC0000000003F800000 +00007F80000000007F80000000007F0000000000FF0000000000FF0000000001FE000000 +0001FE0000000001FC0000000003FC0000000003FC0000000003F80000000007F8000000 +0007F8000000000FF001E000000FF007F800000FE00FFC00001FE01FFE00001FE01FFE00 +001FC03FFF00003FC03FFF00003FC03F3F00007F807F3F80007F807E1F80007F007E1F80 +00FF007E1F8000FF007E1F8000FE007E1F8001FE007E1F8001FE007E1F8003FC007F3F80 +03FC003F3F0003F8003FFF0007F8003FFF0007F8001FFE0007F0001FFE0007F0000FFC00 +03E00007F80001E00001E00029477DBE30>I<0007E0000000001FF8000000003FFC0000 +00007FFC00000000FFFE00000000FFFF00000001FC7F00000001F83F00000001F83F8000 +0003F81F80000003F01F80000003F01F80000003F01F80000003F01F80000003F01F8000 +0003F01F80000003F03F80000003F03F00000003F07F0FFF0003F87E1FFF8001F8FE1FFF +8001F9FC1FFF8001FBFC1FFF8001FBF80FFF0001FFF00FC00000FFE00FC00000FFE01FC0 +0000FFC01F8000007F801F800000FF003F800001FF003F000003FF007F000007FF807E00 +000FFF807E00000FFF80FE00001FDFC0FC00003F8FE0FC00003F8FE1FC00007F07F1F800 +007F03F3F80000FE03FBF00000FE01FFF00000FE01FFE00000FE00FFE00000FE00FFC006 +00FE007FC00F00FE003F801F80FE003FC01F80FF007FC01F807F00FFE01F807F01FFF83F +807F87FFFC3F003FFFFBFFFF001FFFF1FFFE001FFFE0FFFE000FFFC03FFC0003FF001FF8 +0001FC0007E000293A7DB830>I<07C00FF01FF81FF81FFC1FFC1FFE0FFE07FE007E007E +007E007E007E00FE00FC00FC01FC01F803F807F00FF01FE07FE0FFC0FF80FF007C003800 +0F1D70B730>I<00001E00007F0000FF0001FF0003FE0007FC000FF0001FE0003FC0007F +8000FF0001FE0001FC0003FC0003F80007F0000FF0000FE0000FE0001FC0001FC0003FC0 +003F80003F80007F80007F00007F00007F00007F0000FE0000FE0000FE0000FE0000FE00 +00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00007F00007F00007F00007F00 +007F80003F80003F80003FC0001FC0001FC0000FE0000FE0000FF00007F00003F80003FC +0001FC0001FE0000FF00007F80003FC0001FE0000FF00007FC0003FE0001FF0000FF0000 +7F00001E184771BE30>I<780000FE0000FF0000FF80007FC0003FE0000FF00007F80003 +FC0001FE0000FF00007F80003F80003FC0001FC0000FE0000FF00007F00007F00003F800 +03F80003FC0001FC0001FC0001FE0000FE0000FE0000FE0000FE00007F00007F00007F00 +007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0000FE0000FE00 +00FE0000FE0001FE0001FC0001FC0003FC0003F80003F80007F00007F0000FF0000FE000 +1FC0003FC0003F80007F8000FF0001FE0003FC0007F8000FF0003FE0007FC000FF8000FF +0000FE0000780000184778BE30>I<0000E000000001F000000003F800000003F8000000 +03F800000003F800000003F800000003F800003803F803807E03F80FC0FF83F83FE0FFC3 +F87FE0FFF3F9FFE07FFBFBFFC03FFFFFFF800FFFFFFE0003FFFFF80001FFFFF000007FFF +C000001FFF0000007FFFC00001FFFFF00003FFFFF8000FFFFFFE003FFFFFFF807FFBFBFF +C0FFF3F9FFE0FFC3F87FE0FF83F83FE07E03F80FC03803F803800003F800000003F80000 +0003F800000003F800000003F800000003F800000001F000000000E0000023277AAE30> +I<00003E00000000003E00000000007F00000000007F00000000007F00000000007F0000 +0000007F00000000007F00000000007F00000000007F00000000007F00000000007F0000 +0000007F00000000007F00000000007F00000000007F00000000007F0000007FFFFFFFFF +007FFFFFFFFF00FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF807FFFFFFFFF007FFFFFFFFF +0000007F00000000007F00000000007F00000000007F00000000007F00000000007F0000 +0000007F00000000007F00000000007F00000000007F00000000007F00000000007F0000 +0000007F00000000007F00000000007F00000000003E00000000003E00000029297DAF30 +>I<03E00FF01FF81FFC3FFE3FFE3FFF3FFF1FFF1FFF0FFF03FF007F007F007E00FE01FC +03FC07F83FF07FF0FFE07F807F003C001019708B30>I<7FFFFFFFF07FFFFFFFF0FFFFFF +FFF8FFFFFFFFF8FFFFFFFFF87FFFFFFFF07FFFFFFFF025077B9E30>I<0F003FC07FE07F +E0FFF0FFF0FFF0FFF07FE07FE03FC00F000C0C6E8B30>I<00000000F000000001F00000 +0003F800000003F800000007F800000007F80000000FF00000000FF00000001FE0000000 +1FE00000003FC00000003FC00000007F800000007F80000000FF00000000FF00000001FE +00000001FE00000001FC00000003FC00000003FC00000007F800000007F80000000FF000 +00000FF00000001FE00000001FE00000003FC00000003FC00000007F800000007F800000 +00FF00000000FF00000001FE00000001FE00000001FC00000003FC00000003FC00000007 +F800000007F80000000FF00000000FF00000001FE00000001FE00000003FC00000003FC0 +0000007F800000007F80000000FF00000000FF00000001FE00000001FE00000001FC0000 +0003FC00000003FC00000007F800000007F80000000FF00000000FF00000001FE0000000 +1FE00000003FC00000003FC00000007F800000007F80000000FF00000000FF00000000FE +00000000FE000000007C000000007C0000000025477BBE30>I<0000FE00000007FFC000 +000FFFE000003FFFF800007FFFFC0000FFFFFE0001FF83FF0003FE00FF8003FC007F8007 +F8003FC00FF0001FE00FE0000FE01FE0000FF01FC00007F01FC00007F03F800003F83F80 +0003F83F000001F87F000001FC7F000001FC7F000001FC7F000001FCFE000000FEFE0000 +00FEFE000000FEFE000000FEFE000000FEFE000000FEFE000000FEFE000000FEFE000000 +FEFE000000FEFE000000FEFE000000FEFE000000FEFF000001FE7F000001FC7F000001FC +7F000001FC7F800003FC3F800003F83F800003F83FC00007F81FC00007F01FC00007F01F +E0000FF00FF0001FE00FF0001FE007F8003FC003FC007F8003FE00FF8001FF83FF0000FF +FFFE00007FFFFC00003FFFF800000FFFE0000007FFC0000000FE0000273A7CB830>I<00 +03C0000007E0000007E000000FE000000FE000001FE000001FE000003FE000007FE00000 +FFE00003FFE0003FFFE000FFFFE000FFFFE000FFEFE000FF8FE0007E0FE000000FE00000 +0FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000 +0FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000 +0FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000 +0FE000000FE000000FE000000FE000000FE000000FE0003FFFFFF87FFFFFFCFFFFFFFEFF +FFFFFE7FFFFFFC3FFFFFF81F3977B830>I<0007FC0000003FFFC00000FFFFF00003FFFF +F80007FFFFFE000FFFFFFF001FF80FFF803FE001FFC03FC0007FC07F80003FE07F00001F +E07F00000FF0FF000007F0FE000007F0FF000007F8FF000003F8FF000003F8FF000003F8 +7E000003F818000003F800000003F800000003F800000007F800000007F00000000FF000 +00000FE00000001FE00000001FC00000003FC00000007F80000000FF80000001FF000000 +01FE00000007FC0000000FF80000001FF00000003FE00000007FC0000000FF80000001FF +00000003FE00000007FC0000000FF00000003FE00000007FC0000000FF80000001FF0000 +0003FE0001F007FC0003F80FF80003F81FE00003F83FFFFFFFF8FFFFFFFFF8FFFFFFFFF8 +FFFFFFFFF87FFFFFFFF83FFFFFFFF025397BB830>I<0003FF0000003FFFE00000FFFFF8 +0001FFFFFE0003FFFFFF0007FFFFFF800FFE01FFC00FF0007FC01FE0001FE01FE0000FE0 +1FE0000FF01FE00007F01FE00007F00FC00007F007800007F000000007F00000000FF000 +00000FE00000000FE00000001FE00000003FC00000007FC0000000FF80000007FF000007 +FFFE00000FFFFC00000FFFF800000FFFFC00000FFFFF000007FFFF80000001FFC0000000 +3FE00000001FF000000007F800000003F800000003FC00000001FC00000001FE00000000 +FE00000000FE18000000FE7E000000FEFF000000FEFF000000FEFF000001FEFF000001FC +FE000003FCFF000003F87F800007F87FC0001FF03FF0003FF01FFE01FFE00FFFFFFFC007 +FFFFFF8003FFFFFE0000FFFFFC00003FFFF0000003FF8000273A7CB830>I<000003FC00 +00000007FE000000000FFE000000001FFE000000001FFE000000003FFE000000007FFE00 +0000007F7E00000000FE7E00000000FE7E00000001FC7E00000003F87E00000003F87E00 +000007F07E00000007F07E0000000FE07E0000001FC07E0000001FC07E0000003F807E00 +00003F807E0000007F007E000000FE007E000000FE007E000001FC007E000003F8007E00 +0003F8007E000007F0007E000007F0007E00000FE0007E00001FC0007E00001FC0007E00 +003F80007E00003F80007E00007F00007E0000FE00007E0000FFFFFFFFFF00FFFFFFFFFF +80FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF807FFFFFFFFF000000007E00000000007E00 +000000007E00000000007E00000000007E00000000007E00000000007E00000000007E00 +000000007E00000000007E000000007FFFFE000000FFFFFF000000FFFFFF000000FFFFFF +000000FFFFFF0000007FFFFE0029397DB830>I<0FFFFFFF801FFFFFFFC03FFFFFFFC03F +FFFFFFC03FFFFFFFC03FFFFFFF803F800000003F800000003F800000003F800000003F80 +0000003F800000003F800000003F800000003F800000003F800000003F800000003F8000 +00003F800000003F800000003F83FF00003F9FFFC0003FFFFFF0003FFFFFFC003FFFFFFE +003FFFFFFF003FFE03FF803FF0007FC03FE0003FC03F80001FE01F00000FE00E00000FF0 +00000007F000000007F000000007F800000003F800000003F800000003F818000003F87E +000003F87E000003F8FF000003F8FF000007F8FF000007F0FE00000FF0FF00000FE07F00 +001FE07F80003FC07FC0007FC03FE001FF801FFC0FFF000FFFFFFE0007FFFFFC0003FFFF +F80001FFFFE000007FFF8000000FFC000025397BB730>I<7C00000000FFFFFFFFFCFFFF +FFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFCFE00000FF8FE00000FF0FE0000 +1FE07C00003FC00000007F80000000FF00000000FF00000001FE00000003FC00000003F8 +00000007F800000007F00000000FF00000000FE00000001FC00000001FC00000003F8000 +00003F800000007F000000007F00000000FF00000000FE00000001FE00000001FC000000 +01FC00000003FC00000003F800000003F800000007F800000007F000000007F000000007 +F000000007F00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0 +0000001FE00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC000 +00001FC00000001FC00000001FC00000000F8000000007000000273A7CB830>55 +D<0F003FC07FE07FE0FFF0FFF0FFF0FFF07FE07FE03FC00F000000000000000000000000 +000000000000000000000000000000000000000F003FC07FE07FE0FFF0FFF0FFF0FFF07F +E07FE03FC00F000C276EA630>58 D<03C00FF01FF81FF83FFC3FFC3FFC3FFC1FF81FF80F +F003C000000000000000000000000000000000000000000000000000000000000003C00F +F01FF01FF83FF83FFC3FFC3FFC1FFC1FFC0FFC03FC00FC01FC01F803F803F007F01FE03F +E07FC0FF807F007E0038000E3470A630>I<00000000F000000003F000000007F8000000 +1FF80000007FF8000000FFF0000003FFF0000007FFC000001FFF8000003FFE000000FFF8 +000001FFF0000007FFC000000FFF8000003FFE0000007FFC000001FFF0000003FFE00000 +0FFF8000001FFF0000007FFC0000007FF8000000FFE0000000FFC0000000FFE00000007F +F80000007FFC0000001FFF0000000FFF80000003FFE0000001FFF00000007FFC0000003F +FE0000000FFF80000007FFC0000001FFF0000000FFF80000003FFE0000001FFF80000007 +FFC0000003FFF0000000FFF00000007FF80000001FF800000007F800000003F000000000 +F0252F7BB230>I<7FFFFFFFFF007FFFFFFFFF00FFFFFFFFFF80FFFFFFFFFF80FFFFFFFF +FF807FFFFFFFFF003FFFFFFFFE0000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000003FFFFFFFFE007FFFFFFFFF00FFFFFFFF +FF80FFFFFFFFFF80FFFFFFFFFF807FFFFFFFFF007FFFFFFFFF0029157DA530>I<780000 +00007E00000000FF00000000FFC0000000FFE00000007FF80000007FFE0000001FFF0000 +000FFFC0000003FFE0000001FFF80000007FFC0000001FFF0000000FFF80000003FFE000 +0001FFF00000007FFC0000003FFE0000000FFF80000007FFC0000001FFF0000000FFF000 +00003FF80000001FF80000003FF8000000FFF0000001FFF0000007FFC000000FFF800000 +3FFE0000007FFC000001FFF0000003FFE000000FFF8000001FFF0000007FFC000001FFF8 +000003FFE000000FFFC000001FFF0000007FFE0000007FF8000000FFE0000000FFC00000 +00FF000000007E000000007800000000252F7BB230>I<001FFE000000FFFFE00003FFFF +F8000FFFFFFE001FFFFFFF003FFFFFFF807FF803FFC07FC0007FC0FF00001FC0FF00001F +E0FF00000FE0FF00000FE0FF00000FE07E00000FE07E00001FE01800007FC0000000FFC0 +000003FF80000007FF0000000FFE0000001FF80000003FF00000007FC0000000FF800000 +00FF00000001FE00000001FE00000003FC00000003F800000003F800000007F800000007 +F000000007F000000007F000000007F000000007F000000007F000000007F000000007F0 +00000003E000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000001C000000007F000000007F00000000FF80000000FF80000 +000FF800000007F000000007F000000001C0000023397AB830>I<00001FE0000000FFF8 +000003FFFE00000FFFFF00001FFFFF80003FFFFFC0007FF03FE000FF800FE001FF0007F0 +03FC0003F007F801FBF807F007FFF80FE01FFFF80FE03FFFFC1FC03FFFFC1F807FFFFC3F +80FF0FFC3F00FE07FC3F01FC03FE7F01F801FE7E03F801FE7E03F000FE7E03F000FEFE07 +F000FEFC07E0007EFC07E0007EFC07E0007EFC07E0007EFC07E0007EFC07E0007EFC07E0 +007EFC07E0007EFC07E0007EFC07E0007EFE07F000FE7E03F000FC7E03F000FC7E03F801 +FC7F01F801F83F01FC03F83F00FE07F03F80FF0FF01F807FFFE01FC03FFFC00FE03FFFC0 +0FE01FFF8007F007FE0007F801F80003FC00007C01FF0000FE00FF8003FE007FF01FFE00 +3FFFFFFC001FFFFFF8000FFFFFE00003FFFFC00000FFFE0000001FF000273A7CB830>I< +00007F0000000000FF8000000000FF8000000001FFC000000001FFC000000001FFC00000 +0001FFC000000003FFE000000003F7E000000003F7E000000003F7E000000003F7E00000 +0007F7F000000007E3F000000007E3F000000007E3F00000000FE3F80000000FE3F80000 +000FE3F80000000FC1F80000000FC1F80000001FC1FC0000001FC1FC0000001FC1FC0000 +001FC1FC0000003F80FE0000003F80FE0000003F80FE0000003F80FE0000003F80FE0000 +007F007F0000007F007F0000007F007F0000007F007F000000FF007F800000FE003F8000 +00FFFFFF800000FFFFFF800000FFFFFF800001FFFFFFC00001FFFFFFC00001FFFFFFC000 +01FC001FC00003FC001FE00003F8000FE00003F8000FE00003F8000FE00003F8000FE000 +07F8000FF00007F00007F00007F00007F0007FFF007FFF00FFFF80FFFF80FFFF80FFFF80 +FFFF80FFFF80FFFF80FFFF807FFF007FFF0029397DB830>I<7FFFFFF00000FFFFFFFE00 +00FFFFFFFF8000FFFFFFFFC000FFFFFFFFE0007FFFFFFFF00003F8001FF80003F80007F8 +0003F80003FC0003F80001FC0003F80001FC0003F80000FE0003F80000FE0003F80000FE +0003F80000FE0003F80000FE0003F80000FE0003F80001FE0003F80001FC0003F80001FC +0003F80003F80003F80007F80003F8001FF00003F8007FE00003FFFFFFC00003FFFFFF80 +0003FFFFFE000003FFFFFF800003FFFFFFE00003FFFFFFF00003F8000FF80003F80003FC +0003F80001FE0003F80000FE0003F800007F0003F800007F0003F800007F0003F800003F +8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800007F +8003F800007F0003F800007F0003F80000FF0003F80001FE0003F80003FE0003F8001FFC +007FFFFFFFFC00FFFFFFFFF800FFFFFFFFF000FFFFFFFFC000FFFFFFFF80007FFFFFFC00 +0029387EB730>I<00007F803C0003FFF03E0007FFFC7E001FFFFE7E003FFFFFFE007FFF +FFFE00FFE07FFE01FF801FFE03FE000FFE07FC0007FE07F80007FE0FF00003FE0FF00003 +FE1FE00001FE1FC00001FE3FC00001FE3F800000FE3F800000FE7F800000FE7F000000FE +7F0000007C7F00000000FF00000000FE00000000FE00000000FE00000000FE00000000FE +00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00 +000000FF000000007F000000007F000000007F0000007C7F800000FE3F800000FE3F8000 +00FE3FC00000FE1FC00000FE1FE00001FE0FF00001FC0FF00001FC07F80003F807FC0007 +F803FE000FF001FF801FF000FFE07FE0007FFFFFC0003FFFFF80001FFFFF000007FFFC00 +0003FFF00000007FC000273A7CB830>I<3FFFFFE000007FFFFFFC0000FFFFFFFE0000FF +FFFFFF80007FFFFFFFC0003FFFFFFFE00003F8007FF00003F8001FF80003F8000FF80003 +F80007FC0003F80003FE0003F80001FE0003F80000FF0003F80000FF0003F800007F8003 +F800007F8003F800003F8003F800003FC003F800001FC003F800001FC003F800001FC003 +F800001FC003F800000FE003F800000FE003F800000FE003F800000FE003F800000FE003 +F800000FE003F800000FE003F800000FE003F800000FE003F800000FE003F800000FE003 +F800000FE003F800001FE003F800001FC003F800001FC003F800001FC003F800003FC003 +F800003F8003F800003F8003F800007F8003F800007F0003F80000FF0003F80001FE0003 +F80003FE0003F80007FC0003F8000FFC0003F8001FF80003F8007FF0003FFFFFFFE0007F +FFFFFFC000FFFFFFFF8000FFFFFFFF00007FFFFFFC00003FFFFFE000002B387FB730>I< +7FFFFFFFFF00FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF807FFFFFFFFF80 +03F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F80 +03F800003F8003F800003F8003F800001F0003F80000000003F80000000003F800000000 +03F80000000003F8007C000003F800FE000003F800FE000003F800FE000003F800FE0000 +03FFFFFE000003FFFFFE000003FFFFFE000003FFFFFE000003FFFFFE000003FFFFFE0000 +03F800FE000003F800FE000003F800FE000003F800FE000003F8007C000003F800000000 +03F80000000003F80000000003F80000000003F80000000003F8000007C003F800000FE0 +03F800000FE003F800000FE003F800000FE003F800000FE003F800000FE003F800000FE0 +03F800000FE003F800000FE07FFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE0 +FFFFFFFFFFE07FFFFFFFFFC02B387EB730>I<3FFFFFFFFF807FFFFFFFFFC0FFFFFFFFFF +C0FFFFFFFFFFC07FFFFFFFFFC03FFFFFFFFFC001FC00001FC001FC00001FC001FC00001F +C001FC00001FC001FC00001FC001FC00001FC001FC00001FC001FC00001FC001FC00000F +8001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC003E00 +0001FC007F000001FC007F000001FC007F000001FC007F000001FFFFFF000001FFFFFF00 +0001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FC007F000001FC007F00 +0001FC007F000001FC007F000001FC003E000001FC0000000001FC0000000001FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000001FC000000003FFFF80000 +007FFFFC000000FFFFFC000000FFFFFC0000007FFFFC0000003FFFF80000002A387EB730 +>I<0000FF00F0000003FFC0F800000FFFF1F800003FFFFDF800007FFFFFF80000FFFFFF +F80001FFC1FFF80001FF007FF80003FE003FF80007FC001FF80007F8000FF8000FF0000F +F8000FE00007F8001FE00007F8001FC00007F8003FC00007F8003F800003F8003F800003 +F8007F800003F8007F000003F8007F000001F0007F0000000000FF0000000000FE000000 +0000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE000000 +0000FE0000000000FE0000FFFF00FE0001FFFF80FE0003FFFF80FE0003FFFF80FF0001FF +FF807F0000FFFF007F000003F8007F000003F8007F800003F8003F800007F8003F800007 +F8003FC00007F8001FC00007F8001FE0000FF8000FE0000FF8000FF0000FF80007F8001F +F80007F8001FF80003FE003FF80001FF007FF80001FFC1FFF80000FFFFFFF800007FFFFF +F800003FFFFBF800000FFFF3F8000003FFC1F0000000FF000000293A7DB830>I<3FFF80 +0FFFE07FFFC01FFFF0FFFFE03FFFF8FFFFE03FFFF87FFFC01FFFF03FFF800FFFE003F800 +00FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F800 +00FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F800 +00FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003FFFF +FFFE0003FFFFFFFE0003FFFFFFFE0003FFFFFFFE0003FFFFFFFE0003FFFFFFFE0003F800 +00FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F800 +00FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F800 +00FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F800 +00FE0003F80000FE003FFF800FFFE07FFFC01FFFF0FFFFE03FFFF8FFFFE03FFFF87FFFC0 +1FFFF03FFF800FFFE02D387FB730>I<7FFFFFFF00FFFFFFFF80FFFFFFFF80FFFFFFFF80 +FFFFFFFF807FFFFFFF000007F000000007F000000007F000000007F000000007F0000000 +07F000000007F000000007F000000007F000000007F000000007F000000007F000000007 +F000000007F000000007F000000007F000000007F000000007F000000007F000000007F0 +00000007F000000007F000000007F000000007F000000007F000000007F000000007F000 +000007F000000007F000000007F000000007F000000007F000000007F000000007F00000 +0007F000000007F000000007F000000007F000000007F000000007F000000007F0000000 +07F000000007F000000007F000007FFFFFFF00FFFFFFFF80FFFFFFFF80FFFFFFFF80FFFF +FFFF807FFFFFFF00213879B730>I<0001FFFFF00003FFFFF80007FFFFF80007FFFFF800 +03FFFFF80001FFFFF0000000FE00000000FE00000000FE00000000FE00000000FE000000 +00FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000 +FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE +00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00 +000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000 +0000FE00000000FE00000000FE003C0000FE007E0000FE00FF0000FE00FF0000FE00FF00 +01FC00FF0003FC00FF8007FC007FF01FF8003FFFFFF0003FFFFFE0001FFFFFC00007FFFF +800001FFFE0000003FF0000025397AB730>I<3FFFF80000007FFFFC000000FFFFFE0000 +00FFFFFE0000007FFFFC0000003FFFF800000001FC0000000001FC0000000001FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 +0001FC0000000001FC00000F8001FC00001FC001FC00001FC001FC00001FC001FC00001F +C001FC00001FC001FC00001FC001FC00001FC001FC00001FC001FC00001FC03FFFFFFFFF +C07FFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC07FFFFFFFFFC03FFFFFFFFF802A387EB730 +>76 D<3FF80000FFE07FFC0001FFF0FFFE0003FFF8FFFE0003FFF87FFE0003FFF03FFF00 +07FFE007FF0007FF0007EF0007BF0007EF800FBF0007EF800FBF0007EF800FBF0007E7C0 +1F3F0007E7C01F3F0007E7C01F3F0007E7C01F3F0007E7E03F3F0007E3E03E3F0007E3E0 +3E3F0007E3F07E3F0007E3F07E3F0007E1F07C3F0007E1F07C3F0007E1F8FC3F0007E1F8 +FC3F0007E0F8F83F0007E0F8F83F0007E0FDF83F0007E07DF03F0007E07DF03F0007E07D +F03F0007E07FF03F0007E03FE03F0007E03FE03F0007E03FE03F0007E01FC03F0007E01F +C03F0007E007003F0007E000003F0007E000003F0007E000003F0007E000003F0007E000 +003F0007E000003F0007E000003F0007E000003F0007E000003F0007E000003F0007E000 +003F0007E000003F0007E000003F003FFC0001FFE07FFE0003FFF0FFFF0007FFF8FFFF00 +07FFF87FFE0003FFF03FFC0001FFE02D387FB730>I<3FFC001FFF807FFE003FFFC0FFFF +007FFFE0FFFF007FFFE07FFF803FFFC03FFF801FFF8003FF8001F80003F7C001F80003F7 +C001F80003F7C001F80003F3E001F80003F3E001F80003F3E001F80003F3F001F80003F1 +F001F80003F1F001F80003F1F801F80003F1F801F80003F0F801F80003F0FC01F80003F0 +FC01F80003F07C01F80003F07E01F80003F07E01F80003F03E01F80003F03F01F80003F0 +3F01F80003F01F01F80003F01F01F80003F01F81F80003F01F81F80003F00F81F80003F0 +0FC1F80003F00FC1F80003F007C1F80003F007E1F80003F007E1F80003F003E1F80003F0 +03F1F80003F003F1F80003F001F1F80003F001F1F80003F001F9F80003F000F9F80003F0 +00F9F80003F000F9F80003F0007DF80003F0007DF80003F0007DF80003F0003FF8003FFF +003FF8007FFF803FF800FFFFC01FF800FFFFC01FF8007FFF800FF8003FFF0007F0002B38 +7EB730>I<003FFFE00001FFFFFC0007FFFFFF000FFFFFFF801FFFFFFFC03FFFFFFFE03F +F800FFE03FE0003FE07F80000FF07F80000FF07F000007F07F000007F07F000007F07F00 +0007F0FF000007F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE0000 +03F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003 +F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8 +FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FF +000007F8FF000007F87F000007F07F000007F07F000007F07F80000FF07F80000FF07FC0 +001FF03FE0003FE03FF800FFE03FFFFFFFE01FFFFFFFC00FFFFFFF8007FFFFFF0001FFFF +FC00003FFFE000253A7BB830>I<7FFFFFF00000FFFFFFFE0000FFFFFFFF8000FFFFFFFF +E000FFFFFFFFF0007FFFFFFFF80003F8003FF80003F8000FFC0003F80003FE0003F80001 +FE0003F80000FF0003F80000FF0003F800007F0003F800007F8003F800003F8003F80000 +3F8003F800003F8003F800003F8003F800003F8003F800003F8003F800007F8003F80000 +7F0003F80000FF0003F80000FF0003F80001FE0003F80003FE0003F8000FFC0003F8003F +F80003FFFFFFF80003FFFFFFF00003FFFFFFE00003FFFFFF800003FFFFFE000003FFFFF0 +000003F80000000003F80000000003F80000000003F80000000003F80000000003F80000 +000003F80000000003F80000000003F80000000003F80000000003F80000000003F80000 +000003F80000000003F80000000003F80000000003F8000000007FFFC0000000FFFFE000 +0000FFFFE0000000FFFFE0000000FFFFE00000007FFFC000000029387EB730>I<3FFFFF +8000007FFFFFF00000FFFFFFFC0000FFFFFFFF00007FFFFFFF80003FFFFFFFC00003F801 +FFE00003F8003FF00003F8001FF00003F8000FF80003F80007F80003F80003F80003F800 +03FC0003F80001FC0003F80001FC0003F80001FC0003F80001FC0003F80001FC0003F800 +03FC0003F80003F80003F80007F80003F8000FF80003F8001FF00003F8003FF00003F801 +FFE00003FFFFFFC00003FFFFFF800003FFFFFF000003FFFFFE000003FFFFFF000003FFFF +FF800003F800FFC00003F8003FE00003F8001FE00003F8000FE00003F8000FF00003F800 +07F00003F80007F00003F80007F00003F80007F00003F80007F00003F80007F00003F800 +07F00003F80007F00003F80007F0F803F80007F1FC03F80007F1FC03F80007F1FC03F800 +07F1FC03F80007F1FC3FFF8003FBFC7FFFC003FFF8FFFFE001FFF8FFFFE001FFF07FFFC0 +00FFE03FFF80007FC0000000001F002E397FB730>82 D<000FF803C0007FFF03E001FFFF +C7E003FFFFF7E007FFFFFFE00FFFFFFFE01FF80FFFE03FE001FFE03FC000FFE07F80007F +E07F00003FE0FF00003FE0FE00001FE0FE00001FE0FE00000FE0FE00000FE0FE00000FE0 +FF00000FE0FF000007C07F000000007F800000007FC00000003FF00000001FFE0000001F +FFF000000FFFFF000007FFFFE00001FFFFF80000FFFFFC00001FFFFF000003FFFF800000 +3FFFC0000001FFC00000007FE00000001FE00000000FF00000000FF000000007F8000000 +07F87C000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FF000007 +F8FF000007F0FF800007F0FFC0000FE0FFE0001FE0FFF8003FC0FFFF00FFC0FFFFFFFF80 +FFFFFFFF00FDFFFFFE00FC7FFFF800F81FFFF0007801FF8000253A7BB830>I<3FFFFFFF +FFC07FFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE0FE003F80 +0FE0FE003F800FE0FE003F800FE0FE003F800FE0FE003F800FE0FE003F800FE0FE003F80 +0FE0FE003F800FE07C003F8007C000003F80000000003F80000000003F80000000003F80 +000000003F80000000003F80000000003F80000000003F80000000003F80000000003F80 +000000003F80000000003F80000000003F80000000003F80000000003F80000000003F80 +000000003F80000000003F80000000003F80000000003F80000000003F80000000003F80 +000000003F80000000003F80000000003F80000000003F80000000003F80000000003F80 +000000003F80000000003F80000000003F80000000003F80000000003F80000000003F80 +000000003F800000001FFFFF0000003FFFFF8000003FFFFF8000003FFFFF8000003FFFFF +8000001FFFFF00002B387EB730>I<7FFFC007FFFCFFFFE00FFFFEFFFFE00FFFFEFFFFE0 +0FFFFEFFFFE00FFFFE7FFFC007FFFC03F800003F8003F800003F8003F800003F8003F800 +003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800 +003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800 +003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800 +003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800 +003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800 +003F8003F800003F8003FC00007F8001FC00007F0001FC00007F0001FC00007F0000FE00 +00FE0000FF0001FE00007F0001FC00007F8003FC00003FE00FF800001FF83FF000000FFF +FFE0000007FFFFC0000003FFFF80000001FFFF000000007FFC000000001FF000002F3980 +B730>I<7FFE000FFFC0FFFF001FFFE0FFFF803FFFE0FFFF803FFFE0FFFF001FFFE07FFE +000FFFC007F00001FC0007F00001FC0007F80003FC0003F80003F80003F80003F80003F8 +0003F80003F80003F80001FC0007F00001FC0007F00001FC0007F00001FC0007F00000FE +000FE00000FE000FE00000FE000FE00000FE000FE00000FF001FE000007F001FC000007F +001FC000007F001FC000007F803FC000003F803F8000003F803F8000003F803F8000003F +803F8000001FC07F0000001FC07F0000001FC07F0000001FC07F0000000FE0FE0000000F +E0FE0000000FE0FE0000000FE0FE00000007E0FC00000007F1FC00000007F1FC00000007 +F1FC00000003F1F800000003F1F800000003F1F800000003FBF800000001FBF000000001 +FBF000000001FBF000000001FFF000000001FFF000000000FFE000000000FFE000000000 +FFE000000000FFE0000000007FC0000000003F8000002B397EB730>I<3FFC0001FFE07F +FE0003FFF0FFFE0003FFF8FFFE0003FFF87FFE0003FFF03FFC0001FFE01FC000001FC00F +C000001F800FC000001F800FC000001F800FC000001F800FC000001F800FC000001F800F +C000001F800FE000003F8007E000003F0007E000003F0007E000003F0007E000003F0007 +E000003F0007E000003F0007E000003F0003E00F803E0003F01FC07E0003F03FE07E0003 +F03FE07E0003F03FE07E0003F07FF07E0003F07FF07E0003F07DF07E0001F07DF07C0001 +F07DF07C0001F8FDF8FC0001F8FDF8FC0001F8FDF8FC0001F8F8F8FC0001F8F8F8FC0001 +F8F8F8FC0000F8F8F8F80000F9F8FCF80000F9F8FCF80000F9F07CF80000F9F07CF80000 +FDF07DF80000FDF07DF800007DF07DF000007DE03DF000007DE03DF000007DE03DF00000 +7FE03FF000007FE03FF000007FC01FF000007FC01FF000003FC01FE000003FC01FE00000 +3F800FE000001F0007C0002D397FB730>I<3FFF01FFF8007FFF83FFFC007FFFC7FFFE00 +7FFFC7FFFE007FFF83FFFC003FFF01FFF80001FC007F800001FE007F000000FE00FF0000 +00FF00FE0000007F01FE0000007F81FC0000003F83FC0000003FC3FC0000001FC3F80000 +001FE7F80000000FE7F00000000FFFF000000007FFE000000007FFE000000003FFC00000 +0003FFC000000001FF8000000001FF8000000000FF0000000000FF0000000000FF000000 +0000FF0000000001FF8000000001FF8000000003FFC000000003FFC000000003FFE00000 +0007FFE000000007FFF00000000FE7F00000000FE7F80000001FC3F80000001FC3FC0000 +003F81FC0000003F81FE0000007F00FE0000007F00FF000000FF007F000000FE007F8000 +01FE003F800001FC003FC00003FC001FC00003F8001FE00007F8000FE0007FFE007FFF00 +FFFF00FFFF80FFFF80FFFF80FFFF80FFFF80FFFF00FFFF807FFE007FFF0029387DB730> +I<1FFFFFFFFC3FFFFFFFFE7FFFFFFFFE7FFFFFFFFE7FFFFFFFFE7FFFFFFFFE7F000003FC +7F000007F87F000007F07F00000FF07F00001FE07F00001FC07F00003FC07F00007F803E +00007F00000000FF00000001FE00000001FC00000003FC00000007F800000007F0000000 +0FF00000001FE00000001FC00000003FC00000007F800000007F00000000FF00000001FE +00000001FC00000003FC00000007F800000007F00000000FF00000001FE00000001FC000 +00003FC00000007F800000007F00000000FF00000001FE00007C01FC0000FE03FC0000FE +07F80000FE07F00000FE0FF00000FE1FE00000FE1FC00000FE3FC00000FE7F800000FE7F +FFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE7FFFFFFFFC27387CB730>90 +D<7FFFFF00FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF00FE000000FE000000FE0000 +00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000 +00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000 +00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000 +00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000 +00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000 +00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000 +00FE000000FE000000FFFFFF00FFFFFF80FFFFFF80FFFFFF80FFFFFF807FFFFF0019476D +BE30>I<7C000000007C00000000FE00000000FE00000000FF00000000FF000000007F80 +0000007F800000003FC00000003FC00000001FE00000001FE00000000FF00000000FF000 +000007F800000007F800000003FC00000003FC00000001FC00000001FE00000001FE0000 +0000FF00000000FF000000007F800000007F800000003FC00000003FC00000001FE00000 +001FE00000000FF00000000FF000000007F800000007F800000003FC00000003FC000000 +01FC00000001FE00000001FE00000000FF00000000FF000000007F800000007F80000000 +3FC00000003FC00000001FE00000001FE00000000FF00000000FF000000007F800000007 +F800000003FC00000003FC00000001FC00000001FE00000001FE00000000FF00000000FF +000000007F800000007F800000003FC00000003FC00000001FE00000001FE00000000FF0 +0000000FF000000007F800000007F800000003F800000003F800000001F000000000F025 +477BBE30>I<7FFFFF00FFFFFF80FFFFFF80FFFFFF80FFFFFF807FFFFF8000003F800000 +3F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800000 +3F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800000 +3F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800000 +3F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800000 +3F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800000 +3F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800000 +3F8000003F8000003F8000003F807FFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF807FFF +FF0019477DBE30>I<00070000001FC000007FF00000FFF80003FFFE000FFFFF803FFFFF +E07FFDFFF0FFF07FF8FFC01FF8FF800FF8FE0003F87C0001F0100000401D0E77B730>I< +7FFFFFFFF07FFFFFFFF0FFFFFFFFF8FFFFFFFFF8FFFFFFFFF87FFFFFFFF07FFFFFFFF025 +077B7D30>I<0038007C01FE03FE07FE0FFC0FF01FE01FC03F803F007F007E007E00FE00 +FC00FC00FC00FC00FC00FFC0FFE0FFF07FF07FF03FF03FF01FE007C00F1D70BE30>I<00 +3FFC00000001FFFF80000003FFFFE0000007FFFFF000000FFFFFF800001FFFFFFC00001F +F00FFE00001FE001FF00001FE000FF00001FE0007F80000FC0003F80000780003FC00000 +00001FC0000000001FC0000000001FC0000000001FC0000000FFFFC000000FFFFFC00000 +7FFFFFC00001FFFFFFC00007FFFFFFC0000FFFFFFFC0001FFFC01FC0003FFC001FC0007F +E0001FC0007F80001FC000FF00001FC000FE00001FC000FE00001FC000FE00001FC000FE +00001FC000FF00003FC000FF00003FC0007F80007FC0007FC001FFC0003FF80FFFFFC01F +FFFFFFFFE01FFFFFFFFFE007FFFFF7FFE003FFFFC3FFE000FFFF00FFC0003FF00000002B +2A7CA830>I<3FFC000000007FFE00000000FFFE00000000FFFE000000007FFE00000000 +3FFE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE00000000 +00FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE03FE0000 +00FE1FFF800000FE7FFFE00000FEFFFFF00000FFFFFFFC0000FFFFFFFE0000FFFE07FE00 +00FFF001FF0000FFE000FF8000FFC0007F8000FF80003FC000FF00001FC000FE00001FE0 +00FE00000FE000FE00000FE000FE00000FF000FE000007F000FE000007F000FE000007F0 +00FE000007F000FE000007F000FE000007F000FE000007F000FE000007F000FE00000FF0 +00FE00000FF000FE00000FE000FF00000FE000FF00001FE000FF80003FC000FF80003FC0 +00FFC0007F8000FFE000FF8000FFF003FF0000FFFC0FFE0000FFFFFFFC0000FFFFFFF800 +00FEFFFFF000007E7FFFC000003C1FFF0000000003FC00002C3980B730>I<0000FFE000 +0007FFFC00001FFFFE00007FFFFF0000FFFFFF8001FFFFFFC003FF807FC007FC003FC00F +F8003FC01FF0003FC01FE0001F803FC0000F003F800000007F800000007F000000007F00 +000000FF00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000 +0000FE00000000FE00000000FF000000007F000000007F000000007F800000003F800007 +C03FC0000FE01FE0000FE01FF0001FE00FF8001FC007FE003FC007FFC0FF8003FFFFFF80 +00FFFFFF00007FFFFE00001FFFF8000007FFF0000001FF8000232A7AA830>I<000001FF +E000000003FFF000000007FFF000000007FFF000000003FFF000000001FFF00000000007 +F00000000007F00000000007F00000000007F00000000007F00000000007F00000000007 +F00000000007F00000000007F00000000007F0000003FE07F000001FFF87F000003FFFE7 +F00000FFFFFFF00001FFFFFFF00003FFFFFFF00007FF03FFF0000FFC00FFF0001FF0003F +F0001FE0001FF0003FC0001FF0003FC0000FF0007F800007F0007F000007F0007F000007 +F000FF000007F000FF000007F000FE000007F000FE000007F000FE000007F000FE000007 +F000FE000007F000FE000007F000FE000007F000FE000007F000FF000007F0007F00000F +F0007F00000FF0007F80000FF0003F80001FF0003FC0003FF0001FE0003FF0001FF0007F +F0000FF801FFF00007FE07FFFFC003FFFFFFFFE001FFFFFFFFF000FFFFF7FFF0007FFFC7 +FFE0001FFF03FFC00007FC0000002C397DB730>I<0001FF00000007FFE000001FFFF800 +007FFFFC0000FFFFFE0001FFFFFF0003FF81FF8007FC007FC00FF8003FC01FE0001FE01F +E0000FE03FC0000FF03F800007F07F800007F07F000007F07F000003F8FF000003F8FE00 +0003F8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF0FE0000 +0000FF000000007F000000007F000000007F800000003F800001F03FC00003F81FE00003 +F80FF00003F80FF80007F807FE001FF003FFC07FE001FFFFFFE000FFFFFFC0003FFFFF80 +001FFFFE000007FFF8000000FFC000252A7CA830>I<000000FF80000007FFE000001FFF +F000003FFFF000007FFFF80000FFFFF80001FF87F80003FE07F80003FC03F00007F800C0 +0007F000000007F000000007F000000007F000000007F000000007F000000007F0000000 +07F000003FFFFFFFC07FFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE07FFFFFFFC00007 +F000000007F000000007F000000007F000000007F000000007F000000007F000000007F0 +00000007F000000007F000000007F000000007F000000007F000000007F000000007F000 +000007F000000007F000000007F000000007F000000007F000000007F000000007F00000 +0007F000000007F000000007F000000007F000000007F000003FFFFFFE007FFFFFFF00FF +FFFFFF80FFFFFFFF807FFFFFFF003FFFFFFE0025397DB830>I<0003FC00FF00001FFF87 +FFC0003FFFDFFFC000FFFFFFFFE001FFFFFFFFE003FFFFFFFFE007FE07FF8FE007F801FE +07C00FF000FF00000FF000FF00000FE0007F00001FE0007F80001FC0003F80001FC0003F +80001FC0003F80001FC0003F80001FC0003F80001FE0007F80000FE0007F00000FF000FF +00000FF000FF000007F801FE000007FE07FE000007FFFFFC000007FFFFF800000FFFFFF0 +00000FFFFFC000000FDFFF8000000FC3FC0000000FC0000000000FC0000000000FC00000 +00000FE0000000000FF00000000007FFFFF0000007FFFFFF000003FFFFFFC00007FFFFFF +F0000FFFFFFFF8001FFFFFFFFC003FE0001FFE003F800001FE007F0000007F007E000000 +3F00FE0000003F80FC0000001F80FC0000001F80FC0000001F80FC0000001F80FC000000 +1F80FE0000003F807F0000007F007F800000FF003FC00001FE003FF00007FE001FFF007F +FC000FFFFFFFF80007FFFFFFF00001FFFFFFC000007FFFFF0000001FFFFC00000001FFC0 +00002B3E7DA730>I<3FFC000000007FFE00000000FFFE00000000FFFE000000007FFE00 +0000003FFE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE00 +00000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE01 +FE000000FE0FFF800000FE3FFFE00000FEFFFFF00000FFFFFFF80000FFFFFFF80000FFFE +07FC0000FFF803FC0000FFE001FE0000FFC001FE0000FF8000FE0000FF8000FE0000FF00 +00FE0000FF0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 +00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 +00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 +00FE0000FE0000FE0000FE0000FE0000FE0000FE003FFFF81FFFF87FFFFC3FFFFCFFFFFE +3FFFFEFFFFFE3FFFFE7FFFFC3FFFFC3FFFF81FFFF82F3880B730>I<0000E000000003F8 +00000003F800000007FC00000007FC00000007FC00000003F800000003F800000000E000 +000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000001FFFF800003FFFFC00007FFFFC00007FFFFC00003FFFFC00001F +FFFC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001 +FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC +00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00 +000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00003FFFFFFFC0 +7FFFFFFFE0FFFFFFFFE0FFFFFFFFE07FFFFFFFE03FFFFFFFC023397AB830>I<000001C0 +000007F0000007F000000FF800000FF800000FF8000007F0000007F0000001C000000000 +000000000000000000000000000000000000000000000000000000000000000000FFFFF0 +01FFFFF801FFFFF801FFFFF801FFFFF800FFFFF8000003F8000003F8000003F8000003F8 +000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8 +000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8 +000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8 +000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8 +000003F8000007F0000007F03C0007F07E000FE0FF001FE0FF003FC0FF007FC0FFFFFF80 +7FFFFF007FFFFE003FFFFC000FFFF00003FFC0001D4E7CB830>I<7FF800000000FFFC00 +000000FFFC00000000FFFC00000000FFFC000000007FFC0000000000FC0000000000FC00 +00000000FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC00 +00000000FC0000000000FC0000000000FC0000000000FC03FFFF8000FC07FFFFC000FC07 +FFFFE000FC07FFFFE000FC07FFFFC000FC03FFFF8000FC001FE00000FC003FC00000FC00 +7F800000FC00FF000000FC01FE000000FC03FC000000FC0FF8000000FC1FF0000000FC3F +E0000000FC7FC0000000FCFF80000000FDFFC0000000FFFFE0000000FFFFF0000000FFF7 +F0000000FFE3F8000000FFC1FC000000FF81FE000000FF00FF000000FE007F000000FC00 +3F800000FC001FC00000FC001FE00000FC000FF00000FC0007F00000FC0003F80000FC00 +01FC007FFFF81FFFE0FFFFFC3FFFF0FFFFFC3FFFF8FFFFFC3FFFF8FFFFFC3FFFF07FFFF8 +1FFFE02D387FB730>I<7FFFF80000FFFFFC0000FFFFFC0000FFFFFC0000FFFFFC00007F +FFFC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001 +FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC +00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00 +000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC0000 +0001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC000000 +01FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001 +FC00000001FC00007FFFFFFFF0FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF87FFFFF +FFF025387BB730>I<0000FC007E00007FC3FF01FF8000FFEFFF87FFC000FFFFFFCFFFE0 +00FFFFFFDFFFE000FFFFFFFFFFF0007FFF0FFF87F00007FE07FF03F80007FC07FE03F800 +07F803FC01F80007F803FC01F80007F003F801F80007F003F801F80007F003F801F80007 +E003F001F80007E003F001F80007E003F001F80007E003F001F80007E003F001F80007E0 +03F001F80007E003F001F80007E003F001F80007E003F001F80007E003F001F80007E003 +F001F80007E003F001F80007E003F001F80007E003F001F80007E003F001F80007E003F0 +01F80007E003F001F80007E003F001F80007E003F001F80007E003F001F8007FFE0FFF07 +FF80FFFF1FFF8FFFC0FFFF1FFF8FFFC0FFFF1FFF8FFFC0FFFF1FFF8FFFC07FFE0FFF07FF +80322881A730>I<000001FE00003FFC0FFF80007FFE3FFFE000FFFEFFFFF000FFFFFFFF +F8007FFFFFFFF8003FFFFE07FC0000FFF803FC0000FFE001FE0000FFC001FE0000FF8000 +FE0000FF8000FE0000FF0000FE0000FF0000FE0000FE0000FE0000FE0000FE0000FE0000 +FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000 +FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000 +FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE003FFFF81F +FFF87FFFFC3FFFFCFFFFFE3FFFFEFFFFFE3FFFFE7FFFFC3FFFFC3FFFF81FFFF82F2880A7 +30>I<0001FF0000000FFFE000003FFFF800007FFFFC0000FFFFFE0003FFFFFF8003FF01 +FF8007FC007FC00FF8003FE01FE0000FF01FE0000FF03FC00007F83F800003F87F800003 +FC7F000001FC7F000001FC7F000001FCFE000000FEFE000000FEFE000000FEFE000000FE +FE000000FEFE000000FEFE000000FEFE000000FEFF000001FE7F000001FC7F000001FC7F +800003FC3F800003F83FC00007F83FE0000FF81FF0001FF00FF8003FE00FFC007FE007FF +01FFC003FFFFFF8001FFFFFF00007FFFFC00003FFFF800000FFFE0000001FF0000272A7C +A830>I<000003FE00003FFC1FFF80007FFE7FFFE000FFFEFFFFF000FFFFFFFFFC007FFF +FFFFFE003FFFFE07FE0000FFF001FF0000FFE000FF8000FFC0007F8000FF80003FC000FF +00001FC000FE00001FE000FE00000FE000FE00000FE000FE00000FF000FE000007F000FE +000007F000FE000007F000FE000007F000FE000007F000FE000007F000FE000007F000FE +000007F000FE00000FF000FE00000FF000FE00000FE000FF00000FE000FF00001FE000FF +80003FC000FF80003FC000FFC0007F8000FFE000FF8000FFF003FF0000FFFC0FFE0000FF +FFFFFC0000FFFFFFF80000FEFFFFF00000FE7FFFC00000FE1FFF000000FE03FC000000FE +0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE +0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE +000000003FFFF80000007FFFFC000000FFFFFE000000FFFFFE0000007FFFFC0000003FFF +F80000002C3C80A730>I<0001FF00F800000FFFC1FC00003FFFF1FC00007FFFFDFC0001 +FFFFFFFC0003FFFFFFFC0007FF81FFFC000FFC007FFC000FF8001FFC001FF0000FFC001F +E00007FC003FC00007FC003F800003FC007F800003FC007F000003FC007F000001FC00FF +000001FC00FE000001FC00FE000001FC00FE000001FC00FE000001FC00FE000001FC00FE +000001FC00FE000001FC00FF000001FC007F000001FC007F000003FC007F800003FC007F +800003FC003FC00007FC003FC0000FFC001FE0001FFC000FF0003FFC000FFC007FFC0007 +FF01FFFC0003FFFFFFFC0001FFFFFDFC0000FFFFF9FC00003FFFF1FC00000FFFC1FC0000 +03FE01FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000 +000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000 +000001FC0000000001FC00000000FFFFF8000001FFFFFC000001FFFFFC000001FFFFFC00 +0001FFFFFC000000FFFFF82E3C7DA730>I<00000007F8003FFF803FFF007FFFC0FFFF80 +FFFFC3FFFF80FFFFCFFFFFC07FFFDFFFFFC03FFFFFFC3FC0001FFFE03FC0001FFF801F80 +001FFF000F00001FFE000000001FFC000000001FF8000000001FF0000000001FF0000000 +001FE0000000001FE0000000001FE0000000001FE0000000001FC0000000001FC0000000 +001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000 +001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000 +001FC00000003FFFFFFC00007FFFFFFE0000FFFFFFFF0000FFFFFFFF00007FFFFFFE0000 +3FFFFFFC00002A287EA730>I<001FFC1E0001FFFF9F0007FFFFFF000FFFFFFF001FFFFF +FF003FFFFFFF007FF007FF007F8001FF00FE0000FF00FC00007F00FC00007F00FC00007F +00FC00007F00FE00003E007F000000007FE00000003FFF0000001FFFFC00000FFFFF8000 +07FFFFE00001FFFFF800007FFFFC000003FFFE0000000FFF00000000FF807C00007F80FE +00001FC0FE00001FC0FE00000FC0FF00000FC0FF00000FC0FF80000FC0FF80001FC0FFC0 +003F80FFE0007F80FFFC03FF00FFFFFFFF00FFFFFFFE00FFFFFFFC00FCFFFFF000F83FFF +C000780FFE0000222A79A830>I<0007800000000FC00000001FC00000001FC00000001F +C00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC000003FFFFF +FFE07FFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF07FFFFFFFE0001FC00000001FC000 +00001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000 +001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC0000000 +1FC00000001FC00000001FC000F8001FC001FC001FC001FC001FC001FC001FC001FC001F +C001FC001FE003FC000FE007F8000FF007F8000FFC1FF00007FFFFE00003FFFFC00003FF +FF800001FFFF0000007FFC0000001FF00026337EB130>I<3FFC003FFC007FFE007FFE00 +FFFE00FFFE00FFFE00FFFE007FFE007FFE003FFE003FFE0000FE0000FE0000FE0000FE00 +00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 -00FE0000FE0000FE00FFFFFEFFFFFEFFFFFE17277BA622>49 D<00FF800007FFF0001FFF -FC003E07FE007E01FF807F007F80FF807FC0FF803FC0FF803FE0FF801FE0FF801FE07F00 -1FE03E003FE000003FE000003FC000003FC000007F8000007F000000FE000000FC000001 -F8000003F0000007C000000F8000001F0000003C0000007800E0007000E000E000E001C0 -01C0030001C0060001C00FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFF -FF801B277DA622>I<007F800003FFF00007FFFC000F81FE001F00FF001F80FF003FC07F -803FC07F803FC07F803FC07F801FC07F800F80FF000000FF000000FE000001FC000003F8 -000007F00000FF800000FFC0000001F8000000FE0000007F0000007F8000003FC000003F -C000003FE01C003FE07F003FE07F003FE0FF803FE0FF803FE0FF803FC0FF803FC07F007F -807E00FF003F01FE001FFFFC0007FFF00000FF80001B277DA622>I<00000F0000000F00 -00001F0000003F0000007F000000FF000001FF000001FF000003BF0000073F00000E3F00 -001C3F00003C3F0000383F0000703F0000E03F0001C03F0003803F0007803F0007003F00 -0E003F001C003F0038003F0070003F00F0003F00FFFFFFF8FFFFFFF8FFFFFFF800007F00 -00007F0000007F0000007F0000007F0000007F0000007F0000007F00001FFFF8001FFFF8 -001FFFF81D277EA622>I<180003001F801F001FFFFE001FFFFC001FFFF8001FFFF0001F -FFE0001FFF80001FFE00001C0000001C0000001C0000001C0000001C0000001C0000001C -7FC0001DFFF8001F80FC001E003F0008003F0000001F8000001FC000001FC000001FE000 -001FE03C001FE07E001FE0FF001FE0FF001FE0FF001FE0FF001FC0FE001FC07C003F8078 -003F803C007F001F01FE000FFFFC0003FFF00000FF80001B277DA622>I<0007F800003F -FE0000FFFF0001FC0F8003F00F8007E01FC00FC03FC01F803FC01F803FC03F803FC03F00 -1F807F000F007F0000007F000000FF020000FF1FF000FF3FFC00FF603E00FFC03F00FF80 -1F80FF801FC0FF801FC0FF001FC0FF001FE0FF001FE0FF001FE07F001FE07F001FE07F00 -1FE07F001FE03F001FE03F001FC01F801FC01F801F800FC03F0007E07E0003FFFC0001FF -F800003FC0001B277DA622>I<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFF -E07FFFFFC07FFFFF807FFFFF0070000E0070000E0070001C00E0003800E0007000E000E0 -000001C0000001C0000003800000078000000F8000000F0000001F0000001F0000003F00 -00003F0000007E0000007E0000007E000000FE000000FE000000FE000000FE000001FE00 -0001FE000001FE000001FE000001FE000001FE000001FE000000FC0000007800001C297C -A822>I<003FC00001FFF00003FFFC0007C07E000F003F001E001F001E000F803E000F80 -3E000F803F000F803F800F803FC00F003FF01F001FFC1E001FFE3C000FFFF80007FFE000 -03FFF00001FFFC0001FFFE0007FFFF000F0FFF801E07FFC03E01FFC07C007FE07C001FE0 -F8000FE0F80007E0F80003E0F80003E0F80003E0F80003C07C0003C07E0007803F000F00 -1FC03F000FFFFC0003FFF800007FC0001B277DA622>I<00000780000000000780000000 -000FC0000000000FC0000000000FC0000000001FE0000000001FE0000000003FF0000000 -003FF0000000003FF00000000077F80000000077F800000000F7FC00000000E3FC000000 -00E3FC00000001C1FE00000001C1FE00000003C1FF0000000380FF0000000380FF000000 -07007F80000007007F8000000F007FC000000E003FC000000E003FC000001C001FE00000 -1C001FE000003FFFFFF000003FFFFFF000003FFFFFF00000700007F80000700007F80000 -F00007FC0000E00003FC0001E00003FE0001C00001FE0001C00001FE0003C00001FF00FF -FE003FFFFCFFFE003FFFFCFFFE003FFFFC2E297EA833>65 D<00007FE0030003FFFC0700 -1FFFFF0F007FF00FDF00FF8001FF01FE0000FF03FC00007F07F000003F0FF000001F1FE0 -00001F1FE000000F3FC000000F3FC00000077FC00000077F800000077F80000000FF8000 -0000FF80000000FF80000000FF80000000FF80000000FF80000000FF80000000FF800000 -00FF800000007F800000007F800000007FC00000073FC00000073FC00000071FE0000007 -1FE000000E0FF000000E07F000001C03FC00003C01FE00007800FF8001F0007FF007C000 -1FFFFF800003FFFE0000007FF00028297CA831>67 D<FFFFFFFC0000FFFFFFFF8000FFFF -FFFFE00003FC001FF80003FC0003FC0003FC0001FE0003FC0000FF0003FC00007F8003FC -00003FC003FC00001FC003FC00001FE003FC00001FE003FC00000FF003FC00000FF003FC -00000FF003FC00000FF003FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC -00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC -00000FF003FC00000FF003FC00000FF003FC00001FE003FC00001FE003FC00001FC003FC -00003FC003FC00003F8003FC00007F0003FC0001FF0003FC0003FC0003FC001FF800FFFF -FFFFF000FFFFFFFF8000FFFFFFFC00002D297EA834>I<FFFFFFFFE0FFFFFFFFE0FFFFFF -FFE003FC001FE003FC0007F003FC0001F003FC0001F003FC0000F003FC00007003FC0000 -7003FC00007003FC01C07803FC01C03803FC01C03803FC01C03803FC03C00003FC03C000 -03FC0FC00003FFFFC00003FFFFC00003FFFFC00003FC0FC00003FC03C00003FC03C00003 -FC01C00E03FC01C00E03FC01C00E03FC01C01C03FC00001C03FC00001C03FC00001C03FC -00003C03FC00003803FC00007803FC0000F803FC0001F803FC0003F803FC001FF8FFFFFF -FFF0FFFFFFFFF0FFFFFFFFF027297EA82C>I<FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FC -003FC003FC000FE003FC0003E003FC0001E003FC0001E003FC0000E003FC0000E003FC00 -00E003FC0000F003FC01C07003FC01C07003FC01C07003FC01C00003FC03C00003FC03C0 -0003FC0FC00003FFFFC00003FFFFC00003FFFFC00003FC0FC00003FC03C00003FC03C000 -03FC01C00003FC01C00003FC01C00003FC01C00003FC00000003FC00000003FC00000003 -FC00000003FC00000003FC00000003FC00000003FC00000003FC000000FFFFFC0000FFFF -FC0000FFFFFC000024297EA82A>I<FFFFF0FFFFF0FFFFF003FC0003FC0003FC0003FC00 -03FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC00 -03FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC00 -03FC0003FC0003FC0003FC0003FC0003FC0003FC00FFFFF0FFFFF0FFFFF014297EA819> -73 D<FFFFFC0000FFFFFC0000FFFFFC000003FC00000003FC00000003FC00000003FC00 -000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000 -0003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000 -03FC00000003FC00000003FC00000003FC0001C003FC0001C003FC0001C003FC0001C003 -FC0003C003FC00038003FC00038003FC00078003FC00078003FC000F8003FC000F8003FC -001F8003FC007F8003FC01FF00FFFFFFFF00FFFFFFFF00FFFFFFFF0022297EA828>76 -D<FFFFFFF800FFFFFFFF00FFFFFFFFC003FC003FE003FC000FF003FC0007F803FC0007FC -03FC0003FC03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03 -FC0003FE03FC0003FC03FC0007FC03FC0007F803FC000FF003FC003FE003FFFFFF8003FF -FFFE0003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00 -000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000 -0003FC00000003FC000000FFFFF00000FFFFF00000FFFFF0000027297EA82E>80 -D<00FF806003FFF0E00FFFF9E01F80FFE03F001FE03E0007E07C0003E07C0003E0FC0001 -E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FFC000007FFC00007FFFE0003FFFF8 -001FFFFE001FFFFF0007FFFF8003FFFFC000FFFFC0000FFFE000007FE000001FF000000F -F0000007F0E00003F0E00003F0E00003F0E00003F0F00003E0F00003E0F80007E0FC0007 -C0FF000F80FFE03F80F3FFFE00E1FFFC00C01FF0001C297CA825>83 -D<7FFFFFFFFF807FFFFFFFFF807FFFFFFFFF807F807F807F807C007F800F8078007F8007 -8078007F80078070007F800380F0007F8003C0F0007F8003C0E0007F8001C0E0007F8001 -C0E0007F8001C0E0007F8001C0E0007F8001C000007F80000000007F80000000007F8000 -0000007F80000000007F80000000007F80000000007F80000000007F80000000007F8000 -0000007F80000000007F80000000007F80000000007F80000000007F80000000007F8000 -0000007F80000000007F80000000007F80000000007F80000000007F80000000007F8000 -0000007F80000000FFFFFFC00000FFFFFFC00000FFFFFFC0002A287EA72F>I<FFFFF000 -7FFFFFFFF0007FFFFFFFF0007FFF03FE000001C001FE0000038001FE0000038001FF0000 -078000FF0000070000FF80000F00007F80000E00007FC0000E00003FC0001C00003FC000 -1C00003FE0003C00001FE0003800001FF0007800000FF0007000000FF80070000007F800 -E0000007F800E0000003FC01C0000003FC01C0000003FE03C0000001FE0380000001FF07 -80000000FF0700000000FF87000000007F8E000000007F8E000000007FDE000000003FDC -000000003FFC000000001FF8000000001FF8000000000FF0000000000FF0000000000FF0 -0000000007E00000000007E00000000003C00000000003C0000030297FA833>86 -D<01FF80000FFFF0001F81FC003FC0FE003FC07F003FC03F003FC03F801F803F800F003F -8000003F8000003F800000FF80007FFF8003FFFF800FF03F801FC03F803F803F807F003F -80FE003F80FE003F80FE003F80FE003F80FE007F807F00DF803F839FFC1FFF0FFC03FC03 -FC1E1B7E9A21>97 D<FFE00000FFE00000FFE000000FE000000FE000000FE000000FE000 -000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE1FE -000FEFFF800FFE0FE00FF803F00FF001F80FE001FC0FE000FC0FE000FE0FE000FE0FE000 -FF0FE000FF0FE000FF0FE000FF0FE000FF0FE000FF0FE000FF0FE000FF0FE000FE0FE000 -FE0FE000FE0FE001FC0FE001FC0FF001F80FF803F00F9C0FE00F0FFF800E01FC00202A7E -A925>I<003FE00001FFFC0003F07E000FC0FF001FC0FF003F80FF003F80FF007F007E00 -7F003C007F000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 -7F0000007F0000007F8000003F8003803F8003801FC007000FE00E0003F83C0001FFF800 -003FC000191B7E9A1E>I<00007FF000007FF000007FF0000007F0000007F0000007F000 -0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 -3F87F001FFF7F007F03FF00FC00FF01F8007F03F8007F03F8007F07F0007F07F0007F07F -0007F0FF0007F0FF0007F0FF0007F0FF0007F0FF0007F0FF0007F0FF0007F0FF0007F07F -0007F07F0007F03F0007F03F8007F01F800FF00FC01FF007F07FFF01FFE7FF007F87FF20 -2A7EA925>I<003FC00001FFF00003F0FC000FC03E001F803F001F801F003F801F807F00 -1F807F001FC07F000FC0FF000FC0FF000FC0FFFFFFC0FFFFFFC0FF000000FF000000FF00 -00007F0000007F0000007F0000003F8001C01F8001C00FC0038007C0070003F01E0000FF -FC00003FE0001A1B7E9A1F>I<0003F800001FFE00007E3F0001FC3F8001F87F8003F87F -8007F07F8007F03F0007F03F0007F0000007F0000007F0000007F0000007F0000007F000 -00FFFFC000FFFFC000FFFFC00007F0000007F0000007F0000007F0000007F0000007F000 -0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 -0007F0000007F0000007F0000007F0000007F0000007F000007FFF80007FFF80007FFF80 -00192A7EA915>I<00FF81F003FFE7F80FC1FE1C1F80FC7C3F007E7C3F007E387F007F00 -7F007F007F007F007F007F007F007F007F007F003F007E003F007E001F80FC000FC1F800 -1FFFE00018FF800038000000380000003C0000003E0000003FFFF8003FFFFF001FFFFFC0 -0FFFFFE007FFFFF01FFFFFF03E0007F07C0001F8F80000F8F80000F8F80000F8F80000F8 -7C0001F07C0001F03F0007E00FC01F8007FFFF00007FF0001E287E9A22>I<FFE00000FF -E00000FFE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000F -E000000FE000000FE000000FE000000FE000000FE0FE000FE3FF800FE70FC00FEC0FE00F -F807E00FF807F00FF007F00FF007F00FE007F00FE007F00FE007F00FE007F00FE007F00F -E007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00F -E007F00FE007F0FFFE3FFFFFFE3FFFFFFE3FFF202A7DA925>I<07000F801FC03FE03FE0 -3FE01FC00F8007000000000000000000000000000000FFE0FFE0FFE00FE00FE00FE00FE0 -0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFE -FFFEFFFE0F2B7EAA12>I<FFE00000FFE00000FFE000000FE000000FE000000FE000000F -E000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000F -E01FFC0FE01FFC0FE01FFC0FE007800FE00F000FE01E000FE03C000FE078000FE0E0000F -E3C0000FE7C0000FEFE0000FFFF0000FFFF8000FF3F8000FE1FC000FC0FE000FC07F000F -C07F000FC03F800FC01FC00FC00FE00FC00FE00FC007F0FFFC1FFFFFFC1FFFFFFC1FFF20 -2A7FA923>107 D<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0 -0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0 -0FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2A7EA912>I<FFC07F001FC000FFC1 -FFC07FF000FFC707E1C1F8000FCC07F301FC000FD803F600FC000FD803FE00FE000FF003 -FC00FE000FF003FC00FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F8 -00FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800 -FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE -000FE003F800FE000FE003F800FE00FFFE3FFF8FFFE0FFFE3FFF8FFFE0FFFE3FFF8FFFE0 -331B7D9A38>I<FFC0FE00FFC3FF80FFC70FC00FCC0FE00FD807E00FD807F00FF007F00F -F007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00F -E007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F0FFFE3FFFFF -FE3FFFFFFE3FFF201B7D9A25>I<003FE00001FFFC0003F07E000FC01F801F800FC03F80 -0FE03F0007E07F0007F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF00 -07F8FF0007F8FF0007F8FF0007F87F0007F07F0007F03F800FE03F800FE01F800FC00FC0 -1F8007F07F0001FFFC00003FE0001D1B7E9A22>I<FFE1FE00FFEFFF80FFFE0FE00FF807 -F00FF003F80FE001FC0FE001FC0FE001FE0FE000FE0FE000FF0FE000FF0FE000FF0FE000 -FF0FE000FF0FE000FF0FE000FF0FE000FF0FE000FE0FE001FE0FE001FE0FE001FC0FE003 -FC0FF003F80FF807F00FFC1FE00FEFFF800FE1FC000FE000000FE000000FE000000FE000 -000FE000000FE000000FE000000FE000000FE00000FFFE0000FFFE0000FFFE000020277E -9A25>I<FFC1F0FFC7FCFFCE3E0FDC7F0FD87F0FF07F0FF07F0FF03E0FE0000FE0000FE0 -000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0 -000FE000FFFF00FFFF00FFFF00181B7F9A1B>114 D<03FE300FFFF03E03F07800F07000 -F0F00070F00070F80070FE0000FFE0007FFF007FFFC03FFFE01FFFF007FFF800FFF80007 -FC0000FCE0007CE0003CF0003CF00038F80038FC0070FF01E0F7FFC0C1FF00161B7E9A1B ->I<00E00000E00000E00000E00001E00001E00001E00003E00003E00007E0000FE0001F -FFE0FFFFE0FFFFE00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000F -E0000FE0000FE0000FE0000FE0700FE0700FE0700FE0700FE0700FE0700FE07007F0E003 -F0C001FF80007F0014267FA51A>I<FFE07FF0FFE07FF0FFE07FF00FE007F00FE007F00F -E007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00F -E007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE00FF00FE00FF007 -E01FF003F077FF01FFE7FF007F87FF201B7D9A25>I<FFFC03FFFFFC03FFFFFC03FF0FF0 -00F007F000E007F800E003F801C003F801C003FC03C001FC038001FE078000FE070000FF -0700007F0E00007F0E00007F9E00003F9C00003FFC00001FF800001FF800000FF000000F -F000000FF0000007E0000007E0000003C0000003C000201B7F9A23>I<FFFC7FFC1FFCFF -FC7FFC1FFCFFFC7FFC1FFC0FE00FE001C007F007E0038007F007E0038007F807F0078003 -F807F0070003F80FF8070003FC0FF80F0001FC0FF80E0001FC1FFC0E0000FE1CFC1C0000 -FE1CFE1C0000FF387E3C00007F387E3800007F787F3800003FF03F7000003FF03FF00000 -3FE01FF000001FE01FE000001FE01FE000000FC00FC000000FC00FC000000F8007C00000 -07800780000007800780002E1B7F9A31>I<FFFC1FFEFFFC1FFEFFFC1FFE07F0038003F8 -078003FC0F0001FE1E0000FE3C00007F3800007FF800003FF000001FE000000FE000000F -F0000007F800000FF800001FFC00003CFE000038FF0000787F0000F03F8001E01FC003C0 -1FE003800FE0FFF03FFFFFF03FFFFFF03FFF201B7F9A23>I<FFFC03FFFFFC03FFFFFC03 -FF0FF000F007F000E007F800E003F801C003F801C003FC03C001FC038001FE078000FE07 -0000FF0700007F0E00007F0E00007F9E00003F9C00003FFC00001FF800001FF800000FF0 -00000FF000000FF0000007E0000007E0000003C0000003C0000003800000038000000780 -00380700007C0F0000FE0E0000FE1E0000FE1C0000FE38000074F000003FE000000F8000 -0020277F9A23>I E /Fq 41 127 df<007E0001C1800301800703C00E03C00E01800E00 -000E00000E00000E00000E0000FFFFC0FFFFC00E01C00E01C00E01C00E01C00E01C00E01 -C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F87F87F87F8151D809C17 ->12 D<FC00FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF -80FF8009127F910C>16 D<070F0F1C3870E0400808789C15>19 D<1C001E000780038003 -800380FF00800009087B7E12>24 D<70F8F8F87005057D840C>46 -D<07C01FF0387C603C601EF01FF81FF80FF80F700F001F001E001E003C0038007000E000 -C00180030006000C031803100320067FFEFFFEFFFE101C7E9B15>50 -D<000C00001C00001C00003C00007C00005C0000DC00019C00031C00031C00061C000C1C -00081C00181C00301C00201C00601C00C01C00FFFFC0FFFFC0001C00001C00001C00001C -00001C00001C0001FFC001FFC0121C7F9B15>52 D<00060000000F0000000F0000000F00 -00001F8000001F8000001F8000003FC0000033C0000033C0000073E0000061E0000061E0 -0000E1F00000C0F00000C0F00001C0F8000180780001FFF80003FFFC0003003C0003003C -0007003E0006001E0006001E000E001F001E000F00FF807FF0FF807FF01C1D7F9C1F>65 -D<001F808000FFE18001F03B8007C00F800F0007801F0007801E0003803C0003807C0001 -807C00018078000180F8000000F8000000F8000000F8000000F8000000F8000000F80000 -00F8000000780001807C0001807C0001803C0001801E0003001F0003000F00060007C00C -0001F0380000FFF000001FC000191E7E9C1E>67 D<FFFFFCFFFFFC0F007C0F001C0F000C -0F000E0F00060F03060F03060F03060F03000F07000FFF000FFF000F07000F03000F0300 -0F03030F03030F00030F00060F00060F00060F000E0F001E0F007CFFFFFCFFFFFC181C7E -9B1C>69 D<FFF0FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F -000F000F000F000F000F000F000F000F000F000F00FFF0FFF00C1C7F9B0F>73 -D<FFF800FFF8000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00 -000F00000F00000F00000F00000F00000F00180F00180F00180F00180F00380F00300F00 -700F00F00F01F0FFFFF0FFFFF0151C7E9B1A>76 D<003F800000E0E0000380380007001C -000E000E001E000F003C0007803C0007807C0007C0780003C0780003C0F80003E0F80003 -E0F80003E0F80003E0F80003E0F80003E0F80003E0F80003E0780003C07C0007C07C0007 -C03C0007803E000F801E000F000F001E0007001C000380380000E0E000003F80001B1E7E -9C20>79 D<FFFF80FFFFE00F01F00F00780F003C0F003E0F003E0F003E0F003E0F003E0F -003C0F003C0F00780F01F00FFFC00F00000F00000F00000F00000F00000F00000F00000F -00000F00000F00000F0000FFF000FFF000171C7E9B1C>I<7FFFFFC07FFFFFC0780F03C0 -700F01C0600F00C0E00F00E0C00F0060C00F0060C00F0060C00F0060000F0000000F0000 -000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000 -000F0000000F0000000F0000000F0000000F000003FFFC0003FFFC001B1C7F9B1E>84 -D<FFE01FF0FFE01FF01F0007800F0003000F00030007800600078006000780060003C00C -0003C00C0003C00C0001E0180001E0180001F0180000F0300000F0300000F87000007860 -0000786000003CC000003CC000003CC000001F8000001F8000001F8000000F0000000F00 -00000F0000000600001C1D7F9B1F>86 D<0FE0001838003C1C003C0E00180E00000E0000 -0E0001FE000F8E003C0E00780E00700E00F00E60F00E60F00E60701E603827C00FC38013 -127F9115>97 D<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C00 -001C00001CFC001F87001E03801C01C01C01E01C00E01C00F01C00F01C00F01C00F01C00 -F01C00F01C00E01C01E01C01C01E03801B070018FC00141D7F9C17>I<03F80E0C1C1E38 -1E780C7000F000F000F000F000F000F0007000780638061C0C0E1803E00F127F9112>I< -001F80001F8000038000038000038000038000038000038000038000038000038003F380 -0E0F801C0780380380780380700380F00380F00380F00380F00380F00380F00380700380 -7803803803801C07800E1BF003F3F0141D7F9C17>I<07E00C301818381C701E700EF00E -FFFEF000F000F000F000700070063806180C0E1803E00F127F9112>I<00F8018C071E06 -1E0E0C0E000E000E000E000E000E00FFE0FFE00E000E000E000E000E000E000E000E000E -000E000E000E000E000E007FE07FE00F1D809C0D>I<00038007E4C00C39C0381DC0381C -00781E00781E00781E00781E00381C00381C001C300037E0002000003000003000003FF8 -001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C -7F9215>I<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C -00001C7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C -03801C03801C03801C03801C0380FF9FF0FF9FF0141D7F9C17>I<38007C007C007C0038 -00000000000000000000000000FC00FC001C001C001C001C001C001C001C001C001C001C -001C001C001C001C00FF80FF80091D7F9C0C>I<01C003E003E003E001C0000000000000 -00000000000007E007E000E000E000E000E000E000E000E000E000E000E000E000E000E0 -00E000E000E000E000E000E060E0F0C0F1C061803E000B25839C0D>I<FC00FC001C001C -001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C -001C001C001C001C001C00FF80FF80091D7F9C0C>108 D<FC7E07E000FC838838001D01 -9018001E01E01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C0 -1C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF -80FF8FF8FF8021127F9124>I<FC7C00FC87001D03001E03801C03801C03801C03801C03 -801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0FF9FF014127F9117 ->I<03F0000E1C00180600380700700380700380F003C0F003C0F003C0F003C0F003C0F0 -03C07003807003803807001C0E000E1C0003F00012127F9115>I<FCFC00FF87001E0380 -1C01C01C01E01C00E01C00F01C00F01C00F01C00F01C00F01C00F01C01E01C01E01C01C0 -1E03801F07001CFC001C00001C00001C00001C00001C00001C0000FF8000FF8000141A7F -9117>I<03F1800E19801C0780380780780380780380F00380F00380F00380F00380F003 -80F003807003807803803807801C07800E1B8003E3800003800003800003800003800003 -80000380001FF0001FF0141A7F9116>I<FCE0FD381E781E781C301C001C001C001C001C -001C001C001C001C001C001C00FFC0FFC00D127F9110>I<1F9020F04070C030C030E030 -F8007F803FE00FF000F8C038C018C018E018E010D0608FC00D127F9110>I<0C000C000C -000C000C000C001C001C003FE0FFE01C001C001C001C001C001C001C001C001C301C301C -301C301C300C200E6003C00C1A7F9910>I<FC1F80FC1F801C03801C03801C03801C0380 -1C03801C03801C03801C03801C03801C03801C03801C03801C07800C07800E1BF003E3F0 -14127F9117>I<FF0FE0FF0FE01C07801C03000E06000E06000E0600070C00070C00070C -0003980003980003F80001F00001F00000E00000E00000E00013127F9116>I<FF3FCFE0 -FF3FCFE03C0F07801C0F03001C1B03001C1B87000E1B86000E3B86000E3186000731CC00 -0731CC000760CC0003E0F80003E0F80003C0780003C0780001C0700001C070001B127F91 -1E>I<7F8FF07F8FF00F0780070600038E0001DC0001D80000F00000700000780000F800 -01DC00038E00030E000607000F0380FF0FF8FF0FF81512809116>I<FF0FE0FF0FE01C07 -801C03000E06000E06000E0600070C00070C00070C0003980003980003F80001F00001F0 -0000E00000E00000E00000C00000C00000C000F18000F18000F300006600003C0000131A -7F9116>I<1C043F0843F080E00E047D9B15>126 D E /Fr 13 118 -df<0F001F003F803F007E00F800F000C0000908769C18>19 D<00038000000380000007 -C0000007C0000007C000000FE000000FE000001FF000001BF000003BF8000031F8000031 -F8000060FC000060FC0000E0FE0000C07E0000C07E0001803F0001FFFF0003FFFF800300 -1F8007001FC006000FC006000FC00C0007E00C0007E0FF803FFEFF803FFE1F1C7E9B24> -65 D<07F8601FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000FFE000 -7FFE003FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0 -E000E0F001C0FC03C0EFFF00C3FC00141C7D9B1B>83 D<07F8001FFE003F1F803F07803F -07C01E07C00C07C003FFC01FFFC03F87C07E07C0FC07C0FC07C0FC07C0FC0FC07E1FC03F -FBF80FE1F815127F9117>97 D<FF0000FF00001F00001F00001F00001F00001F00001F00 -001F00001F00001F00001F1FC01FFFE01FC1F81F00F81F007C1F007C1F007E1F007E1F00 -7E1F007E1F007E1F007E1F007C1F007C1F80F81FC1F01C7FE0181F80171D7F9C1B>I<03 -F8000FFE001F3F003E3F007C3F007C1E00FC0C00FC0000FC0000FC0000FC0000FC00007C -00007E01803E03801F07000FFE0003F80011127E9115>I<1C003E007F007F007F003E00 -1C00000000000000000000007F007F001F001F001F001F001F001F001F001F001F001F00 -1F001F001F001F00FFC0FFC00A1E7F9D0E>105 D<FF1FC0FE00FF7FE3FF001FE1F70F80 -1F80FC07C01F80FC07C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F -00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C0FFE7FF3FF8FFE7 -FF3FF825127F9128>109 D<01FC000FFF801F07C03E03E07C01F07C01F0FC01F8FC01F8 -FC01F8FC01F8FC01F8FC01F87C01F07C01F03E03E01F07C00FFF8001FC0015127F9118> -111 D<FE7C00FEFF001FDF801F9F801F9F801F0F001F06001F00001F00001F00001F0000 -1F00001F00001F00001F00001F0000FFE000FFE00011127F9114>114 -D<1FD83FF87038E018E018F000FF807FE07FF01FF807FC007CC01CC01CE01CF038FFF0CF -C00E127E9113>I<030003000300070007000F000F003F00FFFCFFFC1F001F001F001F00 -1F001F001F001F001F001F0C1F0C1F0C1F0C0F9807F003E00E1A7F9913>I<FF07F8FF07 -F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00 -F81F01F80F03F807FEFF03F8FF18127F911B>I E /Fs 7 115 df<000FF000007FFC0000 -FFFF0001FFFF0007F81F0007E006000F8000001F0000003F0000003E0000003E0000007C -0000007C0000007C000000F8000000F8000000F8000000F8000000F8000000F8000000F8 -000000F8000000F80000007C0000007C0000007C0000003E0000003E0000003F0000001F -0000000F80008007E0038007F80F8001FFFF8000FFFF00007FFC00000FF00019257DA31F ->67 D<000FF000003FFE0000FFFF8001FFFF8003F80F8007E003000FC000001F8000001F -0000003E0000003E0000007C0000007C0000007C000000F8000000F8000000F8000000F8 -000000F8000000F8000000F800FFC0F800FFC0F800FFC07C0003C07C0003C07C0003C03E -0003C03E0003C01F0003C01F8003C00FC003C007E003C003F807C001FFFFC000FFFFC000 -3FFF00000FF8001A257DA321>71 D<FFFFFFF0FFFFFFF0FFFFFFF0FFFFFFF0000F800000 -0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800000 -0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800000 -0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800000 -0F8000000F8000000F80001C237EA221>84 D<07F0003FFC007FFE00781F00600F004007 -8000078000078000078001FF800FFF801FFF807F0780780780F00780F00780F00780F80F -807C1F807FFF803FFF801FC78011167E9517>97 D<01F80007FE000FFF001F07803C03C0 -7801C07801C07000E0FFFFE0FFFFE0FFFFE0F00000F00000F000007000007800007C0000 -3E00401F03C00FFFC007FF8000FC0013167F9516>101 D<007F01FF03FF07C107000F00 -0F000F000F000F000F000F000F00FFF8FFF8FFF80F000F000F000F000F000F000F000F00 -0F000F000F000F000F000F000F000F000F000F000F00102380A20F>I<F0E0F3E0F7E0FF -E0FF00FC00F800F800F000F000F000F000F000F000F000F000F000F000F000F000F000F0 -000B167C9511>114 D E /Ft 30 118 df<387CFCFE7E3E0E1C3CF8F040070C788516> -44 D<FFFF80FFFF80FFFF8011037E8D16>I<3078FCFC78300606788516>I<0001800003 -80000380000700000700000E00000E00001C00001C0000380000380000700000700000E0 -0000E00001C00001C0000380000380000700000700000E00000E00001C00001C00003800 -00380000700000700000E00000E00000C0000011207E9C16>I<03E0000FF8001FFC001E -3C00380E00780F00700700700700E00380E00380E00380E00380E00380E00380E00380E0 -0380F00780700700700700780F003C1E001E3C001FFC000FF80003E00011197E9816>I< -0300070007000F001F00FF00FF00E7000700070007000700070007000700070007000700 -0700070007000700FFF8FFF8FFF80D197B9816>I<07E0001FF8003FFC00783E00E00700 -F00780F00380600380000380000380000700000700000E00001C0000380000700000E000 -01C0000380000F00001E03803803807FFF80FFFF807FFF8011197E9816>I<007C0000FC -0000FC0001DC00039C00039C00071C000F1C000E1C001E1C003C1C00381C00781C00F01C -00FFFFE0FFFFE0FFFFE0001C00001C00001C00001C00001C0001FFC001FFC001FFC01319 -7F9816>52 D<3FFE007FFE007FFE00700000700000700000700000700000700000700000 -77F0007FFC007FFE00780F00300700000380000380600380F00380F00380E00700781E00 -3FFC001FF80007E00011197E9816>I<00F80003FC0007FE000F07001C0F00380F007806 -00700000700000E7F800EFFC00FFFE00F80F00F00700F00380E00380E003807003807003 -807007803807003C1E001FFC000FF80003E00011197E9816>I<07F0001FFC003FFE007C -1F00F00780E00380E00380E003807007007C1F001FFC0007F0001FFC003C1E00700700F0 -0780E00380E00380E00380F007807007007C1F003FFE001FFC0007F00011197E9816>56 -D<03E0000FF8001FFC003C1E00700E00700700E00700E00780E00380E00380E007807007 -80780F803FFF801FFB800FF380000700000700300700780E00781C00707C003FF8001FE0 -000F800011197E9816>I<3078FCFC78300000000000003078FCFC78300612789116>I<00 -F80003FC0007FE000F07001C3B8038FF8079FF8073C7C07383C0E701C0E701C0E701C0E7 -01C0E701C0E701C0E701C073838073C78079FF0038FE001C38000F03C007FFC003FF0000 -FC0012197E9816>64 D<7FF800FFFE007FFF001C0F001C07801C03C01C01C01C01C01C01 -E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C03C01C07 -801C0F807FFF00FFFE007FF8001319809816>68 D<1FE0003FF0007FF800783C00300E00 -000E00003E0007FE001FFE007FCE00780E00E00E00E00E00E00E00783E007FFFE03FF7E0 -0FC3E013127E9116>97 D<FC0000FC0000FC00001C00001C00001C00001C00001C7C001D -FE001FFF001F07801E03C01C01C01C00E01C00E01C00E01C00E01C00E01C00E01E01C01E -03C01F07801FFF001DFE000CF80013197F9816>I<03F80FFC1FFE3C1E780C7000E000E0 -00E000E000E000F000700778073E0E1FFC0FF803F010127D9116>I<003F00003F00003F -0000070000070000070000070003E7000FF7001FFF003C1F00780F00700700E00700E007 -00E00700E00700E00700E00700700F00780F003C1F001FFFE00FF7E007C7E013197F9816 ->I<03F0000FFC001FFE003C0F00780700700380E00380FFFF80FFFF80FFFF80E00000E0 -00007003807803803E07801FFF0007FE0001F80011127E9116>I<001E00007F0001FF80 -01C7800383000380000380007FFF00FFFF00FFFF00038000038000038000038000038000 -0380000380000380000380000380000380000380007FFC00FFFE007FFC0011197F9816> -I<FC0000FC0000FC00001C00001C00001C00001C00001CF8001DFC001FFE001F0F001E07 -001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF8FE0FF9F -E0FF8FE013197F9816>104 D<07000F800F800F800700000000000000FF80FF80FF8003 -8003800380038003800380038003800380038003800380FFFCFFFEFFFC0F1A7C9916>I< -7FC000FFC0007FC00001C00001C00001C00001C00001C00001C00001C00001C00001C000 -01C00001C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF00FFFF80 -7FFF0011197E9816>108 D<03E0000FF8001FFC003C1E00780F00700700E00380E00380 -E00380E00380E00380F00780700700780F003C1E001FFC000FF80003E00011127E9116> -111 D<FC7C00FDFE00FFFF001F07801E03C01C01C01C00E01C00E01C00E01C00E01C00E0 -1C00E01E01C01E03C01F07801FFF001DFE001CF8001C00001C00001C00001C00001C0000 -1C0000FF8000FF8000FF8000131B7F9116>I<7F0F80FF3FC07F7FE007F1E007C0C00780 -000780000700000700000700000700000700000700000700000700007FFC00FFFC007FFC -0013127F9116>114 D<0FEC3FFC7FFCF03CE01CE01C70007F801FF007F8003C600EE00E -F00EF81EFFFCFFF8C7E00F127D9116>I<0300000700000700000700000700007FFF00FF -FF00FFFF0007000007000007000007000007000007000007000007010007038007038007 -038007870003FE0001FC0000F80011177F9616>I<FC3F00FC3F00FC3F001C07001C0700 -1C07001C07001C07001C07001C07001C07001C07001C07001C07001C1F001FFFE00FFFE0 -07E7E013127F9116>I E /Fu 34 125 df<038007800F800F001E003C0038007000E000 -4000090A77A218>19 D<FFF8FFF8FFF80D03808B10>45 D<000FE010003FF83000F80E70 -01E0077003C001F0078001F00F0000F01E0000F03E0000703C0000707C0000707C000030 -7800003078000030F8000000F8000000F8000000F8000000F8000000F8000000F8000000 -F800000078000000780000307C0000307C0000303C0000303E0000601E0000600F0000C0 -078000C003C0018001E0030000FC0E00003FFC00000FE0001C247DA223>67 -D<FFFFF800FFFFFF0007C00F8007C003C007C001E007C000F007C0007807C0007C07C000 -3C07C0003E07C0001E07C0001E07C0001E07C0001F07C0001F07C0001F07C0001F07C000 -1F07C0001F07C0001F07C0001F07C0001F07C0001E07C0001E07C0003E07C0003C07C000 -3C07C0007807C000F007C001F007C003E007C00F80FFFFFF00FFFFF80020227FA125>I< -FFFFFFE0FFFFFFE007C007E007C001E007C000E007C0006007C0007007C0007007C00030 -07C0003007C0183007C0183007C0180007C0180007C0380007C0780007FFF80007FFF800 -07C0780007C0380007C0180007C0180007C0180007C0180007C0000007C0000007C00000 -07C0000007C0000007C0000007C0000007C00000FFFF0000FFFF00001C227FA120>70 -D<FFFE1FFFC0FFFE1FFFC007C000F80007C000F80007C000F80007C000F80007C000F800 -07C000F80007C000F80007C000F80007C000F80007C000F80007C000F80007C000F80007 -C000F80007FFFFF80007FFFFF80007C000F80007C000F80007C000F80007C000F80007C0 -00F80007C000F80007C000F80007C000F80007C000F80007C000F80007C000F80007C000 -F80007C000F80007C000F80007C000F800FFFE1FFFC0FFFE1FFFC022227FA125>72 -D<FFFEFFFE07C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007 -C007C007C007C007C007C007C007C007C007C007C007C007C007C007C0FFFEFFFE0F227F -A112>I<FFFE0000FFFE00000F8000000F8000000F8000000F8000000F8000000F800000 -0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800000 -0F8000000F8000000F8000000F8000000F8001800F8001800F8001800F8001800F800380 -0F8003800F8003000F8007000F8007000F800F000F803F00FFFFFF00FFFFFF0019227EA1 -1E>76 D<FFFFF800FFFFFE0007C01F8007C007C007C003C007C001E007C001E007C001F0 -07C001F007C001F007C001F007C001F007C001E007C001E007C003C007C0078007C01F00 -07FFFC0007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C00000 -07C0000007C0000007C0000007C0000007C0000007C00000FFFE0000FFFE00001C227FA1 -21>80 D<FFFFF00000FFFFFE000007C01F000007C007800007C003C00007C003E00007C0 -01F00007C001F00007C001F00007C001F00007C001F00007C001E00007C003E00007C003 -C00007C007800007C01E000007FFF0000007C03C000007C01E000007C00F000007C00F80 -0007C007C00007C007C00007C007C00007C007C00007C007C00007C007C00007C007C000 -07C007C00007C007C0C007C007C0C007C003C0C0FFFE01E180FFFE00F1000000003E0022 -237FA124>82 D<FFFE03FFC0FFFE03FFC007C0003C0007C000180007C000180007C00018 -0007C000180007C000180007C000180007C000180007C000180007C000180007C0001800 -07C000180007C000180007C000180007C000180007C000180007C000180007C000180007 -C000180007C000180007C000180007C000180007C000180007C000180003C000300003E0 -00300001E000300001E000600000F000C0000078018000003E070000000FFE00000003F8 -000022237FA125>85 D<FFF83FFE07FEFFF83FFE07FE1F8003F001F80F8003E000600F80 -03F000600FC003F000E007C003F000C007C003F000C007E006F800C003E006F8018003E0 -06F8018003E00C7C018001F00C7C030001F00C7C030001F01C7E030001F8183E070000F8 -183E060000F8183E060000FC301F0600007C301F0C00007C301F0C00007C600F8C00003E -600F9800003E600F9800003EE00FD800003FC007F800001FC007F000001FC007F000001F -8003F000000F8003E000000F8003E000000F0001E00000070001C00000070001C0000007 -0001C0002F237FA132>87 D<1FF000383C007C0E007C0F007C0780380780000780000780 -00FF8007C7801E07803C0780780780700780F00798F00798F00798F00F987817983C23F0 -0FC1E015157E9418>97 D<0F0000FF0000FF00001F00000F00000F00000F00000F00000F -00000F00000F00000F00000F00000F00000F3F000F61C00F80600F00300F00380F003C0F -001C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001C0F003C0F00380F00700F -80600E61C00C3F0017237FA21B>I<01FE000707000C0F801C0F80380F80780700700000 -F00000F00000F00000F00000F00000F00000F000007000007800C03800C01C01800C0300 -07060001F80012157E9416>I<0001E0001FE0001FE00003E00001E00001E00001E00001 -E00001E00001E00001E00001E00001E00001E001F9E00707E00C03E01C01E03801E07801 -E07001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07001E07801E03801E01801 -E00C03F0070DFE01F1FE17237EA21B>I<01FC000707000C03801C01C03801C07801E070 -00E0F000E0FFFFE0F00000F00000F00000F00000F000007000007800603800601C00C00E -018007070000FC0013157F9416>I<003E0000E18003C3C00387C00787C00F03800F0000 -0F00000F00000F00000F00000F00000F00000F0000FFF800FFF8000F00000F00000F0000 -0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000 -0F00000F0000FFF000FFF000122380A20F>I<0000F003F1180E1E381C0E383807303807 -007807807807807807807807803807003807001C0E001E1C0033F0002000002000003000 -003800003FFE001FFFC00FFFE03801F0700070E00038E00038E00038E000386000307000 -703800E00E038003FE0015217F9518>I<0F0000FF0000FF00001F00000F00000F00000F -00000F00000F00000F00000F00000F00000F00000F00000F0F800F31C00F40E00F80F00F -80F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F -00F00F00F00F00F0FFF3FFFFF3FF18237FA21B>I<0E001F001F001F000E000000000000 -00000000000000000000000F007F007F001F000F000F000F000F000F000F000F000F000F -000F000F000F000F000F000F00FFE0FFE00B2280A10D>I<0F00FF00FF001F000F000F00 -0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00 -0F000F000F000F000F000F000F000F000F00FFF0FFF00C2380A20D>108 -D<0F0FC07E00FF30E18700FF407203801F807C03C00F807C03C00F007803C00F007803C0 -0F007803C00F007803C00F007803C00F007803C00F007803C00F007803C00F007803C00F -007803C00F007803C00F007803C00F007803C00F007803C0FFF3FF9FFCFFF3FF9FFC2615 -7F9429>I<0F0F80FF31C0FF40E01F80F00F80F00F00F00F00F00F00F00F00F00F00F00F -00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F0FFF3FFFFF3FF18157F94 -1B>I<01FC000707000C01801800C03800E0700070700070F00078F00078F00078F00078 -F00078F00078F000787000707800F03800E01C01C00E038007070001FC0015157F9418> -I<0F3F00FF61C0FF80600F00700F00380F003C0F003C0F001E0F001E0F001E0F001E0F00 -1E0F001E0F001E0F003C0F003C0F00380F00700F80E00F61C00F3F000F00000F00000F00 -000F00000F00000F00000F00000F0000FFF000FFF000171F7F941B>I<01F860070CE00E -02E01C03E03801E07801E07801E0F001E0F001E0F001E0F001E0F001E0F001E0F001E078 -01E07801E03801E01C03E00C03E0070DE001F1E00001E00001E00001E00001E00001E000 -01E00001E00001E0001FFE001FFE171F7E941A>I<0F1E00FF2300FF47801F87800F8300 -0F80000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000 -0F00000F0000FFF800FFF8001115809413>I<0FC8307860386018E018E018F000FC007F -C03FE01FF007F8007CC03CC01CC01CE01CE018F038D8708FC00E157E9413>I<06000600 -06000600060006000E000E000E001E003FFCFFFC1E001E001E001E001E001E001E001E00 -1E001E001E0C1E0C1E0C1E0C1E0C1E0C0F18071001E00E1F7F9E13>I<0F00F0FF0FF0FF -0FF01F01F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F -00F00F00F00F01F00F01F00702F80386FF00F8FF18157F941B>I<FFC1FEFFC1FE1F00F8 -0F00600F00600780C00780C00780C003C18003C18003E38001E30001E30000F60000F600 -00F600007C00007C00007C00003800003800003000003000007000006000F86000F8C000 -F8C000F980006300003E0000171F7F941A>121 D<3FFFC03C0780380F80300F00701E00 -603E00603C0060780000F80000F00001E00003C00007C0C00780C00F00C01F01C01E0180 -3C01807C0380780780FFFF8012157F9416>I<FFFFFFFFFFFF3001808C31>124 -D E /Fv 21 118 df<78FCFCFCFC7806067A8512>46 D<007F800001FFE0000781F8000E -007C0018003E0030001F0030000F8060000FC0600007C0F80007C0FC0007E0FE0007E0FE -0003E0FE0003E0FE0003E07C0007E0000007E0000007C0000007C000000FC000000F8000 -000F8000001F0000003E0000003C00000078000000F8000000F0000001E0000003C00000 -070000000E0000001C000000180000003000000060000000C00060018000600380006007 -0000C00E0000C00C0000C0180001C03FFFFFC07FFFFF80FFFFFF80FFFFFF801B2F7DAE21 ->50 D<00001C0000001C0000003C0000003C0000007C000000FC000000FC000001BC0000 -03BC0000033C0000073C0000063C00000C3C00001C3C0000183C0000303C0000303C0000 -603C0000E03C0000C03C0001803C0003803C0003003C0007003C0006003C000C003C001C -003C0018003C0030003C0030003C0060003C00E0003C00FFFFFFF8FFFFFFF800003C0000 -003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000 -007E00000FFFF0000FFFF01D2F7EAE21>52 D<FFFFC00000FFFFC0000007F000000003E0 -00000003E000000003E000000003E000000003E000000003E000000003E000000003E000 -000003E000000003E000000003E000000003E000000003E000000003E000000003E00000 -0003E000000003E000000003E000000003E000000003E000000003E000000003E0000000 -03E000000003E000000003E000000003E000000003E000000003E000000003E000006003 -E000006003E000006003E000006003E00000C003E00000C003E00000C003E00000C003E0 -0001C003E00001C003E00003C003E00003C003E00007C003E0000F8003E0003F8007E000 -FF80FFFFFFFF80FFFFFFFF8023317DB029>76 D<FFF00000007FF8FFF8000000FFF807F8 -000000FF0003F8000000FE00037C000001BE00037C000001BE00037C000001BE00033E00 -00033E00033E0000033E00033E0000033E00031F0000063E00031F0000063E00031F0000 -063E00030F80000C3E00030F80000C3E00030F80000C3E000307C000183E000307C00018 -3E000307C000183E000303E000303E000303E000303E000303E000303E000301F000603E -000301F000603E000301F000C03E000300F800C03E000300F800C03E0003007C01803E00 -03007C01803E0003007C01803E0003003E03003E0003003E03003E0003003E03003E0003 -001F06003E0003001F06003E0003001F06003E0003000F8C003E0003000F8C003E000300 -0F8C003E00030007D8003E00030007D8003E00030007D8003E00030003F0003E00030003 -F0003E00030003F0003E00078001E0003E000FC001E0007F00FFFC01E00FFFF8FFFC00C0 -0FFFF835317CB03D>I<FFFFFFE000FFFFFFFC0007E0007F0003E0000F8003E00007C003 -E00003E003E00001F003E00001F803E00000F803E00000F803E00000FC03E00000FC03E0 -0000FC03E00000FC03E00000FC03E00000FC03E00000F803E00000F803E00001F803E000 -01F003E00003E003E00007C003E0000F8003E0007F0003FFFFFC0003FFFFE00003E00000 -0003E000000003E000000003E000000003E000000003E000000003E000000003E0000000 -03E000000003E000000003E000000003E000000003E000000003E000000003E000000003 -E000000003E000000003E000000003E000000003E000000007F0000000FFFF800000FFFF -80000026317DB02D>80 D<FFFFFF000000FFFFFFF0000007E001FC000003E0003F000003 -E0000F800003E00007C00003E00003E00003E00003F00003E00003F00003E00001F00003 -E00001F80003E00001F80003E00001F80003E00001F80003E00001F80003E00001F00003 -E00003F00003E00003F00003E00003E00003E00007C00003E0000F800003E0003F000003 -E001FC000003FFFFF0000003FFFFC0000003E001F0000003E0007C000003E0003E000003 -E0001F000003E0000F000003E0000F800003E00007800003E00007C00003E00007C00003 -E00007C00003E00007C00003E00007C00003E00007E00003E00007E00003E00007E00003 -E00007E00003E00007E00003E00007E01803E00007F01803E00003F01803E00003F01807 -F00001F830FFFF8000F870FFFF80007FE0000000000F802D327CB031>82 -D<03FE00000FFFC0001E03E0003F00F0003F0078003F003C001E001C000C001E0000001E -0000001E0000001E0000001E000001FE00003FFE0001FF1E0007F01E000F801E001F001E -003E001E007C001E007C001E00F8001E0CF8001E0CF8001E0CF8003E0CF8003E0C7C007E -0C3E00DF1C1F038FB80FFF07F003F803C01E1F7D9E21>97 D<001FF00000FFFC0001F01E -0007C03F000F003F000F003F001E001E003C000C003C0000007C00000078000000F80000 -00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000007C0000 -007C0000003C0000003E0001801E0001800F0003000F80070007C00E0001F81C0000FFF0 -00001FC000191F7E9E1D>99 D<003F800000FFE00003E0F80007803C000F001E001E001E -001E000F003C000F007C000F007C000F8078000780F8000780FFFFFF80FFFFFF80F80000 -00F8000000F8000000F8000000F8000000F8000000780000007C0000003C0000003C0001 -801E0001800F0003000F80060007C00E0001F0380000FFF000001FC000191F7E9E1D> -101 D<0003F0000FF8003C3C00787E00F07E01E07E01E03C01C01803C00003C00003C000 -03C00003C00003C00003C00003C00003C00003C00003C000FFFFC0FFFFC003C00003C000 -03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000 -03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000 -07E0007FFF007FFF0017327FB114>I<000000F0007F03F801FFCF1C03C1FC3C0780F83C -0F0078181F007C001E003C003E003E003E003E003E003E003E003E003E003E003E003E00 -3E003E001E003C001F007C000F0078000780F0000FC1E0000DFFC0001C7F000018000000 -180000001C0000001C0000001E0000000FFFF8000FFFFF0007FFFF800FFFFFC01E0007E0 -380001F07000007070000078E0000038E0000038E0000038E0000038E000003870000070 -780000F03C0001E01E0003C007C01F0001FFFC00003FE0001E2F7E9F21>I<0780000000 -FF80000000FF800000000F80000000078000000007800000000780000000078000000007 -800000000780000000078000000007800000000780000000078000000007800000000780 -0000000780000000078000000007800000000781FE00000787FF8000078E07C000079803 -E00007B001E00007E000F00007C000F00007C000F00007C000F000078000F000078000F0 -00078000F000078000F000078000F000078000F000078000F000078000F000078000F000 -078000F000078000F000078000F000078000F000078000F000078000F000078000F00007 -8000F000078000F000078000F0000FC001F800FFFC1FFF80FFFC1FFF8021327EB125>I< -0F001F801F801F801F800F00000000000000000000000000000000000000000000000780 -7F807F800F80078007800780078007800780078007800780078007800780078007800780 -0780078007800780078007800780078007800FC0FFF8FFF80D307EAF12>I<0780FF80FF -800F80078007800780078007800780078007800780078007800780078007800780078007 -800780078007800780078007800780078007800780078007800780078007800780078007 -80078007800780078007800780078007800FC0FFFCFFFC0E327EB112>108 -D<0781FE003FC000FF87FF80FFF000FF8E07C1C0F8000F9803E3007C0007B001E6003C00 -07E000FC001E0007C000F8001E0007C000F8001E0007C000F8001E00078000F0001E0007 -8000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E000780 -00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000 -F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0 -001E00078000F0001E00078000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83 -FFF0341F7E9E38>I<0781FE0000FF87FF8000FF8E07C0000F9803E00007B001E00007E0 -00F00007C000F00007C000F00007C000F000078000F000078000F000078000F000078000 -F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0 -00078000F000078000F000078000F000078000F000078000F000078000F000078000F000 -078000F0000FC001F800FFFC1FFF80FFFC1FFF80211F7E9E25>I<001FC00000FFF80001 -E03C0007800F000F0007801E0003C01E0003C03C0001E03C0001E0780000F0780000F078 -0000F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F878 -0000F07C0001F03C0001E03C0001E01E0003C01E0003C00F00078007C01F0001F07C0000 -FFF800001FC0001D1F7E9E21>I<0783E0FF8FF8FF9C7C0FB87C07F07C07E03807E00007 -C00007C00007C00007800007800007800007800007800007800007800007800007800007 -80000780000780000780000780000780000780000780000780000FC000FFFE00FFFE0016 -1F7E9E19>114 D<00C00000C00000C00000C00000C00001C00001C00001C00003C00003 -C00007C0000FC0001FC000FFFFE0FFFFE003C00003C00003C00003C00003C00003C00003 -C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C03003C03003 -C03003C03003C03003C03003C03003C03001E06001E06000F0C0007F80001F00142C7FAB -19>116 D<078000F000FF801FF000FF801FF0000F8001F000078000F000078000F00007 -8000F000078000F000078000F000078000F000078000F000078000F000078000F0000780 -00F000078000F000078000F000078000F000078000F000078000F000078000F000078000 -F000078000F000078000F000078001F000078001F000078003F000038007F00003C00EF0 -0001F03CF80000FFF0FF80003FC0FF80211F7E9E25>I E end +00FE0000FE0000FE0000FE0000FE0001FE0000FE0001FE0000FE0003FE0000FE0007FE00 +00FF000FFE00007FC07FFFF8007FFFFFFFFC003FFFFFFFFE001FFFFFFFFE000FFFFEFFFC +0007FFF87FF80000FFC000002F2880A630>I<3FFFC07FFF807FFFE0FFFFC0FFFFE0FFFF +E0FFFFE0FFFFE07FFFE0FFFFC03FFFC07FFF8001F80003F00001F80003F00001FC0007F0 +0000FC0007E00000FC0007E00000FE000FE000007E000FC000007E000FC000007F001FC0 +00003F001F8000003F001F8000003F803F8000001F803F0000001F803F0000001FC07F00 +00000FC07E0000000FC07E0000000FE0FE00000007E0FC00000007E0FC00000007F1FC00 +000003F1F800000003F1F800000003F1F800000001FBF000000001FBF000000001FBF000 +000001FFF000000000FFE000000000FFE000000000FFE0000000007FC0000000003F8000 +002B277EA630>I<3FFFC01FFFE07FFFE03FFFF0FFFFE03FFFF8FFFFE03FFFF87FFFE03F +FFF03FFFC01FFFE007E000003F0007E000003F0007F000007F0003F000007E0003F00000 +7E0003F000007E0003F000007E0003F000007E0003F80000FE0001F80000FC0001F80F80 +FC0001F81FC0FC0001F83FE0FC0001F83FE0FC0001F83FE0FC0000FC7FF1F80000FC7FF1 +F80000FC7DF1F80000FC7DF1F80000FCFDF9F800007CFDF9F000007CF8F9F000007CF8F9 +F000007CF8F9F000007EF8FBF000007EF8FBF000003FF07FE000003FF07FE000003FF07F +E000003FE03FE000003FE03FE000001FE03FC000000F800F80002D277FA630>I<3FFF81 +FFFC007FFFC3FFFE00FFFFC3FFFF00FFFFC3FFFF007FFFC3FFFE003FFF81FFFC0000FE00 +7F0000007F007F0000007F80FE0000003F81FC0000001FC3F80000000FE3F80000000FE7 +F000000007FFE000000003FFC000000001FFC000000000FF8000000000FF00000000007E +00000000007F0000000000FF0000000001FF8000000001FFC000000003F7E000000007E7 +E00000000FE3F00000000FC1F80000001F81FC0000003F80FE0000007F007E0000007E00 +7F000000FE003F800001FC001FC0007FFF80FFFF00FFFFC1FFFF80FFFFE3FFFF80FFFFE3 +FFFF80FFFFC1FFFF807FFF80FFFF0029277DA630>I<3FFFC07FFF807FFFE0FFFFC0FFFF +E0FFFFE0FFFFE0FFFFE07FFFE0FFFFC03FFFC07FFF8001FC0003F00001FC0003F00000FC +0007F00000FE0007E000007E0007E000007E000FE000007F000FC000003F000FC000003F +001FC000001F801F8000001F801F8000001FC01F8000000FC03F0000000FC03F0000000F +E03F00000007E07E00000007E07E00000003F07E00000003F07C00000003F0FC00000001 +F8FC00000001F8F800000001F8F800000000F9F800000000FDF0000000007DF000000000 +7FF0000000007FF0000000003FE0000000003FE0000000003FE0000000001FC000000000 +1FC0000000001FC0000000001F80000000001F80000000003F80000000003F0000000000 +3F00000000007F00000000007E00000000007E0000000F00FE0000001F80FC0000003FC1 +FC0000003FC3F80000003F87F80000003F8FF00000003FFFE00000001FFFC00000001FFF +800000000FFF0000000007FE0000000001F0000000002B3C7EA630>I<1FFFFFFFFC3FFF +FFFFFE7FFFFFFFFE7FFFFFFFFE7FFFFFFFFE7FFFFFFFFC7F00000FF87F00001FF07F0000 +3FE07F00007FC07F0000FF803E0001FF00000003FE00000007FC0000000FF80000001FF0 +0000003FE00000007FC0000000FF80000001FF00000003FE00000007FC0000000FF80000 +001FF00000003FE00000007FC0000000FF80003E01FF00007F03FE00007F07FC00007F0F +F800007F1FF000007F3FE000007F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF7FFFFFFFFE28277DA630>I<0000003FF0000003FFF800000FFFF800001FFFF800 +007FFFF800007FFFF00000FFF0000000FF00000001FE00000001FC00000001FC00000001 +FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC +00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00 +000001FC00000001FC00000001FC00000003FC00000007F80000003FF800003FFFF00000 +FFFFE00000FFFFC00000FFFF000000FFFFC00000FFFFE000003FFFF00000003FF8000000 +07F800000003FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001 +FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC +00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00 +000001FE00000000FF00000000FFF00000007FFFF000007FFFF800001FFFF800000FFFF8 +000003FFF80000003FF025477BBE30>I<7C7CFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFE7C7C07476CBE30>I<7FE0000000FFFE000000FFFF80 +0000FFFFC00000FFFFF000007FFFF00000007FF800000007F800000003FC00000001FC00 +000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC0000 +0001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC000000 +01FC00000001FC00000001FC00000001FC00000001FC00000001FE00000000FF00000000 +FFE00000007FFFE000003FFFF800001FFFF8000007FFF800001FFFF800003FFFF800007F +FFE00000FFE0000000FF00000001FE00000001FC00000001FC00000001FC00000001FC00 +000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC0000 +0001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC000000 +01FC00000001FC00000003FC00000007F80000007FF800007FFFF00000FFFFF00000FFFF +C00000FFFF800000FFFE0000007FE000000025477BBE30>I<007C003801FF007C03FF80 +FE07FFC1FE0FFFC3FE1FFFEFFC7FEFFFF0FF87FFE0FF07FFC0FE03FF807C01FF0038007C +001F0C78B730>I E /Fo 39 122 df<0000000007FF80000000003FFFE000000000FE00 +F800000001F0003E00000007E0000E0000000FC0001F0000000F80007F0000001F8000FF +0000003F0000FF0000003F0000FF0000003F0000FE0000007E0000FE0000007E00007800 +00007E000000000000FE000000000000FC000000000000FC000000000000FC0000000000 +01FC000000000001FC000000000001F8000000000001F8000000000001F8000000000001 +F8000000000003F80000000003FFFFFFFFF00003FFFFFFFFF00003FFFFFFFFE0000003F0 +0007E0000007F0000FE0000007E0000FC0000007E0000FC0000007E0000FC0000007E000 +1FC000000FE0001F8000000FC0001F8000000FC0001F8000000FC0003F8000000FC0003F +0000001FC0003F0000001F80003F0000001F80007F0000001F80007E0000001F80007E00 +00003F80007E0000003F0000FE0000003F0000FC0000003F0000FC0000003F0000FC0000 +007F0001FC0000007E0001F81C00007E0001F81C00007E0001F81C00007E0003F81C0000 +FE0003F03C0000FC0003F0380000FC0003F0380000FC0003F0780000FC0003F0700001FC +0003F0700001F80001F0F00001F80001F0E00001F80000F1C00001F800007F800003F000 +001F000003F0000000000003F0000000000003F0000000000003E0000000000007E00000 +00000007E0000000001E07C0000000007F07C0000000007F0FC000000000FF0F80000000 +00FF0F8000000000FF1F0000000000FE1F0000000000F81E0000000000703C0000000000 +787800000000001FF0000000000007C00000000000385383BF33>12 +D<0000000007FC00007FF800000000003FFF8003FFFF0000000000FC03C00FE007C00000 +0003F001E03F0001F000000007E001F07C0000700000000FC007F0F80000F80000000F80 +0FF1F80003F80000001F800FF3F00007F80000001F800FF3F00007F80000003F000FF7E0 +0007F80000003F000FE7E00007F00000003F00038FC00007F00000007E00000FC00003C0 +0000007E00000FC00000000000007E00000FC00000000000007E00001FC0000000000000 +FE00001F80000000000000FC00001F80000000000000FC00001F80000000000000FC0000 +3F80000000000000FC00003F80000000000001FC00003F00000000000001F800003F0000 +0000000001F800003F00000000000001F800003F000000000001FFFFFFFFFFFFFFFF8000 +03FFFFFFFFFFFFFFFF800003FFFFFFFFFFFFFFFF00000003F000007E00003F00000003F0 +00007E00007F00000003F00000FE00007E00000007F00000FC00007E00000007E00000FC +00007E00000007E00000FC0000FE00000007E00000FC0000FC00000007E00001FC0000FC +0000000FE00001F80000FC0000000FC00001F80001FC0000000FC00001F80001F8000000 +0FC00001F80001F80000000FC00003F80001F80000001FC00003F00003F80000001F8000 +03F00003F00000001F800003F00003F00000001F800003F00003F00000001F800007F000 +07F00000003F800007E00007E00000003F800007E00007E00000003F000007E00007E000 +00003F000007E0000FE00000003F00000FE0000FC0E000003F00000FC0000FC0E000007F +00000FC0000FC0E000007E00000FC0001FC0E000007E00000FC0001F81E000007E00000F +C0001F81C000007E00001FC0001F81C00000FE00001F80001F83C00000FC00001F80001F +83800000FC00001F80001F83800000FC00003F80000F87800000FC00003F00000F870000 +01F800003F0000078E000001F800003F000003FC000001F800003F000000F8000001F800 +007E00000000000003F000007E00000000000003F000007E00000000000003F000007C00 +000000000003F00000FC00000000000003E00000FC00000000001E07E07800F800000000 +007F07E1FC01F800000000007F07C1FC01F80000000000FF0FC3FC01F00000000000FF0F +83FC03E00000000000FF0F83FC07E00000000000FE1F03F807C00000000000F81E03E00F +800000000000703C01C01E000000000000787800F07C0000000000001FF0007FF0000000 +00000007C0001FC0000000000000555383BF50>14 D<00003C0000FE0001FF0003FF0003 +FF0003FF0003FF0003FE0007FE0007FE0007FC0007FC0007FC0007F8000FF8000FF8000F +F0000FF0000FF0000FE0001FE0001FE0001FC0001FC0001FC0001F80003F80003F80003F +00003F00003F00003E00007E00007E00007C00007C00007C0000780000F80000F80000F0 +0000F00000F00000E00001E00001E00000C0000000000000000000000000000000000000 +000000000000000F00003FC0007FC0007FC000FFC000FFC000FFC000FF80007F00003C00 +00184177C01C>33 D<01E000F007F803FC0FF807FC0FFC07FE1FFC0FFE1FFC0FFE1FFC0F +FE1FFC0FFE0FFC07FE03D801EC0018000C0018000C0038001C0030001800700038006000 +3000E0007000C0006001C000E0038001C003000180070003800E0007001C000E0038001C +0070003800E0007000C00060001F1C70BE2F>I<0F003FC07FC07FC0FFC0FFC0FFC0FF80 +7F003C000A0A77891C>46 D<00000003000000070000000F0000001F0000001E0000003E +0000007E000001FE000003FC000007FC00001FFC0001FFFC000FFBF8001FC3F8000E07F8 +000007F8000007F0000007F000000FF000000FF000000FE000000FE000001FE000001FE0 +00001FC000001FC000003FC000003FC000003F8000003F8000007F8000007F8000007F00 +00007F000000FF000000FF000000FE000000FE000001FE000001FE000001FC000001FC00 +0003FC000003FC000003F8000003F8000007F8000007F8000007F0000007F000000FF000 +000FF000000FE000000FE000001FE000001FE000001FC000007FE000FFFFFFF0FFFFFFF0 +FFFFFFE0203D77BC2E>49 D<0000000FE00000007FF8000001F01C000007C00E00001F80 +0F00003E000700007C001F0000F8007F0001F000FF0003F000FF0007E000FF000FC000FE +001FC000FE003F800078003F000000007F00000000FE00000000FE00000001FC00000001 +FC00000003FC00000003F800000007F81FC00007F87FF0000FF1E07C000FF3803E000FF7 +003E001FFE001F001FFC001F801FF8001F801FF0000FC03FF0000FC03FE0000FC03FE000 +1FC03FC0001FE07FC0001FE07FC0001FE07F80001FE07F80003FC07F80003FC0FF00003F +C0FF00003FC0FF00007FC0FF00007F80FE00007F80FE00007F80FE0000FF80FE0000FF00 +FE0000FF00FE0001FE00FE0001FE00FC0001FC007C0003F8007C0003F8007E0007F0007E +000FE0003E001FC0003F003F80001F807E00000FC1FC000007FFF8000003FFE00000007F +000000283F76BC2E>54 D<0000007F00000001FFE0000007C0F000001F007C00003C003C +000078003E0000F0001F0001F0001F0003E0001F0003C0001F0007C0001F0007C0001F00 +0F80001F000F80001F000F80003F001F80003E001F80003E001F80007E001FC0007C001F +C000F8001FE001F8001FF001F0001FF803E0001FFC07C0000FFE0F00000FFFBE000007FF +F8000003FFF0000001FFF0000000FFF8000000FFFC000003FFFE00000F9FFF00001F0FFF +80007C07FFC000F803FFC001F001FFE003E0007FE007C0003FE00F80001FE01F80000FE0 +1F00000FE03E000007E03E000007E07E000007E07C000007E07C000007E0FC000007C0F8 +000007C0F8000007C0F800000F80F800000F80F800001F00F800003E007C00003C007C00 +007C007E0000F8003F0003F0001F8007C0000FE03F800007FFFE000001FFF80000003FC0 +0000283F78BC2E>56 D<001E00003F80007F8000FFC001FFC001FFC001FF8000FF0000FE +00003C000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000F00003FC0007FC0007FC0 +00FFC000FFC000FFC000FF80007F00003C0000122777A61C>58 D<00000000FF8001C000 +00000FFFE001C00000003FFFF80380000000FF807E0780000003FC001F0F8000000FF000 +071F8000001FC00007BF0000007F800003FF000000FF000001FF000001FE000001FF0000 +03F8000000FE000007F0000000FE00000FF0000000FE00001FE00000007E00003FC00000 +007C00007F800000007C0000FF800000007C0000FF000000007C0001FE00000000780003 +FE00000000780003FC00000000780007FC00000000780007F80000000070000FF8000000 +0070000FF80000000070001FF00000000070001FF00000000000003FE00000000000003F +E00000000000003FE00000000000007FE00000000000007FC00000000000007FC0000000 +0000007FC0000000000000FFC0000000000000FF80000000000000FF80000000000000FF +80000000000000FF80000000000000FF00000000000000FF00000000000000FF00000000 +0F0000FF000000000F0000FF000000000E0000FF000000000E0000FF000000001E0000FF +000000001C0000FF000000003C0000FF00000000380000FF000000007800007F00000000 +7000007F80000000F000007F80000001E000003F80000001C000003FC0000003C000001F +C00000078000001FE000000F0000000FE000001E00000007F000003C00000003F80000F8 +00000001FC0001F000000000FE0007C0000000007FC03F80000000001FFFFE0000000000 +07FFF0000000000000FF80000000003A4272BF41>67 D<0001FFFFFFFFFFF00001FFFFFF +FFFFF00001FFFFFFFFFFF0000003FE00003FF0000003FE00000FF0000003FC000003F000 +0003FC000003F0000003FC000001E0000007FC000001E0000007F8000001E0000007F800 +0001E0000007F8000001E000000FF8000001E000000FF0000001E000000FF0000001C000 +000FF0000001C000001FF0000001C000001FE0000001C000001FE0007001C000001FE000 +F003C000003FE000E0038000003FC000E0000000003FC000E0000000003FC001E0000000 +007FC001C0000000007F8003C0000000007F8003C0000000007F8007C000000000FF801F +8000000000FFFFFF8000000000FFFFFF8000000000FFFFFF8000000001FF003F00000000 +01FE001F0000000001FE000F0000000001FE000F0000000003FE000E0000000003FC000E +0000000003FC000E0000000003FC001E0000000007FC001C0000000007F8001C00000000 +07F8001C0000000007F80000000000000FF80000000000000FF00000000000000FF00000 +000000000FF00000000000001FF00000000000001FE00000000000001FE0000000000000 +1FE00000000000003FE00000000000003FC00000000000003FC00000000000007FC00000 +000000007FC00000000000007F80000000000000FFC00000000000FFFFFFE000000000FF +FFFFE000000000FFFFFFE0000000003C3E7BBD3B>70 D<0001FFFE00000FFFFF0003FFFF +00001FFFFF0003FFFF00001FFFFF000001FF800000FFC0000003FF8000003F00000003FF +8000003E00000003FFC000001C00000003FFC000003C00000007BFC000003C000000073F +E0000038000000071FE0000038000000071FE00000780000000F1FF00000780000000E0F +F00000700000000E0FF80000700000000E0FF80000F00000001E07F80000F00000001C07 +FC0000E00000001C07FC0000E00000001C03FC0001E00000003C03FE0001E00000003801 +FE0001C00000003801FE0001C00000003801FF0003C00000007800FF0003C00000007000 +FF8003800000007000FF80038000000070007F800780000000F0007FC00780000000E000 +3FC00700000000E0003FC00700000000E0003FE00F00000001E0001FE00F00000001C000 +1FF00E00000001C0001FF00E00000001C0000FF01E00000003C0000FF81E000000038000 +0FF81C00000003800007F81C00000003800007FC3C00000007800003FC3C000000070000 +03FC3800000007000003FE3800000007000001FE780000000F000001FF780000000E0000 +01FF700000000E000000FF700000000E000000FFF00000001E000000FFF00000001C0000 +007FE00000001C0000007FE00000001C0000003FE00000003C0000003FE0000000380000 +003FC0000000380000001FC0000000780000001FC0000000F80000001FC0000001FC0000 +000F80000007FE0000000F800000FFFFF0000007800000FFFFF0000007800000FFFFF000 +0007000000483E7BBD44>78 D<0001FFFFFFFF80000001FFFFFFFFF0000001FFFFFFFFFC +00000003FE0003FE00000003FE0000FF00000003FC00007F80000003FC00003FC0000007 +FC00001FC0000007FC00001FE0000007F800001FE0000007F800001FE000000FF800001F +F000000FF800001FF000000FF000001FF000000FF000001FF000001FF000001FF000001F +F000003FE000001FE000003FE000001FE000003FE000003FE000003FC000003FE000007F +C000003FC000007F8000003FC000007F8000007FC00000FF0000007FC00000FE0000007F +800001FC0000007F800003F8000000FF800007F0000000FF80000FE0000000FF00003FC0 +000000FF0001FF00000001FFFFFFFC00000001FFFFFFE000000001FE00000000000001FE +00000000000003FE00000000000003FE00000000000003FC00000000000003FC00000000 +000007FC00000000000007FC00000000000007F800000000000007F80000000000000FF8 +0000000000000FF80000000000000FF00000000000000FF00000000000001FF000000000 +00001FF00000000000001FE00000000000001FE00000000000003FE00000000000003FE0 +0000000000003FC00000000000003FC00000000000007FC00000000000007FC000000000 +00007F80000000000000FFC00000000000FFFFFF8000000000FFFFFF8000000000FFFFFF +80000000003C3E7BBD3E>80 D<0000000FF001C00000007FFE01C0000001FFFF03800000 +07F80FC78000000FC003EF8000001F8001FF8000003F0000FF0000007E00007F000000FC +00007F000001F800007F000003F000003E000003F000003E000007E000003E000007E000 +003E00000FE000003C00000FC000003C00000FC000003C00000FC000003C00001FC00000 +3800001FC000003800001FC000003800001FE000003800001FE000000000001FF0000000 +00001FF000000000001FFC00000000000FFF00000000000FFFF0000000000FFFFE000000 +0007FFFFC000000003FFFFF000000001FFFFFC00000000FFFFFE000000003FFFFE000000 +000FFFFF0000000001FFFF80000000001FFF800000000003FF800000000000FFC0000000 +00007FC000000000003FC000000000003FC000000000001FC000000000001FC000070000 +001FC0000F0000001FC0000F0000001F80000E0000001F80000E0000001F80001E000000 +3F80001E0000003F00001E0000003F00001E0000003E00003E0000007E00003E0000007C +00003F000000FC00003F000001F800007F800001F000007F800003E000007FC00007C000 +007DE0001F800000F8F8003F000000F87F00FE000000F03FFFF8000000E00FFFE0000000 +C000FF0000000032427ABF33>83 D<000C0006001C000E0078003C00E0007001C000E001 +8000C0038001C0070003800E0007000C0006001C000E0018000C0038001C003000180070 +0038006000300060003000E0007000CF006780FFC07FE0FFC07FE0FFC07FE0FFC07FE0FF +C07FE0FFC07FE0FF807FC07F003F803C001E001F1C69BE2F>92 D<00007E00000001FF80 +000007C1C380001F80EFC0003F00FFC0007E007FC000FC007F8001F8003F8003F0003F80 +03F0003F8007E0003F000FE0003F000FC0003F001FC0007F001FC0007E003F80007E003F +80007E003F8000FE007F8000FC007F0000FC007F0000FC007F0001FC00FF0001F800FE00 +01F800FE0001F800FE0003F800FE0003F038FC0003F038FC0003F038FC0007F038FC0007 +E078FC000FE0707C000FE0707C001FE0F07E003FE0E03E007FE0E03E00F3E1E01F01E3E1 +C00F8781E38003FF00FF0000FC003E00252977A72E>97 D<001FC0000FFFC0000FFF8000 +0FFF8000003F8000003F8000003F0000003F0000007F0000007F0000007E0000007E0000 +00FE000000FE000000FC000000FC000001FC000001FC000001F8000001F8000003F80000 +03F8000003F0000003F07E0007F1FF8007F783E007EF01F007FE01F00FF800F80FF800F8 +0FF000FC0FE0007C1FC0007C1FC0007E1F80007E1F8000FE3F8000FE3F8000FE3F0000FE +3F0000FE7F0001FE7F0001FC7E0001FC7E0001FC7E0003FCFE0003F8FC0003F8FC0003F8 +FC0007F0FC0007F0FC0007E0F8000FE0F8000FC0F8001FC0F8001F8078003F007C003F00 +7C007E003C00FC003E01F8001E03E0000F07C00007FF000001F800001F4076BE2A>I<00 +001FE0000000FFF8000003F03E000007C00F00001F800700003F000780007E001F8000FC +007F8001F8007F8003F0007F8007F0007F0007E0007F000FE0007E001FC00000001FC000 +00003F800000003F800000003F800000007F800000007F000000007F000000007F000000 +00FF00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000 +FC000003007E000007007E00000F007E00001E003E00003C003E000078001F0000F0001F +0003E0000F800F800003E07E000001FFF80000003FC00000212977A72A>I<000000003F +800000001FFF800000001FFF000000001FFF00000000007F00000000007F00000000007E +00000000007E0000000000FE0000000000FE0000000000FC0000000000FC0000000001FC +0000000001FC0000000001F80000000001F80000000003F80000000003F80000000003F0 +0000000003F00000000007F00000000007F00000000007E00000007E07E0000001FF8FE0 +000007C1CFE000001F80EFC000003F00FFC000007E007FC00000FC007FC00001F8003F80 +0003F0003F800003F0003F800007E0003F80000FE0003F00000FC0003F00001FC0007F00 +001FC0007F00003F80007E00003F80007E00003F8000FE00007F8000FE00007F0000FC00 +007F0000FC00007F0001FC0000FF0001FC0000FE0001F80000FE0001F80000FE0003F800 +00FE0003F83800FC0003F03800FC0003F03800FC0007F03800FC0007F07800FC000FE070 +007C000FE070007C001FE0F0007E003FE0E0003E007FE0E0003E00F3E1E0001F01E3E1C0 +000F8781E3800003FF00FF000000FC003E0000294077BE2E>I<00003F800001FFE00007 +E0F8001F803C003E003C00FC001E01F8001E03F0001E07F0001E0FE0003E0FC0003C1FC0 +003C3F80007C3F8000F83F8003F07F000FE07F00FF80FFFFFC00FFFFC000FE000000FE00 +0000FE000000FE000000FC000000FC000000FC000000FC000000FC000000FC000000FC00 +0006FC00000EFC00001E7C00003C7C0000783E0000F03E0001E01F0007C00F801F0007C0 +FC0001FFF000007F80001F2976A72A>I<000000007C0000000001FF0000000007C78000 +00000F83C00000001F87C00000001F1FC00000003F3FC00000003F3FC00000007E3FC000 +00007E3FC00000007E3F800000007E0E00000000FC0000000000FC0000000000FC000000 +0000FC0000000001FC0000000001F80000000001F80000000001F80000000001F8000000 +0003F80000000003F00000000003F00000000003F000000003FFFFF8000003FFFFF80000 +03FFFFF800000007E00000000007E00000000007E0000000000FE0000000000FC0000000 +000FC0000000000FC0000000000FC0000000000FC0000000001FC0000000001F80000000 +001F80000000001F80000000001F80000000003F80000000003F00000000003F00000000 +003F00000000003F00000000007F00000000007E00000000007E00000000007E00000000 +007E0000000000FE0000000000FC0000000000FC0000000000FC0000000000FC00000000 +01FC0000000001F80000000001F80000000001F80000000001F80000000003F000000000 +03F00000000003F00000000003F00000000007E00000000007E00000000007E000000000 +07E0000000000FC00000001E0FC00000007F0FC00000007F0F80000000FF0F80000000FF +1F00000000FF1F00000000FE1E00000000F83C00000000703C000000007878000000003F +E0000000000F80000000002A5383BF1C>I<000003F00000000FFC0000003E0E1C0000FC +077E0001F003FE0003F003FE0007E001FE000FC001FC001F8001FC001F8001FC003F0001 +FC007F0001F8007E0001F800FE0003F800FE0003F801FC0003F001FC0003F001FC0007F0 +03FC0007F003F80007E003F80007E003F8000FE007F8000FE007F0000FC007F0000FC007 +F0001FC007F0001FC007F0001F8007E0001F8007E0003F8003E0003F8003E0007F0003F0 +00FF0003F000FF0001F001FF0000F003FE0000F80F7E00007C1EFE00001FF8FE000007E0 +FC00000000FC00000001FC00000001FC00000001F800000001F800000003F800000003F8 +00000003F0001C0007F0007F0007E000FF000FE000FF000FC000FF001F8000FF003F0000 +FE007E0000F800FC00007C03F000001FFFC0000003FE000000273B7CA72A>I<0001FC00 +0000FFFC000000FFF8000000FFF800000003F800000003F800000003F000000003F00000 +0007F000000007F000000007E000000007E00000000FE00000000FE00000000FC0000000 +0FC00000001FC00000001FC00000001F800000001F800000003F800000003F800000003F +000000003F03F800007F0FFE00007F3E0F80007E780FC0007EE007C000FFC007E000FF80 +07E000FF0007E000FF0007E001FE0007E001FC0007E001FC0007E001F80007E003F8000F +E003F8000FC003F0000FC003F0000FC007F0001FC007F0001F8007E0001F8007E0001F80 +0FE0003F800FE0003F000FC0003F000FC0007F001FC0007E001FC000FE071F8000FC071F +8000FC073F8001FC0F3F8001F80E3F0001F80E3F0001F81E7F0001F01C7F0001F01C7E00 +01F0387E0001F038FE0001F070FE0000F0E0FC00007FC03800001F0028407ABE2E>I<00 +00780001FC0001FC0003FC0003FC0003FC0003F80000E000000000000000000000000000 +0000000000000000000000000000000000000000000000000000007C0001FF00038F8007 +07800E07C01E07C01C07C03C0FC0380FC0380FC0781FC0701F80701F80F03F80F03F0000 +3F00007F00007E0000FE0000FC0000FC0001FC0001F80001F80003F80003F00003F03807 +F03807E0380FE0780FC0700FC0700FC0F00F80E00F80E00F81C00F83C00F838007870003 +FE0000F800163E79BC1C>I<00000007000000001FC00000001FC00000003FC00000003F +C00000003FC00000003F800000000E000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000007C00000003FF000000078F8000000E07C000001C07C000003 +C07C000003807E000007007E000007007E00000E00FE00000E00FC00001E00FC00001C00 +FC00003C01FC00003C01FC00000001F800000001F800000003F800000003F800000003F0 +00000003F000000007F000000007F000000007E000000007E00000000FE00000000FE000 +00000FC00000000FC00000001FC00000001FC00000001F800000001F800000003F800000 +003F800000003F000000003F000000007F000000007F000000007E000000007E00000000 +FE00000000FE00000000FC00000000FC00000001FC00000001F800000001F800001C01F8 +00007F03F00000FF03F00000FF07E00000FF07C00000FF0F800000FE1F000000F83E0000 +00707C0000003FF00000000FC0000000225083BC1C>I<0001FC000000FFFC000000FFF8 +000000FFF800000003F800000003F800000003F000000003F000000007F000000007F000 +000007E000000007E00000000FE00000000FE00000000FC00000000FC00000001FC00000 +001FC00000001F800000001F800000003F800000003F800000003F000000003F0003E000 +7F000FF8007F003C3C007E00707C007E00E1FC00FE01C1FC00FE0383FC00FC0703FC00FC +0E03FC01FC1C03F801FC3800E001F870000001F860000003F8E0000003F9C0000003F780 +000003FE00000007FE00000007FFE0000007E7F8000007E0FE00000FE07F00000FE03F80 +000FC01F80000FC00FC0001FC00FC0001FC00FC0701F800FC0701F800FC0703F800FC0F0 +3F801FC0E03F001F80E03F001F80E07F001F81E07F001F81C07E000F83C07E000F8380FE +000F8780FE00078F00FC0003FE00380000F80026407ABE2A>I<0007F003FFF003FFE003 +FFE0000FE0000FE0000FC0000FC0001FC0001FC0001F80001F80003F80003F80003F0000 +3F00007F00007F00007E00007E0000FE0000FE0000FC0000FC0001FC0001FC0001F80001 +F80003F80003F80003F00003F00007F00007F00007E00007E0000FE0000FE0000FC0000F +C0001FC0001FC0001F80001F80003F80003F80003F00003F00007F00007F07007E07007E +0700FE0F00FE0E00FC0E00FC0E00FC1E00FC1C00FC1C007C38007C78003C70001FE00007 +8000144079BE17>I<01F0003F80007F000007FC01FFE003FFC0000F3E07C1F80F83F000 +0E1F0F00FC1E01F8001E1F1C007C3800F8001C1F38007E7000FC003C1FF0007EE000FC00 +381FF0007FE000FC00381FE0007FC000FC00783FC0007F8000FC00703FC0007F8000FC00 +703F80007F0000FC00703F00007E0000FC00F03F0000FE0001FC00F07F0000FC0001F800 +007E0000FC0001F800007E0000FC0001F800007E0001FC0003F80000FE0001FC0003F000 +00FC0001F80003F00000FC0001F80003F00000FC0003F80007F00001FC0003F80007E000 +01F80003F00007E00001F80003F0000FE00001F80007F0000FC00003F80007F0001FC0E0 +03F00007E0001F80E003F00007E0001F80E003F0000FE0003F81E007F0000FE0003F01C0 +07E0000FC0003F01C007E0000FC0003F01C007E0001FC0003E03800FE0001FC0003E0380 +0FC0001F80003E07000FC0001F80003E07000FC0003F80003E0E001FC0003F80001E1C00 +1F80003F00000FF8000700000E000003E000432979A74A>I<01F0003F800007FC01FFE0 +000F3E07C1F8000E1F0F00FC001E1F1C007C001C1F38007E003C1FF0007E00381FF0007E +00381FE0007E00783FC0007E00703FC0007E00703F80007E00703F00007E00F03F0000FE +00F07F0000FC00007E0000FC00007E0000FC00007E0001FC0000FE0001F80000FC0001F8 +0000FC0001F80000FC0003F80001FC0003F00001F80003F00001F80007F00001F80007E0 +0003F8000FE07003F0000FC07003F0000FC07003F0001FC0F007F0001F80E007E0001F80 +E007E0001F81E007E0001F01C00FE0001F01C00FC0001F03800FC0001F03800FC0001F07 +001FC0000F0E001F800007FC0007000001F0002C2979A733>I<00001FC0000000FFF800 +0003F07C00000FC01F00001F801F00003F000F80007E000FC000FC0007C001F80007E003 +F00007E007F00007E007E00007E00FE00007F01FC00007F01FC00007F03F800007F03F80 +0007F03F80000FE07F80000FE07F00000FE07F00000FE07F00001FE0FF00001FC0FE0000 +1FC0FE00001FC0FE00003F80FE00003F80FE00007F00FE00007F00FC00007E007C0000FC +007E0001FC007E0001F8007E0003F0003E0007E0001F000FC0001F001F80000F803E0000 +07C0FC000001FFF00000003F800000242977A72E>I<0003E001F800000FF807FE00001E +7C1E0F80001C3E3C07C0003C3E7807C000383EE003E000783FE003E000703FC003F00070 +3F8001F000F07F0001F000E07F0001F800E07E0001F800E07E0003F801E0FE0003F801E0 +FE0003F80000FC0003F80000FC0003F80001FC0007F80001FC0007F00001F80007F00001 +F80007F00003F8000FF00003F8000FE00003F0000FE00003F0000FE00007F0001FC00007 +F0001FC00007E0001F800007E0003F80000FE0003F00000FE0007F00000FE0007E00000F +E000FC00001FE000FC00001FE001F800001FF003F000001FF007E000003FB80F8000003F +9C1F0000003F0FFC0000003F03E00000007F00000000007F00000000007E00000000007E +0000000000FE0000000000FE0000000000FC0000000000FC0000000001FC0000000001FC +0000000001F80000000001F80000000003F80000000003F8000000007FFFE0000000FFFF +E0000000FFFFE00000002D3A80A72E>I<01F000FC0007FC07FF800F3E0F03C00E1F1C03 +E01E1F380FE01C1F700FE03C1FE01FE0381FE01FE0381FC01FE0783FC01FC0703F800700 +703F800000703F000000F03F000000F07F000000007E000000007E000000007E00000000 +FE00000000FC00000000FC00000000FC00000001FC00000001F800000001F800000001F8 +00000003F800000003F000000003F000000003F000000007F000000007E000000007E000 +000007E00000000FE00000000FC00000000FC00000000FC00000001FC00000001F800000 +000700000000232979A726>114 D<00007F800001FFE00007C0F8001F003C003E001C00 +3C001E007C003E00F8007E00F800FE00F800FE01F800FC01F800FC01F8007001FC000001 +FE000001FFC00001FFFC0000FFFF0000FFFF80007FFFC0003FFFE0000FFFF00000FFF000 +000FF0000007F0000003F00C0003F03F0003F07F8001F07F8003F0FF0003E0FF0003E0FF +0003E0FC0007C0F0000F8070000F8078001F003C003C001F01F80007FFE00000FF00001F +297AA725>I<0001C0000003F0000007F0000007F0000007E0000007E000000FE000000F +E000000FC000000FC000001FC000001FC000001F8000001F8000003F8000003F8000003F +0000003F00007FFFFF80FFFFFF80FFFFFF00007E000000FE000000FE000000FC000000FC +000001FC000001FC000001F8000001F8000003F8000003F8000003F0000003F0000007F0 +000007F0000007E0000007E000000FE000000FE000000FC000000FC000001FC000001FC0 +1C001F801C001F801C003F803C003F8038003F0078003F0070003F00F0003F00E0003F01 +C0001F03C0001F0780000F0F000007FC000001F00000193A78B81E>I<007C0000000001 +FF00001C00038F80007E00070780007E000E07C0007E001E07C000FE001C07C000FE003C +0FC000FC00380FC000FC00380FC001FC00781FC001FC00701F8001F800701F8001F800F0 +3F8003F800F03F0003F800003F0003F000007F0003F000007E0007F000007E0007F00000 +FE0007E00000FC0007E00000FC000FE00001FC000FE00001F8000FC00001F8000FC00001 +F8001FC00003F8001FC1C003F0001F81C003F0001F81C003F0003F81C003F0003F83C003 +F0003F038003F0003F038003F0007F078001F000FF070001F001FF070001F801DF0F0000 +F8079F0E00007C0F0F1C00001FFC07F8000007F001F0002A2979A731>I<007C0001C001 +FF0007F0038F8007F007078007F00E07C007F81E07C007F81C07C003F83C0FC003F8380F +C001F0380FC001F0781FC000F0701F8000F0701F8000F0F03F8000F0F03F0000E0003F00 +00E0007F0000E0007E0001E0007E0001C000FE0001C000FC0001C000FC0003C001FC0003 +8001F800038001F800038001F800070003F800070003F0000F0003F0000E0003F0000E00 +03F0001C0003F0001C0003F000380003F000780001F000700001F800E00000F801C00000 +FC038000007E0F0000001FFE00000003F00000252979A72A>I<007C000000007001FF00 +007001FC038F8001F801FC07078001F801FC0E07C001F801FE1E07C003F801FE1C07C003 +F000FE3C0FC003F000FE380FC003F0007C380FC007F0007C781FC007E0003C701F8007E0 +003C701F8007E0003CF03F800FE0003CF03F000FC00038003F000FC00038007F000FC000 +38007E001FC00078007E001F80007000FE001F80007000FC001F80007000FC003F8000F0 +01FC003F0000E001F8003F0000E001F8003F0000E001F8003F0001E003F8007F0001C003 +F0007E0001C003F0007E0003C003F0007E00038003F0007E00038003F0007E00070003F0 +00FE00070003F000FE000E0001F001FE001E0001F801FF001C0000F8039F00380000FC07 +9F807000003E0F07C1E000001FFC03FFC0000003F0007F0000372979A73C>I<0003F001 +F800000FFC07FE00003C1E0E0F0000780F1C0F8000F00FB83F8001E00FF83F8001C007F0 +7F80038007F07F80078007E07F8007000FE07F000F000FE01C000E000FC000000E000FC0 +00001E001FC000001E001FC0000000001F80000000001F80000000003F80000000003F00 +000000003F00000000003F00000000007F00000000007E00000000007E00000000007E00 +00000000FE0000000000FC001C000000FC001C000000FC001C000001FC003C001E01FC00 +38003F01F80078007F81F80070007F83F800F000FF83F800E000FF077801C000FE0F7C03 +C0007C0E3C078000783C1E1E00001FF80FFC000007E003F0000029297CA72A>I<007C00 +000001FF000038038F8000FC07078000FC0E07C000FC1E07C001FC1C07C001F83C0FC001 +F8380FC001F8380FC003F8781FC003F0701F8003F0701F8003F0F03F8007F0F03F0007E0 +003F0007E0007F0007E0007E000FE0007E000FC000FE000FC000FC000FC000FC001FC001 +FC001FC001F8001F8001F8001F8001F8003F8003F8003F0003F0003F0003F0003F0003F0 +007F0003F0007E0003F0007E0003F0007E0003F000FE0003F000FC0001F001FC0001F803 +FC0000F807FC00007C1FF800003FF9F8000007E1F800000003F800000003F000000003F0 +00000007F0000E0007E0003F8007E0007F800FC0007F800FC0007F801F8000FF001F0000 +FF003E00007C007E00007000FC00007801F000003803E000001E0FC000000FFF00000003 +F8000000263B79A72C>I E /Fp 78 125 df<000001FF000FE00000001FFFE03FFC0000 +007F00F8FC1E000001FC003FF03F000007F0007FE07F80000FE000FFE0FF80001FC001FF +C0FF80003F8001FF80FF80007F8001FF80FF80007F0001FF807F00007F0001FF003E0000 +FE0000FF00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F +00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000 +FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F +000000FFFFFFFFFFFF8000FFFFFFFFFFFF8000FFFFFFFFFFFF800000FE00007F00000000 +FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F +00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000 +FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F +00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000 +FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F +00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000 +FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000001FF0000FF +8000007FFFFC3FFFFF80007FFFFC3FFFFF80007FFFFC3FFFFF800039407FBF35>11 +D<000001FF000000001FFFC00000007F01F0000001FC0078000007F0001C00000FE0003E +00001FC000FF00003F8001FF00007F8001FF00007F0001FF00007F0001FF0000FE0001FF +0000FE0000FE0000FE0000380000FE0000000000FE0000000000FE0000000000FE000000 +0000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE000000 +0000FE00007F00FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF0000FE0001FF0000FE0000FF +0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F +0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F +0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F +0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F +0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F +0001FF0000FF807FFFFC3FFFFE7FFFFC3FFFFE7FFFFC3FFFFE2F407FBF33>I<000001FF +800000001FFFF70000007F00FF000001F800FF000007F001FF00000FE001FF00001FC001 +FF00003F8001FF00007F8001FF00007F0001FF00007F0000FF0000FE00007F0000FE0000 +7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE0000 +7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE0000 +7F00FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF0000FE00007F0000FE00007F0000FE0000 +7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE0000 +7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE0000 +7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE0000 +7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE0000 +7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0001FF0000 +FF807FFFFC3FFFFE7FFFFC3FFFFE7FFFFC3FFFFE2F407FBF33>I<000001FF0000FF8000 +00001FFFC00FFFE00000007F01F03F80F8000001F80078FE003C000007F0003FF8000E00 +000FE0007FF0001F00001FC000FFE0007F80003F8001FFC000FF80007F8001FFC000FF80 +007F0001FF8000FF80007F0001FF8000FF8000FE0001FF0000FF8000FE0000FF00007F00 +00FE00007F00001C0000FE00007F0000000000FE00007F0000000000FE00007F00000000 +00FE00007F0000000000FE00007F0000000000FE00007F0000000000FE00007F00000000 +00FE00007F0000000000FE00007F0000000000FE00007F0000000000FE00007F00003F80 +FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF8000FE00007F0000FF80 +00FE00007F00007F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80 +00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80 +00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80 +00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80 +00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80 +00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80 +00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80 +00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8001FF0000FF80007FC0 +7FFFFC3FFFFE1FFFFF7FFFFC3FFFFE1FFFFF7FFFFC3FFFFE1FFFFF48407FBF4C>I<003E +003F007F00FF00FF01FE03FC07F807F00FE01FC01F803E007C00F8007000200010116EBE +2D>19 D<1E000F007F803FC0FF807FC0FFC07FE0FFC07FE0FFE07FF0FFE07FF0FFE07FF0 +7FE03FF01E600F300060003000600030006000300060003000E0007000C0006000C00060 +00C0006001C000E0018000C0038001C003000180070003800E0007001C000E0018000C00 +38001C00300018001C1C7DBE2D>34 D<1E007F80FF80FFC0FFC0FFE0FFE0FFE07FE01E60 +006000600060006000E000C000C000C001C001800380030007000E001C00180038003000 +0B1C79BE19>39 D<0000300000700000E00001C0000380000780000F00001E00003E0000 +3C0000780000F80000F00001F00001E00003E00003E00007C00007C0000FC0000F80000F +80001F80001F00001F00003F00003F00003F00003E00007E00007E00007E00007E00007E +00007E00007C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC +0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00007E00007E +00007E00007E00007E00003E00003F00003F00003F00001F00001F00001F80000F80000F +80000FC00007C00007C00003E00003E00001E00001F00000F00000F800007800003C0000 +3E00001E00000F000007800003800001C00000E0000070000030145A77C323>I<C00000 +E000007000003800001C00001E00000F000007800007C00003C00001E00001F00000F000 +00F800007800007C00007C00003E00003E00003F00001F00001F00001F80000F80000F80 +000FC0000FC0000FC00007C00007E00007E00007E00007E00007E00007E00003E00003F0 +0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0 +0003F00003F00003F00003F00003F00003E00007E00007E00007E00007E00007E00007E0 +0007C0000FC0000FC0000FC0000F80000F80001F80001F00001F00003F00003E00003E00 +007C00007C0000780000F80000F00001F00001E00003C00007C0000780000F00001E0000 +1C0000380000700000E00000C00000145A7BC323>I<00000006000000000000000F0000 +00000000000F000000000000000F000000000000000F000000000000000F000000000000 +000F000000000000000F000000000000000F000000000000000F000000000000000F0000 +00000000000F000000000000000F000000000000000F000000000000000F000000000000 +000F000000000000000F000000000000000F000000000000000F000000000000000F0000 +00000000000F000000000000000F000000000000000F000000000000000F000000000000 +000F000000000000000F000000000000000F000000000000000F000000007FFFFFFFFFFF +FFE0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF07FFFFFFFFFFFFFE00000000F000000000000 +000F000000000000000F000000000000000F000000000000000F000000000000000F0000 +00000000000F000000000000000F000000000000000F000000000000000F000000000000 +000F000000000000000F000000000000000F000000000000000F000000000000000F0000 +00000000000F000000000000000F000000000000000F000000000000000F000000000000 +000F000000000000000F000000000000000F000000000000000F000000000000000F0000 +00000000000F000000000000000F000000000000000F0000000000000006000000003C3C +7BB447>43 D<1E007F80FF80FFC0FFC0FFE0FFE0FFE07FE01E60006000600060006000E0 +00C000C000C001C001800380030007000E001C001800380030000B1C798919>I<FFFFFE +FFFFFEFFFFFEFFFFFEFFFFFEFFFFFE17067F961E>I<1E007F807F80FFC0FFC0FFC0FFC0 +7F807F801E000A0A798919>I<000000018000000003C000000007C000000007C0000000 +07800000000F800000000F800000000F000000001F000000001F000000001E000000003E +000000003E000000003C000000007C000000007C000000007800000000F800000000F800 +000000F000000001F000000001F000000001E000000003E000000003E000000003C00000 +0007C000000007C000000007800000000F800000000F800000001F000000001F00000000 +1E000000003E000000003E000000003C000000007C000000007C000000007800000000F8 +00000000F800000000F000000001F000000001F000000001E000000003E000000003E000 +000003C000000007C000000007C000000007800000000F800000000F800000000F000000 +001F000000001F000000001E000000003E000000003E000000007C000000007C00000000 +7800000000F800000000F800000000F000000001F000000001F000000001E000000003E0 +00000003E000000003C000000007C000000007C000000007800000000F800000000F8000 +00000F000000001F000000001F000000001E000000003E000000003E000000003C000000 +007C000000007C000000007800000000F800000000F800000000F0000000006000000000 +225B7BC32D>I<0001FE0000000FFFC000003F03F000007C00F80000F8007C0001F0003E +0003E0001F0007C0000F8007C0000F800FC0000FC01F800007E01F800007E01F800007E0 +3F800007F03F800007F03F000003F07F000003F87F000003F87F000003F87F000003F87F +000003F87F000003F8FF000003FCFF000003FCFF000003FCFF000003FCFF000003FCFF00 +0003FCFF000003FCFF000003FCFF000003FCFF000003FCFF000003FCFF000003FCFF0000 +03FCFF000003FCFF000003FCFF000003FCFF000003FCFF000003FCFF000003FCFF000003 +FC7F000003F87F000003F87F000003F87F000003F87F000003F83F800007F03F800007F0 +3F800007F01F800007E01F800007E01F800007E00FC0000FC00FC0000FC007E0001F8003 +E0001F0001F0003E0000F8007C00007C00F800003F03F000000FFFC0000001FE0000263F +7DBC2D>I<0001C0000003C0000007C000001FC000007FC00007FFC000FFFFC000FF9FC0 +00F81FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0 +00001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0 +00001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0 +00001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0 +00001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0 +00001FC000001FC000001FC000001FC000007FF000FFFFFFF8FFFFFFF8FFFFFFF81D3D78 +BC2D>I<0007FC0000003FFF800000FFFFE00003F01FF80007C007FC000F0001FE001E00 +00FF001C0000FF803C00007FC07800007FC07800003FE07000003FE0FF00003FE0FF8000 +1FF0FFC0001FF0FFC0001FF0FFC0001FF0FFC0001FF0FFC0001FF07F80001FF03F00001F +F00C00001FF00000001FE00000003FE00000003FE00000003FC00000007FC00000007F80 +000000FF80000000FF00000001FE00000001FC00000003F800000007F000000007E00000 +000FC00000001F800000003F000000007E000000007C00000000F800000001F000000003 +E000000007C00000000F800000001F000070003E000070003C000070007800007000F000 +00E001E00000E003C00000E007800000E00F000001E01FFFFFFFE01FFFFFFFE03FFFFFFF +E07FFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0243D7CBC2D>I<0007FC0000003FFF +800000F80FE00001E003F800078001FC000F0001FE000E0000FF001E0000FF801F80007F +803FC0007FC03FE0007FC03FE0007FC03FF0007FC03FE0007FC03FE0007FC01FE0007FC0 +0FC0007FC00000007F80000000FF80000000FF00000000FF00000001FE00000001FE0000 +0003FC00000003F800000007E00000000FC00000003F0000001FFC0000001FFF80000000 +0FE000000007F800000003FC00000001FE00000000FF00000000FF800000007FC0000000 +7FC00000007FE00000003FE00000003FE00000003FF00000003FF00C00003FF03F00003F +F07F80003FF0FFC0003FF0FFC0003FF0FFC0003FF0FFC0003FE0FFC0003FE0FF80007FE0 +7F00007FC07800007FC0780000FF803C0000FF801E0001FF000F0003FE0007C007FC0003 +F80FF00000FFFFE000003FFF80000007F80000243F7CBC2D>I<0000000E000000001E00 +0000003E000000003E000000007E000000007E00000000FE00000001FE00000001FE0000 +0003FE000000077E000000067E0000000E7E0000001C7E0000001C7E000000387E000000 +707E000000707E000000E07E000001C07E000001C07E000003807E000007007E00000700 +7E00000E007E00001C007E00001C007E000038007E000070007E000070007E0000E0007E +0000C0007E0001C0007E000380007E000300007E000700007E000E00007E000C00007E00 +1C00007E003800007E003800007E007000007E00E000007E00FFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000000 +00FE00000000FE00000000FE00000000FE00000000FE00000000FE00000001FF000001FF +FFFF0001FFFFFF0001FFFFFF283E7EBD2D>I<06000003000780001F0007F800FE0007FF +FFFE0007FFFFFC0007FFFFF80007FFFFF00007FFFFC00007FFFF000007FFFC0000073FE0 +000007000000000700000000070000000007000000000700000000070000000007000000 +00070000000007000000000700000000070000000007000000000701FE0000070FFF8000 +073E03E000077001F80007E000FC0007C0007E000780003F000700003F800600001F8000 +00001FC00000001FC00000001FE00000000FE00000000FE00000000FE00000000FF00000 +000FF00000000FF00C00000FF07F00000FF07F80000FF0FF80000FF0FF80000FF0FF8000 +0FF0FF80000FF0FF80000FE0FF00001FE0FC00001FE07000001FC07800001FC03800003F +803C00003F801E00007F001F0000FE000F8001FC0007C003F80003F80FE00000FFFFC000 +003FFF00000007F80000243F7CBC2D>I<00001FE0000000FFF8000003F03E00000FC00F +00001F000780003E000780007E001FC000FC003FC001F8007FC003F8007FC003F0007FC0 +07F0007FC00FE0003F800FE0001F001FE00000001FC00000001FC00000003FC00000003F +C00000003FC00000007F800000007F800000007F80FE00007F87FF8000FF8F07E000FF9C +01F000FFB800FC00FFB0007E00FFF0007E00FFE0003F00FFE0003F80FFC0003FC0FFC000 +3FC0FFC0001FE0FFC0001FE0FFC0001FE0FF80001FF0FF80001FF0FF80001FF0FF80001F +F0FF80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF0 +3F80001FF03FC0001FE03FC0001FE01FC0001FE01FC0003FC01FC0003FC00FE0003F800F +E0003F8007E0007F0003F0007E0001F800FC0000FC01F800007E07F000003FFFE000000F +FF80000003FC0000243F7CBC2D>I<38000000003C000000003F000000003FFFFFFFFC3F +FFFFFFFC3FFFFFFFFC3FFFFFFFF87FFFFFFFF87FFFFFFFF07FFFFFFFE078000001E07000 +0003C0700000078070000007007000000F00E000001E00E000001C00E000003C00E00000 +78000000007000000000F000000001E000000001C000000003C000000007800000000700 +0000000F000000001E000000001E000000003C000000003C000000007C00000000780000 +0000F800000000F800000001F800000001F000000003F000000003F000000003F0000000 +07F000000007F000000007F00000000FF00000000FE00000000FE00000001FE00000001F +E00000001FE00000001FE00000001FE00000001FE00000003FE00000003FE00000003FE0 +0000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE000 +00001FC00000000700000026407BBD2D>I<0003FC0000001FFF8000007C07E00000F001 +F80001E0007C0003C0003E000780001F000F00001F000F00000F801E00000F801E00000F +C03E000007C03E000007C03E000007C03E000007C03F000007C03F000007C03F80000F80 +3FC0000F801FE0001F801FF0001F001FFC003E000FFE007C000FFF80780007FFC0F00003 +FFF3E00001FFFF800000FFFF0000003FFF0000001FFFC000000FFFE000003FFFF8000078 +FFFC0001F07FFE0003E01FFF0007C00FFF800F8003FFC01F0001FFC03F00007FE03E0000 +3FE07E00001FE07C00000FF07C000007F0F8000003F0F8000003F0F8000003F0F8000001 +F0F8000001F0F8000001F0F8000001F0FC000001E07C000003E07C000003E07E000003C0 +3F000007C01F00000F801F80001F000FC0003E0007F0007C0001FC03F80000FFFFE00000 +1FFF80000003FC0000243F7CBC2D>I<0003FC0000001FFF0000007E07C00000FC03F000 +01F801F80003F000FC0007E0007C000FE0007E001FC0007F001FC0003F003FC0003F803F +80003F807F80003FC07F80003FC07F80001FC0FF80001FC0FF80001FE0FF80001FE0FF80 +001FE0FF80001FE0FF80001FE0FF80001FF0FF80001FF0FF80001FF0FF80001FF0FF8000 +1FF07F80001FF07F80003FF07F80003FF07F80003FF03FC0003FF03FC0003FF01FC0007F +F00FC0007FF007E000FFF007F000DFF003F001DFF000F8039FF0007E0F1FF0001FFE1FE0 +0007F01FE00000001FE00000001FE00000003FC00000003FC00000003FC00000003FC000 +00003F800000007F800F80007F001FC0007F003FE000FE003FE000FE003FE001FC003FE0 +01F8003FC003F0003F8007F0001E000FE0001F001FC0000FC07F000003FFFE000001FFF8 +0000003FC00000243F7CBC2D>I<1E007F807F80FFC0FFC0FFC0FFC07F807F801E000000 +000000000000000000000000000000000000000000000000000000000000000000000000 +1E007F807F80FFC0FFC0FFC0FFC07F807F801E000A2779A619>I<1E007F807F80FFC0FF +C0FFC0FFC07F807F801E0000000000000000000000000000000000000000000000000000 +000000000000000000000000001E007F00FF80FF80FFC0FFC0FFC0FFC07FC01EC000C000 +C000C000C001C001800180018003800300070006000E000C001C003800300030000A3979 +A619>I<7FFFFFFFFFFFFFE0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF07FFFFFFFFFFFFFE0 +000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000 +000000007FFFFFFFFFFFFFE0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF07FFFFFFFFFFFFFE0 +3C167BA147>61 D<00000007000000000000000F800000000000000F800000000000000F +800000000000001FC00000000000001FC00000000000001FC00000000000003FE0000000 +0000003FE00000000000003FE00000000000007FF00000000000007FF00000000000007F +F0000000000000FFF8000000000000E7F8000000000000E7F8000000000001C7FC000000 +000001C3FC000000000001C3FC00000000000381FE00000000000381FE00000000000381 +FE00000000000700FF00000000000700FF00000000000700FF00000000000E007F800000 +00000E007F80000000000E007F80000000001C003FC0000000001C003FC0000000001C00 +3FC00000000038001FE00000000038001FE00000000038001FE00000000070000FF00000 +000070000FF00000000070000FF000000000E00007F800000000E00007F800000000E000 +07F800000001C00003FC00000001FFFFFFFC00000001FFFFFFFC00000003FFFFFFFE0000 +0003800001FE00000003800001FE00000007000000FF00000007000000FF0000000F0000 +00FF8000000E0000007F8000000E0000007F8000001E0000007FC000001C0000003FC000 +001C0000003FC000003C0000003FE00000380000001FE00000380000001FE00000780000 +001FF00000780000000FF00000FC0000000FF00003FC0000001FF8000FFF0000003FFC00 +FFFFF0000FFFFFF8FFFFF0000FFFFFF8FFFFF0000FFFFFF83D417DC044>65 +D<FFFFFFFFFC0000FFFFFFFFFF8000FFFFFFFFFFF00001FF80000FF800007F000003FE00 +007F000001FF00007F000000FF80007F0000007FC0007F0000003FE0007F0000003FE000 +7F0000001FF0007F0000001FF0007F0000001FF8007F0000001FF8007F0000001FF8007F +0000000FF8007F0000001FF8007F0000001FF8007F0000001FF8007F0000001FF0007F00 +00001FF0007F0000003FE0007F0000007FE0007F0000007FC0007F000000FF80007F0000 +01FF00007F000003FC00007F00000FF800007F00007FE000007FFFFFFF0000007FFFFFFF +E000007F000007FC00007F000001FE00007F000000FF80007F0000007FC0007F0000003F +E0007F0000001FF0007F0000001FF8007F0000000FF8007F0000000FFC007F00000007FC +007F00000007FC007F00000007FE007F00000007FE007F00000007FE007F00000007FE00 +7F00000007FE007F00000007FE007F00000007FE007F00000007FC007F0000000FFC007F +0000000FFC007F0000001FF8007F0000001FF0007F0000003FF0007F0000007FE0007F00 +0000FFC0007F000003FF8001FF80000FFE00FFFFFFFFFFFC00FFFFFFFFFFE000FFFFFFFF +FF0000373E7DBD40>I<0000003FF00006000003FFFE000E00000FFFFF801E00003FF007 +E03E0000FF8000F83E0003FE00007C7E0007F800001EFE000FF000000FFE003FE0000007 +FE007FC0000003FE00FF80000003FE00FF00000001FE01FE00000000FE03FE00000000FE +07FC000000007E07F8000000007E0FF8000000003E0FF8000000003E1FF0000000001E1F +F0000000001E3FF0000000001E3FE0000000001E3FE0000000000E7FE0000000000E7FE0 +000000000E7FE0000000000E7FC00000000000FFC00000000000FFC00000000000FFC000 +00000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000 +000000FFC00000000000FFC00000000000FFC00000000000FFC000000000007FC0000000 +00007FE000000000007FE0000000000E7FE0000000000E3FE0000000000E3FE000000000 +0E3FF0000000000E1FF0000000001E1FF0000000001C0FF8000000001C0FF8000000001C +07F8000000003C07FC000000003803FE000000007801FE000000007000FF00000000F000 +FF80000001E0007FC0000001C0003FE0000003C0000FF0000007800007F800001F000003 +FE00003E000000FF8000F80000003FF007F00000000FFFFFC000000003FFFF0000000000 +3FF0000037427BBF42>I<FFFFFFFFFC000000FFFFFFFFFF800000FFFFFFFFFFE0000001 +FFC0001FF80000007F800003FE0000007F800000FF0000007F8000007F8000007F800000 +3FC000007F8000000FE000007F8000000FF000007F80000007F800007F80000003FC0000 +7F80000001FC00007F80000001FE00007F80000000FF00007F80000000FF00007F800000 +00FF80007F800000007F80007F800000007FC0007F800000007FC0007F800000007FC000 +7F800000003FE0007F800000003FE0007F800000003FE0007F800000003FE0007F800000 +003FE0007F800000003FF0007F800000003FF0007F800000003FF0007F800000003FF000 +7F800000003FF0007F800000003FF0007F800000003FF0007F800000003FF0007F800000 +003FF0007F800000003FF0007F800000003FF0007F800000003FE0007F800000003FE000 +7F800000003FE0007F800000003FE0007F800000003FE0007F800000007FC0007F800000 +007FC0007F800000007F80007F800000007F80007F80000000FF80007F80000000FF0000 +7F80000001FE00007F80000001FE00007F80000003FC00007F80000003F800007F800000 +07F800007F8000000FF000007F8000001FE000007F8000007FC000007F800000FF000000 +7F800003FE000001FFC0001FF80000FFFFFFFFFFF00000FFFFFFFFFF800000FFFFFFFFFC +0000003C3E7DBD45>I<FFFFFFFFFFFFE0FFFFFFFFFFFFE0FFFFFFFFFFFFE001FFC00001 +FFE0007F8000001FE0007F8000000FF0007F80000003F0007F80000003F0007F80000001 +F0007F80000000F0007F80000000F0007F80000000F0007F8000000070007F8000000070 +007F8000000070007F8000000070007F8000000038007F80001C0038007F80001C003800 +7F80001C0038007F80001C0038007F80001C0000007F80001C0000007F80003C0000007F +80003C0000007F80007C0000007F8000FC0000007F8003FC0000007FFFFFFC0000007FFF +FFFC0000007FFFFFFC0000007F8003FC0000007F8000FC0000007F80007C0000007F8000 +3C0000007F80003C0000007F80001C0000007F80001C0000007F80001C0007007F80001C +0007007F80001C0007007F80001C000E007F800000000E007F800000000E007F80000000 +0E007F800000000E007F800000001E007F800000001C007F800000001C007F800000003C +007F800000003C007F800000007C007F800000007C007F80000000F8007F80000001F800 +7F80000003F8007F80000007F8007F8000001FF801FFC00001FFF8FFFFFFFFFFFFF0FFFF +FFFFFFFFF0FFFFFFFFFFFFF0383E7DBD3E>I<FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFF +FFFFFF8001FFC00003FF80007F8000007F80007F8000001FC0007F8000000FC0007F8000 +0007C0007F80000007C0007F80000003C0007F80000003C0007F80000003C0007F800000 +01C0007F80000001C0007F80000001C0007F80000001C0007F80000000E0007F80000000 +E0007F80003800E0007F80003800E0007F80003800E0007F8000380000007F8000380000 +007F8000380000007F8000780000007F8000780000007F8000F80000007F8001F8000000 +7F8007F80000007FFFFFF80000007FFFFFF80000007FFFFFF80000007F8007F80000007F +8001F80000007F8000F80000007F8000780000007F8000780000007F8000380000007F80 +00380000007F8000380000007F8000380000007F8000380000007F8000380000007F8000 +000000007F8000000000007F8000000000007F8000000000007F8000000000007F800000 +0000007F8000000000007F8000000000007F8000000000007F8000000000007F80000000 +00007F8000000000007F8000000000007F8000000000007F800000000001FFE000000000 +FFFFFFF0000000FFFFFFF0000000FFFFFFF0000000333E7DBD3B>I<0000003FE0000C00 +000003FFFE001C0000001FFFFF803C0000007FF00FC07C000000FF0001F07C000003FC00 +0078FC000007F800003DFC00001FE000001FFC00003FC000000FFC00007F80000007FC00 +00FF80000003FC0001FF00000003FC0001FE00000001FC0003FC00000001FC0007FC0000 +0000FC0007F800000000FC000FF8000000007C000FF0000000007C001FF0000000003C00 +1FF0000000003C003FE0000000003C003FE0000000003C003FE0000000001C007FE00000 +00001C007FE0000000001C007FC0000000001C007FC0000000000000FFC0000000000000 +FFC0000000000000FFC0000000000000FFC0000000000000FFC0000000000000FFC00000 +00000000FFC0000000000000FFC0000000000000FFC0000000000000FFC0000000000000 +FFC0000000000000FFC000001FFFFFF07FC000001FFFFFF07FC000001FFFFFF07FE00000 +000FFE007FE000000003FC003FE000000003FC003FE000000003FC003FF000000003FC00 +1FF000000003FC001FF000000003FC000FF800000003FC000FF800000003FC0007F80000 +0003FC0007FC00000003FC0003FC00000003FC0001FE00000003FC0001FF00000003FC00 +00FF80000003FC00007FC0000007FC00003FE0000007FC00001FF000000FFC000007F800 +001EFC000003FE00003C7C000000FF8000F83C0000007FF007F01C0000001FFFFFC00C00 +000003FFFF0000000000003FF00000003C427BBF47>I<FFFFFFC01FFFFFF8FFFFFFC01F +FFFFF8FFFFFFC01FFFFFF801FFE000003FFC00007F8000000FF000007F8000000FF00000 +7F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF000007F800000 +0FF000007F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF00000 +7F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF000007F800000 +0FF000007F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF00000 +7F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF000007FFFFFFF +FFF000007FFFFFFFFFF000007FFFFFFFFFF000007F8000000FF000007F8000000FF00000 +7F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF000007F800000 +0FF000007F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF00000 +7F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF000007F800000 +0FF000007F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF00000 +7F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF000007F800000 +0FF000007F8000000FF000007F8000000FF00001FFE000003FFC00FFFFFFC01FFFFFF8FF +FFFFC01FFFFFF8FFFFFFC01FFFFFF83D3E7DBD44>I<FFFFFFF0FFFFFFF0FFFFFFF000FF +F000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F +C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F +C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F +C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F +C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F +C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F +C00000FFF000FFFFFFF0FFFFFFF0FFFFFFF01C3E7EBD21>I<001FFFFFFC001FFFFFFC00 +1FFFFFFC000007FF00000003FE00000001FE00000001FE00000001FE00000001FE000000 +01FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001 +FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE +00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00 +000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE0000 +0001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE000000 +01FE00000001FE003F0001FE007F8001FE00FFC001FE00FFC001FE00FFC001FE00FFC001 +FE00FFC003FC00FF8003FC007F0003F8007C0007F800380007F0003C000FE0001E001FC0 +000F003F800003E07E000000FFF80000003FC0000026407CBD2F>I<FFFFFFF8000000FF +FFFFF8000000FFFFFFF800000001FFE000000000007F8000000000007F8000000000007F +8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F80 +00000000007F8000000000007F8000000000007F8000000000007F8000000000007F8000 +000000007F8000000000007F8000000000007F8000000000007F8000000000007F800000 +0000007F8000000000007F8000000000007F8000000000007F8000000000007F80000000 +00007F8000000000007F8000000000007F8000000000007F8000000000007F8000000000 +007F8000000000007F8000000000007F8000000000007F8000000000007F800000000000 +7F8000000000007F8000000380007F8000000380007F8000000380007F8000000380007F +8000000380007F8000000780007F8000000700007F8000000700007F8000000700007F80 +00000700007F8000000F00007F8000000F00007F8000000F00007F8000001F00007F8000 +001F00007F8000003F00007F8000007F00007F800000FF00007F800001FE00007F800007 +FE0001FFC0003FFE00FFFFFFFFFFFE00FFFFFFFFFFFE00FFFFFFFFFFFE00313E7DBD39> +76 D<FFFFC0000000003FFFF0FFFFC0000000003FFFF0FFFFC0000000003FFFF001FFE0 +000000007FF800007FE0000000007FE0000077F000000000EFE0000077F000000000EFE0 +000077F000000000EFE0000073F800000001CFE0000073F800000001CFE0000071FC0000 +00038FE0000071FC000000038FE0000071FC000000038FE0000070FE000000070FE00000 +70FE000000070FE0000070FF0000000E0FE00000707F0000000E0FE00000707F0000000E +0FE00000703F8000001C0FE00000703F8000001C0FE00000703F8000001C0FE00000701F +C00000380FE00000701FC00000380FE00000700FE00000700FE00000700FE00000700FE0 +0000700FE00000700FE000007007F00000E00FE000007007F00000E00FE000007003F800 +01C00FE000007003F80001C00FE000007003F80001C00FE000007001FC0003800FE00000 +7001FC0003800FE000007001FC0003800FE000007000FE0007000FE000007000FE000700 +0FE0000070007F000E000FE0000070007F000E000FE0000070007F000E000FE000007000 +3F801C000FE0000070003F801C000FE0000070001FC038000FE0000070001FC038000FE0 +000070001FC038000FE0000070000FE070000FE0000070000FE070000FE0000070000FE0 +E0000FE00000700007F0E0000FE00000700007F0E0000FE00000700003F9C0000FE00000 +700003F9C0000FE00000700003F9C0000FE00000700001FF80000FE00000700001FF8000 +0FE00000700000FF00000FE00000700000FF00000FE00000F80000FF00000FE00001FC00 +007E00000FE00007FF00007E00003FF800FFFFF8003C001FFFFFF0FFFFF8003C001FFFFF +F0FFFFF8003C001FFFFFF04C3E7DBD53>I<FFFF800000FFFFF8FFFFC00000FFFFF8FFFF +E00000FFFFF8007FE0000007FF00007FF0000001FC00007FF8000000F800007FF8000000 +70000077FC00000070000073FE00000070000073FE00000070000071FF00000070000070 +FF80000070000070FF800000700000707FC00000700000703FE00000700000703FE00000 +700000701FF00000700000700FF80000700000700FF800007000007007FC000070000070 +03FE00007000007003FE00007000007001FF00007000007000FF80007000007000FF8000 +70000070007FC00070000070003FE00070000070003FE00070000070001FF00070000070 +000FF80070000070000FF800700000700007FC00700000700003FE00700000700003FE00 +700000700001FF00700000700000FF80700000700000FF807000007000007FC070000070 +00003FE07000007000003FE07000007000001FF07000007000000FF87000007000000FF8 +70000070000007FC70000070000003FE70000070000003FE70000070000001FF70000070 +000000FFF0000070000000FFF00000700000007FF00000700000003FF00000700000003F +F00000700000001FF00000700000000FF00000700000000FF000007000000007F00000F8 +00000003F00001FC00000003F00007FF00000001F000FFFFF8000000F000FFFFF8000000 +F000FFFFF800000070003D3E7DBD44>I<0000007FE0000000000007FFFE00000000001F +C03F80000000007E0007E000000001FC0003F800000007F00000FE0000000FE000007F00 +00001FC000003F8000003F8000001FC000007F0000000FE00000FE00000007F00001FE00 +000007F80001FC00000003F80003FC00000003FC0007F800000001FE0007F800000001FE +000FF000000000FF000FF000000000FF001FF000000000FF801FE0000000007F803FE000 +0000007FC03FE0000000007FC03FE0000000007FC07FE0000000007FE07FC0000000003F +E07FC0000000003FE07FC0000000003FE0FFC0000000003FF0FFC0000000003FF0FFC000 +0000003FF0FFC0000000003FF0FFC0000000003FF0FFC0000000003FF0FFC0000000003F +F0FFC0000000003FF0FFC0000000003FF0FFC0000000003FF0FFC0000000003FF0FFC000 +0000003FF07FC0000000003FE07FE0000000007FE07FE0000000007FE07FE0000000007F +E07FE0000000007FE03FE0000000007FC03FE0000000007FC01FF000000000FF801FF000 +000000FF801FF000000000FF800FF800000001FF000FF800000001FF0007FC00000003FE +0003FC00000003FC0003FE00000007FC0001FE00000007F80000FF0000000FF000007F00 +00000FE000003F8000001FC000001FC000003F8000000FE000007F00000007F00000FE00 +000001FC0003F8000000007F000FE0000000001FC03F800000000007FFFE000000000000 +7FE00000003C427BBF47>I<FFFFFFFFF80000FFFFFFFFFF8000FFFFFFFFFFE00001FFC0 +003FF800007F800007FC00007F800001FE00007F800000FF00007F8000007F80007F8000 +003FC0007F8000003FE0007F8000003FE0007F8000001FF0007F8000001FF0007F800000 +1FF8007F8000001FF8007F8000001FF8007F8000001FF8007F8000001FF8007F8000001F +F8007F8000001FF8007F8000001FF8007F8000001FF0007F8000001FF0007F8000003FE0 +007F8000003FE0007F8000003FC0007F8000007F80007F800000FF00007F800001FE0000 +7F800007FC00007F80003FF000007FFFFFFFC000007FFFFFFE0000007F8000000000007F +8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F80 +00000000007F8000000000007F8000000000007F8000000000007F8000000000007F8000 +000000007F8000000000007F8000000000007F8000000000007F8000000000007F800000 +0000007F8000000000007F8000000000007F8000000000007F8000000000007F80000000 +00007F8000000000007F8000000000007F800000000001FFE000000000FFFFFFC0000000 +FFFFFFC0000000FFFFFFC0000000353E7DBD3E>I<FFFFFFFFC0000000FFFFFFFFFC0000 +00FFFFFFFFFF80000001FFC000FFE00000007F80001FF00000007F800007FC0000007F80 +0001FE0000007F800000FF0000007F800000FF8000007F8000007FC000007F8000007FC0 +00007F8000003FE000007F8000003FE000007F8000003FF000007F8000003FF000007F80 +00003FF000007F8000003FF000007F8000003FF000007F8000003FF000007F8000003FF0 +00007F8000003FE000007F8000007FE000007F8000007FC000007F8000007F8000007F80 +0000FF8000007F800000FF0000007F800001FC0000007F800007F80000007F80001FE000 +00007F8000FF800000007FFFFFFC000000007FFFFFF0000000007F8001FC000000007F80 +003F000000007F80001FC00000007F80000FE00000007F800007F00000007F800007F800 +00007F800003F80000007F800003FC0000007F800001FC0000007F800001FE0000007F80 +0001FE0000007F800001FE0000007F800001FF0000007F800001FF0000007F800001FF00 +00007F800001FF0000007F800001FF8000007F800001FF8000007F800001FF8000007F80 +0001FF8000007F800001FFC004007F800001FFC00E007F800001FFC00E007F800000FFC0 +0E007F800000FFE00E007F8000007FE01E01FFE000007FE01CFFFFFFC0003FF01CFFFFFF +C0001FF838FFFFFFC00007F870000000000001FFE00000000000003F803F407DBD43>82 +D<0007FC000C001FFF801C007FFFF03C01FC03F83C03F0007E7C07C0001FFC0F80000FFC +1F800007FC3F000003FC3E000001FC7E000000FC7E000000FC7C0000007CFC0000007CFC +0000007CFC0000003CFC0000003CFC0000003CFE0000001CFE0000001CFF0000001CFF00 +00001C7F800000007FC00000007FE00000003FF80000003FFF8000001FFFF800000FFFFF +800007FFFFF00003FFFFFC0001FFFFFF0000FFFFFFC0003FFFFFE00007FFFFF000007FFF +F0000007FFF80000007FFC0000000FFC00000007FE00000003FE00000001FE00000000FF +00000000FFE00000007FE00000007FE00000007FE00000003FE00000003FF00000003FF0 +0000003FF00000003FF00000003EF80000003EF80000007EFC0000007CFE000000FCFF00 +0000F8FF800001F8FFC00003F0FFE00007E0F9FC000FC0F07F803F80F01FFFFE00E007FF +F800C0007FC00028427BBF33>I<3FFFFFFFFFFFFF803FFFFFFFFFFFFF803FFFFFFFFFFF +FF803FF0007FE001FF803F80003FC0003F807F00003FC0001FC07E00003FC00007C07C00 +003FC00007C07800003FC00003C07800003FC00003C07800003FC00003C07000003FC000 +01C07000003FC00001C07000003FC00001C07000003FC00001C07000003FC00001C0E000 +003FC00000E0E000003FC00000E0E000003FC00000E0E000003FC00000E0E000003FC000 +00E00000003FC00000000000003FC00000000000003FC00000000000003FC00000000000 +003FC00000000000003FC00000000000003FC00000000000003FC00000000000003FC000 +00000000003FC00000000000003FC00000000000003FC00000000000003FC00000000000 +003FC00000000000003FC00000000000003FC00000000000003FC00000000000003FC000 +00000000003FC00000000000003FC00000000000003FC00000000000003FC00000000000 +003FC00000000000003FC00000000000003FC00000000000003FC00000000000003FC000 +00000000003FC00000000000003FC00000000000003FC00000000000003FC00000000000 +003FC00000000000003FC00000000000003FC00000000000003FC00000000000007FE000 +0000000000FFF00000000007FFFFFFFE00000007FFFFFFFE00000007FFFFFFFE00003B3D +7DBC42>I<FFFFFFC000FFFFF8FFFFFFC000FFFFF8FFFFFFC000FFFFF801FFE0000007FF +00007F80000001FC00007F80000000F800007F800000007000007F800000007000007F80 +0000007000007F800000007000007F800000007000007F800000007000007F8000000070 +00007F800000007000007F800000007000007F800000007000007F800000007000007F80 +0000007000007F800000007000007F800000007000007F800000007000007F8000000070 +00007F800000007000007F800000007000007F800000007000007F800000007000007F80 +0000007000007F800000007000007F800000007000007F800000007000007F8000000070 +00007F800000007000007F800000007000007F800000007000007F800000007000007F80 +0000007000007F800000007000007F800000007000007F800000007000007F8000000070 +00007F800000007000007F800000007000007F800000007000007F800000007000007F80 +0000007000007F800000007000003F80000000F000003FC0000000E000003FC0000000E0 +00003FC0000001E000001FC0000001C000001FE0000001C000000FE0000003C000000FF0 +00000780000007F000000700000003F800000F00000001FC00001E00000000FE00003C00 +0000007F0000F8000000003F8001F0000000000FF00FE00000000003FFFF800000000000 +FFFE0000000000001FF00000003D407DBD44>I<FFFFFF00000FFFFEFFFFFF00000FFFFE +FFFFFF00000FFFFE03FFE0000001FFE001FF800000007F8000FF800000003F00007F8000 +00003E00007F800000001C00007FC00000003C00003FC00000003800003FC00000003800 +003FE00000007800001FE00000007000001FE00000007000000FF0000000E000000FF000 +0000E000000FF8000001E0000007F8000001C0000007F8000001C0000007FC000003C000 +0003FC00000380000003FC00000380000001FE00000700000001FE00000700000001FF00 +000700000000FF00000E00000000FF00000E00000000FF80001E000000007F80001C0000 +00007F80001C000000007FC0003C000000003FC00038000000003FC00038000000001FE0 +0070000000001FE00070000000001FF000F0000000000FF000E0000000000FF000E00000 +00000FF801E00000000007F801C00000000007F801C00000000003FC03800000000003FC +03800000000003FE07800000000001FE07000000000001FE07000000000001FF0F000000 +000000FF0E000000000000FF0E0000000000007F9C0000000000007F9C0000000000007F +DC0000000000003FF80000000000003FF80000000000003FF80000000000001FF0000000 +0000001FF00000000000001FF00000000000000FE00000000000000FE000000000000007 +C000000000000007C000000000000007C000000000000003800000003F407EBD44>I<FF +FFFE007FFFFF8007FFFFFFFFFE007FFFFF8007FFFFFFFFFE007FFFFF8007FFFF03FFC000 +01FFE00000FFF801FF000000FFC000003FE001FF0000007F8000000F8000FF0000007F80 +00000F8000FF0000007FC000000F0000FF8000003FC000000F00007F8000003FC000000E +00007F8000003FE000000E00007F8000003FE000000E00003FC000003FE000001C00003F +C000003FE000001C00003FC000007FF000001C00001FE000007FF000003800001FE00000 +7FF000003800001FE00000E7F800003800000FF00000E7F800007000000FF00000E7F800 +007000000FF00001C3FC00007000000FF80001C3FC0000F0000007F80001C3FC0000E000 +0007F80003C3FE0000E0000007FC000381FE0001E0000003FC000381FE0001C0000003FC +000781FF0001C0000003FC000700FF0001C0000001FE000700FF000380000001FE000700 +FF000380000001FE000E007F800380000000FF000E007F800700000000FF000E007F8007 +00000000FF001C003FC007000000007F801C003FC00E000000007F801C003FC00E000000 +007F8038001FE00E000000007FC038001FE01E000000003FC038001FE01C000000003FC0 +78001FF01C000000003FE070000FF03C000000001FE070000FF038000000001FE0F0000F +F838000000001FE0E00007F838000000000FF0E00007F870000000000FF0E00007F87000 +0000000FF1C00003FC700000000007F9C00003FCE00000000007F9C00003FCE000000000 +07FB800001FEE00000000003FF800001FFC00000000003FF800001FFC00000000003FF00 +0000FFC00000000003FF000000FFC00000000001FF000000FF800000000001FF000000FF +800000000001FE0000007F800000000000FE0000007F000000000000FE0000007F000000 +000000FC0000003F0000000000007C0000003E0000000000007C0000003E000000000000 +780000001E000000000000380000001C00000058407EBD5D>I<FFFCFFFCFFFCFFFCF000 +F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 +F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 +F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 +F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 +F000F000F000F000F000F000F000F000F000F000FFFCFFFCFFFCFFFC0E5B77C319>91 +D<018000C0038001C003000180070003800E0007001C000E0018000C0038001C00300018 +0070003800600030006000300060003000E0007000C0006000C0006000C0006000C00060 +00CF006780FFC07FE0FFE07FF0FFE07FF0FFE07FF07FE03FF07FE03FF03FE01FF03FC01F +E00F0007801C1C73BE2D>I<FFFCFFFCFFFCFFFC003C003C003C003C003C003C003C003C +003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C +003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C +003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C +003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C +003C003C003CFFFCFFFCFFFCFFFC0E5B7FC319>I<000FF800000000FFFE00000003F01F +800000078007E000000F8003F000000FE001F800001FF001FC00001FF000FE00001FF000 +FE00001FF000FE00001FF0007F00000FE0007F00000380007F00000000007F0000000000 +7F00000000007F00000000007F000000001FFF00000003FFFF0000001FF87F0000007F80 +7F000001FC007F000007F8007F00000FE0007F00001FC0007F00003F80007F00003F8000 +7F00007F00007F00007F00007F0380FE00007F0380FE00007F0380FE00007F0380FE0000 +FF0380FE0000FF0380FE0000FF03807F0001FF03807F0003BF03803F80071F87001FC00E +1FCF0007F03C0FFE0001FFF807FC00003FC001F000292A7DA82D>97 +D<01FC00000000FFFC00000000FFFC00000000FFFC0000000007FC0000000003FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC03FC00 +0001FC1FFF800001FC7C07E00001FDE001F00001FFC000FC0001FF80007E0001FF00003F +0001FE00003F8001FC00001F8001FC00001FC001FC00000FE001FC00000FE001FC00000F +F001FC00000FF001FC000007F001FC000007F801FC000007F801FC000007F801FC000007 +F801FC000007F801FC000007F801FC000007F801FC000007F801FC000007F801FC000007 +F801FC000007F001FC000007F001FC00000FF001FC00000FF001FC00000FE001FC00001F +E001FC00001FC001FE00001F8001FE00003F0001FF00007F0001FF8000FE0001F3C001F8 +0001F1E003F00001E0780FC00001C03FFF0000000007F800002D407EBE33>I<0001FF00 +00000FFFE000003F00F800007C001E0001F8001F0003F0007F0007F000FF800FE000FF80 +0FC000FF801FC000FF801FC000FF803F80007F003F80001C007F800000007F800000007F +00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00 +000000FF00000000FF00000000FF00000000FF000000007F800000007F800000007F8000 +00003F800001C03FC00001C01FC00003C01FC00003800FE000078007F000070003F0000E +0001F8001E0000FC007800003F01F000000FFFC0000001FE0000222A7DA828>I<000000 +01FC00000000FFFC00000000FFFC00000000FFFC0000000007FC0000000003FC00000000 +01FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00000000 +01FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00000000 +01FC0000000001FC0000000001FC0000000001FC0000000001FC000000FF01FC000007FF +E1FC00001F80F9FC00007E003DFC0000FC001FFC0003F80007FC0007F00007FC0007E000 +03FC000FC00001FC001FC00001FC003FC00001FC003F800001FC007F800001FC007F8000 +01FC007F000001FC007F000001FC00FF000001FC00FF000001FC00FF000001FC00FF0000 +01FC00FF000001FC00FF000001FC00FF000001FC00FF000001FC00FF000001FC00FF0000 +01FC007F000001FC007F800001FC007F800001FC003F800001FC003F800001FC001FC000 +01FC000FC00003FC000FE00003FC0007E00007FC0003F0000FFE0001F8001FFF00007C00 +79FFF8003F01F1FFF8000FFFC1FFF80001FE01FC002D407DBE33>I<0001FE0000000FFF +C000003F03F00000FC01F80001F800FC0003F0007E0007E0003F000FE0003F800FC0001F +801FC0001FC03F80000FC03F80000FC07F80000FC07F80000FE07F00000FE07F00000FE0 +FF00000FE0FF00000FE0FFFFFFFFE0FFFFFFFFE0FF00000000FF00000000FF00000000FF +00000000FF00000000FF000000007F000000007F000000007F800000003F800000003F80 +0000E01FC00000E01FC00001E00FC00001C007E00003C007F000078003F800070000FC00 +1E00007E003C00001F80F8000007FFE0000000FF0000232A7EA828>I<00001FC000007F +F80001F83C0007E07E000FC0FF001FC1FF003F81FF003F01FF007F01FF007F00FE00FE00 +7C00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00 +0000FE000000FE000000FE000000FE000000FE0000FFFFFF00FFFFFF00FFFFFF0000FE00 +0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00 +0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00 +0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00 +0000FE000000FE000000FE000000FE000001FF00007FFFFF007FFFFF007FFFFF0020407E +BF1C>I<000000007C000003F801FF00001FFF078F80007E0FDE1F8000F803F81F8003F0 +01F81F8003F001F81F8007E000FC06000FE000FE00000FC0007E00001FC0007F00001FC0 +007F00001FC0007F00001FC0007F00001FC0007F00001FC0007F00001FC0007F00001FC0 +007F00000FC0007E00000FE000FE000007E000FC000003F001F8000003F001F8000001F8 +03E0000003FE0FC00000071FFF0000000703F80000000600000000000E00000000000E00 +000000000E00000000000F00000000000F00000000000F80000000000FC00000000007FF +FFE0000007FFFFFE000003FFFFFF800001FFFFFFE00000FFFFFFF00003FFFFFFF8000FC0 +001FFC001F000001FE003E000000FE007C0000007E007C0000003F00F80000003F00F800 +00001F00F80000001F00F80000001F00F80000001F00FC0000003F007C0000003E007E00 +00007E003F000000FC001F800001F8000FC00003F00003F0000FC00000FE007F0000003F +FFFC00000003FFC00000293D7EA82D>I<01FC00000000FFFC00000000FFFC00000000FF +FC0000000007FC0000000003FC0000000001FC0000000001FC0000000001FC0000000001 +FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001 +FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001 +FC0000000001FC0000000001FC01FE000001FC07FFC00001FC1E07E00001FC7803F00001 +FCE001F80001FDC001FC0001FD8001FC0001FF8000FE0001FF0000FE0001FF0000FE0001 +FE0000FE0001FE0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001 +FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001 +FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001 +FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001 +FC0000FE0001FC0000FE0003FE0001FF00FFFFF87FFFFCFFFFF87FFFFCFFFFF87FFFFC2E +3F7DBE33>I<01E00007F80007F8000FFC000FFC000FFC000FFC0007F80007F80001E000 +000000000000000000000000000000000000000000000000000000000000000000000000 +01FC007FFC007FFC007FFC0007FC0003FC0001FC0001FC0001FC0001FC0001FC0001FC00 +01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 +01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 +03FE00FFFFF0FFFFF0FFFFF0143E7DBD1A>I<0000780001FE0001FE0003FF0003FF0003 +FF0003FF0001FE0001FE0000780000000000000000000000000000000000000000000000 +0000000000000000000000000000007F007FFF007FFF007FFF0001FF0000FF00007F0000 +7F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0000 +7F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0000 +7F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0000 +7F00007F00007F00007F3E007F7F007FFF807EFF80FEFF80FEFF80FCFF81F87F01F87C03 +F01E07C00FFF8001FC00185185BD1C>I<01FC00000000FFFC00000000FFFC00000000FF +FC0000000007FC0000000003FC0000000001FC0000000001FC0000000001FC0000000001 +FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001 +FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001 +FC0000000001FC0000000001FC0000000001FC00FFFF8001FC00FFFF8001FC00FFFF8001 +FC003FFC0001FC003FE00001FC003F800001FC003F000001FC003C000001FC0078000001 +FC00F0000001FC01E0000001FC07C0000001FC0F80000001FC1F00000001FC3E00000001 +FC7F00000001FCFF80000001FDFF80000001FFDFC0000001FF9FE0000001FF0FE0000001 +FE07F0000001FC07F8000001F803FC000001F801FC000001F801FE000001F800FF000001 +F8007F000001F8007F800001F8003FC00001F8001FC00001F8001FE00001F8000FF00001 +F8000FF00001F8000FF80003FC000FFE00FFFFF07FFFE0FFFFF07FFFE0FFFFF07FFFE02B +3F7EBE30>I<01FC00FFFC00FFFC00FFFC0007FC0003FC0001FC0001FC0001FC0001FC00 +01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 +01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 +01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 +01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 +01FC0003FE00FFFFF8FFFFF8FFFFF8153F7DBE1A>I<01F801FE0000FF0000FFF807FFC0 +03FFE000FFF81E07E00F03F000FFF87803F03C01F80007F8E001F87000FC0003F9C001FC +E000FE0001F98001FCC000FE0001FB8000FFC0007F0001FB0000FF80007F0001FF0000FF +80007F0001FE0000FF00007F0001FE0000FF00007F0001FC0000FE00007F0001FC0000FE +00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE +00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE +00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE +00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE +00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE +00007F0001FC0000FE00007F0001FC0000FE00007F0003FE0001FF0000FF80FFFFF87FFF +FC3FFFFEFFFFF87FFFFC3FFFFEFFFFF87FFFFC3FFFFE47287DA74C>I<01F801FE0000FF +F807FFC000FFF81E07E000FFF87803F00007F8E001F80003F9C001FC0001F98001FC0001 +FB8000FE0001FB0000FE0001FF0000FE0001FE0000FE0001FE0000FE0001FC0000FE0001 +FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001 +FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001 +FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001 +FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0003FE0001FF00FF +FFF87FFFFCFFFFF87FFFFCFFFFF87FFFFC2E287DA733>I<0000FF00000007FFE000001F +81F800007E007E0000F8001F0001F0000F8003E00007C007C00003E00FC00003F01F8000 +01F81F800001F83F800001FC3F800001FC7F000000FE7F000000FE7F000000FE7F000000 +FEFF000000FFFF000000FFFF000000FFFF000000FFFF000000FFFF000000FFFF000000FF +FF000000FFFF000000FF7F000000FE7F000000FE7F000000FE3F800001FC3F800001FC3F +800001FC1F800001F80FC00003F00FC00003F007E00007E003F0000FC001F8001F80007E +007E00003F81FC00000FFFF0000000FF0000282A7EA82D>I<01FC03FC0000FFFC1FFF80 +00FFFC7C0FE000FFFDE003F00003FFC001FC0001FF8000FE0001FF00007F0001FE00003F +8001FC00003F8001FC00001FC001FC00001FE001FC00001FE001FC00000FF001FC00000F +F001FC00000FF001FC000007F801FC000007F801FC000007F801FC000007F801FC000007 +F801FC000007F801FC000007F801FC000007F801FC000007F801FC000007F801FC00000F +F001FC00000FF001FC00000FF001FC00000FF001FC00001FE001FC00001FE001FC00003F +C001FE00003F8001FE00007F0001FF00007F0001FF8000FE0001FFC001F80001FDE007F0 +0001FC780FC00001FC3FFF000001FC07F8000001FC0000000001FC0000000001FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000003FE00000000FFFFF80000 +00FFFFF8000000FFFFF80000002D3A7EA733>I<0000FF001C000007FFC03C00001F80F0 +3C00007F00387C0000FC001C7C0003F8000E7C0007F0000FFC0007F00007FC000FE00003 +FC001FE00003FC003FC00003FC003FC00001FC007F800001FC007F800001FC007F800001 +FC007F800001FC00FF000001FC00FF000001FC00FF000001FC00FF000001FC00FF000001 +FC00FF000001FC00FF000001FC00FF000001FC00FF000001FC00FF000001FC007F800001 +FC007F800001FC007F800001FC003FC00001FC003FC00001FC001FC00003FC000FE00003 +FC000FE00007FC0007F0000FFC0003F8000FFC0001FC003DFC00007E0079FC00003F81F1 +FC00000FFFC1FC000001FE01FC0000000001FC0000000001FC0000000001FC0000000001 +FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001 +FC0000000001FC0000000001FC0000000001FC0000000003FE00000000FFFFF8000000FF +FFF8000000FFFFF82D3A7DA730>I<01F807E0FFF81FF8FFF8787CFFF8E1FE07F9C1FE03 +F981FE01FB81FE01FB01FE01FB00FC01FF003001FE000001FE000001FE000001FC000001 +FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001 +FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001 +FC000001FC000001FC000001FC000003FE0000FFFFFE00FFFFFE00FFFFFE001F287EA724 +>I<003FC06001FFF8E007C03FE01F000FE03E0007E03C0003E07C0003E0780001E0F800 +01E0F80000E0F80000E0FC0000E0FE0000E0FF0000E0FF8000007FF800007FFFC0003FFF +F8001FFFFE000FFFFF0007FFFF8001FFFFC0003FFFE00003FFF000001FF000000FF8E000 +03F8E00003F8E00001F8F00001F8F00000F8F00000F8F80000F8F80000F0FC0000F0FC00 +01F0FE0001E0FF0003C0FF800780F3E01F00E0FFFC00C01FE0001D2A7DA824>I<001C00 +00001C0000001C0000001C0000001C0000001C0000003C0000003C0000003C0000003C00 +00007C0000007C000000FC000000FC000001FC000003FC000007FC00001FFFFFC0FFFFFF +C0FFFFFFC001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC00 +0001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC00 +0001FC000001FC000001FC000001FC00E001FC00E001FC00E001FC00E001FC00E001FC00 +E001FC00E001FC00E001FC00E000FC00E000FE01C000FE01C0007F03C0003F0380001F87 +000007FE000001F8001B397EB723>I<01FC0000FE00FFFC007FFE00FFFC007FFE00FFFC +007FFE0007FC0003FE0003FC0001FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC +0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC +0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC +0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC +0000FE0001FC0000FE0001FC0001FE0001FC0001FE0001FC0001FE0001FC0003FE0000FC +0003FE0000FC0007FE0000FE0006FF00007E000EFF80003F001CFFFC001FC078FFFC0007 +FFE0FFFC0000FF80FE002E297DA733>I<FFFFE00FFFE0FFFFE00FFFE0FFFFE00FFFE007 +FE0003FF0003FC0000FC0003FC0000F80001FC0000F00001FE0000F00000FE0000E00000 +FE0000E00000FF0001E000007F0001C000007F0001C000003F80038000003F8003800000 +3FC0078000001FC0070000001FC0070000000FE00E0000000FE00E0000000FF01E000000 +07F01C00000007F01C00000003F83800000003F83800000003FC7800000001FC70000000 +01FC7000000001FEF000000000FEE000000000FEE0000000007FC0000000007FC0000000 +007FC0000000003F80000000003F80000000001F00000000001F00000000001F00000000 +000E0000002B287EA630>I<FFFFC3FFFE03FFF8FFFFC3FFFE03FFF8FFFFC3FFFE03FFF8 +0FFE003FE000FFC007FC001FC0003F8003F8001FC0003F0003FC000FC0001E0001FC000F +E0001C0001FC0007E0001C0001FE0007E0003C0000FE000FF000380000FE000FF0003800 +007F000FF0007000007F001FF8007000007F001DF8007000003F801DF800E000003F803D +FC00E000003F8038FC00E000001FC038FC01C000001FC078FE01C000001FC0707E03C000 +000FE0707F038000000FE0E03F038000000FF0E03F0780000007F0E03F8700000007F1C0 +1F8700000007F9C01F8F00000003F9C01FCE00000003FB800FCE00000003FF800FDE0000 +0001FF800FFC00000001FF0007FC00000000FF0007F800000000FF0007F800000000FE00 +03F8000000007E0003F0000000007E0003F0000000007C0001F0000000003C0001E00000 +0000380000E000003D287EA642>I<FFFFF01FFFE0FFFFF01FFFE0FFFFF01FFFE003FFC0 +0FFF0000FF8007F800007F0007E000007F8007C000003FC0078000001FC00F0000000FE0 +0E0000000FF01E00000007F83C00000003F87800000001FCF000000001FEE000000000FF +E0000000007FC0000000003F80000000003FC0000000001FC0000000001FE0000000003F +F0000000003FF8000000007BF800000000F1FC00000001E1FE00000001C0FF00000003C0 +7F00000007803F8000000F003FC000001E001FE000003E000FE000007C0007F00000FC00 +07F80001FE0007FC000FFE000FFE00FFFF803FFFF8FFFF803FFFF8FFFF803FFFF82D277F +A630>I<FFFFE00FFFE0FFFFE00FFFE0FFFFE00FFFE007FE0003FF0003FC0001FC0003FC +0000F80001FC0000F00001FE0000F00000FE0000E00000FE0000E000007F0001C000007F +0001C000007F8003C000003F80038000003F80038000001FC0070000001FC0070000001F +E00F0000000FE00E0000000FE00E00000007F01C00000007F01C00000007F83C00000003 +F83800000003F83800000001FC7000000001FC7000000001FEF000000000FEE000000000 +FEE0000000007FC0000000007FC0000000007FC0000000003F80000000003F8000000000 +3F80000000001F00000000001F00000000000E00000000000E00000000001E0000000000 +1C00000000003C0000000000380000000000380000000000780000001800700000007E00 +70000000FF00E0000000FF00E0000000FF01C0000000FF01C0000000FE03800000007E07 +00000000780E000000003C3C000000001FF80000000007E0000000002B3A7EA630>I<1F +FFFFFF801FFFFFFF801FE000FF801F8000FF001F0001FE001E0003FC001C0003FC001C00 +07F8003C000FF0003C001FF00038001FE00038003FC00038007FC00038007F80003800FF +00000001FE00000001FE00000003FC00000007F80000000FF80000000FF00000001FE000 +00003FC00380003FC00380007F80038000FF00038001FF00038001FE00038003FC000780 +07FC00078007F80007000FF00007001FE0000F001FE0000F003FC0001F007F80007F00FF +8001FF00FFFFFFFF00FFFFFFFF0021277EA628>I<FFFFFFFFFFFFFFFFFFFFFFC0FFFFFF +FFFFFFFFFFFFFFFFC05A0280985B>124 D E /Fq 45 122 df<00000000FFFC00000000 +00001FFFFF800000000001FFFFFFE00000000007FFFFFFF0000000001FFFC00FF8000000 +007FFE0003FC00000000FFF00000FE00000001FFE00003FF00000003FF800007FF000000 +07FF00000FFF8000000FFE00001FFF8000000FFE00001FFF8000001FFC00001FFF800000 +1FFC00003FFFC000003FFC00001FFF8000003FF800001FFF8000003FF800001FFF800000 +3FF800001FFF8000003FF800000FFF0000003FF8000007FE0000003FF8000001F8000000 +3FF8000000000000003FF8000000000000003FF8000000000000003FF800000000000000 +3FF8000000000000003FF8000000000000003FF8000000000000003FF800000000000000 +3FF8000000000000003FF80003FFFFC000FFFFFFFFFFFFFFC000FFFFFFFFFFFFFFC000FF +FFFFFFFFFFFFC000FFFFFFFFFFFFFFC000FFFFFFFFFFFFFFC000003FFC000007FFC00000 +3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 +3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 +3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 +3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 +3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 +3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 +3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 +3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 +3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 +3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 +3FFC000003FFC000003FFC000003FFC0003FFFFFFC03FFFFFFC03FFFFFFC03FFFFFFC03F +FFFFFC03FFFFFFC03FFFFFFC03FFFFFFC03FFFFFFC03FFFFFFC042547DD34B>12 +D<FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0 +FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0240B7F9F2D>45 +D<000000780000000000FC0000000003FC0000000007FC000000001FFC00000000FFFC00 +00000FFFFC000007FFFFFC0000FFFFFFFC0000FFFFFFFC0000FFFF7FFC0000FFF07FFC00 +00F8007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 +0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 +0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 +0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 +0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 +0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 +0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 +0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 +0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 +0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 +0000007FFC00007FFFFFFFFFFE7FFFFFFFFFFE7FFFFFFFFFFE7FFFFFFFFFFE7FFFFFFFFF +FE2F4E76CD43>49 D<00003FFE0000000003FFFFE00000000FFFFFFC0000003FFFFFFF00 +0000FFFFFFFFC00001FFC07FFFE00003FE000FFFF80007F80003FFFC000FE00001FFFE00 +1FC00000FFFF003F8000007FFF003FF000007FFF807FF800003FFFC07FFC00003FFFC0FF +FE00001FFFE0FFFF00001FFFE0FFFF00001FFFE0FFFF00000FFFF0FFFF00000FFFF0FFFF +00000FFFF0FFFF00000FFFF0FFFF00000FFFF07FFE00000FFFF07FFE00000FFFF03FFC00 +000FFFF00FF000000FFFF003C000000FFFF0000000000FFFE0000000001FFFE000000000 +1FFFE0000000001FFFC0000000003FFFC0000000003FFF80000000003FFF80000000007F +FF00000000007FFE0000000000FFFC0000000001FFF80000000001FFF00000000003FFE0 +0000000003FFC00000000007FF80000000000FFF00000000001FFE00000000001FFC0000 +0000003FF800000000007FE00000000000FFC00000000001FF800000000003FE00000000 +0007FC000000000007F800000000000FF00001F000001FE00001F000003F800001F00000 +7F000001F00000FE000003E00001FC000003E00003F8000003E00007F0000003E0000FE0 +000003E0001F80000007E0003F00000007E0003E0000000FE0007FFFFFFFFFE000FFFFFF +FFFFC001FFFFFFFFFFC003FFFFFFFFFFC007FFFFFFFFFFC00FFFFFFFFFFFC01FFFFFFFFF +FFC03FFFFFFFFFFFC07FFFFFFFFFFFC0FFFFFFFFFFFFC0FFFFFFFFFFFF80FFFFFFFFFFFF +80FFFFFFFFFFFF80FFFFFFFFFFFF80344E79CD43>I<00000FFFC000000000FFFFFC0000 +0007FFFFFF8000001FFFFFFFE000003FF807FFF00000FF8001FFFC0001FE00007FFE0003 +F800003FFF0003F000003FFF8007FC00001FFF800FFF00001FFFC00FFF80001FFFC01FFF +C0001FFFE01FFFC0001FFFE01FFFC0001FFFE01FFFC0001FFFE01FFFE0001FFFE01FFFC0 +001FFFE01FFFC0001FFFE01FFFC0001FFFE00FFFC0001FFFC007FF80001FFFC003FF0000 +3FFFC001FC00003FFF80000000003FFF80000000007FFF00000000007FFE00000000007F +FE0000000000FFFC0000000001FFF80000000003FFF00000000007FFC0000000000FFF80 +00000000FFFE00000000FFFFF800000000FFFFE000000000FFFFFC00000000FFFFFF8000 +00000007FFE00000000001FFF800000000007FFE00000000003FFF00000000001FFF8000 +0000000FFFC0000000000FFFE00000000007FFF00000000007FFF00000000007FFF80000 +000007FFF80000000003FFFC0000000003FFFC0000000003FFFE0000000003FFFE03E000 +0003FFFE0FF8000003FFFE1FFC000003FFFE3FFE000003FFFE7FFF000003FFFEFFFF8000 +03FFFEFFFF800003FFFEFFFF800003FFFEFFFF800003FFFCFFFF800003FFFCFFFF800007 +FFFCFFFF800007FFF8FFFF000007FFF87FFF000007FFF07FFE00000FFFF03FFC00000FFF +E03FF000001FFFC01FE000003FFF800FF800007FFF0007FF0000FFFE0003FFF007FFFC00 +00FFFFFFFFF000007FFFFFFFE000001FFFFFFF80000003FFFFFC000000001FFF80000037 +4F7ACD43>I<00000000007C00000000000000FE00000000000000FE00000000000001FE +00000000000003FE00000000000007FE0000000000000FFE0000000000000FFE00000000 +00001FFE0000000000003FFE0000000000007FFE0000000000007FFE000000000000FFFE +000000000001FFFE000000000003FFFE000000000003FFFE000000000007FFFE00000000 +000FFFFE00000000001FBFFE00000000003F3FFE00000000003E3FFE00000000007C3FFE +0000000000FC3FFE0000000001F83FFE0000000001F03FFE0000000003E03FFE00000000 +07E03FFE000000000FC03FFE000000000F803FFE000000001F003FFE000000003F003FFE +000000007E003FFE000000007C003FFE00000000F8003FFE00000001F8003FFE00000003 +F0003FFE00000007E0003FFE00000007C0003FFE0000000F80003FFE0000001F80003FFE +0000003F00003FFE0000003E00003FFE0000007C00003FFE000000FC00003FFE000001F8 +00003FFE000001F000003FFE000003E000003FFE000007E000003FFE00000FC000003FFE +00001F8000003FFE00001F0000003FFE00003E0000003FFE00007E0000003FFE0000FC00 +00003FFE0000FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC0FFFFFFFFFFFF +FFC0FFFFFFFFFFFFFFC0000000007FFE0000000000007FFE0000000000007FFE00000000 +00007FFE0000000000007FFE0000000000007FFE0000000000007FFE0000000000007FFE +0000000000007FFE0000000000007FFE0000000000007FFE0000000000007FFE00000000 +00007FFE0000000000007FFE0000000000007FFE000000000FFFFFFFFFC000000FFFFFFF +FFC000000FFFFFFFFFC000000FFFFFFFFFC000000FFFFFFFFFC03A4F7CCE43>I<038000 +00000E0007E00000007E0007FE000003FE0007FFF0007FFE0007FFFFFFFFFC0007FFFFFF +FFF80007FFFFFFFFF00007FFFFFFFFE00007FFFFFFFFC00007FFFFFFFF800007FFFFFFFF +000007FFFFFFFE000007FFFFFFFC000007FFFFFFF0000007FFFFFFC0000007FFFFFF0000 +0007FFFFF800000007E1FF0000000007E0000000000007E0000000000007E00000000000 +07E0000000000007E0000000000007E0000000000007E0000000000007E0000000000007 +E0000000000007E0000000000007E0000000000007E00FFF00000007E07FFFF0000007E3 +FFFFFE000007E7FFFFFF800007FFF807FFC00007FFC001FFE00007FE0000FFF80007FC00 +007FFC0007F800003FFC0007F000003FFE0007E000001FFF0003C000001FFF8000000000 +1FFF80000000001FFFC0000000000FFFC0000000000FFFE0000000000FFFE0000000000F +FFE0000000000FFFE0000000000FFFF0000000000FFFF0000000000FFFF00FE000000FFF +F01FF000000FFFF03FF800000FFFF07FFC00000FFFF0FFFE00000FFFF0FFFE00000FFFF0 +FFFE00000FFFF0FFFE00000FFFF0FFFE00000FFFE0FFFE00000FFFE0FFFE00000FFFE0FF +FC00000FFFE07FF800001FFFC07FF000001FFFC07FE000001FFF803E0000003FFF803F00 +00003FFF001F8000007FFE001FC000007FFC000FE00000FFF80007F80001FFF00003FE00 +07FFE00001FFC03FFFC00000FFFFFFFF8000003FFFFFFE0000001FFFFFF800000003FFFF +C0000000007FF8000000344F79CD43>I<0000000FFF0000000000FFFFE000000007FFFF +F00000001FFFFFFC0000007FFE03FE000001FFF0007F000003FFC0003F800007FF00001F +80000FFE00007FC0001FFC0000FFC0003FF80001FFE0007FF00003FFE000FFF00007FFE0 +01FFE00007FFE001FFE00007FFE003FFC00007FFE007FFC00007FFE007FFC00007FFE00F +FFC00003FFC00FFF800001FF801FFF800000FF001FFF8000007E001FFF80000000003FFF +80000000003FFF80000000003FFF00000000007FFF00000000007FFF00000000007FFF00 +080000007FFF01FFF800007FFF07FFFF0000FFFF0FFFFFC000FFFF1FFFFFF000FFFF3F00 +7FF800FFFF3C003FFC00FFFF78001FFE00FFFFF0000FFF00FFFFF00007FF80FFFFE00007 +FFC0FFFFE00007FFC0FFFFC00007FFE0FFFFC00003FFF0FFFF800003FFF0FFFF800003FF +F8FFFF800003FFF8FFFF800003FFF8FFFF800003FFF8FFFF000003FFFCFFFF000003FFFC +FFFF000003FFFC7FFF000003FFFC7FFF000003FFFC7FFF000003FFFC7FFF000003FFFC7F +FF000003FFFC7FFF000003FFFC3FFF000003FFFC3FFF000003FFFC3FFF000003FFFC3FFF +000003FFFC1FFF000003FFF81FFF800003FFF81FFF800003FFF80FFF800003FFF80FFF80 +0003FFF007FF800007FFF007FF800007FFE003FFC00007FFC001FFC00007FFC001FFE000 +0FFF8000FFF0000FFF00007FF8001FFE00003FFC007FFC00001FFF01FFF800000FFFFFFF +F0000003FFFFFFC0000000FFFFFF000000003FFFFC0000000007FFC00000364F7ACD43> +I<1F000000000000001F800000000000001FC00000000000001FFF8000000000001FFFFF +FFFFFFFF801FFFFFFFFFFFFF801FFFFFFFFFFFFF801FFFFFFFFFFFFF803FFFFFFFFFFFFF +803FFFFFFFFFFFFF003FFFFFFFFFFFFE003FFFFFFFFFFFFC003FFFFFFFFFFFF8003FFFFF +FFFFFFF8003FFFFFFFFFFFF0003FFFFFFFFFFFE0003FFFFFFFFFFFC0007FFFFFFFFFFF80 +007F800000007F00007E00000000FF00007E00000001FE00007C00000003FC00007C0000 +0003F800007C00000007F000007C0000000FF000007C0000001FE00000F80000003FC000 +00F80000007F800000F80000007F000000F8000000FE00000000000001FE000000000000 +03FC00000000000003F800000000000007F00000000000000FF00000000000001FE00000 +000000001FE00000000000003FC00000000000003FC00000000000007F80000000000000 +FF80000000000000FF80000000000001FF00000000000001FF00000000000003FF000000 +00000003FE00000000000007FE00000000000007FE0000000000000FFE0000000000000F +FE0000000000000FFC0000000000001FFC0000000000001FFC0000000000003FFC000000 +0000003FFC0000000000003FFC0000000000003FFC0000000000007FFC0000000000007F +F80000000000007FF80000000000007FF8000000000000FFF8000000000000FFF8000000 +000000FFF8000000000000FFF8000000000000FFF8000000000001FFF8000000000001FF +F8000000000001FFF8000000000001FFF8000000000001FFF8000000000001FFF8000000 +000001FFF8000000000001FFF8000000000001FFF8000000000001FFF8000000000001FF +F8000000000001FFF8000000000000FFF0000000000000FFF00000000000003FC0000000 +0000001F8000000000395279D043>I<000007FFC0000000007FFFFC00000003FFFFFF80 +00000FFFFFFFE000001FFC01FFF800003FE0003FFC00007F80000FFE0000FF000007FF00 +01FE000003FF0003FC000001FF8007FC000001FFC007F8000000FFC00FF8000000FFC00F +F8000000FFE00FF80000007FE00FF80000007FE01FF80000007FE01FFC0000007FE01FFC +0000007FE01FFE0000007FE01FFF0000007FE01FFF800000FFE01FFFE00000FFC01FFFF8 +0000FFC01FFFFE0001FF800FFFFF0001FF800FFFFFC003FF000FFFFFF007FE0007FFFFF8 +07FC0007FFFFFE1FF80003FFFFFFBFF00001FFFFFFFFE00001FFFFFFFF800000FFFFFFFE +0000007FFFFFFF0000003FFFFFFF8000000FFFFFFFE0000007FFFFFFF0000001FFFFFFFC +000007FFFFFFFE00001FFFFFFFFF00003FFFFFFFFF8000FFE7FFFFFF8001FF81FFFFFFC0 +03FF007FFFFFE007FE001FFFFFF00FFC000FFFFFF01FF80003FFFFF01FF80000FFFFF83F +F000007FFFF83FF000001FFFF87FE0000007FFFC7FE0000001FFFC7FE0000000FFFCFFC0 +0000007FFCFFC00000003FFCFFC00000003FFCFFC00000001FFCFFC00000001FFCFFC000 +00000FFCFFC00000000FFCFFC00000000FF8FFC00000000FF8FFE00000000FF87FE00000 +000FF07FF00000001FF07FF00000001FF03FF80000003FE01FF80000003FC01FFC000000 +7FC00FFE000000FF8007FF800003FF0003FFE0000FFE0001FFFC00FFFC00007FFFFFFFF0 +00003FFFFFFFE000000FFFFFFF80000001FFFFFC000000000FFFC00000364F7ACD43>I< +00000FFF8000000000FFFFF800000003FFFFFE0000000FFFFFFF8000001FFF03FFC00000 +7FF800FFE00000FFF0003FF00001FFE0001FF80003FFC0001FFC0007FFC0000FFE000FFF +80000FFF000FFF800007FF001FFF800007FF803FFF800007FF803FFF000007FFC07FFF00 +0007FFC07FFF000003FFE07FFF000003FFE07FFF000003FFF0FFFF000003FFF0FFFF0000 +03FFF0FFFF000003FFF0FFFF000003FFF8FFFF000003FFF8FFFF000003FFF8FFFF000003 +FFF8FFFF000003FFF8FFFF000003FFF8FFFF000003FFFCFFFF000003FFFCFFFF000003FF +FCFFFF000003FFFC7FFF000007FFFC7FFF000007FFFC7FFF000007FFFC3FFF000007FFFC +3FFF000007FFFC3FFF00000FFFFC1FFF80000FFFFC0FFF80001FFFFC0FFF80001FFFFC07 +FF80003FFFFC03FFC0003FFFFC01FFE0007BFFFC00FFF000F3FFFC007FF803F3FFFC001F +FFFFE3FFFC000FFFFFC3FFFC0003FFFF83FFF800007FFE03FFF80000004003FFF8000000 +0003FFF80000000003FFF80000000003FFF00000000007FFF00000000007FFF000000000 +07FFF001F8000007FFE003FC000007FFE007FE000007FFC00FFF000007FFC01FFF80000F +FF801FFF80000FFF801FFF80000FFF001FFF80001FFF001FFF80001FFE001FFF80003FFC +001FFF00003FFC000FFE00007FF8000FFC0000FFF0000FF80001FFE00007F00003FFC000 +03FC000FFF800003FF807FFE000001FFFFFFFC0000007FFFFFF00000003FFFFFC0000000 +0FFFFE0000000000FFF0000000364F7ACD43>I<00000000001F00000000000000000000 +003F80000000000000000000007FC0000000000000000000007FC0000000000000000000 +00FFE000000000000000000000FFE000000000000000000000FFE0000000000000000000 +01FFF000000000000000000001FFF000000000000000000003FFF8000000000000000000 +03FFF800000000000000000003FFF800000000000000000007FFFC000000000000000000 +07FFFC00000000000000000007FFFC0000000000000000000FFFFE000000000000000000 +0FFFFE0000000000000000001FFFFF0000000000000000001FFFFF000000000000000000 +1FFFFF0000000000000000003FFFFF8000000000000000003F7FFF800000000000000000 +7F7FFFC000000000000000007E7FFFC000000000000000007E3FFFC00000000000000000 +FE3FFFE00000000000000000FC1FFFE00000000000000001FC1FFFF00000000000000001 +F81FFFF00000000000000001F80FFFF00000000000000003F80FFFF80000000000000003 +F007FFF80000000000000007F007FFFC0000000000000007E007FFFC0000000000000007 +E003FFFC000000000000000FE003FFFE000000000000000FC001FFFE000000000000001F +C001FFFF000000000000001F8001FFFF000000000000001F8000FFFF000000000000003F +8000FFFF800000000000003F00007FFF800000000000007F00007FFFC00000000000007E +00007FFFC00000000000007E00003FFFC0000000000000FE00003FFFE0000000000000FC +00001FFFE0000000000001FC00001FFFF0000000000001F800001FFFF0000000000001F8 +00000FFFF0000000000003F800000FFFF8000000000003F0000007FFF8000000000007F0 +000007FFFC000000000007E0000007FFFC000000000007E0000003FFFC00000000000FFF +FFFFFFFFFE00000000000FFFFFFFFFFFFE00000000001FFFFFFFFFFFFF00000000001FFF +FFFFFFFFFF00000000001FFFFFFFFFFFFF00000000003F80000000FFFF80000000003F00 +0000007FFF80000000007F000000007FFFC0000000007F000000007FFFC0000000007E00 +0000003FFFC000000000FE000000003FFFE000000000FC000000001FFFE000000001FC00 +0000001FFFF000000001FC000000001FFFF000000001F8000000000FFFF000000003F800 +0000000FFFF800000003F00000000007FFF800000007F00000000007FFFC00000007F000 +00000007FFFC00000007E00000000003FFFC0000000FE00000000003FFFE0000000FC000 +00000003FFFE0000001FC00000000001FFFF000000FFFC0000000001FFFF0000FFFFFFF8 +00000FFFFFFFFFE0FFFFFFF800000FFFFFFFFFE0FFFFFFF800000FFFFFFFFFE0FFFFFFF8 +00000FFFFFFFFFE0FFFFFFF800000FFFFFFFFFE05B547BD366>65 +D<0000000001FFFC000001C0000000007FFFFFC00003C000000007FFFFFFF80007C00000 +003FFFFFFFFE001FC0000000FFFFFFFFFF803FC0000003FFFFE003FFC07FC000000FFFFC +00003FF0FFC000003FFFE000000FF9FFC000007FFF80000003FFFFC00001FFFE00000000 +FFFFC00003FFF8000000007FFFC00007FFF0000000003FFFC0000FFFE0000000001FFFC0 +001FFFC0000000000FFFC0003FFF800000000007FFC0007FFF000000000003FFC000FFFE +000000000001FFC000FFFE000000000001FFC001FFFC000000000000FFC003FFF8000000 +000000FFC003FFF80000000000007FC007FFF00000000000007FC00FFFF0000000000000 +3FC00FFFF00000000000003FC01FFFE00000000000001FC01FFFE00000000000001FC01F +FFE00000000000001FC03FFFC00000000000001FC03FFFC00000000000000FC03FFFC000 +00000000000FC07FFFC00000000000000FC07FFFC00000000000000FC07FFFC000000000 +000000007FFF8000000000000000007FFF800000000000000000FFFF8000000000000000 +00FFFF800000000000000000FFFF800000000000000000FFFF800000000000000000FFFF +800000000000000000FFFF800000000000000000FFFF800000000000000000FFFF800000 +000000000000FFFF800000000000000000FFFF800000000000000000FFFF800000000000 +000000FFFF800000000000000000FFFF800000000000000000FFFF800000000000000000 +7FFF8000000000000000007FFF8000000000000000007FFFC000000000000000007FFFC0 +00000000000000007FFFC000000000000007C03FFFC000000000000007C03FFFC0000000 +00000007C03FFFC000000000000007C01FFFE000000000000007C01FFFE0000000000000 +07C01FFFE00000000000000FC00FFFF00000000000000F800FFFF00000000000000F8007 +FFF00000000000001F8003FFF80000000000001F8003FFF80000000000001F0001FFFC00 +00000000003F0000FFFE0000000000007E0000FFFE0000000000007E00007FFF00000000 +0000FC00003FFF800000000001F800001FFFC00000000003F800000FFFE00000000007F0 +000007FFF0000000000FE0000003FFFC000000001FC0000001FFFE000000007F80000000 +7FFF80000000FF000000003FFFE0000007FE000000000FFFFE00001FF80000000003FFFF +E001FFF00000000000FFFFFFFFFFC000000000003FFFFFFFFF00000000000007FFFFFFFC +000000000000007FFFFFE00000000000000001FFFC00000000525479D261>67 +D<FFFFFFFFFFFFFF8000000000FFFFFFFFFFFFFFFC00000000FFFFFFFFFFFFFFFF800000 +00FFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFFFFFC0000000007FFF000000FFFFF0000 +000007FFF0000000FFFFC000000007FFF00000001FFFE000000007FFF000000007FFF800 +000007FFF000000001FFFC00000007FFF000000000FFFE00000007FFF0000000007FFF00 +000007FFF0000000003FFF80000007FFF0000000001FFFC0000007FFF0000000000FFFC0 +000007FFF00000000007FFE0000007FFF00000000003FFF0000007FFF00000000003FFF8 +000007FFF00000000001FFF8000007FFF00000000001FFFC000007FFF00000000000FFFC +000007FFF00000000000FFFE000007FFF00000000000FFFE000007FFF000000000007FFF +000007FFF000000000007FFF000007FFF000000000007FFF000007FFF000000000007FFF +800007FFF000000000003FFF800007FFF000000000003FFF800007FFF000000000003FFF +C00007FFF000000000003FFFC00007FFF000000000003FFFC00007FFF000000000003FFF +C00007FFF000000000003FFFC00007FFF000000000003FFFE00007FFF000000000003FFF +E00007FFF000000000003FFFE00007FFF000000000001FFFE00007FFF000000000001FFF +E00007FFF000000000001FFFE00007FFF000000000001FFFE00007FFF000000000001FFF +E00007FFF000000000001FFFE00007FFF000000000001FFFE00007FFF000000000001FFF +E00007FFF000000000001FFFE00007FFF000000000003FFFE00007FFF000000000003FFF +E00007FFF000000000003FFFE00007FFF000000000003FFFC00007FFF000000000003FFF +C00007FFF000000000003FFFC00007FFF000000000003FFFC00007FFF000000000003FFF +C00007FFF000000000003FFF800007FFF000000000003FFF800007FFF000000000007FFF +800007FFF000000000007FFF000007FFF000000000007FFF000007FFF000000000007FFF +000007FFF00000000000FFFE000007FFF00000000000FFFE000007FFF00000000000FFFC +000007FFF00000000001FFFC000007FFF00000000001FFF8000007FFF00000000003FFF0 +000007FFF00000000007FFF0000007FFF00000000007FFE0000007FFF0000000000FFFC0 +000007FFF0000000001FFF80000007FFF0000000003FFF00000007FFF000000000FFFE00 +000007FFF000000001FFFC00000007FFF000000007FFF800000007FFF00000001FFFF000 +000007FFF0000000FFFFC000000007FFF000000FFFFF000000FFFFFFFFFFFFFFFFFE0000 +00FFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFFFFC0000000FFFFFFFFFFFFFFFC000000 +00FFFFFFFFFFFFFF80000000005B527CD167>I<FFFFFFFFFFFFFFFFFF80FFFFFFFFFFFF +FFFFFF80FFFFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFFFF800007 +FFF8000001FFFFC00007FFF80000001FFFC00007FFF800000007FFC00007FFF800000001 +FFC00007FFF800000000FFC00007FFF8000000007FC00007FFF8000000003FC00007FFF8 +000000001FC00007FFF8000000001FC00007FFF8000000000FE00007FFF8000000000FE0 +0007FFF80000000007E00007FFF80000000007E00007FFF80000000007E00007FFF80000 +000003E00007FFF80000000003E00007FFF80000000003E00007FFF80000F80003E00007 +FFF80000F80003F00007FFF80000F80001F00007FFF80000F80001F00007FFF80000F800 +01F00007FFF80000F80001F00007FFF80000F80000000007FFF80001F80000000007FFF8 +0001F80000000007FFF80001F80000000007FFF80003F80000000007FFF80007F8000000 +0007FFF8000FF80000000007FFF8007FF80000000007FFFFFFFFF80000000007FFFFFFFF +F80000000007FFFFFFFFF80000000007FFFFFFFFF80000000007FFFFFFFFF80000000007 +FFF8007FF80000000007FFF8000FF80000000007FFF80007F80000000007FFF80003F800 +00000007FFF80001F80000000007FFF80001F80000000007FFF80001F80000000007FFF8 +0000F80000000007FFF80000F800003E0007FFF80000F800003E0007FFF80000F800003E +0007FFF80000F800007C0007FFF80000F800007C0007FFF80000F800007C0007FFF80000 +0000007C0007FFF800000000007C0007FFF80000000000FC0007FFF80000000000FC0007 +FFF80000000000F80007FFF80000000000F80007FFF80000000001F80007FFF800000000 +01F80007FFF80000000001F80007FFF80000000003F80007FFF80000000003F00007FFF8 +0000000007F00007FFF8000000000FF00007FFF8000000000FF00007FFF8000000001FF0 +0007FFF8000000003FF00007FFF8000000007FE00007FFF800000001FFE00007FFF80000 +0007FFE00007FFF80000001FFFE00007FFF8000003FFFFE0FFFFFFFFFFFFFFFFFFE0FFFF +FFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFF +FFC04F517CD058>I<FFFFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFFFE00FFFFFFFFFFFFFF +FFFE00FFFFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFFFE000007FFF8000007FFFF000007FF +F80000007FFF000007FFF80000001FFF000007FFF800000007FF000007FFF800000003FF +000007FFF800000001FF000007FFF800000000FF000007FFF8000000007F000007FFF800 +0000003F000007FFF8000000003F800007FFF8000000003F800007FFF8000000001F8000 +07FFF8000000001F800007FFF8000000001F800007FFF8000000000F800007FFF8000000 +000F800007FFF8000000000F800007FFF8000000000F800007FFF8000000000FC00007FF +F80000F80007C00007FFF80000F80007C00007FFF80000F80007C00007FFF80000F80007 +C00007FFF80000F80000000007FFF80000F80000000007FFF80000F80000000007FFF800 +01F80000000007FFF80001F80000000007FFF80001F80000000007FFF80003F800000000 +07FFF80007F80000000007FFF8000FF80000000007FFF8007FF80000000007FFFFFFFFF8 +0000000007FFFFFFFFF80000000007FFFFFFFFF80000000007FFFFFFFFF80000000007FF +FFFFFFF80000000007FFF8007FF80000000007FFF8000FF80000000007FFF80007F80000 +000007FFF80003F80000000007FFF80001F80000000007FFF80001F80000000007FFF800 +01F80000000007FFF80000F80000000007FFF80000F80000000007FFF80000F800000000 +07FFF80000F80000000007FFF80000F80000000007FFF80000F80000000007FFF80000F8 +0000000007FFF80000000000000007FFF80000000000000007FFF80000000000000007FF +F80000000000000007FFF80000000000000007FFF80000000000000007FFF80000000000 +000007FFF80000000000000007FFF80000000000000007FFF80000000000000007FFF800 +00000000000007FFF80000000000000007FFF80000000000000007FFF800000000000000 +07FFF80000000000000007FFF80000000000000007FFF80000000000000007FFF8000000 +0000000007FFF8000000000000FFFFFFFFFFF800000000FFFFFFFFFFF800000000FFFFFF +FFFFF800000000FFFFFFFFFFF800000000FFFFFFFFFFF8000000004A517CD055>I<FFFF +FFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC00007FFF800000007 +FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 +FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 +FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 +FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 +FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 +FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 +FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 +FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 +FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 +FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 +FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 +FFF800000007FFF800000007FFF800000007FFF800000007FFF80000FFFFFFFFFFC0FFFF +FFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC02A527CD132>73 +D<FFFFFFFFFFF8000000FFFFFFFFFFF8000000FFFFFFFFFFF8000000FFFFFFFFFFF80000 +00FFFFFFFFFFF80000000007FFF800000000000007FFF800000000000007FFF800000000 +000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 +000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 +000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 +000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 +000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 +000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 +000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 +000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 +000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 +000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 +000007FFF800000000000007FFF800000000000007FFF8000000007C0007FFF800000000 +7C0007FFF8000000007C0007FFF8000000007C0007FFF800000000FC0007FFF800000000 +F80007FFF800000000F80007FFF800000000F80007FFF800000000F80007FFF800000000 +F80007FFF800000001F80007FFF800000001F80007FFF800000001F80007FFF800000003 +F80007FFF800000003F80007FFF800000007F80007FFF800000007F00007FFF80000000F +F00007FFF80000000FF00007FFF80000001FF00007FFF80000003FF00007FFF80000007F +F00007FFF8000000FFF00007FFF8000003FFF00007FFF8000007FFF00007FFF800003FFF +F00007FFF80001FFFFF0FFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFF +E0FFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFE046527CD151>76 D<FFFFFFFFFFFFFF0000 +00FFFFFFFFFFFFFFF80000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFE000FFFFFFFFFF +FFFFFFF0000007FFF000001FFFFC000007FFF0000001FFFF000007FFF00000007FFF8000 +07FFF00000003FFFC00007FFF00000000FFFE00007FFF00000000FFFF00007FFF0000000 +07FFF00007FFF000000003FFF80007FFF000000003FFFC0007FFF000000003FFFC0007FF +F000000001FFFE0007FFF000000001FFFE0007FFF000000001FFFE0007FFF000000001FF +FE0007FFF000000001FFFF0007FFF000000001FFFF0007FFF000000001FFFF0007FFF000 +000001FFFF0007FFF000000001FFFF0007FFF000000001FFFF0007FFF000000001FFFF00 +07FFF000000001FFFF0007FFF000000001FFFE0007FFF000000001FFFE0007FFF0000000 +01FFFE0007FFF000000001FFFC0007FFF000000003FFFC0007FFF000000003FFFC0007FF +F000000003FFF80007FFF000000007FFF00007FFF00000000FFFE00007FFF00000001FFF +E00007FFF00000003FFFC00007FFF00000007FFF000007FFF0000001FFFE000007FFF000 +001FFFFC000007FFFFFFFFFFFFF0000007FFFFFFFFFFFFC0000007FFFFFFFFFFFE000000 +07FFFFFFFFFFE000000007FFF80000000000000007FFF80000000000000007FFF8000000 +0000000007FFF80000000000000007FFF80000000000000007FFF80000000000000007FF +F80000000000000007FFF80000000000000007FFF80000000000000007FFF80000000000 +000007FFF80000000000000007FFF80000000000000007FFF80000000000000007FFF800 +00000000000007FFF80000000000000007FFF80000000000000007FFF800000000000000 +07FFF80000000000000007FFF80000000000000007FFF80000000000000007FFF8000000 +0000000007FFF80000000000000007FFF80000000000000007FFF80000000000000007FF +F80000000000000007FFF80000000000000007FFF80000000000000007FFF80000000000 +000007FFF80000000000000007FFF80000000000000007FFF80000000000000007FFF800 +0000000000FFFFFFFFFFC000000000FFFFFFFFFFC000000000FFFFFFFFFFC000000000FF +FFFFFFFFC000000000FFFFFFFFFFC00000000050527CD15C>80 D<00000FFF8000070000 +00FFFFF8000F000007FFFFFF001F00001FFFFFFFC03F00003FFFFFFFF07F0000FFFC00FF +F8FF0001FFE0000FFDFF0003FF800001FFFF0007FE0000007FFF000FFC0000003FFF000F +F80000000FFF001FF800000007FF001FF000000003FF003FF000000003FF003FE0000000 +01FF007FE000000000FF007FE000000000FF007FE0000000007F00FFE0000000007F00FF +E0000000003F00FFE0000000003F00FFF0000000003F00FFF0000000003F00FFF8000000 +001F00FFF8000000001F00FFFC000000001F00FFFE000000001F00FFFF000000000000FF +FFC000000000007FFFF000000000007FFFFF00000000007FFFFFF8000000003FFFFFFF80 +0000003FFFFFFFFC0000001FFFFFFFFFC000001FFFFFFFFFF000000FFFFFFFFFFC000007 +FFFFFFFFFF000003FFFFFFFFFFC00001FFFFFFFFFFE00000FFFFFFFFFFF000007FFFFFFF +FFF800003FFFFFFFFFFC00000FFFFFFFFFFE000003FFFFFFFFFE000000FFFFFFFFFF0000 +001FFFFFFFFF80000000FFFFFFFF800000000FFFFFFFC0000000007FFFFFC00000000007 +FFFFE00000000000FFFFE000000000003FFFE000000000000FFFF0000000000007FFF000 +0000000003FFF0000000000003FFF0780000000001FFF0F80000000000FFF0F800000000 +00FFF0F80000000000FFF0F800000000007FF0F800000000007FF0FC00000000007FF0FC +00000000007FF0FC00000000007FE0FE00000000007FE0FE00000000007FE0FF00000000 +00FFC0FF0000000000FFC0FF8000000000FFC0FFC000000001FF80FFE000000001FF00FF +F000000003FF00FFFC00000007FE00FFFF0000000FFC00FFFFC000001FF800FFFFF80000 +7FF000FF1FFFC003FFE000FE0FFFFFFFFFC000FC03FFFFFFFF0000F8007FFFFFFC0000F0 +000FFFFFF00000E000007FFF0000003C5479D24B>83 D<3FFFFFFFFFFFFFFFFFFF803FFF +FFFFFFFFFFFFFFFF803FFFFFFFFFFFFFFFFFFF803FFFFFFFFFFFFFFFFFFF803FFFFFFFFF +FFFFFFFFFF803FFFC0003FFFC0007FFF803FFE00003FFFC00007FF807FF800003FFFC000 +01FFC07FE000003FFFC00000FFC07FC000003FFFC000007FC07F8000003FFFC000003FC0 +7F0000003FFFC000001FC07F0000003FFFC000001FC07E0000003FFFC000000FC07E0000 +003FFFC000000FC07E0000003FFFC000000FC07C0000003FFFC0000007C07C0000003FFF +C0000007C07C0000003FFFC0000007C07C0000003FFFC0000007C07C0000003FFFC00000 +07C0FC0000003FFFC0000007E0F80000003FFFC0000003E0F80000003FFFC0000003E0F8 +0000003FFFC0000003E0F80000003FFFC0000003E0F80000003FFFC0000003E0F8000000 +3FFFC0000003E0000000003FFFC000000000000000003FFFC000000000000000003FFFC0 +00000000000000003FFFC000000000000000003FFFC000000000000000003FFFC0000000 +00000000003FFFC000000000000000003FFFC000000000000000003FFFC0000000000000 +00003FFFC000000000000000003FFFC000000000000000003FFFC000000000000000003F +FFC000000000000000003FFFC000000000000000003FFFC000000000000000003FFFC000 +000000000000003FFFC000000000000000003FFFC000000000000000003FFFC000000000 +000000003FFFC000000000000000003FFFC000000000000000003FFFC000000000000000 +003FFFC000000000000000003FFFC000000000000000003FFFC000000000000000003FFF +C000000000000000003FFFC000000000000000003FFFC000000000000000003FFFC00000 +0000000000003FFFC000000000000000003FFFC000000000000000003FFFC00000000000 +0000003FFFC000000000000000003FFFC000000000000000003FFFC00000000000000000 +3FFFC000000000000000003FFFC000000000000000003FFFC000000000000000003FFFC0 +00000000000000003FFFC000000000000000003FFFC000000000000000003FFFC0000000 +00000000003FFFC000000000000000003FFFC000000000000000003FFFC0000000000000 +00003FFFC000000000000000003FFFC000000000000000003FFFC0000000000000FFFFFF +FFFFFFF000000000FFFFFFFFFFFFF000000000FFFFFFFFFFFFF000000000FFFFFFFFFFFF +F000000000FFFFFFFFFFFFF0000053517BD05E>I<FFFFFFFFFE0000001FFFFFFEFFFFFF +FFFE0000001FFFFFFEFFFFFFFFFE0000001FFFFFFEFFFFFFFFFE0000001FFFFFFEFFFFFF +FFFE0000001FFFFFFE001FFFF000000000003FFE00001FFFF0000000000007F000000FFF +F0000000000007E000000FFFF800000000000FE0000007FFF800000000000FC0000007FF +FC00000000000FC0000007FFFC00000000001FC0000003FFFE00000000001F80000003FF +FE00000000003F80000001FFFE00000000003F00000001FFFF00000000007F00000000FF +FF00000000007E00000000FFFF80000000007E00000000FFFF8000000000FE000000007F +FFC000000000FC000000007FFFC000000001FC000000003FFFE000000001F8000000003F +FFE000000003F8000000001FFFE000000003F0000000001FFFF000000007F0000000001F +FFF000000007F0000000000FFFF800000007E0000000000FFFF80000000FE00000000007 +FFFC0000000FC00000000007FFFC0000001FC00000000003FFFC0000001F800000000003 +FFFE0000003F800000000003FFFE0000003F800000000001FFFF0000003F000000000001 +FFFF0000007F000000000000FFFF8000007E000000000000FFFF800000FE000000000000 +7FFF800000FC0000000000007FFFC00001FC0000000000007FFFC00001FC000000000000 +3FFFE00001F80000000000003FFFE00003F80000000000001FFFF00003F0000000000000 +1FFFF00007F00000000000000FFFF00007E00000000000000FFFF8000FE0000000000000 +0FFFF8000FE000000000000007FFFC000FC000000000000007FFFC001FC0000000000000 +03FFFE001F8000000000000003FFFE003F8000000000000001FFFE003F00000000000000 +01FFFF007F0000000000000001FFFF007F0000000000000000FFFF807E00000000000000 +00FFFF80FE00000000000000007FFFC0FC00000000000000007FFFC1FC00000000000000 +003FFFC1F800000000000000003FFFE3F800000000000000001FFFE3F000000000000000 +001FFFF3F000000000000000001FFFF7F000000000000000000FFFFFE000000000000000 +000FFFFFE0000000000000000007FFFFC0000000000000000007FFFFC000000000000000 +0003FFFF80000000000000000003FFFF80000000000000000003FFFF8000000000000000 +0001FFFF00000000000000000001FFFF00000000000000000000FFFE0000000000000000 +0000FFFE000000000000000000007FFC000000000000000000007FFC0000000000000000 +00007FFC000000000000000000003FF8000000000000000000003FF80000000000000000 +00001FF0000000000000000000001FF0000000000000000000000FE00000000000000000 +000007C000000000005F537DD166>86 D<00007FFF000000000007FFFFF0000000003FFF +FFFE00000000FFFFFFFF80000001FFE00FFFC0000003FE0001FFF0000007FF0000FFF800 +0007FF80003FFC00000FFF80003FFE00000FFFC0001FFE00000FFFC0001FFF00000FFFC0 +000FFF80000FFFC0000FFF80000FFFC0000FFF800007FF800007FFC00007FF800007FFC0 +0003FF000007FFC00001FE000007FFC0000000000007FFC0000000000007FFC000000000 +0007FFC0000000000007FFC0000000000007FFC0000000000007FFC0000000007FFFFFC0 +0000000FFFFFFFC0000000FFFFFFFFC0000007FFFF87FFC000003FFFF007FFC000007FFF +8007FFC00001FFFC0007FFC00003FFF00007FFC00007FFE00007FFC0000FFFC00007FFC0 +001FFF800007FFC0003FFF000007FFC0007FFF000007FFC0007FFE000007FFC0007FFE00 +0007FFC000FFFC000007FFC000FFFC000007FFC000FFFC000007FFC000FFFC000007FFC0 +00FFFC00000FFFC000FFFC00000FFFC000FFFE00001FFFC0007FFE00001DFFC0007FFE00 +003DFFC0003FFF000079FFE0001FFF8000F1FFF8000FFFC003E1FFFFE007FFF81FC0FFFF +F003FFFFFF807FFFF000FFFFFF001FFFF0001FFFFC0007FFE00001FFE0000000003C387C +B641>97 D<003FF0000000000000FFFFF0000000000000FFFFF0000000000000FFFFF000 +0000000000FFFFF0000000000000FFFFF000000000000003FFF000000000000000FFF000 +000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 +000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 +000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 +000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 +000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 +000000000000FFF000000000000000FFF001FFE000000000FFF00FFFFE00000000FFF03F +FFFFC0000000FFF0FFFFFFF0000000FFF3FF01FFF8000000FFF7F8003FFE000000FFFFE0 +000FFF000000FFFF800007FF800000FFFF000003FFC00000FFFE000001FFE00000FFFC00 +0001FFF00000FFF8000000FFF80000FFF8000000FFF80000FFF80000007FFC0000FFF800 +00007FFC0000FFF80000007FFE0000FFF80000007FFE0000FFF80000007FFF0000FFF800 +00003FFF0000FFF80000003FFF0000FFF80000003FFF0000FFF80000003FFF8000FFF800 +00003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF800 +00003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF800 +00003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF0000FFF800 +00003FFF0000FFF80000003FFF0000FFF80000003FFF0000FFF80000007FFE0000FFF800 +00007FFE0000FFF80000007FFE0000FFF80000007FFC0000FFF8000000FFFC0000FFF800 +0000FFF80000FFFC000001FFF00000FFFC000001FFF00000FFFE000003FFE00000FFFF00 +0007FFC00000FFFF80000FFF800000FFCFC0001FFF000000FF87F0007FFC000000FF03FE +03FFF8000000FE00FFFFFFE0000000FC007FFFFF80000000F8001FFFFC00000000000003 +FFC000000041547BD24B>I<000001FFF8000000001FFFFF80000000FFFFFFF0000003FF +FFFFFC00000FFFC00FFE00001FFE0001FF00007FFC0003FF8000FFF00007FF8001FFF000 +07FFC003FFE0000FFFC003FFC0000FFFC007FFC0000FFFC00FFF80000FFFC00FFF80000F +FFC01FFF800007FF801FFF000007FF803FFF000003FF003FFF000001FE007FFF00000000 +007FFE00000000007FFE00000000007FFE0000000000FFFE0000000000FFFE0000000000 +FFFE0000000000FFFE0000000000FFFE0000000000FFFE0000000000FFFE0000000000FF +FE0000000000FFFE0000000000FFFE0000000000FFFE0000000000FFFE0000000000FFFE +00000000007FFE00000000007FFF00000000007FFF00000000003FFF00000000003FFF00 +000000003FFF00000003E01FFF80000003E01FFF80000007E00FFFC0000007C007FFC000 +0007C007FFE000000FC003FFE000001F8001FFF000003F0000FFF800007E00007FFE0000 +FC00003FFF0003F800000FFFE01FF0000003FFFFFFE0000000FFFFFF800000003FFFFE00 +00000001FFE0000033387CB63C>I<000000000001FF80000000000007FFFF8000000000 +0007FFFF80000000000007FFFF80000000000007FFFF80000000000007FFFF8000000000 +00001FFF8000000000000007FF8000000000000007FF8000000000000007FF8000000000 +000007FF8000000000000007FF8000000000000007FF8000000000000007FF8000000000 +000007FF8000000000000007FF8000000000000007FF8000000000000007FF8000000000 +000007FF8000000000000007FF8000000000000007FF8000000000000007FF8000000000 +000007FF8000000000000007FF8000000000000007FF8000000000000007FF8000000000 +000007FF8000000000000007FF8000000000000007FF8000000001FFE007FF800000001F +FFFC07FF80000000FFFFFF07FF80000003FFFFFFC7FF8000000FFFE03FE7FF8000001FFF +0007F7FF8000007FFC0001FFFF800000FFF80000FFFF800001FFF000003FFF800003FFE0 +00001FFF800007FFC000001FFF800007FFC000000FFF80000FFF8000000FFF80001FFF80 +00000FFF80001FFF0000000FFF80003FFF0000000FFF80003FFF0000000FFF80003FFF00 +00000FFF80007FFE0000000FFF80007FFE0000000FFF80007FFE0000000FFF80007FFE00 +00000FFF8000FFFE0000000FFF8000FFFE0000000FFF8000FFFE0000000FFF8000FFFE00 +00000FFF8000FFFE0000000FFF8000FFFE0000000FFF8000FFFE0000000FFF8000FFFE00 +00000FFF8000FFFE0000000FFF8000FFFE0000000FFF8000FFFE0000000FFF8000FFFE00 +00000FFF80007FFE0000000FFF80007FFE0000000FFF80007FFE0000000FFF80003FFF00 +00000FFF80003FFF0000000FFF80003FFF0000000FFF80001FFF0000000FFF80001FFF00 +00000FFF80000FFF8000000FFF80000FFF8000001FFF800007FFC000003FFF800003FFC0 +00003FFF800001FFE000007FFF800000FFF00001FFFF8000007FF80003FFFFE000003FFE +000FEFFFFF80000FFFC07FCFFFFF800007FFFFFF8FFFFF800001FFFFFE0FFFFF8000003F +FFF80FFFFF80000003FFC00FFE000041547CD24B>I<000003FFC0000000003FFFFC0000 +0001FFFFFF00000007FFFFFFC000000FFF81FFE000003FFC007FF800007FF8003FFC0000 +FFF0001FFE0001FFE0000FFE0003FFC00007FF0007FFC00007FF800FFF800003FF800FFF +800003FFC01FFF800001FFC01FFF000001FFC03FFF000001FFE03FFF000001FFE07FFF00 +0000FFE07FFE000000FFE07FFE000000FFF07FFE000000FFF0FFFE000000FFF0FFFE0000 +00FFF0FFFE000000FFF0FFFE000000FFF0FFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFFFF +FFF0FFFFFFFFFFFFE0FFFE0000000000FFFE0000000000FFFE0000000000FFFE00000000 +00FFFE0000000000FFFE00000000007FFE00000000007FFE00000000007FFF0000000000 +3FFF00000000003FFF00000000003FFF00000000E01FFF00000001F01FFF80000003F00F +FF80000003F007FFC0000007E007FFC0000007E003FFE000000FC001FFF000001FC000FF +F800003F80007FFC0000FF00001FFE0003FE00000FFFC03FF8000003FFFFFFF0000000FF +FFFFC00000001FFFFE0000000001FFF0000034387CB63D>I<0000003FFC00000003FFFF +0000000FFFFFC000003FFFFFE00000FFF81FF00001FFC03FF80003FF807FF80007FF00FF +FC000FFE00FFFC001FFC00FFFC001FFC00FFFC003FF800FFFC003FF800FFFC003FF8007F +F8007FF0007FF8007FF0003FF0007FF0000FC0007FF0000000007FF0000000007FF00000 +00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000 +00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000FFFFFFFFE0 +00FFFFFFFFE000FFFFFFFFE000FFFFFFFFE000FFFFFFFFE000007FF8000000007FF80000 +00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000 +00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000 +00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000 +00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000 +00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000 +00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000 +00007FF8000000007FF8000000007FF8000000007FF8000000007FF80000007FFFFFFE00 +007FFFFFFE00007FFFFFFE00007FFFFFFE00007FFFFFFE00002E547CD329>I<00003FFF +0000FF000003FFFFF007FFC0000FFFFFFC1FFFE0003FFFFFFF7FFFE0007FFC0FFFFF9FF0 +00FFE001FFF83FF001FFC000FFE03FF003FF80007FF01FF007FF00003FF81FE00FFF0000 +3FFC0FC00FFF00003FFC07801FFE00001FFE00001FFE00001FFE00003FFE00001FFF0000 +3FFE00001FFF00003FFE00001FFF00003FFE00001FFF00003FFE00001FFF00003FFE0000 +1FFF00003FFE00001FFF00003FFE00001FFF00003FFE00001FFF00001FFE00001FFE0000 +1FFE00001FFE00000FFF00003FFC00000FFF00003FFC000007FF00003FF8000003FF8000 +7FF0000001FFC000FFE0000000FFE001FFC0000000FFFC0FFF80000001FFFFFFFF000000 +03EFFFFFFC00000003C3FFFFF000000007C03FFF0000000007C000000000000007C00000 +000000000FC00000000000000FC00000000000000FC00000000000000FE0000000000000 +0FE00000000000000FF80000000000000FFE0000000000000FFFFFFFFF00000007FFFFFF +FFF8000007FFFFFFFFFF000007FFFFFFFFFFC00003FFFFFFFFFFE00001FFFFFFFFFFF000 +00FFFFFFFFFFF800007FFFFFFFFFFC00007FFFFFFFFFFE0001FFFFFFFFFFFF0007FFFFFF +FFFFFF000FFE000003FFFF801FF80000003FFF803FF000000007FF807FE000000003FFC0 +7FE000000001FFC0FFC000000001FFC0FFC000000000FFC0FFC000000000FFC0FFC00000 +0000FFC0FFC000000000FFC0FFC000000000FFC0FFE000000001FFC07FE000000001FF80 +7FF000000003FF803FF000000003FF001FF800000007FE000FFE0000001FFC0007FF8000 +007FF80003FFE00001FFF00001FFFE001FFFE000007FFFFFFFFF8000000FFFFFFFFC0000 +0001FFFFFFE0000000000FFFFC0000003C4F7CB543>I<003FF0000000000000FFFFF000 +0000000000FFFFF0000000000000FFFFF0000000000000FFFFF0000000000000FFFFF000 +000000000003FFF000000000000000FFF000000000000000FFF000000000000000FFF000 +000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 +000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 +000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 +000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 +000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 +1FFC00000000FFF000FFFFC0000000FFF003FFFFF0000000FFF00FFFFFF8000000FFF01F +E07FFC000000FFF03F001FFE000000FFF07C001FFF000000FFF0F0000FFF000000FFF1E0 +000FFF800000FFF3C0000FFF800000FFF7800007FF800000FFF7800007FFC00000FFFF00 +0007FFC00000FFFE000007FFC00000FFFE000007FFC00000FFFC000007FFC00000FFFC00 +0007FFC00000FFFC000007FFC00000FFFC000007FFC00000FFF8000007FFC00000FFF800 +0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 +0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 +0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 +0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 +0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 +0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 +0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 +0007FFC000FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF8 +07FFFFFFC0FFFFFFF807FFFFFFC042537BD24B>I<007F000000FF800003FFE00007FFF0 +0007FFF0000FFFF8000FFFF8000FFFF8000FFFF8000FFFF8000FFFF8000FFFF80007FFF0 +0007FFF00003FFE00000FF8000007F000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000003FF0 +00FFFFF000FFFFF000FFFFF000FFFFF000FFFFF00001FFF00000FFF00000FFF00000FFF0 +0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 +0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 +0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 +0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 +0000FFF00000FFF00000FFF000FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE01B547B +D325>I<003FF00000000000FFFFF00000000000FFFFF00000000000FFFFF00000000000 +FFFFF00000000000FFFFF0000000000003FFF0000000000000FFF0000000000000FFF000 +0000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00000000000 +00FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF000 +0000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00000000000 +00FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF000 +0000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00001FFFFF8 +00FFF00001FFFFF800FFF00001FFFFF800FFF00001FFFFF800FFF00001FFFFF800FFF000 +003FFE0000FFF000001FF00000FFF000003FC00000FFF000007F800000FFF00000FF0000 +00FFF00003FE000000FFF00007F8000000FFF0000FF0000000FFF0001FE0000000FFF000 +7FC0000000FFF000FF00000000FFF001FE00000000FFF003FC00000000FFF00FF8000000 +00FFF01FE000000000FFF03FF000000000FFF07FF800000000FFF1FFF800000000FFF3FF +FC00000000FFF7FFFE00000000FFFFFFFF00000000FFFFFFFF80000000FFFF9FFF800000 +00FFFF0FFFC0000000FFFE0FFFE0000000FFF807FFF0000000FFF003FFF0000000FFF001 +FFF8000000FFF000FFFC000000FFF000FFFE000000FFF0007FFF000000FFF0003FFF0000 +00FFF0001FFF800000FFF0001FFFC00000FFF0000FFFE00000FFF00007FFF00000FFF000 +03FFF00000FFF00001FFF80000FFF00001FFFC0000FFF00000FFFE0000FFF000007FFE00 +00FFF000003FFF0000FFF000007FFFC0FFFFFFF003FFFFFFFFFFFFF003FFFFFFFFFFFFF0 +03FFFFFFFFFFFFF003FFFFFFFFFFFFF003FFFFFF40537CD247>107 +D<003FF000FFFFF000FFFFF000FFFFF000FFFFF000FFFFF00001FFF00000FFF00000FFF0 +0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 +0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 +0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 +0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 +0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 +0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 +0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 +0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF000FFFFFFF0FFFFFFF0FFFFFF +F0FFFFFFF0FFFFFFF01C537BD225>I<003FF0001FFC000000FFE00000FFFFF000FFFFC0 +0007FFFE0000FFFFF003FFFFF0001FFFFF8000FFFFF00FFFFFF8007FFFFFC000FFFFF01F +E07FFC00FF03FFE000FFFFF03F001FFE01F800FFF00003FFF07C001FFF03E000FFF80000 +FFF0F0000FFF0780007FF80000FFF1E0000FFF8F00007FFC0000FFF3C0000FFF9E00007F +FC0000FFF7800007FFBC00003FFC0000FFF7800007FFFC00003FFE0000FFFF000007FFF8 +00003FFE0000FFFE000007FFF000003FFE0000FFFE000007FFF000003FFE0000FFFC0000 +07FFE000003FFE0000FFFC000007FFE000003FFE0000FFFC000007FFE000003FFE0000FF +FC000007FFE000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE +0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000 +003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007 +FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8 +000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE00 +00FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC00000 +3FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FF +C000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF800 +0007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000 +FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003F +FE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC0 +00003FFE00FFFFFFF807FFFFFFC03FFFFFFEFFFFFFF807FFFFFFC03FFFFFFEFFFFFFF807 +FFFFFFC03FFFFFFEFFFFFFF807FFFFFFC03FFFFFFEFFFFFFF807FFFFFFC03FFFFFFE6736 +7BB570>I<003FF0001FFC000000FFFFF000FFFFC00000FFFFF003FFFFF00000FFFFF00F +FFFFF80000FFFFF01FE07FFC0000FFFFF03F001FFE000003FFF07C001FFF000000FFF0F0 +000FFF000000FFF1E0000FFF800000FFF3C0000FFF800000FFF7800007FF800000FFF780 +0007FFC00000FFFF000007FFC00000FFFE000007FFC00000FFFE000007FFC00000FFFC00 +0007FFC00000FFFC000007FFC00000FFFC000007FFC00000FFFC000007FFC00000FFF800 +0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 +0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 +0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 +0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 +0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 +0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 +0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 +0007FFC00000FFF8000007FFC000FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF8 +07FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC042367BB54B>I<000001FFE000 +000000001FFFFE0000000000FFFFFFC000000003FFFFFFF00000000FFF807FFC0000001F +FC000FFE0000007FF80007FF800000FFF00003FFC00001FFE00001FFE00003FFC00000FF +F00003FF8000007FF00007FF8000007FF8000FFF0000003FFC000FFF0000003FFC001FFF +0000003FFE001FFF0000003FFE003FFE0000001FFF003FFE0000001FFF003FFE0000001F +FF007FFE0000001FFF807FFE0000001FFF807FFE0000001FFF807FFE0000001FFF80FFFE +0000001FFFC0FFFE0000001FFFC0FFFE0000001FFFC0FFFE0000001FFFC0FFFE0000001F +FFC0FFFE0000001FFFC0FFFE0000001FFFC0FFFE0000001FFFC0FFFE0000001FFFC0FFFE +0000001FFFC0FFFE0000001FFFC0FFFE0000001FFFC07FFE0000001FFF807FFE0000001F +FF807FFE0000001FFF803FFE0000001FFF003FFF0000003FFF003FFF0000003FFF001FFF +0000003FFE001FFF0000003FFE000FFF0000003FFC000FFF8000007FFC0007FF8000007F +F80003FFC00000FFF00001FFE00001FFE00000FFF00003FFC000007FF80007FF8000003F +FE001FFF0000000FFF807FFC00000007FFFFFFF800000000FFFFFFC0000000003FFFFF00 +0000000001FFE00000003A387CB643>I<003FF001FFE0000000FFFFF00FFFFE000000FF +FFF03FFFFFC00000FFFFF0FFFFFFF00000FFFFF3FF01FFF80000FFFFF7F8007FFE000003 +FFFFE0001FFF000000FFFF80000FFF800000FFFF000007FFC00000FFFE000007FFE00000 +FFFC000003FFF00000FFF8000001FFF80000FFF8000001FFF80000FFF8000000FFFC0000 +FFF8000000FFFC0000FFF8000000FFFE0000FFF80000007FFE0000FFF80000007FFF0000 +FFF80000007FFF0000FFF80000007FFF0000FFF80000007FFF0000FFF80000003FFF8000 +FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000 +FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000 +FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF0000 +FFF80000007FFF0000FFF80000007FFF0000FFF80000007FFF0000FFF80000007FFE0000 +FFF8000000FFFE0000FFF8000000FFFE0000FFF8000000FFFC0000FFF8000001FFFC0000 +FFF8000001FFF80000FFFC000003FFF00000FFFC000003FFF00000FFFE000007FFE00000 +FFFF00000FFFC00000FFFF80001FFF800000FFFFC0003FFF000000FFFFF000FFFC000000 +FFFBFE07FFF8000000FFF8FFFFFFE0000000FFF87FFFFF80000000FFF81FFFFC00000000 +FFF803FFC000000000FFF800000000000000FFF800000000000000FFF800000000000000 +FFF800000000000000FFF800000000000000FFF800000000000000FFF800000000000000 +FFF800000000000000FFF800000000000000FFF800000000000000FFF800000000000000 +FFF800000000000000FFF800000000000000FFF800000000000000FFF800000000000000 +FFF800000000000000FFF8000000000000FFFFFFF80000000000FFFFFFF80000000000FF +FFFFF80000000000FFFFFFF80000000000FFFFFFF80000000000414D7BB54B>I<007FE0 +03FE00FFFFE00FFF80FFFFE03FFFE0FFFFE07FFFF0FFFFE0FE1FF8FFFFE1F83FFC03FFE3 +E03FFE00FFE3C07FFE00FFE7807FFE00FFEF807FFE00FFEF007FFE00FFEE007FFE00FFFE +003FFC00FFFC003FFC00FFFC001FF800FFFC000FF000FFF800000000FFF800000000FFF8 +00000000FFF800000000FFF800000000FFF000000000FFF000000000FFF000000000FFF0 +00000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0 +00000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0 +00000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0 +00000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0 +000000FFFFFFFC0000FFFFFFFC0000FFFFFFFC0000FFFFFFFC0000FFFFFFFC00002F367C +B537>114 D<0003FFF00F00003FFFFE1F0000FFFFFFFF0003FFFFFFFF0007FF003FFF00 +0FF80007FF001FE00001FF003FC00000FF003F8000007F007F8000007F007F0000003F00 +7F0000003F00FF0000001F00FF0000001F00FF8000001F00FF8000001F00FFC000001F00 +FFF000000000FFFC00000000FFFFC00000007FFFFF0000007FFFFFF800003FFFFFFF0000 +3FFFFFFFC0001FFFFFFFF0000FFFFFFFF80007FFFFFFFC0003FFFFFFFE0000FFFFFFFF00 +003FFFFFFF80000FFFFFFFC00000FFFFFFC0000007FFFFE00000003FFFE000000007FFF0 +00000001FFF0780000007FF0F80000003FF0F80000001FF0FC0000001FF0FC0000000FF0 +FC0000000FF0FE0000000FF0FE0000000FE0FF0000000FE0FF8000001FE0FF8000001FC0 +FFC000001FC0FFE000003F80FFF800007F00FFFE0001FE00FFFFC00FFC00FF7FFFFFF800 +FC1FFFFFE000F807FFFF8000F000FFF800002C387CB635>I<00003E00000000003E0000 +0000003E00000000003E00000000003E00000000003E00000000007E00000000007E0000 +0000007E00000000007E0000000000FE0000000000FE0000000001FE0000000001FE0000 +000001FE0000000003FE0000000007FE0000000007FE000000000FFE000000001FFE0000 +00003FFE00000000FFFE00000001FFFE0000000FFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF +00FFFFFFFFFF00FFFFFFFFFF00003FFE000000003FFE000000003FFE000000003FFE0000 +00003FFE000000003FFE000000003FFE000000003FFE000000003FFE000000003FFE0000 +00003FFE000000003FFE000000003FFE000000003FFE000000003FFE000000003FFE0000 +00003FFE000000003FFE000000003FFE000000003FFE000000003FFE000000003FFE0000 +00003FFE000000003FFE000000003FFE000000003FFE000000003FFE000000003FFE0007 +C0003FFE0007C0003FFE0007C0003FFE0007C0003FFE0007C0003FFE0007C0003FFE0007 +C0003FFE0007C0003FFE0007C0003FFE0007C0003FFE0007C0001FFE000F80001FFF000F +80001FFF000F80000FFF001F00000FFF801F000007FFC03E000003FFF0FC000001FFFFF8 +0000007FFFF00000001FFFE000000003FF80002A4D7ECB34>I<003FF8000001FFC000FF +FFF80007FFFFC000FFFFF80007FFFFC000FFFFF80007FFFFC000FFFFF80007FFFFC000FF +FFF80007FFFFC00003FFF800001FFFC00000FFF8000007FFC00000FFF8000007FFC00000 +FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000 +FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000 +FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000 +FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000 +FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000 +FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000 +FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000 +FFF8000007FFC00000FFF8000007FFC00000FFF800000FFFC00000FFF800000FFFC00000 +FFF800000FFFC00000FFF800001FFFC00000FFF800001FFFC000007FF800003FFFC00000 +7FF800003BFFC000007FF800007BFFC000003FFC0000F3FFC000003FFC0001E3FFF00000 +1FFE0007C3FFFFC0000FFFC03F83FFFFC00007FFFFFF03FFFFC00001FFFFFE03FFFFC000 +007FFFF803FFFFC0000007FFE003FF000042377BB54B>I<FFFFFFF00007FFFFFFFFFFF0 +0007FFFFFFFFFFF00007FFFFFFFFFFF00007FFFFFFFFFFF00007FFFF01FFF80000007FE0 +00FFFC0000003F0000FFFC0000003F00007FFC0000003E00007FFE0000007E00003FFE00 +00007C00003FFF000000FC00001FFF000000F800001FFF800001F800000FFF800001F000 +000FFFC00001F000000FFFC00003F0000007FFC00003E0000007FFE00007E0000003FFE0 +0007C0000003FFF0000FC0000001FFF0000F80000001FFF8001F80000000FFF8001F0000 +0000FFFC001F00000000FFFC003F000000007FFE003E000000007FFE007E000000003FFE +007C000000003FFF00FC000000001FFF00F8000000001FFF81F8000000000FFF81F00000 +00000FFFC3F0000000000FFFC3F00000000007FFE3E00000000007FFE7E00000000003FF +E7C00000000003FFFFC00000000001FFFF800000000001FFFF800000000000FFFF000000 +000000FFFF0000000000007FFE0000000000007FFE0000000000007FFE0000000000003F +FC0000000000003FFC0000000000001FF80000000000001FF80000000000000FF0000000 +0000000FF000000000000007E000000000000003C000000040367DB447>I<FFFFFFE07F +FFFFC003FFFFC0FFFFFFE07FFFFFC003FFFFC0FFFFFFE07FFFFFC003FFFFC0FFFFFFE07F +FFFFC003FFFFC0FFFFFFE07FFFFFC003FFFFC001FFF00000FFF000001FF80001FFF80000 +7FF0000007E00000FFF800007FF8000007C00000FFF800007FF8000007C00000FFFC0000 +3FF800000FC000007FFC00003FFC00000F8000007FFC00003FFC00000F8000007FFE0000 +3FFC00001F8000003FFE00007FFE00001F0000003FFF00007FFE00003F0000001FFF0000 +7FFF00003E0000001FFF0000FFFF00003E0000001FFF8000FFFF00007E0000000FFF8001 +FFFF80007C0000000FFFC001F3FF8000FC00000007FFC001F3FFC000F800000007FFC003 +F3FFC000F800000007FFE003E1FFC001F800000003FFE007E1FFE001F000000003FFF007 +C0FFE001F000000001FFF007C0FFF003E000000001FFF00FC0FFF003E000000001FFF80F +807FF007E000000000FFF80F807FF807C000000000FFF81F003FF807C000000000FFFC1F +003FF80FC0000000007FFC3F003FFC0F80000000007FFE3E001FFC1F80000000003FFE3E +001FFE1F00000000003FFE7E001FFE1F00000000003FFF7C000FFE3F00000000001FFFFC +000FFF3E00000000001FFFF80007FF7E00000000000FFFF80007FFFC00000000000FFFF8 +0007FFFC00000000000FFFF00003FFFC000000000007FFF00003FFF8000000000007FFE0 +0001FFF8000000000003FFE00001FFF0000000000003FFE00001FFF0000000000003FFC0 +0000FFF0000000000001FFC00000FFE0000000000001FF8000007FE0000000000001FF80 +00007FE0000000000000FF8000007FC0000000000000FF0000003FC00000000000007F00 +00003F800000000000007F0000003F800000000000003E0000001F000000005A367DB461 +>I<7FFFFFF0007FFFFE007FFFFFF0007FFFFE007FFFFFF0007FFFFE007FFFFFF0007FFF +FE007FFFFFF0007FFFFE00007FFE00000FFF0000003FFF000007F80000001FFF800007F0 +0000000FFFC0000FE000000007FFC0001FC000000007FFE0003F8000000003FFF0003F00 +00000001FFF8007E0000000000FFFC00FC00000000007FFE01FC00000000007FFE03F800 +000000003FFF07F000000000001FFF8FE000000000000FFFCFC0000000000007FFFF8000 +0000000003FFFF00000000000003FFFF00000000000001FFFE00000000000000FFFC0000 +00000000007FFE000000000000003FFF000000000000003FFF000000000000001FFF8000 +00000000001FFFC00000000000003FFFE00000000000007FFFF0000000000000FFFFF000 +0000000001FDFFF8000000000001F8FFFC000000000003F07FFE000000000007E03FFF00 +000000000FE01FFF00000000001FC01FFF80000000003F800FFFC0000000007F0007FFE0 +00000000FE0003FFF000000000FC0001FFF800000001F80001FFF800000003F00000FFFC +00000007F000007FFE0000000FE000003FFF0000001FC000001FFF800000FFF000001FFF +8000FFFFFE0001FFFFFFC0FFFFFE0001FFFFFFC0FFFFFE0001FFFFFFC0FFFFFE0001FFFF +FFC0FFFFFE0001FFFFFFC042357EB447>I<FFFFFFF00007FFFFFFFFFFF00007FFFFFFFF +FFF00007FFFFFFFFFFF00007FFFFFFFFFFF00007FFFF00FFF80000007FE000FFFC000000 +3F0000FFFC0000003F00007FFE0000003E00007FFE0000007E00003FFE0000007C00003F +FF000000FC00001FFF000000F800001FFF800001F800000FFF800001F000000FFFC00003 +F0000007FFC00003E0000007FFE00003E0000007FFE00007E0000003FFF00007C0000003 +FFF0000FC0000001FFF8000F80000001FFF8001F80000000FFF8001F00000000FFFC003F +000000007FFC003E000000007FFE007E000000003FFE007C000000003FFF00FC00000000 +3FFF00FC000000001FFF80F8000000001FFF81F8000000000FFFC1F0000000000FFFC3F0 +0000000007FFC3E00000000007FFE7E00000000003FFE7C00000000003FFFFC000000000 +01FFFF800000000001FFFF800000000000FFFF000000000000FFFF000000000000FFFF00 +00000000007FFE0000000000007FFE0000000000003FFC0000000000003FFC0000000000 +001FF80000000000001FF80000000000000FF00000000000000FF000000000000007E000 +000000000007E000000000000007E000000000000007C00000000000000FC00000000000 +000F800000000000001F800000000000001F000000000000003F000000001FC0003E0000 +00003FE0007E000000007FF0007C00000000FFF800FC00000000FFF800F800000000FFF8 +01F800000000FFF801F000000000FFF803F000000000FFF807E0000000007FF00FC00000 +00007FE01F80000000003FC07F00000000003F81FE00000000001FFFFC00000000000FFF +F0000000000003FFE0000000000000FF000000000000404D7DB447>I +E /Fr 42 127 df<00000FF8000000007FFE00000001F80780000007E001C000001F8000 +E000003F0007E000007E000FF000007E000FF00000FC000FF00000FC000FF00001F8000F +F00001F80007E00001F80001800001F80000000001F80000000001F80000000001F80000 +000001F80000000001F80000000001F80000000001F80000000001F80000000001F80003 +F000FFFFFFFFF000FFFFFFFFF000FFFFFFFFF00001F8000FF00001F80003F00001F80003 +F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003 +F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003 +F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003 +F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003 +F00001F80003F00001F80003F00003FC0007F8007FFFE0FFFFC07FFFE0FFFFC07FFFE0FF +FFC02A3B7FBA2E>12 D<03F000FFF000FFF000FFF00007F00003F00003F00003F00003F0 +0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0 +0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0 +0007F800FFFFC0FFFFC0FFFFC012257EA417>16 D<003C007E007E00FE01FE03FC03F007 +E00FC01F801E003C007800F000C0000F0F6FB92A>19 D<03F00003F00003F00003FE0000 +3F80001FC0000FE00007E00007E00007E0000FE0001FC000FF80FFFE00FFE000130F757D +25>24 D<0000600000E00001C0000380000700000E00001E00003C0000780000780000F0 +0001E00001E00003C00003C00007C0000780000F80000F00000F00001F00001E00001E00 +003E00003E00003E00007C00007C00007C00007C00007C00007C0000F80000F80000F800 +00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800 +00F80000F80000F800007C00007C00007C00007C00007C00007C00003E00003E00003E00 +001E00001E00001F00000F00000F00000F800007800007C00003C00003C00001E00001E0 +0000F000007800007800003C00001E00000E000007000003800001C00000E00000601352 +78BD20>40 D<C00000E000007000003800001C00000E00000F000007800003C00003C000 +01E00000F00000F000007800007800007C00003C00003E00001E00001E00001F00000F00 +000F00000F80000F80000F800007C00007C00007C00007C00007C00007C00003E00003E0 +0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0 +0003E00003E00003E00003E00007C00007C00007C00007C00007C00007C0000F80000F80 +000F80000F00000F00001F00001E00001E00003E00003C00007C0000780000780000F000 +00F00001E00003C00003C0000780000F00000E00001C0000380000700000E00000C00000 +13527CBD20>I<1C007F00FF80FF80FF80FF80FF807F001C000909798817>46 +D<000FF00000007FFE000001FFFF800003E03FE0000F000FF0000E0007F8001C0003FC00 +380001FE00300001FE00700000FF00600000FF00FC0000FF00FF00007F80FF80007F80FF +80007F80FF80007F80FF80007F80FF80007F807F00007F801C00007F800000007F800000 +00FF00000000FF00000000FF00000001FE00000001FC00000003FC00000003F800000007 +F000000007E00000000FE00000001FC00000003F800000003F000000007C00000000F800 +000001F000000003E000000007C00000000F800000000F000000001E000180003C000180 +007800018000F000038001E000030003C000030007800003000E000007000FFFFFFF001F +FFFFFF003FFFFFFF007FFFFFFE00FFFFFFFE00FFFFFFFE00FFFFFFFE0021387CB72A>50 +D<0600000C000780003C0007F003F80007FFFFF80007FFFFF00007FFFFE00007FFFF8000 +07FFFF000007FFFC0000067FE00000060000000006000000000600000000060000000006 +000000000600000000060000000006000000000600000000060000000006000000000607 +F80000063FFE000006780F800007E007E000078003F000070001F800060001F800060000 +FC00000000FE00000000FE00000000FF000000007F000000007F000000007F800000007F +800000007F800000007F803E00007F807F00007F80FF80007F80FF80007F80FF80007F80 +FF80007F80FF00007F00FE0000FF00E00000FF00600000FE00700000FE00300001FC0038 +0001F8001C0003F8001E0007F0000F800FE00007E03F800001FFFF0000007FFC0000001F +E00000213A7CB72A>53 D<0000003800000000000038000000000000380000000000007C +0000000000007C0000000000007C000000000000FE000000000000FE000000000000FE00 +0000000001FF000000000001FF000000000001FF0000000000037F8000000000037F8000 +000000077FC000000000063FC000000000063FC0000000000E3FE0000000000C1FE00000 +00000C1FE0000000001C1FF000000000180FF000000000180FF000000000380FF8000000 +003007F8000000003007F8000000007007FC000000006003FC000000006003FC00000000 +C003FE00000000C001FE00000000C001FE000000018001FF000000018000FF0000000180 +00FF000000030000FF8000000300007F8000000300007F8000000600007FC0000007FFFF +FFC0000007FFFFFFC000000FFFFFFFE000000C00001FE000000C00001FE000001800000F +F000001800000FF000001800000FF0000030000007F8000030000007F8000030000007F8 +000060000003FC000060000003FC0000E0000003FC0000E0000001FE0001E0000001FE00 +03F0000001FF000FFC000007FF80FFFF8000FFFFFEFFFF8000FFFFFEFFFF8000FFFFFE37 +3C7DBB3E>65 D<000001FF80018000000FFFE0038000007FFFF803800001FF807E078000 +03FC000F0F80000FF000039F80001FE00001DF80003F800000FF80007F0000007F8000FE +0000003F8001FE0000003F8003FC0000001F8007F80000000F8007F80000000F800FF000 +000007800FF000000007801FE000000007801FE000000003803FE000000003803FC00000 +0003807FC000000001807FC000000001807FC000000001807F800000000180FF80000000 +0000FF800000000000FF800000000000FF800000000000FF800000000000FF8000000000 +00FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000 +FF800000000000FF8000000000007F8000000000007FC000000001807FC000000001807F +C000000001803FC000000001803FE000000001801FE000000003801FE000000003000FF0 +00000003000FF0000000070007F8000000070007F8000000060003FC0000000E0001FE00 +00001C0000FE0000001800007F0000003800003F8000007000001FE00000E000000FF000 +03C0000003FC000F80000001FF803F000000007FFFFC000000000FFFF00000000001FF80 +0000313D7BBA3C>67 D<FFFFFFFFFFFC00FFFFFFFFFFFC00FFFFFFFFFFFC0001FF80000F +FC0000FF000001FC0000FF0000007E0000FF0000003E0000FF0000001E0000FF0000000E +0000FF0000000E0000FF0000000E0000FF000000060000FF000000060000FF0000000600 +00FF000000070000FF000000030000FF0000C0030000FF0000C0030000FF0000C0030000 +FF0000C0000000FF0000C0000000FF0000C0000000FF0001C0000000FF0001C0000000FF +0003C0000000FF000FC0000000FFFFFFC0000000FFFFFFC0000000FFFFFFC0000000FF00 +0FC0000000FF0003C0000000FF0001C0000000FF0001C0000000FF0000C0000000FF0000 +C0000000FF0000C0006000FF0000C0006000FF0000C0006000FF0000C000E000FF000000 +00C000FF00000000C000FF00000000C000FF00000000C000FF00000001C000FF00000001 +C000FF00000001C000FF000000038000FF000000038000FF000000078000FF0000000780 +00FF0000000F8000FF0000003F8000FF0000007F8001FF800007FF00FFFFFFFFFFFF00FF +FFFFFFFFFF00FFFFFFFFFFFF0033397DB839>69 D<FFFFFFC0FFFFFFC0FFFFFFC000FFC0 +00007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80 +00007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80 +00007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80 +00007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80 +00007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80 +00007F8000007F8000007F8000007F800000FFC000FFFFFFC0FFFFFFC0FFFFFFC01A397E +B81E>73 D<FFFFFFE00000FFFFFFE00000FFFFFFE0000001FFC000000000FF0000000000 +FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000 +FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000 +FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000 +FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000 +FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000 +FF0000001800FF0000001800FF0000001800FF0000001800FF0000001800FF0000003800 +FF0000003000FF0000003000FF0000003000FF0000007000FF0000007000FF0000007000 +FF000000F000FF000000F000FF000001F000FF000003F000FF00000FF000FF00001FE001 +FF8000FFE0FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE02D397DB834>76 +D<000003FF00000000001FFFE000000000FE01FC00000001F8007E00000007E0001F8000 +000FC0000FC000003F800007F000007F000003F80000FE000001FC0001FC000000FE0001 +F80000007E0003F80000007F0007F00000003F8007F00000003F800FE00000001FC00FE0 +0000001FC01FE00000001FE01FC00000000FE03FC00000000FF03FC00000000FF03FC000 +00000FF07FC00000000FF87F8000000007F87F8000000007F87F8000000007F8FF800000 +0007FCFF8000000007FCFF8000000007FCFF8000000007FCFF8000000007FCFF80000000 +07FCFF8000000007FCFF8000000007FCFF8000000007FCFF8000000007FCFF8000000007 +FCFF8000000007FC7F8000000007F87FC00000000FF87FC00000000FF87FC00000000FF8 +3FC00000000FF03FC00000000FF01FE00000001FE01FE00000001FE01FE00000001FE00F +F00000003FC007F00000003F8007F80000007F8003F80000007F0001FC000000FE0001FC +000000FE0000FE000001FC00007F000003F800003F800007F000001FC0000FE0000007E0 +001F80000003F8007F00000000FE01FC000000001FFFE00000000003FF000000363D7BBA +41>79 D<FFFFFFFFC000FFFFFFFFF800FFFFFFFFFE0001FF8001FF8000FF00003FC000FF +00000FE000FF000007F000FF000003F800FF000003FC00FF000003FE00FF000001FE00FF +000001FE00FF000001FF00FF000001FF00FF000001FF00FF000001FF00FF000001FF00FF +000001FF00FF000001FF00FF000001FE00FF000001FE00FF000003FC00FF000003FC00FF +000007F800FF000007F000FF00000FE000FF00003FC000FF0001FF0000FFFFFFFC0000FF +FFFFF00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF +0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF +0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF +0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000001FF +80000000FFFFFF000000FFFFFF000000FFFFFF00000030397DB839>I<3FFFFFFFFFFFE0 +3FFFFFFFFFFFE03FFFFFFFFFFFE03FC003FF001FE03E0001FE0003E07C0001FE0001F078 +0001FE0000F0700001FE000070700001FE000070700001FE000070600001FE0000306000 +01FE000030600001FE000030600001FE000030E00001FE000038C00001FE000018C00001 +FE000018C00001FE000018C00001FE000018000001FE000000000001FE000000000001FE +000000000001FE000000000001FE000000000001FE000000000001FE000000000001FE00 +0000000001FE000000000001FE000000000001FE000000000001FE000000000001FE0000 +00000001FE000000000001FE000000000001FE000000000001FE000000000001FE000000 +000001FE000000000001FE000000000001FE000000000001FE000000000001FE00000000 +0001FE000000000001FE000000000001FE000000000001FE000000000001FE0000000000 +01FE000000000001FE000000000001FE000000000001FE000000000001FE000000000001 +FE000000000007FF800000001FFFFFFFE000001FFFFFFFE000001FFFFFFFE00035397DB8 +3C>84 D<001FE0000000FFFC000003E03F000007000F80000F8007E0001FC003F0001FE0 +03F0001FE001F8001FE001F8001FE000FC000FC000FC00078000FC00000000FC00000000 +FC00000000FC00000000FC0000007FFC000007FFFC00003FE0FC0000FE00FC0003F800FC +000FF000FC001FC000FC003FC000FC007F8000FC007F0000FC007F0000FC0CFE0000FC0C +FE0000FC0CFE0000FC0CFE0001FC0CFE0001FC0CFF0003FC0C7F00077C0C7F80063E183F +C01E3E180FE0781FF003FFF00FE0007F8007C026277DA52A>97 D<03F0000000FFF00000 +00FFF0000000FFF00000000FF000000003F000000003F000000003F000000003F0000000 +03F000000003F000000003F000000003F000000003F000000003F000000003F000000003 +F000000003F000000003F000000003F000000003F000000003F01FE00003F07FF80003F1 +E03E0003F3801F8003F7000FC003FE0007E003FC0003F003F80001F803F00001F803F000 +00FC03F00000FC03F00000FE03F00000FE03F000007E03F000007F03F000007F03F00000 +7F03F000007F03F000007F03F000007F03F000007F03F000007F03F000007F03F000007F +03F000007E03F00000FE03F00000FE03F00000FC03F00001FC03F80001F803F80003F003 +FC0003F003EE0007E003C6000FC003C7801F000381E07E000300FFF80000001FC000283B +7EB92E>I<0003FC00001FFF80007E03E001F8007003F000F807E001FC0FC003FC0FC003 +FC1F8003FC3F8003FC3F0001F87F0000F07F0000007F0000007E000000FE000000FE0000 +00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000007E0000 +007F0000007F0000003F0000063F8000061F80000E1FC0000C0FC0001C07E0003803F000 +7001F800E0007C07C0001FFF000007F8001F277DA525>I<0000000FC0000003FFC00000 +03FFC0000003FFC00000003FC00000000FC00000000FC00000000FC00000000FC0000000 +0FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000F +C00000000FC00000000FC00000000FC00000000FC00003F80FC0001FFF0FC0007E078FC0 +00F801EFC003F0007FC007E0003FC00FC0001FC00FC0001FC01F80000FC03F80000FC03F +00000FC07F00000FC07F00000FC07E00000FC0FE00000FC0FE00000FC0FE00000FC0FE00 +000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC07E0000 +0FC07F00000FC07F00000FC03F00000FC03F00000FC01F80001FC01F80001FC00FC0003F +C007E0007FC003F000EFF001F801CFFF007C078FFF001FFE0FFF0007F80FC0283B7DB92E +>I<0007F800001FFF00007C0FC001F803E003F001F007E001F80FC000F81F80007C1F80 +007C3F00007E3F00003E7F00003E7F00003F7E00003FFE00003FFE00003FFE00003FFFFF +FFFFFFFFFFFFFE000000FE000000FE000000FE000000FE0000007E0000007E0000007F00 +00007F0000003F0000033F8000031F8000070FC0000607C0000E07E0001C01F0003800F8 +0070007E03E0001FFF800003FC0020277EA525>I<00007E000003FF80000FC1E0001F87 +E0003F0FF0007E0FF0007E0FF000FC0FF000FC0FF001F803C001F8000001F8000001F800 +0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800 +0001F80000FFFFFC00FFFFFC00FFFFFC0001F8000001F8000001F8000001F8000001F800 +0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800 +0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800 +0001F8000001F8000001F8000001F8000001F8000001F8000003FC00007FFFF8007FFFF8 +007FFFF8001C3B7FBA19>I<00000003F0000FF00FF8003FFC3C3C00F81F707C01F00FE0 +7C03E007C07C07C003E0100FC003F0000FC003F0001F8001F8001F8001F8001F8001F800 +1F8001F8001F8001F8001F8001F8001F8001F8001F8001F8000FC003F0000FC003F00007 +C003E00003E007C00003F00F800003F81F0000073FFC0000060FF000000E000000000E00 +0000000E000000000E000000000F000000000F000000000FC000000007FFFFC00007FFFF +F80003FFFFFE0001FFFFFF8003FFFFFFC00F80007FE01F00000FF03E000003F07C000001 +F07C000001F8F8000000F8F8000000F8F8000000F8F8000000F8F8000000F8FC000001F8 +7C000001F03E000003E03F000007E00F80000F8007E0003F0001FC01FC00007FFFF00000 +07FF000026387EA52A>I<03F000000000FFF000000000FFF000000000FFF0000000000F +F00000000003F00000000003F00000000003F00000000003F00000000003F00000000003 +F00000000003F00000000003F00000000003F00000000003F00000000003F00000000003 +F00000000003F00000000003F00000000003F00000000003F00000000003F00FF0000003 +F03FFC000003F0F03F000003F1C01F800003F3800FC00003F7000FC00003FE000FC00003 +FC0007E00003FC0007E00003F80007E00003F80007E00003F80007E00003F00007E00003 +F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003 +F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003 +F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003 +F00007E00003F00007E00007F8000FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF8029 +3A7EB92E>I<0380000FE0001FF0001FF0001FF0001FF0001FF0000FE000038000000000 +00000000000000000000000000000000000000000000000000000003F000FFF000FFF000 +FFF00007F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F000 +03F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F000 +03F00003F00003F00003F00003F00003F00007F800FFFFC0FFFFC0FFFFC012387EB717> +I<0001C00007F0000FF8000FF8000FF8000FF8000FF80007F00001C00000000000000000 +000000000000000000000000000000000000000000000001F800FFF800FFF800FFF80007 +F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001 +F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001 +F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001 +F80001F80001F83C01F87E01F8FF01F0FF03F0FF03F0FF03E0FE07C07C07C03C0F000FFE +0003F800154984B719>I<03F000FFF000FFF000FFF0000FF00003F00003F00003F00003 +F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003 +F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003 +F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003 +F00003F00003F00003F00003F00003F00003F00003F00003F00003F00007F800FFFFC0FF +FFC0FFFFC0123A7EB917>108 D<03F00FF0001FE000FFF03FFC007FF800FFF0F03F01E0 +7E00FFF1C01F83803F000FF3800FC7001F8003F7000FCE001F8003FE000FDC001F8003FC +0007F8000FC003FC0007F8000FC003F80007F0000FC003F80007F0000FC003F80007F000 +0FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F0 +0007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E000 +0FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F0 +0007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E000 +0FC003F00007E0000FC003F00007E0000FC003F00007E0000FC007F8000FF0001FE0FFFF +C1FFFF83FFFFFFFFC1FFFF83FFFFFFFFC1FFFF83FFFF40257EA445>I<03F00FF00000FF +F03FFC0000FFF0F03F0000FFF1C01F80000FF3800FC00003F7000FC00003FE000FC00003 +FC0007E00003FC0007E00003F80007E00003F80007E00003F80007E00003F00007E00003 +F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003 +F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003 +F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003 +F00007E00003F00007E00007F8000FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF8029 +257EA42E>I<0003FE0000000FFF8000003E03E00000F800F80001F0007C0003E0003E00 +07C0001F000F80000F801F80000FC01F000007C03F000007E03F000007E07E000003F07E +000003F07E000003F07E000003F0FE000003F8FE000003F8FE000003F8FE000003F8FE00 +0003F8FE000003F8FE000003F8FE000003F8FE000003F87E000003F07E000003F07F0000 +07F03F000007E03F000007E01F80000FC00F80000F800FC0001F8007E0003F0003F0007E +0000F800F800007E03F000001FFFC0000003FE000025277EA52A>I<03F01FE000FFF07F +F800FFF1E07E00FFF3801F8007F7000FC003FE0007E003FC0003F003F80003F803F00001 +F803F00001FC03F00000FC03F00000FE03F00000FE03F00000FE03F000007F03F000007F +03F000007F03F000007F03F000007F03F000007F03F000007F03F000007F03F000007F03 +F000007F03F00000FE03F00000FE03F00000FE03F00001FC03F00001FC03F80003F803F8 +0003F003FC0007F003FE000FE003F6000FC003F7803F0003F1E07E0003F0FFF80003F01F +C00003F000000003F000000003F000000003F000000003F000000003F000000003F00000 +0003F000000003F000000003F000000003F000000007F8000000FFFFC00000FFFFC00000 +FFFFC0000028357EA42E>I<0003F800C0001FFE01C0007E0781C000FC01C3C003F000E3 +C007F00077C00FE00037C00FC0003FC01FC0001FC03F80001FC03F80000FC07F00000FC0 +7F00000FC07F00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE +00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC07F00000FC07F00000FC07F00 +000FC03F00000FC03F80001FC01F80001FC01FC0003FC00FC0003FC007E0007FC003F000 +EFC001F801CFC0007E078FC0001FFE0FC00007F80FC00000000FC00000000FC00000000F +C00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0 +0000000FC00000001FE0000003FFFF000003FFFF000003FFFF28357DA42C>I<07E01F00 +FFE07FC0FFE1E3E0FFE387F00FE707F003E607F003EE07F003EC03E003FC008003F80000 +03F8000003F8000003F8000003F0000003F0000003F0000003F0000003F0000003F00000 +03F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F00000 +03F0000003F0000003F0000003F0000003F0000007F80000FFFFF000FFFFF000FFFFF000 +1C257EA421>I<00FF030003FFE7000F80FF001E003F003C001F0078000F0070000700F0 +000700F0000700F0000300F8000300F8000300FC000300FF0000007FE000007FFF00003F +FFE0001FFFF8000FFFFC0003FFFE0000FFFF000007FF8000007F8000001F80C0000FC0C0 +0007C0C00007C0E00003C0E00003C0E00003C0F00003C0F0000380F8000780FC000780FC +000F00FF001E00F3C07C00E1FFF000C03F80001A277DA521>I<00180000001800000018 +0000001800000018000000380000003800000038000000780000007800000078000000F8 +000001F8000003F8000007F800001FFFFF00FFFFFF00FFFFFF0001F8000001F8000001F8 +000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8 +000001F8000001F8000001F8000001F8000001F8000001F8000001F800C001F800C001F8 +00C001F800C001F800C001F800C001F800C001F800C001F800C000FC01C000FC0180007C +0380007E0300003F0700000FFE000001F8001A347FB220>I<03F00007E000FFF001FFE0 +00FFF001FFE000FFF001FFE0000FF0001FE00003F00007E00003F00007E00003F00007E0 +0003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E0 +0003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E0 +0003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E0 +0003F00007E00003F0000FE00003F0000FE00003F0000FE00003F0001FE00001F0001FE0 +0001F8003FE00000F80077F80000FC00E7FF80003F03C7FF80001FFF87FF800003FC07E0 +0029267EA42E>I<FFFF803FFEFFFF803FFEFFFF803FFE0FF8000FF007F00007E003F000 +03C003F800038001F800030001F800030000FC00060000FC00060000FE000E00007E000C +00007E000C00003F001800003F001800003F803800001F803000001F803000000FC06000 +000FC06000000FE060000007E0C0000007E0C0000003F180000003F180000003F1800000 +01FB00000001FB00000001FF00000000FE00000000FE000000007C000000007C00000000 +7C00000000380000000038000027257EA32C>I<FFFF1FFFE03FFEFFFF1FFFE03FFEFFFF +1FFFE03FFE0FF800FF000FF807F0007E0003E007F0007E0003C003F0003E00018003F000 +3E00018001F8003F00030001F8003F00030001F8003F00030000FC003F80060000FC006F +80060000FC006F800600007E00EFC00C00007E00C7C00C00007E00C7C00C00003F01C7E0 +1800003F0183E01800003F8183F03800001F8383F03000001F8301F03000001FC301F870 +00000FC600F86000000FC600F860000007E600FCC0000007EC007CC0000007EC007CC000 +0003FC007F80000003F8003F80000003F8003F80000001F8003F00000001F0001F000000 +01F0001F00000000F0001E00000000E0000E0000000060000C000037257EA33C>I<FFFF +807FFF00FFFF807FFF00FFFF807FFF0003FE003FF00001FE001F800000FE001F0000007E +001C0000003F00180000001F80300000001FC0700000000FC0E000000007E0C000000007 +F18000000003FB8000000001FF0000000000FE0000000000FE00000000007F0000000000 +3F00000000007F80000000007FC000000000CFC000000001C7E00000000383F000000007 +03F80000000601F80000000C00FC0000001C007E00000038007F00000078003F000000F0 +001F800001F8001FC0000FF8003FF000FFFE00FFFF80FFFE00FFFF80FFFE00FFFF802924 +7FA32C>I<FFFF803FFEFFFF803FFEFFFF803FFE0FF8000FF007F00007C003F000038001 +F800038001F800030001FC00030000FC00060000FC000600007E000C00007E000C00007F +000C00003F001800003F001800001F803000001F803000001FC07000000FC06000000FC0 +60000007E0C0000007E0C0000007F1C0000003F180000003F180000001FB00000001FB00 +000001FF00000000FE00000000FE000000007C000000007C000000007C00000000380000 +0000380000000030000000003000000000700000000060000000006000000000C0000000 +00C000007C01C00000FE01800000FE03800000FE03000000FE06000000FC0E000000701C +00000038380000001FF00000000FC000000027357EA32C>I<01E0004007F800E00FFE01 +C01FFF87803C3FFF00700FFE00E003FC004000F0001B0879B62A>126 +D E /Fs 13 118 df<000F00003F80003FC0007FE000FFE001FFE003FFE007FFE007FFC0 +0FFF801FFE003FF8007FE000FF80007E000038000013106DBA30>19 +D<00000003E00000000000000007F00000000000000007F0000000000000000FF8000000 +000000000FF8000000000000000FF8000000000000001FFC000000000000001FFC000000 +000000003FFE000000000000003FFE000000000000003FFE000000000000007FFF000000 +000000007FFF00000000000000FFFF80000000000000FFFF80000000000000FFFF800000 +00000001FFFFC0000000000001F3FFC0000000000003F3FFE0000000000003E1FFE00000 +00000003E1FFE0000000000007E1FFF0000000000007C0FFF000000000000FC0FFF80000 +0000000F807FF800000000000F807FF800000000001F807FFC00000000001F003FFC0000 +0000003F003FFE00000000003E001FFE00000000003E001FFE00000000007E001FFF0000 +0000007C000FFF0000000000FC000FFF8000000000F80007FF8000000000F80007FF8000 +000001F80007FFC000000001F00003FFC000000003FFFFFFFFE000000003FFFFFFFFE000 +000003FFFFFFFFE000000007FFFFFFFFF000000007C00000FFF00000000FC00000FFF800 +00000F8000007FF80000000F8000007FF80000001F8000007FFC0000001F0000003FFC00 +00003F0000003FFE0000003E0000001FFE0000003E0000001FFE0000007E0000001FFF00 +00007C0000000FFF000000FE0000000FFF8000FFFFF80007FFFFFF80FFFFF80007FFFFFF +80FFFFF80007FFFFFF80FFFFF80007FFFFFF80413A7DB948>65 D<0007FF000E00003FFF +E01E0000FFFFF83E0003FFFFFE7E0007FC01FFFE000FF0001FFE001FE0000FFE003FC000 +03FE003F800001FE007F800000FE007F000000FE007F0000007E00FF0000007E00FF0000 +003E00FF0000003E00FF8000003E00FF8000001E00FFC000001E00FFE000001E00FFF000 +000000FFFC000000007FFFE00000007FFFFE0000007FFFFFF000003FFFFFFE00003FFFFF +FF80001FFFFFFFC0000FFFFFFFF00007FFFFFFF80003FFFFFFFC0000FFFFFFFE00003FFF +FFFE00000FFFFFFF000001FFFFFF0000000FFFFF800000007FFF800000000FFFC0000000 +03FFC000000001FFC000000000FFC0F00000007FC0F00000007FC0F00000007FC0F00000 +003FC0F00000003FC0F80000003FC0F80000003F80FC0000003F80FC0000007F80FE0000 +007F00FF0000007F00FF800000FE00FFE00001FC00FFF80003FC00FFFF801FF800FCFFFF +FFE000F83FFFFFC000F007FFFE0000E0007FF000002A3B7BB935>83 +D<003FFE00000003FFFFE000000FFFFFF800001FF00FFE00003FF003FF00003FF801FF80 +003FF800FFC0003FF800FFC0003FF8007FE0003FF8007FE0001FF0007FE0000FE0007FE0 +000380007FE0000000007FE0000000007FE00000003FFFE000000FFFFFE000007FFFFFE0 +0001FFF87FE00007FF807FE0000FFE007FE0003FF8007FE0003FF0007FE0007FE0007FE0 +00FFE0007FE000FFC0007FE000FFC0007FE000FFC0007FE000FFC0007FE000FFC000FFE0 +00FFE001FFE0007FE001FFE0003FF007FFF8001FFC1FBFFFC00FFFFE1FFFC003FFF80FFF +C0003FE003FFC02A257DA42E>97 D<00FF00000000FFFF00000000FFFF00000000FFFF00 +000000FFFF0000000007FF0000000003FF0000000003FF0000000003FF0000000003FF00 +00000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00 +00000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF01 +FF800003FF0FFFF00003FF3FFFFC0003FFFE03FF0003FFF000FF8003FFE0007FC003FF80 +003FE003FF00003FF003FF00001FF803FF00001FF803FF00001FFC03FF00000FFC03FF00 +000FFC03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00 +000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFC03FF00 +000FFC03FF00000FFC03FF00001FF803FF00001FF803FF00001FF003FF80003FF003FFC0 +007FE003FFE0007FC003FDF001FF8003F8FC07FE0003F03FFFF80003E00FFFE00003C003 +FF00002F3A7EB935>I<0001FFC000000FFFFC00007FFFFF0000FF80FF8003FE00FFC007 +FC01FFC00FF801FFC01FF801FFC01FF001FFC03FF001FFC03FF000FF807FE0007F007FE0 +001C007FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000 +0000FFE0000000FFE0000000FFE00000007FE00000007FE00000007FF00000003FF00000 +003FF00001E01FF80001E01FF80003E00FFC0007C007FE00078003FF001F8000FFC07E00 +007FFFFC00000FFFF0000001FF800023257DA42A>I<01F00007FC000FFE000FFE001FFF +001FFF001FFF001FFF001FFF000FFE000FFE0007FC0001F0000000000000000000000000 +0000000000000000000000000000000000FF007FFF007FFF007FFF007FFF0007FF0003FF +0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF +0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF +0003FF0003FF00FFFFF8FFFFF8FFFFF8FFFFF8153B7DBA1B>105 +D<00FE007FE0000FFC0000FFFE01FFFC003FFF8000FFFE07FFFF00FFFFE000FFFE1F81FF +83F03FF000FFFE3C00FF87801FF00007FE7800FFCF001FF80003FEF000FFDE001FF80003 +FFE0007FFC000FFC0003FFC0007FF8000FFC0003FFC0007FF8000FFC0003FF80007FF000 +0FFC0003FF80007FF0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00 +007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC +0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007F +E0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003 +FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE000 +0FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00 +007FE0000FFC00FFFFFC1FFFFF83FFFFF0FFFFFC1FFFFF83FFFFF0FFFFFC1FFFFF83FFFF +F0FFFFFC1FFFFF83FFFFF04C257DA451>109 D<0001FFC00000000FFFF80000007FFFFF +000000FF80FF800003FE003FE00007FC001FF0000FF8000FF8001FF00007FC001FF00007 +FC003FF00007FE003FE00003FE007FE00003FF007FE00003FF007FE00003FF00FFE00003 +FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003 +FF80FFE00003FF80FFE00003FF807FE00003FF007FE00003FF007FE00003FF003FE00003 +FE003FF00007FE001FF00007FC001FF00007FC000FF8000FF80007FC001FF00003FE003F +E00001FF80FFC000007FFFFF0000001FFFFC00000001FFC0000029257DA430>111 +D<00FE03F000FFFE0FFE00FFFE3FFF00FFFE7C7F80FFFEF8FFC007FEF0FFC003FFE0FFC0 +03FFC0FFC003FFC0FFC003FF807F8003FF803F0003FF800C0003FF80000003FF00000003 +FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF +00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00 +000003FF00000003FF00000003FF00000003FF000000FFFFFE0000FFFFFE0000FFFFFE00 +00FFFFFE000022257EA427>114 D<003FF03803FFFEF80FFFFFF81FC00FF83F0003F87E +0001F87C0000F8FC0000F8FC000078FE000078FF000078FF800000FFFC0000FFFFE0007F +FFFC007FFFFF803FFFFFC01FFFFFF00FFFFFF803FFFFF800FFFFFC001FFFFC00007FFE00 +0007FEF00001FEF00000FEF80000FEF800007EFC00007EFC00007CFE0000FCFF0000F8FF +8001F8FFF007F0FFFFFFC0F8FFFF00E01FF8001F257DA426>I<000F0000000F0000000F +0000000F0000000F0000001F0000001F0000001F0000001F0000003F0000003F0000007F +000000FF000000FF000001FF000007FF00001FFFFFE0FFFFFFE0FFFFFFE0FFFFFFE003FF +000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF +000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF +007803FF007803FF007803FF007803FF007803FF007803FF007803FF007803FF00F801FF +80F001FF81F000FFC3E0003FFFC0001FFF800003FE001D357EB425>I<00FF00003FC0FF +FF003FFFC0FFFF003FFFC0FFFF003FFFC0FFFF003FFFC007FF0001FFC003FF0000FFC003 +FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003 +FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003 +FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003 +FF0000FFC003FF0000FFC003FF0001FFC003FF0001FFC003FF0003FFC003FF0003FFC001 +FF0007FFC001FF800FFFE000FFC03EFFFF007FFFFCFFFF001FFFF0FFFF0003FF80FFFF30 +257DA435>I E /Ft 7 115 df<0000003FFE0000000003FFFFF00000000FFFFFFE000000 +3FFFFFFF800000FFFFFFFF800001FFFFFFFF800003FFE007FF00000FFF0000FF00001FFC +00001F00003FF800000700007FE000000300007FC00000000000FF800000000001FF0000 +00000003FF000000000003FE000000000007FC000000000007FC00000000000FF8000000 +00000FF800000000001FF000000000001FF000000000003FE000000000003FE000000000 +003FE000000000007FC000000000007FC000000000007FC000000000007FC00000000000 +7FC00000000000FF800000000000FF800000000000FF800000000000FF800000000000FF +800000000000FF800000000000FF800000000000FF800000000000FF800000000000FF80 +0000000000FF800000000000FF800000000000FF8000000000007FC000000000007FC000 +000000007FC000000000007FC000000000007FC000000000003FE000000000003FE00000 +0000003FE000000000001FF000000000001FF000000000000FF800000000000FF8000000 +000007FC000000000007FC000000000003FE000000000003FF000000000001FF00000000 +0000FF8000000080007FC000000180007FE000000380003FF800000F80001FFC00001FC0 +000FFF00007FC00003FFE003FFC00001FFFFFFFF800000FFFFFFFE0000003FFFFFFC0000 +000FFFFFF000000003FFFFC0000000003FFC000032497AC63E>67 +D<0000003FFC0000000001FFFFE00000000FFFFFF80000003FFFFFFF000000FFFFFFFFC0 +0001FFFFFFFFE00003FFE007FFE00007FF00007FE0001FFC00001FC0003FF8000007C000 +3FF0000003C0007FC0000001C000FF80000000C001FF800000000003FF000000000003FE +000000000007FC000000000007FC00000000000FF800000000000FF800000000001FF000 +000000001FF000000000003FE000000000003FE000000000003FE000000000007FC00000 +0000007FC000000000007FC000000000007FC000000000007FC00000000000FF80000000 +0000FF800000000000FF800000000000FF800000000000FF800000000000FF8000000000 +00FF800000000000FF800000000000FF800000000000FF800000000000FF800001FFFFF0 +FF800001FFFFF0FF800001FFFFF07FC00001FFFFF07FC00001FFFFF07FC00001FFFFF07F +C00000000FF07FC00000000FF03FE00000000FF03FE00000000FF03FE00000000FF01FF0 +0000000FF01FF00000000FF00FF80000000FF00FF80000000FF007FC0000000FF007FC00 +00000FF003FE0000000FF003FF0000000FF001FF8000000FF000FF8000000FF0007FC000 +000FF0003FF000000FF0003FF800000FF0001FFC00000FF00007FF00003FF00003FFE007 +FFF00001FFFFFFFFF00000FFFFFFFFE000003FFFFFFF0000000FFFFFFC00000001FFFFE0 +000000003FFC000034497AC641>71 D<FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF0FFFFFFFF +FFFFFFF0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF00000003FE0000000 +0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F +E00000000000003FE00000000000003FE00000000000003FE00000000000003FE0000000 +0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F +E00000000000003FE00000000000003FE00000000000003FE00000000000003FE0000000 +0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F +E00000000000003FE00000000000003FE00000000000003FE00000000000003FE0000000 +0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F +E00000000000003FE00000000000003FE00000000000003FE00000000000003FE0000000 +0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F +E00000000000003FE00000000000003FE00000000000003FE00000000000003FE0000000 +0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F +E00000000000003FE00000000000003FE00000000000003FE00000000000003FE0000000 +0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F +E00000000000003FE00000000000003FE00000000000003FE00000003C457DC443>84 +D<0007FE0000007FFFC00003FFFFE0000FFFFFF8001FFFFFFC001FFFFFFE001FF803FF00 +1F8001FF001E0000FF801800007F801000003FC00000003FC00000003FE00000001FE000 +00001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000 +7FFFE0000FFFFFE0003FFFFFE001FFFFFFE003FFFFFFE00FFFF01FE01FFE001FE03FF800 +1FE07FE0001FE07FC0001FE0FF80001FE0FF00001FE0FF00001FE0FF00001FE0FF00001F +E0FF00003FE0FF80003FE07FC0007FE07FE001FFE07FF80FFFE03FFFFFFFE01FFFFFFFE0 +1FFFFFDFE00FFFFF1FE003FFF81FE000FF800000232F7CAD2F>97 +D<0001FE00000007FFC000001FFFF000007FFFF80000FFFFFC0001FFFFFE0003FF03FF00 +07FC00FF000FF8007F800FF0003F801FE0001FC01FE0000FC03FC0000FE03F800007E07F +800007E07F800007E07F000007E07F000003F0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFF +FFFFF0FFFFFFFFF0FFFFFFFFF0FE00000000FE00000000FE00000000FF00000000FF0000 +00007F000000007F000000007F800000003F800000003FC00000003FC00000001FE00000 +001FF00000100FF800007007FC0001F003FE0007F003FF803FF001FFFFFFF000FFFFFFE0 +003FFFFF80001FFFFE000007FFF8000000FFC000242F7DAD2B>101 +D<00001FF00000FFFE0001FFFE0007FFFE000FFFFE001FFFFE003FF01E003FC002007F80 +00007F000000FE000000FE000001FE000001FE000001FE000001FE000001FE000001FE00 +0001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE0000FFFFFF +80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF8001FE000001FE000001FE000001FE00 +0001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE00 +0001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE00 +0001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE00 +0001FE000001FE000001FE000001FE000001FE000001FE000001FE00001F467EC51E>I< +00001FFE00FFFE03FFFE07FFFE1FFFFE3FFFFE7FFFFEFFF0FEFF80FFFE00FFFC00FFF800 +FFF000FFE000FFC000FFC000FF8000FF8000FF8000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000182D79AC21>114 +D E /Fu 25 118 df<7FFFFFFF00FFFFFFFF80FFFFFFFF80FFFFFFFF80FFFFFFFF807FFF +FFFF0021067B9B2C>45 D<1F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F000B0B70 +8A2C>I<00000007000000000F800000001F800000001F800000003F800000003F000000 +007F000000007E00000000FE00000000FC00000001FC00000001F800000003F800000003 +F000000003F000000007F000000007E00000000FE00000000FC00000001FC00000001F80 +0000003F800000003F000000007F000000007E00000000FE00000000FC00000000FC0000 +0001FC00000001F800000003F800000003F000000007F000000007E00000000FE0000000 +0FC00000001FC00000001F800000001F800000003F800000003F000000007F000000007E +00000000FE00000000FC00000001FC00000001F800000003F800000003F000000007F000 +000007E000000007E00000000FE00000000FC00000001FC00000001F800000003F800000 +003F000000007F000000007E00000000FE00000000FC00000000FC00000000F800000000 +780000000021417BB92C>I<00070000000F8000000F8000001F8000001F8000003F8000 +007F800000FF800001FF800007FF80007FFF8000FFFF8000FFDF8000FF9F80007C1F8000 +001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000 +001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000 +001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000 +001F8000001F8000001F8000001F8000001F80007FFFFFE0FFFFFFF0FFFFFFF0FFFFFFF0 +7FFFFFE01C3477B32C>49 D<000FF80000007FFF800001FFFFE00007FFFFF0000FFFFFFC +001FF80FFE003FE001FF003F80007F007F00003F807E00001F80FE00001FC0FE00000FC0 +FF00000FE0FF000007E0FF000007E0FF000007E07E000007E03C000007E000000007E000 +000007E00000000FE00000000FC00000001FC00000001F800000003F800000003F000000 +007F00000000FE00000001FC00000003FC00000007F80000000FF00000001FE00000003F +C0000000FF80000001FE00000003FC00000007F80000000FF00000003FE00000007F8000 +0000FF00000001FE00000003FC0003C007F80007E01FE00007E03FC00007E07FFFFFFFE0 +FFFFFFFFE0FFFFFFFFE0FFFFFFFFE07FFFFFFFC023347CB32C>I<000007F00000000FF8 +0000001FF80000003FF80000003FF80000007EF80000007EF8000000FCF8000001F8F800 +0001F8F8000003F0F8000007E0F8000007E0F800000FC0F800001F80F800001F80F80000 +3F00F800007E00F800007E00F80000FC00F80001F800F80001F800F80003F000F80003E0 +00F80007E000F8000FC000F8000FC000F8001F8000F8003F0000F8003F0000F8007E0000 +F800FC0000F800FFFFFFFFFCFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE7FFFFFFFFC000000F8 +00000000F800000000F800000000F800000000F800000000F800000000F800000000F800 +000000F800000000F80000007FFFF00000FFFFF80000FFFFF80000FFFFF800007FFFF027 +347EB32C>52 D<00003FC0000001FFF8000007FFFC00001FFFFE00003FFFFF00007FE07F +0000FF003F8001FE007F8003F8007F8007F0007F8007E0007F800FE0003F001FC0001E00 +1F800000003F800000003F000000003F000000007F000000007E000000007E03FE00007E +1FFF8000FC7FFFE000FDFFFFF000FFFFFFF800FFFE07FC00FFF001FE00FFC0007F00FF80 +003F80FF00001F80FF00001FC0FE00000FC0FE00000FE0FE000007E0FE000007E0FE0000 +07E07E000007E07E000007E07E000007E07E000007E03F000007E03F00000FE03F80000F +C01F80001FC01FC0001F800FC0003F800FE0007F0007F801FE0003FE07FC0001FFFFF800 +00FFFFF000007FFFE000001FFF80000007FC000023357CB32C>54 +D<7800000000FFFFFFFFC0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFC0FC00003F80 +FC00007F00FC0000FE00780000FC00000001FC00000003F800000007F000000007E00000 +000FE00000000FC00000001F800000003F800000003F000000007F000000007E00000000 +FE00000000FC00000001FC00000001F800000001F800000003F000000003F000000007F0 +00000007E000000007E000000007E00000000FC00000000FC00000000FC00000000FC000 +00001F800000001F800000001F800000001F800000001F800000003F800000003F000000 +003F000000003F000000003F000000003F000000003F000000003F000000003F00000000 +3F000000003F000000001E00000023357CB32C>I<0007FC0000003FFF800000FFFFE000 +03FFFFF80007FFFFFC000FFC07FE001FF001FF001FC0007F003F80003F803F00001F807F +00001FC07E00000FC07E00000FC07E00000FC07E00000FC07E00000FC03F00001F803F00 +001F801F80003F001FC0007F000FF001FE0003FC07F80001FFFFF000007FFFC0000007FC +0000007FFFC00001FFFFF00003FC07F8000FF001FE001FC0007F001F80003F003F00001F +807E00000FC07E00000FC0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0 +FC000007E0FC000007E07E00000FC07E00000FC07F00001FC03F80003F801FC0007F001F +F001FF000FFC07FE0007FFFFFC0003FFFFF80000FFFFE000003FFF80000007FC00002335 +7CB32C>I<0007FC0000003FFF000000FFFFC00001FFFFE00003FFFFF00007FC07F8000F +F001FC001FE000FE003F80007E003F80007F007F00003F007E00001F80FE00001F80FC00 +001F80FC00000FC0FC00000FC0FC00000FC0FC00000FC0FC00000FE0FC00000FE0FC0000 +0FE0FE00000FE07E00000FE07F00001FE03F00001FE03F80003FE01FC0007FE00FF001FF +E007FC0FFFE003FFFFFFE001FFFFF7E000FFFFC7E0003FFF0FE0000FF80FC00000000FC0 +0000000FC00000001FC00000001F800000003F800000003F000F00007F001F80007E003F +C000FE003FC001FC003FC003F8003FC007F8003F801FF0001FE07FE0001FFFFFC0000FFF +FF000007FFFE000001FFF80000007FC0000023357CB32C>I<1F003F807FC0FFE0FFE0FF +E0FFE0FFE07FC03F801F0000000000000000000000000000000000000000000000000000 +0000001F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F000B2470A32C>I<00007F80 +000003FFE000000FFFF000003FFFF800007FFFFC0000FFC0FE0001FE007F0003F8003F00 +07F0001F8007E00FCF800FC03FFF801F807FFFC01F80FFFFC03F01FFFFC03E03F87FC03E +07F03FE07E07E01FE07C0FC00FE07C0F8007E07C0F8007E0FC1F8007E0F81F0003E0F81F +0003E0F81F0003E0F81F0003E0F81F0003E0F81F0003E0F81F0003E0F81F0003E0F81F00 +03E0FC1F8007E07C0F8007C07C0F8007C07C0FC00FC07E07E01F803E07F03F803E03F87F +003F01FFFE001F80FFFC001F807FF8000FC03FF00007E00FC00007F00007C003F8000FE0 +01FE001FE000FFC0FFE0007FFFFFC0003FFFFF80000FFFFE000003FFF80000007FC00023 +337CB22C>64 D<7FFFFF0000FFFFFFC000FFFFFFF000FFFFFFF8007FFFFFFC0007E003FE +0007E000FF0007E0007F8007E0003F8007E0001FC007E0000FE007E0000FE007E00007E0 +07E00007F007E00003F007E00003F807E00001F807E00001F807E00001F807E00001F807 +E00000FC07E00000FC07E00000FC07E00000FC07E00000FC07E00000FC07E00000FC07E0 +0000FC07E00000FC07E00000FC07E00000FC07E00000FC07E00001F807E00001F807E000 +01F807E00003F807E00003F007E00003F007E00007F007E00007E007E0000FE007E0001F +C007E0003FC007E0007F8007E000FF0007E003FE007FFFFFFC00FFFFFFF800FFFFFFF000 +FFFFFFC0007FFFFF000026337EB22C>68 D<01FFF0000007FFFE00001FFFFF80001FFFFF +E0003FFFFFF0003FC01FF8003FC007F8003FC001FC001F8000FC00060000FE000000007E +000000007E000000007E000000FFFE00001FFFFE0000FFFFFE0003FFFFFE000FFFFFFE00 +1FFF807E003FF8007E007FC0007E007F00007E00FE00007E00FC00007E00FC00007E00FC +00007E00FC00007E00FE00007E007F0000FE007F8003FE003FE01FFE001FFFFFFFFC0FFF +FFFFFE07FFFFBFFE01FFFE1FFE003FF007FC27247CA32C>97 D<7FF0000000FFF8000000 +FFF8000000FFF80000007FF800000001F800000001F800000001F800000001F800000001 +F800000001F800000001F800000001F800000001F800000001F800000001F81FE00001F8 +FFF80001FBFFFE0001FFFFFF0001FFFFFF8001FFF07FC001FF801FE001FF0007F001FE00 +03F801FC0003F801FC0001FC01F80000FC01F80000FC01F80000FE01F800007E01F80000 +7E01F800007E01F800007E01F800007E01F800007E01F800007E01F800007E01F80000FE +01FC0000FC01FC0000FC01FC0001F801FE0003F801FF0007F001FF000FF001FF801FE001 +FFE07FC001FFFFFF8001FFFFFF0001FBFFFE0001F8FFF80000F03FC00027337FB22C>I< +0003FFE000001FFFF800007FFFFE0001FFFFFE0003FFFFFF0007FE00FF000FF000FF001F +E000FF001FC0007E003F800018003F000000007F000000007E000000007E00000000FC00 +000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0000 +00007E000000007E000000007F000000003F00000F003F80001F801FC0001F801FE0003F +800FF0007F0007FE03FF0003FFFFFE0001FFFFFC00007FFFF800001FFFE0000003FF0000 +21247AA32C>I<00000FFE0000001FFF0000001FFF0000001FFF0000000FFF000000003F +000000003F000000003F000000003F000000003F000000003F000000003F000000003F00 +0000003F000000003F000007F83F00003FFE3F0000FFFFBF0001FFFFFF0003FFFFFF0007 +FC0FFF000FF003FF001FE001FF001FC000FF003F80007F003F00007F007E00003F007E00 +003F00FE00003F00FC00003F00FC00003F00FC00003F00FC00003F00FC00003F00FC0000 +3F00FC00003F00FC00003F00FE00003F007E00007F007E00007F007F0000FF003F8000FF +003F8001FF001FC003FF000FF007FF0007FC1FFF0003FFFFFFFC01FFFFBFFE00FFFF3FFE +003FFC3FFE000FF01FFC27337DB22C>I<0003FE0000001FFFC000007FFFF00001FFFFF8 +0003FFFFFC0007FE03FE000FF800FF001FE0003F801FC0003F803F80001FC03F00000FC0 +7F00000FC07E00000FE07E000007E0FC000007E0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FF +FFFFFFE0FFFFFFFFC0FC00000000FE000000007E000000007E000000007F000000003F00 +0003C03F800007E01FC00007E00FF0000FE007F8003FC007FF00FFC001FFFFFF8000FFFF +FF00003FFFFC00000FFFF0000001FF800023247CA32C>I<00070000001FC000001FC000 +003FE000003FE000003FE000001FC000001FC00000070000000000000000000000000000 +000000000000000000000000000000007FFFC0007FFFE000FFFFE0007FFFE0007FFFE000 +0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 +0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 +0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0007FFFFFFC +FFFFFFFEFFFFFFFEFFFFFFFE7FFFFFFC1F3479B32C>105 D<7FFFE00000FFFFF00000FF +FFF00000FFFFF000007FFFF000000003F000000003F000000003F000000003F000000003 +F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0 +00000003F000000003F000000003F000000003F000000003F000000003F000000003F000 +000003F000000003F000000003F000000003F000000003F000000003F000000003F00000 +0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000 +03F000000003F000000003F000000003F000000003F000000003F000000003F000000003 +F000007FFFFFFF80FFFFFFFFC0FFFFFFFFC0FFFFFFFFC07FFFFFFF8022337BB22C>108 +D<0007FC0000001FFF0000007FFFC00001FFFFF00003FFFFF80007FC07FC000FF001FE00 +1FE000FF001F80003F003F80003F803F00001F807E00000FC07E00000FC07E00000FC0FC +000007E0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0FE00 +000FE07E00000FC07E00000FC07F00001FC03F00001F803F80003F801FC0007F001FE000 +FF000FF001FE0007FC07FC0003FFFFF80001FFFFF000007FFFC000001FFF00000007FC00 +0023247CA32C>111 D<7FF01FE000FFF8FFF800FFFBFFFE00FFFFFFFF007FFFFFFF8001 +FFF07FC001FF801FE001FF0007F001FE0003F801FC0003F801FC0001FC01F80000FC01F8 +0000FC01F80000FE01F800007E01F800007E01F800007E01F800007E01F800007E01F800 +007E01F800007E01F800007E01F80000FE01FC0000FC01FC0000FC01FC0001F801FE0003 +F801FF0007F001FF000FF001FF801FE001FFE07FC001FFFFFF8001FFFFFF0001FBFFFE00 +01F8FFF80001F83FC00001F800000001F800000001F800000001F800000001F800000001 +F800000001F800000001F800000001F800000001F800000001F800000001F800000001F8 +0000007FFFE00000FFFFF00000FFFFF00000FFFFF000007FFFE0000027367FA32C>I<7F +FE003FC0FFFF01FFF0FFFF07FFF8FFFF1FFFFC7FFF3FFFFC003F7FE1FC003FFF01FC003F +FC00F8003FF80070003FF00000003FE00000003FE00000003FC00000003F800000003F80 +0000003F800000003F000000003F000000003F000000003F000000003F000000003F0000 +00003F000000003F000000003F000000003F000000003F000000003F000000003F000000 +003F000000003F0000007FFFFFE000FFFFFFF000FFFFFFF000FFFFFFF0007FFFFFE00026 +247EA32C>114 D<001E000000003F000000003F000000003F000000003F000000003F00 +0000003F000000003F000000003F000000003F0000007FFFFFFF00FFFFFFFF80FFFFFFFF +80FFFFFFFF807FFFFFFF00003F000000003F000000003F000000003F000000003F000000 +003F000000003F000000003F000000003F000000003F000000003F000000003F00000000 +3F000000003F000000003F000000003F000000003F000000003F0003C0003F0007E0003F +0007E0003F0007E0003F0007E0003F0007E0003F800FE0001F801FC0001FE07FC0000FFF +FF80000FFFFF000003FFFE000001FFF80000003FE000232E7EAD2C>116 +D<7FF003FF8000FFF807FFC000FFF807FFC000FFF807FFC0007FF803FFC00001F8000FC0 +0001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0 +0001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0 +0001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0 +0001F8000FC00001F8000FC00001F8001FC00001F8001FC00001F8003FC00001FC007FC0 +0000FE03FFC00000FFFFFFFF00007FFFFFFF80003FFFFFFF80001FFFCFFF800003FE07FF +0029247FA32C>I E /Fv 34 125 df<001F00001F80003F80007F80007F8000FF0001FE +0003FC0003F80007F0000FE0000F80001F00003E00003C0000780000E000004000001112 +6CC431>19 D<FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC01A067F9721> +45 D<0000000FFE000060000000FFFFC000E0000003FFFFF000E000000FFC01FC01E000 +003FC0003E01E00000FF00000F83E00003FC000003C7E00007F8000001E7E0000FF00000 +00FFE0001FE00000007FE0003FC00000003FE0007F800000001FE000FF000000000FE001 +FE000000000FE001FC0000000007E003FC0000000007E007F80000000003E007F8000000 +0003E00FF00000000001E00FF00000000001E01FE00000000000E01FE00000000000E03F +E00000000000E03FE00000000000E03FC00000000000607FC00000000000607FC0000000 +0000607FC00000000000607FC0000000000000FF80000000000000FF80000000000000FF +80000000000000FF80000000000000FF80000000000000FF80000000000000FF80000000 +000000FF80000000000000FF80000000000000FF80000000000000FF80000000000000FF +80000000000000FF80000000000000FF800000000000007FC00000000000007FC0000000 +0000007FC00000000000607FC00000000000603FC00000000000603FE00000000000603F +E00000000000601FE00000000000E01FF00000000000E00FF00000000000C00FF0000000 +0000C007F80000000001C007F800000000018003FC00000000038001FC00000000038001 +FE00000000070000FF000000000600007F800000000E00003FC00000001C00001FE00000 +003800000FF000000078000007F8000000F0000003FC000001E0000000FF000007800000 +003FC0001F000000000FFC00FC0000000003FFFFF00000000000FFFFC000000000000FFE +0000003B487BC546>67 D<FFFFFFFFFF00000000FFFFFFFFFFF0000000FFFFFFFFFFFC00 +000001FFC00007FF00000000FF8000007FC00000007F8000001FE00000007F80000007F0 +0000007F80000003FC0000007F80000001FE0000007F80000000FF0000007F800000007F +0000007F800000003F8000007F800000001FC000007F800000000FE000007F800000000F +E000007F8000000007F000007F8000000007F800007F8000000003F800007F8000000003 +FC00007F8000000003FC00007F8000000001FC00007F8000000001FE00007F8000000001 +FE00007F8000000001FE00007F8000000001FF00007F8000000000FF00007F8000000000 +FF00007F8000000000FF00007F8000000000FF80007F8000000000FF80007F8000000000 +FF80007F8000000000FF80007F8000000000FF80007F8000000000FF80007F8000000000 +FF80007F8000000000FF80007F8000000000FF80007F8000000000FF80007F8000000000 +FF80007F8000000000FF80007F8000000000FF80007F8000000000FF00007F8000000000 +FF00007F8000000000FF00007F8000000001FF00007F8000000001FE00007F8000000001 +FE00007F8000000001FE00007F8000000001FC00007F8000000003FC00007F8000000003 +F800007F8000000007F800007F8000000007F000007F800000000FF000007F800000000F +E000007F800000001FC000007F800000003FC000007F800000003F8000007F800000007F +0000007F80000000FE0000007F80000003FC0000007F80000007F80000007F8000001FE0 +000000FF8000007FC0000001FFC00007FF000000FFFFFFFFFFFC000000FFFFFFFFFFF000 +0000FFFFFFFFFF0000000041447CC34B>I<FFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFF +FFFFF001FFC000007FF0007F8000000FF8007F80000003F8007F80000001F8007F800000 +00F8007F8000000078007F8000000038007F8000000038007F800000001C007F80000000 +1C007F800000001C007F800000000C007F800000000C007F800000000C007F800000000C +007F800000000E007F8000000006007F80000C0006007F80000C0006007F80000C000000 +7F80000C0000007F80000C0000007F80000C0000007F80000C0000007F80001C0000007F +80001C0000007F80003C0000007F80007C0000007F8001FC0000007FFFFFFC0000007FFF +FFFC0000007FFFFFFC0000007F8001FC0000007F80007C0000007F80003C0000007F8000 +1C0000007F80001C0000007F80000C0000007F80000C0000007F80000C0000007F80000C +0000007F80000C0000007F80000C0000007F80000C0000007F8000000000007F80000000 +00007F8000000000007F8000000000007F8000000000007F8000000000007F8000000000 +007F8000000000007F8000000000007F8000000000007F8000000000007F800000000000 +7F8000000000007F8000000000007F8000000000007F8000000000007FC00000000001FF +E000000000FFFFFFF8000000FFFFFFF8000000FFFFFFF800000037447CC340>70 +D<FFFFFFC003FFFFFFFFFFFFC003FFFFFFFFFFFFC003FFFFFF01FFE0000007FF80007F80 +000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE +00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80 +000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE +00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80 +000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE +00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007FFF +FFFFFFFE00007FFFFFFFFFFE00007FFFFFFFFFFE00007F80000001FE00007F80000001FE +00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80 +000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE +00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80 +000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE +00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80 +000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE +00007F80000001FE0001FFE0000007FF80FFFFFFC003FFFFFFFFFFFFC003FFFFFFFFFFFF +C003FFFFFF40447CC349>72 D<FFFFFFF0FFFFFFF0FFFFFFF000FFF000007FE000003FC0 +00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0 +00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0 +00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0 +00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0 +00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0 +00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0 +00003FC000003FC000003FC000007FE00000FFF000FFFFFFF0FFFFFFF0FFFFFFF01C447D +C323>I<FFFFFFF8000000FFFFFFF8000000FFFFFFF800000001FFE000000000007FC000 +000000007F8000000000007F8000000000007F8000000000007F8000000000007F800000 +0000007F8000000000007F8000000000007F8000000000007F8000000000007F80000000 +00007F8000000000007F8000000000007F8000000000007F8000000000007F8000000000 +007F8000000000007F8000000000007F8000000000007F8000000000007F800000000000 +7F8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F +8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F80 +00000000007F8000000000007F8000000000007F8000000000007F8000000000007F8000 +000000007F8000000000007F8000000030007F8000000030007F8000000030007F800000 +0030007F8000000070007F8000000060007F8000000060007F8000000060007F80000000 +60007F8000000060007F80000000E0007F80000000E0007F80000000E0007F80000001C0 +007F80000001C0007F80000003C0007F80000007C0007F80000007C0007F8000000FC000 +7F8000003FC0007F8000007FC0007F800001FFC001FFC0001FFF80FFFFFFFFFFFF80FFFF +FFFFFFFF80FFFFFFFFFFFF8034447CC33D>76 D<FFFFFFFFFC0000FFFFFFFFFFC000FFFF +FFFFFFF80001FFC0000FFC00007F800001FF00007F8000007F80007F8000001FE0007F80 +00000FE0007F80000007F0007F80000007F8007F80000003FC007F80000003FC007F8000 +0003FE007F80000001FE007F80000001FE007F80000001FF007F80000001FF007F800000 +01FF007F80000001FF007F80000001FF007F80000001FF007F80000001FF007F80000001 +FE007F80000001FE007F80000003FE007F80000003FC007F80000003FC007F80000007F8 +007F80000007F0007F8000000FE0007F8000001FC0007F8000007F80007F800001FE0000 +7F80000FFC00007FFFFFFFF000007FFFFFFF8000007F8000000000007F8000000000007F +8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F80 +00000000007F8000000000007F8000000000007F8000000000007F8000000000007F8000 +000000007F8000000000007F8000000000007F8000000000007F8000000000007F800000 +0000007F8000000000007F8000000000007F8000000000007F8000000000007F80000000 +00007F8000000000007F8000000000007F8000000000007F8000000000007F8000000000 +01FFE000000000FFFFFFC0000000FFFFFFC0000000FFFFFFC000000038447CC342>80 +D<FFFFFFFFE000000000FFFFFFFFFF00000000FFFFFFFFFFC000000001FFC0003FF80000 +00007F800003FC000000007F800000FF000000007F8000007F800000007F8000003FC000 +00007F8000001FE00000007F8000000FF00000007F80000007F80000007F80000007F800 +00007F80000007FC0000007F80000003FC0000007F80000003FE0000007F80000003FE00 +00007F80000003FE0000007F80000003FE0000007F80000003FE0000007F80000003FE00 +00007F80000003FE0000007F80000003FC0000007F80000003FC0000007F80000007FC00 +00007F80000007F80000007F8000000FF00000007F8000000FF00000007F8000001FE000 +00007F8000003FC00000007F8000007F000000007F800001FE000000007F800007F80000 +00007F80003FE0000000007FFFFFFF00000000007FFFFFFC00000000007F80007F800000 +00007F80000FE0000000007F800007F0000000007F800003FC000000007F800001FE0000 +00007F800000FE000000007F800000FF000000007F8000007F800000007F8000007F8000 +00007F8000003FC00000007F8000003FC00000007F8000003FC00000007F8000003FC000 +00007F8000003FC00000007F8000003FC00000007F8000003FC00000007F8000003FE000 +00007F8000003FE00000007F8000003FE00000007F8000003FE00000007F8000003FE000 +00007F8000003FE00000007F8000003FE00000007F8000003FE00060007F8000003FF000 +60007F8000001FF00060007F8000001FF00060007F8000001FF000E0007F8000000FF800 +C001FFE0000007F801C0FFFFFFC00007F80180FFFFFFC00001FC0380FFFFFFC00000FE07 +000000000000003FFE0000000000000007F80043467CC348>82 D<FFFFFFC0000FFFFFFF +FFFFC0000FFFFFFFFFFFC0000FFFFF01FFE0000000FFF0007F800000001F80007F800000 +000F00007F800000000F00007F800000000600007F800000000600007F80000000060000 +7F800000000600007F800000000600007F800000000600007F800000000600007F800000 +000600007F800000000600007F800000000600007F800000000600007F80000000060000 +7F800000000600007F800000000600007F800000000600007F800000000600007F800000 +000600007F800000000600007F800000000600007F800000000600007F80000000060000 +7F800000000600007F800000000600007F800000000600007F800000000600007F800000 +000600007F800000000600007F800000000600007F800000000600007F80000000060000 +7F800000000600007F800000000600007F800000000600007F800000000600007F800000 +000600007F800000000600007F800000000600007F800000000600007F80000000060000 +7F800000000600007F800000000600007F800000000600007F800000000600007F800000 +000E00003FC00000000C00003FC00000000C00003FC00000001C00001FC00000001C0000 +1FE00000001800000FE00000003800000FE000000030000007F000000070000007F00000 +00E0000003F8000001E0000001FC000001C0000000FE000007800000007F00000F000000 +003F80001E000000001FE0007C0000000007FC03F00000000001FFFFE000000000007FFF +80000000000007FC00000040467CC349>85 D<FFFFFF0007FFFFF8000FFFFEFFFFFF0007 +FFFFF8000FFFFEFFFFFF0007FFFFF8000FFFFE03FFE000001FFF000000FFF001FF800000 +0FFC0000003FC001FF00000007F80000001F0000FF00000007F80000000F0000FF000000 +07F80000000E00007F80000003FC0000000E00007F80000003FC0000000C00007F800000 +03FC0000000C00003FC0000003FE0000001800003FC0000003FE0000001800003FC00000 +03FE0000001800003FE0000006FF0000003800001FE0000006FF0000003000001FE00000 +06FF0000003000001FF000000EFF8000007000000FF000000C7F8000006000000FF00000 +0C7F8000006000000FF800001C7FC0000060000007F80000183FC00000C0000007F80000 +183FC00000C0000007F80000183FE00000C0000003FC0000301FE0000180000003FC0000 +301FE0000180000003FC0000301FE0000180000001FE0000600FF0000300000001FE0000 +600FF0000300000001FE0000600FF0000300000000FF0000C007F8000600000000FF0000 +C007F8000600000000FF0000C007F8000600000000FF8001C007FC000E000000007F8001 +8003FC000C000000007F80018003FC000C000000007FC0038003FE000C000000003FC003 +0001FE0018000000003FC0030001FE0018000000003FE0030001FF0018000000001FE006 +0000FF0030000000001FE0060000FF0030000000001FE0060000FF0030000000000FF00C +00007F8060000000000FF00C00007F8060000000000FF00C00007F80600000000007F818 +00003FC0C00000000007F81800003FC0C00000000007F81800003FC0C00000000007FC30 +00001FE1C00000000003FC3000001FE1800000000003FC3000001FE1800000000003FE70 +00001FF3800000000001FE6000000FF3000000000001FE6000000FF3000000000001FFE0 +00000FFB000000000000FFC0000007FE000000000000FFC0000007FE000000000000FFC0 +000007FE0000000000007F80000003FC0000000000007F80000003FC0000000000007F80 +000003FC0000000000003F00000001F80000000000003F00000001F80000000000003F00 +000001F80000000000001E00000000F00000000000001E00000000F00000000000001E00 +000000F00000000000001E00000000F00000000000000C00000000600000005F467EC364 +>87 D<0007FC000000003FFF80000000F80FE0000003C003F00000070001F800000E0000 +FC00000FC0007E00001FE0007F00001FF0003F80001FF0003F80001FF0003F80001FF000 +1FC0001FF0001FC0000FE0001FC0000380001FC0000000001FC0000000001FC000000000 +1FC0000000001FC00000000FFFC0000001FFFFC000000FFE1FC000003FC01FC00000FF00 +1FC00003FC001FC00007F8001FC0000FF0001FC0001FE0001FC0003FC0001FC0007FC000 +1FC0007F80001FC0007F80001FC060FF00001FC060FF00001FC060FF00001FC060FF0000 +3FC060FF00003FC060FF00003FC060FF80007FC0607F8000EFC0607FC000C7E0C03FC001 +C7E0C01FE00783F1C007F81E03FF8001FFFC01FF00001FE0007C002B2E7CAC31>97 +D<01FC00000000FFFC00000000FFFC00000000FFFC0000000007FC0000000003FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 +0001FC0000000001FC03FC000001FC0FFF800001FC3C07E00001FC7001F80001FDE0007E +0001FD80003F0001FF80001F8001FF00001FC001FE00000FE001FC000007E001FC000007 +F001FC000007F001FC000003F801FC000003F801FC000003FC01FC000003FC01FC000001 +FC01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001 +FE01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001 +FC01FC000003FC01FC000003FC01FC000003F801FC000003F801FC000007F001FC000007 +F001FE00000FE001FE00000FC001FF00001FC001FB00003F8001F380007E0001E1C000FC +0001E0F001F80001C03C07E00001801FFF8000000003FC00002F467DC436>I<00007F80 +000003FFF000000FC07C00003F000F0000FC00038001F80001C003F8000FC007F0001FE0 +07E0003FE00FE0003FE01FC0003FE01FC0003FE03F80003FE03F80001FC07F800007007F +800000007F800000007F00000000FF00000000FF00000000FF00000000FF00000000FF00 +000000FF00000000FF00000000FF00000000FF00000000FF00000000FF000000007F0000 +00007F800000007F800000003F800000003F800000303FC00000301FC00000700FE00000 +600FE00000E007F00000C003F80001C001F800038000FC000700003F001E00001FC07800 +0007FFF0000000FF8000242E7DAC2B>I<000000007F000000003FFF000000003FFF0000 +00003FFF0000000001FF0000000000FF00000000007F00000000007F00000000007F0000 +0000007F00000000007F00000000007F00000000007F00000000007F00000000007F0000 +0000007F00000000007F00000000007F00000000007F00000000007F00000000007F0000 +0000007F00000000007F00000000007F00000000007F0000007F807F000003FFF07F0000 +0FC07C7F00003F000E7F00007E00077F0000FC0003FF0003F80001FF0007F00000FF0007 +E00000FF000FE000007F001FC000007F001FC000007F003F8000007F003F8000007F007F +8000007F007F8000007F007F0000007F00FF0000007F00FF0000007F00FF0000007F00FF +0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF +0000007F00FF0000007F007F0000007F007F8000007F007F8000007F003F8000007F003F +8000007F001FC000007F001FC000007F000FC00000FF000FE00000FF0007F00001FF0003 +F00003FF0001F800077F8000FC000E7FC0003F001C7FFE000FC0F87FFE0003FFE07FFE00 +007F007F002F467DC436>I<0001FE00000007FFC000001F03F000007E00FC0000FC007E +0001F8003F0003F0003F0007E0001F800FE0001FC00FC0000FC01FC0000FC03F80000FE0 +3F800007E03F800007E07F800007F07F000007F07F000007F0FF000007F0FF000007F0FF +000007F0FFFFFFFFF0FFFFFFFFF0FF00000000FF00000000FF00000000FF00000000FF00 +000000FF000000007F000000007F000000007F800000007F800000003F800000003F8000 +00301FC00000301FC00000700FC00000600FE00000E007F00000C003F00001C001F80003 +8000FC000700003E001E00001F80F8000003FFE0000000FF0000242E7DAC2B>I<00000F +E00000007FF8000001F81E000003F03F00000FE07F80001FC0FF80001F80FF80003F80FF +80007F00FF80007F00FF80007F007F0000FE001C0000FE00000000FE00000000FE000000 +00FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000 +FE00000000FE00000000FE00000000FE00000000FE000000FFFFFF8000FFFFFF8000FFFF +FF800000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00 +000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000 +0000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000000 +00FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000 +FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE +00000001FF8000007FFFFF00007FFFFF00007FFFFF000021467EC51E>I<000000000F80 +0001FC007FE0000FFF81F0F0003F07E381F000FC01FF03F001F800FE01F003F0007E01E0 +07F0007F000007E0003F00000FE0003F80000FC0001F80001FC0001FC0001FC0001FC000 +1FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC000 +1FC0001FC0000FC0001F80000FE0003F800007E0003F000007F0007F000003F0007E0000 +01F800FC000001FC01F8000003BF07E00000030FFF8000000701FC000000070000000000 +0700000000000F00000000000F00000000000F00000000000F800000000007C000000000 +07E00000000007FFFFF8000003FFFFFF000003FFFFFFE00001FFFFFFF800007FFFFFFC00 +01FFFFFFFE0007C0000FFF000F800000FF003F0000003F803E0000001F807C0000000FC0 +7C0000000FC0F800000007C0F800000007C0F800000007C0F800000007C0F800000007C0 +FC0000000FC07C0000000F807E0000001F803E0000001F001F0000003E000F8000007C00 +07E00001F80001F80007E000007F003F8000001FFFFE00000001FFE000002C427DAC31> +I<01FC00000000FFFC00000000FFFC00000000FFFC0000000007FC0000000003FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 +0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 +0001FC0000000001FC01FE000001FC07FFC00001FC1E07F00001FC3801F80001FC7001FC +0001FCE000FC0001FDC000FE0001FD8000FE0001FF80007F0001FF00007F0001FF00007F +0001FE00007F0001FE00007F0001FE00007F0001FC00007F0001FC00007F0001FC00007F +0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F +0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F +0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F +0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0003FE0000FF +80FFFFF83FFFFEFFFFF83FFFFEFFFFF83FFFFE2F457DC436>I<01E00007F80007F8000F +FC000FFC000FFC000FFC0007F80007F80001E00000000000000000000000000000000000 +000000000000000000000000000000000000000000000001FC00FFFC00FFFC00FFFC0007 +FC0003FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001 +FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001 +FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0003 +FE00FFFFF8FFFFF8FFFFF815437DC21C>I<01FC00FFFC00FFFC00FFFC0007FC0003FC00 +01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 +01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 +01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 +01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 +01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0003FE00 +FFFFF8FFFFF8FFFFF815457DC41C>108 D<01FC00FF00001FE00000FFFC07FFE000FFFC +0000FFFC0F03F801E07F0000FFFC3C01FC07803F800007FC7000FE0E001FC00003FCE000 +7E1C000FC00001FDC0007F38000FE00001FD80007F30000FE00001FF80003FF00007F000 +01FF00003FE00007F00001FF00003FE00007F00001FE00003FC00007F00001FE00003FC0 +0007F00001FE00003FC00007F00001FC00003F800007F00001FC00003F800007F00001FC +00003F800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F800007 +F00001FC00003F800007F00001FC00003F800007F00001FC00003F800007F00001FC0000 +3F800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F800007F000 +01FC00003F800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F80 +0007F00001FC00003F800007F00001FC00003F800007F00001FC00003F800007F00001FC +00003F800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F800007 +F00001FC00003F800007F00001FC00003F800007F00003FE00007FC0000FF800FFFFF81F +FFFF03FFFFE0FFFFF81FFFFF03FFFFE0FFFFF81FFFFF03FFFFE04B2C7DAB52>I<01FC01 +FE0000FFFC07FFC000FFFC1E07F000FFFC3801F80007FC7001FC0003FCE000FC0001FDC0 +00FE0001FD8000FE0001FF80007F0001FF00007F0001FF00007F0001FE00007F0001FE00 +007F0001FE00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00 +007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00 +007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00 +007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00 +007F0001FC00007F0001FC00007F0001FC00007F0003FE0000FF80FFFFF83FFFFEFFFFF8 +3FFFFEFFFFF83FFFFE2F2C7DAB36>I<00007F8000000003FFF00000000FC0FC0000003E +001F0000007C000F800000F80007C00001F00003E00003E00001F00007C00000F8000FC0 +0000FC000FC00000FC001F8000007E003F8000007F003F8000007F003F0000003F007F00 +00003F807F0000003F807F0000003F807F0000003F80FF0000003FC0FF0000003FC0FF00 +00003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF00 +00003FC0FF0000003FC07F0000003F807F0000003F807F8000007F803F8000007F003F80 +00007F001F8000007E001FC00000FE000FC00000FC000FE00001FC0007E00001F80003F0 +0003F00001F80007E00000FC000FC000003E001F0000001FC0FE00000007FFF800000000 +7F8000002A2E7DAC31>I<01FC03FC0000FFFC0FFF8000FFFC3C07E000FFFC7001F80007 +FDE000FE0001FD80007F0001FF80003F8001FF00001FC001FE00001FE001FC00000FE001 +FC00000FF001FC000007F001FC000007F801FC000003F801FC000003FC01FC000003FC01 +FC000003FC01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001FE01 +FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001FE01 +FC000003FC01FC000003FC01FC000003FC01FC000007F801FC000007F801FC000007F001 +FC00000FF001FE00000FE001FE00001FC001FF00003FC001FF00003F8001FF80007E0001 +FDC000FC0001FCF003F80001FC3C0FE00001FC1FFF800001FC03FC000001FC0000000001 +FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001 +FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001 +FC0000000003FE00000000FFFFF8000000FFFFF8000000FFFFF80000002F3F7DAB36>I< +00007F8003000003FFE00700000FE0780700003F801C0F00007E000E0F0000FC00071F00 +03F800039F0007F80001BF0007F00001FF000FE00000FF001FE00000FF001FC00000FF00 +3FC000007F003FC000007F007F8000007F007F8000007F007F8000007F00FF0000007F00 +FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F00 +FF0000007F00FF0000007F00FF0000007F00FF0000007F007F8000007F007F8000007F00 +7F8000007F003F8000007F003FC000007F001FC000007F001FE00000FF000FE00000FF00 +0FF00001FF0007F00001FF0003F80003FF0001FC00077F0000FE000E7F00003F001C7F00 +000FC0F87F000003FFE07F0000007F007F00000000007F00000000007F00000000007F00 +000000007F00000000007F00000000007F00000000007F00000000007F00000000007F00 +000000007F00000000007F00000000007F00000000007F00000000007F0000000000FF80 +0000003FFFFE0000003FFFFE0000003FFFFE2F3F7DAB33>I<03F803F0FFF81FFCFFF83C +3EFFF8707F07F8E0FF03F9C0FF01F980FF01FB80FF01FB007E01FB003C01FF000001FE00 +0001FE000001FE000001FE000001FC000001FC000001FC000001FC000001FC000001FC00 +0001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC00 +0001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC00 +0001FC000003FF0000FFFFFE00FFFFFE00FFFFFE00202C7DAB26>I<003FE01801FFFC38 +07E01F780F0003F81E0001F83C0000F87C00007878000078F8000038F8000038F8000018 +F8000018FC000018FC000018FE000018FF8000007FC000007FFC00003FFFE0001FFFFC00 +0FFFFF0007FFFFC003FFFFE000FFFFF0001FFFF80000FFF800000FFC000003FCC00001FE +C00000FEC000007EE000007EE000003EE000003EF000003EF000003EF000003EF800003C +FC00007CFC000078FE0000F8FF0001F0F38003E0F1F00F80E07FFE00C00FF0001F2E7DAC +26>I<0006000000060000000600000006000000060000000E0000000E0000000E000000 +0E0000001E0000001E0000001E0000003E0000007E0000007E000000FE000001FE000007 +FE00001FFFFFF0FFFFFFF0FFFFFFF000FE000000FE000000FE000000FE000000FE000000 +FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000 +FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000C00 +FE000C00FE000C00FE000C00FE000C00FE000C00FE000C00FE000C00FE000C00FE000C00 +7E001C007F0018007F0018003F0038001F8030001FC0700007E0E00001FFC000007F001E +3E7EBC26>I<01FC00007F00FFFC003FFF00FFFC003FFF00FFFC003FFF0007FC0001FF00 +03FC0000FF0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F00 +01FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F00 +01FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F00 +01FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F00 +01FC00007F0001FC00007F0001FC00007F0001FC0000FF0001FC0000FF0001FC0000FF00 +01FC0001FF0001FC0001FF0000FC0001FF0000FE0003FF00007E00077F80007F000E7FC0 +003F001C7FFE000FC0787FFE0003FFF07FFE00007F807F002F2D7DAB36>I<FFFFF001FF +FCFFFFF001FFFCFFFFF001FFFC07FF00007FE003FE00001F8001FE00001F0001FE00000E +0000FE00000C0000FF00001C00007F00001800007F00001800007F80003800003F800030 +00003F80003000001FC0006000001FC0006000001FE000E000000FE000C000000FE000C0 +000007F00180000007F00180000007F80380000003F80300000003F80300000001FC0600 +000001FC0600000001FE0E00000000FE0C00000000FE0C000000007F18000000007F1800 +0000007FB8000000003FB0000000003FB0000000001FE0000000001FE0000000001FE000 +0000000FC0000000000FC000000000078000000000078000000000078000000000030000 +0000000300000000000600000000000600000000000600000000000C00000000000C0000 +000000180000000000180000003C00180000007E0030000000FF0030000000FF00600000 +00FF0060000000FF00C0000000FE01C00000007C03800000007007000000003C1E000000 +000FFC0000000003F0000000002E3F7EAA33>121 D<3FFFFFFFE03FFFFFFFE03FC0003F +E03F00003FC03C00007F80380000FF00380000FF00300001FE00700003FC00700003FC00 +700007F80060000FF00060000FF00060001FE00060003FC00060003FC00000007F800000 +00FF00000001FF00000001FE00000003FC00000007FC00000007F80000000FF00000001F +F00000001FE00060003FC00060007F800060007F80006000FF0000C001FE0000C001FE00 +00C003FC0000C007F80000C007F80001C00FF00001C01FE00003C01FE00003C03FC00007 +807F80001F80FF8000FF80FFFFFFFF80FFFFFFFF80232B7DAA2B>I<FFFFFFFFFFFFFFFF +FFFFFFFF80FFFFFFFFFFFFFFFFFFFFFFFF806102809B62>124 D +E /Fw 21 118 df<0F003FC07FE0FFF0FFF0FFF0FFF0FFF0FFF07FE03FC00F000C0C748B +24>46 D<00000FFE00000000007FFFE000000003FFFFF80000000FFFFFFE0000001FE00F +FF8000003E0001FFE00000FC00007FF00001F000003FF80003E000000FFC0003C0000007 +FE000780000003FF000F00000003FF800E00000001FF801E00000000FFC01C00000000FF +C03C000000007FE038000000007FE078000000003FF070000000003FF070000000003FF0 +70000000003FF0FF800000001FF8FFE00000001FF8FFE00000001FF8FFF00000001FF8FF +F00000001FF8FFF00000001FF8FFF00000001FF8FFF00000001FF8FFF00000001FF87FE0 +0000001FF83FC00000001FF806000000001FF000000000003FF000000000003FF0000000 +00003FF000000000003FE000000000007FE000000000007FE00000000000FFC000000000 +00FFC00000000000FF800000000001FF800000000001FF000000000003FE000000000007 +FE000000000007FC00000000000FF800000000000FF000000000001FF000000000003FE0 +00000000007FC000000000007F800000000000FF000000000001FE000000000003FC0000 +00000003F8000000000007F000000000000FE000000000001FC000000000003F80000000 +00007F0000000000007E000000000000FC000000000001F8000000000003F00000000000 +07E000000000000FC000000000001F8000000000003F0000000000003E0000000000007C +000000380000F8000000380001F0000000380003E0000000380007C000000070000F8000 +000070001F0000000070001E0000000070003C0000000070007800000000F000F0000000 +00F001E000000000E003C000000001E0078000000003E00FFFFFFFFFFFE00FFFFFFFFFFF +E01FFFFFFFFFFFE03FFFFFFFFFFFE07FFFFFFFFFFFE0FFFFFFFFFFFFC0FFFFFFFFFFFFC0 +FFFFFFFFFFFFC0FFFFFFFFFFFFC0355E7ADD42>50 D<0180000000030001E00000000F00 +01FC0000003F0001FF800003FE0001FFF8003FFC0001FFFFFFFFF80001FFFFFFFFF00001 +FFFFFFFFE00001FFFFFFFF800001FFFFFFFF000001FFFFFFFC000001DFFFFFF0000001C3 +FFFF80000001C03FF800000001C0000000000001C0000000000001C0000000000001C000 +0000000001C0000000000001C0000000000001C0000000000001C0000000000001C00000 +00000001C0000000000001C0000000000001C0000000000001C0000000000001C0000000 +000001C0000000000001C0000000000001C0000000000001C0000000000001C000000000 +0001C0000000000001C0000000000001C001FF80000001C01FFFF0000001C07FFFFC0000 +01C1FE00FF000001C3E0003F800001CF80001FE00001DF00000FF00001FC000007F80001 +F8000003FC0001F0000001FC0001F0000001FE0001E0000000FF0001C0000000FF000000 +0000007F8000000000007FC000000000007FC000000000003FC000000000003FE0000000 +00003FE000000000003FF000000000003FF000000000001FF000000000001FF000000000 +001FF000000000001FF800000000001FF800000000001FF800000000001FF80000000000 +1FF800000000001FF81F800000001FF87FC00000001FF87FE00000001FF8FFE00000001F +F8FFF00000001FF8FFF00000001FF8FFF00000001FF0FFE00000001FF0FFE00000003FF0 +FFC00000003FF0FF800000003FE070000000003FE070000000003FE078000000007FC078 +000000007FC03C00000000FF803C00000000FF801E00000001FF001E00000001FF000F00 +000003FE000780000007FC0007C0000007F80003E000000FF00001F800003FE00000FC00 +007FC000007F0001FF8000003FF00FFE0000000FFFFFF800000003FFFFE000000000FFFF +80000000000FF800000035607ADD42>53 D<FFFFFFFFE000000000FFFFFFFFE000000000 +FFFFFFFFE000000000FFFFFFFFE00000000000FFFF800000000000003FFC000000000000 +001FFC000000000000001FF8000000000000001FF8000000000000001FF8000000000000 +001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000 +001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000 +001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000 +001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000 +001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000 +001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000 +001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000 +001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000 +001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000 +001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000 +001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000 +001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000 +001FF8000000000000001FF8000000000000001FF8000000000000001FF800000000001C +001FF800000000001C001FF800000000001C001FF800000000001C001FF800000000001C +001FF800000000001C001FF800000000003C001FF8000000000038001FF8000000000038 +001FF8000000000038001FF8000000000038001FF8000000000038001FF8000000000038 +001FF8000000000078001FF8000000000078001FF8000000000078001FF8000000000078 +001FF80000000000F8001FF80000000000F8001FF80000000000F0001FF80000000001F0 +001FF80000000001F0001FF80000000003F0001FF80000000007F0001FF80000000007F0 +001FF8000000000FF0001FF8000000001FF0001FF8000000003FF0001FF8000000007FF0 +001FF800000001FFF0001FF800000007FFF0003FF80000003FFFE000FFFC000003FFFFE0 +FFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFE0 +466279E153>76 D<FFFFFC000000000000001FFFFF80FFFFFC000000000000001FFFFF80 +FFFFFC000000000000001FFFFF80FFFFFE000000000000003FFFFF8000FFFE0000000000 +00003FFF8000003FFE000000000000003FFE0000001DFF0000000000000077FC0000001D +FF0000000000000077FC0000001CFF80000000000000E7FC0000001CFF80000000000000 +E7FC0000001CFF80000000000000E7FC0000001C7FC0000000000001C7FC0000001C7FC0 +000000000001C7FC0000001C7FC0000000000001C7FC0000001C3FE000000000000387FC +0000001C3FE000000000000387FC0000001C3FE000000000000387FC0000001C1FF00000 +0000000707FC0000001C1FF000000000000707FC0000001C0FF800000000000E07FC0000 +001C0FF800000000000E07FC0000001C0FF800000000000E07FC0000001C07FC00000000 +001C07FC0000001C07FC00000000001C07FC0000001C07FC00000000001C07FC0000001C +03FE00000000003807FC0000001C03FE00000000003807FC0000001C03FE000000000038 +07FC0000001C01FF00000000007007FC0000001C01FF00000000007007FC0000001C00FF +8000000000E007FC0000001C00FF8000000000E007FC0000001C00FF8000000000E007FC +0000001C007FC000000001C007FC0000001C007FC000000001C007FC0000001C007FC000 +000001C007FC0000001C003FE0000000038007FC0000001C003FE0000000038007FC0000 +001C003FE0000000038007FC0000001C001FF0000000070007FC0000001C001FF0000000 +070007FC0000001C000FF80000000E0007FC0000001C000FF80000000E0007FC0000001C +000FF80000000E0007FC0000001C0007FC0000001C0007FC0000001C0007FC0000001C00 +07FC0000001C0007FC0000001C0007FC0000001C0003FE000000380007FC0000001C0003 +FE000000380007FC0000001C0003FE000000380007FC0000001C0001FF000000700007FC +0000001C0001FF000000700007FC0000001C0000FF800000E00007FC0000001C0000FF80 +0000E00007FC0000001C0000FF800000E00007FC0000001C00007FC00001C00007FC0000 +001C00007FC00001C00007FC0000001C00007FC00001C00007FC0000001C00003FE00003 +800007FC0000001C00003FE00003800007FC0000001C00003FE00003800007FC0000001C +00001FF00007000007FC0000001C00001FF00007000007FC0000001C00000FF8000E0000 +07FC0000001C00000FF8000E000007FC0000001C00000FF8000E000007FC0000001C0000 +07FC001C000007FC0000001C000007FC001C000007FC0000001C000007FC001C000007FC +0000001C000003FE0038000007FC0000001C000003FE0038000007FC0000001C000003FE +0038000007FC0000001C000001FF0070000007FC0000001C000001FF0070000007FC0000 +001C000001FF0070000007FC0000001C000000FF80E0000007FC0000001C000000FF80E0 +000007FC0000001C0000007FC1C0000007FC0000001C0000007FC1C0000007FC0000001C +0000007FC1C0000007FC0000001C0000003FE380000007FC0000001C0000003FE3800000 +07FC0000001C0000003FE380000007FC0000001C0000001FF700000007FC0000001C0000 +001FF700000007FC0000001C0000001FF700000007FC0000001C0000000FFE00000007FC +0000001C0000000FFE00000007FC0000003E00000007FC00000007FC0000003E00000007 +FC00000007FC0000007F00000007FC00000007FC0000007F00000003F800000007FC0000 +01FFC0000003F80000000FFE000007FFF8000003F80000003FFF8000FFFFFF800001F000 +003FFFFFFF80FFFFFF800001F000003FFFFFFF80FFFFFF800001F000003FFFFFFF80FFFF +FF800000E000003FFFFFFF80696278E17A>I<FFFFFFFFFFFFC0000000FFFFFFFFFFFFFE +000000FFFFFFFFFFFFFFC00000FFFFFFFFFFFFFFF0000000FFFC000000FFFC0000003FF8 +0000000FFF0000001FF800000003FF8000001FF800000000FFC000001FF8000000003FF0 +00001FF8000000001FF800001FF8000000000FFC00001FF80000000007FC00001FF80000 +000003FE00001FF80000000003FF00001FF80000000001FF80001FF80000000001FF8000 +1FF80000000000FFC0001FF80000000000FFC0001FF80000000000FFC0001FF800000000 +00FFE0001FF800000000007FE0001FF800000000007FE0001FF800000000007FF0001FF8 +00000000007FF0001FF800000000007FF0001FF800000000007FF0001FF800000000007F +F0001FF800000000007FF0001FF800000000007FF0001FF800000000007FF0001FF80000 +0000007FF0001FF800000000007FE0001FF800000000007FE0001FF80000000000FFE000 +1FF80000000000FFC0001FF80000000000FFC0001FF80000000000FFC0001FF800000000 +01FF80001FF80000000001FF00001FF80000000003FF00001FF80000000007FE00001FF8 +0000000007FC00001FF8000000000FF800001FF8000000001FF000001FF8000000007FE0 +00001FF800000000FFC000001FF800000003FF0000001FF80000001FFE0000001FF80000 +01FFF80000001FFFFFFFFFFFE00000001FFFFFFFFFFF000000001FFFFFFFFFF800000000 +1FF800000000000000001FF800000000000000001FF800000000000000001FF800000000 +000000001FF800000000000000001FF800000000000000001FF800000000000000001FF8 +00000000000000001FF800000000000000001FF800000000000000001FF8000000000000 +00001FF800000000000000001FF800000000000000001FF800000000000000001FF80000 +0000000000001FF800000000000000001FF800000000000000001FF80000000000000000 +1FF800000000000000001FF800000000000000001FF800000000000000001FF800000000 +000000001FF800000000000000001FF800000000000000001FF800000000000000001FF8 +00000000000000001FF800000000000000001FF800000000000000001FF8000000000000 +00001FF800000000000000001FF800000000000000001FF800000000000000001FF80000 +0000000000001FF800000000000000001FF800000000000000001FF80000000000000000 +1FF800000000000000001FF800000000000000001FF800000000000000001FF800000000 +000000003FFC0000000000000000FFFF00000000000000FFFFFFFF000000000000FFFFFF +FF000000000000FFFFFFFF000000000000FFFFFFFF0000000000004C6279E15A>80 +D<FFFFFFFFFFFC000000000000FFFFFFFFFFFFE00000000000FFFFFFFFFFFFFC00000000 +00FFFFFFFFFFFFFF800000000000FFFC00000FFFE000000000003FF80000007FF8000000 +00001FF80000001FFC00000000001FF800000007FF00000000001FF800000001FF800000 +00001FF800000000FFC0000000001FF8000000003FE0000000001FF8000000001FF00000 +00001FF8000000001FF8000000001FF8000000000FFC000000001FF80000000007FE0000 +00001FF80000000007FE000000001FF80000000007FF000000001FF80000000003FF0000 +00001FF80000000003FF800000001FF80000000003FF800000001FF80000000001FF8000 +00001FF80000000001FFC00000001FF80000000001FFC00000001FF80000000001FFC000 +00001FF80000000001FFC00000001FF80000000001FFC00000001FF80000000001FFC000 +00001FF80000000001FFC00000001FF80000000001FFC00000001FF80000000001FFC000 +00001FF80000000001FF800000001FF80000000003FF800000001FF80000000003FF8000 +00001FF80000000003FF000000001FF80000000007FF000000001FF80000000007FE0000 +00001FF80000000007FC000000001FF8000000000FF8000000001FF8000000001FF80000 +00001FF8000000003FF0000000001FF8000000007FE0000000001FF800000000FF800000 +00001FF800000001FF00000000001FF800000007FE00000000001FF80000001FF8000000 +00001FF8000000FFE000000000001FF800000FFF8000000000001FFFFFFFFFFC00000000 +00001FFFFFFFFFE00000000000001FFFFFFFFFF00000000000001FF800001FFE00000000 +00001FF8000001FF8000000000001FF80000007FC000000000001FF80000003FF0000000 +00001FF80000001FF800000000001FF800000007FC00000000001FF800000003FE000000 +00001FF800000003FF00000000001FF800000001FF80000000001FF800000000FF800000 +00001FF800000000FFC0000000001FF8000000007FE0000000001FF8000000007FE00000 +00001FF8000000007FE0000000001FF8000000003FF0000000001FF8000000003FF00000 +00001FF8000000003FF0000000001FF8000000003FF0000000001FF8000000003FF00000 +00001FF8000000003FF0000000001FF8000000003FF0000000001FF8000000003FF00000 +00001FF8000000003FF0000000001FF8000000003FF0000000001FF8000000003FF80000 +00001FF8000000003FF8000000001FF8000000003FF8000000001FF8000000003FF80000 +00001FF8000000003FF8000000001FF8000000003FF8000000001FF8000000003FF80000 +00001FF8000000003FF8000000001FF8000000003FF8000000001FF8000000003FF80000 +00001FF8000000003FF80000E0001FF8000000003FFC0000E0001FF8000000001FFC0000 +E0001FF8000000001FFC0000E0001FF8000000001FFC0000E0001FF8000000000FFC0001 +E0001FF8000000000FFE0001C0001FF80000000007FE0003C0003FFC0000000007FF0003 +C000FFFF0000000003FF000780FFFFFFFF00000001FF800F00FFFFFFFF00000000FFC01F +00FFFFFFFF000000003FF03E00FFFFFFFF000000000FFFFC00000000000000000003FFF0 +000000000000000000003FC0005B6479E162>82 D<00003FF0000000000003FFFE000000 +00000FFFFF80000000003FC03FE0000000007E0007F800000000F80003FC00000001E000 +01FE00000003C00000FF000000078000007F8000000F0000003FC000000F8000003FC000 +000FF000001FE000001FF800001FE000001FFC00000FF000001FFC00000FF000001FFC00 +000FF000001FFC000007F800001FFC000007F800001FFC000007F800000FF8000007F800 +0003E0000007F800000000000007F800000000000007F800000000000007F80000000000 +0007F800000000000007F800000000000007F80000000000007FF800000000007FFFF800 +0000000FFFFFF8000000007FF807F800000001FF8007F800000007FC0007F80000001FF0 +0007F80000007FC00007F8000000FF800007F8000003FE000007F8000007FC000007F800 +000FFC000007F800000FF8000007F800001FF0000007F800003FE0000007F800003FE000 +0007F800007FC0000007F800E07FC0000007F800E07FC0000007F800E0FFC0000007F800 +E0FF80000007F800E0FF80000007F800E0FF8000000FF800E0FF8000000FF800E0FF8000 +000FF800E0FF8000001FF800E0FFC000001BF800E07FC000003BF800E07FC0000073F800 +E07FE0000071FC01C03FF00000E1FC01C01FF00001C1FC01C00FFC000780FE038007FE00 +0F00FF070001FF807E007FFF00007FFFF8003FFE00001FFFE0001FF8000001FF000007E0 +003B417ABF42>97 D<000001FF80000000000FFFF8000000003FFFFE00000000FF007F80 +000003FC0007E0000007F00001F000001FE000007800003FC000003C00007F8000001E00 +00FF0000000F0001FE0000001F0001FC000000FF0003FC000001FF8007F8000003FF8007 +F8000003FF800FF0000003FF800FF0000003FF801FE0000003FF801FE0000003FF803FE0 +000001FF003FC00000007C003FC000000000007FC000000000007FC000000000007FC000 +000000007F800000000000FF800000000000FF800000000000FF800000000000FF800000 +000000FF800000000000FF800000000000FF800000000000FF800000000000FF80000000 +0000FF800000000000FF800000000000FF800000000000FF8000000000007F8000000000 +007FC000000000007FC000000000007FC000000000007FC000000000003FC00000000000 +3FE000000000003FE000000000001FE000000001C01FF000000001C00FF000000003C00F +F8000000038007F8000000038003FC000000078003FE000000070001FE0000000F0000FF +0000001E00007F8000003C00003FC000007800001FE00000F000000FF80001E0000003FC +0007C0000000FF803F800000003FFFFE000000000FFFF80000000001FF80000032417CBF +3A>99 D<000003FE00000000001FFFE000000000FFFFF800000001FE03FE00000007F000 +7F8000000FE0003FC000003FC0001FE000007F00000FF00000FF000007F80000FE000003 +F80001FC000003FC0003F8000001FC0007F8000001FE0007F0000000FE000FF0000000FF +000FF00000007F001FE00000007F001FE00000007F803FE00000007F803FC00000003F80 +3FC00000003F807FC00000003FC07FC00000003FC07FC00000003FC07F800000003FC07F +800000003FC0FF800000003FC0FFFFFFFFFFFFC0FFFFFFFFFFFFC0FFFFFFFFFFFFC0FF80 +0000000000FF800000000000FF800000000000FF800000000000FF800000000000FF8000 +00000000FF800000000000FF800000000000FF8000000000007F8000000000007FC00000 +0000007FC000000000007FC000000000003FC000000000003FC000000000003FE0000000 +00001FE000000000001FE000000001C00FF000000001C00FF000000003C007F800000003 +8007F8000000038003FC000000078001FC0000000F0001FE0000000E0000FF0000001E00 +007F8000003C00003FC000007800001FE00000F0000007F00003E0000003FC0007C00000 +00FF803F000000003FFFFC000000000FFFF00000000001FF80000032417CBF3A>101 +D<0000000FF0000000007FFC00000001FFFF00000007F81F8000000FE00FC000001FC03F +C000003F807FE000007F007FE00000FF007FE00001FE007FE00001FC007FE00003FC003F +C00003FC003FC00007F8000F000007F80000000007F8000000000FF0000000000FF00000 +00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000 +00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000 +00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000 +00000FF0000000000FF0000000000FF0000000FFFFFFFFF000FFFFFFFFF000FFFFFFFFF0 +00FFFFFFFFF000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000 +00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000 +00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000 +00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000 +00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000 +00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000 +00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000 +00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000 +00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000001FF80000 +00003FFE0000003FFFFFFF00003FFFFFFF00003FFFFFFF00003FFFFFFF00002B657EE428 +>I<0000000000003F80000003FC0001FFE000003FFFC007FFF00000FFFFF01FC1F80003 +FC03FC3E03F80007F000FE7803F8000FE0007FE003F8001FC0003FC003F8003F80001FC0 +01F0007F00000FE0000000FE000007F0000000FE000007F0000001FC000003F8000001FC +000003F8000003FC000003FC000003FC000003FC000003F8000001FC000007F8000001FE +000007F8000001FE000007F8000001FE000007F8000001FE000007F8000001FE000007F8 +000001FE000007F8000001FE000007F8000001FE000007F8000001FE000007F8000001FE +000003F8000001FC000003FC000003FC000003FC000003FC000001FC000003F8000001FC +000003F8000000FE000007F0000000FE000007F00000007F00000FE00000003F80001FC0 +0000001FC0003F800000003FE0007F0000000037F000FE0000000073FC03FC0000000060 +FFFFF000000000E03FFFC000000000E003FC0000000001C000000000000001C000000000 +000001C000000000000001C000000000000001C000000000000001E000000000000001E0 +00000000000001F000000000000001F000000000000001F800000000000000FC00000000 +000000FF00000000000000FFFFFFFE000000007FFFFFFFF00000003FFFFFFFFE0000001F +FFFFFFFF8000000FFFFFFFFFE000000FFFFFFFFFF000003FFFFFFFFFFC0000FE000001FF +FE0003F80000001FFE0007E000000003FF000FC000000000FF801F80000000007F803F80 +000000003FC03F00000000001FC07E00000000001FC07E00000000000FE0FE0000000000 +0FE0FC000000000007E0FC000000000007E0FC000000000007E0FC000000000007E0FC00 +0000000007E0FC000000000007E0FE00000000000FE07E00000000000FC07E0000000000 +0FC07F00000000001FC03F80000000003F801FC0000000007F000FC0000000007E0007F0 +00000001FC0003F800000003F80001FC00000007F000007F0000001FC000003FE00000FF +8000000FFE000FFE00000001FFFFFFF0000000003FFFFF800000000001FFF00000003D5E +7DBF42>I<0003C000000000000007FFC0000000000000FFFFC0000000000000FFFFC000 +0000000000FFFFC0000000000000FFFFC000000000000001FFC0000000000000007FC000 +0000000000007FC0000000000000003FC0000000000000003FC0000000000000003FC000 +0000000000003FC0000000000000003FC0000000000000003FC0000000000000003FC000 +0000000000003FC0000000000000003FC0000000000000003FC0000000000000003FC000 +0000000000003FC0000000000000003FC0000000000000003FC0000000000000003FC000 +0000000000003FC0000000000000003FC0000000000000003FC0000000000000003FC000 +0000000000003FC0000000000000003FC0000000000000003FC0000000000000003FC000 +0000000000003FC0000000000000003FC0000000000000003FC0000000000000003FC000 +0000000000003FC0000000000000003FC0007FE0000000003FC003FFFC000000003FC00F +FFFF000000003FC03F00FFC00000003FC078001FE00000003FC0F0000FF00000003FC1C0 +0007F80000003FC3800007FC0000003FC7000003FC0000003FCE000003FE0000003FCE00 +0001FE0000003FDC000001FE0000003FD8000001FE0000003FF8000000FF0000003FF000 +0000FF0000003FF0000000FF0000003FF0000000FF0000003FE0000000FF0000003FE000 +0000FF0000003FE0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000 +0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000 +0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000 +0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000 +0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000 +0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000 +0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000 +0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000 +0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000 +0000FF0000003FC0000000FF0000003FC0000000FF0000007FE0000001FF800000FFF000 +0003FFC000FFFFFFF003FFFFFFC0FFFFFFF003FFFFFFC0FFFFFFF003FFFFFFC0FFFFFFF0 +03FFFFFFC042647DE349>I<003C000000FF000001FF800003FFC00003FFC00003FFC000 +03FFC00003FFC00003FFC00001FF800000FF0000003C0000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000003C000 +07FFC0007FFFC0007FFFC0007FFFC0007FFFC00001FFC000007FC000007FC000003FC000 +003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000 +003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000 +003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000 +003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000 +003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000 +003FC000003FC000007FE00000FFF000FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE01B5F7DDE +23>I<0003C00007FFC000FFFFC000FFFFC000FFFFC000FFFFC00001FFC000007FC00000 +7FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000 +3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000 +3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000 +3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000 +3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000 +3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000 +3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000 +3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000 +3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000 +3FC000003FC000003FC000003FC000003FC000007FE00000FFF000FFFFFFF0FFFFFFF0FF +FFFFF0FFFFFFF01C647DE323>108 D<0003C000FFC0000007FE00000007FFC003FFF800 +001FFFC00000FFFFC00FFFFE00007FFFF00000FFFFC03F00FF8001F807FC0000FFFFC078 +003FC003C001FE0000FFFFC1E0001FE00F0000FF000001FFC3C0000FF01E00007F800000 +7FC3800007F81C00003FC000007FC7000007F83800003FC000003FCE000003FC7000001F +E000003FCC000003FC6000001FE000003FDC000003FCE000001FE000003FD8000003FCC0 +00001FE000003FF8000001FFC000000FF000003FF0000001FF8000000FF000003FF00000 +01FF8000000FF000003FE0000001FF0000000FF000003FE0000001FF0000000FF000003F +E0000001FF0000000FF000003FE0000001FF0000000FF000003FC0000001FE0000000FF0 +00003FC0000001FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE0000 +000FF000003FC0000001FE0000000FF000003FC0000001FE0000000FF000003FC0000001 +FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE0000000FF000003FC0 +000001FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE0000000FF000 +003FC0000001FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE000000 +0FF000003FC0000001FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE +0000000FF000003FC0000001FE0000000FF000003FC0000001FE0000000FF000003FC000 +0001FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE0000000FF00000 +3FC0000001FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE0000000F +F000003FC0000001FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE00 +00000FF000003FC0000001FE0000000FF000003FC0000001FE0000000FF000003FC00000 +01FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE0000000FF000003F +C0000001FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE0000000FF0 +00007FE0000003FF0000001FF80000FFF0000007FF8000003FFC00FFFFFFF007FFFFFF80 +3FFFFFFCFFFFFFF007FFFFFF803FFFFFFCFFFFFFF007FFFFFF803FFFFFFCFFFFFFF007FF +FFFF803FFFFFFC663F7CBE6F>I<0003C0007FE000000007FFC003FFFC000000FFFFC00F +FFFF000000FFFFC03F00FFC00000FFFFC078001FE00000FFFFC0F0000FF0000001FFC1C0 +0007F80000007FC3800007FC0000007FC7000003FC0000003FCE000003FE0000003FCE00 +0001FE0000003FDC000001FE0000003FD8000001FE0000003FF8000000FF0000003FF000 +0000FF0000003FF0000000FF0000003FF0000000FF0000003FE0000000FF0000003FE000 +0000FF0000003FE0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000 +0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000 +0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000 +0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000 +0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000 +0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000 +0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000 +0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000 +0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000 +0000FF0000003FC0000000FF0000003FC0000000FF0000007FE0000001FF800000FFF000 +0003FFC000FFFFFFF003FFFFFFC0FFFFFFF003FFFFFFC0FFFFFFF003FFFFFFC0FFFFFFF0 +03FFFFFFC0423F7DBE49>I<000000FF8000000000000FFFF800000000003FFFFE000000 +0000FF007F8000000003FC001FE000000007F00007F00000000FC00001F80000003F8000 +00FE0000007F0000007F0000007E0000003F000000FC0000001F800001F80000000FC000 +03F80000000FE00003F000000007E00007F000000007F0000FE000000003F8000FE00000 +0003F8001FE000000003FC001FC000000001FC001FC000000001FC003FC000000001FE00 +3FC000000001FE003FC000000001FE007F8000000000FF007F8000000000FF007F800000 +0000FF007F8000000000FF00FF8000000000FF80FF8000000000FF80FF8000000000FF80 +FF8000000000FF80FF8000000000FF80FF8000000000FF80FF8000000000FF80FF800000 +0000FF80FF8000000000FF80FF8000000000FF80FF8000000000FF80FF8000000000FF80 +7F8000000000FF007F8000000000FF007FC000000001FF007FC000000001FF003FC00000 +0001FE003FC000000001FE003FC000000001FE001FE000000003FC001FE000000003FC00 +1FE000000003FC000FF000000007F80007F000000007F00007F000000007F00003F80000 +000FE00001FC0000001FC00001FC0000001FC00000FE0000003F8000007F0000007F0000 +003F800000FE0000001FC00001FC0000000FF00007F800000003FC001FE000000000FF00 +7F80000000007FFFFF00000000000FFFF8000000000001FFC000000039417CBF42>I<00 +078003F80007FF800FFF00FFFF803FFFC0FFFF807C0FE0FFFF81F01FE0FFFF81E03FF001 +FF83803FF0007F87003FF0007F8F003FF0003F8E003FF0003F9C001FE0003F9C000FC000 +3F98000300003FB8000000003FB8000000003FB0000000003FF0000000003FF000000000 +3FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FC000000000 +3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000 +3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000 +3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000 +3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000 +3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000 +3FC0000000003FC0000000003FC0000000007FE000000000FFF8000000FFFFFFFC0000FF +FFFFFC0000FFFFFFFC0000FFFFFFFC00002C3F7CBE33>114 D<00003800000000003800 +000000003800000000003800000000003800000000003800000000003800000000007800 +00000000780000000000780000000000780000000000F80000000000F80000000000F800 +00000001F80000000001F80000000001F80000000003F80000000003F80000000007F800 +0000000FF8000000001FF8000000001FF8000000007FF800000000FFF800000003FFF800 +00000FFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF000007F80000000007F800 +00000007F80000000007F80000000007F80000000007F80000000007F80000000007F800 +00000007F80000000007F80000000007F80000000007F80000000007F80000000007F800 +00000007F80000000007F80000000007F80000000007F80000000007F80000000007F800 +00000007F80000000007F80000000007F80000000007F80000000007F80000000007F800 +00000007F80000000007F80000000007F80000000007F80000000007F80000000007F800 +00000007F80000E00007F80000E00007F80000E00007F80000E00007F80000E00007F800 +00E00007F80000E00007F80000E00007F80000E00007F80000E00007F80000E00007F800 +00E00007F80000E00007F80000E00003FC0001C00003FC0001C00003FC0001C00003FC00 +03C00001FE0003800001FE0007800000FF00070000007F800F0000003FC01E0000001FF0 +7C0000000FFFF800000003FFE0000000007F80002B597FD733>116 +D<0003C00000000F000007FFC000001FFF0000FFFFC00003FFFF0000FFFFC00003FFFF00 +00FFFFC00003FFFF0000FFFFC00003FFFF000001FFC0000007FF0000007FC0000001FF00 +00007FC0000001FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF00 +00003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF00 +00003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF00 +00003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF00 +00003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF00 +00003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF00 +00003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF00 +00003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF00 +00003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF00 +00003FC0000000FF0000003FC0000001FF0000003FC0000001FF0000003FC0000001FF00 +00003FC0000003FF0000003FC0000003FF0000003FC0000003FF0000003FC0000007FF00 +00001FC0000006FF0000001FE000000EFF0000001FE000001CFF0000000FE000001CFF00 +00000FF0000038FF80000007F0000070FF80000003F80001E0FFE0000001FE0003C0FFFF +C00000FFC01F80FFFFC000003FFFFE00FFFFC000000FFFF800FFFFC0000000FFC000FF80 +0042407DBE49>I E end %%EndProlog %%BeginSetup -%%Feature: *Resolution 300dpi +%%Feature: *Resolution 600dpi TeXDict begin +%%PaperSize: Letter %%EndSetup %%Page: 1 1 -1 0 bop 108 381 a Fv(Reference)22 b(Man)n(ual)f(of)g(the)h(Programming) -f(Language)g(Lua)g(2.4)99 508 y Fu(Rob)q(erto)c(Ierusalimsc)o(h)o(y)49 -b(Luiz)17 b(Henrique)e(de)h(Figueiredo)50 b(W)l(aldemar)17 -b(Celes)g(Filho)563 587 y Ft(roberto,lhf,celes)o(@icad)o(.puc-)o(rio.b) -o(r)359 694 y Fs(T)l(eC)431 709 y(Graf)534 694 y Fu(|)g(Departamen)o -(to)f(de)g(Inform\023)-24 b(atica)17 b(|)f(PUC-Rio)661 -790 y Ft(Date:)21 b(1996/04/29)f(18:50:08)842 957 y Fr(Abstract)72 -1033 y Fq(Lua)13 b(is)h(an)f(extension)i(programmi)o(ng)c(language)h -(designed)j(to)e(b)q(e)i(used)f(as)g(a)f(con\014guration)g(language)g -(for)72 1083 y(an)o(y)18 b(program)e(that)i(needs)h(one.)30 -b(This)18 b(do)q(cumen)o(t)f(describ)q(es)j(V)m(ersion)e(2.4)f(of)g -(the)i(Lua)e(programming)72 1132 y(language)e(and)g(the)h(API)g(that)g -(allo)o(ws)e(in)o(teraction)i(b)q(et)o(w)o(een)h(Lua)e(programs)f(and)i -(its)f(host)h(C)g(program.)72 1182 y(It)e(also)f(presen)o(ts)j(some)d -(examples)g(of)g(using)h(the)h(main)c(features)k(of)f(the)g(system.)881 -1397 y Fr(Sum\023)-24 b(ario)72 1465 y Fq(Lua)15 b(\023)-20 -b(e)18 b(uma)d(linguagem)f(de)j(extens~)-21 b(ao)18 b(pro)r(jetada)f -(para)f(ser)i(usada)f(como)e(linguagem)g(de)i(con\014gura\030)-18 -b(c~)d(ao)72 1515 y(em)12 b(qualquer)g(programa)e(que)j(precise)h(de)f -(uma.)j(Este)e(do)q(cumen)o(to)d(descrev)o(e)k(a)d(v)o(ers~)-21 -b(ao)13 b(2.4)e(da)h(linguagem)72 1565 y(de)18 b(programa\030)-18 -b(c~)d(ao)16 b(Lua)i(e)g(a)g(In)o(terface)h(de)f(Programa\030)-18 -b(c~)d(ao)16 b(que)i(p)q(ermite)g(a)f(in)o(tera\030)-18 -b(c~)d(ao)18 b(en)o(tre)h(programas)72 1614 y(Lua)c(e)g(o)g(programa)e -(C)h(hosp)q(edeiro.)22 b(O)15 b(do)q(cumen)o(to)g(tam)o(b)o(\023)-20 -b(em)12 b(apresen)o(ta)k(alguns)e(exemplos)g(de)i(uso)f(das)72 -1664 y(principais)f(caracter)-5 b(\023)-16 b(\020sticas)15 -b(do)f(sistema.)-42 1807 y Fp(1)67 b(In)n(tro)r(duction)-42 -1909 y Fo(Lua)18 b(is)f(an)g(extension)g(programmi)o(ng)d(language)j -(designed)g(to)g(supp)q(ort)g(general)g(pro)q(cedural)g(programming)-42 -1965 y(features)f(with)g(data)g(description)f(facilities.)22 -b(It)16 b(is)g(supp)q(osed)h(to)f(b)q(e)g(used)h(as)f(a)g -(con\014guration)g(language)f(for)-42 2022 y(an)o(y)j(program)d(that)i -(needs)i(one.)27 b(Lua)18 b(has)f(b)q(een)i(designed)f(and)g(implemen)o -(ted)d(b)o(y)j(W.)f(Celes)g(F.,)g(L.)h(H.)f(de)-42 2078 -y(Figueiredo)e(and)g(R.)g(Ierusalimsc)o(h)o(y)l(.)29 -2135 y(Lua)d(is)f(implemen)o(ted)f(as)h(a)g(library)l(,)g(written)g(in) -h(C.)f(Being)g(an)h(extension)g(language,)f(Lua)h(has)f(no)h(notion)f -(of)-42 2191 y(a)h(\\main")d(program:)16 b(it)10 b(only)h(w)o(orks)g -Fn(emb)n(e)n(dde)n(d)f Fo(in)i(a)f(host)g(clien)o(t,)g(called)g(the)g -Fn(emb)n(e)n(dding)f Fo(program.)17 b(This)11 b(host)-42 -2248 y(program)i(can)j(in)o(v)o(ok)o(e)e(functions)h(to)f(execute)i(a)f -(piece)g(of)g(co)q(de)g(in)g(Lua,)g(can)h(write)e(and)h(read)g(Lua)h(v) -m(ariables,)-42 2304 y(and)f(can)e(register)g(C)h(functions)f(to)h(b)q -(e)g(called)g(b)o(y)f(Lua)h(co)q(de.)20 b(Through)14 -b(the)g(use)g(of)g(C)f(functions,)h(Lua)g(can)g(b)q(e)-42 -2360 y(augmen)o(ted)d(to)h(cop)q(e)g(with)f(rather)h(di\013eren)o(t)f -(domains,)f(th)o(us)i(creating)f(customized)g(programmi)o(ng)e -(languages)-42 2417 y(sharing)15 b(a)g(syn)o(tactical)e(framew)o(ork.) -29 2473 y(Lua)f(is)e(free)i(distribution)e(soft)o(w)o(are,)g(and)h(pro) -o(vided)g(as)g(usual)g(with)g(no)g(guaran)o(tees.)18 -b(The)11 b(implemen)o(tatio)o(n)-42 2530 y(describ)q(ed)17 -b(in)e(this)f(man)o(ual)g(is)g(a)o(v)m(ailable)g(b)o(y)h(anon)o(ymous)f -(ftp)h(from)30 2623 y Fm(ftp.icad.puc-rio.br:/pub/lu)o(a/lua.t)o(ar.gz) -922 2748 y Fo(1)p eop +1 0 bop 299 456 a Fw(Reference)44 b(Man)l(ual)h(of)e(the)g(Programming) +g(Language)g(Lua)g(2.5)408 708 y Fv(Rob)s(erto)32 b(Ierusalimsc)m(h)m +(y)98 b(Luiz)32 b(Henrique)i(de)f(Figueiredo)96 b(W)-8 +b(aldemar)31 b(Celes)1514 868 y Fu(lua@icad.puc-rio.)o(br)801 +1080 y Ft(T)-8 b(eC)945 1111 y(Graf)1152 1080 y Fv(|)32 +b(Departamen)m(to)g(de)h(Inform\023)-49 b(atica)31 b(|)h(PUC-Rio)1405 +1272 y Fu(Date:)42 b(1996/11/18)d(14:27:42)1767 1607 +y Fs(Abstract)227 1759 y Fr(Lua)e(is)f(an)h(extension)f(programming)f +(language)g(designed)i(to)f(b)r(e)i(used)f(as)f(a)g(con\014guration)f +(language)227 1859 y(for)28 b(an)n(y)f(program)f(that)i(needs)g(one.)38 +b(This)28 b(do)r(cumen)n(t)g(describ)r(es)f(v)n(ersion)g(2.5)g(of)h +(the)g(Lua)g(programming)227 1958 y(language)21 b(and)i(the)g(API)g +(that)g(allo)n(ws)e(in)n(teraction)h(b)r(et)n(w)n(een)h(Lua)f(programs) +e(and)j(their)g(host)f(C)h(programs.)227 2058 y(The)28 +b(do)r(cumen)n(t)g(also)e(presen)n(ts)h(some)g(examples)g(of)g(using)h +(the)g(main)f(features)g(of)h(the)g(system.)1845 2488 +y Fs(Sum)o(\023)-47 b(ario)227 2624 y Fr(Lua)21 b(\023)-39 +b(e)23 b(uma)g(linguagem)f(de)i(extens~)-42 b(ao)22 b(pro)5 +b(jetada)22 b(para)g(ser)h(usada)f(como)h(linguagem)f(de)i +(con\014gura\030)-37 b(c~)-42 b(ao)21 b(em)227 2723 y(qualquer)26 +b(programa)d(que)k(precise)e(de)i(uma.)36 b(Este)26 b(do)r(cumen)n(to)g +(descrev)n(e)f(a)h(v)n(ers~)-42 b(ao)25 b(2.5)g(da)h(linguagem)g(de)227 +2823 y(programa\030)-37 b(c~)-42 b(ao)22 b(Lua)j(e)h(a)f(In)n(terface)g +(de)g(Programa\030)-37 b(c~)-42 b(ao)22 b(\(API\))k(que)f(p)r(ermite)h +(a)f(in)n(tera\030)-37 b(c~)-42 b(ao)24 b(en)n(tre)h(programas)227 +2923 y(Lua)30 b(e)g(programas)d(C)j(hosp)r(edeiros.)43 +b(O)29 b(do)r(cumen)n(to)h(tam)n(b)n(\023)-39 b(em)29 +b(apresen)n(ta)f(alguns)i(exemplos)f(de)h(uso)f(das)227 +3022 y(principais)e(caracter)-9 b(\023)-32 b(\020sticas)24 +b(do)k(sistema.)0 3309 y Fq(1)135 b(In)l(tro)t(duction)0 +3512 y Fp(Lua)34 b(is)f(an)i(extension)f(programming)f(language)i +(designed)e(to)i(supp)s(ort)d(general)j(pro)s(cedural)d(programming)0 +3625 y(features)i(with)f(data)h(description)e(facilities.)49 +b(It)34 b(is)f(in)m(tended)f(to)j(b)s(e)e(used)g(as)h(a)g +(con\014guration)f(language)h(for)0 3737 y(an)m(y)42 +b(program)g(that)g(needs)f(one.)76 b(Lua)41 b(has)h(b)s(een)f(designed) +f(and)h(implemen)m(ted)g(b)m(y)g(W.)i(Celes,)h(L.)e(H.)g(de)0 +3850 y(Figueiredo)29 b(and)h(R.)h(Ierusalimsc)m(h)m(y)-8 +b(.)141 3963 y(Lua)23 b(is)g(implemen)m(ted)e(as)j(a)g(library)-8 +b(,)23 b(written)f(in)g(C.)i(Being)f(an)g(extension)g(language,)j(Lua)d +(has)g(no)g(notion)g(of)0 4076 y(a)g(\\main")g(program:)36 +b(it)23 b(only)e(w)m(orks)i Fo(emb)-5 b(e)g(dde)g(d)25 +b Fp(in)c(a)i(host)g(clien)m(t,)h(called)e(the)h Fo(emb)-5 +b(e)g(dding)24 b Fp(program.)38 b(This)21 b(host)0 4189 +y(program)30 b(can)g(in)m(v)m(ok)m(e)h(functions)e(to)i(execute)h(a)e +(piece)g(of)g(co)s(de)h(in)e(Lua,)h(can)g(write)g(and)f(read)h(Lua)g(v) +-5 b(ariables,)0 4302 y(and)27 b(can)h(register)f(C)h(functions)e(to)i +(b)s(e)f(called)g(b)m(y)h(Lua)f(co)s(de.)40 b(Through)26 +b(the)i(use)f(of)h(C)f(functions,)g(Lua)h(can)g(b)s(e)0 +4415 y(augmen)m(ted)d(to)f(cop)s(e)g(with)f(rather)g(di\013eren)m(t)h +(domains,)g(th)m(us)f(creating)h(customized)g(programming)f(languages)0 +4528 y(sharing)29 b(a)i(syn)m(tactical)g(framew)m(ork.)141 +4641 y(Lua)22 b(is)f(free-distribution)d(soft)m(w)m(are,)25 +b(and)d(pro)m(vided)e(as)i(usual)e(with)h(no)h(guaran)m(tees.)39 +b(The)21 b(implemen)m(tation)0 4754 y(describ)s(ed)28 +b(in)h(this)h(man)m(ual)f(is)h(a)m(v)-5 b(ailable)29 +b(at)j(the)e(follo)m(wing)f(URL's:)143 4941 y Fn +(http://www.inf.puc-rio.br)o(/~ro)o(ber)o(to/l)o(ua.h)o(tml)143 +5054 y(ftp://ftp.icad.puc-rio.br)o(/pub)o(/lu)o(a/lu)o(a.ta)o(r.g)o(z) +1927 5589 y Fp(1)p eop %%Page: 2 2 -2 1 bop -42 199 a Fo(or)15 b(b)o(y)g(WWW)g(\(W)l(orld)f(Wide)h(W)l -(eb\))g(from)30 293 y Fm(http://www.inf.puc-rio.br/~)o(roberto)o -(/lua.ht)o(ml)-42 436 y Fp(2)67 b(En)n(vironmen)n(t)25 -b(and)e(Ch)n(unks)-42 538 y Fo(All)10 b(statemen)o(ts)e(in)i(Lua)h(are) -f(executed)h(in)g(a)f Fn(glob)n(al)h(envir)n(onment)p -Fo(.)17 b(This)9 b(en)o(vironmen)o(t,)h(whic)o(h)g(k)o(eeps)h(all)e -(global)-42 594 y(v)m(ariables)14 b(and)g(functions,)f(is)g -(initialized)g(at)g(the)h(b)q(eginning)g(of)f(the)h(em)o(b)q(edding)f -(program)f(and)i(p)q(ersists)f(un)o(til)-42 651 y(its)i(end.)29 -707 y(The)g(global)d(en)o(vironmen)o(t)h(can)h(b)q(e)h(manipulated)e(b) -o(y)h(Lua)h(co)q(de)g(or)e(b)o(y)h(the)h(em)o(b)q(edding)f(program,)e -(whic)o(h)-42 764 y(can)k(read)f(and)g(write)g(global)e(v)m(ariables)i -(using)g(functions)g(in)g(the)g(library)f(that)h(implemen)o(ts)d(Lua.) -29 820 y(Global)g(v)m(ariables)h(do)h(not)f(need)h(declaration.)k(An)o -(y)c(v)m(ariable)f(is)g(assumed)g(to)g(b)q(e)h(global)e(unless)i -(explicitly)-42 876 y(declared)20 b(lo)q(cal)e(\(see)h(lo)q(cal)f -(declarations,)h(Section)g(4.4.5\).)30 b(Before)19 b(the)g(\014rst)g -(assignmen)o(t,)e(the)j(v)m(alue)f(of)g(a)-42 933 y(global)14 -b(v)m(ariable)h(is)g Fl(nil)p Fo(.)29 989 y(The)g(unit)g(of)g -(execution)h(of)e(Lua)i(is)f(called)f(a)h Fn(chunk)p -Fo(.)20 b(The)15 b(syn)o(tax)g(for)f(c)o(h)o(unks)i(is:)1480 -973 y Fk(1)42 1062 y Fn(chunk)50 b Fj(!)g(f)p Fn(statement)32 -b Fj(j)16 b Fn(function)s Fj(g)-42 1134 y Fo(A)f(c)o(h)o(unk)f(ma)o(y)e -(con)o(tain)h(statemen)o(ts)f(and)i(function)g(de\014nitions,)g(and)g -(ma)o(y)e(b)q(e)j(in)f(a)g(\014le)g(or)f(in)h(a)g(string)f(inside)-42 -1190 y(the)k(host)f(program.)22 b(When)17 b(a)g(c)o(h)o(unk)g(is)f -(executed,)h(\014rst)g(all)e(its)h(functions)g(and)h(statemen)o(ts)e -(are)h(compiled,)-42 1247 y(then)d(the)e(statemen)o(ts)f(are)i -(executed)g(in)g(sequen)o(tial)f(order.)18 b(All)11 b(mo)q -(di\014cations)f(a)i(c)o(h)o(unk)g(e\013ects)f(on)h(the)g(global)-42 -1303 y(en)o(vironmen)o(t)k(p)q(ersist)h(after)f(its)g(end.)27 -b(Those)17 b(include)g(mo)q(di\014cations)f(to)g(global)g(v)m(ariables) -g(and)i(de\014nitions)-42 1359 y(of)d(new)h(functions)285 -1343 y Fk(2)304 1359 y Fo(.)29 1416 y(Ch)o(unks)j(ma)o(y)e(b)q(e)i -(pre-compiled;)g(see)g(program)d Fm(luac)i Fo(for)g(details.)30 -b(Ascii)18 b(\014les)g(with)g(c)o(h)o(unk)h(co)q(de)g(and)-42 -1472 y(their)e(binary)g(pre-compiled)f(forms)f(are)i(in)o(terc)o -(hangeable.)25 b(Lua)17 b(automatically)d(detects)j(the)g(\014le)g(t)o -(yp)q(e)g(and)-42 1529 y(acts)e(accordingly)l(.)-42 1672 -y Fp(3)67 b(T)n(yp)r(es)-42 1773 y Fo(Lua)14 b(is)g(a)f(dynamically)f -(t)o(yp)q(ed)i(language.)k(V)l(ariables)13 b(do)h(not)f(ha)o(v)o(e)g(t) -o(yp)q(es;)h(only)f(v)m(alues)h(do.)19 b(All)13 b(v)m(alues)h(carry)-42 -1830 y(their)h(o)o(wn)g(t)o(yp)q(e.)20 b(Therefore,)15 -b(there)g(are)g(no)g(t)o(yp)q(e)g(de\014nitions)g(in)g(the)g(language.) -29 1886 y(There)20 b(are)f(sev)o(en)h(basic)f(t)o(yp)q(es)h(in)g(Lua:) -29 b Fn(nil)p Fo(,)19 b Fn(numb)n(er)p Fo(,)h Fn(string)p -Fo(,)g Fn(function)p Fo(,)g Fn(CF)m(unction)p Fo(,)e -Fn(user)n(data)p Fo(,)j(and)-42 1943 y Fn(table)p Fo(.)f -Fn(Nil)14 b Fo(is)g(the)g(t)o(yp)q(e)h(of)f(the)h(v)m(alue)g -Fl(nil)p Fo(,)e(whose)h(main)f(prop)q(ert)o(y)h(is)h(to)e(b)q(e)j -(di\013eren)o(t)d(from)g(an)o(y)h(other)h(v)m(alue.)-42 -1999 y Fn(Numb)n(er)h Fo(represen)o(ts)f(real)f(\(\015oating)g(p)q(oin) -o(t\))g(n)o(um)o(b)q(ers,)h(while)f Fn(string)h Fo(has)g(the)g(usual)g -(meaning.)29 2056 y(F)l(unctions)20 b(are)f(considered)i(\014rst-class) -e(v)m(alues)h(in)g(Lua.)34 b(This)19 b(means)g(that)h(functions)f(can)h -(b)q(e)h(stored)-42 2112 y(in)c(v)m(ariables,)g(passed)g(as)g(argumen)o -(ts)f(to)g(other)h(functions)g(and)g(returned)h(as)e(results.)26 -b(When)17 b(a)g(function)g(is)-42 2169 y(de\014ned)g(in)d(Lua,)h(its)f -(b)q(o)q(dy)i(is)e(compiled)f(and)i(stored)g(in)f(a)h(giv)o(en)f(v)m -(ariable.)19 b(Lua)c(can)g(call)f(\(and)h(manipulate\))-42 -2225 y(functions)g(written)g(in)g(Lua)g(and)h(functions)f(written)f(in) -h(C;)f(the)i(latter)e(ha)o(v)o(e)g(t)o(yp)q(e)i Fn(CF)m(unction)s -Fo(.)29 2282 y(The)i(t)o(yp)q(e)f Fn(user)n(data)h Fo(is)g(pro)o(vided) -f(to)g(allo)o(w)f(arbitrary)f(C)j(p)q(oin)o(ters)f(to)g(b)q(e)h(stored) -f(in)g(Lua)h(v)m(ariables.)26 b(It)-42 2338 y(corresp)q(onds)18 -b(to)f Fm(void*)f Fo(and)i(has)f(no)g(pre-de\014ned)j(op)q(erations)c -(in)h(Lua,)h(b)q(esides)g(assignmen)o(t)d(and)j(equalit)o(y)-42 -2394 y(test.)24 b(Ho)o(w)o(ev)o(er,)16 b(b)o(y)g(using)h(fallbac)o(ks,) -e(the)i(programmer)c(ma)o(y)i(de\014ne)j(op)q(erations)e(for)g -Fn(user)n(data)h Fo(v)m(alues;)g(see)-42 2451 y(Section)f(4.7.)p --42 2482 780 2 v 10 2509 a Fi(1)28 2524 y Fh(As)c(usual,)i -Fg(f)p Ff(a)s Fg(g)f Fh(means)h(0)f(or)g(more)g Ff(a)s -Fh('s,)f([)p Ff(a)s Fh(])f(means)j(an)f(optional)j Ff(a)c -Fh(and)i Fg(f)p Ff(a)s Fg(g)1179 2509 y Fi(+)1217 2524 -y Fh(means)f(one)h(or)f(more)g Ff(a)s Fh('s.)10 2554 -y Fi(2)28 2570 y Fh(Actually)m(,)h(a)f(function)h(de\014nition)i(is)d -(an)h(assignmen)o(t)h(to)d(a)h(global)j(v)n(ariable;)e(see)f(Section)i -(3.)922 2748 y Fo(2)p eop +2 1 bop 0 91 a Fq(2)135 b(En)l(vironmen)l(t)46 b(and)e(Ch)l(unks)0 +294 y Fp(All)19 b(statemen)m(ts)k(in)c(Lua)h(are)h(executed)h(in)d(a)i +Fo(glob)-5 b(al)25 b(envir)-5 b(onment)p Fp(.)39 b(This)19 +b(en)m(vironmen)m(t,)j(whic)m(h)e(k)m(eeps)h(all)f(global)0 +407 y(v)-5 b(ariables)26 b(and)h(functions,)g(is)g(initialized)d(at)29 +b(the)e(b)s(eginning)e(of)j(the)g(em)m(b)s(edding)e(program)h(and)g(p)s +(ersists)f(un)m(til)0 520 y(its)k(end.)141 633 y(The)e(global)g(en)m +(vironmen)m(t)g(can)h(b)s(e)f(manipulated)e(b)m(y)i(Lua)g(co)s(de)h(or) +g(b)m(y)f(the)h(em)m(b)s(edding)d(program,)j(whic)m(h)0 +746 y(can)i(read)f(and)g(write)f(global)h(v)-5 b(ariables)29 +b(using)g(functions)g(in)g(the)h(library)e(that)j(implemen)m(ts)e(Lua.) +141 859 y(Global)d(v)-5 b(ariables)26 b(do)h(not)h(need)e(declaration.) +40 b(An)m(y)27 b(v)-5 b(ariable)26 b(is)g(assumed)g(to)i(b)s(e)f +(global)f(unless)f(explicitly)0 972 y(declared)30 b(lo)s(cal)f(\(see)j +(Section)e(4.4.5\).)43 b(Before)31 b(the)g(\014rst)e(assignmen)m(t,)i +(the)f(v)-5 b(alue)30 b(of)h(a)g(global)e(v)-5 b(ariable)29 +b(is)h Fm(nil)p Fp(.)141 1085 y(The)g(unit)f(of)h(execution)h(of)g(Lua) +f(is)f(called)h(a)g Fo(chunk)p Fp(.)41 b(The)30 b(syn)m(tax)2484 +1052 y Fl(1)2554 1085 y Fp(for)g(c)m(h)m(unks)g(is:)167 +1229 y Fo(chunk)100 b Fk(!)f(f)p Fo(statement)67 b Fk(j)33 +b Fo(function)7 b Fk(g)33 b Fp([)p Fo(r)-5 b(et)9 b Fp(])0 +1373 y(A)28 b(c)m(h)m(unk)g(ma)m(y)g(con)m(tain)h(statemen)m(ts)g(and)f +(function)f(de\014nitions,)f(and)h(ma)m(y)i(b)s(e)e(in)g(a)h(\014le)f +(or)h(in)f(a)h(string)f(inside)0 1486 y(the)g(host)f(program.)39 +b(A)27 b(c)m(h)m(unk)f(ma)m(y)h(optionally)d(ends)i(with)f(a)i(return)e +(statemen)m(t)j(\(see)f(Section)g(4.4.3\).)41 b(When)0 +1599 y(a)c(c)m(h)m(unk)f(is)g(executed,)j(\014rst)d(all)f(its)h +(functions)f(and)h(statemen)m(ts)i(are)f(compiled,)f(then)h(the)f +(statemen)m(ts)j(are)0 1712 y(executed)c(in)e(sequen)m(tial)h(order.)53 +b(All)33 b(mo)s(di\014cations)f(a)j(c)m(h)m(unk)f(e\013ects)i(on)e(the) +h(global)f(en)m(vironmen)m(t)g(p)s(ersist)0 1825 y(after)d(its)f(end.) +40 b(Those)30 b(include)e(mo)s(di\014cations)h(to)i(global)e(v)-5 +b(ariables)29 b(and)h(de\014nitions)e(of)j(new)f(functions)3715 +1792 y Fl(2)3753 1825 y Fp(.)141 1938 y(Ch)m(unks)k(ma)m(y)i(b)s(e)f +(pre-compiled;)h(see)g(program)f Fn(luac)f Fp(for)h(details.)55 +b(T)-8 b(ext)36 b(\014les)e(with)g(c)m(h)m(unks)h(and)g(their)0 +2051 y(binary)g(pre-compiled)f(forms)i(are)g(in)m(terc)m(hangeable.)59 +b(Lua)36 b(automatically)g(detects)i(the)e(\014le)g(t)m(yp)s(e)g(and)g +(acts)0 2163 y(accordingly)-8 b(.)0 2450 y Fq(3)135 b(T)l(yp)t(es)0 +2653 y Fp(Lua)27 b(is)f(a)i(dynamically)d(t)m(yp)s(ed)i(language.)40 +b(V)-8 b(ariables)27 b(do)g(not)h(ha)m(v)m(e)g(t)m(yp)s(es;)h(only)d(v) +-5 b(alues)27 b(do.)39 b(All)26 b(v)-5 b(alues)27 b(carry)0 +2766 y(their)i(o)m(wn)i(t)m(yp)s(e.)41 b(Therefore,)30 +b(there)h(are)f(no)h(t)m(yp)s(e)f(de\014nitions)e(in)h(the)i(language.) +141 2879 y(There)39 b(are)h(sev)m(en)f(basic)g(t)m(yp)s(es)g(in)f(Lua:) +58 b Fo(nil)p Fp(,)42 b Fo(numb)-5 b(er)p Fp(,)42 b Fo(string)p +Fp(,)h Fo(function)p Fp(,)e Fo(CF)-7 b(unction)p Fp(,)43 +b Fo(user)-5 b(data)p Fp(,)44 b(and)0 2992 y Fo(table)p +Fp(.)d Fo(Nil)28 b Fp(is)h(the)g(t)m(yp)s(e)g(of)g(the)h(v)-5 +b(alue)28 b Fm(nil)p Fp(,)i(whose)f(main)f(prop)s(ert)m(y)g(is)g(to)i +(b)s(e)e(di\013eren)m(t)h(from)f(an)m(y)i(other)f(v)-5 +b(alue.)0 3104 y Fo(Numb)g(er)30 b Fp(represen)m(ts)h(real)f +(\(\015oating)g(p)s(oin)m(t\))g(n)m(um)m(b)s(ers,)f(while)g +Fo(string)h Fp(has)g(the)h(usual)e(meaning.)141 3217 +y(F)-8 b(unctions)39 b(are)i(considered)d(\014rst-class)i(v)-5 +b(alues)39 b(in)f(Lua.)69 b(This)38 b(means)i(that)g(functions)f(can)h +(b)s(e)f(stored)0 3330 y(in)33 b(v)-5 b(ariables,)34 +b(passed)g(as)h(argumen)m(ts)f(to)h(other)g(functions)e(and)g(returned) +g(as)i(results.)51 b(When)34 b(a)h(function)e(is)0 3443 +y(de\014ned)28 b(in)h(Lua,)g(its)g(b)s(o)s(dy)f(is)h(compiled)f(and)h +(stored)g(in)f(a)i(giv)m(en)g(v)-5 b(ariable.)39 b(Lua)29 +b(can)h(call)f(\(and)g(manipulate\))0 3556 y(functions)g(written)g(in)g +(Lua)h(and)g(functions)f(written)h(in)f(C;)h(the)g(latter)h(ha)m(v)m(e) +h(t)m(yp)s(e)e Fo(CF)-7 b(unction)7 b Fp(.)141 3669 y(The)35 +b(t)m(yp)s(e)g Fo(user)-5 b(data)37 b Fp(is)d(pro)m(vided)g(to)i(allo)m +(w)e(arbitrary)g(C)h(p)s(oin)m(ters)e(to)j(b)s(e)f(stored)g(in)f(Lua)g +(v)-5 b(ariables.)54 b(It)0 3782 y(corresp)s(onds)33 +b(to)j Fn(void*)d Fp(and)h(has)g(no)h(pre-de\014ned)e(op)s(erations)h +(in)f(Lua,)j(b)s(esides)d(assignmen)m(t)h(and)g(equalit)m(y)0 +3895 y(test.)50 b(Ho)m(w)m(ev)m(er,)37 b(b)m(y)c(using)f(fallbac)m(ks,) +h(the)h(programmer)f(ma)m(y)h(de\014ne)e(op)s(erations)h(for)g +Fo(user)-5 b(data)35 b Fp(v)-5 b(alues;)34 b(see)0 4008 +y(Section)c(4.7.)141 4121 y(The)e(t)m(yp)s(e)g Fo(table)h +Fp(implemen)m(ts)e(asso)s(ciativ)m(e)i(arra)m(ys,)g(that)g(is,)f(arra)m +(ys)h(that)g(can)g(b)s(e)e(indexed)g(not)i(only)e(with)0 +4234 y(n)m(um)m(b)s(ers,)j(but)g(with)f(an)m(y)i(v)-5 +b(alue)31 b(\(except)h Fm(nil)p Fp(\).)42 b(Therefore,)31 +b(this)f(t)m(yp)s(e)h(ma)m(y)g(b)s(e)f(used)g(not)h(only)f(to)i +(represen)m(t)0 4346 y(ordinary)c(arra)m(ys,)j(but)f(also)g(sym)m(b)s +(ol)f(tables,)h(sets,)h(records,)f(etc.)42 b(T)-8 b(o)30 +b(represen)m(t)g(records,)g(Lua)g(uses)g(the)g(\014eld)0 +4459 y(name)38 b(as)h(an)f(index.)62 b(The)38 b(language)g(supp)s(orts) +f(this)g(represen)m(tation)h(b)m(y)g(pro)m(viding)e Fn(a.name)h +Fp(as)h(syn)m(tactic)0 4572 y(sugar)i(for)f Fn(a["name"])p +Fp(.)67 b(T)-8 b(ables)40 b(ma)m(y)g(also)g(carry)g(metho)s(ds.)68 +b(Because)42 b(functions)c(are)j(\014rst)e(class)g(v)-5 +b(alues,)0 4685 y(table)33 b(\014elds)f(ma)m(y)i(con)m(tain)g +(functions.)48 b(The)33 b(form)g Fn(t:f\(x\))e Fp(is)i(syn)m(tactic)h +(sugar)f(for)h Fn(t.f\(t,x\))p Fp(,)e(whic)m(h)g(calls)0 +4798 y(the)f(metho)s(d)e Fn(f)h Fp(from)g(the)h(table)f +Fn(t)g Fp(passing)f(itself)h(as)g(the)h(\014rst)e(parameter.)141 +4911 y(It)23 b(is)f(imp)s(ortan)m(t)h(to)g(notice)h(that)f(tables)g +(are)h(ob)5 b(jects,)25 b(and)e(not)g(v)-5 b(alues.)38 +b(V)-8 b(ariables)22 b(cannot)i(con)m(tain)f(tables,)0 +5024 y(only)28 b(references)i(to)g(them.)41 b(Assignmen)m(t,)29 +b(parameter)h(passing)e(and)h(returns)f(alw)m(a)m(ys)i(manipulate)e +(references)p 0 5103 1560 4 v 104 5157 a Fj(1)138 5189 +y Fi(As)e(usual,)g Fh(f)p Fg(a)6 b Fh(g)26 b Fi(means)g(0)g(or)g(more)f +Fg(a)6 b Fi('s,)26 b([)p Fg(a)6 b Fi(])27 b(means)e(an)h(optional)g +Fg(a)g Fi(and)f Fh(f)p Fg(a)6 b Fh(g)2439 5157 y Fj(+)2517 +5189 y Fi(means)25 b(one)h(or)g(more)f Fg(a)6 b Fi('s.)104 +5248 y Fj(2)138 5280 y Fi(Actually)-6 b(,)26 b(a)g(function)f +(de\014nition)h(is)g(an)g(assignmen)n(t)f(to)h(a)g(global)h(v)l +(ariable;)g(see)f(Section)g(3.)1927 5589 y Fp(2)p eop %%Page: 3 3 -3 2 bop 29 199 a Fo(The)12 b(t)o(yp)q(e)g Fn(table)g -Fo(implemen)o(ts)d(asso)q(ciativ)o(e)i(arra)o(ys,)g(that)g(is,)h(arra)o -(ys)e(whic)o(h)i(can)g(b)q(e)h(indexed)g(not)f(only)f(with)-42 -256 y(n)o(um)o(b)q(ers,)k(but)g(with)g(an)o(y)g(v)m(alue)h(\(except)f -Fl(nil)p Fo(\).)20 b(Therefore,)15 b(this)f(t)o(yp)q(e)i(ma)o(y)e(b)q -(e)i(used)g(not)f(only)g(to)f(represen)o(t)-42 312 y(ordinary)h(arra)o -(ys,)e(but)i(also)f(sym)o(b)q(ol)g(tables,)g(sets,)g(records,)h(etc.)20 -b(T)l(o)15 b(represen)o(t)g(records,)f(Lua)i(uses)f(the)g(\014eld)-42 -369 y(name)k(as)f(an)h(index.)32 b(The)19 b(language)g(supp)q(orts)g -(this)f(represen)o(tation)g(b)o(y)i(pro)o(viding)e Fm(a.name)g -Fo(as)g(syn)o(tactic)-42 425 y(sugar)i(for)f Fm(a["name"])p -Fo(.)33 b(T)l(ables)20 b(ma)o(y)e(also)h(carry)g(metho)q(ds.)34 -b(Because)20 b(functions)g(are)g(\014rst)f(class)h(v)m(alues,)-42 -482 y(table)d(\014elds)g(ma)o(y)e(con)o(tain)g(functions.)25 -b(The)16 b(form)f Fm(t:f\(x\))h Fo(is)g(syn)o(tactic)g(sugar)g(for)g -Fm(t.f\(t,x\))p Fo(,)g(whic)o(h)g(calls)-42 538 y(the)g(metho)q(d)e -Fm(f)h Fo(from)f(the)h(table)g Fm(t)g Fo(passing)f(itself)g(as)h(the)g -(\014rst)g(parameter.)29 594 y(It)d(is)f(imp)q(ortan)o(t)e(to)i(notice) -g(that)g(tables)g(are)g(ob)s(jects,)g(and)h(not)f(v)m(alues.)19 -b(V)l(ariables)10 b(cannot)i(con)o(tain)e(tables,)-42 -651 y(only)15 b(references)g(to)f(them.)19 b(Assignmen)o(t,)12 -b(parameter)h(passing)i(and)f(returns)h(alw)o(a)o(ys)e(manipulate)g -(references)-42 707 y(to)k(tables,)f(and)i(do)f(not)f(imply)g(an)o(y)h -(kind)g(of)f(cop)o(y)l(.)26 b(Moreo)o(v)o(er,)16 b(tables)g(m)o(ust)f -(b)q(e)j(explicitly)e(created)h(b)q(efore)-42 764 y(used;)f(see)f -(Section)g(4.5.7.)-42 907 y Fp(4)67 b(The)23 b(Language)-42 -1008 y Fo(This)15 b(section)g(describ)q(es)h(the)f(lexis,)f(syn)o(tax)h -(and)g(seman)o(tics)e(of)i(Lua.)-42 1130 y Fe(4.1)56 -b(Lexical)19 b(Con)n(v)n(en)n(tions)-42 1216 y Fo(Lua)g(is)e(a)g(case)h -(sensitiv)o(e)f(language.)27 b(Iden)o(ti\014ers)18 b(can)g(b)q(e)g(an)o -(y)f(string)g(of)g(letters,)h(digits,)e(and)i(underscores,)-42 -1272 y(not)d(b)q(eginning)h(with)e(a)h(digit.)k(The)c(follo)o(wing)e(w) -o(ords)i(are)f(reserv)o(ed,)h(and)h(cannot)f(b)q(e)h(used)f(as)g(iden)o -(ti\014ers:)173 1366 y Fm(and)143 b(do)191 b(else)142 -b(elseif)95 b(end)173 1422 y(function)23 b(if)191 b(local)118 -b(nil)167 b(not)173 1478 y(or)g(repeat)95 b(return)f(until)119 -b(then)95 b(while)29 1572 y Fo(The)15 b(follo)o(wing)e(strings)i -(denote)g(other)g(tok)o(ens:)173 1665 y Fm(~=)48 b(<=)f(>=)h(<)71 -b(>)h(==)47 b(=)71 b(..)48 b(+)71 b(-)h(*)f(/)173 1721 -y(\045)h(\()f(\))h({)f(})h([)f(])g(;)h(,)f(.)29 1815 -y Fo(Literal)17 b(strings)f(can)i(b)q(e)g(delimited)e(b)o(y)i(matc)o -(hing)d(single)i(or)g(double)h(quotes,)g(and)f(can)h(con)o(tain)f(the)h -(C-)-42 1871 y(lik)o(e)i(escap)q(e)i(sequences)g Fm('\\n')p -Fo(,)f Fm('\\t')f Fo(and)h Fm('\\r')p Fo(.)36 b(Literal)20 -b(strings)g(can)g(also)g(b)q(e)i(delimited)d(b)o(y)h(matc)o(hing)-42 -1928 y Fm([[)k(...)g(]])p Fo(.)18 b(Literals)12 b(in)h(this)f(last)g -(form)f(ma)o(y)h(run)h(for)f(sev)o(eral)g(lines,)h(ma)o(y)e(con)o(tain) -h(nested)i Fm([[)23 b(...)h(]])p Fo(,)12 b(and)-42 1984 -y(do)k(not)e(in)o(terpret)h(escap)q(e)h(sequences.)29 -2041 y(Commen)o(ts)c(start)h(an)o(ywhere)i(outside)g(a)f(string)g(with) -g(a)g(double)h(h)o(yphen)h(\()p Fm(--)p Fo(\))e(and)h(run)g(un)o(til)f -(the)g(end)i(of)-42 2097 y(the)g(line.)29 2153 y(Numerical)h(constan)o -(ts)g(ma)o(y)f(b)q(e)j(written)e(with)h(an)g(optional)e(decimal)h -(part,)h(and)g(an)g(optional)f(decimal)-42 2210 y(exp)q(onen)o(t.)k -(Examples)14 b(of)g(v)m(alid)h(n)o(umerical)f(constan)o(ts)g(are:)126 -2303 y Fm(4)119 b(4.0)g(0.4)g(4.57e-3)f(0.3e12)-42 2425 -y Fe(4.2)56 b(Co)r(ercion)-42 2511 y Fo(Lua)19 b(pro)o(vides)f(some)f -(automatic)f(con)o(v)o(ersions.)29 b(An)o(y)19 b(arithmetic)d(op)q -(eration)i(applied)g(to)g(a)g(string)f(tries)h(to)-42 -2567 y(con)o(v)o(ert)d(that)f(string)g(to)h(a)f(n)o(um)o(b)q(er,)g -(follo)o(wing)f(the)i(usual)g(rules.)20 b(Con)o(v)o(ersely)l(,)14 -b(whenev)o(er)h(a)g(n)o(um)o(b)q(er)f(is)h(used)-42 2623 -y(when)h(a)f(string)f(is)h(exp)q(ected,)h(that)e(n)o(um)o(b)q(er)h(is)g -(con)o(v)o(erted)g(to)f(a)h(string,)f(according)h(to)f(the)h(follo)o -(wing)e(rule:)20 b(if)922 2748 y(3)p eop +3 2 bop 0 91 a Fp(to)35 b(tables,)g(and)e(do)h(not)h(imply)d(an)m(y)i +(kind)e(of)j(cop)m(y)-8 b(.)53 b(Moreo)m(v)m(er,)37 b(tables)d(m)m(ust) +g(b)s(e)f(explicitly)f(created)j(b)s(efore)0 204 y(used)30 +b(\(see)h(Section)f(4.5.7\).)0 489 y Fq(4)135 b(The)44 +b(Language)0 692 y Fp(This)29 b(section)h(describ)s(es)f(the)h(lexis,)g +(the)g(syn)m(tax)h(and)f(the)g(seman)m(tics)h(of)g(Lua.)0 +934 y Ff(4.1)112 b(Lexical)37 b(Con)m(v)m(en)m(tions)0 +1105 y Fp(Lua)e(is)g(a)h(case)g(sensitiv)m(e)f(language.)56 +b(Iden)m(ti\014ers)34 b(can)i(b)s(e)f(an)m(y)h(string)e(of)i(letters,)h +(digits,)f(and)f(underscores,)0 1218 y(not)c(b)s(eginning)c(with)i(a)i +(digit.)40 b(The)29 b(follo)m(wing)g(w)m(ords)h(are)h(reserv)m(ed,)g +(and)e(cannot)i(b)s(e)f(used)g(as)g(iden)m(ti\014ers:)286 +1397 y Fn(and)334 b(do)381 b(else)285 b(elseif)286 1510 +y(end)334 b(function)93 b(if)381 b(local)286 1623 y(nil)334 +b(not)f(or)381 b(repeat)286 1736 y(return)190 b(then)285 +b(until)237 b(while)141 1914 y Fp(The)30 b(follo)m(wing)f(strings)g +(denote)i(other)g(tok)m(ens:)430 2093 y Fn(~=)94 b(<=)h(>=)g(<)143 +b(>)g(==)95 b(=)143 b(..)95 b(+)143 b(-)g(*)g(/)430 2206 +y(\045)f(\()h(\))g({)g(})g([)g(])g(;)g(,)g(.)141 2385 +y Fp(Literal)44 b(strings)f(can)h(b)s(e)g(delimited)e(b)m(y)i(matc)m +(hing)h(single)e(or)h(double)f(quotes,)49 b(and)43 b(can)i(con)m(tain)g +(the)0 2498 y(C-lik)m(e)35 b(escap)s(e)h(sequences)g +Fn('\\n')p Fp(,)g Fn('\\t')e Fp(and)h Fn('\\r')p Fp(.)56 +b(Literal)34 b(strings)h(can)h(also)f(b)s(e)g(delimited)e(b)m(y)j(matc) +m(hing)0 2610 y Fn([[)47 b(...)g(]])p Fp(.)38 b(Literals)21 +b(in)h(this)f(brac)m(k)m(eted)j(form)f(ma)m(y)g(run)e(for)i(sev)m(eral) +g(lines,)f(ma)m(y)i(con)m(tain)f(nested)f Fn([[)48 b(...)f(]])0 +2723 y Fp(pairs,)29 b(and)h(do)g(not)h(in)m(terpret)f(escap)s(e)h +(sequences.)141 2836 y(Commen)m(ts)f(start)g(an)m(ywhere)f(outside)g(a) +h(string)e(with)h(a)h(double)e(h)m(yphen)g(\()p Fn(--)p +Fp(\))h(and)g(run)f(un)m(til)g(the)i(end)f(of)0 2949 +y(the)i(line.)39 b(Moreo)m(v)m(er,)32 b(if)e(the)g(\014rst)g(line)f(of) +h(a)h(c)m(h)m(unk)f(\014le)g(starts)g(with)f Fn(#)p Fp(,)i(this)e(line) +g(is)g(skipp)s(ed)3289 2916 y Fl(3)3326 2949 y Fp(.)141 +3062 y(Numerical)35 b(constan)m(ts)j(ma)m(y)e(b)s(e)g(written)f(with)g +(an)h(optional)g(decimal)f(part,)j(and)d(an)i(optional)e(decimal)0 +3175 y(exp)s(onen)m(t.)41 b(Examples)29 b(of)i(v)-5 b(alid)28 +b(n)m(umerical)h(constan)m(ts)j(are:)334 3354 y Fn(4)238 +b(4.0)g(0.4)g(4.57e-3)f(0.3e12)0 3595 y Ff(4.2)112 b(Co)s(ercion)0 +3767 y Fp(Lua)37 b(pro)m(vides)f(some)h(automatic)h(con)m(v)m(ersions.) +60 b(An)m(y)37 b(arithmetic)g(op)s(eration)f(applied)f(to)j(a)f(string) +f(tries)g(to)0 3880 y(con)m(v)m(ert)c(that)e(string)f(to)i(a)g(n)m(um)m +(b)s(er,)e(follo)m(wing)f(the)j(usual)d(rules.)40 b(Con)m(v)m(ersely)-8 +b(,)30 b(whenev)m(er)g(a)h(n)m(um)m(b)s(er)e(is)g(used)0 +3993 y(when)g(a)i(string)e(is)h(exp)s(ected,)h(that)g(n)m(um)m(b)s(er)e +(is)g(con)m(v)m(erted)j(to)f(a)g(string,)f(according)g(to)h(the)g +(follo)m(wing)e(rule:)39 b(if)0 4106 y(the)26 b(n)m(um)m(b)s(er)e(is)h +(an)g(in)m(teger,)i(it)e(is)g(written)g(without)f(exp)s(onen)m(t)i(or)f +(decimal)g(p)s(oin)m(t;)h(otherwise,)h(it)e(is)f(formatted)0 +4219 y(follo)m(wing)29 b(the)h Fn(\045g)g Fp(con)m(v)m(ersion)h(sp)s +(eci\014cation)e(of)i(the)f Fn(printf)f Fp(function)g(in)g(the)h +(standard)g(C)g(library)-8 b(.)0 4460 y Ff(4.3)112 b(Adjustmen)m(t)0 +4632 y Fp(F)-8 b(unctions)28 b(in)f(Lua)h(can)g(return)f(man)m(y)i(v)-5 +b(alues.)39 b(Because)30 b(there)e(are)h(no)f(t)m(yp)s(e)g +(declarations,)g(the)h(system)f(do)s(es)0 4745 y(not)36 +b(kno)m(w)f(ho)m(w)g(man)m(y)h(v)-5 b(alues)35 b(a)g(function)f(will)f +(return,)j(or)f(ho)m(w)h(man)m(y)f(parameters)h(it)f(needs.)55 +b(Therefore,)0 4858 y(sometimes,)26 b(a)g(list)e(of)h(v)-5 +b(alues)24 b(m)m(ust)h(b)s(e)g Fo(adjuste)-5 b(d)9 b +Fp(,)28 b(at)e(run)e(time,)i(to)g(a)f(giv)m(en)g(length.)39 +b(If)24 b(there)i(are)f(more)h(v)-5 b(alues)0 4971 y(than)33 +b(are)g(needed,)g(then)g(the)g(last)f(v)-5 b(alues)33 +b(are)g(thro)m(wn)f(a)m(w)m(a)m(y)-8 b(.)51 b(If)32 b(there)h(are)g +(more)g(needs)g(than)f(v)-5 b(alues,)33 b(then)0 5084 +y(the)g(list)e(is)g(extended)h(with)f(as)i(man)m(y)g +Fm(nil)p Fp('s)f(as)h(needed.)46 b(Adjustmen)m(t)32 b(o)s(ccurs)g(in)f +(m)m(ultiple)f(assignmen)m(t)j(and)0 5197 y(function)c(calls.)p +0 5254 1560 4 v 104 5308 a Fj(3)138 5340 y Fi(This)e(facilit)n(y)f +(allo)n(ws)i(the)d(use)h(of)h(Lua)e(as)i(a)f(script)f(in)n(terpreter)h +(in)f(Unix)g(systems.)1927 5589 y Fp(3)p eop %%Page: 4 4 -4 3 bop -42 199 a Fo(the)13 b(n)o(um)o(b)q(er)g(is)f(an)h(in)o(teger,)f -(it)g(is)g(written)g(without)g(exp)q(onen)o(t)h(or)f(decimal)f(p)q(oin) -o(t;)i(otherwise,)f(it)g(is)h(formatted)-42 256 y(follo)o(wing)g(the)j -(\\)p Fm(\045g)p Fo(")e(con)o(v)o(ersion)g(sp)q(eci\014cation)h(of)g -(the)h(standard)e Fm(printf)h Fo(C)g(function.)-42 377 -y Fe(4.3)56 b(Adjustmen)n(t)-42 463 y Fo(F)l(unctions)14 -b(in)g(Lua)h(can)f(return)g(man)o(y)f(v)m(alues.)19 b(Because)c(there)f -(are)g(no)g(t)o(yp)q(e)h(declarations,)d(the)i(system)f(do)q(es)-42 -520 y(not)18 b(kno)o(w)f(ho)o(w)g(man)o(y)f(v)m(alues)i(a)g(function)f -(will)g(return,)g(or)h(ho)o(w)f(man)o(y)f(parameters)g(it)h(needs.)28 -b(Therefore,)-42 576 y(sometimes,)10 b(a)i(list)g(of)g(v)m(alues)h(m)o -(ust)e(b)q(e)i Fn(adjuste)n(d)5 b Fo(,)13 b(at)f(run)g(time,)f(to)h(a)h -(giv)o(en)f(length.)18 b(If)13 b(there)g(are)f(more)f(v)m(alues)-42 -633 y(than)17 b(are)f(needed,)i(the)f(last)f(v)m(alues)h(are)f(thro)o -(wn)g(a)o(w)o(a)o(y)l(.)23 b(If)17 b(there)g(are)f(more)g(needs)h(than) -g(v)m(alues,)g(the)f(list)g(is)-42 689 y(extended)j(with)e(as)h(man)o -(y)e Fl(nil)p Fo('s)h(as)g(needed.)29 b(Adjustmen)o(t)17 -b(o)q(ccurs)h(in)f(m)o(ultiple)f(assignmen)o(t)g(and)i(function)-42 -746 y(calls.)-42 867 y Fe(4.4)56 b(Statemen)n(ts)-42 -953 y Fo(Lua)19 b(supp)q(orts)f(an)f(almost)f(con)o(v)o(en)o(tional)g -(set)i(of)f(statemen)o(ts.)26 b(The)18 b(con)o(v)o(en)o(tional)e -(commands)f(include)k(as-)-42 1009 y(signmen)o(t,)d(con)o(trol)f -(structures)i(and)g(pro)q(cedure)h(calls.)24 b(Non-con)o(v)o(en)o -(tional)16 b(commands)e(include)k(table)e(con-)-42 1066 -y(structors,)e(explained)i(in)f(Section)g(4.5.7,)e(and)i(lo)q(cal)g(v)m -(ariable)f(declarations.)-42 1186 y Fl(4.4.1)52 b(Blo)q(c)o(ks)-42 -1272 y Fo(A)15 b(blo)q(c)o(k)f(is)f(a)h(list)f(of)h(statemen)o(ts,)e -(executed)j(sequen)o(tially)l(.)k(An)o(y)14 b(statemen)o(t)e(can)j(b)q -(e)g(optionally)d(follo)o(w)o(ed)h(b)o(y)-42 1328 y(a)i(semicolon.)42 -1388 y Fn(blo)n(ck)49 b Fj(!)h(f)p Fn(stat)16 b(sc)s -Fj(g)g Fo([)p Fn(r)n(et)f(sc)s Fo(])98 1444 y Fn(sc)49 -b Fj(!)h Fo([';'])-42 1512 y(F)l(or)13 b(syn)o(tactic)f(reasons,)g(a)h -(return)g(statemen)o(t)e(can)i(only)g(b)q(e)g(written)f(as)h(the)g -(last)f(statemen)o(t)f(of)h(a)h(blo)q(c)o(k.)19 b(This)-42 -1569 y(restriction)14 b(also)g(a)o(v)o(oids)g(some)g(\\statemen)o(t)f -(not)i(reac)o(hed")g(errors.)-42 1689 y Fl(4.4.2)52 b(Assignmen)o(t)-42 -1775 y Fo(The)18 b(language)e(allo)o(ws)f(m)o(ultiple)g(assignmen)o(t.) -23 b(Therefore,)17 b(the)g(syn)o(tax)g(de\014nes)h(a)f(list)e(of)i(v)m -(ariables)f(on)h(the)-42 1831 y(left)h(side,)g(and)h(a)e(list)g(of)h -(expressions)g(on)g(the)g(righ)o(t)f(side.)29 b(Both)18 -b(lists)f(ha)o(v)o(e)g(their)h(elemen)o(ts)f(separated)h(b)o(y)-42 -1888 y(commas.)116 1947 y Fn(stat)50 b Fj(!)g Fn(varlist1)16 -b Fo('=')g Fn(explist1)42 2003 y(varlist1)50 b Fj(!)g -Fn(var)17 b Fj(f)p Fo(',')d Fn(var)5 b Fj(g)-42 2072 -y Fo(This)15 b(statemen)o(t)d(\014rst)i(ev)m(aluates)g(all)g(v)m(alues) -g(on)h(the)f(righ)o(t)g(side)g(and)h(ev)o(en)o(tual)f(indices)g(on)h -(the)f(left)g(side,)g(and)-42 2128 y(then)i(mak)o(es)e(the)h(assignmen) -o(ts.)j(Therefore,)c(it)h(can)g(b)q(e)h(used)g(to)e(exc)o(hange)i(t)o -(w)o(o)e(v)m(alues,)h(as)f(in)30 2222 y Fm(x,)24 b(y)f(=)h(y,)g(x)-42 -2316 y Fo(Before)f(the)g(assignmen)o(t,)f(the)g(list)f(of)i(v)m(alues)f -(is)g Fn(adjuste)n(d)h Fo(to)f(the)h(length)f(of)g(the)h(list)e(of)h(v) -m(ariables;)j(see)-42 2372 y(Section)16 b(4.3.)42 2444 -y Fn(var)50 b Fj(!)g Fn(name)-42 2516 y Fo(A)16 b(single)e(name)g(can)i -(denote)f(a)g(global)f(or)h(a)g(lo)q(cal)f(v)m(ariable,)g(or)h(a)g -(formal)d(parameter.)42 2589 y Fn(var)50 b Fj(!)g Fn(var)17 -b Fo('[')e Fn(exp1)i Fo(']')922 2748 y(4)p eop +4 3 bop 0 91 a Ff(4.4)112 b(Statemen)m(ts)0 263 y Fp(Lua)35 +b(supp)s(orts)f(an)i(almost)f(con)m(v)m(en)m(tional)i(set)f(of)g +(statemen)m(ts.)58 b(The)35 b(con)m(v)m(en)m(tional)i(commands)e +(include)e(as-)0 376 y(signmen)m(t,)h(con)m(trol)h(structures)e(and)g +(pro)s(cedure)g(calls.)50 b(Non-con)m(v)m(en)m(tional)35 +b(commands)f(include)e(table)h(con-)0 489 y(structors)d(\(Section)h +(4.5.7\),)i(and)c(lo)s(cal)h(v)-5 b(ariable)29 b(declarations)h +(\(Section)h(4.4.5\).)0 729 y Fm(4.4.1)105 b(Blo)s(c)m(ks)0 +901 y Fp(A)36 b(blo)s(c)m(k)g(is)f(a)h(list)f(of)h(statemen)m(ts,)k +(whic)m(h)35 b(is)g(executed)i(sequen)m(tially)-8 b(.)57 +b(An)m(y)36 b(statemen)m(t)i(can)e(b)s(e)g(optionally)0 +1013 y(follo)m(w)m(ed)30 b(b)m(y)g(a)h(semicolon:)167 +1150 y Fo(blo)-5 b(ck)100 b Fk(!)g(f)p Fo(stat)34 b(sc)5 +b Fk(g)33 b Fp([)p Fo(r)-5 b(et)9 b Fp(])279 1263 y Fo(sc)99 +b Fk(!)h Fp([';'])0 1399 y(F)-8 b(or)38 b(syn)m(tactic)g(reasons,)h(a)e +Fn(return)f Fp(statemen)m(t)i(can)g(only)e(b)s(e)g(written)g(as)i(the)f +(last)g(statemen)m(t)i(of)e(a)g(blo)s(c)m(k.)0 1512 y(This)29 +b(restriction)g(also)h(a)m(v)m(oids)h(some)g(\\statemen)m(t)h(not)f +(reac)m(hed")h(errors.)0 1752 y Fm(4.4.2)105 b(Assignmen)m(t)0 +1924 y Fp(The)34 b(language)g(allo)m(ws)f(m)m(ultiple)f(assignmen)m(t.) +52 b(Therefore,)35 b(the)f(syn)m(tax)h(de\014nes)e(a)h(list)f(of)h(v)-5 +b(ariables)33 b(on)h(the)0 2037 y(left)i(side,)h(and)e(a)i(list)e(of)h +(expressions)f(on)h(the)h(righ)m(t)e(side.)58 b(Both)36 +b(lists)f(ha)m(v)m(e)j(their)d(elemen)m(ts)h(separated)h(b)m(y)0 +2150 y(commas:)315 2268 y Fo(stat)100 b Fk(!)g Fo(varlist1)34 +b Fp('=')f Fo(explist1)167 2381 y(varlist1)101 b Fk(!)f +Fo(var)33 b Fk(f)p Fp(',')h Fo(var)10 b Fk(g)0 2518 y +Fp(This)27 b(statemen)m(t)k(\014rst)d(ev)-5 b(aluates)30 +b(all)e(v)-5 b(alues)28 b(on)h(the)g(righ)m(t)f(side)g(and)h(ev)m(en)m +(tual)g(indices)e(on)i(the)g(left)g(side,)g(and)0 2631 +y(then)h(mak)m(es)h(the)g(assignmen)m(ts.)40 b(Therefore,)31 +b(it)f(can)g(b)s(e)g(used)g(to)h(exc)m(hange)h(t)m(w)m(o)f(v)-5 +b(alues,)30 b(as)h(in)143 2818 y Fn(x,)47 b(y)h(=)f(y,)g(x)0 +3006 y Fp(Before)f(the)f(assignmen)m(t,)k(the)c(list)e(of)i(v)-5 +b(alues)44 b(is)g Fo(adjuste)-5 b(d)47 b Fp(to)e(the)g(length)g(of)g +(the)g(list)e(of)i(v)-5 b(ariables)44 b(\(see)0 3119 +y(Section)30 b(4.3\).)141 3232 y(A)h(single)e(name)h(can)h(denote)g(a)f +(global)g(or)g(a)h(lo)s(cal)f(v)-5 b(ariable,)29 b(or)i(a)f(formal)g +(parameter:)167 3376 y Fo(var)100 b Fk(!)g Fo(name)0 +3520 y Fp(Square)30 b(brac)m(k)m(ets)i(are)e(used)g(to)h(index)e(a)i +(table:)167 3665 y Fo(var)100 b Fk(!)g Fo(var)33 b Fp('[')g +Fo(exp1)h Fp(']')0 3809 y(If)i Fn(var)f Fp(results)g(in)f(a)j(table)f +(v)-5 b(alue,)37 b(the)g(\014eld)d(indexed)h(b)m(y)h(the)g(expression)f +(v)-5 b(alue)35 b(gets)j(the)e(assigned)f(v)-5 b(alue.)0 +3922 y(Otherwise,)41 b(the)e(fallbac)m(k)g Fo(settable)h +Fp(is)e(called,)k(with)c(three)h(parameters:)59 b(the)40 +b(v)-5 b(alue)39 b(of)g Fn(var)p Fp(,)i(the)f(v)-5 b(alue)39 +b(of)0 4035 y(expression,)29 b(and)h(the)h(v)-5 b(alue)30 +b(b)s(eing)f(assigned)g(to)i(it;)f(see)h(Section)g(4.7.)141 +4148 y(The)f(syn)m(tax)h Fn(var.NAME)d Fp(is)h(just)h(syn)m(tactic)i +(sugar)e(for)g Fn(var["NAME"])p Fp(.)167 4292 y Fo(var)100 +b Fk(!)g Fo(var)33 b Fp('.')43 b Fo(name)0 4563 y Fm(4.4.3)105 +b(Con)m(trol)35 b(Structures)0 4735 y Fp(The)30 b(condition)f +(expression)h(of)h(a)g(con)m(trol)g(structure)f(can)h(return)e(an)m(y)i +(v)-5 b(alue.)41 b(All)30 b(v)-5 b(alues)30 b(di\013eren)m(t)g(from)g +Fm(nil)0 4848 y Fp(are)h(considered)e(true;)h Fm(nil)h +Fp(is)e(considered)g(false.)41 b Fn(if)p Fp('s,)30 b +Fn(while)p Fp('s)f(and)h Fn(repeat)p Fp('s)f(ha)m(v)m(e)i(the)g(usual)e +(meaning.)223 4987 y Fo(stat)101 b Fk(!)e Fm(while)32 +b Fo(exp1)i Fm(do)f Fo(blo)-5 b(ck)33 b Fm(end)574 5099 +y Fk(j)65 b Fm(rep)s(eat)32 b Fo(blo)-5 b(ck)33 b Fm(un)m(til)f +Fo(exp1)574 5212 y Fk(j)65 b Fm(if)32 b Fo(exp1)i Fm(then)e +Fo(blo)-5 b(ck)33 b Fk(f)p Fo(elseif)20 b Fk(g)33 b Fp([)p +Fm(else)f Fo(blo)-5 b(ck)10 b Fp(])34 b Fm(end)167 5325 +y Fo(elseif)100 b Fk(!)f Fm(elseif)33 b Fo(exp1)g Fm(then)g +Fo(blo)-5 b(ck)1927 5589 y Fp(4)p eop %%Page: 5 5 -5 4 bop -42 199 a Fo(Square)20 b(brac)o(k)o(ets)f(are)h(used)g(to)f -(index)h(a)f(table.)33 b(If)20 b Fm(var)f Fo(results)g(in)g(a)h(table)f -(v)m(alue,)h(the)g(\014eld)g(indexed)h(b)o(y)-42 256 -y(the)c(expression)f(v)m(alue)h(gets)f(the)h(assigned)f(v)m(alue.)24 -b(Otherwise,)16 b(the)h(fallbac)o(k)e Fn(settable)h Fo(is)g(called,)g -(with)f(three)-42 312 y(parameters:)31 b(the)22 b(v)m(alue)f(of)g -Fm(var)p Fo(,)h(the)g(v)m(alue)g(of)f(expression,)h(and)g(the)f(v)m -(alue)h(b)q(eing)g(assigned)f(to)g(it;)i(see)-42 369 -y(Section)16 b(4.7.)42 441 y Fn(var)50 b Fj(!)g Fn(var)17 -b Fo('.')j Fn(name)-42 513 y Fo(The)c(syn)o(tax)e Fm(var.NAME)g -Fo(is)h(just)g(syn)o(tactic)f(sugar)h(for)f Fm(var["NAME"])p -Fo(.)-42 633 y Fl(4.4.3)52 b(Con)o(trol)17 b(Structures)-42 -719 y Fo(The)k(condition)e(expression)h(of)f(a)h(con)o(trol)e -(structure)i(can)g(return)g(an)o(y)g(v)m(alue.)34 b(All)19 -b(v)m(alues)h(di\013eren)o(t)f(from)-42 775 y Fl(nil)f -Fo(are)g(considered)g(true,)h(while)f Fl(nil)f Fo(is)h(considered)h -(false.)28 b Fm(if)p Fo('s,)18 b Fm(while)p Fo('s)f(and)h -Fm(repeat)p Fo('s)f(ha)o(v)o(e)h(the)h(usual)-42 832 -y(meaning.)70 900 y Fn(stat)50 b Fj(!)g Fl(while)15 b -Fn(exp1)i Fl(do)f Fn(blo)n(ck)g Fl(end)245 956 y Fj(j)32 -b Fl(rep)q(eat)17 b Fn(blo)n(ck)f Fl(un)o(til)f Fn(exp1)245 -1013 y Fj(j)32 b Fl(if)16 b Fn(exp1)h Fl(then)g Fn(blo)n(ck)e -Fj(f)p Fn(elseif)8 b Fj(g)16 b Fo([)p Fl(else)f Fn(blo)n(ck)5 -b Fo(])15 b Fl(end)42 1069 y Fn(elseif)49 b Fj(!)h Fl(elseif)15 -b Fn(exp1)i Fl(then)f Fn(blo)n(ck)29 1162 y Fo(A)g Fm(return)g -Fo(is)g(used)g(to)g(return)g(v)m(alues)h(from)d(a)i(function.)23 -b(Because)17 b(a)f(function)g(ma)o(y)f(return)h(more)f(than)-42 -1219 y(one)h(v)m(alue,)f(the)g(syn)o(tax)g(for)f(a)h(return)g(statemen) -o(t)e(is:)42 1291 y Fn(r)n(et)50 b Fj(!)g Fl(return)16 -b Fn(explist)-42 1483 y Fl(4.4.4)52 b(F)l(unction)18 -b(Calls)e(as)h(Statemen)o(ts)-42 1569 y Fo(Because)f(of)f(p)q(ossible)g -(side-e\013ects,)g(function)g(calls)f(can)h(b)q(e)h(executed)g(as)f -(statemen)o(ts.)42 1641 y Fn(stat)50 b Fj(!)g Fn(functionc)n(al)r(l)-42 -1713 y Fo(Ev)o(en)o(tual)15 b(returned)g(v)m(alues)h(are)f(thro)o(wn)f -(a)o(w)o(a)o(y)l(.)19 b(F)l(unction)c(calls)f(are)h(explained)g(in)g -(Section)g(4.5.8.)-42 1833 y Fl(4.4.5)52 b(Lo)q(cal)19 -b(Declarations)-42 1919 y Fo(Lo)q(cal)e(v)m(ariables)e(can)h(b)q(e)h -(declared)f(an)o(ywhere)g(inside)g(a)g(blo)q(c)o(k.)22 -b(Their)16 b(scop)q(e)h(b)q(egins)f(after)f(the)i(declaration)-42 -1975 y(and)f(lasts)e(un)o(til)g(the)i(end)f(of)g(the)g(blo)q(c)o(k.)20 -b(The)15 b(declaration)f(ma)o(y)g(include)i(an)f(initial)e(assignmen)o -(t:)92 2044 y Fn(stat)50 b Fj(!)g Fl(lo)q(cal)17 b Fn(de)n(clist)e -Fo([)p Fn(init)t Fo(])42 2100 y Fn(de)n(clist)49 b Fj(!)h -Fn(name)16 b Fj(f)p Fo(',')f Fn(name)s Fj(g)96 2157 y -Fn(init)49 b Fj(!)h Fo('=')16 b Fn(explist1)-42 2225 -y Fo(If)f(there)f(is)f(an)h(initial)e(assignmen)o(t,)g(it)h(has)h(the)g -(same)f(seman)o(tics)f(of)h(a)h(m)o(ultiple)e(assignmen)o(t.)17 -b(Otherwise,)d(all)-42 2281 y(v)m(ariables)h(are)g(initialized)e(with)i -Fl(nil)p Fo(.)-42 2403 y Fe(4.5)56 b(Expressions)-42 -2489 y Fl(4.5.1)c(Simple)15 b(Expressions)-42 2575 y -Fo(Simple)f(expressions)h(are:)922 2748 y(5)p eop +5 4 bop 141 204 a Fp(A)32 b Fn(return)e Fp(is)h(used)g(to)h(return)f(v) +-5 b(alues)31 b(from)g(a)h(function)f(or)g(a)h(c)m(h)m(unk.)45 +b(Because)33 b(they)f(ma)m(y)g(return)f(more)0 317 y(than)f(one)h(v)-5 +b(alue,)30 b(the)g(syn)m(tax)h(for)g(a)f(return)g(statemen)m(t)i(is:) +167 461 y Fo(r)-5 b(et)101 b Fk(!)e Fm(return)32 b Fo(explist)i +Fp([)p Fo(sc)5 b Fp(])0 846 y Fm(4.4.4)105 b(F)-9 b(unction)36 +b(Calls)f(as)f(Statemen)m(ts)0 1017 y Fp(Because)e(of)e(p)s(ossible)e +(side-e\013ects,)k(function)d(calls)g(can)i(b)s(e)f(executed)h(as)f +(statemen)m(ts:)167 1162 y Fo(stat)101 b Fk(!)e Fo(functionc)-5 +b(al)5 b(l)0 1306 y Fp(Ev)m(en)m(tual)31 b(returned)e(v)-5 +b(alues)29 b(are)i(thro)m(wn)f(a)m(w)m(a)m(y)-8 b(.)43 +b(F)-8 b(unction)30 b(calls)g(are)g(explained)f(in)g(Section)h(4.5.8.)0 +1546 y Fm(4.4.5)105 b(Lo)s(cal)36 b(Declarations)0 1718 +y Fp(Lo)s(cal)c(v)-5 b(ariables)31 b(can)h(b)s(e)g(declared)g(an)m +(ywhere)g(inside)e(a)i(blo)s(c)m(k.)46 b(Their)30 b(scop)s(e)j(b)s +(egins)d(after)j(the)f(declaration)0 1830 y(and)e(lasts)g(un)m(til)e +(the)j(end)f(of)g(the)h(blo)s(c)m(k.)40 b(The)30 b(declaration)g(ma)m +(y)h(include)d(an)i(initial)e(assignmen)m(t:)267 1967 +y Fo(stat)101 b Fk(!)e Fm(lo)s(cal)33 b Fo(de)-5 b(clist)34 +b Fp([)p Fo(init)9 b Fp(])167 2080 y Fo(de)-5 b(clist)101 +b Fk(!)e Fo(name)34 b Fk(f)p Fp(',')f Fo(name)7 b Fk(g)274 +2193 y Fo(init)100 b Fk(!)f Fp('=')33 b Fo(explist1)0 +2329 y Fp(If)h(presen)m(t,)h(an)f(initial)d(assignmen)m(t)j(has)g(the)g +(same)h(seman)m(tics)f(of)g(a)h(m)m(ultiple)c(assignmen)m(t.)52 +b(Otherwise,)34 b(all)0 2442 y(v)-5 b(ariables)29 b(are)i(initialized)c +(with)i Fm(nil)p Fp(.)0 2686 y Ff(4.5)112 b(Expressions)0 +2857 y Fm(4.5.1)105 b(Simple)35 b(Expressions)0 3029 +y Fp(Simple)28 b(expressions)h(are:)167 3165 y Fo(exp)100 +b Fk(!)g Fp('\(')33 b Fo(exp)g Fp('\)')167 3278 y Fo(exp)100 +b Fk(!)g Fm(nil)167 3391 y Fo(exp)g Fk(!)g Fp('n)m(um)m(b)s(er')167 +3504 y Fo(exp)g Fk(!)g Fp('literal')167 3617 y Fo(exp)g +Fk(!)g Fo(var)0 3758 y Fp(Num)m(b)s(ers)44 b(\(n)m(umerical)g(constan)m +(ts\))j(and)e(string)f(literals)f(are)j(explained)d(in)h(Section)h +(4.1.)87 b(V)-8 b(ariables)45 b(are)0 3871 y(explained)29 +b(in)g(Section)h(4.4.2.)0 4111 y Fm(4.5.2)105 b(Arithmetic)34 +b(Op)s(erators)0 4283 y Fp(Lua)41 b(supp)s(orts)e(the)i(usual)f +(arithmetic)g(op)s(erators.)73 b(These)41 b(op)s(erators)g(are)h(the)f +(binary)e Fn(+)p Fp(,)44 b Fn(-)p Fp(,)f Fn(*)p Fp(,)h +Fn(/)d Fp(and)f Fn(^)0 4396 y Fp(\(exp)s(onen)m(tiation\),)32 +b(and)g(the)g(unary)e Fn(-)p Fp(.)45 b(If)32 b(the)g(op)s(erands)e(are) +i(n)m(um)m(b)s(ers,)f(or)h(strings)f(that)h(can)g(b)s(e)f(con)m(v)m +(erted)0 4509 y(to)26 b(n)m(um)m(b)s(ers,)f(according)h(to)g(the)g +(rules)e(giv)m(en)h(in)f(Section)h(4.2,)j(then)d(all)g(op)s(erations)f +(but)h(exp)s(onen)m(tiation)g(ha)m(v)m(e)0 4622 y(the)33 +b(usual)e(meaning.)47 b(Otherwise,)33 b(the)g(fallbac)m(k)f(\\arith")h +(is)f(called)g(\(see)h(Section)g(4.7\).)49 b(An)33 b(exp)s(onen)m +(tiation)0 4735 y(alw)m(a)m(ys)39 b(calls)f(this)f(fallbac)m(k.)65 +b(The)38 b(standard)f(mathematical)i(library)d(rede\014nes)i(this)f +(fallbac)m(k,)j(giving)e(the)0 4848 y(exp)s(ected)31 +b(meaning)e(to)j(exp)s(onen)m(tiation)d(\(see)j(Section)e(6.3\).)0 +5088 y Fm(4.5.3)105 b(Relational)35 b(Op)s(erators)0 +5259 y Fp(Lua)30 b(pro)m(vides)f(the)i(follo)m(wing)e(relational)g(op)s +(erators:)1927 5589 y(5)p eop %%Page: 6 6 -6 5 bop 42 193 a Fn(exp)50 b Fj(!)g Fo('\(')16 b Fn(exp)g -Fo('\)')42 250 y Fn(exp)50 b Fj(!)g Fl(nil)42 306 y Fn(exp)g -Fj(!)g Fo('n)o(um)o(b)q(er')42 362 y Fn(exp)g Fj(!)g -Fo('literal')42 419 y Fn(exp)g Fj(!)g Fn(var)-42 490 -y Fo(Num)o(b)q(ers)22 b(\(n)o(umerical)f(constan)o(ts\))g(and)i(string) -f(literals)f(are)h(explained)h(in)f(Section)h(4.1.)41 -b(V)l(ariables)22 b(are)-42 546 y(explained)16 b(in)f(Section)g(4.4.2.) --42 665 y Fl(4.5.2)52 b(Arithmetic)15 b(Op)q(erators)-42 -751 y Fo(Lua)21 b(supp)q(orts)g(the)g(usual)f(arithmetic)e(op)q -(erators.)35 b(These)21 b(op)q(erators)f(are)g(the)g(binary)h -Fm(+)p Fo(,)g Fm(-)p Fo(,)g Fm(*)p Fo(,)h Fm(/)e Fo(and)h -Fm(^)-42 808 y Fo(\(exp)q(onen)o(tiation\),)15 b(and)h(the)g(unary)g -Fm(-)p Fo(.)22 b(If)16 b(the)g(op)q(erands)g(are)g(n)o(um)o(b)q(ers,)f -(or)g(strings)g(that)g(can)h(b)q(e)h(con)o(v)o(erted)-42 -864 y(to)d(n)o(um)o(b)q(ers,)g(according)g(to)g(the)g(rules)g(giv)o(en) -g(in)h(Section)f(4.2,)f(all)h(op)q(erations)f(but)i(exp)q(onen)o -(tiation)e(ha)o(v)o(e)h(the)-42 920 y(usual)f(meaning.)18 -b(Otherwise,)13 b(the)g(fallbac)o(k)f(\\arith")g(is)g(called;)h(see)g -(Section)g(4.7.)19 b(An)13 b(exp)q(onen)o(tiation)f(alw)o(a)o(ys)-42 -977 y(calls)k(this)f(fallbac)o(k.)22 b(The)16 b(standard)g -(mathematical)c(library)j(rede\014nes)j(this)d(fallbac)o(k,)g(giving)g -(the)h(exp)q(ected)-42 1033 y(meaning)e(to)h(exp)q(onen)o(tiation;)f -(see)h(Section)g(6.3.)-42 1152 y Fl(4.5.3)52 b(Relational)18 -b(Op)q(erators)-42 1238 y Fo(Lua)e(o\013ers)e(the)i(follo)o(wing)d -(relational)g(op)q(erators:)126 1327 y Fm(<)71 b(>)g(<=)48 -b(>=)f(~=)h(==)-42 1415 y Fo(All)15 b(return)g Fl(nil)f -Fo(as)h(false)g(and)g(a)g(v)m(alue)g(di\013eren)o(t)g(from)e -Fl(nil)h Fo(\(actually)g(the)h(n)o(um)o(b)q(er)g(1\))g(as)f(true.)29 -1472 y(Equalit)o(y)h(\014rst)h(compares)f(the)i(t)o(yp)q(es)f(of)h(its) -e(op)q(erands.)24 b(If)17 b(they)g(are)f(di\013eren)o(t,)g(the)g -(result)g(is)g Fl(nil)p Fo(.)23 b(Oth-)-42 1528 y(erwise,)18 -b(their)f(v)m(alues)h(are)g(compared.)26 b(Num)o(b)q(ers)17 -b(and)h(strings)f(are)h(compared)e(in)i(the)g(usual)f(w)o(a)o(y)l(.)27 -b(T)l(ables,)-42 1585 y(CF)l(unctions,)14 b(and)g(functions)g(are)g -(compared)f(b)o(y)h(reference,)h(that)e(is,)h(t)o(w)o(o)e(tables)i(are) -g(considered)g(equal)g(only)-42 1641 y(if)h(they)g(are)g(the)h(same)d -(table.)20 b(The)15 b(op)q(erator)g Fm(~=)f Fo(is)h(exactly)g(the)g -(negation)f(of)h(equalit)o(y)f(\()p Fm(==)p Fo(\).)29 -1698 y(The)19 b(other)g(op)q(erators)f(w)o(ork)g(as)g(follo)o(ws.)29 -b(If)19 b(b)q(oth)g(argumen)o(ts)e(are)i(n)o(um)o(b)q(ers,)f(they)h -(are)g(compared)f(as)-42 1754 y(suc)o(h.)27 b(Otherwise,)17 -b(if)g(b)q(oth)g(argumen)o(ts)f(can)h(b)q(e)h(con)o(v)o(erted)f(to)g -(strings,)f(their)h(v)m(alues)g(are)g(compared)g(using)-42 -1811 y(lexicographical)d(order.)20 b(Otherwise,)14 b(the)i(fallbac)o(k) -d(\\order")i(is)g(called;)f(see)h(Section)h(4.7.)-42 -1930 y Fl(4.5.4)52 b(Logical)18 b(Op)q(erators)-42 2016 -y Fo(All)f(logical)f(op)q(erators,)g(lik)o(e)h(con)o(trol)f -(structures,)h(consider)g Fl(nil)g Fo(as)g(false)g(and)g(an)o(ything)g -(else)g(as)g(true.)26 b(The)-42 2072 y(logical)14 b(op)q(erators)g -(are:)269 2161 y Fm(and)71 b(or)g(not)-42 2249 y Fo(The)17 -b(op)q(erators)f Fm(and)g Fo(and)h Fm(or)f Fo(use)h(short-cut)f(ev)m -(aluation,)g(that)g(is,)g(the)h(second)g(op)q(erand)g(is)f(ev)m -(aluated)h(only)-42 2306 y(if)e(necessary)l(.)-42 2425 -y Fl(4.5.5)52 b(Concatenation)-42 2511 y Fo(Lua)18 b(o\013ers)d(a)i -(string)f(concatenation)g(op)q(erator,)f(denoted)j(b)o(y)e(\\)p -Fm(..)p Fo(".)24 b(If)17 b(op)q(erands)g(are)g(strings)e(or)i(n)o(um)o -(b)q(ers,)-42 2567 y(they)c(are)g(con)o(v)o(erted)f(to)g(strings)g -(according)g(to)g(the)h(rules)f(in)h(Section)f(4.2.)18 -b(Otherwise,)13 b(the)g(fallbac)o(k)e(\\concat")-42 2623 -y(is)k(called;)g(see)g(Section)g(4.7.)922 2748 y(6)p +6 5 bop 334 91 a Fn(<)143 b(>)g(<=)95 b(>=)g(~=)g(==)0 +279 y Fp(All)29 b(these)i(return)e Fm(nil)i Fp(as)f(false)g(and)g(a)h +(v)-5 b(alue)30 b(di\013eren)m(t)f(from)h Fm(nil)h Fp(\(actually)f(the) +h(n)m(um)m(b)s(er)e(1\))i(as)f(true.)141 392 y(Equalit)m(y)k(\014rst)f +(compares)i(the)g(t)m(yp)s(es)f(of)h(its)e(op)s(erands.)52 +b(If)34 b(they)g(are)h(di\013eren)m(t,)g(then)f(the)h(result)e(is)h +Fm(nil)p Fp(.)0 505 y(Otherwise,)25 b(their)g(v)-5 b(alues)24 +b(are)i(compared.)39 b(Num)m(b)s(ers)24 b(and)h(strings)f(are)i +(compared)f(in)f(the)i(usual)e(w)m(a)m(y)-8 b(.)40 b(T)-8 +b(ables,)0 618 y(CF)g(unctions,)28 b(and)g(functions)e(are)j(compared)f +(b)m(y)g(reference,)h(that)g(is,)f(t)m(w)m(o)i(tables)e(are)g +(considered)f(equal)h(only)0 731 y(if)h(they)i(are)g(the)f(same)h +(table.)41 b(The)29 b(op)s(erator)i Fn(~=)f Fp(is)f(exactly)i(the)g +(negation)g(of)f(equalit)m(y)g(\()p Fn(==)p Fp(\).)141 +844 y(The)h(other)i(op)s(erators)f(w)m(ork)g(as)g(follo)m(ws.)44 +b(If)31 b(b)s(oth)h(argumen)m(ts)g(are)g(n)m(um)m(b)s(ers,)f(then)h +(they)g(are)g(compared)0 956 y(as)c(suc)m(h.)39 b(Otherwise,)27 +b(if)f(b)s(oth)h(argumen)m(ts)g(can)h(b)s(e)f(con)m(v)m(erted)h(to)g +(strings,)f(their)g(v)-5 b(alues)26 b(are)i(compared)f(using)0 +1069 y(lexicographical)i(order.)40 b(Otherwise,)29 b(the)i(\\order")g +(fallbac)m(k)f(is)f(called)h(\(see)h(Section)f(4.7\).)0 +1309 y Fm(4.5.4)105 b(Logical)36 b(Op)s(erators)0 1481 +y Fp(Lik)m(e)g(con)m(trol)g(structures,)g(all)f(logical)g(op)s(erators) +h(consider)f Fm(nil)h Fp(as)g(false)f(and)g(an)m(ything)g(else)h(as)g +(true.)56 b(The)0 1594 y(logical)30 b(op)s(erators)g(are:)620 +1782 y Fn(and)143 b(or)f(not)0 1969 y Fp(The)31 b(op)s(erator)g +Fn(and)f Fp(returns)g Fm(nil)i Fp(if)e(its)g(\014rst)h(argumen)m(t)g +(is)f Fm(nil)p Fp(;)i(otherwise)f(it)g(returns)e(its)i(second)g +(argumen)m(t.)0 2082 y(The)d(op)s(erator)h Fn(or)g Fp(returns)e(its)i +(\014rst)f(argumen)m(t)h(if)f(it)g(is)g(di\013eren)m(t)g(from)h +Fm(nil)p Fp(;)g(otherwise)g(it)f(returns)g(its)g(second)0 +2195 y(argumen)m(t.)40 b(Both)29 b Fn(and)e Fp(and)g +Fn(or)g Fp(use)h(short-cut)g(ev)-5 b(aluation,)28 b(that)h(is,)e(the)h +(second)g(op)s(erand)f(is)g(ev)-5 b(aluated)28 b(only)0 +2308 y(if)h(necessary)-8 b(.)0 2548 y Fm(4.5.5)105 b(Concatenation)0 +2720 y Fp(Lua)33 b(o\013ers)h(a)g(string)e(concatenation)j(op)s +(erator,)g(denoted)f(b)m(y)f(\\)p Fn(..)p Fp(".)50 b(If)33 +b(op)s(erands)f(are)i(strings)f(or)g(n)m(um)m(b)s(ers,)0 +2833 y(then)j(they)g(are)h(con)m(v)m(erted)h(to)f(strings)e(according)h +(to)h(the)f(rules)f(in)g(Section)h(4.2.)59 b(Otherwise,)37 +b(the)f(fallbac)m(k)0 2946 y(\\concat")d(is)c(called)h(\(see)h(Section) +f(4.7\).)0 3186 y Fm(4.5.6)105 b(Precedence)0 3357 y +Fp(Op)s(erator)30 b(precedence)h(follo)m(ws)e(the)i(table)f(b)s(elo)m +(w,)g(from)g(the)g(lo)m(w)m(er)h(to)g(the)g(higher)e(priorit)m(y:)620 +3545 y Fn(and)143 b(or)620 3658 y(<)g(>)g(<=)95 b(>=)g(~=)g(==)620 +3771 y(..)620 3884 y(+)143 b(-)620 3997 y(*)g(/)620 4109 +y(not)95 b(-)48 b(\(unary\))620 4222 y(^)0 4410 y Fp(All)29 +b(binary)g(op)s(erators)h(are)h(left)f(asso)s(ciativ)m(e,)h(except)h +(for)e Fn(^)g Fp(\(exp)s(onen)m(tiation\),)g(whic)m(h)g(is)f(righ)m(t)h +(asso)s(ciativ)m(e.)0 4650 y Fm(4.5.7)105 b(T)-9 b(able)35 +b(Constructors)0 4822 y Fp(T)-8 b(able)30 b(constructors)g(are)g +(expressions)f(that)i(create)g(tables;)f(ev)m(ery)h(time)f(a)g +(constructor)g(is)g(ev)-5 b(aluated,)30 b(a)g(new)0 4935 +y(table)c(is)f(created.)41 b(Constructors)26 b(can)g(b)s(e)g(used)f(to) +i(create)h(empt)m(y)f(tables,)g(or)f(to)h(create)h(a)f(table)f(and)g +(initialize)0 5048 y(some)31 b(\014elds.)141 5160 y(The)f(general)g +(syn)m(tax)h(for)f(constructors)h(is:)1927 5589 y(6)p eop %%Page: 7 7 -7 6 bop -42 199 a Fl(4.5.6)52 b(Precedence)-42 285 y -Fo(Op)q(erator)15 b(precedence)i(follo)o(ws)d(the)h(table)g(b)q(elo)o -(w,)f(from)f(the)j(lo)o(w)o(er)d(to)i(the)g(higher)g(priorit)o(y:)269 -379 y Fm(and)71 b(or)269 435 y(<)g(>)h(<=)47 b(>=)h(~=)f(==)269 -492 y(..)269 548 y(+)71 b(-)269 605 y(*)g(/)269 661 y(not)47 -b(-)24 b(\(unary\))269 718 y(^)-42 811 y Fo(All)15 b(binary)g(op)q -(erators)f(are)h(left)f(asso)q(ciativ)o(e,)g(except)h(for)g -Fm(^)p Fo(,)g(whic)o(h)g(is)f(righ)o(t)g(asso)q(ciativ)o(e.)-42 -931 y Fl(4.5.7)52 b(T)l(able)18 b(Constructors)-42 1017 -y Fo(T)l(able)d(constructors)f(are)h(expressions)g(that)f(create)h -(tables;)f(ev)o(ery)h(time)e(a)i(constructor)f(is)h(ev)m(aluated,)g(a)f -(new)-42 1074 y(table)f(is)g(created.)19 b(Constructors)12 -b(can)h(b)q(e)h(used)g(to)e(create)h(empt)o(y)f(tables,)g(or)h(to)g -(create)g(a)f(table)h(and)g(initialize)-42 1130 y(some)h(\014elds.)29 -1187 y(The)h(general)g(syn)o(tax)g(for)f(constructors)h(is:)42 -1255 y Fn(table)n(c)n(onstructor)49 b Fj(!)i Fo(')p Fj(f)p -Fo(')15 b Fn(\014eld)r(list)g Fo(')p Fj(g)p Fo(')212 -1311 y Fn(\014eld)r(list)48 b Fj(!)j Fn(l\014eld)r(list)31 -b Fj(j)16 b Fn(\016eld)r(list)31 b Fj(j)16 b Fn(l\014eld)r(list)f -Fo(';')g Fn(\016eld)r(list)200 1368 y(l\014eld)r(list)48 -b Fj(!)j Fo([)p Fn(l\014eld)r(list1)6 b Fo(])197 1424 -y Fn(\016eld)r(list)49 b Fj(!)i Fo([)p Fn(\016eld)r(list1)6 -b Fo(])29 1517 y(The)15 b(form)f Fn(l\014eld)r(list1)g -Fo(is)h(used)g(to)g(initialize)e(lists.)42 1589 y Fn(l\014eld)r(list1) -49 b Fj(!)h Fn(exp)16 b Fj(f)p Fo(',')f Fn(exp)s Fj(g)h -Fo([','])-42 1662 y(The)i(expressions)f(in)g(the)g(list)f(are)h -(assigned)g(to)g(consecutiv)o(e)g(n)o(umerical)f(indexes,)h(starting)f -(with)h(1.)25 b(As)18 b(an)-42 1718 y(example:)30 1812 -y Fm(a)24 b(=)g({"v1",)f("v2",)g(34})-42 1906 y Fo(is)15 -b(equiv)m(alen)o(t)g(to:)30 2000 y Fm(temp)23 b(=)h({})30 -2056 y(temp[1])f(=)h("v1")30 2112 y(temp[2])f(=)h("v2")30 -2169 y(temp[3])f(=)h(34)30 2225 y(a)g(=)g(temp)29 2319 -y Fo(The)15 b(next)h(form)d(initializes)g(named)i(\014elds)g(in)g(a)g -(table.)42 2378 y Fn(\016eld)r(list1)50 b Fj(!)g Fn(\016eld)16 -b Fj(f)p Fo(',')f Fn(\016eld)5 b Fj(g)15 b Fo([','])127 -2435 y Fn(\016eld)50 b Fj(!)g Fn(name)16 b Fo('=')g Fn(exp)-42 -2503 y Fo(As)g(an)f(example:)30 2597 y Fm(a)24 b(=)g({x)f(=)h(1,)f(y)h -(=)g(3})922 2748 y Fo(7)p eop +7 6 bop 167 79 a Fo(table)-5 b(c)g(onstructor)103 b Fk(!)c +Fp(')p Fk(f)p Fp(')34 b Fo(\014eld)5 b(list)33 b Fp(')p +Fk(g)p Fp(')506 192 y Fo(\014eld)5 b(list)101 b Fk(!)e +Fo(l\014eld)5 b(list)66 b Fk(j)33 b Fo(\016eld)5 b(list)66 +b Fk(j)33 b Fo(l\014eld)5 b(list)33 b Fp(';')h Fo(\016eld)5 +b(list)483 305 y(l\014eld)g(list)101 b Fk(!)e Fp([)p +Fo(l\014eld)5 b(list1)12 b Fp(])477 418 y Fo(\016eld)5 +b(list)101 b Fk(!)e Fp([)p Fo(\016eld)5 b(list1)12 b +Fp(])141 604 y(The)30 b(form)g Fo(l\014eld)5 b(list1)32 +b Fp(is)d(used)h(to)h(initialize)c(lists.)167 748 y Fo(l\014eld)5 +b(list1)101 b Fk(!)f Fo(exp)33 b Fk(f)p Fp(',')h Fo(exp)6 +b Fk(g)33 b Fp([','])0 893 y(The)40 b(expressions)g(in)f(the)i(list)e +(are)i(assigned)f(to)i(consecutiv)m(e)f(n)m(umerical)f(indexes,)i +(starting)f(with)e(1.)72 b(F)-8 b(or)0 1006 y(example:)143 +1193 y Fn(a)48 b(=)f({"v1",)f("v2",)h(34})0 1381 y Fp(is)29 +b(roughly)g(equiv)-5 b(alen)m(t)30 b(to:)143 1568 y Fn(temp)47 +b(=)g({})143 1681 y(temp[1])f(=)h("v1")143 1794 y(temp[2])f(=)h("v2") +143 1907 y(temp[3])f(=)h(34)143 2020 y(a)h(=)f(temp)141 +2208 y Fp(The)30 b(next)h(form)e(initializes)f(named)i(\014elds)f(in)g +(a)i(table:)167 2326 y Fo(\016eld)5 b(list1)101 b Fk(!)f +Fo(\016eld)33 b Fk(f)p Fp(',')h Fo(\016eld)9 b Fk(g)34 +b Fp([','])337 2439 y Fo(\016eld)100 b Fk(!)g Fo(name)33 +b Fp('=')g Fo(exp)0 2576 y Fp(F)-8 b(or)31 b(example:)143 +2763 y Fn(a)48 b(=)f({x)g(=)h(1,)f(y)g(=)h(3})0 2951 +y Fp(is)29 b(roughly)g(equiv)-5 b(alen)m(t)30 b(to:)143 +3139 y Fn(temp)47 b(=)g({})143 3252 y(temp.x)f(=)i(1)190 +b(--)48 b(or)f(temp["x"])e(=)i(1)143 3365 y(temp.y)f(=)i(3)190 +b(--)48 b(or)f(temp["y"])e(=)i(3)143 3477 y(a)h(=)f(temp)0 +3718 y Fm(4.5.8)105 b(F)-9 b(unction)36 b(Calls)0 3889 +y Fp(A)30 b(function)g(call)f(has)h(the)h(follo)m(wing)e(syn)m(tax:)167 +4033 y Fo(functionc)-5 b(al)5 b(l)101 b Fk(!)e Fo(var)34 +b(r)-5 b(e)g(alPar)g(ams)0 4178 y Fp(Here,)49 b Fn(var)44 +b Fp(can)h(b)s(e)f(an)m(y)h(v)-5 b(ariable)44 b(\(global,)k(lo)s(cal,)g +(indexed,)f(etc\).)86 b(If)44 b(its)g(v)-5 b(alue)45 +b(has)f(t)m(yp)s(e)h Fo(function)52 b Fp(or)0 4291 y +Fo(CF)-7 b(unction)7 b Fp(,)29 b(then)f(this)e(function)h(is)g(called.) +39 b(Otherwise,)27 b(the)h(\\function")f(fallbac)m(k)h(is)f(called,)g +(ha)m(ving)h(as)g(\014rst)0 4403 y(parameter)j(the)f(v)-5 +b(alue)30 b(of)h Fn(var)p Fp(,)f(and)f(then)h(the)h(original)d(call)i +(parameters.)141 4516 y(The)g(form:)167 4661 y Fo(functionc)-5 +b(al)5 b(l)101 b Fk(!)e Fo(var)34 b Fp(':')42 b Fo(name)33 +b(r)-5 b(e)g(alPar)g(ams)0 4805 y Fp(can)31 b(b)s(e)e(used)h(to)h(call) +f(\\metho)s(ds".)41 b(A)30 b(call)g Fn(var:name\(...\))d +Fp(is)i(syn)m(tactic)i(sugar)g(for)95 4992 y Fn(var.name\(var,)45 +b(...\))1927 5589 y Fp(7)p eop %%Page: 8 8 -8 7 bop -42 199 a Fo(is)15 b(equiv)m(alen)o(t)g(to:)30 -293 y Fm(temp)23 b(=)h({})30 350 y(temp.x)f(=)h(1)30 -406 y(temp.y)f(=)h(3)30 462 y(a)g(=)g(temp)-42 582 y -Fl(4.5.8)52 b(F)l(unction)18 b(Calls)-42 668 y Fo(A)e(function)f(call)f -(has)h(the)g(follo)o(wing)e(syn)o(tax:)42 740 y Fn(functionc)n(al)r(l) -49 b Fj(!)h Fn(var)17 b(r)n(e)n(alPar)n(ams)-42 813 y -Fo(Here,)i Fm(var)e Fo(can)h(b)q(e)h(an)o(y)e(v)m(ariable)h(\(global,)e -(lo)q(cal,)i(indexed,)g(etc\).)28 b(If)18 b(its)f(t)o(yp)q(e)h(is)g -Fn(function)j Fo(or)c Fn(CF)m(unction)s Fo(,)-42 869 -y(this)g(function)g(is)f(called.)25 b(Otherwise,)17 b(the)g(fallbac)o -(k)f(\\function")g(is)h(called,)g(ha)o(ving)f(as)g(\014rst)h(parameter) -e(the)-42 925 y(v)m(alue)h(of)f Fm(var)p Fo(,)f(and)h(then)h(the)f -(original)f(call)g(parameters.)29 982 y(The)h(form:)42 -1054 y Fn(functionc)n(al)r(l)49 b Fj(!)h Fn(var)17 b -Fo(':')j Fn(name)c(r)n(e)n(alPar)n(ams)-42 1126 y Fo(can)g(b)q(e)g -(used)f(to)g(call)f(\\metho)q(ds".)19 b(A)c(call)f Fm(var:name\(...\))g -Fo(is)g(syn)o(tactic)h(sugar)f(for)6 1220 y Fm(var.name\(var,)22 -b(...\))-42 1314 y Fo(except)16 b(that)f Fm(var)f Fo(is)h(ev)m(aluated) -g(only)g(once.)42 1382 y Fn(r)n(e)n(alPar)n(ams)49 b -Fj(!)h Fo('\(')16 b([)p Fn(explist1)6 b Fo(])15 b('\)')42 -1438 y Fn(r)n(e)n(alPar)n(ams)49 b Fj(!)h Fn(table)n(c)n(onstructor)115 -1495 y(explist1)f Fj(!)h Fn(exp1)17 b Fj(f)p Fo(',')e -Fn(exp1)6 b Fj(g)-42 1563 y Fo(All)18 b(argumen)o(t)e(expressions)i -(are)g(ev)m(aluated)g(b)q(efore)g(the)h(call;)f(then)g(the)g(list)f(of) -h(argumen)o(ts)e(is)i(adjusted)g(to)-42 1620 y(the)j(length)f(of)f(the) -h(list)f(of)h(parameters)e(\(see)j(Section)f(4.3\);)h(\014nally)l(,)f -(this)g(list)f(is)g(assigned)h(to)g(the)g(formal)-42 -1676 y(parameters.)g(A)15 b(call)g(of)g(the)h(form)e -Fm(f{...})h Fo(is)g(syn)o(tactic)f(sugar)h(for)g Fm(f\({...}\))p -Fo(,)f(that)h(is,)g(the)h(parameter)e(list)-42 1732 y(is)h(a)g(single)g -(new)g(table.)29 1789 y(Because)h(a)f(function)h(can)g(return)f(an)o(y) -g(n)o(um)o(b)q(er)g(of)g(results)g(\(see)h(Section)f(4.4.3\),)e(the)j -(n)o(um)o(b)q(er)f(of)g(results)-42 1845 y(m)o(ust)e(b)q(e)h(adjusted)g -(b)q(efore)g(used.)20 b(If)14 b(the)g(function)f(is)h(called)f(as)g(a)h -(statemen)o(t)d(\(see)j(Section)g(4.4.4\),)e(its)g(return)-42 -1902 y(list)18 b(is)h(adjusted)g(to)g(0.)31 b(If)20 b(the)f(function)g -(is)g(called)g(in)g(a)g(place)g(that)f(needs)i(a)f(single)f(v)m(alue)i -(\(syn)o(tactically)-42 1958 y(denoted)f(b)o(y)f(the)g(non-terminal)e -Fm(exp1)p Fo(\),)h(its)g(return)h(list)f(is)g(adjusted)h(to)g(1.)27 -b(If)18 b(the)g(function)g(is)g(called)f(in)h(a)-42 2015 -y(place)f(that)g(can)g(hold)g(man)o(y)e(v)m(alues)i(\(syn)o(tactically) -e(denoted)j(b)o(y)f(the)g(non-terminal)e Fm(exp)p Fo(\),)h(no)h -(adjustmen)o(t)-42 2071 y(is)e(done.)-42 2193 y Fe(4.6)56 -b(F)-5 b(unction)20 b(De\014nitions)-42 2279 y Fo(F)l(unctions)c(in)g -(Lua)g(can)g(b)q(e)h(de\014ned)g(an)o(ywhere)f(in)g(the)g(global)e(lev) -o(el)i(of)f(a)h(c)o(h)o(unk.)22 b(The)16 b(syn)o(tax)f(for)h(function) --42 2335 y(de\014nition)g(is:)42 2407 y Fn(function)50 -b Fj(!)g Fl(function)16 b Fn(var)h Fo('\(')e([)p Fn(p)n(arlist1)6 -b Fo(])16 b('\)')f Fn(blo)n(ck)g Fl(end)29 2536 y Fo(When)f(Lua)g -(pre-compiles)f(a)g(c)o(h)o(unk,)h(all)f(its)f(function)i(b)q(o)q(dies) -g(are)f(pre-compiled,)g(to)q(o.)19 b(Then,)14 b(when)g(Lua)-42 -2592 y(\\executes")i(the)f(function)g(de\014nition,)g(its)f(b)q(o)q(dy) -i(is)f(stored,)f(with)h(t)o(yp)q(e)g Fn(function)p Fo(,)f(in)o(to)g -(the)i(v)m(ariable)e Fm(var)p Fo(.)922 2748 y(8)p eop +8 7 bop 0 91 a Fp(except)31 b(that)g Fn(var)f Fp(is)f(ev)-5 +b(aluated)31 b(only)e(once.)167 228 y Fo(r)-5 b(e)g(alPar)g(ams)103 +b Fk(!)d Fp('\(')33 b([)p Fo(explist1)12 b Fp(])35 b('\)')167 +341 y Fo(r)-5 b(e)g(alPar)g(ams)103 b Fk(!)d Fo(table)-5 +b(c)g(onstructor)312 453 y(explist1)101 b Fk(!)f Fo(exp1)33 +b Fk(f)p Fp(',')h Fo(exp1)12 b Fk(g)0 590 y Fp(All)35 +b(argumen)m(t)h(expressions)f(are)i(ev)-5 b(aluated)36 +b(b)s(efore)g(the)g(call;)j(then)d(the)g(list)f(of)h(argumen)m(ts)h(is) +e(adjusted)g(to)0 703 y(the)40 b(length)g(of)h(the)f(list)f(of)h +(parameters)h(\(see)g(Section)f(4.3\);)47 b(\014nally)-8 +b(,)41 b(this)f(list)e(is)i(assigned)f(to)i(the)g(formal)0 +816 y(parameters.)i(A)32 b(call)e(of)i(the)f(form)g Fn(f{...})e +Fp(is)h(syn)m(tactic)i(sugar)f(for)g Fn(f\({...}\))p +Fp(,)f(that)i(is,)e(the)i(parameter)f(list)0 929 y(is)e(a)i(single)e +(new)h(table.)141 1042 y(Because)j(a)e(function)f(can)h(return)f(an)m +(y)i(n)m(um)m(b)s(er)d(of)j(results)d(\(see)j(Section)f(4.4.3\),)j(the) +d(n)m(um)m(b)s(er)f(of)h(results)0 1155 y(m)m(ust)c(b)s(e)g(adjusted)g +(b)s(efore)g(used.)39 b(If)27 b(the)h(function)e(is)g(called)h(as)h(a)g +(statemen)m(t)h(\(see)f(Section)g(4.4.4\),)i(its)d(return)0 +1268 y(list)37 b(is)g(adjusted)h(to)h(0.)65 b(If)38 b(the)g(function)f +(is)h(called)f(in)g(a)i(place)f(that)h(needs)f(a)h(single)e(v)-5 +b(alue)38 b(\(syn)m(tactically)0 1380 y(denoted)d(b)m(y)f(the)h +(non-terminal)e Fn(exp1)p Fp(\),)j(then)e(its)g(return)g(list)g(is)f +(adjusted)h(to)i(1.)54 b(If)35 b(the)f(function)g(is)g(called)0 +1493 y(in)k(a)h(place)h(that)f(can)h(hold)e(man)m(y)h(v)-5 +b(alues)38 b(\(syn)m(tactically)i(denoted)f(b)m(y)g(the)h(non-terminal) +d Fn(exp)p Fp(\),)k(then)e(no)0 1606 y(adjustmen)m(t)30 +b(is)g(made.)0 1850 y Ff(4.6)112 b(F)-9 b(unction)37 +b(De\014nitions)0 2021 y Fp(F)-8 b(unctions)31 b(in)g(Lua)g(can)h(b)s +(e)g(de\014ned)e(an)m(ywhere)i(in)e(the)i(global)g(lev)m(el)f(of)h(a)g +(c)m(h)m(unk.)45 b(The)31 b(syn)m(tax)i(for)e(function)0 +2134 y(de\014nition)d(is:)167 2278 y Fo(function)100 +b Fk(!)g Fm(function)33 b Fo(var)g Fp('\(')g([)p Fo(p)-5 +b(arlist1)12 b Fp(])36 b('\)')e Fo(blo)-5 b(ck)33 b Fm(end)141 +2536 y Fp(When)27 b(Lua)g(pre-compiles)f(a)i(c)m(h)m(unk,)g(all)e(its)h +(function)f(b)s(o)s(dies)f(are)j(pre-compiled,)e(to)s(o.)41 +b(Then,)27 b(when)f(Lua)0 2649 y(\\executes")33 b(the)d(function)f +(de\014nition,)f(its)i(b)s(o)s(dy)f(is)g(stored,)i(with)e(t)m(yp)s(e)i +Fo(function)p Fp(,)g(in)m(to)f(the)g(v)-5 b(ariable)30 +b Fn(var)p Fp(.)141 2761 y(P)m(arameters)i(act)f(as)g(lo)s(cal)e(v)-5 +b(ariables,)30 b(initialized)d(with)i(the)i(argumen)m(t)f(v)-5 +b(alues.)167 2906 y Fo(p)g(arlist1)102 b Fk(!)e Fo(name)33 +b Fk(f)p Fp(',')h Fo(name)7 b Fk(g)141 3163 y Fp(Results)28 +b(are)i(returned)e(using)g(the)h Fn(return)f Fp(statemen)m(t)j(\(see)f +(Section)f(4.4.3\).)43 b(If)28 b(con)m(trol)i(reac)m(hes)g(the)g(end)0 +3276 y(of)h(a)f(function)f(without)h(a)g(return)g(instruction,)e(then)i +(the)h(function)e(returns)g(with)g(no)i(results.)141 +3389 y(There)e(is)g(a)h(sp)s(ecial)e(syn)m(tax)i(for)g(de\014ning)e +(metho)s(ds,)h(that)h(is,)f(functions)f(that)j(ha)m(v)m(e)g(an)e(extra) +h(parameter)0 3502 y Fo(self)p Fp(.)167 3646 y Fo(function)100 +b Fk(!)g Fm(function)33 b Fo(var)g Fp(':')43 b Fo(name)33 +b Fp('\(')g([)p Fo(p)-5 b(arlist1)12 b Fp(])36 b('\)')d +Fo(blo)-5 b(ck)33 b Fm(end)0 3790 y Fp(Th)m(us,)d(a)g(declaration)g +(lik)m(e)0 3978 y Fn(function)46 b(v:f)g(\(...\))95 4091 +y(...)0 4203 y(end)0 4391 y Fp(is)29 b(equiv)-5 b(alen)m(t)30 +b(to)0 4579 y Fn(function)46 b(v.f)g(\(self,)h(...\))95 +4692 y(...)0 4804 y(end)0 4992 y Fp(that)33 b(is,)f(the)h(function)e +(gets)i(an)g(extra)g(formal)f(parameter)g(called)g Fn(self)p +Fp(.)46 b(Notice)33 b(that)g(the)g(v)-5 b(ariable)31 +b Fn(v)h Fp(m)m(ust)0 5105 y(ha)m(v)m(e)g(b)s(een)d(previously)f +(initialized)g(with)h(a)h(table)h(v)-5 b(alue.)1927 5589 +y(8)p eop %%Page: 9 9 -9 8 bop 29 199 a Fo(P)o(arameters)13 b(act)i(as)f(lo)q(cal)h(v)m -(ariables,)f(initialized)f(with)i(the)g(argumen)o(t)f(v)m(alues.)42 -271 y Fn(p)n(arlist1)50 b Fj(!)g Fn(name)16 b Fj(f)p -Fo(',')f Fn(name)s Fj(g)29 400 y Fo(Results)g(are)f(returned)h(using)f -(the)h Fm(return)f Fo(statemen)o(t)e(\(see)j(Section)f(4.4.3\).)k(If)d -(con)o(trol)e(reac)o(hes)i(the)g(end)-42 456 y(of)g(a)g(function)g -(without)f(a)h(return)g(instruction,)f(the)h(function)g(returns)h(with) -e(no)h(results.)29 513 y(There)22 b(is)f(a)g(sp)q(ecial)g(syn)o(tax)g -(for)g(de\014nition)h(of)f(metho)q(ds,)h(that)e(is,)j(functions)e(whic) -o(h)g(ha)o(v)o(e)h(an)f(extra)-42 569 y(parameter)14 -b Fn(self)p Fo(.)42 641 y Fn(function)50 b Fj(!)g Fl(function)16 -b Fn(var)h Fo(':')j Fn(name)c Fo('\(')f([)p Fn(p)n(arlist1)6 -b Fo(])16 b('\)')f Fn(blo)n(ck)g Fl(end)-42 714 y Fo(A)h(declaration)e -(lik)o(e)-42 807 y Fm(function)23 b(v:f)h(\(...\))6 864 -y(...)-42 920 y(end)-42 1014 y Fo(is)15 b(equiv)m(alen)o(t)g(to)-42 -1108 y Fm(function)23 b(v.f)h(\(self,)f(...\))6 1164 -y(...)-42 1221 y(end)-42 1315 y Fo(that)16 b(is,)g(the)g(function)g -(gets)g(an)g(extra)f(formal)f(parameter)h(called)h Fm(self)p -Fo(.)22 b(Notice)16 b(that)f(the)h(v)m(ariable)g Fm(v)g -Fo(m)o(ust)-42 1371 y(ha)o(v)o(e)f(b)q(een)i(previously)d(initialized)g -(with)g(a)h(table)g(v)m(alue.)-42 1493 y Fe(4.7)56 b(F)-5 -b(allbac)n(ks)-42 1579 y Fo(Lua)17 b(pro)o(vides)f(a)g(p)q(o)o(w)o -(erful)g(mec)o(hanism)e(to)h(extend)i(its)f(seman)o(tics,)e(called)i -Fn(fal)r(lb)n(acks)p Fo(.)23 b(Basically)l(,)15 b(a)h(fallbac)o(k)-42 -1635 y(is)f(a)g(programmer)d(de\014ned)17 b(function)e(whic)o(h)g(is)f -(called)h(whenev)o(er)h(Lua)f(do)q(es)h(not)f(kno)o(w)f(ho)o(w)h(to)g -(pro)q(ceed.)29 1691 y(Lua)h(supp)q(orts)f(the)g(follo)o(wing)e -(fallbac)o(ks,)h(iden)o(ti\014ed)h(b)o(y)g(the)g(giv)o(en)g(strings:) --42 1785 y Fl(\\arith")24 b Fo(called)17 b(when)g(an)h(arithmetic)c(op) -q(eration)j(is)g(applied)g(to)f(non)i(n)o(umerical)d(op)q(erands,)j(or) -f(when)g(the)72 1842 y(binary)f Fm(^)g Fo(op)q(eration)g(is)f(called.) -23 b(It)17 b(receiv)o(es)f(three)g(argumen)o(ts:)k(the)d(t)o(w)o(o)e -(op)q(erands)h(\(the)g(second)h(one)72 1898 y(is)j(nil)g(when)h(the)g -(op)q(eration)e(is)h(unary)h(min)o(us\))e(and)h(one)h(of)f(the)g(follo) -o(wing)f(strings)g(describing)h(the)72 1955 y(o\013ended)c(op)q -(erator:)120 2067 y Fm(add)47 b(sub)g(mul)h(div)f(pow)g(unm)72 -2180 y Fo(Its)15 b(return)f(v)m(alue)h(is)f(the)h(\014nal)f(result)g -(of)g(the)h(arithmetic)d(op)q(eration.)19 b(The)c(default)f(function)g -(issues)h(an)72 2236 y(error.)-42 2330 y Fl(\\order")23 -b Fo(called)15 b(when)h(an)g(order)f(comparison)e(is)i(applied)h(to)f -(non)g(n)o(umerical)f(or)h(non)h(string)e(op)q(erands.)21 -b(It)72 2386 y(receiv)o(es)d(three)g(argumen)o(ts:)23 -b(the)18 b(t)o(w)o(o)f(op)q(erands)h(and)g(one)g(of)f(the)h(follo)o -(wing)e(strings)h(describing)g(the)72 2443 y(o\013ended)f(op)q(erator:) -120 2555 y Fm(lt)23 b(gt)h(le)g(ge)922 2748 y Fo(9)p -eop +9 8 bop 0 91 a Ff(4.7)112 b(F)-9 b(allbac)m(ks)0 263 +y Fp(Lua)33 b(pro)m(vides)g(a)h(p)s(o)m(w)m(erful)e(mec)m(hanism)h(to)i +(extend)f(its)f(seman)m(tics,)i(called)e Fo(fal)5 b(lb)-5 +b(acks)p Fp(.)51 b(A)34 b(fallbac)m(k)f(is)g(a)h(pro-)0 +376 y(grammer)c(de\014ned)f(function)h(that)h(is)e(called)g(whenev)m +(er)i(Lua)f(do)s(es)g(not)g(kno)m(w)h(ho)m(w)f(to)h(pro)s(ceed.)141 +489 y(Lua)f(supp)s(orts)f(the)h(follo)m(wing)f(fallbac)m(ks,)h(iden)m +(ti\014ed)f(b)m(y)h(the)g(giv)m(en)h(strings:)0 652 y +Fm(\\arith":)45 b Fp(called)31 b(when)g(an)i(arithmetic)e(op)s(eration) +h(is)f(applied)f(to)j(non)f(n)m(umerical)f(op)s(erands,)g(or)h(when)g +(the)227 765 y(binary)f Fn(^)h Fp(op)s(eration)g(is)g(called.)47 +b(It)32 b(receiv)m(es)i(three)e(argumen)m(ts:)46 b(the)33 +b(t)m(w)m(o)h(op)s(erands)d(\(the)i(second)g(one)227 +878 y(is)40 b(nil)f(when)h(the)h(op)s(eration)g(is)f(unary)g(min)m +(us\))f(and)h(one)i(of)f(the)g(follo)m(wing)e(strings)h(describing)f +(the)227 991 y(o\013ended)30 b(op)s(erator:)323 1186 +y Fn(add)94 b(sub)h(mul)g(div)f(pow)h(unm)227 1381 y +Fp(Its)31 b(return)f(v)-5 b(alue)30 b(is)g(the)h(\014nal)f(result)g(of) +h(the)g(arithmetic)f(op)s(eration.)42 b(The)30 b(default)g(handler)f +(issues)h(an)227 1494 y(error.)0 1672 y Fm(\\order":)45 +b Fp(called)29 b(when)e(an)i(order)g(comparison)f(is)g(applied)e(to)k +(non)e(n)m(umerical)g(or)h(non)f(string)g(op)s(erands.)39 +b(It)227 1785 y(receiv)m(es)e(three)f(argumen)m(ts:)51 +b(the)36 b(t)m(w)m(o)h(op)s(erands)e(and)g(one)h(of)g(the)g(follo)m +(wing)e(strings)g(describing)g(the)227 1898 y(o\013ended)c(op)s +(erator:)323 2093 y Fn(lt)47 b(gt)g(le)g(ge)227 2289 +y Fp(Its)28 b(return)f(v)-5 b(alue)28 b(is)f(the)i(\014nal)d(result)h +(of)i(the)f(comparison)f(op)s(eration.)40 b(The)28 b(default)f(handler) +f(issues)h(an)227 2402 y(error.)0 2580 y Fm(\\concat":)46 +b Fp(called)40 b(when)g(a)i(concatenation)g(is)e(applied)f(to)j(non)f +(string)f(op)s(erands.)71 b(It)41 b(receiv)m(es)h(the)g(t)m(w)m(o)227 +2693 y(op)s(erands)36 b(as)i(argumen)m(ts.)61 b(Its)37 +b(return)g(v)-5 b(alue)36 b(is)g(the)i(\014nal)e(result)g(of)h(the)h +(concatenation)g(op)s(eration.)227 2805 y(The)30 b(default)g(handler)e +(issues)h(an)i(error.)0 2983 y Fm(\\index":)45 b Fp(called)27 +b(when)g(Lua)g(tries)g(to)i(retriev)m(e)f(the)g(v)-5 +b(alue)27 b(of)h(an)f(index)g(not)h(presen)m(t)f(in)g(a)h(table.)39 +b(It)28 b(receiv)m(es)227 3096 y(as)41 b(argumen)m(ts)f(the)g(table)g +(and)g(the)g(index.)68 b(Its)40 b(return)f(v)-5 b(alue)40 +b(is)f(the)h(\014nal)f(result)g(of)h(the)g(indexing)227 +3209 y(op)s(eration.)g(The)30 b(default)g(handler)e(returns)i(nil.)0 +3387 y Fm(\\getglobal":)45 b Fp(called)28 b(when)g(Lua)g(tries)g(to)h +(retriev)m(e)g(the)f(v)-5 b(alue)28 b(of)h(a)g(global)f(v)-5 +b(ariable)27 b(whic)m(h)g(has)h(a)h(nil)d(v)-5 b(alue)227 +3500 y(\(or)39 b(whic)m(h)e(has)g(not)i(b)s(een)e(initialized\).)61 +b(It)38 b(receiv)m(es)h(as)g(argumen)m(t)f(the)h(name)f(of)g(the)g(v)-5 +b(ariable.)63 b(Its)227 3613 y(return)30 b(v)-5 b(alue)29 +b(is)h(the)g(\014nal)f(result)h(of)g(the)h(expression.)39 +b(The)30 b(default)g(handler)e(returns)h(nil.)0 3790 +y Fm(\\gettable":)44 b Fp(called)34 b(when)g(Lua)g(tries)g(to)h(index)f +(a)h(non)f(table)g(v)-5 b(alue.)53 b(It)35 b(receiv)m(es)g(as)g +(argumen)m(ts)g(the)g(non)227 3903 y(table)d(v)-5 b(alue)31 +b(and)f(the)i(index.)42 b(Its)32 b(return)e(v)-5 b(alue)31 +b(is)g(the)g(\014nal)f(result)h(of)g(the)h(indexing)d(op)s(eration.)43 +b(The)227 4016 y(default)30 b(handler)e(issues)h(an)i(error.)0 +4194 y Fm(\\settable":)44 b Fp(called)34 b(when)e(Lua)i(tries)f(to)i +(assign)e(indexed)g(a)h(non)f(table)h(v)-5 b(alue.)51 +b(It)34 b(receiv)m(es)g(as)h(argumen)m(ts)227 4307 y(the)c(non)f(table) +g(v)-5 b(alue,)30 b(the)h(index,)e(and)h(the)g(assigned)g(v)-5 +b(alue.)40 b(The)30 b(default)f(handler)g(issues)g(an)h(error.)0 +4485 y Fm(\\function":)46 b Fp(called)30 b(when)g(Lua)h(tries)g(to)h +(call)e(a)i(non)e(function)g(v)-5 b(alue.)43 b(It)31 +b(receiv)m(es)h(as)g(argumen)m(ts)f(the)h(non)227 4598 +y(function)k(v)-5 b(alue)36 b(and)h(the)g(argumen)m(ts)g(giv)m(en)g(in) +f(the)h(original)e(call.)60 b(Its)37 b(return)f(v)-5 +b(alues)36 b(are)h(the)g(\014nal)227 4711 y(results)29 +b(of)i(the)g(call)e(op)s(eration.)40 b(The)30 b(default)g(handler)e +(issues)h(an)i(error.)0 4888 y Fm(\\gc":)46 b Fp(called)35 +b(during)g(garbage)i(collection.)59 b(It)37 b(receiv)m(es)g(as)f +(argumen)m(t)h(the)g(table)f(b)s(eing)f(collected.)60 +b(After)227 5001 y(eac)m(h)42 b(run)d(of)i(the)g(collector)g(this)e +(function)h(is)f(called)h(with)f(argumen)m(t)i(nil.)70 +b(Because)42 b(this)d(function)227 5114 y(op)s(erates)28 +b(during)e(garbage)i(collection,)g(it)f(m)m(ust)h(b)s(e)e(used)h(with)f +(great)j(care,)g(and)e(programmers)g(should)227 5227 +y(a)m(v)m(oid)39 b(the)f(creation)g(of)g(new)g(ob)5 b(jects)38 +b(\(tables)h(or)e(strings\))h(in)e(this)h(function.)62 +b(The)38 b(default)f(handler)227 5340 y(do)s(es)30 b(nothing.)1927 +5589 y(9)p eop %%Page: 10 10 -10 9 bop 72 199 a Fo(Its)17 b(return)h(v)m(alue)f(is)g(the)g(\014nal)g -(result)g(of)g(the)g(comparison)f(op)q(eration.)25 b(The)18 -b(default)e(function)i(issues)72 256 y(an)d(error.)-42 -350 y Fl(\\concat")25 b Fo(called)d(when)g(a)f(concatenation)f(is)h -(applied)h(to)f(non)h(string)e(op)q(erands.)39 b(It)22 -b(receiv)o(es)f(the)h(t)o(w)o(o)72 406 y(op)q(erands)d(as)f(argumen)o -(ts.)29 b(Its)18 b(return)h(v)m(alue)g(is)f(the)g(\014nal)h(result)f -(of)g(the)h(concatenation)f(op)q(eration.)72 462 y(The)e(default)e -(function)h(issues)g(an)h(error.)-42 556 y Fl(\\index")23 -b Fo(called)14 b(when)i(Lua)f(tries)f(to)g(retriev)o(e)g(the)h(v)m -(alue)g(of)f(an)h(index)g(not)f(presen)o(t)h(in)f(a)h(table.)k(It)c -(receiv)o(es)72 613 y(as)20 b(argumen)o(ts)e(the)i(table)g(and)g(the)g -(index.)35 b(Its)20 b(return)g(v)m(alue)g(is)f(the)h(\014nal)g(result)g -(of)f(the)i(indexing)72 669 y(op)q(eration.)e(The)d(default)e(function) -h(returns)h(nil.)-42 763 y Fl(\\getglobal")24 b Fo(called)15 -b(when)h(Lua)f(tries)f(to)h(retriev)o(e)f(the)i(v)m(alue)f(of)g(a)f -(global)g(v)m(ariable)h(whic)o(h)g(has)g(a)g(nil)f(v)m(alue)72 -819 y(\(or)k(whic)o(h)h(has)g(not)g(b)q(een)h(initialized\).)30 -b(It)19 b(receiv)o(es)g(as)f(argumen)o(t)g(the)h(name)f(of)g(the)i(v)m -(ariable.)30 b(Its)72 876 y(return)15 b(v)m(alue)h(is)e(the)i(\014nal)f -(result)f(of)h(the)g(expression.)20 b(The)c(default)e(function)h -(returns)g(nil.)-42 970 y Fl(\\gettable")25 b Fo(called)17 -b(when)i(Lua)g(tries)e(to)g(index)i(a)f(non)g(table)g(v)m(alue.)29 -b(It)18 b(receiv)o(es)g(as)g(argumen)o(ts)e(the)i(non)72 -1026 y(table)d(v)m(alue)h(and)g(the)g(index.)22 b(Its)15 -b(return)h(v)m(alue)g(is)f(the)h(\014nal)g(result)f(of)g(the)h -(indexing)g(op)q(eration.)k(The)72 1083 y(default)15 -b(function)g(issues)g(an)g(error.)-42 1176 y Fl(\\settable")24 -b Fo(called)18 b(when)g(Lua)g(tries)f(to)h(assign)f(indexed)h(a)g(non)g -(table)f(v)m(alue.)28 b(It)18 b(receiv)o(es)g(as)f(argumen)o(ts)72 -1233 y(the)e(non)h(table)e(v)m(alue,)h(the)h(index,)f(and)g(the)h -(assigned)e(v)m(alue.)20 b(The)c(default)f(function)g(issues)g(an)g -(error.)-42 1327 y Fl(\\function")24 b Fo(called)16 b(when)h(Lua)g -(tries)f(to)g(call)f(a)h(non)h(function)f(v)m(alue.)24 -b(It)17 b(receiv)o(es)f(as)g(argumen)o(ts)f(the)h(non)72 -1383 y(function)i(v)m(alue)h(and)g(the)f(argumen)o(ts)f(giv)o(en)h(in)g -(the)h(original)d(call.)29 b(Its)19 b(return)f(v)m(alues)h(are)f(the)h -(\014nal)72 1440 y(results)c(of)f(the)i(call)e(op)q(eration.)19 -b(The)d(default)e(function)h(issues)g(an)h(error.)-42 -1533 y Fl(\\gc")24 b Fo(called)12 b(during)g(garbage)e(collection.)18 -b(It)12 b(receiv)o(es)g(as)f(argumen)o(t)f(the)i(table)f(b)q(eing)h -(collected.)19 b(After)11 b(eac)o(h)72 1590 y(run)16 -b(of)f(the)g(collector)f(this)h(function)g(is)g(called)g(with)g -(argumen)o(t)f(nil.)20 b(Because)c(this)e(function)i(op)q(erates)72 -1646 y(during)i(garbage)g(collection,)f(it)h(m)o(ust)f(b)q(e)i(used)g -(with)f(great)f(care,)i(and)f(programmers)d(should)k(a)o(v)o(oid)72 -1703 y(the)g(creation)g(of)g(new)g(ob)s(jects)g(\(tables)f(or)h -(strings\))e(in)i(this)g(function.)32 b(The)19 b(default)g(function)g -(do)q(es)72 1759 y(nothing.)-42 1853 y Fl(\\error")k -Fo(called)16 b(when)i(an)f(error)f(o)q(ccurs.)26 b(It)17 -b(receiv)o(es)g(as)g(argumen)o(t)e(a)i(string)f(describing)h(the)g -(error.)25 b(The)72 1910 y(default)15 b(function)g(prin)o(ts)f(the)i -(message)d(on)j(the)f(standard)g(error)f(output.)29 2003 -y(The)19 b(function)f Fm(setfallback)f Fo(is)g(used)i(to)f(c)o(hange)g -(a)g(fallbac)o(k)f(action.)29 b(Its)18 b(\014rst)g(argumen)o(t)f(is)g -(a)h(string)-42 2060 y(describing)f(the)g(fallbac)o(k,)e(and)i(the)f -(second)i(the)e(new)h(function)g(to)f(b)q(e)h(called.)24 -b(It)16 b(returns)h(the)f(old)h(function)-42 2116 y(for)e(the)g(giv)o -(en)g(fallbac)o(k.)29 2173 y(Section)g(8.6)f(sho)o(ws)h(an)g(example)f -(of)h(the)g(use)h(of)e(fallbac)o(ks.)-42 2294 y Fe(4.8)56 -b(Error)18 b(Handling)-42 2380 y Fo(Because)c(Lua)g(is)e(an)h -(extension)g(language,)f(all)g(Lua)i(actions)e(start)g(from)f(C)i(co)q -(de)h(calling)d(a)i(function)g(from)e(the)-42 2437 y(Lua)j(library)l(.) -k(Whenev)o(er)13 b(an)g(error)f(o)q(ccurs)i(during)f(Lua)g(compilation) -d(or)j(execution,)g(an)g(error)f(fallbac)o(k)g(func-)-42 -2493 y(tion)k(is)g(called,)f(and)i(then)f(the)g(corresp)q(onding)h -(function)f(from)e(the)i(library)f(\()p Fm(lua_dofile)p -Fo(,)g Fm(lua_dostring)p Fo(,)-42 2550 y Fm(lua_call)p -Fo(,)f(and)i Fm(lua_callfunction)p Fo(\))c(is)j(terminated)e(returning) -i(an)g(error)g(condition.)911 2748 y(10)p eop +10 9 bop 0 91 a Fm(\\error":)45 b Fp(called)32 b(when)g(an)g(error)g(o) +s(ccurs.)47 b(It)33 b(receiv)m(es)g(as)g(argumen)m(t)g(a)g(string)f +(describing)e(the)j(error.)46 b(The)227 204 y(default)30 +b(handler)e(prin)m(ts)h(the)i(message)g(on)g(the)f(standard)g(error)g +(output.)141 392 y(The)f(function)f Fn(setfallback)e +Fp(is)j(used)f(to)i(c)m(hange)h(a)f(fallbac)m(k)f(handler.)38 +b(Its)29 b(\014rst)g(argumen)m(t)h(is)e(the)i(name)0 +505 y(of)k(a)h(fallbac)m(k)e(condition,)h(and)f(the)h(second)g(argumen) +m(t)h(is)e(the)h(new)f(function)g(to)i(b)s(e)e(called.)51 +b(It)34 b(returns)f(the)0 618 y(old)d(handler)e(function)h(for)h(the)h +(giv)m(en)f(fallbac)m(k.)141 731 y(Section)g(8.6)i(sho)m(ws)e(an)g +(example)g(of)h(the)f(use)g(of)h(fallbac)m(ks.)0 974 +y Ff(4.8)112 b(Error)37 b(Handling)0 1146 y Fp(Because)g(Lua)e(is)g(an) +g(extension)h(language,)h(all)e(Lua)g(actions)h(start)g(from)f(C)g(co)s +(de)h(calling)e(a)i(function)e(from)0 1259 y(the)48 b(Lua)f(library)-8 +b(.)90 b(Whenev)m(er)48 b(an)f(error)g(o)s(ccurs)g(during)e(Lua)j +(compilation)e(or)h(execution,)52 b(an)47 b(\\error")0 +1371 y(fallbac)m(k)42 b(function)f(is)h(called,)i(and)e(then)g(the)h +(corresp)s(onding)d(function)i(from)f(the)i(library)d(\()p +Fn(lua_dofile)p Fp(,)0 1484 y Fn(lua_dostring)p Fp(,)27 +b Fn(lua_call)p Fp(,)i(or)h Fn(lua_callfunction)p Fp(\))c(is)k +(terminated)g(returning)e(an)i(error)g(condition.)141 +1597 y(The)22 b(only)g(argumen)m(t)g(to)i(the)e(\\error")h(fallbac)m(k) +f(function)f(is)g(a)i(string)f(describing)e(the)i(error.)38 +b(The)22 b(standard)0 1710 y(I/O)29 b(library)e(rede\014nes)h(this)g +(fallbac)m(k,)h(using)e(the)i(debug)g(facilities)e(\(see)j(Section)f +(7\),)h(in)e(order)g(to)i(prin)m(t)e(some)0 1823 y(extra)33 +b(information,)e(lik)m(e)g(the)i(call)e(stac)m(k.)48 +b(F)-8 b(or)33 b(more)f(information)e(ab)s(out)i(an)g(error,)h(the)f +(Lua)g(program)g(can)0 1936 y(include)e(the)i(compilation)f(pragma)i +Fn($debug)p Fp(.)90 b(This)31 b(pragma)h(m)m(ust)g(b)s(e)g(written)f +(in)g(a)h(line)f(b)m(y)h(itself.)45 b(When)0 2049 y(an)32 +b(error)f(o)s(ccurs)h(in)e(a)i(program)g(compiled)e(with)h(this)g +(option,)g(the)h(error)g(routine)f(is)g(able)g(to)i(prin)m(t)d(also)i +(the)0 2162 y(lines)37 b(where)h(the)h(calls)f(\(and)g(the)h(error\))g +(w)m(ere)g(made.)66 b(If)38 b(needed,)j(it)d(is)g(p)s(ossible)e(to)k(c) +m(hange)g(the)e(\\error")0 2275 y(fallbac)m(k)30 b(handler)e(\(see)k +(Section)e(4.7\).)141 2388 y(Lua)23 b(co)s(de)h(can)g(explicitly)d +(generate)k(an)e(error)g(b)m(y)g(calling)f(the)i(built-in)c(function)j +Fn(error)f Fp(\(see)i(Section)f(6.1\).)0 2674 y Fq(5)135 +b(The)44 b(Application)i(Program)f(In)l(terface)0 2877 +y Fp(This)24 b(section)j(describ)s(es)d(the)j(API)f(for)g(Lua,)h(that)g +(is,)f(the)h(set)g(of)f(C)g(functions)f(a)m(v)-5 b(ailable)25 +b(to)i(the)g(host)f(program)0 2990 y(to)31 b(comm)m(unicate)g(with)e +(the)i(library)-8 b(.)39 b(The)29 b(API)i(functions)d(can)j(b)s(e)f +(classi\014ed)f(in)g(the)h(follo)m(wing)f(categories:)111 +3178 y(1.)46 b(executing)31 b(Lua)f(co)s(de;)111 3365 +y(2.)46 b(con)m(v)m(erting)31 b(v)-5 b(alues)30 b(b)s(et)m(w)m(een)h(C) +f(and)g(Lua;)111 3553 y(3.)46 b(manipulating)28 b(\(reading)i(and)f +(writing\))g(Lua)h(ob)5 b(jects;)111 3740 y(4.)46 b(calling)29 +b(Lua)h(functions;)111 3928 y(5.)46 b(C)30 b(functions)f(to)i(b)s(e)f +(called)g(b)m(y)g(Lua;)111 4116 y(6.)46 b(references)31 +b(to)g(Lua)f(Ob)5 b(jects.)0 4303 y(All)29 b(API)h(functions)f(are)i +(declared)f(in)f(the)h(header)h(\014le)e Fn(lua.h)p Fp(.)0 +4547 y Ff(5.1)112 b(Executing)37 b(Lua)h(Co)s(de)0 4718 +y Fp(A)23 b(host)h(program)f(can)h(execute)g(Lua)f(c)m(h)m(unks)g +(written)g(in)f(a)h(\014le)g(or)g(in)f(a)i(string,)g(using)e(the)h +(follo)m(wing)f(functions:)0 5019 y Fn(int)47 b(lua_dofile)140 +b(\(char)47 b(*filename\);)0 5132 y(int)g(lua_dostring)d(\(char)j +(*string\);)1905 5589 y Fp(10)p eop %%Page: 11 11 -11 10 bop 29 199 a Fo(The)15 b(only)f(argumen)o(t)e(to)i(the)g(error)g -(fallbac)o(k)f(function)h(is)g(a)g(string)g(describing)g(the)g(error.) -19 b(The)c(standard)-42 256 y(I/O)i(library)d(rede\014nes)j(this)e -(fallbac)o(k,)f(using)h(the)h(debug)g(facilities)e(\(see)h(Section)h -(7,)f(in)g(order)h(to)f(prin)o(t)g(some)-42 312 y(extra)h -(informations,)c(lik)o(e)j(the)h(stac)o(k)f(of)h(calls.)21 -b(F)l(or)15 b(more)f(information)f(ab)q(out)j(an)g(error,)e(the)i(Lua)h -(program)-42 369 y(can)j(include)f(the)g(compilation)d(pragma)h -Fm($debug)p Fo(.)62 b(This)18 b(pragma)f(m)o(ust)h(b)q(e)h(written)f -(in)h(a)f(line)h(b)o(y)g(itself.)-42 425 y(When)14 b(an)f(error)f(o)q -(ccurs)h(in)g(a)f(program)f(compiled)h(with)g(this)g(option,)g(the)h -(error)g(routine)f(is)g(able)h(to)f(prin)o(t)g(also)-42 -482 y(the)18 b(lines)f(where)h(the)g(calls)e(\(and)i(the)f(error\))g(w) -o(ere)g(made.)26 b(If)18 b(needed,)h(it)e(is)g(p)q(ossible)g(to)g(c)o -(hange)h(the)f(error)-42 538 y(fallbac)o(k)d(routine;)h(see)g(Section)g -(4.7.)29 594 y(Lua)e(co)q(de)g(can)f(generate)g(an)g(error)g(b)o(y)g -(calling)f(the)i(function)f Fm(error)p Fo(.)18 b(Its)13 -b(optional)d(parameter)h(is)h(a)g(string,)-42 651 y(whic)o(h)k(is)e -(used)i(as)f(the)g(error)g(message.)-42 794 y Fp(5)67 -b(The)23 b(Application)h(Program)f(In)n(terface)-42 896 -y Fo(This)13 b(section)g(describ)q(es)h(the)f(API)g(for)g(Lua,)h(that)e -(is,)h(the)g(set)g(of)f(C)h(functions)g(a)o(v)m(ailable)f(to)h(the)g -(host)g(program)-42 952 y(to)i(comm)o(unicate)e(with)h(the)h(library)l -(.)k(The)d(API)f(functions)g(can)h(b)q(e)f(classi\014ed)g(in)g(the)h -(follo)o(wing)d(categories:)14 1046 y(1.)22 b(executing)15 -b(Lua)h(co)q(de;)14 1140 y(2.)22 b(con)o(v)o(erting)14 -b(v)m(alues)i(b)q(et)o(w)o(een)f(C)g(and)g(Lua;)14 1233 -y(3.)22 b(manipulating)13 b(\(reading)h(and)i(writing\))d(Lua)j(ob)s -(jects;)14 1327 y(4.)22 b(calling)14 b(Lua)i(functions;)14 -1421 y(5.)22 b(C)15 b(functions)g(to)g(b)q(e)g(called)g(b)o(y)g(Lua;)14 -1515 y(6.)22 b(references)16 b(to)f(Lua)g(Ob)s(jects.)-42 -1609 y(All)g(API)h(functions)f(are)f(declared)i(in)f(the)g(\014le)g -Fm(lua.h)p Fo(.)-42 1730 y Fe(5.1)56 b(Executing)18 b(Lua)h(Co)r(de)-42 -1816 y Fo(A)12 b(host)f(program)f(can)i(execute)g(Lua)g(c)o(h)o(unks)g -(written)f(in)g(a)h(\014le)f(or)h(in)f(a)g(string,)g(using)h(the)g -(follo)o(wing)d(functions:)-42 1967 y Fm(int)286 b(lua_dofile)357 -b(\(char)23 b(*filename\);)-42 2023 y(int)286 b(lua_dostring)309 -b(\(char)23 b(*string\);)-42 2117 y Fo(Both)15 b(functions)f(return)g -(an)g(error)f(co)q(de:)20 b(0,)14 b(in)g(case)g(of)g(success;)h(non)f -(zero,)g(in)g(case)h(of)e(errors.)19 b(The)c(function)-42 -2173 y Fm(lua_dofile)p Fo(,)h(if)g(called)g(with)g(argumen)o(t)f(NULL)j -(\(0\),)d(executes)j(the)f(\\\014le")f Fm(stdin)p Fo(.)23 -b(F)l(unction)17 b Fm(lua_dofile)-42 2230 y Fo(is)f(also)e(able)h(to)g -(execute)h(pre-compiled)f(c)o(h)o(unks.)21 b(It)16 b(detects)f(whether) -h(the)f(\014le)h(is)f(text)g(or)g(not,)g(and)g(loads)g(it)-42 -2286 y(accordingly)g(\(see)g(program)e Fm(luac)p Fo(\).)-42 -2408 y Fe(5.2)56 b(Con)n(v)n(erting)20 b(V)-5 b(alues)20 -b(b)r(et)n(w)n(een)e(C)h(and)h(Lua)-42 2494 y Fo(Because)13 -b(Lua)f(has)g(no)f(static)g(t)o(yp)q(e)h(system,)f(all)f(v)m(alues)i -(passed)g(b)q(et)o(w)o(een)g(Lua)g(and)g(C)g(ha)o(v)o(e)f(t)o(yp)q(e)h -Fm(lua_Object)p Fo(,)-42 2550 y(whic)o(h)f(w)o(orks)f(lik)o(e)g(an)h -(abstract)f(t)o(yp)q(e)h(in)g(C)g(that)f(can)h(hold)g(an)o(y)g(Lua)g(v) -m(alue.)19 b(V)l(alues)11 b(of)f(t)o(yp)q(e)h Fm(lua_Object)f -Fo(ha)o(v)o(e)-42 2607 y(no)16 b(meaning)d(outside)i(Lua;)g(for)g -(instance,)g(the)g(comparisson)e(of)i(t)o(w)o(o)f Fm(lua_Object's)f -Fo(is)i(of)g(no)g(signi\014cance.)911 2748 y(11)p eop +11 10 bop 0 91 a Fp(Both)29 b(functions)e(return)h(an)g(error)g(co)s +(de:)40 b(0,)30 b(in)d(case)j(of)e(success;)i(non)e(zero,)i(in)d(case)j +(of)e(errors.)40 b(More)29 b(sp)s(eci\014-)0 204 y(cally)-8 +b(,)30 b Fn(lua_dofile)d Fp(returns)i(2)h(if)f(for)h(an)m(y)g(reason)g +(it)g(could)f(not)h(op)s(en)f(the)i(\014le.)39 b(The)30 +b(function)e Fn(lua_dofile)p Fp(,)0 317 y(if)h(called)g(with)g(argumen) +m(t)i Fn(NULL)e Fp(\(0\),)i(executes)h(the)e Fn(stdin)f +Fp(stream.)41 b(F)-8 b(unction)30 b Fn(lua_dofile)d Fp(is)i(also)h +(able)g(to)0 430 y(execute)h(pre-compiled)d(c)m(h)m(unks.)40 +b(It)30 b(automatically)f(detects)i(whether)e(the)h(\014le)f(is)f(text) +j(or)f(binary)-8 b(,)28 b(and)h(loads)0 543 y(it)h(accordingly)f(\(see) +j(program)e Fn(luac)p Fp(\).)0 786 y Ff(5.2)112 b(Con)m(v)m(erting)37 +b(V)-9 b(alues)37 b(b)s(et)m(w)m(een)g(C)h(and)g(Lua)0 +958 y Fp(Because)25 b(Lua)e(has)g(no)h(static)g(t)m(yp)s(e)g(system,)h +(all)e(v)-5 b(alues)22 b(passed)h(b)s(et)m(w)m(een)i(Lua)e(and)g(C)g +(ha)m(v)m(e)i(t)m(yp)s(e)e Fn(lua_Object)p Fp(,)0 1071 +y(whic)m(h)e(w)m(orks)h(lik)m(e)f(an)h(abstract)g(t)m(yp)s(e)h(in)d(C)i +(that)g(can)h(hold)d(an)m(y)i(Lua)g(v)-5 b(alue.)37 b(V)-8 +b(alues)22 b(of)g(t)m(yp)s(e)h Fn(lua_Object)c Fp(ha)m(v)m(e)0 +1184 y(no)30 b(meaning)g(outside)g(Lua;)g(for)g(instance,)g(the)h +(comparisson)e(of)i(t)m(w)m(o)h Fn(lua_Object's)27 b +Fp(is)i(of)i(no)f(signi\014cance.)141 1297 y(Because)j(Lua)f(has)f +(automatic)i(memory)f(managemen)m(t)h(and)e(garbage)i(collection,)f(a)g +Fn(lua_Object)d Fp(has)j(a)0 1410 y(limited)i(scop)s(e,)k(and)e(is)f +(only)g(v)-5 b(alid)35 b(inside)f(the)i Fo(blo)-5 b(ck)47 +b Fp(where)36 b(it)g(w)m(as)g(created.)60 b(A)36 b(C)g(function)f +(called)g(from)0 1523 y(Lua)30 b(is)f(a)h(blo)s(c)m(k,)g(and)f(its)h +(parameters)g(are)g(v)-5 b(alid)29 b(only)g(un)m(til)f(its)h(end.)40 +b(A)30 b(go)s(o)s(d)g(programming)f(practice)h(is)f(to)0 +1635 y(con)m(v)m(ert)35 b(Lua)d(ob)5 b(jects)34 b(to)g(C)e(v)-5 +b(alues)33 b(as)g(so)s(on)g(as)g(they)g(are)h(a)m(v)-5 +b(ailable,)33 b(and)f(nev)m(er)i(to)g(store)f Fn(lua_Object)p +Fp(s)d(in)0 1748 y(C)g(global)g(v)-5 b(ariables.)141 +1861 y(When)26 b(C)f(co)s(de)h(calls)f(Lua)h(rep)s(eatedly)-8 +b(,)27 b(as)f(in)f(a)h(lo)s(op,)g(ob)5 b(jects)27 b(returned)d(b)m(y)i +(these)h(calls)e(accum)m(ulate,)j(and)0 1974 y(ma)m(y)j(create)h(a)f +(memory)f(problem.)39 b(T)-8 b(o)31 b(a)m(v)m(oid)g(this,)e(nested)i +(blo)s(c)m(ks)e(can)i(b)s(e)f(de\014ned)f(with)g(the)i(functions:)0 +2162 y Fn(void)524 b(lua_beginblock)d(\(void\);)0 2275 +y(void)j(lua_endblock)617 b(\(void\);)0 2462 y Fp(After)31 +b(the)f(end)g(of)g(the)h(blo)s(c)m(k,)f(all)f Fn(lua_Object)p +Fp('s)f(created)k(inside)c(it)i(are)g(released.)141 2575 +y(T)-8 b(o)31 b(c)m(hec)m(k)h(the)e(t)m(yp)s(e)h(of)g(a)f +Fn(lua_Object)p Fp(,)e(the)j(follo)m(wing)e(function)g(is)g(a)m(v)-5 +b(ailable:)0 2763 y Fn(int)572 b(lua_type)809 b(\(lua_Object)45 +b(object\);)0 2951 y Fp(plus)28 b(the)j(follo)m(wing)e(macros)i(and)e +(functions:)0 3138 y Fn(int)572 b(lua_isnil)761 b(\(lua_Object)45 +b(object\);)0 3251 y(int)572 b(lua_isnumber)617 b(\(lua_Object)45 +b(object\);)0 3364 y(int)572 b(lua_isstring)617 b(\(lua_Object)45 +b(object\);)0 3477 y(int)572 b(lua_istable)665 b(\(lua_Object)45 +b(object\);)0 3590 y(int)572 b(lua_isfunction)521 b(\(lua_Object)45 +b(object\);)0 3703 y(int)572 b(lua_iscfunction)473 b(\(lua_Object)45 +b(object\);)0 3816 y(int)572 b(lua_isuserdata)521 b(\(lua_Object)45 +b(object\);)0 4003 y Fp(All)28 b(macros)h(return)g(1)g(if)f(the)i(ob)5 +b(ject)30 b(is)e(compatible)g(with)g(the)i(giv)m(en)f(t)m(yp)s(e,)h +(and)e(0)i(otherwise.)40 b(The)28 b(function)0 4116 y +Fn(lua_isnumber)c Fp(accepts)k(n)m(um)m(b)s(ers)e(and)h(n)m(umerical)e +(strings,)i Fn(lua_isstring)d Fp(accepts)29 b(strings)d(and)g(n)m(um)m +(b)s(ers)0 4229 y(\(see)33 b(Section)f(4.2\),)i(and)d +Fn(lua_isfunction)d Fp(accepts)33 b(Lua)f(and)f(C)h(functions.)44 +b(The)31 b(function)g Fn(lua_type)f Fp(can)0 4342 y(b)s(e)g(used)f(to)i +(distinguish)c(b)s(et)m(w)m(een)k(di\013eren)m(t)f(kinds)e(of)j(user)e +(data.)141 4455 y(T)-8 b(o)31 b(translate)g(a)f(v)-5 +b(alue)30 b(from)g(t)m(yp)s(e)h Fn(lua_Object)c Fp(to)k(a)g(sp)s +(eci\014c)e(C)h(t)m(yp)s(e,)h(the)f(programmer)g(can)h(use:)0 +4643 y Fn(double)428 b(lua_getnumber)569 b(\(lua_Object)45 +b(object\);)0 4755 y(char)476 b(*lua_getstring)569 b(\(lua_Object)45 +b(object\);)0 4868 y(lua_CFunction)92 b(lua_getcfunction)425 +b(\(lua_Object)45 b(object\);)0 4981 y(void)476 b(*lua_getuserdata)d +(\(lua_Object)45 b(object\);)0 5169 y(lua_getnumber)26 +b Fp(con)m(v)m(erts)32 b(a)e Fn(lua_Object)d Fp(to)k(a)f(\015oat.)41 +b(This)29 b Fn(lua_Object)e Fp(m)m(ust)i(b)s(e)h(a)g(n)m(um)m(b)s(er)f +(or)h(a)g(string)0 5282 y(con)m(v)m(ertible)g(to)h(n)m(um)m(b)s(er)f +(\(see)h(Section)f(4.2\);)i(otherwise,)e(the)h(function)e(returns)g(0.) +1905 5589 y(11)p eop %%Page: 12 12 -12 11 bop 29 199 a Fo(Lua)11 b(has)f(automatic)e(memory)f(managemen)o -(t,)i(and)h(garbage)g(collection.)17 b(Because)11 b(of)f(that,)g(a)g -Fm(lua_Object)-42 256 y Fo(has)18 b(a)f(limited)e(scop)q(e,)j(and)g(is) -f(only)g(v)m(alid)g(inside)g(the)h Fn(blo)n(ck)j Fo(where)d(it)f(w)o -(as)f(created.)27 b(A)17 b(C)h(function)f(called)-42 -312 y(from)c(Lua)i(is)f(a)h(blo)q(c)o(k,)f(and)h(its)e(parameters)g -(are)h(v)m(alid)h(only)f(un)o(til)g(its)f(end.)21 b(A)14 -b(go)q(o)q(d)h(programmi)o(ng)d(practice)-42 369 y(is)i(to)f(con)o(v)o -(ert)g(Lua)h(ob)s(jects)f(to)g(C)h(v)m(alues)g(as)f(so)q(on)h(as)f -(they)h(are)g(a)o(v)m(ailable,)e(and)i(nev)o(er)g(to)f(store)g -Fm(lua_Object)p Fo(s)-42 425 y(in)j(C)e(global)g(v)m(ariables.)29 -482 y(When)f(C)g(co)q(de)h(calls)e(Lua)h(rep)q(eatedly)l(,)g(as)g(in)g -(a)f(lo)q(op,)h(ob)s(jects)f(returned)i(b)o(y)f(these)g(calls)f(accum)o -(ulate,)f(and)-42 538 y(ma)o(y)j(create)h(a)g(memory)d(problem.)19 -b(T)l(o)c(a)o(v)o(oid)f(this,)g(nested)i(blo)q(c)o(ks)f(can)g(b)q(e)h -(de\014ned)g(with)f(the)g(functions:)-42 629 y Fm(void)262 -b(lua_beginblock)f(\(void\);)-42 686 y(void)h(lua_endblock)309 -b(\(void\);)-42 777 y Fo(After)15 b(the)h(end)f(of)g(the)g(blo)q(c)o -(k,)g(all)f Fm(lua_Object)p Fo('s)g(created)h(inside)g(it)f(are)h -(released.)29 834 y(T)l(o)g(c)o(hec)o(k)g(the)h(t)o(yp)q(e)f(of)g(a)g -Fm(lua_Object)p Fo(,)e(the)i(follo)o(wing)e(function)i(is)g(a)o(v)m -(ailable:)-42 925 y Fm(int)286 b(lua_type)405 b(\(lua_Object)22 -b(object\);)-42 1016 y Fo(plus)16 b(the)f(follo)o(wing)e(macros)g(and)j -(functions:)-42 1108 y Fm(int)286 b(lua_isnil)381 b(\(lua_Object)22 -b(object\);)-42 1164 y(int)286 b(lua_isnumber)309 b(\(lua_Object)22 -b(object\);)-42 1220 y(int)286 b(lua_isstring)309 b(\(lua_Object)22 -b(object\);)-42 1277 y(int)286 b(lua_istable)333 b(\(lua_Object)22 -b(object\);)-42 1333 y(int)286 b(lua_isfunction)261 b(\(lua_Object)22 -b(object\);)-42 1390 y(int)286 b(lua_iscfunction)237 -b(\(lua_Object)22 b(object\);)-42 1446 y(int)286 b(lua_isuserdata)261 -b(\(lua_Object)22 b(object\);)-42 1538 y Fo(All)14 b(macros)f(return)i -(1)f(if)g(the)h(ob)s(ject)f(is)g(compatible)f(with)h(the)g(giv)o(en)g -(t)o(yp)q(e,)h(and)g(0)f(otherwise.)19 b(The)c(function)-42 -1594 y Fm(lua_isnumber)d Fo(accepts)i(n)o(um)o(b)q(ers)f(and)h(n)o -(umerical)e(strings,)g Fm(lua_isstring)g Fo(accepts)i(strings)e(and)i -(n)o(um)o(b)q(ers)-42 1650 y(\(see)i(Section)f(4.2\),)e(and)j -Fm(lua_isfunction)d Fo(accepts)i(Lua)h(and)f(C)g(functions.)29 -1707 y(The)20 b(function)g Fm(lua_type)f Fo(can)h(b)q(e)h(used)f(to)g -(distinguish)f(b)q(et)o(w)o(een)h(di\013eren)o(t)f(kinds)h(of)g(user)g -(data;)h(see)-42 1763 y(b)q(elo)o(w.)29 1820 y(T)l(o)15 -b(translate)f(a)h(v)m(alue)g(from)f(t)o(yp)q(e)h Fm(lua_Object)f -Fo(to)g(a)h(sp)q(eci\014c)h(C)f(t)o(yp)q(e,)g(the)g(programmer)d(can)k -(use:)-42 1911 y Fm(double)214 b(lua_getnumber)285 b(\(lua_Object)22 -b(object\);)-42 1968 y(char)239 b(*lua_getstring)284 -b(\(lua_Object)22 b(object\);)-42 2024 y(lua_CFunction)46 -b(lua_getcfunction)213 b(\(lua_Object)22 b(object\);)-42 -2081 y(void)239 b(*lua_getuserdata)d(\(lua_Object)22 -b(object\);)-42 2172 y(lua_getnumber)14 b Fo(con)o(v)o(erts)g(a)g -Fm(lua_Object)g Fo(to)g(a)h(\015oat.)k(This)c Fm(lua_Object)e -Fo(m)o(ust)h(b)q(e)h(a)g(n)o(um)o(b)q(er)f(or)h(a)f(string)-42 -2228 y(con)o(v)o(ertible)h(to)f(n)o(um)o(b)q(er)h(\(see)g(Section)g -(4.2\);)f(otherwise,)g(the)h(function)g(returns)g(0.)29 -2285 y Fm(lua_getstring)c Fo(con)o(v)o(erts)g(a)h Fm(lua_Object)f -Fo(to)h(a)g(string)g(\()p Fm(char)23 b(*)p Fo(\).)18 -b(This)12 b Fm(lua_Object)f Fo(m)o(ust)g(b)q(e)i(a)f(string)-42 -2341 y(or)k(a)f(n)o(um)o(b)q(er;)h(otherwise,)e(the)i(function)g -(returns)g(0)f(\(the)h(n)o(ull)f(p)q(oin)o(ter\).)21 -b(This)16 b(function)f(do)q(es)i(not)e(create)h(a)-42 -2398 y(new)f(string,)d(but)i(returns)g(a)f(p)q(oin)o(ter)g(to)h(a)f -(string)g(inside)g(the)h(Lua)g(en)o(vironmen)o(t.)k(Because)d(Lua)f -(has)f(garbage)-42 2454 y(collection,)h(there)h(is)g(no)g(guaran)o(tee) -g(that)f(suc)o(h)i(p)q(oin)o(ter)e(will)g(b)q(e)i(v)m(alid)f(after)f -(the)i(blo)q(c)o(k)f(ends.)29 2511 y Fm(lua_getcfunction)f -Fo(con)o(v)o(erts)h(a)h Fm(lua_Object)f Fo(to)g(a)h(C)g(function.)23 -b(This)15 b Fm(lua_Object)g Fo(m)o(ust)g(ha)o(v)o(e)g(t)o(yp)q(e)-42 -2567 y Fn(CF)m(unction)s Fo(;)j(otherwise,)f(the)h(function)g(returns)g -(0)f(\(the)h(n)o(ull)f(p)q(oin)o(ter\).)27 b(The)18 b(t)o(yp)q(e)g -Fm(lua_CFunction)e Fo(is)h(ex-)-42 2623 y(plained)f(in)f(Section)g -(5.5.)911 2748 y(12)p eop +12 11 bop 141 91 a Fn(lua_getstring)21 b Fp(con)m(v)m(erts)27 +b(a)e Fn(lua_Object)d Fp(to)k(a)f(string)f(\()p Fn(char)47 +b(*)p Fp(\).)39 b(This)23 b Fn(lua_Object)f Fp(m)m(ust)i(b)s(e)h(a)g +(string)0 204 y(or)32 b(a)g(n)m(um)m(b)s(er;)f(otherwise,)h(the)g +(function)e(returns)h(0)h(\(the)g(n)m(ull)e(p)s(oin)m(ter\).)44 +b(This)30 b(function)g(do)s(es)h(not)h(create)i(a)0 317 +y(new)27 b(string,)g(but)g(returns)f(a)i(p)s(oin)m(ter)f(to)h(a)g +(string)f(inside)e(the)j(Lua)f(en)m(vironmen)m(t.)39 +b(Because)29 b(Lua)e(has)h(garbage)0 430 y(collection,)i(there)h(is)e +(no)i(guaran)m(tee)g(that)g(suc)m(h)f(p)s(oin)m(ter)g(will)e(b)s(e)h(v) +-5 b(alid)29 b(after)i(the)f(blo)s(c)m(k)g(ends.)141 +543 y Fn(lua_getcfunction)e Fp(con)m(v)m(erts)34 b(a)e +Fn(lua_Object)e Fp(to)j(a)f(C)g(function.)45 b(This)31 +b Fn(lua_Object)e Fp(m)m(ust)j(ha)m(v)m(e)i(t)m(yp)s(e)0 +656 y Fo(CF)-7 b(unction)7 b Fp(;)39 b(otherwise,)e(the)f(function)e +(returns)g(0)i(\(the)g(n)m(ull)e(p)s(oin)m(ter\).)56 +b(The)35 b(t)m(yp)s(e)h Fn(lua_CFunction)c Fp(is)i(ex-)0 +769 y(plained)28 b(in)h(Section)h(5.5.)141 882 y Fn(lua_getuserdata)20 +b Fp(con)m(v)m(erts)26 b(a)f Fn(lua_Object)d Fp(to)j +Fn(void*)p Fp(.)38 b(This)22 b Fn(lua_Object)g Fp(m)m(ust)i(ha)m(v)m(e) +i(t)m(yp)s(e)f Fo(user)-5 b(data)7 b Fp(;)0 995 y(otherwise,)30 +b(the)h(function)e(returns)g(0)i(\(the)f(n)m(ull)f(p)s(oin)m(ter\).)141 +1108 y(The)34 b(rev)m(erse)h(pro)s(cess,)g(that)f(is,)h(passing)e(a)i +(sp)s(eci\014c)e(C)g(v)-5 b(alue)34 b(to)h(Lua,)g(is)e(done)h(b)m(y)g +(using)f(the)h(follo)m(wing)0 1220 y(functions:)0 1403 +y Fn(void)524 b(lua_pushnumber)d(\(double)46 b(n\);)0 +1516 y(void)524 b(lua_pushstring)d(\(char)46 b(*s\);)0 +1629 y(void)524 b(lua_pushcfunction)377 b(\(lua_CFunction)44 +b(f\);)0 1742 y(void)524 b(lua_pushusertag)473 b(\(void)46 +b(*u,)h(int)g(tag\);)0 1925 y Fp(plus)28 b(the)j(macro:)0 +2108 y Fn(void)524 b(lua_pushuserdata)425 b(\(void)46 +b(*u\);)0 2291 y Fp(All)33 b(of)h(them)f(receiv)m(e)i(a)g(C)e(v)-5 +b(alue,)35 b(con)m(v)m(ert)g(it)e(to)i(a)f(corresp)s(onding)e +Fn(lua_Object)p Fp(,)h(and)g(lea)m(v)m(e)i(the)f(result)f(on)0 +2404 y(the)c(top)g(of)f(the)h(Lua)g(stac)m(k,)h(where)e(it)g(can)h(b)s +(e)f(assigned)g(to)i(a)f(Lua)f(v)-5 b(ariable,)28 b(passed)g(as)h +(parameter)g(to)g(a)g(Lua)0 2517 y(function,)g(etc.)141 +2629 y(User)43 b(data)g(can)g(ha)m(v)m(e)h(di\013eren)m(t)e(tags,)47 +b(whose)42 b(seman)m(tics)h(are)g(de\014ned)f(b)m(y)g(the)h(host)g +(program.)77 b(An)m(y)0 2742 y(p)s(ositiv)m(e)35 b(in)m(teger)h(can)g +(b)s(e)g(used)f(to)h(tag)h(a)g(user)e(datum.)56 b(When)36 +b(a)g(user)f(datum)h(is)f(retriev)m(ed,)i(the)f(function)0 +2855 y Fn(lua_type)28 b Fp(can)j(b)s(e)f(used)f(to)i(get)h(its)d(tag.) +141 2968 y(T)-8 b(o)31 b(complete)g(the)f(set,)i(the)e(v)-5 +b(alue)30 b Fm(nil)g Fp(or)h(a)g Fn(lua_Object)c Fp(can)k(also)f(b)s(e) +g(pushed)e(on)m(to)k(the)f(stac)m(k,)h(with:)0 3151 y +Fn(void)524 b(lua_pushnil)665 b(\(void\);)0 3264 y(void)524 +b(lua_pushobject)d(\(lua_Object)45 b(object\);)0 3507 +y Ff(5.3)112 b(Manipulating)37 b(Lua)h(Ob)6 b(jects)0 +3678 y Fp(T)-8 b(o)31 b(read)f(the)h(v)-5 b(alue)30 b(of)g(an)m(y)h +(global)e(Lua)i(v)-5 b(ariable,)29 b(one)i(uses)f(the)g(function:)0 +3861 y Fn(lua_Object)236 b(lua_getglobal)569 b(\(char)46 +b(*varname\);)0 4044 y Fp(As)30 b(in)f(Lua,)i(if)e(the)i(v)-5 +b(alue)29 b(of)i(the)g(global)e(is)h Fm(nil)p Fp(,)g(then)g(the)h +(\\getglobal")h(fallbac)m(k)e(is)f(called.)141 4157 y(T)-8 +b(o)31 b(store)g(a)g(v)-5 b(alue)30 b(previously)e(pushed)g(on)m(to)k +(the)e(stac)m(k)i(in)d(a)i(global)f(v)-5 b(ariable,)29 +b(there)i(is)e(the)i(function:)0 4340 y Fn(void)524 b(lua_storeglobal) +473 b(\(char)46 b(*varname\);)141 4523 y Fp(T)-8 b(ables)30 +b(can)h(also)f(b)s(e)g(manipulated)e(via)i(the)h(API.)f(The)g(function) +0 4705 y Fn(lua_Object)236 b(lua_getsubscript)425 b(\(void\);)0 +4888 y Fp(exp)s(ects)31 b(on)f(the)g(stac)m(k)i(a)f(table)f(and)f(an)i +(index,)e(and)g(returns)g(the)i(con)m(ten)m(ts)h(of)e(the)h(table)f(at) +h(that)g(index.)39 b(As)0 5001 y(in)29 b(Lua,)h(if)f(the)h(\014rst)f +(ob)5 b(ject)31 b(is)e(not)i(a)f(table,)g(or)g(the)g(index)f(is)g(not)h +(presen)m(t)h(in)d(the)i(table,)h(the)f(corresp)s(onding)0 +5114 y(fallbac)m(k)g(is)f(called.)141 5227 y(T)-8 b(o)34 +b(store)f(a)h(v)-5 b(alue)32 b(in)g(an)h(index,)f(the)h(program)g(m)m +(ust)g(push)e(on)m(to)j(the)f(stac)m(k)i(the)e(table,)h(the)f(index,)g +(and)0 5340 y(the)e(v)-5 b(alue,)30 b(and)f(then)i(call)e(the)i +(function:)1905 5589 y(12)p eop %%Page: 13 13 -13 12 bop 29 199 a Fm(lua_getuserdata)10 b Fo(con)o(v)o(erts)i(a)g -Fm(lua_Object)e Fo(to)i Fm(void*)p Fo(.)18 b(This)12 -b Fm(lua_Object)f Fo(m)o(ust)g(ha)o(v)o(e)h(t)o(yp)q(e)g -Fn(user)n(data)s Fo(;)-42 256 y(otherwise,)j(the)g(function)g(returns)g -(0)g(\(the)g(n)o(ull)f(p)q(oin)o(ter\).)29 312 y(The)j(rev)o(erse)g -(pro)q(cess,)h(that)e(is,)h(passing)f(a)h(sp)q(eci\014c)h(C)f(v)m(alue) -g(to)g(Lua,)h(is)e(done)i(b)o(y)f(using)g(the)g(follo)o(wing)-42 -369 y(functions:)-42 457 y Fm(void)262 b(lua_pushnumber)f(\(double)23 -b(n\);)-42 513 y(void)262 b(lua_pushstring)f(\(char)23 -b(*s\);)-42 570 y(void)262 b(lua_pushcfunction)189 b(\(lua_CFunction)22 -b(f\);)-42 626 y(void)262 b(lua_pushusertag)237 b(\(void)23 -b(*u,)h(int)f(tag\);)-42 714 y Fo(plus)16 b(the)f(macro:)-42 -802 y Fm(void)262 b(lua_pushuserdata)213 b(\(void)23 -b(*u\);)-42 890 y Fo(All)17 b(of)f(them)g(receiv)o(e)h(a)f(C)h(v)m -(alue,)g(con)o(v)o(ert)f(it)h(to)f(a)g(corresp)q(onden)o(t)i -Fm(lua_Object)p Fo(,)d(and)i(lea)o(v)o(e)f(the)h(result)g(on)-42 -947 y(the)h(top)g(of)f(the)h(Lua)g(stac)o(k,)f(where)h(it)f(can)h(b)q -(e)h(assigned)e(to)g(a)h(Lua)g(v)m(ariable,)f(passed)h(as)g(paramen)o -(ter)e(to)h(a)-42 1003 y(Lua)f(function,)f(etc)g(\(see)g(b)q(elo)o -(w\).)29 1060 y(User)10 b(data)g(can)h(ha)o(v)o(e)e(di\013eren)o(t)h -(tags,)g(whose)g(seman)o(tics)f(are)h(de\014ned)h(b)o(y)g(the)f(host)g -(program.)16 b(An)o(y)10 b(p)q(ositiv)o(e)-42 1116 y(in)o(teger)15 -b(can)h(b)q(e)h(used)f(to)g(tag)e(a)i(user)g(data.)21 -b(When)16 b(a)g(user)g(data)f(is)g(retriev)o(ed,)g(the)h(function)g -Fm(lua_type)e Fo(can)-42 1173 y(b)q(e)i(used)g(to)f(get)f(its)h(tag.)29 -1229 y(T)l(o)g(complete)f(the)h(set,)g(the)g(v)m(alue)g -Fl(nil)g Fo(or)f(a)h Fm(lua_Object)f Fo(can)h(also)g(b)q(e)g(pushed)i -(on)o(to)d(the)h(stac)o(k,)f(with:)-42 1317 y Fm(void)262 -b(lua_pushnil)333 b(\(void\);)-42 1374 y(void)262 b(lua_pushobject)f -(\(lua_Object)22 b(object\);)-42 1494 y Fe(5.3)56 b(Manipulating)22 -b(Lua)c(Ob)s(jects)-42 1580 y Fo(T)l(o)d(read)h(the)f(v)m(alue)g(of)g -(an)o(y)g(global)f(Lua)h(v)m(ariable,)f(one)i(can)f(use)h(the)f -(function:)-42 1668 y Fm(lua_Object)118 b(lua_getglobal)285 -b(\(char)23 b(*varname\);)-42 1756 y Fo(As)16 b(in)f(Lua,)g(if)g(the)g -(v)m(alue)g(of)g(the)g(global)f(is)h Fl(nil)p Fo(,)f(the)h -Fm("getglobal")f Fo(fallbac)o(k)g(is)g(called.)29 1813 -y(T)l(o)h(store)f(a)h(v)m(alue)h(previously)e(pushed)j(on)o(to)d(the)h -(stac)o(k)g(in)g(a)f(global)g(v)m(ariable,)h(there)g(is)g(the)g -(function:)-42 1901 y Fm(void)262 b(lua_storeglobal)237 -b(\(char)23 b(*varname\);)29 1989 y Fo(T)l(ables)15 b(can)g(also)f(b)q -(e)i(manipulated)e(via)g(the)i(API.)f(The)g(function)-42 -2077 y Fm(lua_Object)118 b(lua_getsubscript)213 b(\(void\);)-42 -2165 y Fo(exp)q(ects)16 b(on)f(the)h(stac)o(k)e(a)h(table)f(and)i(an)f -(index,)g(and)g(returns)g(the)g(con)o(ten)o(ts)g(of)g(the)g(table)f(at) -h(that)f(index.)20 b(As)-42 2221 y(in)15 b(Lua,)g(if)g(the)g(\014rst)f -(ob)s(ject)h(is)f(not)h(a)f(table,)g(or)h(the)g(index)g(is)g(not)f -(presen)o(t)h(in)g(the)g(table,)f(the)h(corresp)q(onden)o(t)-42 -2278 y(fallbac)o(k)f(is)h(called.)29 2334 y(T)l(o)h(store)g(a)g(v)m -(alue)h(in)f(an)h(index,)g(the)f(program)e(m)o(ust)h(push)j(on)o(to)d -(the)i(stac)o(k)e(the)i(table,)f(the)h(index,)f(and)-42 -2391 y(the)g(v)m(alue,)f(and)g(then)h(call)e(the)h(function:)-42 -2479 y Fm(void)24 b(lua_storesubscript)d(\(void\);)-42 -2567 y Fo(Again,)15 b(the)g(corresp)q(onden)o(t)g(fallbac)o(k)f(is)h -(called)g(if)f(needed.)29 2623 y(Finally)l(,)g(the)h(function)911 -2748 y(13)p eop +13 12 bop 0 91 a Fn(void)47 b(lua_storesubscript)42 b(\(void\);)0 +264 y Fp(Again,)30 b(the)h(corresp)s(onding)d(fallbac)m(k)i(is)g +(called)f(if)g(needed.)141 377 y(Finally)-8 b(,)29 b(the)i(function)0 +549 y Fn(lua_Object)236 b(lua_createtable)473 b(\(void\);)0 +721 y Fp(creates)32 b(and)e(returns)f(a)h(new)g(table.)141 +834 y Fo(Ple)-5 b(ase)40 b(Notic)-5 b(e:)61 b Fp(Most)39 +b(functions)d(from)h(the)h(Lua)g(library)d(receiv)m(e)k(parameters)f +(through)g(Lua's)f(stac)m(k.)0 947 y(Because)e(other)f(functions)f +(also)h(use)f(this)g(stac)m(k,)k(it)c(is)g(imp)s(ortan)m(t)g(that)i +(these)f(parameters)g(b)s(e)f(pushed)g(just)0 1060 y(b)s(efore)d(the)g +(corresp)s(onding)e(call,)i(without)f(in)m(termediate)h(calls)f(to)i +(the)f(Lua)g(library)-8 b(.)38 b(F)-8 b(or)31 b(instance,)f(supp)s(ose) +0 1173 y(the)h(user)e(w)m(an)m(ts)i(the)g(v)-5 b(alue)30 +b(of)g Fn(a[i])p Fp(.)40 b(A)30 b(simplistic)d(solution)i(w)m(ould)g(b) +s(e:)95 1345 y Fn(/*)48 b(Warning:)d(WRONG)i(CODE)f(*/)95 +1458 y(lua_Object)f(result;)95 1571 y(lua_pushobject\(lua_getglob)o +(al\(")o(a"\))o(\);)89 b(/*)48 b(push)e(table)h(*/)95 +1684 y(lua_pushobject\(lua_getglob)o(al\(")o(i"\))o(\);)89 +b(/*)48 b(push)e(index)h(*/)95 1797 y(result)g(=)g +(lua_getsubscript\(\);)0 1969 y Fp(Ho)m(w)m(ev)m(er,)d(the)39 +b(call)f Fn(lua_getglobal\("i"\))d Fp(mo)s(di\014es)i(the)i(stac)m(k,)k +(and)c(in)m(v)-5 b(alidates)38 b(the)h(previous)f(pushed)0 +2082 y(v)-5 b(alue.)40 b(A)31 b(correct)g(solution)e(could)h(b)s(e:)95 +2254 y Fn(lua_Object)45 b(result;)95 2367 y(lua_Object)g(index)i(=)g +(lua_getglobal\("i"\);)95 2480 y(lua_pushobject\(lua_getglob)o(al\(")o +(a"\))o(\);)89 b(/*)48 b(push)e(table)h(*/)95 2593 y +(lua_pushobject\(index\);)710 b(/*)48 b(push)e(index)h(*/)95 +2706 y(result)g(=)g(lua_getsubscript\(\);)0 2878 y Fp(The)35 +b(functions)f Fn(lua_getnumber)p Fp(,)f Fn(lua_getstring)p +Fp(,)g Fn(lua_getuserdata)p Fp(,)g(and)h Fn(lua_getcfunction)p +Fp(,)f(plus)0 2991 y(the)e(family)d Fn(lua_is*)p Fp(,)h(are)i(safe)g +(to)g(b)s(e)e(called)h(without)f(mo)s(difying)f(the)j(stac)m(k.)0 +3231 y Ff(5.4)112 b(Calling)36 b(Lua)i(F)-9 b(unctions)0 +3403 y Fp(F)h(unctions)36 b(de\014ned)g(in)f(Lua)i(b)m(y)f(a)h(c)m(h)m +(unk)g(executed)h(with)d Fn(dofile)g Fp(or)i Fn(dostring)d +Fp(can)j(b)s(e)g(called)e(from)i(the)0 3516 y(host)d(program.)50 +b(This)32 b(is)h(done)g(using)f(the)i(follo)m(wing)e(proto)s(col:)47 +b(\014rst,)34 b(the)g(argumen)m(ts)g(to)g(the)g(function)f(are)0 +3629 y(pushed)27 b(on)m(to)j(the)f(Lua)g(stac)m(k)h(\(see)g(Section)e +(5.2\),)j(in)d(direct)g(order,)h(i.e.,)g(the)g(\014rst)f(argumen)m(t)i +(is)d(pushed)g(\014rst.)0 3742 y(Again,)j(it)g(is)g(imp)s(ortan)m(t)f +(to)i(emphasize)f(that,)h(during)e(this)g(phase,)h(no)g(other)h(Lua)f +(function)f(can)i(b)s(e)f(called.)141 3855 y(Then,)g(the)g(function)f +(is)h(called)f(using)0 4027 y Fn(int)572 b(lua_call)809 +b(\(char)46 b(*functionname\);)0 4199 y Fp(or)0 4372 +y Fn(int)572 b(lua_callfunction)425 b(\(lua_Object)45 +b(function\);)0 4544 y Fp(Both)32 b(functions)e(return)h(an)h(error)f +(co)s(de:)43 b(0,)33 b(in)d(case)j(of)f(success;)g(non)f(zero,)i(in)e +(case)h(of)g(errors.)44 b(Finally)-8 b(,)31 b(the)0 4657 +y(returned)e(v)-5 b(alues)30 b(\(a)h(Lua)f(function)f(ma)m(y)i(return)e +(man)m(y)i(v)-5 b(alues\))30 b(can)h(b)s(e)e(retriev)m(ed)i(with)e(the) +h(macro)0 4829 y Fn(lua_Object)236 b(lua_getresult)617 +b(\(int)46 b(number\);)0 5001 y Fp(where)33 b Fn(number)f +Fp(is)h(the)g(order)h(of)f(the)h(result,)g(starting)f(with)f(1.)51 +b(When)33 b(called)g(with)g(a)h(n)m(um)m(b)s(er)e(larger)h(than)0 +5114 y(the)e(actual)f(n)m(um)m(b)s(er)f(of)i(results,)e(this)h +(function)f(returns)g Fn(LUA_NOOBJECT)p Fp(.)141 5227 +y(Tw)m(o)37 b(sp)s(ecial)e(Lua)i(functions)e(ha)m(v)m(e)j(exclusiv)m(e) +e(in)m(terfaces:)54 b Fn(error)35 b Fp(and)h Fn(setfallback)p +Fp(.)57 b(A)37 b(C)f(function)0 5340 y(can)31 b(generate)h(a)e(Lua)g +(error)g(calling)f(the)i(function)1905 5589 y(13)p eop %%Page: 14 14 -14 13 bop -42 199 a Fm(lua_Object)118 b(lua_createtable)237 -b(\(void\);)-42 293 y Fo(creates)15 b(a)g(new)h(table.)29 -349 y Fn(Ple)n(ase)22 b(Notic)n(e:)36 b Fo(Most)22 b(functions)g(from)e -(the)j(Lua)f(library)f(receiv)o(e)i(parameters)d(through)i(the)h(stac)o -(k.)-42 406 y(Because)c(other)e(functions)g(also)g(use)h(the)g(stac)o -(k,)f(it)g(is)g(imp)q(ortan)o(t)e(that)i(these)h(parameters)e(b)q(e)i -(pushed)h(just)-42 462 y(b)q(efore)d(the)f(corresp)q(onden)o(t)g(call,) -f(without)g(in)o(termediate)e(calls)i(to)h(the)g(Lua)g(library)l(.)k(F) -l(or)14 b(instance,)h(supp)q(ose)-42 519 y(the)h(user)f(w)o(an)o(ts)f -(the)h(v)m(alue)h(of)f Fm(a[i])p Fo(.)k(A)c(simplistic)e(solution)h(w)o -(ould)g(b)q(e:)6 613 y Fm(/*)24 b(Warning:)f(WRONG)g(CODE)g(*/)6 -669 y(lua_Object)g(result;)6 725 y(lua_pushobject\(lua_getglobal)o -(\("a"\)\);)44 b(/*)24 b(push)f(table)g(*/)6 782 y -(lua_pushobject\(lua_getglobal)o(\("i"\)\);)44 b(/*)24 -b(push)f(index)g(*/)6 838 y(result)g(=)h(lua_getsubscript\(\);)-42 -932 y Fo(Ho)o(w)o(ev)o(er,)c(the)f(call)g Fm(lua_getglobal\("i"\))e -Fo(mo)q(di\014es)i(the)h(stac)o(k,)f(and)h(in)o(v)m(alidates)e(the)i -(previous)f(pushed)-42 989 y(v)m(alue.)i(A)15 b(correct)g(solution)f -(could)h(b)q(e:)6 1082 y Fm(lua_Object)23 b(result;)6 -1139 y(lua_Object)g(index)g(=)h(lua_getglobal\("i"\);)6 -1195 y(lua_pushobject\(lua_getglobal)o(\("a"\)\);)44 -b(/*)24 b(push)f(table)g(*/)6 1252 y(lua_pushobject\(index\);)355 -b(/*)24 b(push)f(index)g(*/)6 1308 y(result)g(=)h -(lua_getsubscript\(\);)-42 1430 y Fe(5.4)56 b(Calling)21 -b(Lua)e(F)-5 b(unctions)-42 1516 y Fo(F)l(unctions)19 -b(de\014ned)g(in)g(Lua)f(b)o(y)h(a)f(c)o(h)o(unk)g(executed)i(with)e -Fm(dofile)f Fo(or)h Fm(dostring)f Fo(can)i(b)q(e)g(called)f(from)e(the) --42 1572 y(host)h(program.)23 b(This)16 b(is)g(done)h(using)g(the)g -(follo)o(wing)e(proto)q(col:)22 b(\014rst,)16 b(the)h(argumen)o(ts)e -(to)h(the)h(function)g(are)-42 1629 y(pushed)f(on)o(to)d(the)i(Lua)g -(stac)o(k)e(\(see)i(Section)f(5.2\),)f(in)h(direct)g(order,)g(i.e.,)g -(the)g(\014rst)g(argumen)o(t)f(is)h(pushed)h(\014rst.)-42 -1685 y(Again,)g(it)f(is)h(imp)q(ortan)o(t)e(to)h(emphasize)h(that,)f -(during)h(this)f(phase,)i(no)f(other)g(Lua)g(function)g(can)g(b)q(e)h -(called.)29 1741 y(Then,)f(the)h(function)f(is)f(called)h(using)-42 -1835 y Fm(int)286 b(lua_call)405 b(\(char)23 b(*functionname\);)-42 -1929 y Fo(or)-42 2023 y Fm(int)286 b(lua_callfunction)213 -b(\(lua_Object)22 b(function\);)-42 2116 y Fo(Both)16 -b(functions)g(return)f(an)h(error)f(co)q(de:)22 b(0,)15 -b(in)h(case)g(of)f(success;)i(non)f(zero,)f(in)h(case)g(of)f(errors.)21 -b(Finally)l(,)14 b(the)-42 2173 y(returned)i(v)m(alues)f(\(a)g(Lua)h -(function)f(ma)o(y)e(return)i(man)o(y)f(v)m(alues\))h(can)g(b)q(e)h -(retriev)o(ed)f(with)f(the)i(macro)-42 2267 y Fm(lua_Object)118 -b(lua_getresult)309 b(\(int)23 b(number\);)-42 2360 y -Fo(where)18 b Fm(number)d Fo(is)i(the)g(order)f(of)h(the)g(result,)f -(starting)f(with)h(1.)25 b(When)17 b(called)f(with)g(a)h(n)o(um)o(b)q -(er)f(larger)g(than)-42 2417 y(the)g(actual)e(n)o(um)o(b)q(er)h(of)f -(results,)h(this)f(function)h(returns)g Fm(LUA_NOOBJECT)p -Fo(.)29 2473 y(Tw)o(o)j(sp)q(ecial)g(Lua)g(functions)h(ha)o(v)o(e)e -(exclusiv)o(e)i(in)o(terfaces:)25 b Fm(error)18 b Fo(and)g -Fm(setfallback)p Fo(.)28 b(A)18 b(C)h(function)-42 2530 -y(can)d(generate)f(a)g(Lua)g(error)g(calling)f(the)h(function)-42 -2623 y Fm(void)24 b(lua_error)e(\(char)i(*message\);)911 -2748 y Fo(14)p eop +14 13 bop 0 91 a Fn(void)47 b(lua_error)e(\(char)h(*message\);)0 +279 y Fp(This)34 b(function)g(nev)m(er)j(returns.)55 +b(If)36 b(the)g(C)f(function)f(has)i(b)s(een)f(called)g(from)g(Lua,)i +(the)f(corresp)s(onding)e(Lua)0 392 y(execution)f(terminates,)g(as)g +(if)e(an)i(error)f(had)g(o)s(ccurred)g(inside)e(Lua)i(co)s(de.)48 +b(Otherwise,)32 b(the)g(whole)g(program)0 505 y(terminates.)141 +618 y(F)-8 b(allbac)m(ks)31 b(can)g(b)s(e)e(c)m(hanged)i(with:)0 +805 y Fn(lua_Object)45 b(lua_setfallback)f(\(char)i(*name,)g +(lua_CFunction)e(fallback\);)0 993 y Fp(The)22 b(\014rst)g(parameter)h +(is)f(the)h(fallbac)m(k)f(name,)i(and)e(the)h(second)g(a)g(CF)-8 +b(unction)22 b(to)h(b)s(e)f(used)g(as)h(the)g(new)f(fallbac)m(k.)0 +1106 y(This)28 b(function)g(returns)g(a)i Fn(lua_Object)p +Fp(,)d(whic)m(h)h(is)h(the)g(old)g(fallbac)m(k)g(v)-5 +b(alue,)29 b(or)h Fm(nil)g Fp(on)f(fail)f(\(in)m(v)-5 +b(alid)27 b(fallbac)m(k)0 1219 y(name\).)41 b(This)29 +b(old)g(v)-5 b(alue)30 b(can)h(b)s(e)e(used)h(for)g(c)m(haining)f +(fallbac)m(ks.)141 1332 y(An)h(example)g(of)h(C)f(co)s(de)g(calling)f +(a)i(Lua)f(function)f(is)g(sho)m(wn)h(in)f(Section)h(8.10.)0 +1575 y Ff(5.5)112 b(C)38 b(F)-9 b(unctions)0 1747 y Fp(T)h(o)31 +b(register)f(a)h(C)f(function)f(to)i(Lua,)f(there)h(is)e(the)i(follo)m +(wing)e(macro:)0 1934 y Fn(#define)46 b(lua_register\(n,f\))329 +b(\(lua_pushcfunction\(f\),)42 b(lua_storeglobal\(n\)\))0 +2047 y(/*)47 b(char)g(*n;)429 b(*/)0 2160 y(/*)47 b(lua_CFunction)d(f;) +k(*/)0 2348 y Fp(whic)m(h)28 b(receiv)m(es)i(the)g(name)f(the)g +(function)f(will)f(ha)m(v)m(e)k(in)d(Lua,)h(and)g(a)g(p)s(oin)m(ter)g +(to)h(the)f(function.)39 b(This)28 b(p)s(oin)m(ter)0 +2461 y(m)m(ust)i(ha)m(v)m(e)i(t)m(yp)s(e)e Fn(lua_CFunction)p +Fp(,)d(whic)m(h)i(is)h(de\014ned)f(as)0 2648 y Fn(typedef)46 +b(void)g(\(*lua_CFunction\))e(\(void\);)0 2836 y Fp(that)31 +b(is,)f(a)g(p)s(oin)m(ter)g(to)h(a)g(function)e(with)g(no)h(parameters) +h(and)f(no)g(results.)141 2949 y(In)d(order)h(to)g(comm)m(unicate)g +(prop)s(erly)e(with)h(Lua,)h(a)g(C)f(function)g(m)m(ust)h(follo)m(w)f +(a)h(proto)s(col,)g(whic)m(h)f(de\014nes)0 3062 y(the)k(w)m(a)m(y)g +(parameters)g(and)e(results)h(are)g(passed.)141 3175 +y(T)-8 b(o)31 b(access)h(its)d(argumen)m(ts,)i(a)g(C)f(function)f +(calls:)0 3362 y Fn(lua_Object)236 b(lua_getparam)617 +b(\(int)47 b(number\);)0 3550 y Fp(where)30 b Fn(number)f +Fp(starts)i(with)e(1)i(to)g(get)g(the)g(\014rst)f(argumen)m(t.)41 +b(When)31 b(called)e(with)g(a)i(n)m(um)m(b)s(er)e(larger)i(than)f(the)0 +3663 y(actual)25 b(n)m(um)m(b)s(er)f(of)h(argumen)m(ts,)h(this)e +(function)f(returns)h Fn(LUA_NOOBJECT)p Fp(.)d(In)j(this)g(w)m(a)m(y)-8 +b(,)28 b(it)c(is)g(p)s(ossible)e(to)k(write)0 3776 y(functions)j(that)i +(w)m(ork)f(with)f(a)i(v)-5 b(ariable)29 b(n)m(um)m(b)s(er)g(of)i +(parameters.)141 3889 y(T)-8 b(o)26 b(return)e(v)-5 b(alues,)27 +b(a)e(C)g(function)g(just)f(pushes)h(them)g(on)m(to)i(the)e(stac)m(k,)j +(in)d(direct)g(order)g(\(see)h(Section)f(5.2\).)0 4002 +y(Lik)m(e)30 b(a)h(Lua)f(function,)f(a)i(C)f(function)f(called)h(b)m(y) +g(Lua)g(can)h(also)f(return)f(man)m(y)i(results.)141 +4115 y(Section)f(8.9)i(presen)m(ts)e(an)g(example)g(of)h(a)g(CF)-8 +b(unction.)0 4358 y Ff(5.6)112 b(References)38 b(to)f(Lua)i(Ob)6 +b(jects)0 4530 y Fp(As)23 b(noted)g(in)f(Section)h(5.5,)j +Fn(lua_Object)p Fp(s)20 b(are)k(v)m(olatile.)38 b(If)22 +b(the)i(C)e(co)s(de)i(needs)e(to)i(k)m(eep)g(a)f Fn(lua_Object)e +Fp(outside)0 4642 y(blo)s(c)m(k)33 b(b)s(oundaries,)e(it)i(m)m(ust)g +(create)h(a)g Fo(r)-5 b(efer)g(enc)g(e)33 b Fp(to)h(the)f(ob)5 +b(ject.)50 b(The)33 b(routines)e(to)j(manipulate)e(references)0 +4755 y(are)f(the)f(follo)m(wing:)0 4943 y Fn(int)572 +b(lua_ref)46 b(\(int)g(lock\);)0 5056 y(lua_Object)236 +b(lua_getref)93 b(\(int)46 b(ref\);)0 5169 y(void)524 +b(lua_pushref)45 b(\(int)h(ref\);)0 5282 y(void)524 b(lua_unref)45 +b(\(int)i(ref\);)1905 5589 y Fp(14)p eop %%Page: 15 15 -15 14 bop -42 199 a Fo(This)18 b(function)g(nev)o(er)g(returns.)28 -b(If)18 b(the)g(C)f(function)h(has)g(b)q(een)h(called)f(from)e(Lua,)i -(the)g(corresp)q(onding)g(Lua)-42 256 y(execution)f(terminates,)d(as)i -(if)g(an)g(error)f(had)i(o)q(ccurred)g(inside)f(Lua)h(co)q(de.)23 -b(Otherwise,)16 b(the)h(whole)f(program)-42 312 y(terminates.)29 -369 y(F)l(allbac)o(ks)e(can)h(b)q(e)h(c)o(hanged)g(with:)-42 -454 y Fm(lua_Object)23 b(lua_setfallback)f(\(char)h(*name,)g -(lua_CFunction)f(fallback\);)-42 540 y Fo(The)12 b(\014rst)f(parameter) -f(is)g(the)i(fallbac)o(k)e(name,)h(and)g(the)h(second)f(a)h(CF)l -(unction)f(to)f(b)q(e)i(used)g(as)f(the)h(new)f(fallbac)o(k.)-42 -596 y(This)k(function)f(returns)h(a)f Fm(lua_Object)p -Fo(,)g(whic)o(h)g(is)g(the)h(old)g(fallbac)o(k)e(v)m(alue,)i(or)f -Fl(nil)g Fo(on)g(fail)g(\(in)o(v)m(alid)g(fallbac)o(k)-42 -653 y(name\).)19 b(This)c(old)g(v)m(alue)g(can)g(b)q(e)h(used)g(for)f -(c)o(haining)f(fallbac)o(ks.)29 709 y(An)i(example)e(of)g(C)h(co)q(de)h -(calling)e(a)h(Lua)g(function)h(is)e(sho)o(wn)h(in)g(Section)g(8.10.) --42 829 y Fe(5.5)56 b(C)19 b(F)-5 b(unctions)-42 915 -y Fo(T)l(o)15 b(register)g(a)f(C)h(function)g(to)g(Lua,)g(there)g(is)g -(the)g(follo)o(wing)e(macro:)-42 1001 y Fm(#define)23 -b(lua_register\(n,f\))165 b(\(lua_pushcfunction\(f\),)21 -b(lua_storeglobal\(n\)\))-42 1057 y(/*)j(char)f(*n;)215 -b(*/)-42 1114 y(/*)24 b(lua_CFunction)e(f;)i(*/)-42 1199 -y Fo(whic)o(h)15 b(receiv)o(es)g(the)f(name)g(the)h(function)f(will)g -(ha)o(v)o(e)g(in)g(Lua,)h(and)g(a)f(p)q(oin)o(ter)g(to)g(the)h -(function.)20 b(This)14 b(p)q(oin)o(ter)-42 1256 y(m)o(ust)g(ha)o(v)o -(e)h(t)o(yp)q(e)g Fm(lua_CFunction)p Fo(,)e(whic)o(h)i(is)g(de\014ned)i -(as)-42 1341 y Fm(typedef)23 b(void)h(\(*lua_CFunction\))d(\(void\);) --42 1427 y Fo(that)15 b(is,)f(a)h(p)q(oin)o(ter)g(to)f(a)h(function)g -(with)g(no)g(parameters)e(and)j(no)f(results.)29 1483 -y(In)g(order)e(to)h(comm)o(unicate)d(prop)q(erly)j(with)f(Lua,)h(a)f(C) -h(function)g(m)o(ust)e(follo)o(w)g(a)i(proto)q(col,)f(whic)o(h)g -(de\014nes)-42 1540 y(the)j(w)o(a)o(y)e(parameters)f(and)j(results)e -(are)h(passed.)29 1596 y(T)l(o)g(access)g(its)g(argumen)o(ts,)e(a)i(C)g -(function)g(calls:)-42 1682 y Fm(lua_Object)118 b(lua_getparam)309 -b(\(int)23 b(number\);)-42 1767 y Fo(where)16 b Fm(number)e -Fo(starts)g(with)h(1)g(to)f(get)h(the)h(\014rst)e(argumen)o(t.)19 -b(When)c(called)g(with)g(a)g(n)o(um)o(b)q(er)f(larger)g(than)h(the)-42 -1824 y(actual)d(n)o(um)o(b)q(er)g(of)g(argumen)o(ts,)f(this)g(function) -i(returns)f Fm(LUA_NOOBJECT)p Fo(.)e(In)j(this)f(w)o(a)o(y)l(,)g(it)g -(is)f(p)q(ossible)i(to)e(write)-42 1880 y(functions)k(that)g(w)o(ork)f -(with)h(a)g(v)m(ariable)f(n)o(um)o(b)q(er)h(of)f(parameters.)29 -1937 y(T)l(o)g(return)g(v)m(alues,)g(a)g(C)g(function)g(just)f(pushes)i -(them)e(on)o(to)g(the)i(stac)o(k,)e(in)h(direct)g(order;)f(see)i -(Section)f(5.2.)-42 1993 y(Lik)o(e)i(a)e(Lua)i(function,)f(a)g(C)g -(function)g(called)f(b)o(y)h(Lua)h(can)f(also)g(return)g(man)o(y)e -(results.)29 2050 y(Section)i(8.9)f(presen)o(ts)i(an)f(example)f(of)g -(a)h(CF)l(unction.)-42 2170 y Fe(5.6)56 b(References)17 -b(to)i(Lua)f(Ob)s(jects)-42 2256 y Fo(As)h(already)g(noted,)g -Fm(lua_Object)p Fo(s)f(are)h(v)o(olatile.)29 b(If)19 -b(the)g(C)g(co)q(de)h(needs)g(to)e(k)o(eep)h(a)g Fm(lua_Object)f -Fo(outside)-42 2312 y(blo)q(c)o(k)f(b)q(oundaries,)g(it)e(m)o(ust)g -(create)i(a)f Fn(r)n(efer)n(enc)n(e)f Fo(to)h(the)g(ob)s(ject.)23 -b(The)17 b(routines)f(to)g(manipulate)f(references)-42 -2369 y(are)g(the)h(follo)o(wing:)-42 2454 y Fm(int)286 -b(lua_ref)23 b(\(int)h(lock\);)-42 2511 y(lua_Object)118 -b(lua_getref)47 b(\(int)23 b(ref\);)-42 2567 y(void)262 -b(lua_pushref)23 b(\(int)g(ref\);)-42 2623 y(void)262 -b(lua_unref)23 b(\(int)g(ref\);)911 2748 y Fo(15)p eop +15 14 bop 0 91 a Fp(The)29 b(function)e Fn(lua_ref)g +Fp(creates)k(a)e(reference)h(to)g(the)f(ob)5 b(ject)30 +b(that)g(is)e(on)h(the)g(top)g(of)g(the)h(stac)m(k,)h(and)d(returns)0 +204 y(this)39 b(reference.)69 b(If)39 b Fn(lock)g Fp(is)g(true,)j(the)e +(ob)5 b(ject)41 b(is)e Fo(lo)-5 b(cke)g(d)p Fp(:)61 b(that)40 +b(means)g(the)g(ob)5 b(ject)40 b(will)d(not)k(b)s(e)e(garbage)0 +317 y(collected.)54 b(Notice)35 b(that)h(an)e(unlo)s(c)m(k)m(ed)g +(reference)h(ma)m(y)g(b)s(e)f(garbage)i(collected.)54 +b(Whenev)m(er)35 b(the)g(referenced)0 430 y(ob)5 b(ject)39 +b(is)d(needed,)k(a)e(call)f(to)i Fn(lua_getref)34 b Fp(returns)j(a)h +(handle)e(to)j(it,)g(whereas)f Fn(lua_pushref)c Fp(pushes)j(the)0 +543 y(ob)5 b(ject)29 b(on)f(the)h(stac)m(k.)41 b(If)28 +b(the)g(ob)5 b(ject)29 b(has)f(b)s(een)g(collected,)h(then)f +Fn(lua_getref)d Fp(returns)i Fn(LUA_NOOBJECT)p Fp(,)f(and)0 +656 y Fn(lua_pushobject)g Fp(issues)k(an)g(error.)141 +769 y(When)g(a)h(reference)g(is)e(no)i(longer)f(needed,)g(it)g(can)g(b) +s(e)g(freed)g(with)f(a)i(call)f(to)h Fn(lua_unref)p Fp(.)0 +1055 y Fq(6)135 b(Prede\014ned)44 b(F)-11 b(unctions)44 +b(and)h(Libraries)0 1258 y Fp(The)33 b(set)g(of)g(prede\014ned)f +(functions)f(in)h(Lua)h(is)f(small)g(but)g(p)s(o)m(w)m(erful.)47 +b(Most)34 b(of)g(them)f(pro)m(vide)f(features)h(that)0 +1371 y(allo)m(ws)28 b(some)i(degree)g(of)f(re\015exivit)m(y)g(in)e(the) +j(language.)40 b(Some)30 b(of)f(these)h(features)f(cannot)h(b)s(e)e +(sim)m(ulated)g(with)0 1484 y(the)k(rest)g(of)g(the)g(Language)h(nor)e +(with)g(the)h(standard)f(Lua)g(API.)h(Others)f(are)i(just)e(con)m(v)m +(enien)m(t)i(in)m(terfaces)f(to)0 1597 y(common)f(API)f(functions.)141 +1710 y(The)d(libraries,)e(on)i(the)g(other)h(hand,)f(pro)m(vide)f +(useful)g(routines)g(that)h(are)h(implemen)m(ted)e(directly)g(through)0 +1823 y(the)f(standard)f(API.)i(Therefore,)g(they)f(are)g(not)h +(necessary)f(to)h(the)f(language,)i(and)d(are)i(pro)m(vided)d(as)i +(separated)0 1936 y(C)30 b(mo)s(dules.)39 b(Curren)m(tly)29 +b(there)h(are)h(three)f(standard)g(libraries:)136 2123 +y Fk(\017)46 b Fp(string)30 b(manipulation;)136 2311 +y Fk(\017)46 b Fp(mathematical)31 b(functions)e(\(sin,)g(cos,)j(etc\);) +136 2499 y Fk(\017)46 b Fp(input)29 b(and)g(output)h(\(plus)f(some)i +(system)g(facilities\).)0 2686 y(In)h(order)g(to)h(ha)m(v)m(e)h(access) +f(to)g(these)g(libraries,)e(the)h(host)h(program)f(m)m(ust)g(call)g +(the)h(functions)e Fn(strlib_open)p Fp(,)0 2799 y Fn(mathlib_open)p +Fp(,)c(and)j Fn(iolib_open)p Fp(,)e(declared)i(in)f Fn(lualib.h)p +Fp(.)0 3042 y Ff(6.1)112 b(Prede\014ned)38 b(F)-9 b(unctions)0 +3214 y Fk(\017)35 b Fn(dofile)46 b(\(filename\))0 3386 +y Fp(This)33 b(function)g(receiv)m(es)i(a)g(\014le)e(name,)j(op)s(ens)d +(it,)j(and)d(executes)j(its)e(con)m(ten)m(ts)i(as)f(a)g(Lua)f(c)m(h)m +(unk,)h(or)g(as)f(pre-)0 3499 y(compiled)d(c)m(h)m(unks.)46 +b(When)32 b(called)g(without)f(argumen)m(ts,)j(it)e(executes)h(the)g +(con)m(ten)m(ts)h(of)f(the)f(standard)g(input)0 3612 +y(\()p Fn(stdin)p Fp(\).)60 b(If)37 b(there)g(is)f(an)m(y)h(error)g +(executing)g(the)g(\014le,)h(it)f(returns)f Fm(nil)p +Fp(.)60 b(Otherwise,)38 b(it)f(returns)e(the)j(v)-5 b(alues)0 +3724 y(returned)32 b(b)m(y)g(the)h(c)m(h)m(unk,)h(or)f(a)g(non)f +Fm(nil)h Fp(v)-5 b(alue)32 b(if)g(the)h(c)m(h)m(unk)g(returns)e(no)i(v) +-5 b(alues.)47 b(It)33 b(issues)f(an)h(error)f(when)0 +3837 y(called)e(with)f(a)h(non)g(string)g(argumen)m(t.)0 +4077 y Fk(\017)35 b Fn(dostring)46 b(\(string\))0 4249 +y Fp(This)29 b(function)h(executes)j(a)e(giv)m(en)g(string)f(as)i(a)f +(Lua)g(c)m(h)m(unk.)43 b(If)30 b(there)i(is)e(an)m(y)h(error)g +(executing)h(the)f(string,)f(it)0 4362 y(returns)c Fm(nil)p +Fp(.)40 b(Otherwise,)27 b(it)h(returns)e(the)i(v)-5 b(alues)27 +b(returned)f(b)m(y)i(the)g(c)m(h)m(unk,)g(or)g(a)g(non)f +Fm(nil)h Fp(v)-5 b(alue)27 b(if)f(the)i(c)m(h)m(unk)0 +4475 y(returns)h(no)h(v)-5 b(alues.)0 4715 y Fk(\017)35 +b Fn(next)47 b(\(table,)f(index\))0 4887 y Fp(This)34 +b(function)g(allo)m(ws)h(a)h(program)f(to)h(tra)m(v)m(erse)h(all)d +(\014elds)g(of)i(a)g(table.)56 b(Its)35 b(\014rst)g(argumen)m(t)h(is)e +(a)i(table)g(and)0 5000 y(its)31 b(second)g(argumen)m(t)h(is)e(an)i +(index)d(in)i(this)f(table.)43 b(It)32 b(returns)e(the)h(next)h(index)e +(of)h(the)h(table)f(and)g(the)g(v)-5 b(alue)0 5112 y(asso)s(ciated)33 +b(with)d(the)j(index.)44 b(When)32 b(called)f(with)g +Fm(nil)h Fp(as)h(its)e(second)h(argumen)m(t,)i(the)e(function)f +(returns)g(the)0 5225 y(\014rst)g(index)g(of)h(the)g(table)g(\(and)g +(its)f(asso)s(ciated)i(v)-5 b(alue\).)45 b(When)32 b(called)f(with)g +(the)h(last)g(index,)f(or)h(with)f Fm(nil)h Fp(in)0 5338 +y(an)e(empt)m(y)h(table,)g(it)e(returns)h Fm(nil)p Fp(.)1905 +5589 y(15)p eop %%Page: 16 16 -16 15 bop -42 199 a Fo(The)23 b(function)e Fm(lua_ref)g -Fo(creates)g(a)h(reference)g(to)g(the)f(ob)s(ject)h(whic)o(h)f(is)h(on) -f(the)h(top)g(of)f(the)h(stac)o(k,)g(and)-42 256 y(returns)f(this)f -(reference.)36 b(If)21 b Fm(lock)f Fo(is)g(true,)h(the)g(ob)s(ject)f -(is)g Fn(lo)n(cke)n(d)p Fo(:)30 b(that)19 b(means)h(the)h(ob)s(ject)e -(will)h(not)g(b)q(e)-42 312 y(garbage)g(collected.)35 -b(Notice)19 b(that)h(an)g(unlo)q(c)o(k)o(ed)g(reference)h(ma)o(y)e(b)q -(e)i(garbage)e(collected.)35 b(Whenev)o(er)20 b(the)-42 -369 y(referenced)15 b(ob)s(ject)e(is)f(needed,)j(a)e(call)f(to)h -Fm(lua_getref)f Fo(returns)h(a)g(handle)h(to)f(it,)f(while)h -Fm(lua_pushref)f Fo(pushes)-42 425 y(the)k(ob)s(ject)g(on)g(the)g(stac) -o(k.)21 b(If)16 b(the)g(ob)s(ject)f(has)h(b)q(een)h(collected,)e -Fm(lua_getref)g Fo(returns)g Fm(LUA_NOOBJECT)p Fo(,)f(and)-42 -482 y Fm(lua_pushobject)g Fo(issues)h(an)g(error.)29 -538 y(When)h(a)f(reference)g(is)g(no)g(longer)g(needed,)h(it)e(can)i(b) -q(e)g(freed)f(with)g(a)f(call)h(to)f Fm(lua_unref)p Fo(.)-42 -681 y Fp(6)67 b(Prede\014ned)24 b(F)-6 b(unctions)24 -b(and)f(Libraries)-42 783 y Fo(The)17 b(set)g(of)f(prede\014ned)i -(functions)e(in)h(Lua)f(is)h(small)d(but)j(p)q(o)o(w)o(erful.)23 -b(Most)15 b(of)h(them)g(pro)o(vide)g(features)g(that)-42 -839 y(allo)o(ws)d(some)h(degree)g(of)h(re\015exivit)o(y)e(in)i(the)f -(language.)19 b(Some)14 b(of)g(these)h(features)f(cannot)g(b)q(e)i(sim) -o(ulated)c(with)-42 896 y(the)21 b(rest)f(of)g(the)h(Language)g(nor)f -(with)g(the)h(standard)f(Lua)h(API.)f(Others)h(are)f(just)h(helpful)f -(in)o(terfaces)g(to)-42 952 y(common)13 b(API)j(functions.)29 -1008 y(The)e(libraries,)e(on)i(the)f(other)g(hand,)h(pro)o(vide)g -(useful)f(routines)g(that)g(are)h(implemen)o(ted)d(directly)i(through) --42 1065 y(the)g(standard)f(API.)h(Therefore,)f(they)h(are)f(not)g -(necessary)h(to)f(the)g(language,)g(and)h(are)f(pro)o(vided)h(as)f -(separated)-42 1121 y(C)j(mo)q(dules.)k(Curren)o(tly)c(there)g(are)g -(three)g(standard)g(libraries:)27 1215 y Fj(\017)22 b -Fo(string)14 b(manipulation;)27 1309 y Fj(\017)22 b Fo(mathematical)11 -b(functions)k(\(sin,)g(cos,)f(etc\);)27 1403 y Fj(\017)22 -b Fo(input)15 b(and)h(output)f(\(plus)g(some)e(system)h(facilities\).) --42 1497 y(In)j(order)f(to)g(ha)o(v)o(e)g(access)g(to)g(these)g -(libraries,)f(the)h(host)g(program)e(m)o(ust)h(call)g(the)h(functions)g -Fm(strlib_open)p Fo(,)-42 1553 y Fm(mathlib_open)p Fo(,)e(and)h -Fm(iolib_open)p Fo(,)e(declared)j(in)f Fm(lualib.h)p -Fo(.)-42 1675 y Fe(6.1)56 b(Prede\014ned)18 b(F)-5 b(unctions)-42 -1761 y Fm(dofile)24 b(\(filename\))-42 1846 y Fo(This)18 -b(function)g(receiv)o(es)g(a)f(\014le)h(name,)f(op)q(ens)i(it)e(and)h -(executes)h(its)e(con)o(ten)o(ts)g(as)h(a)f(Lua)i(c)o(h)o(unk,)f(or)g -(as)f(pre-)-42 1903 y(compiled)e(c)o(h)o(unks.)20 b(When)c(called)f -(without)f(argumen)o(ts,)g(it)g(executes)i(the)g(con)o(ten)o(ts)e(of)h -(the)h(standard)f(input.)-42 1959 y(It)i(returns)g(1)f(if)g(there)h -(are)f(no)h(errors,)f Fl(nil)g Fo(otherwise.)23 b(It)17 -b(issues)f(an)h(error)f(when)h(called)f(with)g(a)h(non)f(string)-42 -2016 y(argumen)o(t.)-42 2136 y Fm(dostring)23 b(\(string\))-42 -2222 y Fo(This)e(function)h(executes)g(a)f(giv)o(en)g(string)f(as)h(a)g -(Lua)h(c)o(h)o(unk.)38 b(It)22 b(returns)f(1)g(if)g(there)g(are)g(no)h -(errors,)f Fl(nil)-42 2278 y Fo(otherwise.)-42 2398 y -Fm(next)j(\(table,)f(index\))-42 2484 y Fo(This)18 b(function)f(allo)o -(ws)f(a)i(program)d(to)i(tra)o(v)o(erse)g(all)g(\014elds)h(of)f(a)g -(table.)27 b(Its)18 b(\014rst)f(argumen)o(t)f(is)i(a)f(table)g(and)-42 -2540 y(its)e(second)i(argumen)o(t)c(is)j(an)f(index)h(in)g(this)f -(table.)21 b(It)15 b(returns)h(the)g(next)f(index)h(of)g(the)f(table)h -(and)f(the)h(v)m(alue)-42 2597 y(asso)q(ciated)g(with)f(the)h(index.)23 -b(When)17 b(called)e(with)h Fl(nil)f Fo(as)g(its)h(second)g(argumen)o -(t,)e(the)j(function)e(returns)h(the)911 2748 y(16)p -eop +16 15 bop 141 91 a Fp(In)32 b(Lua)f(there)i(is)e(no)h(declaration)g(of) +g(\014elds;)g(seman)m(tically)-8 b(,)32 b(there)h(is)e(no)h +(di\013erence)g(b)s(et)m(w)m(een)g(a)h(\014eld)e(not)0 +204 y(presen)m(t)i(in)e(a)i(table)f(or)g(a)h(\014eld)e(with)h(v)-5 +b(alue)32 b Fm(nil)p Fp(.)47 b(Therefore,)33 b(the)f(function)g(only)f +(considers)g(\014elds)g(with)h(non)0 317 y(nil)c(v)-5 +b(alues.)40 b(The)30 b(order)g(the)h(indices)d(are)j(en)m(umerated)g +(is)e(not)i(sp)s(eci\014ed,)e Fo(even)j(for)h(numeric)f(indic)-5 +b(es)p Fp(.)141 430 y(See)31 b(Section)f(8.2)h(for)g(an)f(example)g(of) +g(the)h(use)f(of)h(this)e(function.)0 670 y Fk(\017)35 +b Fn(nextvar)46 b(\(name\))0 842 y Fp(This)40 b(function)g(is)h +(similar)e(to)k(the)f(function)e Fn(next)p Fp(,)k(but)d(iterates)i(o)m +(v)m(er)g(the)f(global)f(v)-5 b(ariables.)74 b(Its)41 +b(single)0 955 y(argumen)m(t)31 b(is)f(the)h(name)g(of)g(a)g(global)f +(v)-5 b(ariable,)30 b(or)h Fm(nil)g Fp(to)g(get)h(a)f(\014rst)f(name.) +42 b(Similarly)27 b(to)32 b Fn(next)p Fp(,)e(it)g(returns)0 +1068 y(the)k(name)g(of)g(another)g(v)-5 b(ariable)33 +b(and)g(its)h(v)-5 b(alue,)34 b(or)g Fm(nil)g Fp(if)f(there)h(are)g(no) +g(more)g(v)-5 b(ariables.)50 b(See)34 b(Section)g(8.2)0 +1181 y(for)c(an)g(example)g(of)h(the)g(use)f(of)g(this)f(function.)0 +1421 y Fk(\017)35 b Fn(tostring)46 b(\(e\))0 1592 y Fp(This)29 +b(function)g(receiv)m(es)i(an)f(argumen)m(t)h(of)f(an)m(y)h(t)m(yp)s(e) +g(and)e(con)m(v)m(erts)j(it)e(to)h(a)g(string)e(in)g(a)i(reasonable)f +(format.)0 1832 y Fk(\017)35 b Fn(print)47 b(\(e1,)f(e2,)h(...\))0 +2004 y Fp(This)35 b(function)g(receiv)m(es)i(an)m(y)f(n)m(um)m(b)s(er)f +(of)i(argumen)m(ts,)h(and)e(prin)m(ts)f(their)g(v)-5 +b(alues)36 b(in)f(a)h(reasonable)g(format.)0 2117 y(Eac)m(h)i(v)-5 +b(alue)37 b(is)f(prin)m(ted)g(in)h(a)g(new)g(line.)61 +b(This)35 b(function)h(is)h(not)g(in)m(tended)g(for)g(formatted)h +(output,)h(but)e(as)0 2230 y(a)j(quic)m(k)e(w)m(a)m(y)j(to)f(sho)m(w)f +(a)g(v)-5 b(alue,)42 b(for)d(instance)g(for)g(error)f(messages)j(or)e +(debugging.)66 b(See)40 b(Section)f(6.4)h(for)0 2343 +y(functions)29 b(for)h(formatted)h(output.)0 2583 y Fk(\017)k +Fn(tonumber)46 b(\(e\))0 2754 y Fp(This)19 b(function)g(receiv)m(es)j +(one)f(argumen)m(t,)i(and)e(tries)f(to)h(con)m(v)m(ert)i(it)d(to)h(a)h +(n)m(um)m(b)s(er.)36 b(If)20 b(the)h(argumen)m(t)g(is)f(already)h(a)0 +2867 y(n)m(um)m(b)s(er)g(or)h(a)g(string)f(con)m(v)m(ertible)h(to)h(a)f +(n)m(um)m(b)s(er)f(\(see)i(Section)f(4.2\),)j(then)d(it)f(returns)g +(that)i(n)m(um)m(b)s(er;)g(otherwise,)0 2980 y(it)30 +b(returns)f Fm(nil)p Fp(.)0 3220 y Fk(\017)35 b Fn(type)47 +b(\(v\))0 3392 y Fp(This)25 b(function)g(allo)m(ws)h(Lua)g(to)i(test)f +(the)g(t)m(yp)s(e)g(of)f(a)h(v)-5 b(alue.)39 b(It)27 +b(receiv)m(es)g(one)g(argumen)m(t,)h(and)e(returns)g(its)g(t)m(yp)s(e,) +0 3505 y(co)s(ded)38 b(as)h(a)g(string.)65 b(The)38 b(p)s(ossible)e +(results)h(of)i(this)f(function)f(are)i Fn("nil")e Fp(\(a)j(string,)f +(not)g(the)g(v)-5 b(alue)38 b Fm(nil)p Fp(\),)0 3618 +y Fn("number")p Fp(,)h Fn("string")p Fp(,)g Fn("table")p +Fp(,)g Fn("function")d Fp(\(returned)i(b)s(oth)g(for)h(C)g(functions)e +(and)h(Lua)h(functions\),)0 3731 y(and)30 b Fn("userdata")p +Fp(.)141 3844 y(Besides)f(this)f(string,)g(the)i(function)d(returns)h +(a)i(second)f(result,)f(whic)m(h)g(is)g(the)i Fo(tag)f +Fp(of)g(the)h(v)-5 b(alue.)39 b(This)28 b(tag)0 3957 +y(can)g(b)s(e)e(used)h(to)h(distinguish)23 b(b)s(et)m(w)m(een)28 +b(user)f(data)h(with)d(di\013eren)m(t)i(tags,)i(and)e(b)s(et)m(w)m(een) +h(C)f(functions)f(and)g(Lua)0 4069 y(functions.)0 4310 +y Fk(\017)35 b Fn(assert)46 b(\(v\))0 4481 y Fp(This)29 +b(function)g(issues)g(an)h Fo(\\assertion)k(faile)-5 +b(d!")41 b Fp(error)30 b(when)f(its)h(argumen)m(t)h(is)e +Fm(nil)p Fp(.)0 4721 y Fk(\017)35 b Fn(error)47 b(\(message\))0 +4893 y Fp(This)41 b(function)h(issues)g(an)h(error)f(message)i(and)f +(terminates)g(the)g(last)g(called)f(function)g(from)g(the)h(library)0 +5006 y(\()p Fn(lua_dofile)p Fp(,)28 b Fn(lua_dostring)p +Fp(,)f(.)16 b(.)f(.)h(\).)41 b(It)30 b(nev)m(er)h(returns.)1905 +5589 y(16)p eop %%Page: 17 17 -17 16 bop -42 199 a Fo(\014rst)16 b(index)g(of)g(the)g(table)g(\(and)f -(its)h(asso)q(ciated)f(v)m(alue\).)22 b(When)17 b(called)e(with)h(the)g -(last)f(index,)h(or)f(with)h Fl(nil)f Fo(in)-42 256 y(an)h(empt)o(y)e -(table,)g(it)g(returns)h Fl(nil)p Fo(.)29 312 y(In)i(Lua)f(there)g(is)g -(no)g(declaration)f(of)h(\014elds;)g(seman)o(tically)l(,)d(there)j(is)g -(no)g(di\013erence)g(b)q(et)o(w)o(een)h(a)e(\014eld)i(not)-42 -369 y(presen)o(t)g(in)f(a)g(table)f(or)h(a)g(\014eld)h(with)e(v)m(alue) -i Fl(nil)p Fo(.)22 b(Therefore,)16 b(the)g(function)g(only)g(considers) -g(\014elds)h(with)e(non)-42 425 y(nil)g(v)m(alues.)20 -b(The)c(order)f(the)g(indices)g(are)g(en)o(umerated)f(is)h(not)g(sp)q -(eci\014ed,)h Fn(even)f(for)i(numeric)f(indic)n(es)p -Fo(.)29 482 y(See)g(Section)f(8.2)f(for)h(an)g(example)f(of)h(the)g -(use)h(of)e(this)h(function.)-42 602 y Fm(nextvar)23 -b(\(name\))-42 687 y Fo(This)18 b(function)g(is)g(similar)d(to)i(the)i -(function)f Fm(next)p Fo(,)f(but)i(it)e(iterates)g(o)o(v)o(er)g(the)h -(global)f(v)m(ariables.)28 b(Its)18 b(single)-42 744 -y(argumen)o(t)c(is)h(the)h(name)e(of)h(a)g(global)f(v)m(ariable,)g(or)h -Fl(nil)g Fo(to)g(get)g(a)g(\014rst)g(name.)k(Similarly)13 -b(to)h Fm(next)p Fo(,)h(it)g(returns)-42 800 y(the)j(name)e(of)g -(another)h(v)m(ariable)f(and)h(its)f(v)m(alue,)i(or)e -Fl(nil)g Fo(if)g(there)h(are)g(no)g(more)e(v)m(ariables.)25 -b(See)18 b(Section)e(8.2)-42 857 y(for)f(an)g(example)f(of)h(the)g(use) -h(of)f(this)f(function.)-42 977 y Fm(tostring)23 b(\(e\))-42 -1063 y Fo(This)15 b(function)g(receiv)o(es)g(an)g(argumen)o(t)f(of)h -(an)o(y)g(t)o(yp)q(e)g(and)g(con)o(v)o(erts)g(it)f(to)h(a)f(string)h -(in)g(a)g(reasonable)f(format.)-42 1183 y Fm(print)24 -b(\(e1,)f(e2,)g(...\))-42 1269 y Fo(This)18 b(function)g(receiv)o(es)g -(an)o(y)g(n)o(um)o(b)q(er)g(of)f(argumen)o(ts,)g(and)h(prin)o(ts)g -(their)f(v)m(alues)i(in)f(a)g(reasonable)f(format.)-42 -1325 y(Eac)o(h)i(v)m(alue)g(is)f(prin)o(ted)h(in)f(a)h(new)g(line.)30 -b(This)18 b(function)h(is)f(not)g(in)o(tended)h(for)f(formatted)f -(output,)i(but)g(as)-42 1381 y(a)h(quic)o(k)f(w)o(a)o(y)g(to)g(sho)o(w) -g(a)g(v)m(alue,)i(for)e(instance)g(for)g(error)g(messages)f(or)h -(debugging.)34 b(See)20 b(Section)f(6.4)g(for)-42 1438 -y(functions)c(for)g(formatted)e(output.)-42 1558 y Fm(tonumber)23 -b(\(e\))-42 1644 y Fo(This)13 b(function)f(receiv)o(es)g(one)h(argumen) -o(t,)e(and)h(tries)g(to)g(con)o(v)o(ert)f(it)h(to)g(a)g(n)o(um)o(b)q -(er.)18 b(If)13 b(the)g(argumen)o(t)d(is)i(already)-42 -1700 y(a)j(n)o(um)o(b)q(er)g(or)g(a)g(string)f(con)o(v)o(ertible)g(to)h -(a)g(n)o(um)o(b)q(er)f(\(see)h(Section)h(4.2\),)d(it)i(returns)g(that)f -(n)o(um)o(b)q(er;)h(otherwise,)-42 1757 y(it)g(returns)g -Fl(nil)p Fo(.)-42 1877 y Fm(type)24 b(\(v\))-42 1963 -y Fo(This)13 b(function)h(allo)o(ws)d(Lua)j(to)e(test)h(the)g(t)o(yp)q -(e)h(of)f(a)g(v)m(alue.)19 b(It)13 b(receiv)o(es)h(one)f(argumen)o(t,)f -(and)h(returns)g(its)g(t)o(yp)q(e,)-42 2019 y(co)q(ded)21 -b(as)e(a)g(string.)31 b(The)19 b(p)q(ossible)g(results)g(of)g(this)g -(function)g(are)g Fm("nil")g Fo(\(a)f(string,)h(not)g(the)h(v)m(alue)f -Fl(nil)p Fo(\),)-42 2075 y Fm("number")p Fo(,)g Fm("string")p -Fo(,)g Fm("table")p Fo(,)h Fm("function")e Fo(\(returned)h(b)q(oth)h -(for)f(C)g(functions)g(and)h(Lua)f(functions\),)-42 2132 -y(and)d Fm("userdata")p Fo(.)29 2188 y(Besides)f(this)f(string,)f(the)i -(function)f(returns)h(a)f(second)h(result,)f(whic)o(h)g(is)g(the)h -Fn(tag)g Fo(of)f(the)g(v)m(alue.)20 b(This)14 b(tag)-42 -2245 y(can)g(b)q(e)h(used)f(to)f(distinguish)g(b)q(et)o(w)o(een)g(user) -h(data)f(with)g(di\013eren)o(t)g(tags,)g(and)h(b)q(et)o(w)o(een)f(C)h -(functions)f(and)h(Lua)-42 2301 y(functions.)-42 2421 -y Fm(assert)24 b(\(v\))-42 2507 y Fo(This)15 b(function)g(issues)g(an)g -Fn(\\assertion)h(faile)n(d!")k Fo(error)15 b(when)h(its)e(argumen)o(t)f -(is)i Fl(nil)p Fo(.)911 2748 y(17)p eop +17 16 bop 0 91 a Fk(\017)35 b Fn(setglobal)46 b(\(name,)g(value\))0 +263 y Fp(This)35 b(function)h(assigns)f(the)i(giv)m(en)g(v)-5 +b(alue)37 b(to)g(a)g(global)f(v)-5 b(ariable.)59 b(The)37 +b(string)e Fn(name)h Fp(do)s(es)g(not)h(need)g(to)h(b)s(e)0 +376 y(a)33 b(syn)m(tactically)g(v)-5 b(alid)31 b(v)-5 +b(ariable)32 b(name.)48 b(Therefore,)33 b(this)f(function)g(can)h(set)g +(global)f(v)-5 b(ariables)32 b(with)f(strange)0 489 y(names)f(lik)m(e)g +Fn(`m)47 b(v)h(1')29 b Fp(or)i Fn(34)p Fp(.)40 b(It)30 +b(returns)f(the)i(v)-5 b(alue)30 b(of)g(its)g(second)h(argumen)m(t.)0 +729 y Fk(\017)k Fn(getglobal)46 b(\(name\))0 901 y Fp(This)41 +b(function)g(retriev)m(es)i(the)g(v)-5 b(alue)42 b(of)g(a)h(global)f(v) +-5 b(ariable.)76 b(The)42 b(string)g Fn(name)f Fp(do)s(es)h(not)h(need) +f(to)i(b)s(e)e(a)0 1013 y(syn)m(tactically)30 b(v)-5 +b(alid)29 b(v)-5 b(ariable)29 b(name.)0 1254 y Fk(\017)35 +b Fn(setfallback)45 b(\(fallbackname,)f(newfallback\))0 +1425 y Fp(This)23 b(function)h(sets)i(a)f(new)g(fallbac)m(k)g(function) +f(to)h(the)h(giv)m(en)f(fallbac)m(k.)38 b(It)26 b(returns)e(the)h(old)f +(fallbac)m(k)h(function.)0 1669 y Ff(6.2)112 b(String)37 +b(Manipulation)0 1840 y Fp(This)26 b(library)f(pro)m(vides)h(generic)i +(functions)e(for)h(string)f(manipulation,)g(suc)m(h)h(as)h(\014nding)d +(and)i(extracting)h(sub-)0 1953 y(strings)40 b(and)g(pattern)h(matc)m +(hing.)72 b(When)41 b(indexing)d(a)j(string,)i(the)e(\014rst)f(c)m +(haracter)j(has)d(p)s(osition)f(1.)73 b(See)0 2066 y(P)m(age)30 +b(19)f(for)g(an)f(explanation)f(ab)s(out)i(patterns,)g(and)e(Section)i +(8.3)g(for)f(some)h(examples)f(on)h(string)e(manipula-)0 +2179 y(tion)j(in)f(Lua.)0 2419 y Fk(\017)35 b Fn(strfind)46 +b(\(str,)g(pattern)g([,)h(init)g([,)g(plain]]\))0 2591 +y Fp(This)35 b(function)g(lo)s(oks)h(for)g(the)h(\014rst)e +Fo(match)j Fp(of)f Fn(pattern)d Fp(in)i Fn(str)p Fp(.)58 +b(If)36 b(it)g(\014nds)f(one,)j(it)e(returns)f(the)i(indexes)0 +2704 y(on)j Fn(str)f Fp(where)g(this)g(o)s(ccurence)i(starts)f(and)f +(ends;)45 b(otherwise,)d(it)d(returns)g Fm(nil)p Fp(.)70 +b(If)39 b(the)h(pattern)g(sp)s(eci\014es)0 2817 y(captures,)32 +b(the)f(captured)h(strings)e(are)i(returned)e(as)h(extra)h(results.)43 +b(A)31 b(third)f(optional)h(n)m(umerical)e(argumen)m(t)0 +2929 y(sp)s(eci\014es)f(where)g(to)i(start)f(the)g(searc)m(h;)h(its)f +(default)f(v)-5 b(alue)28 b(is)g(1.)41 b(A)29 b(v)-5 +b(alue)28 b(of)h(1)g(as)h(a)f(forth)f(optional)g(argumen)m(t)0 +3042 y(turns)h(o\013)i(the)f(pattern)h(matc)m(hing)f(facilities,)f(so)i +(the)f(function)f(do)s(es)i(a)f(plain)f(\\\014nd)g(substring")g(op)s +(eration.)0 3282 y Fk(\017)35 b Fn(strlen)46 b(\(s\))0 +3454 y Fp(Receiv)m(es)31 b(a)g(string)e(and)h(returns)f(its)h(length.)0 +3694 y Fk(\017)35 b Fn(strsub)46 b(\(s,)h(i)h([,)f(j]\))0 +3866 y Fp(Returns)32 b(another)g(string,)h(whic)m(h)e(is)g(a)i +(substring)e(of)h Fn(s)p Fp(,)h(starting)f(at)i Fn(i)e +Fp(and)g(runing)e(un)m(til)h Fn(j)p Fp(.)46 b(If)32 b +Fn(j)h Fp(is)e(absen)m(t,)0 3979 y(it)d(is)g(assumed)f(to)j(b)s(e)e +(equal)g(to)h(the)g(length)f(of)g Fn(s)p Fp(.)40 b(In)28 +b(particular,)f(the)i(call)f Fn(strsub\(s,1,j\))d Fp(returns)i(a)i +(pre\014x)0 4092 y(of)i Fn(s)f Fp(with)f(length)g Fn(j)p +Fp(,)i(whereas)f(the)g(call)g Fn(strsub\(s,i\))d Fp(returns)j(a)g +(su\016x)g(of)g Fn(s)p Fp(,)h(starting)f(at)h Fn(i)p +Fp(.)0 4332 y Fk(\017)k Fn(strlower)46 b(\(s\))0 4503 +y Fp(Receiv)m(es)26 b(a)g(string)f(and)g(returns)f(a)i(cop)m(y)g(of)f +(that)h(string)f(with)f(all)g(upp)s(er)g(case)i(letters)g(c)m(hanged)g +(to)g(lo)m(w)m(er)g(case.)0 4616 y(All)j(other)i(c)m(haracters)g(are)g +(left)f(unc)m(hanged.)0 4856 y Fk(\017)35 b Fn(strupper)46 +b(\(s\))0 5028 y Fp(Receiv)m(es)26 b(a)g(string)f(and)g(returns)f(a)i +(cop)m(y)g(of)f(that)h(string)f(with)f(all)g(lo)m(w)m(er)i(case)g +(letters)g(c)m(hanged)g(to)g(upp)s(er)e(case.)0 5141 +y(All)29 b(other)i(c)m(haracters)g(are)g(left)f(unc)m(hanged.)1905 +5589 y(17)p eop %%Page: 18 18 -18 17 bop -42 199 a Fm(error)24 b(\(message\))-42 285 -y Fo(This)e(function)f(issues)g(an)h(error)f(message)f(and)h -(terminates)f(the)h(last)g(called)g(function)g(from)f(the)i(library)-42 -342 y(\()p Fm(lua_dofile)p Fo(,)14 b Fm(lua_dostring)p -Fo(,)f(.)7 b(.)g(.)g(\).)20 b(It)15 b(nev)o(er)g(returns.)-42 -462 y Fm(setglobal)23 b(\(name,)g(value\))-42 547 y Fo(This)18 -b(function)h(assigns)e(the)i(giv)o(en)f(v)m(alue)g(to)g(a)g(global)f(v) -m(ariable.)29 b(The)19 b(string)e Fm(name)h Fo(do)q(es)h(not)f(need)h -(to)f(b)q(e)-42 604 y(a)f(syn)o(tactically)d(v)m(alid)i(v)m(ariable)g -(name.)22 b(Therefore,)17 b(this)f(function)g(can)g(set)h(global)e(v)m -(ariables)g(with)h(strange)-42 660 y(names)f(lik)o(e)f -Fm(m)24 b(v)f(1)15 b Fo(or)g Fm(34)p Fo(.)20 b(It)15 -b(returns)g(the)g(v)m(alue)h(of)e(its)h(second)h(argumen)o(t.)-42 -780 y Fm(getglobal)23 b(\(name\))-42 866 y Fo(This)e(function)g -(retriev)o(es)g(the)g(v)m(alue)h(of)f(a)g(global)f(v)m(ariable.)37 -b(The)22 b(string)e Fm(name)h Fo(do)q(es)g(not)g(need)h(to)f(b)q(e)h(a) --42 923 y(syn)o(tactically)14 b(v)m(alid)g(v)m(ariable)h(name.)-42 -1043 y Fm(setfallback)23 b(\(fallbackname,)f(newfallback\))-42 -1128 y Fo(This)13 b(function)f(sets)g(a)h(new)f(fallbac)o(k)g(function) -g(to)g(the)h(giv)o(en)f(fallbac)o(k.)18 b(It)12 b(returns)h(the)g(old)f -(fallbac)o(k)f(function.)-42 1250 y Fe(6.2)56 b(String)19 -b(Manipulation)-42 1336 y Fo(This)j(library)e(pro)o(vides)i(generic)f -(functions)h(for)f(string)g(manipulation,)f(suc)o(h)i(as)g(\014nding)g -(and)g(extracting)-42 1392 y(substrings.)29 b(When)19 -b(indexing)f(a)g(string,)f(the)i(\014rst)f(c)o(haracter)f(has)h(p)q -(osition)g(1.)29 b(See)19 b(Section)f(8.3)f(for)h(some)-42 -1449 y(examples)c(on)i(string)e(manipulation)f(in)i(Lua.)-42 -1569 y Fm(strfind)23 b(\(str,)h(substr,)e([init,)i([end]]\))-42 -1655 y Fo(Receiv)o(es)c(t)o(w)o(o)e(string)h(argumen)o(ts,)f(and)h -(returns)g(a)g(n)o(um)o(b)q(er.)32 b(This)19 b(n)o(um)o(b)q(er)f -(indicates)h(the)g(\014rst)g(p)q(osition)-42 1711 y(where)13 -b(the)f(second)h(argumen)o(t)e(app)q(ears)h(in)g(the)g(\014rst)g -(argumen)o(t.)17 b(If)c(the)f(second)h(argumen)o(t)d(is)i(not)g(a)g -(substring)-42 1768 y(of)j(the)g(\014rst)g(one,)f(then)i -Fm(strfind)e Fo(returns)h Fl(nil)p Fo(.)j(A)e(third)e(optional)g(n)o -(umerical)f(argumen)o(t)g(sp)q(eci\014es)j(where)f(to)-42 -1824 y(start)f(the)i(searc)o(h.)j(Another)d(optional)d(n)o(umerical)h -(argumen)o(t)f(sp)q(eci\014es)j(where)g(to)e(stop)h(it.)-42 -1944 y Fm(strlen)24 b(\(s\))-42 2030 y Fo(Receiv)o(es)16 -b(a)f(string)f(and)i(returns)f(its)f(length.)-42 2150 -y Fm(strsub)24 b(\(s,)f(i,)h([j]\))-42 2236 y Fo(Returns)17 -b(another)f(string,)f(whic)o(h)h(is)g(a)g(substring)g(of)g -Fm(s)p Fo(,)g(starting)e(at)i Fm(i)g Fo(and)g(runing)g(un)o(til)g -Fm(j)p Fo(.)23 b(If)16 b Fm(j)g Fo(is)g(absen)o(t,)-42 -2292 y(it)f(is)g(assumed)g(to)f(b)q(e)i(equal)g(to)e(the)i(length)f(of) -g Fm(s)p Fo(.)20 b(P)o(articularly)l(,)13 b(the)j(call)e -Fm(strsub\(s,1,j\))g Fo(returns)h(a)g(pre\014x)-42 2349 -y(of)g Fm(s)g Fo(with)g(length)g Fm(j)p Fo(,)f(while)h(the)g(call)g -Fm(strsub\(s,i\))e Fo(returns)i(a)g(su\016x)g(of)g Fm(s)p -Fo(,)g(starting)e(at)i Fm(i)p Fo(.)-42 2469 y Fm(strlower)23 -b(\(s\))-42 2555 y Fo(Receiv)o(es)14 b(a)e(string)g(and)h(returns)f(a)h -(cop)o(y)f(of)h(that)f(string)f(with)h(all)g(upp)q(er)i(case)f(letters) -e(c)o(hanged)i(to)f(lo)o(w)o(er)g(case.)-42 2611 y(All)j(other)g(c)o -(haracters)f(are)h(left)g(unc)o(hanged.)911 2748 y(18)p -eop +18 17 bop 0 91 a Fk(\017)35 b Fn(strrep)46 b(\(s,)h(n\))0 +263 y Fp(Returns)29 b(a)i(string)f(whic)m(h)f(is)g(the)i(concatenation) +g(of)g Fn(n)f Fp(copies)g(of)h(the)f(string)g Fn(s)p +Fp(.)0 503 y Fk(\017)35 b Fn(ascii)47 b(\(s)g([,)g(i]\))0 +675 y Fp(Returns)29 b(the)i(ascii)f(co)s(de)g(of)h(the)f(c)m(haracter)i +Fn(s[i])p Fp(.)40 b(If)30 b Fn(i)g Fp(is)f(absen)m(t,)i(then)f(it)g(is) +g(assumed)f(to)i(b)s(e)f(1.)0 915 y Fk(\017)35 b Fn(format)46 +b(\(formatstring,)e(e1,)j(e2,)g(...\))0 1086 y Fp(This)25 +b(function)h(returns)g(a)h(formated)g(v)m(ersion)g(of)g(its)f(v)-5 +b(ariable)26 b(n)m(um)m(b)s(er)g(of)h(argumen)m(ts)g(follo)m(wing)f +(the)h(descrip-)0 1199 y(tion)i(giv)m(en)h(in)e(its)h(\014rst)g +(argumen)m(t)h(\(whic)m(h)f(m)m(ust)g(b)s(e)g(a)h(string\).)40 +b(The)29 b(format)h(string)f(follo)m(ws)g(the)g(same)h(rules)0 +1312 y(as)h(the)f Fn(printf)f Fp(family)g(of)h(standard)g(C)g +(functions.)40 b(The)30 b(only)f(di\013erences)h(are)h(that)g(the)f +(options/mo)s(di\014ers)0 1425 y Fn(*)p Fp(,)42 b Fn(l)p +Fp(,)f Fn(L)p Fp(,)e Fn(n)p Fp(,)j Fn(p)p Fp(,)f(and)e +Fn(h)g Fp(are)h(not)g(supp)s(orted,)g(and)e(there)i(is)e(an)i(extra)g +(option,)h Fn(q)p Fp(.)68 b(This)37 b(option)i(formats)h(a)0 +1538 y(string)27 b(in)f(a)i(form)g(suitable)e(to)i(b)s(e)g(safely)f +(read)h(bac)m(k)g(b)m(y)g(the)g(Lua)f(in)m(terpreter;)h(that)h(is,)e +(the)h(string)f(is)g(written)0 1651 y(b)s(et)m(w)m(een)34 +b(double)e(quotes,)j(and)e(all)g(double)f(quotes,)j(returns)d(and)h +(bac)m(kslashes)h(in)e(the)i(string)f(are)h(correctly)0 +1764 y(escap)s(ed)c(when)g(written.)40 b(F)-8 b(or)31 +b(instance,)f(the)h(call)0 1952 y Fn(format\('\045q',)44 +b('a)k(string)e(with)g("quotes")g(and)h(\\n)g(new)g(line'\))0 +2139 y Fp(will)28 b(pro)s(duce)h(the)h(string:)0 2327 +y Fn("a)47 b(string)f(with)h(\\"quotes\\")e(and)i(\\)48 +2440 y(new)g(line")141 2627 y Fp(The)29 b(options)g Fn(c)p +Fp(,)g Fn(d)p Fp(,)h Fn(E)p Fp(,)f Fn(e)p Fp(,)h Fn(f)p +Fp(,)f Fn(g)g(i)p Fp(,)h Fn(o)p Fp(,)f Fn(u)p Fp(,)h +Fn(X)p Fp(,)f(and)g Fn(x)g Fp(all)f(exp)s(ect)i(a)g(n)m(um)m(b)s(er)e +(as)i(argumen)m(t,)g(whereas)f Fn(q)g Fp(and)g Fn(s)0 +2740 y Fp(exp)s(ect)i(a)g(string.)0 2980 y Fk(\017)k +Fn(gsub)47 b(\(s,)g(pat,)f(repl)h([,)g(n]\))0 3152 y +Fp(Returns)37 b(a)h(cop)m(y)h(of)f Fn(s)p Fp(,)i(where)e(all)f(o)s +(ccurrences)h(of)g(the)g(pattern)g Fn(pat)f Fp(ha)m(v)m(e)j(b)s(een)d +(replaced)g(b)m(y)h(a)h(replace-)0 3265 y(men)m(t)34 +b(string)e(sp)s(eci\014ed)g(b)m(y)i Fn(repl)p Fp(.)49 +b(This)31 b(function)i(also)g(returns,)g(as)h(a)g(second)g(v)-5 +b(alue,)34 b(the)f(total)i(n)m(um)m(b)s(er)d(of)0 3378 +y(substitutions)c(made.)141 3491 y(If)h Fn(repl)f Fp(is)g(a)h(string,)g +(its)f(v)-5 b(alue)29 b(is)f(used)g(for)h(replacemen)m(t.)41 +b(An)m(y)29 b(sequence)h(in)e Fn(repl)g Fp(of)h(the)g(form)g +Fn(\045n)f Fp(with)0 3604 y Fn(n)i Fp(b)s(et)m(w)m(een)h(1)g(and)f(9)g +(stands)g(for)g(the)h(v)-5 b(alue)30 b(of)g(the)h(n-th)f(captured)g +(substring.)141 3717 y(If)44 b Fn(repl)f Fp(is)g(a)i(function,)i(this)c +(function)g(is)g(called)h(ev)m(ery)h(time)f(a)g(matc)m(h)h(o)s(ccurs,)j +(with)43 b(all)g(captured)0 3829 y(substrings)f(as)i(parameters.)82 +b(If)43 b(the)h(v)-5 b(alue)44 b(returned)f(b)m(y)g(this)g(function)g +(is)g(a)h(string,)j(it)c(is)g(used)h(as)g(the)0 3942 +y(replacemen)m(t)31 b(string;)e(otherwise,)h(the)h(replacemen)m(t)g +(string)e(is)h(the)g(empt)m(y)h(string.)141 4055 y(An)h(optional)g +(parameter)g Fn(n)g Fp(limits)e(the)j(maxim)m(um)e(n)m(um)m(b)s(er)g +(of)i(substitutions)c(to)34 b(o)s(ccur.)46 b(F)-8 b(or)33 +b(instance,)0 4168 y(when)c Fn(n)h Fp(is)g(1)h(only)e(the)i(\014rst)e +(o)s(ccurrence)i(of)f Fn(pat)g Fp(is)f(replaced.)141 +4281 y(As)24 b(an)f(example,)i(in)d(the)i(follo)m(wing)e(expression)g +(eac)m(h)j(o)s(ccurrence)f(of)f(the)h(form)f Fn($name$)f +Fp(calls)h(the)g(function)0 4394 y Fn(getenv)p Fp(,)32 +b(passing)f Fn(name)g Fp(as)i(argumen)m(t)g(\(b)s(ecause)g(only)f(this) +f(part)i(of)f(the)h(pattern)g(is)e(captured\).)47 b(The)32 +b(v)-5 b(alue)0 4507 y(returned)29 b(b)m(y)h Fn(getenv)f +Fp(will)f(replace)i(the)h(pattern.)41 b(Therefore,)30 +b(the)h(whole)e(expression:)95 4695 y Fn(gsub\("home)45 +b(=)j($HOME$,)e(user)g(=)i($USER$",)d("$\(\045w\045w*\)$",)g(getenv\))0 +4882 y Fp(ma)m(y)31 b(return)e(the)i(string:)0 5070 y +Fn(home)47 b(=)g(/home/roberto,)d(user)j(=)g(roberto)1905 +5589 y Fp(18)p eop %%Page: 19 19 -19 18 bop -42 199 a Fm(strupper)23 b(\(s\))-42 285 y -Fo(Receiv)o(es)14 b(a)e(string)g(and)h(returns)f(a)h(cop)o(y)f(of)h -(that)f(string)f(with)h(all)g(lo)o(w)o(er)f(case)i(letters)f(c)o -(hanged)h(to)f(upp)q(er)i(case.)-42 342 y(All)h(other)g(c)o(haracters)f -(are)h(left)g(unc)o(hanged.)-42 462 y Fm(ascii)24 b(\(s,)f([i]\))-42 -547 y Fo(Returns)16 b(the)f(ascii)g(co)q(de)h(of)e(the)i(c)o(haracter)e -Fm(s[i])p Fo(.)19 b(If)d Fm(i)f Fo(is)g(absen)o(t,)f(it)h(is)f(assumed) -h(to)f(b)q(e)i(1.)-42 667 y Fm(format)24 b(\(formatstring,)d(e1,)j(e2,) -f(...\))-42 753 y Fo(This)14 b(function)f(returns)g(a)h(formated)d(v)o -(ersion)i(of)g(its)g(v)m(ariable)g(n)o(um)o(b)q(er)f(of)i(argumen)o(ts) -d(follo)o(wing)g(the)j(descrip-)-42 810 y(tion)h(giv)o(en)f(in)h(its)f -(\014rst)g(argumen)o(t)f(\(whic)o(h)h(m)o(ust)g(b)q(e)h(a)g(string\).)j -(The)d(format)e(string)g(follo)o(ws)g(the)i(same)f(rules)-42 -866 y(as)g(the)h Fm(printf)e Fo(family)f(of)i(standard)g(C)g -(functions.)19 b(The)c(only)f(di\013erencies)g(are)g(that)f(the)i -(options/mo)q(di\014ers)-42 923 y Fm(*)p Fo(,)f Fm(l)p -Fo(,)g Fm(L)p Fo(,)f Fm(n)p Fo(,)h Fm(p)p Fo(,)g(and)g -Fm(h)g Fo(are)f(not)h(supp)q(orted,)g(and)g(there)g(is)g(an)g(extra)f -(option,)g Fm(q)p Fo(.)19 b(This)14 b(option)f(formats)f(a)h(string)-42 -979 y(in)19 b(a)f(form)f(suitable)h(to)g(b)q(e)i(safely)e(read)g(bac)o -(k)h(b)o(y)f(the)h(Lua)g(in)o(terpreter.)30 b(The)19 -b(string)e(is)h(written)g(b)q(et)o(w)o(een)-42 1036 y(double)g(quotes,) -f(and)h(all)e(double)i(quotes,)f(returns)g(and)g(bac)o(kslashes)g(in)g -(the)h(string)e(are)h(correctly)f(escap)q(ed)-42 1092 -y(when)g(written.)29 1148 y(The)k(options)e Fm(c)p Fo(,)i -Fm(d)p Fo(,)g Fm(E)p Fo(,)e Fm(e)p Fo(,)i Fm(f)p Fo(,)g -Fm(g)f(i)p Fo(,)h Fm(o)p Fo(,)g Fm(u)p Fo(,)g Fm(X)p -Fo(,)e(and)i Fm(x)f Fo(all)f(exp)q(ect)i(a)f(n)o(um)o(b)q(er)g(argumen) -o(t,)f(while)h Fm(q)g Fo(and)h Fm(s)-42 1205 y Fo(exp)q(ects)c(a)f -(string.)-42 1327 y Fe(6.3)56 b(Mathematical)20 b(F)-5 -b(unctions)-42 1412 y Fo(This)13 b(library)f(is)h(an)g(in)o(terface)f -(to)h(some)e(functions)i(of)g(the)g(standard)g(C)g(math)e(library)l(.) -19 b(Moreo)o(v)o(er,)11 b(it)i(registers)-42 1469 y(a)i(fallbac)o(k)f -(for)h(the)g(binary)g(op)q(erator)f Fm(^)h Fo(whic)o(h,)g(when)h -(applied)f(to)f(n)o(um)o(b)q(ers)h Fm(x^y)p Fo(,)f(returns)h -Fd(x)1619 1452 y Fc(y)1640 1469 y Fo(.)29 1525 y(The)g(library)f(pro)o -(vides)h(the)g(follo)o(wing)e(functions:)-42 1619 y Fm(abs)24 -b(acos)f(asin)h(atan)f(atan2)g(ceil)g(cos)h(floor)f(log)g(log10)-42 -1676 y(max)h(min)47 b(mod)h(sin)f(sqrt)23 b(tan)h(random)f(randomseed) --42 1769 y Fo(Most)17 b(of)g(them)g(are)g(only)g(in)o(terfaces)g(to)g -(the)g(homon)o(ymous)e(functions)j(in)f(the)h(C)f(library)l(,)g(except) -h(that,)f(for)-42 1826 y(the)f(trigonometri)o(c)d(functions,)h(all)h -(angles)f(are)h(expressed)h(in)f(degrees.)29 1882 y(The)d(function)f -Fm(max)g Fo(returns)g(the)g(maxim)o(um)d(v)m(alue)j(of)g(its)f(n)o -(umeric)h(argumen)o(ts.)16 b(Similarly)l(,)9 b Fm(min)i -Fo(computes)-42 1939 y(the)16 b(minim)o(um)o(.)h(Both)e(can)g(b)q(e)h -(used)g(with)e(an)h(unlimited)f(n)o(um)o(b)q(er)g(of)h(argumen)o(ts.)29 -1995 y(The)g(function)h Fm(mod)e Fo(is)h(equiv)m(alen)o(t)g(to)f(the)i -Fm(\045)f Fo(op)q(erator)f(in)h(C.)29 2052 y(The)f(functions)g -Fm(random)f Fo(and)h Fm(randomseed)f Fo(are)h(in)o(terfaces)f(to)g(the) -h(simple)f(random)g(generator)g(functions)-42 2108 y -Fm(rand)18 b Fo(and)h Fm(srand)p Fo(,)f(pro)o(vided)g(b)o(y)g(ANSI)h -(C.)f(The)h(function)f Fm(random)f Fo(returns)h(pseudo-random)g(n)o(um) -o(b)q(ers)g(in)-42 2165 y(the)e(range)f([0)p Fd(;)8 b -Fo(1\).)-42 2286 y Fe(6.4)56 b(I/O)19 b(F)-5 b(acilities)-42 -2372 y Fo(All)20 b(I/O)g(op)q(erations)f(in)h(Lua)g(are)f(done)i(o)o(v) -o(er)e(t)o(w)o(o)f Fn(curr)n(ent)i Fo(\014les,)g(one)g(for)g(reading)f -(and)h(one)g(for)f(writing.)-42 2429 y(Initially)l(,)14 -b(the)h(curren)o(t)g(input)h(\014le)f(is)g Fm(stdin)p -Fo(,)f(and)h(the)g(curren)o(t)g(output)g(\014le)h(is)e -Fm(stdout)p Fo(.)29 2485 y(Unless)h(otherwise)g(stated,)f(all)g(I/O)i -(functions)f(return)g(1)g(on)g(success)h(and)f Fl(nil)f -Fo(on)h(failure.)911 2748 y(19)p eop +19 18 bop 0 91 a Fm(P)m(atterns)0 263 y(Character)52 +b(Class:)90 b Fp(a)46 b Fo(char)-5 b(acter)49 b(class)d +Fp(is)e(used)h(to)h(represen)m(t)g(a)g(set)g(of)f(c)m(haracters.)88 +b(The)44 b(follo)m(wing)0 376 y(com)m(binations)30 b(are)g(allo)m(w)m +(ed)h(in)e(describing)f(a)i(c)m(haracter)i(class:)0 563 +y Fo(x)46 b Fp(\(where)30 b Fo(x)g Fp(is)g(an)m(y)g(c)m(haracter)i(not) +f(in)e(the)i(list)e Fn(\(\)\045.[*?)p Fp(\))f(|)j(represen)m(ts)f(the)h +(c)m(haracter)g Fo(x)g Fp(itself.)0 751 y Fn(.)45 b Fp(|)30 +b(represen)m(ts)h(all)e(c)m(haracters.)0 939 y Fn(\045a)45 +b Fp(|)30 b(represen)m(ts)g(all)g(letters.)0 1126 y Fn(\045A)45 +b Fp(|)30 b(represen)m(ts)g(all)g(non)f(letter)i(c)m(haracters.)0 +1314 y Fn(\045d)45 b Fp(|)30 b(represen)m(ts)g(all)g(digits.)0 +1502 y Fn(\045D)45 b Fp(|)30 b(represen)m(ts)g(all)g(non)f(digits.)0 +1689 y Fn(\045l)45 b Fp(|)30 b(represen)m(ts)g(all)g(lo)m(w)m(er)g +(case)i(letters.)0 1877 y Fn(\045L)45 b Fp(|)30 b(represen)m(ts)g(all)g +(non)f(lo)m(w)m(er)i(case)g(letter)g(c)m(haracters.)0 +2065 y Fn(\045s)45 b Fp(|)30 b(represen)m(ts)g(all)g(space)h(c)m +(haracters.)0 2252 y Fn(\045S)45 b Fp(|)30 b(represen)m(ts)g(all)g(non) +f(space)i(c)m(haracters.)0 2440 y Fn(\045u)45 b Fp(|)30 +b(represen)m(ts)g(all)g(upp)s(er)e(case)j(letters.)0 +2627 y Fn(\045U)45 b Fp(|)30 b(represen)m(ts)g(all)g(non)f(upp)s(er)g +(case)i(letter)g(c)m(haracters.)0 2815 y Fn(\045w)45 +b Fp(|)30 b(represen)m(ts)g(all)g(alphan)m(umeric)e(c)m(haracters.)0 +3003 y Fn(\045W)45 b Fp(|)30 b(represen)m(ts)g(all)g(non)f(alphan)m +(umeric)g(c)m(haracters.)0 3190 y Fn(\045)p Fo(x)45 b +Fp(\(where)31 b Fo(x)f Fp(is)f(an)m(y)i(non)f(alphan)m(umeric)e(c)m +(haracter\))33 b(|)d(represen)m(ts)g(the)h(c)m(haracter)h +Fo(x)p Fp(.)0 3378 y Fn([char-set])43 b Fp(|)27 b(Represen)m(ts)g(the)g +(class)g(whic)m(h)f(is)g(the)h(union)f(of)h(all)f(c)m(haracters)j(in)c +(c)m(har-set.)41 b(T)-8 b(o)28 b(include)d(a)i Fn(])227 +3491 y Fp(in)21 b(c)m(har-set,)26 b(it)21 b(m)m(ust)i(b)s(e)e(the)i +(\014rst)e(c)m(haracter.)40 b(A)22 b(range)h(of)f(c)m(haracters)i(ma)m +(y)f(b)s(e)e(sp)s(eci\014ed)g(b)m(y)h(separating)227 +3604 y(the)35 b(end)f(c)m(haracters)i(of)f(the)g(range)g(with)e(a)i +Fn(-)p Fp(;)i(e.g.,)g Fn(A-Z)d Fp(sp)s(eci\014es)f(the)i(upp)s(er)d +(case)k(c)m(haracters.)55 b(If)34 b Fn(-)227 3717 y Fp(app)s(ears)43 +b(as)g(the)g(\014rst)g(or)g(last)g(c)m(haracter)h(of)f(c)m(har-set,)48 +b(then)43 b(it)g(represen)m(ts)g(itself.)77 b(All)42 +b(classes)h Fn(\045)p Fo(x)227 3830 y Fp(describ)s(ed)31 +b(ab)s(o)m(v)m(e)i(can)g(also)g(b)s(e)f(used)f(as)i(comp)s(onen)m(ts)g +(in)e(a)i(c)m(har-set.)48 b(All)31 b(other)i(c)m(haracters)h(in)d(c)m +(har-)227 3942 y(set)g(represen)m(t)g(themselv)m(es.)0 +4130 y Fn([^char-set])42 b Fp(|)31 b(represen)m(ts)f(the)h(complemen)m +(t)f(of)h(c)m(har-set,)h(where)d(c)m(har-set)j(is)e(in)m(terpreted)f +(as)i(ab)s(o)m(v)m(e.)0 4370 y Fm(P)m(attern)39 b(Item:)89 +b Fp(a)35 b Fo(p)-5 b(attern)38 b(item)c Fp(ma)m(y)h(b)s(e)e(a)i +(single)e(c)m(haracter)j(class,)f(or)f(a)h(c)m(haracter)g(class)f +(follo)m(w)m(ed)g(b)m(y)0 4483 y Fn(*)j Fp(or)g(b)m(y)h +Fn(?)p Fp(.)61 b(A)37 b(single)f(c)m(haracter)j(class)f(matc)m(hes)g +(an)m(y)g(single)e(c)m(haracter)j(in)d(the)h(class.)62 +b(A)37 b(c)m(haracter)i(class)0 4596 y(follo)m(w)m(ed)33 +b(b)m(y)g Fn(*)f Fp(matc)m(hes)j(0)e(or)g(more)h(rep)s(etitions)d(of)i +(c)m(haracters)i(in)d(the)h(class.)49 b(A)33 b(c)m(haracter)h(class)f +(follo)m(w)m(ed)0 4709 y(b)m(y)27 b Fn(?)g Fp(matc)m(hes)h(0)g(or)f +(one)h(o)s(ccurrence)f(of)g(a)h(c)m(haracter)h(in)d(the)h(class.)40 +b(A)27 b(pattern)g(item)g(ma)m(y)h(also)f(has)g(the)g(form)0 +4822 y Fn(\045n)p Fp(,)j(for)g Fn(n)g Fp(b)s(et)m(w)m(een)h(1)g(and)f +(9;)h(suc)m(h)f(item)g(matc)m(hes)h(a)g(sub-string)e(equal)h(to)h(the)f +(n-th)g(captured)g(string.)1905 5589 y(19)p eop %%Page: 20 20 -20 19 bop -42 199 a Fm(readfrom)23 b(\(filename\))-42 -285 y Fo(This)e(function)g(op)q(ens)g(a)g(\014le)g(named)f -Fm(filename)g Fo(and)h(sets)g(it)f(as)h(the)g Fn(curr)n(ent)f -Fo(input)h(\014le.)38 b(When)21 b(called)-42 342 y(without)c -(parameters,)e(this)i(function)g(closes)f(the)i(curren)o(t)f(input)g -(\014le,)g(and)h(restores)e Fm(stdin)h Fo(as)f(the)i(curren)o(t)-42 -398 y(input)e(\014le.)29 454 y Fn(System)f(dep)n(endent:)k -Fo(if)13 b Fm(filename)h Fo(starts)e(with)i(a)g Fm(|)p -Fo(,)g(then)g(a)g(pip)q(ed)h(input)g(is)e(op)q(en,)i(via)e(function)i -Fm(popen)p Fo(.)-42 574 y Fm(writeto)23 b(\(filename\))-42 -660 y Fo(This)d(function)g(op)q(ens)g(a)f(\014le)h(named)f -Fm(filename)g Fo(and)h(sets)g(it)f(as)g(the)h Fn(curr)n(ent)g -Fo(output)f(\014le.)34 b(Notice)20 b(that,)-42 717 y(if)g(the)g(\014le) -f(already)h(exists,)f(it)h(will)e(b)q(e)i Fn(c)n(ompletely)g(er)n(ase)n -(d)g Fo(with)f(this)g(op)q(eration.)33 b(When)20 b(called)f(without)-42 -773 y(parameters,)13 b(this)i(function)g(closes)f(the)h(curren)o(t)g -(output)g(\014le,)g(and)g(restores)f Fm(stdout)g Fo(as)h(the)g(curren)o -(t)g(output)-42 829 y(\014le.)29 886 y Fn(System)e(dep)n(endent:)18 -b Fo(if)12 b Fm(filename)f Fo(starts)g(with)h(a)g Fm(|)p -Fo(,)g(then)h(a)f(pip)q(ed)h(output)g(is)e(op)q(en,)j(via)d(function)i -Fm(popen)p Fo(.)-42 1006 y Fm(appendto)23 b(\(filename\))-42 -1091 y Fo(This)11 b(function)g(op)q(ens)h(a)f(\014le)g(named)f -Fm(filename)g Fo(and)i(sets)f(it)f(as)h(the)g Fn(curr)n(ent)g -Fo(output)g(\014le.)19 b(Unlik)o(e)10 b(the)h Fm(writeto)-42 -1148 y Fo(op)q(eration,)k(this)f(function)h(do)q(es)h(not)f(erase)g(an) -o(y)f(previous)h(con)o(ten)o(t)g(of)g(the)g(\014le.)-42 -1268 y Fm(remove)24 b(\(filename\))-42 1354 y Fo(This)15 -b(function)g(deletes)h(the)f(\014le)g(with)g(the)g(giv)o(en)g(name.)-42 -1473 y Fm(rename)24 b(\(name1,)e(name2\))-42 1559 y Fo(This)15 -b(function)g(renames)f(\014le)i Fm(name1)e Fo(to)h Fm(name2)p -Fo(.)-42 1679 y Fm(tmpname)23 b(\(\))-42 1765 y Fo(This)15 -b(function)g(returns)g(a)g(string)f(with)h(a)g(\014le)g(name)f(that)h -(can)g(safely)g(b)q(e)g(used)h(for)f(a)g(temp)q(orary)e(\014le.)-42 -1885 y Fm(read)24 b(\([format]\))-42 1970 y Fo(This)17 -b(function)g(returns)f(a)h(v)m(alue)g(read)g(from)e(the)i(curren)o(t)g -(input.)25 b(An)17 b(optional)f(string)g(argumen)o(t)f(sp)q(eci\014es) --42 2027 y(the)h(w)o(a)o(y)e(the)h(input)g(is)g(in)o(terpreted.)29 -2083 y(Without)d(a)h(format)d(argumen)o(t,)h Fm(read)i -Fo(\014rst)f(skips)h(blanks,)g(tabs)f(and)h(newlines.)19 -b(Then)14 b(it)e(c)o(hec)o(ks)h(whether)-42 2140 y(the)h(curren)o(t)f -(c)o(haracter)f(is)h Fm(")g Fo(or)f Fm(')p Fo(.)19 b(If)14 -b(so,)e(it)h(reads)g(a)f(string)g(up)i(to)f(the)g(ending)g(quotation)f -(mark,)f(and)j(returns)-42 2196 y(this)h(string,)f(without)g(the)h -(quotation)f(marks.)k(Otherwise)d(it)g(reads)g(up)h(to)e(a)h(blank,)g -(tab)f(or)h(newline.)29 2253 y(The)g(format)e(string)i(can)g(ha)o(v)o -(e)g(the)g(follo)o(wing)e(format:)30 2345 y Fm(?[n])-42 -2438 y Fo(where)j Fm(?)f Fo(can)g(b)q(e:)-42 2530 y Fl('s')i(or)g('S')k -Fo(to)15 b(read)g(a)g(string;)-42 2623 y Fl('f)5 b(')17 -b(or)g('F')22 b Fo(to)14 b(read)h(a)g(real)g(n)o(um)o(b)q(er;)911 -2748 y(20)p eop +20 19 bop 0 91 a Fm(P)m(attern:)91 b Fp(a)32 b Fo(p)-5 +b(attern)34 b Fp(is)d(a)i(sequence)f(of)g(pattern)h(items.)45 +b(An)m(y)32 b(rep)s(etition)f(item)h(\()p Fn(*)p Fp(\))g(inside)e(a)i +(pattern)h(will)0 204 y(alw)m(a)m(ys)f(matc)m(h)g(the)g(longest)f(p)s +(ossible)e(sequence.)44 b(A)32 b Fn(^)f Fp(at)h(the)f(b)s(eginning)e +(of)j(a)f(pattern)h(anc)m(hors)f(the)h(matc)m(h)0 317 +y(at)i(the)f(b)s(eginning)d(of)j(the)g(sub)5 b(ject)32 +b(string.)48 b(A)33 b Fn($)f Fp(at)i(the)f(end)f(of)h(a)g(pattern)g +(anc)m(hors)g(the)g(matc)m(h)h(at)g(the)f(end)0 430 y(of)e(the)f(sub)5 +b(ject)30 b(string.)141 543 y(A)35 b(pattern)g(ma)m(y)h(con)m(tain)g +(sub-patterns)e(enclosed)h(in)e(paren)m(theses,)k(that)f(describ)s(e)d +Fo(c)-5 b(aptur)g(es)p Fp(.)57 b(When)35 b(a)0 656 y(matc)m(h)g +(succeeds,)h(the)f(sub-strings)d(of)j(the)g(sub)5 b(ject)34 +b(string)f(that)i(matc)m(h)h(captures)e(are)h Fo(c)-5 +b(aptur)g(e)g(d)37 b Fp(for)d(future)0 769 y(use.)40 +b(Captures)30 b(are)h(n)m(um)m(b)s(ered)e(according)h(to)h(their)f +(left)g(paren)m(theses.)0 1012 y Ff(6.3)112 b(Mathematical)36 +b(F)-9 b(unctions)0 1184 y Fp(This)24 b(library)g(is)h(an)i(in)m +(terface)f(to)h(some)g(functions)e(of)h(the)g(standard)g(C)g(math)g +(library)-8 b(.)37 b(Moreo)m(v)m(er,)29 b(it)d(registers)0 +1297 y(a)31 b(fallbac)m(k)f(for)g(the)g(binary)f(op)s(erator)i +Fn(^)f Fp(whic)m(h,)f(when)g(applied)g(to)i(n)m(um)m(b)s(ers)e +Fn(x^y)p Fp(,)g(returns)g Fe(x)3321 1264 y Fd(y)3363 +1297 y Fp(.)141 1410 y(The)h(library)e(pro)m(vides)h(the)i(follo)m +(wing)e(functions:)0 1597 y Fn(abs)47 b(acos)g(asin)f(atan)h(atan2)f +(ceil)h(cos)g(floor)f(log)h(log10)0 1710 y(max)g(min)95 +b(mod)f(sin)h(sqrt)46 b(tan)h(random)f(randomseed)0 1898 +y Fp(Most)36 b(of)f(them)g(are)h(only)e(in)m(terfaces)i(to)g(the)f +(homon)m(ymous)g(functions)e(in)h(the)i(C)e(library)-8 +b(,)35 b(except)h(that,)h(for)0 2011 y(the)31 b(trigonometric)f +(functions,)f(all)g(angles)h(are)h(expressed)f(in)f(degrees,)i(not)g +(radians.)141 2124 y(The)22 b(function)g Fn(max)f Fp(returns)h(the)h +(maxim)m(um)e(v)-5 b(alue)22 b(of)h(its)f(n)m(umeric)f(argumen)m(ts.)39 +b(Similarly)-8 b(,)21 b Fn(min)h Fp(computes)0 2237 y(the)31 +b(minim)m(um.)37 b(Both)31 b(can)g(b)s(e)f(used)f(with)h(an)g +(unlimited)d(n)m(um)m(b)s(er)i(of)h(argumen)m(ts.)141 +2349 y(The)e(functions)e Fn(random)h Fp(and)g Fn(randomseed)e +Fp(are)k(in)m(terfaces)f(to)h(the)f(simple)e(random)h(generator)i +(functions)0 2462 y Fn(rand)35 b Fp(and)h Fn(srand)p +Fp(,)h(pro)m(vided)f(b)m(y)g(ANSI)g(C.)h(The)f(function)f +Fn(random)g Fp(returns)h(pseudo-random)f(n)m(um)m(b)s(ers)g(in)0 +2575 y(the)c(range)f([0)p Fe(;)15 b Fp(1\).)0 2819 y +Ff(6.4)112 b(I/O)38 b(F)-9 b(acilities)0 2990 y Fp(All)37 +b(I/O)i(op)s(erations)f(in)f(Lua)i(are)g(done)g(o)m(v)m(er)h(t)m(w)m(o) +g Fo(curr)-5 b(ent)39 b Fp(\014les:)57 b(one)39 b(for)f(reading)g(and)g +(one)h(for)g(writing.)0 3103 y(Initially)-8 b(,)28 b(the)j(curren)m(t)f +(input)e(\014le)i(is)f Fn(stdin)p Fp(,)g(and)h(the)h(curren)m(t)f +(output)g(\014le)f(is)h Fn(stdout)p Fp(.)141 3216 y(Unless)k(otherwise) +f(stated,)k(all)c(I/O)h(functions)f(return)h Fm(nil)g +Fp(on)g(failure)f(and)h(some)h(v)-5 b(alue)34 b(di\013eren)m(t)f(from)0 +3329 y Fm(nil)d Fp(on)h(success.)0 3569 y Fk(\017)k Fn(readfrom)46 +b(\(filename\))0 3741 y Fp(This)29 b(function)g(ma)m(y)j(b)s(e)e +(called)g(in)f(three)i(w)m(a)m(ys.)42 b(When)31 b(called)f(with)f(a)i +(\014le)f(name,)h(it)g(op)s(ens)e(the)i(named)g(\014le,)0 +3854 y(sets)25 b(it)e(as)i(the)f Fo(curr)-5 b(ent)25 +b Fp(input)d(\014le,)j(and)f(returns)f(a)h Fo(hand)5 +b(le)25 b Fp(to)g(the)g(\014le)e(\(this)g(handle)g(is)g(a)i(user)e +(data)i(con)m(taining)0 3967 y(the)37 b(\014le)f(stream)h +Fn(FILE)47 b(*)p Fp(\).)60 b(When)37 b(called)f(with)f(a)j(\014le)e +(handle,)h(returned)f(b)m(y)g(a)i(previous)d(call,)j(it)e(restores)0 +4080 y(the)31 b(\014le)e(as)i(the)f(curren)m(t)g(input.)39 +b(When)30 b(called)g(without)f(parameters,)i(it)f(closes)h(the)f +(curren)m(t)g(input)f(\014le,)h(and)0 4192 y(restores)h +Fn(stdin)e Fp(as)h(the)h(curren)m(t)f(input)f(\014le.)141 +4305 y(If)h(this)f(function)g(fails,)h(it)f(returns)h +Fm(nil)p Fp(,)g(plus)f(a)h(string)g(describing)e(the)i(error.)141 +4418 y Fo(System)i(dep)-5 b(endent:)41 b Fp(if)27 b Fn(filename)f +Fp(starts)j(with)e(a)i Fn(|)p Fp(,)g(then)f(a)h(pip)s(ed)d(input)g(is)i +(op)s(en,)g(via)g(function)f Fn(popen)p Fp(.)0 4658 y +Fk(\017)35 b Fn(writeto)46 b(\(filename\))0 4830 y Fp(This)38 +b(function)g(ma)m(y)i(b)s(e)f(called)g(in)g(three)g(w)m(a)m(ys.)70 +b(When)39 b(called)g(with)f(a)j(\014le)d(name,)43 b(it)c(op)s(ens)g +(the)g(named)0 4943 y(\014le,)c(sets)h(it)e(as)h(the)g +Fo(curr)-5 b(ent)36 b Fp(output)e(\014le,)i(and)e(returns)f(a)j +Fo(hand)5 b(le)36 b Fp(to)f(the)g(\014le)f(\(this)g(handle)g(is)g(a)h +(user)f(data)0 5056 y(con)m(taining)24 b(the)g(\014le)f(stream)i +Fn(FILE)46 b(*)p Fp(\).)39 b(Notice)25 b(that,)h(if)d(the)i(\014le)e +(already)h(exists,)h(it)f(will)d(b)s(e)j Fo(c)-5 b(ompletely)28 +b(er)-5 b(ase)g(d)0 5169 y Fp(with)28 b(this)g(op)s(eration.)40 +b(When)28 b(called)h(with)f(a)h(\014le)f(handle,)g(returned)g(b)m(y)h +(a)h(previous)d(call,)i(it)g(restores)h(the)f(\014le)1905 +5589 y(20)p eop %%Page: 21 21 -21 20 bop -42 199 a Fl('i')16 b(or)i('I')j Fo(to)15 b(read)g(an)g(in)o -(teger.)-42 293 y(The)e(optional)e Fm(n)h Fo(is)g(a)g(n)o(um)o(b)q(er)g -(whic)o(h)g(sp)q(eci\014es)h(ho)o(w)f(man)o(y)f(c)o(haracters)h(m)o -(ust)e(b)q(e)j(read)g(to)e(comp)q(ose)h(the)g(input)-42 -350 y(v)m(alue.)21 b(P)o(articularly)l(,)12 b(the)k(format)c -Fm("s1")j Fo(reads)g(a)g(single)g(c)o(haracter.)-42 470 -y Fm(readuntil)23 b(\(char\))-42 555 y Fo(Reads)f(the)f(curren)o(t)f -(input)h(un)o(til)f(the)h(\014rst)f(o)q(currence)i(of)e(the)h(giv)o(en) -f(c)o(haracter.)36 b(When)21 b(called)f(with)h(no)-42 -612 y(parameters,)16 b(reads)h(un)o(til)f(the)h(end)h(of)e(the)h -(curren)o(t)g(input)g(\014le.)26 b(Returns)17 b(the)h(string)e(read.)25 -b(The)17 b(c)o(haracter)-42 668 y(itself)e(is)f(not)h(read.)-42 -788 y Fm(write)24 b(\(value,)f([format]\))-42 874 y Fo(This)d(function) -g(writes)f(the)i(v)m(alue)f(of)g(its)f(\014rst)h(argumen)o(t)e(to)i -(the)g(curren)o(t)g(output.)35 b(An)20 b(optional)f(second)-42 -931 y(argumen)o(t)13 b(sp)q(eci\014es)i(the)f(format)e(to)i(b)q(e)h -(used.)20 b(This)14 b(format)e(is)i(giv)o(en)f(as)h(a)g(string,)f(comp) -q(osed)h(of)g(four)f(parts.)-42 987 y(The)j(\014rst)f(part)f(is)h(the)g -(only)g(one)g(not)g(optional,)f(and)h(m)o(ust)f(b)q(e)i(one)f(of)g(the) -g(follo)o(wing)e(c)o(haracters:)-42 1081 y Fl('s')k(or)g('S')k -Fo(to)15 b(write)f(strings;)-42 1175 y Fl('f)5 b(')17 -b(or)g('F')22 b Fo(to)14 b(write)g(\015oats;)-42 1269 -y Fl('i')i(or)i('I')j Fo(to)15 b(write)f(in)o(tegers;)-42 -1362 y Fl('q')j(or)g('Q')22 b Fo(to)17 b(write)g(quoted)g(strings.)27 -b(This)17 b(format)e(writes)i(the)h(string)f(in)g(a)h(form)e(suitable)h -(to)g(b)q(e)h(safely)72 1419 y(read)13 b(bac)o(k)f(b)o(y)h(the)g(Lua)g -(in)o(terpreter.)18 b(The)13 b(string)e(is)i(written)e(b)q(et)o(w)o -(een)i(double)g(quotes,)g(and)g(all)e(double)72 1475 -y(quotes,)k(returns)g(and)g(bac)o(kslashes)g(in)g(the)g(string)f(are)h -(correctly)g(escap)q(ed)h(when)f(written.)-42 1569 y(These)h(c)o -(haracters)e(can)i(b)q(e)g(follo)o(w)o(ed)d(b)o(y)30 -1663 y Fm([?][m][.n])-42 1757 y Fo(where:)-42 1851 y -Fm(?)23 b Fo(indicates)15 b(justi\014cation)f(inside)h(the)g(\014eld.) -100 1944 y(')p Fm(<)p Fo(')22 b(righ)o(t)14 b(justi\014cation)g -(\(default\);)100 2017 y(')p Fm(>)p Fo(')22 b(left)15 -b(justi\014cation;)100 2090 y(')p Fm(|)p Fo(')22 b(cen)o(ter)15 -b(justi\014cation.)-42 2184 y Fm(m)23 b Fo(Indicates)16 -b(the)f(\014eld)g(size)g(in)g(c)o(haracters.)-42 2278 -y Fm(.n)23 b Fo(F)l(or)18 b(reals,)h(indicates)f(the)h(n)o(um)o(b)q(er) -f(of)g(digital)f(places.)31 b(F)l(or)18 b(in)o(tegers,)h(it)f(is)g(the) -h(minim)o(um)c(n)o(um)o(b)q(er)j(of)72 2335 y(digits.)h(This)c(option)f -(has)h(no)g(meaning)f(for)h(strings.)29 2428 y(When)20 -b(called)e(without)g(a)h(format)e(string,)i(this)f(function)h(writes)f -(n)o(um)o(b)q(ers)h(using)f(the)i Fm(\045g)e Fo(format)f(and)-42 -2485 y(strings)e(with)f Fm(\045s)p Fo(.)20 b(F)l(or)14 -b(b)q(etter)h(format)e(facilities,)g(the)j(function)f -Fm(format)f Fo(should)h(b)q(e)h(used)g(\(see)f(Section)g(6.2\).)911 -2748 y(21)p eop +21 20 bop 0 91 a Fp(as)37 b(the)g(curren)m(t)g(output.)59 +b(When)37 b(called)f(without)g(parameters,)j(this)c(function)h(closes)h +(the)g(curren)m(t)f(output)0 204 y(\014le,)30 b(and)f(restores)i +Fn(stdout)e Fp(as)i(the)f(curren)m(t)g(output)g(\014le.)141 +317 y(If)g(this)f(function)g(fails,)h(it)f(returns)h +Fm(nil)p Fp(,)g(plus)f(a)h(string)g(describing)e(the)i(error.)141 +430 y Fo(System)e(dep)-5 b(endent:)39 b Fp(if)24 b Fn(filename)e +Fp(starts)k(with)d(a)i Fn(|)p Fp(,)h(then)e(a)h(pip)s(ed)e(output)h(is) +g(op)s(en,)h(via)g(function)e Fn(popen)p Fp(.)0 670 y +Fk(\017)35 b Fn(appendto)46 b(\(filename\))0 842 y Fp(This)34 +b(function)h(op)s(ens)g(a)h(\014le)f(named)h Fn(filename)d +Fp(and)j(sets)g(it)f(as)h(the)h Fo(curr)-5 b(ent)36 b +Fp(output)g(\014le.)56 b(It)36 b(returns)f(the)0 955 +y(\014le)30 b(handle,)g(or)h Fm(nil)g Fp(in)e(case)j(of)f(error.)42 +b(Unlik)m(e)30 b(the)h Fn(writeto)d Fp(op)s(eration,)j(this)f(function) +f(do)s(es)i(not)g(erase)h(an)m(y)0 1068 y(previous)d(con)m(ten)m(t)j +(of)f(the)f(\014le.)40 b(If)30 b(this)f(function)g(fails,)g(it)h +(returns)f Fm(nil)p Fp(,)i(plus)e(a)h(string)g(describing)e(the)i +(error.)141 1181 y(Notice)h(that)g(function)f Fn(writeto)e +Fp(is)h(a)m(v)-5 b(ailable)30 b(to)h(close)g(a)g(\014le.)0 +1421 y Fk(\017)k Fn(remove)46 b(\(filename\))0 1592 y +Fp(This)25 b(function)h(deletes)h(the)g(\014le)g(with)e(the)j(giv)m(en) +f(name.)39 b(If)27 b(this)f(function)f(fails,)i(it)g(returns)e +Fm(nil)p Fp(,)j(plus)e(a)h(string)0 1705 y(describing)h(the)j(error.)0 +1945 y Fk(\017)k Fn(rename)46 b(\(name1,)g(name2\))0 +2117 y Fp(This)41 b(function)h(renames)i(\014le)e Fn(name1)g +Fp(to)i Fn(name2)p Fp(.)78 b(If)43 b(this)f(function)g(fails,)j(it)e +(returns)f Fm(nil)p Fp(,)47 b(plus)41 b(a)j(string)0 +2230 y(describing)28 b(the)j(error.)0 2470 y Fk(\017)k +Fn(tmpname)46 b(\(\))0 2642 y Fp(This)29 b(function)g(returns)g(a)i +(string)e(with)g(a)i(\014le)e(name)i(that)g(can)f(safely)g(b)s(e)g +(used)g(for)g(a)g(temp)s(orary)g(\014le.)0 2882 y Fk(\017)35 +b Fn(read)47 b(\([readpattern]\))0 3053 y Fp(This)25 +b(function)h(reads)h(the)g(curren)m(t)g(input)e(according)i(to)g(a)h +(read)f(pattern,)h(that)f(sp)s(eci\014es)f(ho)m(w)h(m)m(uc)m(h)g(to)h +(read;)0 3166 y(c)m(haracters)36 b(are)g(read)f(from)f(the)h(curren)m +(t)g(input)e(\014le)h(un)m(til)f(the)j(read)e(pattern)i(fails)d(or)i +(ends.)54 b(The)34 b(function)0 3279 y Fn(read)28 b Fp(returns)f(a)i +(string)f(with)g(the)g(c)m(haracters)j(read,)e(or)g Fm(nil)g +Fp(if)e(the)i(read)g(pattern)g(fails)e Fo(and)39 b Fp(the)29 +b(result)f(string)0 3392 y(w)m(ould)35 b(b)s(e)g(empt)m(y)-8 +b(.)58 b(When)35 b(called)g(without)g(parameters,)j(it)d(uses)h(a)g +(default)f(pattern)h(that)g(reads)g(the)g(next)0 3505 +y(line)29 b(\(see)i(b)s(elo)m(w\).)141 3618 y(A)37 b +Fo(r)-5 b(e)g(ad)40 b(p)-5 b(attern)38 b Fp(is)e(a)h(sequence)g(of)f +(read)h(pattern)g(items.)58 b(An)37 b(item)f(ma)m(y)h(b)s(e)f(a)h +(single)e(c)m(haracter)j(class)0 3731 y(or)33 b(a)h(c)m(haracter)g +(class)f(follo)m(w)m(ed)g(b)m(y)g Fn(?)f Fp(or)i(b)m(y)e +Fn(*)p Fp(.)49 b(A)33 b(single)f(c)m(haracter)j(class)d(reads)h(the)g +(next)h(c)m(haracter)g(from)0 3844 y(the)k(input)d(if)i(it)g(b)s +(elongs)f(to)j(the)e(class,)j(otherwise)d(it)g(fails.)61 +b(A)37 b(c)m(haracter)i(class)f(follo)m(w)m(ed)f(b)m(y)g +Fn(?)g Fp(reads)h(the)0 3957 y(next)d(c)m(haracter)i(from)d(the)h +(input)e(if)h(it)h(b)s(elongs)f(to)i(the)f(class;)i(it)e(nev)m(er)g +(fails.)53 b(A)35 b(c)m(haracter)i(class)d(follo)m(w)m(ed)0 +4069 y(b)m(y)f Fn(*)f Fp(reads)g(un)m(til)f(a)i(c)m(haracter)i(that)e +(do)s(es)f(not)h(b)s(elong)f(to)i(the)f(class,)g(or)g(end)f(of)g +(\014le;)i(since)e(it)g(can)h(matc)m(h)h(a)0 4182 y(sequence)d(of)f +(zero)h(c)m(haracteres,)i(it)d(nev)m(er)h(fails.)1691 +4149 y Fl(4)141 4295 y Fp(A)e(pattern)f(item)g(ma)m(y)h(con)m(tain)g +(sub-patterns)e(enclosed)i(in)e(curly)g(brac)m(k)m(ets,)j(that)f +(describ)s(e)e Fo(skips)p Fp(.)40 b(Char-)0 4408 y(acters)31 +b(matc)m(hing)g(a)g(skip)e(are)h(read,)h(but)e(are)i(not)g(included)c +(in)j(the)g(resulting)f(string.)141 4521 y(F)-8 b(ollo)m(wing)30 +b(are)h(some)g(examples)e(of)i(read)f(patterns)h(and)e(their)h +(meanings:)136 4709 y Fk(\017)46 b Fn(".")30 b Fp(returns)f(the)h(next) +h(c)m(haracter,)h(or)f Fm(nil)f Fp(on)g(end)g(of)h(\014le.)136 +4896 y Fk(\017)46 b Fn(".*")29 b Fp(reads)i(the)f(whole)g(\014le.)p +0 4958 1560 4 v 104 5012 a Fj(4)138 5043 y Fi(Notice)24 +b(that)e(this)h(b)r(eha)n(viour)g(is)h(di\013eren)n(t)e(from)h(regular) +h(pattern)e(matc)n(hing,)h(where)h(a)f Fc(*)g Fi(expands)f(to)i(the)e +(maxim)n(um)e(length)0 5135 y Fg(such)28 b(that)35 b +Fi(the)25 b(rest)h(of)g(the)f(pattern)h(do)r(es)g(not)g(fail.)1905 +5589 y Fp(21)p eop %%Page: 22 22 -22 21 bop -42 199 a Fm(date)24 b(\([format]\))-42 285 -y Fo(This)19 b(function)f(returns)h(a)f(string)g(con)o(taining)f(date)h -(and)h(time)e(formatted)g(according)h(to)g(the)g(giv)o(en)g(string)-42 -342 y Fm(format)p Fo(,)g(follo)o(wing)e(the)i(same)f(rules)h(of)f(the)i -(ANSI)f(C)g(function)g Fm(strftime)p Fo(.)28 b(When)18 -b(called)g(without)f(argu-)-42 398 y(men)o(ts,)d(it)g(returns)h(a)g -(reasonable)g(date)g(and)g(time)f(represen)o(tation.)29 -454 y(This)h(function)g(replaces)g(functions)g Fm(date)g -Fo(and)g Fm(time)g Fo(from)e(previous)i(Lua)g(v)o(ersions.)-42 -574 y Fm(exit)24 b(\([code]\))-42 660 y Fo(This)15 b(function)g(calls)g -(the)g(C)g(function)g Fm(exit)p Fo(,)f(with)h(an)g(optional)f -Fm(code)p Fo(,)g(to)g(terminate)g(the)h(program.)-42 -804 y Fp(7)67 b(The)23 b(Debuger)f(In)n(terface)-42 905 -y Fo(Lua)c(has)e(no)h(built)f(in)g(debuger)i(facilities.)k(Instead,)17 -b(it)f(o\013ers)g(a)h(sp)q(ecial)f(in)o(terface,)g(b)o(y)h(means)e(of)i -(functions)-42 961 y(and)12 b Fn(ho)n(oks)p Fo(,)g(whic)o(h)f(allo)o -(ws)f(the)i(construction)e(of)h(di\013eren)o(t)g(kinds)h(of)f -(debugers,)h(pro\014les,)g(and)g(other)f(to)q(ols)f(that)-42 -1018 y(need)17 b(\\inside")d(information)e(from)i(the)h(in)o -(terpreter.)k(This)c(in)o(terface)f(is)h(declared)h(in)f(the)g(\014le)g -Fm(luadebug.h)p Fo(.)-42 1140 y Fe(7.1)56 b(Stac)n(k)19 -b(and)g(F)-5 b(unction)20 b(Information)-42 1225 y Fo(The)c(main)e -(function)h(to)f(get)h(information)d(ab)q(out)j(the)h(in)o(terpreter)e -(stac)o(k)g(is)-42 1319 y Fm(lua_Function)23 b(lua_stackedfunction)e -(\(int)i(level\);)-42 1413 y Fo(It)18 b(returns)f(a)g(handle)h(\()p -Fm(lua_Function)p Fo(\))d(to)h(the)i Fn(activation)g(r)n(e)n(c)n(or)n -(d)j Fo(of)c(the)h(function)f(executing)g(at)g(a)g(giv)o(en)-42 -1470 y(lev)o(el.)34 b(Lev)o(el)20 b(0)f(is)h(the)g(curren)o(t)f -(running)h(function,)h(while)e(lev)o(el)g Fd(n)14 b Fo(+)f(1)20 -b(is)f(the)h(function)g(that)f(has)h(called)-42 1526 -y(lev)o(el)g Fd(n)p Fo(.)34 b(When)21 b(called)e(with)h(a)f(lev)o(el)h -(greater)f(than)h(the)g(stac)o(k)f(depth,)i Fm(lua_stackedfunction)d -Fo(returns)-42 1582 y Fm(LUA_NOOBJECT)p Fo(.)29 1639 -y(The)k(t)o(yp)q(e)f Fm(lua_Function)f Fo(is)h(just)g(another)g(name)g -(to)g Fm(lua_Object)p Fo(.)37 b(Although,)22 b(in)f(this)g(library)l(,) -h(a)-42 1695 y Fm(lua_Function)12 b Fo(can)i(b)q(e)g(used)g(wherev)o -(er)f(a)g Fm(lua_Object)f Fo(is)h(required,)g(a)g(parameter)f -Fm(lua_Function)f Fo(accepts)-42 1752 y(only)k(a)g(handle)h(returned)f -(b)o(y)g Fm(lua_stackedfunction)p Fo(.)29 1808 y(Three)g(other)g -(functions)g(pro)q(duce)h(extra)f(information)d(ab)q(out)j(a)g -(function:)-42 1902 y Fm(void)24 b(lua_funcinfo)e(\(lua_Object)g(func,) -i(char)f(**filename,)f(int)i(*linedefined\);)-42 1959 -y(int)g(lua_currentline)e(\(lua_Function)g(func\);)-42 -2015 y(char)i(*lua_getobjname)e(\(lua_Object)g(o,)i(char)f(**name\);) --42 2109 y(lua_funcinfo)16 b Fo(giv)o(es)g(the)h(\014le)g(name)g(and)g -(the)g(line)g(where)g(the)g(giv)o(en)g(function)g(has)g(b)q(een)h -(de\014ned.)27 b(If)17 b(the)-42 2165 y(\\function")f(is)f(in)h(fact)g -(the)g(main)f(co)q(de)h(of)g(a)g(c)o(h)o(unk,)g Fm(linedefined)f -Fo(is)g(0.)22 b(If)17 b(the)f(function)g(is)f(a)h(C)g(function,)-42 -2222 y Fm(linedefined)e Fo(is)h(-1,)g(and)g Fm(filename)f -Fo(is)h Fm("\(C\)")p Fo(.)29 2278 y(The)j(function)f -Fm(lua_currentline)f Fo(giv)o(es)g(the)i(curren)o(t)f(line)g(where)h(a) -f(giv)o(en)g(function)h(is)f(executing.)26 b(It)-42 2335 -y(only)16 b(w)o(orks)e(if)h(the)g(function)h(has)f(b)q(een)i -(pre-compiled)d(with)h(debug)h(information)d(\(see)i(Section)h(4.8\).)j -(When)-42 2391 y(no)d(line)e(information)f(is)i(a)o(v)m(ailable,)e(it)h -(returns)i(-1.)29 2448 y(F)l(unction)g Fm(lua_getobjname)e -Fo(tries)i(to)f(\014nd)i(a)f(reasonable)g(name)f(for)h(a)f(giv)o(en)h -(function.)23 b(Because)17 b(func-)-42 2504 y(tions)11 -b(in)g(Lua)g(are)g(\014rst)g(class)f(v)m(alues,)i(they)f(do)g(not)g(ha) -o(v)o(e)g(a)g(\014xed)g(name.)18 b(Some)10 b(functions)h(ma)o(y)e(b)q -(e)j(the)g(v)m(alue)f(of)-42 2560 y(man)o(y)j(global)f(v)m(ariables,)h -(while)g(others)h(ma)o(y)e(b)q(e)i(stored)f(only)h(in)f(a)h(table)f -(\014eld.)20 b(F)l(unction)14 b Fm(lua_getobjname)-42 -2617 y Fo(\014rst)j(c)o(hec)o(ks)g(whether)h(the)f(giv)o(en)f(function) -h(is)g(a)f(fallbac)o(k.)24 b(If)18 b(so,)e(it)h(returns)f(the)i(string) -e Fm("fallback")p Fo(,)f(and)911 2748 y(22)p eop +22 21 bop 136 91 a Fk(\017)46 b Fn("[^\\n]*{\\n}")30 +b Fp(returns)i(the)h(next)g(line)f(\(skipping)e(the)k(end)e(of)h +(line\),)g(or)g Fm(nil)g Fp(on)g(end)g(of)g(\014le.)48 +b(This)31 b(is)227 204 y(the)g(default)e(pattern.)136 +392 y Fk(\017)46 b Fn("{\045s*}\045S\045S*")31 b Fp(returns)i(the)h +(next)g(w)m(ord)g(\(maximal)f(sequence)h(of)h(non)e(white-space)h(c)m +(haracters\),)j(or)227 505 y Fm(nil)31 b Fp(on)f(end)g(of)g(\014le.)136 +692 y Fk(\017)46 b Fn("{\045s*}[+-]?\045d\045d*")26 b +Fp(returns)j(the)i(next)f(in)m(teger)h(or)f Fm(nil)h +Fp(if)e(the)i(next)f(c)m(haracters)i(do)e(not)h(conform)f(to)227 +805 y(an)h(in)m(teger)f(format.)0 1045 y Fk(\017)35 b +Fn(write)47 b(\(value1,)e(...\))0 1217 y Fp(This)30 b(function)h +(writes)h(the)g(v)-5 b(alue)32 b(of)g(eac)m(h)h(of)g(its)e(argumen)m +(ts)i(to)g(the)f(curren)m(t)g(output)g(\014le.)45 b(The)32 +b(argumen)m(ts)0 1330 y(m)m(ust)e(b)s(e)f(strings)g(or)i(n)m(um)m(b)s +(ers.)39 b(If)29 b(this)g(function)g(fails,)g(it)h(returns)f +Fm(nil)p Fp(,)h(plus)e(a)j(string)e(describing)f(the)i(error.)0 +1570 y Fk(\017)35 b Fn(date)47 b(\([format]\))0 1742 +y Fp(This)35 b(function)h(returns)g(a)i(string)e(con)m(taining)h(date)h +(and)e(time)h(formatted)h(according)f(to)h(the)g(giv)m(en)f(string)0 +1855 y Fn(format)p Fp(,)f(follo)m(wing)f(the)h(same)h(rules)d(of)j(the) +f(ANSI)g(C)g(function)e Fn(strftime)p Fp(.)56 b(When)36 +b(called)g(without)f(argu-)0 1968 y(men)m(ts,)c(it)f(returns)f(a)i +(reasonable)f(date)h(and)f(time)g(represen)m(tation.)0 +2208 y Fk(\017)35 b Fn(exit)47 b(\([code]\))0 2379 y +Fp(This)29 b(function)g(calls)g(the)i(C)f(function)f +Fn(exit)p Fp(,)g(with)g(an)i(optional)e Fn(code)p Fp(,)h(to)h +(terminate)f(the)h(program.)0 2619 y Fk(\017)k Fn(getenv)46 +b(\(varname\))0 2791 y Fp(Returns)29 b(the)i(v)-5 b(alue)30 +b(of)g(the)h(en)m(vironmen)m(t)f(v)-5 b(ariable)29 b +Fn(varname)p Fp(,)g(or)h Fm(nil)h Fp(if)e(the)h(v)-5 +b(ariable)30 b(is)f(not)i(de\014ned.)0 3031 y Fk(\017)k +Fn(execute)46 b(\(command\))0 3203 y Fp(This)38 b(function)h(is)g +(equiv)-5 b(alen)m(t)39 b(to)h(the)h(C)e(function)g Fn(system)p +Fp(.)67 b(It)40 b(passes)g Fn(command)e Fp(to)i(b)s(e)g(executed)g(b)m +(y)g(an)0 3316 y(Op)s(erating)29 b(System)h(Shell.)39 +b(It)30 b(returns)f(an)i(error)f(co)s(de,)h(whic)m(h)e(is)g(implemen)m +(tation-de\014ned.)0 3602 y Fq(7)135 b(The)44 b(Debugger)i(In)l +(terface)0 3805 y Fp(Lua)31 b(has)f(no)h(built-in)d(debugger)j +(facilities.)41 b(Instead,)31 b(it)f(o\013ers)i(a)f(sp)s(ecial)f(in)m +(terface,)h(b)m(y)g(means)g(of)g(functions)0 3918 y(and)f +Fo(ho)-5 b(oks)p Fp(,)34 b(whic)m(h)29 b(allo)m(ws)i(the)g +(construction)g(of)g(di\013eren)m(t)f(kinds)f(of)j(debuggers,)f +(pro\014lers,)e(and)i(other)g(to)s(ols)0 4031 y(that)37 +b(need)e(\\inside)g(information")f(from)i(the)g(in)m(terpreter.)57 +b(This)35 b(in)m(terface)h(is)f(declared)h(in)f(the)h(header)g(\014le)0 +4144 y Fn(luadebug.h)p Fp(.)0 4387 y Ff(7.1)112 b(Stac)m(k)38 +b(and)g(F)-9 b(unction)37 b(Information)0 4559 y Fp(The)30 +b(main)f(function)g(to)i(get)h(information)d(ab)s(out)h(the)g(in)m +(terpreter)g(stac)m(k)i(is)0 4746 y Fn(lua_Function)44 +b(lua_stackedfunction)f(\(int)k(level\);)0 4934 y Fp(It)35 +b(returns)e(a)i(handle)e(\()p Fn(lua_Function)p Fp(\))f(to)k(the)e +Fo(activation)k(r)-5 b(e)g(c)g(or)g(d)47 b Fp(of)35 b(the)f(function)g +(executing)h(at)g(a)g(giv)m(en)0 5047 y(lev)m(el.)68 +b(Lev)m(el)40 b(0)g(is)f(the)h(curren)m(t)g(running)d(function,)k +(while)c(lev)m(el)j Fe(n)26 b Fp(+)g(1)40 b(is)f(the)h(function)e(that) +i(has)g(called)0 5160 y(lev)m(el)g Fe(n)p Fp(.)69 b(When)39 +b(called)h(with)e(a)j(lev)m(el)e(greater)i(than)f(the)g(stac)m(k)i +(depth,)f Fn(lua_stackedfunction)35 b Fp(returns)0 5273 +y Fn(LUA_NOOBJECT)p Fp(.)1905 5589 y(22)p eop %%Page: 23 23 -23 22 bop -42 199 a Fm(name)16 b Fo(is)f(set)h(to)f(p)q(oin)o(t)g(to)g -(the)h(fallbac)o(k)f(name.)21 b(Otherwise,)15 b(if)h(the)f(giv)o(en)h -(function)g(is)f(the)h(v)m(alue)g(of)f(a)h(global)-42 -256 y(v)m(ariable,)e Fm(lua_getobjname)f Fo(returns)i(the)g(string)e -Fm("global")p Fo(,)h(while)g Fm(name)g Fo(p)q(oin)o(ts)g(to)g(the)h(v)m -(ariable)f(name.)19 b(If)-42 312 y(the)f(giv)o(en)e(function)h(is)f -(neither)h(a)g(fallbac)o(k)f(nor)g(a)h(global)e(v)m(ariable,)i -Fm(lua_getobjname)e Fo(returns)i(the)g(empt)o(y)-42 369 -y(string,)d(and)i Fm(name)e Fo(is)h(set)g(to)f Fm(NULL)p -Fo(.)-42 487 y Fe(7.2)56 b(Manipulating)22 b(Lo)r(cal)c(V)-5 -b(ariables)-42 573 y Fo(The)17 b(follo)o(wing)d(functions)i(allo)o(w)e -(the)i(manipulation)e(of)i(the)g(lo)q(cal)f(v)m(ariables)h(of)g(a)f -(giv)o(en)h(activ)m(ation)f(record.)-42 629 y(They)h(only)f(w)o(ork)f -(if)h(the)g(function)g(has)g(b)q(een)h(pre-compiled)f(with)f(debug)i -(information)c(\(see)j(Section)h(4.8\).)-42 706 y Fm(lua_Object)23 -b(lua_getlocal)f(\(lua_Function)g(func,)h(int)h(local_number,)e(char)h -(**name\);)-42 762 y(int)h(lua_setlocal)e(\(lua_Function)g(func,)h(int) -h(local_number\);)-42 839 y Fo(The)19 b(\014rst)f(one)h(returns)g(the)f -(v)m(alue)h(of)f(a)g(lo)q(cal)g(v)m(ariable,)g(and)h(sets)f -Fm(name)g Fo(to)g(p)q(oin)o(t)g(to)g(the)h(v)m(ariable)f(name.)-42 -895 y Fm(local_number)f Fo(is)i(an)f(index)h(for)f(lo)q(cal)g(v)m -(ariables.)29 b(The)19 b(\014rst)f(parameter)f(has)i(index)f(1,)h(and)g -(so)f(on,)h(un)o(til)-42 952 y(the)k(last)e(activ)o(e)h(lo)q(cal)f(v)m -(ariable.)40 b(When)23 b(called)f(with)g(a)g Fm(local_number)e -Fo(greater)i(than)g(the)g(n)o(um)o(b)q(er)g(of)-42 1008 -y(activ)o(e)15 b(lo)q(cal)g(v)m(ariables,)f(or)h(if)g(the)h(activ)m -(ation)e(record)h(has)h(no)f(debug)h(information,)d Fm(lua_getlocal)h -Fo(returns)-42 1065 y Fm(LUA_NOOBJECT)p Fo(.)29 1121 -y(The)d(function)h Fm(lua_setlocal)d Fo(sets)i(the)g(lo)q(cal)f(v)m -(ariable)h Fm(local_number)f Fo(to)g(the)h(v)m(alue)h(previously)e -(pushed)-42 1178 y(on)19 b(the)f(stac)o(k)f(\(see)h(Section)g(5.2\).)28 -b(If)18 b(the)h(function)f(succeeds)h(it)e(returns)h(1.)29 -b(If)18 b Fm(local_number)f Fo(is)g(greater)-42 1234 -y(than)d(the)f(n)o(um)o(b)q(er)g(of)g(activ)o(e)g(lo)q(cal)f(v)m -(ariables,)h(or)g(if)g(the)g(activ)m(ation)f(record)i(has)f(no)g(debug) -h(information,)d(this)-42 1291 y(function)16 b(fails)d(and)j(returns)f -(0.)-42 1409 y Fe(7.3)56 b(Ho)r(oks)-42 1495 y Fo(The)16 -b(Lua)f(in)o(terpreter)g(o\013ers)f(t)o(w)o(o)g(ho)q(oks)h(for)g(debug) -g(purp)q(oses:)-42 1572 y Fm(typedef)23 b(void)h(\(*lua_CHFunction\))d -(\(lua_Function)h(func,)i(char)f(*file,)g(int)g(line\);)-42 -1628 y(extern)h(lua_CHFunction)d(lua_callhook;)-42 1741 -y(typedef)i(void)h(\(*lua_LHFunction\))d(\(int)j(line\);)-42 -1797 y(extern)g(lua_LHFunction)d(lua_linehook;)-42 1874 -y Fo(The)i(\014rst)f(one)g(is)f(called)h(whenev)o(er)h(the)f(in)o -(terpreter)f(en)o(ters)h(or)f(lea)o(v)o(es)h(a)f(function.)41 -b(When)22 b(en)o(tering)g(a)-42 1930 y(function,)c(its)f(parameters)f -(are)h(a)h(handle)g(to)f(the)g(function)h(activ)m(ation)e(record,)i -(plus)g(the)f(\014le)h(and)g(the)g(line)-42 1987 y(where)h(the)g -(function)f(is)g(de\014ned)h(\(the)f(same)f(information)f(whic)o(h)i -(is)g(pro)o(vided)g(b)o(y)g Fm(lua_funcinfo)p Fo(\);)g(when)-42 -2043 y(lea)o(ving)d(a)f(function,)h Fm(func)g Fo(is)f -Fm(LUA_NOOBJECT)p Fo(,)g Fm(file)g Fo(is)h Fm("\(return\)")p -Fo(,)e(and)j Fm(line)e Fo(is)h(0.)29 2100 y(The)24 b(other)f(ho)q(ok)g -(is)g(called)g(ev)o(ery)g(time)f(the)h(in)o(terpreter)g(c)o(hanges)g -(the)g(line)g(of)g(co)q(de)h(it)f(is)g(execut-)-42 2156 -y(ing.)31 b(Its)19 b(only)g(parameter)e(is)i(the)g(line)f(n)o(um)o(b)q -(er)h(\(the)f(same)g(information)e(whic)o(h)j(is)g(pro)o(vided)f(b)o(y) -h(the)g(call)-42 2213 y Fm(lua_currentline\(lua_stackedfun)o(ction\(0)o -(\)\))p Fo(\).)d(This)d(second)h(ho)q(ok)f(is)g(only)f(called)h(if)g -(the)g(activ)o(e)g(func-)-42 2269 y(tion)i(has)g(b)q(een)h -(pre-compiled)f(with)f(debug)i(information)c(\(see)k(Section)f(4.8\).) -29 2326 y(A)g(ho)q(ok)g(is)g(disabled)g(when)h(its)e(v)m(alue)i(is)e -(NULL)i(\(0\),)e(whic)o(h)h(is)g(the)g(initial)f(v)m(alue)h(of)g(b)q -(oth)g(ho)q(oks.)-42 2466 y Fp(8)67 b(Some)22 b(Examples)-42 -2567 y Fo(This)17 b(section)f(giv)o(es)g(examples)g(sho)o(wing)g(some)g -(features)g(of)h(Lua.)25 b(It)17 b(do)q(es)g(not)g(in)o(tend)f(to)h(co) -o(v)o(er)f(the)h(whole)-42 2623 y(language,)e(but)g(only)g(to)f -(illustrate)f(some)h(in)o(teresting)g(uses)i(of)e(the)i(system.)911 -2748 y(23)p eop +23 22 bop 141 91 a Fp(The)43 b(t)m(yp)s(e)g Fn(lua_Function)c +Fp(is)j(just)g(another)h(name)g(to)h Fn(lua_Object)p +Fp(.)75 b(Although,)46 b(in)41 b(this)h(library)-8 b(,)45 +b(a)0 204 y Fn(lua_Function)23 b Fp(can)k(b)s(e)f(used)g(wherev)m(er)h +(a)g Fn(lua_Object)d Fp(is)h(required,)h(a)h(parameter)g +Fn(lua_Function)d Fp(accepts)0 317 y(only)29 b(a)i(handle)e(returned)g +(b)m(y)i Fn(lua_stackedfunction)p Fp(.)141 430 y(Three)f(other)h +(functions)e(pro)s(duce)g(extra)i(information)e(ab)s(out)h(a)g +(function:)0 593 y Fn(void)47 b(lua_funcinfo)d(\(lua_Object)h(func,)h +(char)h(**filename,)e(int)h(*linedefined\);)0 706 y(int)h +(lua_currentline)d(\(lua_Function)g(func\);)0 819 y(char)j +(*lua_getobjname)c(\(lua_Object)i(o,)i(char)g(**name\);)0 +982 y(lua_funcinfo)31 b Fp(giv)m(es)j(the)h(\014le)e(name)h(and)g(the)g +(line)f(where)g(the)i(giv)m(en)f(function)f(has)h(b)s(een)f(de\014ned.) +51 b(If)34 b(the)0 1095 y(\\function")40 b(is)f(in)g(fact)j(the)e(main) +f(co)s(de)i(of)f(a)h(c)m(h)m(unk,)i(then)d Fn(linedefined)d +Fp(is)j(0.)71 b(If)40 b(the)g(function)f(is)h(a)g(C)0 +1208 y(function,)29 b(then)h Fn(linedefined)e Fp(is)h(-1,)i(and)f +Fn(filename)e Fp(is)i Fn("\(C\)")p Fp(.)141 1320 y(The)35 +b(function)e Fn(lua_currentline)e Fp(giv)m(es)k(the)h(curren)m(t)e +(line)g(where)g(a)h(giv)m(en)g(function)f(is)g(executing.)55 +b(It)0 1433 y(only)30 b(w)m(orks)h(if)f(the)h(function)f(has)g(b)s(een) +g(pre-compiled)g(with)f(debug)h(information)g(\(see)i(Section)e(4.8\).) +44 b(When)0 1546 y(no)30 b(line)f(information)g(is)g(a)m(v)-5 +b(ailable,)30 b(it)g(returns)f(-1.)141 1659 y(F)-8 b(unction)32 +b Fn(lua_getobjname)d Fp(tries)j(to)h(\014nd)d(a)j(reasonable)f(name)h +(for)f(a)h(giv)m(en)f(function.)46 b(Because)34 b(func-)0 +1772 y(tions)22 b(in)f(Lua)h(are)g(\014rst)g(class)g(v)-5 +b(alues,)23 b(they)g(do)f(not)g(ha)m(v)m(e)i(a)e(\014xed)g(name.)38 +b(Some)22 b(functions)f(ma)m(y)i(b)s(e)f(the)g(v)-5 b(alue)22 +b(of)0 1885 y(man)m(y)30 b(global)e(v)-5 b(ariables,)29 +b(while)e(others)j(ma)m(y)g(b)s(e)f(stored)h(only)e(in)g(a)i(table)g +(\014eld.)39 b(F)-8 b(unction)29 b Fn(lua_getobjname)0 +1998 y Fp(\014rst)k(c)m(hec)m(ks)j(whether)d(the)h(giv)m(en)g(function) +f(is)g(a)i(fallbac)m(k.)51 b(If)33 b(so,)j(it)d(returns)g(the)h(string) +f Fn("fallback")p Fp(,)g(and)0 2111 y Fn(name)e Fp(is)f(set)i(to)h(p)s +(oin)m(t)e(to)h(the)g(fallbac)m(k)f(name.)45 b(Otherwise,)31 +b(if)f(the)i(giv)m(en)g(function)e(is)h(the)h(v)-5 b(alue)31 +b(of)h(a)g(global)0 2224 y(v)-5 b(ariable,)22 b(then)f +Fn(lua_getobjname)c Fp(returns)j(the)h(string)f Fn("global")p +Fp(,)h(while)f Fn(name)g Fp(p)s(oin)m(ts)g(to)h(the)h(v)-5 +b(ariable)20 b(name.)0 2337 y(If)32 b(the)g(giv)m(en)h(function)e(is)g +(neither)g(a)i(fallbac)m(k)f(nor)g(a)h(global)e(v)-5 +b(ariable,)32 b(then)g Fn(lua_getobjname)d Fp(returns)i(the)0 +2450 y(empt)m(y)g(string,)e(and)h Fn(name)f Fp(is)h(set)h(to)g +Fn(NULL)p Fp(.)0 2688 y Ff(7.2)112 b(Manipulating)37 +b(Lo)s(cal)g(V)-9 b(ariables)0 2860 y Fp(The)32 b(follo)m(wing)f +(functions)f(allo)m(w)i(the)h(manipulation)c(of)k(the)f(lo)s(cal)g(v)-5 +b(ariables)31 b(of)h(a)h(giv)m(en)f(activ)-5 b(ation)33 +b(record.)0 2973 y(They)d(only)f(w)m(ork)i(if)e(the)i(function)e(has)h +(b)s(een)g(pre-compiled)e(with)h(debug)h(information)f(\(see)i(Section) +f(4.8\).)0 3136 y Fn(lua_Object)45 b(lua_getlocal)f(\(lua_Function)h +(func,)h(int)h(local_number,)d(char)j(**name\);)0 3249 +y(int)g(lua_setlocal)d(\(lua_Function)h(func,)h(int)h(local_number\);)0 +3412 y Fp(The)37 b(\014rst)f(one)h(returns)f(the)h(v)-5 +b(alue)37 b(of)g(a)h(lo)s(cal)e(v)-5 b(ariable,)38 b(and)e(sets)i +Fn(name)e Fp(to)i(p)s(oin)m(t)e(to)h(the)h(v)-5 b(ariable)36 +b(name.)0 3525 y Fn(local_number)e Fp(is)i(an)h(index)f(for)h(lo)s(cal) +f(v)-5 b(ariables.)60 b(The)37 b(\014rst)g(parameter)g(has)g(index)f +(1,)k(and)c(so)i(on,)h(un)m(til)0 3638 y(the)45 b(last)f(activ)m(e)i +(lo)s(cal)e(v)-5 b(ariable.)82 b(When)44 b(called)g(with)f(a)i +Fn(local_number)d Fp(greater)j(than)g(the)g(n)m(um)m(b)s(er)e(of)0 +3750 y(activ)m(e)32 b(lo)s(cal)f(v)-5 b(ariables,)30 +b(or)h(if)e(the)j(activ)-5 b(ation)31 b(record)g(has)g(no)g(debug)f +(information,)g Fn(lua_getlocal)d Fp(returns)0 3863 y +Fn(LUA_NOOBJECT)p Fp(.)141 3976 y(The)22 b(function)f +Fn(lua_setlocal)e Fp(sets)k(the)f(lo)s(cal)g(v)-5 b(ariable)21 +b Fn(local_number)e Fp(to)k(the)g(v)-5 b(alue)22 b(previously)e(pushed) +0 4089 y(on)j(the)g(stac)m(k)i(\(see)f(Section)e(5.2\).)40 +b(If)23 b(the)g(function)f(succeeds,)j(then)d(it)h(returns)f(1.)38 +b(If)23 b Fn(local_number)d Fp(is)i(greater)0 4202 y(than)j(the)g(n)m +(um)m(b)s(er)e(of)j(activ)m(e)g(lo)s(cal)e(v)-5 b(ariables,)25 +b(or)g(if)f(the)h(activ)-5 b(ation)25 b(record)g(has)g(no)f(debug)h +(information,)f(then)0 4315 y(this)29 b(function)g(fails)g(and)h +(returns)f(0.)0 4554 y Ff(7.3)112 b(Ho)s(oks)0 4725 y +Fp(The)30 b(Lua)g(in)m(terpreter)g(o\013ers)g(t)m(w)m(o)i(ho)s(oks)e +(for)g(debugging)g(purp)s(oses:)0 4888 y Fn(typedef)46 +b(void)g(\(*lua_CHFunction\))e(\(lua_Function)g(func,)i(char)h(*file,)f +(int)h(line\);)0 5001 y(extern)f(lua_CHFunction)e(lua_callhook;)0 +5227 y(typedef)i(void)g(\(*lua_LHFunction\))e(\(int)i(line\);)0 +5340 y(extern)g(lua_LHFunction)e(lua_linehook;)1905 5589 +y Fp(23)p eop %%Page: 24 24 -24 23 bop -42 199 a Fe(8.1)56 b(Data)19 b(Structures)-42 -285 y Fo(T)l(ables)c(are)f(a)g(strong)f(unifying)h(data)g(constructor.) -19 b(They)c(directly)f(implemen)o(t)d(a)j(m)o(ultitude)f(of)h(data)g(t) -o(yp)q(es,)-42 342 y(lik)o(e)h(ordinary)f(arra)o(ys,)g(records,)g -(sets,)h(bags,)f(and)i(lists.)29 398 y(Arra)o(ys)e(need)h(no)g -(explanations.)k(In)c(Lua,)g(it)e(is)i(con)o(v)o(en)o(tional)e(to)h -(start)f(indices)i(from)e(1,)h(but)h(this)f(is)g(only)-42 -454 y(a)f(con)o(v)o(en)o(tion.)19 b(Arra)o(ys)12 b(can)h(b)q(e)h -(indexed)g(b)o(y)f(0,)g(negativ)o(e)g(n)o(um)o(b)q(ers,)f(or)h(an)o(y)g -(other)f(v)m(alue)i(\(but)f Fl(nil)p Fo(\).)18 b(Records)-42 -511 y(are)d(also)g(trivially)d(implemen)o(ted)h(b)o(y)i(the)h(syn)o -(tactic)e(sugar)g Fm(a.x)p Fo(.)29 567 y(The)j(b)q(est)g(w)o(a)o(y)f -(to)g(implemen)o(t)e(a)i(set)h(is)f(to)g(store)g(its)g(elemen)o(ts)g -(as)g(indices)h(of)f(a)h(table.)24 b(The)17 b(statemen)o(t)-42 -624 y Fm(s)24 b(=)g({})14 b Fo(creates)h(an)f(empt)o(y)g(set)g -Fm(s)p Fo(.)20 b(The)15 b(statemen)o(t)d Fm(s[x])24 b(=)f(1)15 -b Fo(inserts)f(the)h(v)m(alue)g(of)f Fm(x)h Fo(in)o(to)e(the)i(set)g -Fm(s)p Fo(.)k(The)-42 680 y(expression)e Fm(s[x])f Fo(is)h(true)f(if)g -(and)h(only)g(if)f Fm(x)h Fo(b)q(elongs)f(to)g Fm(s)p -Fo(.)25 b(Finally)l(,)15 b(the)i(statemen)o(t)e Fm(s[x])23 -b(=)h(nil)16 b Fo(erases)h Fm(x)-42 737 y Fo(from)d Fm(s)p -Fo(.)29 793 y(Bags)h(can)h(b)q(e)g(implemen)o(ted)e(similarl)o(y)f(to)i -(sets,)g(but)h(using)f(the)h(v)m(alue)f(asso)q(ciated)g(to)g(an)h -(elemen)o(t)e(as)h(its)-42 850 y(coun)o(ter.)20 b(So,)15 -b(to)f(insert)h(an)g(elemen)o(t,)f(the)h(follo)o(wing)e(co)q(de)j(is)f -(enough:)-42 943 y Fm(if)24 b(s[x])f(then)h(s[x])f(=)h(s[x]+1)-42 -1000 y(else)g(s[x])f(=)h(1)g(end)-42 1094 y Fo(and)16 -b(to)e(remo)o(v)o(e)g(an)h(elemen)o(t:)-42 1188 y Fm(if)24 -b(s[x])f(then)h(s[x])f(=)h(s[x]-1)f(end)-42 1244 y(if)h(s[x])f(==)h(0)g -(then)f(s[x])g(=)h(nil)g(end)29 1338 y Fo(Lisp-lik)o(e)d(lists)f(also)g -(ha)o(v)o(e)h(an)g(easy)g(implemen)o(tatio)o(n.)36 b(The)21 -b(\\cons")g(of)g(t)o(w)o(o)f(elemen)o(ts)g Fm(x)h Fo(and)g -Fm(y)g Fo(can)-42 1394 y(b)q(e)d(created)e(with)g(the)h(co)q(de)g -Fm(l)23 b(=)h({car=x,)f(cdr=y})p Fo(.)g(The)17 b(expression)f -Fm(l.car)g Fo(extracts)g(the)g(header,)h(while)-42 1451 -y Fm(l.cdr)d Fo(extracts)g(the)g(tail.)k(An)d(alternativ)o(e)d(w)o(a)o -(y)i(is)f(to)h(create)g(the)g(list)g(directly)f(with)h -Fm(l={x,y})p Fo(,)f(and)h(then)h(to)-42 1507 y(extract)g(the)g(header)h -(with)e Fm(l[1])h Fo(and)g(the)h(tail)d(with)i Fm(l[2])p -Fo(.)-42 1629 y Fe(8.2)56 b(The)18 b(F)-5 b(unctions)21 -b Fb(next)c Fe(and)i Fb(nextvar)-42 1715 y Fo(This)f(example)f(sho)o -(ws)g(ho)o(w)h(to)f(use)i(the)f(function)g Fm(next)f -Fo(to)h(iterate)f(o)o(v)o(er)g(the)h(\014elds)g(of)g(a)g(table.)28 -b(F)l(unction)-42 1771 y Fn(clone)15 b Fo(receiv)o(es)g(an)o(y)g(table) -f(and)i(returns)f(a)g(clone)g(of)g(it.)-42 1865 y Fm(function)23 -b(clone)g(\(t\))263 b(--)23 b(t)h(is)f(a)h(table)6 1921 -y(local)f(new_t)h(=)f({})263 b(--)23 b(create)g(a)h(new)f(table)6 -1978 y(local)g(i,)h(v)g(=)f(next\(t,)g(nil\))48 b(--)23 -b(i)h(is)f(an)h(index)f(of)h(t,)f(v)h(=)g(t[i])6 2034 -y(while)f(i)h(do)54 2091 y(new_t[i])f(=)g(v)54 2147 y(i,)h(v)f(=)h -(next\(t,)f(i\))191 b(--)23 b(get)h(next)f(index)6 2204 -y(end)6 2260 y(return)g(new_t)-42 2317 y(end)29 2410 -y Fo(The)15 b(next)h(example)e(prin)o(ts)g(the)i(names)e(of)g(all)h -(global)e(v)m(ariables)i(in)g(the)g(system)f(with)h(non)g(nil)g(v)m -(alues:)-42 2504 y Fm(function)23 b(printGlobalVariables)e(\(\))6 -2561 y(local)i(i,)h(v)g(=)f(nextvar\(nil\))6 2617 y(while)g(i)h(do)911 -2748 y Fo(24)p eop +24 23 bop 0 91 a Fp(The)44 b(\014rst)f(one)i(is)e(called)g(whenev)m(er) +h(the)g(in)m(terpreter)g(en)m(ters)h(or)f(lea)m(v)m(es)h(a)g(function.) +81 b(When)43 b(en)m(tering)i(a)0 204 y(function,)35 b(its)g(parameters) +h(are)g(a)f(handle)f(to)i(the)g(function)e(activ)-5 b(ation)35 +b(record,)i(plus)c(the)j(\014le)e(and)h(the)h(line)0 +317 y(where)g(the)h(function)e(is)h(de\014ned)g(\(the)h(same)g +(information)e(whic)m(h)g(is)h(pro)m(vided)f(b)m(y)i +Fn(lua_funcinfo)p Fp(\);)g(when)0 430 y(lea)m(ving)30 +b(a)h(function,)e Fn(func)g Fp(is)h Fn(LUA_NOOBJECT)p +Fp(,)d Fn(file)i Fp(is)h Fn("\(return\)")p Fp(,)e(and)h +Fn(line)g Fp(is)h(0.)141 543 y(The)46 b(other)h(ho)s(ok)g(is)f(called)f +(ev)m(ery)j(time)e(the)h(in)m(terpreter)f(c)m(hanges)i(the)f(line)e(of) +i(co)s(de)g(it)f(is)g(execut-)0 656 y(ing.)63 b(Its)38 +b(only)f(parameter)h(is)f(the)h(line)f(n)m(um)m(b)s(er)f(\(the)j(same)f +(information)e(whic)m(h)h(is)g(pro)m(vided)g(b)m(y)g(the)i(call)0 +769 y Fn(lua_currentline\(lua_stac)o(kedf)o(unct)o(ion)o(\(0\)\))o +Fp(\).)34 b(This)25 b(second)h(ho)s(ok)h(is)e(only)h(called)g(if)f(the) +i(activ)m(e)h(func-)0 882 y(tion)i(has)g(b)s(een)g(pre-compiled)e(with) +h(debug)h(information)f(\(see)i(Section)f(4.8\).)141 +995 y(A)h(ho)s(ok)f(is)f(disabled)f(when)i(its)f(v)-5 +b(alue)30 b(is)g(NULL)g(\(0\),)i(whic)m(h)d(is)g(the)i(initial)c(v)-5 +b(alue)30 b(of)h(b)s(oth)e(ho)s(oks.)0 1281 y Fq(8)135 +b(Some)45 b(Examples)0 1484 y Fp(This)32 b(section)i(giv)m(es)g +(examples)f(sho)m(wing)g(some)h(features)g(of)g(Lua.)51 +b(It)34 b(do)s(es)f(not)h(in)m(tend)f(to)h(co)m(v)m(er)i(the)e(whole)0 +1597 y(language,)d(but)f(only)f(to)i(illustrate)e(some)i(in)m +(teresting)e(uses)h(of)h(the)f(system.)0 1840 y Ff(8.1)112 +b(Data)38 b(Structures)0 2012 y Fp(T)-8 b(ables)28 b(are)i(a)f(strong)g +(unifying)d(data)k(constructor.)40 b(They)29 b(directly)e(implemen)m(t) +h(a)h(m)m(ultitude)e(of)i(data)h(t)m(yp)s(es,)0 2125 +y(lik)m(e)g(ordinary)e(arra)m(ys,)j(records,)g(sets,)g(bags,)g(and)e +(lists.)141 2238 y(Arra)m(ys)40 b(need)g(no)h(explanations.)69 +b(In)39 b(Lua,)k(it)d(is)f(con)m(v)m(en)m(tional)i(to)g(start)g +(indices)d(from)i(1,)j(but)d(this)f(is)0 2351 y(only)28 +b(a)i(con)m(v)m(en)m(tion.)41 b(Arra)m(ys)29 b(can)h(b)s(e)e(indexed)g +(b)m(y)h(0,)h(negativ)m(e)g(n)m(um)m(b)s(ers,)e(or)h(an)m(y)h(other)f +(v)-5 b(alue)29 b(\(except)h Fm(nil)p Fp(\).)0 2464 y(Records)g(are)h +(also)g(trivially)c(implemen)m(ted)i(b)m(y)h(the)h(syn)m(tactic)g +(sugar)f Fn(a.x)p Fp(.)141 2576 y(The)j(b)s(est)g(w)m(a)m(y)i(to)f +(implemen)m(t)e(a)i(set)g(is)e(to)j(store)f(its)f(elemen)m(ts)g(as)h +(indices)e(of)h(a)h(table.)50 b(The)33 b(statemen)m(t)0 +2689 y Fn(s)47 b(=)h({})29 b Fp(creates)i(an)e(empt)m(y)h(set)g +Fn(s)p Fp(.)40 b(The)29 b(statemen)m(t)i Fn(s[x])47 b(=)g(1)29 +b Fp(inserts)f(the)i(v)-5 b(alue)29 b(of)g Fn(x)g Fp(in)m(to)h(the)f +(set)h Fn(s)p Fp(.)40 b(The)0 2802 y(expression)28 b +Fn(s[x])g Fp(is)g(true)g(if)g(and)h(only)f(if)g Fn(x)g +Fp(b)s(elongs)g(to)i Fn(s)p Fp(.)40 b(Finally)-8 b(,)28 +b(the)h(statemen)m(t)i Fn(s[x])46 b(=)i(nil)28 b Fp(remo)m(v)m(es)i +Fn(x)0 2915 y Fp(from)g Fn(s)p Fp(.)141 3028 y(Bags)i(can)g(b)s(e)e +(implemen)m(ted)g(similarly)e(to)k(sets,)g(but)e(using)g(the)h(v)-5 +b(alue)31 b(asso)s(ciated)h(to)f(an)g(elemen)m(t)h(as)g(its)0 +3141 y(coun)m(ter.)41 b(So,)31 b(to)g(insert)e(an)i(elemen)m(t,)g(the)f +(follo)m(wing)f(co)s(de)i(is)e(enough:)0 3329 y Fn(if)47 +b(s[x])g(then)f(s[x])h(=)h(s[x]+1)e(else)g(s[x])h(=)g(1)h(end)0 +3516 y Fp(and)30 b(to)h(remo)m(v)m(e)h(an)e(elemen)m(t:)0 +3704 y Fn(if)47 b(s[x])g(then)f(s[x])h(=)h(s[x]-1)e(end)0 +3817 y(if)h(s[x])g(==)g(0)g(then)g(s[x])g(=)g(nil)g(end)141 +4004 y Fp(Lisp-lik)m(e)41 b(lists)g(also)h(ha)m(v)m(e)i(an)e(easy)i +(implemen)m(tation.)75 b(The)42 b(\\cons")i(of)f(t)m(w)m(o)g(elemen)m +(ts)g Fn(x)g Fp(and)e Fn(y)i Fp(can)0 4117 y(b)s(e)32 +b(created)i(with)e(the)h(co)s(de)g Fn(l)48 b(=)f({car=x,)f(cdr=y})p +Fp(.)h(The)32 b(expression)g Fn(l.car)g Fp(extracts)i(the)f(header,)h +(while)0 4230 y Fn(l.cdr)27 b Fp(extracts)j(the)f(tail.)39 +b(An)28 b(alternativ)m(e)h(w)m(a)m(y)h(is)e(to)h(create)h(the)f(list)e +(directly)g(with)h Fn(l={x,y})p Fp(,)f(and)h(then)g(to)0 +4343 y(extract)k(the)e(header)h(with)e Fn(l[1])g Fp(and)h(the)g(tail)g +(with)f Fn(l[2])p Fp(.)0 4587 y Ff(8.2)112 b(The)38 b(F)-9 +b(unctions)37 b Fb(next)h Ff(and)h Fb(nextvar)0 4758 +y Fp(This)34 b(example)i(sho)m(ws)g(ho)m(w)g(to)h(use)f(the)g(function) +f Fn(next)g Fp(to)i(iterate)f(o)m(v)m(er)i(the)e(\014elds)f(of)h(a)g +(table.)58 b(F)-8 b(unction)0 4871 y Fn(clone)29 b Fp(receiv)m(es)i(an) +m(y)g(table)f(and)g(returns)f(a)i(clone)f(of)h(it.)0 +5059 y Fn(function)46 b(clone)g(\(t\))524 b(--)47 b(t)h(is)f(a)g(table) +95 5172 y(local)g(new_t)f(=)i({})524 b(--)47 b(create)f(a)i(new)f +(table)95 5285 y(local)g(i,)g(v)g(=)h(next\(t,)e(nil\))94 +b(--)47 b(i)h(is)f(an)g(index)f(of)i(t,)f(v)g(=)h(t[i])1905 +5589 y Fp(24)p eop %%Page: 25 25 -25 24 bop 54 199 a Fm(print\(i\))54 256 y(i,)24 b(v)f(=)h(nextvar\(i\)) -6 312 y(end)-42 369 y(end)-42 488 y Fe(8.3)56 b(String)19 -b(Manipulation)-42 574 y Fo(The)d(\014rst)f(example)f(is)g(a)h -(function)g(to)g(trim)e(extra)i(blanks)g(at)f(the)h(b)q(eginning)h(and) -f(end)h(of)f(a)g(string.)-42 654 y Fm(function)23 b(trim\(s\))6 -710 y(local)g(l)h(=)g(1)6 767 y(while)f(strsub\(s,l,l\))f(==)i(')g(')g -(do)54 823 y(l)g(=)f(l+1)6 880 y(end)6 936 y(local)g(r)h(=)g -(strlen\(s\))6 992 y(while)f(strsub\(s,r,r\))f(==)i(')g(')g(do)54 -1049 y(r)g(=)f(r-1)6 1105 y(end)6 1162 y(return)g(strsub\(s,l,r\))-42 -1218 y(end)29 1298 y Fo(The)15 b(second)h(example)e(sho)o(ws)h(a)g -(function)g(that)f(eliminates)f(all)h(blanks)h(of)g(a)g(string.)-42 -1379 y Fm(function)23 b(remove_blanks)f(\(s\))6 1435 -y(local)h(b)h(=)g(strfind\(s,)e(')i('\))6 1492 y(while)f(b)h(do)54 -1548 y(s)g(=)f(strsub\(s,)g(1,)h(b-1\))f(..)h(strsub\(s,)e(b+1\))54 -1604 y(b)i(=)f(strfind\(s,)g(')h('\))6 1661 y(end)6 1717 -y(return)f(s)-42 1774 y(end)-42 1893 y Fe(8.4)56 b(V)-5 -b(ariable)21 b(n)n(um)n(b)r(er)d(of)h(argumen)n(ts)-42 -1979 y Fo(Lua)14 b(do)q(es)f(not)g(pro)o(vide)f(an)o(y)h(explicit)f -(mec)o(hanism)f(to)h(deal)h(with)f(v)m(ariable)h(n)o(um)o(b)q(er)f(of)h -(argumen)o(ts.)k(Ho)o(w)o(ev)o(er,)-42 2035 y(one)f(can)g(use)g(table)f -(constructors)g(to)g(sim)o(ulate)e(this)i(mec)o(hanism.)k(As)d(an)g -(example,)e(supp)q(ose)i(a)g(function)f(to)-42 2092 y(concatenate)g -(all)g(its)f(argumen)o(ts.)k(It)d(could)g(b)q(e)h(written)f(lik)o(e)-42 -2172 y Fm(function)23 b(concat)g(\(o\))6 2228 y(local)g(i)h(=)g(1)6 -2285 y(local)f(s)h(=)g('')6 2341 y(while)f(o[i])h(do)54 -2398 y(s)g(=)f(s)h(..)g(o[i])54 2454 y(i)g(=)f(i+1)6 -2511 y(end)6 2567 y(return)g(s)-42 2623 y(end)911 2748 -y Fo(25)p eop +25 24 bop 95 91 a Fn(while)47 b(i)g(do)191 204 y(new_t[i])e(=)j(v)191 +317 y(i,)f(v)h(=)f(next\(t,)f(i\))381 b(--)47 b(get)g(next)g(index)95 +430 y(end)95 543 y(return)g(new_t)0 656 y(end)141 825 +y Fp(The)30 b(next)h(example)f(prin)m(ts)e(the)j(names)f(of)h(all)e +(global)h(v)-5 b(ariables)29 b(in)g(the)h(system)h(with)e(non)h(nil)e +(v)-5 b(alues:)0 995 y Fn(function)46 b(printGlobalVariables)c(\(\))95 +1108 y(local)47 b(i,)g(v)g(=)h(nextvar\(nil\))95 1221 +y(while)f(i)g(do)191 1334 y(print\(i\))191 1447 y(i,)g(v)h(=)f +(nextvar\(i\))95 1560 y(end)0 1672 y(end)0 1913 y Ff(8.3)112 +b(String)37 b(Manipulation)0 2084 y Fp(The)30 b(\014rst)f(example)i(is) +e(a)i(function)e(to)i(trim)e(extra)i(white-spaces)g(at)g(the)f(b)s +(eginning)e(and)i(end)f(of)i(a)g(string.)0 2254 y Fn(function)46 +b(trim\(s\))95 2367 y(local)h(_,)g(i)g(=)h(strfind\(s,)d('^)i(*'\))95 +2480 y(local)g(f,)g(__)g(=)h(strfind\(s,)d(')i(*$'\))95 +2592 y(return)g(strsub\(s,)e(i+1,)h(f-1\))0 2705 y(end)141 +2875 y Fp(The)30 b(second)g(example)h(sho)m(ws)f(a)g(function)f(that)i +(eliminates)e(all)g(spaces)i(of)g(a)g(string.)0 3044 +y Fn(function)46 b(remove_blanks)e(\(s\))95 3157 y(return)j(gsub\(s,)e +("\045s\045s*",)h(""\))0 3270 y(end)0 3510 y Ff(8.4)112 +b(V)-9 b(ariable)36 b(n)m(um)m(b)s(er)i(of)f(argumen)m(ts)0 +3682 y Fp(Lua)24 b(do)s(es)g(not)g(pro)m(vide)f(an)m(y)i(explicit)d +(mec)m(hanism)i(to)g(deal)g(with)f(v)-5 b(ariable)23 +b(n)m(um)m(b)s(er)g(of)h(argumen)m(ts)g(in)f(function)0 +3795 y(calls.)38 b(Ho)m(w)m(ev)m(er,)28 b(one)d(can)g(use)f(table)h +(constructors)g(to)g(sim)m(ulate)f(this)f(mec)m(hanism.)39 +b(As)24 b(an)h(example,)g(supp)s(ose)0 3908 y(a)31 b(function)e(to)i +(concatenate)i(all)c(its)h(argumen)m(ts.)41 b(It)30 b(could)g(b)s(e)g +(written)f(lik)m(e)0 4077 y Fn(function)46 b(concat)g(\(o\))95 +4190 y(local)h(i)g(=)h(1)95 4303 y(local)f(s)g(=)h('')95 +4416 y(while)f(o[i])f(do)191 4529 y(s)h(=)h(s)f(..)g(o[i])191 +4642 y(i)g(=)h(i+1)95 4755 y(end)95 4868 y(return)f(s)0 +4981 y(end)0 5150 y Fp(T)-8 b(o)31 b(call)f(it,)g(one)g(uses)g(a)h +(table)f(constructor)h(to)g(join)f(all)f(argumen)m(ts:)95 +5320 y Fn(x)48 b(=)f(concat{"hello)e(",)i("john",)f(")h(and)g(",)g +("mary"})1905 5589 y Fp(25)p eop %%Page: 26 26 -26 25 bop -42 199 a Fo(T)l(o)15 b(call)g(it,)f(one)h(uses)h(a)e(table)h -(constructor)g(to)f(join)h(all)f(argumen)o(ts:)6 293 -y Fm(x)24 b(=)g(concat{"hello)e(",)h("john",)g(")h(and)f(",)h("mary"}) --42 415 y Fe(8.5)56 b(P)n(ersistence)-42 501 y Fo(Because)21 -b(of)e(its)g(re\015exiv)o(e)g(facilities,)g(p)q(ersistence)h(in)f(Lua)h -(can)g(b)q(e)g(ac)o(hiev)o(ed)g(within)f(the)g(language.)33 -b(This)-42 557 y(section)12 b(sho)o(ws)f(some)g(w)o(a)o(ys)g(to)g -(store)g(and)h(retriev)o(e)f(v)m(alues)i(in)e(Lua,)i(using)f(a)f(text)h -(\014le)g(written)e(in)i(the)g(language)-42 614 y(itself)j(as)f(the)i -(storage)e(media.)29 670 y(T)l(o)h(store)f(a)h(single)g(v)m(alue)g -(with)g(a)g(name,)f(the)h(follo)o(wing)e(co)q(de)j(is)e(enough:)-42 -764 y Fm(function)23 b(store)g(\(name,)g(value\))6 820 -y(write\(format\('\\n\045s)f(=',)h(name\)\))6 877 y -(write_value\(value\))-42 933 y(end)-42 1039 y(function)g(write_value)g -(\(value\))6 1096 y(local)g(t)h(=)g(type\(value\))102 -1152 y(if)f(t)h(==)g('nil')94 b(then)24 b(write\('nil'\))6 -1209 y(elseif)f(t)h(==)g('number')e(then)i(write\(value\))6 -1265 y(elseif)f(t)h(==)g('string')e(then)i(write\(value,)e('q'\))6 -1322 y(end)-42 1378 y(end)-42 1484 y Fo(In)16 b(order)f(to)g(restore)f -(this)h(v)m(alue,)g(a)g Fm(lua_dofile)f Fo(su\016ces.)29 -1541 y(Storing)i(tables)h(is)g(a)g(little)e(more)h(complex.)25 -b(Assuming)16 b(that)g(the)h(table)g(is)g(a)g(tree,)g(and)g(all)f -(indices)i(are)-42 1597 y(iden)o(ti\014ers)13 b(\(that)e(is,)i(the)g -(tables)f(are)g(b)q(eing)h(used)g(as)g(records\),)f(its)g(v)m(alue)h -(can)g(b)q(e)g(written)f(directly)g(with)g(table)-42 -1654 y(constructors.)19 b(First,)14 b(the)h(function)g -Fm(write_value)f Fo(is)h(c)o(hanged)g(to)-42 1748 y Fm(function)23 -b(write_value)g(\(value\))6 1804 y(local)g(t)h(=)g(type\(value\))102 -1860 y(if)f(t)h(==)g('nil')94 b(then)24 b(write\('nil'\))6 -1917 y(elseif)f(t)h(==)g('number')e(then)i(write\(value\))6 -1973 y(elseif)f(t)h(==)g('string')e(then)i(write\(value,)e('q'\))6 -2030 y(elseif)h(t)h(==)g('table')46 b(then)24 b(write_record\(value\))6 -2086 y(end)-42 2143 y(end)-42 2237 y Fo(The)16 b(function)f -Fm(write_record)e Fo(is:)-42 2330 y Fm(function)23 b(write_record\(t\)) -6 2387 y(local)g(i,)h(v)g(=)f(next\(t,)g(nil\))6 2443 -y(write\('{'\))47 b(--)23 b(starts)g(constructor)6 2500 -y(while)g(i)h(do)54 2556 y(store\(i,)f(v\))54 2613 y(write\(',)g('\)) -911 2748 y Fo(26)p eop -%%Page: 27 27 -27 26 bop 54 199 a Fm(i,)24 b(v)f(=)h(next\(t,)f(i\))6 -256 y(end)6 312 y(write\('}'\))47 b(--)23 b(closes)g(constructor)-42 -369 y(end)-42 490 y Fe(8.6)56 b(Inheritance)-42 576 y -Fo(The)15 b(fallbac)o(k)f(for)g(absen)o(t)g(indices)h(can)g(b)q(e)g -(used)g(to)f(implemen)o(t)e(man)o(y)h(kinds)i(of)f(inheritance)g(in)h -(Lua.)20 b(As)15 b(an)-42 632 y(example,)f(the)h(follo)o(wing)e(co)q -(de)j(implemen)o(ts)d(single)h(inheritance:)-42 726 y -Fm(function)23 b(Index)g(\(t,f\))6 782 y(if)h(f)g(==)f('parent')g(then) -47 b(--)24 b(to)f(avoid)g(loop)54 838 y(return)g(OldIndex\(t,f\))6 -895 y(end)6 951 y(local)g(p)h(=)g(t.parent)6 1008 y(if)g(type\(p\))f -(==)g('table')g(then)54 1064 y(return)g(p[f])6 1121 y(else)54 -1177 y(return)g(OldIndex\(t,f\))6 1234 y(end)-42 1290 -y(end)-42 1403 y(OldIndex)g(=)h(setfallback\("index",)d(Index\))-42 -1496 y Fo(Whenev)o(er)15 b(Lua)g(attempts)d(to)i(access)h(an)f(absen)o -(t)g(\014eld)h(in)f(a)g(table,)g(it)g(calls)f(the)i(fallbac)o(k)e -(function)h Fm(Index)p Fo(.)19 b(If)-42 1553 y(the)14 -b(table)e(has)h(a)g(\014eld)h Fm(parent)e Fo(with)h(a)g(table)f(v)m -(alue,)i(then)f(Lua)h(attempts)d(to)h(access)i(the)f(desired)g(\014eld) -h(in)f(this)-42 1609 y(paren)o(t)i(ob)s(ject.)k(This)c(pro)q(cess)g(is) -f(rep)q(eated)h(\\up)o(w)o(ards")f(un)o(til)g(a)h(v)m(alue)g(for)f(the) -h(\014eld)g(is)g(found)g(or)f(the)h(ob)s(ject)-42 1665 -y(has)h(no)f(paren)o(t.)k(In)d(the)f(latter)f(case,)h(the)g(previous)g -(fallbac)o(k)f(is)h(called)g(to)f(supply)i(a)e(v)m(alue)i(for)e(the)i -(\014eld.)29 1722 y(When)e(b)q(etter)g(p)q(erformance)f(is)g(needed,)i -(the)f(same)e(fallbac)o(k)h(ma)o(y)f(b)q(e)i(implemen)o(ted)e(in)i(C,)f -(as)g(illustrated)-42 1778 y(in)j(Figure)e(1.)20 b(This)14 -b(co)q(de)i(m)o(ust)e(b)q(e)i(registered)e(with:)6 1871 -y Fm(lua_pushstring\("parent"\);)6 1928 y(lockedParentName)22 -b(=)i(lua_ref\(1\);)6 1984 y(lua_pushobject\(lua_setfallba)o(ck\("ind)o -(ex",)d(Index\)\);)6 2041 y(lockedOldIndex)h(=)i(lua_ref\(1\);)-42 -2134 y Fo(Notice)15 b(ho)o(w)g(the)g(string)f Fm("parent")g -Fo(is)h(k)o(ept)g(lo)q(c)o(k)o(ed)g(in)g(Lua)h(for)e(optimal)f(p)q -(erformance.)-42 2255 y Fe(8.7)56 b(Programming)19 b(with)h(Classes)-42 -2341 y Fo(There)e(are)g(man)o(y)e(di\013eren)o(t)h(w)o(a)o(ys)g(to)g -(do)h(ob)s(ject-orien)o(ted)e(programming)e(in)k(Lua.)28 -b(This)17 b(section)h(presen)o(ts)-42 2398 y(one)g(p)q(ossible)f(w)o(a) -o(y)f(to)g(implemen)o(t)f(classes,)h(using)h(the)g(inheritance)g(mec)o -(hanism)e(presen)o(ted)j(ab)q(o)o(v)o(e.)25 b Fn(Ple)n(ase)-42 -2454 y(notic)n(e:)20 b(the)d(fol)r(lowing)e(examples)g(only)h(work)g -(with)g(the)h(index)e(fal)r(lb)n(ack)g(r)n(e)n(de\014ne)n(d)g(ac)n(c)n -(or)n(ding)g(to)h(Se)n(ction)e(8.6)p Fo(.)29 2511 y(As)j(one)g(could)f -(exp)q(ect,)i(a)e(go)q(o)q(d)h(w)o(a)o(y)e(to)h(represen)o(t)h(a)f -(class)g(is)h(as)f(a)g(table.)24 b(This)16 b(table)g(will)g(con)o(tain) -g(all)-42 2567 y(instance)f(metho)q(ds)f(of)h(the)g(class,)f(plus)h(ev) -o(en)o(tual)f(default)h(v)m(alues)g(for)f(instance)h(v)m(ariables.)k -(An)c(instance)g(of)g(a)-42 2623 y(class)g(has)g(its)f -Fm(parent)h Fo(\014eld)g(p)q(oin)o(ting)g(to)f(the)h(class,)g(and)g(so) -g(it)f(\\inherits")g(all)g(metho)q(ds.)911 2748 y(27)p +26 25 bop 0 91 a Ff(8.5)112 b(P)m(ersistence)0 263 y +Fp(Because)41 b(of)e(its)g(re\015exiv)m(e)g(facilities,)h(p)s +(ersistence)e(in)g(Lua)h(can)g(b)s(e)g(ac)m(hiev)m(ed)h(within)d(the)i +(language.)68 b(This)0 376 y(section)24 b(sho)m(ws)g(some)g(w)m(a)m(ys) +g(to)h(store)f(and)g(retriev)m(e)g(v)-5 b(alues)23 b(in)g(Lua,)i(using) +d(a)i(text)h(\014le)e(written)g(in)f(the)j(language)0 +489 y(itself)k(as)i(the)f(storage)i(media.)141 602 y(T)-8 +b(o)31 b(store)g(a)g(single)e(v)-5 b(alue)30 b(with)f(a)h(name,)h(the)g +(follo)m(wing)e(co)s(de)h(is)g(enough:)0 770 y Fn(function)46 +b(store)g(\(name,)g(value\))95 883 y(write\(format\('\\n\045s)d(=',)k +(name\)\))95 996 y(write_value\(value\))0 1109 y(end)0 +1298 y(function)f(write_value)e(\(value\))95 1411 y(local)j(t)g(=)h +(type\(value\))286 1524 y(if)g(t)f(==)g('nil')190 b(then)46 +b(write\('nil'\))95 1637 y(elseif)h(t)g(==)g('number')f(then)g +(write\(value\))95 1750 y(elseif)h(t)g(==)g('string')f(then)g +(write\(value,)f('q'\))95 1863 y(end)0 1976 y(end)0 2165 +y Fp(In)30 b(order)g(to)h(restore)g(this)e(v)-5 b(alue,)30 +b(a)h Fn(lua_dofile)c Fp(su\016ces.)141 2278 y(Storing)k(tables)h(is)f +(a)i(little)e(more)h(complex.)45 b(Assuming)31 b(that)h(the)h(table)f +(is)f(a)h(tree,)i(and)d(that)i(all)e(indices)0 2391 y(are)f(iden)m +(ti\014ers)e(\(that)j(is,)f(the)g(tables)f(are)i(b)s(eing)d(used)i(as)g +(records\),)g(then)g(its)f(v)-5 b(alue)30 b(can)g(b)s(e)f(written)g +(directly)0 2504 y(with)g(table)h(constructors.)41 b(First,)30 +b(the)h(function)e Fn(write_value)e Fp(is)j(c)m(hanged)h(to)0 +2672 y Fn(function)46 b(write_value)e(\(value\))95 2785 +y(local)j(t)g(=)h(type\(value\))286 2898 y(if)g(t)f(==)g('nil')190 +b(then)46 b(write\('nil'\))95 3011 y(elseif)h(t)g(==)g('number')f(then) +g(write\(value\))95 3124 y(elseif)h(t)g(==)g('string')f(then)g +(write\(value,)f('q'\))95 3237 y(elseif)i(t)g(==)g('table')94 +b(then)46 b(write_record\(value\))95 3350 y(end)0 3463 +y(end)0 3631 y Fp(The)30 b(function)f Fn(write_record)e +Fp(is:)0 3799 y Fn(function)46 b(write_record\(t\))95 +3912 y(local)h(i,)g(v)g(=)h(next\(t,)e(nil\))95 4025 +y(write\('{'\))93 b(--)47 b(starts)f(constructor)95 4138 +y(while)h(i)g(do)191 4251 y(store\(i,)e(v\))191 4364 +y(write\(',)g('\))191 4477 y(i,)i(v)h(=)f(next\(t,)f(i\))95 +4590 y(end)95 4703 y(write\('}'\))93 b(--)47 b(closes)f(constructor)0 +4816 y(end)0 5055 y Ff(8.6)112 b(Inheritance)0 5227 y +Fp(The)29 b(fallbac)m(k)f(for)h(absen)m(t)h(indices)e(can)h(b)s(e)g +(used)f(to)i(implemen)m(t)e(man)m(y)h(kinds)f(of)h(inheritance)f(in)g +(Lua.)40 b(As)29 b(an)0 5340 y(example,)h(the)h(follo)m(wing)e(co)s(de) +h(implemen)m(ts)f(single)g(inheritance:)1905 5589 y(26)p eop +%%Page: 27 27 +27 26 bop 0 91 a Fn(function)46 b(Index)g(\(t,f\))95 +204 y(if)i(f)f(==)g('parent')f(then)94 b(--)47 b(to)h(avoid)e(loop)191 +317 y(return)g(OldIndex\(t,f\))95 430 y(end)95 543 y(local)h(p)g(=)h +(t.parent)95 656 y(if)g(type\(p\))d(==)j('table')d(then)191 +769 y(return)h(p[f])95 882 y(else)191 995 y(return)g(OldIndex\(t,f\))95 +1108 y(end)0 1220 y(end)0 1446 y(OldIndex)g(=)h(setfallback\("index",) +42 b(Index\))0 1634 y Fp(Whenev)m(er)30 b(Lua)e(attempts)i(to)f(access) +i(an)d(absen)m(t)i(\014eld)d(in)h(a)h(table,)g(it)g(calls)f(the)h +(fallbac)m(k)f(function)g Fn(Index)p Fp(.)38 b(If)0 1747 +y(the)27 b(table)f(has)g(a)h(\014eld)e Fn(parent)f Fp(with)h(a)i(table) +f(v)-5 b(alue,)27 b(then)f(Lua)g(attempts)i(to)f(access)h(the)e +(desired)f(\014eld)g(in)g(this)0 1860 y(paren)m(t)30 +b(ob)5 b(ject.)41 b(This)28 b(pro)s(cess)h(is)g(rep)s(eated)h(\\up)m(w) +m(ards")g(un)m(til)d(a)k(v)-5 b(alue)29 b(for)g(the)h(\014eld)e(is)h +(found)f(or)i(the)g(ob)5 b(ject)0 1973 y(has)30 b(no)g(paren)m(t.)41 +b(In)30 b(the)h(latter)f(case,)i(the)f(previous)d(fallbac)m(k)i(is)g +(called)f(to)i(supply)d(a)j(v)-5 b(alue)30 b(for)g(the)h(\014eld.)141 +2086 y(When)c(b)s(etter)h(p)s(erformance)f(is)f(needed,)i(the)g(same)g +(fallbac)m(k)f(ma)m(y)h(b)s(e)f(implemen)m(ted)f(in)g(C,)h(as)h +(illustrated)0 2198 y(in)h(Figure)h(1.)41 b(This)29 b(co)s(de)h(m)m +(ust)g(b)s(e)g(registered)g(with:)95 2386 y Fn +(lua_pushstring\("parent"\);)95 2499 y(lockedParentName)44 +b(=)j(lua_ref\(1\);)95 2612 y(lua_pushobject\(lua_setfall)o(back)o +(\("i)o(ndex)o(",)42 b(Index\)\);)95 2725 y(lockedOldIndex)i(=)k +(lua_ref\(1\);)0 2912 y Fp(Notice)31 b(ho)m(w)g(the)f(string)g +Fn("parent")e Fp(is)h(k)m(ept)i(lo)s(c)m(k)m(ed)g(in)e(Lua)h(for)g +(optimal)g(p)s(erformance.)0 3156 y Ff(8.7)112 b(Programming)36 +b(with)g(Classes)0 3327 y Fp(There)f(are)h(man)m(y)f(di\013eren)m(t)g +(w)m(a)m(ys)i(to)f(do)f(ob)5 b(ject-orien)m(ted)37 b(programming)d(in)g +(Lua.)56 b(This)33 b(section)j(presen)m(ts)0 3440 y(one)e(p)s(ossible)e +(w)m(a)m(y)j(to)g(implemen)m(t)e(classes,)j(using)c(the)j(inheritance)d +(mec)m(hanism)i(presen)m(ted)g(ab)s(o)m(v)m(e.)53 b Fo(Ple)-5 +b(ase)0 3553 y(notic)g(e:)42 b(the)32 b(fol)5 b(lowing)33 +b(examples)g(only)g(work)f(with)h(the)f(index)g(fal)5 +b(lb)-5 b(ack)33 b(r)-5 b(e)g(de\014ne)g(d)33 b(ac)-5 +b(c)g(or)g(ding)34 b(to)f(Se)-5 b(ction)32 b(8.6)p Fp(.)141 +3666 y(As)d(one)g(could)e(exp)s(ect,)j(a)f(go)s(o)s(d)f(w)m(a)m(y)i(to) +f(represen)m(t)g(a)g(class)f(is)g(with)f(a)i(table.)40 +b(This)27 b(table)h(will)e(con)m(tain)j(all)0 3779 y(instance)h(metho)s +(ds)g(of)g(the)h(class,)f(plus)f(optional)h(default)f(v)-5 +b(alues)30 b(for)g(instance)g(v)-5 b(ariables.)40 b(An)30 +b(instance)g(of)h(a)0 3892 y(class)f(has)g(its)g Fn(parent)f +Fp(\014eld)g(p)s(oin)m(ting)f(to)j(the)g(class,)f(and)g(so)h(it)f +(\\inherits")f(all)g(metho)s(ds.)141 4005 y(F)-8 b(or)28 +b(instance,)f(a)g(class)g Fn(Point)e Fp(can)i(b)s(e)f(describ)s(ed)f +(as)i(in)f(Figure)g(2.)40 b(F)-8 b(unction)26 b Fn(create)f +Fp(helps)h(the)h(creation)0 4118 y(of)e(new)f(p)s(oin)m(ts,)h(adding)e +(the)i(paren)m(t)g(\014eld.)37 b(F)-8 b(unction)24 b +Fn(move)g Fp(is)g(an)g(example)g(of)h(an)g(instance)f(metho)s(d.)38 +b(Finally)-8 b(,)0 4231 y(a)38 b(sub)s(class)d(can)j(b)s(e)e(created)i +(as)g(a)g(new)e(table,)j(with)d(the)i Fn(parent)d Fp(\014eld)h(p)s(oin) +m(ting)f(to)j(its)f(sup)s(erclass.)60 b(It)37 b(is)0 +4344 y(in)m(teresting)c(to)h(notice)f(ho)m(w)g(the)h(use)f(of)g +Fn(self)f Fp(in)g(metho)s(d)h Fn(create)e Fp(allo)m(ws)i(this)f(metho)s +(d)h(to)h(w)m(ork)f(prop)s(erly)0 4457 y(ev)m(en)e(when)e(inherited)f +(b)m(y)i(a)h(sub)s(class.)39 b(As)30 b(usual,)f(a)i(sub)s(class)d(ma)m +(y)j(o)m(v)m(erwrite)g(an)m(y)g(inherited)d(metho)s(d)h(with)0 +4569 y(its)h(o)m(wn)g(v)m(ersion.)0 4813 y Ff(8.8)112 +b(Mo)s(dules)0 4985 y Fp(Here)33 b(w)m(e)f(explain)f(one)i(p)s(ossible) +c(w)m(a)m(y)34 b(to)f(sim)m(ulate)e(mo)s(dules)f(in)h(Lua.)46 +b(The)32 b(main)f(idea)h(is)f(to)i(use)f(a)h(table)f(to)0 +5097 y(store)f(the)g(mo)s(dule)d(functions.)141 5210 +y(A)j(mo)s(dule)d(should)h(b)s(e)g(written)h(as)h(a)f(separate)i(c)m(h) +m(unk,)e(starting)g(with:)1905 5589 y(27)p eop %%Page: 28 28 -28 27 bop -42 261 1950 6 v -42 355 a Fm(#include)23 b("lua.h")-42 -467 y(int)h(lockedParentName;)45 b(/*)24 b(lock)f(index)g(for)h(the)f -(string)g("parent")g(*/)-42 524 y(int)h(lockedOldIndex;)93 -b(/*)24 b(previous)f(fallback)f(function)h(*/)-42 637 -y(void)h(callOldFallback)e(\(lua_Object)g(table,)h(lua_Object)g -(index\))-42 693 y({)6 750 y(lua_Object)g(oldIndex)f(=)i -(lua_getref\(lockedOldIndex\);)6 806 y(lua_pushobject\(table\);)6 -863 y(lua_pushobject\(index\);)6 919 y(lua_callfunction\(oldIndex\);) --42 976 y(})-42 1088 y(void)g(Index)f(\(void\))-42 1145 -y({)6 1201 y(lua_Object)g(table)g(=)h(lua_getparam\(1\);)6 -1258 y(lua_Object)f(index)g(=)h(lua_getparam\(2\);)6 -1314 y(lua_Object)f(parent;)6 1371 y(if)h(\(lua_isstring\(index\))d(&&) -j(strcmp\(lua_getstring\(in)o(dex\),)d("parent"\))h(==)i(0\))6 -1427 y({)54 1484 y(callOldFallback\(table,)d(index\);)54 -1540 y(return;)6 1597 y(})6 1653 y(lua_pushobject\(table\);)6 -1709 y(lua_pushref\(lockedParentName)o(\);)6 1766 y(parent)i(=)h -(lua_getsubscript\(\);)6 1822 y(if)g(\(lua_istable\(parent\)\))6 -1879 y({)54 1935 y(lua_pushobject\(parent\);)54 1992 -y(lua_pushobject\(index\);)54 2048 y(/*)g(return)f(result)g(from)g -(getsubscript)f(*/)54 2105 y(lua_pushobject\(lua_getsubs)o(cript\(\))o -(\);)6 2161 y(})6 2218 y(else)54 2274 y(callOldFallback\(table,)f -(index\);)-42 2330 y(})665 2466 y Fo(Figure)15 b(1:)k(Inheritance)d(in) -f(C.)p -42 2522 V 911 2748 a(28)p eop +28 27 bop 0 301 3900 12 v 0 489 a Fn(#include)46 b("lua.h")0 +715 y(int)h(lockedParentName;)91 b(/*)47 b(lock)g(index)f(for)h(the)g +(string)f("parent")f(*/)0 828 y(int)i(lockedOldIndex;)187 +b(/*)47 b(previous)e(fallback)h(function)g(*/)0 1054 +y(void)h(callOldFallback)c(\(lua_Object)i(table,)h(lua_Object)f +(index\))0 1167 y({)95 1279 y(lua_Object)g(oldIndex)h(=)h +(lua_getref\(lockedOldIndex\))o(;)95 1392 y(lua_pushobject\(table\);)95 +1505 y(lua_pushobject\(index\);)95 1618 y(lua_callfunction\(oldIndex\)) +o(;)95 1731 y(if)h(\(lua_getresult\(1\))43 b(!=)k(LUA_NOOBJECT\))191 +1844 y(lua_pushobject\(lua_getre)o(sult)o(\(1\))o(\);)89 +b(/*)48 b(return)e(result)g(*/)0 1957 y(})0 2183 y(void)h(Index)f +(\(void\))0 2296 y({)95 2409 y(lua_Object)f(table)i(=)g +(lua_getparam\(1\);)95 2521 y(lua_Object)e(index)i(=)g +(lua_getparam\(2\);)95 2634 y(lua_Object)e(parent;)95 +2747 y(if)j(\(lua_isstring\(index\))42 b(&&)47 b +(strcmp\(lua_getstring\(inde)o(x\),)41 b("parent"\))k(==)j(0\))95 +2860 y({)191 2973 y(callOldFallback\(table,)42 b(index\);)191 +3086 y(return;)95 3199 y(})95 3312 y(lua_pushobject\(table\);)95 +3425 y(lua_pushref\(lockedParentNa)o(me\);)95 3538 y(parent)47 +b(=)g(lua_getsubscript\(\);)95 3651 y(if)h(\(lua_istable\(parent\)\))95 +3763 y({)191 3876 y(lua_pushobject\(parent\);)191 3989 +y(lua_pushobject\(index\);)191 4102 y(/*)f(return)f(result)g(from)h +(getsubscript)d(*/)191 4215 y(lua_pushobject\(lua_getsu)o(bscr)o(ipt)o +(\(\)\);)95 4328 y(})95 4441 y(else)191 4554 y(callOldFallback\(table,) +e(index\);)0 4667 y(})1414 4937 y Fp(Figure)30 b(1:)41 +b(Inheritance)29 b(in)g(C.)p 0 5050 V 1905 5589 a(28)p +eop %%Page: 29 29 -29 28 bop -42 159 1950 6 v -42 253 a Fm(Point)24 b(=)f({x)h(=)g(0,)f(y) -h(=)g(0})-42 366 y(function)f(Point:create)f(\(o\))6 -423 y(o.parent)h(=)h(self)6 479 y(return)f(o)-42 536 -y(end)-42 648 y(function)g(Point:move)g(\(p\))6 705 y(self.x)g(=)h -(self.x)f(+)h(p.x)6 761 y(self.y)f(=)h(self.y)f(+)h(p.y)-42 -818 y(end)-42 931 y(...)-42 1044 y(--)-42 1100 y(--)g(creating)f -(points)-42 1157 y(--)-42 1213 y(p1)h(=)g(Point:create{x)e(=)h(10,)h(y) -g(=)f(20})-42 1270 y(p2)h(=)g(Point:create{x)e(=)h(10})48 -b(--)23 b(y)h(will)f(be)h(inherited)f(until)g(it)g(is)h(set)-42 -1382 y(--)-42 1439 y(--)g(example)f(of)h(a)f(method)g(invocation)-42 -1495 y(--)-42 1552 y(p1:move\(p2\))690 1687 y Fo(Figure)15 -b(2:)k(A)c(Class)g(P)o(oin)o(t.)p -42 1744 V 29 1872 -a(F)l(or)e(instance,)g(a)g(class)g Fm(Point)g Fo(can)g(b)q(e)h(describ) -q(ed)h(as)e(in)g(Figure)f(2.)19 b(F)l(unction)14 b Fm(create)e -Fo(helps)i(the)f(creation)-42 1928 y(of)f(new)h(p)q(oin)o(ts,)f(adding) -g(the)g(paren)o(t)g(\014eld.)20 b(F)l(unction)12 b Fm(move)f -Fo(is)h(an)h(example)e(of)h(an)g(instance)g(metho)q(d.)18 -b(Finally)l(,)-42 1984 y(a)h(sub)q(class)f(can)h(b)q(e)h(created)e(as)g -(a)h(new)g(table,)f(with)g(the)h Fm(parent)f Fo(\014eld)h(p)q(oin)o -(ting)e(to)h(its)g(sup)q(erclass.)30 b(It)19 b(is)-42 -2041 y(in)o(teresting)d(to)g(notice)g(ho)o(w)g(the)h(use)g(of)f -Fm(self)g Fo(in)h(metho)q(d)e Fm(create)h Fo(allo)o(ws)f(this)h(metho)q -(d)g(to)g(w)o(ork)g(prop)q(erly)-42 2097 y(ev)o(en)g(when)g(inherited)f -(b)o(y)g(a)f(sub)q(class.)20 b(As)c(usual,)e(a)h(sub)q(class)g(ma)o(y)f -(o)o(v)o(erwrite)f(an)o(y)i(inherited)g(metho)q(d)f(with)-42 -2154 y(its)h(o)o(wn)g(v)o(ersion.)-42 2275 y Fe(8.8)56 -b(Mo)r(dules)-42 2361 y Fo(Here)17 b(w)o(e)f(explain)f(one)i(p)q -(ossible)f(w)o(a)o(y)f(to)g(sim)o(ulate)f(mo)q(dules)h(in)h(Lua.)23 -b(The)17 b(main)d(idea)i(is)g(to)f(use)i(a)f(table)f(to)-42 -2418 y(store)g(the)g(mo)q(dule)g(functions.)29 2474 y(A)g(mo)q(dule)g -(should)g(b)q(e)h(written)e(as)h(a)g(separate)f(c)o(h)o(unk,)h -(starting)f(with:)-42 2567 y Fm(if)24 b(modulename)f(then)g(return)g -(end)47 b(--)24 b(avoid)f(loading)g(twice)g(the)h(same)f(module)-42 -2623 y(modulename)g(=)h({})47 b(--)24 b(create)f(a)h(table)f(to)g -(represent)g(the)g(module)911 2748 y Fo(29)p eop +29 28 bop 0 1092 3900 12 v 0 1279 a Fn(Point)46 b(=)i({x)f(=)g(0,)h(y)f +(=)h(0})0 1505 y(function)e(Point:create)e(\(o\))95 1618 +y(o.parent)i(=)h(self)95 1731 y(return)g(o)0 1844 y(end)0 +2070 y(function)f(Point:move)f(\(p\))95 2183 y(self.x)i(=)g(self.x)f(+) +i(p.x)95 2296 y(self.y)f(=)g(self.y)f(+)i(p.y)0 2409 +y(end)0 2634 y(...)0 2860 y(--)0 2973 y(--)f(creating)f(points)0 +3086 y(--)0 3199 y(p1)h(=)h(Point:create{x)c(=)j(10,)g(y)g(=)h(20})0 +3312 y(p2)f(=)h(Point:create{x)c(=)j(10})95 b(--)47 b(y)g(will)g(be)g +(inherited)e(until)i(it)g(is)g(set)0 3538 y(--)0 3651 +y(--)g(example)f(of)h(a)h(method)e(invocation)0 3763 +y(--)0 3876 y(p1:move\(p2\))1451 4147 y Fp(Figure)30 +b(2:)41 b(A)30 b(Class)f Fn(Point)p Fp(.)p 0 4260 V 1905 +5589 a(29)p eop %%Page: 30 30 -30 29 bop -42 159 1950 6 v -42 253 a Fm(function)23 b(open)h(\(mod\))6 -310 y(local)f(n,)h(f)g(=)f(next\(mod,)g(nil\))6 366 y(while)g(n)h(do)54 -423 y(setglobal\(n,)e(f\))54 479 y(n,)i(f)f(=)h(next\(mod,)f(n\))6 -536 y(end)-42 592 y(end)645 727 y Fo(Figure)14 b(3:)20 -b(Op)q(ening)c(a)f(mo)q(dule.)p -42 784 V -42 913 a(After)g(that,)f -(functions)h(can)h(b)q(e)g(directly)e(de\014ned)j(with)d(the)h(syn)o -(tax)-42 1006 y Fm(function)23 b(modulename.foo)f(\(...\))6 -1063 y(...)-42 1119 y(end)29 1213 y Fo(An)o(y)14 b(co)q(de)g(that)f -(needs)i(this)e(mo)q(dule)g(has)g(only)h(to)f(execute)h -Fm(dofile\("filename"\))p Fo(,)d(where)j Fm(filename)f -Fo(is)-42 1270 y(the)j(\014le)f(where)g(the)h(mo)q(dule)e(is)h -(written.)k(After)14 b(this,)h(an)o(y)g(function)g(can)g(b)q(e)h -(called)f(with)-42 1363 y Fm(modulename.foo\(...\))29 -1457 y Fo(If)h(a)f(mo)q(dule)g(function)h(is)f(going)g(to)g(b)q(e)h -(used)g(man)o(y)f(times,)e(the)j(program)e(can)i(giv)o(e)f(a)g(lo)q -(cal)g(name)f(to)i(it.)-42 1514 y(Because)g(functions)f(are)g(v)m -(alues,)g(it)g(is)f(enough)i(to)e(write)-42 1607 y Fm(localname)23 -b(=)h(modulename.foo)-42 1701 y Fo(Finally)l(,)15 b(a)g(mo)q(dule)g(ma) -o(y)f(b)q(e)j Fn(op)n(ene)n(d)p Fo(,)e(giving)f(direct)i(access)g(to)f -(all)g(its)g(functions,)g(as)g(sho)o(wn)h(in)f(the)h(co)q(de)h(in)-42 -1758 y(Figure)e(3.)-42 1879 y Fe(8.9)56 b(A)19 b(CF)-5 -b(unction)-42 1965 y Fo(A)18 b(CF)l(unction)f(to)f(compute)h(the)g -(maxim)o(um)c(of)k(a)g(v)m(ariable)g(n)o(um)o(b)q(er)f(of)h(argumen)o -(ts)f(is)h(sho)o(wn)g(in)g(Figure)f(4.)-42 2022 y(After)f(registered)g -(with)-42 2115 y Fm(lua_register)23 b(\("max",)g(math_max\);)-42 -2209 y Fo(this)15 b(function)g(is)g(a)o(v)m(ailable)f(in)h(Lua,)g(as)g -(follo)o(ws:)-42 2303 y Fm(i)24 b(=)g(max\(4,)f(5,)h(10,)f(-34\))47 -b(--)24 b(i)g(receives)e(10)-42 2425 y Fe(8.10)56 b(Calling)21 -b(Lua)e(F)-5 b(unctions)-42 2511 y Fo(This)17 b(example)e(illustrates)f -(ho)o(w)i(a)h(C)f(function)g(can)h(call)e(the)i(Lua)g(function)f -Fm(remove_blanks)f Fo(presen)o(ted)i(in)-42 2567 y(Section)f(8.3.)911 -2748 y(30)p eop +30 29 bop 0 12 3900 12 v 0 199 a Fn(function)46 b(open)g(\(mod\))95 +312 y(local)h(n,)g(f)g(=)h(next\(mod,)d(nil\))95 425 +y(while)i(n)g(do)191 538 y(setglobal\(n,)d(f\))191 651 +y(n,)j(f)h(=)f(next\(mod,)e(n\))95 764 y(end)0 877 y(end)1372 +1148 y Fp(Figure)30 b(3:)41 b(Op)s(ening)28 b(a)j(mo)s(dule.)p +0 1260 V 0 1518 a Fn(if)47 b(modulename)e(then)i(return)f(end)95 +b(--)47 b(avoid)f(loading)g(twice)g(the)h(same)g(module)0 +1631 y(modulename)e(=)i({})95 b(--)48 b(create)e(a)h(table)f(to)i +(represent)d(the)i(module)0 1818 y Fp(After)31 b(that,)g(functions)e +(can)h(b)s(e)g(directly)f(de\014ned)g(with)g(the)i(syn)m(tax)0 +2006 y Fn(function)46 b(modulename.foo)d(\(...\))95 2119 +y(...)0 2232 y(end)141 2419 y Fp(An)m(y)28 b(co)s(de)f(that)h(needs)f +(this)g(mo)s(dule)f(has)h(only)f(to)j(execute)f Fn +(dofile\("filename"\))p Fp(,)c(where)j Fn(filename)e +Fp(is)0 2532 y(the)31 b(\014le)e(where)h(the)g(mo)s(dule)f(is)h +(written.)39 b(After)31 b(this,)f(an)m(y)g(function)f(can)i(b)s(e)f +(called)f(with)0 2720 y Fn(modulename.foo\(...\))141 +2908 y Fp(If)i(a)h(mo)s(dule)e(function)g(is)g(going)h(to)i(b)s(e)d +(used)h(man)m(y)g(times,)h(the)f(program)h(can)f(giv)m(e)h(a)g(lo)s +(cal)f(name)g(to)h(it.)0 3021 y(Because)g(functions)d(are)h(v)-5 +b(alues,)30 b(it)g(is)g(enough)g(to)h(write)0 3208 y +Fn(localname)45 b(=)j(modulename.foo)0 3396 y Fp(Finally)-8 +b(,)30 b(a)i(mo)s(dule)e(ma)m(y)i(b)s(e)f Fo(op)-5 b(ene)g(d)p +Fp(,)34 b(giving)d(direct)g(access)h(to)h(all)d(its)h(functions,)g(as)h +(sho)m(wn)e(in)h(the)g(co)s(de)h(in)0 3509 y(Figure)e(3.)0 +3752 y Ff(8.9)112 b(A)37 b(CF)-9 b(unction)0 3924 y Fp(A)35 +b(CF)-8 b(unction)34 b(to)h(compute)g(the)f(maxim)m(um)g(of)g(a)h(v)-5 +b(ariable)34 b(n)m(um)m(b)s(er)f(of)i(argumen)m(ts)g(is)e(sho)m(wn)h +(in)f(Figure)h(4.)0 4037 y(After)d(registered)f(with)0 +4224 y Fn(lua_register)44 b(\("max",)i(math_max\);)0 +4412 y Fp(this)29 b(function)g(is)h(a)m(v)-5 b(ailable)29 +b(in)h(Lua,)g(as)g(follo)m(ws:)0 4600 y Fn(i)47 b(=)h(max\(4,)e(5,)h +(10,)g(-34\))94 b(--)48 b(i)f(receives)f(10)0 4843 y +Ff(8.10)112 b(Calling)36 b(Lua)i(F)-9 b(unctions)0 5015 +y Fp(This)31 b(example)i(illustrates)e(ho)m(w)i(a)g(C)g(function)e(can) +i(call)g(the)g(Lua)f(function)g Fn(remove_blanks)d Fp(presen)m(ted)k +(in)0 5128 y(Section)d(8.3.)1905 5589 y(30)p eop %%Page: 31 31 -31 30 bop -42 628 1950 6 v -42 722 a Fm(void)24 b(math_max)f(\(void\)) --42 778 y({)-18 834 y(int)h(i=1;)71 b(/*)23 b(number)g(of)h(arguments)f -(*/)-18 891 y(double)g(d,)h(dmax;)-18 947 y(lua_Object)f(o;)-18 -1004 y(/*)h(the)f(function)g(must)g(get)h(at)g(least)f(one)g(argument)g -(*/)-18 1060 y(if)h(\(\(o)f(=)h(lua_getparam\(i++\)\))e(==)h -(LUA_NOOBJECT\))30 1117 y(lua_error)g(\("too)g(few)g(arguments)g(to)h -(function)e(`max'"\);)-18 1173 y(/*)i(and)f(this)h(argument)e(must)i -(be)f(a)h(number)f(*/)-18 1230 y(if)h(\(!lua_isnumber\(o\)\))30 -1286 y(lua_error)f(\("incorrect)f(argument)h(to)g(function)g(`max'"\);) --18 1343 y(dmax)h(=)f(lua_getnumber)f(\(o\);)-18 1399 -y(/*)i(loops)f(until)g(there)g(is)h(no)g(more)f(arguments)g(*/)-18 -1455 y(while)h(\(\(o)f(=)h(lua_getparam\(i++\)\))d(!=)j(LUA_NOOBJECT\)) --18 1512 y({)6 1568 y(if)g(\(!lua_isnumber\(o\)\))54 -1625 y(lua_error)f(\("incorrect)f(argument)h(to)g(function)g(`max'"\);) -6 1681 y(d)h(=)g(lua_getnumber)e(\(o\);)6 1738 y(if)i(\(d)f(>)h(dmax\)) -f(dmax)h(=)f(d;)-18 1794 y(})-18 1851 y(/*)h(push)f(the)h(result)f(to)g -(be)h(returned)f(*/)-18 1907 y(lua_pushnumber)f(\(dmax\);)-42 -1964 y(})623 2099 y Fo(Figure)14 b(4:)20 b(C)15 b(function)g -Fm(math)p 1147 2099 15 2 v 16 w(max)p Fo(.)p -42 2155 -1950 6 v 911 2748 a(31)p eop +31 30 bop 0 1148 3900 12 v 0 1336 a Fn(void)47 b(math_max)e(\(void\))0 +1449 y({)48 1562 y(int)i(i=1;)142 b(/*)47 b(number)f(of)h(arguments)e +(*/)48 1675 y(double)h(d,)h(dmax;)48 1788 y(lua_Object)e(o;)48 +1900 y(/*)i(the)g(function)e(must)i(get)g(at)g(least)f(one)h(argument)f +(*/)48 2013 y(if)h(\(\(o)g(=)g(lua_getparam\(i++\)\))c(==)k +(LUA_NOOBJECT\))143 2126 y(lua_error)e(\("too)i(few)g(arguments)e(to)i +(function)f(`max'"\);)48 2239 y(/*)h(and)g(this)f(argument)g(must)h(be) +g(a)g(number)f(*/)48 2352 y(if)h(\(!lua_isnumber\(o\)\))143 +2465 y(lua_error)e(\("incorrect)g(argument)h(to)h(function)e(`max'"\);) +48 2578 y(dmax)h(=)i(lua_getnumber)c(\(o\);)48 2691 y(/*)j(loops)f +(until)h(there)f(is)h(no)g(more)g(arguments)e(*/)48 2804 +y(while)h(\(\(o)h(=)g(lua_getparam\(i++\)\))c(!=)k(LUA_NOOBJECT\))48 +2917 y({)95 3030 y(if)h(\(!lua_isnumber\(o\)\))191 3142 +y(lua_error)d(\("incorrect)g(argument)g(to)j(function)d(`max'"\);)95 +3255 y(d)j(=)f(lua_getnumber)e(\(o\);)95 3368 y(if)j(\(d)f(>)g(dmax\))g +(dmax)f(=)i(d;)48 3481 y(})48 3594 y(/*)f(push)g(the)f(result)h(to)g +(be)g(returned)e(*/)48 3707 y(lua_pushnumber)f(\(dmax\);)0 +3820 y(})1328 4091 y Fp(Figure)30 b(4:)41 b(C)30 b(function)f +Fn(math)p 2376 4091 29 4 v 33 w(max)p Fp(.)p 0 4204 3900 +12 v 1905 5589 a(31)p eop %%Page: 32 32 -32 31 bop -42 199 a Fm(void)24 b(remove_blanks)e(\(char)h(*s\))-42 -256 y({)6 312 y(lua_pushstring\(s\);)45 b(/*)24 b(prepare)f(parameter)g -(*/)6 369 y(lua_call\("remove_blanks"\);)44 b(/*)24 b(call)f(Lua)h -(function)f(*/)6 425 y(strcpy\(s,)g(lua_getstring\(lua_getresu)o -(lt\(1\)\)\))o(;)45 b(/*)24 b(copy)f(result)g(back)g(to)h('s')f(*/)-42 -482 y(})-42 625 y Fp(Ac)n(kno)n(wledgmen)n(ts)-42 726 -y Fo(The)15 b(authors)f(w)o(ould)f(lik)o(e)h(to)f(thank)h(CENPES/PETR)o -(OBR)1053 715 y(\023)1047 726 y(AS)h(whic)o(h,)f(join)o(tly)f(with)h -Fa(T)l(eC)1574 740 y(Graf)1656 726 y Fo(,)g(used)h(exten-)-42 -783 y(siv)o(ely)i(early)g(v)o(ersions)g(of)h(this)f(system)f(and)i(ga)o -(v)o(e)f(v)m(aluable)g(commen)o(ts.)25 b(The)18 b(authors)f(w)o(ould)g -(also)g(lik)o(e)g(to)-42 839 y(thank)f(Carlos)d(Henrique)j(Levy)l(,)f -(who)g(found)h(the)f(name)f(of)h(the)h(game.)i(Lua)d(means)g -Fn(mo)n(on)g Fo(in)g(P)o(ortuguese.)-42 982 y Fp(A)68 -b(Incompatibiliti)q(es)24 b(with)f(Previous)h(V)-6 b(ersions)-42 -1084 y Fo(Although)15 b(great)f(care)h(has)g(b)q(een)h(tak)o(en)f(to)f -(a)o(v)o(oid)g(incompatibiliti)o(es)e(with)j(the)g(previous)g(public)g -(v)o(ersions)f(of)-42 1140 y(Lua,)i(some)e(di\013erences)h(had)g(to)g -(b)q(e)h(in)o(tro)q(duced.)k(Here)15 b(is)g(a)g(list)f(of)h(all)f -(these)h(di\013erences.)-42 1262 y Fe(Incompatibilities)21 -b(with)f(v)n(ersion)f(2.2)27 1348 y Fj(\017)j Fo(F)l(unctions)15 -b Fm(date)f Fo(and)h Fm(time)f Fo(\(from)f Fm(iolib)p -Fo(\))g(ha)o(v)o(e)i(b)q(een)h(sup)q(erseded)g(b)o(y)e(the)h(new)g(v)o -(ersion)f(of)h(function)72 1404 y Fm(date)p Fo(.)27 1498 -y Fj(\017)22 b Fo(F)l(unction)17 b Fm(append)g Fo(\(from)e -Fm(iolib)p Fo(\))i(no)o(w)f(returns)i(1)f(whenev)o(er)h(it)e(succeeds,) -j(whether)e(the)h(\014le)f(is)g(new)72 1555 y(or)e(not.)27 -1648 y Fj(\017)22 b Fo(F)l(unction)14 b Fm(int2str)g -Fo(\(from)f Fm(strlib)p Fo(\))g(has)h(b)q(een)i(sup)q(erseded)g(b)o(y)e -(new)h(function)g Fm(format)p Fo(,)e(with)h(param-)72 -1705 y(eter)h Fm("\045c")p Fo(.)27 1799 y Fj(\017)22 -b Fo(The)15 b(API)h(lo)q(c)o(k)f(mec)o(hanism)d(has)j(b)q(een)h(sup)q -(erseded)h(b)o(y)e(the)g(reference)h(mec)o(hanism.)h(Ho)o(w)o(ev)o(er,) -d Fm(lua.h)72 1855 y Fo(pro)o(vides)h(compatibilit)n(y)e(macros,)g(so)h -(there)i(is)e(no)i(need)g(to)e(c)o(hange)h(programs.)27 -1949 y Fj(\017)22 b Fo(API)16 b(function)f Fm(lua_pushliteral)e -Fo(no)o(w)i(is)f(just)h(a)g(macro)f(to)g Fm(lua_pushstring)p -Fo(.)-42 2071 y Fe(Incompatibilities)21 b(with)f(v)n(ersion)f(2.1)27 -2156 y Fj(\017)j Fo(The)13 b(function)f Fm(type)g Fo(no)o(w)g(returns)h -(the)f(string)g Fm("function")f Fo(b)q(oth)h(for)g(C)g(and)h(Lua)g -(functions.)19 b(Because)72 2213 y(Lua)f(functions)g(and)g(C)g -(functions)f(are)h(compatible,)e(this)i(b)q(eha)o(vior)f(is)g(usually)h -(more)e(useful.)28 b(When)72 2269 y(needed,)20 b(the)e(second)g(result) -g(of)f(function)h Fm(type)f Fo(ma)o(y)f(b)q(e)j(used)g(to)e -(distinguish)g(b)q(et)o(w)o(een)h(Lua)h(and)f(C)72 2326 -y(functions.)27 2420 y Fj(\017)k Fo(A)15 b(function)g(de\014nition)g -(only)g(assigns)f(the)h(function)g(v)m(alue)g(to)g(the)g(giv)o(en)f(v)m -(ariable)h(at)f(execution)h(time.)911 2748 y(32)p eop +32 31 bop 0 91 a Fn(void)47 b(remove_blanks)d(\(char)i(*s\))0 +204 y({)95 317 y(lua_pushstring\(s\);)91 b(/*)47 b(prepare)f(parameter) +f(*/)95 430 y(lua_call\("remove_blanks"\);)89 b(/*)47 +b(call)g(Lua)g(function)e(*/)95 543 y(strcpy\(s,)h +(lua_getstring\(lua_getre)o(sult)o(\(1\)\))o(\);)89 b(/*)47 +b(copy)g(result)f(back)h(to)g('s')g(*/)0 656 y(})0 942 +y Fq(9)135 b(Lua)44 b(Stand-alone)0 1145 y Fp(Although)39 +b(Lua)g(has)h(b)s(een)f(designed)g(as)h(an)f(extension)h(language,)i +(the)e(language)h(can)f(also)f(b)s(e)h(used)f(as)h(a)0 +1258 y(stand-alone)33 b(in)m(terpreter.)47 b(An)32 b(implemen)m(tation) +f(of)i(suc)m(h)f(an)h(in)m(terpreter,)g(called)f(simply)e +Fn(lua)p Fp(,)j(is)e(pro)m(vided)0 1371 y(with)38 b(the)h(standard)f +(distribution.)63 b(This)37 b(program)h(can)i(b)s(e)e(called)g(with)g +(an)m(y)h(sequence)g(of)g(the)g(follo)m(wing)0 1484 y(argumen)m(ts:)0 +1672 y Fn(-v)45 b Fp(prin)m(ts)29 b(v)m(ersion)h(information.)0 +1859 y Fn(-)45 b Fp(runs)29 b(in)m(teractiv)m(ely)-8 +b(,)31 b(accepting)g(commands)f(from)g(standard)g(input)e(un)m(til)h +(an)h Fn(EOF)p Fp(.)0 2047 y Fn(-e)47 b(stat)e Fp(executes)31 +b Fn(stat)e Fp(as)i(a)g(Lua)f(c)m(h)m(unk.)0 2234 y Fn(var=exp)44 +b Fp(executes)31 b Fn(var=exp)e Fp(as)h(a)h(Lua)f(c)m(h)m(unk.)0 +2422 y Fn(filename)43 b Fp(executes)32 b(\014le)d Fn(filename)f +Fp(as)j(a)g(Lua)f(c)m(h)m(unk.)0 2610 y(All)f(argumen)m(ts)i(are)f +(handle)f(in)g(order.)41 b(F)-8 b(or)31 b(instance,)f(an)g(in)m(v)m(o)s +(cation)h(lik)m(e)0 2797 y Fn($)47 b(lua)g(-)h(a=1)f(prog.lua)0 +2985 y Fp(will)25 b(\014rst)j(in)m(teract)g(with)f(the)h(user)g(un)m +(til)e(an)i Fn(EOF)p Fp(,)f(then)h(will)d(set)k Fn(a)f +Fp(to)g(1,)i(and)d(\014nally)f(will)f(run)i(\014le)g +Fn(prog.lua)p Fp(.)141 3098 y(Please)32 b(notice)g(that)g(the)g(in)m +(teraction)g(with)e(the)i(shell)e(ma)m(y)i(lead)f(to)i(unin)m(tended)c +(results.)44 b(F)-8 b(or)32 b(instance,)0 3211 y(a)f(call)e(lik)m(e)0 +3398 y Fn($)47 b(lua)g(a="name")f(prog.lua)0 3586 y Fp(will)32 +b Fo(not)j Fp(set)f Fn(a)g Fp(to)h(the)g(string)e Fn("name")p +Fp(.)51 b(Instead,)35 b(the)g(quotes)g(will)c(b)s(e)j(handled)e(b)m(y)i +(the)h(shell,)f(lua)f(will)f(get)0 3699 y(only)d Fn(a=name)g +Fp(to)i(run,)e(and)h Fn(a)g Fp(will)e(\014nish)g(with)h +Fm(nil)p Fp(.)41 b(Instead,)30 b(one)h(should)d(write)0 +3887 y Fn($)47 b(lua)g('a="name"')e(prog.lua)0 4173 y +Fq(Ac)l(kno)l(wledgmen)l(ts)0 4376 y Fp(The)28 b(authors)g(w)m(ould)f +(lik)m(e)h(to)h(thank)g(CENPES/PETR)m(OBR)2191 4353 y(\023)2180 +4376 y(AS)e(whic)m(h,)h(join)m(tly)f(with)g Fa(T)-8 b(eC)3231 +4404 y(Graf)3395 4376 y Fp(,)29 b(used)f(exten-)0 4489 +y(siv)m(ely)35 b(early)g(v)m(ersions)f(of)i(this)e(system)i(and)f(ga)m +(v)m(e)j(v)-5 b(aluable)34 b(commen)m(ts.)57 b(The)35 +b(authors)g(w)m(ould)f(also)h(lik)m(e)g(to)0 4602 y(thank)30 +b(Carlos)g(Henrique)f(Levy)-8 b(,)31 b(who)f(found)f(the)i(name)f(of)g +(the)h(game.)42 b(Lua)30 b(means)g Fo(mo)-5 b(on)32 b +Fp(in)d(P)m(ortuguese.)0 4888 y Fq(Incompatibilities)47 +b(with)f(Previous)f(V)-11 b(ersions)0 5091 y Fp(Although)29 +b(great)i(care)g(has)f(b)s(een)f(tak)m(en)i(to)g(a)m(v)m(oid)g +(incompatibilities)26 b(with)i(the)j(previous)d(public)f(v)m(ersions)j +(of)0 5204 y(Lua,)g(some)h(di\013erences)f(had)g(to)h(b)s(e)e(in)m(tro) +s(duced.)40 b(Here)30 b(is)g(a)h(list)e(of)h(all)f(these)i +(incompatibilities.)1905 5589 y(32)p eop %%Page: 33 33 -33 32 bop -42 199 a Fe(Incompatibilities)21 b(with)f(v)n(ersion)f(1.1) -27 285 y Fj(\017)j Fo(The)16 b(equalit)o(y)e(test)g(op)q(erator)h(no)o -(w)f(is)h(denoted)h(b)o(y)f Fm(==)p Fo(,)f(instead)h(of)g -Fm(=)p Fo(.)27 379 y Fj(\017)22 b Fo(The)13 b(syn)o(tax)f(for)g(table)g -(construction)g(has)h(b)q(een)h(greatly)d(simpli\014ed.)18 -b(The)13 b(old)f Fm(@\(size\))g Fo(has)g(b)q(een)i(sub-)72 -435 y(stituted)h(b)o(y)h Fm({})p Fo(.)21 b(The)16 b(list)e(constructor) -h(\(formerly)e Fm(@[...])p Fo(\))i(and)h(the)f(record)h(constructor)f -(\(formerly)72 492 y Fm(@{...})p Fo(\))f(no)o(w)g(are)h(b)q(oth)f(co)q -(ded)i(lik)o(e)e Fm({...})p Fo(.)19 b(When)c(the)g(construction)f(in)o -(v)o(olv)o(es)g(a)g(function)h(call,)e(lik)o(e)72 548 -y(in)i Fm(@func{...})p Fo(,)e(the)i(new)g(syn)o(tax)f(do)q(es)i(not)e -(use)h(the)g Fm(@)p Fo(.)20 b(More)14 b(imp)q(ortan)o(t,)e -Fn(a)17 b(c)n(onstruction)e(function)72 605 y(must)i(now)f(explicitly)g -(r)n(eturn)g(the)g(c)n(onstructe)n(d)g(table)p Fo(.)27 -699 y Fj(\017)22 b Fo(The)16 b(function)f Fm(lua_call)f -Fo(no)h(longer)f(has)h(the)h(parameter)d Fm(nparam)p -Fo(.)27 792 y Fj(\017)22 b Fo(The)g(function)f Fm(lua_pop)g -Fo(is)g(no)h(longer)e(a)o(v)m(ailable,)i(since)g(it)f(could)g(lead)g -(to)g(strange)g(b)q(eha)o(vior.)39 b(In)72 849 y(particular,)18 -b(to)h(access)g(results)g(returned)g(from)f(a)g(Lua)i(function,)f(the)h -(new)f(macro)e Fm(lua_getresult)72 905 y Fo(should)e(b)q(e)h(used.)27 -999 y Fj(\017)22 b Fo(The)16 b(old)e(functions)h Fm(lua_storefield)f -Fo(and)h Fm(lua_storeindexed)e Fo(ha)o(v)o(e)i(b)q(een)h(replaced)f(b)o -(y)72 1112 y Fm(int)24 b(lua_storesubscript)d(\(void\);)72 -1224 y Fo(with)15 b(the)g(parameters)e(explicitly)h(pushed)j(on)e(the)g -(stac)o(k.)27 1318 y Fj(\017)22 b Fo(The)12 b(functionalit)o(y)e(of)i -(the)g(function)f Fm(lua_errorfunction)f Fo(has)h(b)q(een)i(replaced)f -(b)o(y)g(the)g Fn(fal)r(lb)n(ack)f Fo(mec)o(h-)72 1374 -y(anism;)i(see)j(Section)f(4.8.)27 1468 y Fj(\017)22 -b Fo(When)16 b(calling)e(a)h(function)h(from)d(the)j(Lua)g(library)l(,) -e(parameters)g(passed)h(through)h(the)f(stac)o(k)g(m)o(ust)f(b)q(e)72 -1525 y(pushed)20 b(just)f(b)q(efore)g(the)g(corresp)q(onden)o(t)g -(call,)f(with)g(no)h(in)o(termediate)e(calls)g(to)i(Lua.)31 -b(Sp)q(ecial)19 b(care)72 1581 y(should)c(b)q(e)h(tak)o(en)f(with)f -(macros)g(lik)o(e)g Fm(lua_getindexed)f Fo(and)j Fm(lua_getfield)p -Fo(.)911 2748 y(33)p eop +33 32 bop 0 91 a Ff(Incompatibilities)33 b(with)j(v)m(ersion)h(2.4)0 +263 y Fp(The)28 b(whole)f(I/O)i(facilities)d(ha)m(v)m(e)k(b)s(een)d +(rewritten.)39 b(W)-8 b(e)30 b(strongly)e(encourage)h(programmers)f(to) +h(addapt)f(their)0 376 y(co)s(de)c(to)g(this)e(new)g(v)m(ersion.)38 +b(Ho)m(w)m(ev)m(er,)27 b(w)m(e)d(are)g(k)m(eeping)f(the)g(old)g(v)m +(ersion)g(of)g(the)g(libraries)e(in)h(the)h(distribution,)0 +489 y(to)31 b(allo)m(w)f(a)h(smo)s(oth)f(transition.)39 +b(The)30 b(incompatibilities)c(b)s(et)m(w)m(een)31 b(the)g(new)f(and)g +(the)g(old)g(libraries)d(are:)136 676 y Fk(\017)46 b +Fp(The)35 b(format)g(facilit)m(y)e(of)i(function)f Fn(write)f +Fp(has)i(b)s(een)f(sup)s(ersed)e(b)m(y)j(function)e Fn(format)p +Fp(;)j(therefore)f(this)227 789 y(facilit)m(y)30 b(has)g(b)s(een)g +(dropp)s(ed.)136 977 y Fk(\017)46 b Fp(F)-8 b(unction)32 +b Fn(read)f Fp(no)m(w)h(uses)f Fo(r)-5 b(e)g(ad)36 b(p)-5 +b(atterns)34 b Fp(to)f(sp)s(ecify)e(what)g(to)i(read;)g(this)e(is)g +(incompatible)f(with)h(the)227 1090 y(old)f(format)g(options.)136 +1277 y Fk(\017)46 b Fp(F)-8 b(unction)25 b Fn(strfind)f +Fp(no)m(w)i(accepts)g(patterns,)h(so)f(it)f(ma)m(y)h(ha)m(v)m(e)h(a)f +(di\013eren)m(t)f(b)s(eha)m(vior)g(when)f(the)i(pattern)227 +1390 y(includes)i(sp)s(ecial)h(c)m(haracteres.)0 1634 +y Ff(Incompatibilities)k(with)j(v)m(ersion)h(2.2)136 +1805 y Fk(\017)46 b Fp(F)-8 b(unctions)40 b Fn(date)g +Fp(and)g Fn(time)f Fp(\(from)h Fn(iolib)p Fp(\))g(ha)m(v)m(e)h(b)s(een) +f(sup)s(erseded)f(b)m(y)h(the)h(new,)i(more)d(p)s(o)m(w)m(erful)227 +1918 y(v)m(ersion)30 b(of)h(function)e Fn(date)p Fp(.)136 +2106 y Fk(\017)46 b Fp(F)-8 b(unction)35 b Fn(append)e +Fp(\(from)h Fn(iolib)p Fp(\))g(no)m(w)h(returns)e(1)i(whenev)m(er)g(it) +f(succeeds,)j(whether)d(the)h(\014le)f(is)f(new)227 2219 +y(or)e(not.)136 2407 y Fk(\017)46 b Fp(F)-8 b(unction)29 +b Fn(int2str)e Fp(\(from)i Fn(strlib)p Fp(\))f(has)h(b)s(een)f(sup)s +(erseded)f(b)m(y)i(new)g(function)e Fn(format)p Fp(,)h(with)g(param-) +227 2519 y(eter)j Fn("\045c")p Fp(.)136 2707 y Fk(\017)46 +b Fp(The)30 b(API)g(lo)s(c)m(k)g(mec)m(hanism)f(has)h(b)s(een)g(sup)s +(erseded)e(b)m(y)i(the)g(reference)h(mec)m(hanism.)40 +b(Ho)m(w)m(ev)m(er,)32 b Fn(lua.h)227 2820 y Fp(pro)m(vides)e +(compatibilit)m(y)e(macros,)j(so)g(there)f(is)g(no)g(need)g(to)h(c)m +(hange)h(programs.)136 3008 y Fk(\017)46 b Fp(The)30 +b(API)g(function)f Fn(lua_pushliteral)e Fp(no)m(w)j(is)f(just)h(a)h +(macro)g(to)g Fn(lua_pushstring)p Fp(.)0 3251 y Ff(Incompatibilities)i +(with)j(v)m(ersion)h(2.1)136 3423 y Fk(\017)46 b Fp(The)25 +b(function)e Fn(type)h Fp(no)m(w)h(returns)f(the)h(string)f +Fn("function")e Fp(b)s(oth)j(for)f(C)h(and)f(Lua)h(functions.)38 +b(Because)227 3536 y(Lua)e(functions)e(and)h(C)g(functions)g(are)h +(compatible,)g(this)f(b)s(eha)m(vior)g(is)g(usually)e(more)j(useful.)55 +b(When)227 3648 y(needed,)37 b(the)f(second)g(result)f(of)h(function)f +Fn(type)g Fp(ma)m(y)h(b)s(e)f(used)g(to)i(distinguish)32 +b(b)s(et)m(w)m(een)k(Lua)g(and)f(C)227 3761 y(functions.)136 +3949 y Fk(\017)46 b Fp(A)31 b(function)d(de\014nition)g(only)h(assigns) +h(the)g(function)f(v)-5 b(alue)29 b(to)i(the)g(giv)m(en)f(v)-5 +b(ariable)29 b(at)i(execution)f(time.)0 4192 y Ff(Incompatibilities)j +(with)j(v)m(ersion)h(1.1)136 4364 y Fk(\017)46 b Fp(The)30 +b(equalit)m(y)g(test)h(op)s(erator)g(no)m(w)f(is)g(denoted)g(b)m(y)h +Fn(==)p Fp(,)f(instead)f(of)i Fn(=)p Fp(.)136 4552 y +Fk(\017)46 b Fp(The)25 b(syn)m(tax)h(for)f(table)g(construction)g(has)h +(b)s(een)e(greatly)i(simpli\014ed.)35 b(The)25 b(old)g +Fn(@\(size\))e Fp(has)i(b)s(een)g(sub-)227 4665 y(stituted)31 +b(b)m(y)g Fn({})p Fp(.)43 b(The)31 b(list)f(constructor)i(\(formerly)e +Fn(@[...])p Fp(\))g(and)h(the)h(record)f(constructor)h(\(formerly)227 +4778 y Fn(@{...})p Fp(\))d(no)m(w)g(are)h(b)s(oth)f(co)s(ded)g(lik)m(e) +g Fn({...})p Fp(.)39 b(When)30 b(the)f(construction)g(in)m(v)m(olv)m +(es)h(a)g(function)e(call,)i(lik)m(e)227 4890 y(in)f +Fn(@func{...})p Fp(,)e(the)j(new)f(syn)m(tax)i(do)s(es)e(not)h(use)g +(the)g Fn(@)p Fp(.)40 b(More)30 b(imp)s(ortan)m(t,)g +Fo(a)i(c)-5 b(onstruction)34 b(function)227 5003 y(must)f(now)h +(explicitly)f(r)-5 b(eturn)34 b(the)f(c)-5 b(onstructe)g(d)34 +b(table)p Fp(.)136 5191 y Fk(\017)46 b Fp(The)30 b(function)f +Fn(lua_call)f Fp(no)j(longer)f(has)g(the)g(parameter)h +Fn(nparam)p Fp(.)1905 5589 y(33)p eop %%Page: 34 34 -34 33 bop -42 264 a Fp(Index)-42 354 y Fo(..)20 b(6)-42 -411 y(abs)c(19)-42 467 y(acos)f(19)-42 524 y(Adjustmen)o(t)f(4)-42 -580 y(and)i(6)-42 637 y(app)q(endto)g(20)-42 693 y(argumen)o(ts)e(8)-42 -749 y(arithmetic)f(fallbac)o(k)h(9)-42 806 y(arithmetic)f(op)q(erators) -i(6)-42 862 y(arra)o(ys)f(3)-42 919 y(ascii)h(19)-42 -975 y(asin)g(19)-42 1032 y(assert)g(17)-42 1088 y(Assignmen)o(t)f(4)-42 -1145 y(asso)q(ciativ)o(e)g(arra)o(ys)g(3)-42 1201 y(atan)h(19)-42 -1258 y(atan2)g(19)-42 1314 y(basic)g(t)o(yp)q(es)h(2)-42 -1370 y(blo)q(c)o(k)f(4)-42 1427 y(C)g(p)q(oin)o(ters)g(2)-42 -1483 y(ceil)g(19)-42 1540 y(CF)l(unction)g(2)-42 1596 -y(c)o(h)o(unk)h(2)-42 1653 y(clone)g(24)-42 1709 y(closing)f(a)g -(\014le)g(20)-42 1766 y(Co)q(ercion)g(3)-42 1822 y(Commen)o(ts)e(3)-42 -1879 y(concatenation)i(fallbac)o(k)f(10)-42 1935 y(concatenation)h(6) --42 1991 y(condition)g(expression)g(5)-42 2048 y(constructors)g(7)-42 -2104 y(cos)g(19)-42 2161 y(Data)f(Structures)i(24)-42 -2217 y(date)f(22)-42 2274 y(debug)h(pragma)e(11)-42 2330 -y(do\014le)i(16)-42 2387 y(dostring)f(16)-42 2443 y(error)g(fallbac)o -(k)f(10)-42 2500 y(error)h(18)-42 2556 y(exit)g(22)-42 -2612 y(exp)q(onen)o(tiation)g(6)1006 354 y(Expressions)g(5)1006 -411 y(fallbac)o(ks)f(9)1006 467 y(\015o)q(or)h(19)1006 -524 y(format)e(19)1006 580 y(function)i(call)f(8)1006 -637 y(F)l(unction)h(De\014nitions)g(8)1006 693 y(function)g(falbac)o(k) -f(10)1006 749 y(function)h(2)1006 806 y(functions)g(in)g(C)g(30)1006 -862 y(getglobal)f(18)1006 919 y(gettable)g(fallbac)o(k)g(10)1006 -975 y(global)g(en)o(vironmen)o(t)f(2)1006 1032 y(Global)h(v)m(ariables) -g(2)1006 1088 y(Iden)o(ti\014ers)i(3)1006 1145 y(if-then-else)f(5)1006 -1201 y(index)h(fallbac)o(k)e(10)1006 1258 y(index)i(getglobal)d(10)1006 -1314 y(inheritance)i(27)1006 1370 y(Literal)f(strings)g(3)1006 -1427 y(Lo)q(cal)h(v)m(ariables)g(5)1006 1483 y(log10)f(19)1006 -1540 y(log)g(19)1006 1596 y(logical)g(op)q(erators)g(6)1006 -1653 y(luac)h(11)1006 1709 y(luac)g(2)1006 1766 y(lua)p -1070 1766 14 2 v 16 w(call)f(14)1006 1822 y(lua)p 1070 -1822 V 16 w(callfunction)g(14)1006 1879 y(lua)p 1070 -1879 V 16 w(CF)l(unction)h(15)1006 1935 y(lua)p 1070 -1935 V 16 w(createtable)g(13)1006 1991 y(lua)p 1070 1991 -V 16 w(do\014le)g(11)1006 2048 y(lua)p 1070 2048 V 16 -w(dostring)f(11)1006 2104 y(lua)p 1070 2104 V 16 w(error)h(14)1006 -2161 y(lua)p 1070 2161 V 16 w(getcfunction)g(12)1006 -2217 y(lua)p 1070 2217 V 16 w(getglobal)f(13)1006 2274 -y(lua)p 1070 2274 V 16 w(getn)o(um)o(b)q(er)g(12)1006 -2330 y(lua)p 1070 2330 V 16 w(getparam)f(15)1006 2387 -y(lua)p 1070 2387 V 16 w(getref)i(15)1006 2443 y(lua)p -1070 2443 V 16 w(getresult)f(14)1006 2500 y(lua)p 1070 -2500 V 16 w(getstring)g(12)1006 2556 y(lua)p 1070 2556 -V 16 w(getsubscript)h(13)1006 2612 y(lua)p 1070 2612 -V 16 w(getuserdata)f(12)911 2748 y(34)p eop +34 33 bop 136 91 a Fk(\017)46 b Fp(The)d(function)f Fn(lua_pop)f +Fp(is)h(no)h(longer)g(a)m(v)-5 b(ailable,)46 b(since)c(it)h(could)f +(lead)h(to)h(strange)g(b)s(eha)m(vior.)78 b(In)227 204 +y(particular,)39 b(to)g(access)g(results)e(returned)g(from)h(a)h(Lua)f +(function,)h(the)f(new)g(macro)h Fn(lua_getresult)227 +317 y Fp(should)29 b(b)s(e)g(used.)136 505 y Fk(\017)46 +b Fp(The)30 b(old)g(functions)f Fn(lua_storefield)d Fp(and)k +Fn(lua_storeindexed)c Fp(ha)m(v)m(e)31 b(b)s(een)f(replaced)g(b)m(y)227 +730 y Fn(int)47 b(lua_storesubscript)c(\(void\);)227 +955 y Fp(with)29 b(the)i(parameters)g(explicitly)d(pushed)g(on)i(the)h +(stac)m(k.)136 1142 y Fk(\017)46 b Fp(The)23 b(functionalit)m(y)f(of)i +(the)g(function)e Fn(lua_errorfunction)d Fp(has)24 b(b)s(een)e +(replaced)i(b)m(y)f(the)h Fo(fal)5 b(lb)-5 b(ack)24 b +Fp(mec)m(h-)227 1255 y(anism)29 b(\(see)j(Section)e(4.8\).)136 +1443 y Fk(\017)46 b Fp(When)31 b(calling)e(a)j(function)d(from)i(the)g +(Lua)g(library)-8 b(,)29 b(parameters)i(passed)g(through)f(the)h(stac)m +(k)i(m)m(ust)e(b)s(e)227 1556 y(pushed)36 b(just)h(b)s(efore)h(the)g +(corresp)s(onding)d(call,)40 b(with)c(no)i(in)m(termediate)f(calls)g +(to)i(Lua.)62 b(Sp)s(ecial)36 b(care)227 1669 y(should)29 +b(b)s(e)g(tak)m(en)j(with)d(macros)i(lik)m(e)e Fn(lua_getindexed)e +Fp(and)j Fn(lua_getfield)p Fp(.)1905 5589 y(34)p eop %%Page: 35 35 -35 34 bop -42 199 a Fo(lua)p 22 199 14 2 v 16 w(iscfunction)15 -b(12)-42 256 y(lua)p 22 256 V 16 w(isfunction)g(12)-42 -312 y(lua)p 22 312 V 16 w(isnil)g(12)-42 369 y(lua)p -22 369 V 16 w(isn)o(um)o(b)q(er)g(12)-42 425 y(lua)p -22 425 V 16 w(isstring)f(12)-42 482 y(lua)p 22 482 V -16 w(istable)h(12)-42 538 y(lua)p 22 538 V 16 w(isuserdata)g(12)-42 -594 y(LUA)p 57 594 V 17 w(NOOBJECT)i(15)-42 651 y(lua)p -22 651 V 16 w(Ob)s(ject)f(11)-42 707 y(lua)p 22 707 V -16 w(pushcfunction)g(13)-42 764 y(lua)p 22 764 V 16 w(pushnil)g(13)-42 -820 y(lua)p 22 820 V 16 w(pushn)o(um)o(b)q(er)g(13)-42 -877 y(lua)p 22 877 V 16 w(pushob)s(ject)g(13)-42 933 -y(lua)p 22 933 V 16 w(pushref)g(15)-42 990 y(lua)p 22 -990 V 16 w(pushstring)f(13)-42 1046 y(lua)p 22 1046 V -16 w(push)o(userdata)h(13)-42 1103 y(lua)p 22 1103 V -16 w(push)o(usertag)f(13)-42 1159 y(lua)p 22 1159 V 16 -w(ref)h(15)-42 1215 y(lua)p 22 1215 V 16 w(register)f(15)-42 -1272 y(lua)p 22 1272 V 16 w(setfallbac)o(k)f(15)-42 1328 -y(lua)p 22 1328 V 16 w(storeglobal)g(13)-42 1385 y(lua)p -22 1385 V 16 w(storesubscript)h(13)-42 1441 y(lua)p 22 -1441 V 16 w(t)o(yp)q(e)h(12)-42 1498 y(lua)p 22 1498 -V 16 w(unref)g(15)-42 1554 y(max)e(19)-42 1611 y(metho)q(ds)h(9)-42 -1667 y(min)f(19)-42 1724 y(mo)q(d)h(19)-42 1780 y(Mo)q(dules)h(29)-42 -1836 y(m)o(ultiple)e(assignmen)o(t)f(4)-42 1893 y(next)j(16)-42 -1949 y(next)g(24)-42 2006 y(nextv)m(ar)g(17)-42 2062 -y(nextv)m(ar)g(24)-42 2119 y(nil)f(2)-42 2175 y(not)g(6)-42 -2232 y(n)o(um)o(b)q(er)g(2)-42 2288 y(Numerical)f(constan)o(ts)g(3)-42 -2345 y(Op)q(erator)h(precedence)i(7)-42 2401 y(or)e(6)-42 -2457 y(order)g(fallbac)o(k)f(9)-42 2514 y(P)o(ersistence)h(26)-42 -2570 y(pip)q(ed)h(input)g(20)1006 199 y(pip)q(ed)g(output)f(20)1006 -256 y(p)q(op)q(en)h(20)1006 312 y(p)q(op)q(en)g(20)1006 -369 y(pre-compilation)d(2)1006 425 y(prede\014ned)k(functions)e(16)1006 -482 y(prin)o(t)g(17)1006 538 y(Programmi)o(ng)d(with)j(Classes)f(27) -1006 594 y(random)g(19)1006 651 y(randomseed)h(19)1006 -707 y(read)g(20)1006 764 y(readfrom)f(20)1006 820 y(readun)o(til)g(21) -1006 877 y(records)h(3)1006 933 y(reference)h(15)1006 -990 y(re\015exivit)o(y)e(16)1006 1046 y(relational)f(op)q(erators)i(6) -1006 1103 y(remo)o(v)o(e)f(20)1006 1159 y(rename)g(20)1006 -1215 y(rep)q(eat-un)o(til)h(5)1006 1272 y(reserv)o(ed)g(w)o(ords)g(3) -1006 1328 y(return)g(statemen)o(t)e(4)1006 1385 y(return)i(statemen)o -(t)e(5)1006 1441 y(self)i(9)1006 1498 y(setfallbac)o(k)f(10)1006 -1554 y(setfallbac)o(k)g(18)1006 1611 y(setglobal)g(18)1006 -1667 y(settable)h(fallbac)o(k)f(10)1006 1724 y(short-cut)h(ev)m -(aluation)f(6)1006 1780 y(Simple)g(Expressions)h(5)1006 -1836 y(sin)g(19)1006 1893 y(sqrt)g(19)1006 1949 y(statemen)o(ts)e(4) -1006 2006 y(str\014nd)i(18)1006 2062 y(string)f(2)1006 -2119 y(strlen)h(18)1006 2175 y(strlo)o(w)o(er)e(18)1006 -2232 y(strsub)i(18)1006 2288 y(strupp)q(er)h(19)1006 -2345 y(table)f(2)1006 2401 y(tag)f(17)1006 2457 y(tan)h(19)1006 -2514 y(tmpname)e(20)1006 2570 y(tok)o(ens)i(3)911 2748 -y(35)p eop +35 34 bop 0 220 a Fq(Index)0 401 y Fp(..)41 b(6)0 514 +y(abs)30 b(20)0 627 y(acos)h(20)0 740 y(Adjustmen)m(t)f(3)0 +853 y(and)g(6)0 966 y(app)s(endto)g(21)0 1079 y(argumen)m(ts)h(8)0 +1192 y(arithmetic)f(fallbac)m(k)g(9)0 1305 y(arithmetic)g(op)s(erators) +g(5)0 1418 y(arra)m(ys)h(2)0 1530 y(ascii)f(18)0 1643 +y(asin)f(20)0 1756 y(assert)i(16)0 1869 y(Assignmen)m(t)f(4)0 +1982 y(asso)s(ciativ)m(e)h(arra)m(ys)g(2)0 2095 y(atan)g(20)0 +2208 y(atan2)h(20)0 2321 y(basic)e(t)m(yp)s(es)g(2)0 +2434 y(blo)s(c)m(k)g(4)0 2547 y(C)g(p)s(oin)m(ters)f(2)0 +2660 y(captures)h(20)0 2772 y(ceil)g(20)0 2885 y(CF)-8 +b(unction)30 b(2)0 2998 y(c)m(haracter)i(class)e(19)0 +3111 y(c)m(h)m(unk)g(2)0 3224 y(clone)g(24)0 3337 y(closing)f(a)i +(\014le)f(21)0 3450 y(Co)s(ercion)g(3)0 3563 y(Commen)m(ts)h(3)0 +3676 y(concatenation)h(fallbac)m(k)e(9)0 3789 y(concatenation)i(6)0 +3902 y(condition)d(expression)g(4)0 4014 y(constructors)i(6)0 +4127 y(cos)g(20)0 4240 y(Data)h(Structures)d(24)0 4353 +y(date)i(22)0 4466 y(debug)f(pragma)g(10)0 4579 y(do\014le)f(15)0 +4692 y(dostring)g(15)0 4805 y(error)h(fallbac)m(k)g(10)0 +4918 y(error)g(16)0 5031 y(execute)i(22)0 5144 y(exit)e(22)0 +5256 y(exp)s(onen)m(tiation)g(5)2095 401 y(Expressions)f(5)2095 +514 y(fallbac)m(ks)h(9)2095 627 y(\015o)s(or)g(20)2095 +740 y(format)h(18)2095 853 y(function)e(call)h(7)2095 +966 y(F)-8 b(unction)30 b(De\014nitions)f(8)2095 1079 +y(function)g(fallbac)m(k)h(9)2095 1192 y(function)f(2)2095 +1305 y(functions)g(in)g(C)h(30)2095 1418 y(geten)m(v)i(22)2095 +1530 y(getglobal)f(17)2095 1643 y(gettable)h(fallbac)m(k)e(9)2095 +1756 y(global)g(en)m(vironmen)m(t)g(2)2095 1869 y(Global)g(v)-5 +b(ariables)29 b(2)2095 1982 y(gsub)h(18)2095 2095 y(Iden)m(ti\014ers)f +(3)2095 2208 y(if-then-else)h(4)2095 2321 y(index)f(fallbac)m(k)h(9) +2095 2434 y(index)f(getglobal)i(9)2095 2547 y(inheritance)e(26)2095 +2660 y(Literal)h(strings)f(3)2095 2772 y(Lo)s(cal)i(v)-5 +b(ariables)29 b(5)2095 2885 y(log10)j(20)2095 2998 y(log)f(20)2095 +3111 y(logical)f(op)s(erators)h(6)2095 3224 y(Lua)f(Stand-alone)g(32) +2095 3337 y(luac)g(11)2095 3450 y(luac)g(2)2095 3563 +y(lua)p 2222 3563 28 4 v 32 w(call)g(13)2095 3676 y(lua)p +2222 3676 V 32 w(callfunction)f(13)2095 3789 y(lua)p +2222 3789 V 32 w(CF)-8 b(unction)30 b(14)2095 3902 y(lua)p +2222 3902 V 32 w(createtable)i(13)2095 4014 y(lua)p 2222 +4014 V 32 w(do\014le)e(10)2095 4127 y(lua)p 2222 4127 +V 32 w(dostring)g(10)2095 4240 y(lua)p 2222 4240 V 32 +w(error)g(13)2095 4353 y(lua)p 2222 4353 V 32 w(getcfunction)h(11)2095 +4466 y(lua)p 2222 4466 V 32 w(getglobal)g(12)2095 4579 +y(lua)p 2222 4579 V 32 w(getn)m(um)m(b)s(er)g(11)2095 +4692 y(lua)p 2222 4692 V 32 w(getparam)h(14)2095 4805 +y(lua)p 2222 4805 V 32 w(getref)g(14)2095 4918 y(lua)p +2222 4918 V 32 w(getresult)f(13)2095 5031 y(lua)p 2222 +5031 V 32 w(getstring)g(11)2095 5144 y(lua)p 2222 5144 +V 32 w(getsubscript)f(12)2095 5256 y(lua)p 2222 5256 +V 32 w(getuserdata)i(11)1905 5589 y(35)p eop %%Page: 36 36 -36 35 bop -42 199 a Fo(ton)o(um)o(b)q(er)14 b(17)-42 -256 y(tostring)g(17)-42 312 y(t)o(yp)q(e)i(17)-42 369 -y(T)o(yp)q(es)g(2)-42 425 y(userdata)f(2)-42 482 y(V)l(ariable)g(n)o -(um)o(b)q(er)f(of)h(argumen)o(ts)f(25)-42 538 y(v)o(ersion)h(1.1)f(33) --42 594 y(v)o(ersion)h(2.1)f(32)-42 651 y(v)o(ersion)h(2.2)f(32)-42 -707 y(while-do)h(5)-42 764 y(write)g(21)-42 820 y(writeto)f(20)911 -2748 y(36)p eop +36 35 bop 0 91 a Fp(lua)p 127 91 28 4 v 32 w(iscfunction)29 +b(11)0 204 y(lua)p 127 204 V 32 w(isfunction)f(11)0 317 +y(lua)p 127 317 V 32 w(isnil)f(11)0 430 y(lua)p 127 430 +V 32 w(isn)m(um)m(b)s(er)h(11)0 543 y(lua)p 127 543 V +32 w(isstring)g(11)0 656 y(lua)p 127 656 V 32 w(istable)h(11)0 +769 y(lua)p 127 769 V 32 w(isuserdata)g(11)0 882 y(LUA)p +198 882 V 33 w(NOOBJECT)g(14)0 995 y(lua)p 127 995 V +32 w(Ob)5 b(ject)30 b(11)0 1108 y(lua)p 127 1108 V 32 +w(pushcfunction)e(12)0 1220 y(lua)p 127 1220 V 32 w(pushnil)f(12)0 +1333 y(lua)p 127 1333 V 32 w(pushn)m(um)m(b)s(er)g(12)0 +1446 y(lua)p 127 1446 V 32 w(pushob)5 b(ject)30 b(12)0 +1559 y(lua)p 127 1559 V 32 w(pushref)e(14)0 1672 y(lua)p +127 1672 V 32 w(pushstring)g(12)0 1785 y(lua)p 127 1785 +V 32 w(push)m(userdata)h(12)0 1898 y(lua)p 127 1898 V +32 w(push)m(usertag)h(12)0 2011 y(lua)p 127 2011 V 32 +w(ref)g(14)0 2124 y(lua)p 127 2124 V 32 w(register)g(14)0 +2237 y(lua)p 127 2237 V 32 w(setfallbac)m(k)g(14)0 2350 +y(lua)p 127 2350 V 32 w(storeglobal)g(12)0 2462 y(lua)p +127 2462 V 32 w(storesubscript)f(12)0 2575 y(lua)p 127 +2575 V 32 w(t)m(yp)s(e)h(11)0 2688 y(lua)p 127 2688 V +32 w(unref)f(14)0 2801 y(max)h(20)0 2914 y(metho)s(ds)g(8)0 +3027 y(min)f(20)0 3140 y(mo)s(d)h(20)0 3253 y(Mo)s(dules)f(27)0 +3366 y(m)m(ultiple)f(assignmen)m(t)i(4)0 3479 y(next)h(15)0 +3592 y(next)g(24)0 3704 y(nextv)-5 b(ar)31 b(16)0 3817 +y(nextv)-5 b(ar)31 b(24)0 3930 y(nil)d(2)0 4043 y(not)j(6)0 +4156 y(n)m(um)m(b)s(er)e(2)0 4269 y(Numerical)g(constan)m(ts)j(3)0 +4382 y(Op)s(erator)e(precedence)h(6)0 4495 y(or)f(6)0 +4608 y(order)g(fallbac)m(k)g(9)0 4721 y(pattern)g(item)h(19)0 +4834 y(pattern)f(20)0 4946 y(P)m(ersistence)h(26)0 5059 +y(pip)s(ed)d(input)g(20)0 5172 y(pip)s(ed)g(output)i(21)0 +5285 y(p)s(op)s(en)f(20)2095 91 y(p)s(op)s(en)g(21)2095 +204 y(pre-compilation)g(2)2095 317 y(prede\014ned)g(functions)g(15)2095 +430 y(prin)m(t)g(16)2095 543 y(Programming)h(with)f(Classes)g(27)2095 +656 y(random)h(20)2095 769 y(randomseed)g(20)2095 882 +y(read)h(pattern)f(21)2095 995 y(read)h(21)2095 1108 +y(readfrom)f(20)2095 1220 y(records)g(2)2095 1333 y(reference)h(14)2095 +1446 y(re\015exivit)m(y)f(15)2095 1559 y(relational)g(op)s(erators)g(5) +2095 1672 y(remo)m(v)m(e)i(21)2095 1785 y(rename)f(21)2095 +1898 y(rep)s(eat-un)m(til)e(4)2095 2011 y(reserv)m(ed)i(w)m(ords)f(3) +2095 2124 y(return)g(statemen)m(t)i(5)2095 2237 y(return)e(4)2095 +2350 y(self)g(8)2095 2462 y(setfallbac)m(k)h(10)2095 +2575 y(setfallbac)m(k)g(17)2095 2688 y(setglobal)g(17)2095 +2801 y(settable)g(fallbac)m(k)f(9)2095 2914 y(short-cut)h(ev)-5 +b(aluation)30 b(6)2095 3027 y(Simple)e(Expressions)h(5)2095 +3140 y(sin)g(20)2095 3253 y(skips)g(21)2095 3366 y(sqrt)h(20)2095 +3479 y(statemen)m(ts)i(4)2095 3592 y(str\014nd)d(17)2095 +3704 y(string)h(2)2095 3817 y(strlen)g(17)2095 3930 y(strlo)m(w)m(er)h +(17)2095 4043 y(strrep)f(18)2095 4156 y(strsub)f(17)2095 +4269 y(strupp)s(er)f(17)2095 4382 y(table)j(2)2095 4495 +y(tag)h(16)2095 4608 y(tan)f(20)2095 4721 y(tmpname)f(21)2095 +4834 y(tok)m(ens)i(3)2095 4946 y(ton)m(um)m(b)s(er)e(16)2095 +5059 y(tostring)g(16)2095 5172 y(t)m(yp)s(e)h(16)2095 +5285 y(T)m(yp)s(es)f(2)1905 5589 y(36)p eop %%Page: 37 37 -37 36 bop -42 199 a Fp(Con)n(ten)n(ts)-42 301 y Fl(1)43 -b(In)o(tro)q(duction)1567 b(1)-42 403 y(2)43 b(En)o(vironmen)o(t)14 -b(and)k(Ch)o(unks)1268 b(2)-42 505 y(3)43 b(T)o(yp)q(es)1717 -b(2)-42 607 y(4)43 b(The)17 b(Language)1534 b(3)27 663 -y Fo(4.1)45 b(Lexical)15 b(Con)o(v)o(en)o(tions)40 b(.)22 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.) -65 b(3)27 720 y(4.2)45 b(Co)q(ercion)16 b(.)23 b(.)f(.)g(.)h(.)f(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) -g(.)65 b(3)27 776 y(4.3)45 b(Adjustmen)o(t)28 b(.)22 -b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)h(.)f(.)g(.)65 b(4)27 833 y(4.4)45 b(Statemen)o(ts)40 -b(.)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(4)131 889 y(4.4.1)51 -b(Blo)q(c)o(ks)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(4)131 946 y(4.4.2)51 -b(Assignmen)o(t)27 b(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(4)131 1002 y(4.4.3)51 -b(Con)o(trol)13 b(Structures)30 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(5)131 1059 y(4.4.4)51 -b(F)l(unction)15 b(Calls)f(as)g(Statemen)o(ts)30 b(.)22 -b(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(5)131 1115 y(4.4.5)51 -b(Lo)q(cal)15 b(Declarations)28 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(5)27 1171 y(4.5)45 b(Expressions)30 -b(.)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(5)131 1228 y(4.5.1)51 -b(Simple)14 b(Expressions)k(.)k(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)h(.)f(.)g(.)65 b(5)131 1284 y(4.5.2)51 b(Arithmetic)13 -b(Op)q(erators)41 b(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) -g(.)65 b(6)131 1341 y(4.5.3)51 b(Relational)13 b(Op)q(erators)19 -b(.)k(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 -b(6)131 1397 y(4.5.4)51 b(Logical)14 b(Op)q(erators)44 -b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 -b(6)131 1454 y(4.5.5)51 b(Concatenation)40 b(.)23 b(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(6)131 -1510 y(4.5.6)51 b(Precedence)40 b(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(7)131 -1567 y(4.5.7)51 b(T)l(able)15 b(Constructors)j(.)k(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(7)131 1623 y(4.5.8)51 -b(F)l(unction)15 b(Calls)39 b(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(8)27 1680 y(4.6)45 -b(F)l(unction)15 b(De\014nitions)35 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(8)27 -1736 y(4.7)45 b(F)l(allbac)o(ks)f(.)22 b(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 -b(9)27 1792 y(4.8)45 b(Error)14 b(Handling)31 b(.)22 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -h(.)f(.)g(.)42 b(10)-42 1894 y Fl(5)h(The)17 b(Application)g(Program)f -(In)o(terface)1020 b(11)27 1951 y Fo(5.1)45 b(Executing)15 -b(Lua)h(Co)q(de)32 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)h(.)f(.)g(.)42 b(11)27 2007 y(5.2)j(Con)o(v)o(erting)14 -b(V)l(alues)h(b)q(et)o(w)o(een)h(C)f(and)g(Lua)27 b(.)c(.)f(.)g(.)h(.)f -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -h(.)f(.)g(.)42 b(11)27 2064 y(5.3)j(Manipulating)14 b(Lua)h(Ob)s(jects) -20 b(.)i(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 -b(13)27 2120 y(5.4)j(Calling)14 b(Lua)h(F)l(unctions)34 -b(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g -(.)42 b(14)27 2177 y(5.5)j(C)15 b(F)l(unctions)22 b(.)g(.)h(.)f(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g -(.)42 b(15)27 2233 y(5.6)j(References)17 b(to)d(Lua)i(Ob)s(jects)21 -b(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 -b(15)-42 2335 y Fl(6)h(Prede\014ned)16 b(F)l(unctions)h(and)h -(Libraries)1024 b(16)27 2391 y Fo(6.1)45 b(Prede\014ned)17 -b(F)l(unctions)k(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)h(.)f(.)g(.)42 b(16)27 2448 y(6.2)j(String)15 -b(Manipulation)35 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)h(.)f(.)g(.)42 b(18)27 2504 y(6.3)j(Mathematical)12 -b(F)l(unctions)29 b(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)h(.)f(.)g(.)42 b(19)27 2561 y(6.4)j(I/O)16 b(F)l(acilities)31 -b(.)23 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)h(.)f(.)g(.)42 b(19)911 2748 y(37)p eop +37 36 bop 0 91 a Fp(userdata)30 b(2)0 204 y(V)-8 b(ariable)30 +b(n)m(um)m(b)s(er)f(of)h(argumen)m(ts)h(25)0 317 y(v)m(ersion)f(1.1)h +(33)0 430 y(v)m(ersion)f(2.1)h(33)0 543 y(v)m(ersion)f(2.2)h(33)0 +656 y(v)m(ersion)f(2.4)h(33)0 769 y(while-do)e(4)0 882 +y(write)h(22)0 995 y(writeto)g(20)1905 5589 y(37)p eop %%Page: 38 38 -38 37 bop -42 199 a Fl(7)43 b(The)17 b(Debuger)h(In)o(terface)1309 -b(22)27 256 y Fo(7.1)45 b(Stac)o(k)15 b(and)g(F)l(unction)g -(Information)e(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 -b(22)27 312 y(7.2)j(Manipulating)14 b(Lo)q(cal)h(V)l(ariables)29 -b(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 -b(23)27 369 y(7.3)j(Ho)q(oks)34 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.) -42 b(23)-42 471 y Fl(8)h(Some)16 b(Examples)1468 b(23)27 -527 y Fo(8.1)45 b(Data)14 b(Structures)i(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 -b(24)27 583 y(8.2)j(The)16 b(F)l(unctions)f Fm(next)f -Fo(and)i Fm(nextvar)i Fo(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.) -42 b(24)27 640 y(8.3)j(String)15 b(Manipulation)35 b(.)22 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.) -42 b(25)27 696 y(8.4)j(V)l(ariable)15 b(n)o(um)o(b)q(er)f(of)h(argumen) -o(ts)d(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 -b(25)27 753 y(8.5)j(P)o(ersistence)e(.)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 -b(26)27 809 y(8.6)j(Inheritance)40 b(.)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 -b(27)27 866 y(8.7)j(Programmi)o(ng)12 b(with)j(Classes)e(.)22 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 -b(27)27 922 y(8.8)j(Mo)q(dules)25 b(.)e(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 -b(29)27 979 y(8.9)j(A)15 b(CF)l(unction)41 b(.)23 b(.)f(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42 -b(30)27 1035 y(8.10)22 b(Calling)14 b(Lua)h(F)l(unctions)34 -b(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g -(.)42 b(30)-42 1137 y Fl(A)29 b(Incompatibilities)14 -b(with)j(Previous)f(V)l(ersions)899 b(32)911 2748 y Fo(38)p -eop +38 37 bop 0 91 a Fq(Con)l(ten)l(ts)0 295 y Fm(1)84 b(In)m(tro)s +(duction)3136 b(1)0 499 y(2)84 b(En)m(vironmen)m(t)35 +b(and)f(Ch)m(unks)2540 b(2)0 703 y(3)84 b(T)m(yp)s(es)3437 +b(2)0 907 y(4)84 b(The)35 b(Language)3065 b(3)136 1020 +y Fp(4.1)94 b(Lexical)30 b(Con)m(v)m(en)m(tions)83 b(.)45 +b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) +131 b(3)136 1132 y(4.2)94 b(Co)s(ercion)33 b(.)45 b(.)h(.)g(.)g(.)f(.)h +(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)f(.)131 b(3)136 1245 y(4.3)94 b(Adjustmen)m(t)58 b(.)46 +b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)f(.)131 b(3)136 1358 y(4.4)94 b(Statemen)m(ts)85 +b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(4)345 1471 y(4.4.1)106 +b(Blo)s(c)m(ks)47 b(.)f(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) +g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(4)345 1584 +y(4.4.2)106 b(Assignmen)m(t)57 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(4)345 1697 +y(4.4.3)106 b(Con)m(trol)30 b(Structures)59 b(.)46 b(.)f(.)h(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(4)345 1810 +y(4.4.4)106 b(F)-8 b(unction)30 b(Calls)f(as)i(Statemen)m(ts)64 +b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(5)345 1923 +y(4.4.5)106 b(Lo)s(cal)31 b(Declarations)60 b(.)46 b(.)f(.)h(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(5)136 2036 +y(4.5)94 b(Expressions)59 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 +b(5)345 2149 y(4.5.1)106 b(Simple)28 b(Expressions)36 +b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) +g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 +b(5)345 2262 y(4.5.2)106 b(Arithmetic)30 b(Op)s(erators)81 +b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) +f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 +b(5)345 2374 y(4.5.3)106 b(Relational)30 b(Op)s(erators)38 +b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 +b(5)345 2487 y(4.5.4)106 b(Logical)31 b(Op)s(erators)88 +b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) +g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 +b(6)345 2600 y(4.5.5)106 b(Concatenation)84 b(.)46 b(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(6)345 +2713 y(4.5.6)106 b(Precedence)78 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(6)345 +2826 y(4.5.7)106 b(T)-8 b(able)30 b(Constructors)39 b(.)46 +b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 +b(6)345 2939 y(4.5.8)106 b(F)-8 b(unction)30 b(Calls)80 +b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f +(.)131 b(7)136 3052 y(4.6)94 b(F)-8 b(unction)31 b(De\014nitions)69 +b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)f(.)131 b(8)136 3165 y(4.7)94 b(F)-8 b(allbac)m(ks)90 +b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(9)136 3278 y(4.8)94 +b(Error)30 b(Handling)60 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(10)0 +3482 y Fm(5)f(The)35 b(Application)g(Program)g(In)m(terface)2041 +b(10)136 3594 y Fp(5.1)94 b(Executing)30 b(Lua)h(Co)s(de)63 +b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)f(.)85 b(10)136 3707 y(5.2)94 b(Con)m(v)m(erting)31 +b(V)-8 b(alues)30 b(b)s(et)m(w)m(een)h(C)f(and)g(Lua)54 +b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) +g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(11)136 3820 +y(5.3)94 b(Manipulating)29 b(Lua)h(Ob)5 b(jects)39 b(.)46 +b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(12)136 3933 y(5.4)94 b(Calling)29 b(Lua)h(F)-8 b(unctions)67 +b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f +(.)85 b(13)136 4046 y(5.5)94 b(C)30 b(F)-8 b(unctions)44 +b(.)i(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)f(.)85 b(14)136 4159 y(5.6)94 b(References)31 +b(to)h(Lua)e(Ob)5 b(jects)42 b(.)k(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)f(.)85 b(14)0 4363 y Fm(6)f(Prede\014ned)36 +b(F)-9 b(unctions)36 b(and)e(Libraries)2051 b(15)136 +4476 y Fp(6.1)94 b(Prede\014ned)29 b(F)-8 b(unctions)43 +b(.)i(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) +f(.)85 b(15)136 4589 y(6.2)94 b(String)29 b(Manipulation)72 +b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)f(.)85 b(17)136 4702 y(6.3)94 b(Mathematical)32 b(F)-8 +b(unctions)56 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)f(.)85 b(20)136 4814 y(6.4)94 b(I/O)31 b(F)-8 +b(acilities)66 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) +g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(20)1905 5589 +y(38)p eop +%%Page: 39 39 +39 38 bop 0 91 a Fm(7)84 b(The)35 b(Debugger)h(In)m(terface)2566 +b(22)136 204 y Fp(7.1)94 b(Stac)m(k)32 b(and)e(F)-8 b(unction)30 +b(Information)e(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(22)136 317 y(7.2)94 b(Manipulating)29 b(Lo)s(cal)h(V)-8 +b(ariables)58 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) +85 b(23)136 430 y(7.3)94 b(Ho)s(oks)69 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h +(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)f(.)85 b(23)0 634 y Fm(8)f(Some)35 b(Examples)2939 +b(24)136 747 y Fp(8.1)94 b(Data)32 b(Structures)f(.)45 +b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)f(.)85 b(24)136 860 y(8.2)94 b(The)30 b(F)-8 +b(unctions)30 b Fn(next)f Fp(and)h Fn(nextvar)38 b Fp(.)45 +b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(24)136 +973 y(8.3)94 b(String)29 b(Manipulation)72 b(.)45 b(.)h(.)g(.)g(.)f(.)h +(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(25)136 +1086 y(8.4)94 b(V)-8 b(ariable)30 b(n)m(um)m(b)s(er)f(of)i(argumen)m +(ts)c(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(25)136 1198 y(8.5)94 b(P)m(ersistence)87 b(.)46 b(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(26)136 1311 y(8.6)94 b(Inheritance)78 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(26)136 1424 y(8.7)94 b(Programming)30 b(with)f(Classes)e(.)46 +b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(27)136 1537 y(8.8)94 b(Mo)s(dules)50 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f +(.)85 b(27)136 1650 y(8.9)94 b(A)31 b(CF)-8 b(unction)82 +b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.) +g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h +(.)g(.)f(.)h(.)g(.)f(.)85 b(30)136 1763 y(8.10)49 b(Calling)29 +b(Lua)h(F)-8 b(unctions)67 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) +f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(30)0 1967 y Fm(9)f(Lua)35 +b(Stand-alone)2913 b(32)1905 5589 y Fp(39)p eop %%Trailer end userdict /end-hook known{end-hook}if diff --git a/include/lua.h b/include/lua.h index 07f53209..6a515d50 100644 --- a/include/lua.h +++ b/include/lua.h @@ -2,15 +2,15 @@ ** LUA - Linguagem para Usuarios de Aplicacao ** Grupo de Tecnologia em Computacao Grafica ** TeCGraf - PUC-Rio -** $Id: lua.h,v 3.28 1996/05/06 14:32:59 roberto Exp $ +** $Id: lua.h,v 3.32 1996/11/20 13:49:32 roberto Exp $ */ #ifndef lua_h #define lua_h -#define LUA_VERSION "Lua 2.4" -#define LUA_COPYRIGHT "Copyright (C) 1994, 1995 TeCGraf" +#define LUA_VERSION "Lua 2.5.1" +#define LUA_COPYRIGHT "Copyright (C) 1994-1996 TeCGraf" #define LUA_AUTHORS "W. Celes, R. Ierusalimschy & L. H. de Figueiredo" diff --git a/include/lualib.h b/include/lualib.h index 6005d7c2..4fb0ed2d 100644 --- a/include/lualib.h +++ b/include/lualib.h @@ -2,7 +2,7 @@ ** Libraries to be used in LUA programs ** Grupo de Tecnologia em Computacao Grafica ** TeCGraf - PUC-Rio -** $Id: lualib.h,v 1.8 1996/04/30 21:13:55 roberto Exp $ +** $Id: lualib.h,v 1.10 1996/08/05 20:55:24 roberto Exp $ */ #ifndef lualib_h @@ -23,11 +23,16 @@ struct lua_reg { }; void luaI_openlib (struct lua_reg *l, int n); -void lua_arg_error(char *funcname); +void lua_arg_check(int cond, char *funcname); char *lua_check_string (int numArg, char *funcname); +char *lua_opt_string (int numArg, char *def, char *funcname); double lua_check_number (int numArg, char *funcname); +long lua_opt_number (int numArg, long def, char *funcname); char *luaI_addchar (int c); void luaI_addquoted (char *s); +char *item_end (char *p); +int singlematch (int c, char *p); + #endif diff --git a/src/Makefile b/src/Makefile index 843220dc..1ac2ab85 100644 --- a/src/Makefile +++ b/src/Makefile @@ -46,8 +46,8 @@ SLIB= $(LIB)/liblua.a all: $(SLIB) $(SLIB): $(OBJS) - ar rcuv $@ $(OBJS) - ranlib $@ + ar rcu $@ $(OBJS) + $(RANLIB) $@ clean: rm -f $(OBJS) $(SLIB) @@ -1,4 +1,4 @@ -#include <stdlib.h> +#include <string.h> #include "luadebug.h" #include "table.h" @@ -3,7 +3,7 @@ ** hash manager for lua */ -char *rcs_hash="$Id: hash.c,v 2.30 1996/05/06 14:30:27 roberto Exp $"; +char *rcs_hash="$Id: hash.c,v 2.32 1996/11/18 13:48:44 roberto Exp $"; #include "mem.h" @@ -48,24 +48,26 @@ int luaI_redimension (int nhash) static int hashindex (Hash *t, Object *ref) /* hash function */ { - switch (tag(ref)) - { - case LUA_T_NIL: - lua_error ("unexpected type to index table"); - return -1; /* UNREACHEABLE */ - case LUA_T_NUMBER: - return (((int)nvalue(ref))%nhash(t)); - case LUA_T_STRING: - return (int)((tsvalue(ref)->hash)%nhash(t)); /* make it a valid index */ - case LUA_T_FUNCTION: - return (((IntPoint)ref->value.tf)%nhash(t)); - case LUA_T_CFUNCTION: - return (((IntPoint)fvalue(ref))%nhash(t)); - case LUA_T_ARRAY: - return (((IntPoint)avalue(ref))%nhash(t)); - default: /* user data */ - return (((IntPoint)uvalue(ref))%nhash(t)); - } + long int h; + switch (tag(ref)) { + case LUA_T_NIL: + lua_error ("unexpected type to index table"); + h = 0; /* UNREACHEABLE */ + case LUA_T_NUMBER: + h = (long int)nvalue(ref); break; + case LUA_T_STRING: + h = tsvalue(ref)->hash; break; + case LUA_T_FUNCTION: + h = (IntPoint)ref->value.tf; break; + case LUA_T_CFUNCTION: + h = (IntPoint)fvalue(ref); break; + case LUA_T_ARRAY: + h = (IntPoint)avalue(ref); break; + default: /* user data */ + h = (IntPoint)uvalue(ref); break; + } + if (h < 0) h = -h; + return h%nhash(t); /* make it a valid index */ } int lua_equalObj (Object *t1, Object *t2) @@ -283,17 +285,11 @@ Object *lua_hashdefine (Hash *t, Object *ref) static void hashnext (Hash *t, int i) { if (i >= nhash(t)) - { - lua_pushnil(); lua_pushnil(); return; - } while (tag(ref(node(t,i))) == LUA_T_NIL || tag(val(node(t,i))) == LUA_T_NIL) { if (++i >= nhash(t)) - { - lua_pushnil(); lua_pushnil(); return; - } } luaI_pushobject(ref(node(t,i))); luaI_pushobject(val(node(t,i))); diff --git a/src/inout.c b/src/inout.c index 85722c3c..0aa551c0 100644 --- a/src/inout.c +++ b/src/inout.c @@ -5,9 +5,10 @@ ** Also provides some predefined lua functions. */ -char *rcs_inout="$Id: inout.c,v 2.36 1996/03/19 22:28:37 roberto Exp $"; +char *rcs_inout="$Id: inout.c,v 2.43 1996/09/25 12:57:22 roberto Exp $"; #include <stdio.h> +#include <string.h> #include "lex.h" #include "opcode.h" @@ -31,7 +32,8 @@ static char *st; */ static int fileinput (void) { - return fgetc (fp); + int c = fgetc(fp); + return (c == EOF) ? 0 : c; } /* @@ -58,7 +60,6 @@ FILE *lua_openfile (char *fn) fp = fopen (fn, "r"); if (fp == NULL) return NULL; - lua_linenumber = 1; lua_parsedfile = luaI_createfixedstring(fn)->str; return fp; } @@ -78,12 +79,16 @@ void lua_closefile (void) /* ** Function to open a string to be input unit */ +#define SIZE_PREF 20 /* size of string prefix to appear in error messages */ void lua_openstring (char *s) { - lua_setinput (stringinput); - st = s; - lua_linenumber = 1; - lua_parsedfile = luaI_createfixedstring("(string)")->str; + char buff[SIZE_PREF+25]; + lua_setinput(stringinput); + st = s; + strcpy(buff, "(dostring) >> "); + strncat(buff, s, SIZE_PREF); + if (strlen(s) > SIZE_PREF) strcat(buff, "..."); + lua_parsedfile = luaI_createfixedstring(buff)->str; } /* @@ -93,17 +98,36 @@ void lua_closestring (void) { } + +static void check_arg (int cond, char *func) +{ + if (!cond) + { + char buff[100]; + sprintf(buff, "incorrect argument to function `%s'", func); + lua_error(buff); + } +} + + +static int passresults (void) +{ + int arg = 0; + lua_Object obj; + while ((obj = lua_getresult(++arg)) != LUA_NOOBJECT) + lua_pushobject(obj); + return arg-1; +} /* ** Internal function: do a string */ void lua_internaldostring (void) { - lua_Object obj = lua_getparam (1); - if (lua_isstring(obj) && !lua_dostring(lua_getstring(obj))) - lua_pushnumber(1); - else - lua_pushnil(); + lua_Object obj = lua_getparam (1); + if (lua_isstring(obj) && lua_dostring(lua_getstring(obj)) == 0) + if (passresults() == 0) + lua_pushuserdata(NULL); /* at least one result to signal no errors */ } /* @@ -118,10 +142,9 @@ void lua_internaldofile (void) else if (obj != LUA_NOOBJECT) lua_error("invalid argument to function `dofile'"); /* else fname = NULL */ - if (!lua_dofile(fname)) - lua_pushnumber(1); - else - lua_pushnil(); + if (lua_dofile(fname) == 0) + if (passresults() == 0) + lua_pushuserdata(NULL); /* at least one result to signal no errors */ } @@ -207,8 +230,6 @@ void lua_obj2number (void) lua_Object o = lua_getparam(1); if (lua_isnumber(o)) lua_pushnumber(lua_getnumber(o)); - else - lua_pushnil(); } @@ -230,8 +251,7 @@ void luaI_setglobal (void) { lua_Object name = lua_getparam(1); lua_Object value = lua_getparam(2); - if (!lua_isstring(name)) - lua_error("incorrect argument to function `setglobal'"); + check_arg(lua_isstring(name), "setglobal"); lua_pushobject(value); lua_storeglobal(lua_getstring(name)); lua_pushobject(value); /* return given value */ @@ -240,7 +260,41 @@ void luaI_setglobal (void) void luaI_getglobal (void) { lua_Object name = lua_getparam(1); - if (!lua_isstring(name)) - lua_error("incorrect argument to function `getglobal'"); + check_arg(lua_isstring(name), "getglobal"); lua_pushobject(lua_getglobal(lua_getstring(name))); } + +#define MAXPARAMS 256 +void luaI_call (void) +{ + lua_Object f = lua_getparam(1); + lua_Object arg = lua_getparam(2); + lua_Object temp, params[MAXPARAMS]; + int narg, i; + check_arg(lua_istable(arg), "call"); + check_arg(lua_isfunction(f), "call"); + /* narg = arg.n */ + lua_pushobject(arg); + lua_pushstring("n"); + temp = lua_getsubscript(); + narg = lua_isnumber(temp) ? lua_getnumber(temp) : MAXPARAMS+1; + /* read arg[1...n] */ + for (i=0; i<narg; i++) { + if (i>=MAXPARAMS) + lua_error("argument list too long in function `call'"); + lua_pushobject(arg); + lua_pushnumber(i+1); + params[i] = lua_getsubscript(); + if (narg == MAXPARAMS+1 && lua_isnil(params[i])) { + narg = i; + break; + } + } + /* push parameters and do the call */ + for (i=0; i<narg; i++) + lua_pushobject(params[i]); + if (lua_callfunction(f)) + lua_error(NULL); + else + passresults(); +} diff --git a/src/inout.h b/src/inout.h index e5957753..a26f8e99 100644 --- a/src/inout.h +++ b/src/inout.h @@ -1,5 +1,5 @@ /* -** $Id: inout.h,v 1.15 1996/03/15 18:21:58 roberto Exp $ +** $Id: inout.h,v 1.16 1996/05/28 21:07:32 roberto Exp $ */ @@ -29,5 +29,6 @@ void luaI_error (void); void luaI_assert (void); void luaI_setglobal (void); void luaI_getglobal (void); +void luaI_call (void); #endif @@ -1,5 +1,5 @@ -char *rcs_lex = "$Id: lex.c,v 2.32 1996/03/21 16:33:47 roberto Exp $"; - +char *rcs_lex = "$Id: lex.c,v 2.39 1996/11/08 19:08:30 roberto Exp $"; + #include <ctype.h> #include <string.h> @@ -14,32 +14,31 @@ char *rcs_lex = "$Id: lex.c,v 2.32 1996/03/21 16:33:47 roberto Exp $"; #define MINBUFF 260 -#define next() { current = input(); } -#define save(x) { *yytextLast++ = (x); } -#define save_and_next() { save(current); next(); } +#define next() (current = input()) +#define save(x) (yytext[tokensize++] = (x)) +#define save_and_next() (save(current), next()) + -static int current; -static char *yytext = NULL; -static int textsize = 0; -static char *yytextLast; +static int current; /* look ahead character */ +static Input input; /* input function */ -static Input input; void lua_setinput (Input fn) { - current = ' '; + current = '\n'; + lua_linenumber = 0; input = fn; - if (yytext == NULL) - { - textsize = MINBUFF; - yytext = newvector(textsize, char); - } } -char *lua_lasttext (void) +void luaI_syntaxerror (char *s) { - *yytextLast = 0; - return yytext; + char msg[256]; + char *token = luaI_buffer(1); + if (token[0] == 0) + token = "<eof>"; + sprintf (msg,"%s;\n> last token read: \"%s\" at line %d in file %s", + s, token, lua_linenumber, lua_parsedfile); + lua_error (msg); } @@ -79,95 +78,97 @@ void luaI_addReserved (void) } } - -static void growtext (void) +static int inclinenumber (int pragma_allowed) { - int size = yytextLast - yytext; - textsize = growvector(&yytext, textsize, char, lexEM, MAX_WORD); - yytextLast = yytext + size; + ++lua_linenumber; + if (pragma_allowed && current == '$') { /* is a pragma? */ + char *buff = luaI_buffer(MINBUFF+1); + int i = 0; + next(); /* skip $ */ + while (isalnum(current)) { + if (i >= MINBUFF) luaI_syntaxerror("pragma too long"); + buff[i++] = current; + next(); + } + buff[i] = 0; + if (strcmp(buff, "debug") == 0) + lua_debug = 1; + else if (strcmp(buff, "nodebug") == 0) + lua_debug = 0; + else luaI_syntaxerror("invalid pragma"); + } + return lua_linenumber; } - -static int read_long_string (void) +static int read_long_string (char *yytext, int buffsize) { int cont = 0; - int spaceleft = textsize - (yytextLast - yytext); + int tokensize = 2; /* '[[' already stored */ while (1) { - if (spaceleft <= 2) /* may read more than 1 char in one cicle */ - { - growtext(); - spaceleft = textsize - (yytextLast - yytext); - } + if (buffsize-tokensize <= 2) /* may read more than 1 char in one cicle */ + yytext = luaI_buffer(buffsize *= 2); switch (current) { - case EOF: case 0: + save(0); return WRONGTOKEN; case '[': - save_and_next(); spaceleft--; + save_and_next(); if (current == '[') { cont++; - save_and_next(); spaceleft--; + save_and_next(); } - continue; + continue; case ']': - save_and_next(); spaceleft--; + save_and_next(); if (current == ']') { - if (cont == 0) return STRING; + if (cont == 0) goto endloop; cont--; - save_and_next(); spaceleft--; + save_and_next(); } - continue; + continue; case '\n': - lua_linenumber++; /* goes through */ + save_and_next(); + inclinenumber(0); + continue; default: - save_and_next(); spaceleft--; + save_and_next(); } - } + } endloop: + save_and_next(); /* pass the second ']' */ + yytext[tokensize-2] = 0; /* erases ']]' */ + luaY_lval.vWord = luaI_findconstantbyname(yytext+2); + yytext[tokensize-2] = ']'; /* restores ']]' */ + save(0); + return STRING; } - int luaY_lex (void) { - double a; static int linelasttoken = 0; + double a; + int buffsize = MINBUFF; + char *yytext = luaI_buffer(buffsize); + yytext[1] = yytext[2] = yytext[3] = 0; if (lua_debug) luaI_codedebugline(linelasttoken); linelasttoken = lua_linenumber; while (1) { - yytextLast = yytext; + int tokensize = 0; switch (current) { - case EOF: - case 0: - return 0; - case '\n': linelasttoken = ++lua_linenumber; - case ' ': - case '\r': /* CR: to avoid problems with DOS/Windows */ - case '\t': + case '\n': next(); + linelasttoken = inclinenumber(1); continue; - case '$': - next(); - while (isalnum(current) || current == '_') - save_and_next(); - *yytextLast = 0; - if (strcmp(yytext, "debug") == 0) - { - luaY_lval.vInt = 1; - return DEBUG; - } - else if (strcmp(yytext, "nodebug") == 0) - { - luaY_lval.vInt = 0; - return DEBUG; - } - return WRONGTOKEN; + case ' ': case '\t': case '\r': /* CR: to avoid problems with DOS */ + next(); + continue; case '-': save_and_next(); @@ -181,12 +182,7 @@ int luaY_lex (void) else { save_and_next(); /* pass the second '[' */ - if (read_long_string() == WRONGTOKEN) - return WRONGTOKEN; - save_and_next(); /* pass the second ']' */ - *(yytextLast-2) = 0; /* erases ']]' */ - luaY_lval.vWord = luaI_findconstantbyname(yytext+2); - return STRING; + return read_long_string(yytext, buffsize); } case '=': @@ -213,21 +209,16 @@ int luaY_lex (void) case '\'': { int del = current; - int spaceleft = textsize - (yytextLast - yytext); - next(); /* skip the delimiter */ + save_and_next(); while (current != del) { - if (spaceleft <= 2) /* may read more than 1 char in one cicle */ - { - growtext(); - spaceleft = textsize - (yytextLast - yytext); - } - spaceleft--; + if (buffsize-tokensize <= 2) /* may read more than 1 char in one cicle */ + yytext = luaI_buffer(buffsize *= 2); switch (current) { - case EOF: case 0: case '\n': + save(0); return WRONGTOKEN; case '\\': next(); /* do not save the '\' */ @@ -236,17 +227,19 @@ int luaY_lex (void) case 'n': save('\n'); next(); break; case 't': save('\t'); next(); break; case 'r': save('\r'); next(); break; - case '\n': lua_linenumber++; /* goes through */ - default : save(current); next(); break; + case '\n': save_and_next(); inclinenumber(0); break; + default : save_and_next(); break; } break; default: save_and_next(); } } - next(); /* skip the delimiter */ - *yytextLast = 0; - luaY_lval.vWord = luaI_findconstantbyname(yytext); + next(); /* skip delimiter */ + save(0); + luaY_lval.vWord = luaI_findconstantbyname(yytext+1); + tokensize--; + save(del); save(0); /* restore delimiter */ return STRING; } @@ -266,7 +259,7 @@ int luaY_lex (void) { TaggedString *ts; do { save_and_next(); } while (isalnum(current) || current == '_'); - *yytextLast = 0; + save(0); ts = lua_createstring(yytext); if (ts->marked > 2) return ts->marked; /* reserved word */ @@ -280,7 +273,12 @@ int luaY_lex (void) if (current == '.') { save_and_next(); - return CONC; + if (current == '.') + { + save_and_next(); + return DOTS; /* ... */ + } + else return CONC; /* .. */ } else if (!isdigit(current)) return '.'; /* current is a digit: goes through to number */ @@ -290,12 +288,24 @@ int luaY_lex (void) case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': a=0.0; - do { a=10.0*a+(current-'0'); save_and_next(); } while (isdigit(current)); - if (current == '.') save_and_next(); -fraction: + do { + a=10.0*a+(current-'0'); + save_and_next(); + } while (isdigit(current)); + if (current == '.') { + save_and_next(); + if (current == '.') + luaI_syntaxerror( + "ambiguous syntax (decimal point x string concatenation)"); + } + fraction: { double da=0.1; while (isdigit(current)) - {a+=(current-'0')*da; da/=10.0; save_and_next()}; + { + a+=(current-'0')*da; + da/=10.0; + save_and_next(); + } if (current == 'e' || current == 'E') { int e=0; @@ -304,19 +314,23 @@ fraction: save_and_next(); neg=(current=='-'); if (current == '+' || current == '-') save_and_next(); - if (!isdigit(current)) return WRONGTOKEN; - do { e=10.0*e+(current-'0'); save_and_next(); } while (isdigit(current)); - for (ea=neg?0.1:10.0; e>0; e>>=1) + if (!isdigit(current)) { save(0); return WRONGTOKEN; } + do { + e=10.0*e+(current-'0'); + save_and_next(); + } while (isdigit(current)); + for (ea=neg?0.1:10.0; e>0; e>>=1) { if (e & 1) a*=ea; ea*=ea; } } luaY_lval.vFloat = a; + save(0); return NUMBER; } - default: /* also end of file */ + default: /* also end of program (0) */ { save_and_next(); return yytext[0]; @@ -324,3 +338,4 @@ fraction: } } } + @@ -1,7 +1,7 @@ /* ** lex.h ** TecCGraf - PUC-Rio -** $Id: lex.h,v 1.2 1996/02/14 13:35:51 roberto Exp $ +** $Id: lex.h,v 1.3 1996/11/08 12:49:35 roberto Exp $ */ #ifndef lex_h @@ -11,7 +11,7 @@ typedef int (*Input) (void); void lua_setinput (Input fn); -char *lua_lasttext (void); +void luaI_syntaxerror (char *s); int luaY_lex (void); void luaI_addReserved (void); diff --git a/src/lua.stx b/src/lua.stx index 54c5a38c..00752604 100644 --- a/src/lua.stx +++ b/src/lua.stx @@ -1,9 +1,10 @@ %{ -char *rcs_luastx = "$Id: lua.stx,v 3.36 1996/03/21 16:31:32 roberto Exp $"; +char *rcs_luastx = "$Id: lua.stx,v 3.41 1996/11/08 12:49:35 roberto Exp $"; #include <stdio.h> #include <stdlib.h> +#include <string.h> #include "luadebug.h" #include "mem.h" @@ -58,58 +59,48 @@ int lua_debug = 0; static void yyerror (char *s) { - char msg[256]; - char *token = lua_lasttext(); - if (token[0] == 0) - token = "<eof>"; - sprintf (msg,"%s; last token read: \"%s\" at line %d in file `%s'", - s, token, lua_linenumber, lua_parsedfile); - lua_error (msg); + luaI_syntaxerror(s); +} + +static void check_space (int i) +{ + if (pc+i>maxcurr-1) /* 1 byte free to code HALT of main code */ + maxcurr = growvector(&basepc, maxcurr, Byte, codeEM, MAX_INT); } static void code_byte (Byte c) { - if (pc>maxcurr-2) /* 1 byte free to code HALT of main code */ - maxcurr = growvector(&basepc, maxcurr, Byte, codeEM, MAX_INT); + check_space(1); basepc[pc++] = c; } static void code_word (Word n) { - CodeWord code; - code.w = n; - code_byte(code.m.c1); - code_byte(code.m.c2); + check_space(sizeof(Word)); + memcpy(basepc+pc, &n, sizeof(Word)); + pc += sizeof(Word); } -static void code_float (float n) +static void code_float (real n) { - CodeFloat code; - code.f = n; - code_byte(code.m.c1); - code_byte(code.m.c2); - code_byte(code.m.c3); - code_byte(code.m.c4); + check_space(sizeof(real)); + memcpy(basepc+pc, &n, sizeof(real)); + pc += sizeof(real); } static void code_code (TFunc *tf) { - CodeCode code; - code.tf = tf; - code_byte(code.m.c1); - code_byte(code.m.c2); - code_byte(code.m.c3); - code_byte(code.m.c4); + check_space(sizeof(TFunc *)); + memcpy(basepc+pc, &tf, sizeof(TFunc *)); + pc += sizeof(TFunc *); } static void code_word_at (Byte *p, int n) { - CodeWord code; - if ((Word)n != n) - yyerror("block too big"); - code.w = (Word)n; - *p++ = code.m.c1; - *p++ = code.m.c2; + Word w = n; + if (w != n) + yyerror("block too big"); + memcpy(p, &w, sizeof(Word)); } static void push_field (Word name) @@ -322,6 +313,19 @@ static void adjust_mult_assign (int vars, Long exps, int temps) lua_codeadjust(temps); } +static int close_parlist (int dots) +{ + if (!dots) + lua_codeadjust(0); + else + { + code_byte(VARARGS); + code_byte(nlocalvar); + add_localvar(luaI_createfixedstring("arg")); + } + return lua_linenumber; +} + static void storesinglevar (Long v) { if (v > 0) /* global var */ @@ -418,7 +422,7 @@ void lua_parse (TFunc *tf) TaggedString *pTStr; } -%start functionlist +%start chunk %token WRONGTOKEN %token NIL @@ -426,10 +430,10 @@ void lua_parse (TFunc *tf) %token RETURN %token LOCAL %token FUNCTION +%token DOTS %token <vFloat> NUMBER %token <vWord> STRING %token <pTStr> NAME -%token <vInt> DEBUG %type <vLong> PrepJump %type <vLong> exprlist, exprlist1 /* if > 0, points to function return @@ -440,7 +444,7 @@ void lua_parse (TFunc *tf) %type <vInt> fieldlist, localdeclist, decinit %type <vInt> ffieldlist, ffieldlist1, semicolonpart %type <vInt> lfieldlist, lfieldlist1 -%type <vInt> parlist +%type <vInt> parlist, parlist1, par %type <vLong> var, singlevar, funcname %type <pFunc> body @@ -455,15 +459,12 @@ void lua_parse (TFunc *tf) %% /* beginning of rules section */ +chunk : chunklist ret -functionlist : /* empty */ - | functionlist globalstat - | functionlist function - ; - -globalstat : stat sc - | setdebug - ; +chunklist : /* empty */ + | chunklist stat sc + | chunklist function + ; function : FUNCTION funcname body { @@ -580,6 +581,7 @@ PrepJump : /* empty */ code_byte(0); /* open space */ code_word (0); } + ; expr1 : expr { adjust_functioncall($1, 1); } ; @@ -674,13 +676,22 @@ exprlist1 : expr { if ($1 != 0) $$ = $1; else $$ = -1; } } ; -parlist : /* empty */ { lua_codeadjust(0); $$ = lua_linenumber; } - | parlist1 { lua_codeadjust(0); $$ = lua_linenumber; } +parlist : /* empty */ { $$ = close_parlist(0); } + | parlist1 { $$ = close_parlist($1); } ; -parlist1 : NAME { add_localvar($1); } - | parlist1 ',' NAME { add_localvar($3); } +parlist1 : par { $$ = $1; } + | parlist1 ',' par + { + if ($1) + lua_error("invalid parameter list"); + $$ = $3; + } ; + +par : NAME { add_localvar($1); $$ = 0; } + | DOTS { $$ = 1; } + ; fieldlist : lfieldlist { flush_list($1/FIELDS_PER_FLUSH, $1%FIELDS_PER_FLUSH); } @@ -782,7 +793,4 @@ decinit : /* empty */ { $$ = 0; } | '=' exprlist1 { $$ = $2; } ; -setdebug : DEBUG { lua_debug = $1; } - ; - %% diff --git a/src/luac/dump.c b/src/luac/dump.c index 22db5e36..656cc293 100644 --- a/src/luac/dump.c +++ b/src/luac/dump.c @@ -3,9 +3,10 @@ ** thread and save bytecodes to file */ -char* rcs_dump="$Id: dump.c,v 1.12 1996/03/12 20:00:03 lhf Exp $"; +char* rcs_dump="$Id: dump.c,v 1.17 1996/11/18 11:18:29 lhf Exp $"; #include <stdio.h> +#include <stdlib.h> #include <string.h> #include "luac.h" @@ -104,38 +105,36 @@ static void ThreadCode(Byte* code, Byte* end) p+=3; break; case PUSHFLOAT: - p+=5; + p+=5; /* assumes sizeof(float)==4 */ break; case PUSHSELF: case PUSHSTRING: { - CodeWord c; + Word w; p++; - get_word(c,p); - c.w=SawStr(c.w,at); - p[-2]=c.m.c1; - p[-1]=c.m.c2; + get_word(w,p); + w=SawStr(w,at); + memcpy(p-2,&w,sizeof(w)); break; } case PUSHFUNCTION: { - CodeCode c; + TFunc* tf; p++; - get_code(c,p); - c.tf->marked=at; - c.tf->next=NULL; /* TODO: remove? */ - lastF=lastF->next=c.tf; + get_code(tf,p); + tf->marked=at; + tf->next=NULL; /* TODO: remove? */ + lastF=lastF->next=tf; break; } case PUSHGLOBAL: case STOREGLOBAL: { - CodeWord c; + Word w; p++; - get_word(c,p); - c.w=SawVar(c.w,at); - p[-2]=c.m.c1; - p[-1]=c.m.c2; + get_word(w,p); + w=SawVar(w,at); + memcpy(p-2,&w,sizeof(w)); break; } case STORERECORD: @@ -144,12 +143,11 @@ static void ThreadCode(Byte* code, Byte* end) p++; while (n--) { - CodeWord c; + Word w; at=p-code; - get_word(c,p); - c.w=SawStr(c.w,at); - p[-2]=c.m.c1; - p[-1]=c.m.c2; + get_word(w,p); + w=SawStr(w,at); + memcpy(p-2,&w,sizeof(w)); } break; } @@ -167,7 +165,7 @@ static void DumpWord(int i, FILE* D) fwrite(&w,sizeof(w),1,D); } -static void DumpBlock(char* b, int size, FILE* D) +static void DumpBlock(void* b, int size, FILE* D) { fwrite(b,size,1,D); } @@ -242,6 +240,9 @@ void DumpHeader(FILE* D) fputc(ID_CHUNK,D); fputs(SIGNATURE,D); fputc(VERSION,D); + fputc(sizeof(Word),D); + fputc(sizeof(float),D); + fputc(sizeof(TFunc*),D); fwrite(&w,sizeof(w),1,D); fwrite(&f,sizeof(f),1,D); } diff --git a/src/luac/luac.c b/src/luac/luac.c index aa71afcf..7546c1bb 100644 --- a/src/luac/luac.c +++ b/src/luac/luac.c @@ -3,9 +3,10 @@ ** lua compiler (saves bytecodes to files) */ -char* rcs_luac="$Id: luac.c,v 1.16 1996/03/13 17:33:03 lhf Exp $"; +char* rcs_luac="$Id: luac.c,v 1.18 1996/11/16 20:14:23 lhf Exp $"; #include <stdio.h> +#include <stdlib.h> #include <string.h> #include "luac.h" @@ -56,7 +57,7 @@ int main(int argc, char* argv[]) fprintf(stderr,"luac: will not overwrite input file \"%s\"\n",d); exit(1); } - D=(dumping) ? fopen(d,"wb") : stdout; /* must open in binary mode */ + D=(dumping) ? fopen(d,"wb") : stdout; /* must open in binary mode */ if (D==NULL) { fprintf(stderr,"luac: cannot open "); diff --git a/src/luac/print.c b/src/luac/print.c index 1b338931..0e1d2569 100644 --- a/src/luac/print.c +++ b/src/luac/print.c @@ -3,9 +3,10 @@ ** print bytecodes */ -char* rcs_print="$Id: print.c,v 1.6 1996/03/12 20:00:24 lhf Exp $"; +char* rcs_print="$Id: print.c,v 1.11 1996/11/18 11:24:16 lhf Exp $"; #include <stdio.h> +#include <stdlib.h> #include <string.h> #include "luac.h" #include "print.h" @@ -24,7 +25,7 @@ static void PrintCode(Byte* code, Byte* end) { OpCode op=(OpCode)*p; if (op>SETLINE) op=SETLINE+1; - printf("%6d\t%s",p-code,OpCodeName[op]); + printf("%6d\t%s",(int)(p-code),OpCodeName[op]); switch (op) { case PUSHNIL: @@ -109,44 +110,44 @@ static void PrintCode(Byte* code, Byte* end) case IFFUPJMP: case SETLINE: { - CodeWord c; + Word w; p++; - get_word(c,p); - printf("\t%d",c.w); + get_word(w,p); + printf("\t%d",w); break; } case PUSHFLOAT: { - CodeFloat c; + float f; p++; - get_float(c,p); - printf("\t%g",c.f); + get_float(f,p); + printf("\t%g",f); break; } case PUSHSELF: case PUSHSTRING: { - CodeWord c; + Word w; p++; - get_word(c,p); - printf("\t%d\t; \"%s\"",c.w,StrStr(c.w)); + get_word(w,p); + printf("\t%d\t; \"%s\"",w,StrStr(w)); break; } case PUSHFUNCTION: { - CodeCode c; + TFunc* tf; p++; - get_code(c,p); - printf("\t%p\t; \"%s\":%d",c.tf,c.tf->fileName,c.tf->lineDefined); + get_code(tf,p); + printf("\t%p\t; \"%s\":%d",tf,tf->fileName,tf->lineDefined); break; } case PUSHGLOBAL: case STOREGLOBAL: { - CodeWord c; + Word w; p++; - get_word(c,p); - printf("\t%d\t; %s",c.w,VarStr(c.w)); + get_word(w,p); + printf("\t%d\t; %s",w,VarStr(w)); break; } case STORELIST: @@ -161,10 +162,10 @@ static void PrintCode(Byte* code, Byte* end) p++; while (n--) { - CodeWord c; - printf("\n%6d\t FIELD",p-code); - get_word(c,p); - printf("\t%d\t; \"%s\"",c.w,StrStr(c.w)); + Word w; + printf("\n%6d\t FIELD",(int)(p-code)); + get_word(w,p); + printf("\t%d\t; \"%s\"",w,StrStr(w)); } break; } @@ -3,7 +3,7 @@ ** TecCGraf - PUC-Rio */ -char *rcs_mem = "$Id: mem.c,v 1.12 1996/05/06 16:59:00 roberto Exp $"; +char *rcs_mem = "$Id: mem.c,v 1.13 1996/05/24 14:31:10 roberto Exp $"; #include <stdlib.h> @@ -11,9 +11,6 @@ char *rcs_mem = "$Id: mem.c,v 1.12 1996/05/06 16:59:00 roberto Exp $"; #include "lua.h" -#define mem_error() lua_error(memEM) - - void luaI_free (void *block) { if (block) @@ -24,21 +21,15 @@ void luaI_free (void *block) } -void *luaI_malloc (unsigned long size) -{ - void *block = malloc((size_t)size); - if (block == NULL) - mem_error(); - return block; -} - - void *luaI_realloc (void *oldblock, unsigned long size) { - void *block = oldblock ? realloc(oldblock, (size_t)size) : - malloc((size_t)size); + void *block; + size_t s = (size_t)size; + if (s != size) + lua_error("Allocation Error: Block too big"); + block = oldblock ? realloc(oldblock, s) : malloc(s); if (block == NULL) - mem_error(); + lua_error(memEM); return block; } @@ -52,7 +43,7 @@ int luaI_growvector (void **block, unsigned long nelems, int size, if (nelems > limit) nelems = limit; *block = luaI_realloc(*block, nelems*size); - return (int) nelems; + return (int)nelems; } @@ -1,7 +1,7 @@ /* ** mem.c ** memory manager for lua -** $Id: mem.h,v 1.7 1996/04/22 18:00:37 roberto Exp $ +** $Id: mem.h,v 1.8 1996/05/24 14:31:10 roberto Exp $ */ #ifndef mem_h @@ -24,12 +24,12 @@ void luaI_free (void *block); -void *luaI_malloc (unsigned long size); void *luaI_realloc (void *oldblock, unsigned long size); void *luaI_buffer (unsigned long size); int luaI_growvector (void **block, unsigned long nelems, int size, char *errormsg, unsigned long limit); +#define luaI_malloc(s) luaI_realloc(NULL, (s)) #define new(s) ((s *)luaI_malloc(sizeof(s))) #define newvector(n,s) ((s *)luaI_malloc((n)*sizeof(s))) #define growvector(old,n,s,e,l) \ diff --git a/src/opcode.c b/src/opcode.c index d3f655be..c3bcf54c 100644 --- a/src/opcode.c +++ b/src/opcode.c @@ -3,11 +3,12 @@ ** TecCGraf - PUC-Rio */ -char *rcs_opcode="$Id: opcode.c,v 3.68 1996/04/25 14:10:00 roberto Exp $"; +char *rcs_opcode="$Id: opcode.c,v 3.77 1996/11/18 13:48:44 roberto Exp $"; #include <setjmp.h> #include <stdio.h> #include <string.h> +#include <stdlib.h> #include "luadebug.h" #include "mem.h" @@ -49,10 +50,14 @@ static Object *top = &initial_stack; */ #define incr_top if (++top >= stackLimit) growstack() -static StkId CBase = 0; /* when Lua calls C or C calls Lua, points to */ - /* the first slot after the last parameter. */ -static int CnResults = 0; /* when Lua calls C, has the number of parameters; */ - /* when C calls Lua, has the number of results. */ +struct C_Lua_Stack { + StkId base; /* when Lua calls C or C calls Lua, points to */ + /* the first slot after the last parameter. */ + int num; /* when Lua calls C, has the number of parameters; */ + /* when C calls Lua, has the number of results. */ +}; + +static struct C_Lua_Stack CLS_current = {0, 0}; static jmp_buf *errorJmp = NULL; /* current error recover point */ @@ -117,7 +122,7 @@ static void growstack (void) */ static char *lua_strconc (char *l, char *r) { - int nl = strlen(l); + size_t nl = strlen(l); char *buffer = luaI_buffer(nl+strlen(r)+1); strcpy(buffer, l); strcpy(buffer+nl, r); @@ -177,7 +182,7 @@ static void adjust_top (StkId newtop) top = nt; /* top could be bigger than newtop */ } -#define adjustC(nParams) adjust_top(CBase+nParams) +#define adjustC(nParams) adjust_top(CLS_current.base+nParams) /* @@ -197,14 +202,12 @@ static void open_stack (int nelems) */ static void lineHook (int line) { - StkId oldBase = CBase; - int oldCnResults = CnResults; - StkId old_top = CBase = top-stack; - CnResults = 0; + struct C_Lua_Stack oldCLS = CLS_current; + StkId old_top = CLS_current.base = top-stack; + CLS_current.num = 0; (*lua_linehook)(line); top = stack+old_top; - CnResults = oldCnResults; - CBase = oldBase; + CLS_current = oldCLS; } @@ -214,10 +217,9 @@ static void lineHook (int line) */ static void callHook (StkId base, lua_Type type, int isreturn) { - StkId oldBase = CBase; - int oldCnResults = CnResults; - StkId old_top = CBase = top-stack; - CnResults = 0; + struct C_Lua_Stack oldCLS = CLS_current; + StkId old_top = CLS_current.base = top-stack; + CLS_current.num = 0; if (isreturn) (*lua_callhook)(LUA_NOOBJECT, "(return)", 0); else @@ -229,32 +231,29 @@ static void callHook (StkId base, lua_Type type, int isreturn) (*lua_callhook)(Ref(f), "(C)", -1); } top = stack+old_top; - CnResults = oldCnResults; - CBase = oldBase; + CLS_current = oldCLS; } /* -** Call a C function. CBase will point to the top of the stack, -** and CnResults is the number of parameters. Returns an index +** Call a C function. CLS_current.base will point to the top of the stack, +** and CLS_current.num is the number of parameters. Returns an index ** to the first result from C. */ static StkId callC (lua_CFunction func, StkId base) { - StkId oldBase = CBase; - int oldCnResults = CnResults; + struct C_Lua_Stack oldCLS = CLS_current; StkId firstResult; - CnResults = (top-stack) - base; + CLS_current.num = (top-stack) - base; /* incorporate parameters on the stack */ - CBase = base+CnResults; /* == top-stack */ + CLS_current.base = base+CLS_current.num; /* == top-stack */ if (lua_callhook) callHook(base, LUA_T_CMARK, 0); (*func)(); if (lua_callhook) /* func may have changed lua_callhook */ callHook(base, LUA_T_CMARK, 1); - firstResult = CBase; - CBase = oldBase; - CnResults = oldCnResults; + firstResult = CLS_current.base; + CLS_current = oldCLS; return firstResult; } @@ -449,27 +448,27 @@ int lua_setlocal (lua_Function func, int local_number) /* -** Execute a protected call. Assumes that function is at CBase and -** parameters are on top of it. Leave nResults on the stack. +** Execute a protected call. Assumes that function is at CLS_current.base and +** parameters are on top of it. Leave nResults on the stack. */ static int do_protectedrun (int nResults) { jmp_buf myErrorJmp; int status; - StkId oldCBase = CBase; + struct C_Lua_Stack oldCLS = CLS_current; jmp_buf *oldErr = errorJmp; errorJmp = &myErrorJmp; if (setjmp(myErrorJmp) == 0) { - do_call(CBase+1, nResults); - CnResults = (top-stack) - CBase; /* number of results */ - CBase += CnResults; /* incorporate results on the stack */ + do_call(CLS_current.base+1, nResults); + CLS_current.num = (top-stack) - CLS_current.base; /* number of results */ + CLS_current.base += CLS_current.num; /* incorporate results on the stack */ status = 0; } else - { /* an error occurred: restore CBase and top */ - CBase = oldCBase; - top = stack+CBase; + { /* an error occurred: restore CLS_current and top */ + CLS_current = oldCLS; + top = stack+CLS_current.base; status = 1; } errorJmp = oldErr; @@ -480,10 +479,9 @@ int luaI_dorun (TFunc *tf) { int status; adjustC(1); /* one slot for the pseudo-function */ - stack[CBase].tag = LUA_T_FUNCTION; - stack[CBase].value.tf = tf; - status = do_protectedrun(0); - adjustC(0); + stack[CLS_current.base].tag = LUA_T_FUNCTION; + stack[CLS_current.base].value.tf = tf; + status = do_protectedrun(MULT_RET); return status; } @@ -521,8 +519,8 @@ int lua_callfunction (lua_Object function) return 1; else { - open_stack((top-stack)-CBase); - stack[CBase] = *Address(function); + open_stack((top-stack)-CLS_current.base); + stack[CLS_current.base] = *Address(function); return do_protectedrun (MULT_RET); } } @@ -531,15 +529,15 @@ int lua_callfunction (lua_Object function) int lua_call (char *funcname) { Word n = luaI_findsymbolbyname(funcname); - open_stack((top-stack)-CBase); - stack[CBase] = s_object(n); + open_stack((top-stack)-CLS_current.base); + stack[CLS_current.base] = s_object(n); return do_protectedrun(MULT_RET); } /* ** Open file, generate opcode and execute global statement. Return 0 on -** success or 1 on error. +** success or non 0 on error. */ int lua_dofile (char *filename) { @@ -547,22 +545,32 @@ int lua_dofile (char *filename) int c; FILE *f = lua_openfile(filename); if (f == NULL) - return 1; + return 2; c = fgetc(f); ungetc(c, f); - status = (c == ID_CHUNK) ? luaI_undump(f) : do_protectedmain(); + if (c == ID_CHUNK) { + f = freopen(filename, "rb", f); /* set binary mode */ + status = luaI_undump(f); + } + else { + if (c == '#') + while ((c=fgetc(f)) != '\n') /* skip first line */; + status = do_protectedmain(); + } lua_closefile(); return status; } /* ** Generate opcode stored on string and execute global statement. Return 0 on -** success or 1 on error. +** success or non 0 on error. */ -int lua_dostring (char *string) +int lua_dostring (char *str) { int status; - lua_openstring(string); + if (str == NULL) + return 1; + lua_openstring(str); status = do_protectedmain(); lua_closestring(); return status; @@ -575,8 +583,8 @@ int lua_dostring (char *string) lua_Object lua_setfallback (char *name, lua_CFunction fallback) { adjustC(1); /* one slot for the pseudo-function */ - stack[CBase].tag = LUA_T_CFUNCTION; - stack[CBase].value.f = luaI_setfallback; + stack[CLS_current.base].tag = LUA_T_CFUNCTION; + stack[CLS_current.base].value.f = luaI_setfallback; lua_pushstring(name); lua_pushcfunction(fallback); if (do_protectedrun(1) == 0) @@ -594,7 +602,7 @@ lua_Object lua_getsubscript (void) { adjustC(2); pushsubscript(); - CBase++; /* incorporate object in the stack */ + CLS_current.base++; /* incorporate object in the stack */ return (Ref(top-1)); } @@ -602,7 +610,7 @@ lua_Object lua_getsubscript (void) #define MAX_C_BLOCKS 10 static int numCblocks = 0; -static StkId Cblocks[MAX_C_BLOCKS]; +static struct C_Lua_Stack Cblocks[MAX_C_BLOCKS]; /* ** API: starts a new block @@ -611,7 +619,7 @@ void lua_beginblock (void) { if (numCblocks >= MAX_C_BLOCKS) lua_error("`lua_beginblock': too many nested blocks"); - Cblocks[numCblocks] = CBase; + Cblocks[numCblocks] = CLS_current; numCblocks++; } @@ -621,7 +629,7 @@ void lua_beginblock (void) void lua_endblock (void) { --numCblocks; - CBase = Cblocks[numCblocks]; + CLS_current = Cblocks[numCblocks]; adjustC(0); } @@ -643,7 +651,7 @@ lua_Object lua_createtable (void) avalue(top) = lua_createarray(0); tag(top) = LUA_T_ARRAY; incr_top; - CBase++; /* incorporate object in the stack */ + CLS_current.base++; /* incorporate object in the stack */ return Ref(top-1); } @@ -653,10 +661,10 @@ lua_Object lua_createtable (void) */ lua_Object lua_getparam (int number) { - if (number <= 0 || number > CnResults) return LUA_NOOBJECT; - /* Ref(stack+(CBase-CnResults+number-1)) == - stack+(CBase-CnResults+number-1)-stack+1 == */ - return CBase-CnResults+number; + if (number <= 0 || number > CLS_current.num) return LUA_NOOBJECT; + /* Ref(stack+(CLS_current.base-CLS_current.num+number-1)) == + stack+(CLS_current.base-CLS_current.num+number-1)-stack+1 == */ + return CLS_current.base-CLS_current.num+number; } int lua_isnumber (lua_Object object) @@ -673,7 +681,8 @@ int lua_isstring (lua_Object object) int lua_isfunction (lua_Object object) { int t = lua_type(object); - return (t == LUA_T_FUNCTION) || (t == LUA_T_CFUNCTION); + return (t == LUA_T_FUNCTION) || (t == LUA_T_CFUNCTION) || + (t == LUA_T_MARK) || (t == LUA_T_CMARK); } /* @@ -701,7 +710,8 @@ char *lua_getstring (lua_Object object) */ lua_CFunction lua_getcfunction (lua_Object object) { - if (object == LUA_NOOBJECT || tag(Address(object)) != LUA_T_CFUNCTION) + if (object == LUA_NOOBJECT || ((tag(Address(object)) != LUA_T_CFUNCTION) && + (tag(Address(object)) != LUA_T_CMARK))) return NULL; else return (fvalue(Address(object))); } @@ -724,7 +734,7 @@ lua_Object lua_getref (int ref) return LUA_NOOBJECT; adjustC(0); luaI_pushobject(o); - CBase++; /* incorporate object in the stack */ + CLS_current.base++; /* incorporate object in the stack */ return Ref(top-1); } @@ -753,7 +763,7 @@ lua_Object lua_getglobal (char *name) { adjustC(0); getglobal(luaI_findsymbolbyname(name)); - CBase++; /* incorporate object in the stack */ + CLS_current.base++; /* incorporate object in the stack */ return Ref(top-1); } @@ -838,7 +848,10 @@ void lua_pushobject (lua_Object o) { if (o == LUA_NOOBJECT) lua_error("attempt to push a NOOBJECT"); - luaI_pushobject(Address(o)); + *top = *Address(o); + if (tag(top) == LUA_T_MARK) tag(top) = LUA_T_FUNCTION; + else if (tag(top) == LUA_T_CMARK) tag(top) = LUA_T_CFUNCTION; + incr_top; } int lua_type (lua_Object o) @@ -886,6 +899,34 @@ static void comparison (lua_Type tag_less, lua_Type tag_equal, } +static void adjust_varargs (StkId first_extra_arg) +{ + Object arg; + Object *firstelem = stack+first_extra_arg; + int nvararg = top-firstelem; + int i; + if (nvararg < 0) nvararg = 0; + avalue(&arg) = lua_createarray(nvararg+1); /* +1 for field 'n' */ + tag(&arg) = LUA_T_ARRAY; + for (i=0; i<nvararg; i++) { + Object index; + tag(&index) = LUA_T_NUMBER; + nvalue(&index) = i+1; + *(lua_hashdefine(avalue(&arg), &index)) = *(firstelem+i); + } + /* store counter in field "n" */ { + Object index, extra; + tag(&index) = LUA_T_STRING; + tsvalue(&index) = lua_createstring("n"); + tag(&extra) = LUA_T_NUMBER; + nvalue(&extra) = nvararg; + *(lua_hashdefine(avalue(&arg), &index)) = extra; + } + adjust_top(first_extra_arg); + *top = arg; incr_top; +} + + /* ** Execute the given opcode, until a RET. Parameters are between @@ -914,38 +955,38 @@ static StkId lua_execute (Byte *pc, StkId base) case PUSHWORD: { - CodeWord code; - get_word(code,pc); - tag(top) = LUA_T_NUMBER; nvalue(top) = code.w; + Word w; + get_word(w,pc); + tag(top) = LUA_T_NUMBER; nvalue(top) = w; incr_top; } break; case PUSHFLOAT: { - CodeFloat code; - get_float(code,pc); - tag(top) = LUA_T_NUMBER; nvalue(top) = code.f; + real num; + get_float(num,pc); + tag(top) = LUA_T_NUMBER; nvalue(top) = num; incr_top; } break; case PUSHSTRING: { - CodeWord code; - get_word(code,pc); - tag(top) = LUA_T_STRING; tsvalue(top) = lua_constant[code.w]; + Word w; + get_word(w,pc); + tag(top) = LUA_T_STRING; tsvalue(top) = lua_constant[w]; incr_top; } break; case PUSHFUNCTION: { - CodeCode code; - get_code(code,pc); - luaI_insertfunction(code.tf); /* may take part in GC */ + TFunc *f; + get_code(f,pc); + luaI_insertfunction(f); /* may take part in GC */ top->tag = LUA_T_FUNCTION; - top->value.tf = code.tf; + top->value.tf = f; incr_top; } break; @@ -960,9 +1001,9 @@ static StkId lua_execute (Byte *pc, StkId base) case PUSHGLOBAL: { - CodeWord code; - get_word(code,pc); - getglobal(code.w); + Word w; + get_word(w,pc); + getglobal(w); } break; @@ -973,9 +1014,9 @@ static StkId lua_execute (Byte *pc, StkId base) case PUSHSELF: { Object receiver = *(top-1); - CodeWord code; - get_word(code,pc); - tag(top) = LUA_T_STRING; tsvalue(top) = lua_constant[code.w]; + Word w; + get_word(w,pc); + tag(top) = LUA_T_STRING; tsvalue(top) = lua_constant[w]; incr_top; pushsubscript(); *top = receiver; @@ -994,9 +1035,9 @@ static StkId lua_execute (Byte *pc, StkId base) case STOREGLOBAL: { - CodeWord code; - get_word(code,pc); - s_object(code.w) = *(--top); + Word w; + get_word(w,pc); + s_object(w) = *(--top); } break; @@ -1050,9 +1091,9 @@ static StkId lua_execute (Byte *pc, StkId base) Object *arr = top-n-1; while (n) { - CodeWord code; - get_word(code,pc); - tag(top) = LUA_T_STRING; tsvalue(top) = lua_constant[code.w]; + Word w; + get_word(w,pc); + tag(top) = LUA_T_STRING; tsvalue(top) = lua_constant[w]; *(lua_hashdefine (avalue(arr), top)) = *(top-1); top--; n--; @@ -1068,11 +1109,15 @@ static StkId lua_execute (Byte *pc, StkId base) adjust_top(base + *(pc++)); break; + case VARARGS: + adjust_varargs(base + *(pc++)); + break; + case CREATEARRAY: { - CodeWord size; + Word size; get_word(size,pc); - avalue(top) = lua_createarray(size.w); + avalue(top) = lua_createarray(size); tag(top) = LUA_T_ARRAY; incr_top; } @@ -1195,51 +1240,51 @@ static StkId lua_execute (Byte *pc, StkId base) case ONTJMP: { - CodeWord code; - get_word(code,pc); - if (tag(top-1) != LUA_T_NIL) pc += code.w; + Word w; + get_word(w,pc); + if (tag(top-1) != LUA_T_NIL) pc += w; } break; case ONFJMP: { - CodeWord code; - get_word(code,pc); - if (tag(top-1) == LUA_T_NIL) pc += code.w; + Word w; + get_word(w,pc); + if (tag(top-1) == LUA_T_NIL) pc += w; } break; case JMP: { - CodeWord code; - get_word(code,pc); - pc += code.w; + Word w; + get_word(w,pc); + pc += w; } break; case UPJMP: { - CodeWord code; - get_word(code,pc); - pc -= code.w; + Word w; + get_word(w,pc); + pc -= w; } break; case IFFJMP: { - CodeWord code; - get_word(code,pc); + Word w; + get_word(w,pc); top--; - if (tag(top) == LUA_T_NIL) pc += code.w; + if (tag(top) == LUA_T_NIL) pc += w; } break; case IFFUPJMP: { - CodeWord code; - get_word(code,pc); + Word w; + get_word(w,pc); top--; - if (tag(top) == LUA_T_NIL) pc -= code.w; + if (tag(top) == LUA_T_NIL) pc -= w; } break; @@ -1262,8 +1307,8 @@ static StkId lua_execute (Byte *pc, StkId base) case SETLINE: { - CodeWord code; - get_word(code,pc); + Word line; + get_word(line,pc); if ((stack+base-1)->tag != LUA_T_LINE) { /* open space for LINE value */ @@ -1271,9 +1316,9 @@ static StkId lua_execute (Byte *pc, StkId base) base++; (stack+base-1)->tag = LUA_T_LINE; } - (stack+base-1)->value.i = code.w; + (stack+base-1)->value.i = line; if (lua_linehook) - lineHook (code.w); + lineHook (line); break; } diff --git a/src/opcode.h b/src/opcode.h index d42ff3ee..381efbc8 100644 --- a/src/opcode.h +++ b/src/opcode.h @@ -1,6 +1,6 @@ /* ** TeCGraf - PUC-Rio -** $Id: opcode.h,v 3.20 1996/03/15 13:13:13 roberto Exp $ +** $Id: opcode.h,v 3.24 1996/11/01 12:46:59 roberto Exp $ */ #ifndef opcode_h @@ -15,59 +15,83 @@ #define FIELDS_PER_FLUSH 40 -typedef enum -{ - PUSHNIL, - PUSH0, PUSH1, PUSH2, - PUSHBYTE, - PUSHWORD, - PUSHFLOAT, - PUSHSTRING, - PUSHFUNCTION, - PUSHLOCAL0, PUSHLOCAL1, PUSHLOCAL2, PUSHLOCAL3, PUSHLOCAL4, - PUSHLOCAL5, PUSHLOCAL6, PUSHLOCAL7, PUSHLOCAL8, PUSHLOCAL9, - PUSHLOCAL, - PUSHGLOBAL, - PUSHINDEXED, - PUSHSELF, - STORELOCAL0, STORELOCAL1, STORELOCAL2, STORELOCAL3, STORELOCAL4, - STORELOCAL5, STORELOCAL6, STORELOCAL7, STORELOCAL8, STORELOCAL9, - STORELOCAL, - STOREGLOBAL, - STOREINDEXED0, - STOREINDEXED, - STORELIST0, - STORELIST, - STORERECORD, - ADJUST0, - ADJUST, - CREATEARRAY, - EQOP, - LTOP, - LEOP, - GTOP, - GEOP, - ADDOP, - SUBOP, - MULTOP, - DIVOP, - POWOP, - CONCOP, - MINUSOP, - NOTOP, - ONTJMP, - ONFJMP, - JMP, - UPJMP, - IFFJMP, - IFFUPJMP, - POP, - CALLFUNC, - RETCODE0, - RETCODE, - SETLINE +typedef enum { +/* name parm before after side effect +-----------------------------------------------------------------------------*/ + +PUSHNIL,/* - nil */ +PUSH0,/* - 0.0 */ +PUSH1,/* - 1.0 */ +PUSH2,/* - 2.0 */ +PUSHBYTE,/* b - (float)b */ +PUSHWORD,/* w - (float)w */ +PUSHFLOAT,/* f - f */ +PUSHSTRING,/* w - STR[w] */ +PUSHFUNCTION,/* p - FUN(p) */ +PUSHLOCAL0,/* - LOC[0] */ +PUSHLOCAL1,/* - LOC[1] */ +PUSHLOCAL2,/* - LOC[2] */ +PUSHLOCAL3,/* - LOC[3] */ +PUSHLOCAL4,/* - LOC[4] */ +PUSHLOCAL5,/* - LOC[5] */ +PUSHLOCAL6,/* - LOC[6] */ +PUSHLOCAL7,/* - LOC[7] */ +PUSHLOCAL8,/* - LOC[8] */ +PUSHLOCAL9,/* - LOC[9] */ +PUSHLOCAL,/* w - LOC[w] */ +PUSHGLOBAL,/* w - VAR[w] */ +PUSHINDEXED,/* i t t[i] */ +PUSHSELF,/* w t t t[STR[w]] */ +STORELOCAL0,/* x - LOC[0]=x */ +STORELOCAL1,/* x - LOC[1]=x */ +STORELOCAL2,/* x - LOC[2]=x */ +STORELOCAL3,/* x - LOC[3]=x */ +STORELOCAL4,/* x - LOC[4]=x */ +STORELOCAL5,/* x - LOC[5]=x */ +STORELOCAL6,/* x - LOC[6]=x */ +STORELOCAL7,/* x - LOC[7]=x */ +STORELOCAL8,/* x - LOC[8]=x */ +STORELOCAL9,/* x - LOC[9]=x */ +STORELOCAL,/* w x - LOC[w]=x */ +STOREGLOBAL,/* w x - VAR[w]=x */ +STOREINDEXED0,/* v i t - t[i]=v */ +STOREINDEXED,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */ +STORELIST0,/* w v_w...v_1 t - t[i]=v_i */ +STORELIST,/* w n v_w...v_1 t - t[i+n*FPF]=v_i */ +STORERECORD,/* n + w_n...w_1 v_n...v_1 t - t[STR[w_i]]=v_i */ +ADJUST0,/* - - TOP=BASE */ +ADJUST,/* b - - TOP=BASE+b */ +CREATEARRAY,/* w - newarray(size = w) */ +EQOP,/* y x (x==y)? 1 : nil */ +LTOP,/* y x (x<y)? 1 : nil */ +LEOP,/* y x (x<y)? 1 : nil */ +GTOP,/* y x (x>y)? 1 : nil */ +GEOP,/* y x (x>=y)? 1 : nil */ +ADDOP,/* y x x+y */ +SUBOP,/* y x x-y */ +MULTOP,/* y x x*y */ +DIVOP,/* y x x/y */ +POWOP,/* y x x^y */ +CONCOP,/* y x x..y */ +MINUSOP,/* x -x */ +NOTOP,/* x (x==nil)? 1 : nil */ +ONTJMP,/* w x - (x!=nil)? PC+=w */ +ONFJMP,/* w x - (x==nil)? PC+=w */ +JMP,/* w - - PC+=w */ +UPJMP,/* w - - PC-=w */ +IFFJMP,/* w x - (x==nil)? PC+=w */ +IFFUPJMP,/* w x - (x==nil)? PC-=w */ +POP,/* x - */ +CALLFUNC,/* n m v_n...v_1 f r_m...r_1 f(v1,...,v_n) */ +RETCODE0, +RETCODE,/* b - - */ +SETLINE,/* w - - LINE=w */ +VARARGS/* b v_n...v_1 {v_1...v_n;n=n} */ + } OpCode; + #define MULT_RET 255 @@ -103,32 +127,15 @@ typedef struct Object #define s_tag(i) (tag(&s_object(i))) #define s_nvalue(i) (nvalue(&s_object(i))) #define s_svalue(i) (svalue(&s_object(i))) +#define s_tsvalue(i) (tsvalue(&s_object(i))) #define s_avalue(i) (avalue(&s_object(i))) #define s_fvalue(i) (fvalue(&s_object(i))) #define s_uvalue(i) (uvalue(&s_object(i))) -typedef union -{ - struct {Byte c1; Byte c2;} m; - Word w; -} CodeWord; -#define get_word(code,pc) {code.m.c1 = *pc++; code.m.c2 = *pc++;} - -typedef union -{ - struct {Byte c1; Byte c2; Byte c3; Byte c4;} m; - float f; -} CodeFloat; -#define get_float(code,pc) {code.m.c1 = *pc++; code.m.c2 = *pc++;\ - code.m.c3 = *pc++; code.m.c4 = *pc++;} - -typedef union -{ - struct {Byte c1; Byte c2; Byte c3; Byte c4;} m; - TFunc *tf; -} CodeCode; -#define get_code(code,pc) {code.m.c1 = *pc++; code.m.c2 = *pc++;\ - code.m.c3 = *pc++; code.m.c4 = *pc++;} +#define get_word(code,pc) {memcpy(&code, pc, sizeof(Word)); pc+=sizeof(Word);} +#define get_float(code,pc){memcpy(&code, pc, sizeof(real)); pc+=sizeof(real);} +#define get_code(code,pc) {memcpy(&code, pc, sizeof(TFunc *)); \ + pc+=sizeof(TFunc *);} /* Exported functions */ diff --git a/src/parser.c b/src/parser.c index 1cbb3c17..c91ee00e 100644 --- a/src/parser.c +++ b/src/parser.c @@ -1,22 +1,20 @@ -#if defined (__cplusplus) || defined (c_plusplus) -#include <c_varieties.h> -#ifdef __EXTERN_C__ - EXTERN_FUNCTION ( extern int luaY_lex, ()); -#else - extern int luaY_lex(); -#endif - extern void luaY_error(char *); - extern int luaY_parse(); +#ifndef lint +static char luaY_sccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; #endif +#define YYBYACC 1 +#define YYMAJOR 1 +#define YYMINOR 9 +#define luaY_clearin (luaY_char=(-1)) +#define luaY_errok (luaY_errflag=0) +#define YYRECOVERING (luaY_errflag!=0) +#define YYPREFIX "luaY_" +#line 2 "lua.stx" -#include <stdlib.h> - -# line 2 "lua.stx" - -char *rcs_luastx = "$Id: parser.c,v 1.1 1996/05/14 19:44:57 lhf Exp $"; +char *rcs_luastx = "$Id: parser.c,v 1.1 1996/11/21 16:11:40 lhf Exp $"; #include <stdio.h> #include <stdlib.h> +#include <string.h> #include "luadebug.h" #include "mem.h" @@ -71,58 +69,48 @@ int lua_debug = 0; static void luaY_error (char *s) { - char msg[256]; - char *token = lua_lasttext(); - if (token[0] == 0) - token = "<eof>"; - sprintf (msg,"%s; last token read: \"%s\" at line %d in file `%s'", - s, token, lua_linenumber, lua_parsedfile); - lua_error (msg); + luaI_syntaxerror(s); +} + +static void check_space (int i) +{ + if (pc+i>maxcurr-1) /* 1 byte free to code HALT of main code */ + maxcurr = growvector(&basepc, maxcurr, Byte, codeEM, MAX_INT); } static void code_byte (Byte c) { - if (pc>maxcurr-2) /* 1 byte free to code HALT of main code */ - maxcurr = growvector(&basepc, maxcurr, Byte, codeEM, MAX_INT); + check_space(1); basepc[pc++] = c; } static void code_word (Word n) { - CodeWord code; - code.w = n; - code_byte(code.m.c1); - code_byte(code.m.c2); + check_space(sizeof(Word)); + memcpy(basepc+pc, &n, sizeof(Word)); + pc += sizeof(Word); } -static void code_float (float n) +static void code_float (real n) { - CodeFloat code; - code.f = n; - code_byte(code.m.c1); - code_byte(code.m.c2); - code_byte(code.m.c3); - code_byte(code.m.c4); + check_space(sizeof(real)); + memcpy(basepc+pc, &n, sizeof(real)); + pc += sizeof(real); } static void code_code (TFunc *tf) { - CodeCode code; - code.tf = tf; - code_byte(code.m.c1); - code_byte(code.m.c2); - code_byte(code.m.c3); - code_byte(code.m.c4); + check_space(sizeof(TFunc *)); + memcpy(basepc+pc, &tf, sizeof(TFunc *)); + pc += sizeof(TFunc *); } static void code_word_at (Byte *p, int n) { - CodeWord code; - if ((Word)n != n) - luaY_error("block too big"); - code.w = (Word)n; - *p++ = code.m.c1; - *p++ = code.m.c2; + Word w = n; + if (w != n) + luaY_error("block too big"); + memcpy(p, &w, sizeof(Word)); } static void push_field (Word name) @@ -335,6 +323,19 @@ static void adjust_mult_assign (int vars, Long exps, int temps) lua_codeadjust(temps); } +static int close_parlist (int dots) +{ + if (!dots) + lua_codeadjust(0); + else + { + code_byte(VARARGS); + code_byte(nlocalvar); + add_localvar(luaI_createfixedstring("arg")); + } + return lua_linenumber; +} + static void storesinglevar (Long v) { if (v > 0) /* global var */ @@ -417,9 +418,8 @@ void lua_parse (TFunc *tf) } - -# line 410 "lua.stx" -typedef union +#line 414 "lua.stx" +typedef union { int vInt; float vFloat; @@ -429,901 +429,739 @@ typedef union TFunc *pFunc; TaggedString *pTStr; } YYSTYPE; -# define WRONGTOKEN 257 -# define NIL 258 -# define IF 259 -# define THEN 260 -# define ELSE 261 -# define ELSEIF 262 -# define WHILE 263 -# define DO 264 -# define REPEAT 265 -# define UNTIL 266 -# define END 267 -# define RETURN 268 -# define LOCAL 269 -# define FUNCTION 270 -# define NUMBER 271 -# define STRING 272 -# define NAME 273 -# define DEBUG 274 -# define AND 275 -# define OR 276 -# define EQ 277 -# define NE 278 -# define LE 279 -# define GE 280 -# define CONC 281 -# define UNARY 282 -# define NOT 283 -#define luaY_clearin luaY_char = -1 -#define luaY_errok luaY_errflag = 0 -extern int luaY_char; -extern int luaY_errflag; -#ifndef YYMAXDEPTH -#define YYMAXDEPTH 150 -#endif -YYSTYPE luaY_lval, luaY_val; -# define YYERRCODE 256 - -# line 788 "lua.stx" - -int luaY_exca[] ={ --1, 1, - 0, -1, - -2, 0, --1, 14, - 61, 88, - 44, 88, - -2, 94, --1, 22, - 40, 7, - -2, 94, --1, 29, - 40, 59, - 123, 59, - -2, 46, --1, 44, - 123, 56, - -2, 63, --1, 71, - 123, 56, - -2, 84, --1, 76, - 275, 30, - 276, 30, - 277, 30, - 278, 30, - 62, 30, - 60, 30, - 279, 30, - 280, 30, - 281, 30, - 43, 30, - 45, 30, - 42, 30, - 47, 30, - 94, 30, - -2, 65, --1, 77, - 91, 94, - 46, 94, - -2, 89, --1, 132, - 123, 56, - -2, 78, --1, 138, - 123, 56, - -2, 63, --1, 155, - 275, 30, - 276, 30, - 277, 30, - 278, 30, - 62, 30, - 60, 30, - 279, 30, - 280, 30, - 281, 30, - 43, 30, - 45, 30, - 42, 30, - 47, 30, - 94, 30, - -2, 67, - }; -# define YYNPROD 100 -# define YYLAST 311 -int luaY_act[]={ - - 61, 59, 148, 60, 141, 62, 118, 61, 59, 90, - 60, 89, 62, 86, 84, 18, 42, 168, 54, 164, - 55, 61, 59, 156, 60, 54, 62, 55, 61, 59, - 115, 60, 73, 62, 157, 61, 59, 19, 60, 54, - 62, 55, 61, 59, 82, 60, 54, 62, 55, 158, - 159, 129, 63, 54, 91, 55, 111, 25, 121, 63, - 54, 109, 55, 127, 26, 61, 59, 26, 60, 27, - 62, 7, 27, 63, 71, 8, 33, 9, 11, 63, - 63, 12, 6, 80, 67, 18, 13, 63, 68, 7, - 48, 40, 4, 8, 63, 9, 24, 76, 138, 12, - 81, 133, 76, 18, 61, 59, 61, 60, 39, 62, - 20, 62, 146, 130, 117, 132, 69, 63, 123, 48, - 104, 105, 122, 70, 124, 120, 72, 106, 48, 50, - 29, 46, 17, 44, 128, 47, 85, 23, 83, 76, - 51, 28, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 88, 140, 63, 45, 63, 36, - 112, 14, 131, 139, 47, 35, 22, 151, 126, 134, - 125, 78, 137, 47, 153, 74, 38, 37, 75, 142, - 116, 5, 3, 154, 2, 49, 21, 147, 16, 87, - 152, 165, 163, 11, 110, 108, 76, 155, 145, 160, - 77, 79, 41, 171, 135, 107, 162, 173, 161, 136, - 15, 43, 10, 167, 143, 144, 1, 0, 169, 0, - 119, 149, 150, 0, 170, 0, 172, 0, 0, 0, - 0, 0, 0, 65, 66, 53, 56, 57, 58, 64, - 65, 66, 53, 56, 57, 58, 64, 17, 166, 0, - 114, 0, 0, 52, 65, 66, 53, 56, 57, 58, - 64, 65, 66, 53, 56, 57, 58, 64, 65, 66, - 53, 56, 57, 58, 64, 0, 14, 53, 56, 57, - 58, 64, 32, 0, 0, 32, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 30, 31, 18, 30, 31, - 113, 0, 0, 0, 64, 0, 0, 34, 0, 0, - 34 }; -int luaY_pact[]={ - - -1000, -188, -1000, -1000, 51, -1000, -258, 24, -1000, -1000, - 47, -1000, -257, -1000, -1000, 93, -1000, 73, -1000, -1000, - -1000, 89, -1000, 82, -7, -1000, 24, 24, -1000, 73, - -1000, -1000, -1000, -1000, 24, -49, -1000, 24, -1000, 24, - -258, 39, -1000, -1000, 24, -1000, -259, 24, -260, -1000, - -262, -264, -1000, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, -1000, -1000, 86, -21, -15, - -15, 27, -14, -236, -1000, 70, -1000, -1000, 44, -1000, - -267, 24, 84, 70, -1000, -35, -1000, 81, 74, -1000, - -1000, -1000, 23, 23, 23, 23, 23, 23, 64, 64, - -15, -15, -15, 62, -1000, -1000, -1000, -62, -1000, 69, - 71, -1000, -21, 40, -1000, 24, -170, -1000, -1000, 70, - -1000, -1000, -1000, -269, -1000, 24, 24, -1000, 53, -1000, - -271, -1000, 24, 24, -1000, -21, 51, -1000, 24, 24, - -244, -1000, -212, 0, 0, -1000, -271, -1000, 40, -21, - -21, -1000, -1000, -1000, 51, -1000, -1000, -248, -1000, 24, - -1000, 69, -250, -1000, -1000, -1000, -42, -1000, -1000, -1000, - -1000, -1000, -212, -1000 }; -int luaY_pgo[]={ - - 0, 216, 54, 44, 138, 76, 57, 212, 211, 210, - 205, 202, 201, 199, 61, 198, 195, 194, 189, 159, - 188, 186, 185, 184, 182, 92, 37, 181, 130, 32, - 180, 88, 34, 177, 176, 175, 172, 141, 170, 168, - 165, 163, 154, 134, 51, 56 }; -int luaY_r1[]={ - - 0, 1, 1, 1, 23, 23, 24, 21, 21, 22, - 30, 30, 26, 26, 25, 33, 25, 34, 25, 25, - 25, 25, 32, 32, 32, 35, 29, 36, 36, 2, - 31, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 38, 6, 39, 6, 40, 37, 5, 9, - 9, 8, 8, 3, 3, 4, 41, 4, 18, 18, - 42, 42, 43, 10, 10, 15, 15, 44, 44, 13, - 13, 14, 14, 45, 16, 16, 17, 17, 7, 7, - 19, 19, 19, 20, 28, 11, 11, 12, 12, 27 }; -int luaY_r2[]={ - - 0, 0, 4, 4, 4, 2, 7, 3, 7, 11, - 0, 6, 0, 2, 17, 1, 17, 1, 13, 7, - 2, 7, 0, 4, 15, 1, 7, 0, 7, 1, - 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 5, 3, 3, 3, 3, 3, - 3, 5, 1, 11, 1, 11, 1, 9, 5, 3, - 7, 7, 3, 1, 3, 3, 1, 9, 1, 3, - 3, 7, 1, 7, 5, 1, 5, 0, 2, 1, - 5, 3, 7, 7, 1, 5, 3, 7, 3, 7, - 3, 9, 7, 3, 3, 3, 7, 1, 5, 3 }; -int luaY_chk[]={ - - -1000, -1, -23, -24, -25, -27, 270, 259, 263, 265, - -7, -5, 269, 274, -19, -9, -20, -28, 273, -26, - 59, -21, -19, -28, -31, -6, 40, 45, -37, -28, - 271, 272, 258, -5, 283, -40, -19, -33, -34, 61, - 44, -11, 273, -8, 40, -37, 58, 91, 46, -22, - 40, 58, 260, 277, 60, 62, 278, 279, 280, 43, - 45, 42, 47, 94, 281, 275, 276, -6, -31, -31, - -31, 123, -31, -29, -35, -4, -6, -19, -28, -12, - 44, 61, -3, -4, 273, -31, 273, -18, -42, 273, - 273, -2, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -2, -2, 41, -10, -16, -14, - -17, -45, -31, 273, 264, 266, -30, 44, 273, -4, - 41, 93, 41, 44, -29, -38, -39, 125, -43, -44, - 44, -44, 44, 61, -2, -31, -25, -36, 268, -41, - -29, 273, -2, -31, -31, -15, 59, -45, 273, -31, - -31, -29, -2, -26, -3, -6, 267, -32, 261, 262, - -13, -14, -2, -26, 267, -29, -31, -44, 267, 260, - -2, -29, -2, -32 }; -int luaY_def[]={ - - 1, -2, 2, 3, 12, 5, 0, 56, 15, 17, - 0, 20, 0, 99, -2, 56, 90, 59, 93, 4, - 13, 0, -2, 0, 0, 30, 56, 56, 45, -2, - 47, 48, 49, 50, 56, 0, 94, 56, 25, 56, - 0, 97, 95, 58, -2, 62, 0, 56, 0, 6, - 68, 0, 29, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 29, 29, 30, 0, 44, - 51, -2, 0, 0, 10, 19, -2, -2, 0, 21, - 0, 56, 0, 64, 60, 0, 92, 0, 69, 70, - 8, 25, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 52, 54, 31, 0, 72, 77, - 77, 81, 86, 93, 29, 56, 27, 66, 96, 98, - 61, 91, 25, 0, 29, 56, 56, 57, 75, 74, - 78, 85, -2, 56, 25, 29, 12, 26, -2, 56, - 0, 71, 22, 53, 55, 73, 79, 82, 0, 87, - 83, 29, 18, 11, 12, -2, 9, 0, 25, 56, - 76, 77, 0, 28, 14, 23, 0, 80, 16, 29, - 25, 29, 22, 24 }; -typedef struct { char *t_name; int t_val; } luaY_toktype; +#line 433 "y.tab.c" +#define WRONGTOKEN 257 +#define NIL 258 +#define IF 259 +#define THEN 260 +#define ELSE 261 +#define ELSEIF 262 +#define WHILE 263 +#define DO 264 +#define REPEAT 265 +#define UNTIL 266 +#define END 267 +#define RETURN 268 +#define LOCAL 269 +#define FUNCTION 270 +#define DOTS 271 +#define NUMBER 272 +#define STRING 273 +#define NAME 274 +#define AND 275 +#define OR 276 +#define EQ 277 +#define NE 278 +#define LE 279 +#define GE 280 +#define CONC 281 +#define UNARY 282 +#define NOT 283 +#define YYERRCODE 256 +short luaY_lhs[] = { -1, + 0, 24, 24, 24, 28, 22, 22, 23, 31, 31, + 27, 27, 26, 34, 26, 35, 26, 26, 26, 26, + 33, 33, 33, 36, 30, 25, 25, 1, 32, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 38, 5, 39, 5, 40, 37, 4, 8, 8, 7, + 7, 2, 2, 3, 41, 3, 17, 17, 18, 18, + 19, 19, 42, 9, 9, 14, 14, 43, 43, 12, + 12, 13, 13, 44, 15, 15, 16, 16, 6, 6, + 20, 20, 20, 21, 29, 10, 10, 11, 11, +}; +short luaY_len[] = { 2, + 2, 0, 3, 2, 3, 1, 3, 5, 0, 3, + 0, 1, 8, 0, 8, 0, 6, 3, 1, 3, + 0, 2, 7, 0, 3, 0, 3, 0, 1, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 2, 1, 1, 1, 1, 1, 1, 2, + 0, 5, 0, 5, 0, 4, 2, 1, 3, 3, + 1, 0, 1, 1, 0, 4, 0, 1, 1, 3, + 1, 1, 0, 3, 2, 0, 2, 0, 1, 0, + 2, 1, 3, 3, 0, 2, 1, 3, 1, 3, + 1, 4, 3, 1, 1, 1, 3, 0, 2, +}; +short luaY_defred[] = { 2, + 0, 0, 0, 14, 16, 0, 0, 0, 94, 19, + 0, 0, 0, 91, 1, 0, 4, 0, 48, 46, + 47, 0, 0, 0, 49, 29, 95, 0, 0, 44, + 0, 0, 24, 0, 0, 0, 0, 96, 0, 0, + 0, 0, 0, 0, 0, 57, 61, 12, 3, 0, + 0, 0, 0, 0, 0, 28, 28, 28, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 27, 65, 0, 0, 20, 0, + 5, 0, 0, 0, 0, 0, 59, 0, 93, 30, + 24, 51, 53, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, + 0, 82, 28, 0, 0, 0, 0, 97, 72, 71, + 0, 0, 69, 7, 60, 92, 28, 0, 0, 0, + 56, 0, 75, 0, 0, 86, 24, 0, 25, 0, + 0, 24, 0, 0, 0, 0, 0, 0, 83, 0, + 74, 0, 28, 17, 10, 0, 70, 24, 0, 0, + 77, 0, 0, 8, 22, 0, 13, 81, 15, 28, + 24, 28, 0, 23, +}; +short luaY_dgoto[] = { 1, + 91, 34, 35, 25, 26, 11, 46, 12, 107, 39, + 79, 161, 108, 151, 109, 110, 121, 122, 123, 27, + 14, 41, 81, 2, 15, 16, 49, 17, 28, 73, + 115, 37, 160, 32, 33, 74, 30, 128, 129, 31, + 116, 134, 133, 112, +}; +short luaY_sindex[] = { 0, + 0, 332, -38, 0, 0, -38, -239, -223, 0, 0, + -23, 17, 0, 0, 0, 3, 0, 137, 0, 0, + 0, -38, -38, -38, 0, 0, 0, 137, 547, 0, + -25, -38, 0, 3, 45, 0, 212, 0, -22, 0, + 52, 140, -38, -223, -38, 0, 0, 0, 0, -166, + -38, -154, 40, 40, 102, 0, 0, 0, -38, -38, + -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -34, 481, -130, 0, 0, 0, -38, -129, 0, -194, + 0, -123, 45, 0, -17, 103, 0, 753, 0, 0, + 0, 0, 0, -30, -30, -30, -30, -30, -30, 95, + 11, 11, 40, 40, 40, 97, 41, 123, 0, 124, + 212, 0, 0, -38, -59, -38, 45, 0, 0, 0, + 128, 131, 0, 0, 0, 0, 0, -38, -38, -38, + 0, -97, 0, 120, -38, 0, 0, 212, 0, 3, + 0, 0, -194, -183, 118, 118, 212, 97, 0, -97, + 0, 212, 0, 0, 0, -85, 0, 0, -38, -82, + 0, 123, -80, 0, 0, 1105, 0, 0, 0, 0, + 0, 0, -183, 0, +}; +short luaY_rindex[] = { 0, + 0, 191, 69, 0, 0, 173, 0, 0, 0, 0, + 0, 69, 150, 0, 0, 146, 0, -36, 0, 0, + 0, 69, 69, 69, 0, 0, 0, 1, 0, 0, + 0, 69, 0, 47, 461, 436, 0, 0, 197, 130, + 0, 0, 69, 0, -33, 0, 0, 0, 0, 0, + 69, 0, 24, 59, 1181, 0, 0, 0, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + -50, 0, 0, 0, 0, 0, 69, 0, 0, 152, + 0, 0, 311, -21, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 746, 776, 799, 821, 844, 866, 505, + 383, 410, 88, 112, 359, 1174, 0, 74, 0, -40, + -26, 0, 0, 69, -230, 69, 921, 0, 0, 0, + 0, 160, 0, 0, 0, 0, 0, 69, 69, 69, + 0, 77, 0, 78, -9, 0, 0, 939, 0, 289, + 474, 0, 0, -60, 894, 1137, -16, 0, 0, 89, + 0, -10, 0, 0, 0, 0, 0, 0, 69, 0, + 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -60, 0, +}; +short luaY_gindex[] = { 0, + -31, 171, 85, -2, 48, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 75, 8, + 0, 0, 0, 0, 104, 107, -29, 0, 12, -61, + 0, 1260, 50, 0, 0, 0, 213, 0, 0, 0, + 0, 0, -107, 94, +}; +#define YYTABLESIZE 1462 +short luaY_table[] = { 10, + 45, 24, 136, 58, 75, 24, 22, 62, 85, 13, + 22, 68, 66, 18, 67, 40, 69, 87, 78, 42, + 44, 78, 90, 43, 95, 92, 93, 84, 52, 127, + 26, 26, 87, 88, 38, 26, 26, 43, 77, 90, + 58, 45, 45, 45, 45, 45, 11, 45, 88, 79, + 9, 84, 68, 36, 168, 85, 45, 69, 50, 45, + 45, 48, 45, 70, 43, 43, 43, 43, 43, 95, + 43, 55, 55, 51, 85, 153, 119, 158, 159, 120, + 156, 137, 43, 43, 78, 43, 58, 39, 76, 55, + 36, 80, 36, 45, 45, 144, 165, 71, 87, 50, + 50, 50, 50, 50, 70, 50, 154, 87, 84, 172, + 155, 40, 10, 55, 88, 79, 43, 50, 50, 89, + 50, 163, 13, 58, 36, 45, 18, 83, 39, 39, + 39, 39, 39, 70, 39, 114, 68, 66, 171, 67, + 173, 69, 90, 125, 118, 11, 39, 39, 43, 39, + 124, 50, 40, 40, 40, 40, 40, 130, 40, 68, + 66, 117, 67, 141, 69, 131, 132, 135, 142, 6, + 40, 40, 62, 40, 143, 95, 148, 62, 150, 61, + 39, 164, 52, 50, 167, 52, 169, 95, 70, 95, + 26, 55, 67, 89, 50, 95, 98, 82, 78, 3, + 68, 79, 76, 4, 40, 5, 21, 95, 6, 7, + 89, 70, 39, 80, 9, 86, 162, 157, 139, 19, + 95, 140, 174, 19, 47, 149, 0, 51, 0, 0, + 51, 62, 0, 20, 21, 9, 40, 20, 21, 106, + 95, 0, 0, 0, 23, 0, 0, 0, 23, 0, + 65, 0, 0, 68, 66, 98, 67, 0, 69, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 62, 95, 61, 45, 45, 45, 45, 45, 45, + 45, 45, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 0, 55, 0, 43, 43, 43, + 43, 43, 43, 43, 43, 70, 0, 11, 11, 0, + 18, 0, 11, 11, 0, 0, 0, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, + 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, + 0, 0, 0, 0, 0, 0, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 41, 0, + 0, 39, 39, 39, 39, 39, 39, 39, 39, 18, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 37, 0, 0, 40, 40, 40, 40, 40, + 40, 40, 40, 0, 59, 60, 63, 64, 65, 41, + 41, 41, 41, 41, 11, 41, 0, 0, 11, 38, + 11, 0, 0, 11, 11, 11, 0, 41, 41, 11, + 41, 0, 0, 37, 0, 37, 37, 37, 0, 0, + 0, 0, 0, 62, 62, 64, 0, 0, 62, 62, + 0, 37, 37, 0, 37, 0, 0, 0, 0, 0, + 38, 41, 38, 38, 38, 98, 0, 98, 98, 98, + 63, 98, 98, 98, 98, 98, 98, 0, 38, 38, + 98, 38, 0, 66, 0, 37, 64, 29, 29, 64, + 29, 0, 29, 41, 0, 0, 57, 58, 59, 60, + 63, 64, 65, 0, 64, 29, 0, 29, 0, 0, + 0, 63, 38, 0, 42, 0, 0, 37, 0, 0, + 0, 0, 0, 0, 66, 29, 29, 66, 29, 63, + 29, 0, 68, 66, 0, 67, 0, 69, 0, 29, + 0, 0, 66, 29, 38, 29, 0, 0, 0, 0, + 62, 0, 61, 0, 0, 42, 0, 11, 42, 11, + 11, 11, 0, 11, 11, 11, 11, 11, 0, 0, + 0, 0, 11, 42, 42, 0, 42, 29, 0, 18, + 0, 18, 18, 18, 70, 18, 18, 18, 18, 18, + 18, 0, 0, 0, 18, 0, 0, 0, 68, 66, + 3, 67, 0, 69, 4, 0, 5, 42, 0, 6, + 7, 8, 0, 0, 0, 9, 62, 0, 61, 0, + 0, 0, 0, 0, 0, 0, 0, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, + 0, 0, 41, 41, 41, 41, 41, 41, 41, 41, + 70, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 0, 0, 0, 37, 37, 37, 37, + 37, 37, 37, 37, 0, 0, 0, 0, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 0, 0, 0, 38, 38, 38, 38, 38, 38, 38, + 38, 0, 0, 0, 64, 0, 64, 64, 64, 0, + 64, 64, 64, 64, 64, 64, 0, 0, 0, 64, + 29, 29, 29, 29, 29, 29, 29, 0, 0, 0, + 0, 63, 63, 0, 0, 0, 63, 63, 0, 0, + 0, 0, 66, 0, 66, 66, 66, 0, 66, 66, + 66, 66, 66, 66, 113, 31, 0, 66, 29, 29, + 29, 29, 29, 29, 29, 57, 58, 59, 60, 63, + 64, 65, 0, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 34, 0, 0, 42, 42, + 42, 42, 42, 42, 42, 42, 31, 0, 0, 31, + 0, 0, 0, 0, 68, 66, 0, 67, 33, 69, + 0, 0, 0, 0, 31, 31, 56, 31, 0, 0, + 0, 0, 62, 0, 61, 0, 34, 0, 0, 34, + 32, 57, 58, 59, 60, 63, 64, 65, 0, 0, + 0, 0, 0, 0, 34, 34, 0, 34, 31, 33, + 0, 0, 33, 35, 0, 126, 70, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 33, 33, 0, + 33, 32, 0, 0, 32, 36, 0, 0, 34, 0, + 31, 0, 0, 0, 0, 0, 0, 0, 0, 32, + 32, 0, 32, 0, 35, 0, 0, 35, 0, 0, + 0, 33, 0, 52, 0, 0, 0, 0, 0, 0, + 34, 0, 35, 35, 0, 35, 36, 0, 0, 36, + 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, + 99, 0, 0, 33, 36, 36, 0, 36, 0, 0, + 0, 0, 0, 0, 52, 0, 35, 52, 28, 0, + 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, + 0, 0, 52, 0, 0, 0, 0, 0, 36, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, + 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 28, 0, 0, + 0, 0, 0, 0, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 0, 0, 52, 31, + 31, 31, 31, 31, 31, 31, 0, 57, 58, 59, + 60, 63, 64, 65, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 0, 0, 0, 34, + 34, 34, 34, 34, 34, 34, 0, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 0, + 0, 0, 33, 33, 33, 33, 33, 33, 33, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 0, 0, 0, 32, 32, 32, 32, 32, 32, + 32, 0, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 0, 0, 0, 35, 35, 35, + 35, 35, 35, 35, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 54, 0, 0, 36, + 36, 36, 36, 36, 36, 36, 68, 66, 0, 67, + 0, 69, 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 62, 0, 61, 52, 52, 52, + 0, 0, 0, 0, 0, 0, 0, 54, 0, 99, + 54, 99, 99, 99, 0, 99, 99, 99, 99, 99, + 99, 0, 0, 0, 99, 54, 0, 28, 70, 28, + 28, 28, 0, 28, 28, 28, 28, 28, 28, 0, + 0, 0, 28, 94, 0, 94, 94, 94, 94, 94, + 94, 0, 29, 29, 0, 29, 0, 29, 0, 54, + 0, 94, 94, 94, 0, 94, 0, 0, 0, 0, + 29, 0, 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 54, 29, 0, 94, 0, 0, 94, 0, 0, + 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, + 0, 53, 54, 0, 0, 0, 0, 0, 0, 0, + 0, 72, 0, 0, 0, 0, 94, 0, 94, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 0, 0, 0, 0, 0, 0, 0, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, + 0, 0, 0, 138, 0, 0, 0, 0, 0, 57, + 58, 59, 60, 63, 64, 65, 0, 145, 146, 147, + 0, 0, 0, 0, 152, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 0, 0, 0, + 54, 54, 54, 0, 0, 0, 0, 0, 166, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 94, 94, + 94, 94, 94, 94, 94, 29, 29, 29, 29, 29, + 29, 29, +}; +short luaY_check[] = { 2, + 0, 40, 110, 40, 34, 40, 45, 41, 59, 2, + 45, 42, 43, 2, 45, 8, 47, 44, 59, 8, + 44, 44, 44, 0, 46, 57, 58, 44, 46, 91, + 261, 262, 59, 44, 274, 266, 267, 61, 61, 61, + 40, 41, 42, 43, 44, 45, 0, 47, 59, 59, + 274, 44, 42, 6, 162, 44, 40, 47, 0, 59, + 60, 59, 62, 94, 41, 42, 43, 44, 45, 91, + 47, 24, 123, 91, 125, 137, 271, 261, 262, 274, + 142, 113, 59, 60, 125, 62, 123, 0, 44, 123, + 43, 40, 45, 93, 94, 127, 158, 123, 125, 41, + 42, 43, 44, 45, 94, 47, 138, 274, 125, 171, + 140, 0, 115, 123, 125, 125, 93, 59, 60, 274, + 62, 153, 115, 123, 77, 125, 115, 43, 41, 42, + 43, 44, 45, 94, 47, 266, 42, 43, 170, 45, + 172, 47, 41, 41, 274, 0, 59, 60, 125, 62, + 274, 93, 41, 42, 43, 44, 45, 61, 47, 42, + 43, 77, 45, 116, 47, 125, 44, 44, 41, 40, + 59, 60, 0, 62, 44, 46, 274, 60, 59, 62, + 93, 267, 46, 125, 267, 46, 267, 58, 94, 40, + 0, 123, 41, 44, 58, 46, 0, 58, 125, 259, + 41, 125, 125, 263, 93, 265, 267, 58, 268, 269, + 61, 94, 125, 125, 274, 45, 150, 143, 115, 258, + 91, 115, 173, 258, 12, 132, -1, 91, -1, -1, + 91, 59, -1, 272, 273, 274, 125, 272, 273, 274, + 91, -1, -1, -1, 283, -1, -1, -1, 283, -1, + 281, -1, -1, 42, 43, 59, 45, -1, 47, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 60, 123, 62, 274, 275, 276, 277, 278, 279, + 280, 281, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, -1, 123, -1, 274, 275, 276, + 277, 278, 279, 280, 281, 94, -1, 261, 262, -1, + 0, -1, 266, 267, -1, -1, -1, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, -1, + -1, -1, 274, 275, 276, 277, 278, 279, 280, 281, + -1, -1, -1, -1, -1, -1, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 0, -1, + -1, 274, 275, 276, 277, 278, 279, 280, 281, 59, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 0, -1, -1, 274, 275, 276, 277, 278, + 279, 280, 281, -1, 277, 278, 279, 280, 281, 41, + 42, 43, 44, 45, 259, 47, -1, -1, 263, 0, + 265, -1, -1, 268, 269, 270, -1, 59, 60, 274, + 62, -1, -1, 41, -1, 43, 44, 45, -1, -1, + -1, -1, -1, 261, 262, 0, -1, -1, 266, 267, + -1, 59, 60, -1, 62, -1, -1, -1, -1, -1, + 41, 93, 43, 44, 45, 259, -1, 261, 262, 263, + 0, 265, 266, 267, 268, 269, 270, -1, 59, 60, + 274, 62, -1, 0, -1, 93, 41, 42, 43, 44, + 45, -1, 47, 125, -1, -1, 275, 276, 277, 278, + 279, 280, 281, -1, 59, 60, -1, 62, -1, -1, + -1, 41, 93, -1, 0, -1, -1, 125, -1, -1, + -1, -1, -1, -1, 41, 42, 43, 44, 45, 59, + 47, -1, 42, 43, -1, 45, -1, 47, -1, 94, + -1, -1, 59, 60, 125, 62, -1, -1, -1, -1, + 60, -1, 62, -1, -1, 41, -1, 259, 44, 261, + 262, 263, -1, 265, 266, 267, 268, 269, -1, -1, + -1, -1, 274, 59, 60, -1, 62, 94, -1, 259, + -1, 261, 262, 263, 94, 265, 266, 267, 268, 269, + 270, -1, -1, -1, 274, -1, -1, -1, 42, 43, + 259, 45, -1, 47, 263, -1, 265, 93, -1, 268, + 269, 270, -1, -1, -1, 274, 60, -1, 62, -1, + -1, -1, -1, -1, -1, -1, -1, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 125, + -1, -1, 274, 275, 276, 277, 278, 279, 280, 281, + 94, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, -1, -1, -1, 274, 275, 276, 277, + 278, 279, 280, 281, -1, -1, -1, -1, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + -1, -1, -1, 274, 275, 276, 277, 278, 279, 280, + 281, -1, -1, -1, 259, -1, 261, 262, 263, -1, + 265, 266, 267, 268, 269, 270, -1, -1, -1, 274, + 275, 276, 277, 278, 279, 280, 281, -1, -1, -1, + -1, 261, 262, -1, -1, -1, 266, 267, -1, -1, + -1, -1, 259, -1, 261, 262, 263, -1, 265, 266, + 267, 268, 269, 270, 264, 0, -1, 274, 275, 276, + 277, 278, 279, 280, 281, 275, 276, 277, 278, 279, + 280, 281, -1, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 0, -1, -1, 274, 275, + 276, 277, 278, 279, 280, 281, 41, -1, -1, 44, + -1, -1, -1, -1, 42, 43, -1, 45, 0, 47, + -1, -1, -1, -1, 59, 60, 260, 62, -1, -1, + -1, -1, 60, -1, 62, -1, 41, -1, -1, 44, + 0, 275, 276, 277, 278, 279, 280, 281, -1, -1, + -1, -1, -1, -1, 59, 60, -1, 62, 93, 41, + -1, -1, 44, 0, -1, 93, 94, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 59, 60, -1, + 62, 41, -1, -1, 44, 0, -1, -1, 93, -1, + 125, -1, -1, -1, -1, -1, -1, -1, -1, 59, + 60, -1, 62, -1, 41, -1, -1, 44, -1, -1, + -1, 93, -1, 0, -1, -1, -1, -1, -1, -1, + 125, -1, 59, 60, -1, 62, 41, -1, -1, 44, + -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, + 0, -1, -1, 125, 59, 60, -1, 62, -1, -1, + -1, -1, -1, -1, 41, -1, 93, 44, 0, -1, + -1, -1, -1, -1, -1, 125, -1, -1, -1, -1, + -1, -1, 59, -1, -1, -1, -1, -1, 93, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 125, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, + -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, + 125, -1, -1, -1, -1, -1, -1, 59, -1, -1, + -1, -1, -1, -1, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, -1, -1, 125, 274, + 275, 276, 277, 278, 279, 280, -1, 275, 276, 277, + 278, 279, 280, 281, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, -1, -1, -1, 274, + 275, 276, 277, 278, 279, 280, -1, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, -1, + -1, -1, 274, 275, 276, 277, 278, 279, 280, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, -1, -1, -1, 274, 275, 276, 277, 278, 279, + 280, -1, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, -1, -1, -1, 274, 275, 276, + 277, 278, 279, 280, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 0, -1, -1, 274, + 275, 276, 277, 278, 279, 280, 42, 43, -1, 45, + -1, 47, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 60, -1, 62, 274, 275, 276, + -1, -1, -1, -1, -1, -1, -1, 41, -1, 259, + 44, 261, 262, 263, -1, 265, 266, 267, 268, 269, + 270, -1, -1, -1, 274, 59, -1, 259, 94, 261, + 262, 263, -1, 265, 266, 267, 268, 269, 270, -1, + -1, -1, 274, 40, -1, 42, 43, 44, 45, 46, + 47, -1, 42, 43, -1, 45, -1, 47, -1, 93, + -1, 58, 59, 60, -1, 62, -1, -1, -1, -1, + 60, -1, 62, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 125, 3, -1, 91, -1, -1, 94, -1, -1, + -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, + -1, 22, 23, -1, -1, -1, -1, -1, -1, -1, + -1, 32, -1, -1, -1, -1, 123, -1, 125, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 51, -1, -1, -1, -1, -1, -1, -1, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 260, -1, -1, -1, -1, -1, + -1, -1, -1, 114, -1, -1, -1, -1, -1, 275, + 276, 277, 278, 279, 280, 281, -1, 128, 129, 130, + -1, -1, -1, -1, 135, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, -1, -1, -1, + 274, 275, 276, -1, -1, -1, -1, -1, 159, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 275, 276, + 277, 278, 279, 280, 281, 275, 276, 277, 278, 279, + 280, 281, +}; +#define YYFINAL 1 #ifndef YYDEBUG -# define YYDEBUG 0 /* don't allow debugging */ +#define YYDEBUG 0 #endif - +#define YYMAXTOKEN 283 #if YYDEBUG - -luaY_toktype luaY_toks[] = -{ - "WRONGTOKEN", 257, - "NIL", 258, - "IF", 259, - "THEN", 260, - "ELSE", 261, - "ELSEIF", 262, - "WHILE", 263, - "DO", 264, - "REPEAT", 265, - "UNTIL", 266, - "END", 267, - "RETURN", 268, - "LOCAL", 269, - "FUNCTION", 270, - "NUMBER", 271, - "STRING", 272, - "NAME", 273, - "DEBUG", 274, - "AND", 275, - "OR", 276, - "EQ", 277, - "NE", 278, - ">", 62, - "<", 60, - "LE", 279, - "GE", 280, - "CONC", 281, - "+", 43, - "-", 45, - "*", 42, - "/", 47, - "UNARY", 282, - "NOT", 283, - "^", 94, - "-unknown-", -1 /* ends search */ +char *luaY_name[] = { +"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,0,0,0,0,0,0,0,0, +"':'","';'","'<'","'='","'>'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,"'['",0,"']'","'^'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,"'{'",0,"'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"WRONGTOKEN","NIL","IF","THEN","ELSE", +"ELSEIF","WHILE","DO","REPEAT","UNTIL","END","RETURN","LOCAL","FUNCTION","DOTS", +"NUMBER","STRING","NAME","AND","OR","EQ","NE","LE","GE","CONC","UNARY","NOT", }; - -char * luaY_reds[] = -{ - "-no such reduction-", - "functionlist : /* empty */", - "functionlist : functionlist globalstat", - "functionlist : functionlist function", - "globalstat : stat sc", - "globalstat : setdebug", - "function : FUNCTION funcname body", - "funcname : var", - "funcname : varexp ':' NAME", - "body : '(' parlist ')' block END", - "statlist : /* empty */", - "statlist : statlist stat sc", - "sc : /* empty */", - "sc : ';'", - "stat : IF expr1 THEN PrepJump block PrepJump elsepart END", - "stat : WHILE", - "stat : WHILE expr1 DO PrepJump block PrepJump END", - "stat : REPEAT", - "stat : REPEAT block UNTIL expr1 PrepJump", - "stat : varlist1 '=' exprlist1", - "stat : functioncall", - "stat : LOCAL localdeclist decinit", - "elsepart : /* empty */", - "elsepart : ELSE block", - "elsepart : ELSEIF expr1 THEN PrepJump block PrepJump elsepart", - "block : /* empty */", - "block : statlist ret", - "ret : /* empty */", - "ret : RETURN exprlist sc", - "PrepJump : /* empty */", - "expr1 : expr", - "expr : '(' expr ')'", - "expr : expr1 EQ expr1", - "expr : expr1 '<' expr1", - "expr : expr1 '>' expr1", - "expr : expr1 NE expr1", - "expr : expr1 LE expr1", - "expr : expr1 GE expr1", - "expr : expr1 '+' expr1", - "expr : expr1 '-' expr1", - "expr : expr1 '*' expr1", - "expr : expr1 '/' expr1", - "expr : expr1 '^' expr1", - "expr : expr1 CONC expr1", - "expr : '-' expr1", - "expr : table", - "expr : varexp", - "expr : NUMBER", - "expr : STRING", - "expr : NIL", - "expr : functioncall", - "expr : NOT expr1", - "expr : expr1 AND PrepJump", - "expr : expr1 AND PrepJump expr1", - "expr : expr1 OR PrepJump", - "expr : expr1 OR PrepJump expr1", - "table : /* empty */", - "table : '{' fieldlist '}'", - "functioncall : funcvalue funcParams", - "funcvalue : varexp", - "funcvalue : varexp ':' NAME", - "funcParams : '(' exprlist ')'", - "funcParams : table", - "exprlist : /* empty */", - "exprlist : exprlist1", - "exprlist1 : expr", - "exprlist1 : exprlist1 ','", - "exprlist1 : exprlist1 ',' expr", - "parlist : /* empty */", - "parlist : parlist1", - "parlist1 : NAME", - "parlist1 : parlist1 ',' NAME", - "fieldlist : lfieldlist", - "fieldlist : lfieldlist semicolonpart", - "fieldlist : ffieldlist1 lastcomma", - "semicolonpart : /* empty */", - "semicolonpart : ';' ffieldlist", - "lastcomma : /* empty */", - "lastcomma : ','", - "ffieldlist : /* empty */", - "ffieldlist : ffieldlist1 lastcomma", - "ffieldlist1 : ffield", - "ffieldlist1 : ffieldlist1 ',' ffield", - "ffield : NAME '=' expr1", - "lfieldlist : /* empty */", - "lfieldlist : lfieldlist1 lastcomma", - "lfieldlist1 : expr1", - "lfieldlist1 : lfieldlist1 ',' expr1", - "varlist1 : var", - "varlist1 : varlist1 ',' var", - "var : singlevar", - "var : varexp '[' expr1 ']'", - "var : varexp '.' NAME", - "singlevar : NAME", - "varexp : var", - "localdeclist : NAME", - "localdeclist : localdeclist ',' NAME", - "decinit : /* empty */", - "decinit : '=' exprlist1", - "setdebug : DEBUG", +char *luaY_rule[] = { +"$accept : chunk", +"chunk : chunklist ret", +"chunklist :", +"chunklist : chunklist stat sc", +"chunklist : chunklist function", +"function : FUNCTION funcname body", +"funcname : var", +"funcname : varexp ':' NAME", +"body : '(' parlist ')' block END", +"statlist :", +"statlist : statlist stat sc", +"sc :", +"sc : ';'", +"stat : IF expr1 THEN PrepJump block PrepJump elsepart END", +"$$1 :", +"stat : WHILE $$1 expr1 DO PrepJump block PrepJump END", +"$$2 :", +"stat : REPEAT $$2 block UNTIL expr1 PrepJump", +"stat : varlist1 '=' exprlist1", +"stat : functioncall", +"stat : LOCAL localdeclist decinit", +"elsepart :", +"elsepart : ELSE block", +"elsepart : ELSEIF expr1 THEN PrepJump block PrepJump elsepart", +"$$3 :", +"block : $$3 statlist ret", +"ret :", +"ret : RETURN exprlist sc", +"PrepJump :", +"expr1 : expr", +"expr : '(' expr ')'", +"expr : expr1 EQ expr1", +"expr : expr1 '<' expr1", +"expr : expr1 '>' expr1", +"expr : expr1 NE expr1", +"expr : expr1 LE expr1", +"expr : expr1 GE expr1", +"expr : expr1 '+' expr1", +"expr : expr1 '-' expr1", +"expr : expr1 '*' expr1", +"expr : expr1 '/' expr1", +"expr : expr1 '^' expr1", +"expr : expr1 CONC expr1", +"expr : '-' expr1", +"expr : table", +"expr : varexp", +"expr : NUMBER", +"expr : STRING", +"expr : NIL", +"expr : functioncall", +"expr : NOT expr1", +"$$4 :", +"expr : expr1 AND PrepJump $$4 expr1", +"$$5 :", +"expr : expr1 OR PrepJump $$5 expr1", +"$$6 :", +"table : $$6 '{' fieldlist '}'", +"functioncall : funcvalue funcParams", +"funcvalue : varexp", +"funcvalue : varexp ':' NAME", +"funcParams : '(' exprlist ')'", +"funcParams : table", +"exprlist :", +"exprlist : exprlist1", +"exprlist1 : expr", +"$$7 :", +"exprlist1 : exprlist1 ',' $$7 expr", +"parlist :", +"parlist : parlist1", +"parlist1 : par", +"parlist1 : parlist1 ',' par", +"par : NAME", +"par : DOTS", +"$$8 :", +"fieldlist : lfieldlist $$8 semicolonpart", +"fieldlist : ffieldlist1 lastcomma", +"semicolonpart :", +"semicolonpart : ';' ffieldlist", +"lastcomma :", +"lastcomma : ','", +"ffieldlist :", +"ffieldlist : ffieldlist1 lastcomma", +"ffieldlist1 : ffield", +"ffieldlist1 : ffieldlist1 ',' ffield", +"ffield : NAME '=' expr1", +"lfieldlist :", +"lfieldlist : lfieldlist1 lastcomma", +"lfieldlist1 : expr1", +"lfieldlist1 : lfieldlist1 ',' expr1", +"varlist1 : var", +"varlist1 : varlist1 ',' var", +"var : singlevar", +"var : varexp '[' expr1 ']'", +"var : varexp '.' NAME", +"singlevar : NAME", +"varexp : var", +"localdeclist : NAME", +"localdeclist : localdeclist ',' NAME", +"decinit :", +"decinit : '=' exprlist1", }; -#endif /* YYDEBUG */ -#line 1 "/usr/lang/SC1.0/yaccpar" -/* @(#)yaccpar 1.10 89/04/04 SMI; from S5R3 1.10 */ - -/* -** Skeleton parser driver for yacc output -*/ -/* - @(#)RELEASE SC1.0 C++ 2.1 1Mar1991 -*/ - -/* -** yacc user known macros and defines -*/ -#define YYERROR goto luaY_errlab -#define YYACCEPT return(0) -#define YYABORT return(1) -#define YYBACKUP( newtoken, newvalue )\ -{\ - if ( luaY_char >= 0 || ( luaY_r2[ luaY_tmp ] >> 1 ) != 1 )\ - {\ - luaY_error( "syntax error - cannot backup" );\ - goto luaY_errlab;\ - }\ - luaY_char = newtoken;\ - luaY_state = *luaY_ps;\ - luaY_lval = newvalue;\ - goto luaY_newstate;\ -} -#define YYRECOVERING() (!!luaY_errflag) -#define YYCOPY(to, from, type) \ - (type *) memcpy(to, (char *) from, luaY_newmax * sizeof(type)) -#ifndef YYDEBUG -# define YYDEBUG 1 /* make debugging available */ #endif - - -/* -** extern declarations for C++ - check your own code for correctness -** if you have function redefined error messages here. -*/ - -#ifdef __cplusplus -EXTERN_FUNCTION ( extern int printf, (const char*, DOTDOTDOT) ); -EXTERN_FUNCTION ( extern void *memcpy, (void *, const void *, int) ); +#ifdef YYSTACKSIZE +#undef YYMAXDEPTH +#define YYMAXDEPTH YYSTACKSIZE +#else +#ifdef YYMAXDEPTH +#define YYSTACKSIZE YYMAXDEPTH +#else +#define YYSTACKSIZE 500 +#define YYMAXDEPTH 500 #endif - - -/* -** user known globals -*/ -int luaY_debug; /* set to 1 to get debugging */ - -/* -** driver internal defines -*/ -#define YYFLAG (-1000) - -/* -** static variables used by the parser -*/ -static YYSTYPE luaY__luaY_v[YYMAXDEPTH], *luaY_v = luaY__luaY_v; /* value stack */ -static int luaY__luaY_s[YYMAXDEPTH], *luaY_s = luaY__luaY_s; /* state stack */ - -static YYSTYPE *luaY_pv; /* top of value stack */ -static int *luaY_ps; /* top of state stack */ - -static int luaY_state; /* current state */ -static int luaY_tmp; /* extra var (lasts between blocks) */ - -#if defined(__cplusplus) || defined(__STDC__) || defined(lint) -static int __yaccpar_lint_hack__ = 0; - /* if you change the value from 0 to - something else, make sure you know - what to do with luaY_errlab reference. - This is a hack - to make sure C++ and - lint are happy with the 4.1 yacc code. */ #endif - -int luaY_nerrs; /* number of errors */ - -int luaY_errflag; /* error recovery flag */ -int luaY_char; /* current input token number */ -static unsigned luaY_maxdepth = YYMAXDEPTH; - - -/* -** luaY_parse - return 0 if worked, 1 if syntax error not recovered from -*/ +int luaY_debug; +int luaY_nerrs; +int luaY_errflag; +int luaY_char; +short *luaY_ssp; +YYSTYPE *luaY_vsp; +YYSTYPE luaY_val; +YYSTYPE luaY_lval; +short luaY_ss[YYSTACKSIZE]; +YYSTYPE luaY_vs[YYSTACKSIZE]; +#define luaY_stacksize YYSTACKSIZE +#define YYABORT goto luaY_abort +#define YYREJECT goto luaY_abort +#define YYACCEPT goto luaY_accept +#define YYERROR goto luaY_errlab int luaY_parse() { - register YYSTYPE *luaY_pvt = (YYSTYPE*)0 ; /* top of value stack for -$vars */ - - /* - ** Initialize externals - luaY_parse may be called more than once - */ - luaY_pv = &luaY_v[-1]; - luaY_ps = &luaY_s[-1]; - luaY_state = 0; - luaY_tmp = 0; - luaY_nerrs = 0; - luaY_errflag = 0; - luaY_char = -1; - -#if defined(__cplusplus) || defined(__STDC__) || defined(lint) -/* - Note that the following can never be executed but simply to please - lint and C++ - */ - switch (__yaccpar_lint_hack__) - { - case 1: goto luaY_errlab; - case 2: goto luaY_newstate; - } -#endif - - { - register YYSTYPE *luaY__pv; /* top of value stack */ - register int *luaY__ps; /* top of state stack */ - register int luaY__state; /* current state */ - register int luaY__n; /* internal state number info */ - - goto luaY_stack; - - /* - ** get globals into registers. - ** branch to here only if YYBACKUP was called. - */ - luaY_newstate: - luaY__pv = luaY_pv; - luaY__ps = luaY_ps; - luaY__state = luaY_state; - goto luaY__newstate; - - /* - ** get globals into registers. - ** either we just started, or we just finished a reduction - */ - luaY_stack: - luaY__pv = luaY_pv; - luaY__ps = luaY_ps; - luaY__state = luaY_state; - - /* - ** top of for (;;) loop while no reductions done - */ - luaY__stack: - /* - ** put a state and value onto the stacks - */ + register int luaY_m, luaY_n, luaY_state; #if YYDEBUG - /* - ** if debugging, look up token value in list of value vs. - ** name pairs. 0 and negative (-1) are special values. - ** Note: linear search is used since time is not a real - ** consideration while debugging. - */ - if ( luaY_debug ) - { - register int luaY__i; + register char *luaY_s; + extern char *getenv(); - (void)printf( "State %d, token ", luaY__state ); - if ( luaY_char == 0 ) - (void)printf( "end-of-file\n" ); - else if ( luaY_char < 0 ) - (void)printf( "-none-\n" ); - else - { - for ( luaY__i = 0; luaY_toks[luaY__i].t_val >= 0; - luaY__i++ ) - { - if ( luaY_toks[luaY__i].t_val == luaY_char ) - break; - } - (void)printf( "%s\n", luaY_toks[luaY__i].t_name ); - } - } -#endif /* YYDEBUG */ - if ( ++luaY__ps >= &luaY_s[ luaY_maxdepth ] ) /* room on stack? */ - { - /* - ** reallocate and recover. Note that pointers - ** have to be reset, or bad things will happen - */ - int luaY_ps_index = (luaY__ps - luaY_s); - int luaY_pv_index = (luaY__pv - luaY_v); - int luaY_pvt_index = (luaY_pvt - luaY_v); - int luaY_newmax; + if (luaY_s = getenv("YYDEBUG")) + { + luaY_n = *luaY_s; + if (luaY_n >= '0' && luaY_n <= '9') + luaY_debug = luaY_n - '0'; + } +#endif - luaY_newmax = luaY_maxdepth + YYMAXDEPTH; - if (luaY_maxdepth == YYMAXDEPTH) /* first time growth */ - { - YYSTYPE *newluaY_v = (YYSTYPE*)malloc(luaY_newmax*sizeof(YYSTYPE)); - int *newluaY_s = (int*)malloc(luaY_newmax*sizeof(int)); - if (newluaY_s != 0 && newluaY_v != 0) - { - luaY_s = YYCOPY(newluaY_s, luaY_s, int); - luaY_v = YYCOPY(newluaY_v, luaY_v, YYSTYPE); - } - else - luaY_newmax = 0; /* failed */ - } - else /* not first time */ - { - luaY_v = (YYSTYPE*)realloc((char*)luaY_v, - luaY_newmax * sizeof(YYSTYPE)); - luaY_s = (int*)realloc((char*)luaY_s, - luaY_newmax * sizeof(int)); - if (luaY_s == 0 || luaY_v == 0) - luaY_newmax = 0; /* failed */ - } - if (luaY_newmax <= luaY_maxdepth) /* tables not expanded */ - { - luaY_error( "yacc stack overflow" ); - YYABORT; - } - luaY_maxdepth = luaY_newmax; + luaY_nerrs = 0; + luaY_errflag = 0; + luaY_char = (-1); - luaY__ps = luaY_s + luaY_ps_index; - luaY__pv = luaY_v + luaY_pv_index; - luaY_pvt = luaY_v + luaY_pvt_index; - } - *luaY__ps = luaY__state; - *++luaY__pv = luaY_val; + luaY_ssp = luaY_ss; + luaY_vsp = luaY_vs; + *luaY_ssp = luaY_state = 0; - /* - ** we have a new state - find out what to do - */ - luaY__newstate: - if ( ( luaY__n = luaY_pact[ luaY__state ] ) <= YYFLAG ) - goto luaY_default; /* simple state */ +luaY_loop: + if (luaY_n = luaY_defred[luaY_state]) goto luaY_reduce; + if (luaY_char < 0) + { + if ((luaY_char = luaY_lex()) < 0) luaY_char = 0; #if YYDEBUG - /* - ** if debugging, need to mark whether new token grabbed - */ - luaY_tmp = luaY_char < 0; + if (luaY_debug) + { + luaY_s = 0; + if (luaY_char <= YYMAXTOKEN) luaY_s = luaY_name[luaY_char]; + if (!luaY_s) luaY_s = "illegal-symbol"; + printf("%sdebug: state %d, reading %d (%s)\n", + YYPREFIX, luaY_state, luaY_char, luaY_s); + } #endif - if ( ( luaY_char < 0 ) && ( ( luaY_char = luaY_lex() ) < 0 ) ) - luaY_char = 0; /* reached EOF */ -#if YYDEBUG - if ( luaY_debug && luaY_tmp ) - { - register int luaY__i; - - (void)printf( "Received token " ); - if ( luaY_char == 0 ) - (void)printf( "end-of-file\n" ); - else if ( luaY_char < 0 ) - (void)printf( "-none-\n" ); - else - { - for ( luaY__i = 0; luaY_toks[luaY__i].t_val >= 0; - luaY__i++ ) - { - if ( luaY_toks[luaY__i].t_val == luaY_char ) - break; - } - (void)printf( "%s\n", luaY_toks[luaY__i].t_name ); - } - } -#endif /* YYDEBUG */ - if ( ( ( luaY__n += luaY_char ) < 0 ) || ( luaY__n >= YYLAST ) ) - goto luaY_default; - if ( luaY_chk[ luaY__n = luaY_act[ luaY__n ] ] == luaY_char ) /*valid shift*/ - { - luaY_char = -1; - luaY_val = luaY_lval; - luaY__state = luaY__n; - if ( luaY_errflag > 0 ) - luaY_errflag--; - goto luaY__stack; - } - - luaY_default: - if ( ( luaY__n = luaY_def[ luaY__state ] ) == -2 ) - { + } + if ((luaY_n = luaY_sindex[luaY_state]) && (luaY_n += luaY_char) >= 0 && + luaY_n <= YYTABLESIZE && luaY_check[luaY_n] == luaY_char) + { #if YYDEBUG - luaY_tmp = luaY_char < 0; + if (luaY_debug) + printf("%sdebug: state %d, shifting to state %d\n", + YYPREFIX, luaY_state, luaY_table[luaY_n]); +#endif + if (luaY_ssp >= luaY_ss + luaY_stacksize - 1) + { + goto luaY_overflow; + } + *++luaY_ssp = luaY_state = luaY_table[luaY_n]; + *++luaY_vsp = luaY_lval; + luaY_char = (-1); + if (luaY_errflag > 0) --luaY_errflag; + goto luaY_loop; + } + if ((luaY_n = luaY_rindex[luaY_state]) && (luaY_n += luaY_char) >= 0 && + luaY_n <= YYTABLESIZE && luaY_check[luaY_n] == luaY_char) + { + luaY_n = luaY_table[luaY_n]; + goto luaY_reduce; + } + if (luaY_errflag) goto luaY_inrecovery; +#ifdef lint + goto luaY_newerror; +#endif +luaY_newerror: + luaY_error("syntax error"); +#ifdef lint + goto luaY_errlab; #endif - if ( ( luaY_char < 0 ) && ( ( luaY_char = luaY_lex() ) < 0 ) ) - luaY_char = 0; /* reached EOF */ +luaY_errlab: + ++luaY_nerrs; +luaY_inrecovery: + if (luaY_errflag < 3) + { + luaY_errflag = 3; + for (;;) + { + if ((luaY_n = luaY_sindex[*luaY_ssp]) && (luaY_n += YYERRCODE) >= 0 && + luaY_n <= YYTABLESIZE && luaY_check[luaY_n] == YYERRCODE) + { #if YYDEBUG - if ( luaY_debug && luaY_tmp ) - { - register int luaY__i; - - (void)printf( "Received token " ); - if ( luaY_char == 0 ) - (void)printf( "end-of-file\n" ); - else if ( luaY_char < 0 ) - (void)printf( "-none-\n" ); - else - { - for ( luaY__i = 0; - luaY_toks[luaY__i].t_val >= 0; - luaY__i++ ) - { - if ( luaY_toks[luaY__i].t_val - == luaY_char ) - { - break; - } - } - (void)printf( "%s\n", luaY_toks[luaY__i].t_name ); - } - } -#endif /* YYDEBUG */ - /* - ** look through exception table - */ - { - register int *luaY_xi = luaY_exca; - - while ( ( *luaY_xi != -1 ) || - ( luaY_xi[1] != luaY__state ) ) - { - luaY_xi += 2; - } - while ( ( *(luaY_xi += 2) >= 0 ) && - ( *luaY_xi != luaY_char ) ) - ; - if ( ( luaY__n = luaY_xi[1] ) < 0 ) - YYACCEPT; - } - } - - /* - ** check for syntax error - */ - if ( luaY__n == 0 ) /* have an error */ - { - /* no worry about speed here! */ - switch ( luaY_errflag ) - { - case 0: /* new error */ - luaY_error( "syntax error" ); - goto skip_init; - luaY_errlab: - /* - ** get globals into registers. - ** we have a user generated syntax type error - */ - luaY__pv = luaY_pv; - luaY__ps = luaY_ps; - luaY__state = luaY_state; - luaY_nerrs++; - skip_init: - case 1: - case 2: /* incompletely recovered error */ - /* try again... */ - luaY_errflag = 3; - /* - ** find state where "error" is a legal - ** shift action - */ - while ( luaY__ps >= luaY_s ) - { - luaY__n = luaY_pact[ *luaY__ps ] + YYERRCODE; - if ( luaY__n >= 0 && luaY__n < YYLAST && - luaY_chk[luaY_act[luaY__n]] == YYERRCODE) { - /* - ** simulate shift of "error" - */ - luaY__state = luaY_act[ luaY__n ]; - goto luaY__stack; - } - /* - ** current state has no shift on - ** "error", pop stack - */ + if (luaY_debug) + printf("%sdebug: state %d, error recovery shifting\ + to state %d\n", YYPREFIX, *luaY_ssp, luaY_table[luaY_n]); +#endif + if (luaY_ssp >= luaY_ss + luaY_stacksize - 1) + { + goto luaY_overflow; + } + *++luaY_ssp = luaY_state = luaY_table[luaY_n]; + *++luaY_vsp = luaY_lval; + goto luaY_loop; + } + else + { #if YYDEBUG -# define _POP_ "Error recovery pops state %d, uncovers state %d\n" - if ( luaY_debug ) - (void)printf( _POP_, *luaY__ps, - luaY__ps[-1] ); -# undef _POP_ + if (luaY_debug) + printf("%sdebug: error recovery discarding state %d\n", + YYPREFIX, *luaY_ssp); #endif - luaY__ps--; - luaY__pv--; - } - /* - ** there is no state on stack with "error" as - ** a valid shift. give up. - */ - YYABORT; - case 3: /* no shift yet; eat a token */ + if (luaY_ssp <= luaY_ss) goto luaY_abort; + --luaY_ssp; + --luaY_vsp; + } + } + } + else + { + if (luaY_char == 0) goto luaY_abort; #if YYDEBUG - /* - ** if debugging, look up token in list of - ** pairs. 0 and negative shouldn't occur, - ** but since timing doesn't matter when - ** debugging, it doesn't hurt to leave the - ** tests here. - */ - if ( luaY_debug ) - { - register int luaY__i; - - (void)printf( "Error recovery discards " ); - if ( luaY_char == 0 ) - (void)printf( "token end-of-file\n" ); - else if ( luaY_char < 0 ) - (void)printf( "token -none-\n" ); - else - { - for ( luaY__i = 0; - luaY_toks[luaY__i].t_val >= 0; - luaY__i++ ) - { - if ( luaY_toks[luaY__i].t_val - == luaY_char ) - { - break; - } - } - (void)printf( "token %s\n", - luaY_toks[luaY__i].t_name ); - } - } -#endif /* YYDEBUG */ - if ( luaY_char == 0 ) /* reached EOF. quit */ - YYABORT; - luaY_char = -1; - goto luaY__newstate; - } - }/* end if ( luaY__n == 0 ) */ - /* - ** reduction by production luaY__n - ** put stack tops, etc. so things right after switch - */ + if (luaY_debug) + { + luaY_s = 0; + if (luaY_char <= YYMAXTOKEN) luaY_s = luaY_name[luaY_char]; + if (!luaY_s) luaY_s = "illegal-symbol"; + printf("%sdebug: state %d, error recovery discards token %d (%s)\n", + YYPREFIX, luaY_state, luaY_char, luaY_s); + } +#endif + luaY_char = (-1); + goto luaY_loop; + } +luaY_reduce: #if YYDEBUG - /* - ** if debugging, print the string that is the user's - ** specification of the reduction which is just about - ** to be done. - */ - if ( luaY_debug ) - (void)printf( "Reduce by (%d) \"%s\"\n", - luaY__n, luaY_reds[ luaY__n ] ); + if (luaY_debug) + printf("%sdebug: state %d, reducing by rule %d (%s)\n", + YYPREFIX, luaY_state, luaY_n, luaY_rule[luaY_n]); #endif - luaY_tmp = luaY__n; /* value to switch over */ - luaY_pvt = luaY__pv; /* $vars top of value stack */ - /* - ** Look in goto table for next state - ** Sorry about using luaY__state here as temporary - ** register variable, but why not, if it works... - ** If luaY_r2[ luaY__n ] doesn't have the low order bit - ** set, then there is no action to be done for - ** this reduction. So, no saving & unsaving of - ** registers done. The only difference between the - ** code just after the if and the body of the if is - ** the goto luaY__stack in the body. This way the test - ** can be made before the choice of what to do is needed. - */ - { - /* length of production doubled with extra bit */ - register int luaY__len = luaY_r2[ luaY__n ]; - - if ( !( luaY__len & 01 ) ) - { - luaY__len >>= 1; - luaY_val = ( luaY__pv -= luaY__len )[1]; /* $$ = $1 */ - luaY__state = luaY_pgo[ luaY__n = luaY_r1[ luaY__n ] ] + - *( luaY__ps -= luaY__len ) + 1; - if ( luaY__state >= YYLAST || - luaY_chk[ luaY__state = - luaY_act[ luaY__state ] ] != -luaY__n ) - { - luaY__state = luaY_act[ luaY_pgo[ luaY__n ] ]; - } - goto luaY__stack; - } - luaY__len >>= 1; - luaY_val = ( luaY__pv -= luaY__len )[1]; /* $$ = $1 */ - luaY__state = luaY_pgo[ luaY__n = luaY_r1[ luaY__n ] ] + - *( luaY__ps -= luaY__len ) + 1; - if ( luaY__state >= YYLAST || - luaY_chk[ luaY__state = luaY_act[ luaY__state ] ] != -luaY__n ) - { - luaY__state = luaY_act[ luaY_pgo[ luaY__n ] ]; - } - } - /* save until reenter driver code */ - luaY_state = luaY__state; - luaY_ps = luaY__ps; - luaY_pv = luaY__pv; - } - /* - ** code supplied by user is placed in this switch - */ - switch( luaY_tmp ) - { - -case 6: -# line 469 "lua.stx" + luaY_m = luaY_len[luaY_n]; + luaY_val = luaY_vsp[1-luaY_m]; + switch (luaY_n) + { +case 5: +#line 470 "lua.stx" { code_byte(PUSHFUNCTION); - code_code(luaY_pvt[-0].pFunc); - storesinglevar(luaY_pvt[-1].vLong); - } break; + code_code(luaY_vsp[0].pFunc); + storesinglevar(luaY_vsp[-1].vLong); + } +break; +case 6: +#line 477 "lua.stx" +{ luaY_val.vLong =luaY_vsp[0].vLong; init_func(); } +break; case 7: -# line 476 "lua.stx" -{ luaY_val.vLong =luaY_pvt[-0].vLong; init_func(); } break; -case 8: -# line 478 "lua.stx" +#line 479 "lua.stx" { code_byte(PUSHSTRING); - code_word(luaI_findconstant(luaY_pvt[-0].pTStr)); + code_word(luaI_findconstant(luaY_vsp[0].pTStr)); luaY_val.vLong = 0; /* indexed variable */ init_func(); add_localvar(luaI_createfixedstring("self")); - } break; -case 9: -# line 488 "lua.stx" + } +break; +case 8: +#line 489 "lua.stx" { codereturn(); luaY_val.pFunc = new(TFunc); @@ -1331,7 +1169,7 @@ case 9: luaY_val.pFunc->size = pc; luaY_val.pFunc->code = newvector(pc, Byte); luaY_val.pFunc->fileName = lua_parsedfile; - luaY_val.pFunc->lineDefined = luaY_pvt[-3].vInt; + luaY_val.pFunc->lineDefined = luaY_vsp[-3].vInt; memcpy(luaY_val.pFunc->code, basepc, pc*sizeof(Byte)); if (lua_debug) luaI_closelocalvars(luaY_val.pFunc); @@ -1341,347 +1179,490 @@ case 9: PrintCode(funcCode,funcCode+pc); #endif change2main(); /* change back to main code */ - } break; + } +break; +case 13: +#line 516 "lua.stx" +{ codeIf(luaY_vsp[-4].vLong, luaY_vsp[-2].vLong); } +break; case 14: -# line 515 "lua.stx" -{ codeIf(luaY_pvt[-4].vLong, luaY_pvt[-2].vLong); } break; +#line 518 "lua.stx" +{luaY_val.vLong=pc;} +break; case 15: -# line 517 "lua.stx" -{luaY_val.vLong=pc;} break; -case 16: -# line 518 "lua.stx" +#line 519 "lua.stx" { - basepc[luaY_pvt[-3].vLong] = IFFJMP; - code_word_at(basepc+luaY_pvt[-3].vLong+1, pc - (luaY_pvt[-3].vLong + sizeof(Word)+1)); - basepc[luaY_pvt[-1].vLong] = UPJMP; - code_word_at(basepc+luaY_pvt[-1].vLong+1, pc - (luaY_pvt[-6].vLong)); - } break; + basepc[luaY_vsp[-3].vLong] = IFFJMP; + code_word_at(basepc+luaY_vsp[-3].vLong+1, pc - (luaY_vsp[-3].vLong + sizeof(Word)+1)); + basepc[luaY_vsp[-1].vLong] = UPJMP; + code_word_at(basepc+luaY_vsp[-1].vLong+1, pc - (luaY_vsp[-6].vLong)); + } +break; +case 16: +#line 526 "lua.stx" +{luaY_val.vLong=pc;} +break; case 17: -# line 525 "lua.stx" -{luaY_val.vLong=pc;} break; -case 18: -# line 526 "lua.stx" +#line 527 "lua.stx" { - basepc[luaY_pvt[-0].vLong] = IFFUPJMP; - code_word_at(basepc+luaY_pvt[-0].vLong+1, pc - (luaY_pvt[-4].vLong)); - } break; -case 19: -# line 532 "lua.stx" + basepc[luaY_vsp[0].vLong] = IFFUPJMP; + code_word_at(basepc+luaY_vsp[0].vLong+1, pc - (luaY_vsp[-4].vLong)); + } +break; +case 18: +#line 533 "lua.stx" { { int i; - adjust_mult_assign(nvarbuffer, luaY_pvt[-0].vLong, luaY_pvt[-2].vInt * 2 + nvarbuffer); + adjust_mult_assign(nvarbuffer, luaY_vsp[0].vLong, luaY_vsp[-2].vInt * 2 + nvarbuffer); for (i=nvarbuffer-1; i>=0; i--) lua_codestore (i); - if (luaY_pvt[-2].vInt > 1 || (luaY_pvt[-2].vInt == 1 && varbuffer[0] != 0)) + if (luaY_vsp[-2].vInt > 1 || (luaY_vsp[-2].vInt == 1 && varbuffer[0] != 0)) lua_codeadjust (0); } - } break; -case 21: -# line 544 "lua.stx" -{ nlocalvar += luaY_pvt[-1].vInt; - adjust_mult_assign(luaY_pvt[-1].vInt, luaY_pvt[-0].vInt, 0); - } break; + } +break; +case 20: +#line 545 "lua.stx" +{ nlocalvar += luaY_vsp[-1].vInt; + adjust_mult_assign(luaY_vsp[-1].vInt, luaY_vsp[0].vInt, 0); + } +break; +case 23: +#line 553 "lua.stx" +{ codeIf(luaY_vsp[-3].vLong, luaY_vsp[-1].vLong); } +break; case 24: -# line 552 "lua.stx" -{ codeIf(luaY_pvt[-3].vLong, luaY_pvt[-1].vLong); } break; +#line 556 "lua.stx" +{luaY_val.vInt = nlocalvar;} +break; case 25: -# line 555 "lua.stx" -{luaY_val.vInt = nlocalvar;} break; -case 26: -# line 556 "lua.stx" +#line 557 "lua.stx" { - if (nlocalvar != luaY_pvt[-2].vInt) + if (nlocalvar != luaY_vsp[-2].vInt) { if (lua_debug) - for (; nlocalvar > luaY_pvt[-2].vInt; nlocalvar--) + for (; nlocalvar > luaY_vsp[-2].vInt; nlocalvar--) luaI_unregisterlocalvar(lua_linenumber); else - nlocalvar = luaY_pvt[-2].vInt; + nlocalvar = luaY_vsp[-2].vInt; lua_codeadjust (0); } - } break; -case 28: -# line 571 "lua.stx" + } +break; +case 27: +#line 572 "lua.stx" { - adjust_functioncall(luaY_pvt[-1].vLong, MULT_RET); + adjust_functioncall(luaY_vsp[-1].vLong, MULT_RET); codereturn(); - } break; -case 29: -# line 578 "lua.stx" + } +break; +case 28: +#line 579 "lua.stx" { luaY_val.vLong = pc; code_byte(0); /* open space */ code_word (0); - } break; + } +break; +case 29: +#line 586 "lua.stx" +{ adjust_functioncall(luaY_vsp[0].vLong, 1); } +break; case 30: -# line 584 "lua.stx" -{ adjust_functioncall(luaY_pvt[-0].vLong, 1); } break; +#line 589 "lua.stx" +{ luaY_val.vLong = luaY_vsp[-1].vLong; } +break; case 31: -# line 587 "lua.stx" -{ luaY_val.vLong = luaY_pvt[-1].vLong; } break; +#line 590 "lua.stx" +{ code_byte(EQOP); luaY_val.vLong = 0; } +break; case 32: -# line 588 "lua.stx" -{ code_byte(EQOP); luaY_val.vLong = 0; } break; +#line 591 "lua.stx" +{ code_byte(LTOP); luaY_val.vLong = 0; } +break; case 33: -# line 589 "lua.stx" -{ code_byte(LTOP); luaY_val.vLong = 0; } break; +#line 592 "lua.stx" +{ code_byte(GTOP); luaY_val.vLong = 0; } +break; case 34: -# line 590 "lua.stx" -{ code_byte(GTOP); luaY_val.vLong = 0; } break; +#line 593 "lua.stx" +{ code_byte(EQOP); code_byte(NOTOP); luaY_val.vLong = 0; } +break; case 35: -# line 591 "lua.stx" -{ code_byte(EQOP); code_byte(NOTOP); luaY_val.vLong = 0; } break; +#line 594 "lua.stx" +{ code_byte(LEOP); luaY_val.vLong = 0; } +break; case 36: -# line 592 "lua.stx" -{ code_byte(LEOP); luaY_val.vLong = 0; } break; +#line 595 "lua.stx" +{ code_byte(GEOP); luaY_val.vLong = 0; } +break; case 37: -# line 593 "lua.stx" -{ code_byte(GEOP); luaY_val.vLong = 0; } break; +#line 596 "lua.stx" +{ code_byte(ADDOP); luaY_val.vLong = 0; } +break; case 38: -# line 594 "lua.stx" -{ code_byte(ADDOP); luaY_val.vLong = 0; } break; +#line 597 "lua.stx" +{ code_byte(SUBOP); luaY_val.vLong = 0; } +break; case 39: -# line 595 "lua.stx" -{ code_byte(SUBOP); luaY_val.vLong = 0; } break; +#line 598 "lua.stx" +{ code_byte(MULTOP); luaY_val.vLong = 0; } +break; case 40: -# line 596 "lua.stx" -{ code_byte(MULTOP); luaY_val.vLong = 0; } break; +#line 599 "lua.stx" +{ code_byte(DIVOP); luaY_val.vLong = 0; } +break; case 41: -# line 597 "lua.stx" -{ code_byte(DIVOP); luaY_val.vLong = 0; } break; +#line 600 "lua.stx" +{ code_byte(POWOP); luaY_val.vLong = 0; } +break; case 42: -# line 598 "lua.stx" -{ code_byte(POWOP); luaY_val.vLong = 0; } break; +#line 601 "lua.stx" +{ code_byte(CONCOP); luaY_val.vLong = 0; } +break; case 43: -# line 599 "lua.stx" -{ code_byte(CONCOP); luaY_val.vLong = 0; } break; +#line 602 "lua.stx" +{ code_byte(MINUSOP); luaY_val.vLong = 0;} +break; case 44: -# line 600 "lua.stx" -{ code_byte(MINUSOP); luaY_val.vLong = 0;} break; +#line 603 "lua.stx" +{ luaY_val.vLong = 0; } +break; case 45: -# line 601 "lua.stx" -{ luaY_val.vLong = 0; } break; +#line 604 "lua.stx" +{ luaY_val.vLong = 0;} +break; case 46: -# line 602 "lua.stx" -{ luaY_val.vLong = 0;} break; +#line 605 "lua.stx" +{ code_number(luaY_vsp[0].vFloat); luaY_val.vLong = 0; } +break; case 47: -# line 603 "lua.stx" -{ code_number(luaY_pvt[-0].vFloat); luaY_val.vLong = 0; } break; -case 48: -# line 605 "lua.stx" +#line 607 "lua.stx" { code_byte(PUSHSTRING); - code_word(luaY_pvt[-0].vWord); + code_word(luaY_vsp[0].vWord); luaY_val.vLong = 0; - } break; + } +break; +case 48: +#line 612 "lua.stx" +{code_byte(PUSHNIL); luaY_val.vLong = 0; } +break; case 49: -# line 610 "lua.stx" -{code_byte(PUSHNIL); luaY_val.vLong = 0; } break; +#line 613 "lua.stx" +{ luaY_val.vLong = luaY_vsp[0].vLong; } +break; case 50: -# line 611 "lua.stx" -{ luaY_val.vLong = luaY_pvt[-0].vLong; } break; +#line 614 "lua.stx" +{ code_byte(NOTOP); luaY_val.vLong = 0;} +break; case 51: -# line 612 "lua.stx" -{ code_byte(NOTOP); luaY_val.vLong = 0;} break; +#line 615 "lua.stx" +{code_byte(POP); } +break; case 52: -# line 613 "lua.stx" -{code_byte(POP); } break; -case 53: -# line 614 "lua.stx" +#line 616 "lua.stx" { - basepc[luaY_pvt[-2].vLong] = ONFJMP; - code_word_at(basepc+luaY_pvt[-2].vLong+1, pc - (luaY_pvt[-2].vLong + sizeof(Word)+1)); + basepc[luaY_vsp[-2].vLong] = ONFJMP; + code_word_at(basepc+luaY_vsp[-2].vLong+1, pc - (luaY_vsp[-2].vLong + sizeof(Word)+1)); luaY_val.vLong = 0; - } break; + } +break; +case 53: +#line 621 "lua.stx" +{code_byte(POP); } +break; case 54: -# line 619 "lua.stx" -{code_byte(POP); } break; -case 55: -# line 620 "lua.stx" +#line 622 "lua.stx" { - basepc[luaY_pvt[-2].vLong] = ONTJMP; - code_word_at(basepc+luaY_pvt[-2].vLong+1, pc - (luaY_pvt[-2].vLong + sizeof(Word)+1)); + basepc[luaY_vsp[-2].vLong] = ONTJMP; + code_word_at(basepc+luaY_vsp[-2].vLong+1, pc - (luaY_vsp[-2].vLong + sizeof(Word)+1)); luaY_val.vLong = 0; - } break; -case 56: -# line 628 "lua.stx" + } +break; +case 55: +#line 630 "lua.stx" { code_byte(CREATEARRAY); luaY_val.vLong = pc; code_word(0); - } break; -case 57: -# line 633 "lua.stx" + } +break; +case 56: +#line 635 "lua.stx" { - code_word_at(basepc+luaY_pvt[-3].vLong, luaY_pvt[-1].vInt); - } break; -case 58: -# line 639 "lua.stx" + code_word_at(basepc+luaY_vsp[-3].vLong, luaY_vsp[-1].vInt); + } +break; +case 57: +#line 641 "lua.stx" { code_byte(CALLFUNC); - code_byte(luaY_pvt[-1].vInt+luaY_pvt[-0].vInt); + code_byte(luaY_vsp[-1].vInt+luaY_vsp[0].vInt); luaY_val.vLong = pc; code_byte(0); /* may be modified by other rules */ - } break; + } +break; +case 58: +#line 649 "lua.stx" +{ luaY_val.vInt = 0; } +break; case 59: -# line 647 "lua.stx" -{ luaY_val.vInt = 0; } break; -case 60: -# line 649 "lua.stx" +#line 651 "lua.stx" { code_byte(PUSHSELF); - code_word(luaI_findconstant(luaY_pvt[-0].pTStr)); + code_word(luaI_findconstant(luaY_vsp[0].pTStr)); luaY_val.vInt = 1; - } break; + } +break; +case 60: +#line 659 "lua.stx" +{ luaY_val.vInt = adjust_functioncall(luaY_vsp[-1].vLong, 1); } +break; case 61: -# line 657 "lua.stx" -{ luaY_val.vInt = adjust_functioncall(luaY_pvt[-1].vLong, 1); } break; +#line 660 "lua.stx" +{ luaY_val.vInt = 1; } +break; case 62: -# line 658 "lua.stx" -{ luaY_val.vInt = 1; } break; +#line 663 "lua.stx" +{ luaY_val.vLong = 0; } +break; case 63: -# line 661 "lua.stx" -{ luaY_val.vLong = 0; } break; +#line 664 "lua.stx" +{ luaY_val.vLong = luaY_vsp[0].vLong; } +break; case 64: -# line 662 "lua.stx" -{ luaY_val.vLong = luaY_pvt[-0].vLong; } break; +#line 667 "lua.stx" +{ if (luaY_vsp[0].vLong != 0) luaY_val.vLong = luaY_vsp[0].vLong; else luaY_val.vLong = -1; } +break; case 65: -# line 665 "lua.stx" -{ if (luaY_pvt[-0].vLong != 0) luaY_val.vLong = luaY_pvt[-0].vLong; else luaY_val.vLong = -1; } break; +#line 668 "lua.stx" +{ luaY_val.vLong = adjust_functioncall(luaY_vsp[-1].vLong, 1); } +break; case 66: -# line 666 "lua.stx" -{ luaY_val.vLong = adjust_functioncall(luaY_pvt[-1].vLong, 1); } break; -case 67: -# line 667 "lua.stx" +#line 669 "lua.stx" { - if (luaY_pvt[-0].vLong == 0) luaY_val.vLong = -(luaY_pvt[-1].vLong + 1); /* -length */ + if (luaY_vsp[0].vLong == 0) luaY_val.vLong = -(luaY_vsp[-1].vLong + 1); /* -length */ else { - adjust_functioncall(luaY_pvt[-0].vLong, luaY_pvt[-1].vLong); - luaY_val.vLong = luaY_pvt[-0].vLong; + adjust_functioncall(luaY_vsp[0].vLong, luaY_vsp[-1].vLong); + luaY_val.vLong = luaY_vsp[0].vLong; } - } break; + } +break; +case 67: +#line 679 "lua.stx" +{ luaY_val.vInt = close_parlist(0); } +break; case 68: -# line 677 "lua.stx" -{ lua_codeadjust(0); luaY_val.vInt = lua_linenumber; } break; +#line 680 "lua.stx" +{ luaY_val.vInt = close_parlist(luaY_vsp[0].vInt); } +break; case 69: -# line 678 "lua.stx" -{ lua_codeadjust(0); luaY_val.vInt = lua_linenumber; } break; +#line 683 "lua.stx" +{ luaY_val.vInt = luaY_vsp[0].vInt; } +break; case 70: -# line 681 "lua.stx" -{ add_localvar(luaY_pvt[-0].pTStr); } break; +#line 685 "lua.stx" +{ + if (luaY_vsp[-2].vInt) + lua_error("invalid parameter list"); + luaY_val.vInt = luaY_vsp[0].vInt; + } +break; case 71: -# line 682 "lua.stx" -{ add_localvar(luaY_pvt[-0].pTStr); } break; +#line 692 "lua.stx" +{ add_localvar(luaY_vsp[0].pTStr); luaY_val.vInt = 0; } +break; case 72: -# line 686 "lua.stx" -{ flush_list(luaY_pvt[-0].vInt/FIELDS_PER_FLUSH, luaY_pvt[-0].vInt%FIELDS_PER_FLUSH); } break; +#line 693 "lua.stx" +{ luaY_val.vInt = 1; } +break; case 73: -# line 688 "lua.stx" -{ luaY_val.vInt = luaY_pvt[-2].vInt+luaY_pvt[-0].vInt; } break; +#line 697 "lua.stx" +{ flush_list(luaY_vsp[0].vInt/FIELDS_PER_FLUSH, luaY_vsp[0].vInt%FIELDS_PER_FLUSH); } +break; case 74: -# line 690 "lua.stx" -{ luaY_val.vInt = luaY_pvt[-1].vInt; flush_record(luaY_pvt[-1].vInt%FIELDS_PER_FLUSH); } break; +#line 699 "lua.stx" +{ luaY_val.vInt = luaY_vsp[-2].vInt+luaY_vsp[0].vInt; } +break; case 75: -# line 694 "lua.stx" -{ luaY_val.vInt = 0; } break; +#line 701 "lua.stx" +{ luaY_val.vInt = luaY_vsp[-1].vInt; flush_record(luaY_vsp[-1].vInt%FIELDS_PER_FLUSH); } +break; case 76: -# line 696 "lua.stx" -{ luaY_val.vInt = luaY_pvt[-0].vInt; flush_record(luaY_pvt[-0].vInt%FIELDS_PER_FLUSH); } break; -case 79: -# line 703 "lua.stx" -{ luaY_val.vInt = 0; } break; +#line 705 "lua.stx" +{ luaY_val.vInt = 0; } +break; +case 77: +#line 707 "lua.stx" +{ luaY_val.vInt = luaY_vsp[0].vInt; flush_record(luaY_vsp[0].vInt%FIELDS_PER_FLUSH); } +break; case 80: -# line 704 "lua.stx" -{ luaY_val.vInt = luaY_pvt[-1].vInt; } break; +#line 714 "lua.stx" +{ luaY_val.vInt = 0; } +break; case 81: -# line 707 "lua.stx" -{luaY_val.vInt=1;} break; +#line 715 "lua.stx" +{ luaY_val.vInt = luaY_vsp[-1].vInt; } +break; case 82: -# line 709 "lua.stx" +#line 718 "lua.stx" +{luaY_val.vInt=1;} +break; +case 83: +#line 720 "lua.stx" { - luaY_val.vInt=luaY_pvt[-2].vInt+1; + luaY_val.vInt=luaY_vsp[-2].vInt+1; if (luaY_val.vInt%FIELDS_PER_FLUSH == 0) flush_record(FIELDS_PER_FLUSH); - } break; -case 83: -# line 716 "lua.stx" -{ - push_field(luaI_findconstant(luaY_pvt[-2].pTStr)); - } break; + } +break; case 84: -# line 721 "lua.stx" -{ luaY_val.vInt = 0; } break; +#line 727 "lua.stx" +{ + push_field(luaI_findconstant(luaY_vsp[-2].pTStr)); + } +break; case 85: -# line 722 "lua.stx" -{ luaY_val.vInt = luaY_pvt[-1].vInt; } break; +#line 732 "lua.stx" +{ luaY_val.vInt = 0; } +break; case 86: -# line 725 "lua.stx" -{luaY_val.vInt=1;} break; +#line 733 "lua.stx" +{ luaY_val.vInt = luaY_vsp[-1].vInt; } +break; case 87: -# line 727 "lua.stx" +#line 736 "lua.stx" +{luaY_val.vInt=1;} +break; +case 88: +#line 738 "lua.stx" { - luaY_val.vInt=luaY_pvt[-2].vInt+1; + luaY_val.vInt=luaY_vsp[-2].vInt+1; if (luaY_val.vInt%FIELDS_PER_FLUSH == 0) flush_list(luaY_val.vInt/FIELDS_PER_FLUSH - 1, FIELDS_PER_FLUSH); - } break; -case 88: -# line 735 "lua.stx" + } +break; +case 89: +#line 746 "lua.stx" { nvarbuffer = 0; - add_varbuffer(luaY_pvt[-0].vLong); - luaY_val.vInt = (luaY_pvt[-0].vLong == 0) ? 1 : 0; - } break; -case 89: -# line 741 "lua.stx" -{ - add_varbuffer(luaY_pvt[-0].vLong); - luaY_val.vInt = (luaY_pvt[-0].vLong == 0) ? luaY_pvt[-2].vInt + 1 : luaY_pvt[-2].vInt; - } break; + add_varbuffer(luaY_vsp[0].vLong); + luaY_val.vInt = (luaY_vsp[0].vLong == 0) ? 1 : 0; + } +break; case 90: -# line 747 "lua.stx" -{ luaY_val.vLong = luaY_pvt[-0].vLong; } break; +#line 752 "lua.stx" +{ + add_varbuffer(luaY_vsp[0].vLong); + luaY_val.vInt = (luaY_vsp[0].vLong == 0) ? luaY_vsp[-2].vInt + 1 : luaY_vsp[-2].vInt; + } +break; case 91: -# line 749 "lua.stx" +#line 758 "lua.stx" +{ luaY_val.vLong = luaY_vsp[0].vLong; } +break; +case 92: +#line 760 "lua.stx" { luaY_val.vLong = 0; /* indexed variable */ - } break; -case 92: -# line 753 "lua.stx" + } +break; +case 93: +#line 764 "lua.stx" { code_byte(PUSHSTRING); - code_word(luaI_findconstant(luaY_pvt[-0].pTStr)); + code_word(luaI_findconstant(luaY_vsp[0].pTStr)); luaY_val.vLong = 0; /* indexed variable */ - } break; -case 93: -# line 761 "lua.stx" + } +break; +case 94: +#line 772 "lua.stx" { - int local = lua_localname(luaY_pvt[-0].pTStr); + int local = lua_localname(luaY_vsp[0].pTStr); if (local == -1) /* global var */ - luaY_val.vLong = luaI_findsymbol(luaY_pvt[-0].pTStr)+1; /* return positive value */ + luaY_val.vLong = luaI_findsymbol(luaY_vsp[0].pTStr)+1; /* return positive value */ else luaY_val.vLong = -(local+1); /* return negative value */ - } break; -case 94: -# line 770 "lua.stx" -{ lua_pushvar(luaY_pvt[-0].vLong); } break; + } +break; case 95: -# line 773 "lua.stx" -{store_localvar(luaY_pvt[-0].pTStr, 0); luaY_val.vInt = 1;} break; +#line 781 "lua.stx" +{ lua_pushvar(luaY_vsp[0].vLong); } +break; case 96: -# line 775 "lua.stx" -{ - store_localvar(luaY_pvt[-0].pTStr, luaY_pvt[-2].vInt); - luaY_val.vInt = luaY_pvt[-2].vInt+1; - } break; +#line 784 "lua.stx" +{store_localvar(luaY_vsp[0].pTStr, 0); luaY_val.vInt = 1;} +break; case 97: -# line 781 "lua.stx" -{ luaY_val.vInt = 0; } break; +#line 786 "lua.stx" +{ + store_localvar(luaY_vsp[0].pTStr, luaY_vsp[-2].vInt); + luaY_val.vInt = luaY_vsp[-2].vInt+1; + } +break; case 98: -# line 782 "lua.stx" -{ luaY_val.vInt = luaY_pvt[-0].vLong; } break; +#line 792 "lua.stx" +{ luaY_val.vInt = 0; } +break; case 99: -# line 785 "lua.stx" -{ lua_debug = luaY_pvt[-0].vInt; } break; - } - goto luaY_stack; /* reset registers in driver code */ +#line 793 "lua.stx" +{ luaY_val.vInt = luaY_vsp[0].vLong; } +break; +#line 1613 "y.tab.c" + } + luaY_ssp -= luaY_m; + luaY_state = *luaY_ssp; + luaY_vsp -= luaY_m; + luaY_m = luaY_lhs[luaY_n]; + if (luaY_state == 0 && luaY_m == 0) + { +#if YYDEBUG + if (luaY_debug) + printf("%sdebug: after reduction, shifting from state 0 to\ + state %d\n", YYPREFIX, YYFINAL); +#endif + luaY_state = YYFINAL; + *++luaY_ssp = YYFINAL; + *++luaY_vsp = luaY_val; + if (luaY_char < 0) + { + if ((luaY_char = luaY_lex()) < 0) luaY_char = 0; +#if YYDEBUG + if (luaY_debug) + { + luaY_s = 0; + if (luaY_char <= YYMAXTOKEN) luaY_s = luaY_name[luaY_char]; + if (!luaY_s) luaY_s = "illegal-symbol"; + printf("%sdebug: state %d, reading %d (%s)\n", + YYPREFIX, YYFINAL, luaY_char, luaY_s); + } +#endif + } + if (luaY_char == 0) goto luaY_accept; + goto luaY_loop; + } + if ((luaY_n = luaY_gindex[luaY_m]) && (luaY_n += luaY_state) >= 0 && + luaY_n <= YYTABLESIZE && luaY_check[luaY_n] == luaY_state) + luaY_state = luaY_table[luaY_n]; + else + luaY_state = luaY_dgoto[luaY_m]; +#if YYDEBUG + if (luaY_debug) + printf("%sdebug: after reduction, shifting from state %d \ +to state %d\n", YYPREFIX, *luaY_ssp, luaY_state); +#endif + if (luaY_ssp >= luaY_ss + luaY_stacksize - 1) + { + goto luaY_overflow; + } + *++luaY_ssp = luaY_state; + *++luaY_vsp = luaY_val; + goto luaY_loop; +luaY_overflow: + luaY_error("yacc stack overflow"); +luaY_abort: + return (1); +luaY_accept: + return (0); } diff --git a/src/parser.h b/src/parser.h index d681cd66..7087ef91 100644 --- a/src/parser.h +++ b/src/parser.h @@ -1,5 +1,31 @@ - -typedef union +#define WRONGTOKEN 257 +#define NIL 258 +#define IF 259 +#define THEN 260 +#define ELSE 261 +#define ELSEIF 262 +#define WHILE 263 +#define DO 264 +#define REPEAT 265 +#define UNTIL 266 +#define END 267 +#define RETURN 268 +#define LOCAL 269 +#define FUNCTION 270 +#define DOTS 271 +#define NUMBER 272 +#define STRING 273 +#define NAME 274 +#define AND 275 +#define OR 276 +#define EQ 277 +#define NE 278 +#define LE 279 +#define GE 280 +#define CONC 281 +#define UNARY 282 +#define NOT 283 +typedef union { int vInt; float vFloat; @@ -10,30 +36,3 @@ typedef union TaggedString *pTStr; } YYSTYPE; extern YYSTYPE luaY_lval; -# define WRONGTOKEN 257 -# define NIL 258 -# define IF 259 -# define THEN 260 -# define ELSE 261 -# define ELSEIF 262 -# define WHILE 263 -# define DO 264 -# define REPEAT 265 -# define UNTIL 266 -# define END 267 -# define RETURN 268 -# define LOCAL 269 -# define FUNCTION 270 -# define NUMBER 271 -# define STRING 272 -# define NAME 273 -# define DEBUG 274 -# define AND 275 -# define OR 276 -# define EQ 277 -# define NE 278 -# define LE 279 -# define GE 280 -# define CONC 281 -# define UNARY 282 -# define NOT 283 diff --git a/src/table.c b/src/table.c index 1d694c4e..b2e60a35 100644 --- a/src/table.c +++ b/src/table.c @@ -3,7 +3,7 @@ ** Module to control static tables */ -char *rcs_table="$Id: table.c,v 2.54 1996/05/06 14:29:35 roberto Exp $"; +char *rcs_table="$Id: table.c,v 2.58 1996/11/01 12:47:45 roberto Exp $"; #include "mem.h" #include "opcode.h" @@ -39,6 +39,7 @@ static struct { lua_CFunction func; } int_funcs[] = { {"assert", luaI_assert}, + {"call", luaI_call}, {"dofile", lua_internaldofile}, {"dostring", lua_internaldostring}, {"error", luaI_error}, @@ -59,13 +60,16 @@ static struct { void luaI_initsymbol (void) { int i; + Word n; lua_maxsymbol = BUFFER_BLOCK; lua_table = newvector(lua_maxsymbol, Symbol); for (i=0; i<INTFUNCSIZE; i++) { - Word n = luaI_findsymbolbyname(int_funcs[i].name); + n = luaI_findsymbolbyname(int_funcs[i].name); s_tag(n) = LUA_T_CFUNCTION; s_fvalue(n) = int_funcs[i].func; } + n = luaI_findsymbolbyname("_VERSION_"); + s_tag(n) = LUA_T_STRING; s_tsvalue(n) = lua_createstring(LUA_VERSION); } @@ -213,7 +217,7 @@ void lua_pack (void) unsigned long recovered = 0; if (nentity++ < block) return; recovered = luaI_collectgarbage(); - block = block*2*(1.0 - (float)recovered/nentity); + block = 2*(block-recovered); nentity -= recovered; } @@ -239,12 +243,7 @@ static void lua_nextvar (void) else next = luaI_findsymbolbyname(lua_getstring(o)) + 1; while (next < lua_ntable && s_tag(next) == LUA_T_NIL) next++; - if (next >= lua_ntable) - { - lua_pushnil(); - lua_pushnil(); - } - else + if (next < lua_ntable) { lua_pushstring(lua_table[next].varname->str); luaI_pushobject(&s_object(next)); diff --git a/src/undump.c b/src/undump.c index 744622fc..2e6ee07f 100644 --- a/src/undump.c +++ b/src/undump.c @@ -3,7 +3,7 @@ ** load bytecodes from files */ -char* rcs_undump="$Id: undump.c,v 1.14 1996/03/14 17:31:15 lhf Exp $"; +char* rcs_undump="$Id: undump.c,v 1.21 1996/11/18 11:18:29 lhf Exp $"; #include <stdio.h> #include <string.h> @@ -90,7 +90,7 @@ static void FixCode(Byte* code, Byte* end) /* swap words */ p+=3; break; case PUSHFUNCTION: - p+=5; + p+=5; /* TODO: use sizeof(TFunc*) or old? */ break; case PUSHWORD: case PUSHSELF: @@ -111,7 +111,7 @@ static void FixCode(Byte* code, Byte* end) /* swap words */ p+=3; break; } - case PUSHFLOAT: + case PUSHFLOAT: /* assumes sizeof(float)==4 */ { Byte t; t=p[1]; p[1]=p[4]; p[4]=t; @@ -142,13 +142,11 @@ static void Unthread(Byte* code, int i, int v) { while (i!=0) { - CodeWord c; + Word w; Byte* p=code+i; - get_word(c,p); - i=c.w; - c.w=v; - p[-2]=c.m.c1; - p[-1]=c.m.c2; + memcpy(&w,p,sizeof(w)); + i=w; w=v; + memcpy(p,&w,sizeof(w)); } } @@ -174,9 +172,9 @@ static int LoadSize(FILE* D) return s; } -static char* LoadBlock(int size, FILE* D) +static void* LoadBlock(int size, FILE* D) { - char* b=luaI_malloc(size); + void* b=luaI_malloc(size); fread(b,size,1,D); return b; } @@ -208,13 +206,9 @@ static void LoadFunction(FILE* D) } else /* fix PUSHFUNCTION */ { - CodeCode c; - Byte* p; tf->marked=LoadWord(D); tf->fileName=Main->fileName; - p=Main->code+tf->marked; - c.tf=tf; - *p++=c.m.c1; *p++=c.m.c2; *p++=c.m.c3; *p++=c.m.c4; + memcpy(Main->code+tf->marked,&tf,sizeof(tf)); lastF=lastF->next=tf; } tf->code=LoadBlock(tf->size,D); @@ -256,8 +250,21 @@ static void LoadHeader(FILE* D) /* TODO: error handling */ { Word w,tw=TEST_WORD; float f,tf=TEST_FLOAT; + int version; LoadSignature(D); - getc(D); /* skip version */ + version=getc(D); + if (version>0x23) /* after 2.5 */ + { + int oldsizeofW=getc(D); + int oldsizeofF=getc(D); + int oldsizeofP=getc(D); + if (oldsizeofW!=2) + lua_error("cannot load binary file created on machine with sizeof(Word)!=2"); + if (oldsizeofF!=4) + lua_error("cannot load binary file created on machine with sizeof(float)!=4. not an IEEE machine?"); + if (oldsizeofP!=sizeof(TFunc*)) /* TODO: pack */ + lua_error("cannot load binary file: different pointer sizes"); + } fread(&w,sizeof(w),1,D); /* test word */ if (w!=tw) { diff --git a/src/undump.h b/src/undump.h index 109634ae..8d757e36 100644 --- a/src/undump.h +++ b/src/undump.h @@ -1,7 +1,7 @@ /* ** undump.h ** definitions for lua decompiler -** $Id: undump.h,v 1.2 1996/03/11 21:59:41 lhf Exp $ +** $Id: undump.h,v 1.3 1996/11/14 11:44:34 lhf Exp $ */ #include "func.h" @@ -15,7 +15,7 @@ #define ID_VAR 'V' #define ID_STR 'S' #define SIGNATURE "Lua" -#define VERSION 0x23 /* 2.3 */ +#define VERSION 0x25 /* 2.5 */ #define TEST_WORD 0x1234 /* a word for testing byte ordering */ #define TEST_FLOAT 0.123456789e-23 /* a float for testing representation */ |