diff --git a/desc/protoparse/ast.go b/desc/protoparse/ast.go index 7b02dd7a..0fb965ed 100644 --- a/desc/protoparse/ast.go +++ b/desc/protoparse/ast.go @@ -528,6 +528,10 @@ type groupNode struct { } func (n *groupNode) fieldLabel() node { + if n.label == nil { + // return nil interface to indicate absence, not a typed nil + return nil + } return n.label } @@ -568,6 +572,7 @@ type oneOfElement struct { // a discriminated union: only one field will be set option *optionNode field *fieldNode + group *groupNode empty *basicNode } diff --git a/desc/protoparse/lexer.go b/desc/protoparse/lexer.go index 34b3f784..bf336666 100644 --- a/desc/protoparse/lexer.go +++ b/desc/protoparse/lexer.go @@ -489,19 +489,6 @@ func (l *protoLex) readNumber(sofar []rune, allowDot bool, allowExp bool) []rune break } allowDot = false - cn, _, err := l.input.readRune() - if err != nil { - l.input.unreadRune(c) - break - } - if cn < '0' || cn > '9' { - l.input.unreadRune(cn) - l.input.unreadRune(c) - break - } - l.adjustPos(c) - token = append(token, c) - c = cn } else if c == 'e' || c == 'E' { if !allowExp { l.input.unreadRune(c) diff --git a/desc/protoparse/parser.go b/desc/protoparse/parser.go index b75f231b..1d95d731 100644 --- a/desc/protoparse/parser.go +++ b/desc/protoparse/parser.go @@ -999,6 +999,11 @@ func (r *parseResult) addMessageDecls(msgd *dpb.DescriptorProto, decls []*messag fd := r.asFieldDescriptor(oodecl.field) fd.OneofIndex = proto.Int32(int32(oodIndex)) msgd.Field = append(msgd.Field, fd) + } else if oodecl.group != nil { + fd, md := r.asGroupDescriptors(oodecl.group, isProto3) + fd.OneofIndex = proto.Int32(int32(oodIndex)) + msgd.Field = append(msgd.Field, fd) + msgd.NestedType = append(msgd.NestedType, md) } } } else if decl.option != nil { diff --git a/desc/protoparse/proto.y b/desc/protoparse/proto.y index 842e5f5a..f354cbba 100644 --- a/desc/protoparse/proto.y +++ b/desc/protoparse/proto.y @@ -78,7 +78,7 @@ import ( %type aggFields aggField aggFieldEntry %type field oneofField %type oneof -%type group +%type group oneofGroup %type mapField %type mapType %type message @@ -434,10 +434,18 @@ constantList : constant { typeIdent : ident | _TYPENAME + | '.' ident { + $$ = &identNode{val: "." + $2.val} + $$.setRange($1, $2) + } | typeIdent _TYPENAME { $$ = &identNode{val: $1.val + $2.val} $$.setRange($1, $2) } + | typeIdent '.' ident { + $$ = &identNode{val: $1.val + "." + $3.val} + $$.setRange($1, $3) + } field : _REQUIRED typeIdent name '=' _INT_LIT ';' { checkTag(protolex, $5.start(), $5.val) @@ -560,6 +568,9 @@ oneofItem : option { | oneofField { $$ = []*oneOfElement{{field: $1}} } + | oneofGroup { + $$ = []*oneOfElement{{group: $1}} + } | ';' { $$ = []*oneOfElement{{empty: $1}} } @@ -579,6 +590,15 @@ oneofField : typeIdent name '=' _INT_LIT ';' { $$.setRange($1, $6) } +oneofGroup : _GROUP name '=' _INT_LIT '{' messageBody '}' { + checkTag(protolex, $4.start(), $4.val) + if !unicode.IsUpper(rune($2.val[0])) { + lexError(protolex, $2.start(), fmt.Sprintf("group %s should have a name that starts with a capital letter", $2.val)) + } + $$ = &groupNode{groupKeyword: $1, name: $2, tag: $4, decls: $6} + $$.setRange($1, $7) + } + mapField : mapType name '=' _INT_LIT ';' { checkTag(protolex, $4.start(), $4.val) $$ = &mapFieldNode{mapType: $1, name: $2, tag: $4} diff --git a/desc/protoparse/proto.y.go b/desc/protoparse/proto.y.go index 69094438..0bed21b8 100644 --- a/desc/protoparse/proto.y.go +++ b/desc/protoparse/proto.y.go @@ -200,7 +200,7 @@ const protoEofCode = 1 const protoErrCode = 2 const protoInitialStackSize = 16 -//line proto.y:1003 +//line proto.y:1023 //line yacctab:1 var protoExca = [...]int{ @@ -219,361 +219,382 @@ var protoExca = [...]int{ -1, 22, 1, 3, -2, 0, - -1, 93, - 57, 165, - -2, 0, -1, 94, - 57, 151, + 57, 169, + -2, 0, + -1, 95, + 57, 155, -2, 0, - -1, 96, - 57, 182, + -1, 98, + 57, 186, -2, 0, - -1, 97, - 57, 191, + -1, 100, + 57, 195, -2, 0, - -1, 109, + -1, 112, 57, 52, -2, 0, - -1, 227, + -1, 231, 63, 52, -2, 0, - -1, 244, - 57, 102, + -1, 248, + 57, 104, -2, 0, - -1, 272, + -1, 276, 63, 52, -2, 0, - -1, 319, + -1, 325, 63, 52, -2, 0, - -1, 357, - 57, 165, + -1, 364, + 57, 169, -2, 0, - -1, 360, - 57, 165, + -1, 367, + 57, 169, -2, 0, - -1, 363, - 57, 165, + -1, 370, + 57, 169, -2, 0, - -1, 372, + -1, 380, 63, 52, -2, 0, - -1, 374, + -1, 382, 63, 52, -2, 0, - -1, 402, - 57, 203, + -1, 403, + 57, 169, + -2, 0, + -1, 414, + 57, 207, -2, 0, } const protoPrivate = 57344 -const protoLast = 2470 +const protoLast = 2638 var protoAct = [...]int{ - 31, 123, 8, 404, 8, 8, 116, 168, 115, 312, - 293, 132, 101, 195, 103, 240, 76, 167, 288, 79, - 80, 82, 84, 208, 8, 102, 104, 106, 180, 122, - 117, 154, 81, 141, 160, 194, 144, 349, 30, 77, - 334, 239, 26, 392, 361, 348, 358, 355, 333, 241, - 350, 85, 340, 347, 88, 89, 242, 331, 242, 242, - 304, 242, 242, 302, 276, 275, 95, 242, 400, 345, - 95, 310, 242, 301, 384, 242, 29, 209, 242, 268, - 231, 202, 225, 109, 182, 209, 265, 262, 410, 224, - 92, 227, 108, 224, 264, 150, 145, 223, 398, 161, - 95, 223, 396, 224, 401, 224, 402, 224, 95, 311, - 172, 223, 376, 223, 354, 223, 323, 164, 363, 360, - 357, 244, 185, 247, 97, 324, 156, 155, 152, 114, - 17, 248, 211, 193, 80, 79, 183, 94, 211, 197, - 198, 187, 189, 191, 150, 145, 211, 81, 211, 246, - 224, 87, 222, 93, 369, 96, 87, 241, 223, 77, - 221, 161, 87, 87, 165, 399, 218, 201, 172, 163, - 381, 379, 215, 377, 368, 220, 199, 152, 201, 210, - 204, 364, 344, 156, 155, 213, 226, 407, 232, 233, - 234, 235, 236, 237, 216, 228, 407, 343, 338, 285, - 17, 100, 217, 214, 205, 164, 99, 186, 166, 17, - 230, 90, 98, 86, 25, 367, 335, 283, 17, 282, - 281, 280, 279, 278, 14, 245, 108, 238, 172, 206, - 91, 24, 4, 15, 263, 370, 16, 17, 267, 406, - 271, 14, 408, 277, 266, 273, 294, 243, 406, 95, - 15, 269, 165, 16, 17, 286, 298, 163, 307, 289, - 290, 29, 196, 383, 77, 330, 329, 19, 18, 20, - 21, 108, 328, 172, 172, 300, 13, 327, 303, 305, - 314, 220, 326, 318, 19, 18, 20, 21, 306, 325, - 320, 299, 210, 13, 294, 309, 308, 196, 291, 339, - 332, 177, 178, 337, 298, 284, 120, 11, 177, 11, - 11, 87, 29, 342, 179, 341, 3, 174, 175, 22, - 172, 172, 162, 118, 10, 346, 10, 10, 220, 11, - 176, 119, 9, 159, 9, 9, 108, 351, 12, 153, - 5, 356, 146, 359, 23, 362, 10, 143, 366, 108, - 108, 289, 172, 365, 9, 121, 77, 207, 147, 220, - 126, 371, 373, 23, 200, 292, 378, 139, 29, 380, - 125, 124, 382, 172, 295, 172, 27, 28, 169, 316, - 107, 105, 171, 249, 181, 185, 172, 185, 172, 185, - 385, 403, 387, 220, 394, 220, 314, 287, 7, 393, - 6, 2, 1, 0, 405, 405, 317, 409, 29, 110, - 113, 33, 0, 0, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 0, 0, 0, 0, - 109, 0, 0, 0, 0, 0, 0, 0, 319, 111, - 112, 0, 0, 0, 315, 29, 110, 113, 33, 0, - 0, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 31, 126, 8, 416, 8, 8, 118, 119, 318, 172, + 76, 135, 292, 104, 297, 199, 212, 125, 105, 79, + 80, 184, 85, 107, 8, 82, 171, 164, 244, 106, + 109, 120, 81, 144, 357, 147, 96, 356, 340, 26, + 158, 243, 30, 77, 198, 355, 339, 401, 86, 245, + 368, 89, 90, 354, 365, 362, 246, 347, 337, 310, + 308, 280, 246, 96, 279, 246, 411, 352, 96, 246, + 246, 316, 246, 246, 246, 246, 393, 29, 213, 213, + 272, 235, 206, 229, 112, 307, 269, 403, 97, 186, + 93, 266, 231, 111, 268, 330, 153, 148, 228, 96, + 251, 370, 165, 228, 367, 422, 227, 408, 252, 317, + 99, 227, 406, 176, 364, 97, 160, 248, 100, 228, + 97, 96, 117, 156, 95, 228, 189, 227, 384, 155, + 159, 94, 215, 227, 361, 409, 197, 80, 79, 215, + 215, 187, 201, 202, 191, 193, 195, 153, 148, 228, + 81, 97, 215, 377, 250, 228, 226, 227, 329, 413, + 88, 414, 245, 227, 225, 165, 77, 205, 98, 389, + 222, 419, 176, 97, 14, 160, 387, 168, 205, 385, + 155, 224, 208, 15, 17, 214, 16, 17, 203, 159, + 17, 220, 236, 237, 238, 239, 240, 241, 217, 88, + 14, 419, 376, 232, 88, 230, 371, 234, 4, 15, + 103, 351, 16, 17, 17, 168, 88, 19, 18, 20, + 21, 350, 344, 418, 169, 289, 13, 221, 17, 167, + 111, 218, 176, 209, 190, 170, 91, 25, 375, 374, + 341, 267, 287, 19, 18, 20, 21, 281, 273, 102, + 298, 313, 13, 418, 101, 286, 420, 293, 277, 275, + 303, 290, 169, 285, 284, 378, 87, 167, 283, 282, + 219, 249, 77, 242, 210, 111, 306, 176, 176, 92, + 24, 271, 294, 270, 320, 312, 247, 224, 324, 314, + 123, 11, 29, 11, 11, 309, 311, 392, 298, 214, + 27, 28, 315, 326, 345, 346, 121, 10, 303, 10, + 10, 343, 5, 11, 29, 200, 23, 338, 391, 349, + 295, 122, 9, 336, 9, 9, 176, 176, 335, 10, + 334, 353, 181, 182, 348, 23, 224, 178, 179, 333, + 332, 331, 111, 305, 9, 183, 200, 288, 181, 88, + 180, 293, 358, 372, 29, 373, 111, 111, 3, 176, + 363, 22, 366, 166, 369, 163, 77, 12, 224, 379, + 381, 386, 157, 149, 388, 146, 124, 390, 211, 150, + 129, 176, 204, 176, 296, 142, 128, 300, 127, 299, + 173, 322, 110, 108, 189, 176, 189, 176, 189, 175, + 253, 185, 404, 415, 224, 320, 224, 394, 291, 396, + 410, 7, 6, 2, 1, 0, 417, 417, 189, 421, + 402, 323, 0, 29, 113, 116, 33, 0, 0, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 0, 0, 0, 0, 112, 0, 0, 0, 0, + 0, 0, 0, 325, 114, 115, 0, 0, 0, 321, + 29, 113, 116, 33, 0, 0, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 0, 0, + 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, + 276, 114, 115, 0, 0, 274, 29, 113, 116, 33, + 0, 0, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 0, 0, 0, 0, 112, 0, + 0, 0, 0, 0, 0, 0, 382, 114, 115, 29, + 113, 116, 33, 0, 0, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 0, 0, 0, + 0, 112, 0, 0, 0, 0, 0, 174, 0, 380, + 114, 115, 33, 0, 0, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 407, 0, + 0, 0, 33, 0, 177, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 405, 0, + 0, 0, 33, 0, 177, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 383, 29, + 113, 116, 33, 0, 177, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 0, 0, 0, + 0, 112, 0, 0, 174, 0, 0, 0, 0, 33, + 114, 115, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 174, 360, 0, 0, 0, 33, + 0, 177, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 174, 328, 0, 0, 0, 33, + 0, 177, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 0, 0, 0, 0, 0, 223, + 0, 0, 0, 0, 397, 0, 0, 0, 0, 33, + 0, 177, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 395, 0, 0, 0, 0, 33, + 0, 177, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 359, 0, 0, 0, 0, 33, + 0, 177, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 327, 0, 0, 0, 0, 33, + 0, 177, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 33, + 0, 177, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 174, 0, 0, 0, 0, 33, + 0, 177, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 0, 0, 0, 33, + 32, 177, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 0, 0, 0, 78, + 33, 32, 83, 34, 35, 36, 37, 38, 140, 40, + 41, 42, 43, 134, 133, 132, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 141, 145, 139, 66, 67, 143, 136, 137, + 138, 72, 73, 74, 75, 0, 0, 130, 0, 0, + 412, 131, 0, 0, 84, 0, 33, 32, 83, 34, + 35, 36, 37, 38, 140, 40, 41, 42, 43, 134, + 133, 132, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 141, 145, + 139, 66, 67, 143, 136, 137, 138, 72, 73, 74, + 75, 0, 0, 130, 0, 0, 400, 131, 0, 0, + 84, 0, 33, 32, 83, 34, 35, 36, 37, 38, + 140, 40, 41, 42, 43, 134, 133, 132, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 141, 145, 139, 66, 67, 143, + 136, 137, 138, 72, 73, 74, 75, 0, 0, 130, + 0, 0, 399, 131, 0, 0, 84, 0, 33, 32, + 83, 34, 35, 36, 37, 38, 140, 40, 41, 42, + 43, 134, 133, 132, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 0, 0, 0, 0, 109, 0, 0, - 0, 0, 0, 0, 0, 272, 111, 112, 0, 0, - 270, 29, 110, 113, 33, 0, 0, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 141, 145, 139, 66, 67, 143, 136, 137, 138, 72, + 73, 74, 75, 0, 0, 130, 0, 0, 398, 302, + 0, 0, 84, 0, 33, 32, 83, 34, 35, 36, + 37, 38, 140, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 57, 58, 59, 60, 61, 304, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 0, - 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, - 0, 374, 111, 112, 29, 110, 113, 33, 0, 0, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 0, 301, 0, 0, 342, 162, 0, 0, 84, 0, + 33, 32, 83, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 134, 133, 132, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 0, 0, 161, 0, 0, + 216, 131, 0, 0, 84, 0, 33, 32, 83, 34, + 35, 36, 37, 38, 140, 40, 41, 42, 43, 134, + 133, 132, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 141, 145, + 139, 66, 67, 143, 136, 137, 138, 72, 73, 74, + 75, 0, 0, 130, 0, 0, 188, 131, 0, 0, + 84, 0, 33, 32, 83, 34, 35, 36, 37, 38, + 140, 40, 41, 42, 43, 134, 133, 132, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 141, 145, 139, 66, 67, 143, + 136, 137, 138, 72, 73, 74, 75, 0, 0, 130, + 0, 0, 302, 0, 0, 0, 84, 33, 32, 83, + 34, 35, 36, 37, 38, 140, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 54, 55, 56, 57, 58, 59, 60, 61, 304, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 0, 0, 0, 0, 109, 0, 0, 0, - 0, 0, 170, 0, 372, 111, 112, 33, 0, 0, + 74, 75, 0, 0, 301, 0, 0, 162, 0, 0, + 0, 84, 33, 32, 83, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 134, 133, 132, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 0, 0, 161, + 0, 0, 0, 0, 0, 0, 84, 33, 32, 83, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 170, 397, 0, 0, 0, 33, 0, 173, + 319, 75, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 84, 33, 32, 83, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 33, 32, 83, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 54, 55, 56, 57, 58, 59, 60, 61, 196, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 170, 395, 0, 0, 0, 33, 0, 173, + 0, 84, 33, 32, 83, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 194, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 33, 32, 83, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 54, 55, 56, 57, 58, 59, 60, 61, 192, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 375, 29, 110, 113, 33, 0, 173, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 0, 0, 0, 0, 109, 0, 0, 170, - 0, 0, 0, 0, 33, 111, 112, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, - 353, 0, 0, 0, 33, 0, 173, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, - 322, 0, 0, 0, 33, 0, 173, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 0, - 0, 0, 0, 0, 219, 0, 0, 0, 0, 388, - 0, 0, 0, 0, 33, 0, 173, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 386, - 0, 0, 0, 0, 33, 0, 173, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, - 0, 0, 0, 0, 33, 0, 173, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, - 0, 0, 0, 0, 33, 0, 173, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 274, - 0, 0, 0, 0, 33, 0, 173, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, - 0, 0, 0, 0, 33, 0, 173, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 0, 0, 0, 33, 32, 173, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 78, 33, 32, 83, 34, 35, - 36, 37, 38, 137, 40, 41, 42, 43, 131, 130, - 129, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 138, 142, 136, - 66, 67, 140, 133, 134, 135, 72, 73, 74, 75, - 0, 128, 127, 0, 0, 391, 33, 32, 83, 34, - 35, 36, 37, 38, 137, 40, 41, 42, 43, 131, - 130, 129, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 138, 142, - 136, 66, 67, 140, 133, 134, 135, 72, 73, 74, - 75, 0, 128, 127, 0, 0, 390, 33, 32, 83, - 34, 35, 36, 37, 38, 137, 40, 41, 42, 43, - 131, 130, 129, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 138, - 142, 136, 66, 67, 140, 133, 134, 135, 72, 73, - 74, 75, 0, 297, 127, 0, 0, 389, 33, 32, - 83, 34, 35, 36, 37, 38, 137, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 0, 158, 296, 0, 0, 336, 33, - 32, 83, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 131, 130, 129, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 0, 128, 157, 0, 0, 212, - 33, 32, 83, 34, 35, 36, 37, 38, 137, 40, - 41, 42, 43, 131, 130, 129, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 138, 142, 136, 66, 67, 140, 133, 134, - 135, 72, 73, 74, 75, 0, 149, 127, 0, 0, - 184, 33, 0, 0, 34, 35, 36, 37, 38, 137, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 151, 69, - 70, 71, 72, 73, 74, 75, 0, 128, 148, 0, - 0, 203, 33, 32, 83, 34, 35, 36, 37, 38, - 137, 40, 41, 42, 43, 131, 130, 129, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 138, 142, 136, 66, 67, 140, - 133, 134, 135, 72, 73, 74, 75, 297, 0, 127, - 0, 0, 33, 32, 83, 34, 35, 36, 37, 38, - 137, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 158, 0, 296, - 0, 0, 33, 32, 83, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 131, 130, 129, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 149, 0, 157, - 0, 0, 33, 0, 0, 34, 35, 36, 37, 38, - 137, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 151, - 69, 70, 71, 72, 73, 74, 75, 0, 0, 148, - 33, 32, 83, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 313, 75, 33, 32, 83, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 229, 0, 0, 0, 0, 33, 32, 0, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 33, 32, 83, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 192, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 33, 32, 83, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 190, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 33, 32, 83, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 188, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 33, 0, 95, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 33, 32, 0, 34, 35, 36, 37, 38, 39, 40, + 33, 84, 96, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 33, 0, 0, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 71, 72, 73, 74, 75, 0, 0, 152, 0, 0, + 0, 0, 33, 0, 97, 34, 35, 36, 37, 38, + 140, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 154, + 69, 70, 71, 72, 73, 74, 75, 0, 152, 151, + 0, 0, 207, 33, 0, 0, 34, 35, 36, 37, + 38, 140, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 154, 69, 70, 71, 72, 73, 74, 75, 233, 0, + 151, 0, 0, 33, 32, 0, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 33, 32, + 0, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 33, 0, 0, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, } var protoPact = [...]int{ - 222, -1000, 239, 239, 178, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 160, 364, 2373, 1437, 2418, 2418, - 2098, 2418, 239, -1000, 308, -1000, 159, 308, 308, -1000, - 157, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 198, -1000, 172, 172, 227, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 183, 288, 2541, 1452, 2586, 2586, + 2125, 2586, 172, -1000, 350, -1000, 212, 350, 350, -1000, + 182, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 177, -1000, 2098, 97, - 81, 99, -1000, -1000, 68, 158, -1000, -1000, 152, 147, - -1000, 840, 61, 1855, 2005, -1000, 1955, 203, -1000, -1000, - -1000, 154, -1000, -1000, 307, -1000, -1000, -1000, -1000, 1377, - -1000, 312, 296, -1000, 75, 1753, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 153, 2283, - 2238, 2193, 2328, 2418, 2418, 2098, 292, 1437, 2418, 2418, - 257, -1000, 17, 1804, -1000, -1000, -1000, -1000, -1000, 150, - 176, 72, -1000, 1702, -1000, -1000, -1000, -1000, 149, 115, - -1000, -1000, -1000, -1000, 148, 2418, -1000, 1017, -1000, 98, - 96, 27, -1000, 2148, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 75, -1000, 13, -1000, -1000, -1000, 2328, 2418, 2328, - 2418, 2328, 2418, 174, -13, -1000, 205, 65, 172, 95, - 69, 307, 1404, -1000, -1000, -1000, 82, 32, -1000, 202, - 196, 303, -1000, -1000, -1000, -1000, -1000, -1000, 12, -1000, - -1000, -1000, -1000, -1000, -1000, 471, -1000, 1317, -5, -6, - -1000, 2098, 170, 169, 168, 167, 166, 164, 300, -1000, - 145, 292, 1437, 255, 1905, 286, -1000, -1000, 308, 11, + -1000, -1000, -1000, -1000, -1000, -1000, 226, -1000, 2125, 75, + 68, 112, -1000, -1000, 2541, 62, 200, -1000, -1000, 195, + 156, -1000, 855, 54, 1905, 2446, -1000, 2541, 2015, -1000, + 175, -1000, -1000, -1000, 181, -1000, -1000, 345, -1000, -1000, + -1000, -1000, 1392, -1000, 332, 327, -1000, 80, 1849, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 9, 6, 80, -1000, 253, 66, 2053, -1000, - 404, -1000, 1257, 957, 53, -1000, -1000, 57, 284, 277, - 272, 267, 261, 260, 3, -1000, -1000, -22, -1000, 163, - -1000, -1000, 1651, -1000, -1000, -1000, -1000, 144, 2328, -2, - 307, 2098, -1000, 143, -1000, 128, -1000, -1000, -1000, -1000, - -1000, -1000, 1, 2098, 240, -1000, -17, -20, -1000, 1197, - 897, 51, -1000, -1000, -1000, -7, 64, -8, 63, -10, - 62, -1000, 127, -1000, 1437, 840, -1000, -1000, -1000, 162, - -1000, 120, 91, -1000, -1000, 184, 240, -1000, 600, 537, - -1000, 780, 49, -1000, -1000, -1000, 119, 1855, -1000, 117, - 1855, -1000, 116, 1855, -1000, -1000, -1000, 258, -1000, -1000, - 7, -1000, 1137, -1000, 1077, -1000, -1000, -1000, 1600, -1000, - 1549, -1000, 1498, -11, 2053, 720, 39, 660, 35, -1000, - -1000, -1000, -1000, 111, 0, -1000, -1000, -1000, -1000, -1000, - 50, -1000, 194, 185, -1000, -1000, -1000, 34, -1000, -1000, - -1000, + -1000, 180, 2290, 2235, 2180, 2343, 2586, 2586, 2125, 341, + 1452, 2586, 2586, 310, -1000, 18, 2395, -1000, -1000, -1000, + -1000, -1000, 179, 221, 73, -1000, -1000, 1793, -1000, -1000, + -1000, -1000, 177, 213, -1000, -1000, -1000, -1000, 173, 2586, + -1000, 1032, -1000, 102, 101, 28, -1000, 2496, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 80, -1000, 14, -1000, -1000, + -1000, 2343, 2586, 2343, 2586, 2343, 2586, 220, -13, -1000, + 244, 61, 218, 100, 46, 345, 1419, -1000, -1000, -1000, + 86, 32, -1000, 241, 239, 343, -1000, -1000, -1000, -1000, + -1000, -1000, 13, -1000, -1000, -1000, -1000, -1000, -1000, 486, + -1000, 1332, -6, -9, -1000, 2125, 216, 215, 211, 210, + 202, 189, 342, -1000, 171, 341, 1452, 277, 1960, 338, + -1000, -1000, 350, 23, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 6, 5, 74, -1000, + 246, 66, 2070, -1000, 419, -1000, 1272, 972, 95, -1000, + -1000, 27, 336, 335, 334, 325, 323, 318, 4, -1000, + -1000, -24, -1000, 187, -1000, -1000, 1737, -1000, -1000, -1000, + -1000, -1000, 168, 2343, 2586, 3, 345, 2125, -1000, 167, + -1000, 157, -1000, -1000, -1000, -1000, -1000, -1000, -1, 2125, + 59, -1000, -17, -36, -1000, 1212, 912, 71, -1000, -1000, + -1000, 1, 58, 0, 48, -4, 45, -1000, 152, -1000, + 1452, 855, -1000, -1000, -1000, 186, 185, -1000, 148, 90, + -1000, -1000, 214, 59, -1000, 615, 552, -1000, 795, 65, + -1000, -1000, -1000, 125, 1905, -1000, 122, 1905, -1000, 115, + 1905, -1000, -1000, -1000, 313, 292, -1000, -1000, 9, -1000, + 1152, -1000, 1092, -1000, -1000, -1000, 1681, -1000, 1625, -1000, + 1569, -7, 31, 2070, 735, 49, 675, 44, -1000, -1000, + -1000, -1000, 81, 1905, -2, -1000, -1000, -1000, -1000, -1000, + 1513, 105, -1000, -1000, 169, 199, -1000, -1000, -1000, 51, + -1000, -1000, -1000, } var protoPgo = [...]int{ - 0, 402, 401, 340, 316, 400, 398, 1, 18, 397, - 3, 391, 16, 28, 384, 15, 12, 25, 14, 0, - 21, 11, 383, 382, 27, 381, 380, 379, 17, 7, - 378, 30, 374, 371, 29, 370, 367, 331, 6, 8, - 10, 365, 364, 360, 358, 33, 13, 35, 23, 357, - 355, 323, 36, 347, 342, 306, 31, 339, 26, 338, - 34, 333, 322, 9, + 0, 414, 413, 312, 358, 412, 411, 1, 12, 408, + 3, 403, 10, 21, 401, 28, 13, 18, 29, 0, + 25, 11, 400, 399, 30, 393, 392, 391, 26, 9, + 390, 31, 389, 388, 17, 387, 386, 385, 321, 7, + 6, 14, 384, 382, 380, 379, 33, 15, 44, 16, + 378, 376, 306, 35, 375, 373, 290, 40, 372, 23, + 367, 27, 365, 363, 8, } var protoR1 = [...]int{ @@ -581,28 +602,28 @@ var protoR1 = [...]int{ 3, 3, 3, 3, 3, 3, 3, 2, 5, 5, 5, 6, 20, 20, 7, 12, 12, 12, 13, 13, 14, 14, 16, 16, 17, 17, 17, 17, 17, 25, - 25, 24, 26, 26, 26, 26, 26, 58, 58, 18, + 25, 24, 26, 26, 26, 26, 26, 59, 59, 18, 28, 28, 28, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 23, 23, 23, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 21, 21, 21, 31, 31, 31, 31, 31, 31, - 31, 31, 15, 9, 9, 8, 34, 34, 34, 33, - 41, 41, 41, 40, 40, 40, 40, 40, 32, 32, - 35, 35, 36, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 50, 50, 47, 47, 46, - 46, 46, 49, 49, 48, 48, 48, 48, 48, 48, - 48, 43, 43, 44, 44, 45, 42, 42, 51, 53, - 53, 53, 52, 52, 52, 52, 52, 52, 54, 54, - 54, 54, 37, 39, 39, 39, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, 38, 55, - 57, 57, 57, 56, 56, 56, 56, 56, 59, 61, - 61, 61, 60, 60, 60, 60, 60, 62, 62, 63, - 63, 11, 11, 11, 10, 10, 10, 10, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 27, 21, 21, 21, 21, 21, 31, 31, 31, 31, + 31, 31, 31, 31, 15, 9, 9, 8, 34, 34, + 34, 33, 42, 42, 42, 41, 41, 41, 41, 41, + 41, 32, 32, 35, 36, 36, 37, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 51, + 51, 48, 48, 47, 47, 47, 50, 50, 49, 49, + 49, 49, 49, 49, 49, 44, 44, 45, 45, 46, + 43, 43, 52, 54, 54, 54, 53, 53, 53, 53, + 53, 53, 55, 55, 55, 55, 38, 40, 40, 40, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 56, 58, 58, 58, 57, 57, 57, + 57, 57, 60, 62, 62, 62, 61, 61, 61, 61, + 61, 63, 63, 64, 64, 11, 11, 11, 10, 10, + 10, 10, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, + 19, 19, 19, 19, 19, } var protoR2 = [...]int{ @@ -614,114 +635,116 @@ var protoR2 = [...]int{ 1, 2, 0, 1, 2, 2, 2, 2, 1, 3, 4, 5, 5, 3, 2, 5, 4, 5, 4, 1, 3, 3, 1, 3, 3, 3, 5, 5, 3, 5, - 5, 1, 1, 2, 6, 6, 6, 5, 7, 7, - 7, 6, 3, 3, 1, 3, 8, 8, 8, 5, - 2, 1, 0, 1, 1, 1, 2, 1, 5, 6, - 5, 6, 6, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 4, 3, 1, 1, - 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, - 3, 3, 1, 3, 1, 3, 3, 1, 5, 2, - 1, 0, 1, 1, 1, 1, 2, 1, 4, 5, - 4, 5, 5, 2, 1, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 1, 5, - 2, 1, 0, 1, 1, 1, 2, 1, 5, 2, - 1, 0, 1, 1, 1, 2, 1, 10, 12, 2, - 1, 2, 1, 0, 1, 1, 2, 1, 1, 1, + 5, 1, 1, 2, 2, 3, 6, 6, 6, 5, + 7, 7, 7, 6, 3, 3, 1, 3, 8, 8, + 8, 5, 2, 1, 0, 1, 1, 1, 1, 2, + 1, 5, 6, 7, 5, 6, 6, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, + 4, 3, 1, 1, 3, 3, 3, 1, 1, 1, + 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, + 3, 1, 5, 2, 1, 0, 1, 1, 1, 1, + 2, 1, 4, 5, 4, 5, 5, 2, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 5, 2, 1, 0, 1, 1, 1, + 2, 1, 5, 2, 1, 0, 1, 1, 1, 2, + 1, 10, 12, 2, 1, 2, 1, 0, 1, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, + 1, 1, 1, 1, 1, } var protoChk = [...]int{ - -1000, -1, -2, -4, 10, -3, -5, -6, -7, -37, - -51, -55, -59, 54, 2, 11, 14, 15, 46, 45, - 47, 48, -4, -3, 53, 54, -58, 12, 13, 4, + -1000, -1, -2, -4, 10, -3, -5, -6, -7, -38, + -52, -56, -60, 54, 2, 11, 14, 15, 46, 45, + 47, 48, -4, -3, 53, 54, -59, 12, 13, 4, -20, -19, 8, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -12, -20, 67, -19, - -19, -21, -20, 9, -19, -58, 54, 4, -58, -58, - 54, 53, -21, 56, 56, 9, 56, 56, 54, 54, - 54, -16, -17, -18, -58, -25, -24, -26, -19, 56, - 5, 65, 66, 6, 68, -39, -38, -31, -51, -37, - -55, -50, -34, -7, -33, -35, -43, 54, 2, 22, - 21, 20, -21, 45, 46, 47, 41, 15, 39, -36, - 44, -45, 40, -53, -52, -7, -54, -44, 54, 2, - -19, 44, -45, -57, -56, -31, -34, 54, 2, -61, - -60, -7, -62, 54, 2, 49, 54, -28, -29, -30, - 2, -23, -19, 69, 5, 6, 18, 5, 6, 18, - -13, -14, 9, 61, 57, -38, 54, -21, 38, -21, - 38, -21, 38, -19, -47, -46, 5, -19, -19, -47, - -42, -58, 64, 57, -52, 54, 53, -49, -48, 5, - -24, 66, 57, -56, 54, 57, -60, 54, -19, 57, - -29, 62, 54, 62, 54, 55, -18, 64, -20, 2, - -13, 67, -19, -19, -19, -19, -19, -19, 53, 54, - -15, 62, 69, 42, 56, 53, 54, 54, 62, -22, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 5, -24, 62, 54, 42, 42, 67, -17, - 69, -18, 64, -28, 2, 70, 70, -21, 53, 53, - 53, 53, 53, 53, 5, 54, -46, -9, -8, -12, - 5, 43, -41, -40, -7, -32, 54, 2, -21, 5, - -58, 62, 54, -15, 54, -15, -48, 5, 43, -24, - 5, 43, -63, 50, -21, 70, -27, 2, -16, 64, - -28, 2, 63, 63, 68, 5, 5, 5, 5, 5, - 5, 54, -15, 70, 62, 53, 57, -40, 54, -19, - 54, -15, -21, 54, 54, 68, -21, 70, 62, 54, - 70, -28, 2, 63, 63, 54, -15, 56, 54, -15, - 56, 54, -15, 56, 54, -8, -16, 53, 54, 63, - 51, -16, 64, -16, 64, 63, 63, 54, -39, 54, - -39, 54, -39, 5, 67, -28, 2, -28, 2, 57, - 57, 57, 54, -15, -63, 63, 63, 63, 63, 54, - 68, 54, 56, -11, -10, -7, 54, 2, 57, -10, - 54, + -19, -21, -20, 9, 61, -19, -59, 54, 4, -59, + -59, 54, 53, -21, 56, 56, 9, 61, 56, -20, + 56, 54, 54, 54, -16, -17, -18, -59, -25, -24, + -26, -19, 56, 5, 65, 66, 6, 68, -40, -39, + -31, -52, -38, -56, -51, -34, -7, -33, -36, -44, + 54, 2, 22, 21, 20, -21, 45, 46, 47, 41, + 15, 39, -37, 44, -46, 40, -54, -53, -7, -55, + -45, 54, 2, -19, 44, -46, -20, -58, -57, -31, + -34, 54, 2, -62, -61, -7, -63, 54, 2, 49, + 54, -28, -29, -30, 2, -23, -19, 69, 5, 6, + 18, 5, 6, 18, -13, -14, 9, 61, 57, -39, + 54, -21, 38, -21, 38, -21, 38, -19, -48, -47, + 5, -19, -19, -48, -43, -59, 64, 57, -53, 54, + 53, -50, -49, 5, -24, 66, 57, -57, 54, 57, + -61, 54, -19, 57, -29, 62, 54, 62, 54, 55, + -18, 64, -20, 2, -13, 67, -19, -19, -19, -19, + -19, -19, 53, 54, -15, 62, 69, 42, 56, 53, + 54, 54, 62, -22, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 5, -24, 62, 54, + 42, 42, 67, -17, 69, -18, 64, -28, 2, 70, + 70, -21, 53, 53, 53, 53, 53, 53, 5, 54, + -47, -9, -8, -12, 5, 43, -42, -41, -7, -32, + -35, 54, 2, -21, 38, 5, -59, 62, 54, -15, + 54, -15, -49, 5, 43, -24, 5, 43, -64, 50, + -21, 70, -27, 2, -16, 64, -28, 2, 63, 63, + 68, 5, 5, 5, 5, 5, 5, 54, -15, 70, + 62, 53, 57, -41, 54, -19, -19, 54, -15, -21, + 54, 54, 68, -21, 70, 62, 54, 70, -28, 2, + 63, 63, 54, -15, 56, 54, -15, 56, 54, -15, + 56, 54, -8, -16, 53, 53, 54, 63, 51, -16, + 64, -16, 64, 63, 63, 54, -40, 54, -40, 54, + -40, 5, 5, 67, -28, 2, -28, 2, 57, 57, + 57, 54, -15, 56, -64, 63, 63, 63, 63, 54, + -40, 68, 57, 54, 56, -11, -10, -7, 54, 2, + 57, -10, 54, } var protoDef = [...]int{ -2, -2, -2, -2, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 0, 0, 0, 0, 0, 0, 0, -2, 5, 0, 15, 0, 0, 0, 47, - 0, 22, 23, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 0, 25, 0, 0, - 0, 0, 81, 82, 0, 0, 18, 48, 0, 0, - 21, 0, 0, -2, -2, 83, -2, -2, 17, 19, - 20, 0, 32, 33, 34, 35, 36, 37, 38, -2, - 39, 0, 0, 42, 26, 0, 164, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 178, 0, - 0, 0, 0, 244, 245, 0, 240, 214, 238, 0, - 243, 142, 239, 0, 150, 152, 153, 154, 155, 157, - 0, 243, 144, 0, 181, 183, 184, 185, 187, 0, - 190, 192, 193, 194, 196, 0, 24, 0, 50, 53, - 58, 0, 69, 0, 40, 44, 45, 41, 43, 46, - 27, 28, 30, 0, 162, 163, 177, 0, 237, 0, - 237, 0, 237, 0, 0, 128, 129, 0, 0, 0, - 0, 147, 0, 148, 149, 156, 0, 0, 133, 134, - 135, 0, 179, 180, 186, 188, 189, 195, 0, 49, - 51, 54, 55, 56, 57, 0, 64, -2, 0, 0, - 29, 0, 0, 0, 0, 0, 0, 0, 0, 125, - 0, 0, 0, 0, -2, 0, 141, 145, 0, 0, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 0, 0, 0, 143, 0, 0, 0, 59, - 0, 63, -2, 0, 58, 70, 71, 0, 0, 0, - 0, 0, 0, 0, 0, 126, 127, 0, 94, 0, - 130, 131, 0, 101, 103, 104, 105, 107, 0, 0, - 146, 0, 158, 0, 160, 0, 132, 136, 139, 137, - 138, 140, 0, 249, 200, 60, 0, 0, 72, -2, - 0, 58, 66, 68, 31, 0, 0, 0, 0, 0, - 0, 87, 0, 92, 0, 0, 99, 100, 106, 0, - 110, 0, 0, 159, 161, 0, 199, 61, 0, 0, - 62, 0, 58, 65, 67, 84, 0, -2, 85, 0, - -2, 86, 0, -2, 91, 93, 95, 0, 111, 112, - 0, 73, -2, 74, -2, 75, 78, 88, 0, 89, - 0, 90, 0, 0, 0, 0, 58, 0, 58, 96, - 97, 98, 108, 0, 0, 76, 79, 77, 80, 109, - 0, 197, -2, 0, 202, 204, 205, 207, 198, 201, - 206, + 0, 22, 23, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 0, 25, 0, 0, + 0, 0, 81, 82, 0, 0, 0, 18, 48, 0, + 0, 21, 0, 0, -2, -2, 84, 0, -2, 83, + -2, 17, 19, 20, 0, 32, 33, 34, 35, 36, + 37, 38, -2, 39, 0, 0, 42, 26, 0, 168, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 182, 0, 0, 0, 0, 248, 249, 0, 244, + 218, 242, 0, 247, 146, 243, 0, 154, 156, 157, + 158, 159, 161, 0, 247, 148, 85, 0, 185, 187, + 188, 189, 191, 0, 194, 196, 197, 198, 200, 0, + 24, 0, 50, 53, 58, 0, 69, 0, 40, 44, + 45, 41, 43, 46, 27, 28, 30, 0, 166, 167, + 181, 0, 241, 0, 241, 0, 241, 0, 0, 132, + 133, 0, 0, 0, 0, 151, 0, 152, 153, 160, + 0, 0, 137, 138, 139, 0, 183, 184, 190, 192, + 193, 199, 0, 49, 51, 54, 55, 56, 57, 0, + 64, -2, 0, 0, 29, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 0, 0, 0, 0, -2, 0, + 145, 149, 0, 0, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 0, 0, 0, 147, + 0, 0, 0, 59, 0, 63, -2, 0, 58, 70, + 71, 0, 0, 0, 0, 0, 0, 0, 0, 130, + 131, 0, 96, 0, 134, 135, 0, 103, 105, 106, + 107, 108, 110, 0, 241, 0, 150, 0, 162, 0, + 164, 0, 136, 140, 143, 141, 142, 144, 0, 253, + 204, 60, 0, 0, 72, -2, 0, 58, 66, 68, + 31, 0, 0, 0, 0, 0, 0, 89, 0, 94, + 0, 0, 101, 102, 109, 0, 0, 114, 0, 0, + 163, 165, 0, 203, 61, 0, 0, 62, 0, 58, + 65, 67, 86, 0, -2, 87, 0, -2, 88, 0, + -2, 93, 95, 97, 0, 0, 115, 116, 0, 73, + -2, 74, -2, 75, 78, 90, 0, 91, 0, 92, + 0, 0, 0, 0, 0, 58, 0, 58, 98, 99, + 100, 111, 0, -2, 0, 76, 79, 77, 80, 112, + 0, 0, 113, 201, -2, 0, 206, 208, 209, 211, + 202, 205, 210, } var protoTok1 = [...]int{ @@ -1582,96 +1605,110 @@ protodefault: case 83: protoDollar = protoS[protopt-2 : protopt+1] //line proto.y:437 + { + protoVAL.id = &identNode{val: "." + protoDollar[2].id.val} + protoVAL.id.setRange(protoDollar[1].b, protoDollar[2].id) + } + case 84: + protoDollar = protoS[protopt-2 : protopt+1] +//line proto.y:441 { protoVAL.id = &identNode{val: protoDollar[1].id.val + protoDollar[2].id.val} protoVAL.id.setRange(protoDollar[1].id, protoDollar[2].id) } - case 84: + case 85: + protoDollar = protoS[protopt-3 : protopt+1] +//line proto.y:445 + { + protoVAL.id = &identNode{val: protoDollar[1].id.val + "." + protoDollar[3].id.val} + protoVAL.id.setRange(protoDollar[1].id, protoDollar[3].id) + } + case 86: protoDollar = protoS[protopt-6 : protopt+1] -//line proto.y:442 +//line proto.y:450 { checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val) lbl := &labelNode{identNode: protoDollar[1].id, required: true} protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].id, name: protoDollar[3].id, tag: protoDollar[5].ui} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[6].b) } - case 85: + case 87: protoDollar = protoS[protopt-6 : protopt+1] -//line proto.y:448 +//line proto.y:456 { checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val) lbl := &labelNode{identNode: protoDollar[1].id} protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].id, name: protoDollar[3].id, tag: protoDollar[5].ui} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[6].b) } - case 86: + case 88: protoDollar = protoS[protopt-6 : protopt+1] -//line proto.y:454 +//line proto.y:462 { checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val) lbl := &labelNode{identNode: protoDollar[1].id, repeated: true} protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].id, name: protoDollar[3].id, tag: protoDollar[5].ui} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[6].b) } - case 87: + case 89: protoDollar = protoS[protopt-5 : protopt+1] -//line proto.y:460 +//line proto.y:468 { checkTag(protolex, protoDollar[4].ui.start(), protoDollar[4].ui.val) protoVAL.fld = &fieldNode{fldType: protoDollar[1].id, name: protoDollar[2].id, tag: protoDollar[4].ui} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[5].b) } - case 88: + case 90: protoDollar = protoS[protopt-7 : protopt+1] -//line proto.y:465 +//line proto.y:473 { checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val) lbl := &labelNode{identNode: protoDollar[1].id, required: true} protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].id, name: protoDollar[3].id, tag: protoDollar[5].ui, options: protoDollar[6].cmpctOpts} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[7].b) } - case 89: + case 91: protoDollar = protoS[protopt-7 : protopt+1] -//line proto.y:471 +//line proto.y:479 { checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val) lbl := &labelNode{identNode: protoDollar[1].id} protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].id, name: protoDollar[3].id, tag: protoDollar[5].ui, options: protoDollar[6].cmpctOpts} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[7].b) } - case 90: + case 92: protoDollar = protoS[protopt-7 : protopt+1] -//line proto.y:477 +//line proto.y:485 { checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val) lbl := &labelNode{identNode: protoDollar[1].id, repeated: true} protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].id, name: protoDollar[3].id, tag: protoDollar[5].ui, options: protoDollar[6].cmpctOpts} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[7].b) } - case 91: + case 93: protoDollar = protoS[protopt-6 : protopt+1] -//line proto.y:483 +//line proto.y:491 { checkTag(protolex, protoDollar[4].ui.start(), protoDollar[4].ui.val) protoVAL.fld = &fieldNode{fldType: protoDollar[1].id, name: protoDollar[2].id, tag: protoDollar[4].ui, options: protoDollar[5].cmpctOpts} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[6].b) } - case 92: + case 94: protoDollar = protoS[protopt-3 : protopt+1] -//line proto.y:489 +//line proto.y:497 { protoVAL.cmpctOpts = &compactOptionsNode{decls: protoDollar[2].opts} protoVAL.cmpctOpts.setRange(protoDollar[1].b, protoDollar[3].b) } - case 93: + case 95: protoDollar = protoS[protopt-3 : protopt+1] -//line proto.y:494 +//line proto.y:502 { protoVAL.opts = append(protoDollar[1].opts, protoDollar[3].opts...) } - case 95: + case 97: protoDollar = protoS[protopt-3 : protopt+1] -//line proto.y:499 +//line proto.y:507 { n := &optionNameNode{parts: protoDollar[1].optNm} n.setRange(protoDollar[1].optNm[0], protoDollar[1].optNm[len(protoDollar[1].optNm)-1]) @@ -1679,9 +1716,9 @@ protodefault: o.setRange(protoDollar[1].optNm[0], protoDollar[3].v) protoVAL.opts = []*optionNode{o} } - case 96: + case 98: protoDollar = protoS[protopt-8 : protopt+1] -//line proto.y:507 +//line proto.y:515 { checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val) if !unicode.IsUpper(rune(protoDollar[3].id.val[0])) { @@ -1691,9 +1728,9 @@ protodefault: protoVAL.grp = &groupNode{groupKeyword: protoDollar[2].id, label: lbl, name: protoDollar[3].id, tag: protoDollar[5].ui, decls: protoDollar[7].msgDecls} protoVAL.grp.setRange(protoDollar[1].id, protoDollar[8].b) } - case 97: + case 99: protoDollar = protoS[protopt-8 : protopt+1] -//line proto.y:516 +//line proto.y:524 { checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val) if !unicode.IsUpper(rune(protoDollar[3].id.val[0])) { @@ -1703,9 +1740,9 @@ protodefault: protoVAL.grp = &groupNode{groupKeyword: protoDollar[2].id, label: lbl, name: protoDollar[3].id, tag: protoDollar[5].ui, decls: protoDollar[7].msgDecls} protoVAL.grp.setRange(protoDollar[1].id, protoDollar[8].b) } - case 98: + case 100: protoDollar = protoS[protopt-8 : protopt+1] -//line proto.y:525 +//line proto.y:533 { checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val) if !unicode.IsUpper(rune(protoDollar[3].id.val[0])) { @@ -1715,9 +1752,9 @@ protodefault: protoVAL.grp = &groupNode{groupKeyword: protoDollar[2].id, label: lbl, name: protoDollar[3].id, tag: protoDollar[5].ui, decls: protoDollar[7].msgDecls} protoVAL.grp.setRange(protoDollar[1].id, protoDollar[8].b) } - case 99: + case 101: protoDollar = protoS[protopt-5 : protopt+1] -//line proto.y:535 +//line proto.y:543 { c := 0 for _, el := range protoDollar[4].ooDecls { @@ -1731,108 +1768,125 @@ protodefault: protoVAL.oo = &oneOfNode{name: protoDollar[2].id, decls: protoDollar[4].ooDecls} protoVAL.oo.setRange(protoDollar[1].id, protoDollar[5].b) } - case 100: + case 102: protoDollar = protoS[protopt-2 : protopt+1] -//line proto.y:549 +//line proto.y:557 { protoVAL.ooDecls = append(protoDollar[1].ooDecls, protoDollar[2].ooDecls...) } - case 102: + case 104: protoDollar = protoS[protopt-0 : protopt+1] -//line proto.y:553 +//line proto.y:561 { protoVAL.ooDecls = nil } - case 103: + case 105: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:557 +//line proto.y:565 { protoVAL.ooDecls = []*oneOfElement{{option: protoDollar[1].opts[0]}} } - case 104: + case 106: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:560 +//line proto.y:568 { protoVAL.ooDecls = []*oneOfElement{{field: protoDollar[1].fld}} } - case 105: + case 107: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:563 +//line proto.y:571 + { + protoVAL.ooDecls = []*oneOfElement{{group: protoDollar[1].grp}} + } + case 108: + protoDollar = protoS[protopt-1 : protopt+1] +//line proto.y:574 { protoVAL.ooDecls = []*oneOfElement{{empty: protoDollar[1].b}} } - case 106: + case 109: protoDollar = protoS[protopt-2 : protopt+1] -//line proto.y:566 +//line proto.y:577 { } - case 107: + case 110: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:568 +//line proto.y:579 { } - case 108: + case 111: protoDollar = protoS[protopt-5 : protopt+1] -//line proto.y:571 +//line proto.y:582 { checkTag(protolex, protoDollar[4].ui.start(), protoDollar[4].ui.val) protoVAL.fld = &fieldNode{fldType: protoDollar[1].id, name: protoDollar[2].id, tag: protoDollar[4].ui} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[5].b) } - case 109: + case 112: protoDollar = protoS[protopt-6 : protopt+1] -//line proto.y:576 +//line proto.y:587 { checkTag(protolex, protoDollar[4].ui.start(), protoDollar[4].ui.val) protoVAL.fld = &fieldNode{fldType: protoDollar[1].id, name: protoDollar[2].id, tag: protoDollar[4].ui, options: protoDollar[5].cmpctOpts} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[6].b) } - case 110: + case 113: + protoDollar = protoS[protopt-7 : protopt+1] +//line proto.y:593 + { + checkTag(protolex, protoDollar[4].ui.start(), protoDollar[4].ui.val) + if !unicode.IsUpper(rune(protoDollar[2].id.val[0])) { + lexError(protolex, protoDollar[2].id.start(), fmt.Sprintf("group %s should have a name that starts with a capital letter", protoDollar[2].id.val)) + } + protoVAL.grp = &groupNode{groupKeyword: protoDollar[1].id, name: protoDollar[2].id, tag: protoDollar[4].ui, decls: protoDollar[6].msgDecls} + protoVAL.grp.setRange(protoDollar[1].id, protoDollar[7].b) + } + case 114: protoDollar = protoS[protopt-5 : protopt+1] -//line proto.y:582 +//line proto.y:602 { checkTag(protolex, protoDollar[4].ui.start(), protoDollar[4].ui.val) protoVAL.mapFld = &mapFieldNode{mapType: protoDollar[1].mapType, name: protoDollar[2].id, tag: protoDollar[4].ui} protoVAL.mapFld.setRange(protoDollar[1].mapType, protoDollar[5].b) } - case 111: + case 115: protoDollar = protoS[protopt-6 : protopt+1] -//line proto.y:587 +//line proto.y:607 { checkTag(protolex, protoDollar[4].ui.start(), protoDollar[4].ui.val) protoVAL.mapFld = &mapFieldNode{mapType: protoDollar[1].mapType, name: protoDollar[2].id, tag: protoDollar[4].ui, options: protoDollar[5].cmpctOpts} protoVAL.mapFld.setRange(protoDollar[1].mapType, protoDollar[6].b) } - case 112: + case 116: protoDollar = protoS[protopt-6 : protopt+1] -//line proto.y:593 +//line proto.y:613 { protoVAL.mapType = &mapTypeNode{mapKeyword: protoDollar[1].id, keyType: protoDollar[3].id, valueType: protoDollar[5].id} protoVAL.mapType.setRange(protoDollar[1].id, protoDollar[6].b) } - case 125: + case 129: protoDollar = protoS[protopt-3 : protopt+1] -//line proto.y:611 +//line proto.y:631 { protoVAL.ext = &extensionRangeNode{ranges: protoDollar[2].rngs} protoVAL.ext.setRange(protoDollar[1].id, protoDollar[3].b) } - case 126: + case 130: protoDollar = protoS[protopt-4 : protopt+1] -//line proto.y:615 +//line proto.y:635 { protoVAL.ext = &extensionRangeNode{ranges: protoDollar[2].rngs, options: protoDollar[3].cmpctOpts} protoVAL.ext.setRange(protoDollar[1].id, protoDollar[4].b) } - case 127: + case 131: protoDollar = protoS[protopt-3 : protopt+1] -//line proto.y:620 +//line proto.y:640 { protoVAL.rngs = append(protoDollar[1].rngs, protoDollar[3].rngs...) } - case 129: + case 133: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:625 +//line proto.y:645 { if protoDollar[1].ui.val > internal.MaxTag { lexError(protolex, protoDollar[1].ui.start(), fmt.Sprintf("range includes out-of-range tag: %d (should be between 0 and %d)", protoDollar[1].ui.val, internal.MaxTag)) @@ -1841,9 +1895,9 @@ protodefault: r.setRange(protoDollar[1].ui, protoDollar[1].ui) protoVAL.rngs = []*rangeNode{r} } - case 130: + case 134: protoDollar = protoS[protopt-3 : protopt+1] -//line proto.y:633 +//line proto.y:653 { if protoDollar[1].ui.val > internal.MaxTag { lexError(protolex, protoDollar[1].ui.start(), fmt.Sprintf("range start is out-of-range tag: %d (should be between 0 and %d)", protoDollar[1].ui.val, internal.MaxTag)) @@ -1858,9 +1912,9 @@ protodefault: r.setRange(protoDollar[1].ui, protoDollar[3].ui) protoVAL.rngs = []*rangeNode{r} } - case 131: + case 135: protoDollar = protoS[protopt-3 : protopt+1] -//line proto.y:647 +//line proto.y:667 { if protoDollar[1].ui.val > internal.MaxTag { lexError(protolex, protoDollar[1].ui.start(), fmt.Sprintf("range start is out-of-range tag: %d (should be between 0 and %d)", protoDollar[1].ui.val, internal.MaxTag)) @@ -1869,33 +1923,33 @@ protodefault: r.setRange(protoDollar[1].ui, protoDollar[3].id) protoVAL.rngs = []*rangeNode{r} } - case 132: + case 136: protoDollar = protoS[protopt-3 : protopt+1] -//line proto.y:656 +//line proto.y:676 { protoVAL.rngs = append(protoDollar[1].rngs, protoDollar[3].rngs...) } - case 134: + case 138: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:661 +//line proto.y:681 { checkUint64InInt32Range(protolex, protoDollar[1].ui.start(), protoDollar[1].ui.val) r := &rangeNode{stNode: protoDollar[1].ui, enNode: protoDollar[1].ui, st: int32(protoDollar[1].ui.val), en: int32(protoDollar[1].ui.val)} r.setRange(protoDollar[1].ui, protoDollar[1].ui) protoVAL.rngs = []*rangeNode{r} } - case 135: + case 139: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:667 +//line proto.y:687 { checkInt64InInt32Range(protolex, protoDollar[1].i.start(), protoDollar[1].i.val) r := &rangeNode{stNode: protoDollar[1].i, enNode: protoDollar[1].i, st: int32(protoDollar[1].i.val), en: int32(protoDollar[1].i.val)} r.setRange(protoDollar[1].i, protoDollar[1].i) protoVAL.rngs = []*rangeNode{r} } - case 136: + case 140: protoDollar = protoS[protopt-3 : protopt+1] -//line proto.y:673 +//line proto.y:693 { checkUint64InInt32Range(protolex, protoDollar[1].ui.start(), protoDollar[1].ui.val) checkUint64InInt32Range(protolex, protoDollar[3].ui.start(), protoDollar[3].ui.val) @@ -1906,9 +1960,9 @@ protodefault: r.setRange(protoDollar[1].ui, protoDollar[3].ui) protoVAL.rngs = []*rangeNode{r} } - case 137: + case 141: protoDollar = protoS[protopt-3 : protopt+1] -//line proto.y:683 +//line proto.y:703 { checkInt64InInt32Range(protolex, protoDollar[1].i.start(), protoDollar[1].i.val) checkInt64InInt32Range(protolex, protoDollar[3].i.start(), protoDollar[3].i.val) @@ -1919,9 +1973,9 @@ protodefault: r.setRange(protoDollar[1].i, protoDollar[3].i) protoVAL.rngs = []*rangeNode{r} } - case 138: + case 142: protoDollar = protoS[protopt-3 : protopt+1] -//line proto.y:693 +//line proto.y:713 { checkInt64InInt32Range(protolex, protoDollar[1].i.start(), protoDollar[1].i.val) checkUint64InInt32Range(protolex, protoDollar[3].ui.start(), protoDollar[3].ui.val) @@ -1929,41 +1983,41 @@ protodefault: r.setRange(protoDollar[1].i, protoDollar[3].ui) protoVAL.rngs = []*rangeNode{r} } - case 139: + case 143: protoDollar = protoS[protopt-3 : protopt+1] -//line proto.y:700 +//line proto.y:720 { checkUint64InInt32Range(protolex, protoDollar[1].ui.start(), protoDollar[1].ui.val) r := &rangeNode{stNode: protoDollar[1].ui, enNode: protoDollar[3].id, st: int32(protoDollar[1].ui.val), en: math.MaxInt32} r.setRange(protoDollar[1].ui, protoDollar[3].id) protoVAL.rngs = []*rangeNode{r} } - case 140: + case 144: protoDollar = protoS[protopt-3 : protopt+1] -//line proto.y:706 +//line proto.y:726 { checkInt64InInt32Range(protolex, protoDollar[1].i.start(), protoDollar[1].i.val) r := &rangeNode{stNode: protoDollar[1].i, enNode: protoDollar[3].id, st: int32(protoDollar[1].i.val), en: math.MaxInt32} r.setRange(protoDollar[1].i, protoDollar[3].id) protoVAL.rngs = []*rangeNode{r} } - case 141: + case 145: protoDollar = protoS[protopt-3 : protopt+1] -//line proto.y:713 +//line proto.y:733 { protoVAL.resvd = &reservedNode{ranges: protoDollar[2].rngs} protoVAL.resvd.setRange(protoDollar[1].id, protoDollar[3].b) } - case 143: + case 147: protoDollar = protoS[protopt-3 : protopt+1] -//line proto.y:719 +//line proto.y:739 { protoVAL.resvd = &reservedNode{ranges: protoDollar[2].rngs} protoVAL.resvd.setRange(protoDollar[1].id, protoDollar[3].b) } - case 145: + case 149: protoDollar = protoS[protopt-3 : protopt+1] -//line proto.y:725 +//line proto.y:745 { rsvd := map[string]struct{}{} for _, n := range protoDollar[2].names { @@ -1976,21 +2030,21 @@ protodefault: protoVAL.resvd = &reservedNode{names: protoDollar[2].names} protoVAL.resvd.setRange(protoDollar[1].id, protoDollar[3].b) } - case 146: + case 150: protoDollar = protoS[protopt-3 : protopt+1] -//line proto.y:738 +//line proto.y:758 { protoVAL.names = append(protoDollar[1].names, protoDollar[3].str) } - case 147: + case 151: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:741 +//line proto.y:761 { protoVAL.names = []*stringLiteralNode{protoDollar[1].str} } - case 148: + case 152: protoDollar = protoS[protopt-5 : protopt+1] -//line proto.y:745 +//line proto.y:765 { c := 0 for _, el := range protoDollar[4].enDecls { @@ -2004,182 +2058,182 @@ protodefault: protoVAL.en = &enumNode{name: protoDollar[2].id, decls: protoDollar[4].enDecls} protoVAL.en.setRange(protoDollar[1].id, protoDollar[5].b) } - case 149: + case 153: protoDollar = protoS[protopt-2 : protopt+1] -//line proto.y:759 +//line proto.y:779 { protoVAL.enDecls = append(protoDollar[1].enDecls, protoDollar[2].enDecls...) } - case 151: + case 155: protoDollar = protoS[protopt-0 : protopt+1] -//line proto.y:763 +//line proto.y:783 { protoVAL.enDecls = nil } - case 152: + case 156: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:767 +//line proto.y:787 { protoVAL.enDecls = []*enumElement{{option: protoDollar[1].opts[0]}} } - case 153: + case 157: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:770 +//line proto.y:790 { protoVAL.enDecls = []*enumElement{{value: protoDollar[1].env}} } - case 154: + case 158: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:773 +//line proto.y:793 { protoVAL.enDecls = []*enumElement{{reserved: protoDollar[1].resvd}} } - case 155: + case 159: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:776 +//line proto.y:796 { protoVAL.enDecls = []*enumElement{{empty: protoDollar[1].b}} } - case 156: + case 160: protoDollar = protoS[protopt-2 : protopt+1] -//line proto.y:779 +//line proto.y:799 { } - case 157: + case 161: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:781 +//line proto.y:801 { } - case 158: + case 162: protoDollar = protoS[protopt-4 : protopt+1] -//line proto.y:784 +//line proto.y:804 { checkUint64InInt32Range(protolex, protoDollar[3].ui.start(), protoDollar[3].ui.val) protoVAL.env = &enumValueNode{name: protoDollar[1].id, numberP: protoDollar[3].ui} protoVAL.env.setRange(protoDollar[1].id, protoDollar[4].b) } - case 159: + case 163: protoDollar = protoS[protopt-5 : protopt+1] -//line proto.y:789 +//line proto.y:809 { checkUint64InInt32Range(protolex, protoDollar[3].ui.start(), protoDollar[3].ui.val) protoVAL.env = &enumValueNode{name: protoDollar[1].id, numberP: protoDollar[3].ui, options: protoDollar[4].cmpctOpts} protoVAL.env.setRange(protoDollar[1].id, protoDollar[5].b) } - case 160: + case 164: protoDollar = protoS[protopt-4 : protopt+1] -//line proto.y:794 +//line proto.y:814 { checkInt64InInt32Range(protolex, protoDollar[3].i.start(), protoDollar[3].i.val) protoVAL.env = &enumValueNode{name: protoDollar[1].id, numberN: protoDollar[3].i} protoVAL.env.setRange(protoDollar[1].id, protoDollar[4].b) } - case 161: + case 165: protoDollar = protoS[protopt-5 : protopt+1] -//line proto.y:799 +//line proto.y:819 { checkInt64InInt32Range(protolex, protoDollar[3].i.start(), protoDollar[3].i.val) protoVAL.env = &enumValueNode{name: protoDollar[1].id, numberN: protoDollar[3].i, options: protoDollar[4].cmpctOpts} protoVAL.env.setRange(protoDollar[1].id, protoDollar[5].b) } - case 162: + case 166: protoDollar = protoS[protopt-5 : protopt+1] -//line proto.y:805 +//line proto.y:825 { protoVAL.msg = &messageNode{name: protoDollar[2].id, decls: protoDollar[4].msgDecls} protoVAL.msg.setRange(protoDollar[1].id, protoDollar[5].b) } - case 163: + case 167: protoDollar = protoS[protopt-2 : protopt+1] -//line proto.y:810 +//line proto.y:830 { protoVAL.msgDecls = append(protoDollar[1].msgDecls, protoDollar[2].msgDecls...) } - case 165: + case 169: protoDollar = protoS[protopt-0 : protopt+1] -//line proto.y:814 +//line proto.y:834 { protoVAL.msgDecls = nil } - case 166: + case 170: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:818 +//line proto.y:838 { protoVAL.msgDecls = []*messageElement{{field: protoDollar[1].fld}} } - case 167: + case 171: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:821 +//line proto.y:841 { protoVAL.msgDecls = []*messageElement{{enum: protoDollar[1].en}} } - case 168: + case 172: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:824 +//line proto.y:844 { protoVAL.msgDecls = []*messageElement{{nested: protoDollar[1].msg}} } - case 169: + case 173: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:827 +//line proto.y:847 { protoVAL.msgDecls = []*messageElement{{extend: protoDollar[1].extend}} } - case 170: + case 174: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:830 +//line proto.y:850 { protoVAL.msgDecls = []*messageElement{{extensionRange: protoDollar[1].ext}} } - case 171: + case 175: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:833 +//line proto.y:853 { protoVAL.msgDecls = []*messageElement{{group: protoDollar[1].grp}} } - case 172: + case 176: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:836 +//line proto.y:856 { protoVAL.msgDecls = []*messageElement{{option: protoDollar[1].opts[0]}} } - case 173: + case 177: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:839 +//line proto.y:859 { protoVAL.msgDecls = []*messageElement{{oneOf: protoDollar[1].oo}} } - case 174: + case 178: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:842 +//line proto.y:862 { protoVAL.msgDecls = []*messageElement{{mapField: protoDollar[1].mapFld}} } - case 175: + case 179: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:845 +//line proto.y:865 { protoVAL.msgDecls = []*messageElement{{reserved: protoDollar[1].resvd}} } - case 176: + case 180: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:848 +//line proto.y:868 { protoVAL.msgDecls = []*messageElement{{empty: protoDollar[1].b}} } - case 177: + case 181: protoDollar = protoS[protopt-2 : protopt+1] -//line proto.y:851 +//line proto.y:871 { } - case 178: + case 182: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:853 +//line proto.y:873 { } - case 179: + case 183: protoDollar = protoS[protopt-5 : protopt+1] -//line proto.y:856 +//line proto.y:876 { c := 0 for _, el := range protoDollar[4].extDecls { @@ -2193,153 +2247,153 @@ protodefault: protoVAL.extend = &extendNode{extendee: protoDollar[2].id, decls: protoDollar[4].extDecls} protoVAL.extend.setRange(protoDollar[1].id, protoDollar[5].b) } - case 180: + case 184: protoDollar = protoS[protopt-2 : protopt+1] -//line proto.y:870 +//line proto.y:890 { protoVAL.extDecls = append(protoDollar[1].extDecls, protoDollar[2].extDecls...) } - case 182: + case 186: protoDollar = protoS[protopt-0 : protopt+1] -//line proto.y:874 +//line proto.y:894 { protoVAL.extDecls = nil } - case 183: + case 187: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:878 +//line proto.y:898 { protoVAL.extDecls = []*extendElement{{field: protoDollar[1].fld}} } - case 184: + case 188: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:881 +//line proto.y:901 { protoVAL.extDecls = []*extendElement{{group: protoDollar[1].grp}} } - case 185: + case 189: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:884 +//line proto.y:904 { protoVAL.extDecls = []*extendElement{{empty: protoDollar[1].b}} } - case 186: + case 190: protoDollar = protoS[protopt-2 : protopt+1] -//line proto.y:887 +//line proto.y:907 { } - case 187: + case 191: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:889 +//line proto.y:909 { } - case 188: + case 192: protoDollar = protoS[protopt-5 : protopt+1] -//line proto.y:892 +//line proto.y:912 { protoVAL.svc = &serviceNode{name: protoDollar[2].id, decls: protoDollar[4].svcDecls} protoVAL.svc.setRange(protoDollar[1].id, protoDollar[5].b) } - case 189: + case 193: protoDollar = protoS[protopt-2 : protopt+1] -//line proto.y:897 +//line proto.y:917 { protoVAL.svcDecls = append(protoDollar[1].svcDecls, protoDollar[2].svcDecls...) } - case 191: + case 195: protoDollar = protoS[protopt-0 : protopt+1] -//line proto.y:901 +//line proto.y:921 { protoVAL.svcDecls = nil } - case 192: + case 196: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:908 +//line proto.y:928 { protoVAL.svcDecls = []*serviceElement{{option: protoDollar[1].opts[0]}} } - case 193: + case 197: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:911 +//line proto.y:931 { protoVAL.svcDecls = []*serviceElement{{rpc: protoDollar[1].mtd}} } - case 194: + case 198: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:914 +//line proto.y:934 { protoVAL.svcDecls = []*serviceElement{{empty: protoDollar[1].b}} } - case 195: + case 199: protoDollar = protoS[protopt-2 : protopt+1] -//line proto.y:917 +//line proto.y:937 { } - case 196: + case 200: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:919 +//line proto.y:939 { } - case 197: + case 201: protoDollar = protoS[protopt-10 : protopt+1] -//line proto.y:922 +//line proto.y:942 { protoVAL.mtd = &methodNode{name: protoDollar[2].id, input: protoDollar[4].rpcType, output: protoDollar[8].rpcType} protoVAL.mtd.setRange(protoDollar[1].id, protoDollar[10].b) } - case 198: + case 202: protoDollar = protoS[protopt-12 : protopt+1] -//line proto.y:926 +//line proto.y:946 { protoVAL.mtd = &methodNode{name: protoDollar[2].id, input: protoDollar[4].rpcType, output: protoDollar[8].rpcType, options: protoDollar[11].opts} protoVAL.mtd.setRange(protoDollar[1].id, protoDollar[12].b) } - case 199: + case 203: protoDollar = protoS[protopt-2 : protopt+1] -//line proto.y:931 +//line proto.y:951 { protoVAL.rpcType = &rpcTypeNode{msgType: protoDollar[2].id, streamKeyword: protoDollar[1].id} protoVAL.rpcType.setRange(protoDollar[1].id, protoDollar[2].id) } - case 200: + case 204: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:935 +//line proto.y:955 { protoVAL.rpcType = &rpcTypeNode{msgType: protoDollar[1].id} protoVAL.rpcType.setRange(protoDollar[1].id, protoDollar[1].id) } - case 201: + case 205: protoDollar = protoS[protopt-2 : protopt+1] -//line proto.y:940 +//line proto.y:960 { protoVAL.opts = append(protoDollar[1].opts, protoDollar[2].opts...) } - case 203: + case 207: protoDollar = protoS[protopt-0 : protopt+1] -//line proto.y:944 +//line proto.y:964 { protoVAL.opts = []*optionNode{} } - case 204: + case 208: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:948 +//line proto.y:968 { protoVAL.opts = protoDollar[1].opts } - case 205: + case 209: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:951 +//line proto.y:971 { protoVAL.opts = []*optionNode{} } - case 206: + case 210: protoDollar = protoS[protopt-2 : protopt+1] -//line proto.y:954 +//line proto.y:974 { } - case 207: + case 211: protoDollar = protoS[protopt-1 : protopt+1] -//line proto.y:956 +//line proto.y:976 { } } diff --git a/desc/protoparse/source_code_info.go b/desc/protoparse/source_code_info.go index 92aa2399..3ae011b8 100644 --- a/desc/protoparse/source_code_info.go +++ b/desc/protoparse/source_code_info.go @@ -143,7 +143,7 @@ func (r *parseResult) generateSourceCodeInfoForMessage(sci *sourceCodeInfo, n ms r.generateSourceCodeInfoForField(sci, child.mapField, append(path, internal.Message_fieldsTag, fieldIndex)) fieldIndex++ case child.oneOf != nil: - r.generateSourceCodeInfoForOneOf(sci, child.oneOf, &fieldIndex, append(path, internal.Message_fieldsTag), append(dup(path), internal.Message_oneOfsTag, oneOfIndex)) + r.generateSourceCodeInfoForOneOf(sci, child.oneOf, &fieldIndex, &nestedMsgIndex, append(path, internal.Message_fieldsTag), append(dup(path), internal.Message_nestedMessagesTag), append(dup(path), internal.Message_oneOfsTag, oneOfIndex)) oneOfIndex++ case child.nested != nil: r.generateSourceCodeInfoForMessage(sci, child.nested, nil, append(path, internal.Message_nestedMessagesTag, nestedMsgIndex)) @@ -250,7 +250,7 @@ func (r *parseResult) generateSourceCodeInfoForExtensions(sci *sourceCodeInfo, n } } -func (r *parseResult) generateSourceCodeInfoForOneOf(sci *sourceCodeInfo, n *oneOfNode, fieldIndex *int32, fieldPath, oneOfPath []int32) { +func (r *parseResult) generateSourceCodeInfoForOneOf(sci *sourceCodeInfo, n *oneOfNode, fieldIndex, nestedMsgIndex *int32, fieldPath, nestedMsgPath, oneOfPath []int32) { sci.newLoc(n, oneOfPath) sci.newLoc(n.name, append(oneOfPath, internal.OneOf_nameTag)) @@ -262,6 +262,12 @@ func (r *parseResult) generateSourceCodeInfoForOneOf(sci *sourceCodeInfo, n *one case child.field != nil: r.generateSourceCodeInfoForField(sci, child.field, append(fieldPath, *fieldIndex)) *fieldIndex++ + case child.group != nil: + fldPath := append(fieldPath, *fieldIndex) + r.generateSourceCodeInfoForField(sci, child.group, fldPath) + *fieldIndex++ + r.generateSourceCodeInfoForMessage(sci, child.group, fldPath, append(nestedMsgPath, *nestedMsgIndex)) + *nestedMsgIndex++ } } } diff --git a/desc/protoparse/source_code_info_test.go b/desc/protoparse/source_code_info_test.go index 143751cc..f00e9644 100644 --- a/desc/protoparse/source_code_info_test.go +++ b/desc/protoparse/source_code_info_test.go @@ -19,13 +19,12 @@ const regenerateMode = false func TestSourceCodeInfo(t *testing.T) { p := Parser{ImportPaths: []string{"../../internal/testprotos"}, IncludeSourceCodeInfo: true} - fds, err := p.ParseFiles("desc_test_comments.proto") + fds, err := p.ParseFiles("desc_test_comments.proto", "desc_test_complex.proto") testutil.Ok(t, err) - fd := fds[0] // also test that imported files have source code info // (desc_test_comments.proto imports desc_test_options.proto) var importedFd *desc.FileDescriptor - for _, dep := range fd.GetDependencies() { + for _, dep := range fds[0].GetDependencies() { if dep.GetName() == "desc_test_options.proto" { importedFd = dep break @@ -36,7 +35,9 @@ func TestSourceCodeInfo(t *testing.T) { // create description of source code info // (human readable so diffs in source control are comprehensible) var buf bytes.Buffer - printSourceCodeInfo(t, fd, &buf) + for _, fd := range fds { + printSourceCodeInfo(t, fd, &buf) + } printSourceCodeInfo(t, importedFd, &buf) actual := buf.String() diff --git a/desc/protoparse/test-source-info.txt b/desc/protoparse/test-source-info.txt index 9c1d3a6c..324fb192 100644 --- a/desc/protoparse/test-source-info.txt +++ b/desc/protoparse/test-source-info.txt @@ -1131,6 +1131,4230 @@ desc_test_comments.proto:139:56 > service[0] > method[1] > options > mtfubard: desc_test_comments.proto:139:17 desc_test_comments.proto:139:56 +---- desc_test_complex.proto ---- + + +: +desc_test_complex.proto:1:1 +desc_test_complex.proto:286:2 + + + > syntax: +desc_test_complex.proto:1:1 +desc_test_complex.proto:1:19 + + + > package: +desc_test_complex.proto:3:1 +desc_test_complex.proto:3:17 + + + > options: +desc_test_complex.proto:5:1 +desc_test_complex.proto:5:73 + + + > options > go_package: +desc_test_complex.proto:5:1 +desc_test_complex.proto:5:73 + + + > dependency[0]: +desc_test_complex.proto:7:1 +desc_test_complex.proto:7:43 + + + > message_type[0]: +desc_test_complex.proto:9:1 +desc_test_complex.proto:12:2 + + + > message_type[0] > name: +desc_test_complex.proto:9:9 +desc_test_complex.proto:9:15 + + + > message_type[0] > field[0]: +desc_test_complex.proto:10:9 +desc_test_complex.proto:10:34 + + + > message_type[0] > field[0] > label: +desc_test_complex.proto:10:9 +desc_test_complex.proto:10:17 + + + > message_type[0] > field[0] > type: +desc_test_complex.proto:10:18 +desc_test_complex.proto:10:24 + + + > message_type[0] > field[0] > name: +desc_test_complex.proto:10:25 +desc_test_complex.proto:10:29 + + + > message_type[0] > field[0] > number: +desc_test_complex.proto:10:32 +desc_test_complex.proto:10:33 + + + > message_type[0] > field[1]: +desc_test_complex.proto:11:9 +desc_test_complex.proto:11:32 + + + > message_type[0] > field[1] > label: +desc_test_complex.proto:11:9 +desc_test_complex.proto:11:17 + + + > message_type[0] > field[1] > type: +desc_test_complex.proto:11:18 +desc_test_complex.proto:11:24 + + + > message_type[0] > field[1] > name: +desc_test_complex.proto:11:25 +desc_test_complex.proto:11:27 + + + > message_type[0] > field[1] > number: +desc_test_complex.proto:11:30 +desc_test_complex.proto:11:31 + + + > extension: +desc_test_complex.proto:14:1 +desc_test_complex.proto:18:2 + + + > extension[0]: +desc_test_complex.proto:17:9 +desc_test_complex.proto:17:39 + + + > extension[0] > extendee: +desc_test_complex.proto:14:8 +desc_test_complex.proto:16:25 + + + > extension[0] > label: +desc_test_complex.proto:17:9 +desc_test_complex.proto:17:17 + + + > extension[0] > type: +desc_test_complex.proto:17:18 +desc_test_complex.proto:17:24 + + + > extension[0] > name: +desc_test_complex.proto:17:25 +desc_test_complex.proto:17:30 + + + > extension[0] > number: +desc_test_complex.proto:17:33 +desc_test_complex.proto:17:38 + + + > message_type[1]: +desc_test_complex.proto:20:1 +desc_test_complex.proto:59:2 + + + > message_type[1] > name: +desc_test_complex.proto:20:9 +desc_test_complex.proto:20:13 + + + > message_type[1] > field[0]: +desc_test_complex.proto:21:9 +desc_test_complex.proto:21:55 + + + > message_type[1] > field[0] > label: +desc_test_complex.proto:21:9 +desc_test_complex.proto:21:17 + + + > message_type[1] > field[0] > type: +desc_test_complex.proto:21:18 +desc_test_complex.proto:21:24 + + + > message_type[1] > field[0] > name: +desc_test_complex.proto:21:25 +desc_test_complex.proto:21:28 + + + > message_type[1] > field[0] > number: +desc_test_complex.proto:21:31 +desc_test_complex.proto:21:32 + + + > message_type[1] > field[0] > options: +desc_test_complex.proto:21:33 +desc_test_complex.proto:21:54 + + + > message_type[1] > field[0] > json_name: +desc_test_complex.proto:21:34 +desc_test_complex.proto:21:53 + + + > message_type[1] > field[1]: +desc_test_complex.proto:22:9 +desc_test_complex.proto:22:34 + + + > message_type[1] > field[1] > label: +desc_test_complex.proto:22:9 +desc_test_complex.proto:22:17 + + + > message_type[1] > field[1] > type: +desc_test_complex.proto:22:18 +desc_test_complex.proto:22:23 + + + > message_type[1] > field[1] > name: +desc_test_complex.proto:22:24 +desc_test_complex.proto:22:29 + + + > message_type[1] > field[1] > number: +desc_test_complex.proto:22:32 +desc_test_complex.proto:22:33 + + + > message_type[1] > field[2]: +desc_test_complex.proto:23:9 +desc_test_complex.proto:23:31 + + + > message_type[1] > field[2] > label: +desc_test_complex.proto:23:9 +desc_test_complex.proto:23:17 + + + > message_type[1] > field[2] > type_name: +desc_test_complex.proto:23:18 +desc_test_complex.proto:23:24 + + + > message_type[1] > field[2] > name: +desc_test_complex.proto:23:25 +desc_test_complex.proto:23:26 + + + > message_type[1] > field[2] > number: +desc_test_complex.proto:23:29 +desc_test_complex.proto:23:30 + + + > message_type[1] > field[3]: +desc_test_complex.proto:24:9 +desc_test_complex.proto:24:31 + + + > message_type[1] > field[3] > label: +desc_test_complex.proto:24:9 +desc_test_complex.proto:24:17 + + + > message_type[1] > field[3] > type_name: +desc_test_complex.proto:24:18 +desc_test_complex.proto:24:24 + + + > message_type[1] > field[3] > name: +desc_test_complex.proto:24:25 +desc_test_complex.proto:24:26 + + + > message_type[1] > field[3] > number: +desc_test_complex.proto:24:29 +desc_test_complex.proto:24:30 + + + > message_type[1] > field[4]: +desc_test_complex.proto:25:9 +desc_test_complex.proto:25:34 + + + > message_type[1] > field[4] > type_name: +desc_test_complex.proto:25:9 +desc_test_complex.proto:25:27 + + + > message_type[1] > field[4] > name: +desc_test_complex.proto:25:28 +desc_test_complex.proto:25:29 + + + > message_type[1] > field[4] > number: +desc_test_complex.proto:25:32 +desc_test_complex.proto:25:33 + + + > message_type[1] > field[5]: +desc_test_complex.proto:27:9 +desc_test_complex.proto:27:67 + + + > message_type[1] > field[5] > label: +desc_test_complex.proto:27:9 +desc_test_complex.proto:27:17 + + + > message_type[1] > field[5] > type: +desc_test_complex.proto:27:18 +desc_test_complex.proto:27:23 + + + > message_type[1] > field[5] > name: +desc_test_complex.proto:27:24 +desc_test_complex.proto:27:25 + + + > message_type[1] > field[5] > number: +desc_test_complex.proto:27:28 +desc_test_complex.proto:27:29 + + + > message_type[1] > field[5] > options: +desc_test_complex.proto:27:30 +desc_test_complex.proto:27:66 + + + > message_type[1] > field[5] > default_value: +desc_test_complex.proto:27:31 +desc_test_complex.proto:27:65 + + + > message_type[1] > extension_range: +desc_test_complex.proto:29:9 +desc_test_complex.proto:29:31 + + + > message_type[1] > extension_range[0]: +desc_test_complex.proto:29:20 +desc_test_complex.proto:29:30 + + + > message_type[1] > extension_range[0] > start: +desc_test_complex.proto:29:20 +desc_test_complex.proto:29:23 + + + > message_type[1] > extension_range[0] > end: +desc_test_complex.proto:29:27 +desc_test_complex.proto:29:30 + + + > message_type[1] > extension_range: +desc_test_complex.proto:31:9 +desc_test_complex.proto:31:62 + + + > message_type[1] > extension_range[1]: +desc_test_complex.proto:31:20 +desc_test_complex.proto:31:30 + + + > message_type[1] > extension_range[1] > start: +desc_test_complex.proto:31:20 +desc_test_complex.proto:31:23 + + + > message_type[1] > extension_range[1] > end: +desc_test_complex.proto:31:27 +desc_test_complex.proto:31:30 + + + > message_type[1] > extension_range[1] > options: +desc_test_complex.proto:31:43 +desc_test_complex.proto:31:61 + + + > message_type[1] > extension_range[1] > options > label: +desc_test_complex.proto:31:44 +desc_test_complex.proto:31:60 + + + > message_type[1] > extension_range[2]: +desc_test_complex.proto:31:32 +desc_test_complex.proto:31:42 + + + > message_type[1] > extension_range[2] > start: +desc_test_complex.proto:31:32 +desc_test_complex.proto:31:35 + + + > message_type[1] > extension_range[2] > end: +desc_test_complex.proto:31:39 +desc_test_complex.proto:31:42 + + + > message_type[1] > extension_range[2] > options: +desc_test_complex.proto:31:43 +desc_test_complex.proto:31:61 + + + > message_type[1] > extension_range[2] > options > label: +desc_test_complex.proto:31:44 +desc_test_complex.proto:31:60 + + + > message_type[1] > nested_type[0]: +desc_test_complex.proto:33:9 +desc_test_complex.proto:58:10 + + + > message_type[1] > nested_type[0] > name: +desc_test_complex.proto:33:17 +desc_test_complex.proto:33:23 + + + > message_type[1] > nested_type[0] > extension: +desc_test_complex.proto:34:17 +desc_test_complex.proto:36:18 + + + > message_type[1] > nested_type[0] > extension[0]: +desc_test_complex.proto:35:25 +desc_test_complex.proto:35:56 + + + > message_type[1] > nested_type[0] > extension[0] !!! > extendee: +desc_test_complex.proto:34:24 +desc_test_complex.proto:34:54 + + + > message_type[1] > nested_type[0] > extension[0] !!! > label: +desc_test_complex.proto:35:25 +desc_test_complex.proto:35:33 + + + > message_type[1] > nested_type[0] > extension[0] !!! > type: +desc_test_complex.proto:35:34 +desc_test_complex.proto:35:39 + + + > message_type[1] > nested_type[0] > extension[0] !!! > name: +desc_test_complex.proto:35:40 +desc_test_complex.proto:35:47 + + + > message_type[1] > nested_type[0] > extension[0] !!! > number: +desc_test_complex.proto:35:50 +desc_test_complex.proto:35:55 + + + > message_type[1] > nested_type[0] > nested_type[0]: +desc_test_complex.proto:37:17 +desc_test_complex.proto:57:18 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > name: +desc_test_complex.proto:37:25 +desc_test_complex.proto:37:38 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0]: +desc_test_complex.proto:38:25 +desc_test_complex.proto:46:26 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > name: +desc_test_complex.proto:38:30 +desc_test_complex.proto:38:33 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[0]: +desc_test_complex.proto:39:33 +desc_test_complex.proto:39:40 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[0] > name: +desc_test_complex.proto:39:33 +desc_test_complex.proto:39:35 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[0] > number: +desc_test_complex.proto:39:38 +desc_test_complex.proto:39:39 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[1]: +desc_test_complex.proto:40:33 +desc_test_complex.proto:40:40 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[1] > name: +desc_test_complex.proto:40:33 +desc_test_complex.proto:40:35 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[1] > number: +desc_test_complex.proto:40:38 +desc_test_complex.proto:40:39 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[2]: +desc_test_complex.proto:41:33 +desc_test_complex.proto:41:40 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[2] > name: +desc_test_complex.proto:41:33 +desc_test_complex.proto:41:35 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[2] > number: +desc_test_complex.proto:41:38 +desc_test_complex.proto:41:39 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[3]: +desc_test_complex.proto:42:33 +desc_test_complex.proto:42:40 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[3] > name: +desc_test_complex.proto:42:33 +desc_test_complex.proto:42:35 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[3] > number: +desc_test_complex.proto:42:38 +desc_test_complex.proto:42:39 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[4]: +desc_test_complex.proto:43:33 +desc_test_complex.proto:43:40 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[4] > name: +desc_test_complex.proto:43:33 +desc_test_complex.proto:43:35 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[4] > number: +desc_test_complex.proto:43:38 +desc_test_complex.proto:43:39 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[5]: +desc_test_complex.proto:44:33 +desc_test_complex.proto:44:40 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[5] > name: +desc_test_complex.proto:44:33 +desc_test_complex.proto:44:35 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[5] > number: +desc_test_complex.proto:44:38 +desc_test_complex.proto:44:39 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[6]: +desc_test_complex.proto:45:33 +desc_test_complex.proto:45:40 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[6] > name: +desc_test_complex.proto:45:33 +desc_test_complex.proto:45:35 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > enum_type[0] > value[6] > number: +desc_test_complex.proto:45:38 +desc_test_complex.proto:45:39 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > options: +desc_test_complex.proto:47:25 +desc_test_complex.proto:47:50 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > options > fooblez: +desc_test_complex.proto:47:25 +desc_test_complex.proto:47:50 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > extension: +desc_test_complex.proto:48:25 +desc_test_complex.proto:50:26 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > extension[0]: +desc_test_complex.proto:49:33 +desc_test_complex.proto:49:64 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > extension[0] > extendee: +desc_test_complex.proto:48:32 +desc_test_complex.proto:48:36 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > extension[0] > label: +desc_test_complex.proto:49:33 +desc_test_complex.proto:49:41 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > extension[0] > type: +desc_test_complex.proto:49:42 +desc_test_complex.proto:49:48 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > extension[0] > name: +desc_test_complex.proto:49:49 +desc_test_complex.proto:49:57 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > extension[0] > number: +desc_test_complex.proto:49:60 +desc_test_complex.proto:49:63 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > options: +desc_test_complex.proto:51:25 +desc_test_complex.proto:51:108 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > options > rept[0]: +desc_test_complex.proto:51:25 +desc_test_complex.proto:51:108 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > nested_type[0]: +desc_test_complex.proto:52:25 +desc_test_complex.proto:56:26 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > nested_type[0] > name: +desc_test_complex.proto:52:33 +desc_test_complex.proto:52:51 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > nested_type[0] > options: +desc_test_complex.proto:53:33 +desc_test_complex.proto:53:109 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > nested_type[0] > options > rept[0]: +desc_test_complex.proto:53:33 +desc_test_complex.proto:53:109 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > nested_type[0] > field[0]: +desc_test_complex.proto:55:33 +desc_test_complex.proto:55:56 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > nested_type[0] > field[0] > label: +desc_test_complex.proto:55:33 +desc_test_complex.proto:55:41 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > nested_type[0] > field[0] > type_name: +desc_test_complex.proto:55:42 +desc_test_complex.proto:55:46 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > nested_type[0] > field[0] > name: +desc_test_complex.proto:55:47 +desc_test_complex.proto:55:51 + + + > message_type[1] > nested_type[0] > nested_type[0] !!! > nested_type[0] > field[0] > number: +desc_test_complex.proto:55:54 +desc_test_complex.proto:55:55 + + + > enum_type[0]: +desc_test_complex.proto:61:1 +desc_test_complex.proto:70:2 + + + > enum_type[0] > name: +desc_test_complex.proto:61:6 +desc_test_complex.proto:61:26 + + + > enum_type[0] > value[0]: +desc_test_complex.proto:62:9 +desc_test_complex.proto:62:15 + + + > enum_type[0] > value[0] > name: +desc_test_complex.proto:62:9 +desc_test_complex.proto:62:10 + + + > enum_type[0] > value[0] > number: +desc_test_complex.proto:62:13 +desc_test_complex.proto:62:14 + + + > enum_type[0] > value[1]: +desc_test_complex.proto:63:9 +desc_test_complex.proto:63:15 + + + > enum_type[0] > value[1] > name: +desc_test_complex.proto:63:9 +desc_test_complex.proto:63:10 + + + > enum_type[0] > value[1] > number: +desc_test_complex.proto:63:13 +desc_test_complex.proto:63:14 + + + > enum_type[0] > value[2]: +desc_test_complex.proto:64:9 +desc_test_complex.proto:64:15 + + + > enum_type[0] > value[2] > name: +desc_test_complex.proto:64:9 +desc_test_complex.proto:64:10 + + + > enum_type[0] > value[2] > number: +desc_test_complex.proto:64:13 +desc_test_complex.proto:64:14 + + + > enum_type[0] > reserved_range: +desc_test_complex.proto:65:9 +desc_test_complex.proto:65:30 + + + > enum_type[0] > reserved_range[0]: +desc_test_complex.proto:65:18 +desc_test_complex.proto:65:29 + + + > enum_type[0] > reserved_range[0] > start: +desc_test_complex.proto:65:18 +desc_test_complex.proto:65:22 + + + > enum_type[0] > reserved_range[0] > end: +desc_test_complex.proto:65:26 +desc_test_complex.proto:65:29 + + + > enum_type[0] > reserved_range: +desc_test_complex.proto:66:9 +desc_test_complex.proto:66:26 + + + > enum_type[0] > reserved_range[1]: +desc_test_complex.proto:66:18 +desc_test_complex.proto:66:25 + + + > enum_type[0] > reserved_range[1] > start: +desc_test_complex.proto:66:18 +desc_test_complex.proto:66:20 + + + > enum_type[0] > reserved_range[1] > end: +desc_test_complex.proto:66:24 +desc_test_complex.proto:66:25 + + + > enum_type[0] > reserved_range: +desc_test_complex.proto:67:9 +desc_test_complex.proto:67:40 + + + > enum_type[0] > reserved_range[2]: +desc_test_complex.proto:67:18 +desc_test_complex.proto:67:25 + + + > enum_type[0] > reserved_range[2] > start: +desc_test_complex.proto:67:18 +desc_test_complex.proto:67:19 + + + > enum_type[0] > reserved_range[2] > end: +desc_test_complex.proto:67:23 +desc_test_complex.proto:67:25 + + + > enum_type[0] > reserved_range[3]: +desc_test_complex.proto:67:27 +desc_test_complex.proto:67:35 + + + > enum_type[0] > reserved_range[3] > start: +desc_test_complex.proto:67:27 +desc_test_complex.proto:67:29 + + + > enum_type[0] > reserved_range[3] > end: +desc_test_complex.proto:67:33 +desc_test_complex.proto:67:35 + + + > enum_type[0] > reserved_range[4]: +desc_test_complex.proto:67:37 +desc_test_complex.proto:67:39 + + + > enum_type[0] > reserved_range[4] > start: +desc_test_complex.proto:67:37 +desc_test_complex.proto:67:39 + + + > enum_type[0] > reserved_range: +desc_test_complex.proto:68:9 +desc_test_complex.proto:68:27 + + + > enum_type[0] > reserved_range[5]: +desc_test_complex.proto:68:18 +desc_test_complex.proto:68:26 + + + > enum_type[0] > reserved_range[5] > start: +desc_test_complex.proto:68:18 +desc_test_complex.proto:68:20 + + + > enum_type[0] > reserved_range[5] > end: +desc_test_complex.proto:68:24 +desc_test_complex.proto:68:26 + + + > enum_type[0] > reserved_name: +desc_test_complex.proto:69:9 +desc_test_complex.proto:69:32 + + + > enum_type[0] > reserved_name[0]: +desc_test_complex.proto:69:18 +desc_test_complex.proto:69:21 + + + > enum_type[0] > reserved_name[1]: +desc_test_complex.proto:69:23 +desc_test_complex.proto:69:26 + + + > enum_type[0] > reserved_name[2]: +desc_test_complex.proto:69:28 +desc_test_complex.proto:69:31 + + + > message_type[2]: +desc_test_complex.proto:72:1 +desc_test_complex.proto:76:2 + + + > message_type[2] > name: +desc_test_complex.proto:72:9 +desc_test_complex.proto:72:32 + + + > message_type[2] > reserved_range: +desc_test_complex.proto:73:9 +desc_test_complex.proto:73:40 + + + > message_type[2] > reserved_range[0]: +desc_test_complex.proto:73:18 +desc_test_complex.proto:73:25 + + + > message_type[2] > reserved_range[0] > start: +desc_test_complex.proto:73:18 +desc_test_complex.proto:73:19 + + + > message_type[2] > reserved_range[0] > end: +desc_test_complex.proto:73:23 +desc_test_complex.proto:73:25 + + + > message_type[2] > reserved_range[1]: +desc_test_complex.proto:73:27 +desc_test_complex.proto:73:35 + + + > message_type[2] > reserved_range[1] > start: +desc_test_complex.proto:73:27 +desc_test_complex.proto:73:29 + + + > message_type[2] > reserved_range[1] > end: +desc_test_complex.proto:73:33 +desc_test_complex.proto:73:35 + + + > message_type[2] > reserved_range[2]: +desc_test_complex.proto:73:37 +desc_test_complex.proto:73:39 + + + > message_type[2] > reserved_range[2] > start: +desc_test_complex.proto:73:37 +desc_test_complex.proto:73:39 + + + > message_type[2] > reserved_range: +desc_test_complex.proto:74:9 +desc_test_complex.proto:74:30 + + + > message_type[2] > reserved_range[3]: +desc_test_complex.proto:74:18 +desc_test_complex.proto:74:29 + + + > message_type[2] > reserved_range[3] > start: +desc_test_complex.proto:74:18 +desc_test_complex.proto:74:22 + + + > message_type[2] > reserved_range[3] > end: +desc_test_complex.proto:74:26 +desc_test_complex.proto:74:29 + + + > message_type[2] > reserved_name: +desc_test_complex.proto:75:9 +desc_test_complex.proto:75:32 + + + > message_type[2] > reserved_name[0]: +desc_test_complex.proto:75:18 +desc_test_complex.proto:75:21 + + + > message_type[2] > reserved_name[1]: +desc_test_complex.proto:75:23 +desc_test_complex.proto:75:26 + + + > message_type[2] > reserved_name[2]: +desc_test_complex.proto:75:28 +desc_test_complex.proto:75:31 + + + > extension: +desc_test_complex.proto:78:1 +desc_test_complex.proto:82:2 + + + > extension[1]: +desc_test_complex.proto:79:9 +desc_test_complex.proto:79:36 + + + > extension[1] > extendee: +desc_test_complex.proto:78:8 +desc_test_complex.proto:78:38 + + + > extension[1] > label: +desc_test_complex.proto:79:9 +desc_test_complex.proto:79:17 + + + > extension[1] > type_name: +desc_test_complex.proto:79:18 +desc_test_complex.proto:79:22 + + + > extension[1] > name: +desc_test_complex.proto:79:23 +desc_test_complex.proto:79:27 + + + > extension[1] > number: +desc_test_complex.proto:79:30 +desc_test_complex.proto:79:35 + + + > extension[2]: +desc_test_complex.proto:80:9 +desc_test_complex.proto:80:60 + + + > extension[2] > extendee: +desc_test_complex.proto:78:8 +desc_test_complex.proto:78:38 + + + > extension[2] > label: +desc_test_complex.proto:80:9 +desc_test_complex.proto:80:17 + + + > extension[2] > type_name: +desc_test_complex.proto:80:18 +desc_test_complex.proto:80:47 + + + > extension[2] > name: +desc_test_complex.proto:80:48 +desc_test_complex.proto:80:51 + + + > extension[2] > number: +desc_test_complex.proto:80:54 +desc_test_complex.proto:80:59 + + + > extension[3]: +desc_test_complex.proto:81:9 +desc_test_complex.proto:81:36 + + + > extension[3] > extendee: +desc_test_complex.proto:78:8 +desc_test_complex.proto:78:38 + + + > extension[3] > label: +desc_test_complex.proto:81:9 +desc_test_complex.proto:81:17 + + + > extension[3] > type_name: +desc_test_complex.proto:81:18 +desc_test_complex.proto:81:25 + + + > extension[3] > name: +desc_test_complex.proto:81:26 +desc_test_complex.proto:81:27 + + + > extension[3] > number: +desc_test_complex.proto:81:30 +desc_test_complex.proto:81:35 + + + > message_type[3]: +desc_test_complex.proto:84:1 +desc_test_complex.proto:99:2 + + + > message_type[3] > name: +desc_test_complex.proto:84:9 +desc_test_complex.proto:84:16 + + + > message_type[3] > options: +desc_test_complex.proto:85:5 +desc_test_complex.proto:85:130 + + + > message_type[3] > options > rept[0]: +desc_test_complex.proto:85:5 +desc_test_complex.proto:85:130 + + + > message_type[3] > options: +desc_test_complex.proto:86:5 +desc_test_complex.proto:86:115 + + + > message_type[3] > options > rept[1]: +desc_test_complex.proto:86:5 +desc_test_complex.proto:86:115 + + + > message_type[3] > options: +desc_test_complex.proto:87:5 +desc_test_complex.proto:87:36 + + + > message_type[3] > options > rept[2]: +desc_test_complex.proto:87:5 +desc_test_complex.proto:87:36 + + + > message_type[3] > options: +desc_test_complex.proto:88:5 +desc_test_complex.proto:88:23 + + + > message_type[3] > options > eee: +desc_test_complex.proto:88:5 +desc_test_complex.proto:88:23 + + + > message_type[3] > options: +desc_test_complex.proto:89:9 +desc_test_complex.proto:89:34 + + + > message_type[3] > options > a: +desc_test_complex.proto:89:9 +desc_test_complex.proto:89:34 + + + > message_type[3] > options: +desc_test_complex.proto:90:9 +desc_test_complex.proto:90:86 + + + > message_type[3] > options > a > test: +desc_test_complex.proto:90:9 +desc_test_complex.proto:90:86 + + + > message_type[3] > options: +desc_test_complex.proto:91:9 +desc_test_complex.proto:91:37 + + + > message_type[3] > options > a > test > foo: +desc_test_complex.proto:91:9 +desc_test_complex.proto:91:37 + + + > message_type[3] > options: +desc_test_complex.proto:92:9 +desc_test_complex.proto:92:41 + + + > message_type[3] > options > a > test > s > name: +desc_test_complex.proto:92:9 +desc_test_complex.proto:92:41 + + + > message_type[3] > options: +desc_test_complex.proto:93:5 +desc_test_complex.proto:93:34 + + + > message_type[3] > options > a > test > s > id: +desc_test_complex.proto:93:5 +desc_test_complex.proto:93:34 + + + > message_type[3] > options: +desc_test_complex.proto:94:5 +desc_test_complex.proto:94:31 + + + > message_type[3] > options > a > test > array[0]: +desc_test_complex.proto:94:5 +desc_test_complex.proto:94:31 + + + > message_type[3] > options: +desc_test_complex.proto:95:5 +desc_test_complex.proto:95:31 + + + > message_type[3] > options > a > test > array[1]: +desc_test_complex.proto:95:5 +desc_test_complex.proto:95:31 + + + > message_type[3] > field[0]: +desc_test_complex.proto:97:5 +desc_test_complex.proto:97:28 + + + > message_type[3] > field[0] > label: +desc_test_complex.proto:97:5 +desc_test_complex.proto:97:13 + + + > message_type[3] > field[0] > type_name: +desc_test_complex.proto:97:14 +desc_test_complex.proto:97:18 + + + > message_type[3] > field[0] > name: +desc_test_complex.proto:97:19 +desc_test_complex.proto:97:23 + + + > message_type[3] > field[0] > number: +desc_test_complex.proto:97:26 +desc_test_complex.proto:97:27 + + + > message_type[3] > field[1]: +desc_test_complex.proto:98:5 +desc_test_complex.proto:98:67 + + + > message_type[3] > field[1] > label: +desc_test_complex.proto:98:5 +desc_test_complex.proto:98:13 + + + > message_type[3] > field[1] > type_name: +desc_test_complex.proto:98:14 +desc_test_complex.proto:98:43 + + + > message_type[3] > field[1] > name: +desc_test_complex.proto:98:44 +desc_test_complex.proto:98:47 + + + > message_type[3] > field[1] > number: +desc_test_complex.proto:98:50 +desc_test_complex.proto:98:51 + + + > message_type[3] > field[1] > options: +desc_test_complex.proto:98:52 +desc_test_complex.proto:98:66 + + + > message_type[3] > field[1] > default_value: +desc_test_complex.proto:98:53 +desc_test_complex.proto:98:65 + + + > message_type[4]: +desc_test_complex.proto:101:1 +desc_test_complex.proto:115:2 + + + > message_type[4] > name: +desc_test_complex.proto:101:9 +desc_test_complex.proto:101:18 + + + > message_type[4] > field[0]: +desc_test_complex.proto:102:9 +desc_test_complex.proto:102:41 + + + > message_type[4] > field[0] > label: +desc_test_complex.proto:102:9 +desc_test_complex.proto:102:17 + + + > message_type[4] > field[0] > type: +desc_test_complex.proto:102:18 +desc_test_complex.proto:102:22 + + + > message_type[4] > field[0] > name: +desc_test_complex.proto:102:23 +desc_test_complex.proto:102:36 + + + > message_type[4] > field[0] > number: +desc_test_complex.proto:102:39 +desc_test_complex.proto:102:40 + + + > message_type[4] > enum_type[0]: +desc_test_complex.proto:104:9 +desc_test_complex.proto:108:10 + + + > message_type[4] > enum_type[0] > name: +desc_test_complex.proto:104:14 +desc_test_complex.proto:104:20 + + + > message_type[4] > enum_type[0] > value[0]: +desc_test_complex.proto:105:17 +desc_test_complex.proto:105:27 + + + > message_type[4] > enum_type[0] > value[0] > name: +desc_test_complex.proto:105:17 +desc_test_complex.proto:105:22 + + + > message_type[4] > enum_type[0] > value[0] > number: +desc_test_complex.proto:105:25 +desc_test_complex.proto:105:26 + + + > message_type[4] > enum_type[0] > value[1]: +desc_test_complex.proto:106:17 +desc_test_complex.proto:106:26 + + + > message_type[4] > enum_type[0] > value[1] > name: +desc_test_complex.proto:106:17 +desc_test_complex.proto:106:21 + + + > message_type[4] > enum_type[0] > value[1] > number: +desc_test_complex.proto:106:24 +desc_test_complex.proto:106:25 + + + > message_type[4] > enum_type[0] > value[2]: +desc_test_complex.proto:107:17 +desc_test_complex.proto:107:27 + + + > message_type[4] > enum_type[0] > value[2] > name: +desc_test_complex.proto:107:17 +desc_test_complex.proto:107:22 + + + > message_type[4] > enum_type[0] > value[2] > number: +desc_test_complex.proto:107:25 +desc_test_complex.proto:107:26 + + + > message_type[4] > nested_type[0]: +desc_test_complex.proto:109:9 +desc_test_complex.proto:112:10 + + + > message_type[4] > nested_type[0] > name: +desc_test_complex.proto:109:17 +desc_test_complex.proto:109:27 + + + > message_type[4] > nested_type[0] > field[0]: +desc_test_complex.proto:110:17 +desc_test_complex.proto:110:44 + + + > message_type[4] > nested_type[0] > field[0] > label: +desc_test_complex.proto:110:17 +desc_test_complex.proto:110:25 + + + > message_type[4] > nested_type[0] > field[0] > type_name: +desc_test_complex.proto:110:26 +desc_test_complex.proto:110:32 + + + > message_type[4] > nested_type[0] > field[0] > name: +desc_test_complex.proto:110:33 +desc_test_complex.proto:110:39 + + + > message_type[4] > nested_type[0] > field[0] > number: +desc_test_complex.proto:110:42 +desc_test_complex.proto:110:43 + + + > message_type[4] > nested_type[0] > field[1]: +desc_test_complex.proto:111:17 +desc_test_complex.proto:111:44 + + + > message_type[4] > nested_type[0] > field[1] > label: +desc_test_complex.proto:111:17 +desc_test_complex.proto:111:25 + + + > message_type[4] > nested_type[0] > field[1] > type: +desc_test_complex.proto:111:26 +desc_test_complex.proto:111:32 + + + > message_type[4] > nested_type[0] > field[1] > name: +desc_test_complex.proto:111:33 +desc_test_complex.proto:111:39 + + + > message_type[4] > nested_type[0] > field[1] > number: +desc_test_complex.proto:111:42 +desc_test_complex.proto:111:43 + + + > message_type[4] > field[1]: +desc_test_complex.proto:114:9 +desc_test_complex.proto:114:44 + + + > message_type[4] > field[1] > label: +desc_test_complex.proto:114:9 +desc_test_complex.proto:114:17 + + + > message_type[4] > field[1] > type_name: +desc_test_complex.proto:114:18 +desc_test_complex.proto:114:28 + + + > message_type[4] > field[1] > name: +desc_test_complex.proto:114:29 +desc_test_complex.proto:114:39 + + + > message_type[4] > field[1] > number: +desc_test_complex.proto:114:42 +desc_test_complex.proto:114:43 + + + > extension: +desc_test_complex.proto:117:1 +desc_test_complex.proto:119:2 + + + > extension[4]: +desc_test_complex.proto:118:9 +desc_test_complex.proto:118:46 + + + > extension[4] > extendee: +desc_test_complex.proto:117:8 +desc_test_complex.proto:117:37 + + + > extension[4] > label: +desc_test_complex.proto:118:9 +desc_test_complex.proto:118:17 + + + > extension[4] > type_name: +desc_test_complex.proto:118:18 +desc_test_complex.proto:118:27 + + + > extension[4] > name: +desc_test_complex.proto:118:28 +desc_test_complex.proto:118:37 + + + > extension[4] > number: +desc_test_complex.proto:118:40 +desc_test_complex.proto:118:45 + + + > service[0]: +desc_test_complex.proto:121:1 +desc_test_complex.proto:140:2 + + + > service[0] > name: +desc_test_complex.proto:121:9 +desc_test_complex.proto:121:24 + + + > service[0] > method[0]: +desc_test_complex.proto:122:9 +desc_test_complex.proto:130:10 + + + > service[0] > method[0] > name: +desc_test_complex.proto:122:13 +desc_test_complex.proto:122:21 + + + > service[0] > method[0] > input_type: +desc_test_complex.proto:122:22 +desc_test_complex.proto:122:26 + + + > service[0] > method[0] > output_type: +desc_test_complex.proto:122:37 +desc_test_complex.proto:122:41 + + + > service[0] > method[0] > options: +desc_test_complex.proto:123:17 +desc_test_complex.proto:129:19 + + + > service[0] > method[0] > options > validator: +desc_test_complex.proto:123:17 +desc_test_complex.proto:129:19 + + + > service[0] > method[1]: +desc_test_complex.proto:131:9 +desc_test_complex.proto:139:10 + + + > service[0] > method[1] > name: +desc_test_complex.proto:131:13 +desc_test_complex.proto:131:16 + + + > service[0] > method[1] > input_type: +desc_test_complex.proto:131:17 +desc_test_complex.proto:131:21 + + + > service[0] > method[1] > output_type: +desc_test_complex.proto:131:32 +desc_test_complex.proto:131:36 + + + > service[0] > method[1] > options: +desc_test_complex.proto:132:17 +desc_test_complex.proto:138:19 + + + > service[0] > method[1] > options > validator: +desc_test_complex.proto:132:17 +desc_test_complex.proto:138:19 + + + > message_type[5]: +desc_test_complex.proto:142:1 +desc_test_complex.proto:168:2 + + + > message_type[5] > name: +desc_test_complex.proto:142:9 +desc_test_complex.proto:142:13 + + + > message_type[5] > nested_type[0]: +desc_test_complex.proto:143:3 +desc_test_complex.proto:148:4 + + + > message_type[5] > nested_type[0] > name: +desc_test_complex.proto:143:11 +desc_test_complex.proto:143:21 + + + > message_type[5] > nested_type[0] > field[0]: +desc_test_complex.proto:144:5 +desc_test_complex.proto:144:33 + + + > message_type[5] > nested_type[0] > field[0] > label: +desc_test_complex.proto:144:5 +desc_test_complex.proto:144:13 + + + > message_type[5] > nested_type[0] > field[0] > type: +desc_test_complex.proto:144:14 +desc_test_complex.proto:144:20 + + + > message_type[5] > nested_type[0] > field[0] > name: +desc_test_complex.proto:144:21 +desc_test_complex.proto:144:28 + + + > message_type[5] > nested_type[0] > field[0] > number: +desc_test_complex.proto:144:31 +desc_test_complex.proto:144:32 + + + > message_type[5] > nested_type[0] > field[1]: +desc_test_complex.proto:145:5 +desc_test_complex.proto:145:35 + + + > message_type[5] > nested_type[0] > field[1] > label: +desc_test_complex.proto:145:5 +desc_test_complex.proto:145:13 + + + > message_type[5] > nested_type[0] > field[1] > type: +desc_test_complex.proto:145:14 +desc_test_complex.proto:145:18 + + + > message_type[5] > nested_type[0] > field[1] > name: +desc_test_complex.proto:145:19 +desc_test_complex.proto:145:30 + + + > message_type[5] > nested_type[0] > field[1] > number: +desc_test_complex.proto:145:33 +desc_test_complex.proto:145:34 + + + > message_type[5] > nested_type[0] > field[2]: +desc_test_complex.proto:146:5 +desc_test_complex.proto:146:32 + + + > message_type[5] > nested_type[0] > field[2] > label: +desc_test_complex.proto:146:5 +desc_test_complex.proto:146:13 + + + > message_type[5] > nested_type[0] > field[2] > type: +desc_test_complex.proto:146:14 +desc_test_complex.proto:146:19 + + + > message_type[5] > nested_type[0] > field[2] > name: +desc_test_complex.proto:146:20 +desc_test_complex.proto:146:27 + + + > message_type[5] > nested_type[0] > field[2] > number: +desc_test_complex.proto:146:30 +desc_test_complex.proto:146:31 + + + > message_type[5] > nested_type[0] > field[3]: +desc_test_complex.proto:147:5 +desc_test_complex.proto:147:32 + + + > message_type[5] > nested_type[0] > field[3] > label: +desc_test_complex.proto:147:5 +desc_test_complex.proto:147:13 + + + > message_type[5] > nested_type[0] > field[3] > type: +desc_test_complex.proto:147:14 +desc_test_complex.proto:147:19 + + + > message_type[5] > nested_type[0] > field[3] > name: +desc_test_complex.proto:147:20 +desc_test_complex.proto:147:27 + + + > message_type[5] > nested_type[0] > field[3] > number: +desc_test_complex.proto:147:30 +desc_test_complex.proto:147:31 + + + > message_type[5] > nested_type[1]: +desc_test_complex.proto:149:3 +desc_test_complex.proto:152:4 + + + > message_type[5] > nested_type[1] > name: +desc_test_complex.proto:149:11 +desc_test_complex.proto:149:18 + + + > message_type[5] > nested_type[1] > field[0]: +desc_test_complex.proto:150:5 +desc_test_complex.proto:150:32 + + + > message_type[5] > nested_type[1] > field[0] > label: +desc_test_complex.proto:150:5 +desc_test_complex.proto:150:13 + + + > message_type[5] > nested_type[1] > field[0] > type: +desc_test_complex.proto:150:14 +desc_test_complex.proto:150:19 + + + > message_type[5] > nested_type[1] > field[0] > name: +desc_test_complex.proto:150:20 +desc_test_complex.proto:150:27 + + + > message_type[5] > nested_type[1] > field[0] > number: +desc_test_complex.proto:150:30 +desc_test_complex.proto:150:31 + + + > message_type[5] > nested_type[1] > field[1]: +desc_test_complex.proto:151:5 +desc_test_complex.proto:151:33 + + + > message_type[5] > nested_type[1] > field[1] > label: +desc_test_complex.proto:151:5 +desc_test_complex.proto:151:13 + + + > message_type[5] > nested_type[1] > field[1] > type: +desc_test_complex.proto:151:14 +desc_test_complex.proto:151:20 + + + > message_type[5] > nested_type[1] > field[1] > name: +desc_test_complex.proto:151:21 +desc_test_complex.proto:151:28 + + + > message_type[5] > nested_type[1] > field[1] > number: +desc_test_complex.proto:151:31 +desc_test_complex.proto:151:32 + + + > message_type[5] > nested_type[2]: +desc_test_complex.proto:153:3 +desc_test_complex.proto:158:4 + + + > message_type[5] > nested_type[2] > name: +desc_test_complex.proto:153:11 +desc_test_complex.proto:153:23 + + + > message_type[5] > nested_type[2] > field[0]: +desc_test_complex.proto:154:5 +desc_test_complex.proto:154:35 + + + > message_type[5] > nested_type[2] > field[0] > label: +desc_test_complex.proto:154:5 +desc_test_complex.proto:154:13 + + + > message_type[5] > nested_type[2] > field[0] > type: +desc_test_complex.proto:154:14 +desc_test_complex.proto:154:18 + + + > message_type[5] > nested_type[2] > field[0] > name: +desc_test_complex.proto:154:19 +desc_test_complex.proto:154:30 + + + > message_type[5] > nested_type[2] > field[0] > number: +desc_test_complex.proto:154:33 +desc_test_complex.proto:154:34 + + + > message_type[5] > nested_type[2] > field[1]: +desc_test_complex.proto:155:5 +desc_test_complex.proto:155:34 + + + > message_type[5] > nested_type[2] > field[1] > label: +desc_test_complex.proto:155:5 +desc_test_complex.proto:155:13 + + + > message_type[5] > nested_type[2] > field[1] > type: +desc_test_complex.proto:155:14 +desc_test_complex.proto:155:19 + + + > message_type[5] > nested_type[2] > field[1] > name: +desc_test_complex.proto:155:20 +desc_test_complex.proto:155:29 + + + > message_type[5] > nested_type[2] > field[1] > number: +desc_test_complex.proto:155:32 +desc_test_complex.proto:155:33 + + + > message_type[5] > nested_type[2] > field[2]: +desc_test_complex.proto:156:5 +desc_test_complex.proto:156:34 + + + > message_type[5] > nested_type[2] > field[2] > label: +desc_test_complex.proto:156:5 +desc_test_complex.proto:156:13 + + + > message_type[5] > nested_type[2] > field[2] > type: +desc_test_complex.proto:156:14 +desc_test_complex.proto:156:19 + + + > message_type[5] > nested_type[2] > field[2] > name: +desc_test_complex.proto:156:20 +desc_test_complex.proto:156:29 + + + > message_type[5] > nested_type[2] > field[2] > number: +desc_test_complex.proto:156:32 +desc_test_complex.proto:156:33 + + + > message_type[5] > nested_type[2] > field[3]: +desc_test_complex.proto:157:5 +desc_test_complex.proto:157:29 + + + > message_type[5] > nested_type[2] > field[3] > label: +desc_test_complex.proto:157:5 +desc_test_complex.proto:157:13 + + + > message_type[5] > nested_type[2] > field[3] > type_name: +desc_test_complex.proto:157:14 +desc_test_complex.proto:157:18 + + + > message_type[5] > nested_type[2] > field[3] > name: +desc_test_complex.proto:157:19 +desc_test_complex.proto:157:24 + + + > message_type[5] > nested_type[2] > field[3] > number: +desc_test_complex.proto:157:27 +desc_test_complex.proto:157:28 + + + > message_type[5] > oneof_decl[0]: +desc_test_complex.proto:159:3 +desc_test_complex.proto:167:4 + + + > message_type[5] > oneof_decl[0] > name: +desc_test_complex.proto:159:9 +desc_test_complex.proto:159:13 + + + > message_type[5] > field[0]: +desc_test_complex.proto:160:5 +desc_test_complex.proto:160:27 + + + > message_type[5] > field[0] > type_name: +desc_test_complex.proto:160:5 +desc_test_complex.proto:160:15 + + + > message_type[5] > field[0] > name: +desc_test_complex.proto:160:16 +desc_test_complex.proto:160:22 + + + > message_type[5] > field[0] > number: +desc_test_complex.proto:160:25 +desc_test_complex.proto:160:26 + + + > message_type[5] > field[1]: +desc_test_complex.proto:161:5 +desc_test_complex.proto:161:31 + + + > message_type[5] > field[1] > type_name: +desc_test_complex.proto:161:5 +desc_test_complex.proto:161:17 + + + > message_type[5] > field[1] > name: +desc_test_complex.proto:161:18 +desc_test_complex.proto:161:26 + + + > message_type[5] > field[1] > number: +desc_test_complex.proto:161:29 +desc_test_complex.proto:161:30 + + + > message_type[5] > field[2]: +desc_test_complex.proto:162:5 +desc_test_complex.proto:162:21 + + + > message_type[5] > field[2] > type_name: +desc_test_complex.proto:162:5 +desc_test_complex.proto:162:12 + + + > message_type[5] > field[2] > name: +desc_test_complex.proto:162:13 +desc_test_complex.proto:162:16 + + + > message_type[5] > field[2] > number: +desc_test_complex.proto:162:19 +desc_test_complex.proto:162:20 + + + > message_type[5] > field[3]: +desc_test_complex.proto:163:9 +desc_test_complex.proto:166:10 + + + > message_type[5] > field[3] > type: +desc_test_complex.proto:163:9 +desc_test_complex.proto:163:14 + + + > message_type[5] > field[3] > name: +desc_test_complex.proto:163:15 +desc_test_complex.proto:163:24 + + + > message_type[5] > field[3] > number: +desc_test_complex.proto:163:27 +desc_test_complex.proto:163:28 + + + > message_type[5] > nested_type[3]: +desc_test_complex.proto:163:9 +desc_test_complex.proto:166:10 + + + > message_type[5] > nested_type[3] > name: +desc_test_complex.proto:163:15 +desc_test_complex.proto:163:24 + + + > message_type[5] > field[3] > type_name: +desc_test_complex.proto:163:15 +desc_test_complex.proto:163:24 + + + > message_type[5] > nested_type[3] > field[0]: +desc_test_complex.proto:164:17 +desc_test_complex.proto:164:45 + + + > message_type[5] > nested_type[3] > field[0] > label: +desc_test_complex.proto:164:17 +desc_test_complex.proto:164:25 + + + > message_type[5] > nested_type[3] > field[0] > type: +desc_test_complex.proto:164:26 +desc_test_complex.proto:164:32 + + + > message_type[5] > nested_type[3] > field[0] > name: +desc_test_complex.proto:164:33 +desc_test_complex.proto:164:40 + + + > message_type[5] > nested_type[3] > field[0] > number: +desc_test_complex.proto:164:43 +desc_test_complex.proto:164:44 + + + > message_type[5] > nested_type[3] > field[1]: +desc_test_complex.proto:165:17 +desc_test_complex.proto:165:45 + + + > message_type[5] > nested_type[3] > field[1] > label: +desc_test_complex.proto:165:17 +desc_test_complex.proto:165:25 + + + > message_type[5] > nested_type[3] > field[1] > type: +desc_test_complex.proto:165:26 +desc_test_complex.proto:165:32 + + + > message_type[5] > nested_type[3] > field[1] > name: +desc_test_complex.proto:165:33 +desc_test_complex.proto:165:40 + + + > message_type[5] > nested_type[3] > field[1] > number: +desc_test_complex.proto:165:43 +desc_test_complex.proto:165:44 + + + > extension: +desc_test_complex.proto:170:1 +desc_test_complex.proto:172:2 + + + > extension[5]: +desc_test_complex.proto:171:3 +desc_test_complex.proto:171:30 + + + > extension[5] > extendee: +desc_test_complex.proto:170:8 +desc_test_complex.proto:170:36 + + + > extension[5] > label: +desc_test_complex.proto:171:3 +desc_test_complex.proto:171:11 + + + > extension[5] > type_name: +desc_test_complex.proto:171:12 +desc_test_complex.proto:171:16 + + + > extension[5] > name: +desc_test_complex.proto:171:17 +desc_test_complex.proto:171:22 + + + > extension[5] > number: +desc_test_complex.proto:171:25 +desc_test_complex.proto:171:29 + + + > message_type[6]: +desc_test_complex.proto:174:1 +desc_test_complex.proto:180:2 + + + > message_type[6] > name: +desc_test_complex.proto:174:9 +desc_test_complex.proto:174:24 + + + > message_type[6] > field[0]: +desc_test_complex.proto:175:5 +desc_test_complex.proto:179:11 + + + > message_type[6] > field[0] > label: +desc_test_complex.proto:175:5 +desc_test_complex.proto:175:13 + + + > message_type[6] > field[0] > type: +desc_test_complex.proto:175:14 +desc_test_complex.proto:175:20 + + + > message_type[6] > field[0] > name: +desc_test_complex.proto:175:21 +desc_test_complex.proto:175:29 + + + > message_type[6] > field[0] > number: +desc_test_complex.proto:175:32 +desc_test_complex.proto:175:33 + + + > message_type[6] > field[0] > options: +desc_test_complex.proto:176:7 +desc_test_complex.proto:179:10 + + + > message_type[6] > field[0] > options > rules > repeated: +desc_test_complex.proto:176:8 +desc_test_complex.proto:179:9 + + + > message_type[7]: +desc_test_complex.proto:184:1 +desc_test_complex.proto:220:2 + Leading detached comment [0]: + tests cases where field names collide with keywords + + + + > message_type[7] > name: +desc_test_complex.proto:184:9 +desc_test_complex.proto:184:26 + + + > message_type[7] > field[0]: +desc_test_complex.proto:185:9 +desc_test_complex.proto:185:34 + + + > message_type[7] > field[0] > label: +desc_test_complex.proto:185:9 +desc_test_complex.proto:185:17 + + + > message_type[7] > field[0] > type: +desc_test_complex.proto:185:18 +desc_test_complex.proto:185:22 + + + > message_type[7] > field[0] > name: +desc_test_complex.proto:185:23 +desc_test_complex.proto:185:29 + + + > message_type[7] > field[0] > number: +desc_test_complex.proto:185:32 +desc_test_complex.proto:185:33 + + + > message_type[7] > field[1]: +desc_test_complex.proto:186:9 +desc_test_complex.proto:186:34 + + + > message_type[7] > field[1] > label: +desc_test_complex.proto:186:9 +desc_test_complex.proto:186:17 + + + > message_type[7] > field[1] > type: +desc_test_complex.proto:186:18 +desc_test_complex.proto:186:22 + + + > message_type[7] > field[1] > name: +desc_test_complex.proto:186:23 +desc_test_complex.proto:186:29 + + + > message_type[7] > field[1] > number: +desc_test_complex.proto:186:32 +desc_test_complex.proto:186:33 + + + > message_type[7] > field[2]: +desc_test_complex.proto:187:9 +desc_test_complex.proto:187:34 + + + > message_type[7] > field[2] > label: +desc_test_complex.proto:187:9 +desc_test_complex.proto:187:17 + + + > message_type[7] > field[2] > type: +desc_test_complex.proto:187:18 +desc_test_complex.proto:187:22 + + + > message_type[7] > field[2] > name: +desc_test_complex.proto:187:23 +desc_test_complex.proto:187:29 + + + > message_type[7] > field[2] > number: +desc_test_complex.proto:187:32 +desc_test_complex.proto:187:33 + + + > message_type[7] > field[3]: +desc_test_complex.proto:188:9 +desc_test_complex.proto:188:32 + + + > message_type[7] > field[3] > label: +desc_test_complex.proto:188:9 +desc_test_complex.proto:188:17 + + + > message_type[7] > field[3] > type: +desc_test_complex.proto:188:18 +desc_test_complex.proto:188:22 + + + > message_type[7] > field[3] > name: +desc_test_complex.proto:188:23 +desc_test_complex.proto:188:27 + + + > message_type[7] > field[3] > number: +desc_test_complex.proto:188:30 +desc_test_complex.proto:188:31 + + + > message_type[7] > field[4]: +desc_test_complex.proto:189:9 +desc_test_complex.proto:189:35 + + + > message_type[7] > field[4] > label: +desc_test_complex.proto:189:9 +desc_test_complex.proto:189:17 + + + > message_type[7] > field[4] > type: +desc_test_complex.proto:189:18 +desc_test_complex.proto:189:22 + + + > message_type[7] > field[4] > name: +desc_test_complex.proto:189:23 +desc_test_complex.proto:189:30 + + + > message_type[7] > field[4] > number: +desc_test_complex.proto:189:33 +desc_test_complex.proto:189:34 + + + > message_type[7] > field[5]: +desc_test_complex.proto:190:9 +desc_test_complex.proto:190:36 + + + > message_type[7] > field[5] > label: +desc_test_complex.proto:190:9 +desc_test_complex.proto:190:17 + + + > message_type[7] > field[5] > type: +desc_test_complex.proto:190:18 +desc_test_complex.proto:190:24 + + + > message_type[7] > field[5] > name: +desc_test_complex.proto:190:25 +desc_test_complex.proto:190:31 + + + > message_type[7] > field[5] > number: +desc_test_complex.proto:190:34 +desc_test_complex.proto:190:35 + + + > message_type[7] > field[6]: +desc_test_complex.proto:191:9 +desc_test_complex.proto:191:34 + + + > message_type[7] > field[6] > label: +desc_test_complex.proto:191:9 +desc_test_complex.proto:191:17 + + + > message_type[7] > field[6] > type: +desc_test_complex.proto:191:18 +desc_test_complex.proto:191:23 + + + > message_type[7] > field[6] > name: +desc_test_complex.proto:191:24 +desc_test_complex.proto:191:29 + + + > message_type[7] > field[6] > number: +desc_test_complex.proto:191:32 +desc_test_complex.proto:191:33 + + + > message_type[7] > field[7]: +desc_test_complex.proto:192:9 +desc_test_complex.proto:192:34 + + + > message_type[7] > field[7] > label: +desc_test_complex.proto:192:9 +desc_test_complex.proto:192:17 + + + > message_type[7] > field[7] > type: +desc_test_complex.proto:192:18 +desc_test_complex.proto:192:23 + + + > message_type[7] > field[7] > name: +desc_test_complex.proto:192:24 +desc_test_complex.proto:192:29 + + + > message_type[7] > field[7] > number: +desc_test_complex.proto:192:32 +desc_test_complex.proto:192:33 + + + > message_type[7] > field[8]: +desc_test_complex.proto:193:9 +desc_test_complex.proto:193:34 + + + > message_type[7] > field[8] > label: +desc_test_complex.proto:193:9 +desc_test_complex.proto:193:17 + + + > message_type[7] > field[8] > type: +desc_test_complex.proto:193:18 +desc_test_complex.proto:193:23 + + + > message_type[7] > field[8] > name: +desc_test_complex.proto:193:24 +desc_test_complex.proto:193:29 + + + > message_type[7] > field[8] > number: +desc_test_complex.proto:193:32 +desc_test_complex.proto:193:33 + + + > message_type[7] > field[9]: +desc_test_complex.proto:194:9 +desc_test_complex.proto:194:37 + + + > message_type[7] > field[9] > label: +desc_test_complex.proto:194:9 +desc_test_complex.proto:194:17 + + + > message_type[7] > field[9] > type: +desc_test_complex.proto:194:18 +desc_test_complex.proto:194:24 + + + > message_type[7] > field[9] > name: +desc_test_complex.proto:194:25 +desc_test_complex.proto:194:31 + + + > message_type[7] > field[9] > number: +desc_test_complex.proto:194:34 +desc_test_complex.proto:194:36 + + + > message_type[7] > field[10]: +desc_test_complex.proto:195:9 +desc_test_complex.proto:195:37 + + + > message_type[7] > field[10] > label: +desc_test_complex.proto:195:9 +desc_test_complex.proto:195:17 + + + > message_type[7] > field[10] > type: +desc_test_complex.proto:195:18 +desc_test_complex.proto:195:24 + + + > message_type[7] > field[10] > name: +desc_test_complex.proto:195:25 +desc_test_complex.proto:195:31 + + + > message_type[7] > field[10] > number: +desc_test_complex.proto:195:34 +desc_test_complex.proto:195:36 + + + > message_type[7] > field[11]: +desc_test_complex.proto:196:9 +desc_test_complex.proto:196:37 + + + > message_type[7] > field[11] > label: +desc_test_complex.proto:196:9 +desc_test_complex.proto:196:17 + + + > message_type[7] > field[11] > type: +desc_test_complex.proto:196:18 +desc_test_complex.proto:196:24 + + + > message_type[7] > field[11] > name: +desc_test_complex.proto:196:25 +desc_test_complex.proto:196:31 + + + > message_type[7] > field[11] > number: +desc_test_complex.proto:196:34 +desc_test_complex.proto:196:36 + + + > message_type[7] > field[12]: +desc_test_complex.proto:197:9 +desc_test_complex.proto:197:37 + + + > message_type[7] > field[12] > label: +desc_test_complex.proto:197:9 +desc_test_complex.proto:197:17 + + + > message_type[7] > field[12] > type: +desc_test_complex.proto:197:18 +desc_test_complex.proto:197:24 + + + > message_type[7] > field[12] > name: +desc_test_complex.proto:197:25 +desc_test_complex.proto:197:31 + + + > message_type[7] > field[12] > number: +desc_test_complex.proto:197:34 +desc_test_complex.proto:197:36 + + + > message_type[7] > field[13]: +desc_test_complex.proto:198:9 +desc_test_complex.proto:198:39 + + + > message_type[7] > field[13] > label: +desc_test_complex.proto:198:9 +desc_test_complex.proto:198:17 + + + > message_type[7] > field[13] > type: +desc_test_complex.proto:198:18 +desc_test_complex.proto:198:25 + + + > message_type[7] > field[13] > name: +desc_test_complex.proto:198:26 +desc_test_complex.proto:198:33 + + + > message_type[7] > field[13] > number: +desc_test_complex.proto:198:36 +desc_test_complex.proto:198:38 + + + > message_type[7] > field[14]: +desc_test_complex.proto:199:9 +desc_test_complex.proto:199:39 + + + > message_type[7] > field[14] > label: +desc_test_complex.proto:199:9 +desc_test_complex.proto:199:17 + + + > message_type[7] > field[14] > type: +desc_test_complex.proto:199:18 +desc_test_complex.proto:199:25 + + + > message_type[7] > field[14] > name: +desc_test_complex.proto:199:26 +desc_test_complex.proto:199:33 + + + > message_type[7] > field[14] > number: +desc_test_complex.proto:199:36 +desc_test_complex.proto:199:38 + + + > message_type[7] > field[15]: +desc_test_complex.proto:200:9 +desc_test_complex.proto:200:41 + + + > message_type[7] > field[15] > label: +desc_test_complex.proto:200:9 +desc_test_complex.proto:200:17 + + + > message_type[7] > field[15] > type: +desc_test_complex.proto:200:18 +desc_test_complex.proto:200:26 + + + > message_type[7] > field[15] > name: +desc_test_complex.proto:200:27 +desc_test_complex.proto:200:35 + + + > message_type[7] > field[15] > number: +desc_test_complex.proto:200:38 +desc_test_complex.proto:200:40 + + + > message_type[7] > field[16]: +desc_test_complex.proto:201:9 +desc_test_complex.proto:201:41 + + + > message_type[7] > field[16] > label: +desc_test_complex.proto:201:9 +desc_test_complex.proto:201:17 + + + > message_type[7] > field[16] > type: +desc_test_complex.proto:201:18 +desc_test_complex.proto:201:26 + + + > message_type[7] > field[16] > name: +desc_test_complex.proto:201:27 +desc_test_complex.proto:201:35 + + + > message_type[7] > field[16] > number: +desc_test_complex.proto:201:38 +desc_test_complex.proto:201:40 + + + > message_type[7] > field[17]: +desc_test_complex.proto:202:9 +desc_test_complex.proto:202:33 + + + > message_type[7] > field[17] > label: +desc_test_complex.proto:202:9 +desc_test_complex.proto:202:17 + + + > message_type[7] > field[17] > type: +desc_test_complex.proto:202:18 +desc_test_complex.proto:202:22 + + + > message_type[7] > field[17] > name: +desc_test_complex.proto:202:23 +desc_test_complex.proto:202:27 + + + > message_type[7] > field[17] > number: +desc_test_complex.proto:202:30 +desc_test_complex.proto:202:32 + + + > message_type[7] > field[18]: +desc_test_complex.proto:203:9 +desc_test_complex.proto:203:35 + + + > message_type[7] > field[18] > label: +desc_test_complex.proto:203:9 +desc_test_complex.proto:203:17 + + + > message_type[7] > field[18] > type: +desc_test_complex.proto:203:18 +desc_test_complex.proto:203:23 + + + > message_type[7] > field[18] > name: +desc_test_complex.proto:203:24 +desc_test_complex.proto:203:29 + + + > message_type[7] > field[18] > number: +desc_test_complex.proto:203:32 +desc_test_complex.proto:203:34 + + + > message_type[7] > field[19]: +desc_test_complex.proto:204:9 +desc_test_complex.proto:204:37 + + + > message_type[7] > field[19] > label: +desc_test_complex.proto:204:9 +desc_test_complex.proto:204:17 + + + > message_type[7] > field[19] > type: +desc_test_complex.proto:204:18 +desc_test_complex.proto:204:24 + + + > message_type[7] > field[19] > name: +desc_test_complex.proto:204:25 +desc_test_complex.proto:204:31 + + + > message_type[7] > field[19] > number: +desc_test_complex.proto:204:34 +desc_test_complex.proto:204:36 + + + > message_type[7] > field[20]: +desc_test_complex.proto:205:9 +desc_test_complex.proto:205:37 + + + > message_type[7] > field[20] > label: +desc_test_complex.proto:205:9 +desc_test_complex.proto:205:17 + + + > message_type[7] > field[20] > type: +desc_test_complex.proto:205:18 +desc_test_complex.proto:205:22 + + + > message_type[7] > field[20] > name: +desc_test_complex.proto:205:23 +desc_test_complex.proto:205:31 + + + > message_type[7] > field[20] > number: +desc_test_complex.proto:205:34 +desc_test_complex.proto:205:36 + + + > message_type[7] > field[21]: +desc_test_complex.proto:206:9 +desc_test_complex.proto:206:37 + + + > message_type[7] > field[21] > label: +desc_test_complex.proto:206:9 +desc_test_complex.proto:206:17 + + + > message_type[7] > field[21] > type: +desc_test_complex.proto:206:18 +desc_test_complex.proto:206:22 + + + > message_type[7] > field[21] > name: +desc_test_complex.proto:206:23 +desc_test_complex.proto:206:31 + + + > message_type[7] > field[21] > number: +desc_test_complex.proto:206:34 +desc_test_complex.proto:206:36 + + + > message_type[7] > field[22]: +desc_test_complex.proto:207:9 +desc_test_complex.proto:207:37 + + + > message_type[7] > field[22] > label: +desc_test_complex.proto:207:9 +desc_test_complex.proto:207:17 + + + > message_type[7] > field[22] > type: +desc_test_complex.proto:207:18 +desc_test_complex.proto:207:22 + + + > message_type[7] > field[22] > name: +desc_test_complex.proto:207:23 +desc_test_complex.proto:207:31 + + + > message_type[7] > field[22] > number: +desc_test_complex.proto:207:34 +desc_test_complex.proto:207:36 + + + > message_type[7] > field[23]: +desc_test_complex.proto:208:9 +desc_test_complex.proto:208:36 + + + > message_type[7] > field[23] > label: +desc_test_complex.proto:208:9 +desc_test_complex.proto:208:17 + + + > message_type[7] > field[23] > type: +desc_test_complex.proto:208:18 +desc_test_complex.proto:208:22 + + + > message_type[7] > field[23] > name: +desc_test_complex.proto:208:23 +desc_test_complex.proto:208:30 + + + > message_type[7] > field[23] > number: +desc_test_complex.proto:208:33 +desc_test_complex.proto:208:35 + + + > message_type[7] > field[24]: +desc_test_complex.proto:209:9 +desc_test_complex.proto:209:33 + + + > message_type[7] > field[24] > label: +desc_test_complex.proto:209:9 +desc_test_complex.proto:209:17 + + + > message_type[7] > field[24] > type: +desc_test_complex.proto:209:18 +desc_test_complex.proto:209:22 + + + > message_type[7] > field[24] > name: +desc_test_complex.proto:209:23 +desc_test_complex.proto:209:27 + + + > message_type[7] > field[24] > number: +desc_test_complex.proto:209:30 +desc_test_complex.proto:209:32 + + + > message_type[7] > field[25]: +desc_test_complex.proto:210:9 +desc_test_complex.proto:210:36 + + + > message_type[7] > field[25] > label: +desc_test_complex.proto:210:9 +desc_test_complex.proto:210:17 + + + > message_type[7] > field[25] > type: +desc_test_complex.proto:210:18 +desc_test_complex.proto:210:22 + + + > message_type[7] > field[25] > name: +desc_test_complex.proto:210:23 +desc_test_complex.proto:210:30 + + + > message_type[7] > field[25] > number: +desc_test_complex.proto:210:33 +desc_test_complex.proto:210:35 + + + > message_type[7] > field[26]: +desc_test_complex.proto:211:9 +desc_test_complex.proto:211:32 + + + > message_type[7] > field[26] > label: +desc_test_complex.proto:211:9 +desc_test_complex.proto:211:17 + + + > message_type[7] > field[26] > type: +desc_test_complex.proto:211:18 +desc_test_complex.proto:211:22 + + + > message_type[7] > field[26] > name: +desc_test_complex.proto:211:23 +desc_test_complex.proto:211:26 + + + > message_type[7] > field[26] > number: +desc_test_complex.proto:211:29 +desc_test_complex.proto:211:31 + + + > message_type[7] > field[27]: +desc_test_complex.proto:212:9 +desc_test_complex.proto:212:35 + + + > message_type[7] > field[27] > label: +desc_test_complex.proto:212:9 +desc_test_complex.proto:212:17 + + + > message_type[7] > field[27] > type: +desc_test_complex.proto:212:18 +desc_test_complex.proto:212:22 + + + > message_type[7] > field[27] > name: +desc_test_complex.proto:212:23 +desc_test_complex.proto:212:29 + + + > message_type[7] > field[27] > number: +desc_test_complex.proto:212:32 +desc_test_complex.proto:212:34 + + + > message_type[7] > field[28]: +desc_test_complex.proto:213:9 +desc_test_complex.proto:213:35 + + + > message_type[7] > field[28] > label: +desc_test_complex.proto:213:9 +desc_test_complex.proto:213:17 + + + > message_type[7] > field[28] > type: +desc_test_complex.proto:213:18 +desc_test_complex.proto:213:22 + + + > message_type[7] > field[28] > name: +desc_test_complex.proto:213:23 +desc_test_complex.proto:213:29 + + + > message_type[7] > field[28] > number: +desc_test_complex.proto:213:32 +desc_test_complex.proto:213:34 + + + > message_type[7] > field[29]: +desc_test_complex.proto:214:9 +desc_test_complex.proto:214:39 + + + > message_type[7] > field[29] > label: +desc_test_complex.proto:214:9 +desc_test_complex.proto:214:17 + + + > message_type[7] > field[29] > type: +desc_test_complex.proto:214:18 +desc_test_complex.proto:214:22 + + + > message_type[7] > field[29] > name: +desc_test_complex.proto:214:23 +desc_test_complex.proto:214:33 + + + > message_type[7] > field[29] > number: +desc_test_complex.proto:214:36 +desc_test_complex.proto:214:38 + + + > message_type[7] > field[30]: +desc_test_complex.proto:215:9 +desc_test_complex.proto:215:37 + + + > message_type[7] > field[30] > label: +desc_test_complex.proto:215:9 +desc_test_complex.proto:215:17 + + + > message_type[7] > field[30] > type: +desc_test_complex.proto:215:18 +desc_test_complex.proto:215:22 + + + > message_type[7] > field[30] > name: +desc_test_complex.proto:215:23 +desc_test_complex.proto:215:31 + + + > message_type[7] > field[30] > number: +desc_test_complex.proto:215:34 +desc_test_complex.proto:215:36 + + + > message_type[7] > field[31]: +desc_test_complex.proto:216:9 +desc_test_complex.proto:216:31 + + + > message_type[7] > field[31] > label: +desc_test_complex.proto:216:9 +desc_test_complex.proto:216:17 + + + > message_type[7] > field[31] > type: +desc_test_complex.proto:216:18 +desc_test_complex.proto:216:22 + + + > message_type[7] > field[31] > name: +desc_test_complex.proto:216:23 +desc_test_complex.proto:216:25 + + + > message_type[7] > field[31] > number: +desc_test_complex.proto:216:28 +desc_test_complex.proto:216:30 + + + > message_type[7] > field[32]: +desc_test_complex.proto:217:9 +desc_test_complex.proto:217:34 + + + > message_type[7] > field[32] > label: +desc_test_complex.proto:217:9 +desc_test_complex.proto:217:17 + + + > message_type[7] > field[32] > type: +desc_test_complex.proto:217:18 +desc_test_complex.proto:217:23 + + + > message_type[7] > field[32] > name: +desc_test_complex.proto:217:24 +desc_test_complex.proto:217:28 + + + > message_type[7] > field[32] > number: +desc_test_complex.proto:217:31 +desc_test_complex.proto:217:33 + + + > message_type[7] > field[33]: +desc_test_complex.proto:218:9 +desc_test_complex.proto:218:35 + + + > message_type[7] > field[33] > label: +desc_test_complex.proto:218:9 +desc_test_complex.proto:218:17 + + + > message_type[7] > field[33] > type: +desc_test_complex.proto:218:18 +desc_test_complex.proto:218:23 + + + > message_type[7] > field[33] > name: +desc_test_complex.proto:218:24 +desc_test_complex.proto:218:29 + + + > message_type[7] > field[33] > number: +desc_test_complex.proto:218:32 +desc_test_complex.proto:218:34 + + + > message_type[7] > field[34]: +desc_test_complex.proto:219:9 +desc_test_complex.proto:219:37 + + + > message_type[7] > field[34] > label: +desc_test_complex.proto:219:9 +desc_test_complex.proto:219:17 + + + > message_type[7] > field[34] > type: +desc_test_complex.proto:219:18 +desc_test_complex.proto:219:23 + + + > message_type[7] > field[34] > name: +desc_test_complex.proto:219:24 +desc_test_complex.proto:219:31 + + + > message_type[7] > field[34] > number: +desc_test_complex.proto:219:34 +desc_test_complex.proto:219:36 + + + > extension: +desc_test_complex.proto:222:1 +desc_test_complex.proto:259:2 + + + > extension[6]: +desc_test_complex.proto:223:9 +desc_test_complex.proto:223:38 + + + > extension[6] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[6] > label: +desc_test_complex.proto:223:9 +desc_test_complex.proto:223:17 + + + > extension[6] > type: +desc_test_complex.proto:223:18 +desc_test_complex.proto:223:22 + + + > extension[6] > name: +desc_test_complex.proto:223:23 +desc_test_complex.proto:223:29 + + + > extension[6] > number: +desc_test_complex.proto:223:32 +desc_test_complex.proto:223:37 + + + > extension[7]: +desc_test_complex.proto:224:9 +desc_test_complex.proto:224:38 + + + > extension[7] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[7] > label: +desc_test_complex.proto:224:9 +desc_test_complex.proto:224:17 + + + > extension[7] > type: +desc_test_complex.proto:224:18 +desc_test_complex.proto:224:22 + + + > extension[7] > name: +desc_test_complex.proto:224:23 +desc_test_complex.proto:224:29 + + + > extension[7] > number: +desc_test_complex.proto:224:32 +desc_test_complex.proto:224:37 + + + > extension[8]: +desc_test_complex.proto:225:9 +desc_test_complex.proto:225:38 + + + > extension[8] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[8] > label: +desc_test_complex.proto:225:9 +desc_test_complex.proto:225:17 + + + > extension[8] > type: +desc_test_complex.proto:225:18 +desc_test_complex.proto:225:22 + + + > extension[8] > name: +desc_test_complex.proto:225:23 +desc_test_complex.proto:225:29 + + + > extension[8] > number: +desc_test_complex.proto:225:32 +desc_test_complex.proto:225:37 + + + > extension[9]: +desc_test_complex.proto:226:9 +desc_test_complex.proto:226:36 + + + > extension[9] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[9] > label: +desc_test_complex.proto:226:9 +desc_test_complex.proto:226:17 + + + > extension[9] > type: +desc_test_complex.proto:226:18 +desc_test_complex.proto:226:22 + + + > extension[9] > name: +desc_test_complex.proto:226:23 +desc_test_complex.proto:226:27 + + + > extension[9] > number: +desc_test_complex.proto:226:30 +desc_test_complex.proto:226:35 + + + > extension[10]: +desc_test_complex.proto:227:9 +desc_test_complex.proto:227:39 + + + > extension[10] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[10] > label: +desc_test_complex.proto:227:9 +desc_test_complex.proto:227:17 + + + > extension[10] > type: +desc_test_complex.proto:227:18 +desc_test_complex.proto:227:22 + + + > extension[10] > name: +desc_test_complex.proto:227:23 +desc_test_complex.proto:227:30 + + + > extension[10] > number: +desc_test_complex.proto:227:33 +desc_test_complex.proto:227:38 + + + > extension[11]: +desc_test_complex.proto:228:9 +desc_test_complex.proto:228:40 + + + > extension[11] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[11] > label: +desc_test_complex.proto:228:9 +desc_test_complex.proto:228:17 + + + > extension[11] > type: +desc_test_complex.proto:228:18 +desc_test_complex.proto:228:24 + + + > extension[11] > name: +desc_test_complex.proto:228:25 +desc_test_complex.proto:228:31 + + + > extension[11] > number: +desc_test_complex.proto:228:34 +desc_test_complex.proto:228:39 + + + > extension[12]: +desc_test_complex.proto:229:9 +desc_test_complex.proto:229:38 + + + > extension[12] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[12] > label: +desc_test_complex.proto:229:9 +desc_test_complex.proto:229:17 + + + > extension[12] > type: +desc_test_complex.proto:229:18 +desc_test_complex.proto:229:23 + + + > extension[12] > name: +desc_test_complex.proto:229:24 +desc_test_complex.proto:229:29 + + + > extension[12] > number: +desc_test_complex.proto:229:32 +desc_test_complex.proto:229:37 + + + > extension[13]: +desc_test_complex.proto:230:9 +desc_test_complex.proto:230:38 + + + > extension[13] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[13] > label: +desc_test_complex.proto:230:9 +desc_test_complex.proto:230:17 + + + > extension[13] > type: +desc_test_complex.proto:230:18 +desc_test_complex.proto:230:23 + + + > extension[13] > name: +desc_test_complex.proto:230:24 +desc_test_complex.proto:230:29 + + + > extension[13] > number: +desc_test_complex.proto:230:32 +desc_test_complex.proto:230:37 + + + > extension[14]: +desc_test_complex.proto:231:9 +desc_test_complex.proto:231:38 + + + > extension[14] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[14] > label: +desc_test_complex.proto:231:9 +desc_test_complex.proto:231:17 + + + > extension[14] > type: +desc_test_complex.proto:231:18 +desc_test_complex.proto:231:23 + + + > extension[14] > name: +desc_test_complex.proto:231:24 +desc_test_complex.proto:231:29 + + + > extension[14] > number: +desc_test_complex.proto:231:32 +desc_test_complex.proto:231:37 + + + > extension[15]: +desc_test_complex.proto:232:9 +desc_test_complex.proto:232:40 + + + > extension[15] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[15] > label: +desc_test_complex.proto:232:9 +desc_test_complex.proto:232:17 + + + > extension[15] > type: +desc_test_complex.proto:232:18 +desc_test_complex.proto:232:24 + + + > extension[15] > name: +desc_test_complex.proto:232:25 +desc_test_complex.proto:232:31 + + + > extension[15] > number: +desc_test_complex.proto:232:34 +desc_test_complex.proto:232:39 + + + > extension[16]: +desc_test_complex.proto:233:9 +desc_test_complex.proto:233:40 + + + > extension[16] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[16] > label: +desc_test_complex.proto:233:9 +desc_test_complex.proto:233:17 + + + > extension[16] > type: +desc_test_complex.proto:233:18 +desc_test_complex.proto:233:24 + + + > extension[16] > name: +desc_test_complex.proto:233:25 +desc_test_complex.proto:233:31 + + + > extension[16] > number: +desc_test_complex.proto:233:34 +desc_test_complex.proto:233:39 + + + > extension[17]: +desc_test_complex.proto:234:9 +desc_test_complex.proto:234:40 + + + > extension[17] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[17] > label: +desc_test_complex.proto:234:9 +desc_test_complex.proto:234:17 + + + > extension[17] > type: +desc_test_complex.proto:234:18 +desc_test_complex.proto:234:24 + + + > extension[17] > name: +desc_test_complex.proto:234:25 +desc_test_complex.proto:234:31 + + + > extension[17] > number: +desc_test_complex.proto:234:34 +desc_test_complex.proto:234:39 + + + > extension[18]: +desc_test_complex.proto:235:9 +desc_test_complex.proto:235:40 + + + > extension[18] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[18] > label: +desc_test_complex.proto:235:9 +desc_test_complex.proto:235:17 + + + > extension[18] > type: +desc_test_complex.proto:235:18 +desc_test_complex.proto:235:24 + + + > extension[18] > name: +desc_test_complex.proto:235:25 +desc_test_complex.proto:235:31 + + + > extension[18] > number: +desc_test_complex.proto:235:34 +desc_test_complex.proto:235:39 + + + > extension[19]: +desc_test_complex.proto:236:9 +desc_test_complex.proto:236:42 + + + > extension[19] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[19] > label: +desc_test_complex.proto:236:9 +desc_test_complex.proto:236:17 + + + > extension[19] > type: +desc_test_complex.proto:236:18 +desc_test_complex.proto:236:25 + + + > extension[19] > name: +desc_test_complex.proto:236:26 +desc_test_complex.proto:236:33 + + + > extension[19] > number: +desc_test_complex.proto:236:36 +desc_test_complex.proto:236:41 + + + > extension[20]: +desc_test_complex.proto:237:9 +desc_test_complex.proto:237:42 + + + > extension[20] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[20] > label: +desc_test_complex.proto:237:9 +desc_test_complex.proto:237:17 + + + > extension[20] > type: +desc_test_complex.proto:237:18 +desc_test_complex.proto:237:25 + + + > extension[20] > name: +desc_test_complex.proto:237:26 +desc_test_complex.proto:237:33 + + + > extension[20] > number: +desc_test_complex.proto:237:36 +desc_test_complex.proto:237:41 + + + > extension[21]: +desc_test_complex.proto:238:9 +desc_test_complex.proto:238:44 + + + > extension[21] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[21] > label: +desc_test_complex.proto:238:9 +desc_test_complex.proto:238:17 + + + > extension[21] > type: +desc_test_complex.proto:238:18 +desc_test_complex.proto:238:26 + + + > extension[21] > name: +desc_test_complex.proto:238:27 +desc_test_complex.proto:238:35 + + + > extension[21] > number: +desc_test_complex.proto:238:38 +desc_test_complex.proto:238:43 + + + > extension[22]: +desc_test_complex.proto:239:9 +desc_test_complex.proto:239:44 + + + > extension[22] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[22] > label: +desc_test_complex.proto:239:9 +desc_test_complex.proto:239:17 + + + > extension[22] > type: +desc_test_complex.proto:239:18 +desc_test_complex.proto:239:26 + + + > extension[22] > name: +desc_test_complex.proto:239:27 +desc_test_complex.proto:239:35 + + + > extension[22] > number: +desc_test_complex.proto:239:38 +desc_test_complex.proto:239:43 + + + > extension[23]: +desc_test_complex.proto:240:9 +desc_test_complex.proto:240:36 + + + > extension[23] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[23] > label: +desc_test_complex.proto:240:9 +desc_test_complex.proto:240:17 + + + > extension[23] > type: +desc_test_complex.proto:240:18 +desc_test_complex.proto:240:22 + + + > extension[23] > name: +desc_test_complex.proto:240:23 +desc_test_complex.proto:240:27 + + + > extension[23] > number: +desc_test_complex.proto:240:30 +desc_test_complex.proto:240:35 + + + > extension[24]: +desc_test_complex.proto:241:9 +desc_test_complex.proto:241:38 + + + > extension[24] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[24] > label: +desc_test_complex.proto:241:9 +desc_test_complex.proto:241:17 + + + > extension[24] > type: +desc_test_complex.proto:241:18 +desc_test_complex.proto:241:23 + + + > extension[24] > name: +desc_test_complex.proto:241:24 +desc_test_complex.proto:241:29 + + + > extension[24] > number: +desc_test_complex.proto:241:32 +desc_test_complex.proto:241:37 + + + > extension[25]: +desc_test_complex.proto:242:9 +desc_test_complex.proto:242:40 + + + > extension[25] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[25] > label: +desc_test_complex.proto:242:9 +desc_test_complex.proto:242:17 + + + > extension[25] > type: +desc_test_complex.proto:242:18 +desc_test_complex.proto:242:24 + + + > extension[25] > name: +desc_test_complex.proto:242:25 +desc_test_complex.proto:242:31 + + + > extension[25] > number: +desc_test_complex.proto:242:34 +desc_test_complex.proto:242:39 + + + > extension[26]: +desc_test_complex.proto:243:9 +desc_test_complex.proto:243:40 + + + > extension[26] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[26] > label: +desc_test_complex.proto:243:9 +desc_test_complex.proto:243:17 + + + > extension[26] > type: +desc_test_complex.proto:243:18 +desc_test_complex.proto:243:22 + + + > extension[26] > name: +desc_test_complex.proto:243:23 +desc_test_complex.proto:243:31 + + + > extension[26] > number: +desc_test_complex.proto:243:34 +desc_test_complex.proto:243:39 + + + > extension[27]: +desc_test_complex.proto:244:9 +desc_test_complex.proto:244:40 + + + > extension[27] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[27] > label: +desc_test_complex.proto:244:9 +desc_test_complex.proto:244:17 + + + > extension[27] > type: +desc_test_complex.proto:244:18 +desc_test_complex.proto:244:22 + + + > extension[27] > name: +desc_test_complex.proto:244:23 +desc_test_complex.proto:244:31 + + + > extension[27] > number: +desc_test_complex.proto:244:34 +desc_test_complex.proto:244:39 + + + > extension[28]: +desc_test_complex.proto:245:9 +desc_test_complex.proto:245:40 + + + > extension[28] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[28] > label: +desc_test_complex.proto:245:9 +desc_test_complex.proto:245:17 + + + > extension[28] > type: +desc_test_complex.proto:245:18 +desc_test_complex.proto:245:22 + + + > extension[28] > name: +desc_test_complex.proto:245:23 +desc_test_complex.proto:245:31 + + + > extension[28] > number: +desc_test_complex.proto:245:34 +desc_test_complex.proto:245:39 + + + > extension[29]: +desc_test_complex.proto:246:9 +desc_test_complex.proto:246:39 + + + > extension[29] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[29] > label: +desc_test_complex.proto:246:9 +desc_test_complex.proto:246:17 + + + > extension[29] > type: +desc_test_complex.proto:246:18 +desc_test_complex.proto:246:22 + + + > extension[29] > name: +desc_test_complex.proto:246:23 +desc_test_complex.proto:246:30 + + + > extension[29] > number: +desc_test_complex.proto:246:33 +desc_test_complex.proto:246:38 + + + > extension[30]: +desc_test_complex.proto:247:9 +desc_test_complex.proto:247:36 + + + > extension[30] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[30] > label: +desc_test_complex.proto:247:9 +desc_test_complex.proto:247:17 + + + > extension[30] > type: +desc_test_complex.proto:247:18 +desc_test_complex.proto:247:22 + + + > extension[30] > name: +desc_test_complex.proto:247:23 +desc_test_complex.proto:247:27 + + + > extension[30] > number: +desc_test_complex.proto:247:30 +desc_test_complex.proto:247:35 + + + > extension[31]: +desc_test_complex.proto:248:9 +desc_test_complex.proto:248:39 + + + > extension[31] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[31] > label: +desc_test_complex.proto:248:9 +desc_test_complex.proto:248:17 + + + > extension[31] > type: +desc_test_complex.proto:248:18 +desc_test_complex.proto:248:22 + + + > extension[31] > name: +desc_test_complex.proto:248:23 +desc_test_complex.proto:248:30 + + + > extension[31] > number: +desc_test_complex.proto:248:33 +desc_test_complex.proto:248:38 + + + > extension[32]: +desc_test_complex.proto:249:9 +desc_test_complex.proto:249:35 + + + > extension[32] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[32] > label: +desc_test_complex.proto:249:9 +desc_test_complex.proto:249:17 + + + > extension[32] > type: +desc_test_complex.proto:249:18 +desc_test_complex.proto:249:22 + + + > extension[32] > name: +desc_test_complex.proto:249:23 +desc_test_complex.proto:249:26 + + + > extension[32] > number: +desc_test_complex.proto:249:29 +desc_test_complex.proto:249:34 + + + > extension[33]: +desc_test_complex.proto:250:9 +desc_test_complex.proto:250:38 + + + > extension[33] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[33] > label: +desc_test_complex.proto:250:9 +desc_test_complex.proto:250:17 + + + > extension[33] > type: +desc_test_complex.proto:250:18 +desc_test_complex.proto:250:22 + + + > extension[33] > name: +desc_test_complex.proto:250:23 +desc_test_complex.proto:250:29 + + + > extension[33] > number: +desc_test_complex.proto:250:32 +desc_test_complex.proto:250:37 + + + > extension[34]: +desc_test_complex.proto:251:9 +desc_test_complex.proto:251:38 + + + > extension[34] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[34] > label: +desc_test_complex.proto:251:9 +desc_test_complex.proto:251:17 + + + > extension[34] > type: +desc_test_complex.proto:251:18 +desc_test_complex.proto:251:22 + + + > extension[34] > name: +desc_test_complex.proto:251:23 +desc_test_complex.proto:251:29 + + + > extension[34] > number: +desc_test_complex.proto:251:32 +desc_test_complex.proto:251:37 + + + > extension[35]: +desc_test_complex.proto:252:9 +desc_test_complex.proto:252:42 + + + > extension[35] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[35] > label: +desc_test_complex.proto:252:9 +desc_test_complex.proto:252:17 + + + > extension[35] > type: +desc_test_complex.proto:252:18 +desc_test_complex.proto:252:22 + + + > extension[35] > name: +desc_test_complex.proto:252:23 +desc_test_complex.proto:252:33 + + + > extension[35] > number: +desc_test_complex.proto:252:36 +desc_test_complex.proto:252:41 + + + > extension[36]: +desc_test_complex.proto:253:9 +desc_test_complex.proto:253:40 + + + > extension[36] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[36] > label: +desc_test_complex.proto:253:9 +desc_test_complex.proto:253:17 + + + > extension[36] > type: +desc_test_complex.proto:253:18 +desc_test_complex.proto:253:22 + + + > extension[36] > name: +desc_test_complex.proto:253:23 +desc_test_complex.proto:253:31 + + + > extension[36] > number: +desc_test_complex.proto:253:34 +desc_test_complex.proto:253:39 + + + > extension[37]: +desc_test_complex.proto:254:9 +desc_test_complex.proto:254:34 + + + > extension[37] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[37] > label: +desc_test_complex.proto:254:9 +desc_test_complex.proto:254:17 + + + > extension[37] > type: +desc_test_complex.proto:254:18 +desc_test_complex.proto:254:22 + + + > extension[37] > name: +desc_test_complex.proto:254:23 +desc_test_complex.proto:254:25 + + + > extension[37] > number: +desc_test_complex.proto:254:28 +desc_test_complex.proto:254:33 + + + > extension[38]: +desc_test_complex.proto:255:9 +desc_test_complex.proto:255:37 + + + > extension[38] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[38] > label: +desc_test_complex.proto:255:9 +desc_test_complex.proto:255:17 + + + > extension[38] > type: +desc_test_complex.proto:255:18 +desc_test_complex.proto:255:23 + + + > extension[38] > name: +desc_test_complex.proto:255:24 +desc_test_complex.proto:255:28 + + + > extension[38] > number: +desc_test_complex.proto:255:31 +desc_test_complex.proto:255:36 + + + > extension[39]: +desc_test_complex.proto:256:9 +desc_test_complex.proto:256:38 + + + > extension[39] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[39] > label: +desc_test_complex.proto:256:9 +desc_test_complex.proto:256:17 + + + > extension[39] > type: +desc_test_complex.proto:256:18 +desc_test_complex.proto:256:23 + + + > extension[39] > name: +desc_test_complex.proto:256:24 +desc_test_complex.proto:256:29 + + + > extension[39] > number: +desc_test_complex.proto:256:32 +desc_test_complex.proto:256:37 + + + > extension[40]: +desc_test_complex.proto:257:9 +desc_test_complex.proto:257:40 + + + > extension[40] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[40] > label: +desc_test_complex.proto:257:9 +desc_test_complex.proto:257:17 + + + > extension[40] > type: +desc_test_complex.proto:257:18 +desc_test_complex.proto:257:23 + + + > extension[40] > name: +desc_test_complex.proto:257:24 +desc_test_complex.proto:257:31 + + + > extension[40] > number: +desc_test_complex.proto:257:34 +desc_test_complex.proto:257:39 + + + > extension[41]: +desc_test_complex.proto:258:9 +desc_test_complex.proto:258:49 + + + > extension[41] > extendee: +desc_test_complex.proto:222:8 +desc_test_complex.proto:222:36 + + + > extension[41] > label: +desc_test_complex.proto:258:9 +desc_test_complex.proto:258:17 + + + > extension[41] > type_name: +desc_test_complex.proto:258:18 +desc_test_complex.proto:258:35 + + + > extension[41] > name: +desc_test_complex.proto:258:36 +desc_test_complex.proto:258:40 + + + > extension[41] > number: +desc_test_complex.proto:258:43 +desc_test_complex.proto:258:48 + + + > message_type[8]: +desc_test_complex.proto:261:1 +desc_test_complex.proto:286:2 + + + > message_type[8] > name: +desc_test_complex.proto:261:9 +desc_test_complex.proto:261:32 + + + > message_type[8] > field[0]: +desc_test_complex.proto:262:9 +desc_test_complex.proto:272:11 + + + > message_type[8] > field[0] > label: +desc_test_complex.proto:262:9 +desc_test_complex.proto:262:17 + + + > message_type[8] > field[0] > type: +desc_test_complex.proto:262:18 +desc_test_complex.proto:262:24 + + + > message_type[8] > field[0] > name: +desc_test_complex.proto:262:25 +desc_test_complex.proto:262:27 + + + > message_type[8] > field[0] > number: +desc_test_complex.proto:262:30 +desc_test_complex.proto:262:31 + + + > message_type[8] > field[0] > options: +desc_test_complex.proto:262:32 +desc_test_complex.proto:272:10 + + + > message_type[8] > field[0] > options > syntax: +desc_test_complex.proto:263:17 +desc_test_complex.proto:263:32 + + + > message_type[8] > field[0] > options > import: +desc_test_complex.proto:263:34 +desc_test_complex.proto:263:49 + + + > message_type[8] > field[0] > options > public: +desc_test_complex.proto:263:51 +desc_test_complex.proto:263:66 + + + > message_type[8] > field[0] > options > weak: +desc_test_complex.proto:263:68 +desc_test_complex.proto:263:81 + + + > message_type[8] > field[0] > options > package: +desc_test_complex.proto:263:83 +desc_test_complex.proto:263:99 + + + > message_type[8] > field[0] > options > string: +desc_test_complex.proto:264:17 +desc_test_complex.proto:264:36 + + + > message_type[8] > field[0] > options > bytes: +desc_test_complex.proto:264:38 +desc_test_complex.proto:264:55 + + + > message_type[8] > field[0] > options > bool: +desc_test_complex.proto:264:57 +desc_test_complex.proto:264:70 + + + > message_type[8] > field[0] > options > float: +desc_test_complex.proto:265:17 +desc_test_complex.proto:265:31 + + + > message_type[8] > field[0] > options > double: +desc_test_complex.proto:265:33 +desc_test_complex.proto:265:51 + + + > message_type[8] > field[0] > options > int32: +desc_test_complex.proto:266:17 +desc_test_complex.proto:266:29 + + + > message_type[8] > field[0] > options > int64: +desc_test_complex.proto:266:31 +desc_test_complex.proto:266:43 + + + > message_type[8] > field[0] > options > uint32: +desc_test_complex.proto:266:45 +desc_test_complex.proto:266:60 + + + > message_type[8] > field[0] > options > uint64: +desc_test_complex.proto:266:62 +desc_test_complex.proto:266:77 + + + > message_type[8] > field[0] > options > sint32: +desc_test_complex.proto:266:79 +desc_test_complex.proto:266:93 + + + > message_type[8] > field[0] > options > sint64: +desc_test_complex.proto:266:95 +desc_test_complex.proto:266:109 + + + > message_type[8] > field[0] > options > fixed32: +desc_test_complex.proto:267:17 +desc_test_complex.proto:267:33 + + + > message_type[8] > field[0] > options > fixed64: +desc_test_complex.proto:267:35 +desc_test_complex.proto:267:51 + + + > message_type[8] > field[0] > options > sfixed32: +desc_test_complex.proto:267:53 +desc_test_complex.proto:267:71 + + + > message_type[8] > field[0] > options > sfixed64: +desc_test_complex.proto:267:73 +desc_test_complex.proto:267:91 + + + > message_type[8] > field[0] > options > optional: +desc_test_complex.proto:268:17 +desc_test_complex.proto:268:34 + + + > message_type[8] > field[0] > options > repeated: +desc_test_complex.proto:268:36 +desc_test_complex.proto:268:53 + + + > message_type[8] > field[0] > options > required: +desc_test_complex.proto:268:55 +desc_test_complex.proto:268:72 + + + > message_type[8] > field[0] > options > message: +desc_test_complex.proto:269:17 +desc_test_complex.proto:269:33 + + + > message_type[8] > field[0] > options > enum: +desc_test_complex.proto:269:35 +desc_test_complex.proto:269:48 + + + > message_type[8] > field[0] > options > service: +desc_test_complex.proto:269:50 +desc_test_complex.proto:269:66 + + + > message_type[8] > field[0] > options > rpc: +desc_test_complex.proto:269:68 +desc_test_complex.proto:269:80 + + + > message_type[8] > field[0] > options > option: +desc_test_complex.proto:270:17 +desc_test_complex.proto:270:32 + + + > message_type[8] > field[0] > options > extend: +desc_test_complex.proto:270:34 +desc_test_complex.proto:270:49 + + + > message_type[8] > field[0] > options > extensions: +desc_test_complex.proto:270:51 +desc_test_complex.proto:270:70 + + + > message_type[8] > field[0] > options > reserved: +desc_test_complex.proto:270:72 +desc_test_complex.proto:270:89 + + + > message_type[8] > field[0] > options > to: +desc_test_complex.proto:271:17 +desc_test_complex.proto:271:28 + + + > message_type[8] > field[0] > options > true: +desc_test_complex.proto:271:30 +desc_test_complex.proto:271:42 + + + > message_type[8] > field[0] > options > false: +desc_test_complex.proto:271:44 +desc_test_complex.proto:271:58 + + + > message_type[8] > field[0] > options > default: +desc_test_complex.proto:271:60 +desc_test_complex.proto:271:75 + + + > message_type[8] > field[1]: +desc_test_complex.proto:273:9 +desc_test_complex.proto:285:11 + + + > message_type[8] > field[1] > label: +desc_test_complex.proto:273:9 +desc_test_complex.proto:273:17 + + + > message_type[8] > field[1] > type: +desc_test_complex.proto:273:18 +desc_test_complex.proto:273:24 + + + > message_type[8] > field[1] > name: +desc_test_complex.proto:273:25 +desc_test_complex.proto:273:29 + + + > message_type[8] > field[1] > number: +desc_test_complex.proto:273:32 +desc_test_complex.proto:273:33 + + + > message_type[8] > field[1] > options: +desc_test_complex.proto:273:34 +desc_test_complex.proto:285:10 + + + > message_type[8] > field[1] > options > boom: +desc_test_complex.proto:274:17 +desc_test_complex.proto:284:18 ---- desc_test_options.proto ---- diff --git a/desc/protoprint/print.go b/desc/protoprint/print.go index 72ba9876..0363cf02 100644 --- a/desc/protoprint/print.go +++ b/desc/protoprint/print.go @@ -788,10 +788,12 @@ func (p *Printer) printMessageBody(md *desc.MessageDescriptor, mf *dynamic.Messa ood := d.GetOneOf() if ood == nil { p.printField(d, mf, w, sourceInfo, childPath, scope, indent) - } else if !skip[ood] { + } else { // print the one-of, including all of its fields p.printOneOf(ood, elements, i, mf, w, sourceInfo, path, indent, d.AsFieldDescriptorProto().GetOneofIndex()) - skip[ood] = true + for _, fld := range ood.GetChoices() { + skip[fld] = true + } } } case *desc.MessageDescriptor: diff --git a/desc/protoprint/testfiles/desc_test1-default.proto b/desc/protoprint/testfiles/desc_test1-default.proto index b8a8aab7..e569076b 100644 --- a/desc/protoprint/testfiles/desc_test1-default.proto +++ b/desc/protoprint/testfiles/desc_test1-default.proto @@ -120,7 +120,6 @@ message AnotherTestMessage { int64 int = 8; } - extensions 100 to 200; } diff --git a/desc/protoprint/testfiles/desc_test1-multiline-style-comments.proto b/desc/protoprint/testfiles/desc_test1-multiline-style-comments.proto index fb011573..9f130bb9 100644 --- a/desc/protoprint/testfiles/desc_test1-multiline-style-comments.proto +++ b/desc/protoprint/testfiles/desc_test1-multiline-style-comments.proto @@ -120,7 +120,6 @@ message AnotherTestMessage { int64 int = 8; } - extensions 100 to 200; } diff --git a/desc/protoprint/testfiles/desc_test1-no-trailing-comments.proto b/desc/protoprint/testfiles/desc_test1-no-trailing-comments.proto index b8a8aab7..e569076b 100644 --- a/desc/protoprint/testfiles/desc_test1-no-trailing-comments.proto +++ b/desc/protoprint/testfiles/desc_test1-no-trailing-comments.proto @@ -120,7 +120,6 @@ message AnotherTestMessage { int64 int = 8; } - extensions 100 to 200; } diff --git a/desc/protoprint/testfiles/desc_test1-only-doc-comments.proto b/desc/protoprint/testfiles/desc_test1-only-doc-comments.proto index b8a8aab7..e569076b 100644 --- a/desc/protoprint/testfiles/desc_test1-only-doc-comments.proto +++ b/desc/protoprint/testfiles/desc_test1-only-doc-comments.proto @@ -120,7 +120,6 @@ message AnotherTestMessage { int64 int = 8; } - extensions 100 to 200; } diff --git a/desc/protoprint/testfiles/desc_test1-sorted-AND-multiline-style-comments.proto b/desc/protoprint/testfiles/desc_test1-sorted-AND-multiline-style-comments.proto index cf557e3a..8a4043a6 100644 --- a/desc/protoprint/testfiles/desc_test1-sorted-AND-multiline-style-comments.proto +++ b/desc/protoprint/testfiles/desc_test1-sorted-AND-multiline-style-comments.proto @@ -42,7 +42,6 @@ message AnotherTestMessage { int64 int = 8; } - extensions 100 to 200; } diff --git a/desc/protoprint/testfiles/desc_test1-sorted.proto b/desc/protoprint/testfiles/desc_test1-sorted.proto index 49a92262..7cc324b3 100644 --- a/desc/protoprint/testfiles/desc_test1-sorted.proto +++ b/desc/protoprint/testfiles/desc_test1-sorted.proto @@ -42,7 +42,6 @@ message AnotherTestMessage { int64 int = 8; } - extensions 100 to 200; } diff --git a/desc/protoprint/testfiles/desc_test1-trailing-on-next-line.proto b/desc/protoprint/testfiles/desc_test1-trailing-on-next-line.proto index b8a8aab7..e569076b 100644 --- a/desc/protoprint/testfiles/desc_test1-trailing-on-next-line.proto +++ b/desc/protoprint/testfiles/desc_test1-trailing-on-next-line.proto @@ -120,7 +120,6 @@ message AnotherTestMessage { int64 int = 8; } - extensions 100 to 200; } diff --git a/desc/protoprint/testfiles/desc_test2-default.proto b/desc/protoprint/testfiles/desc_test2-default.proto index 6e6c3823..f17735d1 100644 --- a/desc/protoprint/testfiles/desc_test2-default.proto +++ b/desc/protoprint/testfiles/desc_test2-default.proto @@ -21,7 +21,6 @@ message Frobnitz { TestMessage.NestedEnum c2 = 4; } - optional TestMessage.NestedMessage d = 5; optional TestMessage.NestedEnum e = 6 [default = VALUE2]; @@ -35,8 +34,6 @@ message Frobnitz { uint32 g3 = 10; } - - } message Whatchamacallit { diff --git a/desc/protoprint/testfiles/desc_test2-multiline-style-comments.proto b/desc/protoprint/testfiles/desc_test2-multiline-style-comments.proto index 8afa8490..cf1574d7 100644 --- a/desc/protoprint/testfiles/desc_test2-multiline-style-comments.proto +++ b/desc/protoprint/testfiles/desc_test2-multiline-style-comments.proto @@ -21,7 +21,6 @@ message Frobnitz { TestMessage.NestedEnum c2 = 4; } - optional TestMessage.NestedMessage d = 5; optional TestMessage.NestedEnum e = 6 [default = VALUE2]; @@ -35,8 +34,6 @@ message Frobnitz { uint32 g3 = 10; } - - } message Whatchamacallit { diff --git a/desc/protoprint/testfiles/desc_test2-no-trailing-comments.proto b/desc/protoprint/testfiles/desc_test2-no-trailing-comments.proto index 6e6c3823..f17735d1 100644 --- a/desc/protoprint/testfiles/desc_test2-no-trailing-comments.proto +++ b/desc/protoprint/testfiles/desc_test2-no-trailing-comments.proto @@ -21,7 +21,6 @@ message Frobnitz { TestMessage.NestedEnum c2 = 4; } - optional TestMessage.NestedMessage d = 5; optional TestMessage.NestedEnum e = 6 [default = VALUE2]; @@ -35,8 +34,6 @@ message Frobnitz { uint32 g3 = 10; } - - } message Whatchamacallit { diff --git a/desc/protoprint/testfiles/desc_test2-only-doc-comments.proto b/desc/protoprint/testfiles/desc_test2-only-doc-comments.proto index 6e6c3823..f17735d1 100644 --- a/desc/protoprint/testfiles/desc_test2-only-doc-comments.proto +++ b/desc/protoprint/testfiles/desc_test2-only-doc-comments.proto @@ -21,7 +21,6 @@ message Frobnitz { TestMessage.NestedEnum c2 = 4; } - optional TestMessage.NestedMessage d = 5; optional TestMessage.NestedEnum e = 6 [default = VALUE2]; @@ -35,8 +34,6 @@ message Frobnitz { uint32 g3 = 10; } - - } message Whatchamacallit { diff --git a/desc/protoprint/testfiles/desc_test2-sorted-AND-multiline-style-comments.proto b/desc/protoprint/testfiles/desc_test2-sorted-AND-multiline-style-comments.proto index a4782044..fe70acb8 100644 --- a/desc/protoprint/testfiles/desc_test2-sorted-AND-multiline-style-comments.proto +++ b/desc/protoprint/testfiles/desc_test2-sorted-AND-multiline-style-comments.proto @@ -21,7 +21,6 @@ message Frobnitz { TestMessage.NestedEnum c2 = 4; } - optional TestMessage.NestedMessage d = 5; optional TestMessage.NestedEnum e = 6 [default = VALUE2]; @@ -35,8 +34,6 @@ message Frobnitz { uint32 g3 = 10; } - - } message Whatchamacallit { diff --git a/desc/protoprint/testfiles/desc_test2-sorted.proto b/desc/protoprint/testfiles/desc_test2-sorted.proto index b9b1e728..94b2c764 100644 --- a/desc/protoprint/testfiles/desc_test2-sorted.proto +++ b/desc/protoprint/testfiles/desc_test2-sorted.proto @@ -21,7 +21,6 @@ message Frobnitz { TestMessage.NestedEnum c2 = 4; } - optional TestMessage.NestedMessage d = 5; optional TestMessage.NestedEnum e = 6 [default = VALUE2]; @@ -35,8 +34,6 @@ message Frobnitz { uint32 g3 = 10; } - - } message Whatchamacallit { diff --git a/desc/protoprint/testfiles/desc_test2-trailing-on-next-line.proto b/desc/protoprint/testfiles/desc_test2-trailing-on-next-line.proto index 6e6c3823..f17735d1 100644 --- a/desc/protoprint/testfiles/desc_test2-trailing-on-next-line.proto +++ b/desc/protoprint/testfiles/desc_test2-trailing-on-next-line.proto @@ -21,7 +21,6 @@ message Frobnitz { TestMessage.NestedEnum c2 = 4; } - optional TestMessage.NestedMessage d = 5; optional TestMessage.NestedEnum e = 6 [default = VALUE2]; @@ -35,8 +34,6 @@ message Frobnitz { uint32 g3 = 10; } - - } message Whatchamacallit { diff --git a/desc/protoprint/testfiles/desc_test_comments-default.proto b/desc/protoprint/testfiles/desc_test_comments-default.proto index 1aec42e8..a9f6512a 100644 --- a/desc/protoprint/testfiles/desc_test_comments-default.proto +++ b/desc/protoprint/testfiles/desc_test_comments-default.proto @@ -100,7 +100,6 @@ message Request { int32 that = 5; } - // can be these or those oneof xyz { string these = 6; @@ -108,7 +107,6 @@ message Request { int32 those = 7; } - // map field map things = 8; } diff --git a/desc/protoprint/testfiles/desc_test_comments-multiline-style-comments.proto b/desc/protoprint/testfiles/desc_test_comments-multiline-style-comments.proto index 9b53cb07..bb043246 100644 --- a/desc/protoprint/testfiles/desc_test_comments-multiline-style-comments.proto +++ b/desc/protoprint/testfiles/desc_test_comments-multiline-style-comments.proto @@ -102,7 +102,6 @@ message Request { int32 that = 5; } - /* can be these or those */ oneof xyz { string these = 6; @@ -110,7 +109,6 @@ message Request { int32 those = 7; } - /* map field */ map things = 8; } diff --git a/desc/protoprint/testfiles/desc_test_comments-no-trailing-comments.proto b/desc/protoprint/testfiles/desc_test_comments-no-trailing-comments.proto index d184fb74..93fbcae3 100644 --- a/desc/protoprint/testfiles/desc_test_comments-no-trailing-comments.proto +++ b/desc/protoprint/testfiles/desc_test_comments-no-trailing-comments.proto @@ -100,7 +100,6 @@ message Request { int32 that = 5; } - // can be these or those oneof xyz { string these = 6; @@ -108,7 +107,6 @@ message Request { int32 those = 7; } - // map field map things = 8; } diff --git a/desc/protoprint/testfiles/desc_test_comments-only-doc-comments.proto b/desc/protoprint/testfiles/desc_test_comments-only-doc-comments.proto index 8f6d04cf..b5607695 100644 --- a/desc/protoprint/testfiles/desc_test_comments-only-doc-comments.proto +++ b/desc/protoprint/testfiles/desc_test_comments-only-doc-comments.proto @@ -79,7 +79,6 @@ message Request { int32 that = 5; } - // can be these or those oneof xyz { string these = 6; @@ -87,7 +86,6 @@ message Request { int32 those = 7; } - // map field map things = 8; } diff --git a/desc/protoprint/testfiles/desc_test_comments-sorted-AND-multiline-style-comments.proto b/desc/protoprint/testfiles/desc_test_comments-sorted-AND-multiline-style-comments.proto index a39d4d8d..a109d8f5 100644 --- a/desc/protoprint/testfiles/desc_test_comments-sorted-AND-multiline-style-comments.proto +++ b/desc/protoprint/testfiles/desc_test_comments-sorted-AND-multiline-style-comments.proto @@ -66,7 +66,6 @@ message Request { int32 that = 5; } - /* can be these or those */ oneof xyz { string these = 6; @@ -74,7 +73,6 @@ message Request { int32 those = 7; } - /* map field */ map things = 8; diff --git a/desc/protoprint/testfiles/desc_test_comments-sorted.proto b/desc/protoprint/testfiles/desc_test_comments-sorted.proto index 80d544f1..a7375395 100644 --- a/desc/protoprint/testfiles/desc_test_comments-sorted.proto +++ b/desc/protoprint/testfiles/desc_test_comments-sorted.proto @@ -49,7 +49,6 @@ message Request { int32 that = 5; } - // can be these or those oneof xyz { string these = 6; @@ -57,7 +56,6 @@ message Request { int32 those = 7; } - // map field map things = 8; diff --git a/desc/protoprint/testfiles/desc_test_comments-trailing-on-next-line.proto b/desc/protoprint/testfiles/desc_test_comments-trailing-on-next-line.proto index 3f4a0732..8fa2e168 100644 --- a/desc/protoprint/testfiles/desc_test_comments-trailing-on-next-line.proto +++ b/desc/protoprint/testfiles/desc_test_comments-trailing-on-next-line.proto @@ -105,7 +105,6 @@ message Request { int32 that = 5; } - // can be these or those oneof xyz { string these = 6; @@ -113,7 +112,6 @@ message Request { int32 those = 7; } - // map field map things = 8; } diff --git a/desc/protoprint/testfiles/desc_test_complex-compact.proto b/desc/protoprint/testfiles/desc_test_complex-compact.proto index 69fa03c3..2f6c0bba 100644 --- a/desc/protoprint/testfiles/desc_test_complex-compact.proto +++ b/desc/protoprint/testfiles/desc_test_complex-compact.proto @@ -114,6 +114,10 @@ message Rule { StringRule string = 1; RepeatedRule repeated = 2; IntRule int = 3; + group FloatRule = 4 { + optional double min_val = 1; + optional double max_val = 2; + } } } extend google.protobuf.FieldOptions { diff --git a/desc/protoprint/testfiles/desc_test_complex-default.proto b/desc/protoprint/testfiles/desc_test_complex-default.proto index f6ea4fd6..569a2fe9 100644 --- a/desc/protoprint/testfiles/desc_test_complex-default.proto +++ b/desc/protoprint/testfiles/desc_test_complex-default.proto @@ -179,9 +179,13 @@ message Rule { RepeatedRule repeated = 2; IntRule int = 3; - } + group FloatRule = 4 { + optional double min_val = 1; + optional double max_val = 2; + } + } } extend google.protobuf.FieldOptions { diff --git a/desc/protoprint/testfiles/desc_test_complex-multiline-style-comments.proto b/desc/protoprint/testfiles/desc_test_complex-multiline-style-comments.proto index 58fe88d2..de4e7ace 100644 --- a/desc/protoprint/testfiles/desc_test_complex-multiline-style-comments.proto +++ b/desc/protoprint/testfiles/desc_test_complex-multiline-style-comments.proto @@ -179,9 +179,13 @@ message Rule { RepeatedRule repeated = 2; IntRule int = 3; - } + group FloatRule = 4 { + optional double min_val = 1; + optional double max_val = 2; + } + } } extend google.protobuf.FieldOptions { diff --git a/desc/protoprint/testfiles/desc_test_complex-no-trailing-comments.proto b/desc/protoprint/testfiles/desc_test_complex-no-trailing-comments.proto index f6ea4fd6..569a2fe9 100644 --- a/desc/protoprint/testfiles/desc_test_complex-no-trailing-comments.proto +++ b/desc/protoprint/testfiles/desc_test_complex-no-trailing-comments.proto @@ -179,9 +179,13 @@ message Rule { RepeatedRule repeated = 2; IntRule int = 3; - } + group FloatRule = 4 { + optional double min_val = 1; + optional double max_val = 2; + } + } } extend google.protobuf.FieldOptions { diff --git a/desc/protoprint/testfiles/desc_test_complex-only-doc-comments.proto b/desc/protoprint/testfiles/desc_test_complex-only-doc-comments.proto index 8a9b009c..6bf4cb96 100644 --- a/desc/protoprint/testfiles/desc_test_complex-only-doc-comments.proto +++ b/desc/protoprint/testfiles/desc_test_complex-only-doc-comments.proto @@ -179,9 +179,13 @@ message Rule { RepeatedRule repeated = 2; IntRule int = 3; - } + group FloatRule = 4 { + optional double min_val = 1; + optional double max_val = 2; + } + } } extend google.protobuf.FieldOptions { diff --git a/desc/protoprint/testfiles/desc_test_complex-sorted-AND-multiline-style-comments.proto b/desc/protoprint/testfiles/desc_test_complex-sorted-AND-multiline-style-comments.proto index 6b7e7e54..cc68a71f 100644 --- a/desc/protoprint/testfiles/desc_test_complex-sorted-AND-multiline-style-comments.proto +++ b/desc/protoprint/testfiles/desc_test_complex-sorted-AND-multiline-style-comments.proto @@ -117,9 +117,13 @@ message Rule { RepeatedRule repeated = 2; IntRule int = 3; - } + group FloatRule = 4 { + optional double min_val = 1; + optional double max_val = 2; + } + } message IntRule { optional int64 min_val = 1; diff --git a/desc/protoprint/testfiles/desc_test_complex-sorted.proto b/desc/protoprint/testfiles/desc_test_complex-sorted.proto index a0732a55..357a3677 100644 --- a/desc/protoprint/testfiles/desc_test_complex-sorted.proto +++ b/desc/protoprint/testfiles/desc_test_complex-sorted.proto @@ -115,9 +115,13 @@ message Rule { RepeatedRule repeated = 2; IntRule int = 3; - } + group FloatRule = 4 { + optional double min_val = 1; + optional double max_val = 2; + } + } message IntRule { optional int64 min_val = 1; diff --git a/desc/protoprint/testfiles/desc_test_complex-trailing-on-next-line.proto b/desc/protoprint/testfiles/desc_test_complex-trailing-on-next-line.proto index f6ea4fd6..569a2fe9 100644 --- a/desc/protoprint/testfiles/desc_test_complex-trailing-on-next-line.proto +++ b/desc/protoprint/testfiles/desc_test_complex-trailing-on-next-line.proto @@ -179,9 +179,13 @@ message Rule { RepeatedRule repeated = 2; IntRule int = 3; - } + group FloatRule = 4 { + optional double min_val = 1; + optional double max_val = 2; + } + } } extend google.protobuf.FieldOptions { diff --git a/desc/protoprint/testfiles/test-non-files-full.txt b/desc/protoprint/testfiles/test-non-files-full.txt index 0155c131..2d7d009c 100644 --- a/desc/protoprint/testfiles/test-non-files-full.txt +++ b/desc/protoprint/testfiles/test-non-files-full.txt @@ -105,7 +105,6 @@ message /* detached message name */ /* request with a capital R */ Request /* tr int32 that = 5; } - // can be these or those oneof xyz { string these = 6; @@ -113,7 +112,6 @@ message /* detached message name */ /* request with a capital R */ Request /* tr int32 those = 7; } - // map field map things = 8; } @@ -240,7 +238,6 @@ message /* detached message name */ /* request with a capital R */ Request /* tr int32 that = 5; } - // can be these or those oneof xyz { string these = 6; @@ -248,7 +245,6 @@ message /* detached message name */ /* request with a capital R */ Request /* tr int32 those = 7; } - // map field map things = 8; } diff --git a/desc/protoprint/testfiles/test-preserve-comments.proto b/desc/protoprint/testfiles/test-preserve-comments.proto index 05c04550..c52066e0 100644 --- a/desc/protoprint/testfiles/test-preserve-comments.proto +++ b/desc/protoprint/testfiles/test-preserve-comments.proto @@ -104,7 +104,6 @@ message /* detached message name */ /* request with a capital R */ Request /* tr int32 that = 5; } - // can be these or those oneof xyz { string these = 6; @@ -112,7 +111,6 @@ message /* detached message name */ /* request with a capital R */ Request /* tr int32 those = 7; } - // map field map things = 8; } diff --git a/desc/protoprint/testfiles/test-preserve-doc-comments.proto b/desc/protoprint/testfiles/test-preserve-doc-comments.proto index 8f6d04cf..b5607695 100644 --- a/desc/protoprint/testfiles/test-preserve-doc-comments.proto +++ b/desc/protoprint/testfiles/test-preserve-doc-comments.proto @@ -79,7 +79,6 @@ message Request { int32 that = 5; } - // can be these or those oneof xyz { string these = 6; @@ -87,7 +86,6 @@ message Request { int32 those = 7; } - // map field map things = 8; } diff --git a/internal/testprotos/desc_test_complex.pb.go b/internal/testprotos/desc_test_complex.pb.go index ecd78c3b..69be7eae 100644 --- a/internal/testprotos/desc_test_complex.pb.go +++ b/internal/testprotos/desc_test_complex.pb.go @@ -605,6 +605,7 @@ type Rule struct { // *Rule_String_ // *Rule_Repeated // *Rule_Int + // *Rule_Floatrule Rule isRule_Rule `protobuf_oneof:"rule"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -652,12 +653,18 @@ type Rule_Int struct { Int *Rule_IntRule `protobuf:"bytes,3,opt,name=int,oneof"` } +type Rule_Floatrule struct { + Floatrule *Rule_FloatRule `protobuf:"group,4,opt,name=FloatRule,json=floatrule,oneof"` +} + func (*Rule_String_) isRule_Rule() {} func (*Rule_Repeated) isRule_Rule() {} func (*Rule_Int) isRule_Rule() {} +func (*Rule_Floatrule) isRule_Rule() {} + func (m *Rule) GetRule() isRule_Rule { if m != nil { return m.Rule @@ -686,12 +693,20 @@ func (m *Rule) GetInt() *Rule_IntRule { return nil } +func (m *Rule) GetFloatrule() *Rule_FloatRule { + if x, ok := m.GetRule().(*Rule_Floatrule); ok { + return x.Floatrule + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*Rule) XXX_OneofWrappers() []interface{} { return []interface{}{ (*Rule_String_)(nil), (*Rule_Repeated)(nil), (*Rule_Int)(nil), + (*Rule_Floatrule)(nil), } } @@ -868,6 +883,53 @@ func (m *Rule_RepeatedRule) GetItems() *Rule { return nil } +type Rule_FloatRule struct { + MinVal *float64 `protobuf:"fixed64,1,opt,name=min_val,json=minVal" json:"min_val,omitempty"` + MaxVal *float64 `protobuf:"fixed64,2,opt,name=max_val,json=maxVal" json:"max_val,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Rule_FloatRule) Reset() { *m = Rule_FloatRule{} } +func (m *Rule_FloatRule) String() string { return proto.CompactTextString(m) } +func (*Rule_FloatRule) ProtoMessage() {} +func (*Rule_FloatRule) Descriptor() ([]byte, []int) { + return fileDescriptor_2643e20efc4f24c4, []int{5, 3} +} + +func (m *Rule_FloatRule) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Rule_FloatRule.Unmarshal(m, b) +} +func (m *Rule_FloatRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Rule_FloatRule.Marshal(b, m, deterministic) +} +func (m *Rule_FloatRule) XXX_Merge(src proto.Message) { + xxx_messageInfo_Rule_FloatRule.Merge(m, src) +} +func (m *Rule_FloatRule) XXX_Size() int { + return xxx_messageInfo_Rule_FloatRule.Size(m) +} +func (m *Rule_FloatRule) XXX_DiscardUnknown() { + xxx_messageInfo_Rule_FloatRule.DiscardUnknown(m) +} + +var xxx_messageInfo_Rule_FloatRule proto.InternalMessageInfo + +func (m *Rule_FloatRule) GetMinVal() float64 { + if m != nil && m.MinVal != nil { + return *m.MinVal + } + return 0 +} + +func (m *Rule_FloatRule) GetMaxVal() float64 { + if m != nil && m.MaxVal != nil { + return *m.MaxVal + } + return 0 +} + type IsAuthorizedReq struct { Subjects []string `protobuf:"bytes,1,rep,name=subjects" json:"subjects,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -1663,6 +1725,7 @@ func init() { proto.RegisterType((*Rule_StringRule)(nil), "foo.bar.Rule.StringRule") proto.RegisterType((*Rule_IntRule)(nil), "foo.bar.Rule.IntRule") proto.RegisterType((*Rule_RepeatedRule)(nil), "foo.bar.Rule.RepeatedRule") + proto.RegisterType((*Rule_FloatRule)(nil), "foo.bar.Rule.FloatRule") proto.RegisterType((*IsAuthorizedReq)(nil), "foo.bar.IsAuthorizedReq") proto.RegisterType((*KeywordCollisions)(nil), "foo.bar.KeywordCollisions") proto.RegisterType((*KeywordCollisionOptions)(nil), "foo.bar.KeywordCollisionOptions") @@ -1713,169 +1776,172 @@ func init() { func init() { proto.RegisterFile("desc_test_complex.proto", fileDescriptor_2643e20efc4f24c4) } var fileDescriptor_2643e20efc4f24c4 = []byte{ - // 2590 bytes of a gzipped FileDescriptorProto + // 2626 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x98, 0x5b, 0x6c, 0x1c, 0xd5, - 0x19, 0xc7, 0xfd, 0xcd, 0xec, 0xae, 0xe7, 0x1c, 0x3b, 0xc9, 0x70, 0x08, 0x64, 0xb2, 0x34, 0x64, - 0xb3, 0xa0, 0x68, 0xe3, 0xb6, 0x9b, 0xf5, 0xda, 0x31, 0x30, 0x01, 0x12, 0x3b, 0xb8, 0x90, 0x70, - 0x09, 0x1d, 0x68, 0xa0, 0x60, 0x6a, 0x66, 0x77, 0xcf, 0xda, 0x03, 0xb3, 0x33, 0xcb, 0xcc, 0x6c, - 0xb0, 0xd3, 0x48, 0x58, 0x45, 0x45, 0xf4, 0xa5, 0x4d, 0xa3, 0x3e, 0x44, 0x95, 0x91, 0xc0, 0xb4, - 0x05, 0x0a, 0x6d, 0x29, 0xbd, 0x01, 0xbd, 0x85, 0xd2, 0x87, 0x14, 0x09, 0x29, 0xe2, 0x89, 0xbe, - 0x00, 0xda, 0x8d, 0xaa, 0x3c, 0x46, 0xa2, 0x48, 0xa0, 0xaa, 0x4d, 0x75, 0x2e, 0x33, 0x6b, 0x27, - 0xa9, 0x86, 0xae, 0x64, 0xcf, 0x7c, 0xe7, 0xfb, 0x7e, 0xdf, 0xb9, 0x9f, 0xf3, 0xdf, 0xc5, 0x9b, - 0x1a, 0x34, 0xac, 0xcf, 0x46, 0x34, 0x8c, 0x66, 0xeb, 0x7e, 0xab, 0xed, 0xd2, 0x85, 0x72, 0x3b, - 0xf0, 0x23, 0x9f, 0x0c, 0x36, 0x7d, 0xbf, 0x5c, 0xb3, 0x83, 0x7c, 0x61, 0xce, 0xf7, 0xe7, 0x5c, - 0xba, 0x93, 0x17, 0xd7, 0x3a, 0xcd, 0x9d, 0x8c, 0x08, 0x9c, 0x76, 0xe4, 0x07, 0x22, 0xb4, 0xf8, - 0x25, 0x9c, 0xbb, 0xc7, 0x61, 0x2c, 0x21, 0x38, 0xe3, 0xd9, 0x2d, 0x6a, 0x40, 0x01, 0x4a, 0xc8, - 0xe2, 0xef, 0x64, 0x3d, 0x56, 0x9c, 0x86, 0xa1, 0x14, 0xa0, 0x94, 0xb1, 0x14, 0xa7, 0x51, 0x7c, - 0x37, 0x83, 0x33, 0xf7, 0xd2, 0x30, 0x22, 0x04, 0xab, 0x4d, 0xdf, 0x97, 0xb1, 0xd9, 0xa3, 0x4d, - 0xdf, 0x3f, 0x4a, 0x36, 0xe2, 0xac, 0x1d, 0x04, 0xf6, 0xa2, 0xa1, 0x14, 0xd4, 0x52, 0xd6, 0x12, - 0x06, 0xd9, 0x82, 0x21, 0x34, 0xd4, 0x02, 0x94, 0x86, 0xaa, 0x1b, 0xca, 0xb2, 0x5d, 0x65, 0x51, - 0xa5, 0x05, 0x21, 0x73, 0x07, 0x46, 0xa6, 0xa0, 0x5e, 0xd2, 0x1d, 0x90, 0x22, 0x86, 0x96, 0x91, - 0xe5, 0xee, 0x8d, 0x89, 0x9b, 0xb5, 0xa0, 0x7c, 0xe7, 0xb4, 0x17, 0x05, 0x8b, 0x16, 0xb4, 0xc8, - 0x38, 0x86, 0x9a, 0x91, 0x2b, 0x40, 0x69, 0xd8, 0xdc, 0x3e, 0x53, 0xa9, 0x54, 0x66, 0x2a, 0x95, - 0xd1, 0x99, 0x4a, 0xa5, 0x3a, 0x53, 0xa9, 0x8c, 0xcd, 0x54, 0x2a, 0xe3, 0x33, 0x95, 0xca, 0xae, - 0x99, 0x4a, 0x65, 0x62, 0xa6, 0x52, 0xb9, 0xae, 0xd9, 0xa9, 0xd9, 0xc1, 0x36, 0x0b, 0x6a, 0xf9, - 0x71, 0x9c, 0x13, 0x29, 0x88, 0x8e, 0xd5, 0x47, 0xe9, 0xa2, 0xec, 0x0b, 0x7b, 0x65, 0x3d, 0x39, - 0x6c, 0xbb, 0x1d, 0xca, 0x7b, 0x9e, 0xb5, 0x84, 0x61, 0x2a, 0xd7, 0x43, 0xfe, 0x39, 0x05, 0xe7, - 0xee, 0xa2, 0x61, 0x44, 0x1b, 0xf9, 0xbf, 0x03, 0x5e, 0x37, 0x2b, 0xde, 0x65, 0xc9, 0x7e, 0x4c, - 0x56, 0xdb, 0xe2, 0x3f, 0xd9, 0x26, 0x86, 0x8c, 0xe7, 0x1f, 0xaa, 0xae, 0x5b, 0xd3, 0x0b, 0x8b, - 0xbb, 0x4c, 0xfd, 0x78, 0x17, 0x0d, 0x63, 0x75, 0xde, 0xf7, 0x57, 0x72, 0x99, 0xb0, 0xed, 0xfb, - 0xc5, 0x9b, 0xb0, 0x3a, 0x3d, 0x3d, 0x4d, 0x72, 0x58, 0x39, 0x78, 0xbb, 0x3e, 0xc0, 0x9e, 0x87, - 0x46, 0x75, 0xe0, 0xcf, 0xaa, 0xae, 0xf0, 0xe7, 0x98, 0xae, 0xf2, 0xe7, 0xb8, 0x9e, 0xe1, 0xcf, - 0x5d, 0x7a, 0x96, 0x3f, 0x27, 0xf4, 0x5c, 0xb5, 0x84, 0xb5, 0xd9, 0x39, 0x3b, 0xa8, 0xb9, 0xf4, - 0x08, 0x59, 0x5b, 0xa3, 0xd1, 0xe0, 0xdd, 0x1c, 0xbc, 0x55, 0x78, 0xcd, 0x8d, 0xc7, 0xbb, 0x68, - 0x08, 0xab, 0x73, 0xac, 0x6a, 0xb5, 0xe6, 0xfb, 0x27, 0xba, 0xe8, 0x93, 0xbb, 0xaa, 0xbb, 0x31, - 0x5b, 0x42, 0x1c, 0xdf, 0x5a, 0x16, 0x6b, 0xa8, 0x1c, 0xaf, 0xa1, 0xf2, 0x9d, 0x34, 0x0c, 0xed, - 0x39, 0x7a, 0xb0, 0x1d, 0x39, 0xbe, 0x17, 0x1a, 0xcf, 0x2f, 0x03, 0x1f, 0xa5, 0x98, 0x18, 0xc9, - 0x6a, 0x0d, 0xfd, 0x6f, 0x30, 0xa2, 0x6b, 0xaf, 0x28, 0xfa, 0x87, 0x4a, 0x5e, 0xfb, 0x56, 0x17, - 0x65, 0x1e, 0xb1, 0x8f, 0x1c, 0x19, 0xd1, 0xb5, 0x7f, 0xaa, 0xfa, 0x0b, 0x99, 0x7e, 0x49, 0x71, - 0x0f, 0xde, 0x24, 0xb3, 0xdd, 0xe7, 0x44, 0xf3, 0x16, 0x0d, 0x69, 0x70, 0xd8, 0xe6, 0x69, 0x0f, - 0x64, 0xb4, 0xac, 0x3e, 0x74, 0x20, 0xa3, 0x0d, 0xeb, 0xfa, 0x81, 0x8c, 0x46, 0xf4, 0xcb, 0x0f, - 0x20, 0xed, 0xec, 0xa0, 0xbe, 0xb4, 0xb4, 0xb4, 0xa4, 0x58, 0x30, 0x69, 0xc1, 0x94, 0x05, 0xfb, - 0x8a, 0x27, 0x14, 0x3c, 0x38, 0xe9, 0xf9, 0xd1, 0x3c, 0x0d, 0xd8, 0x40, 0x47, 0xff, 0x7b, 0xa0, - 0x99, 0x8b, 0xdc, 0x88, 0xd5, 0x66, 0xb3, 0xc9, 0xa7, 0x75, 0x7d, 0x75, 0xfb, 0xda, 0x05, 0x25, - 0xa6, 0xab, 0xbc, 0x66, 0x4a, 0xcb, 0xd3, 0xd3, 0xd3, 0xa6, 0x72, 0x68, 0xd4, 0x62, 0x98, 0xf9, - 0x32, 0x1c, 0xef, 0xa2, 0x6b, 0xb0, 0x6a, 0xd7, 0xea, 0x3a, 0xe8, 0x8a, 0xae, 0xe6, 0x07, 0xf9, - 0x36, 0xd0, 0xbf, 0x59, 0x54, 0x31, 0x34, 0xd9, 0xbf, 0xb0, 0xa8, 0xea, 0xa7, 0xd4, 0xe3, 0x5d, - 0xb4, 0x15, 0xab, 0x0d, 0xda, 0xd4, 0x55, 0x5d, 0xd1, 0x21, 0xaf, 0x61, 0xb5, 0x66, 0x07, 0xfa, - 0x5b, 0x0a, 0x0b, 0x99, 0xe3, 0x71, 0xc7, 0xbb, 0x28, 0xcb, 0x43, 0x4e, 0x77, 0x11, 0xac, 0xf4, - 0x90, 0xa2, 0x0f, 0xac, 0xf4, 0xd0, 0x15, 0xf8, 0xf2, 0x11, 0x99, 0xb3, 0x31, 0x22, 0xa9, 0x53, - 0xcc, 0x3d, 0x88, 0xb3, 0x58, 0x6d, 0x6d, 0x6f, 0xad, 0xf4, 0x10, 0xc6, 0x5a, 0x3e, 0x87, 0x33, - 0x8b, 0xbe, 0xeb, 0xaf, 0xf4, 0x90, 0x86, 0x73, 0xf9, 0x8c, 0xfe, 0xee, 0x93, 0xb9, 0x95, 0x1e, - 0xca, 0x60, 0x45, 0x07, 0xf9, 0x54, 0x8a, 0x1f, 0x03, 0x46, 0x87, 0x6c, 0xd7, 0x69, 0xd8, 0x91, - 0x1f, 0x90, 0x6b, 0xf1, 0x3a, 0xbb, 0x13, 0xcd, 0x53, 0x2f, 0x72, 0xea, 0x76, 0x44, 0x1b, 0x7c, - 0x94, 0x34, 0x6b, 0x6d, 0x21, 0xb9, 0x09, 0xe3, 0x36, 0x0d, 0x5a, 0x4e, 0x18, 0x3a, 0xbe, 0xc7, - 0xf7, 0xf1, 0x50, 0x75, 0x4b, 0x32, 0x4c, 0x49, 0xb6, 0xf2, 0xdd, 0x49, 0x90, 0xb5, 0x0a, 0xc8, - 0xdf, 0x87, 0x71, 0xdf, 0x43, 0x46, 0x71, 0xce, 0xae, 0xb3, 0xc9, 0xe4, 0x75, 0xad, 0xaf, 0x6e, - 0xbe, 0x44, 0xa2, 0x49, 0x1e, 0x60, 0xc9, 0x40, 0x72, 0x25, 0xce, 0xb1, 0xc6, 0x44, 0x8b, 0x7c, - 0x8a, 0x90, 0x25, 0xad, 0x62, 0x09, 0xe7, 0x44, 0x24, 0x41, 0x38, 0x7b, 0xc7, 0xc1, 0x5b, 0xf7, - 0xdf, 0xa5, 0x0f, 0x10, 0x0d, 0x67, 0xac, 0xe9, 0xc9, 0x5b, 0x74, 0x60, 0x85, 0xf7, 0x59, 0xfb, - 0xef, 0x9d, 0xd6, 0x95, 0xe2, 0x39, 0x15, 0x67, 0xac, 0x8e, 0x4b, 0x49, 0x15, 0xe7, 0xc2, 0x28, - 0x70, 0xbc, 0x39, 0xb9, 0x1e, 0x8c, 0xa4, 0x76, 0xe6, 0x2e, 0xdf, 0xc3, 0x7d, 0xec, 0xf5, 0xb6, - 0x01, 0x4b, 0x46, 0x92, 0xeb, 0xb1, 0x16, 0xd0, 0x36, 0xe5, 0xe3, 0xa3, 0x70, 0x2a, 0xbf, 0x96, - 0xb2, 0xa4, 0x57, 0x72, 0x49, 0x34, 0xd9, 0x81, 0x55, 0xc7, 0x8b, 0xe4, 0x39, 0x77, 0xc5, 0x5a, - 0x68, 0xbf, 0x17, 0xc9, 0x78, 0x16, 0x93, 0x5f, 0xc4, 0xb8, 0x5f, 0x39, 0x31, 0xf0, 0x60, 0xdb, - 0x8e, 0x22, 0x1a, 0x78, 0xf2, 0x00, 0x8a, 0x4d, 0xb2, 0x15, 0x0f, 0xd9, 0xae, 0xeb, 0x3f, 0x3e, - 0x4b, 0x5b, 0x6d, 0x39, 0x20, 0x9a, 0x85, 0x79, 0xd1, 0x34, 0x2b, 0x21, 0x9b, 0xf0, 0x60, 0xcb, - 0xf1, 0x66, 0x5d, 0xea, 0xf1, 0x7a, 0xb3, 0x56, 0xae, 0xe5, 0x78, 0x77, 0x50, 0x8f, 0x3b, 0xec, - 0x05, 0xee, 0xc8, 0x48, 0x87, 0xbd, 0x70, 0x07, 0xf5, 0xf2, 0xbb, 0xf1, 0xa0, 0x6c, 0x4c, 0x0c, - 0x1f, 0xb6, 0x5d, 0x5e, 0xaf, 0xca, 0xe1, 0x43, 0xb6, 0x1b, 0xc3, 0xcc, 0x21, 0xce, 0x7d, 0x06, - 0x1f, 0xb2, 0xdd, 0xfc, 0x77, 0x01, 0x0f, 0xaf, 0xee, 0xff, 0x85, 0x0d, 0x84, 0x8b, 0x1a, 0x78, - 0x15, 0x46, 0xac, 0x0e, 0x27, 0xa2, 0xad, 0x50, 0x1e, 0xa5, 0x5a, 0xcb, 0xf1, 0xf6, 0x33, 0x9b, - 0x3b, 0xed, 0x05, 0xe9, 0x54, 0xa5, 0xd3, 0x5e, 0x10, 0xce, 0x6b, 0x70, 0x56, 0x38, 0x32, 0x17, - 0xec, 0x65, 0x56, 0xb1, 0x25, 0x7c, 0x53, 0x39, 0x9c, 0x09, 0x3a, 0x2e, 0x2d, 0xb6, 0xf0, 0x86, - 0xfd, 0xe1, 0x64, 0x27, 0x9a, 0xf7, 0x03, 0xe7, 0x08, 0x6d, 0x58, 0xf4, 0x31, 0xf2, 0x00, 0xd6, - 0xc2, 0x4e, 0xed, 0x11, 0x5a, 0x8f, 0x42, 0x03, 0x0a, 0x6a, 0x09, 0x4d, 0xdd, 0x7c, 0xfc, 0xce, - 0xdd, 0xe4, 0x06, 0x1d, 0x8a, 0xbb, 0xf0, 0x18, 0x1e, 0xfd, 0x46, 0x69, 0x8f, 0x59, 0xda, 0x63, - 0x46, 0xd4, 0x6e, 0xb1, 0xa7, 0xeb, 0xd7, 0x6d, 0xf7, 0xa8, 0xdb, 0xb0, 0xdb, 0x3b, 0x76, 0x1c, - 0xed, 0x84, 0x34, 0xd8, 0x61, 0x3e, 0xf8, 0xa0, 0x69, 0xbb, 0x5e, 0xa7, 0x65, 0x3e, 0x34, 0xfb, - 0xe5, 0x87, 0xbe, 0x78, 0xad, 0x95, 0xe4, 0x2b, 0x7e, 0x98, 0xc3, 0x97, 0xdd, 0x4e, 0x17, 0x1f, - 0xf7, 0x83, 0xc6, 0x3e, 0xdf, 0x75, 0x1d, 0xb6, 0xd6, 0x43, 0xb6, 0x72, 0xc3, 0x45, 0x2f, 0xb2, - 0x17, 0xe4, 0x38, 0x48, 0x8b, 0x95, 0x3b, 0xad, 0xb6, 0x1f, 0x44, 0x72, 0x02, 0xa5, 0xc5, 0xca, - 0xdb, 0x9d, 0x9a, 0xeb, 0xd4, 0x79, 0xdf, 0x35, 0x4b, 0x5a, 0xec, 0x16, 0x7e, 0x9c, 0xda, 0x8f, - 0xf2, 0x8e, 0x6b, 0x16, 0x7f, 0x17, 0x6b, 0xa4, 0xfe, 0xa8, 0x3d, 0x47, 0x8d, 0x2c, 0x2f, 0x8e, - 0x4d, 0x5e, 0xab, 0x58, 0xe4, 0x39, 0xb1, 0x5f, 0xe4, 0x42, 0xde, 0x88, 0xb3, 0xb5, 0xc5, 0x88, - 0x86, 0xc6, 0x20, 0xbb, 0x16, 0x2d, 0x61, 0xb0, 0x52, 0xc7, 0x8b, 0xc6, 0xaa, 0x86, 0x26, 0xae, - 0x35, 0x6e, 0xc8, 0xd2, 0x89, 0x71, 0x03, 0xf1, 0x75, 0x20, 0x0c, 0x96, 0xb9, 0x23, 0x82, 0x71, - 0x01, 0x4a, 0xeb, 0x2c, 0x69, 0xc5, 0xe5, 0x13, 0xe3, 0xc6, 0x90, 0x58, 0x1d, 0x9d, 0x24, 0x3e, - 0x14, 0xf1, 0xc3, 0x05, 0x28, 0x5d, 0x66, 0x49, 0x2b, 0x2e, 0x9f, 0x18, 0x37, 0xd6, 0x15, 0xa0, - 0x44, 0x2c, 0x69, 0xb1, 0x3e, 0x35, 0x9d, 0x05, 0xda, 0x18, 0xab, 0x1a, 0xeb, 0x0b, 0x50, 0x1a, - 0xb4, 0x62, 0x33, 0xf1, 0x4c, 0x8c, 0x1b, 0x1b, 0x0a, 0x50, 0xca, 0x59, 0xb1, 0x49, 0xf2, 0x58, - 0x0b, 0x63, 0x48, 0x2f, 0x40, 0x69, 0x83, 0x95, 0xd8, 0x7d, 0xdf, 0xc4, 0xb8, 0x71, 0x59, 0x01, - 0x4a, 0xba, 0x95, 0xd8, 0x6c, 0x4c, 0x6b, 0xbe, 0xef, 0x1a, 0x44, 0x8c, 0x29, 0x7b, 0x67, 0xbd, - 0x6e, 0xba, 0xbe, 0x1d, 0x19, 0x97, 0x17, 0xa0, 0xa4, 0x58, 0xc2, 0x60, 0xad, 0x6d, 0xf8, 0x9d, - 0x9a, 0x4b, 0x8d, 0x8d, 0x05, 0x28, 0x81, 0x25, 0x2d, 0x96, 0xdd, 0xe7, 0xd7, 0x9d, 0xed, 0x1a, - 0x57, 0xf0, 0x2c, 0x89, 0xcd, 0x7c, 0xc9, 0xa1, 0x71, 0xa5, 0xf0, 0x25, 0xc7, 0x02, 0xf7, 0x3d, - 0xd6, 0x71, 0x02, 0xda, 0x30, 0x36, 0xc5, 0x3e, 0x61, 0xb3, 0x7e, 0xb6, 0xc4, 0xdd, 0x67, 0x18, - 0x62, 0x56, 0xa5, 0xc9, 0xda, 0x4b, 0xbd, 0x4e, 0xcb, 0xd8, 0x2c, 0xda, 0xcb, 0xde, 0x59, 0x34, - 0xbb, 0x1c, 0x9d, 0x3a, 0x35, 0xf2, 0x22, 0x5a, 0x9a, 0x4c, 0xbe, 0x04, 0xed, 0xba, 0x71, 0x15, - 0x2f, 0x65, 0xaf, 0xac, 0x17, 0xa2, 0x75, 0xc6, 0x17, 0xc4, 0xda, 0x12, 0x16, 0x3f, 0x5d, 0x17, - 0x22, 0xea, 0x35, 0x8c, 0x2d, 0xa2, 0x5c, 0x58, 0xe4, 0x6a, 0x8c, 0xf9, 0x1b, 0x5f, 0xc9, 0xc6, - 0xd5, 0x62, 0x1f, 0xf7, 0x4b, 0x44, 0x2f, 0x58, 0x75, 0xb4, 0x61, 0x6c, 0x8d, 0x7b, 0x21, 0x6c, - 0xa6, 0x10, 0x23, 0xdf, 0x28, 0xf0, 0x52, 0x25, 0xf2, 0x59, 0xdb, 0xa3, 0xa0, 0x43, 0x8d, 0x6d, - 0x7c, 0x89, 0xf1, 0x77, 0x3e, 0xd6, 0xb6, 0x1b, 0x52, 0xa3, 0x28, 0xd6, 0x1d, 0x37, 0x58, 0x8f, - 0x1a, 0xb4, 0x69, 0x77, 0xdc, 0xc8, 0xb8, 0x46, 0x08, 0x08, 0x69, 0x16, 0x7f, 0xa8, 0xe2, 0x4d, - 0x17, 0xee, 0x30, 0xa9, 0x36, 0xc8, 0x7b, 0xc0, 0x25, 0x29, 0xdb, 0x64, 0x99, 0xa9, 0xb7, 0xe0, - 0xe9, 0x2e, 0x82, 0x63, 0x5d, 0x04, 0x27, 0xba, 0x08, 0x9e, 0xed, 0x22, 0x78, 0xb1, 0x8b, 0xe0, - 0xb5, 0x2e, 0x92, 0xfb, 0xe0, 0xcd, 0x2e, 0x12, 0x4b, 0xff, 0x64, 0x17, 0x15, 0x4e, 0x75, 0xd1, - 0xde, 0xd3, 0x5d, 0xb4, 0xb4, 0xf9, 0xfd, 0x2e, 0x5a, 0xaa, 0x7e, 0xd4, 0x45, 0x7b, 0xce, 0x76, - 0xd1, 0x13, 0x9f, 0x74, 0xd1, 0xb3, 0xc3, 0x03, 0x03, 0x9f, 0x75, 0xd1, 0xde, 0xcd, 0x03, 0xfc, - 0xf3, 0xed, 0x1e, 0x7a, 0xf8, 0xe3, 0xf3, 0xe7, 0xbf, 0xd3, 0x43, 0x27, 0xff, 0x71, 0x9e, 0x7f, - 0x8e, 0xf5, 0x10, 0x3c, 0xd3, 0x43, 0x6f, 0x7f, 0x72, 0xdb, 0xde, 0xe7, 0x7a, 0xc8, 0x7b, 0xea, - 0xaa, 0x73, 0x9f, 0x6d, 0x43, 0x7b, 0x5f, 0xec, 0x21, 0x78, 0xb5, 0x87, 0xe0, 0xf5, 0x1e, 0x82, - 0x93, 0x3d, 0x04, 0xa7, 0x7a, 0x08, 0x4e, 0xf7, 0x10, 0xbc, 0xdf, 0x43, 0xf0, 0x51, 0x0f, 0xc1, - 0xd9, 0x1e, 0x82, 0x73, 0x3d, 0x04, 0x9f, 0xf6, 0x10, 0x2c, 0x9d, 0x41, 0xf0, 0xf4, 0x19, 0xe4, - 0x1f, 0x3b, 0x83, 0xbe, 0x7f, 0x5e, 0x7e, 0xe0, 0xc4, 0x19, 0xf4, 0x01, 0x30, 0x59, 0x4d, 0x5e, - 0x02, 0xa9, 0xbd, 0xf9, 0xad, 0x37, 0xf5, 0x03, 0x58, 0x39, 0x83, 0xbe, 0x07, 0x1a, 0xe8, 0xc0, - 0x3b, 0x0a, 0x55, 0xd9, 0x1f, 0x53, 0xf4, 0x66, 0x6f, 0xe1, 0xb6, 0xbd, 0x77, 0x2f, 0x6d, 0xbe, - 0x7f, 0xa9, 0xfa, 0xf0, 0x9e, 0xf9, 0x27, 0x3a, 0xac, 0xfd, 0x8b, 0x49, 0xeb, 0x81, 0x37, 0x1e, - 0x92, 0xb6, 0x03, 0x3c, 0x03, 0xbc, 0xe5, 0x90, 0x34, 0x1c, 0xe0, 0x55, 0x80, 0xd7, 0x01, 0x4e, - 0x02, 0x9c, 0x02, 0x38, 0x0d, 0xf0, 0x3e, 0xc0, 0x47, 0x00, 0x67, 0x01, 0xce, 0x01, 0x7c, 0x0a, - 0xb0, 0xa4, 0xc0, 0xd3, 0x8a, 0x7f, 0x4c, 0x59, 0xd5, 0x54, 0xe5, 0x03, 0x10, 0x5f, 0x09, 0x46, - 0x16, 0xf0, 0xc6, 0x69, 0xaf, 0xd3, 0xba, 0x50, 0xaf, 0x91, 0x2c, 0x86, 0xfb, 0x75, 0x85, 0x3d, - 0xbe, 0xae, 0xab, 0xec, 0xf1, 0x80, 0x9e, 0x29, 0x72, 0xc9, 0xc6, 0x32, 0x0c, 0x16, 0xd7, 0x69, - 0xff, 0x49, 0xd2, 0xe9, 0x50, 0x64, 0xf2, 0x0e, 0x17, 0x99, 0xbc, 0xdb, 0x50, 0x64, 0xf2, 0x8e, - 0x14, 0xaf, 0xd4, 0xfe, 0xd5, 0x0f, 0xf8, 0x77, 0xf2, 0x3a, 0x02, 0xfb, 0x46, 0x60, 0x6a, 0x04, - 0x26, 0xab, 0x4f, 0x01, 0xde, 0xc0, 0x94, 0x1a, 0xfb, 0xbb, 0x47, 0x2e, 0xfe, 0x1b, 0xb1, 0xf6, - 0xb5, 0x90, 0x06, 0xec, 0xf4, 0xbf, 0x40, 0xe8, 0xe6, 0xd7, 0x9a, 0x45, 0xf2, 0xce, 0x93, 0xb9, - 0xf5, 0x1a, 0x10, 0xac, 0x0d, 0x90, 0x5c, 0xdd, 0x75, 0xa8, 0x17, 0x91, 0x5d, 0x58, 0xbd, 0x95, - 0x46, 0x29, 0xa0, 0xfe, 0xce, 0x93, 0xb9, 0x61, 0x0d, 0x88, 0xa6, 0x01, 0xc9, 0xb0, 0xcb, 0xc1, - 0xbc, 0x19, 0x67, 0x5d, 0xbb, 0x46, 0x5d, 0xb2, 0xfd, 0x22, 0x6d, 0x3c, 0x1d, 0xef, 0x1a, 0xcb, - 0xf6, 0xfa, 0x12, 0xf9, 0xd9, 0x65, 0xf9, 0x45, 0x89, 0x63, 0xe6, 0x2d, 0x38, 0x13, 0xd0, 0x76, - 0x94, 0x2e, 0xad, 0x57, 0x96, 0x81, 0x4b, 0xb0, 0x0b, 0xb5, 0x2c, 0xa3, 0xcd, 0x07, 0xb1, 0x4a, - 0x29, 0x4d, 0x4f, 0xf2, 0xd3, 0x65, 0xf8, 0x7f, 0xe4, 0xae, 0xc5, 0xb2, 0x9a, 0x93, 0x18, 0xec, - 0xf4, 0xd4, 0xbf, 0x5e, 0x16, 0xda, 0x4a, 0x4f, 0x52, 0x4b, 0x2d, 0x6e, 0x81, 0x6d, 0x7e, 0x15, - 0xa3, 0xc3, 0x89, 0xfc, 0xbc, 0xfa, 0x12, 0xa9, 0xa2, 0x79, 0xbf, 0x11, 0x67, 0x7a, 0xe3, 0x61, - 0x9e, 0x88, 0x5c, 0x2c, 0x11, 0xad, 0x7e, 0x16, 0x73, 0x1f, 0xce, 0xb2, 0x1b, 0x3f, 0x24, 0x5b, - 0x2e, 0x4a, 0xf7, 0x15, 0x87, 0xba, 0x49, 0xb6, 0xf7, 0xd0, 0x25, 0x65, 0x03, 0x67, 0xcd, 0xeb, - 0xe2, 0x9b, 0x3a, 0x2d, 0xcb, 0x73, 0xcb, 0x6b, 0xae, 0x72, 0x06, 0xca, 0xcb, 0x3b, 0x05, 0x5c, - 0x89, 0x41, 0x11, 0xce, 0x40, 0x79, 0xbb, 0xa7, 0x80, 0xcf, 0xc7, 0xa0, 0x08, 0x37, 0xc7, 0x84, - 0x18, 0x48, 0xc3, 0x7e, 0x24, 0x31, 0x1e, 0x6c, 0xde, 0x90, 0xa8, 0x85, 0x34, 0xee, 0xc7, 0x92, - 0x8b, 0xe3, 0xf9, 0xd0, 0x08, 0x01, 0x91, 0x42, 0xfe, 0x44, 0x2e, 0xe8, 0xf8, 0x5c, 0xda, 0x25, - 0xf5, 0x46, 0x1a, 0xf7, 0x02, 0xe7, 0x62, 0x41, 0xc2, 0x30, 0xa1, 0x12, 0x52, 0xb0, 0x17, 0xe5, - 0x57, 0x4c, 0x11, 0x2d, 0xb1, 0x89, 0xf1, 0x34, 0xec, 0xa5, 0x65, 0x58, 0x25, 0x69, 0x58, 0xef, - 0x3a, 0x9f, 0xab, 0x3a, 0xb1, 0x63, 0x12, 0xcd, 0x13, 0x83, 0xe9, 0x15, 0xbe, 0xcc, 0xc1, 0x44, - 0x14, 0xf1, 0xf1, 0xfc, 0x5c, 0x35, 0xbe, 0xc2, 0xc1, 0x44, 0x35, 0xc5, 0x60, 0x7a, 0x8d, 0x3f, - 0xe3, 0x60, 0x22, 0xab, 0xd8, 0xe4, 0xc7, 0x8a, 0x28, 0x85, 0xfc, 0x39, 0x27, 0xfb, 0xba, 0x2b, - 0x41, 0xd3, 0x2b, 0xfd, 0x05, 0x47, 0xfb, 0xc2, 0xcc, 0xdc, 0xdd, 0x17, 0x66, 0x69, 0xec, 0xab, - 0x9c, 0x5d, 0xa5, 0xdc, 0xfa, 0x70, 0x7a, 0xc5, 0xbf, 0xe4, 0xf0, 0x2a, 0x69, 0xc7, 0x76, 0x08, - 0x97, 0x73, 0x29, 0xe0, 0x6b, 0xf1, 0x0e, 0x61, 0xc1, 0x6c, 0xfd, 0x08, 0xb9, 0x97, 0x42, 0xfd, - 0x8a, 0x53, 0xb1, 0x38, 0x64, 0x93, 0x22, 0xe5, 0x60, 0x0a, 0x27, 0x8e, 0xc5, 0x44, 0x3d, 0xb2, - 0x1e, 0x26, 0x6a, 0x31, 0x05, 0xfd, 0x8d, 0x6c, 0x68, 0x02, 0x30, 0x38, 0x91, 0x93, 0x29, 0xf0, - 0x6f, 0x63, 0x38, 0x06, 0x04, 0x2c, 0xf5, 0x66, 0x0a, 0xfc, 0xbb, 0x3e, 0x2c, 0x00, 0xb6, 0x20, - 0x62, 0x45, 0x9a, 0xc2, 0xbe, 0x1e, 0x1f, 0x24, 0x32, 0x9e, 0x4d, 0x0b, 0x57, 0xad, 0x29, 0xdc, - 0x1b, 0xf1, 0xb4, 0xb0, 0x60, 0x56, 0x5f, 0xac, 0x69, 0x53, 0xb8, 0x37, 0xe3, 0xfa, 0x64, 0xbc, - 0x39, 0xca, 0x35, 0x70, 0x1a, 0xf6, 0x7b, 0x89, 0xb1, 0x58, 0x36, 0x9b, 0x52, 0x16, 0xa7, 0x50, - 0x7f, 0x88, 0x0f, 0x65, 0x11, 0xce, 0x40, 0xa9, 0x9b, 0x53, 0xc0, 0x3f, 0xc6, 0xa0, 0x08, 0x37, - 0xf7, 0xac, 0x96, 0xd9, 0x69, 0xf0, 0x9f, 0x24, 0xbc, 0x0a, 0x11, 0xb3, 0x29, 0x75, 0x77, 0x0a, - 0xfe, 0xe7, 0xfe, 0x6c, 0x0a, 0xc0, 0xdc, 0xc9, 0x84, 0x7a, 0x1a, 0x76, 0x52, 0x62, 0x4a, 0xe4, - 0xb3, 0x39, 0xe4, 0xea, 0x3d, 0x05, 0x79, 0x4b, 0x9e, 0xcd, 0x3c, 0x98, 0x6f, 0x2d, 0xae, 0xee, - 0x53, 0xa8, 0xbf, 0xc4, 0x27, 0x3a, 0x8f, 0x66, 0x53, 0x2f, 0xc5, 0x7f, 0x1a, 0xf8, 0x76, 0xfc, - 0x6b, 0xa3, 0x8c, 0x37, 0x0f, 0xf2, 0x13, 0x20, 0x75, 0xa9, 0xfd, 0x55, 0x4a, 0x95, 0xfe, 0x0f, - 0x3a, 0x17, 0x7d, 0x87, 0xe7, 0xa7, 0x43, 0x6b, 0x6a, 0xec, 0x81, 0xd1, 0x39, 0x27, 0x9a, 0xef, - 0xd4, 0xca, 0x75, 0xbf, 0xb5, 0xf3, 0x91, 0xf9, 0x4e, 0xab, 0x2d, 0x7e, 0x3f, 0x0f, 0x68, 0xd3, - 0xa5, 0xf5, 0x68, 0xa7, 0xe3, 0x45, 0x34, 0xf0, 0x6c, 0x77, 0x67, 0x44, 0xc3, 0x88, 0x7b, 0xc2, - 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x5d, 0x3a, 0xf4, 0x5b, 0x8b, 0x17, 0x00, 0x00, + 0x19, 0xc7, 0xfd, 0xcd, 0xcc, 0xae, 0xe7, 0x1c, 0x3b, 0xc9, 0x30, 0x04, 0x32, 0x59, 0x1a, 0xb2, + 0x59, 0x50, 0xb4, 0x71, 0xdb, 0xcd, 0x7a, 0xed, 0x18, 0x98, 0x00, 0x89, 0x1d, 0x16, 0x48, 0xb8, + 0x84, 0x0e, 0x34, 0x50, 0x30, 0x35, 0xb3, 0xbb, 0x67, 0xed, 0x81, 0xd9, 0x99, 0x65, 0x66, 0x36, + 0xd8, 0x69, 0x24, 0xac, 0xa2, 0x22, 0xfa, 0xd2, 0xa6, 0x56, 0x1f, 0xa2, 0xca, 0x48, 0x60, 0xda, + 0x02, 0x85, 0xb6, 0x94, 0xde, 0x80, 0xde, 0x42, 0xe9, 0x43, 0x8a, 0x84, 0x14, 0xf1, 0x44, 0x5f, + 0x00, 0xed, 0x46, 0x55, 0x1e, 0x91, 0x28, 0x12, 0xa8, 0x6a, 0x53, 0x9d, 0xcb, 0xcc, 0xda, 0x4e, + 0xd0, 0xd0, 0x95, 0xec, 0x99, 0xef, 0x7c, 0xdf, 0xef, 0x3b, 0xf7, 0x73, 0xfe, 0xbb, 0x78, 0x4b, + 0x83, 0x84, 0xf5, 0x99, 0x88, 0x84, 0xd1, 0x4c, 0xdd, 0x6f, 0xb5, 0x5d, 0x32, 0x5f, 0x6a, 0x07, + 0x7e, 0xe4, 0xeb, 0x83, 0x4d, 0xdf, 0x2f, 0xd5, 0xec, 0x20, 0x97, 0x9f, 0xf5, 0xfd, 0x59, 0x97, + 0xec, 0x66, 0xc5, 0xb5, 0x4e, 0x73, 0x37, 0x25, 0x02, 0xa7, 0x1d, 0xf9, 0x01, 0x0f, 0x2d, 0x7c, + 0x05, 0x67, 0xef, 0x76, 0x28, 0xab, 0xeb, 0x58, 0xf1, 0xec, 0x16, 0x31, 0x20, 0x0f, 0x45, 0x64, + 0xb1, 0x77, 0x7d, 0x23, 0x96, 0x9c, 0x86, 0x21, 0xe5, 0xa1, 0xa8, 0x58, 0x92, 0xd3, 0x28, 0xbc, + 0xa3, 0x60, 0xe5, 0x1e, 0x12, 0x46, 0xba, 0x8e, 0xe5, 0xa6, 0xef, 0x8b, 0xd8, 0xcc, 0xf1, 0xa6, + 0xef, 0x1f, 0xd7, 0x37, 0xe3, 0x8c, 0x1d, 0x04, 0xf6, 0x82, 0x21, 0xe5, 0xe5, 0x62, 0xc6, 0xe2, + 0x86, 0xbe, 0x0d, 0x43, 0x68, 0xc8, 0x79, 0x28, 0x0e, 0x55, 0x36, 0x95, 0x44, 0xbb, 0x4a, 0xbc, + 0x4a, 0x0b, 0x42, 0xea, 0x0e, 0x0c, 0x25, 0x2f, 0x5f, 0xd4, 0x1d, 0xe8, 0x05, 0x0c, 0x2d, 0x23, + 0xc3, 0xdc, 0x9b, 0x13, 0x37, 0x6d, 0x41, 0xe9, 0x8e, 0xaa, 0x17, 0x05, 0x0b, 0x16, 0xb4, 0xf4, + 0x71, 0x0c, 0x35, 0x23, 0x9b, 0x87, 0xe2, 0xb0, 0xb9, 0x73, 0xba, 0x5c, 0x2e, 0x4f, 0x97, 0xcb, + 0xa3, 0xd3, 0xe5, 0x72, 0x65, 0xba, 0x5c, 0x1e, 0x9b, 0x2e, 0x97, 0xc7, 0xa7, 0xcb, 0xe5, 0x3d, + 0xd3, 0xe5, 0xf2, 0xc4, 0x74, 0xb9, 0x7c, 0x4d, 0xb3, 0x53, 0xb3, 0x83, 0x1d, 0x16, 0xd4, 0x72, + 0xe3, 0x38, 0xcb, 0x53, 0xe8, 0x1a, 0x96, 0x1f, 0x21, 0x0b, 0xa2, 0x2f, 0xf4, 0x95, 0xf6, 0xe4, + 0xa8, 0xed, 0x76, 0x08, 0xeb, 0x79, 0xc6, 0xe2, 0x86, 0x29, 0x5d, 0x0b, 0xb9, 0x67, 0x25, 0x9c, + 0xbd, 0x93, 0x84, 0x11, 0x69, 0xe4, 0xfe, 0x01, 0x78, 0xc3, 0x0c, 0x7f, 0x17, 0x25, 0x07, 0xb1, + 0xbe, 0xda, 0xe6, 0xff, 0xf5, 0x1d, 0x7c, 0xc8, 0x58, 0xfe, 0xa1, 0xca, 0x86, 0x35, 0xbd, 0xb0, + 0x98, 0xcb, 0xd4, 0x96, 0xba, 0x68, 0x18, 0xcb, 0x73, 0xbe, 0xbf, 0x92, 0x55, 0xc2, 0xb6, 0xef, + 0x17, 0x6e, 0xc0, 0x72, 0xb5, 0x5a, 0xd5, 0xb3, 0x58, 0x3a, 0x7c, 0x9b, 0x36, 0x40, 0x9f, 0x47, + 0x46, 0x35, 0x60, 0xcf, 0x8a, 0x26, 0xb1, 0xe7, 0x98, 0x26, 0xb3, 0xe7, 0xb8, 0xa6, 0xb0, 0xe7, + 0x1e, 0x2d, 0xc3, 0x9e, 0x13, 0x5a, 0xb6, 0x52, 0xc4, 0xea, 0xcc, 0xac, 0x1d, 0xd4, 0x5c, 0x72, + 0x4c, 0x5f, 0x5b, 0xa3, 0xd1, 0x60, 0xdd, 0x1c, 0xbc, 0x85, 0x7b, 0xcd, 0xcd, 0x4b, 0x5d, 0x34, + 0x84, 0xe5, 0x59, 0x5a, 0xb5, 0x5c, 0xf3, 0xfd, 0x93, 0x5d, 0xf4, 0xc9, 0x9d, 0x95, 0xbd, 0x98, + 0x2e, 0x21, 0x86, 0x6f, 0x2f, 0xf1, 0x35, 0x54, 0x8a, 0xd7, 0x50, 0xe9, 0x0e, 0x12, 0x86, 0xf6, + 0x2c, 0x39, 0xdc, 0x8e, 0x1c, 0xdf, 0x0b, 0x8d, 0xe7, 0x96, 0x81, 0x8d, 0x52, 0x4c, 0x8c, 0x64, + 0xd4, 0x86, 0xf6, 0x77, 0x18, 0xd1, 0xd4, 0x97, 0x25, 0xed, 0x03, 0x29, 0xa7, 0x7e, 0xbb, 0x8b, + 0x94, 0x87, 0xed, 0x63, 0xc7, 0x46, 0x34, 0xf5, 0x5f, 0xb2, 0xf6, 0xbc, 0xd2, 0x2f, 0x29, 0xec, + 0xc3, 0x5b, 0x44, 0xb6, 0x7b, 0x9d, 0x68, 0xce, 0x22, 0x21, 0x09, 0x8e, 0xda, 0x2c, 0xed, 0x21, + 0x45, 0xcd, 0x68, 0x43, 0x87, 0x14, 0x75, 0x58, 0xd3, 0x0e, 0x29, 0xaa, 0xae, 0x5d, 0x7a, 0x08, + 0xa9, 0xe7, 0x06, 0xb5, 0xc5, 0xc5, 0xc5, 0x45, 0xc9, 0x82, 0x49, 0x0b, 0xa6, 0x2c, 0x38, 0x50, + 0x38, 0x29, 0xe1, 0xc1, 0x49, 0xcf, 0x8f, 0xe6, 0x48, 0x40, 0x07, 0x3a, 0xfa, 0xfc, 0x81, 0xa6, + 0x2e, 0xfd, 0x7a, 0x2c, 0x37, 0x9b, 0x4d, 0x36, 0xad, 0x1b, 0x2b, 0x3b, 0xd7, 0x2e, 0x28, 0x3e, + 0x5d, 0xa5, 0x35, 0x53, 0x5a, 0xaa, 0x56, 0xab, 0xa6, 0x74, 0x64, 0xd4, 0xa2, 0x98, 0xf9, 0x12, + 0x2c, 0x75, 0xd1, 0x55, 0x58, 0xb6, 0x6b, 0x75, 0x0d, 0x34, 0x49, 0x93, 0x73, 0x83, 0x6c, 0x1b, + 0x68, 0xdf, 0x2a, 0xc8, 0x18, 0x9a, 0xf4, 0x5f, 0x58, 0x90, 0xb5, 0xd3, 0xf2, 0x52, 0x17, 0x6d, + 0xc7, 0x72, 0x83, 0x34, 0x35, 0x59, 0x93, 0x34, 0xc8, 0xa9, 0x58, 0xae, 0xd9, 0x81, 0xf6, 0xa6, + 0x44, 0x43, 0x66, 0x59, 0xdc, 0x52, 0x17, 0x65, 0x58, 0xc8, 0x99, 0x2e, 0x82, 0x95, 0x1e, 0x92, + 0xb4, 0x81, 0x95, 0x1e, 0xba, 0x0c, 0x5f, 0x3a, 0x22, 0x72, 0x36, 0x46, 0x04, 0x75, 0x9a, 0xba, + 0x07, 0x71, 0x06, 0xcb, 0xad, 0x9d, 0xad, 0x95, 0x1e, 0xc2, 0x58, 0xcd, 0x65, 0xb1, 0xb2, 0xe0, + 0xbb, 0xfe, 0x4a, 0x0f, 0xa9, 0x38, 0x9b, 0x53, 0xb4, 0x77, 0x9e, 0xc8, 0xae, 0xf4, 0x90, 0x82, + 0x25, 0x0d, 0xc4, 0x53, 0x2a, 0x7c, 0x0c, 0x18, 0x1d, 0xb1, 0x5d, 0xa7, 0x61, 0x47, 0x7e, 0xa0, + 0x5f, 0x8d, 0x37, 0xd8, 0x9d, 0x68, 0x8e, 0x78, 0x91, 0x53, 0xb7, 0x23, 0xd2, 0x60, 0xa3, 0xa4, + 0x5a, 0x6b, 0x0b, 0xf5, 0x1b, 0x30, 0x6e, 0x93, 0xa0, 0xe5, 0x84, 0xa1, 0xe3, 0x7b, 0x6c, 0x1f, + 0x0f, 0x55, 0xb6, 0x25, 0xc3, 0x94, 0x64, 0x2b, 0xdd, 0x95, 0x04, 0x59, 0xab, 0x80, 0xdc, 0xbd, + 0x18, 0xf7, 0x3d, 0xfa, 0x28, 0xce, 0xda, 0x75, 0x3a, 0x99, 0xac, 0xae, 0x8d, 0x95, 0xad, 0x17, + 0x49, 0x34, 0xc9, 0x02, 0x2c, 0x11, 0xa8, 0x5f, 0x8e, 0xb3, 0xb4, 0x31, 0xd1, 0x02, 0x9b, 0x22, + 0x64, 0x09, 0xab, 0x50, 0xc4, 0x59, 0x1e, 0xa9, 0x23, 0x9c, 0xb9, 0xfd, 0xf0, 0x2d, 0x07, 0xef, + 0xd4, 0x06, 0x74, 0x15, 0x2b, 0x56, 0x75, 0xf2, 0x26, 0x0d, 0x68, 0xe1, 0xbd, 0xd6, 0xc1, 0x7b, + 0xaa, 0x9a, 0x54, 0x38, 0xa7, 0x60, 0xc5, 0xea, 0xb8, 0x44, 0xaf, 0xe0, 0x6c, 0x18, 0x05, 0x8e, + 0x37, 0x2b, 0xd6, 0x83, 0x91, 0xd4, 0x4e, 0xdd, 0xa5, 0xbb, 0x99, 0x8f, 0xbe, 0xde, 0x3a, 0x60, + 0x89, 0x48, 0xfd, 0x5a, 0xac, 0x06, 0xa4, 0x4d, 0xd8, 0xf8, 0x48, 0x8c, 0xca, 0xad, 0xa5, 0x2c, + 0xe1, 0x15, 0x5c, 0x12, 0xad, 0xef, 0xc2, 0xb2, 0xe3, 0x45, 0xe2, 0x9c, 0xbb, 0x6c, 0x2d, 0x74, + 0xd0, 0x8b, 0x44, 0x3c, 0x8d, 0xd1, 0xaf, 0xc1, 0xa8, 0xe9, 0xfa, 0x76, 0x14, 0x74, 0x5c, 0x62, + 0x28, 0x79, 0x28, 0xe2, 0xca, 0x96, 0xb5, 0xc0, 0xcd, 0xd4, 0x2d, 0x90, 0x7e, 0x6c, 0x6e, 0x01, + 0xe3, 0x7e, 0xab, 0x75, 0x03, 0x0f, 0xb6, 0xed, 0x28, 0x22, 0x81, 0x27, 0x4e, 0xae, 0xd8, 0xd4, + 0xb7, 0xe3, 0x21, 0xdb, 0x75, 0xfd, 0xc7, 0x66, 0x48, 0xab, 0x2d, 0x46, 0x52, 0xb5, 0x30, 0x2b, + 0xaa, 0xd2, 0x12, 0x7d, 0x0b, 0x1e, 0x6c, 0x39, 0xde, 0x8c, 0x4b, 0x3c, 0xd6, 0xe0, 0x8c, 0x95, + 0x6d, 0x39, 0xde, 0xed, 0xc4, 0x63, 0x0e, 0x7b, 0x9e, 0x39, 0x14, 0xe1, 0xb0, 0xe7, 0x6f, 0x27, + 0x5e, 0x6e, 0x2f, 0x1e, 0x14, 0xbd, 0x88, 0xe1, 0xa3, 0xb6, 0xcb, 0xea, 0x95, 0x19, 0x7c, 0xc4, + 0x76, 0x63, 0x98, 0x3a, 0xf8, 0x85, 0x41, 0xe1, 0x23, 0xb6, 0x9b, 0xfb, 0x1e, 0xe0, 0xe1, 0xd5, + 0x03, 0xb7, 0xbe, 0x81, 0x70, 0x41, 0x03, 0xaf, 0xc0, 0x88, 0xd6, 0xe1, 0x44, 0xa4, 0x15, 0x8a, + 0x33, 0x58, 0x6d, 0x39, 0xde, 0x41, 0x6a, 0x33, 0xa7, 0x3d, 0x2f, 0x9c, 0xb2, 0x70, 0xda, 0xf3, + 0xdc, 0x79, 0x15, 0xce, 0x70, 0x87, 0xb2, 0xee, 0x10, 0xa0, 0x15, 0x5b, 0xdc, 0x97, 0xbb, 0x01, + 0xa3, 0x64, 0x88, 0xd7, 0xf7, 0x07, 0x3e, 0xaf, 0x3f, 0x10, 0xf7, 0x67, 0x2a, 0x8b, 0x15, 0x3a, + 0x1f, 0x85, 0x16, 0xde, 0x74, 0x30, 0x9c, 0xec, 0x44, 0x73, 0x7e, 0xe0, 0x1c, 0x23, 0x0d, 0x8b, + 0x3c, 0xaa, 0xdf, 0x8f, 0xd5, 0xb0, 0x53, 0x7b, 0x98, 0xd4, 0xa3, 0xd0, 0x80, 0xbc, 0x5c, 0x44, + 0x53, 0x37, 0x2e, 0xdd, 0xb1, 0x57, 0xbf, 0x4e, 0x83, 0xc2, 0x1e, 0x3c, 0x86, 0x47, 0xbf, 0x59, + 0xdc, 0x67, 0x16, 0xf7, 0x99, 0x11, 0xb1, 0x5b, 0xf4, 0xe9, 0xfa, 0x75, 0xdb, 0x3d, 0xee, 0x36, + 0xec, 0xf6, 0xae, 0x5d, 0xc7, 0x3b, 0x21, 0x09, 0x76, 0x99, 0x0f, 0x3c, 0x60, 0xda, 0xae, 0xd7, + 0x69, 0x99, 0x0f, 0xce, 0x7c, 0xf5, 0xc1, 0x2f, 0x5f, 0x6d, 0x25, 0xf9, 0x0a, 0x1f, 0x64, 0xf1, + 0x25, 0xb7, 0x91, 0x85, 0xc7, 0xfc, 0xa0, 0x71, 0xc0, 0x77, 0x5d, 0x87, 0xee, 0xb1, 0x90, 0xee, + 0x98, 0x70, 0xc1, 0x8b, 0xec, 0x79, 0x31, 0x8c, 0xc2, 0xa2, 0xe5, 0x4e, 0xab, 0xed, 0x07, 0x91, + 0x98, 0x7f, 0x61, 0xd1, 0xf2, 0x76, 0xa7, 0xe6, 0x3a, 0x75, 0x36, 0x74, 0xaa, 0x25, 0x2c, 0x7a, + 0xfb, 0x3f, 0x46, 0xec, 0x47, 0xd8, 0xb8, 0xa9, 0x16, 0x7b, 0xe7, 0x4b, 0xac, 0xfe, 0x88, 0x3d, + 0x4b, 0x8c, 0x0c, 0x2b, 0x8e, 0x4d, 0x56, 0x2b, 0xdf, 0x5c, 0x59, 0xbe, 0x4f, 0xc5, 0x06, 0xda, + 0x8c, 0x33, 0xb5, 0x85, 0x88, 0x84, 0xc6, 0x20, 0xbd, 0x8e, 0x2d, 0x6e, 0xd0, 0x52, 0xc7, 0x8b, + 0xc6, 0x2a, 0x86, 0xca, 0xaf, 0x53, 0x66, 0x88, 0xd2, 0x89, 0x71, 0x03, 0xb1, 0x65, 0xc4, 0x0d, + 0x9a, 0xb9, 0xc3, 0x83, 0x71, 0x1e, 0x8a, 0x1b, 0x2c, 0x61, 0xc5, 0xe5, 0x13, 0xe3, 0xc6, 0x10, + 0x5f, 0x5c, 0x9d, 0x24, 0x3e, 0xe4, 0xf1, 0xc3, 0x79, 0x28, 0x5e, 0x62, 0x09, 0x2b, 0x2e, 0x9f, + 0x18, 0x37, 0x36, 0xe4, 0xa1, 0xa8, 0x5b, 0xc2, 0xa2, 0x7d, 0x6a, 0x3a, 0xf3, 0xa4, 0x31, 0x56, + 0x31, 0x36, 0xe6, 0xa1, 0x38, 0x68, 0xc5, 0x66, 0xe2, 0x99, 0x18, 0x37, 0x36, 0xe5, 0xa1, 0x98, + 0xb5, 0x62, 0x53, 0xcf, 0x61, 0x35, 0x8c, 0x21, 0x2d, 0x0f, 0xc5, 0x4d, 0x56, 0x62, 0xf7, 0x7d, + 0x13, 0xe3, 0xc6, 0x25, 0x79, 0x28, 0x6a, 0x56, 0x62, 0xd3, 0x31, 0xad, 0xf9, 0xbe, 0x6b, 0xe8, + 0x7c, 0x4c, 0xe9, 0x3b, 0xed, 0x35, 0xdb, 0xd1, 0xc6, 0xa5, 0x79, 0x28, 0x4a, 0x16, 0x37, 0x68, + 0x6b, 0x1b, 0x7e, 0xa7, 0xe6, 0x12, 0x63, 0x33, 0x5f, 0x6a, 0xdc, 0xa2, 0xd9, 0x7d, 0x76, 0xcd, + 0xda, 0xae, 0x71, 0x19, 0xcb, 0x92, 0xd8, 0xd4, 0x97, 0x1c, 0x56, 0x97, 0x73, 0x5f, 0x72, 0x1c, + 0x31, 0xdf, 0xa3, 0x1d, 0x27, 0x20, 0x0d, 0x63, 0x4b, 0xec, 0xe3, 0x36, 0xed, 0x67, 0x8b, 0xdf, + 0xb9, 0x86, 0xc1, 0x67, 0x55, 0x98, 0xb4, 0xbd, 0xc4, 0xeb, 0xb4, 0x8c, 0xad, 0xbc, 0xbd, 0xf4, + 0x9d, 0x46, 0xd3, 0x4b, 0xd9, 0xa9, 0x13, 0x23, 0xc7, 0xa3, 0x85, 0x49, 0x65, 0x53, 0xd0, 0xae, + 0x1b, 0x57, 0xb0, 0x52, 0xfa, 0x4a, 0x7b, 0xc1, 0x5b, 0x67, 0x7c, 0x89, 0xaf, 0x2d, 0x6e, 0xb1, + 0x53, 0x7d, 0x3e, 0x22, 0x5e, 0xc3, 0xd8, 0xc6, 0xcb, 0xb9, 0xa5, 0x5f, 0x89, 0x31, 0x7b, 0x63, + 0x2b, 0xd9, 0xb8, 0x92, 0x1f, 0x03, 0xfd, 0x12, 0xde, 0x0b, 0x5a, 0x1d, 0x69, 0x18, 0xdb, 0xe3, + 0x5e, 0x70, 0x9b, 0x2a, 0xd3, 0xc8, 0x37, 0xf2, 0xac, 0x54, 0x8a, 0x7c, 0xda, 0xf6, 0x28, 0xe8, + 0x10, 0x63, 0x07, 0x5b, 0x62, 0xec, 0x9d, 0x8d, 0xb5, 0xed, 0x86, 0xc4, 0x28, 0xf0, 0x75, 0xc7, + 0x0c, 0xda, 0xa3, 0x06, 0x69, 0xda, 0x1d, 0x37, 0x32, 0xae, 0xe2, 0xc2, 0x45, 0x98, 0x85, 0x1f, + 0xc9, 0x78, 0xcb, 0xfa, 0x1d, 0x26, 0x54, 0x8e, 0xfe, 0x2e, 0x30, 0x29, 0x4c, 0x37, 0x99, 0x32, + 0xf5, 0x26, 0x3c, 0xd5, 0x45, 0x70, 0xa2, 0x8b, 0xe0, 0x64, 0x17, 0xc1, 0x33, 0x5d, 0x04, 0x2f, + 0x74, 0x11, 0xbc, 0xda, 0x45, 0x62, 0x1f, 0xbc, 0xd1, 0x45, 0x7c, 0xe9, 0x9f, 0xea, 0xa2, 0xfc, + 0xe9, 0x2e, 0xda, 0x7f, 0xa6, 0x8b, 0x16, 0xb7, 0xbe, 0xd7, 0x45, 0x8b, 0x95, 0x0f, 0xbb, 0x68, + 0xdf, 0xb9, 0x2e, 0x7a, 0xfc, 0x93, 0x2e, 0x7a, 0x66, 0x78, 0x60, 0xe0, 0xb3, 0x2e, 0xda, 0xbf, + 0x75, 0x80, 0x7d, 0xbe, 0xd3, 0x43, 0x0f, 0x7d, 0x7c, 0xfe, 0xfc, 0x77, 0x7b, 0xe8, 0xd4, 0x3f, + 0xcf, 0xb3, 0xcf, 0x89, 0x1e, 0x82, 0xa7, 0x7b, 0xe8, 0xad, 0x4f, 0x6e, 0xdd, 0xff, 0x6c, 0x0f, + 0x79, 0x4f, 0x5e, 0xf1, 0xd1, 0x67, 0x3b, 0xd0, 0xfe, 0x17, 0x7a, 0x08, 0x5e, 0xe9, 0x21, 0x78, + 0xad, 0x87, 0xe0, 0x54, 0x0f, 0xc1, 0xe9, 0x1e, 0x82, 0x33, 0x3d, 0x04, 0xef, 0xf5, 0x10, 0x7c, + 0xd8, 0x43, 0x70, 0xae, 0x87, 0xe0, 0xa3, 0x1e, 0x82, 0x4f, 0x7b, 0x08, 0x16, 0xcf, 0x22, 0x78, + 0xea, 0x2c, 0xf2, 0x4f, 0x9c, 0x45, 0x3f, 0x38, 0x2f, 0x3e, 0x70, 0xf2, 0x2c, 0x7a, 0x1f, 0xa8, + 0x9c, 0xd7, 0x5f, 0x04, 0xa1, 0xf9, 0xd9, 0x6d, 0x3b, 0xf5, 0x43, 0x58, 0x39, 0x8b, 0xbe, 0x0f, + 0x2a, 0x68, 0xc0, 0xcf, 0xc2, 0x8a, 0xe8, 0x8f, 0xc9, 0x7b, 0xb3, 0x3f, 0x7f, 0xeb, 0xfe, 0xbb, + 0x16, 0xb7, 0xde, 0xb7, 0x58, 0x79, 0x68, 0xdf, 0xdc, 0xe3, 0x1d, 0xda, 0xfe, 0x85, 0xa4, 0xf5, + 0xc0, 0x1a, 0x0f, 0x49, 0xdb, 0x01, 0x9e, 0x06, 0xd6, 0x72, 0x48, 0x1a, 0x0e, 0xf0, 0x0a, 0xc0, + 0x6b, 0x00, 0xa7, 0x00, 0x4e, 0x03, 0x9c, 0x01, 0x78, 0x0f, 0xe0, 0x43, 0x80, 0x73, 0x00, 0x1f, + 0x01, 0x7c, 0x0a, 0xb0, 0x28, 0xc1, 0x53, 0x92, 0x7f, 0x42, 0x5a, 0xd5, 0x54, 0xe9, 0x7d, 0xe0, + 0x5f, 0x45, 0x46, 0xe6, 0xf1, 0xe6, 0xaa, 0xd7, 0x69, 0xad, 0xd7, 0x89, 0x7a, 0x06, 0xc3, 0x7d, + 0x9a, 0x44, 0x1f, 0xdf, 0xd0, 0x64, 0xfa, 0xb8, 0x5f, 0x53, 0x0a, 0x4c, 0x2a, 0xd2, 0x0c, 0x83, + 0x85, 0x0d, 0xea, 0x7f, 0x93, 0x74, 0x1a, 0x14, 0xa8, 0xac, 0xc4, 0x05, 0x2a, 0x2b, 0x37, 0x15, + 0xa8, 0xac, 0xd4, 0x0b, 0x97, 0xab, 0xff, 0xee, 0x07, 0xfc, 0x27, 0x79, 0x1d, 0x81, 0x03, 0x23, + 0x30, 0x35, 0x02, 0x93, 0x95, 0x27, 0x01, 0x6f, 0xa2, 0x0a, 0x91, 0xfe, 0xdd, 0x2d, 0x16, 0xff, + 0xf5, 0x58, 0xfd, 0x7a, 0x48, 0x02, 0x7a, 0xfa, 0xaf, 0x13, 0xd8, 0xb9, 0xb5, 0x66, 0x41, 0x7f, + 0xfb, 0x89, 0xec, 0x46, 0x15, 0x74, 0xac, 0x0e, 0xe8, 0xd9, 0xba, 0xeb, 0x10, 0x2f, 0xd2, 0xf7, + 0x60, 0xf9, 0x16, 0x12, 0xa5, 0x80, 0xda, 0xdb, 0x4f, 0x64, 0x87, 0x55, 0xd0, 0x55, 0x15, 0x74, + 0x85, 0x5e, 0x0e, 0xe6, 0x8d, 0x38, 0xe3, 0xda, 0x35, 0xe2, 0xea, 0x3b, 0x2f, 0xd0, 0xe4, 0xd5, + 0x78, 0xd7, 0x58, 0xb6, 0xd7, 0x97, 0xe6, 0xcf, 0x2c, 0x8b, 0x2f, 0x68, 0x0c, 0x33, 0x6f, 0xc2, + 0x4a, 0x40, 0xda, 0x51, 0xba, 0xa4, 0x5f, 0x59, 0x06, 0x26, 0xfd, 0xd6, 0x6b, 0x68, 0x4a, 0x9b, + 0x0f, 0x60, 0x99, 0x10, 0x92, 0x9e, 0xe4, 0x67, 0xcb, 0xf0, 0xff, 0xc8, 0x6c, 0x8b, 0x66, 0x35, + 0x27, 0x31, 0xd8, 0xe9, 0xa9, 0x7f, 0xb3, 0xcc, 0x35, 0x9d, 0x96, 0xa4, 0x16, 0xdf, 0x01, 0x2c, + 0xb0, 0xcd, 0xaf, 0x61, 0x74, 0x34, 0x91, 0xbd, 0x57, 0x5e, 0x24, 0x55, 0x34, 0xe7, 0x37, 0xe2, + 0x4c, 0xaf, 0x3f, 0xc4, 0x12, 0xe9, 0x17, 0x4a, 0x53, 0xab, 0x9f, 0xc5, 0x3c, 0x80, 0x33, 0xf4, + 0xc6, 0x0f, 0xf5, 0x6d, 0x17, 0xa4, 0xbb, 0xd9, 0x21, 0x6e, 0x92, 0xed, 0x5d, 0x74, 0x51, 0xd5, + 0xc1, 0x58, 0xf3, 0x9a, 0xf8, 0xa6, 0x4e, 0xcb, 0xf2, 0xec, 0xf2, 0x9a, 0xab, 0x9c, 0x82, 0xe2, + 0xf2, 0x4e, 0x01, 0x57, 0x62, 0x90, 0x87, 0x53, 0x50, 0xdc, 0xee, 0x29, 0xe0, 0x73, 0x31, 0xc8, + 0xc3, 0xcd, 0x31, 0x2e, 0x06, 0xd2, 0xb0, 0x1f, 0x0b, 0x8c, 0x05, 0x9b, 0xd7, 0x25, 0x6a, 0x21, + 0x8d, 0xfb, 0x89, 0xe0, 0xe2, 0x78, 0x36, 0x34, 0x5c, 0x40, 0xa4, 0x90, 0x3f, 0x15, 0x0b, 0x3a, + 0x3e, 0x97, 0xf6, 0x08, 0xbd, 0x91, 0xc6, 0x3d, 0xcf, 0xb8, 0x58, 0x90, 0x50, 0x8c, 0xab, 0x84, + 0x14, 0xec, 0x05, 0xf1, 0xd5, 0x96, 0x47, 0x0b, 0x6c, 0x62, 0x3c, 0x0d, 0x7b, 0x71, 0x19, 0x56, + 0x49, 0x1a, 0xda, 0xbb, 0xce, 0x17, 0xaa, 0x8e, 0xef, 0x98, 0x44, 0xf3, 0xc4, 0x60, 0x7a, 0x85, + 0x2f, 0x31, 0x30, 0x11, 0x45, 0x6c, 0x3c, 0xbf, 0x50, 0x8d, 0x2f, 0x33, 0x30, 0x51, 0x4d, 0x31, + 0x98, 0x5e, 0xe3, 0xcf, 0x19, 0x98, 0xc8, 0x2a, 0x3a, 0xf9, 0xb1, 0x22, 0x4a, 0x21, 0x7f, 0xc1, + 0xc8, 0xbe, 0xee, 0x4a, 0xd0, 0xf4, 0x4a, 0x7f, 0xc9, 0xd0, 0xbe, 0x30, 0x33, 0xf7, 0xf6, 0x85, + 0x59, 0x1a, 0xfb, 0x0a, 0x63, 0x57, 0x29, 0xb7, 0x3e, 0x9c, 0x5e, 0xf1, 0xaf, 0x18, 0xbc, 0x4a, + 0xda, 0xd1, 0x1d, 0xc2, 0xe4, 0x5c, 0x0a, 0xf8, 0x6a, 0xbc, 0x43, 0x68, 0x30, 0x5d, 0x3f, 0x5c, + 0xee, 0xa5, 0x50, 0xbf, 0x66, 0x54, 0x2c, 0x0e, 0xe9, 0xa4, 0x08, 0x39, 0x98, 0xc2, 0xf1, 0x63, + 0x31, 0x51, 0x8f, 0xb4, 0x87, 0x89, 0x5a, 0x4c, 0x41, 0x7f, 0x2b, 0x1a, 0x9a, 0x00, 0x14, 0x4e, + 0xe4, 0x64, 0x0a, 0xfc, 0xbb, 0x18, 0x8e, 0x01, 0x0e, 0x0b, 0xbd, 0x99, 0x02, 0xff, 0xbe, 0x0f, + 0x73, 0x80, 0x2e, 0x88, 0x58, 0x91, 0xa6, 0xb0, 0xaf, 0xc5, 0x07, 0x89, 0x88, 0xa7, 0xd3, 0xc2, + 0x54, 0x6b, 0x0a, 0xf7, 0x7a, 0x3c, 0x2d, 0x34, 0x98, 0xd6, 0x17, 0x6b, 0xda, 0x14, 0xee, 0x8d, + 0xb8, 0x3e, 0x11, 0x6f, 0x8e, 0x32, 0x0d, 0x9c, 0x86, 0xfd, 0x41, 0x60, 0x34, 0x96, 0xce, 0xa6, + 0x90, 0xc5, 0x29, 0xd4, 0x1f, 0xe3, 0x43, 0x99, 0x87, 0x53, 0x50, 0xe8, 0xe6, 0x14, 0xf0, 0x4f, + 0x31, 0xc8, 0xc3, 0xcd, 0x7d, 0xab, 0x65, 0x76, 0x1a, 0xfc, 0x67, 0x01, 0xaf, 0x42, 0xf8, 0x6c, + 0x0a, 0xdd, 0x9d, 0x82, 0xff, 0xa5, 0x3f, 0x9b, 0x1c, 0x30, 0x77, 0x53, 0xa1, 0x9e, 0x86, 0x9d, + 0x12, 0x98, 0x14, 0xf9, 0x74, 0x0e, 0x99, 0x7a, 0x4f, 0x41, 0xde, 0x14, 0x67, 0x33, 0x0b, 0x66, + 0x5b, 0x8b, 0xa9, 0xfb, 0x14, 0xea, 0xaf, 0xf1, 0x89, 0xce, 0xa2, 0xe9, 0xd4, 0x0b, 0xf1, 0x9f, + 0x06, 0xbe, 0x15, 0xff, 0xca, 0x29, 0xe2, 0xcd, 0xc3, 0xec, 0x04, 0x48, 0x5d, 0x6a, 0x7f, 0x13, + 0x52, 0xa5, 0xff, 0x43, 0xd2, 0x05, 0xdf, 0xe1, 0xd9, 0xe9, 0xd0, 0x9a, 0x1a, 0xbb, 0x7f, 0x74, + 0xd6, 0x89, 0xe6, 0x3a, 0xb5, 0x52, 0xdd, 0x6f, 0xed, 0x7e, 0x78, 0xae, 0xd3, 0x6a, 0xf3, 0xdf, + 0xed, 0x03, 0xd2, 0x74, 0x49, 0x3d, 0xda, 0xed, 0x78, 0x11, 0x09, 0x3c, 0xdb, 0xdd, 0x1d, 0x91, + 0x30, 0x62, 0x9e, 0xf0, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x21, 0x07, 0x15, 0x87, 0x03, 0x18, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/internal/testprotos/desc_test_complex.proto b/internal/testprotos/desc_test_complex.proto index ab6f8c25..e5ad9b86 100644 --- a/internal/testprotos/desc_test_complex.proto +++ b/internal/testprotos/desc_test_complex.proto @@ -11,7 +11,9 @@ message Simple { optional uint64 id = 2; } -extend google.protobuf.ExtensionRangeOptions { +extend . google. // identifier broken up strangely should still be accepted + protobuf . + ExtensionRangeOptions { optional string label = 20000; } @@ -158,6 +160,10 @@ message Rule { StringRule string = 1; RepeatedRule repeated = 2; IntRule int = 3; + group FloatRule = 4 { + optional double min_val = 1; + optional double max_val = 2; + } } } diff --git a/internal/testprotos/desc_test_complex.protoset b/internal/testprotos/desc_test_complex.protoset index 80e5d8b6..cdc70e6b 100644 Binary files a/internal/testprotos/desc_test_complex.protoset and b/internal/testprotos/desc_test_complex.protoset differ diff --git a/internal/testprotos/desc_test_complex_source_info.protoset b/internal/testprotos/desc_test_complex_source_info.protoset index d4fea57f..f8632e97 100644 Binary files a/internal/testprotos/desc_test_complex_source_info.protoset and b/internal/testprotos/desc_test_complex_source_info.protoset differ diff --git a/internal/testprotos/desc_test_defaults.pb.go b/internal/testprotos/desc_test_defaults.pb.go index 85a7f303..06f4bebb 100644 --- a/internal/testprotos/desc_test_defaults.pb.go +++ b/internal/testprotos/desc_test_defaults.pb.go @@ -750,92 +750,184 @@ func (m *EnumDefaults) GetDos() Number { return Default_EnumDefaults_Dos } +type MoarFloats struct { + A *float32 `protobuf:"fixed32,1,opt,name=a,def=1" json:"a,omitempty"` + B *float32 `protobuf:"fixed32,2,opt,name=b,def=1" json:"b,omitempty"` + C *float32 `protobuf:"fixed32,3,opt,name=c,def=1.01" json:"c,omitempty"` + D *float32 `protobuf:"fixed32,4,opt,name=d,def=0.1" json:"d,omitempty"` + E *float32 `protobuf:"fixed32,5,opt,name=e,def=100000" json:"e,omitempty"` + F *float32 `protobuf:"fixed32,6,opt,name=f,def=1e-05" json:"f,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *MoarFloats) Reset() { *m = MoarFloats{} } +func (m *MoarFloats) String() string { return proto.CompactTextString(m) } +func (*MoarFloats) ProtoMessage() {} +func (*MoarFloats) Descriptor() ([]byte, []int) { + return fileDescriptor_1bea00113e7588f8, []int{3} +} + +func (m *MoarFloats) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MoarFloats.Unmarshal(m, b) +} +func (m *MoarFloats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MoarFloats.Marshal(b, m, deterministic) +} +func (m *MoarFloats) XXX_Merge(src proto.Message) { + xxx_messageInfo_MoarFloats.Merge(m, src) +} +func (m *MoarFloats) XXX_Size() int { + return xxx_messageInfo_MoarFloats.Size(m) +} +func (m *MoarFloats) XXX_DiscardUnknown() { + xxx_messageInfo_MoarFloats.DiscardUnknown(m) +} + +var xxx_messageInfo_MoarFloats proto.InternalMessageInfo + +const Default_MoarFloats_A float32 = 1 +const Default_MoarFloats_B float32 = 1 +const Default_MoarFloats_C float32 = 1.01 +const Default_MoarFloats_D float32 = 0.1 +const Default_MoarFloats_E float32 = 100000 +const Default_MoarFloats_F float32 = 1e-05 + +func (m *MoarFloats) GetA() float32 { + if m != nil && m.A != nil { + return *m.A + } + return Default_MoarFloats_A +} + +func (m *MoarFloats) GetB() float32 { + if m != nil && m.B != nil { + return *m.B + } + return Default_MoarFloats_B +} + +func (m *MoarFloats) GetC() float32 { + if m != nil && m.C != nil { + return *m.C + } + return Default_MoarFloats_C +} + +func (m *MoarFloats) GetD() float32 { + if m != nil && m.D != nil { + return *m.D + } + return Default_MoarFloats_D +} + +func (m *MoarFloats) GetE() float32 { + if m != nil && m.E != nil { + return *m.E + } + return Default_MoarFloats_E +} + +func (m *MoarFloats) GetF() float32 { + if m != nil && m.F != nil { + return *m.F + } + return Default_MoarFloats_F +} + func init() { proto.RegisterEnum("testprotos.Color", Color_name, Color_value) proto.RegisterEnum("testprotos.Number", Number_name, Number_value) proto.RegisterType((*PrimitiveDefaults)(nil), "testprotos.PrimitiveDefaults") proto.RegisterType((*StringAndBytesDefaults)(nil), "testprotos.StringAndBytesDefaults") proto.RegisterType((*EnumDefaults)(nil), "testprotos.EnumDefaults") + proto.RegisterType((*MoarFloats)(nil), "testprotos.MoarFloats") } func init() { proto.RegisterFile("desc_test_defaults.proto", fileDescriptor_1bea00113e7588f8) } var fileDescriptor_1bea00113e7588f8 = []byte{ - // 1205 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x95, 0xed, 0x6e, 0xdb, 0xb6, - 0x17, 0xc6, 0x23, 0xbf, 0x36, 0x6c, 0xd2, 0x28, 0xfc, 0xff, 0xd7, 0xb2, 0x6f, 0x2b, 0xeb, 0x35, - 0xab, 0xfa, 0x12, 0x47, 0xb2, 0x15, 0xb5, 0xf3, 0xb7, 0x75, 0x31, 0x86, 0x02, 0x99, 0x3d, 0xa8, - 0xeb, 0x0a, 0x04, 0x02, 0x0c, 0x25, 0xa2, 0x12, 0x0d, 0x32, 0xe5, 0x88, 0x54, 0xeb, 0xf6, 0x0a, - 0x7a, 0x0d, 0xbb, 0x87, 0x7d, 0x1b, 0xb0, 0x1b, 0xd8, 0x8d, 0xec, 0x4e, 0x06, 0x1e, 0x4a, 0xb6, - 0x0a, 0xb4, 0xc0, 0x3e, 0x99, 0x78, 0x7e, 0xcf, 0xe1, 0x39, 0x0f, 0x45, 0xd0, 0x88, 0x44, 0x4c, - 0x9c, 0xcd, 0x24, 0x13, 0x72, 0x16, 0xb1, 0x38, 0x2c, 0x52, 0x29, 0xfa, 0x8b, 0x3c, 0x93, 0x19, - 0x46, 0x4a, 0x84, 0xa5, 0xe8, 0xfd, 0x81, 0xd0, 0xee, 0xcf, 0x79, 0x32, 0x4f, 0x64, 0xf2, 0x96, - 0x1d, 0x95, 0x3e, 0x7c, 0x1b, 0xb5, 0xe2, 0x74, 0x38, 0x20, 0x06, 0x35, 0xac, 0xc6, 0xa8, 0x3b, - 0xec, 0x3b, 0xae, 0x73, 0xf8, 0x9d, 0x0f, 0xa2, 0x86, 0x9e, 0x4b, 0x1a, 0xd4, 0xb0, 0x8c, 0x4f, - 0xa0, 0xe7, 0xe2, 0x1e, 0x6a, 0x2b, 0x53, 0x44, 0x9a, 0x50, 0xba, 0xe5, 0xf5, 0xed, 0xc1, 0xc0, - 0x71, 0x1d, 0xf6, 0x64, 0x30, 0xf4, 0x35, 0xc2, 0x7b, 0xca, 0xe3, 0xb9, 0x11, 0x69, 0xc1, 0x0e, - 0x3b, 0xa5, 0xc7, 0x7e, 0x7e, 0xf8, 0xac, 0xb2, 0x79, 0x6e, 0x84, 0xef, 0xa2, 0xae, 0xf2, 0x27, - 0x3c, 0x26, 0x6d, 0xd8, 0xac, 0x99, 0xf0, 0xd8, 0xaf, 0x34, 0x8d, 0x3d, 0x57, 0xe1, 0x0e, 0xec, - 0x53, 0x61, 0xd0, 0xf0, 0x03, 0x84, 0x94, 0x93, 0xb3, 0xf3, 0x97, 0x3c, 0x26, 0x5d, 0xd8, 0xa0, - 0xb5, 0xaf, 0x2c, 0x35, 0x5d, 0xbb, 0x3c, 0xb7, 0x74, 0x5d, 0x81, 0x7d, 0x56, 0xae, 0x4a, 0xaf, - 0x26, 0xe1, 0x21, 0x27, 0x9b, 0x7a, 0x12, 0x1e, 0x72, 0xbf, 0xd2, 0xaa, 0x49, 0x14, 0x46, 0x7a, - 0x92, 0x12, 0x83, 0x86, 0xaf, 0xa3, 0xe6, 0x69, 0xea, 0x90, 0xab, 0xd4, 0xb0, 0xae, 0x8c, 0x5a, - 0x32, 0x2f, 0x98, 0xaf, 0x04, 0x7c, 0x43, 0xe9, 0x03, 0xb2, 0x05, 0x7a, 0x3b, 0x0e, 0x53, 0x01, - 0x60, 0xa0, 0x40, 0x32, 0x1c, 0x90, 0x6d, 0x6a, 0x58, 0xed, 0x51, 0xdb, 0xb1, 0x1d, 0xdb, 0xf1, - 0x95, 0x82, 0x6f, 0xa1, 0x56, 0x32, 0x1c, 0x70, 0x72, 0x0d, 0x48, 0x67, 0x5f, 0x23, 0xd0, 0x4a, - 0xb6, 0x24, 0x3b, 0x9a, 0x39, 0x43, 0xe7, 0xf0, 0xb9, 0x07, 0x6c, 0x89, 0xef, 0xa2, 0xb6, 0xfa, - 0xe5, 0xc4, 0x04, 0xd8, 0xdd, 0x2f, 0xa9, 0x56, 0xa1, 0x9f, 0xe7, 0x92, 0x5d, 0x6a, 0x58, 0xcd, - 0x75, 0x3f, 0xcf, 0x85, 0x3d, 0x3d, 0x97, 0x13, 0x0c, 0x64, 0xdd, 0xcf, 0x73, 0x79, 0xc9, 0x96, - 0xe4, 0x7f, 0x9a, 0xad, 0xfa, 0x79, 0xae, 0xee, 0xe7, 0xb9, 0x4b, 0x4e, 0xfe, 0x0f, 0xb0, 0xd6, - 0x4f, 0xa9, 0xf8, 0x26, 0x8c, 0x2a, 0xc8, 0x57, 0xd4, 0xb0, 0x76, 0xab, 0x86, 0x20, 0xe1, 0x3b, - 0x30, 0xa9, 0xe0, 0xe4, 0x3a, 0xb0, 0xaa, 0xa5, 0x16, 0x2b, 0xba, 0x24, 0x37, 0x34, 0xad, 0xc5, - 0x10, 0x4b, 0x7c, 0x0f, 0x75, 0x60, 0xc1, 0x09, 0x01, 0xbc, 0x6a, 0x5b, 0xca, 0xd0, 0xd7, 0x73, - 0x05, 0xb9, 0x49, 0x0d, 0x0b, 0xaf, 0xfb, 0x7a, 0xae, 0xee, 0xeb, 0xb9, 0x82, 0x93, 0x5b, 0xc0, - 0xd6, 0x7d, 0x95, 0x58, 0xd1, 0x25, 0xb9, 0xad, 0x69, 0x2d, 0x4e, 0xd9, 0x57, 0x2d, 0x38, 0xb9, - 0x03, 0xb8, 0xd6, 0x17, 0xe4, 0x32, 0x6f, 0x4c, 0xee, 0x52, 0xc3, 0xda, 0xa9, 0xe7, 0x8d, 0xcb, - 0x44, 0x31, 0x27, 0x5f, 0x03, 0xab, 0xe7, 0x8d, 0xab, 0xbc, 0xf1, 0x92, 0xdc, 0xd3, 0xb4, 0x96, - 0x37, 0xae, 0xf2, 0xc6, 0x4b, 0x4e, 0x28, 0xe0, 0x4f, 0xf2, 0xc6, 0xab, 0xbc, 0x31, 0xb9, 0x4f, - 0x0d, 0xcb, 0xac, 0xe7, 0x8d, 0xcb, 0x44, 0x31, 0x27, 0x3d, 0x60, 0xf5, 0xbc, 0x71, 0x95, 0x37, - 0x5e, 0x92, 0x6f, 0x34, 0xad, 0xe5, 0x8d, 0xab, 0xbc, 0xaa, 0xef, 0x03, 0xc0, 0x9f, 0xe4, 0x8d, - 0xf5, 0x7d, 0x2a, 0x86, 0x03, 0xb2, 0x47, 0x0d, 0x6b, 0x7b, 0x75, 0x9f, 0x0a, 0x7d, 0x7f, 0x0b, - 0x75, 0x47, 0xbf, 0x05, 0xb2, 0xba, 0x33, 0x4a, 0x83, 0x22, 0xcf, 0x25, 0x0f, 0xa9, 0x61, 0xb5, - 0xd6, 0x45, 0xfa, 0x12, 0x16, 0xea, 0xa2, 0x59, 0x40, 0xd6, 0x45, 0xea, 0xa2, 0xdd, 0x84, 0x0d, - 0x63, 0xf2, 0x88, 0x1a, 0x56, 0x77, 0x95, 0xb0, 0x28, 0x4f, 0xb6, 0x80, 0xb3, 0x7b, 0x0c, 0x6c, - 0x95, 0x01, 0x44, 0x28, 0x54, 0x47, 0xf3, 0x84, 0x1a, 0x56, 0x67, 0x5d, 0x58, 0x1e, 0x4d, 0x01, - 0xe1, 0x9f, 0x02, 0x5b, 0x17, 0x2a, 0xb1, 0xf7, 0x7b, 0x0b, 0x5d, 0x7f, 0x25, 0xf3, 0x84, 0x9f, - 0x7f, 0xcf, 0xa3, 0x17, 0xef, 0x25, 0x13, 0xab, 0x47, 0xf3, 0x10, 0x35, 0xa2, 0x4b, 0x78, 0x32, - 0x37, 0x47, 0x7b, 0xf2, 0x22, 0x11, 0x34, 0x11, 0x34, 0xa4, 0x02, 0xdc, 0xf4, 0x5d, 0x22, 0x2f, - 0x68, 0x8f, 0x33, 0x21, 0x59, 0x44, 0x2f, 0x8b, 0x4c, 0x32, 0xd1, 0xf3, 0x1b, 0xd1, 0xa5, 0x2a, - 0x13, 0x97, 0xf0, 0x98, 0xfe, 0xf7, 0x32, 0x71, 0x89, 0x7f, 0x42, 0xdb, 0x4c, 0x9c, 0x85, 0x0b, - 0x16, 0xcd, 0x4e, 0xd5, 0x18, 0xf0, 0xe0, 0x6e, 0x8d, 0xac, 0xc0, 0xb6, 0xed, 0xc0, 0xb6, 0x9d, - 0xc0, 0xb6, 0x9f, 0x05, 0xb6, 0x63, 0x07, 0xb6, 0xe3, 0x06, 0x3c, 0xc8, 0x03, 0x19, 0xd8, 0xce, - 0x30, 0x08, 0x82, 0x87, 0x41, 0x2f, 0x18, 0x3e, 0xf3, 0xfc, 0xad, 0xb2, 0x1c, 0x42, 0xe0, 0x07, - 0xe8, 0x6a, 0x21, 0xe3, 0xe7, 0x33, 0xdd, 0x16, 0x5e, 0xe6, 0xcd, 0x51, 0xf3, 0x9f, 0x8f, 0x7f, - 0xfa, 0x48, 0xe9, 0x3a, 0x32, 0xb6, 0x91, 0xa9, 0x0d, 0x33, 0x35, 0xd7, 0xec, 0x03, 0xcb, 0x33, - 0x78, 0x9b, 0x37, 0x47, 0x9d, 0x0b, 0x96, 0x6e, 0xa4, 0x99, 0x7f, 0x4d, 0xf3, 0x37, 0x89, 0xbc, - 0x38, 0x61, 0x79, 0x86, 0x1d, 0xb4, 0x03, 0xe3, 0xd5, 0x0a, 0x3a, 0x30, 0xe8, 0xe6, 0xbb, 0x2c, - 0x57, 0xb3, 0xa6, 0x91, 0xbf, 0x0d, 0x8e, 0x55, 0xc9, 0x5f, 0x06, 0xc2, 0x39, 0x0b, 0xd3, 0xf4, - 0xfd, 0x2c, 0xcd, 0xf8, 0x79, 0x35, 0x52, 0x17, 0xfa, 0x7c, 0x34, 0xd6, 0x47, 0xa4, 0x4d, 0x54, - 0x99, 0xaa, 0xe3, 0x3a, 0xcb, 0xb8, 0x90, 0x21, 0x97, 0x4f, 0xa9, 0xc8, 0x68, 0x22, 0xa9, 0x58, - 0x84, 0x5c, 0xd0, 0x79, 0x91, 0xca, 0x64, 0x91, 0x32, 0x9a, 0x26, 0x9c, 0x89, 0xfb, 0x0a, 0x84, - 0xa9, 0xc8, 0xa8, 0xfa, 0x1f, 0x14, 0x54, 0x14, 0x8b, 0x45, 0x96, 0x4b, 0x1a, 0x67, 0xb9, 0x76, - 0xee, 0x2b, 0x5b, 0xb5, 0x63, 0x9a, 0x48, 0x96, 0x87, 0xa9, 0xa0, 0x09, 0xa7, 0xd9, 0x42, 0x26, - 0x19, 0xa7, 0x6f, 0xc3, 0xb4, 0x60, 0xc2, 0x37, 0x75, 0xff, 0xe3, 0x8c, 0x9f, 0xeb, 0xe3, 0xe9, - 0xfd, 0xdd, 0x40, 0x5b, 0x63, 0x5e, 0xcc, 0x57, 0x57, 0xc2, 0x42, 0xcd, 0x9c, 0x45, 0x70, 0x27, - 0xae, 0x0d, 0x76, 0xfb, 0xeb, 0xff, 0xdd, 0xfe, 0x0f, 0x59, 0x9a, 0xe5, 0xa3, 0xa6, 0x3f, 0x3e, - 0xf2, 0x95, 0x05, 0xf7, 0x51, 0xfb, 0x3c, 0x67, 0x8c, 0xc3, 0x45, 0xf8, 0xac, 0xb7, 0xfd, 0xa3, - 0x3f, 0x1e, 0x4f, 0x7c, 0x6d, 0xc3, 0x4f, 0x50, 0xeb, 0x34, 0x2d, 0x18, 0x7c, 0xf5, 0xcf, 0xda, - 0x5b, 0x2f, 0x8e, 0x5f, 0x8f, 0x7d, 0x30, 0xe1, 0xa7, 0xa8, 0x05, 0x27, 0xdf, 0x02, 0x33, 0xae, - 0x9b, 0x27, 0xc5, 0xfc, 0x94, 0xe5, 0xa3, 0xd6, 0xc9, 0xd8, 0x9f, 0xfa, 0xe0, 0xc2, 0x8f, 0x50, - 0xf3, 0x03, 0x8b, 0xe0, 0xbb, 0x7e, 0xde, 0xdc, 0x3c, 0x51, 0x53, 0x7f, 0x60, 0x91, 0xb2, 0x66, - 0x9c, 0xc1, 0x17, 0xfd, 0x82, 0x75, 0x3a, 0x19, 0xfb, 0xca, 0xa3, 0xac, 0x51, 0x26, 0xe0, 0x2b, - 0x7e, 0xc1, 0x7a, 0x34, 0x7d, 0xe5, 0x2b, 0xcf, 0xe3, 0x3d, 0xd4, 0x86, 0x0c, 0xb8, 0x8b, 0xd4, - 0x01, 0x99, 0x1b, 0x78, 0x13, 0xe9, 0xf4, 0xa6, 0x81, 0xaf, 0x20, 0x48, 0x66, 0x36, 0x1e, 0xff, - 0x8a, 0x3a, 0xba, 0x54, 0x69, 0x6a, 0x7e, 0x73, 0x43, 0x55, 0x9c, 0x40, 0x45, 0x17, 0x35, 0x27, - 0x2f, 0x8f, 0xcd, 0x0d, 0xc5, 0x26, 0xaf, 0x8f, 0x8f, 0xb5, 0x34, 0x9d, 0x8c, 0x4d, 0x43, 0x2d, - 0x5e, 0x4f, 0xa6, 0x7a, 0xf1, 0xcb, 0x9b, 0xa9, 0xd9, 0x50, 0x8b, 0xa3, 0xe9, 0x2b, 0xb3, 0x71, - 0xab, 0x61, 0x1a, 0x2f, 0x86, 0x27, 0xce, 0x79, 0x22, 0x2f, 0x8a, 0xd3, 0xfe, 0x59, 0x36, 0x3f, - 0xf8, 0xed, 0xa2, 0x98, 0x2f, 0x0e, 0x60, 0xd4, 0x9c, 0xc5, 0x29, 0x3b, 0x93, 0x07, 0x09, 0x97, - 0x2c, 0xe7, 0x61, 0x7a, 0xb0, 0x0e, 0xf1, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x63, 0x35, 0x77, - 0x00, 0x6e, 0x09, 0x00, 0x00, + // 1291 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0xdb, 0x6e, 0xdb, 0xc6, + 0x16, 0xf5, 0xe8, 0x1a, 0x4f, 0xec, 0x58, 0x9e, 0xe4, 0x24, 0x93, 0xdb, 0xc9, 0x44, 0x27, 0x3e, + 0x61, 0x2e, 0x96, 0x49, 0x89, 0x66, 0x52, 0xbd, 0x35, 0xb5, 0x5a, 0x04, 0x70, 0xa4, 0x82, 0x69, + 0x1a, 0xc0, 0x20, 0x20, 0x50, 0xe2, 0xd0, 0x66, 0x41, 0x0f, 0x65, 0x0e, 0x99, 0x28, 0x79, 0xea, + 0x63, 0xbe, 0xa1, 0xff, 0xd0, 0xb7, 0x02, 0xfd, 0x81, 0xfe, 0x48, 0xff, 0xa4, 0x98, 0x3d, 0xa4, + 0xc4, 0x00, 0x09, 0x50, 0xbd, 0x68, 0xb0, 0xd6, 0xda, 0xb3, 0xf7, 0xda, 0xb3, 0x31, 0x1c, 0x4c, + 0x03, 0x2e, 0xe7, 0xd3, 0x8c, 0xcb, 0x6c, 0x1a, 0xf0, 0xd0, 0xcf, 0xe3, 0x4c, 0xf6, 0x16, 0x69, + 0x92, 0x25, 0x04, 0x2b, 0x10, 0x96, 0xb2, 0xfb, 0x3b, 0xc6, 0xbb, 0x3f, 0xa6, 0xd1, 0x79, 0x94, + 0x45, 0xef, 0xf8, 0x51, 0xa1, 0x23, 0xb7, 0x71, 0x23, 0x8c, 0x07, 0x7d, 0x8a, 0x18, 0x32, 0x6a, + 0xc3, 0xf6, 0xa0, 0x67, 0xd9, 0xd6, 0xe1, 0x37, 0x2e, 0x80, 0x9a, 0x74, 0x6c, 0x5a, 0x63, 0xc8, + 0x40, 0x9f, 0x91, 0x8e, 0x4d, 0xba, 0xb8, 0xa9, 0x44, 0x01, 0xad, 0x43, 0xe8, 0x96, 0xd3, 0x33, + 0xfb, 0x7d, 0xcb, 0xb6, 0xf8, 0x93, 0xfe, 0xc0, 0xd5, 0x14, 0xd9, 0x53, 0x1a, 0xc7, 0x0e, 0x68, + 0x03, 0x76, 0xd8, 0x29, 0x34, 0xe6, 0xf3, 0xc3, 0x67, 0xa5, 0xcc, 0xb1, 0x03, 0x72, 0x17, 0xb7, + 0x95, 0x3e, 0x12, 0x21, 0x6d, 0xc2, 0x66, 0xf5, 0x48, 0x84, 0x6e, 0x89, 0x69, 0xda, 0xb1, 0x15, + 0xdd, 0x82, 0x7d, 0x4a, 0x1a, 0x30, 0xf2, 0x00, 0x63, 0xa5, 0x14, 0xfc, 0xf4, 0xa5, 0x08, 0x69, + 0x1b, 0x36, 0x68, 0xec, 0x2b, 0x49, 0x05, 0xd7, 0x2a, 0xc7, 0x2e, 0x54, 0x97, 0x60, 0x9f, 0x95, + 0xaa, 0xc4, 0xcb, 0x4a, 0x84, 0x2f, 0xe8, 0xa6, 0xae, 0x44, 0xf8, 0xc2, 0x2d, 0xb1, 0xb2, 0x12, + 0x45, 0x63, 0x5d, 0x49, 0x41, 0x03, 0x46, 0xae, 0xe3, 0xfa, 0x2c, 0xb6, 0xe8, 0x65, 0x86, 0x8c, + 0x4b, 0xc3, 0x46, 0x96, 0xe6, 0xdc, 0x55, 0x00, 0xb9, 0xa1, 0xf0, 0x3e, 0xdd, 0x02, 0xbc, 0x19, + 0xfa, 0xb1, 0x04, 0xa2, 0xaf, 0x88, 0x68, 0xd0, 0xa7, 0xdb, 0x0c, 0x19, 0xcd, 0x61, 0xd3, 0x32, + 0x2d, 0xd3, 0x72, 0x15, 0x42, 0x6e, 0xe1, 0x46, 0x34, 0xe8, 0x0b, 0x7a, 0x05, 0x98, 0xd6, 0xbe, + 0xa6, 0x00, 0x2b, 0xb8, 0x25, 0xdd, 0xd1, 0x9c, 0x35, 0xb0, 0x0e, 0x9f, 0x3b, 0xc0, 0x2d, 0xc9, + 0x5d, 0xdc, 0x54, 0xff, 0x82, 0x76, 0x80, 0x6c, 0xef, 0x17, 0xac, 0x46, 0x21, 0x9f, 0x63, 0xd3, + 0x5d, 0x86, 0x8c, 0xfa, 0x3a, 0x9f, 0x63, 0xc3, 0x9e, 0x8e, 0x2d, 0x28, 0x01, 0x66, 0x9d, 0xcf, + 0xb1, 0x45, 0xc1, 0x2d, 0xe9, 0x55, 0xcd, 0xad, 0xf2, 0x39, 0xb6, 0xce, 0xe7, 0xd8, 0x4b, 0x41, + 0xaf, 0x01, 0x59, 0xc9, 0xa7, 0x50, 0x72, 0x13, 0x4a, 0x95, 0xf4, 0x3f, 0x0c, 0x19, 0xbb, 0x65, + 0x42, 0x80, 0xc8, 0x1d, 0xa8, 0x54, 0x0a, 0x7a, 0x1d, 0xb8, 0x32, 0xa5, 0x06, 0x4b, 0x76, 0x49, + 0x6f, 0x68, 0xb6, 0x62, 0x43, 0x2e, 0xc9, 0x3d, 0xdc, 0x82, 0x85, 0xa0, 0x14, 0xe8, 0x55, 0xda, + 0x02, 0x86, 0xbc, 0x8e, 0x2d, 0xe9, 0x4d, 0x86, 0x0c, 0xb2, 0xce, 0xeb, 0xd8, 0x3a, 0xaf, 0x63, + 0x4b, 0x41, 0x6f, 0x01, 0xb7, 0xce, 0xab, 0xc0, 0x92, 0x5d, 0xd2, 0xdb, 0x9a, 0xad, 0xd8, 0x29, + 0xf2, 0xaa, 0x85, 0xa0, 0x77, 0x80, 0xae, 0xe4, 0x05, 0xb8, 0xf0, 0x1b, 0xd2, 0xbb, 0x0c, 0x19, + 0x3b, 0x55, 0xbf, 0x61, 0xe1, 0x28, 0x14, 0xf4, 0xbf, 0xc0, 0x55, 0xfd, 0x86, 0xa5, 0xdf, 0x70, + 0x49, 0xef, 0x69, 0xb6, 0xe2, 0x37, 0x2c, 0xfd, 0x86, 0x4b, 0x41, 0x19, 0xd0, 0x9f, 0xf9, 0x0d, + 0x57, 0x7e, 0x43, 0x7a, 0x9f, 0x21, 0xa3, 0x53, 0xf5, 0x1b, 0x16, 0x8e, 0x42, 0x41, 0xbb, 0xc0, + 0x55, 0xfd, 0x86, 0xa5, 0xdf, 0x70, 0x49, 0xff, 0xa7, 0xd9, 0x8a, 0xdf, 0xb0, 0xf4, 0xab, 0xf2, + 0x3e, 0x00, 0xfa, 0x33, 0xbf, 0xa1, 0x9e, 0xa7, 0x7c, 0xd0, 0xa7, 0x7b, 0x0c, 0x19, 0xdb, 0xab, + 0x79, 0xca, 0xf5, 0xfc, 0xe6, 0x6a, 0x46, 0xff, 0x0f, 0xcc, 0x6a, 0x66, 0x14, 0x06, 0x41, 0x8e, + 0x4d, 0x1f, 0x32, 0x64, 0x34, 0xd6, 0x41, 0x7a, 0x08, 0x73, 0x35, 0x68, 0x06, 0x30, 0xeb, 0x20, + 0x35, 0x68, 0x37, 0x61, 0xc3, 0x90, 0x3e, 0x62, 0xc8, 0x68, 0xaf, 0x1c, 0xe6, 0x45, 0x67, 0x73, + 0xe8, 0xdd, 0x63, 0xe0, 0x56, 0x1e, 0x00, 0x84, 0x40, 0xd5, 0x9a, 0x27, 0x0c, 0x19, 0xad, 0x75, + 0x60, 0xd1, 0x9a, 0x1c, 0xcc, 0x3f, 0x05, 0x6e, 0x1d, 0xa8, 0xc0, 0xee, 0x6f, 0x0d, 0x7c, 0xfd, + 0x75, 0x96, 0x46, 0xe2, 0xf4, 0x5b, 0x11, 0xbc, 0xf8, 0x90, 0x71, 0xb9, 0xba, 0x34, 0x0f, 0x71, + 0x2d, 0xb8, 0x80, 0x2b, 0x73, 0x73, 0xb8, 0x97, 0x9d, 0x45, 0x92, 0x45, 0x92, 0xf9, 0x4c, 0x82, + 0x9a, 0xbd, 0x8f, 0xb2, 0x33, 0xd6, 0x15, 0x5c, 0x66, 0x3c, 0x60, 0x17, 0x79, 0x92, 0x71, 0xd9, + 0x75, 0x6b, 0xc1, 0x85, 0x0a, 0x93, 0x17, 0x70, 0x99, 0xfe, 0xfb, 0x30, 0x79, 0x41, 0x5e, 0xe1, + 0x6d, 0x2e, 0xe7, 0xfe, 0x82, 0x07, 0xd3, 0x99, 0x2a, 0x03, 0x2e, 0xdc, 0xad, 0xa1, 0xe1, 0x99, + 0xa6, 0xe9, 0x99, 0xa6, 0xe5, 0x99, 0xe6, 0x33, 0xcf, 0xb4, 0x4c, 0xcf, 0xb4, 0x6c, 0x4f, 0x78, + 0xa9, 0x97, 0x79, 0xa6, 0x35, 0xf0, 0x3c, 0xef, 0xa1, 0xd7, 0xf5, 0x06, 0xcf, 0x1c, 0x77, 0xab, + 0x08, 0x07, 0x13, 0xe4, 0x01, 0xbe, 0x9c, 0x67, 0xe1, 0xf3, 0xa9, 0x4e, 0x0b, 0x37, 0xf3, 0xe6, + 0xb0, 0xfe, 0xf7, 0xa7, 0x3f, 0x5c, 0xac, 0x70, 0x6d, 0x99, 0x98, 0xb8, 0xa3, 0x05, 0x53, 0x55, + 0xd7, 0xf4, 0x23, 0x4f, 0x13, 0xb8, 0x9b, 0x37, 0x87, 0xad, 0x33, 0x1e, 0x6f, 0xc4, 0x89, 0x7b, + 0x45, 0xf3, 0x6f, 0xa3, 0xec, 0xec, 0x84, 0xa7, 0x09, 0xb1, 0xf0, 0x0e, 0x94, 0x57, 0x09, 0x68, + 0x41, 0xa1, 0x9b, 0xef, 0x93, 0x54, 0xd5, 0x1a, 0x07, 0xee, 0x36, 0x28, 0x56, 0x21, 0x7f, 0x22, + 0x4c, 0x52, 0xee, 0xc7, 0xf1, 0x87, 0x69, 0x9c, 0x88, 0xd3, 0xb2, 0xa4, 0x36, 0xe4, 0xf9, 0x84, + 0xd6, 0x2d, 0xd2, 0x22, 0xa6, 0x44, 0x65, 0xbb, 0xe6, 0x89, 0x90, 0x99, 0x2f, 0xb2, 0xa7, 0x4c, + 0x26, 0x2c, 0xca, 0x98, 0x5c, 0xf8, 0x42, 0xb2, 0xf3, 0x3c, 0xce, 0xa2, 0x45, 0xcc, 0x59, 0x1c, + 0x09, 0x2e, 0xef, 0x2b, 0xc2, 0x8f, 0x65, 0xc2, 0xd4, 0x77, 0x50, 0x32, 0x99, 0x2f, 0x16, 0x49, + 0x9a, 0xb1, 0x30, 0x49, 0xb5, 0x72, 0x5f, 0xc9, 0xca, 0x1d, 0xe3, 0x28, 0xe3, 0xa9, 0x1f, 0x4b, + 0x16, 0x09, 0x96, 0x2c, 0xb2, 0x28, 0x11, 0xec, 0x9d, 0x1f, 0xe7, 0x5c, 0xba, 0x1d, 0x9d, 0xff, + 0x38, 0x11, 0xa7, 0xba, 0x3d, 0xdd, 0xbf, 0x6a, 0x78, 0x6b, 0x24, 0xf2, 0xf3, 0xd5, 0x48, 0x18, + 0xb8, 0x9e, 0xf2, 0x00, 0x66, 0xe2, 0x4a, 0x7f, 0xb7, 0xb7, 0xfe, 0xee, 0xf6, 0xbe, 0x4b, 0xe2, + 0x24, 0x1d, 0xd6, 0xdd, 0xd1, 0x91, 0xab, 0x24, 0xa4, 0x87, 0x9b, 0xa7, 0x29, 0xe7, 0x02, 0x06, + 0xe1, 0x8b, 0xda, 0xe6, 0x0f, 0xee, 0x68, 0x34, 0x76, 0xb5, 0x8c, 0x3c, 0xc1, 0x8d, 0x59, 0x9c, + 0x73, 0x38, 0xf5, 0x2f, 0xca, 0x1b, 0x2f, 0x8e, 0xdf, 0x8c, 0x5c, 0x10, 0x91, 0xa7, 0xb8, 0x01, + 0x9d, 0x6f, 0x80, 0x98, 0x54, 0xc5, 0xe3, 0xfc, 0x7c, 0xc6, 0xd3, 0x61, 0xe3, 0x64, 0xe4, 0x4e, + 0x5c, 0x50, 0x91, 0x47, 0xb8, 0xfe, 0x91, 0x07, 0x70, 0xae, 0x5f, 0x16, 0xd7, 0x4f, 0x54, 0xd5, + 0x1f, 0x79, 0xa0, 0xa4, 0x89, 0xe0, 0x70, 0xa2, 0x5f, 0x91, 0x4e, 0xc6, 0x23, 0x57, 0x69, 0x94, + 0x34, 0x48, 0x24, 0x9c, 0xe2, 0x57, 0xa4, 0x47, 0x93, 0xd7, 0xae, 0xd2, 0x74, 0x7f, 0x45, 0x18, + 0xbf, 0x4a, 0xfc, 0xf4, 0xfb, 0x38, 0xf1, 0x33, 0x49, 0x76, 0x30, 0xf2, 0x8b, 0x97, 0x08, 0xb2, + 0x5c, 0xe4, 0x2b, 0x60, 0x06, 0x7d, 0xd2, 0xc0, 0x8c, 0x10, 0x8c, 0xe6, 0xc5, 0x83, 0xa3, 0x61, + 0xf5, 0x4c, 0xcb, 0x45, 0x73, 0xb2, 0x8b, 0x91, 0x7e, 0x60, 0xd4, 0x86, 0x75, 0xb3, 0x67, 0xb9, + 0x28, 0x20, 0xd7, 0x30, 0xe2, 0xc5, 0x53, 0xa2, 0x65, 0x99, 0xea, 0xe7, 0x22, 0x4e, 0xae, 0x62, + 0xa4, 0x5f, 0x10, 0xb5, 0x61, 0xd3, 0xe2, 0xfb, 0xe6, 0xa1, 0x8b, 0xc2, 0xc7, 0x7b, 0xb8, 0x09, + 0x6d, 0x24, 0x6d, 0xac, 0xce, 0xa8, 0xb3, 0x41, 0x36, 0xb1, 0x3e, 0x80, 0x0e, 0x22, 0x97, 0x30, + 0x34, 0xb7, 0x53, 0x7b, 0xfc, 0x33, 0x6e, 0xe9, 0xea, 0x15, 0xa6, 0x5a, 0xd8, 0xd9, 0x50, 0x11, + 0x27, 0x10, 0xd1, 0xc6, 0xf5, 0xf1, 0xcb, 0xe3, 0xce, 0x86, 0xe2, 0xc6, 0x6f, 0x8e, 0x8f, 0x35, + 0x34, 0x19, 0x8f, 0x3a, 0x48, 0x2d, 0xde, 0x8c, 0x27, 0x7a, 0xf1, 0xd3, 0xdb, 0x49, 0xa7, 0xa6, + 0x16, 0x47, 0x93, 0xd7, 0x9d, 0xda, 0xad, 0x5a, 0x07, 0xbd, 0x18, 0x9c, 0x58, 0xa7, 0x51, 0x76, + 0x96, 0xcf, 0x7a, 0xf3, 0xe4, 0xfc, 0xe0, 0x97, 0xb3, 0xfc, 0x7c, 0x71, 0x00, 0xdd, 0x4a, 0x79, + 0x18, 0xf3, 0x79, 0x76, 0x10, 0x89, 0x8c, 0xa7, 0xc2, 0x8f, 0x0f, 0xd6, 0x7d, 0xfc, 0x27, 0x00, + 0x00, 0xff, 0xff, 0x2b, 0x13, 0x1f, 0xbd, 0xf1, 0x09, 0x00, 0x00, } diff --git a/internal/testprotos/desc_test_defaults.proto b/internal/testprotos/desc_test_defaults.proto index 46860668..db839828 100644 --- a/internal/testprotos/desc_test_defaults.proto +++ b/internal/testprotos/desc_test_defaults.proto @@ -113,3 +113,12 @@ message EnumDefaults { optional Number one = 6 [default = ONE]; optional Number dos = 7 [default = DOS]; } + +message MoarFloats { + optional float a = 1 [default = 1]; + optional float b = 2 [default = 1.]; + optional float c = 3 [default = 1.01]; + optional float d = 4 [default = .1]; + optional float e = 5 [default = 1.e5]; + optional float f = 6 [default = 1.e-5]; +} \ No newline at end of file