# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

com.twitter--carbonite--1.5.0=Apache License version 2.0
commons-beanutils--commons-beanutils--1.7.0=Apache License version 2.0
commons-logging--commons-logging--1.0.3=Apache License version 2.0
io.confluent--kafka-avro-serializer--1.0=Apache License version 2.0
io.confluent--kafka-schema-registry-client--1.0=Apache License version 2.0
org.apache.zookeeper--zookeeper--3.4.6=Apache License version 2.0
org.codehaus.jettison--jettison--1.1=Apache License version 2.0
oro--oro--2.0.8=Apache License version 2.0

asm--asm--3.1=BSD 3-Clause License
asm--asm-commons--3.1=BSD 3-Clause License
asm--asm-tree--3.1=BSD 3-Clause License

javax.jms--jms--1.1=COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.1
javax.servlet--jsp-api--2.0=COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.1
javax.servlet--servlet-api--2.5=COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.1
javax.servlet.jsp--jsp-api--2.1=COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.1
javax.transaction--jta--1.1=COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.1
javax.transaction--transaction-api--1.1=COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.1
org.glassfish.jersey--jersey-bom--2.27=COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.1