IMPORTANT – PLEASE READ THE FOLLOWING LICENSE AGREEMENT CAREFULLY.  THIS IS A
LEGALLY BINDING AGREEMENT.  DO NOT DOWNLOAD THE LICENSED MATERIALS UNLESS: (1)
YOU ARE AUTHORIZED TO ACCEPT AND AGREE TO THE TERMS OF THIS LICENSE AGREEMENT
AND (2) YOU INTEND TO ENTER INTO AND TO BE BOUND BY THE TERMS OF THIS AGREEMENT.

This Software License Agreement (“Agreement”) is a legal agreement between
you (either an individual or entity) and Texas Instruments Incorporated
(“TI”), 12500 TI Boulevard, Dallas, Texas 75243.  The “Licensed
Materials” subject to this Agreement include, in whole or in part, the
software programs that accompany this Agreement and any “on-line” or
electronic documentation associated with these programs.  By installing,
copying or otherwise using the Licensed Materials you agree to abide by the
terms of this Agreement.  If you choose not to accept or agree with these
terms, do not download or install the Licensed Materials.

NOTE:  The Licensed Materials may be bundled with open source software.  By
accepting this Agreement, you may gain access to software identified as being
licensed under open source licenses, which software and corresponding open
source licenses will be listed in the applicable software manifest (in whole or
in part, the “Open Source Materials”).  Your use of the Open Source
Materials is subject to the separate licensing terms applicable to such Open
Source Materials as specified in the applicable software manifest.  For
clarification, this Agreement does not limit your rights under, or grant you
rights that supersede, the license terms of any applicable Open Source
Materials license agreement.  If any of the Open Source Materials have been
provided to you in object code, the source code versions of such Open Source
Materials may be provided to you by notifying TI at Texas Instruments
Incorporated, 12500 TI Boulevard, Mail Station 8638, Dallas, Texas 75243,
Attention: Contracts Manager.  You may terminate this Agreement in the event
you choose not to accept or agree with the terms in any applicable Open Source
Materials license agreement, provided that such termination occurs within five
(5) days of acceptance of this Agreement and you abide by all applicable
license terms in this Agreement until such termination.


1.	License.

a.	Source Code License.  For the Licensed Materials provided in source
code format, TI hereby grants to you a limited, non-exclusive license to
reproduce, use, and create modified or derivative works of the Licensed
Materials provided to you in source code format and to distribute an unlimited
number of copies of such source code Licensed Materials, or any derivatives
thereof, in any format.

b.	 Object Code License.  For the Licensed Materials provided in object
code format, TI hereby grants to you a limited, non-exclusive license to
reproduce and use the Licensed Materials provided to you in object code format
and to distribute an unlimited number of object or executable copies of such
object code Licensed Materials.

2.	Termination.  This license is effective until terminated.  Without
prejudice to any other rights, TI may terminate your right to use the Licensed
Materials under this Agreement if you fail to comply with the terms of this
Agreement.  In such event, you shall destroy all copies of the Licensed
Materials, including all portions and derivatives thereof.

3.	Intellectual Property Rights.

a.	The Licensed Materials being provided to you hereunder are being made
publicly available by TI, even though they contain copyrighted material of TI
and its licensors, if applicable.   In no event may you alter, remove or
destroy any copyright notice included in the Licensed Materials.  To the extent
that any of the Licensed Materials are provided in binary or object code only,
you may not unlock, decompile, reverse engineer, disassemble or otherwise
translate such binary or object code to human-perceivable form. The source code
of such reverse engineered code may contain TI trade secret and other
proprietary information. TI reserves all rights not specifically granted under
this Agreement.

b.	Certain Licensed Materials may (i) require patent licenses from third
parties claiming patent rights covering implementation of the Licensed
Materials or (ii) be based on industry recognized standards or software
programs published by industry recognized standards bodies and certain third
parties may claim to own patents or copyrights that cover implementation of
those standards.  You acknowledge and agree that this Agreement does not convey
a license to any such third party patents and copyrights.

c.	YOU ACKNOWLEDGE AND AGREE THAT TI SHALL NOT BE LIABLE FOR AND SHALL NOT
DEFEND OR INDEMNIFY YOU AGAINST ANY THIRD PARTY INFRINGEMENT CLAIM THAT RELATES
TO OR IS BASED ON YOUR MANUFACTURE, USE, OR DISTRIBUTION OF THE LICENSED
MATERIALS OR YOUR MANUFACTURE, USE, OFFER FOR SALE, SALE, IMPORTATION OR
DISTRIBUTION OF YOUR PRODUCTS THAT INCLUDE OR INCORPORATE THE LICENSED
MATERIALS.

d.	You acknowledge and agree that you are responsible for any fees or
royalties that may be payable to any third party based on such third party’s
interests in the Licensed Materials described in Section 3(b) above (the
“Third Party Payment Obligations”).  You agree to indemnify TI against any
Third Party Payment Obligations and will defend any claim, suit or proceeding
brought against TI insofar as such claim, suit or proceeding is based on your
failure to pay any Third Party Payment Obligations.

4.	Warranties and Limitations.  THE LICENSED MATERIALS ARE PROVIDED “AS
IS”.  TI AND ITS LICENSORS MAKE NO WARRANTY OR REPRESENTATION, EXPRESS,
IMPLIED OR STATUTORY, INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTIBILITY,
FITNESS FOR A PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR COMPLETENESS OF
RESPONSES, RESULTS AND LACK OF NEGLIGENCE.  TI DISCLAIMS ANY WARRANTY OF TITLE,
QUIET ENJOYMENT, QUIET POSESSION, AND NON-INFRINGEMENT OF ANY THIRD PARTY
INTELLECTUAL PROPERTY RIGHTS WITH REGARD TO THE LICENSED MATERIALS OR USE OF
THOSE MATERIALS.

