vt

package
v0.0.0-...-6125e6c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 28, 2025 License: BSD-3-Clause Imports: 20 Imported by: 0

Documentation

Overview

Copyright (c) 2025, Ben Walton All rights reserved.

Copyright (c) 2025, Ben Walton All rights reserved.

Copyright (c) 2025, Ben Walton All rights reserved.

Copyright (c) 2025, Ben Walton All rights reserved.

Copyright (c) 2025, Ben Walton All rights reserved.

Copyright (c) 2025, Ben Walton All rights reserved.

Copyright (c) 2025, Ben Walton All rights reserved.

Copyright (c) 2025, Ben Walton All rights reserved.

Copyright (c) 2025, Ben Walton All rights reserved.

Copyright (c) 2025, Ben Walton All rights reserved.

Copyright (c) 2025, Ben Walton All rights reserved.

Copyright (c) 2025, Ben Walton All rights reserved.

Copyright (c) 2025, Ben Walton All rights reserved.

Index

Constants

View Source
const (
	UNSET = iota
	BASIC
	ANSI256
	RGB
)
View Source
const (
	// Like it's 1975 baby!
	DEF_ROWS = 24
	DEF_COLS = 80
)
View Source
const (
	BEL = 0x07 // ^G Bell
	BS  = 0x08 // ^H Backspace
	TAB = 0x09 // ^I Tab \t
	LF  = 0x0a // ^J Line feed \n
	VT  = 0x0b // ^K Vertical tab \v
	FF  = 0x0c // ^L Form feed \f
	CR  = 0x0d // ^M Carriage return \r
	SO  = 0x0e // ^N Switch to G1/alternate charset as default
	SI  = 0x0f // ^O Switch to G0 charset as default
)

Single character functions

View Source
const (
	ESC   = 0x1b
	DECSC = '7'  // DECSC - save cursor
	DECRC = '8'  // DECRC - restore cursor
	IND   = 'D'  // IND - index
	NEL   = 'E'  // NEL - newline
	HTS   = 'H'  // HTS - horizontal tab set
	RI    = 'M'  // RI - reverse index
	DCS   = 'P'  // Device control sequence
	RIS   = 'c'  // RIS - Full reset
	PAM   = '='  // DECAPM  - application keypad
	PNM   = '>'  // DECPNM  - normal keypad
	CSI   = 0x5b // ]; control sequence introducer
	OSC   = 0x5d // [; operating system command
	ST    = '\\' // string terminator
)

ESC sequence controls

View Source
const (
	CSI_ICH        = '@' // insert blank characters
	CSI_CUU        = 'A' // cursor up
	CSI_CUD        = 'B' // cursor down
	CSI_CUF        = 'C' // cursor forward
	CSI_CUB        = 'D' // cursor back
	CSI_CNL        = 'E' // cursor next line
	CSI_CPL        = 'F' // cursor previous line
	CSI_CHA        = 'G' // cursor horizontal attribute
	CSI_CUP        = 'H' // cursor position
	CSI_CHT        = 'I' // cursor forward tabulation
	CSI_ED         = 'J' // erase in display
	CSI_EL         = 'K' // erase in line
	CSI_IL         = 'L' // insert line(s)
	CSI_DL         = 'M' // delete line(s)
	CSI_DCH        = 'P' // delete character(s)
	CSI_POS        = 'R' // cursor position report
	CSI_SU         = 'S' // scroll up
	CSI_SD         = 'T' // scroll down
	CSI_DECST8C    = 'W' // DEC reset tab stops, starting at col 9, every 8 columns
	CSI_ECH        = 'X' // erase characters
	CSI_CBT        = 'Z' // cursor backward tabulation
	CSI_HPA        = '`' // character position absolute (column), default [row,1]
	CSI_HPR        = 'a' // character position relative (column), default [row,col+1]
	CSI_DA         = 'c' // send (primary) device attributes
	CSI_VPA        = 'd' // line position absolute (row), default [1,col]
	CSI_VPR        = 'e' // line position relative (row), default [row+1,col]
	CSI_HVP        = 'f' // horizontal vertical position
	CSI_TBC        = 'g' // tab stop clear
	CSI_MODE_SET   = 'h' // h typically enables or activates something
	CSI_MODE_RESET = 'l' // l typically disables or deactivates something
	CSI_SGR        = 'm' // select graphic rendition
	CSI_DSR        = 'n' // device status report
	CSI_RIS        = 'p' // soft reset (vt220)
	CSI_Q_MULTI    = 'q' // overloaded, common for returning xterm name and version
	CSI_DECSTBM    = 'r' // set top and bottom margin
	CSI_DECSLRM    = 's' // set left and right margin
	CSI_XTWINOPS   = 't' // window manipulation, xterm/dtterm stuff mostly
)

CSI codes

View Source
const (
	RESET            = 0
	INTENSITY_BOLD   = 1
	INTENSITY_FAINT  = 2
	ITALIC_ON        = 3
	UNDERLINE_ON     = 4
	BLINK_ON         = 5
	RAPID_BLINK_ON   = 6
	REVERSED_ON      = 7
	INVISIBLE_ON     = 8
	STRIKEOUT_ON     = 9
	PRIMARY_FONT     = 10
	INTENSITY_NORMAL = 22
	ITALIC_OFF       = 23
	UNDERLINE_OFF    = 24
	BLINK_OFF        = 25
	REVERSED_OFF     = 27
	INVISIBLE_OFF    = 28
	STRIKEOUT_OFF    = 29
)

CSI SGR Format codes

View Source
const (
	FG_BLACK          = 30
	FG_RED            = 31
	FG_GREEN          = 32
	FG_YELLOW         = 33
	FG_BLUE           = 34
	FG_MAGENTA        = 35
	FG_CYAN           = 36
	FG_WHITE          = 37
	SET_FG            = 38
	FG_DEF            = 39
	BG_BLACK          = 40
	BG_RED            = 41
	BG_GREEN          = 42
	BG_YELLOW         = 43
	BG_BLUE           = 44
	BG_MAGENTA        = 45
	BG_CYAN           = 46
	BG_WHITE          = 47
	SET_BG            = 48
	BG_DEF            = 49
	FG_BRIGHT_BLACK   = 90
	FG_BRIGHT_RED     = 91
	FG_BRIGHT_GREEN   = 92
	FG_BRIGHT_YELLOW  = 93
	FG_BRIGHT_BLUE    = 94
	FG_BRIGHT_MAGENTA = 95
	FG_BRIGHT_CYAN    = 96
	FG_BRIGHT_WHITE   = 97
	BG_BRIGHT_BLACK   = 100
	BG_BRIGHT_RED     = 101
	BG_BRIGHT_GREEN   = 102
	BG_BRIGHT_YELLOW  = 103
	BG_BRIGHT_BLUE    = 104
	BG_BRIGHT_MAGENTA = 105
	BG_BRIGHT_CYAN    = 106
	BG_BRIGHT_WHITE   = 107
)

CSI SGR Color codes

View Source
const (
	IRM = 4  // Insert mode
	LNM = 20 // Automatic New Line Mode
)

CSI mode parameter codes

View Source
const (
	DECCKM                 = 1    // DEC application cursor keys
	DECCOLM                = 3    // DEC 80 (l) / 132 (h) mode DECCOLM
	SMOOTH_SCROLL          = 4    // Smooth scroll DECSCLM
	REV_VIDEO              = 5    // Reverse video DECSCNM
	DECOM                  = 6    // Origin Mode DECOM
	DECAWM                 = 7    // DEC autowrap mode, default reset
	AUTO_REPEAT            = 8    // Auto-repeat keys DECARM
	MOUSE_XY_PRESS         = 9    // Mouse X & Y on button press
	BLINK_CURSOR           = 12   // Start blinking cursor
	SHOW_CURSOR            = 25   // Show cursor DECTCEM
	XTERM_80_132           = 40   // Xterm specific to enable/disable 80/132 col reset
	REV_WRAP               = 45   // Xterm's reverse-wraparound mode
	MOUSE_XY_PRESS_RELEASE = 1000 // Mouse X & Y on button press and release
	MOUSE_HILIGHT          = 1001 // Hilight Mouse Tracking
	MOUSE_MOTION           = 1002 // Cell Motion Mouse Tracking
	MOUSE_ALL              = 1003 // All Motion Mouse Tracking
	MOUSE_FOCUS            = 1004 // FocusIn/FocusOut events
	MOUSE_UTF8             = 1005 // UTF-8 Mouse Mode
	MOUSE_SGR              = 1006 // SGR Mouse Mode
	MOUSE_ALT              = 1007 // Alternate scroll mode
	MOUSE_URXVT            = 1015 // urxvt mouse mode
	XTERM_ALT_BUFFER       = 1047 // xterm switch to alternate screen buffer
	XTERM_SAVE_RESTORE     = 1048 // xterm save/restore cursor
	XTERM_SAVE_ALT         = 1049 // xterm save/retore cursor and alt buffer
	BRACKET_PASTE          = 2004 // Bracketed paste, ala xterm
)

CSI private mode parameter codes

View Source
const (
	OSC_ICON_TITLE = "0"
	OSC_ICON       = "1"
	OSC_TITLE      = "2"
	OSC_HYPERLINK  = "8" // hyperlink - https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda
	OSC_SETSIZE    = "X" // Gosh-specific
)

OSC actions

View Source
const (
	TBC_CUR = 0 // clear current tab stop
	TBC_ALL = 3 // clear all tab stops
)

Modes for CSI_TBC

View Source
const (
	ERASE_FROM_CUR = 0 // from cursor to end of line/screen (includes cursor pos)
	ERASE_TO_CUR   = 1 // from start of line/screen to cursor (includes cursor pos)
	ERASE_ALL      = 2 // entire line/screen
)

For erase in display and erase line

