# https://web.archive.org/web/20170218093716/https://www.adobe.com/products/postscript/pdfs/PLRM.pdf
# TODO(jvoisin) Add more, starting from page 318


header="%!PS"

#types
"array"
"packedarray"
"dict"
"string"
"userdict"
"$error"
"statusdict"
"FontDirectory"
"globaldict"
"systemdict"
"GlobalFontDirectory"
"Order"
"DateSource"
"BitsPerSample"
"Encode"
"Decode"
"Size"

# Stack operators
"dup"
"exch"
"pop"
"copy"
"roll"
"index"
"mark"
"clear"
"count"
"counttomark"
"cleartomark"

# maths
"add"
"sub"
"mul"
"div"
"idiv"
"mod"
"abs"
"neg"
"ceiling"
"floor"
"round"
"truncate"
"sqrt"
"exp"
"ln"
"log"
"rand"
"srang"
"rrand"

# arrays
"get"
"put"
"copy"
"length"
"forall"
"getinterval"
"putinterval"
"aload"
"astore"
"mark"
"setpacking"
"currentpacking"
"begin"
"end"
"def"
"store"
"load"
"where"
"countdictstack"
"cleardictstack"
"dictstack"
"known"
"maxlength"
"undef"
"<<"
">>"
"search"
"anchorsearch"
"token"

# relational operators
"eq"
"ne"
"gt"
"ge"
"lt"
"le"
"and"
"or"
"xor"
"true"
"false"
"bitshift"


#control operators
"if"
"else"
"ifelse"
"exec"
"for"
"repeat"
"loop"
"forall"
"pathforall"
"kshow"
"exit"
"countexecstack"
"execstack"
"stop"
"errordict"
"stopped"


# type
"type"
"xcheck"
"rcheck"
"wcheck"
"cvlit"
"cvx"
"readonly"
"executeonly"
"noacces"
"cvi"
"cvr"
"cns"
"cvs"
"cvrs"

#misc
"print"
"invalidaccess"
"gcheck"
"showpage"
"currentgstate"
"currentfile"
"status"
"byteavailable"
"setdevparams"
"currentdevparams"
"Predictor"
"Columns"
"Colors"
"BitsPerComponent"
"Uncompressed"
"EndOfLine"
"EncodedByteAlign"
"EndOfBlock"
"Blackls1"
"DamagedRowsBeforeError"
"CloseTarget"
"HuffTables"
"ColorTransform"


# vm
"load"
"save"
"restore"
"setglobal"
"grestoreall"
"invalidrestore"
"startjob"
"exitserver"

# User objects
"defineuserobject"
"undefineuserobject"
"execuserobject"
"UserObjects"

#i/o
"read"
"write"
"readstring"
"readline"
"writestring"
"readhexstring"
"writehexstring"
"token"
"flush"
"flushfile"


# files
"file"
"deletefile"
"renamefile"
"status"
"filenameforall"
"setfileposition"
"fileposition"
"%stdin"
"%stdout"
"%stderr"
"%statementedit"
"%lineedit"

# Filters
"ASCII85Decode"
"ASCII85Encode"
"ASCIIHexDecode"
"ASCIIHexEncode"
"Decode"
"Encode"
"RunLengthEncode"
"RunLengthDecode"
"CCITTFaxEncode"
"CCITTFaxDecode"
"DCTEncode"
"DCTDecode"
"ReusableStreamDecode"
"NullEncode"
"SubFileDecode"
"filter"
"LWZEncode"
"LWZDecode"
"FlateEncode"
"FlateDecode"
"EODCount"
"EODString"
"CloseSource"


# Resources
"findresource"
"resourcestatus"
"resourceforall"
"definerresource"
"undefineresource"
"findfont"
"definefont"
"resourcestatsu"
"Font"
"CIDFont"
"CMap"
"FontSet"
"Encoding"
"Form"
"Pattern"
"ProcSet"
"ColorSpace"
"Halftone"
"ColorRendering"
"IdiomSet"
"Inkparam"
"TrapParams"
"OutputDevice"
"Controllangue"
"Localization"
"PDL"
"HWOptions"
"Filter"
"ColorSpaceFamily"
"Emulator"
"IODevice"
"ColorRenderingType"
"FMapType"
"FontType"
"FormType"
"HalftoneType"
"ImageType"
"PatternType"
"FunctionType"
"ShadingType"
"TrappingType"
"Category"
"Generic"
"BitMapFontInit"
"CIDInit"
"ColorRendering"
"FontSetInit"
"Trapping"
"ColorSpace"
"ColorSpaceFamily"
"sethalftone"
"DefineResource"
"UndefineResource"
"FindResource"
"ResourceStatus"
"ResourceForAll"
"Category"
"InstaceType"
"ResourceFileName"
"Intent"
"AsyncRead"
"Times-Roman"


# Error handling
"errorname"
"errorinfo"
"command"
"newerror"
"ostack"
"estack"
"dstack"
"recordstacks"
"binary"
"bind"
"average"


# Image models
"CTM"
"DeviceGray"
"arc"
"arcn"
"artct"
"clip"
"cliprestore"
"clipsave"
"closepath"
"currentlinewidth"
"curveto"
"fill"
"grestone"
"gsave"
"image"
"ineofill"
"infill"
"instroke"
"inueofill"
"inustroke"
"lineto"
"moveto"
"newpath"
"nocurrentpoint"
"path"
"position"
"rcurveto"
"rlineto"
"setbox"
"setlinewidth"
"show"
"stroke"
"ucache"
"ufill"
"ustroke"
"cvlit"
"ufill"
"ueofill"
"rectfill"
"rectstoke"
"rectclip"
"execform"
"FormType"
"XIUD"
"BBox"
"Matrix"
"PaintProc"
"Implementation"


# Colorspace
"setcolorspace"
"setgray"
"setrgbcolor"
"setcmykcolor"
"image"
"colorimage"
"sethsbcolor"
"CIEBasedABC"
"CIEBasedA"
"CIEBaseDEF"
"CIEBaseDEFG"
"Pattern"
"Indexed"
"Separation"
"DeviceN"
"setpattern"
"currentgray"
"currentrgbcolor"
"currentcmykcolor"
"setcachedevice"
"setcachedevice2"
"BuildGlyph"
"BuildChar"
"CharString"
"shfill"
"setundercolorremoval"
"settransfer"
"setscreen"
"sethalftone"
"setcolortransfer"
"DeviceRGB"
"DeviceCMYK"
"DeviceGray"
"RangeABC"
"DecodeABC"
"MatrixABC"
"RangeLMN"
"DecodeLMN"
"MatrixLMN"
"WhitePoint"
"BlackPoint"


# Patterns
"PatternType"
"XUID"
"PaintProc"
"BBox"
"XStep"
"YStep"
"PaintType"
"TilingType"
"Implementation"
"Shading"
"ShadingType"
"AntiAlias"
"Coords"
"BitsPerFlag"
"BitsPerCoordinate"
"MultipleDataSources"


# Misc things
"[-1, 1, -1, 1]"
"[-1 1]"
"1337"
"<</"
