# 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.

ahe
ai
aiki
aka
ansi
ap
api
arg
args
argument1
askesc
ast
asy
atm
automagically
b
b23d3b125e9d246e07a2b43b61740759a0dace
backping
bang
bar
baz
bazel
bb
benchmarks
bf
bi
bin
bj
blah
blob
bn
bodied
bof
bom
brianwilkerson
bs
bsd
builder`s
bulder
c
callee
caller's
callers
came
canonicalizer
cant
caret
carets
carriage
cascades
cast
casted
casts
cfe
ch
char
chars
ci
ck
cl
claim
class's
cls
cn
codebase
codec
codes
com
combinator
combiner
component's
cond
config
configs
constness
contra
core
core's
cr
cut
cwd
d
d11e
dag
danrubel
daringfireball
dartbug
dartdoc
dartlang
ddc
ddk
dec
decl
del
demangle
demangled
deps
desc
dev
diff
diffs
digest
digests
dmitryas
doc
docs
dom
dpkg
dq
dummy
e
easy
ecma
ecosystem
ed
eek
ef
elem
elt
em
emit
emitted
en
env
eof
eq
eval
exp
exportee
exportees
expr
ext
f
fangorn
fasta
fe
feff
ff
ffff
ffi
fishythefish
floitsch
fn
fo
foo
foobar
formed
former
frontend
fs
futured
g
gets
gft
git
github
glb
gn
googlesource
goto
gotos
gt
gypi
gz
gzip
gzipped
h
hfs
hillerstrom
hoc
href
html
https
i
id
ideographic
idn
ids
iff
impl
inc
infos
init
ints
io
issuecomment
j
java
jensj
johnniwinther
js
json
juxtaposition
juxtapositions
k
k’s
kernel's
kernel2kernel
klass
kmillikin
kustermann
l
lang
leafp
len
lex
lexemes
lf
lhs
lib
libs
lm
lry
ls
lt
lvalue
m
markdown
mb
md
me
met
meta
method1a
method1b
method2a
method2b
method3a
method3b
mi
min
mk
mm
mn
monomorphic
msg
n
na
nbsp
ncs
ncurses
nd
nextnext
ni
nj
nk
nnbd
nr
ns
nsm
nullability
nullable
o
obj
offs
ogham
op
opt
opts
ordinal
org
os
overshadowed
p
p1
p2
param
params
paren
parens
path
pathos
paulberry
pay
payload
pdf
per
perf
pi
pkg
pm
pn
pointwise
pos
postfix
pre
prebuilt
prev
printer
printf
println
proc
proto
ps
q
q'i
qi
qm
quad
r
r'\s
radix
ran
re
reach
reassigned
rebind
rebuild
recompiled
recompiling
recompute
recomputed
red
redirectee
reexports
ref
reflect
reg
rehash
rejoin
relativize
reparse
res
rhs
ri
rn
rnystrom
s
sb
scheglov
sdk's
server
service
setaf
sh
shas
si
sigmund
six
size
sj
slash
slb
smi
sn
socket
spec
spec'ed
sq
src
st
stderr
stdin
stdio
stdout
stmt
stub
stubs
stx
sub
subexpression
subexpression's
subexpressions
subst
substed
superclasses
superinitializer
supernode
supers
svg
sw
synth
t
tear
tearing
tearoff
tearoffs
tell
tells
temp
term
termcap
tex
th
ti
tick
ticker
tid
tiki
tilde
till
tj
tm
tmp
tn
todo
token's
tokenize
tokenized
tput
ts
tty
typeref
u
ui
uint
uint16
uint32
uint8
un
unalias
uncomment
unconstrained
unequal
unescape
unexact
unfinalized
unfuture
unfutured
unlinked
unlower
unparsed
update2018
ur
uri's
url
urls
utf16
utf8
util
utils
v
variable's
variance
variances
vegorov
vtab
w
wc
weren't
werror
wiki
wikipedia
with1
writeln
wrt
www
x
x0
x00
x10
x10ffff
x180
x1b
x1f
x1ff
x2
x200
x202
x205
x3
x5
x7
xcodebuild
xd
xdbff
xdc
xdfff
xi
xm
xn
xor
xterm
xx
xxxx
y
yaml
yet
yielding
yields
z
zi
zip
zn
zone
zoned
