From 5bc2185d642e6ad2583866403678bf940c30560f Mon Sep 17 00:00:00 2001 From: Devin Yeung Date: Sun, 10 Nov 2024 20:16:01 +0800 Subject: [PATCH 01/15] feat: grammar for typed bnf --- src/grammar/mod.rs | 11 +- .../bnfgen__grammar__test__invalid_token.snap | 2 +- .../bnfgen__grammar__test__typed.snap | 56 + ...bnfgen__grammar__test__unexpected_eof.snap | 2 +- src/parser.lalrpop | 16 +- .../bnfgen__lexer__test__it_works.snap | 960 ++++++++++++++++-- src/token.rs | 10 +- 7 files changed, 989 insertions(+), 68 deletions(-) create mode 100644 src/grammar/snapshots/bnfgen__grammar__test__typed.snap diff --git a/src/grammar/mod.rs b/src/grammar/mod.rs index 326ef15..bdcce19 100644 --- a/src/grammar/mod.rs +++ b/src/grammar/mod.rs @@ -33,6 +33,15 @@ mod test { insta::assert_debug_snapshot!(grammar); } + #[test] + fn typed() { + let text = r#" + ::= "+" ; + "#; + let grammar = RawGrammar::parse(text).unwrap(); + insta::assert_debug_snapshot!(grammar); + } + #[test] fn repeat() { let text = r#" @@ -52,7 +61,7 @@ mod test { #[test] fn invalid_token() { - let text = ":"; + let text = "*"; let err = RawGrammar::parse(text).err().unwrap(); let ui = report_with_unnamed_source(err, text); insta::assert_snapshot!(ui); diff --git a/src/grammar/snapshots/bnfgen__grammar__test__invalid_token.snap b/src/grammar/snapshots/bnfgen__grammar__test__invalid_token.snap index 5360998..fb3647e 100644 --- a/src/grammar/snapshots/bnfgen__grammar__test__invalid_token.snap +++ b/src/grammar/snapshots/bnfgen__grammar__test__invalid_token.snap @@ -4,7 +4,7 @@ expression: ui --- × Invalid token ╭──── - 1 │ : + 1 │ * · ┬ · ╰── this token is invalid ╰──── diff --git a/src/grammar/snapshots/bnfgen__grammar__test__typed.snap b/src/grammar/snapshots/bnfgen__grammar__test__typed.snap new file mode 100644 index 0000000..baddf46 --- /dev/null +++ b/src/grammar/snapshots/bnfgen__grammar__test__typed.snap @@ -0,0 +1,56 @@ +--- +source: src/grammar/mod.rs +expression: grammar +--- +RawGrammar { + rules: [ + Rule { + name: "E", + production: WeightedProduction { + alts: [ + Alternative { + span: Span { + start: 21, + end: 46, + }, + weight: 1, + invoke_limit: Unlimited, + symbols: [ + Symbol { + kind: NonTerminal( + "E", + ), + span: Span { + start: 21, + end: 31, + }, + }, + Symbol { + kind: Terminal( + "+", + ), + span: Span { + start: 32, + end: 35, + }, + }, + Symbol { + kind: NonTerminal( + "E", + ), + span: Span { + start: 36, + end: 46, + }, + }, + ], + }, + ], + }, + span: Span { + start: 13, + end: 48, + }, + }, + ], +} diff --git a/src/grammar/snapshots/bnfgen__grammar__test__unexpected_eof.snap b/src/grammar/snapshots/bnfgen__grammar__test__unexpected_eof.snap index 43142a4..b8d0324 100644 --- a/src/grammar/snapshots/bnfgen__grammar__test__unexpected_eof.snap +++ b/src/grammar/snapshots/bnfgen__grammar__test__unexpected_eof.snap @@ -6,5 +6,5 @@ expression: ui ╭──── 1 │ ::= "Hello" | "World" · ┬ - · ╰── expect "{", "|", ";", "re", "str", "nonterminal" + · ╰── expect "{", "|", ";", "<", "re", "str" ╰──── diff --git a/src/parser.lalrpop b/src/parser.lalrpop index b76647e..5871264 100644 --- a/src/parser.lalrpop +++ b/src/parser.lalrpop @@ -26,10 +26,13 @@ extern { "|" => Token::Or, "," => Token::Comma, "::=" => Token::Def, + ":" => Token::Colon, ";" => Token::Semi, + "<" => Token::LAngle, + ">" => Token::RAngle, "re" => Token::Re, "str" => Token::Str(), - "nonterminal" => Token::NonTerminal(), + "id" => Token::Id(), "int" => Token::Int(), } } @@ -43,7 +46,7 @@ pub RawGrammar: RawGrammar = { }; Rule: Rule = { - "::=" ";" => { + "<" ">" "::=" ";" => { Rule { name, production: WeightedProduction { @@ -96,7 +99,14 @@ Symbol: Symbol = { span: Span::new(l, r), } }, - => { + "<" ">" => { + Symbol { + kind: SymbolKind::NonTerminal(Rc::new(nt)), + span: Span::new(l, r), + } + }, + // typed non-terminal + "<" ":" <_ty: "str"> ">" => { Symbol { kind: SymbolKind::NonTerminal(Rc::new(nt)), span: Span::new(l, r), diff --git a/src/snapshots/bnfgen__lexer__test__it_works.snap b/src/snapshots/bnfgen__lexer__test__it_works.snap index ad31940..a81869f 100644 --- a/src/snapshots/bnfgen__lexer__test__it_works.snap +++ b/src/snapshots/bnfgen__lexer__test__it_works.snap @@ -6,9 +6,23 @@ expression: tokens Ok( ( 1, - NonTerminal( + LAngle, + 2, + ), + ), + Ok( + ( + 2, + Id( "syntax", ), + 8, + ), + ), + Ok( + ( + 8, + RAngle, 9, ), ), @@ -22,9 +36,23 @@ expression: tokens Ok( ( 22, - NonTerminal( + LAngle, + 23, + ), + ), + Ok( + ( + 23, + Id( "rule", ), + 27, + ), + ), + Ok( + ( + 27, + RAngle, 28, ), ), @@ -47,18 +75,46 @@ expression: tokens Ok( ( 34, - NonTerminal( + LAngle, + 35, + ), + ), + Ok( + ( + 35, + Id( "rule", ), + 39, + ), + ), + Ok( + ( + 39, + RAngle, 40, ), ), Ok( ( 41, - NonTerminal( + LAngle, + 42, + ), + ), + Ok( + ( + 42, + Id( "syntax", ), + 48, + ), + ), + Ok( + ( + 48, + RAngle, 49, ), ), @@ -72,9 +128,23 @@ expression: tokens Ok( ( 53, - NonTerminal( + LAngle, + 54, + ), + ), + Ok( + ( + 54, + Id( "rule", ), + 58, + ), + ), + Ok( + ( + 58, + RAngle, 59, ), ), @@ -88,9 +158,23 @@ expression: tokens Ok( ( 74, - NonTerminal( + LAngle, + 75, + ), + ), + Ok( + ( + 75, + Id( "opt-whitespace", ), + 89, + ), + ), + Ok( + ( + 89, + RAngle, 90, ), ), @@ -106,9 +190,23 @@ expression: tokens Ok( ( 95, - NonTerminal( + LAngle, + 96, + ), + ), + Ok( + ( + 96, + Id( "rule-name", ), + 105, + ), + ), + Ok( + ( + 105, + RAngle, 106, ), ), @@ -124,9 +222,23 @@ expression: tokens Ok( ( 111, - NonTerminal( + LAngle, + 112, + ), + ), + Ok( + ( + 112, + Id( "opt-whitespace", ), + 126, + ), + ), + Ok( + ( + 126, + RAngle, 127, ), ), @@ -142,18 +254,46 @@ expression: tokens Ok( ( 134, - NonTerminal( + LAngle, + 135, + ), + ), + Ok( + ( + 135, + Id( "opt-whitespace", ), + 149, + ), + ), + Ok( + ( + 149, + RAngle, 150, ), ), Ok( ( 151, - NonTerminal( + LAngle, + 152, + ), + ), + Ok( + ( + 152, + Id( "expression", ), + 162, + ), + ), + Ok( + ( + 162, + RAngle, 163, ), ), @@ -169,9 +309,23 @@ expression: tokens Ok( ( 168, - NonTerminal( + LAngle, + 169, + ), + ), + Ok( + ( + 169, + Id( "line-end", ), + 177, + ), + ), + Ok( + ( + 177, + RAngle, 178, ), ), @@ -185,9 +339,23 @@ expression: tokens Ok( ( 182, - NonTerminal( + LAngle, + 183, + ), + ), + Ok( + ( + 183, + Id( "opt-whitespace", ), + 197, + ), + ), + Ok( + ( + 197, + RAngle, 198, ), ), @@ -210,9 +378,23 @@ expression: tokens Ok( ( 207, - NonTerminal( + LAngle, + 208, + ), + ), + Ok( + ( + 208, + Id( "opt-whitespace", ), + 222, + ), + ), + Ok( + ( + 222, + RAngle, 223, ), ), @@ -251,9 +433,23 @@ expression: tokens Ok( ( 237, - NonTerminal( + LAngle, + 238, + ), + ), + Ok( + ( + 238, + Id( "expression", ), + 248, + ), + ), + Ok( + ( + 248, + RAngle, 249, ), ), @@ -267,9 +463,23 @@ expression: tokens Ok( ( 258, - NonTerminal( + LAngle, + 259, + ), + ), + Ok( + ( + 259, + Id( "list", ), + 263, + ), + ), + Ok( + ( + 263, + RAngle, 264, ), ), @@ -292,18 +502,46 @@ expression: tokens Ok( ( 269, - NonTerminal( + LAngle, + 270, + ), + ), + Ok( + ( + 270, + Id( "list", ), + 274, + ), + ), + Ok( + ( + 274, + RAngle, 275, ), ), Ok( ( 276, - NonTerminal( + LAngle, + 277, + ), + ), + Ok( + ( + 277, + Id( "opt-whitespace", ), + 291, + ), + ), + Ok( + ( + 291, + RAngle, 292, ), ), @@ -319,18 +557,46 @@ expression: tokens Ok( ( 297, - NonTerminal( + LAngle, + 298, + ), + ), + Ok( + ( + 298, + Id( "opt-whitespace", ), + 312, + ), + ), + Ok( + ( + 312, + RAngle, 313, ), ), Ok( ( 314, - NonTerminal( + LAngle, + 315, + ), + ), + Ok( + ( + 315, + Id( "expression", ), + 325, + ), + ), + Ok( + ( + 325, + RAngle, 326, ), ), @@ -344,9 +610,23 @@ expression: tokens Ok( ( 330, - NonTerminal( + LAngle, + 331, + ), + ), + Ok( + ( + 331, + Id( "line-end", ), + 339, + ), + ), + Ok( + ( + 339, + RAngle, 340, ), ), @@ -369,18 +649,46 @@ expression: tokens Ok( ( 354, - NonTerminal( + LAngle, + 355, + ), + ), + Ok( + ( + 355, + Id( "opt-whitespace", ), + 369, + ), + ), + Ok( + ( + 369, + RAngle, 370, ), ), Ok( ( 371, - NonTerminal( + LAngle, + 372, + ), + ), + Ok( + ( + 372, + Id( "EOL", ), + 375, + ), + ), + Ok( + ( + 375, + RAngle, 376, ), ), @@ -394,18 +702,46 @@ expression: tokens Ok( ( 379, - NonTerminal( + LAngle, + 380, + ), + ), + Ok( + ( + 380, + Id( "line-end", ), + 388, + ), + ), + Ok( + ( + 388, + RAngle, 389, ), ), Ok( ( 390, - NonTerminal( + LAngle, + 391, + ), + ), + Ok( + ( + 391, + Id( "line-end", ), + 399, + ), + ), + Ok( + ( + 399, + RAngle, 400, ), ), @@ -419,9 +755,23 @@ expression: tokens Ok( ( 404, - NonTerminal( + LAngle, + 405, + ), + ), + Ok( + ( + 405, + Id( "list", ), + 409, + ), + ), + Ok( + ( + 409, + RAngle, 410, ), ), @@ -435,9 +785,23 @@ expression: tokens Ok( ( 425, - NonTerminal( + LAngle, + 426, + ), + ), + Ok( + ( + 426, + Id( "term", ), + 430, + ), + ), + Ok( + ( + 430, + RAngle, 431, ), ), @@ -451,27 +815,69 @@ expression: tokens Ok( ( 434, - NonTerminal( + LAngle, + 435, + ), + ), + Ok( + ( + 435, + Id( "term", ), + 439, + ), + ), + Ok( + ( + 439, + RAngle, 440, ), ), Ok( ( 441, - NonTerminal( + LAngle, + 442, + ), + ), + Ok( + ( + 442, + Id( "opt-whitespace", ), + 456, + ), + ), + Ok( + ( + 456, + RAngle, 457, ), ), Ok( ( 458, - NonTerminal( + LAngle, + 459, + ), + ), + Ok( + ( + 459, + Id( "list", ), + 463, + ), + ), + Ok( + ( + 463, + RAngle, 464, ), ), @@ -485,9 +891,23 @@ expression: tokens Ok( ( 468, - NonTerminal( + LAngle, + 469, + ), + ), + Ok( + ( + 469, + Id( "term", ), + 473, + ), + ), + Ok( + ( + 473, + RAngle, 474, ), ), @@ -501,9 +921,23 @@ expression: tokens Ok( ( 489, - NonTerminal( + LAngle, + 490, + ), + ), + Ok( + ( + 490, + Id( "literal", ), + 497, + ), + ), + Ok( + ( + 497, + RAngle, 498, ), ), @@ -526,9 +960,23 @@ expression: tokens Ok( ( 505, - NonTerminal( + LAngle, + 506, + ), + ), + Ok( + ( + 506, + Id( "rule-name", ), + 515, + ), + ), + Ok( + ( + 515, + RAngle, 516, ), ), @@ -551,9 +999,23 @@ expression: tokens Ok( ( 524, - NonTerminal( + LAngle, + 525, + ), + ), + Ok( + ( + 525, + Id( "literal", ), + 532, + ), + ), + Ok( + ( + 532, + RAngle, 533, ), ), @@ -576,9 +1038,23 @@ expression: tokens Ok( ( 550, - NonTerminal( + LAngle, + 551, + ), + ), + Ok( + ( + 551, + Id( "text1", ), + 556, + ), + ), + Ok( + ( + 556, + RAngle, 557, ), ), @@ -610,9 +1086,23 @@ expression: tokens Ok( ( 569, - NonTerminal( + LAngle, + 570, + ), + ), + Ok( + ( + 570, + Id( "text2", ), + 575, + ), + ), + Ok( + ( + 575, + RAngle, 576, ), ), @@ -635,9 +1125,23 @@ expression: tokens Ok( ( 584, - NonTerminal( + LAngle, + 585, + ), + ), + Ok( + ( + 585, + Id( "text1", ), + 590, + ), + ), + Ok( + ( + 590, + RAngle, 591, ), ), @@ -676,18 +1180,46 @@ expression: tokens Ok( ( 613, - NonTerminal( + LAngle, + 614, + ), + ), + Ok( + ( + 614, + Id( "character1", ), + 624, + ), + ), + Ok( + ( + 624, + RAngle, 625, ), ), Ok( ( 626, - NonTerminal( + LAngle, + 627, + ), + ), + Ok( + ( + 627, + Id( "text1", ), + 632, + ), + ), + Ok( + ( + 632, + RAngle, 633, ), ), @@ -701,9 +1233,23 @@ expression: tokens Ok( ( 637, - NonTerminal( + LAngle, + 638, + ), + ), + Ok( + ( + 638, + Id( "text2", ), + 643, + ), + ), + Ok( + ( + 643, + RAngle, 644, ), ), @@ -742,18 +1288,46 @@ expression: tokens Ok( ( 666, - NonTerminal( + LAngle, + 667, + ), + ), + Ok( + ( + 667, + Id( "character2", ), + 677, + ), + ), + Ok( + ( + 677, + RAngle, 678, ), ), Ok( ( 679, - NonTerminal( + LAngle, + 680, + ), + ), + Ok( + ( + 680, + Id( "text2", ), + 685, + ), + ), + Ok( + ( + 685, + RAngle, 686, ), ), @@ -767,9 +1341,23 @@ expression: tokens Ok( ( 690, - NonTerminal( + LAngle, + 691, + ), + ), + Ok( + ( + 691, + Id( "character", ), + 700, + ), + ), + Ok( + ( + 700, + RAngle, 701, ), ), @@ -792,9 +1380,23 @@ expression: tokens Ok( ( 714, - NonTerminal( + LAngle, + 715, + ), + ), + Ok( + ( + 715, + Id( "letter", ), + 721, + ), + ), + Ok( + ( + 721, + RAngle, 722, ), ), @@ -817,9 +1419,23 @@ expression: tokens Ok( ( 728, - NonTerminal( + LAngle, + 729, + ), + ), + Ok( + ( + 729, + Id( "digit", ), + 734, + ), + ), + Ok( + ( + 734, + RAngle, 735, ), ), @@ -833,9 +1449,23 @@ expression: tokens Ok( ( 738, - NonTerminal( + LAngle, + 739, + ), + ), + Ok( + ( + 739, + Id( "symbol", ), + 745, + ), + ), + Ok( + ( + 745, + RAngle, 746, ), ), @@ -849,9 +1479,23 @@ expression: tokens Ok( ( 750, - NonTerminal( + LAngle, + 751, + ), + ), + Ok( + ( + 751, + Id( "letter", ), + 757, + ), + ), + Ok( + ( + 757, + RAngle, 758, ), ), @@ -1697,9 +2341,23 @@ expression: tokens Ok( ( 1084, - NonTerminal( + LAngle, + 1085, + ), + ), + Ok( + ( + 1085, + Id( "digit", ), + 1090, + ), + ), + Ok( + ( + 1090, + RAngle, 1091, ), ), @@ -1873,9 +2531,23 @@ expression: tokens Ok( ( 1166, - NonTerminal( + LAngle, + 1167, + ), + ), + Ok( + ( + 1167, + Id( "symbol", ), + 1173, + ), + ), + Ok( + ( + 1173, + RAngle, 1174, ), ), @@ -2385,9 +3057,23 @@ expression: tokens Ok( ( 1375, - NonTerminal( + LAngle, + 1376, + ), + ), + Ok( + ( + 1376, + Id( "character1", ), + 1386, + ), + ), + Ok( + ( + 1386, + RAngle, 1387, ), ), @@ -2410,9 +3096,23 @@ expression: tokens Ok( ( 1399, - NonTerminal( + LAngle, + 1400, + ), + ), + Ok( + ( + 1400, + Id( "character", ), + 1409, + ), + ), + Ok( + ( + 1409, + RAngle, 1410, ), ), @@ -2442,9 +3142,23 @@ expression: tokens Ok( ( 1420, - NonTerminal( + LAngle, + 1421, + ), + ), + Ok( + ( + 1421, + Id( "character2", ), + 1431, + ), + ), + Ok( + ( + 1431, + RAngle, 1432, ), ), @@ -2467,9 +3181,23 @@ expression: tokens Ok( ( 1444, - NonTerminal( + LAngle, + 1445, + ), + ), + Ok( + ( + 1445, + Id( "character", ), + 1454, + ), + ), + Ok( + ( + 1454, + RAngle, 1455, ), ), @@ -2499,9 +3227,23 @@ expression: tokens Ok( ( 1466, - NonTerminal( + LAngle, + 1467, + ), + ), + Ok( + ( + 1467, + Id( "rule-name", ), + 1476, + ), + ), + Ok( + ( + 1476, + RAngle, 1477, ), ), @@ -2515,9 +3257,23 @@ expression: tokens Ok( ( 1487, - NonTerminal( + LAngle, + 1488, + ), + ), + Ok( + ( + 1488, + Id( "letter", ), + 1494, + ), + ), + Ok( + ( + 1494, + RAngle, 1495, ), ), @@ -2531,18 +3287,46 @@ expression: tokens Ok( ( 1498, - NonTerminal( + LAngle, + 1499, + ), + ), + Ok( + ( + 1499, + Id( "rule-name", ), + 1508, + ), + ), + Ok( + ( + 1508, + RAngle, 1509, ), ), Ok( ( 1510, - NonTerminal( + LAngle, + 1511, + ), + ), + Ok( + ( + 1511, + Id( "rule-char", ), + 1520, + ), + ), + Ok( + ( + 1520, + RAngle, 1521, ), ), @@ -2556,9 +3340,23 @@ expression: tokens Ok( ( 1525, - NonTerminal( + LAngle, + 1526, + ), + ), + Ok( + ( + 1526, + Id( "rule-char", ), + 1535, + ), + ), + Ok( + ( + 1535, + RAngle, 1536, ), ), @@ -2572,9 +3370,23 @@ expression: tokens Ok( ( 1546, - NonTerminal( + LAngle, + 1547, + ), + ), + Ok( + ( + 1547, + Id( "letter", ), + 1553, + ), + ), + Ok( + ( + 1553, + RAngle, 1554, ), ), @@ -2588,9 +3400,23 @@ expression: tokens Ok( ( 1557, - NonTerminal( + LAngle, + 1558, + ), + ), + Ok( + ( + 1558, + Id( "digit", ), + 1563, + ), + ), + Ok( + ( + 1563, + RAngle, 1564, ), ), @@ -2620,9 +3446,23 @@ expression: tokens Ok( ( 1574, - NonTerminal( + LAngle, + 1575, + ), + ), + Ok( + ( + 1575, + Id( "EOL", ), + 1578, + ), + ), + Ok( + ( + 1578, + RAngle, 1579, ), ), diff --git a/src/token.rs b/src/token.rs index d6c3539..834e393 100644 --- a/src/token.rs +++ b/src/token.rs @@ -18,8 +18,14 @@ pub enum Token { Or, #[token(",")] Comma, + #[token(":")] + Colon, #[token("::=")] Def, + #[token("<")] + LAngle, + #[token(">")] + RAngle, #[token(";")] Semi, #[token("re")] @@ -32,8 +38,8 @@ pub enum Token { } })] Int(usize), - #[regex("<[^<>]*>", |lex| lex.slice()[1..lex.slice().len() - 1].to_string())] - NonTerminal(String), + #[regex("[a-zA-Z-_0-9]*", |lex| lex.slice().to_string())] + Id(String), #[rustfmt::skip] #[regex(r#""(\\["nrt\\]|[^"\\])*""#, |lex| { let text = &lex.slice()[1..lex.slice().len() - 1]; From 41b2d978f98b55a00724f6e7fda75865b153e32b Mon Sep 17 00:00:00 2001 From: Devin Yeung Date: Sun, 10 Nov 2024 20:49:10 +0800 Subject: [PATCH 02/15] feat: refine the symbol kind --- src/generator.rs | 14 ++- src/grammar/checked.rs | 6 +- src/grammar/raw.rs | 2 +- .../bnfgen__grammar__test__brainfuck.snap | 105 ++++++++++++++---- .../bnfgen__grammar__test__typed.snap | 10 +- src/grammar/symbol.rs | 82 +++++++++++++- src/parser.lalrpop | 6 +- src/utils.rs | 2 +- 8 files changed, 189 insertions(+), 38 deletions(-) diff --git a/src/generator.rs b/src/generator.rs index 0c95c19..288e266 100644 --- a/src/generator.rs +++ b/src/generator.rs @@ -1,7 +1,7 @@ use crate::grammar::checked::{CheckedGrammar, ReduceOutput}; use crate::grammar::state::State; -use crate::grammar::symbol::SymbolKind; use crate::grammar::symbol::SymbolKind::Terminal; +use crate::grammar::symbol::{NonTerminal, SymbolKind}; use crate::parse_tree::tree::ParseTree; use rand::Rng; @@ -11,11 +11,11 @@ pub struct Generator { } impl Generator { - pub fn generate(&self, start: S, rng: &mut R) -> String { + pub fn generate>(&self, start: S, rng: &mut R) -> String { let mut buf = Vec::new(); let mut state = State::new(rng); - let start = SymbolKind::NonTerminal(start.to_string().into()); + let start = SymbolKind::NonTerminal(NonTerminal::untyped(start)); let mut stack = vec![start]; while !stack.is_empty() { @@ -41,8 +41,12 @@ pub struct TreeGenerator { } impl TreeGenerator { - pub fn generate(&self, start: S, rng: &mut R) -> ParseTree { - let start = SymbolKind::NonTerminal(start.to_string().into()); + pub fn generate>( + &self, + start: S, + rng: &mut R, + ) -> ParseTree { + let start = SymbolKind::NonTerminal(NonTerminal::untyped(start)); let mut state = State::new(rng); self.generate_tree(start, &mut state) } diff --git a/src/grammar/checked.rs b/src/grammar/checked.rs index 9decd56..94c3a77 100644 --- a/src/grammar/checked.rs +++ b/src/grammar/checked.rs @@ -28,11 +28,11 @@ impl CheckedGrammar { SymbolKind::NonTerminal(s) => { let syms = self .rules - .get(s.as_ref()) - .unwrap_or_else(|| panic!("Fail to find rule of {}", s)) + .get(s.as_str()) + .unwrap_or_else(|| panic!("Fail to find rule of {:?}", s)) .choose_by_state(state); - ReduceOutput::NonTerminal { name: s, syms } + ReduceOutput::NonTerminal { name: s.name, syms } } SymbolKind::Regex(re) => { let terminals = self diff --git a/src/grammar/raw.rs b/src/grammar/raw.rs index d2ae071..1f7ff6a 100644 --- a/src/grammar/raw.rs +++ b/src/grammar/raw.rs @@ -96,7 +96,7 @@ impl RawGrammar { for sym in rule.rhs().iter().flat_map(|a| a.symbols.iter()) { match &sym.kind { SymbolKind::NonTerminal(s) => { - if !defined.contains(s.as_ref()) { + if !defined.contains(s.as_str()) { return Err(Error::UndefinedNonTerminal { span: sym.span }); } } diff --git a/src/grammar/snapshots/bnfgen__grammar__test__brainfuck.snap b/src/grammar/snapshots/bnfgen__grammar__test__brainfuck.snap index 155dd7e..e586b3f 100644 --- a/src/grammar/snapshots/bnfgen__grammar__test__brainfuck.snap +++ b/src/grammar/snapshots/bnfgen__grammar__test__brainfuck.snap @@ -18,7 +18,10 @@ RawGrammar { symbols: [ Symbol { kind: NonTerminal( - "statements", + NonTerminal { + name: "statements", + ty: Untyped, + }, ), span: Span { start: 12, @@ -48,7 +51,10 @@ RawGrammar { symbols: [ Symbol { kind: NonTerminal( - "statements", + NonTerminal { + name: "statements", + ty: Untyped, + }, ), span: Span { start: 48, @@ -57,7 +63,10 @@ RawGrammar { }, Symbol { kind: NonTerminal( - "statement", + NonTerminal { + name: "statement", + ty: Untyped, + }, ), span: Span { start: 61, @@ -76,7 +85,10 @@ RawGrammar { symbols: [ Symbol { kind: NonTerminal( - "statement", + NonTerminal { + name: "statement", + ty: Untyped, + }, ), span: Span { start: 75, @@ -106,7 +118,10 @@ RawGrammar { symbols: [ Symbol { kind: NonTerminal( - "loop", + NonTerminal { + name: "loop", + ty: Untyped, + }, ), span: Span { start: 105, @@ -125,7 +140,10 @@ RawGrammar { symbols: [ Symbol { kind: NonTerminal( - "commands", + NonTerminal { + name: "commands", + ty: Untyped, + }, ), span: Span { start: 114, @@ -164,7 +182,10 @@ RawGrammar { }, Symbol { kind: NonTerminal( - "commands", + NonTerminal { + name: "commands", + ty: Untyped, + }, ), span: Span { start: 142, @@ -203,7 +224,10 @@ RawGrammar { symbols: [ Symbol { kind: NonTerminal( - "commands", + NonTerminal { + name: "commands", + ty: Untyped, + }, ), span: Span { start: 177, @@ -212,7 +236,10 @@ RawGrammar { }, Symbol { kind: NonTerminal( - "command", + NonTerminal { + name: "command", + ty: Untyped, + }, ), span: Span { start: 188, @@ -231,7 +258,10 @@ RawGrammar { symbols: [ Symbol { kind: NonTerminal( - "command", + NonTerminal { + name: "command", + ty: Untyped, + }, ), span: Span { start: 200, @@ -261,7 +291,10 @@ RawGrammar { symbols: [ Symbol { kind: NonTerminal( - "ptrgroup", + NonTerminal { + name: "ptrgroup", + ty: Untyped, + }, ), span: Span { start: 228, @@ -270,7 +303,10 @@ RawGrammar { }, Symbol { kind: NonTerminal( - "arithmgroup", + NonTerminal { + name: "arithmgroup", + ty: Untyped, + }, ), span: Span { start: 239, @@ -289,7 +325,10 @@ RawGrammar { symbols: [ Symbol { kind: NonTerminal( - "io", + NonTerminal { + name: "io", + ty: Untyped, + }, ), span: Span { start: 255, @@ -319,7 +358,10 @@ RawGrammar { symbols: [ Symbol { kind: NonTerminal( - "ptrinc", + NonTerminal { + name: "ptrinc", + ty: Untyped, + }, ), span: Span { start: 277, @@ -377,7 +419,10 @@ RawGrammar { symbols: [ Symbol { kind: NonTerminal( - "ptrdec", + NonTerminal { + name: "ptrdec", + ty: Untyped, + }, ), span: Span { start: 313, @@ -435,7 +480,10 @@ RawGrammar { symbols: [ Symbol { kind: NonTerminal( - "valinc", + NonTerminal { + name: "valinc", + ty: Untyped, + }, ), span: Span { start: 349, @@ -493,7 +541,10 @@ RawGrammar { symbols: [ Symbol { kind: NonTerminal( - "valdec", + NonTerminal { + name: "valdec", + ty: Untyped, + }, ), span: Span { start: 385, @@ -551,7 +602,10 @@ RawGrammar { symbols: [ Symbol { kind: NonTerminal( - "ptrinc", + NonTerminal { + name: "ptrinc", + ty: Untyped, + }, ), span: Span { start: 423, @@ -570,7 +624,10 @@ RawGrammar { symbols: [ Symbol { kind: NonTerminal( - "ptrdec", + NonTerminal { + name: "ptrdec", + ty: Untyped, + }, ), span: Span { start: 434, @@ -600,7 +657,10 @@ RawGrammar { symbols: [ Symbol { kind: NonTerminal( - "valinc", + NonTerminal { + name: "valinc", + ty: Untyped, + }, ), span: Span { start: 465, @@ -619,7 +679,10 @@ RawGrammar { symbols: [ Symbol { kind: NonTerminal( - "valdec", + NonTerminal { + name: "valdec", + ty: Untyped, + }, ), span: Span { start: 476, diff --git a/src/grammar/snapshots/bnfgen__grammar__test__typed.snap b/src/grammar/snapshots/bnfgen__grammar__test__typed.snap index baddf46..785e9d8 100644 --- a/src/grammar/snapshots/bnfgen__grammar__test__typed.snap +++ b/src/grammar/snapshots/bnfgen__grammar__test__typed.snap @@ -18,7 +18,10 @@ RawGrammar { symbols: [ Symbol { kind: NonTerminal( - "E", + NonTerminal { + name: "E", + ty: Untyped, + }, ), span: Span { start: 21, @@ -36,7 +39,10 @@ RawGrammar { }, Symbol { kind: NonTerminal( - "E", + NonTerminal { + name: "E", + ty: Untyped, + }, ), span: Span { start: 36, diff --git a/src/grammar/symbol.rs b/src/grammar/symbol.rs index c2e9963..a84c27d 100644 --- a/src/grammar/symbol.rs +++ b/src/grammar/symbol.rs @@ -3,10 +3,88 @@ use crate::span::Span; use std::hash::Hash; use std::rc::Rc; +pub type Terminal = Rc; + +#[derive(Clone, Debug)] +pub struct NonTerminal { + pub(crate) name: Rc, + pub(crate) ty: Ty, +} + +impl Hash for NonTerminal { + fn hash(&self, state: &mut H) { + self.name.hash(state); + self.ty.hash(state); + } +} + +impl NonTerminal { + pub fn untyped>(name: S) -> Self { + NonTerminal { + name: Rc::new(name.into()), + ty: Ty::Untyped, + } + } + + pub fn typed>(name: S, ty: Ty) -> Self { + NonTerminal { + name: Rc::new(name.into()), + ty, + } + } + + pub fn as_str(&self) -> &str { + self.name.as_str() + } +} + +#[derive(Debug)] +pub enum Ty { + Untyped, + Typed(Rc), +} + +impl Hash for Ty { + fn hash(&self, state: &mut H) { + match self { + Ty::Untyped => ().hash(state), + Ty::Typed(s) => s.hash(state), + } + } +} + +impl Ty { + pub fn untyped() -> Self { + Ty::Untyped + } + + pub fn typed>(s: S) -> Self { + Ty::Typed(Rc::new(s.into())) + } +} + +impl Clone for Ty { + fn clone(&self) -> Self { + match self { + Ty::Untyped => Ty::Untyped, + Ty::Typed(s) => Ty::Typed(s.clone()), + } + } +} + +impl Ty { + pub fn ty(&self) -> Option<&str> { + match self { + Ty::Untyped => None, + Ty::Typed(s) => Some(s.as_str()), + } + } +} + #[derive(Debug, Clone)] pub(crate) enum SymbolKind { - Terminal(Rc), - NonTerminal(Rc), + Terminal(Terminal), + NonTerminal(NonTerminal), Regex(Rc), } diff --git a/src/parser.lalrpop b/src/parser.lalrpop index 5871264..1e456a5 100644 --- a/src/parser.lalrpop +++ b/src/parser.lalrpop @@ -4,7 +4,7 @@ use crate::grammar::{ raw::RawGrammar, rule::Rule, alt::{Alternative, Limit}, - symbol::{Symbol, SymbolKind}, + symbol::{Symbol, SymbolKind, NonTerminal}, production::WeightedProduction }; use crate::regex::Regex; @@ -101,14 +101,14 @@ Symbol: Symbol = { }, "<" ">" => { Symbol { - kind: SymbolKind::NonTerminal(Rc::new(nt)), + kind: SymbolKind::NonTerminal(NonTerminal::untyped(nt)), span: Span::new(l, r), } }, // typed non-terminal "<" ":" <_ty: "str"> ">" => { Symbol { - kind: SymbolKind::NonTerminal(Rc::new(nt)), + kind: SymbolKind::NonTerminal(NonTerminal::untyped(nt)), span: Span::new(l, r), } }, diff --git a/src/utils.rs b/src/utils.rs index 0c34dc3..81bad34 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -1,6 +1,6 @@ use crate::error::Error; use crate::span::Span; -use crate::token::{LexicalError, Token}; +use crate::token::Token; pub(crate) fn convert_parse_error(e: lalrpop_util::ParseError) -> Error { match e { From c2ae07489c58c98c776357ebffb2a75aee8c684e Mon Sep 17 00:00:00 2001 From: Devin Yeung Date: Sun, 10 Nov 2024 20:53:20 +0800 Subject: [PATCH 03/15] chore: clippy fix --- src/grammar/graph.rs | 7 +++---- src/grammar/raw.rs | 5 +---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/grammar/graph.rs b/src/grammar/graph.rs index 1260d14..f46e280 100644 --- a/src/grammar/graph.rs +++ b/src/grammar/graph.rs @@ -56,7 +56,7 @@ impl<'rule> GrammarGraph<'rule> { return Err(Error::TrapLoop { spans }); } } - Ok(&self) + Ok(self) } fn is_trap_loop(&self, scc: &Vec) -> bool { @@ -73,9 +73,8 @@ impl<'rule> GrammarGraph<'rule> { } let out_deg: HashSet = scc .iter() - .map(|nx| self.graph.neighbors(*nx)) - .flatten() + .flat_map(|nx| self.graph.neighbors(*nx)) .collect(); - out_deg == scc.iter().map(|n| *n).collect() + out_deg == scc.iter().copied().collect() } } diff --git a/src/grammar/raw.rs b/src/grammar/raw.rs index 1f7ff6a..6994767 100644 --- a/src/grammar/raw.rs +++ b/src/grammar/raw.rs @@ -39,10 +39,7 @@ impl RawGrammar { let nodes: HashMap = self .rules .iter() - .map(|rule| { - let entry = (rule.name.clone(), graph.add_node(rule.name.clone())); - entry - }) + .map(|rule| (rule.name.clone(), graph.add_node(rule.name.clone()))) .collect(); // setup the graph for rule in &self.rules { From c62e9fb6716537f746956adf87fb5693c2a14a98 Mon Sep 17 00:00:00 2001 From: Devin Yeung Date: Sun, 10 Nov 2024 21:03:50 +0800 Subject: [PATCH 04/15] feat: test typed non-terminal --- src/grammar/snapshots/bnfgen__grammar__test__typed.snap | 8 ++++++-- src/grammar/symbol.rs | 6 ++++++ src/parser.lalrpop | 4 ++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/grammar/snapshots/bnfgen__grammar__test__typed.snap b/src/grammar/snapshots/bnfgen__grammar__test__typed.snap index 785e9d8..47b733c 100644 --- a/src/grammar/snapshots/bnfgen__grammar__test__typed.snap +++ b/src/grammar/snapshots/bnfgen__grammar__test__typed.snap @@ -20,7 +20,9 @@ RawGrammar { kind: NonTerminal( NonTerminal { name: "E", - ty: Untyped, + ty: Typed( + "int", + ), }, ), span: Span { @@ -41,7 +43,9 @@ RawGrammar { kind: NonTerminal( NonTerminal { name: "E", - ty: Untyped, + ty: Typed( + "int", + ), }, ), span: Span { diff --git a/src/grammar/symbol.rs b/src/grammar/symbol.rs index a84c27d..02fe008 100644 --- a/src/grammar/symbol.rs +++ b/src/grammar/symbol.rs @@ -44,6 +44,12 @@ pub enum Ty { Typed(Rc), } +impl From for Ty { + fn from(s: String) -> Self { + Ty::Typed(Rc::new(s)) + } +} + impl Hash for Ty { fn hash(&self, state: &mut H) { match self { diff --git a/src/parser.lalrpop b/src/parser.lalrpop index 1e456a5..ba90ad9 100644 --- a/src/parser.lalrpop +++ b/src/parser.lalrpop @@ -106,9 +106,9 @@ Symbol: Symbol = { } }, // typed non-terminal - "<" ":" <_ty: "str"> ">" => { + "<" ":" ">" => { Symbol { - kind: SymbolKind::NonTerminal(NonTerminal::untyped(nt)), + kind: SymbolKind::NonTerminal(NonTerminal::typed(nt, ty.into())), span: Span::new(l, r), } }, From b7f899439f1f4ff58d1c0790759e3fe9e9d23971 Mon Sep 17 00:00:00 2001 From: Devin Yeung Date: Mon, 11 Nov 2024 17:38:59 +0800 Subject: [PATCH 05/15] migrating checkpoint --- src/grammar/checked.rs | 6 +- src/grammar/graph.rs | 14 ++-- src/grammar/mod.rs | 22 +++---- src/grammar/raw.rs | 24 +++---- src/grammar/rule.rs | 3 +- .../bnfgen__grammar__test__brainfuck.snap | 65 +++++++++++++++---- .../bnfgen__grammar__test__repeat.snap | 5 +- .../bnfgen__grammar__test__typed.snap | 5 +- src/grammar/symbol.rs | 4 +- src/parser.lalrpop | 2 +- 10 files changed, 98 insertions(+), 52 deletions(-) diff --git a/src/grammar/checked.rs b/src/grammar/checked.rs index 94c3a77..e48b9b4 100644 --- a/src/grammar/checked.rs +++ b/src/grammar/checked.rs @@ -1,12 +1,12 @@ use crate::grammar::production::WeightedProduction; use crate::grammar::state::State; -use crate::grammar::symbol::SymbolKind; +use crate::grammar::symbol::{NonTerminal, SymbolKind}; use rand::Rng; use std::collections::HashMap; use std::rc::Rc; pub struct CheckedGrammar { - pub(crate) rules: HashMap, + pub(crate) rules: HashMap, } pub enum ReduceOutput { @@ -28,7 +28,7 @@ impl CheckedGrammar { SymbolKind::NonTerminal(s) => { let syms = self .rules - .get(s.as_str()) + .get(&s) .unwrap_or_else(|| panic!("Fail to find rule of {:?}", s)) .choose_by_state(state); diff --git a/src/grammar/graph.rs b/src/grammar/graph.rs index f46e280..ee36857 100644 --- a/src/grammar/graph.rs +++ b/src/grammar/graph.rs @@ -12,7 +12,11 @@ pub struct GrammarGraph<'rule> { impl<'rule> GrammarGraph<'rule> { pub fn check_unused>(&self, start: S) -> crate::error::Result<&Self> { - let all_nts = self.nodes.keys().collect::>(); + let all_nts = self + .nodes + .keys() + .map(|s| s.as_str()) + .collect::>(); // find the reachable nodes for a given start symbol let start = self .nodes @@ -23,7 +27,7 @@ impl<'rule> GrammarGraph<'rule> { let mut reachable = HashSet::new(); while let Some(nx) = dfs.next(&self.graph) { let name = &self.graph[nx]; - reachable.insert(name); + reachable.insert(name.as_str()); } let unreachable = all_nts.difference(&reachable).collect::>(); // find the unreachable spans @@ -31,7 +35,7 @@ impl<'rule> GrammarGraph<'rule> { let spans = self .rules .iter() - .filter(|rule| unreachable.contains(&&rule.name)) + .filter(|rule| unreachable.contains(&&rule.lhs.as_str())) .map(|rule| rule.span) .collect::>(); return Err(Error::UnreachableRules { spans }); @@ -48,7 +52,7 @@ impl<'rule> GrammarGraph<'rule> { .map(|nx| { self.rules .iter() - .find(|rule| rule.name == self.graph[*nx]) + .find(|rule| rule.lhs.as_str() == self.graph[*nx]) .unwrap() .span }) @@ -64,7 +68,7 @@ impl<'rule> GrammarGraph<'rule> { // check if rule produce a terminal self.rules .iter() - .find(|rule| rule.name == name) + .find(|rule| rule.lhs.as_str() == name) .unwrap() .produce_terminals() }); diff --git a/src/grammar/mod.rs b/src/grammar/mod.rs index bdcce19..da26b25 100644 --- a/src/grammar/mod.rs +++ b/src/grammar/mod.rs @@ -83,17 +83,17 @@ mod test { insta::assert_snapshot!(ui); } - #[test] - fn duplicated_def() { - let text = r#" - ::= ; - ::= ; - ::= "?"; - "#; - let err = RawGrammar::parse(text).unwrap().to_checked().err().unwrap(); - let ui = report_with_unnamed_source(err, text); - insta::assert_snapshot!(ui); - } + // #[test] + // fn duplicated_def() { + // let text = r#" + // ::= ; + // ::= ; + // ::= "?"; + // "#; + // let err = RawGrammar::parse(text).unwrap().to_checked().err().unwrap(); + // let ui = report_with_unnamed_source(err, text); + // insta::assert_snapshot!(ui); + // } #[test] fn invalid_repeat() { diff --git a/src/grammar/raw.rs b/src/grammar/raw.rs index 6994767..eb79bf1 100644 --- a/src/grammar/raw.rs +++ b/src/grammar/raw.rs @@ -28,7 +28,7 @@ impl RawGrammar { let mut rules = HashMap::new(); for rule in self.rules { - rules.insert(rule.name, rule.production); + rules.insert(rule.lhs, rule.production); } Ok(CheckedGrammar { rules }) @@ -39,14 +39,19 @@ impl RawGrammar { let nodes: HashMap = self .rules .iter() - .map(|rule| (rule.name.clone(), graph.add_node(rule.name.clone()))) + .map(|rule| { + ( + rule.lhs.as_str().to_string(), + graph.add_node(rule.lhs.as_str().to_string()), + ) + }) .collect(); // setup the graph for rule in &self.rules { for sym in rule.rhs().iter().flat_map(|a| a.symbols.iter()) { match sym.non_terminal() { Some(name) => { - graph.add_edge(nodes[&rule.name], nodes[name], ()); + graph.add_edge(nodes[rule.lhs.as_str()], nodes[name], ()); } None => { /* do nothing */ } } @@ -60,16 +65,7 @@ impl RawGrammar { } pub fn check_duplicate(&self) -> crate::error::Result<&Self> { - let mut seen: HashMap = HashMap::new(); - for rule in &self.rules { - if let Some(prev) = seen.get(&rule.name) { - return Err(Error::DuplicatedRules { - span: rule.span, - prev: *prev, - }); - } - seen.insert(rule.name.clone(), rule.span); - } + // TODO: need to rework Ok(self) } @@ -88,7 +84,7 @@ impl RawGrammar { pub fn check_undefined(&self) -> crate::error::Result<&Self> { let defined: HashSet = - HashSet::from_iter(self.rules.iter().map(|r| r.name.clone())); + HashSet::from_iter(self.rules.iter().map(|r| r.lhs.as_str().to_string())); for rule in &self.rules { for sym in rule.rhs().iter().flat_map(|a| a.symbols.iter()) { match &sym.kind { diff --git a/src/grammar/rule.rs b/src/grammar/rule.rs index 00173f2..daa76ef 100644 --- a/src/grammar/rule.rs +++ b/src/grammar/rule.rs @@ -1,10 +1,11 @@ use crate::grammar::alt::Alternative; use crate::grammar::production::WeightedProduction; +use crate::grammar::symbol::NonTerminal; use crate::span::Span; #[derive(Debug)] pub struct Rule { - pub(crate) name: String, + pub(crate) lhs: NonTerminal, pub(crate) production: WeightedProduction, pub(crate) span: Span, } diff --git a/src/grammar/snapshots/bnfgen__grammar__test__brainfuck.snap b/src/grammar/snapshots/bnfgen__grammar__test__brainfuck.snap index e586b3f..bcc35d6 100644 --- a/src/grammar/snapshots/bnfgen__grammar__test__brainfuck.snap +++ b/src/grammar/snapshots/bnfgen__grammar__test__brainfuck.snap @@ -5,7 +5,10 @@ expression: grammar RawGrammar { rules: [ Rule { - name: "start", + lhs: NonTerminal { + name: "start", + ty: Untyped, + }, production: WeightedProduction { alts: [ Alternative { @@ -38,7 +41,10 @@ RawGrammar { }, }, Rule { - name: "statements", + lhs: NonTerminal { + name: "statements", + ty: Untyped, + }, production: WeightedProduction { alts: [ Alternative { @@ -105,7 +111,10 @@ RawGrammar { }, }, Rule { - name: "statement", + lhs: NonTerminal { + name: "statement", + ty: Untyped, + }, production: WeightedProduction { alts: [ Alternative { @@ -160,7 +169,10 @@ RawGrammar { }, }, Rule { - name: "loop", + lhs: NonTerminal { + name: "loop", + ty: Untyped, + }, production: WeightedProduction { alts: [ Alternative { @@ -211,7 +223,10 @@ RawGrammar { }, }, Rule { - name: "commands", + lhs: NonTerminal { + name: "commands", + ty: Untyped, + }, production: WeightedProduction { alts: [ Alternative { @@ -278,7 +293,10 @@ RawGrammar { }, }, Rule { - name: "command", + lhs: NonTerminal { + name: "command", + ty: Untyped, + }, production: WeightedProduction { alts: [ Alternative { @@ -345,7 +363,10 @@ RawGrammar { }, }, Rule { - name: "ptrinc", + lhs: NonTerminal { + name: "ptrinc", + ty: Untyped, + }, production: WeightedProduction { alts: [ Alternative { @@ -406,7 +427,10 @@ RawGrammar { }, }, Rule { - name: "ptrdec", + lhs: NonTerminal { + name: "ptrdec", + ty: Untyped, + }, production: WeightedProduction { alts: [ Alternative { @@ -467,7 +491,10 @@ RawGrammar { }, }, Rule { - name: "valinc", + lhs: NonTerminal { + name: "valinc", + ty: Untyped, + }, production: WeightedProduction { alts: [ Alternative { @@ -528,7 +555,10 @@ RawGrammar { }, }, Rule { - name: "valdec", + lhs: NonTerminal { + name: "valdec", + ty: Untyped, + }, production: WeightedProduction { alts: [ Alternative { @@ -589,7 +619,10 @@ RawGrammar { }, }, Rule { - name: "ptrgroup", + lhs: NonTerminal { + name: "ptrgroup", + ty: Untyped, + }, production: WeightedProduction { alts: [ Alternative { @@ -644,7 +677,10 @@ RawGrammar { }, }, Rule { - name: "arithmgroup", + lhs: NonTerminal { + name: "arithmgroup", + ty: Untyped, + }, production: WeightedProduction { alts: [ Alternative { @@ -699,7 +735,10 @@ RawGrammar { }, }, Rule { - name: "io", + lhs: NonTerminal { + name: "io", + ty: Untyped, + }, production: WeightedProduction { alts: [ Alternative { diff --git a/src/grammar/snapshots/bnfgen__grammar__test__repeat.snap b/src/grammar/snapshots/bnfgen__grammar__test__repeat.snap index 37b1b72..f48c6d1 100644 --- a/src/grammar/snapshots/bnfgen__grammar__test__repeat.snap +++ b/src/grammar/snapshots/bnfgen__grammar__test__repeat.snap @@ -5,7 +5,10 @@ expression: grammar RawGrammar { rules: [ Rule { - name: "E", + lhs: NonTerminal { + name: "E", + ty: Untyped, + }, production: WeightedProduction { alts: [ Alternative { diff --git a/src/grammar/snapshots/bnfgen__grammar__test__typed.snap b/src/grammar/snapshots/bnfgen__grammar__test__typed.snap index 47b733c..649a434 100644 --- a/src/grammar/snapshots/bnfgen__grammar__test__typed.snap +++ b/src/grammar/snapshots/bnfgen__grammar__test__typed.snap @@ -5,7 +5,10 @@ expression: grammar RawGrammar { rules: [ Rule { - name: "E", + lhs: NonTerminal { + name: "E", + ty: Untyped, + }, production: WeightedProduction { alts: [ Alternative { diff --git a/src/grammar/symbol.rs b/src/grammar/symbol.rs index 02fe008..80e8d56 100644 --- a/src/grammar/symbol.rs +++ b/src/grammar/symbol.rs @@ -5,7 +5,7 @@ use std::rc::Rc; pub type Terminal = Rc; -#[derive(Clone, Debug)] +#[derive(Clone, Debug, Eq, PartialEq)] pub struct NonTerminal { pub(crate) name: Rc, pub(crate) ty: Ty, @@ -38,7 +38,7 @@ impl NonTerminal { } } -#[derive(Debug)] +#[derive(Debug, Eq, PartialEq)] pub enum Ty { Untyped, Typed(Rc), diff --git a/src/parser.lalrpop b/src/parser.lalrpop index ba90ad9..48acf0d 100644 --- a/src/parser.lalrpop +++ b/src/parser.lalrpop @@ -48,7 +48,7 @@ pub RawGrammar: RawGrammar = { Rule: Rule = { "<" ">" "::=" ";" => { Rule { - name, + lhs: NonTerminal::untyped(name), production: WeightedProduction { alts, }, From a62bb76fb87d69ba562756dcdc2138c03b8148c3 Mon Sep 17 00:00:00 2001 From: Devin Yeung Date: Mon, 11 Nov 2024 17:41:52 +0800 Subject: [PATCH 06/15] clippy fix --- src/grammar/symbol.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grammar/symbol.rs b/src/grammar/symbol.rs index 80e8d56..182be86 100644 --- a/src/grammar/symbol.rs +++ b/src/grammar/symbol.rs @@ -53,7 +53,7 @@ impl From for Ty { impl Hash for Ty { fn hash(&self, state: &mut H) { match self { - Ty::Untyped => ().hash(state), + Ty::Untyped => { /* do nothing */ } Ty::Typed(s) => s.hash(state), } } From 78a682b2628672acbdc676ca8764d9b24016fe54 Mon Sep 17 00:00:00 2001 From: Devin Yeung Date: Mon, 11 Nov 2024 17:47:49 +0800 Subject: [PATCH 07/15] feat: better type support --- src/grammar/mod.rs | 1 + .../bnfgen__grammar__test__typed.snap | 38 +++++++++++++++++++ src/parser.lalrpop | 9 +++++ 3 files changed, 48 insertions(+) diff --git a/src/grammar/mod.rs b/src/grammar/mod.rs index da26b25..48c2886 100644 --- a/src/grammar/mod.rs +++ b/src/grammar/mod.rs @@ -37,6 +37,7 @@ mod test { fn typed() { let text = r#" ::= "+" ; + ::= ; "#; let grammar = RawGrammar::parse(text).unwrap(); insta::assert_debug_snapshot!(grammar); diff --git a/src/grammar/snapshots/bnfgen__grammar__test__typed.snap b/src/grammar/snapshots/bnfgen__grammar__test__typed.snap index 649a434..884b84b 100644 --- a/src/grammar/snapshots/bnfgen__grammar__test__typed.snap +++ b/src/grammar/snapshots/bnfgen__grammar__test__typed.snap @@ -65,5 +65,43 @@ RawGrammar { end: 48, }, }, + Rule { + lhs: NonTerminal { + name: "S", + ty: Typed( + "int", + ), + }, + production: WeightedProduction { + alts: [ + Alternative { + span: Span { + start: 76, + end: 79, + }, + weight: 1, + invoke_limit: Unlimited, + symbols: [ + Symbol { + kind: NonTerminal( + NonTerminal { + name: "E", + ty: Untyped, + }, + ), + span: Span { + start: 76, + end: 79, + }, + }, + ], + }, + ], + }, + span: Span { + start: 61, + end: 81, + }, + }, ], } diff --git a/src/parser.lalrpop b/src/parser.lalrpop index 48acf0d..f23482e 100644 --- a/src/parser.lalrpop +++ b/src/parser.lalrpop @@ -54,6 +54,15 @@ Rule: Rule = { }, span: Span::new(l, r), } + }, + "<" ":" ">" "::=" ";" => { + Rule { + lhs: NonTerminal::typed(name, ty.into()), + production: WeightedProduction { + alts, + }, + span: Span::new(l, r), + } } }; From 7f491cc705ba2931aa57003d47b64bab102fdc2c Mon Sep 17 00:00:00 2001 From: Devin Yeung Date: Mon, 11 Nov 2024 17:58:31 +0800 Subject: [PATCH 08/15] feat: add test cases --- src/grammar/checked.rs | 17 +++ ..._grammar__checked__test__it_can_merge.snap | 118 ++++++++++++++++++ 2 files changed, 135 insertions(+) create mode 100644 src/grammar/snapshots/bnfgen__grammar__checked__test__it_can_merge.snap diff --git a/src/grammar/checked.rs b/src/grammar/checked.rs index e48b9b4..37fa882 100644 --- a/src/grammar/checked.rs +++ b/src/grammar/checked.rs @@ -5,6 +5,7 @@ use rand::Rng; use std::collections::HashMap; use std::rc::Rc; +#[derive(Debug)] pub struct CheckedGrammar { pub(crate) rules: HashMap, } @@ -46,3 +47,19 @@ impl CheckedGrammar { } } } + +#[cfg(test)] +mod test { + use crate::grammar::raw::RawGrammar; + + #[test] + fn it_can_merge() { + let text = r#" + ::= "+" ; + ::= "+" ; + ::= "+" ; + "#; + let grammar = RawGrammar::parse(text).unwrap(); + insta::assert_debug_snapshot!(grammar.to_checked().unwrap()); + } +} diff --git a/src/grammar/snapshots/bnfgen__grammar__checked__test__it_can_merge.snap b/src/grammar/snapshots/bnfgen__grammar__checked__test__it_can_merge.snap new file mode 100644 index 0000000..514b617 --- /dev/null +++ b/src/grammar/snapshots/bnfgen__grammar__checked__test__it_can_merge.snap @@ -0,0 +1,118 @@ +--- +source: src/grammar/checked.rs +expression: grammar.to_checked().unwrap() +--- +CheckedGrammar { + rules: { + NonTerminal { + name: "E", + ty: Untyped, + }: WeightedProduction { + alts: [ + Alternative { + span: Span { + start: 69, + end: 94, + }, + weight: 1, + invoke_limit: Unlimited, + symbols: [ + Symbol { + kind: NonTerminal( + NonTerminal { + name: "E", + ty: Typed( + "str", + ), + }, + ), + span: Span { + start: 69, + end: 79, + }, + }, + Symbol { + kind: Terminal( + "+", + ), + span: Span { + start: 80, + end: 83, + }, + }, + Symbol { + kind: NonTerminal( + NonTerminal { + name: "E", + ty: Typed( + "str", + ), + }, + ), + span: Span { + start: 84, + end: 94, + }, + }, + ], + }, + ], + }, + NonTerminal { + name: "E", + ty: Typed( + "str", + ), + }: WeightedProduction { + alts: [ + Alternative { + span: Span { + start: 124, + end: 149, + }, + weight: 1, + invoke_limit: Unlimited, + symbols: [ + Symbol { + kind: NonTerminal( + NonTerminal { + name: "E", + ty: Typed( + "str", + ), + }, + ), + span: Span { + start: 124, + end: 134, + }, + }, + Symbol { + kind: Terminal( + "+", + ), + span: Span { + start: 135, + end: 138, + }, + }, + Symbol { + kind: NonTerminal( + NonTerminal { + name: "E", + ty: Typed( + "str", + ), + }, + ), + span: Span { + start: 139, + end: 149, + }, + }, + ], + }, + ], + }, + }, +} From 4c88febb2a87f4d21ff7c92a9614b7a5b36f33a2 Mon Sep 17 00:00:00 2001 From: Devin Yeung Date: Mon, 11 Nov 2024 19:13:39 +0800 Subject: [PATCH 09/15] testing --- src/generator.rs | 15 +++ src/grammar/checked.rs | 3 +- ..._grammar__checked__test__it_can_merge.snap | 118 ------------------ ...gen__generator__test__typed_generator.snap | 34 +++++ 4 files changed, 51 insertions(+), 119 deletions(-) delete mode 100644 src/grammar/snapshots/bnfgen__grammar__checked__test__it_can_merge.snap create mode 100644 src/snapshots/bnfgen__generator__test__typed_generator.snap diff --git a/src/generator.rs b/src/generator.rs index 288e266..9b5cc68 100644 --- a/src/generator.rs +++ b/src/generator.rs @@ -99,4 +99,19 @@ mod test { let tree = tree_gen.generate("S", &mut seeded_rng); insta::assert_debug_snapshot!(&tree); } + + #[test] + fn test_typed_generator() { + let text = r#" + ::= "+" + | "&" ; + ::= "1" | "2" | "3" ; + ::= "true" | "false" ; + "#; + let grammar = RawGrammar::parse(text).unwrap().to_checked().unwrap(); + let tree_gen = TreeGenerator { grammar }; + let mut seeded_rng = rand::rngs::StdRng::seed_from_u64(42); + let tree = tree_gen.generate("S", &mut seeded_rng); + insta::assert_debug_snapshot!(&tree); + } } diff --git a/src/grammar/checked.rs b/src/grammar/checked.rs index 37fa882..d42d883 100644 --- a/src/grammar/checked.rs +++ b/src/grammar/checked.rs @@ -1,5 +1,6 @@ use crate::grammar::production::WeightedProduction; use crate::grammar::state::State; +use crate::grammar::symbol::Ty::Untyped; use crate::grammar::symbol::{NonTerminal, SymbolKind}; use rand::Rng; use std::collections::HashMap; @@ -60,6 +61,6 @@ mod test { ::= "+" ; "#; let grammar = RawGrammar::parse(text).unwrap(); - insta::assert_debug_snapshot!(grammar.to_checked().unwrap()); + assert!(grammar.to_checked().is_ok()); } } diff --git a/src/grammar/snapshots/bnfgen__grammar__checked__test__it_can_merge.snap b/src/grammar/snapshots/bnfgen__grammar__checked__test__it_can_merge.snap deleted file mode 100644 index 514b617..0000000 --- a/src/grammar/snapshots/bnfgen__grammar__checked__test__it_can_merge.snap +++ /dev/null @@ -1,118 +0,0 @@ ---- -source: src/grammar/checked.rs -expression: grammar.to_checked().unwrap() ---- -CheckedGrammar { - rules: { - NonTerminal { - name: "E", - ty: Untyped, - }: WeightedProduction { - alts: [ - Alternative { - span: Span { - start: 69, - end: 94, - }, - weight: 1, - invoke_limit: Unlimited, - symbols: [ - Symbol { - kind: NonTerminal( - NonTerminal { - name: "E", - ty: Typed( - "str", - ), - }, - ), - span: Span { - start: 69, - end: 79, - }, - }, - Symbol { - kind: Terminal( - "+", - ), - span: Span { - start: 80, - end: 83, - }, - }, - Symbol { - kind: NonTerminal( - NonTerminal { - name: "E", - ty: Typed( - "str", - ), - }, - ), - span: Span { - start: 84, - end: 94, - }, - }, - ], - }, - ], - }, - NonTerminal { - name: "E", - ty: Typed( - "str", - ), - }: WeightedProduction { - alts: [ - Alternative { - span: Span { - start: 124, - end: 149, - }, - weight: 1, - invoke_limit: Unlimited, - symbols: [ - Symbol { - kind: NonTerminal( - NonTerminal { - name: "E", - ty: Typed( - "str", - ), - }, - ), - span: Span { - start: 124, - end: 134, - }, - }, - Symbol { - kind: Terminal( - "+", - ), - span: Span { - start: 135, - end: 138, - }, - }, - Symbol { - kind: NonTerminal( - NonTerminal { - name: "E", - ty: Typed( - "str", - ), - }, - ), - span: Span { - start: 139, - end: 149, - }, - }, - ], - }, - ], - }, - }, -} diff --git a/src/snapshots/bnfgen__generator__test__typed_generator.snap b/src/snapshots/bnfgen__generator__test__typed_generator.snap new file mode 100644 index 0000000..9d65446 --- /dev/null +++ b/src/snapshots/bnfgen__generator__test__typed_generator.snap @@ -0,0 +1,34 @@ +--- +source: src/generator.rs +expression: "&tree" +--- +Branch { + name: "S", + children: [ + Branch { + name: "E", + children: [ + Leaf( + Terminal( + "false", + ), + ), + ], + }, + Leaf( + Terminal( + "&", + ), + ), + Branch { + name: "E", + children: [ + Leaf( + Terminal( + "false", + ), + ), + ], + }, + ], +} From 817eea91f613a1366f5e1e803c273a38605bddd9 Mon Sep 17 00:00:00 2001 From: Devin Yeung Date: Mon, 11 Nov 2024 19:36:12 +0800 Subject: [PATCH 10/15] feat: support fallback when generating typed tree --- src/generator.rs | 6 +- src/grammar/checked.rs | 28 +++- ...fgen__generator__test__tree_generator.snap | 16 +- ...gen__generator__test__typed_generator.snap | 156 ++++++++++++++++-- 4 files changed, 177 insertions(+), 29 deletions(-) diff --git a/src/generator.rs b/src/generator.rs index 9b5cc68..d62446b 100644 --- a/src/generator.rs +++ b/src/generator.rs @@ -103,8 +103,10 @@ mod test { #[test] fn test_typed_generator() { let text = r#" - ::= "+" - | "&" ; + ::= | {3, 5}; + ::= + | "+" + | "&" ; ::= "1" | "2" | "3" ; ::= "true" | "false" ; "#; diff --git a/src/grammar/checked.rs b/src/grammar/checked.rs index d42d883..f3c9984 100644 --- a/src/grammar/checked.rs +++ b/src/grammar/checked.rs @@ -1,7 +1,8 @@ use crate::grammar::production::WeightedProduction; use crate::grammar::state::State; use crate::grammar::symbol::Ty::Untyped; -use crate::grammar::symbol::{NonTerminal, SymbolKind}; +use crate::grammar::symbol::{NonTerminal, SymbolKind, Ty}; +use rand::prelude::SliceRandom; use rand::Rng; use std::collections::HashMap; use std::rc::Rc; @@ -28,11 +29,26 @@ impl CheckedGrammar { match symbol { SymbolKind::Terminal(s) => ReduceOutput::Terminal(s), SymbolKind::NonTerminal(s) => { - let syms = self - .rules - .get(&s) - .unwrap_or_else(|| panic!("Fail to find rule of {:?}", s)) - .choose_by_state(state); + let syms = match s.ty { + Untyped => { + let candidates = self + .rules + .keys() + .filter(|k| k.name == s.name) + .collect::>(); + self.rules + .get(candidates.choose(state.rng()).unwrap()) + .unwrap_or_else(|| panic!("Fail to find rule of {:?}", s)) + .choose_by_state(state) + } + Ty::Typed(_) => { + // require an exact match + self.rules + .get(&s) + .unwrap_or_else(|| panic!("Fail to find rule of {:?}", s)) + .choose_by_state(state) + } + }; ReduceOutput::NonTerminal { name: s.name, syms } } diff --git a/src/snapshots/bnfgen__generator__test__tree_generator.snap b/src/snapshots/bnfgen__generator__test__tree_generator.snap index cfa5c80..93ad796 100644 --- a/src/snapshots/bnfgen__generator__test__tree_generator.snap +++ b/src/snapshots/bnfgen__generator__test__tree_generator.snap @@ -55,7 +55,7 @@ Branch { children: [ Leaf( Terminal( - "a", + "b", ), ), ], @@ -67,7 +67,7 @@ Branch { children: [ Leaf( Terminal( - "c", + "a", ), ), ], @@ -79,7 +79,7 @@ Branch { children: [ Leaf( Terminal( - "b", + "c", ), ), ], @@ -115,7 +115,7 @@ Branch { children: [ Leaf( Terminal( - "a", + "c", ), ), ], @@ -127,7 +127,7 @@ Branch { children: [ Leaf( Terminal( - "c", + "b", ), ), ], @@ -139,7 +139,7 @@ Branch { children: [ Leaf( Terminal( - "fallback", + "a", ), ), ], @@ -151,7 +151,7 @@ Branch { children: [ Leaf( Terminal( - "b", + "fallback", ), ), ], @@ -163,7 +163,7 @@ Branch { children: [ Leaf( Terminal( - "fallback", + "a", ), ), ], diff --git a/src/snapshots/bnfgen__generator__test__typed_generator.snap b/src/snapshots/bnfgen__generator__test__typed_generator.snap index 9d65446..58d4555 100644 --- a/src/snapshots/bnfgen__generator__test__typed_generator.snap +++ b/src/snapshots/bnfgen__generator__test__typed_generator.snap @@ -6,28 +6,158 @@ Branch { name: "S", children: [ Branch { - name: "E", + name: "S", children: [ - Leaf( - Terminal( - "false", - ), - ), + Branch { + name: "S", + children: [ + Branch { + name: "S", + children: [ + Branch { + name: "S", + children: [ + Branch { + name: "Expr", + children: [ + Branch { + name: "E", + children: [ + Leaf( + Terminal( + "1", + ), + ), + ], + }, + ], + }, + ], + }, + Branch { + name: "Expr", + children: [ + Branch { + name: "E", + children: [ + Leaf( + Terminal( + "1", + ), + ), + ], + }, + Leaf( + Terminal( + "+", + ), + ), + Branch { + name: "E", + children: [ + Leaf( + Terminal( + "2", + ), + ), + ], + }, + ], + }, + ], + }, + Branch { + name: "Expr", + children: [ + Branch { + name: "E", + children: [ + Leaf( + Terminal( + "3", + ), + ), + ], + }, + Leaf( + Terminal( + "+", + ), + ), + Branch { + name: "E", + children: [ + Leaf( + Terminal( + "2", + ), + ), + ], + }, + ], + }, + ], + }, + Branch { + name: "Expr", + children: [ + Branch { + name: "E", + children: [ + Leaf( + Terminal( + "2", + ), + ), + ], + }, + Leaf( + Terminal( + "+", + ), + ), + Branch { + name: "E", + children: [ + Leaf( + Terminal( + "3", + ), + ), + ], + }, + ], + }, ], }, - Leaf( - Terminal( - "&", - ), - ), Branch { - name: "E", + name: "Expr", children: [ + Branch { + name: "E", + children: [ + Leaf( + Terminal( + "2", + ), + ), + ], + }, Leaf( Terminal( - "false", + "+", ), ), + Branch { + name: "E", + children: [ + Leaf( + Terminal( + "2", + ), + ), + ], + }, ], }, ], From 3dca608ae999f56f5780f1f53fc9bb04579be5e6 Mon Sep 17 00:00:00 2001 From: Devin Yeung Date: Mon, 11 Nov 2024 19:41:44 +0800 Subject: [PATCH 11/15] improve test case --- src/generator.rs | 20 +- ...gen__generator__test__typed_generator.snap | 174 ++---------------- 2 files changed, 24 insertions(+), 170 deletions(-) diff --git a/src/generator.rs b/src/generator.rs index d62446b..f6b6555 100644 --- a/src/generator.rs +++ b/src/generator.rs @@ -103,17 +103,19 @@ mod test { #[test] fn test_typed_generator() { let text = r#" - ::= | {3, 5}; - ::= - | "+" - | "&" ; - ::= "1" | "2" | "3" ; - ::= "true" | "false" ; + ::= | "\n" {10, 20}; + + ::= ; + + ::= "1" | "2" | "3" + | "+" {3, } ; + + ::= "true" | "false" + | "&" {3, } ; "#; let grammar = RawGrammar::parse(text).unwrap().to_checked().unwrap(); - let tree_gen = TreeGenerator { grammar }; + let gen = Generator { grammar }; let mut seeded_rng = rand::rngs::StdRng::seed_from_u64(42); - let tree = tree_gen.generate("S", &mut seeded_rng); - insta::assert_debug_snapshot!(&tree); + insta::assert_snapshot!(gen.generate("S", &mut seeded_rng)); } } diff --git a/src/snapshots/bnfgen__generator__test__typed_generator.snap b/src/snapshots/bnfgen__generator__test__typed_generator.snap index 58d4555..f0fd254 100644 --- a/src/snapshots/bnfgen__generator__test__typed_generator.snap +++ b/src/snapshots/bnfgen__generator__test__typed_generator.snap @@ -1,164 +1,16 @@ --- source: src/generator.rs -expression: "&tree" +expression: "gen.generate(\"S\", &mut seeded_rng)" --- -Branch { - name: "S", - children: [ - Branch { - name: "S", - children: [ - Branch { - name: "S", - children: [ - Branch { - name: "S", - children: [ - Branch { - name: "S", - children: [ - Branch { - name: "Expr", - children: [ - Branch { - name: "E", - children: [ - Leaf( - Terminal( - "1", - ), - ), - ], - }, - ], - }, - ], - }, - Branch { - name: "Expr", - children: [ - Branch { - name: "E", - children: [ - Leaf( - Terminal( - "1", - ), - ), - ], - }, - Leaf( - Terminal( - "+", - ), - ), - Branch { - name: "E", - children: [ - Leaf( - Terminal( - "2", - ), - ), - ], - }, - ], - }, - ], - }, - Branch { - name: "Expr", - children: [ - Branch { - name: "E", - children: [ - Leaf( - Terminal( - "3", - ), - ), - ], - }, - Leaf( - Terminal( - "+", - ), - ), - Branch { - name: "E", - children: [ - Leaf( - Terminal( - "2", - ), - ), - ], - }, - ], - }, - ], - }, - Branch { - name: "Expr", - children: [ - Branch { - name: "E", - children: [ - Leaf( - Terminal( - "2", - ), - ), - ], - }, - Leaf( - Terminal( - "+", - ), - ), - Branch { - name: "E", - children: [ - Leaf( - Terminal( - "3", - ), - ), - ], - }, - ], - }, - ], - }, - Branch { - name: "Expr", - children: [ - Branch { - name: "E", - children: [ - Leaf( - Terminal( - "2", - ), - ), - ], - }, - Leaf( - Terminal( - "+", - ), - ), - Branch { - name: "E", - children: [ - Leaf( - Terminal( - "2", - ), - ), - ], - }, - ], - }, - ], -} +true & false & true & false & false + 1 + 3 + 1 + 1 + 3 + 3 + true + true + true + 1 + 2 + true + 3 + true + false From 8ca11f40b78578786858bd1e13a22b4535b42c0c Mon Sep 17 00:00:00 2001 From: Devin Yeung Date: Mon, 11 Nov 2024 20:00:50 +0800 Subject: [PATCH 12/15] fix: make output deterministic --- examples/set-algebra-typed.bnfgen | 50 +++++++++ src/generator.rs | 9 ++ src/grammar/checked.rs | 10 +- src/grammar/raw.rs | 4 +- src/grammar/symbol.rs | 1 + ...gen__generator__test__typed_generator.snap | 16 +-- ...n__generator__test__typed_set_algebra.snap | 106 ++++++++++++++++++ 7 files changed, 183 insertions(+), 13 deletions(-) create mode 100644 examples/set-algebra-typed.bnfgen create mode 100644 src/snapshots/bnfgen__generator__test__typed_set_algebra.snap diff --git a/examples/set-algebra-typed.bnfgen b/examples/set-algebra-typed.bnfgen new file mode 100644 index 0000000..4d5f2cb --- /dev/null +++ b/examples/set-algebra-typed.bnfgen @@ -0,0 +1,50 @@ + ::= re("[0-9]|[1-9][0-9]+") ; + ::= re("[a-z]+") ; + + ::= "."; + + ::= "show" + | "simplify" ; + + ::= + | {100} ; +// For generation purposes, we generate exactly 100 Decls + + ::= "int" + | "set" ; + + ::= "let" "be" "." ; + + ::= + | ; + + ::= "{" ":" "}" + | "(" ")" + | 2 + | 2 ; + + ::= 10 + | "I" + | "*" ; + + ::= 10 + | "U" + | "+" + | "-" ; + + ::= "<" + | ">" + | "=" + | "@" ; + + ::= "(" ")" + | "!" + | ; + + ::= 10 + | "&" ; + + ::= 10 + | "|" ; + + ::= 1000 "\n" | "" ; // For generation purposes, make it looks better diff --git a/src/generator.rs b/src/generator.rs index f6b6555..3ebd6f7 100644 --- a/src/generator.rs +++ b/src/generator.rs @@ -118,4 +118,13 @@ mod test { let mut seeded_rng = rand::rngs::StdRng::seed_from_u64(42); insta::assert_snapshot!(gen.generate("S", &mut seeded_rng)); } + + #[test] + fn test_typed_set_algebra() { + let text = include_str!("../examples/set-algebra-typed.bnfgen"); + let grammar = RawGrammar::parse(text).unwrap().to_checked().unwrap(); + let gen = Generator { grammar }; + let mut seeded_rng = rand::rngs::StdRng::seed_from_u64(42); + insta::assert_snapshot!(gen.generate("Program", &mut seeded_rng)); + } } diff --git a/src/grammar/checked.rs b/src/grammar/checked.rs index f3c9984..107f352 100644 --- a/src/grammar/checked.rs +++ b/src/grammar/checked.rs @@ -2,14 +2,14 @@ use crate::grammar::production::WeightedProduction; use crate::grammar::state::State; use crate::grammar::symbol::Ty::Untyped; use crate::grammar::symbol::{NonTerminal, SymbolKind, Ty}; +use indexmap::IndexMap; use rand::prelude::SliceRandom; use rand::Rng; -use std::collections::HashMap; use std::rc::Rc; #[derive(Debug)] pub struct CheckedGrammar { - pub(crate) rules: HashMap, + pub(crate) rules: IndexMap, } pub enum ReduceOutput { @@ -37,7 +37,11 @@ impl CheckedGrammar { .filter(|k| k.name == s.name) .collect::>(); self.rules - .get(candidates.choose(state.rng()).unwrap()) + .get( + *candidates + .choose(state.rng()) + .expect("No candidates available"), + ) .unwrap_or_else(|| panic!("Fail to find rule of {:?}", s)) .choose_by_state(state) } diff --git a/src/grammar/raw.rs b/src/grammar/raw.rs index eb79bf1..07e563b 100644 --- a/src/grammar/raw.rs +++ b/src/grammar/raw.rs @@ -5,8 +5,8 @@ use crate::grammar::graph::GrammarGraph; use crate::grammar::rule::Rule; use crate::grammar::symbol::SymbolKind; use crate::lexer; -use crate::span::Span; use crate::utils::convert_parse_error; +use indexmap::IndexMap; use petgraph::graph::{DiGraph, NodeIndex}; use std::collections::{HashMap, HashSet}; @@ -26,7 +26,7 @@ impl RawGrammar { pub fn to_checked(self) -> crate::error::Result { self.check_undefined()?.check_duplicate()?.check_repeats()?; - let mut rules = HashMap::new(); + let mut rules = IndexMap::new(); for rule in self.rules { rules.insert(rule.lhs, rule.production); } diff --git a/src/grammar/symbol.rs b/src/grammar/symbol.rs index 182be86..2fff404 100644 --- a/src/grammar/symbol.rs +++ b/src/grammar/symbol.rs @@ -1,5 +1,6 @@ use crate::regex::Regex; use crate::span::Span; +use std::borrow::Borrow; use std::hash::Hash; use std::rc::Rc; diff --git a/src/snapshots/bnfgen__generator__test__typed_generator.snap b/src/snapshots/bnfgen__generator__test__typed_generator.snap index f0fd254..bd6c89f 100644 --- a/src/snapshots/bnfgen__generator__test__typed_generator.snap +++ b/src/snapshots/bnfgen__generator__test__typed_generator.snap @@ -2,15 +2,15 @@ source: src/generator.rs expression: "gen.generate(\"S\", &mut seeded_rng)" --- -true & false & true & false & false - 1 + 3 + 1 + 1 + 3 - 3 - true - true - true +1 + 3 + 2 + 2 + 3 + true & false & true & true & false + false 1 2 + 1 true - 3 true - false + 2 + false + 2 + 2 diff --git a/src/snapshots/bnfgen__generator__test__typed_set_algebra.snap b/src/snapshots/bnfgen__generator__test__typed_set_algebra.snap new file mode 100644 index 0000000..22f4be6 --- /dev/null +++ b/src/snapshots/bnfgen__generator__test__typed_set_algebra.snap @@ -0,0 +1,106 @@ +--- +source: src/generator.rs +expression: "gen.generate(\"Program\", &mut seeded_rng)" +--- +let int wv be 843 . + let int wwws be r . + let int id be wctc * cifx . + let int lme be ( hm * ( ( 8 I ( ( 95303 ) * cu ) ) ) + ( 8 - ca ) U ns ) . + let int uu be 2 . + let int escur be uj - ( c ) . + let set ux be { swxdy : ! nwegv < 752 } I 4 . + let set v be xq . + let set ydlc be wn + ( ggz - yqxdt I { p : 9 - 7133 < ehp + 2 | a < b * 7 } + { v : ! ( { uxpd : ! ( ( ( 60 U jr ) I 0 ) + 7 * 68 ) + 1 = t } ) U av @ ( { ql : 241 > 8 - { v : ry = 7 } * { m : 70 I 8327 - ( qs - 70 * devui ) < { m : ! go + { lzm : ( ( 57 + iev @ 7 - ( ( k ) ) * { qsmf : 3 @ ( ( ebqkb * 70 ) + { wgm : { w : ! ( 68317 ) = 8 | dy @ 9 * sqdm - 259 } > ( { vhrcc : hftgm + 6 I rhtma @ { y : 7 = { s : ( ( ! 81 + 0 < ( vskf ) ) ) } * dfeod | ( ! ( ( fl * nus ) ) @ 7 I awjkw ) } & ( ! 4 + dhog * eh I lva - { z : ( ( 239 > 6 * 886 ) ) } = ( ( { jkd : ( ( ! ( khdg ) = dxbtx ) ) } ) ) U 810726 I 294 ) } ) } ) } - lvbuv ) ) } @ 562279 } } } ) } ) I 7552 + 0 . + let int aw be { tnihw : ( ( ( ( ( nzng ) I { ep : ( ( 19 ) = 54701 ) } ) U ghz > 620 I qay ) | ! 1 = kljri & ! { wrzif : ( ! 2888 = ddf & ! 997425 * { ptvfx : ( ( 8 ) @ 413214 ) } = { f : ( ( ( ( ( ! bckx = ii ) ) ) ) & ehyo I 4 < { cftqq : ( ( ! { cvo : ! ae + lvlrr @ { emqgp : ( nw ) = 63763 } * 62 } @ 7 ) ) } ) } I ( 289908 + n ) - { t : 675 > tvs } - k + { i : ! 255760 > ( 3 ) } + { qazs : ! ( gjdx ) > { olhyd : wr * { da : ( ! ( ( 6 U d ) ) = jjn + 2 ) } = ( { oado : 871604 > 75401 } I m + 1 ) } & 8 > ( 0 ) } * ( ucp - xppe - uv ) ) } > hondc ) ) } . + let int t be 1781 . + let set qjp be ( d ) . + let set ylrl be ( { f : ! { m : ( pax < tvu ) } = 0 * 5387 } ) . + let set pkgm be 6 * zbl . + let int oif be { bme : 3 < 6 & ( ( kjz @ ( ( ( 6 ) + lnny ) * ( ( 5 ) * q ) + 9 + 69 ) * c ) ) } . + let int joceh be ( ( 4 + 1 ) ) . + let int rekqb be 54324 . + let int iwwdq be lt * ( { xoudp : lzhgn @ 82049 } ) - 3 . + let int f be ( ( iyys ) ) - 907 . + let int hqpzj be ( { ltf : ( 823 * ( ( nl ) ) = 4 ) } ) . + let set h be ( pbei ) . + let int o be 5 . + let set j be { leel : ! 1021 * 36 > 35004 & ( 493146 < bmzqo ) } * ( biftq ) . + let set f be h . + let int vkmph be ( ( he ) - ( rb ) ) . + let set e be { zr : ( ! { un : ! 9 * fgjq = cw & ( ( ( shnb ) ) @ 1558 ) } < { y : ( f U ( 86657 ) U 4 > ( { mg : ( ( ( ( npnqa - 6 + z * yiew + q U { tlsyt : ! 9 > ( ( { lvn : ! 8 @ u - gmui & diu = if } ) + wyvq + kger * ( 48 ) ) & ( ! 1 * 92 > 3437 ) } @ 8 * g ) ) ) ) } ) ) } | { gtshr : 7386 + { g : ! 4 = 753421 } - 462 @ x | 4 > 411105 } @ { hy : ( { bicdw : ( ! { o : ( 2 * 1982 ) U gua I 26 @ 3 } > 7892 + { gg : ! iq = ( qgy * ( { ymraz : 91 > wufn } ) ) } ) | 2 = 67 } > 5 | jyod U { c : ( ( ( ( 5755 U { pi : ( dj < shg ) } ) > b ) ) ) } > jpu * { gcx : { xh : ! ( 441 ) = 471 * ( ev ) I 8 } I { npg : ( r ) < 72434 } - twjoe > qt U ( 7 U lohn ) } ) & ( ( ! ugmi I ( 9 ) > hwi * 2138 ) ) } ) } * 8 . + let set bakwi be 6 - z . + let int pb be 10535 . + let set wjia be ( t ) . + let int cyn be yk . + let int c be vqgt - dau . + let int fkpd be 4 + { nwyaw : ! 9 + p @ tvdcy | ( ! hcewg I lcyfe < arzcu ) } - tgiv * 461502 U z . + let set t be { rx : { ftzms : ! ( ( 3 - ( rsypm ) ) + 70 + { vsad : ( ! { kvtow : ! ( 992 ) * yz + { uxtmi : ! ( ( ( 75094 ) ) ) > ry I 776 & ( 438 = { xajr : 4 @ { hm : ( { s : ( txf = ( 3 ) ) & ! yqmh < ( { keiw : ! { jcoj : 732 < { fxne : hxj * 7 @ oza } I uvz } > s * { n : { c : ! 3086 < 6 } < 1 & ! 5 < 2979 I 5 - ( ( 0 ) ) U jvrl } I fmo I ( 71261 ) | jjv > { jhv : 4 I ( { ovri : pru < ( 6 + 2 ) } ) - { nxcy : ! vhy = hr | ! awcz - ( { jdkk : 567 < 9 } * 82 ) < rb } * dw + 9 - ( { wiq : ! { zdc : ! 5 @ ib * xwbsn } = i } + b ) = artr } I 8 U ne - 714 I 12826 I ylvb I 317 I qufd * ( 2 ) } ) I h & ( qmh - { up : ( dob ) > w } I { w : ! 4 * um = 1 I 1 & ( ( cqi > iusqa ) ) } ) U nn = 293776 } > ( ( yz U ( g * 8 * ( 53083 U { kes : ! 5 * 1 < qd * rrgmt } ) ) ) ) ) | ( 4 @ ( ( 8 * cu + { chvlj : ( { wcii : ( { ssi : ! { ew : ! 490 * ifqh + { wizxc : 70 = xeh + aa + 28243 } = b * qcip } @ ( gdqql ) } - jiya I ( l I 446 ) I 682 ) * ( 1 ) > { iumu : ! xlhvu < 1946 + { ii : ( ( ( i I { xkr : ( n ) < { dxx : ! 380 - wwvtt = 2 * bsfay } - k & ! { pbeqh : ! { rn : ! 7 > znxo } + ( 569 ) > ( iwbui - { jlhc : ! qae @ x & 3 * { ghin : ( ( ( 7 @ jbiik + kl + 1 ) ) | ! f * 4 I riq @ on * { ftxy : ( ( ( ! 0 * ( ( { hmtd : ! { jd : 0 + 23 @ 0 U 831 } I 7 I 91 * 248 + { ffclw : ! { i : ( jaa > ( l * zo ) + ( ( ahj ) U 7 + ( ( 454804 ) I gt - 348 ) ) ) } < { i : ! bxou I { k : ! { pan : ! 3 I 74689 < wjchx - 9 } + ( kpnws ) * vfsdq * afsd < 6270 } < rwtb } - 8 } @ ( ( { od : ( ! dyjh > xyit - vrr | ! ipdjb - { xwwg : ! mnqdg * { nqzzy : wj > m } U fa @ i * jdf U 287 } < 4077 I ( 901 ) ) } ) ) U ( 0 ) } ) ) @ y U { qyulf : ( ktkyn * 847 @ { wkb : ! yrm > ( { k : 244 I zfmc @ id } ) * 193 } ) & a < pg + zak } ) ) | ! 5437 < ( 584996 ) - { uatq : ( ( 1 * fymmo + 73 = 970 ) | ( ! { bk : ( ( { v : ! 3 > 724 * 5 * z } U yywbw < 3374 ) ) } < g I 8639 ) ) & { t : 639 I rg > lk * { co : ( ( ( ( h = vxy * ( 4321 * 6 ) ) ) ) & ( ( ( 1 U { qil : ( ojab I p < ( { cpeq : ( { vgvpj : 9 I 2 - kpaa * efotg I crf @ { cdsqb : 808079 < ( 85088 U ( 6 ) ) } } ) @ uz I { vtz : ! 713 = ( 903 ) } + { uimi : ( 173654 I 25 - { coijm : 5 U { j : { ge : h @ mv } < ( 77 * xtibz ) } > tf } U ( { odgu : ( ( ! hr U ( ( 666 + 71024 I lcsbs ) ) < 5 + lqf ) ) } ) * mlo ) * jjux > 2 } } I hdfo - ynuxh ) U bmy ) } * ( ( jnejn U 2 ) ) ) * 28354 ) U k < ( 4 U jp I ( d U { ih : ! eg @ w I 9 } ) - cnj U 2 ) ) ) } + 236408 } < uukk U { s : pqfx < ( { qjxnh : ! 2 U ps = 13 } ) } | ( ( ( ( ! mtiwk I ob @ 9 U ( 1752 I zema ) & ( ! 8 < inqq | ieyqg * 8 @ 672 ) ) ) ) ) } | ( 171 ) < vekr I { byeql : ( ! twjw > { g : ! 59389 < ( 60 - { cid : ( { s : ( ( 451549 ) < dmuv U evva ) } @ 368 ) } ) U ( ( ( gqabo ) ) ) } - g + xweim ) } U yb ) } ) } U { bi : vznjx @ 51 } > ( qpv * 9 - { llv : ! d U { tt : i U jjvie > 5 } > 76 * 5 } + ( { ptii : ! { zarh : ! oia I ( zxb ) - { hmfyk : ( dfhgm @ 919285 * 6 * 751 ) } > ku * 3 & ( ( ( ( ( ! 4 = ( e ) * ( zgxm U 3 ) ) ) ) | ( { jotk : 5 < { yc : ( z * z ) + ( { eduz : ! gtwg @ 487 I { e : ! 2854 > xdr } I ( ( lgtq U pxyr ) ) } - 58 ) I { dlb : ! 39 - 261038 @ csl } = 33 I ( kc U fvhm + lykj ) & 2455 = qnk & ( ! { gylvj : ( ( 6 I ( 41 * ( { jii : ! 7 > eulpy U ( 342 + ( 2 ) ) } ) ) ) = giryd ) } = 159 I tqh ) } } < ( 641620 ) ) ) | krt @ cs + 7 I cfga | ! yu - 2 > ieox U ( 936 I u ) ) & ! ( ikx I { skgrq : ( ( ! { tpvnk : ( jh U gp @ 23136 U 847126 U mxt ) } > 1 I ( v I ( 5 ) ) ) ) } ) - ulbr * 2 < vvpkq } I jvxes > anc } ) ) } ) } = ( { njuv : ! y @ bk } ) } + 56 I { ldcuy : gho > sqaw | ! 88 < 7 * oqrha U kuhb I ( hsgm ) | 338 > y } I t < 313565 ) ) ) } + 6 } I { g : ! uw + mwbhy = wifrp I ( 7 + iw ) + ( v * woj ) - 4 + e - ( mont ) U 28 } } * ( lgde ) * jivix * { knj : vnh U ( 5 ) = { dilw : dll = ev + 26 I ykswr + 2 & ! 60206 * bvcqw @ dsws } } - 5 I 866 - 37 * zuhno ) I 925050 I 3 @ 5 } * h - 2 ) ) & ! 9 > ww ) } } I 45197 ) & ! 6 < gf & ( ( ( cqbk < ( qtqtl ) & ( ! 9997 = 74 + 4 & ( ( ( 1 = { bnls : 336419 = { nxcib : ! n = 2 } } ) | ! 0 < { cwfj : ( ! { uqye : ! { e : ! g + 8 + ( m U { wywx : ! w * gimqg I fahpc < dmqi * { j : ! shs > u } I 8 } ) > ( 23 ) } U ( 668 ) < kb I 0 } @ 1337 - l ) } U 0 & ( ( ! 1 U { zyz : { ng : 7581 @ { bomm : ( ( vg * kldj ) - hqa - 3 @ wbwff I { gmcez : ! krsf < hz } I ftt ) } } I { tqwst : ( ! { agfu : 0 - marm > zmxj } @ 957941 ) } > li } I 7 < u * r ) ) ) ) ) ) ) ) } @ cygi } I qq * ( 9 - u ) U { rr : ( ! { gy : hkm * ( 3603 - ( 7 ) - gvzab - tlm U 466961 ) I { mu : ( ! 566 + ( cucq U ( 21112 * 3 ) ) I wy @ re U { ugoe : ! ( 400 ) = hfdh + 46 } + ntd ) } = 60182 U ( 111635 ) } U 0 < 1 ) } > y + 4 ) } ) * jx = 8002 } @ 801090 } + ( 9 ) - ( 89 U ncur * { id : 2 + 898849 @ bz & ! { ogns : ( 535598 < 5 & ( ( w ) = 726305 - 8 * ( ( 6 ) * wxny ) * 2 ) ) } U ( 3 * 7 ) - dz < { wava : ! 56 = 4846 I ( 8 ) } } ) I s . + let set ohq be { eouf : ( ( ( ( ! ( ( ( q * nf ) ) I ( { i : lvf I 624 > ( { upi : { u : ! 83 < a } = 5591 + ( pzi - vh I { zdn : ( ( 871587 < ( { hcup : i U xg < 6 } U kyof ) | ( ! t @ m ) ) ) } U ( ( kvvy ) ) ) * b } ) } ) + { aeuf : ( 87 ) < ( 788185 ) | ! ( 3 ) < 0 * { out : qni @ 936 } } ) = ( 10 ) ) ) ) ) } . + let set wjd be 588261 I ( r ) . + let int orq be wtk U go - s . + let set xr be ( 3 ) * 464 - 940 . + let int ei be ( ( l ) ) . + let set x be ( { g : ! j - 6340 @ { gr : ( ( 45817 = 53122 ) ) } } ) . + let int lww be ( 6 ) . + let set iode be cocrc - 9302 . + let int nhe be ( 4 - 9 I mxgtq - 963536 ) . + let set yaqc be 4 . + let int jlxca be 8 . + let set rfhy be 6 I ( 344 ) . + let set zxqr be 3 . + let set ylls be 641647 . + let int sbmh be ( vl ) . + let set orlwe be ytof * emb . + let int wssqr be ( ( 67681 - { vm : ( ! { i : ( ( pk ) ) - urdks + 54083 > 4 } = 4 | 906 @ xstg * ( kpq - 94825 ) ) } ) * { q : { z : 1 < { r : 9 I rfara < vmsq } } @ 9 } ) . + let int qx be 6413 U ysvvc . + let set t be 759265 . + let set nx be ( gbwps ) . + let set bvv be ( 2873 ) . + let set ns be { kc : ! { u : ! ( { jy : yoe - ( 50378 * 547 ) + ( ts ) @ wfi } ) > ( 956168 U bpj ) } @ ( h ) - ( { ocztd : ( { su : p @ 3 } - ( i ) + 0 ) < 5 * ( uuqk - ( { vi : ilf + 70 - 58683 = drr } ) ) } ) } . + let int znzut be 485225 U gwhjm . + let set xbpg be ( ritwh ) * 5 U ( ( lhmz ) ) . + let int budz be { we : ! { f : ( ! fo = ( ( to ) ) - 2545 ) } = 4 I 1 } . + let int ln be fhbez . + let set l be 646397 . + let set bfq be ( im - { ll : ! 7 U ut @ 274721 } ) . + let set cedz be { v : 939 I a + nem < jkh } . + let int acsq be 2 . + let set kloye be ( 1 - xah * ( ( rggwe ) * 90 U 720 ) ) . + let set g be { g : ! { eqwh : 6 < q } = ppu } * mdsr I 707 . + let int la be tjqw . + let int vn be 0 . + let int pmiu be 394 * { xw : 1066 < gat & ! 941770 = ( ( { kpl : aa = vxky } ) + ic ) | ! q - ( ( 45 ) ) = ypqon & ( ( 78236 + ( ninre ) ) > ( { mzap : ! { nawlw : 0 - obaja = a } @ ax I xqemj & ( ! { x : ( { xq : cz I 6 = 403 } > 28460 - { zoj : ! 1 < ( { ebuv : ( ( ! { d : ( 8 ) < 38 U { que : ( f - 7 < 1135 ) } } > 150 I 8 & ! nz < vuma ) ) } ) * 40 I g - ( rb U { lqep : zzs U ( { hmxx : ! 115867 - h * ( xe ) @ dmjac + w + iiav I { vynpr : 3 * 2 > s } } ) I lsdbj I mcylh > o } ) & ! { htm : ! xtim @ fcnn } * ( ianwm ) > 73912 * ir + 9152 + efnp } ) } = { htrd : ! ( ( 579 ) ) > { ze : ! ld < { qda : ! dwusw > 6 } | 62 = mb * b I 80 } } U vky ) } ) ) } * { d : ! gtms < ( ( 5 ) + { n : ! rx * 1 @ gw * { cxruh : ( ( ( ! ( ehhmy * 6 * cm ) > { aw : ( rhg U { pxny : ! 14869 @ 532004 U { ggke : ! rl > 7 } & 24 < ( { l : ppd = 59 * k } ) + 7 * weres + i } @ 852401 * 3 - gi & ! 4 + ( wxvva U ( eju * { pgtmy : 86253 I 9615 > uqqq I ( 4 U ( 2645 ) ) } U { ctoio : { izznd : or @ { fndd : ! quyrj U qm @ 2 } U 0 I 5 & ! zsk < 4 I { qhog : ! uubd + up < pbq } * et * ( 0 ) * { tvcwb : ( ! yjgw > ( 2 I { zac : ( ! ydwf + hoi - 563 @ 7 - 0 ) } ) ) | ( ! 0 @ vm ) & ( ( ! { s : ( ( ! sccxg > ( { oxy : ( ! il @ { mm : 700 = kfvgu - im } ) | 49 - { itdv : ( { gk : ! ( 1350 I ( pkjsv ) ) I 7 - s < 68373 } - 5 @ 340761 - ( 5000 ) ) & zjoo = ( { vkf : ( ! { zzu : ecfgd < qhezg } > ( b ) ) } ) U 5 I { aoncn : ! ( { fa : vecxh @ { jqeuc : ( cgi ) - 0 = vvp * 1 | ( ! 194045 > 43127 ) } } ) + ( ( k ) ) = 2 } } = ( { lx : ( 1 = { ktkka : ( { voegp : ! ( ( 5552 I ( heevg ) ) ) * ylnb + 223 U n > ur I ( { at : { s : ! ykafi < 393 } = ( ejl U { hmg : ! 806 < idj * 951253 U zgyt } ) * sajy * ( me ) } ) } ) - ( dyhue ) > ( { lknh : ( 8604 < { gk : ( vpg * 2260 > { dyvt : { bz : pb * { c : ( ! 6 - { vxx : ! 371 + putzc < 3 * cjd U 0 } I 4 > ( { lttf : ( ! mv I kxvm * qt I f * nr U { o : ( { qc : ( ( ( ( g - jzm ) - 3 * nl * 9 * fwclk ) ) ) I { fjxl : ( ( uadfd - pmfmk > { bxt : 3715 U nzym < 94 } + ( { q : fyjx @ 3382 } I jv ) ) ) } < 6 | { hnp : ( { bpcx : { w : { ota : ( ( ( ( jjp * hkabw ) ) ) @ 8576 ) } < n } < rx & ! { gzaoq : ccfaj * { e : 4 > h - 645178 } I 5 = { nx : ! 2 U ubh = { sobfu : ! 6 I 7 = ( 1 ) & fwgl U ( ( er U 9 ) ) @ h } } } = rffv * ( { hebs : ! hno * 0 < { kmnqe : ! 6 > 6829 | ( ! 7 I ( uwtq ) > ( ( iqat I 903 - 1 U ( 644524 ) ) ) ) } U 7 } U frawo ) } - bsoc > 4677 & ! { hjcn : ( 79343 = 64486 ) & ! a * t = wu } * g * yt < 9 I kj ) } > 7 | ( { c : 0 < pdvo + xgq - 0 I 4 } ) < d } + e > pc U ( 4 ) | 9 = ( { siok : ! 8 * riwx > { v : ! 709 = ( ( { hlspg : ! t < ( { yfp : { murpe : ( ogjpe U { kfdm : ( or = rfuc ) } ) < { y : ! ( { bpfmt : ( ( ( ibmi ) + ( ml ) @ ( 67157 ) | 7 = 92826 U ( 2 ) - b | ( ceawc ) I glkji @ 42 ) ) } + mqko * ( g ) ) @ 8013 | ( ( ( ( 7091 U qne = 46508 ) ) & ( nkn @ lsk + ( ( 308 ) ) & ! { yiot : ( { nuwpr : ! ( ush ) = u + { ekoj : ! fps @ 28897 } I oqa - { auic : { dbts : 2 < 802 | ! 222614 * hl U ( xasi ) * ( n ) = { ehsy : ! mbcb U ( 9 ) < sp } * 445922 + { kzlt : ( a @ ( 398853 ) ) & ! xtr * g > 7 } } > 3 } - ( ( 0 I cwg ) ) } * g ) > phjny } I ( 3 ) > { o : ! 8 U 847785 @ 5 } I ( 93391 I tz ) ) ) ) } } * ( grzyf ) < kn | ! yshih U ( ( 58 * icez I 5 I { ahf : { cfv : { toz : ! vf > { hlqr : eda + 3 > tch } } < utobu & ! 700 < { qxbt : ( ! znspg > w + ( 361 ) ) | { yvlpa : ( ( ( ! { d : ! taxu < { li : ! g < muj I t U sudiw } } @ ( ( tljng I { dhbdb : ! yu * { arc : qysqw + 7 > ( 884 ) } U ogauz - ( 216141 * ( ( v ) ) + ( 6 - l - 5 ) ) = 9 } + l ) ) ) ) ) } I { aqsq : om < 690816 } = 69039 & ( ! { bo : ( ! zulov U geac I { qxbj : ( ( ( ( ( 8 = 942 ) ) ) ) ) } + d U 9 I { man : ( uclw ) + ddho I ( gsxwh I 60562 ) < 13024 } * zoyg I ( ggb ) = ( 4 ) ) } = { rrafy : ! ( mle + 74839 U 63 ) < j } ) & ( ( 13 ) - 0 > 1 ) } | ( ( yf = { i : ! { lykl : ( 90 I a = { jo : ( rjkxp ) * oj @ nezl & ( ( ( va @ ( { qvr : ( 2 < 0 ) } ) ) ) ) } * 160011 I lafz ) } < { ge : ! fkfa = j } } ) ) } > jitla - 22 U { sfg : ! 3 < 27830 } } ) + 7212 I 13386 ) = { s : ( ( ( 4 ) ) = udgm * vdo ) } & ( hrpa * j + yabfp I { bg : 470 * 931962 = egyc * 294 } ) = twnv | ( ! urbkm < yvwy * 495352 ) } - ( 87776 ) ) - 47 | wkzza - 0 = z } ) ) * ( 4 ) | 799 @ ( osp I mndlt ) | ( ( { o : ! 1810 = { x : 90 = wxjn } * esbps } ) I l > 1 ) } } I sshti ) * ( ( voe I 11046 ) ) & ! x = 145 * { mg : ! vgi = { pbaax : ( { lbg : ( ( 5 U wll ) > { g : jgmad U ogt @ 3 } ) } I 996 < 6 I dcea U gp ) } } + { q : ( ! { exghc : ! 818311 > { fzms : ( ( ! 106328 > { oojw : 4 + ( ( { xrtdu : ! oydox < 504 } ) - ly - oq I lgnsz ) @ 8 & ( ! wn > { zs : ! { jg : ! { od : ( q - 325 * { ws : ! ( 234 * 43 ) < etw } ) - { y : ( ( 1 + ( hxqrx * dxb ) @ ( 3 + rgkvx U { pfhcl : lni = 346468 + ( { up : ( ! { yaprz : ! 58837 < 2726 } I 0 > bhvmr * 4 & ( iyd ) * 4 < by ) } I whh ) * { gnj : ( ! 53190 @ 467301 U 337 ) } + 518053 } ) ) ) | ( ( ! 1 @ 2 ) ) & 2 U { ywukw : ( 1 < 0 I oaa * hbs * ( { qwlc : { goc : ! 2 > 3 } @ ( { jye : ( kemd > 5462 ) } U y * { lytx : ( ! 6 < ( { o : 40986 I dzod @ { cpuc : ( ! yobhs = kybho ) } I 44 - { og : ! { sc : hf < zgctj } U 45 * km = a } | lrit < ( 6 ) U rlsj } * ayclh ) - obuw U 55854 ) } U ( 37868 ) * 7 + { criu : ( ( ! ( q ) @ { izt : ! { tm : ( ( le ) ) = 7 - { csafs : ( ! 3 < ijc - { hvky : 3 - ( { tkb : ( { y : ( ! qw = { nwi : ! ysphq > 89103 I 2 } ) & ! j > 719581 } ) > 3 - nlw } ) > { em : ! ku < yuyud | ! { mxldg : ( ( ! 2 = ( ( { niep : ! 8944 > { lolz : ( ( 0 ) > 1 * 378 ) & ( ! 0 @ { x : ( w @ hv I e ) } ) } } I ( { z : ! 2 I ( 1108 ) = 743 } ) ) ) * { ga : 3 < 846 } ) ) } > 4 * ( ( zmoyy ) + 9105 ) - wvvil | lr I { qtpv : 37 * 630 @ { jq : ! cntd > 9777 } } = 7 } I 5 U 965 & cs + { wysrd : ! { bwkt : ( ( 8744 @ ( { mqqrv : bca = 7 } * gf ) + ( { bxlsz : y > ds } ) ) ) } < gzd } = 2 } + 7 ) } + 6 } < 8498 } ) ) & ( ( ( h > 63 - tkh | ! 9739 = 978174 ) ) ) | ( 592256 U det < 3181 ) } ) | ( ( ! ( 62353 ) = fnq * 886135 ) ) & ( ( ! ( wyei U { jsbhn : ! vs U rn = 9093 & { kzp : hykr I ( ( { ihk : ( 4 ) = 5 } ) ) @ gfv } @ { snqnv : 1017 = 4 - { iaed : ! 2 < ( 639478 ) * ( { yn : 957 - { fy : 7 < 8 I gsbmu } > sr | ( ! 818 - { pig : ! qxd @ ik * ( jypmu - 25187 * 0 ) + 21247 U p + pikuk } @ ( 4 * qlga I ( 8 ) U n ) ) } ) - 0 * ( 9 U ( yjvat ) ) - jyl * vjq } } } ) + 3 - { mzb : ! 365004 U r * jjn = yav * jxxu } = { suns : 7 < ( c U { co : ! 8 = { q : 7106 * ( 81650 ) < 74 } } - e ) } ) ) } ) ) } < of * sv } I bq = ( 6 ) | ! gfq = ( 864508 ) + qj - keoad | ( ( ! uefer @ aof ) ) } @ vg | pxzto > yp + k } U ( { nh : ! { lf : ( 8 < 4 + { qop : { u : ! { f : 2 < xk + 707 } - ( ail ) - l I { gzabs : { bah : ! eoj + { vl : ! 79386 I ( { r : szg @ x } U { fviz : { o : tnmt I 409 @ ( ( ( auq + 5 ) ) ) * jol + 5267 * 0 | ( ! 5 + 28 - nrmu I { wwlgl : nr @ ( ( 8 ) ) } = 6511 * jqzc + ffm ) } - { tzxo : ! 37178 * ( 596431 ) I ( 4 U kkm I ( hpu ) ) > 60 } = 3745 U fckc } ) I ykekk = zwgh } - ( l ) = iynnq I { uwa : ! lnkmg < 5353 } & ! c < 2562 I { mxi : ( ( { md : ( ( { wwzao : ! { buhao : 0 < nit I { k : mcs - { tnuon : ( 8659 U { ka : h = tq } I { ppx : ! w - ( ( ( 7 - { qnoml : ! 7 < zgl } I smqdt ) ) ) @ 783 } ) * n < 0 } U 8 > { oqcpf : ( ! { kgu : ( ( ( ! { xtcj : ! gf = ( { vsorh : ( { xpucx : mwjax + 750835 U { mrp : ( ic * 809538 ) * 6626 @ xoiz | ek > 6 } > 28683 } < ke ) } ) } U xkx * 62682 I feic * ( 9 ) I pikg > 2 U { mt : ! bg I 4 > ( 8 ) } ) ) | ( erbo ) I 61 - hmnbx > 7 I tfiu ) } + ianq > kyhe - ( 161796 I raj ) + ( ( ykfx U { zs : ( ( ( ( { ieyqz : ( ! mibx @ { fogpg : ( ! 750324 = ( bp - { okf : ( ! { bvrgq : ( ! ro * ( ( 4 ) ) = mlb ) } < ( ( m ) U ( ( { hvpr : ! ivauw = 8 | ( ! 2724 U 0 = 0 ) } ) * ( ( 18041 - 539 ) U j ) ) I dzjtb ) ) | ( ( 2855 @ ien U o ) ) & o @ { sc : ! { n : 4 = c | ( ( ( 1318 U 14 ) ) I e > pn & 3 - h = opi ) } = 910012 } + dqpb } ) ) } ) | ! ( ( { qz : yhf @ 3 } U { csbn : ( ! 9594 < r ) } U 557676 ) ) @ 7 } ) * 9 - ( { qprp : 54918 I ( 82 ) > 23013 } ) @ 3 I t * ( 2 I xw ) ) ) ) } ) ) ) } + sm } } * 5 @ 2 } = c ) ) } > 45699 ) ) } U jcyaf } + uufkb U 32 < { uj : { wu : ! kg @ 56 * ( nz - ayb U { rh : ( ( ( ( h ) - hxyr @ dklp ) ) ) } ) I u I 497574 I { jvtr : ( ! 4 - 5230 I i @ ( ihoj - f ) ) } I 6 } = { yvoph : ! 385890 @ u I mf } | ! ( 74 ) - { lugw : ! rzy < 0 + n } > 8 } } < acino & ( ! y - 68991 @ 829195 U ( 571 U 1 ) ) | ( 88 ) * qt > ( hgqef ) I 1 } > wsjvt } + { oglr : ! 432081 + { i : ( gexug I { o : ! zw < 88 I 73 } U ecgw ) = ( hocu ) } * afatw U { h : ! 2 < y I ( 19458 I ( bgss ) ) } - l - i @ ( 3 ) } | ( 4 * mkrej @ 820 * m ) & ! j < ( { ilf : ( ( ( ! jam U { lxrr : 29 @ i } U ( { ec : ! f I ( zntie ) < { vyg : ( ( ( ( 7 ) ) * 5 @ 6 ) ) } } ) > ot ) ) ) | ! ( ( ee ) ) = ( v ) } - jwfit + ( { b : 1 + dmt = 2 } I eh + tivfn I yzohz ) ) U wulxe ) } = tw - ( 9 ) } ) @ ( { i : ( ( ( ! { gf : ( ( ( xmzmw U 730043 < { il : ( { zapyc : ( ( 9 - ( kkrah ) ) > 1874 ) } ) > dwcew I 8 * g } ) ) ) } > 4 I ys U 983107 ) ) ) } U rwit I rroah ) } & ( 2 ) > 0 I { yrdps : ! 1159 @ qyia | ( 4 - 151 * { mkqgl : ( ! ( 9 * 6 ) I fokok > ( { vhm : ( 5 < 2 - 7 ) } ) * qfe ) & ! { ucc : ! ( 9 I cs I { h : kbh * ( eyqz ) I n * m < ( qxp ) } * { xwcqe : { p : ! { jjfjz : ( 61316 = 6 + 3741 & ! { qnyy : ! { zaefu : ( 4 + 8653 * vvg - ( ( o * xvjq ) ) @ jensf & ! yvfm @ ( ( 9 ) ) * 9033 ) } = j + ( ( { pywz : { q : ( ! 4 I ( gshfb ) = 76624 ) & ( ( ! 689760 < tk ) ) } < zgil & ( ! 890888 U 506360 I { qooe : gnnmf I mjkj = gcts | ( { o : ( ( ! { riips : r + 330635 + 180 = 1102 * d I ( { q : ! ( luau ) > hxj } ) I cmqsp } < ( y ) ) ) } I lhesf < { mfwgm : ( ( ( ! 688 > pulzu ) ) ) } ) } + foq < 4 - 63 ) } ) ) } @ 3 U 5 U ku ) | ! j > br } < pm } > zjqrd | 6 * 37 @ 4 } * 0 ) @ si } + lnx = fj & ( ( y ) I ( 37663 I qyanq ) - { rx : ( ( ! 12 - 0 - { jpmyp : ( ( rx - 5386 * 805 I { qryeq : 359 @ { vnain : 7 I 7 < { h : ! 99 @ djsb & ( 1 < sbfuc + { l : 936 U 3 U 423 I ( { cyr : ! { ibzz : { pc : ( ! 47 U 1 = 132626 U lgciu U 19 ) } * 757 U yjd @ 4 } U { pg : ! oiw I 8 @ 972 & ! ( r * { qjn : ( ! bo @ ( jooxi * 8 + 9 ) ) } ) + ( { j : ! 8 U { xfhlz : ( 3 @ 9 + ( is + b ) ) | q U 93795 = risx I zw I { fz : 9464 > r } I 130056 } > ( ( 5546 ) U ( { ukpd : ( ( { q : ! 26 U ( l ) > dlwdi U oh } < srh * 920664 ) ) } ) ) I 9884 * 355685 } ) = ddymi - 521 } = 9 } ) > { rfe : ( { zwadu : 95116 - 7760 I ( ( dbt ) ) > yx } + 7 = mml ) } } * ( 906 ) * iyxt ) } I { mk : ( 63784 + ( or ) @ { rl : ( ( ( ! ie > { yb : ! bmr = v } - 0 ) ) ) } ) & ( ( ( ( 7111 - { azj : 7 < jcjw } ) = bt - 0 ) ) ) } I ( ( { ixbg : 29853 < { ehk : ! 4 > ( ( 5 ) I { y : { q : ( ( ! { hh : 5 I ( dx U sg ) - 3 = { xy : ( ! 32 @ { gdvt : ( 4 > lj - 2025 I { rk : ( 9 U 2 = glzex ) } - { oq : ( 56 ) @ 143675 } ) } ) } I { kdxo : 197 < 2 } | ( ! jfv - 835806 @ xmv ) } > nejfj ) ) } < cxkx } ) I ( ( 3 ) ) - ( { j : ! 2 = 0 } ) } } ) U 916 ) + 4253 } & ( ( ( ( ( { g : ( kto @ sd ) } U { a : ! ( ( i I 4 ) ) * 7 @ 75 } @ c U g ) ) ) ) ) } @ ( 9 ) & ( ( ( ( up < { bi : { ac : ! ( ugwhg ) = 9 } I 6 < ( 78213 ) & ( ! d > hgrh ) } I 97 ) ) | ( ( ( ! { jwfoe : ! lxa = ( cywj * 8 ) } U ( ( 47 ) ) > 9 - 0 & 1 @ 7 ) ) & ! twsnt < pikj ) ) ) ) ) } I ( 883 - 34334 ) = ( { hnlh : ( ! 3978 = 8 ) } ) | ( ( n = ( i I 7 ) ) ) ) ) } @ t ) } @ ( ( tb ) ) ) } ) } ) ) } U gbh } + 6 I ( 578 ) < 268 ) } ) } < ( l * ( { y : ( ! 2 - bxrfj < 3 * iuwso - 6 ) } ) * 97 - byd ) & ( ( ! 0 @ ( 49 ) & ! 163404 = { ucowj : ! 4 < 80689 } - 7 ) ) ) } + { goi : { gprtc : cyv + htldo I ( ( 4 ) ) = xekw } > 13 & ! { oegl : ( uwg - jo @ { i : ( 1 = l ) } ) } @ dfawy } I 671 ) * 767413 ) } @ 555113 } > wq } & 8 U f + ( fx - 803 * 9 ) < { mcj : g I 2 > 2 | ! jogt @ 4 - ( 2361 ) } I 962 ) } - zenqj | ( 7 I mjwgx < { idhhu : ( ( ! 3 - { mgjsx : ! ( hh ) U 1 = l } * 0 = 1338 | 2 > 628 & ( ( { w : jidbf < gadko | ! 27163 = wpcsm } * 92251 * 57207 I awi + { rlsg : { arfz : ! wl > 201 } < ( ( ( 5 ) ) ) } > 6 ) ) ) ) } + { z : ttc U 17 > 2 } | ! 7 = ( ( { gzjk : ( ( ! fhi * hkfv - 4 * kxijm @ farng ) ) } ) ) I nierm & ! 32288 = { ahw : 9 < 7316 } * xo ) ) | fad < { un : ! ( 1 ) I sfpdi * { yo : ( ! ( 9 ) * smx + 8 U ( { il : ( ( ! ycskp - 656 = ( { dl : ! ( { xrpny : ! lg @ 8 + xzcbp } - 714 ) I ueu > ( vyumo + ( ml ) ) } I { lth : ! viq U rnxgy I 1 = ( { lbik : 78 @ 713 * 86 U ( bsin ) U fbz } ) U 0 * ( uxtn ) } ) ) ) } ) @ ( ( { zr : ! sguyu > 0 I 1 | { nph : ( ! ( 26166 ) = { di : ! ovnn I 80923 @ 1 } ) } > ( aig ) + cc - ygjx - 954199 | ! 93475 < wh + 2 } + { nsa : ( ( i > x ) ) } ) ) ) } + { bbcb : pepc > 7 & ( 17 ) @ { kbkq : ! { st : ( m > byvxo U { lvncp : ! smhbw = ( je ) } ) } > ey } - jdn } * 46 - 5137 = 8 } I 6841 * db & ! 2 I 0 > vact I ( uamjn - 4 U j ) } ) } - ( ( { w : ( ! ( gdpb + pxxyq ) * xw I 4 < 4256 ) & 979 > 7 } ) ) ) & ( ! 0 - ( 6 U ( zvk ) + { jt : ( ( ( ssn I ( vjxl ) * 28756 > 2 U 6 & ! { znwdd : ! { f : ! 5 @ ( ( 8 I 825 ) ) } @ 1 } > ( ( 9348 I hzhwz ) ) ) ) | ! btm @ { sauq : ( ( wup @ 5 ) ) } ) } ) - { xa : ! causi @ { qooba : { aat : ! 3320 I giduy > 0 } @ { kg : ( ! ( { v : ! 3 @ biu + { jyple : { mcmr : 1 < 68 U ( dbgnp ) } < 866 + { m : nb > 8 } } } + kw ) > 8 ) } } U irbh & yynuz > 9 } < 3 ) } ) I 7844 } ) + vhok ) ) } > 798323 ) ) } } < ( 18026 ) & nnlx < { w : ! d * fmj = { qqbi : ( 22 < tmvlc | kc * ( { cxn : ( ! xss < 342 ) } ) = 94101 ) } - { wotoo : rxrk - zurhn * { zz : cy * 1 * btlo - ( h ) @ { umpvy : ! pq < hlnmq } } = { vp : ( m > 2 * laf - { lhw : ! { yjmd : ( ! ( ( { ho : ! { yle : ( ( amxp * w ) > g ) & ( 6 + ( 3 I ( pegnw ) - 880 ) U { u : ! 4 < ( ( { azteg : ( dueb U { w : ( ( lt * { kzvcy : 54829 @ bwo } U 37144 > fd - dmaar | ! 61 @ ( { zfm : vsp < y } ) + 92651 ) ) } + 520095 - 1174 @ kpre | ! ( yctgp I 1 ) I 2 U { ma : ! ( 4 ) + ( { epmwz : ! 7 @ 78 } I 4 ) I ylxt > m I 7 } > 5 ) } ) ) } < jkdj | ( b > scdv ) ) } * 4307 = 78500 } ) ) > ( ( 31576 I 8 ) * y * 89 ) ) } > y & ! hiw + ( 5 ) U ( gd I 6 ) > ( 2 I apqgc ) U muksx | ( ( ! 54144 + 69 = { fi : ! { ubca : ! ( mulqp I { pamjg : 2 + gbsor > ( { wamvt : ( gpeu < 38 ) } I 96 ) - { y : ! bjfy @ 324633 } U { kk : ( ! 83027 @ ( ad ) ) } } ) + uv + abn + { flb : ! y < { yuy : ! ( ( { thrzz : ( 3 * 0 ) @ 9395 } - ( 5 * yc ) ) + rzws ) I ecp @ ( m ) } + hh U ( msmc I 826 ) I 0 } > { xaw : ! jd > y } I 198 } @ 5 | ! a @ aueip U 272 } ) ) } ) } I czzqf } * b & ( ! 8 = ( izlh ) ) } } ) ) + { pxd : ( ! { ifujt : 8 > { wxcr : ( ( ( ! 6 - 2 U dxc < { brbs : { ookwy : ! cxjer > ( r ) I { h : ! ( { mlwek : ! ( ih ) < ( fqnv ) + ( ( { t : ! p < ghpi U 312 * mgyg * oz } ) U 589173 I ( 0 * 34 ) ) } ) + 1732 I { g : ( ( ( ( rbml I togw < 5 - { vlype : { ifva : y I yo I { ldo : 45890 > { ingq : ( ( moyfm + { xhowk : ! ( 0 I ( 446579 ) ) < 2 U 4 } ) ) < ( 961 I yny ) U { p : ( mcni @ ( twkq U 2390 ) U fblv ) & ( ! 2 < 6 U { mc : ! hf I xjqop = 9723 - { ufk : ! aogpr @ wbowb } + vnq & ! hsme < 0 * bja } ) } | ! 7 U { arks : ( ( 29 @ 5 ) ) } + 8 = ( sgea ) * fqoxv * f } * qxkk } > 4 } U rx - e * ( ( 400 ) * { m : ( ! 303 * 0 * peejb * vr - 12013 * ( 658747 ) @ { ovvr : 3 * 5 * q - { uq : ! 68 @ wvad } I ( gjbp ) = ( { lmrhs : ( ( mrgm I 6 > 9 ) ) } ) } + lf ) } ) - hswh @ 3 } ) ) ) & ( ! 963 @ ( ( dmu ) ) + { reee : ! ( ( { ugpg : ( zfgi ) = d - 5 + vwfg * vkwox } ) ) < 2 } ) ) } > { yg : ( ! ( 732941 ) > lz ) } } } = bzt } ) ) ) } } > 2 I { md : ( ! 141225 + 1 > 52 & { jis : fye < { hz : ( 6 < 4 & ( ! ( 5899 ) < ddt I { srp : 468725 + pt > 4 I frdff * 56867 * ( 379 I nm ) I 767 } ) ) & ! 0 I 719 @ xaclq & ( ephss = 80536 - hj ) } } + { gnhbz : { tv : 9 > { ratx : ( ! yurx = 965 * 71 ) } } - 8 * vuhf @ i } < qo + 3 * 647 + ( 3 + 2 ) ) } * 39 U faqay ) & ( envqy ) > { q : ( ! { aabdt : ( { h : ! mwe I 6 = 8 } ) < { njxq : ( ( ! { bd : ( n ) I 420501 @ { pks : nnxk I ( { vwv : ( ( ! { r : ( { czlfm : 0 > ( lkhp - ( hina * 3048 * aajrp U yvp U q ) U m I ( w ) ) } I of - ( { d : ! 80822 < ( yt - { c : oymke > lmbv * 5 + sxxx * ( ( 72595 U 9 + ( 3 - ss ) ) ) I ( ( gau ) ) } - 493367 ) } U xf ) * { nrq : ( ucp + { u : 5 @ 532330 I 86 } ) @ ( 1485 ) + ey } U 4 + uuh < ( ( { maw : eob @ ( 5330 - ( ( 33 ) ) ) } ) ) - 242782 ) } < uqbh ) ) } ) U 5 @ ( orr ) } } = 4 I ( x ) ) ) } } + v I ( { jwcgz : ( ! { ex : ( ( e = 958 - 66 ) ) } @ ufp ) } ) > du ) } } < 886 ) } ) ) ) } I xsteg } ) - rtzy - 1204 - ( nu - 8924 ) } . + let int b be 1 . + let int rg be 0 . + let set fxeyd be okp . + let int jnltx be 7 . + let int t be ( { shwa : ! cg U hyv > 682 U 3 U 76007 * ( rbqd ) + ig } ) * { pl : ( ( ( ( qvcxr ) ) + ( { coqii : ! 631994 - { npov : ( { eiy : ( ( ( ! zqw - 9 > ( zgf + x ) + { yguo : j @ { bnfe : ( ! { vriv : ij @ 3 } I dfqrl @ ( { tu : ! 5 = { k : ( ! eoyk = xiiwj I ekws ) } + 50 } ) + { ydhm : { w : ! ( 325371 U 3 ) = 7 } * 1 @ yzou + 5 * sptt + ( ( 545628 I 81984 ) ) } ) } U jg } ) ) ) & ( ( ! hr + 9 - 0 < ozg & ! 4 I 1 @ ( asp ) ) ) } > { f : wkam > 8 | ( ! { topmp : 725422 = pdbks U { qm : ( ! { jpec : ( 27 = { rcd : ! { v : 581 - 0 U wra = d } < sp - 60 } ) | ! 7 @ ( ( xm ) ) } = 6683 ) } } = 800179 I svk & ! 998399 U 5752 + { bcigz : ! 7 I 5 @ 4 } @ 1 ) } & ( ( tst I jtrz - { ozp : g - ( 807727 ) @ 39 U ( eoac ) } ) ) = 7 ) & ( ( ( { m : ! xctpv > kh | ! l I 8 > cc * 7 } > ( ( ( ayf I 55 ) ) ) ) ) ) } = { fcgo : yd < 9 & ( xkvak = uz | ( eygxu = vxbe | ( tdtjb < uo ) ) ) } } - 6 ) ) < 6 U 754636 U 0 * { hz : ( 7 ) = uvcuk } ) } . + let int y be eiqe . + let set mppcn be 9 * { qnxfb : ! f + klglk = j } . + let set qtj be 5513 . + let set oax be { e : ! ( 81449 U guph - ( sn ) ) = klzlf U { hjk : 960 = g I ( bw ) | { qgies : ( ( 60 - { in : ! uf U hiwvp U 2 > { rf : ! n + 173947 I 18 + rdj = 0 } } ) > io ) } I { u : x I 1974 * rni > { b : ( ! 7532 > 4 I 7 I 7434 ) } + zya I 6 } = 46124 U ( r ) } * n + ( 57215 ) } . + let set y be 8 . + let set dc be 5 . + let int yaj be yqzqc - ( vmt ) I 0 . + let int rcqu be 35 * { m : ( ! 4 + 9 > 48555 ) } . + let set zfpne be { pk : 2 @ rn } . + let set oxz be 9 . + let int otphj be zya . + let int wqes be 1 * uhwp - 449367 . + let set e be xt . + let int nb be { mta : 660860 * cwd I eln = { bcs : ( ! 0 < { fdm : ! sepcb U a + mcn > 937 } ) } } . + let int jzx be { fjlw : ! hokqc > 9 } . + let set bzdl be 0 . + let int dzb be ( 4 U { cvlog : giaix + { c : ( bem = m + 9 ) } @ bcev + { lfr : ( ! ( ( d ) ) > 6372 + 8 I ty ) } * { q : ( ( ( ! tthkv @ mggwx ) ) ) } + { r : ( a ) < yc } } ) * { m : ( ( 44000 - ( ( 0 ) * { z : 7 > 1 * pl & ( ! psld @ { rdvkm : ! 4 > ( 7 ) } ) } + { axdt : ! nluw = og } ) ) ) @ dtulx + 46841 } - { qgh : ( ! 86790 I tanef < hs ) } . + let int yssad be fucco . + let set wlvrq be 7458 . + let int ew be 0 . + let int rzigy be ( { ahgpy : ! { dkhaw : ( { wlg : ! 149399 U rqm @ ( urkh I { zbdv : ( ( ( ( osedd I f = 144053 ) | ! { rbz : ! { swrc : ( ( ( 50 + 1 = ( ldhbh ) ) & hten < 62165 | ! 380361 > v & ! 0 > 0 ) ) & ! ( 7 ) @ 0 | 998 I ymns U 23 @ 6 } * ogjqx - 1 @ jfem U { amawn : 8 + 7 U 59 @ 798706 - ( 0 ) } } > 2 ) ) ) } * ( 5 ) ) I ( 4 I e ) } > etkj ) } > { vcng : ( ( q > 5 & ( z ) * kdkn > njp ) ) } } * pzr ) - ( iipu * ( hmkm ) ) . + let set hqfa be ( 8 ) . + let int zur be dhvwu . + let int wjsp be qc * jkxbl . + let int xby be hrkn U 52135 . + let set pun be { knu : ( ( ( ( ! 5 U dfla @ { kdy : ! 6 U 0 < { rhsv : 57 U ( { ccky : { aitr : 0 < ( ( ( kke * ( ( effro ) ) ) ) + uy ) + 3 } > 339 U { xfk : ( ! twupo I 8 @ ( { p : ( ( ! 3 U 9 < ( odmm ) ) ) & ! dcne < 4 + { xbsff : ( ( ( hra ) < ( { myph : 944 > ( { tizae : ! 8995 + vcrh < ezpqt U { mrsqy : 3925 @ 5 I prrv & 397 U gmqs < { rxeig : xr = ( xt ) } } } ) } ) I 3975 ) ) & ! 0 > 3 - ex + ( zahdk + 7446 U 5 - ( ( 239482 * { m : ( ( 5530 ) + { ipzxr : ( ( 8 U 8 < 56 ) ) | ! qcmk @ t } - 2 @ i ) } ) - { p : ! ( 38 ) = { bj : ( lfd I { alw : ( ! jbdzu < 75452 ) } I 352 @ tzc ) } } U { erm : ! 88 > tuuqv } ) ) } } ) + 4 ) } } I ( sqasz ) ) @ hr } - gf I 8 } ) ) ) | { ysscs : ( ( { ylln : ( ( ( ( ( ( 3 - { oxzz : 5 = 629 U avm } @ ( { waqgy : ( ! ( { rt : ! ( { blvi : { yinm : ! h > ahnan } @ 3 U jaky } ) = 493552 | oc > t } ) @ wre ) } I ( ( ( ( { btct : pyuc @ 8148 } ) ) ) ) ) | mo - { cq : ( ( ! { m : ( ! { z : ! shfz > lue } > 7 ) } < { vpk : 188488 > 648 } ) ) } + vl > ( 754850 U jmx ) ) & ( ( ! { fjl : 7 @ 0 } - s + b < drzj ) & ! dwm I ( k * 43090 ) = ( 6 I 3 I 4 I ( 446 + 52 U ( doh ) ) ) I cehk ) ) ) ) ) ) | ! 2 - { xnrwi : 7 + 7 < ov & ( { u : ! tzhw - { iyq : ( ( ( ( zss U yoorm @ { azani : 3 + { zlnf : { ngi : ( ( ! oh > a ) ) } = 46 * ruh U 1 } > nv * { odgts : { hfm : dmew < miwww } @ 1 } } ) ) ) ) } > ( { huhsf : ( ! { lytwz : { uwa : ! 9 > d } * 5 < yl } = 0 ) } I ( bp ) ) + kn } - 92523 > { ogup : ! 25 + r U 6 + jphm * 43 > lhg * nkvl } ) } > ( umsqo ) | ! lkmm = ( { wpgmt : ( ( ! 798462 @ 52273 ) ) } I y ) * ( ( { puvuq : ( 59 ) @ ( hbe U 6 ) - szm } U bkvvi I ( e ) ) ) } U zulci @ w ) ) | ( ! okcrr - u @ 7 + 751847 ) } = s ) } * nq * hk - 9 . + let set hmpn be ( zmbv ) . + let int o be 6 . + simplify 98 + xr . From c6c95ccecfe9af3b6837b501f52ffd2c11650a3b Mon Sep 17 00:00:00 2001 From: Devin Yeung Date: Mon, 11 Nov 2024 20:40:11 +0800 Subject: [PATCH 13/15] checkpoint: make expr typed --- examples/set-algebra-typed.bnfgen | 44 ++-- src/generator.rs | 6 +- ...n__generator__test__typed_set_algebra.snap | 204 +++++++++--------- 3 files changed, 132 insertions(+), 122 deletions(-) diff --git a/examples/set-algebra-typed.bnfgen b/examples/set-algebra-typed.bnfgen index 4d5f2cb..10c16aa 100644 --- a/examples/set-algebra-typed.bnfgen +++ b/examples/set-algebra-typed.bnfgen @@ -1,5 +1,5 @@ ::= re("[0-9]|[1-9][0-9]+") ; - ::= re("[a-z]+") ; + ::= "x" | "y" | "z" ; ::= "."; @@ -18,28 +18,36 @@ ::= | ; - ::= "{" ":" "}" - | "(" ")" - | 2 - | 2 ; +// ::= "{" ":" "}" ; + ::= "{" ":" "Predicate" "}" ; - ::= 10 - | "I" - | "*" ; + ::= "(" ")" + | 100 + | ; - ::= 10 - | "U" - | "+" - | "-" ; + ::= 2 + | "*" ; + + ::= 2 + | "U" ; + + ::= 2 + | "+" + | "-" ; + + ::= 2 + | "U" ; + + ::= "<" + | ">" + | "=" ; + + ::= "@" ; - ::= "<" - | ">" - | "=" - | "@" ; ::= "(" ")" - | "!" - | ; + | 2 "!" + | 2 ; ::= 10 | "&" ; diff --git a/src/generator.rs b/src/generator.rs index 3ebd6f7..2e3d804 100644 --- a/src/generator.rs +++ b/src/generator.rs @@ -22,6 +22,9 @@ impl Generator { // pop out the first symbol match self.grammar.reduce(stack.remove(0), &mut state) { ReduceOutput::Terminal(s) => { + println!("{s}"); + use std::io::Write; + std::io::stdout().flush().unwrap(); buf.push(s); } ReduceOutput::NonTerminal { mut syms, .. } => { @@ -125,6 +128,7 @@ mod test { let grammar = RawGrammar::parse(text).unwrap().to_checked().unwrap(); let gen = Generator { grammar }; let mut seeded_rng = rand::rngs::StdRng::seed_from_u64(42); - insta::assert_snapshot!(gen.generate("Program", &mut seeded_rng)); + let out = (0..100).map(|_| gen.generate("Expr", &mut seeded_rng)).collect::>().join("\n"); + insta::assert_snapshot!(out); } } diff --git a/src/snapshots/bnfgen__generator__test__typed_set_algebra.snap b/src/snapshots/bnfgen__generator__test__typed_set_algebra.snap index 22f4be6..f8920e0 100644 --- a/src/snapshots/bnfgen__generator__test__typed_set_algebra.snap +++ b/src/snapshots/bnfgen__generator__test__typed_set_algebra.snap @@ -1,106 +1,104 @@ --- source: src/generator.rs -expression: "gen.generate(\"Program\", &mut seeded_rng)" +expression: out --- -let int wv be 843 . - let int wwws be r . - let int id be wctc * cifx . - let int lme be ( hm * ( ( 8 I ( ( 95303 ) * cu ) ) ) + ( 8 - ca ) U ns ) . - let int uu be 2 . - let int escur be uj - ( c ) . - let set ux be { swxdy : ! nwegv < 752 } I 4 . - let set v be xq . - let set ydlc be wn + ( ggz - yqxdt I { p : 9 - 7133 < ehp + 2 | a < b * 7 } + { v : ! ( { uxpd : ! ( ( ( 60 U jr ) I 0 ) + 7 * 68 ) + 1 = t } ) U av @ ( { ql : 241 > 8 - { v : ry = 7 } * { m : 70 I 8327 - ( qs - 70 * devui ) < { m : ! go + { lzm : ( ( 57 + iev @ 7 - ( ( k ) ) * { qsmf : 3 @ ( ( ebqkb * 70 ) + { wgm : { w : ! ( 68317 ) = 8 | dy @ 9 * sqdm - 259 } > ( { vhrcc : hftgm + 6 I rhtma @ { y : 7 = { s : ( ( ! 81 + 0 < ( vskf ) ) ) } * dfeod | ( ! ( ( fl * nus ) ) @ 7 I awjkw ) } & ( ! 4 + dhog * eh I lva - { z : ( ( 239 > 6 * 886 ) ) } = ( ( { jkd : ( ( ! ( khdg ) = dxbtx ) ) } ) ) U 810726 I 294 ) } ) } ) } - lvbuv ) ) } @ 562279 } } } ) } ) I 7552 + 0 . - let int aw be { tnihw : ( ( ( ( ( nzng ) I { ep : ( ( 19 ) = 54701 ) } ) U ghz > 620 I qay ) | ! 1 = kljri & ! { wrzif : ( ! 2888 = ddf & ! 997425 * { ptvfx : ( ( 8 ) @ 413214 ) } = { f : ( ( ( ( ( ! bckx = ii ) ) ) ) & ehyo I 4 < { cftqq : ( ( ! { cvo : ! ae + lvlrr @ { emqgp : ( nw ) = 63763 } * 62 } @ 7 ) ) } ) } I ( 289908 + n ) - { t : 675 > tvs } - k + { i : ! 255760 > ( 3 ) } + { qazs : ! ( gjdx ) > { olhyd : wr * { da : ( ! ( ( 6 U d ) ) = jjn + 2 ) } = ( { oado : 871604 > 75401 } I m + 1 ) } & 8 > ( 0 ) } * ( ucp - xppe - uv ) ) } > hondc ) ) } . - let int t be 1781 . - let set qjp be ( d ) . - let set ylrl be ( { f : ! { m : ( pax < tvu ) } = 0 * 5387 } ) . - let set pkgm be 6 * zbl . - let int oif be { bme : 3 < 6 & ( ( kjz @ ( ( ( 6 ) + lnny ) * ( ( 5 ) * q ) + 9 + 69 ) * c ) ) } . - let int joceh be ( ( 4 + 1 ) ) . - let int rekqb be 54324 . - let int iwwdq be lt * ( { xoudp : lzhgn @ 82049 } ) - 3 . - let int f be ( ( iyys ) ) - 907 . - let int hqpzj be ( { ltf : ( 823 * ( ( nl ) ) = 4 ) } ) . - let set h be ( pbei ) . - let int o be 5 . - let set j be { leel : ! 1021 * 36 > 35004 & ( 493146 < bmzqo ) } * ( biftq ) . - let set f be h . - let int vkmph be ( ( he ) - ( rb ) ) . - let set e be { zr : ( ! { un : ! 9 * fgjq = cw & ( ( ( shnb ) ) @ 1558 ) } < { y : ( f U ( 86657 ) U 4 > ( { mg : ( ( ( ( npnqa - 6 + z * yiew + q U { tlsyt : ! 9 > ( ( { lvn : ! 8 @ u - gmui & diu = if } ) + wyvq + kger * ( 48 ) ) & ( ! 1 * 92 > 3437 ) } @ 8 * g ) ) ) ) } ) ) } | { gtshr : 7386 + { g : ! 4 = 753421 } - 462 @ x | 4 > 411105 } @ { hy : ( { bicdw : ( ! { o : ( 2 * 1982 ) U gua I 26 @ 3 } > 7892 + { gg : ! iq = ( qgy * ( { ymraz : 91 > wufn } ) ) } ) | 2 = 67 } > 5 | jyod U { c : ( ( ( ( 5755 U { pi : ( dj < shg ) } ) > b ) ) ) } > jpu * { gcx : { xh : ! ( 441 ) = 471 * ( ev ) I 8 } I { npg : ( r ) < 72434 } - twjoe > qt U ( 7 U lohn ) } ) & ( ( ! ugmi I ( 9 ) > hwi * 2138 ) ) } ) } * 8 . - let set bakwi be 6 - z . - let int pb be 10535 . - let set wjia be ( t ) . - let int cyn be yk . - let int c be vqgt - dau . - let int fkpd be 4 + { nwyaw : ! 9 + p @ tvdcy | ( ! hcewg I lcyfe < arzcu ) } - tgiv * 461502 U z . - let set t be { rx : { ftzms : ! ( ( 3 - ( rsypm ) ) + 70 + { vsad : ( ! { kvtow : ! ( 992 ) * yz + { uxtmi : ! ( ( ( 75094 ) ) ) > ry I 776 & ( 438 = { xajr : 4 @ { hm : ( { s : ( txf = ( 3 ) ) & ! yqmh < ( { keiw : ! { jcoj : 732 < { fxne : hxj * 7 @ oza } I uvz } > s * { n : { c : ! 3086 < 6 } < 1 & ! 5 < 2979 I 5 - ( ( 0 ) ) U jvrl } I fmo I ( 71261 ) | jjv > { jhv : 4 I ( { ovri : pru < ( 6 + 2 ) } ) - { nxcy : ! vhy = hr | ! awcz - ( { jdkk : 567 < 9 } * 82 ) < rb } * dw + 9 - ( { wiq : ! { zdc : ! 5 @ ib * xwbsn } = i } + b ) = artr } I 8 U ne - 714 I 12826 I ylvb I 317 I qufd * ( 2 ) } ) I h & ( qmh - { up : ( dob ) > w } I { w : ! 4 * um = 1 I 1 & ( ( cqi > iusqa ) ) } ) U nn = 293776 } > ( ( yz U ( g * 8 * ( 53083 U { kes : ! 5 * 1 < qd * rrgmt } ) ) ) ) ) | ( 4 @ ( ( 8 * cu + { chvlj : ( { wcii : ( { ssi : ! { ew : ! 490 * ifqh + { wizxc : 70 = xeh + aa + 28243 } = b * qcip } @ ( gdqql ) } - jiya I ( l I 446 ) I 682 ) * ( 1 ) > { iumu : ! xlhvu < 1946 + { ii : ( ( ( i I { xkr : ( n ) < { dxx : ! 380 - wwvtt = 2 * bsfay } - k & ! { pbeqh : ! { rn : ! 7 > znxo } + ( 569 ) > ( iwbui - { jlhc : ! qae @ x & 3 * { ghin : ( ( ( 7 @ jbiik + kl + 1 ) ) | ! f * 4 I riq @ on * { ftxy : ( ( ( ! 0 * ( ( { hmtd : ! { jd : 0 + 23 @ 0 U 831 } I 7 I 91 * 248 + { ffclw : ! { i : ( jaa > ( l * zo ) + ( ( ahj ) U 7 + ( ( 454804 ) I gt - 348 ) ) ) } < { i : ! bxou I { k : ! { pan : ! 3 I 74689 < wjchx - 9 } + ( kpnws ) * vfsdq * afsd < 6270 } < rwtb } - 8 } @ ( ( { od : ( ! dyjh > xyit - vrr | ! ipdjb - { xwwg : ! mnqdg * { nqzzy : wj > m } U fa @ i * jdf U 287 } < 4077 I ( 901 ) ) } ) ) U ( 0 ) } ) ) @ y U { qyulf : ( ktkyn * 847 @ { wkb : ! yrm > ( { k : 244 I zfmc @ id } ) * 193 } ) & a < pg + zak } ) ) | ! 5437 < ( 584996 ) - { uatq : ( ( 1 * fymmo + 73 = 970 ) | ( ! { bk : ( ( { v : ! 3 > 724 * 5 * z } U yywbw < 3374 ) ) } < g I 8639 ) ) & { t : 639 I rg > lk * { co : ( ( ( ( h = vxy * ( 4321 * 6 ) ) ) ) & ( ( ( 1 U { qil : ( ojab I p < ( { cpeq : ( { vgvpj : 9 I 2 - kpaa * efotg I crf @ { cdsqb : 808079 < ( 85088 U ( 6 ) ) } } ) @ uz I { vtz : ! 713 = ( 903 ) } + { uimi : ( 173654 I 25 - { coijm : 5 U { j : { ge : h @ mv } < ( 77 * xtibz ) } > tf } U ( { odgu : ( ( ! hr U ( ( 666 + 71024 I lcsbs ) ) < 5 + lqf ) ) } ) * mlo ) * jjux > 2 } } I hdfo - ynuxh ) U bmy ) } * ( ( jnejn U 2 ) ) ) * 28354 ) U k < ( 4 U jp I ( d U { ih : ! eg @ w I 9 } ) - cnj U 2 ) ) ) } + 236408 } < uukk U { s : pqfx < ( { qjxnh : ! 2 U ps = 13 } ) } | ( ( ( ( ! mtiwk I ob @ 9 U ( 1752 I zema ) & ( ! 8 < inqq | ieyqg * 8 @ 672 ) ) ) ) ) } | ( 171 ) < vekr I { byeql : ( ! twjw > { g : ! 59389 < ( 60 - { cid : ( { s : ( ( 451549 ) < dmuv U evva ) } @ 368 ) } ) U ( ( ( gqabo ) ) ) } - g + xweim ) } U yb ) } ) } U { bi : vznjx @ 51 } > ( qpv * 9 - { llv : ! d U { tt : i U jjvie > 5 } > 76 * 5 } + ( { ptii : ! { zarh : ! oia I ( zxb ) - { hmfyk : ( dfhgm @ 919285 * 6 * 751 ) } > ku * 3 & ( ( ( ( ( ! 4 = ( e ) * ( zgxm U 3 ) ) ) ) | ( { jotk : 5 < { yc : ( z * z ) + ( { eduz : ! gtwg @ 487 I { e : ! 2854 > xdr } I ( ( lgtq U pxyr ) ) } - 58 ) I { dlb : ! 39 - 261038 @ csl } = 33 I ( kc U fvhm + lykj ) & 2455 = qnk & ( ! { gylvj : ( ( 6 I ( 41 * ( { jii : ! 7 > eulpy U ( 342 + ( 2 ) ) } ) ) ) = giryd ) } = 159 I tqh ) } } < ( 641620 ) ) ) | krt @ cs + 7 I cfga | ! yu - 2 > ieox U ( 936 I u ) ) & ! ( ikx I { skgrq : ( ( ! { tpvnk : ( jh U gp @ 23136 U 847126 U mxt ) } > 1 I ( v I ( 5 ) ) ) ) } ) - ulbr * 2 < vvpkq } I jvxes > anc } ) ) } ) } = ( { njuv : ! y @ bk } ) } + 56 I { ldcuy : gho > sqaw | ! 88 < 7 * oqrha U kuhb I ( hsgm ) | 338 > y } I t < 313565 ) ) ) } + 6 } I { g : ! uw + mwbhy = wifrp I ( 7 + iw ) + ( v * woj ) - 4 + e - ( mont ) U 28 } } * ( lgde ) * jivix * { knj : vnh U ( 5 ) = { dilw : dll = ev + 26 I ykswr + 2 & ! 60206 * bvcqw @ dsws } } - 5 I 866 - 37 * zuhno ) I 925050 I 3 @ 5 } * h - 2 ) ) & ! 9 > ww ) } } I 45197 ) & ! 6 < gf & ( ( ( cqbk < ( qtqtl ) & ( ! 9997 = 74 + 4 & ( ( ( 1 = { bnls : 336419 = { nxcib : ! n = 2 } } ) | ! 0 < { cwfj : ( ! { uqye : ! { e : ! g + 8 + ( m U { wywx : ! w * gimqg I fahpc < dmqi * { j : ! shs > u } I 8 } ) > ( 23 ) } U ( 668 ) < kb I 0 } @ 1337 - l ) } U 0 & ( ( ! 1 U { zyz : { ng : 7581 @ { bomm : ( ( vg * kldj ) - hqa - 3 @ wbwff I { gmcez : ! krsf < hz } I ftt ) } } I { tqwst : ( ! { agfu : 0 - marm > zmxj } @ 957941 ) } > li } I 7 < u * r ) ) ) ) ) ) ) ) } @ cygi } I qq * ( 9 - u ) U { rr : ( ! { gy : hkm * ( 3603 - ( 7 ) - gvzab - tlm U 466961 ) I { mu : ( ! 566 + ( cucq U ( 21112 * 3 ) ) I wy @ re U { ugoe : ! ( 400 ) = hfdh + 46 } + ntd ) } = 60182 U ( 111635 ) } U 0 < 1 ) } > y + 4 ) } ) * jx = 8002 } @ 801090 } + ( 9 ) - ( 89 U ncur * { id : 2 + 898849 @ bz & ! { ogns : ( 535598 < 5 & ( ( w ) = 726305 - 8 * ( ( 6 ) * wxny ) * 2 ) ) } U ( 3 * 7 ) - dz < { wava : ! 56 = 4846 I ( 8 ) } } ) I s . - let set ohq be { eouf : ( ( ( ( ! ( ( ( q * nf ) ) I ( { i : lvf I 624 > ( { upi : { u : ! 83 < a } = 5591 + ( pzi - vh I { zdn : ( ( 871587 < ( { hcup : i U xg < 6 } U kyof ) | ( ! t @ m ) ) ) } U ( ( kvvy ) ) ) * b } ) } ) + { aeuf : ( 87 ) < ( 788185 ) | ! ( 3 ) < 0 * { out : qni @ 936 } } ) = ( 10 ) ) ) ) ) } . - let set wjd be 588261 I ( r ) . - let int orq be wtk U go - s . - let set xr be ( 3 ) * 464 - 940 . - let int ei be ( ( l ) ) . - let set x be ( { g : ! j - 6340 @ { gr : ( ( 45817 = 53122 ) ) } } ) . - let int lww be ( 6 ) . - let set iode be cocrc - 9302 . - let int nhe be ( 4 - 9 I mxgtq - 963536 ) . - let set yaqc be 4 . - let int jlxca be 8 . - let set rfhy be 6 I ( 344 ) . - let set zxqr be 3 . - let set ylls be 641647 . - let int sbmh be ( vl ) . - let set orlwe be ytof * emb . - let int wssqr be ( ( 67681 - { vm : ( ! { i : ( ( pk ) ) - urdks + 54083 > 4 } = 4 | 906 @ xstg * ( kpq - 94825 ) ) } ) * { q : { z : 1 < { r : 9 I rfara < vmsq } } @ 9 } ) . - let int qx be 6413 U ysvvc . - let set t be 759265 . - let set nx be ( gbwps ) . - let set bvv be ( 2873 ) . - let set ns be { kc : ! { u : ! ( { jy : yoe - ( 50378 * 547 ) + ( ts ) @ wfi } ) > ( 956168 U bpj ) } @ ( h ) - ( { ocztd : ( { su : p @ 3 } - ( i ) + 0 ) < 5 * ( uuqk - ( { vi : ilf + 70 - 58683 = drr } ) ) } ) } . - let int znzut be 485225 U gwhjm . - let set xbpg be ( ritwh ) * 5 U ( ( lhmz ) ) . - let int budz be { we : ! { f : ( ! fo = ( ( to ) ) - 2545 ) } = 4 I 1 } . - let int ln be fhbez . - let set l be 646397 . - let set bfq be ( im - { ll : ! 7 U ut @ 274721 } ) . - let set cedz be { v : 939 I a + nem < jkh } . - let int acsq be 2 . - let set kloye be ( 1 - xah * ( ( rggwe ) * 90 U 720 ) ) . - let set g be { g : ! { eqwh : 6 < q } = ppu } * mdsr I 707 . - let int la be tjqw . - let int vn be 0 . - let int pmiu be 394 * { xw : 1066 < gat & ! 941770 = ( ( { kpl : aa = vxky } ) + ic ) | ! q - ( ( 45 ) ) = ypqon & ( ( 78236 + ( ninre ) ) > ( { mzap : ! { nawlw : 0 - obaja = a } @ ax I xqemj & ( ! { x : ( { xq : cz I 6 = 403 } > 28460 - { zoj : ! 1 < ( { ebuv : ( ( ! { d : ( 8 ) < 38 U { que : ( f - 7 < 1135 ) } } > 150 I 8 & ! nz < vuma ) ) } ) * 40 I g - ( rb U { lqep : zzs U ( { hmxx : ! 115867 - h * ( xe ) @ dmjac + w + iiav I { vynpr : 3 * 2 > s } } ) I lsdbj I mcylh > o } ) & ! { htm : ! xtim @ fcnn } * ( ianwm ) > 73912 * ir + 9152 + efnp } ) } = { htrd : ! ( ( 579 ) ) > { ze : ! ld < { qda : ! dwusw > 6 } | 62 = mb * b I 80 } } U vky ) } ) ) } * { d : ! gtms < ( ( 5 ) + { n : ! rx * 1 @ gw * { cxruh : ( ( ( ! ( ehhmy * 6 * cm ) > { aw : ( rhg U { pxny : ! 14869 @ 532004 U { ggke : ! rl > 7 } & 24 < ( { l : ppd = 59 * k } ) + 7 * weres + i } @ 852401 * 3 - gi & ! 4 + ( wxvva U ( eju * { pgtmy : 86253 I 9615 > uqqq I ( 4 U ( 2645 ) ) } U { ctoio : { izznd : or @ { fndd : ! quyrj U qm @ 2 } U 0 I 5 & ! zsk < 4 I { qhog : ! uubd + up < pbq } * et * ( 0 ) * { tvcwb : ( ! yjgw > ( 2 I { zac : ( ! ydwf + hoi - 563 @ 7 - 0 ) } ) ) | ( ! 0 @ vm ) & ( ( ! { s : ( ( ! sccxg > ( { oxy : ( ! il @ { mm : 700 = kfvgu - im } ) | 49 - { itdv : ( { gk : ! ( 1350 I ( pkjsv ) ) I 7 - s < 68373 } - 5 @ 340761 - ( 5000 ) ) & zjoo = ( { vkf : ( ! { zzu : ecfgd < qhezg } > ( b ) ) } ) U 5 I { aoncn : ! ( { fa : vecxh @ { jqeuc : ( cgi ) - 0 = vvp * 1 | ( ! 194045 > 43127 ) } } ) + ( ( k ) ) = 2 } } = ( { lx : ( 1 = { ktkka : ( { voegp : ! ( ( 5552 I ( heevg ) ) ) * ylnb + 223 U n > ur I ( { at : { s : ! ykafi < 393 } = ( ejl U { hmg : ! 806 < idj * 951253 U zgyt } ) * sajy * ( me ) } ) } ) - ( dyhue ) > ( { lknh : ( 8604 < { gk : ( vpg * 2260 > { dyvt : { bz : pb * { c : ( ! 6 - { vxx : ! 371 + putzc < 3 * cjd U 0 } I 4 > ( { lttf : ( ! mv I kxvm * qt I f * nr U { o : ( { qc : ( ( ( ( g - jzm ) - 3 * nl * 9 * fwclk ) ) ) I { fjxl : ( ( uadfd - pmfmk > { bxt : 3715 U nzym < 94 } + ( { q : fyjx @ 3382 } I jv ) ) ) } < 6 | { hnp : ( { bpcx : { w : { ota : ( ( ( ( jjp * hkabw ) ) ) @ 8576 ) } < n } < rx & ! { gzaoq : ccfaj * { e : 4 > h - 645178 } I 5 = { nx : ! 2 U ubh = { sobfu : ! 6 I 7 = ( 1 ) & fwgl U ( ( er U 9 ) ) @ h } } } = rffv * ( { hebs : ! hno * 0 < { kmnqe : ! 6 > 6829 | ( ! 7 I ( uwtq ) > ( ( iqat I 903 - 1 U ( 644524 ) ) ) ) } U 7 } U frawo ) } - bsoc > 4677 & ! { hjcn : ( 79343 = 64486 ) & ! a * t = wu } * g * yt < 9 I kj ) } > 7 | ( { c : 0 < pdvo + xgq - 0 I 4 } ) < d } + e > pc U ( 4 ) | 9 = ( { siok : ! 8 * riwx > { v : ! 709 = ( ( { hlspg : ! t < ( { yfp : { murpe : ( ogjpe U { kfdm : ( or = rfuc ) } ) < { y : ! ( { bpfmt : ( ( ( ibmi ) + ( ml ) @ ( 67157 ) | 7 = 92826 U ( 2 ) - b | ( ceawc ) I glkji @ 42 ) ) } + mqko * ( g ) ) @ 8013 | ( ( ( ( 7091 U qne = 46508 ) ) & ( nkn @ lsk + ( ( 308 ) ) & ! { yiot : ( { nuwpr : ! ( ush ) = u + { ekoj : ! fps @ 28897 } I oqa - { auic : { dbts : 2 < 802 | ! 222614 * hl U ( xasi ) * ( n ) = { ehsy : ! mbcb U ( 9 ) < sp } * 445922 + { kzlt : ( a @ ( 398853 ) ) & ! xtr * g > 7 } } > 3 } - ( ( 0 I cwg ) ) } * g ) > phjny } I ( 3 ) > { o : ! 8 U 847785 @ 5 } I ( 93391 I tz ) ) ) ) } } * ( grzyf ) < kn | ! yshih U ( ( 58 * icez I 5 I { ahf : { cfv : { toz : ! vf > { hlqr : eda + 3 > tch } } < utobu & ! 700 < { qxbt : ( ! znspg > w + ( 361 ) ) | { yvlpa : ( ( ( ! { d : ! taxu < { li : ! g < muj I t U sudiw } } @ ( ( tljng I { dhbdb : ! yu * { arc : qysqw + 7 > ( 884 ) } U ogauz - ( 216141 * ( ( v ) ) + ( 6 - l - 5 ) ) = 9 } + l ) ) ) ) ) } I { aqsq : om < 690816 } = 69039 & ( ! { bo : ( ! zulov U geac I { qxbj : ( ( ( ( ( 8 = 942 ) ) ) ) ) } + d U 9 I { man : ( uclw ) + ddho I ( gsxwh I 60562 ) < 13024 } * zoyg I ( ggb ) = ( 4 ) ) } = { rrafy : ! ( mle + 74839 U 63 ) < j } ) & ( ( 13 ) - 0 > 1 ) } | ( ( yf = { i : ! { lykl : ( 90 I a = { jo : ( rjkxp ) * oj @ nezl & ( ( ( va @ ( { qvr : ( 2 < 0 ) } ) ) ) ) } * 160011 I lafz ) } < { ge : ! fkfa = j } } ) ) } > jitla - 22 U { sfg : ! 3 < 27830 } } ) + 7212 I 13386 ) = { s : ( ( ( 4 ) ) = udgm * vdo ) } & ( hrpa * j + yabfp I { bg : 470 * 931962 = egyc * 294 } ) = twnv | ( ! urbkm < yvwy * 495352 ) } - ( 87776 ) ) - 47 | wkzza - 0 = z } ) ) * ( 4 ) | 799 @ ( osp I mndlt ) | ( ( { o : ! 1810 = { x : 90 = wxjn } * esbps } ) I l > 1 ) } } I sshti ) * ( ( voe I 11046 ) ) & ! x = 145 * { mg : ! vgi = { pbaax : ( { lbg : ( ( 5 U wll ) > { g : jgmad U ogt @ 3 } ) } I 996 < 6 I dcea U gp ) } } + { q : ( ! { exghc : ! 818311 > { fzms : ( ( ! 106328 > { oojw : 4 + ( ( { xrtdu : ! oydox < 504 } ) - ly - oq I lgnsz ) @ 8 & ( ! wn > { zs : ! { jg : ! { od : ( q - 325 * { ws : ! ( 234 * 43 ) < etw } ) - { y : ( ( 1 + ( hxqrx * dxb ) @ ( 3 + rgkvx U { pfhcl : lni = 346468 + ( { up : ( ! { yaprz : ! 58837 < 2726 } I 0 > bhvmr * 4 & ( iyd ) * 4 < by ) } I whh ) * { gnj : ( ! 53190 @ 467301 U 337 ) } + 518053 } ) ) ) | ( ( ! 1 @ 2 ) ) & 2 U { ywukw : ( 1 < 0 I oaa * hbs * ( { qwlc : { goc : ! 2 > 3 } @ ( { jye : ( kemd > 5462 ) } U y * { lytx : ( ! 6 < ( { o : 40986 I dzod @ { cpuc : ( ! yobhs = kybho ) } I 44 - { og : ! { sc : hf < zgctj } U 45 * km = a } | lrit < ( 6 ) U rlsj } * ayclh ) - obuw U 55854 ) } U ( 37868 ) * 7 + { criu : ( ( ! ( q ) @ { izt : ! { tm : ( ( le ) ) = 7 - { csafs : ( ! 3 < ijc - { hvky : 3 - ( { tkb : ( { y : ( ! qw = { nwi : ! ysphq > 89103 I 2 } ) & ! j > 719581 } ) > 3 - nlw } ) > { em : ! ku < yuyud | ! { mxldg : ( ( ! 2 = ( ( { niep : ! 8944 > { lolz : ( ( 0 ) > 1 * 378 ) & ( ! 0 @ { x : ( w @ hv I e ) } ) } } I ( { z : ! 2 I ( 1108 ) = 743 } ) ) ) * { ga : 3 < 846 } ) ) } > 4 * ( ( zmoyy ) + 9105 ) - wvvil | lr I { qtpv : 37 * 630 @ { jq : ! cntd > 9777 } } = 7 } I 5 U 965 & cs + { wysrd : ! { bwkt : ( ( 8744 @ ( { mqqrv : bca = 7 } * gf ) + ( { bxlsz : y > ds } ) ) ) } < gzd } = 2 } + 7 ) } + 6 } < 8498 } ) ) & ( ( ( h > 63 - tkh | ! 9739 = 978174 ) ) ) | ( 592256 U det < 3181 ) } ) | ( ( ! ( 62353 ) = fnq * 886135 ) ) & ( ( ! ( wyei U { jsbhn : ! vs U rn = 9093 & { kzp : hykr I ( ( { ihk : ( 4 ) = 5 } ) ) @ gfv } @ { snqnv : 1017 = 4 - { iaed : ! 2 < ( 639478 ) * ( { yn : 957 - { fy : 7 < 8 I gsbmu } > sr | ( ! 818 - { pig : ! qxd @ ik * ( jypmu - 25187 * 0 ) + 21247 U p + pikuk } @ ( 4 * qlga I ( 8 ) U n ) ) } ) - 0 * ( 9 U ( yjvat ) ) - jyl * vjq } } } ) + 3 - { mzb : ! 365004 U r * jjn = yav * jxxu } = { suns : 7 < ( c U { co : ! 8 = { q : 7106 * ( 81650 ) < 74 } } - e ) } ) ) } ) ) } < of * sv } I bq = ( 6 ) | ! gfq = ( 864508 ) + qj - keoad | ( ( ! uefer @ aof ) ) } @ vg | pxzto > yp + k } U ( { nh : ! { lf : ( 8 < 4 + { qop : { u : ! { f : 2 < xk + 707 } - ( ail ) - l I { gzabs : { bah : ! eoj + { vl : ! 79386 I ( { r : szg @ x } U { fviz : { o : tnmt I 409 @ ( ( ( auq + 5 ) ) ) * jol + 5267 * 0 | ( ! 5 + 28 - nrmu I { wwlgl : nr @ ( ( 8 ) ) } = 6511 * jqzc + ffm ) } - { tzxo : ! 37178 * ( 596431 ) I ( 4 U kkm I ( hpu ) ) > 60 } = 3745 U fckc } ) I ykekk = zwgh } - ( l ) = iynnq I { uwa : ! lnkmg < 5353 } & ! c < 2562 I { mxi : ( ( { md : ( ( { wwzao : ! { buhao : 0 < nit I { k : mcs - { tnuon : ( 8659 U { ka : h = tq } I { ppx : ! w - ( ( ( 7 - { qnoml : ! 7 < zgl } I smqdt ) ) ) @ 783 } ) * n < 0 } U 8 > { oqcpf : ( ! { kgu : ( ( ( ! { xtcj : ! gf = ( { vsorh : ( { xpucx : mwjax + 750835 U { mrp : ( ic * 809538 ) * 6626 @ xoiz | ek > 6 } > 28683 } < ke ) } ) } U xkx * 62682 I feic * ( 9 ) I pikg > 2 U { mt : ! bg I 4 > ( 8 ) } ) ) | ( erbo ) I 61 - hmnbx > 7 I tfiu ) } + ianq > kyhe - ( 161796 I raj ) + ( ( ykfx U { zs : ( ( ( ( { ieyqz : ( ! mibx @ { fogpg : ( ! 750324 = ( bp - { okf : ( ! { bvrgq : ( ! ro * ( ( 4 ) ) = mlb ) } < ( ( m ) U ( ( { hvpr : ! ivauw = 8 | ( ! 2724 U 0 = 0 ) } ) * ( ( 18041 - 539 ) U j ) ) I dzjtb ) ) | ( ( 2855 @ ien U o ) ) & o @ { sc : ! { n : 4 = c | ( ( ( 1318 U 14 ) ) I e > pn & 3 - h = opi ) } = 910012 } + dqpb } ) ) } ) | ! ( ( { qz : yhf @ 3 } U { csbn : ( ! 9594 < r ) } U 557676 ) ) @ 7 } ) * 9 - ( { qprp : 54918 I ( 82 ) > 23013 } ) @ 3 I t * ( 2 I xw ) ) ) ) } ) ) ) } + sm } } * 5 @ 2 } = c ) ) } > 45699 ) ) } U jcyaf } + uufkb U 32 < { uj : { wu : ! kg @ 56 * ( nz - ayb U { rh : ( ( ( ( h ) - hxyr @ dklp ) ) ) } ) I u I 497574 I { jvtr : ( ! 4 - 5230 I i @ ( ihoj - f ) ) } I 6 } = { yvoph : ! 385890 @ u I mf } | ! ( 74 ) - { lugw : ! rzy < 0 + n } > 8 } } < acino & ( ! y - 68991 @ 829195 U ( 571 U 1 ) ) | ( 88 ) * qt > ( hgqef ) I 1 } > wsjvt } + { oglr : ! 432081 + { i : ( gexug I { o : ! zw < 88 I 73 } U ecgw ) = ( hocu ) } * afatw U { h : ! 2 < y I ( 19458 I ( bgss ) ) } - l - i @ ( 3 ) } | ( 4 * mkrej @ 820 * m ) & ! j < ( { ilf : ( ( ( ! jam U { lxrr : 29 @ i } U ( { ec : ! f I ( zntie ) < { vyg : ( ( ( ( 7 ) ) * 5 @ 6 ) ) } } ) > ot ) ) ) | ! ( ( ee ) ) = ( v ) } - jwfit + ( { b : 1 + dmt = 2 } I eh + tivfn I yzohz ) ) U wulxe ) } = tw - ( 9 ) } ) @ ( { i : ( ( ( ! { gf : ( ( ( xmzmw U 730043 < { il : ( { zapyc : ( ( 9 - ( kkrah ) ) > 1874 ) } ) > dwcew I 8 * g } ) ) ) } > 4 I ys U 983107 ) ) ) } U rwit I rroah ) } & ( 2 ) > 0 I { yrdps : ! 1159 @ qyia | ( 4 - 151 * { mkqgl : ( ! ( 9 * 6 ) I fokok > ( { vhm : ( 5 < 2 - 7 ) } ) * qfe ) & ! { ucc : ! ( 9 I cs I { h : kbh * ( eyqz ) I n * m < ( qxp ) } * { xwcqe : { p : ! { jjfjz : ( 61316 = 6 + 3741 & ! { qnyy : ! { zaefu : ( 4 + 8653 * vvg - ( ( o * xvjq ) ) @ jensf & ! yvfm @ ( ( 9 ) ) * 9033 ) } = j + ( ( { pywz : { q : ( ! 4 I ( gshfb ) = 76624 ) & ( ( ! 689760 < tk ) ) } < zgil & ( ! 890888 U 506360 I { qooe : gnnmf I mjkj = gcts | ( { o : ( ( ! { riips : r + 330635 + 180 = 1102 * d I ( { q : ! ( luau ) > hxj } ) I cmqsp } < ( y ) ) ) } I lhesf < { mfwgm : ( ( ( ! 688 > pulzu ) ) ) } ) } + foq < 4 - 63 ) } ) ) } @ 3 U 5 U ku ) | ! j > br } < pm } > zjqrd | 6 * 37 @ 4 } * 0 ) @ si } + lnx = fj & ( ( y ) I ( 37663 I qyanq ) - { rx : ( ( ! 12 - 0 - { jpmyp : ( ( rx - 5386 * 805 I { qryeq : 359 @ { vnain : 7 I 7 < { h : ! 99 @ djsb & ( 1 < sbfuc + { l : 936 U 3 U 423 I ( { cyr : ! { ibzz : { pc : ( ! 47 U 1 = 132626 U lgciu U 19 ) } * 757 U yjd @ 4 } U { pg : ! oiw I 8 @ 972 & ! ( r * { qjn : ( ! bo @ ( jooxi * 8 + 9 ) ) } ) + ( { j : ! 8 U { xfhlz : ( 3 @ 9 + ( is + b ) ) | q U 93795 = risx I zw I { fz : 9464 > r } I 130056 } > ( ( 5546 ) U ( { ukpd : ( ( { q : ! 26 U ( l ) > dlwdi U oh } < srh * 920664 ) ) } ) ) I 9884 * 355685 } ) = ddymi - 521 } = 9 } ) > { rfe : ( { zwadu : 95116 - 7760 I ( ( dbt ) ) > yx } + 7 = mml ) } } * ( 906 ) * iyxt ) } I { mk : ( 63784 + ( or ) @ { rl : ( ( ( ! ie > { yb : ! bmr = v } - 0 ) ) ) } ) & ( ( ( ( 7111 - { azj : 7 < jcjw } ) = bt - 0 ) ) ) } I ( ( { ixbg : 29853 < { ehk : ! 4 > ( ( 5 ) I { y : { q : ( ( ! { hh : 5 I ( dx U sg ) - 3 = { xy : ( ! 32 @ { gdvt : ( 4 > lj - 2025 I { rk : ( 9 U 2 = glzex ) } - { oq : ( 56 ) @ 143675 } ) } ) } I { kdxo : 197 < 2 } | ( ! jfv - 835806 @ xmv ) } > nejfj ) ) } < cxkx } ) I ( ( 3 ) ) - ( { j : ! 2 = 0 } ) } } ) U 916 ) + 4253 } & ( ( ( ( ( { g : ( kto @ sd ) } U { a : ! ( ( i I 4 ) ) * 7 @ 75 } @ c U g ) ) ) ) ) } @ ( 9 ) & ( ( ( ( up < { bi : { ac : ! ( ugwhg ) = 9 } I 6 < ( 78213 ) & ( ! d > hgrh ) } I 97 ) ) | ( ( ( ! { jwfoe : ! lxa = ( cywj * 8 ) } U ( ( 47 ) ) > 9 - 0 & 1 @ 7 ) ) & ! twsnt < pikj ) ) ) ) ) } I ( 883 - 34334 ) = ( { hnlh : ( ! 3978 = 8 ) } ) | ( ( n = ( i I 7 ) ) ) ) ) } @ t ) } @ ( ( tb ) ) ) } ) } ) ) } U gbh } + 6 I ( 578 ) < 268 ) } ) } < ( l * ( { y : ( ! 2 - bxrfj < 3 * iuwso - 6 ) } ) * 97 - byd ) & ( ( ! 0 @ ( 49 ) & ! 163404 = { ucowj : ! 4 < 80689 } - 7 ) ) ) } + { goi : { gprtc : cyv + htldo I ( ( 4 ) ) = xekw } > 13 & ! { oegl : ( uwg - jo @ { i : ( 1 = l ) } ) } @ dfawy } I 671 ) * 767413 ) } @ 555113 } > wq } & 8 U f + ( fx - 803 * 9 ) < { mcj : g I 2 > 2 | ! jogt @ 4 - ( 2361 ) } I 962 ) } - zenqj | ( 7 I mjwgx < { idhhu : ( ( ! 3 - { mgjsx : ! ( hh ) U 1 = l } * 0 = 1338 | 2 > 628 & ( ( { w : jidbf < gadko | ! 27163 = wpcsm } * 92251 * 57207 I awi + { rlsg : { arfz : ! wl > 201 } < ( ( ( 5 ) ) ) } > 6 ) ) ) ) } + { z : ttc U 17 > 2 } | ! 7 = ( ( { gzjk : ( ( ! fhi * hkfv - 4 * kxijm @ farng ) ) } ) ) I nierm & ! 32288 = { ahw : 9 < 7316 } * xo ) ) | fad < { un : ! ( 1 ) I sfpdi * { yo : ( ! ( 9 ) * smx + 8 U ( { il : ( ( ! ycskp - 656 = ( { dl : ! ( { xrpny : ! lg @ 8 + xzcbp } - 714 ) I ueu > ( vyumo + ( ml ) ) } I { lth : ! viq U rnxgy I 1 = ( { lbik : 78 @ 713 * 86 U ( bsin ) U fbz } ) U 0 * ( uxtn ) } ) ) ) } ) @ ( ( { zr : ! sguyu > 0 I 1 | { nph : ( ! ( 26166 ) = { di : ! ovnn I 80923 @ 1 } ) } > ( aig ) + cc - ygjx - 954199 | ! 93475 < wh + 2 } + { nsa : ( ( i > x ) ) } ) ) ) } + { bbcb : pepc > 7 & ( 17 ) @ { kbkq : ! { st : ( m > byvxo U { lvncp : ! smhbw = ( je ) } ) } > ey } - jdn } * 46 - 5137 = 8 } I 6841 * db & ! 2 I 0 > vact I ( uamjn - 4 U j ) } ) } - ( ( { w : ( ! ( gdpb + pxxyq ) * xw I 4 < 4256 ) & 979 > 7 } ) ) ) & ( ! 0 - ( 6 U ( zvk ) + { jt : ( ( ( ssn I ( vjxl ) * 28756 > 2 U 6 & ! { znwdd : ! { f : ! 5 @ ( ( 8 I 825 ) ) } @ 1 } > ( ( 9348 I hzhwz ) ) ) ) | ! btm @ { sauq : ( ( wup @ 5 ) ) } ) } ) - { xa : ! causi @ { qooba : { aat : ! 3320 I giduy > 0 } @ { kg : ( ! ( { v : ! 3 @ biu + { jyple : { mcmr : 1 < 68 U ( dbgnp ) } < 866 + { m : nb > 8 } } } + kw ) > 8 ) } } U irbh & yynuz > 9 } < 3 ) } ) I 7844 } ) + vhok ) ) } > 798323 ) ) } } < ( 18026 ) & nnlx < { w : ! d * fmj = { qqbi : ( 22 < tmvlc | kc * ( { cxn : ( ! xss < 342 ) } ) = 94101 ) } - { wotoo : rxrk - zurhn * { zz : cy * 1 * btlo - ( h ) @ { umpvy : ! pq < hlnmq } } = { vp : ( m > 2 * laf - { lhw : ! { yjmd : ( ! ( ( { ho : ! { yle : ( ( amxp * w ) > g ) & ( 6 + ( 3 I ( pegnw ) - 880 ) U { u : ! 4 < ( ( { azteg : ( dueb U { w : ( ( lt * { kzvcy : 54829 @ bwo } U 37144 > fd - dmaar | ! 61 @ ( { zfm : vsp < y } ) + 92651 ) ) } + 520095 - 1174 @ kpre | ! ( yctgp I 1 ) I 2 U { ma : ! ( 4 ) + ( { epmwz : ! 7 @ 78 } I 4 ) I ylxt > m I 7 } > 5 ) } ) ) } < jkdj | ( b > scdv ) ) } * 4307 = 78500 } ) ) > ( ( 31576 I 8 ) * y * 89 ) ) } > y & ! hiw + ( 5 ) U ( gd I 6 ) > ( 2 I apqgc ) U muksx | ( ( ! 54144 + 69 = { fi : ! { ubca : ! ( mulqp I { pamjg : 2 + gbsor > ( { wamvt : ( gpeu < 38 ) } I 96 ) - { y : ! bjfy @ 324633 } U { kk : ( ! 83027 @ ( ad ) ) } } ) + uv + abn + { flb : ! y < { yuy : ! ( ( { thrzz : ( 3 * 0 ) @ 9395 } - ( 5 * yc ) ) + rzws ) I ecp @ ( m ) } + hh U ( msmc I 826 ) I 0 } > { xaw : ! jd > y } I 198 } @ 5 | ! a @ aueip U 272 } ) ) } ) } I czzqf } * b & ( ! 8 = ( izlh ) ) } } ) ) + { pxd : ( ! { ifujt : 8 > { wxcr : ( ( ( ! 6 - 2 U dxc < { brbs : { ookwy : ! cxjer > ( r ) I { h : ! ( { mlwek : ! ( ih ) < ( fqnv ) + ( ( { t : ! p < ghpi U 312 * mgyg * oz } ) U 589173 I ( 0 * 34 ) ) } ) + 1732 I { g : ( ( ( ( rbml I togw < 5 - { vlype : { ifva : y I yo I { ldo : 45890 > { ingq : ( ( moyfm + { xhowk : ! ( 0 I ( 446579 ) ) < 2 U 4 } ) ) < ( 961 I yny ) U { p : ( mcni @ ( twkq U 2390 ) U fblv ) & ( ! 2 < 6 U { mc : ! hf I xjqop = 9723 - { ufk : ! aogpr @ wbowb } + vnq & ! hsme < 0 * bja } ) } | ! 7 U { arks : ( ( 29 @ 5 ) ) } + 8 = ( sgea ) * fqoxv * f } * qxkk } > 4 } U rx - e * ( ( 400 ) * { m : ( ! 303 * 0 * peejb * vr - 12013 * ( 658747 ) @ { ovvr : 3 * 5 * q - { uq : ! 68 @ wvad } I ( gjbp ) = ( { lmrhs : ( ( mrgm I 6 > 9 ) ) } ) } + lf ) } ) - hswh @ 3 } ) ) ) & ( ! 963 @ ( ( dmu ) ) + { reee : ! ( ( { ugpg : ( zfgi ) = d - 5 + vwfg * vkwox } ) ) < 2 } ) ) } > { yg : ( ! ( 732941 ) > lz ) } } } = bzt } ) ) ) } } > 2 I { md : ( ! 141225 + 1 > 52 & { jis : fye < { hz : ( 6 < 4 & ( ! ( 5899 ) < ddt I { srp : 468725 + pt > 4 I frdff * 56867 * ( 379 I nm ) I 767 } ) ) & ! 0 I 719 @ xaclq & ( ephss = 80536 - hj ) } } + { gnhbz : { tv : 9 > { ratx : ( ! yurx = 965 * 71 ) } } - 8 * vuhf @ i } < qo + 3 * 647 + ( 3 + 2 ) ) } * 39 U faqay ) & ( envqy ) > { q : ( ! { aabdt : ( { h : ! mwe I 6 = 8 } ) < { njxq : ( ( ! { bd : ( n ) I 420501 @ { pks : nnxk I ( { vwv : ( ( ! { r : ( { czlfm : 0 > ( lkhp - ( hina * 3048 * aajrp U yvp U q ) U m I ( w ) ) } I of - ( { d : ! 80822 < ( yt - { c : oymke > lmbv * 5 + sxxx * ( ( 72595 U 9 + ( 3 - ss ) ) ) I ( ( gau ) ) } - 493367 ) } U xf ) * { nrq : ( ucp + { u : 5 @ 532330 I 86 } ) @ ( 1485 ) + ey } U 4 + uuh < ( ( { maw : eob @ ( 5330 - ( ( 33 ) ) ) } ) ) - 242782 ) } < uqbh ) ) } ) U 5 @ ( orr ) } } = 4 I ( x ) ) ) } } + v I ( { jwcgz : ( ! { ex : ( ( e = 958 - 66 ) ) } @ ufp ) } ) > du ) } } < 886 ) } ) ) ) } I xsteg } ) - rtzy - 1204 - ( nu - 8924 ) } . - let int b be 1 . - let int rg be 0 . - let set fxeyd be okp . - let int jnltx be 7 . - let int t be ( { shwa : ! cg U hyv > 682 U 3 U 76007 * ( rbqd ) + ig } ) * { pl : ( ( ( ( qvcxr ) ) + ( { coqii : ! 631994 - { npov : ( { eiy : ( ( ( ! zqw - 9 > ( zgf + x ) + { yguo : j @ { bnfe : ( ! { vriv : ij @ 3 } I dfqrl @ ( { tu : ! 5 = { k : ( ! eoyk = xiiwj I ekws ) } + 50 } ) + { ydhm : { w : ! ( 325371 U 3 ) = 7 } * 1 @ yzou + 5 * sptt + ( ( 545628 I 81984 ) ) } ) } U jg } ) ) ) & ( ( ! hr + 9 - 0 < ozg & ! 4 I 1 @ ( asp ) ) ) } > { f : wkam > 8 | ( ! { topmp : 725422 = pdbks U { qm : ( ! { jpec : ( 27 = { rcd : ! { v : 581 - 0 U wra = d } < sp - 60 } ) | ! 7 @ ( ( xm ) ) } = 6683 ) } } = 800179 I svk & ! 998399 U 5752 + { bcigz : ! 7 I 5 @ 4 } @ 1 ) } & ( ( tst I jtrz - { ozp : g - ( 807727 ) @ 39 U ( eoac ) } ) ) = 7 ) & ( ( ( { m : ! xctpv > kh | ! l I 8 > cc * 7 } > ( ( ( ayf I 55 ) ) ) ) ) ) } = { fcgo : yd < 9 & ( xkvak = uz | ( eygxu = vxbe | ( tdtjb < uo ) ) ) } } - 6 ) ) < 6 U 754636 U 0 * { hz : ( 7 ) = uvcuk } ) } . - let int y be eiqe . - let set mppcn be 9 * { qnxfb : ! f + klglk = j } . - let set qtj be 5513 . - let set oax be { e : ! ( 81449 U guph - ( sn ) ) = klzlf U { hjk : 960 = g I ( bw ) | { qgies : ( ( 60 - { in : ! uf U hiwvp U 2 > { rf : ! n + 173947 I 18 + rdj = 0 } } ) > io ) } I { u : x I 1974 * rni > { b : ( ! 7532 > 4 I 7 I 7434 ) } + zya I 6 } = 46124 U ( r ) } * n + ( 57215 ) } . - let set y be 8 . - let set dc be 5 . - let int yaj be yqzqc - ( vmt ) I 0 . - let int rcqu be 35 * { m : ( ! 4 + 9 > 48555 ) } . - let set zfpne be { pk : 2 @ rn } . - let set oxz be 9 . - let int otphj be zya . - let int wqes be 1 * uhwp - 449367 . - let set e be xt . - let int nb be { mta : 660860 * cwd I eln = { bcs : ( ! 0 < { fdm : ! sepcb U a + mcn > 937 } ) } } . - let int jzx be { fjlw : ! hokqc > 9 } . - let set bzdl be 0 . - let int dzb be ( 4 U { cvlog : giaix + { c : ( bem = m + 9 ) } @ bcev + { lfr : ( ! ( ( d ) ) > 6372 + 8 I ty ) } * { q : ( ( ( ! tthkv @ mggwx ) ) ) } + { r : ( a ) < yc } } ) * { m : ( ( 44000 - ( ( 0 ) * { z : 7 > 1 * pl & ( ! psld @ { rdvkm : ! 4 > ( 7 ) } ) } + { axdt : ! nluw = og } ) ) ) @ dtulx + 46841 } - { qgh : ( ! 86790 I tanef < hs ) } . - let int yssad be fucco . - let set wlvrq be 7458 . - let int ew be 0 . - let int rzigy be ( { ahgpy : ! { dkhaw : ( { wlg : ! 149399 U rqm @ ( urkh I { zbdv : ( ( ( ( osedd I f = 144053 ) | ! { rbz : ! { swrc : ( ( ( 50 + 1 = ( ldhbh ) ) & hten < 62165 | ! 380361 > v & ! 0 > 0 ) ) & ! ( 7 ) @ 0 | 998 I ymns U 23 @ 6 } * ogjqx - 1 @ jfem U { amawn : 8 + 7 U 59 @ 798706 - ( 0 ) } } > 2 ) ) ) } * ( 5 ) ) I ( 4 I e ) } > etkj ) } > { vcng : ( ( q > 5 & ( z ) * kdkn > njp ) ) } } * pzr ) - ( iipu * ( hmkm ) ) . - let set hqfa be ( 8 ) . - let int zur be dhvwu . - let int wjsp be qc * jkxbl . - let int xby be hrkn U 52135 . - let set pun be { knu : ( ( ( ( ! 5 U dfla @ { kdy : ! 6 U 0 < { rhsv : 57 U ( { ccky : { aitr : 0 < ( ( ( kke * ( ( effro ) ) ) ) + uy ) + 3 } > 339 U { xfk : ( ! twupo I 8 @ ( { p : ( ( ! 3 U 9 < ( odmm ) ) ) & ! dcne < 4 + { xbsff : ( ( ( hra ) < ( { myph : 944 > ( { tizae : ! 8995 + vcrh < ezpqt U { mrsqy : 3925 @ 5 I prrv & 397 U gmqs < { rxeig : xr = ( xt ) } } } ) } ) I 3975 ) ) & ! 0 > 3 - ex + ( zahdk + 7446 U 5 - ( ( 239482 * { m : ( ( 5530 ) + { ipzxr : ( ( 8 U 8 < 56 ) ) | ! qcmk @ t } - 2 @ i ) } ) - { p : ! ( 38 ) = { bj : ( lfd I { alw : ( ! jbdzu < 75452 ) } I 352 @ tzc ) } } U { erm : ! 88 > tuuqv } ) ) } } ) + 4 ) } } I ( sqasz ) ) @ hr } - gf I 8 } ) ) ) | { ysscs : ( ( { ylln : ( ( ( ( ( ( 3 - { oxzz : 5 = 629 U avm } @ ( { waqgy : ( ! ( { rt : ! ( { blvi : { yinm : ! h > ahnan } @ 3 U jaky } ) = 493552 | oc > t } ) @ wre ) } I ( ( ( ( { btct : pyuc @ 8148 } ) ) ) ) ) | mo - { cq : ( ( ! { m : ( ! { z : ! shfz > lue } > 7 ) } < { vpk : 188488 > 648 } ) ) } + vl > ( 754850 U jmx ) ) & ( ( ! { fjl : 7 @ 0 } - s + b < drzj ) & ! dwm I ( k * 43090 ) = ( 6 I 3 I 4 I ( 446 + 52 U ( doh ) ) ) I cehk ) ) ) ) ) ) | ! 2 - { xnrwi : 7 + 7 < ov & ( { u : ! tzhw - { iyq : ( ( ( ( zss U yoorm @ { azani : 3 + { zlnf : { ngi : ( ( ! oh > a ) ) } = 46 * ruh U 1 } > nv * { odgts : { hfm : dmew < miwww } @ 1 } } ) ) ) ) } > ( { huhsf : ( ! { lytwz : { uwa : ! 9 > d } * 5 < yl } = 0 ) } I ( bp ) ) + kn } - 92523 > { ogup : ! 25 + r U 6 + jphm * 43 > lhg * nkvl } ) } > ( umsqo ) | ! lkmm = ( { wpgmt : ( ( ! 798462 @ 52273 ) ) } I y ) * ( ( { puvuq : ( 59 ) @ ( hbe U 6 ) - szm } U bkvvi I ( e ) ) ) } U zulci @ w ) ) | ( ! okcrr - u @ 7 + 751847 ) } = s ) } * nq * hk - 9 . - let set hmpn be ( zmbv ) . - let int o be 6 . - simplify 98 + xr . +5890 * 683309 * 0 * 55757 +20477 * 663547 - 4 +1 - 310560 + 7 +3001 +{ x : Predicate } U { y : Predicate } U { y : Predicate } U { x : Predicate } U { z : Predicate } U { z : Predicate } U { x : Predicate } +0 - 6 - 310 + 5 + 7 + 98981 * 0 * 53 +{ x : Predicate } +8 + 6 + 9 +7 +9 +{ z : Predicate } U { y : Predicate } +563644 +9 +49728 +{ x : Predicate } +{ x : Predicate } +{ z : Predicate } +1 - 3 - 2388 +4 +{ z : Predicate } U { x : Predicate } +273 * 5 * 5 * 841218 * 819109 +49 +{ y : Predicate } +574377 * 9 * 2599 + 5 +{ y : Predicate } +{ y : Predicate } U { y : Predicate } U { z : Predicate } U { y : Predicate } U { y : Predicate } +{ z : Predicate } U { y : Predicate } U { x : Predicate } +{ z : Predicate } +{ y : Predicate } U { x : Predicate } +{ x : Predicate } +72299 +{ z : Predicate } U { z : Predicate } U { x : Predicate } +954 * x * 80699 * 1762 * 2 +35991 - 4 * 5 * 0 * 80 + 7 * 8 - 4 + 555 - 9 - 3 + 7 +{ y : Predicate } U { y : Predicate } U { z : Predicate } U { x : Predicate } U { y : Predicate } U { y : Predicate } U { x : Predicate } +{ x : Predicate } U { z : Predicate } +{ x : Predicate } +{ z : Predicate } +1 + 5322 * 145943 +8 * 70 * 4 * 58 +241 * 2545 + 5 * 974513 * 8302 +50 - 46 +{ x : Predicate } U { z : Predicate } +2805 +{ x : Predicate } U { y : Predicate } +{ z : Predicate } U { x : Predicate } +5036 * 8 * 6 * 9 - 89256 +z +9 * 148781 * 3 - 468759 +4 +{ y : Predicate } U { y : Predicate } +6 - 14 +6 * 4 - 6 +1 +44 + 70 + ( 52 ) * 0 - 8 - 718 - 68317 - 22654 * 7 - 2 * 57 +{ y : Predicate } U { x : Predicate } +2 - 4 +{ x : Predicate } +{ z : Predicate } +6 +{ y : Predicate } +8 - 2 + 94495 - 59 * 8314 +{ z : Predicate } +{ y : Predicate } +{ z : Predicate } +{ z : Predicate } +6 - 8 * 6 - 81 +7 +{ x : Predicate } +14 +481 +5 * 3 +{ x : Predicate } +9 +{ y : Predicate } +3 * 2 +7 + 9 * 838055 - 20 +{ z : Predicate } +5 - 254 + 13399 - 1 * 3147 +{ y : Predicate } +y +423868 + 425131 * 13417 * 942 +3 +412 +0 - 7 * 374812 * 43216 * 2 + 88088 * 5964 * 9 * 8 +{ y : Predicate } U { y : Predicate } +{ x : Predicate } U { z : Predicate } U { z : Predicate } +{ z : Predicate } +{ y : Predicate } U { y : Predicate } +7313 +{ y : Predicate } U { x : Predicate } +{ z : Predicate } +177 +{ x : Predicate } U { x : Predicate } U { x : Predicate } +{ z : Predicate } U { y : Predicate } U { z : Predicate } U { z : Predicate } +2650 * 86886 +{ y : Predicate } U { y : Predicate } U { x : Predicate } +{ y : Predicate } U { y : Predicate } U { y : Predicate } +6 - 515589 +149 From 6ab62ea53833fac267e7724a67e2ac20a421e1ef Mon Sep 17 00:00:00 2001 From: Devin Yeung Date: Mon, 11 Nov 2024 20:53:37 +0800 Subject: [PATCH 14/15] checkpoint: tweaking typed grammar --- examples/set-algebra-typed.bnfgen | 22 +-- src/generator.rs | 8 +- src/grammar/symbol.rs | 1 - ...n__generator__test__typed_set_algebra.snap | 186 +++++++++--------- 4 files changed, 107 insertions(+), 110 deletions(-) diff --git a/examples/set-algebra-typed.bnfgen b/examples/set-algebra-typed.bnfgen index 10c16aa..7df7a5f 100644 --- a/examples/set-algebra-typed.bnfgen +++ b/examples/set-algebra-typed.bnfgen @@ -18,8 +18,8 @@ ::= | ; -// ::= "{" ":" "}" ; - ::= "{" ":" "Predicate" "}" ; + ::= "{" ":" "}" ; +// ::= "{" ":" "Predicate" "}" ; ::= "(" ")" | 100 @@ -38,21 +38,19 @@ ::= 2 | "U" ; - ::= "<" - | ">" - | "=" ; - - ::= "@" ; - + ::= 2 "<" + | 2 ">" + | 2 "=" + | "@" ; ::= "(" ")" | 2 "!" - | 2 ; + | 10 ; - ::= 10 - | "&" ; + ::= 2 + | "&" ; - ::= 10 + ::= 2 | "|" ; ::= 1000 "\n" | "" ; // For generation purposes, make it looks better diff --git a/src/generator.rs b/src/generator.rs index 2e3d804..da912a9 100644 --- a/src/generator.rs +++ b/src/generator.rs @@ -22,9 +22,6 @@ impl Generator { // pop out the first symbol match self.grammar.reduce(stack.remove(0), &mut state) { ReduceOutput::Terminal(s) => { - println!("{s}"); - use std::io::Write; - std::io::stdout().flush().unwrap(); buf.push(s); } ReduceOutput::NonTerminal { mut syms, .. } => { @@ -128,7 +125,10 @@ mod test { let grammar = RawGrammar::parse(text).unwrap().to_checked().unwrap(); let gen = Generator { grammar }; let mut seeded_rng = rand::rngs::StdRng::seed_from_u64(42); - let out = (0..100).map(|_| gen.generate("Expr", &mut seeded_rng)).collect::>().join("\n"); + let out = (0..100) + .map(|_| gen.generate("Expr", &mut seeded_rng)) + .collect::>() + .join("\n"); insta::assert_snapshot!(out); } } diff --git a/src/grammar/symbol.rs b/src/grammar/symbol.rs index 2fff404..182be86 100644 --- a/src/grammar/symbol.rs +++ b/src/grammar/symbol.rs @@ -1,6 +1,5 @@ use crate::regex::Regex; use crate::span::Span; -use std::borrow::Borrow; use std::hash::Hash; use std::rc::Rc; diff --git a/src/snapshots/bnfgen__generator__test__typed_set_algebra.snap b/src/snapshots/bnfgen__generator__test__typed_set_algebra.snap index f8920e0..cf9b00a 100644 --- a/src/snapshots/bnfgen__generator__test__typed_set_algebra.snap +++ b/src/snapshots/bnfgen__generator__test__typed_set_algebra.snap @@ -6,99 +6,99 @@ expression: out 20477 * 663547 - 4 1 - 310560 + 7 3001 -{ x : Predicate } U { y : Predicate } U { y : Predicate } U { x : Predicate } U { z : Predicate } U { z : Predicate } U { x : Predicate } -0 - 6 - 310 + 5 + 7 + 98981 * 0 * 53 -{ x : Predicate } -8 + 6 + 9 -7 -9 -{ z : Predicate } U { y : Predicate } -563644 -9 -49728 -{ x : Predicate } -{ x : Predicate } -{ z : Predicate } -1 - 3 - 2388 -4 -{ z : Predicate } U { x : Predicate } -273 * 5 * 5 * 841218 * 819109 -49 -{ y : Predicate } -574377 * 9 * 2599 + 5 -{ y : Predicate } -{ y : Predicate } U { y : Predicate } U { z : Predicate } U { y : Predicate } U { y : Predicate } -{ z : Predicate } U { y : Predicate } U { x : Predicate } -{ z : Predicate } -{ y : Predicate } U { x : Predicate } -{ x : Predicate } -72299 -{ z : Predicate } U { z : Predicate } U { x : Predicate } -954 * x * 80699 * 1762 * 2 -35991 - 4 * 5 * 0 * 80 + 7 * 8 - 4 + 555 - 9 - 3 + 7 -{ y : Predicate } U { y : Predicate } U { z : Predicate } U { x : Predicate } U { y : Predicate } U { y : Predicate } U { x : Predicate } -{ x : Predicate } U { z : Predicate } -{ x : Predicate } -{ z : Predicate } -1 + 5322 * 145943 -8 * 70 * 4 * 58 -241 * 2545 + 5 * 974513 * 8302 -50 - 46 -{ x : Predicate } U { z : Predicate } -2805 -{ x : Predicate } U { y : Predicate } -{ z : Predicate } U { x : Predicate } -5036 * 8 * 6 * 9 - 89256 -z -9 * 148781 * 3 - 468759 -4 -{ y : Predicate } U { y : Predicate } -6 - 14 -6 * 4 - 6 +{ x : 87 > 843 } U { y : 2 * 6 * 802 - 88 * 70790 < 5 + 8 - 6 } U { z : 9 * 715 < 563644 & ! 3 * 2 = 392 + 8 & 4 = 2388 * 7 } U { x : 7 * 273 @ { z : 4090 + 889 = 2240 & 334743 > 2599 * 5 * 66736 * 2365 * 459 - 4828 * 52236 } & ! 91707 + 8 @ { y : ( 26 > 7 + 329912 | 90 < 608277 - 2 * 7 + 3509 ) } } U { y : ! 7 * 3 + 81 < 355 + 9 - 1 | 0 - 7 * 68 < 1 } U { x : 55 - 464 + 4 + 641 * 2545 + 5 * 974513 * 8302 = 50 - 46 - 6 | ( ( 267 + 3 - 41187 * 318055 + 9811 @ { x : 8 + 8 * 3 + 468759 - 7 - 23047 * 67 - 7812 + 930 - 519 + 8 < 3 * 44 | 4 * 6 * 2 - 0 * 8 @ { y : ( ! 26736 * 8 + 5 < 224 * 57 ) | 22598 < 1 & 6 - 7 * 8 @ { z : 3406 = 0 + 135117 - 6 } U { y : 286476 < 4 } U { y : 353 * 9 = 1 - 5 * 3 - 1 * 67942 * 9576 } & 7 + 9 * 838055 @ { y : 8 * 1 * 254 * 13399 - 1 * 3147 - 9 * 31 = 3 + 742513 * 2 * 4 * 7 } U { x : ! 8165 + 1 * 410 + 7 * 374812 * 43216 * 2 > 88088 - 64465 * 1702 * 4236 - 3331 * 9 * 35 - 5 | 2 < 3589 * 9 - 922245 - 0 - ( 38867 * 59 ) & ( 4 + 3629 - 55589 * 3 * 70914 + 712 > 4727 ) } | 8 * 0 * 9611 * 61178 - 9397 > ( 491 ) - 7710 * 75 * 606224 * 5 * 429280 & 29 * 293867 - 2 * 8 * 7 * 5 * 8 > 5 } U { y : 45 - 1 * 27 > 690 - 5 & ! 4 * 220 * 667185 + 9 * 7 < 8 + 2 - 0 & 314 @ { x : 8733 = 639924 * 31813 + 8 + 9 * 8 * 6505 * 6 - 8 - 675 } U { z : ! 346694 > 5 & 2 @ { x : ! 20978 * 6125 > 7 & 9 * 5275 + 4512 * 524 + 8 = 1 } & 750 * 6 > 2 + 657269 + y | 3438 < 1153 * 25781 * 8 - 75401 * 4 & 7 * 8 * 6 > 12429 + 60 } U { x : 105355 * 9 < 545408 + 74 * 451420 & 964 - 42 @ { x : ! 44 * 2 > 480904 + 378720 + 1 * 5387 * 9 } U { x : 9204 * 4325 * 4 * 23276 * 2 * 3 + 9 + 10 * 7 < 3390 * 9 } U { y : 6 - 4 + 9 - x * 6 * 9 > 504 & ( 8 * 45013 * 3885 - 0 * 4 = 1 ) } | 2 = 2 - 424 & 8 < 3660 * 4 + 7 * 1 - ( 749225 * 2 - 7 - 2387 ) * 107 - 58 } } | ! 9 < 39486 - 9 * 9996 & 30 - 6 = 795038 * 7 * 454 * 76 - 581596 | 1265 + 6045 = 7 * 1 * x * 1 * 92614 } ) & 5 * 36 @ { z : 339631 * 38244 + 2 * 5 * 0 > 63 } U { z : 4336 - 363 * 751831 * 5 * 80795 = 8 * 6 | 4060 * 50 * 1 * 3 > 7 + 1 + 9 * 3 * 69497 & 5 = 7558 & 2 = 718 + 4 * 7 + 3 } ) } U { z : 639 * 91252 * 773811 * 74655 < 0 + 956 & ! 1 @ { y : 295 - 6809 * 380600 @ { x : 8 + 0 * 2 @ { y : ! 375502 < 16898 + 94216 } U { x : 7 + 6101 * 1 @ { z : ( ( 3 - 47632 + 7 < 81040 * 856 + 2 - 6 * y ) ) & ( ! ( 5 * 9 + 1 ) + 462 > 1 & ! 540254 * 221 * 2 > 147 + 300 ) } & 2 = 63 } U { y : 7 > 5 - 2 - 44 } } U { z : 3 + 74 > 4 * 79771 * 6 + 0 - 745361 & 7629 + 71460 - 6952 = 5 + 645 * 88 * 5 | 37 * 99815 + 60251 * 21 > 126 - 9 - 484 + ( 5755 ) + 9 & ( 4 - 3 * 4 - 7 < 5 ) & 9 < 9 * 2 & 19225 - 9 * 5 + 441 * 19834 > 6528 + 5234 } & ( 29 * 95 * 72434 = 41 | 4 @ { y : 4 + 154 + 37243 * 8 * 43031 + 5 + 0 - 8 = 528 & 7 * 6 * 7 > y + 1030 & 46 * 8195 * 3136 < 8 * 57871 - 6 + 1933 * 632 * 0 - 3 + 7 + 68415 - 4 } & 97014 < 9335 ) | 77878 = ( 61 - 3 ) * 34409 * 15069 + 8 & 44 - 0 * 3022 + 9640 * 299 > 582794 } U { z : 1 * 392098 * 4 = 754 * 8 } U { x : 52424 * 8 - 2 > 8 - 9 + 9 * 1 * 2 * 449 - 0 } } +785532 + 904145 + 294546 * 1 +{ x : 0 - 438 * 110 - 8217 > 29 + 3886 | 7 > 34 - 2170 } U { z : 558 - 1 > 1 - 9 * 8 * 3314 | 3 + 7 - 767792 > 12 & ! 2 > 3 * 3 - 7 * 0 * 983 + 905980 * 5 } +301980 * 44 * 0 + 80862 * 7 +414462 +{ y : 4979 = 5 & 4045 * 4 * 3 + 7 * 66951 * 9 * 427 - 419 * 3 > 1 & 929478 < 46058 } U { x : ! 72 * 72 - 32 - 7 * 29919 - 7 * 6291 * 7 = 1 + 0 | 13 - 2 @ { x : 130 + 49895 @ { y : 410 * 991333 + 678 * 4 = 3 * 3 * 188752 * 2 * 88807 * 0 & 5 * 7 + 47661 * 1 = 706264 + 8 * 0 & 409 - 6 + 64 @ { y : 7 < 63914 - 8 * 7377 - 53223 | 4 + 5 * 86 + 145197 = 6 - 7 } & 6531 + 0 < 437760 | 51099 - 3 > 3 * 1762 | ! 22 * x * 693 > 53083 & ! 7 < 9 * 8 - 4 } } | 6 * 275891 < 3 - 8216 * 7 } +110741 +{ x : 2 = 9 * x * 1 } U { y : 8 < 30 * 4 - 5 * 9321 | 490 + 8 - 358839 - 6 * 545441 < 4 * 2398 * 7002 - 7 * 89 | 6 > 163 | 566 * 2 + 3 = 8586 | 65 - 2 * 70158 + 0 @ { z : 9 < 6 * 73405 - 3 * 433020 * 4 + 7 + 115837 | 5 + 315637 * 7 - 515 > 16 } U { z : 0 + 87709 * 539807 - 0 = 6692 * 9 } & 365203 = 165 - 33771 } +658 +{ x : 1 + 3073 * 6 + 2173 - 601105 * 49464 - 2 * 5 - 1 = 1837 } +{ z : 3 * 8 = 3 } +{ z : 11 = 4 * 489255 | ( 4 - 2 * 17183 + 52102 > 4 * 3046 ) } U { y : 62571 * 630 * 650 * 93 + 9529 - 831 + 7 @ { z : 9912 > 4 * 8 & ! 2116 < 1 } U { z : ! 540537 * 61 * 1 * 52627 = 4 * 5385 * 8446 + 85375 * 951924 + 2 + 0 + 4 + 8 + 5 | ! 6 = 1941 } U { y : ! 3 * 1 * 4446 = 623 - 4366 + 4 - 640 * 2 } U { x : ! z * 6 = 74 * 3 - 436384 + 5 - 4 } & 713 * 8 * 18937 * 7866 @ { x : 9 > 2 | 8 * 11265 * 2 * x + 26 * 8 @ { x : 0 < 3 * 471 - ( ( ( 7 ) * 4077 ) ) + 3 - 901 | ! 224376 * 79 * 7 - 19886 + 0 * 4120 - 2 + 129 + 99 + 132065 - 3 * 927861 + 0 + 4 * 5 - 5 - 3 < 39231 | 2 < 3 - 7 + 4 * 114084 | 776498 < 251 & 1 + 943 * 2 - 2 + 970 * 845 > 3 & 9874 * 48 * 56358 = 2 * 724 - 5 - 2 + x * 908263 * 3374 - 593 + 8639 + 9 & ( 4 * 541884 * 2 * 269544 * 9 - 45438 * 2 + 3 + 94 @ { y : 6 - 599212 * 7 * 5 @ { z : 43625 = 8 - 3 } } & 83239 * 160416 + 856317 = 448727 ) | 8 - 2 * 345008 = 1 & ( 3 * 67602 < 22389 | 0 * 5646 * 6 < 6 & 5 - 4 - 98380 * 4 * 984 + 8 + 15 - 5479 < 0 | 173654 * 3 + 99 > 1 - 3648 - 3856 - 6 ) } } & 2 - 954 + 2 = 9 | 60 * z < 13 - 1 * 3 - 8 - 239 & y * 0 * 4 - 844516 * 974961 + 2 * 1 * 0 * 1 * 322 + 7 < 62 } +{ x : 35 > 7 * 3049 + 324863 & ( ! 5 - 8123 > 17 + 41 + 59 * 9 + 6 - 9 * 82043 + 69 ) } +35300 * 54 - 6413 * 91774 +2190 +{ z : ! 3 - 3287 * 358127 > 6 * 40 * 1 & ( ! 249353 * 7 < 0 - 2 * 9 - 2 * 3 * 3 ) } U { y : 160926 - 41235 > 907 * 2 & 58 * 162 + 1 + 840118 * 8 * 909164 @ { x : 5 > 8 * 71799 * 0 * 5 * 959893 } | 60 > 5 - 3 + 319 + 7 } +61 - 91 - 920 * 5 * 580594 * 368 +{ x : 67260 > 0 * 36 } U { y : 4203 * x + 6 @ { x : ( 699623 + 236063 < 82 - 548608 * 7866 * 13 * 133 * z * 2263 ) & 946 + 6 + 4 - 9 * 7 * 7445 - 922 = 271 - 3 - 9 + 4 - 8 * 4897 - 176021 * 29154 - 4 * 14372 - 4 - 1362 - 3 + 35325 + 60662 & 77012 * 79 * 4 * 3 * 27 * 11 < 3 | 3 + 515 * 7002 * 908 * 3 @ { z : 7 + 23 @ { z : 2 = 188 + 7 * 56 * 3 * 4 * 5 - 133716 - 627 } U { y : 3296 + 6598 @ { y : 4 > 1071 - 438 | 7 = 5 * 8 - 42 * 77 * 81406 * 9538 * 0 - 4 * 311 * 2413 * 954115 - 0 } U { x : 5 + 91669 * 21 = 642 } } & 724 > 1 * 4952 - 79 - 2 + 394 - 6 - 69 * 3 * 9609 * 91 + 997 - 8 * 0 * 8 + 1 & 30781 - 6 @ { z : 8 * 766 < 8 } U { x : 165235 * 10820 > 90 * 426 } & 44299 > 61 * 7 * 0 + 253 - 1 * 4 & ! 23136 - 3 + 8580 - 40 * 55 - 1 = 3 - 89504 * 0 - 2 & 8 * 62817 = 5 * 711 * 13 } | ! 569097 * 3604 * 9434 @ { z : 5 + 8 * 0 * 79 = 686 } U { x : ! 88 * 9317 < 5 | 0 + 10620 * 8 + 752 < 86720 * 297 * 0 * 1381 * 6 - 6 - 3 } U { y : 87184 > 918968 } U { y : ! 8 - 0 * 26730 > 6 & 49344 + 1 * 44457 + 561 * 2 - 30 * 7 - 338843 * 6 * 6 - ( 312 + 5 - 21 - 4 ) * 5 = 4414 * 1 + 2 | ! 3 * 6129 * 83 - 55033 + 0 * 2 > 8 - 6 } } U { x : 9855 - 3 = 8 + 7772 - 320506 * 3 * 53257 * 1 - 127 & 8 * 673519 + 4 < 58991 * 4 * 4 | 758689 @ { x : 5 < 735023 } U { y : z * 74177 * 42600 - 0 > 4 | 14 * 0 * 944631 < 1 | 230621 * 39851 * 2 + 255 < 218 + 43 + 3 * 8991 } U { y : 744438 < 2 - 0 - 435002 * 822591 - 5 } U { y : 84626 > 0 * 91 + 3 & ! 2 * 1 < 8 * 81275 * 11305 * 76 & ! 98 > 15 - 9 | 497914 + 9708 < 6 * 829 } | 52 - 1 * 7 = 2 - 7581 - 8 + 54 - 132591 } & ! 2 * 471 = 30 * 9 } U { x : 408221 + 1 = 8 - 4 * 471089 } +{ z : ( 0 * 6240 * 1627 + 8 + 2 * 0 < 56174 * 136349 * 941738 | 8 = 917454 * 92017 - 3 & 2 * 3 - 1 * 412555 * 7 - 70 = 3441 * 3603 - 717 ) | 1 > 4 | 466961 - 57660 @ { y : 8278 - 106596 + 616 < 2 - 0 + 5 * 1 * ( 5 ) - 46296 | 3 + 286632 + 839674 < 7 | 0 + 56086 > 404380 * 68 - 9 & ( 5 + 2 * 42628 = 5327 - 9 - 651 | ! 22507 = ( 675176 * 7 ) + 1 + 4 ) } } U { x : 1 * 461550 = 0 } U { y : 7 + 241 > 3 } +{ y : 5 * 0 > 6 } U { z : 2 * 0 * 6 - 8 > 0 - 51 | 941953 - 0 - 2 = 7 * 1 - 0 } +{ x : 56 * 47 * 89080 * 522176 + 3601 * 2200 > 2086 | 9226 + 9524 + 582 * 10 = 0 * 464824 - 624 } +6 +6 +614 * 8 * 3 +6 +{ z : 67549 + 6 * 9 + 484758 @ { x : 2 < 769 * 871587 } U { z : 77718 * 549739 * 87082 + 20495 = 321663 * 6 - 4 + 59254 - 5 * 950295 } U { x : 87 = 740788 * 8 } U { y : 63583 > 31 * 672793 - 598028 - 8993 - 34 - 10 - 3 } U { y : 9 * 7 - 234 - 866761 - 4926 > 9 + 460802 * 2 * 464 + 240 - 213 * 3 | ! 2 < 2 + 4 * 52 * 838836 | 80 + 8 - 6 > 9 } } U { x : 9 + 8 * 0 = y * 2 } U { y : 482214 - 9 - 63511 > 59050 + 6 - 8 * 3 | 3 + 4 + 4 = 9 + 86663 * 6 } U { z : ! 920493 + 3719 * 460006 * 8 * 26229 * 0 * 6 = 344 * 93 - 14503 - 46944 - 8 - 247 + 5 * 4 + 97206 * 56481 * 2 * 651562 } U { z : 7 < 0 | 1 @ { z : ( 783828 * 0 * 3 - 2 - 2 < 7 ) } U { y : 4 * 2164 * 40438 = 69 } } +{ y : 0 = 68772 * 0 * 3 - 339 + 3633 + 6 * 3 - 170 & 1 < 8645 + 796206 * 6247 & 9 > 24320 } +{ x : 36978 + 25082 - 626555 * 8489 > 6 - 6877 * 48 * 62328 - 2 * 1 + 5 + 98 } +{ y : 4 * 509 * 81 - 9951 * 794418 * 3 < 7 & 5377 * 220235 * 9 > 956168 + 2 * 2921 + 1 * 0 } U { z : 2 + 217 = 59098 * 6340 & ( 5 * 19256 < 7 | 2 + 9366 * 6 - 2788 * 366586 * 811 + 5 - 5 - 15 + 485225 * 2 > 5574 + 9 ) | ! 188637 * 3743 * 8 + 331 * 87 @ { x : ! 456281 * 5061 * 71658 - 2 @ { x : ! 7614 * 50100 + 1 < 4 } & ! 82201 * 2 = 241574 + 94 * 8 & 407 * 3 @ { y : 7 * 887 = 1723 } | 2 * 3 = 66 * 8 * 3 * 3 * 60 - 0 * 2 } | 1342 * 120 - 761 * 5 < 3 | 38 + 711977 < 794 * 6 * x * 4 } +{ y : 5 + 0 = 2 * 5 & 8 < 5 } +6 +{ x : 64 + 854567 = 80 * 3 * 0 + 1 * 1 * 868816 + 22995 + 5850 * 5 | 4 - 9 * 6 + 49026 * 3 < 1 } U { x : ! 532 > 3 + 8244 + 45402 * 47 * 2 * 49720 * 4 & ( 350233 * 65 * 0 + 5 > 941 - 886 ) & ( 38 * 9 > 4 ) } U { y : ! 59 < 4 | 750848 * 74793 @ { z : 0 * 882407 > 2 + 4 - 18191 & 440966 < 319834 * 7 - 3 * 4523 - 66020 } } U { z : 1 < 55 * 8522 & 0 - 2 - 8 * 30107 + 63 = 2753 * 7 * 4105 * 7 * 8 & ! 1 * 254826 - 47174 + 7 + 7 > 9487 * 193 | ! 23187 * 6 > 2 - 0 * 93128 - 5 * 708 | 8 * 5 * 4 * 5 < 8 } U { z : 2 - 944 > 3 | 2 * 46 + 0 * y = 5 * 9 * 3 * 2 } +345 + 4909 - 74079 +{ y : 330584 > 9 } U { x : 42127 - 2 + 8 < 5 } +{ y : 755 + 8 < 4 * 6 } U { x : 6 + 470 @ { x : ! 2012 * 3718 < 0 | 5 + ( 62 + 1 + 4 * 8 ) - 80 * 577396 = 50 + 42746 + 6 | 5433 = 4554 & 0 > 9936 * 2 } U { z : 93 - 954 * 9 + 22 > 8 } U { x : 4 > 4 * 9 & 773269 * 5 @ { z : 4 - 49553 = 4 } & ! 5 * 63 - 264227 - 2 < 1 + 3 + 5 - 9 & ! 3 * 682339 + 592029 * 6 + 6 * 7 > 3385 * 91 - 230 * 2 } U { x : 6791 = 5 * 799406 * 9 } & 2 < 5488 & 7 > 65953 & 5 * 7 < 68 & ! 67 = 4 * 30 - 6046 * 1 + 5 * 9 - 0 * 783 * 237 | 6 + 464423 + 463 - ( 1877 * 8 * 4 + 6 - 1 * 7 * 8015 ) * 3650 = 9 + 39 * 48 * 38180 & 7 * 1 < 3 + 9 & 117 * 101 + 3 > 1 * 6168 * x & 3 + 563 = 7 - 9 * 8 - 894300 - 8 } +6402 + 7 - 4471 - 28 +{ x : 9 + 5 + 858 * 6236 < 6 * 991317 - 0 + 1 * z + 2 * 645791 + 693091 + 5 & 8 * 65 @ { z : 3 > 5 & 62049 @ { z : 9 * 3 + 8343 * 4785 + 7 - 694076 * 8 = 7 + 1 * 30 } } U { y : ! 54284 + 4 * 89 - 3997 * 9149 * 10 * 1 + 3 - 272 * 720 * 0 - 4 * 53 @ { x : 6 + 410 > 1 - 28 * 100 * 9 + 797977 + 3838 + 23103 & 3 * 3 * 6 + 3 + 4 - 2 @ { x : 72701 + 1 @ { z : 8364 - 182502 > 3 * 8 - 54744 & ! 38 + 1 * 2 * 812846 * 353458 < 0 + 9 * 5 } U { x : 95 * 4 > 0 - 805927 * 1 | 9139 * 2 - 53593 < 759655 * 0 + 4 } U { x : 4 * 94 + 1 - 2083 - 2 * 0 * 17 * 2 * 8 = 22 * 29 + 77435 * 3 - 98083 * 3684 * 93751 } & 8 * 5 < 3 - 4 & ! 9 * 94887 = 56 * 67 } } U { x : ! 8 * 9 - 16 > 8 - 75897 * 3 & 6 - 1 + 68 + 4 - 6 - 0 * 4 * 942 + 2 = z + 8933 | 4 - 9 * 5 * 8317 - 91 - 38 * 0 * 6 - 86224 - 4 @ { z : 0 * 6 * 8 - 429 = 414368 * 6 & 92503 * 86 < 4 * 6 + 57216 - 872061 * 5 + 3715 * 959 } U { x : 3 + 4 - 5 = 2 & ( 8438 * 185370 * 75198 * 8 @ { y : 89091 - 5 * 6 - 4 * 2 > 509080 } ) & ( 4 * 0 + 479 < 74 * 4914 * 5 * 438764 - 1 ) | 2 @ { z : ! 67 * 1 + 11 * 64 < 681 } } | 676416 * 42269 - 977 = 0 | 7 - 3 - 614 - 3 < 4 * 5 } U { x : 1 < 2 & 701694 * 392 + 752 * 66228 * 5935 = 7 } U { y : 5 + 0 > 344561 * 5 } | 626629 > 7068 - 1 + 5 + 67876 | 7 * 45 * 88769 + 80285 * 6 + 416 * 470 < 68 * 20 + 5 * 0 + 8 * 824 } U { y : 234780 > 3 + 7093 + 64486 + 951 - 6 | ( ( 57 * 3 ) + 0 + 656 < 65652 | 2 + 4 = 69208 * 666 & 0 - 99045 * 4 @ { x : 32671 < 388350 } U { z : ! 735 + 86694 @ { y : 44 < 475 & ( 10 < 633104 + ( 9 ) + 3 * 9 - 99 & 4976 + 8298 @ { x : 5 = 0 * 4 - 4 * 21 * 699196 } | ( 5 * 1 * 844 * 0 - 4 * 1 = 45 * 1 | 0 > 7 ) ) & ! 410 - 4 = 0 - 7 * 6 - 2 + 603554 + 6 + 6 & 261 = 7 | 13 * 767664 - 166 * 3 - 8013 > 6925 - 1 & 9 = 7 | 22776 * 65 > ( 38 ) - 5 + 7 & 30765 - 4639 > 89 * 66 * 4 & 4 - 83032 > 462 * 4457 - 243 | 9 * 7507 * 8 > 6 + 8 | 4 - 0 - 1710 - 358611 * 802 + 8 * 515 * 8 - 5 * 1 < 36 } U { z : ! y * 312694 < 419 & 0 - 8 > 9 | 13548 + 7 = 7 } } U { y : 9 - 800 + 85317 - 8 * 1 = 3965 & 9648 + 7 - 7694 * 2 * 5 @ { z : 4 * 635 - 4 < 4 + 9606 * 65628 } U { x : ( 5 - 233918 < 58488 - 92367 * 91015 - 7112 * 7 * 99882 * 58 - 508 ) & ! 14680 - 224 @ { y : 2 * 5 > 3 + 881 } U { z : 14442 * 0 * 515 > 8 + 4 & 66372 = 7 } U { x : ( 1 @ { z : 3245 - 863984 = 6 * 15956 - 5 * 81021 * 1 + 2830 & 598 * 7 * 9 @ { z : 7413 * 21 > 3 * 7 } & 8 @ { y : ! 132167 = 91 } U { x : 3 + 5 * 8 = 6 - 8 - 15783 } } & 934 + 8 * 884 * 333046 + 216141 * 967 = 99965 * 7 ) | 5 - 4 + 7 = 7 * 1 - 6 & ! 8 + 3 > 6 + 7 * 3 + 9 - 3 * 1 - 9 - 497458 & 8 * 0 * 921 > 0 * 18425 + 8 } & 7785 = 9 - 10192 | 5 - 1 - 953 * 12 = 234 * 0 * 2 - 3 * 8928 & 33 + 2 * 99280 = 30 * 950 * 4 | ! 6786 + 5 * 727 * 57747 + 263815 + 39 * 8 < 4390 * 16 - 0 * 20 } U { y : ! 95604 + 69813 * 77 + 3944 * 6 + 750906 * 680672 * 3 < 3 - 9930 * 9 * 3 - 5894 | ( 4 * 2 - 4050 - 83582 * 9 > 85 ) } U { z : ( 0 * 1 ) + 1 < 87 * 4 | 62420 + ( 8 * 4 ) = 8 | 15379 = 335939 & 1 * 0 * 456521 = 47586 * 56 * 5053 * 6 + 9 - 4 * 512443 * 1 + 98 * 5 * 8 } U { z : 5 * 12 * 646626 * 115999 > 296129 * 30 - 867 * 5 * 2 * 1 + 7 - 9 } | 9 * 43535 * 3 > 8 * 8777 * 90720 & 884990 - 3 * 389104 + 281992 * 599 + 4 @ { z : 1 + 78518 > 87 } U { z : 39193 * 6 > 5 | ( 2980 * 455170 * 9 = 5 + 197 - 713743 * 58 + 721046 ) & 6 - 0 + 57075 * 4220 - 2 * 6 = 7 } } & ( 74875 + 34028 - 8 * 0 ) = 3 + 464584 - 18 * 9 * 6 + 7 ) & 4 = 4 * 2014 - 8 | 75 * 1400 - 4362 - 5 * 1 < 77413 + 9 & ( ! 11429 + 194 = 5 ) & 1597 - 5 + 0 * 3964 - 4 * 52 * 4168 * 716 - 9 > z + 1 * 97523 - 1 * 749 | 5069 = 3 + 115148 & 8 * 3 > 54529 - 3 * 4 + 252 - 9379 | 5 * 0 * 9 < ( 6 - 4 + 384627 * 4 ) + 995744 * 4 - 6 * 7 & 9 = 9 - 781 * 1 } & 5 > 9 * 31973 & ( 81 < 7 - 2 | 4646 * 25 < 1 | ( 0 < 5 - 4 ) ) } U { y : 3 - 2726 > 9 } U { x : 3 > 33 + 5 + 4 | 787786 @ { x : ! 49278 @ { y : 193 * 467301 - 5 > 0 } U { y : 1 * 4 * 7 + 1 - 4 = 71030 * 0 & 4 * 3 * 361 + 5 @ { z : 67 - 902306 * 6 < 9 + 5 * 2 + 2672 + 3 + 361680 } U { z : 0 * 3 + 5 < ( 8 ) * 77 * 89 - 6 * 0 * 7595 | 6 * 9 < 1 * 787 - 1586 * 46 * 5 * 3 * 170 * 9 - 6 } & 174 * 5 < 3 - 44 } U { z : 10736 + 224 * 4 > ( 60541 + 4921 + 28 - 1 ) * 83773 & 9 < 1484 } U { z : 5 > 8285 - 8 & 935386 - 8778 * 5 * 1 - 4 < 0 * 9 | 91 = 0 * 0 * 71467 | 213 < 2 | 0 > 1 * 2 * 115993 & 6 * 0 = 7 } | 1 @ { y : 4937 = 78196 & ! 5 * 1 * 9 < 2 | 7 * 37894 * 8 - 0 - 12 > 95317 & 88 * 2 + 3 @ { y : 375515 * 9 < 4 + 78 + 0 + 12 * 9213 | 6631 * 2 * 232 + 8 * 9 * 683152 > 644 } | ( 3 * 6 - 740338 * 8 - 1 * 9 * 0 * 467100 - 28 * y + 1 > 43662 * 2 ) } U { z : 1 * 5 > 8 } & ! 5 - 9 * 3 - 18234 * 3 > ( 623 + 1608 * 5 - 7 ) | 8 + 564 < 88 & ! 7 + 75 - 4 * 67680 @ { z : 466 < 9 } U { z : ( 757 - 9777 * 44849 * 122 * 9 - 76 * 41 * 20 - 8397 * 6 * 1008 + 983 * 99845 - 2531 * 64884 - 9 > 6 - 5184 + 7 * 3 - 978 * 2 - 7 * 0 - 71392 ) & 4 @ { y : ! 27918 * 3 - 21565 @ { x : 3 > 954 + 1 - 9 + 3 + 9 & 5 * 150399 = 47 + 954 * 80 * 892256 - 591 | 3181 > 7 * 420 * 6 * 39235 } & 5 + 886135 < 0 } U { z : 803 * 11370 + 0 * 2 * 6 + 7475 < 9093 * 1 - 6 - 7946 & 4307 + 0 + 5 > 9 * 4 & 1 > 0 & 27 + 68 * 1 @ { y : 8704 > 3061 } U { y : 4 + 22876 * 544 > 195 + 6 - 8 - 957 + 5 * 876 * 9 * ( 0 + 64 ) } } } } U { x : 8 = 3613 } U { z : 126 + 0 - 958 = 13829 } U { z : 18265 @ { z : 1 * 5727 > 0 * 8673 | 346891 * 33 > 3 * 5 } U { x : 2 * 6 = 31 + 282 - 5643 - 3160 * 9 * 1 + 6 * 95004 } U { y : 205280 + 2737 = 0 + 8 - 3777 + 5 - 7818 + 57 * 728 & ! 321008 + 709427 * 14 = 81650 - 491154 + 2 * 8158 + 8 + 2 & 7207 - 31 * 688 * 864508 + 46841 - 14 * 3 + 18697 * 1 + 15670 < 1 & ( ! 843 + 1 * 195 * 1 = 1 * 2 | 0 = 6 * 6 | 8537 < 4656 ) } } U { z : 3 * 4506 + 9 * 1 - 2 * 567 * 6946 * 5 - 3 + 96 > 760069 * 80004 & ! 56127 - 5 - 10 > 6 - 9 } & 46898 > 8 * 9414 * 28393 * 331 - 2833 | 4 * 409 - 3232 + 2 * 5 * 24125 + 167 * 9 + 7740 + 0 * 67 + 84 * 6 = 8 * 52489 & 7 * 901 = 1895 + 63611 * 504 } +{ x : 549 * 2 * 288677 * 596431 + 139330 * 4434 + 257 - 11477 * 8 = 7203 | 4 * 5 < 252 } U { z : 9 < 70 * 67398 - 951 - 5353 + 3 * 89513 * 0 * 0 - 949823 - 724163 } U { y : ( 47710 * 375 * 7 = 2 - 2 * 48 - 1 - 362 ) & 1 < 8540 * 128549 + 79 * 957 - 919877 | 621 - 6 + 8 - 1 + 90052 + 7 + 6 * 557 + 80204 - 817 + 646174 * 783 - 4 * 54 + 80115 * 5 * 8 - 348514 * 11 * 4 * 53 @ { y : ! 8519 * 2 * 2 + 53 * 1586 - 63 @ { y : ! 316 * 0 * 9 + 5250 < 3 * 5 & 5 < 211442 * 9588 & 6 + 75 * 1 = 4 + 731721 + 101 * 28683 } U { z : 1 - 1946 + 1 * 831 > 3 + 513233 | 5 - 6 * 8 + 902 + 4 * 7539 + 4 * 7 < 51605 * 61 - 6 + 185076 * 329 - 93056 * 273 * 0 } & 6 @ { y : 6 + 72 * 32 + 69329 * 15 * 80 * 328007 > 4 * 3 - 91296 + 64309 * 93 } U { x : 27331 < 5 * 8 | ! 60205 < 1 + 6 * 5 + 3571 * 5965 - 75522 * 20499 + 5090 * 5 + 5 - 94129 & ! 62866 > 31223 - 2 * 4 } | ( 1 > 2724 + 790 | ! 1 > 22 * 18041 * 42464 ) } U { z : y - 946 * 9 - 7 - 834547 > 4 * 8823 + 7 * 6 - 41 + 5935 + 3 } U { x : 91232 * 6 * 4 - 4 < 14 - 1 + 3 * 642120 & 3012 * 9 * 910012 - 42750 * 97 = 503158 * 903750 } } U { z : 2 - 1 = 6912 * 6 } U { y : 9 * 8 * 0 > 93410 * 249 | 374 * 65064 * 7 + 9 = 6926 } U { x : ( ! 3 + 33 - 2 * 8812 + 8 * 1 * 464 - 4 * 9 * 45699 - 83 < 177140 + 7 & 6 < 306 - 85315 ) & ( 97 = 0 & 338906 * 8278 + 1 - 7 - 425961 * 5 * 90144 - 7 - 497574 = 41651 * 8 - 283028 * 3952 + 493 * 93 - 1 + 491335 - 12 + 693 ) & 6 = 385890 } U { z : 9 - 6 < 74 & ! 1728 + 1 < 6389 } U { x : ( 373 > 5 + 134 & 1 - 1195 > 2759 + 71242 ) } +3 +7 - 5 + 714726 +7 + 148586 +8206 * 32 - 34887 * 3 +{ x : 8170 = 63 * 1 } U { z : ! 65812 * 4 - 75817 - 7881 + 63 * 21028 - 553925 < 6 * 8 } U { y : 8 = 2 - 79387 - 19458 - 3 } U { z : 983437 * 440380 * 1 - 3 * 4 + 9613 * 7 - 820 * 9 * 240465 * 880 * 5 = 8 * 22 * 2 * y & 440 * 8 = 9 + 4 * 11579 + 834008 * 1 * 1 - 7 - 7 + 99 & 1 * 5 * 68 - 3 = 54 * 305 * 356 * 4 * 66402 * 76 - 309416 * 111598 * 838237 } 1 -44 + 70 + ( 52 ) * 0 - 8 - 718 - 68317 - 22654 * 7 - 2 * 57 -{ y : Predicate } U { x : Predicate } -2 - 4 -{ x : Predicate } -{ z : Predicate } +{ y : 8 = 617 * 5 & 4 + 4 * 995 * 95849 < 3 + 1 * 8 * 4 * 70 - 730753 * 3 - 86 - 50 | 6 < 203 + 7 | 730043 + 1 * 2 + 55009 * 6791 - 518240 > 0 | 4 < 2 } +1874 - 3 +61804 - 2 * 3 + 12 * 9 * ( 0 - 72 + y - 3726 * 9 * 2 + 2 - 54 ) +9 - 3 * 6 * 69 +9 + 1159 - 630985 - 2 +{ y : 151 > 2 | 4 @ { z : 73 = 292 + 96157 + 34285 + 8 - 428 } U { y : ! 22161 * z * 14 > 3 * 5 - 9982 + 9 + 18215 } U { z : 42 + 96196 * 8 * 0 @ { z : ! 4427 + 60940 + 7 * 8 * 5 > 576 * 339835 * 6 } } U { z : 61316 = 8123 } U { y : 6 * 94141 * 1 + 2 * 95 = 5099 + 0 | 68653 @ { z : 3 + 2 + 2 > 47 | 89824 @ { x : 59503 - 903 < 305 - 99 * 84 * 948841 + 7 * y - 3 * 822 * 246766 } U { z : ( 9 + 9005 < 461992 * 15 * 2 + 33 * 6441 & 1103 * 876 @ { x : 0 - 542543 + 5 < 3087 - 9 } ) } & ( ( 2 * 7 * 663357 - 8487 > 4323 + 23562 * 4 * 8 - y * 1102 * 635960 & 6 * 2 + 7 > 30436 - z & 62 + 6044 > 211103 * 82 * 5 - 4 * 563 ) & 8 + 8 > 8 * 5 - 476 + 0 - 88031 ) } U { y : 9477 = 34 | ! 473366 < 0 + 1 * 6 & 914 * 5 * 18033 + 591 + 28 < 1 } U { z : 398 + 6 < 63689 & ( 79106 < 34 ) | 4 @ { y : 3 * 57105 - 352 * 5 = 865263 - 0 + 6 } U { y : y * 646 * 359 + 8 - 59941 * 49437 + 294229 * 49864 < 6 } U { x : 0 = 512268 & ! 4 + 0 * 552738 + 936 = 8 } } U { x : 3 = 46 * 0 * 5 } & 9 + 64 - 69 = 324 - 6 | 7 + 72913 + 7535 = 7 - 76 + 8 & 9 * 2 + 7 * 6 + 388 + 694346 * 827298 + 6 + 673500 + 4 * 8 - 80 = 3 * 11000 - 2 + 734 - ( 40123 ) + 5882 * 44 - 6 - 4 + 244 + 9 } & 7 * 65 > ( 1 + 6 * 7099 ) & 0 + 7 - 4 * 0 - 29337 * 9464 * 5 * 2 + 5 * 5 - 8113 * 3 = 4465 * 9057 - 75127 & 8 > 1 + 465 } +549284 - x +{ z : 944562 + 920664 @ { z : 59685 * 1 * 7 + 4 > 9 * 15 * 2392 * 536585 * 3 * 15 * 853 } U { y : 4 + 707 + ( 9 - 9 - 7 ) * 6107 * 7 * 3240 - 906 > 90 * 442 + 3 & 578 > 2 } | 564 < 3 & ( 0 - 2650 @ { x : 3 * 44 - 3 * 186 > 2 } | 622884 < 5 * 5358 * 19700 + 3 ) | ! 739782 - 6 = ( 5 * 7 ) * 6 & 8 > 961 * 2 & 7 + 0 - 2 * 3 < 95889 * 7 + 70 * 76 - 8 - 45 & ( ( 55 - 0 * 23 < 794 * 558 * 1 + 4648 - 32 + 7 & 583 > 5218 * 2 - 4 * 4 + 0 & 5 < 9 * 5 & 9 - 9 * 42 - 9 - 5 * 40195 * 9 * 0 + 3 * 143675 > 2 * 5 ) ) } U { z : ( ! 31 < 2 * 771973 ) & 8 + 4 = 50 * 0 * 9 - 5600 * 9446 - 486 + 9 * 762 } +65 * ( 916 ) + 2 6 -{ y : Predicate } -8 - 2 + 94495 - 59 * 8314 -{ z : Predicate } -{ y : Predicate } -{ z : Predicate } -{ z : Predicate } -6 - 8 * 6 - 81 +4 * 3 - 470083 + 4 +{ y : 314900 - 5075 * 2 + 1616 + 604197 * 57714 > 50 & ( ( 0 + 626409 * 7 ) = 4 | 3 + 8 + 182 + 9511 @ { z : ! 52 + 1 @ { x : 80757 > 44791 + 2 * 927139 - 3 - 8 } U { z : 5 < 7 & 4 * 10 - 43081 + 37647 * 9813 > 6793 } | 5 * 59 > 778657 * 1 - 6 & ( 2075 + 13342 + 5 + 3782 + 126 = 874 * 0 - 406 * 218 + 1 | ! 93131 * 5 + 1 * 9442 + 389 * 6 = 6 * 4 & ! 8 + 2385 @ { z : ! 0 - 2 = 8 & 119 < 76 + 6 + 97 + 9 * 32 * 608571 + 8 - 2 + 0 } | ( 5 > 490 * 643 * 505832 * 4 + 4 * 4 & 8 + 1 - 5 = 1 - 3 ) ) & 7 + 670388 * 7 + 88051 @ { y : 5 @ { y : 3 + 0 * 8 + 5 + 67 * 0 * 12243 - 11 - 7552 + 1 + 1 > 4 * 8212 - 4 - 7 * 7 - 5 } U { y : 555113 * 12 = 647 * 8237 & ! 2 - 48 - 520 + 74131 * 4 @ { z : 9 + 5813 + 55397 * 9 - 772 > 7 & ! 6049 * 42327 * 3490 > 808 - 3 * 3 * 0 & 2 @ { x : 1423 > 6 } U { z : ! 144 * 0 < 7 & 3 < 57 * 9 } U { z : 5 > 628 } | ! 206 - 0 > 8 } } U { z : 7 + 1 * 301 > 1 } U { x : ! 42688 * 465 @ { z : ! 57207 * 1 * 57647 * 24 + 11982 * 0 * 6 + 561656 + 74 + 3 + 8574 + 6 = 7 + 9 } } } & 309510 = 792367 * 441277 } U { y : 3 + 0 > 4 - 53418 & 2 * 4 + 8105 - 4 - 9 - 45 + 9 = 587289 } | ! 57091 + 7316 - 45914 * 0 * 6 = 3 * 3909 & 3 = 7 * 21336 + 497 ) | 0 - 75 = 4 * 55 & 2 < 7 } U { x : 0 > 7 } U { x : 3288 > ( 0 * 2 + 89655 ) } U { y : 783656 * 93 + 1 * 862 * y = 1089 - 53 - 68 } +{ y : 782368 < 5462 & 88344 + 2 - 5 + 3403 + 7 * 4 = z + 938627 - 135101 - 1 } U { x : 8 > 5 * 8521 * 3 * 2 * 5 & 5 - 87 * 0 * 1 > ( 586 - 5 ) * 1282 + 26 * 118136 * 7 * 2726 * 85 & 134 + 35 + 551003 - 8 < 2 } +3 - 0 * 43 - 4 * 4 +{ x : 3 = 2 | ! 2 * 2 + 8 + 9 - 6 + 2 = 5 } U { z : 8 * 2 + 6 - 59 * 9 * 4 + 8 - 0 > 9 & ! 7 + 625475 + 9 * 9 - 0 - 9560 @ { x : 0 = 8 | ! 4 - 1 + 46 = 5137 | 764 * 6 > 6 * 3347 - 15860 * 0 - 31 * 70 - 358615 & 213 > 7 } U { x : 5 > 1 * 83805 & ! 99685 + 3172 * 7 * 6 * 4256 + 3 * 7 - 6 - 785 + 7 * 30607 * 6 - 4899 = 457 + 619 & 483975 * 5 + 3 @ { y : 8136 - 9 * 8 @ { y : 11 - 3 * 2 + 6 * 996058 + 8 - 2 > 30428 } } & 7 < 0 } U { z : ! 3 * 14732 * 12764 - 1 - 843 + 987533 * 3 < 15781 - 0 | 5 * 4 * 5 * 50 = 8715 | ! 2 + 3 < 814584 + 91280 * 9 } U { z : 0 < 180 - 5 * 31 * 4455 * 6 & 4 < 3689 * 48186 + 169094 } U { x : ( 60361 + 4396 * 1 * 8 - 106 - 1 + 9 - 382 * 499579 * 9 * 9 * 433356 > 3 + 82545 & ( 9 - 0 - 0 * 906355 * 3 * 0 + 7 + 73938 - 4243 - 2 @ { z : ( 7 ) = 1 } U { z : 39099 * 87 - 7195 > 204 * 70034 * 0 } ) & ( 21 * 0 = 756 - 16269 + 5 ) ) | 58 - 3984 + 823 - 37463 > 4 } } U { x : 62 + 6 = 808 - 3 + 456 + 33462 * 8 * 6 + 227484 - 7 } U { z : 71032 < z + 2 * 7 & 25 + 522201 + 3 * 3 - 3 < 219483 - 399 - 84 + 1 * 9 - 42 | 4 < 4 } U { x : 3 @ { y : 87027 - 9 - 8 * 5265 < 833 + 131235 - 6471 } & 2 * 8 * 2 < 19529 | 23981 + 43121 * 7 * 200 > 75 } U { z : ! 75 > 828140 * 8 - 13354 | ! 8 > 5 } U { z : 14 - 65369 * 5 = 262499 * 109563 } +497 +7353 +{ z : 7 + 58 - 118 * 3 = 4 | 28 * 372 * 5169 - 1297 * 0 * 78 + 4 - 375663 * 68246 > 63313 * 8 & 3 * 4701 * 863 + 7 < 78500 * 389063 * 5 + 9 } +{ z : 10 * 2 > 7 - 7 | 45203 * 51537 - 54 = 0 + 37 - 474791 * 4 | 1556 * 27 * 5808 + 3518 + 1 * 0 < 59 - 572 * 2 } U { x : 60432 * 300029 > 12207 - 7398 } U { z : ( 64713 * 36517 * 155 * 96 * 7 * 6597 + 80 + 453 * 1 * 2137 ) * 981848 = 40135 - 0 - 835 * 4 - 9 + 1 } +{ y : 797939 - 4 - 292033 * 9 - 9 - 31030 * 900894 < 5877 + 5 * 1 * 46987 & 793 > 4 } U { z : ! 464741 + 826 - 0 * 7908 < 72 } +4763 +5 + 5 * 3 + 850286 * 6 * 3 * 51 - 387 + 961 +28453 - 8 +{ z : ( 215 * 3 * 473 < 2 * 4 * 8 ) & 9 = 95 & 1 + 5 + 8721 - 6 + 1 < 107767 & 466 - 4 * 8 * 13 < 0 - 15 } +2 +6 * 4781 * 8840 - 572 * 8 +466 - 9 +522197 - 727 +72637 - 37 +{ y : 94482 > 23 } U { y : 5 < 76 + 473 | ! 143 @ { x : 904455 = 42 - 0 | ( 6375 > 13 * 8 * 275885 * 3 * 1 ) & ( ! 686338 + 182635 @ { y : 9 * 8499 < 4 * 958 - 6 - 45807 * 129198 * 77964 - 9 * 4 | 91 - 5 - 9 + 9 < 0 - 6 - 25385 * 0 + 48 * 2390 * 7 * 6 + 4 * 2 - 292405 - 0 & 9 > 222299 - 658443 - 9723 - 9723 - 10 * 0 + 5 - 3 + 9 * 37741 * 1 } U { z : ( 820071 ) < 40 * 1 + 835 - y & 77 + 5 > 9 } ) } U { x : 0 * 6 + 8487 < 92148 + 5150 - 3 * 2 } } +{ x : ! 0 * 914 > 5 + 7 + 8 | 3 = 939869 } U { y : 5 < z & 4 * 5 * 8 - 8 > 15 - 95383 & 5619 + 5 * 801257 * 33050 * 175 < 97228 * 553484 - 6 * 7 * 7282 * 4 * 5560 * 828796 + 540727 * 3 - 91 + 56903 - 1 * 26 * 589669 + 4 + 1 | 1 * 5922 = 525 * 8778 + 8 } +{ x : 93561 + 3 < 1 + 2 } U { x : 8 + 9 - 5 > 4 + 929220 - 7 * 8 } U { x : 5122 * 3 * 0 > 52 * 813 } U { y : 21 * 9 = 763291 * 1631 } +{ x : 2 < 3 * 2 } +93 + 6 +{ x : 5 - 39463 + 2 * 2 * 702329 - 9 - 294519 + 3 * 0 + 379 - 55477 = 98993 * 375 } +{ y : 55061 @ { y : ! 780823 * 1 < 230 & 57706 < 106 * 8 } & 9 - 6 * 4 * 281477 * 9 - 3 - 6 > 6 * 0 * 8 - 78732 - 9 * 218 * 594 * 3 } +647 * 9 +{ z : 39 = 4 * 8 } +8210 +{ x : 8 * 6 * 4229 * 0 + 287 - 1 - 6853 = 677213 - 6 - 561 + 834239 - 2627 - 454 } U { z : 6738 * 151 > 7 } U { z : 334 + 7 - 0 + 1 + 61767 * 8017 - 6 + 1 > 3 - 84 & 6 * 32 > 33 } +{ y : 9 * 300366 * 48 < 6 * 9 - 6 - 152 } U { y : 3 * 0 * 80822 - 0 * 12 < 75 & ( 74 = 4 * 5 * 46855 * 0 * 9928 * 23 * 459 * 2 * 912 * 4 * 7 * 799456 - 0 - 0 - 693367 - 222218 * 3 * 54730 * 48 + 205449 + 7925 - 9 | 86 > 5 & 5113 * 1 + 0 - 9 * 0 * 3 * 55 < 9 | 104 + 430216 * 5737 @ { z : 8 - 2 - 14 = 814556 | 40728 < 2 | 56 = 5444 * 7 * 161 * 764131 & 0 - 8 = 66 } & ! 20821 + 6868 * 7 * 272 + y - 79904 * 1204 - 3 = 0 & x = 96700 + 612749 - 2 + 0 + 8 - 90 * 745133 * 4479 * 3 & 7 - 11 - 360 * 2 - 531179 > 8 + 614 ) } U { z : 1 - 43377 < 246566 - 1 * 44 * 5595 + 4 + 6 - 107 - 72681 | ! 130 @ { z : 631994 > 5239 | 5167 + 4 * 638512 * 520396 * 7 < 0 } U { x : 3 * 5 @ { z : ( 3 * 572109 ) * 85 + 3118 @ { z : 233 * 0 @ { z : 205 @ { y : 6 * 6 - 4 * 3 > 9 + 294 - 8 } U { y : ! 275562 = 89124 - 779 + 4 * 2 | 4 > 287 - 6 * 4 - 8957 - 716 * 6 } | 3 > 184562 | 2842 + 7 > 95 * 641936 - 90 + ( 376712 - 3 * 4 ) + 1 + 5 * z * 197503 - 1266 } } U { y : ( 9729 > 1 * x * 64646 ) } U { y : 8 * 8 - 1 * 8 * 56438 - 5 * 7 + 9048 * 629 + 4 > 5 * 674952 } U { x : 8 > 642115 + 92061 & 0 * 40776 - 4 * 60 = 6 * 6 - 8 * 511 - 0 * 865 + 87328 } & 7 + 7 * 706451 > 8 * 939467 - 0 * 300 + 2 - 7 * 5 | ( 855 * 2 * 177107 - 3 * 90 * 958619 * 226 - 4477 * 789733 ) > 39 } | ! 4 = 6 + 25415 * 1875 * 3 } & 9 + 9507 = 1 - 8279 * 347966 & 4 * 981 * 8281 * 8 < 4 * 9 + 55 } +8 * 7 +{ x : 71759 * 4 * 9 * 194804 < 0 & ! 86 - 774110 * 85 + 1 * 3 > 5173 | 3216 * 6532 - 375463 = 2705 } +{ y : 1 < 8 | 32879 + 1 @ { z : 4 < 8 * 959 - 3 * 3030 * 0 + 382 } U { y : 5513 - 6 - 17 = 5 * 271 - 416628 + 12 + 1 | 4894 * 4 * 4364 @ { y : 2 + 71847 - 6276 * 2749 - 56 = ( 1 ) & 9220 * 2 * 38672 < 0 } | ( 5 @ { x : 18 * 7238 > 878363 - 7 | ! 917074 + 3 * 5 @ { y : 6 + 46 > 4 * 6 * 4 - 926 - 9 * 0 * 37023 - 2 | ( 39577 * 231 * 7401 - 3 * 21 * 13049 @ { z : 9482 + 55744 - 5 = 6 - 165 + 6 } & ! 13 > 3622 | 395409 > 7 + 3197 & ! 0 + 826 + 4 * 61434 - 3633 + 63531 + 0 * 8 * 3 + 4681 - 36760 * 1 @ { z : 7 = 846 - 68 + 9 * 11761 * 9 } U { x : 17608 > 5 - 451 - 7 } U { z : ! 6 - 95 + 32 + 5015 < 7 * 7 | 50 * 8987 = 4 - 8764 } U { x : 74925 - 123 * 5 > 0 } ) } U { z : 0 - 214 > 9 + 4 } & 42 < 81 & 4 * 5 * 2 < 2 * 7 * 6 & 72999 * 3 - 2 * 3923 < 0 - 4 - 1 + 3 } U { y : 1575 + 4 + 9 < 0 & 75 + 999 > 2 & ! 8 * 302 < 5 | 8001 - 8 > 1032 * 4660 } & 24000 - 6490 * 6040 * 9 = 2 * 5 + 755738 * 5 * 3 * 6 + 0 * 23406 & ( ! 850 > 839 ) & 71 - 2541 > 8969 * 91 * 0 + 5 * 84 * 1 - 2 & 65255 - 196705 + 59847 * 797701 < 8 - 4 | ! 6 * 4 < 80413 * 4425 * 869329 * 56902 * 6 - 3 ) & 3 + 8 * 8 * 81806 + 33 * 149399 - 3 - 4 * 0 - 9 * 2 > 1 * 312 | 2 * 43795 * 9 @ { z : ! 3 > 4 } } & 47 + 6 > z * 747037 & ( 89 * 95 * 9956 + 5 * 398140 - 8 - 21503 * 8 > 2 + 8 + 62165 * 4 + 6 + 8 - 3 & 481714 + 40503 * 7 - 233386 < 8 ) | 683194 + 4 * 1 * 9765 + 9799 - 53 + 10 * 6 < x + 6 + 8 & ( 1 + 0 @ { y : 1 @ { x : 97 - 1 * 881 < 4 * 1 * 1 & 0 - 5 > 3289 * 9 | 5 + 3 + 6 * 2636 = 51278 * 2559 } U { y : 37 * 324440 - 2 * 936 - 8 + 16766 @ { z : 3 * x + 19 - 16 > 4 - 1909 * 992 * 53 + 53531 - 659 | 2 @ { y : 35651 * 725 < 4 } | 425 + 5 * 45050 + 7 * 4 + 8 + 58455 * 7 * 170 - 80 + 3 < 1880 * 63 * 6 & 7835 < 0 - 9 | ! 64834 * 8 * 2 * 90659 * 9 * 6 @ { z : 2 * 35 - 1 * 6 - 8 = 3 * 3 - 851442 & 20187 * 2088 * 6 + 2 + 9 * ( 8 * 9 - 9 + 11 * 2 * 4 - 5 * 944 + 41739 * 1 * 10469 * 807 * 0 * 0 ) * 734 * 7920 < 3 * 8 + 62 * 5 & 84277 + 3 * 3 - 7 * 9 = 0 - 9594 | ! 57791 + 51 = 2 } U { z : 83 + 8 - 7 < 790214 - 59 - 2 - 1502 } U { z : 239482 * 9 * 680 = 329642 * 53 - 2 - 969 * 1 + 328 } } | 4 + 8 * 8 > 46 + 12691 } U { z : 7 < 1 + 7305 * 7 * 9852 - 8 - 33 + 574623 * 9 } U { x : ! 3 + 89 @ { z : 266 < 35628 + 345 * 3 * 5 * 4 } & 3146 * 3877 - 7 * 4 = 7 } | 61 - 73 - 2 * 9868 * 16497 * 9 > 78 + 0 - 92645 + 0 } ) } +0 + 42 +275 * 901 * 3 - 10599 * 77237 + 69657 +{ y : 859 > 1 } U { z : ! 27379 * 5755 - 0 * 3179 * 9354 > 8 & ! 70083 + 4 * 1 - 3 * 9 * 4235 + 4 + 5426 - 28180 > 2 * 824 } +310070 - 70 - 9 + 2 * 8148 * 4 - 13 * 11004 - 573 +778 +8966 - 312659 - 619 +1 * 4 7 -{ x : Predicate } -14 -481 -5 * 3 -{ x : Predicate } -9 -{ y : Predicate } -3 * 2 -7 + 9 * 838055 - 20 -{ z : Predicate } -5 - 254 + 13399 - 1 * 3147 -{ y : Predicate } -y -423868 + 425131 * 13417 * 942 -3 -412 -0 - 7 * 374812 * 43216 * 2 + 88088 * 5964 * 9 * 8 -{ y : Predicate } U { y : Predicate } -{ x : Predicate } U { z : Predicate } U { z : Predicate } -{ z : Predicate } -{ y : Predicate } U { y : Predicate } -7313 -{ y : Predicate } U { x : Predicate } -{ z : Predicate } -177 -{ x : Predicate } U { x : Predicate } U { x : Predicate } -{ z : Predicate } U { y : Predicate } U { z : Predicate } U { z : Predicate } -2650 * 86886 -{ y : Predicate } U { y : Predicate } U { x : Predicate } -{ y : Predicate } U { y : Predicate } U { y : Predicate } -6 - 515589 -149 From 20431ebb5da270f6e21f9de61a5a031a0bc524fc Mon Sep 17 00:00:00 2001 From: Devin Yeung Date: Thu, 14 Nov 2024 12:09:22 +0800 Subject: [PATCH 15/15] add more testcases --- src/generator.rs | 12 +- ...n__generator__test__typed_set_algebra.snap | 202 +++++++++--------- ...nerator__test__typed_set_algebra_expr.snap | 104 +++++++++ 3 files changed, 217 insertions(+), 101 deletions(-) create mode 100644 src/snapshots/bnfgen__generator__test__typed_set_algebra_expr.snap diff --git a/src/generator.rs b/src/generator.rs index da912a9..2ee415e 100644 --- a/src/generator.rs +++ b/src/generator.rs @@ -120,7 +120,7 @@ mod test { } #[test] - fn test_typed_set_algebra() { + fn test_typed_set_algebra_expr() { let text = include_str!("../examples/set-algebra-typed.bnfgen"); let grammar = RawGrammar::parse(text).unwrap().to_checked().unwrap(); let gen = Generator { grammar }; @@ -131,4 +131,14 @@ mod test { .join("\n"); insta::assert_snapshot!(out); } + + #[test] + fn test_typed_set_algebra() { + let text = include_str!("../examples/set-algebra-typed.bnfgen"); + let grammar = RawGrammar::parse(text).unwrap().to_checked().unwrap(); + let gen = Generator { grammar }; + let mut seeded_rng = rand::rngs::StdRng::seed_from_u64(42); + let out = gen.generate("Program", &mut seeded_rng); + insta::assert_snapshot!(out); + } } diff --git a/src/snapshots/bnfgen__generator__test__typed_set_algebra.snap b/src/snapshots/bnfgen__generator__test__typed_set_algebra.snap index cf9b00a..38ed8f8 100644 --- a/src/snapshots/bnfgen__generator__test__typed_set_algebra.snap +++ b/src/snapshots/bnfgen__generator__test__typed_set_algebra.snap @@ -2,103 +2,105 @@ source: src/generator.rs expression: out --- -5890 * 683309 * 0 * 55757 -20477 * 663547 - 4 -1 - 310560 + 7 -3001 -{ x : 87 > 843 } U { y : 2 * 6 * 802 - 88 * 70790 < 5 + 8 - 6 } U { z : 9 * 715 < 563644 & ! 3 * 2 = 392 + 8 & 4 = 2388 * 7 } U { x : 7 * 273 @ { z : 4090 + 889 = 2240 & 334743 > 2599 * 5 * 66736 * 2365 * 459 - 4828 * 52236 } & ! 91707 + 8 @ { y : ( 26 > 7 + 329912 | 90 < 608277 - 2 * 7 + 3509 ) } } U { y : ! 7 * 3 + 81 < 355 + 9 - 1 | 0 - 7 * 68 < 1 } U { x : 55 - 464 + 4 + 641 * 2545 + 5 * 974513 * 8302 = 50 - 46 - 6 | ( ( 267 + 3 - 41187 * 318055 + 9811 @ { x : 8 + 8 * 3 + 468759 - 7 - 23047 * 67 - 7812 + 930 - 519 + 8 < 3 * 44 | 4 * 6 * 2 - 0 * 8 @ { y : ( ! 26736 * 8 + 5 < 224 * 57 ) | 22598 < 1 & 6 - 7 * 8 @ { z : 3406 = 0 + 135117 - 6 } U { y : 286476 < 4 } U { y : 353 * 9 = 1 - 5 * 3 - 1 * 67942 * 9576 } & 7 + 9 * 838055 @ { y : 8 * 1 * 254 * 13399 - 1 * 3147 - 9 * 31 = 3 + 742513 * 2 * 4 * 7 } U { x : ! 8165 + 1 * 410 + 7 * 374812 * 43216 * 2 > 88088 - 64465 * 1702 * 4236 - 3331 * 9 * 35 - 5 | 2 < 3589 * 9 - 922245 - 0 - ( 38867 * 59 ) & ( 4 + 3629 - 55589 * 3 * 70914 + 712 > 4727 ) } | 8 * 0 * 9611 * 61178 - 9397 > ( 491 ) - 7710 * 75 * 606224 * 5 * 429280 & 29 * 293867 - 2 * 8 * 7 * 5 * 8 > 5 } U { y : 45 - 1 * 27 > 690 - 5 & ! 4 * 220 * 667185 + 9 * 7 < 8 + 2 - 0 & 314 @ { x : 8733 = 639924 * 31813 + 8 + 9 * 8 * 6505 * 6 - 8 - 675 } U { z : ! 346694 > 5 & 2 @ { x : ! 20978 * 6125 > 7 & 9 * 5275 + 4512 * 524 + 8 = 1 } & 750 * 6 > 2 + 657269 + y | 3438 < 1153 * 25781 * 8 - 75401 * 4 & 7 * 8 * 6 > 12429 + 60 } U { x : 105355 * 9 < 545408 + 74 * 451420 & 964 - 42 @ { x : ! 44 * 2 > 480904 + 378720 + 1 * 5387 * 9 } U { x : 9204 * 4325 * 4 * 23276 * 2 * 3 + 9 + 10 * 7 < 3390 * 9 } U { y : 6 - 4 + 9 - x * 6 * 9 > 504 & ( 8 * 45013 * 3885 - 0 * 4 = 1 ) } | 2 = 2 - 424 & 8 < 3660 * 4 + 7 * 1 - ( 749225 * 2 - 7 - 2387 ) * 107 - 58 } } | ! 9 < 39486 - 9 * 9996 & 30 - 6 = 795038 * 7 * 454 * 76 - 581596 | 1265 + 6045 = 7 * 1 * x * 1 * 92614 } ) & 5 * 36 @ { z : 339631 * 38244 + 2 * 5 * 0 > 63 } U { z : 4336 - 363 * 751831 * 5 * 80795 = 8 * 6 | 4060 * 50 * 1 * 3 > 7 + 1 + 9 * 3 * 69497 & 5 = 7558 & 2 = 718 + 4 * 7 + 3 } ) } U { z : 639 * 91252 * 773811 * 74655 < 0 + 956 & ! 1 @ { y : 295 - 6809 * 380600 @ { x : 8 + 0 * 2 @ { y : ! 375502 < 16898 + 94216 } U { x : 7 + 6101 * 1 @ { z : ( ( 3 - 47632 + 7 < 81040 * 856 + 2 - 6 * y ) ) & ( ! ( 5 * 9 + 1 ) + 462 > 1 & ! 540254 * 221 * 2 > 147 + 300 ) } & 2 = 63 } U { y : 7 > 5 - 2 - 44 } } U { z : 3 + 74 > 4 * 79771 * 6 + 0 - 745361 & 7629 + 71460 - 6952 = 5 + 645 * 88 * 5 | 37 * 99815 + 60251 * 21 > 126 - 9 - 484 + ( 5755 ) + 9 & ( 4 - 3 * 4 - 7 < 5 ) & 9 < 9 * 2 & 19225 - 9 * 5 + 441 * 19834 > 6528 + 5234 } & ( 29 * 95 * 72434 = 41 | 4 @ { y : 4 + 154 + 37243 * 8 * 43031 + 5 + 0 - 8 = 528 & 7 * 6 * 7 > y + 1030 & 46 * 8195 * 3136 < 8 * 57871 - 6 + 1933 * 632 * 0 - 3 + 7 + 68415 - 4 } & 97014 < 9335 ) | 77878 = ( 61 - 3 ) * 34409 * 15069 + 8 & 44 - 0 * 3022 + 9640 * 299 > 582794 } U { z : 1 * 392098 * 4 = 754 * 8 } U { x : 52424 * 8 - 2 > 8 - 9 + 9 * 1 * 2 * 449 - 0 } } -785532 + 904145 + 294546 * 1 -{ x : 0 - 438 * 110 - 8217 > 29 + 3886 | 7 > 34 - 2170 } U { z : 558 - 1 > 1 - 9 * 8 * 3314 | 3 + 7 - 767792 > 12 & ! 2 > 3 * 3 - 7 * 0 * 983 + 905980 * 5 } -301980 * 44 * 0 + 80862 * 7 -414462 -{ y : 4979 = 5 & 4045 * 4 * 3 + 7 * 66951 * 9 * 427 - 419 * 3 > 1 & 929478 < 46058 } U { x : ! 72 * 72 - 32 - 7 * 29919 - 7 * 6291 * 7 = 1 + 0 | 13 - 2 @ { x : 130 + 49895 @ { y : 410 * 991333 + 678 * 4 = 3 * 3 * 188752 * 2 * 88807 * 0 & 5 * 7 + 47661 * 1 = 706264 + 8 * 0 & 409 - 6 + 64 @ { y : 7 < 63914 - 8 * 7377 - 53223 | 4 + 5 * 86 + 145197 = 6 - 7 } & 6531 + 0 < 437760 | 51099 - 3 > 3 * 1762 | ! 22 * x * 693 > 53083 & ! 7 < 9 * 8 - 4 } } | 6 * 275891 < 3 - 8216 * 7 } -110741 -{ x : 2 = 9 * x * 1 } U { y : 8 < 30 * 4 - 5 * 9321 | 490 + 8 - 358839 - 6 * 545441 < 4 * 2398 * 7002 - 7 * 89 | 6 > 163 | 566 * 2 + 3 = 8586 | 65 - 2 * 70158 + 0 @ { z : 9 < 6 * 73405 - 3 * 433020 * 4 + 7 + 115837 | 5 + 315637 * 7 - 515 > 16 } U { z : 0 + 87709 * 539807 - 0 = 6692 * 9 } & 365203 = 165 - 33771 } -658 -{ x : 1 + 3073 * 6 + 2173 - 601105 * 49464 - 2 * 5 - 1 = 1837 } -{ z : 3 * 8 = 3 } -{ z : 11 = 4 * 489255 | ( 4 - 2 * 17183 + 52102 > 4 * 3046 ) } U { y : 62571 * 630 * 650 * 93 + 9529 - 831 + 7 @ { z : 9912 > 4 * 8 & ! 2116 < 1 } U { z : ! 540537 * 61 * 1 * 52627 = 4 * 5385 * 8446 + 85375 * 951924 + 2 + 0 + 4 + 8 + 5 | ! 6 = 1941 } U { y : ! 3 * 1 * 4446 = 623 - 4366 + 4 - 640 * 2 } U { x : ! z * 6 = 74 * 3 - 436384 + 5 - 4 } & 713 * 8 * 18937 * 7866 @ { x : 9 > 2 | 8 * 11265 * 2 * x + 26 * 8 @ { x : 0 < 3 * 471 - ( ( ( 7 ) * 4077 ) ) + 3 - 901 | ! 224376 * 79 * 7 - 19886 + 0 * 4120 - 2 + 129 + 99 + 132065 - 3 * 927861 + 0 + 4 * 5 - 5 - 3 < 39231 | 2 < 3 - 7 + 4 * 114084 | 776498 < 251 & 1 + 943 * 2 - 2 + 970 * 845 > 3 & 9874 * 48 * 56358 = 2 * 724 - 5 - 2 + x * 908263 * 3374 - 593 + 8639 + 9 & ( 4 * 541884 * 2 * 269544 * 9 - 45438 * 2 + 3 + 94 @ { y : 6 - 599212 * 7 * 5 @ { z : 43625 = 8 - 3 } } & 83239 * 160416 + 856317 = 448727 ) | 8 - 2 * 345008 = 1 & ( 3 * 67602 < 22389 | 0 * 5646 * 6 < 6 & 5 - 4 - 98380 * 4 * 984 + 8 + 15 - 5479 < 0 | 173654 * 3 + 99 > 1 - 3648 - 3856 - 6 ) } } & 2 - 954 + 2 = 9 | 60 * z < 13 - 1 * 3 - 8 - 239 & y * 0 * 4 - 844516 * 974961 + 2 * 1 * 0 * 1 * 322 + 7 < 62 } -{ x : 35 > 7 * 3049 + 324863 & ( ! 5 - 8123 > 17 + 41 + 59 * 9 + 6 - 9 * 82043 + 69 ) } -35300 * 54 - 6413 * 91774 -2190 -{ z : ! 3 - 3287 * 358127 > 6 * 40 * 1 & ( ! 249353 * 7 < 0 - 2 * 9 - 2 * 3 * 3 ) } U { y : 160926 - 41235 > 907 * 2 & 58 * 162 + 1 + 840118 * 8 * 909164 @ { x : 5 > 8 * 71799 * 0 * 5 * 959893 } | 60 > 5 - 3 + 319 + 7 } -61 - 91 - 920 * 5 * 580594 * 368 -{ x : 67260 > 0 * 36 } U { y : 4203 * x + 6 @ { x : ( 699623 + 236063 < 82 - 548608 * 7866 * 13 * 133 * z * 2263 ) & 946 + 6 + 4 - 9 * 7 * 7445 - 922 = 271 - 3 - 9 + 4 - 8 * 4897 - 176021 * 29154 - 4 * 14372 - 4 - 1362 - 3 + 35325 + 60662 & 77012 * 79 * 4 * 3 * 27 * 11 < 3 | 3 + 515 * 7002 * 908 * 3 @ { z : 7 + 23 @ { z : 2 = 188 + 7 * 56 * 3 * 4 * 5 - 133716 - 627 } U { y : 3296 + 6598 @ { y : 4 > 1071 - 438 | 7 = 5 * 8 - 42 * 77 * 81406 * 9538 * 0 - 4 * 311 * 2413 * 954115 - 0 } U { x : 5 + 91669 * 21 = 642 } } & 724 > 1 * 4952 - 79 - 2 + 394 - 6 - 69 * 3 * 9609 * 91 + 997 - 8 * 0 * 8 + 1 & 30781 - 6 @ { z : 8 * 766 < 8 } U { x : 165235 * 10820 > 90 * 426 } & 44299 > 61 * 7 * 0 + 253 - 1 * 4 & ! 23136 - 3 + 8580 - 40 * 55 - 1 = 3 - 89504 * 0 - 2 & 8 * 62817 = 5 * 711 * 13 } | ! 569097 * 3604 * 9434 @ { z : 5 + 8 * 0 * 79 = 686 } U { x : ! 88 * 9317 < 5 | 0 + 10620 * 8 + 752 < 86720 * 297 * 0 * 1381 * 6 - 6 - 3 } U { y : 87184 > 918968 } U { y : ! 8 - 0 * 26730 > 6 & 49344 + 1 * 44457 + 561 * 2 - 30 * 7 - 338843 * 6 * 6 - ( 312 + 5 - 21 - 4 ) * 5 = 4414 * 1 + 2 | ! 3 * 6129 * 83 - 55033 + 0 * 2 > 8 - 6 } } U { x : 9855 - 3 = 8 + 7772 - 320506 * 3 * 53257 * 1 - 127 & 8 * 673519 + 4 < 58991 * 4 * 4 | 758689 @ { x : 5 < 735023 } U { y : z * 74177 * 42600 - 0 > 4 | 14 * 0 * 944631 < 1 | 230621 * 39851 * 2 + 255 < 218 + 43 + 3 * 8991 } U { y : 744438 < 2 - 0 - 435002 * 822591 - 5 } U { y : 84626 > 0 * 91 + 3 & ! 2 * 1 < 8 * 81275 * 11305 * 76 & ! 98 > 15 - 9 | 497914 + 9708 < 6 * 829 } | 52 - 1 * 7 = 2 - 7581 - 8 + 54 - 132591 } & ! 2 * 471 = 30 * 9 } U { x : 408221 + 1 = 8 - 4 * 471089 } -{ z : ( 0 * 6240 * 1627 + 8 + 2 * 0 < 56174 * 136349 * 941738 | 8 = 917454 * 92017 - 3 & 2 * 3 - 1 * 412555 * 7 - 70 = 3441 * 3603 - 717 ) | 1 > 4 | 466961 - 57660 @ { y : 8278 - 106596 + 616 < 2 - 0 + 5 * 1 * ( 5 ) - 46296 | 3 + 286632 + 839674 < 7 | 0 + 56086 > 404380 * 68 - 9 & ( 5 + 2 * 42628 = 5327 - 9 - 651 | ! 22507 = ( 675176 * 7 ) + 1 + 4 ) } } U { x : 1 * 461550 = 0 } U { y : 7 + 241 > 3 } -{ y : 5 * 0 > 6 } U { z : 2 * 0 * 6 - 8 > 0 - 51 | 941953 - 0 - 2 = 7 * 1 - 0 } -{ x : 56 * 47 * 89080 * 522176 + 3601 * 2200 > 2086 | 9226 + 9524 + 582 * 10 = 0 * 464824 - 624 } -6 -6 -614 * 8 * 3 -6 -{ z : 67549 + 6 * 9 + 484758 @ { x : 2 < 769 * 871587 } U { z : 77718 * 549739 * 87082 + 20495 = 321663 * 6 - 4 + 59254 - 5 * 950295 } U { x : 87 = 740788 * 8 } U { y : 63583 > 31 * 672793 - 598028 - 8993 - 34 - 10 - 3 } U { y : 9 * 7 - 234 - 866761 - 4926 > 9 + 460802 * 2 * 464 + 240 - 213 * 3 | ! 2 < 2 + 4 * 52 * 838836 | 80 + 8 - 6 > 9 } } U { x : 9 + 8 * 0 = y * 2 } U { y : 482214 - 9 - 63511 > 59050 + 6 - 8 * 3 | 3 + 4 + 4 = 9 + 86663 * 6 } U { z : ! 920493 + 3719 * 460006 * 8 * 26229 * 0 * 6 = 344 * 93 - 14503 - 46944 - 8 - 247 + 5 * 4 + 97206 * 56481 * 2 * 651562 } U { z : 7 < 0 | 1 @ { z : ( 783828 * 0 * 3 - 2 - 2 < 7 ) } U { y : 4 * 2164 * 40438 = 69 } } -{ y : 0 = 68772 * 0 * 3 - 339 + 3633 + 6 * 3 - 170 & 1 < 8645 + 796206 * 6247 & 9 > 24320 } -{ x : 36978 + 25082 - 626555 * 8489 > 6 - 6877 * 48 * 62328 - 2 * 1 + 5 + 98 } -{ y : 4 * 509 * 81 - 9951 * 794418 * 3 < 7 & 5377 * 220235 * 9 > 956168 + 2 * 2921 + 1 * 0 } U { z : 2 + 217 = 59098 * 6340 & ( 5 * 19256 < 7 | 2 + 9366 * 6 - 2788 * 366586 * 811 + 5 - 5 - 15 + 485225 * 2 > 5574 + 9 ) | ! 188637 * 3743 * 8 + 331 * 87 @ { x : ! 456281 * 5061 * 71658 - 2 @ { x : ! 7614 * 50100 + 1 < 4 } & ! 82201 * 2 = 241574 + 94 * 8 & 407 * 3 @ { y : 7 * 887 = 1723 } | 2 * 3 = 66 * 8 * 3 * 3 * 60 - 0 * 2 } | 1342 * 120 - 761 * 5 < 3 | 38 + 711977 < 794 * 6 * x * 4 } -{ y : 5 + 0 = 2 * 5 & 8 < 5 } -6 -{ x : 64 + 854567 = 80 * 3 * 0 + 1 * 1 * 868816 + 22995 + 5850 * 5 | 4 - 9 * 6 + 49026 * 3 < 1 } U { x : ! 532 > 3 + 8244 + 45402 * 47 * 2 * 49720 * 4 & ( 350233 * 65 * 0 + 5 > 941 - 886 ) & ( 38 * 9 > 4 ) } U { y : ! 59 < 4 | 750848 * 74793 @ { z : 0 * 882407 > 2 + 4 - 18191 & 440966 < 319834 * 7 - 3 * 4523 - 66020 } } U { z : 1 < 55 * 8522 & 0 - 2 - 8 * 30107 + 63 = 2753 * 7 * 4105 * 7 * 8 & ! 1 * 254826 - 47174 + 7 + 7 > 9487 * 193 | ! 23187 * 6 > 2 - 0 * 93128 - 5 * 708 | 8 * 5 * 4 * 5 < 8 } U { z : 2 - 944 > 3 | 2 * 46 + 0 * y = 5 * 9 * 3 * 2 } -345 + 4909 - 74079 -{ y : 330584 > 9 } U { x : 42127 - 2 + 8 < 5 } -{ y : 755 + 8 < 4 * 6 } U { x : 6 + 470 @ { x : ! 2012 * 3718 < 0 | 5 + ( 62 + 1 + 4 * 8 ) - 80 * 577396 = 50 + 42746 + 6 | 5433 = 4554 & 0 > 9936 * 2 } U { z : 93 - 954 * 9 + 22 > 8 } U { x : 4 > 4 * 9 & 773269 * 5 @ { z : 4 - 49553 = 4 } & ! 5 * 63 - 264227 - 2 < 1 + 3 + 5 - 9 & ! 3 * 682339 + 592029 * 6 + 6 * 7 > 3385 * 91 - 230 * 2 } U { x : 6791 = 5 * 799406 * 9 } & 2 < 5488 & 7 > 65953 & 5 * 7 < 68 & ! 67 = 4 * 30 - 6046 * 1 + 5 * 9 - 0 * 783 * 237 | 6 + 464423 + 463 - ( 1877 * 8 * 4 + 6 - 1 * 7 * 8015 ) * 3650 = 9 + 39 * 48 * 38180 & 7 * 1 < 3 + 9 & 117 * 101 + 3 > 1 * 6168 * x & 3 + 563 = 7 - 9 * 8 - 894300 - 8 } -6402 + 7 - 4471 - 28 -{ x : 9 + 5 + 858 * 6236 < 6 * 991317 - 0 + 1 * z + 2 * 645791 + 693091 + 5 & 8 * 65 @ { z : 3 > 5 & 62049 @ { z : 9 * 3 + 8343 * 4785 + 7 - 694076 * 8 = 7 + 1 * 30 } } U { y : ! 54284 + 4 * 89 - 3997 * 9149 * 10 * 1 + 3 - 272 * 720 * 0 - 4 * 53 @ { x : 6 + 410 > 1 - 28 * 100 * 9 + 797977 + 3838 + 23103 & 3 * 3 * 6 + 3 + 4 - 2 @ { x : 72701 + 1 @ { z : 8364 - 182502 > 3 * 8 - 54744 & ! 38 + 1 * 2 * 812846 * 353458 < 0 + 9 * 5 } U { x : 95 * 4 > 0 - 805927 * 1 | 9139 * 2 - 53593 < 759655 * 0 + 4 } U { x : 4 * 94 + 1 - 2083 - 2 * 0 * 17 * 2 * 8 = 22 * 29 + 77435 * 3 - 98083 * 3684 * 93751 } & 8 * 5 < 3 - 4 & ! 9 * 94887 = 56 * 67 } } U { x : ! 8 * 9 - 16 > 8 - 75897 * 3 & 6 - 1 + 68 + 4 - 6 - 0 * 4 * 942 + 2 = z + 8933 | 4 - 9 * 5 * 8317 - 91 - 38 * 0 * 6 - 86224 - 4 @ { z : 0 * 6 * 8 - 429 = 414368 * 6 & 92503 * 86 < 4 * 6 + 57216 - 872061 * 5 + 3715 * 959 } U { x : 3 + 4 - 5 = 2 & ( 8438 * 185370 * 75198 * 8 @ { y : 89091 - 5 * 6 - 4 * 2 > 509080 } ) & ( 4 * 0 + 479 < 74 * 4914 * 5 * 438764 - 1 ) | 2 @ { z : ! 67 * 1 + 11 * 64 < 681 } } | 676416 * 42269 - 977 = 0 | 7 - 3 - 614 - 3 < 4 * 5 } U { x : 1 < 2 & 701694 * 392 + 752 * 66228 * 5935 = 7 } U { y : 5 + 0 > 344561 * 5 } | 626629 > 7068 - 1 + 5 + 67876 | 7 * 45 * 88769 + 80285 * 6 + 416 * 470 < 68 * 20 + 5 * 0 + 8 * 824 } U { y : 234780 > 3 + 7093 + 64486 + 951 - 6 | ( ( 57 * 3 ) + 0 + 656 < 65652 | 2 + 4 = 69208 * 666 & 0 - 99045 * 4 @ { x : 32671 < 388350 } U { z : ! 735 + 86694 @ { y : 44 < 475 & ( 10 < 633104 + ( 9 ) + 3 * 9 - 99 & 4976 + 8298 @ { x : 5 = 0 * 4 - 4 * 21 * 699196 } | ( 5 * 1 * 844 * 0 - 4 * 1 = 45 * 1 | 0 > 7 ) ) & ! 410 - 4 = 0 - 7 * 6 - 2 + 603554 + 6 + 6 & 261 = 7 | 13 * 767664 - 166 * 3 - 8013 > 6925 - 1 & 9 = 7 | 22776 * 65 > ( 38 ) - 5 + 7 & 30765 - 4639 > 89 * 66 * 4 & 4 - 83032 > 462 * 4457 - 243 | 9 * 7507 * 8 > 6 + 8 | 4 - 0 - 1710 - 358611 * 802 + 8 * 515 * 8 - 5 * 1 < 36 } U { z : ! y * 312694 < 419 & 0 - 8 > 9 | 13548 + 7 = 7 } } U { y : 9 - 800 + 85317 - 8 * 1 = 3965 & 9648 + 7 - 7694 * 2 * 5 @ { z : 4 * 635 - 4 < 4 + 9606 * 65628 } U { x : ( 5 - 233918 < 58488 - 92367 * 91015 - 7112 * 7 * 99882 * 58 - 508 ) & ! 14680 - 224 @ { y : 2 * 5 > 3 + 881 } U { z : 14442 * 0 * 515 > 8 + 4 & 66372 = 7 } U { x : ( 1 @ { z : 3245 - 863984 = 6 * 15956 - 5 * 81021 * 1 + 2830 & 598 * 7 * 9 @ { z : 7413 * 21 > 3 * 7 } & 8 @ { y : ! 132167 = 91 } U { x : 3 + 5 * 8 = 6 - 8 - 15783 } } & 934 + 8 * 884 * 333046 + 216141 * 967 = 99965 * 7 ) | 5 - 4 + 7 = 7 * 1 - 6 & ! 8 + 3 > 6 + 7 * 3 + 9 - 3 * 1 - 9 - 497458 & 8 * 0 * 921 > 0 * 18425 + 8 } & 7785 = 9 - 10192 | 5 - 1 - 953 * 12 = 234 * 0 * 2 - 3 * 8928 & 33 + 2 * 99280 = 30 * 950 * 4 | ! 6786 + 5 * 727 * 57747 + 263815 + 39 * 8 < 4390 * 16 - 0 * 20 } U { y : ! 95604 + 69813 * 77 + 3944 * 6 + 750906 * 680672 * 3 < 3 - 9930 * 9 * 3 - 5894 | ( 4 * 2 - 4050 - 83582 * 9 > 85 ) } U { z : ( 0 * 1 ) + 1 < 87 * 4 | 62420 + ( 8 * 4 ) = 8 | 15379 = 335939 & 1 * 0 * 456521 = 47586 * 56 * 5053 * 6 + 9 - 4 * 512443 * 1 + 98 * 5 * 8 } U { z : 5 * 12 * 646626 * 115999 > 296129 * 30 - 867 * 5 * 2 * 1 + 7 - 9 } | 9 * 43535 * 3 > 8 * 8777 * 90720 & 884990 - 3 * 389104 + 281992 * 599 + 4 @ { z : 1 + 78518 > 87 } U { z : 39193 * 6 > 5 | ( 2980 * 455170 * 9 = 5 + 197 - 713743 * 58 + 721046 ) & 6 - 0 + 57075 * 4220 - 2 * 6 = 7 } } & ( 74875 + 34028 - 8 * 0 ) = 3 + 464584 - 18 * 9 * 6 + 7 ) & 4 = 4 * 2014 - 8 | 75 * 1400 - 4362 - 5 * 1 < 77413 + 9 & ( ! 11429 + 194 = 5 ) & 1597 - 5 + 0 * 3964 - 4 * 52 * 4168 * 716 - 9 > z + 1 * 97523 - 1 * 749 | 5069 = 3 + 115148 & 8 * 3 > 54529 - 3 * 4 + 252 - 9379 | 5 * 0 * 9 < ( 6 - 4 + 384627 * 4 ) + 995744 * 4 - 6 * 7 & 9 = 9 - 781 * 1 } & 5 > 9 * 31973 & ( 81 < 7 - 2 | 4646 * 25 < 1 | ( 0 < 5 - 4 ) ) } U { y : 3 - 2726 > 9 } U { x : 3 > 33 + 5 + 4 | 787786 @ { x : ! 49278 @ { y : 193 * 467301 - 5 > 0 } U { y : 1 * 4 * 7 + 1 - 4 = 71030 * 0 & 4 * 3 * 361 + 5 @ { z : 67 - 902306 * 6 < 9 + 5 * 2 + 2672 + 3 + 361680 } U { z : 0 * 3 + 5 < ( 8 ) * 77 * 89 - 6 * 0 * 7595 | 6 * 9 < 1 * 787 - 1586 * 46 * 5 * 3 * 170 * 9 - 6 } & 174 * 5 < 3 - 44 } U { z : 10736 + 224 * 4 > ( 60541 + 4921 + 28 - 1 ) * 83773 & 9 < 1484 } U { z : 5 > 8285 - 8 & 935386 - 8778 * 5 * 1 - 4 < 0 * 9 | 91 = 0 * 0 * 71467 | 213 < 2 | 0 > 1 * 2 * 115993 & 6 * 0 = 7 } | 1 @ { y : 4937 = 78196 & ! 5 * 1 * 9 < 2 | 7 * 37894 * 8 - 0 - 12 > 95317 & 88 * 2 + 3 @ { y : 375515 * 9 < 4 + 78 + 0 + 12 * 9213 | 6631 * 2 * 232 + 8 * 9 * 683152 > 644 } | ( 3 * 6 - 740338 * 8 - 1 * 9 * 0 * 467100 - 28 * y + 1 > 43662 * 2 ) } U { z : 1 * 5 > 8 } & ! 5 - 9 * 3 - 18234 * 3 > ( 623 + 1608 * 5 - 7 ) | 8 + 564 < 88 & ! 7 + 75 - 4 * 67680 @ { z : 466 < 9 } U { z : ( 757 - 9777 * 44849 * 122 * 9 - 76 * 41 * 20 - 8397 * 6 * 1008 + 983 * 99845 - 2531 * 64884 - 9 > 6 - 5184 + 7 * 3 - 978 * 2 - 7 * 0 - 71392 ) & 4 @ { y : ! 27918 * 3 - 21565 @ { x : 3 > 954 + 1 - 9 + 3 + 9 & 5 * 150399 = 47 + 954 * 80 * 892256 - 591 | 3181 > 7 * 420 * 6 * 39235 } & 5 + 886135 < 0 } U { z : 803 * 11370 + 0 * 2 * 6 + 7475 < 9093 * 1 - 6 - 7946 & 4307 + 0 + 5 > 9 * 4 & 1 > 0 & 27 + 68 * 1 @ { y : 8704 > 3061 } U { y : 4 + 22876 * 544 > 195 + 6 - 8 - 957 + 5 * 876 * 9 * ( 0 + 64 ) } } } } U { x : 8 = 3613 } U { z : 126 + 0 - 958 = 13829 } U { z : 18265 @ { z : 1 * 5727 > 0 * 8673 | 346891 * 33 > 3 * 5 } U { x : 2 * 6 = 31 + 282 - 5643 - 3160 * 9 * 1 + 6 * 95004 } U { y : 205280 + 2737 = 0 + 8 - 3777 + 5 - 7818 + 57 * 728 & ! 321008 + 709427 * 14 = 81650 - 491154 + 2 * 8158 + 8 + 2 & 7207 - 31 * 688 * 864508 + 46841 - 14 * 3 + 18697 * 1 + 15670 < 1 & ( ! 843 + 1 * 195 * 1 = 1 * 2 | 0 = 6 * 6 | 8537 < 4656 ) } } U { z : 3 * 4506 + 9 * 1 - 2 * 567 * 6946 * 5 - 3 + 96 > 760069 * 80004 & ! 56127 - 5 - 10 > 6 - 9 } & 46898 > 8 * 9414 * 28393 * 331 - 2833 | 4 * 409 - 3232 + 2 * 5 * 24125 + 167 * 9 + 7740 + 0 * 67 + 84 * 6 = 8 * 52489 & 7 * 901 = 1895 + 63611 * 504 } -{ x : 549 * 2 * 288677 * 596431 + 139330 * 4434 + 257 - 11477 * 8 = 7203 | 4 * 5 < 252 } U { z : 9 < 70 * 67398 - 951 - 5353 + 3 * 89513 * 0 * 0 - 949823 - 724163 } U { y : ( 47710 * 375 * 7 = 2 - 2 * 48 - 1 - 362 ) & 1 < 8540 * 128549 + 79 * 957 - 919877 | 621 - 6 + 8 - 1 + 90052 + 7 + 6 * 557 + 80204 - 817 + 646174 * 783 - 4 * 54 + 80115 * 5 * 8 - 348514 * 11 * 4 * 53 @ { y : ! 8519 * 2 * 2 + 53 * 1586 - 63 @ { y : ! 316 * 0 * 9 + 5250 < 3 * 5 & 5 < 211442 * 9588 & 6 + 75 * 1 = 4 + 731721 + 101 * 28683 } U { z : 1 - 1946 + 1 * 831 > 3 + 513233 | 5 - 6 * 8 + 902 + 4 * 7539 + 4 * 7 < 51605 * 61 - 6 + 185076 * 329 - 93056 * 273 * 0 } & 6 @ { y : 6 + 72 * 32 + 69329 * 15 * 80 * 328007 > 4 * 3 - 91296 + 64309 * 93 } U { x : 27331 < 5 * 8 | ! 60205 < 1 + 6 * 5 + 3571 * 5965 - 75522 * 20499 + 5090 * 5 + 5 - 94129 & ! 62866 > 31223 - 2 * 4 } | ( 1 > 2724 + 790 | ! 1 > 22 * 18041 * 42464 ) } U { z : y - 946 * 9 - 7 - 834547 > 4 * 8823 + 7 * 6 - 41 + 5935 + 3 } U { x : 91232 * 6 * 4 - 4 < 14 - 1 + 3 * 642120 & 3012 * 9 * 910012 - 42750 * 97 = 503158 * 903750 } } U { z : 2 - 1 = 6912 * 6 } U { y : 9 * 8 * 0 > 93410 * 249 | 374 * 65064 * 7 + 9 = 6926 } U { x : ( ! 3 + 33 - 2 * 8812 + 8 * 1 * 464 - 4 * 9 * 45699 - 83 < 177140 + 7 & 6 < 306 - 85315 ) & ( 97 = 0 & 338906 * 8278 + 1 - 7 - 425961 * 5 * 90144 - 7 - 497574 = 41651 * 8 - 283028 * 3952 + 493 * 93 - 1 + 491335 - 12 + 693 ) & 6 = 385890 } U { z : 9 - 6 < 74 & ! 1728 + 1 < 6389 } U { x : ( 373 > 5 + 134 & 1 - 1195 > 2759 + 71242 ) } -3 -7 - 5 + 714726 -7 + 148586 -8206 * 32 - 34887 * 3 -{ x : 8170 = 63 * 1 } U { z : ! 65812 * 4 - 75817 - 7881 + 63 * 21028 - 553925 < 6 * 8 } U { y : 8 = 2 - 79387 - 19458 - 3 } U { z : 983437 * 440380 * 1 - 3 * 4 + 9613 * 7 - 820 * 9 * 240465 * 880 * 5 = 8 * 22 * 2 * y & 440 * 8 = 9 + 4 * 11579 + 834008 * 1 * 1 - 7 - 7 + 99 & 1 * 5 * 68 - 3 = 54 * 305 * 356 * 4 * 66402 * 76 - 309416 * 111598 * 838237 } -1 -{ y : 8 = 617 * 5 & 4 + 4 * 995 * 95849 < 3 + 1 * 8 * 4 * 70 - 730753 * 3 - 86 - 50 | 6 < 203 + 7 | 730043 + 1 * 2 + 55009 * 6791 - 518240 > 0 | 4 < 2 } -1874 - 3 -61804 - 2 * 3 + 12 * 9 * ( 0 - 72 + y - 3726 * 9 * 2 + 2 - 54 ) -9 - 3 * 6 * 69 -9 + 1159 - 630985 - 2 -{ y : 151 > 2 | 4 @ { z : 73 = 292 + 96157 + 34285 + 8 - 428 } U { y : ! 22161 * z * 14 > 3 * 5 - 9982 + 9 + 18215 } U { z : 42 + 96196 * 8 * 0 @ { z : ! 4427 + 60940 + 7 * 8 * 5 > 576 * 339835 * 6 } } U { z : 61316 = 8123 } U { y : 6 * 94141 * 1 + 2 * 95 = 5099 + 0 | 68653 @ { z : 3 + 2 + 2 > 47 | 89824 @ { x : 59503 - 903 < 305 - 99 * 84 * 948841 + 7 * y - 3 * 822 * 246766 } U { z : ( 9 + 9005 < 461992 * 15 * 2 + 33 * 6441 & 1103 * 876 @ { x : 0 - 542543 + 5 < 3087 - 9 } ) } & ( ( 2 * 7 * 663357 - 8487 > 4323 + 23562 * 4 * 8 - y * 1102 * 635960 & 6 * 2 + 7 > 30436 - z & 62 + 6044 > 211103 * 82 * 5 - 4 * 563 ) & 8 + 8 > 8 * 5 - 476 + 0 - 88031 ) } U { y : 9477 = 34 | ! 473366 < 0 + 1 * 6 & 914 * 5 * 18033 + 591 + 28 < 1 } U { z : 398 + 6 < 63689 & ( 79106 < 34 ) | 4 @ { y : 3 * 57105 - 352 * 5 = 865263 - 0 + 6 } U { y : y * 646 * 359 + 8 - 59941 * 49437 + 294229 * 49864 < 6 } U { x : 0 = 512268 & ! 4 + 0 * 552738 + 936 = 8 } } U { x : 3 = 46 * 0 * 5 } & 9 + 64 - 69 = 324 - 6 | 7 + 72913 + 7535 = 7 - 76 + 8 & 9 * 2 + 7 * 6 + 388 + 694346 * 827298 + 6 + 673500 + 4 * 8 - 80 = 3 * 11000 - 2 + 734 - ( 40123 ) + 5882 * 44 - 6 - 4 + 244 + 9 } & 7 * 65 > ( 1 + 6 * 7099 ) & 0 + 7 - 4 * 0 - 29337 * 9464 * 5 * 2 + 5 * 5 - 8113 * 3 = 4465 * 9057 - 75127 & 8 > 1 + 465 } -549284 - x -{ z : 944562 + 920664 @ { z : 59685 * 1 * 7 + 4 > 9 * 15 * 2392 * 536585 * 3 * 15 * 853 } U { y : 4 + 707 + ( 9 - 9 - 7 ) * 6107 * 7 * 3240 - 906 > 90 * 442 + 3 & 578 > 2 } | 564 < 3 & ( 0 - 2650 @ { x : 3 * 44 - 3 * 186 > 2 } | 622884 < 5 * 5358 * 19700 + 3 ) | ! 739782 - 6 = ( 5 * 7 ) * 6 & 8 > 961 * 2 & 7 + 0 - 2 * 3 < 95889 * 7 + 70 * 76 - 8 - 45 & ( ( 55 - 0 * 23 < 794 * 558 * 1 + 4648 - 32 + 7 & 583 > 5218 * 2 - 4 * 4 + 0 & 5 < 9 * 5 & 9 - 9 * 42 - 9 - 5 * 40195 * 9 * 0 + 3 * 143675 > 2 * 5 ) ) } U { z : ( ! 31 < 2 * 771973 ) & 8 + 4 = 50 * 0 * 9 - 5600 * 9446 - 486 + 9 * 762 } -65 * ( 916 ) + 2 -6 -4 * 3 - 470083 + 4 -{ y : 314900 - 5075 * 2 + 1616 + 604197 * 57714 > 50 & ( ( 0 + 626409 * 7 ) = 4 | 3 + 8 + 182 + 9511 @ { z : ! 52 + 1 @ { x : 80757 > 44791 + 2 * 927139 - 3 - 8 } U { z : 5 < 7 & 4 * 10 - 43081 + 37647 * 9813 > 6793 } | 5 * 59 > 778657 * 1 - 6 & ( 2075 + 13342 + 5 + 3782 + 126 = 874 * 0 - 406 * 218 + 1 | ! 93131 * 5 + 1 * 9442 + 389 * 6 = 6 * 4 & ! 8 + 2385 @ { z : ! 0 - 2 = 8 & 119 < 76 + 6 + 97 + 9 * 32 * 608571 + 8 - 2 + 0 } | ( 5 > 490 * 643 * 505832 * 4 + 4 * 4 & 8 + 1 - 5 = 1 - 3 ) ) & 7 + 670388 * 7 + 88051 @ { y : 5 @ { y : 3 + 0 * 8 + 5 + 67 * 0 * 12243 - 11 - 7552 + 1 + 1 > 4 * 8212 - 4 - 7 * 7 - 5 } U { y : 555113 * 12 = 647 * 8237 & ! 2 - 48 - 520 + 74131 * 4 @ { z : 9 + 5813 + 55397 * 9 - 772 > 7 & ! 6049 * 42327 * 3490 > 808 - 3 * 3 * 0 & 2 @ { x : 1423 > 6 } U { z : ! 144 * 0 < 7 & 3 < 57 * 9 } U { z : 5 > 628 } | ! 206 - 0 > 8 } } U { z : 7 + 1 * 301 > 1 } U { x : ! 42688 * 465 @ { z : ! 57207 * 1 * 57647 * 24 + 11982 * 0 * 6 + 561656 + 74 + 3 + 8574 + 6 = 7 + 9 } } } & 309510 = 792367 * 441277 } U { y : 3 + 0 > 4 - 53418 & 2 * 4 + 8105 - 4 - 9 - 45 + 9 = 587289 } | ! 57091 + 7316 - 45914 * 0 * 6 = 3 * 3909 & 3 = 7 * 21336 + 497 ) | 0 - 75 = 4 * 55 & 2 < 7 } U { x : 0 > 7 } U { x : 3288 > ( 0 * 2 + 89655 ) } U { y : 783656 * 93 + 1 * 862 * y = 1089 - 53 - 68 } -{ y : 782368 < 5462 & 88344 + 2 - 5 + 3403 + 7 * 4 = z + 938627 - 135101 - 1 } U { x : 8 > 5 * 8521 * 3 * 2 * 5 & 5 - 87 * 0 * 1 > ( 586 - 5 ) * 1282 + 26 * 118136 * 7 * 2726 * 85 & 134 + 35 + 551003 - 8 < 2 } -3 - 0 * 43 - 4 * 4 -{ x : 3 = 2 | ! 2 * 2 + 8 + 9 - 6 + 2 = 5 } U { z : 8 * 2 + 6 - 59 * 9 * 4 + 8 - 0 > 9 & ! 7 + 625475 + 9 * 9 - 0 - 9560 @ { x : 0 = 8 | ! 4 - 1 + 46 = 5137 | 764 * 6 > 6 * 3347 - 15860 * 0 - 31 * 70 - 358615 & 213 > 7 } U { x : 5 > 1 * 83805 & ! 99685 + 3172 * 7 * 6 * 4256 + 3 * 7 - 6 - 785 + 7 * 30607 * 6 - 4899 = 457 + 619 & 483975 * 5 + 3 @ { y : 8136 - 9 * 8 @ { y : 11 - 3 * 2 + 6 * 996058 + 8 - 2 > 30428 } } & 7 < 0 } U { z : ! 3 * 14732 * 12764 - 1 - 843 + 987533 * 3 < 15781 - 0 | 5 * 4 * 5 * 50 = 8715 | ! 2 + 3 < 814584 + 91280 * 9 } U { z : 0 < 180 - 5 * 31 * 4455 * 6 & 4 < 3689 * 48186 + 169094 } U { x : ( 60361 + 4396 * 1 * 8 - 106 - 1 + 9 - 382 * 499579 * 9 * 9 * 433356 > 3 + 82545 & ( 9 - 0 - 0 * 906355 * 3 * 0 + 7 + 73938 - 4243 - 2 @ { z : ( 7 ) = 1 } U { z : 39099 * 87 - 7195 > 204 * 70034 * 0 } ) & ( 21 * 0 = 756 - 16269 + 5 ) ) | 58 - 3984 + 823 - 37463 > 4 } } U { x : 62 + 6 = 808 - 3 + 456 + 33462 * 8 * 6 + 227484 - 7 } U { z : 71032 < z + 2 * 7 & 25 + 522201 + 3 * 3 - 3 < 219483 - 399 - 84 + 1 * 9 - 42 | 4 < 4 } U { x : 3 @ { y : 87027 - 9 - 8 * 5265 < 833 + 131235 - 6471 } & 2 * 8 * 2 < 19529 | 23981 + 43121 * 7 * 200 > 75 } U { z : ! 75 > 828140 * 8 - 13354 | ! 8 > 5 } U { z : 14 - 65369 * 5 = 262499 * 109563 } -497 -7353 -{ z : 7 + 58 - 118 * 3 = 4 | 28 * 372 * 5169 - 1297 * 0 * 78 + 4 - 375663 * 68246 > 63313 * 8 & 3 * 4701 * 863 + 7 < 78500 * 389063 * 5 + 9 } -{ z : 10 * 2 > 7 - 7 | 45203 * 51537 - 54 = 0 + 37 - 474791 * 4 | 1556 * 27 * 5808 + 3518 + 1 * 0 < 59 - 572 * 2 } U { x : 60432 * 300029 > 12207 - 7398 } U { z : ( 64713 * 36517 * 155 * 96 * 7 * 6597 + 80 + 453 * 1 * 2137 ) * 981848 = 40135 - 0 - 835 * 4 - 9 + 1 } -{ y : 797939 - 4 - 292033 * 9 - 9 - 31030 * 900894 < 5877 + 5 * 1 * 46987 & 793 > 4 } U { z : ! 464741 + 826 - 0 * 7908 < 72 } -4763 -5 + 5 * 3 + 850286 * 6 * 3 * 51 - 387 + 961 -28453 - 8 -{ z : ( 215 * 3 * 473 < 2 * 4 * 8 ) & 9 = 95 & 1 + 5 + 8721 - 6 + 1 < 107767 & 466 - 4 * 8 * 13 < 0 - 15 } -2 -6 * 4781 * 8840 - 572 * 8 -466 - 9 -522197 - 727 -72637 - 37 -{ y : 94482 > 23 } U { y : 5 < 76 + 473 | ! 143 @ { x : 904455 = 42 - 0 | ( 6375 > 13 * 8 * 275885 * 3 * 1 ) & ( ! 686338 + 182635 @ { y : 9 * 8499 < 4 * 958 - 6 - 45807 * 129198 * 77964 - 9 * 4 | 91 - 5 - 9 + 9 < 0 - 6 - 25385 * 0 + 48 * 2390 * 7 * 6 + 4 * 2 - 292405 - 0 & 9 > 222299 - 658443 - 9723 - 9723 - 10 * 0 + 5 - 3 + 9 * 37741 * 1 } U { z : ( 820071 ) < 40 * 1 + 835 - y & 77 + 5 > 9 } ) } U { x : 0 * 6 + 8487 < 92148 + 5150 - 3 * 2 } } -{ x : ! 0 * 914 > 5 + 7 + 8 | 3 = 939869 } U { y : 5 < z & 4 * 5 * 8 - 8 > 15 - 95383 & 5619 + 5 * 801257 * 33050 * 175 < 97228 * 553484 - 6 * 7 * 7282 * 4 * 5560 * 828796 + 540727 * 3 - 91 + 56903 - 1 * 26 * 589669 + 4 + 1 | 1 * 5922 = 525 * 8778 + 8 } -{ x : 93561 + 3 < 1 + 2 } U { x : 8 + 9 - 5 > 4 + 929220 - 7 * 8 } U { x : 5122 * 3 * 0 > 52 * 813 } U { y : 21 * 9 = 763291 * 1631 } -{ x : 2 < 3 * 2 } -93 + 6 -{ x : 5 - 39463 + 2 * 2 * 702329 - 9 - 294519 + 3 * 0 + 379 - 55477 = 98993 * 375 } -{ y : 55061 @ { y : ! 780823 * 1 < 230 & 57706 < 106 * 8 } & 9 - 6 * 4 * 281477 * 9 - 3 - 6 > 6 * 0 * 8 - 78732 - 9 * 218 * 594 * 3 } -647 * 9 -{ z : 39 = 4 * 8 } -8210 -{ x : 8 * 6 * 4229 * 0 + 287 - 1 - 6853 = 677213 - 6 - 561 + 834239 - 2627 - 454 } U { z : 6738 * 151 > 7 } U { z : 334 + 7 - 0 + 1 + 61767 * 8017 - 6 + 1 > 3 - 84 & 6 * 32 > 33 } -{ y : 9 * 300366 * 48 < 6 * 9 - 6 - 152 } U { y : 3 * 0 * 80822 - 0 * 12 < 75 & ( 74 = 4 * 5 * 46855 * 0 * 9928 * 23 * 459 * 2 * 912 * 4 * 7 * 799456 - 0 - 0 - 693367 - 222218 * 3 * 54730 * 48 + 205449 + 7925 - 9 | 86 > 5 & 5113 * 1 + 0 - 9 * 0 * 3 * 55 < 9 | 104 + 430216 * 5737 @ { z : 8 - 2 - 14 = 814556 | 40728 < 2 | 56 = 5444 * 7 * 161 * 764131 & 0 - 8 = 66 } & ! 20821 + 6868 * 7 * 272 + y - 79904 * 1204 - 3 = 0 & x = 96700 + 612749 - 2 + 0 + 8 - 90 * 745133 * 4479 * 3 & 7 - 11 - 360 * 2 - 531179 > 8 + 614 ) } U { z : 1 - 43377 < 246566 - 1 * 44 * 5595 + 4 + 6 - 107 - 72681 | ! 130 @ { z : 631994 > 5239 | 5167 + 4 * 638512 * 520396 * 7 < 0 } U { x : 3 * 5 @ { z : ( 3 * 572109 ) * 85 + 3118 @ { z : 233 * 0 @ { z : 205 @ { y : 6 * 6 - 4 * 3 > 9 + 294 - 8 } U { y : ! 275562 = 89124 - 779 + 4 * 2 | 4 > 287 - 6 * 4 - 8957 - 716 * 6 } | 3 > 184562 | 2842 + 7 > 95 * 641936 - 90 + ( 376712 - 3 * 4 ) + 1 + 5 * z * 197503 - 1266 } } U { y : ( 9729 > 1 * x * 64646 ) } U { y : 8 * 8 - 1 * 8 * 56438 - 5 * 7 + 9048 * 629 + 4 > 5 * 674952 } U { x : 8 > 642115 + 92061 & 0 * 40776 - 4 * 60 = 6 * 6 - 8 * 511 - 0 * 865 + 87328 } & 7 + 7 * 706451 > 8 * 939467 - 0 * 300 + 2 - 7 * 5 | ( 855 * 2 * 177107 - 3 * 90 * 958619 * 226 - 4477 * 789733 ) > 39 } | ! 4 = 6 + 25415 * 1875 * 3 } & 9 + 9507 = 1 - 8279 * 347966 & 4 * 981 * 8281 * 8 < 4 * 9 + 55 } -8 * 7 -{ x : 71759 * 4 * 9 * 194804 < 0 & ! 86 - 774110 * 85 + 1 * 3 > 5173 | 3216 * 6532 - 375463 = 2705 } -{ y : 1 < 8 | 32879 + 1 @ { z : 4 < 8 * 959 - 3 * 3030 * 0 + 382 } U { y : 5513 - 6 - 17 = 5 * 271 - 416628 + 12 + 1 | 4894 * 4 * 4364 @ { y : 2 + 71847 - 6276 * 2749 - 56 = ( 1 ) & 9220 * 2 * 38672 < 0 } | ( 5 @ { x : 18 * 7238 > 878363 - 7 | ! 917074 + 3 * 5 @ { y : 6 + 46 > 4 * 6 * 4 - 926 - 9 * 0 * 37023 - 2 | ( 39577 * 231 * 7401 - 3 * 21 * 13049 @ { z : 9482 + 55744 - 5 = 6 - 165 + 6 } & ! 13 > 3622 | 395409 > 7 + 3197 & ! 0 + 826 + 4 * 61434 - 3633 + 63531 + 0 * 8 * 3 + 4681 - 36760 * 1 @ { z : 7 = 846 - 68 + 9 * 11761 * 9 } U { x : 17608 > 5 - 451 - 7 } U { z : ! 6 - 95 + 32 + 5015 < 7 * 7 | 50 * 8987 = 4 - 8764 } U { x : 74925 - 123 * 5 > 0 } ) } U { z : 0 - 214 > 9 + 4 } & 42 < 81 & 4 * 5 * 2 < 2 * 7 * 6 & 72999 * 3 - 2 * 3923 < 0 - 4 - 1 + 3 } U { y : 1575 + 4 + 9 < 0 & 75 + 999 > 2 & ! 8 * 302 < 5 | 8001 - 8 > 1032 * 4660 } & 24000 - 6490 * 6040 * 9 = 2 * 5 + 755738 * 5 * 3 * 6 + 0 * 23406 & ( ! 850 > 839 ) & 71 - 2541 > 8969 * 91 * 0 + 5 * 84 * 1 - 2 & 65255 - 196705 + 59847 * 797701 < 8 - 4 | ! 6 * 4 < 80413 * 4425 * 869329 * 56902 * 6 - 3 ) & 3 + 8 * 8 * 81806 + 33 * 149399 - 3 - 4 * 0 - 9 * 2 > 1 * 312 | 2 * 43795 * 9 @ { z : ! 3 > 4 } } & 47 + 6 > z * 747037 & ( 89 * 95 * 9956 + 5 * 398140 - 8 - 21503 * 8 > 2 + 8 + 62165 * 4 + 6 + 8 - 3 & 481714 + 40503 * 7 - 233386 < 8 ) | 683194 + 4 * 1 * 9765 + 9799 - 53 + 10 * 6 < x + 6 + 8 & ( 1 + 0 @ { y : 1 @ { x : 97 - 1 * 881 < 4 * 1 * 1 & 0 - 5 > 3289 * 9 | 5 + 3 + 6 * 2636 = 51278 * 2559 } U { y : 37 * 324440 - 2 * 936 - 8 + 16766 @ { z : 3 * x + 19 - 16 > 4 - 1909 * 992 * 53 + 53531 - 659 | 2 @ { y : 35651 * 725 < 4 } | 425 + 5 * 45050 + 7 * 4 + 8 + 58455 * 7 * 170 - 80 + 3 < 1880 * 63 * 6 & 7835 < 0 - 9 | ! 64834 * 8 * 2 * 90659 * 9 * 6 @ { z : 2 * 35 - 1 * 6 - 8 = 3 * 3 - 851442 & 20187 * 2088 * 6 + 2 + 9 * ( 8 * 9 - 9 + 11 * 2 * 4 - 5 * 944 + 41739 * 1 * 10469 * 807 * 0 * 0 ) * 734 * 7920 < 3 * 8 + 62 * 5 & 84277 + 3 * 3 - 7 * 9 = 0 - 9594 | ! 57791 + 51 = 2 } U { z : 83 + 8 - 7 < 790214 - 59 - 2 - 1502 } U { z : 239482 * 9 * 680 = 329642 * 53 - 2 - 969 * 1 + 328 } } | 4 + 8 * 8 > 46 + 12691 } U { z : 7 < 1 + 7305 * 7 * 9852 - 8 - 33 + 574623 * 9 } U { x : ! 3 + 89 @ { z : 266 < 35628 + 345 * 3 * 5 * 4 } & 3146 * 3877 - 7 * 4 = 7 } | 61 - 73 - 2 * 9868 * 16497 * 9 > 78 + 0 - 92645 + 0 } ) } -0 + 42 -275 * 901 * 3 - 10599 * 77237 + 69657 -{ y : 859 > 1 } U { z : ! 27379 * 5755 - 0 * 3179 * 9354 > 8 & ! 70083 + 4 * 1 - 3 * 9 * 4235 + 4 + 5426 - 28180 > 2 * 824 } -310070 - 70 - 9 + 2 * 8148 * 4 - 13 * 11004 - 573 -778 -8966 - 312659 - 619 -1 * 4 -7 +let int y be 4 + 0 * 3 - 310 * 5 . + let set x be { z : ! 0 > 53 * 4 & 6 - 9 - 7 * 2 - 1 * 0 - 3 * 2 * 62353 + z - 12122 * 8 * 1 + 3 + 2388 + 7 * 876171 = 273 * 5 - 0 - 979 - 1 - 0 * 6 } U { x : 96581 * 3 - 4 + 75231 < 98151 * 7 | 5 + 95828 * 52236 * 9781 + 7 + 8 @ { y : ( 26 > 7 + 329912 | 90 < 608277 - 2 * 7 + 3509 ) } | 9 + 7 + 3 * 81 < 355 + 9 - 1 | 0 - 7 * 68 < 1 } U { z : 55 - 464 + 4 + 641 * 2545 + 5 * 974513 * 8302 = 50 - 46 - 6 | ( ( 267 + 3 - 41187 * 318055 + 9811 @ { x : 8 + 8 * 3 + 468759 - 7 - 23047 * 67 - 7812 + 930 - 519 + 8 < 3 * 44 | 4 * 6 * 2 - 0 * 8 @ { y : ( ! 26736 * 8 + 5 < 224 * 57 ) | 22598 < 1 & 6 - 7 * 8 @ { z : 3406 = 0 + 135117 - 6 } U { y : 286476 < 4 } U { y : 353 * 9 = 1 - 5 * 3 - 1 * 67942 * 9576 } & 7 + 9 * 838055 @ { y : 8 * 1 * 254 * 13399 - 1 * 3147 - 9 * 31 = 3 + 742513 * 2 * 4 * 7 } U { x : ! 8165 + 1 * 410 + 7 * 374812 * 43216 * 2 > 88088 - 64465 * 1702 * 4236 - 3331 * 9 * 35 - 5 | 2 < 3589 * 9 - 922245 - 0 - ( 38867 * 59 ) & ( 4 + 3629 - 55589 * 3 * 70914 + 712 > 4727 ) } | 8 * 0 * 9611 * 61178 - 9397 > ( 491 ) - 7710 * 75 * 606224 * 5 * 429280 & 29 * 293867 - 2 * 8 * 7 * 5 * 8 > 5 } U { y : 45 - 1 * 27 > 690 - 5 & ! 4 * 220 * 667185 + 9 * 7 < 8 + 2 - 0 & 314 @ { x : 8733 = 639924 * 31813 + 8 + 9 * 8 * 6505 * 6 - 8 - 675 } U { z : ! 346694 > 5 & 2 @ { x : ! 20978 * 6125 > 7 & 9 * 5275 + 4512 * 524 + 8 = 1 } & 750 * 6 > 2 + 657269 + y | 3438 < 1153 * 25781 * 8 - 75401 * 4 & 7 * 8 * 6 > 12429 + 60 } U { x : 105355 * 9 < 545408 + 74 * 451420 & 964 - 42 @ { x : ! 44 * 2 > 480904 + 378720 + 1 * 5387 * 9 } U { x : 9204 * 4325 * 4 * 23276 * 2 * 3 + 9 + 10 * 7 < 3390 * 9 } U { y : 6 - 4 + 9 - x * 6 * 9 > 504 & ( 8 * 45013 * 3885 - 0 * 4 = 1 ) } | 2 = 2 - 424 & 8 < 3660 * 4 + 7 * 1 - ( 749225 * 2 - 7 - 2387 ) * 107 - 58 } } | ! 9 < 39486 - 9 * 9996 & 30 - 6 = 795038 * 7 * 454 * 76 - 581596 | 1265 + 6045 = 7 * 1 * x * 1 * 92614 } ) & 5 * 36 @ { z : 339631 * 38244 + 2 * 5 * 0 > 63 } U { z : 4336 - 363 * 751831 * 5 * 80795 = 8 * 6 | 4060 * 50 * 1 * 3 > 7 + 1 + 9 * 3 * 69497 & 5 = 7558 & 2 = 718 + 4 * 7 + 3 } ) } U { y : ! 83 - 91252 * 773811 + 74655 @ { y : 76 * 115 < 8 - 79756 - 409021 & 1 + 6077 * 3 * 9023 + 1 - 34137 + 2 * 3 * 7986 + x + 316444 * 48 * 7 < 91013 } | 4 + 4 - 9 < 4 * 7631 * 31 * 81040 * 856 } . + let set x be 6 . + let set z be 3 * 1281 * 3 + 9 . + let set x be { y : 94 * 540254 = 2 - 0 } U { x : ! 3380 + 8 - 2 * 6 @ { x : ( 0 * 307 > 982850 & 26 * 8 - 4 * 79771 < 0 + 3 - 745361 & 7629 + 71460 - 6952 = 5 + 645 * 88 * 5 & 892477 * 33998 * 586 * 13951 @ { x : 368193 * 484 = 5755 + 9 } U { x : 4 - 3 * 4 - 7 < 5 } ) & 9 < 9 * 2 } & 19225 - 9 * 5 + 441 * 19834 > 6528 + 5234 | 0 + 28944 - 3862 < 41 + 367 } U { x : 6 @ { z : ( 37243 + 8 * y - 20185 - 0 + 8 < 528 | 0 * 6 - 793171 < 131905 | 8195 * 3136 = 8 * 57871 - 6 + 1933 * 632 * 0 - 3 + 7 + 68415 - 4 & 97014 < 9335 ) | 77878 = ( 61 - 3 ) * 34409 * 15069 + 8 & 44 - 0 * 3022 + 9640 * 299 > 582794 } | ! 498486 > 6 * 82136 & 6780 * 801 > 7 - 4 - 8 } U { x : 176980 * 992 * 393139 * 35 + 52 @ { x : 3 > 75094 } } U { z : 376 * 7 = 6 + 6 & 1 * 7 + 1 > 22433 + 5 + 3 * 1 } U { x : 7 = 4 | 5483 - 1 < 1 - 9 * 8 * 3314 | 3 + 7 - 767792 > 12 & ! 2 > 3 * 3 - 7 * 0 * 983 + 905980 * 5 } . + let set z be 3807 . + let int x be { x : 166411 = 9 | 1 > 4979 | 540743 < 4886 } U { y : 615261 - 7 * 419 * 3 + 1 + 1 = 3 * 9466 * 1 & 4 * 2 * 7 + 52393 - 7 - 29919 = 1668 - 5 * 321 - 0 & 13 * 1 * 2 = 711509 * 5 * 6 * 3 - 19340 * 0 * 293 * 2 + 678 + 911230 & 3 + 8 - 88807 - 8 * 20 - 0 - 6 < 1 + 96264 - 8 * 0 } U { x : ( 2 + 317 ) @ { y : 7 < 63914 - 8 * 7377 - 53223 | 4 + 5 * 86 + 145197 = 6 - 7 } } . + let set x be 6 . + let int x be 35383 - 168535 - 10995 . + let int x be { x : y * 72 * 6892 < 1434 * 6 * 9520 - 753 + 9 * 9136 * 30861 * 0 + 275891 } . + let set x be { x : 2 * 1 < 6 } U { z : 48 < 739 * 3 + 2481 } . + let set z be { z : 700 < 533618 + 5 } U { x : 382621 * 6 - 7 - 7 * 51086 < 6 * 5 * 107271 - 89 - 2 * 1 | 7 * 35 = 86930 * 6 * 64 + 446 - 682 + 70158 | ( 8 - 872 - 760590 * 536 + 3 - 0 * 4 < 7 & ( 27575 * 737226 * 8 = 4 + 12 * 4 * 1 & 2 + 47 * 0 * 14 @ { y : 365203 = 165 - 33771 } U { x : 683 * 569 + 3 < 80730 * 43 - 593819 } U { x : ( 0 * 1 + 5 > 2 | ! 85 > 7 & 10333 * 8 + 397155 + 0 - 2 @ { z : 25 > 8099 - 231 - 3 & 7 + 3 @ { y : 732 < 7 + 3 * 8 * 4 } & 6 < 93 + 9529 - 831 + 7 } U { y : ! 4 @ { x : 0 > 1 * 2 & 0 > 6 * 1 & 975524 - 2 + 35231 * 3963 * 5040 @ { x : 3 * 2 - 3 = 82 * 4 * 3 + 41476 * 1941 - 74689 + 983129 + 623 - 4366 - 4 } U { y : 7 > 5 * 318067 - 5 - 2 | ! 83840 > 851 - 3 * 7 * 8 * 17 } U { x : 8 * 5 - 6 - 6 < 9 + 2 - 613185 + 11265 * 2 * x } & ! 9 + 9 + z * 210 * 574861 = 2 * 6 | 53 - 22479 - 1 - 193018 - 19742 < 77 * 9 | 3874 @ { x : 22294 * 9 = 4 * 5356 - 6020 + 5 * 893 } U { z : 61 < 210 - 3392 - 906 * 4 + 1 } } U { y : 96870 > 1 * 651 - 271862 } U { y : 2 + 970 * 845 - 4 < 3 + 7 } U { x : ( 8 * 11 = 684 & 65913 > 69808 * 533943 - 702 & 469 + 9 < 1 | 639 + 188450 - 8 + 2 - z = 2547 * 95 * 3 * 8 | 4321 - 368492 * 5 @ { z : ! 834 - 732 * 29653 - 83239 * 160416 < 856317 * 35317 & 9 + 0 * 2 - 5 * 8 + 1 = 820434 * 0 + 172 } & 991808 = 97 * 4588 ) | ! 350694 - 75905 - 9 @ { y : 1 - 52729 + 15 = 4798 } U { x : 173654 * 3 + 99 - 1 * 3648 * 5 * 5 @ { x : 330 + 57136 - 9 - 596 * 6 < 13 * 8 * 3 | ! 0 * 9 + 9 + 3709 + 0 * 6 < 561 | 407071 < 322 - 7 + 62 + 5 & 231256 - 7 * 3049 < 324863 } | ( 630 + 28354 < 5 - ( 41 + 59 * 9 ) ) } U { x : ( ! 4 - 2 < 1 * 68 + 9 - 1 ) & 622341 < 91774 - 9 + 20 + 2619 - 7 } } } U { y : 358127 * 6 * y - 603 + 16 * 8 - 9498 > 447384 } U { x : 71428 < 1752 * 1 * 10918 * 9 * 7 * 6 } U { x : 7 + 6 @ { y : 5 = 1 + 840118 * 8 * 909164 + 3 } U { y : 3 > 89729 } U { x : ! 59389 - 50092 * 5 < 6012 + 234852 + 2071 & 61 - 91 - 920 * 5 * 580594 * 368 < 100 } | 19479 * 913451 * 0 + ( 8443 ) * 6 + 2 * 93 > 3196 - 635 + 6 * 5 - 9 } ) | 548608 * 7866 * 13 * 133 * z * 2263 - 573 + 76 < 6443 * 2445 } U { z : ! 9 @ { y : 3 = 36 & ! 8 = 4897 | 3869 - 5 - 4 = 6 + 751 * 807 - 31 - 7 * 485 * 455 & 5 - 10121 * 6 < 9 - 3 * 7 & 8 + 548 + 9307 - 671478 = 2 * 40352 * 0 & 83 * 2951 * 8 * 2 > 188 + 7 * 56 * 3 * 4 * 5 - 133716 - 627 & 7 * 55996 + 6598 + 2194 * 9 - y - 59 + 7 * 2307 * 4 > 645552 } & 47 = 3 + 7 * 81406 * 9538 & 4 * 311 * 2413 * 954115 < 366132 - 66166 - 9 + 209525 } U { y : 182709 - 4952 < 514 } U { x : ! 2 > 5 + 7 * 89125 } U { z : 7 * 7 > 62278 * 910933 - 30781 + 6 | 1 - 9782 + 83158 @ { y : ! 35008 * 1338 * 6 * 9 + 6 - 6 < 2 * 70376 * 1 | 253 * 3 < 4 & ! 23136 - 3 + 8580 - 40 * 55 - 1 = 3 - 89504 * 0 - 2 } U { z : 62817 > 5 * 711 * 13 & ( 9 * 4 * 5 = 76 & 551179 - 1 = 0 * 79 * 66 * 37524 - 1 ) } U { z : 5 = 151047 * 1 & 8 - 752 < 86720 * 297 * 0 * 1381 * 6 - 6 - 3 & 87184 * 39818 + 5 - 36265 - 168487 * 638 * 6 - 6853 = 936 * 7 + 55761 * 1 * 2 - 30 * 7 - 338843 * 6 * 6 + ( 312 + 5 - 21 - 4 ) * 5 - 6483 * 14401 + 2 + 88464 | 4 * 3 - 55033 + 0 * 2 - 106812 * 6 + 3 * 8511 * 944 + 7772 * 6 - 9 = 5706 & 5 > 2 * 96 } } U { x : 13198 > 4 - 7 } | 6 > 922 ) & ! 7786 - 6 < 4286 + 735023 | 9997 * 58777 = 1219 + 0 - 6 * 0 ) } U { x : 0 @ { x : 3 * 7 + 230621 * 39851 + 4 + 92052 * 218 = 81944 - 97691 + 47730 | 0 @ { z : ! 23000 > 822591 - 5 & 3394 + 85203 > 7 * 2419 * 3 - 2 * 1 } U { x : 627582 @ { y : 95768 > 131612 + 9 } } U { z : ( 4 * 4908 * 6 + 829 * 4994 - 1 - 2 > 8 ) } U { x : ! 734405 * 132591 - ( 2 * 471 + 30 ) - 9 = 396 | 7 * 1 * 528376 = 1 } U { z : ! 8 * 0 * 6240 < 257 * 8 & 0 < 506417 & 40 * 59294 < 0 & ! 7 + 291 * 8 * 2 * 2 * 63 + 87892 * 3 + 1 * 412555 * 7 = 5 * 3 * 55256 & ( 8 ) > 1 & 1 > 4 | 466961 - 57660 @ { y : 8278 - 106596 + 616 < 2 - 0 + 5 * 1 * ( 5 ) - 46296 | 3 + 286632 + 839674 < 7 | 0 + 56086 > 404380 * 68 - 9 & ( 5 + 2 * 42628 = 5327 - 9 - 651 | ! 22507 = ( 675176 * 7 ) + 1 + 4 ) } | ! 1 > 250 * 7 * 64732 - 724 * 9359 - 5 * 5 } U { x : ! 78 * 8 = 6 * 4 & 0 > 51 + 8594 - 4893 | 390012 * 8480 = 0 + 1 } } } . + let int z be { x : 0 + 4 * 1 * 6545 + 68 - 2 - 0 - 2086 - 1 > 262 + 2 * 781132 * 10 + 6 * 4 & ! 4205 @ { y : ! 9586 * 0 - 323458 - 404226 < 67549 + 6 * 9 | ( 973015 * 9 * 21 - 77 > 57438 * 2865 + 0 * 898730 + 8 * 6 * 4 ) } } . + let int x be 5 * 48254 - 4 . + let set x be { z : 5 - 11729 * 97 - 0 + 87 < 740788 * 8 | 7 + 48 < 701 * 672793 & 3 * y = 936 * 34 - 10 } . + let set x be { y : 9 * 7 - 234 - 866761 - 4926 > 9 + 460802 * 2 * 464 + 240 - 213 * 3 | ! 2 < 2 + 4 * 52 * 838836 | 80 + 8 - 6 > 9 } . + let set y be 6658 + 0 - 65 + 207280 * 2 * 967 - 3 - 1 . + let set z be 10605 * y * 9302 . + let int x be { x : 3 @ { z : 64579 * 65369 - 520 + 25 < 460006 - 1 * 7 * 2 * 223292 & 344 * 93 - 14503 - 46944 - 8 - 247 + 5 * 4 + 97206 * 56481 * 2 * 651562 = 9 } U { y : 4 + 7 * 1 * ( 5 + 6 + 783828 * 0 - 3002 ) - 2 - 7 = 7 * 1 * 54083 } U { x : 69 - 136892 + 5 = 72995 * 275 * 78 * 4 * 6 * 6228 - 0 } | 1 * 0 * 8645 - 796206 * 6247 - 6 - 9816 < 6413 * 9 * 836 * ( 8 ) * 75 * 908655 - 819277 * 8 } U { x : 48 + 532 * 2873 * 8 + 9 + 10 < 9 | ( 3 > 6 * 9951 * 794418 | 7 * 448957 * 5 < 7 - 3 ) & 1 - 7320 * 7 - 2921 = 5 * 4 + 0 & 0 + 217 > 59098 * 6340 } . + let set x be { y : 2638 * 7 - 48 * 2 * 699 - 60 * 9 * 87642 @ { y : 281166 = 9 } } U { x : ! 8952 * 2 = 5574 + 9 & ( 446 * 3743 * 8 - 331 * 87 + 6 - 8 * 29 @ { z : 5061 * 71658 * 7 * 420 * 7 * 677345 > 143294 * 1 } & 5897 + 3 + 9 * 3 + 4 + 7 < 0 - 2 * 5 * 82078 - 5 - 9 ) & ! 208765 * 7923 @ { z : 6 < 166224 * 241062 + 9 | 1 - 23 - 9 > 2 * 0 & 2 * 21545 < 38 & ! 9 + 4 * 694324 - 4 - 826 - 2 > 420 - 648 - 2 * 1 } } . + let set y be { x : 851 = 6945 } U { y : 62 * 5 * 4 + 1 + 8 + 6 + 22995 < 5850 + 4 } U { x : 9 < 6 * 2 - 1 * 0 } . + let set x be { x : 73 + 4 * 8 @ { y : 47 + 95497 + 208 = 16067 + 7 + 3 - 2 | 67 - 96 > 12482 * 38 * 9 * 4 * 5 & 450 * 8 > 2 * 750848 } U { z : 20308 > 8 * 1 + 6943 * 4082 & ! 95 < 2 - 968553 - 8 * 4377 | 4 * 89660 + 1 * 4226 = 1 | 5 * 7 @ { y : ( 4 - 9 > 8 - 8 * 3 - 8 + 2753 * 7 * 4105 * 7 - 847350 | 7489 + 0 - 175807 * 9 < 807 + ( 275 ) ) & 8 > 6 * 2 & 0 = z } U { x : 5 = 98 } U { x : 5 < 500 & 83308 @ { z : 79 * 3 - 2 > 46 | 3 > 5 * 9 * 3 * 2 & 54 - 4909 < 5195 & 550273 - 9 * 5012 * 9 = 9152 + 256 } } U { y : 755 + 8 < 4 * 6 } U { x : 6 + 470 @ { x : ! 2012 * 3718 < 0 | 5 + ( 62 + 1 + 4 * 8 ) - 80 * 577396 = 50 + 42746 + 6 | 5433 = 4554 & 0 > 9936 * 2 } U { z : 93 - 954 * 9 + 22 > 8 } U { x : 4 > 4 * 9 & 773269 * 5 @ { z : 4 - 49553 = 4 } & ! 5 * 63 - 264227 - 2 < 1 + 3 + 5 - 9 & ! 3 * 682339 + 592029 * 6 + 6 * 7 > 3385 * 91 - 230 * 2 } U { x : 6791 = 5 * 799406 * 9 } & 2 < 5488 & 7 > 65953 & 5 * 7 < 68 & ! 67 = 4 * 30 - 6046 * 1 + 5 * 9 - 0 * 783 * 237 | 6 + 464423 + 463 - ( 1877 * 8 * 4 + 6 - 1 * 7 * 8015 ) * 3650 = 9 + 39 * 48 * 38180 & 7 * 1 < 3 + 9 & 117 * 101 + 3 > 1 * 6168 * x & 3 + 563 = 7 - 9 * 8 - 894300 - 8 } | 57101 * 788301 - 28 + 0 - 96231 + 9 = 258 * 7 & 594499 > 81 + 0 - 1 + 5 * 79911 * 49 } } U { y : 600855 - 4 < 456 * 3 * 0 * 1350 } U { y : 7 + 0 = 8343 * 4785 + 7 & 607617 + 7 * 6 * 5 - 29 < 7 - 7 * 4 + 4 * 89 - 3997 * 9149 * 10 * 1 - 3 + 272 * 720 * 0 - 4 * 53 + 59 * 92 * 71844 - 101028 + 300361 + 97237 | 23103 = 86373 * 3 } U { y : 194045 = 892 } U { y : 2 < 0 & 3044 * 4 * 0 - 6 * 1 * 93 < ( 80 ) + 8 * 5 * 2858 * 8 * 82 } U { z : 0 - 9 * 5 = 1591 * 4 + 3 * 8 } . + let int x be { z : ! 4 @ { z : ! 2 * 5293 + 479 - 6339 - 3462 * 806 > 9 - 3 + 3 + 951253 - 2 * 0 * 17 * 2 * 8 } U { x : ! 29 + 77435 * 3 = 28083 - 3684 + 93751 + 5 - y } U { z : 0 > 4 * 6 } & 487619 * 56 * 67 < 550 * 8 & 6 - 4 < 41 & 89732 * 2 + 6 + 1 @ { y : ! 7720 - 5278 < 0 * 2 & ! 8933 * 780989 = 5 * 8317 + 91 + 38 * 0 * 6 & 1 * 4 - z + 9 * 5 * ( 6 - 7 ) * 429 - 3814 - 71394 * 9 + 8 - 2 @ { x : ! 8 = 266277 - 26 + 3715 * 959 - 2 & 4 * 4 - 5 @ { z : 2782 < 3 * 3 * 176519 + 6672 & ( 9 + 3 * 9 * 92 + 896 * 509080 ) @ { y : 0 < 302617 + 224008 + 438764 + 1 - 2 + 13290 * 67 | 3 * 1 - 6 = 5601 - 676416 * 42269 & 4 + 1 - 341 < 415 + 8 * 49294 + 5 * 7 + 8 & ( 62824 @ { x : 23 * 9 * 752 = 6260 } & 5 = 0 * 8 & 410877 * 484 + 297531 * 3 - 6829 * 36 * 209937 * 56378 * 943 @ { x : 903 * 8 * 67 + 545247 * 77 = 68 * 20 | ( 4 - 824 * 75 < 5 * 9 * 0 ) | 37438 + 546773 * 1 * 6 = 4 * 7 & ( 304 @ { z : 7 + 686 - 223079 * 0 > 1 * 2 - 666 } U { y : 4796 < 568296 + 0 | 32671 < 388350 } U { z : ! 735 + 86694 @ { y : 44 < 475 & ( 10 < 633104 + ( 9 ) + 3 * 9 - 99 & 4976 + 8298 @ { x : 5 = 0 * 4 - 4 * 21 * 699196 } | ( 5 * 1 * 844 * 0 - 4 * 1 = 45 * 1 | 0 > 7 ) ) & ! 410 - 4 = 0 - 7 * 6 - 2 + 603554 + 6 + 6 & 261 = 7 | 13 * 767664 - 166 * 3 - 8013 > 6925 - 1 & 9 = 7 | 22776 * 65 > ( 38 ) - 5 + 7 & 30765 - 4639 > 89 * 66 * 4 & 4 - 83032 > 462 * 4457 - 243 | 9 * 7507 * 8 > 6 + 8 | 4 - 0 - 1710 - 358611 * 802 + 8 * 515 * 8 - 5 * 1 < 36 } U { z : ! y * 312694 < 419 & 0 - 8 > 9 | 13548 + 7 = 7 } } U { y : 9 - 800 + 85317 - 8 * 1 = 3965 & 9648 + 7 - 7694 * 2 * 5 @ { z : 4 * 635 - 4 < 4 + 9606 * 65628 } U { x : ( 5 - 233918 < 58488 - 92367 * 91015 - 7112 * 7 * 99882 * 58 - 508 ) & ! 14680 - 224 @ { y : 2 * 5 > 3 + 881 } U { z : 14442 * 0 * 515 > 8 + 4 & 66372 = 7 } U { x : ( 1 @ { z : 3245 - 863984 = 6 * 15956 - 5 * 81021 * 1 + 2830 & 598 * 7 * 9 @ { z : 7413 * 21 > 3 * 7 } & 8 @ { y : ! 132167 = 91 } U { x : 3 + 5 * 8 = 6 - 8 - 15783 } } & 934 + 8 * 884 * 333046 + 216141 * 967 = 99965 * 7 ) | 5 - 4 + 7 = 7 * 1 - 6 & ! 8 + 3 > 6 + 7 * 3 + 9 - 3 * 1 - 9 - 497458 & 8 * 0 * 921 > 0 * 18425 + 8 } & 7785 = 9 - 10192 | 5 - 1 - 953 * 12 = 234 * 0 * 2 - 3 * 8928 & 33 + 2 * 99280 = 30 * 950 * 4 | ! 6786 + 5 * 727 * 57747 + 263815 + 39 * 8 < 4390 * 16 - 0 * 20 } U { y : ! 95604 + 69813 * 77 + 3944 * 6 + 750906 * 680672 * 3 < 3 - 9930 * 9 * 3 - 5894 | ( 4 * 2 - 4050 - 83582 * 9 > 85 ) } U { z : ( 0 * 1 ) + 1 < 87 * 4 | 62420 + ( 8 * 4 ) = 8 | 15379 = 335939 & 1 * 0 * 456521 = 47586 * 56 * 5053 * 6 + 9 - 4 * 512443 * 1 + 98 * 5 * 8 } U { z : 5 * 12 * 646626 * 115999 > 296129 * 30 - 867 * 5 * 2 * 1 + 7 - 9 } | 9 * 43535 * 3 > 8 * 8777 * 90720 & 884990 - 3 * 389104 + 281992 * 599 + 4 @ { z : 1 + 78518 > 87 } U { z : 39193 * 6 > 5 | ( 2980 * 455170 * 9 = 5 + 197 - 713743 * 58 + 721046 ) & 6 - 0 + 57075 * 4220 - 2 * 6 = 7 } } U { y : 897 * 2740 > 1 * 3043 } | 7 + 18 < 26084 - 5 * 4 + 8 * 703 + 8 | 3394 * 75 * 1400 > 362258 + 1 + 2 | 11831 > 252 & 3 > 8 * 706328 ) | ! 465964 < 4 - 0 - 8342 * 540515 - 1 } U { z : 842669 + 283694 > 9 | 87 * 4 * 83004 > 98 - 4 * 54529 - 3 * 4 - 252 } U { x : 31 * 8 < 0 } U { y : 6 * 4 * 128 < 809 | ! 570285 * 6 * 7 - 5 - 28 - 0 < 221 * 4 - 5 * 3 - 6897 | ( 81 < 7 - 2 | 4646 * 25 < 1 | ( 0 < 5 - 4 ) ) } ) & 8 - 91 * 2726 - 0 + 5 * 2 * 3646 + 2 + 8225 = 920974 - 809 + 33 * 49278 & 548 @ { y : 467301 = 0 * 1 | 1 * 4 * 7 + 1 - 4 = 71030 * 0 & 4 * 3 * 361 + 5 @ { z : 67 - 902306 * 6 < 9 + 5 * 2 + 2672 + 3 + 361680 } U { z : 0 * 3 + 5 < ( 8 ) * 77 * 89 - 6 * 0 * 7595 | 6 * 9 < 1 * 787 - 1586 * 46 * 5 * 3 * 170 * 9 - 6 } & 174 * 5 < 3 - 44 } & 1 < 80073 & 8 < 62154 } & 60541 + 4921 + 28 - 1 < ( 733 + 606744 + 490914 + 9167 ) } | 5 = 6 & 868377 * 8 - ( 1 ) * 219 - 0 + 1 + 1 * 3 = 8 } U { x : ! 9 * 2 - 213 + 44045 = 0 | 7228 < 1 - 3 * 8 * 9 * 5 & 91 - 3 - 8 = 3 + 73037 * 78196 - 7 + 5 } U { y : 5 + 697636 * 3 < 98580 * 3218 & 1 @ { z : ! 2 < 9 + 84882 * 614 + 85246 | 997104 * 12 @ { x : 22738 < 5 } U { z : 8 = 8 } U { x : 8944 < 449 - 6 - 4284 & ! 880873 + 9 + 806 - 7091 > 1 | 733 * 34228 * 1 < 4 & ( 5 * 5 > 4 * 8 + 2 + ( 317 ) & 3 - 823168 - 1 < x * 5 + 7 + 3 | 264 - 2 - 8 - 1 * 7 * 75 - 4 * 67680 = 64524 * 466 ) & ( 508357 * 0 @ { y : 4 + 7 > 5 & 1 > 3 * 3 * 13 - 6 * 1500 * 77 * 983 * 99845 | 0 - 548841 - 4 > 6 * 6 & 726741 + 6787 + 0 = 486 * 8 * 8 * ( 6 ) + 9 * 2 } U { z : 3 > 21 & ! 6698 * 98310 > 8 - 988 * 9 } U { y : 720503 * 9739 + 978174 * 80 * 892256 - 591 @ { y : 2988 = 420 + 769235 + 964014 + 713510 } U { x : 37788 * 200 = 183 - 2 * 184 + 7 } U { z : ! 9093 < 1 * 0 & ( 4307 + 0 + 5 > 9 * 4 & 1 > 0 | 78565 - 511365 = 7 * 8704 * 301 * 6493 & 22876 + 544 < 195 + 6 - 8 - 957 + 5 * 876 * 9 * ( 0 + 64 ) & 1 * 0 - 24 - 2 * 8 * 126 + 0 < 9103 * 13829 | ! 18265 * 5 * 261 - 4 - 4 + 0 * 8673 @ { x : 66420 < 3 * 5 & 0 > 39047 - 3 * 8 & 3360 + 1 * 9 * 1 @ { y : 6 = 56 * 519052 * 8 * 7 * 77 * 9 - 0 & 927775 * 7818 * 60 - 728 = 872095 - 709427 * 14 * 878892 * x & ! 74 > ( 6 - 8158 ) * 2552 * 1496 + 2 & 260382 * 864508 - 46841 - 14 * 3 - 18697 * 1 = 6 } U { x : ! 0 - 4 * 632602 - 950853 * 8 - 86082 + 495432 = 9 * 8 & 3 - 63 * 43 - 3 - 12 * 9 - 1 + 2 * 567 * 6946 * 5 + 3 + 96 @ { x : 0 * 5 * 2309 > 56127 - 5 | 1 = 809963 | 702887 - 9414 < 28393 } U { z : ! 43 + 554740 * 39 < 0 * 3067 * 7 & 2 + 9 - 167 - 9 > 54054 - 8 + y * 5 * 1 } } U { y : 5 = 5824 * 7 & ( 3743 - 1 * 195986 ) * 233 * 2 > 6 + 5879 | 549 > 37178 * 7 + 596431 + 139330 * 4434 | 8 + 11477 + 67 + 0 - 294134 * 5 = 252 } | 31 + 611309 = 73 * 3 - 1 * 4446 + 4 * 938895 * 62788 * 6 & 7 @ { x : ! 46 - 9 - 47710 - 7 - 677040 - 3 > 5 | ( ! 362 < 41 - 77554 * 1 ) } } U { x : ( 9679 < ( 20787 * 7 ) - 9 * 937682 + 1 ) & ! 9 = 9 - 8474 * 8 } U { z : 578072 < 347461 * 7457 * 2 - ( ( 2749 * 80115 - 5 - 879838 - 591440 ) + 64260 ) * 737 * 6 * 70484 + 8 & 88 = 2 } ) & 66 > 9 } & 7 * 9 + 6 - 3 * 9 * 3755 + 2525 > 352031 * 4 & 809538 * 6626 - 5 > 7 * 7 & 101 * 28683 < 66 } U { y : 1946 @ { x : 113119 - 6 * 6 * 98020 - 408 < 70 } U { y : 3398 < 9 * 2 * 51605 + 51 } } U { z : ( ( 329 * 3 + 4 ) - 627 > 0 + 4 + 40617 * 946 * 8 ) & 82 = 280 + 80 * 328007 - 7 * 40319 * 6 } U { x : 56 * 9 + 3 * 5 = 2 & ! 328 > 8 * 3 & 7 = 7 + 3 } ) | 419774 @ { x : ! 491 < 95196 * 30061 - 4 * 5 } & 2 * 4 = 94129 } U { z : 2 > 7 * 9 * 102 * 0 - 9 + 0 * 6 * 2724 - 790 } U { x : 63808 @ { y : 4 * 903 = 9 - 29 * 76 * 94301 & 85471 * 8 * 7 * 5 * 4 + 6 = 41 * ( 7 - 95 ) + 8 - 9918 } } } | 2 @ { y : 4 > 14 - 1 + 3 * 642120 & 3012 * 9 * 910012 - 42750 * 97 = 503158 * 903750 } | 2 * 9 * 6 > 227320 + 8 + 9 * 8 & 9 + 7 > 1 * 3566 & 1 + 54918 @ { y : 782301 - 13403 - 33 + 2 * 8812 < ( 1 ) * 464 * 0 * 8 + 45699 * 83 + 177140 * 5821 - 2 * 434 & 9 = 5 - 2 } } U { z : 9 * 13892 = 338906 } U { y : 1 @ { x : 2 * 735 + 7 + 836 > 59387 + 621 * 0 | ! 7 @ { y : 493 * 93 > 1 } U { x : 6 - 1 < 9563 * 8 } & 385890 + 47 > 5 * 32663 | 59 + 1 * 29995 < 0 & 44 + 46003 * 5 - 84 @ { y : x - 45 * 8 - 3 * 7251 + 1 * 4 - 622 < 8 | 8206 * 32 - 34887 * 3 < 1 - 37006 * 63 * 1 * 1 & ! 65812 * 4 - 75817 - 7881 + 63 * 21028 - 553925 < 6 * 8 & ! 8263 < 9 - 90 + 80694 - 5 + 167 * 73 * 4 * 674 | 681 @ { y : ( 56 ) * 31 * 240465 * 880 = 712 & 22 < 32006 + 4 + 84966 & 11579 * 173400 * 26 - 8 * 12483 + 6 + 5 * 911379 * 343 * 14745 + 4 * 305 = 6 * 4 & ! 10257 = 739 - 9 & 111598 = 2 & 10 - 0 + 0 > 8 + 4 | 5 - 5 + 4 = 4 + 995 - 83874 & 8 < 126 * 70 | 7 + 3 * 6 < 55513 } U { y : ( ( ! 3668 > 5887 - 730043 - 1 * 2 ) ) } U { y : 16910 * 9 + 6 + 1495 > 4 * 2 + 6 - 9874 - 3 - 2 & ! 332783 - 12 * 9 * ( 0 - 72 + y - 3726 * 9 * 2 + 2 - 54 ) > 5 * 0 } & ( 5 @ { z : 7 - 3 + 6 < 4 * 2 * 4 } U { y : 21944 * 4 * 3 = 8 & 19377 * 2 = 454 - 29 + 97378 + 67 * 6 * 3 * 0 } U { x : ! 22161 * z * 14 > 3 * 5 - 9982 + 9 + 18215 } | ! 399302 @ { z : 5 - ( 4427 + 60940 - 7 * 8 * 5 - 576 - 3835 * 6 + 8 + 8 - 270969 + 8123 - 5 ) - 14 - 6 * 1 - 525 - 1 * 4 - 9 * 7 - 8 - 3 + 5 * 6340 = 2 * 2 } U { y : 3 * 7 > 8 | 6 + 2895 > 133899 + 6782 * 68 * 84 } U { x : 3 + 8 * 4 * 3 * 822 * 246766 @ { y : 689760 * 197 + 228 * 35 @ { z : ! 890888 * 3 + 1103 + ( 3 ) - 16 @ { y : 552 * 5 - y < 83307 & ( ( 64211 - 2 ) * 663357 + 8487 + 3 * 7 + 6 * 742 + 2 @ { y : 2 * 635960 + 4 = 2 * 7 - 30436 * 19 & 4 = 984 * 6 } U { z : ! 34705 * 3 + 7 * 2495 < 3 - x * 8 - 5 } U { x : ! 550680 + 1 < 3 } ) & 8 > 7 - 104706 * 854 + 44 * 76 * 4 | 17762 = 5 } U { y : 591 - 28 - 7 > 4 & 1 > 6 } } } } U { z : 790 * 182 @ { z : 9 * 7 > 330 } } U { x : 3 - 8 = 726 } & 5 + 865263 * 2 * 186 @ { x : 6 > 359 + 8 | 4 < 6 + 88149 } U { x : 98 < 41 | ! 8 + 69 * 2 > 742159 } & 827383 + 4 < 44811 - 2 + 0 | 5 + 0 * 5 + 9 < 65 * 11321 * 1 * 6 ) & 1 - 2 * 8 * 662 - 4 * 3 < 19 * 357 - 9 } U { x : 2269 * 7 = 2 * 8 & 2 * 5 * 2 - 5 * 4 + 2922 * 3 = 755461 * 51000 - 2 + 734 } U { y : 6 > 1 * 3191 * 795 + 2 - 53 - 9638 & 3 * 40 * 1 * 6 < 93795 } & 26379 = 4 + 99467 - 65 * 0 & 16 - 137403 * y * 5546 > 7 | 219 = 7 | ! 7 - 1 + 2 - 549284 < 281422 - 5 * 944562 * 9 + 6 & 694 > 355685 * 1 + 3 - 4 * 52500 + 72123 - 8 * 298 & 5 * 14 < 4 * 1 | 707 > 7 - 0 - 7 * 6107 * 7 - 3240 | 63997 > 2 * 9 + 64954 } & 2 - 6 * 65 < 6 } U { z : ! 39053 + 0 > 0 & 3 * 44 - 3 * 186 > 2 } U { y : 7 + 5 * 5358 < 987 + 46 * 2 & 6 * 679782 * 1 < 4 * 7 - 641806 - 359 + 292477 - 6646 & ( ( 3 * 68 * 7 ) * 96 - 2 = 5 * 951478 + ( 619768 - 7 * 794 * 558 + 9 * 502 ) ) } U { y : ( 434609 * 4 * 4 - 4 * 4 < 8 ) | 972553 > 9 * 42 - 9 & 7 - 6 * 7 + 143675 * 94195 * 7 - 197 - 7 - 2 - 737 < 5 * 8 * 4 + 1264 } U { z : 5600 * 9446 - 486 > 3 * 3 - 6 * 65 * ( 916 ) * 2 } U { y : 4 > 7 | 38 * 0 + 4 * 1024 + 7 = 6 * 0 & 15230 > 65314 - 2 - 35677 | 59 * 7 - 6 - ( 626409 ) + 10 < 6 * 2173 + 8 } } U { x : ! 9511 + 9722 - 52 < 28 * 60 } } U { z : 4 * 59197 * 226 - 4939 * 3 * 8 - 4 > 9 & 4674 = 8490 + 7 } . + let set x be { y : 730 > 47 & 1 - 0 < 5981 - 59 * 32 } . + let set z be 0 + 601072 + 7 - 2075 + 13342 + 5 + 3782 - 126 . + let set z be { y : 406 - 0 < 18 & ! 5799 = 650 & 0 = 54 - 94 + 7265 - 9 } U { x : ! 4 @ { x : ! 5 * 5 * 8 > 521 - 3 } U { z : 3021 * 268 * 929283 * 262 < 257108 - 2 - 0 } U { y : 5 - 6340 > 9 - 95832 * 4 * 9 + 3 - 51 + 5 * 7 } U { y : ! 863361 * 670388 = 677098 + 3 * 2413 } U { y : 6 + 0 = 3 } & ( 831 - 12243 * 11 = 5520 * z & 60 * 2 + 712089 - 671 > 767413 ) } . + let set x be 24 + 12 . + let int z be { x : ! 4 * 3466 - 0 * 4 - 9 = 57 } U { z : 2 * 472 * 9 * 4 * 6 * 8 + 55397 > ( 96215 - 699762 * 869156 - 3 * 632 ) * 2 | 1 = 6 * 3 * 650 * 8 * y } . + let int y be 9 + 6237 . + let int y be 4 - 2 * 2 + 6 - 2 . + let int y be { z : 7685 * 0 < 3 * 628 - 4 } . + let int z be { x : 6 - 8 + ( 7 * 12 * 301 - 1 + 9471 ) = 6 * 8907 + 6 + 2 | 219 + 13 * 86 * 92125 + 0 = 222648 & 5 < 3778 * 8 * 587 + 587 - 6 | 2 + 151091 * 792367 * 441277 * 9 * 46 * 133309 - 4 + 1 * 4 + 4 * 2 * 4 * 8105 * 4 * 9 + 45 - 9 + 587289 + 357 * 161 = 7316 | z @ { z : 1 = 3 * 3909 + 6 * 3 + 1 + 7013 * 5 | ( 898 - 0 > 60 + 3 * 12 + 6 & 49 * 5 @ { y : ( 2 * 3 @ { x : 1 * 6 * 9 > 660399 * 47167 + 6 & 1089 < 7 & 74587 * 5 * 0 + 782368 > 5462 } & 88344 + 2 - 5 + 3403 + 7 * 4 = z + 938627 - 135101 - 1 | ! 1 * 8 - 6582 * 138699 > 42797 - 0 | 420563 @ { y : 6 > 6 * 86808 } U { z : 2726 > 507 + 3 * 5 } ) } & 1 > 3 * 0 & 8 = 2 | 40 > 3 & 435 - 3 = 795335 & 2 - 2 * 2 - 8 < 5 | 8 - 6 * 38615 = 0 ) } & 0 * 4850 = 29 * 6 - 52 } U { x : 51469 - 5320 - 9 + 233 - 250669 > 9 } U { x : 0 = 8 | ! 4 - 1 + 46 = 5137 | 764 * 6 > 6 * 3347 - 15860 * 0 - 31 * 70 - 358615 & 213 > 7 } U { x : 5 > 1 * 83805 & ! 99685 + 3172 * 7 * 6 * 4256 + 3 * 7 - 6 - 785 + 7 * 30607 * 6 - 4899 = 457 + 619 & 483975 * 5 + 3 @ { y : 8136 - 9 * 8 @ { y : 11 - 3 * 2 + 6 * 996058 + 8 - 2 > 30428 } } & 7 < 0 } . + let set z be 85690 . + let int x be { x : ! 452354 * 406 = 7332 } U { z : 778 > 0 } U { y : 5223 < 6007 * 8715 * 3320 * 3 | ! 1584 - 91280 * 9 < 8 } . + let int y be 5735 * 68550 * 0 . + let int z be { x : 4 < 3689 * 48186 + 169094 } . + let int y be 6 . + let int x be { y : 7 + 1 - 106 * 1 + 9 + 382 * 499579 * 9 * 9 * 433356 + 2 * y = 3030 * 5 * 8 & 6 = 6 } . + let set z be { x : 3 < 8 - 73938 * 4 * 416033 * 0 - 7022 * 974 } . + let int z be 9 - 7 . + let int x be { x : 2 @ { y : ! 4 * 3 < 21 - 0 | 52790 + 9415 < 862545 & 94 * 7005 > 846347 + 50745 | 2 < 8358 - 893 * 4 + 47 & 31 * 6 - 227484 + 7 = 2 * 1 * 0 - 42 + z | 984 > 5 * 782 + 1217 + 969138 & 1 @ { y : 270 * 5 = 348312 * 182716 } U { x : 3 @ { y : 87027 - 9 - 8 * 5265 < 833 + 131235 - 6471 } & 2 * 8 * 2 < 19529 | 23981 + 43121 * 7 * 200 > 75 } U { z : ! 75 > 828140 * 8 - 13354 | ! 8 > 5 } U { x : ! 65369 * 5 * 35162 > z & 1 * 24674 * 3 * 6 + 691725 < 1 & 1 @ { y : 4 * 4 * 3 = 372 & 9970 * 7 * 0 + 78 = 4 & 75663 * 68246 - 54 @ { y : 8653 * 4701 * 863 * 7 - 4 > 5 * 8 + 7 } } & 7 - ( 727 * 7 * ( 9 * 5 - 1 - 5 * 9353 - 745832 ) * 2165 ) < 6 + 385 - 2 * 0 + 37 - 474791 * 4 + 9 + 1556 - 27 * 5808 & 37 - 8404 < 9 } U { z : 8113 * 60432 > 0 * 4750 * 5 - ( 1 * 177 - 9 - 372 - 717 ) * 155 * 96 * 7 + 6597 + 80 | 324633 > ( 8 ) | 83027 + 7 * 13958 - 6 @ { z : 8 * 2 - 3 > 6 - 93 + 2 } } U { x : ! 33259 + 9 + 31030 * 900894 + 876 @ { x : 9 + 27537 + 4 + 0 > 1 - 29 | 60 * 7908 @ { y : 4763 < 13315 * 3 - 850286 * 6 * 3 * 51 + 387 & ! 61809 = 4 - 3 * 2297 * 2 * 2 } } | 5 - z - 3 + 4847 * 205232 * 6 * 6 * 36242 * 247873 * 0 * 89169 - 6767 - 8 @ { x : ( 6 * 409 * 3 + 9 - 1 - 6 * 4781 * 8840 - 572 * 8 ) - 8 > 8951 * 422197 * 8 + 3087 * 63 * 37 & 4 + 94482 - 971732 > 0 * 5 * 1732 + 2 - 36 * 5 } U { x : 13583 * 904455 < 42 - 0 } } U { x : 6375 > 13 * 8 * 275885 * 3 * 1 } & ( ! 686338 + 182635 @ { y : 9 * 8499 < 4 * 958 - 6 - 45807 * 129198 * 77964 - 9 * 4 | 91 - 5 - 9 + 9 < 0 - 6 - 25385 * 0 + 48 * 2390 * 7 * 6 + 4 * 2 - 292405 - 0 & 9 > 222299 - 658443 - 9723 - 9723 - 10 * 0 + 5 - 3 + 9 * 37741 * 1 } U { z : ( 820071 ) < 40 * 1 + 835 - y & 77 + 5 > 9 } ) } U { z : 2705 - 0 * 587 = 52415 * 9 * 30237 - 4072 + 4 - 914 + 6 } U { x : 0 * 21309 = 907 } U { y : ! 5 < z } & 4 * 5 * 8 - 8 > 15 - 95383 & 5619 + 5 * 801257 * 33050 * 175 < 97228 * 553484 - 6 * 7 * 7282 * 4 * 5560 * 828796 + 540727 * 3 - 91 + 56903 - 1 * 26 * 589669 + 4 + 1 } . + let set z be 5755 - 239 + 21 * 857577 . + let set x be 5 * 995 . + let int x be { x : 522 = 732941 } U { x : 15 > 929220 + 7 * 8 - 6 | 5122 * 3 * 0 > 52 * 813 | 0 > 4 * 9 * 0 } U { z : 3 * 7 < 5 + 6 } . + let int y be { y : 718 = 93 - 6 - ( 756643 ) + 468725 * 2 * 702329 * 6 } . + let int z be 56867 + 0 * 379 . + let int z be { z : ( 275 = 180046 - 69091 & ! 780823 * 1 = 230 | ! 706 * 97 > 698 & 5 * 9 < 6 - 9924 - 4 - 9 ) | 61 < 8866 * 0 * 8 * 78732 * 8 & 465 * 2 * 1 * 7031 + 3 * 667 * 167206 * 4 * 4 * 26 < 8 * 95605 * 7 | 9 = 91 - 455 * 82 * 4 * 661 * 513 } . + let int x be 6539 * 31 - 5 - 2 . + let int y be { z : 4 * 89 * 1 + 0 > 7 - 4 & ! 578 * 3 + 7 - 0 @ { x : ! 74849 = 1 & 1278 > 84 + 7 - 6 & 8 < 3480 * 75 + 482003 * 49317 * 1 + 9 - 4 * 1 + 1 + 5 } | 1 * 3 = 7082 * 4 - 8 * 7 * 8 } U { y : 89 < 959066 - 551703 - 3 & 3 * 459 * 2 > 477 * 7 - 799456 - 0 } U { z : 9785 * 8 > 68974 * 54730 * 48 * 205449 * 7925 + 9 } . + let int y be 6 . + let int x be 1485 + 2 - ( 4 - 7 * 9 - 0 * 3 ) + 55 - 48756 - 2 * 9 * ( 1633 + 253 * 781427 + 247602 ) * 660540 . + let set z be 5631 - 40728 . + let int y be { z : 1 - 7 * 7 * 161 - 764131 < 1 } . + let int y be 7363 . + let int z be 4 . + let int y be 28768 + 9125 * 79904 . + let int z be 3 * 85445 - 4 * 96700 - 612749 . + let set x be 1 . + let set y be 9 * 27 - 14 . + let int y be { z : 907 * 11 * 4230 * 72806 > 7 * 960886 + 4 - 9 * 8219 } U { x : 3 * 1202 = 6606 * 532 + 3 * 934 } . + let int z be 107 * 72681 . + let int x be { y : 469 + 4 * 975623 * 539209 > 6 * 29 * 1625 - 364203 & 0 > 922138 } U { z : 5 + 8 = 3 - ( 3 * 572109 ) * 85 + 3118 } U { y : 233 * 0 @ { z : 205 @ { y : 6 * 6 - 4 * 3 > 9 + 294 - 8 } U { y : ! 275562 = 89124 - 779 + 4 * 2 | 4 > 287 - 6 * 4 - 8957 - 716 * 6 } | 3 > 184562 | 2842 + 7 > 95 * 641936 - 90 + ( 376712 - 3 * 4 ) + 1 + 5 * z * 197503 - 1266 } | 642810 + 54 * 7 * 574 < 0 * 725422 & 9046 > 639 * 4 * 7 * 936105 * 5 * 2 * 5 * 5 * 674952 } U { x : 8 > 642115 + 92061 & 0 * 40776 - 4 * 60 = 6 * 6 - 8 * 511 - 0 * 865 + 87328 } . + let int y be { x : 84515 * 8 * 939467 - 0 * 300 > 2 & 485658 - 4 - 855 - 6 @ { y : 90 * 958619 = 2 * 7 | 807727 > 272 * 1 * 2013 | 4793 * 0 - 4601 + 88 > 6 + 50 * 8279 * 347966 & 4 * 981 * 8281 * 8 < 4 * 9 + 55 | 7 < 76 | 3 - 69220 - 5 + 194804 - 0 - 79741 @ { z : ! 0 * 46 + 7 * 1052 - 6 + 3 - 375463 + 7 > 1559 } } } U { y : 5 > 8 & 8 - 2 + 2012 = 3242 * 959 * 46300 + 4 * 0 * 2 + 2 * 276035 + 5239 } . + let int x be 3 * 5 . + let set y be { y : 7455 * 12 > 8644 * 64 - 3 + 3 } U { z : 48899 + 47184 + 929862 = 6 } U { z : x + 19 - ( 1 + 520 ) @ { z : 74 * y * 3 = 8 | 85 * 5 + 0 * 4 @ { y : ( 7 ) * 0 + 3 - 3 = 8 } U { y : 7 - 95396 - 14 * 5740 @ { z : 4064 * 6 > 7434 } U { y : 6 < 9 - 215 - 3 + 1695 - 7672 + 18640 * 13 * 9 + 170626 | ! 110 - 99 * 12 < 805744 + 5 | ( 8 - 5 + 4 + 43 - 3622 < 3 * 395409 * 1 * 892551 ) } & 9 = 0 + 826 + 4 * 61434 | 2 - 3378 * 939 * 81734 > 27286 * 13493 & 7 + 7 = 846 - 68 + 9 * 11761 * 9 } | 8 - 7 - 18 = 5 - 451 & ! 43887 = 960 } U { x : ! 47947 - z * 638094 * 4 > 1580 * 937 + 4 - 8764 | 62 * 69254 - 4 * 3 * 56 * 1 - 4 - 5 < 5 * 0 + 95932 } U { x : ! 8 * 1 > 1 - 341 * 65 * 2 + 3 } U { y : 435472 @ { z : ! 3923 > 0 - 4 - 1 + 3 & ! 576 - 1575 * 5879 < 2 - 2 & 46 + 2 * 8 + ( 8 * 302 ) - 5 > 334815 + 1 + 8 & 3 < 6660 * 8 | 0 * 2 + 0 = 9050 - 928246 | 6 - 7 * 1 @ { z : 23406 - 2 = 850 * 7 * 47 } U { x : ( 4869 > 91 * 0 * 1 + 615 * 8 + 0 * 4 + 2 & ( 8 * 7 * 20559 * 7979 * 4928 @ { y : ! 6 * 4 < 80413 * 4425 * 869329 * 56902 * 6 - 3 | 5 + 78 * 8 * 81806 * 2 < 874 } U { y : 77 + 4 - 4 * 2 + 12 @ { x : ! 2 + 4957 > 56526 * 3 } U { y : 3 + 3 - 773 - 347037 * 1479 > 95 } U { y : 1 > 8 + 9 * 8 - 21503 * 8 | 8 * 687598 - 46 > 4 & 2658 + 5 < 5 - 3 * 0 + 1 - 464 + 8 - 13326 - 9 * 52147 } | ! 6 - 38 + 9694 = 3 * 4070 * 6 } U { z : ! 4 = 7 | 59 = ( 61 ) * 5 } ) ) | ! 400856 = 9 * 8 * 1 * 5374 * 1 - 1 } & 0 - 5 > 3289 * 9 } U { z : 100671 > 51278 + 2559 - 66 * 363367 * 324440 } U { z : 6 + 2 * 8656 + 65 - 816268 - x < 934 * 3 * 6 & 1909 * 992 * 53 @ { x : 659 < 1 } & ! 5 + 8325 * 59113 - 8 > 2614 - 2 * 425 + 5 * 45050 + 7 * 4 } U { z : ( 0 > 0 + 80 + 3 & 7 * 986 + 709 - 7835 * 0 = 8 | 52 * 7 + 8 + 2 * 90659 + 5 * 6 + 807876 + 8 * 3 < 0 - 7 + 15 * 9 + 7 + 9 * 851442 - 72019 ) & 2 < 8 - 10122 | ! 703289 - 999 > 909701 | 4966 @ { z : 9 > 7 - 301550 - 576 - 966816 * 0 + 0 } | ! 55676 * 9596 < 32892 | ! 3 < 84277 * 3 * 3 } } } . + let int y be { x : 686 - 0 - 4 > 979 * 6 - 8 * 2 * 110 + 3 - 3 + 8 } U { x : ( ( 2 * 1502 * 209 + 239482 * 9 + 6 + 8 * 472 < 7 + 2 & ! 9711 - 328 - 7 < 4 & 134537 = 2 * 640609 + 7 + 784571 * 67 * 3 * 3 * 8 + 33 - 574623 * 9 | 390 + 89 * 0 @ { x : 35628 * 345 * 3 * 5 + 6 + 1 * 249 * 88 = 7886 + 5 * 564 * 70795 & 73 - 2 * 9868 * 16497 * 9 + 4 @ { z : 1 * 70 @ { y : 7 - 0 = 275 - 9190 } U { z : 9 * 7363 + 9 - 4 + 58 < 0 * 11 * 6 } U { x : 5 = 9 * 5755 } U { x : 1950 = 4450 } U { y : 70083 < 65163 + 23039 - 4 + 945285 + 550 } U { y : 3 < 824 + 191 * 1 * 7 * 70 * 6 * 981454 * 8 - 21 & 8 * 0 * 571 < ( 305 - 778 - 7 ) } } } ) | 0 @ { y : 269 * 1 * 4 * 15711 > 1831 * 1 - 4 * 9045 * 2 + 7 | 725 + 0 > 22 & 4143 + 44980 * 8 = 35570 } U { z : 7169 - 90075 = 4 - 20534 * 6 - 5 } U { x : 6 @ { z : 6 = 708 * 44746 - 91 } } ) & y = 301 * 5405 - 12 & ! 6 < 151 & 1536 = 5 * 1 - 38 } . + let set y be 57928 . + let set x be { y : ! 314979 + 71 < 76435 * 0 * 165286 } U { y : 8 < 2 & 5 - 5 + 5543 - 552 - 11292 - 6 + 2 - 9 + 1976 > 4397 * 76052 } U { z : 4 * 8184 < 74 } U { y : 37736 @ { z : 4 * 9 > 4 - 9 } & ! 3 - 53 < 7 * z - 237 & 9 * 8 > 0 & 1403 * 524 + 42 - 6 < 4 * 8141 } U { x : 0 = 4 * 43 * 2 & ! 97754 + 735 > 69 - 8 & 4 < 8247 | 4 * 7587 > 9433 * 3 } U { z : 218 + 7 - 8986 + 164 * 173 * 5811 @ { z : 131038 = 7 * 774030 & ! 8864 = 41866 - 30 * 7 + 25184 } } U { z : ! 17 * 961213 * 9 = 35 * 1 - 3 * 50852 + 2 } . + let set z be { z : 0 * 81 * 30516 * 209 > 303 & 7 * y < 3 | 547 + 4152 + 239 - 6 + 34 * 8138 + 93 * 39429 * x + 7 < 5 * 2247 * 1469 } U { x : 5 < 5 * 2 - 876 & 0 * 5460 - 4685 - 3 - 0 + 8 - 21779 > 1 - 4 - 569451 + 1 | 1 - 1734 < 6 + 294475 + 9 - 396 * 78 - 4 + 2 - 2 - 415 } . + let set y be 569 * 29 * 405668 * 5 . + let int y be { x : 750341 @ { x : ( ! 7 + 8 = 5978 | ! 1 < 0 - 503 ) | 6 * 16 * 1 * 54 < 265 + 1 * 796692 * 18 * 0 } | 1 + 8 < 371 * 2 * 16567 | 1 - 843 * 5 * 11920 * 2 @ { z : 542206 * 713330 - 382 + 3 - 4773 * 940589 @ { x : 800311 * 212 = 44572 * 2898 } U { y : 340142 = 836978 + 105 * 99 } U { z : 895156 * 6096 = 6 * 4 * 69525 } U { y : ! 4 - 55458 * 886205 * 274 + 1 < 3 * 92 & ! 21387 < 5 * 1 * ( 98 ) + 4 } | 3 + 148906 = 8051 & ( 5 * 9 < 3 & 5 > 14 & 18707 > 9 & 0 + 808593 - 55 * 83 * 4017 * 1 * 6 * 72 * 129547 + 9085 - 0 * 2 @ { z : 24 + 54316 - 3 + 45 + 8 + 6325 > 12270 - 7 + 92 } | 7 * 1 < 5 | ! 4 + 68 - 737484 - 8265 * 17604 = 206805 + 9 * 849431 - 32 * 6064 * 5 - 3 & 5 > 9 * 4 * 109 * 249787 + 857321 ) & ! 4138 - 57 * 2 + 451282 + 91014 @ { x : ! 7 * 3 - 92 - 4 + 529713 = 441289 * 504 * 2 + 3 * 829694 } U { z : 3 - ( 2 * 14842 ) + 8 < 8 - 75 * 24632 * 4 } & 50 < 491 - 1 + 40 } U { z : 6037 - 822 + 50 + 1 + 27036 @ { x : 73999 + 6 * 3 * 2 + 916765 @ { y : 90256 - 2639 * 333233 - 8 - 0 = 504 * 6 - 1 & 7 < 9 + 8 - 6 - 1486 | 0 - 49434 * 5 + 6 - 94584 @ { z : ! 888255 @ { y : 454 * 3 - 4 + 4 * 48667 - 845724 * 11 * 4499 @ { z : 0 @ { y : z * 4434 - 8 * 3 * 5 + 21355 * 40 + 878 * 9583 - 65163 + 723 * 5709 * 73050 - 644 > 7 * 7 } U { x : 0 @ { y : 5 < 9 * 1 - 1285 * 2 & 785 + 9 > 7 } U { x : 67522 * 5 = 8 * 97 - 3 * 522 | 666 > 772426 | 1 + 5 + 8 * 5 - 3 @ { z : 53854 * 4 * 7418 @ { x : 16438 - 5 @ { x : 878360 - 3 * 9 - 29261 - 588001 * 9 - 27164 * 1 * 5 * 5 * 3 < 312 & 8 - 3 * 2 + 7 - 2 < 54069 + ( 992386 * 51100 ) + 4707 * 57 & ! 2 * 28783 * 2 @ { y : 45644 * 4 + 2 - 8 = 68 * 9 * 69 * 368357 | 172287 > 2 * 4 * ( 2 * 13 + 3 * 1 * 9 - 398 ) * 877742 * 2252 } } } | ! 9 * 8 * 680640 < 219847 + 1 + 5 & ! 2 - 8 - 28584 * 6 > 44 & 3 = 7943 + 62991 & 708 < 280 * 8 * 5446 * 1042 } U { z : 5 @ { x : 711 + 872 < 2 * 922 } U { z : 8 - 6 + 0 = 2348 + 993 - 79236 * 1 } U { y : 88 = 971 - 60 & z + 65726 * 3 - 40068 @ { x : 374092 + 3 + 2 = 9801 * 40880 } U { y : 958843 - 51827 * 397 + 6696 * 5 * 5212 * 576866 < 387532 - 9 * 29 } U { x : ( 901828 * 5 + 119809 * 1 - 507 @ { y : 9 - 77 < 2 } U { z : ! 2 - 57 * 5 = 2 - 793 * 37278 } ) } & ( ! 616 * 70250 * 7 = 9 - 149 * 5 * 92010 - 3478 * 64609 * 4 - 5 ) & 781 - 21 - z - 1 + 2 + 758 - 26169 * 0 > 0 } U { z : ( ! 84616 * 6 < 826279 - 82 & 235779 = 92 & 983 > 14 + z * 7 * 8 + 6 * 3 + 96349 ) } U { z : 87313 > 418 * 48 * 331902 | ! 85 + 9 > 20 * 967838 * 75078 } | ! 7 + 9 - 56 * 6 * 8044 * 3050 + 4 - 1 + 1 * 9 - 324 + 4 < 6802 * 2 } U { x : 1 - 5 * 38248 < 94303 } } U { z : 89 - 4 * 296341 < 3 * 0 * 755 - 457380 - 453 * 1 * 852 - 3 * 8961 * 560100 - 934105 - 16 + 801450 - 7 * 532 } & 2 > 48 * 50277 & ! 7 < 6 * 4 * 4 * 663 - 60 * 9 * 5522 } U { z : 0 + 9 * 8 * ( 814656 ) + 476 + 867931 - 5 = 547 * 1465 * 3134 & 0 > 346207 } U { z : 0 = 3582 * 9 - 6 * 7476 - 836 - 6 & 17328 * 1 = 792724 } U { x : 2228 > 89 * 876 + 6065 } U { z : 664 = 5 } & 4 < 5555 | 1 * 7 * 3546 - 63 > 0 | 8 < 39 * 23948 + 1 - 77407 * 0 * 0 + 378 * 659 + 901 * ( 607 * 2 - 5040 ) | 57189 + 0 - 2 < 781716 - 642085 * 6 } U { x : ! 3 > 1 | ! 4459 - 371457 = 58649 * 9 & ! 9 + 4 + 2 + 2 * 6306 + 944226 = 769 * 32881 + 16 * 9 - 8 + 69 * 1 * 8 } } } U { z : 79041 * 0 + 55 < 33 + 4 + 58 + 321404 * 2318 - 88640 } U { x : 862805 * 422 - 316479 - 72 * 37 > 2 * 6 } U { y : 6 * 8 * 8 - 8 * 8 > 6 & ( 3 * 9 < 3 ) } } | 2 - 94 * 18 @ { y : 6 * 21 - 433 * 7 * 7 * 3 - 58 - 96725 + 114917 + 61 + 7 * 50286 + 5 > 9 + 1 - 468 + 13460 - 7 - 9 * 580 + 7905 - 2 * 33019 - 37 - 4 * 307 & 6 - 0 * 5 + 6 * 2538 * 3 * 1 + 1 - 70 + 4 - 214922 > 9 * 5 + 19 * 6 } U { y : 3 * 50 * 15041 = 8636 - 80 + 727 * 5 + 1 + 2 * 1 } & 8 - 7 * 9052 - 3 < 243 - 10 | ! 2 * 415402 - 3 * 6 * 8 > 98361 } U { z : ( 5814 = 5 * 8 * ( 8 + 5 ) * 722 - 0 * 172855 * 65611 ) } U { z : 43735 * 504 > 92 - 2 - 53111 * 4 * 84 + 9 * 97220 | 307 * 0 * 4 + 9574 + 6 - 4 * 788 + 40569 * 4 * 6 * 9 - 788606 - 1 = 5 + 6095 + 9779 + 9 - 9 * 8 } U { z : ! 1 - 6654 < 3 } } U { y : 1 * 7 @ { z : ! 11991 * 1 * 1 * 8678 * 48686 * 1 * 2 * 81 + 1 + 1 * 3 * 9 * 9096 * 6 = 6205 + 1 * 15 + 3 * 9 * 68552 | 4939 - 1 + 659 * 0 * 52 * 327119 < 750 * 5211 + 5 * 76045 | 6 * 0 * 43527 < 3 } | 4344 * 1 > 72719 + 3 + 7 & 0 - 1 - 8 * 7 = 2 & 3 * 1 < 9 & ! 556405 * 7 @ { y : 3 + 1 * 12767 < 94 + 9 & 7 - 81 - 9 * 4 * 7 + 3 @ { z : 13 - 5 * 6587 + 2 - 625 - 3 = 1 - 7 - 3 + 5 * 9164 - 923 | 38 = 8 - 3 * 8 * 43 + 864098 + 1 } U { y : x * 46297 - 75 * 2 @ { y : ! 37 - 908 - 779203 * 1 = 9 * 253 - 6 - 400 } & 5 < 4 | 755902 > 86 + 1 * 2 * 1 - 290 + 7979 } U { z : 2335 * 27954 * 473775 * 0 * 6 * 9 * 1 * 219945 * 557169 @ { y : ! 291 @ { z : ! 357337 - 3 @ { z : 15683 * 5 = 8 + 75 & 881 < 84636 & 66 * 80426 + 3 * 8350 + 617960 - 7 + 31172 + 903886 - 8 * 0 - 48 - 39 * 284 * 5 - 23 * 190 - 89 @ { z : 0 + 670 = 7 * 3 * 0 * 3 + 6 + 34 * 669 * 661 * 391 | 735 = 9 & 215210 = 785 * 2 * 952 * 3 - 9 * 5 * 38 } U { y : ! 7 * 1 * 3804 > 92 | 393640 * 0 - 91991 * 81891 - 3 * 3 - 504570 + 670020 = 4 + 54 * 96482 + 37 * 85972 * 295252 - 3744 } U { x : ! 5 - 1690 * 9 - 5458 * 4 * 3 < 892 + 7405 * 6 - 3 + 2 } U { x : 7 < 28981 * 8 } U { x : ( ( 1631 * 413125 - 7 + 90 > 5 * 34909 * 1 & 66225 > 4117 * 0 * 3 * 27 * 0 * 7 * 0 * 1 * 265046 * 623865 + 3 * 2947 * 87950 ) & 0 = 94 * 677 * 7 * 7 ) } & 6 * 6 * 83 + 72 * 6 - 0 > 1 - 0 - 96497 + 8 } U { y : ( 210 + 7 ) @ { x : ! 0 > 7 * 4070 * 0 - 1 * x - 8 } U { z : 690369 < x * 1 | 2002 * 5355 < 7 } U { z : ! 0 * 25757 + 501989 = 4 + 259942 * 6 * 57043 + 7 & ( 527477 * 7230 * 64453 * 2 + 2360 * 8183 - 7812 * y < 32 * 3 - 4497 + 5 * 1 + 9 * 3 * 3 * 7 & 1 - 1789 * 3712 + 7440 - 8062 + 3 > 5 * 151588 + 961792 * 60161 * 2 * 4 * 59 * 2 - 1 - 63330 * 712 * 6 + 26008 * 3241 ) & 7 + 81777 - 903280 = 0 * 975 + 7 + 2 * 7 - 960 * 5 } | 0 * 8 * 45628 - 5325 > 9 * 7 * 4 * 7 & ! 43 + 6 - 6 - 9 = 293 * 2657 & 226252 + 1359 * 7 > 33931 | ! 276 * 3 > 1 | 2 - 637183 * 215874 * 4 > 5 + 384003 + 4922 * 0 & ! 4 < 236818 * 616763 * 5551 } U { z : ! 922564 > 5512 | 3266 > 8 * 5 + 360 + 6 } } U { y : 2064 * 0 < 9 + 2 } U { z : 5 > 3564 * 8 * 3 + 4 - 2 } } | 352 - 9 * 3 - 518 * 2 = 9 | 1561 @ { x : 21 < 3 | 2 * 6 * 4 * 2 * 9 + 2 * 2 + 6 + 5 * 46 * 7 * 57192 * 445607 + 1992 * 3144 * 555 * 632739 + 9 - 6656 * 6 * 5 @ { y : ! 48 - 284321 * 1 = 75 * 52974 * 407 & 91 * 6 * 7 + 3 * 2683 = 56984 } U { z : ! 63345 * 4 - 764549 > 4 * 4 * 49 + 4 - 7 } } U { y : 5 * 41 > 4 * 6 * 3 * 7 - 52 | ( ! 226396 > 6 | 3358 + 7 * 53698 < 84529 ) } } U { x : 9 = 64 + 9 + 55664 * 853017 } | 8 > 9 + 3 + 0 * 884 * 6 * 728556 | 2 * 7 * ( 7583 ) * 362 > 8 * 845 + 3 + 636631 * 7 * 907 * 90 * 571 * 73 & 838030 < 2 & ( 4 - 3 < 72 + z + 92 * 78708 * 71280 ) } } U { z : 9 * 1 * 71 * 3 = 589 } U { z : 3 - 47 + 7 < 2 - 786 | 734337 + 5 * 633398 > 95182 * 93 * 4 } U { x : 627 * 1 * 6 > 3 } U { z : ! 0 * 6 = 19 * 5 & 7 * 10216 - 87787 < 2 * 63 - 8 } } . + let int y be { z : ( ( 43 + 8 + 6 < 7 ) ) } . + let int z be { x : 791 > 324822 * 9 + 5 } U { z : ! 465 @ { z : 2 + 0 + 1 + 8 * 62730 @ { z : ! 0 * 42021 + 6 * 6 = 63899 * 0 + 8642 + 6955 * 213406 - 7 - 1 | 6 @ { x : 5 = 9 + 0 | ! 39 * 5 < 661 | 929 * 2 * 6 * 4991 - 1 > 1 + 7 * 15038 } U { x : ! 8 * 64120 + 70185 - 55159 + 3 < 7 & 4 + 9 * 4 + 7 = ( 0 * 45 - 9 ) - 0 - 8 * 6 } & ! 1 + 603838 - 368 + 6168 * 8 * 30 * 5903 * 2831 > 5 + 982394 * 3639 * 8 } U { x : 0 - 3 > 8171 * 684952 & 6 < 7 + 82 + 824 * 680 - 8 - 9 & 8 = 3 + 7719 & 0 + 1 - 924 < 5 } } | 3 * 818 < 9 } U { y : 0 - 2 > 3131 * 520221 * 7 - 10 * 5 * 128126 | 90 * 17592 + 722 * 0 - 319449 > 101 } U { y : 2 * 9 - 6 = 4 + 4 - 1 + 928 * 990700 + 6 * 9 * 8 * 6 + 0 * 4 - 6 * 8 } . + let set y be 3 - 8 - 4 . + let set y be 3175 + 7 + y + 1 + 4 . + let int y be 8 - 1 * 55770 * 3 . + let int y be { y : 375137 + 7 * 3 - 69 = 3970 } U { z : 6 > 86 | 8 = 8 * 3 } . + let set z be 873162 * 46700 + 6 . + let set z be { y : 67 - 715163 + 444417 * 475 * x = 21 * 381 } U { y : 8 * 8 = 8 } . + let int y be { x : 0 - 10853 - 8 = 6 & 900841 = 155943 + 1097 - 4 * 7 } . + let int y be { z : 3 - 168 + 4 * 302562 + 2 * 8 + 168 - 5 - 5894 = 9 & y * 0 * 2 * 1 < 3723 * 9 | 8 * ( 4 ) - 1 - 360 < 50 + 383177 & 963098 * 6371 < 7 * 193018 * 6104 + 4372 * 1 * ( 5210 ) * 7 * 88441 } U { z : 2958 + 30 > 69845 * 770416 * 57228 & 2 * 93 - 57628 + 89 + 6 * 7077 < 788877 | 186 * 8 - 1710 - 8 * 51 * 74034 * 2 - 6 < 2 * ( 5 * 2 * 0 + 954 ) & 9 * 8 * 1 + 557894 - 7 * 330 + 8 * 4 - 88732 * 857 * 360 + 5 * 0 < 4 + 5 + 93 * 3 * 8 * 0 - 0 - 6275 & ( 42115 ) - 784243 * 7 - 9 * 1552 < 6 - 9 * 2 * 2 | 50454 * 895 + 7 > 44 } . + let int x be 4 . + let set x be 4608 . + let set z be 387748 * 62154 . + let set y be 4 . + let set y be { x : 7 > 1168 * 1 | 1 + 119589 + 2150 * 866 < 1 + 9910 + 2100 & 256 - 5441 + 46 * 9 + 6 < 302 - 3 } . + let int z be { x : 3 * 60 * 4915 - 660 - 16579 @ { x : 691 * 4 = 5 - 4 + 75 + 85 * 2 } U { x : 58930 * 917 < 741 } U { x : 6 @ { x : 0 - 39352 * 981000 + 1 > 5116 } } U { x : x > 18 * 210 * 3 } U { x : ! 5 - 22 * 6 - 31 * 4 * 71394 * 825 = 5 * 76339 + 4 * 1 * 337852 + 6506 * 71670 & ! 7 + 1 = 2 + 9 * 4 + 21104 * 9 * 5 + 5580 * 90319 * 1 - 3 - 43070 + 112298 & ( 284445 @ { x : ! 99862 * 63107 < 4 * 0 - 6 & 98 - 74698 - 6929 = 9871 | 1 > 328350 * 4 - 29 * 4 * 17269 - 518 + 950 * 353 | 3780 * 29129 = 2712 & 4 @ { z : 6 * 0 < 8 } & 647211 @ { x : 31 > 68 * 654 & 605913 - 3 @ { x : 2 + 1 < 8 * 827000 + 3 - 89 - 749 * z * 55758 + 4648 * 321642 & 4 + 62 @ { y : ( ! 1437 > 2 * 43 ) } U { x : 95 < 8 * 9 * y & 905160 * 5835 > 5783 * 2 & ! 6 + 14956 + 736146 = 0 + 5 & 1 - 2 < 3 - 967 * 99 - 131 + 6 * 5 * 4 & 5 * 185507 < 56 * 73672 & 7 * 0 * 1 + 3 - 14 * 62254 - 7 > 818 | ! 3 * 2 * 81 * 46 - 0 + 9 + 61673 > 4235 * 110 - 68615 * 0 * 0 } U { y : 74 > 4210 | 15 - 424 * 6 * 2117 * 665 * 4 * 6213 + 84027 * 5 - 2 - 3 * 999175 + 5 * 7166 * 68 = 2 * 0 } U { y : 4 * 796171 * 2248 * 7 < 1 + 9 } } } U { y : ( ! 501869 * 5788 + 8 - 9 @ { z : 114225 * 6 + 529050 < 93242 - 6 + 57 + 13438 - 7 * 446 * 640 | ! 628047 > 7 | 9570 + 708807 * 26500 * 7 + 9 * 191 + 902406 + 18277 - 6 * 6 > 365 * 6 | 2 < 31249 * 611779 * 549 * 8 * 2 - 20 - 0 * 8 * 80 + 1690 * 158 * 0 * 4 * 81064 & 2 * 222589 - 6 - 7 * 971 + 82115 > 756857 } U { z : 0 * 3 = 501 * 14699 * 647 } ) & 1 > 9 } U { z : z @ { y : 1716 * 3 * 8517 * 7 - 22566 = 90853 + 9 & 32563 * 688 + 8 + 17 + 9 * 65734 * 1381 > 2 } U { z : ( 6 * 9 @ { y : 173777 * 7464 * 0 * 307 * 1 < 205 * 5 * 0 } | 0 * 90 * 5 + 3 > 5783 * 1826 - 9 + 87 & 9 + 9 + 12 * 424019 * 1 = 964892 & 5969 = 802003 - 6 & ! 794 > 4 + 7 | 4 @ { y : ( 250746 * 7 * 985 + 27603 > 640 + 14645 & 82745 * 68284 * 68 * 0 * 1 < 7 + 276520 ) | ( ! 9 * 21 + 2 * 3 - 6 * 0 * 956 > 6 ) } U { z : 4 @ { x : 8 * 0 @ { z : ! 397561 = 0 + 377 | 9 @ { z : 59 - 75145 - 651072 > 3 * 3 - 5654 } U { z : 2 + 391429 @ { x : 7 > 80542 + 49376 | 4 + 315037 < 7567 - 4 * 9363 + x + 6 | 2 * 0 - 8 - 3475 * 53 + 86 * 34373 @ { x : 22184 - 6 * 2 < 204261 } & ! 985897 > 164937 & 8505 + 36 - 6 @ { y : ! 0 * 575526 - 65 > 95 & 86467 > 30 + 6 } U { x : 88 + 0 @ { y : 4924 > 0 } & 8 * 1 + 0 * 72 + 4 > 0 + 5 } U { z : 92644 = 1 - 8 + 3154 + 999324 - 11 | 709293 + 57 = 7 - 1464 & 2 * 6 * 92 > 7 | 4 < 3 * 8 * 2 } U { y : 6 = 0 * 206 & 237 = 7 * 5039 } & 6 * 510 > 9 * 14752 & ( 5 + 1 * 0 = 614 + 1 + 3 * 2 + 407426 & 8342 @ { x : 14 < 0 + 52411 + 40463 - 3 - 150208 } U { y : ! 99911 < 90 * 7 } U { x : 3 * 6 - 593 * 64640 = 41579 - 69 * 3 & ! 921 > 735609 | 3 * 0 * 5 + 754698 = 5 * 65 - 872 * 99 * 16 + 72 & ! 691 * 4 * x - 41 * 5 * 5 - 970375 * 5 - 3 > 9 * 7192 * ( 5139 ) - 51 - ( 7 * 46179 * 25764 ) } U { z : ! 524 * 5 - 147 + ( 13 ) + 47529 * 0 - 1429 = 815 + 348 - 2444 | 375 * 2 + 2 * 7 + 80 = 8 + 1 } ) } U { z : ! 589 * y * 52 + 712 + 897 - 9 * 5 * 40 < 5 + 3 * 9 - 9 | 6 * 746117 @ { y : ! 0 * 5 + 10130 + 6 + 2 * 731015 = 9 * 4 * 2 * 22096 & 452664 - 9 * 9 + 4 = 6 & 87 - 8 * 2 * 886 - 8403 < 5909 - 7 + 3866 | 799 + 635 > 123 * 2988 + 4 * 0 - 9 - 849 + 6 + 1 - 0 + 4 * 6 + 395437 * 9 } U { y : 9886 * 1384 * 78899 > 1 * 0 - 92126 & 7 - 8 + 45 < 4 + 9 - 881348 * 92 * 6 | 695084 * 4 @ { z : 8 = 7 & 9800 + 333546 + 515 < 8 * 1 } } | 0 * 8961 < 3 - 1 } | 3 * 85570 * 17 * 492738 * 6795 < 517 + 303457 - 2 + 374 } } | 475961 > 9 } U { y : 3 * 4 < 1 } U { x : 4 < 8 * 57 * 415 + 949725 } U { y : 0 * 1 > 0 - 4 | 80 - 39801 = 216 * 964266 & 2 = 19458 + 696 & 0 - 2 * 9944 = 9283 } & ( 2 = 5 * 607667 & ! 97639 + 0 + 9 + 715 * 64 * 0 > 5 ) } U { z : 66 * 51333 * 9 < 0 * 5922 * 4 * 1295 | 0 + 4233 * 0 * 53724 * 29197 < 9 * 395 + 8 | ! 5708 = 947 + 362266 + 82 & 88312 * 6317 * 9 > 5 * 7 & 4063 @ { z : 9 + 8 * 9 = ( 3 - 2 ) - 2 - 60515 + 3 & 7944 < 7281 + 9739 + 181268 * 3 + 4666 * 186 * 1 } U { x : 29175 - 8 * 0 + 0 < 8 * 12644 - 769 + 1188 * 6 * 795153 & 9320 * 182 * 7 * 4 > 4 | 701964 * 94 > 47970 & 69788 * 437 = 5068 * 4 * 4692 - 754 + 7 * 694 + ( 0 ) + 8 * 665567 | ( 908845 - 968995 ) * 9 * 862 * 3 @ { y : 326 * 112 - 8 + 7 + 2 * 38108 = 8 * 505 + 0 } U { y : ! 7 @ { z : ( x = 4 * 33 | ! 7 + 873 + 2770 = 656 * 6 & 4 - 3942 * 451 * 9 * 1 = 1883 + 52387 * 424 ) | 0 - 4 * 4 + 5 * 0 * 4 < 25 * 1 - 597 * 7 - 70 - 5 * 3277 + 97 - 531412 * 12715 * 4 - 98276 * 757916 } U { z : ! 986394 * 994975 = 269361 * 6 * 2 * 2 * 1 * 329123 * 7 } U { z : 8 * 9 + 8306 < 6 | ( 7 < 9 - 98362 ) | 18 * 5284 * 0 * 7 * 9 + 4 * 33133 * z * 96073 * 668 * 1 - 964 = 944676 } | 483 - 23173 = 8 - 3 * 6 + 78 * 22425 + 7 + 8 & 35712 * 0 - 7 - 5697 + 63129 * 732 * 40678 * 83 + 37483 * 5724 * 2 * 3 = 9 } U { y : 37737 - 65 - 9 * ( 95971 * 3 * 3 - 9 ) @ { x : 135376 * 0 + 77251 < 874 * 3 & ( 26821 * 2 * 7 = 740 ) } & 9 * 9 * 72968 < 1 * 42 * 871 * 38 - 544822 } U { z : 6 > 50 - 8876 & 2520 + 9079 + 557991 + 3213 > 0 * 3 * 762 * 255931 } U { z : ( ! 9 + 3 + 8 < ( 4 - 1681 - 30087 ) ) | ! 5 - 0 + 6 - 5 > 20815 | 4 * 6 > 9 * 3 + 8 - 46 + 945 } U { z : 351 * 0 = 87644 + 8 - z + 472 } & 8 + 476 + 22670 - 6 * 5 * 1 + 4381 + 0 + 6 * 7452 * 9669 + 4608 * 34365 - 1849 - 5 * 17 + 7 + 2 * 7293 = ( 8442 - 0 + 8 - 525 - 24688 + 764 ) & ! 822981 - 28 + 0 - 5 > 8 } } U { y : 63661 < 23209 - 6 * 764 } U { y : ! 3254 + 23 + 5514 > 5494 & 9 @ { y : 4322 * 8 = y - 12 * 75 * 8 + 900120 - 180684 * 0 * 391 * 0 - 5 - 696174 * 9 - 9 - 72 - 760 & ( 534 < 98 * 3 ) & 6067 = 7 * 5 + 1 | ! 773 + 773 + 402427 > 1 * 72 - 3 * 22098 } | 51497 < 1 * 218298 - 766808 + 687687 } U { x : 43 > y - 348 * 3 - 5 - 57 & 9 * 1809 * 69 - 27820 = 7 + 823339 - 9 * 3 * 398 } U { x : 9 > 0 * 85 | 322 * 6810 * 95 * 1 < 3 * 7 * 8 - 5 + 867665 & 94 * 0 = 0 & ! 54 * 0 = 2 + 841123 + 5 | 912288 * 9 < 15372 & ! 577 > 1 * 88 * 9 } U { y : 1 - 3773 = 4 & 8 = 4 * 2 & 479646 * 5 + 4 * 9577 + 6 > 6 & x = 8 + 9348 + 0 * 3 - 9 } U { x : 6 - 9 @ { y : 6 + 1 < 8 * 6 & 5 = 5 * 2 - 5 } U { x : 7 > 45848 * 98678 & 7 * 639277 * 2 = 882 - 3 | 7 + 5235 > 8 } U { x : 9 = 7 } & 1 - 536 * 1 @ { z : ! 5 + 3 * 6 + 4 < 8 * 3 * 0 } } U { x : ! 720 > 2 * 3 - 51269 & 1735 = 8 * 4 + 99 + 0 & 223734 * 56024 < 195 - 6023 * 9 * 7 | 605 + 74 * 4 < 5 - 0 & ! 841387 * 8 = 3 * 2 + 4 * x & 3 - x = 321 & 4 - 1 * 4 + 6 * 2 - 8 < 0 - 8 } U { y : 5 + 3 > 2 - 9 + 554 + 12 } U { z : ( ! 3 + 130713 * 637 - 9 = 4981 | 566765 + 2865 - 5488 - 5 * 8174 * 4 * 74 < 8 - 9 * 2 | 4 = 89595 ) & 4 - 33000 > 9 + 88 | 92394 - 60 > 11606 * 291 & 822959 * 4 * 8 = 0 * ( 4760 + 5 ) * 3 + 5 | 82424 - 987 - 7 < 7 * 8974 + 7 * 146669 - 8 * 263 * 1 & 1 = 489 - 6 } U { z : 5 - 0 = 99 } & 9 * 78 > 5108 * 824 - 418225 ) } & 53 + 473415 @ { x : 5418 + 4 < 5410 * 3 + 4 * 9463 * 1598 * 8 } U { x : 6 + 7 > 5 - ( 3 ) + 8 & 1 + 87 - 6 @ { z : ( 750024 * 659189 * 1 * 508594 - 70 > 5 + 2 * 1 - 2161 * 0 | 5214 * 3 < 9 * 7 | 9 + 1 + 47869 + 5012 * 9166 * 52860 * 9932 @ { y : 919 < 2 * 9 * 17915 * 3881 * 76 * 588724 + 95102 - 7010 } U { z : ( 7 - 6 + 0 = 6 | 949127 = 7 * 218 + 2 * 54 & 0 - 83 * 112171 < 6 ) & 1 + 40 > 2 - 6 * 1 - 41068 * 4 * 77 | 58 + 4 * 7 + 591 = 7 * 932307 * 8 + 0 + 9 - 168063 & 528498 + 0 - 5 = 7 | 6 < 17926 } U { y : 85 + 9 > 857865 & 2 - 693139 @ { x : 3 + 3 * 547039 + 6 - 544965 < 3 * 833 } | 8 + 921 = 3 - 9 - 252406 * 8 * 2 + 9 } ) | ( 0 * 62 = 4 | ( ! 7 * 8 * 6707 * 5 - ( 84 - 5 * 8 ) - 11 * 0 - 9 * 801573 * 8095 > 9 & ! 1 * 1026 - 22 * 4006 > 0 * 8 + 5 + 7 ) ) } & 7 * 1 = 3 } U { x : 244 + 1 < 22268 } & ( 3 > 236 * 3203 * 19932 - 839909 ) } U { z : 4 * 77 * 6 * 8 - 4086 = 761 | 2 * 3 - 6 * 945 - 5 < 83568 & ! 459 + 6 * 215987 = 4 | ( ! 9128 = 303 - 30 - 1 * 9 * 730535 + 4 * 445 * 2 + 9 * 4 * 6 | 16 * 2 - 983064 * 356 > 1 - x * 9 * 8759 * 1 * 578503 & 5 > 0 * 31 * ( 6 + 7 ) | 8413 > 906914 * 9 * 6 + 9 ) | 202 + 6563 * 3 + 6 * 4 + 548 < 34440 - 8 } } ) } U { x : 6 > 93312 + 1 * 1 - 9 & 4 - 46 - 7 * 529735 > 8 | 79177 * 9 * 9 + 2 * 2 * 9 < 172 & 3413 - 215 > 57548 - 641484 - 71 | ( 7 + 17141 > 5 - 6 * 5 * 2 & 1567 * ( 120832 * 1 * 2 + 3 ) + 750554 + x < 3 * 977 * 683521 + 1 & 3 - 8 * 13015 - 6 - 3 * 87 * 50219 * 4538 - 780 * 1648 > 309800 - 0 + 0 * 5738 - 26 - 381 * 1 * 9 + 9 - 5 - 8263 - 3915 + 6 & 4 + 0 * 9269 * 14090 - 8 * 650334 + 14416 - 3 + 0 < 757872 & ( ( 158 = 966 * 179820 * 34 + 420 + 381882 * 174981 | 6 - 3 * 7 = 9 - 4 - 7 * 9 ) ) & 761 * 6 * 799 - 65896 @ { z : 5 - 7 - 2 + 6 * 971 < 7 * 1 } U { z : 1 > 7 - 38034 + 6 } ) } } . + let set z be { x : 160511 = 2 } . + let set y be { x : ! 0 - ( 5 * 61 - 99464 ) * 1 > 7 + 338736 | ! 23422 < 26553 + 4 * 2 } U { x : ! 7 - 282715 < 1 * 2526 } . + let set y be { y : 2 - 64 < 1 * 9450 * 693 - 2 | 39560 * 2 * 649437 > 50492 - 7 - 6 - 74 & 2138 + 2 > 51 } . + let int y be { y : 0 + 5413 + 2 - 1 * 5 = 3 | 42767 + 26 * z + 4134 * 1 - 9921 * 3 * 4280 * 976667 * 5 < 2 * 1 | 212736 - 2 - 749 < 0 * 1 } U { z : ! 0 * 7 < 5 + 333 | 4053 = 4 - 5 + 3 * 89891 - 1 - 7 + 9 * 62311 + 9 * 2 - 1 | 4 * 3 < 29 - 363302 & ! 90 - 1 + 746367 * 446 - 346 > 84473 & 7 * 3 + 172 @ { x : ! 6 > 8 - 7 * 4 - 0 + 78485 + 83 & 256 + 2 - 9 * 17840 - 480 + 0 * 4 - 273901 - 2 * 5 < 2 + 2 | 335 + 3 = 6 * 7 * 10 } } U { y : 10706 - 2 * 3 * 184 * 0 + 809 * 468170 * 7 < 1 } . + let set x be 7 * 3 . + let int x be { z : ! 78121 + 2 * x - 7 * 6 * 9 + 8 * 541 * 2914 * 1 > 0 + 84181 - 9 } . + let int y be { x : 61 - 4 + 7 = 5 * 2 & 7 = 749303 * 1 - 0 - 1865 } U { x : ! 0 - 9129 + 0 = 6084 * 43 } . + let set y be 41 . + let int x be { x : 9 * 5 * 574507 + 1 * 300195 * 3 * 454 = 2833 + 781 * 257370 - 5 * 7229 } U { z : 2 < 0 & 7 = 4268 } . + let set x be 2 * 3 . + let set y be 2 * 339 . + let set z be { z : 0 > 33 * 6 + 6 * 953764 * ( 49270 + 6 * 780821 * 2 - 5 ) } . + let int y be 19 - 599630 * 2078 - 8 + 6 . + let set y be { z : 9 + 462 + 9 - 1 + 76 * 50154 * 5117 > 8334 * ( 6916 ) * 5 * 194 & 770450 @ { y : 2782 < 9 + 210 + 489948 } U { y : 3 + 29 * 643 = 0 * 982 & 4 + 8 - 75530 > 5 * 9438 | ! 760424 - 677 * 4 * 917436 + 8 = 21 * 66 * 7025 & ! 579214 * 7 = 5 * 886 & 9 * 463 * 63560 * 2 * 678 = 5 + 2 + 38368 } U { y : 57172 - 13 * 2 * 4 - 52600 * 4067 * 20 < z - 50 & 5007 < 8 & ! 3 * 56 > 8 * 575 + 5509 } | 235 = 51 & 9 - 5 > 6 * 6 } U { y : ( 9 * 94 * 9 + 98 = 3 * 1 - 0 * 2 * 1 * 6 * 35237 - 2695 - 6092 * 465922 + 0 & 0 + 463159 * 2 * 2 * 934 - 330 + 2089 @ { y : 480 + 6126 + 9 < 4 | 6 * 5 + 9 - 11 * 7 * 56 - 55 - 0 + 0 > y * 8803 * 1 & 3 - 6632 < 4 } U { z : ( 0 > 1 | 197 + 4 * 314920 < 76 + 2 - 0 * 6 * 79082 + 122213 * 1 * 98774 + 9835 * 142210 | 2367 = 0 & ( ! 4237 * 0 * 23 - 232508 + 621 > 97 - 9 | 3 > 4 * 669111 - 5 ) | 39395 * 3 > 47 * 59373 | 1 * 691486 < 44253 & 515713 * 354 = 0 - 1 * 8 - 811160 - 18167 * 3 * 68669 & 9 * 373 < 8 ) } U { y : 6920 * 822 + 1 + 6 + 189 * 2876 + 9 * 7 * 94074 * 2 - 9 * 0 * 6 * ( 5 * 568873 ) - 16813 > 1 } ) } . + show { y : 73538 * 6 = 8 | 0 * 181454 * 1247 * 2 < 3 - 5278 + 0 - 7451 * 0 * 6 * 1514 * 7 & 0 * 672505 > 44 * 0 * 54429 * 1 } U { x : 9 > 4 } . diff --git a/src/snapshots/bnfgen__generator__test__typed_set_algebra_expr.snap b/src/snapshots/bnfgen__generator__test__typed_set_algebra_expr.snap new file mode 100644 index 0000000..cf9b00a --- /dev/null +++ b/src/snapshots/bnfgen__generator__test__typed_set_algebra_expr.snap @@ -0,0 +1,104 @@ +--- +source: src/generator.rs +expression: out +--- +5890 * 683309 * 0 * 55757 +20477 * 663547 - 4 +1 - 310560 + 7 +3001 +{ x : 87 > 843 } U { y : 2 * 6 * 802 - 88 * 70790 < 5 + 8 - 6 } U { z : 9 * 715 < 563644 & ! 3 * 2 = 392 + 8 & 4 = 2388 * 7 } U { x : 7 * 273 @ { z : 4090 + 889 = 2240 & 334743 > 2599 * 5 * 66736 * 2365 * 459 - 4828 * 52236 } & ! 91707 + 8 @ { y : ( 26 > 7 + 329912 | 90 < 608277 - 2 * 7 + 3509 ) } } U { y : ! 7 * 3 + 81 < 355 + 9 - 1 | 0 - 7 * 68 < 1 } U { x : 55 - 464 + 4 + 641 * 2545 + 5 * 974513 * 8302 = 50 - 46 - 6 | ( ( 267 + 3 - 41187 * 318055 + 9811 @ { x : 8 + 8 * 3 + 468759 - 7 - 23047 * 67 - 7812 + 930 - 519 + 8 < 3 * 44 | 4 * 6 * 2 - 0 * 8 @ { y : ( ! 26736 * 8 + 5 < 224 * 57 ) | 22598 < 1 & 6 - 7 * 8 @ { z : 3406 = 0 + 135117 - 6 } U { y : 286476 < 4 } U { y : 353 * 9 = 1 - 5 * 3 - 1 * 67942 * 9576 } & 7 + 9 * 838055 @ { y : 8 * 1 * 254 * 13399 - 1 * 3147 - 9 * 31 = 3 + 742513 * 2 * 4 * 7 } U { x : ! 8165 + 1 * 410 + 7 * 374812 * 43216 * 2 > 88088 - 64465 * 1702 * 4236 - 3331 * 9 * 35 - 5 | 2 < 3589 * 9 - 922245 - 0 - ( 38867 * 59 ) & ( 4 + 3629 - 55589 * 3 * 70914 + 712 > 4727 ) } | 8 * 0 * 9611 * 61178 - 9397 > ( 491 ) - 7710 * 75 * 606224 * 5 * 429280 & 29 * 293867 - 2 * 8 * 7 * 5 * 8 > 5 } U { y : 45 - 1 * 27 > 690 - 5 & ! 4 * 220 * 667185 + 9 * 7 < 8 + 2 - 0 & 314 @ { x : 8733 = 639924 * 31813 + 8 + 9 * 8 * 6505 * 6 - 8 - 675 } U { z : ! 346694 > 5 & 2 @ { x : ! 20978 * 6125 > 7 & 9 * 5275 + 4512 * 524 + 8 = 1 } & 750 * 6 > 2 + 657269 + y | 3438 < 1153 * 25781 * 8 - 75401 * 4 & 7 * 8 * 6 > 12429 + 60 } U { x : 105355 * 9 < 545408 + 74 * 451420 & 964 - 42 @ { x : ! 44 * 2 > 480904 + 378720 + 1 * 5387 * 9 } U { x : 9204 * 4325 * 4 * 23276 * 2 * 3 + 9 + 10 * 7 < 3390 * 9 } U { y : 6 - 4 + 9 - x * 6 * 9 > 504 & ( 8 * 45013 * 3885 - 0 * 4 = 1 ) } | 2 = 2 - 424 & 8 < 3660 * 4 + 7 * 1 - ( 749225 * 2 - 7 - 2387 ) * 107 - 58 } } | ! 9 < 39486 - 9 * 9996 & 30 - 6 = 795038 * 7 * 454 * 76 - 581596 | 1265 + 6045 = 7 * 1 * x * 1 * 92614 } ) & 5 * 36 @ { z : 339631 * 38244 + 2 * 5 * 0 > 63 } U { z : 4336 - 363 * 751831 * 5 * 80795 = 8 * 6 | 4060 * 50 * 1 * 3 > 7 + 1 + 9 * 3 * 69497 & 5 = 7558 & 2 = 718 + 4 * 7 + 3 } ) } U { z : 639 * 91252 * 773811 * 74655 < 0 + 956 & ! 1 @ { y : 295 - 6809 * 380600 @ { x : 8 + 0 * 2 @ { y : ! 375502 < 16898 + 94216 } U { x : 7 + 6101 * 1 @ { z : ( ( 3 - 47632 + 7 < 81040 * 856 + 2 - 6 * y ) ) & ( ! ( 5 * 9 + 1 ) + 462 > 1 & ! 540254 * 221 * 2 > 147 + 300 ) } & 2 = 63 } U { y : 7 > 5 - 2 - 44 } } U { z : 3 + 74 > 4 * 79771 * 6 + 0 - 745361 & 7629 + 71460 - 6952 = 5 + 645 * 88 * 5 | 37 * 99815 + 60251 * 21 > 126 - 9 - 484 + ( 5755 ) + 9 & ( 4 - 3 * 4 - 7 < 5 ) & 9 < 9 * 2 & 19225 - 9 * 5 + 441 * 19834 > 6528 + 5234 } & ( 29 * 95 * 72434 = 41 | 4 @ { y : 4 + 154 + 37243 * 8 * 43031 + 5 + 0 - 8 = 528 & 7 * 6 * 7 > y + 1030 & 46 * 8195 * 3136 < 8 * 57871 - 6 + 1933 * 632 * 0 - 3 + 7 + 68415 - 4 } & 97014 < 9335 ) | 77878 = ( 61 - 3 ) * 34409 * 15069 + 8 & 44 - 0 * 3022 + 9640 * 299 > 582794 } U { z : 1 * 392098 * 4 = 754 * 8 } U { x : 52424 * 8 - 2 > 8 - 9 + 9 * 1 * 2 * 449 - 0 } } +785532 + 904145 + 294546 * 1 +{ x : 0 - 438 * 110 - 8217 > 29 + 3886 | 7 > 34 - 2170 } U { z : 558 - 1 > 1 - 9 * 8 * 3314 | 3 + 7 - 767792 > 12 & ! 2 > 3 * 3 - 7 * 0 * 983 + 905980 * 5 } +301980 * 44 * 0 + 80862 * 7 +414462 +{ y : 4979 = 5 & 4045 * 4 * 3 + 7 * 66951 * 9 * 427 - 419 * 3 > 1 & 929478 < 46058 } U { x : ! 72 * 72 - 32 - 7 * 29919 - 7 * 6291 * 7 = 1 + 0 | 13 - 2 @ { x : 130 + 49895 @ { y : 410 * 991333 + 678 * 4 = 3 * 3 * 188752 * 2 * 88807 * 0 & 5 * 7 + 47661 * 1 = 706264 + 8 * 0 & 409 - 6 + 64 @ { y : 7 < 63914 - 8 * 7377 - 53223 | 4 + 5 * 86 + 145197 = 6 - 7 } & 6531 + 0 < 437760 | 51099 - 3 > 3 * 1762 | ! 22 * x * 693 > 53083 & ! 7 < 9 * 8 - 4 } } | 6 * 275891 < 3 - 8216 * 7 } +110741 +{ x : 2 = 9 * x * 1 } U { y : 8 < 30 * 4 - 5 * 9321 | 490 + 8 - 358839 - 6 * 545441 < 4 * 2398 * 7002 - 7 * 89 | 6 > 163 | 566 * 2 + 3 = 8586 | 65 - 2 * 70158 + 0 @ { z : 9 < 6 * 73405 - 3 * 433020 * 4 + 7 + 115837 | 5 + 315637 * 7 - 515 > 16 } U { z : 0 + 87709 * 539807 - 0 = 6692 * 9 } & 365203 = 165 - 33771 } +658 +{ x : 1 + 3073 * 6 + 2173 - 601105 * 49464 - 2 * 5 - 1 = 1837 } +{ z : 3 * 8 = 3 } +{ z : 11 = 4 * 489255 | ( 4 - 2 * 17183 + 52102 > 4 * 3046 ) } U { y : 62571 * 630 * 650 * 93 + 9529 - 831 + 7 @ { z : 9912 > 4 * 8 & ! 2116 < 1 } U { z : ! 540537 * 61 * 1 * 52627 = 4 * 5385 * 8446 + 85375 * 951924 + 2 + 0 + 4 + 8 + 5 | ! 6 = 1941 } U { y : ! 3 * 1 * 4446 = 623 - 4366 + 4 - 640 * 2 } U { x : ! z * 6 = 74 * 3 - 436384 + 5 - 4 } & 713 * 8 * 18937 * 7866 @ { x : 9 > 2 | 8 * 11265 * 2 * x + 26 * 8 @ { x : 0 < 3 * 471 - ( ( ( 7 ) * 4077 ) ) + 3 - 901 | ! 224376 * 79 * 7 - 19886 + 0 * 4120 - 2 + 129 + 99 + 132065 - 3 * 927861 + 0 + 4 * 5 - 5 - 3 < 39231 | 2 < 3 - 7 + 4 * 114084 | 776498 < 251 & 1 + 943 * 2 - 2 + 970 * 845 > 3 & 9874 * 48 * 56358 = 2 * 724 - 5 - 2 + x * 908263 * 3374 - 593 + 8639 + 9 & ( 4 * 541884 * 2 * 269544 * 9 - 45438 * 2 + 3 + 94 @ { y : 6 - 599212 * 7 * 5 @ { z : 43625 = 8 - 3 } } & 83239 * 160416 + 856317 = 448727 ) | 8 - 2 * 345008 = 1 & ( 3 * 67602 < 22389 | 0 * 5646 * 6 < 6 & 5 - 4 - 98380 * 4 * 984 + 8 + 15 - 5479 < 0 | 173654 * 3 + 99 > 1 - 3648 - 3856 - 6 ) } } & 2 - 954 + 2 = 9 | 60 * z < 13 - 1 * 3 - 8 - 239 & y * 0 * 4 - 844516 * 974961 + 2 * 1 * 0 * 1 * 322 + 7 < 62 } +{ x : 35 > 7 * 3049 + 324863 & ( ! 5 - 8123 > 17 + 41 + 59 * 9 + 6 - 9 * 82043 + 69 ) } +35300 * 54 - 6413 * 91774 +2190 +{ z : ! 3 - 3287 * 358127 > 6 * 40 * 1 & ( ! 249353 * 7 < 0 - 2 * 9 - 2 * 3 * 3 ) } U { y : 160926 - 41235 > 907 * 2 & 58 * 162 + 1 + 840118 * 8 * 909164 @ { x : 5 > 8 * 71799 * 0 * 5 * 959893 } | 60 > 5 - 3 + 319 + 7 } +61 - 91 - 920 * 5 * 580594 * 368 +{ x : 67260 > 0 * 36 } U { y : 4203 * x + 6 @ { x : ( 699623 + 236063 < 82 - 548608 * 7866 * 13 * 133 * z * 2263 ) & 946 + 6 + 4 - 9 * 7 * 7445 - 922 = 271 - 3 - 9 + 4 - 8 * 4897 - 176021 * 29154 - 4 * 14372 - 4 - 1362 - 3 + 35325 + 60662 & 77012 * 79 * 4 * 3 * 27 * 11 < 3 | 3 + 515 * 7002 * 908 * 3 @ { z : 7 + 23 @ { z : 2 = 188 + 7 * 56 * 3 * 4 * 5 - 133716 - 627 } U { y : 3296 + 6598 @ { y : 4 > 1071 - 438 | 7 = 5 * 8 - 42 * 77 * 81406 * 9538 * 0 - 4 * 311 * 2413 * 954115 - 0 } U { x : 5 + 91669 * 21 = 642 } } & 724 > 1 * 4952 - 79 - 2 + 394 - 6 - 69 * 3 * 9609 * 91 + 997 - 8 * 0 * 8 + 1 & 30781 - 6 @ { z : 8 * 766 < 8 } U { x : 165235 * 10820 > 90 * 426 } & 44299 > 61 * 7 * 0 + 253 - 1 * 4 & ! 23136 - 3 + 8580 - 40 * 55 - 1 = 3 - 89504 * 0 - 2 & 8 * 62817 = 5 * 711 * 13 } | ! 569097 * 3604 * 9434 @ { z : 5 + 8 * 0 * 79 = 686 } U { x : ! 88 * 9317 < 5 | 0 + 10620 * 8 + 752 < 86720 * 297 * 0 * 1381 * 6 - 6 - 3 } U { y : 87184 > 918968 } U { y : ! 8 - 0 * 26730 > 6 & 49344 + 1 * 44457 + 561 * 2 - 30 * 7 - 338843 * 6 * 6 - ( 312 + 5 - 21 - 4 ) * 5 = 4414 * 1 + 2 | ! 3 * 6129 * 83 - 55033 + 0 * 2 > 8 - 6 } } U { x : 9855 - 3 = 8 + 7772 - 320506 * 3 * 53257 * 1 - 127 & 8 * 673519 + 4 < 58991 * 4 * 4 | 758689 @ { x : 5 < 735023 } U { y : z * 74177 * 42600 - 0 > 4 | 14 * 0 * 944631 < 1 | 230621 * 39851 * 2 + 255 < 218 + 43 + 3 * 8991 } U { y : 744438 < 2 - 0 - 435002 * 822591 - 5 } U { y : 84626 > 0 * 91 + 3 & ! 2 * 1 < 8 * 81275 * 11305 * 76 & ! 98 > 15 - 9 | 497914 + 9708 < 6 * 829 } | 52 - 1 * 7 = 2 - 7581 - 8 + 54 - 132591 } & ! 2 * 471 = 30 * 9 } U { x : 408221 + 1 = 8 - 4 * 471089 } +{ z : ( 0 * 6240 * 1627 + 8 + 2 * 0 < 56174 * 136349 * 941738 | 8 = 917454 * 92017 - 3 & 2 * 3 - 1 * 412555 * 7 - 70 = 3441 * 3603 - 717 ) | 1 > 4 | 466961 - 57660 @ { y : 8278 - 106596 + 616 < 2 - 0 + 5 * 1 * ( 5 ) - 46296 | 3 + 286632 + 839674 < 7 | 0 + 56086 > 404380 * 68 - 9 & ( 5 + 2 * 42628 = 5327 - 9 - 651 | ! 22507 = ( 675176 * 7 ) + 1 + 4 ) } } U { x : 1 * 461550 = 0 } U { y : 7 + 241 > 3 } +{ y : 5 * 0 > 6 } U { z : 2 * 0 * 6 - 8 > 0 - 51 | 941953 - 0 - 2 = 7 * 1 - 0 } +{ x : 56 * 47 * 89080 * 522176 + 3601 * 2200 > 2086 | 9226 + 9524 + 582 * 10 = 0 * 464824 - 624 } +6 +6 +614 * 8 * 3 +6 +{ z : 67549 + 6 * 9 + 484758 @ { x : 2 < 769 * 871587 } U { z : 77718 * 549739 * 87082 + 20495 = 321663 * 6 - 4 + 59254 - 5 * 950295 } U { x : 87 = 740788 * 8 } U { y : 63583 > 31 * 672793 - 598028 - 8993 - 34 - 10 - 3 } U { y : 9 * 7 - 234 - 866761 - 4926 > 9 + 460802 * 2 * 464 + 240 - 213 * 3 | ! 2 < 2 + 4 * 52 * 838836 | 80 + 8 - 6 > 9 } } U { x : 9 + 8 * 0 = y * 2 } U { y : 482214 - 9 - 63511 > 59050 + 6 - 8 * 3 | 3 + 4 + 4 = 9 + 86663 * 6 } U { z : ! 920493 + 3719 * 460006 * 8 * 26229 * 0 * 6 = 344 * 93 - 14503 - 46944 - 8 - 247 + 5 * 4 + 97206 * 56481 * 2 * 651562 } U { z : 7 < 0 | 1 @ { z : ( 783828 * 0 * 3 - 2 - 2 < 7 ) } U { y : 4 * 2164 * 40438 = 69 } } +{ y : 0 = 68772 * 0 * 3 - 339 + 3633 + 6 * 3 - 170 & 1 < 8645 + 796206 * 6247 & 9 > 24320 } +{ x : 36978 + 25082 - 626555 * 8489 > 6 - 6877 * 48 * 62328 - 2 * 1 + 5 + 98 } +{ y : 4 * 509 * 81 - 9951 * 794418 * 3 < 7 & 5377 * 220235 * 9 > 956168 + 2 * 2921 + 1 * 0 } U { z : 2 + 217 = 59098 * 6340 & ( 5 * 19256 < 7 | 2 + 9366 * 6 - 2788 * 366586 * 811 + 5 - 5 - 15 + 485225 * 2 > 5574 + 9 ) | ! 188637 * 3743 * 8 + 331 * 87 @ { x : ! 456281 * 5061 * 71658 - 2 @ { x : ! 7614 * 50100 + 1 < 4 } & ! 82201 * 2 = 241574 + 94 * 8 & 407 * 3 @ { y : 7 * 887 = 1723 } | 2 * 3 = 66 * 8 * 3 * 3 * 60 - 0 * 2 } | 1342 * 120 - 761 * 5 < 3 | 38 + 711977 < 794 * 6 * x * 4 } +{ y : 5 + 0 = 2 * 5 & 8 < 5 } +6 +{ x : 64 + 854567 = 80 * 3 * 0 + 1 * 1 * 868816 + 22995 + 5850 * 5 | 4 - 9 * 6 + 49026 * 3 < 1 } U { x : ! 532 > 3 + 8244 + 45402 * 47 * 2 * 49720 * 4 & ( 350233 * 65 * 0 + 5 > 941 - 886 ) & ( 38 * 9 > 4 ) } U { y : ! 59 < 4 | 750848 * 74793 @ { z : 0 * 882407 > 2 + 4 - 18191 & 440966 < 319834 * 7 - 3 * 4523 - 66020 } } U { z : 1 < 55 * 8522 & 0 - 2 - 8 * 30107 + 63 = 2753 * 7 * 4105 * 7 * 8 & ! 1 * 254826 - 47174 + 7 + 7 > 9487 * 193 | ! 23187 * 6 > 2 - 0 * 93128 - 5 * 708 | 8 * 5 * 4 * 5 < 8 } U { z : 2 - 944 > 3 | 2 * 46 + 0 * y = 5 * 9 * 3 * 2 } +345 + 4909 - 74079 +{ y : 330584 > 9 } U { x : 42127 - 2 + 8 < 5 } +{ y : 755 + 8 < 4 * 6 } U { x : 6 + 470 @ { x : ! 2012 * 3718 < 0 | 5 + ( 62 + 1 + 4 * 8 ) - 80 * 577396 = 50 + 42746 + 6 | 5433 = 4554 & 0 > 9936 * 2 } U { z : 93 - 954 * 9 + 22 > 8 } U { x : 4 > 4 * 9 & 773269 * 5 @ { z : 4 - 49553 = 4 } & ! 5 * 63 - 264227 - 2 < 1 + 3 + 5 - 9 & ! 3 * 682339 + 592029 * 6 + 6 * 7 > 3385 * 91 - 230 * 2 } U { x : 6791 = 5 * 799406 * 9 } & 2 < 5488 & 7 > 65953 & 5 * 7 < 68 & ! 67 = 4 * 30 - 6046 * 1 + 5 * 9 - 0 * 783 * 237 | 6 + 464423 + 463 - ( 1877 * 8 * 4 + 6 - 1 * 7 * 8015 ) * 3650 = 9 + 39 * 48 * 38180 & 7 * 1 < 3 + 9 & 117 * 101 + 3 > 1 * 6168 * x & 3 + 563 = 7 - 9 * 8 - 894300 - 8 } +6402 + 7 - 4471 - 28 +{ x : 9 + 5 + 858 * 6236 < 6 * 991317 - 0 + 1 * z + 2 * 645791 + 693091 + 5 & 8 * 65 @ { z : 3 > 5 & 62049 @ { z : 9 * 3 + 8343 * 4785 + 7 - 694076 * 8 = 7 + 1 * 30 } } U { y : ! 54284 + 4 * 89 - 3997 * 9149 * 10 * 1 + 3 - 272 * 720 * 0 - 4 * 53 @ { x : 6 + 410 > 1 - 28 * 100 * 9 + 797977 + 3838 + 23103 & 3 * 3 * 6 + 3 + 4 - 2 @ { x : 72701 + 1 @ { z : 8364 - 182502 > 3 * 8 - 54744 & ! 38 + 1 * 2 * 812846 * 353458 < 0 + 9 * 5 } U { x : 95 * 4 > 0 - 805927 * 1 | 9139 * 2 - 53593 < 759655 * 0 + 4 } U { x : 4 * 94 + 1 - 2083 - 2 * 0 * 17 * 2 * 8 = 22 * 29 + 77435 * 3 - 98083 * 3684 * 93751 } & 8 * 5 < 3 - 4 & ! 9 * 94887 = 56 * 67 } } U { x : ! 8 * 9 - 16 > 8 - 75897 * 3 & 6 - 1 + 68 + 4 - 6 - 0 * 4 * 942 + 2 = z + 8933 | 4 - 9 * 5 * 8317 - 91 - 38 * 0 * 6 - 86224 - 4 @ { z : 0 * 6 * 8 - 429 = 414368 * 6 & 92503 * 86 < 4 * 6 + 57216 - 872061 * 5 + 3715 * 959 } U { x : 3 + 4 - 5 = 2 & ( 8438 * 185370 * 75198 * 8 @ { y : 89091 - 5 * 6 - 4 * 2 > 509080 } ) & ( 4 * 0 + 479 < 74 * 4914 * 5 * 438764 - 1 ) | 2 @ { z : ! 67 * 1 + 11 * 64 < 681 } } | 676416 * 42269 - 977 = 0 | 7 - 3 - 614 - 3 < 4 * 5 } U { x : 1 < 2 & 701694 * 392 + 752 * 66228 * 5935 = 7 } U { y : 5 + 0 > 344561 * 5 } | 626629 > 7068 - 1 + 5 + 67876 | 7 * 45 * 88769 + 80285 * 6 + 416 * 470 < 68 * 20 + 5 * 0 + 8 * 824 } U { y : 234780 > 3 + 7093 + 64486 + 951 - 6 | ( ( 57 * 3 ) + 0 + 656 < 65652 | 2 + 4 = 69208 * 666 & 0 - 99045 * 4 @ { x : 32671 < 388350 } U { z : ! 735 + 86694 @ { y : 44 < 475 & ( 10 < 633104 + ( 9 ) + 3 * 9 - 99 & 4976 + 8298 @ { x : 5 = 0 * 4 - 4 * 21 * 699196 } | ( 5 * 1 * 844 * 0 - 4 * 1 = 45 * 1 | 0 > 7 ) ) & ! 410 - 4 = 0 - 7 * 6 - 2 + 603554 + 6 + 6 & 261 = 7 | 13 * 767664 - 166 * 3 - 8013 > 6925 - 1 & 9 = 7 | 22776 * 65 > ( 38 ) - 5 + 7 & 30765 - 4639 > 89 * 66 * 4 & 4 - 83032 > 462 * 4457 - 243 | 9 * 7507 * 8 > 6 + 8 | 4 - 0 - 1710 - 358611 * 802 + 8 * 515 * 8 - 5 * 1 < 36 } U { z : ! y * 312694 < 419 & 0 - 8 > 9 | 13548 + 7 = 7 } } U { y : 9 - 800 + 85317 - 8 * 1 = 3965 & 9648 + 7 - 7694 * 2 * 5 @ { z : 4 * 635 - 4 < 4 + 9606 * 65628 } U { x : ( 5 - 233918 < 58488 - 92367 * 91015 - 7112 * 7 * 99882 * 58 - 508 ) & ! 14680 - 224 @ { y : 2 * 5 > 3 + 881 } U { z : 14442 * 0 * 515 > 8 + 4 & 66372 = 7 } U { x : ( 1 @ { z : 3245 - 863984 = 6 * 15956 - 5 * 81021 * 1 + 2830 & 598 * 7 * 9 @ { z : 7413 * 21 > 3 * 7 } & 8 @ { y : ! 132167 = 91 } U { x : 3 + 5 * 8 = 6 - 8 - 15783 } } & 934 + 8 * 884 * 333046 + 216141 * 967 = 99965 * 7 ) | 5 - 4 + 7 = 7 * 1 - 6 & ! 8 + 3 > 6 + 7 * 3 + 9 - 3 * 1 - 9 - 497458 & 8 * 0 * 921 > 0 * 18425 + 8 } & 7785 = 9 - 10192 | 5 - 1 - 953 * 12 = 234 * 0 * 2 - 3 * 8928 & 33 + 2 * 99280 = 30 * 950 * 4 | ! 6786 + 5 * 727 * 57747 + 263815 + 39 * 8 < 4390 * 16 - 0 * 20 } U { y : ! 95604 + 69813 * 77 + 3944 * 6 + 750906 * 680672 * 3 < 3 - 9930 * 9 * 3 - 5894 | ( 4 * 2 - 4050 - 83582 * 9 > 85 ) } U { z : ( 0 * 1 ) + 1 < 87 * 4 | 62420 + ( 8 * 4 ) = 8 | 15379 = 335939 & 1 * 0 * 456521 = 47586 * 56 * 5053 * 6 + 9 - 4 * 512443 * 1 + 98 * 5 * 8 } U { z : 5 * 12 * 646626 * 115999 > 296129 * 30 - 867 * 5 * 2 * 1 + 7 - 9 } | 9 * 43535 * 3 > 8 * 8777 * 90720 & 884990 - 3 * 389104 + 281992 * 599 + 4 @ { z : 1 + 78518 > 87 } U { z : 39193 * 6 > 5 | ( 2980 * 455170 * 9 = 5 + 197 - 713743 * 58 + 721046 ) & 6 - 0 + 57075 * 4220 - 2 * 6 = 7 } } & ( 74875 + 34028 - 8 * 0 ) = 3 + 464584 - 18 * 9 * 6 + 7 ) & 4 = 4 * 2014 - 8 | 75 * 1400 - 4362 - 5 * 1 < 77413 + 9 & ( ! 11429 + 194 = 5 ) & 1597 - 5 + 0 * 3964 - 4 * 52 * 4168 * 716 - 9 > z + 1 * 97523 - 1 * 749 | 5069 = 3 + 115148 & 8 * 3 > 54529 - 3 * 4 + 252 - 9379 | 5 * 0 * 9 < ( 6 - 4 + 384627 * 4 ) + 995744 * 4 - 6 * 7 & 9 = 9 - 781 * 1 } & 5 > 9 * 31973 & ( 81 < 7 - 2 | 4646 * 25 < 1 | ( 0 < 5 - 4 ) ) } U { y : 3 - 2726 > 9 } U { x : 3 > 33 + 5 + 4 | 787786 @ { x : ! 49278 @ { y : 193 * 467301 - 5 > 0 } U { y : 1 * 4 * 7 + 1 - 4 = 71030 * 0 & 4 * 3 * 361 + 5 @ { z : 67 - 902306 * 6 < 9 + 5 * 2 + 2672 + 3 + 361680 } U { z : 0 * 3 + 5 < ( 8 ) * 77 * 89 - 6 * 0 * 7595 | 6 * 9 < 1 * 787 - 1586 * 46 * 5 * 3 * 170 * 9 - 6 } & 174 * 5 < 3 - 44 } U { z : 10736 + 224 * 4 > ( 60541 + 4921 + 28 - 1 ) * 83773 & 9 < 1484 } U { z : 5 > 8285 - 8 & 935386 - 8778 * 5 * 1 - 4 < 0 * 9 | 91 = 0 * 0 * 71467 | 213 < 2 | 0 > 1 * 2 * 115993 & 6 * 0 = 7 } | 1 @ { y : 4937 = 78196 & ! 5 * 1 * 9 < 2 | 7 * 37894 * 8 - 0 - 12 > 95317 & 88 * 2 + 3 @ { y : 375515 * 9 < 4 + 78 + 0 + 12 * 9213 | 6631 * 2 * 232 + 8 * 9 * 683152 > 644 } | ( 3 * 6 - 740338 * 8 - 1 * 9 * 0 * 467100 - 28 * y + 1 > 43662 * 2 ) } U { z : 1 * 5 > 8 } & ! 5 - 9 * 3 - 18234 * 3 > ( 623 + 1608 * 5 - 7 ) | 8 + 564 < 88 & ! 7 + 75 - 4 * 67680 @ { z : 466 < 9 } U { z : ( 757 - 9777 * 44849 * 122 * 9 - 76 * 41 * 20 - 8397 * 6 * 1008 + 983 * 99845 - 2531 * 64884 - 9 > 6 - 5184 + 7 * 3 - 978 * 2 - 7 * 0 - 71392 ) & 4 @ { y : ! 27918 * 3 - 21565 @ { x : 3 > 954 + 1 - 9 + 3 + 9 & 5 * 150399 = 47 + 954 * 80 * 892256 - 591 | 3181 > 7 * 420 * 6 * 39235 } & 5 + 886135 < 0 } U { z : 803 * 11370 + 0 * 2 * 6 + 7475 < 9093 * 1 - 6 - 7946 & 4307 + 0 + 5 > 9 * 4 & 1 > 0 & 27 + 68 * 1 @ { y : 8704 > 3061 } U { y : 4 + 22876 * 544 > 195 + 6 - 8 - 957 + 5 * 876 * 9 * ( 0 + 64 ) } } } } U { x : 8 = 3613 } U { z : 126 + 0 - 958 = 13829 } U { z : 18265 @ { z : 1 * 5727 > 0 * 8673 | 346891 * 33 > 3 * 5 } U { x : 2 * 6 = 31 + 282 - 5643 - 3160 * 9 * 1 + 6 * 95004 } U { y : 205280 + 2737 = 0 + 8 - 3777 + 5 - 7818 + 57 * 728 & ! 321008 + 709427 * 14 = 81650 - 491154 + 2 * 8158 + 8 + 2 & 7207 - 31 * 688 * 864508 + 46841 - 14 * 3 + 18697 * 1 + 15670 < 1 & ( ! 843 + 1 * 195 * 1 = 1 * 2 | 0 = 6 * 6 | 8537 < 4656 ) } } U { z : 3 * 4506 + 9 * 1 - 2 * 567 * 6946 * 5 - 3 + 96 > 760069 * 80004 & ! 56127 - 5 - 10 > 6 - 9 } & 46898 > 8 * 9414 * 28393 * 331 - 2833 | 4 * 409 - 3232 + 2 * 5 * 24125 + 167 * 9 + 7740 + 0 * 67 + 84 * 6 = 8 * 52489 & 7 * 901 = 1895 + 63611 * 504 } +{ x : 549 * 2 * 288677 * 596431 + 139330 * 4434 + 257 - 11477 * 8 = 7203 | 4 * 5 < 252 } U { z : 9 < 70 * 67398 - 951 - 5353 + 3 * 89513 * 0 * 0 - 949823 - 724163 } U { y : ( 47710 * 375 * 7 = 2 - 2 * 48 - 1 - 362 ) & 1 < 8540 * 128549 + 79 * 957 - 919877 | 621 - 6 + 8 - 1 + 90052 + 7 + 6 * 557 + 80204 - 817 + 646174 * 783 - 4 * 54 + 80115 * 5 * 8 - 348514 * 11 * 4 * 53 @ { y : ! 8519 * 2 * 2 + 53 * 1586 - 63 @ { y : ! 316 * 0 * 9 + 5250 < 3 * 5 & 5 < 211442 * 9588 & 6 + 75 * 1 = 4 + 731721 + 101 * 28683 } U { z : 1 - 1946 + 1 * 831 > 3 + 513233 | 5 - 6 * 8 + 902 + 4 * 7539 + 4 * 7 < 51605 * 61 - 6 + 185076 * 329 - 93056 * 273 * 0 } & 6 @ { y : 6 + 72 * 32 + 69329 * 15 * 80 * 328007 > 4 * 3 - 91296 + 64309 * 93 } U { x : 27331 < 5 * 8 | ! 60205 < 1 + 6 * 5 + 3571 * 5965 - 75522 * 20499 + 5090 * 5 + 5 - 94129 & ! 62866 > 31223 - 2 * 4 } | ( 1 > 2724 + 790 | ! 1 > 22 * 18041 * 42464 ) } U { z : y - 946 * 9 - 7 - 834547 > 4 * 8823 + 7 * 6 - 41 + 5935 + 3 } U { x : 91232 * 6 * 4 - 4 < 14 - 1 + 3 * 642120 & 3012 * 9 * 910012 - 42750 * 97 = 503158 * 903750 } } U { z : 2 - 1 = 6912 * 6 } U { y : 9 * 8 * 0 > 93410 * 249 | 374 * 65064 * 7 + 9 = 6926 } U { x : ( ! 3 + 33 - 2 * 8812 + 8 * 1 * 464 - 4 * 9 * 45699 - 83 < 177140 + 7 & 6 < 306 - 85315 ) & ( 97 = 0 & 338906 * 8278 + 1 - 7 - 425961 * 5 * 90144 - 7 - 497574 = 41651 * 8 - 283028 * 3952 + 493 * 93 - 1 + 491335 - 12 + 693 ) & 6 = 385890 } U { z : 9 - 6 < 74 & ! 1728 + 1 < 6389 } U { x : ( 373 > 5 + 134 & 1 - 1195 > 2759 + 71242 ) } +3 +7 - 5 + 714726 +7 + 148586 +8206 * 32 - 34887 * 3 +{ x : 8170 = 63 * 1 } U { z : ! 65812 * 4 - 75817 - 7881 + 63 * 21028 - 553925 < 6 * 8 } U { y : 8 = 2 - 79387 - 19458 - 3 } U { z : 983437 * 440380 * 1 - 3 * 4 + 9613 * 7 - 820 * 9 * 240465 * 880 * 5 = 8 * 22 * 2 * y & 440 * 8 = 9 + 4 * 11579 + 834008 * 1 * 1 - 7 - 7 + 99 & 1 * 5 * 68 - 3 = 54 * 305 * 356 * 4 * 66402 * 76 - 309416 * 111598 * 838237 } +1 +{ y : 8 = 617 * 5 & 4 + 4 * 995 * 95849 < 3 + 1 * 8 * 4 * 70 - 730753 * 3 - 86 - 50 | 6 < 203 + 7 | 730043 + 1 * 2 + 55009 * 6791 - 518240 > 0 | 4 < 2 } +1874 - 3 +61804 - 2 * 3 + 12 * 9 * ( 0 - 72 + y - 3726 * 9 * 2 + 2 - 54 ) +9 - 3 * 6 * 69 +9 + 1159 - 630985 - 2 +{ y : 151 > 2 | 4 @ { z : 73 = 292 + 96157 + 34285 + 8 - 428 } U { y : ! 22161 * z * 14 > 3 * 5 - 9982 + 9 + 18215 } U { z : 42 + 96196 * 8 * 0 @ { z : ! 4427 + 60940 + 7 * 8 * 5 > 576 * 339835 * 6 } } U { z : 61316 = 8123 } U { y : 6 * 94141 * 1 + 2 * 95 = 5099 + 0 | 68653 @ { z : 3 + 2 + 2 > 47 | 89824 @ { x : 59503 - 903 < 305 - 99 * 84 * 948841 + 7 * y - 3 * 822 * 246766 } U { z : ( 9 + 9005 < 461992 * 15 * 2 + 33 * 6441 & 1103 * 876 @ { x : 0 - 542543 + 5 < 3087 - 9 } ) } & ( ( 2 * 7 * 663357 - 8487 > 4323 + 23562 * 4 * 8 - y * 1102 * 635960 & 6 * 2 + 7 > 30436 - z & 62 + 6044 > 211103 * 82 * 5 - 4 * 563 ) & 8 + 8 > 8 * 5 - 476 + 0 - 88031 ) } U { y : 9477 = 34 | ! 473366 < 0 + 1 * 6 & 914 * 5 * 18033 + 591 + 28 < 1 } U { z : 398 + 6 < 63689 & ( 79106 < 34 ) | 4 @ { y : 3 * 57105 - 352 * 5 = 865263 - 0 + 6 } U { y : y * 646 * 359 + 8 - 59941 * 49437 + 294229 * 49864 < 6 } U { x : 0 = 512268 & ! 4 + 0 * 552738 + 936 = 8 } } U { x : 3 = 46 * 0 * 5 } & 9 + 64 - 69 = 324 - 6 | 7 + 72913 + 7535 = 7 - 76 + 8 & 9 * 2 + 7 * 6 + 388 + 694346 * 827298 + 6 + 673500 + 4 * 8 - 80 = 3 * 11000 - 2 + 734 - ( 40123 ) + 5882 * 44 - 6 - 4 + 244 + 9 } & 7 * 65 > ( 1 + 6 * 7099 ) & 0 + 7 - 4 * 0 - 29337 * 9464 * 5 * 2 + 5 * 5 - 8113 * 3 = 4465 * 9057 - 75127 & 8 > 1 + 465 } +549284 - x +{ z : 944562 + 920664 @ { z : 59685 * 1 * 7 + 4 > 9 * 15 * 2392 * 536585 * 3 * 15 * 853 } U { y : 4 + 707 + ( 9 - 9 - 7 ) * 6107 * 7 * 3240 - 906 > 90 * 442 + 3 & 578 > 2 } | 564 < 3 & ( 0 - 2650 @ { x : 3 * 44 - 3 * 186 > 2 } | 622884 < 5 * 5358 * 19700 + 3 ) | ! 739782 - 6 = ( 5 * 7 ) * 6 & 8 > 961 * 2 & 7 + 0 - 2 * 3 < 95889 * 7 + 70 * 76 - 8 - 45 & ( ( 55 - 0 * 23 < 794 * 558 * 1 + 4648 - 32 + 7 & 583 > 5218 * 2 - 4 * 4 + 0 & 5 < 9 * 5 & 9 - 9 * 42 - 9 - 5 * 40195 * 9 * 0 + 3 * 143675 > 2 * 5 ) ) } U { z : ( ! 31 < 2 * 771973 ) & 8 + 4 = 50 * 0 * 9 - 5600 * 9446 - 486 + 9 * 762 } +65 * ( 916 ) + 2 +6 +4 * 3 - 470083 + 4 +{ y : 314900 - 5075 * 2 + 1616 + 604197 * 57714 > 50 & ( ( 0 + 626409 * 7 ) = 4 | 3 + 8 + 182 + 9511 @ { z : ! 52 + 1 @ { x : 80757 > 44791 + 2 * 927139 - 3 - 8 } U { z : 5 < 7 & 4 * 10 - 43081 + 37647 * 9813 > 6793 } | 5 * 59 > 778657 * 1 - 6 & ( 2075 + 13342 + 5 + 3782 + 126 = 874 * 0 - 406 * 218 + 1 | ! 93131 * 5 + 1 * 9442 + 389 * 6 = 6 * 4 & ! 8 + 2385 @ { z : ! 0 - 2 = 8 & 119 < 76 + 6 + 97 + 9 * 32 * 608571 + 8 - 2 + 0 } | ( 5 > 490 * 643 * 505832 * 4 + 4 * 4 & 8 + 1 - 5 = 1 - 3 ) ) & 7 + 670388 * 7 + 88051 @ { y : 5 @ { y : 3 + 0 * 8 + 5 + 67 * 0 * 12243 - 11 - 7552 + 1 + 1 > 4 * 8212 - 4 - 7 * 7 - 5 } U { y : 555113 * 12 = 647 * 8237 & ! 2 - 48 - 520 + 74131 * 4 @ { z : 9 + 5813 + 55397 * 9 - 772 > 7 & ! 6049 * 42327 * 3490 > 808 - 3 * 3 * 0 & 2 @ { x : 1423 > 6 } U { z : ! 144 * 0 < 7 & 3 < 57 * 9 } U { z : 5 > 628 } | ! 206 - 0 > 8 } } U { z : 7 + 1 * 301 > 1 } U { x : ! 42688 * 465 @ { z : ! 57207 * 1 * 57647 * 24 + 11982 * 0 * 6 + 561656 + 74 + 3 + 8574 + 6 = 7 + 9 } } } & 309510 = 792367 * 441277 } U { y : 3 + 0 > 4 - 53418 & 2 * 4 + 8105 - 4 - 9 - 45 + 9 = 587289 } | ! 57091 + 7316 - 45914 * 0 * 6 = 3 * 3909 & 3 = 7 * 21336 + 497 ) | 0 - 75 = 4 * 55 & 2 < 7 } U { x : 0 > 7 } U { x : 3288 > ( 0 * 2 + 89655 ) } U { y : 783656 * 93 + 1 * 862 * y = 1089 - 53 - 68 } +{ y : 782368 < 5462 & 88344 + 2 - 5 + 3403 + 7 * 4 = z + 938627 - 135101 - 1 } U { x : 8 > 5 * 8521 * 3 * 2 * 5 & 5 - 87 * 0 * 1 > ( 586 - 5 ) * 1282 + 26 * 118136 * 7 * 2726 * 85 & 134 + 35 + 551003 - 8 < 2 } +3 - 0 * 43 - 4 * 4 +{ x : 3 = 2 | ! 2 * 2 + 8 + 9 - 6 + 2 = 5 } U { z : 8 * 2 + 6 - 59 * 9 * 4 + 8 - 0 > 9 & ! 7 + 625475 + 9 * 9 - 0 - 9560 @ { x : 0 = 8 | ! 4 - 1 + 46 = 5137 | 764 * 6 > 6 * 3347 - 15860 * 0 - 31 * 70 - 358615 & 213 > 7 } U { x : 5 > 1 * 83805 & ! 99685 + 3172 * 7 * 6 * 4256 + 3 * 7 - 6 - 785 + 7 * 30607 * 6 - 4899 = 457 + 619 & 483975 * 5 + 3 @ { y : 8136 - 9 * 8 @ { y : 11 - 3 * 2 + 6 * 996058 + 8 - 2 > 30428 } } & 7 < 0 } U { z : ! 3 * 14732 * 12764 - 1 - 843 + 987533 * 3 < 15781 - 0 | 5 * 4 * 5 * 50 = 8715 | ! 2 + 3 < 814584 + 91280 * 9 } U { z : 0 < 180 - 5 * 31 * 4455 * 6 & 4 < 3689 * 48186 + 169094 } U { x : ( 60361 + 4396 * 1 * 8 - 106 - 1 + 9 - 382 * 499579 * 9 * 9 * 433356 > 3 + 82545 & ( 9 - 0 - 0 * 906355 * 3 * 0 + 7 + 73938 - 4243 - 2 @ { z : ( 7 ) = 1 } U { z : 39099 * 87 - 7195 > 204 * 70034 * 0 } ) & ( 21 * 0 = 756 - 16269 + 5 ) ) | 58 - 3984 + 823 - 37463 > 4 } } U { x : 62 + 6 = 808 - 3 + 456 + 33462 * 8 * 6 + 227484 - 7 } U { z : 71032 < z + 2 * 7 & 25 + 522201 + 3 * 3 - 3 < 219483 - 399 - 84 + 1 * 9 - 42 | 4 < 4 } U { x : 3 @ { y : 87027 - 9 - 8 * 5265 < 833 + 131235 - 6471 } & 2 * 8 * 2 < 19529 | 23981 + 43121 * 7 * 200 > 75 } U { z : ! 75 > 828140 * 8 - 13354 | ! 8 > 5 } U { z : 14 - 65369 * 5 = 262499 * 109563 } +497 +7353 +{ z : 7 + 58 - 118 * 3 = 4 | 28 * 372 * 5169 - 1297 * 0 * 78 + 4 - 375663 * 68246 > 63313 * 8 & 3 * 4701 * 863 + 7 < 78500 * 389063 * 5 + 9 } +{ z : 10 * 2 > 7 - 7 | 45203 * 51537 - 54 = 0 + 37 - 474791 * 4 | 1556 * 27 * 5808 + 3518 + 1 * 0 < 59 - 572 * 2 } U { x : 60432 * 300029 > 12207 - 7398 } U { z : ( 64713 * 36517 * 155 * 96 * 7 * 6597 + 80 + 453 * 1 * 2137 ) * 981848 = 40135 - 0 - 835 * 4 - 9 + 1 } +{ y : 797939 - 4 - 292033 * 9 - 9 - 31030 * 900894 < 5877 + 5 * 1 * 46987 & 793 > 4 } U { z : ! 464741 + 826 - 0 * 7908 < 72 } +4763 +5 + 5 * 3 + 850286 * 6 * 3 * 51 - 387 + 961 +28453 - 8 +{ z : ( 215 * 3 * 473 < 2 * 4 * 8 ) & 9 = 95 & 1 + 5 + 8721 - 6 + 1 < 107767 & 466 - 4 * 8 * 13 < 0 - 15 } +2 +6 * 4781 * 8840 - 572 * 8 +466 - 9 +522197 - 727 +72637 - 37 +{ y : 94482 > 23 } U { y : 5 < 76 + 473 | ! 143 @ { x : 904455 = 42 - 0 | ( 6375 > 13 * 8 * 275885 * 3 * 1 ) & ( ! 686338 + 182635 @ { y : 9 * 8499 < 4 * 958 - 6 - 45807 * 129198 * 77964 - 9 * 4 | 91 - 5 - 9 + 9 < 0 - 6 - 25385 * 0 + 48 * 2390 * 7 * 6 + 4 * 2 - 292405 - 0 & 9 > 222299 - 658443 - 9723 - 9723 - 10 * 0 + 5 - 3 + 9 * 37741 * 1 } U { z : ( 820071 ) < 40 * 1 + 835 - y & 77 + 5 > 9 } ) } U { x : 0 * 6 + 8487 < 92148 + 5150 - 3 * 2 } } +{ x : ! 0 * 914 > 5 + 7 + 8 | 3 = 939869 } U { y : 5 < z & 4 * 5 * 8 - 8 > 15 - 95383 & 5619 + 5 * 801257 * 33050 * 175 < 97228 * 553484 - 6 * 7 * 7282 * 4 * 5560 * 828796 + 540727 * 3 - 91 + 56903 - 1 * 26 * 589669 + 4 + 1 | 1 * 5922 = 525 * 8778 + 8 } +{ x : 93561 + 3 < 1 + 2 } U { x : 8 + 9 - 5 > 4 + 929220 - 7 * 8 } U { x : 5122 * 3 * 0 > 52 * 813 } U { y : 21 * 9 = 763291 * 1631 } +{ x : 2 < 3 * 2 } +93 + 6 +{ x : 5 - 39463 + 2 * 2 * 702329 - 9 - 294519 + 3 * 0 + 379 - 55477 = 98993 * 375 } +{ y : 55061 @ { y : ! 780823 * 1 < 230 & 57706 < 106 * 8 } & 9 - 6 * 4 * 281477 * 9 - 3 - 6 > 6 * 0 * 8 - 78732 - 9 * 218 * 594 * 3 } +647 * 9 +{ z : 39 = 4 * 8 } +8210 +{ x : 8 * 6 * 4229 * 0 + 287 - 1 - 6853 = 677213 - 6 - 561 + 834239 - 2627 - 454 } U { z : 6738 * 151 > 7 } U { z : 334 + 7 - 0 + 1 + 61767 * 8017 - 6 + 1 > 3 - 84 & 6 * 32 > 33 } +{ y : 9 * 300366 * 48 < 6 * 9 - 6 - 152 } U { y : 3 * 0 * 80822 - 0 * 12 < 75 & ( 74 = 4 * 5 * 46855 * 0 * 9928 * 23 * 459 * 2 * 912 * 4 * 7 * 799456 - 0 - 0 - 693367 - 222218 * 3 * 54730 * 48 + 205449 + 7925 - 9 | 86 > 5 & 5113 * 1 + 0 - 9 * 0 * 3 * 55 < 9 | 104 + 430216 * 5737 @ { z : 8 - 2 - 14 = 814556 | 40728 < 2 | 56 = 5444 * 7 * 161 * 764131 & 0 - 8 = 66 } & ! 20821 + 6868 * 7 * 272 + y - 79904 * 1204 - 3 = 0 & x = 96700 + 612749 - 2 + 0 + 8 - 90 * 745133 * 4479 * 3 & 7 - 11 - 360 * 2 - 531179 > 8 + 614 ) } U { z : 1 - 43377 < 246566 - 1 * 44 * 5595 + 4 + 6 - 107 - 72681 | ! 130 @ { z : 631994 > 5239 | 5167 + 4 * 638512 * 520396 * 7 < 0 } U { x : 3 * 5 @ { z : ( 3 * 572109 ) * 85 + 3118 @ { z : 233 * 0 @ { z : 205 @ { y : 6 * 6 - 4 * 3 > 9 + 294 - 8 } U { y : ! 275562 = 89124 - 779 + 4 * 2 | 4 > 287 - 6 * 4 - 8957 - 716 * 6 } | 3 > 184562 | 2842 + 7 > 95 * 641936 - 90 + ( 376712 - 3 * 4 ) + 1 + 5 * z * 197503 - 1266 } } U { y : ( 9729 > 1 * x * 64646 ) } U { y : 8 * 8 - 1 * 8 * 56438 - 5 * 7 + 9048 * 629 + 4 > 5 * 674952 } U { x : 8 > 642115 + 92061 & 0 * 40776 - 4 * 60 = 6 * 6 - 8 * 511 - 0 * 865 + 87328 } & 7 + 7 * 706451 > 8 * 939467 - 0 * 300 + 2 - 7 * 5 | ( 855 * 2 * 177107 - 3 * 90 * 958619 * 226 - 4477 * 789733 ) > 39 } | ! 4 = 6 + 25415 * 1875 * 3 } & 9 + 9507 = 1 - 8279 * 347966 & 4 * 981 * 8281 * 8 < 4 * 9 + 55 } +8 * 7 +{ x : 71759 * 4 * 9 * 194804 < 0 & ! 86 - 774110 * 85 + 1 * 3 > 5173 | 3216 * 6532 - 375463 = 2705 } +{ y : 1 < 8 | 32879 + 1 @ { z : 4 < 8 * 959 - 3 * 3030 * 0 + 382 } U { y : 5513 - 6 - 17 = 5 * 271 - 416628 + 12 + 1 | 4894 * 4 * 4364 @ { y : 2 + 71847 - 6276 * 2749 - 56 = ( 1 ) & 9220 * 2 * 38672 < 0 } | ( 5 @ { x : 18 * 7238 > 878363 - 7 | ! 917074 + 3 * 5 @ { y : 6 + 46 > 4 * 6 * 4 - 926 - 9 * 0 * 37023 - 2 | ( 39577 * 231 * 7401 - 3 * 21 * 13049 @ { z : 9482 + 55744 - 5 = 6 - 165 + 6 } & ! 13 > 3622 | 395409 > 7 + 3197 & ! 0 + 826 + 4 * 61434 - 3633 + 63531 + 0 * 8 * 3 + 4681 - 36760 * 1 @ { z : 7 = 846 - 68 + 9 * 11761 * 9 } U { x : 17608 > 5 - 451 - 7 } U { z : ! 6 - 95 + 32 + 5015 < 7 * 7 | 50 * 8987 = 4 - 8764 } U { x : 74925 - 123 * 5 > 0 } ) } U { z : 0 - 214 > 9 + 4 } & 42 < 81 & 4 * 5 * 2 < 2 * 7 * 6 & 72999 * 3 - 2 * 3923 < 0 - 4 - 1 + 3 } U { y : 1575 + 4 + 9 < 0 & 75 + 999 > 2 & ! 8 * 302 < 5 | 8001 - 8 > 1032 * 4660 } & 24000 - 6490 * 6040 * 9 = 2 * 5 + 755738 * 5 * 3 * 6 + 0 * 23406 & ( ! 850 > 839 ) & 71 - 2541 > 8969 * 91 * 0 + 5 * 84 * 1 - 2 & 65255 - 196705 + 59847 * 797701 < 8 - 4 | ! 6 * 4 < 80413 * 4425 * 869329 * 56902 * 6 - 3 ) & 3 + 8 * 8 * 81806 + 33 * 149399 - 3 - 4 * 0 - 9 * 2 > 1 * 312 | 2 * 43795 * 9 @ { z : ! 3 > 4 } } & 47 + 6 > z * 747037 & ( 89 * 95 * 9956 + 5 * 398140 - 8 - 21503 * 8 > 2 + 8 + 62165 * 4 + 6 + 8 - 3 & 481714 + 40503 * 7 - 233386 < 8 ) | 683194 + 4 * 1 * 9765 + 9799 - 53 + 10 * 6 < x + 6 + 8 & ( 1 + 0 @ { y : 1 @ { x : 97 - 1 * 881 < 4 * 1 * 1 & 0 - 5 > 3289 * 9 | 5 + 3 + 6 * 2636 = 51278 * 2559 } U { y : 37 * 324440 - 2 * 936 - 8 + 16766 @ { z : 3 * x + 19 - 16 > 4 - 1909 * 992 * 53 + 53531 - 659 | 2 @ { y : 35651 * 725 < 4 } | 425 + 5 * 45050 + 7 * 4 + 8 + 58455 * 7 * 170 - 80 + 3 < 1880 * 63 * 6 & 7835 < 0 - 9 | ! 64834 * 8 * 2 * 90659 * 9 * 6 @ { z : 2 * 35 - 1 * 6 - 8 = 3 * 3 - 851442 & 20187 * 2088 * 6 + 2 + 9 * ( 8 * 9 - 9 + 11 * 2 * 4 - 5 * 944 + 41739 * 1 * 10469 * 807 * 0 * 0 ) * 734 * 7920 < 3 * 8 + 62 * 5 & 84277 + 3 * 3 - 7 * 9 = 0 - 9594 | ! 57791 + 51 = 2 } U { z : 83 + 8 - 7 < 790214 - 59 - 2 - 1502 } U { z : 239482 * 9 * 680 = 329642 * 53 - 2 - 969 * 1 + 328 } } | 4 + 8 * 8 > 46 + 12691 } U { z : 7 < 1 + 7305 * 7 * 9852 - 8 - 33 + 574623 * 9 } U { x : ! 3 + 89 @ { z : 266 < 35628 + 345 * 3 * 5 * 4 } & 3146 * 3877 - 7 * 4 = 7 } | 61 - 73 - 2 * 9868 * 16497 * 9 > 78 + 0 - 92645 + 0 } ) } +0 + 42 +275 * 901 * 3 - 10599 * 77237 + 69657 +{ y : 859 > 1 } U { z : ! 27379 * 5755 - 0 * 3179 * 9354 > 8 & ! 70083 + 4 * 1 - 3 * 9 * 4235 + 4 + 5426 - 28180 > 2 * 824 } +310070 - 70 - 9 + 2 * 8148 * 4 - 13 * 11004 - 573 +778 +8966 - 312659 - 619 +1 * 4 +7