diff --git a/libasn1fix/asn1fix_class.c b/libasn1fix/asn1fix_class.c index bb24a16c..5f124df3 100644 --- a/libasn1fix/asn1fix_class.c +++ b/libasn1fix/asn1fix_class.c @@ -65,16 +65,3 @@ asn1f_class_access(arg_t *arg, asn1p_module_t *mod, asn1p_ref_t *ref) { return NULL; } - -int -asn1f_parse_class_with_syntax(arg_t *arg) { - asn1p_expr_t *expr = arg->expr; - - if(expr->expr_type != A1TC_CLASSDEF - || expr->with_syntax == NULL) - return 0; - - DEBUG("Class %s: checking WITH SYNTAX", expr->Identifier); - - return 0; -} diff --git a/libasn1fix/asn1fix_class.h b/libasn1fix/asn1fix_class.h index b8a6e78f..763e48cf 100644 --- a/libasn1fix/asn1fix_class.h +++ b/libasn1fix/asn1fix_class.h @@ -12,10 +12,4 @@ asn1p_expr_t *asn1f_class_access(arg_t *, asn1p_module_t *mod, asn1p_ref_t *); asn1p_expr_t *asn1f_class_access2(asn1p_t *asn, asn1p_module_t *mod, asn1p_expr_t *expr, asn1p_ref_t *); -/* - * CLASS may contain the "WITH SYNTAX" clause, in which case we are - * going to parse it. - */ -int asn1f_parse_class_with_syntax(arg_t *arg); - #endif /* _ASN1FIX_CLASS_H_ */ diff --git a/libasn1fix/asn1fix_cws.c b/libasn1fix/asn1fix_cws.c index 6a8abf9f..a605c246 100644 --- a/libasn1fix/asn1fix_cws.c +++ b/libasn1fix/asn1fix_cws.c @@ -1,2 +1,15 @@ #include "asn1fix_internal.h" #include "asn1fix_cws.h" + +int +asn1f_parse_class_with_syntax(arg_t *arg) { + asn1p_expr_t *expr = arg->expr; + + if(expr->expr_type != A1TC_CLASSDEF + || expr->with_syntax == NULL) + return 0; + + DEBUG("Class %s: checking WITH SYNTAX", expr->Identifier); + + return 0; +} diff --git a/libasn1fix/asn1fix_cws.h b/libasn1fix/asn1fix_cws.h index 75f78307..25fd2088 100644 --- a/libasn1fix/asn1fix_cws.h +++ b/libasn1fix/asn1fix_cws.h @@ -1,4 +1,10 @@ #ifndef _ASN1FIX_CLASS_WITH_SYNTAX_H_ #define _ASN1FIX_CLASS_WITH_SYNTAX_H_ +/* + * CLASS may contain the "WITH SYNTAX" clause, in which case we are + * going to parse it. + */ +int asn1f_parse_class_with_syntax(arg_t *arg); + #endif /* _ASN1FIX_CLASS_WITH_SYNTAX_H_ */ diff --git a/libasn1fix/asn1fix_internal.h b/libasn1fix/asn1fix_internal.h index 9ca29041..dabf8567 100644 --- a/libasn1fix/asn1fix_internal.h +++ b/libasn1fix/asn1fix_internal.h @@ -61,6 +61,7 @@ typedef struct arg_s { #include "asn1fix_compat.h" /* Data compatibility */ #include "asn1fix_constr.h" /* Constructed types */ #include "asn1fix_class.h" /* CLASS support */ +#include "asn1fix_cws.h" /* CLASS WITH SYNTAX support */ #include "asn1fix_param.h" /* Parametrization */ #include "asn1fix_retrieve.h" /* Data retrieval */ #include "asn1fix_enum.h" /* Process ENUMERATED */ diff --git a/libasn1parser/asn1p_class.c b/libasn1parser/asn1p_class.c index cd0e385a..741d98e1 100644 --- a/libasn1parser/asn1p_class.c +++ b/libasn1parser/asn1p_class.c @@ -18,10 +18,13 @@ asn1p_wsyntx_chunk_new() { void asn1p_wsyntx_chunk_free(asn1p_wsyntx_chunk_t *wc) { if(wc) { - if(wc->ref) - asn1p_ref_free(wc->ref); - if(wc->buf) - free(wc->buf); + switch(wc->type) { + case WC_LITERAL: free(wc->content.token); break; + case WC_REFERENCE: asn1p_ref_free(wc->content.ref); break; + case WC_OPTIONALGROUP: + asn1p_wsyntx_free(wc->content.syntax); + break; + } free(wc); } } @@ -32,21 +35,17 @@ asn1p_wsyntx_chunk_clone(asn1p_wsyntx_chunk_t *wc) { nc = asn1p_wsyntx_chunk_new(); if(nc) { - if(wc->buf) { - nc->buf = malloc(wc->len + 1); - if(nc->buf) { - nc->len = wc->len; - memcpy(nc->buf, wc->buf, wc->len); - nc->buf[nc->len] = '\0'; - } - } - if(wc->ref) { - nc->ref = asn1p_ref_clone(wc->ref); - } - - if(!nc->ref && !nc->buf) { - asn1p_wsyntx_chunk_free(nc); - return NULL; + switch(wc->type) { + case WC_LITERAL: + nc->content.token = malloc(strlen(wc->content.token)+1); + strcpy(nc->content.token, wc->content.token); + break; + case WC_REFERENCE: + nc->content.ref = asn1p_ref_clone(wc->content.ref); + break; + case WC_OPTIONALGROUP: + nc->content.syntax = asn1p_wsyntx_clone(wc->content.syntax); + break; } } @@ -103,11 +102,15 @@ asn1p_wsyntx_chunk_fromref(asn1p_ref_t *ref, int do_copy) { if(do_copy) { static asn1p_wsyntx_chunk_t tmp; - tmp.ref = ref; + tmp.type = WC_REFERENCE; + tmp.content.ref = ref; wc = asn1p_wsyntx_chunk_clone(&tmp); } else { wc = asn1p_wsyntx_chunk_new(); - if(wc) wc->ref = ref; + if(wc) { + wc->type = WC_REFERENCE; + wc->content.ref = ref; + } } return wc; @@ -119,17 +122,31 @@ asn1p_wsyntx_chunk_frombuf(char *buf, int len, int do_copy) { if(do_copy) { static asn1p_wsyntx_chunk_t tmp; - tmp.buf = buf; - tmp.len = len; + tmp.type = WC_LITERAL; + tmp.content.token = buf; wc = asn1p_wsyntx_chunk_clone(&tmp); } else { wc = asn1p_wsyntx_chunk_new(); if(wc) { - wc->buf = buf; - wc->len = len; + wc->type = WC_LITERAL; + wc->content.token = buf; } } return wc; } + +asn1p_wsyntx_chunk_t * +asn1p_wsyntx_chunk_fromsyntax(asn1p_wsyntx_t *syntax) { + asn1p_wsyntx_chunk_t *wc; + + wc = asn1p_wsyntx_chunk_new(); + if(wc) { + wc->type = WC_OPTIONALGROUP; + wc->content.syntax = syntax; + } + + return wc; +} + diff --git a/libasn1parser/asn1p_class.h b/libasn1parser/asn1p_class.h index 9448d9a9..ca311fe3 100644 --- a/libasn1parser/asn1p_class.h +++ b/libasn1parser/asn1p_class.h @@ -10,15 +10,21 @@ * WITH SYNTAX free-form chunks. */ typedef struct asn1p_wsyntx_chunk_s { + enum { + WC_LITERAL, + WC_REFERENCE, + WC_OPTIONALGROUP + } type; /* - * It could be the union, but the story is: - * if ref is here, the ref is used. - * Otherwise, buf/len is used. + * WC_LITERAL -> {buf, len} + * WC_REFERENCE -> {ref} + * WC_OPTIONALGROUP -> {syntax} */ - asn1p_ref_t *ref; - - char *buf; - int len; + union { + char *token; + asn1p_ref_t *ref; + struct asn1p_wsyntx_s *syntax; + } content; TQ_ENTRY(struct asn1p_wsyntx_chunk_s) next; } asn1p_wsyntx_chunk_t; @@ -47,7 +53,8 @@ asn1p_wsyntx_t *asn1p_wsyntx_clone(asn1p_wsyntx_t *); * -1: Failure to add component (refer to errno) */ asn1p_wsyntx_chunk_t *asn1p_wsyntx_chunk_fromref(asn1p_ref_t *ref, int do_copy); -asn1p_wsyntx_chunk_t *asn1p_wsyntx_chunk_frombuf(char *buf, int len, int do_copy); +asn1p_wsyntx_chunk_t *asn1p_wsyntx_chunk_frombuf(char *buf, int len, int _copy); +asn1p_wsyntx_chunk_t *asn1p_wsyntx_chunk_fromsyntax(asn1p_wsyntx_t *syntax); #endif /* ASN1_PARSER_CLASS_H */ diff --git a/libasn1parser/asn1p_l.c b/libasn1parser/asn1p_l.c index 4ba1ec16..9eea6cad 100644 --- a/libasn1parser/asn1p_l.c +++ b/libasn1parser/asn1p_l.c @@ -312,149 +312,151 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 133 -#define YY_END_OF_BUFFER 134 -static yyconst short int yy_acclist[1240] = +#define YY_NUM_RULES 137 +#define YY_END_OF_BUFFER 138 +static yyconst short int yy_acclist[1258] = { 0, - 134, 132, 133, 127, 132, 133, 127, 133, 130, 132, - 133, 19, 132, 133, 130, 132, 133, 132, 133, 130, - 132, 133, 132, 133, 130, 132, 133, 132, 133, 33, - 132, 133, 32, 132, 133, 130, 132, 133, 132, 133, - 119, 120, 132, 133, 119, 120, 132, 133, 119, 120, - 132, 133, 119, 120, 132, 133, 119, 120, 132, 133, - 119, 120, 132, 133, 119, 120, 132, 133, 119, 120, - 132, 133, 119, 120, 132, 133, 119, 120, 132, 133, - 119, 120, 132, 133, 119, 120, 132, 133, 119, 120, - 132, 133, 119, 120, 132, 133, 119, 120, 132, 133, + 138, 136, 137, 131, 136, 137, 131, 137, 134, 136, + 137, 19, 136, 137, 134, 136, 137, 136, 137, 134, + 136, 137, 136, 137, 134, 136, 137, 136, 137, 33, + 136, 137, 32, 136, 137, 134, 136, 137, 136, 137, + 119, 120, 136, 137, 119, 120, 136, 137, 119, 120, + 136, 137, 119, 120, 136, 137, 119, 120, 136, 137, + 119, 120, 136, 137, 119, 120, 136, 137, 119, 120, + 136, 137, 119, 120, 136, 137, 119, 120, 136, 137, + 119, 120, 136, 137, 119, 120, 136, 137, 119, 120, + 136, 137, 119, 120, 136, 137, 119, 120, 136, 137, - 119, 120, 132, 133, 119, 120, 132, 133, 119, 120, - 132, 133, 119, 120, 132, 133, 118, 132, 133, 130, - 132, 133, 9, 132, 133, 6, 133, 6, 132, 133, - 8, 132, 133, 8, 132, 133, 11, 13, 132, 133, - 11, 133, 13, 132, 133, 13, 132, 133, 13, 132, - 133, 21, 132, 133, 21, 133, 22, 132, 133, 16, - 132, 133, 16, 133, 18, 132, 133, 18, 132, 133, - 14, 132, 133, 15, 132, 133, 25, 27, 132, 133, - 27, 132, 133, 28, 133, 25, 26, 27, 132, 133, - 25, 26, 27, 132, 133, 124, 132, 133, 125, 132, + 119, 120, 136, 137, 119, 120, 136, 137, 119, 120, + 136, 137, 119, 120, 136, 137, 118, 136, 137, 134, + 136, 137, 9, 136, 137, 6, 137, 6, 136, 137, + 8, 136, 137, 8, 136, 137, 11, 13, 136, 137, + 11, 137, 13, 136, 137, 13, 136, 137, 13, 136, + 137, 21, 136, 137, 21, 137, 22, 136, 137, 16, + 136, 137, 16, 137, 18, 136, 137, 18, 136, 137, + 14, 136, 137, 15, 136, 137, 25, 27, 136, 137, + 27, 136, 137, 28, 137, 25, 26, 27, 136, 137, + 25, 26, 27, 136, 137, 129, 136, 137, 129, 137, - 133, 125, 133, 132, 133, 126, 132, 133, 127, 19, - 19, 116, 117, 5, 31, 123, 10, 32, 119, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 43, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 120, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 120, 119, - 120, 119, 120, 88, 119, 120, 119, 120, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 120, 119, 120, - - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 120, 119, 120, 119, 120, 120, - 120, 119, 120, 118, 9, 7, 7, 12, 21, 20, - 16, 25, 25, 26, 25, 26, 124, 125, 131, 116, - 117, 31, 122, 121, 119, 120, 120, 119, 120, 35, - 119, 120, 36, 119, 120, 119, 120, 119, 120, 119, - 120, 40, 119, 120, 119, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 57, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 120, - - 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 80, 119, 120, 81, 119, - 120, 119, 120, 120, 119, 120, 119, 120, 119, 120, - 120, 119, 120, 91, 119, 120, 119, 120, 119, 120, - 119, 120, 120, 119, 120, 119, 120, 119, 120, 99, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 120, 119, 120, 119, 120, 119, - 120, 120, 120, 120, 119, 120, 118, 3, 17, 25, - 26, 24, 25, 26, 116, 117, 30, 29, 2, 1, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 65, 119, 120, 120, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 83, 119, 120, - 120, 119, 120, 119, 120, 119, 120, 120, 119, 120, - 119, 120, 119, 120, 119, 120, 120, 96, 119, 120, - 119, 120, 119, 120, 100, 119, 120, 119, 120, 119, - 120, 119, 120, 104, 119, 120, 106, 119, 120, 120, - - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 120, 120, 120, 115, 119, 120, 3, 25, 26, 119, - 120, 119, 120, 119, 120, 39, 119, 120, 120, 119, - 120, 119, 120, 119, 120, 46, 119, 120, 119, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 64, 119, 120, 120, 120, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 120, 119, 120, 87, 119, 120, 119, 120, 120, 119, - - 120, 119, 120, 119, 120, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 120, 120, 107, 119, 120, 119, - 120, 119, 120, 120, 119, 120, 120, 120, 120, 128, - 25, 26, 34, 119, 120, 119, 120, 119, 120, 120, - 119, 120, 119, 120, 45, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 59, 119, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 120, 120, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - - 120, 120, 85, 119, 120, 119, 120, 120, 119, 120, + 136, 137, 125, 136, 137, 136, 137, 136, 137, 124, + 136, 137, 127, 136, 137, 128, 136, 137, 126, 136, + 137, 130, 136, 137, 131, 19, 19, 116, 117, 5, + 31, 123, 10, 32, 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, 120, 119, 120, 119, - 120, 101, 119, 120, 102, 119, 120, 120, 120, 108, - 119, 120, 119, 120, 120, 120, 120, 120, 120, 25, - 26, 119, 120, 119, 120, 120, 42, 119, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 51, 119, 120, - 52, 119, 120, 119, 120, 119, 120, 55, 119, 120, - 119, 120, 119, 120, 119, 120, 61, 119, 120, 119, - 120, 119, 120, 120, 120, 120, 119, 120, 119, 120, - 72, 119, 120, 73, 119, 120, 119, 120, 119, 120, + 120, 119, 120, 119, 120, 43, 119, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 120, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 120, 119, 120, 119, 120, 88, - 119, 120, 77, 119, 120, 119, 120, 119, 120, 119, - 120, 120, 119, 120, 120, 90, 119, 120, 119, 120, - 93, 119, 120, 95, 119, 120, 120, 119, 120, 119, - 120, 120, 120, 119, 120, 111, 120, 120, 120, 120, - 120, 25, 26, 119, 120, 119, 120, 120, 119, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 54, 119, - 120, 119, 120, 119, 120, 60, 119, 120, 119, 120, - 63, 119, 120, 120, 120, 120, 120, 119, 120, 71, - 119, 120, 74, 119, 120, 75, 119, 120, 119, 120, - 119, 120, 120, 119, 120, 120, 89, 119, 120, 120, - - 119, 120, 120, 119, 120, 98, 119, 120, 120, 120, - 119, 120, 120, 120, 120, 120, 25, 26, 119, 120, - 38, 119, 120, 41, 120, 44, 119, 120, 47, 119, + 119, 120, 119, 120, 120, 119, 120, 119, 120, 119, + 120, 119, 120, 120, 119, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 120, 119, 120, 119, 120, 120, 120, 119, 120, 118, + 9, 7, 7, 12, 21, 20, 16, 25, 25, 26, + 25, 26, 129, 5, 124, 135, 116, 117, 31, 122, + 121, 119, 120, 120, 119, 120, 35, 119, 120, 36, + 119, 120, 119, 120, 119, 120, 119, 120, 40, 119, + 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 120, 120, 120, 69, 120, 119, 120, 119, 120, - 119, 120, 120, 119, 120, 120, 120, 119, 120, 120, - 103, 120, 120, 109, 119, 120, 120, 120, 120, 120, - 129, 25, 119, 120, 48, 119, 120, 119, 120, 50, - 119, 120, 119, 120, 119, 120, 58, 119, 120, 119, - 120, 120, 120, 120, 70, 119, 120, 119, 120, 119, - 120, 120, 119, 120, 120, 120, 119, 120, 120, 119, - 120, 120, 112, 120, 120, 120, 120, 25, 37, 119, - 120, 49, 119, 120, 53, 119, 120, 119, 120, 119, - 120, 120, 120, 120, 119, 120, 119, 120, 120, 119, - 120, 120, 120, 119, 120, 120, 119, 120, 120, 120, - 120, 120, 25, 119, 120, 119, 120, 120, 120, 120, - 76, 119, 120, 78, 119, 120, 79, 120, 119, 120, - 120, 120, 119, 120, 120, 97, 119, 120, 120, 120, - 120, 120, 25, 119, 120, 62, 119, 120, 67, 120, - 120, 68, 120, 119, 120, 84, 120, 120, 92, 119, + 120, 57, 119, 120, 119, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 120, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 119, 120, 80, 119, 120, 81, 119, 120, 119, 120, + 120, 119, 120, 119, 120, 119, 120, 120, 119, 120, + 91, 119, 120, 119, 120, 119, 120, 119, 120, 120, + 119, 120, 119, 120, 119, 120, 99, 119, 120, 119, + 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, + 120, 120, 119, 120, 119, 120, 119, 120, 120, 120, + 120, 119, 120, 118, 3, 17, 25, 26, 24, 25, - 120, 120, 105, 120, 120, 120, 114, 120, 25, 119, - 120, 120, 82, 119, 120, 120, 120, 120, 113, 120, - 25, 119, 120, 66, 120, 120, 94, 120, 110, 120, - 25, 56, 119, 120, 86, 120, 23, 25, 4 + 26, 124, 116, 117, 30, 29, 2, 1, 119, 120, + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 119, 120, 65, 119, 120, 120, 120, 119, 120, 119, + 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, + 120, 119, 120, 119, 120, 83, 119, 120, 120, 119, + 120, 119, 120, 119, 120, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 120, 96, 119, 120, 119, 120, + + 119, 120, 100, 119, 120, 119, 120, 119, 120, 119, + 120, 104, 119, 120, 106, 119, 120, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 119, 120, 120, 120, + 120, 115, 119, 120, 3, 25, 26, 119, 120, 119, + 120, 119, 120, 39, 119, 120, 120, 119, 120, 119, + 120, 119, 120, 46, 119, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 119, 120, 64, 119, 120, 120, 120, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + + 119, 120, 119, 120, 119, 120, 119, 120, 120, 119, + 120, 87, 119, 120, 119, 120, 120, 119, 120, 119, + 120, 119, 120, 120, 119, 120, 119, 120, 119, 120, + 119, 120, 120, 120, 107, 119, 120, 119, 120, 119, + 120, 120, 119, 120, 120, 120, 120, 132, 25, 26, + 34, 119, 120, 119, 120, 119, 120, 120, 119, 120, + 119, 120, 45, 119, 120, 119, 120, 119, 120, 119, + 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, + 120, 119, 120, 119, 120, 59, 119, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 120, 120, 120, 119, + + 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, + 120, 119, 120, 119, 120, 119, 120, 119, 120, 120, + 85, 119, 120, 119, 120, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 120, 119, 120, 119, 120, 101, + 119, 120, 102, 119, 120, 120, 120, 108, 119, 120, + 119, 120, 120, 120, 120, 120, 120, 25, 26, 119, + 120, 119, 120, 120, 42, 119, 120, 119, 120, 119, + 120, 119, 120, 119, 120, 51, 119, 120, 52, 119, + 120, 119, 120, 119, 120, 55, 119, 120, 119, 120, + 119, 120, 119, 120, 61, 119, 120, 119, 120, 119, + + 120, 120, 120, 120, 119, 120, 119, 120, 72, 119, + 120, 73, 119, 120, 119, 120, 119, 120, 119, 120, + 77, 119, 120, 119, 120, 119, 120, 119, 120, 120, + 119, 120, 120, 90, 119, 120, 119, 120, 93, 119, + 120, 95, 119, 120, 120, 119, 120, 119, 120, 120, + 120, 119, 120, 111, 120, 120, 120, 120, 120, 25, + 26, 119, 120, 119, 120, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 54, 119, 120, 119, + 120, 119, 120, 60, 119, 120, 119, 120, 63, 119, + 120, 120, 120, 120, 120, 119, 120, 71, 119, 120, + + 74, 119, 120, 75, 119, 120, 119, 120, 119, 120, + 120, 119, 120, 120, 89, 119, 120, 120, 119, 120, + 120, 119, 120, 98, 119, 120, 120, 120, 119, 120, + 120, 120, 120, 120, 25, 26, 119, 120, 38, 119, + 120, 41, 120, 44, 119, 120, 47, 119, 120, 119, + 120, 119, 120, 119, 120, 119, 120, 119, 120, 120, + 120, 120, 69, 120, 119, 120, 119, 120, 119, 120, + 120, 119, 120, 120, 120, 119, 120, 120, 103, 120, + 120, 109, 119, 120, 120, 120, 120, 120, 133, 25, + 119, 120, 48, 119, 120, 119, 120, 50, 119, 120, + + 119, 120, 119, 120, 58, 119, 120, 119, 120, 120, + 120, 120, 70, 119, 120, 119, 120, 119, 120, 120, + 119, 120, 120, 120, 119, 120, 120, 119, 120, 120, + 112, 120, 120, 120, 120, 25, 37, 119, 120, 49, + 119, 120, 53, 119, 120, 119, 120, 119, 120, 120, + 120, 120, 119, 120, 119, 120, 120, 119, 120, 120, + 120, 119, 120, 120, 119, 120, 120, 120, 120, 120, + 25, 119, 120, 119, 120, 120, 120, 120, 76, 119, + 120, 78, 119, 120, 79, 120, 119, 120, 120, 120, + 119, 120, 120, 97, 119, 120, 120, 120, 120, 120, + + 25, 119, 120, 62, 119, 120, 67, 120, 120, 68, + 120, 119, 120, 84, 120, 120, 92, 119, 120, 120, + 105, 120, 120, 120, 114, 120, 25, 119, 120, 120, + 82, 119, 120, 120, 120, 120, 113, 120, 25, 119, + 120, 66, 120, 120, 94, 120, 110, 120, 25, 56, + 119, 120, 86, 120, 23, 25, 4 } ; -static yyconst short int yy_accept[727] = +static yyconst short int yy_accept[736] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 7, @@ -463,79 +465,80 @@ static yyconst short int yy_accept[727] = 73, 77, 81, 85, 89, 93, 97, 101, 105, 109, 113, 117, 120, 123, 126, 128, 131, 134, 137, 141, 143, 146, 149, 152, 155, 157, 160, 163, 165, 168, - 171, 174, 177, 181, 184, 186, 191, 196, 199, 202, - 204, 206, 209, 209, 210, 211, 212, 212, 213, 213, - 214, 214, 214, 215, 216, 217, 218, 219, 219, 219, + 171, 174, 177, 181, 184, 186, 191, 196, 199, 201, + 203, 206, 208, 210, 213, 216, 219, 222, 225, 225, + 226, 227, 228, 228, 229, 229, 230, 230, 230, 231, - 221, 223, 225, 227, 229, 231, 232, 234, 236, 238, - 240, 243, 245, 247, 249, 251, 253, 255, 257, 259, - 261, 262, 263, 265, 267, 269, 271, 273, 275, 277, - 279, 280, 282, 284, 287, 289, 290, 292, 294, 296, - 298, 299, 301, 303, 305, 307, 309, 311, 313, 315, - 316, 318, 320, 321, 322, 324, 324, 325, 325, 325, - 325, 326, 327, 328, 329, 330, 331, 332, 332, 333, - 335, 337, 338, 339, 340, 340, 340, 341, 341, 342, - 342, 342, 342, 342, 343, 344, 345, 347, 348, 350, - 353, 356, 358, 360, 360, 362, 365, 367, 369, 371, + 232, 233, 234, 235, 235, 235, 237, 239, 241, 243, + 245, 247, 248, 250, 252, 254, 256, 259, 261, 263, + 265, 267, 269, 271, 273, 275, 277, 278, 279, 281, + 283, 285, 287, 289, 291, 293, 295, 296, 298, 300, + 303, 305, 306, 308, 310, 312, 314, 315, 317, 319, + 321, 323, 325, 327, 329, 331, 332, 334, 336, 337, + 338, 340, 340, 341, 341, 341, 341, 342, 343, 344, + 345, 346, 347, 348, 348, 349, 351, 353, 354, 355, + 355, 356, 357, 357, 357, 358, 358, 359, 359, 359, + 359, 359, 360, 361, 362, 364, 365, 367, 370, 373, - 373, 375, 377, 379, 381, 383, 385, 388, 390, 392, - 394, 396, 398, 400, 401, 402, 404, 406, 408, 410, - 412, 414, 416, 419, 422, 424, 425, 427, 429, 431, - 432, 434, 437, 439, 441, 443, 444, 446, 448, 450, - 453, 455, 457, 459, 461, 463, 465, 466, 468, 470, - 472, 473, 474, 475, 477, 478, 478, 478, 479, 480, - 482, 485, 485, 486, 487, 488, 489, 490, 491, 491, - 491, 491, 493, 495, 497, 499, 501, 503, 505, 507, + 375, 377, 377, 379, 382, 384, 386, 388, 390, 392, + 394, 396, 398, 400, 402, 405, 407, 409, 411, 413, + 415, 417, 418, 419, 421, 423, 425, 427, 429, 431, + 433, 436, 439, 441, 442, 444, 446, 448, 449, 451, + 454, 456, 458, 460, 461, 463, 465, 467, 470, 472, + 474, 476, 478, 480, 482, 483, 485, 487, 489, 490, + 491, 492, 494, 495, 495, 495, 496, 497, 499, 502, + 503, 503, 504, 505, 506, 507, 508, 509, 509, 509, 509, 511, 513, 515, 517, 519, 521, 523, 525, 527, - 529, 531, 533, 535, 538, 539, 540, 542, 544, 546, + 529, 531, 533, 535, 537, 539, 541, 543, 545, 547, - 548, 550, 552, 554, 556, 558, 561, 562, 564, 566, - 568, 569, 571, 573, 575, 577, 578, 581, 583, 585, - 588, 590, 592, 594, 597, 600, 601, 603, 605, 607, - 609, 611, 612, 613, 614, 617, 617, 617, 617, 617, - 618, 620, 620, 622, 624, 626, 629, 630, 632, 634, - 636, 639, 641, 643, 645, 647, 649, 651, 653, 655, - 657, 659, 661, 663, 665, 668, 669, 670, 671, 673, - 675, 677, 679, 681, 683, 685, 687, 689, 691, 692, - 694, 697, 699, 700, 702, 702, 704, 706, 707, 709, - 711, 713, 715, 716, 717, 720, 722, 724, 725, 727, + 549, 551, 553, 556, 557, 558, 560, 562, 564, 566, + 568, 570, 572, 574, 576, 579, 580, 582, 584, 586, + 587, 589, 591, 593, 595, 596, 599, 601, 603, 606, + 608, 610, 612, 615, 618, 619, 621, 623, 625, 627, + 629, 630, 631, 632, 635, 635, 635, 635, 635, 636, + 638, 638, 640, 642, 644, 647, 648, 650, 652, 654, + 657, 659, 661, 663, 665, 667, 669, 671, 673, 675, + 677, 679, 681, 683, 686, 687, 688, 689, 691, 693, + 695, 697, 699, 701, 703, 705, 707, 709, 710, 712, + 715, 717, 718, 720, 720, 722, 724, 725, 727, 729, - 728, 729, 730, 730, 730, 731, 733, 733, 736, 738, - 740, 741, 743, 745, 748, 750, 752, 754, 756, 758, - 760, 762, 764, 766, 768, 771, 773, 775, 777, 779, - 780, 781, 782, 784, 786, 788, 790, 792, 794, 796, - 798, 800, 802, 802, 803, 806, 808, 809, 811, 813, - 815, 817, 818, 820, 822, 825, 828, 829, 830, 833, - 835, 836, 837, 838, 839, 840, 840, 840, 842, 842, - 844, 846, 847, 850, 852, 854, 856, 858, 861, 864, - 866, 868, 871, 873, 875, 877, 880, 882, 884, 885, - 886, 887, 889, 891, 894, 897, 899, 901, 903, 906, + 731, 733, 734, 735, 738, 740, 742, 743, 745, 746, + 747, 748, 748, 748, 749, 751, 751, 754, 756, 758, + 759, 761, 763, 766, 768, 770, 772, 774, 776, 778, + 780, 782, 784, 786, 789, 791, 793, 795, 797, 798, + 799, 800, 802, 804, 806, 808, 810, 812, 814, 816, + 818, 820, 820, 821, 824, 826, 827, 829, 831, 833, + 835, 836, 838, 840, 843, 846, 847, 848, 851, 853, + 854, 855, 856, 857, 858, 858, 858, 860, 860, 862, + 864, 865, 868, 870, 872, 874, 876, 879, 882, 884, + 886, 889, 891, 893, 895, 898, 900, 902, 903, 904, - 908, 910, 912, 913, 915, 916, 919, 921, 924, 927, - 928, 930, 932, 933, 934, 936, 938, 939, 940, 941, - 942, 942, 944, 944, 946, 948, 949, 951, 953, 955, - 957, 959, 962, 964, 966, 969, 971, 974, 975, 976, - 977, 978, 980, 983, 986, 989, 991, 993, 994, 996, - 997, 1000, 1001, 1003, 1004, 1006, 1009, 1010, 1011, 1013, - 1014, 1015, 1016, 1017, 1017, 1017, 1019, 1019, 1021, 1024, - 1026, 1029, 1032, 1034, 1036, 1038, 1038, 1040, 1042, 1043, - 1044, 1045, 1047, 1049, 1051, 1053, 1054, 1056, 1057, 1058, - 1060, 1061, 1061, 1063, 1064, 1067, 1068, 1069, 1070, 1071, + 905, 907, 909, 912, 915, 917, 919, 921, 924, 926, + 928, 930, 931, 933, 934, 937, 939, 942, 945, 946, + 948, 950, 951, 952, 954, 956, 957, 958, 959, 960, + 960, 962, 962, 964, 966, 967, 969, 971, 973, 975, + 977, 980, 982, 984, 987, 989, 992, 993, 994, 995, + 996, 998, 1001, 1004, 1007, 1009, 1011, 1012, 1014, 1015, + 1018, 1019, 1021, 1022, 1024, 1027, 1028, 1029, 1031, 1032, + 1033, 1034, 1035, 1035, 1035, 1037, 1037, 1039, 1042, 1044, + 1047, 1050, 1052, 1054, 1056, 1056, 1058, 1060, 1061, 1062, + 1063, 1065, 1067, 1069, 1071, 1072, 1074, 1075, 1076, 1078, - 1071, 1072, 1073, 1073, 1075, 1078, 1080, 1083, 1085, 1087, - 1090, 1092, 1093, 1094, 1095, 1098, 1100, 1102, 1103, 1105, - 1106, 1107, 1109, 1110, 1112, 1113, 1115, 1116, 1117, 1118, - 1119, 1119, 1122, 1125, 1128, 1130, 1132, 1133, 1134, 1135, - 1137, 1139, 1140, 1142, 1143, 1144, 1146, 1147, 1149, 1150, - 1151, 1152, 1153, 1154, 1154, 1156, 1158, 1159, 1160, 1161, - 1164, 1167, 1169, 1171, 1172, 1173, 1175, 1176, 1179, 1180, - 1181, 1182, 1183, 1184, 1184, 1186, 1189, 1191, 1192, 1194, - 1196, 1198, 1199, 1202, 1203, 1205, 1206, 1207, 1209, 1210, - 1210, 1212, 1213, 1216, 1217, 1218, 1219, 1221, 1222, 1222, + 1079, 1079, 1081, 1082, 1085, 1086, 1087, 1088, 1089, 1089, + 1090, 1091, 1091, 1093, 1096, 1098, 1101, 1103, 1105, 1108, + 1110, 1111, 1112, 1113, 1116, 1118, 1120, 1121, 1123, 1124, + 1125, 1127, 1128, 1130, 1131, 1133, 1134, 1135, 1136, 1137, + 1137, 1140, 1143, 1146, 1148, 1150, 1151, 1152, 1153, 1155, + 1157, 1158, 1160, 1161, 1162, 1164, 1165, 1167, 1168, 1169, + 1170, 1171, 1172, 1172, 1174, 1176, 1177, 1178, 1179, 1182, + 1185, 1187, 1189, 1190, 1191, 1193, 1194, 1197, 1198, 1199, + 1200, 1201, 1202, 1202, 1204, 1207, 1209, 1210, 1212, 1214, + 1216, 1217, 1220, 1221, 1223, 1224, 1225, 1227, 1228, 1228, - 1224, 1226, 1227, 1229, 1231, 1232, 1232, 1235, 1237, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, - 1239, 1239, 1239, 1239, 1240, 1240 + 1230, 1231, 1234, 1235, 1236, 1237, 1239, 1240, 1240, 1242, + 1244, 1245, 1247, 1249, 1250, 1250, 1253, 1255, 1257, 1257, + 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, + 1257, 1257, 1257, 1258, 1258 } ; static yyconst int yy_ec[256] = @@ -549,11 +552,11 @@ static yyconst int yy_ec[256] = 27, 28, 1, 10, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 10, 1, 55, 56, 1, 1, 57, 58, 59, 60, + 55, 1, 56, 57, 1, 1, 58, 59, 60, 61, - 61, 62, 63, 64, 65, 66, 62, 67, 68, 69, - 70, 71, 62, 72, 73, 74, 75, 76, 62, 77, - 62, 78, 79, 80, 81, 1, 1, 1, 1, 1, + 62, 63, 64, 65, 66, 67, 63, 68, 69, 70, + 71, 72, 63, 73, 74, 75, 76, 77, 63, 78, + 63, 79, 80, 81, 82, 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, @@ -570,686 +573,693 @@ static yyconst int yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst int yy_meta[82] = +static yyconst int yy_meta[83] = { 0, - 1, 2, 3, 4, 4, 1, 5, 6, 7, 1, - 1, 1, 8, 1, 1, 9, 9, 9, 9, 9, - 9, 9, 9, 10, 1, 1, 10, 1, 11, 11, - 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 1, 1, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 13, 1, - 14 + 1, 2, 3, 4, 4, 1, 5, 1, 6, 1, + 1, 1, 7, 1, 1, 8, 8, 8, 8, 8, + 8, 8, 8, 9, 1, 1, 9, 1, 10, 10, + 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 1, 1, 1, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, + 1, 13 } ; -static yyconst short int yy_base[752] = +static yyconst short int yy_base[761] = { 0, - 0, 0, 79, 82, 85, 96, 91, 93, 90, 100, - 88, 102, 183, 264, 120, 133, 1529, 1519, 140, 148, - 1518, 1516, 337, 156, 4350, 157, 1507, 102, 4350, 201, - 1495, 4350, 403, 200, 263, 281, 206, 287, 452, 90, - 308, 458, 185, 474, 496, 497, 514, 531, 534, 549, - 557, 1505, 605, 0, 4350, 4350, 1504, 1503, 4350, 4350, - 1500, 1503, 4350, 0, 0, 1492, 0, 0, 1472, 4350, - 4350, 4350, 0, 4350, 4350, 628, 708, 0, 200, 278, - 276, 4350, 1488, 356, 0, 1486, 1484, 1465, 91, 1464, - 642, 1466, 101, 644, 1457, 4350, 652, 1442, 732, 646, + 0, 0, 80, 83, 86, 97, 92, 94, 91, 101, + 89, 103, 185, 267, 349, 0, 1572, 1561, 119, 129, + 1557, 1555, 423, 137, 4413, 138, 1548, 103, 4413, 156, + 1537, 4413, 490, 184, 208, 190, 257, 285, 540, 205, + 546, 567, 561, 277, 585, 600, 606, 631, 634, 623, + 654, 1547, 697, 0, 4413, 4413, 1546, 1540, 4413, 4413, + 1536, 1538, 4413, 0, 0, 1541, 0, 0, 1522, 4413, + 4413, 4413, 0, 4413, 4413, 720, 801, 160, 199, 110, + 4413, 1529, 1529, 1526, 4413, 4413, 4413, 4413, 1531, 203, + 0, 1530, 1525, 1514, 86, 1510, 433, 1512, 123, 321, - 647, 662, 698, 663, 697, 1454, 713, 726, 729, 737, - 781, 784, 802, 799, 815, 823, 838, 844, 841, 859, - 187, 97, 874, 877, 885, 900, 911, 922, 928, 939, - 158, 952, 955, 968, 976, 169, 979, 992, 1003, 1016, - 219, 1032, 1038, 1049, 1055, 1066, 1077, 1083, 1094, 241, - 1100, 1116, 239, 274, 1115, 0, 1453, 1164, 1176, 1188, - 0, 4350, 1452, 4350, 0, 4350, 0, 1437, 0, 1416, - 322, 0, 425, 4350, 1443, 0, 1441, 0, 1440, 110, - 1415, 297, 119, 1154, 4350, 4350, 1199, 1434, 1183, 1184, - 1199, 1200, 1248, 1432, 1256, 1259, 1272, 1280, 1288, 1296, + 1506, 4413, 689, 1487, 825, 709, 710, 725, 738, 741, + 756, 1499, 800, 806, 821, 829, 875, 878, 896, 893, + 909, 917, 932, 938, 935, 953, 112, 157, 968, 971, + 979, 994, 1005, 1016, 1022, 1033, 153, 1046, 1049, 1062, + 1070, 113, 1073, 1086, 1097, 1110, 102, 1126, 1132, 1143, + 1149, 1160, 1171, 1177, 1188, 116, 1194, 1210, 218, 242, + 1209, 0, 1493, 1258, 1270, 1282, 0, 4413, 1491, 4413, + 0, 4413, 0, 1476, 0, 1455, 254, 256, 4413, 0, + 1480, 4413, 1478, 0, 1477, 0, 1476, 114, 1451, 299, + 214, 801, 4413, 4413, 1293, 1471, 1277, 1278, 1293, 1294, - 1309, 1317, 1320, 1341, 1342, 1357, 1363, 1374, 1380, 1391, - 1397, 1408, 1419, 200, 215, 1432, 1440, 1443, 1458, 1461, - 1464, 1490, 1482, 1493, 1506, 281, 1514, 1527, 1535, 302, - 1538, 1551, 1559, 1567, 1575, 244, 1588, 1591, 1599, 1612, - 1620, 1628, 1636, 1649, 1657, 1670, 445, 1678, 1694, 1695, - 155, 470, 352, 1710, 1431, 1753, 1761, 1430, 4350, 113, - 1400, 1381, 1419, 1415, 4350, 4350, 4350, 4350, 486, 293, - 1379, 1755, 1756, 1771, 1777, 1788, 1794, 1810, 1811, 1826, - 1834, 1842, 1858, 1855, 1866, 1879, 1882, 1897, 1903, 1914, - 1920, 1931, 1946, 1952, 246, 232, 1963, 1969, 1984, 1985, + 1343, 1470, 1351, 1354, 1367, 1375, 1383, 1391, 1404, 1412, + 1415, 1436, 1437, 1452, 1458, 1469, 1475, 1486, 1492, 1503, + 1514, 243, 216, 1527, 1535, 1538, 1553, 1556, 1559, 1585, + 1577, 1588, 1601, 251, 1609, 1622, 1630, 270, 1633, 1646, + 1654, 1662, 1670, 240, 1683, 1686, 1694, 1707, 1715, 1723, + 1731, 1744, 1752, 1765, 532, 1773, 1789, 1790, 104, 558, + 223, 1805, 1462, 1848, 1856, 1461, 4413, 220, 1430, 1458, + 1413, 1455, 1447, 4413, 4413, 4413, 4413, 315, 217, 1411, + 1850, 1851, 1866, 1872, 1883, 1889, 1905, 1906, 1921, 1929, + 1937, 1953, 1950, 1961, 1974, 1977, 1992, 1998, 2009, 2015, - 2000, 2006, 2021, 2024, 2032, 2045, 418, 2053, 2056, 2069, - 105, 2077, 2090, 2098, 2106, 446, 2114, 2122, 2135, 2143, - 2146, 2164, 2161, 2167, 2182, 496, 2185, 2188, 2203, 2209, - 2220, 472, 322, 193, 2226, 2274, 2296, 2318, 2330, 1412, - 309, 1377, 2314, 2329, 2345, 2342, 471, 2363, 2366, 2369, - 2384, 2387, 2395, 2408, 2416, 2429, 2440, 2446, 2457, 2468, - 2483, 2489, 2500, 2506, 2521, 498, 484, 497, 2522, 2542, - 2539, 2560, 2559, 2575, 2581, 2592, 2605, 2616, 516, 2613, - 2629, 2637, 521, 2645, 480, 2653, 2666, 502, 2679, 2682, - 2690, 2703, 540, 535, 2714, 2720, 2731, 522, 2742, 544, + 2026, 2041, 2047, 431, 533, 2058, 2064, 2079, 2080, 2095, + 2101, 2116, 2119, 2127, 2140, 432, 2148, 2151, 2164, 559, + 2172, 2185, 2193, 2201, 502, 2209, 2217, 2230, 2238, 2241, + 2259, 2256, 2262, 2277, 504, 2280, 2283, 2300, 2306, 2317, + 560, 503, 420, 2333, 2376, 2398, 2420, 2432, 1437, 303, + 1407, 2416, 2432, 2448, 2417, 568, 2454, 2469, 2472, 2480, + 2493, 2501, 2509, 2522, 2530, 2543, 2551, 2559, 2567, 2582, + 2588, 2599, 2605, 2620, 534, 572, 593, 2621, 2641, 2638, + 2659, 2658, 2674, 2680, 2691, 2704, 2715, 613, 2712, 2728, + 2736, 570, 2744, 586, 2752, 2765, 599, 2778, 2781, 2789, - 537, 499, 677, 2785, 4350, 563, 1400, 2769, 2785, 2782, - 552, 2793, 2806, 2809, 2826, 2832, 2843, 2849, 2864, 2870, - 2887, 2893, 2904, 2910, 2921, 2927, 2938, 2944, 2960, 618, - 559, 635, 2961, 2976, 2982, 2993, 2999, 3014, 3020, 3031, - 3046, 3052, 620, 571, 3063, 3079, 296, 3076, 1369, 3087, - 3100, 591, 3108, 3123, 3126, 3129, 665, 508, 3144, 3147, - 589, 688, 711, 700, 759, 3195, 3207, 1367, 1377, 3191, - 3204, 685, 3207, 3222, 3228, 3239, 3245, 3256, 3262, 3273, - 3284, 3290, 3301, 3307, 3318, 3329, 3335, 3346, 684, 573, - 713, 3352, 3363, 3374, 3380, 3391, 3397, 3412, 3413, 3428, + 2802, 595, 608, 2813, 2819, 2830, 277, 2841, 615, 587, + 619, 759, 2884, 4413, 397, 1430, 2868, 2884, 2881, 656, + 2892, 2905, 2908, 2925, 2931, 2942, 2948, 2963, 2969, 2986, + 2992, 3003, 3009, 3020, 3026, 3037, 3043, 3059, 622, 682, + 672, 3060, 3075, 3081, 3092, 3098, 3113, 3119, 3130, 3145, + 3151, 723, 710, 3162, 3178, 711, 3175, 1401, 3186, 3199, + 638, 3207, 3222, 3225, 3228, 728, 753, 3243, 3246, 771, + 724, 760, 775, 776, 3294, 3306, 1399, 1408, 3290, 3303, + 611, 3306, 3321, 3327, 3338, 3344, 3355, 3361, 3372, 3383, + 3389, 3400, 3406, 3417, 3428, 3434, 3445, 862, 759, 782, - 3434, 1360, 697, 3445, 774, 3451, 1364, 3462, 3473, 716, - 3479, 3494, 804, 772, 3500, 1383, 841, 575, 739, 805, - 3543, 780, 0, 3537, 3538, 799, 3553, 3561, 3564, 3577, - 3585, 3593, 3601, 3614, 3622, 3630, 3638, 763, 834, 821, - 837, 3651, 3659, 3662, 3675, 3683, 3686, 825, 1361, 848, - 3699, 823, 1357, 863, 3720, 3707, 896, 864, 3723, 866, - 853, 885, 915, 3771, 1035, 120, 1346, 3755, 3766, 1376, - 3772, 3783, 3789, 3804, 3805, 926, 3820, 3821, 878, 900, - 930, 1375, 3836, 3844, 3859, 898, 1343, 933, 932, 1337, - 920, 313, 1364, 943, 3860, 923, 960, 952, 963, 1232, + 3451, 3462, 3473, 3479, 3490, 3496, 3511, 3512, 3527, 3533, + 1396, 819, 3544, 849, 3550, 1403, 3561, 3567, 779, 3582, + 3588, 790, 832, 3604, 1423, 840, 634, 786, 863, 3638, + 110, 0, 3632, 3633, 867, 3648, 3656, 3659, 3672, 3680, + 3688, 3696, 3709, 3717, 3725, 3733, 854, 928, 855, 868, + 3746, 3754, 3757, 3770, 3778, 3781, 766, 1396, 931, 3794, + 899, 1389, 937, 3815, 3802, 903, 939, 3818, 900, 935, + 942, 941, 3866, 1027, 943, 1376, 3850, 3861, 1407, 3867, + 3878, 3884, 3899, 3900, 987, 3915, 3916, 977, 978, 1014, + 1405, 3931, 3939, 3954, 1042, 1375, 1026, 1009, 1368, 947, - 4350, 1345, 1313, 3875, 3876, 3891, 3892, 3907, 1320, 3908, - 3923, 965, 845, 998, 3929, 3940, 3951, 924, 1313, 1001, - 987, 1317, 974, 1315, 1037, 1335, 1016, 1042, 1044, 1303, - 1273, 3957, 3968, 3974, 1301, 3985, 962, 1057, 1000, 3996, - 4002, 1098, 1305, 1031, 1064, 1293, 1079, 1295, 1051, 1118, - 1126, 1109, 1283, 1245, 1263, 4017, 1099, 1166, 1139, 4018, - 4033, 1296, 1239, 1140, 1062, 1231, 1188, 0, 1232, 1239, - 1225, 1268, 1235, 1221, 1209, 4034, 1241, 1060, 1234, 1193, - 1207, 1141, 0, 1237, 1206, 1238, 1272, 1205, 1171, 1075, - 1092, 1128, 0, 1209, 1302, 1310, 1075, 1041, 1010, 1027, + 643, 1395, 1059, 3955, 1061, 958, 1048, 1065, 1243, 4413, + 1375, 1342, 3970, 3971, 3986, 3987, 4002, 1359, 4003, 4018, + 1054, 1020, 1067, 4024, 4035, 4046, 1013, 1357, 1083, 1072, + 1352, 1088, 1343, 1092, 1366, 1094, 1111, 1116, 1335, 1305, + 4052, 4063, 4069, 1334, 4080, 1024, 430, 1129, 4091, 4097, + 1144, 1338, 1135, 1140, 1326, 1121, 1315, 1152, 1154, 1148, + 1165, 1304, 1272, 1296, 4112, 1203, 1190, 1220, 4113, 4128, + 1328, 1292, 1251, 979, 1261, 1229, 0, 1252, 1283, 1242, + 1284, 1265, 1249, 1263, 4129, 1260, 1197, 1256, 1215, 1212, + 1210, 0, 1258, 1183, 1259, 1318, 1151, 1105, 1070, 1088, - 1041, 1208, 1038, 971, 940, 791, 0, 843, 0, 691, - 590, 542, 569, 452, 454, 434, 412, 357, 267, 296, - 697, 150, 118, 4350, 4350, 4083, 4097, 4111, 4125, 4139, - 4153, 4167, 4180, 4184, 4196, 4210, 4224, 4236, 4248, 4260, - 4265, 4270, 4274, 4279, 4283, 4287, 4291, 4303, 4310, 4322, - 4335 + 1270, 0, 1158, 1326, 1337, 1046, 1014, 991, 906, 901, + 1257, 864, 861, 753, 686, 0, 712, 0, 543, 489, + 440, 407, 376, 380, 371, 365, 271, 257, 1042, 1158, + 135, 124, 4413, 4413, 4178, 4191, 4204, 4217, 4230, 4243, + 4255, 4259, 4270, 4283, 4296, 4307, 4318, 4323, 4328, 4333, + 4337, 4342, 4346, 4350, 4354, 4358, 4369, 4376, 4387, 4399 } ; -static yyconst short int yy_def[752] = +static yyconst short int yy_def[761] = { 0, - 725, 1, 726, 726, 726, 726, 727, 727, 728, 728, - 729, 729, 730, 730, 731, 731, 725, 725, 725, 725, - 725, 732, 725, 733, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 33, 33, 33, 33, 33, 33, 33, + 734, 1, 735, 735, 735, 735, 736, 736, 737, 737, + 738, 738, 739, 739, 734, 15, 734, 734, 734, 734, + 734, 740, 734, 741, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 734, 725, 735, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 736, 736, 725, 737, 737, 725, 725, - 725, 725, 738, 725, 725, 739, 739, 740, 725, 725, - 23, 725, 725, 725, 732, 732, 725, 741, 725, 742, - 733, 733, 725, 725, 725, 725, 725, 725, 743, 33, + 33, 742, 734, 743, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 744, 744, 734, 745, 745, 734, 734, + 734, 734, 746, 734, 734, 747, 747, 734, 734, 23, + 734, 734, 734, 748, 734, 734, 734, 734, 734, 734, + 740, 740, 734, 749, 734, 750, 741, 741, 734, 734, - 33, 33, 33, 33, 33, 744, 33, 33, 33, 33, + 734, 734, 734, 734, 751, 33, 33, 33, 33, 33, + 33, 752, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 752, 752, 33, 33, + 33, 33, 33, 33, 33, 33, 752, 33, 33, 33, + 33, 752, 33, 33, 33, 33, 752, 33, 33, 33, + 33, 33, 33, 33, 33, 752, 33, 33, 752, 752, + 33, 753, 742, 734, 734, 734, 743, 734, 734, 734, + 744, 734, 745, 734, 746, 77, 77, 734, 734, 754, + 748, 734, 734, 755, 749, 756, 750, 734, 734, 757, + 734, 734, 734, 734, 751, 758, 33, 33, 33, 33, + + 33, 758, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 744, 744, 33, 33, 33, 33, 33, 33, 33, 33, - 744, 33, 33, 33, 33, 744, 33, 33, 33, 33, - 744, 33, 33, 33, 33, 33, 33, 33, 33, 744, - 33, 33, 744, 744, 33, 745, 734, 725, 725, 725, - 735, 725, 725, 725, 736, 725, 737, 725, 738, 77, - 77, 740, 725, 725, 725, 746, 741, 747, 742, 725, - 725, 748, 725, 725, 725, 725, 743, 749, 33, 33, - 33, 33, 33, 749, 33, 33, 33, 33, 33, 33, + 33, 752, 752, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 752, 33, 33, 33, 752, 33, 33, + 33, 33, 33, 752, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 752, 33, 33, 33, 752, 752, + 752, 33, 753, 734, 734, 734, 734, 77, 77, 754, + 734, 755, 756, 734, 734, 734, 734, 757, 734, 734, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + + 33, 33, 33, 752, 752, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 752, 33, 33, 33, 752, + 33, 33, 33, 33, 752, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 752, 33, 33, 33, 33, 33, + 752, 752, 752, 33, 734, 734, 734, 734, 734, 77, + 734, 33, 33, 33, 33, 752, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 752, 752, 752, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 752, 33, 33, + 33, 752, 33, 195, 33, 33, 752, 33, 33, 33, + + 33, 752, 752, 33, 33, 33, 752, 33, 752, 752, + 752, 734, 734, 734, 77, 734, 33, 33, 33, 752, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 752, 752, + 752, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 195, 752, 33, 33, 752, 33, 195, 33, 33, + 752, 33, 33, 33, 33, 752, 752, 33, 33, 752, + 752, 752, 752, 752, 734, 734, 77, 734, 33, 33, + 752, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 752, 752, 752, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 744, 744, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 744, 33, 33, 33, 744, - 33, 33, 33, 33, 33, 744, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 744, 33, 33, 33, - 744, 744, 744, 33, 745, 725, 725, 725, 725, 77, - 77, 725, 746, 747, 725, 725, 725, 725, 748, 725, - 725, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 744, 744, 33, 33, 33, 33, + 195, 752, 33, 752, 33, 195, 33, 33, 752, 33, + 33, 752, 752, 33, 752, 752, 752, 752, 752, 734, + 77, 759, 33, 33, 752, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 752, 752, 752, 752, + 33, 33, 33, 33, 33, 33, 752, 195, 752, 33, + 752, 195, 752, 33, 33, 752, 752, 33, 752, 752, + 752, 752, 734, 760, 77, 734, 33, 33, 752, 33, + 33, 33, 33, 33, 195, 33, 33, 752, 752, 752, + 752, 33, 33, 33, 752, 195, 752, 752, 195, 752, - 33, 33, 33, 33, 33, 33, 744, 33, 33, 33, - 744, 33, 33, 33, 33, 744, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 744, 33, 33, 33, 33, - 33, 744, 744, 744, 33, 725, 725, 725, 725, 725, - 77, 725, 33, 33, 33, 33, 744, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 744, 744, 744, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 744, 33, - 33, 33, 744, 33, 187, 33, 33, 744, 33, 33, - 33, 33, 744, 744, 33, 33, 33, 744, 33, 744, + 195, 752, 752, 33, 752, 752, 752, 752, 734, 734, + 746, 734, 33, 33, 33, 33, 33, 195, 33, 33, + 752, 752, 752, 33, 33, 33, 752, 195, 752, 752, + 195, 752, 195, 752, 752, 752, 752, 752, 746, 734, + 33, 33, 33, 195, 33, 752, 752, 752, 33, 33, + 752, 195, 752, 752, 195, 752, 195, 752, 752, 752, + 752, 746, 734, 195, 33, 752, 752, 752, 33, 33, + 752, 195, 752, 752, 195, 752, 195, 752, 752, 752, + 752, 746, 734, 195, 33, 752, 752, 752, 195, 752, + 752, 195, 752, 752, 752, 752, 752, 746, 734, 195, - 744, 744, 725, 725, 725, 77, 725, 33, 33, 33, - 744, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 744, - 744, 744, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 187, 744, 33, 33, 744, 33, 187, 33, - 33, 744, 33, 33, 33, 33, 744, 744, 33, 33, - 744, 744, 744, 744, 744, 725, 725, 77, 725, 33, - 33, 744, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 744, 744, - 744, 33, 33, 33, 33, 33, 33, 33, 33, 33, - - 33, 187, 744, 33, 744, 33, 187, 33, 33, 744, - 33, 33, 744, 744, 33, 744, 744, 744, 744, 744, - 725, 77, 750, 33, 33, 744, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 744, 744, 744, - 744, 33, 33, 33, 33, 33, 33, 744, 187, 744, - 33, 744, 187, 744, 33, 33, 744, 744, 33, 744, - 744, 744, 744, 725, 751, 77, 725, 33, 33, 744, - 33, 33, 33, 33, 33, 187, 33, 33, 744, 744, - 744, 744, 33, 33, 33, 744, 187, 744, 744, 187, - 744, 187, 744, 744, 33, 744, 744, 744, 744, 725, - - 725, 738, 725, 33, 33, 33, 33, 33, 187, 33, - 33, 744, 744, 744, 33, 33, 33, 744, 187, 744, - 744, 187, 744, 187, 744, 744, 744, 744, 744, 738, - 725, 33, 33, 33, 187, 33, 744, 744, 744, 33, - 33, 744, 187, 744, 744, 187, 744, 187, 744, 744, - 744, 744, 738, 725, 187, 33, 744, 744, 744, 33, - 33, 744, 187, 744, 744, 187, 744, 187, 744, 744, - 744, 744, 738, 725, 187, 33, 744, 744, 744, 187, - 744, 744, 187, 744, 744, 744, 744, 744, 738, 725, - 187, 744, 187, 744, 744, 744, 744, 738, 725, 187, - - 744, 744, 744, 744, 738, 725, 187, 744, 738, 725, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 725, 0, 725, 725, 725, 725, 725, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, - 725 + 752, 195, 752, 752, 752, 752, 746, 734, 195, 752, + 752, 752, 752, 746, 734, 195, 752, 746, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 0, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734 } ; -static yyconst short int yy_nxt[4432] = +static yyconst short int yy_nxt[4496] = { 0, 18, 19, 20, 19, 19, 21, 22, 23, 24, 25, 18, 25, 26, 27, 28, 29, 30, 30, 30, 30, 30, 30, 30, 31, 21, 32, 32, 18, 33, 34, 35, 36, 37, 38, 39, 40, 41, 40, 40, 40, 42, 43, 44, 45, 40, 46, 47, 48, 49, 50, - 51, 40, 40, 40, 21, 21, 52, 52, 52, 52, + 51, 40, 40, 40, 25, 21, 21, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 53, 21, - 25, 55, 56, 56, 55, 56, 56, 55, 56, 56, - 68, 57, 65, 60, 57, 60, 66, 58, 55, 56, + 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, + 21, 25, 55, 56, 56, 55, 56, 56, 55, 56, + 56, 68, 57, 65, 60, 57, 60, 66, 58, 55, - 56, 61, 65, 61, 68, 62, 66, 62, 58, 194, - 83, 69, 96, 182, 70, 87, 63, 194, 63, 100, - 270, 79, 80, 79, 79, 69, 183, 81, 70, 100, - 724, 100, 602, 100, 79, 80, 79, 79, 100, 265, - 81, 84, 84, 84, 84, 266, 89, 271, 83, 84, - 84, 84, 84, 215, 170, 341, 83, 91, 91, 91, - 91, 170, 723, 383, 83, 83, 71, 194, 72, 93, - 194, 91, 91, 94, 94, 94, 94, 94, 94, 94, - 71, 194, 72, 73, 74, 75, 74, 74, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 32, 194, + 56, 56, 61, 65, 61, 68, 62, 66, 62, 58, + 93, 89, 69, 102, 202, 70, 202, 63, 734, 63, + 90, 90, 90, 90, 202, 202, 69, 89, 202, 70, + 90, 90, 90, 90, 734, 190, 733, 89, 97, 97, + 97, 97, 95, 274, 575, 89, 89, 732, 191, 275, + 99, 176, 97, 97, 100, 100, 100, 100, 100, 100, + 100, 178, 178, 178, 178, 202, 734, 244, 71, 202, + 72, 103, 103, 103, 103, 103, 103, 103, 103, 238, + 341, 222, 71, 255, 72, 73, 74, 75, 74, 74, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 82, 173, 173, 173, 173, 194, 73, 73, 73, 73, - 73, 32, 194, 82, 100, 77, 97, 97, 97, 97, - 97, 97, 97, 97, 100, 226, 100, 194, 100, 100, - 332, 194, 107, 130, 230, 100, 108, 73, 73, 100, - 109, 100, 110, 100, 194, 100, 116, 117, 100, 100, - 402, 194, 111, 194, 100, 214, 194, 118, 194, 131, - 295, 74, 73, 74, 73, 74, 75, 74, 74, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 173, - 173, 173, 173, 236, 725, 296, 194, 73, 73, 73, - 73, 73, 100, 194, 270, 367, 77, 721, 112, 268, + 178, 178, 178, 178, 90, 90, 90, 90, 73, 73, + 73, 73, 73, 106, 223, 279, 113, 77, 279, 106, + 114, 234, 121, 106, 115, 106, 116, 106, 202, 106, + 202, 106, 106, 106, 106, 202, 117, 106, 106, 73, + 73, 73, 280, 118, 106, 280, 106, 119, 106, 106, + 120, 106, 202, 106, 202, 202, 106, 178, 178, 178, + 178, 176, 350, 202, 74, 73, 74, 73, 74, 75, + 74, 74, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 202, 259, 268, 269, 106, 305, 343, 202, + 73, 73, 73, 73, 73, 176, 106, 122, 123, 77, - 725, 268, 113, 251, 100, 114, 100, 247, 194, 269, - 100, 100, 316, 115, 194, 119, 100, 366, 73, 73, - 100, 271, 100, 722, 100, 725, 100, 505, 100, 100, - 100, 725, 120, 252, 194, 100, 123, 100, 720, 124, - 406, 307, 74, 73, 74, 83, 253, 100, 125, 126, - 170, 100, 260, 261, 127, 624, 100, 84, 84, 84, - 84, 87, 311, 170, 194, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 401, 89, 90, 90, 90, 90, 90, 90, 90, + 106, 277, 260, 277, 304, 106, 138, 139, 124, 325, + 140, 278, 316, 125, 106, 261, 106, 277, 106, 277, + 141, 73, 73, 73, 106, 106, 106, 278, 106, 729, + 126, 320, 728, 106, 415, 142, 192, 192, 192, 192, + 192, 192, 192, 192, 176, 470, 74, 73, 74, 32, + 78, 79, 78, 78, 32, 32, 80, 32, 32, 32, + 81, 82, 32, 83, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 90, 99, 334, 719, 100, 100, - 100, 100, 100, 100, 100, 100, 173, 173, 173, 173, - 194, 100, 101, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 102, 100, 103, 100, 104, 100, 100, 100, - 100, 105, 100, 100, 100, 100, 100, 194, 194, 106, - 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, - 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, - 106, 100, 194, 194, 194, 718, 128, 100, 268, 379, - 268, 100, 725, 100, 129, 100, 194, 100, 269, 100, + 84, 84, 84, 85, 86, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 87, 32, + 88, 89, 202, 477, 97, 97, 97, 97, 176, 727, + 726, 188, 202, 202, 202, 725, 724, 93, 97, 97, + 723, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 667, 411, 95, + 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 100, 100, 717, 132, 133, 326, 100, 134, 194, 194, - 194, 194, 121, 100, 194, 100, 449, 135, 716, 388, - 194, 715, 100, 122, 137, 100, 100, 138, 194, 142, - 333, 136, 400, 194, 194, 139, 100, 100, 100, 100, - 100, 140, 411, 100, 100, 100, 143, 194, 431, 194, - 144, 147, 194, 100, 430, 100, 194, 100, 452, 148, - 100, 145, 100, 100, 194, 465, 146, 141, 432, 394, - 100, 194, 100, 100, 100, 151, 149, 100, 100, 100, - 444, 152, 100, 194, 514, 194, 100, 194, 100, 461, - 100, 150, 100, 155, 447, 458, 100, 100, 100, 468, + 96, 96, 105, 375, 388, 106, 106, 106, 106, 106, + 106, 106, 106, 722, 202, 202, 202, 721, 106, 107, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 108, + 106, 109, 106, 110, 106, 106, 106, 106, 111, 106, + 106, 106, 106, 106, 202, 202, 202, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 106, + 202, 202, 202, 410, 129, 106, 397, 130, 403, 106, + 202, 106, 202, 106, 202, 106, 131, 132, 106, 106, + 106, 439, 133, 335, 106, 134, 106, 376, 734, 202, - 100, 194, 153, 194, 170, 100, 158, 158, 158, 158, - 464, 457, 714, 154, 713, 463, 472, 490, 712, 540, - 159, 159, 159, 159, 159, 159, 160, 160, 169, 503, - 194, 561, 725, 169, 169, 169, 169, 169, 169, 169, - 169, 169, 169, 91, 91, 91, 91, 194, 510, 516, - 180, 169, 169, 169, 169, 169, 502, 91, 91, 184, - 184, 184, 184, 184, 184, 184, 184, 97, 97, 97, - 97, 97, 97, 97, 97, 100, 100, 194, 403, 403, - 403, 403, 169, 169, 489, 100, 100, 100, 100, 100, - 100, 100, 100, 189, 100, 100, 194, 194, 721, 491, + 106, 127, 106, 135, 106, 202, 106, 202, 106, 136, + 106, 202, 128, 143, 106, 106, 144, 720, 392, 342, + 202, 409, 458, 202, 145, 202, 106, 202, 106, 106, + 146, 202, 148, 106, 202, 106, 137, 440, 149, 106, + 420, 106, 150, 106, 456, 106, 202, 106, 106, 106, + 202, 153, 106, 151, 106, 734, 461, 147, 152, 154, + 106, 473, 106, 106, 106, 441, 106, 466, 202, 467, + 106, 106, 106, 106, 106, 157, 155, 106, 453, 106, + 535, 158, 106, 106, 202, 633, 474, 472, 160, 498, + 161, 570, 156, 106, 202, 106, 519, 106, 164, 164, - 194, 190, 100, 100, 100, 100, 192, 169, 169, 194, - 100, 100, 194, 169, 169, 169, 169, 169, 169, 169, - 169, 169, 169, 194, 722, 194, 100, 100, 194, 513, - 538, 169, 169, 169, 169, 169, 100, 100, 100, 100, - 100, 100, 100, 550, 193, 100, 100, 195, 539, 171, - 191, 194, 100, 526, 100, 100, 100, 405, 100, 517, - 519, 100, 169, 169, 711, 100, 100, 100, 100, 100, - 100, 194, 197, 196, 100, 194, 100, 100, 100, 198, - 100, 541, 554, 518, 194, 100, 194, 169, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 164, 164, 106, 159, 103, 103, 103, 103, 103, 103, + 103, 103, 165, 165, 165, 165, 165, 165, 166, 166, + 175, 481, 202, 202, 202, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 734, 202, 500, 106, 106, + 202, 499, 514, 175, 175, 175, 175, 175, 106, 106, + 106, 106, 106, 106, 106, 719, 197, 106, 106, 511, + 412, 412, 412, 412, 198, 202, 106, 106, 106, 512, + 106, 202, 202, 106, 175, 175, 175, 106, 202, 106, + 106, 106, 106, 202, 200, 106, 106, 202, 202, 106, + 199, 202, 718, 522, 202, 106, 526, 106, 202, 106, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 100, 194, 199, 100, 566, 562, 194, 194, 558, 520, - 100, 170, 100, 100, 100, 100, 200, 100, 100, 100, - 201, 100, 100, 194, 552, 194, 579, 194, 100, 202, - 203, 100, 100, 100, 100, 100, 194, 100, 204, 194, - 100, 563, 205, 194, 100, 194, 100, 194, 100, 710, - 194, 570, 100, 100, 100, 194, 100, 100, 206, 207, - 100, 100, 557, 100, 209, 194, 194, 100, 194, 100, - 212, 100, 100, 100, 100, 100, 208, 210, 100, 100, - 194, 211, 100, 216, 581, 589, 586, 194, 100, 582, + 175, 175, 202, 201, 106, 549, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 192, 192, 192, 192, + 192, 192, 192, 192, 175, 175, 175, 175, 175, 106, + 523, 202, 525, 527, 203, 106, 528, 529, 595, 106, + 414, 106, 177, 106, 202, 106, 563, 106, 106, 106, + 106, 550, 202, 204, 106, 175, 175, 175, 106, 566, + 106, 202, 106, 571, 205, 559, 202, 202, 106, 106, + 106, 206, 106, 202, 202, 202, 202, 106, 567, 202, + 202, 175, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 100, 213, 100, 100, 638, 560, 100, 100, 194, 217, - 194, 580, 194, 100, 100, 100, 100, 100, 100, 597, - 100, 588, 100, 591, 100, 100, 100, 194, 218, 100, - 219, 598, 194, 100, 596, 194, 194, 594, 725, 100, - 100, 100, 194, 100, 194, 194, 220, 221, 100, 612, - 100, 100, 100, 222, 100, 194, 609, 100, 593, 100, - 613, 100, 618, 100, 194, 100, 623, 100, 100, 224, - 100, 100, 194, 223, 194, 194, 100, 194, 225, 709, - 100, 100, 100, 194, 100, 626, 194, 100, 599, 227, - 621, 100, 642, 100, 100, 100, 100, 100, 100, 194, + 196, 196, 196, 196, 106, 569, 207, 106, 547, 572, + 561, 202, 202, 202, 106, 202, 106, 106, 106, 106, + 208, 106, 106, 106, 209, 106, 106, 548, 588, 590, + 579, 591, 106, 210, 211, 106, 106, 106, 106, 106, + 202, 106, 212, 202, 106, 716, 213, 202, 106, 202, + 106, 202, 106, 202, 202, 611, 106, 106, 106, 202, + 106, 106, 214, 215, 106, 106, 602, 106, 217, 605, + 202, 106, 598, 106, 220, 106, 106, 106, 106, 106, + 216, 218, 106, 106, 176, 219, 106, 224, 607, 202, + 202, 202, 106, 632, 106, 221, 106, 106, 600, 734, - 100, 614, 228, 100, 620, 100, 627, 100, 100, 100, - 194, 100, 194, 194, 625, 100, 100, 100, 100, 100, - 100, 100, 100, 229, 100, 628, 231, 100, 194, 637, - 657, 100, 100, 100, 629, 100, 600, 600, 600, 600, - 100, 232, 100, 194, 100, 100, 100, 647, 234, 194, - 194, 233, 235, 194, 194, 100, 194, 100, 645, 100, - 237, 100, 639, 194, 100, 644, 707, 100, 659, 194, - 706, 238, 194, 100, 194, 100, 194, 100, 100, 100, - 100, 100, 239, 705, 100, 240, 100, 194, 100, 650, - 100, 194, 100, 244, 100, 100, 100, 100, 100, 664, + 106, 106, 606, 225, 636, 597, 589, 106, 106, 106, + 106, 106, 106, 603, 106, 608, 106, 618, 106, 106, + 106, 202, 226, 106, 227, 202, 202, 106, 609, 609, + 609, 609, 202, 106, 106, 106, 202, 106, 202, 622, + 228, 229, 106, 730, 106, 106, 106, 230, 106, 621, + 691, 106, 715, 106, 202, 106, 714, 106, 202, 106, + 202, 106, 106, 232, 106, 106, 202, 231, 630, 731, + 106, 202, 233, 202, 106, 106, 106, 202, 106, 202, + 647, 106, 651, 235, 202, 106, 623, 106, 106, 106, + 106, 106, 106, 666, 106, 202, 236, 106, 629, 106, - 242, 649, 241, 100, 658, 100, 100, 243, 652, 100, - 194, 194, 100, 651, 100, 601, 100, 245, 100, 669, - 100, 194, 100, 100, 100, 100, 100, 692, 665, 100, - 194, 100, 682, 100, 700, 100, 248, 100, 194, 100, - 194, 100, 246, 100, 100, 100, 249, 699, 100, 250, - 667, 194, 194, 194, 100, 100, 100, 100, 100, 100, - 662, 677, 254, 100, 100, 158, 158, 158, 158, 184, - 184, 184, 184, 184, 184, 184, 184, 672, 194, 159, - 159, 159, 159, 159, 159, 160, 160, 256, 701, 670, - 671, 160, 160, 160, 160, 160, 160, 160, 160, 257, + 202, 106, 106, 106, 202, 106, 202, 627, 610, 106, + 106, 106, 106, 106, 106, 106, 106, 237, 106, 646, + 239, 106, 637, 202, 635, 106, 106, 106, 202, 106, + 709, 634, 648, 202, 106, 240, 106, 638, 106, 106, + 106, 202, 242, 708, 654, 241, 243, 202, 653, 106, + 707, 106, 202, 106, 245, 106, 202, 658, 106, 730, + 202, 106, 656, 202, 202, 246, 202, 106, 659, 106, + 202, 106, 106, 106, 106, 106, 247, 202, 106, 248, + 106, 661, 106, 660, 106, 731, 106, 252, 106, 106, + 106, 106, 106, 676, 250, 202, 249, 106, 668, 106, - 194, 679, 681, 160, 160, 160, 160, 160, 160, 160, - 160, 99, 100, 100, 694, 272, 698, 194, 194, 194, - 194, 194, 100, 100, 100, 100, 100, 100, 100, 100, - 678, 100, 100, 600, 600, 600, 600, 194, 100, 273, - 100, 100, 100, 100, 194, 693, 194, 100, 100, 194, - 194, 194, 684, 194, 691, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 100, 702, 708, - 194, 690, 689, 683, 194, 100, 680, 100, 100, 100, - 274, 100, 275, 687, 685, 100, 100, 100, 100, 100, + 106, 251, 202, 106, 673, 674, 106, 671, 106, 202, + 106, 253, 106, 680, 106, 202, 106, 106, 106, 106, + 106, 678, 202, 106, 202, 106, 679, 106, 711, 106, + 256, 106, 202, 106, 681, 106, 254, 106, 106, 106, + 257, 202, 106, 258, 609, 609, 609, 609, 106, 106, + 106, 106, 106, 106, 202, 687, 262, 106, 106, 164, + 164, 164, 164, 202, 202, 701, 686, 702, 202, 202, + 202, 202, 202, 165, 165, 165, 165, 165, 165, 166, + 166, 264, 202, 688, 703, 166, 166, 166, 166, 166, + 166, 166, 166, 265, 693, 202, 202, 166, 166, 166, - 100, 100, 100, 686, 100, 695, 696, 100, 194, 100, - 675, 100, 601, 100, 194, 100, 674, 100, 276, 277, - 100, 100, 194, 100, 673, 100, 668, 100, 100, 100, - 688, 100, 279, 278, 697, 100, 100, 100, 100, 100, - 666, 663, 655, 654, 100, 653, 100, 194, 100, 100, - 100, 648, 100, 646, 643, 280, 100, 100, 100, 100, - 281, 100, 635, 100, 703, 100, 282, 283, 100, 284, - 100, 100, 704, 631, 286, 630, 194, 285, 622, 619, - 100, 100, 100, 100, 100, 100, 100, 194, 194, 100, - 100, 603, 100, 590, 587, 194, 100, 553, 100, 287, + 166, 166, 166, 166, 166, 105, 106, 106, 700, 281, + 699, 696, 698, 692, 690, 694, 106, 106, 106, 106, + 106, 106, 106, 106, 610, 106, 106, 704, 705, 717, + 202, 710, 106, 282, 106, 106, 106, 106, 202, 689, + 202, 106, 106, 684, 683, 682, 677, 697, 695, 202, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 106, 675, 672, 664, 663, 662, 202, 657, + 106, 706, 106, 106, 106, 283, 106, 284, 655, 712, + 106, 106, 106, 106, 106, 106, 106, 106, 652, 106, - 100, 549, 100, 100, 100, 100, 100, 523, 522, 100, - 507, 100, 289, 100, 288, 100, 469, 100, 407, 100, - 100, 100, 100, 100, 340, 342, 100, 178, 100, 292, - 290, 176, 100, 291, 100, 174, 100, 100, 100, 100, - 100, 170, 340, 156, 725, 100, 194, 100, 100, 100, - 266, 100, 178, 176, 293, 262, 100, 170, 100, 294, - 100, 100, 100, 259, 258, 156, 194, 100, 186, 100, - 185, 100, 100, 100, 181, 100, 178, 176, 297, 100, - 100, 298, 299, 100, 100, 300, 100, 100, 100, 175, - 100, 100, 174, 100, 174, 168, 303, 301, 166, 100, + 713, 644, 106, 640, 106, 639, 106, 202, 106, 631, + 106, 628, 106, 285, 286, 106, 106, 202, 106, 202, + 106, 612, 106, 106, 106, 599, 106, 288, 287, 596, + 106, 106, 106, 106, 106, 202, 562, 558, 532, 106, + 531, 106, 516, 106, 106, 106, 478, 106, 416, 349, + 289, 106, 106, 106, 106, 290, 106, 351, 106, 186, + 106, 291, 292, 106, 293, 106, 106, 184, 182, 295, + 180, 176, 294, 349, 162, 106, 106, 106, 106, 106, + 106, 106, 734, 202, 106, 106, 275, 106, 186, 184, + 271, 106, 180, 106, 296, 106, 176, 106, 106, 106, - 100, 100, 100, 100, 100, 100, 100, 100, 302, 100, - 304, 100, 100, 96, 164, 163, 162, 156, 98, 100, - 95, 100, 100, 100, 86, 100, 83, 83, 725, 100, - 100, 100, 100, 100, 100, 100, 100, 725, 100, 725, - 725, 305, 725, 100, 725, 306, 308, 100, 725, 100, - 725, 725, 725, 100, 100, 100, 100, 100, 725, 309, - 725, 725, 100, 725, 100, 725, 100, 100, 100, 725, - 100, 310, 725, 725, 100, 100, 100, 100, 100, 100, - 100, 100, 725, 100, 725, 312, 100, 725, 100, 725, - 100, 725, 100, 725, 100, 725, 100, 725, 100, 100, + 106, 106, 267, 266, 106, 162, 106, 298, 106, 297, + 106, 202, 106, 194, 106, 106, 106, 106, 106, 193, + 189, 106, 186, 106, 301, 299, 184, 106, 300, 106, + 183, 106, 106, 106, 106, 106, 182, 182, 180, 102, + 106, 179, 106, 106, 106, 174, 106, 172, 102, 302, + 170, 106, 169, 106, 303, 106, 106, 106, 168, 162, + 104, 101, 106, 92, 106, 89, 106, 106, 106, 89, + 106, 734, 734, 306, 106, 106, 307, 308, 106, 106, + 309, 106, 106, 106, 734, 106, 106, 734, 106, 734, + 734, 312, 310, 734, 106, 106, 106, 106, 106, 106, - 100, 725, 100, 725, 100, 313, 100, 100, 100, 725, - 100, 725, 725, 314, 100, 100, 100, 100, 100, 318, - 100, 725, 725, 100, 315, 725, 725, 317, 100, 100, - 100, 100, 100, 725, 100, 725, 100, 725, 100, 100, - 100, 100, 100, 725, 725, 725, 725, 319, 725, 100, - 725, 100, 320, 100, 725, 100, 725, 100, 725, 100, - 100, 100, 725, 100, 321, 100, 725, 100, 100, 100, - 725, 100, 725, 725, 725, 100, 100, 100, 100, 100, - 725, 725, 725, 322, 100, 725, 100, 725, 100, 725, - 100, 725, 100, 725, 725, 323, 100, 100, 100, 100, + 106, 106, 106, 311, 106, 313, 106, 106, 734, 734, + 734, 734, 734, 734, 106, 734, 106, 106, 106, 734, + 106, 734, 734, 734, 106, 106, 106, 106, 106, 106, + 106, 106, 734, 106, 734, 734, 314, 734, 106, 734, + 315, 317, 106, 734, 106, 734, 734, 734, 106, 106, + 106, 106, 106, 734, 318, 734, 734, 106, 734, 106, + 734, 106, 106, 106, 734, 106, 319, 734, 734, 106, + 106, 106, 106, 106, 106, 106, 106, 734, 106, 734, + 321, 106, 734, 106, 734, 106, 734, 106, 734, 106, + 734, 106, 734, 106, 106, 106, 734, 106, 734, 106, - 100, 725, 325, 324, 725, 100, 725, 100, 725, 100, - 725, 100, 725, 100, 725, 725, 331, 100, 100, 100, - 327, 100, 328, 100, 100, 725, 100, 329, 725, 725, - 725, 725, 725, 100, 100, 100, 100, 100, 100, 100, - 725, 330, 100, 100, 725, 335, 725, 725, 725, 100, - 725, 100, 725, 100, 336, 336, 336, 336, 100, 725, - 725, 725, 338, 338, 338, 338, 725, 725, 337, 337, - 337, 337, 337, 337, 337, 337, 339, 339, 339, 339, - 339, 339, 339, 339, 100, 100, 725, 725, 725, 725, - 725, 725, 344, 725, 100, 100, 343, 100, 100, 100, + 322, 106, 106, 106, 734, 106, 734, 734, 323, 106, + 106, 106, 106, 106, 327, 106, 734, 734, 106, 324, + 734, 734, 326, 106, 106, 106, 106, 106, 734, 106, + 734, 106, 734, 106, 106, 106, 106, 106, 734, 734, + 734, 734, 328, 734, 106, 734, 106, 329, 106, 734, + 106, 734, 106, 734, 106, 106, 106, 734, 106, 330, + 106, 734, 106, 106, 106, 734, 106, 734, 734, 734, + 106, 106, 106, 106, 106, 734, 734, 734, 331, 106, + 734, 106, 734, 106, 734, 106, 734, 106, 734, 734, + 332, 106, 106, 106, 106, 106, 734, 334, 333, 734, - 100, 725, 725, 100, 100, 725, 100, 725, 725, 725, - 100, 345, 100, 725, 100, 725, 100, 100, 346, 100, - 100, 725, 725, 100, 725, 100, 348, 100, 725, 100, - 725, 100, 725, 100, 725, 100, 100, 100, 349, 100, - 100, 350, 100, 725, 725, 725, 725, 725, 725, 100, - 100, 100, 100, 100, 100, 100, 725, 725, 100, 100, - 725, 347, 725, 100, 725, 100, 725, 100, 725, 100, - 725, 100, 351, 100, 100, 100, 352, 100, 725, 725, - 725, 100, 100, 100, 100, 100, 354, 100, 725, 353, - 100, 725, 725, 725, 100, 100, 100, 100, 100, 100, + 106, 734, 106, 734, 106, 734, 106, 734, 106, 734, + 734, 340, 106, 106, 106, 336, 106, 337, 106, 106, + 734, 106, 338, 734, 734, 734, 734, 734, 106, 106, + 106, 106, 106, 106, 106, 734, 339, 106, 106, 734, + 344, 734, 734, 734, 106, 734, 106, 734, 106, 345, + 345, 345, 345, 106, 734, 734, 734, 347, 347, 347, + 347, 734, 734, 346, 346, 346, 346, 346, 346, 346, + 346, 348, 348, 348, 348, 348, 348, 348, 348, 106, + 106, 734, 734, 734, 734, 734, 734, 353, 734, 106, + 106, 352, 106, 106, 106, 106, 734, 734, 106, 106, - 725, 100, 725, 355, 725, 100, 100, 356, 100, 100, - 357, 100, 725, 358, 100, 725, 725, 725, 100, 725, - 100, 100, 100, 100, 725, 100, 100, 100, 725, 359, - 100, 725, 100, 725, 725, 725, 100, 725, 100, 725, - 100, 725, 100, 100, 100, 100, 360, 725, 725, 100, - 361, 100, 725, 100, 725, 100, 725, 100, 725, 100, - 100, 100, 100, 100, 725, 362, 725, 725, 100, 725, - 100, 725, 363, 725, 100, 100, 364, 725, 365, 100, - 725, 100, 725, 725, 725, 100, 725, 100, 725, 100, - 725, 100, 100, 100, 100, 100, 725, 725, 100, 725, + 734, 106, 734, 734, 734, 106, 354, 106, 734, 106, + 734, 106, 106, 355, 106, 106, 734, 734, 106, 734, + 106, 357, 106, 734, 106, 734, 106, 734, 106, 734, + 106, 106, 106, 358, 106, 106, 359, 106, 734, 734, + 734, 734, 734, 734, 106, 106, 106, 106, 106, 106, + 106, 734, 734, 106, 106, 734, 734, 356, 106, 734, + 106, 734, 106, 734, 106, 734, 106, 360, 106, 106, + 106, 361, 106, 734, 734, 734, 106, 106, 106, 106, + 106, 363, 106, 734, 362, 106, 734, 734, 734, 106, + 106, 106, 106, 106, 106, 734, 106, 734, 364, 734, - 100, 725, 100, 725, 100, 725, 100, 725, 100, 725, - 100, 100, 100, 100, 100, 725, 369, 100, 725, 725, - 370, 725, 725, 100, 100, 100, 100, 100, 100, 100, - 371, 725, 100, 100, 373, 100, 368, 725, 725, 100, - 725, 100, 377, 100, 725, 100, 725, 100, 372, 100, - 100, 374, 725, 100, 100, 375, 725, 725, 725, 725, - 100, 100, 100, 100, 100, 100, 376, 100, 725, 100, - 725, 100, 100, 100, 100, 100, 725, 725, 378, 725, - 100, 725, 100, 380, 100, 100, 100, 725, 100, 725, - 725, 725, 100, 100, 100, 100, 100, 100, 100, 100, + 106, 106, 365, 106, 106, 366, 106, 734, 367, 106, + 734, 734, 734, 106, 734, 106, 106, 106, 106, 734, + 106, 106, 106, 734, 368, 106, 734, 106, 734, 734, + 734, 106, 734, 106, 734, 106, 734, 106, 106, 106, + 106, 369, 734, 734, 106, 370, 106, 734, 106, 734, + 106, 734, 106, 734, 106, 106, 106, 106, 106, 734, + 371, 734, 734, 106, 734, 106, 734, 372, 734, 106, + 106, 373, 734, 374, 106, 734, 106, 734, 734, 734, + 106, 734, 106, 734, 106, 734, 106, 106, 106, 106, + 106, 734, 734, 106, 734, 106, 734, 106, 734, 106, - 725, 100, 385, 381, 100, 725, 100, 725, 100, 384, - 100, 382, 100, 725, 725, 725, 100, 100, 100, 100, - 100, 725, 725, 725, 725, 100, 725, 100, 725, 100, - 386, 100, 725, 100, 387, 100, 725, 100, 100, 100, - 725, 100, 725, 100, 725, 100, 100, 100, 725, 100, - 725, 100, 725, 100, 100, 100, 725, 100, 725, 725, - 725, 100, 100, 100, 100, 100, 725, 390, 725, 389, - 100, 725, 100, 725, 100, 100, 100, 725, 100, 725, - 725, 725, 100, 100, 100, 100, 100, 391, 725, 100, - 100, 100, 392, 100, 100, 725, 100, 725, 725, 725, + 734, 106, 734, 106, 734, 106, 106, 106, 106, 106, + 734, 378, 106, 734, 734, 379, 734, 734, 106, 106, + 106, 106, 106, 106, 106, 380, 734, 106, 106, 382, + 106, 734, 377, 734, 106, 734, 106, 386, 106, 734, + 106, 734, 106, 381, 106, 106, 383, 734, 106, 106, + 384, 734, 734, 734, 734, 106, 106, 106, 106, 106, + 106, 385, 106, 734, 106, 734, 106, 106, 106, 106, + 106, 734, 734, 387, 734, 106, 734, 106, 389, 106, + 106, 106, 734, 106, 734, 734, 734, 106, 106, 106, + 106, 106, 106, 106, 106, 734, 106, 394, 390, 106, - 100, 725, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 725, 100, 100, 725, 100, 725, 725, - 725, 100, 725, 100, 100, 100, 395, 100, 100, 100, - 100, 100, 100, 100, 393, 397, 396, 725, 100, 725, - 725, 725, 100, 725, 100, 725, 100, 725, 100, 100, - 100, 100, 100, 725, 725, 100, 725, 100, 725, 100, - 725, 100, 725, 100, 725, 100, 399, 100, 100, 100, - 725, 725, 725, 398, 100, 336, 336, 336, 336, 725, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 337, - 337, 337, 337, 337, 337, 337, 337, 403, 403, 403, + 734, 106, 734, 106, 393, 106, 391, 106, 734, 734, + 734, 106, 106, 106, 106, 106, 734, 734, 734, 734, + 106, 734, 106, 734, 106, 395, 106, 734, 106, 396, + 106, 734, 106, 106, 106, 734, 106, 734, 106, 734, + 106, 106, 106, 734, 106, 734, 106, 734, 106, 106, + 106, 734, 106, 734, 734, 734, 106, 106, 106, 106, + 106, 734, 399, 734, 398, 106, 734, 106, 734, 106, + 106, 106, 734, 106, 734, 734, 734, 106, 106, 106, + 106, 106, 400, 734, 106, 106, 106, 401, 106, 106, + 734, 106, 734, 734, 734, 106, 734, 106, 106, 106, - 403, 725, 725, 725, 725, 725, 725, 404, 725, 725, - 725, 337, 337, 337, 337, 337, 337, 337, 337, 338, - 338, 338, 338, 725, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 339, 339, 339, 339, 339, 339, 339, - 339, 404, 725, 100, 725, 339, 339, 339, 339, 339, - 339, 339, 339, 100, 725, 100, 725, 100, 100, 409, - 725, 408, 100, 725, 725, 725, 725, 725, 100, 725, - 100, 100, 100, 410, 100, 725, 405, 100, 725, 725, - 725, 100, 725, 100, 100, 100, 100, 725, 100, 725, - 100, 412, 100, 100, 725, 100, 413, 725, 100, 725, + 106, 106, 106, 106, 106, 106, 106, 106, 734, 106, + 106, 734, 106, 734, 734, 734, 106, 734, 106, 106, + 106, 404, 106, 106, 106, 106, 106, 734, 106, 106, + 402, 405, 406, 734, 734, 106, 734, 734, 734, 106, + 734, 106, 734, 106, 734, 106, 106, 106, 106, 106, + 734, 734, 734, 734, 106, 734, 106, 734, 106, 734, + 106, 734, 106, 408, 734, 106, 734, 734, 734, 734, + 734, 407, 106, 734, 106, 734, 106, 345, 345, 345, + 345, 106, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 346, 346, 346, 346, 346, 346, 346, 346, 412, - 725, 414, 100, 725, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 725, 100, 100, 725, 725, - 725, 725, 725, 100, 100, 100, 100, 100, 415, 725, - 100, 725, 100, 725, 100, 100, 100, 100, 100, 725, - 416, 725, 725, 100, 417, 100, 725, 100, 725, 100, - 725, 100, 725, 725, 725, 418, 100, 100, 100, 100, - 725, 419, 725, 725, 100, 420, 725, 725, 100, 100, - 100, 421, 100, 725, 725, 100, 725, 100, 422, 100, - 725, 100, 423, 100, 725, 100, 100, 100, 100, 100, - 725, 725, 725, 725, 100, 725, 100, 100, 100, 725, + 412, 412, 412, 734, 734, 734, 734, 734, 734, 413, + 734, 734, 734, 346, 346, 346, 346, 346, 346, 346, + 346, 347, 347, 347, 347, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 348, 348, 348, 348, 348, + 348, 348, 348, 413, 734, 106, 106, 348, 348, 348, + 348, 348, 348, 348, 348, 106, 106, 106, 106, 106, + 106, 106, 418, 417, 106, 106, 734, 734, 734, 734, + 734, 106, 734, 106, 734, 106, 419, 106, 734, 414, + 106, 734, 421, 106, 734, 734, 734, 106, 734, 106, + 734, 106, 734, 106, 734, 106, 106, 106, 106, 422, - 100, 725, 424, 725, 725, 100, 725, 100, 725, 100, - 725, 100, 100, 426, 725, 425, 100, 725, 100, 725, - 725, 725, 100, 725, 100, 725, 100, 725, 100, 100, - 100, 100, 100, 725, 725, 100, 427, 100, 725, 100, - 725, 100, 725, 100, 725, 100, 428, 429, 100, 100, - 100, 100, 725, 725, 100, 725, 725, 725, 433, 725, - 100, 100, 100, 100, 100, 100, 725, 725, 100, 100, - 100, 100, 434, 725, 435, 725, 725, 725, 100, 725, - 100, 100, 100, 100, 725, 100, 436, 100, 100, 100, - 100, 437, 725, 725, 725, 725, 725, 725, 100, 100, + 734, 106, 106, 734, 423, 734, 734, 734, 106, 106, + 106, 106, 106, 106, 734, 106, 734, 106, 734, 106, + 106, 106, 106, 106, 734, 734, 734, 734, 106, 734, + 106, 734, 106, 734, 424, 734, 106, 734, 106, 734, + 106, 106, 106, 734, 106, 426, 425, 734, 106, 106, + 106, 106, 106, 734, 734, 734, 734, 106, 734, 106, + 734, 427, 428, 106, 734, 106, 429, 734, 734, 106, + 106, 106, 106, 106, 430, 734, 734, 734, 106, 734, + 106, 734, 106, 431, 106, 734, 106, 432, 106, 734, + 106, 106, 106, 734, 106, 734, 106, 734, 106, 106, - 438, 100, 100, 100, 100, 725, 725, 100, 100, 725, - 100, 725, 725, 440, 100, 725, 100, 725, 100, 725, - 100, 100, 100, 439, 100, 442, 725, 725, 443, 100, - 725, 100, 725, 100, 100, 100, 725, 725, 441, 725, - 100, 725, 100, 725, 100, 100, 100, 725, 100, 725, - 725, 725, 100, 100, 100, 100, 100, 100, 100, 100, - 445, 100, 725, 725, 100, 725, 100, 725, 100, 725, - 100, 725, 100, 725, 100, 725, 100, 100, 446, 725, - 100, 725, 100, 725, 100, 100, 100, 725, 100, 725, - 448, 725, 100, 100, 450, 100, 100, 725, 725, 725, + 106, 734, 106, 734, 433, 734, 106, 106, 106, 734, + 106, 106, 435, 734, 434, 106, 734, 106, 734, 734, + 734, 106, 734, 106, 734, 106, 734, 106, 106, 106, + 106, 106, 734, 734, 106, 436, 106, 734, 106, 734, + 106, 734, 106, 734, 106, 437, 438, 106, 106, 106, + 106, 734, 734, 106, 734, 734, 734, 442, 734, 106, + 106, 106, 106, 106, 106, 734, 734, 106, 106, 106, + 106, 443, 734, 444, 734, 734, 734, 106, 734, 106, + 106, 106, 106, 734, 106, 445, 106, 106, 106, 106, + 446, 734, 734, 734, 734, 734, 734, 106, 106, 447, - 725, 100, 725, 725, 725, 100, 725, 100, 100, 100, - 725, 100, 725, 451, 100, 453, 725, 725, 100, 100, - 100, 100, 100, 454, 455, 100, 725, 100, 725, 100, - 100, 100, 100, 100, 725, 725, 725, 725, 100, 725, - 725, 725, 100, 100, 100, 725, 100, 725, 725, 100, - 725, 100, 459, 100, 456, 100, 725, 100, 725, 100, - 100, 100, 100, 100, 725, 725, 725, 725, 100, 725, - 100, 100, 100, 725, 100, 725, 460, 725, 725, 100, - 725, 100, 725, 100, 725, 100, 466, 466, 466, 466, - 100, 725, 725, 725, 725, 725, 725, 725, 100, 725, + 106, 106, 106, 106, 734, 734, 106, 106, 734, 106, + 734, 734, 449, 106, 734, 106, 734, 106, 734, 106, + 106, 106, 448, 106, 451, 734, 734, 452, 106, 734, + 106, 734, 106, 106, 106, 734, 734, 450, 734, 106, + 734, 106, 734, 106, 106, 106, 734, 106, 734, 734, + 734, 106, 106, 106, 106, 106, 106, 106, 106, 454, + 106, 734, 734, 106, 734, 106, 734, 106, 734, 106, + 734, 106, 734, 106, 734, 106, 106, 455, 734, 106, + 734, 106, 734, 106, 106, 106, 734, 106, 734, 457, + 734, 106, 106, 459, 106, 106, 734, 734, 734, 734, - 467, 467, 467, 467, 467, 467, 467, 467, 100, 725, - 100, 100, 100, 470, 100, 462, 725, 100, 725, 725, - 725, 100, 100, 100, 100, 100, 100, 725, 100, 471, - 100, 725, 100, 100, 473, 100, 100, 725, 100, 725, - 725, 100, 725, 725, 725, 100, 725, 100, 100, 100, - 100, 725, 100, 474, 100, 100, 725, 100, 475, 725, - 476, 100, 725, 725, 725, 100, 725, 100, 725, 100, - 725, 100, 100, 100, 100, 100, 725, 725, 100, 725, - 100, 725, 100, 725, 477, 725, 100, 725, 100, 725, - 100, 100, 100, 100, 725, 479, 478, 100, 725, 100, + 106, 734, 734, 734, 106, 734, 106, 106, 106, 734, + 106, 734, 460, 106, 462, 734, 734, 106, 106, 106, + 106, 106, 463, 464, 106, 734, 106, 734, 106, 106, + 106, 106, 106, 734, 734, 734, 734, 106, 734, 734, + 734, 106, 106, 106, 734, 106, 734, 734, 106, 734, + 106, 468, 106, 465, 106, 734, 106, 734, 106, 106, + 106, 106, 106, 734, 734, 734, 734, 106, 734, 106, + 106, 106, 734, 106, 734, 469, 734, 734, 106, 734, + 106, 734, 106, 734, 106, 475, 475, 475, 475, 106, + 734, 734, 734, 734, 734, 734, 734, 106, 734, 476, - 725, 725, 725, 100, 725, 100, 725, 100, 725, 100, - 725, 100, 100, 100, 725, 725, 100, 480, 100, 481, - 725, 725, 100, 725, 482, 725, 100, 725, 100, 725, - 100, 725, 100, 100, 100, 100, 100, 725, 484, 100, - 725, 100, 725, 100, 725, 483, 725, 100, 725, 100, - 100, 100, 100, 100, 725, 725, 100, 725, 100, 725, - 100, 725, 100, 485, 100, 725, 100, 100, 100, 100, - 100, 725, 725, 100, 725, 100, 725, 100, 725, 100, - 487, 100, 725, 100, 486, 100, 100, 100, 488, 100, - 100, 725, 100, 725, 492, 725, 725, 725, 725, 100, + 476, 476, 476, 476, 476, 476, 476, 106, 734, 106, + 106, 106, 479, 106, 734, 471, 106, 734, 734, 734, + 106, 106, 106, 106, 106, 106, 734, 106, 480, 106, + 734, 106, 106, 482, 106, 106, 734, 106, 734, 734, + 106, 734, 734, 734, 106, 734, 106, 106, 106, 106, + 734, 106, 483, 106, 106, 734, 106, 484, 734, 485, + 106, 734, 734, 734, 106, 734, 106, 734, 106, 734, + 106, 106, 106, 106, 106, 734, 734, 106, 734, 106, + 734, 106, 734, 486, 734, 106, 734, 106, 734, 106, + 106, 106, 106, 734, 488, 487, 106, 734, 106, 734, - 100, 100, 100, 100, 100, 100, 725, 725, 100, 100, - 725, 100, 493, 494, 725, 100, 725, 100, 725, 100, - 725, 100, 100, 100, 100, 100, 725, 725, 100, 725, - 100, 496, 100, 725, 100, 725, 100, 725, 100, 495, - 100, 100, 100, 100, 497, 725, 725, 100, 725, 100, - 498, 725, 725, 100, 725, 100, 725, 100, 725, 100, - 100, 100, 100, 100, 725, 725, 725, 725, 100, 725, - 100, 725, 100, 725, 100, 100, 499, 725, 500, 100, - 725, 100, 725, 725, 725, 100, 725, 100, 725, 100, - 725, 100, 100, 100, 100, 100, 725, 725, 501, 725, + 734, 734, 106, 734, 106, 734, 106, 734, 106, 734, + 106, 106, 106, 734, 734, 106, 489, 106, 490, 734, + 734, 106, 734, 491, 734, 106, 734, 106, 734, 106, + 734, 106, 106, 106, 106, 106, 734, 493, 106, 734, + 106, 734, 106, 734, 492, 734, 106, 734, 106, 106, + 106, 106, 106, 734, 734, 106, 734, 106, 734, 106, + 734, 106, 494, 106, 734, 106, 106, 106, 106, 106, + 734, 734, 106, 734, 106, 734, 106, 734, 106, 496, + 106, 734, 106, 495, 106, 106, 106, 497, 106, 106, + 734, 106, 734, 501, 734, 734, 734, 734, 106, 106, - 100, 725, 100, 725, 100, 100, 100, 504, 100, 725, - 725, 100, 725, 725, 725, 100, 100, 506, 100, 100, - 100, 725, 100, 725, 100, 725, 100, 100, 100, 100, - 100, 725, 509, 725, 508, 100, 725, 100, 725, 100, - 725, 100, 725, 100, 725, 725, 725, 100, 100, 100, - 725, 100, 100, 512, 725, 100, 100, 511, 100, 725, - 725, 725, 100, 725, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 725, 100, 100, 725, 725, - 725, 725, 725, 100, 725, 100, 100, 100, 100, 725, - 100, 725, 100, 515, 725, 100, 466, 466, 466, 466, + 106, 106, 106, 106, 106, 734, 734, 106, 106, 734, + 106, 502, 503, 734, 106, 734, 106, 734, 106, 734, + 106, 106, 106, 106, 106, 734, 734, 106, 734, 106, + 505, 106, 734, 106, 734, 106, 734, 106, 504, 106, + 106, 106, 106, 506, 734, 734, 106, 734, 106, 507, + 734, 734, 106, 734, 106, 734, 106, 734, 106, 106, + 106, 106, 106, 734, 734, 734, 734, 106, 734, 106, + 734, 106, 734, 106, 106, 508, 734, 509, 106, 734, + 106, 734, 734, 734, 106, 734, 106, 734, 106, 734, + 106, 106, 106, 106, 106, 734, 734, 510, 734, 106, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, - 467, 467, 467, 467, 467, 467, 467, 467, 521, 725, - 100, 725, 467, 467, 467, 467, 467, 467, 467, 467, - 100, 725, 100, 100, 100, 725, 100, 725, 524, 100, - 525, 725, 725, 100, 725, 100, 100, 100, 100, 725, - 100, 100, 100, 725, 527, 100, 725, 100, 725, 725, - 725, 100, 725, 100, 725, 100, 725, 100, 100, 528, - 100, 100, 725, 725, 100, 529, 100, 725, 100, 725, - 100, 530, 100, 725, 100, 100, 100, 100, 100, 725, - 725, 100, 725, 100, 725, 100, 725, 100, 725, 100, + 734, 106, 734, 106, 106, 106, 513, 106, 734, 734, + 106, 734, 734, 734, 106, 106, 515, 106, 106, 106, + 734, 106, 734, 106, 734, 106, 106, 106, 106, 106, + 734, 518, 734, 517, 106, 734, 106, 734, 106, 734, + 106, 734, 106, 734, 734, 734, 106, 106, 106, 734, + 106, 106, 521, 734, 106, 106, 520, 106, 734, 734, + 734, 106, 734, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 734, 106, 106, 734, 734, 734, + 734, 734, 106, 734, 106, 106, 106, 106, 734, 106, + 734, 106, 524, 734, 106, 475, 475, 475, 475, 734, - 725, 100, 100, 100, 100, 100, 725, 725, 725, 531, - 100, 725, 100, 100, 100, 532, 100, 725, 725, 100, - 725, 100, 725, 100, 725, 100, 725, 100, 725, 100, - 100, 100, 100, 100, 725, 533, 100, 725, 100, 725, - 100, 725, 100, 725, 100, 725, 100, 100, 100, 100, - 100, 725, 725, 725, 534, 100, 725, 100, 100, 100, - 725, 100, 725, 725, 536, 535, 100, 725, 100, 725, - 100, 725, 100, 725, 100, 100, 100, 100, 100, 725, - 725, 100, 725, 100, 725, 537, 725, 100, 542, 100, - 725, 100, 100, 100, 100, 100, 725, 725, 725, 725, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 476, + 476, 476, 476, 476, 476, 476, 476, 530, 734, 106, + 734, 476, 476, 476, 476, 476, 476, 476, 476, 106, + 734, 106, 106, 106, 734, 106, 734, 533, 106, 534, + 734, 734, 106, 734, 106, 106, 106, 106, 734, 106, + 106, 106, 734, 536, 106, 734, 106, 734, 734, 734, + 106, 734, 106, 734, 106, 734, 106, 106, 537, 106, + 106, 734, 734, 106, 538, 106, 734, 106, 734, 106, + 539, 106, 734, 106, 106, 106, 106, 106, 734, 734, + 106, 734, 106, 734, 106, 734, 106, 734, 106, 734, - 100, 725, 100, 100, 100, 725, 100, 725, 725, 100, - 543, 100, 725, 100, 725, 100, 725, 100, 725, 100, - 100, 100, 100, 100, 725, 725, 100, 725, 100, 545, - 100, 725, 100, 725, 100, 725, 100, 544, 100, 100, - 100, 100, 100, 725, 725, 100, 725, 725, 725, 725, - 725, 100, 100, 100, 100, 100, 100, 100, 547, 546, - 100, 100, 725, 100, 725, 725, 725, 100, 725, 100, - 725, 100, 725, 100, 100, 100, 100, 100, 725, 725, - 100, 725, 100, 725, 551, 725, 100, 725, 100, 725, - 100, 100, 100, 100, 100, 725, 725, 725, 725, 100, + 106, 106, 106, 106, 106, 734, 734, 734, 540, 106, + 734, 106, 106, 106, 541, 106, 734, 734, 106, 734, + 106, 734, 106, 734, 106, 734, 106, 734, 106, 106, + 106, 106, 106, 734, 542, 106, 734, 106, 734, 106, + 734, 106, 734, 106, 734, 106, 106, 106, 106, 106, + 734, 734, 734, 543, 106, 734, 106, 106, 106, 734, + 106, 734, 734, 545, 544, 106, 734, 106, 734, 106, + 734, 106, 734, 106, 106, 106, 106, 106, 734, 734, + 106, 734, 106, 734, 546, 734, 106, 551, 106, 734, + 106, 106, 106, 106, 106, 734, 734, 734, 734, 106, - 725, 100, 100, 100, 725, 100, 725, 548, 100, 725, - 100, 555, 100, 725, 100, 725, 100, 725, 100, 725, - 100, 100, 100, 100, 725, 725, 556, 100, 559, 100, - 725, 725, 725, 100, 725, 100, 725, 100, 725, 100, - 725, 100, 100, 100, 564, 564, 564, 564, 100, 725, - 725, 725, 725, 725, 725, 725, 725, 725, 565, 565, - 565, 565, 565, 565, 565, 565, 100, 100, 569, 725, - 725, 725, 725, 568, 725, 725, 100, 100, 100, 100, - 100, 100, 100, 725, 725, 100, 100, 725, 725, 725, - 100, 725, 100, 100, 100, 725, 100, 725, 571, 725, + 734, 106, 106, 106, 734, 106, 734, 734, 106, 552, + 106, 734, 106, 734, 106, 734, 106, 734, 106, 106, + 106, 106, 106, 734, 734, 106, 734, 106, 554, 106, + 734, 106, 734, 106, 734, 106, 553, 106, 106, 106, + 106, 106, 734, 734, 106, 734, 734, 734, 734, 734, + 106, 106, 106, 106, 106, 106, 106, 556, 555, 106, + 106, 734, 106, 734, 734, 734, 106, 734, 106, 734, + 106, 734, 106, 106, 106, 106, 106, 734, 734, 106, + 734, 106, 734, 560, 734, 106, 734, 106, 734, 106, + 106, 106, 106, 106, 734, 734, 106, 734, 106, 734, - 100, 100, 100, 100, 100, 573, 100, 100, 572, 100, - 725, 725, 100, 576, 100, 725, 100, 725, 574, 725, - 100, 725, 100, 725, 100, 100, 100, 575, 100, 725, - 100, 725, 100, 100, 100, 725, 100, 725, 725, 725, - 100, 100, 100, 100, 100, 725, 577, 725, 725, 100, - 725, 100, 725, 100, 725, 100, 725, 100, 725, 100, - 725, 100, 100, 100, 725, 100, 578, 100, 725, 100, - 100, 100, 725, 100, 725, 725, 725, 100, 100, 100, - 100, 100, 725, 583, 725, 725, 100, 725, 100, 725, - 100, 100, 100, 725, 100, 725, 725, 725, 100, 100, + 106, 734, 106, 734, 106, 734, 106, 557, 106, 106, + 106, 106, 734, 734, 564, 106, 734, 106, 734, 734, + 565, 106, 734, 106, 734, 106, 734, 106, 734, 106, + 106, 106, 568, 106, 734, 734, 106, 734, 734, 573, + 573, 573, 573, 106, 734, 106, 734, 106, 734, 734, + 734, 734, 106, 574, 574, 574, 574, 574, 574, 574, + 574, 106, 106, 578, 734, 734, 734, 734, 577, 734, + 734, 106, 106, 106, 106, 106, 106, 106, 734, 734, + 106, 106, 734, 734, 734, 106, 734, 106, 106, 106, + 734, 106, 734, 580, 734, 106, 106, 106, 106, 106, - 100, 100, 100, 100, 100, 100, 725, 100, 725, 725, - 100, 725, 100, 725, 100, 100, 100, 725, 100, 584, - 725, 725, 100, 100, 100, 100, 100, 100, 100, 100, - 725, 100, 592, 585, 100, 725, 100, 725, 100, 725, - 100, 725, 100, 725, 725, 725, 100, 100, 100, 100, - 100, 725, 100, 725, 725, 100, 725, 725, 725, 100, - 725, 100, 595, 100, 100, 725, 100, 725, 100, 725, - 725, 100, 564, 564, 564, 564, 725, 725, 725, 725, - 725, 725, 725, 725, 100, 725, 565, 565, 565, 565, - 565, 565, 565, 565, 100, 100, 100, 604, 100, 725, + 582, 106, 106, 581, 106, 734, 734, 106, 585, 106, + 734, 106, 734, 583, 734, 106, 734, 106, 734, 106, + 106, 106, 584, 106, 734, 106, 734, 106, 106, 106, + 734, 106, 734, 734, 734, 106, 106, 106, 106, 106, + 734, 586, 734, 734, 106, 734, 106, 734, 106, 734, + 106, 734, 106, 734, 106, 734, 106, 106, 106, 734, + 106, 587, 106, 734, 106, 106, 106, 734, 106, 734, + 734, 734, 106, 106, 106, 106, 106, 734, 592, 734, + 734, 106, 734, 106, 734, 106, 106, 106, 734, 106, + 734, 734, 734, 106, 106, 106, 106, 106, 106, 106, - 725, 100, 725, 100, 725, 100, 725, 100, 725, 100, - 725, 100, 100, 100, 100, 100, 725, 725, 100, 725, - 100, 606, 100, 725, 100, 725, 100, 725, 100, 605, - 100, 100, 100, 100, 100, 725, 725, 100, 607, 725, - 725, 725, 725, 100, 100, 100, 608, 100, 100, 100, - 100, 610, 100, 100, 725, 725, 725, 725, 725, 100, - 611, 100, 100, 100, 100, 100, 725, 725, 100, 100, - 725, 725, 725, 100, 725, 100, 725, 100, 725, 100, - 725, 615, 725, 100, 100, 100, 616, 100, 100, 100, - 725, 725, 100, 725, 725, 617, 725, 725, 100, 100, + 106, 734, 106, 734, 734, 106, 734, 106, 734, 106, + 106, 106, 734, 106, 593, 734, 734, 106, 106, 106, + 106, 106, 106, 106, 106, 734, 106, 601, 594, 106, + 734, 106, 734, 106, 734, 106, 734, 106, 734, 734, + 734, 106, 106, 106, 106, 106, 734, 106, 734, 734, + 106, 734, 734, 734, 106, 734, 106, 604, 106, 106, + 734, 106, 734, 106, 734, 734, 106, 573, 573, 573, + 573, 734, 734, 734, 734, 734, 734, 734, 734, 106, + 734, 574, 574, 574, 574, 574, 574, 574, 574, 106, + 106, 106, 613, 106, 734, 734, 106, 734, 106, 734, - 100, 100, 100, 100, 100, 100, 725, 100, 100, 725, - 725, 725, 725, 725, 100, 100, 632, 100, 100, 100, - 100, 100, 633, 100, 100, 725, 725, 725, 725, 725, - 100, 100, 100, 100, 100, 100, 100, 100, 725, 100, - 100, 725, 725, 725, 725, 725, 100, 100, 100, 100, - 100, 100, 100, 634, 725, 100, 100, 725, 100, 636, - 725, 725, 100, 725, 100, 725, 100, 725, 100, 100, - 100, 100, 100, 725, 725, 725, 725, 100, 725, 100, - 100, 640, 725, 100, 725, 725, 100, 725, 100, 725, - 100, 725, 100, 641, 100, 725, 100, 100, 100, 100, + 106, 734, 106, 734, 106, 734, 106, 106, 106, 106, + 106, 734, 734, 106, 734, 106, 615, 106, 734, 106, + 734, 106, 734, 106, 614, 106, 106, 106, 106, 106, + 734, 734, 106, 616, 734, 734, 734, 734, 106, 106, + 106, 617, 106, 106, 106, 106, 619, 106, 106, 734, + 734, 734, 734, 734, 106, 620, 106, 106, 106, 106, + 106, 734, 734, 106, 106, 734, 734, 734, 106, 734, + 106, 734, 106, 734, 106, 734, 624, 734, 106, 106, + 106, 625, 106, 106, 106, 734, 734, 106, 734, 734, + 626, 734, 734, 106, 106, 106, 106, 106, 106, 106, - 100, 725, 725, 100, 725, 100, 725, 100, 725, 100, - 725, 100, 725, 100, 100, 100, 100, 100, 725, 725, - 725, 725, 100, 725, 100, 100, 100, 725, 100, 725, - 725, 100, 656, 100, 725, 100, 725, 100, 725, 100, - 725, 100, 660, 661, 100, 100, 100, 100, 725, 725, - 100, 725, 725, 725, 725, 725, 100, 100, 100, 100, - 100, 100, 100, 100, 725, 100, 100, 725, 725, 676, - 725, 725, 100, 100, 100, 100, 100, 100, 725, 725, - 725, 100, 100, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 59, 59, 59, + 106, 734, 106, 106, 734, 734, 734, 734, 734, 106, + 106, 641, 106, 106, 106, 106, 106, 642, 106, 106, + 734, 734, 734, 734, 734, 106, 106, 106, 106, 106, + 106, 106, 106, 734, 106, 106, 734, 734, 734, 734, + 734, 106, 106, 106, 106, 106, 106, 106, 643, 734, + 106, 106, 734, 106, 645, 734, 734, 106, 734, 106, + 734, 106, 734, 106, 106, 106, 106, 106, 734, 734, + 734, 734, 106, 734, 106, 106, 649, 734, 106, 734, + 734, 106, 734, 106, 734, 106, 734, 106, 650, 106, + 734, 106, 106, 106, 106, 106, 734, 734, 106, 734, - 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 76, + 106, 734, 106, 734, 106, 734, 106, 734, 106, 106, + 106, 106, 106, 734, 734, 734, 734, 106, 734, 106, + 106, 106, 734, 106, 734, 734, 106, 665, 106, 734, + 106, 734, 106, 734, 106, 734, 106, 669, 670, 106, + 106, 106, 106, 734, 734, 106, 734, 734, 734, 734, + 734, 106, 106, 106, 106, 106, 106, 106, 106, 734, + 106, 106, 734, 734, 685, 734, 734, 106, 106, 106, + 106, 106, 106, 734, 734, 734, 106, 106, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 59, 59, 59, 59, 59, 59, 59, 59, 59, + + 59, 59, 59, 59, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 85, 85, 85, - 85, 725, 85, 85, 85, 85, 85, 85, 85, 85, - 85, 92, 92, 92, 725, 725, 92, 725, 92, 725, - 92, 157, 157, 725, 157, 157, 161, 161, 725, 725, + 76, 76, 76, 91, 91, 91, 91, 734, 91, 91, + 91, 91, 91, 91, 91, 91, 98, 98, 98, 734, + 98, 734, 98, 734, 98, 163, 163, 734, 163, 163, + 167, 167, 734, 734, 167, 167, 734, 167, 167, 167, + 167, 167, 167, 171, 171, 171, 171, 734, 171, 171, + 171, 171, 171, 171, 171, 171, 173, 173, 173, 173, - 161, 161, 161, 725, 161, 161, 161, 161, 161, 161, - 165, 165, 165, 165, 725, 165, 165, 165, 165, 165, - 165, 165, 165, 165, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 725, 167, 167, 169, 725, 725, 725, - 169, 169, 169, 169, 169, 169, 169, 169, 170, 725, - 725, 725, 170, 170, 170, 170, 170, 170, 170, 170, - 172, 725, 725, 725, 172, 725, 172, 172, 172, 172, - 172, 172, 177, 177, 725, 177, 177, 179, 179, 725, - 179, 179, 187, 725, 187, 187, 106, 106, 725, 106, - 106, 255, 725, 255, 255, 263, 725, 263, 263, 264, + 173, 173, 173, 173, 734, 173, 173, 175, 734, 734, + 734, 175, 175, 175, 175, 175, 175, 175, 176, 734, + 734, 734, 176, 176, 176, 176, 176, 176, 176, 181, + 181, 734, 181, 181, 185, 185, 734, 185, 185, 187, + 187, 734, 187, 187, 195, 734, 195, 195, 112, 112, + 734, 112, 112, 263, 734, 263, 263, 270, 734, 270, + 270, 272, 734, 272, 272, 273, 734, 273, 273, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 196, 196, 734, 196, 196, 576, 576, 734, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, - 725, 264, 264, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 188, 188, 725, - 188, 188, 567, 567, 725, 567, 567, 567, 567, 567, - 567, 567, 567, 567, 567, 567, 565, 565, 565, 725, - 725, 725, 725, 565, 725, 725, 725, 725, 565, 17, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, + 574, 574, 574, 734, 734, 734, 574, 734, 734, 734, + 734, 574, 17, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734 - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, - 725 } ; -static yyconst short int yy_chk[4432] = +static yyconst short int yy_chk[4496] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1259,492 +1269,499 @@ static yyconst short int yy_chk[4432] = 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, 3, 3, 3, 4, 4, 4, 5, 5, 5, - 11, 3, 9, 7, 4, 8, 9, 5, 6, 6, + 1, 1, 3, 3, 3, 4, 4, 4, 5, 5, + 5, 11, 3, 9, 7, 4, 8, 9, 5, 6, - 6, 7, 10, 8, 12, 7, 10, 8, 6, 122, - 28, 11, 28, 93, 11, 89, 7, 311, 8, 40, - 183, 15, 15, 15, 15, 12, 93, 15, 12, 40, - 723, 40, 566, 40, 16, 16, 16, 16, 40, 180, - 16, 19, 19, 19, 19, 180, 89, 183, 19, 20, - 20, 20, 20, 122, 260, 260, 20, 24, 24, 24, - 24, 566, 722, 311, 24, 26, 11, 251, 11, 26, - 131, 24, 24, 26, 26, 26, 26, 26, 26, 26, - 12, 136, 12, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 15, 121, + 6, 6, 7, 10, 8, 12, 7, 10, 8, 6, + 95, 28, 11, 28, 147, 11, 259, 7, 80, 8, + 19, 19, 19, 19, 127, 142, 12, 19, 156, 12, + 20, 20, 20, 20, 80, 99, 732, 20, 24, 24, + 24, 24, 95, 188, 531, 24, 26, 731, 99, 188, + 26, 531, 24, 24, 26, 26, 26, 26, 26, 26, + 26, 78, 78, 78, 78, 137, 80, 147, 11, 128, + 11, 30, 30, 30, 30, 30, 30, 30, 30, 142, + 259, 127, 12, 156, 12, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 15, 79, 79, 79, 79, 334, 13, 13, 13, 13, - 13, 16, 214, 16, 43, 13, 30, 30, 30, 30, - 30, 30, 30, 30, 43, 131, 43, 215, 43, 34, - 251, 141, 34, 43, 136, 37, 34, 13, 13, 34, - 34, 34, 34, 34, 296, 37, 37, 37, 34, 37, - 334, 153, 34, 150, 37, 121, 236, 37, 295, 43, - 214, 13, 13, 13, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 80, - 80, 80, 80, 141, 81, 215, 154, 14, 14, 14, - 14, 14, 35, 226, 270, 296, 14, 720, 35, 182, + 79, 79, 79, 79, 90, 90, 90, 90, 13, 13, + 13, 13, 13, 34, 128, 191, 34, 13, 279, 36, + 34, 137, 36, 34, 34, 34, 34, 34, 223, 36, + 159, 36, 34, 36, 40, 261, 34, 35, 36, 13, + 13, 13, 191, 35, 40, 279, 40, 35, 40, 35, + 35, 35, 244, 40, 160, 222, 35, 178, 178, 178, + 178, 268, 268, 234, 13, 13, 13, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 238, 159, 177, 177, 37, 223, 261, 407, + 14, 14, 14, 14, 14, 177, 37, 37, 37, 14, - 81, 182, 35, 153, 35, 35, 35, 150, 447, 182, - 36, 35, 236, 36, 230, 38, 38, 295, 14, 14, - 36, 270, 36, 720, 36, 592, 38, 447, 38, 36, - 38, 81, 38, 154, 333, 38, 41, 41, 719, 41, - 341, 226, 14, 14, 14, 23, 154, 41, 41, 41, - 341, 41, 171, 171, 41, 592, 41, 84, 84, 84, - 84, 23, 230, 171, 253, 23, 23, 23, 23, 23, + 37, 190, 160, 190, 222, 37, 44, 44, 37, 244, + 44, 190, 234, 38, 38, 160, 44, 278, 44, 278, + 44, 14, 14, 14, 38, 44, 38, 278, 38, 728, + 38, 238, 727, 38, 350, 44, 100, 100, 100, 100, + 100, 100, 100, 100, 350, 407, 14, 14, 14, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 23, 343, 415, 97, 97, 97, 97, 415, 726, + 725, 97, 647, 304, 316, 724, 723, 23, 97, 97, + 722, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 647, 343, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 333, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 33, 253, 718, 33, 33, - 33, 33, 33, 33, 33, 33, 173, 173, 173, 173, - 307, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 247, 316, 33, + 23, 23, 33, 304, 316, 33, 33, 33, 33, 33, + 33, 33, 33, 721, 325, 342, 335, 720, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 39, 252, 347, 332, 717, 42, 42, 269, 307, - 269, 39, 385, 39, 42, 39, 367, 42, 269, 42, + 33, 33, 33, 33, 255, 305, 375, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 39, + 260, 320, 341, 342, 41, 41, 325, 41, 335, 39, + 356, 39, 392, 39, 376, 41, 41, 41, 39, 41, + 43, 375, 41, 255, 41, 42, 42, 305, 394, 410, - 39, 42, 716, 44, 44, 247, 42, 44, 326, 368, - 366, 402, 39, 44, 388, 44, 385, 44, 715, 316, - 458, 714, 44, 39, 45, 45, 46, 45, 379, 46, - 252, 44, 332, 383, 398, 45, 46, 45, 46, 45, - 46, 45, 347, 47, 45, 46, 47, 394, 367, 401, - 47, 48, 393, 47, 366, 47, 400, 47, 388, 48, - 48, 47, 47, 49, 411, 402, 47, 45, 368, 326, - 48, 431, 48, 49, 48, 49, 48, 49, 50, 48, - 379, 49, 49, 444, 458, 490, 51, 518, 50, 398, - 50, 48, 50, 51, 383, 394, 51, 50, 51, 406, + 43, 39, 43, 42, 43, 377, 42, 402, 42, 43, + 42, 397, 39, 45, 45, 42, 45, 719, 320, 260, + 403, 341, 394, 481, 45, 388, 45, 409, 45, 46, + 45, 411, 46, 45, 439, 47, 43, 376, 47, 46, + 356, 46, 47, 46, 392, 47, 527, 47, 46, 47, + 461, 48, 50, 47, 47, 601, 397, 45, 47, 48, + 48, 410, 50, 49, 50, 377, 50, 402, 420, 403, + 48, 50, 48, 49, 48, 49, 48, 49, 388, 48, + 481, 49, 49, 51, 441, 601, 411, 409, 50, 439, + 51, 527, 48, 51, 440, 51, 461, 51, 53, 53, - 51, 461, 49, 452, 406, 51, 53, 53, 53, 53, - 401, 393, 713, 50, 712, 400, 411, 431, 711, 490, - 53, 53, 53, 53, 53, 53, 53, 53, 76, 444, - 430, 518, 443, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 91, 91, 91, 91, 432, 452, 461, - 91, 76, 76, 76, 76, 76, 443, 91, 91, 94, - 94, 94, 94, 94, 94, 94, 94, 97, 97, 97, - 97, 97, 97, 97, 97, 100, 101, 457, 403, 403, - 403, 403, 76, 76, 430, 100, 101, 100, 101, 100, - 101, 102, 104, 101, 100, 101, 489, 472, 721, 432, + 53, 53, 51, 49, 103, 103, 103, 103, 103, 103, + 103, 103, 53, 53, 53, 53, 53, 53, 53, 53, + 76, 420, 453, 456, 717, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 452, 471, 441, 106, 107, + 466, 440, 456, 76, 76, 76, 76, 76, 106, 107, + 106, 107, 106, 107, 108, 715, 107, 106, 107, 452, + 412, 412, 412, 412, 108, 467, 108, 109, 108, 453, + 110, 499, 472, 108, 76, 76, 76, 109, 557, 109, + 110, 109, 110, 470, 110, 111, 109, 473, 474, 110, + 109, 519, 714, 466, 500, 111, 471, 111, 528, 111, - 462, 102, 104, 102, 104, 102, 104, 76, 77, 503, - 102, 104, 464, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 463, 721, 491, 105, 103, 510, 457, - 489, 77, 77, 77, 77, 77, 105, 103, 105, 103, - 105, 103, 107, 503, 105, 105, 103, 107, 489, 77, - 103, 519, 107, 472, 107, 108, 107, 403, 109, 462, - 464, 107, 77, 77, 710, 108, 110, 108, 109, 108, - 109, 465, 109, 108, 108, 538, 110, 109, 110, 110, - 110, 491, 510, 463, 514, 110, 505, 77, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, + 76, 77, 522, 111, 111, 499, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 192, 192, 192, 192, + 192, 192, 192, 192, 77, 77, 77, 77, 77, 113, + 467, 512, 470, 472, 113, 114, 473, 474, 557, 113, + 412, 113, 77, 113, 523, 114, 519, 114, 113, 114, + 115, 500, 526, 114, 114, 77, 77, 77, 116, 522, + 115, 514, 115, 528, 115, 512, 547, 549, 116, 115, + 116, 116, 116, 713, 498, 529, 712, 116, 523, 535, + 550, 77, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 111, 526, 112, 112, 522, 519, 513, 520, 514, 465, - 111, 522, 111, 112, 111, 112, 112, 112, 114, 111, - 113, 113, 112, 540, 505, 552, 538, 548, 114, 114, - 114, 113, 114, 113, 115, 113, 539, 114, 115, 541, - 113, 520, 116, 517, 115, 708, 115, 613, 115, 706, - 550, 526, 116, 115, 116, 561, 116, 117, 117, 117, - 119, 116, 513, 118, 118, 554, 558, 117, 560, 117, - 119, 117, 119, 118, 119, 118, 117, 118, 120, 119, - 579, 118, 118, 123, 540, 552, 548, 562, 120, 541, + 105, 105, 105, 105, 117, 526, 118, 118, 498, 529, + 514, 561, 569, 710, 117, 566, 117, 118, 117, 118, + 118, 118, 120, 117, 119, 119, 118, 498, 547, 549, + 535, 550, 120, 120, 120, 119, 120, 119, 121, 119, + 548, 120, 121, 559, 119, 709, 122, 570, 121, 563, + 121, 567, 121, 572, 571, 575, 122, 121, 122, 600, + 122, 123, 123, 123, 125, 122, 566, 124, 124, 569, + 606, 123, 561, 123, 125, 123, 125, 124, 125, 124, + 123, 124, 126, 125, 575, 124, 124, 129, 571, 588, + 589, 674, 126, 600, 126, 126, 126, 129, 563, 585, - 120, 120, 120, 123, 613, 517, 124, 120, 557, 124, - 586, 539, 580, 123, 125, 123, 124, 123, 124, 561, - 124, 550, 123, 554, 125, 124, 125, 563, 125, 126, - 126, 562, 591, 125, 560, 596, 618, 558, 576, 126, - 127, 126, 581, 126, 589, 588, 126, 126, 126, 579, - 127, 128, 127, 127, 127, 594, 576, 129, 557, 127, - 580, 128, 586, 128, 598, 128, 591, 129, 130, 129, - 128, 129, 597, 128, 637, 599, 129, 612, 130, 705, - 130, 132, 130, 704, 133, 596, 623, 130, 563, 132, - 589, 132, 618, 132, 133, 132, 133, 134, 133, 621, + 130, 126, 570, 130, 606, 559, 548, 129, 131, 129, + 130, 129, 130, 567, 130, 572, 129, 585, 131, 130, + 131, 598, 131, 132, 132, 627, 590, 131, 574, 574, + 574, 574, 622, 132, 133, 132, 646, 132, 597, 589, + 132, 132, 132, 729, 133, 134, 133, 133, 133, 588, + 674, 135, 708, 133, 595, 134, 707, 134, 706, 134, + 607, 135, 136, 135, 134, 135, 621, 134, 598, 729, + 135, 603, 136, 605, 136, 138, 136, 608, 139, 623, + 622, 136, 627, 138, 630, 138, 590, 138, 139, 138, + 139, 140, 139, 646, 138, 629, 139, 139, 597, 141, - 132, 581, 133, 133, 588, 135, 597, 134, 137, 134, - 614, 134, 639, 620, 594, 135, 134, 135, 137, 135, - 137, 138, 137, 135, 135, 598, 137, 137, 627, 612, - 637, 138, 139, 138, 599, 138, 565, 565, 565, 565, - 138, 138, 139, 644, 139, 140, 139, 623, 140, 625, - 703, 139, 140, 701, 628, 140, 629, 140, 621, 140, - 142, 142, 614, 649, 140, 620, 700, 143, 639, 638, - 699, 142, 678, 142, 665, 142, 645, 143, 144, 143, - 142, 143, 143, 698, 145, 143, 143, 697, 144, 627, - 144, 647, 144, 147, 145, 146, 145, 144, 145, 644, + 632, 140, 143, 140, 634, 140, 636, 595, 574, 141, + 140, 141, 143, 141, 143, 144, 143, 141, 141, 621, + 143, 143, 607, 637, 605, 144, 145, 144, 638, 144, + 700, 603, 623, 656, 144, 144, 145, 608, 145, 146, + 145, 648, 146, 699, 630, 145, 146, 653, 629, 146, + 698, 146, 654, 146, 148, 148, 651, 634, 146, 730, + 660, 149, 632, 697, 658, 148, 659, 148, 636, 148, + 703, 149, 150, 149, 148, 149, 149, 661, 151, 149, + 149, 638, 150, 637, 150, 730, 150, 153, 151, 152, + 151, 150, 151, 656, 151, 694, 150, 151, 648, 152, - 145, 625, 144, 145, 638, 146, 147, 146, 629, 146, - 642, 657, 148, 628, 146, 565, 147, 148, 147, 649, - 147, 652, 148, 149, 148, 147, 148, 678, 645, 151, - 650, 148, 665, 149, 691, 149, 151, 149, 651, 151, - 692, 151, 149, 151, 155, 152, 152, 690, 151, 152, - 647, 659, 664, 682, 155, 152, 155, 152, 155, 152, - 642, 657, 155, 155, 152, 158, 158, 158, 158, 184, - 184, 184, 184, 184, 184, 184, 184, 652, 658, 158, - 158, 158, 158, 158, 158, 158, 158, 159, 692, 650, - 651, 159, 159, 159, 159, 159, 159, 159, 159, 160, + 153, 152, 667, 152, 653, 654, 154, 651, 152, 687, + 153, 154, 153, 660, 153, 666, 154, 155, 154, 153, + 154, 658, 691, 157, 690, 154, 659, 155, 703, 155, + 157, 155, 668, 157, 661, 157, 155, 157, 161, 158, + 158, 676, 157, 158, 609, 609, 609, 609, 161, 158, + 161, 158, 161, 158, 680, 667, 161, 161, 158, 164, + 164, 164, 164, 673, 678, 687, 666, 689, 688, 711, + 693, 695, 686, 164, 164, 164, 164, 164, 164, 164, + 164, 165, 701, 668, 691, 165, 165, 165, 165, 165, + 165, 165, 165, 166, 676, 679, 681, 166, 166, 166, - 667, 659, 664, 160, 160, 160, 160, 160, 160, 160, - 160, 187, 189, 190, 682, 189, 689, 688, 685, 681, - 702, 694, 189, 190, 189, 190, 189, 190, 191, 192, - 658, 189, 190, 600, 600, 600, 600, 671, 191, 192, - 191, 192, 191, 192, 669, 680, 679, 191, 192, 684, - 686, 670, 667, 677, 675, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 193, 694, 702, - 672, 674, 673, 666, 687, 195, 663, 193, 196, 193, - 193, 193, 195, 671, 669, 195, 193, 195, 196, 195, + 166, 166, 166, 166, 166, 195, 197, 198, 684, 197, + 683, 680, 682, 675, 673, 678, 197, 198, 197, 198, + 197, 198, 199, 200, 609, 197, 198, 693, 695, 711, + 696, 701, 199, 200, 199, 200, 199, 200, 704, 672, + 671, 199, 200, 664, 663, 662, 657, 681, 679, 705, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 201, 655, 652, 644, 640, 639, 635, 633, + 203, 696, 201, 204, 201, 201, 201, 203, 631, 704, + 203, 201, 203, 204, 203, 204, 205, 204, 628, 203, - 196, 197, 196, 670, 195, 684, 686, 196, 662, 198, - 655, 197, 600, 197, 695, 197, 654, 199, 197, 198, - 197, 198, 696, 198, 653, 200, 648, 199, 198, 199, - 672, 199, 200, 199, 687, 200, 199, 200, 201, 200, - 646, 643, 635, 631, 200, 630, 202, 626, 201, 203, - 201, 624, 201, 622, 619, 201, 202, 201, 202, 203, - 202, 203, 609, 203, 695, 202, 203, 203, 203, 204, - 204, 205, 696, 603, 205, 602, 593, 204, 590, 587, - 204, 205, 204, 205, 204, 205, 206, 582, 570, 204, - 205, 567, 207, 553, 549, 516, 206, 507, 206, 206, + 705, 618, 204, 612, 206, 611, 205, 602, 205, 599, + 205, 596, 207, 205, 206, 205, 206, 591, 206, 579, + 208, 576, 207, 206, 207, 562, 207, 208, 207, 558, + 208, 207, 208, 209, 208, 525, 516, 511, 478, 208, + 477, 210, 458, 209, 211, 209, 416, 209, 351, 349, + 209, 210, 209, 210, 211, 210, 211, 280, 211, 273, + 210, 211, 211, 211, 212, 212, 213, 272, 271, 213, + 270, 269, 212, 266, 263, 212, 213, 212, 213, 212, + 213, 214, 202, 196, 212, 213, 189, 215, 187, 185, + 183, 214, 181, 214, 214, 214, 176, 215, 216, 215, - 206, 502, 207, 208, 207, 206, 207, 469, 468, 209, - 449, 207, 209, 208, 208, 208, 407, 208, 342, 209, - 210, 209, 208, 209, 340, 271, 211, 264, 209, 211, - 210, 263, 210, 210, 210, 262, 211, 212, 211, 210, - 211, 261, 258, 255, 194, 211, 188, 212, 213, 212, - 181, 212, 179, 177, 212, 175, 212, 170, 213, 213, - 213, 216, 213, 168, 163, 157, 106, 213, 98, 217, - 95, 216, 218, 216, 92, 216, 90, 88, 216, 217, - 216, 217, 218, 217, 218, 218, 218, 219, 217, 87, - 220, 218, 86, 221, 83, 69, 221, 219, 66, 219, + 214, 215, 174, 169, 217, 163, 215, 217, 216, 216, + 216, 112, 216, 104, 217, 218, 217, 216, 217, 101, + 98, 219, 96, 217, 219, 218, 94, 218, 218, 218, + 93, 219, 220, 219, 218, 219, 92, 89, 84, 83, + 219, 82, 220, 221, 220, 69, 220, 66, 62, 220, + 61, 220, 58, 221, 221, 221, 224, 221, 57, 52, + 31, 27, 221, 22, 225, 21, 224, 226, 224, 18, + 224, 17, 0, 224, 225, 224, 225, 226, 225, 226, + 226, 226, 227, 225, 0, 228, 226, 0, 229, 0, + 0, 229, 227, 0, 227, 228, 227, 228, 229, 228, - 220, 219, 220, 221, 220, 221, 219, 221, 220, 220, - 222, 223, 221, 62, 61, 58, 57, 52, 31, 222, - 27, 223, 224, 223, 22, 223, 21, 18, 17, 222, - 223, 222, 224, 222, 224, 225, 224, 0, 222, 0, - 0, 224, 0, 227, 0, 225, 227, 225, 0, 225, - 0, 0, 0, 227, 225, 227, 228, 227, 0, 228, - 0, 0, 227, 0, 229, 0, 228, 231, 228, 0, - 228, 229, 0, 0, 229, 228, 229, 231, 229, 231, - 232, 231, 0, 229, 0, 231, 231, 0, 233, 0, - 232, 0, 232, 0, 232, 0, 234, 0, 233, 232, + 229, 227, 229, 228, 228, 230, 231, 229, 0, 0, + 0, 0, 0, 0, 230, 0, 231, 232, 231, 0, + 231, 0, 0, 0, 230, 231, 230, 232, 230, 232, + 233, 232, 0, 230, 0, 0, 232, 0, 235, 0, + 233, 235, 233, 0, 233, 0, 0, 0, 235, 233, + 235, 236, 235, 0, 236, 0, 0, 235, 0, 237, + 0, 236, 239, 236, 0, 236, 237, 0, 0, 237, + 236, 237, 239, 237, 239, 240, 239, 0, 237, 0, + 239, 239, 0, 241, 0, 240, 0, 240, 0, 240, + 0, 242, 0, 241, 240, 241, 0, 241, 0, 243, - 233, 0, 233, 0, 235, 233, 234, 233, 234, 0, - 234, 0, 0, 234, 235, 234, 235, 237, 235, 238, - 238, 0, 0, 235, 235, 0, 0, 237, 239, 237, - 238, 237, 238, 0, 238, 0, 237, 0, 239, 238, - 239, 240, 239, 0, 0, 0, 0, 239, 0, 241, - 0, 240, 241, 240, 0, 240, 0, 242, 0, 241, - 240, 241, 0, 241, 242, 243, 0, 242, 241, 242, - 0, 242, 0, 0, 0, 243, 242, 243, 244, 243, - 0, 0, 0, 243, 243, 0, 245, 0, 244, 0, - 244, 0, 244, 0, 0, 244, 245, 244, 245, 246, + 241, 242, 241, 242, 0, 242, 0, 0, 242, 243, + 242, 243, 245, 243, 246, 246, 0, 0, 243, 243, + 0, 0, 245, 247, 245, 246, 245, 246, 0, 246, + 0, 245, 0, 247, 246, 247, 248, 247, 0, 0, + 0, 0, 247, 0, 249, 0, 248, 249, 248, 0, + 248, 0, 250, 0, 249, 248, 249, 0, 249, 250, + 251, 0, 250, 249, 250, 0, 250, 0, 0, 0, + 251, 250, 251, 252, 251, 0, 0, 0, 251, 251, + 0, 253, 0, 252, 0, 252, 0, 252, 0, 0, + 252, 253, 252, 253, 254, 253, 0, 254, 253, 0, - 245, 0, 246, 245, 0, 245, 0, 248, 0, 246, - 0, 246, 0, 246, 0, 0, 250, 248, 246, 248, - 248, 248, 248, 249, 250, 0, 248, 248, 0, 0, - 0, 0, 0, 249, 250, 249, 250, 249, 250, 254, - 0, 249, 249, 250, 0, 254, 0, 0, 0, 254, - 0, 254, 0, 254, 256, 256, 256, 256, 254, 0, - 0, 0, 257, 257, 257, 257, 0, 0, 256, 256, - 256, 256, 256, 256, 256, 256, 257, 257, 257, 257, - 257, 257, 257, 257, 272, 273, 0, 0, 0, 0, - 0, 0, 273, 0, 272, 273, 272, 273, 272, 273, + 253, 0, 256, 0, 254, 0, 254, 0, 254, 0, + 0, 258, 256, 254, 256, 256, 256, 256, 257, 258, + 0, 256, 256, 0, 0, 0, 0, 0, 257, 258, + 257, 258, 257, 258, 262, 0, 257, 257, 258, 0, + 262, 0, 0, 0, 262, 0, 262, 0, 262, 264, + 264, 264, 264, 262, 0, 0, 0, 265, 265, 265, + 265, 0, 0, 264, 264, 264, 264, 264, 264, 264, + 264, 265, 265, 265, 265, 265, 265, 265, 265, 281, + 282, 0, 0, 0, 0, 0, 0, 282, 0, 281, + 282, 281, 282, 281, 282, 283, 0, 0, 281, 282, - 274, 0, 0, 272, 273, 0, 275, 0, 0, 0, - 274, 274, 274, 0, 274, 0, 275, 276, 275, 274, - 275, 0, 0, 277, 0, 275, 277, 276, 0, 276, - 0, 276, 0, 277, 0, 277, 276, 277, 278, 278, - 279, 279, 277, 0, 0, 0, 0, 0, 0, 278, - 279, 278, 279, 278, 279, 280, 0, 0, 278, 279, - 0, 276, 0, 281, 0, 280, 0, 280, 0, 280, - 0, 282, 280, 281, 280, 281, 281, 281, 0, 0, - 0, 282, 281, 282, 284, 282, 283, 283, 0, 282, - 282, 0, 0, 0, 284, 285, 284, 283, 284, 283, + 0, 284, 0, 0, 0, 283, 283, 283, 0, 283, + 0, 284, 285, 284, 283, 284, 0, 0, 286, 0, + 284, 286, 285, 0, 285, 0, 285, 0, 286, 0, + 286, 285, 286, 287, 287, 288, 288, 286, 0, 0, + 0, 0, 0, 0, 287, 288, 287, 288, 287, 288, + 289, 0, 0, 287, 288, 0, 0, 285, 290, 0, + 289, 0, 289, 0, 289, 0, 291, 289, 290, 289, + 290, 290, 290, 0, 0, 0, 291, 290, 291, 293, + 291, 292, 292, 0, 291, 291, 0, 0, 0, 293, + 294, 293, 292, 293, 292, 0, 292, 0, 293, 0, - 0, 283, 0, 284, 0, 285, 283, 285, 286, 285, - 286, 287, 0, 287, 285, 0, 0, 0, 286, 0, - 286, 287, 286, 287, 0, 287, 288, 286, 0, 288, - 287, 0, 289, 0, 0, 0, 288, 0, 288, 0, - 288, 0, 289, 290, 289, 288, 289, 0, 0, 291, - 290, 289, 0, 290, 0, 290, 0, 290, 0, 291, - 292, 291, 290, 291, 0, 291, 0, 0, 291, 0, - 292, 0, 292, 0, 292, 293, 292, 0, 293, 292, - 0, 294, 0, 0, 0, 293, 0, 293, 0, 293, - 0, 294, 297, 294, 293, 294, 0, 0, 298, 0, + 294, 292, 294, 295, 294, 295, 296, 0, 296, 294, + 0, 0, 0, 295, 0, 295, 296, 295, 296, 0, + 296, 297, 295, 0, 297, 296, 0, 298, 0, 0, + 0, 297, 0, 297, 0, 297, 0, 298, 299, 298, + 297, 298, 0, 0, 300, 299, 298, 0, 299, 0, + 299, 0, 299, 0, 300, 301, 300, 299, 300, 0, + 300, 0, 0, 300, 0, 301, 0, 301, 0, 301, + 302, 301, 0, 302, 301, 0, 303, 0, 0, 0, + 302, 0, 302, 0, 302, 0, 303, 306, 303, 302, + 303, 0, 0, 307, 0, 303, 0, 306, 0, 306, - 294, 0, 297, 0, 297, 0, 297, 0, 298, 0, - 298, 297, 298, 299, 300, 0, 298, 298, 0, 0, - 299, 0, 0, 299, 300, 299, 300, 299, 300, 301, - 300, 0, 299, 300, 302, 302, 297, 0, 0, 301, - 0, 301, 304, 301, 0, 302, 0, 302, 301, 302, - 303, 302, 0, 304, 302, 303, 0, 0, 0, 0, - 303, 305, 303, 304, 303, 304, 303, 304, 0, 303, - 0, 305, 304, 305, 306, 305, 0, 0, 305, 0, - 305, 0, 308, 308, 306, 309, 306, 0, 306, 0, - 0, 0, 308, 306, 308, 309, 308, 309, 310, 309, + 0, 306, 0, 307, 0, 307, 306, 307, 308, 309, + 0, 307, 307, 0, 0, 308, 0, 0, 308, 309, + 308, 309, 308, 309, 310, 309, 0, 308, 309, 311, + 311, 0, 306, 0, 310, 0, 310, 313, 310, 0, + 311, 0, 311, 310, 311, 312, 311, 0, 313, 311, + 312, 0, 0, 0, 0, 312, 314, 312, 313, 312, + 313, 312, 313, 0, 312, 0, 314, 313, 314, 315, + 314, 0, 0, 314, 0, 314, 0, 317, 317, 315, + 318, 315, 0, 315, 0, 0, 0, 317, 315, 317, + 318, 317, 318, 319, 318, 0, 317, 322, 318, 318, - 0, 308, 313, 309, 309, 0, 312, 0, 310, 312, - 310, 310, 310, 0, 0, 0, 312, 310, 312, 313, - 312, 0, 0, 0, 0, 312, 0, 314, 0, 313, - 314, 313, 0, 313, 315, 315, 0, 314, 313, 314, - 0, 314, 0, 317, 0, 315, 314, 315, 0, 315, - 0, 318, 0, 317, 315, 317, 0, 317, 0, 0, - 0, 318, 317, 318, 319, 318, 0, 319, 0, 318, - 318, 0, 320, 0, 319, 321, 319, 0, 319, 0, - 0, 0, 320, 319, 320, 321, 320, 321, 0, 321, - 323, 320, 322, 322, 321, 0, 324, 0, 0, 0, + 0, 321, 0, 319, 321, 319, 319, 319, 0, 0, + 0, 321, 319, 321, 322, 321, 0, 0, 0, 0, + 321, 0, 323, 0, 322, 323, 322, 0, 322, 324, + 324, 0, 323, 322, 323, 0, 323, 0, 326, 0, + 324, 323, 324, 0, 324, 0, 327, 0, 326, 324, + 326, 0, 326, 0, 0, 0, 327, 326, 327, 328, + 327, 0, 328, 0, 327, 327, 0, 329, 0, 328, + 330, 328, 0, 328, 0, 0, 0, 329, 328, 329, + 330, 329, 330, 0, 330, 332, 329, 331, 331, 330, + 0, 333, 0, 0, 0, 332, 0, 332, 331, 332, - 323, 0, 323, 322, 323, 322, 324, 322, 324, 323, - 324, 325, 322, 0, 327, 324, 0, 328, 0, 0, - 0, 325, 0, 325, 327, 325, 327, 328, 327, 328, - 325, 328, 329, 327, 323, 329, 328, 0, 330, 0, - 0, 0, 329, 0, 329, 0, 329, 0, 330, 331, - 330, 329, 330, 0, 0, 335, 0, 330, 0, 331, - 0, 331, 0, 331, 0, 335, 331, 335, 331, 335, - 0, 0, 0, 330, 335, 336, 336, 336, 336, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, - 336, 336, 336, 336, 336, 336, 336, 337, 337, 337, + 331, 333, 331, 333, 332, 333, 334, 331, 0, 336, + 333, 0, 337, 0, 0, 0, 334, 0, 334, 336, + 334, 336, 337, 336, 337, 334, 337, 0, 336, 338, + 332, 337, 338, 0, 0, 339, 0, 0, 0, 338, + 0, 338, 0, 338, 0, 339, 340, 339, 338, 339, + 0, 0, 0, 0, 339, 0, 340, 0, 340, 0, + 340, 0, 344, 340, 0, 340, 0, 0, 0, 0, + 0, 339, 344, 0, 344, 0, 344, 345, 345, 345, + 345, 344, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 345, 345, 345, 345, 345, 345, 345, 345, 346, - 337, 0, 0, 0, 0, 0, 0, 337, 0, 0, - 0, 337, 337, 337, 337, 337, 337, 337, 337, 338, - 338, 338, 338, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 338, 338, 338, 338, 338, 338, 338, - 338, 339, 0, 343, 0, 339, 339, 339, 339, 339, - 339, 339, 339, 343, 0, 343, 0, 343, 344, 344, - 0, 343, 343, 0, 0, 0, 0, 0, 344, 0, - 344, 346, 344, 345, 345, 0, 337, 344, 0, 0, - 0, 346, 0, 346, 345, 346, 345, 0, 345, 0, - 346, 348, 348, 345, 0, 349, 349, 0, 350, 0, + 346, 346, 346, 0, 0, 0, 0, 0, 0, 346, + 0, 0, 0, 346, 346, 346, 346, 346, 346, 346, + 346, 347, 347, 347, 347, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 347, 347, 347, 347, 347, + 347, 347, 347, 348, 0, 352, 355, 348, 348, 348, + 348, 348, 348, 348, 348, 352, 355, 352, 355, 352, + 355, 353, 353, 352, 352, 355, 0, 0, 0, 0, + 0, 353, 0, 353, 0, 353, 354, 354, 0, 346, + 353, 0, 357, 357, 0, 0, 0, 354, 0, 354, + 0, 354, 0, 357, 0, 357, 354, 357, 358, 358, - 0, 350, 348, 0, 348, 349, 348, 349, 350, 349, - 350, 348, 350, 351, 349, 0, 352, 350, 0, 0, - 0, 0, 0, 351, 353, 351, 352, 351, 352, 0, - 352, 0, 351, 0, 353, 352, 353, 354, 353, 0, - 353, 0, 0, 353, 354, 355, 0, 354, 0, 354, - 0, 354, 0, 0, 0, 355, 354, 355, 356, 355, - 0, 356, 0, 0, 355, 356, 0, 0, 356, 357, - 356, 357, 356, 0, 0, 358, 0, 356, 358, 357, - 0, 357, 358, 357, 0, 358, 359, 358, 357, 358, - 0, 0, 0, 0, 358, 0, 359, 360, 359, 0, + 0, 359, 357, 0, 359, 0, 0, 0, 358, 360, + 358, 359, 358, 359, 0, 359, 0, 358, 0, 360, + 359, 360, 361, 360, 0, 0, 0, 0, 360, 0, + 362, 0, 361, 0, 361, 0, 361, 0, 363, 0, + 362, 361, 362, 0, 362, 363, 362, 0, 363, 362, + 363, 364, 363, 0, 0, 0, 0, 363, 0, 365, + 0, 364, 365, 364, 0, 364, 365, 0, 0, 365, + 364, 365, 366, 365, 366, 0, 0, 0, 365, 0, + 367, 0, 366, 367, 366, 0, 366, 367, 368, 0, + 367, 366, 367, 0, 367, 0, 369, 0, 368, 367, - 359, 0, 359, 0, 0, 359, 0, 360, 0, 360, - 0, 360, 361, 361, 0, 360, 360, 0, 362, 0, - 0, 0, 361, 0, 361, 0, 361, 0, 362, 363, - 362, 361, 362, 0, 0, 364, 362, 362, 0, 363, - 0, 363, 0, 363, 0, 364, 363, 364, 363, 364, - 365, 369, 0, 0, 364, 0, 0, 0, 369, 0, - 365, 369, 365, 369, 365, 369, 0, 0, 371, 365, - 369, 370, 370, 0, 370, 0, 0, 0, 371, 0, - 371, 370, 371, 370, 0, 370, 371, 371, 373, 372, - 370, 372, 0, 0, 0, 0, 0, 0, 373, 372, + 368, 0, 368, 0, 368, 0, 369, 368, 369, 0, + 369, 370, 370, 0, 369, 369, 0, 371, 0, 0, + 0, 370, 0, 370, 0, 370, 0, 371, 372, 371, + 370, 371, 0, 0, 373, 371, 371, 0, 372, 0, + 372, 0, 372, 0, 373, 372, 373, 372, 373, 374, + 378, 0, 0, 373, 0, 0, 0, 378, 0, 374, + 378, 374, 378, 374, 378, 0, 0, 380, 374, 378, + 379, 379, 0, 379, 0, 0, 0, 380, 0, 380, + 379, 380, 379, 0, 379, 380, 380, 382, 381, 379, + 381, 0, 0, 0, 0, 0, 0, 382, 381, 382, - 373, 372, 373, 372, 374, 0, 0, 373, 372, 0, - 375, 0, 0, 375, 374, 0, 374, 0, 374, 0, - 375, 376, 375, 374, 375, 377, 0, 0, 378, 375, - 0, 376, 0, 376, 377, 376, 0, 0, 376, 0, - 376, 0, 380, 0, 377, 378, 377, 0, 377, 0, - 0, 0, 380, 377, 380, 378, 380, 378, 381, 378, - 380, 380, 0, 0, 378, 0, 382, 0, 381, 0, - 381, 0, 381, 0, 384, 0, 382, 381, 382, 0, - 382, 0, 386, 0, 384, 382, 384, 0, 384, 0, - 384, 0, 386, 384, 386, 387, 386, 0, 0, 0, + 381, 382, 381, 383, 0, 0, 382, 381, 0, 384, + 0, 0, 384, 383, 0, 383, 0, 383, 0, 384, + 385, 384, 383, 384, 386, 0, 0, 387, 384, 0, + 385, 0, 385, 386, 385, 0, 0, 385, 0, 385, + 0, 389, 0, 386, 387, 386, 0, 386, 0, 0, + 0, 389, 386, 389, 387, 389, 387, 390, 387, 389, + 389, 0, 0, 387, 0, 391, 0, 390, 0, 390, + 0, 390, 0, 393, 0, 391, 390, 391, 0, 391, + 0, 395, 0, 393, 391, 393, 0, 393, 0, 393, + 0, 395, 393, 395, 396, 395, 0, 0, 0, 0, - 0, 386, 0, 0, 0, 387, 0, 387, 389, 387, - 0, 390, 0, 387, 387, 389, 0, 0, 389, 391, - 389, 390, 389, 390, 391, 390, 0, 389, 0, 391, - 390, 391, 392, 391, 0, 0, 0, 0, 391, 0, - 0, 0, 392, 395, 392, 0, 392, 0, 0, 396, - 0, 392, 396, 395, 392, 395, 0, 395, 0, 396, - 397, 396, 395, 396, 0, 0, 0, 0, 396, 0, - 397, 399, 397, 0, 397, 0, 397, 0, 0, 397, - 0, 399, 0, 399, 0, 399, 404, 404, 404, 404, - 399, 0, 0, 0, 0, 0, 0, 0, 408, 0, + 395, 0, 0, 0, 396, 0, 396, 398, 396, 0, + 399, 0, 396, 396, 398, 0, 0, 398, 400, 398, + 399, 398, 399, 400, 399, 0, 398, 0, 400, 399, + 400, 401, 400, 0, 0, 0, 0, 400, 0, 0, + 0, 401, 404, 401, 0, 401, 0, 0, 405, 0, + 401, 405, 404, 401, 404, 0, 404, 0, 405, 406, + 405, 404, 405, 0, 0, 0, 0, 405, 0, 406, + 408, 406, 0, 406, 0, 406, 0, 0, 406, 0, + 408, 0, 408, 0, 408, 413, 413, 413, 413, 408, + 0, 0, 0, 0, 0, 0, 0, 417, 0, 413, - 404, 404, 404, 404, 404, 404, 404, 404, 408, 0, - 408, 410, 408, 409, 409, 399, 0, 408, 0, 0, - 0, 410, 412, 410, 409, 410, 409, 0, 409, 410, - 410, 0, 412, 409, 412, 413, 412, 0, 414, 0, - 0, 412, 0, 0, 0, 413, 0, 413, 414, 413, - 414, 0, 414, 413, 413, 415, 0, 414, 415, 0, - 416, 416, 0, 0, 0, 415, 0, 415, 0, 415, - 0, 416, 417, 416, 415, 416, 0, 0, 418, 0, - 416, 0, 417, 0, 417, 0, 417, 0, 418, 0, - 418, 417, 418, 419, 0, 419, 418, 418, 0, 420, + 413, 413, 413, 413, 413, 413, 413, 417, 0, 417, + 419, 417, 418, 418, 0, 408, 417, 0, 0, 0, + 419, 421, 419, 418, 419, 418, 0, 418, 419, 419, + 0, 421, 418, 421, 422, 421, 0, 423, 0, 0, + 421, 0, 0, 0, 422, 0, 422, 423, 422, 423, + 0, 423, 422, 422, 424, 0, 423, 424, 0, 425, + 425, 0, 0, 0, 424, 0, 424, 0, 424, 0, + 425, 426, 425, 424, 425, 0, 0, 427, 0, 425, + 0, 426, 0, 426, 0, 426, 0, 427, 0, 427, + 426, 427, 428, 0, 428, 427, 427, 0, 429, 0, - 0, 0, 0, 419, 0, 419, 0, 419, 0, 420, - 0, 420, 419, 420, 0, 0, 421, 420, 420, 421, - 0, 0, 422, 0, 422, 0, 421, 0, 421, 0, - 421, 0, 422, 423, 422, 421, 422, 0, 424, 424, - 0, 422, 0, 423, 0, 423, 0, 423, 0, 424, - 425, 424, 423, 424, 0, 0, 426, 0, 424, 0, - 425, 0, 425, 426, 425, 0, 426, 427, 426, 425, - 426, 0, 0, 428, 0, 426, 0, 427, 0, 427, - 428, 427, 0, 428, 427, 428, 427, 428, 429, 429, - 433, 0, 428, 0, 433, 0, 0, 0, 0, 429, + 0, 0, 428, 0, 428, 0, 428, 0, 429, 0, + 429, 428, 429, 0, 0, 430, 429, 429, 430, 0, + 0, 431, 0, 431, 0, 430, 0, 430, 0, 430, + 0, 431, 432, 431, 430, 431, 0, 433, 433, 0, + 431, 0, 432, 0, 432, 0, 432, 0, 433, 434, + 433, 432, 433, 0, 0, 435, 0, 433, 0, 434, + 0, 434, 435, 434, 0, 435, 436, 435, 434, 435, + 0, 0, 437, 0, 435, 0, 436, 0, 436, 437, + 436, 0, 437, 436, 437, 436, 437, 438, 438, 442, + 0, 437, 0, 442, 0, 0, 0, 0, 438, 442, - 433, 429, 433, 429, 433, 434, 0, 0, 429, 433, - 0, 435, 434, 435, 0, 434, 0, 434, 0, 434, - 0, 435, 436, 435, 434, 435, 0, 0, 437, 0, - 435, 437, 436, 0, 436, 0, 436, 0, 437, 436, - 437, 436, 437, 438, 438, 0, 0, 437, 0, 439, - 439, 0, 0, 438, 0, 438, 0, 438, 0, 439, - 440, 439, 438, 439, 0, 0, 0, 0, 439, 0, - 440, 0, 440, 0, 440, 441, 440, 0, 441, 440, - 0, 442, 0, 0, 0, 441, 0, 441, 0, 441, - 0, 442, 445, 442, 441, 442, 0, 0, 442, 0, + 438, 442, 438, 442, 443, 0, 0, 438, 442, 0, + 444, 443, 444, 0, 443, 0, 443, 0, 443, 0, + 444, 445, 444, 443, 444, 0, 0, 446, 0, 444, + 446, 445, 0, 445, 0, 445, 0, 446, 445, 446, + 445, 446, 447, 447, 0, 0, 446, 0, 448, 448, + 0, 0, 447, 0, 447, 0, 447, 0, 448, 449, + 448, 447, 448, 0, 0, 0, 0, 448, 0, 449, + 0, 449, 0, 449, 450, 449, 0, 450, 449, 0, + 451, 0, 0, 0, 450, 0, 450, 0, 450, 0, + 451, 454, 451, 450, 451, 0, 0, 451, 0, 451, - 442, 0, 445, 0, 445, 448, 445, 446, 446, 0, - 0, 445, 0, 0, 0, 448, 450, 448, 446, 448, - 446, 0, 446, 0, 448, 0, 450, 446, 450, 451, - 450, 0, 451, 0, 450, 450, 0, 453, 0, 451, - 0, 451, 0, 451, 0, 0, 0, 453, 451, 453, - 0, 453, 454, 454, 0, 455, 453, 453, 456, 0, - 0, 0, 454, 0, 454, 455, 454, 455, 456, 455, - 456, 454, 456, 459, 455, 0, 460, 456, 0, 0, - 0, 0, 0, 459, 0, 459, 460, 459, 460, 0, - 460, 0, 459, 460, 0, 460, 466, 466, 466, 466, + 0, 454, 0, 454, 457, 454, 455, 455, 0, 0, + 454, 0, 0, 0, 457, 459, 457, 455, 457, 455, + 0, 455, 0, 457, 0, 459, 455, 459, 460, 459, + 0, 460, 0, 459, 459, 0, 462, 0, 460, 0, + 460, 0, 460, 0, 0, 0, 462, 460, 462, 0, + 462, 463, 463, 0, 464, 462, 462, 465, 0, 0, + 0, 463, 0, 463, 464, 463, 464, 465, 464, 465, + 463, 465, 468, 464, 0, 469, 465, 0, 0, 0, + 0, 0, 468, 0, 468, 469, 468, 469, 0, 469, + 0, 468, 469, 0, 469, 475, 475, 475, 475, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 466, 466, 466, 466, 466, 466, 466, 466, 467, 0, - 470, 0, 467, 467, 467, 467, 467, 467, 467, 467, - 470, 0, 470, 471, 470, 0, 473, 0, 470, 470, - 471, 0, 0, 471, 0, 471, 473, 471, 473, 0, - 473, 474, 471, 0, 474, 473, 0, 475, 0, 0, - 0, 474, 0, 474, 0, 474, 0, 475, 476, 475, - 474, 475, 0, 0, 477, 476, 475, 0, 476, 0, - 476, 477, 476, 0, 477, 478, 477, 476, 477, 0, - 0, 479, 0, 477, 0, 478, 0, 478, 0, 478, - - 0, 479, 480, 479, 478, 479, 0, 0, 0, 480, - 479, 0, 480, 481, 480, 481, 480, 0, 0, 482, - 0, 480, 0, 481, 0, 481, 0, 481, 0, 482, - 483, 482, 481, 482, 0, 483, 484, 0, 482, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 475, + 475, 475, 475, 475, 475, 475, 475, 476, 0, 479, + 0, 476, 476, 476, 476, 476, 476, 476, 476, 479, + 0, 479, 480, 479, 0, 482, 0, 479, 479, 480, + 0, 0, 480, 0, 480, 482, 480, 482, 0, 482, + 483, 480, 0, 483, 482, 0, 484, 0, 0, 0, 483, 0, 483, 0, 483, 0, 484, 485, 484, 483, - 484, 0, 0, 0, 484, 484, 0, 485, 486, 485, - 0, 485, 0, 0, 487, 485, 485, 0, 486, 0, - 486, 0, 486, 0, 487, 488, 487, 486, 487, 0, - 0, 492, 0, 487, 0, 488, 0, 488, 492, 488, - 0, 492, 493, 492, 488, 492, 0, 0, 0, 0, + 484, 0, 0, 486, 485, 484, 0, 485, 0, 485, + 486, 485, 0, 486, 487, 486, 485, 486, 0, 0, + 488, 0, 486, 0, 487, 0, 487, 0, 487, 0, - 492, 0, 493, 494, 493, 0, 493, 0, 0, 495, - 493, 493, 0, 494, 0, 494, 0, 494, 0, 495, - 496, 495, 494, 495, 0, 0, 497, 0, 495, 497, - 496, 0, 496, 0, 496, 0, 497, 496, 497, 496, - 497, 498, 499, 0, 0, 497, 0, 0, 0, 0, - 0, 498, 499, 498, 499, 498, 499, 500, 500, 498, - 498, 499, 0, 501, 0, 0, 0, 500, 0, 500, - 0, 500, 0, 501, 504, 501, 500, 501, 0, 0, - 506, 0, 501, 0, 504, 0, 504, 0, 504, 0, - 506, 508, 506, 504, 506, 0, 0, 0, 0, 506, + 488, 489, 488, 487, 488, 0, 0, 0, 489, 488, + 0, 489, 490, 489, 490, 489, 0, 0, 491, 0, + 489, 0, 490, 0, 490, 0, 490, 0, 491, 492, + 491, 490, 491, 0, 492, 493, 0, 491, 0, 492, + 0, 492, 0, 492, 0, 493, 494, 493, 492, 493, + 0, 0, 0, 493, 493, 0, 494, 495, 494, 0, + 494, 0, 0, 496, 494, 494, 0, 495, 0, 495, + 0, 495, 0, 496, 497, 496, 495, 496, 0, 0, + 501, 0, 496, 0, 497, 0, 497, 501, 497, 0, + 501, 502, 501, 497, 501, 0, 0, 0, 0, 501, - 0, 508, 509, 508, 0, 508, 0, 501, 511, 0, - 508, 511, 509, 0, 509, 0, 509, 0, 511, 0, - 511, 509, 511, 512, 0, 0, 512, 511, 515, 515, - 0, 0, 0, 512, 0, 512, 0, 512, 0, 515, - 0, 515, 512, 515, 521, 521, 521, 521, 515, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, - 521, 521, 521, 521, 521, 521, 524, 525, 525, 0, - 0, 0, 0, 524, 0, 0, 524, 525, 524, 525, - 524, 525, 527, 0, 0, 524, 525, 0, 0, 0, - 528, 0, 527, 529, 527, 0, 527, 0, 527, 0, + 0, 502, 503, 502, 0, 502, 0, 0, 504, 502, + 502, 0, 503, 0, 503, 0, 503, 0, 504, 505, + 504, 503, 504, 0, 0, 506, 0, 504, 506, 505, + 0, 505, 0, 505, 0, 506, 505, 506, 505, 506, + 507, 508, 0, 0, 506, 0, 0, 0, 0, 0, + 507, 508, 507, 508, 507, 508, 509, 509, 507, 507, + 508, 0, 510, 0, 0, 0, 509, 0, 509, 0, + 509, 0, 510, 513, 510, 509, 510, 0, 0, 515, + 0, 510, 0, 513, 0, 513, 0, 513, 0, 515, + 517, 515, 513, 515, 0, 0, 518, 0, 515, 0, - 528, 527, 528, 529, 528, 529, 530, 529, 528, 528, - 0, 0, 529, 533, 531, 0, 530, 0, 530, 0, - 530, 0, 532, 0, 531, 530, 531, 531, 531, 0, - 533, 0, 532, 531, 532, 0, 532, 0, 0, 0, - 533, 532, 533, 534, 533, 0, 534, 0, 0, 533, - 0, 535, 0, 534, 0, 534, 0, 534, 0, 536, - 0, 535, 534, 535, 0, 535, 536, 537, 0, 536, - 535, 536, 0, 536, 0, 0, 0, 537, 536, 537, - 542, 537, 0, 542, 0, 0, 537, 0, 543, 0, - 542, 544, 542, 0, 542, 0, 0, 0, 543, 542, + 517, 0, 517, 0, 517, 0, 518, 510, 518, 517, + 518, 520, 0, 0, 520, 518, 0, 521, 0, 0, + 521, 520, 0, 520, 0, 520, 0, 521, 0, 521, + 520, 521, 524, 524, 0, 0, 521, 0, 0, 530, + 530, 530, 530, 524, 0, 524, 0, 524, 0, 0, + 0, 0, 524, 530, 530, 530, 530, 530, 530, 530, + 530, 533, 534, 534, 0, 0, 0, 0, 533, 0, + 0, 533, 534, 533, 534, 533, 534, 536, 0, 0, + 533, 534, 0, 0, 0, 537, 0, 536, 538, 536, + 0, 536, 0, 536, 0, 537, 536, 537, 538, 537, - 543, 544, 543, 544, 545, 544, 0, 543, 0, 0, - 544, 0, 546, 0, 545, 547, 545, 0, 545, 546, - 0, 0, 546, 545, 546, 547, 546, 547, 551, 547, - 0, 546, 555, 547, 547, 0, 556, 0, 551, 0, - 551, 0, 551, 0, 0, 0, 556, 551, 556, 555, - 556, 0, 559, 0, 0, 556, 0, 0, 0, 555, - 0, 555, 559, 555, 559, 0, 559, 0, 555, 0, - 0, 559, 564, 564, 564, 564, 0, 0, 0, 0, - 0, 0, 0, 0, 568, 0, 564, 564, 564, 564, - 564, 564, 564, 564, 568, 569, 568, 568, 568, 0, + 538, 539, 538, 537, 537, 0, 0, 538, 542, 540, + 0, 539, 0, 539, 0, 539, 0, 541, 0, 540, + 539, 540, 540, 540, 0, 542, 0, 541, 540, 541, + 0, 541, 0, 0, 0, 542, 541, 542, 543, 542, + 0, 543, 0, 0, 542, 0, 544, 0, 543, 0, + 543, 0, 543, 0, 545, 0, 544, 543, 544, 0, + 544, 545, 546, 0, 545, 544, 545, 0, 545, 0, + 0, 0, 546, 545, 546, 551, 546, 0, 551, 0, + 0, 546, 0, 552, 0, 551, 553, 551, 0, 551, + 0, 0, 0, 552, 551, 552, 553, 552, 553, 554, - 0, 571, 0, 568, 0, 569, 0, 569, 0, 569, - 0, 571, 572, 571, 569, 571, 0, 0, 573, 0, - 571, 573, 572, 0, 572, 0, 572, 0, 573, 572, - 573, 572, 573, 574, 575, 0, 0, 573, 574, 0, - 0, 0, 0, 574, 575, 574, 575, 574, 575, 577, - 578, 577, 574, 575, 0, 0, 0, 0, 0, 577, - 578, 577, 578, 577, 578, 583, 0, 0, 577, 578, - 0, 0, 0, 584, 0, 583, 0, 583, 0, 583, - 0, 583, 0, 584, 583, 584, 584, 584, 585, 595, - 0, 0, 584, 0, 0, 585, 0, 0, 585, 595, + 553, 0, 552, 0, 0, 553, 0, 555, 0, 554, + 556, 554, 0, 554, 555, 0, 0, 555, 554, 555, + 556, 555, 556, 560, 556, 0, 555, 564, 556, 556, + 0, 565, 0, 560, 0, 560, 0, 560, 0, 0, + 0, 565, 560, 565, 564, 565, 0, 568, 0, 0, + 565, 0, 0, 0, 564, 0, 564, 568, 564, 568, + 0, 568, 0, 564, 0, 0, 568, 573, 573, 573, + 573, 0, 0, 0, 0, 0, 0, 0, 0, 577, + 0, 573, 573, 573, 573, 573, 573, 573, 573, 577, + 578, 577, 577, 577, 0, 0, 580, 0, 577, 0, - 585, 595, 585, 595, 604, 605, 0, 585, 595, 0, - 0, 0, 0, 0, 604, 605, 604, 605, 604, 605, - 606, 607, 606, 604, 605, 0, 0, 0, 0, 0, - 606, 607, 606, 607, 606, 607, 608, 610, 0, 606, - 607, 0, 0, 0, 0, 0, 608, 610, 608, 610, - 608, 610, 611, 608, 0, 608, 610, 0, 615, 611, - 0, 0, 611, 0, 611, 0, 611, 0, 615, 616, - 615, 611, 615, 0, 0, 0, 0, 615, 0, 616, - 617, 616, 0, 616, 0, 0, 632, 0, 616, 0, - 617, 0, 617, 617, 617, 0, 632, 633, 632, 617, + 578, 0, 578, 0, 578, 0, 580, 581, 580, 578, + 580, 0, 0, 582, 0, 580, 582, 581, 0, 581, + 0, 581, 0, 582, 581, 582, 581, 582, 583, 584, + 0, 0, 582, 583, 0, 0, 0, 0, 583, 584, + 583, 584, 583, 584, 586, 587, 586, 583, 584, 0, + 0, 0, 0, 0, 586, 587, 586, 587, 586, 587, + 592, 0, 0, 586, 587, 0, 0, 0, 593, 0, + 592, 0, 592, 0, 592, 0, 592, 0, 593, 592, + 593, 593, 593, 594, 604, 0, 0, 593, 0, 0, + 594, 0, 0, 594, 604, 594, 604, 594, 604, 613, - 632, 0, 0, 634, 0, 632, 0, 633, 0, 633, - 0, 633, 0, 634, 636, 634, 633, 634, 0, 0, - 0, 0, 634, 0, 636, 640, 636, 0, 636, 0, - 0, 641, 636, 636, 0, 640, 0, 640, 0, 640, - 0, 641, 640, 641, 640, 641, 656, 660, 0, 0, - 641, 0, 0, 0, 0, 0, 656, 660, 656, 660, - 656, 660, 661, 676, 0, 656, 660, 0, 0, 656, - 0, 0, 661, 676, 661, 676, 661, 676, 0, 0, - 0, 661, 676, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 727, 727, 727, + 614, 0, 594, 604, 0, 0, 0, 0, 0, 613, + 614, 613, 614, 613, 614, 615, 616, 615, 613, 614, + 0, 0, 0, 0, 0, 615, 616, 615, 616, 615, + 616, 617, 619, 0, 615, 616, 0, 0, 0, 0, + 0, 617, 619, 617, 619, 617, 619, 620, 617, 0, + 617, 619, 0, 624, 620, 0, 0, 620, 0, 620, + 0, 620, 0, 624, 625, 624, 620, 624, 0, 0, + 0, 0, 624, 0, 625, 626, 625, 0, 625, 0, + 0, 641, 0, 625, 0, 626, 0, 626, 626, 626, + 0, 641, 642, 641, 626, 641, 0, 0, 643, 0, - 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, - 727, 728, 728, 728, 728, 728, 728, 728, 728, 728, - 728, 728, 728, 728, 728, 729, 729, 729, 729, 729, - 729, 729, 729, 729, 729, 729, 729, 729, 729, 730, - 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, - 730, 730, 730, 731, 731, 731, 731, 731, 731, 731, - 731, 731, 731, 731, 731, 731, 731, 732, 732, 732, - 732, 0, 732, 732, 732, 732, 732, 732, 732, 732, - 732, 733, 733, 733, 0, 0, 733, 0, 733, 0, - 733, 734, 734, 0, 734, 734, 735, 735, 0, 0, + 641, 0, 642, 0, 642, 0, 642, 0, 643, 645, + 643, 642, 643, 0, 0, 0, 0, 643, 0, 645, + 649, 645, 0, 645, 0, 0, 650, 645, 645, 0, + 649, 0, 649, 0, 649, 0, 650, 649, 650, 649, + 650, 665, 669, 0, 0, 650, 0, 0, 0, 0, + 0, 665, 669, 665, 669, 665, 669, 670, 685, 0, + 665, 669, 0, 0, 665, 0, 0, 670, 685, 670, + 685, 670, 685, 0, 0, 0, 670, 685, 735, 735, + 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, + 735, 736, 736, 736, 736, 736, 736, 736, 736, 736, - 735, 735, 735, 0, 735, 735, 735, 735, 735, 735, - 736, 736, 736, 736, 0, 736, 736, 736, 736, 736, 736, 736, 736, 736, 737, 737, 737, 737, 737, 737, - 737, 737, 737, 0, 737, 737, 738, 0, 0, 0, - 738, 738, 738, 738, 738, 738, 738, 738, 739, 0, - 0, 0, 739, 739, 739, 739, 739, 739, 739, 739, - 740, 0, 0, 0, 740, 0, 740, 740, 740, 740, - 740, 740, 741, 741, 0, 741, 741, 742, 742, 0, - 742, 742, 743, 0, 743, 743, 744, 744, 0, 744, - 744, 745, 0, 745, 745, 746, 0, 746, 746, 747, + 737, 737, 737, 737, 737, 737, 737, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, + 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, + 739, 739, 739, 740, 740, 740, 740, 0, 740, 740, + 740, 740, 740, 740, 740, 740, 741, 741, 741, 0, + 741, 0, 741, 0, 741, 742, 742, 0, 742, 742, + 743, 743, 0, 0, 743, 743, 0, 743, 743, 743, + 743, 743, 743, 744, 744, 744, 744, 0, 744, 744, + 744, 744, 744, 744, 744, 744, 745, 745, 745, 745, - 0, 747, 747, 748, 748, 748, 748, 748, 748, 748, - 748, 748, 748, 748, 748, 748, 748, 749, 749, 0, - 749, 749, 750, 750, 0, 750, 750, 750, 750, 750, - 750, 750, 750, 750, 750, 750, 751, 751, 751, 0, - 0, 0, 0, 751, 0, 0, 0, 0, 751, 725, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, + 745, 745, 745, 745, 0, 745, 745, 746, 0, 0, + 0, 746, 746, 746, 746, 746, 746, 746, 747, 0, + 0, 0, 747, 747, 747, 747, 747, 747, 747, 748, + 748, 0, 748, 748, 749, 749, 0, 749, 749, 750, + 750, 0, 750, 750, 751, 0, 751, 751, 752, 752, + 0, 752, 752, 753, 0, 753, 753, 754, 0, 754, + 754, 755, 0, 755, 755, 756, 0, 756, 756, 757, + 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, + 757, 757, 758, 758, 0, 758, 758, 759, 759, 0, + 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, + + 760, 760, 760, 0, 0, 0, 760, 0, 0, 0, + 0, 760, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734 - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, - 725 } ; extern int yy_flex_debug; int yy_flex_debug = 1; -static yyconst short int yy_rule_linenum[133] = +static yyconst short int yy_rule_linenum[137] = { 0, 94, 95, 97, 100, 102, 105, 107, 108, 109, 112, 114, 115, 116, 128, 135, 142, 148, 157, 165, 173, @@ -1759,8 +1776,8 @@ static yyconst short int yy_rule_linenum[133] = 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 342, 343, 348, 349, 350, 353, 358, 364, 372, 382, - 387, 389, 390, 394, 400, 406, 414, 417, 442, 486, - 488, 499 + 387, 389, 390, 394, 399, 404, 410, 411, 413, 419, + 432, 435, 460, 504, 506, 517 } ; static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; @@ -1866,7 +1883,7 @@ int asn1p_as_pointer; /* Newline */ /* White-space */ -#line 1870 "asn1p_l.c" +#line 1887 "asn1p_l.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -2020,7 +2037,7 @@ YY_DECL #line 92 "asn1p_l.l" -#line 2024 "asn1p_l.c" +#line 2041 "asn1p_l.c" if ( yy_init ) { @@ -2068,14 +2085,14 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 726 ) + if ( yy_current_state >= 735 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; *yy_state_ptr++ = yy_current_state; ++yy_cp; } - while ( yy_base[yy_current_state] != 4350 ); + while ( yy_base[yy_current_state] != 4413 ); yy_find_action: yy_current_state = *--yy_state_ptr; @@ -2112,13 +2129,13 @@ do_action: /* This label is used only to access EOF actions. */ { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); - else if ( yy_act < 133 ) + else if ( yy_act < 137 ) fprintf( stderr, "--accepting rule at line %d (\"%s\")\n", yy_rule_linenum[yy_act], yytext ); - else if ( yy_act == 133 ) + else if ( yy_act == 137 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", yytext ); - else if ( yy_act == 134 ) + else if ( yy_act == 138 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); @@ -2892,37 +2909,68 @@ case 124: YY_RULE_SETUP #line 394 "asn1p_l.l" { - asn1p_lval.tv_opaque.buf = strdup(yytext); - asn1p_lval.tv_opaque.len = yyleng; - return TOK_opaque; + asn1p_lval.tv_str = strdup(yytext); + return TOK_Literal; } YY_BREAK case 125: YY_RULE_SETUP -#line 400 "asn1p_l.l" +#line 399 "asn1p_l.l" +{ + asn1p_lval.tv_str = strdup(yytext); + return TOK_Literal; + } + YY_BREAK +case 126: +YY_RULE_SETUP +#line 404 "asn1p_l.l" +{ + yy_push_state(with_syntax); + asn1p_lval.tv_str = strdup(yytext); + return TOK_Literal; + } + YY_BREAK +case 127: +YY_RULE_SETUP +#line 410 "asn1p_l.l" +return '['; + YY_BREAK +case 128: +YY_RULE_SETUP +#line 411 "asn1p_l.l" +return ']'; + YY_BREAK +case 129: +YY_RULE_SETUP +#line 413 "asn1p_l.l" { asn1p_lval.tv_opaque.buf = strdup(yytext); asn1p_lval.tv_opaque.len = yyleng; return TOK_opaque; } YY_BREAK -case 126: +case 130: YY_RULE_SETUP -#line 406 "asn1p_l.l" +#line 419 "asn1p_l.l" { yy_pop_state(); - return '}'; + if(YYSTATE == with_syntax) { + asn1p_lval.tv_str = strdup(yytext); + return TOK_Literal; + } else { + return '}'; + } } YY_BREAK -case 127: +case 131: YY_RULE_SETUP -#line 414 "asn1p_l.l" +#line 432 "asn1p_l.l" /* Ignore whitespace */ YY_BREAK -case 128: +case 132: YY_RULE_SETUP -#line 417 "asn1p_l.l" +#line 435 "asn1p_l.l" { asn1c_integer_t v1 = -1, v2 = -1; char *p; @@ -2948,9 +2996,9 @@ YY_RULE_SETUP return TOK_tuple; } YY_BREAK -case 129: +case 133: YY_RULE_SETUP -#line 442 "asn1p_l.l" +#line 460 "asn1p_l.l" { asn1c_integer_t v1 = -1, v2 = -1, v3 = -1, v4 = -1; char *p; @@ -2994,14 +3042,14 @@ YY_RULE_SETUP return TOK_quadruple; } YY_BREAK -case 130: +case 134: YY_RULE_SETUP -#line 486 "asn1p_l.l" +#line 504 "asn1p_l.l" return yytext[0]; YY_BREAK -case 131: +case 135: YY_RULE_SETUP -#line 488 "asn1p_l.l" +#line 506 "asn1p_l.l" { if(TYPE_LIFETIME(1994, 0)) fprintf(stderr, "ERROR: "); @@ -3013,9 +3061,9 @@ YY_RULE_SETUP return -1; } YY_BREAK -case 132: +case 136: YY_RULE_SETUP -#line 499 "asn1p_l.l" +#line 517 "asn1p_l.l" { fprintf(stderr, "Unexpected token at line %d: \"%s\"\n", @@ -3037,19 +3085,19 @@ case YY_STATE_EOF(quoted): case YY_STATE_EOF(opaque): case YY_STATE_EOF(encoding_control): case YY_STATE_EOF(with_syntax): -#line 512 "asn1p_l.l" +#line 530 "asn1p_l.l" { while(YYSTATE != INITIAL) yy_pop_state(); yyterminate(); } YY_BREAK -case 133: +case 137: YY_RULE_SETUP -#line 519 "asn1p_l.l" +#line 537 "asn1p_l.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 3053 "asn1p_l.c" +#line 3101 "asn1p_l.c" case YY_END_OF_BUFFER: { @@ -3336,7 +3384,7 @@ static yy_state_type yy_get_previous_state() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 726 ) + if ( yy_current_state >= 735 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -3366,11 +3414,11 @@ yy_state_type yy_current_state; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 726 ) + if ( yy_current_state >= 735 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 725); + yy_is_jam = (yy_current_state == 734); if ( ! yy_is_jam ) *yy_state_ptr++ = yy_current_state; @@ -3931,7 +3979,7 @@ int main() return 0; } #endif -#line 519 "asn1p_l.l" +#line 537 "asn1p_l.l" /* diff --git a/libasn1parser/asn1p_l.l b/libasn1parser/asn1p_l.l index c7bb18ec..a327277f 100644 --- a/libasn1parser/asn1p_l.l +++ b/libasn1parser/asn1p_l.l @@ -99,7 +99,7 @@ WSP [\t\r\v\f\n ] --<[ \t]*ASN1C.RepresentAsPointer[ \t]*>-- asn1p_as_pointer = 1; --- yy_push_state(dash_comment); +-- yy_push_state(dash_comment); { {NL} yy_pop_state(); @@ -109,7 +109,7 @@ WSP [\t\r\v\f\n ] [^\r\v\f\n-]+ /* Eat */ } -"/*" yy_push_state(cpp_comment); +"/*" yy_push_state(cpp_comment); { [^*/<] /* Eat */ "*/" yy_pop_state(); @@ -391,12 +391,25 @@ WITH return TOK_WITH; { - [^&{} \t\r\v\f\n]+ { - asn1p_lval.tv_opaque.buf = strdup(yytext); - asn1p_lval.tv_opaque.len = yyleng; - return TOK_opaque; + [A-Z][A-Za-z0-9]*([-][A-Za-z0-9]+)* { + asn1p_lval.tv_str = strdup(yytext); + return TOK_Literal; } + "," { + asn1p_lval.tv_str = strdup(yytext); + return TOK_Literal; + } + + "{" { + yy_push_state(with_syntax); + asn1p_lval.tv_str = strdup(yytext); + return TOK_Literal; + } + + "[" return '['; + "]" return ']'; + {WSP}+ { asn1p_lval.tv_opaque.buf = strdup(yytext); asn1p_lval.tv_opaque.len = yyleng; @@ -405,7 +418,12 @@ WITH return TOK_WITH; "}" { yy_pop_state(); - return '}'; + if(YYSTATE == with_syntax) { + asn1p_lval.tv_str = strdup(yytext); + return TOK_Literal; + } else { + return '}'; + } } } diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c index 385ded7d..b5c62562 100644 --- a/libasn1parser/asn1p_y.c +++ b/libasn1parser/asn1p_y.c @@ -25,92 +25,93 @@ #define TOK_capitalreference 268 #define TOK_typefieldreference 269 #define TOK_valuefieldreference 270 -#define TOK_ABSENT 271 -#define TOK_ABSTRACT_SYNTAX 272 -#define TOK_ALL 273 -#define TOK_ANY 274 -#define TOK_APPLICATION 275 -#define TOK_AUTOMATIC 276 -#define TOK_BEGIN 277 -#define TOK_BIT 278 -#define TOK_BMPString 279 -#define TOK_BOOLEAN 280 -#define TOK_BY 281 -#define TOK_CHARACTER 282 -#define TOK_CHOICE 283 -#define TOK_CLASS 284 -#define TOK_COMPONENT 285 -#define TOK_COMPONENTS 286 -#define TOK_CONSTRAINED 287 -#define TOK_CONTAINING 288 -#define TOK_DEFAULT 289 -#define TOK_DEFINITIONS 290 -#define TOK_DEFINED 291 -#define TOK_EMBEDDED 292 -#define TOK_ENCODED 293 -#define TOK_ENCODING_CONTROL 294 -#define TOK_END 295 -#define TOK_ENUMERATED 296 -#define TOK_EXPLICIT 297 -#define TOK_EXPORTS 298 -#define TOK_EXTENSIBILITY 299 -#define TOK_EXTERNAL 300 -#define TOK_FALSE 301 -#define TOK_FROM 302 -#define TOK_GeneralizedTime 303 -#define TOK_GeneralString 304 -#define TOK_GraphicString 305 -#define TOK_IA5String 306 -#define TOK_IDENTIFIER 307 -#define TOK_IMPLICIT 308 -#define TOK_IMPLIED 309 -#define TOK_IMPORTS 310 -#define TOK_INCLUDES 311 -#define TOK_INSTANCE 312 -#define TOK_INSTRUCTIONS 313 -#define TOK_INTEGER 314 -#define TOK_ISO646String 315 -#define TOK_MAX 316 -#define TOK_MIN 317 -#define TOK_MINUS_INFINITY 318 -#define TOK_NULL 319 -#define TOK_NumericString 320 -#define TOK_OBJECT 321 -#define TOK_ObjectDescriptor 322 -#define TOK_OCTET 323 -#define TOK_OF 324 -#define TOK_OPTIONAL 325 -#define TOK_PATTERN 326 -#define TOK_PDV 327 -#define TOK_PLUS_INFINITY 328 -#define TOK_PRESENT 329 -#define TOK_PrintableString 330 -#define TOK_PRIVATE 331 -#define TOK_REAL 332 -#define TOK_RELATIVE_OID 333 -#define TOK_SEQUENCE 334 -#define TOK_SET 335 -#define TOK_SIZE 336 -#define TOK_STRING 337 -#define TOK_SYNTAX 338 -#define TOK_T61String 339 -#define TOK_TAGS 340 -#define TOK_TeletexString 341 -#define TOK_TRUE 342 -#define TOK_TYPE_IDENTIFIER 343 -#define TOK_UNIQUE 344 -#define TOK_UNIVERSAL 345 -#define TOK_UniversalString 346 -#define TOK_UTCTime 347 -#define TOK_UTF8String 348 -#define TOK_VideotexString 349 -#define TOK_VisibleString 350 -#define TOK_WITH 351 -#define TOK_EXCEPT 352 -#define TOK_INTERSECTION 353 -#define TOK_UNION 354 -#define TOK_TwoDots 355 -#define TOK_ThreeDots 356 +#define TOK_Literal 271 +#define TOK_ABSENT 272 +#define TOK_ABSTRACT_SYNTAX 273 +#define TOK_ALL 274 +#define TOK_ANY 275 +#define TOK_APPLICATION 276 +#define TOK_AUTOMATIC 277 +#define TOK_BEGIN 278 +#define TOK_BIT 279 +#define TOK_BMPString 280 +#define TOK_BOOLEAN 281 +#define TOK_BY 282 +#define TOK_CHARACTER 283 +#define TOK_CHOICE 284 +#define TOK_CLASS 285 +#define TOK_COMPONENT 286 +#define TOK_COMPONENTS 287 +#define TOK_CONSTRAINED 288 +#define TOK_CONTAINING 289 +#define TOK_DEFAULT 290 +#define TOK_DEFINITIONS 291 +#define TOK_DEFINED 292 +#define TOK_EMBEDDED 293 +#define TOK_ENCODED 294 +#define TOK_ENCODING_CONTROL 295 +#define TOK_END 296 +#define TOK_ENUMERATED 297 +#define TOK_EXPLICIT 298 +#define TOK_EXPORTS 299 +#define TOK_EXTENSIBILITY 300 +#define TOK_EXTERNAL 301 +#define TOK_FALSE 302 +#define TOK_FROM 303 +#define TOK_GeneralizedTime 304 +#define TOK_GeneralString 305 +#define TOK_GraphicString 306 +#define TOK_IA5String 307 +#define TOK_IDENTIFIER 308 +#define TOK_IMPLICIT 309 +#define TOK_IMPLIED 310 +#define TOK_IMPORTS 311 +#define TOK_INCLUDES 312 +#define TOK_INSTANCE 313 +#define TOK_INSTRUCTIONS 314 +#define TOK_INTEGER 315 +#define TOK_ISO646String 316 +#define TOK_MAX 317 +#define TOK_MIN 318 +#define TOK_MINUS_INFINITY 319 +#define TOK_NULL 320 +#define TOK_NumericString 321 +#define TOK_OBJECT 322 +#define TOK_ObjectDescriptor 323 +#define TOK_OCTET 324 +#define TOK_OF 325 +#define TOK_OPTIONAL 326 +#define TOK_PATTERN 327 +#define TOK_PDV 328 +#define TOK_PLUS_INFINITY 329 +#define TOK_PRESENT 330 +#define TOK_PrintableString 331 +#define TOK_PRIVATE 332 +#define TOK_REAL 333 +#define TOK_RELATIVE_OID 334 +#define TOK_SEQUENCE 335 +#define TOK_SET 336 +#define TOK_SIZE 337 +#define TOK_STRING 338 +#define TOK_SYNTAX 339 +#define TOK_T61String 340 +#define TOK_TAGS 341 +#define TOK_TeletexString 342 +#define TOK_TRUE 343 +#define TOK_TYPE_IDENTIFIER 344 +#define TOK_UNIQUE 345 +#define TOK_UNIVERSAL 346 +#define TOK_UniversalString 347 +#define TOK_UTCTime 348 +#define TOK_UTF8String 349 +#define TOK_VideotexString 350 +#define TOK_VisibleString 351 +#define TOK_WITH 352 +#define TOK_EXCEPT 353 +#define TOK_INTERSECTION 354 +#define TOK_UNION 355 +#define TOK_TwoDots 356 +#define TOK_ThreeDots 357 #line 1 "asn1p_y.y" @@ -221,26 +222,26 @@ typedef union { -#define YYFINAL 442 +#define YYFINAL 446 #define YYFLAG -32768 -#define YYNTBASE 118 +#define YYNTBASE 119 -#define YYTRANSLATE(x) ((unsigned)(x) <= 356 ? yytranslate[x] : 225) +#define YYTRANSLATE(x) ((unsigned)(x) <= 357 ? yytranslate[x] : 226) static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 112, 2, 2, 2, 2, 2, 2, 107, - 108, 2, 2, 110, 2, 113, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 111, 109, 114, - 2, 2, 2, 115, 2, 2, 2, 2, 2, 2, + 2, 2, 115, 2, 2, 2, 2, 2, 2, 108, + 109, 2, 2, 111, 2, 116, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 112, 110, 117, + 2, 2, 2, 118, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 116, 2, 117, 99, 2, 2, 2, 2, 2, 2, + 113, 2, 114, 100, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 105, 101, 106, 2, 2, 2, 2, 2, + 2, 2, 106, 102, 107, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -263,7 +264,7 @@ static const char yytranslate[] = { 0, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 100, 102, 103, 104 + 97, 98, 99, 101, 103, 104, 105 }; #if YYDEBUG != 0 @@ -278,143 +279,144 @@ static const short yyprhs[] = { 0, 202, 204, 205, 207, 209, 213, 217, 220, 224, 226, 228, 232, 235, 237, 239, 245, 246, 248, 250, 254, 257, 262, 266, 270, 274, 278, 282, 283, 285, 286, - 293, 295, 298, 300, 302, 304, 308, 312, 316, 317, - 320, 322, 327, 332, 337, 344, 351, 353, 358, 363, - 365, 369, 371, 375, 379, 383, 385, 389, 391, 395, - 397, 399, 401, 403, 405, 409, 413, 415, 420, 424, - 425, 429, 431, 433, 435, 437, 439, 441, 443, 445, - 447, 451, 453, 455, 457, 459, 462, 464, 466, 468, - 470, 473, 476, 478, 480, 483, 486, 488, 490, 492, - 494, 496, 499, 501, 504, 506, 508, 510, 512, 514, - 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, - 536, 538, 540, 542, 543, 545, 547, 552, 556, 561, - 563, 567, 573, 575, 579, 583, 587, 591, 596, 600, - 602, 604, 608, 612, 616, 620, 622, 624, 625, 631, - 633, 636, 639, 643, 645, 647, 649, 651, 653, 655, - 657, 659, 663, 669, 671, 675, 677, 681, 682, 684, - 686, 688, 690, 692, 694, 698, 703, 705, 709, 712, - 716, 718, 722, 723, 725, 727, 730, 733, 737, 739, - 743, 745, 750, 755, 757, 759, 761, 763, 764, 766, - 769, 774, 775, 777, 779, 781, 782, 784, 786, 788, - 790, 792, 793, 795 + 293, 295, 298, 300, 302, 304, 308, 310, 314, 318, + 322, 323, 326, 328, 333, 338, 343, 350, 357, 359, + 364, 369, 371, 375, 377, 381, 385, 389, 391, 395, + 397, 401, 403, 405, 407, 409, 411, 415, 419, 421, + 426, 430, 431, 435, 437, 439, 441, 443, 445, 447, + 449, 451, 453, 457, 459, 461, 463, 465, 468, 470, + 472, 474, 476, 479, 482, 484, 486, 489, 492, 494, + 496, 498, 500, 502, 505, 507, 510, 512, 514, 516, + 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, + 538, 540, 542, 544, 546, 548, 549, 551, 553, 558, + 562, 567, 569, 573, 579, 581, 585, 589, 593, 597, + 602, 606, 608, 610, 614, 618, 622, 626, 628, 630, + 631, 637, 639, 642, 645, 649, 651, 653, 655, 657, + 659, 661, 663, 665, 669, 675, 677, 681, 683, 687, + 688, 690, 692, 694, 696, 698, 700, 704, 709, 711, + 715, 718, 722, 724, 728, 729, 731, 733, 736, 739, + 743, 745, 749, 751, 756, 761, 763, 765, 767, 769, + 770, 772, 775, 780, 781, 783, 785, 787, 788, 790, + 792, 794, 796, 798, 799, 801 }; -static const short yyrhs[] = { 119, - 0, 120, 0, 119, 120, 0, 221, 121, 36, 125, - 3, 23, 128, 41, 0, 0, 122, 0, 105, 123, - 106, 0, 105, 106, 0, 124, 0, 123, 124, 0, - 224, 0, 224, 107, 9, 108, 0, 9, 0, 0, - 126, 0, 127, 0, 126, 127, 0, 43, 86, 0, - 54, 86, 0, 22, 86, 0, 45, 55, 0, 14, - 59, 0, 0, 129, 0, 130, 0, 129, 130, 0, - 132, 0, 138, 0, 144, 0, 175, 0, 141, 0, - 0, 40, 14, 131, 0, 184, 0, 56, 133, 109, - 0, 56, 48, 0, 135, 0, 133, 135, 0, 0, - 122, 0, 136, 48, 221, 134, 0, 137, 0, 136, - 110, 137, 0, 221, 0, 221, 105, 106, 0, 224, - 0, 44, 139, 109, 0, 44, 19, 109, 0, 44, - 109, 0, 140, 0, 139, 110, 140, 0, 221, 0, - 221, 105, 106, 0, 224, 0, 0, 221, 143, 3, - 105, 142, 180, 0, 168, 0, 181, 0, 221, 3, - 164, 0, 221, 3, 154, 0, 221, 105, 145, 106, - 3, 164, 0, 146, 0, 145, 110, 146, 0, 221, - 0, 221, 111, 224, 0, 221, 111, 221, 0, 181, - 111, 224, 0, 148, 0, 147, 110, 148, 0, 164, - 0, 224, 0, 0, 150, 0, 151, 0, 150, 110, - 151, 0, 224, 164, 210, 0, 164, 210, 0, 32, - 70, 164, 0, 163, 0, 153, 0, 152, 110, 153, - 0, 224, 164, 0, 163, 0, 164, 0, 30, 105, - 156, 106, 158, 0, 0, 90, 0, 157, 0, 156, - 110, 157, 0, 15, 210, 0, 16, 164, 155, 210, - 0, 16, 173, 210, 0, 16, 174, 210, 0, 15, - 173, 210, 0, 15, 164, 210, 0, 15, 174, 210, - 0, 0, 159, 0, 0, 97, 84, 105, 160, 161, - 106, 0, 162, 0, 161, 162, 0, 4, 0, 171, - 0, 104, 0, 104, 112, 178, 0, 104, 112, 215, - 0, 216, 166, 188, 0, 0, 165, 167, 0, 183, - 0, 29, 105, 152, 106, 0, 80, 105, 149, 106, - 0, 81, 105, 149, 106, 0, 80, 188, 70, 223, - 216, 166, 0, 81, 188, 70, 223, 216, 166, 0, - 20, 0, 20, 37, 27, 224, 0, 221, 105, 147, - 106, 0, 168, 0, 58, 70, 168, 0, 13, 0, - 13, 113, 221, 0, 222, 113, 221, 0, 13, 113, - 224, 0, 222, 0, 222, 113, 169, 0, 170, 0, - 169, 113, 170, 0, 172, 0, 172, 0, 15, 0, - 16, 0, 15, 0, 173, 113, 15, 0, 173, 113, - 16, 0, 14, 0, 224, 143, 3, 176, 0, 224, - 111, 176, 0, 0, 105, 177, 180, 0, 65, 0, - 47, 0, 88, 0, 5, 0, 7, 0, 179, 0, - 215, 0, 178, 0, 224, 0, 221, 113, 224, 0, - 6, 0, 10, 0, 11, 0, 4, 0, 180, 4, - 0, 26, 0, 65, 0, 78, 0, 182, 0, 69, - 83, 0, 67, 53, 0, 79, 0, 46, 0, 38, - 73, 0, 28, 83, 0, 93, 0, 49, 0, 184, - 0, 60, 0, 42, 0, 24, 83, 0, 181, 0, - 182, 212, 0, 25, 0, 50, 0, 51, 0, 52, - 0, 61, 0, 66, 0, 76, 0, 85, 0, 87, - 0, 92, 0, 94, 0, 95, 0, 96, 0, 68, - 0, 101, 0, 102, 0, 99, 0, 100, 0, 98, - 0, 0, 189, 0, 190, 0, 82, 107, 191, 108, - 0, 107, 191, 108, 0, 190, 107, 191, 108, 0, - 192, 0, 192, 110, 104, 0, 192, 110, 104, 110, - 192, 0, 193, 0, 19, 98, 193, 0, 192, 185, - 193, 0, 192, 186, 193, 0, 193, 187, 193, 0, - 196, 107, 191, 108, 0, 107, 191, 108, 0, 197, - 0, 198, 0, 197, 195, 197, 0, 63, 195, 197, - 0, 197, 195, 62, 0, 63, 195, 62, 0, 204, - 0, 199, 0, 0, 33, 27, 105, 194, 180, 0, - 103, 0, 103, 114, 0, 114, 103, 0, 114, 103, - 114, 0, 82, 0, 48, 0, 47, 0, 88, 0, - 215, 0, 179, 0, 224, 0, 221, 0, 97, 31, - 190, 0, 97, 32, 105, 200, 106, 0, 201, 0, - 200, 110, 201, 0, 104, 0, 224, 188, 202, 0, - 0, 203, 0, 75, 0, 17, 0, 71, 0, 205, - 0, 206, 0, 105, 221, 106, 0, 205, 105, 207, - 106, 0, 208, 0, 207, 110, 208, 0, 115, 209, - 0, 115, 113, 209, 0, 224, 0, 209, 113, 224, - 0, 0, 211, 0, 71, 0, 35, 176, 0, 105, - 106, 0, 105, 213, 106, 0, 214, 0, 213, 110, - 214, 0, 224, 0, 224, 107, 215, 108, 0, 224, - 107, 178, 108, 0, 215, 0, 104, 0, 9, 0, - 12, 0, 0, 217, 0, 218, 220, 0, 116, 219, - 9, 117, 0, 0, 91, 0, 21, 0, 77, 0, - 0, 54, 0, 43, 0, 13, 0, 14, 0, 14, - 0, 0, 224, 0, 8, 0 +static const short yyrhs[] = { 120, + 0, 121, 0, 120, 121, 0, 222, 122, 37, 126, + 3, 24, 129, 42, 0, 0, 123, 0, 106, 124, + 107, 0, 106, 107, 0, 125, 0, 124, 125, 0, + 225, 0, 225, 108, 9, 109, 0, 9, 0, 0, + 127, 0, 128, 0, 127, 128, 0, 44, 87, 0, + 55, 87, 0, 23, 87, 0, 46, 56, 0, 14, + 60, 0, 0, 130, 0, 131, 0, 130, 131, 0, + 133, 0, 139, 0, 145, 0, 176, 0, 142, 0, + 0, 41, 14, 132, 0, 185, 0, 57, 134, 110, + 0, 57, 49, 0, 136, 0, 134, 136, 0, 0, + 123, 0, 137, 49, 222, 135, 0, 138, 0, 137, + 111, 138, 0, 222, 0, 222, 106, 107, 0, 225, + 0, 45, 140, 110, 0, 45, 20, 110, 0, 45, + 110, 0, 141, 0, 140, 111, 141, 0, 222, 0, + 222, 106, 107, 0, 225, 0, 0, 222, 144, 3, + 106, 143, 181, 0, 169, 0, 182, 0, 222, 3, + 165, 0, 222, 3, 155, 0, 222, 106, 146, 107, + 3, 165, 0, 147, 0, 146, 111, 147, 0, 222, + 0, 222, 112, 225, 0, 222, 112, 222, 0, 182, + 112, 225, 0, 149, 0, 148, 111, 149, 0, 165, + 0, 225, 0, 0, 151, 0, 152, 0, 151, 111, + 152, 0, 225, 165, 211, 0, 165, 211, 0, 33, + 71, 165, 0, 164, 0, 154, 0, 153, 111, 154, + 0, 225, 165, 0, 164, 0, 165, 0, 31, 106, + 157, 107, 159, 0, 0, 91, 0, 158, 0, 157, + 111, 158, 0, 15, 211, 0, 16, 165, 156, 211, + 0, 16, 174, 211, 0, 16, 175, 211, 0, 15, + 174, 211, 0, 15, 165, 211, 0, 15, 175, 211, + 0, 0, 160, 0, 0, 98, 85, 106, 161, 162, + 107, 0, 163, 0, 162, 163, 0, 4, 0, 17, + 0, 172, 0, 113, 162, 114, 0, 105, 0, 105, + 115, 179, 0, 105, 115, 216, 0, 217, 167, 189, + 0, 0, 166, 168, 0, 184, 0, 30, 106, 153, + 107, 0, 81, 106, 150, 107, 0, 82, 106, 150, + 107, 0, 81, 189, 71, 224, 217, 167, 0, 82, + 189, 71, 224, 217, 167, 0, 21, 0, 21, 38, + 28, 225, 0, 222, 106, 148, 107, 0, 169, 0, + 59, 71, 169, 0, 13, 0, 13, 116, 222, 0, + 223, 116, 222, 0, 13, 116, 225, 0, 223, 0, + 223, 116, 170, 0, 171, 0, 170, 116, 171, 0, + 173, 0, 173, 0, 15, 0, 16, 0, 15, 0, + 174, 116, 15, 0, 174, 116, 16, 0, 14, 0, + 225, 144, 3, 177, 0, 225, 112, 177, 0, 0, + 106, 178, 181, 0, 66, 0, 48, 0, 89, 0, + 5, 0, 7, 0, 180, 0, 216, 0, 179, 0, + 225, 0, 222, 116, 225, 0, 6, 0, 10, 0, + 11, 0, 4, 0, 181, 4, 0, 27, 0, 66, + 0, 79, 0, 183, 0, 70, 84, 0, 68, 54, + 0, 80, 0, 47, 0, 39, 74, 0, 29, 84, + 0, 94, 0, 50, 0, 185, 0, 61, 0, 43, + 0, 25, 84, 0, 182, 0, 183, 213, 0, 26, + 0, 51, 0, 52, 0, 53, 0, 62, 0, 67, + 0, 77, 0, 86, 0, 88, 0, 93, 0, 95, + 0, 96, 0, 97, 0, 69, 0, 102, 0, 103, + 0, 100, 0, 101, 0, 99, 0, 0, 190, 0, + 191, 0, 83, 108, 192, 109, 0, 108, 192, 109, + 0, 191, 108, 192, 109, 0, 193, 0, 193, 111, + 105, 0, 193, 111, 105, 111, 193, 0, 194, 0, + 20, 99, 194, 0, 193, 186, 194, 0, 193, 187, + 194, 0, 194, 188, 194, 0, 197, 108, 192, 109, + 0, 108, 192, 109, 0, 198, 0, 199, 0, 198, + 196, 198, 0, 64, 196, 198, 0, 198, 196, 63, + 0, 64, 196, 63, 0, 205, 0, 200, 0, 0, + 34, 28, 106, 195, 181, 0, 104, 0, 104, 117, + 0, 117, 104, 0, 117, 104, 117, 0, 83, 0, + 49, 0, 48, 0, 89, 0, 216, 0, 180, 0, + 225, 0, 222, 0, 98, 32, 191, 0, 98, 33, + 106, 201, 107, 0, 202, 0, 201, 111, 202, 0, + 105, 0, 225, 189, 203, 0, 0, 204, 0, 76, + 0, 18, 0, 72, 0, 206, 0, 207, 0, 106, + 222, 107, 0, 206, 106, 208, 107, 0, 209, 0, + 208, 111, 209, 0, 118, 210, 0, 118, 116, 210, + 0, 225, 0, 210, 116, 225, 0, 0, 212, 0, + 72, 0, 36, 177, 0, 106, 107, 0, 106, 214, + 107, 0, 215, 0, 214, 111, 215, 0, 225, 0, + 225, 108, 216, 109, 0, 225, 108, 179, 109, 0, + 216, 0, 105, 0, 9, 0, 12, 0, 0, 218, + 0, 219, 221, 0, 113, 220, 9, 114, 0, 0, + 92, 0, 22, 0, 78, 0, 0, 55, 0, 44, + 0, 13, 0, 14, 0, 14, 0, 0, 225, 0, + 8, 0 }; #endif #if YYDEBUG != 0 static const short yyrline[] = { 0, - 322, 328, 334, 350, 375, 377, 380, 384, 389, 396, - 404, 409, 413, 422, 424, 432, 436, 444, 448, 451, - 454, 458, 478, 480, 488, 492, 524, 528, 537, 544, - 557, 564, 566, 578, 590, 601, 606, 612, 618, 620, - 623, 634, 640, 646, 653, 659, 667, 671, 674, 681, - 687, 693, 700, 706, 715, 717, 726, 734, 748, 758, - 774, 783, 793, 803, 808, 815, 822, 832, 838, 844, - 848, 871, 873, 875, 881, 887, 895, 901, 908, 913, - 919, 925, 931, 934, 940, 950, 952, 955, 963, 970, - 983, 994, 1004, 1015, 1025, 1036, 1047, 1049, 1054, 1058, - 1063, 1068, 1074, 1078, 1089, 1098, 1107, 1118, 1140, 1147, - 1166, 1170, 1176, 1182, 1188, 1198, 1208, 1214, 1228, 1252, - 1259, 1273, 1282, 1292, 1302, 1312, 1320, 1341, 1350, 1359, - 1360, 1362, 1369, 1376, 1382, 1386, 1392, 1412, 1422, 1430, - 1430, 1435, 1440, 1445, 1450, 1454, 1458, 1461, 1464, 1469, - 1481, 1498, 1503, 1508, 1541, 1551, 1565, 1567, 1568, 1569, - 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1584, - 1586, 1587, 1590, 1597, 1609, 1611, 1615, 1619, 1620, 1621, - 1622, 1623, 1627, 1628, 1629, 1630, 1634, 1635, 1642, 1642, - 1643, 1643, 1644, 1646, 1648, 1653, 1657, 1666, 1670, 1675, - 1679, 1685, 1695, 1699, 1702, 1705, 1708, 1713, 1722, 1730, - 1736, 1742, 1749, 1757, 1765, 1774, 1777, 1780, 1781, 1791, - 1793, 1794, 1795, 1798, 1802, 1807, 1813, 1818, 1821, 1824, - 1837, 1851, 1855, 1860, 1864, 1869, 1876, 1889, 1891, 1894, - 1898, 1901, 1906, 1910, 1918, 1933, 1939, 1946, 1959, 1971, - 1986, 1990, 2007, 2012, 2015, 2020, 2042, 2047, 2052, 2058, - 2064, 2072, 2080, 2088, 2095, 2105, 2110, 2140, 2142, 2145, - 2152, 2158, 2160, 2161, 2162, 2165, 2167, 2168, 2171, 2176, - 2183, 2190, 2192, 2197 + 323, 329, 335, 351, 376, 378, 381, 385, 390, 397, + 405, 410, 414, 423, 425, 433, 437, 445, 449, 452, + 455, 459, 479, 481, 489, 493, 525, 529, 538, 545, + 558, 565, 567, 579, 591, 602, 607, 613, 619, 621, + 624, 635, 641, 647, 654, 660, 668, 672, 675, 682, + 688, 694, 701, 707, 716, 718, 727, 735, 749, 759, + 775, 784, 794, 804, 809, 816, 823, 833, 839, 845, + 849, 872, 874, 876, 882, 888, 896, 902, 909, 914, + 920, 926, 932, 935, 941, 951, 953, 956, 964, 971, + 984, 995, 1005, 1016, 1026, 1037, 1048, 1050, 1055, 1059, + 1064, 1069, 1075, 1079, 1082, 1091, 1096, 1105, 1114, 1125, + 1147, 1154, 1173, 1177, 1183, 1189, 1195, 1205, 1215, 1221, + 1235, 1259, 1266, 1280, 1289, 1299, 1309, 1319, 1327, 1348, + 1357, 1366, 1367, 1369, 1376, 1383, 1389, 1393, 1399, 1419, + 1429, 1437, 1437, 1442, 1447, 1452, 1457, 1461, 1465, 1468, + 1471, 1476, 1488, 1505, 1510, 1515, 1548, 1558, 1572, 1574, + 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, + 1585, 1591, 1593, 1594, 1597, 1604, 1616, 1618, 1622, 1626, + 1627, 1628, 1629, 1630, 1634, 1635, 1636, 1637, 1641, 1642, + 1649, 1649, 1650, 1650, 1651, 1653, 1655, 1660, 1664, 1673, + 1677, 1682, 1686, 1692, 1702, 1706, 1709, 1712, 1715, 1720, + 1729, 1737, 1743, 1749, 1756, 1764, 1772, 1781, 1784, 1787, + 1788, 1798, 1800, 1801, 1802, 1805, 1809, 1814, 1820, 1825, + 1828, 1831, 1844, 1858, 1862, 1867, 1871, 1876, 1883, 1896, + 1898, 1901, 1905, 1908, 1913, 1917, 1925, 1940, 1946, 1953, + 1966, 1978, 1993, 1997, 2014, 2019, 2022, 2027, 2049, 2054, + 2059, 2065, 2071, 2079, 2087, 2095, 2102, 2112, 2117, 2147, + 2149, 2152, 2159, 2165, 2167, 2168, 2169, 2172, 2174, 2175, + 2178, 2183, 2190, 2197, 2199, 2204 }; #endif @@ -424,38 +426,38 @@ static const short yyrline[] = { 0, static const char * const yytname[] = { "$","error","$undefined.","TOK_PPEQ", "TOK_opaque","TOK_bstring","TOK_cstring","TOK_hstring","TOK_identifier","TOK_number", "TOK_tuple","TOK_quadruple","TOK_number_negative","TOK_typereference","TOK_capitalreference", -"TOK_typefieldreference","TOK_valuefieldreference","TOK_ABSENT","TOK_ABSTRACT_SYNTAX", -"TOK_ALL","TOK_ANY","TOK_APPLICATION","TOK_AUTOMATIC","TOK_BEGIN","TOK_BIT", -"TOK_BMPString","TOK_BOOLEAN","TOK_BY","TOK_CHARACTER","TOK_CHOICE","TOK_CLASS", -"TOK_COMPONENT","TOK_COMPONENTS","TOK_CONSTRAINED","TOK_CONTAINING","TOK_DEFAULT", -"TOK_DEFINITIONS","TOK_DEFINED","TOK_EMBEDDED","TOK_ENCODED","TOK_ENCODING_CONTROL", -"TOK_END","TOK_ENUMERATED","TOK_EXPLICIT","TOK_EXPORTS","TOK_EXTENSIBILITY", -"TOK_EXTERNAL","TOK_FALSE","TOK_FROM","TOK_GeneralizedTime","TOK_GeneralString", -"TOK_GraphicString","TOK_IA5String","TOK_IDENTIFIER","TOK_IMPLICIT","TOK_IMPLIED", -"TOK_IMPORTS","TOK_INCLUDES","TOK_INSTANCE","TOK_INSTRUCTIONS","TOK_INTEGER", -"TOK_ISO646String","TOK_MAX","TOK_MIN","TOK_MINUS_INFINITY","TOK_NULL","TOK_NumericString", -"TOK_OBJECT","TOK_ObjectDescriptor","TOK_OCTET","TOK_OF","TOK_OPTIONAL","TOK_PATTERN", -"TOK_PDV","TOK_PLUS_INFINITY","TOK_PRESENT","TOK_PrintableString","TOK_PRIVATE", -"TOK_REAL","TOK_RELATIVE_OID","TOK_SEQUENCE","TOK_SET","TOK_SIZE","TOK_STRING", -"TOK_SYNTAX","TOK_T61String","TOK_TAGS","TOK_TeletexString","TOK_TRUE","TOK_TYPE_IDENTIFIER", -"TOK_UNIQUE","TOK_UNIVERSAL","TOK_UniversalString","TOK_UTCTime","TOK_UTF8String", -"TOK_VideotexString","TOK_VisibleString","TOK_WITH","TOK_EXCEPT","'^'","TOK_INTERSECTION", -"'|'","TOK_UNION","TOK_TwoDots","TOK_ThreeDots","'{'","'}'","'('","')'","';'", -"','","':'","'!'","'.'","'<'","'@'","'['","']'","ParsedGrammar","ModuleList", -"ModuleSpecification","optObjectIdentifier","ObjectIdentifier","ObjectIdentifierBody", -"ObjectIdentifierElement","optModuleSpecificationFlags","ModuleSpecificationFlags", -"ModuleSpecificationFlag","optModuleSpecificationBody","ModuleSpecificationBody", -"ModuleSpecificationElement","@1","ImportsDefinition","ImportsBundleSet","AssignedIdentifier", -"ImportsBundle","ImportsList","ImportsElement","ExportsDefinition","ExportsBody", -"ExportsElement","ValueSetDefinition","@2","DefinedTypeRef","DataTypeReference", -"ParameterArgumentList","ParameterArgumentName","ActualParameterList","ActualParameter", -"optComponentTypeLists","ComponentTypeLists","ComponentType","AlternativeTypeLists", -"AlternativeType","ObjectClass","optUnique","FieldSpec","ClassField","optWithSyntax", -"WithSyntax","@3","WithSyntaxFormat","WithSyntaxFormatToken","ExtensionAndException", -"Type","NSTD_IndirectMarker","TypeDeclaration","TypeDeclarationSet","ComplexTypeReference", -"ComplexTypeReferenceAmpList","ComplexTypeReferenceElement","ClassFieldIdentifier", -"ClassFieldName","FieldName","DefinedObjectClass","ValueDefinition","Value", -"@4","DefinedValue","RestrictedCharacterStringValue","Opaque","BasicTypeId", +"TOK_typefieldreference","TOK_valuefieldreference","TOK_Literal","TOK_ABSENT", +"TOK_ABSTRACT_SYNTAX","TOK_ALL","TOK_ANY","TOK_APPLICATION","TOK_AUTOMATIC", +"TOK_BEGIN","TOK_BIT","TOK_BMPString","TOK_BOOLEAN","TOK_BY","TOK_CHARACTER", +"TOK_CHOICE","TOK_CLASS","TOK_COMPONENT","TOK_COMPONENTS","TOK_CONSTRAINED", +"TOK_CONTAINING","TOK_DEFAULT","TOK_DEFINITIONS","TOK_DEFINED","TOK_EMBEDDED", +"TOK_ENCODED","TOK_ENCODING_CONTROL","TOK_END","TOK_ENUMERATED","TOK_EXPLICIT", +"TOK_EXPORTS","TOK_EXTENSIBILITY","TOK_EXTERNAL","TOK_FALSE","TOK_FROM","TOK_GeneralizedTime", +"TOK_GeneralString","TOK_GraphicString","TOK_IA5String","TOK_IDENTIFIER","TOK_IMPLICIT", +"TOK_IMPLIED","TOK_IMPORTS","TOK_INCLUDES","TOK_INSTANCE","TOK_INSTRUCTIONS", +"TOK_INTEGER","TOK_ISO646String","TOK_MAX","TOK_MIN","TOK_MINUS_INFINITY","TOK_NULL", +"TOK_NumericString","TOK_OBJECT","TOK_ObjectDescriptor","TOK_OCTET","TOK_OF", +"TOK_OPTIONAL","TOK_PATTERN","TOK_PDV","TOK_PLUS_INFINITY","TOK_PRESENT","TOK_PrintableString", +"TOK_PRIVATE","TOK_REAL","TOK_RELATIVE_OID","TOK_SEQUENCE","TOK_SET","TOK_SIZE", +"TOK_STRING","TOK_SYNTAX","TOK_T61String","TOK_TAGS","TOK_TeletexString","TOK_TRUE", +"TOK_TYPE_IDENTIFIER","TOK_UNIQUE","TOK_UNIVERSAL","TOK_UniversalString","TOK_UTCTime", +"TOK_UTF8String","TOK_VideotexString","TOK_VisibleString","TOK_WITH","TOK_EXCEPT", +"'^'","TOK_INTERSECTION","'|'","TOK_UNION","TOK_TwoDots","TOK_ThreeDots","'{'", +"'}'","'('","')'","';'","','","':'","'['","']'","'!'","'.'","'<'","'@'","ParsedGrammar", +"ModuleList","ModuleSpecification","optObjectIdentifier","ObjectIdentifier", +"ObjectIdentifierBody","ObjectIdentifierElement","optModuleSpecificationFlags", +"ModuleSpecificationFlags","ModuleSpecificationFlag","optModuleSpecificationBody", +"ModuleSpecificationBody","ModuleSpecificationElement","@1","ImportsDefinition", +"ImportsBundleSet","AssignedIdentifier","ImportsBundle","ImportsList","ImportsElement", +"ExportsDefinition","ExportsBody","ExportsElement","ValueSetDefinition","@2", +"DefinedTypeRef","DataTypeReference","ParameterArgumentList","ParameterArgumentName", +"ActualParameterList","ActualParameter","optComponentTypeLists","ComponentTypeLists", +"ComponentType","AlternativeTypeLists","AlternativeType","ObjectClass","optUnique", +"FieldSpec","ClassField","optWithSyntax","WithSyntax","@3","WithSyntaxList", +"WithSyntaxToken","ExtensionAndException","Type","NSTD_IndirectMarker","TypeDeclaration", +"TypeDeclarationSet","ComplexTypeReference","ComplexTypeReferenceAmpList","ComplexTypeReferenceElement", +"ClassFieldIdentifier","ClassFieldName","FieldName","DefinedObjectClass","ValueDefinition", +"Value","@4","DefinedValue","RestrictedCharacterStringValue","Opaque","BasicTypeId", "BasicTypeId_UniverationCompatible","BasicType","BasicString","Union","Intersection", "Except","optConstraints","Constraints","SetOfConstraints","ElementSetSpecs", "ElementSetSpec","ConstraintSubtypeElement","@5","ConstraintRangeSpec","ConstraintSpec", @@ -469,35 +471,35 @@ static const char * const yytname[] = { "$","error","$undefined.","TOK_PPEQ", #endif static const short yyr1[] = { 0, - 118, 119, 119, 120, 121, 121, 122, 122, 123, 123, - 124, 124, 124, 125, 125, 126, 126, 127, 127, 127, - 127, 127, 128, 128, 129, 129, 130, 130, 130, 130, - 130, 131, 130, 130, 132, 132, 133, 133, 134, 134, - 135, 136, 136, 137, 137, 137, 138, 138, 138, 139, - 139, 140, 140, 140, 142, 141, 143, 143, 144, 144, - 144, 145, 145, 146, 146, 146, 146, 147, 147, 148, - 148, 149, 149, 150, 150, 151, 151, 151, 151, 152, - 152, 153, 153, 153, 154, 155, 155, 156, 156, 157, - 157, 157, 157, 157, 157, 157, 158, 158, 160, 159, - 161, 161, 162, 162, 163, 163, 163, 164, 165, 166, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 168, 168, 168, 168, 168, 168, 169, 169, 170, - 171, 172, 172, 173, 173, 173, 174, 175, 176, 177, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 178, - 178, 179, 179, 179, 180, 180, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 182, - 182, 182, 183, 183, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 185, 185, - 186, 186, 187, 188, 188, 189, 189, 190, 190, 191, - 191, 191, 192, 192, 192, 192, 192, 193, 193, 193, - 193, 193, 193, 193, 193, 193, 193, 194, 193, 195, - 195, 195, 195, 196, 196, 197, 197, 197, 197, 197, - 198, 199, 199, 200, 200, 201, 201, 202, 202, 203, - 203, 203, 204, 204, 205, 206, 207, 207, 208, 208, + 119, 120, 120, 121, 122, 122, 123, 123, 124, 124, + 125, 125, 125, 126, 126, 127, 127, 128, 128, 128, + 128, 128, 129, 129, 130, 130, 131, 131, 131, 131, + 131, 132, 131, 131, 133, 133, 134, 134, 135, 135, + 136, 137, 137, 138, 138, 138, 139, 139, 139, 140, + 140, 141, 141, 141, 143, 142, 144, 144, 145, 145, + 145, 146, 146, 147, 147, 147, 147, 148, 148, 149, + 149, 150, 150, 151, 151, 152, 152, 152, 152, 153, + 153, 154, 154, 154, 155, 156, 156, 157, 157, 158, + 158, 158, 158, 158, 158, 158, 159, 159, 161, 160, + 162, 162, 163, 163, 163, 163, 164, 164, 164, 165, + 166, 167, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 169, 169, 169, 169, 169, 169, 170, + 170, 171, 172, 173, 173, 174, 174, 174, 175, 176, + 177, 178, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 179, 179, 180, 180, 180, 181, 181, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 183, 183, 183, 184, 184, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 186, 186, 187, 187, 188, 189, 189, 190, 190, 191, + 191, 192, 192, 192, 193, 193, 193, 193, 193, 194, + 194, 194, 194, 194, 194, 194, 194, 194, 194, 195, + 194, 196, 196, 196, 196, 197, 197, 198, 198, 198, + 198, 198, 199, 200, 200, 201, 201, 202, 202, 203, + 203, 204, 204, 204, 205, 205, 206, 207, 208, 208, 209, 209, 210, 210, 211, 211, 212, 212, 213, 213, - 214, 214, 214, 214, 214, 215, 215, 216, 216, 217, - 218, 219, 219, 219, 219, 220, 220, 220, 221, 221, - 222, 223, 223, 224 + 214, 214, 215, 215, 215, 215, 215, 216, 216, 217, + 217, 218, 219, 220, 220, 220, 220, 221, 221, 221, + 222, 222, 223, 224, 224, 225 }; static const short yyr2[] = { 0, @@ -511,311 +513,303 @@ static const short yyr2[] = { 0, 1, 0, 1, 1, 3, 3, 2, 3, 1, 1, 3, 2, 1, 1, 5, 0, 1, 1, 3, 2, 4, 3, 3, 3, 3, 3, 0, 1, 0, 6, - 1, 2, 1, 1, 1, 3, 3, 3, 0, 2, - 1, 4, 4, 4, 6, 6, 1, 4, 4, 1, - 3, 1, 3, 3, 3, 1, 3, 1, 3, 1, - 1, 1, 1, 1, 3, 3, 1, 4, 3, 0, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 1, 1, 1, 1, 2, 1, 1, 1, 1, - 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, - 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 3, 1, 3, 3, 3, + 0, 2, 1, 4, 4, 4, 6, 6, 1, 4, + 4, 1, 3, 1, 3, 3, 3, 1, 3, 1, + 3, 1, 1, 1, 1, 1, 3, 3, 1, 4, + 3, 0, 3, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 1, 1, 1, 1, 2, 1, 1, + 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, + 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 1, 1, 4, 3, 4, 1, - 3, 5, 1, 3, 3, 3, 3, 4, 3, 1, - 1, 3, 3, 3, 3, 1, 1, 0, 5, 1, - 2, 2, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 5, 1, 3, 1, 3, 0, 1, 1, - 1, 1, 1, 1, 3, 4, 1, 3, 2, 3, - 1, 3, 0, 1, 1, 2, 2, 3, 1, 3, - 1, 4, 4, 1, 1, 1, 1, 0, 1, 2, - 4, 0, 1, 1, 1, 0, 1, 1, 1, 1, - 1, 0, 1, 1 + 1, 1, 1, 1, 1, 0, 1, 1, 4, 3, + 4, 1, 3, 5, 1, 3, 3, 3, 3, 4, + 3, 1, 1, 3, 3, 3, 3, 1, 1, 0, + 5, 1, 2, 2, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 5, 1, 3, 1, 3, 0, + 1, 1, 1, 1, 1, 1, 3, 4, 1, 3, + 2, 3, 1, 3, 0, 1, 1, 2, 2, 3, + 1, 3, 1, 4, 4, 1, 1, 1, 1, 0, + 1, 2, 4, 0, 1, 1, 1, 0, 1, 1, + 1, 1, 1, 0, 1, 1 }; static const short yydefact[] = { 0, - 279, 280, 1, 2, 5, 3, 0, 0, 6, 284, + 281, 282, 1, 2, 5, 3, 0, 0, 6, 286, 13, 8, 0, 9, 11, 14, 7, 10, 0, 0, 0, 0, 0, 0, 0, 15, 16, 0, 22, 20, - 18, 21, 19, 0, 17, 12, 23, 175, 0, 0, - 176, 177, 178, 0, 179, 180, 188, 181, 182, 183, - 184, 185, 186, 187, 0, 24, 25, 27, 28, 31, + 18, 21, 19, 0, 17, 12, 23, 177, 0, 0, + 178, 179, 180, 0, 181, 182, 190, 183, 184, 185, + 186, 187, 188, 189, 0, 24, 25, 27, 28, 31, 29, 30, 34, 0, 0, 32, 0, 49, 0, 50, 52, 54, 36, 0, 37, 0, 42, 44, 46, 4, - 26, 268, 122, 281, 0, 157, 0, 0, 171, 164, - 168, 170, 158, 0, 0, 159, 163, 167, 0, 0, - 57, 58, 160, 169, 126, 0, 33, 48, 47, 0, - 0, 35, 38, 0, 0, 0, 0, 272, 60, 59, - 109, 269, 276, 0, 172, 166, 165, 162, 161, 0, + 26, 270, 124, 283, 0, 159, 0, 0, 173, 166, + 170, 172, 160, 0, 0, 161, 165, 169, 0, 0, + 57, 58, 162, 171, 128, 0, 33, 48, 47, 0, + 0, 35, 38, 0, 0, 0, 0, 274, 60, 59, + 111, 271, 278, 0, 174, 168, 167, 164, 163, 0, 62, 0, 64, 0, 0, 0, 51, 53, 39, 43, - 45, 0, 274, 275, 273, 0, 0, 194, 278, 277, - 270, 123, 125, 0, 0, 0, 0, 55, 132, 133, - 127, 128, 130, 124, 145, 152, 146, 266, 153, 154, - 267, 143, 142, 144, 140, 138, 149, 147, 148, 0, - 150, 40, 41, 268, 268, 0, 88, 0, 122, 281, - 117, 0, 0, 194, 194, 110, 120, 173, 160, 111, - 0, 0, 0, 108, 195, 196, 268, 63, 67, 66, - 65, 0, 0, 0, 0, 0, 137, 134, 0, 255, - 253, 253, 253, 90, 254, 86, 253, 253, 97, 0, - 271, 0, 268, 0, 268, 0, 268, 0, 0, 174, - 268, 0, 0, 0, 226, 225, 0, 224, 227, 0, - 0, 0, 229, 0, 200, 203, 0, 210, 211, 217, - 216, 243, 244, 228, 231, 230, 0, 61, 155, 56, - 129, 141, 151, 139, 256, 95, 0, 94, 96, 87, - 253, 92, 93, 0, 85, 98, 89, 0, 105, 0, - 80, 83, 84, 268, 121, 0, 0, 73, 74, 79, - 253, 268, 282, 0, 282, 265, 257, 0, 259, 264, - 261, 0, 68, 70, 71, 0, 0, 0, 220, 0, - 0, 0, 0, 0, 0, 198, 191, 192, 189, 190, - 0, 0, 0, 193, 0, 0, 0, 0, 0, 156, - 135, 136, 91, 0, 118, 0, 112, 268, 82, 268, - 113, 268, 77, 253, 268, 283, 114, 268, 258, 0, - 0, 119, 268, 197, 204, 218, 221, 222, 215, 213, - 232, 0, 245, 209, 201, 205, 206, 207, 0, 214, - 212, 0, 0, 247, 199, 99, 106, 107, 150, 81, - 78, 75, 76, 109, 109, 260, 0, 0, 69, 0, - 223, 236, 0, 234, 194, 0, 208, 0, 249, 251, - 246, 0, 0, 115, 116, 263, 262, 219, 233, 0, - 238, 202, 250, 0, 248, 103, 0, 101, 104, 131, - 235, 241, 242, 240, 237, 239, 252, 100, 102, 0, - 0, 0 + 45, 0, 276, 277, 275, 0, 0, 196, 280, 279, + 272, 125, 127, 0, 0, 0, 0, 55, 134, 135, + 129, 130, 132, 126, 147, 154, 148, 268, 155, 156, + 269, 145, 144, 146, 142, 140, 151, 149, 150, 0, + 152, 40, 41, 270, 270, 0, 88, 0, 124, 283, + 119, 0, 0, 196, 196, 112, 122, 175, 162, 113, + 0, 0, 0, 110, 197, 198, 270, 63, 67, 66, + 65, 0, 0, 0, 0, 0, 139, 136, 0, 257, + 255, 255, 255, 90, 256, 86, 255, 255, 97, 0, + 273, 0, 270, 0, 270, 0, 270, 0, 0, 176, + 270, 0, 0, 0, 228, 227, 0, 226, 229, 0, + 0, 0, 231, 0, 202, 205, 0, 212, 213, 219, + 218, 245, 246, 230, 233, 232, 0, 61, 157, 56, + 131, 143, 153, 141, 258, 95, 0, 94, 96, 87, + 255, 92, 93, 0, 85, 98, 89, 0, 107, 0, + 80, 83, 84, 270, 123, 0, 0, 73, 74, 79, + 255, 270, 284, 0, 284, 267, 259, 0, 261, 266, + 263, 0, 68, 70, 71, 0, 0, 0, 222, 0, + 0, 0, 0, 0, 0, 200, 193, 194, 191, 192, + 0, 0, 0, 195, 0, 0, 0, 0, 0, 158, + 137, 138, 91, 0, 120, 0, 114, 270, 82, 270, + 115, 270, 77, 255, 270, 285, 116, 270, 260, 0, + 0, 121, 270, 199, 206, 220, 223, 224, 217, 215, + 234, 0, 247, 211, 203, 207, 208, 209, 0, 216, + 214, 0, 0, 249, 201, 99, 108, 109, 152, 81, + 78, 75, 76, 111, 111, 262, 0, 0, 69, 0, + 225, 238, 0, 236, 196, 0, 210, 0, 251, 253, + 248, 0, 0, 117, 118, 265, 264, 221, 235, 0, + 240, 204, 252, 0, 250, 103, 104, 0, 0, 101, + 105, 133, 237, 243, 244, 242, 239, 241, 254, 0, + 100, 102, 106, 0, 0, 0 }; -static const short yydefgoto[] = { 440, +static const short yydefgoto[] = { 444, 3, 4, 8, 9, 13, 14, 25, 26, 27, 55, 56, 57, 107, 58, 74, 183, 75, 76, 77, 59, 69, 70, 60, 212, 100, 61, 130, 131, 312, 313, 297, 298, 299, 290, 291, 119, 281, 186, 187, 285, - 286, 413, 427, 428, 300, 301, 147, 148, 196, 101, - 161, 162, 429, 163, 222, 223, 62, 176, 214, 177, + 286, 413, 429, 430, 300, 301, 147, 148, 196, 101, + 161, 162, 431, 432, 222, 223, 62, 176, 214, 177, 253, 270, 102, 103, 200, 104, 332, 333, 335, 204, 205, 206, 254, 255, 256, 400, 321, 257, 258, 259, - 260, 403, 404, 435, 436, 261, 262, 263, 383, 384, + 260, 403, 404, 437, 438, 261, 262, 263, 383, 384, 409, 224, 225, 240, 308, 309, 264, 121, 122, 123, 146, 151, 265, 105, 355, 266 }; -static const short yypact[] = { 258, --32768,-32768, 258,-32768, -19,-32768, 51, 103,-32768,-32768, --32768,-32768, 69,-32768, 39, 87,-32768,-32768, 143, 114, - 73, 105, 212, 183, 277, 87,-32768, 174,-32768,-32768, --32768,-32768,-32768, 262,-32768,-32768, 429,-32768, 279, 42, --32768,-32768,-32768, 211,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 254, 429,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 354, 581,-32768, 188,-32768, 167,-32768, - 213,-32768,-32768, 38,-32768, -28,-32768, 219,-32768,-32768, --32768, -9, 216,-32768, 251,-32768, 252, 264,-32768,-32768, --32768,-32768,-32768, 289, 260,-32768,-32768,-32768, 656, 341, --32768,-32768,-32768,-32768, 233, 345,-32768,-32768,-32768, 247, - 243,-32768,-32768, 258, 247, 244, 246, 4,-32768,-32768, --32768,-32768, 59, 247,-32768,-32768,-32768,-32768,-32768, -22, --32768, 241, 248, 250, 301, 158,-32768,-32768, -19,-32768, --32768, 276,-32768,-32768,-32768, 349, 506, -54,-32768,-32768, --32768,-32768,-32768, 357, 656, 353, 247,-32768,-32768,-32768, - 256,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 257, - 253,-32768,-32768, 28, 12, 97,-32768, 255, -73, 266, - 326, 268, 304, 106, 122,-32768,-32768,-32768, 271,-32768, - 272, 274, 168,-32768,-32768, 280, 267,-32768,-32768,-32768, --32768, 380, 290, 380, 353, 158,-32768,-32768, 158,-32768, - 62, 27, 62,-32768,-32768, 296, 27, 62, 288, 276, --32768, 361, 8, 298, 15, 319, 15, 320, 56,-32768, - 7, 168, 293, 366,-32768,-32768, 135,-32768,-32768, 299, - 258, 168,-32768, 286, 200, 297, 291, 135,-32768,-32768, --32768, 292,-32768,-32768,-32768,-32768, 168,-32768,-32768, 395, --32768, 395,-32768,-32768,-32768,-32768, 311,-32768,-32768,-32768, - 62,-32768,-32768, 318,-32768,-32768,-32768, 353, 300, 100, --32768,-32768,-32768, 267,-32768, 337, 302, 306,-32768,-32768, - 62, 267, 353, 303, 353,-32768,-32768, 141,-32768,-32768, - 317, 147,-32768,-32768,-32768, 310, 231, 305, 312, 308, - 186, 321, 322, 323, 327,-32768,-32768,-32768,-32768,-32768, - 330, 231, 231,-32768, 231, 168, 278, 316, 328,-32768, --32768,-32768,-32768, 333,-32768, 295,-32768, 8,-32768, 267, --32768, 2,-32768, 62, 267,-32768,-32768, 267,-32768, 81, - 295,-32768, 7,-32768,-32768,-32768,-32768, 331,-32768,-32768, - 280, 31,-32768,-32768, 315,-32768,-32768,-32768, 332,-32768, --32768, 9, 148,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 336, 343,-32768, 380, --32768,-32768, 156,-32768, -54, 168,-32768, 353, 339,-32768, --32768, 316, 139,-32768,-32768,-32768,-32768, 395,-32768, 31, - 5, 221, 339, 353,-32768,-32768, 20,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 453, - 455,-32768 +static const short yypact[] = { 76, +-32768,-32768, 76,-32768, -55,-32768, 23, 59,-32768,-32768, +-32768,-32768, 31,-32768, 32, 350,-32768,-32768, 101, 120, + 136, 144, 131, 152, 192, 350,-32768, 139,-32768,-32768, +-32768,-32768,-32768, 233,-32768,-32768, 394,-32768, 275, 34, +-32768,-32768,-32768, 133,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 258, 394,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 224, 547,-32768, 197,-32768, 63,-32768, + 203,-32768,-32768, 45,-32768, 24,-32768, 205,-32768,-32768, +-32768, 21, 206,-32768, 240,-32768, 254, 266,-32768,-32768, +-32768,-32768,-32768, 288, 260,-32768,-32768,-32768, 623, 343, +-32768,-32768,-32768,-32768, 236, 352,-32768,-32768,-32768, 248, + 251,-32768,-32768, 76, 248, 252, 257, 106,-32768,-32768, +-32768,-32768, 43, 248,-32768,-32768,-32768,-32768,-32768, 100, +-32768, 249, 256, 261, 300, 158,-32768,-32768, -55,-32768, +-32768, 189,-32768,-32768,-32768, 351, 471, -27,-32768,-32768, +-32768,-32768,-32768, 363, 623, 361, 248,-32768,-32768,-32768, + 269,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 277, + 262,-32768,-32768, 70, 62, 108,-32768, 263, 80, 264, + 357, 291, 327, -13, -9,-32768,-32768,-32768, 293,-32768, + 294, 295, 323,-32768,-32768, 301, 297,-32768,-32768,-32768, +-32768, 407, 250, 407, 361, 158,-32768,-32768, 158,-32768, + 14, 7, 14,-32768,-32768, 324, 7, 14, 316, 189, +-32768, 388, 8, 265, 47, 353, 47, 354, 52,-32768, + 9, 323, 328, 395,-32768,-32768, -16,-32768,-32768, 255, + 76, 323,-32768, 313, 99, 331, 318, -16,-32768,-32768, +-32768, 326,-32768,-32768,-32768,-32768, 323,-32768,-32768, 429, +-32768, 429,-32768,-32768,-32768,-32768, 333,-32768,-32768,-32768, + 14,-32768,-32768, 355,-32768,-32768,-32768, 361, 321, 118, +-32768,-32768,-32768, 297,-32768, 366, 334, 337,-32768,-32768, + 14, 297, 361, 335, 361,-32768,-32768, 162,-32768,-32768, + 330, 173,-32768,-32768,-32768, 340, 370, 338, 341, 346, + 234, 344, 348, 358, 364,-32768,-32768,-32768,-32768,-32768, + 359, 370, 370,-32768, 370, 323, 380, 339, 365,-32768, +-32768,-32768,-32768, 349,-32768, 246,-32768, 8,-32768, 297, +-32768, 38,-32768, 14, 297,-32768,-32768, 297,-32768, 57, + 246,-32768, 9,-32768,-32768,-32768,-32768, 345,-32768,-32768, + 301, 2,-32768,-32768, 356,-32768,-32768,-32768, 368,-32768, +-32768, 17, 188,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768, 372, 374,-32768, 407, +-32768,-32768, 195,-32768, -27, 323,-32768, 361, 377,-32768, +-32768, 339, 11,-32768,-32768,-32768,-32768, 429,-32768, 2, + 121, 225, 377, 361,-32768,-32768,-32768, 11, 19,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 5, +-32768,-32768,-32768, 460, 466,-32768 }; static const short yypgoto[] = {-32768, --32768, 454,-32768, 324,-32768, 443,-32768,-32768, 432,-32768, --32768, 404,-32768,-32768,-32768,-32768, 387,-32768, 347,-32768, --32768, 355,-32768,-32768, 399,-32768,-32768, 313,-32768, 104, - 229,-32768, 118,-32768, 123,-32768,-32768,-32768, 242,-32768, --32768,-32768,-32768, 47, -228, -80,-32768, -62,-32768, -138, --32768, 263,-32768, -344, 307, 309,-32768, -145,-32768, -317, - -26, -211, -68, 335,-32768, 29,-32768,-32768,-32768, -187, --32768, 153, -194, 71, -133,-32768, 220,-32768, -267,-32768, --32768,-32768, 63,-32768,-32768,-32768,-32768,-32768,-32768, 72, - 78, -209,-32768,-32768,-32768, 127, -125, -172,-32768,-32768, --32768,-32768, 1,-32768, 184, -7 +-32768, 467,-32768, 336,-32768, 459,-32768,-32768, 453,-32768, +-32768, 430,-32768,-32768,-32768,-32768, 414,-32768, 379,-32768, +-32768, 385,-32768,-32768, 434,-32768,-32768, 347,-32768, 140, + 267,-32768, 153,-32768, 159,-32768,-32768,-32768, 276,-32768, +-32768,-32768, 81, -250, -228, -80,-32768, -44,-32768, -103, +-32768, 298,-32768, -111, 332, 342,-32768, -3,-32768, -278, + -107, -211, 86, 369,-32768, 26,-32768,-32768,-32768, -187, +-32768, 186, -64, 107, -141,-32768, 268,-32768, -259,-32768, +-32768,-32768, 92,-32768,-32768,-32768,-32768,-32768,-32768, 103, + 111, -209,-32768,-32768,-32768, 160, -125, -50,-32768,-32768, +-32768,-32768, 1,-32768, 220, -7 }; -#define YYLAST 752 +#define YYLAST 720 static const short yytable[] = { 15, - 5, 120, 272, 5, 292, 15, 236, 238, 197, 10, - 179, 276, 278, 279, 10, 10, 10, 282, 283, 114, - 117, 432, 10, 426, 143, 217, 218, 202, 387, 65, - 132, -279, 72, 296, 159, 160, 79, 64, 10, 124, - 71, 217, 218, 397, 78, 10, 296, 316, 65, 10, - 1, 2, 203, 370, 1, 2, 64, 325, 10, 11, - 67, 219, 219, 10, 168, 63, 79, 171, 430, 381, - 274, 343, 339, 275, 78, 433, 10, 11, 198, 434, - 144, 115, 430, 154, 63, 7, 132, 155, 10, 168, - 179, 353, 171, 179, 145, 295, 219, 220, 220, 133, - 20, 149, 72, 221, 226, 289, 118, 79, 21, 178, - 71, 289, 150, 310, 139, 78, 153, 118, 289, 292, - -72, 408, 118, 118, 152, 438, 268, 118, 181, 22, - 118, 23, 220, -253, 402, 164, 180, -253, 16, 277, - 24, 379, 426, 118, 393, 19, 112, 201, 209, 211, - 68, 28, 293, 159, 160, 133, 12, 210, 30, 306, - 314, 307, 165, 166, 167, 10, 168, 169, 170, 171, - 1, 2, 29, 166, 17, 10, 168, 169, 170, 171, - 1, 2, 394, 365, 306, 395, 243, 202, 418, 178, - 31, 166, 178, 10, 168, 169, 170, 171, 376, 377, - 244, 378, 229, 202, 172, 347, 230, 273, 181, 348, - 235, 181, 203, 349, 245, 246, 180, 421, 10, 180, - 388, 354, 173, 1, 2, 294, 237, 302, 203, 302, - 247, 311, 245, 315, 310, 398, 166, 319, 10, 168, - 169, 170, 171, 1, 2, 174, 359, 369, 320, 248, - 360, 324, 362, 411, 10, 249, 363, 412, 73, 1, - 2, 419, 175, 244, 250, 420, 32, 293, 33, 391, - 1, 2, 251, 249, 252, 109, 110, 245, 246, 34, - 345, 36, 314, 166, 37, 10, 168, 169, 170, 171, - 184, 185, 66, 247, 80, 356, 108, 356, 327, 328, - 329, 330, 10, 168, 159, 160, 171, 1, 2, 331, - 83, 84, 248, 1, 2, 159, 160, 111, 249, 327, - 328, 329, 330, 116, 245, 341, 342, 250, 124, 322, - 323, 414, 415, 125, 126, 251, 127, 252, 389, 380, - 294, 128, 129, 134, 302, 135, 180, 136, 138, 141, - 142, 156, 311, 389, 158, 315, 82, 188, 157, 207, - 10, 180, 232, 216, 405, 249, 83, 84, 213, 215, - -280, 231, 233, 234, 410, 239, 241, 85, 38, 86, - 242, 87, 118, 269, 284, 280, 267, 288, 303, 305, - 317, 88, 318, 326, 334, 89, 338, 336, 340, 90, - 410, 344, 91, 41, 42, 43, 350, 351, 357, 366, - 368, 346, 405, 92, 45, 352, 437, 364, 93, 46, - 94, 47, 95, 361, 406, 367, 372, 203, 373, 48, - 382, 96, 97, 375, 374, 385, 10, 386, 49, 407, - 50, 1, 2, 416, 401, 51, 98, 52, 53, 54, - 417, 424, 441, 38, 442, 18, 6, 35, 99, 81, - 113, 140, 182, 106, 137, 304, 399, 208, 39, 392, - 390, 287, 40, 439, 371, 271, 422, 337, 41, 42, - 43, 199, 431, 425, 44, 423, 396, 0, 358, 45, - 0, 227, 0, 228, 46, 0, 47, 0, 0, 0, - 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, - 0, 0, 0, 49, 0, 50, 0, 0, 189, 190, - 51, 0, 52, 53, 54, 191, 0, 0, 0, 85, - 38, 86, 0, 87, 192, 0, 0, 0, 0, 0, - 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, - 0, 90, 0, 0, 91, 41, 42, 43, 0, 0, - 0, 0, 0, 193, 0, 92, 45, 0, 0, 0, - 93, 46, 94, 47, 95, 0, 0, 0, 0, 0, - 0, 48, 0, 96, 97, 194, 195, 0, 0, 0, - 49, 0, 50, 83, 84, 0, 0, 51, 98, 52, - 53, 54, 0, 0, 85, 38, 86, 0, 87, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, - 0, 0, 89, 0, 0, 0, 90, 0, 0, 91, - 41, 42, 43, 0, 0, 0, 0, 0, 0, 0, - 92, 45, 0, 0, 0, 93, 46, 94, 47, 95, - 0, 0, 0, 0, 0, 0, 48, 0, 96, 97, - 0, 0, 0, 0, 0, 49, 0, 50, 1, 2, - 0, 0, 51, 98, 52, 53, 54, 0, 0, 85, - 38, 86, 0, 87, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, - 0, 90, 0, 0, 91, 41, 42, 43, 0, 0, - 0, 0, 0, 0, 0, 92, 45, 0, 0, 0, - 93, 46, 94, 47, 95, 0, 0, 0, 0, 0, - 0, 48, 0, 96, 97, 0, 0, 0, 0, 0, - 49, 0, 50, 0, 0, 0, 0, 51, 98, 52, - 53, 54 + 5, 120, 272, 5, 292, 15, 236, 238, 426, 10, + 179, 276, 278, 279, 426, 10, 10, 282, 283, 159, + 160, 427, 426, 163, 10, 159, 160, 427, 178, 65, + 10, 11, 72, 159, 160, 427, 79, 64, 10, 11, + 71, 10, 219, 197, 78, 10, 1, 2, 65, 219, + 7, 117, 10, 67, 10, 202, 64, 1, 2, 10, + 168, 370, 63, 171, 10, 168, 79, 387, 171, 202, + 296, 343, 114, 202, 78, 217, 218, 381, 220, 296, + 203, 63, 397, 217, 218, 220, 149, 319, 1, 2, + 179, 353, 235, 179, 203, 16, 237, 150, 203, 133, + 320, 163, 72, 221, 226, 219, 402, 79, 178, 28, + 71, 178, 289, 310, 139, 78, 153, 428, 443, 292, + 118, 118, 277, 428, 152, 441, 268, 143, 181, 12, + 295, 428, 408, 118, 115, 164, 180, 17, 434, 19, + 10, 220, 289, 68, 393, 1, 2, 201, 209, 211, + 118, 289, 293, -72, 112, 133, 306, 210, 307, 118, + 314, 306, 165, 166, 167, 10, 168, 169, 170, 171, + 1, 2, 109, 110, 118, 365, -255, 316, 442, 29, + -255, 73, 118, 144, 132, -281, 32, 325, 418, 442, + 376, 377, 435, 378, 34, 124, 436, 145, 327, 328, + 329, 330, 339, 184, 185, 172, 154, 273, 181, 331, + 155, 181, 274, 349, 229, 275, 180, 421, 230, 180, + 388, 354, 30, 173, 347, 294, 82, 302, 348, 302, + 31, 311, 198, 315, 310, 398, 83, 84, 33, 166, + 132, 10, 168, 169, 170, 171, 174, 36, 85, 38, + 86, 324, 87, 10, 168, 10, 37, 171, 1, 2, + 1, 2, 88, 175, 159, 160, 89, 293, 359, 391, + 90, 379, 360, 91, 41, 42, 43, 83, 84, 362, + 345, 245, 314, 363, 92, 45, 322, 323, 66, 93, + 46, 94, 47, 95, 411, 356, 369, 356, 412, 80, + 48, 419, 96, 97, 394, 420, 108, 395, 111, 49, + 116, 50, 1, 2, 159, 160, 51, 98, 52, 53, + 54, 124, 249, 125, 327, 328, 329, 330, 166, 99, + 10, 168, 169, 170, 171, 1, 2, 126, 389, 127, + 294, 128, 243, 129, 302, 134, 180, 341, 342, 414, + 415, 135, 311, 389, 136, 315, 244, 138, 141, 188, + 156, 180, 142, 20, 405, 207, 158, 157, 10, -282, + 245, 246, 21, 216, 410, 166, 231, 10, 168, 169, + 170, 171, 1, 2, 213, 166, 247, 10, 168, 169, + 170, 171, 215, 22, 232, 23, 233, 234, 239, 241, + 410, 10, 242, 244, 24, 248, 1, 2, 267, 118, + 269, 249, 405, 284, 280, 288, 439, 245, 246, 38, + 250, 326, 318, 303, 305, 336, 317, 245, 251, 334, + 252, 338, 340, 247, 39, 346, 350, 361, 40, 344, + 351, 357, 380, 366, 41, 42, 43, 352, 364, 368, + 44, 203, 248, 372, 386, 45, 382, 367, 249, 445, + 46, 401, 47, 375, 373, 446, 406, 250, 249, 6, + 48, 18, 374, 385, 182, 251, 407, 252, 35, 49, + 416, 50, 417, 189, 190, 81, 51, 113, 52, 53, + 54, 191, 424, 140, 137, 85, 38, 86, 106, 87, + 192, 208, 399, 304, 392, 287, 390, 371, 440, 88, + 271, 433, 422, 89, 425, 199, 227, 90, 423, 396, + 91, 41, 42, 43, 358, 337, 228, 0, 0, 193, + 0, 92, 45, 0, 0, 0, 93, 46, 94, 47, + 95, 0, 0, 0, 0, 0, 0, 48, 0, 96, + 97, 194, 195, 0, 0, 0, 49, 0, 50, 83, + 84, 0, 0, 51, 98, 52, 53, 54, 0, 0, + 0, 85, 38, 86, 0, 87, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 88, 0, 0, 0, 89, + 0, 0, 0, 90, 0, 0, 91, 41, 42, 43, + 0, 0, 0, 0, 0, 0, 0, 92, 45, 0, + 0, 0, 93, 46, 94, 47, 95, 0, 0, 0, + 0, 0, 0, 48, 0, 96, 97, 0, 0, 0, + 0, 0, 49, 0, 50, 1, 2, 0, 0, 51, + 98, 52, 53, 54, 0, 0, 0, 85, 38, 86, + 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 88, 0, 0, 0, 89, 0, 0, 0, 90, + 0, 0, 91, 41, 42, 43, 0, 0, 0, 0, + 0, 0, 0, 92, 45, 0, 0, 0, 93, 46, + 94, 47, 95, 0, 0, 0, 0, 0, 0, 48, + 0, 96, 97, 0, 0, 0, 0, 0, 49, 0, + 50, 0, 0, 0, 0, 51, 98, 52, 53, 54 }; static const short yycheck[] = { 7, - 0, 82, 214, 3, 233, 13, 194, 195, 147, 8, - 136, 221, 222, 223, 8, 8, 8, 227, 228, 48, - 30, 17, 8, 4, 21, 14, 15, 82, 346, 37, - 99, 105, 40, 32, 15, 16, 44, 37, 8, 113, - 40, 14, 15, 361, 44, 8, 32, 242, 56, 8, - 13, 14, 107, 321, 13, 14, 56, 252, 8, 9, - 19, 35, 35, 8, 9, 37, 74, 12, 413, 337, - 216, 281, 267, 219, 74, 71, 8, 9, 147, 75, - 77, 110, 427, 106, 56, 105, 155, 110, 8, 9, - 216, 301, 12, 219, 91, 234, 35, 71, 71, 99, - 14, 43, 110, 184, 185, 104, 116, 115, 22, 136, - 110, 104, 54, 239, 114, 115, 124, 116, 104, 348, - 106, 113, 116, 116, 124, 106, 207, 116, 136, 43, - 116, 45, 71, 106, 104, 135, 136, 110, 36, 113, - 54, 336, 4, 116, 354, 107, 109, 147, 156, 157, - 109, 9, 233, 15, 16, 155, 106, 157, 86, 104, - 241, 106, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 59, 6, 106, 8, 9, 10, 11, 12, - 13, 14, 355, 317, 104, 358, 19, 82, 400, 216, - 86, 6, 219, 8, 9, 10, 11, 12, 332, 333, - 33, 335, 106, 82, 47, 106, 110, 215, 216, 110, - 105, 219, 107, 294, 47, 48, 216, 405, 8, 219, - 346, 302, 65, 13, 14, 233, 105, 235, 107, 237, - 63, 239, 47, 241, 360, 361, 6, 103, 8, 9, - 10, 11, 12, 13, 14, 88, 106, 62, 114, 82, - 110, 251, 106, 106, 8, 88, 110, 110, 48, 13, - 14, 106, 105, 33, 97, 110, 55, 348, 86, 350, - 13, 14, 105, 88, 107, 109, 110, 47, 48, 3, - 288, 108, 363, 6, 23, 8, 9, 10, 11, 12, - 15, 16, 14, 63, 41, 303, 109, 305, 99, 100, - 101, 102, 8, 9, 15, 16, 12, 13, 14, 110, - 13, 14, 82, 13, 14, 15, 16, 105, 88, 99, - 100, 101, 102, 105, 47, 15, 16, 97, 113, 31, - 32, 394, 395, 83, 83, 105, 73, 107, 346, 62, - 348, 53, 83, 3, 352, 113, 346, 3, 106, 106, - 105, 111, 360, 361, 105, 363, 3, 9, 111, 3, - 8, 361, 37, 111, 372, 88, 13, 14, 113, 113, - 105, 117, 105, 70, 382, 105, 105, 24, 25, 26, - 107, 28, 116, 4, 97, 90, 107, 27, 70, 70, - 98, 38, 27, 108, 98, 42, 105, 107, 4, 46, - 408, 84, 49, 50, 51, 52, 70, 106, 106, 105, - 103, 112, 420, 60, 61, 110, 424, 108, 65, 66, - 67, 68, 69, 107, 110, 114, 105, 107, 106, 76, - 115, 78, 79, 104, 108, 108, 8, 105, 85, 108, - 87, 13, 14, 108, 114, 92, 93, 94, 95, 96, - 108, 113, 0, 25, 0, 13, 3, 26, 105, 56, - 74, 115, 139, 65, 110, 237, 363, 155, 40, 352, - 348, 230, 44, 427, 322, 213, 406, 258, 50, 51, - 52, 147, 420, 412, 56, 408, 360, -1, 305, 61, - -1, 185, -1, 185, 66, -1, 68, -1, -1, -1, - -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, - -1, -1, -1, 85, -1, 87, -1, -1, 13, 14, - 92, -1, 94, 95, 96, 20, -1, -1, -1, 24, - 25, 26, -1, 28, 29, -1, -1, -1, -1, -1, - -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, - -1, 46, -1, -1, 49, 50, 51, 52, -1, -1, - -1, -1, -1, 58, -1, 60, 61, -1, -1, -1, - 65, 66, 67, 68, 69, -1, -1, -1, -1, -1, - -1, 76, -1, 78, 79, 80, 81, -1, -1, -1, - 85, -1, 87, 13, 14, -1, -1, 92, 93, 94, - 95, 96, -1, -1, 24, 25, 26, -1, 28, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 38, -1, - -1, -1, 42, -1, -1, -1, 46, -1, -1, 49, - 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, - 60, 61, -1, -1, -1, 65, 66, 67, 68, 69, - -1, -1, -1, -1, -1, -1, 76, -1, 78, 79, - -1, -1, -1, -1, -1, 85, -1, 87, 13, 14, - -1, -1, 92, 93, 94, 95, 96, -1, -1, 24, - 25, 26, -1, 28, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, - -1, 46, -1, -1, 49, 50, 51, 52, -1, -1, - -1, -1, -1, -1, -1, 60, 61, -1, -1, -1, - 65, 66, 67, 68, 69, -1, -1, -1, -1, -1, - -1, 76, -1, 78, 79, -1, -1, -1, -1, -1, - 85, -1, 87, -1, -1, -1, -1, 92, 93, 94, - 95, 96 + 0, 82, 214, 3, 233, 13, 194, 195, 4, 8, + 136, 221, 222, 223, 4, 8, 8, 227, 228, 15, + 16, 17, 4, 135, 8, 15, 16, 17, 136, 37, + 8, 9, 40, 15, 16, 17, 44, 37, 8, 9, + 40, 8, 36, 147, 44, 8, 13, 14, 56, 36, + 106, 31, 8, 20, 8, 83, 56, 13, 14, 8, + 9, 321, 37, 12, 8, 9, 74, 346, 12, 83, + 33, 281, 49, 83, 74, 14, 15, 337, 72, 33, + 108, 56, 361, 14, 15, 72, 44, 104, 13, 14, + 216, 301, 106, 219, 108, 37, 106, 55, 108, 99, + 117, 213, 110, 184, 185, 36, 105, 115, 216, 9, + 110, 219, 105, 239, 114, 115, 124, 113, 114, 348, + 113, 113, 116, 113, 124, 107, 207, 22, 136, 107, + 234, 113, 116, 113, 111, 135, 136, 107, 18, 108, + 8, 72, 105, 110, 354, 13, 14, 147, 156, 157, + 113, 105, 233, 107, 110, 155, 105, 157, 107, 113, + 241, 105, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 110, 111, 113, 317, 107, 242, 429, 60, + 111, 49, 113, 78, 99, 106, 56, 252, 400, 440, + 332, 333, 72, 335, 3, 116, 76, 92, 100, 101, + 102, 103, 267, 15, 16, 48, 107, 215, 216, 111, + 111, 219, 216, 294, 107, 219, 216, 405, 111, 219, + 346, 302, 87, 66, 107, 233, 3, 235, 111, 237, + 87, 239, 147, 241, 360, 361, 13, 14, 87, 6, + 155, 8, 9, 10, 11, 12, 89, 109, 25, 26, + 27, 251, 29, 8, 9, 8, 24, 12, 13, 14, + 13, 14, 39, 106, 15, 16, 43, 348, 107, 350, + 47, 336, 111, 50, 51, 52, 53, 13, 14, 107, + 288, 48, 363, 111, 61, 62, 32, 33, 14, 66, + 67, 68, 69, 70, 107, 303, 63, 305, 111, 42, + 77, 107, 79, 80, 355, 111, 110, 358, 106, 86, + 106, 88, 13, 14, 15, 16, 93, 94, 95, 96, + 97, 116, 89, 84, 100, 101, 102, 103, 6, 106, + 8, 9, 10, 11, 12, 13, 14, 84, 346, 74, + 348, 54, 20, 84, 352, 3, 346, 15, 16, 394, + 395, 116, 360, 361, 3, 363, 34, 107, 107, 9, + 112, 361, 106, 14, 372, 3, 106, 112, 8, 106, + 48, 49, 23, 112, 382, 6, 114, 8, 9, 10, + 11, 12, 13, 14, 116, 6, 64, 8, 9, 10, + 11, 12, 116, 44, 38, 46, 106, 71, 106, 106, + 408, 8, 108, 34, 55, 83, 13, 14, 108, 113, + 4, 89, 420, 98, 91, 28, 424, 48, 49, 26, + 98, 109, 28, 71, 71, 108, 99, 48, 106, 99, + 108, 106, 4, 64, 41, 115, 71, 108, 45, 85, + 107, 107, 63, 106, 51, 52, 53, 111, 109, 104, + 57, 108, 83, 106, 106, 62, 118, 117, 89, 0, + 67, 117, 69, 105, 107, 0, 111, 98, 89, 3, + 77, 13, 109, 109, 139, 106, 109, 108, 26, 86, + 109, 88, 109, 13, 14, 56, 93, 74, 95, 96, + 97, 21, 116, 115, 110, 25, 26, 27, 65, 29, + 30, 155, 363, 237, 352, 230, 348, 322, 428, 39, + 213, 420, 406, 43, 412, 147, 185, 47, 408, 360, + 50, 51, 52, 53, 305, 258, 185, -1, -1, 59, + -1, 61, 62, -1, -1, -1, 66, 67, 68, 69, + 70, -1, -1, -1, -1, -1, -1, 77, -1, 79, + 80, 81, 82, -1, -1, -1, 86, -1, 88, 13, + 14, -1, -1, 93, 94, 95, 96, 97, -1, -1, + -1, 25, 26, 27, -1, 29, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 39, -1, -1, -1, 43, + -1, -1, -1, 47, -1, -1, 50, 51, 52, 53, + -1, -1, -1, -1, -1, -1, -1, 61, 62, -1, + -1, -1, 66, 67, 68, 69, 70, -1, -1, -1, + -1, -1, -1, 77, -1, 79, 80, -1, -1, -1, + -1, -1, 86, -1, 88, 13, 14, -1, -1, 93, + 94, 95, 96, 97, -1, -1, -1, 25, 26, 27, + -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 39, -1, -1, -1, 43, -1, -1, -1, 47, + -1, -1, 50, 51, 52, 53, -1, -1, -1, -1, + -1, -1, -1, 61, 62, -1, -1, -1, 66, 67, + 68, 69, 70, -1, -1, -1, -1, -1, -1, 77, + -1, 79, 80, -1, -1, -1, -1, -1, 86, -1, + 88, -1, -1, -1, -1, 93, 94, 95, 96, 97 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/share/bison.simple" @@ -1361,13 +1355,13 @@ yyreduce: switch (yyn) { case 1: -#line 323 "asn1p_y.y" +#line 324 "asn1p_y.y" { *(void **)param = yyvsp[0].a_grammar; ; break;} case 2: -#line 329 "asn1p_y.y" +#line 330 "asn1p_y.y" { yyval.a_grammar = asn1p_new(); checkmem(yyval.a_grammar); @@ -1375,14 +1369,14 @@ case 2: ; break;} case 3: -#line 334 "asn1p_y.y" +#line 335 "asn1p_y.y" { yyval.a_grammar = yyvsp[-1].a_grammar; TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next); ; break;} case 4: -#line 355 "asn1p_y.y" +#line 356 "asn1p_y.y" { if(yyvsp[-1].a_module) { @@ -1399,27 +1393,27 @@ case 4: ; break;} case 5: -#line 376 "asn1p_y.y" +#line 377 "asn1p_y.y" { yyval.a_oid = 0; ; break;} case 6: -#line 377 "asn1p_y.y" +#line 378 "asn1p_y.y" { yyval.a_oid = yyvsp[0].a_oid; ; break;} case 7: -#line 381 "asn1p_y.y" +#line 382 "asn1p_y.y" { yyval.a_oid = yyvsp[-1].a_oid; ; break;} case 8: -#line 384 "asn1p_y.y" +#line 385 "asn1p_y.y" { yyval.a_oid = 0; ; break;} case 9: -#line 390 "asn1p_y.y" +#line 391 "asn1p_y.y" { yyval.a_oid = asn1p_oid_new(); asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc); @@ -1428,7 +1422,7 @@ case 9: ; break;} case 10: -#line 396 "asn1p_y.y" +#line 397 "asn1p_y.y" { yyval.a_oid = yyvsp[-1].a_oid; asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc); @@ -1437,74 +1431,74 @@ case 10: ; break;} case 11: -#line 405 "asn1p_y.y" +#line 406 "asn1p_y.y" { /* iso */ yyval.a_oid_arc.name = yyvsp[0].tv_str; yyval.a_oid_arc.number = -1; ; break;} case 12: -#line 409 "asn1p_y.y" +#line 410 "asn1p_y.y" { /* iso(1) */ yyval.a_oid_arc.name = yyvsp[-3].tv_str; yyval.a_oid_arc.number = yyvsp[-1].a_int; ; break;} case 13: -#line 413 "asn1p_y.y" +#line 414 "asn1p_y.y" { /* 1 */ yyval.a_oid_arc.name = 0; yyval.a_oid_arc.number = yyvsp[0].a_int; ; break;} case 14: -#line 423 "asn1p_y.y" +#line 424 "asn1p_y.y" { yyval.a_module_flags = MSF_NOFLAGS; ; break;} case 15: -#line 424 "asn1p_y.y" +#line 425 "asn1p_y.y" { yyval.a_module_flags = yyvsp[0].a_module_flags; ; break;} case 16: -#line 433 "asn1p_y.y" +#line 434 "asn1p_y.y" { yyval.a_module_flags = yyvsp[0].a_module_flags; ; break;} case 17: -#line 436 "asn1p_y.y" +#line 437 "asn1p_y.y" { yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags; ; break;} case 18: -#line 445 "asn1p_y.y" +#line 446 "asn1p_y.y" { yyval.a_module_flags = MSF_EXPLICIT_TAGS; ; break;} case 19: -#line 448 "asn1p_y.y" +#line 449 "asn1p_y.y" { yyval.a_module_flags = MSF_IMPLICIT_TAGS; ; break;} case 20: -#line 451 "asn1p_y.y" +#line 452 "asn1p_y.y" { yyval.a_module_flags = MSF_AUTOMATIC_TAGS; ; break;} case 21: -#line 454 "asn1p_y.y" +#line 455 "asn1p_y.y" { yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED; ; break;} case 22: -#line 458 "asn1p_y.y" +#line 459 "asn1p_y.y" { /* X.680Amd1 specifies TAG and XER */ if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) { @@ -1522,23 +1516,23 @@ case 22: ; break;} case 23: -#line 479 "asn1p_y.y" +#line 480 "asn1p_y.y" { yyval.a_module = 0; ; break;} case 24: -#line 480 "asn1p_y.y" +#line 481 "asn1p_y.y" { yyval.a_module = yyvsp[0].a_module; ; break;} case 25: -#line 489 "asn1p_y.y" +#line 490 "asn1p_y.y" { yyval.a_module = yyvsp[0].a_module; ; break;} case 26: -#line 492 "asn1p_y.y" +#line 493 "asn1p_y.y" { yyval.a_module = yyvsp[-1].a_module; @@ -1568,13 +1562,13 @@ case 26: ; break;} case 27: -#line 525 "asn1p_y.y" +#line 526 "asn1p_y.y" { yyval.a_module = yyvsp[0].a_module; ; break;} case 28: -#line 528 "asn1p_y.y" +#line 529 "asn1p_y.y" { yyval.a_module = asn1p_module_new(); checkmem(yyval.a_module); @@ -1586,7 +1580,7 @@ case 28: ; break;} case 29: -#line 537 "asn1p_y.y" +#line 538 "asn1p_y.y" { yyval.a_module = asn1p_module_new(); checkmem(yyval.a_module); @@ -1596,7 +1590,7 @@ case 29: ; break;} case 30: -#line 544 "asn1p_y.y" +#line 545 "asn1p_y.y" { yyval.a_module = asn1p_module_new(); checkmem(yyval.a_module); @@ -1606,7 +1600,7 @@ case 30: ; break;} case 31: -#line 557 "asn1p_y.y" +#line 558 "asn1p_y.y" { yyval.a_module = asn1p_module_new(); checkmem(yyval.a_module); @@ -1616,11 +1610,11 @@ case 31: ; break;} case 32: -#line 565 "asn1p_y.y" +#line 566 "asn1p_y.y" { asn1p_lexer_hack_push_encoding_control(); ; break;} case 33: -#line 566 "asn1p_y.y" +#line 567 "asn1p_y.y" { fprintf(stderr, "WARNING: ENCODING-CONTROL %s " @@ -1631,7 +1625,7 @@ case 33: ; break;} case 34: -#line 578 "asn1p_y.y" +#line 579 "asn1p_y.y" { return yyerror( "Attempt to redefine a standard basic string type, " @@ -1639,7 +1633,7 @@ case 34: ; break;} case 35: -#line 591 "asn1p_y.y" +#line 592 "asn1p_y.y" { if(!saved_aid && 0) return yyerror("Unterminated IMPORTS FROM, " @@ -1649,13 +1643,13 @@ case 35: ; break;} case 36: -#line 601 "asn1p_y.y" +#line 602 "asn1p_y.y" { return yyerror("Empty IMPORTS list"); ; break;} case 37: -#line 607 "asn1p_y.y" +#line 608 "asn1p_y.y" { yyval.a_module = asn1p_module_new(); checkmem(yyval.a_module); @@ -1663,22 +1657,22 @@ case 37: ; break;} case 38: -#line 612 "asn1p_y.y" +#line 613 "asn1p_y.y" { yyval.a_module = yyvsp[-1].a_module; TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next); ; break;} case 39: -#line 619 "asn1p_y.y" +#line 620 "asn1p_y.y" { memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); ; break;} case 40: -#line 620 "asn1p_y.y" +#line 621 "asn1p_y.y" { yyval.a_aid.oid = yyvsp[0].a_oid; ; break;} case 41: -#line 624 "asn1p_y.y" +#line 625 "asn1p_y.y" { yyval.a_xports = yyvsp[-3].a_xports; yyval.a_xports->fromModuleName = yyvsp[-1].tv_str; @@ -1689,7 +1683,7 @@ case 41: ; break;} case 42: -#line 635 "asn1p_y.y" +#line 636 "asn1p_y.y" { yyval.a_xports = asn1p_xports_new(); checkmem(yyval.a_xports); @@ -1697,14 +1691,14 @@ case 42: ; break;} case 43: -#line 640 "asn1p_y.y" +#line 641 "asn1p_y.y" { yyval.a_xports = yyvsp[-2].a_xports; TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next); ; break;} case 44: -#line 647 "asn1p_y.y" +#line 648 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1713,7 +1707,7 @@ case 44: ; break;} case 45: -#line 653 "asn1p_y.y" +#line 654 "asn1p_y.y" { /* Completely equivalent to above */ yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1722,7 +1716,7 @@ case 45: ; break;} case 46: -#line 659 "asn1p_y.y" +#line 660 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1731,19 +1725,19 @@ case 46: ; break;} case 47: -#line 668 "asn1p_y.y" +#line 669 "asn1p_y.y" { yyval.a_xports = yyvsp[-1].a_xports; ; break;} case 48: -#line 671 "asn1p_y.y" +#line 672 "asn1p_y.y" { yyval.a_xports = 0; ; break;} case 49: -#line 674 "asn1p_y.y" +#line 675 "asn1p_y.y" { /* Empty EXPORTS clause effectively prohibits export. */ yyval.a_xports = asn1p_xports_new(); @@ -1751,7 +1745,7 @@ case 49: ; break;} case 50: -#line 682 "asn1p_y.y" +#line 683 "asn1p_y.y" { yyval.a_xports = asn1p_xports_new(); assert(yyval.a_xports); @@ -1759,14 +1753,14 @@ case 50: ; break;} case 51: -#line 687 "asn1p_y.y" +#line 688 "asn1p_y.y" { yyval.a_xports = yyvsp[-2].a_xports; TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next); ; break;} case 52: -#line 694 "asn1p_y.y" +#line 695 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1775,7 +1769,7 @@ case 52: ; break;} case 53: -#line 700 "asn1p_y.y" +#line 701 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1784,7 +1778,7 @@ case 53: ; break;} case 54: -#line 706 "asn1p_y.y" +#line 707 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1793,11 +1787,11 @@ case 54: ; break;} case 55: -#line 717 "asn1p_y.y" +#line 718 "asn1p_y.y" { asn1p_lexer_hack_push_opaque_state(); ; break;} case 56: -#line 717 "asn1p_y.y" +#line 718 "asn1p_y.y" { yyval.a_expr = yyvsp[-4].a_expr; assert(yyval.a_expr->Identifier == 0); @@ -1807,7 +1801,7 @@ case 56: ; break;} case 57: -#line 727 "asn1p_y.y" +#line 728 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1817,7 +1811,7 @@ case 57: ; break;} case 58: -#line 734 "asn1p_y.y" +#line 735 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1826,7 +1820,7 @@ case 58: ; break;} case 59: -#line 752 "asn1p_y.y" +#line 753 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; yyval.a_expr->Identifier = yyvsp[-2].tv_str; @@ -1835,7 +1829,7 @@ case 59: ; break;} case 60: -#line 758 "asn1p_y.y" +#line 759 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; yyval.a_expr->Identifier = yyvsp[-2].tv_str; @@ -1844,7 +1838,7 @@ case 60: ; break;} case 61: -#line 774 "asn1p_y.y" +#line 775 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; assert(yyval.a_expr->Identifier == 0); @@ -1854,7 +1848,7 @@ case 61: ; break;} case 62: -#line 784 "asn1p_y.y" +#line 785 "asn1p_y.y" { int ret; yyval.a_plist = asn1p_paramlist_new(yylineno); @@ -1866,7 +1860,7 @@ case 62: ; break;} case 63: -#line 793 "asn1p_y.y" +#line 794 "asn1p_y.y" { int ret; yyval.a_plist = yyvsp[-2].a_plist; @@ -1877,14 +1871,14 @@ case 63: ; break;} case 64: -#line 804 "asn1p_y.y" +#line 805 "asn1p_y.y" { yyval.a_parg.governor = NULL; yyval.a_parg.argument = yyvsp[0].tv_str; ; break;} case 65: -#line 808 "asn1p_y.y" +#line 809 "asn1p_y.y" { int ret; yyval.a_parg.governor = asn1p_ref_new(yylineno); @@ -1894,7 +1888,7 @@ case 65: ; break;} case 66: -#line 815 "asn1p_y.y" +#line 816 "asn1p_y.y" { int ret; yyval.a_parg.governor = asn1p_ref_new(yylineno); @@ -1904,7 +1898,7 @@ case 66: ; break;} case 67: -#line 822 "asn1p_y.y" +#line 823 "asn1p_y.y" { int ret; yyval.a_parg.governor = asn1p_ref_new(yylineno); @@ -1915,7 +1909,7 @@ case 67: ; break;} case 68: -#line 833 "asn1p_y.y" +#line 834 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1923,20 +1917,20 @@ case 68: ; break;} case 69: -#line 838 "asn1p_y.y" +#line 839 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} case 70: -#line 845 "asn1p_y.y" +#line 846 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; ; break;} case 71: -#line 848 "asn1p_y.y" +#line 849 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1946,15 +1940,15 @@ case 71: ; break;} case 72: -#line 872 "asn1p_y.y" +#line 873 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); ; break;} case 73: -#line 873 "asn1p_y.y" +#line 874 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; ; break;} case 74: -#line 876 "asn1p_y.y" +#line 877 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1962,14 +1956,14 @@ case 74: ; break;} case 75: -#line 881 "asn1p_y.y" +#line 882 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} case 76: -#line 888 "asn1p_y.y" +#line 889 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; assert(yyval.a_expr->Identifier == 0); @@ -1979,7 +1973,7 @@ case 76: ; break;} case 77: -#line 895 "asn1p_y.y" +#line 896 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags; @@ -1988,7 +1982,7 @@ case 77: ; break;} case 78: -#line 901 "asn1p_y.y" +#line 902 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1998,13 +1992,13 @@ case 78: ; break;} case 79: -#line 908 "asn1p_y.y" +#line 909 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; ; break;} case 80: -#line 914 "asn1p_y.y" +#line 915 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2012,14 +2006,14 @@ case 80: ; break;} case 81: -#line 919 "asn1p_y.y" +#line 920 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} case 82: -#line 926 "asn1p_y.y" +#line 927 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; assert(yyval.a_expr->Identifier == 0); @@ -2027,20 +2021,20 @@ case 82: ; break;} case 83: -#line 931 "asn1p_y.y" +#line 932 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; ; break;} case 84: -#line 934 "asn1p_y.y" +#line 935 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; _fixup_anonymous_identifier(yyval.a_expr); ; break;} case 85: -#line 941 "asn1p_y.y" +#line 942 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; checkmem(yyval.a_expr); @@ -2050,15 +2044,15 @@ case 85: ; break;} case 86: -#line 951 "asn1p_y.y" +#line 952 "asn1p_y.y" { yyval.a_int = 0; ; break;} case 87: -#line 952 "asn1p_y.y" +#line 953 "asn1p_y.y" { yyval.a_int = 1; ; break;} case 88: -#line 956 "asn1p_y.y" +#line 957 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2068,14 +2062,14 @@ case 88: ; break;} case 89: -#line 963 "asn1p_y.y" +#line 964 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} case 90: -#line 973 "asn1p_y.y" +#line 974 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2086,7 +2080,7 @@ case 90: ; break;} case 91: -#line 983 "asn1p_y.y" +#line 984 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); yyval.a_expr->Identifier = yyvsp[-3].tv_str; @@ -2098,7 +2092,7 @@ case 91: ; break;} case 92: -#line 994 "asn1p_y.y" +#line 995 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); yyval.a_expr->Identifier = yyvsp[-2].tv_str; @@ -2109,7 +2103,7 @@ case 92: ; break;} case 93: -#line 1004 "asn1p_y.y" +#line 1005 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2121,7 +2115,7 @@ case 93: ; break;} case 94: -#line 1015 "asn1p_y.y" +#line 1016 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); yyval.a_expr->Identifier = yyvsp[-2].tv_str; @@ -2132,7 +2126,7 @@ case 94: ; break;} case 95: -#line 1025 "asn1p_y.y" +#line 1026 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2144,7 +2138,7 @@ case 95: ; break;} case 96: -#line 1036 "asn1p_y.y" +#line 1037 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2156,47 +2150,53 @@ case 96: ; break;} case 97: -#line 1048 "asn1p_y.y" +#line 1049 "asn1p_y.y" { yyval.a_wsynt = 0; ; break;} case 98: -#line 1049 "asn1p_y.y" +#line 1050 "asn1p_y.y" { yyval.a_wsynt = yyvsp[0].a_wsynt; ; break;} case 99: -#line 1056 "asn1p_y.y" +#line 1057 "asn1p_y.y" { asn1p_lexer_hack_enable_with_syntax(); ; break;} case 100: -#line 1058 "asn1p_y.y" +#line 1059 "asn1p_y.y" { yyval.a_wsynt = yyvsp[-1].a_wsynt; ; break;} case 101: -#line 1064 "asn1p_y.y" +#line 1065 "asn1p_y.y" { yyval.a_wsynt = asn1p_wsyntx_new(); TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next); ; break;} case 102: -#line 1068 "asn1p_y.y" +#line 1069 "asn1p_y.y" { yyval.a_wsynt = yyvsp[-1].a_wsynt; TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next); ; break;} case 103: -#line 1075 "asn1p_y.y" +#line 1076 "asn1p_y.y" { yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0); ; break;} case 104: -#line 1078 "asn1p_y.y" +#line 1079 "asn1p_y.y" +{ + yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_str, strlen(yyvsp[0].tv_str), 0); + ; + break;} +case 105: +#line 1082 "asn1p_y.y" { asn1p_ref_t *ref; int ret; @@ -2207,43 +2207,49 @@ case 104: yyval.a_wchunk = asn1p_wsyntx_chunk_fromref(ref, 0); ; break;} -case 105: -#line 1090 "asn1p_y.y" -{ - yyval.a_expr = asn1p_expr_new(yylineno); - checkmem(yyval.a_expr); - yyval.a_expr->Identifier = strdup("..."); - checkmem(yyval.a_expr->Identifier); - yyval.a_expr->expr_type = A1TC_EXTENSIBLE; - yyval.a_expr->meta_type = AMT_TYPE; - ; - break;} case 106: -#line 1098 "asn1p_y.y" +#line 1091 "asn1p_y.y" { - yyval.a_expr = asn1p_expr_new(yylineno); - checkmem(yyval.a_expr); - yyval.a_expr->Identifier = strdup("..."); - checkmem(yyval.a_expr->Identifier); - yyval.a_expr->value = yyvsp[0].a_value; - yyval.a_expr->expr_type = A1TC_EXTENSIBLE; - yyval.a_expr->meta_type = AMT_TYPE; + yyval.a_wchunk = asn1p_wsyntx_chunk_fromsyntax(yyvsp[-1].a_wsynt); ; break;} case 107: -#line 1107 "asn1p_y.y" +#line 1097 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); yyval.a_expr->Identifier = strdup("..."); - yyval.a_expr->value = yyvsp[0].a_value; checkmem(yyval.a_expr->Identifier); yyval.a_expr->expr_type = A1TC_EXTENSIBLE; yyval.a_expr->meta_type = AMT_TYPE; ; break;} case 108: -#line 1119 "asn1p_y.y" +#line 1105 "asn1p_y.y" +{ + yyval.a_expr = asn1p_expr_new(yylineno); + checkmem(yyval.a_expr); + yyval.a_expr->Identifier = strdup("..."); + checkmem(yyval.a_expr->Identifier); + yyval.a_expr->value = yyvsp[0].a_value; + yyval.a_expr->expr_type = A1TC_EXTENSIBLE; + yyval.a_expr->meta_type = AMT_TYPE; + ; + break;} +case 109: +#line 1114 "asn1p_y.y" +{ + yyval.a_expr = asn1p_expr_new(yylineno); + checkmem(yyval.a_expr); + yyval.a_expr->Identifier = strdup("..."); + yyval.a_expr->value = yyvsp[0].a_value; + checkmem(yyval.a_expr->Identifier); + yyval.a_expr->expr_type = A1TC_EXTENSIBLE; + yyval.a_expr->meta_type = AMT_TYPE; + ; + break;} +case 110: +#line 1126 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; yyval.a_expr->tag = yyvsp[-2].a_tag; @@ -2264,15 +2270,15 @@ case 108: } ; break;} -case 109: -#line 1141 "asn1p_y.y" +case 111: +#line 1148 "asn1p_y.y" { yyval.a_int = asn1p_as_pointer ? EM_INDIRECT : 0; asn1p_as_pointer = 0; ; break;} -case 110: -#line 1148 "asn1p_y.y" +case 112: +#line 1155 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; yyval.a_expr->marker.flags |= yyvsp[-1].a_int; @@ -2290,14 +2296,14 @@ case 110: } ; break;} -case 111: -#line 1167 "asn1p_y.y" +case 113: +#line 1174 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; ; break;} -case 112: -#line 1170 "asn1p_y.y" +case 114: +#line 1177 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; assert(yyval.a_expr->expr_type == A1TC_INVALID); @@ -2305,8 +2311,8 @@ case 112: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 113: -#line 1176 "asn1p_y.y" +case 115: +#line 1183 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; assert(yyval.a_expr->expr_type == A1TC_INVALID); @@ -2314,8 +2320,8 @@ case 113: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 114: -#line 1182 "asn1p_y.y" +case 116: +#line 1189 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; assert(yyval.a_expr->expr_type == A1TC_INVALID); @@ -2323,8 +2329,8 @@ case 114: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 115: -#line 1188 "asn1p_y.y" +case 117: +#line 1195 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2336,8 +2342,8 @@ case 115: asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} -case 116: -#line 1198 "asn1p_y.y" +case 118: +#line 1205 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2349,8 +2355,8 @@ case 116: asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} -case 117: -#line 1208 "asn1p_y.y" +case 119: +#line 1215 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2358,8 +2364,8 @@ case 117: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 118: -#line 1214 "asn1p_y.y" +case 120: +#line 1221 "asn1p_y.y" { int ret; yyval.a_expr = asn1p_expr_new(yylineno); @@ -2372,8 +2378,8 @@ case 118: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 119: -#line 1228 "asn1p_y.y" +case 121: +#line 1235 "asn1p_y.y" { int ret; yyval.a_expr = yyvsp[-1].a_expr; @@ -2389,8 +2395,8 @@ case 119: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 120: -#line 1252 "asn1p_y.y" +case 122: +#line 1259 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2399,8 +2405,8 @@ case 120: yyval.a_expr->meta_type = AMT_TYPEREF; ; break;} -case 121: -#line 1259 "asn1p_y.y" +case 123: +#line 1266 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2409,8 +2415,8 @@ case 121: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 122: -#line 1274 "asn1p_y.y" +case 124: +#line 1281 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -2420,34 +2426,34 @@ case 122: free(yyvsp[0].tv_str); ; break;} -case 123: -#line 1282 "asn1p_y.y" -{ - int ret; - yyval.a_ref = asn1p_ref_new(yylineno); - checkmem(yyval.a_ref); - ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN); - checkmem(ret == 0); - ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN); - checkmem(ret == 0); - free(yyvsp[-2].tv_str); - ; - break;} -case 124: -#line 1292 "asn1p_y.y" -{ - int ret; - yyval.a_ref = asn1p_ref_new(yylineno); - checkmem(yyval.a_ref); - ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN); - checkmem(ret == 0); - ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN); - checkmem(ret == 0); - free(yyvsp[-2].tv_str); - ; - break;} case 125: -#line 1302 "asn1p_y.y" +#line 1289 "asn1p_y.y" +{ + int ret; + yyval.a_ref = asn1p_ref_new(yylineno); + checkmem(yyval.a_ref); + ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN); + checkmem(ret == 0); + ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN); + checkmem(ret == 0); + free(yyvsp[-2].tv_str); + ; + break;} +case 126: +#line 1299 "asn1p_y.y" +{ + int ret; + yyval.a_ref = asn1p_ref_new(yylineno); + checkmem(yyval.a_ref); + ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN); + checkmem(ret == 0); + ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN); + checkmem(ret == 0); + free(yyvsp[-2].tv_str); + ; + break;} +case 127: +#line 1309 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -2459,8 +2465,8 @@ case 125: free(yyvsp[-2].tv_str); ; break;} -case 126: -#line 1312 "asn1p_y.y" +case 128: +#line 1319 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -2470,8 +2476,8 @@ case 126: checkmem(ret == 0); ; break;} -case 127: -#line 1320 "asn1p_y.y" +case 129: +#line 1327 "asn1p_y.y" { int ret; yyval.a_ref = yyvsp[0].a_ref; @@ -2492,8 +2498,8 @@ case 127: } ; break;} -case 128: -#line 1342 "asn1p_y.y" +case 130: +#line 1349 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -2503,8 +2509,8 @@ case 128: checkmem(ret == 0); ; break;} -case 129: -#line 1350 "asn1p_y.y" +case 131: +#line 1357 "asn1p_y.y" { int ret; yyval.a_ref = yyvsp[-2].a_ref; @@ -2513,50 +2519,50 @@ case 129: checkmem(ret == 0); ; break;} -case 132: -#line 1364 "asn1p_y.y" +case 134: +#line 1371 "asn1p_y.y" { yyval.a_refcomp.lex_type = RLT_AmpUppercase; yyval.a_refcomp.name = yyvsp[0].tv_str; ; break;} -case 133: -#line 1369 "asn1p_y.y" +case 135: +#line 1376 "asn1p_y.y" { yyval.a_refcomp.lex_type = RLT_Amplowercase; yyval.a_refcomp.name = yyvsp[0].tv_str; ; break;} -case 134: -#line 1378 "asn1p_y.y" +case 136: +#line 1385 "asn1p_y.y" { yyval.a_ref = asn1p_ref_new(yylineno); asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase); ; break;} -case 135: -#line 1382 "asn1p_y.y" +case 137: +#line 1389 "asn1p_y.y" { yyval.a_ref = yyval.a_ref; asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase); ; break;} -case 136: -#line 1386 "asn1p_y.y" +case 138: +#line 1393 "asn1p_y.y" { yyval.a_ref = yyval.a_ref; asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_Amplowercase); ; break;} -case 137: -#line 1393 "asn1p_y.y" +case 139: +#line 1400 "asn1p_y.y" { yyval.a_ref = asn1p_ref_new(yylineno); asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS); ; break;} -case 138: -#line 1413 "asn1p_y.y" +case 140: +#line 1420 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; assert(yyval.a_expr->Identifier == NULL); @@ -2565,8 +2571,8 @@ case 138: yyval.a_expr->value = yyvsp[0].a_value; ; break;} -case 139: -#line 1423 "asn1p_y.y" +case 141: +#line 1430 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); @@ -2575,76 +2581,76 @@ case 139: yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value; ; break;} -case 140: -#line 1430 "asn1p_y.y" +case 142: +#line 1437 "asn1p_y.y" { asn1p_lexer_hack_push_opaque_state(); ; break;} -case 141: -#line 1430 "asn1p_y.y" +case 143: +#line 1437 "asn1p_y.y" { yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0); checkmem(yyval.a_value); yyval.a_value->type = ATV_UNPARSED; ; break;} -case 142: -#line 1435 "asn1p_y.y" +case 144: +#line 1442 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); yyval.a_value->type = ATV_NULL; ; break;} -case 143: -#line 1440 "asn1p_y.y" +case 145: +#line 1447 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); yyval.a_value->type = ATV_FALSE; ; break;} -case 144: -#line 1445 "asn1p_y.y" +case 146: +#line 1452 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); yyval.a_value->type = ATV_TRUE; ; break;} -case 145: -#line 1450 "asn1p_y.y" +case 147: +#line 1457 "asn1p_y.y" { yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B'); checkmem(yyval.a_value); ; break;} -case 146: -#line 1454 "asn1p_y.y" +case 148: +#line 1461 "asn1p_y.y" { yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H'); checkmem(yyval.a_value); ; break;} -case 147: -#line 1458 "asn1p_y.y" +case 149: +#line 1465 "asn1p_y.y" { yyval.a_value = yyval.a_value; ; break;} -case 148: -#line 1461 "asn1p_y.y" -{ - yyval.a_value = yyvsp[0].a_value; - ; - break;} -case 149: -#line 1464 "asn1p_y.y" -{ - yyval.a_value = yyvsp[0].a_value; - ; - break;} case 150: -#line 1470 "asn1p_y.y" +#line 1468 "asn1p_y.y" +{ + yyval.a_value = yyvsp[0].a_value; + ; + break;} +case 151: +#line 1471 "asn1p_y.y" +{ + yyval.a_value = yyvsp[0].a_value; + ; + break;} +case 152: +#line 1477 "asn1p_y.y" { asn1p_ref_t *ref; int ret; @@ -2657,8 +2663,8 @@ case 150: free(yyvsp[0].tv_str); ; break;} -case 151: -#line 1481 "asn1p_y.y" +case 153: +#line 1488 "asn1p_y.y" { asn1p_ref_t *ref; int ret; @@ -2674,31 +2680,31 @@ case 151: free(yyvsp[0].tv_str); ; break;} -case 152: -#line 1499 "asn1p_y.y" +case 154: +#line 1506 "asn1p_y.y" { yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0); checkmem(yyval.a_value); ; break;} -case 153: -#line 1503 "asn1p_y.y" +case 155: +#line 1510 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int); checkmem(yyval.a_value); yyval.a_value->type = ATV_TUPLE; ; break;} -case 154: -#line 1508 "asn1p_y.y" +case 156: +#line 1515 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int); checkmem(yyval.a_value); yyval.a_value->type = ATV_QUADRUPLE; ; break;} -case 155: -#line 1542 "asn1p_y.y" +case 157: +#line 1549 "asn1p_y.y" { yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1; yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1); @@ -2709,8 +2715,8 @@ case 155: free(yyvsp[0].tv_opaque.buf); ; break;} -case 156: -#line 1551 "asn1p_y.y" +case 158: +#line 1558 "asn1p_y.y" { int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len; char *p = malloc(newsize + 1); @@ -2724,72 +2730,72 @@ case 156: yyval.tv_opaque.len = newsize; ; break;} -case 157: -#line 1566 "asn1p_y.y" +case 159: +#line 1573 "asn1p_y.y" { yyval.a_type = ASN_BASIC_BOOLEAN; ; break;} -case 158: -#line 1567 "asn1p_y.y" +case 160: +#line 1574 "asn1p_y.y" { yyval.a_type = ASN_BASIC_NULL; ; break;} -case 159: -#line 1568 "asn1p_y.y" +case 161: +#line 1575 "asn1p_y.y" { yyval.a_type = ASN_BASIC_REAL; ; break;} -case 160: -#line 1569 "asn1p_y.y" -{ yyval.a_type = yyvsp[0].a_type; ; - break;} -case 161: -#line 1570 "asn1p_y.y" -{ yyval.a_type = ASN_BASIC_OCTET_STRING; ; - break;} case 162: -#line 1571 "asn1p_y.y" -{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ; +#line 1576 "asn1p_y.y" +{ yyval.a_type = yyvsp[0].a_type; ; break;} case 163: -#line 1572 "asn1p_y.y" -{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ; +#line 1577 "asn1p_y.y" +{ yyval.a_type = ASN_BASIC_OCTET_STRING; ; break;} case 164: -#line 1573 "asn1p_y.y" -{ yyval.a_type = ASN_BASIC_EXTERNAL; ; +#line 1578 "asn1p_y.y" +{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ; break;} case 165: -#line 1574 "asn1p_y.y" -{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ; +#line 1579 "asn1p_y.y" +{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ; break;} case 166: -#line 1575 "asn1p_y.y" -{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ; +#line 1580 "asn1p_y.y" +{ yyval.a_type = ASN_BASIC_EXTERNAL; ; break;} case 167: -#line 1576 "asn1p_y.y" -{ yyval.a_type = ASN_BASIC_UTCTime; ; +#line 1581 "asn1p_y.y" +{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ; break;} case 168: -#line 1577 "asn1p_y.y" -{ yyval.a_type = ASN_BASIC_GeneralizedTime; ; +#line 1582 "asn1p_y.y" +{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ; break;} case 169: -#line 1578 "asn1p_y.y" -{ yyval.a_type = yyvsp[0].a_type; ; +#line 1583 "asn1p_y.y" +{ yyval.a_type = ASN_BASIC_UTCTime; ; break;} case 170: -#line 1585 "asn1p_y.y" -{ yyval.a_type = ASN_BASIC_INTEGER; ; +#line 1584 "asn1p_y.y" +{ yyval.a_type = ASN_BASIC_GeneralizedTime; ; break;} case 171: -#line 1586 "asn1p_y.y" -{ yyval.a_type = ASN_BASIC_ENUMERATED; ; +#line 1585 "asn1p_y.y" +{ yyval.a_type = yyvsp[0].a_type; ; break;} case 172: -#line 1587 "asn1p_y.y" -{ yyval.a_type = ASN_BASIC_BIT_STRING; ; +#line 1592 "asn1p_y.y" +{ yyval.a_type = ASN_BASIC_INTEGER; ; break;} case 173: -#line 1591 "asn1p_y.y" +#line 1593 "asn1p_y.y" +{ yyval.a_type = ASN_BASIC_ENUMERATED; ; + break;} +case 174: +#line 1594 "asn1p_y.y" +{ yyval.a_type = ASN_BASIC_BIT_STRING; ; + break;} +case 175: +#line 1598 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2797,8 +2803,8 @@ case 173: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 174: -#line 1597 "asn1p_y.y" +case 176: +#line 1604 "asn1p_y.y" { if(yyvsp[0].a_expr) { yyval.a_expr = yyvsp[0].a_expr; @@ -2810,92 +2816,92 @@ case 174: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 175: -#line 1610 "asn1p_y.y" +case 177: +#line 1617 "asn1p_y.y" { yyval.a_type = ASN_STRING_BMPString; ; break;} -case 176: -#line 1611 "asn1p_y.y" +case 178: +#line 1618 "asn1p_y.y" { yyval.a_type = ASN_STRING_GeneralString; fprintf(stderr, "WARNING: GeneralString is not fully supported\n"); ; break;} -case 177: -#line 1615 "asn1p_y.y" +case 179: +#line 1622 "asn1p_y.y" { yyval.a_type = ASN_STRING_GraphicString; fprintf(stderr, "WARNING: GraphicString is not fully supported\n"); ; break;} -case 178: -#line 1619 "asn1p_y.y" +case 180: +#line 1626 "asn1p_y.y" { yyval.a_type = ASN_STRING_IA5String; ; break;} -case 179: -#line 1620 "asn1p_y.y" +case 181: +#line 1627 "asn1p_y.y" { yyval.a_type = ASN_STRING_ISO646String; ; break;} -case 180: -#line 1621 "asn1p_y.y" +case 182: +#line 1628 "asn1p_y.y" { yyval.a_type = ASN_STRING_NumericString; ; break;} -case 181: -#line 1622 "asn1p_y.y" +case 183: +#line 1629 "asn1p_y.y" { yyval.a_type = ASN_STRING_PrintableString; ; break;} -case 182: -#line 1623 "asn1p_y.y" +case 184: +#line 1630 "asn1p_y.y" { yyval.a_type = ASN_STRING_T61String; fprintf(stderr, "WARNING: T61String is not fully supported\n"); ; break;} -case 183: -#line 1627 "asn1p_y.y" +case 185: +#line 1634 "asn1p_y.y" { yyval.a_type = ASN_STRING_TeletexString; ; break;} -case 184: -#line 1628 "asn1p_y.y" +case 186: +#line 1635 "asn1p_y.y" { yyval.a_type = ASN_STRING_UniversalString; ; break;} -case 185: -#line 1629 "asn1p_y.y" +case 187: +#line 1636 "asn1p_y.y" { yyval.a_type = ASN_STRING_UTF8String; ; break;} -case 186: -#line 1630 "asn1p_y.y" +case 188: +#line 1637 "asn1p_y.y" { yyval.a_type = ASN_STRING_VideotexString; fprintf(stderr, "WARNING: VideotexString is not fully supported\n"); ; break;} -case 187: -#line 1634 "asn1p_y.y" +case 189: +#line 1641 "asn1p_y.y" { yyval.a_type = ASN_STRING_VisibleString; ; break;} -case 188: -#line 1635 "asn1p_y.y" +case 190: +#line 1642 "asn1p_y.y" { yyval.a_type = ASN_STRING_ObjectDescriptor; ; break;} -case 194: -#line 1647 "asn1p_y.y" +case 196: +#line 1654 "asn1p_y.y" { yyval.a_constr = 0; ; break;} -case 195: -#line 1648 "asn1p_y.y" +case 197: +#line 1655 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} -case 196: -#line 1654 "asn1p_y.y" +case 198: +#line 1661 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0); ; break;} -case 197: -#line 1657 "asn1p_y.y" +case 199: +#line 1664 "asn1p_y.y" { /* * This is a special case, for compatibility purposes. @@ -2904,26 +2910,26 @@ case 197: CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0); ; break;} -case 198: -#line 1667 "asn1p_y.y" +case 200: +#line 1674 "asn1p_y.y" { yyval.a_constr = yyvsp[-1].a_constr; ; break;} -case 199: -#line 1670 "asn1p_y.y" +case 201: +#line 1677 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr); ; break;} -case 200: -#line 1676 "asn1p_y.y" +case 202: +#line 1683 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} -case 201: -#line 1679 "asn1p_y.y" +case 203: +#line 1686 "asn1p_y.y" { asn1p_constraint_t *ct; ct = asn1p_constraint_new(yylineno); @@ -2931,8 +2937,8 @@ case 201: CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct); ; break;} -case 202: -#line 1685 "asn1p_y.y" +case 204: +#line 1692 "asn1p_y.y" { asn1p_constraint_t *ct; ct = asn1p_constraint_new(yylineno); @@ -2942,38 +2948,38 @@ case 202: CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr); ; break;} -case 203: -#line 1696 "asn1p_y.y" +case 205: +#line 1703 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} -case 204: -#line 1699 "asn1p_y.y" +case 206: +#line 1706 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0); ; break;} -case 205: -#line 1702 "asn1p_y.y" +case 207: +#line 1709 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr); ; break;} -case 206: -#line 1705 "asn1p_y.y" +case 208: +#line 1712 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr); ; break;} -case 207: -#line 1708 "asn1p_y.y" +case 209: +#line 1715 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr); ; break;} -case 208: -#line 1714 "asn1p_y.y" +case 210: +#line 1721 "asn1p_y.y" { int ret; yyval.a_constr = asn1p_constraint_new(yylineno); @@ -2983,8 +2989,8 @@ case 208: checkmem(ret == 0); ; break;} -case 209: -#line 1722 "asn1p_y.y" +case 211: +#line 1729 "asn1p_y.y" { int ret; yyval.a_constr = asn1p_constraint_new(yylineno); @@ -2994,8 +3000,8 @@ case 209: checkmem(ret == 0); ; break;} -case 210: -#line 1730 "asn1p_y.y" +case 212: +#line 1737 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3003,8 +3009,8 @@ case 210: yyval.a_constr->value = yyvsp[0].a_value; ; break;} -case 211: -#line 1736 "asn1p_y.y" +case 213: +#line 1743 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3012,18 +3018,18 @@ case 211: yyval.a_constr->containedSubtype = yyvsp[0].a_value; ; break;} -case 212: -#line 1742 "asn1p_y.y" -{ - yyval.a_constr = asn1p_constraint_new(yylineno); - checkmem(yyval.a_constr); - yyval.a_constr->type = yyvsp[-1].a_ctype; - yyval.a_constr->range_start = yyvsp[-2].a_value; - yyval.a_constr->range_stop = yyvsp[0].a_value; - ; - break;} -case 213: +case 214: #line 1749 "asn1p_y.y" +{ + yyval.a_constr = asn1p_constraint_new(yylineno); + checkmem(yyval.a_constr); + yyval.a_constr->type = yyvsp[-1].a_ctype; + yyval.a_constr->range_start = yyvsp[-2].a_value; + yyval.a_constr->range_stop = yyvsp[0].a_value; + ; + break;} +case 215: +#line 1756 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3033,8 +3039,8 @@ case 213: yyval.a_constr->range_start->type = ATV_MIN; ; break;} -case 214: -#line 1757 "asn1p_y.y" +case 216: +#line 1764 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3044,8 +3050,8 @@ case 214: yyval.a_constr->range_stop->type = ATV_MAX; ; break;} -case 215: -#line 1765 "asn1p_y.y" +case 217: +#line 1772 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3056,24 +3062,24 @@ case 215: yyval.a_constr->range_stop->type = ATV_MAX; ; break;} -case 216: -#line 1774 "asn1p_y.y" -{ - yyval.a_constr = yyvsp[0].a_constr; - ; - break;} -case 217: -#line 1777 "asn1p_y.y" -{ - yyval.a_constr = yyvsp[0].a_constr; - ; - break;} case 218: #line 1781 "asn1p_y.y" -{ asn1p_lexer_hack_push_opaque_state(); ; +{ + yyval.a_constr = yyvsp[0].a_constr; + ; break;} case 219: -#line 1781 "asn1p_y.y" +#line 1784 "asn1p_y.y" +{ + yyval.a_constr = yyvsp[0].a_constr; + ; + break;} +case 220: +#line 1788 "asn1p_y.y" +{ asn1p_lexer_hack_push_opaque_state(); ; + break;} +case 221: +#line 1788 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3083,64 +3089,64 @@ case 219: yyval.a_constr->value->type = ATV_UNPARSED; ; break;} -case 220: -#line 1792 "asn1p_y.y" +case 222: +#line 1799 "asn1p_y.y" { yyval.a_ctype = ACT_EL_RANGE; ; break;} -case 221: -#line 1793 "asn1p_y.y" +case 223: +#line 1800 "asn1p_y.y" { yyval.a_ctype = ACT_EL_RLRANGE; ; break;} -case 222: -#line 1794 "asn1p_y.y" +case 224: +#line 1801 "asn1p_y.y" { yyval.a_ctype = ACT_EL_LLRANGE; ; break;} -case 223: -#line 1795 "asn1p_y.y" +case 225: +#line 1802 "asn1p_y.y" { yyval.a_ctype = ACT_EL_ULRANGE; ; break;} -case 224: -#line 1799 "asn1p_y.y" +case 226: +#line 1806 "asn1p_y.y" { yyval.a_ctype = ACT_CT_SIZE; ; break;} -case 225: -#line 1802 "asn1p_y.y" +case 227: +#line 1809 "asn1p_y.y" { yyval.a_ctype = ACT_CT_FROM; ; break;} -case 226: -#line 1808 "asn1p_y.y" +case 228: +#line 1815 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); yyval.a_value->type = ATV_FALSE; ; break;} -case 227: -#line 1813 "asn1p_y.y" +case 229: +#line 1820 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(1); checkmem(yyval.a_value); yyval.a_value->type = ATV_TRUE; ; break;} -case 228: -#line 1818 "asn1p_y.y" -{ - yyval.a_value = yyvsp[0].a_value; - ; - break;} -case 229: -#line 1821 "asn1p_y.y" -{ - yyval.a_value = yyvsp[0].a_value; - ; - break;} case 230: -#line 1824 "asn1p_y.y" +#line 1825 "asn1p_y.y" +{ + yyval.a_value = yyvsp[0].a_value; + ; + break;} +case 231: +#line 1828 "asn1p_y.y" +{ + yyval.a_value = yyvsp[0].a_value; + ; + break;} +case 232: +#line 1831 "asn1p_y.y" { asn1p_ref_t *ref; int ret; @@ -3153,8 +3159,8 @@ case 230: free(yyvsp[0].tv_str); ; break;} -case 231: -#line 1838 "asn1p_y.y" +case 233: +#line 1845 "asn1p_y.y" { asn1p_ref_t *ref; int ret; @@ -3167,32 +3173,32 @@ case 231: free(yyvsp[0].tv_str); ; break;} -case 232: -#line 1852 "asn1p_y.y" +case 234: +#line 1859 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0); ; break;} -case 233: -#line 1855 "asn1p_y.y" +case 235: +#line 1862 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0); ; break;} -case 234: -#line 1861 "asn1p_y.y" +case 236: +#line 1868 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} -case 235: -#line 1864 "asn1p_y.y" +case 237: +#line 1871 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr); ; break;} -case 236: -#line 1870 "asn1p_y.y" +case 238: +#line 1877 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3200,8 +3206,8 @@ case 236: yyval.a_constr->value = asn1p_value_frombuf("...", 3, 0); ; break;} -case 237: -#line 1876 "asn1p_y.y" +case 239: +#line 1883 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3211,46 +3217,46 @@ case 237: if(yyvsp[-1].a_constr) asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr); ; break;} -case 238: -#line 1890 "asn1p_y.y" +case 240: +#line 1897 "asn1p_y.y" { yyval.a_pres = ACPRES_DEFAULT; ; break;} -case 239: -#line 1891 "asn1p_y.y" +case 241: +#line 1898 "asn1p_y.y" { yyval.a_pres = yyvsp[0].a_pres; ; break;} -case 240: -#line 1895 "asn1p_y.y" +case 242: +#line 1902 "asn1p_y.y" { yyval.a_pres = ACPRES_PRESENT; ; break;} -case 241: -#line 1898 "asn1p_y.y" +case 243: +#line 1905 "asn1p_y.y" { yyval.a_pres = ACPRES_ABSENT; ; break;} -case 242: -#line 1901 "asn1p_y.y" +case 244: +#line 1908 "asn1p_y.y" { yyval.a_pres = ACPRES_OPTIONAL; ; break;} -case 243: -#line 1907 "asn1p_y.y" -{ - yyval.a_constr = yyvsp[0].a_constr; - ; - break;} -case 244: -#line 1910 "asn1p_y.y" -{ - yyval.a_constr = yyvsp[0].a_constr; - ; - break;} case 245: -#line 1919 "asn1p_y.y" +#line 1914 "asn1p_y.y" +{ + yyval.a_constr = yyvsp[0].a_constr; + ; + break;} +case 246: +#line 1917 "asn1p_y.y" +{ + yyval.a_constr = yyvsp[0].a_constr; + ; + break;} +case 247: +#line 1926 "asn1p_y.y" { asn1p_ref_t *ref = asn1p_ref_new(yylineno); asn1p_constraint_t *ct; @@ -3264,14 +3270,14 @@ case 245: CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0); ; break;} -case 246: -#line 1934 "asn1p_y.y" +case 248: +#line 1941 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr); ; break;} -case 247: -#line 1940 "asn1p_y.y" +case 249: +#line 1947 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3279,8 +3285,8 @@ case 247: yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0); ; break;} -case 248: -#line 1946 "asn1p_y.y" +case 250: +#line 1953 "asn1p_y.y" { asn1p_constraint_t *ct; ct = asn1p_constraint_new(yylineno); @@ -3290,8 +3296,8 @@ case 248: CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct); ; break;} -case 249: -#line 1960 "asn1p_y.y" +case 251: +#line 1967 "asn1p_y.y" { char *p = malloc(strlen(yyvsp[0].tv_str) + 2); int ret; @@ -3304,8 +3310,8 @@ case 249: free(yyvsp[0].tv_str); ; break;} -case 250: -#line 1971 "asn1p_y.y" +case 252: +#line 1978 "asn1p_y.y" { char *p = malloc(strlen(yyvsp[0].tv_str) + 3); int ret; @@ -3319,14 +3325,14 @@ case 250: free(yyvsp[0].tv_str); ; break;} -case 251: -#line 1987 "asn1p_y.y" +case 253: +#line 1994 "asn1p_y.y" { yyval.tv_str = yyvsp[0].tv_str; ; break;} -case 252: -#line 1990 "asn1p_y.y" +case 254: +#line 1997 "asn1p_y.y" { int l1 = strlen(yyvsp[-2].tv_str); int l3 = strlen(yyvsp[0].tv_str); @@ -3337,61 +3343,61 @@ case 252: yyval.tv_str[l1 + 1 + l3] = '\0'; ; break;} -case 253: -#line 2008 "asn1p_y.y" +case 255: +#line 2015 "asn1p_y.y" { yyval.a_marker.flags = EM_NOMARK; yyval.a_marker.default_value = 0; ; break;} -case 254: -#line 2012 "asn1p_y.y" +case 256: +#line 2019 "asn1p_y.y" { yyval.a_marker = yyvsp[0].a_marker; ; break;} -case 255: -#line 2016 "asn1p_y.y" +case 257: +#line 2023 "asn1p_y.y" { yyval.a_marker.flags = EM_OPTIONAL | EM_INDIRECT; yyval.a_marker.default_value = 0; ; break;} -case 256: -#line 2020 "asn1p_y.y" +case 258: +#line 2027 "asn1p_y.y" { yyval.a_marker.flags = EM_DEFAULT; yyval.a_marker.default_value = yyvsp[0].a_value; ; break;} -case 257: -#line 2043 "asn1p_y.y" +case 259: +#line 2050 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); ; break;} -case 258: -#line 2047 "asn1p_y.y" +case 260: +#line 2054 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; ; break;} -case 259: -#line 2053 "asn1p_y.y" +case 261: +#line 2060 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} -case 260: -#line 2058 "asn1p_y.y" +case 262: +#line 2065 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} -case 261: -#line 2065 "asn1p_y.y" +case 263: +#line 2072 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3400,30 +3406,30 @@ case 261: yyval.a_expr->Identifier = yyvsp[0].tv_str; ; break;} -case 262: -#line 2072 "asn1p_y.y" -{ - yyval.a_expr = asn1p_expr_new(yylineno); - checkmem(yyval.a_expr); - yyval.a_expr->expr_type = A1TC_UNIVERVAL; - yyval.a_expr->meta_type = AMT_VALUE; - yyval.a_expr->Identifier = yyvsp[-3].tv_str; - yyval.a_expr->value = yyvsp[-1].a_value; - ; - break;} -case 263: -#line 2080 "asn1p_y.y" -{ - yyval.a_expr = asn1p_expr_new(yylineno); - checkmem(yyval.a_expr); - yyval.a_expr->expr_type = A1TC_UNIVERVAL; - yyval.a_expr->meta_type = AMT_VALUE; - yyval.a_expr->Identifier = yyvsp[-3].tv_str; - yyval.a_expr->value = yyvsp[-1].a_value; - ; - break;} case 264: -#line 2088 "asn1p_y.y" +#line 2079 "asn1p_y.y" +{ + yyval.a_expr = asn1p_expr_new(yylineno); + checkmem(yyval.a_expr); + yyval.a_expr->expr_type = A1TC_UNIVERVAL; + yyval.a_expr->meta_type = AMT_VALUE; + yyval.a_expr->Identifier = yyvsp[-3].tv_str; + yyval.a_expr->value = yyvsp[-1].a_value; + ; + break;} +case 265: +#line 2087 "asn1p_y.y" +{ + yyval.a_expr = asn1p_expr_new(yylineno); + checkmem(yyval.a_expr); + yyval.a_expr->expr_type = A1TC_UNIVERVAL; + yyval.a_expr->meta_type = AMT_VALUE; + yyval.a_expr->Identifier = yyvsp[-3].tv_str; + yyval.a_expr->value = yyvsp[-1].a_value; + ; + break;} +case 266: +#line 2095 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3432,8 +3438,8 @@ case 264: yyval.a_expr->value = yyvsp[0].a_value; ; break;} -case 265: -#line 2095 "asn1p_y.y" +case 267: +#line 2102 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3443,103 +3449,103 @@ case 265: yyval.a_expr->meta_type = AMT_VALUE; ; break;} -case 266: -#line 2106 "asn1p_y.y" -{ - yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int); - checkmem(yyval.a_value); - ; - break;} -case 267: -#line 2110 "asn1p_y.y" -{ - yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int); - checkmem(yyval.a_value); - ; - break;} case 268: -#line 2141 "asn1p_y.y" -{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ; +#line 2113 "asn1p_y.y" +{ + yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int); + checkmem(yyval.a_value); + ; break;} case 269: -#line 2142 "asn1p_y.y" -{ yyval.a_tag = yyvsp[0].a_tag; ; +#line 2117 "asn1p_y.y" +{ + yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int); + checkmem(yyval.a_value); + ; break;} case 270: -#line 2146 "asn1p_y.y" +#line 2148 "asn1p_y.y" +{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ; + break;} +case 271: +#line 2149 "asn1p_y.y" +{ yyval.a_tag = yyvsp[0].a_tag; ; + break;} +case 272: +#line 2153 "asn1p_y.y" { yyval.a_tag = yyvsp[-1].a_tag; yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode; ; break;} -case 271: -#line 2153 "asn1p_y.y" +case 273: +#line 2160 "asn1p_y.y" { yyval.a_tag = yyvsp[-2].a_tag; yyval.a_tag.tag_value = yyvsp[-1].a_int; ; break;} -case 272: -#line 2159 "asn1p_y.y" +case 274: +#line 2166 "asn1p_y.y" { yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ; break;} -case 273: -#line 2160 "asn1p_y.y" +case 275: +#line 2167 "asn1p_y.y" { yyval.a_tag.tag_class = TC_UNIVERSAL; ; break;} -case 274: -#line 2161 "asn1p_y.y" +case 276: +#line 2168 "asn1p_y.y" { yyval.a_tag.tag_class = TC_APPLICATION; ; break;} -case 275: -#line 2162 "asn1p_y.y" +case 277: +#line 2169 "asn1p_y.y" { yyval.a_tag.tag_class = TC_PRIVATE; ; break;} -case 276: -#line 2166 "asn1p_y.y" +case 278: +#line 2173 "asn1p_y.y" { yyval.a_tag.tag_mode = TM_DEFAULT; ; break;} -case 277: -#line 2167 "asn1p_y.y" +case 279: +#line 2174 "asn1p_y.y" { yyval.a_tag.tag_mode = TM_IMPLICIT; ; break;} -case 278: -#line 2168 "asn1p_y.y" +case 280: +#line 2175 "asn1p_y.y" { yyval.a_tag.tag_mode = TM_EXPLICIT; ; break;} -case 279: -#line 2172 "asn1p_y.y" -{ - checkmem(yyvsp[0].tv_str); - yyval.tv_str = yyvsp[0].tv_str; - ; - break;} -case 280: -#line 2176 "asn1p_y.y" -{ - checkmem(yyvsp[0].tv_str); - yyval.tv_str = yyvsp[0].tv_str; - ; - break;} case 281: -#line 2184 "asn1p_y.y" +#line 2179 "asn1p_y.y" { checkmem(yyvsp[0].tv_str); yyval.tv_str = yyvsp[0].tv_str; ; break;} case 282: -#line 2191 "asn1p_y.y" -{ yyval.tv_str = 0; ; +#line 2183 "asn1p_y.y" +{ + checkmem(yyvsp[0].tv_str); + yyval.tv_str = yyvsp[0].tv_str; + ; break;} case 283: -#line 2192 "asn1p_y.y" +#line 2191 "asn1p_y.y" { + checkmem(yyvsp[0].tv_str); yyval.tv_str = yyvsp[0].tv_str; ; break;} case 284: #line 2198 "asn1p_y.y" +{ yyval.tv_str = 0; ; + break;} +case 285: +#line 2199 "asn1p_y.y" +{ + yyval.tv_str = yyvsp[0].tv_str; + ; + break;} +case 286: +#line 2205 "asn1p_y.y" { checkmem(yyvsp[0].tv_str); yyval.tv_str = yyvsp[0].tv_str; @@ -3767,7 +3773,7 @@ yyerrhandle: } return 1; } -#line 2204 "asn1p_y.y" +#line 2211 "asn1p_y.y" @@ -3907,10 +3913,9 @@ _fixup_anonymous_identifier(asn1p_expr_t *expr) { expr->Identifier); } -extern char *asn1p_text; - int yyerror(const char *msg) { + extern char *asn1p_text; fprintf(stderr, "ASN.1 grammar parse error " "near line %d (token \"%s\"): %s\n", @@ -3918,4 +3923,3 @@ yyerror(const char *msg) { return -1; } - diff --git a/libasn1parser/asn1p_y.h b/libasn1parser/asn1p_y.h index 2862195a..a391f74e 100644 --- a/libasn1parser/asn1p_y.h +++ b/libasn1parser/asn1p_y.h @@ -45,92 +45,93 @@ typedef union { #define TOK_capitalreference 268 #define TOK_typefieldreference 269 #define TOK_valuefieldreference 270 -#define TOK_ABSENT 271 -#define TOK_ABSTRACT_SYNTAX 272 -#define TOK_ALL 273 -#define TOK_ANY 274 -#define TOK_APPLICATION 275 -#define TOK_AUTOMATIC 276 -#define TOK_BEGIN 277 -#define TOK_BIT 278 -#define TOK_BMPString 279 -#define TOK_BOOLEAN 280 -#define TOK_BY 281 -#define TOK_CHARACTER 282 -#define TOK_CHOICE 283 -#define TOK_CLASS 284 -#define TOK_COMPONENT 285 -#define TOK_COMPONENTS 286 -#define TOK_CONSTRAINED 287 -#define TOK_CONTAINING 288 -#define TOK_DEFAULT 289 -#define TOK_DEFINITIONS 290 -#define TOK_DEFINED 291 -#define TOK_EMBEDDED 292 -#define TOK_ENCODED 293 -#define TOK_ENCODING_CONTROL 294 -#define TOK_END 295 -#define TOK_ENUMERATED 296 -#define TOK_EXPLICIT 297 -#define TOK_EXPORTS 298 -#define TOK_EXTENSIBILITY 299 -#define TOK_EXTERNAL 300 -#define TOK_FALSE 301 -#define TOK_FROM 302 -#define TOK_GeneralizedTime 303 -#define TOK_GeneralString 304 -#define TOK_GraphicString 305 -#define TOK_IA5String 306 -#define TOK_IDENTIFIER 307 -#define TOK_IMPLICIT 308 -#define TOK_IMPLIED 309 -#define TOK_IMPORTS 310 -#define TOK_INCLUDES 311 -#define TOK_INSTANCE 312 -#define TOK_INSTRUCTIONS 313 -#define TOK_INTEGER 314 -#define TOK_ISO646String 315 -#define TOK_MAX 316 -#define TOK_MIN 317 -#define TOK_MINUS_INFINITY 318 -#define TOK_NULL 319 -#define TOK_NumericString 320 -#define TOK_OBJECT 321 -#define TOK_ObjectDescriptor 322 -#define TOK_OCTET 323 -#define TOK_OF 324 -#define TOK_OPTIONAL 325 -#define TOK_PATTERN 326 -#define TOK_PDV 327 -#define TOK_PLUS_INFINITY 328 -#define TOK_PRESENT 329 -#define TOK_PrintableString 330 -#define TOK_PRIVATE 331 -#define TOK_REAL 332 -#define TOK_RELATIVE_OID 333 -#define TOK_SEQUENCE 334 -#define TOK_SET 335 -#define TOK_SIZE 336 -#define TOK_STRING 337 -#define TOK_SYNTAX 338 -#define TOK_T61String 339 -#define TOK_TAGS 340 -#define TOK_TeletexString 341 -#define TOK_TRUE 342 -#define TOK_TYPE_IDENTIFIER 343 -#define TOK_UNIQUE 344 -#define TOK_UNIVERSAL 345 -#define TOK_UniversalString 346 -#define TOK_UTCTime 347 -#define TOK_UTF8String 348 -#define TOK_VideotexString 349 -#define TOK_VisibleString 350 -#define TOK_WITH 351 -#define TOK_EXCEPT 352 -#define TOK_INTERSECTION 353 -#define TOK_UNION 354 -#define TOK_TwoDots 355 -#define TOK_ThreeDots 356 +#define TOK_Literal 271 +#define TOK_ABSENT 272 +#define TOK_ABSTRACT_SYNTAX 273 +#define TOK_ALL 274 +#define TOK_ANY 275 +#define TOK_APPLICATION 276 +#define TOK_AUTOMATIC 277 +#define TOK_BEGIN 278 +#define TOK_BIT 279 +#define TOK_BMPString 280 +#define TOK_BOOLEAN 281 +#define TOK_BY 282 +#define TOK_CHARACTER 283 +#define TOK_CHOICE 284 +#define TOK_CLASS 285 +#define TOK_COMPONENT 286 +#define TOK_COMPONENTS 287 +#define TOK_CONSTRAINED 288 +#define TOK_CONTAINING 289 +#define TOK_DEFAULT 290 +#define TOK_DEFINITIONS 291 +#define TOK_DEFINED 292 +#define TOK_EMBEDDED 293 +#define TOK_ENCODED 294 +#define TOK_ENCODING_CONTROL 295 +#define TOK_END 296 +#define TOK_ENUMERATED 297 +#define TOK_EXPLICIT 298 +#define TOK_EXPORTS 299 +#define TOK_EXTENSIBILITY 300 +#define TOK_EXTERNAL 301 +#define TOK_FALSE 302 +#define TOK_FROM 303 +#define TOK_GeneralizedTime 304 +#define TOK_GeneralString 305 +#define TOK_GraphicString 306 +#define TOK_IA5String 307 +#define TOK_IDENTIFIER 308 +#define TOK_IMPLICIT 309 +#define TOK_IMPLIED 310 +#define TOK_IMPORTS 311 +#define TOK_INCLUDES 312 +#define TOK_INSTANCE 313 +#define TOK_INSTRUCTIONS 314 +#define TOK_INTEGER 315 +#define TOK_ISO646String 316 +#define TOK_MAX 317 +#define TOK_MIN 318 +#define TOK_MINUS_INFINITY 319 +#define TOK_NULL 320 +#define TOK_NumericString 321 +#define TOK_OBJECT 322 +#define TOK_ObjectDescriptor 323 +#define TOK_OCTET 324 +#define TOK_OF 325 +#define TOK_OPTIONAL 326 +#define TOK_PATTERN 327 +#define TOK_PDV 328 +#define TOK_PLUS_INFINITY 329 +#define TOK_PRESENT 330 +#define TOK_PrintableString 331 +#define TOK_PRIVATE 332 +#define TOK_REAL 333 +#define TOK_RELATIVE_OID 334 +#define TOK_SEQUENCE 335 +#define TOK_SET 336 +#define TOK_SIZE 337 +#define TOK_STRING 338 +#define TOK_SYNTAX 339 +#define TOK_T61String 340 +#define TOK_TAGS 341 +#define TOK_TeletexString 342 +#define TOK_TRUE 343 +#define TOK_TYPE_IDENTIFIER 344 +#define TOK_UNIQUE 345 +#define TOK_UNIVERSAL 346 +#define TOK_UniversalString 347 +#define TOK_UTCTime 348 +#define TOK_UTF8String 349 +#define TOK_VideotexString 350 +#define TOK_VisibleString 351 +#define TOK_WITH 352 +#define TOK_EXCEPT 353 +#define TOK_INTERSECTION 354 +#define TOK_UNION 355 +#define TOK_TwoDots 356 +#define TOK_ThreeDots 357 extern YYSTYPE asn1p_lval; diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y index 36d9bafd..f39bd12c 100644 --- a/libasn1parser/asn1p_y.y +++ b/libasn1parser/asn1p_y.y @@ -120,6 +120,7 @@ static void _fixup_anonymous_identifier(asn1p_expr_t *expr); %token TOK_capitalreference /* "CLASS1" */ %token TOK_typefieldreference /* "&Pork" */ %token TOK_valuefieldreference /* "&id" */ +%token TOK_Literal /* "BY" */ /* * Token types representing ASN.1 standard keywords. @@ -307,8 +308,8 @@ static void _fixup_anonymous_identifier(asn1p_expr_t *expr); %type RestrictedCharacterStringValue %type optWithSyntax %type WithSyntax -%type WithSyntaxFormat -%type WithSyntaxFormatToken +%type WithSyntaxList +%type WithSyntaxToken %type optMarker Marker %type optUnique %type optPresenceConstraint PresenceConstraint @@ -1054,27 +1055,30 @@ optWithSyntax: WithSyntax: TOK_WITH TOK_SYNTAX '{' { asn1p_lexer_hack_enable_with_syntax(); } - WithSyntaxFormat + WithSyntaxList '}' { $$ = $5; } ; -WithSyntaxFormat: - WithSyntaxFormatToken { +WithSyntaxList: + WithSyntaxToken { $$ = asn1p_wsyntx_new(); TQ_ADD(&($$->chunks), $1, next); } - | WithSyntaxFormat WithSyntaxFormatToken { + | WithSyntaxList WithSyntaxToken { $$ = $1; TQ_ADD(&($$->chunks), $2, next); } ; -WithSyntaxFormatToken: +WithSyntaxToken: TOK_opaque { $$ = asn1p_wsyntx_chunk_frombuf($1.buf, $1.len, 0); } + | TOK_Literal { + $$ = asn1p_wsyntx_chunk_frombuf($1, strlen($1), 0); + } | ClassFieldIdentifier { asn1p_ref_t *ref; int ret; @@ -1084,6 +1088,9 @@ WithSyntaxFormatToken: checkmem(ret == 0); $$ = asn1p_wsyntx_chunk_fromref(ref, 0); } + | '[' WithSyntaxList ']' { + $$ = asn1p_wsyntx_chunk_fromsyntax($2); + } ; ExtensionAndException: @@ -2340,10 +2347,9 @@ _fixup_anonymous_identifier(asn1p_expr_t *expr) { expr->Identifier); } -extern char *asn1p_text; - int yyerror(const char *msg) { + extern char *asn1p_text; fprintf(stderr, "ASN.1 grammar parse error " "near line %d (token \"%s\"): %s\n", @@ -2351,4 +2357,3 @@ yyerror(const char *msg) { return -1; } - diff --git a/libasn1print/asn1print.c b/libasn1print/asn1print.c index 992a344b..423a5fa4 100644 --- a/libasn1print/asn1print.c +++ b/libasn1print/asn1print.c @@ -412,15 +412,21 @@ static int asn1print_with_syntax(asn1p_wsyntx_t *wx, enum asn1print_flags flags) { if(wx) { asn1p_wsyntx_chunk_t *wc; - printf(" WITH SYNTAX {"); TQ_FOR(wc, &(wx->chunks), next) { - if(wc->ref) { - asn1print_ref(wc->ref, flags); - } else { - fwrite(wc->buf, 1, wc->len, stdout); - } + switch(wc->type) { + case WC_LITERAL: + printf("%s", wc->content.token); + break; + case WC_REFERENCE: + asn1print_ref(wc->content.ref, flags); + break; + case WC_OPTIONALGROUP: + printf("["); + asn1print_with_syntax(wc->content.syntax,flags); + printf("]"); + break; + } } - printf("}\n"); } return 0; @@ -651,8 +657,11 @@ asn1print_expr(asn1p_t *asn, asn1p_module_t *mod, asn1p_expr_t *tc, enum asn1pri } } - if(tc->with_syntax) + if(tc->with_syntax) { + printf(" WITH SYNTAX {"); asn1print_with_syntax(tc->with_syntax, flags); + printf("}\n"); + } if(!SEQ_OF && tc->constraints) { printf(" ");