FFmpeg coverage


Directory: ../../../ffmpeg/
File: src/libavcodec/dirac_vlc.c
Date: 2024-11-20 23:03:26
Exec Total Coverage
Lines: 14 20 70.0%
Functions: 2 2 100.0%
Branches: 16 28 57.1%

Line Branch Exec Source
1 /*
2 * This file is part of FFmpeg.
3 *
4 * FFmpeg is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * FFmpeg is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with FFmpeg; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18
19 #include "libavutil/mem_internal.h"
20
21 #include "dirac_vlc.h"
22
23 enum {
24 /* Next byte contains an exactly aligned start to a new symbol (even bit) */
25 STATE_START = 0,
26 /* Next byte should end the current value on an odd bit */
27 STATE_FOLLOW = 256,
28 /* Byte is completely data and doesn't end nor start a value */
29 STATE_DATA = 512,
30 /* Byte has the current value's sign bit and starts a new value */
31 STATE_SIGN = 768,
32 };
33
34 /* Exactly 128 bits */
35 typedef struct LUTState {
36 int16_t val0; /* Bits to which to add after applying preshift */
37 int16_t val1;
38 int16_t val2;
39 int16_t val3;
40 int16_t val4;
41 uint8_t val0_bits; /* The size of val0 in bits */
42 int8_t sign; /* Sign of the current value (0 == zero the value) */
43 int8_t num; /* Number of values in this byte */
44 uint8_t val; /* Init value in case current value was terminated */
45 uint16_t state; /* Expected state for the next byte */
46 } LUTState;
47
48 static const DECLARE_ALIGNED(32, LUTState, dirac_golomb_lut)[1024] = {
49 { +16, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
50 { +17, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
51 { +8, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
52 { +8, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
53 { +18, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
54 { +19, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
55 { +9, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
56 { +9, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
57 { +4, 0, 0, 0, 0, 3, +1, 1, 2, STATE_FOLLOW },
58 { +4, 0, 0, 0, 0, 3, +1, 1, 3, STATE_FOLLOW },
59 { +4, 0, 0, 0, 0, 3, +1, 2, 1, STATE_DATA },
60 { +4, 0, 0, 0, 0, 3, +1, 3, 0, STATE_START },
61 { +4, 0, 0, 0, 0, 3, -1, 1, 2, STATE_FOLLOW },
62 { +4, 0, 0, 0, 0, 3, -1, 1, 3, STATE_FOLLOW },
63 { +4, 0, 0, 0, 0, 3, -1, 2, 1, STATE_DATA },
64 { +4, 0, 0, 0, 0, 3, -1, 3, 0, STATE_START },
65 { +20, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
66 { +21, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
67 { +10, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
68 { +10, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
69 { +22, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
70 { +23, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
71 { +11, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
72 { +11, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
73 { +5, 0, 0, 0, 0, 3, +1, 1, 2, STATE_FOLLOW },
74 { +5, 0, 0, 0, 0, 3, +1, 1, 3, STATE_FOLLOW },
75 { +5, 0, 0, 0, 0, 3, +1, 2, 1, STATE_DATA },
76 { +5, 0, 0, 0, 0, 3, +1, 3, 0, STATE_START },
77 { +5, 0, 0, 0, 0, 3, -1, 1, 2, STATE_FOLLOW },
78 { +5, 0, 0, 0, 0, 3, -1, 1, 3, STATE_FOLLOW },
79 { +5, 0, 0, 0, 0, 3, -1, 2, 1, STATE_DATA },
80 { +5, 0, 0, 0, 0, 3, -1, 3, 0, STATE_START },
81 { +2, 0, 0, 0, 0, 2, +1, 1, 4, STATE_FOLLOW },
82 { +2, 0, 0, 0, 0, 2, +1, 1, 5, STATE_FOLLOW },
83 { +2, +1, 0, 0, 0, 2, +1, 2, 0, STATE_START },
84 { +2, -1, 0, 0, 0, 2, +1, 2, 0, STATE_START },
85 { +2, 0, 0, 0, 0, 2, +1, 1, 6, STATE_FOLLOW },
86 { +2, 0, 0, 0, 0, 2, +1, 1, 7, STATE_FOLLOW },
87 { +2, +2, 0, 0, 0, 2, +1, 2, 0, STATE_START },
88 { +2, -2, 0, 0, 0, 2, +1, 2, 0, STATE_START },
89 { +2, 0, 0, 0, 0, 2, +1, 2, 2, STATE_DATA },
90 { +2, 0, 0, 0, 0, 2, +1, 2, 2, STATE_SIGN },
91 { +2, 0, 0, 0, 0, 2, +1, 2, 3, STATE_DATA },
92 { +2, 0, 0, 0, 0, 2, +1, 2, 3, STATE_SIGN },
93 { +2, 0, 0, 0, 0, 2, +1, 3, 2, STATE_FOLLOW },
94 { +2, 0, 0, 0, 0, 2, +1, 3, 3, STATE_FOLLOW },
95 { +2, 0, 0, 0, 0, 2, +1, 4, 1, STATE_DATA },
96 { +2, 0, 0, 0, 0, 2, +1, 5, 0, STATE_START },
97 { +2, 0, 0, 0, 0, 2, -1, 1, 4, STATE_FOLLOW },
98 { +2, 0, 0, 0, 0, 2, -1, 1, 5, STATE_FOLLOW },
99 { +2, +1, 0, 0, 0, 2, -1, 2, 0, STATE_START },
100 { +2, -1, 0, 0, 0, 2, -1, 2, 0, STATE_START },
101 { +2, 0, 0, 0, 0, 2, -1, 1, 6, STATE_FOLLOW },
102 { +2, 0, 0, 0, 0, 2, -1, 1, 7, STATE_FOLLOW },
103 { +2, +2, 0, 0, 0, 2, -1, 2, 0, STATE_START },
104 { +2, -2, 0, 0, 0, 2, -1, 2, 0, STATE_START },
105 { +2, 0, 0, 0, 0, 2, -1, 2, 2, STATE_DATA },
106 { +2, 0, 0, 0, 0, 2, -1, 2, 2, STATE_SIGN },
107 { +2, 0, 0, 0, 0, 2, -1, 2, 3, STATE_DATA },
108 { +2, 0, 0, 0, 0, 2, -1, 2, 3, STATE_SIGN },
109 { +2, 0, 0, 0, 0, 2, -1, 3, 2, STATE_FOLLOW },
110 { +2, 0, 0, 0, 0, 2, -1, 3, 3, STATE_FOLLOW },
111 { +2, 0, 0, 0, 0, 2, -1, 4, 1, STATE_DATA },
112 { +2, 0, 0, 0, 0, 2, -1, 5, 0, STATE_START },
113 { +24, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
114 { +25, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
115 { +12, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
116 { +12, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
117 { +26, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
118 { +27, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
119 { +13, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
120 { +13, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
121 { +6, 0, 0, 0, 0, 3, +1, 1, 2, STATE_FOLLOW },
122 { +6, 0, 0, 0, 0, 3, +1, 1, 3, STATE_FOLLOW },
123 { +6, 0, 0, 0, 0, 3, +1, 2, 1, STATE_DATA },
124 { +6, 0, 0, 0, 0, 3, +1, 3, 0, STATE_START },
125 { +6, 0, 0, 0, 0, 3, -1, 1, 2, STATE_FOLLOW },
126 { +6, 0, 0, 0, 0, 3, -1, 1, 3, STATE_FOLLOW },
127 { +6, 0, 0, 0, 0, 3, -1, 2, 1, STATE_DATA },
128 { +6, 0, 0, 0, 0, 3, -1, 3, 0, STATE_START },
129 { +28, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
130 { +29, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
131 { +14, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
132 { +14, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
133 { +30, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
134 { +31, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
135 { +15, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
136 { +15, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
137 { +7, 0, 0, 0, 0, 3, +1, 1, 2, STATE_FOLLOW },
138 { +7, 0, 0, 0, 0, 3, +1, 1, 3, STATE_FOLLOW },
139 { +7, 0, 0, 0, 0, 3, +1, 2, 1, STATE_DATA },
140 { +7, 0, 0, 0, 0, 3, +1, 3, 0, STATE_START },
141 { +7, 0, 0, 0, 0, 3, -1, 1, 2, STATE_FOLLOW },
142 { +7, 0, 0, 0, 0, 3, -1, 1, 3, STATE_FOLLOW },
143 { +7, 0, 0, 0, 0, 3, -1, 2, 1, STATE_DATA },
144 { +7, 0, 0, 0, 0, 3, -1, 3, 0, STATE_START },
145 { +3, 0, 0, 0, 0, 2, +1, 1, 4, STATE_FOLLOW },
146 { +3, 0, 0, 0, 0, 2, +1, 1, 5, STATE_FOLLOW },
147 { +3, +1, 0, 0, 0, 2, +1, 2, 0, STATE_START },
148 { +3, -1, 0, 0, 0, 2, +1, 2, 0, STATE_START },
149 { +3, 0, 0, 0, 0, 2, +1, 1, 6, STATE_FOLLOW },
150 { +3, 0, 0, 0, 0, 2, +1, 1, 7, STATE_FOLLOW },
151 { +3, +2, 0, 0, 0, 2, +1, 2, 0, STATE_START },
152 { +3, -2, 0, 0, 0, 2, +1, 2, 0, STATE_START },
153 { +3, 0, 0, 0, 0, 2, +1, 2, 2, STATE_DATA },
154 { +3, 0, 0, 0, 0, 2, +1, 2, 2, STATE_SIGN },
155 { +3, 0, 0, 0, 0, 2, +1, 2, 3, STATE_DATA },
156 { +3, 0, 0, 0, 0, 2, +1, 2, 3, STATE_SIGN },
157 { +3, 0, 0, 0, 0, 2, +1, 3, 2, STATE_FOLLOW },
158 { +3, 0, 0, 0, 0, 2, +1, 3, 3, STATE_FOLLOW },
159 { +3, 0, 0, 0, 0, 2, +1, 4, 1, STATE_DATA },
160 { +3, 0, 0, 0, 0, 2, +1, 5, 0, STATE_START },
161 { +3, 0, 0, 0, 0, 2, -1, 1, 4, STATE_FOLLOW },
162 { +3, 0, 0, 0, 0, 2, -1, 1, 5, STATE_FOLLOW },
163 { +3, +1, 0, 0, 0, 2, -1, 2, 0, STATE_START },
164 { +3, -1, 0, 0, 0, 2, -1, 2, 0, STATE_START },
165 { +3, 0, 0, 0, 0, 2, -1, 1, 6, STATE_FOLLOW },
166 { +3, 0, 0, 0, 0, 2, -1, 1, 7, STATE_FOLLOW },
167 { +3, +2, 0, 0, 0, 2, -1, 2, 0, STATE_START },
168 { +3, -2, 0, 0, 0, 2, -1, 2, 0, STATE_START },
169 { +3, 0, 0, 0, 0, 2, -1, 2, 2, STATE_DATA },
170 { +3, 0, 0, 0, 0, 2, -1, 2, 2, STATE_SIGN },
171 { +3, 0, 0, 0, 0, 2, -1, 2, 3, STATE_DATA },
172 { +3, 0, 0, 0, 0, 2, -1, 2, 3, STATE_SIGN },
173 { +3, 0, 0, 0, 0, 2, -1, 3, 2, STATE_FOLLOW },
174 { +3, 0, 0, 0, 0, 2, -1, 3, 3, STATE_FOLLOW },
175 { +3, 0, 0, 0, 0, 2, -1, 4, 1, STATE_DATA },
176 { +3, 0, 0, 0, 0, 2, -1, 5, 0, STATE_START },
177 { 0, 0, 0, 0, 0, 0, 0, 1, 8, STATE_DATA },
178 { 0, 0, 0, 0, 0, 0, 0, 1, 8, STATE_SIGN },
179 { 0, 0, 0, 0, 0, 0, 0, 1, 9, STATE_DATA },
180 { 0, 0, 0, 0, 0, 0, 0, 1, 9, STATE_SIGN },
181 { 0, +3, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
182 { 0, +3, 0, 0, 0, 0, 0, 3, 0, STATE_START },
183 { 0, -3, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
184 { 0, -3, 0, 0, 0, 0, 0, 3, 0, STATE_START },
185 { 0, 0, 0, 0, 0, 0, 0, 1, 10, STATE_DATA },
186 { 0, 0, 0, 0, 0, 0, 0, 1, 10, STATE_SIGN },
187 { 0, 0, 0, 0, 0, 0, 0, 1, 11, STATE_DATA },
188 { 0, 0, 0, 0, 0, 0, 0, 1, 11, STATE_SIGN },
189 { 0, +4, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
190 { 0, +4, 0, 0, 0, 0, 0, 3, 0, STATE_START },
191 { 0, -4, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
192 { 0, -4, 0, 0, 0, 0, 0, 3, 0, STATE_START },
193 { 0, +1, 0, 0, 0, 0, 0, 2, 2, STATE_DATA },
194 { 0, +1, 0, 0, 0, 0, 0, 2, 2, STATE_SIGN },
195 { 0, +1, 0, 0, 0, 0, 0, 2, 3, STATE_DATA },
196 { 0, +1, 0, 0, 0, 0, 0, 2, 3, STATE_SIGN },
197 { 0, +1, 0, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
198 { 0, +1, 0, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
199 { 0, +1, 0, 0, 0, 0, 0, 4, 1, STATE_DATA },
200 { 0, +1, 0, 0, 0, 0, 0, 5, 0, STATE_START },
201 { 0, -1, 0, 0, 0, 0, 0, 2, 2, STATE_DATA },
202 { 0, -1, 0, 0, 0, 0, 0, 2, 2, STATE_SIGN },
203 { 0, -1, 0, 0, 0, 0, 0, 2, 3, STATE_DATA },
204 { 0, -1, 0, 0, 0, 0, 0, 2, 3, STATE_SIGN },
205 { 0, -1, 0, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
206 { 0, -1, 0, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
207 { 0, -1, 0, 0, 0, 0, 0, 4, 1, STATE_DATA },
208 { 0, -1, 0, 0, 0, 0, 0, 5, 0, STATE_START },
209 { 0, 0, 0, 0, 0, 0, 0, 1, 12, STATE_DATA },
210 { 0, 0, 0, 0, 0, 0, 0, 1, 12, STATE_SIGN },
211 { 0, 0, 0, 0, 0, 0, 0, 1, 13, STATE_DATA },
212 { 0, 0, 0, 0, 0, 0, 0, 1, 13, STATE_SIGN },
213 { 0, +5, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
214 { 0, +5, 0, 0, 0, 0, 0, 3, 0, STATE_START },
215 { 0, -5, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
216 { 0, -5, 0, 0, 0, 0, 0, 3, 0, STATE_START },
217 { 0, 0, 0, 0, 0, 0, 0, 1, 14, STATE_DATA },
218 { 0, 0, 0, 0, 0, 0, 0, 1, 14, STATE_SIGN },
219 { 0, 0, 0, 0, 0, 0, 0, 1, 15, STATE_DATA },
220 { 0, 0, 0, 0, 0, 0, 0, 1, 15, STATE_SIGN },
221 { 0, +6, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
222 { 0, +6, 0, 0, 0, 0, 0, 3, 0, STATE_START },
223 { 0, -6, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
224 { 0, -6, 0, 0, 0, 0, 0, 3, 0, STATE_START },
225 { 0, +2, 0, 0, 0, 0, 0, 2, 2, STATE_DATA },
226 { 0, +2, 0, 0, 0, 0, 0, 2, 2, STATE_SIGN },
227 { 0, +2, 0, 0, 0, 0, 0, 2, 3, STATE_DATA },
228 { 0, +2, 0, 0, 0, 0, 0, 2, 3, STATE_SIGN },
229 { 0, +2, 0, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
230 { 0, +2, 0, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
231 { 0, +2, 0, 0, 0, 0, 0, 4, 1, STATE_DATA },
232 { 0, +2, 0, 0, 0, 0, 0, 5, 0, STATE_START },
233 { 0, -2, 0, 0, 0, 0, 0, 2, 2, STATE_DATA },
234 { 0, -2, 0, 0, 0, 0, 0, 2, 2, STATE_SIGN },
235 { 0, -2, 0, 0, 0, 0, 0, 2, 3, STATE_DATA },
236 { 0, -2, 0, 0, 0, 0, 0, 2, 3, STATE_SIGN },
237 { 0, -2, 0, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
238 { 0, -2, 0, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
239 { 0, -2, 0, 0, 0, 0, 0, 4, 1, STATE_DATA },
240 { 0, -2, 0, 0, 0, 0, 0, 5, 0, STATE_START },
241 { 0, 0, 0, 0, 0, 0, 0, 2, 8, STATE_FOLLOW },
242 { 0, 0, 0, 0, 0, 0, 0, 2, 9, STATE_FOLLOW },
243 { 0, 0, +3, 0, 0, 0, 0, 3, 0, STATE_START },
244 { 0, 0, -3, 0, 0, 0, 0, 3, 0, STATE_START },
245 { 0, 0, 0, 0, 0, 0, 0, 2, 10, STATE_FOLLOW },
246 { 0, 0, 0, 0, 0, 0, 0, 2, 11, STATE_FOLLOW },
247 { 0, 0, +4, 0, 0, 0, 0, 3, 0, STATE_START },
248 { 0, 0, -4, 0, 0, 0, 0, 3, 0, STATE_START },
249 { 0, 0, +1, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
250 { 0, 0, +1, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
251 { 0, 0, +1, 0, 0, 0, 0, 4, 1, STATE_DATA },
252 { 0, 0, +1, 0, 0, 0, 0, 5, 0, STATE_START },
253 { 0, 0, -1, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
254 { 0, 0, -1, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
255 { 0, 0, -1, 0, 0, 0, 0, 4, 1, STATE_DATA },
256 { 0, 0, -1, 0, 0, 0, 0, 5, 0, STATE_START },
257 { 0, 0, 0, 0, 0, 0, 0, 2, 12, STATE_FOLLOW },
258 { 0, 0, 0, 0, 0, 0, 0, 2, 13, STATE_FOLLOW },
259 { 0, 0, +5, 0, 0, 0, 0, 3, 0, STATE_START },
260 { 0, 0, -5, 0, 0, 0, 0, 3, 0, STATE_START },
261 { 0, 0, 0, 0, 0, 0, 0, 2, 14, STATE_FOLLOW },
262 { 0, 0, 0, 0, 0, 0, 0, 2, 15, STATE_FOLLOW },
263 { 0, 0, +6, 0, 0, 0, 0, 3, 0, STATE_START },
264 { 0, 0, -6, 0, 0, 0, 0, 3, 0, STATE_START },
265 { 0, 0, +2, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
266 { 0, 0, +2, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
267 { 0, 0, +2, 0, 0, 0, 0, 4, 1, STATE_DATA },
268 { 0, 0, +2, 0, 0, 0, 0, 5, 0, STATE_START },
269 { 0, 0, -2, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
270 { 0, 0, -2, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
271 { 0, 0, -2, 0, 0, 0, 0, 4, 1, STATE_DATA },
272 { 0, 0, -2, 0, 0, 0, 0, 5, 0, STATE_START },
273 { 0, 0, 0, 0, 0, 0, 0, 3, 4, STATE_DATA },
274 { 0, 0, 0, 0, 0, 0, 0, 3, 4, STATE_SIGN },
275 { 0, 0, 0, 0, 0, 0, 0, 3, 5, STATE_DATA },
276 { 0, 0, 0, 0, 0, 0, 0, 3, 5, STATE_SIGN },
277 { 0, 0, 0, +1, 0, 0, 0, 4, 1, STATE_DATA },
278 { 0, 0, 0, +1, 0, 0, 0, 5, 0, STATE_START },
279 { 0, 0, 0, -1, 0, 0, 0, 4, 1, STATE_DATA },
280 { 0, 0, 0, -1, 0, 0, 0, 5, 0, STATE_START },
281 { 0, 0, 0, 0, 0, 0, 0, 3, 6, STATE_DATA },
282 { 0, 0, 0, 0, 0, 0, 0, 3, 6, STATE_SIGN },
283 { 0, 0, 0, 0, 0, 0, 0, 3, 7, STATE_DATA },
284 { 0, 0, 0, 0, 0, 0, 0, 3, 7, STATE_SIGN },
285 { 0, 0, 0, +2, 0, 0, 0, 4, 1, STATE_DATA },
286 { 0, 0, 0, +2, 0, 0, 0, 5, 0, STATE_START },
287 { 0, 0, 0, -2, 0, 0, 0, 4, 1, STATE_DATA },
288 { 0, 0, 0, -2, 0, 0, 0, 5, 0, STATE_START },
289 { 0, 0, 0, 0, 0, 0, 0, 4, 4, STATE_FOLLOW },
290 { 0, 0, 0, 0, 0, 0, 0, 4, 5, STATE_FOLLOW },
291 { 0, 0, 0, 0, +1, 0, 0, 5, 0, STATE_START },
292 { 0, 0, 0, 0, -1, 0, 0, 5, 0, STATE_START },
293 { 0, 0, 0, 0, 0, 0, 0, 4, 6, STATE_FOLLOW },
294 { 0, 0, 0, 0, 0, 0, 0, 4, 7, STATE_FOLLOW },
295 { 0, 0, 0, 0, +2, 0, 0, 5, 0, STATE_START },
296 { 0, 0, 0, 0, -2, 0, 0, 5, 0, STATE_START },
297 { 0, 0, 0, 0, 0, 0, 0, 5, 2, STATE_DATA },
298 { 0, 0, 0, 0, 0, 0, 0, 5, 2, STATE_SIGN },
299 { 0, 0, 0, 0, 0, 0, 0, 5, 3, STATE_DATA },
300 { 0, 0, 0, 0, 0, 0, 0, 5, 3, STATE_SIGN },
301 { 0, 0, 0, 0, 0, 0, 0, 6, 2, STATE_FOLLOW },
302 { 0, 0, 0, 0, 0, 0, 0, 6, 3, STATE_FOLLOW },
303 { 0, 0, 0, 0, 0, 0, 0, 7, 1, STATE_DATA },
304 { 0, 0, 0, 0, 0, 0, 0, 8, 0, STATE_START },
305 { 0, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
306 { +1, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
307 { 0, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
308 { 0, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
309 { +2, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
310 { +3, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
311 { +1, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
312 { +1, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
313 { 0, 0, 0, 0, 0, 2, +1, 1, 2, STATE_FOLLOW },
314 { 0, 0, 0, 0, 0, 2, +1, 1, 3, STATE_FOLLOW },
315 { 0, 0, 0, 0, 0, 2, +1, 2, 1, STATE_DATA },
316 { 0, 0, 0, 0, 0, 2, +1, 3, 0, STATE_START },
317 { 0, 0, 0, 0, 0, 2, -1, 1, 2, STATE_FOLLOW },
318 { 0, 0, 0, 0, 0, 2, -1, 1, 3, STATE_FOLLOW },
319 { 0, 0, 0, 0, 0, 2, -1, 2, 1, STATE_DATA },
320 { 0, 0, 0, 0, 0, 2, -1, 3, 0, STATE_START },
321 { +4, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
322 { +5, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
323 { +2, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
324 { +2, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
325 { +6, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
326 { +7, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
327 { +3, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
328 { +3, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
329 { +1, 0, 0, 0, 0, 2, +1, 1, 2, STATE_FOLLOW },
330 { +1, 0, 0, 0, 0, 2, +1, 1, 3, STATE_FOLLOW },
331 { +1, 0, 0, 0, 0, 2, +1, 2, 1, STATE_DATA },
332 { +1, 0, 0, 0, 0, 2, +1, 3, 0, STATE_START },
333 { +1, 0, 0, 0, 0, 2, -1, 1, 2, STATE_FOLLOW },
334 { +1, 0, 0, 0, 0, 2, -1, 1, 3, STATE_FOLLOW },
335 { +1, 0, 0, 0, 0, 2, -1, 2, 1, STATE_DATA },
336 { +1, 0, 0, 0, 0, 2, -1, 3, 0, STATE_START },
337 { 0, 0, 0, 0, 0, 1, +1, 1, 4, STATE_FOLLOW },
338 { 0, 0, 0, 0, 0, 1, +1, 1, 5, STATE_FOLLOW },
339 { 0, +1, 0, 0, 0, 1, +1, 2, 0, STATE_START },
340 { 0, -1, 0, 0, 0, 1, +1, 2, 0, STATE_START },
341 { 0, 0, 0, 0, 0, 1, +1, 1, 6, STATE_FOLLOW },
342 { 0, 0, 0, 0, 0, 1, +1, 1, 7, STATE_FOLLOW },
343 { 0, +2, 0, 0, 0, 1, +1, 2, 0, STATE_START },
344 { 0, -2, 0, 0, 0, 1, +1, 2, 0, STATE_START },
345 { 0, 0, 0, 0, 0, 1, +1, 2, 2, STATE_DATA },
346 { 0, 0, 0, 0, 0, 1, +1, 2, 2, STATE_SIGN },
347 { 0, 0, 0, 0, 0, 1, +1, 2, 3, STATE_DATA },
348 { 0, 0, 0, 0, 0, 1, +1, 2, 3, STATE_SIGN },
349 { 0, 0, 0, 0, 0, 1, +1, 3, 2, STATE_FOLLOW },
350 { 0, 0, 0, 0, 0, 1, +1, 3, 3, STATE_FOLLOW },
351 { 0, 0, 0, 0, 0, 1, +1, 4, 1, STATE_DATA },
352 { 0, 0, 0, 0, 0, 1, +1, 5, 0, STATE_START },
353 { 0, 0, 0, 0, 0, 1, -1, 1, 4, STATE_FOLLOW },
354 { 0, 0, 0, 0, 0, 1, -1, 1, 5, STATE_FOLLOW },
355 { 0, +1, 0, 0, 0, 1, -1, 2, 0, STATE_START },
356 { 0, -1, 0, 0, 0, 1, -1, 2, 0, STATE_START },
357 { 0, 0, 0, 0, 0, 1, -1, 1, 6, STATE_FOLLOW },
358 { 0, 0, 0, 0, 0, 1, -1, 1, 7, STATE_FOLLOW },
359 { 0, +2, 0, 0, 0, 1, -1, 2, 0, STATE_START },
360 { 0, -2, 0, 0, 0, 1, -1, 2, 0, STATE_START },
361 { 0, 0, 0, 0, 0, 1, -1, 2, 2, STATE_DATA },
362 { 0, 0, 0, 0, 0, 1, -1, 2, 2, STATE_SIGN },
363 { 0, 0, 0, 0, 0, 1, -1, 2, 3, STATE_DATA },
364 { 0, 0, 0, 0, 0, 1, -1, 2, 3, STATE_SIGN },
365 { 0, 0, 0, 0, 0, 1, -1, 3, 2, STATE_FOLLOW },
366 { 0, 0, 0, 0, 0, 1, -1, 3, 3, STATE_FOLLOW },
367 { 0, 0, 0, 0, 0, 1, -1, 4, 1, STATE_DATA },
368 { 0, 0, 0, 0, 0, 1, -1, 5, 0, STATE_START },
369 { +8, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
370 { +9, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
371 { +4, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
372 { +4, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
373 { +10, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
374 { +11, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
375 { +5, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
376 { +5, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
377 { +2, 0, 0, 0, 0, 2, +1, 1, 2, STATE_FOLLOW },
378 { +2, 0, 0, 0, 0, 2, +1, 1, 3, STATE_FOLLOW },
379 { +2, 0, 0, 0, 0, 2, +1, 2, 1, STATE_DATA },
380 { +2, 0, 0, 0, 0, 2, +1, 3, 0, STATE_START },
381 { +2, 0, 0, 0, 0, 2, -1, 1, 2, STATE_FOLLOW },
382 { +2, 0, 0, 0, 0, 2, -1, 1, 3, STATE_FOLLOW },
383 { +2, 0, 0, 0, 0, 2, -1, 2, 1, STATE_DATA },
384 { +2, 0, 0, 0, 0, 2, -1, 3, 0, STATE_START },
385 { +12, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
386 { +13, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
387 { +6, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
388 { +6, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
389 { +14, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
390 { +15, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
391 { +7, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
392 { +7, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
393 { +3, 0, 0, 0, 0, 2, +1, 1, 2, STATE_FOLLOW },
394 { +3, 0, 0, 0, 0, 2, +1, 1, 3, STATE_FOLLOW },
395 { +3, 0, 0, 0, 0, 2, +1, 2, 1, STATE_DATA },
396 { +3, 0, 0, 0, 0, 2, +1, 3, 0, STATE_START },
397 { +3, 0, 0, 0, 0, 2, -1, 1, 2, STATE_FOLLOW },
398 { +3, 0, 0, 0, 0, 2, -1, 1, 3, STATE_FOLLOW },
399 { +3, 0, 0, 0, 0, 2, -1, 2, 1, STATE_DATA },
400 { +3, 0, 0, 0, 0, 2, -1, 3, 0, STATE_START },
401 { +1, 0, 0, 0, 0, 1, +1, 1, 4, STATE_FOLLOW },
402 { +1, 0, 0, 0, 0, 1, +1, 1, 5, STATE_FOLLOW },
403 { +1, +1, 0, 0, 0, 1, +1, 2, 0, STATE_START },
404 { +1, -1, 0, 0, 0, 1, +1, 2, 0, STATE_START },
405 { +1, 0, 0, 0, 0, 1, +1, 1, 6, STATE_FOLLOW },
406 { +1, 0, 0, 0, 0, 1, +1, 1, 7, STATE_FOLLOW },
407 { +1, +2, 0, 0, 0, 1, +1, 2, 0, STATE_START },
408 { +1, -2, 0, 0, 0, 1, +1, 2, 0, STATE_START },
409 { +1, 0, 0, 0, 0, 1, +1, 2, 2, STATE_DATA },
410 { +1, 0, 0, 0, 0, 1, +1, 2, 2, STATE_SIGN },
411 { +1, 0, 0, 0, 0, 1, +1, 2, 3, STATE_DATA },
412 { +1, 0, 0, 0, 0, 1, +1, 2, 3, STATE_SIGN },
413 { +1, 0, 0, 0, 0, 1, +1, 3, 2, STATE_FOLLOW },
414 { +1, 0, 0, 0, 0, 1, +1, 3, 3, STATE_FOLLOW },
415 { +1, 0, 0, 0, 0, 1, +1, 4, 1, STATE_DATA },
416 { +1, 0, 0, 0, 0, 1, +1, 5, 0, STATE_START },
417 { +1, 0, 0, 0, 0, 1, -1, 1, 4, STATE_FOLLOW },
418 { +1, 0, 0, 0, 0, 1, -1, 1, 5, STATE_FOLLOW },
419 { +1, +1, 0, 0, 0, 1, -1, 2, 0, STATE_START },
420 { +1, -1, 0, 0, 0, 1, -1, 2, 0, STATE_START },
421 { +1, 0, 0, 0, 0, 1, -1, 1, 6, STATE_FOLLOW },
422 { +1, 0, 0, 0, 0, 1, -1, 1, 7, STATE_FOLLOW },
423 { +1, +2, 0, 0, 0, 1, -1, 2, 0, STATE_START },
424 { +1, -2, 0, 0, 0, 1, -1, 2, 0, STATE_START },
425 { +1, 0, 0, 0, 0, 1, -1, 2, 2, STATE_DATA },
426 { +1, 0, 0, 0, 0, 1, -1, 2, 2, STATE_SIGN },
427 { +1, 0, 0, 0, 0, 1, -1, 2, 3, STATE_DATA },
428 { +1, 0, 0, 0, 0, 1, -1, 2, 3, STATE_SIGN },
429 { +1, 0, 0, 0, 0, 1, -1, 3, 2, STATE_FOLLOW },
430 { +1, 0, 0, 0, 0, 1, -1, 3, 3, STATE_FOLLOW },
431 { +1, 0, 0, 0, 0, 1, -1, 4, 1, STATE_DATA },
432 { +1, 0, 0, 0, 0, 1, -1, 5, 0, STATE_START },
433 { 0, 0, 0, 0, 0, 0, +1, 1, 8, STATE_FOLLOW },
434 { 0, 0, 0, 0, 0, 0, +1, 1, 9, STATE_FOLLOW },
435 { 0, +3, 0, 0, 0, 0, +1, 2, 0, STATE_START },
436 { 0, -3, 0, 0, 0, 0, +1, 2, 0, STATE_START },
437 { 0, 0, 0, 0, 0, 0, +1, 1, 10, STATE_FOLLOW },
438 { 0, 0, 0, 0, 0, 0, +1, 1, 11, STATE_FOLLOW },
439 { 0, +4, 0, 0, 0, 0, +1, 2, 0, STATE_START },
440 { 0, -4, 0, 0, 0, 0, +1, 2, 0, STATE_START },
441 { 0, +1, 0, 0, 0, 0, +1, 2, 2, STATE_FOLLOW },
442 { 0, +1, 0, 0, 0, 0, +1, 2, 3, STATE_FOLLOW },
443 { 0, +1, 0, 0, 0, 0, +1, 3, 1, STATE_DATA },
444 { 0, +1, 0, 0, 0, 0, +1, 4, 0, STATE_START },
445 { 0, -1, 0, 0, 0, 0, +1, 2, 2, STATE_FOLLOW },
446 { 0, -1, 0, 0, 0, 0, +1, 2, 3, STATE_FOLLOW },
447 { 0, -1, 0, 0, 0, 0, +1, 3, 1, STATE_DATA },
448 { 0, -1, 0, 0, 0, 0, +1, 4, 0, STATE_START },
449 { 0, 0, 0, 0, 0, 0, +1, 1, 12, STATE_FOLLOW },
450 { 0, 0, 0, 0, 0, 0, +1, 1, 13, STATE_FOLLOW },
451 { 0, +5, 0, 0, 0, 0, +1, 2, 0, STATE_START },
452 { 0, -5, 0, 0, 0, 0, +1, 2, 0, STATE_START },
453 { 0, 0, 0, 0, 0, 0, +1, 1, 14, STATE_FOLLOW },
454 { 0, 0, 0, 0, 0, 0, +1, 1, 15, STATE_FOLLOW },
455 { 0, +6, 0, 0, 0, 0, +1, 2, 0, STATE_START },
456 { 0, -6, 0, 0, 0, 0, +1, 2, 0, STATE_START },
457 { 0, +2, 0, 0, 0, 0, +1, 2, 2, STATE_FOLLOW },
458 { 0, +2, 0, 0, 0, 0, +1, 2, 3, STATE_FOLLOW },
459 { 0, +2, 0, 0, 0, 0, +1, 3, 1, STATE_DATA },
460 { 0, +2, 0, 0, 0, 0, +1, 4, 0, STATE_START },
461 { 0, -2, 0, 0, 0, 0, +1, 2, 2, STATE_FOLLOW },
462 { 0, -2, 0, 0, 0, 0, +1, 2, 3, STATE_FOLLOW },
463 { 0, -2, 0, 0, 0, 0, +1, 3, 1, STATE_DATA },
464 { 0, -2, 0, 0, 0, 0, +1, 4, 0, STATE_START },
465 { 0, 0, 0, 0, 0, 0, +1, 2, 4, STATE_DATA },
466 { 0, 0, 0, 0, 0, 0, +1, 2, 4, STATE_SIGN },
467 { 0, 0, 0, 0, 0, 0, +1, 2, 5, STATE_DATA },
468 { 0, 0, 0, 0, 0, 0, +1, 2, 5, STATE_SIGN },
469 { 0, 0, +1, 0, 0, 0, +1, 3, 1, STATE_DATA },
470 { 0, 0, +1, 0, 0, 0, +1, 4, 0, STATE_START },
471 { 0, 0, -1, 0, 0, 0, +1, 3, 1, STATE_DATA },
472 { 0, 0, -1, 0, 0, 0, +1, 4, 0, STATE_START },
473 { 0, 0, 0, 0, 0, 0, +1, 2, 6, STATE_DATA },
474 { 0, 0, 0, 0, 0, 0, +1, 2, 6, STATE_SIGN },
475 { 0, 0, 0, 0, 0, 0, +1, 2, 7, STATE_DATA },
476 { 0, 0, 0, 0, 0, 0, +1, 2, 7, STATE_SIGN },
477 { 0, 0, +2, 0, 0, 0, +1, 3, 1, STATE_DATA },
478 { 0, 0, +2, 0, 0, 0, +1, 4, 0, STATE_START },
479 { 0, 0, -2, 0, 0, 0, +1, 3, 1, STATE_DATA },
480 { 0, 0, -2, 0, 0, 0, +1, 4, 0, STATE_START },
481 { 0, 0, 0, 0, 0, 0, +1, 3, 4, STATE_FOLLOW },
482 { 0, 0, 0, 0, 0, 0, +1, 3, 5, STATE_FOLLOW },
483 { 0, 0, 0, +1, 0, 0, +1, 4, 0, STATE_START },
484 { 0, 0, 0, -1, 0, 0, +1, 4, 0, STATE_START },
485 { 0, 0, 0, 0, 0, 0, +1, 3, 6, STATE_FOLLOW },
486 { 0, 0, 0, 0, 0, 0, +1, 3, 7, STATE_FOLLOW },
487 { 0, 0, 0, +2, 0, 0, +1, 4, 0, STATE_START },
488 { 0, 0, 0, -2, 0, 0, +1, 4, 0, STATE_START },
489 { 0, 0, 0, 0, 0, 0, +1, 4, 2, STATE_DATA },
490 { 0, 0, 0, 0, 0, 0, +1, 4, 2, STATE_SIGN },
491 { 0, 0, 0, 0, 0, 0, +1, 4, 3, STATE_DATA },
492 { 0, 0, 0, 0, 0, 0, +1, 4, 3, STATE_SIGN },
493 { 0, 0, 0, 0, 0, 0, +1, 5, 2, STATE_FOLLOW },
494 { 0, 0, 0, 0, 0, 0, +1, 5, 3, STATE_FOLLOW },
495 { 0, 0, 0, 0, 0, 0, +1, 6, 1, STATE_DATA },
496 { 0, 0, 0, 0, 0, 0, +1, 7, 0, STATE_START },
497 { 0, 0, 0, 0, 0, 0, -1, 1, 8, STATE_FOLLOW },
498 { 0, 0, 0, 0, 0, 0, -1, 1, 9, STATE_FOLLOW },
499 { 0, +3, 0, 0, 0, 0, -1, 2, 0, STATE_START },
500 { 0, -3, 0, 0, 0, 0, -1, 2, 0, STATE_START },
501 { 0, 0, 0, 0, 0, 0, -1, 1, 10, STATE_FOLLOW },
502 { 0, 0, 0, 0, 0, 0, -1, 1, 11, STATE_FOLLOW },
503 { 0, +4, 0, 0, 0, 0, -1, 2, 0, STATE_START },
504 { 0, -4, 0, 0, 0, 0, -1, 2, 0, STATE_START },
505 { 0, +1, 0, 0, 0, 0, -1, 2, 2, STATE_FOLLOW },
506 { 0, +1, 0, 0, 0, 0, -1, 2, 3, STATE_FOLLOW },
507 { 0, +1, 0, 0, 0, 0, -1, 3, 1, STATE_DATA },
508 { 0, +1, 0, 0, 0, 0, -1, 4, 0, STATE_START },
509 { 0, -1, 0, 0, 0, 0, -1, 2, 2, STATE_FOLLOW },
510 { 0, -1, 0, 0, 0, 0, -1, 2, 3, STATE_FOLLOW },
511 { 0, -1, 0, 0, 0, 0, -1, 3, 1, STATE_DATA },
512 { 0, -1, 0, 0, 0, 0, -1, 4, 0, STATE_START },
513 { 0, 0, 0, 0, 0, 0, -1, 1, 12, STATE_FOLLOW },
514 { 0, 0, 0, 0, 0, 0, -1, 1, 13, STATE_FOLLOW },
515 { 0, +5, 0, 0, 0, 0, -1, 2, 0, STATE_START },
516 { 0, -5, 0, 0, 0, 0, -1, 2, 0, STATE_START },
517 { 0, 0, 0, 0, 0, 0, -1, 1, 14, STATE_FOLLOW },
518 { 0, 0, 0, 0, 0, 0, -1, 1, 15, STATE_FOLLOW },
519 { 0, +6, 0, 0, 0, 0, -1, 2, 0, STATE_START },
520 { 0, -6, 0, 0, 0, 0, -1, 2, 0, STATE_START },
521 { 0, +2, 0, 0, 0, 0, -1, 2, 2, STATE_FOLLOW },
522 { 0, +2, 0, 0, 0, 0, -1, 2, 3, STATE_FOLLOW },
523 { 0, +2, 0, 0, 0, 0, -1, 3, 1, STATE_DATA },
524 { 0, +2, 0, 0, 0, 0, -1, 4, 0, STATE_START },
525 { 0, -2, 0, 0, 0, 0, -1, 2, 2, STATE_FOLLOW },
526 { 0, -2, 0, 0, 0, 0, -1, 2, 3, STATE_FOLLOW },
527 { 0, -2, 0, 0, 0, 0, -1, 3, 1, STATE_DATA },
528 { 0, -2, 0, 0, 0, 0, -1, 4, 0, STATE_START },
529 { 0, 0, 0, 0, 0, 0, -1, 2, 4, STATE_DATA },
530 { 0, 0, 0, 0, 0, 0, -1, 2, 4, STATE_SIGN },
531 { 0, 0, 0, 0, 0, 0, -1, 2, 5, STATE_DATA },
532 { 0, 0, 0, 0, 0, 0, -1, 2, 5, STATE_SIGN },
533 { 0, 0, +1, 0, 0, 0, -1, 3, 1, STATE_DATA },
534 { 0, 0, +1, 0, 0, 0, -1, 4, 0, STATE_START },
535 { 0, 0, -1, 0, 0, 0, -1, 3, 1, STATE_DATA },
536 { 0, 0, -1, 0, 0, 0, -1, 4, 0, STATE_START },
537 { 0, 0, 0, 0, 0, 0, -1, 2, 6, STATE_DATA },
538 { 0, 0, 0, 0, 0, 0, -1, 2, 6, STATE_SIGN },
539 { 0, 0, 0, 0, 0, 0, -1, 2, 7, STATE_DATA },
540 { 0, 0, 0, 0, 0, 0, -1, 2, 7, STATE_SIGN },
541 { 0, 0, +2, 0, 0, 0, -1, 3, 1, STATE_DATA },
542 { 0, 0, +2, 0, 0, 0, -1, 4, 0, STATE_START },
543 { 0, 0, -2, 0, 0, 0, -1, 3, 1, STATE_DATA },
544 { 0, 0, -2, 0, 0, 0, -1, 4, 0, STATE_START },
545 { 0, 0, 0, 0, 0, 0, -1, 3, 4, STATE_FOLLOW },
546 { 0, 0, 0, 0, 0, 0, -1, 3, 5, STATE_FOLLOW },
547 { 0, 0, 0, +1, 0, 0, -1, 4, 0, STATE_START },
548 { 0, 0, 0, -1, 0, 0, -1, 4, 0, STATE_START },
549 { 0, 0, 0, 0, 0, 0, -1, 3, 6, STATE_FOLLOW },
550 { 0, 0, 0, 0, 0, 0, -1, 3, 7, STATE_FOLLOW },
551 { 0, 0, 0, +2, 0, 0, -1, 4, 0, STATE_START },
552 { 0, 0, 0, -2, 0, 0, -1, 4, 0, STATE_START },
553 { 0, 0, 0, 0, 0, 0, -1, 4, 2, STATE_DATA },
554 { 0, 0, 0, 0, 0, 0, -1, 4, 2, STATE_SIGN },
555 { 0, 0, 0, 0, 0, 0, -1, 4, 3, STATE_DATA },
556 { 0, 0, 0, 0, 0, 0, -1, 4, 3, STATE_SIGN },
557 { 0, 0, 0, 0, 0, 0, -1, 5, 2, STATE_FOLLOW },
558 { 0, 0, 0, 0, 0, 0, -1, 5, 3, STATE_FOLLOW },
559 { 0, 0, 0, 0, 0, 0, -1, 6, 1, STATE_DATA },
560 { 0, 0, 0, 0, 0, 0, -1, 7, 0, STATE_START },
561 { 0, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
562 { 0, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
563 { +1, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
564 { +1, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
565 { 0, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
566 { 0, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
567 { 0, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
568 { 0, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
569 { +2, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
570 { +2, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
571 { +3, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
572 { +3, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
573 { +1, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
574 { +1, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
575 { +1, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
576 { +1, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
577 { 0, 0, 0, 0, 0, 2, +1, 1, 2, STATE_DATA },
578 { 0, 0, 0, 0, 0, 2, +1, 1, 2, STATE_SIGN },
579 { 0, 0, 0, 0, 0, 2, +1, 1, 3, STATE_DATA },
580 { 0, 0, 0, 0, 0, 2, +1, 1, 3, STATE_SIGN },
581 { 0, 0, 0, 0, 0, 2, +1, 2, 2, STATE_FOLLOW },
582 { 0, 0, 0, 0, 0, 2, +1, 2, 3, STATE_FOLLOW },
583 { 0, 0, 0, 0, 0, 2, +1, 3, 1, STATE_DATA },
584 { 0, 0, 0, 0, 0, 2, +1, 4, 0, STATE_START },
585 { 0, 0, 0, 0, 0, 2, -1, 1, 2, STATE_DATA },
586 { 0, 0, 0, 0, 0, 2, -1, 1, 2, STATE_SIGN },
587 { 0, 0, 0, 0, 0, 2, -1, 1, 3, STATE_DATA },
588 { 0, 0, 0, 0, 0, 2, -1, 1, 3, STATE_SIGN },
589 { 0, 0, 0, 0, 0, 2, -1, 2, 2, STATE_FOLLOW },
590 { 0, 0, 0, 0, 0, 2, -1, 2, 3, STATE_FOLLOW },
591 { 0, 0, 0, 0, 0, 2, -1, 3, 1, STATE_DATA },
592 { 0, 0, 0, 0, 0, 2, -1, 4, 0, STATE_START },
593 { +4, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
594 { +4, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
595 { +5, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
596 { +5, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
597 { +2, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
598 { +2, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
599 { +2, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
600 { +2, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
601 { +6, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
602 { +6, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
603 { +7, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
604 { +7, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
605 { +3, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
606 { +3, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
607 { +3, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
608 { +3, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
609 { +1, 0, 0, 0, 0, 2, +1, 1, 2, STATE_DATA },
610 { +1, 0, 0, 0, 0, 2, +1, 1, 2, STATE_SIGN },
611 { +1, 0, 0, 0, 0, 2, +1, 1, 3, STATE_DATA },
612 { +1, 0, 0, 0, 0, 2, +1, 1, 3, STATE_SIGN },
613 { +1, 0, 0, 0, 0, 2, +1, 2, 2, STATE_FOLLOW },
614 { +1, 0, 0, 0, 0, 2, +1, 2, 3, STATE_FOLLOW },
615 { +1, 0, 0, 0, 0, 2, +1, 3, 1, STATE_DATA },
616 { +1, 0, 0, 0, 0, 2, +1, 4, 0, STATE_START },
617 { +1, 0, 0, 0, 0, 2, -1, 1, 2, STATE_DATA },
618 { +1, 0, 0, 0, 0, 2, -1, 1, 2, STATE_SIGN },
619 { +1, 0, 0, 0, 0, 2, -1, 1, 3, STATE_DATA },
620 { +1, 0, 0, 0, 0, 2, -1, 1, 3, STATE_SIGN },
621 { +1, 0, 0, 0, 0, 2, -1, 2, 2, STATE_FOLLOW },
622 { +1, 0, 0, 0, 0, 2, -1, 2, 3, STATE_FOLLOW },
623 { +1, 0, 0, 0, 0, 2, -1, 3, 1, STATE_DATA },
624 { +1, 0, 0, 0, 0, 2, -1, 4, 0, STATE_START },
625 { 0, 0, 0, 0, 0, 1, +1, 1, 4, STATE_DATA },
626 { 0, 0, 0, 0, 0, 1, +1, 1, 4, STATE_SIGN },
627 { 0, 0, 0, 0, 0, 1, +1, 1, 5, STATE_DATA },
628 { 0, 0, 0, 0, 0, 1, +1, 1, 5, STATE_SIGN },
629 { 0, +1, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
630 { 0, +1, 0, 0, 0, 1, +1, 3, 0, STATE_START },
631 { 0, -1, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
632 { 0, -1, 0, 0, 0, 1, +1, 3, 0, STATE_START },
633 { 0, 0, 0, 0, 0, 1, +1, 1, 6, STATE_DATA },
634 { 0, 0, 0, 0, 0, 1, +1, 1, 6, STATE_SIGN },
635 { 0, 0, 0, 0, 0, 1, +1, 1, 7, STATE_DATA },
636 { 0, 0, 0, 0, 0, 1, +1, 1, 7, STATE_SIGN },
637 { 0, +2, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
638 { 0, +2, 0, 0, 0, 1, +1, 3, 0, STATE_START },
639 { 0, -2, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
640 { 0, -2, 0, 0, 0, 1, +1, 3, 0, STATE_START },
641 { 0, 0, 0, 0, 0, 1, +1, 2, 4, STATE_FOLLOW },
642 { 0, 0, 0, 0, 0, 1, +1, 2, 5, STATE_FOLLOW },
643 { 0, 0, +1, 0, 0, 1, +1, 3, 0, STATE_START },
644 { 0, 0, -1, 0, 0, 1, +1, 3, 0, STATE_START },
645 { 0, 0, 0, 0, 0, 1, +1, 2, 6, STATE_FOLLOW },
646 { 0, 0, 0, 0, 0, 1, +1, 2, 7, STATE_FOLLOW },
647 { 0, 0, +2, 0, 0, 1, +1, 3, 0, STATE_START },
648 { 0, 0, -2, 0, 0, 1, +1, 3, 0, STATE_START },
649 { 0, 0, 0, 0, 0, 1, +1, 3, 2, STATE_DATA },
650 { 0, 0, 0, 0, 0, 1, +1, 3, 2, STATE_SIGN },
651 { 0, 0, 0, 0, 0, 1, +1, 3, 3, STATE_DATA },
652 { 0, 0, 0, 0, 0, 1, +1, 3, 3, STATE_SIGN },
653 { 0, 0, 0, 0, 0, 1, +1, 4, 2, STATE_FOLLOW },
654 { 0, 0, 0, 0, 0, 1, +1, 4, 3, STATE_FOLLOW },
655 { 0, 0, 0, 0, 0, 1, +1, 5, 1, STATE_DATA },
656 { 0, 0, 0, 0, 0, 1, +1, 6, 0, STATE_START },
657 { 0, 0, 0, 0, 0, 1, -1, 1, 4, STATE_DATA },
658 { 0, 0, 0, 0, 0, 1, -1, 1, 4, STATE_SIGN },
659 { 0, 0, 0, 0, 0, 1, -1, 1, 5, STATE_DATA },
660 { 0, 0, 0, 0, 0, 1, -1, 1, 5, STATE_SIGN },
661 { 0, +1, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
662 { 0, +1, 0, 0, 0, 1, -1, 3, 0, STATE_START },
663 { 0, -1, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
664 { 0, -1, 0, 0, 0, 1, -1, 3, 0, STATE_START },
665 { 0, 0, 0, 0, 0, 1, -1, 1, 6, STATE_DATA },
666 { 0, 0, 0, 0, 0, 1, -1, 1, 6, STATE_SIGN },
667 { 0, 0, 0, 0, 0, 1, -1, 1, 7, STATE_DATA },
668 { 0, 0, 0, 0, 0, 1, -1, 1, 7, STATE_SIGN },
669 { 0, +2, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
670 { 0, +2, 0, 0, 0, 1, -1, 3, 0, STATE_START },
671 { 0, -2, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
672 { 0, -2, 0, 0, 0, 1, -1, 3, 0, STATE_START },
673 { 0, 0, 0, 0, 0, 1, -1, 2, 4, STATE_FOLLOW },
674 { 0, 0, 0, 0, 0, 1, -1, 2, 5, STATE_FOLLOW },
675 { 0, 0, +1, 0, 0, 1, -1, 3, 0, STATE_START },
676 { 0, 0, -1, 0, 0, 1, -1, 3, 0, STATE_START },
677 { 0, 0, 0, 0, 0, 1, -1, 2, 6, STATE_FOLLOW },
678 { 0, 0, 0, 0, 0, 1, -1, 2, 7, STATE_FOLLOW },
679 { 0, 0, +2, 0, 0, 1, -1, 3, 0, STATE_START },
680 { 0, 0, -2, 0, 0, 1, -1, 3, 0, STATE_START },
681 { 0, 0, 0, 0, 0, 1, -1, 3, 2, STATE_DATA },
682 { 0, 0, 0, 0, 0, 1, -1, 3, 2, STATE_SIGN },
683 { 0, 0, 0, 0, 0, 1, -1, 3, 3, STATE_DATA },
684 { 0, 0, 0, 0, 0, 1, -1, 3, 3, STATE_SIGN },
685 { 0, 0, 0, 0, 0, 1, -1, 4, 2, STATE_FOLLOW },
686 { 0, 0, 0, 0, 0, 1, -1, 4, 3, STATE_FOLLOW },
687 { 0, 0, 0, 0, 0, 1, -1, 5, 1, STATE_DATA },
688 { 0, 0, 0, 0, 0, 1, -1, 6, 0, STATE_START },
689 { +8, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
690 { +8, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
691 { +9, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
692 { +9, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
693 { +4, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
694 { +4, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
695 { +4, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
696 { +4, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
697 { +10, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
698 { +10, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
699 { +11, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
700 { +11, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
701 { +5, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
702 { +5, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
703 { +5, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
704 { +5, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
705 { +2, 0, 0, 0, 0, 2, +1, 1, 2, STATE_DATA },
706 { +2, 0, 0, 0, 0, 2, +1, 1, 2, STATE_SIGN },
707 { +2, 0, 0, 0, 0, 2, +1, 1, 3, STATE_DATA },
708 { +2, 0, 0, 0, 0, 2, +1, 1, 3, STATE_SIGN },
709 { +2, 0, 0, 0, 0, 2, +1, 2, 2, STATE_FOLLOW },
710 { +2, 0, 0, 0, 0, 2, +1, 2, 3, STATE_FOLLOW },
711 { +2, 0, 0, 0, 0, 2, +1, 3, 1, STATE_DATA },
712 { +2, 0, 0, 0, 0, 2, +1, 4, 0, STATE_START },
713 { +2, 0, 0, 0, 0, 2, -1, 1, 2, STATE_DATA },
714 { +2, 0, 0, 0, 0, 2, -1, 1, 2, STATE_SIGN },
715 { +2, 0, 0, 0, 0, 2, -1, 1, 3, STATE_DATA },
716 { +2, 0, 0, 0, 0, 2, -1, 1, 3, STATE_SIGN },
717 { +2, 0, 0, 0, 0, 2, -1, 2, 2, STATE_FOLLOW },
718 { +2, 0, 0, 0, 0, 2, -1, 2, 3, STATE_FOLLOW },
719 { +2, 0, 0, 0, 0, 2, -1, 3, 1, STATE_DATA },
720 { +2, 0, 0, 0, 0, 2, -1, 4, 0, STATE_START },
721 { +12, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
722 { +12, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
723 { +13, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
724 { +13, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
725 { +6, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
726 { +6, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
727 { +6, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
728 { +6, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
729 { +14, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
730 { +14, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
731 { +15, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
732 { +15, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
733 { +7, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
734 { +7, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
735 { +7, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
736 { +7, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
737 { +3, 0, 0, 0, 0, 2, +1, 1, 2, STATE_DATA },
738 { +3, 0, 0, 0, 0, 2, +1, 1, 2, STATE_SIGN },
739 { +3, 0, 0, 0, 0, 2, +1, 1, 3, STATE_DATA },
740 { +3, 0, 0, 0, 0, 2, +1, 1, 3, STATE_SIGN },
741 { +3, 0, 0, 0, 0, 2, +1, 2, 2, STATE_FOLLOW },
742 { +3, 0, 0, 0, 0, 2, +1, 2, 3, STATE_FOLLOW },
743 { +3, 0, 0, 0, 0, 2, +1, 3, 1, STATE_DATA },
744 { +3, 0, 0, 0, 0, 2, +1, 4, 0, STATE_START },
745 { +3, 0, 0, 0, 0, 2, -1, 1, 2, STATE_DATA },
746 { +3, 0, 0, 0, 0, 2, -1, 1, 2, STATE_SIGN },
747 { +3, 0, 0, 0, 0, 2, -1, 1, 3, STATE_DATA },
748 { +3, 0, 0, 0, 0, 2, -1, 1, 3, STATE_SIGN },
749 { +3, 0, 0, 0, 0, 2, -1, 2, 2, STATE_FOLLOW },
750 { +3, 0, 0, 0, 0, 2, -1, 2, 3, STATE_FOLLOW },
751 { +3, 0, 0, 0, 0, 2, -1, 3, 1, STATE_DATA },
752 { +3, 0, 0, 0, 0, 2, -1, 4, 0, STATE_START },
753 { +1, 0, 0, 0, 0, 1, +1, 1, 4, STATE_DATA },
754 { +1, 0, 0, 0, 0, 1, +1, 1, 4, STATE_SIGN },
755 { +1, 0, 0, 0, 0, 1, +1, 1, 5, STATE_DATA },
756 { +1, 0, 0, 0, 0, 1, +1, 1, 5, STATE_SIGN },
757 { +1, +1, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
758 { +1, +1, 0, 0, 0, 1, +1, 3, 0, STATE_START },
759 { +1, -1, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
760 { +1, -1, 0, 0, 0, 1, +1, 3, 0, STATE_START },
761 { +1, 0, 0, 0, 0, 1, +1, 1, 6, STATE_DATA },
762 { +1, 0, 0, 0, 0, 1, +1, 1, 6, STATE_SIGN },
763 { +1, 0, 0, 0, 0, 1, +1, 1, 7, STATE_DATA },
764 { +1, 0, 0, 0, 0, 1, +1, 1, 7, STATE_SIGN },
765 { +1, +2, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
766 { +1, +2, 0, 0, 0, 1, +1, 3, 0, STATE_START },
767 { +1, -2, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
768 { +1, -2, 0, 0, 0, 1, +1, 3, 0, STATE_START },
769 { +1, 0, 0, 0, 0, 1, +1, 2, 4, STATE_FOLLOW },
770 { +1, 0, 0, 0, 0, 1, +1, 2, 5, STATE_FOLLOW },
771 { +1, 0, +1, 0, 0, 1, +1, 3, 0, STATE_START },
772 { +1, 0, -1, 0, 0, 1, +1, 3, 0, STATE_START },
773 { +1, 0, 0, 0, 0, 1, +1, 2, 6, STATE_FOLLOW },
774 { +1, 0, 0, 0, 0, 1, +1, 2, 7, STATE_FOLLOW },
775 { +1, 0, +2, 0, 0, 1, +1, 3, 0, STATE_START },
776 { +1, 0, -2, 0, 0, 1, +1, 3, 0, STATE_START },
777 { +1, 0, 0, 0, 0, 1, +1, 3, 2, STATE_DATA },
778 { +1, 0, 0, 0, 0, 1, +1, 3, 2, STATE_SIGN },
779 { +1, 0, 0, 0, 0, 1, +1, 3, 3, STATE_DATA },
780 { +1, 0, 0, 0, 0, 1, +1, 3, 3, STATE_SIGN },
781 { +1, 0, 0, 0, 0, 1, +1, 4, 2, STATE_FOLLOW },
782 { +1, 0, 0, 0, 0, 1, +1, 4, 3, STATE_FOLLOW },
783 { +1, 0, 0, 0, 0, 1, +1, 5, 1, STATE_DATA },
784 { +1, 0, 0, 0, 0, 1, +1, 6, 0, STATE_START },
785 { +1, 0, 0, 0, 0, 1, -1, 1, 4, STATE_DATA },
786 { +1, 0, 0, 0, 0, 1, -1, 1, 4, STATE_SIGN },
787 { +1, 0, 0, 0, 0, 1, -1, 1, 5, STATE_DATA },
788 { +1, 0, 0, 0, 0, 1, -1, 1, 5, STATE_SIGN },
789 { +1, +1, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
790 { +1, +1, 0, 0, 0, 1, -1, 3, 0, STATE_START },
791 { +1, -1, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
792 { +1, -1, 0, 0, 0, 1, -1, 3, 0, STATE_START },
793 { +1, 0, 0, 0, 0, 1, -1, 1, 6, STATE_DATA },
794 { +1, 0, 0, 0, 0, 1, -1, 1, 6, STATE_SIGN },
795 { +1, 0, 0, 0, 0, 1, -1, 1, 7, STATE_DATA },
796 { +1, 0, 0, 0, 0, 1, -1, 1, 7, STATE_SIGN },
797 { +1, +2, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
798 { +1, +2, 0, 0, 0, 1, -1, 3, 0, STATE_START },
799 { +1, -2, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
800 { +1, -2, 0, 0, 0, 1, -1, 3, 0, STATE_START },
801 { +1, 0, 0, 0, 0, 1, -1, 2, 4, STATE_FOLLOW },
802 { +1, 0, 0, 0, 0, 1, -1, 2, 5, STATE_FOLLOW },
803 { +1, 0, +1, 0, 0, 1, -1, 3, 0, STATE_START },
804 { +1, 0, -1, 0, 0, 1, -1, 3, 0, STATE_START },
805 { +1, 0, 0, 0, 0, 1, -1, 2, 6, STATE_FOLLOW },
806 { +1, 0, 0, 0, 0, 1, -1, 2, 7, STATE_FOLLOW },
807 { +1, 0, +2, 0, 0, 1, -1, 3, 0, STATE_START },
808 { +1, 0, -2, 0, 0, 1, -1, 3, 0, STATE_START },
809 { +1, 0, 0, 0, 0, 1, -1, 3, 2, STATE_DATA },
810 { +1, 0, 0, 0, 0, 1, -1, 3, 2, STATE_SIGN },
811 { +1, 0, 0, 0, 0, 1, -1, 3, 3, STATE_DATA },
812 { +1, 0, 0, 0, 0, 1, -1, 3, 3, STATE_SIGN },
813 { +1, 0, 0, 0, 0, 1, -1, 4, 2, STATE_FOLLOW },
814 { +1, 0, 0, 0, 0, 1, -1, 4, 3, STATE_FOLLOW },
815 { +1, 0, 0, 0, 0, 1, -1, 5, 1, STATE_DATA },
816 { +1, 0, 0, 0, 0, 1, -1, 6, 0, STATE_START },
817 { 0, 0, 0, 0, 0, 0, +1, 1, 8, STATE_DATA },
818 { 0, 0, 0, 0, 0, 0, +1, 1, 8, STATE_SIGN },
819 { 0, 0, 0, 0, 0, 0, +1, 1, 9, STATE_DATA },
820 { 0, 0, 0, 0, 0, 0, +1, 1, 9, STATE_SIGN },
821 { 0, +3, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
822 { 0, +3, 0, 0, 0, 0, +1, 3, 0, STATE_START },
823 { 0, -3, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
824 { 0, -3, 0, 0, 0, 0, +1, 3, 0, STATE_START },
825 { 0, 0, 0, 0, 0, 0, +1, 1, 10, STATE_DATA },
826 { 0, 0, 0, 0, 0, 0, +1, 1, 10, STATE_SIGN },
827 { 0, 0, 0, 0, 0, 0, +1, 1, 11, STATE_DATA },
828 { 0, 0, 0, 0, 0, 0, +1, 1, 11, STATE_SIGN },
829 { 0, +4, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
830 { 0, +4, 0, 0, 0, 0, +1, 3, 0, STATE_START },
831 { 0, -4, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
832 { 0, -4, 0, 0, 0, 0, +1, 3, 0, STATE_START },
833 { 0, +1, 0, 0, 0, 0, +1, 2, 2, STATE_DATA },
834 { 0, +1, 0, 0, 0, 0, +1, 2, 2, STATE_SIGN },
835 { 0, +1, 0, 0, 0, 0, +1, 2, 3, STATE_DATA },
836 { 0, +1, 0, 0, 0, 0, +1, 2, 3, STATE_SIGN },
837 { 0, +1, 0, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
838 { 0, +1, 0, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
839 { 0, +1, 0, 0, 0, 0, +1, 4, 1, STATE_DATA },
840 { 0, +1, 0, 0, 0, 0, +1, 5, 0, STATE_START },
841 { 0, -1, 0, 0, 0, 0, +1, 2, 2, STATE_DATA },
842 { 0, -1, 0, 0, 0, 0, +1, 2, 2, STATE_SIGN },
843 { 0, -1, 0, 0, 0, 0, +1, 2, 3, STATE_DATA },
844 { 0, -1, 0, 0, 0, 0, +1, 2, 3, STATE_SIGN },
845 { 0, -1, 0, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
846 { 0, -1, 0, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
847 { 0, -1, 0, 0, 0, 0, +1, 4, 1, STATE_DATA },
848 { 0, -1, 0, 0, 0, 0, +1, 5, 0, STATE_START },
849 { 0, 0, 0, 0, 0, 0, +1, 1, 12, STATE_DATA },
850 { 0, 0, 0, 0, 0, 0, +1, 1, 12, STATE_SIGN },
851 { 0, 0, 0, 0, 0, 0, +1, 1, 13, STATE_DATA },
852 { 0, 0, 0, 0, 0, 0, +1, 1, 13, STATE_SIGN },
853 { 0, +5, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
854 { 0, +5, 0, 0, 0, 0, +1, 3, 0, STATE_START },
855 { 0, -5, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
856 { 0, -5, 0, 0, 0, 0, +1, 3, 0, STATE_START },
857 { 0, 0, 0, 0, 0, 0, +1, 1, 14, STATE_DATA },
858 { 0, 0, 0, 0, 0, 0, +1, 1, 14, STATE_SIGN },
859 { 0, 0, 0, 0, 0, 0, +1, 1, 15, STATE_DATA },
860 { 0, 0, 0, 0, 0, 0, +1, 1, 15, STATE_SIGN },
861 { 0, +6, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
862 { 0, +6, 0, 0, 0, 0, +1, 3, 0, STATE_START },
863 { 0, -6, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
864 { 0, -6, 0, 0, 0, 0, +1, 3, 0, STATE_START },
865 { 0, +2, 0, 0, 0, 0, +1, 2, 2, STATE_DATA },
866 { 0, +2, 0, 0, 0, 0, +1, 2, 2, STATE_SIGN },
867 { 0, +2, 0, 0, 0, 0, +1, 2, 3, STATE_DATA },
868 { 0, +2, 0, 0, 0, 0, +1, 2, 3, STATE_SIGN },
869 { 0, +2, 0, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
870 { 0, +2, 0, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
871 { 0, +2, 0, 0, 0, 0, +1, 4, 1, STATE_DATA },
872 { 0, +2, 0, 0, 0, 0, +1, 5, 0, STATE_START },
873 { 0, -2, 0, 0, 0, 0, +1, 2, 2, STATE_DATA },
874 { 0, -2, 0, 0, 0, 0, +1, 2, 2, STATE_SIGN },
875 { 0, -2, 0, 0, 0, 0, +1, 2, 3, STATE_DATA },
876 { 0, -2, 0, 0, 0, 0, +1, 2, 3, STATE_SIGN },
877 { 0, -2, 0, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
878 { 0, -2, 0, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
879 { 0, -2, 0, 0, 0, 0, +1, 4, 1, STATE_DATA },
880 { 0, -2, 0, 0, 0, 0, +1, 5, 0, STATE_START },
881 { 0, 0, 0, 0, 0, 0, +1, 2, 8, STATE_FOLLOW },
882 { 0, 0, 0, 0, 0, 0, +1, 2, 9, STATE_FOLLOW },
883 { 0, 0, +3, 0, 0, 0, +1, 3, 0, STATE_START },
884 { 0, 0, -3, 0, 0, 0, +1, 3, 0, STATE_START },
885 { 0, 0, 0, 0, 0, 0, +1, 2, 10, STATE_FOLLOW },
886 { 0, 0, 0, 0, 0, 0, +1, 2, 11, STATE_FOLLOW },
887 { 0, 0, +4, 0, 0, 0, +1, 3, 0, STATE_START },
888 { 0, 0, -4, 0, 0, 0, +1, 3, 0, STATE_START },
889 { 0, 0, +1, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
890 { 0, 0, +1, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
891 { 0, 0, +1, 0, 0, 0, +1, 4, 1, STATE_DATA },
892 { 0, 0, +1, 0, 0, 0, +1, 5, 0, STATE_START },
893 { 0, 0, -1, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
894 { 0, 0, -1, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
895 { 0, 0, -1, 0, 0, 0, +1, 4, 1, STATE_DATA },
896 { 0, 0, -1, 0, 0, 0, +1, 5, 0, STATE_START },
897 { 0, 0, 0, 0, 0, 0, +1, 2, 12, STATE_FOLLOW },
898 { 0, 0, 0, 0, 0, 0, +1, 2, 13, STATE_FOLLOW },
899 { 0, 0, +5, 0, 0, 0, +1, 3, 0, STATE_START },
900 { 0, 0, -5, 0, 0, 0, +1, 3, 0, STATE_START },
901 { 0, 0, 0, 0, 0, 0, +1, 2, 14, STATE_FOLLOW },
902 { 0, 0, 0, 0, 0, 0, +1, 2, 15, STATE_FOLLOW },
903 { 0, 0, +6, 0, 0, 0, +1, 3, 0, STATE_START },
904 { 0, 0, -6, 0, 0, 0, +1, 3, 0, STATE_START },
905 { 0, 0, +2, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
906 { 0, 0, +2, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
907 { 0, 0, +2, 0, 0, 0, +1, 4, 1, STATE_DATA },
908 { 0, 0, +2, 0, 0, 0, +1, 5, 0, STATE_START },
909 { 0, 0, -2, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
910 { 0, 0, -2, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
911 { 0, 0, -2, 0, 0, 0, +1, 4, 1, STATE_DATA },
912 { 0, 0, -2, 0, 0, 0, +1, 5, 0, STATE_START },
913 { 0, 0, 0, 0, 0, 0, +1, 3, 4, STATE_DATA },
914 { 0, 0, 0, 0, 0, 0, +1, 3, 4, STATE_SIGN },
915 { 0, 0, 0, 0, 0, 0, +1, 3, 5, STATE_DATA },
916 { 0, 0, 0, 0, 0, 0, +1, 3, 5, STATE_SIGN },
917 { 0, 0, 0, +1, 0, 0, +1, 4, 1, STATE_DATA },
918 { 0, 0, 0, +1, 0, 0, +1, 5, 0, STATE_START },
919 { 0, 0, 0, -1, 0, 0, +1, 4, 1, STATE_DATA },
920 { 0, 0, 0, -1, 0, 0, +1, 5, 0, STATE_START },
921 { 0, 0, 0, 0, 0, 0, +1, 3, 6, STATE_DATA },
922 { 0, 0, 0, 0, 0, 0, +1, 3, 6, STATE_SIGN },
923 { 0, 0, 0, 0, 0, 0, +1, 3, 7, STATE_DATA },
924 { 0, 0, 0, 0, 0, 0, +1, 3, 7, STATE_SIGN },
925 { 0, 0, 0, +2, 0, 0, +1, 4, 1, STATE_DATA },
926 { 0, 0, 0, +2, 0, 0, +1, 5, 0, STATE_START },
927 { 0, 0, 0, -2, 0, 0, +1, 4, 1, STATE_DATA },
928 { 0, 0, 0, -2, 0, 0, +1, 5, 0, STATE_START },
929 { 0, 0, 0, 0, 0, 0, +1, 4, 4, STATE_FOLLOW },
930 { 0, 0, 0, 0, 0, 0, +1, 4, 5, STATE_FOLLOW },
931 { 0, 0, 0, 0, +1, 0, +1, 5, 0, STATE_START },
932 { 0, 0, 0, 0, -1, 0, +1, 5, 0, STATE_START },
933 { 0, 0, 0, 0, 0, 0, +1, 4, 6, STATE_FOLLOW },
934 { 0, 0, 0, 0, 0, 0, +1, 4, 7, STATE_FOLLOW },
935 { 0, 0, 0, 0, +2, 0, +1, 5, 0, STATE_START },
936 { 0, 0, 0, 0, -2, 0, +1, 5, 0, STATE_START },
937 { 0, 0, 0, 0, 0, 0, +1, 5, 2, STATE_DATA },
938 { 0, 0, 0, 0, 0, 0, +1, 5, 2, STATE_SIGN },
939 { 0, 0, 0, 0, 0, 0, +1, 5, 3, STATE_DATA },
940 { 0, 0, 0, 0, 0, 0, +1, 5, 3, STATE_SIGN },
941 { 0, 0, 0, 0, 0, 0, +1, 6, 2, STATE_FOLLOW },
942 { 0, 0, 0, 0, 0, 0, +1, 6, 3, STATE_FOLLOW },
943 { 0, 0, 0, 0, 0, 0, +1, 7, 1, STATE_DATA },
944 { 0, 0, 0, 0, 0, 0, +1, 8, 0, STATE_START },
945 { 0, 0, 0, 0, 0, 0, -1, 1, 8, STATE_DATA },
946 { 0, 0, 0, 0, 0, 0, -1, 1, 8, STATE_SIGN },
947 { 0, 0, 0, 0, 0, 0, -1, 1, 9, STATE_DATA },
948 { 0, 0, 0, 0, 0, 0, -1, 1, 9, STATE_SIGN },
949 { 0, +3, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
950 { 0, +3, 0, 0, 0, 0, -1, 3, 0, STATE_START },
951 { 0, -3, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
952 { 0, -3, 0, 0, 0, 0, -1, 3, 0, STATE_START },
953 { 0, 0, 0, 0, 0, 0, -1, 1, 10, STATE_DATA },
954 { 0, 0, 0, 0, 0, 0, -1, 1, 10, STATE_SIGN },
955 { 0, 0, 0, 0, 0, 0, -1, 1, 11, STATE_DATA },
956 { 0, 0, 0, 0, 0, 0, -1, 1, 11, STATE_SIGN },
957 { 0, +4, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
958 { 0, +4, 0, 0, 0, 0, -1, 3, 0, STATE_START },
959 { 0, -4, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
960 { 0, -4, 0, 0, 0, 0, -1, 3, 0, STATE_START },
961 { 0, +1, 0, 0, 0, 0, -1, 2, 2, STATE_DATA },
962 { 0, +1, 0, 0, 0, 0, -1, 2, 2, STATE_SIGN },
963 { 0, +1, 0, 0, 0, 0, -1, 2, 3, STATE_DATA },
964 { 0, +1, 0, 0, 0, 0, -1, 2, 3, STATE_SIGN },
965 { 0, +1, 0, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
966 { 0, +1, 0, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
967 { 0, +1, 0, 0, 0, 0, -1, 4, 1, STATE_DATA },
968 { 0, +1, 0, 0, 0, 0, -1, 5, 0, STATE_START },
969 { 0, -1, 0, 0, 0, 0, -1, 2, 2, STATE_DATA },
970 { 0, -1, 0, 0, 0, 0, -1, 2, 2, STATE_SIGN },
971 { 0, -1, 0, 0, 0, 0, -1, 2, 3, STATE_DATA },
972 { 0, -1, 0, 0, 0, 0, -1, 2, 3, STATE_SIGN },
973 { 0, -1, 0, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
974 { 0, -1, 0, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
975 { 0, -1, 0, 0, 0, 0, -1, 4, 1, STATE_DATA },
976 { 0, -1, 0, 0, 0, 0, -1, 5, 0, STATE_START },
977 { 0, 0, 0, 0, 0, 0, -1, 1, 12, STATE_DATA },
978 { 0, 0, 0, 0, 0, 0, -1, 1, 12, STATE_SIGN },
979 { 0, 0, 0, 0, 0, 0, -1, 1, 13, STATE_DATA },
980 { 0, 0, 0, 0, 0, 0, -1, 1, 13, STATE_SIGN },
981 { 0, +5, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
982 { 0, +5, 0, 0, 0, 0, -1, 3, 0, STATE_START },
983 { 0, -5, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
984 { 0, -5, 0, 0, 0, 0, -1, 3, 0, STATE_START },
985 { 0, 0, 0, 0, 0, 0, -1, 1, 14, STATE_DATA },
986 { 0, 0, 0, 0, 0, 0, -1, 1, 14, STATE_SIGN },
987 { 0, 0, 0, 0, 0, 0, -1, 1, 15, STATE_DATA },
988 { 0, 0, 0, 0, 0, 0, -1, 1, 15, STATE_SIGN },
989 { 0, +6, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
990 { 0, +6, 0, 0, 0, 0, -1, 3, 0, STATE_START },
991 { 0, -6, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
992 { 0, -6, 0, 0, 0, 0, -1, 3, 0, STATE_START },
993 { 0, +2, 0, 0, 0, 0, -1, 2, 2, STATE_DATA },
994 { 0, +2, 0, 0, 0, 0, -1, 2, 2, STATE_SIGN },
995 { 0, +2, 0, 0, 0, 0, -1, 2, 3, STATE_DATA },
996 { 0, +2, 0, 0, 0, 0, -1, 2, 3, STATE_SIGN },
997 { 0, +2, 0, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
998 { 0, +2, 0, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
999 { 0, +2, 0, 0, 0, 0, -1, 4, 1, STATE_DATA },
1000 { 0, +2, 0, 0, 0, 0, -1, 5, 0, STATE_START },
1001 { 0, -2, 0, 0, 0, 0, -1, 2, 2, STATE_DATA },
1002 { 0, -2, 0, 0, 0, 0, -1, 2, 2, STATE_SIGN },
1003 { 0, -2, 0, 0, 0, 0, -1, 2, 3, STATE_DATA },
1004 { 0, -2, 0, 0, 0, 0, -1, 2, 3, STATE_SIGN },
1005 { 0, -2, 0, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
1006 { 0, -2, 0, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
1007 { 0, -2, 0, 0, 0, 0, -1, 4, 1, STATE_DATA },
1008 { 0, -2, 0, 0, 0, 0, -1, 5, 0, STATE_START },
1009 { 0, 0, 0, 0, 0, 0, -1, 2, 8, STATE_FOLLOW },
1010 { 0, 0, 0, 0, 0, 0, -1, 2, 9, STATE_FOLLOW },
1011 { 0, 0, +3, 0, 0, 0, -1, 3, 0, STATE_START },
1012 { 0, 0, -3, 0, 0, 0, -1, 3, 0, STATE_START },
1013 { 0, 0, 0, 0, 0, 0, -1, 2, 10, STATE_FOLLOW },
1014 { 0, 0, 0, 0, 0, 0, -1, 2, 11, STATE_FOLLOW },
1015 { 0, 0, +4, 0, 0, 0, -1, 3, 0, STATE_START },
1016 { 0, 0, -4, 0, 0, 0, -1, 3, 0, STATE_START },
1017 { 0, 0, +1, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
1018 { 0, 0, +1, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
1019 { 0, 0, +1, 0, 0, 0, -1, 4, 1, STATE_DATA },
1020 { 0, 0, +1, 0, 0, 0, -1, 5, 0, STATE_START },
1021 { 0, 0, -1, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
1022 { 0, 0, -1, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
1023 { 0, 0, -1, 0, 0, 0, -1, 4, 1, STATE_DATA },
1024 { 0, 0, -1, 0, 0, 0, -1, 5, 0, STATE_START },
1025 { 0, 0, 0, 0, 0, 0, -1, 2, 12, STATE_FOLLOW },
1026 { 0, 0, 0, 0, 0, 0, -1, 2, 13, STATE_FOLLOW },
1027 { 0, 0, +5, 0, 0, 0, -1, 3, 0, STATE_START },
1028 { 0, 0, -5, 0, 0, 0, -1, 3, 0, STATE_START },
1029 { 0, 0, 0, 0, 0, 0, -1, 2, 14, STATE_FOLLOW },
1030 { 0, 0, 0, 0, 0, 0, -1, 2, 15, STATE_FOLLOW },
1031 { 0, 0, +6, 0, 0, 0, -1, 3, 0, STATE_START },
1032 { 0, 0, -6, 0, 0, 0, -1, 3, 0, STATE_START },
1033 { 0, 0, +2, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
1034 { 0, 0, +2, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
1035 { 0, 0, +2, 0, 0, 0, -1, 4, 1, STATE_DATA },
1036 { 0, 0, +2, 0, 0, 0, -1, 5, 0, STATE_START },
1037 { 0, 0, -2, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
1038 { 0, 0, -2, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
1039 { 0, 0, -2, 0, 0, 0, -1, 4, 1, STATE_DATA },
1040 { 0, 0, -2, 0, 0, 0, -1, 5, 0, STATE_START },
1041 { 0, 0, 0, 0, 0, 0, -1, 3, 4, STATE_DATA },
1042 { 0, 0, 0, 0, 0, 0, -1, 3, 4, STATE_SIGN },
1043 { 0, 0, 0, 0, 0, 0, -1, 3, 5, STATE_DATA },
1044 { 0, 0, 0, 0, 0, 0, -1, 3, 5, STATE_SIGN },
1045 { 0, 0, 0, +1, 0, 0, -1, 4, 1, STATE_DATA },
1046 { 0, 0, 0, +1, 0, 0, -1, 5, 0, STATE_START },
1047 { 0, 0, 0, -1, 0, 0, -1, 4, 1, STATE_DATA },
1048 { 0, 0, 0, -1, 0, 0, -1, 5, 0, STATE_START },
1049 { 0, 0, 0, 0, 0, 0, -1, 3, 6, STATE_DATA },
1050 { 0, 0, 0, 0, 0, 0, -1, 3, 6, STATE_SIGN },
1051 { 0, 0, 0, 0, 0, 0, -1, 3, 7, STATE_DATA },
1052 { 0, 0, 0, 0, 0, 0, -1, 3, 7, STATE_SIGN },
1053 { 0, 0, 0, +2, 0, 0, -1, 4, 1, STATE_DATA },
1054 { 0, 0, 0, +2, 0, 0, -1, 5, 0, STATE_START },
1055 { 0, 0, 0, -2, 0, 0, -1, 4, 1, STATE_DATA },
1056 { 0, 0, 0, -2, 0, 0, -1, 5, 0, STATE_START },
1057 { 0, 0, 0, 0, 0, 0, -1, 4, 4, STATE_FOLLOW },
1058 { 0, 0, 0, 0, 0, 0, -1, 4, 5, STATE_FOLLOW },
1059 { 0, 0, 0, 0, +1, 0, -1, 5, 0, STATE_START },
1060 { 0, 0, 0, 0, -1, 0, -1, 5, 0, STATE_START },
1061 { 0, 0, 0, 0, 0, 0, -1, 4, 6, STATE_FOLLOW },
1062 { 0, 0, 0, 0, 0, 0, -1, 4, 7, STATE_FOLLOW },
1063 { 0, 0, 0, 0, +2, 0, -1, 5, 0, STATE_START },
1064 { 0, 0, 0, 0, -2, 0, -1, 5, 0, STATE_START },
1065 { 0, 0, 0, 0, 0, 0, -1, 5, 2, STATE_DATA },
1066 { 0, 0, 0, 0, 0, 0, -1, 5, 2, STATE_SIGN },
1067 { 0, 0, 0, 0, 0, 0, -1, 5, 3, STATE_DATA },
1068 { 0, 0, 0, 0, 0, 0, -1, 5, 3, STATE_SIGN },
1069 { 0, 0, 0, 0, 0, 0, -1, 6, 2, STATE_FOLLOW },
1070 { 0, 0, 0, 0, 0, 0, -1, 6, 3, STATE_FOLLOW },
1071 { 0, 0, 0, 0, 0, 0, -1, 7, 1, STATE_DATA },
1072 { 0, 0, 0, 0, 0, 0, -1, 8, 0, STATE_START },
1073 };
1074
1075 #define PROCESS_VALS \
1076 do { \
1077 val <<= lut.val0_bits; \
1078 val |= lut.val0; \
1079 dst[0] = (val - 1) * lut.sign; \
1080 dst[1] = lut.val1; \
1081 dst[2] = lut.val2; \
1082 dst[3] = lut.val3; \
1083 dst[4] = lut.val4; \
1084 dst[5] = 0; \
1085 dst[6] = 0; \
1086 dst[7] = 0; \
1087 if (lut.num) \
1088 val = lut.val; \
1089 dst += lut.num; \
1090 if (dst >= last) \
1091 return coeffs; \
1092 lut = dirac_golomb_lut[lut.state + *buf++]; \
1093 } while (0)
1094
1095 32076 int ff_dirac_golomb_read_16bit(const uint8_t *buf, int bytes,
1096 uint8_t *_dst, int coeffs)
1097 {
1098 32076 LUTState lut = dirac_golomb_lut[*buf++];
1099 32076 int16_t *dst = (int16_t *)_dst, *last = dst + coeffs;
1100 32076 uint16_t val = 0;
1101
1102
2/2
✓ Branch 0 taken 8831806 times.
✓ Branch 1 taken 162 times.
8831968 for (int i = 1; i < bytes; i++)
1103
4/4
✓ Branch 0 taken 7433867 times.
✓ Branch 1 taken 1397939 times.
✓ Branch 2 taken 31914 times.
✓ Branch 3 taken 8799892 times.
8831806 PROCESS_VALS;
1104
1105 /* Reader needs to be flushed */
1106
2/4
✓ Branch 0 taken 162 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 162 times.
✗ Branch 3 not taken.
162 PROCESS_VALS;
1107
1108 /* Still short of coeffs - try to guess and at least output what we have */
1109 if (lut.state != STATE_START)
1110 *dst++ = -((lut.state != STATE_SIGN ? (val << 1) | 1 : val) - 1);
1111
1112 return coeffs - (int)(last - dst);
1113 }
1114
1115 85536 int ff_dirac_golomb_read_32bit(const uint8_t *buf, int bytes,
1116 uint8_t *_dst, int coeffs)
1117 {
1118 85536 LUTState lut = dirac_golomb_lut[*buf++];
1119 85536 int32_t *dst = (int32_t *)_dst, *last = dst + coeffs;
1120 85536 uint32_t val = 0;
1121
1122
2/2
✓ Branch 0 taken 38627692 times.
✓ Branch 1 taken 394 times.
38628086 for (int i = 1; i < bytes; i++)
1123
4/4
✓ Branch 0 taken 26001949 times.
✓ Branch 1 taken 12625743 times.
✓ Branch 2 taken 85142 times.
✓ Branch 3 taken 38542550 times.
38627692 PROCESS_VALS;
1124
1125 /* Reader needs to be flushed */
1126
2/4
✓ Branch 0 taken 394 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 394 times.
✗ Branch 3 not taken.
394 PROCESS_VALS;
1127
1128 /* Still short of coeffs - try to guess and at least output what we have */
1129 if (lut.state != STATE_START)
1130 *dst++ = -((lut.state != STATE_SIGN ? (val << 1) | 1 : val) - 1);
1131
1132 return coeffs - (int)(last - dst);
1133 }
1134