Apache NLPCraft
Copyright (C) 2020 The Apache Software Foundation

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

Protocol Buffers
Copyright 2008 Google Inc.
MIT License

OpenCensus
Copyright 2017, OpenCensus Authors
ALv2 License

OpenZipkin
Copyright 2015-2020 The OpenZipkin Authors
ALv2 License

Jaeger Tracing
Copyright (c) 2018, The Jaeger Authors
Copyright (c) 2016, Uber Technologies Inc.
ALv2 License

Apache Thrift
Copyright (C) 2006 - 2019, The Apache Software Foundation
ALv2 License

Prometheus
Copyright 2012-2015 The Prometheus Authors
Includes software developed at SoundCloud Ltd. (https://soundcloud.com/).
ALv2 License

ANTLR
Copyright (c) 2012 Terence Parr and Sam Harwell
BSD License

Apache Commons (and sub-projects)
Copyright 2001-2020 The Apache Software Foundation
ALv2 License

Apache HttpComponents Client
Copyright 1999-2020 The Apache Software Foundation
ALv2 License

Apache Ignite
Copyright 2014-2020 The Apache Software Foundation
ALv2 License

Apache Commons Logging
Copyright 2003-2016 The Apache Software Foundation
ALv2 License

Apache OpenNLP
Copyright 2017 The Apache Software Foundation
ALv2 License

Scala Logging
Copyright 2014 Typesafe Inc.
ALv2 License

Akka
Copyright (C) 2009-2020 Lightbend Inc.
ALv2 License

JSOUP
Copyright (c) 2009-2020 Jonathan Hedley <https://jsoup.org/>
MIT License

Apache Tika
Copyright 2015 The Apache Software Foundation
Copyright 1993-2010 University Corporation for Atmospheric Research/Unidata
Copyright 2005 Bytecode Pty Ltd.
ALv2 License

Scala Test
Copyright Artima, Inc. (http://www.artima.com/).
ALv2 License

Lift
Copyright 2006-2011 WorldWide Conferencing, LLC
ALv2 License

c3p0
Copyright (C) 2018 Machinery For Change, Inc.
EPL License

extJWNL
Copyright (C) 2010-2018 Aliaksandr Autayeu
Copyright (C) 2000-2007 the JWNL development team
BSD License

SQL Formatter
Copyright (c) 2019 Yohei Yamana
MIT License
