local execute = (function ()
local tonumber = tonumber
local string_byte = string.byte
local string_char = string.char
local string_find = string.find
local string_gsub = string.gsub
local string_sub = string.sub
local table_concat = table.concat

local encode_utf8
local decode_surrogate_pair

local utf8 = utf8
if utf8 then
  encode_utf8 = utf8.char
else
  local result, module = pcall(require, "dromozoa.utf8.encode")
  if result then
    encode_utf8 = module
  end
end
if not encode_utf8 then
  encode_utf8 = function (a)
    if a <= 0x7F then
      return string_char(a)
    elseif a <= 0x07FF then
      local b = a % 0x40
      local a = (a - b) / 0x40
      return string_char(a + 0xC0, b + 0x80)
    elseif a <= 0xFFFF then
      local c = a % 0x40
      local a = (a - c) / 0x40
      local b = a % 0x40
      local a = (a - b) / 0x40
      return string_char(a + 0xE0, b + 0x80, c + 0x80)
    else
      local d = a % 0x40
      local a = (a - d) / 0x40
      local c = a % 0x40
      local a = (a - c) / 0x40
      local b = a % 0x40
      local a = (a - b) / 0x40
      return string_char(a + 0xF0, b + 0x80, c + 0x80, d + 0x80)
    end
  end
end

local result, module = pcall(require, "dromozoa.utf16.decode_surrogate_pair")
if result then
  decode_surrogate_pair = module
else
  decode_surrogate_pair = function (a, b)
    return (a - 0xD800) * 0x0400 + (b - 0xDC00) + 0x010000
  end
end

local function range(ri, rj, i, j)
  if i > 0 then
    i = i + ri - 1
  else
    i = i + rj + 1
  end
  if j > 0 then
    j = j + ri - 1
  else
    j = j + rj + 1
  end
  return i, j
end

local eol_table = {
  ["\r"] = "\n";
  ["\r\n"] = "\n";
  ["\n\r"] = "\n";
  ["\r\r"] = "\n\n";
}

local function execute_regexp(s, init, n, automaton)
  local transitions = automaton.transitions
  local state = automaton.start_state
  local accept_states = automaton.accept_states

  for i = init + 3, n, 4 do
    local a, b, c, d = string_byte(s, i - 3, i)
    local state1 = transitions[a][state]
    if not state1 then
      return i - 3, accept_states[state]
    else
      local state2 = transitions[b][state1]
      if not state2 then
        return i - 2, accept_states[state1]
      else
        local state3 = transitions[c][state2]
        if not state3 then
          return i - 1, accept_states[state2]
        else
          local state4 = transitions[d][state3]
          if not state4 then
            return i, accept_states[state3]
          else
            state = state4
          end
        end
      end
    end
  end

  local i = n + 1
  local m = i - (i - init) % 4
  if m < i then
    local a, b, c = string_byte(s, m, n)
    if c then
      local state1 = transitions[a][state]
      if not state1 then
        return m, accept_states[state]
      else
        local state2 = transitions[b][state1]
        if not state2 then
          return m + 1, accept_states[state1]
        else
          local state3 = transitions[c][state2]
          if not state3 then
            return n, accept_states[state2]
          else
            return i, accept_states[state3]
          end
        end
      end
    elseif b then
      local state1 = transitions[a][state]
      if not state1 then
        return m, accept_states[state]
      else
        local state2 = transitions[b][state1]
        if not state2 then
          return m + 1, accept_states[state1]
        else
          return i, accept_states[state2]
        end
      end
    else
      local state1 = transitions[a][state]
      if not state1 then
        return m, accept_states[state]
      else
        return i, accept_states[state1]
      end
    end
  else
    return i, accept_states[state]
  end
end

return function (self, s, use_line_number)
  local init = 1
  local n = #s
  local terminal_nodes = {}

  local stack = { 1 } -- start lexer
  local position_start = init
  local position_mark
  local buffer = {}

  local line_count = 1
  local line_start = 0

  while init <= n do
    local lexer = self[stack[#stack]]
    local automaton = lexer.automaton
    local position
    local accept

    if automaton then -- regexp_lexer
      position, accept = execute_regexp(s, init, n, automaton)
      if not accept then
        return nil, "lexer error", init
      end
    else -- search lexer
      local i, j = string_find(s, self.hold, init, true)
      if not i then
        return nil, "lexer error", init
      end
      if init == i then
        position = j + 1
        accept = 1
      else
        position = i
        accept = 2
      end
    end

    local skip
    local rs = s
    local ri = init
    local rj = position - 1
    local rv

    local rn = line_count
    local rc = line_start

    local actions = lexer.accept_to_actions[accept]
    for i = 1, #actions do
      local action = actions[i]
      local code = action[1]
      if code == 1 then -- skip
        skip = true
      elseif code == 2 then -- push
        buffer[#buffer + 1] = string_sub(rs, ri, rj)
        skip = true
      elseif code == 3 then -- concat
        rs = table_concat(buffer)
        ri = 1
        rj = #rs
        for j = 1, #buffer do
          buffer[j] = nil
        end
      elseif code == 4 then -- call
        stack[#stack + 1] = action[2]
      elseif code == 5 then -- return
        stack[#stack] = nil
      elseif code == 6 then -- substitute
        rs = action[2]
        ri = 1
        rj = #rs
      elseif code == 7 then -- hold
        self.hold = string_sub(rs, ri, rj)
      elseif code == 8 then -- mark
        position_mark = init
      elseif code == 9 then -- substring
        ri, rj = range(ri, rj, action[2], action[3])
      elseif code == 10 then -- convert to integer
        rv = tonumber(string_sub(rs, ri, rj), action[2])
      elseif code == 11 then -- convert to char
        rs = string_char(rv)
        ri = 1
        rj = #rs
      elseif code == 12 then -- join
        rs = action[2] .. string_sub(rs, ri, rj) .. action[3]
        ri = 1
        rj = #rs
      elseif code == 13 then -- encode utf8
        rs = encode_utf8(tonumber(string_sub(rs, range(ri, rj, action[2], action[3])), 16))
        ri = 1
        rj = #rs
      elseif code == 14 then -- encode utf8 (surrogate pair)
        local code1 = tonumber(string_sub(rs, range(ri, rj, action[2], action[3])), 16)
        local code2 = tonumber(string_sub(rs, range(ri, rj, action[4], action[5])), 16)
        rs = encode_utf8(decode_surrogate_pair(code1, code2))
        ri = 1
        rj = #rs
      elseif code == 15 then -- add integer
        rv = rv + action[2]
      elseif code == 16 then -- normalize end-of-line
        rs = string_gsub(string_gsub(string_sub(rs, ri, rj), "[\n\r][\n\r]?", eol_table), "^\n", "")
        ri = 1
        rj = #rs
      elseif code == 17 then -- update line number
        rn = rn + 1
        rc = position - 1
      end
    end

    if not skip then
      if not position_mark then
        position_mark = init
      end
      local node = {
        [0] = lexer.accept_to_symbol[accept];
        p = position_start;
        i = position_mark;
        j = position - 1;
        rs = rs;
        ri = ri;
        rj = rj;
      }
      if use_line_number then
        node.n = line_count
        node.c = position_mark - line_start
      end
      terminal_nodes[#terminal_nodes + 1] = node
      position_start = position
      position_mark = nil
    end
    init = position
    line_count = rn
    line_start = rc
  end

  if #stack == 1 then
    if not position_mark then
      position_mark = init
    end
    local node = {
      [0] = 1; -- marker end
      p = position_start;
      i = position_mark;
      j = n;
      rs = s;
      ri = init;
      rj = n;
    }
    if use_line_number then
      node.n = line_count
      node.c = position_mark - line_start
    end
    terminal_nodes[#terminal_nodes + 1] = node
    return terminal_nodes
  else
    return nil, "lexer error", init
  end
end
end)()
local metatable = { __call = execute }
local _ = {}
_[1] = {6,"\000"}
_[2] = {_[1]}
_[3] = {6,"\f"}
_[4] = {_[3]}
_[5] = {6,"\n"}
_[6] = {_[5]}
_[7] = {6,"\r"}
_[8] = {_[7]}
_[9] = {6,"\t"}
_[10] = {_[9]}
_[11] = {6,"\v"}
_[12] = {_[11]}
_[13] = {9,3,-1}
_[14] = {10,36}
_[15] = {15,-9}
_[16] = {11}
_[17] = {_[13],_[14],_[15],_[16]}
_[18] = {10,16}
_[19] = {_[13],_[18],_[16]}
_[20] = {14,3,6,9,12}
_[21] = {_[20]}
_[22] = {13,3,-1}
_[23] = {_[22]}
_[24] = {13,4,-2}
_[25] = {_[24]}
_[26] = {9,2,-1}
_[27] = {_[26]}
_[28] = {}
_[29] = {4,2}
_[30] = {_[29]}
_[31] = {4,3}
_[32] = {_[31]}
_[33] = {_[2],_[4],_[6],_[8],_[10],_[12],_[17],_[19],_[21],_[23],_[25],_[27],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[30],_[28],_[28],_[28],_[28],_[28],_[32],_[32]}
_[34] = {2,3,3,3,3,3,4,5,6,6,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}
_[35] = {1,2,3,4,5,6,7,8,9,10,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30}
_[36] = {[32]=25,[34]=13}
_[37] = {[34]=13}
_[38] = {[32]=27,[34]=13}
_[39] = {[32]=29,[34]=13}
_[40] = {[32]=21,[34]=13}
_[41] = {[32]=22,[34]=13}
_[42] = {[32]=26,[34]=13}
_[43] = {[32]=25,[34]=1,[36]=37,[37]=39,[38]=39,[39]=44,[40]=45,[41]=49,[42]=50,[43]=51,[44]=10,[45]=11,[49]=9,[50]=50,[51]=8}
_[44] = {[32]=25,[36]=37,[37]=39,[38]=39,[39]=44,[40]=45,[41]=49,[42]=50,[43]=51,[44]=10,[45]=11,[49]=9,[50]=50,[51]=8}
_[45] = {[32]=25,[36]=37,[37]=39,[38]=40,[39]=44,[40]=45,[41]=49,[42]=50,[43]=51,[44]=10,[45]=11,[49]=9,[50]=50,[51]=8}
_[46] = {[32]=25,[33]=28,[34]=13}
_[47] = {[27]=33,[32]=23,[34]=13}
_[48] = {[32]=25,[35]=7,[36]=37,[37]=39,[38]=40,[39]=44,[40]=45,[41]=49,[42]=50,[43]=51,[44]=10,[45]=11,[49]=9,[50]=50,[51]=8}
_[49] = {[32]=25,[35]=7,[36]=37,[37]=39,[38]=39,[39]=44,[40]=45,[41]=49,[42]=50,[43]=51,[44]=10,[45]=11,[48]=41,[49]=9,[50]=50,[51]=8}
_[50] = {[32]=25,[34]=15,[35]=7,[36]=38,[37]=39,[38]=39,[39]=44,[40]=45,[41]=49,[42]=50,[43]=51,[44]=10,[45]=11,[47]=48,[48]=41,[49]=9,[50]=50,[51]=8}
_[51] = {[32]=25,[35]=7}
_[52] = {[32]=25,[34]=17,[35]=7}
_[53] = {[32]=25,[34]=19,[35]=7}
_[54] = {[32]=30,[34]=13}
_[55] = {[11]=46,[32]=34,[34]=13}
_[56] = {[30]=31,[34]=13}
_[57] = {[32]=25}
_[58] = {[32]=25,[34]=35,[35]=7,[36]=37,[37]=39,[38]=39,[39]=44,[40]=45,[41]=49,[42]=50,[43]=51,[44]=10,[45]=11,[48]=41,[49]=9,[50]=50,[51]=8}
_[59] = {[32]=25,[34]=14,[35]=7,[36]=38,[37]=39,[38]=39,[39]=44,[40]=45,[41]=49,[42]=50,[43]=51,[44]=10,[45]=11,[47]=48,[48]=41,[49]=9,[50]=50,[51]=8}
_[60] = {[32]=25,[34]=2,[35]=7,[36]=37,[37]=39,[38]=39,[39]=44,[40]=45,[41]=49,[42]=50,[43]=51,[44]=10,[45]=11,[48]=41,[49]=9,[50]=50,[51]=8}
_[61] = {[32]=25,[34]=3,[35]=7}
_[62] = {[32]=25,[34]=4,[35]=7}
_[63] = {[32]=25,[34]=16,[35]=7}
_[64] = {[32]=25,[34]=5,[35]=7}
_[65] = {[32]=25,[34]=36,[35]=7,[46]=47}
_[66] = {[32]=25,[34]=6,[35]=7}
_[67] = {[32]=25,[34]=18,[35]=7}
_[68] = {[32]=25,[34]=43,[35]=7}
_[69] = {[32]=24,[34]=13,[36]=42}
_[70] = {[32]=20,[34]=13}
_[71] = {[34]=13,[50]=12}
_[72] = {_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[37],_[36],_[36],_[36],_[38],_[39],_[40],_[41],_[36],_[36],_[42],_[36],_[43],_[44],_[44],_[44],_[44],_[44],_[44],_[44],_[45],_[45],_[46],_[36],_[36],_[36],_[36],_[47],_[36],_[48],_[48],_[49],_[50],_[49],_[49],_[51],_[51],_[51],_[51],_[51],_[51],_[51],_[51],_[51],_[51],_[51],_[51],_[52],_[51],_[51],_[51],_[53],_[51],_[51],_[51],_[54],_[55],_[37],_[56],_[57],_[36],_[48],_[48],_[58],_[59],_[49],_[60],_[51],_[51],_[51],_[51],_[51],_[51],_[51],_[61],_[51],_[51],_[51],_[62],_[63],_[64],_[65],_[66],_[67],_[68],_[51],_[51],_[69],_[70],_[71],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],_[36],[0]=_[36]}
_[73] = {accept_states=_[35],max_state=51,start_state=32,transitions=_[72]}
_[74] = {accept_to_actions=_[33],accept_to_symbol=_[34],automaton=_[73]}
_[75] = {5}
_[76] = {_[75]}
_[77] = {_[28],_[28],_[76]}
_[78] = {26,27,28}
_[79] = {1,2,3}
_[80] = {[4]=2}
_[81] = {[1]=1,[4]=1}
_[82] = {[4]=3}
_[83] = {_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[80],_[28],_[28],_[28],_[81],_[81],_[81],_[81],_[81],_[81],_[81],_[81],_[81],_[81],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[82],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[28],[0]=_[28]}
_[84] = {accept_states=_[79],max_state=4,start_state=4,transitions=_[83]}
_[85] = {accept_to_actions=_[77],accept_to_symbol=_[78],automaton=_[84]}
_[86] = {6,"\b"}
_[87] = {_[86]}
_[88] = {6,"-"}
_[89] = {_[88]}
_[90] = {_[2],_[4],_[6],_[8],_[10],_[12],_[17],_[19],_[21],_[23],_[25],_[27],_[28],_[28],_[28],_[28],_[28],_[28],_[28],_[87],_[89],_[28],_[76]}
_[91] = {2,3,3,3,3,3,4,5,6,6,6,7,8,9,10,11,12,13,29,30,31,32,33}
_[92] = {1,2,3,4,5,6,7,8,9,10,10,11,12,13,14,15,16,17,18,19,20,22,23}
_[93] = {[24]=20,[25]=13}
_[94] = {[24]=22,[25]=13}
_[95] = {[24]=20,[25]=1,[27]=28,[28]=30,[29]=30,[30]=35,[31]=36,[32]=40,[33]=41,[34]=42,[35]=10,[36]=11,[40]=9,[41]=41,[42]=8}
_[96] = {[24]=20,[27]=28,[28]=30,[29]=30,[30]=35,[31]=36,[32]=40,[33]=41,[34]=42,[35]=10,[36]=11,[40]=9,[41]=41,[42]=8}
_[97] = {[24]=20,[27]=28,[28]=30,[29]=31,[30]=35,[31]=36,[32]=40,[33]=41,[34]=42,[35]=10,[36]=11,[40]=9,[41]=41,[42]=8}
_[98] = {[24]=20,[26]=7,[27]=28,[28]=30,[29]=31,[30]=35,[31]=36,[32]=40,[33]=41,[34]=42,[35]=10,[36]=11,[40]=9,[41]=41,[42]=8}
_[99] = {[24]=20,[26]=7,[27]=28,[28]=30,[29]=30,[30]=35,[31]=36,[32]=40,[33]=41,[34]=42,[35]=10,[36]=11,[39]=32,[40]=9,[41]=41,[42]=8}
_[100] = {[24]=20,[25]=15,[26]=7,[27]=29,[28]=30,[29]=30,[30]=35,[31]=36,[32]=40,[33]=41,[34]=42,[35]=10,[36]=11,[38]=39,[39]=32,[40]=9,[41]=41,[42]=8}
_[101] = {[24]=20,[26]=7}
_[102] = {[24]=20,[25]=17,[26]=7}
_[103] = {[24]=20,[25]=19,[26]=7}
_[104] = {[11]=37,[24]=25,[25]=13}
_[105] = {[24]=23,[25]=13}
_[106] = {[24]=20}
_[107] = {[24]=20,[25]=21,[26]=7,[27]=28,[28]=30,[29]=31,[30]=35,[31]=36,[32]=40,[33]=41,[34]=42,[35]=10,[36]=11,[40]=9,[41]=41,[42]=8}
_[108] = {[24]=20,[25]=26,[26]=7,[27]=28,[28]=30,[29]=30,[30]=35,[31]=36,[32]=40,[33]=41,[34]=42,[35]=10,[36]=11,[39]=32,[40]=9,[41]=41,[42]=8}
_[109] = {[24]=20,[25]=14,[26]=7,[27]=29,[28]=30,[29]=30,[30]=35,[31]=36,[32]=40,[33]=41,[34]=42,[35]=10,[36]=11,[38]=39,[39]=32,[40]=9,[41]=41,[42]=8}
_[110] = {[24]=20,[25]=2,[26]=7,[27]=28,[28]=30,[29]=30,[30]=35,[31]=36,[32]=40,[33]=41,[34]=42,[35]=10,[36]=11,[39]=32,[40]=9,[41]=41,[42]=8}
_[111] = {[24]=20,[25]=3,[26]=7}
_[112] = {[24]=20,[25]=4,[26]=7}
_[113] = {[24]=20,[25]=16,[26]=7}
_[114] = {[24]=20,[25]=5,[26]=7}
_[115] = {[24]=20,[25]=27,[26]=7,[37]=38}
_[116] = {[24]=20,[25]=6,[26]=7}
_[117] = {[24]=20,[25]=18,[26]=7}
_[118] = {[24]=20,[25]=34,[26]=7}
_[119] = {[24]=20,[25]=13,[27]=33}
_[120] = {[24]=20,[25]=13,[41]=12}
_[121] = {_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[94],_[93],_[93],_[95],_[96],_[96],_[96],_[96],_[96],_[96],_[96],_[97],_[97],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[98],_[98],_[99],_[100],_[99],_[99],_[101],_[101],_[101],_[101],_[101],_[101],_[101],_[101],_[101],_[101],_[101],_[101],_[102],_[101],_[101],_[101],_[103],_[101],_[101],_[101],_[93],_[104],_[105],_[93],_[106],_[93],_[98],_[107],_[108],_[109],_[99],_[110],_[101],_[101],_[101],_[101],_[101],_[101],_[101],_[111],_[101],_[101],_[101],_[112],_[113],_[114],_[115],_[116],_[117],_[118],_[101],_[101],_[119],_[93],_[120],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],_[93],[0]=_[93]}
_[122] = {accept_states=_[92],max_state=42,start_state=24,transitions=_[121]}
_[123] = {accept_to_actions=_[90],accept_to_symbol=_[91],automaton=_[122]}
_[124] = {_[74],_[85],_[123]}
local root = setmetatable(_[124], metatable)
return function() return root end
