# Below is a list of people and organizations that have contributed
# to the R8 project. Names should be added to the list like so:
#
#   Name/Organization <email address>

Google Inc.
Uber Technologies Inc.
Albert Jin <albert.jin@gmail.com>
