nifi-media-nar
Copyright 2015-2016 The Apache Software Foundation

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

******************
Apache Software License v2
******************

The following binary components are provided under the Apache Software License v2

    (ASLv2) Metadata-Extractor
      The following NOTICE information applies:
        Metadata-Extractor
        Copyright 2002-2015 Drew Noakes

    (ASLv2) Apache Tika
      Apache Tika
      Copyright 2015 The Apache Software Foundation

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

      Copyright 1993-2010 University Corporation for Atmospheric Research/Unidata
      This software contains code derived from UCAR/Unidata's NetCDF library.

      Tika-server component uses CDDL-licensed dependencies: jersey (http://jersey.java.net/) and
      Grizzly (http://grizzly.java.net/)

      Tika-parsers component uses CDDL/LGPL dual-licensed dependency: jhighlight (https://github.com/codelibs/jhighlight)

      OpenCSV: Copyright 2005 Bytecode Pty Ltd. Licensed under the Apache License, Version 2.0

      IPTC Photo Metadata descriptions Copyright 2010 International Press Telecommunications Council.
