# This the official list of Bazel 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.

Google Inc.
Anthony Bellissimo <twon33@gmail.com>
Volker Braun <vbraun.name@gmail.com>
Thomas Broyer <t.broyer@ltgt.net>
Steven Dee <steven@choosemuse.com>
Thiago Farina <tfarina@chromium.org>
Peter Foley <pefoley2@pefoley.com>
Roland Huß <roland@jolokia.org>
Erik Kuefler <ekuefler@gmail.com>
liuhuahang <liuhuahang@zerus.co>
David Mankin <dmankin@atlassian.com>
Kamal Marhubi <kamal@marhubi.com>
Carl Mastrangelo <carl-mastrangelo@users.noreply.github.com>
Kyle Moffett <kyle@moffetthome.net>
NicholasGorski <nicholasgorski@outlook.com>
Allen Porter <allen.porter@gmail.com>
Doug Rabson <dfr@rabson.org>
David Santiago <david.santiago@gmail.com>
John Shimek <varikin@gmail.com>
Brian Silverman <bsilver16384@gmail.com>
John Sullivan <john.t.sullivan@gmail.com>
Topher <topher.the.geek@gmail.com>
Zhong Wang <linuxerwang@gmail.com>
Kevin Watts <kevinwwatts@gmail.com>
Jie Yu <yujie.jay@gmail.com>
Andrew Z Allen <me@andrewzallen.com>
Ming Zhao <mzhao@luminatewireless.com>
