1// Code generated by goyacc -o proto.y.go -p proto proto.y. DO NOT EDIT.
2
3//line proto.y:2
4package protoparse
5
6import __yyfmt__ "fmt"
7
8//line proto.y:2
9
10//lint:file-ignore SA4006 generated parser has unused values
11
12import (
13	"math"
14
15	"github.com/jhump/protoreflect/desc/protoparse/ast"
16)
17
18//line proto.y:16
19type protoSymType struct {
20	yys       int
21	file      *ast.FileNode
22	syn       *ast.SyntaxNode
23	fileDecl  ast.FileElement
24	fileDecls []ast.FileElement
25	pkg       *ast.PackageNode
26	imprt     *ast.ImportNode
27	msg       *ast.MessageNode
28	msgDecl   ast.MessageElement
29	msgDecls  []ast.MessageElement
30	fld       *ast.FieldNode
31	mapFld    *ast.MapFieldNode
32	mapType   *ast.MapTypeNode
33	grp       *ast.GroupNode
34	oo        *ast.OneOfNode
35	ooDecl    ast.OneOfElement
36	ooDecls   []ast.OneOfElement
37	ext       *ast.ExtensionRangeNode
38	resvd     *ast.ReservedNode
39	en        *ast.EnumNode
40	enDecl    ast.EnumElement
41	enDecls   []ast.EnumElement
42	env       *ast.EnumValueNode
43	extend    *ast.ExtendNode
44	extDecl   ast.ExtendElement
45	extDecls  []ast.ExtendElement
46	svc       *ast.ServiceNode
47	svcDecl   ast.ServiceElement
48	svcDecls  []ast.ServiceElement
49	mtd       *ast.RPCNode
50	rpcType   *ast.RPCTypeNode
51	rpcDecl   ast.RPCElement
52	rpcDecls  []ast.RPCElement
53	opt       *ast.OptionNode
54	opts      *compactOptionList
55	ref       *ast.FieldReferenceNode
56	optNms    *fieldRefList
57	cmpctOpts *ast.CompactOptionsNode
58	rng       *ast.RangeNode
59	rngs      *rangeList
60	names     *nameList
61	cid       *identList
62	tid       ast.IdentValueNode
63	sl        *valueList
64	msgField  *ast.MessageFieldNode
65	msgEntry  *messageFieldEntry
66	msgLit    *messageFieldList
67	v         ast.ValueNode
68	il        ast.IntValueNode
69	str       *stringList
70	s         *ast.StringLiteralNode
71	i         *ast.UintLiteralNode
72	f         *ast.FloatLiteralNode
73	id        *ast.IdentNode
74	b         *ast.RuneNode
75	err       error
76}
77
78const _STRING_LIT = 57346
79const _INT_LIT = 57347
80const _FLOAT_LIT = 57348
81const _NAME = 57349
82const _SYNTAX = 57350
83const _IMPORT = 57351
84const _WEAK = 57352
85const _PUBLIC = 57353
86const _PACKAGE = 57354
87const _OPTION = 57355
88const _TRUE = 57356
89const _FALSE = 57357
90const _INF = 57358
91const _NAN = 57359
92const _REPEATED = 57360
93const _OPTIONAL = 57361
94const _REQUIRED = 57362
95const _DOUBLE = 57363
96const _FLOAT = 57364
97const _INT32 = 57365
98const _INT64 = 57366
99const _UINT32 = 57367
100const _UINT64 = 57368
101const _SINT32 = 57369
102const _SINT64 = 57370
103const _FIXED32 = 57371
104const _FIXED64 = 57372
105const _SFIXED32 = 57373
106const _SFIXED64 = 57374
107const _BOOL = 57375
108const _STRING = 57376
109const _BYTES = 57377
110const _GROUP = 57378
111const _ONEOF = 57379
112const _MAP = 57380
113const _EXTENSIONS = 57381
114const _TO = 57382
115const _MAX = 57383
116const _RESERVED = 57384
117const _ENUM = 57385
118const _MESSAGE = 57386
119const _EXTEND = 57387
120const _SERVICE = 57388
121const _RPC = 57389
122const _STREAM = 57390
123const _RETURNS = 57391
124const _ERROR = 57392
125
126var protoToknames = [...]string{
127	"$end",
128	"error",
129	"$unk",
130	"_STRING_LIT",
131	"_INT_LIT",
132	"_FLOAT_LIT",
133	"_NAME",
134	"_SYNTAX",
135	"_IMPORT",
136	"_WEAK",
137	"_PUBLIC",
138	"_PACKAGE",
139	"_OPTION",
140	"_TRUE",
141	"_FALSE",
142	"_INF",
143	"_NAN",
144	"_REPEATED",
145	"_OPTIONAL",
146	"_REQUIRED",
147	"_DOUBLE",
148	"_FLOAT",
149	"_INT32",
150	"_INT64",
151	"_UINT32",
152	"_UINT64",
153	"_SINT32",
154	"_SINT64",
155	"_FIXED32",
156	"_FIXED64",
157	"_SFIXED32",
158	"_SFIXED64",
159	"_BOOL",
160	"_STRING",
161	"_BYTES",
162	"_GROUP",
163	"_ONEOF",
164	"_MAP",
165	"_EXTENSIONS",
166	"_TO",
167	"_MAX",
168	"_RESERVED",
169	"_ENUM",
170	"_MESSAGE",
171	"_EXTEND",
172	"_SERVICE",
173	"_RPC",
174	"_STREAM",
175	"_RETURNS",
176	"_ERROR",
177	"'='",
178	"';'",
179	"':'",
180	"'{'",
181	"'}'",
182	"'\\\\'",
183	"'/'",
184	"'?'",
185	"'.'",
186	"','",
187	"'>'",
188	"'<'",
189	"'+'",
190	"'-'",
191	"'('",
192	"')'",
193	"'['",
194	"']'",
195	"'*'",
196	"'&'",
197	"'^'",
198	"'%'",
199	"'$'",
200	"'#'",
201	"'@'",
202	"'!'",
203	"'~'",
204	"'`'",
205}
206
207var protoStatenames = [...]string{}
208
209const protoEofCode = 1
210const protoErrCode = 2
211const protoInitialStackSize = 16
212
213//line proto.y:1191
214
215//line yacctab:1
216var protoExca = [...]int{
217	-1, 0,
218	1, 4,
219	-2, 0,
220	-1, 1,
221	1, -1,
222	-2, 0,
223	-1, 2,
224	1, 1,
225	-2, 0,
226	-1, 3,
227	1, 2,
228	-2, 0,
229	-1, 22,
230	1, 3,
231	-2, 0,
232	-1, 95,
233	55, 178,
234	-2, 0,
235	-1, 96,
236	55, 166,
237	-2, 0,
238	-1, 97,
239	55, 195,
240	-2, 0,
241	-1, 99,
242	55, 204,
243	-2, 0,
244	-1, 110,
245	55, 53,
246	-2, 0,
247	-1, 289,
248	55, 51,
249	61, 51,
250	-2, 0,
251	-1, 352,
252	61, 53,
253	-2, 0,
254	-1, 367,
255	55, 116,
256	-2, 0,
257	-1, 401,
258	61, 53,
259	-2, 0,
260	-1, 489,
261	61, 53,
262	-2, 0,
263	-1, 533,
264	55, 178,
265	-2, 0,
266	-1, 537,
267	55, 178,
268	-2, 0,
269	-1, 541,
270	55, 178,
271	-2, 0,
272	-1, 559,
273	55, 216,
274	-2, 0,
275	-1, 566,
276	55, 178,
277	-2, 0,
278	-1, 569,
279	55, 178,
280	-2, 0,
281	-1, 572,
282	55, 178,
283	-2, 0,
284	-1, 593,
285	55, 178,
286	-2, 0,
287	-1, 605,
288	55, 178,
289	-2, 0,
290}
291
292const protoPrivate = 57344
293
294const protoLast = 2321
295
296var protoAct = [...]int{
297	31, 118, 117, 125, 8, 396, 8, 8, 488, 81,
298	486, 414, 363, 288, 579, 421, 328, 107, 77, 79,
299	80, 82, 84, 326, 317, 311, 8, 106, 105, 124,
300	281, 228, 139, 26, 177, 593, 416, 591, 30, 525,
301	555, 553, 85, 551, 541, 87, 88, 89, 364, 539,
302	537, 535, 364, 531, 75, 364, 364, 364, 364, 533,
303	524, 519, 512, 364, 364, 500, 364, 473, 364, 362,
304	502, 405, 364, 560, 404, 329, 364, 364, 523, 397,
305	364, 329, 364, 349, 364, 29, 329, 116, 94, 350,
306	110, 348, 563, 109, 77, 320, 562, 584, 352, 349,
307	178, 104, 550, 282, 529, 98, 349, 348, 530, 492,
308	349, 293, 347, 103, 348, 493, 583, 477, 348, 302,
309	346, 526, 503, 472, 388, 371, 365, 230, 511, 185,
310	115, 339, 321, 93, 330, 310, 91, 314, 315, 344,
311	330, 304, 306, 308, 14, 330, 285, 582, 605, 572,
312	4, 15, 569, 566, 16, 17, 318, 17, 17, 558,
313	367, 559, 14, 319, 316, 285, 582, 99, 97, 15,
314	96, 95, 16, 17, 603, 597, 17, 17, 577, 576,
315	178, 575, 570, 567, 564, 19, 18, 20, 21, 557,
316	549, 286, 543, 515, 13, 507, 284, 581, 413, 340,
317	595, 387, 318, 19, 18, 20, 21, 370, 369, 185,
318	286, 323, 13, 342, 333, 284, 581, 324, 303, 287,
319	102, 101, 100, 90, 86, 25, 547, 546, 504, 480,
320	479, 478, 411, 410, 409, 408, 407, 337, 406, 394,
321	368, 361, 325, 334, 335, 336, 92, 24, 482, 418,
322	389, 366, 122, 11, 574, 11, 11, 230, 573, 332,
323	338, 373, 374, 375, 376, 377, 378, 379, 380, 381,
324	382, 383, 384, 120, 10, 11, 10, 10, 121, 9,
325	518, 9, 9, 517, 282, 419, 516, 343, 29, 5,
326	293, 300, 298, 23, 27, 28, 10, 29, 313, 499,
327	498, 9, 299, 345, 353, 355, 356, 357, 358, 359,
328	360, 341, 23, 297, 295, 497, 496, 495, 494, 481,
329	351, 470, 313, 412, 296, 390, 29, 3, 283, 280,
330	22, 12, 227, 179, 176, 391, 392, 393, 123, 327,
331	312, 180, 386, 385, 128, 420, 137, 127, 424, 126,
332	229, 109, 119, 293, 423, 289, 290, 427, 236, 134,
333	429, 395, 237, 140, 183, 77, 402, 431, 239, 143,
334	372, 422, 108, 292, 76, 578, 415, 7, 400, 398,
335	6, 2, 1, 0, 0, 0, 0, 0, 0, 318,
336	0, 417, 0, 0, 0, 0, 471, 0, 0, 474,
337	109, 0, 293, 0, 0, 0, 476, 484, 0, 0,
338	0, 0, 475, 0, 0, 490, 0, 0, 0, 0,
339	0, 0, 0, 0, 422, 501, 0, 0, 508, 509,
340	0, 0, 0, 0, 426, 0, 506, 0, 0, 432,
341	433, 434, 435, 436, 437, 17, 438, 439, 440, 441,
342	0, 0, 510, 442, 443, 444, 445, 446, 447, 448,
343	449, 450, 451, 452, 453, 454, 455, 456, 428, 457,
344	458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
345	468, 469, 514, 513, 425, 0, 0, 505, 521, 0,
346	293, 430, 0, 522, 520, 0, 0, 0, 0, 0,
347	0, 0, 0, 527, 77, 109, 0, 532, 534, 536,
348	538, 540, 542, 545, 0, 544, 0, 0, 0, 0,
349	0, 0, 0, 0, 0, 0, 0, 109, 0, 552,
350	554, 556, 0, 548, 0, 0, 565, 561, 0, 0,
351	568, 0, 0, 0, 571, 0, 0, 0, 0, 0,
352	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
353	0, 0, 0, 580, 0, 0, 0, 302, 0, 586,
354	302, 0, 588, 302, 0, 590, 0, 0, 0, 0,
355	0, 0, 580, 0, 109, 109, 592, 594, 302, 0,
356	302, 0, 302, 596, 598, 599, 604, 0, 0, 0,
357	0, 0, 0, 0, 0, 0, 302, 0, 607, 302,
358	487, 0, 29, 114, 111, 32, 33, 34, 35, 36,
359	37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
360	47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
361	57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
362	67, 68, 69, 70, 71, 72, 73, 74, 0, 0,
363	0, 0, 110, 0, 0, 0, 0, 0, 0, 0,
364	489, 113, 112, 0, 0, 0, 485, 29, 114, 111,
365	32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
366	42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
367	52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
368	62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
369	72, 73, 74, 0, 0, 0, 0, 110, 0, 0,
370	0, 0, 0, 0, 0, 401, 113, 112, 0, 0,
371	399, 29, 114, 111, 32, 33, 34, 35, 36, 37,
372	38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
373	48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
374	58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
375	68, 69, 70, 71, 72, 73, 74, 0, 0, 0,
376	0, 110, 0, 0, 0, 0, 0, 0, 0, 489,
377	113, 112, 29, 114, 111, 32, 33, 34, 35, 36,
378	37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
379	47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
380	57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
381	67, 68, 69, 70, 71, 72, 73, 74, 0, 0,
382	0, 0, 110, 0, 0, 0, 0, 0, 528, 0,
383	0, 113, 112, 32, 33, 34, 35, 36, 37, 38,
384	39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
385	49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
386	59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
387	69, 70, 71, 72, 73, 74, 0, 0, 0, 0,
388	0, 0, 0, 0, 0, 0, 0, 0, 0, 491,
389	0, 0, 0, 294, 32, 33, 34, 35, 36, 37,
390	38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
391	48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
392	58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
393	68, 69, 70, 71, 72, 73, 74, 0, 0, 0,
394	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
395	403, 0, 0, 0, 294, 32, 33, 34, 35, 36,
396	37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
397	47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
398	57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
399	67, 68, 69, 70, 71, 72, 73, 74, 0, 0,
400	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
401	0, 291, 0, 0, 0, 294, 32, 33, 34, 35,
402	36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
403	46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
404	56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
405	66, 67, 68, 69, 70, 71, 72, 73, 74, 0,
406	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
407	0, 0, 0, 0, 0, 0, 294, 32, 33, 34,
408	35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
409	45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
410	55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
411	65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
412	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
413	0, 130, 0, 0, 0, 78, 144, 145, 146, 147,
414	148, 149, 17, 150, 151, 152, 153, 133, 132, 131,
415	154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
416	164, 165, 166, 167, 168, 169, 136, 142, 135, 170,
417	171, 138, 19, 18, 20, 172, 173, 174, 175, 0,
418	0, 129, 0, 0, 608, 130, 0, 0, 141, 0,
419	144, 145, 146, 147, 148, 149, 17, 150, 151, 152,
420	153, 133, 132, 131, 154, 155, 156, 157, 158, 159,
421	160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
422	136, 142, 135, 170, 171, 138, 19, 18, 20, 172,
423	173, 174, 175, 0, 0, 129, 0, 0, 606, 130,
424	0, 0, 141, 0, 144, 145, 146, 147, 148, 149,
425	17, 150, 151, 152, 153, 133, 132, 131, 154, 155,
426	156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
427	166, 167, 168, 169, 136, 142, 135, 170, 171, 138,
428	19, 18, 20, 172, 173, 174, 175, 0, 0, 129,
429	0, 0, 602, 130, 0, 0, 141, 0, 144, 145,
430	146, 147, 148, 149, 17, 150, 151, 152, 153, 133,
431	132, 131, 154, 155, 156, 157, 158, 159, 160, 161,
432	162, 163, 164, 165, 166, 167, 168, 169, 136, 142,
433	135, 170, 171, 138, 19, 18, 20, 172, 173, 174,
434	175, 0, 0, 129, 0, 0, 601, 130, 0, 0,
435	141, 0, 144, 145, 146, 147, 148, 149, 17, 150,
436	151, 152, 153, 133, 132, 131, 154, 155, 156, 157,
437	158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
438	168, 169, 136, 142, 135, 170, 171, 138, 19, 18,
439	20, 172, 173, 174, 175, 0, 0, 129, 0, 0,
440	600, 130, 0, 0, 141, 0, 144, 145, 146, 147,
441	148, 149, 17, 150, 151, 152, 153, 133, 132, 131,
442	154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
443	164, 165, 166, 167, 168, 169, 136, 142, 135, 170,
444	171, 138, 19, 18, 20, 172, 173, 174, 175, 0,
445	0, 129, 0, 0, 589, 130, 0, 0, 141, 0,
446	144, 145, 146, 147, 148, 149, 17, 150, 151, 152,
447	153, 133, 132, 131, 154, 155, 156, 157, 158, 159,
448	160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
449	136, 142, 135, 170, 171, 138, 19, 18, 20, 172,
450	173, 174, 175, 0, 0, 129, 0, 0, 587, 130,
451	0, 0, 141, 0, 144, 145, 146, 147, 148, 149,
452	17, 150, 151, 152, 153, 133, 132, 131, 154, 155,
453	156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
454	166, 167, 168, 169, 136, 142, 135, 170, 171, 138,
455	19, 18, 20, 172, 173, 174, 175, 0, 0, 129,
456	0, 0, 585, 232, 0, 0, 141, 0, 240, 241,
457	242, 243, 244, 245, 246, 247, 248, 249, 250, 235,
458	234, 233, 251, 252, 253, 254, 255, 256, 257, 258,
459	259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
460	269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
461	279, 0, 0, 231, 0, 0, 331, 130, 0, 0,
462	238, 0, 144, 145, 146, 147, 148, 149, 17, 150,
463	151, 152, 153, 133, 132, 131, 154, 155, 156, 157,
464	158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
465	168, 169, 136, 142, 135, 170, 171, 138, 19, 18,
466	20, 172, 173, 174, 175, 0, 0, 129, 0, 0,
467	301, 130, 0, 0, 141, 0, 144, 145, 146, 147,
468	148, 149, 17, 150, 151, 152, 153, 133, 132, 131,
469	154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
470	164, 165, 166, 167, 168, 169, 136, 142, 135, 170,
471	171, 138, 19, 18, 20, 172, 173, 174, 175, 0,
472	0, 129, 0, 0, 232, 0, 0, 0, 141, 240,
473	241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
474	235, 234, 233, 251, 252, 253, 254, 255, 256, 257,
475	258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
476	268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
477	278, 279, 0, 0, 231, 0, 0, 354, 0, 0,
478	0, 238, 32, 33, 34, 35, 36, 37, 38, 39,
479	40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
480	50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
481	60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
482	70, 71, 72, 73, 74, 0, 0, 0, 0, 0,
483	0, 0, 0, 0, 83, 32, 33, 34, 35, 36,
484	37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
485	47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
486	57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
487	67, 68, 69, 70, 71, 72, 73, 74, 0, 0,
488	0, 0, 0, 0, 0, 0, 0, 83, 32, 33,
489	34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
490	44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
491	54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
492	64, 65, 66, 67, 68, 69, 70, 71, 72, 483,
493	74, 0, 0, 0, 0, 0, 0, 0, 0, 0,
494	83, 32, 33, 34, 35, 36, 37, 38, 39, 40,
495	41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
496	51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
497	309, 62, 63, 64, 65, 66, 67, 68, 69, 70,
498	71, 72, 73, 74, 0, 0, 0, 0, 0, 0,
499	0, 0, 0, 83, 32, 33, 34, 35, 36, 37,
500	38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
501	48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
502	58, 59, 60, 307, 62, 63, 64, 65, 66, 67,
503	68, 69, 70, 71, 72, 73, 74, 0, 0, 0,
504	0, 0, 0, 0, 0, 0, 83, 32, 33, 34,
505	35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
506	45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
507	55, 56, 57, 58, 59, 60, 305, 62, 63, 64,
508	65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
509	0, 0, 0, 0, 0, 426, 0, 0, 0, 83,
510	432, 433, 434, 435, 436, 437, 17, 438, 439, 440,
511	441, 0, 0, 0, 442, 443, 444, 445, 446, 447,
512	448, 449, 450, 451, 452, 453, 454, 455, 456, 428,
513	457, 458, 459, 460, 461, 462, 463, 464, 465, 466,
514	467, 468, 469, 0, 0, 425, 0, 0, 182, 0,
515	0, 0, 430, 186, 187, 188, 189, 190, 191, 17,
516	192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
517	202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
518	212, 213, 214, 215, 216, 217, 218, 219, 184, 220,
519	221, 222, 223, 224, 225, 226, 0, 182, 181, 0,
520	0, 322, 186, 187, 188, 189, 190, 191, 17, 192,
521	193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
522	203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
523	213, 214, 215, 216, 217, 218, 219, 184, 220, 221,
524	222, 223, 224, 225, 226, 0, 0, 181, 32, 33,
525	34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
526	44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
527	54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
528	64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
529	74,
530}
531
532var protoPact = [...]int{
533	142, -1000, 160, 160, 196, -1000, -1000, -1000, -1000, -1000,
534	-1000, -1000, -1000, -1000, 173, 284, 2271, 1100, 2271, 2271,
535	1858, 2271, 160, -1000, 322, -1000, 172, 322, 322, 322,
536	171, 77, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
537	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
538	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
539	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
540	-1000, -1000, -1000, -1000, -1000, 195, 74, -1000, 1858, 117,
541	116, 114, -1000, 2271, 113, 170, -1000, 169, 168, -1000,
542	-1000, 2271, 798, 1100, 21, 1699, 2225, 1752, -1000, 163,
543	-1000, -1000, -1000, -1000, 167, -1000, -1000, -1000, -1000, -1000,
544	1039, -1000, 308, 286, -1000, -1000, -1000, 1645, -1000, -1000,
545	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
546	166, 2070, 2017, 1964, 2271, 317, 2271, 2271, 293, -1000,
547	-1000, 2271, 33, 73, -1000, -1000, -1000, -1000, -1000, -1000,
548	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
549	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
550	-1000, -1000, -1000, -1000, -1000, -1000, 2176, -1000, -1000, -1000,
551	-1000, -1000, 165, 191, 81, -1000, -1000, -1000, -1000, -1000,
552	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
553	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
554	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
555	-1000, -1000, -1000, -1000, -1000, -1000, -1000, 1591, -1000, -1000,
556	-1000, -1000, 162, 2070, 2017, 1964, 2271, -1000, 2271, 72,
557	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
558	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
559	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
560	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
561	144, -1000, -1000, -1000, -1000, 161, 2271, -1000, 84, 1039,
562	60, 58, 36, -1000, 1805, -1000, -1000, -1000, -1000, -1000,
563	-1000, -1000, -1000, -1000, 2271, 2271, 2271, 2271, 2271, 2271,
564	190, 17, 66, 211, 106, 189, 156, 155, 65, -1000,
565	238, 2271, -1000, -1000, -1000, 70, 149, 64, 210, -1000,
566	320, -1000, -1000, -1000, 2271, 2271, 2271, 188, -1000, 2271,
567	-1000, -1000, -1000, 14, -1000, -1000, -1000, -1000, -1000, -1000,
568	673, -1000, 978, 6, 3, 187, 185, 184, 183, 182,
569	181, 318, -1000, 146, 1100, 317, 244, 2123, 316, -1000,
570	-1000, 322, 63, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
571	-1000, -1000, -1000, -1000, -1000, -1000, 15, -1000, 70, 76,
572	-1000, 180, 179, 178, 314, -1000, 199, 1911, -1000, 608,
573	-1000, 917, 48, 54, -1000, -1000, 313, 312, 311, 310,
574	295, 294, 13, -1000, 2, 62, 177, -1000, -1000, -1000,
575	432, -1000, -1000, -1000, -1000, -1000, 143, 2271, 2271, -1000,
576	2271, 69, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
577	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
578	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
579	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
580	10, -1000, 1858, -1000, 141, -1000, -1000, -1000, 281, 278,
581	275, 9, 14, 1858, 12, -1000, -8, -29, 61, 856,
582	43, 47, -1000, -1000, 1, 5, -1, -4, -3, -10,
583	-1000, 140, -1000, 1100, 798, -1000, -1000, -1000, 176, 175,
584	-1000, 2271, -1000, 138, 41, -1000, -9, -11, -12, -1000,
585	137, 107, 7, -1000, -1000, -1000, 737, 35, 31, -1000,
586	-1000, -1000, 132, 1699, 99, -1000, 131, 1699, 98, -1000,
587	130, 1699, 95, -1000, -1000, -1000, 253, 249, -1000, -1000,
588	-1000, -1000, 129, -1000, 127, -1000, 126, -1000, -1000, 164,
589	-1000, -1000, 56, 37, -1000, 1537, 1699, -1000, 1483, 1699,
590	-1000, 1429, 1699, -15, -19, -1000, -1000, -1000, 145, -1000,
591	-1000, -1000, 123, 737, 737, -1000, 1375, -1000, 1321, -1000,
592	1267, -1000, 122, 1699, 94, -1000, -1000, -1000, -1000, -1000,
593	-1000, -1000, -1000, -1000, 1213, 1699, -1000, 1159, -1000,
594}
595
596var protoPgo = [...]int{
597	0, 382, 381, 289, 327, 380, 377, 3, 376, 11,
598	14, 375, 374, 373, 36, 12, 8, 28, 27, 372,
599	16, 0, 370, 369, 368, 367, 364, 21, 363, 362,
600	360, 9, 359, 358, 357, 10, 356, 355, 13, 354,
601	352, 350, 349, 29, 348, 347, 346, 278, 1, 2,
602	15, 345, 24, 344, 341, 32, 340, 339, 25, 23,
603	338, 273, 34, 334, 333, 252, 31, 332, 17, 331,
604	30, 329, 328, 5,
605}
606
607var protoR1 = [...]int{
608	0, 1, 1, 1, 1, 4, 4, 3, 3, 3,
609	3, 3, 3, 3, 3, 3, 3, 2, 5, 5,
610	5, 6, 27, 27, 28, 28, 29, 29, 30, 30,
611	7, 14, 14, 12, 12, 16, 16, 17, 17, 17,
612	19, 19, 19, 19, 19, 19, 19, 19, 68, 68,
613	18, 38, 38, 38, 37, 37, 37, 37, 37, 37,
614	36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
615	13, 13, 13, 35, 35, 35, 35, 35, 35, 31,
616	31, 32, 32, 33, 33, 34, 34, 40, 40, 40,
617	40, 40, 40, 40, 40, 41, 41, 41, 41, 41,
618	41, 41, 41, 15, 9, 9, 8, 43, 43, 43,
619	43, 43, 43, 42, 51, 51, 51, 50, 50, 50,
620	50, 50, 50, 39, 39, 44, 44, 45, 45, 46,
621	22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
622	22, 22, 60, 60, 58, 58, 56, 56, 56, 59,
623	59, 57, 57, 57, 20, 20, 53, 53, 54, 54,
624	55, 52, 52, 61, 63, 63, 63, 62, 62, 62,
625	62, 62, 62, 64, 64, 47, 49, 49, 49, 48,
626	48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
627	48, 48, 65, 67, 67, 67, 66, 66, 66, 66,
628	66, 69, 71, 71, 71, 70, 70, 70, 70, 70,
629	72, 72, 73, 73, 11, 11, 11, 10, 10, 10,
630	10, 23, 23, 23, 23, 23, 23, 23, 23, 23,
631	23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
632	23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
633	23, 23, 23, 23, 24, 24, 24, 24, 24, 24,
634	24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
635	24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
636	24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
637	24, 24, 24, 24, 26, 26, 26, 26, 26, 26,
638	26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
639	26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
640	26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
641	26, 26, 26, 26, 26, 25, 25, 25, 25, 25,
642	25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
643	25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
644	25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
645	25, 25, 25, 25, 21, 21, 21, 21, 21, 21,
646	21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
647	21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
648	21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
649	21, 21, 21, 21, 21, 21, 21,
650}
651
652var protoR2 = [...]int{
653	0, 1, 1, 2, 0, 2, 1, 1, 1, 1,
654	1, 1, 1, 1, 1, 2, 1, 4, 3, 4,
655	4, 3, 1, 3, 1, 3, 1, 3, 1, 3,
656	5, 1, 3, 1, 3, 1, 1, 1, 1, 1,
657	1, 2, 2, 2, 2, 1, 2, 2, 1, 2,
658	3, 1, 2, 0, 1, 2, 2, 2, 2, 1,
659	3, 4, 5, 5, 3, 2, 5, 4, 5, 4,
660	1, 3, 3, 1, 3, 3, 5, 3, 5, 1,
661	2, 1, 2, 1, 2, 1, 2, 6, 6, 6,
662	7, 7, 7, 5, 6, 6, 6, 6, 7, 7,
663	7, 5, 6, 3, 1, 3, 3, 8, 8, 8,
664	9, 9, 9, 5, 2, 1, 0, 1, 1, 1,
665	1, 2, 1, 5, 6, 7, 8, 5, 6, 6,
666	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
667	1, 1, 3, 4, 1, 3, 1, 3, 3, 1,
668	3, 1, 3, 3, 1, 2, 3, 1, 3, 1,
669	3, 1, 3, 5, 2, 1, 0, 1, 1, 1,
670	1, 2, 1, 4, 5, 5, 2, 1, 0, 1,
671	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
672	2, 1, 5, 2, 1, 0, 1, 1, 1, 2,
673	1, 5, 2, 1, 0, 1, 1, 1, 2, 1,
674	6, 8, 4, 3, 2, 1, 0, 1, 1, 2,
675	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
676	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
677	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
678	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
679	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
680	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
681	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
682	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
683	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
684	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
685	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
686	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
687	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
688	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
689	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
690	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
691	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
692	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
693	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
694	1, 1, 1, 1, 1, 1, 1,
695}
696
697var protoChk = [...]int{
698	-1000, -1, -2, -4, 8, -3, -5, -6, -7, -47,
699	-61, -65, -69, 52, 2, 9, 12, 13, 44, 43,
700	45, 46, -4, -3, 51, 52, -68, 10, 11, 4,
701	-27, -21, 7, 8, 9, 10, 11, 12, 13, 14,
702	15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
703	25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
704	35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
705	45, 46, 47, 48, 49, -14, -12, -21, 65, -21,
706	-21, -31, -27, 59, -21, -68, 52, -68, -68, -68,
707	52, 59, 51, 59, -31, 54, 54, 54, -27, 54,
708	52, 52, 52, -27, -16, -17, -18, -68, -19, -21,
709	54, 6, 64, 63, 5, -14, 66, -49, -48, -40,
710	-61, -47, -65, -60, -43, -7, -42, -45, -53, 52,
711	2, 20, 19, 18, -32, 39, 37, -46, 42, -55,
712	-28, 59, 38, -23, 7, 8, 9, 10, 11, 12,
713	14, 15, 16, 17, 21, 22, 23, 24, 25, 26,
714	27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
715	40, 41, 46, 47, 48, 49, -63, -62, -7, -64,
716	-54, 52, 2, -26, 42, -55, 7, 8, 9, 10,
717	11, 12, 14, 15, 16, 17, 18, 19, 20, 21,
718	22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
719	32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
720	43, 44, 45, 46, 47, 48, 49, -67, -66, -41,
721	-43, 52, 2, 20, 19, 18, -33, -29, 59, -24,
722	7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
723	17, 21, 22, 23, 24, 25, 26, 27, 28, 29,
724	30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
725	40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
726	-71, -70, -7, -72, 52, 2, 47, 52, -38, -37,
727	-36, 2, -13, -21, 67, 6, 16, 5, 6, 16,
728	5, 55, -48, 52, -31, 36, -31, 36, -31, 36,
729	-21, -58, -56, 5, -21, -21, -58, -52, -68, -27,
730	62, 59, 55, -62, 52, 51, -59, -57, -20, 5,
731	64, 55, -66, 52, -31, -31, -31, -21, -27, 59,
732	55, -70, 52, -21, 55, -38, 60, 52, 60, 52,
733	53, -18, 62, -31, 2, -21, -21, -21, -21, -21,
734	-21, 51, 52, -15, 67, 60, 40, 54, 51, 52,
735	52, 60, -22, 23, 24, 25, 26, 27, 28, 29,
736	30, 31, 32, 33, 34, -27, -20, 52, 60, 40,
737	5, -21, -21, -21, 51, -27, -73, 65, -17, 67,
738	-18, 62, -38, 2, 68, 68, 51, 51, 51, 51,
739	51, 51, 5, 52, -9, -8, -14, -58, 5, 41,
740	-51, -50, -7, -39, -44, 52, 2, -34, 36, -30,
741	59, -25, 7, 8, 9, 10, 11, 12, 14, 15,
742	16, 17, 21, 22, 23, 24, 25, 26, 27, 28,
743	29, 30, 31, 32, 33, 34, 35, 37, 38, 39,
744	40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
745	5, -52, 60, 52, -15, -59, -20, 41, 51, 51,
746	51, 5, 49, 48, -31, 68, -35, 2, -16, 62,
747	-38, 2, 61, 61, 5, 5, 5, 5, 5, 5,
748	52, -15, 68, 60, 51, 55, -50, 52, -21, -21,
749	-27, 59, 52, -15, -31, 52, 5, 5, 5, 52,
750	-15, -73, -31, 66, 68, 68, 60, -38, 2, 61,
751	61, 52, -15, 54, -15, 52, -15, 54, -15, 52,
752	-15, 54, -15, 52, -9, -16, 51, 51, -27, 52,
753	61, 52, -15, 52, -15, 52, -15, 52, 52, 54,
754	66, -35, 61, 61, 52, -49, 54, 52, -49, 54,
755	52, -49, 54, 5, 5, 52, 52, 52, -11, -10,
756	-7, 52, 2, 60, 60, 55, -49, 55, -49, 55,
757	-49, 52, -15, 54, -15, 55, -10, 52, -35, -35,
758	55, 55, 55, 52, -49, 54, 55, -49, 55,
759}
760
761var protoDef = [...]int{
762	-2, -2, -2, -2, 0, 6, 7, 8, 9, 10,
763	11, 12, 13, 14, 16, 0, 0, 0, 0, 0,
764	0, 0, -2, 5, 0, 15, 0, 0, 0, 48,
765	0, 22, 374, 375, 376, 377, 378, 379, 380, 381,
766	382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
767	392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
768	402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
769	412, 413, 414, 415, 416, 0, 31, 33, 0, 0,
770	0, 0, 79, 0, 0, 0, 18, 0, 0, 49,
771	21, 0, 0, 0, 0, -2, -2, -2, 80, -2,
772	17, 19, 20, 23, 0, 35, 36, 37, 38, 39,
773	-2, 40, 0, 0, 45, 32, 34, 0, 177, 179,
774	180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
775	191, 0, 0, 0, 0, 0, 0, 0, 0, 157,
776	81, 0, 247, 24, 221, 222, 223, 224, 225, 226,
777	227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
778	237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
779	248, 249, 250, 251, 252, 253, 0, 165, 167, 168,
780	169, 170, 172, 0, 0, 159, 294, 295, 296, 297,
781	298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
782	308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
783	318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
784	328, 329, 330, 331, 332, 333, 334, 0, 194, 196,
785	197, 198, 200, 0, 0, 0, 0, 83, 0, 26,
786	254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
787	264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
788	274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
789	284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
790	0, 203, 205, 206, 207, 209, 0, 30, 0, -2,
791	54, 59, 0, 70, 0, 41, 44, 47, 42, 43,
792	46, 175, 176, 190, 0, 403, 0, 403, 0, 403,
793	0, 0, 144, 146, 0, 0, 0, 0, 161, 82,
794	0, 0, 163, 164, 171, 0, 0, 149, 151, 154,
795	0, 192, 193, 199, 0, 0, 0, 0, 84, 0,
796	201, 202, 208, 0, 50, 52, 55, 56, 57, 58,
797	0, 65, -2, 0, 0, 0, 0, 0, 0, 0,
798	0, 0, 142, 0, 0, 0, 0, -2, 0, 156,
799	160, 0, 0, 130, 131, 132, 133, 134, 135, 136,
800	137, 138, 139, 140, 141, 25, 0, 158, 0, 0,
801	155, 0, 0, 0, 0, 27, 0, 0, 60, 0,
802	64, -2, 0, 59, 71, 72, 0, 0, 0, 0,
803	0, 0, 0, 143, 0, 104, 0, 145, 147, 148,
804	0, 115, 117, 118, 119, 120, 122, 0, 360, 85,
805	0, 28, 335, 336, 337, 338, 339, 340, 341, 342,
806	343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
807	353, 354, 355, 356, 357, 358, 359, 361, 362, 363,
808	364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
809	0, 162, 0, 173, 0, 150, 152, 153, 0, 0,
810	0, 0, 0, 415, 0, 61, 0, 0, 73, -2,
811	0, 59, 67, 69, 0, 0, 0, 0, 0, 0,
812	93, 0, 103, 0, 0, 113, 114, 121, 0, 0,
813	86, 0, 127, 0, 0, 174, 0, 0, 0, 101,
814	0, 0, 0, 213, 62, 63, 0, 0, 59, 66,
815	68, 87, 0, -2, 0, 88, 0, -2, 0, 89,
816	0, -2, 0, 94, 105, 106, 0, 0, 29, 128,
817	129, 95, 0, 96, 0, 97, 0, 102, 210, -2,
818	212, 74, 75, 77, 90, 0, -2, 91, 0, -2,
819	92, 0, -2, 0, 0, 98, 99, 100, 0, 215,
820	217, 218, 220, 0, 0, 107, 0, 108, 0, 109,
821	0, 123, 0, -2, 0, 211, 214, 219, 76, 78,
822	110, 111, 112, 124, 0, -2, 125, 0, 126,
823}
824
825var protoTok1 = [...]int{
826	1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
827	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
828	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
829	3, 3, 3, 76, 3, 74, 73, 72, 70, 3,
830	65, 66, 69, 63, 60, 64, 59, 57, 3, 3,
831	3, 3, 3, 3, 3, 3, 3, 3, 53, 52,
832	62, 51, 61, 58, 75, 3, 3, 3, 3, 3,
833	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
834	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
835	3, 67, 56, 68, 71, 3, 78, 3, 3, 3,
836	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
837	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
838	3, 3, 3, 54, 3, 55, 77,
839}
840
841var protoTok2 = [...]int{
842	2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
843	12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
844	22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
845	32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
846	42, 43, 44, 45, 46, 47, 48, 49, 50,
847}
848
849var protoTok3 = [...]int{
850	0,
851}
852
853var protoErrorMessages = [...]struct {
854	state int
855	token int
856	msg   string
857}{}
858
859//line yaccpar:1
860
861/*	parser for yacc output	*/
862
863var (
864	protoDebug        = 0
865	protoErrorVerbose = false
866)
867
868type protoLexer interface {
869	Lex(lval *protoSymType) int
870	Error(s string)
871}
872
873type protoParser interface {
874	Parse(protoLexer) int
875	Lookahead() int
876}
877
878type protoParserImpl struct {
879	lval  protoSymType
880	stack [protoInitialStackSize]protoSymType
881	char  int
882}
883
884func (p *protoParserImpl) Lookahead() int {
885	return p.char
886}
887
888func protoNewParser() protoParser {
889	return &protoParserImpl{}
890}
891
892const protoFlag = -1000
893
894func protoTokname(c int) string {
895	if c >= 1 && c-1 < len(protoToknames) {
896		if protoToknames[c-1] != "" {
897			return protoToknames[c-1]
898		}
899	}
900	return __yyfmt__.Sprintf("tok-%v", c)
901}
902
903func protoStatname(s int) string {
904	if s >= 0 && s < len(protoStatenames) {
905		if protoStatenames[s] != "" {
906			return protoStatenames[s]
907		}
908	}
909	return __yyfmt__.Sprintf("state-%v", s)
910}
911
912func protoErrorMessage(state, lookAhead int) string {
913	const TOKSTART = 4
914
915	if !protoErrorVerbose {
916		return "syntax error"
917	}
918
919	for _, e := range protoErrorMessages {
920		if e.state == state && e.token == lookAhead {
921			return "syntax error: " + e.msg
922		}
923	}
924
925	res := "syntax error: unexpected " + protoTokname(lookAhead)
926
927	// To match Bison, suggest at most four expected tokens.
928	expected := make([]int, 0, 4)
929
930	// Look for shiftable tokens.
931	base := protoPact[state]
932	for tok := TOKSTART; tok-1 < len(protoToknames); tok++ {
933		if n := base + tok; n >= 0 && n < protoLast && protoChk[protoAct[n]] == tok {
934			if len(expected) == cap(expected) {
935				return res
936			}
937			expected = append(expected, tok)
938		}
939	}
940
941	if protoDef[state] == -2 {
942		i := 0
943		for protoExca[i] != -1 || protoExca[i+1] != state {
944			i += 2
945		}
946
947		// Look for tokens that we accept or reduce.
948		for i += 2; protoExca[i] >= 0; i += 2 {
949			tok := protoExca[i]
950			if tok < TOKSTART || protoExca[i+1] == 0 {
951				continue
952			}
953			if len(expected) == cap(expected) {
954				return res
955			}
956			expected = append(expected, tok)
957		}
958
959		// If the default action is to accept or reduce, give up.
960		if protoExca[i+1] != 0 {
961			return res
962		}
963	}
964
965	for i, tok := range expected {
966		if i == 0 {
967			res += ", expecting "
968		} else {
969			res += " or "
970		}
971		res += protoTokname(tok)
972	}
973	return res
974}
975
976func protolex1(lex protoLexer, lval *protoSymType) (char, token int) {
977	token = 0
978	char = lex.Lex(lval)
979	if char <= 0 {
980		token = protoTok1[0]
981		goto out
982	}
983	if char < len(protoTok1) {
984		token = protoTok1[char]
985		goto out
986	}
987	if char >= protoPrivate {
988		if char < protoPrivate+len(protoTok2) {
989			token = protoTok2[char-protoPrivate]
990			goto out
991		}
992	}
993	for i := 0; i < len(protoTok3); i += 2 {
994		token = protoTok3[i+0]
995		if token == char {
996			token = protoTok3[i+1]
997			goto out
998		}
999	}
1000
1001out:
1002	if token == 0 {
1003		token = protoTok2[1] /* unknown char */
1004	}
1005	if protoDebug >= 3 {
1006		__yyfmt__.Printf("lex %s(%d)\n", protoTokname(token), uint(char))
1007	}
1008	return char, token
1009}
1010
1011func protoParse(protolex protoLexer) int {
1012	return protoNewParser().Parse(protolex)
1013}
1014
1015func (protorcvr *protoParserImpl) Parse(protolex protoLexer) int {
1016	var proton int
1017	var protoVAL protoSymType
1018	var protoDollar []protoSymType
1019	_ = protoDollar // silence set and not used
1020	protoS := protorcvr.stack[:]
1021
1022	Nerrs := 0   /* number of errors */
1023	Errflag := 0 /* error recovery flag */
1024	protostate := 0
1025	protorcvr.char = -1
1026	prototoken := -1 // protorcvr.char translated into internal numbering
1027	defer func() {
1028		// Make sure we report no lookahead when not parsing.
1029		protostate = -1
1030		protorcvr.char = -1
1031		prototoken = -1
1032	}()
1033	protop := -1
1034	goto protostack
1035
1036ret0:
1037	return 0
1038
1039ret1:
1040	return 1
1041
1042protostack:
1043	/* put a state and value onto the stack */
1044	if protoDebug >= 4 {
1045		__yyfmt__.Printf("char %v in %v\n", protoTokname(prototoken), protoStatname(protostate))
1046	}
1047
1048	protop++
1049	if protop >= len(protoS) {
1050		nyys := make([]protoSymType, len(protoS)*2)
1051		copy(nyys, protoS)
1052		protoS = nyys
1053	}
1054	protoS[protop] = protoVAL
1055	protoS[protop].yys = protostate
1056
1057protonewstate:
1058	proton = protoPact[protostate]
1059	if proton <= protoFlag {
1060		goto protodefault /* simple state */
1061	}
1062	if protorcvr.char < 0 {
1063		protorcvr.char, prototoken = protolex1(protolex, &protorcvr.lval)
1064	}
1065	proton += prototoken
1066	if proton < 0 || proton >= protoLast {
1067		goto protodefault
1068	}
1069	proton = protoAct[proton]
1070	if protoChk[proton] == prototoken { /* valid shift */
1071		protorcvr.char = -1
1072		prototoken = -1
1073		protoVAL = protorcvr.lval
1074		protostate = proton
1075		if Errflag > 0 {
1076			Errflag--
1077		}
1078		goto protostack
1079	}
1080
1081protodefault:
1082	/* default state action */
1083	proton = protoDef[protostate]
1084	if proton == -2 {
1085		if protorcvr.char < 0 {
1086			protorcvr.char, prototoken = protolex1(protolex, &protorcvr.lval)
1087		}
1088
1089		/* look through exception table */
1090		xi := 0
1091		for {
1092			if protoExca[xi+0] == -1 && protoExca[xi+1] == protostate {
1093				break
1094			}
1095			xi += 2
1096		}
1097		for xi += 2; ; xi += 2 {
1098			proton = protoExca[xi+0]
1099			if proton < 0 || proton == prototoken {
1100				break
1101			}
1102		}
1103		proton = protoExca[xi+1]
1104		if proton < 0 {
1105			goto ret0
1106		}
1107	}
1108	if proton == 0 {
1109		/* error ... attempt to resume parsing */
1110		switch Errflag {
1111		case 0: /* brand new error */
1112			protolex.Error(protoErrorMessage(protostate, prototoken))
1113			Nerrs++
1114			if protoDebug >= 1 {
1115				__yyfmt__.Printf("%s", protoStatname(protostate))
1116				__yyfmt__.Printf(" saw %s\n", protoTokname(prototoken))
1117			}
1118			fallthrough
1119
1120		case 1, 2: /* incompletely recovered error ... try again */
1121			Errflag = 3
1122
1123			/* find a state where "error" is a legal shift action */
1124			for protop >= 0 {
1125				proton = protoPact[protoS[protop].yys] + protoErrCode
1126				if proton >= 0 && proton < protoLast {
1127					protostate = protoAct[proton] /* simulate a shift of "error" */
1128					if protoChk[protostate] == protoErrCode {
1129						goto protostack
1130					}
1131				}
1132
1133				/* the current p has no shift on "error", pop stack */
1134				if protoDebug >= 2 {
1135					__yyfmt__.Printf("error recovery pops state %d\n", protoS[protop].yys)
1136				}
1137				protop--
1138			}
1139			/* there is no state on the stack with an error shift ... abort */
1140			goto ret1
1141
1142		case 3: /* no shift yet; clobber input char */
1143			if protoDebug >= 2 {
1144				__yyfmt__.Printf("error recovery discards %s\n", protoTokname(prototoken))
1145			}
1146			if prototoken == protoEofCode {
1147				goto ret1
1148			}
1149			protorcvr.char = -1
1150			prototoken = -1
1151			goto protonewstate /* try again in the same state */
1152		}
1153	}
1154
1155	/* reduction by production proton */
1156	if protoDebug >= 2 {
1157		__yyfmt__.Printf("reduce %v in:\n\t%v\n", proton, protoStatname(protostate))
1158	}
1159
1160	protont := proton
1161	protopt := protop
1162	_ = protopt // guard against "declared and not used"
1163
1164	protop -= protoR2[proton]
1165	// protop is now the index of $0. Perform the default action. Iff the
1166	// reduced production is ε, $1 is possibly out of range.
1167	if protop+1 >= len(protoS) {
1168		nyys := make([]protoSymType, len(protoS)*2)
1169		copy(nyys, protoS)
1170		protoS = nyys
1171	}
1172	protoVAL = protoS[protop+1]
1173
1174	/* consult goto table to find next state */
1175	proton = protoR1[proton]
1176	protog := protoPgo[proton]
1177	protoj := protog + protoS[protop].yys + 1
1178
1179	if protoj >= protoLast {
1180		protostate = protoAct[protog]
1181	} else {
1182		protostate = protoAct[protoj]
1183		if protoChk[protostate] != -proton {
1184			protostate = protoAct[protog]
1185		}
1186	}
1187	// dummy call; replaced with literal code
1188	switch protont {
1189
1190	case 1:
1191		protoDollar = protoS[protopt-1 : protopt+1]
1192//line proto.y:143
1193		{
1194			protoVAL.file = ast.NewFileNode(protoDollar[1].syn, nil)
1195			protolex.(*protoLex).res = protoVAL.file
1196		}
1197	case 2:
1198		protoDollar = protoS[protopt-1 : protopt+1]
1199//line proto.y:147
1200		{
1201			protoVAL.file = ast.NewFileNode(nil, protoDollar[1].fileDecls)
1202			protolex.(*protoLex).res = protoVAL.file
1203		}
1204	case 3:
1205		protoDollar = protoS[protopt-2 : protopt+1]
1206//line proto.y:151
1207		{
1208			protoVAL.file = ast.NewFileNode(protoDollar[1].syn, protoDollar[2].fileDecls)
1209			protolex.(*protoLex).res = protoVAL.file
1210		}
1211	case 4:
1212		protoDollar = protoS[protopt-0 : protopt+1]
1213//line proto.y:155
1214		{
1215		}
1216	case 5:
1217		protoDollar = protoS[protopt-2 : protopt+1]
1218//line proto.y:158
1219		{
1220			if protoDollar[2].fileDecl != nil {
1221				protoVAL.fileDecls = append(protoDollar[1].fileDecls, protoDollar[2].fileDecl)
1222			} else {
1223				protoVAL.fileDecls = protoDollar[1].fileDecls
1224			}
1225		}
1226	case 6:
1227		protoDollar = protoS[protopt-1 : protopt+1]
1228//line proto.y:165
1229		{
1230			if protoDollar[1].fileDecl != nil {
1231				protoVAL.fileDecls = []ast.FileElement{protoDollar[1].fileDecl}
1232			} else {
1233				protoVAL.fileDecls = nil
1234			}
1235		}
1236	case 7:
1237		protoDollar = protoS[protopt-1 : protopt+1]
1238//line proto.y:173
1239		{
1240			protoVAL.fileDecl = protoDollar[1].imprt
1241		}
1242	case 8:
1243		protoDollar = protoS[protopt-1 : protopt+1]
1244//line proto.y:176
1245		{
1246			protoVAL.fileDecl = protoDollar[1].pkg
1247		}
1248	case 9:
1249		protoDollar = protoS[protopt-1 : protopt+1]
1250//line proto.y:179
1251		{
1252			protoVAL.fileDecl = protoDollar[1].opt
1253		}
1254	case 10:
1255		protoDollar = protoS[protopt-1 : protopt+1]
1256//line proto.y:182
1257		{
1258			protoVAL.fileDecl = protoDollar[1].msg
1259		}
1260	case 11:
1261		protoDollar = protoS[protopt-1 : protopt+1]
1262//line proto.y:185
1263		{
1264			protoVAL.fileDecl = protoDollar[1].en
1265		}
1266	case 12:
1267		protoDollar = protoS[protopt-1 : protopt+1]
1268//line proto.y:188
1269		{
1270			protoVAL.fileDecl = protoDollar[1].extend
1271		}
1272	case 13:
1273		protoDollar = protoS[protopt-1 : protopt+1]
1274//line proto.y:191
1275		{
1276			protoVAL.fileDecl = protoDollar[1].svc
1277		}
1278	case 14:
1279		protoDollar = protoS[protopt-1 : protopt+1]
1280//line proto.y:194
1281		{
1282			protoVAL.fileDecl = ast.NewEmptyDeclNode(protoDollar[1].b)
1283		}
1284	case 15:
1285		protoDollar = protoS[protopt-2 : protopt+1]
1286//line proto.y:197
1287		{
1288			protoVAL.fileDecl = nil
1289		}
1290	case 16:
1291		protoDollar = protoS[protopt-1 : protopt+1]
1292//line proto.y:200
1293		{
1294			protoVAL.fileDecl = nil
1295		}
1296	case 17:
1297		protoDollar = protoS[protopt-4 : protopt+1]
1298//line proto.y:204
1299		{
1300			protoVAL.syn = ast.NewSyntaxNode(protoDollar[1].id.ToKeyword(), protoDollar[2].b, protoDollar[3].str.toStringValueNode(), protoDollar[4].b)
1301		}
1302	case 18:
1303		protoDollar = protoS[protopt-3 : protopt+1]
1304//line proto.y:208
1305		{
1306			protoVAL.imprt = ast.NewImportNode(protoDollar[1].id.ToKeyword(), nil, nil, protoDollar[2].str.toStringValueNode(), protoDollar[3].b)
1307		}
1308	case 19:
1309		protoDollar = protoS[protopt-4 : protopt+1]
1310//line proto.y:211
1311		{
1312			protoVAL.imprt = ast.NewImportNode(protoDollar[1].id.ToKeyword(), nil, protoDollar[2].id.ToKeyword(), protoDollar[3].str.toStringValueNode(), protoDollar[4].b)
1313		}
1314	case 20:
1315		protoDollar = protoS[protopt-4 : protopt+1]
1316//line proto.y:214
1317		{
1318			protoVAL.imprt = ast.NewImportNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), nil, protoDollar[3].str.toStringValueNode(), protoDollar[4].b)
1319		}
1320	case 21:
1321		protoDollar = protoS[protopt-3 : protopt+1]
1322//line proto.y:218
1323		{
1324			protoVAL.pkg = ast.NewPackageNode(protoDollar[1].id.ToKeyword(), protoDollar[2].cid.toIdentValueNode(nil), protoDollar[3].b)
1325		}
1326	case 22:
1327		protoDollar = protoS[protopt-1 : protopt+1]
1328//line proto.y:222
1329		{
1330			protoVAL.cid = &identList{protoDollar[1].id, nil, nil}
1331		}
1332	case 23:
1333		protoDollar = protoS[protopt-3 : protopt+1]
1334//line proto.y:225
1335		{
1336			protoVAL.cid = &identList{protoDollar[1].id, protoDollar[2].b, protoDollar[3].cid}
1337		}
1338	case 24:
1339		protoDollar = protoS[protopt-1 : protopt+1]
1340//line proto.y:233
1341		{
1342			protoVAL.cid = &identList{protoDollar[1].id, nil, nil}
1343		}
1344	case 25:
1345		protoDollar = protoS[protopt-3 : protopt+1]
1346//line proto.y:236
1347		{
1348			protoVAL.cid = &identList{protoDollar[1].id, protoDollar[2].b, protoDollar[3].cid}
1349		}
1350	case 26:
1351		protoDollar = protoS[protopt-1 : protopt+1]
1352//line proto.y:240
1353		{
1354			protoVAL.cid = &identList{protoDollar[1].id, nil, nil}
1355		}
1356	case 27:
1357		protoDollar = protoS[protopt-3 : protopt+1]
1358//line proto.y:243
1359		{
1360			protoVAL.cid = &identList{protoDollar[1].id, protoDollar[2].b, protoDollar[3].cid}
1361		}
1362	case 28:
1363		protoDollar = protoS[protopt-1 : protopt+1]
1364//line proto.y:247
1365		{
1366			protoVAL.cid = &identList{protoDollar[1].id, nil, nil}
1367		}
1368	case 29:
1369		protoDollar = protoS[protopt-3 : protopt+1]
1370//line proto.y:250
1371		{
1372			protoVAL.cid = &identList{protoDollar[1].id, protoDollar[2].b, protoDollar[3].cid}
1373		}
1374	case 30:
1375		protoDollar = protoS[protopt-5 : protopt+1]
1376//line proto.y:254
1377		{
1378			refs, dots := protoDollar[2].optNms.toNodes()
1379			optName := ast.NewOptionNameNode(refs, dots)
1380			protoVAL.opt = ast.NewOptionNode(protoDollar[1].id.ToKeyword(), optName, protoDollar[3].b, protoDollar[4].v, protoDollar[5].b)
1381		}
1382	case 31:
1383		protoDollar = protoS[protopt-1 : protopt+1]
1384//line proto.y:260
1385		{
1386			protoVAL.optNms = &fieldRefList{protoDollar[1].ref, nil, nil}
1387		}
1388	case 32:
1389		protoDollar = protoS[protopt-3 : protopt+1]
1390//line proto.y:263
1391		{
1392			protoVAL.optNms = &fieldRefList{protoDollar[1].ref, protoDollar[2].b, protoDollar[3].optNms}
1393		}
1394	case 33:
1395		protoDollar = protoS[protopt-1 : protopt+1]
1396//line proto.y:267
1397		{
1398			protoVAL.ref = ast.NewFieldReferenceNode(protoDollar[1].id)
1399		}
1400	case 34:
1401		protoDollar = protoS[protopt-3 : protopt+1]
1402//line proto.y:270
1403		{
1404			protoVAL.ref = ast.NewExtensionFieldReferenceNode(protoDollar[1].b, protoDollar[2].tid, protoDollar[3].b)
1405		}
1406	case 37:
1407		protoDollar = protoS[protopt-1 : protopt+1]
1408//line proto.y:277
1409		{
1410			protoVAL.v = protoDollar[1].str.toStringValueNode()
1411		}
1412	case 39:
1413		protoDollar = protoS[protopt-1 : protopt+1]
1414//line proto.y:281
1415		{
1416			if protoDollar[1].id.Val == "true" || protoDollar[1].id.Val == "false" {
1417				protoVAL.v = ast.NewBoolLiteralNode(protoDollar[1].id.ToKeyword())
1418			} else if protoDollar[1].id.Val == "inf" || protoDollar[1].id.Val == "nan" {
1419				protoVAL.v = ast.NewSpecialFloatLiteralNode(protoDollar[1].id.ToKeyword())
1420			} else {
1421				protoVAL.v = protoDollar[1].id
1422			}
1423		}
1424	case 40:
1425		protoDollar = protoS[protopt-1 : protopt+1]
1426//line proto.y:291
1427		{
1428			protoVAL.v = protoDollar[1].f
1429		}
1430	case 41:
1431		protoDollar = protoS[protopt-2 : protopt+1]
1432//line proto.y:294
1433		{
1434			protoVAL.v = ast.NewSignedFloatLiteralNode(protoDollar[1].b, protoDollar[2].f)
1435		}
1436	case 42:
1437		protoDollar = protoS[protopt-2 : protopt+1]
1438//line proto.y:297
1439		{
1440			protoVAL.v = ast.NewSignedFloatLiteralNode(protoDollar[1].b, protoDollar[2].f)
1441		}
1442	case 43:
1443		protoDollar = protoS[protopt-2 : protopt+1]
1444//line proto.y:300
1445		{
1446			f := ast.NewSpecialFloatLiteralNode(protoDollar[2].id.ToKeyword())
1447			protoVAL.v = ast.NewSignedFloatLiteralNode(protoDollar[1].b, f)
1448		}
1449	case 44:
1450		protoDollar = protoS[protopt-2 : protopt+1]
1451//line proto.y:304
1452		{
1453			f := ast.NewSpecialFloatLiteralNode(protoDollar[2].id.ToKeyword())
1454			protoVAL.v = ast.NewSignedFloatLiteralNode(protoDollar[1].b, f)
1455		}
1456	case 45:
1457		protoDollar = protoS[protopt-1 : protopt+1]
1458//line proto.y:308
1459		{
1460			protoVAL.v = protoDollar[1].i
1461		}
1462	case 46:
1463		protoDollar = protoS[protopt-2 : protopt+1]
1464//line proto.y:311
1465		{
1466			protoVAL.v = ast.NewPositiveUintLiteralNode(protoDollar[1].b, protoDollar[2].i)
1467		}
1468	case 47:
1469		protoDollar = protoS[protopt-2 : protopt+1]
1470//line proto.y:314
1471		{
1472			if protoDollar[2].i.Val > math.MaxInt64+1 {
1473				// can't represent as int so treat as float literal
1474				protoVAL.v = ast.NewSignedFloatLiteralNode(protoDollar[1].b, protoDollar[2].i)
1475			} else {
1476				protoVAL.v = ast.NewNegativeIntLiteralNode(protoDollar[1].b, protoDollar[2].i)
1477			}
1478		}
1479	case 48:
1480		protoDollar = protoS[protopt-1 : protopt+1]
1481//line proto.y:323
1482		{
1483			protoVAL.str = &stringList{protoDollar[1].s, nil}
1484		}
1485	case 49:
1486		protoDollar = protoS[protopt-2 : protopt+1]
1487//line proto.y:326
1488		{
1489			protoVAL.str = &stringList{protoDollar[1].s, protoDollar[2].str}
1490		}
1491	case 50:
1492		protoDollar = protoS[protopt-3 : protopt+1]
1493//line proto.y:330
1494		{
1495			fields, delims := protoDollar[2].msgLit.toNodes()
1496			protoVAL.v = ast.NewMessageLiteralNode(protoDollar[1].b, fields, delims, protoDollar[3].b)
1497		}
1498	case 51:
1499		protoDollar = protoS[protopt-1 : protopt+1]
1500//line proto.y:335
1501		{
1502			if protoDollar[1].msgEntry != nil {
1503				protoVAL.msgLit = &messageFieldList{protoDollar[1].msgEntry, nil}
1504			} else {
1505				protoVAL.msgLit = nil
1506			}
1507		}
1508	case 52:
1509		protoDollar = protoS[protopt-2 : protopt+1]
1510//line proto.y:342
1511		{
1512			if protoDollar[1].msgEntry != nil {
1513				protoVAL.msgLit = &messageFieldList{protoDollar[1].msgEntry, protoDollar[2].msgLit}
1514			} else {
1515				protoVAL.msgLit = protoDollar[2].msgLit
1516			}
1517		}
1518	case 53:
1519		protoDollar = protoS[protopt-0 : protopt+1]
1520//line proto.y:349
1521		{
1522			protoVAL.msgLit = nil
1523		}
1524	case 54:
1525		protoDollar = protoS[protopt-1 : protopt+1]
1526//line proto.y:353
1527		{
1528			if protoDollar[1].msgField != nil {
1529				protoVAL.msgEntry = &messageFieldEntry{protoDollar[1].msgField, nil}
1530			} else {
1531				protoVAL.msgEntry = nil
1532			}
1533		}
1534	case 55:
1535		protoDollar = protoS[protopt-2 : protopt+1]
1536//line proto.y:360
1537		{
1538			if protoDollar[1].msgField != nil {
1539				protoVAL.msgEntry = &messageFieldEntry{protoDollar[1].msgField, protoDollar[2].b}
1540			} else {
1541				protoVAL.msgEntry = nil
1542			}
1543		}
1544	case 56:
1545		protoDollar = protoS[protopt-2 : protopt+1]
1546//line proto.y:367
1547		{
1548			if protoDollar[1].msgField != nil {
1549				protoVAL.msgEntry = &messageFieldEntry{protoDollar[1].msgField, protoDollar[2].b}
1550			} else {
1551				protoVAL.msgEntry = nil
1552			}
1553		}
1554	case 57:
1555		protoDollar = protoS[protopt-2 : protopt+1]
1556//line proto.y:374
1557		{
1558			protoVAL.msgEntry = nil
1559		}
1560	case 58:
1561		protoDollar = protoS[protopt-2 : protopt+1]
1562//line proto.y:377
1563		{
1564			protoVAL.msgEntry = nil
1565		}
1566	case 59:
1567		protoDollar = protoS[protopt-1 : protopt+1]
1568//line proto.y:380
1569		{
1570			protoVAL.msgEntry = nil
1571		}
1572	case 60:
1573		protoDollar = protoS[protopt-3 : protopt+1]
1574//line proto.y:384
1575		{
1576			if protoDollar[1].ref != nil {
1577				protoVAL.msgField = ast.NewMessageFieldNode(protoDollar[1].ref, protoDollar[2].b, protoDollar[3].v)
1578			} else {
1579				protoVAL.msgField = nil
1580			}
1581		}
1582	case 61:
1583		protoDollar = protoS[protopt-4 : protopt+1]
1584//line proto.y:391
1585		{
1586			if protoDollar[1].ref != nil {
1587				val := ast.NewArrayLiteralNode(protoDollar[3].b, nil, nil, protoDollar[4].b)
1588				protoVAL.msgField = ast.NewMessageFieldNode(protoDollar[1].ref, protoDollar[2].b, val)
1589			} else {
1590				protoVAL.msgField = nil
1591			}
1592		}
1593	case 62:
1594		protoDollar = protoS[protopt-5 : protopt+1]
1595//line proto.y:399
1596		{
1597			if protoDollar[1].ref != nil {
1598				vals, commas := protoDollar[4].sl.toNodes()
1599				val := ast.NewArrayLiteralNode(protoDollar[3].b, vals, commas, protoDollar[5].b)
1600				protoVAL.msgField = ast.NewMessageFieldNode(protoDollar[1].ref, protoDollar[2].b, val)
1601			} else {
1602				protoVAL.msgField = nil
1603			}
1604		}
1605	case 63:
1606		protoDollar = protoS[protopt-5 : protopt+1]
1607//line proto.y:408
1608		{
1609			protoVAL.msgField = nil
1610		}
1611	case 64:
1612		protoDollar = protoS[protopt-3 : protopt+1]
1613//line proto.y:411
1614		{
1615			if protoDollar[1].ref != nil {
1616				protoVAL.msgField = ast.NewMessageFieldNode(protoDollar[1].ref, protoDollar[2].b, protoDollar[3].v)
1617			} else {
1618				protoVAL.msgField = nil
1619			}
1620		}
1621	case 65:
1622		protoDollar = protoS[protopt-2 : protopt+1]
1623//line proto.y:418
1624		{
1625			if protoDollar[1].ref != nil {
1626				protoVAL.msgField = ast.NewMessageFieldNode(protoDollar[1].ref, nil, protoDollar[2].v)
1627			} else {
1628				protoVAL.msgField = nil
1629			}
1630		}
1631	case 66:
1632		protoDollar = protoS[protopt-5 : protopt+1]
1633//line proto.y:425
1634		{
1635			if protoDollar[1].ref != nil {
1636				fields, delims := protoDollar[4].msgLit.toNodes()
1637				msg := ast.NewMessageLiteralNode(protoDollar[3].b, fields, delims, protoDollar[5].b)
1638				protoVAL.msgField = ast.NewMessageFieldNode(protoDollar[1].ref, protoDollar[2].b, msg)
1639			} else {
1640				protoVAL.msgField = nil
1641			}
1642		}
1643	case 67:
1644		protoDollar = protoS[protopt-4 : protopt+1]
1645//line proto.y:434
1646		{
1647			if protoDollar[1].ref != nil {
1648				fields, delims := protoDollar[3].msgLit.toNodes()
1649				msg := ast.NewMessageLiteralNode(protoDollar[2].b, fields, delims, protoDollar[4].b)
1650				protoVAL.msgField = ast.NewMessageFieldNode(protoDollar[1].ref, nil, msg)
1651			} else {
1652				protoVAL.msgField = nil
1653			}
1654		}
1655	case 68:
1656		protoDollar = protoS[protopt-5 : protopt+1]
1657//line proto.y:443
1658		{
1659			protoVAL.msgField = nil
1660		}
1661	case 69:
1662		protoDollar = protoS[protopt-4 : protopt+1]
1663//line proto.y:446
1664		{
1665			protoVAL.msgField = nil
1666		}
1667	case 70:
1668		protoDollar = protoS[protopt-1 : protopt+1]
1669//line proto.y:450
1670		{
1671			protoVAL.ref = ast.NewFieldReferenceNode(protoDollar[1].id)
1672		}
1673	case 71:
1674		protoDollar = protoS[protopt-3 : protopt+1]
1675//line proto.y:453
1676		{
1677			protoVAL.ref = ast.NewExtensionFieldReferenceNode(protoDollar[1].b, protoDollar[2].tid, protoDollar[3].b)
1678		}
1679	case 72:
1680		protoDollar = protoS[protopt-3 : protopt+1]
1681//line proto.y:456
1682		{
1683			protoVAL.ref = nil
1684		}
1685	case 73:
1686		protoDollar = protoS[protopt-1 : protopt+1]
1687//line proto.y:460
1688		{
1689			protoVAL.sl = &valueList{protoDollar[1].v, nil, nil}
1690		}
1691	case 74:
1692		protoDollar = protoS[protopt-3 : protopt+1]
1693//line proto.y:463
1694		{
1695			protoVAL.sl = &valueList{protoDollar[1].v, protoDollar[2].b, protoDollar[3].sl}
1696		}
1697	case 75:
1698		protoDollar = protoS[protopt-3 : protopt+1]
1699//line proto.y:466
1700		{
1701			fields, delims := protoDollar[2].msgLit.toNodes()
1702			msg := ast.NewMessageLiteralNode(protoDollar[1].b, fields, delims, protoDollar[3].b)
1703			protoVAL.sl = &valueList{msg, nil, nil}
1704		}
1705	case 76:
1706		protoDollar = protoS[protopt-5 : protopt+1]
1707//line proto.y:471
1708		{
1709			fields, delims := protoDollar[2].msgLit.toNodes()
1710			msg := ast.NewMessageLiteralNode(protoDollar[1].b, fields, delims, protoDollar[3].b)
1711			protoVAL.sl = &valueList{msg, protoDollar[4].b, protoDollar[5].sl}
1712		}
1713	case 77:
1714		protoDollar = protoS[protopt-3 : protopt+1]
1715//line proto.y:476
1716		{
1717			protoVAL.sl = nil
1718		}
1719	case 78:
1720		protoDollar = protoS[protopt-5 : protopt+1]
1721//line proto.y:479
1722		{
1723			protoVAL.sl = protoDollar[5].sl
1724		}
1725	case 79:
1726		protoDollar = protoS[protopt-1 : protopt+1]
1727//line proto.y:483
1728		{
1729			protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil)
1730		}
1731	case 80:
1732		protoDollar = protoS[protopt-2 : protopt+1]
1733//line proto.y:486
1734		{
1735			protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b)
1736		}
1737	case 81:
1738		protoDollar = protoS[protopt-1 : protopt+1]
1739//line proto.y:490
1740		{
1741			protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil)
1742		}
1743	case 82:
1744		protoDollar = protoS[protopt-2 : protopt+1]
1745//line proto.y:493
1746		{
1747			protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b)
1748		}
1749	case 83:
1750		protoDollar = protoS[protopt-1 : protopt+1]
1751//line proto.y:497
1752		{
1753			protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil)
1754		}
1755	case 84:
1756		protoDollar = protoS[protopt-2 : protopt+1]
1757//line proto.y:500
1758		{
1759			protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b)
1760		}
1761	case 85:
1762		protoDollar = protoS[protopt-1 : protopt+1]
1763//line proto.y:504
1764		{
1765			protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil)
1766		}
1767	case 86:
1768		protoDollar = protoS[protopt-2 : protopt+1]
1769//line proto.y:507
1770		{
1771			protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b)
1772		}
1773	case 87:
1774		protoDollar = protoS[protopt-6 : protopt+1]
1775//line proto.y:511
1776		{
1777			protoVAL.fld = ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, protoDollar[6].b)
1778		}
1779	case 88:
1780		protoDollar = protoS[protopt-6 : protopt+1]
1781//line proto.y:514
1782		{
1783			protoVAL.fld = ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, protoDollar[6].b)
1784		}
1785	case 89:
1786		protoDollar = protoS[protopt-6 : protopt+1]
1787//line proto.y:517
1788		{
1789			protoVAL.fld = ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, protoDollar[6].b)
1790		}
1791	case 90:
1792		protoDollar = protoS[protopt-7 : protopt+1]
1793//line proto.y:520
1794		{
1795			protoVAL.fld = ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, protoDollar[7].b)
1796		}
1797	case 91:
1798		protoDollar = protoS[protopt-7 : protopt+1]
1799//line proto.y:523
1800		{
1801			protoVAL.fld = ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, protoDollar[7].b)
1802		}
1803	case 92:
1804		protoDollar = protoS[protopt-7 : protopt+1]
1805//line proto.y:526
1806		{
1807			protoVAL.fld = ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, protoDollar[7].b)
1808		}
1809	case 93:
1810		protoDollar = protoS[protopt-5 : protopt+1]
1811//line proto.y:529
1812		{
1813			protoVAL.fld = ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, protoDollar[5].b)
1814		}
1815	case 94:
1816		protoDollar = protoS[protopt-6 : protopt+1]
1817//line proto.y:532
1818		{
1819			protoVAL.fld = ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, protoDollar[6].b)
1820		}
1821	case 95:
1822		protoDollar = protoS[protopt-6 : protopt+1]
1823//line proto.y:536
1824		{
1825			protoVAL.fld = ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, protoDollar[6].b)
1826		}
1827	case 96:
1828		protoDollar = protoS[protopt-6 : protopt+1]
1829//line proto.y:539
1830		{
1831			protoVAL.fld = ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, protoDollar[6].b)
1832		}
1833	case 97:
1834		protoDollar = protoS[protopt-6 : protopt+1]
1835//line proto.y:542
1836		{
1837			protoVAL.fld = ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, protoDollar[6].b)
1838		}
1839	case 98:
1840		protoDollar = protoS[protopt-7 : protopt+1]
1841//line proto.y:545
1842		{
1843			protoVAL.fld = ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, protoDollar[7].b)
1844		}
1845	case 99:
1846		protoDollar = protoS[protopt-7 : protopt+1]
1847//line proto.y:548
1848		{
1849			protoVAL.fld = ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, protoDollar[7].b)
1850		}
1851	case 100:
1852		protoDollar = protoS[protopt-7 : protopt+1]
1853//line proto.y:551
1854		{
1855			protoVAL.fld = ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, protoDollar[7].b)
1856		}
1857	case 101:
1858		protoDollar = protoS[protopt-5 : protopt+1]
1859//line proto.y:554
1860		{
1861			protoVAL.fld = ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, protoDollar[5].b)
1862		}
1863	case 102:
1864		protoDollar = protoS[protopt-6 : protopt+1]
1865//line proto.y:557
1866		{
1867			protoVAL.fld = ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, protoDollar[6].b)
1868		}
1869	case 103:
1870		protoDollar = protoS[protopt-3 : protopt+1]
1871//line proto.y:561
1872		{
1873			opts, commas := protoDollar[2].opts.toNodes()
1874			protoVAL.cmpctOpts = ast.NewCompactOptionsNode(protoDollar[1].b, opts, commas, protoDollar[3].b)
1875		}
1876	case 104:
1877		protoDollar = protoS[protopt-1 : protopt+1]
1878//line proto.y:566
1879		{
1880			protoVAL.opts = &compactOptionList{protoDollar[1].opt, nil, nil}
1881		}
1882	case 105:
1883		protoDollar = protoS[protopt-3 : protopt+1]
1884//line proto.y:569
1885		{
1886			protoVAL.opts = &compactOptionList{protoDollar[1].opt, protoDollar[2].b, protoDollar[3].opts}
1887		}
1888	case 106:
1889		protoDollar = protoS[protopt-3 : protopt+1]
1890//line proto.y:573
1891		{
1892			refs, dots := protoDollar[1].optNms.toNodes()
1893			optName := ast.NewOptionNameNode(refs, dots)
1894			protoVAL.opt = ast.NewCompactOptionNode(optName, protoDollar[2].b, protoDollar[3].v)
1895		}
1896	case 107:
1897		protoDollar = protoS[protopt-8 : protopt+1]
1898//line proto.y:579
1899		{
1900			protoVAL.grp = ast.NewGroupNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, protoDollar[6].b, protoDollar[7].msgDecls, protoDollar[8].b)
1901		}
1902	case 108:
1903		protoDollar = protoS[protopt-8 : protopt+1]
1904//line proto.y:582
1905		{
1906			protoVAL.grp = ast.NewGroupNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, protoDollar[6].b, protoDollar[7].msgDecls, protoDollar[8].b)
1907		}
1908	case 109:
1909		protoDollar = protoS[protopt-8 : protopt+1]
1910//line proto.y:585
1911		{
1912			protoVAL.grp = ast.NewGroupNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, protoDollar[6].b, protoDollar[7].msgDecls, protoDollar[8].b)
1913		}
1914	case 110:
1915		protoDollar = protoS[protopt-9 : protopt+1]
1916//line proto.y:588
1917		{
1918			protoVAL.grp = ast.NewGroupNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, protoDollar[7].b, protoDollar[8].msgDecls, protoDollar[9].b)
1919		}
1920	case 111:
1921		protoDollar = protoS[protopt-9 : protopt+1]
1922//line proto.y:591
1923		{
1924			protoVAL.grp = ast.NewGroupNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, protoDollar[7].b, protoDollar[8].msgDecls, protoDollar[9].b)
1925		}
1926	case 112:
1927		protoDollar = protoS[protopt-9 : protopt+1]
1928//line proto.y:594
1929		{
1930			protoVAL.grp = ast.NewGroupNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, protoDollar[7].b, protoDollar[8].msgDecls, protoDollar[9].b)
1931		}
1932	case 113:
1933		protoDollar = protoS[protopt-5 : protopt+1]
1934//line proto.y:598
1935		{
1936			protoVAL.oo = ast.NewOneOfNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].ooDecls, protoDollar[5].b)
1937		}
1938	case 114:
1939		protoDollar = protoS[protopt-2 : protopt+1]
1940//line proto.y:602
1941		{
1942			if protoDollar[2].ooDecl != nil {
1943				protoVAL.ooDecls = append(protoDollar[1].ooDecls, protoDollar[2].ooDecl)
1944			} else {
1945				protoVAL.ooDecls = protoDollar[1].ooDecls
1946			}
1947		}
1948	case 115:
1949		protoDollar = protoS[protopt-1 : protopt+1]
1950//line proto.y:609
1951		{
1952			if protoDollar[1].ooDecl != nil {
1953				protoVAL.ooDecls = []ast.OneOfElement{protoDollar[1].ooDecl}
1954			} else {
1955				protoVAL.ooDecls = nil
1956			}
1957		}
1958	case 116:
1959		protoDollar = protoS[protopt-0 : protopt+1]
1960//line proto.y:616
1961		{
1962			protoVAL.ooDecls = nil
1963		}
1964	case 117:
1965		protoDollar = protoS[protopt-1 : protopt+1]
1966//line proto.y:620
1967		{
1968			protoVAL.ooDecl = protoDollar[1].opt
1969		}
1970	case 118:
1971		protoDollar = protoS[protopt-1 : protopt+1]
1972//line proto.y:623
1973		{
1974			protoVAL.ooDecl = protoDollar[1].fld
1975		}
1976	case 119:
1977		protoDollar = protoS[protopt-1 : protopt+1]
1978//line proto.y:626
1979		{
1980			protoVAL.ooDecl = protoDollar[1].grp
1981		}
1982	case 120:
1983		protoDollar = protoS[protopt-1 : protopt+1]
1984//line proto.y:629
1985		{
1986			protoVAL.ooDecl = ast.NewEmptyDeclNode(protoDollar[1].b)
1987		}
1988	case 121:
1989		protoDollar = protoS[protopt-2 : protopt+1]
1990//line proto.y:632
1991		{
1992			protoVAL.ooDecl = nil
1993		}
1994	case 122:
1995		protoDollar = protoS[protopt-1 : protopt+1]
1996//line proto.y:635
1997		{
1998			protoVAL.ooDecl = nil
1999		}
2000	case 123:
2001		protoDollar = protoS[protopt-5 : protopt+1]
2002//line proto.y:639
2003		{
2004			protoVAL.fld = ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, protoDollar[5].b)
2005		}
2006	case 124:
2007		protoDollar = protoS[protopt-6 : protopt+1]
2008//line proto.y:642
2009		{
2010			protoVAL.fld = ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, protoDollar[6].b)
2011		}
2012	case 125:
2013		protoDollar = protoS[protopt-7 : protopt+1]
2014//line proto.y:646
2015		{
2016			protoVAL.grp = ast.NewGroupNode(nil, protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, protoDollar[5].b, protoDollar[6].msgDecls, protoDollar[7].b)
2017		}
2018	case 126:
2019		protoDollar = protoS[protopt-8 : protopt+1]
2020//line proto.y:649
2021		{
2022			protoVAL.grp = ast.NewGroupNode(nil, protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, protoDollar[6].b, protoDollar[7].msgDecls, protoDollar[8].b)
2023		}
2024	case 127:
2025		protoDollar = protoS[protopt-5 : protopt+1]
2026//line proto.y:653
2027		{
2028			protoVAL.mapFld = ast.NewMapFieldNode(protoDollar[1].mapType, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, protoDollar[5].b)
2029		}
2030	case 128:
2031		protoDollar = protoS[protopt-6 : protopt+1]
2032//line proto.y:656
2033		{
2034			protoVAL.mapFld = ast.NewMapFieldNode(protoDollar[1].mapType, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, protoDollar[6].b)
2035		}
2036	case 129:
2037		protoDollar = protoS[protopt-6 : protopt+1]
2038//line proto.y:660
2039		{
2040			protoVAL.mapType = ast.NewMapTypeNode(protoDollar[1].id.ToKeyword(), protoDollar[2].b, protoDollar[3].id, protoDollar[4].b, protoDollar[5].tid, protoDollar[6].b)
2041		}
2042	case 142:
2043		protoDollar = protoS[protopt-3 : protopt+1]
2044//line proto.y:677
2045		{
2046			ranges, commas := protoDollar[2].rngs.toNodes()
2047			protoVAL.ext = ast.NewExtensionRangeNode(protoDollar[1].id.ToKeyword(), ranges, commas, nil, protoDollar[3].b)
2048		}
2049	case 143:
2050		protoDollar = protoS[protopt-4 : protopt+1]
2051//line proto.y:681
2052		{
2053			ranges, commas := protoDollar[2].rngs.toNodes()
2054			protoVAL.ext = ast.NewExtensionRangeNode(protoDollar[1].id.ToKeyword(), ranges, commas, protoDollar[3].cmpctOpts, protoDollar[4].b)
2055		}
2056	case 144:
2057		protoDollar = protoS[protopt-1 : protopt+1]
2058//line proto.y:686
2059		{
2060			protoVAL.rngs = &rangeList{protoDollar[1].rng, nil, nil}
2061		}
2062	case 145:
2063		protoDollar = protoS[protopt-3 : protopt+1]
2064//line proto.y:689
2065		{
2066			protoVAL.rngs = &rangeList{protoDollar[1].rng, protoDollar[2].b, protoDollar[3].rngs}
2067		}
2068	case 146:
2069		protoDollar = protoS[protopt-1 : protopt+1]
2070//line proto.y:693
2071		{
2072			protoVAL.rng = ast.NewRangeNode(protoDollar[1].i, nil, nil, nil)
2073		}
2074	case 147:
2075		protoDollar = protoS[protopt-3 : protopt+1]
2076//line proto.y:696
2077		{
2078			protoVAL.rng = ast.NewRangeNode(protoDollar[1].i, protoDollar[2].id.ToKeyword(), protoDollar[3].i, nil)
2079		}
2080	case 148:
2081		protoDollar = protoS[protopt-3 : protopt+1]
2082//line proto.y:699
2083		{
2084			protoVAL.rng = ast.NewRangeNode(protoDollar[1].i, protoDollar[2].id.ToKeyword(), nil, protoDollar[3].id.ToKeyword())
2085		}
2086	case 149:
2087		protoDollar = protoS[protopt-1 : protopt+1]
2088//line proto.y:703
2089		{
2090			protoVAL.rngs = &rangeList{protoDollar[1].rng, nil, nil}
2091		}
2092	case 150:
2093		protoDollar = protoS[protopt-3 : protopt+1]
2094//line proto.y:706
2095		{
2096			protoVAL.rngs = &rangeList{protoDollar[1].rng, protoDollar[2].b, protoDollar[3].rngs}
2097		}
2098	case 151:
2099		protoDollar = protoS[protopt-1 : protopt+1]
2100//line proto.y:710
2101		{
2102			protoVAL.rng = ast.NewRangeNode(protoDollar[1].il, nil, nil, nil)
2103		}
2104	case 152:
2105		protoDollar = protoS[protopt-3 : protopt+1]
2106//line proto.y:713
2107		{
2108			protoVAL.rng = ast.NewRangeNode(protoDollar[1].il, protoDollar[2].id.ToKeyword(), protoDollar[3].il, nil)
2109		}
2110	case 153:
2111		protoDollar = protoS[protopt-3 : protopt+1]
2112//line proto.y:716
2113		{
2114			protoVAL.rng = ast.NewRangeNode(protoDollar[1].il, protoDollar[2].id.ToKeyword(), nil, protoDollar[3].id.ToKeyword())
2115		}
2116	case 154:
2117		protoDollar = protoS[protopt-1 : protopt+1]
2118//line proto.y:720
2119		{
2120			protoVAL.il = protoDollar[1].i
2121		}
2122	case 155:
2123		protoDollar = protoS[protopt-2 : protopt+1]
2124//line proto.y:723
2125		{
2126			protoVAL.il = ast.NewNegativeIntLiteralNode(protoDollar[1].b, protoDollar[2].i)
2127		}
2128	case 156:
2129		protoDollar = protoS[protopt-3 : protopt+1]
2130//line proto.y:727
2131		{
2132			ranges, commas := protoDollar[2].rngs.toNodes()
2133			protoVAL.resvd = ast.NewReservedRangesNode(protoDollar[1].id.ToKeyword(), ranges, commas, protoDollar[3].b)
2134		}
2135	case 158:
2136		protoDollar = protoS[protopt-3 : protopt+1]
2137//line proto.y:733
2138		{
2139			ranges, commas := protoDollar[2].rngs.toNodes()
2140			protoVAL.resvd = ast.NewReservedRangesNode(protoDollar[1].id.ToKeyword(), ranges, commas, protoDollar[3].b)
2141		}
2142	case 160:
2143		protoDollar = protoS[protopt-3 : protopt+1]
2144//line proto.y:739
2145		{
2146			names, commas := protoDollar[2].names.toNodes()
2147			protoVAL.resvd = ast.NewReservedNamesNode(protoDollar[1].id.ToKeyword(), names, commas, protoDollar[3].b)
2148		}
2149	case 161:
2150		protoDollar = protoS[protopt-1 : protopt+1]
2151//line proto.y:744
2152		{
2153			protoVAL.names = &nameList{protoDollar[1].str.toStringValueNode(), nil, nil}
2154		}
2155	case 162:
2156		protoDollar = protoS[protopt-3 : protopt+1]
2157//line proto.y:747
2158		{
2159			protoVAL.names = &nameList{protoDollar[1].str.toStringValueNode(), protoDollar[2].b, protoDollar[3].names}
2160		}
2161	case 163:
2162		protoDollar = protoS[protopt-5 : protopt+1]
2163//line proto.y:751
2164		{
2165			protoVAL.en = ast.NewEnumNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].enDecls, protoDollar[5].b)
2166		}
2167	case 164:
2168		protoDollar = protoS[protopt-2 : protopt+1]
2169//line proto.y:755
2170		{
2171			if protoDollar[2].enDecl != nil {
2172				protoVAL.enDecls = append(protoDollar[1].enDecls, protoDollar[2].enDecl)
2173			} else {
2174				protoVAL.enDecls = protoDollar[1].enDecls
2175			}
2176		}
2177	case 165:
2178		protoDollar = protoS[protopt-1 : protopt+1]
2179//line proto.y:762
2180		{
2181			if protoDollar[1].enDecl != nil {
2182				protoVAL.enDecls = []ast.EnumElement{protoDollar[1].enDecl}
2183			} else {
2184				protoVAL.enDecls = nil
2185			}
2186		}
2187	case 166:
2188		protoDollar = protoS[protopt-0 : protopt+1]
2189//line proto.y:769
2190		{
2191			protoVAL.enDecls = nil
2192		}
2193	case 167:
2194		protoDollar = protoS[protopt-1 : protopt+1]
2195//line proto.y:773
2196		{
2197			protoVAL.enDecl = protoDollar[1].opt
2198		}
2199	case 168:
2200		protoDollar = protoS[protopt-1 : protopt+1]
2201//line proto.y:776
2202		{
2203			protoVAL.enDecl = protoDollar[1].env
2204		}
2205	case 169:
2206		protoDollar = protoS[protopt-1 : protopt+1]
2207//line proto.y:779
2208		{
2209			protoVAL.enDecl = protoDollar[1].resvd
2210		}
2211	case 170:
2212		protoDollar = protoS[protopt-1 : protopt+1]
2213//line proto.y:782
2214		{
2215			protoVAL.enDecl = ast.NewEmptyDeclNode(protoDollar[1].b)
2216		}
2217	case 171:
2218		protoDollar = protoS[protopt-2 : protopt+1]
2219//line proto.y:785
2220		{
2221			protoVAL.enDecl = nil
2222		}
2223	case 172:
2224		protoDollar = protoS[protopt-1 : protopt+1]
2225//line proto.y:788
2226		{
2227			protoVAL.enDecl = nil
2228		}
2229	case 173:
2230		protoDollar = protoS[protopt-4 : protopt+1]
2231//line proto.y:792
2232		{
2233			protoVAL.env = ast.NewEnumValueNode(protoDollar[1].id, protoDollar[2].b, protoDollar[3].il, nil, protoDollar[4].b)
2234		}
2235	case 174:
2236		protoDollar = protoS[protopt-5 : protopt+1]
2237//line proto.y:795
2238		{
2239			protoVAL.env = ast.NewEnumValueNode(protoDollar[1].id, protoDollar[2].b, protoDollar[3].il, protoDollar[4].cmpctOpts, protoDollar[5].b)
2240		}
2241	case 175:
2242		protoDollar = protoS[protopt-5 : protopt+1]
2243//line proto.y:799
2244		{
2245			protoVAL.msg = ast.NewMessageNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].msgDecls, protoDollar[5].b)
2246		}
2247	case 176:
2248		protoDollar = protoS[protopt-2 : protopt+1]
2249//line proto.y:803
2250		{
2251			if protoDollar[2].msgDecl != nil {
2252				protoVAL.msgDecls = append(protoDollar[1].msgDecls, protoDollar[2].msgDecl)
2253			} else {
2254				protoVAL.msgDecls = protoDollar[1].msgDecls
2255			}
2256		}
2257	case 177:
2258		protoDollar = protoS[protopt-1 : protopt+1]
2259//line proto.y:810
2260		{
2261			if protoDollar[1].msgDecl != nil {
2262				protoVAL.msgDecls = []ast.MessageElement{protoDollar[1].msgDecl}
2263			} else {
2264				protoVAL.msgDecls = nil
2265			}
2266		}
2267	case 178:
2268		protoDollar = protoS[protopt-0 : protopt+1]
2269//line proto.y:817
2270		{
2271			protoVAL.msgDecls = nil
2272		}
2273	case 179:
2274		protoDollar = protoS[protopt-1 : protopt+1]
2275//line proto.y:821
2276		{
2277			protoVAL.msgDecl = protoDollar[1].fld
2278		}
2279	case 180:
2280		protoDollar = protoS[protopt-1 : protopt+1]
2281//line proto.y:824
2282		{
2283			protoVAL.msgDecl = protoDollar[1].en
2284		}
2285	case 181:
2286		protoDollar = protoS[protopt-1 : protopt+1]
2287//line proto.y:827
2288		{
2289			protoVAL.msgDecl = protoDollar[1].msg
2290		}
2291	case 182:
2292		protoDollar = protoS[protopt-1 : protopt+1]
2293//line proto.y:830
2294		{
2295			protoVAL.msgDecl = protoDollar[1].extend
2296		}
2297	case 183:
2298		protoDollar = protoS[protopt-1 : protopt+1]
2299//line proto.y:833
2300		{
2301			protoVAL.msgDecl = protoDollar[1].ext
2302		}
2303	case 184:
2304		protoDollar = protoS[protopt-1 : protopt+1]
2305//line proto.y:836
2306		{
2307			protoVAL.msgDecl = protoDollar[1].grp
2308		}
2309	case 185:
2310		protoDollar = protoS[protopt-1 : protopt+1]
2311//line proto.y:839
2312		{
2313			protoVAL.msgDecl = protoDollar[1].opt
2314		}
2315	case 186:
2316		protoDollar = protoS[protopt-1 : protopt+1]
2317//line proto.y:842
2318		{
2319			protoVAL.msgDecl = protoDollar[1].oo
2320		}
2321	case 187:
2322		protoDollar = protoS[protopt-1 : protopt+1]
2323//line proto.y:845
2324		{
2325			protoVAL.msgDecl = protoDollar[1].mapFld
2326		}
2327	case 188:
2328		protoDollar = protoS[protopt-1 : protopt+1]
2329//line proto.y:848
2330		{
2331			protoVAL.msgDecl = protoDollar[1].resvd
2332		}
2333	case 189:
2334		protoDollar = protoS[protopt-1 : protopt+1]
2335//line proto.y:851
2336		{
2337			protoVAL.msgDecl = ast.NewEmptyDeclNode(protoDollar[1].b)
2338		}
2339	case 190:
2340		protoDollar = protoS[protopt-2 : protopt+1]
2341//line proto.y:854
2342		{
2343			protoVAL.msgDecl = nil
2344		}
2345	case 191:
2346		protoDollar = protoS[protopt-1 : protopt+1]
2347//line proto.y:857
2348		{
2349			protoVAL.msgDecl = nil
2350		}
2351	case 192:
2352		protoDollar = protoS[protopt-5 : protopt+1]
2353//line proto.y:861
2354		{
2355			protoVAL.extend = ast.NewExtendNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].b, protoDollar[4].extDecls, protoDollar[5].b)
2356		}
2357	case 193:
2358		protoDollar = protoS[protopt-2 : protopt+1]
2359//line proto.y:865
2360		{
2361			if protoDollar[2].extDecl != nil {
2362				protoVAL.extDecls = append(protoDollar[1].extDecls, protoDollar[2].extDecl)
2363			} else {
2364				protoVAL.extDecls = protoDollar[1].extDecls
2365			}
2366		}
2367	case 194:
2368		protoDollar = protoS[protopt-1 : protopt+1]
2369//line proto.y:872
2370		{
2371			if protoDollar[1].extDecl != nil {
2372				protoVAL.extDecls = []ast.ExtendElement{protoDollar[1].extDecl}
2373			} else {
2374				protoVAL.extDecls = nil
2375			}
2376		}
2377	case 195:
2378		protoDollar = protoS[protopt-0 : protopt+1]
2379//line proto.y:879
2380		{
2381			protoVAL.extDecls = nil
2382		}
2383	case 196:
2384		protoDollar = protoS[protopt-1 : protopt+1]
2385//line proto.y:883
2386		{
2387			protoVAL.extDecl = protoDollar[1].fld
2388		}
2389	case 197:
2390		protoDollar = protoS[protopt-1 : protopt+1]
2391//line proto.y:886
2392		{
2393			protoVAL.extDecl = protoDollar[1].grp
2394		}
2395	case 198:
2396		protoDollar = protoS[protopt-1 : protopt+1]
2397//line proto.y:889
2398		{
2399			protoVAL.extDecl = ast.NewEmptyDeclNode(protoDollar[1].b)
2400		}
2401	case 199:
2402		protoDollar = protoS[protopt-2 : protopt+1]
2403//line proto.y:892
2404		{
2405			protoVAL.extDecl = nil
2406		}
2407	case 200:
2408		protoDollar = protoS[protopt-1 : protopt+1]
2409//line proto.y:895
2410		{
2411			protoVAL.extDecl = nil
2412		}
2413	case 201:
2414		protoDollar = protoS[protopt-5 : protopt+1]
2415//line proto.y:899
2416		{
2417			protoVAL.svc = ast.NewServiceNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].svcDecls, protoDollar[5].b)
2418		}
2419	case 202:
2420		protoDollar = protoS[protopt-2 : protopt+1]
2421//line proto.y:903
2422		{
2423			if protoDollar[2].svcDecl != nil {
2424				protoVAL.svcDecls = append(protoDollar[1].svcDecls, protoDollar[2].svcDecl)
2425			} else {
2426				protoVAL.svcDecls = protoDollar[1].svcDecls
2427			}
2428		}
2429	case 203:
2430		protoDollar = protoS[protopt-1 : protopt+1]
2431//line proto.y:910
2432		{
2433			if protoDollar[1].svcDecl != nil {
2434				protoVAL.svcDecls = []ast.ServiceElement{protoDollar[1].svcDecl}
2435			} else {
2436				protoVAL.svcDecls = nil
2437			}
2438		}
2439	case 204:
2440		protoDollar = protoS[protopt-0 : protopt+1]
2441//line proto.y:917
2442		{
2443			protoVAL.svcDecls = nil
2444		}
2445	case 205:
2446		protoDollar = protoS[protopt-1 : protopt+1]
2447//line proto.y:924
2448		{
2449			protoVAL.svcDecl = protoDollar[1].opt
2450		}
2451	case 206:
2452		protoDollar = protoS[protopt-1 : protopt+1]
2453//line proto.y:927
2454		{
2455			protoVAL.svcDecl = protoDollar[1].mtd
2456		}
2457	case 207:
2458		protoDollar = protoS[protopt-1 : protopt+1]
2459//line proto.y:930
2460		{
2461			protoVAL.svcDecl = ast.NewEmptyDeclNode(protoDollar[1].b)
2462		}
2463	case 208:
2464		protoDollar = protoS[protopt-2 : protopt+1]
2465//line proto.y:933
2466		{
2467			protoVAL.svcDecl = nil
2468		}
2469	case 209:
2470		protoDollar = protoS[protopt-1 : protopt+1]
2471//line proto.y:936
2472		{
2473			protoVAL.svcDecl = nil
2474		}
2475	case 210:
2476		protoDollar = protoS[protopt-6 : protopt+1]
2477//line proto.y:940
2478		{
2479			protoVAL.mtd = ast.NewRPCNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].rpcType, protoDollar[4].id.ToKeyword(), protoDollar[5].rpcType, protoDollar[6].b)
2480		}
2481	case 211:
2482		protoDollar = protoS[protopt-8 : protopt+1]
2483//line proto.y:943
2484		{
2485			protoVAL.mtd = ast.NewRPCNodeWithBody(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].rpcType, protoDollar[4].id.ToKeyword(), protoDollar[5].rpcType, protoDollar[6].b, protoDollar[7].rpcDecls, protoDollar[8].b)
2486		}
2487	case 212:
2488		protoDollar = protoS[protopt-4 : protopt+1]
2489//line proto.y:947
2490		{
2491			protoVAL.rpcType = ast.NewRPCTypeNode(protoDollar[1].b, protoDollar[2].id.ToKeyword(), protoDollar[3].tid, protoDollar[4].b)
2492		}
2493	case 213:
2494		protoDollar = protoS[protopt-3 : protopt+1]
2495//line proto.y:950
2496		{
2497			protoVAL.rpcType = ast.NewRPCTypeNode(protoDollar[1].b, nil, protoDollar[2].tid, protoDollar[3].b)
2498		}
2499	case 214:
2500		protoDollar = protoS[protopt-2 : protopt+1]
2501//line proto.y:954
2502		{
2503			if protoDollar[2].rpcDecl != nil {
2504				protoVAL.rpcDecls = append(protoDollar[1].rpcDecls, protoDollar[2].rpcDecl)
2505			} else {
2506				protoVAL.rpcDecls = protoDollar[1].rpcDecls
2507			}
2508		}
2509	case 215:
2510		protoDollar = protoS[protopt-1 : protopt+1]
2511//line proto.y:961
2512		{
2513			if protoDollar[1].rpcDecl != nil {
2514				protoVAL.rpcDecls = []ast.RPCElement{protoDollar[1].rpcDecl}
2515			} else {
2516				protoVAL.rpcDecls = nil
2517			}
2518		}
2519	case 216:
2520		protoDollar = protoS[protopt-0 : protopt+1]
2521//line proto.y:968
2522		{
2523			protoVAL.rpcDecls = nil
2524		}
2525	case 217:
2526		protoDollar = protoS[protopt-1 : protopt+1]
2527//line proto.y:972
2528		{
2529			protoVAL.rpcDecl = protoDollar[1].opt
2530		}
2531	case 218:
2532		protoDollar = protoS[protopt-1 : protopt+1]
2533//line proto.y:975
2534		{
2535			protoVAL.rpcDecl = ast.NewEmptyDeclNode(protoDollar[1].b)
2536		}
2537	case 219:
2538		protoDollar = protoS[protopt-2 : protopt+1]
2539//line proto.y:978
2540		{
2541			protoVAL.rpcDecl = nil
2542		}
2543	case 220:
2544		protoDollar = protoS[protopt-1 : protopt+1]
2545//line proto.y:981
2546		{
2547			protoVAL.rpcDecl = nil
2548		}
2549	}
2550	goto protostack /* stack new state and value */
2551}
2552