Binary License Terms

A.  License.  Subject to your compliance with these license terms, the licensor of the Binary (the "Licensor") grants you a nontransferable license to use the Binary solely for the purpose of developing Chromebook or other Chrome OS and Chromium OS-related products.  Licensor reserves all other rights, including without limitation any rights to use the Binary in connection with commercial distribution of Chromebook products.  You may not decompile, reverse-engineer, disassemble, attempt to derive the source code of, modify, or create derivative works of the binary (except to the extent such restriction is prohibited by applicable law, or to the extent permitted by the license terms governing use of any open-source components included with the Binary).

B.  Termination; No Assignment; No Waiver.  This license is effective until terminated by you or Licensor.  Your rights under this license will terminate automatically without notice if you fail to comply with any terms of this license.  Upon termination, you shall cease all use of the Binary and destroy all copies of the Binary.  These license terms are not assignable without Licensor's consent.  Licensor will not be treated as having waived any rights by not exercising (or delaying the exercise of) any rights under these license terms.

C.  No Warranties.  YOUR USE OF THE BINARY IS AT YOUR SOLE RISK.  TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE BINARY IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, AND LICENSOR FURTHER DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  THE BINARY IS NOT INTENDED FOR USE IN ANY ACTIVITIES IN WHICH THE FAILURE OF THE BINARY COULD LEAD TO DEATH, PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE.

D.  Limitation of Liability.  LICENSOR WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU THROUGH THE USE OF THE BINARY, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF ANY SUCH LOSSES.

E.  Export Restrictions.  You agree to comply with all applicable U.S. and international export laws and regulations, including restrictions on destinations, end users, and end use.

F.  Indemnity.  You agree to indemnify Licensor, its affiliates and their respective directors, officers, employees and agents from any claims, losses and liabilities arising from your use of the Binary or your violation of these license terms.

G.  Governing Law.  These license terms will be governed by the laws of the State of California without regard to conflict of laws provisions.

H.  Entire Agreement.  These license terms constitute the entire agreement between you and Licensor regarding the Binary and completely replaces any prior agreements between you and Licensor regarding the Binary.
