EAGLE LICENSE AGREEMENT

This is a legal agreement between you, the end user, and CadSoft Computer,
Inc., which markets software products under the trademark EAGLE. CadSoft
Computer, Inc. shall be referred to in this Agreement as CadSoft. If you do not
agree to the terms of this Agreement, promptly return the disk package and
accompanying items (including written materials and containers) to the place
you obtained them for a full refund.
USE OF THIS PRODUCT CONSTITUTES YOUR ACCEPTANCE OF THESE TERMS AND CONDITIONS
AND YOUR AGREEMENT TO ABIDE BY THEM.

Grant of License

CadSoft grants to you the right to use one copy of the accompanying EAGLE
software program and any and all updates that you may receive (the Software) on
a single computer or workstation. You may, however, install the Software on
more than one computer or on a file server provided you do not operate the
Software on more than one computer or workstation at a time. Multi user
licenses are limited to the given number of concurrent users.

Freeware License

The "Freeware" version of EAGLE Light is limited to "non-profit" or evaluation
use. By "non-profit" we mean that as soon as you earn money by using EAGLE, you
have to register it! This allows anybody who wishes to use EAGLE Light for
their private hobby projects to do so. Also students can use this version for
any educational projects. It is even ok to use this version in a commercial
environment as long as you just want to evaluate the program. As soon as you
start using it for commercial projects, you will have to register it.
Board manufacturers ("board houses") who only want to produce production data
(like, e.g. Gerber files) from board files they receive from EAGLE users, may
also use the Freeware version to do this.
The Freeware license is valid without a printed "User License Certificate".

Copyright

The Software is owned by CadSoft and is protected by United States copyright
laws and international treaty provisions. Therefore, you must treat the
Software like any other copyrighted material (e.g., a book or musical
recording). You may not copy the written materials accompanying the Software.

Other Restrictions

You may not rent or lease the Software, but you may transfer your stand-alone
copy of the Software and accompanying written materials on a permanent basis
provided you retain no copies and the recipient agrees to the terms of this
Agreement. Any such transfer must include all updates and prior versions of the
Software and accompanying written materials, and notice must be given by you to
CadSoft that such transfer has taken place. You may not reverse engineer,
decompile, disassemble, or create derivative works based on the Software for
any purpose other than creating an adaptation to the Software as an essential
step in its utilization for your own use. You acknowledge Cadsoft's claim that
the Software embodies valuable trade secrets proprietary to CadSoft; you may
not disclose any information regarding the internal operations of the Software
to others.

Limited Warranty and Liability

CadSoft warrants that the Software, as updated and when properly used, will
operate in all material respects in conformity with the documentation for such
Software, and the Software media will be free of defects, for 30 (thirty) days
from the date of shipment of such version to you. In the event of a failure to
meet the foregoing limited warranty, your sole remedy in the event of
nonconformity of the Software, at CadSoft's option, shall be replacement of the
defective materials or a refund of the license fees paid for the affected
Software.

CadSoft disclaims all other warranties and conditions, express or implied. No
warranty is made regarding the results of any Software or services, or that the
Software's functionality will meet your requirements. In no event will CadSoft
or its suppliers be liable for any loss or inaccuracy of data or any loss of
profits.
