JetBrains Technology Preview License Agreement

IMPORTANT! READ CAREFULLY: THIS IS A LEGAL AGREEMENT WHICH COVERS YOUR USE OF UNRELEASED SOFTWARE PROVIDED BY JETBRAINS S.R.O. ("LICENSOR") REFERENCED HEREIN AS JETBRAINS TECHNOLOGY. BY DOWNLOADING, INSTALLING, COPYING, SAVING ON YOUR COMPUTER, OR OTHERWISE USING JETBRAINS TECHNOLOGY, YOU (EITHER AN INDIVIDUAL OR AN ENTITY) ARE BECOMING A PARTY TO THIS AGREEMENT AND YOU ARE CONSENTING TO BE BOUND BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.

IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT, YOU SHOULD NOT DOWNLOAD, INSTALL AND USE JETBRAINS TECHNOLOGY.

1. DEFINITIONS

(a) "Evaluation Period" means forty five (45) days from the date of installation of JetBrains Technology on Your computer.

(b) "JetBrains Technology" means a preview version of software program known as PyCharm which is not generally available, including its documentation, any modifications, and any Third Party Software.

(c) Third Party Software means software programs that are owned and licensed by parties other than Licensor and that either integrated with or made part of JetBrains Technology.

2. JETBRAINS TECHNOLOGY OWNERSHIP, LICENSE GRANT AND USE

(a) JetBrains Technology is the property of Licensor or its suppliers. Title and copyrights to JetBrains Technology, in whole and in part and all copies thereof, and all modifications, enhancements, derivatives and other alterations of JetBrains Technology regardless of who made any modifications, if any, are, and will remain, the sole and exclusive property of Licensor and its suppliers.

(b) Subject to the terms, conditions, and limitations set forth in Section 2 (c) of this Agreement, Licensor hereby grants to You a limited, non-exclusive, non-transferable, royalty-free license to:

(i) use JetBrains Technology in accordance with its documentation during Evaluation Period;

(ii) copy JetBrains Technology for archival or backup purposes, provided that all titles and trademarks, copyright, and restricted rights notices are reproduced on such copies.

(c) You are not expressly permitted to:

(i) sell, redistribute, encumber, give, lend, rent, lease, sublicense, or otherwise transfer JetBrains Technology, or any portions of JetBrains Technology;

(ii) reverse engineer, decompile, disassemble, modify, translate, make any attempt to discover the source code of JetBrains Technology, or create derivative works from JetBrains Technology;

(iii) continue using JetBrains Technology upon termination of this Agreement as set forth in Section 5 herein.

(d) You can provide to Licensor Your feedback, suggestions or ideas concerning the functionality and performance of JetBrains Technology (collectively, "Feedback"). You agree that Your Feedback will automatically become the property of Licensor and may be used by Licensor to improve JetBrains Technology or other Licensor's products. Licensor shall have a non-exclusive, perpetual, irrevocable, royalty-free, worldwide right and license to use, reproduce, disclose, sublicense, distribute, modify, and otherwise exploit Feedback without restriction. No obligation is assumed or may be implied on Licensor by receipt, examination or use of Feedback. For the avoidance of any doubt, this Section 2(d) does not apply to any Third Party Software.

(e) You acknowledge that Licensor shall be under no obligation to provide technical support or upgrades for JetBrains Technology.

3. LIMITATION OF LIABILITY

(a) You understand that JetBrains Technology is only a preview version of the software product which has not been publicly announced or made available by Licensor, and that Licensor has no express or implied obligation to publicly announce or make available any production version of JetBrains Technology, or any product similar to or compatible with JetBrains Technology. You also understand that JetBrains Technology may contain errors, and that Licensor has no express or implied obligation to fix such errors. JetBrains Technology may contain features, functionality or modules that will not necessary be included in the production version of JetBrains Technology. You acknowledge that You use JetBrains Technology at Your own risk.

(b) JETBRAINS TECHNOLOGY IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE.

4. DISCLAIMER OF DAMAGES

REGARDLESS OF WHETHER ANY REMEDY SET FORTH HEREIN FAILS OF ITS ESSENTIAL PURPOSE, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU UNDER ANY THEORY FOR ANY DAMAGES SUFFERED BY YOU OR ANY USER OF THE JETBRAINS TECHNOLOGY, OR FOR ANY SPECIAL, INCIDENTAL, INDIRECT, CONSEQUENTIAL, OR SIMILAR DAMAGES (INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OR INABILITY TO USE THE JETBRAINS TECHNOLOGY, OR THE PROVISION OF OR FAILURE TO PROVIDE SUPPORT SERVICES, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, AND REGARDLESS OF THE LEGAL OR EQUITABLE THEORY (CONTRACT, TORT OR OTHERWISE) UPON WHICH THE CLAIM IS BASED.

5. TERMINATION

This Agreement shall terminate upon the earlier of (a) automatic expiration of Evaluation Period based on the system date; (b) public release of any production version of JetBrains Technology, or (c) termination by Licensor, in its sole discretion, upon notice on Licensor's website. Upon termination of this Agreement, rights to use JetBrains Technology granted to You under this Agreement shall immediately terminate, and You shall immediately cease using JetBrains Technology.

6. GENERAL

(a) This Agreement, including the Third Party Software license agreements, constitutes the entire agreement between You and Licensor concerning Your use of JetBrains Technology, and supersedes any and all prior or contemporaneous oral or written representations, communications, or advertising with respect to JetBrains Technology.

(b) A waiver by either party of any term or condition of this Agreement or any breach thereof, in any one instance, will not waive such term or condition or any subsequent breach. The provisions of this Agreement which require or contemplate performance after the expiration or termination of this Agreement will be enforceable notwithstanding said expiration or termination.

(c) This Agreement will be governed by the laws of Czech Republic, without reference to conflict of laws principles. You agree that any litigation relating to this Agreement may only be brought in, and will be subject to the jurisdiction of, any Court of Czech Republic.

(d) Titles are inserted for convenience only and will not affect in any way the meaning or interpretation of this Agreement. If any provision of this Agreement is held invalid, the remainder of this Agreement will continue in full force and effect. Either Licensor or You may assign this Agreement in the case of a merger or sale of substantially all of its respective assets to another entity. This Agreement will be binding upon and will inure to the benefit of the parties, their successors and assigns.

For any questions regarding this Agreement, please contact JetBrains at sales@jetbrains.com.
