Class: HTTP2::Header::Huffman

Inherits:
Object
  • Object
show all
Includes:
Error
Defined in:
lib/http/2/huffman.rb,
lib/http/2/huffman_statemachine.rb

Overview

Huffman encoder/decoder

Constant Summary collapse

BITS_AT_ONCE =
4
CODES =
[
  [    0x1ff8, 13],
  [  0x7fffd8, 23],
  [ 0xfffffe2, 28],
  [ 0xfffffe3, 28],
  [ 0xfffffe4, 28],
  [ 0xfffffe5, 28],
  [ 0xfffffe6, 28],
  [ 0xfffffe7, 28],
  [ 0xfffffe8, 28],
  [  0xffffea, 24],
  [0x3ffffffc, 30],
  [ 0xfffffe9, 28],
  [ 0xfffffea, 28],
  [0x3ffffffd, 30],
  [ 0xfffffeb, 28],
  [ 0xfffffec, 28],
  [ 0xfffffed, 28],
  [ 0xfffffee, 28],
  [ 0xfffffef, 28],
  [ 0xffffff0, 28],
  [ 0xffffff1, 28],
  [ 0xffffff2, 28],
  [0x3ffffffe, 30],
  [ 0xffffff3, 28],
  [ 0xffffff4, 28],
  [ 0xffffff5, 28],
  [ 0xffffff6, 28],
  [ 0xffffff7, 28],
  [ 0xffffff8, 28],
  [ 0xffffff9, 28],
  [ 0xffffffa, 28],
  [ 0xffffffb, 28],
  [      0x14,  6],
  [     0x3f8, 10],
  [     0x3f9, 10],
  [     0xffa, 12],
  [    0x1ff9, 13],
  [      0x15,  6],
  [      0xf8,  8],
  [     0x7fa, 11],
  [     0x3fa, 10],
  [     0x3fb, 10],
  [      0xf9,  8],
  [     0x7fb, 11],
  [      0xfa,  8],
  [      0x16,  6],
  [      0x17,  6],
  [      0x18,  6],
  [       0x0,  5],
  [       0x1,  5],
  [       0x2,  5],
  [      0x19,  6],
  [      0x1a,  6],
  [      0x1b,  6],
  [      0x1c,  6],
  [      0x1d,  6],
  [      0x1e,  6],
  [      0x1f,  6],
  [      0x5c,  7],
  [      0xfb,  8],
  [    0x7ffc, 15],
  [      0x20,  6],
  [     0xffb, 12],
  [     0x3fc, 10],
  [    0x1ffa, 13],
  [      0x21,  6],
  [      0x5d,  7],
  [      0x5e,  7],
  [      0x5f,  7],
  [      0x60,  7],
  [      0x61,  7],
  [      0x62,  7],
  [      0x63,  7],
  [      0x64,  7],
  [      0x65,  7],
  [      0x66,  7],
  [      0x67,  7],
  [      0x68,  7],
  [      0x69,  7],
  [      0x6a,  7],
  [      0x6b,  7],
  [      0x6c,  7],
  [      0x6d,  7],
  [      0x6e,  7],
  [      0x6f,  7],
  [      0x70,  7],
  [      0x71,  7],
  [      0x72,  7],
  [      0xfc,  8],
  [      0x73,  7],
  [      0xfd,  8],
  [    0x1ffb, 13],
  [   0x7fff0, 19],
  [    0x1ffc, 13],
  [    0x3ffc, 14],
  [      0x22,  6],
  [    0x7ffd, 15],
  [       0x3,  5],
  [      0x23,  6],
  [       0x4,  5],
  [      0x24,  6],
  [       0x5,  5],
  [      0x25,  6],
  [      0x26,  6],
  [      0x27,  6],
  [       0x6,  5],
  [      0x74,  7],
  [      0x75,  7],
  [      0x28,  6],
  [      0x29,  6],
  [      0x2a,  6],
  [       0x7,  5],
  [      0x2b,  6],
  [      0x76,  7],
  [      0x2c,  6],
  [       0x8,  5],
  [       0x9,  5],
  [      0x2d,  6],
  [      0x77,  7],
  [      0x78,  7],
  [      0x79,  7],
  [      0x7a,  7],
  [      0x7b,  7],
  [    0x7ffe, 15],
  [     0x7fc, 11],
  [    0x3ffd, 14],
  [    0x1ffd, 13],
  [ 0xffffffc, 28],
  [   0xfffe6, 20],
  [  0x3fffd2, 22],
  [   0xfffe7, 20],
  [   0xfffe8, 20],
  [  0x3fffd3, 22],
  [  0x3fffd4, 22],
  [  0x3fffd5, 22],
  [  0x7fffd9, 23],
  [  0x3fffd6, 22],
  [  0x7fffda, 23],
  [  0x7fffdb, 23],
  [  0x7fffdc, 23],
  [  0x7fffdd, 23],
  [  0x7fffde, 23],
  [  0xffffeb, 24],
  [  0x7fffdf, 23],
  [  0xffffec, 24],
  [  0xffffed, 24],
  [  0x3fffd7, 22],
  [  0x7fffe0, 23],
  [  0xffffee, 24],
  [  0x7fffe1, 23],
  [  0x7fffe2, 23],
  [  0x7fffe3, 23],
  [  0x7fffe4, 23],
  [  0x1fffdc, 21],
  [  0x3fffd8, 22],
  [  0x7fffe5, 23],
  [  0x3fffd9, 22],
  [  0x7fffe6, 23],
  [  0x7fffe7, 23],
  [  0xffffef, 24],
  [  0x3fffda, 22],
  [  0x1fffdd, 21],
  [   0xfffe9, 20],
  [  0x3fffdb, 22],
  [  0x3fffdc, 22],
  [  0x7fffe8, 23],
  [  0x7fffe9, 23],
  [  0x1fffde, 21],
  [  0x7fffea, 23],
  [  0x3fffdd, 22],
  [  0x3fffde, 22],
  [  0xfffff0, 24],
  [  0x1fffdf, 21],
  [  0x3fffdf, 22],
  [  0x7fffeb, 23],
  [  0x7fffec, 23],
  [  0x1fffe0, 21],
  [  0x1fffe1, 21],
  [  0x3fffe0, 22],
  [  0x1fffe2, 21],
  [  0x7fffed, 23],
  [  0x3fffe1, 22],
  [  0x7fffee, 23],
  [  0x7fffef, 23],
  [   0xfffea, 20],
  [  0x3fffe2, 22],
  [  0x3fffe3, 22],
  [  0x3fffe4, 22],
  [  0x7ffff0, 23],
  [  0x3fffe5, 22],
  [  0x3fffe6, 22],
  [  0x7ffff1, 23],
  [ 0x3ffffe0, 26],
  [ 0x3ffffe1, 26],
  [   0xfffeb, 20],
  [   0x7fff1, 19],
  [  0x3fffe7, 22],
  [  0x7ffff2, 23],
  [  0x3fffe8, 22],
  [ 0x1ffffec, 25],
  [ 0x3ffffe2, 26],
  [ 0x3ffffe3, 26],
  [ 0x3ffffe4, 26],
  [ 0x7ffffde, 27],
  [ 0x7ffffdf, 27],
  [ 0x3ffffe5, 26],
  [  0xfffff1, 24],
  [ 0x1ffffed, 25],
  [   0x7fff2, 19],
  [  0x1fffe3, 21],
  [ 0x3ffffe6, 26],
  [ 0x7ffffe0, 27],
  [ 0x7ffffe1, 27],
  [ 0x3ffffe7, 26],
  [ 0x7ffffe2, 27],
  [  0xfffff2, 24],
  [  0x1fffe4, 21],
  [  0x1fffe5, 21],
  [ 0x3ffffe8, 26],
  [ 0x3ffffe9, 26],
  [ 0xffffffd, 28],
  [ 0x7ffffe3, 27],
  [ 0x7ffffe4, 27],
  [ 0x7ffffe5, 27],
  [   0xfffec, 20],
  [  0xfffff3, 24],
  [   0xfffed, 20],
  [  0x1fffe6, 21],
  [  0x3fffe9, 22],
  [  0x1fffe7, 21],
  [  0x1fffe8, 21],
  [  0x7ffff3, 23],
  [  0x3fffea, 22],
  [  0x3fffeb, 22],
  [ 0x1ffffee, 25],
  [ 0x1ffffef, 25],
  [  0xfffff4, 24],
  [  0xfffff5, 24],
  [ 0x3ffffea, 26],
  [  0x7ffff4, 23],
  [ 0x3ffffeb, 26],
  [ 0x7ffffe6, 27],
  [ 0x3ffffec, 26],
  [ 0x3ffffed, 26],
  [ 0x7ffffe7, 27],
  [ 0x7ffffe8, 27],
  [ 0x7ffffe9, 27],
  [ 0x7ffffea, 27],
  [ 0x7ffffeb, 27],
  [ 0xffffffe, 28],
  [ 0x7ffffec, 27],
  [ 0x7ffffed, 27],
  [ 0x7ffffee, 27],
  [ 0x7ffffef, 27],
  [ 0x7fffff0, 27],
  [ 0x3ffffee, 26],
  [0x3fffffff, 30],
]
MAX_FINAL_STATE =

:nodoc:

