diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/presentations/images/pd/wieesgeht.eps')
-rw-r--r-- | Master/texmf-dist/doc/latex/presentations/images/pd/wieesgeht.eps | 3837 |
1 files changed, 3837 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/presentations/images/pd/wieesgeht.eps b/Master/texmf-dist/doc/latex/presentations/images/pd/wieesgeht.eps new file mode 100644 index 00000000000..6804ea17d4d --- /dev/null +++ b/Master/texmf-dist/doc/latex/presentations/images/pd/wieesgeht.eps @@ -0,0 +1,3837 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Creator: dvips(k) 5.97 Copyright 2008 Radical Eye Software +%%Title: wieesgeht.dvi +%%CreationDate: Sun May 31 12:40:54 2009 +%%BoundingBox: 135 381 525 664 +%%DocumentFonts: LucidaBright-Demi LucidaBrightCE LucidaSans-Typewriter +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips -E wieesgeht.dvi -o wieesgeht.eps +%DVIPSParameters: dpi=600 +%DVIPSSource: TeX output 2009.05.31:1240 +%%BeginProcSet: tex.pro 0 0 +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}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{A A 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/IEn 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 IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 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/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S +/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy +setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask +restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 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 A 1 get A +mul exch 0 get A 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/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 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/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/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 +%%BeginProcSet: pstricks.pro 0 0 +% $Id: pstricks.pro 40 2008-09-04 17:56:41Z herbert $ +% +%% PostScript prologue for pstricks.tex. +%% Version 1.06, 2009/01/30 +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +% +% +% Define the follwing gs-functions if not known, eg when using distiller +% +systemdict /.setopacityalpha known not {/.setopacityalpha { pop } def } if +systemdict /.setblendmode known not {/.setblendmode { pop } def } if +systemdict /.setshapealpha known not {/.setshapealpha { pop } def } if +% +/tx@Dict 200 dict def % the main PSTricks dictionary +tx@Dict begin +/ADict 25 dict def % The arrow dictionaray +/CM { matrix currentmatrix } bind def +/SLW /setlinewidth load def +/CLW /currentlinewidth load def +/CP /currentpoint load def +/ED { exch def } bind def +/L /lineto load def +/T /translate load def +/TMatrix { } def +/RAngle { 0 } def +/Sqrt { dup 0 lt { pop 0 } { sqrt } ifelse } def % return 0 for negative arguments +/Atan { /atan load stopped { pop pop 0 } if } def % return 0 if atan not known +/ATAN1 {neg -1 atan 180 sub } def % atan(x) (only one parameter) +/Div { dup 0 eq { pop } { div } ifelse } def % control the division +/tan { dup cos abs 1.e-10 lt + { pop 1.e10 } % return 1.e10 as infinit + { dup sin exch cos div } ifelse % default sin/cos +} def +/Tan { dup sin exch cos Div } def % sin(x)/cos(x) x in degrees +/Acos {dup dup mul neg 1 add dup 0 lt { % arc cos, returns 0 when negative root + pop pop 0 }{ sqrt exch atan} ifelse } def +/NET { neg exch neg exch T } def % change coordinate system to the negative one +/Pyth { dup mul exch dup mul add sqrt } def % Pythagoras, expects 2 parameter +/Pyth2 { % Pythagoras, xA yA xB yB + 3 -1 roll % xA xB yB yA + sub % xA xB yB-yA + 3 1 roll % yB-yA xA xB + sub % yB-yA xA-xB + Pyth } def +/PtoC { 2 copy cos mul 3 1 roll sin mul } def % Polar to Cartesian +/Rand { rand 4294967295 div } def % a real random number +%----------------- hv added 20050516 --------------- +/PiDiv2 1.57079632680 def +/Pi 3.14159265359 def +/TwoPi 6.28318530718 def +/Euler 2.71828182846 def +%/e Euler bind def +% +/RadtoDeg { 180 mul Pi div } bind def % convert from radian to degrees +/DegtoRad { Pi mul 180 div } bind def % viceversa +%----------------- hv end--------------------------- +/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def } def +% +/PathLength { + flattenpath /z 0 def + { /y1 ED /x1 ED /y2 y1 def /x2 x1 def } + { /y ED /x ED PathLength@ } + {} + { /y y2 def /x x2 def PathLength@ } + /pathforall load stopped { pop pop pop pop } if + z +} def +% +/STP { .996264 dup scale } def % BP/PT scaling +/STV { SDict begin normalscale end STP } def % +% +%%-------------- DG begin patch 15 ---------------%% +%/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def +%PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y +%mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul +%/y ED x mul /x ED x 0 gt y 0 gt and { [ y x ] 1 a sub y mul } { [ 1 0 ] +%0 } ifelse setdash stroke } def +/DashLine { + dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def PathLength } ifelse + /b ED /x1 ED /y1 ED /x ED /y ED + /z y x add y1 add x1 add def + /Coef b a .5 sub 2 mul y mul sub z Div round + z mul a .5 sub 2 mul y mul add b exch Div def + /y y Coef mul def + /x x Coef mul def + /y1 y1 Coef mul def + /x1 x1 Coef mul def + x1 0 gt y1 0 gt or x 0 gt or y 0 gt and + { [ y x y1 x1 ] 1 a sub y mul } + { [ 1 0 ] 0 } ifelse + setdash stroke +} def +%%-------------- DG end patch 15 ---------------%% +/DotLine { + /b PathLength def + /a ED /z ED /y CLW def + /z y z add def + a 0 gt { + /b b a div def + }{ + a 0 eq { + /b b y sub def + }{ a -3 eq { + /b b y add def } if + } ifelse + } ifelse + [ 0 b b z Div round Div dup 0 le { pop 1 } if ] + a 0 gt { 0 }{ y 2 div a -2 gt { neg }if } ifelse + setdash 1 setlinecap stroke +} def +% +/LineFill { % hv ------------ patch 7 ------------- + gsave + abs /hatchWidthInc ED + abs /hatchSepInc ED + abs CLW add /a ED + a 0 dtransform round exch round exch + 2 copy idtransform + exch Atan rotate + idtransform pop /a ED + .25 .25 itransform pathbbox + /y2 ED + a Div ceiling cvi /x2 ED /y1 ED + a Div cvi /x1 ED /y2 y2 y1 sub def + clip + newpath + 2 setlinecap + systemdict + /setstrokeadjust known { true setstrokeadjust } if + x2 x1 sub 1 add { + x1 a mul y1 moveto 0 y2 rlineto stroke + /x1 x1 1 add + hatchWidthInc 0 gt { CLW add } if + def + hatchSepInc 0 gt hatchWidthInc 0 gt or { + /a a hatchSepInc add def + CLW hatchWidthInc add SLW + } if + } repeat + grestore + pop pop } def +% +/PenroseFill {% on stack: scaling factor + dup dup scale + 1 exch div round /penroseFactor ED + a 0 dtransform round exch round exch + 2 copy idtransform + exch Atan rotate + idtransform pop /a ED + .25 .25 itransform pathbbox + /y2 ED + a Div ceiling cvi /x2 ED /y1 ED + a Div cvi /x1 ED /y2 y2 y1 sub def + clip + newpath + systemdict + /setstrokeadjust known { true setstrokeadjust } if + /I/S/L/W/G/+/Z/F/E/D[/def/exch/for{E D}/add{s E get mul} + { Z -36.2001 1 33 }{25 E S rlineto}{/q Z dup q G E q 1 + G}{Z 2 2}]{cvx def}forall + [0 72 1008 {dup sin E cos }F ]1 setlinejoin/s W{/a W{/b I 10{/i I 4{/m I moveto + i m +/j I 10{/l Z b m l + G a l G sub s m get div .2 + floor .3 + 25 + mul j l + S rmoveto}F i L j L stroke }F}F}F}F + grestore + pop pop +} def +% +%gsave abs CLW add /a ED a 0 dtransform round exch round exch +%2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25 +%% DG/SR modification begin - Dec. 12, 1997 - Patch 2 +%%itransform translate pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a +%itransform pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a +%% DG/SR modification end +%Div cvi /x1 ED /y2 y2 y1 sub def clip newpath 2 setlinecap systemdict +%/setstrokeadjust known { true setstrokeadjust } if x2 x1 sub 1 add { x1 +%% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) +%% a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore } +%% def +%a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore +%pop pop } def +%% DG/SR modification end +% +/BeginArrow { + ADict begin % hold it local, for end see EndArrow + /@mtrx CM def + gsave + 2 copy T + 2 index sub neg exch + 3 index sub exch Atan + rotate newpath +} def +% +/EndArrow { @mtrx setmatrix CP grestore end } def % end the ADict +% +/Arrow { + CLW mul add dup + 2 div /w ED + mul dup /h ED + mul /a ED + { 0 h T 1 -1 scale } if + w neg h moveto + 0 0 L w h L w neg a neg rlineto + gsave fill grestore +} def +% +/ArrowD { % the sides are drawn as curves (hv 20071211) + CLW mul add dup + 2 div /w ED + mul dup /h ED + mul /Inset ED + { 0 h T 1 -1 scale } if % changes the direction +% we use y=w/h^2 * x^2 as equation for the control points +% for the coordinates the arrow is seen from top to bottom +% the bottom (tip) is (0;0) + w neg h moveto % lower left of > + w 9 div 4 mul neg h 3 div 2 mul + w 9 div neg h 3 div + 0 0 curveto % tip of > + w 9 div h 3 div + w 9 div 4 mul h 3 div 2 mul + w h curveto % upper left of > + w neg Inset neg rlineto % move to x=0 and inset + gsave fill grestore +} def +% +/Tbar { + CLW mul add /z ED + z -2 div CLW 2 div moveto + z 0 rlineto stroke + 0 CLW moveto +} def +% +/Bracket { + CLW mul add dup CLW sub 2 div + /x ED mul CLW add /y ED /z CLW 2 div def + x neg y moveto + x neg CLW 2 div L x CLW 2 div L x y L stroke + 0 CLW moveto +} def +% +/RoundBracket { + CLW mul add dup 2 div + /x ED mul /y ED /mtrx CM def + 0 CLW 2 div T x y mul 0 ne { x y scale } if + 1 1 moveto + .85 .5 .35 0 0 0 curveto + -.35 0 -.85 .5 -1 1 curveto + mtrx setmatrix stroke 0 CLW moveto +} def +% +/SD { 0 360 arc fill } def +% +/EndDot { % DS is the dot size + { /z DS def } { /z 0 def } ifelse + /b ED 0 z DS SD b { 0 z DS CLW sub SD } if + 0 DS z add CLW 4 div sub moveto } def +% +/Shadow { [ { /moveto load } { /lineto load } { /curveto load } { + /closepath load } /pathforall load stopped { pop pop pop pop CP /moveto + load } if ] cvx newpath 3 1 roll T exec } def +% +%/NArray { +% aload length 2 div dup dup cvi eq not { exch pop } if /n exch +% cvi def +%} def +% +/NArray { % holds the coordinates and on top of stack the showpoints boolean + /showpoints ED + counttomark 2 div dup cvi /n ED + n eq not { exch pop } if + showpoints { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse +} def +% +/Line { + NArray n 0 eq not + { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub def + n { Lineto } repeat + CP 4 2 roll ArrowB L pop pop + } if +} def +% +/Arcto { + /a [ 6 -2 roll ] cvx def + a r + /arcto load stopped { 5 } { 4 } ifelse { pop } repeat + a +} def +% +/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq + and { pop pop /n n 1 sub def } if } def +/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop } + repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1 + ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1 + moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto + Lineto pop pop closepath } ifelse } def +/Diamond { + /mtrx CM def + T rotate + /h ED + /w ED + dup 0 eq { pop } { CLW mul neg + /d ED + /a w h Atan def + /h d a sin Div h add def + /w d a cos Div w add def } ifelse + mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2 div + /ArrowA { moveto } def + /ArrowB { } def + false Line + closepath mtrx setmatrix } def +% DG modification begin - Jan. 15, 1997 +%/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup 0 eq { +%pop } { CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 +%div dup cos exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0 +%d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx +%setmatrix } def +% +/Triangle { + /mtrx CM def + translate + rotate /h ED 2 div /w ED + dup CLW mul /d ED + /h h d w h Atan sin Div sub def + /w w d h w Atan 2 div dup cos exch sin Div mul sub def + mark + 0 d w neg d 0 h w d 0 d + /ArrowA { moveto } def + /ArrowB { } def + false + Line + closepath + mtrx +% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) +% setmatrix } def + setmatrix pop +} def +% DG/SR modification end +% +/CCA { + /y ED /x ED + 2 copy y sub /dy1 ED + x sub /dx1 ED + /l1 dx1 dy1 Pyth def +} def +% +/CC { + /l0 l1 def + /x1 x dx sub def + /y1 y dy sub def + /dx0 dx1 def + /dy0 dy1 def + CCA + /dx dx0 l1 c exp mul dx1 l0 c exp mul add def + /dy dy0 l1 c exp mul dy1 l0 c exp mul add def + /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos abs b exp a mul dx dy Pyth Div 2 div def + /x2 x l0 dx mul m mul sub def + /y2 y l0 dy mul m mul sub def + /dx l1 dx mul m mul neg def + /dy l1 dy mul m mul neg def +} def +% +/IC { + /c c 1 add def + c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if } ifelse + /a a 2 mul 3 div 45 cos b exp div def + CCA + /dx 0 def + /dy 0 def +} def +% +/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def +/NC { CC x1 y1 x2 y2 x y curveto } def +/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def +/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def +/NAC { x2 y2 x y curveto CC x1 y1 } def +/EAC { x2 y2 x y ArrowB curveto pop pop } def +% +/OpenCurve { + NArray n 3 lt + { n { pop pop } repeat } + { BOC /n n 3 sub def n { NC } repeat EOC } ifelse +} def +% +/AltCurve { + { false NArray n 2 mul 2 roll + [ n 2 mul 3 sub 1 roll ] aload + /Points ED + n 2 mul -2 roll } + { false NArray } ifelse + n 4 lt { n { pop pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse +} def +% +/ClosedCurve { + NArray n 3 lt + { n { pop pop } repeat } + { n 3 gt { CheckClosed } if + 6 copy n 2 mul 6 add 6 roll + IC CC x y moveto n { NC } repeat + closepath pop pop + } ifelse +} def +% +/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def +/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def +/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore } def +% +/FontDot { + DS 2 mul dup + matrix scale matrix concatmatrix exch matrix + rotate matrix concatmatrix exch + findfont exch makefont setfont +} def +% +/Rect { + x1 y1 y2 add 2 div moveto + x1 y2 lineto + x2 y2 lineto + x2 y1 lineto + x1 y1 lineto + closepath +} def +% +/OvalFrame { + x1 x2 eq y1 y2 eq or + { pop pop x1 y1 moveto x2 y2 L } + { y1 y2 sub abs x1 x2 sub abs 2 copy gt + { exch pop } { pop } ifelse + 2 div exch { dup 3 1 roll mul exch } if + 2 copy lt { pop } { exch pop } ifelse + /b ED + x1 y1 y2 add 2 div moveto + x1 y2 x2 y2 b arcto + x2 y2 x2 y1 b arcto + x2 y1 x1 y1 b arcto + x1 y1 x1 y2 b arcto + 16 { pop } repeat + closepath + } ifelse +} def +% +/Frame { + CLW mul /a ED + 3 -1 roll + 2 copy gt { exch } if + a sub /y2 ED + a add /y1 ED + 2 copy gt { exch } if + a sub /x2 ED + a add /x1 ED + 1 index 0 eq { pop pop Rect } { OvalFrame } ifelse +} def +% +/BezierNArray { + /f ED + counttomark 2 div dup cvi /n ED + n eq not { exch pop } if + n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat + f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse +} def +% +/OpenBezier { + BezierNArray + n 1 eq + { pop pop } + { ArrowA n 4 sub 3 idiv + { 6 2 roll 4 2 roll curveto } repeat + 6 2 roll 4 2 roll ArrowB curveto } ifelse +} def +% +/ClosedBezier { + BezierNArray + n 1 eq + { pop pop } + { moveto n 1 sub 3 idiv + { 6 2 roll 4 2 roll curveto } repeat + closepath } ifelse +} def +% +/BezierShowPoints { + gsave + Points aload length 2 div cvi /n ED + moveto + n 1 sub { lineto } repeat + CLW 2 div SLW [ 4 4 ] 0 setdash stroke + grestore +} def +% +/Parab { + /y0 ED /x0 ED /y1 ED /x1 ED + /dx x0 x1 sub 3 div def + /dy y0 y1 sub 3 div def + x0 dx sub y0 dy add x1 y1 ArrowA + x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB + curveto + /Points [ x1 y1 x0 y0 x0 2 mul x1 sub y1 ] def +} def +% +/Parab1 { % 1 end | 0 SP + /ySP ED /xSP ED /y1 ED /x1 ED + /dx xSP x1 sub 3 div def + /dy ySP y1 sub 3 div def + newpath x1 y1 moveto xSP y1 lineto xSP ySP lineto + x1 ySP lineto closepath clip + currentpoint + newpath moveto + xSP dx sub ySP dy add x1 y1 ArrowA + xSP dx add ySP dy add xSP 2 mul x1 sub y1 ArrowB + curveto + /Points [ x1 y1 xSP ySP xSP 2 mul x1 sub y1 ] def +} def +% +/Grid { + newpath + /a 4 string def + /b ED /c ED /n ED + cvi dup 1 lt { pop 1 } if + /s ED + s div dup 0 eq { pop 1 } if + /dy ED s div dup 0 eq { pop 1 } if + /dx ED dy div round dy mul + /y0 ED dx div round dx mul + /x0 ED dy div round cvi + /y2 ED dx div round cvi + /x2 ED dy div round cvi + /y1 ED dx div round cvi + /x1 ED + /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def + /w x2 x1 sub 0 gt { 1 } { -1 } ifelse def + b 0 gt { + /z1 b 4 div CLW 2 div add def +% /Helvetica findfont b scalefont setfont + /b b .95 mul CLW 2 div add def } if + systemdict /setstrokeadjust known + { true setstrokeadjust /t { } def } + { /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add + exch itransform } bind def } ifelse + gsave n 0 gt { 1 setlinecap [ 0 dy n div ] dy n div 2 div setdash } { 2 setlinecap } ifelse + /i x1 def + /f y1 dy mul n 0 gt { dy n div 2 div h mul sub } if def + /g y2 dy mul n 0 gt { dy n div 2 div h mul add } if def + x2 x1 sub w mul 1 add dup 1000 gt { pop 1000 } if + { i dx mul dup y0 moveto + b 0 gt + { gsave c i a cvs dup stringwidth pop + /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse + h 0 gt {b neg}{z1} ifelse + rmoveto show grestore } if + dup t f moveto + g t L stroke + /i i w add def + } repeat + grestore + gsave + n 0 gt + % DG/SR modification begin - Nov. 7, 1997 - Patch 1 + %{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash } + { 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash } + % DG/SR modification end + { 2 setlinecap } ifelse + /i y1 def + /f x1 dx mul n 0 gt { dx n div 2 div w mul sub } if def + /g x2 dx mul n 0 gt { dx n div 2 div w mul add } if def + y2 y1 sub h mul 1 add dup 1000 gt { pop 1000 } if + { newpath i dy mul dup x0 exch moveto + b 0 gt { gsave c i a cvs dup stringwidth pop + /z2 ED + w 0 gt {z1 z2 add neg} {z1} ifelse + h 0 gt {z1} {b neg} ifelse + rmoveto show grestore } if + dup f exch t moveto + g exch t L stroke + /i i h add def + } repeat + grestore +} def +% +/ArcArrow { + /d ED /b ED /a ED + gsave + newpath 0 -1000 moveto clip + newpath + 0 1 0 0 b + grestore + c mul + /e ED + pop pop pop r a e d PtoC y add exch x add + exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c + mul neg d +} def +% +/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def +% +/ArcAdjust { %%%% Vincent Guirardel +% given a target length (targetLength) and an initial angle (angle0) [in the stack], +% let M(angle0)=(rx*cos(angle0),ry*sin(angle0))=(x0,y0). +% This computes an angle t such that (x0,y0) is at distance +% targetLength from the point M(t)=(rx*cos(t),ry*sin(t)). +% NOTE: this an absolute angle, it does not have to be added or substracted to angle0 +% contrary to TvZ's code. +% To achieve, this, one iterates the following process: start with some angle t, +% compute the point M' at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)]. +% Now take t' (= new angle) so that (0,0) M(t') and M' are aligned. +% +% Another difference with TvZ's code is that we need d (=add/sub) to be defined. +% the value of d = add/sub is used to know on which side we have to move. +% It is only used in the initialisation of the angle before the iteration. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Input stack: 1: target length 2: initial angle +% variables used : rx, ry, d (=add/sub) +% + /targetLength ED /angle0 ED + /x0 rx angle0 cos mul def + /y0 ry angle0 sin mul def +% we are looking for an angle t such that (x0,y0) is at distance targetLength +% from the point M(t)=(rx*cos(t),ry*sin(t))) +%initialisation of angle (using 1st order approx = TvZ's code) + targetLength 57.2958 mul + angle0 sin rx mul dup mul + angle0 cos ry mul dup mul + add sqrt div +% if initialisation angle is two large (more than 90 degrees) set it to 90 degrees +% (if the ellipse is very curved at the point where we draw the arrow, % +% the value can be much more than 360 degrees !) +% this should avoid going on the wrong side (more than 180 degrees) or go near +% a bad attractive point (at 180 degrees) + dup 90 ge { pop 90 } if + angle0 exch d % add or sub +% maximum number of times to iterate the iterative procedure: +% iterative procedure: takes an angle t on top of stack, computes a +% better angle (and put it on top of stack) + 30 { dup +% compute distance D between (x0,y0) and M(t) + dup cos rx mul x0 sub dup mul exch sin ry mul y0 sub dup mul add sqrt +% if D almost equals targetLength, we stop + dup targetLength sub abs 1e-5 le { pop exit } if +% stack now contains D t +% compute the point M(t') at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)]: +% M(t')= ( (x(t)-x0)*targetLength/d+x0 , (y(t)-y0)*targetLength/d+y0 ) + exch dup cos rx mul x0 sub exch sin ry mul y0 sub +% stack contains: y(t)-y0, x(t)-x0, d + 2 index Div targetLength mul y0 add ry Div exch + 2 index Div targetLength mul x0 add rx Div +% stack contains x(t')/rx , y(t')/ry , d +% now compute t', and remove D from stack + atan exch pop + } repeat +% we don't look at what happened... in particular, if targetLength is greater +% than the diameter of the ellipse... +% the final angle will be around /angle0 + 180. maybe we should treat this pathological case... +% after iteration, stack contains an angle t such that M(t) is the tail of the arrow +% to give back the result as a an angle relative to angle0 we could add the following line: +% angle0 sub 0 exch d +% +% begin bug fix 2006-01-11 +% we want to adjust the new angle t' by a multiple of 360 so that | t'-angle0 | <= 180 +%(we don't want to make the ellipse turn more or less than it should)... +dup angle0 sub dup abs 180 gt { 180 add 360 div floor 360 mul sub } { pop } ifelse +% end bug fix +} def +% +/EllipticArcArrow { + /d ED % is add or sub + /b ED % arrow procedure + /a1 ED % angle + gsave + newpath + 0 -1000 moveto + clip % Set clippath far from arrow. + newpath + 0 1 0 0 b % Draw arrow to determine length. + grestore +% Length of arrow is on top of stack. Next 3 numbers are junk. +% + a1 exch ArcAdjust % Angular position of base of arrow. + /a2 ED + pop pop pop + a2 cos rx mul xOrig add % hv 2007-08-29 x->xOrig + a2 sin ry mul yOrig add % hv 2007-08-29 y->yOrig + a1 cos rx mul xOrig add % + a1 sin ry mul yOrig add % +% Now arrow tip coor and base coor are on stack. + b pop pop pop pop % Draw arrow, and discard coordinates. + a2 CLW 8 div +% change value of d (test it by looking if `` 1 1 d '' gives 2 or not ) + 1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse + ArcAdjust +% resets original value of d + 1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse % Adjust angle to give overlap. +} def +%%------------------ tvz/DG/hv (2004-05-10) end -------------------%% +% +/Rot { CP CP translate 3 -1 roll neg rotate NET } def +% +/RotBegin { + tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 } def } if + /TMatrix [ TMatrix CM ] cvx def + /a ED + a Rot /RAngle [ RAngle dup a add ] cvx def +} def +% +/RotEnd { + /TMatrix [ TMatrix setmatrix ] cvx def + /RAngle [ RAngle pop ] cvx def +} def +% +/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def +/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def +/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def +% +/Uput { + /a ED + add 2 div /h ED 2 + div /w ED + /s a sin def + /c a cos def + /b s abs c abs 2 copy gt dup + /q ED + { pop } { exch pop } ifelse def + /w1 c b div w mul def + /h1 s b div h mul def + q { w1 abs w sub dup c mul abs }{ h1 abs h sub dup s mul abs } ifelse +} def +% +/UUput { + /z ED + abs /y ED + /x ED + q { x s div c mul abs y gt }{ x c div s mul abs y gt } ifelse + { x x mul y y mul sub z z mul add sqrt z add } + { q { x s div } { x c div } ifelse abs + } ifelse + a PtoC + h1 add exch + w1 add exch +} def +% +/BeginOL { + dup (all) eq exch TheOL eq or + { IfVisible not { Visible /IfVisible true def } if } + { IfVisible { Invisible /IfVisible false def } if } ifelse +} def +% +/InitOL { + /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def + /Visible { CP OLUnit idtransform T moveto } def + /Invisible { CP OLUnit neg exch neg exch idtransform T moveto } def + /BOL { BeginOL } def + /IfVisible true def +} def +% +end +%-----------------------------------------------------------------------------% +% +% END pstricks.pro + +%%EndProcSet +%%BeginProcSet: pst-algparser.pro 0 0 +% $Id: pst-algparser.pro 26 2008-06-14 11:50:02Z herbert $ +%% +%% PostScript prologue for PSTricks algorithm parser +%% Version 0.01, 2008/01/01 +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +%% +%%-----------------------------------------------------------------------------% +% +/AlgParser { tx@AlgToPs begin AlgToPs end } def % Dominique Rodriguez +% +/tx@CoreAnalyzerDict 100 dict def tx@CoreAnalyzerDict begin +% +% PS ANALYZER FOR ALGEBRAIC EXPRESSION V1.12 +% E->T|E+T +% T->FS|T*FS +% FS -> F | +FS | -FS +% F->P|F^SF +% P->(E)|literal +% literal->number|var|var[E]|func(params) +% params->E|E,param +% number->TOBEFINISHED +% +%% E expression, T term, SF signed factor, F factor, P power +% +%% parser +% +%% str +% +%% C->E<condition_operators>E +%% STR index -> STR index+lenExpr +/AnalyzeCond { AnalyzeExpr ReadCondOp AnalyzeExpr EvalCondOp } def +% +%% analyze Expression List (separator , or | ) +%% STR index -> STR index+lenExpr +%% /AnalyzeListOfE { +%% { NextNonBlankChar pop AnalyzeExpr%%dup Strlen eq { exit } if NextNonBlankChar +%% NextNonBlankChar dup 0 eq { pop exit } if +%% dup 44 ne 1 index 124 ne and { dup 41 ne { PROBLEMCONTACTBILLOU } { pop exit } ifelse } if +%% pop NextNonBlankChar dup 0 eq { exit } if 124 ne { PROBLEMCONTACTBILLOU } if 1 add NextNonBlankChar 0 eq {toto} if } loop +%% AnalyzeListOfEPostHook +%% } def +/AnalyzeListOfE { + /NotFirst false def + { NextNonBlankChar pop AnalyzeExpr + NotFirst { EvalListOfExpr } { /NotFirst true def } ifelse + dup Strlen eq { exit } if NextNonBlankChar + dup 44 ne 1 index 124 ne and + { dup 41 ne { PROBLEMCONTACTBILLOU } { pop exit } ifelse } + if pop 1 add } loop + AnalyzeListOfEPostHook +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% E->T|E+T +%% STR index -> STR index+lenExpr +/AnalyzeExpr { + AnalyzePreHook AnalyzeTerm IsEndingExpr + { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse } + { { RollOp 1 add NextNonBlankChar pop AnalyzeTerm PreEvalHook EvalAddSub IsEndingExpr { pop exit } if } loop } + ifelse + AnalyzePostHook +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% T->FS|T*FS +%% STR index +/AnalyzeTerm { + AnalyzePreHook AnalyzeSignedFactor IsEndingTerm + { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse } + { { RollOp 1 add NextNonBlankChar pop AnalyzeSignedFactor PreEvalHook EvalMulDiv IsEndingTerm { pop exit } if} loop } + ifelse + AnalyzePostHook +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% FS -> F | +FS | -FS +%% STR index +/AnalyzeSignedFactor { + AnalyzePreHook 2 copy get dup IsUnaryOp + { RollOp 1 add NextNonBlankChar pop AnalyzeSignedFactor EvalUnaryOp } + { pop AnalyzeFactor } + ifelse AnalyzePostHook +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% F->P|F^P +%% STR index +/AnalyzeFactor { + AnalyzePreHook AnalyzePower IsEndingFactor + { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse } + { { RollOp 1 add NextNonBlankChar pop AnalyzePower PreEvalHook EvalPower IsEndingFactor { pop exit } if} loop } + ifelse AnalyzePostHook +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% P->(E)|literal +%% STR index +/AnalyzePower { + %% depending of first char either a number, or a literal + 2 copy get dup 40 eq%%an open par + { pop 1 add NextNonBlankChar pop AnalyzeExpr 1 add NextNonBlankChar pop } + { AnalyzeLiteral } + ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% STR index STR[index] -> STR index +%/AnalyzeLiteral { IsNumber { EvalNumber } { EvalLiteral } ifelse } def +/AnalyzeLiteral { dup IsUnaryOp exch IsNumber or { EvalNumber } { EvalLiteral } ifelse } def%%dr 09102006 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% recognize + or - +%% chr -> T/F +/IsUnaryOp { dup 43 eq exch 45 eq or } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% a number can contain only : 0123456789. +%% chr -> T/F +/IsNumber { dup 48 ge exch dup 57 le 3 -1 roll and exch 46 eq or } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% STR index -> STR index number +%% a number can be of the form [0-9]*.[0-9]*\([eE][+-]?[0-9]+\)? +%% STR index -> STR index' number +/ReadNumber { + exch dup 3 -1 roll dup 3 1 roll + %%read mantissa + { 1 add 2 copy dup Strlen eq { pop pop 0 exit } if get dup IsNumber not { exit } if pop } loop + dup 101 eq exch 69 eq or + %%% there is a "e" or "E" -> read exponant + { 1 add 2 copy get dup IsUnaryOp + { pop 1 add 2 copy get } if + { IsNumber not { exit } if 1 add 2 copy get } loop } + if + dup 4 1 roll + 3 -1 roll exch 1 index sub getinterval +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% a number can contain only : 0123456789. +%% chr -> T/F +/IsCondOp { dup 30 eq exch dup 60 ge exch 62 le and or } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% STR index -> STR index number +%% a number can be of the form [0-9]*.[0-9]*\([eE][+-]?[0-9]+\)? +%% STR index -> STR index' number +/ReadCondOp { + NextNonBlankChar 1 index 4 1 roll + { IsCondOp not { exit } if 1 add 2 copy get } loop + 2 copy 5 -1 roll + exch 1 index sub getinterval 3 1 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% a literal can contain only : 0123456789. +%% chr -> T/F +/IsLiteral {% + dup 48 ge exch dup 57 le 3 -1 roll and exch + dup 65 ge exch dup 90 le 3 -1 roll and 3 -1 roll or exch + dup 97 ge exch 122 le and or } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% a literal can be of the form [a-zA-Z][a-zA-Z0-9]*\(\((Expression)\)|\(\[Expression\]\)\)? +%% STR index -> literal STR index' nextchr +/ReadLiteral { + exch dup 3 -1 roll dup 3 1 roll + %%read literal core + { 2 copy dup Strlen eq { pop pop 0 exit } if get dup IsLiteral not { exit } if pop 1 add } loop + 4 1 roll dup 5 1 roll 3 -1 roll exch 1 index sub getinterval 4 1 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% expr is ended by end of str or a clpar +%% STR index -> STR index STR[index] T/F +/IsEndingExpr {% + 2 copy dup Strlen eq + %% if end of str is reached -> end ! + { pop pop 0 true } + %% ending chr -> clpar, comma, |, <, >, =, !, + {get dup dup 41 eq + exch dup 124 eq + exch dup 93 eq + exch dup 44 eq + exch dup 30 eq + exch dup 60 ge exch 62 le and or or or or or} + ifelse } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% expr is ended by end of str or a +- +%% STR index -> STR index STR[index] T/F +/IsEndingTerm { IsEndingExpr { true } { dup dup 43 eq exch 45 eq or } ifelse } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% expr is ended by end of str or */ +%% STR index -> STR index STR[index] T/F +/IsEndingFactor { IsEndingTerm { true } { dup dup 42 eq exch 47 eq or } ifelse } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% expr is ended by end of str or ^ +%% STR index -> STR index STR[index] T/F +/IsEndingPower { IsEndingFactor { true } { dup 94 eq } ifelse } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% STR index -> STR index STR[index] +/NextNonBlankChar { { dup Strlen eq { 0 exit } if 2 copy get dup neBlkChar { exit } if pop 1 add } loop } bind def +/neBlkChar { dup 32 ne exch dup 10 ne exch 9 ne and and } bind def +%%%%%%%%%%%%%%%%%%%%%%%% +%% DEBUG +/BRK {false} def +/BRKtrue {/BRK true def} def +/BRKStop {BRK {BRKtoto} if } def +/BRKEvalStop {BRK exch if } def +/BRKBRK2true {BRK {BRK2true} if } def +/BRK2 {false} def +/BRK2true {/BRK2 true def} def +/BRK2Stop {BRK2 {BRK2toto} if } def/BRK {false} def +end +% +%-------------------------------------------------------------------------------% +% +/tx@AlgToPs 12 dict def tx@AlgToPs begin +% +%% algExpr -> PSVector +/AlgToPs { tx@CoreAnalyzerDict begin InitParser AnalyzeListOfE pop pop EndingSequence end } def +/EndingSequence { ExpressionVector aload length /end cvx exch 1 add array astore } def +/InitParser { /ExpressionVector [ /tx@AddMathFunc cvx /begin cvx ] def dup length /Strlen exch def 0 } def +/Strlen 0 def +/EvalListOfExpr {} def% +/EvalNumber {% + ReadNumber cvr /ExpressionVector ExpressionVector aload length dup 3 add -1 roll cvx + exch 1 add array astore def NextNonBlankChar pop } def +/EvalAddSub {% + /ExpressionVector ExpressionVector aload length dup 5 add -1 roll + 43 eq { /add } { /sub } ifelse cvx exch 1 add array astore def +} def +/EvalMulDiv {% + /ExpressionVector ExpressionVector aload length dup 5 add -1 roll + 42 eq { /mul } { /div } ifelse cvx exch 1 add array astore def +} def +/EvalPower {% + /ExpressionVector ExpressionVector aload length dup 5 add -1 roll + pop /exp cvx exch 1 add array astore def +} def +/EvalLiteral {% + ReadLiteral + dup 40 eq%%% there is an open par -> function call + { pop 2 index + dup (Sum) eq { EvalSum } + { dup (IfTE) eq { EvalCond } + { dup (Derive) eq { pop EvalDerive } + { pop 1 add NextNonBlankChar pop AnalyzeListOfE 2 index TrigoFunc + /ExpressionVector ExpressionVector aload length dup 5 add -1 roll cvn cvx + exch 1 add array astore def 1 add NextNonBlankChar pop } ifelse } ifelse} ifelse } + { /ExpressionVector ExpressionVector aload length dup 6 add -1 roll cvn cvx exch 1 add array astore def + dup 91 eq%%% there is an open bracket -> vector element + { pop 1 add NextNonBlankChar pop AnalyzeExpr + /ExpressionVector ExpressionVector aload length /cvi cvx exch /get cvx exch 2 add array astore def 1 add } + { pop NextNonBlankChar pop } + ifelse} + ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% the derive function : Derive(n,f(x)) +%% firstparindex lastparindex -> +/EvalDerive { + %% manage the function descripiton + 1 add ReadNumber 3 1 roll NextNonBlankChar + 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if + 1 add NextNonBlankChar pop + 3 -1 roll cvi + dup 0 eq + { pop AnalyzeExpr 3 -1 roll pop 1 add } + { 1 sub 3 1 roll (x) exch tx@Derive begin DeriveIndexed end 4 -1 roll + { (x) tx@Derive begin Derive end } repeat + ExpressionVector exch /ExpressionVector [] def + AlgToPs aload length + /ExpressionVector 1 index 3 add -1 roll aload length dup 3 add -1 roll /l2 exch def /l1 exch def + l1 l2 add 1 add l2 neg roll l1 l2 add array astore def 3 -1 roll pop 1 add + 1 index length /Strlen exch def } ifelse +} def +/EvalSum {% + pop 1 add NextNonBlankChar pop + %% read the variable name + ReadLiteral pop NextNonBlankChar + 44 ne { ANALYZER_ERROR_missing_first_comma_in_Sum } if + %% read the initial value + 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll + 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if + %% read the increment value + 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll + 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if + %% read the limit value + 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll + 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if + /ExpressionVector ExpressionVector aload length dup 7 add -3 roll 0 4 1 roll + 5 -1 roll 4 add array astore def + %% keep ExpressionVector for later and create a new one for internal Sum computation + ExpressionVector 3 1 roll /ExpressionVector [ 6 -1 roll cvn /exch cvx /def cvx ] def + 1 add NextNonBlankChar pop AnalyzeExpr + %% add each term + /ExpressionVector ExpressionVector aload length 1 add /add cvx exch array astore def + /ExpressionVector 4 -1 roll aload length ExpressionVector cvx /for cvx 3 -1 roll 2 add + array astore def 3 -1 roll pop 1 add +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Convert to radians if trigo function call +%% (name) -> +/TrigoFunc { + dup (cos) eq 1 index (sin) eq or exch (tan) eq or + { /ExpressionVector ExpressionVector aload length Pi /div cvx 180 /mul cvx 5 -1 roll 4 add + array astore def + } if +} def +/EvalCond {% + pop 1 add AnalyzeCond NextNonBlankChar + 44 ne { ANALYZER_ERROR_missing_first_comma_in_IfTE } if + ExpressionVector 3 1 roll /ExpressionVector [] def + 1 add AnalyzeExpr ExpressionVector 3 1 roll /ExpressionVector [] def + NextNonBlankChar 44 ne { ANALYZER_ERROR_missing_second_comma_in_IfTE } if + 1 add AnalyzeExpr + NextNonBlankChar 41 ne { ANALYZER_ERROR_missing_ending parenthesis_in_IfTE } if + ExpressionVector + /ExpressionVector 6 -1 roll aload length dup + 6 add -1 roll cvx exch dup 4 add -1 roll cvx /ifelse cvx 3 -1 roll 3 add array astore def + 1 add 3 -1 roll pop +} def +%% CondOp STR index +/EvalCondOp {% + 3 -1 roll + dup (=) eq { /eq } {% + dup (<) eq { /lt } {% + dup (>) eq { /gt } {% + dup (>=) eq { /ge } {% + dup (<=) eq { /ge } {% + dup (!=) eq { /ne } { ERROR_non_valid_conditional_operator } + ifelse } ifelse } ifelse } ifelse } ifelse } ifelse + cvx exch pop + /ExpressionVector ExpressionVector aload length dup 3 add -1 roll exch 1 add array astore def } def +/EvalUnaryOp { + 3 -1 roll 45 eq { /ExpressionVector ExpressionVector aload length /neg cvx exch 1 add array astore def } if +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% H O O K S +/AnalyzePreHook {} bind def +/PreEvalHook {} bind def +/AnalyzeListOfEPostHook {} bind def +/AnalyzePostHook {} def +/RollOp { 3 1 roll } bind def +end %tx@CoreAnalyzerDict +% +%--------------------------------------------------------------------% +% +/tx@Derive 41 dict def tx@Derive begin +%%increase ^^ for each function added +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% algExpr variable -> PSVector +/Derive {% + 10240 string 3 1 roll 0 3 1 roll + /Variable exch def + tx@CoreAnalyzerDict begin InitParser AnalyzeListOfE end +} def +/Strlen 0 def +/InitParser { dup length /Strlen exch def 0 } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% algExpr variable index -> PSVector +/DeriveIndexed {% + 3 1 roll 10240 string 3 1 roll 0 3 1 roll + /Variable exch def + tx@CoreAnalyzerDict begin InitParser pop 4 -1 roll AnalyzeExpr 4 -2 roll pop pop 4 -2 roll exch pop end +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (u,v)'=-(u',v') +/EvalListOfExpr {% + 4 2 roll 2 copy 9 -1 roll dup length 4 1 roll putinterval add AddPipe + 2 copy 7 -1 roll dup length 4 1 roll putinterval add + 6 -2 roll pop pop + 2 copy pop 0 6 2 roll GetIntervalNewStr 5 1 roll 2 copy 0 exch getinterval 6 1 roll } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (-u)'=-(u') +/EvalUnaryOp { + 4 -2 roll 4 index (0) eq + { (0) StrConcat 7 -1 roll pop } + { 7 -1 roll 45 eq + { AddSub AddOpPar true } { false } ifelse + 3 1 roll 5 index StrConcat 3 -1 roll { AddClPar } if } ifelse + 2 copy pop 0 6 2 roll GetIntervalNewStr + 7 -2 roll pop pop 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (number)'=0 +/EvalNumber { ReadNumber (0) 6 2 roll } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (u+v)'=u'+v' +/EvalAddSub {% + 7 index dup (0) eq + { pop true }%% du=0 nothing added + { dup length exch 5 index 5 index 3 -1 roll putinterval 4 -1 roll add 3 1 roll false } + ifelse + 5 index dup (0) eq + { pop { (0) } { 4 -2 roll 2 copy pop 0 6 2 roll GetIntervalNewStr } ifelse }%%dv=0 + { exch + { 5 -2 roll 7 index 45 eq { AddSub } if false } %%nothing yet added + { 5 -2 roll 7 index 43 eq%%something yet added + { AddAdd false } { AddSub AddOpPar true } ifelse } + ifelse 11 1 roll + 3 -1 roll StrConcat 10 -1 roll { AddClPar } if + 2 copy pop 0 6 2 roll GetIntervalNewStr } + ifelse + mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (u*v)' or (u/v)' +/EvalMulDiv { 6 index 42 eq {EvalMul} {EvalDiv} ifelse } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (u*v)'=u'*v+u*v' +/EvalMul {% + 4 -2 roll 7 index dup (0) eq + { pop false }%%du=0 + { (1) eq%%du=1 + { false } + { AddOpPar 7 index StrConcat AddClPar AddMul AddOpPar true } ifelse + 3 1 roll 6 index StrConcat 3 -1 roll { AddClPar } if + true }%%du!=0 + ifelse + 5 1 roll 5 index (0) eq + { 5 -1 roll not { (0) StrConcat } if }%%dv=0 + { 5 -1 roll { AddAdd } if + 4 index (1) eq + { 8 index StrConcat } + { AddOpPar 8 index StrConcat AddClPar AddMul AddOpPar 4 index StrConcat AddClPar } + ifelse + }%%dv!=0 + ifelse + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (u/v)'=(u'*v-u*v')/v^2 +/EvalDiv {% + 4 -2 roll + 4 index (0) eq%%dv=0 -> u'/v + { 7 index (0) eq { (0) StrConcat } { AddOpPar 7 index StrConcat AddClPar AddDiv 5 index StrConcat } ifelse } + { 7 index dup (0) eq + { pop }%%du=0 + { (1) eq%%du=1 + { false } + { AddOpPar 7 index StrConcat AddClPar AddMul AddOpPar true } ifelse + 3 1 roll 6 index StrConcat 3 -1 roll { AddClPar } if}%%du!=0 + ifelse + AddSub + 4 index (1) eq + { 8 index StrConcat } + { AddOpPar 8 index StrConcat AddClPar AddMul AddOpPar 4 index StrConcat AddClPar } + ifelse + %}%%dv!=0 + 2 copy GetIntervalNewStr 3 1 roll pop 0 AddOpPar 3 -1 roll StrConcat AddClPar + AddDiv AddOpPar 5 index StrConcat AddClPar 2 copy (^2) putinterval 2 add } + ifelse + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% str1 index str2 -> str1 index +/StrConcat { dup length 4 2 roll 2 copy 6 -1 roll putinterval 3 -1 roll add } bind def +/GetIntervalNewStr { 0 exch getinterval dup length string copy } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (u^v)'=(u^v)'=u'vu^(v-1)+v'u^(v)ln(u) +/EvalPower {% + 4 -2 roll 7 index (0) eq + {%%if du=0 then (u^v)'=v'ln(u)u^v + 4 index (0) eq + { (0) StrConcat }%%if dv=0 then (u^v)'=0 + { 4 index (1) ne { AddOpPar 4 index StrConcat (\)*) StrConcat } if + 8 index (e) ne { (ln\() StrConcat 8 index StrConcat (\)*) StrConcat } if + AddOpPar 8 index StrConcat (\)^\() StrConcat 5 index StrConcat AddClPar } ifelse + } + {%%du!=0 + 4 index (0) eq + {%%if dv=0 then (u^v)'=vu'u^(v-1) + 5 index dup IsStrNumber + { dup (0) eq + { StrConcat } + { dup dup (1) eq exch (1.0) eq or + { StrConcat } + { StrConcat + 7 index dup (1) ne exch (1.0) ne and%%%dr 09102006 insert du if <> 1 + { (*\() StrConcat 7 index StrConcat (\)) StrConcat } if%%%dr 09102006 + (*\() StrConcat 8 index StrConcat (\)) StrConcat + 5 index dup dup (2) eq exch (2.0) eq or + { pop } { cvr 1 sub 20 string cvs 3 1 roll (^) StrConcat 3 -1 roll StrConcat } ifelse } ifelse } ifelse } + { pop AddOpPar 5 index StrConcat (\)*\() StrConcat 8 index StrConcat (\)^\() StrConcat + 5 index StrConcat (-1\)) StrConcat } ifelse + } + {%%if dv!=0 and du!=0 then (u^v)'=u'vu^(v-1)+v'u^(v)ln(u) + 7 index (1) ne { AddOpPar 7 index StrConcat (\)*) StrConcat } if + AddOpPar 5 index StrConcat (\)*\() StrConcat + 8 index StrConcat (\)^\() StrConcat + 5 index StrConcat (-1\)+\() StrConcat + 4 index (1) ne { 4 index StrConcat (\)*\() StrConcat } if + 8 index StrConcat (\)^\() StrConcat + 5 index StrConcat (\)*ln\() StrConcat + 8 index StrConcat AddClPar + } ifelse + } ifelse + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% str -> true/false +/IsStrNumber {% + true exch + { dup 48 lt exch dup 57 gt 3 -1 roll or + exch dup 46 ne%%. + exch dup 43 ne%%+ + exch 45 ne%%- + and and and { pop false } if } forall +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% literal switch -> func call, vector, variables +/EvalLiteral {% + ReadLiteral dup 40 eq%%% there is an open par -> function call + { pop (EvalFunc_ ) 9 4 index StrConcat 0 exch getinterval cvn cvx exec } + { dup 91 eq%%% there is an open bracket -> vector element + { ERROR_vector_not_yet_implemented } + { pop EvalVariable } + ifelse } + ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% first last parpos Expr[first:parpos-1] -> +/EvalVariable { 2 index Variable eq { (1) } { (0) } ifelse 4 -1 roll exch 6 2 roll } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (f(u))'=u'f'(u) +/EvalFunc { + 4 2 roll 4 index (1) ne + { AddOpPar 4 index StrConcat (\)*) StrConcat } if + (Eval ) 4 8 index StrConcat 0 exch getinterval cvn cvx exec + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Func derivative -> Eval<func> +/EvalFunc_sin {% + PreCommonFunc + { (cos\() StrConcat 5 index StrConcat AddClPar } if + PostCommonFunc } def +/EvalFunc_cos {% + PreCommonFunc + { (\(-sin\() StrConcat 5 index StrConcat (\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_tan {% + PreCommonFunc + { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/cos\() StrConcat 5 index StrConcat (\)^2) StrConcat } if + PostCommonFunc } def +/EvalFunc_asin {% + PreCommonFunc + { (1/sqrt\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_acos {% + PreCommonFunc + { (-1/sqrt\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_atg {% + PreCommonFunc + { (1/\(1+\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_ln {% + PreCommonFunc + { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/\() StrConcat 5 index StrConcat AddClPar } if + PostCommonFunc } def +/EvalFunc_exp {% + PreCommonFunc + { (exp\() StrConcat 5 index StrConcat AddClPar } if + PostCommonFunc } def +/EvalFunc_sqrt {% + PreCommonFunc + { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/\(2*sqrt\() StrConcat 5 index StrConcat (\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_Fact {% + PreCommonFunc { ERROR_no_variable_expression_in_Fact } if + PostCommonFunc } def +/EvalFunc_sh {% + PreCommonFunc + { (ch\() StrConcat 5 index StrConcat AddClPar } if + PostCommonFunc } def +/EvalFunc_ch {% + PreCommonFunc + { (sh\() StrConcat 5 index StrConcat AddClPar } if + PostCommonFunc } def +/EvalFunc_th {% + PreCommonFunc + { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/ch\() StrConcat 5 index StrConcat (\)^2) StrConcat } if + PostCommonFunc } def +/EvalFunc_Argsh {% + PreCommonFunc + { (1/sqrt\(1+\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_Argch {% + PreCommonFunc + { (1/sqrt\(\() StrConcat 5 index StrConcat (\)^2-1\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_Argth {% + PreCommonFunc + { (1/\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if + PostCommonFunc } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/PreCommonFunc { + 1 add NextNonBlankChar pop 3 -1 roll 5 1 roll AnalyzeExpr 1 add NextNonBlankChar pop + 4 2 roll 4 index (0) eq + { (0) StrConcat false } + { 4 index (1) ne { AddOpPar 4 index StrConcat (\)*) StrConcat } if true } ifelse +} def +/PostCommonFunc { + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +/EvalFunc_Derive {% + 1 add ReadNumber cvi 1 add dup cvr log 1 add cvi string cvs + 4 -1 roll pop 5 1 roll 1 add NextNonBlankChar pop AnalyzeExpr 1 add + 4 -2 roll (Derive\() StrConcat 7 -1 roll StrConcat (,) StrConcat 6 -1 roll StrConcat AddClPar + 2 copy pop 0 6 2 roll GetIntervalNewStr 6 -1 roll pop 2 index 6 index dup 4 index exch sub getinterval + exch 6 2 roll } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% literal switch -> func call, vector, variables +/EvalFunc_Sum {% + 1 add NextNonBlankChar pop + %% read the variable name + ReadLiteral pop 3 -1 roll pop NextNonBlankChar + 44 ne { ANALYZER_ERROR_missing_first_comma_in_Sum } if + %% read the initial value + 1 add NextNonBlankChar pop ReadNumber pop + 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if + %% read the increment value + 1 add NextNonBlankChar pop ReadNumber pop + 2 copy get 44 ne { ANALYZER_ERROR_missing_third_comma_in_Sum } if + %% read the limit value + 1 add NextNonBlankChar pop ReadNumber pop + 2 copy get 44 ne { ANALYZER_ERROR_missing_fourth_comma_in_Sum } if + 1 add NextNonBlankChar pop dup 6 1 roll 3 -1 roll pop AnalyzeExpr 1 add NextNonBlankChar pop + 4 -2 roll 3 index 8 index dup 9 index exch sub getinterval StrConcat + 4 index StrConcat AddClPar + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% literal switch -> func call, vector, variables +/EvalFunc_IfTE {% + 3 -1 roll pop 1 add NextNonBlankChar pop SkipCond + NextNonBlankChar + 44 ne { ANALYZER_ERROR_missing_first_comma_in_IfTE } if + 1 add NextNonBlankChar pop dup 5 1 roll + AnalyzeExpr NextNonBlankChar + 44 ne { ANALYZER_ERROR_missing_second_comma_in_IfTE } if + 1 add NextNonBlankChar pop + AnalyzeExpr 1 add NextNonBlankChar pop + 4 -2 roll 3 index 10 index dup 11 index exch sub getinterval StrConcat + 6 index StrConcat (,) StrConcat 4 index StrConcat AddClPar + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% advance in str until a comma is found (no error detection!) +%% str index -> str index' +/SkipCond { { 1 add 2 copy get 44 eq {exit } if } loop } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Convert to radians if trigo function call +%% (name) -> +/TrigoFunc { + dup (cos) eq 1 index (sin) eq or exch (tan) eq or + { /ExpressionVector ExpressionVector aload length Pi /div cvx 180 /mul cvx 5 -1 roll 4 add + array astore def + } if +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% No derivative for condition.... +/EvalCondOp { 3 -1 roll pop } bind def +/PutIntervalOneAdd {putinterval 1 add} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add open parenthesis in string at the given index +%% str index -> str index+1 +/AddOpPar {2 copy (\() PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add close parenthesis in string at the given index +%% str index -> str index+1 +/AddClPar {2 copy (\)) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add 0 in string at the given index +%% str index -> str index+1 +/AddZero {2 copy (0) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add open parenthesis in string at the given index +%% str index -> str index+1 +/AddMul {2 copy (*) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add open parenthesis in string at the given index +%% str index -> str index+1 +/AddDiv {2 copy (/) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add a plus sign in string at the given index +%% str index -> str index+1 +/AddAdd {2 copy (+) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add a minus sign in string at the given index +%% str index -> str index+1 +/AddSub {2 copy (-) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add a pipe sign in string at the given index +%% str index -> str index+1 +/AddPipe {2 copy (|) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% H O O K S +/AnalyzePreHook { dup 5 1 roll } bind def +/PreEvalHook {} def +/AnalyzePostHook { 7 -1 roll pop } bind def +/AnalyzeListOfEPostHook { 6 -1 roll mark 6 1 roll cleartomark } bind def +/RollOp { 5 1 roll } bind def +end%%%tx@CoreAnalyzerDict +/tx@AddMathFunc 12 dict def tx@AddMathFunc begin +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% NEW FUNC +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% function arcsine in radians asin(x)=atan(x/sqrt(1-x^2)) +%% x -> theta +/asin {% + dup abs 1 gt { EQDFasinrangeerror } if + dup dup dup mul 1 exch sub sqrt atan exch 0 lt { 360 sub } if DegtoRad +} def +%% function arccosine in radians acos(x)=atan(sqrt(1-x^2)/x) +%% x -> theta +/acos {% + dup abs 1 gt { EQDFacosrangeerror } if + dup dup mul 1 exch sub sqrt exch atan DegtoRad +} def +%% function arctangent in radians +%% x -> theta +/atg { 1 atan dup 90 gt { 360 sub } if DegtoRad } bind def +%% HYPERBOLIC FUNCTIONS +/sh { dup Ex exch neg Ex sub 2 div } def +/ch { dup Ex exch neg Ex add 2 div } def +/th { dup sh exch ch div } def +/Argsh { dup dup mul 1 add sqrt add ln } def +/Argch { dup dup mul 1 sub sqrt add ln } def +/Argth { dup 1 add exch 1 exch sub div ln 2 div } def +%% modified exponential funtion for 0 +%% x n -> x^n +/Exp { dup 0 eq { pop pop 1 } { exp } ifelse } bind def +%% modified exponential funtion for 0 +%% x -> e^x +/Ex { Euler exch exp } bind def +%% +%% factorial function +%% n -> n! +/Fact { 1 exch 2 exch 1 exch { mul } for } bind def +/fact { Fact } bind def +end +% +% END pstricks.pro + +%%EndProcSet +%%BeginProcSet: pst-dots.pro 0 0 +% $Id: pst-dots.pro 11 2008-01-24 13:37:27Z herbert $ +% +%% PostScript prologue for pstricks.tex. +%% Version 2.01, 2008/04/18 +%% +%% For distribution, see pstricks.tex. +%% +%% Timothy Van Zandt <tvz@Princeton.EDU> +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +%% +%% Modified by Etienne Riga - Dec. 16, 1999 +%% Modified by Etienne Riga - 2005/01/01 (er) +%% to add /Diamond, /SolidDiamond and /BoldDiamond +%% Modified by Herbert Voss (hv) - 2008/04/17 +% +10 dict dup begin % hold local + /FontType 3 def + /FontMatrix [.001 0 0 .001 0 0] def + /FontBBox [-571.5 -742.5 571.5 742.5] def +% /FontBBox [-1000 -1000 1000 1000] def % See end of file in /BuildGlyph + /Encoding 256 array def + 0 1 255 {Encoding exch /.notdef put} for % fill the array with /.notdef + Encoding % replace with given dot names + dup (b) 0 get /Bullet put % get the numerical position of b in ASCII +% % and save /Bullet at this place in Encoding + dup (c) 0 get /Circle put + dup (C) 0 get /BoldCircle put % 67 + dup (u) 0 get /SolidTriangle put + dup (t) 0 get /Triangle put + dup (T) 0 get /BoldTriangle put + dup (r) 0 get /SolidSquare put + dup (s) 0 get /Square put + dup (S) 0 get /BoldSquare put + dup (q) 0 get /SolidPentagon put + dup (p) 0 get /Pentagon put + dup (P) 0 get /BoldPentagon put +%%% + dup (k) 0 get /Asterisk put + dup (K) 0 get /BoldAsterisk put + dup (J) 0 get /SolidAsterisk put + dup (h) 0 get /Hexagon put + dup (H) 0 get /BoldHexagon put + dup (G) 0 get /SolidHexagon put + dup (f) 0 get /Octogon put % 2008-04-18 hv + dup (F) 0 get /BoldOctogon put % 2008-04-18 hv + dup (g) 0 get /SolidOctogon put % 2008-04-18 hv + dup (a) 0 get /Add put + dup (A) 0 get /BoldAdd put % 65 + dup (x) 0 get /Mul put + dup (X) 0 get /BoldMul put + dup (m) 0 get /Oplus put + dup (M) 0 get /BOplus put + dup (e) 0 get /SolidOplus put + dup (n) 0 get /Otimes put + dup (N) 0 get /BOtimes put + dup (E) 0 get /SolidOtimes put + dup (i) 0 get /Bar put + dup (I) 0 get /BoldBar put + dup (l) 0 get /SolidDiamond put + dup (d) 0 get /Diamond put + (D) 0 get /BoldDiamond put +%%% +/CharProcs 47 dict def +CharProcs begin + /CirclePath {0 0 500 0 360 arc closepath} def + /Bullet {CirclePath fill} def + /Circle {CirclePath .9 .9 scale CirclePath eofill} def + /BoldCircle {CirclePath .8 .8 scale CirclePath eofill} def + /TrianglePath {0 660 moveto -571.5 -330 lineto 571.5 -330 lineto closepath} def + /SolidTriangle {TrianglePath fill} def + /Triangle {TrianglePath .85 .85 scale TrianglePath eofill} def + /BoldTriangle {TrianglePath .7 .7 scale TrianglePath eofill} def + /SquarePath {-450 450 moveto 450 450 lineto 450 -450 lineto -450 -450 lineto closepath} def + /SolidSquare {SquarePath fill} def + /Square {SquarePath .89 .89 scale SquarePath eofill} def + /BoldSquare {SquarePath .78 .78 scale SquarePath eofill} def + /PentagonPath { + -337.8 -465 moveto 337.8 -465 lineto 546.6 177.6 lineto + 0 574.7 lineto -546.6 177.6 lineto closepath + } def + /SolidPentagon {PentagonPath fill} def + /Pentagon {PentagonPath .89 .89 scale PentagonPath eofill} def + /BoldPentagon {PentagonPath .78 .78 scale PentagonPath eofill} def +%-------------- hv begin 2004/07/25 from: er 2003/03/24 + /HexagonPath { + 0 550 moveto -476 275 lineto -476 -275 lineto + 0 -550 lineto 476 -275 lineto 476 275 lineto closepath + } def + /SolidHexagon {HexagonPath fill} def + /Hexagon {HexagonPath .89 .89 scale HexagonPath eofill} def + /BoldHexagon {HexagonPath .79 .79 scale HexagonPath eofill} def +% 2008-04-18 hv + /OctogonPath { + 228 550 moveto 7 { -456 0 rlineto 45 rotate } repeat + closepath + } def + /SolidOctogon { OctogonPath fill } def + /Octogon { OctogonPath .89 .89 scale OctogonPath eofill } def + /BoldOctogon { OctogonPath .79 .79 scale OctogonPath eofill } def +% + /AsteriskPath { + 20 0 moveto 10 250 180 500 0 500 curveto + -180 500 -10 250 -20 0 curveto closepath + } def + /Asterisk { + AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath + 60 rotate AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath fill + } def +% + /Basterp {50 250 220 500 0 500 curveto -220 500 -50 250 -50 30 cos 100 mul curveto} def + /BoldAsteriskPath { + 50 30 cos 100 mul moveto Basterp + 60 rotate Basterp 60 rotate Basterp + 60 rotate Basterp 60 rotate Basterp + 60 rotate Basterp closepath + } def + /BoldAsterisk {BoldAsteriskPath fill} def + /SolidAsterisk {CirclePath .9 .9 scale BoldAsteriskPath eofill} def + /CrossPath { + 40 550 moveto -40 550 lineto -40 40 lineto -550 40 lineto + -550 -40 lineto -40 -40 lineto -40 -550 lineto 40 -550 lineto + 40 -40 lineto 550 -40 lineto 550 40 lineto 40 40 lineto closepath + } def + /BoldCrossPath {80 550 moveto -80 550 lineto -80 80 lineto -550 80 lineto + -550 -80 lineto -80 -80 lineto -80 -550 lineto 80 -550 lineto + 80 -80 lineto 550 -80 lineto 550 80 lineto 80 80 lineto closepath + } def + /Add {CrossPath fill} def + /Mul {45 rotate CrossPath fill} def + /BoldAdd {BoldCrossPath fill} def + /BoldMul {45 rotate BoldCrossPath fill} def + /Oplus {CirclePath .9 .9 scale CirclePath eofill .775 .775 scale CrossPath fill } def + /SolidOplus {CirclePath .775 .775 scale BoldCrossPath eofill} def + /BOplus {CirclePath .8 .8 scale CirclePath eofill .775 .775 scale BoldCrossPath fill} def + /Otimes {CirclePath .9 .9 scale CirclePath eofill 45 rotate .775 .775 scale CrossPath fill} def + /BOtimes {CirclePath .8 .8 scale CirclePath eofill 45 rotate .775 .775 scale BoldCrossPath fill } def + /SolidOtimes {CirclePath 45 rotate .775 .775 scale BoldCrossPath eofill} def + /BarPath {40 660 moveto -40 660 lineto -40 -660 lineto 40 -660 lineto closepath} def + /Bar {BarPath fill} def + /BoldBarPath {80 660 moveto -80 660 lineto -80 -660 lineto 80 -660 lineto closepath} def + /BoldBar {BoldBarPath fill} def + /DiamondPath {0 742.5 moveto -428.5 0 lineto 0 -742.5 lineto 428.5 0 lineto closepath} def + /SolidDiamond {DiamondPath fill} def + /Diamond {DiamondPath .865 .865 scale DiamondPath eofill} def + /BoldDiamond {DiamondPath .73 .73 scale DiamondPath eofill} def +%%% + /.notdef { } def +end +% +/BuildGlyph { + exch + begin +% Metrics 1 index get exec 0 + 0 0 +% BBoxes 3 index get exec + -1000 -1000 1000 1000 +% -571.5 -742.5 571.5 742.5 + setcachedevice + CharProcs begin load exec end + end +} def +% +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +} bind def + +end +/PSTricksDotFont exch definefont pop + +%% end + +%%EndProcSet +%%BeginProcSet: xcolor.pro 0 0 +%! +%% +%% This is file `xcolor.pro', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% xcolor.dtx (with options: `dvips') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from xcolor.pro. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file xcolor.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% +%% xcolor.pro (PostScript/dvips header file) +%% [2007/01/21 v2.11 LaTeX color extensions (UK)] +%% +%% ---------------------------------------------------------------- +%% Copyright (C) 2003-2007 by Dr. Uwe Kern <xcolor at ukern dot de> +%% ---------------------------------------------------------------- +%% +userdict begin +/setcmycolor{0 setcmykcolor}def +/XCbd{bind def}bind def +/XCed{exch def}XCbd +/XCdef{exch dup TeXDict exch known{pop pop}{XCed}ifelse}XCbd +/XCsetcolor{cvx counttomark array astore cvx exch pop XCdef}XCbd +/XCcmy{mark exch exec/setcmycolor XCsetcolor}XCbd +/XCcmyk{mark exch exec/setcmykcolor XCsetcolor}XCbd +/XCgray{mark exch exec/setgray XCsetcolor}XCbd +/XChsb{mark exch exec/sethsbcolor XCsetcolor}XCbd +/XCrgb{mark exch exec/setrgbcolor XCsetcolor}XCbd +/XCfixnormalscale{/normalscale{Resolution 72 div VResolution 72 div neg + scale magscale{DVImag dup scale}if}def}def +/XC!b{save XCfixnormalscale}XCbd +/XC!e{restore}XCbd +/XCsp2bp{1 65781.76 div dup scale}XCbd +/XCsetline + {setlinewidth [] 0 setdash 2 setlinecap 0 setlinejoin 4 setmiterlimit}XCbd +/XCboxframe{/d XCed/h XCed/w XCed/l XCed w 0 gt{h d neg gt{l 0 gt + {XCsp2bp l XCsetline + l 2 div dup translate + 0 d neg w l sub h l sub d add rectstroke}if}if}if}XCbd +/XCcolorblock{/d XCed/h XCed/w XCed w 0 gt{h d neg gt + {XCsp2bp 0 XCsetline + 0 d neg w h d add rectfill}if}if}XCbd +end +%% End of file `xcolor.pro'. + +%%EndProcSet +%%BeginProcSet: wieesgeht.xcp 0 0 +%! +TeXDict begin +/XC@red{0 1 1 0}XCcmyk +/XC@green{1 0 1 0}XCcmyk +/XC@blue{1 1 0 0}XCcmyk +/XC@brown{0 0.25 0.5 0.25}XCcmyk +/XC@lime{0.25 0 1 0}XCcmyk +/XC@orange{0 0.5 1 0}XCcmyk +/XC@pink{0 0.25 0.25 0}XCcmyk +/XC@purple{0 0.75 0.5 0.25}XCcmyk +/XC@teal{0.5 0 0 0.5}XCcmyk +/XC@violet{0 0.5 0 0.5}XCcmyk +/XC@cyan{1 0 0 0}XCcmyk +/XC@magenta{0 1 0 0}XCcmyk +/XC@yellow{0 0 1 0}XCcmyk +/XC@olive{0 0 1 0.5}XCcmyk +/XC@black{0 0 0 1}XCcmyk +/XC@darkgray{0 0 0 0.75}XCcmyk +/XC@gray{0 0 0 0.5}XCcmyk +/XC@lightgray{0 0 0 0.25}XCcmyk +/XC@white{0 0 0 0}XCcmyk +/GreenYellow{0.15 0 0.69 0}XCcmyk +/Yellow{0 0 1 0}XCcmyk +/Goldenrod{0 0.1 0.84 0}XCcmyk +/Dandelion{0 0.29 0.84 0}XCcmyk +/Apricot{0 0.32 0.52 0}XCcmyk +/Peach{0 0.5 0.7 0}XCcmyk +/Melon{0 0.46 0.5 0}XCcmyk +/YellowOrange{0 0.42 1 0}XCcmyk +/Orange{0 0.61 0.87 0}XCcmyk +/BurntOrange{0 0.51 1 0}XCcmyk +/Bittersweet{0 0.75 1 0.24}XCcmyk +/RedOrange{0 0.77 0.87 0}XCcmyk +/Mahogany{0 0.85 0.87 0.35}XCcmyk +/Maroon{0 0.87 0.68 0.32}XCcmyk +/BrickRed{0 0.89 0.94 0.28}XCcmyk +/Red{0 1 1 0}XCcmyk +/OrangeRed{0 1 0.5 0}XCcmyk +/RubineRed{0 1 0.13 0}XCcmyk +/WildStrawberry{0 0.96 0.39 0}XCcmyk +/Salmon{0 0.53 0.38 0}XCcmyk +/CarnationPink{0 0.63 0 0}XCcmyk +/Magenta{0 1 0 0}XCcmyk +/VioletRed{0 0.81 0 0}XCcmyk +/Rhodamine{0 0.82 0 0}XCcmyk +/Mulberry{0.34 0.9 0 0.02}XCcmyk +/RedViolet{0.07 0.9 0 0.34}XCcmyk +/Fuchsia{0.47 0.91 0 0.08}XCcmyk +/Lavender{0 0.48 0 0}XCcmyk +/Thistle{0.12 0.59 0 0}XCcmyk +/Orchid{0.32 0.64 0 0}XCcmyk +/DarkOrchid{0.4 0.8 0.2 0}XCcmyk +/Purple{0.45 0.86 0 0}XCcmyk +/Plum{0.5 1 0 0}XCcmyk +/Violet{0.79 0.88 0 0}XCcmyk +/RoyalPurple{0.75 0.9 0 0}XCcmyk +/BlueViolet{0.86 0.91 0 0.04}XCcmyk +/Periwinkle{0.57 0.55 0 0}XCcmyk +/CadetBlue{0.62 0.57 0.23 0}XCcmyk +/CornflowerBlue{0.65 0.13 0 0}XCcmyk +/MidnightBlue{0.98 0.13 0 0.43}XCcmyk +/NavyBlue{0.94 0.54 0 0}XCcmyk +/RoyalBlue{1 0.5 0 0}XCcmyk +/Blue{1 1 0 0}XCcmyk +/Cerulean{0.94 0.11 0 0}XCcmyk +/Cyan{1 0 0 0}XCcmyk +/ProcessBlue{0.96 0 0 0}XCcmyk +/SkyBlue{0.62 0 0.12 0}XCcmyk +/Turquoise{0.85 0 0.2 0}XCcmyk +/TealBlue{0.86 0 0.34 0.02}XCcmyk +/Aquamarine{0.82 0 0.3 0}XCcmyk +/BlueGreen{0.85 0 0.33 0}XCcmyk +/Emerald{1 0 0.5 0}XCcmyk +/JungleGreen{0.99 0 0.52 0}XCcmyk +/SeaGreen{0.69 0 0.5 0}XCcmyk +/Green{1 0 1 0}XCcmyk +/ForestGreen{0.91 0 0.88 0.12}XCcmyk +/PineGreen{0.92 0 0.59 0.25}XCcmyk +/LimeGreen{0.5 0 1 0}XCcmyk +/YellowGreen{0.44 0 0.74 0}XCcmyk +/SpringGreen{0.26 0 0.76 0}XCcmyk +/OliveGreen{0.64 0 0.95 0.4}XCcmyk +/RawSienna{0 0.72 1 0.45}XCcmyk +/Sepia{0 0.83 1 0.7}XCcmyk +/Brown{0 0.81 1 0.6}XCcmyk +/Tan{0.14 0.42 0.56 0}XCcmyk +/Gray{0 0 0 0.5}XCcmyk +/Black{0 0 0 1}XCcmyk +/White{0 0 0 0}XCcmyk +/XC@AliceBlue{0.06 0.028 0 0}XCcmyk +/XC@AntiqueWhite{0 0.06 0.136 0.02}XCcmyk +/XC@Aqua{1 0 0 0}XCcmyk +/XC@Aquamarine{0.502 0 0.17 0}XCcmyk +/XC@Azure{0.06 0 0 0}XCcmyk +/XC@Beige{0 0 0.096 0.04}XCcmyk +/XC@Bisque{0 0.106 0.23 0}XCcmyk +/XC@Black{0 0 0 1}XCcmyk +/XC@BlanchedAlmond{0 0.08 0.196 0}XCcmyk +/XC@Blue{1 1 0 0}XCcmyk +/XC@BlueViolet{0.348 0.718 0 0.112}XCcmyk +/XC@Brown{0 0.483 0.483 0.352}XCcmyk +/XC@BurlyWood{0 0.15 0.34 0.13}XCcmyk +/XC@CadetBlue{0.256 0.008 0 0.372}XCcmyk +/XC@Chartreuse{0.502 0 1 0}XCcmyk +/XC@Chocolate{0 0.414 0.708 0.176}XCcmyk +/XC@Coral{0 0.502 0.688 0}XCcmyk +/XC@CornflowerBlue{0.538 0.345 0 0.07}XCcmyk +/XC@Cornsilk{0 0.028 0.136 0}XCcmyk +/XC@Crimson{0 0.784 0.629 0.136}XCcmyk +/XC@Cyan{1 0 0 0}XCcmyk +/XC@DarkBlue{0.545 0.545 0 0.455}XCcmyk +/XC@DarkCyan{0.545 0 0 0.455}XCcmyk +/XC@DarkGoldenrod{0 0.195 0.676 0.28}XCcmyk +/XC@DarkGray{0 0 0 0.336}XCcmyk +/XC@DarkGreen{0.392 0 0.392 0.608}XCcmyk +/XC@DarkGrey{0 0 0 0.336}XCcmyk +/XC@DarkKhaki{0 0.024 0.32 0.26}XCcmyk +/XC@DarkMagenta{0 0.545 0 0.455}XCcmyk +/XC@DarkOliveGreen{0.088 0 0.235 0.58}XCcmyk +/XC@DarkOrange{0 0.45 1 0}XCcmyk +/XC@DarkOrchid{0.2 0.604 0 0.2}XCcmyk +/XC@DarkRed{0 0.545 0.545 0.455}XCcmyk +/XC@DarkSalmon{0 0.322 0.432 0.088}XCcmyk +/XC@DarkSeaGreen{0.176 0 0.176 0.264}XCcmyk +/XC@DarkSlateBlue{0.261 0.305 0 0.455}XCcmyk +/XC@DarkSlateGray{0.125 0 0 0.69}XCcmyk +/XC@DarkSlateGrey{0.125 0 0 0.69}XCcmyk +/XC@DarkTurquoise{0.82 0.012 0 0.18}XCcmyk +/XC@DarkViolet{0.248 0.828 0 0.172}XCcmyk +/XC@DeepPink{0 0.92 0.424 0}XCcmyk +/XC@DeepSkyBlue{1 0.25 0 0}XCcmyk +/XC@DimGray{0 0 0 0.59}XCcmyk +/XC@DimGrey{0 0 0 0.59}XCcmyk +/XC@DodgerBlue{0.884 0.435 0 0}XCcmyk +/XC@FireBrick{0 0.566 0.566 0.302}XCcmyk +/XC@FloralWhite{0 0.02 0.06 0}XCcmyk +/XC@ForestGreen{0.413 0 0.413 0.455}XCcmyk +/XC@Fuchsia{0 1 0 0}XCcmyk +/XC@Gainsboro{0 0 0 0.136}XCcmyk +/XC@GhostWhite{0.028 0.028 0 0}XCcmyk +/XC@Gold{0 0.156 1 0}XCcmyk +/XC@Goldenrod{0 0.207 0.73 0.145}XCcmyk +/XC@Gray{0 0 0 0.5}XCcmyk +/XC@Green{0.5 0 0.5 0.5}XCcmyk +/XC@GreenYellow{0.32 0 0.815 0}XCcmyk +/XC@Grey{0 0 0 0.5}XCcmyk +/XC@Honeydew{0.06 0 0.06 0}XCcmyk +/XC@HotPink{0 0.59 0.295 0}XCcmyk +/XC@IndianRed{0 0.444 0.444 0.196}XCcmyk +/XC@Indigo{0.216 0.51 0 0.49}XCcmyk +/XC@Ivory{0 0 0.06 0}XCcmyk +/XC@Khaki{0 0.04 0.39 0.06}XCcmyk +/XC@Lavender{0.08 0.08 0 0.02}XCcmyk +/XC@LavenderBlush{0 0.06 0.04 0}XCcmyk +/XC@LawnGreen{0.502 0 0.99 0.01}XCcmyk +/XC@LemonChiffon{0 0.02 0.196 0}XCcmyk +/XC@LightBlue{0.22 0.052 0 0.1}XCcmyk +/XC@LightCoral{0 0.44 0.44 0.06}XCcmyk +/XC@LightCyan{0.12 0 0 0}XCcmyk +/XC@LightGoldenrod{0 0.066 0.423 0.067}XCcmyk +/XC@LightGoldenrodYellow{0 0 0.156 0.02}XCcmyk +/XC@LightGray{0 0 0 0.172}XCcmyk +/XC@LightGreen{0.367 0 0.367 0.068}XCcmyk +/XC@LightGrey{0 0 0 0.172}XCcmyk +/XC@LightPink{0 0.288 0.244 0}XCcmyk +/XC@LightSalmon{0 0.372 0.52 0}XCcmyk +/XC@LightSeaGreen{0.573 0 0.03 0.302}XCcmyk +/XC@LightSkyBlue{0.45 0.172 0 0.02}XCcmyk +/XC@LightSlateBlue{0.482 0.56 0 0}XCcmyk +/XC@LightSlateGray{0.132 0.068 0 0.4}XCcmyk +/XC@LightSlateGrey{0.132 0.068 0 0.4}XCcmyk +/XC@LightSteelBlue{0.18 0.1 0 0.13}XCcmyk +/XC@LightYellow{0 0 0.12 0}XCcmyk +/XC@Lime{1 0 1 0}XCcmyk +/XC@LimeGreen{0.608 0 0.608 0.196}XCcmyk +/XC@Linen{0 0.04 0.08 0.02}XCcmyk +/XC@Magenta{0 1 0 0}XCcmyk +/XC@Maroon{0 0.5 0.5 0.5}XCcmyk +/XC@MediumAquamarine{0.404 0 0.136 0.196}XCcmyk +/XC@MediumBlue{0.804 0.804 0 0.196}XCcmyk +/XC@MediumOrchid{0.098 0.496 0 0.172}XCcmyk +/XC@MediumPurple{0.284 0.42 0 0.14}XCcmyk +/XC@MediumSeaGreen{0.465 0 0.256 0.3}XCcmyk +/XC@MediumSlateBlue{0.448 0.524 0 0.068}XCcmyk +/XC@MediumSpringGreen{0.98 0 0.376 0.02}XCcmyk +/XC@MediumTurquoise{0.536 0 0.02 0.18}XCcmyk +/XC@MediumVioletRed{0 0.696 0.26 0.22}XCcmyk +/XC@MidnightBlue{0.342 0.342 0 0.56}XCcmyk +/XC@MintCream{0.04 0 0.02 0}XCcmyk +/XC@MistyRose{0 0.106 0.116 0}XCcmyk +/XC@Moccasin{0 0.106 0.29 0}XCcmyk +/XC@NavajoWhite{0 0.13 0.32 0}XCcmyk +/XC@Navy{0.5 0.5 0 0.5}XCcmyk +/XC@NavyBlue{0.5 0.5 0 0.5}XCcmyk +/XC@OldLace{0 0.032 0.092 0.008}XCcmyk +/XC@Olive{0 0 0.5 0.5}XCcmyk +/XC@OliveDrab{0.136 0 0.42 0.444}XCcmyk +/XC@Orange{0 0.352 1 0}XCcmyk +/XC@OrangeRed{0 0.73 1 0}XCcmyk +/XC@Orchid{0 0.415 0.015 0.145}XCcmyk +/XC@PaleGoldenrod{0 0.022 0.264 0.068}XCcmyk +/XC@PaleGreen{0.389 0 0.389 0.015}XCcmyk +/XC@PaleTurquoise{0.244 0 0 0.068}XCcmyk +/XC@PaleVioletRed{0 0.42 0.284 0.14}XCcmyk +/XC@PapayaWhip{0 0.064 0.165 0}XCcmyk +/XC@PeachPuff{0 0.145 0.275 0}XCcmyk +/XC@Peru{0 0.284 0.556 0.196}XCcmyk +/XC@Pink{0 0.248 0.204 0}XCcmyk +/XC@Plum{0 0.24 0 0.132}XCcmyk +/XC@PowderBlue{0.21 0.02 0 0.1}XCcmyk +/XC@Purple{0 0.5 0 0.5}XCcmyk +/XC@Red{0 1 1 0}XCcmyk +/XC@RosyBrown{0 0.176 0.176 0.264}XCcmyk +/XC@RoyalBlue{0.629 0.474 0 0.116}XCcmyk +/XC@SaddleBrown{0 0.275 0.47 0.455}XCcmyk +/XC@Salmon{0 0.48 0.532 0.02}XCcmyk +/XC@SandyBrown{0 0.312 0.58 0.044}XCcmyk +/XC@SeaGreen{0.365 0 0.205 0.455}XCcmyk +/XC@Seashell{0 0.04 0.068 0}XCcmyk +/XC@Sienna{0 0.308 0.452 0.372}XCcmyk +/XC@Silver{0 0 0 0.248}XCcmyk +/XC@SkyBlue{0.39 0.112 0 0.08}XCcmyk +/XC@SlateBlue{0.389 0.452 0 0.196}XCcmyk +/XC@SlateGray{0.125 0.065 0 0.435}XCcmyk +/XC@SlateGrey{0.125 0.065 0 0.435}XCcmyk +/XC@Snow{0 0.02 0.02 0}XCcmyk +/XC@SpringGreen{1 0 0.502 0}XCcmyk +/XC@SteelBlue{0.43 0.195 0 0.295}XCcmyk +/XC@Tan{0 0.119 0.274 0.176}XCcmyk +/XC@Teal{0.5 0 0 0.5}XCcmyk +/XC@Thistle{0 0.098 0 0.152}XCcmyk +/XC@Tomato{0 0.61 0.72 0}XCcmyk +/XC@Turquoise{0.63 0 0.065 0.12}XCcmyk +/XC@Violet{0 0.422 0 0.068}XCcmyk +/XC@VioletRed{0 0.691 0.251 0.184}XCcmyk +/XC@Wheat{0 0.09 0.26 0.04}XCcmyk +/XC@White{0 0 0 0}XCcmyk +/XC@WhiteSmoke{0 0 0 0.04}XCcmyk +/XC@Yellow{0 0 1 0}XCcmyk +/XC@YellowGreen{0.2 0 0.608 0.196}XCcmyk +/XC@gradbegin{1 0 0 0}XCcmyk +/XC@gradend{0.95 0.85 0 0.05}XCcmyk +/XC@black{0 0 0 1}XCcmyk +/XC@darkgray{0 0 0 0.75}XCcmyk +/XC@gray{0 0 0 0.5}XCcmyk +/XC@lightgray{0 0 0 0.25}XCcmyk +/XC@white{0 0 0 0}XCcmyk +/XC@red{0 1 1 0}XCcmyk +/XC@green{1 0 1 0}XCcmyk +/XC@blue{1 1 0 0}XCcmyk +/XC@yellow{0 0 1 0}XCcmyk +/XC@cyan{1 0 0 0}XCcmyk +/XC@magenta{0 1 0 0}XCcmyk +end + +%%EndProcSet +%%BeginProcSet: pst-node.pro 0 0 +% $Id: pst-node.pro 40 2008-09-04 17:56:41Z herbert $ +%% +%% PostScript prologue for pst-node.tex. +%% Version 1.02, 2009/01/30. +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +% +/tx@NodeDict 400 dict def tx@NodeDict begin +tx@Dict begin % from main pstricks dict + /T /translate load def +end +/NewNode { % on stack: { x y } boolean N@name type InitXnode + gsave + /next ED % { x y } boolean N@name type + dict dup % { x y } boolean N@name dict dict + 3 1 roll def % { x y } boolean dict N@name dict def + exch { dup 3 1 roll def } if % { x y } dict boolean + begin % { x y } dict begin + tx@Dict begin + STV CP T exec % set scaling + end + /NodeMtrx CM def % save CM + next % InitXNode + end + grestore +} def +% +/InitPnode { + /Y ED /X ED + /NodePos { NodeSep Cos mul NodeSep Sin mul } def +} def +% +/InitCnode { + /r ED /Y ED /X ED + /NodePos { NodeSep r add dup Cos mul exch Sin mul } def +} def +% +/GetRnodePos { + Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def } ifelse + Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def } ifelse + dx Sin mul abs dy + Cos mul abs gt { dy Cos mul Sin div dy } { dx dup Sin mul Cos Div } ifelse +} def +% +/InitRnode { + /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub /u ED + /NodePos { GetRnodePos } def +} def +% +/DiaNodePos { + w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup + Cos mul exch Sin mul +} def +% +/TriNodePos { + Sin s lt + { d NodeSep sub dup Cos mul Sin Div exch } + { w h mul w Sin mul h Cos abs mul add Div + NodeSep add dup Cos mul exch Sin mul + } ifelse +} def +% +/InitTriNode { + sub 2 div exch + 2 div exch + 2 copy T + 2 copy 4 index index /d ED + pop pop pop pop + -90 mul rotate + /NodeMtrx CM def + /X 0 def /Y 0 def + d sub abs neg /d ED + d add /h ED + 2 div h mul h d sub Div /w ED + /s d w Atan sin def + /NodePos { TriNodePos } def +} def +% +/OvalNodePos { + /ww w NodeSep add def + /hh h NodeSep add def + Sin ww mul Cos hh mul Atan dup cos ww mul exch sin hh mul +} def +% +/GetCenter { begin X Y NodeMtrx transform CM itransform end } def +% +/XYPos { + dup sin exch cos Do + /Cos ED /Sin ED /Dist ED + Cos 0 gt + { Dist Dist Sin mul Cos div } + { Cos 0 lt + { Dist neg Dist Sin mul Cos div neg } + { 0 Dist Sin mul } ifelse + } ifelse + Do +} def +% +/GetEdge { + dup 0 eq + { pop begin 1 0 NodeMtrx dtransform + CM idtransform + exch atan sub + dup + sin /Sin ED + cos /Cos ED + /NodeSep ED + NodePos NodeMtrx dtransform CM idtransform end } + { 1 eq {{exch}} {{}} ifelse /Do ED pop XYPos } ifelse +} def +% +/AddOffset { + 1 index 0 eq + { pop pop } + { 2 copy 5 2 roll cos mul add 4 1 roll sin mul sub exch } ifelse +} def +% +/GetEdgeA { + NodeSepA AngleA NodeA NodeSepTypeA GetEdge + OffsetA AngleA AddOffset + yA add /yA1 ED + xA add /xA1 ED +} def +% +/GetEdgeB { + NodeSepB AngleB NodeB NodeSepTypeB GetEdge + OffsetB AngleB AddOffset + yB add /yB1 ED + xB add /xB1 ED +} def +% +/GetArmA { + ArmTypeA 0 eq + { /xA2 ArmA AngleA cos mul xA1 add def + /yA2 ArmA AngleA sin mul yA1 add def } + { ArmTypeA 1 eq {{exch}} {{}} ifelse + /Do ED + ArmA AngleA XYPos OffsetA AngleA AddOffset + yA add /yA2 ED + xA add /xA2 ED } ifelse +} def +% +/GetArmB { + ArmTypeB 0 eq + { /xB2 ArmB AngleB cos mul xB1 add def + /yB2 ArmB AngleB sin mul yB1 add def } + { ArmTypeB 1 eq {{exch}} {{}} ifelse + /Do ED + ArmB AngleB XYPos OffsetB AngleB AddOffset + yB add /yB2 ED + xB add /xB2 ED } ifelse +} def +% +/InitNC { + /b ED /a ED % second and first node + /NodeSepTypeB ED /NodeSepTypeA ED + /NodeSepB ED /NodeSepA ED + /OffsetB ED /OffsetA ED + tx@NodeDict a known tx@NodeDict b known and dup { + /NodeA a load def + /NodeB b load def + NodeA GetCenter /yA ED /xA ED + NodeB GetCenter /yB ED /xB ED } if +} def +% +/LPutLine { + 4 copy + 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED + 1 t sub mul + 3 1 roll 1 t sub mul + 4 1 roll t mul add /Y ED + t mul add /X ED +} def +% +/LPutLines { + mark LPutVar counttomark 2 div 1 sub /n ED +% t floor dup n gt + t floor dup n ge % to allow npos<= hv 2008-08-14 + { pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse + cvi 2 mul { pop } repeat + LPutLine + cleartomark +} def +% +/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED +/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3 +mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx +sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul +add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add +y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul +mul 2 bx t mul mul add cx add atan /NAngle ED /Y ED /X ED } def +/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def +} def +/HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def +/NAngle yyB yyA sub xxB xxA sub Atan def } def +/HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd } def +/HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def +} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit +} { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd +} def +/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def +} def +/VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def +/NAngle yyB yyA sub xxB xxA sub Atan def } def +/VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd } def +/VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def +} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check { +exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark +VPosEnd } def +/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2 +roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx +def grestore exec /LPutVar /SaveLPutVar load def } def +/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def +GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos { +LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos { +LPutVar VPutLine } def LPutVar } def +/NCLine { NCCoor tx@Dict begin ArrowA CP 4 2 roll ArrowB lineto pop pop +end } def +/NCLines { false NArray n 0 eq { NCLine } { 2 copy yA sub exch xA sub +Atan /AngleA ED n 2 mul dup index exch index yB sub exch xB sub Atan +/AngleB ED GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1 +yA1 ] cvx def mark LPutVar tx@Dict begin false Line end /LPutPos { +LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } +ifelse } def +/NCCurve { GetEdgeA GetEdgeB xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1 +roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA +GetArmB xA2 yA2 xA1 yA1 tx@Dict begin ArrowA end xB2 yB2 xB1 yB1 tx@Dict +begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ] +cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines +} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def +% +/NCAngles { + GetEdgeA GetEdgeB GetArmA GetArmB + /mtrx AngleA matrix rotate def + xA2 yA2 mtrx transform pop + xB2 yB2 mtrx transform exch pop + mtrx itransform + /y0 ED /x0 ED + mark ArmB 0 ne { xB1 yB1 } if + xB2 yB2 x0 y0 xA2 yA2 + ArmA 0 ne { xA1 yA1 } if + tx@Dict begin false Line end + /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def } def +% +/NCAngle { + GetEdgeA GetEdgeB GetArmB + /mtrx AngleA matrix rotate def + xB2 yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform + /y0 ED /x0 ED + mark + ArmB 0 ne { xB1 yB1 } if + xB2 yB2 x0 y0 xA1 yA1 + tx@Dict begin false Line end + /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ] cvx def + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def +} def +% +/NCBar { + GetEdgeA GetEdgeB GetArmA GetArmB + /mtrx AngleA matrix rotate def + xA2 yA2 mtrx itransform pop + xB2 yB2 mtrx itransform pop + sub dup 0 mtrx transform + 3 -1 roll 0 gt + { /yB2 exch yB2 add def /xB2 exch xB2 add def } + { /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse + mark + ArmB 0 ne { xB1 yB1 } if + xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if + tx@Dict begin false Line end + /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def +} def +% +/NCDiag { + GetEdgeA GetEdgeB GetArmA GetArmB mark + ArmB 0 ne { xB1 yB1 } if + xB2 yB2 xA2 yA2 + ArmA 0 ne { xA1 yA1 } if + tx@Dict begin false Line end + /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def +} def +% +/NCDiagg { + GetEdgeA GetArmA + yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED + GetEdgeB + mark + xB1 yB1 xA2 yA2 + ArmA 0 ne { xA1 yA1 } if + tx@Dict begin false Line end + /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def +} def +% +/NCLoop { + GetEdgeA GetEdgeB GetArmA GetArmB + /mtrx AngleA matrix rotate def + xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED + /xB3 xB2 yB2 mtrx transform pop def + xB3 yA3 mtrx itransform /yB3 ED /xB3 ED + xA3 yA3 mtrx itransform /yA3 ED /xA3 ED + mark ArmB 0 ne { xB1 yB1 } if + xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if + tx@Dict begin false Line end + /LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ] cvx def + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def +} def +% +% DG/SR modification begin - May 9, 1997 - Patch 1 +%/NCCircle { 0 0 NodesepA nodeA \tx@GetEdge pop xA sub 2 div dup 2 exp r +%r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add +%exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360 +%mul add dup 5 1 roll 90 sub \tx@PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED +% +/NCCircle { + NodeSepA 0 NodeA 0 GetEdge pop + 2 div dup 2 exp r r mul sub abs sqrt + atan 2 mul /a ED + r AngleA 90 add PtoC yA add exch xA add + exch 2 copy + /LPutVar [ 4 2 roll r AngleA ] cvx def + /LPutPos { + LPutVar t 360 mul add dup 5 1 roll 90 sub PtoC + 3 -1 roll add + /Y ED add /X ED /NAngle ED +% DG/SR modification end + } def + /HPutPos { LPutPos } def + /VPutPos { LPutPos } def + r AngleA 90 sub a add AngleA 270 add a sub + tx@Dict begin + /angleB ED /angleA ED /r ED + /c 57.2957 r Div def + /y ED /x ED +} def +% +/NCBox { /d ED /h ED /AngleB yB yA sub xB xA sub Atan def /AngleA AngleB +180 add def GetEdgeA GetEdgeB /dx d AngleB sin mul def /dy d AngleB cos +mul neg def /hx h AngleB sin mul neg def /hy h AngleB cos mul def +/LPutVar [ xA1 hx add yA1 hy add xB1 hx add yB1 hy add xB1 dx add yB1 dy +add xA1 dx add yA1 dy add ] cvx def /LPutPos { LPutLines } def /HPutPos +{ xB yB xA yA LPutLine } def /VPutPos { HPutPos } def mark LPutVar +tx@Dict begin false Polygon end } def +/NCArcBox { /l ED neg /d ED /h ED /a ED /AngleA yB yA sub xB xA sub Atan +def /AngleB AngleA 180 add def /tA AngleA a sub 90 add def /tB tA a 2 +mul add def /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def +/x0 xA r tA cos mul add def /y0 yA r tA sin mul add def /c 57.2958 r div +def /AngleA AngleA a sub 180 add def /AngleB AngleB a add 180 add def +GetEdgeA GetEdgeB /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul +sub def /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def l 0 +eq { x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn } +{ x0 y0 translate /tA AngleA l c mul add def /tB AngleB l c mul sub def +0 0 r h add tA tB arc r h add AngleB PtoC r d add AngleB PtoC 2 copy 6 2 +roll l arcto 4 { pop } repeat r d add tB PtoC l arcto 4 { pop } repeat 0 +0 r d add tB tA arcn r d add AngleA PtoC r h add AngleA PtoC 2 copy 6 2 +roll l arcto 4 { pop } repeat r h add tA PtoC l arcto 4 { pop } repeat } +ifelse closepath /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def /LPutPos +{ LPutVar /d ED /h ED /AngleB ED /AngleA ED /r ED /y0 ED /x0 ED t 1 le { +r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC } +{ t 2 lt { /NAngle AngleB 180 add def r 2 t sub h mul t 1 sub d mul add +add AngleB PtoC } { t 3 lt { r d add AngleB 3 t sub mul AngleA 2 t sub +mul add dup 90 sub /NAngle ED PtoC } { /NAngle AngleA 180 add def r 4 t +sub d mul t 3 sub h mul add add AngleA PtoC } ifelse } ifelse } ifelse +y0 add /Y ED x0 add /X ED } def /HPutPos { LPutPos } def /VPutPos { +LPutPos } def } def +/Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB +sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1 +ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB +w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos +{ LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop } +{ pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine } +def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx@Dict begin +/ArrowA { moveto } def /ArrowB { } def false Line closepath end } def +% +/LPutCoor { + NAngle + tx@Dict begin /NAngle ED end + gsave + CM STV + CP Y sub neg exch X sub neg exch moveto + setmatrix CP + grestore +} def +% +/LPut { + tx@NodeDict /LPutPos known + { LPutPos } { CP /Y ED /X ED /NAngle 0 def } ifelse + LPutCoor +} def +% +/HPutAdjust { + Sin Cos mul 0 eq + { 0 } + { d Cos mul Sin div flag not { neg } if + h Cos mul Sin div flag { neg } if + 2 copy gt { pop } { exch pop } ifelse + } ifelse + s add flag { r add neg }{ l add } ifelse + X add /X ED +} def +% +/VPutAdjust { + Sin Cos mul + 0 eq + { 0 } + { l Sin mul Cos div flag { neg } if + r Sin mul Cos div flag not { neg } if + 2 copy gt { pop } { exch pop } ifelse + } ifelse + s add flag { d add } { h add neg } ifelse + Y add /Y ED +} def +% +end +% +% END pst-node.pro + +%%EndProcSet +%%BeginProcSet: 8r.enc 0 0 +% File 8r.enc TeX Base 1 Encoding Revision 2.0 2002-10-30 +% +% @@psencodingfile@{ +% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, +% W. Schmidt, P. Lehman", +% version = "2.0", +% date = "27nov06", +% filename = "8r.enc", +% email = "tex-fonts@@tug.org", +% docstring = "This is the encoding vector for Type1 and TrueType +% fonts to be used with TeX. This file is part of the +% PSNFSS bundle, version 9" +% @} +% +% The 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, Windows ANSI including the euro symbol, +% MacRoman, and some 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. +% These are /dotlessj /ff /ffi /ffl. +% +% (4) hyphen appears twice for compatibility with both ASCII and Windows. +% +% (5) /Euro was assigned to 128, as in Windows ANSI +% +% (6) Missing characters from MacRoman encoding incorporated as follows: +% +% PostScript MacRoman TeXBase1 +% -------------- -------------- -------------- +% /notequal 173 0x16 +% /infinity 176 0x17 +% /lessequal 178 0x18 +% /greaterequal 179 0x19 +% /partialdiff 182 0x1A +% /summation 183 0x1B +% /product 184 0x1C +% /pi 185 0x1D +% /integral 186 0x81 +% /Omega 189 0x8D +% /radical 195 0x8E +% /approxequal 197 0x8F +% /Delta 198 0x9D +% /lozenge 215 0x9E +% +/TeXBase1Encoding [ +% 0x00 + /.notdef /dotaccent /fi /fl + /fraction /hungarumlaut /Lslash /lslash + /ogonek /ring /.notdef /breve + /minus /.notdef /Zcaron /zcaron +% 0x10 + /caron /dotlessi /dotlessj /ff + /ffi /ffl /notequal /infinity + /lessequal /greaterequal /partialdiff /summation + /product /pi /grave /quotesingle +% 0x20 + /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 +% 0x80 + /Euro /integral /quotesinglbase /florin + /quotedblbase /ellipsis /dagger /daggerdbl + /circumflex /perthousand /Scaron /guilsinglleft + /OE /Omega /radical /approxequal +% 0x90 + /.notdef /.notdef /.notdef /quotedblleft + /quotedblright /bullet /endash /emdash + /tilde /trademark /scaron /guilsinglright + /oe /Delta /lozenge /Ydieresis +% 0xA0 + /.notdef /exclamdown /cent /sterling + /currency /yen /brokenbar /section + /dieresis /copyright /ordfeminine /guillemotleft + /logicalnot /hyphen /registered /macron +% 0xB0 + /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 + + +%%EndProcSet +%%BeginProcSet: texps.pro 0 0 +%! +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]FontType 0 +ne{/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}{{1 index type +/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end +definefont 3 -1 roll makefont/setfont cvx]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{CharStrings rcheck{/Encoding false def dup[ +exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} +forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def +end + +%%EndProcSet +%%BeginProcSet: special.pro 0 0 +%! +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/setpagedevice{pop}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 +/setpagedevice{pop}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 +%%BeginProcSet: color.pro 0 0 +%! +TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop +setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll +}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def +/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ +setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ +/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch +known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC +/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC +/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 +setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 +setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 +0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC +/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 +setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 +0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ +0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ +0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC +/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 +setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 +setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 +0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC +/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 +setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 +0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ +0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ +0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC +/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 +setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC +/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 +0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 +0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 +0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 +setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 +0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC +/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 +setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 +0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 +1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC +/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 +setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ +0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} +DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 +setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 +setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 +setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end + +%%EndProcSet +%%BeginFont: LucidaBrightCE +%!PS-AdobeFont-1.0: LucidaBrightCE 001.000 +%%CreationDate: 18.02.00 at 15:55 +%%VMusage: 1024 47599 +% Generated by Fontographer 4.1 +% Copyright \(c\) 1998 Bigelow & Holmes Inc. Pat. Des 289,421. +% ADL: 800 200 0 +%%EndComments +FontDirectory/LucidaBrightCE known{/LucidaBrightCE findfont dup/UniqueID known{dup +/UniqueID get 4890615 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +20 dict begin +/FontInfo 16 dict dup begin +/version (001.000) readonly def +/FullName (LucidaBrightCE) readonly def +/FamilyName (LucidaBrightCE) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -200 def +/UnderlineThickness 100 def +/Notice (Copyright \(c\) 1998 Bigelow & Holmes Inc. Pat. Des 289,421.) readonly def +/em 1000 def +/ascent 800 def +/descent 200 def +end readonly def +/FontName /LucidaBrightCE def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 40 /parenleft put +dup 41 /parenright put +dup 44 /comma put +dup 45 /hyphen put +dup 46 /period put +dup 49 /one put +dup 51 /three put +dup 65 /A put +dup 66 /B put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 70 /F put +dup 72 /H put +dup 73 /I put +dup 75 /K put +dup 77 /M put +dup 80 /P put +dup 83 /S put +dup 84 /T put +dup 86 /V put +dup 88 /X put +dup 90 /Z put +dup 97 /a put +dup 98 /b put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 120 /x put +dup 121 /y put +dup 122 /z put +dup 228 /adieresis put +readonly def +/PaintType 0 def +/FontType 1 def +/StrokeWidth 0 def +/FontMatrix[0.001 0 0 0.001 0 0]readonly def +/FontBBox{-36 -318 1014 993}readonly def +currentdict end +currentfile eexec +D9D66F633B846AB28EDC112EE8CE6C673600130707DE48BF082E5E38F377870F +EC577CC0BE324DC9F48DDE3E42F41F80F0529CA4D00437E413B730C2971C6596 +BC0E5C3CB3B0C4CB00F49710EE39BFC08B25EE73EE0110AA0B09087B61961613 +F28957190014C668EBE72F94F0C3F59D322B6654935C89D08228D87A26CB5A02 +2AF72D68BFA18797C9A4FCE0EA5F267180E8BBB3523B860BA31385E6D13FB249 +82A8F708AC7E7D555EF420CED2D8DB13A0496426DF3157841D9CB57CA0874D6C +1664C8C8A9CC63CD76B945A2969EA0EA63C31EDAD9E7870E96E3E72336D46967 +E2EA0D0FA5AA4B8604D019149C8957096EEB1BEA900ECD03022DB5142AB0A1F2 +A0C71498AAECE590586CA1F863B9E9AB06D9E27AC5D1DA50CECFAC74079A60A4 +F6230379CBAB3461A106E033B6B59B40E8D65D99E65021394297EB3507ABE8EA +DEA26615E1210C21B30725C3640860849878C424D06E3DD1F22F0A674109204C +A95519D84EFC3F1B77BAE0B13BC5357B109628D853AA0833BF4B06CB19D1C124 +0FD5E1ED6C9E910C32611762700E6475AAB74B8E9FA547ACFB7E9B2B15F1D5A8 +9543DB47255A2C5443BCED6E28F46E079CF27120ABB9917BBDF765C662C25C0E +1C118C7B61DEF5D51FC56896A34EF0F1657A403654044F0315DFBD0783B71787 +2DB951A9A1A36F27A910774C31F7E1D0878CC6570470AF607FBB369CB6BF9F66 +15B04672B879998517BF99B9E4F0ADD769E5D41AB933E3E6DA8EC54BEA6E431B +7A5E2DBA54549224E46E3C5E5E9AFA5541E4775DD42FA9522E820F5D07539F1A +FCFEFF7376918A35C7EA8C1A0A48D9721A86BEDEF76AD6F32D5A3768FB6BFF5A +1E7BEC988F06F62E178393E8BB74CA37E8D89DC67C0F9842B0368AD7A499EE5D +B75C1A20FC3A555708DD7932F8863383E5851027BBE6D042F65CEFCD3023B738 +6FD34E7056F062F57B7A5DA64B28AC1842A8F42ADD4915D8D4407C4A868FD4E9 +256C6E8561AB69E56C391001D99B860BDFC3508BE480018EA7760738963A66B9 +B5D897A3C67A2462C67F883413E087786C64C752F930E609AA90D47A1310422E +1AED61C75904BBA4E3377958FC9412767223B29BC367F1C0A4313FC57A916CF9 +434B2384EB1ED34FF52F9C9E0D3FB5901AC4BB19D8066FEB0E9B16FA1385BD5F +1B653894A952257D37FF0E25A81CA7D01F5A103CB3F50F1D88919C419C91A650 +AEE18C8BC3BC1633C1EED8854448063316B83CB4058BBC339DF76BAFABEC1D78 +053982CA60D0A2B591F4139829FC1AE5BF699E0506DFFA5739E88BEB81076CBB +0D25D106A2E0B77B2219F8DFC93B00AB0E2AAA910AD5C7C4064B4DEC8B2A5378 +89B206A137DEB2509F6AF2C908FB12B5D161B63A9E42CDAF15BDA866D575DDA2 +FAA82DBADA1FCB2770B15579D50F03C3B45ABA5EA21743669C87A0D99DD594E1 +C3B520A779331BA4EA61ACF225D27F2C179B139811BF4EE0281A610B03592111 +5379F02C527E4625FC0A91AA222524C6AEBB402EDC33ED2C6C1BBD8827527917 +8552D080E2A715B0E16C82BD58EE66C622DE285C8B2BA420BC87B3E776FAA4A8 +E3A31BC6C19C309C72BFD7EDCFDF439B2B05CCA4C3C1E3AA750E86B604B81F22 +B414AAF0E1A95B47BFF24C4E93AF27FB1BE92AD979EC491ADAB58E002E8A1762 +5632601A8A2CD0CB820C71C9F09504A66E08D42F0A1D4CE48EDFDBEE06EA244A +AFDABAF7A8C06C8C61F288B8E820FB0228863CF12161FA0A770ED6D39E571D79 +E7ABE0D0583038C3346D7FF6A92E3A15F5BF0D75F30CE83E1D5AEC2C330B4F75 +B39E74BA104215F3C12D51650AAE159DE6E9FE620D86E9B05E900D14042BF7FF +0CE1300F22FE7136611595047CE8FAD26EDB09844D3209B64E00A86B9E3CDE75 +D72CD14E5821A476F51FF61C1BC23091605CDA81DF7AFD6C9BB23D75C86DEC3C +DAAB810C2E0DF5239BF33993123C80F7C2A81D666FC998798BDCD371CCFA568C +79AD7D9815E0BD34702EFF739EF974989569AFD6AC2191776FD806E84A974A00 +C1807FEF6F0AB2532B630445F8B4F7F4B975DB8D7E5D664C30D82236EEAF7236 +E220EFE0D60DB5E9D3E39B24A78AB2C62629C048F320F7045055F1636279052D +63383C0D35946F084C8D59321F918EBFA21910AB452424307E0C5685C0E79759 +DE2709F47847F981E61F7E086A867FE874762CEEA7BA9CABCEA4DF01C72D51B2 +795B17073F7556030AB9C797372FA41E76391B55ABCDA623F55A3E82E5AAA694 +7BFB2743C872FCBBB373AF6421C788FB9264AA9D82F4E5DA9C8513B9A0AE52DD +248ACD3FB6AE7A99FC866794AC1F3365E5792A46A5BFF3BC69D0EE356B34D0B3 +801CC3432BC8C99AC01A0005FB2EE6FC30FB29C0FF50BB1D23CF91DD906AC481 +E28B9EB73E963DEBCF119B1A1F627D6E78CB328EFAEDDC0D51EBE0C2888B369D +421BEBB6E7FCDCA196ACDC62087BBAFA394FEA400984FE53C5E61C03E3930585 +CF95DE2F4696D2F24B8A11518C65601D62FD795E1A67EB300EBE8891A877C3D7 +B0F0D6AC90858CB2DF7CBF17F5C7B10288D40B623A22FE5D9CB9EE4B758840DF +7BF9C8949FC4335BE0FE6D0F6493ABF0629D1882ED5CAD28D7AAAF5DB961F79B +776580EED2567976EFDE5F160A83B6BA54E9A92DCCF3F80A8F6E82B0C4BE159F +1FFE69903E315C601C5CDBF7CFFC95F27EA0792C87DC525532FF2370583B082B +75C735FEC6D53DF6A7895FFAC9A8E8D927EDB7278F17D62CB86F2BDA69DFEEDF +76DD11EE009AE4AEFE178AAC68F5FBA0B930BC84861CE5D9CCC2ADD97B114725 +E11C84F7F6E8117D338C6A5B59881ABB66ACCCDFF457EF70D7E213898246A0F8 +E534A05D9ADBD0ED6FF22ADFC529E2149B9A574F6D08DAFC69C29F305CF08B57 +79488F15A313A17F552E5E69ECA25F35C313BEC07F7852D31DE56BE21DFBBF93 +05092E87740A7F60F5C7EF6573B1ECA3D9137DF5EA301BAF0E630B0B6253D36B +7012C80E9E3C0FA10D0B9999D2330281D9057CFC928132D299BBE6A6DF9744D6 +9C71E4396905538AB55686AE4DBB1E3D7AAD020E7A6C7790294B0330B852B4F2 +2B1738CCB7933CB706D9172025B1E100423F773B45583683094D4E3A93B7892C +1BE21A3DFC7CFB35E19025DC0E0BFE1E8724866EEE2F9B557A3757C3CC58920E +82E0B514384EEC28B33B84D075F46EAAC0FDB0137341CD04A8B52471908AE151 +534D5FEACD9E7209572BF049A41F70D637D76DC345472CF61777CBA7787E9550 +82E4D4C71396FA6A537641AD4D2389EAF3F0F6CDBC26F6C64562846FC73B3324 +0A73FCE50DFCAF6C4F15600AEC20578682D9B00A2C6589C92DB0F1FBA5921B8A +62BAF30BE5AF104DF56B8A107A8AD29F105279381C986BFCAC77A376E7AB677F +94165CA9A108DF5CF4A938FED50331E9E39957A90D3BD69E1C978CE26B683CDA +EC7BE97BCB940256D1E23DF701BE018D951E64F7145DDCD6AE768A910C3E5A31 +1BA8D8C69352B12EEA916B4487EDE3762AFA2EF766F57F2358F3022B1BF94866 +2136D3385E054C5D5741E6D0A3A34950438EB4067CFBDD9856B588AD9FF43739 +AB26B223E36F4959258BC4C04B151259EF4854FCF903B9358699BA59C3457871 +CF222176E7778A3DBA7F996B3BC60101A63F9519ACEE1E468BB222EBA8BCC3FB +7DC371485B9A63F7B6FC2902B9AC5AC550A7A7EAFD6293CDD986B41131F4D582 +2FD6D5CC31DE06F192528B3EE7DE6EE6ED53B51E9DBB15BDF6B9EE5C277DF354 +FCA6BA5585C9C545650D7538342D32DACF923BACF30683B8CAF4C3BE2D9805BA +C811F8662ECFA7FBD623B9C73846D0307F36D19FF321D2DF159515D48A32BA14 +745AE580CE51356C6BFF5C183EFAB82F66B1E76D7A62E0F9FBFE98E3109EE9CD +C913937A28AA74915A858724AD3F58F0B9315291E8C70C28CD49AF3310EDDA89 +20A1718DFABF780E8557602DB8EA63FA566CAF1518C0261B218D2D9F5FC3C429 +0F59F715AFF98FF485CAB673A38A4E58B37645CC0FAD687060A72F4B6D6D9069 +A4C5D612B6AE00B6F9241A358FB12B1DA0CF354D6439F1D6EC4210D9AE49D496 +3540E8B10E468F53F770A7C333779043E79F8E8E49FE3B554A99A282BEAABE0F +3D35EBE6927D4BCF1DAE5ABF4CF9E44A55EA019EB1F8B3A21B85E8440728FDA6 +E785141F6A283FEA15CB2E04FC8987D0BE71AA3565519DAE4B20A20139899C76 +E19AB5711B78B077D12978922A292D4425136AF93799A598C242E24459A1A63D +F29CE90F42FB3D7454635950FCBFD60E695FB562A50E863DC8E42BD1129BA58B +63F5EAA7169F949A65DAEF9124BFFE4D5DF1F7711B9DCEE9DCE113EAB4060046 +CA992C26D7AED7CFC38089CAC56D5F9897EC3E628459A56788D6B03933BC5A46 +877014ED1D703AB7CEE1406128111A0F2A5474B5A03ABE84F8A8701FD2BBBC1A +2F096AC0AC54A0D23F8A1F44EE26D9FEB4799D814809FA0B508E468A40208640 +B2C47992C48D7EA1794DF5341F1F8AE0C8F5ACC6DFFB79EEDD6FD3B720900DBE +03AA6EEB9CDF7FAD505C70454BA0FB883E2415C26B284407AC7D4C602C8ADEB4 +BBB9AFBAA5B44457DCC42D0AEB2F948A60B4833F50BD77859C6F8B975CE5A164 +E375EB1D42FCD94DB862977C6E6A9718C83840EE024F069B5F1E2927A923950A +811661EEC30D6F3789DE80CA4729DE366CAF8B32164A530FC3B04AD9377E1EDC +8E550C3ECABA1556101AB8278FA596F460F632CCBAD91AAD3684B6973AF3B543 +D5AEE13391B8D65BBB189C0D5131960E2426D48C9E07EC15EA94362050C667FC +861ABFC947E52AB59BC1F958AE8963F5A945CDA944A2DB91AC2F9D1D1E63C48E +5FE7A555F73EC3ADFC1B786770E19FAA2364B8FFECC695478C95394775A5936E +6F84955BE446E9CA13674DE40BBAAD2039060EEAF750ABD433FC540D43FB5A57 +93886D68F7581E85A4761FDD281913462FB5E925F8D8ECAC334ABBE8756D8BC3 +5B5F8D8F8C0097F40056173D3AEC06AD95E9B1ED681A9A7F6E1BBDA383AD61ED +B35952CA895FF526029A799122AB79F06F6890FCE493CA7BFA6285F7851B1BAB +F419AC37A61EFBE823569245AB01DCC45821DD1B1ADDCD46E226A4B4502AC8B2 +62CCAFFEA61B73EB6ADB9E0C12CAAC426C9F1ED39E7226F3430A260FA7D82BC7 +620DC66D883D40753BCE01231AFD9DE187FCBDE96C278336A37813EEACFC530C +022F381794B5F27EC031FC1DCEA982D8412EE373E92B4190C97D3DA3F5DA339C +5016E4A0330A11423AC54D0DE81DA44D2058F65434A44F01023C3EA18373E083 +9BFA31AD78489B7E2495EAC1F51C743185D3E6F2A34C37B414A8F93F0C684E38 +0364C3E1C2E75007CC38A310DCAAF98A9C750C80B809668BEB0B6810362198FA +1C23C00AE41C417A58B41B301FE702313064066D86B9AEFE97DF38222D9D9FED +D6052953FC39219028ECC8FC90900EB593BC5EB16A0F8C8C26C710FE8F5A804D +AA354B808D2E303C24E83312E06E366C59141943FACBD6998095AF52A963E7A1 +FA942A4FDCF44F55522465B82A18A4DF9199D9F46B1C2E0D5397F0A7AB6A552E +AC512EEFD176FAAC23991F465B3463F4253AD4BEDDC933C420A4F1F02E9DD7FE +48F779E08AFED30209D7A9EC92CB249770B74D6F82601E4F4F10956115CD956C +3B1F420EF3A6C0198E82B2A7A84397D66B32BA0CDDCE057612AC14E3A0F9966B +F78DF3FC010B4B0ABCB9EF44046E7443C87A035E4FF44D086C618E7C7E3ADBE2 +404698B4041781DA590D73A58A49B43FCEC92B58D50410B32A75F3FA0F07FEEB +1BB4540B375082BA01A325F1AB3EB48758AD9968195575CCC2B294E10F8D84F5 +7F49C4B93E7E23965B6CEE228B17D1E569FC53F95A6CF24EBDEDDF61B263C632 +F02DE118F608AD734DE71E321844E30CA564C93008D1B39275C86E03452E87BD +2CF46FD9ED6D7CB14BAF17916972B08021F5CEB2E85EE91447E4416D379F53D2 +BCD4825B12FF3EDEF9F439F146195F44C20B05C0E79E2F3FADAE612CBBFFCBA5 +07610B525421DA25B5023E851755445BE59AAEBD9E31CEA5E4DAB941907E63F4 +5A855D9896C783C88ACC8AEC447A946371E7F5E77EBA05ACF43F9F702018C5E1 +9EE407FEACF7A8B252EC73B2ACD5105460D430DEE2C3B78C80D81844D804B98B +30A1BE22B7278FBF24FECF61BA13A4F35A14259BB04BF74D17A7E7B7FA28CC91 +2099DD510B0EBD7394B26ECB33430C94CC4B3EA14374B4B838AEBA14602C876C +BAF1CE4A9D6B214375AE9E5BBEA54F424C4151D3FF6D442FD287B217C2D53A7D +5DE74662007FC8B7F8760D774FF93506EF1C2FDDE46788BCA28B9DDBBEC0D8EA +20EBD944FC83F7ABD0EA77E65D2F1B736206CB5E1D27B1EE8AEB42141406E314 +C2DCA94941F67F5CC0D788F43A3ABFFE4EFC9A825A69955682D36FFA18C7B5A3 +B5D01EE4BB944E9E0F8CA438EAD2B679B02B621BDA36CBAAF6395F158B699130 +E5CFB2512D99A1E8DE1C9B1EE13AD831924410D38F1DE14AA1F7D317A8F2E3E0 +542F59CCE9DA35C4878768885FEF99F21F9E9DD0B99C10A99B5D728CE0A72269 +545AC304C7998EB92BD47C5386AC22D9CD51E6FF45000FBE1F2F09F90EB265A8 +8B2D70B1BC088816F600A29AFD4FCACF313369B08959A6ED478D5874ACAA1B68 +B03B03F4DD7E58E93D92AA0A0BC28A9E9C6762A539494A890C9783D36B86BCD9 +AD173CDE0758F5B20F8292E6A504EF03FDA016763798BFF14410EE4E592F74F9 +9A92C79539206E225CD94ED10689BA313C26455F144DC6CF4B1AC99FF1265672 +89FC495D0B8A49A60266C06C598B7B372CA3694D123F7B05ED102BCDC0A9796A +D77C4F1D3D20C0F8FDC33D6C6DA3252F1DE65D98501CAC77972C876D1F206339 +3A2931084DB63E40DEADC6E7B1C27DBF88F5BEF7847F72DDB2684FBC0EA0AEE1 +C056A081F0ED0221EF59B0E50DD9B3E10DDEBE07138424009E6AC35F702FD182 +2D1BF5BB42C63B7D68ED3F0234C5299B8ADEDED4E5A3034FBF77430CF4BE91C9 +19F8B1693B30997642103F1170B861EDB14C98A278EF133537A9D188D1282D7E +B21E424025D52A99BF82E818AB3774485E5CA20116033B6F76D225B6A0350EE9 +1A935126FBE34C4537BEFA6A05209E0B8EC443A306679A8C2A59135421B9FB51 +B5F9867A1EBA3E76EFA33FF01CC61782F00ACE57ABE68C5AFA48D7FCD737EDDD +84F9B347D390A5A7E1BC307679BB976680D65FF2CCFE31F94B4357757514EC17 +142C398FEACAD6C27F7E781651E5590242EED22529D4B32E159563231F3091F8 +EBB51035A54E09DBC6EDBEBEF8D5B486887C6D7A1B91FC3BE0253A0100688CFD +285EC3F16070CC2FEE2604E7CF4E962D60946B473BF174DBB3617512C38B9DD4 +31A7C153FCF68BD9E4520C5E3449E00EA0ED7A4AE8BCFEBE6DA65958730B298F +B50C0ACB145D69FCCB1A533548F122D5CCA2CF1AF421DE5885059FF65FC122A4 +74541E8CB59F977876DE92D679F58401F2083E961D448568EBCEDE7F07CDEDA6 +19904F826E696C34C6CAFC680303670F28FB26EC355087082F3DD7597E7126AA +68E1F3334F4CD9243AC9051FAD8C76DD61330D89A58DC1E94D738181135CA376 +00BB6658A2F38D4C385C2D0D39797D973A647D2BA79EDBF98EC34EBE0982779D +612146B6EB1DC13C4BDC92EBEFD46B20FE0D904211BEEDD16EFDBC9E878B1495 +2BF7F5D38679388AE320D5D4A64DA1B32197A28A6B929BABA470EBA78A91A05B +604B42C95D4BF56B8602C2C1E539E0C49AA936AD9F8C3692F150008D1006EE5A +EFDF6E4E08782D9A67D1F63067F269C29CF655887D56D4264FEF5A3167EEC777 +C1F722A92E5C5AEAA1A20E9D82E3C99CBB6F1B331A441C5F8825737950A32D13 +8F48B49A783D379C5BE3788106A47F1DF1B49C8526B85D82941F2064732C66FF +82561D06AD28654187A6F502AC3178C8014D1943E287A2EF30D1497989840832 +A089DC38F5C36361FB506B815224640CBB4CB38C5D56D6970447D13D1E8A7637 +AE112A86DA9B2B0726CFAE85B918BF848816BD7F5BD18E974B38C77734565AE3 +FD487B855D2D65136B39A73FA7B66B4DEB01EAADE01972F5D39FFCFC3765E4E9 +47C1F855F43F49E67D6D9577CE32212096AD99CC00F93C0893F027C5264C4783 +65F434BE3561981A6F71084F39228156080E61A5CF9F8AD165684778BE5D1214 +1D01BC7C7F598BC28C87E6DEF4565D8A63388F93D5529DFB7254409A74CA5C78 +EF4214775FC75D89CB86B88BC6030F718F50F7D66FA9F74AC255681B6ACFA49A +0074F80A00339A36503478382D32E699C448B9303DF152E77E7573B535FFB40A +AE424DAC6A9AE56B39CFFE0B0367B5F4F614563DE3B4CA30586318CA250322A6 +681B39CFD58D9E7958AE206C8F2DCE01D899C44CCFA1D198AA44501ACC6B8CFE +EC811899F75825B49F396EED17D95703CFE367B5BC06617C356E5619F9CD919B +654DFC2F2ABDDD6360150D8A976058EBE34D113E7475480681AB0A1FF0580BE1 +FC9F7BC36EA193D2164B2EB8D623AC874E83A3A28724FC8EC1B5A9E5ADCE8462 +D4AF1963BA1A9F28932C04FF17AB32747D2416C856F1581BC01794D15B0BB02F +8BF8CAAB12843316FFE1211F2F595EE6E3AA4488654A16340147ED0B203E3456 +5410A26D8C9F2115E4156BEDE05CA81819FEFAF953B5193A4C3136FB16885F33 +CEE94ED70DB203C109E7D414E9969702D73FBBB31B4D82E3AAC88EA8D6980725 +7B88186C5DEF881E4DC65D44990D5ECF5B8504A3CECF4206E28308AE776244EC +005297EF7326F01704BD18ABD49E04FD0D7E7E519B1F038DEDBB3185951D66D4 +4BE8D61B18621E12C6B02C411585F53FDD0F68EB0B5F6488A928B5B07EE8CA0A +94600DE7113D253CDE2C76B3918A56E922A9724E7872C7E290C60E0CF644E3C5 +24EB1E65114E465229057EE787E736A981E1918D8FE798631FD4FE51885A5B65 +C14DE540F379D3C3C0F09DFEF903BBDBF66C563B1C62A573EB0603EBDCFBE84B +03677AF26C01317E5200D904E305FF3136593C252F8E623B37652A0E484C539C +A9C812E95CFB0B9824F8EE9F97A4C0C2E935BE89DF8C762937D25A392E01178F +95F0D1A6AE42D57C9409A96281BC088472F8CEDED2DBA08DA84BF6179C7DACDD +45F7DFA8D152161310F5B198FE8D4D7009A18799C7757FB47F029BF5F01B913B +4C66EB2D59689D5CD72BC59E13C7210D57629DE10685B1FA508DC3ED49DEC9A9 +4ED1D318ACB60AA416F6729F0DE5C57A0EC29C4E130B0487DB674BCE6F811BCD +F07DCFF5EC6B2384636422616E6D657075F5E01F783FB4F3EDC22E9EF3DE5068 +5690EEC6F5278A7BA6E2DAEB8084095B465E2F66E5102435B8A904848B708C59 +4997C66384E433D8349BD5238FFC9D69022345B02BAE6A3DE412892DB69D7B89 +EEE9266625B8EEA74B72EA9287307F64D91556CC94AA1D6CAAFCC6D6156D4F1C +E3EA366B16666D20599886ABA8734B92776748E5EB53D5B30F6084F7AB201D5E +716201027D7C0ED2F4966C0ABE9BB774763C7C5045C1A3F72B11069E13117E11 +7CC6885E1E852ECAB4BEB313DAC59534055C45774180E763DCDDDE64DB3DDB11 +50BFBDFE2A4C1D595F0017AF147BB002506089FB5EBC57B74283D5F732770BFD +58B902E45847FA0022E7B6DB9FE55D07C7BF57A6864A7734844CC534ED9951A1 +22DA3927A2A8140922EE41524F0BCE548DADC047A0489DDBE9CC612336CF5CED +21130586C0F48CACD6B13F932F76668D4532D3127599AE7037EBA388BF0E4879 +6A1E4CBFAA0022EAC1D44615E450B6F99522F2589D3459AAC8DD9DB8B72BCEDB +25924053F6809B3D25DA50E29C60E76F1E7F5B5320DAAE8656E939C45D05D983 +BECEBF267FF41F617766E30226972BFAC06D4748DFFFAE2C2D5E0003D4B3F239 +3A7FFA021D9AC4A2B0B62221DE0FD9E3D0EF80A592A2CFDBF306C4946BCDB069 +89584B013936438C89A1B42F77EA19EEF541BF1B130CAFD5D9692E48B0498649 +B1B7D24F131238080A70CD38D4F83CA05611C4741AEDADA722DC233AC6374874 +82ACE403CEDAF685BBA04CD1441394577550715434D80BB574B091934AEB7FCF +34A38A7C99A8E40A1527C47684FBF8FE6A0F51D1B216DC0863C1C96432199161 +C40213C79B0AD5FAF233A64B2029406DFBC47C8C5255541B6B4F1AF04EEE2D7A +7B68C47BC7BE7BF018A2B89A392E617A066256F393FA05924C9145D014FD9152 +B986C9E79D60F451878709FF0F3540B7466DC199221386CE348B65C98AFA536A +33D0B685ADDEAC414A479B3EF27D5988B51FDED72480F6A1A43340DFBFA9DD75 +D55D383121F9E713D8CEAE6AB1B297A1EC2E1196DF48E6C3589E5D0558E9C6CD +17632CC09EAB03F728BC4C67F7E173D6E9DACD99BA670244FA34CE78BA7807DB +C4F4BF52526017748E10F1EB223A96C6D76D50F9513FC5807D76103BAA33C2CE +4F959E6DCE32DD8EFC78F4457A05DDD932D4ACD754959A236DB415821A93D7DF +DDD91AFD8BDC659B59EB5B84A49BF6535562013BA7112D078FF1B717760C31F1 +A7F75F7FE7831849BBDC507FE875369F49680F54737973B85AA5DE4789623172 +4F09FCE02078234F752BA08CC6520E6051C93DD85D1677B01201D20BFD57AF70 +A0CAD6791D6B466F815468C5EACE0F9B1A0BE397E9695081348F752DC3810683 +272C67809BC5D021A412A7D31E55B42B6CABD4DDA8D917D7418A38505C2C2F57 +C9B9155FEDFAA3017EE7D1C75577E347FBAA585B35C237099C14C9A7ACA5529C +85AEE0D6E20317A3E6673CDE5E7ED8B4B983DEFE2C73C31BBCDCCB101919A6DC +FECD12CC142523BAED6F78E28FAB02E804590664DBBD4AA4A6992F02C1E054A6 +0FA53DCEC02036554C89A8BA6BB1CD3121E5388A55600481CF8E0C0952F401D6 +C3EA92D314164FF8E335035081D3C5AB43EEA5462A96EFE50CE071E6C17D1CAF +E58E244998FD425014E0B0B54B49740E82E0221DE3D863DBABFEB39C3B1AF4EC +CBA498F2A4CFF965DF4DBC6383F212D5427813CE902BF8E30B0B85320FD502EB +1B0E606B6A5E263648CD77C9F77B731029DA91B5A8AA22F401D844112C004E24 +83F0AE30D89C5A78F76AF0772D00A1E0BEEEC3E3ED5DD84C90EDF242277963BB +341049337AC3F33CE02DE93E8F5FF463A788A14E02A522F039FD7D26B0BEFD97 +BE429A0F527D7182EE133C5291FF35C7F269E1EB73575EFF92D9328B39406063 +3A5C0F208ABDAF933DDD2F48A1E8571B418FB32AC6686B4DBB1FEB65D7858678 +296D85EF316648D079375800EC712627B34926CF41C542F491472F5798EA2AAF +B6A9F5E540202B5F136DCD474D6C662AE3C7F11CB7A40D926E3CCDE38A87ECE9 +657B806688FFCE2B10E27AE03F1E9DAD1207A2A85B3FB70C349E2627F7FE372C +F3174D8777E4985ABB10F116042460ACE945591284367CC3BB3D312CCB4999B6 +F1BF5FA095E705954523C573ED0F0F10887A149C68CD0A16417DC30561FB66D8 +42CC989C6F694ADBB064BB5E6E57CF11FDBE72381B2399EC7ADEF283A9B0D302 +A1D969F69612A6AB78C6EA08E27A527B11AD2121249F117C7A56843B1E17B0B1 +D1E0DA0DD6CCEA83C63D60F314FA826259C8C2167542D16FF3B46CE34669B38C +1F1EA068CFD585F1F90AFC2DA5A7C3ED9E08DE1F9926F5DC4E0FC422123185E7 +AB7F6B6C8E1F33CFB724E4B3401541CE133B9F22DDA38D4F23489987C8FED499 +D4456298A9865B4F0B47F21190977DE56A36DD665CFF0B117FC3B697036D25E0 +E2103B98BB3787CEF2908A2797691BC01FBAF3E48850C048A870A866314CCBF0 +F9C1FA776B54B67134242A353514B0726B1EBB53352EDB15886980C6690058C4 +30F9EAF88DA2F1A54408D3836EEA6C5F00B8A5D2AC0063C86F266A2571A7E2AE +7C866962C0D6E7636F440A3B72F5BF141D73180C1915B757941DCA5D5B7CBA22 +7E841314D6E7303EA9506BE3019D85633B4E87EFCF6D86C36FFD2CF9A0672D8A +9517FEF736A5093D81544D0C75AFE7894B7D9F65E035EAE63E6B9A205B37FAF7 +4E76CAEFB2CA314FC615563CF3F4D1CCA8154703BCABA0EA88F62229C9ACACDC +03A56F203E46B94E0A13397C98604821E01F883E2387CCE3FD1A76EA4148CA9E +68BD8B49D45C39AB0C620CA7D12A86892AC441692A166F51180202F4EC3854B8 +50FAD53B2CEFC495A0393D832FD8786DCD567772E50B23AFC76A54A611BF0708 +7ECFB7488510CFB2C175428F1DE21520C338B48A6F4AC9EA487D4DBC690116F8 +6F896BBC3E4120412AAC07BFAEB390811B0E628793F8DD8C4BEF8B088AF00799 +06A59A9B27A74880B78B8637E50653985212DD45FE677027DF5C40B37465AA83 +3476022E907300C2C72D3A485F5D38F1A7B21C8BE16748BD1702BC49AAEC6E07 +B1BC1727D1DB053625AB8B3945DFA40AFF97A2018DCB532E7E8671A722C20037 +C0C29D6E0E06DEF5E0AF6B987E9D36F97B9EC014A366124918507A2EACC31280 +04C7F840EBB21B0BB11F81987310906055CE5BCCDF7C32880F7E2A0B40660E16 +941DDBE36DE54CDE16DE96BDD88B14688C08AAE4938109B81E8794A83D3A2EB4 +4A0BD8903FA386CC83FF7FE031FCC6F3C99DBD3DD961C713E8B6A395B55E82A6 +4423927FEE493B050C22C86467E39C0E1B341A4BD614860B102CFA6379B767CD +355EBFA68A663B583F56187B048F80E29238B208F1F062EACE8A2D7DBC83CC80 +218FA484AC546146A6DA52E5C8432255E6F4CBC3DCA58EF0691805817042878E +F3B77426C0A61E3D07F123DDADEBC0F4D8798ACDCE3106B0E722238AE0B0ACDA +EFBE54FA5AAE849219E77FD7650105F954DAC187B128DC3DDDFAC7C3494A4644 +A647D090084D52FA14098E35ACA1BB77D98E658773AACB3D7FB0FA688384E32C +072833618C72F007500BEB9E3FB121E4AF6BAE5493E1F7C105252486AFDD8751 +DD35C516605C354980D1F01307597B7985146464554C49A87E5D6C1E6BEDC1EA +3F575A376B5BE7EB71548429B8AB2E6FD6A1D5D02B254DAEE84886EFE5EFBEC7 +7BD25B41952FAAE6D91BF1448CEDAD1C5336F06655A9EA3B23A094729DE9FFBC +51C659427D9AE9F3B5E6BFD4818475E1B32A9F9926AA17D9E4E6D9228C473641 +4B1EAE8C048EDCB5922928A9C8212A808E1D039B8AEB42A0A2CBDABF6383EC04 +011D88EE5ECE841B10ECBA60F37AA1EB1B375C5306D2CCE0BA2855A71955F05C +5CDF7515AF810EEFC1D9746E80DB8C6D1F1660CE961CAD132F9A194C5A5C331B +EE6569884A7DED0464C622EF317CB84590236ED09E4A2811494884EB156215B5 +9F71D6FA34C119186C6C8E7BAEB668201C6E0D5A7904E5C03AFBE8B05BACA12F +ABB1F44A6AD6056EF703AB3A493D96813F4A685ED14953A35F57102DABFCCA77 +0D8CEACDBCF4911AE0A6FB53BDD7463DC5E38A9BEC309A087F718947C99749A5 +E6EC7CEE1B0BF87A7293CD3C778A826BEBC455FCA9D89C56824DC3B5FA1D29BA +10FA582302106DB094EA752F77981A5F15849F57EBD2BC97D65610D2F9FF2467 +E24CF3B2C054C716F79C50C0C52F097ACD4E959C81A8E3D6DB21F728E19039F7 +5B567634A64F8D416E96E20BC194 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark{restore}if +%%EndFont +%%BeginFont: LucidaSans-Typewriter +%!PS-AdobeFont-1.1: LucidaSans-Typewriter 1.006 +%%CreationDate: 1993 Dec 07 10:43:50 +%%RevisionDate: 1998 Aug 11 09:45:12 +% Bigelow & Holmes Inc. Pat. Des. 289,422 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +11 dict begin +/FontInfo 9 dict dup begin +/version (1.006) readonly def +/Notice (Copyright (c) 1991 Bigelow & Holmes and Y&Y, Inc. http://www.YandY.com All Rights Reserved.) readonly def +/FullName (Lucida Sans Typewriter) readonly def +/FamilyName (LucidaSansTypewriter) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSans-Typewriter def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding StandardEncoding def +/FontBBox{-12 -205 618 928}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F093A8DD28A1105B8F1F45E83350E1A28A9FB +120979EB7214FB22705850743580927667FFE0A7F79B201CE22DE069A46E69CE +07EF71A03D0719532050C8E023D2D3B0BC64AB04C9048B447134BA084A29DE31 +AA6C3E58684B266860B1428F95F838E5E279C2EE9D6C8BD836B1554C2B17A1FB +3431BFCD994A9900889B090388203BB5EB869ECD8E5374B724D279E941796B51 +2B9A129F690746109B89666D1C4DC0594C07C7BA3A993BD85F63CDB6911C7173 +D4BC2B5372FE9DF6F902A1AF01F36C4E12A93A5E8E781BCEC47D70E12A13D9DD +E203E7344655838AB5D9E0332A2F41E29140361904C0103B5C1CC6CD9185F359 +9166A1D59404EE64C441F412802C79896447F0CAFCECBA339A7918DAF195EC11 +5ECA390C6E6BE029A13DCBB49148B21B6675BF9BBC168669BAA4EB9A6C0826DE +476186CEC9462EB3C1C34F4BD2C3DE28426FE84C3747D3894735856D585C7565 +3493F792593C9F2DF043842CA4B7334F101019DE241FFDAB47BB7AD92208F155 +9E173E7AB4B4B20A31FE1934CA70C680AED8E7621C8AE143CE86C70A831B6811 +D838290481144F47547D034A893A55A70ADD53FFB9184E32504C988DB7B866EF +D978A8BEF2D95B7284325DA96DC5EC4CDC72BE1FF19A64C20F06ADC0511C2DEE +D173897B9CC85E2797C5FAC9BABBEEBA98AD92AFB248FA68493462A254182C4D +74C6015B2E051A6C01EAA64D5BB8AFE4FBAEC50F70C945AAF733C7B0F7166237 +0BF63C246E94023837575D02BEC675BB4B5754D6A9D26140BA17197CD4A6FF4E +01A45898DD0F2BE9148FD403D181CF3B498F8F696E6146D2E5511ACA11F04D70 +E268F1D4B5DE04B45FD7B2D6290324B1C341427D0A4107DD587499B7A4B09E56 +92F323BC687A2F4EA3B19D7E909D7E57B80AD9F00D0CC3D3B7A1ECFC649A6142 +11EBEBA3D0A82B2003DA541162672A62617B5C7D69D73B3D107D4E9FF30796CA +DE8F0C39DF8F351E153B539BF8237387D56F9CAEC0D5C3C68A433198010C94B8 +8ABB8D8D08262725A0904BCB5EA7C17A39552A1F26283F54A8AA17D716B28286 +06C553F92C65BC84B42D8361F4F4AAC58F6CA8228F29E7E73BC9CA5E20B1B2C5 +ACB704C5AB8E84B4BB49A972F49D260EF7A5A6763155E7FF5DB75C1A20FC3A54 +B30B97E23CD3030B8255F7C59FCD30333A29536DCB1FFE24A9224B08CF14E591 +7061FEDF22A5CA189508F1C6E52F1D15141F83FFE6AAE18CC0C8944004642195 +78846685909845C2A0B9924D7BC3394593C5B714D11C02CC38D1DD42E3743CD9 +89FF2F781D1E47C6309659B02050118CBD931E99A7EA9CF38D4DC9CEF2618FDD +A774EBDBE7A95014ED450627C39C2D01215CEDDAE51158AF491169D7FDCAC504 +4E1EB97149F9616B2BE2C332D736A277AD129893E668AB6E56729EBD42E0590F +3089B1CCB31958BE05D50483317505A8B7891E5023062BFA55918CA493180E5D +EFCCF303FC7994638F0F14DB3C180F84CFCACA59F16FCEC9F8C1BEAA555F7D56 +544EEFEBF1D3F3CCDC189380F5A35DE65E45B0135F710FE5A044AB0E8D7E3E68 +73CD7F574245CB42154B3241037B8AA1DB2A52AB99BBA392E127C63CD8959D9A +65EF45AEE10546E33593CB959BFA693C5E3296F653357D5368782DA29016C87D +70824346621EF420E7F2982C73F8942122D709569A92AFFF54C0ACD377489056 +3561F6EB92307AC314EBA480C184AD8F07CD7C6689E3A8B78AF75972140DA275 +C25E80658F5864CFC3C4B17778DCFC0217DDB3A85A0A284B863AC79188F0E884 +2F590B0085CFCB984961F1CD5EDA44A2417FC94C3F69B34ECA68F8B27F929DA6 +23BD36780349A3383193FA419DB7587DB5F5922047941C76D585FD8A324639A4 +99E137A5A092F17D358DCB42CE0BE35F8144E2002A8954BD5B13DD4572D53EB1 +9881B664DE528A57110A96B88325D8B21EDD46E771AB9D6FAC3A27E55198D0EE +516FA4D2E555C2E1E24231224B4ACEA3B8CFC9140FFEBDE5DBF52B698D593F36 +4EF5244E5C2ECDB3C7CF828FE728E6F4C99DDCB5BA5FEEA87AAE2B9120E5AA44 +4F64A64A0E6703534E93E08D96B612BF0C2ABE3A90DDEC4DD57D22D23B16F7A8 +243FC9CB2229D5B0142C50820744E06EF35A656F243E44E6D85747365B2ACEC1 +7BC0FF1579B936B58E4DA0E7332E8D2A3403C9C0DBA6785D535BEF2E6F53BA13 +CADA440506513B9DB5F7344BB7D0DF0A1DE792CF53A1F7EA532AA8F26AB1F77B +FC0AE724678F69DF20A093BBBAD9C03510CF28BF2ACB640167F539509184350E +C343C85483662486008F30C8136AE86E9BC61E9C1FE4523E7319D0A1459D4AF4 +CA3E25ABEE3FF84898D2AD8C05632CB2DAB23060C8897B8EBAD04E05797C4119 +7F77ECC27DDFB51EC441AD9B81C081229AFD69BF599FC83F56F85621AC7DF5E2 +49AF73118C9823A693F5A90CE04C91F3F45E3A14562065620BE6E77AC7F78950 +20BC2F46A2412DF008F552DEE49A701AE8572A7DD638B5DC7DC5D627FF9D5CC2 +75A64EE8695B96B49130909A70334FBC6C9C897AC8CC1631E2E0F61902132F2D +ECE8905A29E776978DACE10B6AD982CA4C80F4DC6ED8AABB58003444F93682EE +2F1FE8AFE0670DF5E4BC47D6A687951B22215259897FA61021ED425F565D92C4 +F614377CF4D5037FA2283AAC577783EE72BCD98BCB05F01560F6DA2A6F087163 +C374A355BDA461F252CB9ED18195F08B051E9EF5AAA28F777E4B38F62EF56EEC +3EE18494D13A029420CB695539D43C062F396D9CBBD1AA80E2362280A0F91AEC +3A1E5D5E2FEF17B65265C9A76680CFA3A67D589C574FA31FD4122A54124C19BA +D8B0AE29EF4B873111C519537C11F8E32A0DE7F1B00C0C5434ABEADCF1323766 +9F1DADA849333F1DDAFCA7FAC202D9355F924C856231FE5DA6FC520202CF4D1D +F2047A7B2E9AB3BD3FCE1504892B17EF92053C4E7C1E1790D9FC2341291F1139 +A23D6AEEFF1023A3D84E29BFA4D11F5F79BB7E9BCCF3D1B9C0498C448C9D873C +45060B78BF529CB5F5F4324540C415147AF4EDC20504B77FCA9B275215D6B710 +5A14F6355EE890914DF8EAEFFD592BCAFE306B7401AA39AA61A760448D037AA5 +318C90F8EC19FD29C47B622E863C651A0054BDA26E4A14C0E6DE8DE3FBD5E295 +C59B4F4538075C8BB2347E6619D0FDB77CC23C3DA462621C2348A7C611D6F521 +07D132189931FB8BA438606FA02B732C1649706F5BDFED4AC10C607F4240135E +AAA9237C12F92559BA3F0D48F2EFEF55B620932D1B397A8F565D1F9145C81348 +7B06D15C33162AC05B9D7D2B7F5115538972801845639CD4B53953B33D1AC75B +15345DBE9977CD34F786C80D8826B7C68473EEFCC107238DE011B0A08BEB5CDC +F3472CD3619146BFE3029848E69DD2A3ABFEC7612E15059A6BD6808FDD27FE78 +706C3D705A8D5543DA4787059081A6A585A023EEA94A804E8BFB6DC285BFFC4A +759B6AADEC57A2E38D6A681D7DFEAE21ABAC15D147F15C61AD76623A26225973 +3B3344B3C18FE43DC600BD480CBA8CAF9126E3612B0389F3618CDC776C1A674F +AE69FF7C2EF73A5D6EA1F965E0928650FE30A83A15C00091182783623694A93F +392546669D87BFF1E19531A0A4DA1CE63A550BA4268110A665BA7B4091B85A2C +F846EE895ED1D2D40F6E0173A1F092DFC8DC7C0D7F506660715142C26D8D8BC8 +7CA02556A50D18B642A4419844D92E160D53481B097B43E196153EAED66E59E2 +575E6EA8817D4A3BEAB6276E21F36104C234C84ADD48BCAF0C16C583431535BC +379BF175AD135A368144BFFA48618A0B734DD5BCCAB37F9EF75CC006E0CFB735 +84EB71D0ECF2E74C10AD6C6980CDD73AFF6402879FA59D6444D7C57A5AF99BE4 +E19B0AC28C5518130C71CC70E85259C43AFE47F482E880F3D982D02298742764 +01CFA264455E90C789303DB5587BB836EF15909A1BDC9077F70F2BABD919636A +F8239D454135EFF2B9C4FE20F19AD1CDA32B4C4F709FDA6EB7885C9BFB606366 +6855A5C672AD6C37B3C03E932C5284A0E87C77EF00A6A494F034F6D97DC28D94 +F3F277A02BE0CC2C08EB092D1B42F3AD513A10F8DBA26EEA6E6060E80D52B199 +D3DAE4428BA8B60D429A8080 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LucidaBright-Demi +%!PS-AdobeFont-1.1: LucidaBright-Demi 1.010 +%%CreationDate: 1993 Aug 11 14:19:39 +%%RevisionDate: 1998 Aug 11 09:45:12 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% Bigelow & Holmes Inc. Pat. Des. 289,421 +11 dict begin +/FontInfo 9 dict dup begin +/version (1.010) readonly def +/Notice (Copyright (c) 1991, 1992 Bigelow & Holmes and Y&Y, Inc. http://www.YandY.com All Rights Reserved.) readonly def +/FullName (Lucida Bright Demibold) readonly def +/FamilyName (LucidaBright) readonly def +/Weight (DemiBold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaBright-Demi def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding StandardEncoding def +/FontBBox{-287 -205 1122 928}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F093A8DD28A1105B8F1F45E83350E1C85FB4B +8E0949C46537E67A9D92EE02E5724E15F8F3B3E93C8F35B871FFEA1B4DB0DB19 +B21866F8DFDF2DCFA70C3B351F8279D762826688E0BAA2A93A97B39FD3DC894E +BE465409060FB4A755BCB74CCF9250ED2CFC57DCF3888B1DF55F1E8FCB6AA441 +B3006FB7A4CE515E6EE633C9C492186870A0935E897EA3CB3F072F9B78FD4BF0 +A8D1466FA5EA1CB4D188F300EC0C49B3F67B0B7F39290107FE36BD36A6DC32B9 +E774FDD17523E7AEDA9B664CC8FFC808F3450F244B6D2ED304C838A9CD353F30 +11BB4F0EE55209B464ACBB3501EE7348661D12C5846573444207293BB2B16730 +719E5CAE448461186329331A717AF04574C8F1D8F3F26C2B575B6C182E390E00 +8817A70D21F5DA3ADB0EEAA86FD793068922723A28DC27060F79E34533749F85 +AB9F381CBB865FB8A641BBBD0924B947734C73FD7AC576C17638941885EE92BF +3C0D2B8F5374F36FA27FF568D6DF65D2DD3FC9D67268B6551AB2E4EA58BE1E93 +E6E016233E7D4E8D54A47418CF91DE34178FDC9666D9EFC7D0E1E7FBF2742CDD +ECBE888F47B4C192212D8E1E058A2DC36A19A900C20BCDC50E8712A8ED3E6D23 +CEC6F81C987F54CE4F7174F6C4D80055F87B980427CA2095E2D236055D8D4F24 +A5AF8C162D8C5D0918889614FEB7A2D51EE4BDB9E6E9840FE2D8A1F8B975B64B +76766095B00B3BBB75DBEE08A7E5877208A658006E6AD382239E2AAB88824048 +5B0A6E4018FB03C530C2DB257C42BDF8F4324B6D4F8117D51896E73ADCF88131 +996F6B19CB8FEFCBC7FC09F9FDB1F478E3990DF27DDD98272660643BA5293F09 +EA311F49295304D67B63178154B496940A35962879E04DC0D6283698A574592C +951B42EA7469609F072D384661B2F06F856541DAF493CECD10A54A3281F18C95 +43719F90217B8FADECBD0A0255ABDEB555EE5EA7AD4D7782A8387E49B8F4641A +F333A71119C04E7C670E03482CC063B75149A74D1489DFD974588112D4CB6303 +89A4F601F288DC3A55C75248E4DB744F6E0C54E83C14066C3443BB3AD6DC4CF0 +05D393672AF65F0D015C86E975DA613B1A7BF337DA8B9939021638949FB0039D +A5F622FC4100B2ED4E790A79B996D7C775A472FC1F39ABD4BDEA1D5AD143A5E8 +6CB8B7FFA77448B48C85E46121067F55360E3E2A83100A7477F0591A23CFC73E +FC3F8B29E27BED418F2926E3496E3DD9C4C65867FE27A3706B63E838D767065B +E62A4C6637A0FCB6836AAAC07E50D024D45A9A51D740B3A96E7AB386AB4E1154 +350DFD382B371DA1EBCC42F52683F8F49270A5065C793517EE94E6FDB094D882 +E2C716E592FB4DAB538C280A8164E79E8841E7080BFEE466A1D97C63750404EC +5E3A3F07070905E0622558353F91315BFDCEEA44345BB1F938A561CDF4FDB94A +ECC50946E35C24843A7B62D21FC003739276995E30218C8E845A418D697A3875 +96180740D0CEB6C5B14CFFDBC5AE92C777114569740FBB5BED1DE0646F56F9C7 +FD6AABBE605A4785AEDB5A295F77C7F3597665D53F539E269F431CBC87F668E9 +9B42621C2C212F7FBC125CD7E22B34A5E2E9064C6443F42ABD28940932FEFDDD +1A0EB7BB9A900DEBB6211CE3C17EE39CBDF02CC4DB937D6D65EDCEC72E05BE70 +6BE6BBF540B73C9268FBB2ECDC51608951A6720E2C11C10F3C61A201262D85E0 +479B51BAE5B57A30844CDFEA6506CD5686D98B39AB7430B63CF0AA378B53F687 +F703558DAE23665B1FD2DADF6013E01082F9D8123A4AC2F36BE4210E0AB3B21F +2EAA800EBFA9C86AD6D937F0C76DA62C7C44A8456C90D18E5663632646CC97FD +BFBB1AC537877E4FB07EEE6EEF5803B850BE68193F5E23E31CACB91A692CCB05 +2937052B6DAB8C02FBBFAE92983B396478CDA35BC3F1E4B5686D6A10AC0E8CF0 +DEA7DA19881B7402A86FC94651A5F857CA4C4A88CC3673E1CBDA35F3E0A293F6 +B321287A6CE2DB2F6ECBA45FABD9550C187F17A987C761F8B61F42CFA8CB1A4F +90D21ED4DC9E5CC0512C9C3F7AE1A3858110044549CF53648510388D1BE1DE71 +BB00FD82A0B7EA1F6B653685213207D10B85D19D578718D637AD0BA43F25AA0D +EB5235E70EF63788154D9A74857C7730449E1984B04EDAE8B1EE0DE1E4EF7BE1 +3D95DD16C898748C1D026197BF5DE48A607A46D2B8EC4CE738C2135F89745E15 +A6815F9DCCBB0341A60D255609C293876FC0CF3CAF1CD0400E4AE09D44DD72DA +7D50680F1D903957F2FDF4A84F96CD019F9C02775BE06FE300093652D986941C +7B1B9FC7BED14BB903EC66BE875F2FED6D8C0C6CA0657270010ED6BE2A5A1B55 +19E85D2EE252D3F04655CBFDA4566BC870528C4FD8940971FEA8DF73B718FB94 +45722C3B50DCB437DF6E518BF765B66B1E674E79A8D053D902A94AD5A3EE7570 +03F14EFEEDC96845A7D73A8C48CCA72DFF86EEEAB106ACAB24B88CAB8036938B +55DA649EC8E5B332A532423F9E1F4E57C6F2EAE2E28DA245CF5A9E7909D36114 +DD6004726643092F42A67EE784C1AC964AC3DBA158DBF8F477F6E757E1AF2574 +1872DC4238FA1C1B8059EB4B11BB65CEA4CBF519CD4D1EA7DD7F08DEC1B25535 +99AB9825918728B868B3AA59D66F52396DC8366EF0658444A03E10EDAABDE7CA +00B18B226FB7B22C78454297C7BB3F5BCBF2412175AA1C4FDF7E79C70FB1214D +6A9C084BAE2DFA603DE0BEC4EA38F08B3A9CBD30E81B98B528A087DFA19EF923 +237465D8696CF8F5BAF6DA8989774ACFD442A06B9BFFA4D0C10F163838C2BF01 +30E8EA2AB8F95AB54E2C062C7546A3227931C1FE2C22D41AE7EF9365E29ECCAC +34C2711A70D9C4921940795D7BC356146971EB2CCB636B4D512028B138AC87CA +21015749FEE7BCBAE79E96A3B25B6EA6B32AA0CB3C522EAFDCB5EC4D3518092C +3329DDA6019F58908E9C3813BE1EFEDD7A9E9862D01F7BB852E308B42F72B5A2 +CD4DF2A05ABF7CDE6977DB56950FAB75D47F9EDFD5644F56D09DDA5F61F93969 +978E007A8FC7FED44A4E85D27691E651E981FE647D03707515460A6A9760A39E +4D26EC05ED435B5742B9BBE1B00B630C49BE768178462BA6C8E1E0030D9B08E4 +D94ED908816740A02EEB4F43290E43D895488B80D5D4B0EC2502DF618406C788 +D458FD6E3BB082203B6250D255E3550CAB2937EB8912FA88CB9B7EEEEED5AD05 +206BD9533D607EFD797CC41B64C6E2273CBBEBBF8FA50F2523F5AD2499F49174 +1C203BD16325744724512D4F2BC2618DD3F109D9C52AAEDA5EE9E4AB406DC1F2 +015A90C5DC9DF127E900F604D5A22DDD6FED2ECC93CE5396EDB54D49987E6094 +24E48CC4691B4B422C873ABC84A4F5900D98811EF530D3A23F8E8F30E0BD5A1E +2C6F3EC2243BFECF17867643B0227A66C525C0A3842B6FB5466B158636F5AF7C +0340EAC929330C4C37C4E6A8B1A2C66CA1D91578D4FEB5DFCD1564E483B4CB34 +D8EE38B95D2F4FB183433141A02993E1E795C5EC45DC68CEC9DC4133FBBBEC2F +D3E050C82C60D87E85B67B8E8F59A14395AA88975D64961D40E9BA2EF074FB60 +3D188643B8CEBDDF4C3B30D674A1AEB6C8C3E0B256135CC77B3A4CDC0A1E9F19 +1300C3FFB4672D49F46405FA7B1743A48B6B055CBEA3ACFE3470FAF423F7F609 +CBD6B8D13C6575DFA932C6C2E33A3CA1E6F468A97B008AAFBFBE7F59D33746FF +FC8B7A641617CAEF381F98A64077C74D0A750615E657159D60D27EFDD672359F +ACAF24C997895E85DA91A46E2C2A93FC5BE6587C65454BC3200CFE3BFE4E6703 +D8885066337A1C325FFFE0DFA71606F619099305ABDA093EBB1FEDB040C5A57F +55DC3762A4FA0718BBE91EC9B75AF8CF4DA692A2F3C608DE81EA453AEC156768 +A95035AA131552247AD8D85DBA90F7CAE0476D1BBDD76CEB8D1EF7402976457B +0816F9F4E2955E9254DF57372F057ECD00EE79B05F8EAE210F0E3319A0EBF1CD +7B6CDE6FFDE272592990EC2CEC4A54F18CFB2DE2E347BB274369FB86A36F4E47 +0082DEA5D88D4F05D023081F678CFE58E7D9AFF5343BF2A456C42FD15EF7899F +1B2DE6186C5F08DAF34F5EAE33FD7097CED52050007FFB75CC78DFD646A8DAD3 +508F9BF37A8BDF68425A881A239D203CCC7640C505C32438B21BFECABC304B25 +BE59939BEB9CC5A8F3F8AA5A18B2A8C1E8EF9FCBAFF5CF80B7458E4EC14E9C6E +78C9EBE8FEA91B5C95AE0EC12A0F552C48C519B5BE339877DCF7697BCFB86ED5 +76C66E6A6DD54F4C7DAA5834443D63B2F1DB15F6EE40544BB4A0187EA177F934 +F930B7239828D849D12B8C973435C3DDAA8FCB41B1F9EADC6BC71F9E8C6648B8 +59D6D91E295A36E58D2E17C703B754699983F371F605BFC462EFD8A7079538A5 +63A00B1E3DEE28B7287861800F9CECEFC39919927337E9ECACA8D7D9829B2591 +D8B6754F7A02C6715587CEC78FD539ACB8A9EB92DF6B4F55321F31A914B8808E +6DC0C43C7C18CA5AEA0E71142522022F51862EDA124274B375B4631F8E32D8E4 +FD799590D4ED552209C80F5C59EB3F9EDD58EA2C18CDB0A90323013932ABAA9A +D8C95D1DCDC6704F26D995F20B2F2CB111E2023A4F5522CFE857699A4123733E +B3BFE28D3324575C95E27F4B0484A504C16EFA8357EB6C414CE5875128361B40 +0C0F175A2D16AE1FF8DFC7FD672CC0E8B07D5327A084F9BC0CABE0598A9C3DD7 +1A23F408D23839C9B46B3217BE6F20452106B9BFB35DB0DB657D0C0F463C0DD7 +8D62E30396D1CBF5149219C4058E0DD6F6E1CDCE7D8742502490DC51084B4610 +D578B52B7B382FE9052A9F0555C9EB64ADF49118B7CF472FE10D04343E0C4853 +E720286B6F14AF5BE28FD1672FF0D4D8F7267DF57DC25AFAEA9603BFB4A339F8 +A6194C93F304A4F9876741D0406E95B7FD97DD5F0AC41AE3629E73376D2F261E +1B954283552E4BE25A727B74C96DB2C59145192010D323B1F56E4DF96E778914 +C8C4B20D9A15DB9B6E55D41463CD63689382AD45D837013501D46BA94B3F63FD +0DEE315187EEAFBF661F20F5A2442ABA5CBF6935D8640B9BF636AA116AAAF266 +34BA0762789E2317B7D5CDCF42F9B15878414EC5EF166A28EF47556ABED44624 +79C435F19F515251ED6F25CFF52848ACD7A2AC757440BAE2B2115ADC297679EB +67EF99585457C8078A708ED35AEB86C15730BF3A7AAA4229AD4EE31DB46E232C +239405078097D02AB9A1FB97EE6D6F2500498B9CCD8A87DD759A6E34281ECDAF +03734790C3F6323EA7E3AB0A4695249E89B7DB7E3A6BD87914A5341B2172C116 +3F97187141F671DE835DE1378576DE25A0424EEAEAB30528C4352DF96840E3EF +8D111B7C1355CA7C01BC6E96FC7781DDA4FA11D2246EE4505C8EE0D8AC6BE84D +D8AEEA27B133227E9BCE7CBD112C8592B57BB913EF8FCD54366DD5CCC3019E46 +3CD6ACA285B846A46DF25C7DB1284A344130194379F4337A437F91569758E0D7 +5F79D6153ACB451C8DAFEAA357B8AF8F1722CBC5DCCBECEC5B1CF3CC81D6F153 +DBA3B35D5A55E149C1F9048C0BEE5853B5FDF77CF3041D26706A750A2B5150B3 +72728B82EB0AA9DC21A4265EFB0164794AA7B4DDEFC9441D57E9231CC57F0654 +A83F5F8969F1949ADAAE297140C3E59D0E975E6DB23560E9B9B5671FD8666C4B +878D898D38E34BECFC49C52E85A66D0F6197FF037B9F8420165210CE849337FB +AD86B5C4E461E54E2F46625B99B942269FB8152FC5B83E606E150102EDCD1264 +6DE7D701997C93BC5DD8CB90D6D2CB99013894AF6730184B7FD52274D77CE6FD +27F168A18C760721D551AD127BA78F97EBA581E132537C660630BA9A5E88BC8F +3A09C83DB706A9C6991B1BDF819934B221375B29460C5C9B1E8D26F7B4DAD37A +B4145854461DBF7F1B33E22C24DE1810BB9421049C54FEBE01002DB9ECAB218A +46AE61F223ADA791441580F70A7ACC31B3D4BB832F703F70F37AE1DE21FCAA0E +559D346B48BD079EE0444039269A8B0EF29F611B66866465D98E7868E218BADA +39FB04FFDC5378514A552D2ED6806D9C0CEEC67D9EC3A5B288575522B5B8DED1 +52BCBA9C275F5DC2956325BC0BAEC3D55EFB11B4F6F23184C9073A3D424B4798 +CC3D7EA0D06E14E4E02E59C176A53EC7E8AA66A78B3E723673F6188806D65A31 +CF67C6A5630267A7476A6154FF59666072150C2E7CE801590E697FB3F683805F +BEF78422057AC1C94F05AA5BECB9AF69B9C1B9757BD631983747B985AD3D4A39 +753505BAD1C6721584BA0D2F6F0F04672A9BBFBA5C7EF4DB44267D7BA0EC0871 +80B72061CEF1D21F3B1986D3C5706158C11E0CC785B7383D902896B2F3A2FCDA +A2017A2323F2BFB06C80035743E4FE19A4B070B9D3894F432425D1EFE33E6112 +B9B7E66E16971E73EA04A387885B602CC8FFD866DB3CC1E5492F176EA0D2E90E +011AE6438C4B5A540D6CC434D550CDA2641B9F5C850C08FD9FAC9CF43BAED59E +6DC927C793826DEF390F626E5FD6C154359A41FF90E4ACFC +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +TeXDict begin 40258437 52099154 1000 600 600 (wieesgeht.dvi) +@start /Fa 135[38 3[27 1[30 2[41 43 64 21 41 1[21 43 +39 1[36 44 1[42 37 16[39 6[22 6[41 21[18 2[21 21 40[{}21 +67.9953 /LucidaBrightCE rf /Fb 139[45 45 45 1[45 45 5[45 +45 45 3[45 12[45 2[45 2[45 6[45 2[45 1[45 68[{ +TeXBase1Encoding ReEncodeFont}15 74.7193 /LucidaSans-Typewriter +rf /Fc 27[41 105[45 41 3[47 29 38 33 1[48 45 47 71 23 +45 1[23 47 43 30 40 48 1[46 41 6[47 1[49 1[52 1[50 40 +2[43 2[64 1[53 1[24 58 1[41 42 57 52 46 56 13[45 1[45 +2[20 24 20 2[24 24 40[{}44 74.7193 /LucidaBrightCE rf +/Fd 141[41 1[57 54 1[85 28 2[28 2[36 49 57 11[62 3[63 +14[53 1[62 21[25 45[{TeXBase1Encoding ReEncodeFont}14 +87.6717 /LucidaBright-Demi rf /Fe 190[43 65[{ +TeXBase1Encoding ReEncodeFont}1 54.6286 /LucidaBright-Demi +rf /Ff 135[45 2[49 29 7[24 6[42 12[52 3[53 2[61 4[44 +6[45 69[{TeXBase1Encoding ReEncodeFont}10 74.7193 /LucidaBright-Demi +rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin + end +%%EndSetup +TeXDict begin 1 0 bop 0 0 0 1 TeXcolorcmyk Black 0 0 0 1 +TeXcolorcmyk 1677 577 a + tx@Dict begin tx@NodeDict begin {10.79294 6.21198 91.44824 45.72412 +2.29048 } false /N@A 16 {InitRnode } NewNode end end + 1677 577 a 32 w @beginspecial +@setspecial + tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.4 +true 3.8 neg 6.21198 neg 87.64824 10.79294 .5 Frame gsave 3.0 -45. +PtoC Shadow 0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore +gsave 0 0.1656 0.584 0.116 setcmykcolor gsave fill grestore stroke +grestore gsave 0 0.1656 0.584 0.116 setcmykcolor 1. .setopacityalpha + fill grestore gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha + 0 setlinecap stroke grestore end + +@endspecial 74 w Ff(L)1800 564 y Fe(A)1832 +577 y Ff(T)1873 597 y(E)1909 577 y(X)23 b(Quelltext)1594 +935 y + tx@Dict begin tx@NodeDict begin {13.80516 8.4301 111.32481 55.6624 +2.68753 } false /N@B 16 {InitRnode } NewNode end end + 1594 935 a 47 w @beginspecial @setspecial + tx@Dict begin STP newpath 2.6 SLW TeXDict begin XC@black end 0. +true 5.6 neg 8.4301 neg 105.72481 13.80516 .5 Frame gsave 3.0 -45. +PtoC Shadow 0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore +gsave 0 0 0.3 0 setcmykcolor gsave fill grestore stroke grestore gsave +0 0 0.3 0 setcmykcolor 1. .setopacityalpha fill grestore gsave +2.6 SLW TeXDict begin XC@black end 1. .setopacityalpha 0 setlinecap +stroke grestore gsave 1.0 SLW TeXDict begin XC@white end stroke grestore + end + +@endspecial +45 w Fd(pdfT)1884 958 y(E)1927 935 y(X-Compiler)875 2684 +y + tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end + /ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 +1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW +def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@A /N@B InitNC { NCLine + } if end gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha + 0 setlinecap stroke grestore grestore end + 875 2684 a 2794 700 a + tx@Dict begin tx@NodeDict begin {18.61697 12.98303 78.42354 39.21176 +2.81697 } false /N@C 16 {InitRnode } NewNode end end + 2794 700 a 32 w @beginspecial +@setspecial + tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.4 +true 3.8 neg 12.98303 neg 74.62354 18.61697 .5 Frame gsave 3.0 -45. +PtoC Shadow 0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore +gsave 0 0.0621 0.219 0.0435 setcmykcolor gsave fill grestore stroke +grestore gsave 0 0.0621 0.219 0.0435 setcmykcolor 1. .setopacityalpha + fill grestore gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha + 0 setlinecap stroke grestore end + +@endspecial 2875 646 a Fc(Klassendatei)2875 +746 y(Zusatzpakete)875 2684 y + tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end + /ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 +1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW +def tx@NodeDict begin 0.0 -5.0 neg 0.0 0.0 0 0 /N@C /N@B InitNC { tx@Dict +begin /Lineto /lineto load def false 0 setlinejoin pop end /AngleA +-90. def /AngleB 0. def /ArmA 10.0 def /ArmB 10.0 def /ArmTypeA 0 def +/ArmTypeB 0 def NCAngle } if end gsave 0.8 SLW TeXDict begin XC@black +end 1. .setopacityalpha 0 setlinecap stroke grestore grestore +end + 875 2684 a 567 700 a + tx@Dict begin tx@NodeDict begin {18.61697 12.98303 102.87631 51.43816 +2.81697 } false /N@D 16 {InitRnode } NewNode end end + 567 +700 a 31 w @beginspecial @setspecial + tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.4 +true 3.8 neg 12.98303 neg 99.07631 18.61697 .5 Frame gsave 3.0 -45. +PtoC Shadow 0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore +gsave 0 0.0621 0.219 0.0435 setcmykcolor gsave fill grestore stroke +grestore gsave 0 0.0621 0.219 0.0435 setcmykcolor 1. .setopacityalpha + fill grestore gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha + 0 setlinecap stroke grestore end + +@endspecial 648 +646 a Fc(bin\344re)e(Formatdatei)648 746 y(Fonts)i(\(Metriken\))875 +2684 y + tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end + /ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 +1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW +def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@D /N@B InitNC { tx@Dict +begin /Lineto /lineto load def false 0 setlinejoin pop end /AngleA +-90. def /AngleB 180. def /ArmA 10.0 def /ArmB 10.0 def /ArmTypeA 0 +def /ArmTypeB 0 def NCAngle } if end gsave 0.8 SLW TeXDict begin +XC@black end 1. .setopacityalpha 0 setlinecap stroke grestore +grestore end + 875 2684 a 1480 1283 a + tx@Dict begin tx@NodeDict begin {15.8 11.8 53.63864 26.81932 2.0 } +false /N@E 16 {InitRnode } NewNode end end + 1480 1283 a 31 w @beginspecial +@setspecial + tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.4 +true 3.8 neg 11.8 neg 49.83864 15.8 .5 Frame gsave 3.0 -45. PtoC Shadow +0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore gsave 0 +0 0.3 0 setcmykcolor gsave fill grestore stroke grestore gsave 0 0 +0.3 0 setcmykcolor 1. .setopacityalpha fill grestore gsave 0.8 +SLW TeXDict begin XC@black end 1. .setopacityalpha 0 setlinecap +stroke grestore end + +@endspecial 17 w Fb(DVI)p Fc(-Datei)875 +2684 y + tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end + /ArrowA { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. 1. .setopacityalpha + Arrow EndArrow moveto } def /ArrowB { } def /NCLW CLW def tx@NodeDict +begin 0.0 42.8 neg 0.0 0.0 0 0 /N@E /N@B InitNC { tx@Dict begin /Lineto +/lineto load def false 0 setlinejoin pop end /AngleA 90. def /AngleB +-90. def /ArmA 10.0 def /ArmB 10.0 def /ArmTypeA 0 def /ArmTypeB 0 +def NCAngle } if end gsave 0.8 SLW TeXDict begin XC@black end 1. +.setopacityalpha 0 setlinecap stroke grestore grestore end + 875 2684 a 2320 1283 a + tx@Dict begin tx@NodeDict begin {15.8 11.8 64.47456 32.23727 2.0 } +false /N@F 16 {InitRnode } NewNode end end + 2320 1283 a 32 w @beginspecial +@setspecial + tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.4 +true 3.8 neg 11.8 neg 60.67456 15.8 .5 Frame gsave 3.0 -45. PtoC Shadow +0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore gsave 0 +0 0.3 0 setcmykcolor gsave fill grestore stroke grestore gsave 0 0 +0.3 0 setcmykcolor 1. .setopacityalpha fill grestore gsave 0.8 +SLW TeXDict begin XC@black end 1. .setopacityalpha 0 setlinecap +stroke grestore end + +@endspecial 17 w Fc(Hilfsdateien)875 2684 +y @beginspecial @setspecial + tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end /ArrowA +{ moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 +2. 1. .setopacityalpha Arrow EndArrow } def [ 184.94283 184.08928 +184.94283 202.01465 /Lineto /lineto load def false 0 setlinejoin +Line gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha + 0 setlinecap stroke grestore end + +@endspecial 875 2684 a + tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end + /ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 +1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW +def tx@NodeDict begin -20.0 5.0 neg 0.0 0.0 0 0 /N@F /N@B InitNC { +tx@Dict begin /Lineto /lineto load def false 0 setlinejoin pop end +/AngleA 90. def /AngleB 0. def /ArmA 10.0 def /ArmB 10.0 def /ArmTypeA +0 def /ArmTypeB 0 def NCAngle } if end gsave 0.8 SLW TeXDict begin +XC@black end 1. .setopacityalpha 0 setlinecap stroke grestore +grestore end + 875 +2684 a 2951 1286 a + tx@Dict begin tx@NodeDict begin {16.36348 11.8 97.46252 48.73126 2.28174 +} false /N@G 16 {InitRnode } NewNode end end + 2951 1286 a 32 w @beginspecial @setspecial + tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0. +true 3.8 neg 11.8 neg 93.66252 16.36348 .5 Frame gsave 3.0 -45. PtoC +Shadow 0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore +gsave 0 0.1242 0.438 0.087 setcmykcolor gsave fill grestore stroke +grestore gsave 0 0.1242 0.438 0.087 setcmykcolor 1. .setopacityalpha + fill grestore gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha + 0 setlinecap stroke grestore end + + +@endspecial 3033 1245 a Fa(externe)d(Programme)3033 +1320 y(\(Index,Bibliothek\))875 2684 y + tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end + /ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 +1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW +def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@F /N@G InitNC { tx@Dict +begin /Lineto /lineto load def false 0 setlinejoin pop end /AngleA +-90. def /AngleB 0. def /ArmA 12.80363 def /ArmB 10.0 def /ArmTypeA +0 def /ArmTypeB 0 def /AngleB -90. def NCBar } if end gsave 0.8 SLW +TeXDict begin XC@black end 1. .setopacityalpha 0 setlinecap stroke + grestore grestore end + 875 2684 a 875 +2684 a + tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end + /ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 +1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW +def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@G /N@B InitNC { tx@Dict +begin /Lineto /lineto load def false 0 setlinejoin pop end /AngleA +90. def /AngleB 0. def /ArmA 10.0 def /ArmB 10.0 def /ArmTypeA 0 def +/ArmTypeB 0 def NCAngle } if end gsave 0.8 SLW TeXDict begin XC@black +end 1. .setopacityalpha 0 setlinecap stroke grestore grestore +end + 875 2684 a 1460 1643 a + tx@Dict begin tx@NodeDict begin {10.84695 5.62248 58.46756 29.23378 +2.61223 } false /N@H 16 {InitRnode } NewNode end end + 1460 1643 a 31 w @beginspecial +@setspecial + tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0. +true 3.8 neg 5.62248 neg 54.66756 10.84695 .5 Frame gsave 3.0 -45. +PtoC Shadow 0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore +gsave 0 0.1656 0.584 0.116 setcmykcolor gsave fill grestore stroke +grestore gsave 0 0.1656 0.584 0.116 setcmykcolor 1. .setopacityalpha + fill grestore gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha + 0 setlinecap stroke grestore end + +@endspecial Fb(DVI)p Fc(-Treiber)875 2684 +y + tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end + /ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 +1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW +def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@E /N@H InitNC { NCLine + } if end gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha + 0 setlinecap stroke grestore grestore end + 875 2684 a 532 1704 a + tx@Dict begin tx@NodeDict begin {18.61697 12.98303 82.72548 41.36273 +2.81697 } false /N@I 16 {InitRnode } NewNode end end + 532 1704 a 32 w @beginspecial +@setspecial + tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.4 +true 3.8 neg 12.98303 neg 78.92548 18.61697 .5 Frame gsave 3.0 -45. +PtoC Shadow 0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore +gsave 0 0.0621 0.219 0.0435 setcmykcolor gsave fill grestore stroke +grestore gsave 0 0.0621 0.219 0.0435 setcmykcolor 1. .setopacityalpha + fill grestore gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha + 0 setlinecap stroke grestore end + +@endspecial 613 1650 a Fc(Fonts)j(\(Type1,)613 +1750 y(Type3,Bitmap\))875 2684 y + tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end + /ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 +1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW +def tx@NodeDict begin 2.56073 0.0 neg 0.0 0.0 0 0 /N@I /N@H InitNC +{ NCLine } if end gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha + 0 setlinecap stroke grestore grestore end + 875 2684 a @beginspecial +@setspecial + tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end /ArrowA +{ moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 +2. 1. .setopacityalpha Arrow EndArrow } def [ 156.49008 113.81097 +38.41138 113.81097 /Lineto /lineto load def false 0 setlinejoin +Line gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha + 0 setlinecap stroke grestore end + +@endspecial 1502 2701 a + tx@Dict begin tx@NodeDict begin {15.8 11.8 48.22069 24.11034 2.0 } +false /N@J 16 {InitRnode } NewNode end end + 1502 2701 a 32 w +@beginspecial @setspecial + tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.4 +true 3.8 neg 11.8 neg 44.42068 15.8 .5 Frame gsave 3.0 -45. PtoC Shadow +0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore gsave 0 +0 0.3 0 setcmykcolor gsave fill grestore stroke grestore gsave 0 0 +0.3 0 setcmykcolor 1. .setopacityalpha fill grestore gsave 0.8 +SLW TeXDict begin XC@black end 1. .setopacityalpha 0 setlinecap +stroke grestore end + +@endspecial 16 w Fb(PS)p Fc(-Datei)875 +2684 y + tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end + /ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 +1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW +def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@H /N@J InitNC { NCLine + } if end gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha + 0 setlinecap stroke grestore grestore end + 875 2684 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end /DS +2.0 2. CLW mul add 2 div def /PSTricksDotFont 0. [1.0 0.0 0.0 1.0 0.0 +0.0] FontDot /Dot { moveto gsave 1. 1. scale (b) show grestore } +bind def 99.5846 85.35823 Dot end + +@endspecial +875 2684 a + tx@Dict begin tx@NodeDict begin {99.5846 85.35823 } false /N@J 10 +{InitPnode } NewNode end end + 875 2684 a 951 2350 a + tx@Dict begin tx@NodeDict begin {10.60394 5.62248 67.1975 33.59874 +2.49072 } false /N@J1 16 {InitRnode } NewNode end end + 951 2350 a 31 w @beginspecial +@setspecial + tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0. +true 3.8 neg 5.62248 neg 63.39749 10.60394 .5 Frame gsave 3.0 -45. +PtoC Shadow 0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore +gsave 0 0.1656 0.584 0.116 setcmykcolor gsave fill grestore stroke +grestore gsave 0 0.1656 0.584 0.116 setcmykcolor 1. .setopacityalpha + fill grestore gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha + 0 setlinecap stroke grestore end + +@endspecial Fb(ghostscript)875 2684 y + tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end + /ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 +1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW +def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@J /N@J1 InitNC { tx@Dict +begin /Lineto /lineto load def false 0 setlinejoin pop end /AngleA +180. def /AngleB 90. def /ArmA 10.0 def /ArmB 10.0 def /ArmTypeA 0 +def /ArmTypeB 0 def NCAngle } if end gsave 0.8 SLW TeXDict begin +XC@black end 1. .setopacityalpha 0 setlinecap stroke grestore +grestore end + 875 +2684 a 1007 2701 a + tx@Dict begin tx@NodeDict begin {15.8 11.8 53.63864 26.81932 2.0 } +false /N@J2 16 {InitRnode } NewNode end end + 1007 2701 a 32 w @beginspecial @setspecial + tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.4 +true 3.8 neg 11.8 neg 49.83864 15.8 .5 Frame gsave 3.0 -45. PtoC Shadow +0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore gsave 0 +0 0.3 0 setcmykcolor gsave fill grestore stroke grestore gsave 0 0 +0.3 0 setcmykcolor 1. .setopacityalpha fill grestore gsave 0.8 +SLW TeXDict begin XC@black end 1. .setopacityalpha 0 setlinecap +stroke grestore end + + +@endspecial 16 w Fb(PDF)p Fc(-Datei)875 2684 y + tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end + /ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 +1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW +def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@J1 /N@J2 InitNC { +NCLine } if end gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha + 0 setlinecap stroke grestore grestore end + 875 2684 +a 1952 2701 a + tx@Dict begin tx@NodeDict begin {15.8 11.8 53.63864 26.81932 2.0 } +false /N@K 16 {InitRnode } NewNode end end + 1952 2701 a 32 w @beginspecial @setspecial + tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.4 +true 3.8 neg 11.8 neg 49.83864 15.8 .5 Frame gsave 3.0 -45. PtoC Shadow +0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore gsave 0 +0 0.3 0 setcmykcolor gsave fill grestore stroke grestore gsave 0 0 +0.3 0 setcmykcolor 1. .setopacityalpha fill grestore gsave 0.8 +SLW TeXDict begin XC@black end 1. .setopacityalpha 0 setlinecap +stroke grestore end + + +@endspecial 16 w Fb(PDF)p Fc(-Datei)875 2684 y + tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end + /ArrowA { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. 1. .setopacityalpha + Arrow EndArrow moveto } def /ArrowB { } def /NCLW CLW def tx@NodeDict +begin 0.0 -14.22636 neg 0.0 0.0 0 0 /N@K /N@B InitNC { tx@Dict begin +/Lineto /lineto load def false 0 setlinejoin pop end /AngleA 90. def +/AngleB -90. def /ArmA 10.0 def /ArmB 10.0 def /ArmTypeA 0 def /ArmTypeB +0 def NCAngle } if end gsave 0.8 SLW TeXDict begin XC@black end +1. .setopacityalpha 0 setlinecap stroke grestore grestore end + 875 2684 +a 2473 2152 a Fc(Der)g(Aufbau)f(eines)g(T)3163 2172 y(E)3195 +2152 y(X-Systems)g(mit)2648 2252 y(pdfT)2812 2271 y(E)2845 +2252 y(X)g(als)h(Compiler,)f(der)g(eine)2792 2351 y(Ausgabe)f(im)h +(PDF-)h(oder)g(im)2516 2451 y(treiberunabh\344ngigen)e(DVI-Format)3446 +2551 y(erlaubt.)p 0 0 0 1 TeXcolorcmyk 0 0 0 1 TeXcolorcmyk +eop end +%%Trailer + +userdict /end-hook known{end-hook}if +%%EOF |