Software License Agreement

1.	READ THE FOLLOWING TERMS AND CONDITIONS CAREFULLY BEFORE
INSTALLING THE PROGRAM. THIS SOFTWARE LICENSE AGREEMENT IS A LEGAL
AGREEMENT BETWEEN YOU (AN INDIVIDUAL OR A SINGLE ENTITY "YOU") ON ONE
HAND, AND RWS, INC. AND ITS SUBSIDIARIES, AND AFFILIATES (COLLECTIVELY
REFERRED TO AS "COMPANY") ON THE OTHER HAND, FOR THE SOFTWARE PRODUCT
ENTITLED "POSTAL 2," WHICH INCLUDES COMPUTER SOFTWARE AND ANY ASSOCIATED
MEDIA AND/OR PRINTED MATERIALS (TOGETHER CALLED "PROGRAM"). BY OPENING
THE PACKAGING MATERIALS FOR THE PROGRAM, OR INSTALLING, COPYING, OR
OTHERWISE USING THE PROGRAM, YOU ACKNOWLEDGE THAT YOU HAVE READ THIS
SOFTWARE LICENSE AGREEMENT AND AGREE TO BE BOUND BY ITS TERMS.	IF YOU
DO NOT AGREE TO THE TERMS OF THIS SOFTWARE LICENSE AGREEMENT, DO NOT
INSTALL OR USE THE PROGRAM AND DELETE ALL COPIES IN YOUR POSSESSION.
2.	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.  You may install the Program on a single computer for
use by a single, particular user.  All rights not specifically granted
under this Agreement are reserved by Company and, as applicable,
Company's licensors. This Program is licensed, not sold, for your use.
Your license confers no title or ownership in this Program and should
not be construed as a sale of any rights in this Program.
3.	You acknowledge that the Program in source code form remains a
confidential trade secret of Company. 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 by
applicable law notwithstanding this limitation.
4.	OWNERSHIP. All right, title and interest and intellectual
property rights in and to the Program (including but not limited to any
titles, computer code, themes, objects, characters, character names,
stories, dialog, catch phrases, locations, concepts, artwork, images,
photographs, animations, video, sounds, audio-visual effects, music,
musical compositions, text and "applets," incorporated into the
Program), the accompanying printed materials, and any copies of the
Program, are owned by Company or its licensors. This Agreement grants
you no rights to use such content other than as part of the Program. All
rights not expressly granted under this Agreement are reserved by
Company.
5.	This Agreement is effective upon your opening of the packaging
materials, installation, or your first use of the Program and shall
continue until revoked by Company or until you breach any term hereof;
upon termination you agree to destroy or delete all copies of the
Program in your possession.
6.	Except as specifically set forth herein, you shall not modify
the Program or merge the Program into another computer program (except
to the extent the Program is made to operate within a computer operating
system and in connection with other computer programs) or create
derivative works based upon the Program.  Subject to the terms and
conditions of this Agreement and so long as you fully comply at all
times with all the terms and conditions of this Agreement, Company
grants you a limited, revocable, non-exclusive and limited right to
create for the Program (but specifically excluding the right to use any
software code from the Program) your own modifications and levels
("Derivative Materials") which shall operate solely with the Program and
not any other version of the Program, including, demos or updated
versions.  You represent and warrant that the Derivative Materials shall
(i) not infringe on the rights of any third parties; (ii) not be
libelous, defamatory, obscene, false, misleading, or otherwise illegal
or unlawful; (iii) not be downloaded, shipped, transferred, exported or
re-exported in violation of any laws governing such matters, including
the U.S. Export Administration Act; (iv) not be rented, sold, leased,
licensed, sublicensed, or otherwise commercially exploited.  You shall
fully indemnify the Company and its distributors, licensors, licensees
and their respective officers, directors,  in connection with any and
all claims arising from or based on the Derivative Materials.  You
acknowledge that you are only granted a license to create the Derivative
Materials and that you shall not own the Derivative Materials.	Any
breach of this Agreement by you shall result in the automatic
termination of such license, without notice or any further action, and
you shall not have any right to use the Program or any Derivative
Materials.
7.	Do not run, use, or install the Program if you reside in a
country to which the use or installation of the Program would violate
U.S. export laws or regulations, and do not distribute the Program in
violation of such laws or regulations. The Program may not be
transferred or otherwise exported or re-exported into (or to a national
or resident of) any country to which the U.S. has embargoed goods or to
anyone on the U.S. Treasury Department list of Specially Designated
Nationals or the U.S. Commerce Department's Table of Deny Orders. If you
do not meet these criteria or are not sure, do not run or install the
software and destroy any copies in your possession.  If you live in such
a country, no license is granted hereunder.
8.	To the maximum extent allowed by law, Company, its licensors and
subcontractors do not warrant any connection to, transmission over, or
results or use of, any network connection or facilities provided (or
failed to be provided) through the Program. You are responsible for
assessing your own computer needs and, if applicable, transmission
network needs, 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. EXCEPT WITH RESPECT TO THE LIMITED
CD-ROM WARRANTY AS SET FORTH IN SECTION 9 BELOW, 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 DELAYS, NON-DELIVERIES, ERRORS, CAUSED BY COMPANY, ITS
LICENSORS, LICENSEE AND/OR SUBCONTRACTORS, OR BY YOUR 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.
9.	LIMITED CD-ROM WARRANTY. Notwithstanding anything to the
contrary contained herein, and solely with respect to Programs
distributed on CD-ROM, Company warrants to the original consumer
purchaser of this Program on CD-ROM that the recording medium on which
the Program is recorded will be free from defects in material and
workmanship for 90 days from the date of purchase. If the recording
medium is found defective within 90 days of original purchase, you may
return the Program and all accompanying materials along with your
original receipt to the place you obtained it for a full refund or
replacement, subject to such retailers return policy. This warranty is
limited to the recording medium containing the Program as originally
provided by Company and is not applicable to normal wear and tear. This
warranty shall not be applicable and shall be void if the defect has
arisen through abuse, mistreatment, or neglect. Any implied warranties
prescribed by statute are expressly limited to the 90-day period
described above.
10.	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 FROM POSSESSION, USE, OR MALFUNCTION OF THE PROGRAM, INCLUDING
DAMAGES TO PROPERTY, LOSS OF GOODWILL, COMPUTER FAILURE OR MALFUNCTION
AND, TO THE EXTENT PERMITTED BY LAW, DAMAGES FOR PERSONAL INJURIES, 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.
11.	INJUNCTION. Because Company would be irreparably damaged if the
terms of this License 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.
12.	INDEMNITY. At Company's request, you agree to defend, indemnify
and hold harmless Company, its affiliates, contractors, officers,
directors, employees, agents, licensors, licensees, distributors,
content providers, and other users of the Program, 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 License Agreement or any
breach of this License Agreement by you. Company reserves the right, at
its own expense, to assume the exclusive defense and control of any
matter otherwise subject to indemnification by you hereunder, and in
such event, you shall have no further obligation to provide
indemnification for such matter.
13.	U.S. GOVERNMENT RESTRICTED RIGHTS. The Program and documentation
have been developed entirely at private expense and are provided as
"Commercial Computer Software" or "restricted computer software." Use,
duplication or disclosure by the U.S. Government or a U.S. Government
subcontractor is subject to the restrictions set forth in subparagraph
(c)(1)(ii) of the Rights in Technical Data and Computer Software clauses
in DFARS 252.227-7013 or as set forth in subparagraph (c)(1) and (2) of
the Commercial Computer Software Restricted Rights clauses at FAR
52.227-19, as applicable. The Contractor / Manufacturer is RWS, Inc. PO
64309, Tucson, AZ  85728.
14.	TERMINATION. Without prejudice to any other rights of Company,
this License 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.
15.	GENERAL PROVISIONS. You may not use, copy, modify, sublicense,
rent, sell, assign or transfer the rights or obligations granted to you
in this Agreement, except as expressly provided in this Agreement. Any
assignment in violation of this Agreement is void, except that you may
transfer your Program to another person provided that person accepts the
terms of this License Agreement. If any provision of this Agreement is
held to be unenforceable for any reason, such provision shall be
reformed only to the extent necessary to make it enforceable, and such
decision shall not affect the enforceability of: (i) such provision
under other circumstances, or (ii) the remaining provisions hereof under
all circumstances. 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. Notwithstanding
anything else in this Agreement, no default, delay or failure to perform
on the part of Company shall be considered a breach of this Agreement if
such default, delay or failure to perform is shown to be due to causes
beyond the reasonable control of Company. This Agreement shall be
governed by the laws of the State of Arizona and the United States
without regard to its conflicts of laws rules and you consent to the
exclusive jurisdiction of the state and federal courts in Pima County,
Arizona. 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.

If you have any questions concerning this license, you may contact RWS
at PO Box 64309, Tucson, AZ 85728

Postal(TM) 2 © 2002 RWS, Inc.  Developed by RWS, Inc.  Published by
Medium Rare, LLC.  Unreal(TM) Engine © 1997-2002 Epic Games, Inc.  All
Rights Reserved.  MathEngine Karma  © 2002 MathEngine PLC. Postal,
Postal 2, the Postal 2 logo, Running With Scissors, and the Running With
Scissors logo are trademarks or registered trademarks of RWS, Inc. Epic
Games and Unreal are registered trademarks or trademarks of Epic Games,
Inc, used under license.  MathEngine and Karma and the MathEngine and
Karma logos are registered trademarks or trademarks of MathEngine PLC,
used under license.  All rights reserved.