7
MACHINE =
[
  [[nil,16],[nil,76],[nil,54],[nil,36],[nil,30],[nil,28],[nil,24],[nil,221],[nil,9],[nil,10],[nil,11],[nil,12],[nil,13],[nil,14],[nil,15],[nil,1],],
  [["w",29],["w",5],["x",29],["x",5],["y",29],["y",5],["z",29],["z",5],["&",0],["*",0],[",",0],[";",0],["X",0],["Z",0],[nil,31],[nil,32],],
  [["&",29],["&",5],["*",29],["*",5],[",",29],[",",5],[";",29],[";",5],["X",29],["X",5],["Z",29],["Z",5],[nil,87],[nil,88],[nil,89],[nil,90],],
  [["X",25],["X",26],["X",27],["X",6],["Z",25],["Z",26],["Z",27],["Z",6],["!",0],["\"",0],["(",0],[")",0],["?",0],[nil,84],[nil,85],[nil,86],],
  [["!",29],["!",5],["\"",29],["\"",5],["(",29],["(",5],[")",29],[")",5],["?",29],["?",5],["'",0],["+",0],["|",0],[nil,81],[nil,82],[nil,83],],
  [[nil,61],[nil,62],[nil,63],[nil,64],[nil,65],[nil,66],[nil,67],[nil,68],[nil,69],[nil,70],[nil,71],[nil,72],[nil,73],[nil,74],[nil,75],[nil,2],],
  [[nil,39],[nil,40],[nil,41],[nil,42],[nil,43],[nil,44],[nil,45],[nil,46],[nil,47],[nil,48],[nil,49],[nil,50],[nil,51],[nil,52],[nil,53],[nil,3],],
  [["U",0],["V",0],["W",0],["Y",0],["j",0],["k",0],["q",0],["v",0],["w",0],["x",0],["y",0],["z",0],[nil,33],[nil,34],[nil,35],[nil,4],],
  [["\xCB",17],["\xCB",18],["\xCB",19],["\xCB",20],["\xCB",21],["\xCB",22],["\xCB",23],["\xCB",7],["\xCC",17],["\xCC",18],["\xCC",19],["\xCC",20],["\xCC",21],["\xCC",22],["\xCC",23],["\xCC",7],],
  [["=",25],["=",26],["=",27],["=",6],["A",25],["A",26],["A",27],["A",6],["_",25],["_",26],["_",27],["_",6],["b",25],["b",26],["b",27],["b",6],],
  [["d",25],["d",26],["d",27],["d",6],["f",25],["f",26],["f",27],["f",6],["g",25],["g",26],["g",27],["g",6],["h",25],["h",26],["h",27],["h",6],],
  [["l",25],["l",26],["l",27],["l",6],["m",25],["m",26],["m",27],["m",6],["n",25],["n",26],["n",27],["n",6],["p",25],["p",26],["p",27],["p",6],],
  [["r",25],["r",26],["r",27],["r",6],["u",25],["u",26],["u",27],["u",6],[":",29],[":",5],["B",29],["B",5],["C",29],["C",5],["D",29],["D",5],],
  [["E",29],["E",5],["F",29],["F",5],["G",29],["G",5],["H",29],["H",5],["I",29],["I",5],["J",29],["J",5],["K",29],["K",5],["L",29],["L",5],],
  [["M",29],["M",5],["N",29],["N",5],["O",29],["O",5],["P",29],["P",5],["Q",29],["Q",5],["R",29],["R",5],["S",29],["S",5],["T",29],["T",5],],
  [["U",29],["U",5],["V",29],["V",5],["W",29],["W",5],["Y",29],["Y",5],["j",29],["j",5],["k",29],["k",5],["q",29],["q",5],["v",29],["v",5],],
  [["0",17],["0",18],["0",19],["0",20],["0",21],["0",22],["0",23],["0",7],["1",17],["1",18],["1",19],["1",20],["1",21],["1",22],["1",23],["1",7],],
  [["0",25],["0",26],["0",27],["0",6],["1",25],["1",26],["1",27],["1",6],["2",25],["2",26],["2",27],["2",6],["a",25],["a",26],["a",27],["a",6],],
  [["c",25],["c",26],["c",27],["c",6],["e",25],["e",26],["e",27],["e",6],["i",25],["i",26],["i",27],["i",6],["o",25],["o",26],["o",27],["o",6],],
  [["s",25],["s",26],["s",27],["s",6],["t",25],["t",26],["t",27],["t",6],[" ",29],[" ",5],["%",29],["%",5],["-",29],["-",5],[".",29],[".",5],],
  [["/",29],["/",5],["3",29],["3",5],["4",29],["4",5],["5",29],["5",5],["6",29],["6",5],["7",29],["7",5],["8",29],["8",5],["9",29],["9",5],],
  [["=",29],["=",5],["A",29],["A",5],["_",29],["_",5],["b",29],["b",5],["d",29],["d",5],["f",29],["f",5],["g",29],["g",5],["h",29],["h",5],],
  [["l",29],["l",5],["m",29],["m",5],["n",29],["n",5],["p",29],["p",5],["r",29],["r",5],["u",29],["u",5],[":",0],["B",0],["C",0],["D",0],],
  [["E",0],["F",0],["G",0],["H",0],["I",0],["J",0],["K",0],["L",0],["M",0],["N",0],["O",0],["P",0],["Q",0],["R",0],["S",0],["T",0],],
  [["/",25],["/",26],["/",27],["/",6],["3",25],["3",26],["3",27],["3",6],["4",25],["4",26],["4",27],["4",6],["5",25],["5",26],["5",27],["5",6],],
  [["0",29],["0",5],["1",29],["1",5],["2",29],["2",5],["a",29],["a",5],["c",29],["c",5],["e",29],["e",5],["i",29],["i",5],["o",29],["o",5],],
  [["s",29],["s",5],["t",29],["t",5],[" ",0],["%",0],["-",0],[".",0],["/",0],["3",0],["4",0],["5",0],["6",0],["7",0],["8",0],["9",0],],
  [["=",0],["A",0],["_",0],["b",0],["d",0],["f",0],["g",0],["h",0],["l",0],["m",0],["n",0],["p",0],["r",0],["u",0],[nil,37],[nil,38],],
  [[" ",25],[" ",26],[" ",27],[" ",6],["%",25],["%",26],["%",27],["%",6],["-",25],["-",26],["-",27],["-",6],[".",25],[".",26],[".",27],[".",6],],
  [["0",0],["1",0],["2",0],["a",0],["c",0],["e",0],["i",0],["o",0],["s",0],["t",0],[nil,55],[nil,56],[nil,57],[nil,58],[nil,59],[nil,60],],
  [["s",17],["s",18],["s",19],["s",20],["s",21],["s",22],["s",23],["s",7],["t",17],["t",18],["t",19],["t",20],["t",21],["t",22],["t",23],["t",7],],
  [["!",25],["!",26],["!",27],["!",6],["\"",25],["\"",26],["\"",27],["\"",6],["(",25],["(",26],["(",27],["(",6],[")",25],[")",26],[")",27],[")",6],],
  [["?",25],["?",26],["?",27],["?",6],["'",29],["'",5],["+",29],["+",5],["|",29],["|",5],["#",0],[">",0],[nil,77],[nil,78],[nil,79],[nil,80],],
  [["&",17],["&",18],["&",19],["&",20],["&",21],["&",22],["&",23],["&",7],["*",17],["*",18],["*",19],["*",20],["*",21],["*",22],["*",23],["*",7],],
  [[",",17],[",",18],[",",19],[",",20],[",",21],[",",22],[",",23],[",",7],[";",17],[";",18],[";",19],[";",20],[";",21],[";",22],[";",23],[";",7],],
  [["X",17],["X",18],["X",19],["X",20],["X",21],["X",22],["X",23],["X",7],["Z",17],["Z",18],["Z",19],["Z",20],["Z",21],["Z",22],["Z",23],["Z",7],],
  [["i",17],["i",18],["i",19],["i",20],["i",21],["i",22],["i",23],["i",7],["o",17],["o",18],["o",19],["o",20],["o",21],["o",22],["o",23],["o",7],],
  [[":",17],[":",18],[":",19],[":",20],[":",21],[":",22],[":",23],[":",7],["B",17],["B",18],["B",19],["B",20],["B",21],["B",22],["B",23],["B",7],],
  [["C",17],["C",18],["C",19],["C",20],["C",21],["C",22],["C",23],["C",7],["D",17],["D",18],["D",19],["D",20],["D",21],["D",22],["D",23],["D",7],],
  [["E",17],["E",18],["E",19],["E",20],["E",21],["E",22],["E",23],["E",7],["F",17],["F",18],["F",19],["F",20],["F",21],["F",22],["F",23],["F",7],],
  [["G",17],["G",18],["G",19],["G",20],["G",21],["G",22],["G",23],["G",7],["H",17],["H",18],["H",19],["H",20],["H",21],["H",22],["H",23],["H",7],],
  [["I",17],["I",18],["I",19],["I",20],["I",21],["I",22],["I",23],["I",7],["J",17],["J",18],["J",19],["J",20],["J",21],["J",22],["J",23],["J",7],],
  [["K",17],["K",18],["K",19],["K",20],["K",21],["K",22],["K",23],["K",7],["L",17],["L",18],["L",19],["L",20],["L",21],["L",22],["L",23],["L",7],],
  [["M",17],["M",18],["M",19],["M",20],["M",21],["M",22],["M",23],["M",7],["N",17],["N",18],["N",19],["N",20],["N",21],["N",22],["N",23],["N",7],],
  [["O",17],["O",18],["O",19],["O",20],["O",21],["O",22],["O",23],["O",7],["P",17],["P",18],["P",19],["P",20],["P",21],["P",22],["P",23],["P",7],],
  [["Q",17],["Q",18],["Q",19],["Q",20],["Q",21],["Q",22],["Q",23],["Q",7],["R",17],["R",18],["R",19],["R",20],["R",21],["R",22],["R",23],["R",7],],
  [["S",17],["S",18],["S",19],["S",20],["S",21],["S",22],["S",23],["S",7],["T",17],["T",18],["T",19],["T",20],["T",21],["T",22],["T",23],["T",7],],
  [["U",17],["U",18],["U",19],["U",20],["U",21],["U",22],["U",23],["U",7],["V",17],["V",18],["V",19],["V",20],["V",21],["V",22],["V",23],["V",7],],
  [["W",17],["W",18],["W",19],["W",20],["W",21],["W",22],["W",23],["W",7],["Y",17],["Y",18],["Y",19],["Y",20],["Y",21],["Y",22],["Y",23],["Y",7],],
  [["j",17],["j",18],["j",19],["j",20],["j",21],["j",22],["j",23],["j",7],["k",17],["k",18],["k",19],["k",20],["k",21],["k",22],["k",23],["k",7],],
  [["q",17],["q",18],["q",19],["q",20],["q",21],["q",22],["q",23],["q",7],["v",17],["v",18],["v",19],["v",20],["v",21],["v",22],["v",23],["v",7],],
  [["w",17],["w",18],["w",19],["w",20],["w",21],["w",22],["w",23],["w",7],["x",17],["x",18],["x",19],["x",20],["x",21],["x",22],["x",23],["x",7],],
  [["y",17],["y",18],["y",19],["y",20],["y",21],["y",22],["y",23],["y",7],["z",17],["z",18],["z",19],["z",20],["z",21],["z",22],["z",23],["z",7],],
  [["&",25],["&",26],["&",27],["&",6],["*",25],["*",26],["*",27],["*",6],[",",25],[",",26],[",",27],[",",6],[";",25],[";",26],[";",27],[";",6],],
  [["c",17],["c",18],["c",19],["c",20],["c",21],["c",22],["c",23],["c",7],["e",17],["e",18],["e",19],["e",20],["e",21],["e",22],["e",23],["e",7],],
  [[" ",17],[" ",18],[" ",19],[" ",20],[" ",21],[" ",22],[" ",23],[" ",7],["%",17],["%",18],["%",19],["%",20],["%",21],["%",22],["%",23],["%",7],],
  [["-",17],["-",18],["-",19],["-",20],["-",21],["-",22],["-",23],["-",7],[".",17],[".",18],[".",19],[".",20],[".",21],[".",22],[".",23],[".",7],],
  [["/",17],["/",18],["/",19],["/",20],["/",21],["/",22],["/",23],["/",7],["3",17],["3",18],["3",19],["3",20],["3",21],["3",22],["3",23],["3",7],],
  [["4",17],["4",18],["4",19],["4",20],["4",21],["4",22],["4",23],["4",7],["5",17],["5",18],["5",19],["5",20],["5",21],["5",22],["5",23],["5",7],],
  [["6",17],["6",18],["6",19],["6",20],["6",21],["6",22],["6",23],["6",7],["7",17],["7",18],["7",19],["7",20],["7",21],["7",22],["7",23],["7",7],],
  [["8",17],["8",18],["8",19],["8",20],["8",21],["8",22],["8",23],["8",7],["9",17],["9",18],["9",19],["9",20],["9",21],["9",22],["9",23],["9",7],],
  [["=",17],["=",18],["=",19],["=",20],["=",21],["=",22],["=",23],["=",7],["A",17],["A",18],["A",19],["A",20],["A",21],["A",22],["A",23],["A",7],],
  [["_",17],["_",18],["_",19],["_",20],["_",21],["_",22],["_",23],["_",7],["b",17],["b",18],["b",19],["b",20],["b",21],["b",22],["b",23],["b",7],],
  [["d",17],["d",18],["d",19],["d",20],["d",21],["d",22],["d",23],["d",7],["f",17],["f",18],["f",19],["f",20],["f",21],["f",22],["f",23],["f",7],],
  [["g",17],["g",18],["g",19],["g",20],["g",21],["g",22],["g",23],["g",7],["h",17],["h",18],["h",19],["h",20],["h",21],["h",22],["h",23],["h",7],],
  [["l",17],["l",18],["l",19],["l",20],["l",21],["l",22],["l",23],["l",7],["m",17],["m",18],["m",19],["m",20],["m",21],["m",22],["m",23],["m",7],],
  [["n",17],["n",18],["n",19],["n",20],["n",21],["n",22],["n",23],["n",7],["p",17],["p",18],["p",19],["p",20],["p",21],["p",22],["p",23],["p",7],],
  [["r",17],["r",18],["r",19],["r",20],["r",21],["r",22],["r",23],["r",7],["u",17],["u",18],["u",19],["u",20],["u",21],["u",22],["u",23],["u",7],],
  [[":",25],[":",26],[":",27],[":",6],["B",25],["B",26],["B",27],["B",6],["C",25],["C",26],["C",27],["C",6],["D",25],["D",26],["D",27],["D",6],],
  [["E",25],["E",26],["E",27],["E",6],["F",25],["F",26],["F",27],["F",6],["G",25],["G",26],["G",27],["G",6],["H",25],["H",26],["H",27],["H",6],],
  [["I",25],["I",26],["I",27],["I",6],["J",25],["J",26],["J",27],["J",6],["K",25],["K",26],["K",27],["K",6],["L",25],["L",26],["L",27],["L",6],],
  [["M",25],["M",26],["M",27],["M",6],["N",25],["N",26],["N",27],["N",6],["O",25],["O",26],["O",27],["O",6],["P",25],["P",26],["P",27],["P",6],],
  [["Q",25],["Q",26],["Q",27],["Q",6],["R",25],["R",26],["R",27],["R",6],["S",25],["S",26],["S",27],["S",6],["T",25],["T",26],["T",27],["T",6],],
  [["U",25],["U",26],["U",27],["U",6],["V",25],["V",26],["V",27],["V",6],["W",25],["W",26],["W",27],["W",6],["Y",25],["Y",26],["Y",27],["Y",6],],
  [["j",25],["j",26],["j",27],["j",6],["k",25],["k",26],["k",27],["k",6],["q",25],["q",26],["q",27],["q",6],["v",25],["v",26],["v",27],["v",6],],
  [["w",25],["w",26],["w",27],["w",6],["x",25],["x",26],["x",27],["x",6],["y",25],["y",26],["y",27],["y",6],["z",25],["z",26],["z",27],["z",6],],
  [["2",17],["2",18],["2",19],["2",20],["2",21],["2",22],["2",23],["2",7],["a",17],["a",18],["a",19],["a",20],["a",21],["a",22],["a",23],["a",7],],
  [["\x00",17],["\x00",18],["\x00",19],["\x00",20],["\x00",21],["\x00",22],["\x00",23],["\x00",7],["$",17],["$",18],["$",19],["$",20],["$",21],["$",22],["$",23],["$",7],],
  [["@",17],["@",18],["@",19],["@",20],["@",21],["@",22],["@",23],["@",7],["[",17],["[",18],["[",19],["[",20],["[",21],["[",22],["[",23],["[",7],],
  [["]",17],["]",18],["]",19],["]",20],["]",21],["]",22],["]",23],["]",7],["~",17],["~",18],["~",19],["~",20],["~",21],["~",22],["~",23],["~",7],],
  [["^",25],["^",26],["^",27],["^",6],["}",25],["}",26],["}",27],["}",6],["<",29],["<",5],["`",29],["`",5],["{",29],["{",5],[nil,91],[nil,92],],
  [["#",17],["#",18],["#",19],["#",20],["#",21],["#",22],["#",23],["#",7],[">",17],[">",18],[">",19],[">",20],[">",21],[">",22],[">",23],[">",7],],
  [["\x00",25],["\x00",26],["\x00",27],["\x00",6],["$",25],["$",26],["$",27],["$",6],["@",25],["@",26],["@",27],["@",6],["[",25],["[",26],["[",27],["[",6],],
  [["]",25],["]",26],["]",27],["]",6],["~",25],["~",26],["~",27],["~",6],["^",29],["^",5],["}",29],["}",5],["<",0],["`",0],["{",0],[nil,93],],
  [["'",17],["'",18],["'",19],["'",20],["'",21],["'",22],["'",23],["'",7],["+",17],["+",18],["+",19],["+",20],["+",21],["+",22],["+",23],["+",7],],
  [["|",17],["|",18],["|",19],["|",20],["|",21],["|",22],["|",23],["|",7],["#",25],["#",26],["#",27],["#",6],[">",25],[">",26],[">",27],[">",6],],
  [["\x00",29],["\x00",5],["$",29],["$",5],["@",29],["@",5],["[",29],["[",5],["]",29],["]",5],["~",29],["~",5],["^",0],["}",0],[nil,94],[nil,95],],
  [["!",17],["!",18],["!",19],["!",20],["!",21],["!",22],["!",23],["!",7],["\"",17],["\"",18],["\"",19],["\"",20],["\"",21],["\"",22],["\"",23],["\"",7],],
  [["(",17],["(",18],["(",19],["(",20],["(",21],["(",22],["(",23],["(",7],[")",17],[")",18],[")",19],[")",20],[")",21],[")",22],[")",23],[")",7],],
  [["?",17],["?",18],["?",19],["?",20],["?",21],["?",22],["?",23],["?",7],["'",25],["'",26],["'",27],["'",6],["+",25],["+",26],["+",27],["+",6],],
  [["|",25],["|",26],["|",27],["|",6],["#",29],["#",5],[">",29],[">",5],["\x00",0],["$",0],["@",0],["[",0],["]",0],["~",0],[nil,96],[nil,97],],
  [["\\",29],["\\",5],["\xC3",29],["\xC3",5],["\xD0",29],["\xD0",5],["\x80",0],["\x82",0],["\x83",0],["\xA2",0],["\xB8",0],["\xC2",0],["\xE0",0],["\xE2",0],[nil,98],[nil,99],],
  [[nil,100],[nil,101],[nil,102],[nil,103],[nil,104],[nil,105],[nil,106],[nil,107],[nil,108],[nil,109],[nil,110],[nil,111],[nil,112],[nil,113],[nil,114],[nil,115],],
  [["\\",0],["\xC3",0],["\xD0",0],[nil,116],[nil,117],[nil,118],[nil,119],[nil,120],[nil,121],[nil,122],[nil,123],[nil,124],[nil,125],[nil,126],[nil,127],[nil,128],],
  [["<",17],["<",18],["<",19],["<",20],["<",21],["<",22],["<",23],["<",7],["`",17],["`",18],["`",19],["`",20],["`",21],["`",22],["`",23],["`",7],],
  [["{",17],["{",18],["{",19],["{",20],["{",21],["{",22],["{",23],["{",7],[nil,129],[nil,130],[nil,131],[nil,132],[nil,133],[nil,134],[nil,135],[nil,136],],
  [["^",17],["^",18],["^",19],["^",20],["^",21],["^",22],["^",23],["^",7],["}",17],["}",18],["}",19],["}",20],["}",21],["}",22],["}",23],["}",7],],
  [["<",25],["<",26],["<",27],["<",6],["`",25],["`",26],["`",27],["`",6],["{",25],["{",26],["{",27],["{",6],[nil,137],[nil,138],[nil,139],[nil,140],],
  [["\x99",17],["\x99",18],["\x99",19],["\x99",20],["\x99",21],["\x99",22],["\x99",23],["\x99",7],["\xA1",17],["\xA1",18],["\xA1",19],["\xA1",20],["\xA1",21],["\xA1",22],["\xA1",23],["\xA1",7],],
  [["\xA7",17],["\xA7",18],["\xA7",19],["\xA7",20],["\xA7",21],["\xA7",22],["\xA7",23],["\xA7",7],["\xAC",17],["\xAC",18],["\xAC",19],["\xAC",20],["\xAC",21],["\xAC",22],["\xAC",23],["\xAC",7],],
  [["\xB0",17],["\xB0",18],["\xB0",19],["\xB0",20],["\xB0",21],["\xB0",22],["\xB0",23],["\xB0",7],["\xB1",17],["\xB1",18],["\xB1",19],["\xB1",20],["\xB1",21],["\xB1",22],["\xB1",23],["\xB1",7],],
  [["\xB3",17],["\xB3",18],["\xB3",19],["\xB3",20],["\xB3",21],["\xB3",22],["\xB3",23],["\xB3",7],["\xD1",17],["\xD1",18],["\xD1",19],["\xD1",20],["\xD1",21],["\xD1",22],["\xD1",23],["\xD1",7],],
  [["\xD8",17],["\xD8",18],["\xD8",19],["\xD8",20],["\xD8",21],["\xD8",22],["\xD8",23],["\xD8",7],["\xD9",17],["\xD9",18],["\xD9",19],["\xD9",20],["\xD9",21],["\xD9",22],["\xD9",23],["\xD9",7],],
  [["\xE3",17],["\xE3",18],["\xE3",19],["\xE3",20],["\xE3",21],["\xE3",22],["\xE3",23],["\xE3",7],["\xE5",17],["\xE5",18],["\xE5",19],["\xE5",20],["\xE5",21],["\xE5",22],["\xE5",23],["\xE5",7],],
  [["\xE6",17],["\xE6",18],["\xE6",19],["\xE6",20],["\xE6",21],["\xE6",22],["\xE6",23],["\xE6",7],["\x81",25],["\x81",26],["\x81",27],["\x81",6],["\x84",25],["\x84",26],["\x84",27],["\x84",6],],
  [["\x85",25],["\x85",26],["\x85",27],["\x85",6],["\x86",25],["\x86",26],["\x86",27],["\x86",6],["\x88",25],["\x88",26],["\x88",27],["\x88",6],["\x92",25],["\x92",26],["\x92",27],["\x92",6],],
  [["\x9A",25],["\x9A",26],["\x9A",27],["\x9A",6],["\x9C",25],["\x9C",26],["\x9C",27],["\x9C",6],["\xA0",25],["\xA0",26],["\xA0",27],["\xA0",6],["\xA3",25],["\xA3",26],["\xA3",27],["\xA3",6],],
  [["\xA4",25],["\xA4",26],["\xA4",27],["\xA4",6],["\xA9",25],["\xA9",26],["\xA9",27],["\xA9",6],["\xAA",25],["\xAA",26],["\xAA",27],["\xAA",6],["\xAD",25],["\xAD",26],["\xAD",27],["\xAD",6],],
  [["\xB2",25],["\xB2",26],["\xB2",27],["\xB2",6],["\xB5",25],["\xB5",26],["\xB5",27],["\xB5",6],["\xB9",25],["\xB9",26],["\xB9",27],["\xB9",6],["\xBA",25],["\xBA",26],["\xBA",27],["\xBA",6],],
  [["\xBB",25],["\xBB",26],["\xBB",27],["\xBB",6],["\xBD",25],["\xBD",26],["\xBD",27],["\xBD",6],["\xBE",25],["\xBE",26],["\xBE",27],["\xBE",6],["\xC4",25],["\xC4",26],["\xC4",27],["\xC4",6],],
  [["\xC6",25],["\xC6",26],["\xC6",27],["\xC6",6],["\xE4",25],["\xE4",26],["\xE4",27],["\xE4",6],["\xE8",25],["\xE8",26],["\xE8",27],["\xE8",6],["\xE9",25],["\xE9",26],["\xE9",27],["\xE9",6],],
  [["\x01",29],["\x01",5],["\x87",29],["\x87",5],["\x89",29],["\x89",5],["\x8A",29],["\x8A",5],["\x8B",29],["\x8B",5],["\x8C",29],["\x8C",5],["\x8D",29],["\x8D",5],["\x8F",29],["\x8F",5],],
  [["\x93",29],["\x93",5],["\x95",29],["\x95",5],["\x96",29],["\x96",5],["\x97",29],["\x97",5],["\x98",29],["\x98",5],["\x9B",29],["\x9B",5],["\x9D",29],["\x9D",5],["\x9E",29],["\x9E",5],],
  [["\xA5",29],["\xA5",5],["\xA6",29],["\xA6",5],["\xA8",29],["\xA8",5],["\xAE",29],["\xAE",5],["\xAF",29],["\xAF",5],["\xB4",29],["\xB4",5],["\xB6",29],["\xB6",5],["\xB7",29],["\xB7",5],],
  [["\xBC",29],["\xBC",5],["\xBF",29],["\xBF",5],["\xC5",29],["\xC5",5],["\xE7",29],["\xE7",5],["\xEF",29],["\xEF",5],["\t",0],["\x8E",0],["\x90",0],["\x91",0],["\x94",0],["\x9F",0],],
  [["\xAB",0],["\xCE",0],["\xD7",0],["\xE1",0],["\xEC",0],["\xED",0],[nil,141],[nil,142],[nil,143],[nil,144],[nil,145],[nil,146],[nil,147],[nil,148],[nil,149],[nil,150],],
  [["\x80",17],["\x80",18],["\x80",19],["\x80",20],["\x80",21],["\x80",22],["\x80",23],["\x80",7],["\x82",17],["\x82",18],["\x82",19],["\x82",20],["\x82",21],["\x82",22],["\x82",23],["\x82",7],],
  [["\x83",17],["\x83",18],["\x83",19],["\x83",20],["\x83",21],["\x83",22],["\x83",23],["\x83",7],["\xA2",17],["\xA2",18],["\xA2",19],["\xA2",20],["\xA2",21],["\xA2",22],["\xA2",23],["\xA2",7],],
  [["\xB8",17],["\xB8",18],["\xB8",19],["\xB8",20],["\xB8",21],["\xB8",22],["\xB8",23],["\xB8",7],["\xC2",17],["\xC2",18],["\xC2",19],["\xC2",20],["\xC2",21],["\xC2",22],["\xC2",23],["\xC2",7],],
  [["\xE0",17],["\xE0",18],["\xE0",19],["\xE0",20],["\xE0",21],["\xE0",22],["\xE0",23],["\xE0",7],["\xE2",17],["\xE2",18],["\xE2",19],["\xE2",20],["\xE2",21],["\xE2",22],["\xE2",23],["\xE2",7],],
  [["\x99",25],["\x99",26],["\x99",27],["\x99",6],["\xA1",25],["\xA1",26],["\xA1",27],["\xA1",6],["\xA7",25],["\xA7",26],["\xA7",27],["\xA7",6],["\xAC",25],["\xAC",26],["\xAC",27],["\xAC",6],],
  [["\xB0",25],["\xB0",26],["\xB0",27],["\xB0",6],["\xB1",25],["\xB1",26],["\xB1",27],["\xB1",6],["\xB3",25],["\xB3",26],["\xB3",27],["\xB3",6],["\xD1",25],["\xD1",26],["\xD1",27],["\xD1",6],],
  [["\xD8",25],["\xD8",26],["\xD8",27],["\xD8",6],["\xD9",25],["\xD9",26],["\xD9",27],["\xD9",6],["\xE3",25],["\xE3",26],["\xE3",27],["\xE3",6],["\xE5",25],["\xE5",26],["\xE5",27],["\xE5",6],],
  [["\xE6",25],["\xE6",26],["\xE6",27],["\xE6",6],["\x81",29],["\x81",5],["\x84",29],["\x84",5],["\x85",29],["\x85",5],["\x86",29],["\x86",5],["\x88",29],["\x88",5],["\x92",29],["\x92",5],],
  [["\x9A",29],["\x9A",5],["\x9C",29],["\x9C",5],["\xA0",29],["\xA0",5],["\xA3",29],["\xA3",5],["\xA4",29],["\xA4",5],["\xA9",29],["\xA9",5],["\xAA",29],["\xAA",5],["\xAD",29],["\xAD",5],],
  [["\xB2",29],["\xB2",5],["\xB5",29],["\xB5",5],["\xB9",29],["\xB9",5],["\xBA",29],["\xBA",5],["\xBB",29],["\xBB",5],["\xBD",29],["\xBD",5],["\xBE",29],["\xBE",5],["\xC4",29],["\xC4",5],],
  [["\xC6",29],["\xC6",5],["\xE4",29],["\xE4",5],["\xE8",29],["\xE8",5],["\xE9",29],["\xE9",5],["\x01",0],["\x87",0],["\x89",0],["\x8A",0],["\x8B",0],["\x8C",0],["\x8D",0],["\x8F",0],],
  [["\x93",0],["\x95",0],["\x96",0],["\x97",0],["\x98",0],["\x9B",0],["\x9D",0],["\x9E",0],["\xA5",0],["\xA6",0],["\xA8",0],["\xAE",0],["\xAF",0],["\xB4",0],["\xB6",0],["\xB7",0],],
  [["\xBC",0],["\xBF",0],["\xC5",0],["\xE7",0],["\xEF",0],[nil,151],[nil,152],[nil,153],[nil,154],[nil,155],[nil,156],[nil,157],[nil,158],[nil,159],[nil,160],[nil,161],],
  [["\\",17],["\\",18],["\\",19],["\\",20],["\\",21],["\\",22],["\\",23],["\\",7],["\xC3",17],["\xC3",18],["\xC3",19],["\xC3",20],["\xC3",21],["\xC3",22],["\xC3",23],["\xC3",7],],
  [["\xD0",17],["\xD0",18],["\xD0",19],["\xD0",20],["\xD0",21],["\xD0",22],["\xD0",23],["\xD0",7],["\x80",25],["\x80",26],["\x80",27],["\x80",6],["\x82",25],["\x82",26],["\x82",27],["\x82",6],],
  [["\x83",25],["\x83",26],["\x83",27],["\x83",6],["\xA2",25],["\xA2",26],["\xA2",27],["\xA2",6],["\xB8",25],["\xB8",26],["\xB8",27],["\xB8",6],["\xC2",25],["\xC2",26],["\xC2",27],["\xC2",6],],
  [["\xE0",25],["\xE0",26],["\xE0",27],["\xE0",6],["\xE2",25],["\xE2",26],["\xE2",27],["\xE2",6],["\x99",29],["\x99",5],["\xA1",29],["\xA1",5],["\xA7",29],["\xA7",5],["\xAC",29],["\xAC",5],],
  [["\xB0",29],["\xB0",5],["\xB1",29],["\xB1",5],["\xB3",29],["\xB3",5],["\xD1",29],["\xD1",5],["\xD8",29],["\xD8",5],["\xD9",29],["\xD9",5],["\xE3",29],["\xE3",5],["\xE5",29],["\xE5",5],],
  [["\xE6",29],["\xE6",5],["\x81",0],["\x84",0],["\x85",0],["\x86",0],["\x88",0],["\x92",0],["\x9A",0],["\x9C",0],["\xA0",0],["\xA3",0],["\xA4",0],["\xA9",0],["\xAA",0],["\xAD",0],],
  [["\xB2",0],["\xB5",0],["\xB9",0],["\xBA",0],["\xBB",0],["\xBD",0],["\xBE",0],["\xC4",0],["\xC6",0],["\xE4",0],["\xE8",0],["\xE9",0],[nil,162],[nil,163],[nil,164],[nil,165],],
  [[nil,166],[nil,167],[nil,168],[nil,169],[nil,170],[nil,171],[nil,172],[nil,173],[nil,174],[nil,175],[nil,176],[nil,177],[nil,178],[nil,179],[nil,180],[nil,181],],
  [["\\",25],["\\",26],["\\",27],["\\",6],["\xC3",25],["\xC3",26],["\xC3",27],["\xC3",6],["\xD0",25],["\xD0",26],["\xD0",27],["\xD0",6],["\x80",29],["\x80",5],["\x82",29],["\x82",5],],
  [["\x83",29],["\x83",5],["\xA2",29],["\xA2",5],["\xB8",29],["\xB8",5],["\xC2",29],["\xC2",5],["\xE0",29],["\xE0",5],["\xE2",29],["\xE2",5],["\x99",0],["\xA1",0],["\xA7",0],["\xAC",0],],
  [["\xB0",0],["\xB1",0],["\xB3",0],["\xD1",0],["\xD8",0],["\xD9",0],["\xE3",0],["\xE5",0],["\xE6",0],[nil,182],[nil,183],[nil,184],[nil,185],[nil,186],[nil,187],[nil,188],],
  [[nil,189],[nil,190],[nil,191],[nil,192],[nil,193],[nil,194],[nil,195],[nil,196],[nil,197],[nil,198],[nil,199],[nil,200],[nil,201],[nil,202],[nil,203],[nil,204],],
  [["\xC7",17],["\xC7",18],["\xC7",19],["\xC7",20],["\xC7",21],["\xC7",22],["\xC7",23],["\xC7",7],["\xCF",17],["\xCF",18],["\xCF",19],["\xCF",20],["\xCF",21],["\xCF",22],["\xCF",23],["\xCF",7],],
  [["\xEA",17],["\xEA",18],["\xEA",19],["\xEA",20],["\xEA",21],["\xEA",22],["\xEA",23],["\xEA",7],["\xEB",17],["\xEB",18],["\xEB",19],["\xEB",20],["\xEB",21],["\xEB",22],["\xEB",23],["\xEB",7],],
  [["\xC0",25],["\xC0",26],["\xC0",27],["\xC0",6],["\xC1",25],["\xC1",26],["\xC1",27],["\xC1",6],["\xC8",25],["\xC8",26],["\xC8",27],["\xC8",6],["\xC9",25],["\xC9",26],["\xC9",27],["\xC9",6],],
  [["\xCA",25],["\xCA",26],["\xCA",27],["\xCA",6],["\xCD",25],["\xCD",26],["\xCD",27],["\xCD",6],["\xD2",25],["\xD2",26],["\xD2",27],["\xD2",6],["\xD5",25],["\xD5",26],["\xD5",27],["\xD5",6],],
  [["\xDA",25],["\xDA",26],["\xDA",27],["\xDA",6],["\xDB",25],["\xDB",26],["\xDB",27],["\xDB",6],["\xEE",25],["\xEE",26],["\xEE",27],["\xEE",6],["\xF0",25],["\xF0",26],["\xF0",27],["\xF0",6],],
  [["\xF2",25],["\xF2",26],["\xF2",27],["\xF2",6],["\xF3",25],["\xF3",26],["\xF3",27],["\xF3",6],["\xFF",25],["\xFF",26],["\xFF",27],["\xFF",6],["\xCB",29],["\xCB",5],["\xCC",29],["\xCC",5],],
  [["\xD3",29],["\xD3",5],["\xD4",29],["\xD4",5],["\xD6",29],["\xD6",5],["\xDD",29],["\xDD",5],["\xDE",29],["\xDE",5],["\xDF",29],["\xDF",5],["\xF1",29],["\xF1",5],["\xF4",29],["\xF4",5],],
  [["\xF5",29],["\xF5",5],["\xF6",29],["\xF6",5],["\xF7",29],["\xF7",5],["\xF8",29],["\xF8",5],["\xFA",29],["\xFA",5],["\xFB",29],["\xFB",5],["\xFC",29],["\xFC",5],["\xFD",29],["\xFD",5],],
  [["\xFE",29],["\xFE",5],["\x02",0],["\x03",0],["\x04",0],["\x05",0],["\x06",0],["\a",0],["\b",0],["\v",0],["\f",0],["\x0E",0],["\x0F",0],["\x10",0],["\x11",0],["\x12",0],],
  [["\x13",0],["\x14",0],["\x15",0],["\x17",0],["\x18",0],["\x19",0],["\x1A",0],["\e",0],["\x1C",0],["\x1D",0],["\x1E",0],["\x1F",0],["\x7F",0],["\xDC",0],["\xF9",0],[nil,205],],
  [["\t",17],["\t",18],["\t",19],["\t",20],["\t",21],["\t",22],["\t",23],["\t",7],["\x8E",17],["\x8E",18],["\x8E",19],["\x8E",20],["\x8E",21],["\x8E",22],["\x8E",23],["\x8E",7],],
  [["\x90",17],["\x90",18],["\x90",19],["\x90",20],["\x90",21],["\x90",22],["\x90",23],["\x90",7],["\x91",17],["\x91",18],["\x91",19],["\x91",20],["\x91",21],["\x91",22],["\x91",23],["\x91",7],],
  [["\x94",17],["\x94",18],["\x94",19],["\x94",20],["\x94",21],["\x94",22],["\x94",23],["\x94",7],["\x9F",17],["\x9F",18],["\x9F",19],["\x9F",20],["\x9F",21],["\x9F",22],["\x9F",23],["\x9F",7],],
  [["\xAB",17],["\xAB",18],["\xAB",19],["\xAB",20],["\xAB",21],["\xAB",22],["\xAB",23],["\xAB",7],["\xCE",17],["\xCE",18],["\xCE",19],["\xCE",20],["\xCE",21],["\xCE",22],["\xCE",23],["\xCE",7],],
  [["\xD7",17],["\xD7",18],["\xD7",19],["\xD7",20],["\xD7",21],["\xD7",22],["\xD7",23],["\xD7",7],["\xE1",17],["\xE1",18],["\xE1",19],["\xE1",20],["\xE1",21],["\xE1",22],["\xE1",23],["\xE1",7],],
  [["\xEC",17],["\xEC",18],["\xEC",19],["\xEC",20],["\xEC",21],["\xEC",22],["\xEC",23],["\xEC",7],["\xED",17],["\xED",18],["\xED",19],["\xED",20],["\xED",21],["\xED",22],["\xED",23],["\xED",7],],
  [["\xC7",25],["\xC7",26],["\xC7",27],["\xC7",6],["\xCF",25],["\xCF",26],["\xCF",27],["\xCF",6],["\xEA",25],["\xEA",26],["\xEA",27],["\xEA",6],["\xEB",25],["\xEB",26],["\xEB",27],["\xEB",6],],
  [["\xC0",29],["\xC0",5],["\xC1",29],["\xC1",5],["\xC8",29],["\xC8",5],["\xC9",29],["\xC9",5],["\xCA",29],["\xCA",5],["\xCD",29],["\xCD",5],["\xD2",29],["\xD2",5],["\xD5",29],["\xD5",5],],
  [["\xDA",29],["\xDA",5],["\xDB",29],["\xDB",5],["\xEE",29],["\xEE",5],["\xF0",29],["\xF0",5],["\xF2",29],["\xF2",5],["\xF3",29],["\xF3",5],["\xFF",29],["\xFF",5],["\xCB",0],["\xCC",0],],
  [["\xD3",0],["\xD4",0],["\xD6",0],["\xDD",0],["\xDE",0],["\xDF",0],["\xF1",0],["\xF4",0],["\xF5",0],["\xF6",0],["\xF7",0],["\xF8",0],["\xFA",0],["\xFB",0],["\xFC",0],["\xFD",0],],
  [["\xFE",0],[nil,206],[nil,207],[nil,208],[nil,209],[nil,210],[nil,211],[nil,212],[nil,213],[nil,214],[nil,215],[nil,216],[nil,217],[nil,218],[nil,219],[nil,220],],
  [["\x01",17],["\x01",18],["\x01",19],["\x01",20],["\x01",21],["\x01",22],["\x01",23],["\x01",7],["\x87",17],["\x87",18],["\x87",19],["\x87",20],["\x87",21],["\x87",22],["\x87",23],["\x87",7],],
  [["\x89",17],["\x89",18],["\x89",19],["\x89",20],["\x89",21],["\x89",22],["\x89",23],["\x89",7],["\x8A",17],["\x8A",18],["\x8A",19],["\x8A",20],["\x8A",21],["\x8A",22],["\x8A",23],["\x8A",7],],
  [["\x8B",17],["\x8B",18],["\x8B",19],["\x8B",20],["\x8B",21],["\x8B",22],["\x8B",23],["\x8B",7],["\x8C",17],["\x8C",18],["\x8C",19],["\x8C",20],["\x8C",21],["\x8C",22],["\x8C",23],["\x8C",7],],
  [["\x8D",17],["\x8D",18],["\x8D",19],["\x8D",20],["\x8D",21],["\x8D",22],["\x8D",23],["\x8D",7],["\x8F",17],["\x8F",18],["\x8F",19],["\x8F",20],["\x8F",21],["\x8F",22],["\x8F",23],["\x8F",7],],
  [["\x93",17],["\x93",18],["\x93",19],["\x93",20],["\x93",21],["\x93",22],["\x93",23],["\x93",7],["\x95",17],["\x95",18],["\x95",19],["\x95",20],["\x95",21],["\x95",22],["\x95",23],["\x95",7],],
  [["\x96",17],["\x96",18],["\x96",19],["\x96",20],["\x96",21],["\x96",22],["\x96",23],["\x96",7],["\x97",17],["\x97",18],["\x97",19],["\x97",20],["\x97",21],["\x97",22],["\x97",23],["\x97",7],],
  [["\x98",17],["\x98",18],["\x98",19],["\x98",20],["\x98",21],["\x98",22],["\x98",23],["\x98",7],["\x9B",17],["\x9B",18],["\x9B",19],["\x9B",20],["\x9B",21],["\x9B",22],["\x9B",23],["\x9B",7],],
  [["\x9D",17],["\x9D",18],["\x9D",19],["\x9D",20],["\x9D",21],["\x9D",22],["\x9D",23],["\x9D",7],["\x9E",17],["\x9E",18],["\x9E",19],["\x9E",20],["\x9E",21],["\x9E",22],["\x9E",23],["\x9E",7],],
  [["\xA5",17],["\xA5",18],["\xA5",19],["\xA5",20],["\xA5",21],["\xA5",22],["\xA5",23],["\xA5",7],["\xA6",17],["\xA6",18],["\xA6",19],["\xA6",20],["\xA6",21],["\xA6",22],["\xA6",23],["\xA6",7],],
  [["\xA8",17],["\xA8",18],["\xA8",19],["\xA8",20],["\xA8",21],["\xA8",22],["\xA8",23],["\xA8",7],["\xAE",17],["\xAE",18],["\xAE",19],["\xAE",20],["\xAE",21],["\xAE",22],["\xAE",23],["\xAE",7],],
  [["\xAF",17],["\xAF",18],["\xAF",19],["\xAF",20],["\xAF",21],["\xAF",22],["\xAF",23],["\xAF",7],["\xB4",17],["\xB4",18],["\xB4",19],["\xB4",20],["\xB4",21],["\xB4",22],["\xB4",23],["\xB4",7],],
  [["\xB6",17],["\xB6",18],["\xB6",19],["\xB6",20],["\xB6",21],["\xB6",22],["\xB6",23],["\xB6",7],["\xB7",17],["\xB7",18],["\xB7",19],["\xB7",20],["\xB7",21],["\xB7",22],["\xB7",23],["\xB7",7],],
  [["\xBC",17],["\xBC",18],["\xBC",19],["\xBC",20],["\xBC",21],["\xBC",22],["\xBC",23],["\xBC",7],["\xBF",17],["\xBF",18],["\xBF",19],["\xBF",20],["\xBF",21],["\xBF",22],["\xBF",23],["\xBF",7],],
  [["\xC5",17],["\xC5",18],["\xC5",19],["\xC5",20],["\xC5",21],["\xC5",22],["\xC5",23],["\xC5",7],["\xE7",17],["\xE7",18],["\xE7",19],["\xE7",20],["\xE7",21],["\xE7",22],["\xE7",23],["\xE7",7],],
  [["\xEF",17],["\xEF",18],["\xEF",19],["\xEF",20],["\xEF",21],["\xEF",22],["\xEF",23],["\xEF",7],["\t",25],["\t",26],["\t",27],["\t",6],["\x8E",25],["\x8E",26],["\x8E",27],["\x8E",6],],
  [["\x90",25],["\x90",26],["\x90",27],["\x90",6],["\x91",25],["\x91",26],["\x91",27],["\x91",6],["\x94",25],["\x94",26],["\x94",27],["\x94",6],["\x9F",25],["\x9F",26],["\x9F",27],["\x9F",6],],
  [["\xAB",25],["\xAB",26],["\xAB",27],["\xAB",6],["\xCE",25],["\xCE",26],["\xCE",27],["\xCE",6],["\xD7",25],["\xD7",26],["\xD7",27],["\xD7",6],["\xE1",25],["\xE1",26],["\xE1",27],["\xE1",6],],
  [["\xEC",25],["\xEC",26],["\xEC",27],["\xEC",6],["\xED",25],["\xED",26],["\xED",27],["\xED",6],["\xC7",29],["\xC7",5],["\xCF",29],["\xCF",5],["\xEA",29],["\xEA",5],["\xEB",29],["\xEB",5],],
  [["\xC0",0],["\xC1",0],["\xC8",0],["\xC9",0],["\xCA",0],["\xCD",0],["\xD2",0],["\xD5",0],["\xDA",0],["\xDB",0],["\xEE",0],["\xF0",0],["\xF2",0],["\xF3",0],["\xFF",0],[nil,8],],
  [[nil,222],[nil,223],[nil,224],[nil,225],[nil,226],[nil,227],[nil,228],[nil,229],[nil,230],[nil,231],[nil,232],[nil,233],[nil,234],[nil,235],[nil,236],[nil,237],],
  [["\x81",17],["\x81",18],["\x81",19],["\x81",20],["\x81",21],["\x81",22],["\x81",23],["\x81",7],["\x84",17],["\x84",18],["\x84",19],["\x84",20],["\x84",21],["\x84",22],["\x84",23],["\x84",7],],
  [["\x85",17],["\x85",18],["\x85",19],["\x85",20],["\x85",21],["\x85",22],["\x85",23],["\x85",7],["\x86",17],["\x86",18],["\x86",19],["\x86",20],["\x86",21],["\x86",22],["\x86",23],["\x86",7],],
  [["\x88",17],["\x88",18],["\x88",19],["\x88",20],["\x88",21],["\x88",22],["\x88",23],["\x88",7],["\x92",17],["\x92",18],["\x92",19],["\x92",20],["\x92",21],["\x92",22],["\x92",23],["\x92",7],],
  [["\x9A",17],["\x9A",18],["\x9A",19],["\x9A",20],["\x9A",21],["\x9A",22],["\x9A",23],["\x9A",7],["\x9C",17],["\x9C",18],["\x9C",19],["\x9C",20],["\x9C",21],["\x9C",22],["\x9C",23],["\x9C",7],],
  [["\xA0",17],["\xA0",18],["\xA0",19],["\xA0",20],["\xA0",21],["\xA0",22],["\xA0",23],["\xA0",7],["\xA3",17],["\xA3",18],["\xA3",19],["\xA3",20],["\xA3",21],["\xA3",22],["\xA3",23],["\xA3",7],],
  [["\xA4",17],["\xA4",18],["\xA4",19],["\xA4",20],["\xA4",21],["\xA4",22],["\xA4",23],["\xA4",7],["\xA9",17],["\xA9",18],["\xA9",19],["\xA9",20],["\xA9",21],["\xA9",22],["\xA9",23],["\xA9",7],],
  [["\xAA",17],["\xAA",18],["\xAA",19],["\xAA",20],["\xAA",21],["\xAA",22],["\xAA",23],["\xAA",7],["\xAD",17],["\xAD",18],["\xAD",19],["\xAD",20],["\xAD",21],["\xAD",22],["\xAD",23],["\xAD",7],],
  [["\xB2",17],["\xB2",18],["\xB2",19],["\xB2",20],["\xB2",21],["\xB2",22],["\xB2",23],["\xB2",7],["\xB5",17],["\xB5",18],["\xB5",19],["\xB5",20],["\xB5",21],["\xB5",22],["\xB5",23],["\xB5",7],],
  [["\xB9",17],["\xB9",18],["\xB9",19],["\xB9",20],["\xB9",21],["\xB9",22],["\xB9",23],["\xB9",7],["\xBA",17],["\xBA",18],["\xBA",19],["\xBA",20],["\xBA",21],["\xBA",22],["\xBA",23],["\xBA",7],],
  [["\xBB",17],["\xBB",18],["\xBB",19],["\xBB",20],["\xBB",21],["\xBB",22],["\xBB",23],["\xBB",7],["\xBD",17],["\xBD",18],["\xBD",19],["\xBD",20],["\xBD",21],["\xBD",22],["\xBD",23],["\xBD",7],],
  [["\xBE",17],["\xBE",18],["\xBE",19],["\xBE",20],["\xBE",21],["\xBE",22],["\xBE",23],["\xBE",7],["\xC4",17],["\xC4",18],["\xC4",19],["\xC4",20],["\xC4",21],["\xC4",22],["\xC4",23],["\xC4",7],],
  [["\xC6",17],["\xC6",18],["\xC6",19],["\xC6",20],["\xC6",21],["\xC6",22],["\xC6",23],["\xC6",7],["\xE4",17],["\xE4",18],["\xE4",19],["\xE4",20],["\xE4",21],["\xE4",22],["\xE4",23],["\xE4",7],],
  [["\xE8",17],["\xE8",18],["\xE8",19],["\xE8",20],["\xE8",21],["\xE8",22],["\xE8",23],["\xE8",7],["\xE9",17],["\xE9",18],["\xE9",19],["\xE9",20],["\xE9",21],["\xE9",22],["\xE9",23],["\xE9",7],],
  [["\x01",25],["\x01",26],["\x01",27],["\x01",6],["\x87",25],["\x87",26],["\x87",27],["\x87",6],["\x89",25],["\x89",26],["\x89",27],["\x89",6],["\x8A",25],["\x8A",26],["\x8A",27],["\x8A",6],],
  [["\x8B",25],["\x8B",26],["\x8B",27],["\x8B",6],["\x8C",25],["\x8C",26],["\x8C",27],["\x8C",6],["\x8D",25],["\x8D",26],["\x8D",27],["\x8D",6],["\x8F",25],["\x8F",26],["\x8F",27],["\x8F",6],],
  [["\x93",25],["\x93",26],["\x93",27],["\x93",6],["\x95",25],["\x95",26],["\x95",27],["\x95",6],["\x96",25],["\x96",26],["\x96",27],["\x96",6],["\x97",25],["\x97",26],["\x97",27],["\x97",6],],
  [["\x98",25],["\x98",26],["\x98",27],["\x98",6],["\x9B",25],["\x9B",26],["\x9B",27],["\x9B",6],["\x9D",25],["\x9D",26],["\x9D",27],["\x9D",6],["\x9E",25],["\x9E",26],["\x9E",27],["\x9E",6],],
  [["\xA5",25],["\xA5",26],["\xA5",27],["\xA5",6],["\xA6",25],["\xA6",26],["\xA6",27],["\xA6",6],["\xA8",25],["\xA8",26],["\xA8",27],["\xA8",6],["\xAE",25],["\xAE",26],["\xAE",27],["\xAE",6],],
  [["\xAF",25],["\xAF",26],["\xAF",27],["\xAF",6],["\xB4",25],["\xB4",26],["\xB4",27],["\xB4",6],["\xB6",25],["\xB6",26],["\xB6",27],["\xB6",6],["\xB7",25],["\xB7",26],["\xB7",27],["\xB7",6],],
  [["\xBC",25],["\xBC",26],["\xBC",27],["\xBC",6],["\xBF",25],["\xBF",26],["\xBF",27],["\xBF",6],["\xC5",25],["\xC5",26],["\xC5",27],["\xC5",6],["\xE7",25],["\xE7",26],["\xE7",27],["\xE7",6],],
  [["\xEF",25],["\xEF",26],["\xEF",27],["\xEF",6],["\t",29],["\t",5],["\x8E",29],["\x8E",5],["\x90",29],["\x90",5],["\x91",29],["\x91",5],["\x94",29],["\x94",5],["\x9F",29],["\x9F",5],],
  [["\xAB",29],["\xAB",5],["\xCE",29],["\xCE",5],["\xD7",29],["\xD7",5],["\xE1",29],["\xE1",5],["\xEC",29],["\xEC",5],["\xED",29],["\xED",5],["\xC7",0],["\xCF",0],["\xEA",0],["\xEB",0],],
  [[nil,238],[nil,239],[nil,240],[nil,241],[nil,242],[nil,243],[nil,244],[nil,245],[nil,246],[nil,247],[nil,248],[nil,249],[nil,250],[nil,251],[nil,252],[nil,253],],
  [["\n",25],["\n",26],["\n",27],["\n",6],["\r",25],["\r",26],["\r",27],["\r",6],["\x16",25],["\x16",26],["\x16",27],["\x16",6],[256,25],[256,26],[256,27],[256,6],],
  [["\x02",17],["\x02",18],["\x02",19],["\x02",20],["\x02",21],["\x02",22],["\x02",23],["\x02",7],["\x03",17],["\x03",18],["\x03",19],["\x03",20],["\x03",21],["\x03",22],["\x03",23],["\x03",7],],
  [["\x04",17],["\x04",18],["\x04",19],["\x04",20],["\x04",21],["\x04",22],["\x04",23],["\x04",7],["\x05",17],["\x05",18],["\x05",19],["\x05",20],["\x05",21],["\x05",22],["\x05",23],["\x05",7],],
  [["\x06",17],["\x06",18],["\x06",19],["\x06",20],["\x06",21],["\x06",22],["\x06",23],["\x06",7],["\a",17],["\a",18],["\a",19],["\a",20],["\a",21],["\a",22],["\a",23],["\a",7],],
  [["\b",17],["\b",18],["\b",19],["\b",20],["\b",21],["\b",22],["\b",23],["\b",7],["\v",17],["\v",18],["\v",19],["\v",20],["\v",21],["\v",22],["\v",23],["\v",7],],
  [["\f",17],["\f",18],["\f",19],["\f",20],["\f",21],["\f",22],["\f",23],["\f",7],["\x0E",17],["\x0E",18],["\x0E",19],["\x0E",20],["\x0E",21],["\x0E",22],["\x0E",23],["\x0E",7],],
  [["\x0F",17],["\x0F",18],["\x0F",19],["\x0F",20],["\x0F",21],["\x0F",22],["\x0F",23],["\x0F",7],["\x10",17],["\x10",18],["\x10",19],["\x10",20],["\x10",21],["\x10",22],["\x10",23],["\x10",7],],
  [["\x11",17],["\x11",18],["\x11",19],["\x11",20],["\x11",21],["\x11",22],["\x11",23],["\x11",7],["\x12",17],["\x12",18],["\x12",19],["\x12",20],["\x12",21],["\x12",22],["\x12",23],["\x12",7],],
  [["\x13",17],["\x13",18],["\x13",19],["\x13",20],["\x13",21],["\x13",22],["\x13",23],["\x13",7],["\x14",17],["\x14",18],["\x14",19],["\x14",20],["\x14",21],["\x14",22],["\x14",23],["\x14",7],],
  [["\x15",17],["\x15",18],["\x15",19],["\x15",20],["\x15",21],["\x15",22],["\x15",23],["\x15",7],["\x17",17],["\x17",18],["\x17",19],["\x17",20],["\x17",21],["\x17",22],["\x17",23],["\x17",7],],
  [["\x18",17],["\x18",18],["\x18",19],["\x18",20],["\x18",21],["\x18",22],["\x18",23],["\x18",7],["\x19",17],["\x19",18],["\x19",19],["\x19",20],["\x19",21],["\x19",22],["\x19",23],["\x19",7],],
  [["\x1A",17],["\x1A",18],["\x1A",19],["\x1A",20],["\x1A",21],["\x1A",22],["\x1A",23],["\x1A",7],["\e",17],["\e",18],["\e",19],["\e",20],["\e",21],["\e",22],["\e",23],["\e",7],],
  [["\x1C",17],["\x1C",18],["\x1C",19],["\x1C",20],["\x1C",21],["\x1C",22],["\x1C",23],["\x1C",7],["\x1D",17],["\x1D",18],["\x1D",19],["\x1D",20],["\x1D",21],["\x1D",22],["\x1D",23],["\x1D",7],],
  [["\x1E",17],["\x1E",18],["\x1E",19],["\x1E",20],["\x1E",21],["\x1E",22],["\x1E",23],["\x1E",7],["\x1F",17],["\x1F",18],["\x1F",19],["\x1F",20],["\x1F",21],["\x1F",22],["\x1F",23],["\x1F",7],],
  [["\x7F",17],["\x7F",18],["\x7F",19],["\x7F",20],["\x7F",21],["\x7F",22],["\x7F",23],["\x7F",7],["\xDC",17],["\xDC",18],["\xDC",19],["\xDC",20],["\xDC",21],["\xDC",22],["\xDC",23],["\xDC",7],],
  [["\xF9",17],["\xF9",18],["\xF9",19],["\xF9",20],["\xF9",21],["\xF9",22],["\xF9",23],["\xF9",7],["\n",29],["\n",5],["\r",29],["\r",5],["\x16",29],["\x16",5],[256,29],[256,5],],
  [["6",25],["6",26],["6",27],["6",6],["7",25],["7",26],["7",27],["7",6],["8",25],["8",26],["8",27],["8",6],["9",25],["9",26],["9",27],["9",6],],
  [["\xD3",17],["\xD3",18],["\xD3",19],["\xD3",20],["\xD3",21],["\xD3",22],["\xD3",23],["\xD3",7],["\xD4",17],["\xD4",18],["\xD4",19],["\xD4",20],["\xD4",21],["\xD4",22],["\xD4",23],["\xD4",7],],
  [["\xD6",17],["\xD6",18],["\xD6",19],["\xD6",20],["\xD6",21],["\xD6",22],["\xD6",23],["\xD6",7],["\xDD",17],["\xDD",18],["\xDD",19],["\xDD",20],["\xDD",21],["\xDD",22],["\xDD",23],["\xDD",7],],
  [["\xDE",17],["\xDE",18],["\xDE",19],["\xDE",20],["\xDE",21],["\xDE",22],["\xDE",23],["\xDE",7],["\xDF",17],["\xDF",18],["\xDF",19],["\xDF",20],["\xDF",21],["\xDF",22],["\xDF",23],["\xDF",7],],
  [["\xF1",17],["\xF1",18],["\xF1",19],["\xF1",20],["\xF1",21],["\xF1",22],["\xF1",23],["\xF1",7],["\xF4",17],["\xF4",18],["\xF4",19],["\xF4",20],["\xF4",21],["\xF4",22],["\xF4",23],["\xF4",7],],
  [["\xF5",17],["\xF5",18],["\xF5",19],["\xF5",20],["\xF5",21],["\xF5",22],["\xF5",23],["\xF5",7],["\xF6",17],["\xF6",18],["\xF6",19],["\xF6",20],["\xF6",21],["\xF6",22],["\xF6",23],["\xF6",7],],
  [["\xF7",17],["\xF7",18],["\xF7",19],["\xF7",20],["\xF7",21],["\xF7",22],["\xF7",23],["\xF7",7],["\xF8",17],["\xF8",18],["\xF8",19],["\xF8",20],["\xF8",21],["\xF8",22],["\xF8",23],["\xF8",7],],
  [["\xFA",17],["\xFA",18],["\xFA",19],["\xFA",20],["\xFA",21],["\xFA",22],["\xFA",23],["\xFA",7],["\xFB",17],["\xFB",18],["\xFB",19],["\xFB",20],["\xFB",21],["\xFB",22],["\xFB",23],["\xFB",7],],
  [["\xFC",17],["\xFC",18],["\xFC",19],["\xFC",20],["\xFC",21],["\xFC",22],["\xFC",23],["\xFC",7],["\xFD",17],["\xFD",18],["\xFD",19],["\xFD",20],["\xFD",21],["\xFD",22],["\xFD",23],["\xFD",7],],
  [["\xFE",17],["\xFE",18],["\xFE",19],["\xFE",20],["\xFE",21],["\xFE",22],["\xFE",23],["\xFE",7],["\x02",25],["\x02",26],["\x02",27],["\x02",6],["\x03",25],["\x03",26],["\x03",27],["\x03",6],],
  [["\x04",25],["\x04",26],["\x04",27],["\x04",6],["\x05",25],["\x05",26],["\x05",27],["\x05",6],["\x06",25],["\x06",26],["\x06",27],["\x06",6],["\a",25],["\a",26],["\a",27],["\a",6],],
  [["\b",25],["\b",26],["\b",27],["\b",6],["\v",25],["\v",26],["\v",27],["\v",6],["\f",25],["\f",26],["\f",27],["\f",6],["\x0E",25],["\x0E",26],["\x0E",27],["\x0E",6],],
  [["\x0F",25],["\x0F",26],["\x0F",27],["\x0F",6],["\x10",25],["\x10",26],["\x10",27],["\x10",6],["\x11",25],["\x11",26],["\x11",27],["\x11",6],["\x12",25],["\x12",26],["\x12",27],["\x12",6],],
  [["\x13",25],["\x13",26],["\x13",27],["\x13",6],["\x14",25],["\x14",26],["\x14",27],["\x14",6],["\x15",25],["\x15",26],["\x15",27],["\x15",6],["\x17",25],["\x17",26],["\x17",27],["\x17",6],],
  [["\x18",25],["\x18",26],["\x18",27],["\x18",6],["\x19",25],["\x19",26],["\x19",27],["\x19",6],["\x1A",25],["\x1A",26],["\x1A",27],["\x1A",6],["\e",25],["\e",26],["\e",27],["\e",6],],
  [["\x1C",25],["\x1C",26],["\x1C",27],["\x1C",6],["\x1D",25],["\x1D",26],["\x1D",27],["\x1D",6],["\x1E",25],["\x1E",26],["\x1E",27],["\x1E",6],["\x1F",25],["\x1F",26],["\x1F",27],["\x1F",6],],
  [["\x7F",25],["\x7F",26],["\x7F",27],["\x7F",6],["\xDC",25],["\xDC",26],["\xDC",27],["\xDC",6],["\xF9",25],["\xF9",26],["\xF9",27],["\xF9",6],["\n",0],["\r",0],["\x16",0],[256,0],],
  [["\xC0",17],["\xC0",18],["\xC0",19],["\xC0",20],["\xC0",21],["\xC0",22],["\xC0",23],["\xC0",7],["\xC1",17],["\xC1",18],["\xC1",19],["\xC1",20],["\xC1",21],["\xC1",22],["\xC1",23],["\xC1",7],],
  [["\xC8",17],["\xC8",18],["\xC8",19],["\xC8",20],["\xC8",21],["\xC8",22],["\xC8",23],["\xC8",7],["\xC9",17],["\xC9",18],["\xC9",19],["\xC9",20],["\xC9",21],["\xC9",22],["\xC9",23],["\xC9",7],],
  [["\xCA",17],["\xCA",18],["\xCA",19],["\xCA",20],["\xCA",21],["\xCA",22],["\xCA",23],["\xCA",7],["\xCD",17],["\xCD",18],["\xCD",19],["\xCD",20],["\xCD",21],["\xCD",22],["\xCD",23],["\xCD",7],],
  [["\xD2",17],["\xD2",18],["\xD2",19],["\xD2",20],["\xD2",21],["\xD2",22],["\xD2",23],["\xD2",7],["\xD5",17],["\xD5",18],["\xD5",19],["\xD5",20],["\xD5",21],["\xD5",22],["\xD5",23],["\xD5",7],],
  [["\xDA",17],["\xDA",18],["\xDA",19],["\xDA",20],["\xDA",21],["\xDA",22],["\xDA",23],["\xDA",7],["\xDB",17],["\xDB",18],["\xDB",19],["\xDB",20],["\xDB",21],["\xDB",22],["\xDB",23],["\xDB",7],],
  [["\xEE",17],["\xEE",18],["\xEE",19],["\xEE",20],["\xEE",21],["\xEE",22],["\xEE",23],["\xEE",7],["\xF0",17],["\xF0",18],["\xF0",19],["\xF0",20],["\xF0",21],["\xF0",22],["\xF0",23],["\xF0",7],],
  [["\xF2",17],["\xF2",18],["\xF2",19],["\xF2",20],["\xF2",21],["\xF2",22],["\xF2",23],["\xF2",7],["\xF3",17],["\xF3",18],["\xF3",19],["\xF3",20],["\xF3",21],["\xF3",22],["\xF3",23],["\xF3",7],],
  [["\xFF",17],["\xFF",18],["\xFF",19],["\xFF",20],["\xFF",21],["\xFF",22],["\xFF",23],["\xFF",7],["\xCB",25],["\xCB",26],["\xCB",27],["\xCB",6],["\xCC",25],["\xCC",26],["\xCC",27],["\xCC",6],],
  [["\xD3",25],["\xD3",26],["\xD3",27],["\xD3",6],["\xD4",25],["\xD4",26],["\xD4",27],["\xD4",6],["\xD6",25],["\xD6",26],["\xD6",27],["\xD6",6],["\xDD",25],["\xDD",26],["\xDD",27],["\xDD",6],],
  [["\xDE",25],["\xDE",26],["\xDE",27],["\xDE",6],["\xDF",25],["\xDF",26],["\xDF",27],["\xDF",6],["\xF1",25],["\xF1",26],["\xF1",27],["\xF1",6],["\xF4",25],["\xF4",26],["\xF4",27],["\xF4",6],],
  [["\xF5",25],["\xF5",26],["\xF5",27],["\xF5",6],["\xF6",25],["\xF6",26],["\xF6",27],["\xF6",6],["\xF7",25],["\xF7",26],["\xF7",27],["\xF7",6],["\xF8",25],["\xF8",26],["\xF8",27],["\xF8",6],],
  [["\xFA",25],["\xFA",26],["\xFA",27],["\xFA",6],["\xFB",25],["\xFB",26],["\xFB",27],["\xFB",6],["\xFC",25],["\xFC",26],["\xFC",27],["\xFC",6],["\xFD",25],["\xFD",26],["\xFD",27],["\xFD",6],],
  [["\xFE",25],["\xFE",26],["\xFE",27],["\xFE",6],["\x02",29],["\x02",5],["\x03",29],["\x03",5],["\x04",29],["\x04",5],["\x05",29],["\x05",5],["\x06",29],["\x06",5],["\a",29],["\a",5],],
  [["\b",29],["\b",5],["\v",29],["\v",5],["\f",29],["\f",5],["\x0E",29],["\x0E",5],["\x0F",29],["\x0F",5],["\x10",29],["\x10",5],["\x11",29],["\x11",5],["\x12",29],["\x12",5],],
  [["\x13",29],["\x13",5],["\x14",29],["\x14",5],["\x15",29],["\x15",5],["\x17",29],["\x17",5],["\x18",29],["\x18",5],["\x19",29],["\x19",5],["\x1A",29],["\x1A",5],["\e",29],["\e",5],],
  [["\x1C",29],["\x1C",5],["\x1D",29],["\x1D",5],["\x1E",29],["\x1E",5],["\x1F",29],["\x1F",5],["\x7F",29],["\x7F",5],["\xDC",29],["\xDC",5],["\xF9",29],["\xF9",5],[nil,254],[nil,255],],
  [["\n",17],["\n",18],["\n",19],["\n",20],["\n",21],["\n",22],["\n",23],["\n",7],["\r",17],["\r",18],["\r",19],["\r",20],["\r",21],["\r",22],["\r",23],["\r",7],],
  [["\x16",17],["\x16",18],["\x16",19],["\x16",20],["\x16",21],["\x16",22],["\x16",23],["\x16",7],[256,17],[256,18],[256,19],[256,20],[256,21],[256,22],[256,23],[256,7],],
]

