Spread Open-Source License -- Version 1.0
-----------------------------------------
Copyright (c) 1993-2001 Spread Concepts LLC.  All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following request and
   disclaimer.

2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following request and
   disclaimer in the documentation and/or other materials provided
   with the distribution.

3. All advertising materials (including web pages) mentioning features
   or use of this software, or software that uses this software, must
   display the following acknowledgment: "This product uses software
   developed by Spread Concepts LLC for use in the Spread toolkit. For
   more information about Spread see http://www.spread.org"

4. The names "Spread" or "Spread toolkit" must not be used to endorse
   or promote products derived from this software without prior
   written permission.

5. Redistributions of any form whatsoever must retain the following
   acknowledgment: "This product uses software developed by Spread
   Concepts LLC for use in the Spread toolkit. For more information about
   Spread, see http://www.spread.org"

6. This license shall be governed by and construed and enforced in
   accordance with the laws of the State of Maryland, without
   reference to its conflicts of law provisions. The exclusive
   jurisdiction and venue for all legal actions relating to this
   license shall be in courts of competent subject matter jurisdiction
   located in the State of Maryland.

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, SPREAD IS PROVIDED
UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND,
EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
THAT SPREAD IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
PURPOSE OR NON-INFRINGING. ALL WARRANTIES ARE DISCLAIMED AND THE
ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE CODE IS WITH
YOU. SHOULD ANY CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
COPYRIGHT HOLDER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY
NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY
CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY CODE IS
AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL
THE COPYRIGHT HOLDER OR ANY OTHER CONTRIBUTOR BE LIABLE FOR ANY
SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES FOR LOSS OF
PROFITS, REVENUE, OR FOR LOSS OF INFORMATION OR ANY OTHER LOSS.

YOU EXPRESSLY AGREE TO FOREVER INDEMNIFY, DEFEND AND HOLD HARMLESS THE
COPYRIGHT HOLDERS AND CONTRIBUTORS OF SPREAD AGAINST ALL CLAIMS,
DEMANDS, SUITS OR OTHER ACTIONS ARISING DIRECTLY OR INDIRECTLY FROM
YOUR ACCEPTANCE AND USE OF SPREAD.

Although NOT REQUIRED, we at Spread Concepts would appreciate it if
active users of Spread put a link on their web site to Spread's web
site when possible. We also encourage users to let us know who they 
are, how they are using Spread, and any comments they have through 
either e-mail (spread@spread.org) or our web site at 
(http://www.spread.org/comments).

