IMPORTANT. Read the following LMI Software License Agreement ("Agreement")
completely.

In summary, this license agreement allows you to use this software only on
Luminary Micro microcontrollers, on an as-is basis, with no warranties.

LUMINARY MICRO SOFTWARE LICENSE AGREEMENT

This is a legal agreement between you (either as an individual or as an
authorized representative of your employer) and Luminary Micro, Inc. ("LMI").
It concerns your rights to use this file and any accompanying written materials
(the "Software"). In consideration for LMI allowing you to access the Software,
you are agreeing to be bound by the terms of this Agreement. If you do not
agree to all of the terms of this Agreement, do not download the Software. If
you change your mind later, stop using the Software and delete all copies of
the Software in your possession or control. Any copies of the Software that you
have already distributed, where permitted, and do not destroy will continue to
be governed by this Agreement. Your prior use will also continue to be governed
by this Agreement.

1. LICENSE GRANT. LMI grants to you, free of charge, the non-exclusive,
non-transferable rights solely and exclusively on or for LMI's microcontroller
products: (1) to use and reproduce the Software, (2) to prepare derivative
works of the Software, (3) to distribute the Software and derivative works
thereof in source (human-readable) form and object (machine-readable) form, (4)
to sublicense to others the right to use the distributed Software, (5) permit
the Software and derivative works thereof to communicate with "viral open
source" software (as defined below); provided however that you may not combine
the two separate and independent works to form a larger program, and (6)
combine the Software and derivative works thereof with "non-viral open source"
software (as defined below). For the purposes of this Agreement, "viral open
source" software means open source software made available on license terms,
such as the GNU General Public License (GPL), that would alter the foregoing
license grant restrictions if combined with the Software. For the purposes of
this Agreement, "non-viral open source" software means open source software
made available on license terms that would not alter the foregoing license
grant restrictions if combined with the Software. For the avoidance of any
doubt, the foregoing license grant does not permit you to combine the Software
and derivative works thereof with "viral open-source" software in order to
sublicense to others the right to use the combined software product. If you
violate any of the terms or restrictions of this Agreement, LMI may immediately
terminate this Agreement, and require that you stop using and delete all copies
of the Software in your possession or control.

2. COPYRIGHT. The Software is licensed to you, not sold. LMI owns the Software,
and United States copyright laws and international treaty provisions protect
the Software. Therefore, you must treat the Software like any other copyrighted
material (e.g. a book or musical recording). You may not use or copy the
Software for any other purpose than what is described in this Agreement. Except
as expressly provided herein, LMI does not grant to you any express or implied
rights under any LMI or third-party patents, copyrights, trademarks, or trade
secrets. Additionally, you must reproduce and apply any copyright or other
proprietary rights notices included on or embedded in the Software to any
copies or derivative works made thereof, in whole or in part, if any.

3. SUPPORT. LMI is NOT obligated to provide any support, upgrades or new
releases of the Software. If you wish, you may contact LMI and report problems
and provide suggestions regarding the Software. LMI has no obligation
whatsoever to respond in any way to such a problem report or suggestion. LMI
may make changes to the Software at any time, without any obligation to notify
or provide updated versions of the Software to you.

