Apache Felix Sigil Common Core
Copyright 2010 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 developed by Peter Kriens
(http://www.aqute.biz/Code/Bnd)
Copyright 2006-2009 aQute, All rights reserved
Licensed under the Apache License 2.0.

II. Used Third-Party Software

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

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.

III. License Summary
- Apache License 2.0
