# Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

# Blank lines and comments are ignored.
# Comments can also be inline like 'correct # this is ok'.
# Note that at least one space before the hash is required.

a0x
a1x
a2x
aa
aaa
abc
abcompile
actions
affected
albeit
allocations
anon
approval
approximation
asserter
auth
autobianchi
b0x
b1x
b2x
ba
backed
bailout
bash
bat
bbb
bc
bench
benchmark
besides
beta
bigger
blacklist
blah
blindly
blocked
blorp
bootstrap
bots
bowtie
brave
brown
builddir
bulk2
bulkcompile
c's
cafebabe
callable
camel
capitalized
casing
cc
ccc
charcode
charset
checkout
circular
cli
cloneable
cmp
cnn
coded
codepath
collisions
commit
companion
comparer
comparisons
compilations
compiler's
complement
completers
confirm
consecutive
considering
constrains
consts
contract
conversion
conversions
crashes
cumulative
dacoharkes
daemon
dartanalyzer
dartfile
dashes
day
db
decrements
def
depended
depfile
desc
deviation
dfast
dictionaries
dictionary
differs
dillfile
dills
dirname
disagree
disallowed
disconnect
discovering
dispatcher
doctype
doesnt
dog
downstream
dumping
dupe
durations
dyn
e's
e2e
ease
ec
edits
elapse
ell
entrypoint
entrypoints
epoch
err
everytime
evicting
exe
execute
exercised
exercises
exitcode
exiting
exits
expanded
expands
expansion
expansive
explain
extern
fac
falling
favors
fibonacci
filesystem
finder
fisk
five
floor
forbidden
forces
foreign
fox
fulfill
func
futures
gallery
gamma
gen
generators
git
greeting
gtgt
gulp
gunk
hackish
harness
hest
heuristics
hi
hints
home
hosting
hot
hotreload
hunk
hurray
i'm
ia
ikg
illustrate
implementor
inclosure
increased
incrementally
increments
inspect
insufficient
intact
internet
interpolate
inv
invalidating
isolate
isolates
iter
jumped
kernels
ko
la
lc
ld
le
lightly
likewise
linebreaks
lints
linux
listening
ll
logd
logs
loopback
mac
maker
matters
mc
mds
measured
met
metric
metrics
mf
micro
mismatched
miss
misspelled
mistake
mistakes
month
mx
mysdk
negatable
ninja
nonexisting
numerator
observable
observatory
oh
okay
oracle
overlay
party
pause
periodic
periodically
person
phrase
pink
places
policy
portions
pp
preliminary
prematurely
pretends
producer
profiler
promotes
propagated
protected
provider
pubspec
pv
px
py
python
quot
r"
r"\s
r"k
rd
reachability
reality
recompile
redir
redirections
reducer
referring
reflectee
reflective
regenerate
regressions
reload
remap
remaps
repeating
repro
resource
respected
response
retains
rev
risky
say
scans
screen
scripts
sdkroot
sdks
secondary
segment
shipped
shot
signalled
spans
spell
spellcheck
spelling
spent
splitting
sqrt
std
stdio
strip
strongest
stub's
stupid
subcommand
subdir
subtool
subtools
suite
summarization
summarized
superinterface
supermixin
supplement
templates
thereof
thing
threw
timeout
timer
timing
timings
title
tpt
transitively
triangle
trigger
triggers
trimming
trivially
truncated
tt
txt
typeargs
typeparam
typeparambounds
unawaited
unbreak
unregistered
untransformed
untrimmed
uppercase
upward
uses8
usual
val
vars
verbatim
versioning
waiting
walt
warmup
whitelist
whitelisting
wins
workflow
x's
xxx
y's
year
