=========================================================================
==  NOTICE file corresponding to section 4(d) of the Apache License,   ==
==  Version 2.0, in this case for the Apache MyFaces Trinidad Plugins  ==
=========================================================================

This product includes software developed by 
The Apache Software Foundation (http://www.apache.org/).

Portions of this software were originally based on the following:

 - software copyright (c) 2000-2006, Oracle Corp, <http://www.oracle.com/>.
and are licensed to the Apache Software Foundation under the 
"Software Grant and Corporate Contribution License Agreement"

See the LICENSE.txt file for information on all licenses 
associated with this software.