========================================
== GOG.com End-User License Agreement ==
========================================

READ THE FOLLOWING TERMS AND CONDITIONS CAREFULLY BEFORE INSTALLING
THE PROGRAM.  This end user license agreement (this “Agreement”) is
a legal agreement between you (an individual or a single entity “You”)
and GOG.com or GOG Limited (“Company”) for the accompanying software
product which includes computer software and any associated media,
printed materials, and/or “online” or electronic documentation
(collectively, the “Program”).  By installing, copying, or otherwise
using the Program, you acknowledge that you have read this Agreement
and agree to be bound by the terms.  If you do not accept or agree to
the terms of this Agreement, do not install or use the Program.

1.License.  Company grants you a non-exclusive, non-transferable license
to use the Program, but retains all property rights in the Program and
all copies thereof.  This Program is licensed, not sold, for your
personal, non-commercial use.  Your license confers no title or ownership
in this Program and should not be construed as any sale of any rights in
this Program.  You may not transfer, distribute, rent, sub-license, or
lease the Program or documentation, except as provided herein; alter,
modify, or adapt the Program or documentation, or portions thereof
including, but not limited to, translation, decompiling or disassembling.
You agree not to modify or attempt to reverse engineer, decompile, or
disassemble the Program, except and only to the extent that such
activity is expressly permitted under applicable law notwithstanding
this limitation.  All rights not expressly granted under this Agreement
are reserved by Company.

2.No Warranty.  You are responsible for assessing your own computer and
the results to be obtained therefrom.  You expressly agree that use of
the Program is at your sole risk.  The Program is provided on an “as is,”
“as available” basis, unless such warranties are legally incapable of
exclusion.  Company and its licensors disclaim all warranties and
conditions, whether oral or written, express, or implied, including
without limitation any implied warranties or conditions of merchantability,
fitness for a particular purpose, non-infringement of third party rights,
and those arising from a course of dealing or usage of trade, regarding
the Program.  Company and its licensors assume no responsibility for any
damages suffered by you, including, but not limited to, loss of data,
items or other materials from errors or other malfunctions caused by
Company, its licensors, licensee and/or subcontractors, or by your or
any other participant’s own errors and/or omissions.  Company and its
licensors make no warranty with respect to any related software or
hardware used or provided by Company in connection with the Program except
as expressly set forth above.

3.Limitation of Liability.  You acknowledge and agree that Company and
its licensors shall not assume or have any liability for any action by
Company or its content providers, other participants, or other licensors
with respect to conduct, communication, or content of the Program.
Company and its licensors shall not be liable for any indirect, incidental,
special, punitive, exemplary, or consequential damages resulting hereunder
in any manner, even if advised of the possibility of such damages.
Except as expressly provided herein, Company’s and its licensors’ entire
liability to you and your exclusive remedy for any breach of this Agreement
is limited solely to the total amount paid by you for the Program,
if any.  Because some states do not allow the exclusion or limitation
of liability for certain damages, in such states Company’s and its
licensors’ liability is limited to the extent permitted by law.

4.Indemnity.  At Company’s request, you agree to defend, indemnify and
hold harmless Company, its affiliates and licensors from all damages,
losses, liabilities, claims and expenses, including attorneys’ fees,
arising directly or indirectly from your acts and omissions to act in
using the Program pursuant to the terms of this Agreement or any breach
of this Agreement by you.

5.Termination.  Without prejudice to any other rights of Company, this
Agreement and your right to use the Program may automatically terminate
without notice from Company if you fail to comply with any provision
of this Agreement or any terms and conditions associated with the
Program.  In such event, you must destroy all copies of this Program
and all of its component parts.

6.Injunction.  Because Company would be irreparably damaged if the terms
of this Agreement were not specifically enforced, you agree that Company
shall be entitled, without bond, other security or proof of damages, to
appropriate equitable remedies with respect to breaches of this Agreement,
in addition to such other remedies as Company may otherwise have under
applicable laws.

7.General Provisions.  Company’s failure to enforce at any time any of
the provisions of this Agreement shall in no way be construed to be a
present or future waiver of such provisions, nor in any way affect the
right of any party to enforce each and every such provision thereafter.
The express waiver by Company of any provision, condition or requirement
of this Agreement shall not constitute a waiver of any future obligation
to comply with such provision, condition or requirement.  This Agreement
shall be governed by the laws of the State of California and the United
States without regard to its conflicts of laws rules and you consent to
the exclusive jurisdiction of the courts in Los Angeles County,
California.  The United Nations Convention on Contracts for the
International Sale of Goods shall not apply to this Agreement.
This Agreement represents the complete agreement concerning this License
Agreement between you and Company.
