# This is the official list of Skia authors for copyright purposes.
#
# Before adding your name to this file make sure you have signed the CLA.
# Follow the instructions at https://skia.org/docs/dev/contrib on how to
# sign the CLA.
#
# Names should be added to this file with one of the following patterns:
#
# For individual contributors:
# Name <email address>
#
# For corporate contributors:
# Organization <fnmatch pattern>
# See examples below or python fnmatch module documentation for more information.
#
# Please keep the list sorted alphabetically.

ACCESS CO., LTD. <*@access-company.com>
ARM <*@arm.com>
Aaron O'Mullan <aaron.omullan@gmail.com>
Adobe Systems Incorporated <*@adobe.com>
Adrian E <aehkn@xenhub.one>
Alexander Khovansky <alx.khovansky@gmail.com>
Alexandre Mutel <alexandre_mutel@live.com>
Amazon, Inc <*@amazon.com>
Anthony Catel <paraboul@gmail.com>
Andrew Kurushin <ajax16384@gmail.com>
Ashkan Hosseini <ashkan.hoss@gmail.com>
Barakat Soror <b4r4k47@gmail.com>
Bharat Ahuja <ahujabharat93@gmail.com>
Biswapriyo Nath <nathbappai@gmail.com>
Brian Salomon <briansalomon@gmail.com>
Callum Moffat <smartercallum@gmail.com>
Carmelo Ventimiglia <car.ventimiglia@gmail.com>
Cary Clark <cclark2@gmail.com>
Casey Banner <kcbanner@gmail.com>
Chad Brokaw <cbrokaw@gmail.com>
ChengYang <chengyangyang-hf@loongson.cn>
Christian Swinehart <drafting@samizdat.co>
Christian Plesner Hansen <plesner@t.undra.org>
ColdPaleLight <coldpalelight@gmail.com>
Collabora Ltd <*@collabora.com>
David Bebawy <dbebawy@gmail.com>
Dawson Coleman <dawsonmcoleman@gmail.com>
Deepak Mohan <hop2deep@gmail.com>
Ehsan Akhgari <ehsan.akhgari@gmail.com>
Elad Lahav <e2lahav@gmail.com>
Erik Sombroek <eriksombroek@gmail.com>
Facebook, Inc. <*fb.com>
François Beaufort <beaufort.francois@gmail.com>
George Wright <george@mozilla.com>
GiWan Go <gogil@stealien.com>
Google LLC <*@google.com>
Helmut Januschka <helmut@januschka.com>
Herb Derby <herbderby@gmail.com>
Ho Cheung <uioptt24@gmail.com>
Igalia <*@igalia.com>
Intel <*@intel.com>
Ion Rosca <rosca@adobe.com>
Ivan Kubota <kubota@form.dev>
Jacek Caban <cjacek@gmail.com>
James Clarke <james@clarkezone.io>
Jeff Muizelaar <jmuizelaar@mozilla.com>
JetBrains <*@jetbrains.com>
Joey Bevilacqua <bevilacquajoey@gmail.com>
John Armstrong <jlarmstrongiv@gmail.com>
Jongdeok Kim <jongdeok.kim@navercorp.com>
Jordan Williams <jordan@jwillikers.com>
Jose Mayol <jei.mayol@gmail.com>
Kai Zou <double1kai@gmail.com>
Kaloyan Donev <kdonev@gmail.com>
Kaylee Lubick <kaylee.lubick@gmail.com>
LG Electronics <*@lge.com>
Lee Salzman <lsalzman@mozilla.com>
Linaro <*@linaro.org>
Luis Grimaldo <luisgrimaldo@me.com>
MIPS <*@imgtec.com>
Mainframe North <*@mainframe.co.uk>
Marcin Kazmierczak <mar.kazmierczak@gmail.com>
Marco Alesiani <marco.diiga@gmail.com>
Mark Beznos <mark@mtechnic.me>
Matěj Smyčka <matejsmycka@gmail.com>
Matthew Blanchard <matthewrblanchard@gmail.com>
Matthew Leibowitz <mattleibow@live.com>
Microsoft <*@microsoft.com>
Mike Reed <mike@reedtribe.org>
NVIDIA <*@nvidia.com>
Namse <skatpgusskat@naver.com>
Nils André-Chang <nils@nilsand.re>
Ning Liu <ningliu@invisionapp.com>
Noah Lavine <noah.b.lavine@gmail.com>
Oliver Dawes <olliedawes@gmail.com>
Omeid Matten <contact@omeid.me>
Opera Software ASA <*@opera.com>
Pavel Krajcevski <pavel@cs.unc.edu>
Petar Kirov <petar.p.kirov@gmail.com>
Ping Wang <ping.wang@amd.com>
Raul Tambre <raul@tambre.ee>
Roman Petrenko <roman@canva.com>
Safa Sofuoglu <safasofuoglu@gmail.com>
Sam James <sam@gentoo.org>
Samsung <*@samsung.com>
Samsung Open Source Group <*@osg.samsung.com>
Scene Group Ltd. <*@scenegroup.co>
Sergey Melnikov <Melnikov.Sergey.V@gmail.com>
Shachar Langbeheim <nihohit@gmail.com>
Shekhar Dutta <sherlockdoyle1904@gmail.com>
Sida Zhu <zhusida@bytedance.com>
Skia <*@skia.org>
Skia Buildbots <skia.buildbots@gmail.com>
Sony Mobile Communications Inc. <*@sonymobile.com>
Soso Tsertsvadze <sosotsertsvadze2@gmail.com>
Stan I <stililiev@gmail.com>
Stepan Mikhailiuk <istepancar@gmail.com>
Stephan Hartmann <stha09@googlemail.com>
Steve Singer <steve@ssinger.info>
Sylvestre Ledru <sylvestre.ledru@gmail.com>
The Chromium Authors <*@chromium.org>
Thiago Fransosi Farina <thiago.farina@gmail.com>
Thirumurugan <thiruak1024@gmail.com>
Tyler Denniston <denniston.t@gmail.com>
Vibe Inc <*@vibe.us>
Wenting Shi <wenting_shi@apple.com>
William Candillon <wcandillon@gmail.com>
Wonmin Park <satcom1600@hanmail.net>
Yandex LLC <*@yandex-team.ru>
Yang Guang <yangguang@jwzg.com>
Yong-Hwan Baek <meisterdevhwan@gmail.com>
Yorkie Makoto <yorkiefixer@gmail.com>
Zeng Yong <zengyonghust@gmail.com>
Zhuo Qingliang <zhuo.dev@gmail.com>
Zoho Corporation Private Limited <*@zohocorp.com>
Danil Bulanov <blnvdanil@gmail.com>
Wey <w2284938880@gmail.com>
LinXunFeng <linxunfeng@yeah.net>
Xiaohan Wang <wxh158849067@gmail.com>
Faijur Rahman <faijur.rahman@imagination.corp-partner.google.com>
He Zhai <zhai.he@nxp.com>

# Trusted service accounts.
GitHub Dependabot <(\d+)\+dependabot\[bot\]@users.noreply.github.com>
Recipe roller SA <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Recreate SKPs Bot SA <skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com>
Skia Autorollers SA <skia-autoroll@skia-public.iam.gserviceaccount.com>
Louhi SA <louhi-prod-1-6316342352543744@louhi-prod-1.iam.gserviceaccount.com>
