summaryrefslogtreecommitdiff
path: root/support/consdiag/consdiag.ps
blob: e5f9a3e27c453dd60198c562cf26ef04fd220b3b (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
%!PS-Adobe-2.0
%%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software
%%Pages: 10
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%DocumentFonts: Times-Roman Times-Bold Courier Times-Italic
%%DocumentPaperSizes: Letter
%%EndComments
%DVIPSCommandLine: dvips -D 300 -f -e 0
%DVIPSParameters: dpi=300, comments removed
%DVIPSSource:  TeX output 1999.01.03:2314
%%BeginProcSet: tex.pro
/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
forall round exch round exch]setmatrix}N /@landscape{/isls true 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 /nn 0 N /IE 0 N /ctr 0 N /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 /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 /E{pop nn dup definefont setfont}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 /ch-image{ch-data
dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 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 sub]{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 /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict
/eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook
known{start-hook}if pop /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
65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
rlineto rulex neg 0 rlineto fill 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 /w{0 rmoveto}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 /x{0 S rmoveto}B /y{3 2 roll p
a}B /bos{/SS save N}B /eos{SS restore}B end
%%EndProcSet
%%BeginFont: Times-Roman
% @@psencodingfile@{
%   author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry",
%   version = "0.6",
%   date = "22 June 1996",
%   filename = "8r.enc",
%   email = "kb@@mail.tug.org",
%   address = "135 Center Hill Rd. // Plymouth, MA 02360",
%   codetable = "ISO/ASCII",
%   checksum = "119     662    4424",
%   docstring = "Encoding for TrueType or Type 1 fonts to be used with TeX."
% @}
% 
% Idea is to have all the characters normally included in Type 1 fonts
% available for typesetting. This is effectively the characters in Adobe
% Standard Encoding + ISO Latin 1 + extra characters from Lucida.
% 
% Character code assignments were made as follows:
% 
% (1) the Windows ANSI characters are almost all in their Windows ANSI
% positions, because some Windows users cannot easily reencode the
% fonts, and it makes no difference on other systems. The only Windows
% ANSI characters not available are those that make no sense for
% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
% (173). quotesingle and grave are moved just because it's such an
% irritation not having them in TeX positions.
% 
% (2) Remaining characters are assigned arbitrarily to the lower part
% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
% 
% (3) Y&Y Lucida Bright includes some extra text characters; in the
% hopes that other PostScript fonts, perhaps created for public
% consumption, will include them, they are included starting at 0x12.
% 
% (4) Remaining positions left undefined are for use in (hopefully)
% upward-compatible revisions, if someday more characters are generally
% available.
% 
% (5) hyphen appears twice for compatibility with both ASCII and Windows.
% 
/TeXBase1Encoding [
% 0x00 (encoded characters from Adobe Standard not in Windows 3.1)
  /.notdef /dotaccent /fi /fl
  /fraction /hungarumlaut /Lslash /lslash
  /ogonek /ring /.notdef
  /breve /minus /.notdef 
% These are the only two remaining unencoded characters, so may as
% well include them.
  /Zcaron /zcaron 
% 0x10
 /caron /dotlessi 
% (unusual TeX characters available in, e.g., Lucida Bright)
 /dotlessj /ff /ffi /ffl 
 /.notdef /.notdef /.notdef /.notdef
 /.notdef /.notdef /.notdef /.notdef
 % very contentious; it's so painful not having quoteleft and quoteright
 % at 96 and 145 that we move the things normally found there down to here.
 /grave /quotesingle 
% 0x20 (ASCII begins)
 /space /exclam /quotedbl /numbersign
 /dollar /percent /ampersand /quoteright
 /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
% 0x30
 /zero /one /two /three /four /five /six /seven
 /eight /nine /colon /semicolon /less /equal /greater /question
% 0x40
 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
% 0x50
 /P /Q /R /S /T /U /V /W
 /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
% 0x60
 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
% 0x70
 /p /q /r /s /t /u /v /w
 /x /y /z /braceleft /bar /braceright /asciitilde
 /.notdef % rubout; ASCII ends
% 0x80
 /.notdef /.notdef /quotesinglbase /florin
 /quotedblbase /ellipsis /dagger /daggerdbl
 /circumflex /perthousand /Scaron /guilsinglleft
 /OE /.notdef /.notdef /.notdef
% 0x90
 /.notdef /.notdef /.notdef /quotedblleft
 /quotedblright /bullet /endash /emdash
 /tilde /trademark /scaron /guilsinglright
 /oe /.notdef /.notdef /Ydieresis
% 0xA0
 /.notdef % nobreakspace
 /exclamdown /cent /sterling
 /currency /yen /brokenbar /section
 /dieresis /copyright /ordfeminine /guillemotleft
 /logicalnot
 /hyphen % Y&Y (also at 45); Windows' softhyphen
 /registered
 /macron
% 0xD0
 /degree /plusminus /twosuperior /threesuperior
 /acute /mu /paragraph /periodcentered
 /cedilla /onesuperior /ordmasculine /guillemotright
 /onequarter /onehalf /threequarters /questiondown
% 0xC0
 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
 /Egrave /Eacute /Ecircumflex /Edieresis
 /Igrave /Iacute /Icircumflex /Idieresis
% 0xD0
 /Eth /Ntilde /Ograve /Oacute
 /Ocircumflex /Otilde /Odieresis /multiply
 /Oslash /Ugrave /Uacute /Ucircumflex
 /Udieresis /Yacute /Thorn /germandbls
% 0xE0
 /agrave /aacute /acircumflex /atilde
 /adieresis /aring /ae /ccedilla
 /egrave /eacute /ecircumflex /edieresis
 /igrave /iacute /icircumflex /idieresis
% 0xF0
 /eth /ntilde /ograve /oacute
 /ocircumflex /otilde /odieresis /divide
 /oslash /ugrave /uacute /ucircumflex
 /udieresis /yacute /thorn /ydieresis
] def
%%EndFont
%%BeginProcSet: texps.pro
TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2
index /UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
exch def dict begin Encoding{exch dup type /integertype ne{pop pop 1 sub
dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
ifelse}forall Metrics /Metrics currentdict end def[2 index currentdict
end definefont 3 -1 roll makefont /setfont load]cvx def}def
/ObliqueSlant{dup sin S cos div neg}B /SlantFont{4 index mul add}def
/ExtendFont{3 -1 roll mul exch}def /ReEncodeFont{/Encoding exch def}def
end
%%EndProcSet
%%BeginProcSet: special.pro
TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N
/vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen
false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B
/@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit
div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{
/CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{
10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B
/@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale
true def end /@MacSetUp{userdict /md known{userdict /md get type
/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup
length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{}
N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath
clippath mark{transform{itransform moveto}}{transform{itransform lineto}
}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{
itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{
closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39
0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N
/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1
scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get
ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip
not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0
TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR
pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1
-1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg
TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg
sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr
0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add
2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp
{pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72
div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray}
N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict
maxlength dict begin /magscale true def normalscale currentpoint TR
/psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts
/psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx
psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy
scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR
/showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{
psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict
begin /SpecialSave save N gsave normalscale currentpoint TR
@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial
{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath
}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{
end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin}
N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{
/SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX
SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X
/startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad
yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end
%%EndProcSet
TeXDict begin 40258431 52099146 1000 300 300 () @start
/Fa 136[33 2[14 19 19 1[25 25 25 36 14 2[14 25 25 14
22 1[22 25 25 12[28 4[36 33 31[12 4[17 17 40[{
 TeXBase1Encoding ReEncodeFont }23 50.000001 /Times-Italic
rf /Fb 134[18 3[21 12 1[16 5[12 2[12 1[21 12 18 17[21
25 8[14 28[10 44[{ TeXBase1Encoding ReEncodeFont }13
41.666669 /Times-Italic rf /Fc 134[19 19 27 19 19 10
15 12 19 19 19 19 29 10 19 1[10 19 19 12 17 19 17 19
17 12[23 21 3[27 12[25 27 6[10 6[19 1[19 19 1[9 43[21
2[{ TeXBase1Encoding ReEncodeFont }35 37.500000 /Times-Roman
rf /Fd 134[25 25 36 1[28 17 19 22 1[28 25 28 41 14 28
1[14 28 25 17 22 28 22 28 25 11[36 1[28 9[19 7[36 10[25
25 25 25 25 25 2[12 12[17 33[{ TeXBase1Encoding ReEncodeFont }34
50.000001 /Times-Bold rf /Fe 130[25 1[25 1[25 25 25 25
25 25 25 25 25 25 25 25 25 25 25 1[25 25 25 25 25 25
25 25 25 1[25 1[25 25 25 6[25 25 3[25 12[25 25 3[25 2[25
3[25 1[25 25 3[25 25 1[25 2[25 25 25 39[{
 TeXBase1Encoding ReEncodeFont }46 41.666669 /Courier
rf /Ff 1 16 df<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF8
0FF003C010107E9115>15 D E /Fg 107[18 18 24[18 21 21 30
21 21 12 16 14 21 21 21 21 32 12 21 12 12 21 21 14 18
21 18 21 18 7[30 30 39 2[25 23 28 2[30 1[37 25 1[16 14
1[30 23 25 30 1[28 30 1[18 4[12 21 21 21 21 21 21 21
21 21 21 12 10 14 10 1[21 14 14 14 5[14 30[23 2[{
 TeXBase1Encoding ReEncodeFont }67 41.666669 /Times-Roman
rf /Fh 134[30 30 43 30 33 20 23 27 1[33 30 33 50 17 2[17
33 30 20 27 33 27 33 30 13[33 9[23 47 4[43 40 11[30 30
30 30 30 30 49[{ TeXBase1Encoding ReEncodeFont }33 59.999974
/Times-Bold rf /Fi 133[22 3[25 25 14 19 17 3[25 39 14
2[14 1[25 1[22 1[22 25 22 19[44 5[36 2[36 2[36 46 6[25
25 6[25 2[12 1[12 44[{ TeXBase1Encoding ReEncodeFont }25
50.000001 /Times-Roman rf /Fj 134[36 36 1[36 36 20 28
24 1[36 36 36 56 20 2[20 1[36 24 32 36 32 1[32 28[52
18[36 36 1[18 46[{ TeXBase1Encoding ReEncodeFont }23
71.999998 /Times-Roman rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
TeXDict begin
%%PaperSize: Letter

%%EndSetup
%%Page: 1 1
1 0 bop 290 440 a Fj(Documen)o(tation)18 b(an)o(d)g(e)o(xamp)o(les)g
(of)g(co)o(nsdiag.p)o(y)777 531 y(v)o(ersio)o(n)g(1.0)525
652 y Fi(M)q(anuel)12 b(Gutier)o(rez)h(Al)o(gaba,)g(irm)o(ina@ctv)m
(.es)778 749 y(December)f(1998)220 917 y Fh(1)60 b(Copyr)o(ight)15
b(issues)220 1010 y Fg(consdi)o(a)q(g.p)o(y)c(and)f(it)o(s)h(do)o(c)q
(umentati)o(on)f(\()h(t)o(hi)o(s)g(tex)o(t)f(a)q(nd)g(t)o(he)h(source)q
(s)f(of)g(tex)g(dra)o(wing)o(s)h(in)o(c)q(l)o(uded)220
1059 y(in)d(it)o(\))h(are)g(c)q(o)o(py)o(rig)o(hted)g(b)o(y)g(Manuel)f
(Guti)o(e)q(rr)o(e)q(z)h(Al)o(gaba)g(1999)f(a)q(n)o(d)h(yo)o(u)g(are)g
(free)g(to)f(use)q(,)h(m)q(o)o(dif)o(y)220 1109 y(,)i(cop)o(y)f(a)q(nd)
g(d)o(istri)o(b)o(ut)o(e)h(it)f(u)o(nder)g(the)h(cond)o(it)o(ion)f(t)o
(ha)q(t)f(you)h(in)o(c)q(l)o(ude)h(t)o(hi)o(s)g(not)o(ice)g(ad)f(in)g
(it)o(.)220 1247 y Fh(2)60 b(Intr)o(o)o(d)q(uc)o(tion)220
1340 y Fg(When)11 b(I)g(wrot)o(e)h(th)o(is)f(pro)o(gra)q(m)g(th)o(e)q
(re)g(wasn')o(t)g(an)o(y)g(a)q(u)o(toma)q(t)o(ed)g(uti)o(li)o(ty)g(fo)o
(r)g(drawi)o(ng)g(Ru)o(m)q(b)o(a)q(ug)o(h)220 1390 y(OO)f(box)o(es)q(.)
j(Of)d(course,)h(you)f(can)h(u)o(se)g(x\002g)f(or)g(a)q(n)o(y)g(ot)o
(her)g(drawi)o(ng)g(prog)o(ra)q(m)g(for)g(th)o(is)g(purp)o(ose)q(.)220
1440 y(Bu)o(t)g(th)o(is)g(ut)o(il)o(ity)f(ha)q(s)h(t)o(wo)g(major)g
(adv)o(ant)o(a)q(g)o(e)q(s,)h(I)o(t')m(s)g(ea)q(si)o(e)q(r)f(t)o(o)g
(use)g(a)q(n)o(d)g(it)o(')n(s)g(faster)g(to)f(')n(dra)o(w'.)k(On)220
1489 y(th)o(e)e(ot)o(he)q(r)f(hand)o(,)h(the)f(kin)o(ds)h(o)o(f)g(a)o
(v)o(ail)o(a)q(bl)o(e)g(dra)o(wing)o(s)g(are)g(li)o(mit)o(e)q(d)f(to)o
(:)282 1563 y Ff(\017)21 b Fg(i)o(solated)10 b(c)q(l)o(a)q(sses)282
1642 y Ff(\017)21 b Fg(t)o(re)q(es)11 b(\()o(a)q(nd)f(j)o(ust)g(tr)o(e)
q(es,)h(no)f(graphs)g(:\()g(\))g(of)g(clas)q(ses)h(r)o(e)q(l)o(a)q(t)o
(e)q(d)f(by)g(t)o(he)q(i)o(r)g(inh)o(e)q(ri)o(tance)q(s)282
1720 y Ff(\017)21 b Fg(si)o(m)q(pl)o(e)11 b(ass)q(o)o(c)q(i)o(a)q(t)o
(ion)o(s)g(of)f(class)q(es)282 1794 y(It')m(s)h(n)o(ot)f(muc)q(h)g(,)h
(b)n(ut...)282 1844 y(And)f(th)o(is)g(is)h(an)f(ut)o(il)o(ity)g(wri)o
(tt)o(e)q(n)g(i)o(n)g(py)o(thon)o(.)220 1917 y Fe(http:/)o(/www.python)
o(.org)282 1991 y Fg(I)15 b(imagin)o(e)h(t)o(ha)q(t)e(it)g(c)q(ou)o(ld)
h(b)o(e)h(wri)o(tt)o(e)q(n)e(in)h(T)935 2000 y(E)955
1991 y(X)g(b)o(ut)g(It)o(')n(s)g(10)f(ti)o(m)q(es)h(e)q(asier)g(to)f
(use)i(p)o(yt)o(hon.)220 2041 y(And)d(what')m(s)h(more)g(impo)o(rtant)f
(T)720 2050 y(E)740 2041 y(X)g(prog)o(ra)q(mme)q(r)o(s)h(hav)o(e)g(a)g
(model)f(,)i(if)e(th)o(ey)g(want)g(to)g(do)g(the)220
2091 y(tr)o(a)q(nsl)o(a)q(t)o(ion)o(.)220 2141 y(Ano)o(ther)j(po)o(int)
o(,)i(t)o(he)e(pyt)o(hon)f(c)q(o)o(de)h(c)q(ou)o(ld)g(b)o(e)h(i)o(mpro)
o(v)o(e)q(d)o(,)h(I')n(v)o(e)e(dup)o(li)o(c)q(ated)g(code)g(in)f(sev)o
(era)q(l)220 2190 y(parts,)g(bec)q(ause)g(I)f(th)o(ough)o(t)g(th)o(e)h
(clas)q(ses)g(were)f(re)q(all)o(y)g(dif)n(fe)q(r)o(e)q(nt)f(e)q(ac)q(h)
h(o)o(ther)n(,)i(.)7 b(.)f(.)h(,)15 b(in)f(t)o(he)h(end,)220
2240 y(th)o(ey')n(v)o(e)c(r)o(e)q(sul)o(ted)f(to)g(be)h(v)o(ery)f
(simil)o(a)q(r)g(i)o(n)g(the)h(w)o(a)q(y)f(t)o(hey)g(w)o(ork.)282
2290 y(And,)i(i)o(t)f(genera)q(t)o(es)h(t)o(ex)f(c)q(o)o(de)q(.)k(So)c
(if)g(you)f(want)h(it)f(in)h(po)o(stsc)q(r)o(ipt)o(,)h(gi)o(f)f(or)g
(whate)o(v)o(e)q(r)n(,)h(use)f(the)220 2340 y(pro)o(gram)q(s)f(dvi)o(,)
h(gs)f(or)g(grab)g(dir)o(e)q(ctl)o(y)h(f)o(rom)g(a)f(wind)o(o)o(w!)220
2478 y Fh(3)75 b(H)o(o)o(w)16 b(t)o(o)f(us)q(e)f(it)220
2579 y Fd(3.1)50 b(Using)12 b(it)g(in)g(a)h(p)o(yth)o(on)g(cod)o(e)220
2657 y Fg(Just)e(use)h(a)g(\223from)g(consd)o(iag)g(i)o(m)q(p)o(ort)f
(*)g(\223)h(a)q(n)o(d)g(t)o(hi)o(s)g(pi)o(e)q(ce)g(of)f(py)o(thon)g
(code)h(\()f(for)g(example\).)17 b(I)o(n)220 2707 y(dra)o(wing)o(3.)q
(t)o(ex)10 b(is)g(k)o(e)q(pt)g(t)o(he)h(f)o(oll)o(o)o(win)o(g)f(T)817
2716 y(E)837 2707 y(X)21 b(i)o(nstru)o(c)q(t)o(ion)o(s)11
b(t)o(ha)q(t)f(g)o(e)q(n)o(e)q(rates)h(t)o(he)g(d)o(rawin)o(g)21
b(2:)926 2831 y(1)p eop
%%Page: 2 2
2 1 bop 747 294 a Fg(F)q(i)o(gur)o(e)11 b(1:)h(Singl)o(e)f(\002gu)o(re)
774 869 y @beginspecial 0 @llx -125 @lly 78 @urx 0 @ury
780 @rwi @setspecial
%%BeginDocument: consdiag.ps1
50 dict begin
/mv {stroke moveto} def
/lv {lineto} def
/st {currentpoint stroke moveto} def
/sl {st setlinewidth} def
/sd {st 0 setdash} def
/sg {st setgray} def
/bs {gsave} def /es {stroke grestore} def
/fl {gsave setgray fill grestore
 currentpoint newpath moveto} def
/fp {gsave setgray fill grestore st} def
/cv {curveto} def
/cr {gsave currentpoint newpath 3 -1 roll 0 360 arc
 stroke grestore} def
/fc {gsave setgray currentpoint newpath
 3 -1 roll 0 360 arc fill grestore} def
/ar {gsave currentpoint newpath 5 2 roll arc stroke grestore} def
/el {gsave /svm matrix currentmatrix def
 currentpoint translate scale newpath 0 0 1 0 360 arc
 svm setmatrix stroke grestore} def
/fe {gsave setgray currentpoint translate scale newpath
 0 0 1 0 360 arc fill grestore} def
/av {/hhwid exch 2 div def /hlen exch def
 /ah exch def /tipy exch def /tipx exch def
 currentpoint /taily exch def /tailx exch def
 /dx tipx tailx sub def /dy tipy taily sub def
 /alen dx dx mul dy dy mul add sqrt def
 /blen alen hlen sub def
 gsave tailx taily translate dy dx atan rotate
 (V) ah ne {blen 0 gt {blen 0 lineto} if} {alen 0 lineto} ifelse
 stroke blen hhwid neg moveto alen 0 lineto blen hhwid lineto
 (T) ah eq {closepath} if
 (W) ah eq {gsave 1 setgray fill grestore closepath} if
 (F) ah eq {fill} {stroke} ifelse
 grestore tipx tipy moveto} def
0.24 0.24 scale
1 setlinecap 1 setlinejoin
3 setlinewidth [] 0 setdash
0 0 moveto
0 sl
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 -57 mv
323 -57 lv
0 0 mv
162 0 lv
324 0 lv
324 -260 lv
324 -520 lv
162 -520 lv
0 -520 lv
0 -260 lv
0 0 lv
stroke end showpage
%%EndDocument
 @endspecial 795 382 a Fc(en)o(t)q(e)o(r)q(p)o(r)q(ise)795
488 y(na)o(me)795 532 y(be)o(ne)o(\002t)q(s)795 564 y(mon)o(e)o(y)795
612 y(he)o(alt)q(h)795 653 y(ho)o(bbies)795 693 y(drea)o(ms)795
733 y(un)o(der)p 882 733 12 2 v 13 w(sco)o(r)q(e)o(.)220
1036 y Fe(c)25 b(=)g(a_)o(simple_clas)o(s\(\))220 1085
y(c.do_n)o(ame_clase\(')o(person'\))220 1135 y(c.do_a)o(ttributes\([)o
('name')g(,)g(')o(sex',)g('mone)o(y',)g('health)o(',)320
1185 y('h)o(obbies',)g('d)o(reams']\))220 1235 y(c.do_f)o(unctions\([')
o(dream',)g('l)o(ove',)g('play)f(soccer',)h(')o(diving']\))220
1285 y(c.inde)o(x_of_class\()o(3\))220 1384 y(c.do_l)o(ines\(\))220
1434 y(c.gene)o(rate_latex_)o(code\('draw)o(ing3.tex'\))220
1603 y Fd(3.2)50 b(Sou)o(rces)13 b(of)f(h)o(elp)220 1680
y Fg(W)m(ell)o(,)j(the)f(best)g(y)o(ou)g(can)g(do)f(is)h(t)o(o)g(t)o(a)
q(k)o(e)g(a)h(l)o(ook)e(a)q(t)g(t)o(he)h(e)q(nd)f(of)g(c)q(on)o(s)q(d)o
(iag.py)g(where)h(you)g(can)220 1730 y(se)q(e)f(h)o(o)o(w)g(i)o(t)f
(gene)q(r)o(a)q(t)o(e)q(s)h(t)o(he)g(dr)o(aw)m(.)20 b(Se)q(cond)o(ly)m
(,)14 b(y)o(ou)e(s)q(h)o(oul)o(d)h(t)o(a)q(k)o(e)g(a)g(l)o(ook)f(a)q(t)
g(t)o(he)h(source)g(of)f(th)o(is)220 1780 y(document,)e(that)g(is:)i
(less)f(consdi)o(a)q(g)o(.)q(t)o(ex)f(T)m(wo)g(impo)o(rtant)g(detail)o
(s:)282 1863 y Ff(\017)21 b Fg(Don)o(')o(t)11 b(for)o(g)o(e)q(t)f(to)h
(i)o(nc)q(l)o(ude)g(th)o(e)h(comm)q(and:)i Fe(\\)o(usepackage{)o
(texdraw})d Fg(at)g(t)o(he)h(st)o(a)q(rt)324 1913 y(of)e(y)o(our)g
(docume)q(n)o(t)282 1996 y Ff(\017)21 b Fg(The)11 b(\002gu)o(re)q(s)f
(a)q(r)o(e)h(in)o(c)q(l)o(uded)f(using)g(a)h(si)o(m)q(p)o(le)g
Fe(\\in)o(put)g Fg(comma)q(n)o(d.)282 2079 y(And)f(th)o(a)q(t)o(')n(s)g
(a)q(l)o(l.)220 2219 y Fh(4)60 b(Some)14 b(ex)o(amples)h(of)g(i)o(t)220
2320 y Fd(4.1)63 b(A)12 b(sim)q(p)o(le)h(class)220 2398
y Fg(The)h(m)q(o)o(s)q(t)f(basic)h(\002gur)o(e)h(y)o(ou)f(ca)q(n)f
(face)i(wh)o(e)q(n)e(de)q(ali)o(ng)g(wit)o(h)h(OO)g(classe)q(s)g(i)o(s)
g(a)h(si)o(m)q(p)o(le)f(clas)q(s,)220 2448 y(wit)o(h)c(some)h(a)q(t)o
(tri)o(b)o(ut)o(e)q(s.)i(And)d(th)o(a)q(t)o(')n(s)g(what)g(you)g(ca)q
(n)g(se)q(e)g(in)g(\002gur)o(e)h(1.)220 2567 y Fd(4.2)63
b(A)12 b(sim)q(p)o(le)h(class)g(wit)o(h)f(long)g(names)220
2644 y Fg(Le)q(t)o(')n(s)f(se)q(e)g(what)g(happens)g(t)o(o)g(\002gure)g
(1)g(when)g(yo)o(u)g(want)f(to)h(i)o(nclud)o(e)h(a)f(re)q(all)o(y)g(l)o
(ong)g(att)o(rib)o(u)o(te.)k(If)220 2694 y(you)c(were)h(work)o(ing)f
(wit)o(h)h(a)g(t)o(radit)o(ion)o(a)q(l)f(dra)o(wing)g(ut)o(ili)o(ty)m
(,)h(you)f(wo)o(uld)g(hav)o(e)h(t)o(o)g(redra)o(w)g(a)q(l)o(l)f(the)926
2831 y(2)p eop
%%Page: 3 3
3 2 bop 605 294 a Fg(Fig)o(ure)11 b(2:)h(Sin)o(gle)e(\002)q(g)o(ure)h
(wi)o(th)f(l)o(ong)g(nam)q(es)588 961 y @beginspecial
0 @llx -147 @lly 167 @urx 0 @ury 1670 @rwi @setspecial
%%BeginDocument: consdiag.ps2
50 dict begin
/mv {stroke moveto} def
/lv {lineto} def
/st {currentpoint stroke moveto} def
/sl {st setlinewidth} def
/sd {st 0 setdash} def
/sg {st setgray} def
/bs {gsave} def /es {stroke grestore} def
/fl {gsave setgray fill grestore
 currentpoint newpath moveto} def
/fp {gsave setgray fill grestore st} def
/cv {curveto} def
/cr {gsave currentpoint newpath 3 -1 roll 0 360 arc
 stroke grestore} def
/fc {gsave setgray currentpoint newpath
 3 -1 roll 0 360 arc fill grestore} def
/ar {gsave currentpoint newpath 5 2 roll arc stroke grestore} def
/el {gsave /svm matrix currentmatrix def
 currentpoint translate scale newpath 0 0 1 0 360 arc
 svm setmatrix stroke grestore} def
/fe {gsave setgray currentpoint translate scale newpath
 0 0 1 0 360 arc fill grestore} def
/av {/hhwid exch 2 div def /hlen exch def
 /ah exch def /tipy exch def /tipx exch def
 currentpoint /taily exch def /tailx exch def
 /dx tipx tailx sub def /dy tipy taily sub def
 /alen dx dx mul dy dy mul add sqrt def
 /blen alen hlen sub def
 gsave tailx taily translate dy dx atan rotate
 (V) ah ne {blen 0 gt {blen 0 lineto} if} {alen 0 lineto} ifelse
 stroke blen hhwid neg moveto alen 0 lineto blen hhwid lineto
 (T) ah eq {closepath} if
 (W) ah eq {gsave 1 setgray fill grestore closepath} if
 (F) ah eq {fill} {stroke} ifelse
 grestore tipx tipy moveto} def
0.24 0.24 scale
1 setlinecap 1 setlinejoin
3 setlinewidth [] 0 setdash
0 0 moveto
0 sl
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 -57 mv
696 -57 lv
0 0 mv
348 0 lv
696 0 lv
696 -307 lv
696 -614 lv
348 -614 lv
0 -614 lv
0 -307 lv
0 0 lv
stroke end showpage
%%EndDocument
 @endspecial 609 376 a Fc(perso)o(n)609 485 y(name)609
525 y(se)o(x)609 562 y(m)q(o)o(ne)o(y)609 610 y(hea)o(l)q(th)609
651 y(hobb)o(i)q(e)o(s)609 691 y(dr)q(e)o(ams)609 727
y(opinion)f(ab)o(out)g(l)q(a)o(t)q(e)o(st)h(p)o(oll)q(s)609
767 y(pos)o(i)q(ti)q(o)o(n)f(whe)o(n)h(p)o(l)q(a)o(ying)f(s)o(occ)o(er)
609 807 y(f)q(a)n(v)o(ouri)q(te)g(s)o(cri)q(p)o(t)q(ing)g(lang)o(uag)o
(e)220 1125 y Fg(box)o(.)16 b(But)10 b(with)h(t)o(hi)o(s)h(ut)o(il)o
(it)o(y)f(no.)16 b(That')m(s)c(what)f(yo)o(u)g(got)g(\(\002g)o(ure)h(2)
o(\).)k(So,)c(t)o(his)f(ut)o(ili)o(ty)g(i)o(s)h(st)o(a)q(rt)o(in)o(g)
220 1175 y(to)e(p)o(a)q(y)m(,)h(i)o(sn')o(t)f(it)o(?)220
1293 y Fd(4.3)63 b(A)12 b(sim)q(p)o(le)h(class)g(wit)o(h)f(attri)o(b)o
(ut)o(e)q(s)g(and)g(m)q(ark)g(of)g(cardi)o(nalit)o(y)220
1371 y Fg(W)m(ell)o(,)h(i)o(t')n(s)f(t)o(ime)g(to)f(se)q(e)h(a)g(c)q(l)
o(a)q(ss)g(at)g(i)o(ts)g(fu)o(ll)f(ext)o(e)q(n)o(t.)18
b(A)11 b(c)q(l)o(a)q(ss)h(ma)q(y)f(hav)o(e)h(fun)o(c)q(t)o(ion)o(s,)h
(and)f(i)o(t)g(may)220 1421 y(be)h(in)o(c)q(l)o(uded)g(i)o(n)g(more)g
(t)o(ha)q(n)f(one)h(dra)o(wing)o(.)21 b(In)12 b(th)o(a)q(t)g(c)q(ase)h
(a)h(mark)f(of)f(c)q(ardi)o(nali)o(ty)g(\()h(a)g(number)220
1471 y(th)o(a)q(t)d(sa)q(y)o(s)h(ho)o(w)g(many)f(ti)o(m)q(es)h(t)o(ha)q
(t)f(clas)q(s)h(h)o(a)q(s)g(b)o(e)q(en)g(dr)o(awn)g(\))g(i)o(s)g(sho)o
(wn)o(.)k(An)c(e)o(xa)q(mpl)o(e)g(of)g(such)g(a)220 1520
y(clas)q(s)g(is)h(what)f(you)g(c)q(an)h(see)g(a)q(t)f(\002gur)o(e)i(3)o
(.)18 b(I)o(n)12 b(t)o(his)g(cas)q(e)g(t)o(he)g(c)q(ardi)o(nali)o(ty)f
(is)h(3.)17 b(This)11 b(is)h(\002gu)o(re)g(is)220 1570
y(don)o(e)f(wit)o(h)f(the)g(py)o(thon)g(code:)220 1651
y Fe(c)25 b(=)g(a_)o(simple_clas)o(s\(\))220 1701 y(c.do_n)o
(ame_clase\(')o(person'\))220 1751 y(c.do_a)o(ttributes\([)o('name')g
(,)g(')o(sex',)g('mone)o(y',)g('health)o(',)320 1801
y('h)o(obbies',)g('d)o(reams']\))220 1850 y(c.do_f)o(unctions\([')o
(dream',)g('l)o(ove',)g('play)f(soccer',)h(')o(diving']\))220
1900 y(c.inde)o(x_of_class\()o(3\))220 2000 y(c.do_l)o(ines\(\))220
2050 y(c.gene)o(rate_latex_)o(code\('draw)o(ing3.tex'\))220
2249 y Fd(4.4)63 b(Inh)o(er)q(i)o(tances)13 b(examples)220
2327 y Fg(W)m(ell)o(,)j(til)o(l)e(no)o(w)m(,)i(it)o(')n(s)e(a)h(very)f
(simpl)o(e)i(p)o(rogr)o(a)q(m,)g(let')m(s)f(f)o(a)q(ce)g(a)g(m)q(o)o
(re)g(int)o(e)q(r)o(e)q(sti)o(ng)f(example.)26 b(A)220
2377 y(in)o(herit)o(a)q(nce)11 b(of)f(classe)q(s.)j(\002gure)e(4)282
2426 y(T)q(h)o(is)f(is)h(achie)o(v)o(e)q(d)f(t)o(ypese)q(t)o(ti)o(ng)g
(:)320 2507 y Fe(c)24 b(=)h(a_simple_)o(class\(\))320
2557 y(c.)o(do_name_cla)o(se\('person)o('\))320 2607
y(c.)o(do_attribut)o(es\(['name')f(,)h('sex',)g(')o(money',)g('he)o
(alth',)320 2657 y('h)o(obbies',)g('d)o(reams']\))320
2707 y(c.)o(do_function)o(s\(['dream')o(,)g('love',)g(')o(play)g
(soccer)o(',)g('diving)o(']\))926 2831 y Fg(3)p eop
%%Page: 4 4
4 3 bop 427 294 a Fg(Figu)o(re)11 b(3:)h(Sing)o(le)f(\002gu)o(re)g(wi)o
(th)f(a)q(t)o(tr)o(ib)o(ut)o(ion)o(s,)h(funct)o(ions)f(and)g(m)q(arks)
799 1011 y @beginspecial 0 @llx -159 @lly 66 @urx 0 @ury
660 @rwi @setspecial
%%BeginDocument: consdiag.ps3
50 dict begin
/mv {stroke moveto} def
/lv {lineto} def
/st {currentpoint stroke moveto} def
/sl {st setlinewidth} def
/sd {st 0 setdash} def
/sg {st setgray} def
/bs {gsave} def /es {stroke grestore} def
/fl {gsave setgray fill grestore
 currentpoint newpath moveto} def
/fp {gsave setgray fill grestore st} def
/cv {curveto} def
/cr {gsave currentpoint newpath 3 -1 roll 0 360 arc
 stroke grestore} def
/fc {gsave setgray currentpoint newpath
 3 -1 roll 0 360 arc fill grestore} def
/ar {gsave currentpoint newpath 5 2 roll arc stroke grestore} def
/el {gsave /svm matrix currentmatrix def
 currentpoint translate scale newpath 0 0 1 0 360 arc
 svm setmatrix stroke grestore} def
/fe {gsave setgray currentpoint translate scale newpath
 0 0 1 0 360 arc fill grestore} def
/av {/hhwid exch 2 div def /hlen exch def
 /ah exch def /tipy exch def /tipx exch def
 currentpoint /taily exch def /tailx exch def
 /dx tipx tailx sub def /dy tipy taily sub def
 /alen dx dx mul dy dy mul add sqrt def
 /blen alen hlen sub def
 gsave tailx taily translate dy dx atan rotate
 (V) ah ne {blen 0 gt {blen 0 lineto} if} {alen 0 lineto} ifelse
 stroke blen hhwid neg moveto alen 0 lineto blen hhwid lineto
 (T) ah eq {closepath} if
 (W) ah eq {gsave 1 setgray fill grestore closepath} if
 (F) ah eq {fill} {stroke} ifelse
 grestore tipx tipy moveto} def
0.24 0.24 scale
1 setlinecap 1 setlinejoin
3 setlinewidth [] 0 setdash
0 0 moveto
0 sl
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 -57 mv
274 -57 lv
0 -368 mv
274 -368 lv
0 0 mv
137 0 lv
274 0 lv
274 -331 lv
274 -662 lv
191 -662 mv
274 -579 lv
191 -662 lv
215 -638 mv
215 -638 lv
274 -662 mv
137 -662 lv
0 -662 lv
0 -331 lv
0 0 lv
stroke end showpage
%%EndDocument
 @endspecial 820 378 a Fc(pe)o(r)q(s)o(on)820 487 y(na)o(me)820
527 y(s)o(e)o(x)820 564 y(mon)o(e)o(y)820 612 y(he)o(alt)q(h)820
653 y(ho)o(bbies)820 693 y(drea)o(ms)820 792 y(drea)o(m)820
830 y(lo)o(ve)820 863 y(play)f(s)o(oc)o(cer)820 901 y(di)o(ving)1023
1000 y(3)320 1227 y Fe(c.)o(do_lines\(\))320 1277 y(d)24
b(=)h(a_simple_)o(class\(\))320 1327 y(d.)o(do_name_cla)o(se\('work'\))
320 1376 y(d.)o(do_attribut)o(es\(['salar)o(y')g(,)g('post')o(,)320
1426 y('l)o(abor)g(union')o(,)g('product)o(ivity',)g('qu)o(alification)
o(s',)345 1476 y(')o(capabilitie)o(s']\))320 1526 y(d.)o(do_function)o
(s\(['work',)f('strike',)g('be)h(ill',)g(')o(be)g(fired'])o(\))320
1625 y(d.)o(do_lines\(\))320 1675 y(e)f(=)h(union_der)o(ivation\(\))320
1725 y(e.)o(add_union\(c)o(,d\))320 1775 y(e.)o(generate_la)o
(tex_code\(')o(drawing4.te)o(x'\))220 1908 y Fg(Ea)q(sy)m(,)11
b(uh)f(?)j(:)o(\))282 1958 y(But)c(m)q(u)o(c)q(h)h(more)g(c)q(ompl)o
(ex)g(dr)o(awing)o(s)h(are)g(also)f(eas)q(y)g(t)o(o)g(do)g(as)h(sh)o(o)
o(ws)21 b(5)10 b(,)g(th)o(is)g(is)g(a)h(pi)o(c)q(t)o(ure)220
2007 y(of)f(a)h(mot)o(he)q(r)f(class)h(t)o(ha)q(t)e(ha)q(s)h(sev)o(era)
q(l)f(da)q(u)o(ght)o(e)q(r)h(c)q(l)o(as)q(ses.)292 2057
y Fb(R)q(e)o(g)o(r)o(etf)o(ull)o(y)n(,)h(it)e(IS)h Fa(NO)n(T)i(poss)q
(i)o(ble)h(\()o(right)f(now\))g(to)g(inheritate)g(fr)n(om)g(mor)n(e)h
(t)o(han)220 2107 y(one)f(c)q(l)o(as)q(s.)29 b Fg(In)o(s)q(t)o(ea)q(d)
10 b(,)h(yo)o(u)f(c)q(an)g(use)h(in)o(dice)q(s)f(to)g(ma)q(r)o(k)g(s)q
(e)o(v)o(e)q(r)o(a)q(l)g(i)o(nherit)o(a)q(n)o(c)q(es.)282
2157 y(And)j(,)i(well)o(,)g(you)e(ca)q(n)g(use)h(sev)o(eral)f(le)o(vel)
o(s)h(of)f(inh)o(e)q(ri)o(tance)q(s,)i(j)o(ust)e(be)h(a)g(bi)o(t)f(c)q
(areful)g(about)220 2207 y(ho)n(w)e(yo)o(u)f(b)o(uil)o(d)g(the)g(c)q
(od)o(e)q(,)h(t)o(a)q(k)o(e)g(t)o(his)f(\(i)o(t)g(m)q(ak)o(e)q(s)g
(\002gure)21 b(6\))10 b(as)h(ex)o(a)q(mpl)o(e)q(:)320
2290 y Fe(d)24 b(=)h(a_simple_)o(class\(\))320 2339 y(d.)o(do_name_cla)
o(se\('worker)o('\))320 2389 y(d.)o(do_attribut)o(es\(['salar)o(y')g(,)
g('post')o(,)320 2439 y('l)o(abor)g(union')o(,)g('product)o(ivity',)g
('qu)o(alification)o(s',)345 2489 y(')o(capabilitie)o(s']\))320
2638 y(d.)o(do_lines\(\))320 2688 y(f)f(=)h(a_simple_)o(class\(\))926
2831 y Fg(4)p eop
%%Page: 5 5
5 4 bop 693 696 a Fg(Fi)o(gure)10 b(4:)j(Si)o(m)q(p)o(le)e(i)o(nheri)o
(tanc)q(e)763 2263 y @beginspecial -12 @llx -363 @lly
71 @urx 0 @ury 830 @rwi @setspecial
%%BeginDocument: consdiag.ps4
50 dict begin
/mv {stroke moveto} def
/lv {lineto} def
/st {currentpoint stroke moveto} def
/sl {st setlinewidth} def
/sd {st 0 setdash} def
/sg {st setgray} def
/bs {gsave} def /es {stroke grestore} def
/fl {gsave setgray fill grestore
 currentpoint newpath moveto} def
/fp {gsave setgray fill grestore st} def
/cv {curveto} def
/cr {gsave currentpoint newpath 3 -1 roll 0 360 arc
 stroke grestore} def
/fc {gsave setgray currentpoint newpath
 3 -1 roll 0 360 arc fill grestore} def
/ar {gsave currentpoint newpath 5 2 roll arc stroke grestore} def
/el {gsave /svm matrix currentmatrix def
 currentpoint translate scale newpath 0 0 1 0 360 arc
 svm setmatrix stroke grestore} def
/fe {gsave setgray currentpoint translate scale newpath
 0 0 1 0 360 arc fill grestore} def
/av {/hhwid exch 2 div def /hlen exch def
 /ah exch def /tipy exch def /tipx exch def
 currentpoint /taily exch def /tailx exch def
 /dx tipx tailx sub def /dy tipy taily sub def
 /alen dx dx mul dy dy mul add sqrt def
 /blen alen hlen sub def
 gsave tailx taily translate dy dx atan rotate
 (V) ah ne {blen 0 gt {blen 0 lineto} if} {alen 0 lineto} ifelse
 stroke blen hhwid neg moveto alen 0 lineto blen hhwid lineto
 (T) ah eq {closepath} if
 (W) ah eq {gsave 1 setgray fill grestore closepath} if
 (F) ah eq {fill} {stroke} ifelse
 grestore tipx tipy moveto} def
0.24 0.24 scale
1 setlinecap 1 setlinejoin
3 setlinewidth [] 0 setdash
0 0 moveto
0 sl
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 -57 mv
274 -57 lv
0 -368 mv
274 -368 lv
0 0 mv
137 0 lv
274 0 lv
274 -331 lv
274 -662 lv
137 -662 lv
0 -662 lv
0 -331 lv
0 0 lv
137 -661 mv
137 -779 lv
161 -803 lv
114 -803 lv
138 -779 lv
114 -803 lv
20 -803 lv
20 -850 lv
-52 -850 mv
-52 -850 lv
-52 -850 mv
-52 -850 lv
-52 -850 mv
-52 -850 lv
-52 -907 mv
296 -907 lv
-52 -1219 mv
296 -1219 lv
-52 -850 mv
122 -850 lv
296 -850 lv
296 -1181 lv
296 -1512 lv
122 -1512 lv
-52 -1512 lv
-52 -1181 lv
-52 -850 lv
stroke end showpage
%%EndDocument
 @endspecial 836 779 a Fc(perso)o(n)836 889 y(name)836
929 y(se)o(x)836 965 y(m)q(o)o(ne)o(y)836 1014 y(hea)o(l)q(th)836
1055 y(hobb)o(i)q(e)o(s)836 1095 y(dr)q(e)o(ams)836 1194
y(dr)q(e)o(am)836 1232 y(l)q(o)o(v)o(e)836 1265 y(pl)q(a)o(y)e(so)o
(cce)o(r)836 1303 y(div)o(i)q(n)o(g)784 1638 y(work)784
1740 y(salary)784 1778 y(pos)o(t)784 1825 y(l)q(a)o(bor)h(u)o(nion)784
1861 y(pr)q(o)o(duc)o(t)q(i)o(vit)q(y)784 1901 y(qua)o(l)q(i\002ca)o(t)
q(ion)o(s)784 1941 y(cap)o(abili)q(ti)q(e)o(s)784 2044
y(work)784 2082 y(str)q(ike)784 2120 y(be)f(il)q(l)784
2158 y(be)g(\002red)926 2831 y Fg(5)p eop
%%Page: 6 6
6 5 bop 682 886 a Fg(Fig)o(ure)11 b(5:)h(Se)o(veral)e(in)o(he)q(r)o
(itance)q(s)359 2073 y @beginspecial -24 @llx -272 @lly
253 @urx 0 @ury 2770 @rwi @setspecial
%%BeginDocument: consdiag.ps5
50 dict begin
/mv {stroke moveto} def
/lv {lineto} def
/st {currentpoint stroke moveto} def
/sl {st setlinewidth} def
/sd {st 0 setdash} def
/sg {st setgray} def
/bs {gsave} def /es {stroke grestore} def
/fl {gsave setgray fill grestore
 currentpoint newpath moveto} def
/fp {gsave setgray fill grestore st} def
/cv {curveto} def
/cr {gsave currentpoint newpath 3 -1 roll 0 360 arc
 stroke grestore} def
/fc {gsave setgray currentpoint newpath
 3 -1 roll 0 360 arc fill grestore} def
/ar {gsave currentpoint newpath 5 2 roll arc stroke grestore} def
/el {gsave /svm matrix currentmatrix def
 currentpoint translate scale newpath 0 0 1 0 360 arc
 svm setmatrix stroke grestore} def
/fe {gsave setgray currentpoint translate scale newpath
 0 0 1 0 360 arc fill grestore} def
/av {/hhwid exch 2 div def /hlen exch def
 /ah exch def /tipy exch def /tipx exch def
 currentpoint /taily exch def /tailx exch def
 /dx tipx tailx sub def /dy tipy taily sub def
 /alen dx dx mul dy dy mul add sqrt def
 /blen alen hlen sub def
 gsave tailx taily translate dy dx atan rotate
 (V) ah ne {blen 0 gt {blen 0 lineto} if} {alen 0 lineto} ifelse
 stroke blen hhwid neg moveto alen 0 lineto blen hhwid lineto
 (T) ah eq {closepath} if
 (W) ah eq {gsave 1 setgray fill grestore closepath} if
 (F) ah eq {fill} {stroke} ifelse
 grestore tipx tipy moveto} def
0.24 0.24 scale
1 setlinecap 1 setlinejoin
3 setlinewidth [] 0 setdash
0 0 moveto
0 sl
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 -57 mv
174 -57 lv
0 0 mv
87 0 lv
174 0 lv
174 -236 lv
174 -472 lv
87 -472 lv
0 -472 lv
0 -236 lv
0 0 lv
87 -472 mv
87 -590 lv
111 -614 lv
64 -614 lv
88 -590 lv
64 -614 lv
-30 -614 lv
-30 -661 lv
-102 -661 mv
-102 -661 lv
-102 -661 mv
-102 -661 lv
-102 -661 mv
-102 -661 lv
-102 -718 mv
246 -718 lv
-102 -661 mv
72 -661 lv
246 -661 lv
246 -897 lv
246 -1133 lv
72 -1133 lv
-102 -1133 lv
-102 -897 lv
-102 -661 lv
111 -614 mv
332 -614 lv
332 -661 lv
261 -661 mv
261 -661 lv
261 -661 mv
261 -661 lv
261 -661 mv
261 -661 lv
261 -718 mv
559 -718 lv
261 -661 mv
410 -661 lv
559 -661 lv
559 -897 lv
559 -1133 lv
410 -1133 lv
261 -1133 lv
261 -897 lv
261 -661 lv
332 -614 mv
678 -614 lv
678 -661 lv
607 -661 mv
607 -661 lv
607 -661 mv
607 -661 lv
607 -661 mv
607 -661 lv
607 -718 mv
1055 -718 lv
607 -661 mv
831 -661 lv
1055 -661 lv
1055 -897 lv
1055 -1133 lv
831 -1133 lv
607 -1133 lv
607 -897 lv
607 -661 lv
stroke end showpage
%%EndDocument
 @endspecial 482 969 a Fc(perso)o(n)482 1079 y(name)482
1119 y(se)o(x)482 1155 y(mone)o(y)482 1203 y(hea)o(l)q(th)482
1244 y(hob)o(bies)482 1284 y(dreams)380 1638 y(work)o(er)380
1740 y(sa)o(l)q(a)o(r)q(y)380 1778 y(pos)o(t)380 1825
y(l)q(a)o(bor)f(union)380 1861 y(produ)o(ctivity)380
1901 y(qua)o(l)q(i\002c)o(ati)q(o)o(ns)380 1941 y(cap)o(ab)o(i)q(li)q
(ties)743 1638 y(father)743 1740 y(b)o(us)o(y)743 1784
y(t)q(e)o(nde)o(r)q(n)o(ess)743 1825 y(stubo)o(r)q(n)o(nes)o(s)743
1861 y(cares)o(s)743 1905 y(kiss)o(es)743 1941 y(cap)o(ab)o(i)q(li)q
(ties)1089 1634 y(che)o(ss)g(p)o(l)q(a)o(yer)1089 1744
y(elo)1089 1780 y(cruelty)1089 1825 y(stubo)o(r)q(n)o(nes)o(s)1089
1865 y(bad)g(tri)q(c)o(ks)1089 1901 y(i)q(n)o(t)q(e)o(l)q(li)q(g)o(en)o
(ce)1089 1941 y(ope)o(nings)g(k)o(no)o(wled)o(ge)926
2831 y Fg(6)p eop
%%Page: 7 7
7 6 bop 320 266 a Fe(f.)o(do_name_cla)o(se\('comput)o(er)25
b(scientis)o(t'\))320 315 y(f.)o(do_attribut)o(es\(['langu)o(ages')g(,)
g('pr)o(eferred)g(OS')o(,)320 365 y('p)o(referred)g(ed)o(itor',)g('ha)o
(ckerism',)g(')o(ATBB']\))320 465 y(f.)o(do_lines\(\))320
565 y(h)f(=)h(union_der)o(ivation\(\))320 614 y(h.)o(add_union\(d)o
(,f\))320 714 y(c)f(=)h(a_simple_)o(class\(\))320 764
y(c.)o(do_name_cla)o(se\('person)o('\))320 814 y(c.)o(do_attribut)o
(es\(['name')f(,)h('sex',)g(')o(money',)g('he)o(alth',)320
863 y('h)o(obbies',)g('d)o(reams']\))320 913 y(c.)o(do_lines\(\))320
1013 y(e)f(=)h(union_der)o(ivation\(\))320 1063 y(e.)o(add_union\(c)o
(,h\))320 1112 y(e.)o(generate_la)o(tex_code\(')o(drawing6.te)o(x'\))
282 1245 y Fg(Finall)o(y)13 b(a)h(rema)q(i)o(nder:)k(Y)-5
b(ou)13 b(ca)q(n)g(combin)o(e)h(th)o(is)f(fea)q(t)o(ures)h(so)f(yo)o(u)
g(c)q(an)g(get)g(se)o(veral)g(l)o(ev)o(els)220 1295 y(and)d(wit)o(h)h
(se)o(v)o(e)q(r)o(a)q(l)f(son)o(s)q(,)g(b)o(ut...)k(w)o(a)q(t)o(c)q(h)c
(t)o(he)h(spac)q(e!)i(The)e(p)o(iec)q(e)g(o)o(f)f(pa)q(p)o(e)q(r)g(has)
h(i)o(ts)f(li)o(m)q(i)o(tati)o(ons.)220 1414 y Fd(4.5)63
b(Associati)o(ons)13 b(examples)220 1492 y Fg(W)m(ell)o(,)f(I)f(got)f
(a)i(bi)o(t)f(up)o(s)q(et)g(wh)o(e)q(n)g(I)g(reali)o(z)q(e)g(that)g(f)o
(a)q(ct)g(of)g(mul)o(ti)o(ple)g(in)o(he)q(r)o(itance)q(s,)g(s)q(o)g
(associati)o(ons)220 1542 y(ha)o(v)o(e)q(n')o(t)g(g)o(ot)g(so)g(compli)
o(c)q(ated,)h(and)f(i)o(n)g(fac)q(t)f(,)i(you)f(can)g(do)g(onl)o(y)g(a)
q(ssociati)o(ons)g(between)g(s)q(i)o(mple)220 1591 y(clas)q(ses)e(and)f
(a)q(ssociati)o(ons,)h(s)q(o)f(yo)o(u)h(ca)q(n)o(')o(t)g(mi)o(x)g(ass)q
(o)o(c)q(i)o(a)q(t)o(ion)o(s)g(a)q(n)o(d)g(d)o(e)q(ri)n(v)o(ati)o(ons,)
g(that)f(wou)o(ld)g(hav)o(e)220 1641 y(bee)q(n)i(\002ne.)j(\002gure)d
(7)220 1760 y Fd(4.6)50 b(Aggr)o(egati)o(ons)13 b(t)o(oo!)220
1838 y Fg(Y)-5 b(ou)11 b(can)g(do)f(a)q(g)o(greg)o(a)q(t)o(io)o(ns,)i
(j)o(ust)e(replac)q(e)h(\223deri)o(v)n(a)q(t)o(ion)o(\224)h(i)o(n)e
(the)h(pr)o(evi)o(ous)g(e)o(xa)q(mpl)o(e)q(s)f(for)g(\223)q(agre-)220
1888 y(gati)o(on\224)g(a)q(nd)g(t)o(hat')n(s)g(all.)j(As)d(exam)q(p)o
(le)h(l)o(ook)f(at)g(\002gure)21 b(8.)220 2028 y Fh(5)75
b(Ca)n(v)o(eats)15 b(and)g(b)o(u)q(g)o(s)220 2121 y Fg(If)10
b(you)g(w)o(a)q(n)o(t)g(to)g(do)g(v)o(ery)g(c)q(ompl)o(ex)g(draw)o
(ings)g(as)q(:)282 2204 y Ff(\017)21 b Fg(se)o(v)o(e)q(ral)10
b(le)o(v)o(e)q(l)o(s)h(o)o(f)g(i)o(nheri)o(tanc)q(es/agreg)o(atio)o(ns)
g(and)f(ea)q(ch)g(oth)o(e)q(r)g(wit)o(h)g(lot)o(s)h(o)o(f)g(so)o(ns,)
282 2287 y Ff(\017)21 b Fg(really)10 b(d)o(e)q(ep)g(tree)q(s)g(of)g(in)
o(he)q(r)o(itance)q(s,)g(m)q(or)o(e)h(th)o(a)q(n)f(fou)o(r)h(are)g(p)o
(robabl)o(y)g(a)f(re)q(all)o(y)g(bad)h(i)o(dea)q(,)282
2370 y Ff(\017)21 b Fg(se)o(v)o(e)q(ral)10 b(nested)g(a)q(ssociati)o
(ons,)220 2453 y(th)o(e)q(n)o(,)j(pro)o(ba)q(b)o(ly)f(y)o(ou')o(ll)f
(get)h(a)g(shi)o(t)g(as)g(out)o(c)q(ome.)18 b(This)12
b(u)o(ti)o(lit)o(y)g(i)o(s)g(not)f(c)q(l)o(ev)o(er)n(,)i(j)o(ust)f(t)o
(ry)g(t)o(o)g(t)o(o)g(se)q(t)220 2502 y(th)o(e)f(c)q(l)o(a)q(sses)g(i)o
(n)f(a)h(log)o(ica)q(l)o(,)g(predetermined)f(way)m(.)282
2552 y(Apart)h(fr)o(om)h(t)o(hi)o(s)g(cav)o(ea)q(t)o(,)g(t)o(here)q(')o
(ll)e(be)h(s)q(o)o(m)q(e)g(b)o(ugs,)g(.)c(.)f(.)h(,)12
b(o)o(r)f(perhaps)g(not)o(.)16 b(p)o(yt)o(hon)11 b(i)o(s)g(ra)q(t)o
(her)220 2602 y(rob)o(u)o(st!)926 2831 y(7)p eop
%%Page: 8 8
8 7 bop 607 577 a Fg(Fi)o(gure)11 b(6)o(:)i(Se)o(v)o(e)q(ral)d(l)o(ev)o
(els)g(of)g(inh)o(e)q(ri)o(tance)q(s)713 2382 y @beginspecial
-28 @llx -420 @lly 79 @urx 0 @ury 1070 @rwi @setspecial
%%BeginDocument: consdiag.ps6
50 dict begin
/mv {stroke moveto} def
/lv {lineto} def
/st {currentpoint stroke moveto} def
/sl {st setlinewidth} def
/sd {st 0 setdash} def
/sg {st setgray} def
/bs {gsave} def /es {stroke grestore} def
/fl {gsave setgray fill grestore
 currentpoint newpath moveto} def
/fp {gsave setgray fill grestore st} def
/cv {curveto} def
/cr {gsave currentpoint newpath 3 -1 roll 0 360 arc
 stroke grestore} def
/fc {gsave setgray currentpoint newpath
 3 -1 roll 0 360 arc fill grestore} def
/ar {gsave currentpoint newpath 5 2 roll arc stroke grestore} def
/el {gsave /svm matrix currentmatrix def
 currentpoint translate scale newpath 0 0 1 0 360 arc
 svm setmatrix stroke grestore} def
/fe {gsave setgray currentpoint translate scale newpath
 0 0 1 0 360 arc fill grestore} def
/av {/hhwid exch 2 div def /hlen exch def
 /ah exch def /tipy exch def /tipx exch def
 currentpoint /taily exch def /tailx exch def
 /dx tipx tailx sub def /dy tipy taily sub def
 /alen dx dx mul dy dy mul add sqrt def
 /blen alen hlen sub def
 gsave tailx taily translate dy dx atan rotate
 (V) ah ne {blen 0 gt {blen 0 lineto} if} {alen 0 lineto} ifelse
 stroke blen hhwid neg moveto alen 0 lineto blen hhwid lineto
 (T) ah eq {closepath} if
 (W) ah eq {gsave 1 setgray fill grestore closepath} if
 (F) ah eq {fill} {stroke} ifelse
 grestore tipx tipy moveto} def
0.24 0.24 scale
1 setlinecap 1 setlinejoin
3 setlinewidth [] 0 setdash
0 0 moveto
0 sl
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 -57 mv
174 -57 lv
0 0 mv
87 0 lv
174 0 lv
174 -236 lv
174 -472 lv
87 -472 lv
0 -472 lv
0 -236 lv
0 0 lv
87 -472 mv
87 -590 lv
111 -614 lv
64 -614 lv
88 -590 lv
64 -614 lv
-30 -614 lv
-30 -661 lv
-102 -661 mv
-102 -661 lv
-102 -661 mv
-102 -661 lv
-102 -661 mv
-102 -661 lv
-102 -718 mv
246 -718 lv
-102 -661 mv
72 -661 lv
246 -661 lv
246 -897 lv
246 -1133 lv
72 -1133 lv
-102 -1133 lv
-102 -897 lv
-102 -661 lv
72 -1134 mv
72 -1252 lv
96 -1276 lv
49 -1276 lv
73 -1252 lv
49 -1276 lv
-45 -1276 lv
-45 -1323 lv
-117 -1323 mv
-117 -1323 lv
-117 -1323 mv
-117 -1323 lv
-117 -1323 mv
-117 -1323 lv
-117 -1379 mv
331 -1379 lv
-117 -1323 mv
107 -1323 lv
331 -1323 lv
331 -1536 lv
331 -1749 lv
107 -1749 lv
-117 -1749 lv
-117 -1536 lv
-117 -1323 lv
stroke end showpage
%%EndDocument
 @endspecial 851 661 a Fc(perso)o(n)851 771 y(name)851
811 y(se)o(x)851 847 y(m)q(o)o(ne)o(y)851 895 y(hea)o(l)q(th)851
936 y(hobb)o(i)q(e)o(s)851 976 y(dr)q(e)o(ams)749 1330
y(worke)o(r)749 1432 y(salary)749 1471 y(pos)o(t)749
1517 y(l)q(a)o(bor)g(u)o(nion)749 1553 y(pr)q(o)o(duc)o(t)q(i)o(vit)q
(y)749 1593 y(qua)o(l)q(i\002ca)o(t)q(ion)o(s)749 1633
y(cap)o(abili)q(ti)q(e)o(s)734 1988 y(compu)o(t)q(e)o(r)g(s)o(cientist)
734 2095 y(l)q(a)o(ngua)o(ge)o(s)734 2135 y(pr)q(e)o(f)q(e)o(r)q(red)f
(OS)734 2175 y(pr)q(e)o(f)q(e)o(r)q(red)g(e)o(dit)q(o)o(r)734
2218 y(hac)o(ke)o(r)q(ism)734 2258 y(A)l(TBB)926 2831
y Fg(8)p eop
%%Page: 9 9
9 8 bop 693 416 a Fg(Fi)o(gure)10 b(7:)j(Si)o(m)q(p)o(le)e(assoc)q(i)o
(a)q(t)o(io)o(n)511 941 y @beginspecial 0 @llx -113 @lly
204 @urx 0 @ury 2040 @rwi @setspecial
%%BeginDocument: consdiag.ps7
50 dict begin
/mv {stroke moveto} def
/lv {lineto} def
/st {currentpoint stroke moveto} def
/sl {st setlinewidth} def
/sd {st 0 setdash} def
/sg {st setgray} def
/bs {gsave} def /es {stroke grestore} def
/fl {gsave setgray fill grestore
 currentpoint newpath moveto} def
/fp {gsave setgray fill grestore st} def
/cv {curveto} def
/cr {gsave currentpoint newpath 3 -1 roll 0 360 arc
 stroke grestore} def
/fc {gsave setgray currentpoint newpath
 3 -1 roll 0 360 arc fill grestore} def
/ar {gsave currentpoint newpath 5 2 roll arc stroke grestore} def
/el {gsave /svm matrix currentmatrix def
 currentpoint translate scale newpath 0 0 1 0 360 arc
 svm setmatrix stroke grestore} def
/fe {gsave setgray currentpoint translate scale newpath
 0 0 1 0 360 arc fill grestore} def
/av {/hhwid exch 2 div def /hlen exch def
 /ah exch def /tipy exch def /tipx exch def
 currentpoint /taily exch def /tailx exch def
 /dx tipx tailx sub def /dy tipy taily sub def
 /alen dx dx mul dy dy mul add sqrt def
 /blen alen hlen sub def
 gsave tailx taily translate dy dx atan rotate
 (V) ah ne {blen 0 gt {blen 0 lineto} if} {alen 0 lineto} ifelse
 stroke blen hhwid neg moveto alen 0 lineto blen hhwid lineto
 (T) ah eq {closepath} if
 (W) ah eq {gsave 1 setgray fill grestore closepath} if
 (F) ah eq {fill} {stroke} ifelse
 grestore tipx tipy moveto} def
0.24 0.24 scale
1 setlinecap 1 setlinejoin
3 setlinewidth [] 0 setdash
0 0 moveto
0 sl
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 -57 mv
398 -57 lv
0 0 mv
199 0 lv
398 0 lv
398 -236 lv
398 -472 lv
199 -472 lv
0 -472 lv
0 -236 lv
0 0 lv
400 -212 mv
400 -212 lv
398 -236 mv
625 -236 lv
533 -212 mv
533 -212 lv
625 -142 mv
625 -142 lv
625 -142 mv
625 -142 lv
625 -142 mv
625 -142 lv
625 -198 mv
849 -198 lv
625 -142 mv
737 -142 lv
849 -142 lv
849 -307 lv
849 -472 lv
737 -472 lv
625 -472 lv
625 -307 lv
625 -142 lv
stroke end showpage
%%EndDocument
 @endspecial 532 502 a Fc(enterpri)q(s)o(e)532 608 y(name)532
648 y(pr)q(o)o(\002ts)532 692 y(estab)o(l)q(is)o(hed)532
728 y(\002sc)o(al)f(p)o(aradise)o(s)532 773 y(f)q(raud)o(s)532
813 y(bad)f(tr)q(ick)o(s)920 694 y(0:n)85 b(0:1)1156
647 y(work)o(er)1156 746 y(wag)o(e)1156 794 y(t)q(imetable)1156
830 y(sen)o(i)q(o)o(r)q(it)q(y)675 1330 y Fg(Fi)o(gure)10
b(8:)j(M)o(ult)o(ipl)o(e)e(aggreg)o(a)q(t)o(io)o(n)359
2543 y @beginspecial -30 @llx -278 @lly 247 @urx 0 @ury
2770 @rwi @setspecial
%%BeginDocument: consdiag.ps8
50 dict begin
/mv {stroke moveto} def
/lv {lineto} def
/st {currentpoint stroke moveto} def
/sl {st setlinewidth} def
/sd {st 0 setdash} def
/sg {st setgray} def
/bs {gsave} def /es {stroke grestore} def
/fl {gsave setgray fill grestore
 currentpoint newpath moveto} def
/fp {gsave setgray fill grestore st} def
/cv {curveto} def
/cr {gsave currentpoint newpath 3 -1 roll 0 360 arc
 stroke grestore} def
/fc {gsave setgray currentpoint newpath
 3 -1 roll 0 360 arc fill grestore} def
/ar {gsave currentpoint newpath 5 2 roll arc stroke grestore} def
/el {gsave /svm matrix currentmatrix def
 currentpoint translate scale newpath 0 0 1 0 360 arc
 svm setmatrix stroke grestore} def
/fe {gsave setgray currentpoint translate scale newpath
 0 0 1 0 360 arc fill grestore} def
/av {/hhwid exch 2 div def /hlen exch def
 /ah exch def /tipy exch def /tipx exch def
 currentpoint /taily exch def /tailx exch def
 /dx tipx tailx sub def /dy tipy taily sub def
 /alen dx dx mul dy dy mul add sqrt def
 /blen alen hlen sub def
 gsave tailx taily translate dy dx atan rotate
 (V) ah ne {blen 0 gt {blen 0 lineto} if} {alen 0 lineto} ifelse
 stroke blen hhwid neg moveto alen 0 lineto blen hhwid lineto
 (T) ah eq {closepath} if
 (W) ah eq {gsave 1 setgray fill grestore closepath} if
 (F) ah eq {fill} {stroke} ifelse
 grestore tipx tipy moveto} def
0.24 0.24 scale
1 setlinecap 1 setlinejoin
3 setlinewidth [] 0 setdash
0 0 moveto
0 sl
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 0 mv
0 0 lv
0 -57 mv
174 -57 lv
0 0 mv
87 0 lv
174 0 lv
174 -236 lv
174 -472 lv
87 -472 lv
0 -472 lv
0 -236 lv
0 0 lv
87 -472 mv
111 -496 lv
87 -520 lv
111 -496 lv
87 -472 lv
63 -496 lv
87 -520 lv
87 -638 lv
-55 -638 lv
-55 -685 lv
-126 -685 mv
-126 -685 lv
-126 -685 mv
-126 -685 lv
-126 -685 mv
-126 -685 lv
-126 -742 mv
222 -742 lv
-126 -685 mv
48 -685 lv
222 -685 lv
222 -921 lv
222 -1157 lv
48 -1157 lv
-126 -1157 lv
-126 -921 lv
-126 -685 lv
87 -638 mv
308 -638 lv
308 -685 lv
237 -685 mv
237 -685 lv
237 -685 mv
237 -685 lv
237 -685 mv
237 -685 lv
237 -742 mv
535 -742 lv
237 -685 mv
386 -685 lv
535 -685 lv
535 -921 lv
535 -1157 lv
386 -1157 lv
237 -1157 lv
237 -921 lv
237 -685 lv
308 -638 mv
654 -638 lv
654 -685 lv
583 -685 mv
583 -685 lv
583 -685 mv
583 -685 lv
583 -685 mv
583 -685 lv
583 -742 mv
1031 -742 lv
583 -685 mv
807 -685 lv
1031 -685 lv
1031 -921 lv
1031 -1157 lv
807 -1157 lv
583 -1157 lv
583 -921 lv
583 -685 lv
stroke end showpage
%%EndDocument
 @endspecial 506 1414 a Fc(perso)o(n)506 1524 y(name)506
1564 y(se)o(x)506 1600 y(mone)o(y)506 1648 y(hea)o(l)q(th)506
1689 y(hob)o(bies)506 1729 y(dreams)380 2108 y(work)o(er)380
2210 y(sa)o(l)q(a)o(r)q(y)380 2248 y(pos)o(t)380 2294
y(l)q(a)o(bor)e(union)380 2330 y(produ)o(ctivity)380
2371 y(qua)o(l)q(i\002c)o(ati)q(o)o(ns)380 2411 y(cap)o(ab)o(i)q(li)q
(ties)743 2108 y(father)743 2210 y(b)o(us)o(y)743 2254
y(t)q(e)o(nde)o(r)q(n)o(ess)743 2294 y(stubo)o(r)q(n)o(nes)o(s)743
2329 y(cares)o(s)743 2375 y(kiss)o(es)743 2411 y(cap)o(ab)o(i)q(li)q
(ties)1089 2104 y(che)o(ss)g(p)o(l)q(a)o(yer)1089 2214
y(elo)1089 2250 y(cruelty)1089 2294 y(stubo)o(r)q(n)o(nes)o(s)1089
2334 y(bad)g(tri)q(c)o(ks)1089 2371 y(i)q(n)o(t)q(e)o(l)q(li)q(g)o(en)o
(ce)1089 2411 y(ope)o(nings)g(k)o(no)o(wled)o(ge)926
2831 y Fg(9)p eop
%%Page: 10 10
10 9 bop 220 266 a Fh(6)60 b(By)o(e)14 b(b)q(y)o(e)220
358 y Fg(I)g(hope)h(t)o(hi)o(s)g(docume)q(n)o(tati)o(on)g(h)o(e)q(l)o
(ps)g(y)o(ou)g(t)o(o)f(use)h(thi)o(s)g(ut)o(il)o(it)o(y)m(.)26
b(It')m(s)15 b(no)o(t)f(dif)n(\002)q(cul)o(t)g(a)q(nd)g(gr)o(e)q(atl)o
(y)220 408 y(pro)o(\002table.)h(And)10 b(if)h(yo)o(u)g(want)f(to)g(ge)q
(t)g(simil)o(a)q(r)g(drawi)o(ngs)h(or)f(impro)o(v)o(e)h(s)q(o)o(m)q(e)g
(of)g(t)o(hem)g(just)f(take)220 458 y(a)h(l)o(ook)f(at)g(the)g(c)q(od)o
(e)q(,)h(o)o(nc)q(e)f(you)g(get)g(a)q(ccostumed)g(to)g(it)g(,)g(you')o
(ll)f(\002)q(n)o(d)h(it)g(qu)o(it)o(e)h(log)o(ica)q(l)o(.)915
2831 y(10)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF