CAPYBARA GAMES INC.
End User License Agreement

THIS END USER LICENSE AGREEMENT ("EULA") IS A BINDING LEGAL AGREEMENT BETWEEN CAPYBARA GAMES INC ("CAPYBARA") AND YOU AND, IF APPLICABLE, THE COMPANY OR OTHER LEGAL ENTITY YOU REPRESENT (COLLECTIVELY, "YOU" AND "YOUR") REGARDING THE GAME SOFTWARE THAT YOU ARE INSTALLING, INCLUDING ANY ACCOMPANYING MANUAL OR OTHER RELATED MATERIAL PROVIDED BY CAPYBARA AS PART OF, OR IN CONNECTION, THEREWITH (COLLECTIVELY, THE "GAME").

BY CLICKING THE "I AGREE" BUTTON BELOW, OR BY OTHERWISE CONTINUING TO INSTALL, DOWNLOAD, COPY, ACCESS OR USE THE GAME, YOU ACKNOWLEDGE THAT YOU UNDERSTAND AND AGREE TO BE BOUND BY THE TERMS OF THIS EULA.  IF YOU DO NOT AGREE, YOU MUST SELECT THE "I DON'T AGREE" BUTTON AND YOU MAY NOT CONTINUE TO INSTALL, DOWNLOAD, COPY, ACCESS OR USE THE GAME.

1. 	LICENSE GRANT AND RESTRICTIONS.

	1.1	License Grant. CAPYBARA hereby grants to you a non-exclusive license to use a single copy of the object code version of the Game for your personal, non-commercial home entertainment use on one personal computer or other compatible electronic device.  You may sell or transfer your copy of the Game to another person along with, and subject to, your rights under this EULA, only if you do not retain any copies.

	1.2	Restrictions. You may not (i) decompile, disassemble or reverse engineer the Game or otherwise attempt to gain access to its source code, except to the extent that such restrictions are expressly prohibited by law; (ii) copy, offer for public display or create derivative works thereof, except to the extent that such restrictions are expressly prohibited by law; (iii) rent, lease, loan, sublicense or distribute the Game, or offer it on a pay-per-play, coin-op or other for charge (or free) basis; (iv) use the Game to infringe the copyrights or other intellectual property rights of others in any way; (v) modify or delete the copyright and other proprietary rights notices on or in the Game.

	1.3  	Additional Restrictions for Trial Versions. If the Game was provided to you for trial use for a limited period of time and/or number of uses, you agree not to use the Game beyond the expiration or termination of the trial period.  You acknowledge and agree that the Game may include code designed to prevent you from exceeding these limits, and that such code may remain on your computer or device after deletion of the Game to prevent you from installing another copy of the Game and repeating the trial.

	1.4  	Game Specific Terms and Conditions. For additional terms and conditions that may apply to the Game, such as third-party copyright notices and license information, please review the About screen included in the Game.  The About screen for the Game is hereby incorporated into this EULA by this reference.

2.  	TERMINATION. This EULA is effective until terminated. You may terminate this EULA at any time by uninstalling the Game and destroying all copies of the Game in your possession or control.  CAPYBARA may terminate this EULA immediately upon notice to you if you breach any of its terms or conditions.  Upon termination of this EULA, you agree to immediately uninstall the Game and destroy all copies of the Game.

3.  	GAME OWNERSHIP. The Game is the copyrighted proprietary material of CAPYBARA, Superbrothers Inc. and/or its third-party licensors and is subject to copyright protection under Canadian copyright law and international copyright treaties, as well as other intellectual property laws and treaties. CAPYBARA, Superbrothers Inc. and/or its third-party licensors retain all right, title, and interest in the Game (and any copies thereof) and specifically reserve all rights not expressly granted under this EULA.

4.  LIMITED WARRANTIES BY CAPYBARA.

	4.1 	Limited Warranty. CAPYBARA WARRANTS TO YOU, THE ORIGINAL PURCHASER OF THE GAME, THAT THE GAME WILL BE FREE FROM DEFECTS IN MATERIALS AND WORKMANSHIP FOR A PERIOD OF NINETY (90) DAYS FROM THE DATE OF PURCHASE (THE "WARRANTY PERIOD").  THIS LIMITED WARRANTY IS VOID IF THE GAME HAS BEEN SUBJECT TO MISUSE, DAMAGE OR IF YOU HAVE VIOLATED THIS EULA. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, ALL OTHER WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT, OR WARRANTIES THAT THE GAME WILL BE ERROR-FREE, SECURE OR VIRUS-FREE, ARE HEREBY EXPRESSLY DISCLAIMED.

	4.2 	Additional Warranty for Retail Product. IF YOU PURCHASED THE GAME ON A DISC OR OTHER RECORDING MEDIUM, THEN YOU MUST MAKE ANY WARRANTY CLAIM TO THE RETAILER FROM WHICH YOU PURCHASED THE GAME BY PROVIDING A COPY OF YOUR ORIGINAL SALES RECEIPT AND ANY OTHER DETAILS REQUIRED BY THE RETAILER. THE RETAILER, AT ITS OPTION, MAY REFUND YOUR PURCHASE PRICE, REPAIR OR REPLACE THE DISC OR OTHER MEDIA CONTAINING THE GAME. ANY REPLACEMENT WILL BE WARRANTED FOR THE REMAINDER OF THE ORIGINAL WARRANTY PERIOD OR THIRTY (30) DAYS, WHICHEVER IS LONGER. YOUR EXCLUSIVE REMEDY, AND THE ENTIRE LIABILITY OF CAPYBARA, ITS AFFILIATES, LICENSORS AND SUPPLIERS (COLLECTIVELY, "THE CAPYBARA PARTIES"), FOR BREACH OF THIS WARRANTY, SHALL BE THE REFUND, REPAIR OR REPLACEMENT DESCRIBED ABOVE.

5. LIMITATION OF LIABILITY. NO PROVISIONS OF THIS EULA SHALL APPLY TO LIMIT LIABILITY ARISING FROM DEATH OR PERSONAL INJURY CAUSED BY NEGLIGENCE OR FOR FRAUD. OTHERWISE, IN NO EVENT WILL THE CAPYBARA PARTIES' TOTAL AGGREGATE LIABILITY TO YOU FOR DIRECT DAMAGES, LOSSES, AND CAUSES OF ACTION ARISING OUT OF OR RELATING TO THIS EULA AND/OR YOUR USE OF THE GAME EXCEED THE AMOUNT PAID BY YOU FOR THE GAME.  IN NO EVENT WILL THE CAPYBARA PARTIES BE LIABLE FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, OR ANY OTHER TYPE OF DAMAGES (INCLUDING WITHOUT LIMITATION DAMAGES RELATING TO LOST PROFITS, LOSS OF DATA, PRIVACY, NEGLIGENCE OR OTHER DUTY OF CARE), EVEN IF ONE OR MORE OF THE CAPYBARA PARTIES HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

6. BASIS OF THE BARGAIN; EXCLUSIONS. The disclaimers of warranties and limitations of liability set forth above are fundamental elements of the basis of the agreement between you and CAPYBARA.  You understand and agree that CAPYBARA would not be able to economically or reasonably provide the Game to you without these limitations. HOWEVER, SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES AND/OR THE LIMITATION OF INDIRECT DAMAGES AS SET FORTH IN SECTIONS 4 AND 5 ABOVE, SO THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU.

7. INDEMNIFICATION.  You agree to indemnify, defend and hold harmless the CAPYBARA Parties, including their respective employees, officers, directors and personnel from any claims, losses, damages, liabilities, including attorneys' fees, arising out of your violation of this EULA and/or your use or misuse of the Game.

8. EXPORT CONTROL.  The Game originates in Canada and is subject to Canadian export laws and regulations. You may not export or re-export, in whole or in part, the Game to certain countries, persons or entities prohibited from receiving exports from Canada.  Additionally, the Game may be subject to the import and export laws of other countries, and you agree that you will comply with any such foreign import and export laws, as applicable.

9. MISCELLANEOUS.  You agree to comply with all Canadian and foreign laws related to your use of the Game.  This is the entire agreement between you and CAPYBARA relating to the subject matter herein and replaces any and all previous representations, agreements, understandings or communications, whether written or oral.  This EULA may not be modified except in writing, signed by both parties. If a court of competent jurisdiction declares any provision of this EULA to be void or unenforceable, then such provision will be interpreted, construed or reformed to the extent reasonably required to render it valid, enforceable and consistent with the original intent underlying such provision, and such invalidity or unenforceability will not affect any other provision of this EULA.  The English language version of this EULA will control its interpretation.

10.  GOVERNING LAW AND VENUE.

This EULA will be governed by and construed in accordance with the laws of the Province of Ontario, Canada, excluding its conflicts of law rules and specifically excluding the United Nations Convention on Contracts for the International Sale of Goods.  Venue for any action hereunder shall lie exclusively in the courts located in Toronto, Ontario, Canada and you hereby consent and submit to the personal jurisdiction of such courts.

11.  NOTICES; HOW TO CONTACT CAPYBARA.  The Game is made available to you by CAPYBARA GAMES INC.  CAPYBARA may be contacted via its website (http://www.capybaragames.com).  Superbrothers Inc. may be contacted via its website (www.superbrothers.ca)
