diff --git a/SYNTAX.md b/SYNTAX.md index c37234e6..ed3ee84a 100644 --- a/SYNTAX.md +++ b/SYNTAX.md @@ -187,7 +187,6 @@ RustyLR supports rich regular expression patterns on the right-hand side of prod - **`P?`** : Matches zero or one occurrence of pattern `P` (binds as an `Option

`). - **`$sep(P, P_separator, repetition)`** : Matches repetitions of `P` separated by `P_separator`. The `repetition` argument can be `*` (zero or more) or `+` (one or more). Binds as a `Vec

`. - **`(P1 P2 | P3)`** : Grouping and alternation. -- **`P / term`** or **`P / [term1 term2]`** : Lookahead assertion. Matches `P` only if followed by the lookahead symbol(s), without consuming them. - **`'a'` / `b'a'`** : Character/byte literals (only valid if `%tokentype` is `char` or `u8`). - **`"abcd"` / `b"abcd"`** : String/byte string literals (only valid if `%tokentype` is `char` or `u8`). - **`P - TerminalSet`** : Matches pattern `P` but excludes any terminal in the `TerminalSet`. diff --git a/rusty_lr_core/src/builder/grammar.rs b/rusty_lr_core/src/builder/grammar.rs index 615b9e8e..a7e3846f 100644 --- a/rusty_lr_core/src/builder/grammar.rs +++ b/rusty_lr_core/src/builder/grammar.rs @@ -26,7 +26,6 @@ struct ExpandCache { #[derive(Debug, Clone)] pub struct Rule { pub rule: ProductionRule, - pub lookaheads: Option>, /// for reduce/reduce conflict resolving pub priority: usize, } @@ -71,7 +70,6 @@ impl Grammar, NonTerm> { &mut self, name: NonTerm, rule: Vec, NonTerm>>, - lookaheads: Option>>, precedence: Option, priority: usize, ) -> usize @@ -86,7 +84,6 @@ impl Grammar, NonTerm> { rule, precedence, }, - lookaheads, priority, }; self.rules.push(rule); @@ -324,14 +321,6 @@ impl Grammar, NonTerm> { } else { c.lookaheads.clone() }; - // check for force lookahead - let lookaheads = - if let Some(force_lookaheads) = self.rules[c.rule].lookaheads.as_ref() { - lookaheads.intersection(force_lookaheads).copied().collect() - } else { - lookaheads - }; - new_rules.push(( ShiftedRuleRef { rule: c.rule, diff --git a/rusty_lr_core/src/parser/nonterminal.rs b/rusty_lr_core/src/parser/nonterminal.rs index 7760a2cf..64045ff5 100644 --- a/rusty_lr_core/src/parser/nonterminal.rs +++ b/rusty_lr_core/src/parser/nonterminal.rs @@ -40,8 +40,6 @@ pub enum NonTerminalType { /// terminal set enclosed in brackets ( [a-zA-Z0-9] ) TerminalSet, - /// rule with explicit lookaheads - Lookahead, /// sequence of tokens enclosed in parentheses ( a B c ... ) Group, diff --git a/rusty_lr_core/src/tree.rs b/rusty_lr_core/src/tree.rs index 64a5175b..0f97fd4d 100644 --- a/rusty_lr_core/src/tree.rs +++ b/rusty_lr_core/src/tree.rs @@ -53,7 +53,7 @@ impl TreeNonTerminal { } // remove parent, directly add children - Some(NonTerminalType::Lookahead) | Some(NonTerminalType::TerminalSet) => self + Some(NonTerminalType::TerminalSet) => self .tokens .iter() .flat_map(|token| token.to_term_tree(term_to_display, nonterm_to_display)) diff --git a/rusty_lr_executable/README.md b/rusty_lr_executable/README.md index 61e527d2..053cbf95 100644 --- a/rusty_lr_executable/README.md +++ b/rusty_lr_executable/README.md @@ -162,7 +162,6 @@ Reduce on Terminals: { question => { Pattern -> TerminalSet } minus => { Pattern -> TerminalSet } exclamation => { Pattern -> TerminalSet } - slash => { Pattern -> TerminalSet } dot => { Pattern -> TerminalSet } dollar => { Pattern -> TerminalSet } comma => { Pattern -> TerminalSet } diff --git a/rusty_lr_parser/src/grammar.rs b/rusty_lr_parser/src/grammar.rs index e35566ed..312526b1 100644 --- a/rusty_lr_parser/src/grammar.rs +++ b/rusty_lr_parser/src/grammar.rs @@ -1545,7 +1545,6 @@ impl Grammar { tokens, reduce_action, separator_location: rule.separator_location, - lookaheads: None, prec, dprec, is_used: true, @@ -1759,7 +1758,6 @@ impl Grammar { ], reduce_action: None, separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -1814,11 +1812,6 @@ impl Grammar { // check other, error terminals used for nonterm in &grammar.nonterminals { for rule in &nonterm.rules { - if let Some(lookaheads) = &rule.lookaheads { - if lookaheads.contains(&grammar.other_terminal_index) { - grammar.other_used = true; - } - } for token in &rule.tokens { if token.token == Token::Term(TerminalSymbol::Term(grammar.other_terminal_index)) @@ -1895,7 +1888,6 @@ impl Grammar { .map(|token| (token.token, &token.reduce_action_chains)) .collect::>(); let reduce_chains = &term_mapped.reduce_action_chains; - let lookaheads = &rule.lookaheads; let prec = rule.prec.map(Located::into_value); let dprec = rule.dprec.map_or(0, Located::into_value); let reduce_action_token_index = @@ -1911,7 +1903,6 @@ impl Grammar { prefix, suffix, reduce_chains, - lookaheads, prec, dprec, reduce_action_token_index, @@ -2056,20 +2047,6 @@ impl Grammar { token.token = Token::Term(TerminalSymbol::Term(new_class)); } } - // - lookaheads in the rule - if let Some(lookaheads) = &mut rule.lookaheads { - let new_lookaheads = std::mem::take(lookaheads) - .into_iter() - .map(|old_class| { - let new_class = old_class_to_new_class[old_class]; - if new_class == self.other_terminal_class_id { - other_was_used = true; - } - new_class - }) - .collect(); - *lookaheads = new_lookaheads; - } new_rules.push(rule); } nonterm.rules = new_rules; @@ -2530,12 +2507,6 @@ impl Grammar { grammar.add_rule( nonterm_id, tokens, - rule.lookaheads.as_ref().map(|lookaheads| { - lookaheads - .iter() - .map(|&t| TerminalSymbol::Term(t)) - .collect() - }), rule.prec.map(Located::into_value), rule.dprec.map_or(0, Located::into_value), ); diff --git a/rusty_lr_parser/src/nonterminal_info.rs b/rusty_lr_parser/src/nonterminal_info.rs index 6cad950f..2cd83e12 100644 --- a/rusty_lr_parser/src/nonterminal_info.rs +++ b/rusty_lr_parser/src/nonterminal_info.rs @@ -60,8 +60,6 @@ pub struct Rule { pub reduce_action: Option, /// span of '|' or ':' before this production rule pub separator_location: Location, - /// force lookahead tokens for this pattern. - pub lookaheads: Option>, /// %prec definition pub prec: Option>, /// %dprec definition diff --git a/rusty_lr_parser/src/parser/args.rs b/rusty_lr_parser/src/parser/args.rs index 27a1cd59..fcab2387 100644 --- a/rusty_lr_parser/src/parser/args.rs +++ b/rusty_lr_parser/src/parser/args.rs @@ -103,13 +103,6 @@ pub enum PatternArgs { /// a group delimited by '[' and ']' containing terminal set TerminalSet(TerminalSet), - /// force lookahead tokens for this pattern. - /// lookaheads will not be consumed. - Lookaheads { - pattern: Box, - lookaheads: Box, - }, - /// ( Pattern+ ) /// alternatives is a list of alternatives (separated by '|'), /// each alternative is a list of patterns. @@ -153,12 +146,6 @@ impl std::fmt::Display for PatternArgs { PatternArgs::Question { base, .. } => write!(f, "{}?", base), PatternArgs::Exclamation { base, .. } => write!(f, "{}", base), PatternArgs::TerminalSet(terminal_set) => write!(f, "{}", terminal_set), - PatternArgs::Lookaheads { - pattern, - lookaheads, - } => { - write!(f, "{}/{}", pattern, lookaheads) - } PatternArgs::Group { alternatives, .. } => { write!( f, @@ -266,21 +253,6 @@ impl PatternArgs { Ok(pattern) } } - PatternArgs::Lookaheads { - pattern, - lookaheads, - } => { - let (negate, terminal_set) = lookaheads.to_terminal_set(grammar)?; - let pattern = Pattern { - internal: PatternInternal::Lookaheads( - Box::new(pattern.into_pattern(grammar, put_exclamation)?), - negate, - terminal_set, - ), - pretty_name, - }; - Ok(pattern) - } PatternArgs::Group { alternatives, .. } => { if alternatives.len() == 1 && alternatives[0].len() == 1 { let line = alternatives.into_iter().next().unwrap(); @@ -429,9 +401,6 @@ impl PatternArgs { PatternArgs::Star { .. } => Err(ParseError::OnlyTerminalSet(self.location())), PatternArgs::Question { .. } => Err(ParseError::OnlyTerminalSet(self.location())), PatternArgs::Exclamation { base, .. } => base.to_terminal_set(grammar), - PatternArgs::Lookaheads { pattern, .. } => { - Err(ParseError::OnlyTerminalSet(pattern.location())) - } PatternArgs::Group { alternatives, .. } => { if alternatives.len() == 1 && alternatives[0].len() == 1 { alternatives[0][0].to_terminal_set(grammar) @@ -503,10 +472,6 @@ impl PatternArgs { op_location: op_span, } => base.location().merge(op_span), PatternArgs::TerminalSet(terminal_set) => terminal_set.location(), - PatternArgs::Lookaheads { - pattern, - lookaheads, - } => pattern.location().merge(&lookaheads.location()), PatternArgs::Group { open_location: open_span, close_location: close_span, @@ -529,14 +494,6 @@ impl PatternArgs { PatternArgs::Question { base, .. } => base.range_resolve(grammar), PatternArgs::Exclamation { base, .. } => base.range_resolve(grammar), PatternArgs::TerminalSet(terminal_set) => terminal_set.range_resolve(grammar), - PatternArgs::Lookaheads { - pattern, - lookaheads, - } => { - pattern.range_resolve(grammar)?; - lookaheads.range_resolve(grammar)?; - Ok(()) - } PatternArgs::Group { alternatives, .. } => { for line in alternatives { for pattern in line { diff --git a/rusty_lr_parser/src/parser/lexer.rs b/rusty_lr_parser/src/parser/lexer.rs index 76ced4e2..3c7f692e 100644 --- a/rusty_lr_parser/src/parser/lexer.rs +++ b/rusty_lr_parser/src/parser/lexer.rs @@ -27,7 +27,6 @@ pub enum Lexed { Caret(Punct), Minus(Punct), Exclamation(Punct), - Slash(Punct), Dot(Punct), Dollar(Punct), Comma(Punct), @@ -83,7 +82,6 @@ impl Lexed { Lexed::Caret(punct) => stream.append(punct), Lexed::Minus(punct) => stream.append(punct), Lexed::Exclamation(punct) => stream.append(punct), - Lexed::Slash(punct) => stream.append(punct), Lexed::Dot(punct) => stream.append(punct), Lexed::Dollar(punct) => stream.append(punct), Lexed::Comma(punct) => stream.append(punct), @@ -180,7 +178,6 @@ impl std::fmt::Display for Lexed { Lexed::Caret(_) => write!(f, "'^'"), Lexed::Minus(_) => write!(f, "'-'"), Lexed::Exclamation(_) => write!(f, "'!'"), - Lexed::Slash(_) => write!(f, "'/'"), Lexed::Dot(_) => write!(f, "'.'"), Lexed::Dollar(_) => write!(f, "'$'"), Lexed::Comma(_) => write!(f, "','"), @@ -280,7 +277,6 @@ pub fn feed_recursive( '-' => context.feed_location(Lexed::Minus(punct), location)?, '=' => context.feed_location(Lexed::Equal(punct), location)?, '!' => context.feed_location(Lexed::Exclamation(punct), location)?, - '/' => context.feed_location(Lexed::Slash(punct), location)?, '.' => context.feed_location(Lexed::Dot(punct), location)?, '%' => context.feed_location(Lexed::Percent(punct), location)?, '$' => context.feed_location(Lexed::Dollar(punct), location)?, diff --git a/rusty_lr_parser/src/parser/parser.rs b/rusty_lr_parser/src/parser/parser.rs index dcd1fd4e..3dfbf037 100644 --- a/rusty_lr_parser/src/parser/parser.rs +++ b/rusty_lr_parser/src/parser/parser.rs @@ -44,7 +44,6 @@ use rusty_lr_core::rule::ReduceType; %token caret Lexed::Caret(_); %token minus Lexed::Minus(_); %token exclamation Lexed::Exclamation(_); -%token slash Lexed::Slash(_); %token dot Lexed::Dot(_); %token dollar Lexed::Dollar(_); %token comma Lexed::Comma(_); @@ -270,7 +269,6 @@ TerminalSet(TerminalSet): lbracket caret? TerminalSetItem* rbracket { ; %left minus; -%left slash; %left star plus question exclamation; Pattern(PatternArgs): ident { @@ -297,9 +295,6 @@ Pattern(PatternArgs): ident { | TerminalSet { PatternArgs::TerminalSet( TerminalSet ) } -| p1=Pattern slash lh=Pattern { - PatternArgs::Lookaheads { pattern: Box::new(p1), lookaheads: Box::new(lh) } -} | lparen $sep( Pattern*, pipe, + ) rparen { PatternArgs::Group { alternatives: Pattern, open_location: @lparen, close_location: @rparen } } @@ -658,4 +653,4 @@ GrammarLine : Rule { data.rules.push(Rule); } | Directive ; -Grammar: GrammarLine+; \ No newline at end of file +Grammar: GrammarLine+; diff --git a/rusty_lr_parser/src/parser/parser_expanded.rs b/rusty_lr_parser/src/parser/parser_expanded.rs index 8bb21b84..3f98442d 100644 --- a/rusty_lr_parser/src/parser/parser_expanded.rs +++ b/rusty_lr_parser/src/parser/parser_expanded.rs @@ -25,8 +25,8 @@ use std::boxed::Box; /* ====================================Grammar===================================== -# of terminal classes: 44 -# of states: 173 +# of terminal classes: 43 +# of states: 171 0: Rule -> ident RuleType colon RuleLines semicolon 1: RuleType -> parengroup @@ -58,129 +58,127 @@ use std::boxed::Box; 27: Pattern -> Pattern question 28: Pattern -> Pattern exclamation 29: Pattern -> TerminalSet -30: Pattern -> Pattern slash Pattern -31: Pattern -> lparen $sep(Pattern*, pipe, +) rparen -32: Pattern -> lparen error rparen -33: Pattern -> byte_literal -34: Pattern -> byte_str_literal -35: Pattern -> char_literal -36: Pattern -> str_literal -37: Pattern -> Pattern minus Pattern -38: Pattern -> dollar ident lparen Pattern comma Pattern comma? rparen -39: Pattern -> dollar ident lparen Pattern comma Pattern comma plus rparen -40: Pattern -> dollar ident lparen Pattern comma Pattern comma star rparen -41: Pattern -> dollar ident lparen Pattern comma Pattern error rparen -42: Pattern -> dollar ident lparen Pattern comma Pattern comma error rparen -43: Action -> bracegroup -44: Action -> -45: IdentOrLiteral -> ident -46: IdentOrLiteral -> byte_literal -47: IdentOrLiteral -> char_literal -48: Directive -> percent token ident [^semicolon]+ semicolon -49: Directive -> percent token ident semicolon -50: Directive -> percent token error semicolon -51: Directive -> percent start ident semicolon -52: Directive -> percent start error semicolon -53: Directive -> percent tokentype [^semicolon]+ semicolon -54: Directive -> percent tokentype semicolon -55: Directive -> percent userdata [^semicolon]+ semicolon -56: Directive -> percent userdata semicolon -57: Directive -> percent left IdentOrLiteral+ semicolon -58: Directive -> percent left error semicolon -59: Directive -> percent right IdentOrLiteral+ semicolon -60: Directive -> percent right error semicolon -61: Directive -> percent precedence IdentOrLiteral+ semicolon -62: Directive -> percent precedence error semicolon -63: Directive -> percent errortype [^semicolon]+ semicolon -64: Directive -> percent errortype semicolon -65: Directive -> percent moduleprefix [^semicolon]+ semicolon -66: Directive -> percent moduleprefix semicolon -67: Directive -> percent glr semicolon -68: Directive -> percent glr error semicolon -69: Directive -> percent lalr semicolon -70: Directive -> percent lalr error semicolon -71: Directive -> percent nooptim semicolon -72: Directive -> percent nooptim error semicolon -73: Directive -> percent dense semicolon -74: Directive -> percent dense error semicolon -75: Directive -> percent location [^semicolon]+ semicolon -76: Directive -> percent location semicolon -77: Directive -> percent error semicolon -78: GrammarLine -> Rule -79: GrammarLine -> Directive -80: Grammar -> GrammarLine+ -81: TokenMapped+ -> TokenMapped -82: TokenMapped+ -> TokenMapped+ TokenMapped -83: TokenMapped* -> TokenMapped+ -84: TokenMapped* -> -85: PrecDef+ -> PrecDef -86: PrecDef+ -> PrecDef+ PrecDef -87: PrecDef* -> PrecDef+ -88: PrecDef* -> -89: caret? -> caret -90: caret? -> -91: TerminalSetItem+ -> TerminalSetItem -92: TerminalSetItem+ -> TerminalSetItem+ TerminalSetItem -93: TerminalSetItem* -> TerminalSetItem+ -94: TerminalSetItem* -> -95: Pattern+ -> Pattern -96: Pattern+ -> Pattern+ Pattern -97: Pattern* -> Pattern+ -98: Pattern* -> -99: $sep(Pattern*, pipe, +) -> Pattern* -100: $sep(Pattern*, pipe, +) -> $sep(Pattern*, pipe, +) pipe Pattern* -101: comma? -> comma -102: comma? -> -103: [^semicolon] -> ident -104: [^semicolon] -> colon -105: [^semicolon] -> pipe -106: [^semicolon] -> percent -107: [^semicolon] -> equal -108: [^semicolon] -> plus -109: [^semicolon] -> star -110: [^semicolon] -> question -111: [^semicolon] -> caret -112: [^semicolon] -> minus -113: [^semicolon] -> exclamation -114: [^semicolon] -> slash -115: [^semicolon] -> dot -116: [^semicolon] -> dollar -117: [^semicolon] -> comma -118: [^semicolon] -> int_literal -119: [^semicolon] -> byte_literal -120: [^semicolon] -> byte_str_literal -121: [^semicolon] -> char_literal -122: [^semicolon] -> str_literal -123: [^semicolon] -> [other_literal, ] -124: [^semicolon] -> parengroup -125: [^semicolon] -> bracegroup -126: [^semicolon] -> lparen -127: [^semicolon] -> rparen -128: [^semicolon] -> lbracket -129: [^semicolon] -> rbracket -130: [^semicolon] -> left -131: [^semicolon] -> right -132: [^semicolon] -> token -133: [^semicolon] -> start -134: [^semicolon] -> tokentype -135: [^semicolon] -> userdata -136: [^semicolon] -> errortype -137: [^semicolon] -> moduleprefix -138: [^semicolon] -> lalr -139: [^semicolon] -> glr -140: [^semicolon] -> prec -141: [^semicolon] -> precedence -142: [^semicolon] -> nooptim -143: [^semicolon] -> dense -144: [^semicolon] -> dprec -145: [^semicolon] -> location -146: [^semicolon]+ -> [^semicolon] -147: [^semicolon]+ -> [^semicolon]+ [^semicolon] -148: IdentOrLiteral+ -> IdentOrLiteral -149: IdentOrLiteral+ -> IdentOrLiteral+ IdentOrLiteral -150: GrammarLine+ -> GrammarLine -151: GrammarLine+ -> GrammarLine GrammarLine+ -152: Augmented -> Grammar eof +30: Pattern -> lparen $sep(Pattern*, pipe, +) rparen +31: Pattern -> lparen error rparen +32: Pattern -> byte_literal +33: Pattern -> byte_str_literal +34: Pattern -> char_literal +35: Pattern -> str_literal +36: Pattern -> Pattern minus Pattern +37: Pattern -> dollar ident lparen Pattern comma Pattern comma? rparen +38: Pattern -> dollar ident lparen Pattern comma Pattern comma plus rparen +39: Pattern -> dollar ident lparen Pattern comma Pattern comma star rparen +40: Pattern -> dollar ident lparen Pattern comma Pattern error rparen +41: Pattern -> dollar ident lparen Pattern comma Pattern comma error rparen +42: Action -> bracegroup +43: Action -> +44: IdentOrLiteral -> ident +45: IdentOrLiteral -> byte_literal +46: IdentOrLiteral -> char_literal +47: Directive -> percent token ident [^semicolon]+ semicolon +48: Directive -> percent token ident semicolon +49: Directive -> percent token error semicolon +50: Directive -> percent start ident semicolon +51: Directive -> percent start error semicolon +52: Directive -> percent tokentype [^semicolon]+ semicolon +53: Directive -> percent tokentype semicolon +54: Directive -> percent userdata [^semicolon]+ semicolon +55: Directive -> percent userdata semicolon +56: Directive -> percent left IdentOrLiteral+ semicolon +57: Directive -> percent left error semicolon +58: Directive -> percent right IdentOrLiteral+ semicolon +59: Directive -> percent right error semicolon +60: Directive -> percent precedence IdentOrLiteral+ semicolon +61: Directive -> percent precedence error semicolon +62: Directive -> percent errortype [^semicolon]+ semicolon +63: Directive -> percent errortype semicolon +64: Directive -> percent moduleprefix [^semicolon]+ semicolon +65: Directive -> percent moduleprefix semicolon +66: Directive -> percent glr semicolon +67: Directive -> percent glr error semicolon +68: Directive -> percent lalr semicolon +69: Directive -> percent lalr error semicolon +70: Directive -> percent nooptim semicolon +71: Directive -> percent nooptim error semicolon +72: Directive -> percent dense semicolon +73: Directive -> percent dense error semicolon +74: Directive -> percent location [^semicolon]+ semicolon +75: Directive -> percent location semicolon +76: Directive -> percent error semicolon +77: GrammarLine -> Rule +78: GrammarLine -> Directive +79: Grammar -> GrammarLine+ +80: TokenMapped+ -> TokenMapped +81: TokenMapped+ -> TokenMapped+ TokenMapped +82: TokenMapped* -> TokenMapped+ +83: TokenMapped* -> +84: PrecDef+ -> PrecDef +85: PrecDef+ -> PrecDef+ PrecDef +86: PrecDef* -> PrecDef+ +87: PrecDef* -> +88: caret? -> caret +89: caret? -> +90: TerminalSetItem+ -> TerminalSetItem +91: TerminalSetItem+ -> TerminalSetItem+ TerminalSetItem +92: TerminalSetItem* -> TerminalSetItem+ +93: TerminalSetItem* -> +94: Pattern+ -> Pattern +95: Pattern+ -> Pattern+ Pattern +96: Pattern* -> Pattern+ +97: Pattern* -> +98: $sep(Pattern*, pipe, +) -> Pattern* +99: $sep(Pattern*, pipe, +) -> $sep(Pattern*, pipe, +) pipe Pattern* +100: comma? -> comma +101: comma? -> +102: [^semicolon] -> ident +103: [^semicolon] -> colon +104: [^semicolon] -> pipe +105: [^semicolon] -> percent +106: [^semicolon] -> equal +107: [^semicolon] -> plus +108: [^semicolon] -> star +109: [^semicolon] -> question +110: [^semicolon] -> caret +111: [^semicolon] -> minus +112: [^semicolon] -> exclamation +113: [^semicolon] -> dot +114: [^semicolon] -> dollar +115: [^semicolon] -> comma +116: [^semicolon] -> int_literal +117: [^semicolon] -> byte_literal +118: [^semicolon] -> byte_str_literal +119: [^semicolon] -> char_literal +120: [^semicolon] -> str_literal +121: [^semicolon] -> [other_literal, ] +122: [^semicolon] -> parengroup +123: [^semicolon] -> bracegroup +124: [^semicolon] -> lparen +125: [^semicolon] -> rparen +126: [^semicolon] -> lbracket +127: [^semicolon] -> rbracket +128: [^semicolon] -> left +129: [^semicolon] -> right +130: [^semicolon] -> token +131: [^semicolon] -> start +132: [^semicolon] -> tokentype +133: [^semicolon] -> userdata +134: [^semicolon] -> errortype +135: [^semicolon] -> moduleprefix +136: [^semicolon] -> lalr +137: [^semicolon] -> glr +138: [^semicolon] -> prec +139: [^semicolon] -> precedence +140: [^semicolon] -> nooptim +141: [^semicolon] -> dense +142: [^semicolon] -> dprec +143: [^semicolon] -> location +144: [^semicolon]+ -> [^semicolon] +145: [^semicolon]+ -> [^semicolon]+ [^semicolon] +146: IdentOrLiteral+ -> IdentOrLiteral +147: IdentOrLiteral+ -> IdentOrLiteral+ IdentOrLiteral +148: GrammarLine+ -> GrammarLine +149: GrammarLine+ -> GrammarLine GrammarLine+ +150: Augmented -> Grammar eof */ // =============================Generated Codes Begin============================== @@ -263,7 +261,6 @@ pub enum GrammarTerminalClasses { question, exclamation, minus, - slash, error, eof, } @@ -271,10 +268,10 @@ impl GrammarTerminalClasses { #[inline] pub fn from_usize(value: usize) -> Self { debug_assert!( - value < 46usize, + value < 45usize, "Terminal class index {} is out of bounds (max {})", value, - 46usize + 45usize ); unsafe { ::std::mem::transmute(value) } } @@ -328,7 +325,6 @@ impl ::rusty_lr_core::parser::terminalclass::TerminalClass for GrammarTerminalCl GrammarTerminalClasses::question => "question", GrammarTerminalClasses::exclamation => "exclamation", GrammarTerminalClasses::minus => "minus", - GrammarTerminalClasses::slash => "slash", GrammarTerminalClasses::error => "error", GrammarTerminalClasses::eof => "eof", } @@ -339,11 +335,10 @@ impl ::rusty_lr_core::parser::terminalclass::TerminalClass for GrammarTerminalCl fn precedence(&self) -> ::rusty_lr_core::parser::Precedence { match self { GrammarTerminalClasses::minus => ::rusty_lr_core::parser::Precedence::new(0), - GrammarTerminalClasses::slash => ::rusty_lr_core::parser::Precedence::new(1), GrammarTerminalClasses::plus | GrammarTerminalClasses::star | GrammarTerminalClasses::question - | GrammarTerminalClasses::exclamation => ::rusty_lr_core::parser::Precedence::new(2), + | GrammarTerminalClasses::exclamation => ::rusty_lr_core::parser::Precedence::new(1), GrammarTerminalClasses::eof => { unreachable!("eof token cannot be used in precedence levels") } @@ -395,7 +390,6 @@ impl ::rusty_lr_core::parser::terminalclass::TerminalClass for GrammarTerminalCl Lexed::Question(_) => GrammarTerminalClasses::question, Lexed::Exclamation(_) => GrammarTerminalClasses::exclamation, Lexed::Minus(_) => GrammarTerminalClasses::minus, - Lexed::Slash(_) => GrammarTerminalClasses::slash, _ => GrammarTerminalClasses::TermClass1, } } @@ -1986,58 +1980,9 @@ impl GrammarDataStack { } Ok(()) } - ///Pattern -> Pattern slash Pattern - #[inline] - fn reduce_Pattern_6( - __data_stack: &mut Self, - __location_stack: &mut Vec, - __push_data: bool, - shift: &mut bool, - lookahead: &::rusty_lr_core::TerminalSymbol, - data: &mut GrammarArgs, - __rustylr_location0: &mut Location, - ) -> Result<(), ::rusty_lr_core::DefaultReduceActionError> { - #[cfg(debug_assertions)] - { - debug_assert!( - matches!(__data_stack.__stack.get(__data_stack.__stack.len() - 1 - - 0usize), Some(& GrammarData::__variant9(_))) - ); - debug_assert!( - matches!(__data_stack.__stack.get(__data_stack.__stack.len() - 1 - - 1usize), Some(& GrammarData::__terminals(_))) - ); - debug_assert!( - matches!(__data_stack.__stack.get(__data_stack.__stack.len() - 1 - - 2usize), Some(& GrammarData::__variant9(_))) - ); - } - __location_stack.truncate(__location_stack.len() - 3); - let mut lh = match __data_stack.__stack.pop().unwrap() { - GrammarData::__variant9(val) => val, - _ => unreachable!(), - }; - __data_stack.__stack.pop(); - let mut p1 = match __data_stack.__stack.pop().unwrap() { - GrammarData::__variant9(val) => val, - _ => unreachable!(), - }; - let __res = { - PatternArgs::Lookaheads { - pattern: Box::new(p1), - lookaheads: Box::new(lh), - } - }; - if __push_data { - __data_stack.__stack.push(GrammarData::__variant9(__res)); - } else { - __data_stack.__stack.push(GrammarData::Empty); - } - Ok(()) - } ///Pattern -> lparen $sep(Pattern*, pipe, +) rparen #[inline] - fn reduce_Pattern_7( + fn reduce_Pattern_6( __data_stack: &mut Self, __location_stack: &mut Vec, __push_data: bool, @@ -2086,7 +2031,7 @@ impl GrammarDataStack { } ///Pattern -> lparen error rparen #[inline] - fn reduce_Pattern_8( + fn reduce_Pattern_7( __data_stack: &mut Self, __location_stack: &mut Vec, __push_data: bool, @@ -2133,7 +2078,7 @@ impl GrammarDataStack { } ///Pattern -> byte_literal #[inline] - fn reduce_Pattern_9( + fn reduce_Pattern_8( __data_stack: &mut Self, __location_stack: &mut Vec, __push_data: bool, @@ -2169,7 +2114,7 @@ impl GrammarDataStack { } ///Pattern -> byte_str_literal #[inline] - fn reduce_Pattern_10( + fn reduce_Pattern_9( __data_stack: &mut Self, __location_stack: &mut Vec, __push_data: bool, @@ -2207,7 +2152,7 @@ impl GrammarDataStack { } ///Pattern -> char_literal #[inline] - fn reduce_Pattern_11( + fn reduce_Pattern_10( __data_stack: &mut Self, __location_stack: &mut Vec, __push_data: bool, @@ -2243,7 +2188,7 @@ impl GrammarDataStack { } ///Pattern -> str_literal #[inline] - fn reduce_Pattern_12( + fn reduce_Pattern_11( __data_stack: &mut Self, __location_stack: &mut Vec, __push_data: bool, @@ -2279,7 +2224,7 @@ impl GrammarDataStack { } ///Pattern -> Pattern minus Pattern #[inline] - fn reduce_Pattern_13( + fn reduce_Pattern_12( __data_stack: &mut Self, __location_stack: &mut Vec, __push_data: bool, @@ -2328,7 +2273,7 @@ impl GrammarDataStack { } ///Pattern -> dollar ident lparen Pattern comma Pattern comma? rparen #[inline] - fn reduce_Pattern_14( + fn reduce_Pattern_13( __data_stack: &mut Self, __location_stack: &mut Vec, __push_data: bool, @@ -2420,7 +2365,7 @@ impl GrammarDataStack { } ///Pattern -> dollar ident lparen Pattern comma Pattern comma plus rparen #[inline] - fn reduce_Pattern_15( + fn reduce_Pattern_14( __data_stack: &mut Self, __location_stack: &mut Vec, __push_data: bool, @@ -2516,7 +2461,7 @@ impl GrammarDataStack { } ///Pattern -> dollar ident lparen Pattern comma Pattern comma star rparen #[inline] - fn reduce_Pattern_16( + fn reduce_Pattern_15( __data_stack: &mut Self, __location_stack: &mut Vec, __push_data: bool, @@ -2612,7 +2557,7 @@ impl GrammarDataStack { } ///Pattern -> dollar ident lparen Pattern comma Pattern error rparen #[inline] - fn reduce_Pattern_17( + fn reduce_Pattern_16( __data_stack: &mut Self, __location_stack: &mut Vec, __push_data: bool, @@ -2713,7 +2658,7 @@ impl GrammarDataStack { } ///Pattern -> dollar ident lparen Pattern comma Pattern comma error rparen #[inline] - fn reduce_Pattern_18( + fn reduce_Pattern_17( __data_stack: &mut Self, __location_stack: &mut Vec, __push_data: bool, @@ -5776,17 +5721,6 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { ) } 42usize => { - Self::reduce_Pattern_18( - data_stack, - location_stack, - push_data, - shift, - lookahead, - user_data, - location0, - ) - } - 43usize => { Self::reduce_Action_0( data_stack, location_stack, @@ -5797,7 +5731,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 44usize => { + 43usize => { Self::reduce_Action_1( data_stack, location_stack, @@ -5808,7 +5742,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 45usize => { + 44usize => { Self::reduce_IdentOrLiteral_0( data_stack, location_stack, @@ -5819,7 +5753,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 46usize => { + 45usize => { Self::reduce_IdentOrLiteral_1( data_stack, location_stack, @@ -5830,7 +5764,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 47usize => { + 46usize => { Self::reduce_IdentOrLiteral_2( data_stack, location_stack, @@ -5841,7 +5775,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 48usize => { + 47usize => { Self::reduce_Directive_0( data_stack, location_stack, @@ -5852,7 +5786,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 49usize => { + 48usize => { Self::reduce_Directive_1( data_stack, location_stack, @@ -5863,7 +5797,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 50usize => { + 49usize => { Self::reduce_Directive_2( data_stack, location_stack, @@ -5874,7 +5808,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 51usize => { + 50usize => { Self::reduce_Directive_3( data_stack, location_stack, @@ -5885,7 +5819,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 52usize => { + 51usize => { Self::reduce_Directive_4( data_stack, location_stack, @@ -5896,7 +5830,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 53usize => { + 52usize => { Self::reduce_Directive_5( data_stack, location_stack, @@ -5907,7 +5841,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 54usize => { + 53usize => { Self::reduce_Directive_6( data_stack, location_stack, @@ -5918,7 +5852,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 55usize => { + 54usize => { Self::reduce_Directive_7( data_stack, location_stack, @@ -5929,7 +5863,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 56usize => { + 55usize => { Self::reduce_Directive_8( data_stack, location_stack, @@ -5940,7 +5874,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 57usize => { + 56usize => { Self::reduce_Directive_9( data_stack, location_stack, @@ -5951,7 +5885,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 58usize => { + 57usize => { Self::reduce_Directive_10( data_stack, location_stack, @@ -5962,7 +5896,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 59usize => { + 58usize => { Self::reduce_Directive_11( data_stack, location_stack, @@ -5973,7 +5907,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 60usize => { + 59usize => { Self::reduce_Directive_12( data_stack, location_stack, @@ -5984,7 +5918,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 61usize => { + 60usize => { Self::reduce_Directive_13( data_stack, location_stack, @@ -5995,7 +5929,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 62usize => { + 61usize => { Self::reduce_Directive_14( data_stack, location_stack, @@ -6006,7 +5940,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 63usize => { + 62usize => { Self::reduce_Directive_15( data_stack, location_stack, @@ -6017,7 +5951,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 64usize => { + 63usize => { Self::reduce_Directive_16( data_stack, location_stack, @@ -6028,7 +5962,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 65usize => { + 64usize => { Self::reduce_Directive_17( data_stack, location_stack, @@ -6039,7 +5973,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 66usize => { + 65usize => { Self::reduce_Directive_18( data_stack, location_stack, @@ -6050,7 +5984,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 67usize => { + 66usize => { Self::reduce_Directive_19( data_stack, location_stack, @@ -6061,7 +5995,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 68usize => { + 67usize => { Self::reduce_Directive_20( data_stack, location_stack, @@ -6072,7 +6006,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 69usize => { + 68usize => { Self::reduce_Directive_21( data_stack, location_stack, @@ -6083,7 +6017,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 70usize => { + 69usize => { Self::reduce_Directive_22( data_stack, location_stack, @@ -6094,7 +6028,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 71usize => { + 70usize => { Self::reduce_Directive_23( data_stack, location_stack, @@ -6105,7 +6039,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 72usize => { + 71usize => { Self::reduce_Directive_24( data_stack, location_stack, @@ -6116,7 +6050,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 73usize => { + 72usize => { Self::reduce_Directive_25( data_stack, location_stack, @@ -6127,7 +6061,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 74usize => { + 73usize => { Self::reduce_Directive_26( data_stack, location_stack, @@ -6138,7 +6072,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 75usize => { + 74usize => { Self::reduce_Directive_27( data_stack, location_stack, @@ -6149,7 +6083,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 76usize => { + 75usize => { Self::reduce_Directive_28( data_stack, location_stack, @@ -6160,7 +6094,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 77usize => { + 76usize => { Self::reduce_Directive_29( data_stack, location_stack, @@ -6171,7 +6105,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 78usize => { + 77usize => { Self::reduce_GrammarLine_0( data_stack, location_stack, @@ -6182,7 +6116,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 81usize => { + 80usize => { Self::reduce__TokenMappedPlus15_0( data_stack, location_stack, @@ -6193,7 +6127,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 82usize => { + 81usize => { Self::reduce__TokenMappedPlus15_1( data_stack, location_stack, @@ -6204,7 +6138,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 83usize => { + 82usize => { Self::reduce__TokenMappedStar16_0( data_stack, location_stack, @@ -6215,7 +6149,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 84usize => { + 83usize => { Self::reduce__TokenMappedStar16_1( data_stack, location_stack, @@ -6226,7 +6160,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 85usize => { + 84usize => { Self::reduce__PrecDefPlus17_0( data_stack, location_stack, @@ -6237,7 +6171,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 86usize => { + 85usize => { Self::reduce__PrecDefPlus17_1( data_stack, location_stack, @@ -6248,7 +6182,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 87usize => { + 86usize => { Self::reduce__PrecDefStar18_0( data_stack, location_stack, @@ -6259,7 +6193,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 88usize => { + 87usize => { Self::reduce__PrecDefStar18_1( data_stack, location_stack, @@ -6270,7 +6204,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 89usize => { + 88usize => { Self::reduce__caretQuestion19_0( data_stack, location_stack, @@ -6281,7 +6215,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 90usize => { + 89usize => { Self::reduce__caretQuestion19_1( data_stack, location_stack, @@ -6292,7 +6226,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 91usize => { + 90usize => { Self::reduce__TerminalSetItemPlus20_0( data_stack, location_stack, @@ -6303,7 +6237,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 92usize => { + 91usize => { Self::reduce__TerminalSetItemPlus20_1( data_stack, location_stack, @@ -6314,7 +6248,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 93usize => { + 92usize => { Self::reduce__TerminalSetItemStar21_0( data_stack, location_stack, @@ -6325,7 +6259,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 94usize => { + 93usize => { Self::reduce__TerminalSetItemStar21_1( data_stack, location_stack, @@ -6336,7 +6270,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 95usize => { + 94usize => { Self::reduce__PatternPlus22_0( data_stack, location_stack, @@ -6347,7 +6281,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 96usize => { + 95usize => { Self::reduce__PatternPlus22_1( data_stack, location_stack, @@ -6358,7 +6292,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 97usize => { + 96usize => { Self::reduce__PatternStar23_0( data_stack, location_stack, @@ -6369,7 +6303,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 98usize => { + 97usize => { Self::reduce__PatternStar23_1( data_stack, location_stack, @@ -6380,7 +6314,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 99usize => { + 98usize => { Self::reduce___PatternStar23SepPlus24_0( data_stack, location_stack, @@ -6391,7 +6325,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 100usize => { + 99usize => { Self::reduce___PatternStar23SepPlus24_1( data_stack, location_stack, @@ -6402,7 +6336,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 101usize => { + 100usize => { Self::reduce__commaQuestion25_0( data_stack, location_stack, @@ -6413,7 +6347,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 102usize => { + 101usize => { Self::reduce__commaQuestion25_1( data_stack, location_stack, @@ -6424,7 +6358,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 146usize => { + 144usize => { Self::reduce___TermSet26Plus27_0( data_stack, location_stack, @@ -6435,7 +6369,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 147usize => { + 145usize => { Self::reduce___TermSet26Plus27_1( data_stack, location_stack, @@ -6446,7 +6380,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 148usize => { + 146usize => { Self::reduce__IdentOrLiteralPlus28_0( data_stack, location_stack, @@ -6457,7 +6391,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 149usize => { + 147usize => { Self::reduce__IdentOrLiteralPlus28_1( data_stack, location_stack, @@ -6468,7 +6402,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 150usize => { + 148usize => { Self::reduce__GrammarLinePlus29_0( data_stack, location_stack, @@ -6479,7 +6413,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 151usize => { + 149usize => { Self::reduce__GrammarLinePlus29_1( data_stack, location_stack, @@ -6521,7 +6455,7 @@ impl ::rusty_lr_core::parser::Parser for GrammarParser { fn precedence_types(level: u8) -> Option<::rusty_lr_core::rule::ReduceType> { #[allow(unreachable_patterns)] match level { - 0..=2 => Some(::rusty_lr_core::rule::ReduceType::Left), + 0..=1 => Some(::rusty_lr_core::rule::ReduceType::Left), _ => None, } } @@ -6533,24 +6467,24 @@ impl ::rusty_lr_core::parser::Parser for GrammarParser { 0u32, 1u32, 1u32, 2u32, 2u32, 3u32, 4u32, 4u32, 4u32, 4u32, 4u32, 5u32, 5u32, 6u32, 6u32, 6u32, 6u32, 6u32, 6u32, 6u32, 6u32, 6u32, 7u32, 7u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, - 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 9u32, - 9u32, 10u32, 10u32, 10u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, + 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 9u32, 9u32, + 10u32, 10u32, 10u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, - 11u32, 11u32, 11u32, 11u32, 12u32, 12u32, 13u32, 14u32, 14u32, 15u32, - 15u32, 16u32, 16u32, 17u32, 17u32, 18u32, 18u32, 19u32, 19u32, 20u32, - 20u32, 21u32, 21u32, 22u32, 22u32, 23u32, 23u32, 24u32, 24u32, 25u32, + 11u32, 11u32, 11u32, 12u32, 12u32, 13u32, 14u32, 14u32, 15u32, 15u32, + 16u32, 16u32, 17u32, 17u32, 18u32, 18u32, 19u32, 19u32, 20u32, 20u32, + 21u32, 21u32, 22u32, 22u32, 23u32, 23u32, 24u32, 24u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, - 25u32, 25u32, 26u32, 26u32, 27u32, 27u32, 28u32, 28u32, 29u32, + 26u32, 26u32, 27u32, 27u32, 28u32, 28u32, 29u32, ]; static RULE_PRECEDENCES: &[u32] = &[ 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 1u32, 1u32, 0u32, 1u32, 1u32, 0u32, 1u32, 1u32, - 0u32, 0u32, 0u32, 9u32, 9u32, 9u32, 9u32, 0u32, 5u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 1u32, 0u32, 9u32, 9u32, 0u32, 0u32, 0u32, + 0u32, 0u32, 0u32, 5u32, 5u32, 5u32, 5u32, 0u32, 0u32, 0u32, 0u32, + 0u32, 0u32, 0u32, 1u32, 0u32, 5u32, 5u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, @@ -6560,64 +6494,63 @@ impl ::rusty_lr_core::parser::Parser for GrammarParser { 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, + 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, ]; static RULE_TOKENS_DATA: &[u32] = &[ 0u32, 3u32, 4u32, 5u32, 74u32, 30u32, 5u32, 6u32, 7u32, 7u32, 31u32, - 35u32, 19u32, 8u32, 62u32, 21u32, 8u32, 62u32, 88u32, 8u32, 70u32, - 20u32, 8u32, 70u32, 88u32, 8u32, 88u32, 17u32, 0u32, 10u32, 17u32, - 0u32, 0u32, 84u32, 0u32, 0u32, 84u32, 88u32, 26u32, 26u32, 84u32, - 26u32, 26u32, 84u32, 88u32, 22u32, 22u32, 84u32, 22u32, 22u32, 84u32, - 88u32, 38u32, 37u32, 41u32, 40u32, 14u32, 0u32, 17u32, 76u32, 17u32, - 78u32, 17u32, 80u32, 17u32, 82u32, 15u32, 17u32, 86u32, 17u32, 34u32, - 47u32, 36u32, 34u32, 88u32, 36u32, 22u32, 24u32, 26u32, 28u32, 17u32, - 84u32, 17u32, 16u32, 0u32, 34u32, 17u32, 18u32, 17u32, 49u32, 36u32, - 16u32, 0u32, 34u32, 17u32, 18u32, 17u32, 18u32, 76u32, 36u32, 16u32, - 0u32, 34u32, 17u32, 18u32, 17u32, 18u32, 78u32, 36u32, 16u32, 0u32, - 34u32, 17u32, 18u32, 17u32, 88u32, 36u32, 16u32, 0u32, 34u32, 17u32, - 18u32, 17u32, 18u32, 88u32, 36u32, 32u32, 0u32, 22u32, 26u32, 8u32, - 46u32, 0u32, 53u32, 74u32, 8u32, 46u32, 0u32, 74u32, 8u32, 46u32, - 88u32, 74u32, 8u32, 48u32, 0u32, 74u32, 8u32, 48u32, 88u32, 74u32, - 8u32, 50u32, 53u32, 74u32, 8u32, 50u32, 74u32, 8u32, 52u32, 53u32, - 74u32, 8u32, 52u32, 74u32, 8u32, 42u32, 55u32, 74u32, 8u32, 42u32, - 88u32, 74u32, 8u32, 44u32, 55u32, 74u32, 8u32, 44u32, 88u32, 74u32, - 8u32, 64u32, 55u32, 74u32, 8u32, 64u32, 88u32, 74u32, 8u32, 54u32, - 53u32, 74u32, 8u32, 54u32, 74u32, 8u32, 56u32, 53u32, 74u32, 8u32, - 56u32, 74u32, 8u32, 60u32, 74u32, 8u32, 60u32, 88u32, 74u32, 8u32, - 58u32, 74u32, 8u32, 58u32, 88u32, 74u32, 8u32, 66u32, 74u32, 8u32, - 66u32, 88u32, 74u32, 8u32, 68u32, 74u32, 8u32, 68u32, 88u32, 74u32, - 8u32, 72u32, 53u32, 74u32, 8u32, 72u32, 74u32, 8u32, 88u32, 74u32, - 1u32, 23u32, 57u32, 11u32, 29u32, 11u32, 29u32, 9u32, 33u32, 9u32, - 33u32, 12u32, 13u32, 39u32, 13u32, 39u32, 17u32, 43u32, 17u32, 43u32, - 45u32, 47u32, 6u32, 45u32, 18u32, 0u32, 4u32, 6u32, 8u32, 10u32, - 76u32, 78u32, 80u32, 12u32, 84u32, 82u32, 86u32, 14u32, 16u32, 18u32, - 20u32, 22u32, 24u32, 26u32, 28u32, 2u32, 30u32, 32u32, 34u32, 36u32, - 38u32, 40u32, 42u32, 44u32, 46u32, 48u32, 50u32, 52u32, 54u32, 56u32, - 58u32, 60u32, 62u32, 64u32, 66u32, 68u32, 70u32, 72u32, 51u32, 53u32, - 51u32, 21u32, 55u32, 21u32, 25u32, 25u32, 57u32, 27u32, 90u32, + 35u32, 19u32, 8u32, 62u32, 21u32, 8u32, 62u32, 86u32, 8u32, 70u32, + 20u32, 8u32, 70u32, 86u32, 8u32, 86u32, 17u32, 0u32, 10u32, 17u32, + 0u32, 0u32, 84u32, 0u32, 0u32, 84u32, 86u32, 26u32, 26u32, 84u32, + 26u32, 26u32, 84u32, 86u32, 22u32, 22u32, 84u32, 22u32, 22u32, 84u32, + 86u32, 38u32, 37u32, 41u32, 40u32, 14u32, 0u32, 17u32, 76u32, 17u32, + 78u32, 17u32, 80u32, 17u32, 82u32, 15u32, 34u32, 47u32, 36u32, 34u32, + 86u32, 36u32, 22u32, 24u32, 26u32, 28u32, 17u32, 84u32, 17u32, 16u32, + 0u32, 34u32, 17u32, 18u32, 17u32, 49u32, 36u32, 16u32, 0u32, 34u32, + 17u32, 18u32, 17u32, 18u32, 76u32, 36u32, 16u32, 0u32, 34u32, 17u32, + 18u32, 17u32, 18u32, 78u32, 36u32, 16u32, 0u32, 34u32, 17u32, 18u32, + 17u32, 86u32, 36u32, 16u32, 0u32, 34u32, 17u32, 18u32, 17u32, 18u32, + 86u32, 36u32, 32u32, 0u32, 22u32, 26u32, 8u32, 46u32, 0u32, 53u32, + 74u32, 8u32, 46u32, 0u32, 74u32, 8u32, 46u32, 86u32, 74u32, 8u32, + 48u32, 0u32, 74u32, 8u32, 48u32, 86u32, 74u32, 8u32, 50u32, 53u32, + 74u32, 8u32, 50u32, 74u32, 8u32, 52u32, 53u32, 74u32, 8u32, 52u32, + 74u32, 8u32, 42u32, 55u32, 74u32, 8u32, 42u32, 86u32, 74u32, 8u32, + 44u32, 55u32, 74u32, 8u32, 44u32, 86u32, 74u32, 8u32, 64u32, 55u32, + 74u32, 8u32, 64u32, 86u32, 74u32, 8u32, 54u32, 53u32, 74u32, 8u32, + 54u32, 74u32, 8u32, 56u32, 53u32, 74u32, 8u32, 56u32, 74u32, 8u32, + 60u32, 74u32, 8u32, 60u32, 86u32, 74u32, 8u32, 58u32, 74u32, 8u32, + 58u32, 86u32, 74u32, 8u32, 66u32, 74u32, 8u32, 66u32, 86u32, 74u32, + 8u32, 68u32, 74u32, 8u32, 68u32, 86u32, 74u32, 8u32, 72u32, 53u32, + 74u32, 8u32, 72u32, 74u32, 8u32, 86u32, 74u32, 1u32, 23u32, 57u32, + 11u32, 29u32, 11u32, 29u32, 9u32, 33u32, 9u32, 33u32, 12u32, 13u32, + 39u32, 13u32, 39u32, 17u32, 43u32, 17u32, 43u32, 45u32, 47u32, 6u32, + 45u32, 18u32, 0u32, 4u32, 6u32, 8u32, 10u32, 76u32, 78u32, 80u32, + 12u32, 84u32, 82u32, 14u32, 16u32, 18u32, 20u32, 22u32, 24u32, 26u32, + 28u32, 2u32, 30u32, 32u32, 34u32, 36u32, 38u32, 40u32, 42u32, 44u32, + 46u32, 48u32, 50u32, 52u32, 54u32, 56u32, 58u32, 60u32, 62u32, 64u32, + 66u32, 68u32, 70u32, 72u32, 51u32, 53u32, 51u32, 21u32, 55u32, 21u32, + 25u32, 25u32, 57u32, 27u32, 88u32, ]; static RULE_TOKENS_OFFSETS: &[u32] = &[ 0u32, 5u32, 6u32, 6u32, 9u32, 10u32, 13u32, 16u32, 19u32, 22u32, 25u32, 27u32, 28u32, 31u32, 32u32, 35u32, 38u32, 39u32, 42u32, 45u32, 46u32, 49u32, 52u32, 56u32, 57u32, 58u32, 60u32, 62u32, 64u32, 66u32, - 67u32, 70u32, 73u32, 76u32, 77u32, 78u32, 79u32, 80u32, 83u32, 91u32, - 100u32, 109u32, 117u32, 126u32, 127u32, 127u32, 128u32, 129u32, - 130u32, 135u32, 139u32, 143u32, 147u32, 151u32, 155u32, 158u32, - 162u32, 165u32, 169u32, 173u32, 177u32, 181u32, 185u32, 189u32, - 193u32, 196u32, 200u32, 203u32, 206u32, 210u32, 213u32, 217u32, - 220u32, 224u32, 227u32, 231u32, 235u32, 238u32, 241u32, 242u32, - 243u32, 244u32, 245u32, 247u32, 248u32, 248u32, 249u32, 251u32, - 252u32, 252u32, 253u32, 253u32, 254u32, 256u32, 257u32, 257u32, - 258u32, 260u32, 261u32, 261u32, 262u32, 265u32, 266u32, 266u32, - 267u32, 268u32, 269u32, 270u32, 271u32, 272u32, 273u32, 274u32, - 275u32, 276u32, 277u32, 278u32, 279u32, 280u32, 281u32, 282u32, - 283u32, 284u32, 285u32, 286u32, 287u32, 288u32, 289u32, 290u32, - 291u32, 292u32, 293u32, 294u32, 295u32, 296u32, 297u32, 298u32, - 299u32, 300u32, 301u32, 302u32, 303u32, 304u32, 305u32, 306u32, - 307u32, 308u32, 309u32, 310u32, 312u32, 313u32, 315u32, 316u32, - 318u32, 320u32, + 67u32, 70u32, 73u32, 74u32, 75u32, 76u32, 77u32, 80u32, 88u32, 97u32, + 106u32, 114u32, 123u32, 124u32, 124u32, 125u32, 126u32, 127u32, + 132u32, 136u32, 140u32, 144u32, 148u32, 152u32, 155u32, 159u32, + 162u32, 166u32, 170u32, 174u32, 178u32, 182u32, 186u32, 190u32, + 193u32, 197u32, 200u32, 203u32, 207u32, 210u32, 214u32, 217u32, + 221u32, 224u32, 228u32, 232u32, 235u32, 238u32, 239u32, 240u32, + 241u32, 242u32, 244u32, 245u32, 245u32, 246u32, 248u32, 249u32, + 249u32, 250u32, 250u32, 251u32, 253u32, 254u32, 254u32, 255u32, + 257u32, 258u32, 258u32, 259u32, 262u32, 263u32, 263u32, 264u32, + 265u32, 266u32, 267u32, 268u32, 269u32, 270u32, 271u32, 272u32, + 273u32, 274u32, 275u32, 276u32, 277u32, 278u32, 279u32, 280u32, + 281u32, 282u32, 283u32, 284u32, 285u32, 286u32, 287u32, 288u32, + 289u32, 290u32, 291u32, 292u32, 293u32, 294u32, 295u32, 296u32, + 297u32, 298u32, 299u32, 300u32, 301u32, 302u32, 303u32, 304u32, + 305u32, 306u32, 308u32, 309u32, 311u32, 312u32, 314u32, 316u32, ]; - let num_rules = 153usize; + let num_rules = 151usize; let mut rules = Vec::with_capacity(num_rules); for i in 0..num_rules { let name = GrammarNonTerminals::from_usize(RULE_NAMES[i] as usize); @@ -6673,7 +6606,7 @@ impl ::rusty_lr_core::parser::Parser for GrammarParser { STATES .get_or_init(|| { static SHIFT_TERM_DATA: &[u32] = &[ - 2147516416u32, 2150694916u32, 2147549199u32, 2147614722u32, + 2147516416u32, 2150629380u32, 2147549199u32, 2147614722u32, 2147647488u32, 2147745799u32, 2147778568u32, 2147876875u32, 2147909644u32, 2147942413u32, 2147975182u32, 2148007953u32, 2148040723u32, 2147680261u32, 2147713024u32, 2147745799u32, @@ -6683,239 +6616,230 @@ impl ::rusty_lr_core::parser::Parser for GrammarParser { 2147876875u32, 2147909644u32, 2147942413u32, 2147975182u32, 2148007953u32, 2148040723u32, 2147713024u32, 2147745799u32, 2147778568u32, 2147876875u32, 2147909644u32, 2147942413u32, - 2147975182u32, 2148007953u32, 2148040723u32, 2148794412u32, + 2147975182u32, 2148007953u32, 2148040723u32, 2148794411u32, 2148073478u32, 2148139008u32, 2148270091u32, 2148401165u32, - 2148171818u32, 2148204544u32, 2148237356u32, 2148302890u32, - 2148335627u32, 2148368428u32, 2148433962u32, 2148466701u32, - 2148499500u32, 2148139008u32, 2148270091u32, 2148401165u32, + 2148171818u32, 2148204544u32, 2148237355u32, 2148302890u32, + 2148335627u32, 2148368427u32, 2148433962u32, 2148466701u32, + 2148499499u32, 2148139008u32, 2148270091u32, 2148401165u32, 2148663316u32, 2148761609u32, 2148892710u32, 2148925479u32, - 2148958248u32, 2148991017u32, 2149023786u32, 2149089323u32, - 2147713024u32, 2147745799u32, 2147778568u32, 2147876875u32, - 2147909644u32, 2147942413u32, 2147975182u32, 2148007953u32, - 2148040723u32, 2148827154u32, 2148892710u32, 2148925479u32, - 2148958248u32, 2148991017u32, 2149023786u32, 2149089323u32, - 2147713024u32, 2147745799u32, 2147778568u32, 2147876875u32, - 2147909644u32, 2147942413u32, 2147975182u32, 2148007953u32, - 2148040723u32, 2148892710u32, 2148925479u32, 2148958248u32, - 2148991017u32, 2149089323u32, 2147713024u32, 2147745799u32, + 2148958248u32, 2148991017u32, 2149023786u32, 2147713024u32, + 2147745799u32, 2147778568u32, 2147876875u32, 2147909644u32, + 2147942413u32, 2147975182u32, 2148007953u32, 2148040723u32, + 2148827154u32, 2148892710u32, 2148925479u32, 2148958248u32, + 2148991017u32, 2149023786u32, 2147713024u32, 2147745799u32, 2147778568u32, 2147876875u32, 2147909644u32, 2147942413u32, 2147975182u32, 2148007953u32, 2148040723u32, 2148892710u32, 2148925479u32, 2148958248u32, 2148991017u32, 2147713024u32, 2147745799u32, 2147778568u32, 2147876875u32, 2147909644u32, 2147942413u32, 2147975182u32, 2148007953u32, 2148040723u32, 2148892710u32, 2148925479u32, 2148958248u32, 2148991017u32, - 2149023786u32, 2149089323u32, 2149285891u32, 2149351442u32, - 2147713024u32, 2147745799u32, 2147778568u32, 2147876875u32, - 2147909644u32, 2147942413u32, 2147975182u32, 2148007953u32, - 2148040723u32, 2149416969u32, 2148892710u32, 2148925479u32, - 2148958248u32, 2148991017u32, 2149023786u32, 2149089323u32, - 2149646380u32, 2149449766u32, 2149515303u32, 2149580844u32, - 2149482514u32, 2149548050u32, 2149613586u32, 2149679122u32, - 2149744658u32, 2148892710u32, 2148925479u32, 2148958248u32, - 2148991017u32, 2149023786u32, 2149089323u32, 2149842947u32, - 3145765u32, 2147647488u32, 2147745799u32, 2147778568u32, - 2147876875u32, 2147909644u32, 2147942413u32, 2147975182u32, - 2148007953u32, 2148040723u32, 2148892710u32, 2148925479u32, - 2148958248u32, 2148991017u32, 2149023786u32, 2149089323u32, + 2149023786u32, 2149220355u32, 2149285906u32, 2147713024u32, + 2147745799u32, 2147778568u32, 2147876875u32, 2147909644u32, + 2147942413u32, 2147975182u32, 2148007953u32, 2148040723u32, + 2149351433u32, 2148892710u32, 2148925479u32, 2148958248u32, + 2148991017u32, 2149023786u32, 2149580843u32, 2149384230u32, + 2149449767u32, 2149515307u32, 2149416978u32, 2149482514u32, + 2149548050u32, 2149613586u32, 2149679122u32, 2148892710u32, + 2148925479u32, 2148958248u32, 2148991017u32, 2149023786u32, + 2149777411u32, 3080229u32, 2147647488u32, 2147745799u32, + 2147778568u32, 2147876875u32, 2147909644u32, 2147942413u32, + 2147975182u32, 2148007953u32, 2148040723u32, 2148892710u32, + 2148925479u32, 2148958248u32, 2148991017u32, 2149023786u32, 2147647488u32, 2147745799u32, 2147778568u32, 2147876875u32, 2147909644u32, 2147942413u32, 2147975182u32, 2148007953u32, - 2148040723u32, 2150072324u32, 2150105119u32, 2150301731u32, - 2150400044u32, 2150137856u32, 2150170635u32, 2150203405u32, - 2150236204u32, 2150334474u32, 2150367276u32, 2150072324u32, - 2150563856u32, 2150727701u32, 2150957078u32, 2151120919u32, - 2151415832u32, 2151579673u32, 2151710746u32, 2151841819u32, - 2151972892u32, 2152103965u32, 2152235038u32, 2152366112u32, - 2152529953u32, 2152661026u32, 2152792100u32, 2152923180u32, - 2150137856u32, 2150170635u32, 2150203405u32, 2150760492u32, - 3309605u32, 2150137856u32, 2150170635u32, 2150203405u32, 3407909u32, - 2150137856u32, 2150170635u32, 2150203405u32, 2150989868u32, - 3538981u32, 2150137856u32, 2150170635u32, 2150203405u32, 3604517u32, - 2151153664u32, 2151350316u32, 2151219200u32, 2151219201u32, - 2151219202u32, 2151219203u32, 2151219204u32, 2151219205u32, - 2151219206u32, 2151219207u32, 2151219208u32, 2151219209u32, - 2151219210u32, 2151219211u32, 2151219212u32, 2151219213u32, - 2151219214u32, 2151219215u32, 2151219216u32, 2151219217u32, - 2151219218u32, 2151219219u32, 2151219220u32, 2151219221u32, - 2151219222u32, 2151219223u32, 2151219224u32, 2151219225u32, - 2151219226u32, 2151219227u32, 2151219228u32, 2151219229u32, - 2151219230u32, 2151219231u32, 2151219232u32, 2151219233u32, - 2151219234u32, 2151219235u32, 2151219236u32, 3702821u32, - 2151219238u32, 2151219239u32, 2151219240u32, 2151219241u32, - 2151219242u32, 2151219243u32, 2151317504u32, 2151317505u32, - 2151317506u32, 2151317507u32, 2151317508u32, 2151317509u32, - 2151317510u32, 2151317511u32, 2151317512u32, 2151317513u32, - 2151317514u32, 2151317515u32, 2151317516u32, 2151317517u32, - 2151317518u32, 2151317519u32, 2151317520u32, 2151317521u32, - 2151317522u32, 2151317523u32, 2151317524u32, 2151317525u32, - 2151317526u32, 2151317527u32, 2151317528u32, 2151317529u32, - 2151317530u32, 2151317531u32, 2151317532u32, 2151317533u32, - 2151317534u32, 2151317535u32, 2151317536u32, 2151317537u32, - 2151317538u32, 2151317539u32, 2151317540u32, 3801125u32, - 2151317542u32, 2151317543u32, 2151317544u32, 2151317545u32, - 2151317546u32, 2151317547u32, 3899429u32, 2151448576u32, - 2151514156u32, 3997733u32, 4063269u32, 2151219200u32, 2151219201u32, - 2151219202u32, 2151219203u32, 2151219204u32, 2151219205u32, - 2151219206u32, 2151219207u32, 2151219208u32, 2151219209u32, - 2151219210u32, 2151219211u32, 2151219212u32, 2151219213u32, - 2151219214u32, 2151219215u32, 2151219216u32, 2151219217u32, - 2151219218u32, 2151219219u32, 2151219220u32, 2151219221u32, - 2151219222u32, 2151219223u32, 2151219224u32, 2151219225u32, - 2151219226u32, 2151219227u32, 2151219228u32, 2151219229u32, - 2151219230u32, 2151219231u32, 2151219232u32, 2151219233u32, - 2151219234u32, 2151219235u32, 2151219236u32, 4128805u32, - 2151219238u32, 2151219239u32, 2151219240u32, 2151219241u32, - 2151219242u32, 2151219243u32, 2151317504u32, 2151317505u32, - 2151317506u32, 2151317507u32, 2151317508u32, 2151317509u32, - 2151317510u32, 2151317511u32, 2151317512u32, 2151317513u32, - 2151317514u32, 2151317515u32, 2151317516u32, 2151317517u32, - 2151317518u32, 2151317519u32, 2151317520u32, 2151317521u32, - 2151317522u32, 2151317523u32, 2151317524u32, 2151317525u32, - 2151317526u32, 2151317527u32, 2151317528u32, 2151317529u32, - 2151317530u32, 2151317531u32, 2151317532u32, 2151317533u32, - 2151317534u32, 2151317535u32, 2151317536u32, 2151317537u32, - 2151317538u32, 2151317539u32, 2151317540u32, 4194341u32, - 2151317542u32, 2151317543u32, 2151317544u32, 2151317545u32, - 2151317546u32, 2151317547u32, 2151219200u32, 2151219201u32, - 2151219202u32, 2151219203u32, 2151219204u32, 2151219205u32, - 2151219206u32, 2151219207u32, 2151219208u32, 2151219209u32, - 2151219210u32, 2151219211u32, 2151219212u32, 2151219213u32, - 2151219214u32, 2151219215u32, 2151219216u32, 2151219217u32, - 2151219218u32, 2151219219u32, 2151219220u32, 2151219221u32, - 2151219222u32, 2151219223u32, 2151219224u32, 2151219225u32, - 2151219226u32, 2151219227u32, 2151219228u32, 2151219229u32, - 2151219230u32, 2151219231u32, 2151219232u32, 2151219233u32, - 2151219234u32, 2151219235u32, 2151219236u32, 4259877u32, - 2151219238u32, 2151219239u32, 2151219240u32, 2151219241u32, - 2151219242u32, 2151219243u32, 2151317504u32, 2151317505u32, - 2151317506u32, 2151317507u32, 2151317508u32, 2151317509u32, - 2151317510u32, 2151317511u32, 2151317512u32, 2151317513u32, - 2151317514u32, 2151317515u32, 2151317516u32, 2151317517u32, - 2151317518u32, 2151317519u32, 2151317520u32, 2151317521u32, - 2151317522u32, 2151317523u32, 2151317524u32, 2151317525u32, - 2151317526u32, 2151317527u32, 2151317528u32, 2151317529u32, - 2151317530u32, 2151317531u32, 2151317532u32, 2151317533u32, - 2151317534u32, 2151317535u32, 2151317536u32, 2151317537u32, - 2151317538u32, 2151317539u32, 2151317540u32, 4325413u32, - 2151317542u32, 2151317543u32, 2151317544u32, 2151317545u32, - 2151317546u32, 2151317547u32, 2151219200u32, 2151219201u32, - 2151219202u32, 2151219203u32, 2151219204u32, 2151219205u32, - 2151219206u32, 2151219207u32, 2151219208u32, 2151219209u32, - 2151219210u32, 2151219211u32, 2151219212u32, 2151219213u32, - 2151219214u32, 2151219215u32, 2151219216u32, 2151219217u32, - 2151219218u32, 2151219219u32, 2151219220u32, 2151219221u32, - 2151219222u32, 2151219223u32, 2151219224u32, 2151219225u32, - 2151219226u32, 2151219227u32, 2151219228u32, 2151219229u32, - 2151219230u32, 2151219231u32, 2151219232u32, 2151219233u32, - 2151219234u32, 2151219235u32, 2151219236u32, 4390949u32, - 2151219238u32, 2151219239u32, 2151219240u32, 2151219241u32, - 2151219242u32, 2151219243u32, 2151317504u32, 2151317505u32, - 2151317506u32, 2151317507u32, 2151317508u32, 2151317509u32, - 2151317510u32, 2151317511u32, 2151317512u32, 2151317513u32, - 2151317514u32, 2151317515u32, 2151317516u32, 2151317517u32, - 2151317518u32, 2151317519u32, 2151317520u32, 2151317521u32, - 2151317522u32, 2151317523u32, 2151317524u32, 2151317525u32, - 2151317526u32, 2151317527u32, 2151317528u32, 2151317529u32, - 2151317530u32, 2151317531u32, 2151317532u32, 2151317533u32, - 2151317534u32, 2151317535u32, 2151317536u32, 2151317537u32, - 2151317538u32, 2151317539u32, 2151317540u32, 4456485u32, - 2151317542u32, 2151317543u32, 2151317544u32, 2151317545u32, - 2151317546u32, 2151317547u32, 2151219200u32, 2151219201u32, - 2151219202u32, 2151219203u32, 2151219204u32, 2151219205u32, - 2151219206u32, 2151219207u32, 2151219208u32, 2151219209u32, - 2151219210u32, 2151219211u32, 2151219212u32, 2151219213u32, - 2151219214u32, 2151219215u32, 2151219216u32, 2151219217u32, - 2151219218u32, 2151219219u32, 2151219220u32, 2151219221u32, - 2151219222u32, 2151219223u32, 2151219224u32, 2151219225u32, - 2151219226u32, 2151219227u32, 2151219228u32, 2151219229u32, - 2151219230u32, 2151219231u32, 2151219232u32, 2151219233u32, - 2151219234u32, 2151219235u32, 2151219236u32, 4522021u32, - 2151219238u32, 2151219239u32, 2151219240u32, 2151219241u32, - 2151219242u32, 2151219243u32, 2151317504u32, 2151317505u32, - 2151317506u32, 2151317507u32, 2151317508u32, 2151317509u32, - 2151317510u32, 2151317511u32, 2151317512u32, 2151317513u32, - 2151317514u32, 2151317515u32, 2151317516u32, 2151317517u32, - 2151317518u32, 2151317519u32, 2151317520u32, 2151317521u32, - 2151317522u32, 2151317523u32, 2151317524u32, 2151317525u32, - 2151317526u32, 2151317527u32, 2151317528u32, 2151317529u32, - 2151317530u32, 2151317531u32, 2151317532u32, 2151317533u32, - 2151317534u32, 2151317535u32, 2151317536u32, 2151317537u32, - 2151317538u32, 2151317539u32, 2151317540u32, 4587557u32, - 2151317542u32, 2151317543u32, 2151317544u32, 2151317545u32, - 2151317546u32, 2151317547u32, 4653093u32, 2152169516u32, 4718629u32, - 4784165u32, 2152300588u32, 4849701u32, 2150137856u32, 2150170635u32, - 2150203405u32, 2152398892u32, 4948005u32, 2150137856u32, - 2150170635u32, 2150203405u32, 5013541u32, 5079077u32, 2152595500u32, - 5144613u32, 5210149u32, 2152726572u32, 5275685u32, 2151219200u32, - 2151219201u32, 2151219202u32, 2151219203u32, 2151219204u32, - 2151219205u32, 2151219206u32, 2151219207u32, 2151219208u32, - 2151219209u32, 2151219210u32, 2151219211u32, 2151219212u32, - 2151219213u32, 2151219214u32, 2151219215u32, 2151219216u32, - 2151219217u32, 2151219218u32, 2151219219u32, 2151219220u32, - 2151219221u32, 2151219222u32, 2151219223u32, 2151219224u32, - 2151219225u32, 2151219226u32, 2151219227u32, 2151219228u32, - 2151219229u32, 2151219230u32, 2151219231u32, 2151219232u32, - 2151219233u32, 2151219234u32, 2151219235u32, 2151219236u32, - 5341221u32, 2151219238u32, 2151219239u32, 2151219240u32, - 2151219241u32, 2151219242u32, 2151219243u32, 2151317504u32, - 2151317505u32, 2151317506u32, 2151317507u32, 2151317508u32, - 2151317509u32, 2151317510u32, 2151317511u32, 2151317512u32, - 2151317513u32, 2151317514u32, 2151317515u32, 2151317516u32, - 2151317517u32, 2151317518u32, 2151317519u32, 2151317520u32, - 2151317521u32, 2151317522u32, 2151317523u32, 2151317524u32, - 2151317525u32, 2151317526u32, 2151317527u32, 2151317528u32, - 2151317529u32, 2151317530u32, 2151317531u32, 2151317532u32, - 2151317533u32, 2151317534u32, 2151317535u32, 2151317536u32, - 2151317537u32, 2151317538u32, 2151317539u32, 2151317540u32, - 5406757u32, 2151317542u32, 2151317543u32, 2151317544u32, - 2151317545u32, 2151317546u32, 2151317547u32, 5472293u32, - 2147516416u32, 2150694916u32, 2153119789u32, + 2148040723u32, 2150006788u32, 2150039583u32, 2150236195u32, + 2150334507u32, 2150072320u32, 2150105099u32, 2150137869u32, + 2150170667u32, 2150268938u32, 2150301739u32, 2150006788u32, + 2150498320u32, 2150662165u32, 2150891542u32, 2151055383u32, + 2151350296u32, 2151514137u32, 2151645210u32, 2151776283u32, + 2151907356u32, 2152038429u32, 2152169502u32, 2152300576u32, + 2152464417u32, 2152595490u32, 2152726564u32, 2152857643u32, + 2150072320u32, 2150105099u32, 2150137869u32, 2150694955u32, + 3244069u32, 2150072320u32, 2150105099u32, 2150137869u32, 3342373u32, + 2150072320u32, 2150105099u32, 2150137869u32, 2150924331u32, + 3473445u32, 2150072320u32, 2150105099u32, 2150137869u32, 3538981u32, + 2151088128u32, 2151284779u32, 2151153664u32, 2151153665u32, + 2151153666u32, 2151153667u32, 2151153668u32, 2151153669u32, + 2151153670u32, 2151153671u32, 2151153672u32, 2151153673u32, + 2151153674u32, 2151153675u32, 2151153676u32, 2151153677u32, + 2151153678u32, 2151153679u32, 2151153680u32, 2151153681u32, + 2151153682u32, 2151153683u32, 2151153684u32, 2151153685u32, + 2151153686u32, 2151153687u32, 2151153688u32, 2151153689u32, + 2151153690u32, 2151153691u32, 2151153692u32, 2151153693u32, + 2151153694u32, 2151153695u32, 2151153696u32, 2151153697u32, + 2151153698u32, 2151153699u32, 2151153700u32, 3637285u32, + 2151153702u32, 2151153703u32, 2151153704u32, 2151153705u32, + 2151153706u32, 2151251968u32, 2151251969u32, 2151251970u32, + 2151251971u32, 2151251972u32, 2151251973u32, 2151251974u32, + 2151251975u32, 2151251976u32, 2151251977u32, 2151251978u32, + 2151251979u32, 2151251980u32, 2151251981u32, 2151251982u32, + 2151251983u32, 2151251984u32, 2151251985u32, 2151251986u32, + 2151251987u32, 2151251988u32, 2151251989u32, 2151251990u32, + 2151251991u32, 2151251992u32, 2151251993u32, 2151251994u32, + 2151251995u32, 2151251996u32, 2151251997u32, 2151251998u32, + 2151251999u32, 2151252000u32, 2151252001u32, 2151252002u32, + 2151252003u32, 2151252004u32, 3735589u32, 2151252006u32, + 2151252007u32, 2151252008u32, 2151252009u32, 2151252010u32, + 3833893u32, 2151383040u32, 2151448619u32, 3932197u32, 3997733u32, + 2151153664u32, 2151153665u32, 2151153666u32, 2151153667u32, + 2151153668u32, 2151153669u32, 2151153670u32, 2151153671u32, + 2151153672u32, 2151153673u32, 2151153674u32, 2151153675u32, + 2151153676u32, 2151153677u32, 2151153678u32, 2151153679u32, + 2151153680u32, 2151153681u32, 2151153682u32, 2151153683u32, + 2151153684u32, 2151153685u32, 2151153686u32, 2151153687u32, + 2151153688u32, 2151153689u32, 2151153690u32, 2151153691u32, + 2151153692u32, 2151153693u32, 2151153694u32, 2151153695u32, + 2151153696u32, 2151153697u32, 2151153698u32, 2151153699u32, + 2151153700u32, 4063269u32, 2151153702u32, 2151153703u32, + 2151153704u32, 2151153705u32, 2151153706u32, 2151251968u32, + 2151251969u32, 2151251970u32, 2151251971u32, 2151251972u32, + 2151251973u32, 2151251974u32, 2151251975u32, 2151251976u32, + 2151251977u32, 2151251978u32, 2151251979u32, 2151251980u32, + 2151251981u32, 2151251982u32, 2151251983u32, 2151251984u32, + 2151251985u32, 2151251986u32, 2151251987u32, 2151251988u32, + 2151251989u32, 2151251990u32, 2151251991u32, 2151251992u32, + 2151251993u32, 2151251994u32, 2151251995u32, 2151251996u32, + 2151251997u32, 2151251998u32, 2151251999u32, 2151252000u32, + 2151252001u32, 2151252002u32, 2151252003u32, 2151252004u32, + 4128805u32, 2151252006u32, 2151252007u32, 2151252008u32, + 2151252009u32, 2151252010u32, 2151153664u32, 2151153665u32, + 2151153666u32, 2151153667u32, 2151153668u32, 2151153669u32, + 2151153670u32, 2151153671u32, 2151153672u32, 2151153673u32, + 2151153674u32, 2151153675u32, 2151153676u32, 2151153677u32, + 2151153678u32, 2151153679u32, 2151153680u32, 2151153681u32, + 2151153682u32, 2151153683u32, 2151153684u32, 2151153685u32, + 2151153686u32, 2151153687u32, 2151153688u32, 2151153689u32, + 2151153690u32, 2151153691u32, 2151153692u32, 2151153693u32, + 2151153694u32, 2151153695u32, 2151153696u32, 2151153697u32, + 2151153698u32, 2151153699u32, 2151153700u32, 4194341u32, + 2151153702u32, 2151153703u32, 2151153704u32, 2151153705u32, + 2151153706u32, 2151251968u32, 2151251969u32, 2151251970u32, + 2151251971u32, 2151251972u32, 2151251973u32, 2151251974u32, + 2151251975u32, 2151251976u32, 2151251977u32, 2151251978u32, + 2151251979u32, 2151251980u32, 2151251981u32, 2151251982u32, + 2151251983u32, 2151251984u32, 2151251985u32, 2151251986u32, + 2151251987u32, 2151251988u32, 2151251989u32, 2151251990u32, + 2151251991u32, 2151251992u32, 2151251993u32, 2151251994u32, + 2151251995u32, 2151251996u32, 2151251997u32, 2151251998u32, + 2151251999u32, 2151252000u32, 2151252001u32, 2151252002u32, + 2151252003u32, 2151252004u32, 4259877u32, 2151252006u32, + 2151252007u32, 2151252008u32, 2151252009u32, 2151252010u32, + 2151153664u32, 2151153665u32, 2151153666u32, 2151153667u32, + 2151153668u32, 2151153669u32, 2151153670u32, 2151153671u32, + 2151153672u32, 2151153673u32, 2151153674u32, 2151153675u32, + 2151153676u32, 2151153677u32, 2151153678u32, 2151153679u32, + 2151153680u32, 2151153681u32, 2151153682u32, 2151153683u32, + 2151153684u32, 2151153685u32, 2151153686u32, 2151153687u32, + 2151153688u32, 2151153689u32, 2151153690u32, 2151153691u32, + 2151153692u32, 2151153693u32, 2151153694u32, 2151153695u32, + 2151153696u32, 2151153697u32, 2151153698u32, 2151153699u32, + 2151153700u32, 4325413u32, 2151153702u32, 2151153703u32, + 2151153704u32, 2151153705u32, 2151153706u32, 2151251968u32, + 2151251969u32, 2151251970u32, 2151251971u32, 2151251972u32, + 2151251973u32, 2151251974u32, 2151251975u32, 2151251976u32, + 2151251977u32, 2151251978u32, 2151251979u32, 2151251980u32, + 2151251981u32, 2151251982u32, 2151251983u32, 2151251984u32, + 2151251985u32, 2151251986u32, 2151251987u32, 2151251988u32, + 2151251989u32, 2151251990u32, 2151251991u32, 2151251992u32, + 2151251993u32, 2151251994u32, 2151251995u32, 2151251996u32, + 2151251997u32, 2151251998u32, 2151251999u32, 2151252000u32, + 2151252001u32, 2151252002u32, 2151252003u32, 2151252004u32, + 4390949u32, 2151252006u32, 2151252007u32, 2151252008u32, + 2151252009u32, 2151252010u32, 2151153664u32, 2151153665u32, + 2151153666u32, 2151153667u32, 2151153668u32, 2151153669u32, + 2151153670u32, 2151153671u32, 2151153672u32, 2151153673u32, + 2151153674u32, 2151153675u32, 2151153676u32, 2151153677u32, + 2151153678u32, 2151153679u32, 2151153680u32, 2151153681u32, + 2151153682u32, 2151153683u32, 2151153684u32, 2151153685u32, + 2151153686u32, 2151153687u32, 2151153688u32, 2151153689u32, + 2151153690u32, 2151153691u32, 2151153692u32, 2151153693u32, + 2151153694u32, 2151153695u32, 2151153696u32, 2151153697u32, + 2151153698u32, 2151153699u32, 2151153700u32, 4456485u32, + 2151153702u32, 2151153703u32, 2151153704u32, 2151153705u32, + 2151153706u32, 2151251968u32, 2151251969u32, 2151251970u32, + 2151251971u32, 2151251972u32, 2151251973u32, 2151251974u32, + 2151251975u32, 2151251976u32, 2151251977u32, 2151251978u32, + 2151251979u32, 2151251980u32, 2151251981u32, 2151251982u32, + 2151251983u32, 2151251984u32, 2151251985u32, 2151251986u32, + 2151251987u32, 2151251988u32, 2151251989u32, 2151251990u32, + 2151251991u32, 2151251992u32, 2151251993u32, 2151251994u32, + 2151251995u32, 2151251996u32, 2151251997u32, 2151251998u32, + 2151251999u32, 2151252000u32, 2151252001u32, 2151252002u32, + 2151252003u32, 2151252004u32, 4522021u32, 2151252006u32, + 2151252007u32, 2151252008u32, 2151252009u32, 2151252010u32, + 4587557u32, 2152103979u32, 4653093u32, 4718629u32, 2152235051u32, + 4784165u32, 2150072320u32, 2150105099u32, 2150137869u32, + 2152333355u32, 4882469u32, 2150072320u32, 2150105099u32, + 2150137869u32, 4948005u32, 5013541u32, 2152529963u32, 5079077u32, + 5144613u32, 2152661035u32, 5210149u32, 2151153664u32, 2151153665u32, + 2151153666u32, 2151153667u32, 2151153668u32, 2151153669u32, + 2151153670u32, 2151153671u32, 2151153672u32, 2151153673u32, + 2151153674u32, 2151153675u32, 2151153676u32, 2151153677u32, + 2151153678u32, 2151153679u32, 2151153680u32, 2151153681u32, + 2151153682u32, 2151153683u32, 2151153684u32, 2151153685u32, + 2151153686u32, 2151153687u32, 2151153688u32, 2151153689u32, + 2151153690u32, 2151153691u32, 2151153692u32, 2151153693u32, + 2151153694u32, 2151153695u32, 2151153696u32, 2151153697u32, + 2151153698u32, 2151153699u32, 2151153700u32, 5275685u32, + 2151153702u32, 2151153703u32, 2151153704u32, 2151153705u32, + 2151153706u32, 2151251968u32, 2151251969u32, 2151251970u32, + 2151251971u32, 2151251972u32, 2151251973u32, 2151251974u32, + 2151251975u32, 2151251976u32, 2151251977u32, 2151251978u32, + 2151251979u32, 2151251980u32, 2151251981u32, 2151251982u32, + 2151251983u32, 2151251984u32, 2151251985u32, 2151251986u32, + 2151251987u32, 2151251988u32, 2151251989u32, 2151251990u32, + 2151251991u32, 2151251992u32, 2151251993u32, 2151251994u32, + 2151251995u32, 2151251996u32, 2151251997u32, 2151251998u32, + 2151251999u32, 2151252000u32, 2151252001u32, 2151252002u32, + 2151252003u32, 2151252004u32, 5341221u32, 2151252006u32, + 2151252007u32, 2151252008u32, 2151252009u32, 2151252010u32, + 5406757u32, 2147516416u32, 2150629380u32, 2153054252u32, ]; static SHIFT_TERM_OFFSETS: &[u32] = &[ 0u32, 2u32, 3u32, 3u32, 4u32, 13u32, 14u32, 23u32, 23u32, 23u32, 24u32, 25u32, 34u32, 34u32, 34u32, 34u32, 34u32, 44u32, 45u32, 45u32, 48u32, 49u32, 51u32, 51u32, 51u32, 52u32, 54u32, 54u32, 54u32, 55u32, - 57u32, 57u32, 57u32, 57u32, 60u32, 60u32, 61u32, 61u32, 61u32, 68u32, - 77u32, 78u32, 78u32, 84u32, 84u32, 84u32, 84u32, 84u32, 93u32, 98u32, - 107u32, 111u32, 120u32, 126u32, 126u32, 128u32, 137u32, 137u32, - 137u32, 145u32, 148u32, 149u32, 149u32, 150u32, 150u32, 151u32, - 151u32, 152u32, 152u32, 153u32, 153u32, 159u32, 161u32, 170u32, - 170u32, 170u32, 176u32, 185u32, 185u32, 186u32, 189u32, 193u32, - 193u32, 193u32, 193u32, 193u32, 193u32, 195u32, 195u32, 195u32, - 195u32, 195u32, 196u32, 196u32, 197u32, 197u32, 197u32, 197u32, - 197u32, 212u32, 216u32, 217u32, 217u32, 217u32, 221u32, 221u32, - 221u32, 225u32, 226u32, 226u32, 230u32, 230u32, 232u32, 276u32, - 276u32, 276u32, 320u32, 320u32, 320u32, 321u32, 321u32, 323u32, - 324u32, 324u32, 325u32, 325u32, 369u32, 369u32, 413u32, 413u32, - 457u32, 457u32, 501u32, 501u32, 545u32, 545u32, 589u32, 589u32, - 633u32, 633u32, 677u32, 677u32, 679u32, 679u32, 680u32, 680u32, - 682u32, 682u32, 683u32, 683u32, 687u32, 688u32, 688u32, 692u32, - 692u32, 694u32, 694u32, 695u32, 695u32, 697u32, 697u32, 698u32, - 698u32, 742u32, 742u32, 786u32, 786u32, 787u32, 787u32, 787u32, - 789u32, 789u32, 790u32, 790u32, + 57u32, 57u32, 57u32, 57u32, 60u32, 60u32, 61u32, 61u32, 61u32, 67u32, + 76u32, 77u32, 77u32, 82u32, 82u32, 82u32, 82u32, 82u32, 91u32, 95u32, + 104u32, 109u32, 109u32, 111u32, 120u32, 120u32, 120u32, 127u32, + 130u32, 131u32, 131u32, 132u32, 132u32, 133u32, 133u32, 134u32, + 134u32, 135u32, 135u32, 140u32, 142u32, 151u32, 151u32, 151u32, + 156u32, 165u32, 165u32, 166u32, 169u32, 173u32, 173u32, 173u32, + 173u32, 173u32, 173u32, 175u32, 175u32, 175u32, 175u32, 175u32, + 176u32, 176u32, 177u32, 177u32, 177u32, 177u32, 177u32, 192u32, + 196u32, 197u32, 197u32, 197u32, 201u32, 201u32, 201u32, 205u32, + 206u32, 206u32, 210u32, 210u32, 212u32, 255u32, 255u32, 255u32, + 298u32, 298u32, 298u32, 299u32, 299u32, 301u32, 302u32, 302u32, + 303u32, 303u32, 346u32, 346u32, 389u32, 389u32, 432u32, 432u32, + 475u32, 475u32, 518u32, 518u32, 561u32, 561u32, 604u32, 604u32, + 647u32, 647u32, 649u32, 649u32, 650u32, 650u32, 652u32, 652u32, + 653u32, 653u32, 657u32, 658u32, 658u32, 662u32, 662u32, 664u32, + 664u32, 665u32, 665u32, 667u32, 667u32, 668u32, 668u32, 711u32, + 711u32, 754u32, 754u32, 755u32, 755u32, 755u32, 757u32, 757u32, + 758u32, 758u32, ]; static SHIFT_NONTERM_DATA: &[u32] = &[ - 2152988672u32, 5537803u32, 2153021452u32, 2153086989u32, 5603356u32, - 2147581953u32, 2149810178u32, 2150662147u32, 2149908485u32, - 2148696071u32, 2149941256u32, 2149974030u32, 2150039567u32, - 2148696071u32, 2149777416u32, 2148696071u32, 2148728840u32, - 2148696071u32, 2148859912u32, 2149154837u32, 2149220374u32, - 2149253143u32, 2148106258u32, 2148532230u32, 2148565011u32, - 2148630548u32, 2148597766u32, 2148696071u32, 2149384200u32, + 2152923136u32, 5472267u32, 2152955916u32, 2153021453u32, 5537820u32, + 2147581953u32, 2149744642u32, 2150596611u32, 2149842949u32, + 2148696071u32, 2149875720u32, 2149908494u32, 2149974031u32, + 2148696071u32, 2149711880u32, 2148696071u32, 2148728840u32, + 2148696071u32, 2148859912u32, 2149089301u32, 2149154838u32, + 2149187607u32, 2148106258u32, 2148532230u32, 2148565011u32, + 2148630548u32, 2148597766u32, 2148696071u32, 2149318664u32, 2148696071u32, 2149056520u32, 2148696071u32, 2149122056u32, - 2148696071u32, 2149187592u32, 2148696071u32, 2148859912u32, - 2149154837u32, 2149318678u32, 2149711896u32, 2149875715u32, - 2149908485u32, 2148696071u32, 2149941256u32, 2149974030u32, - 2150039567u32, 2150006789u32, 2148696071u32, 2149941256u32, - 2150432772u32, 2150465552u32, 2150531089u32, 2150268938u32, - 2150498308u32, 2150596617u32, 2150825994u32, 2150858779u32, - 2150924298u32, 2150825994u32, 2151055387u32, 2150924298u32, - 2151219225u32, 2151251994u32, 2151317529u32, 2151219225u32, - 2151645210u32, 2151317529u32, 2151219225u32, 2151776282u32, - 2151317529u32, 2151219225u32, 2151907354u32, 2151317529u32, - 2151219225u32, 2152038426u32, 2151317529u32, 2150825994u32, - 2152464411u32, 2150924298u32, 2151219225u32, 2152857626u32, - 2151317529u32, 2152988672u32, 5537803u32, 2153021452u32, - 2153054236u32, + 2148696071u32, 2148859912u32, 2149089301u32, 2149253142u32, + 2149646360u32, 2149810179u32, 2149842949u32, 2148696071u32, + 2149875720u32, 2149908494u32, 2149974031u32, 2149941253u32, + 2148696071u32, 2149875720u32, 2150367236u32, 2150400016u32, + 2150465553u32, 2150203402u32, 2150432772u32, 2150531081u32, + 2150760458u32, 2150793243u32, 2150858762u32, 2150760458u32, + 2150989851u32, 2150858762u32, 2151153689u32, 2151186458u32, + 2151251993u32, 2151153689u32, 2151579674u32, 2151251993u32, + 2151153689u32, 2151710746u32, 2151251993u32, 2151153689u32, + 2151841818u32, 2151251993u32, 2151153689u32, 2151972890u32, + 2151251993u32, 2150760458u32, 2152398875u32, 2150858762u32, + 2151153689u32, 2152792090u32, 2151251993u32, 2152923136u32, + 5472267u32, 2152955916u32, 2152988700u32, ]; static SHIFT_NONTERM_OFFSETS: &[u32] = &[ 0u32, 5u32, 6u32, 6u32, 6u32, 13u32, 13u32, 15u32, 15u32, 15u32, @@ -6923,513 +6847,493 @@ impl ::rusty_lr_core::parser::Parser for GrammarParser { 26u32, 26u32, 26u32, 26u32, 26u32, 26u32, 26u32, 26u32, 26u32, 26u32, 26u32, 26u32, 26u32, 26u32, 27u32, 27u32, 27u32, 27u32, 27u32, 27u32, 29u32, 29u32, 29u32, 29u32, 29u32, 29u32, 29u32, 29u32, 31u32, 31u32, - 33u32, 33u32, 35u32, 35u32, 35u32, 35u32, 39u32, 39u32, 39u32, 40u32, - 40u32, 40u32, 40u32, 40u32, 40u32, 40u32, 40u32, 40u32, 40u32, 40u32, - 40u32, 40u32, 40u32, 46u32, 46u32, 46u32, 46u32, 49u32, 49u32, 52u32, - 52u32, 53u32, 53u32, 53u32, 53u32, 53u32, 53u32, 53u32, 53u32, 53u32, - 53u32, 53u32, 54u32, 54u32, 55u32, 55u32, 55u32, 55u32, 55u32, 55u32, - 57u32, 57u32, 57u32, 57u32, 58u32, 58u32, 58u32, 60u32, 60u32, 60u32, - 61u32, 61u32, 61u32, 63u32, 63u32, 63u32, 64u32, 64u32, 64u32, 64u32, - 64u32, 64u32, 64u32, 64u32, 64u32, 64u32, 66u32, 66u32, 67u32, 67u32, - 69u32, 69u32, 70u32, 70u32, 72u32, 72u32, 73u32, 73u32, 75u32, 75u32, - 76u32, 76u32, 76u32, 76u32, 76u32, 76u32, 76u32, 76u32, 76u32, 76u32, - 78u32, 78u32, 78u32, 79u32, 79u32, 79u32, 79u32, 79u32, 79u32, 79u32, - 79u32, 79u32, 79u32, 81u32, 81u32, 82u32, 82u32, 82u32, 82u32, 82u32, - 86u32, 86u32, 86u32, 86u32, + 33u32, 33u32, 33u32, 33u32, 37u32, 37u32, 37u32, 38u32, 38u32, 38u32, + 38u32, 38u32, 38u32, 38u32, 38u32, 38u32, 38u32, 38u32, 38u32, 38u32, + 38u32, 44u32, 44u32, 44u32, 44u32, 47u32, 47u32, 50u32, 50u32, 51u32, + 51u32, 51u32, 51u32, 51u32, 51u32, 51u32, 51u32, 51u32, 51u32, 51u32, + 52u32, 52u32, 53u32, 53u32, 53u32, 53u32, 53u32, 53u32, 55u32, 55u32, + 55u32, 55u32, 56u32, 56u32, 56u32, 58u32, 58u32, 58u32, 59u32, 59u32, + 59u32, 61u32, 61u32, 61u32, 62u32, 62u32, 62u32, 62u32, 62u32, 62u32, + 62u32, 62u32, 62u32, 62u32, 64u32, 64u32, 65u32, 65u32, 67u32, 67u32, + 68u32, 68u32, 70u32, 70u32, 71u32, 71u32, 73u32, 73u32, 74u32, 74u32, + 74u32, 74u32, 74u32, 74u32, 74u32, 74u32, 74u32, 74u32, 76u32, 76u32, + 76u32, 77u32, 77u32, 77u32, 77u32, 77u32, 77u32, 77u32, 77u32, 77u32, + 77u32, 79u32, 79u32, 80u32, 80u32, 80u32, 80u32, 80u32, 84u32, 84u32, + 84u32, 84u32, ]; static REDUCE_DATA: &[u32] = &[ - 2u32, 1u32, 2u32, 2u32, 1u32, 1u32, 3u32, 1u32, 84u32, 4u32, 1u32, - 84u32, 16u32, 1u32, 84u32, 37u32, 1u32, 84u32, 0u32, 1u32, 24u32, + 2u32, 1u32, 2u32, 2u32, 1u32, 1u32, 3u32, 1u32, 83u32, 4u32, 1u32, + 83u32, 16u32, 1u32, 83u32, 37u32, 1u32, 83u32, 0u32, 1u32, 24u32, 3u32, 1u32, 24u32, 4u32, 1u32, 24u32, 7u32, 1u32, 24u32, 8u32, 1u32, 24u32, 11u32, 1u32, 24u32, 12u32, 1u32, 24u32, 13u32, 1u32, 24u32, 14u32, 1u32, 24u32, 16u32, 1u32, 24u32, 17u32, 1u32, 24u32, 19u32, 1u32, 24u32, 37u32, 1u32, 24u32, 38u32, 1u32, 24u32, 39u32, 1u32, 24u32, 40u32, 1u32, 24u32, 41u32, 1u32, 24u32, 42u32, 1u32, 24u32, - 43u32, 1u32, 24u32, 0u32, 1u32, 24u32, 3u32, 1u32, 24u32, 4u32, 1u32, - 24u32, 7u32, 1u32, 24u32, 8u32, 1u32, 24u32, 9u32, 1u32, 24u32, - 11u32, 1u32, 24u32, 12u32, 1u32, 24u32, 13u32, 1u32, 24u32, 14u32, - 1u32, 24u32, 16u32, 1u32, 24u32, 17u32, 1u32, 24u32, 18u32, 1u32, - 24u32, 19u32, 1u32, 24u32, 37u32, 1u32, 24u32, 38u32, 1u32, 24u32, - 39u32, 1u32, 24u32, 40u32, 1u32, 24u32, 41u32, 1u32, 24u32, 42u32, - 1u32, 24u32, 43u32, 1u32, 24u32, 44u32, 1u32, 24u32, 0u32, 1u32, - 23u32, 3u32, 1u32, 23u32, 4u32, 1u32, 23u32, 7u32, 1u32, 23u32, 8u32, - 1u32, 23u32, 9u32, 1u32, 23u32, 11u32, 1u32, 23u32, 12u32, 1u32, - 23u32, 13u32, 1u32, 23u32, 14u32, 1u32, 23u32, 16u32, 1u32, 23u32, - 17u32, 1u32, 23u32, 18u32, 1u32, 23u32, 19u32, 1u32, 23u32, 37u32, - 1u32, 23u32, 38u32, 1u32, 23u32, 39u32, 1u32, 23u32, 40u32, 1u32, - 23u32, 41u32, 1u32, 23u32, 42u32, 1u32, 23u32, 43u32, 1u32, 23u32, - 44u32, 1u32, 23u32, 0u32, 1u32, 33u32, 3u32, 1u32, 33u32, 4u32, 1u32, - 33u32, 7u32, 1u32, 33u32, 8u32, 1u32, 33u32, 9u32, 1u32, 33u32, - 11u32, 1u32, 33u32, 12u32, 1u32, 33u32, 13u32, 1u32, 33u32, 14u32, - 1u32, 33u32, 16u32, 1u32, 33u32, 17u32, 1u32, 33u32, 18u32, 1u32, - 33u32, 19u32, 1u32, 33u32, 37u32, 1u32, 33u32, 38u32, 1u32, 33u32, - 39u32, 1u32, 33u32, 40u32, 1u32, 33u32, 41u32, 1u32, 33u32, 42u32, - 1u32, 33u32, 43u32, 1u32, 33u32, 44u32, 1u32, 33u32, 0u32, 1u32, - 34u32, 3u32, 1u32, 34u32, 4u32, 1u32, 34u32, 7u32, 1u32, 34u32, 8u32, - 1u32, 34u32, 9u32, 1u32, 34u32, 11u32, 1u32, 34u32, 12u32, 1u32, - 34u32, 13u32, 1u32, 34u32, 14u32, 1u32, 34u32, 16u32, 1u32, 34u32, - 17u32, 1u32, 34u32, 18u32, 1u32, 34u32, 19u32, 1u32, 34u32, 37u32, - 1u32, 34u32, 38u32, 1u32, 34u32, 39u32, 1u32, 34u32, 40u32, 1u32, - 34u32, 41u32, 1u32, 34u32, 42u32, 1u32, 34u32, 43u32, 1u32, 34u32, - 44u32, 1u32, 34u32, 0u32, 1u32, 35u32, 3u32, 1u32, 35u32, 4u32, 1u32, - 35u32, 7u32, 1u32, 35u32, 8u32, 1u32, 35u32, 9u32, 1u32, 35u32, - 11u32, 1u32, 35u32, 12u32, 1u32, 35u32, 13u32, 1u32, 35u32, 14u32, - 1u32, 35u32, 16u32, 1u32, 35u32, 17u32, 1u32, 35u32, 18u32, 1u32, - 35u32, 19u32, 1u32, 35u32, 37u32, 1u32, 35u32, 38u32, 1u32, 35u32, - 39u32, 1u32, 35u32, 40u32, 1u32, 35u32, 41u32, 1u32, 35u32, 42u32, - 1u32, 35u32, 43u32, 1u32, 35u32, 44u32, 1u32, 35u32, 0u32, 1u32, - 36u32, 3u32, 1u32, 36u32, 4u32, 1u32, 36u32, 7u32, 1u32, 36u32, 8u32, - 1u32, 36u32, 9u32, 1u32, 36u32, 11u32, 1u32, 36u32, 12u32, 1u32, - 36u32, 13u32, 1u32, 36u32, 14u32, 1u32, 36u32, 16u32, 1u32, 36u32, - 17u32, 1u32, 36u32, 18u32, 1u32, 36u32, 19u32, 1u32, 36u32, 37u32, - 1u32, 36u32, 38u32, 1u32, 36u32, 39u32, 1u32, 36u32, 40u32, 1u32, - 36u32, 41u32, 1u32, 36u32, 42u32, 1u32, 36u32, 43u32, 1u32, 36u32, - 44u32, 1u32, 36u32, 3u32, 1u32, 98u32, 18u32, 1u32, 98u32, 0u32, - 1u32, 90u32, 11u32, 1u32, 90u32, 13u32, 1u32, 90u32, 20u32, 1u32, - 90u32, 0u32, 1u32, 89u32, 11u32, 1u32, 89u32, 13u32, 1u32, 89u32, - 20u32, 1u32, 89u32, 20u32, 1u32, 94u32, 0u32, 1u32, 13u32, 11u32, - 1u32, 13u32, 13u32, 1u32, 13u32, 20u32, 1u32, 13u32, 0u32, 1u32, - 14u32, 11u32, 1u32, 14u32, 13u32, 1u32, 14u32, 20u32, 1u32, 14u32, - 0u32, 1u32, 15u32, 11u32, 1u32, 15u32, 13u32, 1u32, 15u32, 20u32, - 1u32, 15u32, 0u32, 1u32, 19u32, 11u32, 1u32, 19u32, 13u32, 1u32, - 19u32, 20u32, 1u32, 19u32, 0u32, 1u32, 20u32, 11u32, 1u32, 20u32, - 13u32, 1u32, 20u32, 20u32, 1u32, 20u32, 0u32, 1u32, 21u32, 11u32, - 1u32, 21u32, 13u32, 1u32, 21u32, 20u32, 1u32, 21u32, 0u32, 1u32, - 16u32, 11u32, 1u32, 16u32, 13u32, 1u32, 16u32, 20u32, 1u32, 16u32, - 0u32, 1u32, 17u32, 11u32, 1u32, 17u32, 13u32, 1u32, 17u32, 20u32, - 1u32, 17u32, 0u32, 1u32, 18u32, 11u32, 1u32, 18u32, 13u32, 1u32, - 18u32, 20u32, 1u32, 18u32, 0u32, 1u32, 91u32, 11u32, 1u32, 91u32, - 13u32, 1u32, 91u32, 20u32, 1u32, 91u32, 20u32, 1u32, 93u32, 0u32, - 1u32, 92u32, 11u32, 1u32, 92u32, 13u32, 1u32, 92u32, 20u32, 1u32, - 92u32, 0u32, 1u32, 22u32, 3u32, 1u32, 22u32, 4u32, 1u32, 22u32, 7u32, - 1u32, 22u32, 8u32, 1u32, 22u32, 9u32, 1u32, 22u32, 11u32, 1u32, - 22u32, 12u32, 1u32, 22u32, 13u32, 1u32, 22u32, 14u32, 1u32, 22u32, - 16u32, 1u32, 22u32, 17u32, 1u32, 22u32, 18u32, 1u32, 22u32, 19u32, - 1u32, 22u32, 37u32, 1u32, 22u32, 38u32, 1u32, 22u32, 39u32, 1u32, - 22u32, 40u32, 1u32, 22u32, 41u32, 1u32, 22u32, 42u32, 1u32, 22u32, - 43u32, 1u32, 22u32, 44u32, 1u32, 22u32, 0u32, 1u32, 29u32, 3u32, - 1u32, 29u32, 4u32, 1u32, 29u32, 7u32, 1u32, 29u32, 8u32, 1u32, 29u32, - 9u32, 1u32, 29u32, 11u32, 1u32, 29u32, 12u32, 1u32, 29u32, 13u32, - 1u32, 29u32, 14u32, 1u32, 29u32, 16u32, 1u32, 29u32, 17u32, 1u32, - 29u32, 18u32, 1u32, 29u32, 19u32, 1u32, 29u32, 37u32, 1u32, 29u32, - 38u32, 1u32, 29u32, 39u32, 1u32, 29u32, 40u32, 1u32, 29u32, 41u32, - 1u32, 29u32, 42u32, 1u32, 29u32, 43u32, 1u32, 29u32, 44u32, 1u32, - 29u32, 0u32, 1u32, 32u32, 3u32, 1u32, 32u32, 4u32, 1u32, 32u32, 7u32, - 1u32, 32u32, 8u32, 1u32, 32u32, 9u32, 1u32, 32u32, 11u32, 1u32, - 32u32, 12u32, 1u32, 32u32, 13u32, 1u32, 32u32, 14u32, 1u32, 32u32, - 16u32, 1u32, 32u32, 17u32, 1u32, 32u32, 18u32, 1u32, 32u32, 19u32, - 1u32, 32u32, 37u32, 1u32, 32u32, 38u32, 1u32, 32u32, 39u32, 1u32, - 32u32, 40u32, 1u32, 32u32, 41u32, 1u32, 32u32, 42u32, 1u32, 32u32, - 43u32, 1u32, 32u32, 44u32, 1u32, 32u32, 0u32, 1u32, 95u32, 3u32, - 1u32, 95u32, 7u32, 1u32, 95u32, 8u32, 1u32, 95u32, 11u32, 1u32, - 95u32, 12u32, 1u32, 95u32, 13u32, 1u32, 95u32, 14u32, 1u32, 95u32, - 17u32, 1u32, 95u32, 18u32, 1u32, 95u32, 19u32, 1u32, 95u32, 0u32, - 1u32, 25u32, 3u32, 1u32, 25u32, 4u32, 1u32, 25u32, 7u32, 1u32, 25u32, - 8u32, 1u32, 25u32, 9u32, 1u32, 25u32, 11u32, 1u32, 25u32, 12u32, - 1u32, 25u32, 13u32, 1u32, 25u32, 14u32, 1u32, 25u32, 16u32, 1u32, - 25u32, 17u32, 1u32, 25u32, 18u32, 1u32, 25u32, 19u32, 1u32, 25u32, - 37u32, 1u32, 25u32, 38u32, 1u32, 25u32, 39u32, 1u32, 25u32, 40u32, - 1u32, 25u32, 41u32, 1u32, 25u32, 42u32, 1u32, 25u32, 43u32, 1u32, - 25u32, 44u32, 1u32, 25u32, 0u32, 1u32, 26u32, 3u32, 1u32, 26u32, - 4u32, 1u32, 26u32, 7u32, 1u32, 26u32, 8u32, 1u32, 26u32, 9u32, 1u32, - 26u32, 11u32, 1u32, 26u32, 12u32, 1u32, 26u32, 13u32, 1u32, 26u32, - 14u32, 1u32, 26u32, 16u32, 1u32, 26u32, 17u32, 1u32, 26u32, 18u32, - 1u32, 26u32, 19u32, 1u32, 26u32, 37u32, 1u32, 26u32, 38u32, 1u32, - 26u32, 39u32, 1u32, 26u32, 40u32, 1u32, 26u32, 41u32, 1u32, 26u32, - 42u32, 1u32, 26u32, 43u32, 1u32, 26u32, 44u32, 1u32, 26u32, 0u32, - 1u32, 27u32, 3u32, 1u32, 27u32, 4u32, 1u32, 27u32, 7u32, 1u32, 27u32, - 8u32, 1u32, 27u32, 9u32, 1u32, 27u32, 11u32, 1u32, 27u32, 12u32, - 1u32, 27u32, 13u32, 1u32, 27u32, 14u32, 1u32, 27u32, 16u32, 1u32, - 27u32, 17u32, 1u32, 27u32, 18u32, 1u32, 27u32, 19u32, 1u32, 27u32, - 37u32, 1u32, 27u32, 38u32, 1u32, 27u32, 39u32, 1u32, 27u32, 40u32, - 1u32, 27u32, 41u32, 1u32, 27u32, 42u32, 1u32, 27u32, 43u32, 1u32, - 27u32, 44u32, 1u32, 27u32, 0u32, 1u32, 28u32, 3u32, 1u32, 28u32, - 4u32, 1u32, 28u32, 7u32, 1u32, 28u32, 8u32, 1u32, 28u32, 9u32, 1u32, - 28u32, 11u32, 1u32, 28u32, 12u32, 1u32, 28u32, 13u32, 1u32, 28u32, - 14u32, 1u32, 28u32, 16u32, 1u32, 28u32, 17u32, 1u32, 28u32, 18u32, - 1u32, 28u32, 19u32, 1u32, 28u32, 37u32, 1u32, 28u32, 38u32, 1u32, - 28u32, 39u32, 1u32, 28u32, 40u32, 1u32, 28u32, 41u32, 1u32, 28u32, - 42u32, 1u32, 28u32, 43u32, 1u32, 28u32, 44u32, 1u32, 28u32, 0u32, - 1u32, 37u32, 3u32, 1u32, 37u32, 4u32, 1u32, 37u32, 7u32, 1u32, 37u32, - 8u32, 1u32, 37u32, 9u32, 1u32, 37u32, 11u32, 1u32, 37u32, 12u32, - 1u32, 37u32, 13u32, 1u32, 37u32, 14u32, 1u32, 37u32, 16u32, 1u32, - 37u32, 17u32, 1u32, 37u32, 18u32, 1u32, 37u32, 19u32, 1u32, 37u32, - 37u32, 1u32, 37u32, 42u32, 1u32, 37u32, 44u32, 1u32, 37u32, 0u32, - 1u32, 30u32, 3u32, 1u32, 30u32, 4u32, 1u32, 30u32, 7u32, 1u32, 30u32, - 8u32, 1u32, 30u32, 9u32, 1u32, 30u32, 11u32, 1u32, 30u32, 12u32, - 1u32, 30u32, 13u32, 1u32, 30u32, 14u32, 1u32, 30u32, 16u32, 1u32, - 30u32, 17u32, 1u32, 30u32, 18u32, 1u32, 30u32, 19u32, 1u32, 30u32, - 37u32, 1u32, 30u32, 42u32, 1u32, 30u32, 43u32, 1u32, 30u32, 44u32, - 1u32, 30u32, 3u32, 1u32, 97u32, 18u32, 1u32, 97u32, 0u32, 1u32, - 96u32, 3u32, 1u32, 96u32, 7u32, 1u32, 96u32, 8u32, 1u32, 96u32, - 11u32, 1u32, 96u32, 12u32, 1u32, 96u32, 13u32, 1u32, 96u32, 14u32, - 1u32, 96u32, 17u32, 1u32, 96u32, 18u32, 1u32, 96u32, 19u32, 1u32, - 96u32, 3u32, 1u32, 99u32, 18u32, 1u32, 99u32, 3u32, 1u32, 98u32, - 18u32, 1u32, 98u32, 3u32, 1u32, 100u32, 18u32, 1u32, 100u32, 0u32, - 1u32, 31u32, 3u32, 1u32, 31u32, 4u32, 1u32, 31u32, 7u32, 1u32, 31u32, - 8u32, 1u32, 31u32, 9u32, 1u32, 31u32, 11u32, 1u32, 31u32, 12u32, - 1u32, 31u32, 13u32, 1u32, 31u32, 14u32, 1u32, 31u32, 16u32, 1u32, - 31u32, 17u32, 1u32, 31u32, 18u32, 1u32, 31u32, 19u32, 1u32, 31u32, - 37u32, 1u32, 31u32, 38u32, 1u32, 31u32, 39u32, 1u32, 31u32, 40u32, - 1u32, 31u32, 41u32, 1u32, 31u32, 42u32, 1u32, 31u32, 43u32, 1u32, - 31u32, 44u32, 1u32, 31u32, 18u32, 1u32, 102u32, 18u32, 1u32, 101u32, - 0u32, 1u32, 39u32, 3u32, 1u32, 39u32, 4u32, 1u32, 39u32, 7u32, 1u32, - 39u32, 8u32, 1u32, 39u32, 9u32, 1u32, 39u32, 11u32, 1u32, 39u32, - 12u32, 1u32, 39u32, 13u32, 1u32, 39u32, 14u32, 1u32, 39u32, 16u32, - 1u32, 39u32, 17u32, 1u32, 39u32, 18u32, 1u32, 39u32, 19u32, 1u32, - 39u32, 37u32, 1u32, 39u32, 38u32, 1u32, 39u32, 39u32, 1u32, 39u32, - 40u32, 1u32, 39u32, 41u32, 1u32, 39u32, 42u32, 1u32, 39u32, 43u32, - 1u32, 39u32, 44u32, 1u32, 39u32, 0u32, 1u32, 40u32, 3u32, 1u32, + 0u32, 1u32, 24u32, 3u32, 1u32, 24u32, 4u32, 1u32, 24u32, 7u32, 1u32, + 24u32, 8u32, 1u32, 24u32, 9u32, 1u32, 24u32, 11u32, 1u32, 24u32, + 12u32, 1u32, 24u32, 13u32, 1u32, 24u32, 14u32, 1u32, 24u32, 16u32, + 1u32, 24u32, 17u32, 1u32, 24u32, 18u32, 1u32, 24u32, 19u32, 1u32, + 24u32, 37u32, 1u32, 24u32, 38u32, 1u32, 24u32, 39u32, 1u32, 24u32, + 40u32, 1u32, 24u32, 41u32, 1u32, 24u32, 42u32, 1u32, 24u32, 43u32, + 1u32, 24u32, 0u32, 1u32, 23u32, 3u32, 1u32, 23u32, 4u32, 1u32, 23u32, + 7u32, 1u32, 23u32, 8u32, 1u32, 23u32, 9u32, 1u32, 23u32, 11u32, 1u32, + 23u32, 12u32, 1u32, 23u32, 13u32, 1u32, 23u32, 14u32, 1u32, 23u32, + 16u32, 1u32, 23u32, 17u32, 1u32, 23u32, 18u32, 1u32, 23u32, 19u32, + 1u32, 23u32, 37u32, 1u32, 23u32, 38u32, 1u32, 23u32, 39u32, 1u32, + 23u32, 40u32, 1u32, 23u32, 41u32, 1u32, 23u32, 42u32, 1u32, 23u32, + 43u32, 1u32, 23u32, 0u32, 1u32, 32u32, 3u32, 1u32, 32u32, 4u32, 1u32, + 32u32, 7u32, 1u32, 32u32, 8u32, 1u32, 32u32, 9u32, 1u32, 32u32, + 11u32, 1u32, 32u32, 12u32, 1u32, 32u32, 13u32, 1u32, 32u32, 14u32, + 1u32, 32u32, 16u32, 1u32, 32u32, 17u32, 1u32, 32u32, 18u32, 1u32, + 32u32, 19u32, 1u32, 32u32, 37u32, 1u32, 32u32, 38u32, 1u32, 32u32, + 39u32, 1u32, 32u32, 40u32, 1u32, 32u32, 41u32, 1u32, 32u32, 42u32, + 1u32, 32u32, 43u32, 1u32, 32u32, 0u32, 1u32, 33u32, 3u32, 1u32, + 33u32, 4u32, 1u32, 33u32, 7u32, 1u32, 33u32, 8u32, 1u32, 33u32, 9u32, + 1u32, 33u32, 11u32, 1u32, 33u32, 12u32, 1u32, 33u32, 13u32, 1u32, + 33u32, 14u32, 1u32, 33u32, 16u32, 1u32, 33u32, 17u32, 1u32, 33u32, + 18u32, 1u32, 33u32, 19u32, 1u32, 33u32, 37u32, 1u32, 33u32, 38u32, + 1u32, 33u32, 39u32, 1u32, 33u32, 40u32, 1u32, 33u32, 41u32, 1u32, + 33u32, 42u32, 1u32, 33u32, 43u32, 1u32, 33u32, 0u32, 1u32, 34u32, + 3u32, 1u32, 34u32, 4u32, 1u32, 34u32, 7u32, 1u32, 34u32, 8u32, 1u32, + 34u32, 9u32, 1u32, 34u32, 11u32, 1u32, 34u32, 12u32, 1u32, 34u32, + 13u32, 1u32, 34u32, 14u32, 1u32, 34u32, 16u32, 1u32, 34u32, 17u32, + 1u32, 34u32, 18u32, 1u32, 34u32, 19u32, 1u32, 34u32, 37u32, 1u32, + 34u32, 38u32, 1u32, 34u32, 39u32, 1u32, 34u32, 40u32, 1u32, 34u32, + 41u32, 1u32, 34u32, 42u32, 1u32, 34u32, 43u32, 1u32, 34u32, 0u32, + 1u32, 35u32, 3u32, 1u32, 35u32, 4u32, 1u32, 35u32, 7u32, 1u32, 35u32, + 8u32, 1u32, 35u32, 9u32, 1u32, 35u32, 11u32, 1u32, 35u32, 12u32, + 1u32, 35u32, 13u32, 1u32, 35u32, 14u32, 1u32, 35u32, 16u32, 1u32, + 35u32, 17u32, 1u32, 35u32, 18u32, 1u32, 35u32, 19u32, 1u32, 35u32, + 37u32, 1u32, 35u32, 38u32, 1u32, 35u32, 39u32, 1u32, 35u32, 40u32, + 1u32, 35u32, 41u32, 1u32, 35u32, 42u32, 1u32, 35u32, 43u32, 1u32, + 35u32, 3u32, 1u32, 97u32, 18u32, 1u32, 97u32, 0u32, 1u32, 89u32, + 11u32, 1u32, 89u32, 13u32, 1u32, 89u32, 20u32, 1u32, 89u32, 0u32, + 1u32, 88u32, 11u32, 1u32, 88u32, 13u32, 1u32, 88u32, 20u32, 1u32, + 88u32, 20u32, 1u32, 93u32, 0u32, 1u32, 13u32, 11u32, 1u32, 13u32, + 13u32, 1u32, 13u32, 20u32, 1u32, 13u32, 0u32, 1u32, 14u32, 11u32, + 1u32, 14u32, 13u32, 1u32, 14u32, 20u32, 1u32, 14u32, 0u32, 1u32, + 15u32, 11u32, 1u32, 15u32, 13u32, 1u32, 15u32, 20u32, 1u32, 15u32, + 0u32, 1u32, 19u32, 11u32, 1u32, 19u32, 13u32, 1u32, 19u32, 20u32, + 1u32, 19u32, 0u32, 1u32, 20u32, 11u32, 1u32, 20u32, 13u32, 1u32, + 20u32, 20u32, 1u32, 20u32, 0u32, 1u32, 21u32, 11u32, 1u32, 21u32, + 13u32, 1u32, 21u32, 20u32, 1u32, 21u32, 0u32, 1u32, 16u32, 11u32, + 1u32, 16u32, 13u32, 1u32, 16u32, 20u32, 1u32, 16u32, 0u32, 1u32, + 17u32, 11u32, 1u32, 17u32, 13u32, 1u32, 17u32, 20u32, 1u32, 17u32, + 0u32, 1u32, 18u32, 11u32, 1u32, 18u32, 13u32, 1u32, 18u32, 20u32, + 1u32, 18u32, 0u32, 1u32, 90u32, 11u32, 1u32, 90u32, 13u32, 1u32, + 90u32, 20u32, 1u32, 90u32, 20u32, 1u32, 92u32, 0u32, 1u32, 91u32, + 11u32, 1u32, 91u32, 13u32, 1u32, 91u32, 20u32, 1u32, 91u32, 0u32, + 1u32, 22u32, 3u32, 1u32, 22u32, 4u32, 1u32, 22u32, 7u32, 1u32, 22u32, + 8u32, 1u32, 22u32, 9u32, 1u32, 22u32, 11u32, 1u32, 22u32, 12u32, + 1u32, 22u32, 13u32, 1u32, 22u32, 14u32, 1u32, 22u32, 16u32, 1u32, + 22u32, 17u32, 1u32, 22u32, 18u32, 1u32, 22u32, 19u32, 1u32, 22u32, + 37u32, 1u32, 22u32, 38u32, 1u32, 22u32, 39u32, 1u32, 22u32, 40u32, + 1u32, 22u32, 41u32, 1u32, 22u32, 42u32, 1u32, 22u32, 43u32, 1u32, + 22u32, 0u32, 1u32, 29u32, 3u32, 1u32, 29u32, 4u32, 1u32, 29u32, 7u32, + 1u32, 29u32, 8u32, 1u32, 29u32, 9u32, 1u32, 29u32, 11u32, 1u32, + 29u32, 12u32, 1u32, 29u32, 13u32, 1u32, 29u32, 14u32, 1u32, 29u32, + 16u32, 1u32, 29u32, 17u32, 1u32, 29u32, 18u32, 1u32, 29u32, 19u32, + 1u32, 29u32, 37u32, 1u32, 29u32, 38u32, 1u32, 29u32, 39u32, 1u32, + 29u32, 40u32, 1u32, 29u32, 41u32, 1u32, 29u32, 42u32, 1u32, 29u32, + 43u32, 1u32, 29u32, 0u32, 1u32, 31u32, 3u32, 1u32, 31u32, 4u32, 1u32, + 31u32, 7u32, 1u32, 31u32, 8u32, 1u32, 31u32, 9u32, 1u32, 31u32, + 11u32, 1u32, 31u32, 12u32, 1u32, 31u32, 13u32, 1u32, 31u32, 14u32, + 1u32, 31u32, 16u32, 1u32, 31u32, 17u32, 1u32, 31u32, 18u32, 1u32, + 31u32, 19u32, 1u32, 31u32, 37u32, 1u32, 31u32, 38u32, 1u32, 31u32, + 39u32, 1u32, 31u32, 40u32, 1u32, 31u32, 41u32, 1u32, 31u32, 42u32, + 1u32, 31u32, 43u32, 1u32, 31u32, 0u32, 1u32, 94u32, 3u32, 1u32, + 94u32, 7u32, 1u32, 94u32, 8u32, 1u32, 94u32, 11u32, 1u32, 94u32, + 12u32, 1u32, 94u32, 13u32, 1u32, 94u32, 14u32, 1u32, 94u32, 17u32, + 1u32, 94u32, 18u32, 1u32, 94u32, 19u32, 1u32, 94u32, 0u32, 1u32, + 25u32, 3u32, 1u32, 25u32, 4u32, 1u32, 25u32, 7u32, 1u32, 25u32, 8u32, + 1u32, 25u32, 9u32, 1u32, 25u32, 11u32, 1u32, 25u32, 12u32, 1u32, + 25u32, 13u32, 1u32, 25u32, 14u32, 1u32, 25u32, 16u32, 1u32, 25u32, + 17u32, 1u32, 25u32, 18u32, 1u32, 25u32, 19u32, 1u32, 25u32, 37u32, + 1u32, 25u32, 38u32, 1u32, 25u32, 39u32, 1u32, 25u32, 40u32, 1u32, + 25u32, 41u32, 1u32, 25u32, 42u32, 1u32, 25u32, 43u32, 1u32, 25u32, + 0u32, 1u32, 26u32, 3u32, 1u32, 26u32, 4u32, 1u32, 26u32, 7u32, 1u32, + 26u32, 8u32, 1u32, 26u32, 9u32, 1u32, 26u32, 11u32, 1u32, 26u32, + 12u32, 1u32, 26u32, 13u32, 1u32, 26u32, 14u32, 1u32, 26u32, 16u32, + 1u32, 26u32, 17u32, 1u32, 26u32, 18u32, 1u32, 26u32, 19u32, 1u32, + 26u32, 37u32, 1u32, 26u32, 38u32, 1u32, 26u32, 39u32, 1u32, 26u32, + 40u32, 1u32, 26u32, 41u32, 1u32, 26u32, 42u32, 1u32, 26u32, 43u32, + 1u32, 26u32, 0u32, 1u32, 27u32, 3u32, 1u32, 27u32, 4u32, 1u32, 27u32, + 7u32, 1u32, 27u32, 8u32, 1u32, 27u32, 9u32, 1u32, 27u32, 11u32, 1u32, + 27u32, 12u32, 1u32, 27u32, 13u32, 1u32, 27u32, 14u32, 1u32, 27u32, + 16u32, 1u32, 27u32, 17u32, 1u32, 27u32, 18u32, 1u32, 27u32, 19u32, + 1u32, 27u32, 37u32, 1u32, 27u32, 38u32, 1u32, 27u32, 39u32, 1u32, + 27u32, 40u32, 1u32, 27u32, 41u32, 1u32, 27u32, 42u32, 1u32, 27u32, + 43u32, 1u32, 27u32, 0u32, 1u32, 28u32, 3u32, 1u32, 28u32, 4u32, 1u32, + 28u32, 7u32, 1u32, 28u32, 8u32, 1u32, 28u32, 9u32, 1u32, 28u32, + 11u32, 1u32, 28u32, 12u32, 1u32, 28u32, 13u32, 1u32, 28u32, 14u32, + 1u32, 28u32, 16u32, 1u32, 28u32, 17u32, 1u32, 28u32, 18u32, 1u32, + 28u32, 19u32, 1u32, 28u32, 37u32, 1u32, 28u32, 38u32, 1u32, 28u32, + 39u32, 1u32, 28u32, 40u32, 1u32, 28u32, 41u32, 1u32, 28u32, 42u32, + 1u32, 28u32, 43u32, 1u32, 28u32, 0u32, 1u32, 36u32, 3u32, 1u32, + 36u32, 4u32, 1u32, 36u32, 7u32, 1u32, 36u32, 8u32, 1u32, 36u32, 9u32, + 1u32, 36u32, 11u32, 1u32, 36u32, 12u32, 1u32, 36u32, 13u32, 1u32, + 36u32, 14u32, 1u32, 36u32, 16u32, 1u32, 36u32, 17u32, 1u32, 36u32, + 18u32, 1u32, 36u32, 19u32, 1u32, 36u32, 37u32, 1u32, 36u32, 42u32, + 1u32, 36u32, 43u32, 1u32, 36u32, 3u32, 1u32, 96u32, 18u32, 1u32, + 96u32, 0u32, 1u32, 95u32, 3u32, 1u32, 95u32, 7u32, 1u32, 95u32, 8u32, + 1u32, 95u32, 11u32, 1u32, 95u32, 12u32, 1u32, 95u32, 13u32, 1u32, + 95u32, 14u32, 1u32, 95u32, 17u32, 1u32, 95u32, 18u32, 1u32, 95u32, + 19u32, 1u32, 95u32, 3u32, 1u32, 98u32, 18u32, 1u32, 98u32, 3u32, + 1u32, 97u32, 18u32, 1u32, 97u32, 3u32, 1u32, 99u32, 18u32, 1u32, + 99u32, 0u32, 1u32, 30u32, 3u32, 1u32, 30u32, 4u32, 1u32, 30u32, 7u32, + 1u32, 30u32, 8u32, 1u32, 30u32, 9u32, 1u32, 30u32, 11u32, 1u32, + 30u32, 12u32, 1u32, 30u32, 13u32, 1u32, 30u32, 14u32, 1u32, 30u32, + 16u32, 1u32, 30u32, 17u32, 1u32, 30u32, 18u32, 1u32, 30u32, 19u32, + 1u32, 30u32, 37u32, 1u32, 30u32, 38u32, 1u32, 30u32, 39u32, 1u32, + 30u32, 40u32, 1u32, 30u32, 41u32, 1u32, 30u32, 42u32, 1u32, 30u32, + 43u32, 1u32, 30u32, 18u32, 1u32, 101u32, 18u32, 1u32, 100u32, 0u32, + 1u32, 38u32, 3u32, 1u32, 38u32, 4u32, 1u32, 38u32, 7u32, 1u32, 38u32, + 8u32, 1u32, 38u32, 9u32, 1u32, 38u32, 11u32, 1u32, 38u32, 12u32, + 1u32, 38u32, 13u32, 1u32, 38u32, 14u32, 1u32, 38u32, 16u32, 1u32, + 38u32, 17u32, 1u32, 38u32, 18u32, 1u32, 38u32, 19u32, 1u32, 38u32, + 37u32, 1u32, 38u32, 38u32, 1u32, 38u32, 39u32, 1u32, 38u32, 40u32, + 1u32, 38u32, 41u32, 1u32, 38u32, 42u32, 1u32, 38u32, 43u32, 1u32, + 38u32, 0u32, 1u32, 39u32, 3u32, 1u32, 39u32, 4u32, 1u32, 39u32, 7u32, + 1u32, 39u32, 8u32, 1u32, 39u32, 9u32, 1u32, 39u32, 11u32, 1u32, + 39u32, 12u32, 1u32, 39u32, 13u32, 1u32, 39u32, 14u32, 1u32, 39u32, + 16u32, 1u32, 39u32, 17u32, 1u32, 39u32, 18u32, 1u32, 39u32, 19u32, + 1u32, 39u32, 37u32, 1u32, 39u32, 38u32, 1u32, 39u32, 39u32, 1u32, + 39u32, 40u32, 1u32, 39u32, 41u32, 1u32, 39u32, 42u32, 1u32, 39u32, + 43u32, 1u32, 39u32, 0u32, 1u32, 41u32, 3u32, 1u32, 41u32, 4u32, 1u32, + 41u32, 7u32, 1u32, 41u32, 8u32, 1u32, 41u32, 9u32, 1u32, 41u32, + 11u32, 1u32, 41u32, 12u32, 1u32, 41u32, 13u32, 1u32, 41u32, 14u32, + 1u32, 41u32, 16u32, 1u32, 41u32, 17u32, 1u32, 41u32, 18u32, 1u32, + 41u32, 19u32, 1u32, 41u32, 37u32, 1u32, 41u32, 38u32, 1u32, 41u32, + 39u32, 1u32, 41u32, 40u32, 1u32, 41u32, 41u32, 1u32, 41u32, 42u32, + 1u32, 41u32, 43u32, 1u32, 41u32, 0u32, 1u32, 40u32, 3u32, 1u32, 40u32, 4u32, 1u32, 40u32, 7u32, 1u32, 40u32, 8u32, 1u32, 40u32, 9u32, 1u32, 40u32, 11u32, 1u32, 40u32, 12u32, 1u32, 40u32, 13u32, 1u32, 40u32, 14u32, 1u32, 40u32, 16u32, 1u32, 40u32, 17u32, 1u32, 40u32, 18u32, 1u32, 40u32, 19u32, 1u32, 40u32, 37u32, 1u32, 40u32, 38u32, 1u32, 40u32, 39u32, 1u32, 40u32, 40u32, 1u32, 40u32, 41u32, 1u32, - 40u32, 42u32, 1u32, 40u32, 43u32, 1u32, 40u32, 44u32, 1u32, 40u32, - 0u32, 1u32, 42u32, 3u32, 1u32, 42u32, 4u32, 1u32, 42u32, 7u32, 1u32, - 42u32, 8u32, 1u32, 42u32, 9u32, 1u32, 42u32, 11u32, 1u32, 42u32, - 12u32, 1u32, 42u32, 13u32, 1u32, 42u32, 14u32, 1u32, 42u32, 16u32, - 1u32, 42u32, 17u32, 1u32, 42u32, 18u32, 1u32, 42u32, 19u32, 1u32, - 42u32, 37u32, 1u32, 42u32, 38u32, 1u32, 42u32, 39u32, 1u32, 42u32, - 40u32, 1u32, 42u32, 41u32, 1u32, 42u32, 42u32, 1u32, 42u32, 43u32, - 1u32, 42u32, 44u32, 1u32, 42u32, 0u32, 1u32, 41u32, 3u32, 1u32, - 41u32, 4u32, 1u32, 41u32, 7u32, 1u32, 41u32, 8u32, 1u32, 41u32, 9u32, - 1u32, 41u32, 11u32, 1u32, 41u32, 12u32, 1u32, 41u32, 13u32, 1u32, - 41u32, 14u32, 1u32, 41u32, 16u32, 1u32, 41u32, 17u32, 1u32, 41u32, - 18u32, 1u32, 41u32, 19u32, 1u32, 41u32, 37u32, 1u32, 41u32, 38u32, - 1u32, 41u32, 39u32, 1u32, 41u32, 40u32, 1u32, 41u32, 41u32, 1u32, - 41u32, 42u32, 1u32, 41u32, 43u32, 1u32, 41u32, 44u32, 1u32, 41u32, - 0u32, 1u32, 38u32, 3u32, 1u32, 38u32, 4u32, 1u32, 38u32, 7u32, 1u32, - 38u32, 8u32, 1u32, 38u32, 9u32, 1u32, 38u32, 11u32, 1u32, 38u32, - 12u32, 1u32, 38u32, 13u32, 1u32, 38u32, 14u32, 1u32, 38u32, 16u32, - 1u32, 38u32, 17u32, 1u32, 38u32, 18u32, 1u32, 38u32, 19u32, 1u32, - 38u32, 37u32, 1u32, 38u32, 38u32, 1u32, 38u32, 39u32, 1u32, 38u32, - 40u32, 1u32, 38u32, 41u32, 1u32, 38u32, 42u32, 1u32, 38u32, 43u32, - 1u32, 38u32, 44u32, 1u32, 38u32, 0u32, 1u32, 12u32, 3u32, 1u32, - 12u32, 4u32, 1u32, 12u32, 7u32, 1u32, 12u32, 8u32, 1u32, 12u32, - 11u32, 1u32, 12u32, 12u32, 1u32, 12u32, 13u32, 1u32, 12u32, 14u32, - 1u32, 12u32, 16u32, 1u32, 12u32, 17u32, 1u32, 12u32, 19u32, 1u32, - 12u32, 37u32, 1u32, 12u32, 3u32, 1u32, 84u32, 4u32, 1u32, 84u32, - 16u32, 1u32, 84u32, 37u32, 1u32, 84u32, 3u32, 1u32, 3u32, 37u32, - 1u32, 3u32, 0u32, 1u32, 81u32, 3u32, 1u32, 81u32, 4u32, 1u32, 81u32, + 40u32, 42u32, 1u32, 40u32, 43u32, 1u32, 40u32, 0u32, 1u32, 37u32, + 3u32, 1u32, 37u32, 4u32, 1u32, 37u32, 7u32, 1u32, 37u32, 8u32, 1u32, + 37u32, 9u32, 1u32, 37u32, 11u32, 1u32, 37u32, 12u32, 1u32, 37u32, + 13u32, 1u32, 37u32, 14u32, 1u32, 37u32, 16u32, 1u32, 37u32, 17u32, + 1u32, 37u32, 18u32, 1u32, 37u32, 19u32, 1u32, 37u32, 37u32, 1u32, + 37u32, 38u32, 1u32, 37u32, 39u32, 1u32, 37u32, 40u32, 1u32, 37u32, + 41u32, 1u32, 37u32, 42u32, 1u32, 37u32, 43u32, 1u32, 37u32, 0u32, + 1u32, 12u32, 3u32, 1u32, 12u32, 4u32, 1u32, 12u32, 7u32, 1u32, 12u32, + 8u32, 1u32, 12u32, 11u32, 1u32, 12u32, 12u32, 1u32, 12u32, 13u32, + 1u32, 12u32, 14u32, 1u32, 12u32, 16u32, 1u32, 12u32, 17u32, 1u32, + 12u32, 19u32, 1u32, 12u32, 37u32, 1u32, 12u32, 3u32, 1u32, 83u32, + 4u32, 1u32, 83u32, 16u32, 1u32, 83u32, 37u32, 1u32, 83u32, 3u32, + 1u32, 3u32, 37u32, 1u32, 3u32, 0u32, 1u32, 80u32, 3u32, 1u32, 80u32, + 4u32, 1u32, 80u32, 7u32, 1u32, 80u32, 8u32, 1u32, 80u32, 11u32, 1u32, + 80u32, 12u32, 1u32, 80u32, 13u32, 1u32, 80u32, 14u32, 1u32, 80u32, + 16u32, 1u32, 80u32, 17u32, 1u32, 80u32, 19u32, 1u32, 80u32, 37u32, + 1u32, 80u32, 0u32, 1u32, 11u32, 3u32, 1u32, 11u32, 4u32, 1u32, 11u32, + 7u32, 1u32, 11u32, 8u32, 1u32, 11u32, 11u32, 1u32, 11u32, 12u32, + 1u32, 11u32, 13u32, 1u32, 11u32, 14u32, 1u32, 11u32, 16u32, 1u32, + 11u32, 17u32, 1u32, 11u32, 19u32, 1u32, 11u32, 37u32, 1u32, 11u32, + 3u32, 1u32, 82u32, 4u32, 1u32, 82u32, 16u32, 1u32, 82u32, 37u32, + 1u32, 82u32, 0u32, 1u32, 81u32, 3u32, 1u32, 81u32, 4u32, 1u32, 81u32, 7u32, 1u32, 81u32, 8u32, 1u32, 81u32, 11u32, 1u32, 81u32, 12u32, 1u32, 81u32, 13u32, 1u32, 81u32, 14u32, 1u32, 81u32, 16u32, 1u32, 81u32, 17u32, 1u32, 81u32, 19u32, 1u32, 81u32, 37u32, 1u32, 81u32, - 0u32, 1u32, 11u32, 3u32, 1u32, 11u32, 4u32, 1u32, 11u32, 7u32, 1u32, - 11u32, 8u32, 1u32, 11u32, 11u32, 1u32, 11u32, 12u32, 1u32, 11u32, - 13u32, 1u32, 11u32, 14u32, 1u32, 11u32, 16u32, 1u32, 11u32, 17u32, - 1u32, 11u32, 19u32, 1u32, 11u32, 37u32, 1u32, 11u32, 3u32, 1u32, - 83u32, 4u32, 1u32, 83u32, 16u32, 1u32, 83u32, 37u32, 1u32, 83u32, - 0u32, 1u32, 82u32, 3u32, 1u32, 82u32, 4u32, 1u32, 82u32, 7u32, 1u32, - 82u32, 8u32, 1u32, 82u32, 11u32, 1u32, 82u32, 12u32, 1u32, 82u32, - 13u32, 1u32, 82u32, 14u32, 1u32, 82u32, 16u32, 1u32, 82u32, 17u32, - 1u32, 82u32, 19u32, 1u32, 82u32, 37u32, 1u32, 82u32, 3u32, 1u32, - 88u32, 16u32, 1u32, 88u32, 37u32, 1u32, 88u32, 0u32, 1u32, 45u32, - 3u32, 1u32, 45u32, 4u32, 1u32, 45u32, 11u32, 1u32, 45u32, 13u32, - 1u32, 45u32, 16u32, 1u32, 45u32, 37u32, 1u32, 45u32, 0u32, 1u32, - 46u32, 3u32, 1u32, 46u32, 4u32, 1u32, 46u32, 11u32, 1u32, 46u32, - 13u32, 1u32, 46u32, 16u32, 1u32, 46u32, 37u32, 1u32, 46u32, 0u32, - 1u32, 47u32, 3u32, 1u32, 47u32, 4u32, 1u32, 47u32, 11u32, 1u32, - 47u32, 13u32, 1u32, 47u32, 16u32, 1u32, 47u32, 37u32, 1u32, 47u32, + 3u32, 1u32, 87u32, 16u32, 1u32, 87u32, 37u32, 1u32, 87u32, 0u32, + 1u32, 44u32, 3u32, 1u32, 44u32, 4u32, 1u32, 44u32, 11u32, 1u32, + 44u32, 13u32, 1u32, 44u32, 16u32, 1u32, 44u32, 37u32, 1u32, 44u32, + 0u32, 1u32, 45u32, 3u32, 1u32, 45u32, 4u32, 1u32, 45u32, 11u32, 1u32, + 45u32, 13u32, 1u32, 45u32, 16u32, 1u32, 45u32, 37u32, 1u32, 45u32, + 0u32, 1u32, 46u32, 3u32, 1u32, 46u32, 4u32, 1u32, 46u32, 11u32, 1u32, + 46u32, 13u32, 1u32, 46u32, 16u32, 1u32, 46u32, 37u32, 1u32, 46u32, 3u32, 1u32, 7u32, 4u32, 1u32, 7u32, 16u32, 1u32, 7u32, 37u32, 1u32, 7u32, 3u32, 1u32, 6u32, 4u32, 1u32, 6u32, 16u32, 1u32, 6u32, 37u32, 1u32, 6u32, 3u32, 1u32, 8u32, 4u32, 1u32, 8u32, 16u32, 1u32, 8u32, 37u32, 1u32, 8u32, 3u32, 1u32, 9u32, 4u32, 1u32, 9u32, 16u32, 1u32, 9u32, 37u32, 1u32, 9u32, 3u32, 1u32, 10u32, 4u32, 1u32, 10u32, 16u32, - 1u32, 10u32, 37u32, 1u32, 10u32, 3u32, 1u32, 85u32, 4u32, 1u32, - 85u32, 16u32, 1u32, 85u32, 37u32, 1u32, 85u32, 3u32, 1u32, 87u32, - 16u32, 1u32, 87u32, 37u32, 1u32, 87u32, 3u32, 1u32, 86u32, 4u32, - 1u32, 86u32, 16u32, 1u32, 86u32, 37u32, 1u32, 86u32, 3u32, 1u32, - 44u32, 37u32, 1u32, 44u32, 3u32, 1u32, 43u32, 37u32, 1u32, 43u32, + 1u32, 10u32, 37u32, 1u32, 10u32, 3u32, 1u32, 84u32, 4u32, 1u32, + 84u32, 16u32, 1u32, 84u32, 37u32, 1u32, 84u32, 3u32, 1u32, 86u32, + 16u32, 1u32, 86u32, 37u32, 1u32, 86u32, 3u32, 1u32, 85u32, 4u32, + 1u32, 85u32, 16u32, 1u32, 85u32, 37u32, 1u32, 85u32, 3u32, 1u32, + 43u32, 37u32, 1u32, 43u32, 3u32, 1u32, 42u32, 37u32, 1u32, 42u32, 3u32, 1u32, 5u32, 37u32, 1u32, 5u32, 0u32, 1u32, 0u32, 4u32, 1u32, - 0u32, 45u32, 1u32, 0u32, 3u32, 1u32, 4u32, 37u32, 1u32, 4u32, 0u32, - 1u32, 58u32, 4u32, 1u32, 58u32, 45u32, 1u32, 58u32, 0u32, 1u32, - 148u32, 11u32, 1u32, 148u32, 13u32, 1u32, 148u32, 37u32, 1u32, - 148u32, 0u32, 1u32, 57u32, 4u32, 1u32, 57u32, 45u32, 1u32, 57u32, - 0u32, 1u32, 149u32, 11u32, 1u32, 149u32, 13u32, 1u32, 149u32, 37u32, - 1u32, 149u32, 0u32, 1u32, 60u32, 4u32, 1u32, 60u32, 45u32, 1u32, - 60u32, 0u32, 1u32, 59u32, 4u32, 1u32, 59u32, 45u32, 1u32, 59u32, - 0u32, 1u32, 49u32, 4u32, 1u32, 49u32, 45u32, 1u32, 49u32, 0u32, 1u32, - 146u32, 1u32, 1u32, 146u32, 2u32, 1u32, 146u32, 3u32, 1u32, 146u32, - 4u32, 1u32, 146u32, 5u32, 1u32, 146u32, 6u32, 1u32, 146u32, 7u32, - 1u32, 146u32, 8u32, 1u32, 146u32, 9u32, 1u32, 146u32, 10u32, 1u32, - 146u32, 11u32, 1u32, 146u32, 12u32, 1u32, 146u32, 13u32, 1u32, - 146u32, 14u32, 1u32, 146u32, 15u32, 1u32, 146u32, 16u32, 1u32, - 146u32, 17u32, 1u32, 146u32, 18u32, 1u32, 146u32, 19u32, 1u32, - 146u32, 20u32, 1u32, 146u32, 21u32, 1u32, 146u32, 22u32, 1u32, - 146u32, 23u32, 1u32, 146u32, 24u32, 1u32, 146u32, 25u32, 1u32, - 146u32, 26u32, 1u32, 146u32, 27u32, 1u32, 146u32, 28u32, 1u32, - 146u32, 29u32, 1u32, 146u32, 30u32, 1u32, 146u32, 31u32, 1u32, - 146u32, 32u32, 1u32, 146u32, 33u32, 1u32, 146u32, 34u32, 1u32, - 146u32, 35u32, 1u32, 146u32, 36u32, 1u32, 146u32, 37u32, 1u32, - 146u32, 38u32, 1u32, 146u32, 39u32, 1u32, 146u32, 40u32, 1u32, - 146u32, 41u32, 1u32, 146u32, 42u32, 1u32, 146u32, 43u32, 1u32, - 146u32, 0u32, 1u32, 48u32, 4u32, 1u32, 48u32, 45u32, 1u32, 48u32, - 0u32, 1u32, 147u32, 1u32, 1u32, 147u32, 2u32, 1u32, 147u32, 3u32, - 1u32, 147u32, 4u32, 1u32, 147u32, 5u32, 1u32, 147u32, 6u32, 1u32, - 147u32, 7u32, 1u32, 147u32, 8u32, 1u32, 147u32, 9u32, 1u32, 147u32, - 10u32, 1u32, 147u32, 11u32, 1u32, 147u32, 12u32, 1u32, 147u32, 13u32, - 1u32, 147u32, 14u32, 1u32, 147u32, 15u32, 1u32, 147u32, 16u32, 1u32, - 147u32, 17u32, 1u32, 147u32, 18u32, 1u32, 147u32, 19u32, 1u32, - 147u32, 20u32, 1u32, 147u32, 21u32, 1u32, 147u32, 22u32, 1u32, - 147u32, 23u32, 1u32, 147u32, 24u32, 1u32, 147u32, 25u32, 1u32, - 147u32, 26u32, 1u32, 147u32, 27u32, 1u32, 147u32, 28u32, 1u32, - 147u32, 29u32, 1u32, 147u32, 30u32, 1u32, 147u32, 31u32, 1u32, - 147u32, 32u32, 1u32, 147u32, 33u32, 1u32, 147u32, 34u32, 1u32, - 147u32, 35u32, 1u32, 147u32, 36u32, 1u32, 147u32, 37u32, 1u32, - 147u32, 38u32, 1u32, 147u32, 39u32, 1u32, 147u32, 40u32, 1u32, - 147u32, 41u32, 1u32, 147u32, 42u32, 1u32, 147u32, 43u32, 1u32, - 147u32, 0u32, 1u32, 50u32, 4u32, 1u32, 50u32, 45u32, 1u32, 50u32, - 0u32, 1u32, 51u32, 4u32, 1u32, 51u32, 45u32, 1u32, 51u32, 0u32, 1u32, - 52u32, 4u32, 1u32, 52u32, 45u32, 1u32, 52u32, 0u32, 1u32, 54u32, - 4u32, 1u32, 54u32, 45u32, 1u32, 54u32, 0u32, 1u32, 53u32, 4u32, 1u32, - 53u32, 45u32, 1u32, 53u32, 0u32, 1u32, 56u32, 4u32, 1u32, 56u32, - 45u32, 1u32, 56u32, 0u32, 1u32, 55u32, 4u32, 1u32, 55u32, 45u32, - 1u32, 55u32, 0u32, 1u32, 64u32, 4u32, 1u32, 64u32, 45u32, 1u32, - 64u32, 0u32, 1u32, 63u32, 4u32, 1u32, 63u32, 45u32, 1u32, 63u32, - 0u32, 1u32, 66u32, 4u32, 1u32, 66u32, 45u32, 1u32, 66u32, 0u32, 1u32, - 65u32, 4u32, 1u32, 65u32, 45u32, 1u32, 65u32, 0u32, 1u32, 69u32, - 4u32, 1u32, 69u32, 45u32, 1u32, 69u32, 0u32, 1u32, 70u32, 4u32, 1u32, - 70u32, 45u32, 1u32, 70u32, 0u32, 1u32, 67u32, 4u32, 1u32, 67u32, - 45u32, 1u32, 67u32, 0u32, 1u32, 68u32, 4u32, 1u32, 68u32, 45u32, - 1u32, 68u32, 0u32, 1u32, 62u32, 4u32, 1u32, 62u32, 45u32, 1u32, - 62u32, 0u32, 1u32, 61u32, 4u32, 1u32, 61u32, 45u32, 1u32, 61u32, - 0u32, 1u32, 71u32, 4u32, 1u32, 71u32, 45u32, 1u32, 71u32, 0u32, 1u32, - 72u32, 4u32, 1u32, 72u32, 45u32, 1u32, 72u32, 0u32, 1u32, 73u32, - 4u32, 1u32, 73u32, 45u32, 1u32, 73u32, 0u32, 1u32, 74u32, 4u32, 1u32, - 74u32, 45u32, 1u32, 74u32, 0u32, 1u32, 76u32, 4u32, 1u32, 76u32, - 45u32, 1u32, 76u32, 0u32, 1u32, 75u32, 4u32, 1u32, 75u32, 45u32, - 1u32, 75u32, 0u32, 1u32, 77u32, 4u32, 1u32, 77u32, 45u32, 1u32, - 77u32, 0u32, 1u32, 78u32, 4u32, 1u32, 78u32, 45u32, 1u32, 78u32, - 45u32, 1u32, 150u32, 45u32, 1u32, 151u32, + 0u32, 44u32, 1u32, 0u32, 3u32, 1u32, 4u32, 37u32, 1u32, 4u32, 0u32, + 1u32, 57u32, 4u32, 1u32, 57u32, 44u32, 1u32, 57u32, 0u32, 1u32, + 146u32, 11u32, 1u32, 146u32, 13u32, 1u32, 146u32, 37u32, 1u32, + 146u32, 0u32, 1u32, 56u32, 4u32, 1u32, 56u32, 44u32, 1u32, 56u32, + 0u32, 1u32, 147u32, 11u32, 1u32, 147u32, 13u32, 1u32, 147u32, 37u32, + 1u32, 147u32, 0u32, 1u32, 59u32, 4u32, 1u32, 59u32, 44u32, 1u32, + 59u32, 0u32, 1u32, 58u32, 4u32, 1u32, 58u32, 44u32, 1u32, 58u32, + 0u32, 1u32, 48u32, 4u32, 1u32, 48u32, 44u32, 1u32, 48u32, 0u32, 1u32, + 144u32, 1u32, 1u32, 144u32, 2u32, 1u32, 144u32, 3u32, 1u32, 144u32, + 4u32, 1u32, 144u32, 5u32, 1u32, 144u32, 6u32, 1u32, 144u32, 7u32, + 1u32, 144u32, 8u32, 1u32, 144u32, 9u32, 1u32, 144u32, 10u32, 1u32, + 144u32, 11u32, 1u32, 144u32, 12u32, 1u32, 144u32, 13u32, 1u32, + 144u32, 14u32, 1u32, 144u32, 15u32, 1u32, 144u32, 16u32, 1u32, + 144u32, 17u32, 1u32, 144u32, 18u32, 1u32, 144u32, 19u32, 1u32, + 144u32, 20u32, 1u32, 144u32, 21u32, 1u32, 144u32, 22u32, 1u32, + 144u32, 23u32, 1u32, 144u32, 24u32, 1u32, 144u32, 25u32, 1u32, + 144u32, 26u32, 1u32, 144u32, 27u32, 1u32, 144u32, 28u32, 1u32, + 144u32, 29u32, 1u32, 144u32, 30u32, 1u32, 144u32, 31u32, 1u32, + 144u32, 32u32, 1u32, 144u32, 33u32, 1u32, 144u32, 34u32, 1u32, + 144u32, 35u32, 1u32, 144u32, 36u32, 1u32, 144u32, 37u32, 1u32, + 144u32, 38u32, 1u32, 144u32, 39u32, 1u32, 144u32, 40u32, 1u32, + 144u32, 41u32, 1u32, 144u32, 42u32, 1u32, 144u32, 0u32, 1u32, 47u32, + 4u32, 1u32, 47u32, 44u32, 1u32, 47u32, 0u32, 1u32, 145u32, 1u32, + 1u32, 145u32, 2u32, 1u32, 145u32, 3u32, 1u32, 145u32, 4u32, 1u32, + 145u32, 5u32, 1u32, 145u32, 6u32, 1u32, 145u32, 7u32, 1u32, 145u32, + 8u32, 1u32, 145u32, 9u32, 1u32, 145u32, 10u32, 1u32, 145u32, 11u32, + 1u32, 145u32, 12u32, 1u32, 145u32, 13u32, 1u32, 145u32, 14u32, 1u32, + 145u32, 15u32, 1u32, 145u32, 16u32, 1u32, 145u32, 17u32, 1u32, + 145u32, 18u32, 1u32, 145u32, 19u32, 1u32, 145u32, 20u32, 1u32, + 145u32, 21u32, 1u32, 145u32, 22u32, 1u32, 145u32, 23u32, 1u32, + 145u32, 24u32, 1u32, 145u32, 25u32, 1u32, 145u32, 26u32, 1u32, + 145u32, 27u32, 1u32, 145u32, 28u32, 1u32, 145u32, 29u32, 1u32, + 145u32, 30u32, 1u32, 145u32, 31u32, 1u32, 145u32, 32u32, 1u32, + 145u32, 33u32, 1u32, 145u32, 34u32, 1u32, 145u32, 35u32, 1u32, + 145u32, 36u32, 1u32, 145u32, 37u32, 1u32, 145u32, 38u32, 1u32, + 145u32, 39u32, 1u32, 145u32, 40u32, 1u32, 145u32, 41u32, 1u32, + 145u32, 42u32, 1u32, 145u32, 0u32, 1u32, 49u32, 4u32, 1u32, 49u32, + 44u32, 1u32, 49u32, 0u32, 1u32, 50u32, 4u32, 1u32, 50u32, 44u32, + 1u32, 50u32, 0u32, 1u32, 51u32, 4u32, 1u32, 51u32, 44u32, 1u32, + 51u32, 0u32, 1u32, 53u32, 4u32, 1u32, 53u32, 44u32, 1u32, 53u32, + 0u32, 1u32, 52u32, 4u32, 1u32, 52u32, 44u32, 1u32, 52u32, 0u32, 1u32, + 55u32, 4u32, 1u32, 55u32, 44u32, 1u32, 55u32, 0u32, 1u32, 54u32, + 4u32, 1u32, 54u32, 44u32, 1u32, 54u32, 0u32, 1u32, 63u32, 4u32, 1u32, + 63u32, 44u32, 1u32, 63u32, 0u32, 1u32, 62u32, 4u32, 1u32, 62u32, + 44u32, 1u32, 62u32, 0u32, 1u32, 65u32, 4u32, 1u32, 65u32, 44u32, + 1u32, 65u32, 0u32, 1u32, 64u32, 4u32, 1u32, 64u32, 44u32, 1u32, + 64u32, 0u32, 1u32, 68u32, 4u32, 1u32, 68u32, 44u32, 1u32, 68u32, + 0u32, 1u32, 69u32, 4u32, 1u32, 69u32, 44u32, 1u32, 69u32, 0u32, 1u32, + 66u32, 4u32, 1u32, 66u32, 44u32, 1u32, 66u32, 0u32, 1u32, 67u32, + 4u32, 1u32, 67u32, 44u32, 1u32, 67u32, 0u32, 1u32, 61u32, 4u32, 1u32, + 61u32, 44u32, 1u32, 61u32, 0u32, 1u32, 60u32, 4u32, 1u32, 60u32, + 44u32, 1u32, 60u32, 0u32, 1u32, 70u32, 4u32, 1u32, 70u32, 44u32, + 1u32, 70u32, 0u32, 1u32, 71u32, 4u32, 1u32, 71u32, 44u32, 1u32, + 71u32, 0u32, 1u32, 72u32, 4u32, 1u32, 72u32, 44u32, 1u32, 72u32, + 0u32, 1u32, 73u32, 4u32, 1u32, 73u32, 44u32, 1u32, 73u32, 0u32, 1u32, + 75u32, 4u32, 1u32, 75u32, 44u32, 1u32, 75u32, 0u32, 1u32, 74u32, + 4u32, 1u32, 74u32, 44u32, 1u32, 74u32, 0u32, 1u32, 76u32, 4u32, 1u32, + 76u32, 44u32, 1u32, 76u32, 0u32, 1u32, 77u32, 4u32, 1u32, 77u32, + 44u32, 1u32, 77u32, 44u32, 1u32, 148u32, 44u32, 1u32, 149u32, ]; static REDUCE_OFFSETS: &[u32] = &[ - 0u32, 0u32, 3u32, 6u32, 6u32, 18u32, 75u32, 75u32, 141u32, 207u32, - 207u32, 207u32, 207u32, 273u32, 339u32, 405u32, 471u32, 477u32, - 489u32, 501u32, 504u32, 516u32, 516u32, 528u32, 540u32, 552u32, - 552u32, 564u32, 576u32, 588u32, 588u32, 600u32, 612u32, 624u32, - 627u32, 639u32, 639u32, 705u32, 771u32, 771u32, 771u32, 771u32, - 837u32, 870u32, 936u32, 1002u32, 1068u32, 1134u32, 1134u32, 1185u32, - 1185u32, 1239u32, 1245u32, 1278u32, 1284u32, 1284u32, 1290u32, - 1296u32, 1362u32, 1365u32, 1368u32, 1368u32, 1434u32, 1434u32, - 1500u32, 1500u32, 1566u32, 1566u32, 1632u32, 1632u32, 1698u32, - 1737u32, 1737u32, 1749u32, 1755u32, 1794u32, 1833u32, 1845u32, - 1884u32, 1893u32, 1893u32, 1893u32, 1914u32, 1935u32, 1956u32, - 1968u32, 1980u32, 1980u32, 1992u32, 2004u32, 2016u32, 2028u32, - 2037u32, 2049u32, 2055u32, 2061u32, 2067u32, 2076u32, 2082u32, - 2082u32, 2082u32, 2082u32, 2091u32, 2103u32, 2103u32, 2112u32, - 2124u32, 2124u32, 2124u32, 2133u32, 2133u32, 2142u32, 2142u32, - 2142u32, 2151u32, 2283u32, 2283u32, 2292u32, 2424u32, 2424u32, - 2433u32, 2433u32, 2433u32, 2442u32, 2442u32, 2451u32, 2451u32, - 2460u32, 2460u32, 2469u32, 2469u32, 2478u32, 2478u32, 2487u32, - 2487u32, 2496u32, 2496u32, 2505u32, 2505u32, 2514u32, 2514u32, - 2523u32, 2523u32, 2532u32, 2532u32, 2541u32, 2541u32, 2550u32, - 2550u32, 2559u32, 2559u32, 2559u32, 2568u32, 2568u32, 2577u32, - 2577u32, 2586u32, 2586u32, 2595u32, 2595u32, 2604u32, 2604u32, - 2613u32, 2613u32, 2622u32, 2622u32, 2631u32, 2631u32, 2640u32, - 2649u32, 2652u32, 2655u32, 2655u32, 2655u32, + 0u32, 0u32, 3u32, 6u32, 6u32, 18u32, 72u32, 72u32, 135u32, 198u32, + 198u32, 198u32, 198u32, 261u32, 324u32, 387u32, 450u32, 456u32, + 468u32, 480u32, 483u32, 495u32, 495u32, 507u32, 519u32, 531u32, + 531u32, 543u32, 555u32, 567u32, 567u32, 579u32, 591u32, 603u32, + 606u32, 618u32, 618u32, 681u32, 744u32, 744u32, 744u32, 744u32, + 807u32, 840u32, 903u32, 966u32, 1029u32, 1092u32, 1092u32, 1143u32, + 1149u32, 1182u32, 1188u32, 1188u32, 1194u32, 1200u32, 1263u32, + 1266u32, 1269u32, 1269u32, 1332u32, 1332u32, 1395u32, 1395u32, + 1458u32, 1458u32, 1521u32, 1521u32, 1584u32, 1623u32, 1623u32, + 1635u32, 1641u32, 1680u32, 1719u32, 1731u32, 1770u32, 1779u32, + 1779u32, 1779u32, 1800u32, 1821u32, 1842u32, 1854u32, 1866u32, + 1866u32, 1878u32, 1890u32, 1902u32, 1914u32, 1923u32, 1935u32, + 1941u32, 1947u32, 1953u32, 1962u32, 1968u32, 1968u32, 1968u32, + 1968u32, 1977u32, 1989u32, 1989u32, 1998u32, 2010u32, 2010u32, + 2010u32, 2019u32, 2019u32, 2028u32, 2028u32, 2028u32, 2037u32, + 2166u32, 2166u32, 2175u32, 2304u32, 2304u32, 2313u32, 2313u32, + 2313u32, 2322u32, 2322u32, 2331u32, 2331u32, 2340u32, 2340u32, + 2349u32, 2349u32, 2358u32, 2358u32, 2367u32, 2367u32, 2376u32, + 2376u32, 2385u32, 2385u32, 2394u32, 2394u32, 2403u32, 2403u32, + 2412u32, 2412u32, 2421u32, 2421u32, 2430u32, 2430u32, 2439u32, + 2439u32, 2439u32, 2448u32, 2448u32, 2457u32, 2457u32, 2466u32, + 2466u32, 2475u32, 2475u32, 2484u32, 2484u32, 2493u32, 2493u32, + 2502u32, 2502u32, 2511u32, 2511u32, 2520u32, 2529u32, 2532u32, + 2535u32, 2535u32, 2535u32, ]; static RULESET_DATA: &[u32] = &[ - 0u32, 48u32, 49u32, 50u32, 51u32, 52u32, 53u32, 54u32, 55u32, 56u32, - 57u32, 58u32, 59u32, 60u32, 61u32, 62u32, 63u32, 64u32, 65u32, 66u32, - 67u32, 68u32, 69u32, 70u32, 71u32, 72u32, 73u32, 74u32, 75u32, 76u32, - 77u32, 78u32, 79u32, 80u32, 150u32, 151u32, 152u32, 65536u32, 1u32, + 0u32, 47u32, 48u32, 49u32, 50u32, 51u32, 52u32, 53u32, 54u32, 55u32, + 56u32, 57u32, 58u32, 59u32, 60u32, 61u32, 62u32, 63u32, 64u32, 65u32, + 66u32, 67u32, 68u32, 69u32, 70u32, 71u32, 72u32, 73u32, 74u32, 75u32, + 76u32, 77u32, 78u32, 79u32, 148u32, 149u32, 150u32, 65536u32, 1u32, 2u32, 65537u32, 131072u32, 196608u32, 3u32, 4u32, 5u32, 11u32, 12u32, 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, 32u32, 33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, - 42u32, 81u32, 82u32, 83u32, 84u32, 65548u32, 65560u32, 131084u32, - 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, - 32u32, 33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, - 42u32, 65560u32, 65559u32, 65574u32, 65575u32, 65576u32, 65577u32, - 65578u32, 131110u32, 131111u32, 131112u32, 131113u32, 131114u32, - 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, - 32u32, 33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 196646u32, 39u32, - 196647u32, 40u32, 196648u32, 41u32, 196649u32, 42u32, 196650u32, - 65569u32, 65570u32, 65571u32, 65572u32, 22u32, 23u32, 24u32, 25u32, - 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, 65567u32, 32u32, 65568u32, - 33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, 42u32, - 95u32, 96u32, 97u32, 98u32, 99u32, 100u32, 65558u32, 89u32, 90u32, - 65625u32, 13u32, 14u32, 15u32, 16u32, 17u32, 18u32, 19u32, 20u32, - 21u32, 131094u32, 91u32, 92u32, 93u32, 94u32, 65549u32, 65550u32, - 65551u32, 131086u32, 131087u32, 196622u32, 196623u32, 65555u32, - 65556u32, 65557u32, 131092u32, 131093u32, 196628u32, 196629u32, - 65552u32, 65553u32, 65554u32, 131089u32, 131090u32, 196625u32, - 196626u32, 65627u32, 13u32, 14u32, 15u32, 16u32, 17u32, 18u32, 19u32, - 20u32, 21u32, 65628u32, 65629u32, 131164u32, 196630u32, 262166u32, - 65565u32, 65561u32, 65562u32, 65563u32, 65564u32, 65566u32, 65573u32, - 262182u32, 262183u32, 262184u32, 262185u32, 262186u32, 22u32, 23u32, + 80u32, 81u32, 82u32, 83u32, 65548u32, 65560u32, 131084u32, 22u32, + 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, 32u32, + 33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, + 65560u32, 65559u32, 65573u32, 65574u32, 65575u32, 65576u32, 65577u32, + 131109u32, 131110u32, 131111u32, 131112u32, 131113u32, 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, 32u32, 33u32, - 34u32, 35u32, 36u32, 37u32, 38u32, 327718u32, 39u32, 327719u32, - 40u32, 327720u32, 41u32, 327721u32, 42u32, 327722u32, 131104u32, - 196640u32, 65561u32, 65562u32, 65563u32, 65564u32, 65566u32, - 65573u32, 65631u32, 131097u32, 131098u32, 131099u32, 131100u32, - 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, - 32u32, 33u32, 34u32, 35u32, 36u32, 37u32, 131109u32, 38u32, 39u32, - 40u32, 41u32, 42u32, 65561u32, 65562u32, 65563u32, 65564u32, - 65566u32, 196645u32, 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, - 29u32, 30u32, 131102u32, 31u32, 32u32, 33u32, 34u32, 35u32, 36u32, - 37u32, 38u32, 39u32, 40u32, 41u32, 42u32, 65561u32, 65562u32, - 65563u32, 65564u32, 196638u32, 22u32, 23u32, 24u32, 25u32, 26u32, - 27u32, 28u32, 29u32, 30u32, 31u32, 32u32, 33u32, 34u32, 35u32, 36u32, - 37u32, 38u32, 39u32, 40u32, 41u32, 42u32, 65632u32, 65633u32, - 65561u32, 65562u32, 65563u32, 65564u32, 65566u32, 65573u32, - 131168u32, 65635u32, 131103u32, 65636u32, 22u32, 23u32, 24u32, 25u32, - 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, 32u32, 33u32, 34u32, 35u32, - 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, 42u32, 95u32, 96u32, 97u32, - 98u32, 131172u32, 196708u32, 196639u32, 65561u32, 65562u32, 65563u32, - 65564u32, 65566u32, 65573u32, 393254u32, 393255u32, 393256u32, - 393257u32, 393258u32, 101u32, 102u32, 458791u32, 458792u32, - 458794u32, 65637u32, 524327u32, 589863u32, 524328u32, 589864u32, - 524330u32, 589866u32, 458793u32, 524329u32, 458790u32, 524326u32, - 196620u32, 65561u32, 65562u32, 65563u32, 65564u32, 65566u32, - 65573u32, 262144u32, 65539u32, 131075u32, 5u32, 11u32, 12u32, 22u32, + 34u32, 35u32, 36u32, 37u32, 196645u32, 38u32, 196646u32, 39u32, + 196647u32, 40u32, 196648u32, 41u32, 196649u32, 65568u32, 65569u32, + 65570u32, 65571u32, 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, + 29u32, 30u32, 65566u32, 31u32, 65567u32, 32u32, 33u32, 34u32, 35u32, + 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, 94u32, 95u32, 96u32, 97u32, + 98u32, 99u32, 65558u32, 88u32, 89u32, 65624u32, 13u32, 14u32, 15u32, + 16u32, 17u32, 18u32, 19u32, 20u32, 21u32, 131094u32, 90u32, 91u32, + 92u32, 93u32, 65549u32, 65550u32, 65551u32, 131086u32, 131087u32, + 196622u32, 196623u32, 65555u32, 65556u32, 65557u32, 131092u32, + 131093u32, 196628u32, 196629u32, 65552u32, 65553u32, 65554u32, + 131089u32, 131090u32, 196625u32, 196626u32, 65626u32, 13u32, 14u32, + 15u32, 16u32, 17u32, 18u32, 19u32, 20u32, 21u32, 65627u32, 65628u32, + 131163u32, 196630u32, 262166u32, 65565u32, 65561u32, 65562u32, + 65563u32, 65564u32, 65572u32, 262181u32, 262182u32, 262183u32, + 262184u32, 262185u32, 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, + 28u32, 29u32, 30u32, 31u32, 32u32, 33u32, 34u32, 35u32, 36u32, 37u32, + 327717u32, 38u32, 327718u32, 39u32, 327719u32, 40u32, 327720u32, + 41u32, 327721u32, 131103u32, 196639u32, 65561u32, 65562u32, 65563u32, + 65564u32, 65572u32, 65630u32, 131097u32, 131098u32, 131099u32, + 131100u32, 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, + 30u32, 31u32, 32u32, 33u32, 34u32, 35u32, 36u32, 131108u32, 37u32, + 38u32, 39u32, 40u32, 41u32, 65561u32, 65562u32, 65563u32, 65564u32, + 196644u32, 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, + 30u32, 31u32, 32u32, 33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, + 40u32, 41u32, 65631u32, 65632u32, 65561u32, 65562u32, 65563u32, + 65564u32, 65572u32, 131167u32, 65634u32, 131102u32, 65635u32, 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, 32u32, - 33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, 42u32, - 81u32, 82u32, 83u32, 84u32, 196611u32, 65617u32, 65547u32, 65561u32, - 65562u32, 65563u32, 65564u32, 65566u32, 65573u32, 11u32, 12u32, - 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, - 32u32, 33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, - 42u32, 65618u32, 65619u32, 131154u32, 65541u32, 6u32, 7u32, 8u32, - 9u32, 10u32, 85u32, 86u32, 87u32, 88u32, 65542u32, 65543u32, - 65544u32, 65545u32, 65546u32, 131078u32, 131079u32, 45u32, 46u32, - 47u32, 65581u32, 65582u32, 65583u32, 196615u32, 196614u32, 131080u32, - 131081u32, 196616u32, 196617u32, 131082u32, 65621u32, 6u32, 7u32, - 8u32, 9u32, 10u32, 65622u32, 65623u32, 131158u32, 131077u32, 43u32, - 44u32, 65579u32, 196613u32, 327680u32, 65540u32, 65584u32, 65585u32, - 65586u32, 65587u32, 65588u32, 65589u32, 65590u32, 65591u32, 65592u32, - 65593u32, 65594u32, 65595u32, 65596u32, 65597u32, 65598u32, 65599u32, - 65600u32, 65601u32, 65602u32, 65603u32, 65604u32, 65605u32, 65606u32, - 65607u32, 65608u32, 65609u32, 65610u32, 65611u32, 65612u32, 65613u32, - 45u32, 46u32, 47u32, 131129u32, 131130u32, 148u32, 149u32, 196666u32, - 262202u32, 65684u32, 45u32, 46u32, 47u32, 196665u32, 65685u32, - 262201u32, 131221u32, 45u32, 46u32, 47u32, 131131u32, 131132u32, - 148u32, 149u32, 196668u32, 262204u32, 45u32, 46u32, 47u32, 196667u32, - 65685u32, 262203u32, 131120u32, 131121u32, 131122u32, 196656u32, - 196657u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, 109u32, - 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, 117u32, - 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, 125u32, - 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, 133u32, - 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, 141u32, - 142u32, 143u32, 144u32, 145u32, 146u32, 147u32, 262193u32, 65682u32, - 262192u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, 109u32, - 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, 117u32, - 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, 125u32, - 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, 133u32, - 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, 141u32, - 142u32, 143u32, 144u32, 145u32, 65683u32, 327728u32, 131219u32, - 196658u32, 262194u32, 131123u32, 131124u32, 196659u32, 262195u32, - 196660u32, 262196u32, 131125u32, 131126u32, 103u32, 104u32, 105u32, + 33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, 94u32, + 95u32, 96u32, 97u32, 131171u32, 196707u32, 196638u32, 65561u32, + 65562u32, 65563u32, 65564u32, 65572u32, 393253u32, 393254u32, + 393255u32, 393256u32, 393257u32, 100u32, 101u32, 458790u32, + 458791u32, 458793u32, 65636u32, 524326u32, 589862u32, 524327u32, + 589863u32, 524329u32, 589865u32, 458792u32, 524328u32, 458789u32, + 524325u32, 196620u32, 65561u32, 65562u32, 65563u32, 65564u32, + 65572u32, 262144u32, 65539u32, 131075u32, 5u32, 11u32, 12u32, 22u32, + 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, 32u32, + 33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, 80u32, + 81u32, 82u32, 83u32, 196611u32, 65616u32, 65547u32, 65561u32, + 65562u32, 65563u32, 65564u32, 65572u32, 11u32, 12u32, 22u32, 23u32, + 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, 32u32, 33u32, + 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, 65617u32, + 65618u32, 131153u32, 65541u32, 6u32, 7u32, 8u32, 9u32, 10u32, 84u32, + 85u32, 86u32, 87u32, 65542u32, 65543u32, 65544u32, 65545u32, + 65546u32, 131078u32, 131079u32, 44u32, 45u32, 46u32, 65580u32, + 65581u32, 65582u32, 196615u32, 196614u32, 131080u32, 131081u32, + 196616u32, 196617u32, 131082u32, 65620u32, 6u32, 7u32, 8u32, 9u32, + 10u32, 65621u32, 65622u32, 131157u32, 131077u32, 42u32, 43u32, + 65578u32, 196613u32, 327680u32, 65540u32, 65583u32, 65584u32, + 65585u32, 65586u32, 65587u32, 65588u32, 65589u32, 65590u32, 65591u32, + 65592u32, 65593u32, 65594u32, 65595u32, 65596u32, 65597u32, 65598u32, + 65599u32, 65600u32, 65601u32, 65602u32, 65603u32, 65604u32, 65605u32, + 65606u32, 65607u32, 65608u32, 65609u32, 65610u32, 65611u32, 65612u32, + 44u32, 45u32, 46u32, 131128u32, 131129u32, 146u32, 147u32, 196665u32, + 262201u32, 65682u32, 44u32, 45u32, 46u32, 196664u32, 65683u32, + 262200u32, 131219u32, 44u32, 45u32, 46u32, 131130u32, 131131u32, + 146u32, 147u32, 196667u32, 262203u32, 44u32, 45u32, 46u32, 196666u32, + 65683u32, 262202u32, 131119u32, 131120u32, 131121u32, 196655u32, + 196656u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, + 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, + 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, + 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, + 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, + 141u32, 142u32, 143u32, 144u32, 145u32, 262192u32, 65680u32, + 262191u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, + 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, + 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, + 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, + 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, + 141u32, 142u32, 143u32, 65681u32, 327727u32, 131217u32, 196657u32, + 262193u32, 131122u32, 131123u32, 196658u32, 262194u32, 196659u32, + 262195u32, 131124u32, 131125u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, 141u32, 142u32, 143u32, 144u32, 145u32, - 146u32, 147u32, 196662u32, 196661u32, 103u32, 104u32, 105u32, 106u32, - 107u32, 108u32, 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, - 115u32, 116u32, 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, - 123u32, 124u32, 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, - 131u32, 132u32, 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, - 139u32, 140u32, 141u32, 142u32, 143u32, 144u32, 145u32, 65683u32, - 262197u32, 131127u32, 131128u32, 103u32, 104u32, 105u32, 106u32, - 107u32, 108u32, 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, - 115u32, 116u32, 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, - 123u32, 124u32, 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, - 131u32, 132u32, 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, - 139u32, 140u32, 141u32, 142u32, 143u32, 144u32, 145u32, 146u32, - 147u32, 196664u32, 196663u32, 103u32, 104u32, 105u32, 106u32, 107u32, + 196661u32, 196660u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, - 140u32, 141u32, 142u32, 143u32, 144u32, 145u32, 65683u32, 262199u32, - 131135u32, 131136u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, + 140u32, 141u32, 142u32, 143u32, 65681u32, 262196u32, 131126u32, + 131127u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, - 141u32, 142u32, 143u32, 144u32, 145u32, 146u32, 147u32, 196672u32, - 196671u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, 109u32, - 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, 117u32, - 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, 125u32, - 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, 133u32, - 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, 141u32, - 142u32, 143u32, 144u32, 145u32, 65683u32, 262207u32, 131137u32, - 131138u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, 109u32, - 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, 117u32, - 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, 125u32, - 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, 133u32, - 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, 141u32, - 142u32, 143u32, 144u32, 145u32, 146u32, 147u32, 196674u32, 196673u32, + 141u32, 142u32, 143u32, 144u32, 145u32, 196663u32, 196662u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, 141u32, 142u32, - 143u32, 144u32, 145u32, 65683u32, 262209u32, 131141u32, 131142u32, - 196677u32, 196678u32, 262214u32, 131139u32, 131140u32, 196675u32, - 196676u32, 262212u32, 45u32, 46u32, 47u32, 131133u32, 131134u32, - 148u32, 149u32, 196670u32, 262206u32, 45u32, 46u32, 47u32, 196669u32, - 65685u32, 262205u32, 131143u32, 131144u32, 196679u32, 196680u32, - 262216u32, 131145u32, 131146u32, 196681u32, 196682u32, 262218u32, - 131147u32, 131148u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, - 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, - 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, - 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, - 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, - 141u32, 142u32, 143u32, 144u32, 145u32, 146u32, 147u32, 196684u32, - 196683u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, 109u32, + 143u32, 65681u32, 262198u32, 131134u32, 131135u32, 102u32, 103u32, + 104u32, 105u32, 106u32, 107u32, 108u32, 109u32, 110u32, 111u32, + 112u32, 113u32, 114u32, 115u32, 116u32, 117u32, 118u32, 119u32, + 120u32, 121u32, 122u32, 123u32, 124u32, 125u32, 126u32, 127u32, + 128u32, 129u32, 130u32, 131u32, 132u32, 133u32, 134u32, 135u32, + 136u32, 137u32, 138u32, 139u32, 140u32, 141u32, 142u32, 143u32, + 144u32, 145u32, 196671u32, 196670u32, 102u32, 103u32, 104u32, 105u32, + 106u32, 107u32, 108u32, 109u32, 110u32, 111u32, 112u32, 113u32, + 114u32, 115u32, 116u32, 117u32, 118u32, 119u32, 120u32, 121u32, + 122u32, 123u32, 124u32, 125u32, 126u32, 127u32, 128u32, 129u32, + 130u32, 131u32, 132u32, 133u32, 134u32, 135u32, 136u32, 137u32, + 138u32, 139u32, 140u32, 141u32, 142u32, 143u32, 65681u32, 262206u32, + 131136u32, 131137u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, + 108u32, 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, + 116u32, 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, + 124u32, 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, + 132u32, 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, + 140u32, 141u32, 142u32, 143u32, 144u32, 145u32, 196673u32, 196672u32, + 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, 141u32, - 142u32, 143u32, 144u32, 145u32, 65683u32, 262219u32, 131149u32, - 196685u32, 65614u32, 0u32, 48u32, 49u32, 50u32, 51u32, 52u32, 53u32, - 54u32, 55u32, 56u32, 57u32, 58u32, 59u32, 60u32, 61u32, 62u32, 63u32, - 64u32, 65u32, 66u32, 67u32, 68u32, 69u32, 70u32, 71u32, 72u32, 73u32, - 74u32, 75u32, 76u32, 77u32, 78u32, 79u32, 150u32, 65686u32, 151u32, - 65687u32, 131223u32, 65688u32, 131224u32, + 142u32, 143u32, 65681u32, 262208u32, 131140u32, 131141u32, 196676u32, + 196677u32, 262213u32, 131138u32, 131139u32, 196674u32, 196675u32, + 262211u32, 44u32, 45u32, 46u32, 131132u32, 131133u32, 146u32, 147u32, + 196669u32, 262205u32, 44u32, 45u32, 46u32, 196668u32, 65683u32, + 262204u32, 131142u32, 131143u32, 196678u32, 196679u32, 262215u32, + 131144u32, 131145u32, 196680u32, 196681u32, 262217u32, 131146u32, + 131147u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, + 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, + 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, + 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, + 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, + 141u32, 142u32, 143u32, 144u32, 145u32, 196683u32, 196682u32, 102u32, + 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, 109u32, 110u32, + 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, 117u32, 118u32, + 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, 125u32, 126u32, + 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, 133u32, 134u32, + 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, 141u32, 142u32, + 143u32, 65681u32, 262218u32, 131148u32, 196684u32, 65613u32, 0u32, + 47u32, 48u32, 49u32, 50u32, 51u32, 52u32, 53u32, 54u32, 55u32, 56u32, + 57u32, 58u32, 59u32, 60u32, 61u32, 62u32, 63u32, 64u32, 65u32, 66u32, + 67u32, 68u32, 69u32, 70u32, 71u32, 72u32, 73u32, 74u32, 75u32, 76u32, + 77u32, 78u32, 148u32, 65684u32, 149u32, 65685u32, 131221u32, + 65686u32, 131222u32, ]; static RULESET_OFFSETS: &[u32] = &[ - 0u32, 37u32, 40u32, 41u32, 42u32, 73u32, 75u32, 97u32, 98u32, 99u32, - 104u32, 109u32, 135u32, 136u32, 137u32, 138u32, 139u32, 168u32, - 171u32, 172u32, 186u32, 189u32, 191u32, 192u32, 193u32, 196u32, - 198u32, 199u32, 200u32, 203u32, 205u32, 206u32, 207u32, 208u32, - 219u32, 220u32, 221u32, 222u32, 223u32, 234u32, 260u32, 261u32, - 262u32, 269u32, 270u32, 271u32, 272u32, 273u32, 295u32, 301u32, - 323u32, 328u32, 351u32, 358u32, 359u32, 361u32, 387u32, 388u32, - 389u32, 402u32, 406u32, 407u32, 408u32, 409u32, 410u32, 411u32, - 412u32, 413u32, 414u32, 415u32, 416u32, 423u32, 425u32, 454u32, - 455u32, 456u32, 463u32, 488u32, 489u32, 499u32, 504u32, 509u32, - 510u32, 511u32, 512u32, 513u32, 514u32, 516u32, 517u32, 518u32, - 519u32, 520u32, 527u32, 528u32, 531u32, 532u32, 533u32, 534u32, - 535u32, 565u32, 572u32, 573u32, 574u32, 575u32, 580u32, 581u32, - 582u32, 589u32, 590u32, 591u32, 596u32, 597u32, 600u32, 647u32, - 648u32, 649u32, 694u32, 695u32, 696u32, 697u32, 698u32, 700u32, - 701u32, 702u32, 703u32, 704u32, 751u32, 752u32, 797u32, 798u32, - 845u32, 846u32, 891u32, 892u32, 939u32, 940u32, 985u32, 986u32, - 1033u32, 1034u32, 1079u32, 1080u32, 1082u32, 1083u32, 1084u32, - 1085u32, 1087u32, 1088u32, 1089u32, 1090u32, 1097u32, 1098u32, - 1099u32, 1104u32, 1105u32, 1107u32, 1108u32, 1109u32, 1110u32, - 1112u32, 1113u32, 1114u32, 1115u32, 1162u32, 1163u32, 1208u32, - 1209u32, 1210u32, 1211u32, 1212u32, 1249u32, 1250u32, 1251u32, - 1252u32, + 0u32, 37u32, 40u32, 41u32, 42u32, 72u32, 74u32, 95u32, 96u32, 97u32, + 102u32, 107u32, 132u32, 133u32, 134u32, 135u32, 136u32, 164u32, + 167u32, 168u32, 182u32, 185u32, 187u32, 188u32, 189u32, 192u32, + 194u32, 195u32, 196u32, 199u32, 201u32, 202u32, 203u32, 204u32, + 215u32, 216u32, 217u32, 218u32, 219u32, 229u32, 254u32, 255u32, + 256u32, 262u32, 263u32, 264u32, 265u32, 266u32, 287u32, 292u32, + 314u32, 320u32, 321u32, 323u32, 348u32, 349u32, 350u32, 362u32, + 366u32, 367u32, 368u32, 369u32, 370u32, 371u32, 372u32, 373u32, + 374u32, 375u32, 376u32, 382u32, 384u32, 412u32, 413u32, 414u32, + 420u32, 444u32, 445u32, 455u32, 460u32, 465u32, 466u32, 467u32, + 468u32, 469u32, 470u32, 472u32, 473u32, 474u32, 475u32, 476u32, + 483u32, 484u32, 487u32, 488u32, 489u32, 490u32, 491u32, 521u32, + 528u32, 529u32, 530u32, 531u32, 536u32, 537u32, 538u32, 545u32, + 546u32, 547u32, 552u32, 553u32, 556u32, 602u32, 603u32, 604u32, + 648u32, 649u32, 650u32, 651u32, 652u32, 654u32, 655u32, 656u32, + 657u32, 658u32, 704u32, 705u32, 749u32, 750u32, 796u32, 797u32, + 841u32, 842u32, 888u32, 889u32, 933u32, 934u32, 980u32, 981u32, + 1025u32, 1026u32, 1028u32, 1029u32, 1030u32, 1031u32, 1033u32, + 1034u32, 1035u32, 1036u32, 1043u32, 1044u32, 1045u32, 1050u32, + 1051u32, 1053u32, 1054u32, 1055u32, 1056u32, 1058u32, 1059u32, + 1060u32, 1061u32, 1107u32, 1108u32, 1152u32, 1153u32, 1154u32, + 1155u32, 1156u32, 1193u32, 1194u32, 1195u32, 1196u32, ]; static CAN_ACCEPT_ERROR: &[u8] = &[ 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 2u8, 0u8, 0u8, 0u8, 2u8, 2u8, 2u8, 2u8, 1u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 2u8, 0u8, 0u8, 0u8, 2u8, - 0u8, 2u8, 2u8, 2u8, 2u8, 0u8, 2u8, 0u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, - 0u8, 2u8, 1u8, 1u8, 0u8, 2u8, 0u8, 2u8, 0u8, 2u8, 0u8, 2u8, 0u8, 2u8, - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 1u8, 0u8, 0u8, 0u8, + 0u8, 2u8, 2u8, 2u8, 2u8, 0u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, + 1u8, 1u8, 0u8, 2u8, 0u8, 2u8, 0u8, 2u8, 0u8, 2u8, 0u8, 2u8, 0u8, 0u8, + 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, + 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 1u8, + 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, + 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, + 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, + 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, - 1u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 1u8, - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, - 0u8, 1u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, - 1u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, - 0u8, 0u8, 0u8, 0u8, 0u8, + 0u8, 0u8, 0u8, ]; - let num_states = 173usize; + let num_states = 171usize; let mut states = Vec::with_capacity(num_states); for i in 0..num_states { let term_start = SHIFT_TERM_OFFSETS[i] as usize; diff --git a/rusty_lr_parser/src/pattern.rs b/rusty_lr_parser/src/pattern.rs index 504b89f6..ca1ffebb 100644 --- a/rusty_lr_parser/src/pattern.rs +++ b/rusty_lr_parser/src/pattern.rs @@ -26,7 +26,6 @@ pub enum PatternInternal { Question(Box), Exclamation(Box), TerminalSet(bool, BTreeSet), - Lookaheads(Box, bool, BTreeSet), Group(Vec>), Byte(Located), ByteString(Located>), @@ -162,7 +161,6 @@ impl Pattern { { vec![A] } })), separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -186,7 +184,6 @@ impl Pattern { { Ap.push(A); Ap } })), separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -226,7 +223,6 @@ impl Pattern { }], reduce_action: None, separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -248,7 +244,6 @@ impl Pattern { ], reduce_action: None, separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -305,7 +300,6 @@ impl Pattern { }], reduce_action: Some(ReduceAction::Identity(0)), separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -316,7 +310,6 @@ impl Pattern { { vec![] } })), separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -356,7 +349,6 @@ impl Pattern { }], reduce_action: None, separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -365,7 +357,6 @@ impl Pattern { tokens: vec![], reduce_action: None, separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -414,7 +405,6 @@ impl Pattern { }], reduce_action: Some(ReduceAction::new_custom(quote! { Some(A) })), separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -425,7 +415,6 @@ impl Pattern { { None } })), separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -465,7 +454,6 @@ impl Pattern { }], reduce_action: None, separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -474,7 +462,6 @@ impl Pattern { tokens: vec![], reduce_action: None, separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -540,7 +527,6 @@ impl Pattern { }], reduce_action: Some(ReduceAction::Identity(0)), separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -569,97 +555,6 @@ impl Pattern { mapto: None, }) } - PatternInternal::Lookaheads(pattern, negate, lookaheads) => { - let lookaheads = if *negate { - grammar.negate_terminal_set(lookaheads) - } else { - lookaheads.clone() - }; - let base_rule = pattern.to_token(grammar, pattern_cache, root_location)?; - - let newrule_idx = grammar.nonterminals.len(); - let newrule_name = Located::new( - format!("_{}LH{}", base_rule.name.value(), newrule_idx), - root_location, - ); - - if let Some(base_typename) = &base_rule.ruletype { - let rule = Rule { - tokens: vec![TokenMapped { - token: base_rule.token, - mapto: Some(Located::new("__token0".to_string(), Location::CallSite)), - location: Location::CallSite, - reduce_action_chains: Vec::new(), - }], - reduce_action: Some(ReduceAction::Identity(0)), - separator_location: Location::CallSite, - lookaheads: Some(lookaheads), - prec: None, - dprec: None, - is_used: true, - }; - - let nonterm_info = NonTerminalInfo { - ruletype_boxed: false, - name: newrule_name.clone(), - pretty_name: self.pretty_name.clone(), - ruletype: Some(base_typename.clone()), - rules: vec![rule], - root_location: Some(root_location), - protected: false, - nonterm_type: Some(NonTerminalType::Lookahead), - }; - grammar.nonterminals.push(nonterm_info); - grammar - .nonterminals_index - .insert(newrule_name.value().clone(), newrule_idx); - - Ok(PatternToToken { - name: newrule_name, - token: Token::NonTerm(newrule_idx), - ruletype: Some(base_typename.clone()), - mapto: base_rule.mapto.clone(), - }) - } else { - let rule = Rule { - tokens: vec![TokenMapped { - token: base_rule.token, - mapto: None, - location: Location::CallSite, - reduce_action_chains: Vec::new(), - }], - reduce_action: None, - separator_location: Location::CallSite, - lookaheads: Some(lookaheads), - prec: None, - dprec: None, - is_used: true, - }; - - let nonterm_info = NonTerminalInfo { - ruletype_boxed: false, - name: newrule_name.clone(), - pretty_name: self.pretty_name.clone(), - ruletype: None, - rules: vec![rule], - root_location: Some(root_location), - protected: false, - nonterm_type: Some(NonTerminalType::Lookahead), - }; - grammar.nonterminals.push(nonterm_info); - grammar - .nonterminals_index - .insert(newrule_name.value().clone(), newrule_idx); - - Ok(PatternToToken { - name: newrule_name, - token: Token::NonTerm(newrule_idx), - ruletype: None, - mapto: base_rule.mapto.clone(), - }) - } - } - PatternInternal::Group(group) => { debug_assert!(group.len() > 0); @@ -701,7 +596,6 @@ impl Pattern { tokens, reduce_action: None, separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -717,7 +611,6 @@ impl Pattern { tokens, reduce_action: Some(ReduceAction::Identity(unique_child_idx)), separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -742,7 +635,6 @@ impl Pattern { tokens, reduce_action: Some(ReduceAction::new_custom(initializer)), separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -826,7 +718,6 @@ impl Pattern { .collect(), reduce_action: None, separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -889,7 +780,6 @@ impl Pattern { .collect(), reduce_action: None, separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -940,7 +830,6 @@ impl Pattern { { vec![__token0] } })), separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -979,7 +868,6 @@ impl Pattern { } })), separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -1016,7 +904,6 @@ impl Pattern { }], reduce_action: None, separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -1044,7 +931,6 @@ impl Pattern { ], reduce_action: None, separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -1102,7 +988,6 @@ impl Pattern { }], reduce_action: Some(ReduceAction::Identity(0)), separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -1113,7 +998,6 @@ impl Pattern { { vec![] } })), separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -1153,7 +1037,6 @@ impl Pattern { }], reduce_action: None, separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true, @@ -1162,7 +1045,6 @@ impl Pattern { tokens: vec![], reduce_action: None, separator_location: Location::CallSite, - lookaheads: None, prec: None, dprec: None, is_used: true,