                             TERMS AND CONDITIONS
    IMPORTANT - PLEASE READ BEFORE INSTALLING OR USING THIS INTEL(C) SOFTWARE

Do not use or load this firmware (the "Software") until you have carefully read
the following terms and conditions. By loading or using the Software, you agree
to the terms of this Agreement. If you do not wish to so agree, do not install
or use the Software.

LICENSEES:

Please note: 

* If you are an End-User, only Exhibit A, the SOFTWARE LICENSE AGREEMENT,
  applies.
* If you are an Original Equipment Manufacturer (OEM), Independent Hardware
  Vendor (IHV), or Independent Software Vendor (ISV), this complete Agreement
  applies 

--------------------------------------------------------------------------------

For OEMs, IHVs, and ISVs:

LICENSE. This Software is licensed for use only in conjunction with Intel
component products. Use of the Software in conjunction with non-Intel component
products is not licensed hereunder. Subject to the terms of this Agreement,
Intel grants to you a nonexclusive, nontransferable, worldwide, fully paid-up
license under Intel's copyrights to: (i) copy the Software internally for your
own development and maintenance purposes; (ii) copy and distribute the Software
to your end-users, but only under a license agreement with terms at least as
restrictive as those contained in Intel's Final, Single User License Agreement,
attached as Exhibit A; and (iii) modify, copy and distribute the end-user
documentation which may accompany the Software, but only in association with
the Software.  

If you are not the final manufacturer or vendor of a computer system or software
program incorporating the Software, then you may transfer a copy of the
Software, including any related documentation (modified or unmodified) to your
recipient for use in accordance with the terms of this Agreement, provided such
recipient agrees to be fully bound by the terms hereof. You shall not otherwise
assign, sublicense, lease, or in any other way transfer or disclose Software to
any third party. You may not, nor may you assist any other person or entity to
modify, translate, convert to another programming language, decompile, reverse
engineer, or disassemble any portion of the Software or otherwise attempt to
derive source code from any object code modules of the Software or any internal
data files generated by the Software. Your rights to redistribute the Software
shall be contingent upon your installation of this Agreement in its entirety in
the same directory as the Software.

CONTRACTORS. For the purpose of this Agreement, and notwithstanding anything 
to the contrary hereunder, solely with respect to the requirements for 
compliance with the terms hereunder, any contractors or consultants that You 
use to perform the work or otherwise assist You in the development or products 
using this Software shall be deemed to be End Users and accordingly, upon 
receipt of the Software, shall be bound by the terms of Exhibit A, Software 
License Agreement. No additional agreement between You and such consultants or 
contractors is required under this Agreement to detail such compliance.

TRADEMARKS. Except as expressly provided herein, you shall not use Intel's 
name in any publications, advertisements, or other announcements without 
Intel's prior written consent. You do not have any rights to use any Intel 
trademarks or logos.

OWNERSHIP OF SOFTWARE AND COPYRIGHTS. Software and accompanying materials, if
any, are owned by Intel or its suppliers and licensors and may be protected by
copyright, trademark, patent and trade secret law and international treaties. 
Any rights, express or implied, in the intellectual property embodied in the
foregoing, other than those specified in this Agreement, are reserved by Intel
and its suppliers and licensors or otherwise as set forth in any applicable
open source license agreement. You will keep the Software free of liens,
attachments, and other encumbrances.  You agree not to remove any proprietary
notices and/or any labels from the Software and accompanying materials without
prior written approval by Intel

LIMITATION OF LIABILITY. IN NO EVENT SHALL INTEL OR ITS SUPPLIERS AND LICENSORS
BE LIABLE FOR ANY DAMAGES WHATSOEVER FROM ANY CAUSE OF ACTION OF ANY KIND
(INCLUDING, WITHOUT LIMITATION, LOST PROFITS, BUSINESS INTERRUPTION, OR LOST
INFORMATION) ARISING OUT OF THE USE, MODIFICATION, OR INABILITY TO USE THE
INTEL SOFTWARE, OR OTHERWISE, NOR FOR PUNITIVE, INCIDENTAL, CONSEQUENTIAL, OR
SPECIAL DAMAGES OF ANY KIND, EVEN IF INTEL OR ITS SUPPLIERS AND LICENSORS HAS
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.   SOME JURISDICTIONS PROHIBIT
EXCLUSION OR LIMITATION OF LIABILITY FOR IMPLIED WARRANTIES, CONSEQUENTIAL OR
INCIDENTAL DAMAGES, SO CERTAIN LIMITATIONS MAY NOT APPLY.  YOU MAY ALSO HAVE
OTHER LEGAL RIGHTS THAT VARY BETWEEN JURISDICTIONS. 

EXCLUSION OF WARRANTIES.  THE SOFTWARE IS PROVIDED "AS IS" AND POSSIBLY WITH
FAULTS. UNLESS EXPRESSLY AGREED OTHERWISE, INTEL AND ITS SUPPLIERS AND
LICENSORS DISCLAIM ANY AND ALL WARRANTIES AND GUARANTEES, EXPRESS, IMPLIED OR
OTHERWISE, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
NONINFRINGEMENT, OR FITNESS FOR A PARTICULAR PURPOSE.  Intel does not warrant
or assume responsibility for the accuracy or completeness of any information,
text, graphics, links or other items contained within the Software.  You assume
all liability, financial or otherwise, associated with Your use or disposition
of the Software.
		
APPLICABLE LAW. Claims arising under this Agreement shall be governed by the
laws of State of California], excluding its principles of conflict of laws and
the United Nations Convention on Contracts for the Sale of Goods.  

