summaryrefslogtreecommitdiff
path: root/doc/lua.ps
blob: 373b082a6faac863798c04a73df2daa805bb6921 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
%!PS-Adobe-2.0
%%Creator: dvips, version 5.4 (C) 1986-90 Radical Eye Software
%%Title: lua.dvi
%%Pages: 11 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: tex.pro
/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
Resolution VResolution vsize neg mul TR}B /@letter{/vsize 10 N}B /@landscape{
/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{/vsize 15.5531 N
}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{statusdict
/manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0
]N /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0
]N df-tail}B /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N
/FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N
/Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[
}B /E{pop nn dup definefont setfont}B /ch-image{ch-data dup type /stringtype
ne{ctr get /ctr ctr 1 add N}if}B /ch-width{ch-data dup length 5 sub get}B
/ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup length 3
sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data
dup length 1 sub get}B /ctr 0 N /CharBuilder{save 3 1 roll S dup /base get 2
index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff
ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height
true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{
/cc X dup type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S
ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr
ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI
save N @rigin 0 0 moveto}B /eop{clear SI restore showpage userdict /eop-hook
known{eop-hook}if}B /@start{userdict /start-hook known{start-hook}if
/VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1
string dup 0 3 index put cvn put}for}B /p /show load N /RMat[1 0 0 -1 0 0]N
/BDot 8 string N /v{/ruley X /rulex X V}B /V{gsave TR -.1 -.1 TR rulex ruley
scale 1 1 false RMat{BDot}imagemask grestore}B /a{moveto}B /delta 0 N /tail{
dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}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{4 M}B /l{p
-4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t
{p 4 w}B /w{0 rmoveto}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B
/eos{clear SS restore}B end
%%EndProcSet
TeXDict begin 1200 300 300 @start /Fa 8 58 df<00000C00001C00001C00003800003800
00700000700000700000E00000E00001C00001C0000380000380000380000700000700000E0000
0E00000E00001C00001C0000380000380000700000700000700000E00000E00001C00001C00001
C0000380000380000700000700000700000E00000E00001C00001C000038000038000038000070
0000700000E00000E00000C0000016317DA41D>47 D<00380000780003F800FFF800FDF80001F8
0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFFF07FFF
F014207C9F1D>49 D<03FC000FFF803C0FE07007F07C03F8FE01F8FE01FCFE01FCFE01FC7C01FC
3801FC0001FC0001F80003F80003F00007E0000FC0000F80001E00003C0000780000E00C01C00C
03801C0300180600180FFFF81FFFF83FFFF87FFFF0FFFFF0FFFFF016207D9F1D>I<00FF0007FF
C00F03F01E01F83F01F83F01FC3F81FC3F01FC1F01FC0C01F80001F80003F00003E0000FC000FF
0000FF000003E00001F80001FC0000FE0000FE0000FF7C00FF7C00FFFE00FFFE00FFFE00FE7C01
FC7801FC3C03F00FFFE001FF0018207E9F1D>I<0000E00001E00003E00003E00007E0000FE000
1FE0001BE00033E00073E000E3E001C3E00183E00303E00703E00E03E00C03E01803E03803E070
03E0E003E0FFFFFFFFFFFF0007E00007E00007E00007E00007E00007E00007E001FFFF01FFFF18
207E9F1D>I<1000301E00F01FFFE01FFFE01FFFC01FFF001FFE001FF800180000180000180000
18000019FE001FFF801E07E01C03F01801F00001F80001F80001FC0001FC7801FCFC01FCFC01FC
FC01FCFC01F8F801F86003F03003E01C0FC00FFF0003FC0016207D9F1D>I<001FC000FFF001F0
3807C0780F80FC1F00FC1F00FC3F00FC7E00787E00007E0000FE0000FE3FC0FE7FF0FE80F8FF80
7CFF007EFF007EFE007FFE007FFE007FFE007F7E007F7E007F7E007F3E007E3E007E1F007C0F00
F807C1F003FFE000FF0018207E9F1D>I<00FF0007FFC00F83E01F00F03E00F87E007C7E007CFE
007EFE007EFE007EFE007FFE007FFE007FFE007F7E00FF7E00FF3E01FF1F017F0FFE7F03FC7F00
007F00007E00007E1E007E3F00FC3F00FC3F00F83F01F01E03E01C0FC00FFF0003F80018207E9F
1D>57 D E /Fb 1 16 df<03F0000FFC001FFE003FFF007FFF807FFF80FFFFC0FFFFC0FFFFC0FF
FFC0FFFFC0FFFFC0FFFFC0FFFFC07FFF807FFF803FFF001FFE000FFC0003F00012147D9519>15
D E /Fc 21 115 df<00030003000700060006000E000C001C0018001800380030003000700060
00E000C000C001C001800180038003000300070006000E000C000C001C00180018003800300070
0060006000E000C000C00010287E9D15>47 D<07E00FF01FF83C3C781E700E700EE007E007E007
E007E007E007E007E007E007E007E007E007700E700E781E3C3C1FF80FF007E0101A7E9915>I<
008003803F80FF80C3800380038003800380038003800380038003800380038003800380038003
8003800380038003807FFC7FFC0E1A7D9915>I<0FE01FF0387C701EE00EE00F400F4007000700
0F000F000E001E001C0038007000E001C0038007000E001C0038007000FFFFFFFF101A7E9915>
I<07E03FF8783CE01E601E400E001E001E003C007C07F807E007F8003C001E001E000F000F000F
800F800FC01E601E383C1FF807E0101A7E9915>I<00780000F80000B80001B80001B800033800
0338000738000638000E38001E38001C38003C3800383800783800703800F03800FFFFC0FFFFC0
003800003800003800003800003800003800003800121A7F9915>I<7FFC7FFC70007000700070
00700070007000700073E07FF87FFC7C3E781E000F000F000F000F000F400FC01E601C38781FF0
0FC0101A7E9915>I<00F803FC0F041C0018003800700070007000E1F0E7F8EFFCFC1EF00EF00F
E007E007E007600770077007300E380C1C3C0FF003E0101A7E9915>I<FFFFFFFF0007000E001C
003C00380078007000F000E001E001C003C003C0038007800780078007800F000F000F000F000F
000F00101A7E9915>I<07E01FF8381C700EE007E007E007E007700E781E3FFC0FF00FF03E7C78
1E700EE007E007E007E007E007700E700E3C3C1FF807E0101A7E9915>I<07E00FF01C38381C70
0CE00EE00EE007E007E007E007F00F700F783F3FF71FE70F870006000E000E001C001C203870F0
3FE00F80101A7E9915>I<001C0000003E0000003E0000002E0000006700000067000000E78000
00C7800000C3800001C3C0000183C0000381E0000381E0000301E0000700F0000700F0000600F0
000E0078000FFFF8001FFFFC001C003C0018003C0038001E0038001E0030001E0070000F007000
0F00E0000780191C7F9B1C>65 D<003FC001FFF003C0F00700300E00001E00003C000038000078
0000780000F00000F00000F00000F00000F00000F00000F00000F000007800007800003800003C
00001E00000E000807001803C07801FFF0003F80151C7D9B1B>67 D<FFFC00FFFF80F007C0F001
F0F000F8F00078F0003CF0001CF0001EF0001EF0000FF0000FF0000FF0000FF0000FF0000FF000
0FF0000FF0000EF0001EF0001EF0003CF00078F00078F001F0F007E0FFFF80FFFE00181C7C9B1F
>I<003F8001FFF003C0F80700380E00181C00003C0000380000780000780000F00000F00000F0
0000F00000F00000F007F8F007F8F000387800387800383800383C00381C00380E003807003803
C0F801FFF0003F80151C7D9B1C>71 D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0041C7C9B0C>73 D<FFFFFFFFFFFF003C00003C00003C00003C00003C00003C00003C
00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C
00003C00003C00003C00003C00003C00003C00181C7E9B1D>84 D<0FC03FF07FF87038401C001C
001C001C07FC3FFC7C1CE01CE01CE01CF07C7FFC7FDC3F1C0E127E9114>97
D<07C01FF03FF83C3C700C700EFFFEFFFEFFFEE000E000E000700070003C061FFE0FFE07F80F12
7E9113>101 D<00FC03FC07FC07000E000E000E000E000E000E00FFE0FFE00E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E1C809B0D>I<E380E780EF80FC00
F800F000F000E000E000E000E000E000E000E000E000E000E000E00009127D910E>114
D E /Fd 24 122 df<00001FE0000070380000E01C0001C03C0001803C00038038000380000007
000000070000000700000007000000070000000E0000000E000000FFFFE000FFFFE0000E00E000
1E01C0001C01C0001C01C0001C01C0001C0380001C038000380380003803800038070000380700
003807080070070C00700E1800700E1800700E180070063000E0062000E003C000E0000000E000
0001C0000001C0000001C0000071800000F3800000F3000000620000003C0000001E2D82A21C>
12 D<0000FC060007FF0C001F839C003E00DC0078007C00F0007801E0007803C0007807800038
0F8000301F0000301E0000303E0000303E0000607C0000007C0000007C000000F8000000F80000
00F8000000F8000000F8000000F0000000F0000180F0000180F0000300F0000300F0000600F800
060078000C00780018003C0030001E0060000F81C00007FF000001FC00001F2478A224>67
D<00F180038B80070F800E07001E07001C07003C0700380E00780E00780E00780E00F01C00F01C
00F01C20F01C30F03860F0386070786070D8C03198801E0F0014157B9419>97
D<03C03F803F800380038007000700070007000E000E000E000E001C001CF81D8C1E0E3C063C07
3807380F700F700F700F700FE01EE01EE01EE03CE038E038607060E031C01F0010237BA217>I<
007C01C2030307070E0F1C0F3C003800780078007800F000F000F000F000F00170037006301C18
380FC010157B9417>I<0000780007F00007F00000700000700000E00000E00000E00000E00001
C00001C00001C00001C000038000F380038B80070F800E07001E07001C07003C0700380E00780E
00780E00780E00F01C00F01C00F01C20F01C30F03860F0386070786070D8C03198801E0F001523
7BA219>I<00F803840E061C063C063806780CF038FFE0F000F000E000E000E000E000E002E006
600C703830700F800F157A9417>I<00007C0000CE00019E00039E00038C000300000700000700
000700000700000E00000E00000E00000E0001FFF001FFF0001C00001C00001C00001C00001C00
00380000380000380000380000380000700000700000700000700000700000E00000E00000E000
00E00001C00001C00001C00001C000038000738000F30000F300006600003C0000172D82A20F>
I<001F180031B800E0F801C0F001C0700380700780700700E00F00E00F00E00F00E01E01C01E01
C01E01C01E01C01E03800E03800E0780060F80061F0001E700000700000700000E00000E00000E
00701C00F01800F0300060E0003F8000151F7E9417>I<00F0000FE0000FE00000E00000E00001
C00001C00001C00001C000038000038000038000038000070000071E0007638007C1800F81C00F
01C00E01C00E01C01C03801C03801C03801C0380380700380700380E08380E0C700E18701C1870
1C30700C20E00C6060078016237DA219>I<00E000E001E000C000000000000000000000000000
00000000001E00330063806380C380C700C70007000E000E000E001C001C001C40386038C070C0
7080318031001E000C227CA10F>I<0001C00003C00003C0000180000000000000000000000000
000000000000000000000000000000003C00004600008700018700030700030700030700000E00
000E00000E00000E00001C00001C00001C00001C00003800003800003800003800007000007000
00700000700000E00000E00000E00071C000F18000F380006600003C0000122C82A10F>I<00F0
000FE0000FE00000E00000E00001C00001C00001C00001C0000380000380000380000380000700
000701E00706300708700E10F00E20F00E20600E40001D80001E00001FC0001CE0003870003830
003838203838307070607070607070407030C0E01880600F0014237DA217>I<01E01FC01FC001
C001C0038003800380038007000700070007000E000E000E000E001C001C001C001C0038003800
380038007000700071007180E300E300E300620066003C000B237CA20D>I<1E07C07C00331861
860063B033030063E03E0380C3C03C0380C3C03C0380C380380380078078070007007007000700
70070007007007000E00E00E000E00E00E000E00E01C100E00E01C181C01C01C301C01C038301C
01C038601C01C0184038038018C01801800F0026157C9429>I<1E0780003318E00063B0600063
E07000C3C07000C3807000C38070000700E0000700E0000700E0000700E0000E01C0000E01C000
0E0382000E0383001C0386001C0706001C070C001C030800380318001801E00019157C941C>I<
007C0001C6000303000603800E03C01C03C03C03C03803C07803C07803C07803C0F00780F00780
F00780F00F00F00E00701E00701C003038001860000F800012157B9419>I<03C1E00666300C7C
380C781818781C18701C18701C00E03C00E03C00E03C00E03C01C07801C07801C07801C0700380
E003C0E003C1C003C380076700073C000700000700000E00000E00000E00000E00001C00001C00
00FFC000FFC000161F7F9419>I<1E1F0033318063E1C063C3C0C3C3C0C38180C3800007000007
00000700000700000E00000E00000E00000E00001C00001C00001C00001C000038000018000013
157C9415>114 D<007801840306020E061E061E0608070007F007F803FC007C001E000E700EF0
0CF00CE008601030601F800F157D9414>I<006000E000E000E000E001C001C001C001C00380FF
F8FFF8038007000700070007000E000E000E000E001C001C001C101C18383038303860186018C0
0F000D1F7C9E11>I<0F003011807021C07061C0E0C1C0E0C380E0C380E00381C00701C00701C0
0701C00E03800E03800E03840E03860E070C0C070C0E070C0E0B1806131003E1E018157C941B>
I<0F01C01183C021C3E061C1E0C1C0E0C380E0C380E00380C00700C00700C00700C00E01800E01
800E01800E03000E03000E02000E04000E0C0006180001E00014157C9417>I<0F003011807021
C07061C0E0C1C0E0C380E0C380E00381C00701C00701C00701C00E03800E03800E03800E03800E
07000C07000E07000E0F00061E0003EE00000E00000E00001C00301C0078380078300070600060
C0002180001E0000151F7C9418>121 D E /Fe 33 122 df<00003C007E3C00FE3C01FE3C03C0
00038000078000078000078000078000078000078000078000078000FFFE3CFFFE3CFFFE3C0780
3C07803C07803C07803C07803C07803C07803C07803C07803C07803C07803C07803C07803C0780
3C07803C07803C07803C07803C07803C162480A31B>12 D<787878781830306060E0050A7CA20E
>39 D<000F0000001F8000001F8000001B8000003BC0000039C0000079E0000071E0000070E000
00F0F00000F0F00000E0F00001E0780001E0780001C0780003C03C0003C03C0003803C0007801E
0007801E0007001E000F000F000FFFFF001FFFFF801FFFFF801E0007803C0003C03C0003C03800
03C0780001E0780001E0700001E0F00000F0F00000F0E00000F01D237EA221>65
D<FFFF0000FFFFC000FFFFF000F001F800F0007C00F0003E00F0001F00F0000F00F0000780F000
0780F00003C0F00003C0F00003C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F0
0001E0F00001E0F00001E0F00001C0F00003C0F00003C0F00007C0F0000780F0000F80F0001F00
F0003E00F0007C00F001F800FFFFF000FFFFE000FFFF00001B237BA224>68
D<FFFFF8FFFFF8FFFFF8F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000FFFFF0FFFFF0FFFFF0F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000FFFFFCFFFFFCFFFFFC16237BA21E>I<F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237BA20E>73
D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000FFFFE0FFFFE0FFFFE013237BA21B>76
D<FFFE00FFFFC0FFFFE0F003F0F00078F0003CF0003CF0001EF0001EF0001EF0001EF0001EF000
1EF0003CF0003CF00078F003F0FFFFE0FFFFC0FFFE00F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F0000017237BA220>80
D<00FF0003FFE007FFF00F81F01E00703C00003C00007800007800007800007800007800007C00
003E00003F00001FE0000FFC0007FF8001FFC0003FE00003F00000F800007800007C00003C0000
3C00003C00003C00003C00003CC00078E00078F800F07F03E01FFFC00FFF8001FE0016257EA31C
>83 D<FFFFFFF8FFFFFFF8FFFFFFF8000780000007800000078000000780000007800000078000
000780000007800000078000000780000007800000078000000780000007800000078000000780
000007800000078000000780000007800000078000000780000007800000078000000780000007
80000007800000078000000780000007800000078000000780001D237EA222>I<03F0001FFC00
3FFE00381F00200F00000780000780000780000780000F8003FF801FFF803F0780780780F00780
F00780F00780F007807C1F807FFF803FF7801F878011167E9518>97 D<F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0F800F3FE00FFFF00FE
1F80F80780F003C0F003C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F003E0F003C0F0
07C0F80780FC1F00FFFE00F7FC00F1F00013237CA21A>I<01FC0007FF000FFF801F03803C0180
780000780000780000F00000F00000F00000F00000F00000F000007800007800007800003C0040
1F03C00FFFC007FF8001FC0012167E9516>I<0001E00001E00001E00001E00001E00001E00001
E00001E00001E00001E00001E00001E00001E003F1E007FDE00FFFE01F07E03C03E07C01E07801
E0F801E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07801E07803E03C03E03F0FE01FFD
E00FF9E003E1E013237EA21A>I<03F00007FC001FFE003E0F003C0780780380780380F001C0FF
FFC0FFFFC0FFFFC0F00000F00000F000007000007800007800003C00801F07800FFF8007FF0001
F80012167E9516>I<003F00FF01FF03C0038007800780078007800780078007800780FFF8FFF8
FFF807800780078007800780078007800780078007800780078007800780078007800780078007
80102380A20F>I<01F07C07FFFC0FFFFC1F1F001E0F003C07803C07803C07803C07803C07801E
0F001F1F000FFE001FFC0019F0003800003800003C00001FFF001FFFE01FFFF03FFFF87C01F878
007CF0003CF0003CF0003CF8007C7C00F83F03F01FFFE00FFFC001FE0016217F9519>I<F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0F800
F3FE00F7FF00FE1F00FC0F80F80780F80780F00780F00780F00780F00780F00780F00780F00780
F00780F00780F00780F00780F00780F00780F00780F0078011237CA21A>I<F0F0F0F000000000
0000000000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>I<F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00780F00F
00F01E00F03C00F07800F0F000F1E000F3C000F7C000FFC000FFE000FFE000FDF000F8F800F078
00F07C00F03E00F01E00F01F00F00F00F00F80F007C012237CA218>107
D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237D
A20B>I<F0FC03F0F3FF0FFCF7FF9FFEFE0FB83EFC07F01FF803E00FF803E00FF003C00FF003C0
0FF003C00FF003C00FF003C00FF003C00FF003C00FF003C00FF003C00FF003C00FF003C00FF003
C00FF003C00FF003C00FF003C00F20167C9529>I<F0F800F3FE00F7FF00FE1F00FC0F80F80780
F80780F00780F00780F00780F00780F00780F00780F00780F00780F00780F00780F00780F00780
F00780F00780F0078011167C951A>I<00FC0007FF800FFFC01F03E03E01F03C00F07800787000
38F0003CF0003CF0003CF0003CF0003CF0003C7800787800787C00F83E01F01F03E00FFFC007FF
8000FC0016167F9519>I<F0F800F3FE00FFFF00FE1F80F80780F007C0F003C0F003E0F001E0F0
01E0F001E0F001E0F001E0F001E0F003E0F003C0F007C0F80F80FC1F00FFFE00F7FC00F1F000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F0000013207C951A>I<F0E0F3
E0F7E0FF00FE00FC00F800F800F000F000F000F000F000F000F000F000F000F000F000F000F000
F0000B167C9511>114 D<07F01FFC3FFE3C0E7806780078007C003F003FF01FF80FFC01FE001F
000F000F000FC00FF81EFFFE3FFC0FF010167F9513>I<0F000F000F000F000F000F00FFF8FFF8
FFF80F000F000F000F000F000F000F000F000F000F000F000F000F000F000F080F1C07FC07F803
E00E1C7F9B12>I<F00780F00780F00780F00780F00780F00780F00780F00780F00780F00780F0
0780F00780F00780F00780F00780F00780F00780F00F80F83F807FFF807FE7801F878011167C95
1A>I<F000F0F000F07801E07801E07801E03C03C03C03C03C03C01E07801E07800E07000F0F00
0F0F00070E00079E00079E00039C00039C0003DC0001D80001F80001F80014167F9517>I<F007
C01EF00FC01EF00EE01E780EE03C781CE03C781CF03C381CF0383C1C70783C3870783C3878781C
3878701E3838F01E3038F01E7038F00E703CE00E701CE00F601DE007601DC007600DC007400DC0
07C00FC003C00F801F167F9522>I<7800F83C00F03E01E01E03C00F07C007878003CF0001FE00
01FC0000FC0000780000F80000FC0001DE0003CF000787800F03800F03C01E01E03C00F07800F8
F8007C1616809517>I<F000F0F800F07801E07801E03C01E03C03C03E03C01E03801E07800F07
800F0700070F00078F00078E00038E00039C0001DC0001DC0001D80000D80000F8000070000070
0000E00000E00000E00001C00001C0000380007F80007F00007E000014207F9517>I
E /Ff 81 127 df<001FC1F00070270C00C07E1E0180FC3E0380FC3E0700F81C07007800070038
00070038000700380007003800070038000700380007003800FFFFFFE0FFFFFFE0070038000700
380007003800070038000700380007003800070038000700380007003800070038000700380007
00380007003800070038000700380007003800070038007FE1FFC07FE1FFC01F2380A21D>11
D<000FC0000078300000E0080001803C0003807C0007007C0007007C0007003800070000000700
000007000000070000000700000007000000FFFFFC00FFFFFC0007003C0007001C0007001C0007
001C0007001C0007001C0007001C0007001C0007001C0007001C0007001C0007001C0007001C00
07001C0007001C0007001C0007001C007FF1FFC07FF1FFC01A2380A21C>I<000FEC0000701C00
00E07C0001807C0003807C0007003C0007001C0007001C0007001C0007001C0007001C0007001C
0007001C0007001C00FFFFFC00FFFFFC0007001C0007001C0007001C0007001C0007001C000700
1C0007001C0007001C0007001C0007001C0007001C0007001C0007001C0007001C0007001C0007
001C0007001C007FF1FFC07FF1FFC01A2380A21C>I<000FC03F00007031E0C000E00B80200180
3E00F003807E01F007007C01F007007C01F007003C00E007001C000007001C000007001C000007
001C000007001C000007001C0000FFFFFFFFF0FFFFFFFFF007001C00F007001C007007001C0070
07001C007007001C007007001C007007001C007007001C007007001C007007001C007007001C00
7007001C007007001C007007001C007007001C007007001C007007001C00707FF1FFC7FF7FF1FF
C7FF282380A22A>I<07070F0E1C383060C0080976A219>19 D<0E000F8001C000E0007000E000
E07FC080000C097A7E16>24 D<701CF83EFC3FFC3F741D04010401040104010802080210041004
20084010100F7EA219>34 D<0000C00C000000C00C000000C00C000001C01C0000018018000001
801800000180180000038038000003003000000300300000030030000007007000000600600000
060060000006006000000E00E000000C00C000FFFFFFFFE0FFFFFFFFE000180180000018018000
001801800000380380000030030000003003000000300300000030030000FFFFFFFFE0FFFFFFFF
E0006006000000E00E000000C00C000000C00C000000C00C000001C01C00000180180000018018
000001801800000380380000030030000003003000000300300000070070000006006000000600
600000232D7DA22A>I<70F8FCFC7404040404080810102040060F7CA20E>39
D<001000200040008001000300060004000C001800180018003000300030007000600060006000
E000E000E000E000E000E000E000E000E000E000E000E000600060006000700030003000300018
00180018000C00040006000300010000800040002000100C327DA413>I<800040002000100008
000C0006000200030001800180018000C000C000C000E000600060006000700070007000700070
007000700070007000700070007000600060006000E000C000C000C00180018001800300020006
000C00080010002000400080000C327DA413>I<70F8FCFC7404040404080810102040060F7C84
0E>44 D<FFF0FFF00C027F8B11>I<70F8F8F87005057C840E>I<01F800070E000E07001C038038
01C03801C07801E07000E07000E07000E0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F0
00F0F000F0F000F0F000F0F000F0F000F0F000F07000E07000E07000E07801E03801C03801C01C
03800E0700070E0001F80014227EA019>48 D<004001C007C0FFC0F9C001C001C001C001C001C0
01C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001
C001C07FFF7FFF10217CA019>I<03F8000FFE00181F802007C04003C04001E0F801E0FC01F0FC
00F0FC00F07800F03001F00001E00001E00003E00003C0000780000700000E00001C0000380000
700000E0000080000100000200100400100800101000302000207FFFE0FFFFE0FFFFE014217EA0
19>I<01F8000FFE001C0F803003C03803C07C03E07C01E07C01E03C03E01803E00003C0000380
000780000E00001C0003F800000E000007800003C00003E00001E00001F00001F03001F07801F0
FC01F0FC01F0FC01E0F803E04003C02007801C0F000FFE0003F80014227EA019>I<0003000003
00000700000F00000F0000170000370000270000470000C7000087000107000307000207000407
000C0700080700100700300700200700400700C00700FFFFFCFFFFFC0007000007000007000007
0000070000070000070000FFF800FFF816217FA019>I<1800401E03801FFF801FFF001FFC0013
F00010000010000010000010000010000010000010FC001306001403801801801001C00000E000
00E00000F00000F00000F07000F0F800F0F800F0F800F0F800E0C001E04001C06003C03003801C
0F000FFE0003F00014227EA019>I<003E0000FF8003C0C00700E00E01E01C03E01C03E03801C0
380000780000700000700000F0F800F30600F40300F40180F801C0F800E0F000E0F000F0F000F0
F000F0F000F0F000F07000F07000F07800E03800E03801E01C01C01C03800F070003FE0001F800
14227EA019>I<4000006000007FFFF07FFFF07FFFE0400020C000408000808001008001000002
0000040000040000080000180000100000300000300000700000700000E00000E00000E00001E0
0001E00001E00001E00003E00003E00003E00003E00003E00003E00003E00001C00014237DA119
>I<01F80007FE000E07801801C03000C02000606000606000606000607000607800C03E00801F
81001FC60007FC0003F80001FE00067F000C1F80100FC03003E06001E0600070C00070C00030C0
0030C00030C000306000607000403800C01E07800FFE0001F80014227EA019>I<01F80007FE00
0E0F001C03803803807801C07001C07001E0F000E0F000E0F000F0F000F0F000F0F000F0F000F0
7000F07001F03801F01802F00C02F0060CF001F0F00000E00000E00001E00001C03801C07C0380
7C0380780700300E00303C001FF80007E00014227EA019>I<70F8F8F870000000000000000000
000070F8F8F87005157C940E>I<70F8F8F870000000000000000000000070F8F8F87808080808
101010204040051F7C940E>I<0001800000018000000180000003C0000003C0000003C0000005
E0000005E0000005E0000008F0000008F0000008F00000107800001078000010780000203C0000
203C0000603E0000401E0000401E0000C01F0000800F0000FFFF0001FFFF800100078001000780
020003C0020003C0020003C0040001E0040001E00C0001E01E0001F0FFC01FFFFFC01FFF20237E
A225>65 D<FFFFF800FFFFFE0007800F80078007C0078003E0078001E0078001F0078001F00780
01F0078001F0078001F0078001E0078003E0078007C007800F8007803E0007FFFE000780078007
8003C0078001E0078001F0078000F0078000F8078000F8078000F8078000F8078000F8078000F8
078001F0078003F0078007E007800FC0FFFFFF00FFFFFC001D227EA123>I<0007F008003FFC18
00FC061801F0013803C000F8078000780F0000381E0000381E0000183C0000183C0000187C0000
087C00000878000008F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
0000780000007C0000087C0000083C0000083C0000081E0000101E0000100F0000200780002003
C0004001F0018000FC0700003FFC000007F0001D247DA224>I<FFFFF800FFFFFE0007800F8007
8003C0078001E0078000F007800078078000780780003C0780003C0780001E0780001E0780001E
0780001F0780001F0780001F0780001F0780001F0780001F0780001F0780001F0780001F078000
1E0780001E0780003E0780003C0780003C07800078078000F0078001E0078003C007800F80FFFF
FF00FFFFF80020227EA126>I<FFFFFFE0FFFFFFE0078003E0078000E007800060078000200780
0030078000300780001007802010078020100780201007802000078060000780E00007FFE00007
FFE0000780E0000780600007802000078020000780200407802004078000040780000807800008
0780000807800018078000180780003807800078078001F0FFFFFFF0FFFFFFF01E227EA122>I<
FFFFFFE0FFFFFFE0078003E0078000E00780006007800020078000300780003007800010078000
1007802010078020100780200007802000078060000780E00007FFE00007FFE0000780E0000780
600007802000078020000780200007802000078000000780000007800000078000000780000007
8000000780000007800000FFFE0000FFFE00001C227EA121>I<0007F008003FFC1800FC061801
F0013803C000F8078000780F0000381E0000381E0000183C0000183C0000187C0000087C000008
78000008F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8001FFF78001F
FF7C0000787C0000783C0000783C0000781E0000781F0000780F0000780780007803C000B801F0
01B800FC0718003FFC080007F00020247DA227>I<FFFC3FFFFFFC3FFF078001E0078001E00780
01E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E007
8001E007FFFFE007FFFFE0078001E0078001E0078001E0078001E0078001E0078001E0078001E0
078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0FFFC3FFFFFFC3F
FF20227EA125>I<FFFCFFFC078007800780078007800780078007800780078007800780078007
800780078007800780078007800780078007800780078007800780078007800780FFFCFFFC0E22
7EA112>I<07FFF007FFF0000F00000F00000F00000F00000F00000F00000F00000F00000F0000
0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000
0F00300F00780F00FC0F00FC0F00FC0E00F81E00401C0020380018700007C00014237EA11A>I<
FFFC01FF80FFFC01FF800780007800078000600007800040000780008000078001000007800200
00078004000007800800000780100000078020000007804000000780C000000781C000000783E0
00000784F000000788F00000079078000007A03C000007C03C000007801E000007800F00000780
0F00000780078000078003C000078003C000078001E000078000F000078000F000078000780007
8000FC00FFFC03FFC0FFFC03FFC022227EA127>I<FFFE0000FFFE000007800000078000000780
000007800000078000000780000007800000078000000780000007800000078000000780000007
800000078000000780000007800000078000000780000007800000078000400780004007800040
07800040078000C0078000C00780008007800180078003800780078007801F80FFFFFF80FFFFFF
801A227EA11F>I<FF800001FF80FF800001FF8007800001F00005C00002F00005C00002F00004
E00004F00004E00004F00004E00004F00004700008F00004700008F00004380010F00004380010
F00004380010F000041C0020F000041C0020F000041C0020F000040E0040F000040E0040F00004
070080F00004070080F00004070080F00004038100F00004038100F00004038100F0000401C200
F0000401C200F0000400E400F0000400E400F0000400E400F00004007800F00004007800F0001F
003000F000FFE0301FFF80FFE0301FFF8029227EA12E>I<FF8007FFFFC007FF07C000F805E000
2004F0002004F0002004780020047C0020043C0020041E0020041E0020040F0020040780200407
80200403C0200401E0200401E0200400F0200400F8200400782004003C2004003C2004001E2004
000F2004000F20040007A0040003E0040003E0040001E0040001E0040000E01F000060FFE00060
FFE0002020227EA125>I<000FF00000381C0000E0070001C00380078001E0070000E00E000070
1E0000783C00003C3C00003C7C00003E7C00003E7800001E7800001EF800001FF800001FF80000
1FF800001FF800001FF800001FF800001FF800001FF800001F7C00003E7C00003E7C00003E3C00
003C3E00007C1E0000780F0000F00F0000F0078001E003C003C000E0070000381C00000FF00020
247DA227>I<FFFFF800FFFFFE0007801F00078007C0078003C0078001E0078001E0078001F007
8001F0078001F0078001F0078001F0078001E0078003E0078003C00780078007801F0007FFFC00
078000000780000007800000078000000780000007800000078000000780000007800000078000
0007800000078000000780000007800000FFFC0000FFFC00001C227EA122>I<FFFFE00000FFFF
FC000007801F00000780078000078003C000078003E000078001E000078001F000078001F00007
8001F000078001F000078001E000078003E000078003C000078007000007803E000007FFF00000
078038000007801C000007800E000007800F000007800700000780078000078007800007800780
000780078000078007C000078007C000078007C000078007C040078007E040078003E040FFFC01
E080FFFC00F1000000003E0022237EA125>82 D<03F8100FFE301E07303801F07000F0700070E0
0030E00030E00010E00010E00010F00000F000007C00007F00003FF0001FFE000FFF8003FFC000
3FE00003F00000F0000070000078000038800038800038800038800038C00030C00070E00060F8
00E0CF03C0C7FF0080FE0015247DA21C>I<7FFFFFFC7FFFFFFC7803C03C6003C00C4003C00440
03C004C003C006C003C0068003C0028003C0028003C0028003C0020003C0000003C0000003C000
0003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0
000003C0000003C0000003C0000003C0000003C0000003C0000003C00001FFFF8001FFFF801F22
7EA124>I<FFFC07FFFFFC07FF078000F807800020078000200780002007800020078000200780
002007800020078000200780002007800020078000200780002007800020078000200780002007
800020078000200780002007800020078000200780002007800020078000200380004003C00040
03C0004001C0008000E0018000700300003C0E00001FF8000003F00020237EA125>I<FFF800FF
C0FFF800FFC00F80001E000780000800078000080003C000100003C000100003C000100001E000
200001E000200001F000200000F000400000F0004000007800800000780080000078008000003C
010000003C010000003C010000001E020000001E020000001F060000000F040000000F04000000
07880000000788000000078800000003D000000003D000000003F000000001E000000001E00000
0000C000000000C000000000C0000022237FA125>I<FFF83FFE03FFFFF83FFE03FF0F8003E000
780F0001E00030078001E00020078001E00020078001F0002003C001F0004003C001F0004003C0
0278004001E00278008001E00278008001E0043C008000F0043C010000F0043C010000F0081E01
0000F8081E03000078081E02000078181F02000078100F0200003C100F0400003C100F0400003C
20078400001E20078800001E20078800001E4003C800000F4003D000000F4003D000000F8001F0
0000078001E00000078001E00000070000E00000070000E00000030000C0000002000040003023
7FA133>I<7FFC0FFF007FFC0FFF0003E001F00003E000C00001F000800000F001000000F80200
000078020000003C040000003E080000001E080000000F100000000FB000000007A000000003C0
00000003E000000001E000000001F000000003F80000000278000000047C0000000C3C00000008
1E000000101F000000300F00000020078000004007C00000C003C000008001E000010001F00003
0000F0000F8001F800FFE007FFC0FFE007FFC022227FA125>I<FFF8007FC0FFF8007FC00F8000
1E0007C000180003C000100003E000100001E000200001F000600000F00040000078008000007C
008000003C010000003E030000001E020000000F040000000F84000000078800000007D8000000
03D000000003E000000001E000000001E000000001E000000001E000000001E000000001E00000
0001E000000001E000000001E000000001E000000001E000000001E00000003FFF0000003FFF00
0022227FA125>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE07317BA40E>91 D<08021004200820084010401080
20802080208020B82EFC3FFC3F7C1F380E100F7AA219>I<FEFE06060606060606060606060606
0606060606060606060606060606060606060606060606060606060606060606FEFE07317FA40E
>I<1FF000381C007C06007C07007C0380380380000380000380007F8007C3801E03803C038078
0380780380F00384F00384F00384F00784780B843C11C80FE0F016157E9419>97
D<0E0000FE0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
000E00000E1F800E60E00E80300F00380E001C0E001E0E000E0E000F0E000F0E000F0E000F0E00
0F0E000F0E000F0E000E0E001E0E001C0F00380C80700C60E0081F8018237FA21C>I<01FE0007
07000C0F801C0F80380F80780700700000F00000F00000F00000F00000F00000F00000F0000070
00007800403800401C00800C010007060001F80012157E9416>I<0000700007F00007F00000F0
00007000007000007000007000007000007000007000007000007000007001F8700706700E0170
1C00F0380070780070700070F00070F00070F00070F00070F00070F00070F00070700070780070
3800701C00F00C017807067F01F87F18237EA21C>I<01FC000707000C03801C01C03801C07800
E07000E0F000E0FFFFE0F00000F00000F00000F00000F000007000007800203800201C00400E00
8007030000FC0013157F9416>I<003E0000E30001C780038F80030F8007070007000007000007
0000070000070000070000070000070000FFF800FFF80007000007000007000007000007000007
00000700000700000700000700000700000700000700000700000700000700000700007FF8007F
F800112380A20F>I<00007801F08C071D1C0E0E1C1C07001C07003C07803C07803C07803C0780
1C07001C07000E0E000F1C0019F0001000001000001800001C00001FFF000FFFE00FFFF03800F8
60001840001CC0000CC0000CC0000C6000186000183800700E01C001FE0016217F9519>I<0E00
0000FE000000FE0000001E0000000E0000000E0000000E0000000E0000000E0000000E0000000E
0000000E0000000E0000000E0000000E1F80000E60E0000E8070000F0038000F0038000E003800
0E0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038
000E0038000E0038000E003800FFE3FF80FFE3FF8019237FA21C>I<1C003E003E003E001C0000
0000000000000000000000000000000E00FE00FE001E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E00FFC0FFC00A227FA10E>I<00E001F001F001F000E000000000
00000000000000000000000000F007F007F000F000700070007000700070007000700070007000
70007000700070007000700070007000700070007000707070F870F8E0F8C071801F000C2C82A1
0F>I<0E0000FE0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E03FC0E03FC0E01E00E01800E02000E04000E08000E10000E38000EF8000F1C00
0E1E000E0E000E07000E07800E03C00E01C00E01E00E01F0FFE3FEFFE3FE17237FA21A>I<0E00
FE00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E00FFE0FFE00B237FA20E>I<0E1FC0
7F00FE60E18380FE807201C01F003C00E00F003C00E00E003800E00E003800E00E003800E00E00
3800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E
003800E00E003800E00E003800E0FFE3FF8FFEFFE3FF8FFE27157F942A>I<0E1F8000FE60E000
FE8070001F0038000F0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038
000E0038000E0038000E0038000E0038000E0038000E0038000E003800FFE3FF80FFE3FF801915
7F941C>I<00FC000703800E01C01C00E0380070780078700038F0003CF0003CF0003CF0003CF0
003CF0003CF0003C7000387800783800701C00E00E01C007038000FC0016157F9419>I<0E1F80
FE60E0FE80700F00380E001C0E001E0E001E0E000F0E000F0E000F0E000F0E000F0E000F0E000F
0E001E0E001E0E001C0F00380E80700E60E00E1F800E00000E00000E00000E00000E00000E0000
0E00000E0000FFE000FFE000181F7F941C>I<01F8200704600E02601C01603801E07800E07800
E0F000E0F000E0F000E0F000E0F000E0F000E0F000E07000E07800E03801E01C01E00C02E0070C
E001F0E00000E00000E00000E00000E00000E00000E00000E00000E0000FFE000FFE171F7E941A
>I<0E1E00FE6300FE87801E87800F03000F00000E00000E00000E00000E00000E00000E00000E
00000E00000E00000E00000E00000E00000E0000FFF000FFF00011157F9414>I<0FC4303C600C
C00CC004C004E004F0007F803FF00FF800FC001E800E8006C006C006C004E00CD81887E00F157E
9414>I<020002000200020002000600060006000E001E003FF8FFF80E000E000E000E000E000E
000E000E000E000E000E040E040E040E040E040E040708030801F00E1F7F9E13>I<0E003800FE
03F800FE03F8001E0078000E0038000E0038000E0038000E0038000E0038000E0038000E003800
0E0038000E0038000E0038000E0038000E0038000E0078000E0078000700BC0003833F8000FC3F
8019157F941C>I<FFC1FEFFC1FE1E00700E00200E002007004007004003808003808003808001
C10001C10000E20000E20000E20000740000740000380000380000380000100017157F941A>I<
FF8FF87F80FF8FF87F801E01C01E000E00C00C000E00E008000E01E00800070160100007017010
0007023030000382382000038238200001C418400001C41C400001C41C400000E80C800000E80E
800000E80E8000007007000000700700000070070000002002000021157F9424>I<FF83FEFF83
FE0F01E007008003810003830001C20000E400007800007000003800003C00004E00008E000187
000103800201C00601C01E00E0FF03FEFF03FE17157F941A>I<FFC1FEFFC1FE1E00700E00200E
002007004007004003808003808003808001C10001C10000E20000E20000E20000740000740000
3800003800003800001000001000002000002000002000F84000F84000F88000B980006300003E
0000171F7F941A>I<3FFFC0380380300780200700600E00401C00403C0040380000700000E000
01E00001C0000380400700400F00400E00C01C0080380080780180700780FFFF8012157F9416>
I<FFFFFF1801808C19>I<0E011F02318C40F8807010057CA019>126 D E
/Fg 25 121 df<F8F8F8F8F805057B8410>46 D<0003F000000003F000000007F800000007F800
000007780000000F3C0000000F3C0000000F3C0000001E3E0000001E1E0000001E1E0000003E1F
0000003C1F0000007C0F8000007C0F800000780F800000F807C00000F807C00000F007C00001F0
03E00001F003E00001E003E00003E001F00003E001F00003C001F00007C000F80007FFFFF80007
FFFFF8000FFFFFFC000F80007C000F00007C001F00003E001F00003E001E00003E003E00001F00
3E00001F003C00001F007C00000F807C00000F80F800000FC0F8000007C0F8000007C0222A7EA9
27>65 D<0003FE00000FFFC0003FFFF000FFFFF001FE03F003F8006007E0002007C000000F8000
001F8000001F0000003E0000003E0000007C0000007C0000007C0000007C000000F8000000F800
0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000007C0000007C
0000007C0000007C0000003E0000003E0000001F0000001F8000000F80000007C0000007E00008
03F8003801FE01F800FFFFF8003FFFF0000FFFC00003FE001D2C7CAA25>67
D<FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0F8000000F8000000F8000000F8000000F8000000F800
0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000FFFFFF00FF
FFFF00FFFFFF00FFFFFF00F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000FFFFFF
E0FFFFFFE0FFFFFFE0FFFFFFE01B2A7BA923>69 D<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7BA910>73
D<F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000FFFF
FFFFFFFFFFFFFFFFFFFF182A7BA920>76 D<FFFFE000FFFFFC00FFFFFF00F8003F80F8000FC0F8
0003E0F80001F0F80001F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80001F0
F80001F0F80003E0F8000FE0F8003FC0FFFFFF80FFFFFE00FFFFF800FFFFE000F801F000F801F0
00F800F800F800F800F8007C00F8003C00F8003E00F8001E00F8001F00F8000F80F8000F80F800
07C0F80007C0F80003E0F80001E0F80001F0F80000F8F80000F8F800007C1E2A7BA926>82
D<01FC000FFF003FFF803FFFC03C07E03003E00001F00001F00001F00001F00001F00003F001FF
F007FFF01FFFF03FC1F07E01F0FC01F0F801F0F801F0F801F0FC03F07E0FF07FFFF03FFFF01FF9
F00FE1F0141B7E9A1C>97 D<F80000F80000F80000F80000F80000F80000F80000F80000F80000
F80000F80000F80000F80000F80000F80000F87E00F9FF80FFFFC0FFFFE0FF07E0FC03F0F801F8
F800F8F800F8F8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF800FCF800F8F800F8
F801F0FC03F0FE0FE0FFFFC0FFFF80FBFF00F8FC00162A7BA91E>I<007F8001FFE007FFF80FFF
F81FC0783F00103E00007C00007C00007C0000F80000F80000F80000F80000F80000F80000F800
007C00007C00007C00003E00003F00181FC0780FFFF807FFF801FFE0007F80151B7E9A1A>I<00
007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00
007C00007C00FC7C03FF7C07FFFC0FFFFC1FC1FC3F00FC3E007C7C007C7C007CFC007CF8007CF8
007CF8007CF8007CF8007CF8007CF8007CF8007C7C007C7C007C7E00FC3F00FC1F83FC1FFFFC0F
FF7C03FE7C01F87C162A7EA91E>I<00FC0003FF0007FF800FFFC01F87E03F01E03E00F07C00F0
7C0070F80078FFFFF8FFFFF8FFFFF8FFFFF8F80000F80000F800007800007C00007C00003E0000
3F00181FC0F80FFFF807FFF801FFE0007F00151B7E9A1A>I<001FC0007FC000FFC001FFC003F0
0003E00007C00007C00007C00007C00007C00007C00007C00007C00007C000FFFE00FFFE00FFFE
0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0
0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C000122A7FA912
>I<00F80F0003FE7F800FFFFF801FFFFF801F07C0003E03E0003E03E0007C01F0007C01F0007C
01F0007C01F0007C01F0003E03E0003E03E0001F07C0001FFFC0003FFF80003BFE000038F80000
78000000780000007C0000003FFF80003FFFF0001FFFF8001FFFFC003FFFFE007C00FE007C003F
00F8001F00F8001F00F8001F00F8001F00FC003F007E007E003F81FC001FFFF8000FFFF00007FF
E00000FF000019287E9A1D>I<F8F8F8F8F800000000000000000000F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7CA90E>105 D<F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7CA90E>108
D<F83F007E00F9FF83FF00FBFFC7FF80FFFFEFFFC0FF07FE0FC0FE03FC07E0FC01F803E0FC01F8
03E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801
F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F8
01F003E0F801F003E0F801F003E0F801F003E0231B7B9A2E>I<F87E00F9FF00FBFF80FFFFC0FF
0FC0FE07E0FC03E0FC03E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F8
03E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0131B7B9A1E>I<007E00
01FF8007FFE00FFFF01F81F83F00FC3E007C7C003E7C003E78001EF8001FF8001FF8001FF8001F
F8001FF8001FF8001F7C003E7C003E7C003E3E007C3F00FC1FC3F80FFFF007FFE003FFC0007E00
181B7E9A1D>I<F87E00F9FF80FFFFC0FFFFE0FF0FE0FC03F0F801F8F800F8F800F8F800FCF800
7CF8007CF8007CF8007CF8007CF8007CF8007CF800FCF800F8F801F8F801F0FC03F0FE0FE0FFFF
C0FFFF80FBFF00F8FC00F80000F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F8000016277B9A1E>I<F838F8F8F9F8FBF8FFC0FF00FE00FE00FC00FC00F800F800F8
00F800F800F800F800F800F800F800F800F800F800F800F800F800F8000D1B7B9A14>114
D<07F8001FFF003FFF807FFF807C0780F80100F80000F80000F80000FC00007F00007FF0003FFC
001FFE0007FF0000FF80001FC0000FC00007C00007C04007C0E007C0FC1F80FFFF807FFF001FFE
0007F800121B7E9A16>I<07C00007C00007C00007C00007C00007C00007C000FFFF80FFFF80FF
FF8007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C00007C00007C00007C00007C08007E38003FFC003FFC001FF0000FC0012227FA1
15>I<F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0
F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F807E0F807E0FC1FE0FFFFE07FFBE0
3FF3E01F83E0131B7B9A1E>I<7C001F803E003F003F003E001F807C000F80FC0007C0F80007E1
F00003F3E00001F7E00000FFC000007F8000007F0000003E0000003E0000003F0000007F800000
FFC00001F3E00003E1E00003E1F00007C0F8000F807C001F807C001F003E003E001F007C001F80
FC000FC01A1B809A1B>120 D E /Fh 69 126 df<701CF01EF01EF01EF01EF01EF01EF01EF01E
701C701C701C701C600C0F0E7B9D1A>34 D<01818003C3C003C3C003C3C003C3C003C3C003C3C0
7FFFF0FFFFF8FFFFF8FFFFF80787800787800787800F8F800F0F000F0F000F0F000F0F00FFFFF8
FFFFF8FFFFF87FFFF01E1E001E1E001E1E001E1E001E1E001E1E000C0C00151E7E9D1A>I<1C3E
3E3F1F070707070E0E1C3C78F0600810789D1A>39 D<0038007800F001E003C007800F000E001C
001C0038003800700070007000E000E000E000E000E000E000E000E000E000E000700070007000
380038001C001C000E000F00078003C001E000F8007800380D2878A21A>I<6000F00078003C00
1E000F000780038001C001C000E000E00070007000700038003800380038003800380038003800
38003800700070007000E000E001C001C0038007800F001E003C007800F00060000D287CA21A>
I<00E00000E00000E00000E00040E040F0E1E0F8E3E07EEFC01FFF0007FC0003F80007FC001FFF
007EEFC0F8E3E0F0E1E040E04000E00000E00000E00000E00013157D991A>I<00300000780000
78000078000078000078000078000078000078007FFFF0FFFFF8FFFFF87FFFF000780000780000
780000780000780000780000780000780000300015167E991A>I<183E7E7F3F1F070E0E1CFCF8
E0080D77851A>I<7FFFC0FFFFE0FFFFE07FFFC013047D901A>I<3078FCFC7830060676851A>I<
0000C00001E00001E00003E00003C00007C0000780000F80000F00000F00001F00001E00003E00
003C00007C0000780000780000F80000F00001F00001E00003E00003C00003C00007C000078000
0F80000F00001F00001E00001E00003E00003C00007C0000780000F80000F00000F00000600000
13277DA21A>I<01F00007FC000FFE001F1F001C07003803803803807001C07001C07001C0E000
E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07001C07803C03803
803C07801C07001F1F000FFE0007FC0001F000131E7D9D1A>I<00C001C001C003C007C00FC07F
C0FDC071C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C0
01C07FFFFFFF7FFF101E7B9D1A>I<03F0000FFC001FFF003C0F807803C07001C0E000E0F000E0
F000E06000E00000E00000E00001C00001C0000380000780000F00000E00003C00007C0000F000
01E00003C0000780000F00001E00E03C00E07FFFE0FFFFE07FFFE0131E7D9D1A>I<01FC0007FF
001FFF801E03C03C01C03C00E03C00E00000E00000E00001C00003C000078001FF0001FF0001FF
C00003E00000F0000070000038000038000038600038F00038F00038E000707000F07E03E03FFF
C00FFF0001FC00151E7E9D1A>I<000F80001F80003F80003B80007B8000F38000E38001E38003
C3800383800783800F03800E03801E03803C0380380380780380F00380FFFFFEFFFFFEFFFFFE00
0380000380000380000380000380000380007FFC007FFC007FFC171E7F9D1A>I<3078FCFC7830
0000000000000000003078FCFC7830061576941A>58 D<183C7E7E3C1800000000000000000018
3C7E7E3E1E0E0E1C3CF8F0C0071C77941A>I<7FFFF0FFFFF8FFFFF87FFFF00000000000000000
000000007FFFF0FFFFF8FFFFF87FFFF0150C7E941A>61 D<003E0001FF0003FF8007C3C00F01C0
1E0EE03C3FE0387FE07071F070E0F070E0F0E1C070E1C070E1C070E1C070E1C070E1C070E1C070
E1C07070E0E070E0E07071C0387FC03C3F801E0E000F007007C1F003FFE001FFC0003F00141E7E
9D1A>64 D<003800007C00007C00006C0000EE0000EE0000EE0000EE0000C60001C70001C70001
C70001C7000383800383800383800383800783C00701C007FFC007FFC007FFC00E00E00E00E00E
00E00E00E01C00707F83FCFF83FE7F83FC171E7F9D1A>I<FFFE00FFFF80FFFFC01C03E01C00E0
1C00F01C00701C00701C00701C00701C00E01C01E01C07C01FFF801FFF801FFFC01C01E01C00F0
1C00701C00381C00381C00381C00381C00381C00781C00F01C01F0FFFFE0FFFFC0FFFF00151E7E
9D1A>I<007C3801FF3807FFF80F83F81E00F81C0078380078380038700038700038700000E000
00E00000E00000E00000E00000E00000E00000E000007000007000387000383800383800381C00
701E00F00F83E007FFC001FF80007C00151E7E9D1A>I<FFFE00FFFF00FFFF801C07C01C01E01C
00F01C00701C00781C00381C00381C003C1C001C1C001C1C001C1C001C1C001C1C001C1C001C1C
001C1C003C1C00381C00381C00781C00701C00F01C01E01C07C0FFFFC0FFFF00FFFE00161E7F9D
1A>I<7FFFFCFFFFFC7FFFFC0E001C0E001C0E001C0E001C0E001C0E00000E00000E07000E0700
0E07000FFF000FFF000FFF000E07000E07000E07000E00000E00000E00000E000E0E000E0E000E
0E000E0E000E7FFFFEFFFFFE7FFFFE171E7F9D1A>I<7FFFFCFFFFFC7FFFFC0E001C0E001C0E00
1C0E001C0E001C0E00000E00000E07000E07000E07000FFF000FFF000FFF000E07000E07000E07
000E00000E00000E00000E00000E00000E00000E00000E00007FE000FFF0007FE000161E7F9D1A
>I<00F8E003FEE007FFE00F07E01E03E03C01E03800E07000E07000E07000E0E00000E00000E0
0000E00000E00000E00000E00FF8E00FF8E00FF8E000E07000E07000E07001E03801E03C03E01E
03E00F07E007FFE003FEE000F8E0151E7E9D1A>I<FF8FF8FF8FF8FF8FF81C01C01C01C01C01C0
1C01C01C01C01C01C01C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C0
1C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C0FF8FF8FF8FF8FF8FF8151E7E9D1A>
I<FFFF80FFFF80FFFF8001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
0001C000FFFF80FFFF80FFFF80111E7C9D1A>I<03FFC003FFE003FFC0000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E00600E00F00E00F01E00F03C007FF8003FF0000FC000131E7C9D1A>I<
FF83F8FF87FCFF83F81C01E01C03C01C03801C07001C0F001C1E001C1C001C38001C78001CF000
1CF8001DF8001FDC001F9C001F0E001E0F001E07001C07801C03801C01C01C01C01C00E01C00E0
1C0070FF81FCFF81FEFF81FC171E7F9D1A>I<7FE000FFF0007FE0000E00000E00000E00000E00
000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
000E00000E00000E00380E00380E00380E00380E00387FFFF8FFFFF87FFFF8151E7E9D1A>I<7E
003F00FF007F807F007F001D80DC001D80DC001D80DC001DC1DC001DC1DC001CC19C001CC19C00
1CE39C001CE39C001C631C001C771C001C771C001C361C001C361C001C3E1C001C1C1C001C1C1C
001C001C001C001C001C001C001C001C001C001C001C001C001C001C007F007F00FF80FF807F00
7F00191E809D1A>I<FE0FF8FF0FF8FF0FF81D81C01D81C01D81C01D81C01DC1C01CC1C01CC1C0
1CE1C01CE1C01C61C01C61C01C71C01C71C01C31C01C31C01C39C01C39C01C19C01C19C01C1DC0
1C0DC01C0DC01C0DC01C0DC0FF87C0FF87C0FF83C0151E7E9D1A>I<0FFE003FFF807FFFC07C07
C07001C0F001E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000
E0E000E0E000E0E000E0E000E0E000E0E000E0F001E0F001E07001C07C07C07FFFC03FFF800FFE
00131E7D9D1A>I<7FFF00FFFFC07FFFE00E01F00E00780E00380E003C0E001C0E001C0E001C0E
001C0E003C0E00380E00780E01F00FFFE00FFFC00FFF000E00000E00000E00000E00000E00000E
00000E00000E00000E00007FC000FFE0007FC000161E7F9D1A>I<FFF000FFFC00FFFF001C0F80
1C07801C03C01C01C01C01C01C01C01C01C01C03C01C07801C0F801FFF001FFC001FFE001C0F00
1C07001C03801C03801C03801C03801C03801C03841C038E1C038E1C038EFF81FCFF81FCFF8070
171E7E9D1A>82 D<03F1C00FFDC03FFFC07C0FC07003C0E003C0E001C0E001C0E001C0E0000070
00007800003F00001FF00007FE0000FF00000F800003C00001C00000E00000E06000E0E000E0E0
00E0E001C0F001C0FC0780FFFF80EFFE00E3F800131E7D9D1A>I<7FFFFEFFFFFEFFFFFEE0380E
E0380EE0380EE0380EE0380E003800003800003800003800003800003800003800003800003800
00380000380000380000380000380000380000380000380000380000380003FF8007FFC003FF80
171E7F9D1A>I<7FC1FF00FFE3FF807FC1FF000E0038000E0038000E0038000E0038000E003800
0E0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038000E0038
000E0038000E0038000E0038000E0038000E00380007007000070070000380E00003C1E00001FF
C00000FF8000003E0000191E809D1A>I<3FFFF87FFFF87FFFF87000707000E07001E07001C070
0380000780000700000E00001E00001C0000380000780000F00000E00001C00003C00003800007
00000F00380E00381C00383C0038380038700038FFFFF8FFFFF8FFFFF8151E7E9D1A>90
D<FFF8FFF8FFF8E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000FFF8FFF8FF
F80D2776A21A>I<FFF8FFF8FFF800380038003800380038003800380038003800380038003800
380038003800380038003800380038003800380038003800380038003800380038003800380038
0038FFF8FFF8FFF80D277EA21A>93 D<7FFFC0FFFFE0FFFFE07FFFC013047D7E1A>95
D<1FF0003FFC007FFE00780F00300700000380000380007F8007FF801FFF803F83807803807003
80E00380E00380E00380700780780F803FFFFC1FFDFC07F0FC16157D941A>97
D<FE0000FE0000FE00000E00000E00000E00000E00000E00000E00000E3E000EFF800FFFE00FC1
F00F80700F00380E00380E001C0E001C0E001C0E001C0E001C0E001C0E001C0F00380F00780F80
F00FC1E00FFFC00EFF80063E00161E7F9D1A>I<00FF8003FFC00FFFE01F01E03C00C078000070
0000700000E00000E00000E00000E00000E000007000007000007800703C00701F01F00FFFE003
FFC000FE0014157D941A>I<001FC0001FC0001FC00001C00001C00001C00001C00001C00001C0
01F1C007FDC00FFFC01E0FC03C07C07803C07001C0E001C0E001C0E001C0E001C0E001C0E001C0
E001C07003C07003C03807C03E0FC01FFFFC07FDFC01F1FC161E7E9D1A>I<01F80007FF000FFF
801E07C03C01C07800E07000E0E00070E00070FFFFF0FFFFF0FFFFF0E000007000007000007800
703C00701F01F00FFFE003FFC000FE0014157D941A>I<0007E0001FF0003FF800787800F03000
E00000E00000E00000E0007FFFF0FFFFF0FFFFF000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E00000E00000E00000E00000E00000E0007FFFC07FFFC07FFFC0151E7F9D
1A>I<00F87C03FFFE07FFFE0F078C0E03801C01C01C01C01C01C01C01C01C01C00E03800F0780
0FFF000FFE001CF8001C00001C00000E00000FFF800FFFE03FFFF87C007C70001CE0000EE0000E
E0000EE0000E70001C78003C3E00F81FFFF007FFC001FF0017217F941A>I<FE0000FE0000FE00
000E00000E00000E00000E00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00
E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0FFE3FEFFE3
FEFFE3FE171E7F9D1A>I<01C00003E00003E00003E00001C00000000000000000000000000000
00007FE000FFE0007FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E00000E00000E000FFFFC0FFFFC0FFFFC0121F7C9E1A>I<001C003E003E
003E001C000000000000000000000FFE0FFE0FFE000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E001C601CF038FFF87FF01FC0
0F2A7E9E1A>I<FFE000FFE000FFE00000E00000E00000E00000E00000E00000E00000E00000E0
0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
0000E00000E00000E000FFFFE0FFFFE0FFFFE0131E7D9D1A>108 D<7CE0E000FFFBF8007FFFF8
001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C
1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FF9F9F807F1F1F00191580941A
>I<FE3E00FEFF80FFFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E
00E00E00E00E00E00E00E00E00E00E00E0FFE3FEFFE3FEFFE3FE17157F941A>I<01F00007FC00
1FFF003E0F803C07807803C07001C0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C0
7803C03C07803E0F801FFF0007FC0001F00013157D941A>I<FE3E00FEFF80FFFFE00FC1F00F80
700F00380E00380E001C0E001C0E001C0E001C0E001C0E001C0E001C0F00380F00780F80F00FC1
E00FFFC00EFF800E3E000E00000E00000E00000E00000E00000E00000E00000E0000FFE000FFE0
00FFE00016207F941A>I<FF83F0FF8FF8FFBFFC03FC3C03F01803E00003C00003C00003800003
8000038000038000038000038000038000038000038000038000FFFF00FFFF80FFFF0016157E94
1A>114 D<07FB801FFF807FFF80780780E00380E00380E003807800007FC0003FFC0007FF0000
3F800003806001C0E001C0E001C0F003C0FC0780FFFF00EFFE00E3F80012157C941A>I<00C000
01C00001C00001C00001C00001C00001C0007FFFE0FFFFE0FFFFE001C00001C00001C00001C000
01C00001C00001C00001C00001C00001C00001C07001C07001C07001C07000E0E000FFE0007FC0
001F00141C7F9B1A>I<FE0FE0FE0FE0FE0FE00E00E00E00E00E00E00E00E00E00E00E00E00E00
E00E00E00E00E00E00E00E00E00E00E00E00E00E01E00F03E007FFFE03FFFE00FCFE17157F941A
>I<7FC7FCFFC7FE7FC7FC0E00E00E00E00F01E00701C00701C00783C003838003838003838001
C70001C70001C70000EE0000EE0000EE00007C00007C0000380017157F941A>I<FF83FEFFC7FE
FF83FE3800381C00701C00701C00701C00701C38701C7C700C7C600E6CE00E6CE00EEEE00EEEE0
0EEEE006C6C006C6C007C7C007C7C003838017157F941A>I<7FC7F87FCFFC7FC7F80703C00387
8003C70001EE0000FE00007C00007800003800007C0000EE0001EE0001C7000383800783C00701
C07FC7FCFFC7FE7FC7FC17157F941A>I<7FC7FCFFC7FE7FC7FC0E00E00F00E00701E00701C007
81C00381C003838001C38001C38001C70000E70000E70000E600006600006E00003C00003C0000
3C00003C0000380000380000780000700030700078E00079E0007FC0003F80001E000017207F94
1A>I<0007E0001FE0003FE000780000F00000E00000E00000E00000E00000E00000E00000E000
00E00000E00000E00000E00001E00003C000FF8000FF0000FF800003C00001E00000E00000E000
00E00000E00000E00000E00000E00000E00000E00000E00000E00000F000007800003FE0001FE0
0007E013277DA21A>123 D<7C0000FF0000FF800003C00001E00000E00000E00000E00000E000
00E00000E00000E00000E00000E00000E00000E00000F000007800003FE0001FE0003FE0007800
00F00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00001E000
03C000FF8000FF00007C000013277DA21A>125 D E /Fi 62 127 df<0000FE0000038100000E
0080001C03C0003807C0007007C0007007800070030000E0000000E0000000E0000000E0000000
E0000000E000003FFFFF003FFFFF0001C00F0001C0070001C0070001C0070003800E0003800E00
03800E0003800E0003800E0003800E0007001C0007001C0007001C0007001C0007001C0007001C
000F003C00FFE3FF80FFE3FF801A237FA21C>12 D<0380078007000E001C003800700040008000
0A0971A219>19 D<0700078001E000F0007000E001E0FF800C087B7E16>24
D<0001E000000003100000000C080000000C080000001808000000380800000038080000003008
00000030100000007010000000702000000070400000007080000000710000000072000000003C
003FF00038003FF00038000F800038000600007C000800009C000800011C001000061E0020000C
0E004000180F004000380700800078078100007003820000F003C40000F001C80000F001F00080
F800F00180F800F001007801B803003E0F1E0E001FFC0FFC0007E003F00024257DA327>38
D<1C3E7E7E3A02020404080810204080070F78A20E>I<1C3E7E7E3A0202040408081020408007
0F7D840E>44 D<FFF0FFF00C027D8B11>I<3078F8787005057C840E>I<001F0000E1C001C06003
80700700300E00380E00381E00381C00381C00383C00383C003838007878007878007878007878
0078780078F000F0F000F0F000F0F000F0F000E0F001E0F001E0F001C0F001C0F0038070038070
0700700600380C001C380007E00015227CA019>48 D<000FC0007FF000E0FC01003E02001E0400
1F07800F0FC00F0FC00F0FC00F0F801F03001E00001E00003C00003C0000780000F00001E00003
C0000700000E00001C0000300000600000C0000180080200080400080800103000107FFFF0FFFF
E0FFFFE018217EA019>50 D<001FC0007FE001C0F803007C07803C07C03C0FC03C0FC03C07803C
03007C0000780000F00000E00001C000070000FE000003800001C00001E00000F00000F00000F0
0000F81000F87C01F0FC01F0FC01F0FC01E0F803E0C007C0600780381F001FFC0007F00016227D
A019>I<0000200000600000E00001E00001E00002E00005C00009C00011C00031C00061C00041
C00083800103800203800403800C0380080380100700200700400700800700FFFFFCFFFFFC000E
00000E00000E00000E00000E00000E00001E0003FFE003FFE016217DA019>I<00800400E03C01
FFF801FFF001FFC0017F00010000010000020000020000020000020000023F0002C1C00500E006
00600400700000700000780000780000780000783800787C0078FC00F0F800F0F800E08001E040
01C0400380200700381E000FFC0007E00016227DA019>I<001FC0007FE000E07801801802000C
06000C04000C0C000C0C000C0E000C0F00180F803007E06003F0C001FF0000FE00007F00019FC0
060FE00C03E01801F03000F0600070600030C00030C00030C00030C00020E000606000C0300180
3C0F000FFC0003F00016227DA019>56 D<003F0000FFC001E0E00380700700700E00381E00381C
00383C00383C00383C00383C00787800787800787800783800F83800F83801781C01F00C02F006
0CF001F0E00001E00001E00001C00003C0700380F80700F80600F00E00803C00E070007FE0001F
800015227CA019>I<060F1F1F0E00000000000000000000003078F8787008157C940E>I<000004
0000000006000000000E000000000E000000001E000000001E000000003F000000006F00000000
4F00000000CF000000008F000000018F000000010F800000020780000002078000000407800000
040780000008078000000803C000001003C000001003C000002003C000003FFFC000007FFFC000
004001E000008001E000008001E000010001E000010001E000020001F000020000F000060000F0
001F0001F000FFC01FFF80FFC01FFF0021237EA225>65 D<07FFFFE007FFFFF8003C007C003C00
3E003C001F003C001F003C000F0078000F0078000F0078001F0078001F0078003E0078003C00F0
007800F001F000F007C000FFFFC000F001F000F000F801E0007C01E0007C01E0003C01E0003E01
E0003E01E0003E03C0003C03C0007C03C0007C03C000F803C001F003C003E007C00FC0FFFFFF80
FFFFFC0020227EA123>I<0000FE010007FF83001F81C6007C006E00F0003E01E0001E03C0001E
0780000E0F00000C1F00000C1E0000043E0000043C0000047C0000047C000000F8000000F80000
00F8000000F8000000F8000000F8000000F0000000F0000000F0000010F8000010F8000020F800
0020780000207C0000403C0000801E0001800F0003000780060003E0380001FFF000003F800020
247AA224>I<07FFFFE00007FFFFF800003C007C00003C001E00003C000F00003C000780003C00
078000780003C000780003C000780003E000780003E000780003E000780003E000F00003E000F0
0003E000F00003E000F00003E000F00003E000F00003E001E00003C001E00007C001E00007C001
E000078001E0000F8001E0000F0003C0001F0003C0001E0003C0003C0003C000780003C000F000
03C003E00007C00FC000FFFFFF0000FFFFF8000023227EA126>I<07FFFFFF8007FFFFFF80003C
001F00003C000700003C000300003C000300003C00010000780001000078000100007802010000
780201000078020100007806000000F004000000F01C000000FFFC000000FFFC000000F01C0000
00F00C000001E008000001E008000001E008010001E008010001E000020001E000020003C00002
0003C000040003C000040003C0000C0003C000180003C000380007C001F800FFFFFFF000FFFFFF
F00021227EA122>I<0000FE010007FF83001F81C6007C006E00F0003E01E0001E03C0001E0780
000E0F00000C1F00000C1E0000043E0000043C0000047C0000047C000000F8000000F8000000F8
000000F8000000F8000000F8000000F0003FFFF0003FFFF00000F0F80000F0F80000F0F80001E0
780001E07C0001E03C0001E01E0003E00F0003E0078004C003F038C001FFF040003F800020247A
A227>71 D<07FFF007FFF0003E00003C00003C00003C00003C0000780000780000780000780000
780000780000F00000F00000F00000F00000F00000F00001E00001E00001E00001E00001E00001
E00003C00003C00003C00003C00003C00003C00007C000FFFE00FFFC0014227EA112>73
D<003FFF003FFF0000F00000F00000F00000F00000F00001E00001E00001E00001E00001E00001
E00003C00003C00003C00003C00003C00003C0000780000780000780000780000780000780300F
007C0F00FC0F00FC0F00FC1E00F81E00803C0040380030E0000F800018237DA11A>I<07FFF00F
FE07FFF00FFC003E0003E0003C000300003C000200003C000400003C0018000078002000007800
4000007800800000780100000078020000007808000000F018000000F03C000000F07C000000F0
9E000000F31E000000F40F000001E80F000001F00F800001E007800001E007C00001E003C00001
E003E00003C001E00003C001F00003C000F00003C000F80003C000780003C0007C0007C0007E00
FFFC03FFC0FFFC03FFC027227EA127>I<07FFF80007FFF800003E0000003C0000003C0000003C
0000003C000000780000007800000078000000780000007800000078000000F0000000F0000000
F0000000F0000000F0000000F0000001E0000001E0000001E0001001E0001001E0003001E00020
03C0002003C0006003C0006003C000C003C001C003C003C007C00FC0FFFFFF80FFFFFF801C227E
A11F>I<07FC000007FE07FC00000FFE002E00000FC0002E00001780002E00001780002E000027
80002700002780004700004F00004700008F00004700008F00004700010F00004380010F000043
80020F00008380021E00008380041E000081C0041E000081C0081E000081C0081E000081C0101E
000101C0203C000100E0203C000100E0403C000100E0403C000100E0803C000100E0803C000200
7100780002007100780002007200780002007200780002003C0078000600380078000F003800F8
00FFE0301FFF80FFE0301FFF802F227EA12E>I<07FFFFC007FFFFF0003C00FC003C003E003C00
1E003C001F003C001F0078001F0078001F0078001F0078001F0078001E0078003E00F0003C00F0
007800F000F000F003E000FFFF8000F0000001E0000001E0000001E0000001E0000001E0000001
E0000003C0000003C0000003C0000003C0000003C0000003C0000007C00000FFFC0000FFFC0000
20227EA122>80 D<07FFFF800007FFFFF000003C00F800003C003C00003C001E00003C001F0000
3C001F000078001F000078001F000078001F000078001F000078003E000078003C0000F0007800
00F000F00000F007C00000FFFE000000F00E000000F003000001E003800001E001C00001E001C0
0001E001E00001E001E00001E001E00003C003E00003C003E00003C003E00003C003E00003C003
E02003C003E04007C003E040FFFC01F080FFFC00F1800000003E0023237EA125>82
D<000FC040003FF0C000F0398001C00F80018003800300038007000180070001800E0001000E00
01000E0001000F0000000F0000000F80000007E0000007FE000003FFC00001FFF000007FF80000
07FC0000007C0000003C0000001E0000001E0000001E0020001E0040001C0040001C0060001C00
600018006000380070007000F800E000EF03C000C7FF800080FE00001A247DA21C>I<1FFFFFFF
3FFFFFFF3C01E01E3001E0062001E0026001E0024001E0024003C0024003C0028003C0028003C0
028003C0020003C000000780000007800000078000000780000007800000078000000F0000000F
0000000F0000000F0000000F0000000F0000001E0000001E0000001E0000001E0000001E000000
1E0000003E00001FFFF8001FFFF80020227AA124>I<FFFE07FF80FFFE07FF8007C00078000780
0020000780002000078000200007800020000F000040000F000040000F000040000F000040000F
000040000F000040001E000080001E000080001E000080001E000080001E000080001E00008000
3C000100003C000100003C000100003C000100003C000100003C000200003C000200003C000200
003C000400003C000C00001C000800001E001000000E006000000781C0000003FF800000007E00
0000212379A125>I<FFFC007FE0FFF8007FE00F80001E000780000C0007800008000780001000
03C000100003C000200003C000200003C000400003C000C00001E000800001E001000001E00100
0001E002000001E002000000F004000000F004000000F008000000F008000000F0100000007810
00000078200000007860000000784000000078800000003C800000003D000000003D000000003E
000000003E000000001C000000001C0000000018000000001800000023237AA125>I<FFF81FFF
03FF80FFF81FFE03FF800F8003E00078000F8001E0003000078001E0002000078001E000200007
8001E0004000078003F0004000078002F0008000078004F000800007C004F001000003C008F001
000003C008F002000003C010F002000003C010F804000003C0307804000003C0207808000001E0
207808000001E0407810000001E0407810000001E0807830000001E0803C20000001E1003C2000
0001E1003C40000000F2003C40000000F2003C80000000F4003C80000000F4003D00000000F800
1F00000000F8001E00000000F0001E0000000070001C0000000060001C00000000600018000000
0040001800000031237AA133>I<03FFF03FF803FFE03FF8001F800F80000F000600000F000C00
000780080000078010000007C020000003C040000003E0C0000001E080000001F100000000F200
000000FC0000000078000000007C000000003C000000003E000000005E000000009F000000018F
000000030F800000020780000004078000000803C000001003C000003003E000002001E0000040
01F000008000F000018000F80007C000F800FFF007FFC0FFF007FFC025227FA125>I<FFF8007F
E0FFF8007FE007C0001E0007C000180003C000100003C000200003E000200001E000400001F000
800000F001000000F801000000780200000078040000007C080000003C180000003E100000001E
200000001F400000001FC00000000F800000000F000000000F000000000F000000000F00000000
0E000000001E000000001E000000001E000000001E000000001E000000001C000000003E000000
07FFE0000007FFE0000023227AA125>I<0100038007C00CC018603030601080080D0876A219>
94 D<03FC000E07001F01801F01C01E00C00C00E00001C00001C0003FC003E1C00F01C01E01C0
380380780380F00384F00384F00784F00784F00B887833D01FC1E016157D9419>97
D<0780003F80003F00000700000700000700000700000700000E00000E00000E00000E00000E00
000E00001C3F001CC1C01D00601E00701C00381C003838003C38003C38003C38003C38003C3800
3C7000787000787000707000F07000E06801C0E80380C60E0081F80016237BA21C>I<00FF0003
83800607C00C07C01C0780380300780000700000F00000F00000F00000F00000F00000E00000F0
0000F000807001007001003806001C180007E00012157C9416>I<00000F00007F00007E00000E
00000E00000E00000E00000E00001C00001C00001C00001C00001C00001C007E3803C1380700B8
0E00781C0038380038780070700070F00070F00070F00070F00070E000E0E000E0E000E0F000E0
7001E07003E03805E01C19FC07E1FC18237CA21C>I<007E000383800701C00C00E01C00E03800
E07800E07000E0FFFFE0F00000F00000F00000F00000E00000E00000F000407000803000801803
000E0C0003F00013157D9416>I<0001E0000630001C780018F80038F800707000700000700000
E00000E00000E00000E00000E00000E0003FFE003FFE0001C00001C00001C00001C00003800003
80000380000380000380000380000700000700000700000700000700000700000F0000FFF000FF
F00015237FA20F>I<00000380001F8CC00070D1C000E0E1C001C0700003C0700003C070000780
F0000780F0000780F0000780E0000381E0000181C00002C30000027E0000040000000400000004
0000000600000007FFC00007FFF00007FFF8001C007C0030000C0060000C0060000C00C0000C00
C0000C004000180060003000300060000C03800003FE00001A21809519>I<0078000003F80000
03F00000007000000070000000700000007000000070000000E0000000E0000000E0000000E000
0000E0000000E0000001C1F80001C60C0001D80E0001E0070001E0070001C0070003C00E000380
0E0003800E0003800E0003800E0003800E0007001C0007001C0007001C0007001C0007001C0007
001C000F003C00FFE3FF80FFE3FF8019237FA21C>I<007000F001F000F000E000000000000000
00000000000000000001C00FC01FC003C001C001C0038003800380038003800380070007000700
0700070007000F00FFE0FFE00C227FA10E>I<0078000003F8000003F000000070000000700000
00700000007000000070000000E0000000E0000000E0000000E0000000E0000000E0000001C07F
C001C07FC001C03C0001C0300001C0400001C080000383000003840000038E000003BE000003CF
00000387000007078000070380000701C0000701C0000700E0000700F0000F00F800FFE3FF00FF
E3FE001A237FA21A>107 D<007803F803F00070007000700070007000E000E000E000E000E000
E001C001C001C001C001C001C00380038003800380038003800700070007000700070007000F00
FFE0FFE00D237FA20E>I<01C1F807E01FC60C18301FD80E603803E007801C01E007801C01C007
001C03C00F003803800E003803800E003803800E003803800E003803800E003807001C00700700
1C007007001C007007001C007007001C007007001C00700F003C00F0FFE3FF8FFEFFE3FF8FFE27
157F942A>I<01C1F8001FC60C001FD80E0003E0070001E0070001C0070003C00E0003800E0003
800E0003800E0003800E0003800E0007001C0007001C0007001C0007001C0007001C0007001C00
0F003C00FFE3FF80FFE3FF8019157F941C>I<007F0001C1C00700E00E00701C00383800387800
3C70003CF0003CF0003CF0003CF0003CE00078E00078E00070F000F07000E07001C03803800E0E
0003F00016157D9419>I<00E1F8000FE60E000FE8070000F0038000E003C000E001C001C001E0
01C001E001C001E001C001E001C001E001C001E0038003C0038003C0038007800380078003800F
0003C00E0007403C0007307000070FC0000700000007000000070000000E0000000E0000000E00
00000E0000000E000000FFC00000FFC000001B1F80941C>I<00FC100382100701300E00F01C00
F03800F07800E07800E0F000E0F000E0F000E0F000E0F001C0F001C0F001C0F001C07003C07005
C0380B801C338007C380000380000380000380000700000700000700000700000700007FE0007F
E0141F7C941A>I<01C3E01FC4701FD8F003D0F001E06001C00003C00003800003800003800003
80000380000700000700000700000700000700000700000F0000FFF000FFF00014157F9414>I<
01FC800603800C01801801801801801800801801001E00001FE0000FFC0003FE00007E00000700
400700400300400300600200600600F00400C8180087E00011157E9414>I<0080008000800180
010001000300030007000F001FF8FFF80E000E000E000E001C001C001C001C001C001C00381038
10381038103810382038201C4007800D1F7C9E13>I<0E0038FE03F8FE03F81E00780E00380E00
381C00701C00701C00701C00701C00701C00703800E03800E03800E03800E03801E03802E01805
E01C19FC07E1FC16157C941C>I<FFCFFC3FC0FFCFF87F801E01E01E000E00C008000E00C00800
0E01E010000E03E010000E02E02000070660200007046040000708704000070870800007107180
00079031000003A033000003A03A000003C03C000003C03C000003801800000180180000010010
000022157C9424>119 D<1FF83FC01FF87FC001E03C0000E0100000E020000070400000388000
00390000001E0000001C0000000E0000001F0000003700000063800000C380000181C0000101C0
000600E0001E00F000FF03FF00FF03FF001A157F941A>I<0FFC0FE00FFC0FE000E0078000E002
0000E0040000E00400007008000070080000701000007030000038200000384000003840000038
8000003C8000001D0000001D0000001E0000001C0000000C000000080000000800000010000000
1000000020000078400000F8400000F8800000F1000000420000003C0000001B1F80941A>I<FF
FFFF18017E8C19>123 D<0E011F03318440F88070100577A019>126 D E
/Fj 27 123 df<70F8FCFC7404040404080810102040060F7A8410>44 D<0003F802001FFF0600
7E038601F000CE03E0003E0780001E0F00001E1F00000E1E0000063E0000063C0000067C000002
7C00000278000002F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00780000007C0000027C0000023C0000023E0000021E0000041F0000040F0000080780001803E0
003001F00060007E03C0001FFF000003FC001F247CA227>67 D<FFFFFFE0FFFFFFE0078003E007
8000E0078000600780002007800030078000300780001007800010078020100780201007802000
07802000078060000780E00007FFE00007FFE0000780E000078060000780200007802000078020
00078020000780000007800000078000000780000007800000078000000780000007800000FFFE
0000FFFE00001C227CA123>70 D<FFFC1FFF80FFFC1FFF80078000F000078000F000078000F000
078000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F00007FFFFF00007FFFFF000078000F000078000F000078000F000078000
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000FFFC1FFF80FFFC1FFF8021227CA129>72
D<FFFCFFFC07800780078007800780078007800780078007800780078007800780078007800780
0780078007800780078007800780078007800780078007800780FFFCFFFC0E227DA114>I<FFFE
0000FFFE0000078000000780000007800000078000000780000007800000078000000780000007
800000078000000780000007800000078000000780000007800000078000000780000007800000
0780000007800020078000200780002007800020078000600780006007800040078000C0078001
C0078003C007800FC0FFFFFFC0FFFFFFC01B227CA122>76 D<FFFFE00000FFFFFC000007801F00
000780078000078003C000078003E000078001E000078001F000078001F000078001F000078001
F000078001E000078003E000078003C000078007000007803E000007FFF0000007807800000780
1C000007800E000007800F00000780070000078007800007800780000780078000078007800007
8007C000078007C000078007C000078007C020078003E020078003E020FFFC01E040FFFC00F080
0000003F0023237CA128>82 D<FFF80FFF807FE0FFF80FFF807FE00F8000F8000F000F80007800
0600078000780004000780007C00040007C000BC000C0003C000BC00080003C000BE00080003E0
011E00080001E0011E00100001E0011E00100001E0020F00100000F0020F00200000F0020F0020
0000F00407802000007804078040000078040780400000780803C04000003C0803C08000003C08
03C08000003C1001E08000001E1001E10000001E1001E10000001E2000F10000000F2000F20000
000F2000F20000000F40007A00000007C0007C00000007C0007C0000000780003C000000038000
38000000038000380000000300001800000001000010000033237EA137>87
D<00040000000E0000000E0000000E0000001F0000001F0000003F800000278000002780000043
C0000043C0000043C0000081E0000081E0000101F0000100F0000100F00003FFF8000200780006
007C0004003C0004003C000C001E000C001E003C003F00FF00FFE01B1A7F991F>97
D<FFFF800F00E00F00700F00380F003C0F003C0F003C0F003C0F003C0F00780F00700F01E00FFF
C00F00F00F00380F003C0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F00780F00F0FFFF
C0171A7E991D>I<003F0201C0C603002E0E001E1C000E1C0006380006780002700002700002F0
0000F00000F00000F00000F00000F000007000027000027800023800041C00041C00080E000803
003001C0C0003F00171A7E991D>I<FFFF80000F01E0000F0070000F0038000F001C000F000E00
0F000E000F0007000F0007000F0007800F0007800F0007800F0007800F0007800F0007800F0007
800F0007800F0007000F0007000F000F000F000E000F001C000F0038000F0070000F01E000FFFF
8000191A7E991F>I<FFFFF80F00380F00180F00080F000C0F00040F00040F00040F02000F0200
0F02000F06000FFE000F06000F02000F02000F02000F00020F00020F00020F00060F00040F0004
0F000C0F003CFFFFFC171A7E991C>I<003F810001E063000380170006000F000C0007001C0003
0038000300780001007800010070000100F0000000F0000000F0000000F0000000F0000000F001
FFE070001F0078000F0078000F0038000F001C000F000C000F0006000F000380170001E0630000
3F81001B1A7E9920>103 D<FFE3FF800F0078000F0078000F0078000F0078000F0078000F0078
000F0078000F0078000F0078000F0078000F0078000FFFF8000F0078000F0078000F0078000F00
78000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F007800FFE3FF8019
1A7E991F>I<FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
000F000F000F000F000F000F000F000F00FFF00C1A7F990F>I<FFF0000F80000F00000F00000F
00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
00100F00100F00100F00300F00200F00600F00600F01E0FFFFE0141A7E991A>108
D<FF0003FE0F0003E00F0003E00B8005E00B8005E00B8005E009C009E009C009E009C009E008E0
11E008E011E008E011E0087021E0087021E0083841E0083841E0083841E0081C81E0081C81E008
1C81E0080F01E0080F01E0080F01E0080601E01C0601E0FF861FFE1F1A7E9925>I<FF00FF800F
801C000F8008000BC0080009E0080009E0080008F0080008F8080008780800083C0800083C0800
081E0800080F0800080F0800080788000803C8000803C8000801E8000800F8000800F800080078
000800780008003800080018001C001800FF800800191A7E991F>I<007F800001C0E000070038
000E001C001C000E003C000F0038000700780007807000038070000380F00003C0F00003C0F000
03C0F00003C0F00003C0F00003C0F00003C07800078078000780380007003C000F001C000E000E
001C000700380001C0E000007F80001A1A7E9920>I<007F800001C0E000070038000E001C001C
000E003C000F0038000700780007807800078070000380F00003C0F00003C0F00003C0F00003C0
F00003C0F00003C0F00003C07000038078000780380007003C1E0F001C310E000E209C000720B8
0001E0E000007FC0400000404000006040000070C000007F8000003F8000003F0000001E001A21
7E9920>113 D<FFFE00000F03C0000F00E0000F00F0000F0078000F0078000F0078000F007800
0F0078000F00F0000F00E0000F03C0000FFE00000F0380000F01E0000F00E0000F00F0000F00F0
000F00F0000F00F0000F00F0000F00F0000F00F0400F0070400F003880FFF01F001A1A7E991E>
I<07E100181B00300700600300600300E00100E00100E00100F00000F800007F80003FF8001FFC
000FFE0000FF00000F00000780000780800380800380800380C00300C00700E00600DC0C0083F0
00111A7E9917>I<7FFFFF00701E0700601E0100401E0100C01E0180801E0080801E0080801E00
80001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E
0000001E0000001E0000001E0000001E0000001E0000001E0000003F000003FFF000191A7F991D
>I<FFF0FF800F001C000F0008000F0008000F0008000F0008000F0008000F0008000F0008000F
0008000F0008000F0008000F0008000F0008000F0008000F0008000F0008000F0008000F000800
0F00080007001000078010000380200001C0600000E08000003F0000191A7E991F>I<FFC00FF0
1F0007801F0003000F8002000780040007C0040003E0080001E0080001F0100000F83000007820
00007C4000003E4000001E8000001F8000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F000000FFE0001C1A7F991F>121
D<7FFFE07803C07003C0600780400780400F00401E00401E00003C00003C0000780000F00000F0
0001E00001E00003C0000780200780200F00200F00201E00603C00403C00C07801C07803C0FFFF
C0131A7E9919>I E /Fk 19 121 df<FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFF000007F00000000007F00000000007F00000000007F000000000
07F00000000007F00000000007F00000000007F00000000007F00000000007F00000000007F000
00000007F00000000007F00000000007F00000000007F00000000007F00000000007F000000000
07F00000000007F00000000007F00000000007F00000000007F00000000007F00000000007F000
00000007F00000000007F00000000007F00000000007F00000000007F00000000007F000000000
07F00000000007F00000000007F00000000007F00000000007F00000000007F00000000007F000
00000007F00000000007F00000000007F00000000007F00000000007F00000000007F000000000
07F00000000007F00000000007F00000000007F00000000007F00000000007F00000000007F000
00000007F00000000007F00000000007F00000000007F00000303C7DBB37>84
D<003FF00001FFFC0007FFFF001FFFFF801FFFFFC01FC01FE01E000FE0180007F0100007F00000
03F8000003F8000003F8000003F8000003F8000003F8000003F80007FFF8007FFFF801FFFFF807
FFFFF81FFF03F83FF003F87FC003F87F0003F8FF0003F8FE0003F8FE0003F8FE0003F8FE0003F8
FF0007F87F800FF87FE07FF83FFFFFF83FFFFFF81FFFFBF807FFE3F803FE03F81D257DA427>97
D<0007FE00003FFFC000FFFFF001FFFFF803FFFFF807FC03F80FF000701FE000301FC000003F80
00003F8000007F0000007F0000007F000000FE000000FE000000FE000000FE000000FE000000FE
000000FE000000FE000000FE0000007F0000007F0000007F0000003F8000003F8000001FC00004
1FE0001C0FF0007C07FC03FC03FFFFFC01FFFFFC00FFFFF0003FFFC00007FC001E257DA424>99
D<0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000
007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00
00007F0000007F0000007F0000007F001FE07F007FF87F01FFFE7F03FFFFFF07FFFFFF0FFE07FF
0FF001FF1FE000FF3FC0007F3F80007F7F80007F7F00007F7F00007F7F00007FFE00007FFE0000
7FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007F7F00007F7F00007F7F00
007F7F80007F3F80007F3FC000FF1FE001FF1FF003FF0FFC0FFF07FFFFFF03FFFF7F01FFFC7F00
7FF87F001FC07F203C7DBB2A>I<0007F800003FFE0000FFFF8001FFFFC003FFFFE007FC1FF00F
F007F01FE003F81FC001F83F8000FC3F8000FC7F0000FC7F00007E7FFFFFFEFFFFFFFEFFFFFFFE
FFFFFFFEFFFFFFFEFE000000FE000000FE000000FE000000FE0000007E0000007F0000007F0000
003F8000003F8000001FC000041FE0001C0FF8007C07FE03FC03FFFFFC01FFFFF8007FFFE0001F
FF800003FC001F257EA424>I<0000FFC00003FFC00007FFC0001FFFC0003FFFC0003F8040007F
000000FE000000FC000000FC000001FC000001FC000001FC000001FC000001FC000001FC000001
FC000001FC000001FC000001FC000001FC000001FC000001FC0000FFFFFC00FFFFFC00FFFFFC00
FFFFFC00FFFFFC0001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC00
0001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC
000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001
FC000001FC000001FC000001FC000001FC00001A3C7FBB19>I<001FE007E0007FF83FE001FFFF
FFF003FFFFFFF007FFFFFFF00FF87FE0000FE01FC0001FC00FE0001FC00FE0003F8007F0003F80
07F0003F8007F0003F8007F0003F8007F0003F8007F0003F8007F0001F8007E0001FC00FE0001F
C00FE0000FE01FC0000FF87FC00007FFFF80000FFFFF00001FFFFE00001E7FF800001E1FE00000
3E000000003E000000003E000000003F000000001F800000001FFFFF00001FFFFFF0000FFFFFFC
000FFFFFFE000FFFFFFF001FFFFFFF803FFFFFFFC03F8000FFC07E00001FC07E00000FE0FC0000
07E0FC000007E0FC000007E0FC000007E0FC000007E07E00000FC07F00001FC03FC0007F801FF8
03FF000FFFFFFE0007FFFFFC0001FFFFF000007FFFC000000FFE000024377EA428>I<FE000000
FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000
00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00
0000FE000000FE000000FE03FC00FE0FFF00FE3FFFC0FE7FFFE0FEFFFFE0FFF01FF0FFE00FF0FF
C007F8FF8007F8FF0003F8FF0003F8FF0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8
FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003
F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE00
03F81D3C7ABB2A>I<FEFEFEFEFEFEFE0000000000000000000000000000FEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE073A7AB914>I<FEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE073C7ABB14>108 D<FE03FC000FF000FE0FFF003FFC
00FE3FFFC0FFFF00FE7FFFE1FFFF80FEFFFFE3FFFF80FFF01FF7C07FC0FFE00FFF803FC0FFC007
FF001FE0FF8007FE001FE0FF0003FC000FE0FF0003FC000FE0FF0003FC000FE0FE0003F8000FE0
FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8
000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE
0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F800
0FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE0003F8000FE0FE00
03F8000FE0FE0003F8000FE033257AA440>I<FE03FC00FE0FFF00FE3FFFC0FE7FFFE0FEFFFFE0
FFF01FF0FFE00FF0FFC007F8FF8007F8FF0003F8FF0003F8FF0003F8FE0003F8FE0003F8FE0003
F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE00
03F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE
0003F8FE0003F8FE0003F81D257AA42A>I<0007FC0000001FFF0000007FFFC00001FFFFF00003
FFFFF80007FC07FC000FF001FE001FE000FF001FC0007F003F80003F803F80003F807F00001FC0
7F00001FC07E00000FC0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000F
E0FE00000FE0FE00000FE0FE00000FE07F00001FC07F00001FC07F00001FC03F80003F803F8000
3F801FC0007F001FE000FF000FF001FE0007FE0FFC0003FFFFF80001FFFFF000007FFFC000001F
FF00000007FC000023257EA428>I<FE03FC00FE1FFF00FE7FFF80FEFFFFC0FFFFFFE0FFF03FF0
FFC00FF8FF0007F8FE0003FCFE0001FCFE0001FEFE0000FEFE0000FEFE0000FFFE00007FFE0000
7FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE0000FEFE0000FEFE00
01FEFE0001FCFE0003FCFF0003FCFF0007F8FF801FF0FFE07FE0FFFFFFC0FEFFFF80FE7FFF00FE
1FFE00FE07F000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000
FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000020367A
A42A>I<FE00F0FE07F0FE1FF0FE3FF0FE7FF0FEFFF0FFFF00FFF800FFF000FFE000FFC000FF80
00FF8000FF0000FF0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00001425
7AA41C>114 D<007FC00003FFFC0007FFFF000FFFFF801FFFFF803F803F803F000F007E000300
7E0000007E0000007E0000007E0000007F0000007FC000003FFC00003FFFC0001FFFF0000FFFFC
0007FFFE0001FFFF00007FFF000007FF8000007F8000001FC000001FC000000FC000000FC04000
0FC060000FC078001F80FC001F80FF807F80FFFFFF007FFFFE001FFFFC0007FFF000007FC0001A
257EA41F>I<01FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001
FC000001FC000001FC0000FFFFFE00FFFFFE00FFFFFE00FFFFFE00FFFFFE0001FC000001FC0000
01FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC00
0001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC
000001FC000001FC000001FC010001FE030001FE0F8000FFFF8000FFFF80007FFE00003FF80000
1FC00019307FAF1D>I<FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE
0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8
FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003
F8FE0007F8FE0007F8FE000FF8FF001FF8FF807FF87FFFFFF87FFFFBF83FFFE3F81FFF83F807FC
03F81D257AA42A>I<7F80003FC03FC0003FC03FC0007F801FE000FF000FF001FE0007F801FC00
03F803FC0003FC07F80001FE07F00000FF0FE000007F1FE000003FBFC000003FFF8000001FFF00
00000FFF00000007FE00000007FC00000003F800000003F800000007FC00000007FE0000000FFF
0000001FFF8000003F9F8000003F1FC000007F0FE00000FE07F00001FC07F80003FC03F80003F8
01FC0007F001FE000FF000FF001FE0007F001FC0003F803FC0003FC07F80001FE0FF00000FF024
2580A425>120 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin @letter /letter where {pop letter} if
%%EndSetup
%%Page: 1 1
bop -5 173 a Fk(The)27 b(design)f(and)g(implementation)e(of)-5
255 y(a)j(language)f(fo)n(r)h(extending)e(applications)-5 370
y Fj(Luiz)18 b(Henrique)e(de)i(Figueiredo,)f(R)o(ober)m(to)f(Ier)o
(usalimschy,)g(W)-6 b(aldemar)17 b(Celes)g(Filho)-5 454 y Fi(T)l(eCGraf{Grup)
q(o)f(de)g(T)l(ecnologia)g(em)g(Computa\030)-22 b(c~)d(ao)16
b(Gr\023)-25 b(a\014ca,)15 b(ITS,)h(PUC-Rio)-5 514 y(Pr)o(\023)-24
b(edio)16 b(do)g(ITS,)g(Rua)g(Marqu)o(^)-24 b(es)15 b(de)i(S~)-25
b(ao)16 b(Vicen)o(te)h(225,)f(22453-900)f(Rio)h(de)h(Janeiro,)e(RJ,)h(Brasil)
-5 574 y Fh({lhf,roberto,celes}@ic)q(ad.puc)q(-rio.br)-5 779
y Fg(Abstract.)26 b Ff(W)l(e)16 b(describ)q(e)g(the)h(design)e(and)h(the)h
(implemen)o(tation)d(of)j Fe(Lua)p Ff(,)f(a)g(simple,)f(y)o(et)i(p)q(o)o(w)o
(erful,)-5 839 y(language)i(for)g(extending)g(applications.)29
b(Although)19 b Fe(Lua)g Ff(is)g(a)h(pro)q(cedural)d(language,)i(it)h(has)f
(data)-5 899 y(description)11 b(facilities,)h(and)g(has)f(b)q(een)h(extensiv)
o(ely)g(used)f(in)h(pro)q(duction)f(for)g(sev)o(eral)h(tasks)f(including)-5
959 y(user)i(con\014guration,)g(general-purp)q(ose)e(data-en)o(try)l(,)i
(description)g(of)h(user)f(in)o(terfaces,)g(description)g(of)-5
1019 y(application)j(ob)s(jects,)g(and)g(storage)g(of)h(structured)e
(graphical)g(meta\014les.)-5 1133 y Fg(Resumo.)26 b Ff(Descrev)o(emos)11
b(o)g(pro)s(jeto)h(e)f(a)h(implemen)o(ta\030)-22 b(c~)d(ao)10
b(de)i Fe(Lua)p Ff(,)g(uma)f(linguagem)f(simples,)h(p)q(or)o(\023)-24
b(em)-5 1193 y(p)q(o)q(derosa,)17 b(para)f(extens~)-25 b(ao)18
b(de)f(aplica\030)-22 b(c~)d(oes.)24 b(Em)o(b)q(ora)16 b(pro)q(cedural,)f
Fe(Lua)j Ff(con)o(t)o(\023)-24 b(em)16 b(mecanismos)g(para)-5
1253 y(descri\030)-22 b(c~)d(ao)20 b(de)g(dados)f(e)i(tem)g(sido)e(largamen)o
(te)g(utilizada)h(em)g(pro)q(du\030)-22 b(c~)d(ao)19 b(para)h
(con\014gura\030)-22 b(c~)d(ao)19 b(p)q(elo)-5 1313 y(usu\023)-25
b(ario,)24 b(en)o(trada)e(de)i(dados,)g(descri\030)-22 b(c~)d(ao)23
b(de)h(in)o(terfaces,)g(descri\030)-22 b(c~)d(ao)23 b(de)h(ob)s(jetos)f(da)h
(aplica\030)-22 b(c~)d(ao)23 b(e)-5 1373 y(armazenagem)15 b(de)i
Fd(meta\014les)f Ff(gr\023)-25 b(a\014cos)15 b(estruturados.)-5
1553 y Fg(Intro)r(duction)-5 1638 y Ff(There)k(is)h(increasing)e(demand)g
(for)i(customizable)e(applications.)30 b(As)20 b(applications)e(b)q(ecame)i
(more)-5 1698 y(complex,)k(customization)e(with)g(simple)g(parameters)f(b)q
(ecame)i(imp)q(ossible:)32 b(users)22 b(no)o(w)f(w)o(an)o(t)h(to)-5
1758 y(mak)o(e)14 b(con\014guration)e(decisions)g(at)i(execution)g(time;)h
(users)d(also)h(w)o(an)o(t)g(to)i(write)e(macros)g(and)g(scripts)-5
1817 y(to)18 b(increase)d(pro)q(ductivit)o(y)i(\(Ry)o(an)f(1990\).)24
b(Therefore,)16 b(no)o(w)o(ada)o(ys,)e(larger)i(applications)f(almost)i(in-)
-5 1877 y(v)m(ariably)j(carry)g(their)h(o)o(wn)f(con\014guration)e(or)i
(scripting)g(languages)f(for)h(end-user)f(programming.)-5 1937
y(These)g(languages)f(are)h(usually)f(simple,)g(but)h(eac)o(h)g(has)f(its)h
(o)o(wn)g(particular)f(syn)o(tax.)29 b(As)19 b(a)h(conse-)-5
1997 y(quence,)e(users)f(ha)o(v)o(e)g(to)h(learn)f(\(and)h(dev)o(elop)q(ers)f
(ha)o(v)o(e)g(to)h(design,)f(implemen)o(t)g(and)g(debug\))g(a)h(new)-5
2056 y(language)e(for)g(eac)o(h)g(application.)-5 2141 y(Our)c(\014rst)g(exp)
q(erience)h(with)g(a)g(proprietary)e(scripting)g(language)h(arose)g(in)g(a)h
(data-en)o(try)f(application,)-5 2201 y(for)23 b(whic)o(h)f(a)h(v)o(ery)g
(simple)f(declarativ)o(e)h(language)f(w)o(as)g(designed)g
(\(Figueiredo{Souza{Gattass{)-5 2261 y(Co)q(elho)h(1992\).)41
b(\(Data-en)o(try)23 b(is)f(an)h(area)f(where)h(user)f(de\014ned)g(actions)g
(are)g(esp)q(ecially)h(needed)-5 2320 y(b)q(ecause)13 b(pre-co)q(ded)e(v)m
(alidation)i(tests)g(can)f(hardly)g(b)q(e)h(adequate)f(for)h(all)f
(applications.\))20 b(When)12 b(users)-5 2380 y(b)q(egan)i(to)g(demand)f
(increasingly)f(more)h(p)q(o)o(w)o(er)g(in)g(this)g(language,)h(w)o(e)f
(decided)h(that)g(a)g(more)f(general)-5 2440 y(approac)o(h)i(w)o(as)h(needed)
h(and)f(started)g(the)h(design)f(of)h(a)g(general-purp)q(ose)d(em)o(b)q
(edded)i(language.)21 b(A)o(t)-5 2500 y(the)16 b(same)f(time,)g(another)g
(declarativ)o(e)g(language)f(w)o(as)h(b)q(eing)g(added)g(to)h(a)f(di\013eren)
o(t)g(application)f(for)-5 2560 y(data)h(description.)k(Therefore,)14
b(w)o(e)h(decided)e(to)i(merge)f(the)h(t)o(w)o(o)f(languages)f(in)o(to)h
(one,)g(and)g(designed)-5 2619 y Fe(Lua)19 b Ff(to)g(b)q(e)g(a)g(pro)q
(cedural)f(language)g(with)h(data)f(description)g(facilities.)29
b Fe(Lua)18 b Ff(has)h(since)f(outgro)o(wn)-5 2679 y(its)f(original)e(ro)q
(ots)h(and)g(is)g(b)q(eing)g(used)g(in)g(sev)o(eral)g(other)g(industrial)f
(pro)s(jects.)-5 2764 y(This)h(pap)q(er)g(describ)q(es)f(the)i(design)f
(decisions)f(and)h(the)g(details)g(of)h(our)f(implemen)o(tation)e(of)j
Fe(Lua)p Ff(.)-5 2883 y Fc(T)l(eCGraf/ICAD)1674 b(1)p eop
%%Page: 2 2
bop -5 163 a Fg(Extension)20 b(languages)-5 248 y Ff(The)d(use)g(of)g
(languages)f(for)g(extending)h(applications)f(is)g(no)o(w)h(recognized)f(as)g
(an)h(imp)q(ortan)o(t)f(design)-5 308 y(tec)o(hnique:)k(it)13
b(allo)o(ws)f(a)h(cleaner)f(design)g(for)h(the)g(application)f(and)g(it)h
(pro)o(vides)f(con\014guration)f(b)o(y)i(the)-5 367 y(user.)26
b(Because)18 b(most)f(extension)h(languages)f(are)g(simple,)g(sp)q(ecialized)
h(to)g(a)g(task,)h(they)f(ha)o(v)o(e)g(b)q(een)-5 427 y(called)d(\\little)h
(languages")d(\(Ben)o(tley)j(1986;)f(V)l(ald)o(\023)-24 b(es)15
b(1991\),)g(in)g(con)o(trast)f(to)i(the)f(\\big",)g(mainstream)-5
487 y(languages,)k(in)h(whic)o(h)e(applications)h(are)g(written.)32
b(This)19 b(distinction)f(is)i(not)f(so)h(sharp)e(no)o(w)o(ada)o(ys,)-5
547 y(since)f(a)g(ma)s(jor)f(part)g(of)h(sev)o(eral)g(applications)e(is)i
(actually)g(written)g(using)f(an)g(extension)h(language.)-5
607 y(Extension)f(languages)g(come)g(in)g(sev)o(eral)g(\015a)o(v)o(ors:)-5
741 y Fb(\017)25 b Fi(con\014guration)d(languages)r Ff(:)34
b(for)23 b(selecting)g(preferences,)g(usually)g(implemen)o(ted)e(as)i
(parameter)45 801 y(lists)13 b(in)f(command)g(lines)g(or)g(as)h(v)m
(ariable-v)m(alue)f(pairs)g(read)g(from)g(con\014guration)g(\014les)g
(\(e.g.,)i(DOS's)45 861 y Fh(config.sys)p Ff(,)k(MS-Windo)o(ws')c
Fh(.ini)j Ff(\014les,)f(X11)h(resource)e(\014les,)h(Motif)t('s)g(UIL)h
(\014les\);)-5 930 y Fb(\017)25 b Fi(scripting)19 b(languages)r
Ff(:)29 b(for)20 b(automating)f(tasks,)i(with)g(limited)e(\015o)o(w)h(con)o
(trol,)g(suc)o(h)g(as)g(the)g(ones)45 990 y(used)c(in)g(DOS's)g(batc)o(h)f
(\014les)h(or)g(in)h(the)f(v)m(arious)g(Unix)h(shells;)-5 1060
y Fb(\017)25 b Fi(macro)15 b(languages)r Ff(:)21 b(also)15
b(for)h(automating)g(tasks,)g(but)g(usually)f(only)h(as)f(a)i(sequence)f(of)g
(primitiv)o(e)45 1120 y(op)q(erations,)f(with)i(no)f(\015o)o(w)g(con)o(trol;)
-5 1190 y Fb(\017)25 b Fi(em)o(b)q(edded)20 b(languages)r Ff(:)29
b(for)21 b(extending)f(applications)f(with)i(user)f(de\014ned)g(functions)g
(based)g(on)45 1249 y(primitiv)o(es)h(pro)o(vided)g(b)o(y)h(the)g
(applications.)38 b(These)22 b(languages)f(are)h(usually)g(quite)g(p)q(o)o(w)
o(erful,)45 1309 y(b)q(eing)16 b(simpli\014ed)f(v)m(arian)o(ts)g(of)i
(mainstream)e(programming)e(languages)i(suc)o(h)h(as)g(LISP)g(and)g(C.)-5
1459 y(What)21 b(mak)o(es)f(em)o(b)q(edded)f(languages)g(di\013eren)o(t)h
(from)g(standalone)f(languages)g(is)h(that)h(em)o(b)q(edded)-5
1518 y(languages)c(only)i(w)o(ork)e Fd(emb)m(e)m(dde)m(d)k
Ff(in)d(a)h(host)f(clien)o(t,)g(called)g(the)h Fd(emb)m(e)m(dding)h
Ff(program.)26 b(Moreo)o(v)o(er,)-5 1578 y(the)e(host)e(program)f(can)i
(usually)f(pro)o(vide)g(domain-sp)q(eci\014c)f(extensions)h(to)i(the)f(em)o
(b)q(edded)f(lan-)-5 1638 y(guage,)16 b(th)o(us)f(creating)h(a)g(v)o(ersion)f
(of)i(the)f(em)o(b)q(edded)f(language)h(customized)f(for)h(its)g(o)o(wn)g
(purp)q(oses,)-5 1698 y(p)q(ossibly)g(b)o(y)h(pro)o(viding)f(higher)g(lev)o
(el)h(abstractions.)22 b(F)l(or)16 b(this,)h(an)g(em)o(b)q(edded)f(language)g
(has)h(b)q(oth)-5 1758 y(a)h(syn)o(tax)f(for)h(its)f(o)o(wn)g(programs)e(and)
i(an)h(application)e(program)g(in)o(terface)h(\(API\))i(for)e(in)o(terfacing)
-5 1817 y(with)i(hosts.)30 b(Th)o(us,)18 b(unlik)o(e)g(simpler)g(extension)h
(languages,)f(whic)o(h)h(are)f(used)h(to)g(supply)f(parame-)-5
1877 y(ter)i(v)m(alues)g(and)f(sequences)h(of)g(actions)f(to)i(hosts,)f
(there)f(is)h(a)g(t)o(w)o(o-w)o(a)o(y)e(comm)o(unication)g(b)q(et)o(w)o(een)
-5 1937 y(em)o(b)q(edded)d(languages)f(and)i(host)f(programs.)20
b(Note)c(that)h(the)f(application)e(programmer)g(in)o(terfaces)-5
1997 y(with)j(an)g(em)o(b)q(edded)f(language)g(in)h(the)g(mainstream)f
(language)g(used)g(for)h(host)g(programs,)e(whereas)-5 2056
y(the)i(user)f(in)o(terfaces)f(with)i(the)g(application)e(using)g(solely)i
(the)f(em)o(b)q(edded)g(language.)-5 2141 y(LISP)e(has)f(alw)o(a)o(ys)f(b)q
(een)i(a)g(p)q(opular)e(c)o(hoice)h(for)h(extension)f(languages,)g(for)g(its)
h(simple,)f(easily)g(parsed)-5 2201 y(syn)o(tax)j(and)g(built-in)f
(extensibilit)o(y)h(\(Bec)o(kman)g(1991;)g(Nahab)q(o)q(o\).)22
b(F)l(or)16 b(instance,)f(a)i(ma)s(jor)e(part)h(of)-5 2261
y(Emacs)h(is)g(actually)g(written)h(in)f(its)g(o)o(wn)g(v)m(arian)o(t)g(of)h
(LISP;)f(sev)o(eral)f(other)h(text)i(editors)e(follo)o(w)g(the)-5
2320 y(same)e(path.)22 b(Ho)o(w)o(ev)o(er,)15 b(LISP)h(cannot)f(b)q(e)h
(called)g(user-friendly)e(when)h(it)h(comes)g(to)g(customization.)-5
2380 y(Neither)f(can)f(C)g(and)g(the)g(shell)g(languages;)f(the)i(latter)f
(ev)o(en)h(ha)o(v)o(e)e(a)i(more)e(complicated,)h(unfamiliar)-5
2440 y(syn)o(tax.)-5 2525 y(One)g(of)g(the)h(fundamen)o(tal)d(decisions)h
(made)g(in)h(the)g(design)f(of)h Fe(Lua)g Ff(w)o(as)f(that)i(it)f(should)f
(ha)o(v)o(e)g(a)h(clean)-5 2584 y(but)d(familiar)f(syn)o(tax:)20
b(w)o(e)11 b(quic)o(kly)g(settled)h(for)f(a)g(simpli\014ed)f(P)o(ascal-lik)o
(e)f(syn)o(tax.)20 b(W)l(e)12 b(a)o(v)o(oided)e(a)i(syn-)-5
2644 y(tax)j(based)f(on)g(LISP)g(or)g(C)h(b)q(ecause)f(it)h(could)f(b)q(e)g
(discouraging)f(to)h(outsiders)f(or)h(non-programmer)o(s.)-5
2704 y(Th)o(us,)22 b Fe(Lua)f Ff(is)h(primarily)d(a)j(pro)q(cedural)e
(language.)37 b(Nev)o(ertheless,)22 b(as)g(already)f(men)o(tioned,)g
Fe(Lua)-5 2764 y Ff(acquired)16 b(data)h(description)e(facilities)h(to)h
(increase)e(its)i(expression)e(p)q(o)o(w)o(er.)-5 2883 y Fc(T)l(eCGraf/ICAD)
1674 b(2)p eop
%%Page: 3 3
bop -5 163 a Fg(Lua)19 b(concepts)-5 248 y Fe(Lua)c Ff(is)g(a)g(general)g
(purp)q(ose)f(em)o(b)q(edded)g(programming)e(language)i(designed)h(to)g(supp)
q(ort)f(pro)q(cedural)-5 308 y(programming)k(with)i(data)h(description)e
(facilities.)34 b(Being)21 b(an)f(em)o(b)q(edded)f(language,)i
Fe(Lua)f Ff(has)g(no)-5 367 y(notion)e(of)g(a)h(\\main")e(program;)g(it)h
(only)g(w)o(orks)f(em)o(b)q(edded)g(in)h(a)h(host)e(clien)o(t)h(\()p
Fe(Lua)h Ff(is)f(pro)o(vided)e(as)-5 427 y(a)i(library)e(of)i(C)f(functions)g
(to)h(b)q(e)g(link)o(ed)f(to)h(host)f(applications\).)24 b(The)17
b(host)h(can)f(in)o(v)o(ok)o(e)g(functions)-5 487 y(to)k(execute)h(a)f(piece)
g(of)g(co)q(de)g(in)g Fe(Lua)p Ff(,)g(can)g(write)f(and)g(read)h
Fe(Lua)f Ff(v)m(ariables,)h(and)f(can)h(register)f(C)-5 547
y(functions)f(to)h(b)q(e)g(called)g(b)o(y)f Fe(Lua)g Ff(co)q(de.)32
b(With)20 b(registered)f(C)h(functions,)f Fe(Lua)h Ff(can)f(b)q(e)h(augmen)o
(ted)-5 607 y(to)h(cop)q(e)f(with)g(rather)g(di\013eren)o(t)f(domains,)g(th)o
(us)g(creating)h(customized)f(programming)e(languages)-5 666
y(sharing)e(a)i(syn)o(tactical)f(framew)o(ork)f(\(Bec)o(kman)i(1991\).)-5
751 y(This)23 b(section)g(con)o(tains)f(a)h(brief)g(description)f(of)h(the)h
(main)e(concepts)h(in)g Fe(Lua)p Ff(.)42 b(Some)23 b(examples)-5
811 y(of)e(actual)f(co)q(de)g(are)g(included,)f(to)i(giv)o(e)f(a)g(\015a)o(v)
o(or)f(of)h(the)h(language.)31 b(A)21 b(precise)e(de\014nition)g(of)i(the)-5
871 y(language)16 b(can)g(b)q(e)h(found)f(in)g(its)g(reference)h(man)o(ual)d
(\(Ierusalimsc)o(h)o(y{Figu)o(eiredo{Celes)f(1994\).)-5 990
y Fe(Syntax)-5 1075 y Ff(As)g(men)o(tioned)d(b)q(efore,)j(w)o(e)f(explicitly)
h(designed)e Fe(Lua)h Ff(to)g(ha)o(v)o(e)g(a)g(simple,)g(familiar)f(syn)o
(tax.)20 b(As)12 b(a)g(con-)-5 1135 y(sequence,)17 b Fe(Lua)f
Ff(supp)q(orts)g(an)g(almost)g(con)o(v)o(en)o(tional)f(set)i(of)g(statemen)o
(ts,)f(with)h(implicit,)f(but)g(expli-)-5 1194 y(citly)g(terminated,)f(blo)q
(c)o(k)h(structure.)21 b(The)15 b(con)o(v)o(en)o(tional)f(statemen)o(ts)h
(include)g(simple)f(assignmen)o(t;)-5 1254 y(con)o(trol)f(structures)g(suc)o
(h)g(as)h Fh(while-do-end)p Ff(,)i Fh(repeat-until)p Ff(,)g
Fh(if-then-elseif-else-en)q(d)p Ff(;)h(and)-5 1314 y(function)22
b(calls.)40 b(Non-con)o(v)o(en)o(tional)20 b(statemen)o(ts)i(include)g(m)o
(ultiple)f(assignmen)o(t;)j(lo)q(cal)e(v)m(ariable)-5 1374
y(declarations,)17 b(whic)o(h)g(can)h(b)q(e)g(placed)f(an)o(ywhere)g(inside)g
(a)h(blo)q(c)o(k;)g(and)f(table)h(constructors,)f(whic)o(h)-5
1434 y(ma)o(y)f(con)o(tain)g(user)f(de\014ned)h(v)m(alidation)g(functions)g
(\(see)g(b)q(elo)o(w\).)22 b(Moreo)o(v)o(er,)15 b(functions)h(in)g
Fe(Lua)g Ff(can)-5 1493 y(tak)o(e)j(a)g(v)m(ariable)f(n)o(um)o(b)q(er)e(of)j
(parameters)e(and)h(can)g(return)g(man)o(y)f(v)m(alues.)28
b(This)18 b(a)o(v)o(oids)f(the)i(need)-5 1553 y(for)e(passing)d(parameters)h
(b)o(y)i(reference)f(when)g(more)f(than)i(one)f(result)g(need)g(to)h(b)q(e)g
(returned.)-5 1673 y Fe(Environment)e(and)h(mo)q(dules)-5 1757
y Ff(All)e(statemen)o(ts)e(in)h Fe(Lua)g Ff(are)g(executed)h(in)f(a)g(global)
g(en)o(vironmen)o(t.)19 b(This)12 b(en)o(vironmen)o(t,)g(whic)o(h)g(k)o(eeps)
-5 1817 y(all)j(global)f(v)m(ariables)g(and)g(functions,)g(is)h(initialized)f
(at)h(the)h(b)q(eginning)d(of)i(the)h(em)o(b)q(edding)d(program)-5
1877 y(and)k(p)q(ersists)f(un)o(til)g(its)h(end.)23 b(The)17
b(global)f(en)o(vironmen)o(t)f(can)i(b)q(e)g(manipulated)f(b)o(y)g
Fe(Lua)h Ff(co)q(de)h(or)e(b)o(y)-5 1937 y(the)i(em)o(b)q(edding)e(program,)g
(whic)o(h)g(can)i(read)e(and)h(write)h(global)f(v)m(ariables)f(using)h
(functions)f(in)i(the)-5 1997 y(library)d(that)i(implemen)o(ts)e
Fe(Lua)p Ff(.)-5 2081 y(The)20 b(unit)f(of)h(execution)g(of)g
Fe(Lua)f Ff(is)h(called)f(a)h Fd(mo)m(dule)t Ff(.)31 b(A)20
b(mo)q(dule)f(ma)o(y)g(con)o(tain)g(statemen)o(ts)g(and)-5
2141 y(function)f(de\014nitions,)f(and)g(ma)o(y)h(b)q(e)g(in)g(a)g(\014le)g
(or)f(in)h(a)g(string)f(inside)g(the)i(host)e(program.)25 b(When)18
b(a)-5 2201 y(mo)q(dule)g(is)f(executed,)i(\014rst)f(all)f(its)h(functions)g
(and)f(statemen)o(ts)h(are)g(compiled,)f(and)g(the)i(functions)-5
2261 y(added)14 b(to)g(the)h(global)f(en)o(vironmen)o(t;)f(then)h(the)g
(statemen)o(ts)g(are)g(executed)h(in)f(sequen)o(tial)g(order.)20
b(All)-5 2320 y(mo)q(di\014cations)10 b(a)h(mo)q(dule)g(e\013ects)g(on)g(the)
h(global)e(en)o(vironmen)o(t)f(p)q(ersist)i(after)g(its)g(end.)20
b(Those)11 b(include)-5 2380 y(mo)q(di\014cations)17 b(to)h(global)f(v)m
(ariables)g(and)g(de\014nitions)g(of)h(new)g(functions)f(\(a)h(function)f
(de\014nition)g(is)-5 2440 y(actually)g(an)f(assignmen)o(t)f(to)h(a)h(global)
f(v)m(ariable;)f(see)i(b)q(elo)o(w\).)-5 2560 y Fe(Data)g(t)o(yp)q(es)f(and)g
(va)o(riables)-5 2644 y(Lua)22 b Ff(is)f(a)h(dynamically)f(t)o(yp)q(ed)h
(language:)31 b(v)m(ariables)21 b(do)h(not)f(ha)o(v)o(e)h(t)o(yp)q(es;)i
(only)e(v)m(alues)f(do.)38 b(All)-5 2704 y(v)m(alues)16 b(carry)g(their)g(o)o
(wn)g(t)o(yp)q(e.)22 b(Therefore,)16 b(there)g(are)g(no)g(t)o(yp)q(e)h
(de\014nitions)e(in)h(the)h(language.)k(The)-5 2764 y(absence)d(of)h(v)m
(ariable)f(t)o(yp)q(e)g(declarations,)g(apparen)o(tly)f(a)h(minor)f(p)q(oin)o
(t,)h(is)g(actually)h(an)f(imp)q(ortan)o(t)-5 2883 y Fc(T)l(eCGraf/ICAD)1674
b(3)p eop
%%Page: 4 4
bop -5 163 a Ff(factor)20 b(in)f(simplifying)f(the)i(language;)g(it)g(is)f
(frequen)o(tly)h(presen)o(ted)e(as)i(a)f(ma)s(jor)g(feature)g(in)h(man)o(y)-5
223 y(v)m(arian)o(ts)14 b(of)g(t)o(yp)q(ed)h(languages)e(mo)q(di\014ed)h(to)h
(b)q(e)f(used)g(as)g(extension)g(languages.)20 b(Moreo)o(v)o(er,)13
b Fe(Lua)h Ff(has)-5 283 y(garbage)g(collection:)20 b(it)15
b(k)o(eeps)f(trac)o(k)g(of)g(whic)o(h)g(v)m(alues)g(are)g(b)q(eing)g(used)f
(and)h(discards)e(the)j(ones)e(that)-5 343 y(are)k(not.)23
b(This)17 b(a)o(v)o(oids)e(the)j(need)e(for)h(explicit)g(managing)f(memory)g
(allo)q(cation,)h(a)g(ma)s(jor)e(source)i(of)-5 402 y(programming)d(errors.)
20 b(There)c(are)g(sev)o(en)g(basic)g(data)h(t)o(yp)q(es)f(in)g
Fe(Lua)p Ff(:)-5 492 y Fb(\017)25 b Fi(nil)r Ff(:)c(the)c(t)o(yp)q(e)g(of)g
(a)f(single)g(v)m(alue)h(called)f Fh(nil)p Ff(;)-5 552 y Fb(\017)25
b Fi(n)o(um)o(b)q(er)t Ff(:)19 b(\015oating)d(p)q(oin)o(t)g(n)o(um)o(b)q
(ers;)-5 612 y Fb(\017)25 b Fi(string)t Ff(:)c(arra)o(ys)15
b(of)i(c)o(haracters;)-5 671 y Fb(\017)25 b Fi(function)p Ff(:)d(user)15
b(de\014ned)h(functions;)-5 731 y Fb(\017)25 b Fi(Cfunction)p
Ff(:)d(functions)15 b(pro)o(vided)g(b)o(y)h(the)h(host)f(program;)-5
791 y Fb(\017)25 b Fi(userdata)p Ff(:)c(p)q(oin)o(ters)15 b(to)i(host)f
(data;)-5 851 y Fb(\017)25 b Fi(table)s Ff(:)d(asso)q(ciativ)o(e)16
b(arra)o(ys.)-5 966 y Fe(Lua)24 b Ff(pro)o(vides)f(some)g(automatic)h(t)o(yp)
q(e)h(con)o(v)o(ersions.)42 b(A)25 b(string)e(taking)h(part)g(in)g(an)f
(arithmetic)-5 1025 y(op)q(eration)d(is)g(con)o(v)o(erted)g(to)g(a)h(n)o(um)o
(b)q(er,)e(if)h(p)q(ossible.)33 b(Con)o(v)o(ersely)l(,)19 b(whenev)o(er)h(a)g
(n)o(um)o(b)q(er)f(is)h(used)-5 1085 y(when)g(a)g(string)f(is)h(exp)q(ected,)
i(that)e(n)o(um)o(b)q(er)e(is)i(con)o(v)o(erted)f(to)h(a)g(string.)32
b(This)19 b(co)q(ercion)h(is)g(useful)-5 1145 y(b)q(ecause)d(it)f
(simpli\014es)f(programs)f(and)i(a)o(v)o(oids)f(the)i(need)f(for)g(explicit)h
(con)o(v)o(ersion)e(functions.)-5 1230 y(Global)h(v)m(ariables)f(do)h(not)h
(need)f(declaration;)f(only)h(lo)q(cal)h(v)m(ariables)e(do.)21
b(An)o(y)c(v)m(ariable)f(is)g(assumed)-5 1289 y(to)24 b(b)q(e)f(global)f
(unless)g(explicitly)h(declared)f(lo)q(cal.)42 b(Lo)q(cal)23
b(v)m(ariable)g(declarations)e(can)i(b)q(e)g(placed)-5 1349
y(an)o(ywhere)c(inside)f(a)i(blo)q(c)o(k.)31 b(Therefore,)20
b(b)q(ecause)f(only)h(lo)q(cal)f(v)m(ariables)g(are)g(declared,)h(and)f
(these)-5 1409 y(declarations)h(can)h(b)q(e)g(made)f(close)h(to)g(the)h(use)e
(of)i(the)f(v)m(ariable,)g(it)g(is)g(usually)f(simple)g(to)h(decide)-5
1469 y(whether)16 b(a)h(giv)o(en)f(v)m(ariable)g(is)g(lo)q(cal)h(or)f
(global.)-5 1553 y(Before)j(the)g(\014rst)e(assignmen)o(t,)g(the)i(v)m(alue)g
(of)f(a)h(v)m(ariable)f(is)g Fh(nil)p Ff(.)28 b(Therefore,)18
b(there)g(are)g(no)g(unini-)-5 1613 y(tialized)h(v)m(ariables)g(in)g
Fe(Lua)p Ff(,)g(another)g(ma)s(jor)f(source)g(of)i(programming)c(errors.)28
b(Nev)o(ertheless,)20 b(the)-5 1673 y(only)f(v)m(alid)f(op)q(erations)g(on)h
Fh(nil)g Ff(are)f(assignmen)o(t)f(and)h(equalit)o(y)h(test)g(\(the)h(main)d
(prop)q(ert)o(y)h(of)h Fh(nil)-5 1733 y Ff(is)f(to)h(b)q(e)g(di\013eren)o(t)e
(from)h(an)o(y)g(other)g(v)m(alue\).)28 b(Therefore,)18 b(using)f(an)h
(\\uninitialized")f(v)m(ariable)h(in)g(a)-5 1792 y(con)o(text)k(where)f(an)g
(\\actual")g(v)m(alue)g(is)g(needed)f(\(e.g.,)j(an)e(arithmetic)f
(expression\))g(results)g(in)h(an)-5 1852 y(execution)h(error,)g(alerting)f
(the)h(programmer)c(that)k(the)g(v)m(ariable)g(w)o(as)e(not)i(prop)q(erly)f
(initialized.)-5 1912 y(Th)o(us,)c(the)g(purp)q(ose)f(of)i(automatically)f
(initializing)g(v)m(ariables)f(with)h Fh(nil)i Ff(is)e(not)g(to)h(encourage)f
(the)-5 1972 y(programmer)h(to)i(a)o(v)o(oid)g(initializing)f(v)m(ariables,)h
(but)g(rather)f(to)i(enable)e Fe(Lua)h Ff(to)h(signal)e(the)i(use)f(of)-5
2032 y(actually)d(uninitialized)e(v)m(ariables.)-5 2116 y(F)l(unctions)d(are)
i(considered)e(\014rst-class)g(v)m(alues)h(in)h Fe(Lua)p Ff(:)20
b(they)14 b(can)g(b)q(e)g(stored)f(in)g(v)m(ariables,)h(passed)e(as)-5
2176 y(argumen)o(ts)k(to)i(other)g(functions)f(and)g(returned)g(as)g
(results.)25 b(When)17 b(a)h(function)g(in)f Fe(Lua)h Ff(is)f(de\014ned,)-5
2236 y(its)e(b)q(o)q(dy)g(is)f(compiled)f(and)h(stored)g(in)g(a)g(global)g(v)
m(ariable)g(with)g(the)h(giv)o(en)f(name.)20 b Fe(Lua)15 b
Ff(can)f(call)g(\(and)-5 2296 y(manipulate\))i(functions)g(written)g(in)g(b)q
(oth)h Fe(Lua)f Ff(and)g(C;)g(the)h(latter)g(ha)o(v)o(e)f(t)o(yp)q(e)h
Fd(Cfunction)t Ff(.)-5 2380 y(The)j(t)o(yp)q(e)g Fd(user)m(data)h
Ff(is)e(pro)o(vided)f(to)i(allo)o(w)f(arbitrary)f(\()p Fh(void*)p
Ff(\))k(C)d(p)q(oin)o(ters)g(to)h(b)q(e)g(stored)f(in)g Fe(Lua)-5
2440 y Ff(v)m(ariables;)d(its)g(only)g(v)m(alid)h(op)q(erations)e(in)i
Fe(Lua)f Ff(are)g(assignmen)o(t)e(and)i(equalit)o(y)h(test.)-5
2525 y(The)d(t)o(yp)q(e)g Fd(table)g Ff(implemen)o(ts)e(asso)q(ciativ)o(e)h
(arra)o(ys,)g(that)h(is,)g(arra)o(ys)e(that)j(can)e(b)q(e)i(indexed)e(with)h
(b)q(oth)-5 2584 y(n)o(um)o(b)q(ers)20 b(and)h(strings.)37
b(Therefore,)23 b(this)f(t)o(yp)q(e)g(ma)o(y)g(b)q(e)g(used)f(not)i(only)e
(to)i(represen)o(t)d(ordinary)-5 2644 y(arra)o(ys,)j(but)g(also)g(sym)o(b)q
(ol)f(tables,)i(sets,)h(records,)e(etc.)43 b(T)l(o)23 b(represen)o(t)e(a)j
(record,)f Fe(Lua)g Ff(uses)g(the)-5 2704 y(\014eld)15 b(name)g(as)h(an)f
(index.)21 b(The)16 b(language)e(supp)q(orts)h(this)g(represen)o(tation)f(b)o
(y)h(pro)o(viding)f Fh(a.name)i Ff(as)-5 2764 y(syn)o(tactic)h(sugar)e(for)h
Fh(a["name"])p Ff(.)-5 2883 y Fc(T)l(eCGraf/ICAD)1674 b(4)p
eop
%%Page: 5 5
bop -5 163 a Ff(Asso)q(ciativ)o(e)21 b(arra)o(ys)e(are)h(a)h(p)q(o)o(w)o
(erful)e(language)h(construct;)i(man)o(y)e(algorithms)f(are)h(simpli\014ed)e
(to)-5 223 y(the)j(p)q(oin)o(t)f(of)h(trivialit)o(y)f(b)q(ecause)g(the)h
(required)e(data)i(structures)e(and)h(algorithms)e(for)j(searc)o(hing)-5
283 y(them)13 b(are)f(pro)o(vided)f(b)o(y)h(the)h(language)f
(\(Aho{Kerninghan{W)l(ein)o(b)q(erg)o(er)e(1988;)j(Ben)o(tley)g(1988\).)21
b(F)l(or)-5 343 y(example,)c(the)g(core)f(of)h(a)g(program)e(that)i(coun)o
(ts)f(the)h(o)q(ccurrences)f(of)h(eac)o(h)g(w)o(ord)e(in)i(a)g(text)h(can)f
(b)q(e)-5 402 y(written)195 499 y Fh(table[word])27 b(=)g(table[word])g(+)g
(1)-5 583 y Ff(without)22 b(ha)o(ving)f(to)h(searc)o(h)e(the)i(list)g(of)g(w)
o(ords.)36 b(\(Ho)o(w)o(ev)o(er,)22 b(an)g(alphab)q(etically)f(ordered)f(rep)
q(ort)-5 643 y(requires)c(some)f(real)h(w)o(ork,)g(b)q(ecause)g(the)h
(indices)f(in)g(a)g(table)h(are)f(ordered)f(arbitrarily)g(inside)h
Fe(Lua)p Ff(.\))-5 728 y(T)l(ables)g(can)g(b)q(e)h(created)g(in)f(man)o(y)f
(w)o(a)o(ys.)21 b(The)c(simplest)e(w)o(a)o(y)h(corresp)q(onds)e(to)j
(ordinary)e(arra)o(ys:)195 824 y Fh(t)26 b(=)g(@\(100\))-5
909 y Ff(Suc)o(h)12 b(an)g(expression)f(results)g(in)h(a)h(new)f(empt)o(y)g
(table.)21 b(The)12 b(dimension)e(\(100)j(in)f(the)h(example)f(ab)q(o)o(v)o
(e\))-5 969 y(is)j(optional)g(and)g(ma)o(y)f(b)q(e)i(giv)o(en)f(as)g(a)g(hin)
o(t)g(to)h(the)f(initial)g(table)g(size.)22 b(Indep)q(enden)o(tly)14
b(of)i(the)f(initial)-5 1028 y(dimension,)i(all)i(tables)f(in)g
Fe(Lua)h Ff(expand)f(dynamically)f(as)i(needed.)28 b(Th)o(us,)17
b(it)i(is)f(p)q(erfectly)i(v)m(alid)e(to)-5 1088 y(refer)e(to)h
Fh(t[200])h Ff(or)e(ev)o(en)g(to)h Fh(t["day"])p Ff(.)-5 1173
y(There)f(are)g(t)o(w)o(o)g(alternativ)o(e)g(syn)o(taxes)g(for)g(creating)g
(tables)g(without)g(explicitly)g(\014lling)f(eac)o(h)h(en)o(try:)-5
1233 y(one)f(for)h(lists)e(\()p Fh(@[])p Ff(\))j(and)e(one)g(for)g(records)f
(\()p Fh(@{})p Ff(\).)23 b(F)l(or)14 b(instance,)h(it)h(is)f(m)o(uc)o(h)f
(easier)g(to)i(create)g(a)f(list)-5 1293 y(b)o(y)h(pro)o(viding)f(its)h
(elemen)o(ts,)g(as)g(in)195 1389 y Fh(t)26 b(=)g(@["red",)i("green",)f
("blue",)g(3])-5 1474 y Ff(than)17 b(with)f(the)h(equiv)m(alen)o(t)f
(explicit)h(co)q(de)195 1559 y Fh(t)26 b(=)g(@\(\))195 1619
y(t[1])g(=)h("red")195 1679 y(t[2])f(=)h("green")195 1739 y(t[3])f(=)h
("blue")195 1799 y(t[4])f(=)h(3)-5 1883 y Ff(Moreo)o(v)o(er,)15
b(it)i(is)f(p)q(ossible)f(to)i(pro)o(vide)e(user)h(functions)g(when)g
(creating)g(lists)g(and)g(records,)f(as)h(in)195 1969 y Fh(t)26
b(=)g(@colors["red",)i("green",)g("blue",)f("yellow"])195 2029
y(t)f(=)g(@employee{name="john)j(smith",)f(age=34})-5 2114
y Ff(Here,)15 b Fh(colors)g Ff(and)f Fh(employee)h Ff(are)f(user)f(functions)
h(that)g(are)g(automatically)g(called)g(after)g(the)h(table)-5
2173 y(is)i(created.)22 b(Suc)o(h)16 b(functions)g(can)h(b)q(e)g(used)f(to)h
(c)o(hec)o(k)f(\014eld)h(v)m(alues,)f(to)h(create)g(default)g(\014elds,)f(or)
g(for)-5 2233 y(an)o(y)g(other)h(side-e\013ect.)k(Th)o(us,)15
b(the)i(co)q(de)g(for)f(the)h Fh(employee)h Ff(record)d(is)h(equiv)m(alen)o
(t)h(to:)195 2320 y Fh(t)26 b(=)g(@\(\))195 2380 y(t.name)h(=)f("john)h
(smith")195 2440 y(t.age)53 b(=)26 b(34)195 2500 y(employee\(t\))-5
2584 y Ff(Note)17 b(that,)g(ev)o(en)f(though)f Fe(Lua)h Ff(do)q(es)g(not)g
(ha)o(v)o(e)f(t)o(yp)q(e)i(declarations,)d(the)j(p)q(ossibilit)o(y)d(of)j(ha)
o(ving)e(user)-5 2644 y(functions)c(called)g(automatically)g(after)g(table)h
(creation)e(actually)i(pro)o(vides)d Fe(Lua)i Ff(with)h(user)e(con)o(trolled)
-5 2704 y Fd(typ)m(e)21 b(c)m(onstructors)p Ff(.)30 b(This)19
b(non-con)o(v)o(en)o(tional)d(construct)j(is)f(a)h(v)o(ery)g(p)q(o)o(w)o
(erful)f(feature,)h(and)g(is)g(the)-5 2764 y(expression)c(of)i(declarativ)o
(e)f(programming)e(using)h Fe(Lua)p Ff(.)-5 2883 y Fc(T)l(eCGraf/ICAD)1674
b(5)p eop
%%Page: 6 6
bop -5 163 a Fe(The)17 b(application)h(p)o(rogram)c(interface)-5
248 y Ff(The)24 b(library)e(that)i(implemen)o(ts)e Fe(Lua)h
Ff(has)g(an)g(API,)h(i.e.,)h(a)e(set)h(of)g(C)g(functions)f(for)g(in)o
(terfacing)-5 308 y Fe(Lua)h Ff(with)f(host)h(programs)d(\(there)j(are)f
(appro)o(ximately)f(30)i(suc)o(h)e(functions\).)43 b(These)24
b(functions)-5 367 y(c)o(haracterize)16 b Fe(Lua)h Ff(as)f(an)h(em)o(b)q
(edded)f(language,)f(and)i(handle)f(the)h(follo)o(wing)e(tasks:)23
b(executing)17 b Fe(Lua)-5 427 y Ff(co)q(de)25 b(con)o(tained)e(in)h(a)g
(\014le)g(or)g(in)g(a)g(string;)j(con)o(v)o(erting)c(v)m(alues)h(b)q(et)o(w)o
(een)g(C)g(and)f Fe(Lua)p Ff(;)28 b(reading)-5 487 y(and)17
b(writing)g Fe(Lua)h Ff(ob)s(jects)g(con)o(tained)f(in)g(global)g(v)m
(ariables;)g(calling)g Fe(Lua)h Ff(functions;)f(registering)g(C)-5
547 y(functions)i(to)h(b)q(e)g(called)f(b)o(y)g Fe(Lua)p Ff(,)h(including)e
(error)g(handlers.)29 b(A)20 b(simple)e Fe(Lua)h Ff(in)o(terpreter)f(can)i(b)
q(e)-5 607 y(written)d(as)f(follo)o(ws:)195 668 y Fh(#include)27
b("lua.h")195 728 y(int)f(main\(void\))195 787 y({)221 847
y(char)g(s[1000];)221 907 y(while)h(\(gets\(s\)\))273 967 y
(lua_dostring\(s\);)221 1026 y(return)g(0;)195 1086 y(})-5
1171 y Ff(This)15 b(simple)f(in)o(terpreter)g(can)h(b)q(e)h(augmen)o(ted)e
(with)i(domain)e(sp)q(eci\014c)h(functions)g(written)g(in)g(C)g(and)-5
1231 y(made)h(a)o(v)m(ailable)g(to)h Fe(Lua)g Ff(with)f(the)h(API)g(function)
f Fh(lua_register)p Ff(.)25 b(Extension)16 b(functions)g(follo)o(w)g(a)-5
1290 y(proto)q(col)h(to)f(receiv)o(e)h(and)f(return)f(v)m(alues)h(to)h
Fe(Lua)p Ff(.)-5 1402 y Fe(Prede\014ned)f(functions)h(and)f(lib)o(ra)o(ries)
-5 1486 y Ff(The)e(set)g(of)h(prede\014ned)d(functions)h(in)h
Fe(Lua)g Ff(is)f(small)g(but)h(p)q(o)o(w)o(erful.)20 b(Most)13
b(of)i(them)e(pro)o(vide)g(features)-5 1546 y(that)20 b(allo)o(w)e(some)g
(degree)g(of)h(re\015exivit)o(y)g(in)g(the)g(language.)28 b(Suc)o(h)17
b(features)i(cannot)f(b)q(e)i(sim)o(ulated)-5 1606 y(with)c(the)h(rest)f(of)g
(the)h(language)e(nor)g(with)h(the)h(standard)d(API.)j(The)f(prede\014ned)e
(functions)i(handle)-5 1666 y(the)j(follo)o(wing)d(tasks:)25
b(executing)19 b(a)f Fe(Lua)f Ff(mo)q(dule)h(con)o(tained)f(in)g(a)h(\014le)g
(or)f(string;)h(en)o(umerating)e(all)-5 1726 y(\014elds)g(of)h(a)f(table;)g
(en)o(umerating)f(all)h(global)g(v)m(ariables;)f(t)o(yp)q(e)i(querying)f(and)
g(con)o(v)o(ersion.)-5 1810 y(The)j(libraries,)f(on)g(the)i(other)e(hand,)h
(pro)o(vide)f(useful)g(routines)g(whic)o(h)g(are)h(implemen)o(ted)e(directly)
-5 1870 y(through)22 b(the)h(standard)e(API.)h(Therefore,)i(they)f(are)f(not)
h(necessary)e(to)i(the)g(language,)g(and)f(are)-5 1930 y(pro)o(vided)14
b(as)g(separate)h(C)g(mo)q(dules,)f(whic)o(h)g(can)h(b)q(e)g(link)o(ed)f(to)h
(applications)f(as)h(needed.)20 b(Curren)o(tly)l(,)-5 1990
y(there)c(are)g(libraries)d(for)j(string)f(manipulation,)f(mathematical)h
(functions,)g(and)g(input)g(and)g(output.)-5 2101 y Fe(P)o(ersistence)-5
2186 y Ff(The)k(en)o(umeration)e(functions)h(can)g(b)q(e)i(used)e(to)h(pro)o
(vide)e(p)q(ersistency)i(of)g(the)g(global)f(en)o(vironmen)o(t)-5
2245 y(within)e Fe(Lua)p Ff(,)h(i.e.,)f(it)h(is)f(p)q(ossible)f(to)i(write)g
Fe(Lua)f Ff(co)q(de)h(that)g(writes)f Fe(Lua)g Ff(co)q(de)h(that,)g(when)f
(executed,)-5 2305 y(restores)i(the)h(v)m(alues)g(of)g(all)g(global)f(v)m
(ariables.)28 b(W)l(e)20 b(no)o(w)e(sho)o(w)g(some)g(w)o(a)o(ys)g(to)h(store)
g(and)f(retriev)o(e)-5 2365 y(v)m(alues)k(in)g Fe(Lua)p Ff(,)h(using)e(a)h
(text)h(\014le)f(written)g(in)g(the)g(language)f(itself)i(as)e(the)i(storage)
e(media.)38 b(T)l(o)-5 2425 y(restore)16 b(v)m(alues)g(sa)o(v)o(ed)g(in)g
(this)g(w)o(a)o(y)l(,)g(it)h(is)f(enough)f(to)i(execute)h(the)f(output)f
(\014le.)-5 2509 y(T)l(o)h(store)f(a)g(single)g(v)m(alue)h(with)f(a)h(name,)e
(the)i(follo)o(wing)e(co)q(de)i(is)f(enough:)195 2584 y Fh(function)27
b(store\(name,)h(value\))247 2644 y(write\(name)g(..)e('='\))247
2704 y(write_value\(value\))195 2764 y(end)-5 2883 y Fc(T)l(eCGraf/ICAD)1674
b(6)p eop
%%Page: 7 7
bop -5 163 a Ff(Here,)15 b(\\)p Fh(..)p Ff(")22 b(is)15 b(the)g(string)e
(concatenation)i(op)q(erator)f(and)g Fh(write)i Ff(is)e(a)h(library)e
(function)i(for)f(output.)-5 223 y(The)j(function)g Fh(write_value)i
Ff(outputs)e(a)g(suitable)f(represen)o(tation)f(of)j(a)f(v)m(alue)g(based)f
(on)h(its)g(t)o(yp)q(e,)-5 283 y(using)f(a)g(string)g(returned)f(b)o(y)h(the)
h(prede\014ned)e(function)h Fh(type)p Ff(:)195 359 y Fh(function)27
b(write_value\(value\))247 419 y(local)g(t)f(=)g(type\(value\))351
478 y(if)h(t)f(=)h('nil')105 b(then)27 b(write\('nil'\))247
538 y(elseif)g(t)f(=)h('number')g(then)g(write\(value\))247
598 y(elseif)g(t)f(=)h('string')g(then)g(write\('"')g(..)g(value)g(..)f
('"'\))247 658 y(end)195 718 y(end)-5 802 y Ff(Storing)16 b(tables)g(is)g(a)h
(little)g(more)e(complex.)22 b(First,)15 b Fh(write_value)j
Ff(is)e(augmen)o(ted)g(with)247 888 y Fh(elseif)27 b(t)f(=)h('table')g(then)f
(write_record\(value\))-5 972 y Ff(Assuming)13 b(that)h(tables)g(are)f(b)q
(eing)h(used)f(as)h(records)e(\(i.e.,)j(there)f(are)f(no)h(circular)f
(references)g(and)g(all)-5 1032 y(indices)h(are)h(iden)o(ti\014ers\),)f(the)h
(v)m(alue)h(of)f(a)g(table)g(can)g(b)q(e)g(written)g(directly)g(with)g(table)
g(constructors:)195 1110 y Fh(function)27 b(write_record\(t\))247
1169 y(local)g(i,)f(v)h(=)f(next\(t,)h(nil\))79 b(--)27 b("next")g
(enumerates)g(the)g(fields)g(of)f(t)247 1229 y(write\('@{'\))446
b(--)27 b(starts)g(constructor)247 1289 y(while)g(i)f(do)299
1349 y(store\(i,v\))299 1408 y(i,)h(v)f(=)g(next\(t,)h(i\))299
1468 y(if)g(i)f(then)h(write\(',)g('\))f(end)247 1528 y(end)247
1588 y(write\('}'\))472 b(--)27 b(closes)g(constructor)195
1648 y(end)-5 1810 y Fg(Implementation)-5 1894 y Ff(Extension)22
b(languages)f(are)g(alw)o(a)o(ys)g(in)o(terpreted,)i(in)e(one)h(w)o(a)o(y)g
(or)f(another,)i(b)o(y)f(the)g(application.)-5 1954 y(Simple)e(extension)h
(languages)f(can)h(b)q(e)g(in)o(terpreted)f(directly)h(from)g(source)f(co)q
(de.)36 b(On)21 b(the)g(other)-5 2014 y(hand,)j(em)o(b)q(edded)e(languages)f
(are)i(usually)f(p)q(o)o(w)o(erful)g(programming)e(languages,)j(with)g
(complex)-5 2074 y(syn)o(tax)11 b(and)g(seman)o(tics.)18 b(A)12
b(more)e(e\016cien)o(t)g(implemen)o(tation)f(tec)o(hnique)i(for)g(em)o(b)q
(edded)f(languages)f(is)-5 2133 y(to)k(design)f(a)h Fd(virtual)h(machine)g
Ff(suited)e(to)i(the)f(needs)f(of)h(the)g(language,)g(compile)f(extension)g
(programs)-5 2193 y(in)o(to)23 b Fd(byte)m(c)m(o)m(des)j Ff(for)d(this)h(mac)
o(hine,)f(and)g(then)h(sim)o(ulate)e(the)i(virtual)f(mac)o(hine)f(b)o(y)h(in)
o(terpreting)-5 2253 y(b)o(yteco)q(des)e(\(Betz)i(1988,)f(1991;)h(F)l(ranks)c
(1991\).)36 b(W)l(e)21 b(ha)o(v)o(e)g(c)o(hosen)f(this)g(h)o(ybrid)g(arc)o
(hitecture)g(for)-5 2313 y(implemen)o(ting)12 b Fe(Lua)p Ff(;)i(it)f(has)g
(the)h(follo)o(wing)e(adv)m(an)o(tages)h(o)o(v)o(er)g(direct)g(in)o
(terpretation)f(of)i(source)f(co)q(de:)-5 2395 y Fb(\017)25
b Ff(b)q(ecause)19 b(lexical)g(and)g(syn)o(tactical)g(analysis)f(are)h(done)f
(only)h(once,)h(p)q(ossibly)e(using)g(an)h(external)45 2455
y(parser)j(b)q(efore)i(the)g(actual)g(em)o(b)q(edding,)g(simple)e(errors)g
(are)i(iden)o(ti\014ed)e(early)l(,)j(resulting)d(in)i(a)45
2515 y(shorter)15 b(dev)o(elopmen)o(t)h(cycle)h(and)f(faster)g(execution;)-5
2584 y Fb(\017)25 b Ff(if)18 b(an)g(external)g(compiler)f(is)h(used,)f(there)
h(is)g(the)g(p)q(ossibilit)o(y)f(of)h(pro)o(viding)e(extension)i(programs)45
2644 y(in)f(b)o(yteco)q(de)g(form)f(only)l(,)h(i.e.,)f(pre-compiled,)f
(resulting)h(in)g(faster)h(loading,)f(safer)g(en)o(vironmen)o(ts)45
2704 y(and)e(smaller)e(run-time)h(supp)q(ort)g(\(ho)o(w)o(ev)o(er,)h(linking)
f(sev)o(eral)g(pre-compiled)f(extension)i(programs)45 2764
y(can)i(b)q(e)h(a)g(di\016cult)e(task\).)-5 2883 y Fc(T)l(eCGraf/ICAD)1674
b(7)p eop
%%Page: 8 8
bop -5 163 a Ff(This)18 b(arc)o(hitecture)g(w)o(as)g(pioneered)g(in)h
(Smalltalk)f(\(Goldb)q(erg{Robson)e(1983;)k(Budd)e(1987\))h(\(from)-5
223 y(whic)o(h)k(the)h(term)f Fd(byte)m(c)m(o)m(des)j Ff(w)o(as)d(b)q(orro)o
(w)o(ed\))f(and)h(also)g(used)f(in)i(the)g(successful)e(UCSD)i(P)o(ascal)-5
283 y(system)e(based)g(on)f(P-co)q(de)h(\(Clark{Ko)q(ehler)g(1982\).)39
b(In)22 b(these)g(systems,)h(b)o(yteco)q(des)f(for)g(virtual)-5
343 y(mac)o(hines)14 b(w)o(ere)g(used)h(b)q(oth)g(for)g(reducing)e(complexit)
o(y)i(and)g(for)g(increasing)e(p)q(ortabilit)o(y)l(.)21 b(This)14
b(path)-5 402 y(w)o(as)i(also)g(used)g(in)g(p)q(orting)g(the)g(BCPL)h
(compiler)f(\(Ric)o(hards{Whitb)o(y-S)o(trev)o(ens)d(1980\).)-5
487 y(Co)q(de)19 b(for)e(compilation)g(of)h(extension)g(programs)e(can)i(b)q
(e)g(built)g(with)g(standard)f(to)q(ols,)h(suc)o(h)f(as)h Fe(lex)-5
547 y Ff(and)e Fe(y)o(acc)g Ff(\(Levine{Mason{Bro)o(wn)e(1992\).)22
b(The)16 b(existence)h(of)f(go)q(o)q(d)g(to)q(ols)g(for)g(compiler)f
(construc-)-5 607 y(tion,)25 b(whic)o(h)c(b)q(ecame)i(widely)g(a)o(v)m
(ailable)f(in)h(the)g(late)g(sev)o(en)o(ties,)h(w)o(as)e(the)h(main)f(reason)
g(for)h(the)-5 666 y(sprouting)16 b(of)h(sev)o(eral)f(little)i(languages,)e
(sp)q(ecially)h(in)g(Unix)g(en)o(vironmen)o(ts.)22 b(Our)16
b(implemen)o(tation)-5 726 y(of)i Fe(Lua)f Ff(uses)g Fe(y)o(acc)h
Ff(for)f(syn)o(tactical)g(analysis.)24 b(Initially)l(,)17 b(w)o(e)g(wrote)h
(the)g(lexical)f(analyzer)h(using)e Fe(lex)p Ff(.)-5 786 y(After)21
b(p)q(erformance)e(pro\014les)f(with)i(pro)q(duction)f(programs,)g(w)o(e)g
(detected)i(that)g(this)e(mo)q(dule)h(w)o(as)-5 846 y(resp)q(onsible)e(for)h
(almost)g(half)g(of)g(the)h(time)f(required)f(for)h(loading)g(and)f
(executing)i(extension)f(pro-)-5 905 y(grams.)24 b(W)l(e)18
b(then)g(rewrote)f(this)h(mo)q(dule)f(directly)g(in)h(C;)f(the)h(new)g
(lexical)g(analyzer)f(is)g(more)g(than)-5 965 y(t)o(wice)g(as)f(fast)h(as)f
(the)h(old)f(one.)-5 1135 y Fe(Lua's)g(virtual)j(machine)-5
1219 y Ff(The)h(virtual)f(mac)o(hine)f(used)h(in)g(our)g(implemen)o(tation)f
(of)i Fe(Lua)f Ff(is)g(a)h Fd(stack)h(machine)p Ff(.)32 b(This)19
b(means)-5 1279 y(that)e(it)f(do)q(es)g(not)g(ha)o(v)o(e)g(random)e(access)i
(memory:)21 b(all)16 b(temp)q(orary)f(v)m(alues)h(and)g(lo)q(cal)g(v)m
(ariables)f(are)-5 1339 y(k)o(ept)j(in)e(a)i(stac)o(k.)24 b(Moreo)o(v)o(er,)
15 b(it)j(do)q(es)f(not)g(ha)o(v)o(e)g(general)f(purp)q(ose)g(registers,)g
(only)h(sp)q(ecial)g(con)o(trol)-5 1399 y(registers,)f(whic)o(h)g(con)o(trol)
h(the)g(stac)o(k)g(and)g(the)g(execution)h(of)f(programs.)22
b(These)17 b(registers)f(are)h Fd(b)m(ase)-5 1458 y(of)i(stack)p
Ff(,)d Fd(top)j(of)f(stack)f Ff(and)f Fd(pr)m(o)m(gr)m(am)k(c)m(ounter)p
Ff(.)-5 1543 y(Programs)j(for)h(the)g(virtual)g(mac)o(hine)f(are)h(sequences)
g(of)h(instructions,)f(called)g Fd(byte)m(c)m(o)m(des)p Ff(.)48
b(The)-5 1603 y(execution)24 b(of)g(programs)d(is)i(ac)o(hiev)o(ed)g(b)o(y)g
(in)o(terpreting)f(b)o(yteco)q(des,)k(eac)o(h)d(corresp)q(onding)e(to)j(an)-5
1663 y(instruction)16 b(that)g(op)q(erates)h(on)f(the)h(top)f(p)q(ortion)g
(of)h(the)g(stac)o(k.)22 b(F)l(or)15 b(example,)h(the)h(statemen)o(t)195
1777 y Fh(a)26 b(=)g(b)g(+)h(f\(c\))-5 1862 y Ff(is)16 b(compiled)g(in)o(to)
195 1962 y Fh(PUSHGLOBAL)80 b("b")195 2022 y(PUSHGLOBAL)g("f")195
2081 y(PUSHMARK)195 2141 y(PUSHGLOBAL)g("c")195 2201 y(CALLFUNC)195
2261 y(ADJUST)210 b(2)195 2320 y(ADD)195 2380 y(STOREGLOBAL)54
b("a")-5 2465 y Fe(Lua)p Ff('s)13 b(virtual)f(mac)o(hine)g(has)g(ab)q(out)h
(60)g(instructions;)g(accordingly)l(,)f(it)i(is)e(p)q(ossible)g(to)i(use)e
(8-bit)h(b)o(yte-)-5 2525 y(co)q(des.)22 b(Man)o(y)15 b(instructions)f
(\(e.g.,)h Fh(ADD)p Ff(\))i(do)e(not)h(need)f(additional)g(parameters;)f
(these)h(instructions)-5 2584 y(op)q(erate)d(directly)g(on)f(the)h(stac)o(k)g
(and)f(tak)o(e)h(exactly)h(one)f(b)o(yte)g(in)f(compiled)g(co)q(de.)20
b(Other)11 b(instructions)-5 2644 y(\(e.g.,)16 b Fh(PUSHGLOBAL)i
Ff(and)d Fh(STOREGLOBAL)p Ff(\))j(need)d(additional)g(parameters,)f(and)h
(tak)o(e)h(more)f(than)h(one)-5 2704 y(b)o(yte.)22 b(Since)16
b(parameters)e(tak)o(e)i(either)g(one,)f(t)o(w)o(o)h(or)f(four)g(b)o(ytes,)h
(this)g(creates)f(alignmen)o(t)g(problems)-5 2764 y(in)h(some)g(arc)o
(hitectures,)f(whic)o(h)h(are)g(solv)o(ed)g(b)o(y)g(padding)f(with)h
Fh(NOP)p Ff(s)h(to)g(the)g(alignmen)o(t)e(b)q(oundary)l(.)-5
2883 y Fc(T)l(eCGraf/ICAD)1674 b(8)p eop
%%Page: 9 9
bop -5 163 a Ff(Man)o(y)15 b(of)i(the)f(instructions)e(exist)i(for)g
(optimization)f(only)l(.)21 b(F)l(or)15 b(instance,)g(there)h(is)g(a)g
Fh(PUSH)g Ff(instruc-)-5 223 y(tion,)f(whic)o(h)g(tak)o(es)g(a)g(n)o(um)o(b)q
(er)e(as)i(a)g(parameter)f(and)g(pushes)g(it)h(on)o(to)g(the)g(stac)o(k,)h
(but)f(there)g(are)f(also)-5 283 y(single-b)o(yte)i(optimized)f(v)o(ersions)g
(for)h(pushing)f(common)g(v)m(alues)h(suc)o(h)f(as)h(zero)h(and)e(one.)22
b(Th)o(us,)15 b(w)o(e)-5 343 y(ha)o(v)o(e)k Fh(PUSHNIL)p Ff(,)h
Fh(PUSH0)p Ff(,)h Fh(PUSH1)p Ff(,)g Fh(PUSH2)p Ff(.)31 b(Suc)o(h)18
b(optimizations)g(reduce)h(b)q(oth)g(the)h(space)f(required)-5
402 y(for)e(compiled)e(b)o(yteco)q(des)h(and)g(the)h(time)g(required)e(for)h
(in)o(terpreting)f(instructions.)-5 487 y(Recall)k(that)h Fe(Lua)f
Ff(supp)q(orts)f(m)o(ultiple)f(assignmen)o(t)h(and)g(m)o(ultiple)g(return)g
(v)m(alues)h(from)g(functions.)-5 547 y(Therefore,)e(sometimes,)g(a)g(list)h
(of)g(v)m(alues)f(m)o(ust)g(b)q(e)g Fd(adjuste)m(d)5 b Ff(,)20
b(at)e(run)f(time,)g(to)h(a)g(giv)o(en)f(length:)24 b(if)-5
607 y(there)c(are)g(more)f(v)m(alues)h(than)g(are)f(needed,)h(then)g(the)h
(excess)f(v)m(alues)f(are)h(thro)o(wn)f(a)o(w)o(a)o(y;)i(if)f(more)-5
666 y(v)m(alues)15 b(are)f(needed)g(than)g(are)g(presen)o(t,)g(then)g(the)h
(list)f(is)g(extended)h(with)f(as)g(man)o(y)g Fh(nil)p Ff('s)g(as)g(needed.)
-5 726 y(Adjustmen)o(t)i(is)g(done)g(on)g(the)h(stac)o(k)g(with)f(the)h
Fh(ADJUST)h Ff(instruction.)-5 811 y(Although)g(m)o(ultiple)f(assignmen)o(t)f
(and)i(returns)e(are)i(a)g(p)q(o)o(w)o(erful)f(feature)i(of)f
Fe(Lua)p Ff(,)g(they)h(are)f(an)g(im-)-5 871 y(p)q(ortan)o(t)g(source)e(of)i
(complexit)o(y)g(in)f(b)q(oth)h(the)g(compiler)e(and)i(the)g(in)o(terpreter.)
24 b(Because)17 b(there)h(are)-5 930 y(no)c(t)o(yp)q(e)h(declarations)e(for)h
(functions,)g(the)h(compiler)d(do)q(es)j(not)f(kno)o(w)g(ho)o(w)f(man)o(y)h
(v)m(alues)g(a)g(function)-5 990 y(will)j(return.)k(Th)o(us,)15
b(adjustmen)o(t)h(m)o(ust)g(b)q(e)h(done)f(at)h(run)f(time.)22
b(Similarly)l(,)15 b(the)i(compiler)e(do)q(es)i(not)-5 1050
y(kno)o(w)f(ho)o(w)g(man)o(y)f(parameters)g(a)h(function)g(tak)o(es.)22
b(Because)16 b(this)g(n)o(um)o(b)q(er)f(ma)o(y)g(v)m(ary)i(at)g(run)e(time,)
-5 1110 y(the)i(list)f(of)h(parameters)e(is)h(brac)o(k)o(eted)g(b)q(et)o(w)o
(een)g(a)h Fh(PUSHMARK)g Ff(and)f(a)h Fh(CALLFUNC)h Ff(instruction.)-5
1194 y(One)e(w)o(a)o(y)f(to)h(extend)g Fe(Lua)f Ff(with)h(functions)f(pro)o
(vided)f(b)o(y)h(the)h(host)f(w)o(ould)g(b)q(e)g(to)h(assign)f(a)g(b)o(yteco)
q(de)-5 1254 y(to)j(eac)o(h)f(suc)o(h)g(function)g(\(Betz)i(1988\).)25
b(Although)17 b(this)g(strategy)h(w)o(ould)e(simplify)h(the)g(in)o
(terpreter,)-5 1314 y(it)k(has)g(the)g(disadv)m(an)o(tage)e(that)i(few)o(er)g
(than)g(200)f(external)h(functions)f(could)g(b)q(e)h(added,)g(b)q(ecause)-5
1374 y Fe(Lua)e Ff(has)f(8-bit)g(b)o(yteco)q(des)h(and)f(already)g(uses)g(ab)
q(out)g(60)h(of)g(them)f(for)h(its)f(primitiv)o(e)g(instructions.)-5
1433 y(W)l(e)f(ha)o(v)o(e)f(c)o(hosen)g(to)h(ha)o(v)o(e)f(the)h(host)f
(explicitly)h(register)f(external)h(functions,)f(and)g(handling)f(these)-5
1493 y(functions)24 b(lik)o(e)g(nativ)o(e)h Fe(Lua)f Ff(functions.)45
b(Th)o(us,)25 b(there)f(is)h(a)f(single)g Fh(CALLFUNC)h Ff(instruction;)j
(the)-5 1553 y(in)o(terpreter)15 b(decides)h(what)h(to)g(do)f(based)f(on)i
(the)f(t)o(yp)q(e)i(of)e(the)h(function)f(b)q(eing)g(called.)-5
1638 y(A)21 b(rather)e(di\013eren)o(t)g(strategy)h(w)o(as)f(prop)q(osed)g(b)o
(y)g(F)l(ranks)f(\(1991\):)30 b Fd(al)s(l)19 b Ff(external)h(functions)f(in)h
(the)-5 1697 y(host)f(can)g(b)q(e)h(called)f(b)o(y)g(the)g(em)o(b)q(edded)f
(language;)i(no)f(explicit)g(registration)f(is)h(needed.)30
b(This)18 b(is)-5 1757 y(done)h(b)o(y)g(reading)f(and)g(in)o(terpreting)g
(the)h(map)g(generated)f(b)o(y)h(the)h(link)o(er.)29 b(This)18
b(solution)g(is)h(v)o(ery)-5 1817 y(con)o(v)o(enien)o(t)g(for)h(the)g
(application)e(programmer,)g(but)i(is)f(not)h(p)q(ortable,)g(b)q(eing)g(dep)q
(enden)o(t)f(on)h(the)-5 1877 y(format)14 b(of)g(the)h(map)e(\014le)h(and)g
(on)g(the)g(relo)q(cation)g(strategy)h(used)e(b)o(y)h(the)g(op)q(erating)g
(system)g(\(F)l(ranks)-5 1937 y(used)i(a)h(sp)q(eci\014c)f(compiler)f(for)h
(DOS\).)-5 2091 y Fe(Internal)h(data)f(structures)-5 2176 y
Ff(As)22 b(men)o(tioned)e(b)q(efore,)i(v)m(ariables)f(in)f
Fe(Lua)i Ff(are)f(not)g(t)o(yp)q(ed;)j(only)d(v)m(alues)g(are.)36
b(Th)o(us,)21 b(v)m(alues)g(are)-5 2236 y(implemen)o(ted)15
b(in)g(a)h Fh(struct)i Ff(with)e(t)o(w)o(o)f(\014elds:)21 b(a)16
b(t)o(yp)q(e)h(and)e(a)i Fh(union)g Ff(con)o(taining)d(the)j(actual)f(v)m
(alue.)-5 2296 y(These)g Fh(struct)p Ff(s)g(o)q(ccur)g(in)g(the)g(stac)o(k)g
(and)f(in)g(the)h(sym)o(b)q(ol)f(table,)h(whic)o(h)f(holds)g(all)g(global)g
(sym)o(b)q(ols.)-5 2380 y(Num)o(b)q(ers)j(are)h(stored)f(directly)h(in)o(to)g
(the)g Fh(union)p Ff(.)31 b(Strings)18 b(are)g(k)o(ept)i(in)e(a)h(single)g
(arra)o(y;)g(v)m(alues)g(of)-5 2440 y(t)o(yp)q(e)i Fd(string)g
Ff(con)o(tain)e(p)q(oin)o(ters)h(to)g(this)g(arra)o(y)l(.)32
b(V)l(alues)20 b(of)h(t)o(yp)q(e)g Fd(function)f Ff(con)o(tain)g(p)q(oin)o
(ters)f(to)i(a)-5 2500 y(b)o(yteco)q(de)d(arra)o(y)l(.)23 b(V)l(alues)17
b(of)g(t)o(yp)q(e)h Fd(Cfunction)f Ff(con)o(tain)g(the)g(actual)g(p)q(oin)o
(ter)g(to)g(the)h(C)f(function,)g(as)-5 2560 y(pro)o(vided)e(b)o(y)h(the)h
(host)f(program;)f(the)i(same)e(happ)q(ens)h(for)g(v)m(alues)g(of)h(t)o(yp)q
(e)g Fd(user)m(data)p Ff(.)-5 2644 y(T)l(ables)g(are)g(implemen)o(ted)f(as)h
(hash)g(tables,)g(with)h(collisions)d(handled)i(b)o(y)g(separate)g(c)o
(haining)f(\(this)-5 2704 y(explains)23 b(wh)o(y)g(indices)g(in)g(a)g(table)h
(are)f(ordered)f(arbitrarily\).)41 b(If)24 b(a)g(dimension)d(is)i(giv)o(en)g
(when)-5 2764 y(a)f(table)g(is)g(created,)h(then)f(this)g(dimension)e(is)i
(used)f(as)h(the)g(size)g(of)g(the)h(hash)e(table.)38 b(Th)o(us,)22
b(b)o(y)-5 2883 y Fc(T)l(eCGraf/ICAD)1674 b(9)p eop
%%Page: 10 10
bop -5 163 a Ff(pro)o(viding)13 b(a)i(dimension)e(appro)o(ximately)h(equal)h
(to)g(the)g(exp)q(ected)h(n)o(um)o(b)q(er)d(of)i(indices)f(in)h(the)g(table,)
-5 223 y(few)i(collisions)d(will)i(o)q(ccur,)g(resulting)e(in)i(v)o(ery)g
(e\016cien)o(t)g(index)f(lo)q(cation.)22 b(Moreo)o(v)o(er,)15
b(if)h(the)g(table)g(is)-5 283 y(used)g(as)g(an)g(arra)o(y)l(,)e(with)j(n)o
(umeric)d(indices)h(only)l(,)h(then)g(c)o(ho)q(osing)g(the)g(righ)o(t)f
(dimension)g(at)h(creation)-5 343 y(time)h(guaran)o(tees)e(that)i(no)f
(collisions)f(will)h(o)q(ccur.)-5 427 y(All)k(in)o(ternal)e(data)h
(structures)f(in)h Fe(Lua)h Ff(are)f(dynamically)f(allo)q(cated)i(arra)o(ys.)
29 b(When)19 b(there)g(are)g(no)-5 487 y(more)13 b(free)h(slots)g(in)f(one)h
(of)g(these)g(arra)o(ys,)e(garbage)h(collection)h(is)f(automatically)h(p)q
(erformed)e(using)h(a)-5 547 y(standard)i(mark-and-sw)n(eep)e(algorithm.)21
b(If)16 b(no)f(space)h(is)f(reco)o(v)o(ered)g(\(b)q(ecause)h(all)f(v)m(alues)
h(are)f(b)q(eing)-5 607 y(referenced\),)h(then)h(the)g(arra)o(y)e(is)h
(reallo)q(cated)g(with)h(double)e(its)i(curren)o(t)e(size.)-5
691 y(Garbage)h(collection)h(is)g(v)o(ery)g(con)o(v)o(enien)o(t)e(for)i(the)g
(programmer)d(b)q(ecause)j(it)g(a)o(v)o(oids)f(explicit)h(mem-)-5
751 y(ory)d(managemen)o(t.)20 b(When)14 b Fe(Lua)g Ff(is)g(used)g(as)g(a)g
(standalone)f(language)h(\(whic)o(h)f(it)i(frequen)o(tly)f(is\),)h(then)-5
811 y(garbage)20 b(collection)g(is)g(an)g(asset.)34 b(Ho)o(w)o(ev)o(er,)20
b(when)g Fe(Lua)g Ff(is)g(used)g(em)o(b)q(edded)f(in)h(a)h(host)f(program)-5
871 y(\(whic)o(h)13 b(is)g(its)h(main)e(purp)q(ose\),)h(then)h(garbage)e
(collection)h(creates)h(a)f(new)h(w)o(orry)e(for)h(the)h(application)-5
930 y(programmer)f(who)i(needs)g(to)h(in)o(terface)g(with)f
Fe(Lua)p Ff(:)21 b(care)16 b(should)e(b)q(e)i(tak)o(en)g(not)f(to)h(store)g
Fe(Lua)f Ff(tables)-5 990 y(and)g(strings)f(in)o(to)i(C)f(v)m(ariables,)g(b)q
(ecause)g(these)h(v)m(alues)f(ma)o(y)g(b)q(e)h(reclaimed)f(during)e(garbage)i
(collec-)-5 1050 y(tion,)i(if)g(they)h(do)f(not)g(ha)o(v)o(e)f(an)o(y)h
(further)f(references)h(within)f Fe(Lua)p Ff('s)h(en)o(vironmen)o(t.)k(More)c
(precisely)l(,)-5 1110 y(the)d(programmer)d(m)o(ust)i(explicitly)h(cop)o(y)f
(these)h(v)m(alues)f(in)o(to)g(C)h(v)m(ariables,)f(b)q(efore)h(returning)e
(con)o(trol)-5 1169 y(to)i Fe(Lua)p Ff(.)21 b(Although)12 b(this)h(is)g(a)h
(di\013eren)o(t)e(paradigm,)g(it)h(is)g(not)h(w)o(orse)e(than)h(the)h
(familiar)e Fh(malloc)p Ff(-)p Fh(free)-5 1229 y Ff(proto)q(col)17
b(for)f(memory)f(managemen)o(t)g(using)h(the)g(standard)f(C)i(library)l(.)-5
1397 y Fg(Conclusion)-5 1482 y Fe(Lua)g Ff(has)e(b)q(een)i(extensiv)o(ely)g
(used)f(in)g(pro)q(duction)f(since)h(mid)g(93,)g(for)g(the)h(follo)o(wing)e
(tasks:)-5 1560 y Fb(\017)25 b Ff(user)16 b(con\014guration)e(of)j
(application)f(en)o(vironmen)o(t;)-5 1625 y Fb(\017)25 b Ff(general-purp)q
(ose)14 b(data-en)o(try)l(,)h(with)i(user)e(de\014ned)h(dialogs)f(and)h(v)m
(alidation)g(pro)q(cedures;)-5 1690 y Fb(\017)25 b Ff(description)15
b(of)i(user)e(in)o(terfaces;)-5 1755 y Fb(\017)25 b Ff(programmer)14
b(description)h(of)i(application)e(ob)s(jects;)-5 1819 y Fb(\017)25
b Ff(storage)f(of)h(structured)e(graphical)g(meta\014les,)i(used)f(for)g
(comm)o(unication)e(b)q(et)o(w)o(een)i(graphical)45 1879 y(editors)16
b(and)g(application)f(programs.)-5 1977 y(Moreo)o(v)o(er,)g
Fe(Lua)g Ff(is)h(curren)o(tly)e(b)q(eing)i(considered)e(as)i(the)g(basis)f
(for)g(a)h(visual)f(programming)e(system.)-5 2062 y(The)k(abilit)o(y)g(to)g
(load)f(and)h(execute)h Fe(Lua)f Ff(programs)d(at)k(run-time)d(has)h(pro)o(v)
o(ed)g(to)h(b)q(e)h(a)f(ma)s(jor)f(com-)-5 2122 y(p)q(onen)o(t)g(in)f(making)
g(con\014guration)f(an)i(easy)g(task)g(for)g(b)q(oth)g(users)e(and)i(dev)o
(elop)q(ers.)k(Moreo)o(v)o(er,)15 b(the)-5 2182 y(existence)i(of)g(a)f
(single)g(general)g(purp)q(ose)f(em)o(b)q(edded)g(language)h(discourages)e
(the)j(m)o(ultiplication)e(of)-5 2241 y(incompatible)d(languages)g(and)h
(encourages)f(a)h(b)q(etter)h(design,)f(one)g(that)h(clearly)f(separates)f
(the)i(main)-5 2301 y(tec)o(hnology)i(con)o(tained)g(in)g(an)g(application)g
(from)f(its)i(con\014guration)e(issues.)-5 2386 y(The)21 b(implemen)o(tation)
e(of)i Fe(Lua)f Ff(describ)q(ed)g(in)g(this)h(pap)q(er)f(is)g(a)o(v)m
(ailable)g(b)o(y)h(anon)o(ymous)d Fh(ftp)k Ff(from)-5 2446
y Fh(ftp.icad.puc-rio.br:/p)q(ub/lua)q(/lua-1.)q(1.tar.Z)q
Ff(.)-5 2560 y Fe(Ackno)o(wledgments)-5 2644 y Ff(W)l(e)f(w)o(ould)d(lik)o(e)
i(to)h(thank)f(the)g(sta\013)g(at)h(ICAD)f(and)g(T)l(eCGraf)f(for)h(using)f
(and)h(testing)g Fe(Lua)p Ff(.)32 b(The)-5 2704 y(industrial)16
b(applications)g(men)o(tioned)g(in)h(the)h(text)h(are)e(b)q(eing)h(dev)o
(elop)q(ed)f(in)g(patternship)f(with)i(the)-5 2764 y(researc)o(h)d(cen)o
(ters)h(at)h(PETR)o(OBR)674 2751 y(\023)668 2764 y(AS)e(\(CENPES\))i(and)f
(at)h(ELETR)o(OBR)1452 2751 y(\023)1446 2764 y(AS)f(\(CEPEL\).)-5
2883 y Fc(T)l(eCGraf/ICAD)1652 b(10)p eop
%%Page: 11 11
bop -5 163 a Fg(References)-5 268 y Ff(M.)14 b(Abrash,)g(D.)g(Illo)o(wsky)l
(,)g(\\Roll)g(y)o(our)f(o)o(wn)h(minilanguages)e(with)j(mini-in)o(terpreters)
o(",)d Fi(Dr.)i(Dobb's)70 328 y(Journal)h Fa(14)h Ff(\(9\))h(\(Sep)f(1989\))h
(52{72.)-5 402 y(A.)27 b(V.)h(Aho,)e(B.)i(W.)f(Kerninghan,)d(P)l(.)j(J.)f(W)l
(ein)o(b)q(erger,)g Fi(The)g(A)-6 b(WK)28 b(programming)c(language)p
Ff(,)70 462 y(Addison-W)l(esley)l(,)15 b(1988.)-5 537 y(B.)i(Bec)o(kman,)f
(\\A)h(Sc)o(heme)f(for)g(little)h(languages)f(in)g(in)o(teractiv)o(e)g
(graphics",)f Fi(Soft)o(w)o(are,)h(practice)g(&)70 597 y(exp)q(erience)h
Fa(21)f Ff(\(1991\))h(187{207.)-5 671 y(J.)c(Ben)o(tley)l(,)f(\\Programming)e
(p)q(earls:)i(little)h(languages",)f Fi(Comm)o(unications)e(of)j(the)g(A)o
(CM)f Fa(29)g Ff(\(1986\))70 731 y(711{721.)-5 806 y(J.)k(Ben)o(tley)l(,)h
Fi(More)f(programming)d(p)q(earls)p Ff(,)j(Addison-W)l(esley)l(,)f(1988.)-5
881 y(D.)i(Betz,)g(\\Em)o(b)q(edded)e(languages",)g Fi(Byte)j
Fa(13)e Ff(#12)f(\(No)o(v)j(1988\))e(409{416.)-5 955 y(D.)g(Betz,)h(\\Y)l
(our)f(o)o(wn)f(tin)o(y)h(ob)s(ject-orien)o(ted)f(language",)g
Fi(Dr.)h(Dobb's)f(Journal)f Fa(16)i Ff(\(9\))h(\(Sep)f(1991\))70
1015 y(26{33.)-5 1090 y(T.)h(Budd,)e Fi(A)i(Little)h(Smalltalk)p
Ff(,)d(Addison-W)l(esley)l(,)g(1987.)-5 1164 y(R.)e(Clark,)h(S.)f(Ko)q
(ehler,)g Fi(The)g(UCSD)h(P)o(ascal)f(handb)q(o)q(ok:)g(a)g(reference)g(and)g
(guideb)q(o)q(ok)h(for)f(program-)70 1224 y(mers)p Ff(,)i(Pren)o(tice-Hall,)h
(1982.)-5 1299 y(M.)g(Co)o(wlisha)o(w,)f Fi(The)h(REXX)h(programming)d
(language)p Ff(,)h(Pren)o(tice-Hall,)g(1990.)-5 1374 y(L.)j(H.)f(de)g
(Figueiredo,)f(C.)h(S.)g(de)g(Souza,)g(M.)f(Gattass,)i(L.)f(C.)g(G.)g(Co)q
(elho,)g(\\Gera\030)-22 b(c~)d(ao)17 b(de)h(in)o(terfaces)70
1433 y(para)k(captura)g(de)h(dados)f(sobre)f(desenhos",)h Fi(Anais)g(do)h
(SIBGRAPI)f(V)i Ff(\(1992\))f(169{175)f([in)70 1493 y(P)o(ortuguese].)-5
1568 y(N.)e(F)l(ranks,)d(\\Adding)h(an)h(extension)g(language)f(to)i(y)o(our)
e(soft)o(w)o(are",)g Fi(Dr.)g(Dobb's)g(Journal)g Fa(16)g Ff(\(9\))70
1628 y(\(Sep)e(1991\))h(34{43.)-5 1702 y(A.)24 b(Goldb)q(erg,)f(D.)h(Robson,)
e Fi(Smalltalk-80:)g(the)i(language)f(and)g(its)h(implemen)o(tation)p
Ff(,)d(Addison-)70 1762 y(W)l(esley)l(,)16 b(1983.)-5 1837
y(R.)g(Ierusalimsc)o(h)o(y)l(,)d(L.)j(H.)g(de)g(Figueiredo,)e(W.)i(Celes)f
(Filho,)g(\\Reference)h(man)o(ual)e(of)i(the)g(program-)70
1897 y(ming)g(language)f Fe(Lua)p Ff(",)h Fi(Monogra\014as)e(em)j(Ci)o(^)-24
b(encia)16 b(da)g(Computa\030)-22 b(c~)d(ao)16 b Fa(4/94)p
Ff(,)f(Departamen)o(to)g(de)70 1956 y(Inform\023)-25 b(atica,)15
b(PUC-Rio,)h(1994.)-5 2031 y(J.)g(R.)g(Levine,)h(T.)f(Mason,)g(D.)g(Bro)o
(wn,)g Fi(Lex)h(&)f(Y)l(acc)p Ff(,)h(O'Reilly)f(and)g(Asso)q(ciates,)g(1992.)
-5 2106 y(C.)h(Nahab)q(o)q(o,)f Fi(A)h(catalog)g(of)g(em)o(b)q(edded)e
(languages)p Ff(,)g(a)o(v)m(ailable)h(from)f Fh(colas@indri.inria.fr)p
Ff(.)-5 2181 y(M.)i(Ric)o(hards,)e(C.)j(Whitb)o(y-Strev)o(ens,)d
Fi(BCPL:)j(the)g(language)e(and)h(its)g(compiler)p Ff(,)f(Cam)o(bridge)f
(Uni-)70 2240 y(v)o(ersit)o(y)h(Press,)f(1980.)-5 2315 y(B.)i(Ry)o(an,)f
(\\Scripts)f(un)o(b)q(ounded",)f Fi(Byte)k Fa(15)e Ff(\(8\))h(\(Aug)g(1990\))
f(235{240.)-5 2390 y(R.)g(V)l(ald)o(\023)-24 b(es,)16 b(\\Little)h
(languages,)e(big)i(questions",)e Fi(Dr.)h(Dobb's)f(Journal)g
Fa(16)h Ff(\(9\))h(\(Sep)g(1991\))f(16{25.)-5 2883 y Fc(T)l(eCGraf/ICAD)1652
b(11)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF