[Back to GRAPHICS SWAG index]  [Back to Main SWAG index]  [Original]

{ Frequency Domain Simulation to prove Fourier Transform
  Features:
  A friendly GUI with mouse and Help

  By  : Roby Johanes
  http://www.geocities.com/SiliconValley/Park/3230
  Finished in 1996

  Final Update: December 1997 for submission to SWAG

  Note from the author:
* In unit Images there contains all images of this program. They are
  in RAW format, you should convert them all into OBJ using BINOBJ.EXE
* In addition, you should convert the existing EGAVGA.BGI driver into
  OBJ file using BINOBJ.EXE (supplied in BP package) in order to make
  this code fully functional.
}
{ NOTE FROM SWAG :
  The OBJ files needed for this program in included in an XX34 module at
  the end.

{$A+,G+,N+,E-,R-,S-}
uses crt, graph, images;
var
  xm, ym, b : word;
  digit     : array[0..9] of pointer;
  mouseok   : boolean;

{ Far mouse handler to get (x,y) coordinate and button pressed }
procedure mousehand; far; assembler;
asm
  push    ds
  mov     ax,seg @data
  mov     ds,ax
  mov     [xm],cx
  mov     [ym],dx
  and     bx,3
  mov     [b],bx
  pop     ds
end;

{ Initialize douse driver }
procedure initmouse; assembler;
asm
  mov ax,3533h      { Check for the existence of mouse driver }
  int 21h
  mov dx,es
  or  dx,dx
  jnz @@1
  or  bx,bx
  jz  @@2
@@1:
  xor ax,ax         { Reset mouse driver and install handler }
  int 33h
  mov [mouseok],al
  or  ax,ax
  jz  @@2
  mov ax,cs
  mov es,ax
  mov dx,offset mousehand
  mov ax,12
  mov cx,1fh
  int 33h
@@2:
end;

procedure hidemouse; assembler;
asm
  cmp [mouseok],0
  je  @@1
  mov ax,2
  int 33h
@@1:
end;

procedure showmouse; assembler;
asm
  cmp [mouseok],0
  je  @@1
  mov ax,1
  int 33h
@@1:
end;

function inside(x1,y1,x2,y2 : word):boolean;
begin
  if (xm>=x1) and (xm<=x2) and (ym>=y1) and (ym<=y2) then inside:=true
     else inside:=false;
end;

procedure init;
type tfix = record
              x, y : word;
            end;
var gd, gm : integer; p:^tfix;
begin
  gd:=VGA; gm:=VGAHi;
  initgraph(gd,gm,'');
  if graphresult<>grok then
  begin
    writeln('Sorry, you have no compatible VGA cards.'); halt;
  end; mouseok:=false; initmouse;
  digit[0]:=@Digit0; digit[1]:=@Digit1; digit[2]:=@Digit2;
  digit[3]:=@Digit3; digit[4]:=@Digit4; digit[5]:=@Digit5;
  digit[6]:=@Digit6; digit[7]:=@Digit7; digit[8]:=@Digit8;
  digit[9]:=@Digit9; randomize; settextjustify(0,2);
  p:=@scrolldown; p^.y:=p^.y-1;
end;

procedure shade(x,y : word; c : byte; s : string);
begin
  setcolor(0);
  outtextxy(x+1,y+1,s);
  outtextxy(x+2,y+2,s);
  setcolor(c);
  outtextxy(x,y,s);
end;

procedure setupscreen;
var i : word; p : pointer; f : file;
begin
  setrgbpalette(3,0,0,0);
  setrgbpalette(20,0,0,0);
  setrgbpalette(57,0,0,0);
  setrgbpalette(59,0,0,0);
  setrgbpalette(5,0,0,0);
  setrgbpalette(2,0,0,0);

  for i:=0 to 7 do
  begin
    putimage(i*80,0,@pcb^,0);
    putimage(i*80,160,@pcb^,0);
    putimage(i*80,320,@pcb^,0);
  end;

  setfillstyle(1,0);
  bar(6,26,633,399);
  setrgbpalette(3,0,10,0);
  setrgbpalette(20,60,50,10);
  setrgbpalette(57,10,20,10);
  setrgbpalette(59,20,40,10);
  setrgbpalette(5,10,30,10);
  setrgbpalette(2,0,20,0);
  shade(34,416,6,'AMPLITUDE');
  shade(207,416,6,'PERIOD');
  shade(367,416,6,'DOMAIN');
  putimage(460,400,@about^,0);
  putimage(210,0,@title^,0);
  setcolor(11);
  rectangle(0,0,639,479);
  rectangle(5,25,634,400);
  settextstyle(0,0,1);
  settextjustify(2,2);
  shade(630,10,15,'F1 = Help');
end;

procedure drawaxis;
var i : word;
begin
  setcolor(2);
  setlinestyle(1,0,1);
  i:=33;
  repeat
    line(i,26,i,399); i:=i+30;
  until i>630;
  i:=32;
  repeat
    line(6,i,633,i); i:=i+30;
  until i>399;
  setcolor(10);
  setlinestyle(0,0,1);
  line(6,212,633,212);
end;

procedure plot(a,n : word; f : real);
var
  y     : array[0..629] of word;
  i, j  : word;
  t, at : real;
begin
   fillchar(y,1260,0);
   i:=1;
   repeat
      j:=0;
      repeat
         t:=2*pi*f*i; at:=a/i;
         y[j]  :=y[j]  +round(at*sin(t*j));
         y[j+1]:=y[j+1]+round(at*sin(t*(j+1)));
         y[j+2]:=y[j+2]+round(at*sin(t*(j+2)));
         y[j+3]:=y[j+3]+round(at*sin(t*(j+3)));
         y[j+4]:=y[j+4]+round(at*sin(t*(j+4)));
         y[j+5]:=y[j+5]+round(at*sin(t*(j+5)));
         y[j+6]:=y[j+6]+round(at*sin(t*(j+6)));
         j:=j+7;
      until j>=629;
      i:=i+2;
   until i>n;
   setcolor(14);
   moveto(6,y[0]+212);
   for j:=0 to 627 do lineto(j+6,y[j]+212);
end;

procedure drawdigit(x, y, n : word);
begin
  putimage(x,y,digit[n div 100]^,copyput); n:=n mod 100;
  putimage(x+15,y,digit[n div 10]^,copyput); n:=n mod 10;
  putimage(x+30,y,digit[n]^,copyput);
end;

procedure showstatus(a,n,f : word);
begin
  putimage(40,430,@scroller^,copyput);
  drawdigit(42,432,a);
  putimage(200,430,@scroller^,copyput);
  drawdigit(202,432,f);
  putimage(360,430,@scroller^,copyput);
  drawdigit(362,432,n);
end;

procedure help;
var p : pointer; s: word;
begin
  s:=imagesize(220,130,420,350);
  getmem(p,s);
  hidemouse;
  getimage(220,130,420,350,p^);
  putimage(220,130,@helppic^,0);
  showmouse;
  repeat until (keypressed) or (b>0);
  hidemouse;
  putimage(220,130,p^,0);
  showmouse;
  freemem(p,s);
end;

function quit : boolean;
var
  c : char;
  p : pointer;
  s : word;
  u : boolean;
begin
  s:=imagesize(180,190,460,290);
  getmem(p,s); u:=true;
  hidemouse;
  getimage(180,190,460,290,p^);
  showmouse;
  repeat
    if u then
    begin
      hidemouse;
      putimage(180,190,@quitpic^,copyput);
      showmouse;
      if mouseok then while b and 2 = 2 do;
    end;
    repeat until (keypressed) or (b>0);
    u:=false;
    if keypressed then c:=upcase(readkey) else
    if b and 2 = 2 then
    begin
      c:='N'; while b and 2 = 2 do ; break;
    end else
    if b and 1 = 1 then
    begin
      if not inside(180,190,460,290) then begin c:='N'; break; end;
      if inside(260,260,335,280) then
      begin
        hidemouse;
        putimage(260,260,@yesclicked^,copyput);
        showmouse; u:=true;
        while (inside(260,260,335,280)) and (b and 1 = 1) do ;
        if inside(260,260,335,280) then c:='Y';
      end;
      if inside(355,260,435,280) then
      begin
        hidemouse;
        putimage(355,260,@noclicked^,copyput);
        showmouse; u:=true;
        while (inside(355,260,435,280)) and (b and 1 = 1) do ;
        if inside(355,260,435,280) then c:='N';
      end;
    end;
    if c=#27 then c:='N';
  until c in ['Y','N'];
  if c='Y' then quit:=true else quit:=false;
  hidemouse;
  putimage(180,190,p^,copyput);
  showmouse;
  freemem(p,s);
end;

procedure main;
var
  a, n, f, bt : word;
  c           : char;
  update      : boolean;
  action      : byte;
begin
  a:=160; n:=1; f:=630; update:=true;
  setfillstyle(1,0); settextstyle(0,0,1);
  showmouse; action:=0;
  repeat
     if update then
     begin
        hidemouse;
        setfillstyle(1,0);
        bar(6,26,633,399);
        showstatus(a,n,f);
        drawaxis;
        plot(a,n,(1/f));
        showmouse;
     end;
     update:=false; c:=#0;
     while keypressed do readkey;
     repeat bt:=b; until (keypressed) or (bt>0);
     if bt and 2 = 2 then action:=7 else
     if bt and 1 = 1 then
     begin
       if inside(88,430,103,445)  then action:=1;
       if inside(88,446,103,471)  then action:=2;
       if inside(248,430,263,445) then action:=3;
       if inside(248,446,263,471) then action:=4;
       if inside(408,430,423,445) then action:=5;
       if inside(408,446,423,471) then action:=6;
     end else
     begin
       c:=readkey;
       case c of
          #0: case readkey of
                #59: help;
                #72: action:=1;
                #75: action:=4;
                #77: action:=3;
                #80: action:=2;
              end;
         '+': action:=5;
         '-': action:=6;
         #27: action:=7;
       end;
     end;

     case action of
       1 : if a<180 then
           begin
             inc(a); update:=true;
             hidemouse;
             putimage(88,430,@scrollup^,copyput);
             showmouse;
           end;
       2 : if a>50  then
           begin
             dec(a);  update:=true;
             hidemouse;
             putimage(88,446,@scrolldown^,copyput);
             showmouse;
           end;
       3 : if f<990 then
           begin
             f:=f+30; update:=true;
             hidemouse;
             putimage(248,430,@scrollup^,copyput);
             showmouse;
           end;
       4 : if f>30  then
           begin
             f:=f-30; update:=true;
             hidemouse;
             putimage(248,446,@scrolldown^,copyput);
             showmouse;
           end;
       5 : if n<399 then
           begin
             n:=n+2;  update:=true;
             hidemouse;
             putimage(408,430,@scrollup^,copyput);
             showmouse;
           end;
       6 : if n>1   then
           begin
             n:=n-2;  update:=true;
             hidemouse;
             putimage(408,446,@scrolldown^,copyput);
             showmouse;
           end;
       7 : if quit then exit;
     end;
     action:=0;
  until false;
end;

procedure done;
begin
  closegraph;
  writeln('Roby Johanes says : "See you next time !"'#10#13);
end;

begin
  init;
  setupscreen;
  drawaxis;
  main;
  done;
end.

{ ---------------------  IMAGES.PAS --------------------- }

{  By  : Roby Johanes
  http://www.geocities.com/SiliconValley/Park/3230
  Finished in 1996
}
unit images;
interface
uses graph;

procedure VGADriver;
procedure QuitPic;
procedure YesClicked;
procedure NoClicked;
procedure Digit0;
procedure Digit1;
procedure Digit2;
procedure Digit3;
procedure Digit4;
procedure Digit5;
procedure Digit6;
procedure Digit7;
procedure Digit8;
procedure Digit9;
procedure Scroller;
procedure ScrollUp;
procedure ScrollDown;
procedure PCB;
procedure HelpPic;
procedure About;
procedure Title;
implementation

{ VGA graphic driver routines (BGI) }
procedure VGADriver; external;  {$L EGAVGA.OBJ}
{ Pictures in object files }
procedure QuitPic; external;    {$L QUIT.OBJ}
procedure YesClicked; external; {$L YES.OBJ}
procedure NoClicked; external;  {$L NO.OBJ}
procedure Digit0; external;     {$L 0.OBJ}
procedure Digit1; external;     {$L 1.OBJ}
procedure Digit2; external;     {$L 2.OBJ}
procedure Digit3; external;     {$L 3.OBJ}
procedure Digit4; external;     {$L 4.OBJ}
procedure Digit5; external;     {$L 5.OBJ}
procedure Digit6; external;     {$L 6.OBJ}
procedure Digit7; external;     {$L 7.OBJ}
procedure Digit8; external;     {$L 8.OBJ}
procedure Digit9; external;     {$L 9.OBJ}
procedure Scroller; external;   {$L SCROLL.OBJ}
procedure ScrollUp; external;   {$L SCROLLUP.OBJ}
procedure ScrollDown; external; {$L SCROLLDN.OBJ}
procedure PCB; external;        {$L PCB.OBJ}
procedure HelpPic; external;    {$L HELP.OBJ}
procedure About; external;      {$L ABOUT.OBJ}
procedure Title; external;      {$L TITLE.OBJ}

begin
  if registerbgidriver(@VGADriver)<0 then halt;
end.

{ ---------------------  CUT ----------------- }

{ the following contains additional files that should be included with this
  file.  To extract, you need XX3402 available with the SWAG distribution.

  1.     Cut the text below out, and save to a file  ..  filename.xx
  2.     Use XX3402  :   xx3402 d filename.xx
  3.     The decoded file should be created in the same directory.
  4.     If the file is a archive file, use the proper archive program to
         extract the members.

{ ------------------            CUT              ----------------------}


*XX3402-017095-301297--72--85-05341----OBJFILES.ZIP--1-OF--4
I2g1--E++U+6+DUvbWDkRG3bb+A++52t+++6++++IJJ7J0tDEYfhagxfoq+MlxyYNRZVC32D
-ETPERUCcVr6Y0boA1rgd88SZGbiu3W25HkYA52UEbSG5MONzwXOsO3uQLXls8I-1npqgsRh
hArfYnRh2aSGxppsxl8vxpr9Tj1VSHxtYrrnjaxXtd2uCnjoMFWVzBmxCrTFr6O4dbvQJ-JZ
QjoQEcfqsD5wczjnQkWVKpjtj67EELaCF1NAPuPoYHsQTL6qqe2tdaNGy+kJYI9f8nJnIdxh
2UBthxnAx4SPpaJO7goknFGddmEp6rqsyyFyvRioOmApYmO4WcXSoX813hDLG+kA6rbrY1vG
Nu-wHg8w712kkeiQN0EXaTyDiItWsDkN4E65NMjNlyD0a1p2NrNlElVHFFeJ8S2XMEngaR2M
Vvk2APFvDX-Ry4NkMPuE49V2FniUFKDO5KFI-145s3CWA+REdmu6qECTQEfHV1dBEMkBDeAI
dUtp1UElJT1F4CgsUPU3LquiK5WI9xDrGK6eI8ThAcj54KmFjr3Yr1J3XfKCfXbuY+tjHQDk
IjKmFc6rBTCBl21VLxHLGWVbE1YrPNlZrJa4hztPhz-5y3a5cRnZmvUf6iI2RFPUzJ+BAFNT
7il1fTB0llS+INQxNg3ZA3z4xsZb5AVmkm4LjcNPKUtDebcBpnFwAPRKunZnMzd9K7MuPUh5
F0i6-atAS2bBIWQaefUlp0KyI7xR2UBXKRCGDh9bp5rwS-L-x4AugEvq7j2Wa9xxtYYAHAGJ
KqLcYUz1AYkJfC0q68Mz4oeg+yjzhW04lGSfYzmgy4FhINORFShr2UBLgfaqvw8zVm46MRbv
Q910gDr1WK5M6g8ZpGBV1AAKKiOq49qhIwTzb2oXdvbL19uAhkKPn5XPlg4tDkXT5KCMFcVl
C1Cxrn0yHK7U8Y59Frih3a6udwmky8m3aADHMSnyqJn-rOdzaeKDx45q8HkByHm9xaZMcHeP
oLplMQ-bP0bYctjSsoBLuJfj4PdAms1K00uPjhPfvIWTJb57wCiwqMbgWkhXipZSfzcy-cvo
CJmQ16tfTHCm9msAyCHenK-wJZdaZ2z59UP5hF5R3lT4xP2OkTXcAHsBy8HCjllXyi9-i1vZ
iVrsJ87xxWO0sxeAjXOsA40Wf1K1wNaqgVu9LoYA3CLR6ogy99CVk-BrnSCHHwsAWswNecBW
uj-WK5kG7yS1nOFsjgNvWj04TAd8Ad6tiwnPfNx6EHQ5wT+yDPbwHYLcpFxEGkA23++0++U+
y1iS6n-gLOXO++++WUA+++Q+++-NFJAiHo78nRAzOw7+5APltt8EWcBzc3CLf6s3hklaG186
dMIuCTcC3BnjL7qQl24AfoHXvchEw+IIidOa7xkjEiuE3-mwuEjD7lb0FHWkTBxRJ++bz6VW
VAgbhBthWv5nj+akuW1iVqzRg-R5+0OPHtg-DHkXczA3CUpH4RmfeEliN8dXLZvyV8bysMO0
r7fHedJosvGQOzxqZ1jgxqfJGXcjsweRJcZOhN8infT8TEhuWpPGpLV09jaVhJUL3r0VL1eZ
hJXGiRvifhztcRrpzUIruyfsnQd83j+mgyGTxEREGkA23++0++U+y1iS6y2QXkX-++++rEA+
++M+++-CHmtDEYfJoe2CUZ+Ily5z-OPG1-dAnaMpEh-k6HWRy+uyUh2BBdi7t6nCs8AMT+cP
oKUHRkbbg-oMAlUwuFSygtrhrgG-tTihMkRkR-G2o8QqlVTPIWdBis-mJt3SnjIW1+1QnpRP
+KjoYBAYc8b78eheggfOBTbU5D7ORLtfPqkx-X8BnRUC4AUoxfIXuys7m1EqTtARSEFY4jjA
m2sMm0niNSglY3bMa0oT8RDMnTErPz3DhjFzNopNgb3HtZwYo1xMkDM1I2g1--E++U+6+DUv
bWBBNPsdP++++-M-+++3++++A0tDEYdfM43Ugf7WawP-kA1WvCzWmi+wUtp-sls12mBXy+FS
-UN4BVRDRwwE+kM4Vho95X2kAX1kAYUlzDz-+APp5m-szkg6DW+-kEwgmAAkzEoQ2DB++4Ey
W1zz-DLAVvYLtbuMTuvDCh93lA-E+U-EGkA23++0++U+yHiS6xLul4dg++++3U2+++I++++l
9Yx0GahUMK0mga8Plg5+kC9gvy98s1m1bI5X5UAH6qDs-3s4-YMq3oxrnl-1-UO4LEgSAH+m
AD+mG14+kDwTM6eVzUCE+4fTzk76Gn+k5+-W-Ug4VUQKNB+kzH1nYAmTTs84tYDxcyv9rQL2
k3+0+3-9+kEI++6+0+1tCtsXh4lBrro++++K+E++-E+++16iHo78Oq-VM98mMdj4kQ1+sinj
sgfUD6CRESAS+lAXMzU2LUM4FXMLHrTD20A4-cOR0lslA16kw176ATnzkE14xFwUqDs3+wBy
64OEM4+s+AEA3UkA1mn6c85uMSP-n7xz+6VD+CIM6D6D401eGOJVyjQzE1ITtVx5xFBRH+kA
7E-EGkA23++0++U+yHiS6mCOV+dk++++3U2+++I++++n9Yx0GahUMK0mga8Plg5+kC9gvy98
s1m1bI5X5UAH6qDs-3s4-YMq3oxrnl-X-UO45EgSAH+mAD+mG15wzw2+ljIT6BXy-ED1TW-a
Y4-UC+121-MA1+wgm80Vya5akQmLDw5+ADw2vQm5ySTufCZRH+kA7E-EGkA23++0++U+yHiS
6zyqnpxv++++3U2+++I++++o9Yx0GahUMK0mga8Plg5+kC9gvy98s1m1bI5X5UAH6qDs-3s4
-YMq3oxrnl+H-UO4vEgSAH+mAD+mG14+kDwTM6eVzUA1EkBEyzsL1+k5701sUEJt48MTN-M6
Uwk4MTYH1+nnUNU-8gw+JIwm1RADRGzAzH1z-1D6Rn2lA7E++3-9+kEI++6+0+1tCtsXWw0w
4Ls++++K+E++-E+++1IiHo78Oq-VM98mMdj4kQ1+sinjsgfUD6CRESAS+lAXMzU2LUM4FXML
HrTD23A4-cNh0lslA16kw176ATnzkE14xFwUSDw165v-k5++eCm+-+A1YAjkk67o4eMTNVvA
TDYH1+nnUNV-+W9DM+3FHn6BpKzz+hJwa5wQpIxoAH2kZ+++I2g1--E++U+6+DYvbWACB5km
S++++-M-+++3++++BWtDEYdfM43Ugf7WawP-kA1WvCzWmi+wUtp-sls12mBXy+FS-UN4BVRD
RwwEAkM4Veo95X2kAX1kAYUlzDz-+APp5m-szkAUTg5+Q+0cv6+2+kCEmz1+UbEOdVxa5gnw
yGQU40E5Bhy0D+nH1n6PqLmMTpkXDbQlAH0I++-EGkA23++0++U+yHiS6m-McMZl++++3U2+
++I++++r9Yx0GahUMK0mga8Plg5+kC9gvy98s1m1bI5X5UAH6qDs-3s4-YMq3oxrnl-n-UO4
9EgSAH+mAD+mG15wzw2+ljIT6BXy-ED1TW-aY4-UC+121-MA1+wgm8-VyXaUtX3+n+TlttyU
cTYA2DwQY31eMa7U8+2+I2g1--E++U+6+DYvbWCgtMCbMk+++-M-+++3++++C0tDEYdfM43U
gf7WawP-kA1WvCzWmi+wUtp-sls12mBXy+FS-UN4BVRDRwwE0kM4Vgo95X2kAX1kAYUlzDz-
+APp5m-szkg6DW+-kEwgmAAkzH1nMCPDDk5-h16TtVw4VVBRH+kA7E-EGkA23++0++U+yHiS
6wV6sipl++++3U2+++I++++t9Yx0GahUMK0mga8Plg5+kC9gvy98s1m1bI5X5UAH6qDs-3s4
-YMq3oxrnl-9-UO4HEgSAH+mAD+mG15wzw2+ljIT65Xz0kUy6+5-1mn6kn1xADBUtgiTM40M
1wEAI5Y4e5eGOOVySnHnMTst614VWsa-cEE+I2g1--E++U+6+DYvbWD4WX9aiU+++0+2+++8
++++IoBGHolA9Yx0GgqHcEv0A-F3PvS3pK3FO1u-n018L7AZEz+X0CEo0YKET+eTUY6UIFD9
Ff8yjNQi6HIHenbdDO7BvqiJ6AemlIo1WGbqCQkxlSMRFofNul7Eya18khew-D-xT463v9-4
FkjxuZfOAjhMgKwehqSCT2otozZLCd2zIwvoTPhpiR1rnQfZEhzLqiL0WSzzlkzjxsH9VPuj
8-Tu5dE9FzqoR0tnNjo4T8WTI9yVyEXBpznv5runzCfX7E7CDp-9+kEI++6+0+1tCtsXQAL-
i5g+++0s++++1++++3B1IYxAH3JE9Yx0GahUMK0mga8Plg5+kC9gvy98s1m1bI4XXc47YL5v
-5s4-YOCMCQUTlyTo++4-cMb0tcM4-YMy-bs4Dvz-v8+22UnUm0ENUT--ynmzo5k+PjQTl-w
k0tH1s6Dq0LgET+-is+w009IMOTzzvQ5kzzzuw2E-VEQ4viM4-V8+3-9+kEI++6+0+1tCtsX
8QsxmLg+++10++++1++++3B1IYxAH2FC9Yx0GahUMK0mga8Plg5+kC9gvy98s1m1bI4XXM47
YL5x-224-YOiMCQUTlwT3zxkDkM4-hw3LEmA1+nwEDXzDt+3V20O4EG-B1g6Da0Lzky003d+
5UETg2jMUy+1RdZu25n+9jQT-15Jcx9zzxi1sTzzxK+6+lYZSveM4-V8+3-9+kEI++6+0+1t
CtsXpPf89HU0++-Z4E++-k+++3-1EWtDEYfha93eso+EVaQhYHL-Y-H5QE4-qnm14oBwuEtm
r2hQam8xLES0ItZowODs+T6E+Y3eZpg6vQqCJrC0S1TfG9N-pVO48-zmzwjvnylc3YBjB1dP
x+5WmRrDKtWwG9Uyiyc7wTrt52-2jmQr+D0oX4A-Q+SjcCTOf2lfi+Sn2eUgzLyR5eTkMwB7
U5grhtteiS2iNe+QbDZfL20IovKJo5aYTNlWHjcsmNnOnZZxOAPeAqPQTXSQwSjaO8bmyLLQ
TXX7bD7lFJFm6hyJyohZ68tnqp0NdSrph9GBSr2PNpQu9jwrL-qGEroEcYxlq-ly1J64hMdw
t10SZehytIQiBLQWPaXiviIWtj9ObB4LgPs2T5snxijaB5Bk+hkwgBp6tdGDgvZ2niOm+SsD
ZM3y03v8t9UbrfVb5DT22GT9MHkhtsXbL+xBBmMiBRrMlFIL876sgEPglUtiVZ509cjudVUZ
v96CTNN1jtNny+rZf1tHzHTubAyDz38L69zytwnRdCCCnELyPa5vU2dyMOyNTOKprVTrWwf+
cBiirLPxQhZeiZmqf8kqq+vrkVZx-NK-ml0NcPMDDfgTwH0pmmbeArr-Thhne+sR6Y85YfHV
MMUslNnoueBVYjEtVoZZsqbxScTHX6TMVXUSRfTcKp+Ny3P3SSNBdDRbPck99HC-EoYNHrub
QG-ipu4dCpJgDELU7Lg8e7thOr00iQ8fHvAywDfJv-ROwqfwRbYi-DlcWtourC1xvP25wD+D
I2g1--E++U+6+DYvbWDusMqQaF6++83O+++6++++G2JAI0tDEYfhb3pg5BRplyxkWFoqKCyi
8uDSE8hQBUpU3GWEbP8cBj4OgscJKkLImYNPc5omMEBx8ckZa9FPUx+RKgr8A+XFSYYNECPa
AGq8UUgV2E6Pr72IK5sE78FxQ-w2QDG-C2ITB3CqsF+OniqtLvCnAvAJGOWoMr3XGGRvCDwT
tyiQQwyxAxMs4jjaBzDTbo-czALH7vuBLZnKoR4PTnaaOQLrWUVdygZjbrfZZHxu2G5otnwQ
5xQEyVXRFiMG3NwkMJZq0saDZa4ByB-F5kgozIUxPX4C5eYbfPpkL89IslPXZ0mZbfHqkb3A
dFur4+TPGXpd5L1qvzngpzLqOwhtVcS-wGTaw5aIya502Vm6XveKgDPCQGVpnmEgkQ26ZFMG
pdsse2FxV+VpIB8W9h9N1q0Og8nDBER5uUY918IyPCq7+s3BbNJVms7kdgv8g6Lqn-3LqP+Z
CC6e4vPqnV3rnP-ZFNdOVXLoCQv1kAHiQB3r0Jld0ouAaMIfyN3bltm5RuRByc-YQ57rpY+m
***** END OF BLOCK 1 *****



*XX3402-017095-301297--72--85-13441----OBJFILES.ZIP--2-OF--4
WtBnddIbkLZsPoqd7HXPRVLHHHC1cpqtDS9kOLMpQHWJvDOJqochSRkyOU1yQL5cxI0d7HYr
4zElQas3x6-nKrDpoepAXj9gWcDdwpiN59qetnkvWuAw4FmdZiM2CbrVNmG9IwV1t7a7CDz-
ko+VVZAzYAMdoGGC-c37nKgNioK1egsHOqer-dtIK6XIYVmvuZBWrhdAQyleVObJgUuTwWEt
+vIgXabSSdX3eHCpSVN5SP6sEWrfggjaL9ZhoZ2QtQauv2NlT+GSfGlC5MrQ5nG8cxEyCktw
yFUtGaq6goGr78QrbAIFZ4xLPZRYkNVljO5guopmj+F5dxvBlXPnn+tL7QV5dGireleciOae
-1XQowfWP0QsD5PYu-qvQKBAptkrc7+GrxYwGUI6rkds40XTTU3iWEQC33jQNQL1+hho7Vg5
qxkPs0m-iyRARkeZ-SQOkz5jP07l1w6nMPzzk4MQ2iR+3gynPH8WrMAkNBh2QQ2WYjD+dkii
SKQx-lnlbOIsY7Gr03rzSv0g6It7PdBNZT-hnYIQiWFCYtinWiBCmRPN+7MLxuUZHVAIIHnm
b4H1pcnWLfDH51xbHHCpokYCz8LNdPCizb37zZz3OO3lVAdAfGOjkdpk+gr4HApAQDW5KPQW
8zuvmmgPvNWXfUPud5+SXC9Yb32QuQbWD-X7cOAs7LwIFrcSIKoDezgtNenmAD-A3WtZvK1A
6YGnQ62qOfTqkd3eindwSy4ADbnzflnFA8A7Wr3Iamn9qXr5ANJur46QpTP9gUssyrByxCUe
4vMgm21eqgemRgY7sNtxbcS-WVneFnQlhmkhWC7aVfJfb2NNtSK3TlTaBhUrrhN4C2MM7oFt
q9GcRPG+Xoy8yM8qnExSLbYEIVuYAExcGHJ8ZFcBaJe6y23nkYOMsuKF5rXVaAYsZ8gRpWn7
mGD38GaDt6-5QZmZFeZGswKcFF5lWIrhaT8T66QuBqmzBLCH5E+9IGgDbF0XSxuU4C2dApz2
-iomLFltid4bmnnIWRFa6fINdUNpZYwQMeD8FuV3r4OnrLNTMVoo0zoBzuqBLgRMVJyrryjY
0oOjNoL59QB1rJ3epAQCQIjUyFOeaN1+uirK426aQD9kSwBrcBMh6DlXcRML5D0U16xEAnDI
e1w5ryjAIqtF4spJqeqff-Y6b267aPtleKAg9A6jzpCaRaaJbkzaEFYScIMnp6Uz0vw1qrU4
pOYnleoltf5m-HUulCiis1to+biLAG5RxvhwTkfwi9rTYNtGGQTQEvYOgQQeIerQOXhQnEla
+hBZuXJI7Gvbp7siaumsfs-hrbiuoSGrHerGbaz8yuEWzaa6Tqe1ysSfkHMEDo+hVq0P3ZQn
kpN6EjMnxT8ouTwahmf9a+wWq1VvMxYGb9QPXKboW+xZOdFhokOpTy-VcCcTMdg8INDTLx0E
RIJ2nMYl47Isl0cDMPb1RRK6g0-5LOvsNsD4lYMwX2fpUKKd8UtdGKiDbRF-EnBiKLOuCXnU
T-ssh-zb39JnhUfCktl-SgW9c9o1nYDucIarSIYNQEce0RWeHGPJI04F5Z00+qcocKNiIROU
wSW8v4P+vRMJMrvc4sUYABj3icYDbwQgWCcw8iE4uG5mW5F5VNegCsGOqVy5S9qJMujnfJYj
bDMww9+7JtCDo027S8i3IexrAKyk1A0eYgX1ocCVDCXTS-WMZ9j3FHRLtsabF-bCByx-T88x
ZOZiMx9czzEfgnrkg5ZYxgjnL11P9K0jjml2KP2JSJWKA7G5FqyZBhRha7tGMtk+zk911ZxO
aPcECAyjJg8tGt7H8DmKm+Kn0shsOvKGBmt7He4E5qG7PmUDXufsJo7hvY7+5mcpTdeq5RBV
iQ1gawslz+B8gCGUEZLYUhTuChv2mmJwF592FG0nl15ZsORdCl-ed4zGHOL4C6iyGpVQPo0K
O9L8VhweMnYjLWa8L+1FiwGnbOO8lrWKeAJjcw+DVFfD2YnhOGksiggiBcXfRHFRjpjzQZ0j
MpswqZ4Vq0kfmrdYwQXXhQkGEYrgnrFiGtGavbGCyXmQVwmWpdJ+OIOKBjVi7yZV6rOvQYoy
jNOk-6RDfmKgDMITfgab0lCKsD1dkcGphn0beybDdALCXtXyH3UKqiB2hJFDK8mL8RK5fMUX
kg1LxUirVzZrnqqPGlhyC7COTmyKnhahUetpIzDjAYikk7oTtgV--8i5hVHb99zM59xV9bZy
OAHK2wnnWyqkPb5CSJWCdRMHWBEUgsEKqnxtFQh--2hkUS6gU0Mjysj6wFpokr4PAMv62VHf
i1i3WqOAAlV2Q6zYg-58M-1-pJGf3fvbNLwShRcqOg7TYYDsd8r62XcIvkgREr7AtF3NUbZY
a9CJ4Vh201IWCIGKzKCcJcRECJZLyzDLT3CF5c1nsmuclMyPGUz06nUCWEoWd7fYHAamTkmp
T-i8vgerg1li-GHHksJ3TOfLukosmgDGUzE6XXgJ5oE6BQ3tlzAd9zgbIRqzWu1iJlksyp3u
o6xoXSuGsUmZ-yaFuQuXB-d2G1KN5VmTwf6ToYDP8yT8ZRQJdu75uI44IxJX4Vt2lBA1Wpxe
2A5Jrd0QdLVuw7SbZeizXsTLsoHdMM45UOBk7PRqYmKsu7HASYgeGslQzcBqgzlbS--lg7nd
pqMt2zzkFHw7Ov+y845h8Hq6uGREnlSmCHW16uOgAAcLRgudQLLDEGYC5mtPFXTMHb9sBUV0
EMcXVhUSZRj2ngwerxffVSbnUn29NjrnfmLDHopsSiRlWWDIyW37Qjfi9+GaXRtOctGsrgUz
wH1kSnIKksn9bFj7mwsIbZsbTTW2uCKpU0FrWxGUvByshA7lEvQFfcaQQueKi6pemdAyT2dh
rYlm1-Q02SCYPZTh2Xx6bJD7qvKafEdDaaBg09LtpC41JG+CcPWP0UiYnoNk40yxbCGMmeCb
9nidZXdBpaENxhFvft6uPXBeJBfA1XxOybuWXZ8PHtsTepm5GwKjJuRHtmTOj9PXACR4OaNq
CCoypb1OdES9VFwztlUD+vK1fDTt5-FxoHXvRLvqvLfvUcG3fz2kw+SeZG2VkxOUpOFZK5hf
nEkOH3ah7aorfOOF5CHlFGJPMJ4oU4-yIb7cIKTZKpvnF+g6tWQZ-lTnr6BeVS2WYXfS3ZSX
hxXcbuZ3b9NDfoAD6AlfPDFDM5tGQfnCC0wH-MSJWcdXR4E5Y5BWFGGpqk3LcxTtu-zIpCK+
ueoNaxtjnMUFSv2pcwuDpmbW8EHhNIdZeOXCXu2wzIEFGKqZpbGYKhEfePHh7fb9VjgkLfyO
fkxiprnSy+aeEfwrY9JPJ4J3bgLVectSWxFOIcp6nfLZRVCNRmdBlCexeqCJpfFQFERehEPo
BeMWBPJO9yq7C0YpIr8ihhgjEVz1Trqg15j8D4dJcB57pzsEp6u+aXb2GLgI7uqaXdhHUsB7
vvWhgEffR8-mKr3keMEjcId7utp1cYNIb9EbihtGOcfXJZehfl9DbwZ-fxVomtJthjeEhNuF
T0k+FnIWswHL9S-YxIVRa45xuazkA3+T2ZKbmKxApUyNKo5ho6fda8ngMuS7RxFFRG-gekaX
zrgtVhxcF4fl6h9Wabl4LZVRALIYC+DBbL8WZInaQ-2ts6E7Ow1FvBpngWOarCV7W9VZFOR2
mv+yYoR8biU7GX5-3yS673-2yUoKZe5Db5z83bAuYKRFSEecy+WC3kNo2tv+0JvUIscTgaLm
6SS677-bXQm0i0aTgYIjCyoFItPE2YudPTCbSs0nRcPkfXTas-IG2dCjc9332gVXO0Gkzwv1
zxMJNwXn0ls44ik5gAGZFQKm55DX8qSwLtL0qO--UZbebTTK+YDUS0tctMr3IuVUKAPrXIvV
S2SAALaK+2y-SnfUoHeWcwvI08XBQvIJI7iJb7InfMMSYUwPNa1ojQsQh+LK38TKeCRBePMm
pGbUW+BN6j7o6UzZOaOYhV8daFjVaHbsrKe3-UoqiViR6tq0gG6D5yE02fOeBtXOp+dNaTQu
wj0l9+5PQAsIroNma-fP7i-eT-ii-Yx6298-GbWFLKmM9aZ9ihbZ57s980ILfmAREuBthYjK
ZwFZlvA2P8Bn1xg49sb9XealPGVLMxhEfaNO98vnRb6dO44LFTvO-6YS30RyewshfI6ewx+X
njfUsGn-hUY6e5ZgapO3Ql+9u5c+UJkDuuMzLehCpwRBmeh4heG3hMHtsjrZK6jv2SY-p28H
eJpYOZJHJ6pmBMaoT3BMf4eIeoaGpWv0UYkHWYAXHaFNYOOKMSqZ0hsL1ZG6B8fZstMwDv8K
5v9aSFVcvb5AgZzj7xUz1ejozkggCOwMsv0ew0akt3lYX3CETu8p9-3bEzu7ZXf4lutWNYLC
8kv4SceXKseX7nZKYiD7Dx3GFx28RCmasxkbniGGswVtlTC2JGI2EkgH5vPkCjGWlJkYbPJ8
j8Zd0+z92g7XwWYkuXUrVFf6G1LvdUUznGNeBJy5ZLEZhmYK7o7+NZLKPCxmPx4sW+enfWML
B5eSlOcgKB6cD6OZD49t6vKP9kap7Z3enNRAxQl81Toq-9WG2mpClDkx0AOZre8t14efK0tc
v3rWb-e+VAS8SHU5tj02aVZHssCWhx3MqMN+C3O8tVL5-dlO-FKwxu63XSwDCAk1CKXUsMCJ
hwS2qZIQIyDvAkBf5VoMG2umzN492n2zDprQCsSLYPtSlZqtcD40C1z8+mR49LJQ2CR5eHbM
IIgRms7H8ySe9MA4hN7PJcgHwJ-9y5Rt41U-iI3fe5mE8VsPgIl-LGI80GROwQVlvpHeVpPe
LuNVjSFLl9nW6EgbCx1eIrt2YSd5OaOYxVtChIlQMPpXDdOKWHj63+QHZ+TjKp0QQ0GbB77H
F9hzro6swbo9yN5jKwWDt6EX-oJwAX5yjcIzta5Ud4eNRDAg+KGwRY3ugb2Y4vTN0zyqtt8A
pmsMg1eZhtfpqULdmS-6hEnCFbRhfUx9yB7XN+BKdzGvKKBYtIZnZ3eOwx-MaJhxCaggTVV4
CuiEdBAQtIZnZ3eO2w7YMXRnTsds0LTvKTiXD-ZfluJOaiDL8erm7Avg9O-RxlOIKdcHh0jp
GhbAt6njaVCoepnhgymJTC2sunkAb1csT+SQ+wuHmzZ55UNSGSCKJCsSK6DL9aV7Oyyv-Izl
byZ5Zi8Il4gL3hE942t5fppEflOmt9zBsJKCw051TK19h0Qgxbs0-zJhxiCtx4gLe9Ea-ixP
a9+W1YBA1DNbYoEQVhUQXAIbzbbqovDoZpPzMyiSpTWITbdVu5o9Qyjoty7b9utHboUCP4DB
TKlR2BhQj5uVfXVzSft03cyFBsyF8fZKSODytbLtjcK7pLQbQg0VDv7CB6wzGyyzCjGyVGyN
x8ukHft4TuMsg+ruoZ5fvZ4qnHAbHvluEb3CTrSHzgwbtAUbt6DyqbxSzi-TDVVurs9Dbce5
3R5DojyCrfRESavfijzKpuqnjjJmwrVkwjHDtqJlLtfQicvSCaeRzOLWn8jngtujoyxxEiOT
JNmnRCVx0ymjUArhw9wsNy6tOx7xxyjKrHPXTCTYmuwSrv6sNq9GafHSVTqNI7nXDv12zemH
RT7Rq7xBlJbv8n9wcDUhyX-OXGEtQvTEKwxN3nOhtun4zFDrHrwXsYXDRShrd0TW9BPcxzuR
j3YbhwapklwQLjocmFbpE1dMJjM1uRPUmYvQDqFkNSzokLRsf4Qiyw5r5Dxjw5aBVs2zWvqi
6Zc2zkJybjy+Qz0yVMDr9QEsqnzwJop1Tz4YjrNVLxurg2yQhyNyx0swATCRzkJEGkA23++0
++U+yHiS6mJc+N-o-U++9Vo+++Y+++--EYxJJ0tDEYfhqQxjoyMT-z15QP-nS2cwJ4b73780
dbovWICeHZi5+8REpAg2Vn3dhmLOcIRGRFdk6HNAHMga0VT2+RG8js075R5e83oWXIfRgMR7
dDEfqYt6C+heLIXnvDZVawQVt-Rguk3LWXtu7rftsT4HXtwMnExwVkx9Bk6+y2yQ5XY7HhmI
***** END OF BLOCK 2 *****



*XX3402-017095-301297--72--85-24907----OBJFILES.ZIP--3-OF--4
ELwVsVC29ux-+6ExkwRDTrI4+9+utzQ9+Bk1dk3eS7WUwR5kknLZBMUuUmnq0PsmXHGEeGNs
egP5CrjLq0xgQObCFW06lGInu9334cCU2Kn5rbvBi5BYk26y9LhgUQN+hDwprRdOMpjfm0sX
N15PfdVxJEMmgzQ0L5JbDoNcWxYv01qvuBUlSELZwhz9tsNI6sZoltPYZGp1ZCHoo32XyOm3
bEwXR7Sq+Ty8dguWOW4OEIy+QoZFJgaUz6Lg929Zqn3Ybm6TnWcdHElbPlKWsvRVWpDIsVZI
-icweiMX4THzZrMFMXgx4YHcLcxfpy8XQ-m6y1IT4Snlhv+LL3j2RiaZjENJP6xFyu3X9wH5
s+0qlu06PODJh7g6DPx6PDm5eguo3xEleCf2JaC1Cyuo3v-uaBdeN50bqgNmSJuXBfuYJKSt
36uBkNVEkTNeR-0c+aRz++PluqdY2-ldPtYHapzayPj3G+HPlG0SKA5jq1H4RV5Gi5gP0djA
riCl6TWIqLiOqf9PJa9CvIGJHQA0wgdgpUc6BHEnXqcvqpI-NyGvEqBk94P5HSlXcjC3tmgn
JqJTjs1UJ6-InV3celoqhsJf1KrVqhiktlfPQyqpQRZhUavpDxc4+jOoooscq-Kd9TQIlbxz
3o8im3Ia5dXg1Z3iBBXRN0Cj9JdygMkiaudcedlBMZBpsiOqaL5gAaw5BLw6Gi4e31cv4Idd
9qoGVst6cFGBaxgZpP3LtXYvNV+VL770aM95db-TFrOaUEqZ5cDOGMCrcEEHp2sOPRgZt92-
gFQZa0Z+rWMlz280GFerBRzspTHCBv0kLN5UqHcPlr0WDRhS7tZLpq+QGjiBGHVKU0bSlb2Y
AIbgJ0gPBJu1dCh-wIzO-i-yco0g+TsIyBo6QC7iHk4VgA5g89RQG9kCb9UhCzC89I5c0tQ8
USFYs+0z352QGXdlxvMQLdYYOqvQOwhoXRCsKnh2v2j8+NzWgID2Ri6CtbiSgoJ9jJl46iYT
4IxPgLh84qo35v7fmzmph3nFuf6RMcpwUeyM9N0YfhcpxckfQdJ7PqBAx3MRqP6vmplZghij
tRu69QwhiIoPvmDkAQBq34tZghp1qhp5o4e6hU4ZqhIdY5g8l7z0gpLVBphjOCC4Stu7CfuK
UVL9IRiCwK55FehdFyuoilhEr50LuPry-I3244LHPgQsgSBKmwLN0G3i7mE1URYHtCghEcLh
VCkM7rPQdKpkhhHbqUNbGrpRqITnNivlJYzlr4cizvgcTKHP96OmPATBvFcfwLC24az5ljDl
qcL8QYIjTVULdQzN1mktmi7ELWzEK4heJpaHbLxeJsvxIm5kC7pPbh0LTZP2jLr1n6sAoDXa
hzfW7mFCB9RJlruWwbOt+2jdb14VDxk0kZKEQaoGOxXyXAH7Bv093TpVoEHDuingefscYzVB
v1zki+pHU54jTMOqURtPSDW+j7jgQhd1q3cSptRyIAETsnbr30GyaR6LzGEqahj6hHr9NQ0q
dtRu4xbHWvqhvJdRlinUD3chamyqY3JNKnBlzq-9ATV9LOmxSsHMgRrsQNbvYAnni8lH4qzo
nMhwlSkMjbGudyfA-Y42CnxtmgFL7bs1rn2o22CSeZjvD8aa5BjGFV4uFAFBVPA14atFDimR
Zz1BMOe35LDgYNVflomofV3FkS6XY9Lh2f2d-g061qWCTMeqUJ0HnJOJ97A8qxliY-yUN9AJ
i3wwxQraoBDQkeC-6dVx2239tCsHi9xkuijBcJJXVAHH1m9ZdOMPiSRYYJHNPu3hgZnaWLpb
xDdNbz8ywCgy7OjJ1jZaDePqbSDLInuZ3tnQdqWORQUrpOwphygqtPMxarWYJDHhjv+xjFuR
rf-h4agLb5WxePpRzljChdL2jjSIsNlDaR4ix-ywMcxvaAO7MNwmFSDyBapirD9-hPr1Os2h
rJUP4WI19BBlmkRLO8kZb9XtiBhvze2prj-fPyDNmXxdvyNbEfjQjX5r4l-+tBwOzZjsHwbL
6UWBLA2Rx9iz+J-9+kEI++6+0+1tCtsXm8RSSi62++-10k++0E+++3F7J2l39Yx0GfqKHsjP
FVW5LqYIGGpHGPYoKX0KZlvGGsYKSX-VgPDRde3Eu0ITMBo2qYA7ndy1GRmpRhoaIBcYdx71
GTBB6ep0xV0H55761kjFMhUxB9HX3ZchJHlxdN3Z8ot08OI1AXzD8nqD7NZtlpB+DbtQzIs5
I3MzTjwYf5ujkRjXpqJ7SiQa-N+CbTvkx2Qb+K1bhe76+6xV+TUBngRBbcvb2vHl4VzGwO9o
Yg3TATt5JpBkVzXlTD63hs6TnuRztk6nskPvWLAXUXFlHC6CKQNhq0FeCnlBU0aPOn6-hj3k
SAbZak8wXoRIBcAa9Vj4M6f27yad9GunBQtIoghCtWmPczPIdN8G8x62SAXH5xgfiIWIbH70
EpGsgdFE7zwtb3KZNdumCIebQ3IeiFUFs-2SAHF9fgD0Q-01IvV2GbsdL34pZvgWsH7SvVc7
w25eKWyt91PYyJjWoPZ4bf8tdoM3wfQ2pQCHZAqJL6T99XO3lyR89XRSWxSKC9Z4annup4Uo
VupciJjXpu2zI-rhlkSER5vrcKeB+fxmmkbvHy+wvp7JoqsNkB8GadR6zm4oSpoKRy9KW7gd
AAu-GRTZBvkyWxSK9PrH1nRB5epyiO1RRBY3+lfjkEdJ8y3kR8pGvvOVuZuwJnxnLOAoKkOI
wkT-hngqJSrW1BKx6AssDkeyeRUgDZhksxKjQevSKDJLK0lLROKygVjU8m3Pg8bP5IY1ipOf
IPLRqUWi4PPfUgCKRlO0epfRjPih1OnNYZOIz4qJKfD+i++exa7IMv5oE7JhRxQDoSL1aadr
60EunZ-pPKYXq2NU5KxjmJvMi8etffybdetdGLLROGZpHM2l0ON+hghWQey8zsJK83lUM6YE
jJtz76-y6rBNvdA1-1PNM2zxc1NPIWrL2GJoePJNM2lwLk-BjRttV8Khea5IKa5+cnBPBOVa
9iXKvpDp9+81-w8px7CIzbUMvA527IfcgYL7rsDIdFL+y2kM0O+7rQtxlZ8LPaKiWpDLSjoc
BQtCbm5Ai2uRcAPAAsENZrO0AOo+lVSbfjLCoRk3aSj8pi6MGsGXOzY6iVMrUbhn9WZALIKd
t06HJkOAfsGv+aV09na0fYogiNafhvLsFvLG7fzWApkq8PrIab5hj-NgabJfg2x0Xx7qOwNJ
2GJzLmMSiUdUr+hr-R029l8HFOhLgTFNvZfuiJ7djzKM87QPluXxvUcye1Rnpw+8yuNR4kmJ
k8CqKtHEFIL75meGlu7H-F-R6k2oZQjXMnt2cCjMoGK7Foqk1rYJQ5I2J7oaQvPzlA55Mr-w
jgxuTTtkm+yShO-Q4aiWxBR-6Y2N8AI6h4v9F+6RiMcefHiF333E33nKD3lZDIfw8hWeHA-k
+0lEwXLDkaID72xw4QrrmoZ7UYVWJAa-nD4G+XVq46YAY4INs2EjAbq1F+tEHN8wBtddgt8V
O3jh+jXPmpomRdXMY5BUPDff-T-NAqplgHZdRdX4XYXo1i+8bzRJYH6UdZSsDdbT2Ml3by6z
r2atWHBlMIe28t3v8HTjem8ZeoiObguvG9sXyLnSBO3jMgQC7bgdYP8Pl0GVep5gOf8IrGEa
BiyOr5xvrXJtOVjcwcfN90KOG5Rl+xAfK0x8zr-LZSHPYPhwnXIa6Urz8xSMHBsEPX8yljzA
dPw-I2g1--E++U+6+7QwbWCTCmw4l+w++DIJ+++8++++FIR-JYR-9Yx0Gdos0rFIFNOrrehy
rMFw4Ukl6xf7WR+1FBnMC0mEBbm0WS6lt8A-CcQYnekmi+WMR4RU-aBbAYSurlgFRpnob7on
2b6wuv8QAso00qEKCfvE2EXMGHEUbmEY+JvPoUZ2wuDdhvRSBsenvfSeupLRKrJjrLjfrjje
hNA0hqWFgAg+E5BL9bwGQhzHkulrdr42i5QO+QWYojmZmsiT9bqm4+1qvOOI+CEhmpxik96g
zybotGzKfDz3Wyb9exPLj3WJDij7z8J6A1hxreBNKSZnopQsBeEzxfDollMih0H2tKvOj9Je
zPdTqhBbzK6qsVPwvGBg6brNdecB9qnwizGbBxdTfBfsUbrxdcojP2W6UkRq+s386kwwDhyZ
w3rt6Ju6vjbxB7USrK2mEjVtxNooK7hq4X2mEwjOgx3Dr8MCsYvwb9VHicXwu+v-02qz+TYk
VRBFGgh+skKW5CLHHVzEbH54Y1t-+ZJdEqEIJgvl1+JddqC64KHDA2681s59SiaaB45aYr7n
nTnxiPam2Z61HlaY6SbqFyfiXsWJesunR4FsvJFAiELWHQj3kAEYwPNsDaBUuyGFZWLq-Ah3
JwsrMD2SA7slmi8cFFI1seb1FUNtC8YnSBqeCeMSAQ1lGgsguZquzBmyoQDlwMd6XVoWlrwD
X8x7XkjqWST3jYDIsjKrJLCWj1RmpX5QxtJQV3DyLjyZjUalNMogBMyOlo2u9mLS-dZ7eElk
mXS4EaKMgqakAkQphTC-9cDsWT6d7zeJBcDGlQZKMYxiAg8F751ax-4k0ooIXj+UazFByq1r
2808mIoxMCLh0Irz5Zj1Bto34MKSYPHb4l-BEy0wHOiH9OezLrpr9l2phGoLBQKJhRnFnrWD
4hcVH+2dwF7djw9eD8woliQAYD1kjmd3H+W5HYdA69WfZLDQrqEZndkVsCrlbeGF8y7tWpcb
7l5NCQvPRQsvj0CiJIUU-DPnEMBskX8kd14-h+cLo8pRWIAUTibjhuXGysLc77C7HlV4htaN
ZAEYJlrwH7tjj+ZmsvTUBcq0L3EgTGdpPVSyVSo6sg5Po7HnPs8IQsk2VYXXFoEorE9BkQ7K
fWfZ2Qsmg7zjv1patDWVssT62Ef15u1s5hLCKPkAMM1VjP6n7k92kTBTDcBKEUjC2Ie87BCr
O+1QN13RIuOLIgMViYdDIYPVaO0Cd5k9iLqTmFY1KyPiiEAiQkHeygREn54cis6x5al7oSuP
s+xeBQ0esiDLZAZKOcyn1DVvwTHTzkGpDcOVsGLmDS42KrKHKLOizPfIgtzfjAuToh6+jFpd
vfkiRLS4y2VxjpvwwkEFHv3XMMQZ5qo3Ho8fU6Fk59VU7cAHXkABHXyuZbWAkGagGkf45SoV
beb58mQ3ySBUMCg9MIwzCT6uNopkw2QKTlSbvdHnS-ncDxMYSv9Ju7Uav-0Gc4Yvc6roAmcR
CXOdibAi2QI+izi7NE1xdy2G4HJT6DhdNqzX+9e+tbz42WihsXkwwkllynJG7WhLpQ9WcqRt
XmuonAC3JbUA6RheCMel1AGwphZW51nAky-VUndsa2guqg6Dqd+XCcUxDYfB5oURF9dRmWtp
pufGse8GEcJ0TIiwz9noRTrLpBEkEBlt2SKIigAo-FU-V7O7ST4s5w3xpN-I2tRN6qlBZj82
vLZlvXl-meDPwkniD1fOXPXqraWJlhWH5tB8eLX8SILTzVKfz+FT4q3A1QX9qO36tMPAQfeJ
1zkCgfifbd3C9qqztes7nmsDhzRb1jDRMiwQPrh-MXILpp7T26OhCZ6S1YsBjO4Psupj9GEp
MLxPzHY6la5O2-0PDwTPtwQyQ-WYgojPyxrZsRYpsTNfaRrwQ2XXwwPA47yOQ50GzpAY1W39
tBLL4uW5oMjzHmZOubiM30qO30hXIUHbvTlTGS33siyYG3ASWO0JBKjDwMOYeqjZvCMewbPq
VGdiykKKtHkwyb4RT6VYbZjaHi4s2eZPOWv0W3IuUqgmtP90oe6GNGkQ9VRDZn4DZwIzrm8l
oT4jW5VNyPQvOrTT+iITvsWx7Ojq8OZEIJMLCIOeSAn8D2OFagVlXei-lXjG4Ilg7K8DCBMz
KNYA5uhDxzD8R3WHwOLMaW45l-Pn4nelRQGDMsgLlzYmWftcn82HKn-138qmS6TrJekFKuAf
wzj4A4-RtWcisu81WwUioqMismGCaZq7fr6SkoXzL+sOexbc0VgtC1bPt0TPleKQnoZaHXKL
***** END OF BLOCK 3 *****



*XX3402-017095-301297--72--85-25580----OBJFILES.ZIP--4-OF--4
rJBx6nilUqmv9iJo6QP-NLxKTJ5nqnVHGN4m5Wf8HQeRqtV-35xMGBCXxC7o9EoMSgIHlwPI
UsMWgzXcepnFeY9Z+JVRMKPefcaQQMHmq9AjHHYMNWML5z1ZXFXAMi7a9WEyAG6vvNlfdjzH
1CxKYVwtuEXutIX-W8B5haMtCAx8ms-ojfqTJSjG8afxHRJgevBeSgBoa0kw-DOYiW-ErXER
RW+IHBvN-8FCrXWlEvUTUc67Hz7La9eeC9+jBohugvGGaeJJUZaes39oPxOCAHbwGbiLzqhg
EKm1q+9MPa1v0ZicjKjLrZpAbDBGyNWAGa90FYti9WwjBvTjqpWCX2NrtZbaB8KFVasAwb0F
I87oHO0VdB28DLe9p8ag7R3fUjXy9N6KXRa1h8WsJ3Z-Z1Echn2f1T2pMPIUsfUaxKVfGlHb
vH7ahLpWvntFuSlxiAAymSmOaGxSLF2ANTGnMHGv43ltMzQ6A84tPePgmVhjJpVRIcNG0Qlz
3oxczeiQ+QpvZFAExRootEi6tcy1h8F6fEajIWs15fCG+FJjtMLLZ83wpzbO0GPTNOYv7Zzj
V0NTmHup64kN2-KldpANnEifMAwESoLamAvOASfUFjlaQOPNdThMFRZF3JkSzC8ELWkRnyWO
QqjFHRhf1lQnbzcl4ViGK9mRmgRelcLzOcqgFO3QLAVIcC9JGBjUOdgAeIM1Z2GHgpUyNZ2T
3TztxeF-KtZAC4cckFnisQH9YRDOl9GsELkJn-sD7WYNsw2s7Kowa8mY6eU7RW7Y3bJaJs7B
reyTQpfPtE-zY5FQhJkQB6hDNBnd4DHrlzJ2qZsPWfskYYRPwQbtUu9gv0QTIbm1bAM9a3kE
CPYpMPxyNSmpcanJWQrb78NMGCdgyXKJZRzdL0YjINRd7qpwavcHzo1XCfPkmWPeBVRHbz+m
-SbfiVhC25r8syDWID3VJLrqKLQS8CzFVjAYgpI14aqoJGX5CrD1tuHltlFlBLW1LIx-eKF+
9RUI1nJbu-ldZVj-KKJiYsoqZB94Qhfk5ALpIU2wyKHxiCd6I07X2iuvyqLezpGKOV2hpP-5
CHt8r8NpJ4nHoY1wWI6I5ZJFzYXFQFEFJbz6qMIDeGAly-Bb1ivgG38GcJeb96HU9iKbIAIf
TkB85UHR1HOu73hMFloDBNHHdlM8dPHqjcOTomI9VSScX7BDgIZvjwIfBvl83y8sqeXWAlAH
XD6NRt+4rWSmwWxQkneO9KmWReCOi6umv8Bwl3Zi-5t9tCntTa7DJuE6WgRobWMqIwAtoKxq
HRCaRAfaG9+z9x9g51Qs2WkbwyySnE1zkvBlnmyZUIQsNHObZ56lNhNvaLpCLbjYFzXwwOzs
M4tiJi6Uy7Q0xznbOC+4AHiT+5jgUi961FQfAq1SmMNLu0cqsNWQDJGhfzQNwdQ4-mjkDK45
gCKY9H10TLRdAIFrseUlNDCcUNzklIeTmWPp6Mp1FzPwJqVp4ls+MyC7Mvu7yJL57+dSpi6+
iN-EUoEla-1+nC8VcMMrBR1+E1bwTCYD3YeXIa-sfrF4WW0CjNOW-+m-MoC61FWuT0qyitEr
cg7m6Njn8UrCnYOxekGoGi+J9aOkOTQMP-orQe6CSzFmnQdsQvwe-2yBb00C2lPj+Y4YxjU3
kYswv+L0KrW-RNvVa5SfETD60ORX1l7VZcWSGxHgtcmNvyDPIfDyblldnXCYzYtWpEDcApes
OD4VlEIy0W-EcP7+IkBfJQpw0siXhZkaaNuXxI41VbkkSvUuZNYn8bHkSui4UhoSPYL6le9N
DPyOsWuB1ifCyFJp7KuZy6a+8+RhL2QZF6a6iegqig1iZuVJhTD-Lywg8aPVX6syfoB8D20K
pXRnvM5qkCXBxfvqjePT+rx-Gd7KQR3D2o5w+fwEPvYH7SdCSFAzxv6HruMCErP85n-7ShEx
Pp5dYwbBQPoigoWPTYgD4D01gAjjxrRUyk7PixzjoiR4qVnLPKhEv9g0xMBQj8cINRcXIiLA
Bq6joffpvbnCbIzRyI8HF+xEjp8hwybJBvIoM+nmDXokFcD6dfm0LN5vGE84q8LV68xwCGmS
ZZi3wuG5ADmIujgMg3M1Yec3-fF0Utzc1B1sxlFnppkxB9uWtHKVWnFiWcsuGCCf3CzbAKxA
0hoBUvVvkY1oFJw4i47pu8sy1s-BP2P-nVK9jP59ghUGggY5i0-rk-+vtSwDQVbXf0pkHeWC
-oi80h5iv11u7piwQTfQjhgNLURbuJWBrp4lPmJx+d1drrwu9K5zJbXUA+l-7+rVER76Hd9v
cN9v7PSBakdH6IBUnuZk09dV7HQ+QzbPr55iAH6JrcAQIY1akajk1z+Ej6lIzrpR0FKk0Shw
K+EfM1DwXwI6VCCdHh+Pdomx9rZOmjolF97ykQ73qRMbQVMX+jwMoiDOK4w2z8QcBFIFq2Ae
9+PwZBO8EQDwgD0EADzlfDEhuFPwBkXzdfY9njjN1w153qGZgrxkdX7kxRrNx4RL3em2pKE1
QN7rQ7DLiJOhnLdsxTFrdVUACrQmr3f04gDZaSvWSUVf14TwuMyj6reWTtBzZzy+zlBDGDdr
+egekRPKhWIwBjOx4ckmCde3gt1+B6hDIZxTb7OYtsbHqngo3cucnWLdFUDZW8PrDFmXXJos
XCZ9b9rBxTf2-lRg5hdWBGJhZuxwo95yU4rifaRIZwj3Khqm4OadAtPJhQq9JWSOZHILN4VB
XNKvz4DaHsm-0nPsT-4T1w6y5zj-BdzDuzJhUv2qbwzLBUMFfnTgxINWjFTbjKRxjZfkOKEy
q793mVMk0M9UEndTqzaVwqoyw4cZ+ftEd6ihwpoPuIN0lhz5pf5BB5vrvTsb30YtWVOWMW1P
hgegp9Mh2BPMNs2jFeNp4lOkjWgGEfM6c+PsJxp9pZFogoVwOZMZPajJm8nUFHPl+UzKS3Og
afvry7iOZNIO4qsHOZ2hpB9birO7kKW5KV+EunhPcw2FV2pNqnFt+4cF9KnHpiDyeP++hvT4
yhEVfpSnElF0D2+PgkDqoTKU4K7P39tqmQjsAMM+4nRLJZOmSGxO+v8ozFt2a75JFbjIbzJR
YEqgrl-JGGB5Va2oE-Xy1yISBznDtGwWVzxLz+REGk203++I++6+0+1sCtsXw5IVNtk1++-l
CE++0++++++++++++0++++++++++IJJ7J0tDEYdEGk203++I++6+0+1sCtsXA4lReBc+++08
+k++-k+++++++++++0++++10+k++KIJH9Yx0GZ-9+E6I+-E++U+6+DUvbWDV56w6kE+++Bo1
+++4++++++++++++6++++A22++-CHmtDEYdEGk203++I++6+0+1sCtsXHKKy8Kk++++K+E++
-E+++++++++-+0++++0a-E++A0tDEYdEGk203++I++6+0+1tCtsXpTf2Oak++++K+E++-E++
+++++++-+0+++++p-U++AGtDEYdEGk203++I++6+0+1tCtsXh4lBrro++++K+E++-E++++++
+++-+0++++12-U++AWtDEYdEGk203++I++6+0+1tCtsX6te20b+++++K+E++-E+++++++++-
+0++++-Y-k++AmtDEYdEGk203++I++6+0+1tCtsXzvPDLrg++++K+E++-E+++++++++-+0++
++1r-k++B0tDEYdEGk203++I++6+0+1tCtsXWw0w4Ls++++K+E++-E+++++++++-+0++++0J
0+++BGtDEYdEGk203++I++6+0+1tCtsX1XFwAbU++++K+E++-E+++++++++-+0+++++q0E++
BWtDEYdEGk203++I++6+0+1tCtsX63WVWL2++++K+E++-E+++++++++-+0++++1F0E++BmtD
EYdEGk203++I++6+0+1tCtsXfCK1dqA++++K+E++-E+++++++++-+0++++-Z0U++C0tDEYdE
Gk203++I++6+0+1tCtsXm2XWvL2++++K+E++-E+++++++++-+0++++1f0U++CGtDEYdEGk20
3++I++6+0+1tCtsXlccmtfc++++U-+++0U+++++++++++0++++-z0k++IoBGHolA9Yx0GZ-9
+E6I+-E++U+6+DYvbWBklQ4sSk+++9U++++A++++++++++2+6++++42A++-HEp7DH2lJI0tD
EYdEGk203++I++6+0+1tCtsX8QsxmLg+++10++++1++++++++++-+0+++++41E++IoBGHolA
F2siHo78I2g-+VE+3++0++U+yHiS6xKumWos+U++NFY+++Q++++++++++++U++++eko++3-1
EWtDEYdEGk203++I++6+0+1tCtsXyi4Bb7YG++0VKU++0++++++++++++0+++++62+++G2JA
I0tDEYdEGk203++I++6+0+1tCtsX7KU-Y5E4+++i5E++0E+++++++++++0++++156U++EI7D
JJEiHo78I2g-+VE+3++0++U+yHiS6wWbLbfW-+++Ekg+++Y++++++++++++U++++MWY++3F7
J2l39Yx0GZ-9+E6I+-E++U+6+7QwbWCTCmw4l+w++DIJ+++8++++++++++++6++++4gi++-3
Fo3KFo2iHo78I2g3-U+++++J+-I+KUE++3Qy++++++++
***** END OF BLOCK 4 *****


[Back to GRAPHICS SWAG index]  [Back to Main SWAG index]  [Original]