# This is the official list of Go frontend authors for copyright
# purposes.  This file is distinct from the CONTRIBUTORS files.
# See the latter for an explanation.

# Names should be added to this file as
#	Name or Organization <email address>
# The email address is not required for organizations.

# Please keep the list sorted.

Alexander Shopov <ash@kambanaria.org>
Andrew Wilkins <axwalk@gmail.com>
Atos Infogerance
Cavium
Christopher Wedgwood <cw@f00f.org>
Dave Cheney <dave@cheney.net>
Ettl Martin <ettl.martin78@googlemail.com>
Evan Shaw <edsrzf@gmail.com>
Google Inc.
IBM Inc.
James Clarke <jrtc27@jrtc27.com>
Janne Snabb <snabb@epipe.com>
Joel Sherrill <joel.sherrill@gmail.com>
Linaro
Matthias Klose <doko@ubuntu.com>
Rainer Orth <ro@cebitec.uni-bielefeld.de>
Rémy Oudompheng <oudomphe@phare.normalesup.org>
Red Hat, Inc.
Sanjoy Das <sanjoy@playingwithpointers.com>
Shenghou Ma <minux@golang.org> <minux.ma@gmail.com>
Uros Bizjak <ubizjak@gmail.com>
Vinu Rajashekhar <vinutheraj@gmail.com>
Xia Bin <snyh@snyh.org>
