Jetty Project          
Contributor License Agreement V1.0
based on http://www.apache.org/licenses/

Thank you for your interest in the Jetty project by Mort Bay 
Consulting Pty. Ltd. Australia ("MortBay").
In order to clarify the intellectual property license
granted with Contributions from any person or entity, MortBay
must have a Contributor License Agreement ("CLA") 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 MortBay and its users; it does not
change your rights to use your own Contributions for any other
purpose.  

If you have not already done so, please complete this agreement
and commit it to the Jetty repository at 
svn+ssh://svn.jetty.codehaus.org/home/projects/jetty/scm/jetty
at legal/cla-USERNAME.txt using your authenticated codehaus ssh 
login. If you do not have commit privilege to the repository, please
email the file to eclipse@eclipse.com.  If possible, digitally sign 
the committed file, otherwise also send a signed Agreement to MortBay.

Please read this document carefully before signing and keep a copy for
your records.

  Full name: 
  E-Mail:   
  Mailing Address:

You accept and agree to the following terms and conditions for Your
present and future Contributions submitted to MortBay. In return, 
MortBay shall not use Your Contributions in a way that is contrary 
to the software license in effect at the time of the Contribution. 
Except for the license granted herein to MortBay and recipients of 
software distributed by MortBay, You reserve all right, title, and 
interest in and to Your Contributions.

1. Definitions.

   "You" (or "Your") shall mean the copyright owner or legal entity
   authorized by the copyright owner that is making this Agreement
   with MortBay. 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 MortBay for inclusion
   in, or documentation of, any of the products owned or managed by
   MortBay (the "Work"). For the purposes of this definition,
   "submitted" means any form of electronic, verbal, or written
   communication sent to MortBay or its 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, MortBay 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."

2. Grant of Copyright License. Subject to the terms and conditions of
   this Agreement, You hereby grant to MortBay and to
   recipients of software distributed by MortBay 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.

3. Grant of Patent License. Subject to the terms and conditions of
   this Agreement, You hereby grant to MortBay and to
   recipients of software distributed by MortBay 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 Agreement for
   that Contribution or Work shall terminate as of the date such
   litigation is filed.

4. 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 MortBay, or that your employer has
   executed a separate Corporate CLA with MortBay.

5. 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.

6. 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.

7. Should You wish to submit work that is not Your original creation,
   You may submit it to MortBay 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]".

8. You agree to notify MortBay of any facts or circumstances of
   which you become aware that would make these representations
   inaccurate in any respect.

Date: 
Please sign: 

