Legacy scopes come first and pass through verbatim (order and duplicates
included, so a request without grants is byte-for-byte what it was before
grants existed). Derived keys follow, minus any already present.
Throws
InvalidPdppGrantError when a grant does not fit the grammar.
The scope entries one request asks for: legacy
scopesand the keys derived fromgrants.