Apache NiFi
Copyright 2014-2015 The Apache Software Foundation

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

Please note that this product bundles software libraries which are covered
by the following "weak copyleft" style licenses including; 
CDDL v1.0, CDDL v1.1, MPL v2.0, and EPL v1.0

Please note that this product bundles software libraries which are licensed
to the 'public domain'.

Please see LICENSE for additional copyright and licensing information.