4. INDEMNITY. You agree to fully defend and indemnify LMI from any and all
claims, liabilities, and costs (including reasonable attorney's fees) related
to (1) your use (including your sub-licensee's use, if permitted) of the
Software or (2) your violation of the terms and conditions of this Agreement.

5. HIGH RISK ACTIVITIES. You acknowledge that the Software is not fault
tolerant and is not designed, manufactured or intended by LMI for incorporation
into products intended for use or resale in on-line control equipment in
hazardous, dangerous to life or potentially life-threatening environments
requiring fail-safe performance, such as in the operation of nuclear
facilities, aircraft navigation or communication systems, air traffic control,
direct life support machines or weapons systems, in which the failure of
products could lead directly to death, personal injury or severe physical or
environmental damage ("High Risk Activities"). You specifically represent and
warrant that you will not use the Software or any derivative work of the
Software for High Risk Activities.

6. PRODUCT LABELING. You are not authorized to use any LMI trademarks, brand
names, or logos.

7. COMPLIANCE WITH LAWS; EXPORT RESTRICTIONS. You must use the Software in
accordance with all applicable U.S. laws, regulations and statutes. You agree
that neither you nor your licensees (if any) intend to or will, directly or
indirectly, export or transmit the Software to any country in violation of U.S.
export restrictions.

8. GOVERNMENT USE. Use of the Software and any corresponding documentation, if
any, is provided with RESTRICTED RIGHTS. Use, duplication or disclosure by the
Government is subject to restrictions as set forth in subparagraph (c)(1)(ii)
of The Rights in Technical Data and Computer Software clause at DFARS
252.227-7013 or subparagraphs (c)(l) and (2) of the Commercial Computer
Software--Restricted Rights at 48 CFR 52.227-19, as applicable. Manufacturer is
Luminary Micro, Inc., 108 Wild Basin Road, Ste 350, Austin, Texas 78746.

9. DISCLAIMER OF WARRANTY. TO THE MAXIMUM EXTENT PERMITTED BY LAW, LMI
EXPRESSLY DISCLAIMS ANY WARRANTY FOR THE SOFTWARE. THE SOFTWARE IS PROVIDED "AS
IS", WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,
WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE, OR NON-INFRINGEMENT. YOU ASSUME THE ENTIRE RISK ARISING OUT
OF THE USE OR PERFORMANCE OF THE SOFTWARE, OR ANY SYSTEMS YOU DESIGN USING THE
SOFTWARE (IF ANY). NOTHING IN THIS AGREEMENT MAY BE CONSTRUED AS A WARRANTY OR
REPRESENTATION BY LMI THAT THE SOFTWARE OR ANY DERIVATIVE WORK DEVELOPED WITH
OR INCORPORATING THE SOFTWARE WILL BE FREE FROM INFRINGEMENT OF THE
INTELLECTUAL PROPERTY RIGHTS OF THIRD PARTIES.

10. LIMITATION OF LIABILITY. IN NO EVENT WILL LMI BE LIABLE, WHETHER IN
CONTRACT, TORT, OR OTHERWISE, FOR ANY INCIDENTAL, SPECIAL, INDIRECT,
CONSEQUENTIAL OR PUNITIVE DAMAGES, INCLUDING, BUT NOT LIMITED TO, DAMAGES FOR
ANY LOSS OF USE, LOSS OF TIME, INCONVENIENCE, COMMERCIAL LOSS, OR LOST PROFITS,
SAVINGS, OR REVENUES TO THE FULL EXTENT SUCH MAY BE DISCLAIMED BY LAW.

11. CHOICE OF LAW; VENUE; LIMITATIONS. You agree that the statutes and laws of
the United States and the State of Texas, USA, without regard to conflicts of
laws principles, will apply to all matters relating to this Agreement or the
Software, and you agree that any litigation will be subject to the exclusive
jurisdiction of the state or federal courts in Austin, Travis County, Texas,
USA. You agree that regardless of any statute or law to the contrary, any claim
or cause of action arising out of or related to this Agreement or the Software
must be filed within one (1) year after such claim or cause of action arose or
be forever barred. YOU EXPRESSLY AGREE THAT YOU WAIVE YOUR INDIVIDUAL RIGHT TO
A TRIAL BY JURY IN ANY COURT OF COMPETENT JURISDICTION FOR ANY ACTION, DISPUTE,
CLAIM, OR CONTROVERSY CONCERNING THIS AGREEMENT OR FOR ANY ACTION, DISPUTE,
CLAIM, OR CONTROVERSY ARISING OUT OF OR RELATING TO ANY INTERPRETATION,
CONSTRUCTION, PERFORMANCE OR BREACH OF THIS AGREEMENT.

12. ENTIRE AGREEMENT. This Agreement constitutes the entire agreement between
you and LMI regarding the subject matter of this Agreement, and supersedes all
prior communications, negotiations, understandings, agreements or
representations, either written or oral, if any. This Agreement may only be
amended in written form, executed by you and LMI.

13. SEVERABILITY. If any provision of this Agreement is held for any reason to
be invalid or unenforceable, then the remaining provisions of this Agreement
will be unimpaired and, unless a modification or replacement of the invalid or
unenforceable provision is further held to deprive you or LMI of a material
benefit, in which case the Agreement will immediately terminate, the invalid or
unenforceable provision will be replaced with a provision that is valid and
enforceable and that comes closest to the intention underlying the invalid or
unenforceable provision.

14. NO WAIVER. The waiver by LMI of any breach of any provision of this
Agreement will not operate or be construed as a waiver of any other or a
subsequent breach of the same or a different provision.
