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.
