Terms of Use: www.hulu.com/terms
Privacy Policy: www.hulu.com/privacy
------------------------------------------------------

Hulu, LLC

SOFTWARE LICENSE AGREEMENT FOR HULU’S DESKTOP APPLICATION

PLEASE READ THIS SOFTWARE LICENSE AGREEMENT ("LICENSE") CAREFULLY BEFORE USING THE HULU SOFTWARE.  BY USING THE HULU SOFTWARE, YOU ARE AGREEING TO BE BOUND BY THE TERMS OF THIS LICENSE. IF YOU DO NOT AGREE TO THE TERMS OF THIS LICENSE, DO NOT USE THE SOFTWARE. 


1. License - In General. The software accompanying this License, whether on disk, in read only memory, on any other media, or in any other form (collectively, the “Hulu Software"), is licensed, not sold, to you by Hulu, LLC ("Hulu") for use only under the terms of this License, and Hulu reserves all rights not expressly granted to you. The rights granted herein are limited to Hulu and its licensors' intellectual property rights in the Hulu Software and do not include any other patents or intellectual property rights. You own the media on which the Hulu Software is recorded but Hulu and/or Hulu's licensor(s) retain ownership of the Hulu Software itself.  

2. Permitted License Uses and Restrictions. Hulu grants you a license to install and use the Hulu Software on your personal laptop or desktop computer (“Personal Computer”) for the sole purpose of streaming content that is available on Hulu’s site located at www.hulu.com (“Hulu Content”) on your Personal Computer.  You may not download, install or use the Hulu Software on any device other than a Personal Computer including without limitation digital media receiver devices (such as Apple TV), mobile devices (such as a cell phone device, mobile handheld device or a PDA), network devices or CE devices (collectively “Prohibited Devices”). You may not use any hardware, software or service other than the Hulu Software to stream, re-encode, project or transmit Hulu Content.  Except as may be required by law, you may not use hardware, software, a device, a service or any other means to cause the Hulu Software:  (a) to stream or transmit Hulu Content to any Prohibited Devices; (b) to stream or transmit modified or framed Hulu Content; (c) not to stream or transmit any Hulu or third party advertising, Hulu user interface or other content that Hulu displays in the application along with a Hulu video; or (d) to stream or transmit Hulu Content to a third party website.  You may not make the Hulu Software available over a network where it could be used by multiple computers at the same time. You may make one copy of the Hulu Software in machine-readable form for backup purposes only; provided that the backup copy must include all copyright or other proprietary notices contained on the original. Except as and only to the extent expressly permitted in this License or by applicable law, you may not copy, decompile, reverse engineer, disassemble, modify, or create derivative works of the Hulu Software or any part thereof. You may not rent, lease, lend, sell or have sold, distribute, or sublicense the Hulu Software either alone or in combination with any other product or service. You shall not use the Hulu Software for any purpose other than is permitted by Hulu herein.  THE HULU SOFTWARE IS NOT INTENDED FOR USE IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL SYSTEMS, LIFE SUPPORT MACHINES, OR OTHER EQUIPMENT IN WHICH THE FAILURE OF THE HULU SOFTWARE COULD LEAD TO DEATH, PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE.

3. No Framing of Hulu Content / No Unauthorized Linking to Hulu Content.  You represent and warrant that you will not engage in any framing of or unauthorized linking to Hulu Content.  Without limiting the generality of the foregoing, you understand and agree that you may not cause the Hulu Software to:  (a) display Hulu videos in full screen mode without also displaying any content that Hulu makes available along with the video while it is in full screen mode (including without limitation the Hulu user interface), or (b) prevent users from viewing or accessing any content (including without limitation the Hulu user interface) that Hulu displays in the application along with a Hulu video.

4.  Software Upgrades and License Revisions.  Hulu may make available software upgrades from time to time.  You may elect to receive upgrades automatically or be notified of the availability of an upgrade and given the opportunity to accept or decline the upgrade.  If you decline an upgrade, you may be unable to access some or all of the Services using the Hulu Software or your use of the Services otherwise may be adversely affected.    

The terms of this License will govern any software upgrades provided byHulu, unless the upgrade is accompanied by a separate license in which case the terms of that license will govern.  

Even if you elect to receive software updates automatically without notice you will still be notified of any changes to the License and required to accept those changes (or, as applicable, a separate license) to continue using the Hulu Software to access the Services.  

5. Consent to Use of Data. You agree that Hulu and its subsidiaries may collect and use technical and related information about your computer, including but not limited to system and application software and peripherals that you use to access the Services. This information is gathered to facilitate the provision of software updates, product support, and other services to you (if any) related to the Hulu Software. Hulu may use this information to improve our products or to provide services or technologies to you.

6. Hulu Service. The Hulu Software enables you to stream Hulu Content on your Personal Computer (the "Services"). Use of the Services requires you to have Internet access and accept Hulu’s Terms of Service (www.hulu.com/terms) and Privacy Policy (www.hulu.com/privacy).

You agree that the Services contain information and material that is owned by Hulu and/or its licensors, and is protected by applicable intellectual property and other laws, including but not limited to copyright, trademark and patent, and that you will not use such proprietary information or materials in any way whatsoever except for permitted use of the Services. No portion of the Services may be reproduced in any form or by any means. You agree not to modify, rent, lease, loan, sell, distribute, or create derivative works based on the Services, in any manner, and you shall not exploit the Services in any unauthorized way whatsoever, including but not limited to, trespassing on the Services or burdening network capacity. 

Hulu and its licensors reserve the right to change, suspend, remove, or disable access to the Services at any time without notice. In no event will Hulu be liable for the removal of or disabling of access to the Services. Hulu may also impose limits on the use of or access to the Services without notice or liability. 

7. No Commercial Use.  The Hulu Software is licensed to you solely for your personal use and may not be used in connection with any commercial endeavors, except those that are specifically authorized in writing by Hulu.  

8. Termination. This License is effective until terminated. Your rights under this License will terminate automatically without notice from Hulu if you fail to comply with any term(s) of this License. Upon the termination of this License, you shall cease all use of the Services and delete the version(s) of the Hulu Software installed on your Personal Computer and destroy all copies, full or partial, of the Hulu Software.  The following Sections of this License will survive the termination of this License: Section 9 through Section 10.

9. Disclaimer of Warranties. YOU EXPRESSLY ACKNOWLEDGE AND AGREE THAT USE OF THE HULU SOFTWARE AND THE SERVICES IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO QUALITY, PERFORMANCE, ACCURACY, AND EFFORT IS WITH YOU. THE HULU SOFTWARE AND SERVICES ARE PROVIDED "AS IS", WITH ALL FAULTS AND WITHOUT WARRANTY OF ANY KIND, AND HULU AND HULU'S LICENSORS (COLLECTIVELY REFERRED TO AS "HULU" FOR THE PURPOSES OF SECTION 9) HEREBY DISCLAIM ALL WARRANTIES AND CONDITIONS WITH RESPECT TO THE HULU SOFTWARE AND THE SERVICES, EITHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET ENJOYMENT, AND NON-INFRINGEMENT OF THIRD PARTY RIGHTS. HULU DOES NOT WARRANT AGAINST THE INTERFERENCE WITH YOUR ENJOYMENT OF THE HULU SOFTWARE OR SERVICES THAT THE FUNCTIONS CONTAINED IN THE HULU SOFTWARE OR SERVICES WILL MEET YOUR REQUIREMENTS, THAT THE OPERATION OF THE HULU SOFTWARE OR THE SERVICES WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT DEFECTS IN THE HULU SOFTWARE OR THE SERVICES WILL BE CORRECTED. HULU AGENTS, EMPLOYEES, CONTRACTORS, LICENSORS AND REPRESENTATIVES ARE NOT AUTHORIZED TO GIVE ORAL OR WRITTEN REPRESENTATIONS, INFORMATION OR ADVICE ON HULU’S BEHALF, AND IF YOU ARE GIVEN SUCH REPRESENTATIONS, INFORMATION OR ADVICE, IT SHALL NOT CREATE A WARRANTY. SHOULD THE HULU SOFTWARE OR THE SERVICES PROVE DEFECTIVE, YOU ASSUME THE ENTIRE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES OR LIMITATIONS ON APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO THE ABOVE EXCLUSION AND LIMITATIONS MAY NOT APPLY TO YOU.  

10. Limitation of Liability. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT SHALL HULU AND ITS LICENSORS BE LIABLE FOR PERSONAL INJURY, OR ANY INCIDENTAL, SPECIAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER, INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, LOSS OF DATA, BUSINESS INTERRUPTION, OR ANY OTHER COMMERCIAL DAMAGES OR LOSSES, ARISING OUT OF OR RELATED TO YOUR USE OR INABILITY TO USE THE HULU SOFTWARE OR SERVICES HOWEVER CAUSED, REGARDLESS OF THE THEORY OF LIABILITY (CONTRACT, TORT, OR OTHERWISE) EVEN IF HULU AND ITS LICENSORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY FOR PERSONAL INJURY, OR OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY TO YOU. In no event shall Hulu and its licensors’ total liability to you for all damages (other than as may be required by applicable law in cases involving personal injury or incidental or consequential damages) exceed the amount of fifty dollars ($50.00). The foregoing limitations will apply even if the above stated remedy fails of its essential purpose. 

11. Export Control. You may not use or otherwise export or re-export the Hulu Software except as authorized by United States law and the laws of the jurisdiction in which the Hulu Software was obtained. In particular, but without limitation, the Hulu Software may not be exported or re-exported (a) into any U.S. embargoed countries or (b) to anyone on the U.S. Treasury Department's list of Specially Designated Nationals or the U.S. Department of Commerce Denied Person’s List or Entity List. By using the Hulu Software, you represent and warrant that you are not located in any such country or on any such list. You also agree that you will not use the Hulu Software for any purposes prohibited by United States law, including, without limitation, the development, design, manufacture or production of missiles, or nuclear, chemical, or biological weapons.

12. Government End Users. The Hulu Software and related documentation are "Commercial Items", as that term is defined at 48 C.F.R. §2.101, consisting of "Commercial Computer Software" and "Commercial Computer Software Documentation", as such terms are used in 48 C.F.R. §12.212 or 48 C.F.R. §227.7202, as applicable.  Consistent with 48 C.F.R. §12.212 or 48 C.F.R. §227.7202-1 through 227.7202-4, as applicable, the Commercial Computer Software and Commercial Computer Software Documentation are being licensed to U.S. Government end users (a) only as Commercial Items and (b) with only those rights as are granted to all other end users pursuant to the terms and conditions herein. Unpublished-rights are reserved by Hulu under the copyright laws of the United States. 

13. Controlling Law and Severability. This License will be governed by and construed in accordance with the laws of the State of California, as applied to agreements entered into and to be performed entirely within California between California residents. This License shall not be governed by the United Nations Convention on Contracts for the International Sale of Goods, the application of which is expressly excluded. If for any reason a court of competent jurisdiction finds any provision, or portion thereof, to be unenforceable, the remainder of this License shall continue in full force and effect.  

14. Complete Agreement; Governing Language. This License constitutes the entire agreement between the parties with respect to the use of the Hulu Software licensed hereunder and supersedes all prior or contemporaneous understandings regarding such subject matter, with the exception of any additional terms and conditions you are required to accept if you choose to use the Services  which will govern your use of such Services. No amendment to or modification of this License will be binding unless in writing and signed by Hulu. 

May 2009

