Apache Felix Karaf
Copyright 2010 The Apache Software Foundation


I. Included Software

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
Licensed under the Apache License 2.0.

The PDF manual has been generated using http://www.princexml.com/
and contains an attribution which should not be removed by
licensee.

This product includes software written by
Hakon Wium Lie and Bert Bos.
Licensed under the MIT License.

II. Used Software

This product uses software developed at
The OSGi Alliance (http://www.osgi.org/).
Copyright (c) OSGi Alliance (2000, 2010).
Licensed under the Apache License 2.0.

III. License Summary
- Apache License 2.0
- MIT License
