minor reorg. in Makefile

FossilOrigin-Name: 44e74af0f1e7bafb5a7eb27c6192fb9a8a24d52acbb934f6709dff7c7e2ca26f
This commit is contained in:
crc 2020-10-16 17:31:09 +00:00
parent 37a6739d80
commit 566203211b
2 changed files with 167 additions and 139 deletions

View file

@ -17,6 +17,10 @@ optional: build bin/retro-repl
toolchain: dirs bin/retro-embedimage bin/retro-extend bin/retro-muri bin/retro-unu
image: vm/nga-c/image.c
repl: bin/retro-repl
dirs:
mkdir -p bin
cp tools/retro-document.sh bin/retro-document
@ -24,6 +28,10 @@ dirs:
clean:
rm -f bin/*
# installation targets
install: build install-data install-docs install-examples install-manpages
install -m 755 -d -- $(DESTDIR)$(PREFIX)/bin
install -c -m 755 bin/retro-embedimage $(DESTDIR)$(PREFIX)/bin/retro-embedimage
@ -77,24 +85,9 @@ install-manpages:
install -c -m 644 man/retro-tags.1 $(MANDIR)/retro-tags.1
install -c -m 644 man/retro-locate.1 $(MANDIR)/retro-locate.1
test: bin/retro
./bin/retro tests/test-core.forth
# Targets for development/interactive usage
glossary: doc/Glossary.txt doc/Glossary.html doc/Glossary-Concise.txt doc/Glossary-Names-and-Stack.txt doc/words.tsv
image: vm/nga-c/image.c
repl: bin/retro-repl
retro-describe: bin/retro-describe
# File targets.
ngaImage: image/rx.muri image/retro.forth bin/retro-muri bin/retro-extend
./bin/retro-muri image/rx.muri
./bin/retro-extend ngaImage image/retro.forth
# toolchain targets
bin/retro-describe: tools/retro-describe.retro doc/words.tsv
cat tools/retro-describe.retro doc/words.tsv >bin/retro-describe
@ -109,9 +102,28 @@ bin/retro-extend: tools/retro-extend.c
bin/retro-muri: tools/retro-muri.c
$(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o $@ tools/retro-muri.c
bin/retro-unu: tools/retro-unu.c
$(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o $@ tools/retro-unu.c
# basic image target
ngaImage: image/rx.muri image/retro.forth bin/retro-muri bin/retro-extend
./bin/retro-muri image/rx.muri
./bin/retro-extend ngaImage image/retro.forth
# minimal system
bin/retro-repl: vm/nga-c/repl.c vm/nga-c/image.c
cd vm/nga-c && $(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o ../../bin/retro-repl repl.c
# retro on unix
bin/retro: ngaImage bin/retro-embedimage bin/retro-extend vm/nga-c/retro-image.c vm/nga-c/retro-unix.c interface/filesystem.retro interface/floatingpoint.retro interface/unix.retro interface/rng.retro interface/sockets.retro interface/scripting.retro interface/retro-unix.retro interface/clock.retro
cp ngaImage rre.image
./bin/retro-extend rre.image interface/scripting.retro interface/filesystem.retro interface/floatingpoint.retro interface/unix.retro interface/rng.retro interface/sockets.retro interface/scripting.retro interface/retro-unix.retro interface/clock.retro
@ -122,8 +134,32 @@ bin/retro: ngaImage bin/retro-embedimage bin/retro-extend vm/nga-c/retro-image.c
rm rre.image
cd vm/nga-c && $(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o ../../bin/retro retro-unix.c $(LIBM)
bin/retro-unu: tools/retro-unu.c
$(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o $@ tools/retro-unu.c
vm/nga-c/image.c: bin/retro-embedimage bin/retro-extend bin/retro-muri image/retro.forth image/rx.muri
./bin/retro-muri image/rx.muri
./bin/retro-extend ngaImage image/retro.forth
./bin/retro-embedimage ngaImage > vm/nga-c/image.c
# optional targets
bin/retro-compiler: bin/retro-extend vm/nga-c/retro-compiler.c vm/nga-c/retro-runtime.c
cp ngaImage runtime.image
./bin/retro-extend runtime.image interface/scripting.retro interface/filesystem.retro interface/floatingpoint.retro interface/unix.retro interface/rng.retro interface/retro-unix.retro interface/clock.retro
cd vm/nga-c && $(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o ../../retro-runtime retro-runtime.c $(LIBM)
cd vm/nga-c && $(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o ../../bin/retro-compiler retro-compiler.c
objcopy --add-section .ngaImage=runtime.image --set-section-flags .ngaImage=noload,readonly bin/retro-compiler
objcopy --add-section .runtime=retro-runtime --set-section-flags .runtime=noload,readonly bin/retro-compiler
rm runtime.image retro-runtime
image-js: bin/retro
./bin/retro example/retro-generate-image-js.retro >vm/nga-js/image.js
# documentation targets
glossary: doc/Glossary.txt doc/Glossary.html doc/Glossary-Concise.txt doc/Glossary-Names-and-Stack.txt doc/words.tsv
sorted: doc/words.tsv
LC_ALL=C sort -o sorted.tsv doc/words.tsv
@ -141,19 +177,9 @@ doc/Glossary-Concise.txt: bin/retro sorted
doc/Glossary-Names-and-Stack.txt: bin/retro sorted
./bin/retro tools/glossary.retro export concise-stack >doc/Glossary-Names-and-Stack.txt
vm/nga-c/image.c: bin/retro-embedimage bin/retro-extend bin/retro-muri image/retro.forth image/rx.muri
./bin/retro-muri image/rx.muri
./bin/retro-extend ngaImage image/retro.forth
./bin/retro-embedimage ngaImage > vm/nga-c/image.c
bin/retro-compiler: bin/retro-extend vm/nga-c/retro-compiler.c vm/nga-c/retro-runtime.c
cp ngaImage runtime.image
./bin/retro-extend runtime.image interface/scripting.retro interface/filesystem.retro interface/floatingpoint.retro interface/unix.retro interface/rng.retro interface/retro-unix.retro interface/clock.retro
cd vm/nga-c && $(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o ../../retro-runtime retro-runtime.c $(LIBM)
cd vm/nga-c && $(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o ../../bin/retro-compiler retro-compiler.c
objcopy --add-section .ngaImage=runtime.image --set-section-flags .ngaImage=noload,readonly bin/retro-compiler
objcopy --add-section .runtime=retro-runtime --set-section-flags .runtime=noload,readonly bin/retro-compiler
rm runtime.image retro-runtime
# other targets
release: clean build glossary
fossil tarball tip R12.tar.gz
@ -167,5 +193,6 @@ release: clean build glossary
signify -S -s /home/crc/keys/$(KEYPAIR).sec -m RETRO12-$(VERSION).tar.gz
signify -V -p security/$(KEYPAIR).pub -m RETRO12-$(VERSION).tar.gz
image-js: bin/retro
./bin/retro example/retro-generate-image-js.retro >vm/nga-js/image.js
test: bin/retro
./bin/retro tests/test-core.forth

View file

@ -2,58 +2,58 @@
#ifndef CELL
#define CELL int32_t
#endif
CELL ngaImageCells = 9299;
CELL ngaImage[] = { 1793,-1,9281,9298,202010,0,10,1,10,2,10,3,10,4,10,5,10,6,10,
CELL ngaImageCells = 9313;
CELL ngaImage[] = { 1793,-1,9295,9312,202101,0,10,1,10,2,10,3,10,4,10,5,10,6,10,
7,10,8,10,9,10,10,11,10,12,10,13,10,14,10,15,10,16,10,17,
10,18,10,19,10,20,10,21,10,22,10,23,10,24,10,25,10,68223234,1,2575,
85000450,1,656912,353,335,268505089,63,62,135205121,63,10,101384453,0,9,10,2049,56,25,459011,74,
85000450,1,656912,355,337,268505089,63,62,135205121,63,10,101384453,0,9,10,2049,56,25,459011,74,
524546,74,302256641,1,10,16974595,0,50529798,10,25,524547,93,50529798,10,17108738,1,251790353,101777669,1,17565186,
84,524545,88,64,167838467,-1,134287105,3,59,659457,3,459023,105,2049,56,25,2049,105,1793,112,
2049,112,117506307,0,105,0,524545,25,110,168820993,0,124,1642241,124,134283523,7,110,1793,105,7,
524545,2049,105,1793,105,16846593,124,139,138,1793,64,16846593,124,110,138,1793,64,7,10,659713,
1,659713,2,659713,3,17108737,3,2,524559,105,2049,105,2049,105,2049,119,168820998,2,733,1025,
167841793,177,5,17826049,0,177,2,15,25,524546,162,134287105,178,93,2305,179,459023,187,134287361,178,
182,659201,177,2049,56,25,84152833,48,286458116,10,459014,202,184618754,45,25,16974851,-1,168886532,1,134284289,
1,211,134284289,0,202,660227,32,0,0,112,114,101,102,105,120,58,32,0,285278479,228,
7,2576,524546,79,1641217,1,167838467,225,2049,241,2049,237,524545,228,197,17826050,227,0,2572,2563,
2049,218,1793,131,459023,131,17760513,144,3,164,8,251727617,3,2,2049,158,16,168820993,-1,124,
2049,197,2049,158,459023,131,285282049,3,2,134287105,124,276,524545,1793,105,16846593,3,0,105,8,
659201,3,524545,25,110,17043201,3,7,2049,110,2049,105,268505092,124,1642241,124,656131,659201,3,524545,
7,110,2049,105,459009,19,110,459009,54,110,459009,15,110,459009,17,110,1793,5,10,524546,
158,134284303,160,1807,1025,0,0,1642241,227,285282049,343,1,459012,338,117509889,177,338,134287105,343,197,
16845825,0,353,335,1793,64,1793,367,17826050,343,247,8,117506305,344,356,64,2116,11340,11700,11400,
13685,13104,12432,12402,9603,9801,11514,11413,11110,12528,11948,10302,13340,9700,13455,12753,10500,10670,12654,13320,
11960,13908,10088,10605,11865,11025,0,2049,197,987393,1,1793,105,524546,443,2049,441,2049,441,17891588,
2,443,8,17045505,-24,-16,17043736,-8,1118488,1793,105,17043202,1,169021201,2049,56,25,33883396,101450758,6404,
459011,433,34668804,2,2049,430,524545,375,433,302056196,375,659969,1,0,9,150,100,117,112,0,
452,11,150,100,114,111,112,0,459,13,150,115,119,97,112,0,467,21,150,99,
97,108,108,0,475,26,150,101,113,63,0,483,28,150,45,101,113,63,0,490,
30,150,108,116,63,0,498,32,150,103,116,63,0,505,34,150,102,101,116,99,
104,0,512,36,150,115,116,111,114,101,0,521,38,150,43,0,530,40,150,45,
0,535,42,150,42,0,540,44,150,47,109,111,100,0,545,46,150,97,110,100,
0,553,48,150,111,114,0,560,50,150,120,111,114,0,566,52,150,115,104,105,
102,116,0,573,329,156,112,117,115,104,0,582,332,156,112,111,112,0,590,326,
156,48,59,0,597,56,144,102,101,116,99,104,45,110,101,120,116,0,603,59,
144,115,116,111,114,101,45,110,101,120,116,0,617,218,144,115,58,116,111,45,
110,117,109,98,101,114,0,631,93,144,115,58,101,113,63,0,646,79,144,115,
58,108,101,110,103,116,104,0,655,64,144,99,104,111,111,115,101,0,667,72,
150,105,102,0,677,70,144,45,105,102,0,683,258,156,112,114,101,102,105,120,
58,40,0,690,124,131,67,111,109,112,105,108,101,114,0,702,3,131,72,101,
97,112,0,714,105,144,44,0,722,119,144,115,44,0,727,125,156,59,0,733,
285,156,91,0,738,301,156,93,0,743,2,131,68,105,99,116,105,111,110,97,
114,121,0,748,157,144,100,58,108,105,110,107,0,762,158,144,100,58,120,116,
0,772,160,144,100,58,99,108,97,115,115,0,780,162,144,100,58,110,97,109,
101,0,791,144,144,99,108,97,115,115,58,119,111,114,100,0,801,156,144,99,
108,97,115,115,58,109,97,99,114,111,0,815,131,144,99,108,97,115,115,58,
100,97,116,97,0,830,164,144,100,58,97,100,100,45,104,101,97,100,101,114,
0,844,259,156,112,114,101,102,105,120,58,35,0,860,265,156,112,114,101,102,
105,120,58,58,0,872,279,156,112,114,101,102,105,120,58,38,0,884,263,156,
112,114,101,102,105,120,58,36,0,896,316,156,114,101,112,101,97,116,0,908,
318,156,97,103,97,105,110,0,918,365,144,105,110,116,101,114,112,114,101,116,
0,927,197,144,100,58,108,111,111,107,117,112,0,940,150,144,99,108,97,115,
115,58,112,114,105,109,105,116,105,118,101,0,952,4,131,86,101,114,115,105,
111,110,0,971,412,144,105,0,982,105,144,100,0,987,406,144,114,0,992,335,
144,101,114,114,58,110,111,116,102,111,117,110,100,0,0,0,0,0,0,0,
1,659713,2,659713,3,1793,166,17108737,3,2,524559,105,2049,105,2049,105,2049,119,168820998,2,
735,1025,167841793,179,5,17826049,0,179,2,15,25,524546,162,134287105,180,93,2305,181,459023,189,
134287361,180,184,659201,179,2049,56,25,84152833,48,286458116,10,459014,204,184618754,45,25,16974851,-1,168886532,
1,134284289,1,213,134284289,0,204,660227,32,0,0,112,114,101,102,105,120,58,32,0,
285278479,230,7,2576,524546,79,1641217,1,167838467,227,2049,243,2049,239,524545,230,199,17826050,229,0,
2572,2563,2049,220,1793,131,459023,131,17760513,144,3,164,8,251727617,3,2,2049,158,16,168820993,
-1,124,2049,199,2049,158,459023,131,285282049,3,2,134287105,124,278,524545,1793,105,16846593,3,0,
105,8,659201,3,524545,25,110,17043201,3,7,2049,110,2049,105,268505092,124,1642241,124,656131,659201,
3,524545,7,110,2049,105,459009,19,110,459009,54,110,459009,15,110,459009,17,110,1793,5,
10,524546,158,134284303,160,1807,1025,0,0,1642241,229,285282049,345,1,459012,340,117509889,179,340,134287105,
345,199,16845825,0,355,337,1793,64,1793,369,17826050,345,249,8,117506305,346,358,64,2116,11340,
11700,11400,13685,13104,12432,12402,9603,9801,11514,11413,11110,12528,11948,10302,13340,9700,13455,12753,10500,10670,
12654,13320,11960,13908,10088,10605,11865,11025,0,2049,199,987393,1,1793,105,524546,445,2049,443,2049,
443,17891588,2,445,8,17045505,-24,-16,17043736,-8,1118488,1793,105,17043202,1,169021201,2049,56,25,33883396,
101450758,6404,459011,435,34668804,2,2049,432,524545,377,435,302056196,377,659969,1,0,9,150,100,117,
112,0,454,11,150,100,114,111,112,0,461,13,150,115,119,97,112,0,469,21,
150,99,97,108,108,0,477,26,150,101,113,63,0,485,28,150,45,101,113,63,
0,492,30,150,108,116,63,0,500,32,150,103,116,63,0,507,34,150,102,101,
116,99,104,0,514,36,150,115,116,111,114,101,0,523,38,150,43,0,532,40,
150,45,0,537,42,150,42,0,542,44,150,47,109,111,100,0,547,46,150,97,
110,100,0,555,48,150,111,114,0,562,50,150,120,111,114,0,568,52,150,115,
104,105,102,116,0,575,331,156,112,117,115,104,0,584,334,156,112,111,112,0,
592,328,156,48,59,0,599,56,144,102,101,116,99,104,45,110,101,120,116,0,
605,59,144,115,116,111,114,101,45,110,101,120,116,0,619,220,144,115,58,116,
111,45,110,117,109,98,101,114,0,633,93,144,115,58,101,113,63,0,648,79,
144,115,58,108,101,110,103,116,104,0,657,64,144,99,104,111,111,115,101,0,
669,72,150,105,102,0,679,70,144,45,105,102,0,685,260,156,112,114,101,102,
105,120,58,40,0,692,124,131,67,111,109,112,105,108,101,114,0,704,3,131,
72,101,97,112,0,716,105,144,44,0,724,119,144,115,44,0,729,125,156,59,
0,735,287,156,91,0,740,303,156,93,0,745,2,131,68,105,99,116,105,111,
110,97,114,121,0,750,157,144,100,58,108,105,110,107,0,764,158,144,100,58,
120,116,0,774,160,144,100,58,99,108,97,115,115,0,782,162,144,100,58,110,
97,109,101,0,793,144,144,99,108,97,115,115,58,119,111,114,100,0,803,156,
144,99,108,97,115,115,58,109,97,99,114,111,0,817,131,144,99,108,97,115,
115,58,100,97,116,97,0,832,164,144,100,58,97,100,100,45,104,101,97,100,
101,114,0,846,261,156,112,114,101,102,105,120,58,35,0,862,267,156,112,114,
101,102,105,120,58,58,0,874,281,156,112,114,101,102,105,120,58,38,0,886,
265,156,112,114,101,102,105,120,58,36,0,898,318,156,114,101,112,101,97,116,
0,910,320,156,97,103,97,105,110,0,920,367,144,105,110,116,101,114,112,114,
101,116,0,929,199,144,100,58,108,111,111,107,117,112,0,942,150,144,99,108,
97,115,115,58,112,114,105,109,105,116,105,118,101,0,954,4,131,86,101,114,
115,105,111,110,0,973,414,144,105,0,984,105,144,100,0,989,408,144,114,0,
994,337,144,101,114,114,58,110,111,116,102,111,117,110,100,0,0,0,0,0,
0,0,0,0,0,0,59,0,114,101,0,0,83,0,97,0,107,0,115,0,
0,0,115,0,0,0,0,0,63,64,91,92,93,94,96,123,124,125,126,0,
72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,0,
@ -79,7 +79,7 @@ CELL ngaImage[] = { 1793,-1,9281,9298,202010,0,10,1,10,2,10,3,10,4,10,5,10,6,10,
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,997,1543,144,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,999,1543,144,
69,79,77,0,1,-3,15,10,1536,1556,144,100,101,112,116,104,0,1,-1,15,
10,1547,1570,144,100,58,108,97,115,116,0,1,2,15,10,1560,1587,144,100,58,
108,97,115,116,46,120,116,0,2049,1570,2049,158,15,10,1574,1609,144,100,58,108,
@ -94,12 +94,12 @@ CELL ngaImage[] = { 1793,-1,9281,9298,202010,0,10,1,10,2,10,3,10,4,10,5,10,6,10,
1774,144,99,111,109,112,105,108,101,58,99,97,108,108,0,1,2049,2049,105,2049,
105,10,1758,1796,144,99,111,109,112,105,108,101,58,114,101,116,0,1,10,2049,
105,10,1781,1815,144,99,111,109,112,105,108,105,110,103,63,0,1,124,15,10,
1801,1831,156,112,114,101,102,105,120,58,96,0,2049,218,2049,105,10,1819,1848,156,
112,114,101,102,105,120,58,92,0,2049,412,10,1836,1863,156,112,114,101,102,105,
120,58,94,0,2049,406,10,1851,1874,144,104,101,114,101,0,1,3,15,10,1866,
1890,156,112,114,101,102,105,120,58,64,0,2049,197,2049,158,15,2049,1815,1793,1906,
1801,1831,156,112,114,101,102,105,120,58,96,0,2049,220,2049,105,10,1819,1848,156,
112,114,101,102,105,120,58,92,0,2049,414,10,1836,1863,156,112,114,101,102,105,
120,58,94,0,2049,408,10,1851,1874,144,104,101,114,101,0,1,3,15,10,1866,
1890,156,112,114,101,102,105,120,58,64,0,2049,199,2049,158,15,2049,1815,1793,1906,
1,3841,2049,105,2049,105,10,1,1899,1793,1912,15,10,1,1910,2049,64,10,1878,1929,
156,112,114,101,102,105,120,58,33,0,2049,197,2049,158,15,2049,1815,1793,1945,1,
156,112,114,101,102,105,120,58,33,0,2049,199,2049,158,15,2049,1815,1793,1945,1,
4097,2049,105,2049,105,10,1,1938,1793,1951,16,10,1,1949,2049,64,10,1917,1968,144,
100,58,99,114,101,97,116,101,0,1,131,1,0,2049,164,2049,1874,2049,1570,2049,
158,16,10,1956,1991,144,118,97,114,45,110,0,2049,1968,2049,105,10,1982,2003,144,
@ -118,7 +118,7 @@ CELL ngaImage[] = { 1793,-1,9281,9298,202010,0,10,1,10,2,10,3,10,4,10,5,10,6,10,
3,10,2218,2250,144,117,110,116,105,108,0,1793,2261,525570,385942534,-1,25,3,1,2252,
7,10,1,2252,8,3,10,2241,2275,144,116,105,109,101,115,0,1793,2287,4,25,
33886721,1,2053,1542,1,2278,7,10,1,2277,8,3,10,2266,2304,156,112,114,101,102,
105,120,58,124,0,2049,197,1793,2312,2049,158,15,10,1,2308,1793,2320,2049,160,15,
105,120,58,124,0,2049,199,1793,2312,2049,158,15,10,1,2308,1793,2320,2049,160,15,
10,1,2316,2049,2122,2049,1815,1793,2335,1,131,2049,2100,2049,1774,10,1,2328,1,21,
2049,64,10,2292,2350,144,84,82,85,69,0,1,-1,10,2342,2362,144,70,65,76,
83,69,0,1,0,10,2353,2373,144,99,97,115,101,0,1793,2378,67502597,11,10,1,
@ -160,7 +160,7 @@ CELL ngaImage[] = { 1793,-1,9281,9298,202010,0,10,1,10,2,10,3,10,4,10,5,10,6,10,
983556,1793,3087,1,21,2049,2100,10,1,3082,2049,2100,4100,10,3065,3105,144,118,58,117,
112,100,97,116,101,0,4,1793,3112,15,4,8,10,1,3108,2049,2110,16,10,3093,
3126,144,99,111,112,121,0,1793,3135,285278725,1,33951492,268767489,1,6,10,1,3128,2049,2275,
771,10,3118,3154,144,83,99,111,112,101,76,105,115,116,0,8794,8905,10,3141,3163,
771,10,3118,3154,144,83,99,111,112,101,76,105,115,116,0,8808,8919,10,3141,3163,
144,123,123,0,2049,1570,2,1,3154,2049,59,16,10,3157,3188,144,45,45,45,114,
101,118,101,97,108,45,45,45,0,2049,1570,1,3154,2049,2890,16,10,3172,3202,144,
125,125,0,1,3154,2049,56,4,15,11,1793,3216,3841,3154,4097,2,10,1,3211,1793,
@ -414,57 +414,58 @@ CELL ngaImage[] = { 1793,-1,9281,9298,202010,0,10,1,10,2,10,3,10,4,10,5,10,6,10,
1,26,2049,7389,2049,7953,2049,8104,10,1,8159,2049,3079,10,8141,8194,144,97,58,105,
110,100,101,120,45,111,102,45,115,116,114,105,110,103,0,1,3,1793,8207,1,
93,2049,7389,2049,7953,2049,8104,10,1,8198,2049,3079,10,8173,8222,144,97,58,109,97,
107,101,0,2049,7553,2049,7992,10,8212,8232,156,123,0,1,285,2049,156,1,1556,2049,
144,1,285,2049,156,10,8227,8250,156,125,0,1,301,2049,156,1,2100,2049,144,1,
1556,2049,144,1,13,2049,150,1,40,2049,150,1,2903,2049,144,1,301,2049,156,1,
8222,2049,144,10,8245,8294,144,98,111,117,110,100,115,63,0,67502597,2049,7530,67502597,13,
10,8283,8308,144,99,111,112,121,0,2049,56,2049,105,10,8300,8323,144,116,111,45,
101,110,100,0,2,2049,7530,17,2049,2890,10,8245,8340,144,97,58,108,101,102,116,
0,2049,8294,1793,8348,771,1,-1,10,1,8344,2049,2653,2049,1874,67502597,2049,105,1793,8369,
1,2890,2049,2100,1,8308,2049,2275,3,10,1,8359,2049,2100,10,8330,8385,144,97,58,
114,105,103,104,116,0,2049,8294,1793,8393,771,1,-1,10,1,8389,2049,2653,2049,1874,
67502597,2049,105,1793,8416,4,2049,8323,67502597,18,4,1,8308,2049,2275,3,10,1,8404,2049,
2100,10,8374,8433,144,97,58,109,105,100,100,108,101,0,1,2042,2049,2100,4,67502597,
2049,8294,1793,8448,771,3,1,-1,10,1,8443,2049,2653,771,2049,2090,4,18,2049,2890,
2049,1874,67502597,2049,105,1793,8483,772,1793,8473,17,2049,2890,10,1,8469,2049,2100,1,8308,
2049,2275,3,10,1,8466,2049,2100,10,8421,8496,131,70,108,97,103,0,0,8488,8508,
144,99,111,109,112,97,114,101,0,67440386,184946434,10,8497,8521,144,108,101,110,103,116,
104,0,659202,10,8511,8531,144,110,101,120,116,0,17043713,1,1,2577,10,8523,8549,144,
110,111,116,45,101,113,117,97,108,0,50529030,2561,0,10,8536,8561,144,108,111,111,
112,0,524549,8531,2049,8508,18157313,8496,8496,16,420610310,1,1,8561,7,10,8421,8584,144,97,
58,101,113,63,0,1048833,-1,8496,2049,8508,151066369,-1,8549,2049,8521,2049,8561,251724547,8496,10,
8575,8609,144,97,58,45,101,113,63,0,2049,8584,2049,2459,10,8599,8632,144,97,58,
98,101,103,105,110,115,45,119,105,116,104,63,0,1,3,1793,8648,2,2049,7530,
1,13,2049,2100,2049,8340,2049,8584,10,1,8636,2049,3079,10,8614,8669,144,97,58,101,
110,100,115,45,119,105,116,104,63,0,1,3,1793,8685,2,2049,7530,1,13,2049,
2100,2049,8385,2049,8584,10,1,8673,2049,3079,10,8653,8706,144,99,117,114,114,101,110,
116,45,108,105,110,101,0,2049,3517,1,1025,18,10,8690,8728,144,99,111,117,110,
116,45,116,111,107,101,110,115,0,1793,8734,1,32,11,10,1,8730,2049,4427,2049,
79,10,8712,8759,144,112,114,111,99,101,115,115,45,116,111,107,101,110,115,0,
1793,8787,1,32,2049,6201,4,1793,8780,2,2049,79,2049,2543,1,365,1,11,2049,64,
10,1,8768,2049,2100,2049,2890,10,1,8761,2049,2275,2049,365,10,8653,8808,144,115,58,
101,118,97,108,117,97,116,101,0,2049,8706,2049,4648,2049,8706,2,2049,8728,2049,8759,
10,8794,8826,131,76,80,0,0,8820,8836,131,73,110,100,101,120,0,0,0,0,
107,101,0,2049,7553,2,2,1,3,1793,8233,2049,7992,10,1,8230,2049,3079,4,2049,
7680,10,8212,8246,156,123,0,1,287,2049,156,1,1556,2049,144,1,287,2049,156,10,
8241,8264,156,125,0,1,303,2049,156,1,2100,2049,144,1,1556,2049,144,1,13,2049,
150,1,40,2049,150,1,2903,2049,144,1,303,2049,156,1,8222,2049,144,10,8259,8308,
144,98,111,117,110,100,115,63,0,67502597,2049,7530,67502597,13,10,8297,8322,144,99,111,
112,121,0,2049,56,2049,105,10,8314,8337,144,116,111,45,101,110,100,0,2,2049,
7530,17,2049,2890,10,8259,8354,144,97,58,108,101,102,116,0,2049,8308,1793,8362,771,
1,-1,10,1,8358,2049,2653,2049,1874,67502597,2049,105,1793,8383,1,2890,2049,2100,1,8322,
2049,2275,3,10,1,8373,2049,2100,10,8344,8399,144,97,58,114,105,103,104,116,0,
2049,8308,1793,8407,771,1,-1,10,1,8403,2049,2653,2049,1874,67502597,2049,105,1793,8430,4,
2049,8337,67502597,18,4,1,8322,2049,2275,3,10,1,8418,2049,2100,10,8388,8447,144,97,
58,109,105,100,100,108,101,0,1,2042,2049,2100,4,67502597,2049,8308,1793,8462,771,3,
1,-1,10,1,8457,2049,2653,771,2049,2090,4,18,2049,2890,2049,1874,67502597,2049,105,1793,
8497,772,1793,8487,17,2049,2890,10,1,8483,2049,2100,1,8322,2049,2275,3,10,1,8480,
2049,2100,10,8435,8510,131,70,108,97,103,0,0,8502,8522,144,99,111,109,112,97,
114,101,0,67440386,184946434,10,8511,8535,144,108,101,110,103,116,104,0,659202,10,8525,8545,
144,110,101,120,116,0,17043713,1,1,2577,10,8537,8563,144,110,111,116,45,101,113,
117,97,108,0,50529030,2561,0,10,8550,8575,144,108,111,111,112,0,524549,8545,2049,8522,
18157313,8510,8510,16,420610310,1,1,8575,7,10,8435,8598,144,97,58,101,113,63,0,1048833,
-1,8510,2049,8522,151066369,-1,8563,2049,8535,2049,8575,251724547,8510,10,8589,8623,144,97,58,45,
101,113,63,0,2049,8598,2049,2459,10,8613,8646,144,97,58,98,101,103,105,110,115,
45,119,105,116,104,63,0,1,3,1793,8662,2,2049,7530,1,13,2049,2100,2049,8354,
2049,8598,10,1,8650,2049,3079,10,8628,8683,144,97,58,101,110,100,115,45,119,105,
116,104,63,0,1,3,1793,8699,2,2049,7530,1,13,2049,2100,2049,8399,2049,8598,10,
1,8687,2049,3079,10,8667,8720,144,99,117,114,114,101,110,116,45,108,105,110,101,
0,2049,3517,1,1025,18,10,8704,8742,144,99,111,117,110,116,45,116,111,107,101,
110,115,0,1793,8748,1,32,11,10,1,8744,2049,4427,2049,79,10,8726,8773,144,112,
114,111,99,101,115,115,45,116,111,107,101,110,115,0,1793,8801,1,32,2049,6201,
4,1793,8794,2,2049,79,2049,2543,1,367,1,11,2049,64,10,1,8782,2049,2100,2049,
2890,10,1,8775,2049,2275,2049,367,10,8667,8822,144,115,58,101,118,97,108,117,97,
116,101,0,2049,8720,2049,4648,2049,8720,2,2049,8742,2049,8773,10,8808,8840,131,76,80,
0,0,8834,8850,131,73,110,100,101,120,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,8827,8876,144,110,101,120,116,0,3841,8826,1,
8836,17,2049,2988,10,8868,8892,144,112,114,101,112,0,1,8826,2049,2988,1,0,3841,
8826,1,8836,17,16,10,8884,8913,144,100,111,110,101,0,1,8826,2049,3003,10,8794,
8923,144,73,0,3841,8826,1,8836,17,15,10,8918,8935,144,74,0,3841,8826,1,8836,
17,2049,2903,15,10,8930,8949,144,75,0,3841,8826,1,8836,17,1,2,18,15,10,
8944,8976,144,105,110,100,101,120,101,100,45,116,105,109,101,115,0,2049,8892,4,
1793,8992,25,33886721,1,2053,1542,2049,8876,1,8981,7,10,1,8981,8,3,2049,8913,10,
8959,9007,156,104,111,111,107,0,2049,3646,108,105,106,117,46,46,46,46,0,1,
9009,2049,412,2049,1874,2049,2890,2049,105,10,8999,9041,144,115,101,116,45,104,111,111,
107,0,2049,2890,16,10,9029,9055,144,117,110,104,111,111,107,0,2049,2890,2,2049,
2890,4,16,10,9045,9079,144,105,111,58,101,110,117,109,101,114,97,116,101,0,
27,10,9063,9093,144,105,111,58,113,117,101,114,121,0,28,10,9081,9108,144,105,
111,58,105,110,118,111,107,101,0,29,10,9095,9125,144,105,111,58,115,99,97,
110,45,102,111,114,0,1,-1,4,2049,9079,1793,9156,2049,8923,2049,9093,772,67502597,11,
1793,9152,1793,9147,3,2049,8923,10,1,9143,2049,2100,10,1,9141,9,10,1,9132,2049,
8976,3,10,9110,9171,144,99,58,112,117,116,0,1793,9173,1,0,2049,9108,10,9162,
9184,144,110,108,0,1,10,2049,9171,10,9178,9195,144,115,112,0,1,32,2049,9171,
10,9189,9207,144,116,97,98,0,1,9,2049,9171,10,9200,9221,144,115,58,112,117,
116,0,1,9171,2049,3870,10,9212,9235,144,110,58,112,117,116,0,2049,6040,2049,9221,
10,9226,9249,144,114,101,115,101,116,0,2049,1556,25,771,1,9249,7,10,9240,9271,
144,100,117,109,112,45,115,116,97,99,107,0,2049,1556,25,134284547,9271,134283782,9235,2049,
9195,10,9257,9289,144,70,82,69,69,0,2049,3517,1,1025,18,2049,1874,18,10,0 };
0,0,0,8841,8890,144,110,101,120,116,0,3841,8840,1,8850,17,2049,2988,10,8882,
8906,144,112,114,101,112,0,1,8840,2049,2988,1,0,3841,8840,1,8850,17,16,10,
8898,8927,144,100,111,110,101,0,1,8840,2049,3003,10,8808,8937,144,73,0,3841,8840,
1,8850,17,15,10,8932,8949,144,74,0,3841,8840,1,8850,17,2049,2903,15,10,8944,
8963,144,75,0,3841,8840,1,8850,17,1,2,18,15,10,8958,8990,144,105,110,100,
101,120,101,100,45,116,105,109,101,115,0,2049,8906,4,1793,9006,25,33886721,1,2053,
1542,2049,8890,1,8995,7,10,1,8995,8,3,2049,8927,10,8973,9021,156,104,111,111,
107,0,2049,3646,108,105,106,117,46,46,46,46,0,1,9023,2049,414,2049,1874,2049,
2890,2049,105,10,9013,9055,144,115,101,116,45,104,111,111,107,0,2049,2890,16,10,
9043,9069,144,117,110,104,111,111,107,0,2049,2890,2,2049,2890,4,16,10,9059,9093,
144,105,111,58,101,110,117,109,101,114,97,116,101,0,27,10,9077,9107,144,105,
111,58,113,117,101,114,121,0,28,10,9095,9122,144,105,111,58,105,110,118,111,
107,101,0,29,10,9109,9139,144,105,111,58,115,99,97,110,45,102,111,114,0,
1,-1,4,2049,9093,1793,9170,2049,8937,2049,9107,772,67502597,11,1793,9166,1793,9161,3,2049,
8937,10,1,9157,2049,2100,10,1,9155,9,10,1,9146,2049,8990,3,10,9124,9185,144,
99,58,112,117,116,0,1793,9187,1,0,2049,9122,10,9176,9198,144,110,108,0,1,
10,2049,9185,10,9192,9209,144,115,112,0,1,32,2049,9185,10,9203,9221,144,116,97,
98,0,1,9,2049,9185,10,9214,9235,144,115,58,112,117,116,0,1,9185,2049,3870,
10,9226,9249,144,110,58,112,117,116,0,2049,6040,2049,9235,10,9240,9263,144,114,101,
115,101,116,0,2049,1556,25,771,1,9263,7,10,9254,9285,144,100,117,109,112,45,
115,116,97,99,107,0,2049,1556,25,134284547,9285,134283782,9249,2049,9209,10,9271,9303,144,70,
82,69,69,0,2049,3517,1,1025,18,2049,1874,18,10,0 };