Apache Directory Daemon
Copyright 2007 The Apache Software Foundation

This product includes software developed at 
The Apache Software Foundation (http://www.apache.org/).

This product uses JUnit (http://junit.org/).

This product includes a distribution of NLOG4J 
(http://www.slf4j.org/nlog4j/).

This product includes a distribution of Antlr 2
(http://antlr.org).

This product includes a distribution of JDBM
(http://jdbm.sourceforge.net).

This product includes forked classes from the Legion of the Bouncy Castle
(http://www.bouncycastle.org).

This product includes a distribution of Spring Framework 
(http://www.springframework.org).

This product includes a distribution of Izpack Installer
(http://www.izforge.com/izpack/).

This product includes a distribution of Inno Setup Installer
(http://www.jrsoftware.org/isinfo.php).

This product includes derivatives of forked schema files from OpenLDAP
(http://openldap.org)

