Scott's Very Free License

COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:

If you modify this file, you may insert additional notices immediately following
this sentence.

Copyright 2001 Scott Robert Ladd. All rights reserved, except as noted herein.

This computer program source file is supplied "AS IS". Scott Robert Ladd
(hereinafter referred to as "Author") disclaims all warranties, expressed or
implied, including, without limitation, the warranties of merchantability and of
fitness for any purpose. The Author assumes no liability for direct, indirect,
incidental, special, exemplary, or consequential damages, which may result from
the use of this free product, even if advised of the possibility of such damage.

The Author hereby grants anyone permission to use, copy, modify, and distribute
this source code, or portions hereof, for any legal purpose, without fee, subject
to the following restrictions:

  The origin of this source code must not be misrepresented.

  Altered versions must be plainly marked as such and must not be misrepresented
  as being the original source.

  This Copyright notice may not be removed or altered from any source or altered
  source distribution.

The Author specifically permits (without fee) and encourages the use of this
source code for entertainment, education, or decoration. If you use this source
code in a product, acknowledgment is not required but would be appreciated.

The Author's contact information is:

  Scott Robert Ladd
  scott@coyotegulch.com
  http://www.coyotegulch.com

Acknowledgement:
This license is based on the wonderful simple license that accompanies libpng.
