statefun-flink-distribution
Copyright 2014-2020 The Apache Software Foundation

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

This project bundles the following dependencies under the Apache Software License 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)

- com.kohlschutter.junixsocket:junixsocket-core:2.3.2
- com.kohlschutter.junixsocket:junixsocket-common:2.3.2
- com.kohlschutter.junixsocket:junixsocket-native-common:2.3.2
- commons-codec:commons-codec:1.10
- commons-lang:commons-lang:2.6
- commons-logging:commons-logging:1.1.3
- commons-io:commons-io:2.4
- com.google.auto.service:auto-service-annotations:1.0-rc6
- com.google.guava:guava:18.0
- org.apache.commons:commons-lang3:3.3.2
- org.apache.kafka:kafka-clients:2.4.1
- org.lz4:lz4-java:1.6.0
- com.squareup.okhttp3:okhttp:3.14.6
- com.squareup.okio:okio:1.17.2
- com.fasterxml.jackson.core:jackson-databind:2.10.1
- com.fasterxml.jackson.core:jackson-annotations:2.10.1
- com.fasterxml.jackson.core:jackson-core:2.10.1
- com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.10.1
- joda-time:joda-time:2.5
- software.amazon.ion:ion-java:1.0.2
- io.dropwizard.metrics:metrics-core:jar:3.2.6

This project bundles the following dependencies under the BSD license.
See bundled license files under "META-INF/licenses" for details.

- com.github.luben:zstd-jni:1.4.3-1
- com.google.protobuf:protobuf-java:3.7.1
