Apache Rave
Copyright 2011-2013 The Apache Software Foundation

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

This product includes software (Bootstrap) developed at
Twitter (http://www.twitter.com/).
