Contributor: STEVEN L. KEYSER



{
JustOne v1.1 - A Delphi Component
By: Steven L. Keyser
    email: 71214,3117@compuserve.com

JustOne v1.1 - Added the ABOUT property
 (1/14/96)	 - Eliminated the AllowMultInst property
             - Eliminated the EXECUTE	property
             - Added JUSTONE.HLP
             - Added JUSTONE.KWF

             Notes: The ABOUT property was added simply as a learning
             exercise.  The EXECUTE property was removed due to an
             improvement in the component's design.  With special
             thanks to Russ Chinoy, the JustOne component no
             longer requires any code to be added to the user's
             application.  Dropping the JustOne component onto the startup
             form is all that is required now to make JustOne work for you.

JustOne v1.0 - The basic stuff.
 (Oct '95)

    Purpose:	JustOne is a component which makes it easy to limit the
    number of your application's instances to just one.  If a second
    instance of your application starts, the first instance is brought
    to the front and given the focus (or restored if it was minimized
    to an icon).  The second instance then halts.

    Credit where credit is due...

    Some of the source code for this component came from a Help file
    I downloaded from the Delphi Forum on CompuServe (LDELPHI.ZIP).  This
    Help file, called Lloyd's Delphi Notes (Lloyd Linklater), lists many
    tips on using Delphi.  One of the items addressed is how to add code
    to your application which will allow just one instance to run.  In the
    Help file, that code is further credited to Pat Ritchey.

    I took that snippet of code and put it into an easily re-usable
    component.

    Additional ideas came from Russ Chinoy (RC Software) on a way to
    have JustOne perform its function without the user having to put
    any code into their application.

    JustOne is released as Freeware.  If you use it, you do so at your
    own risk.  Feel free to modify this source code to suit your own
    purposes.  If you enhance JustOne, I'd like to see your work.
}
unit Justone;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, DsgnIntf;

type
	TMyDataType = record
	Name : string;
end;

type
  TJustOne = class(TComponent)
  private
    FAbout:	string;
  public
    constructor Create(AOwner:TComponent); override;
    destructor Destroy; override;
    procedure GoToPreviousInstance;
    procedure ShowAbout;
  published
    property About: string read FAbout write FAbout stored False;
	end;

procedure Register;

type
  PHWND = ^HWND;
  function EnumFunc(Wnd:HWND; TargetWindow:PHWND): boolean; export;

implementation

{########################################################################}
type
  TAboutProperty = class(TPropertyEditor)
  public
    procedure Edit; override;
    function GetAttributes: TPropertyAttributes; override;
    function GetValue:string; override;
  end;

{########################################################################}
procedure TAboutProperty.Edit;
{Invoke the about dialog when clicking on ... in the Object Inspector}
begin
  TJustOne(GetComponent(0)).ShowAbout;
end;

{########################################################################}
function TAboutProperty.GetAttributes: TPropertyAttributes;
{Make settings for just displaying a string in the ABOUT property in the
Object Inspector}
begin
  GetAttributes := [paDialog, paReadOnly];
end;

{########################################################################}
function TAboutProperty.GetValue: String;
{Text in the Object Inspector for the ABOUT property}
begin
  GetValue := '(About)';
end;

{########################################################################}
procedure TJustOne.ShowAbout;
var
	msg: string;
const
	carriage_return = chr(13);
  copyright_symbol = chr(169);
begin
	msg := 'JustOne  v1.1';
  AppendStr(msg, carriage_return);
  AppendStr(msg, 'A Freeware component');
  AppendStr(msg, carriage_return);
  AppendStr(msg, carriage_return);
  AppendStr(msg, 'Copyright ');
  AppendStr(msg, copyright_symbol);
  AppendStr(msg, ' 1995, 1996 by Steven L. Keyser');
  AppendStr(msg, carriage_return);
  AppendStr(msg, 'e-mail 71214.3117@compuserve.com');
  AppendStr(msg, carriage_return);
  ShowMessage(msg);
end;

{########################################################################}
procedure Register;
{If you want, replace 'SLicK' with whichever component page you want
JustOne to show up on.}
begin
  RegisterComponents('SLicK', [TJustOne]);
  RegisterPropertyEditor(TypeInfo(String), TJustOne, 'About',
  	TAboutProperty);
end;

{########################################################################}
function EnumFunc(Wnd:HWND; TargetWindow:PHWND): boolean;
var
  ClassName : array[0..30] of char;
begin
  result := TRUE;
  if GetWindowWord(Wnd,GWW_HINSTANCE) = hPrevInst then
     begin
       GetClassName(Wnd,ClassName,30);
       if StrIComp(ClassName,'TApplication') = 0 then
         begin
           TargetWindow^ := Wnd;
           result := FALSE;
         end;
     end;
end;

{########################################################################}
procedure TJustOne.GotoPreviousInstance;
var
  PrevInstWnd : HWND;
begin
  PrevInstWnd := 0;
  EnumWindows(@EnumFunc,longint(@PrevInstWnd));

  if PrevInstWnd <> 0 then
   	if IsIconic(PrevInstWnd) then
      ShowWindow(PrevInstWnd,SW_RESTORE)
   	else
      BringWindowToTop(PrevInstWnd);
end;

{########################################################################}
constructor TJustOne.Create(AOwner:TComponent);
begin
	inherited Create(AOwner);
	if hPrevInst <> 0 then
    begin
      GotoPreviousInstance;
      halt;
    end;
end;

{########################################################################}
destructor TJustOne.Destroy;
begin
  inherited Destroy;
end;

{########################################################################}
end.

{ the following contains addition 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-010809-180597--72--85-23579-----JUSTONE.ZIP--1-OF--3
I2g1--E++U+6+2Vt9m+hRtapiE+++5c4+++9++++GZJHJ2xCFGt2Ep9hXnoCkX+AVJwvI2N4
Xg162JVM440Ur63Xx0URScxat-+QcWAGHkdBofysXO+XIdyR5ryCP2T5G2yrOrct5v5Tr3T+
1g0qKF5KA1f2w-KpZx6umh6Rlie9IUfeeJ+x0WlOhCVzJ9opWXl5ZaJpd8p1OrQMAuXSYe-S
pYOVk5tWJA113+b7-SuteAn+l+nEk5jCezCnP3rOhWGvDal4QNZyf7OvaADq5GSH8IvljQ3v
ihtH5q9mXQzE-p-9+kEI++6+0+-6SGwUzS1gXW28+++E2k++0k+++2dJIpFDHYIiF2BJpJVx
P3DL3HzLTiztCRyVe2pd3tme63d-WYgzEXxkgWGC6I-GYV1O9GAaj0N4WNrOns5U2h64I+62
7f300aipOVIPUeVzg88qqi-pclrhVZEBOIfvFsKeJICXe7CaTeV8szrCTQyCknNdoWNBSy5s
rDBlnnrrr5DiDKpRPNiTw5p0bPHEgxjnNwzbwax2DufzK8zrRfceZ06eQvDCCyumSPiIIEet
uBzyViHj0N4VCsFLD+DeXpZC81huqlYRQxhs6z0LofRzxioH8oEiDLyCJyJWdngnJXpfYUYn
3XK6jXXsdPqAefIA7YmXXyW-6WwMy8TeM9KNYRs2ITJoiTXGNfN5ceq1zEOMCndLkDgAgnYS
uk9nwux0chlafXAGWL+rOruriEDSARBHqlhC77XrlREn6aEfBgH1zHoFbjrdlzh2VwqgXILB
S6kLDrbl-492H1IMWzS-QnYs8TPNxicWsRtMBrVzySVhQQ8SKdTcXeuCaYwHjTYCoGEnLTah
ukPfkaOMTPwiPZ+uXTU61jhLEfUoV2+s+LAfuwBxVYto5Q7TmZ0sx3MCKJDIKCmuEJvm9ZBY
TCh+2LbL8L8WHSbYxWkE9CplvLHhKRYXZcAryxb5ICFELYZKiXy2zcUKfBYGGtfu+dUuv98L
JfHOi-2q1LxN0PUTO2j7IwXanYZj-FLZxEWlouJsuck2sXLsF3YNx3mSuPGhxq2q1NHt1P5K
K5DQ46X2YcbJoMENXbMNdPcDyWwW+9OypoaHQmv3qx6Hqmsx8hKLECYJBOBIuGURRVKeIY5M
nWt+K-bgOB+ko90xje7jA9cXm90so7S1xgU3ZNmsH+eLqVleLpwrtiPHwI968Mhm29O-yaWm
9tWARcbw8h0ZCEOS3Llsf0ZsgdVPN+r8zu96L2KhAX6cWrsXPUtiJavEvH7l4i1o9WIrQKme
ahni6WZxFHafS1mLlJ9kb3-aDnhlfgW7oovw38JyOwEg9Ej-YYzJbICusYXD8YdVUq5Ka4Mw
gWJd4cbGgaMcDesKC6fHmZLpgVBY84sAxmOBof7Bo6adRncuaIfEtDVSpGuI3eDruFcB8l1l
zZXsZBckJrX32M8ZPH+GmJtHdBDAt2JtlY3pQCuAuLyMcSN77fiUoLZcLtwvUtBqgOkyhvgj
oGocnFlKDuq8setkD-v-FPEtPdX7S5E8SJ66pExIIR6JulyAFvdvnAq7kPshgJuKbO9ABgYN
VPECPNb4lhiXKmjmN8vMSSYiO+r5ikoHxxzKqDM8HMcs-rBqyqqOaNmXRqVifvnzy66F5ojy
a5O10aYqeQc-ryRAdcKGNcyGaVrPQxdDhHbvti7qxdrDVQp31FT3H7cZv88xYQzhOJdBozOc
2OwcEC4Gj1Yyof8q1Xiqv-Y3bXY9bQgiF8VBiw07TD7rYyBtdsCP5Jl30MafeI1SJ045Ly9A
wnbo2UTPpyGHB02jYAScHC9joOX2RqASsr7UzccRe+1BAKgLPx+ms0TUFsDoNcbof-tqys3P
UDQ-9sHywNk9i6em9lwQa5rlveGQZwsab-RCcNmL1TKFTR2Ua5r7EAmyM+dZLWsINzP3wZ5C
GzJvmfn8GDFZrjhwyKjOKZePphRLBhSog8ALNNZpM9ENPsXvBcJfO0j6Pd08si20uMLx82jb
8Jk+0TkBMeT89PBTjg6rr-XCt00dd5nb9b7l4Vu-cOBU3WgZJ5k9SK4gW5DcJT-zFbaYeDB6
8mUULS2wCEji9v-KuGoSmjDEPNkStw4vk4gL3iRQWNyE5xTi6vWT5wJZ4O0RfVdYKWoGeUvN
Ksz81S6p0S5OPQFpjlvposEfg+pvPQTBgEZZzmH45FVjlPULyUZQ+2YIvrNQ+XgkPklnXh+R
KVAh+rFc9w1iemWJYpXb95qYwJfb8Jfs68pKEjEbJlApifQ1Rh0PyW5EFyVyxkioKnx43QIH
o5YNJxUdXAzFftErsTx1RDnC3C-Nk0v+24+rM-Xk5C-tk+VU1nqty6HITwup5h+2C28Pxow+
buGXUtBGJhYyEKieXtBSRMcOCwzEuPqHS3FSYn84Pvk-E0qhelo5DYipepubPOigfDkHSZW0
RixSWHxHqyUruWOuBvwHS0hhI5hc2b1VvYC67wSm+r5jFBlE3cXV3OI5i-SlX65DgRk7G04S
8S-b+PgkrUIw-1k2j-gkX3UD+nw5S-vwts35+5gkrUCw3vP4+MRUyn1KDM6fwlXCN+7k54T0
Q+9bwl9cZm-v4PdwFXz5qNo0NXUBC+CM-9k4CNzRunX9Bn+yHszUEfUiFWZ+ez2QXZ6PDILQ
Swxy0kHx3vtgcyT7XaMPhom3qWjZBXiNJgTiVatyfTyHvuMqkbAHDOgsqxGrXLquXGsCOJcv
LrEoxhh1jrO4vvqjo0LIufj-RBryM7d7nl7dvltAic1JqWwCtKbhDKb8uVQuMT1t-jmJTZ2s
jwMLX-j4xb1Qw5L3yjelNBHAewowd1tlOe5Djr9ZUojtxm5TZY3TWqYA435TqYdTcn4MAC6y
MpZTCB9fSxVzjzy-mVJyzwDJP0U7oM-FWS2Zj-PGaT5nZ9spuoqKYf9zHpMqf4f9qYVLctoj
ZlGm3RwUSUg53dkSqnUnDXFxOzgqSyQEEhHQbcC9gcFhwbQ5drtMXoAgDnEpwdZjMzivkKx3
SW-jqnRGz0VSxSFxcAS5DcPJQhgX5gB8iKr0OmI91kHnY1W9lpFAdzr-PnTzMDndaMIRuxvL
NBvsfP5UH4PRwO2NNnwXEnBYyh61AssRgk1XPJt7LRQnTBsp5-kSmWBH5zZAZwnoE33ucA-j
BQzauwUez7WZgkmz7N4Qu1aAbMlQp+s2hEAPxTTSnqCHQuN9BRJNIPitb3dfyjhv6ppVAl89
AXpeQHil3fWAy1IDK7QoPXM0pUT+Gs4bBCsA+hNJs+S+fqbQB+GgfnJiIU6KSPX30JUuQ-pk
0L+6i3bk0lykCcJgQOkZO3alViI1bUxQdL2f39+aiBiWoKe-lYY5xd9h3nR1SN1vLT6OgOud
rDmAKW5NAcpOr4Mh-SMatn38KJDGztFpJPNK8SgOwHtGZWvMztFJ6hXzZ3IaqDyIhJmkrmaf
Gf1T8EgCQ6jq9zlAmLLNnp720rtOpKHnOzUzUs0tVwo5bxitKu5bZzdYQTBpCyWJk1gQSdyY
WyV5Z4zpMBu9YWt-dq5HNlntKktxkO2jCzET79q6fXfodt7SHbxnu8wZTHxdkePnVHrzRcQi
ZzE4KifETYQSQCUu2PAgl9o7TBtT8Sndxfu4RPaTUDIHbDAx004TGmLGXf5ToLj6oJh7D3yX
JQ+Qfpfk4EQFflocyYNON2oJg1qeRgDTVO0fj4ljhBchaxBwWzxToyCUeqEyX+sn9cHSBOlz
4r+nYaAFg6v1KU5ASTkstsj0SU4fn0BPPKZzAQu5qqszbvCoHr6RnZiTlnujjmdgBzDx5J-9
+kEI++6+0+-6SGwU0-k9azgQ+++BBk++0k+++2dJIpFDHYIiG2lEvLdtM7HJiTRnrdZA7XBN
7U2G+U2C0F+06In03UVYHm0EY027CocaAqwmEmMnkmm26A6Y29Oec3G9haKUOjJWPOqUSChG
p8ehIh0KihM3o9fE8fPKGeLazgvvnWG-vxvjuyrLSxgzyg8HgnzPSQtnbbDCZ8nJo3e7e+xT
kWmWSiGf+JF7lDcMoFuuVEvHLLG2Xh9Xx+hubRuVrt8F1K3dP-EPmuOl6ZPCOhZONaBShdZp
gprg-bM9itIRMjSkyxUlxWDq35i-bKCzMFTMlynrv2zgGq1KGMZGWdEeXN8mdAbGB8Z68dBe
d0LGAaaBN7LgYZDeYBN9EKaHh2LeYLeZrF7ZyqFzkCCH8Mzn7cTAzGHP+YuDCvSAvDOmMA1V
wJ43dwDfQQhi8O+r-FhZrkONJrXQ+Sg2QfTJwY+-NJjQUT5YdofNtLIs8s53tbBu3tdsBLZw
r0s5fAt19hbC5OC71uKEoyoDK3qi0aX37wiRJdwg9GWYaZPStEbm4bSfdqNAApx6ELyUrWoj
L5eWgOZyQJJScaKMSG7ryiCwT74ZmK3mydTutsOKmHuRzqiaJGOfrGvPBJfuUjlKZxxX7JSb
hQhjRRh1JezLtPFNyonIsjA2qlk-awZXZqqolCOHxLNbs4QKqSqkYhgaRwXmFay4mrc8Qx3B
LdwbovMQWabxa3eRtDA5KXqyJhxEHsS4r3CMmyggh5bQTqbKgYdmijI-nvfrm4hpmFE6m3uL
PDLft-f92j98jY1LI7yQmjACAszPDjOS7LtNtXwlyNrXCfkjIB-rDEKgiPv++TNBthCGoqzO
Y7xbpZ-ydsCQBYSboyLe74T++SpoSR-xedNc+Y-PZ0BdGPhdia7czFwdLlzgX72FiO14e5HM
L34zi8ZeFFAxCsJcQoLHWjeuAUgxZs30BJdcn2XY3WojPqeceW9588JEKRNIFdDIjCWxL4Eh
1dzJ9zj7-CGP4pQqBZLJoIout7je9HIJR257BhKeW9sl5eKK1XDxQEOFlo-uUVUy+mJFN3e2
gFYcXXcRY3Ko0rZ3-Gn2omYepg2E1-F9A221lNBWDNUg+yYcc41o-RptcZHX3eK+klcEuE6M
cw1HubH7iK7wk049SVgaru+eeKeA1icqE2qhEFyOTE6zf+746RiXy4D76V14IsAnM5D6LEed
iWs1tATo-rnCZe+eEmlpKc5AE5tbVxTJ3FoTFpuLJP-v3ERuG09OMwUegDjYcBzOsY716Xec
0ms+KgCcn+tyEA5ekUepihgJ4h3Qty1aU397qnkwsC2BEPyTJnWQPYwLbxVEkFgxfE4lpb6s
n7Xv5JOToxr45Isz3yOjK5z+ntJdsCX4bKuP8sUpVEkEcthD3YMhkp26-U6F-bHItVaM0Y3I
h8doVQkUPO+2ueQiug0+I5e2-p5X2BCEF6As4KEHgMG-uhGf9+ZungVYWs30Smdj-YcblHT-
WI2u87mfHelTzEO8JgGHK6T0KEVAOjccKFF2j3KKLPkJvYacIX+e0yzY4x0J4wd0oo9JGo2d
BE2s7qvZmin9j5wCSGTKvY-xkCdjnyKk4KvpwlfigA8PUUxrfa-Ke-os3BS36GomL6aDcwHV
m89pTUzosp12wr-kurAfIu6bkPCGUio-uvg4VhsYfBqZ4EOLQDR9TnNfYGNEV5Ii3UddG8gg
0MYaxnRIS9lRDWQQ7jwyntsx6lRzNj8K9huMJtirGCvmmnuODdFcwZ-GxvdsWblf+DYIeLJE
d6Gh8J6Zj7HWdtGqyk2rWGOKG-ODrob0adQvrTNGHyT2Uiat2iLfnKOnpdmTaxZ-JeQvAuR8
X-g-W6wWa0MmT4Nc7cII8Eu4B9G1AjIVUNXo6GqKJExcBbBC91C4V5SwbVDB2Aq7IJPC+P6-
7XsuZ33dTWkIkkd9unRUmrD8IaSdWPv5V18Z0BAWgo1E5LthuBxYqaHdCRx55l5hvXZD3tPe
CBCNdEGnNWU5MHPSmZY7cuqR1hbBqJHA1aQvKK2iwEtfiynbnZ0+kzGuS0fdLQuC-47-Rn1I
oE61w9FC7C2jgzqQfN1wrAGiwGUqlv3dBd0HNOvAt4mqQmnK+RZnCQhewHapvXMn-RYWhd8h
AkKN7NSrCOIBuwkgqCel-GJz1gpW+HTrBni0ACIECo1-IFNOgQMwnvn4qy3o5r7qP79hRtag
***** END OF BLOCK 1 *****



*XX3402-010809-180597--72--85-37606-----JUSTONE.ZIP--2-OF--3
HpDpoiTByOOJn3Rbmhf5iiIBPtYcynejpVbs2PYxjUufrgIvrlz9sNX9+oxWLq0Ht92p-SsI
QfaCoJ3H3Ygdjasgax+n3ajH7-NbVhYO1CWl1CwMWlrQLpMYkQqoSisPewlXEaEeu2YdMYVG
I1BUCrqMCvKB73FLusHhH0f1rr2IgGJFfsnY-RfEUVKNog4S4YpZG3STgiqQxfYZYlRkhhYV
ARSMn5I0KEm4D0ZaosJJA3ZM2-wLActdGMax8PCbFwdYPXbxL59EzlRyG4doRcHUrfbRNvpI
eWxVxKZG0G8pRqPNTFvjw7Gj81Qnt+huCOjhiAG4kowr7SQnnXfHDaTmqDfYtKgmSrr-v-Pd
agmuN7jb4iM9YUoF44TRPGMDxkHLGfBQ5eqbrNAWr7CH9InlyiEBHYxkJdiod4QViFR7vU8z
NzYGDenVJcY5Iceg-IhWuuHsn3qGkyc8m9ykboha6s7Iy5X85ibfbRPeQiTwbePQzNaviZjY
EgaSnPD6a8VN2P7AmemYWAIf0bh+elN4DO3Nz2GX6xyV4KbpYQm1rXOTpRthmOlbaz9mwbuS
FPR-OOy7KF+8ImOUI0WhC5GoE9AU2B8LXBCNEr3XatdR5ejxwwnNf5npQYpmHKJJmN-+v-sq
V8vHK3oyqLe1jSjLvBbA99NdhsPrRg1FjMesGkzTaEmRPPBWQQVyjvJB7atrKZqSBetjwKlw
Kf6XQbXaT25bXooRHjxwLYUV2KMtNLzhq8RmrhJsqepR9p8gZhgEMfFDoaPLoDn3xEpJqPm3
-kA-Xzg09rCJrHyqZrKvtODHT0OtkvD-lc7grdBqA9jJNcLaGAeuGGhjZ4r-EBRgtfNjo2tX
AqDQdi+lTz+CHJSftcTOuiQo4LYJ5x-2yWLNg3W0jexdeK2pdsSpqruWSMvpgeZguqRIq47h
SIhOZn79ur7KhgjvVyLbJPKPWmHGXdgLRK70xxhoIJRtEfXXW8DgulCKjUoCbJs+f-eCe0uj
QWdWGS3v002NJIQPwmS8ZO4NwqHXGabIYsoliujavTidzvXcRs6W-5dWWQO9AVwSuaMTx1uJ
BKbNAwafvlfWTJ+f-nE3v3LgBZrQ2pXb82cizbNAqNaMAql1jBBSn3MDOQIShRphil0nkSff
4h3U2f5B9Qah5hQB9gyca1vh+XzDof4b7BPP7fhZLzTagSqmvCLyRBpqZzIbadd+ZxRIE6FH
2G6PIdbyRn-2IsHxH+d7Yx9H4eG1Nvin1arNTdPhqu5RBWGKeV512Ok46GF+dcUI2zJoG-Ys
YtuTyO9aYjPFJ4sdOuGaDMt1ajJndHeKiILLj-8b0ZigveGKTwOuHihgtuGpx6eiNc8NJpMg
zHbxNjlp+ZwjFFWtIkzpIc1cPX8i4SitK4FeuDph+JgfyP5zXoySIDC+N2lpiZyTYAJq9KJP
oqCl+vQbpxSbnFeTcZgJKxj-wkw7VBw3HAFiH-JlE0Wq3wveBZrQp9moO7DZdJ9v2ArOwRRK
NNShe8nArdrxPwCixQNqHSMaszXpDsXh518oHRvK4DjywV8LgwLrCGAygO8ynZ7PIpeSJpZF
awCmOmaWh1g3XPqUAILECA3KvTtoRzs0Sup3Bxr8NwlConSmpf8ROBciFUVaIUpEKtskD0ai
xRDYZwgK9OyihPH9LKPSuT2RpfMmqTr9stfPx8nrEdfh6KZxaHSRpPEw7CpbvooDTewuTnNz
GBT1VteAKW2Wr8T+93Uc3c3pZV+pBHHOQ5zucPVjtulCzuBcrgkIkhWdMPv3WjYh13qGPikh
nhsvlvFzKDmy7L51KD5HkvzlQQlenNlovx7VAkibnEsFGpu8G4BKb4Zyo4bz55uekcnsl5CR
fap-wf7mtlh1CMifDPVYqGxjMkRWqTlfHA2V90IzNI5flI7nOnC9KuvrCEDf5eWHTKpHHWp6
zvJVHMlz4JTwb-9n30AYd3JU8Yisg+kKp4JoFk68DILsjR2MLNVJag2lX0UcPGzUnxgWX40d
lR3xGC-w6KFI-vtkM3VQI9RzpMGTPUm8lfPcmB7sdTiTeIxvOhHefmdzeji3Jai6ypYgGyop
J0CWqsUkh39zOi5n6oOOSZwvc5TYrdmuHqxjpIwrJ9lg41bCtzGrTtJHfgEzUd+sxDI+OTOx
8BpW95qZuDJPqeSgpxYnXKZJNFwOv23BVyuAgFDnwEO9A5+dcJHl0TFknD48ZrMOslgFMxNA
1dOReClW7HPf247DpBxeD0BR5b2qvL-OzJhdQFzcUVqPsXUnHeHOmedOms8Oj-KfOWl5VwGC
HlyGMaCIOiSp9YyLzL-sND7WHy0YQO67+IihoxpydovqBSLYbX5uKskRKOa-iIvjov4nVbow
8Jz1upx7BLmPJoYRvljBRaBZSjgYMzh6yonxDDDQcv4gi1j5K4bItRsLxpdOoBqJZC5aBlNy
Yzwa9HayhGbcqnynx72WmzTp1OLeIOowjiudfcRWl04hI9xkt9lkCfjHh2VnSrKiTfIpjIUT
x8QATKAaYL10Z0OQWj13An4DqQ8g3mLYDT6GovOxDSLDleA4Rvh4gmiVFrHR+9UYcdF5o5LQ
-mWhWzqhwzXgtdOsihb25n3AHqU6vh3KaAEde1M4VmyHCDyMorAsqpS5owGTAfUXPdGVQgik
fMMFsZFH5LkktQbVLOnBYBVja1B3L0eA8YjMsTMz82tHC5e398IaFKCX7tGvdcVJ8a4wO4h8
kdmSHGPuxZlVYXE-w9N+qNEIqGSOsahjyS9MFYBqFb5wYgqbF8Qr6sAdouGCADAFcIRr5LUf
oS7OPov2iKX9TYfSagNyLSZyAO3Zx9pdBPKHfoywwI-uGKX2XZmQPEtCSrCzgSM-skW16RtR
bBWEwGePMHpiy9LSBpFuCwMmWwrkJqc0Y5HbrLb-q2+8BQfiLlZiqLYthYACahUgJonmPsk-
ntmGAOK06L4q2+lHWoZlRkM8umS43pneBaulPvwIRhFuh0BjWqAuPIjeAG2kNJ82yyy60sdQ
gGdyCX3ISKaAFGdijaQ-PbPAQqVKTY2cTrfihDnwKNwZoGcWlFoeB0s1LVH1GaVBmQLoGL5D
l9XZfmJBuP+upvYKZiMhB7KyCTlsUazs-Xbj+zrV4836lE3yFxm5X2hKz7x2vrpCB3IoWHIi
Q37XgicLSZQMIZTQLSJStlZeM3z2h75eEtKVDodK06DblO2RZgArT1rSG85s6vaV-+cZIWXd
sHKx5qY1DIYQluwjRRUICBKGZQcKg4LM3RgA7h9mbBHov6U38HHDVZGSOATbeeIfsMOUB1cZ
uhLa1NnAY+VdZ9MpyCAM0ijPwDKxlR3MEtWIoW74HfvXmrqdxwIqtevQCZho4-sRSai8I1ta
vl6njvPkox+ElxPh3pxRhKm1yMp7moH6rQP2CF4x9a-P9p70vgfEuKIHRwsClQKyLPThTBx5
PxMzj9aIjFLTwKn4zEb-BoSY3QswAr9VBDRLYgTRBbhwUZgSYTteSccaiyeR3JIJGthq74EZ
DJRmyoD1CelzX5wgpSDv9DI4ddqPRXGxVgrOQ9gnNqGJutnFjGNVYmbveP6V4LJ-Jy0HX8Ko
GKsSYppI7xDOAMjBPWzD9ahtCMZRCxaoJSQjoEoj0hOrfAC-Dg19TLY4qKQpXZZcRETrXQXF
Q3DyvBYnOvCdr1fRpfsZoTv0t7gGKtkaZnDEtQVi2-f7WGW1tY2NW5mOWIwDBHFxCbrfdeHq
V4RWKh81ATIs+8Gqf2dooslnkmS9IG6E2Me-yVKf8OPp0OSYogPgCGLlooI5HEEXTKhcp+ow
8SMkiXTdcgTjPsZ7mA58gB1wKEKFkuu0xdEMDYYtuvkPmVWysDlLjqQ7QJi4uL2ExuSjJfOk
0+23UP-9SNDaqD2ttqZ4b7aTPq+ZCSQZbJZHZxBn8Y93cJk4M-wQfSl4P67644lC79ZWWo8a
Lk83VKh8ft+U8Y7gJ+9FHVw70SNHMPw2UhXSobs7EdEVHjssyBDtfr+2lz2Tlz+ytJ7-Y-HW
98I6hMwc6UublO2Xmco-2EkiCikwio-88W5RHHrbBG9hIGsEq8F-UV5v9kFHC-hRxdxCXHse
q4V0Vzj8Z8aNrGyM6aZNjq+IWUV4-zx9kNHv5I3BkJN0eUCtxkf-k7Nm9H2Ua2Upec+FkFFN
FUwK14hM2Kl4R3Cm07vTuFTg8Fdw96y937EC5G6YgQnDBlR2fpU2QtFGfYcatWkXSZaXG0N2
ImEHcYIZ2qh6M3DEFGKvOv-Yuf1nF-Sia1eBaWeGoOG6N2cGaPa6N6dcWfAIb5qbDCcG-oa4
l-0pHB3VOcIeKLuzN6egNztemFHF3D5uoIKQzgCYWePS6mb1u5l2Aa7e8eZZ3Nwe4MqCG8MY
mhHlm-FFV9BaecV6dem1uB4mnlWJgpakgPoW2fm81K3eh2PNIzZEL88dSUyNZCivTjlWe67E
kHyQ-cT6wKdVk2XuvcLb1nBZOol4WDqii8bTE7sCQHQfvYf3nOuln6TXDXZlcKiVugUXIUIC
M2tQVmqKCsZ55d5eQ7TiQtBupSfDtS9VdOuFBpfRTcub8aQfhQZwNW2LRIcFfYVtYA7vJ6Cb
kycawIeU6r4-bsV9tL7ToCzUXS9x8Y0F8xn41V1WpPVKliiMi39pmOqBLFoh5dTuci53zMH+
oSH2NMLUXeiM1G8a56fpmdXmTm0f5QXGID359IrdnwOY1xFa1KE5yWf1yaUEVXvwZEOmOapc
IBx-hO4-MTrNY7cZZEEyKqE1k1l3esFJL0yd9iuvCbLRL4hIstxUcVeQ1XSdqxSvmN2134l4
C+NPG2FjFAy2p8-cT9RuTZLAHEkKW+I22pJW+f2U6ic2oiHcWGn8nJGI7cUOD6GVmJYkzEfN
-ny20EOeMyAI8vGeftdeXr8ffFrj2bPZjVuDIGpCgLSXIMVqRNpSePjWRO2TaP-nwT6Un--3
2T33LnRF3DhQXKelmcgLegEmKScLS09rvOX926Q9r6SWVr6TWWcSLIm1zB5zQ0u-ONaOeten
Ncj1BaruznM5zomtC8quDTHpzHQTLgtcBCf1upzlM1fc6F5DDLvpgOV9o32S1lJH2wy4L9kN
saIcyZcswAmYg-7xgQFXyA-1MzFhvZwDfzxuSDrLkyjzlwCfuUb2YjtjSc9bwPgIlFAAzB1W
fz+7zz62TpxDQ3KsI9i7mgjanmyPLrJBUW5-g5dki0+S6BhX2mWu0zFjv06KiL9H3V583Hiv
03juRrsFmoF0--50L94rWk17AbyK2W-NtVQe+N7ZzakZE-9b7WJ02gQAiYZQGCzfdY3DEbzr
HxroFIvRx+jyFuVQzTqj2DYPq8WGtYNyk8SHbc7SBh5+7qvfAW9+6XyPCA520Ig3ou+MJPKT
6wdzCb72HQGz6m681uZr7LqFkuJuGG0mRC920PfuoywOx6L2HkY5TIdtvxux6jz33pwcNN2e
5ycXvKetjpoIHWgRpDNcCR9S3mrrvFqURre+rbxKDbpJyT9zczxUzewiMyn7mrobHmBJmeQj
LlMJy1hEFjtohBmbZ2zqLJ2Sp1zGTjfYuKVN7HPETZLtzwtTwe1jsjwlLRHgHJNC188vmu8S
5juKJIPzb2jYvz+Bu0SeXGzzGFn0Dy9vlrXUTxMjFjcmccoAlQqO1FkCI0BmejB9vFDtjWEC
vzPd2-CQLF8DBKLlBDdYH4a-SIlnaSZoBMql73byJ39OnASMyYfAGJuDCSaR9lSPldmsDDJW
mEAz1WKxK2HBWdCdc2zsORzZ-9eA-t+Yfz5eQ42upNTCBRr7GteHHZXLSkO50y9gTm+qLi3K
iSwH9FydBlTWgYv20C9mHcE4siNJF+LWTZ82-Bc9uZJ7n+LpeYFrEPoeiKxXhV6+52Ae6c9j
XdibD9CnS3SMXEFA+CE-WU-JU0K+Ok3RU4v+5g1BUBg-rk2Q+Hk6S-nkAw-9UBQ+vk6y-jkN
cCg6glF+-a+WM1dU5a+yk+7M1aU4C+-Sk2N+Bq+rs4P++M+V03uukinr5cl5zjoBMPNIx9Yi
***** END OF BLOCK 2 *****


*XX3402-010809-180597--72--85-56784-----JUSTONE.ZIP--3-OF--3
n1drVxbjRe5C3aNrPEmnvyy296-8xDyoAwmGoTRLpsTNqI0MBO1zXk4Ju0RrVxbFRK3qFrCM
hPO2qNphMKNnVhb1U5aCA5gCMun+ArdPa4o3zXXEyEnZPyl+rVpasp1r7j6zE1cPPHh-rxwH
NWPUrPoRwbj1v4I+xo3LTiU0M2Gt14Bq+6wCx3s4HrRVz-k+ENtXuu3zs5c4tHy+hrGFcbwx
uVuyBgkqUwN5sDR9wDgUwfLqA0iLkyl3xBg7aPt0rpLcynnOPUOBJn-a0bXx0Rfwu5gXu4j-
ryx+unFsTEhk7zEXPEunpu4L57H5caz-ZX1v-CL7kDTjU2eojk-QMp+T5kcn5wNDE5vVpX-v
3TUS+4sPwfEdn-s1XaiVguBcTlGwtE5z6w0J09kXE1wDMrw6LQF-xZrhMHMJyjY9uaDFPnzY
O+TjSeF-w1w8ggk+vcy-Qktk7U8KcDtRU+Rx9U34cTo4XDohw5k+Saw-xriMxxi-AkCwZE6C
EKRpsC5fm4w3LpB-xnlk9gQQHCi3nK9A9j1nxZfkUjcop1q1wUfMU6GlXsBb8zegE7gJibU4
R4t3qxiMcz5EflMuSEnmhMCL+j1sEx1N+rU6S9u09TKWryCMAnrmDFX9kCgAoAt3SkdkPYRu
-DoTFPw48r1+nZx5ilioLsFBx01zAyG1cDYwybkBw-PKpar+yEFkdeDhYxMkqkjPDMltO6Bw
lP1zhQ+NE1cJxLQV5E9yFW6z1Cqrcuo4uFwlhUlpvsD45jFNUTdbkQx3h5o85Pk6jQo1566y
DkTBAuXrE6RPI5sKtExVuqj-pyw+uSWbUnlPM1CDcToJm5YGvKPIpo5iXR-V0W+Nwbo6iGO1
pfjEyHeoDMttrkSwtKWv1aCyVrKS17sCcpwVuXw2PkZ6tq3ihuCh-5kQE3odRB+0zBC+MnTU
2ify+-tq+UcVqzqEsKDAnqvc7F2oYX4Llq2jmn3Tnu5yKqXz2D+Cu6u1rDh+PtLk8u1n5B6r
6RSbs5Yyqhu1HDSUrr5kdQAwyI5vBDEz0LULc5k5qgNWX-SoRe1jUy+b3HdM0NtCUxORoDBf
Y0oBz3S7Tc-HoC2exCg1ncb+gF7x7AXt-TUz+LkfEPg+xQL+CF3x0Y-j5TGq1nUmk3AByDkE
TLfE5c-hDUqSTUkNhA0H1Vl9A4MotiAMqhxMfzfRSt4jVTkKu5+NO2m-LLk4Cns6bAi-PlfY
qEkw7n0KUxuf++TmxoALDs-CYw1DiqVT0SV2yEvMMmRsNg0J8zeXvZSE8FRmvsKwDR1jOyXn
8CXx2fkS-CoWwDQ5h-SVT-PoPU2DBsB47rWw3yjvTOlhByFt1TOl5bvUAaVjVxnDEtwTUxSN
YCBio-y4jeacDmjKWw+5raM+Rk9UNe3Lo0w+DpKUQFPZ3Q0t-yK1k5QGzDkQD-R0XmP6TWDs
R25yIw1L8zk6O2l0SnLuTlztN6mx5b7w2nXbUhsPeDgHwXZc5s4qFC1P7jMcd-SUVzj+bljt
ix5b5gnnfIXfkAQmx+w6TZ2y-vevoCxFp7p2rHqUjkWsadj1kl4h70azW6q2yXfwWDA2GTd0
z1EKZzXGAePyA5vUMS7jDlfyUo6WCfopmN7iaYd1H2bSeO2ldOSzCbZ3IDGdKNm8--D73xbx
9sYno5w+I2g1--E++U+6+2Vt9m-xcit+lU+++++U+++9++++GZJHJ2xCFGt9JoPhnf3ikX+E
-a-5ZJ020-jASEJOM6Q--+gAvMmAAQEWq73x+T5qL8EcehJ85Pjwrq9TbLprDJZHsPlcnvTx
SXNSGbJxG5z8ZPhJYgnFZ6OS6jg8lZvmPFpcNnKzT-yeIcNky4lHGOeQ7KodQ54GzTJvp9mK
Wdco3HfziIbLHoGRotLLaVTIcfhlSXfMq20m95aagm88iDnFfvmf1ciXembtBWDSutQp-rTh
+zT6XHov2IJQbUg++++++++++++++++++61zxk7EGk203++I++6+0+-6SGwU9LSNhPY+++-u
-U++0k+++++++++++0++++++++++GZJHJ2xCFGt2Ep7EGk203++I++6+0+-6SGwUzS1gXW28
+++E2k++0k+++++++++++0++++1W++++GZJHJ2xCFGt2EpJEGk203++I++6+0+-6SGwU0-k9
azgQ+++BBk++0k+++++++++++0+++++g0k++GZJHJ2xCFGt6H3-EGk203++I++6+0+-6SGwU
TO9iEAM+++++6+++0k+++++++++++0++++-E8+++GZJHJ2xCFGt9JoNEGkI4++++++E+-+1Y
++++DmY+++++
***** END OF BLOCK 3 *****