Instance Method Summary collapse

Constructor Details

#initializeHuffman

Returns a new instance of Huffman.



19
20
21
# File 'lib/http/2/huffman.rb', line 19

def initialize
  @@encode_table ||= CODES.map{|c,l| [c].pack("N").unpack("B*").first[-l..-1]}
end

Instance Method Details

#decode(buf) ⇒ String

Decodes provided Huffman coded string.

Parameters:

Returns:

  • (String)

    binary string

Raises:



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/http/2/huffman.rb', line 39

def decode(buf)
  emit = ''
  state = 0 # start state

  mask = (1 << BITS_AT_ONCE) - 1
  buf.each_byte do |chr|
    (8 / BITS_AT_ONCE - 1).downto(0) do |shift|
      branch = (chr >> (shift * BITS_AT_ONCE)) & mask
      # MACHINE[state] = [final, [transitions]]
      #  [final] unfinished bits so far are prefix of the EOS code.
      # Each transition is [emit, next]
      #  [emit] character to be emitted on this transition, empty string, or EOS.
      #  [next] next state number.
      trans = MACHINE[state][branch]
      trans.first == EOS and
        raise CompressionError.new('Huffman decode error (EOS found)')
      trans.first && emit << trans.first
      state = trans.last
    end
  end
  # Check whether partial input is correctly filled
  unless state <= MAX_FINAL_STATE
    raise CompressionError.new('Huffman decode error (EOS invalid)')
  end
  emit.force_encoding(BINARY)
end

#encode(str) ⇒ String

Encodes provided value via huffman encoding. Length is not encoded in this method.

Parameters:

  • str (String)

Returns:

  • (String)

    binary string



28
29
30
31
32
# File 'lib/http/2/huffman.rb', line 28

def encode(str)
  bitstring = str.each_byte.map{|chr| @@encode_table[chr]}.join
  bitstring << "1" * ((8 - bitstring.size) % 8)
  [bitstring].pack("B*")
end