Apache Druid
Copyright 2019 The Apache Software Foundation

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


############ SOURCE/JAVA-CORE ############

================= Apache Calcite 1.10.0 =================
Apache Calcite
Copyright 2012-2019 The Apache Software Foundation

This product is based on source code originally developed
by DynamoBI Corporation, LucidEra Inc., SQLstream Inc. and others
under the auspices of the Eigenbase Foundation
and released as the LucidDB project.




================= Apache Flink 1.8.1 =================
Apache Flink
Copyright 2014-2019 The Apache Software Foundation




================= Apache Hadoop 2.8.5 =================
Apache Hadoop
Copyright 2009-2017 The Apache Software Foundation




================= Apache Hive 2.0.0 =================
Apache Hive
Copyright 2008-2015 The Apache Software Foundation




================= Apache Hive 2.0.1 =================
Apache Hive
Copyright 2008-2016 The Apache Software Foundation




================= Apache Hive 2.7.0 =================
Apache Hive
Copyright 2008-2018 The Apache Software Foundation




================= Apache Kafka 1.0 =================
Apache Kafka
Copyright 2017 The Apache Software Foundation.




================= Apache Lucene 6.2.0 =================
Apache Lucene
Copyright 2014 The Apache Software Foundation




================= Metamarkets bytebuffer-collections 0.2.5 =================
bytebuffer-collections
Copyright 2011-2015 Metamarkets Group Inc.




================= Metamarkets java-util 1.3.3 =================
java-util
Copyright 2011-2017 Metamarkets Group Inc.




================= Metamarkets extendedset 1.3.10 =================
extendedset
Copyright 2012 Metamarkets Group Inc.

-------------------------------------------------------------------------------

This library contains a modified version of Alessandro Colantonio's CONCISE
(COmpressed 'N' Composable Integer SEt) library, extending the functionality of
ConciseSet to use IntBuffers.