WAIVER AND AMENDMENT. No modification, amendment or waiver of any provision of
this Agreement shall be effective unless in writing and signed by an officer of
Intel.  No failure or delay in exercising any right, power, or remedy under
this Agreement shall operate as a waiver of any such right, power or remedy. 
Without limiting the foregoing, terms and conditions on any purchase orders or
similar materials submitted by you to Intel, and any terms contained in Intel's
standard acknowledgment form that are in conflict with these terms, shall be of
no force or effect.

SEVERABILITY.  If any provision of this Agreement is held by a court of
competent jurisdiction to be contrary to law, such provision shall be changed
and interpreted so as to best accomplish the objectives of the original
provision to the fullest extent allowed by law and the remaining provisions of
this Agreement shall remain in full force and effect.

EXPORT RESTRICTIONS.  Each party acknowledges that the Software is subject to
applicable import and export regulations of the United States and of the
countries in which each party transacts business, specifically including U.S.
Export Administration Act and Export Administration Regulations.  Each party
shall comply with such laws and regulations, as well as all other laws and
regulations applicable to the Software.  Without limiting the generality of the
foregoing, each party agrees that it will not export, re-export, transfer or
divert any of the Software or the direct programs thereof to any restricted
place or party in accordance with U.S. export regulations.  Note that Software
containing encryption may be subject to additional restrictions.

GOVERNMENT RESTRICTED RIGHTS. The Software is provided with "RESTRICTED RIGHTS."
Use, duplication, or disclosure by the Government is subject to restrictions as
set forth in FAR52.227-14 and DFAR252.227-7013 et seq. or their successors. Use
of the Software by the Government constitutes acknowledgment of Intel's
proprietary rights therein. Contractor or Manufacturer is Intel Corporation,
2200 Mission College Blvd., Santa Clara, CA  95052.

TERMINATION OF THE AGREEMENT. Intel may terminate this Agreement if you violate
its terms. Upon termination, you will immediately destroy the Software or
return all copies of the Software to Intel.

--------------------------------------------------------------------------------

EXHIBIT "A"

SOFTWARE LICENSE AGREEMENT (Final, Single User)

IMPORTANT - READ BEFORE COPYING, INSTALLING OR USING.

Do not use or load this firmware image (the "Software") until you have carefully
read the following terms and conditions. By loading or using the Software, you
agree to the terms of this Agreement. If you do not wish to so agree, do not
install or use the Software.

LICENSE. You may copy and use the Software, subject to these conditions: 
1. This Software is licensed for use only in conjunction with Intel component
   products. Use of the Software in conjunction with non-Intel component 
   products is not licensed hereunder. 
2. You may not copy, modify, rent, sell, distribute or transfer any part of the
   Software except as provided in this Agreement, and you agree to prevent
   unauthorized copying of the Software. 
3. You may not reverse engineer, decompile, or disassemble the Software. 
4. You may not sublicense the Software. 
5. The Software may contain the software or other property of third party
   suppliers. 

OWNERSHIP OF SOFTWARE AND COPYRIGHTS. Title to all copies of the Software
remains with Intel or its suppliers. The Software is copyrighted and protected
by the laws of the United States and other countries, and international treaty
provisions. You may not remove any copyright notices from the Software. Intel
may make changes to the Software, or items referenced therein, at any time
without notice, but is not obligated to support or update the Software. Except
as otherwise expressly provided, Intel grants no express or implied right under
Intel patents, copyrights, trademarks, or other intellectual property rights.
You may transfer the Software only if a copy of this license accompanies the 
Software and the recipient agrees to be fully bound by these terms.

EXCLUSION OF OTHER WARRANTIES EXCEPT AS PROVIDED ABOVE, THE SOFTWARE IS PROVIDED
"AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY OF ANY KIND INCLUDING
WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, OR FITNESS FOR A PARTICULAR
PURPOSE. Intel does not warrant or assume responsibility for the accuracy or
completeness of any information, text, graphics, links or other items contained
within the Software.

LIMITATION OF LIABILITY. IN NO EVENT SHALL INTEL OR ITS SUPPLIERS BE LIABLE FOR
ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, LOST PROFITS, BUSINESS
INTERRUPTION, OR LOST INFORMATION) ARISING OUT OF THE USE OF OR INABILITY TO
USE THE SOFTWARE, EVEN IF INTEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES. SOME JURISDICTIONS PROHIBIT EXCLUSION OR LIMITATION OF LIABILITY FOR
IMPLIED WARRANTIES OR CONSEQUENTIAL OR INCIDENTAL DAMAGES, SO THE ABOVE
LIMITATION MAY NOT APPLY TO YOU. YOU MAY ALSO HAVE OTHER LEGAL RIGHTS THAT VARY
BETWEEN JURISDICTIONS.

TERMINATION OF THIS AGREEMENT. Intel may terminate this Agreement at any time if
you violate its terms. Upon termination, you will immediately destroy the
Software.

APPLICABLE LAWS. Claims arising under this Agreement shall be governed by the
laws of California, excluding its principles of conflict of laws and the United
Nations Convention on Contracts for the Sale of Goods. You may not export the
Software in violation of applicable export laws and regulations. Intel is not
obligated under any other agreements unless they are in writing and signed by
an authorized representative 
of Intel.

GOVERNMENT RESTRICTED RIGHTS. The Software is provided with "RESTRICTED RIGHTS."
Use, duplication, or disclosure by the Government is subject to restrictions as
set forth in FAR52.227-14 and DFAR252.227-7013 et seq. or their successors. Use
of the Software by the Government constitutes acknowledgment of Intel's
proprietary rights therein. Contractor or Manufacturer is Intel Corporation,
2200 Mission College Blvd., Santa Clara, CA 95052.



		

