Apache OpenMeetings
Copyright 2011-2017 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

This product includes icons from FamFamFam Icon Set Silk.
http://www.famfamfam.com/lab/icons/silk/

This product includes icons from Yusuke Kamiyamane.
http://p.yusukekamiyamane.com/

This product includes free icons from FatCow.
http://www.fatcow.com/free-icons
