Apache Felix Dependency Manager Annotation
Copyright 2011 The Apache Software Foundation

This software was developed at the Apache Software Foundation
(http://www.apache.org) and may have dependencies on other
Apache software licensed under Apache License 2.0.

I. Included Third-Party Software

This product includes software from http://www.json.org.
Copyright (c) 2002 JSON.org
Licensed under the JSON License

II. Used Third-Party Software

This product uses software developed at
The OSGi Alliance (http://www.osgi.org/).
Copyright (c) OSGi Alliance (2000, 2009).
Licensed under the Apache License 2.0.

This product uses software developed by Peter Kriens
(http://www.aqute.biz/Code/Bnd)
Copyright 2006-2011 aQute, All rights reserved
Licensed under the Apache License 2.0.

This product uses software from http://www.json.org.
Copyright (c) 2002 JSON.org
Licensed under the JSON License

III. Overall License Summary

- Apache License 2.0
- JSON License
