Apache Felix UPnP Sample Binary-Light
Copyright 2006-2009 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.

II. Used Software

This product uses software developed at
The OSGi Alliance (http://www.osgi.org/).
Copyright 2006-2008 The OSGi Alliance.
Licensed under the Apache License 2.0.

This product uses software developed at
The Apache Software Foundation (http://www.apache.org/).
Licensed under the Apache License 2.0.


III. License Summary
- Apache License 2.0
- BSD License
