APACHE SLING STARTER CONTENT SUBCOMPONENTS:
The Apache Sling Starter Content includes a  subcomponent with separate copyright notices. 
Your use of the source code for this subcomponent is subject to the terms and conditions 
of the following licenses. 

OpenSans font from  http://www.google.com
Copyright (C) 2011, Google Corporation
Licensed under the Apache License, Version 2.0  http://www.apache.org/licenses/LICENSE-2.0.html
