# Global OWNERS that can approve Perfetto changes.
# Please look first at OWNERS in the various subdirectories before falling back
# on this, as the former tend to be more brain-cache-hot.

# Perfetto tracing internals and API/ABI boundaries.
primiano@google.com
skyostil@google.com

# UI, Ftrace interop, traced_probes, protozero, Android internals.

# Trace Processor, metrics, infra.
lalitm@google.com
mayzner@google.com

# Callstack / memory profilers, traced_probes & Linux internals.
ddiproietto@google.com
rsavitski@google.com

# Chromium-related things and tracing SDK.
eseckler@google.com
nuskos@google.com
oysteine@google.com

# UI, Chromium-related metrics and simpler trace processor changes.
altimin@google.com

# UI
stevegolton@google.com

# Most Android-related metrics.
ilkos@google.com

# fmayer@ left the team. Please try first rsavitski@, ddiproietto@ or primiano@
# and leave fmayer@ as an emergency-only escalation on profilers.
fmayer@google.com

# chromium.org aliases for adding DEPS entries from chromium subprojects to
# third_party/perfetto.
eseckler@chromium.org
nuskos@chromium.org
skyostil@chromium.org
