Apache Yetus
Copyright 2008-2016 The Apache Software Foundation

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

---
Additional licenses for the Apache Yetus Source/Website:
---

* Bootstrap: Copyright (c) 2011-2015 Twitter, Inc
* GLYPHICONS FREE: Copyright (c) 2010-2015 Jan Kovarik
* Font Awesome: Copyright (c) 2015 Dave Gandy
* JQuery: Copyright jQuery Foundation and other contributors

See LICENSE for terms.
