{%extends "base.html"%}
{%block title1%}Settings -{%endblock%}
{%block body%}
<h2>Hi!</h2>

<form name="welcome" action="{{post_url}}" method="POST">

{{form.xsrf}}
{%if form.xsrf.errors%}
<ul>
  {%for e in form.xsrf.errors%}
    <li>{{e}}</li>
  {%endfor%}
</ul>
{%endif%}

{{form.dest}}
<input type="hidden" name="step" value="3ind" />

<p>Hi, welcome to Android.  Before we can get going, we need a little bit of
information from you.</p>

<table class="largeform">
<tr><th class="largeform_field">Individual Contributor License Grant</th></tr>
<tr><td class="largeform_field">

<p
{% if form.i_agree.errors %}
    style="color: red;"
{% endif %}
>Please read the following, and agree to it by typing the words "I AGREE" in the box below.</p>


<hr>

<div style="padding: 0 30px 0 30px;">


<div dir="ltr"><p style="margin:0px">In
order to clarify the intellectual property license granted with
Contributions from any person or entity, the Android Open Source
Project (the "Project") must have a Contributor License Grant ("Grant")
on file that has been signed by each Contributor, indicating agreement
to the license terms below. This license is for your protection as a
Contributor as well as the protection of the Project and the Android
Open Source Project Leads (the "Project Leads"); it does not change
your rights to use your own Contributions for any other purpose.  If
you have not already done so, please complete and send an original
signed Grant to</p><blockquote style="border:1px dashed rgb(221, 221, 221);padding:10px">Google Inc.<br />Attn: Open Source Program Office<br />1600 Amphitheatre Pkwy<br />Building 43<br />Mountain View, CA 94043<br />U.S.A.<br /></blockquote><p style="margin:0px">Scanned
agreements may also be emailed in PDF form to
cla-submissions@google.com, sent by facsimile to (650) 887-1625, or
signed electronically with the form below.</p><p style="margin:0px">Please read this document carefully before signing and keep a copy for your records.</p><pre style="border:1px solid silver;margin:2em;padding:0.5em;color:rgb(0, 112, 0);font-size:100%;background-color:rgb(245, 245, 245)"> <br /><br />Full name: ____________________________  E-Mail: ______________________<br />   <br />    <br />   <br />Mailing Address: ______________________  Telephone: ___________________<br />   <br />    <br />   <br />_______________________________________  Facsimile: ___________________<br />   <br />    <br />   <br />_______________________________________  Country:   ___________________<br />   <br />   <br /></pre><p style="margin:0px">You
accept and agree to the following terms and conditions for Your present
and future Contributions submitted to the Project. Except for the
license granted herein to the Project Leads and recipients of software
distributed by the Project Leads, You reserve all right, title, and
interest in and to Your Contributions.</p><p style="margin:0px"><br /></p><ol style="margin-top:0px;margin-bottom:0px"><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">Definitions.
"You" (or "Your") shall mean the copyright owner or legal entity
authorized by the copyright owner that is making this Grant. For legal
entities, the entity making a Contribution and all other entities that
control, are controlled by, or are under common control with that
entity are considered to be a single Contributor. For the purposes of
this definition, "control" means (i) the power, direct or indirect, to
cause the direction or management of such entity, whether by contract
or otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"Contribution" shall mean any original work of authorship, including
any modifications or additions to an existing work, that is
intentionally submitted by You to the Project Leads for inclusion in,
or documentation of, any of the products managed or maintained by the
Project Leads (the "Work"). For the purposes of this definition,
"submitted" means any form of electronic, verbal, or written
communication sent to the Project Leads or their representatives,
including but not limited to communication on electronic mailing lists,
source code control systems, and issue tracking systems that are
managed by, or on behalf of, the Project Leads for the purpose of
discussing and improving the Work, but excluding communication that is
conspicuously marked or otherwise designated in writing by You as "Not
a Contribution."</p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">Grant
of Copyright License. Subject to the terms and conditions of this
Grant, You hereby grant to the Project Leads and to recipients of
software distributed by the Project Leads a perpetual, worldwide,
non-exclusive, no-charge, royalty-free, irrevocable copyright license
to reproduce, prepare derivative works of, publicly display, publicly
perform, sublicense, and distribute Your Contributions and such
derivative works.</p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">Grant
of Patent License. Subject to the terms and conditions of this Grant,
You hereby grant to the Project Leads and to recipients of software
distributed by the Project Leads a perpetual, worldwide, non-exclusive,
no-charge, royalty-free, irrevocable (except as stated in this section)
patent license to make, have made, use, offer to sell, sell, import,
and otherwise transfer the Work, where such license applies only to
those patent claims licensable by You that are necessarily infringed by
Your Contribution(s) alone or by combination of Your Contribution(s)
with the Work to which such Contribution(s) was submitted. If any
entity institutes patent litigation against You or any other entity
(including a cross-claim or counterclaim in a lawsuit) alleging that
your Contribution, or the Work to which you have contributed,
constitutes direct or contributory patent infringement, then any patent
licenses granted to that entity under this Grant for that Contribution
or Work shall terminate as of the date such litigation is filed.</p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">You
represent that you are legally entitled to grant the above license. If
your employer(s) has rights to intellectual property that you create
that includes your Contributions, you represent that you have received
permission to make Contributions on behalf of that employer, that your
employer has waived such rights for your Contributions to the Project
Leads, or that your employer has executed a separate Corporate
Contributor License Grant with the Project Leads.</p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">You
represent that each of Your Contributions is Your original creation
(see section 7 for submissions on behalf of others). You represent that
Your Contribution submissions include complete details of any
third-party license or other restriction (including, but not limited
to, related patents and trademarks) of which you are personally aware
and which are associated with any part of Your Contributions.</p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">You
are not expected to provide support for Your Contributions, except to
the extent You desire to provide support. You may provide support for
free, for a fee, or not at all. Unless required by applicable law or
agreed to in writing, You provide Your Contributions on an "AS IS"
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions of
TITLE, NON- INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR
PURPOSE.</p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">Should
You wish to submit work that is not Your original creation, You may
submit it to the Project Leads separately from any Contribution,
identifying the complete details of its source and of any license or
other restriction (including, but not limited to, related patents,
trademarks, and license agreements) of which you are personally aware,
and conspicuously marking the work as "Submitted on behalf of a
third-party: [named here]".  <span style="background-color:rgb(255, 255, 0)"><br /></span></p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">You
agree to notify the Project Leads of any facts or circumstances of
which you become aware that would make these representations inaccurate
in any respect.</p></li></ol></div>


</div>

<p>I agree: {{form.i_agree}}</p>
<hr/>
<p>We need to collect the following information as well:
<table>
<tr><td><b>Mailing Address</b></td>
    <td>{{form.mailing_address}}{{form.mailing_address.errors}}</td></tr>
<tr><td><b>Country</b></td>
    <td>{{form.mailing_address_country}}{{form.mailing_address_country.errors}}</td></tr>
<tr><td><b>Phone Number</b></td>
    <td>{{form.phone_number}}{{form.phone_number.errors}}</td></tr>
<tr><td><b>Fax Number (optional)</b></td>
    <td>{{form.fax_number}}{{form.fax_number.errors}}</td></tr>
</table>
</p>

</td></tr>
</table>

<input type="button" name="back" value="Back" onclick="document.welcome.submit();">
<input type="submit" name="continue" value="Continue">

</form>

{%endblock%}