YOU ACKNOWLEDGE AND AGREE THAT THE LICENSED MATERIALS MAY NOT BE INTENDED FOR
PRODUCTION APPLICATIONS AND MAY CONTAIN IRREGULARITIES AND DEFECTS NOT FOUND IN
PRODUCTION SOFTWARE.  FURTHERMORE, YOU ACKNOWLEDGE AND AGREE THAT THE LICENSED
MATERIALS HAVE NOT BEEN TESTED OR CERTIFIED BY ANY GOVERNMENT AGENCY OR
INDUSTRY REGULATORY ORGANIZATION OR ANY OTHER THIRD PARTY ORGANIZATION.  YOU
AGREE THAT PRIOR TO USING, INCORPORATING OR DISTRIBUTING THE LICENSED MATERIALS
IN OR WITH ANY COMMERCIAL PRODUCT THAT YOU WILL THOROUGHLY TEST THE PRODUCT AND
THE FUNCTIONALITY OF THE LICENSED MATERIALS IN OR WITH THAT PRODUCT AND BE
SOLELY RESPONSIBLE FOR ANY PROBLEMS OR FAILURES.

IN NO EVENT SHALL TI OR ITS LICENSORS BE LIABLE FOR ANY SPECIAL, INDIRECT,
INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, HOWEVER CAUSED ON ANY THEORY OF
LIABILITY, ARISING IN ANY WAY OUT OF THIS AGREEMENT, OR YOUR USE OF THE
LICENSED MATERIALS, WHETHER OR NOT TI HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.  EXCLUDED DAMAGES INCLUDE, BUT ARE NOT LIMITED TO, COST OF
REMOVAL OR REINSTALLATION, OUTSIDE COMPUTER TIME, LABOR COSTS, LOSS OR
CORRUPTION OF DATA, LOSS OF GOODWILL, LOSS OF PROFITS, LOSS OF SAVINGS, OR LOSS
OF USE OR INTERRUPTION OF BUSINESS OR ANY OTHER ECONOMIC LOSS.  IN NO EVENT
WILL TI’S AGGREGATE LIABILITY UNDER THIS AGREEMENT OR ARISING OUT OF YOUR USE
OF THE LICENSED MATERIALS EXCEED FIVE HUNDRED U.S. DOLLARS (US$500).

Because some jurisdictions do not allow the exclusion or limitation of
incidental or consequential damages or limitation on how long an implied
warranty lasts, the above limitations or exclusions may not apply to you.

5.	Export Control.  The software programs and any “on-line”
documentation as well as any updates or upgrades to such software programs or
documentation may be subject to the export or import regulations of certain
countries. You agree to comply with all such regulations and acknowledge that
you have the responsibility to obtain any licenses or other authorizations that
may be required to export, re-export or import the Licensed Materials.

6.	Governing Law, Jurisdiction and Severability.  This Agreement will be
governed by and interpreted in accordance with the laws of the State of Texas,
without reference to that state’s conflict of laws principles.  This
Agreement shall not be governed by the United Nations Convention on Contracts
for the International Sale of Goods, nor shall it be governed by the Uniform
Computer Information Transactions Act (UCITA).  Any dispute arising out of or
related to this Agreement will be brought in, and each party consents to the
exclusive jurisdiction and venue in the state and federal courts sitting in
Dallas Country, Texas.  Each party waives all defenses of lack of personal
jurisdiction and forum non-conveniens and agrees that process may be served on
either party in a manner authorized by applicable law or court rule.  If for
any reason a court of competent jurisdiction finds any provision of the
Agreement to be unenforceable, that provision will be enforced to the maximum
extent possible to effectuate the intent of the parties and the remainder of
the Agreement shall continue in full force and effect.

7.	PRC Provisions.  If you are located in the People’s Republic of China
(“PRC”) or if the Licensed Materials will be sent to the PRC, the following
provisions shall apply and shall supersede any other provisions in this
Agreement concerning the same subject matter as the following provisions:

	a.	Registration Requirements.  You shall be solely responsible for
performing all acts and obtaining all approvals that may be required in
connection with this Agreement by the government of the PRC, including but not
limited to registering pursuant to, and otherwise complying with, the PRC
Measures on the Administration of Software Products, Management Regulations on
Technology Import-Export, and Technology Import and Export Contract
Registration Management Rules.  Upon receipt of such approvals from the
government authorities, you shall forward evidence of all such approvals to TI
for its records.  In the event that you fail to obtain any such approval or
registration, you shall be solely responsible for any and all losses, damages
or costs resulting therefrom, and shall indemnify TI for all such losses,
damages or costs.

	b.	Governing Language.  This Agreement is written and executed in
the English language.  If a translation of this Agreement is required for any
purpose, including but not limited to registration of the Agreement pursuant to
any governmental laws, regulations or rules, you shall be solely responsible
for creating such translation.  Any translation of this Agreement into a
language other than English is intended solely in order to comply with such
laws or for reference purposes, and the English language version shall be
authoritative and controlling.

8.	Entire Agreement.  This is the entire Agreement between you and TI and
supersedes any prior agreement between the parties related to the subject
matter of this Agreement. No amendment or modification of this Agreement will
be effective unless in writing and signed by a duly authorized representative
of TI.  You hereby warrant and represent that you have obtained all
authorizations and other applicable consents required empowering you to enter
into this Agreement.


Version: 221850v2