View Source
const (
	XTWINOPS_SAVE    = 22
	XTWINOPS_RESTORE = 23
)
View Source
const (
	BOLD       = 1 << 0
	FAINT      = 1 << 1
	ITALIC     = 1 << 2
	BOLD_FAINT = 1 << 3 // it is valid to set both, we handle is specially
	UNDERLINE  = 1 << 4
	BLINK      = 1 << 5
	REVERSED   = 1 << 6
	INVISIBLE  = 1 << 7
	STRIKEOUT  = 1 << 8
)
View Source
const (
	MIN_ROWS = 1
	MIN_COLS = 2
	MAX_ROWS = 511 // taken from libvte
	MAX_COLS = MAX_ROWS
)
View Source
const (
	FRAG_NONE = iota
	FRAG_PRIMARY
	FRAG_SECONDARY
)
View Source
const (
	MAX_EXPECTED_INTERMEDIATE = 10
	MAX_EXPECTED_PARAMS       = 16
)
View Source
const (
	STATE_NONE                = 0
	STATE_CSI_ENTRY           = 1
	STATE_CSI_IGNORE          = 2
	STATE_CSI_INTERMEDIATE    = 3
	STATE_CSI_PARAM           = 4
	STATE_DCS_ENTRY           = 5
	STATE_DCS_IGNORE          = 6
	STATE_DCS_INTERMEDIATE    = 7
	STATE_DCS_PARAM           = 8
	STATE_DCS_PASSThROUGH     = 9
	STATE_ESCAPE              = 10
	STATE_ESCAPE_INTERMEDIATE = 11
	STATE_GROUND              = 12
	STATE_OSC_STRING          = 13
	STATE_SOS_PM_APC_STRING   = 14
)
View Source
const (
	ACTION_NOP          = 0
	ACTION_CLEAR        = 1
	ACTION_COLLECT      = 2
	ACTION_CSI_DISPATCH = 3
	ACTION_ESC_DISPATCH = 4
	ACTION_EXECUTE      = 5
	ACTION_HOOK         = 6
	ACTION_IGNORE       = 7
	ACTION_OSC_END      = 8
	ACTION_OSC_PUT      = 9
	ACTION_OSC_START    = 10
	ACTION_PARAM        = 11
	ACTION_PRINT        = 12
	ACTION_PUT          = 13
	ACTION_UNHOOK       = 14
	ACTION_ERROR        = 15
)
View Source
const FMT_RESET = "\x1b[m"
View Source
const GOSH_VT_VER = "0.8"

Returned when as the version component of the DSC response when the vt is queried for XTERM_VERSION CSI > q. This is not representative of the overall gosh protocol version, but meant as an internal version for the vt emulation.

Variables

View Source
var ACTION_NAMES map[pAction]string = map[pAction]string{
	ACTION_NOP:          "NOP",
	ACTION_CLEAR:        "CLEAR",
	ACTION_COLLECT:      "COLLECT",
	ACTION_CSI_DISPATCH: "CSI_DISPATCH",
	ACTION_ESC_DISPATCH: "ESC_DISPATCH",
	ACTION_EXECUTE:      "EXECUTE",
	ACTION_HOOK:         "HOOK",
	ACTION_IGNORE:       "IGNORE",
	ACTION_OSC_END:      "OSC_END",
	ACTION_OSC_PUT:      "OSC_PUT",
	ACTION_OSC_START:    "OSC_START",
	ACTION_PARAM:        "PARAM",
	ACTION_PRINT:        "PRINT",
	ACTION_PUT:          "PUT",
	ACTION_UNHOOK:       "UNHOOK",
	ACTION_ERROR:        "ERROR",
}
View Source
var EXIT_ACTIONS map[pState]pAction = map[pState]pAction{
	STATE_DCS_PASSThROUGH: ACTION_UNHOOK,
	STATE_OSC_STRING:      ACTION_OSC_END,
}
View Source
var STATE_NAME map[pState]string = map[pState]string{
	STATE_NONE:                "NONE",
	STATE_CSI_ENTRY:           "CSI_ENTRY",
	STATE_CSI_IGNORE:          "CSI_IGNORE",
	STATE_CSI_INTERMEDIATE:    "CSI_INTERMEDIATE",
	STATE_CSI_PARAM:           "CSI_PARAM",
	STATE_DCS_ENTRY:           "DCS_ENTRY",
	STATE_DCS_IGNORE:          "DCS_IGNORE",
	STATE_DCS_INTERMEDIATE:    "DCS_INTERMEDIATE",
	STATE_DCS_PARAM:           "DCS_PARAM",
	STATE_DCS_PASSThROUGH:     "DCS_PASSTHROUGH",
	STATE_ESCAPE:              "ESCAPE",
	STATE_ESCAPE_INTERMEDIATE: "ESCAPE_INTERMEDIATE",
	STATE_GROUND:              "GROUND",
	STATE_OSC_STRING:          "OSC_STRING",
	STATE_SOS_PM_APC_STRING:   "SOS_PM_APC_STRING",
}
View Source
var STATE_TABLE map[pState]map[rune]transition = map[pState]map[rune]transition{
	STATE_CSI_ENTRY: map[rune]transition{
		0x00: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x01: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x02: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x03: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x04: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x05: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x06: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x07: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x08: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x09: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0a: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0b: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0c: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0d: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0e: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0f: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x10: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x11: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x12: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x13: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x14: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x15: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x16: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x17: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x18: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x19: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1a: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x1b: newTransition(ACTION_NOP, STATE_ESCAPE),
		0x1c: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1d: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1e: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1f: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x20: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x21: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x22: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x23: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x24: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x25: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x26: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x27: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x28: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x29: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x2a: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x2b: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x2c: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x2d: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x2e: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x2f: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x30: newTransition(ACTION_PARAM, STATE_CSI_PARAM),
		0x31: newTransition(ACTION_PARAM, STATE_CSI_PARAM),
		0x32: newTransition(ACTION_PARAM, STATE_CSI_PARAM),
		0x33: newTransition(ACTION_PARAM, STATE_CSI_PARAM),
		0x34: newTransition(ACTION_PARAM, STATE_CSI_PARAM),
		0x35: newTransition(ACTION_PARAM, STATE_CSI_PARAM),
		0x36: newTransition(ACTION_PARAM, STATE_CSI_PARAM),
		0x37: newTransition(ACTION_PARAM, STATE_CSI_PARAM),
		0x38: newTransition(ACTION_PARAM, STATE_CSI_PARAM),
		0x39: newTransition(ACTION_PARAM, STATE_CSI_PARAM),
		0x3a: newTransition(ACTION_PARAM, STATE_CSI_PARAM),
		0x3b: newTransition(ACTION_PARAM, STATE_CSI_PARAM),
		0x3c: newTransition(ACTION_COLLECT, STATE_CSI_PARAM),
		0x3d: newTransition(ACTION_COLLECT, STATE_CSI_PARAM),
		0x3e: newTransition(ACTION_COLLECT, STATE_CSI_PARAM),
		0x3f: newTransition(ACTION_COLLECT, STATE_CSI_PARAM),
		0x40: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x41: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x42: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x43: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x44: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x45: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x46: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x47: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x48: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x49: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x4a: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x4b: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x4c: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x4d: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x4e: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x4f: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x50: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x51: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x52: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x53: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x54: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x55: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x56: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x57: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x58: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x59: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x5a: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x5b: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x5c: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x5d: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x5e: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x5f: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x60: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x61: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x62: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x63: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x64: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x65: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x66: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x67: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x68: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x69: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x6a: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x6b: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x6c: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x6d: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x6e: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x6f: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x70: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x71: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x72: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x73: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x74: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x75: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x76: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x77: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x78: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x79: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x7a: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x7b: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x7c: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x7d: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x7e: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x7f: newTransition(ACTION_IGNORE, STATE_NONE),
	},
	STATE_CSI_IGNORE: map[rune]transition{
		0x00: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x01: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x02: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x03: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x04: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x05: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x06: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x07: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x08: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x09: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0a: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0b: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0c: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0d: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0e: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0f: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x10: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x11: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x12: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x13: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x14: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x15: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x16: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x17: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x18: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x19: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1a: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x1b: newTransition(ACTION_NOP, STATE_ESCAPE),
		0x1c: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1d: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1e: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1f: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x20: newTransition(ACTION_IGNORE, STATE_NONE),
		0x21: newTransition(ACTION_IGNORE, STATE_NONE),
		0x22: newTransition(ACTION_IGNORE, STATE_NONE),
		0x23: newTransition(ACTION_IGNORE, STATE_NONE),
		0x24: newTransition(ACTION_IGNORE, STATE_NONE),
		0x25: newTransition(ACTION_IGNORE, STATE_NONE),
		0x26: newTransition(ACTION_IGNORE, STATE_NONE),
		0x27: newTransition(ACTION_IGNORE, STATE_NONE),
		0x28: newTransition(ACTION_IGNORE, STATE_NONE),
		0x29: newTransition(ACTION_IGNORE, STATE_NONE),
		0x2a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x2b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x2c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x2d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x2e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x2f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x30: newTransition(ACTION_IGNORE, STATE_NONE),
		0x31: newTransition(ACTION_IGNORE, STATE_NONE),
		0x32: newTransition(ACTION_IGNORE, STATE_NONE),
		0x33: newTransition(ACTION_IGNORE, STATE_NONE),
		0x34: newTransition(ACTION_IGNORE, STATE_NONE),
		0x35: newTransition(ACTION_IGNORE, STATE_NONE),
		0x36: newTransition(ACTION_IGNORE, STATE_NONE),
		0x37: newTransition(ACTION_IGNORE, STATE_NONE),
		0x38: newTransition(ACTION_IGNORE, STATE_NONE),
		0x39: newTransition(ACTION_IGNORE, STATE_NONE),
		0x3a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x3b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x3c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x3d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x3e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x3f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x40: newTransition(ACTION_NOP, STATE_GROUND),
		0x41: newTransition(ACTION_NOP, STATE_GROUND),
		0x42: newTransition(ACTION_NOP, STATE_GROUND),
		0x43: newTransition(ACTION_NOP, STATE_GROUND),
		0x44: newTransition(ACTION_NOP, STATE_GROUND),
		0x45: newTransition(ACTION_NOP, STATE_GROUND),
		0x46: newTransition(ACTION_NOP, STATE_GROUND),
		0x47: newTransition(ACTION_NOP, STATE_GROUND),
		0x48: newTransition(ACTION_NOP, STATE_GROUND),
		0x49: newTransition(ACTION_NOP, STATE_GROUND),
		0x4a: newTransition(ACTION_NOP, STATE_GROUND),
		0x4b: newTransition(ACTION_NOP, STATE_GROUND),
		0x4c: newTransition(ACTION_NOP, STATE_GROUND),
		0x4d: newTransition(ACTION_NOP, STATE_GROUND),
		0x4e: newTransition(ACTION_NOP, STATE_GROUND),
		0x4f: newTransition(ACTION_NOP, STATE_GROUND),
		0x50: newTransition(ACTION_NOP, STATE_GROUND),
		0x51: newTransition(ACTION_NOP, STATE_GROUND),
		0x52: newTransition(ACTION_NOP, STATE_GROUND),
		0x53: newTransition(ACTION_NOP, STATE_GROUND),
		0x54: newTransition(ACTION_NOP, STATE_GROUND),
		0x55: newTransition(ACTION_NOP, STATE_GROUND),
		0x56: newTransition(ACTION_NOP, STATE_GROUND),
		0x57: newTransition(ACTION_NOP, STATE_GROUND),
		0x58: newTransition(ACTION_NOP, STATE_GROUND),
		0x59: newTransition(ACTION_NOP, STATE_GROUND),
		0x5a: newTransition(ACTION_NOP, STATE_GROUND),
		0x5b: newTransition(ACTION_NOP, STATE_GROUND),
		0x5c: newTransition(ACTION_NOP, STATE_GROUND),
		0x5d: newTransition(ACTION_NOP, STATE_GROUND),
		0x5e: newTransition(ACTION_NOP, STATE_GROUND),
		0x5f: newTransition(ACTION_NOP, STATE_GROUND),
		0x60: newTransition(ACTION_NOP, STATE_GROUND),
		0x61: newTransition(ACTION_NOP, STATE_GROUND),
		0x62: newTransition(ACTION_NOP, STATE_GROUND),
		0x63: newTransition(ACTION_NOP, STATE_GROUND),
		0x64: newTransition(ACTION_NOP, STATE_GROUND),
		0x65: newTransition(ACTION_NOP, STATE_GROUND),
		0x66: newTransition(ACTION_NOP, STATE_GROUND),
		0x67: newTransition(ACTION_NOP, STATE_GROUND),
		0x68: newTransition(ACTION_NOP, STATE_GROUND),
		0x69: newTransition(ACTION_NOP, STATE_GROUND),
		0x6a: newTransition(ACTION_NOP, STATE_GROUND),
		0x6b: newTransition(ACTION_NOP, STATE_GROUND),
		0x6c: newTransition(ACTION_NOP, STATE_GROUND),
		0x6d: newTransition(ACTION_NOP, STATE_GROUND),
		0x6e: newTransition(ACTION_NOP, STATE_GROUND),
		0x6f: newTransition(ACTION_NOP, STATE_GROUND),
		0x70: newTransition(ACTION_NOP, STATE_GROUND),
		0x71: newTransition(ACTION_NOP, STATE_GROUND),
		0x72: newTransition(ACTION_NOP, STATE_GROUND),
		0x73: newTransition(ACTION_NOP, STATE_GROUND),
		0x74: newTransition(ACTION_NOP, STATE_GROUND),
		0x75: newTransition(ACTION_NOP, STATE_GROUND),
		0x76: newTransition(ACTION_NOP, STATE_GROUND),
		0x77: newTransition(ACTION_NOP, STATE_GROUND),
		0x78: newTransition(ACTION_NOP, STATE_GROUND),
		0x79: newTransition(ACTION_NOP, STATE_GROUND),
		0x7a: newTransition(ACTION_NOP, STATE_GROUND),
		0x7b: newTransition(ACTION_NOP, STATE_GROUND),
		0x7c: newTransition(ACTION_NOP, STATE_GROUND),
		0x7d: newTransition(ACTION_NOP, STATE_GROUND),
		0x7e: newTransition(ACTION_NOP, STATE_GROUND),
		0x7f: newTransition(ACTION_IGNORE, STATE_NONE),
	},
	STATE_CSI_INTERMEDIATE: map[rune]transition{
		0x00: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x01: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x02: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x03: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x04: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x05: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x06: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x07: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x08: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x09: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0a: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0b: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0c: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0d: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0e: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0f: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x10: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x11: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x12: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x13: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x14: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x15: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x16: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x17: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x18: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x19: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1a: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x1b: newTransition(ACTION_NOP, STATE_ESCAPE),
		0x1c: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1d: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1e: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1f: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x20: newTransition(ACTION_COLLECT, STATE_NONE),
		0x21: newTransition(ACTION_COLLECT, STATE_NONE),
		0x22: newTransition(ACTION_COLLECT, STATE_NONE),
		0x23: newTransition(ACTION_COLLECT, STATE_NONE),
		0x24: newTransition(ACTION_COLLECT, STATE_NONE),
		0x25: newTransition(ACTION_COLLECT, STATE_NONE),
		0x26: newTransition(ACTION_COLLECT, STATE_NONE),
		0x27: newTransition(ACTION_COLLECT, STATE_NONE),
		0x28: newTransition(ACTION_COLLECT, STATE_NONE),
		0x29: newTransition(ACTION_COLLECT, STATE_NONE),
		0x2a: newTransition(ACTION_COLLECT, STATE_NONE),
		0x2b: newTransition(ACTION_COLLECT, STATE_NONE),
		0x2c: newTransition(ACTION_COLLECT, STATE_NONE),
		0x2d: newTransition(ACTION_COLLECT, STATE_NONE),
		0x2e: newTransition(ACTION_COLLECT, STATE_NONE),
		0x2f: newTransition(ACTION_COLLECT, STATE_NONE),
		0x30: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x31: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x32: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x33: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x34: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x35: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x36: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x37: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x38: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x39: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x3a: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x3b: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x3c: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x3d: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x3e: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x3f: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x40: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x41: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x42: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x43: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x44: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x45: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x46: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x47: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x48: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x49: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x4a: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x4b: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x4c: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x4d: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x4e: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x4f: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x50: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x51: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x52: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x53: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x54: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x55: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x56: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x57: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x58: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x59: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x5a: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x5b: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x5c: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x5d: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x5e: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x5f: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x60: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x61: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x62: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x63: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x64: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x65: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x66: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x67: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x68: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x69: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x6a: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x6b: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x6c: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x6d: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x6e: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x6f: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x70: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x71: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x72: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x73: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x74: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x75: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x76: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x77: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x78: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x79: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x7a: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x7b: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x7c: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x7d: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x7e: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x7f: newTransition(ACTION_IGNORE, STATE_NONE),
	},
	STATE_CSI_PARAM: map[rune]transition{
		0x00: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x01: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x02: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x03: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x04: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x05: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x06: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x07: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x08: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x09: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0a: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0b: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0c: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0d: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0e: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0f: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x10: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x11: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x12: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x13: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x14: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x15: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x16: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x17: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x18: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x19: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1a: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x1b: newTransition(ACTION_NOP, STATE_ESCAPE),
		0x1c: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1d: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1e: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1f: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x20: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x21: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x22: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x23: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x24: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x25: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x26: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x27: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x28: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x29: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x2a: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x2b: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x2c: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x2d: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x2e: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x2f: newTransition(ACTION_COLLECT, STATE_CSI_INTERMEDIATE),
		0x30: newTransition(ACTION_PARAM, STATE_NONE),
		0x31: newTransition(ACTION_PARAM, STATE_NONE),
		0x32: newTransition(ACTION_PARAM, STATE_NONE),
		0x33: newTransition(ACTION_PARAM, STATE_NONE),
		0x34: newTransition(ACTION_PARAM, STATE_NONE),
		0x35: newTransition(ACTION_PARAM, STATE_NONE),
		0x36: newTransition(ACTION_PARAM, STATE_NONE),
		0x37: newTransition(ACTION_PARAM, STATE_NONE),
		0x38: newTransition(ACTION_PARAM, STATE_NONE),
		0x39: newTransition(ACTION_PARAM, STATE_NONE),
		0x3a: newTransition(ACTION_PARAM, STATE_NONE),
		0x3b: newTransition(ACTION_PARAM, STATE_NONE),
		0x3c: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x3d: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x3e: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x3f: newTransition(ACTION_NOP, STATE_CSI_IGNORE),
		0x40: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x41: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x42: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x43: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x44: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x45: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x46: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x47: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x48: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x49: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x4a: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x4b: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x4c: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x4d: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x4e: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x4f: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x50: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x51: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x52: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x53: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x54: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x55: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x56: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x57: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x58: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x59: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x5a: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x5b: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x5c: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x5d: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x5e: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x5f: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x60: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x61: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x62: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x63: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x64: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x65: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x66: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x67: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x68: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x69: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x6a: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x6b: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x6c: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x6d: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x6e: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x6f: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x70: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x71: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x72: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x73: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x74: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x75: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x76: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x77: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x78: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x79: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x7a: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x7b: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x7c: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x7d: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x7e: newTransition(ACTION_CSI_DISPATCH, STATE_GROUND),
		0x7f: newTransition(ACTION_IGNORE, STATE_NONE),
	},
	STATE_DCS_ENTRY: map[rune]transition{
		0x00: newTransition(ACTION_IGNORE, STATE_NONE),
		0x01: newTransition(ACTION_IGNORE, STATE_NONE),
		0x02: newTransition(ACTION_IGNORE, STATE_NONE),
		0x03: newTransition(ACTION_IGNORE, STATE_NONE),
		0x04: newTransition(ACTION_IGNORE, STATE_NONE),
		0x05: newTransition(ACTION_IGNORE, STATE_NONE),
		0x06: newTransition(ACTION_IGNORE, STATE_NONE),
		0x07: newTransition(ACTION_IGNORE, STATE_NONE),
		0x08: newTransition(ACTION_IGNORE, STATE_NONE),
		0x09: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x10: newTransition(ACTION_IGNORE, STATE_NONE),
		0x11: newTransition(ACTION_IGNORE, STATE_NONE),
		0x12: newTransition(ACTION_IGNORE, STATE_NONE),
		0x13: newTransition(ACTION_IGNORE, STATE_NONE),
		0x14: newTransition(ACTION_IGNORE, STATE_NONE),
		0x15: newTransition(ACTION_IGNORE, STATE_NONE),
		0x16: newTransition(ACTION_IGNORE, STATE_NONE),
		0x17: newTransition(ACTION_IGNORE, STATE_NONE),
		0x18: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x19: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1a: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x1b: newTransition(ACTION_NOP, STATE_ESCAPE),
		0x1c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x20: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x21: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x22: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x23: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x24: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x25: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x26: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x27: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x28: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x29: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x2a: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x2b: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x2c: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x2d: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x2e: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x2f: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x30: newTransition(ACTION_PARAM, STATE_DCS_PARAM),
		0x31: newTransition(ACTION_PARAM, STATE_DCS_PARAM),
		0x32: newTransition(ACTION_PARAM, STATE_DCS_PARAM),
		0x33: newTransition(ACTION_PARAM, STATE_DCS_PARAM),
		0x34: newTransition(ACTION_PARAM, STATE_DCS_PARAM),
		0x35: newTransition(ACTION_PARAM, STATE_DCS_PARAM),
		0x36: newTransition(ACTION_PARAM, STATE_DCS_PARAM),
		0x37: newTransition(ACTION_PARAM, STATE_DCS_PARAM),
		0x38: newTransition(ACTION_PARAM, STATE_DCS_PARAM),
		0x39: newTransition(ACTION_PARAM, STATE_DCS_PARAM),
		0x3a: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x3b: newTransition(ACTION_PARAM, STATE_DCS_PARAM),
		0x3c: newTransition(ACTION_COLLECT, STATE_DCS_PARAM),
		0x3d: newTransition(ACTION_COLLECT, STATE_DCS_PARAM),
		0x3e: newTransition(ACTION_COLLECT, STATE_DCS_PARAM),
		0x3f: newTransition(ACTION_COLLECT, STATE_DCS_PARAM),
		0x40: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x41: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x42: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x43: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x44: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x45: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x46: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x47: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x48: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x49: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x4a: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x4b: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x4c: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x4d: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x4e: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x4f: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x50: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x51: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x52: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x53: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x54: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x55: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x56: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x57: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x58: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x59: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x5a: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x5b: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x5c: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x5d: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x5e: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x5f: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x60: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x61: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x62: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x63: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x64: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x65: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x66: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x67: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x68: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x69: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x6a: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x6b: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x6c: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x6d: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x6e: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x6f: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x70: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x71: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x72: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x73: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x74: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x75: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x76: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x77: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x78: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x79: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x7a: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x7b: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x7c: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x7d: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x7e: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x7f: newTransition(ACTION_IGNORE, STATE_NONE),
	},
	STATE_DCS_IGNORE: map[rune]transition{
		0x00: newTransition(ACTION_IGNORE, STATE_NONE),
		0x01: newTransition(ACTION_IGNORE, STATE_NONE),
		0x02: newTransition(ACTION_IGNORE, STATE_NONE),
		0x03: newTransition(ACTION_IGNORE, STATE_NONE),
		0x04: newTransition(ACTION_IGNORE, STATE_NONE),
		0x05: newTransition(ACTION_IGNORE, STATE_NONE),
		0x06: newTransition(ACTION_IGNORE, STATE_NONE),
		0x07: newTransition(ACTION_IGNORE, STATE_NONE),
		0x08: newTransition(ACTION_IGNORE, STATE_NONE),
		0x09: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x10: newTransition(ACTION_IGNORE, STATE_NONE),
		0x11: newTransition(ACTION_IGNORE, STATE_NONE),
		0x12: newTransition(ACTION_IGNORE, STATE_NONE),
		0x13: newTransition(ACTION_IGNORE, STATE_NONE),
		0x14: newTransition(ACTION_IGNORE, STATE_NONE),
		0x15: newTransition(ACTION_IGNORE, STATE_NONE),
		0x16: newTransition(ACTION_IGNORE, STATE_NONE),
		0x17: newTransition(ACTION_IGNORE, STATE_NONE),
		0x18: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x19: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1a: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x1b: newTransition(ACTION_NOP, STATE_ESCAPE),
		0x1c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x20: newTransition(ACTION_IGNORE, STATE_NONE),
		0x21: newTransition(ACTION_IGNORE, STATE_NONE),
		0x22: newTransition(ACTION_IGNORE, STATE_NONE),
		0x23: newTransition(ACTION_IGNORE, STATE_NONE),
		0x24: newTransition(ACTION_IGNORE, STATE_NONE),
		0x25: newTransition(ACTION_IGNORE, STATE_NONE),
		0x26: newTransition(ACTION_IGNORE, STATE_NONE),
		0x27: newTransition(ACTION_IGNORE, STATE_NONE),
		0x28: newTransition(ACTION_IGNORE, STATE_NONE),
		0x29: newTransition(ACTION_IGNORE, STATE_NONE),
		0x2a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x2b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x2c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x2d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x2e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x2f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x30: newTransition(ACTION_IGNORE, STATE_NONE),
		0x31: newTransition(ACTION_IGNORE, STATE_NONE),
		0x32: newTransition(ACTION_IGNORE, STATE_NONE),
		0x33: newTransition(ACTION_IGNORE, STATE_NONE),
		0x34: newTransition(ACTION_IGNORE, STATE_NONE),
		0x35: newTransition(ACTION_IGNORE, STATE_NONE),
		0x36: newTransition(ACTION_IGNORE, STATE_NONE),
		0x37: newTransition(ACTION_IGNORE, STATE_NONE),
		0x38: newTransition(ACTION_IGNORE, STATE_NONE),
		0x39: newTransition(ACTION_IGNORE, STATE_NONE),
		0x3a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x3b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x3c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x3d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x3e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x3f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x40: newTransition(ACTION_IGNORE, STATE_NONE),
		0x41: newTransition(ACTION_IGNORE, STATE_NONE),
		0x42: newTransition(ACTION_IGNORE, STATE_NONE),
		0x43: newTransition(ACTION_IGNORE, STATE_NONE),
		0x44: newTransition(ACTION_IGNORE, STATE_NONE),
		0x45: newTransition(ACTION_IGNORE, STATE_NONE),
		0x46: newTransition(ACTION_IGNORE, STATE_NONE),
		0x47: newTransition(ACTION_IGNORE, STATE_NONE),
		0x48: newTransition(ACTION_IGNORE, STATE_NONE),
		0x49: newTransition(ACTION_IGNORE, STATE_NONE),
		0x4a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x4b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x4c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x4d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x4e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x4f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x50: newTransition(ACTION_IGNORE, STATE_NONE),
		0x51: newTransition(ACTION_IGNORE, STATE_NONE),
		0x52: newTransition(ACTION_IGNORE, STATE_NONE),
		0x53: newTransition(ACTION_IGNORE, STATE_NONE),
		0x54: newTransition(ACTION_IGNORE, STATE_NONE),
		0x55: newTransition(ACTION_IGNORE, STATE_NONE),
		0x56: newTransition(ACTION_IGNORE, STATE_NONE),
		0x57: newTransition(ACTION_IGNORE, STATE_NONE),
		0x58: newTransition(ACTION_IGNORE, STATE_NONE),
		0x59: newTransition(ACTION_IGNORE, STATE_NONE),
		0x5a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x5b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x5c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x5d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x5e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x5f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x60: newTransition(ACTION_IGNORE, STATE_NONE),
		0x61: newTransition(ACTION_IGNORE, STATE_NONE),
		0x62: newTransition(ACTION_IGNORE, STATE_NONE),
		0x63: newTransition(ACTION_IGNORE, STATE_NONE),
		0x64: newTransition(ACTION_IGNORE, STATE_NONE),
		0x65: newTransition(ACTION_IGNORE, STATE_NONE),
		0x66: newTransition(ACTION_IGNORE, STATE_NONE),
		0x67: newTransition(ACTION_IGNORE, STATE_NONE),
		0x68: newTransition(ACTION_IGNORE, STATE_NONE),
		0x69: newTransition(ACTION_IGNORE, STATE_NONE),
		0x6a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x6b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x6c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x6d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x6e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x6f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x70: newTransition(ACTION_IGNORE, STATE_NONE),
		0x71: newTransition(ACTION_IGNORE, STATE_NONE),
		0x72: newTransition(ACTION_IGNORE, STATE_NONE),
		0x73: newTransition(ACTION_IGNORE, STATE_NONE),
		0x74: newTransition(ACTION_IGNORE, STATE_NONE),
		0x75: newTransition(ACTION_IGNORE, STATE_NONE),
		0x76: newTransition(ACTION_IGNORE, STATE_NONE),
		0x77: newTransition(ACTION_IGNORE, STATE_NONE),
		0x78: newTransition(ACTION_IGNORE, STATE_NONE),
		0x79: newTransition(ACTION_IGNORE, STATE_NONE),
		0x7a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x7b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x7c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x7d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x7e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x7f: newTransition(ACTION_IGNORE, STATE_NONE),
	},
	STATE_DCS_INTERMEDIATE: map[rune]transition{
		0x00: newTransition(ACTION_IGNORE, STATE_NONE),
		0x01: newTransition(ACTION_IGNORE, STATE_NONE),
		0x02: newTransition(ACTION_IGNORE, STATE_NONE),
		0x03: newTransition(ACTION_IGNORE, STATE_NONE),
		0x04: newTransition(ACTION_IGNORE, STATE_NONE),
		0x05: newTransition(ACTION_IGNORE, STATE_NONE),
		0x06: newTransition(ACTION_IGNORE, STATE_NONE),
		0x07: newTransition(ACTION_IGNORE, STATE_NONE),
		0x08: newTransition(ACTION_IGNORE, STATE_NONE),
		0x09: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x10: newTransition(ACTION_IGNORE, STATE_NONE),
		0x11: newTransition(ACTION_IGNORE, STATE_NONE),
		0x12: newTransition(ACTION_IGNORE, STATE_NONE),
		0x13: newTransition(ACTION_IGNORE, STATE_NONE),
		0x14: newTransition(ACTION_IGNORE, STATE_NONE),
		0x15: newTransition(ACTION_IGNORE, STATE_NONE),
		0x16: newTransition(ACTION_IGNORE, STATE_NONE),
		0x17: newTransition(ACTION_IGNORE, STATE_NONE),
		0x18: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x19: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1a: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x1b: newTransition(ACTION_NOP, STATE_ESCAPE),
		0x1c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x20: newTransition(ACTION_COLLECT, STATE_NONE),
		0x21: newTransition(ACTION_COLLECT, STATE_NONE),
		0x22: newTransition(ACTION_COLLECT, STATE_NONE),
		0x23: newTransition(ACTION_COLLECT, STATE_NONE),
		0x24: newTransition(ACTION_COLLECT, STATE_NONE),
		0x25: newTransition(ACTION_COLLECT, STATE_NONE),
		0x26: newTransition(ACTION_COLLECT, STATE_NONE),
		0x27: newTransition(ACTION_COLLECT, STATE_NONE),
		0x28: newTransition(ACTION_COLLECT, STATE_NONE),
		0x29: newTransition(ACTION_COLLECT, STATE_NONE),
		0x2a: newTransition(ACTION_COLLECT, STATE_NONE),
		0x2b: newTransition(ACTION_COLLECT, STATE_NONE),
		0x2c: newTransition(ACTION_COLLECT, STATE_NONE),
		0x2d: newTransition(ACTION_COLLECT, STATE_NONE),
		0x2e: newTransition(ACTION_COLLECT, STATE_NONE),
		0x2f: newTransition(ACTION_COLLECT, STATE_NONE),
		0x30: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x31: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x32: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x33: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x34: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x35: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x36: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x37: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x38: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x39: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x3a: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x3b: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x3c: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x3d: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x3e: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x3f: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x40: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x41: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x42: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x43: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x44: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x45: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x46: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x47: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x48: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x49: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x4a: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x4b: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x4c: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x4d: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x4e: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x4f: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x50: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x51: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x52: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x53: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x54: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x55: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x56: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x57: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x58: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x59: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x5a: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x5b: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x5c: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x5d: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x5e: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x5f: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x60: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x61: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x62: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x63: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x64: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x65: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x66: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x67: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x68: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x69: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x6a: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x6b: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x6c: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x6d: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x6e: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x6f: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x70: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x71: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x72: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x73: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x74: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x75: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x76: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x77: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x78: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x79: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x7a: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x7b: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x7c: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x7d: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x7e: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x7f: newTransition(ACTION_IGNORE, STATE_NONE),
	},
	STATE_DCS_PARAM: map[rune]transition{
		0x00: newTransition(ACTION_IGNORE, STATE_NONE),
		0x01: newTransition(ACTION_IGNORE, STATE_NONE),
		0x02: newTransition(ACTION_IGNORE, STATE_NONE),
		0x03: newTransition(ACTION_IGNORE, STATE_NONE),
		0x04: newTransition(ACTION_IGNORE, STATE_NONE),
		0x05: newTransition(ACTION_IGNORE, STATE_NONE),
		0x06: newTransition(ACTION_IGNORE, STATE_NONE),
		0x07: newTransition(ACTION_IGNORE, STATE_NONE),
		0x08: newTransition(ACTION_IGNORE, STATE_NONE),
		0x09: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x10: newTransition(ACTION_IGNORE, STATE_NONE),
		0x11: newTransition(ACTION_IGNORE, STATE_NONE),
		0x12: newTransition(ACTION_IGNORE, STATE_NONE),
		0x13: newTransition(ACTION_IGNORE, STATE_NONE),
		0x14: newTransition(ACTION_IGNORE, STATE_NONE),
		0x15: newTransition(ACTION_IGNORE, STATE_NONE),
		0x16: newTransition(ACTION_IGNORE, STATE_NONE),
		0x17: newTransition(ACTION_IGNORE, STATE_NONE),
		0x18: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x19: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1a: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x1b: newTransition(ACTION_NOP, STATE_ESCAPE),
		0x1c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x20: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x21: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x22: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x23: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x24: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x25: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x26: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x27: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x28: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x29: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x2a: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x2b: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x2c: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x2d: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x2e: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x2f: newTransition(ACTION_COLLECT, STATE_DCS_INTERMEDIATE),
		0x30: newTransition(ACTION_PARAM, STATE_NONE),
		0x31: newTransition(ACTION_PARAM, STATE_NONE),
		0x32: newTransition(ACTION_PARAM, STATE_NONE),
		0x33: newTransition(ACTION_PARAM, STATE_NONE),
		0x34: newTransition(ACTION_PARAM, STATE_NONE),
		0x35: newTransition(ACTION_PARAM, STATE_NONE),
		0x36: newTransition(ACTION_PARAM, STATE_NONE),
		0x37: newTransition(ACTION_PARAM, STATE_NONE),
		0x38: newTransition(ACTION_PARAM, STATE_NONE),
		0x39: newTransition(ACTION_PARAM, STATE_NONE),
		0x3a: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x3b: newTransition(ACTION_PARAM, STATE_NONE),
		0x3c: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x3d: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x3e: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x3f: newTransition(ACTION_NOP, STATE_DCS_IGNORE),
		0x40: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x41: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x42: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x43: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x44: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x45: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x46: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x47: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x48: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x49: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x4a: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x4b: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x4c: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x4d: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x4e: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x4f: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x50: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x51: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x52: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x53: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x54: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x55: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x56: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x57: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x58: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x59: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x5a: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x5b: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x5c: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x5d: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x5e: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x5f: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x60: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x61: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x62: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x63: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x64: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x65: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x66: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x67: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x68: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x69: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x6a: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x6b: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x6c: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x6d: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x6e: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x6f: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x70: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x71: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x72: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x73: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x74: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x75: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x76: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x77: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x78: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x79: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x7a: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x7b: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x7c: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x7d: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x7e: newTransition(ACTION_NOP, STATE_DCS_PASSThROUGH),
		0x7f: newTransition(ACTION_IGNORE, STATE_NONE),
	},
	STATE_DCS_PASSThROUGH: map[rune]transition{
		0x00: newTransition(ACTION_PUT, STATE_NONE),
		0x01: newTransition(ACTION_PUT, STATE_NONE),
		0x02: newTransition(ACTION_PUT, STATE_NONE),
		0x03: newTransition(ACTION_PUT, STATE_NONE),
		0x04: newTransition(ACTION_PUT, STATE_NONE),
		0x05: newTransition(ACTION_PUT, STATE_NONE),
		0x06: newTransition(ACTION_PUT, STATE_NONE),
		0x07: newTransition(ACTION_PUT, STATE_NONE),
		0x08: newTransition(ACTION_PUT, STATE_NONE),
		0x09: newTransition(ACTION_PUT, STATE_NONE),
		0x0a: newTransition(ACTION_PUT, STATE_NONE),
		0x0b: newTransition(ACTION_PUT, STATE_NONE),
		0x0c: newTransition(ACTION_PUT, STATE_NONE),
		0x0d: newTransition(ACTION_PUT, STATE_NONE),
		0x0e: newTransition(ACTION_PUT, STATE_NONE),
		0x0f: newTransition(ACTION_PUT, STATE_NONE),
		0x10: newTransition(ACTION_PUT, STATE_NONE),
		0x11: newTransition(ACTION_PUT, STATE_NONE),
		0x12: newTransition(ACTION_PUT, STATE_NONE),
		0x13: newTransition(ACTION_PUT, STATE_NONE),
		0x14: newTransition(ACTION_PUT, STATE_NONE),
		0x15: newTransition(ACTION_PUT, STATE_NONE),
		0x16: newTransition(ACTION_PUT, STATE_NONE),
		0x17: newTransition(ACTION_PUT, STATE_NONE),
		0x18: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x19: newTransition(ACTION_PUT, STATE_NONE),
		0x1a: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x1b: newTransition(ACTION_NOP, STATE_ESCAPE),
		0x1c: newTransition(ACTION_PUT, STATE_NONE),
		0x1d: newTransition(ACTION_PUT, STATE_NONE),
		0x1e: newTransition(ACTION_PUT, STATE_NONE),
		0x1f: newTransition(ACTION_PUT, STATE_NONE),
		0x20: newTransition(ACTION_PUT, STATE_NONE),
		0x21: newTransition(ACTION_PUT, STATE_NONE),
		0x22: newTransition(ACTION_PUT, STATE_NONE),
		0x23: newTransition(ACTION_PUT, STATE_NONE),
		0x24: newTransition(ACTION_PUT, STATE_NONE),
		0x25: newTransition(ACTION_PUT, STATE_NONE),
		0x26: newTransition(ACTION_PUT, STATE_NONE),
		0x27: newTransition(ACTION_PUT, STATE_NONE),
		0x28: newTransition(ACTION_PUT, STATE_NONE),
		0x29: newTransition(ACTION_PUT, STATE_NONE),
		0x2a: newTransition(ACTION_PUT, STATE_NONE),
		0x2b: newTransition(ACTION_PUT, STATE_NONE),
		0x2c: newTransition(ACTION_PUT, STATE_NONE),
		0x2d: newTransition(ACTION_PUT, STATE_NONE),
		0x2e: newTransition(ACTION_PUT, STATE_NONE),
		0x2f: newTransition(ACTION_PUT, STATE_NONE),
		0x30: newTransition(ACTION_PUT, STATE_NONE),
		0x31: newTransition(ACTION_PUT, STATE_NONE),
		0x32: newTransition(ACTION_PUT, STATE_NONE),
		0x33: newTransition(ACTION_PUT, STATE_NONE),
		0x34: newTransition(ACTION_PUT, STATE_NONE),
		0x35: newTransition(ACTION_PUT, STATE_NONE),
		0x36: newTransition(ACTION_PUT, STATE_NONE),
		0x37: newTransition(ACTION_PUT, STATE_NONE),
		0x38: newTransition(ACTION_PUT, STATE_NONE),
		0x39: newTransition(ACTION_PUT, STATE_NONE),
		0x3a: newTransition(ACTION_PUT, STATE_NONE),
		0x3b: newTransition(ACTION_PUT, STATE_NONE),
		0x3c: newTransition(ACTION_PUT, STATE_NONE),
		0x3d: newTransition(ACTION_PUT, STATE_NONE),
		0x3e: newTransition(ACTION_PUT, STATE_NONE),
		0x3f: newTransition(ACTION_PUT, STATE_NONE),
		0x40: newTransition(ACTION_PUT, STATE_NONE),
		0x41: newTransition(ACTION_PUT, STATE_NONE),
		0x42: newTransition(ACTION_PUT, STATE_NONE),
		0x43: newTransition(ACTION_PUT, STATE_NONE),
		0x44: newTransition(ACTION_PUT, STATE_NONE),
		0x45: newTransition(ACTION_PUT, STATE_NONE),
		0x46: newTransition(ACTION_PUT, STATE_NONE),
		0x47: newTransition(ACTION_PUT, STATE_NONE),
		0x48: newTransition(ACTION_PUT, STATE_NONE),
		0x49: newTransition(ACTION_PUT, STATE_NONE),
		0x4a: newTransition(ACTION_PUT, STATE_NONE),
		0x4b: newTransition(ACTION_PUT, STATE_NONE),
		0x4c: newTransition(ACTION_PUT, STATE_NONE),
		0x4d: newTransition(ACTION_PUT, STATE_NONE),
		0x4e: newTransition(ACTION_PUT, STATE_NONE),
		0x4f: newTransition(ACTION_PUT, STATE_NONE),
		0x50: newTransition(ACTION_PUT, STATE_NONE),
		0x51: newTransition(ACTION_PUT, STATE_NONE),
		0x52: newTransition(ACTION_PUT, STATE_NONE),
		0x53: newTransition(ACTION_PUT, STATE_NONE),
		0x54: newTransition(ACTION_PUT, STATE_NONE),
		0x55: newTransition(ACTION_PUT, STATE_NONE),
		0x56: newTransition(ACTION_PUT, STATE_NONE),
		0x57: newTransition(ACTION_PUT, STATE_NONE),
		0x58: newTransition(ACTION_PUT, STATE_NONE),
		0x59: newTransition(ACTION_PUT, STATE_NONE),
		0x5a: newTransition(ACTION_PUT, STATE_NONE),
		0x5b: newTransition(ACTION_PUT, STATE_NONE),
		0x5c: newTransition(ACTION_PUT, STATE_NONE),
		0x5d: newTransition(ACTION_PUT, STATE_NONE),
		0x5e: newTransition(ACTION_PUT, STATE_NONE),
		0x5f: newTransition(ACTION_PUT, STATE_NONE),
		0x60: newTransition(ACTION_PUT, STATE_NONE),
		0x61: newTransition(ACTION_PUT, STATE_NONE),
		0x62: newTransition(ACTION_PUT, STATE_NONE),
		0x63: newTransition(ACTION_PUT, STATE_NONE),
		0x64: newTransition(ACTION_PUT, STATE_NONE),
		0x65: newTransition(ACTION_PUT, STATE_NONE),
		0x66: newTransition(ACTION_PUT, STATE_NONE),
		0x67: newTransition(ACTION_PUT, STATE_NONE),
		0x68: newTransition(ACTION_PUT, STATE_NONE),
		0x69: newTransition(ACTION_PUT, STATE_NONE),
		0x6a: newTransition(ACTION_PUT, STATE_NONE),
		0x6b: newTransition(ACTION_PUT, STATE_NONE),
		0x6c: newTransition(ACTION_PUT, STATE_NONE),
		0x6d: newTransition(ACTION_PUT, STATE_NONE),
		0x6e: newTransition(ACTION_PUT, STATE_NONE),
		0x6f: newTransition(ACTION_PUT, STATE_NONE),
		0x70: newTransition(ACTION_PUT, STATE_NONE),
		0x71: newTransition(ACTION_PUT, STATE_NONE),
		0x72: newTransition(ACTION_PUT, STATE_NONE),
		0x73: newTransition(ACTION_PUT, STATE_NONE),
		0x74: newTransition(ACTION_PUT, STATE_NONE),
		0x75: newTransition(ACTION_PUT, STATE_NONE),
		0x76: newTransition(ACTION_PUT, STATE_NONE),
		0x77: newTransition(ACTION_PUT, STATE_NONE),
		0x78: newTransition(ACTION_PUT, STATE_NONE),
		0x79: newTransition(ACTION_PUT, STATE_NONE),
		0x7a: newTransition(ACTION_PUT, STATE_NONE),
		0x7b: newTransition(ACTION_PUT, STATE_NONE),
		0x7c: newTransition(ACTION_PUT, STATE_NONE),
		0x7d: newTransition(ACTION_PUT, STATE_NONE),
		0x7e: newTransition(ACTION_PUT, STATE_NONE),
		0x7f: newTransition(ACTION_IGNORE, STATE_NONE),
	},
	STATE_ESCAPE: map[rune]transition{
		0x00: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x01: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x02: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x03: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x04: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x05: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x06: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x07: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x08: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x09: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0a: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0b: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0c: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0d: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0e: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0f: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x10: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x11: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x12: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x13: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x14: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x15: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x16: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x17: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x18: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x19: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1a: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x1b: newTransition(ACTION_NOP, STATE_ESCAPE),
		0x1c: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1d: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1e: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1f: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x20: newTransition(ACTION_COLLECT, STATE_ESCAPE_INTERMEDIATE),
		0x21: newTransition(ACTION_COLLECT, STATE_ESCAPE_INTERMEDIATE),
		0x22: newTransition(ACTION_COLLECT, STATE_ESCAPE_INTERMEDIATE),
		0x23: newTransition(ACTION_COLLECT, STATE_ESCAPE_INTERMEDIATE),
		0x24: newTransition(ACTION_COLLECT, STATE_ESCAPE_INTERMEDIATE),
		0x25: newTransition(ACTION_COLLECT, STATE_ESCAPE_INTERMEDIATE),
		0x26: newTransition(ACTION_COLLECT, STATE_ESCAPE_INTERMEDIATE),
		0x27: newTransition(ACTION_COLLECT, STATE_ESCAPE_INTERMEDIATE),
		0x28: newTransition(ACTION_COLLECT, STATE_ESCAPE_INTERMEDIATE),
		0x29: newTransition(ACTION_COLLECT, STATE_ESCAPE_INTERMEDIATE),
		0x2a: newTransition(ACTION_COLLECT, STATE_ESCAPE_INTERMEDIATE),
		0x2b: newTransition(ACTION_COLLECT, STATE_ESCAPE_INTERMEDIATE),
		0x2c: newTransition(ACTION_COLLECT, STATE_ESCAPE_INTERMEDIATE),
		0x2d: newTransition(ACTION_COLLECT, STATE_ESCAPE_INTERMEDIATE),
		0x2e: newTransition(ACTION_COLLECT, STATE_ESCAPE_INTERMEDIATE),
		0x2f: newTransition(ACTION_COLLECT, STATE_ESCAPE_INTERMEDIATE),
		0x30: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x31: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x32: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x33: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x34: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x35: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x36: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x37: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x38: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x39: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x3a: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x3b: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x3c: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x3d: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x3e: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x3f: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x40: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x41: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x42: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x43: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x44: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x45: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x46: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x47: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x48: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x49: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x4a: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x4b: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x4c: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x4d: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x4e: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x4f: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x50: newTransition(ACTION_NOP, STATE_DCS_ENTRY),
		0x51: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x52: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x53: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x54: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x55: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x56: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x57: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x58: newTransition(ACTION_NOP, STATE_SOS_PM_APC_STRING),
		0x59: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x5a: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x5b: newTransition(ACTION_NOP, STATE_CSI_ENTRY),
		0x5c: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x5d: newTransition(ACTION_NOP, STATE_OSC_STRING),
		0x5e: newTransition(ACTION_NOP, STATE_SOS_PM_APC_STRING),
		0x5f: newTransition(ACTION_NOP, STATE_SOS_PM_APC_STRING),
		0x60: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x61: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x62: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x63: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x64: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x65: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x66: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x67: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x68: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x69: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x6a: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x6b: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x6c: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x6d: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x6e: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x6f: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x70: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x71: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x72: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x73: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x74: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x75: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x76: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x77: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x78: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x79: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x7a: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x7b: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x7c: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x7d: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x7e: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x7f: newTransition(ACTION_IGNORE, STATE_NONE),
	},
	STATE_ESCAPE_INTERMEDIATE: map[rune]transition{
		0x00: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x01: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x02: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x03: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x04: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x05: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x06: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x07: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x08: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x09: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0a: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0b: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0c: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0d: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0e: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0f: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x10: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x11: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x12: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x13: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x14: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x15: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x16: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x17: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x18: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x19: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1a: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x1b: newTransition(ACTION_NOP, STATE_ESCAPE),
		0x1c: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1d: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1e: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1f: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x20: newTransition(ACTION_COLLECT, STATE_NONE),
		0x21: newTransition(ACTION_COLLECT, STATE_NONE),
		0x22: newTransition(ACTION_COLLECT, STATE_NONE),
		0x23: newTransition(ACTION_COLLECT, STATE_NONE),
		0x24: newTransition(ACTION_COLLECT, STATE_NONE),
		0x25: newTransition(ACTION_COLLECT, STATE_NONE),
		0x26: newTransition(ACTION_COLLECT, STATE_NONE),
		0x27: newTransition(ACTION_COLLECT, STATE_NONE),
		0x28: newTransition(ACTION_COLLECT, STATE_NONE),
		0x29: newTransition(ACTION_COLLECT, STATE_NONE),
		0x2a: newTransition(ACTION_COLLECT, STATE_NONE),
		0x2b: newTransition(ACTION_COLLECT, STATE_NONE),
		0x2c: newTransition(ACTION_COLLECT, STATE_NONE),
		0x2d: newTransition(ACTION_COLLECT, STATE_NONE),
		0x2e: newTransition(ACTION_COLLECT, STATE_NONE),
		0x2f: newTransition(ACTION_COLLECT, STATE_NONE),
		0x30: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x31: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x32: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x33: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x34: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x35: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x36: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x37: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x38: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x39: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x3a: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x3b: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x3c: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x3d: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x3e: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x3f: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x40: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x41: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x42: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x43: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x44: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x45: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x46: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x47: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x48: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x49: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x4a: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x4b: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x4c: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x4d: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x4e: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x4f: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x50: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x51: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x52: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x53: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x54: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x55: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x56: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x57: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x58: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x59: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x5a: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x5b: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x5c: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x5d: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x5e: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x5f: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x60: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x61: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x62: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x63: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x64: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x65: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x66: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x67: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x68: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x69: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x6a: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x6b: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x6c: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x6d: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x6e: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x6f: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x70: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x71: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x72: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x73: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x74: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x75: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x76: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x77: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x78: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x79: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x7a: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x7b: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x7c: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x7d: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x7e: newTransition(ACTION_ESC_DISPATCH, STATE_GROUND),
		0x7f: newTransition(ACTION_IGNORE, STATE_NONE),
	},
	STATE_GROUND: map[rune]transition{
		0x00: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x01: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x02: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x03: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x04: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x05: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x06: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x07: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x08: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x09: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0a: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0b: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0c: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0d: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0e: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x0f: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x10: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x11: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x12: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x13: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x14: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x15: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x16: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x17: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x18: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x19: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1a: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x1b: newTransition(ACTION_NOP, STATE_ESCAPE),
		0x1c: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1d: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1e: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x1f: newTransition(ACTION_EXECUTE, STATE_NONE),
		0x20: newTransition(ACTION_PRINT, STATE_NONE),
		0x21: newTransition(ACTION_PRINT, STATE_NONE),
		0x22: newTransition(ACTION_PRINT, STATE_NONE),
		0x23: newTransition(ACTION_PRINT, STATE_NONE),
		0x24: newTransition(ACTION_PRINT, STATE_NONE),
		0x25: newTransition(ACTION_PRINT, STATE_NONE),
		0x26: newTransition(ACTION_PRINT, STATE_NONE),
		0x27: newTransition(ACTION_PRINT, STATE_NONE),
		0x28: newTransition(ACTION_PRINT, STATE_NONE),
		0x29: newTransition(ACTION_PRINT, STATE_NONE),
		0x2a: newTransition(ACTION_PRINT, STATE_NONE),
		0x2b: newTransition(ACTION_PRINT, STATE_NONE),
		0x2c: newTransition(ACTION_PRINT, STATE_NONE),
		0x2d: newTransition(ACTION_PRINT, STATE_NONE),
		0x2e: newTransition(ACTION_PRINT, STATE_NONE),
		0x2f: newTransition(ACTION_PRINT, STATE_NONE),
		0x30: newTransition(ACTION_PRINT, STATE_NONE),
		0x31: newTransition(ACTION_PRINT, STATE_NONE),
		0x32: newTransition(ACTION_PRINT, STATE_NONE),
		0x33: newTransition(ACTION_PRINT, STATE_NONE),
		0x34: newTransition(ACTION_PRINT, STATE_NONE),
		0x35: newTransition(ACTION_PRINT, STATE_NONE),
		0x36: newTransition(ACTION_PRINT, STATE_NONE),
		0x37: newTransition(ACTION_PRINT, STATE_NONE),
		0x38: newTransition(ACTION_PRINT, STATE_NONE),
		0x39: newTransition(ACTION_PRINT, STATE_NONE),
		0x3a: newTransition(ACTION_PRINT, STATE_NONE),
		0x3b: newTransition(ACTION_PRINT, STATE_NONE),
		0x3c: newTransition(ACTION_PRINT, STATE_NONE),
		0x3d: newTransition(ACTION_PRINT, STATE_NONE),
		0x3e: newTransition(ACTION_PRINT, STATE_NONE),
		0x3f: newTransition(ACTION_PRINT, STATE_NONE),
		0x40: newTransition(ACTION_PRINT, STATE_NONE),
		0x41: newTransition(ACTION_PRINT, STATE_NONE),
		0x42: newTransition(ACTION_PRINT, STATE_NONE),
		0x43: newTransition(ACTION_PRINT, STATE_NONE),
		0x44: newTransition(ACTION_PRINT, STATE_NONE),
		0x45: newTransition(ACTION_PRINT, STATE_NONE),
		0x46: newTransition(ACTION_PRINT, STATE_NONE),
		0x47: newTransition(ACTION_PRINT, STATE_NONE),
		0x48: newTransition(ACTION_PRINT, STATE_NONE),
		0x49: newTransition(ACTION_PRINT, STATE_NONE),
		0x4a: newTransition(ACTION_PRINT, STATE_NONE),
		0x4b: newTransition(ACTION_PRINT, STATE_NONE),
		0x4c: newTransition(ACTION_PRINT, STATE_NONE),
		0x4d: newTransition(ACTION_PRINT, STATE_NONE),
		0x4e: newTransition(ACTION_PRINT, STATE_NONE),
		0x4f: newTransition(ACTION_PRINT, STATE_NONE),
		0x50: newTransition(ACTION_PRINT, STATE_NONE),
		0x51: newTransition(ACTION_PRINT, STATE_NONE),
		0x52: newTransition(ACTION_PRINT, STATE_NONE),
		0x53: newTransition(ACTION_PRINT, STATE_NONE),
		0x54: newTransition(ACTION_PRINT, STATE_NONE),
		0x55: newTransition(ACTION_PRINT, STATE_NONE),
		0x56: newTransition(ACTION_PRINT, STATE_NONE),
		0x57: newTransition(ACTION_PRINT, STATE_NONE),
		0x58: newTransition(ACTION_PRINT, STATE_NONE),
		0x59: newTransition(ACTION_PRINT, STATE_NONE),
		0x5a: newTransition(ACTION_PRINT, STATE_NONE),
		0x5b: newTransition(ACTION_PRINT, STATE_NONE),
		0x5c: newTransition(ACTION_PRINT, STATE_NONE),
		0x5d: newTransition(ACTION_PRINT, STATE_NONE),
		0x5e: newTransition(ACTION_PRINT, STATE_NONE),
		0x5f: newTransition(ACTION_PRINT, STATE_NONE),
		0x60: newTransition(ACTION_PRINT, STATE_NONE),
		0x61: newTransition(ACTION_PRINT, STATE_NONE),
		0x62: newTransition(ACTION_PRINT, STATE_NONE),
		0x63: newTransition(ACTION_PRINT, STATE_NONE),
		0x64: newTransition(ACTION_PRINT, STATE_NONE),
		0x65: newTransition(ACTION_PRINT, STATE_NONE),
		0x66: newTransition(ACTION_PRINT, STATE_NONE),
		0x67: newTransition(ACTION_PRINT, STATE_NONE),
		0x68: newTransition(ACTION_PRINT, STATE_NONE),
		0x69: newTransition(ACTION_PRINT, STATE_NONE),
		0x6a: newTransition(ACTION_PRINT, STATE_NONE),
		0x6b: newTransition(ACTION_PRINT, STATE_NONE),
		0x6c: newTransition(ACTION_PRINT, STATE_NONE),
		0x6d: newTransition(ACTION_PRINT, STATE_NONE),
		0x6e: newTransition(ACTION_PRINT, STATE_NONE),
		0x6f: newTransition(ACTION_PRINT, STATE_NONE),
		0x70: newTransition(ACTION_PRINT, STATE_NONE),
		0x71: newTransition(ACTION_PRINT, STATE_NONE),
		0x72: newTransition(ACTION_PRINT, STATE_NONE),
		0x73: newTransition(ACTION_PRINT, STATE_NONE),
		0x74: newTransition(ACTION_PRINT, STATE_NONE),
		0x75: newTransition(ACTION_PRINT, STATE_NONE),
		0x76: newTransition(ACTION_PRINT, STATE_NONE),
		0x77: newTransition(ACTION_PRINT, STATE_NONE),
		0x78: newTransition(ACTION_PRINT, STATE_NONE),
		0x79: newTransition(ACTION_PRINT, STATE_NONE),
		0x7a: newTransition(ACTION_PRINT, STATE_NONE),
		0x7b: newTransition(ACTION_PRINT, STATE_NONE),
		0x7c: newTransition(ACTION_PRINT, STATE_NONE),
		0x7d: newTransition(ACTION_PRINT, STATE_NONE),
		0x7e: newTransition(ACTION_PRINT, STATE_NONE),
		0x7f: newTransition(ACTION_PRINT, STATE_NONE),
	},
	STATE_OSC_STRING: map[rune]transition{
		0x00: newTransition(ACTION_IGNORE, STATE_NONE),
		0x01: newTransition(ACTION_IGNORE, STATE_NONE),
		0x02: newTransition(ACTION_IGNORE, STATE_NONE),
		0x03: newTransition(ACTION_IGNORE, STATE_NONE),
		0x04: newTransition(ACTION_IGNORE, STATE_NONE),
		0x05: newTransition(ACTION_IGNORE, STATE_NONE),
		0x06: newTransition(ACTION_IGNORE, STATE_NONE),

		0x07: newTransition(ACTION_OSC_END, STATE_GROUND),
		0x08: newTransition(ACTION_IGNORE, STATE_NONE),
		0x09: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x10: newTransition(ACTION_IGNORE, STATE_NONE),
		0x11: newTransition(ACTION_IGNORE, STATE_NONE),
		0x12: newTransition(ACTION_IGNORE, STATE_NONE),
		0x13: newTransition(ACTION_IGNORE, STATE_NONE),
		0x14: newTransition(ACTION_IGNORE, STATE_NONE),
		0x15: newTransition(ACTION_IGNORE, STATE_NONE),
		0x16: newTransition(ACTION_IGNORE, STATE_NONE),
		0x17: newTransition(ACTION_IGNORE, STATE_NONE),
		0x18: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x19: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1a: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x1b: newTransition(ACTION_NOP, STATE_ESCAPE),
		0x1c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x20: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x21: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x22: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x23: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x24: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x25: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x26: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x27: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x28: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x29: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x2a: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x2b: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x2c: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x2d: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x2e: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x2f: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x30: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x31: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x32: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x33: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x34: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x35: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x36: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x37: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x38: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x39: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x3a: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x3b: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x3c: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x3d: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x3e: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x3f: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x40: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x41: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x42: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x43: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x44: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x45: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x46: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x47: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x48: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x49: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x4a: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x4b: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x4c: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x4d: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x4e: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x4f: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x50: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x51: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x52: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x53: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x54: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x55: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x56: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x57: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x58: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x59: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x5a: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x5b: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x5c: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x5d: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x5e: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x5f: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x60: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x61: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x62: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x63: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x64: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x65: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x66: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x67: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x68: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x69: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x6a: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x6b: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x6c: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x6d: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x6e: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x6f: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x70: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x71: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x72: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x73: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x74: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x75: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x76: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x77: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x78: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x79: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x7a: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x7b: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x7c: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x7d: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x7e: newTransition(ACTION_OSC_PUT, STATE_NONE),
		0x7f: newTransition(ACTION_OSC_PUT, STATE_NONE),
	},
	STATE_SOS_PM_APC_STRING: map[rune]transition{
		0x00: newTransition(ACTION_IGNORE, STATE_NONE),
		0x01: newTransition(ACTION_IGNORE, STATE_NONE),
		0x02: newTransition(ACTION_IGNORE, STATE_NONE),
		0x03: newTransition(ACTION_IGNORE, STATE_NONE),
		0x04: newTransition(ACTION_IGNORE, STATE_NONE),
		0x05: newTransition(ACTION_IGNORE, STATE_NONE),
		0x06: newTransition(ACTION_IGNORE, STATE_NONE),
		0x07: newTransition(ACTION_IGNORE, STATE_NONE),
		0x08: newTransition(ACTION_IGNORE, STATE_NONE),
		0x09: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x0f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x10: newTransition(ACTION_IGNORE, STATE_NONE),
		0x11: newTransition(ACTION_IGNORE, STATE_NONE),
		0x12: newTransition(ACTION_IGNORE, STATE_NONE),
		0x13: newTransition(ACTION_IGNORE, STATE_NONE),
		0x14: newTransition(ACTION_IGNORE, STATE_NONE),
		0x15: newTransition(ACTION_IGNORE, STATE_NONE),
		0x16: newTransition(ACTION_IGNORE, STATE_NONE),
		0x17: newTransition(ACTION_IGNORE, STATE_NONE),
		0x18: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x19: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1a: newTransition(ACTION_EXECUTE, STATE_GROUND),
		0x1b: newTransition(ACTION_NOP, STATE_ESCAPE),
		0x1c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x1f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x20: newTransition(ACTION_IGNORE, STATE_NONE),
		0x21: newTransition(ACTION_IGNORE, STATE_NONE),
		0x22: newTransition(ACTION_IGNORE, STATE_NONE),
		0x23: newTransition(ACTION_IGNORE, STATE_NONE),
		0x24: newTransition(ACTION_IGNORE, STATE_NONE),
		0x25: newTransition(ACTION_IGNORE, STATE_NONE),
		0x26: newTransition(ACTION_IGNORE, STATE_NONE),
		0x27: newTransition(ACTION_IGNORE, STATE_NONE),
		0x28: newTransition(ACTION_IGNORE, STATE_NONE),
		0x29: newTransition(ACTION_IGNORE, STATE_NONE),
		0x2a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x2b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x2c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x2d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x2e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x2f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x30: newTransition(ACTION_IGNORE, STATE_NONE),
		0x31: newTransition(ACTION_IGNORE, STATE_NONE),
		0x32: newTransition(ACTION_IGNORE, STATE_NONE),
		0x33: newTransition(ACTION_IGNORE, STATE_NONE),
		0x34: newTransition(ACTION_IGNORE, STATE_NONE),
		0x35: newTransition(ACTION_IGNORE, STATE_NONE),
		0x36: newTransition(ACTION_IGNORE, STATE_NONE),
		0x37: newTransition(ACTION_IGNORE, STATE_NONE),
		0x38: newTransition(ACTION_IGNORE, STATE_NONE),
		0x39: newTransition(ACTION_IGNORE, STATE_NONE),
		0x3a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x3b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x3c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x3d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x3e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x3f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x40: newTransition(ACTION_IGNORE, STATE_NONE),
		0x41: newTransition(ACTION_IGNORE, STATE_NONE),
		0x42: newTransition(ACTION_IGNORE, STATE_NONE),
		0x43: newTransition(ACTION_IGNORE, STATE_NONE),
		0x44: newTransition(ACTION_IGNORE, STATE_NONE),
		0x45: newTransition(ACTION_IGNORE, STATE_NONE),
		0x46: newTransition(ACTION_IGNORE, STATE_NONE),
		0x47: newTransition(ACTION_IGNORE, STATE_NONE),
		0x48: newTransition(ACTION_IGNORE, STATE_NONE),
		0x49: newTransition(ACTION_IGNORE, STATE_NONE),
		0x4a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x4b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x4c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x4d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x4e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x4f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x50: newTransition(ACTION_IGNORE, STATE_NONE),
		0x51: newTransition(ACTION_IGNORE, STATE_NONE),
		0x52: newTransition(ACTION_IGNORE, STATE_NONE),
		0x53: newTransition(ACTION_IGNORE, STATE_NONE),
		0x54: newTransition(ACTION_IGNORE, STATE_NONE),
		0x55: newTransition(ACTION_IGNORE, STATE_NONE),
		0x56: newTransition(ACTION_IGNORE, STATE_NONE),
		0x57: newTransition(ACTION_IGNORE, STATE_NONE),
		0x58: newTransition(ACTION_IGNORE, STATE_NONE),
		0x59: newTransition(ACTION_IGNORE, STATE_NONE),
		0x5a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x5b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x5c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x5d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x5e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x5f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x60: newTransition(ACTION_IGNORE, STATE_NONE),
		0x61: newTransition(ACTION_IGNORE, STATE_NONE),
		0x62: newTransition(ACTION_IGNORE, STATE_NONE),
		0x63: newTransition(ACTION_IGNORE, STATE_NONE),
		0x64: newTransition(ACTION_IGNORE, STATE_NONE),
		0x65: newTransition(ACTION_IGNORE, STATE_NONE),
		0x66: newTransition(ACTION_IGNORE, STATE_NONE),
		0x67: newTransition(ACTION_IGNORE, STATE_NONE),
		0x68: newTransition(ACTION_IGNORE, STATE_NONE),
		0x69: newTransition(ACTION_IGNORE, STATE_NONE),
		0x6a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x6b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x6c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x6d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x6e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x6f: newTransition(ACTION_IGNORE, STATE_NONE),
		0x70: newTransition(ACTION_IGNORE, STATE_NONE),
		0x71: newTransition(ACTION_IGNORE, STATE_NONE),
		0x72: newTransition(ACTION_IGNORE, STATE_NONE),
		0x73: newTransition(ACTION_IGNORE, STATE_NONE),
		0x74: newTransition(ACTION_IGNORE, STATE_NONE),
		0x75: newTransition(ACTION_IGNORE, STATE_NONE),
		0x76: newTransition(ACTION_IGNORE, STATE_NONE),
		0x77: newTransition(ACTION_IGNORE, STATE_NONE),
		0x78: newTransition(ACTION_IGNORE, STATE_NONE),
		0x79: newTransition(ACTION_IGNORE, STATE_NONE),
		0x7a: newTransition(ACTION_IGNORE, STATE_NONE),
		0x7b: newTransition(ACTION_IGNORE, STATE_NONE),
		0x7c: newTransition(ACTION_IGNORE, STATE_NONE),
		0x7d: newTransition(ACTION_IGNORE, STATE_NONE),
		0x7e: newTransition(ACTION_IGNORE, STATE_NONE),
		0x7f: newTransition(ACTION_IGNORE, STATE_NONE),
	},
}

For each state, build a map of input byte to encoded state+action transition.

Functions

This section is empty.

Types

type Terminal

type Terminal struct {
	// contains filtered or unexported fields
}

func NewTerminal

func NewTerminal(rows, cols int) (*Terminal, error)

func NewTerminalWithPty

func NewTerminalWithPty(rows, cols int, cmd *exec.Cmd, cancel context.CancelFunc) (*Terminal, error)

func (*Terminal) Cols

func (t *Terminal) Cols() int

func (*Terminal) CopyIfNewer

func (t *Terminal) CopyIfNewer(ts time.Time) (*Terminal, bool)

func (*Terminal) Diff

func (src *Terminal) Diff(dest *Terminal) []byte

Diff will generate a sequence of bytes that, when applied, would move src to dest. This is at a visual level only as the server will ship these diffs to the client which is stateless and only used to display output. Because of that, we can ignore some properties like margins which are only important if you're applying all of the display updating based on the output from the pty directly.

func (*Terminal) FirstRow

func (t *Terminal) FirstRow() []byte

FirstRow will return the byte sequence to generate the first row of the vt

func (*Terminal) ForceCopy

func (t *Terminal) ForceCopy() *Terminal

func (*Terminal) LastChange

func (t *Terminal) LastChange() time.Time

func (*Terminal) MakeOverlay

func (t *Terminal) MakeOverlay(text string) []byte

func (*Terminal) Replace

func (t *Terminal) Replace(other *Terminal)

func (*Terminal) Resize

func (t *Terminal) Resize(rows, cols int)

func (*Terminal) Rows

func (t *Terminal) Rows() int

func (*Terminal) Run

func (t *Terminal) Run()

func (*Terminal) SetTitlePrefix

func (t *Terminal) SetTitlePrefix(pfx string)

func (*Terminal) Stop

func (t *Terminal) Stop()

func (*Terminal) Wait

func (t *Terminal) Wait()

func (*Terminal) Write

func (t *Terminal) Write(p []byte) (int, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL