Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataEntity / System / Data / Common / EntitySql / CqlParser.cs / 3 / CqlParser.cs
//### This file created by BYACC 1.9(/C# extension 0.9) //### C# capabilities added 11 Sep 2000 //### static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; // the current file was generated on 01/26/2008 at 16:59 //#line 2 "CqlGrammar.y" /*#define YYDEBUG*/ /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !! !! ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION !! !! !! !! DO NOT CHANGE THIS FILE (CqlParser.cs) BY HAND!!!! !! !! YOU HAVE BEEN WARNED !!!! !! !! !! !! ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION !! !! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ /*------------------------------------------------------------------------------ // //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] [....] // //---------------------------------------------------------------------------*/ using System; /* ///////////////////////////////////////////////////////////////////////////// This pragma is needed since symbols used for defining precedence are not always code generated by yacc ** ///////////////////////////////////////////////////////////////////////////*/ #pragma warning disable 414 //##################################################################### // namespace: System.Data.Common.EntitySql //##################################################################### namespace System.Data.Common.EntitySql { //##################################################################### // class: CqlParser // does : encapsulates yacc() parser functionality in a C# class //##################################################################### internal partial class CqlParser{ Boolean yydebug; //do I want debug output? static int YYMAJOR = 1; static int YYMINOR = 9; int yynerrs; //number of errors so far int yyerrflag; //was there an error? int yychar; //the current working character //########## MESSAGES ########## //############################################################### // method: debug //############################################################### void debug(String msg) { if (yydebug) Console.WriteLine(msg); } //########## STATE STACK ########## static int YYSTACKSIZE = 500; //maximum stack size int[] statestk; int stateptr; //state stack //############################################################### // methods: state stack push,pop,drop,peek //############################################################### void state_push(int state) { if (stateptr>=YYSTACKSIZE-1) //overflowed? yyerror_stackoverflow(); statestk[++stateptr]=state; } int state_pop() { if (stateptr<0) //underflowed? return -1; return statestk[stateptr--]; } void state_drop(int cnt) { int ptr; ptr=stateptr-cnt; if (ptr<0) return; stateptr = ptr; } int state_peek(int relative) { int ptr; ptr=stateptr-relative; if (ptr<0) return -1; return statestk[ptr]; } //############################################################### // method: init_stacks : allocate and prepare stacks //############################################################### Boolean init_stacks() { statestk = new int[YYSTACKSIZE]; stateptr = -1; val_init(); return true; } //############################################################### // method: dump_stacks : show n levels of the stacks //############################################################### void dump_stacks(int count) { int i; Console.WriteLine("=index==state====value= s:"+stateptr+" v:"+valptr); for (i=0;i=YYSTACKSIZE) return; valstk[++valptr]=val; } object val_pop() { if (valptr<0) return (object)-1; return valstk[valptr--]; } void val_drop(int cnt) { int ptr; ptr=valptr-cnt; if (ptr<0) return; valptr = ptr; } object val_peek(int relative) { int ptr; ptr=valptr-relative; if (ptr<0) return (object)-1; return valstk[ptr]; } //#### end semantic value section #### public static short IDENTIFIER=257; public static short ESCAPED_IDENTIFIER=258; public static short PARAMETER=259; public static short LITERAL=260; public static short ALL=261; public static short AND=262; public static short ANYELEMENT=263; public static short APPLY=264; public static short AS=265; public static short ASC=266; public static short BETWEEN=267; public static short BY=268; public static short CASE=269; public static short CAST=270; public static short COLLATE=271; public static short CROSS=272; public static short CREATEREF=273; public static short DEREF=274; public static short DESC=275; public static short DISTINCT=276; public static short ELEMENT=277; public static short ELSE=278; public static short END=279; public static short EXCEPT=280; public static short EXISTS=281; public static short ESCAPE=282; public static short FLATTEN=283; public static short FROM=284; public static short FULL=285; public static short GROUP=286; public static short HAVING=287; public static short IN=288; public static short INNER=289; public static short INTERSECT=290; public static short IS=291; public static short JOIN=292; public static short KEY=293; public static short LEFT=294; public static short LIKE=295; public static short LIMIT=296; public static short MULTISET=297; public static short NOT=298; public static short OF=299; public static short OFTYPE=300; public static short ON=301; public static short OR=302; public static short ORDER=303; public static short OUTER=304; public static short OVERLAPS=305; public static short ONLY=306; public static short REF=307; public static short RELATIONSHIP=308; public static short RIGHT=309; public static short ROW=310; public static short SELECT=311; public static short SET=312; public static short SKIP=313; public static short THEN=314; public static short TOP=315; public static short TREAT=316; public static short UNION=317; public static short USING=318; public static short VALUE=319; public static short WHEN=320; public static short WHERE=321; public static short WITH=322; public static short COMMA=323; public static short COLON=324; public static short SCOLON=325; public static short DOT=326; public static short EQUAL=327; public static short L_PAREN=328; public static short R_PAREN=329; public static short L_BRACE=330; public static short R_BRACE=331; public static short L_CURLY=332; public static short R_CURLY=333; public static short PLUS=334; public static short MINUS=335; public static short STAR=336; public static short FSLASH=337; public static short PERCENT=338; public static short OP_EQ=339; public static short OP_NEQ=340; public static short OP_LT=341; public static short OP_LE=342; public static short OP_GT=343; public static short OP_GE=344; public static short QMARK=345; public static short NAVIGATE=346; public static short NULL=347; public static short UNARYPLUS=348; public static short UNARYMINUS=349; public static short YYERRCODE=256; static short [] yylhs = { -1, 0, 0, 1, 2, 2, 4, 4, 5, 5, 5, 3, 3, 10, 10, 9, 19, 12, 22, 12, 18, 18, 18, 20, 20, 13, 23, 23, 24, 24, 24, 24, 24, 26, 26, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 14, 14, 30, 15, 15, 31, 16, 16, 33, 32, 17, 17, 36, 34, 37, 37, 38, 38, 35, 35, 39, 39, 40, 40, 40, 42, 42, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 43, 53, 54, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 57, 57, 8, 58, 25, 25, 21, 21, 55, 55, 59, 59, 60, 49, 49, 49, 7, 45, 50, 46, 46, 47, 48, 48, 48, 48, 48, 48, 51, 51, 51, 51, 51, 51, 61, 61, 62, 62, 63, 63, 63, 63, 63, 63, 56, 56, 56, 56, 56, 6, 6, 41, 52, 52, }; static short [] yylen = { 2, 0, 1, 2, 0, 1, 1, 2, 3, 3, 3, 2, 2, 0, 1, 6, 0, 5, 0, 6, 0, 1, 1, 0, 4, 2, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 2, 3, 2, 3, 2, 1, 2, 2, 3, 2, 2, 2, 0, 1, 2, 0, 1, 3, 0, 1, 0, 3, 0, 1, 0, 6, 0, 2, 0, 2, 1, 3, 2, 4, 0, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, 3, 3, 3, 3, 3, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 4, 4, 4, 4, 4, 4, 3, 4, 1, 6, 6, 6, 7, 6, 7, 7, 8, 3, 4, 5, 6, 3, 3, 3, 2, 3, 1, 1, 1, 3, 3, 3, 1, 1, 3, 3, 4, 4, 5, 2, 4, 4, 3, 3, 4, 2, 6, 8, 2, 3, 6, 6, 3, 6, 6, 6, 6, 8, 8, 10, 10, 0, 1, 2, 2, 6, 6, 8, 8, 10, 10, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, }; static short [] yydefred = { 0, 0, 0, 2, 0, 0, 6, 187, 185, 76, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, 0, 186, 75, 78, 80, 81, 82, 83, 84, 85, 86, 87, 0, 0, 117, 135, 137, 0, 3, 0, 0, 136, 0, 0, 0, 7, 0, 0, 0, 0, 0, 154, 0, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 11, 12, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 88, 0, 151, 0, 21, 22, 161, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 30, 32, 0, 0, 49, 111, 0, 0, 0, 145, 0, 0, 112, 110, 113, 150, 0, 153, 0, 0, 149, 114, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 31, 0, 46, 36, 43, 0, 42, 38, 0, 47, 40, 0, 0, 35, 0, 56, 0, 55, 0, 182, 183, 119, 0, 155, 0, 120, 118, 0, 165, 0, 164, 0, 163, 0, 162, 160, 159, 0, 0, 0, 122, 0, 0, 0, 44, 37, 39, 0, 0, 0, 0, 15, 59, 0, 121, 0, 0, 0, 172, 173, 0, 123, 124, 24, 0, 0, 60, 156, 0, 167, 0, 166, 0, 125, 0, 0, 0, 0, 0, 0, 66, 169, 168, 0, 71, 0, 72, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 61, 0, 175, 0, 174, 69, 0, 0, 0, 0, 177, 0, 176, 0, 0, 179, 178, }; static short [] yydgoto = { 2, 3, 4, 79, 5, 6, 55, 56, 57, 58, 120, 36, 60, 122, 192, 245, 290, 325, 149, 116, 227, 138, 117, 186, 187, 188, 189, 190, 241, 242, 193, 246, 291, 323, 326, 353, 348, 364, 371, 354, 361, 37, 81, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 252, 51, 52, 64, 128, 306, 307, 332, }; static short [] yysindex = { -310, 3546, 0, 0, 2931, -310, 0, 0, 0, 0, 0, -319, -258, -216, -182, -176, -171, -145, -141, -176, -140, 3546, -123, -100, -95, -79, -77, 2931, 3546, 3546, 3546, -62, 0, -157, -89, -229, 5009, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 6, 0, 0, 0, 0, 0, -52, -49, 0, -45, 4019, 5, 0, 2931, 3546, -242, 3546, 3546, 0, 2931, 2931, 2931, 0, 3546, 5403, 3546, 3546, 3546, 2931, 3546, -44, 5009, -209, -40, -40, 3546, 0, -249, 0, -241, 0, 3546, 3546, 3546, 3546, 3546, -277, 3546, -177, 3546, 3546, 3010, 2, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, -245, -25, 0, 0, 0, 3613, -18, -23, 4085, 3546, 0, 3546, 30, 4151, 4217, -21, -17, -14, -300, 4283, 4349, 4415, -283, 0, -13, 4481, 0, 3546, 0, 4547, 0, 0, 0, 2931, 0, 2931, 5403, 5338, 5565, 5499, 5612, -280, -10, 0, 5431, 3546, 3546, 3546, 5273, 5537, 3546, 5593, 0, 2914, -178, -178, -40, -40, -40, 2914, 2914, -92, -92, -92, -92, 5403, 5403, -4, -245, 3077, 31, -37, 0, 0, 0, 3546, 33, 0, 0, 3546, 5009, 4613, 0, 3546, 3546, 0, 0, 0, 0, 3144, 0, 2, 3546, 0, 0, 3546, 5009, 3546, 24, -274, 40, -236, 55, 0, 3211, 3546, 5338, 5499, 5471, 5593, 57, 3546, -4, 3887, -37, 58, 66, 3613, -226, -279, 42, 0, -232, 96, -227, 3613, 3613, 5009, 94, 110, 0, 5009, 3546, -253, -252, 0, 72, 3953, 3546, 77, 0, 0, 80, -129, -126, 88, 88, 88, 88, 3278, 3546, 82, 5499, 3546, 3546, 89, 3546, 0, 0, -37, 0, 0, 0, 121, 0, 0, 124, 0, 0, 125, 120, 0, 3546, 0, 122, 0, 5009, 0, 0, 0, 3546, 0, 101, 0, 0, 2, 0, 2, 0, 115, 0, 115, 0, 0, 0, 3546, 102, 103, 0, 5499, 4679, 89, 0, 0, 0, 3546, 89, 3546, 165, 0, 0, 106, 0, -153, -116, 108, 0, 0, 111, 0, 0, 0, 5009, 5009, 0, 0, 2, 0, 2, 0, 3546, 0, 3546, 112, 117, 4745, 3821, -197, 0, 0, 0, 3546, 0, 177, 0, 0, 3546, 3546, 141, -98, -54, -212, 5009, 0, 3546, 0, 2, 0, 2, 0, 0, 5009, -114, -106, 2, 0, 2, 0, 118, 119, 0, 0, }; static short [] yyrindex = { 145, 0, 0, 0, 0, 3345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5075, 5141, 5207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2864, 0, 222, 305, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2410, 0, 0, 0, 0, 0, 0, -168, 0, 554, 637, 0, 0, 3412, 0, 3412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3479, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2480, 187, 1851, 2134, 1428, 0, 0, 0, 2274, 0, 0, 0, 2686, 1921, 0, 1711, 0, 1498, 969, 1052, 720, 803, 886, 1568, 1638, 1135, 1205, 1275, 1345, 2550, 2620, 3680, 3479, 0, 10, 1, 0, 0, 0, 0, 64, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 2204, 2344, 1781, 0, 0, 3680, -108, 0, -31, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 11, 0, -234, 0, 4811, 4877, 4943, 0, 0, 0, 0, 0, 0, 0, 5075, 5141, 388, 388, 388, 388, 0, 0, 0, 1994, 0, 0, 169, 0, 0, 0, 4, 0, 0, 0, 3747, 0, 0, 0, 0, 0, 0, 2807, 0, 0, 0, 17, 0, -231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 471, 0, 0, 0, 0, 0, 0, 0, 2064, 0, 170, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2777, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 5075, 5141, 32, 69, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; static short [] yygindex = { 0, 0, 0, 105, 0, 453, -1, 27, 458, 67, 402, 29, 0, 0, 0, 0, 0, 0, -74, 0, 234, -220, 0, 0, -159, -61, 278, 279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 98, 107, -70, 134, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 20, 0, 161, }; static int YYTABLESIZE=5956; static short[] yytable = { 33, 26, 134, 13, 27, 293, 294, 271, 1, 62, 25, 54, 146, 278, 151, 139, 146, 58, 251, 218, 146, 157, 158, 143, 251, 279, 230, 147, 34, 204, 251, 147, 70, 59, 48, 147, 125, 126, 276, 251, 208, 57, 183, 64, 146, 146, 209, 147, 147, 143, 73, 65, 317, 62, 358, 262, 59, 80, 82, 83, 281, 50, 63, 360, 51, 284, 277, 219, 322, 63, 159, 53, 282, 251, 275, 86, 88, 285, 127, 215, 148, 217, 286, 287, 251, 251, 146, 143, 150, 147, 161, 59, 124, 264, 129, 130, 89, 59, 59, 59, 168, 80, 255, 135, 136, 137, 59, 141, 258, 54, 228, 162, 65, 145, 143, 251, 362, 267, 163, 152, 153, 154, 155, 156, 144, 160, 363, 164, 165, 167, 251, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 1, 66, 257, 101, 67, 137, 298, 27, 71, 196, 73, 197, 68, 105, 106, 107, 73, 312, 313, 141, 73, 139, 123, 85, 114, 342, 86, 212, 131, 132, 133, 343, 141, 80, 74, 80, 141, 140, 69, 141, 74, 141, 70, 72, 74, 222, 223, 224, 327, 301, 225, 141, 303, 249, 86, 302, 141, 88, 304, 249, 74, 256, 344, 334, 380, 249, 139, 259, 345, 229, 381, 214, 382, 216, 249, 243, 13, 77, 383, 247, 372, 250, 139, 75, 253, 86, 373, 250, 76, 101, 234, 87, 137, 250, 88, 260, 30, 103, 104, 105, 106, 107, 250, 235, 77, 268, 78, 236, 249, 30, 237, 137, 238, 30, 7, 8, 30, 137, 30, 249, 249, 84, 239, 115, 374, 137, 137, 240, 30, 88, 375, 86, 292, 30, 88, 118, 250, 308, 309, 310, 142, 101, 26, 26, 121, 27, 27, 250, 250, 184, 249, 25, 25, 315, 316, 329, 137, 330, 191, 26, 79, 194, 27, 201, 198, 249, 226, 202, 25, 54, 203, 210, 137, 220, 244, 48, 48, 26, 250, 26, 27, 26, 27, 70, 27, 26, 25, 13, 27, 280, 25, 54, 48, 250, 25, 54, 349, 58, 350, 57, 70, 58, 50, 50, 62, 338, 51, 339, 261, 233, 70, 365, 70, 53, 48, 283, 70, 288, 48, 50, 63, 57, 51, 64, 263, 57, 378, 64, 379, 53, 351, 65, 352, 62, 384, 65, 385, 62, 265, 366, 270, 50, 273, 170, 51, 50, 368, 352, 51, 63, 274, 53, 289, 63, 377, 53, 295, 4, 4, 4, 4, 299, 32, 4, 300, 305, 314, 208, 318, 4, 4, 319, 320, 4, 4, 32, 321, 4, 331, 32, 324, 4, 32, 4, 32, 328, 335, 336, 340, 7, 341, 346, 370, 4, 32, 347, 355, 4, 4, 32, 4, 356, 386, 387, 89, 148, 90, 4, 17, 19, 4, 4, 4, 61, 35, 119, 4, 272, 231, 232, 376, 367, 369, 333, 0, 0, 171, 0, 4, 0, 0, 0, 4, 0, 4, 4, 0, 0, 0, 77, 0, 0, 77, 77, 77, 0, 4, 4, 77, 77, 0, 0, 77, 0, 0, 77, 77, 77, 0, 77, 0, 77, 77, 77, 77, 77, 77, 77, 77, 77, 0, 77, 77, 77, 0, 77, 0, 0, 77, 77, 77, 77, 77, 0, 0, 0, 77, 0, 0, 0, 77, 77, 0, 0, 77, 0, 0, 77, 77, 0, 77, 0, 77, 77, 77, 0, 77, 0, 0, 97, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 79, 0, 0, 79, 79, 79, 0, 0, 0, 79, 79, 0, 0, 79, 0, 0, 79, 79, 79, 0, 79, 0, 79, 79, 79, 79, 79, 79, 79, 79, 79, 0, 79, 79, 79, 0, 79, 0, 0, 79, 79, 79, 79, 79, 0, 0, 0, 79, 0, 0, 0, 79, 79, 0, 0, 79, 0, 0, 79, 79, 0, 79, 0, 79, 79, 79, 0, 79, 0, 0, 96, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 170, 0, 0, 170, 170, 170, 0, 0, 0, 170, 170, 0, 0, 170, 0, 0, 170, 170, 170, 0, 170, 0, 170, 170, 170, 170, 170, 170, 170, 170, 170, 0, 170, 170, 170, 0, 170, 0, 0, 170, 170, 170, 170, 170, 0, 0, 0, 170, 0, 0, 0, 170, 170, 0, 0, 170, 0, 0, 170, 170, 0, 170, 0, 170, 170, 170, 0, 170, 0, 0, 93, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 171, 0, 0, 171, 171, 171, 0, 0, 0, 171, 171, 0, 0, 171, 0, 0, 171, 171, 171, 0, 171, 0, 171, 171, 171, 171, 171, 171, 171, 171, 171, 0, 171, 171, 171, 0, 171, 0, 0, 171, 171, 171, 171, 171, 0, 0, 0, 171, 0, 0, 0, 171, 171, 0, 0, 171, 0, 0, 171, 171, 0, 171, 0, 171, 171, 171, 0, 171, 0, 0, 94, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 97, 0, 0, 97, 97, 97, 0, 0, 0, 97, 97, 0, 0, 97, 0, 0, 97, 97, 97, 0, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 0, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 0, 0, 0, 97, 97, 0, 0, 97, 0, 0, 97, 97, 0, 97, 0, 97, 0, 97, 0, 97, 0, 0, 95, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 96, 0, 0, 96, 96, 96, 0, 0, 0, 96, 96, 0, 0, 96, 0, 0, 96, 96, 96, 0, 96, 0, 96, 96, 96, 96, 96, 96, 96, 96, 96, 0, 96, 96, 96, 0, 96, 0, 0, 96, 96, 96, 96, 96, 0, 0, 0, 96, 0, 0, 0, 96, 96, 0, 0, 96, 0, 0, 96, 96, 0, 96, 0, 96, 0, 96, 0, 96, 0, 0, 91, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 93, 0, 0, 93, 93, 93, 0, 0, 0, 93, 93, 0, 0, 93, 0, 0, 93, 93, 93, 0, 93, 0, 93, 93, 93, 93, 93, 93, 93, 93, 93, 0, 93, 93, 93, 0, 93, 0, 0, 93, 93, 93, 93, 93, 0, 0, 0, 93, 0, 0, 0, 93, 93, 0, 0, 93, 0, 0, 93, 93, 0, 93, 0, 93, 0, 93, 0, 93, 0, 0, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 94, 0, 0, 94, 94, 94, 0, 0, 0, 94, 94, 0, 0, 94, 0, 0, 94, 94, 94, 0, 94, 0, 94, 94, 94, 94, 94, 94, 94, 94, 94, 0, 94, 94, 94, 0, 94, 0, 0, 94, 94, 94, 94, 94, 0, 0, 0, 94, 0, 0, 0, 94, 94, 0, 0, 94, 0, 0, 94, 94, 0, 94, 0, 94, 0, 94, 0, 94, 0, 0, 101, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 95, 0, 0, 95, 95, 95, 0, 0, 0, 95, 95, 0, 0, 95, 0, 0, 95, 95, 95, 0, 95, 0, 95, 95, 95, 95, 95, 95, 95, 95, 95, 0, 95, 95, 95, 0, 95, 0, 0, 95, 95, 95, 95, 95, 0, 0, 0, 95, 0, 0, 0, 95, 95, 0, 0, 95, 0, 102, 95, 95, 0, 95, 0, 95, 0, 95, 0, 95, 0, 0, 0, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 91, 0, 0, 91, 91, 91, 0, 0, 0, 91, 91, 0, 0, 91, 0, 0, 91, 91, 91, 0, 91, 0, 91, 91, 91, 91, 91, 91, 91, 91, 91, 0, 91, 91, 91, 0, 91, 0, 0, 91, 91, 91, 91, 91, 99, 0, 0, 91, 0, 0, 0, 91, 91, 0, 0, 91, 0, 0, 91, 91, 0, 91, 0, 91, 0, 91, 0, 91, 0, 0, 0, 91, 91, 91, 0, 0, 0, 91, 91, 91, 91, 91, 91, 92, 0, 0, 92, 92, 92, 0, 0, 0, 92, 92, 0, 0, 92, 0, 0, 92, 92, 92, 0, 92, 0, 92, 92, 92, 92, 92, 92, 92, 92, 92, 100, 92, 92, 92, 0, 92, 0, 0, 92, 92, 92, 92, 92, 0, 0, 0, 92, 0, 0, 0, 92, 92, 0, 0, 92, 0, 0, 92, 92, 0, 92, 0, 92, 0, 92, 0, 92, 0, 0, 0, 92, 92, 92, 0, 0, 0, 92, 92, 92, 92, 92, 92, 101, 0, 0, 101, 101, 101, 0, 0, 0, 101, 101, 0, 0, 101, 0, 0, 101, 101, 101, 0, 101, 0, 101, 101, 101, 101, 101, 101, 101, 101, 101, 103, 101, 101, 101, 0, 101, 0, 0, 101, 101, 101, 101, 101, 0, 0, 0, 101, 0, 0, 0, 101, 101, 0, 0, 101, 0, 0, 101, 101, 0, 101, 0, 101, 0, 101, 0, 101, 0, 0, 102, 101, 0, 102, 102, 102, 0, 101, 101, 102, 102, 0, 0, 102, 0, 0, 102, 102, 102, 0, 102, 0, 102, 102, 102, 102, 102, 102, 102, 102, 102, 138, 102, 102, 102, 0, 102, 0, 0, 102, 102, 102, 102, 102, 0, 0, 0, 102, 0, 0, 0, 102, 102, 0, 0, 102, 0, 0, 102, 102, 0, 102, 0, 102, 0, 102, 0, 102, 0, 0, 99, 102, 0, 99, 99, 99, 0, 102, 102, 99, 99, 0, 0, 99, 0, 0, 99, 99, 99, 0, 99, 0, 99, 99, 99, 99, 99, 99, 99, 99, 99, 139, 99, 99, 99, 0, 99, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0, 99, 0, 0, 0, 99, 99, 0, 0, 99, 0, 0, 99, 99, 0, 99, 0, 99, 0, 99, 0, 99, 0, 0, 100, 99, 0, 100, 100, 100, 0, 99, 99, 100, 100, 0, 0, 100, 0, 0, 100, 100, 100, 0, 100, 0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 98, 100, 100, 100, 0, 100, 0, 0, 100, 100, 100, 100, 100, 0, 0, 0, 100, 0, 0, 0, 100, 100, 0, 0, 100, 0, 0, 100, 100, 0, 100, 0, 100, 0, 100, 0, 100, 0, 0, 0, 100, 0, 0, 0, 0, 0, 100, 100, 0, 0, 0, 0, 103, 0, 0, 103, 103, 103, 0, 0, 0, 103, 103, 0, 0, 103, 0, 0, 103, 103, 103, 0, 103, 104, 103, 103, 103, 103, 103, 103, 103, 103, 103, 0, 103, 103, 103, 0, 103, 0, 0, 103, 103, 103, 103, 103, 0, 0, 0, 103, 0, 0, 0, 103, 103, 0, 0, 103, 0, 0, 103, 103, 0, 103, 0, 103, 0, 0, 0, 103, 0, 0, 138, 103, 0, 138, 138, 138, 0, 0, 0, 138, 138, 0, 0, 138, 0, 0, 138, 138, 138, 0, 138, 105, 138, 138, 138, 138, 138, 138, 138, 138, 138, 0, 138, 138, 138, 0, 138, 0, 0, 138, 138, 138, 138, 138, 0, 0, 0, 138, 0, 0, 0, 138, 138, 0, 0, 138, 0, 0, 138, 138, 0, 138, 0, 138, 0, 0, 0, 138, 0, 0, 139, 138, 0, 139, 139, 139, 0, 0, 0, 139, 139, 0, 0, 139, 0, 0, 139, 139, 139, 0, 139, 106, 139, 139, 139, 139, 139, 139, 139, 139, 139, 0, 139, 139, 139, 0, 139, 0, 0, 139, 139, 139, 139, 139, 0, 0, 0, 139, 0, 0, 0, 139, 139, 0, 0, 139, 0, 0, 139, 139, 0, 139, 0, 139, 0, 0, 0, 139, 0, 0, 98, 139, 0, 98, 98, 98, 0, 0, 0, 98, 98, 0, 0, 98, 0, 0, 98, 98, 98, 0, 98, 107, 98, 98, 98, 98, 98, 98, 98, 98, 98, 0, 98, 98, 98, 0, 98, 0, 0, 98, 98, 98, 98, 98, 0, 0, 0, 98, 0, 0, 0, 98, 98, 0, 0, 98, 0, 0, 98, 98, 0, 98, 0, 98, 0, 0, 0, 98, 0, 0, 0, 98, 0, 104, 0, 0, 104, 104, 104, 0, 0, 0, 104, 104, 0, 0, 104, 0, 0, 104, 104, 104, 0, 104, 128, 104, 104, 104, 104, 104, 104, 0, 104, 104, 0, 104, 104, 104, 0, 104, 0, 0, 104, 104, 104, 104, 104, 0, 0, 0, 104, 0, 0, 0, 104, 104, 0, 0, 104, 0, 0, 104, 104, 0, 104, 0, 104, 0, 0, 0, 104, 0, 0, 105, 104, 0, 105, 105, 105, 0, 0, 0, 105, 105, 0, 0, 105, 0, 0, 105, 105, 105, 0, 105, 129, 105, 105, 105, 105, 105, 105, 0, 105, 105, 0, 105, 105, 105, 0, 105, 0, 0, 105, 105, 105, 105, 105, 0, 0, 0, 105, 0, 0, 0, 105, 105, 0, 0, 105, 0, 0, 105, 105, 0, 105, 0, 105, 0, 0, 0, 105, 0, 0, 106, 105, 0, 106, 106, 106, 0, 0, 0, 106, 106, 0, 0, 106, 0, 0, 106, 106, 106, 0, 106, 108, 106, 106, 106, 106, 106, 106, 0, 106, 106, 0, 106, 106, 106, 0, 106, 0, 0, 106, 106, 106, 106, 106, 0, 0, 0, 106, 0, 0, 0, 106, 106, 0, 0, 0, 0, 0, 106, 106, 0, 106, 0, 106, 0, 0, 0, 106, 0, 0, 107, 106, 0, 107, 107, 107, 0, 0, 0, 107, 107, 0, 0, 107, 0, 0, 107, 107, 0, 0, 107, 109, 107, 107, 107, 107, 107, 107, 0, 107, 107, 0, 107, 107, 107, 0, 107, 0, 0, 107, 107, 107, 107, 107, 0, 0, 0, 107, 0, 0, 0, 107, 107, 0, 0, 0, 0, 0, 107, 107, 0, 107, 0, 107, 0, 0, 0, 107, 0, 0, 0, 107, 0, 128, 0, 0, 128, 128, 128, 0, 0, 0, 128, 128, 0, 0, 128, 0, 0, 128, 128, 126, 0, 128, 0, 128, 128, 128, 128, 128, 128, 0, 128, 128, 0, 128, 128, 128, 0, 128, 0, 0, 128, 128, 128, 128, 0, 0, 0, 0, 128, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 128, 128, 0, 128, 0, 128, 0, 0, 0, 128, 0, 0, 129, 128, 0, 129, 129, 129, 0, 0, 0, 129, 129, 0, 0, 129, 0, 0, 129, 129, 127, 0, 129, 0, 129, 129, 129, 129, 129, 129, 0, 129, 129, 0, 129, 129, 129, 0, 129, 0, 0, 129, 129, 129, 129, 0, 0, 0, 0, 129, 0, 0, 0, 129, 129, 0, 0, 0, 0, 0, 129, 129, 0, 129, 0, 129, 0, 0, 0, 129, 0, 0, 108, 129, 0, 108, 108, 108, 0, 0, 0, 108, 108, 0, 0, 108, 133, 0, 108, 108, 0, 0, 108, 0, 108, 108, 108, 108, 0, 108, 0, 108, 108, 0, 108, 0, 108, 0, 108, 0, 0, 108, 108, 108, 108, 0, 0, 0, 0, 108, 0, 0, 0, 108, 108, 0, 0, 0, 0, 0, 108, 108, 0, 108, 0, 108, 0, 0, 0, 108, 0, 0, 109, 108, 0, 109, 109, 109, 0, 0, 0, 109, 109, 0, 0, 109, 134, 0, 109, 109, 0, 0, 109, 0, 109, 109, 109, 109, 0, 109, 0, 109, 109, 0, 109, 0, 109, 0, 109, 0, 0, 109, 109, 109, 109, 0, 0, 0, 0, 109, 0, 0, 0, 109, 109, 0, 0, 0, 0, 0, 109, 109, 0, 109, 0, 109, 0, 0, 0, 109, 0, 0, 126, 109, 0, 126, 126, 126, 0, 0, 0, 126, 126, 0, 0, 126, 130, 0, 126, 126, 0, 0, 0, 0, 126, 126, 126, 126, 0, 126, 0, 126, 126, 0, 126, 0, 126, 0, 126, 0, 0, 126, 126, 126, 126, 0, 0, 0, 0, 126, 0, 0, 0, 126, 126, 0, 0, 0, 0, 0, 126, 126, 0, 126, 0, 126, 0, 0, 0, 126, 0, 0, 127, 126, 0, 127, 127, 127, 0, 0, 0, 127, 127, 0, 0, 127, 131, 0, 127, 127, 0, 0, 0, 0, 127, 127, 127, 127, 0, 127, 0, 127, 127, 0, 127, 0, 127, 0, 127, 0, 0, 127, 127, 127, 127, 0, 0, 0, 0, 127, 0, 0, 0, 127, 127, 0, 0, 0, 0, 0, 127, 127, 0, 127, 0, 127, 0, 0, 133, 127, 0, 133, 133, 127, 0, 0, 0, 133, 133, 0, 0, 133, 132, 0, 133, 133, 0, 0, 133, 0, 133, 133, 133, 133, 0, 133, 0, 0, 133, 0, 133, 0, 133, 0, 0, 0, 0, 133, 133, 133, 133, 0, 0, 0, 0, 133, 0, 0, 0, 133, 133, 0, 0, 0, 0, 0, 133, 133, 0, 133, 0, 133, 141, 0, 0, 133, 0, 0, 134, 133, 0, 134, 134, 0, 0, 0, 0, 134, 134, 0, 0, 134, 0, 0, 134, 134, 0, 0, 134, 0, 134, 134, 134, 134, 0, 134, 0, 0, 134, 0, 134, 0, 134, 34, 0, 0, 0, 134, 134, 134, 134, 0, 0, 0, 0, 134, 0, 0, 0, 134, 134, 0, 0, 0, 0, 0, 134, 134, 0, 134, 0, 134, 0, 33, 0, 134, 0, 0, 130, 134, 0, 130, 130, 0, 0, 0, 0, 130, 130, 0, 0, 130, 0, 0, 130, 130, 0, 0, 130, 0, 130, 130, 130, 130, 0, 130, 0, 0, 130, 0, 130, 0, 130, 0, 0, 0, 0, 130, 130, 130, 130, 0, 0, 0, 0, 130, 0, 0, 0, 130, 130, 0, 0, 0, 0, 0, 130, 130, 0, 130, 0, 130, 0, 0, 0, 130, 0, 0, 131, 130, 0, 131, 131, 0, 0, 0, 0, 131, 131, 0, 0, 131, 0, 0, 131, 131, 0, 0, 131, 0, 131, 131, 131, 131, 0, 131, 0, 0, 131, 0, 131, 0, 131, 0, 0, 0, 0, 131, 131, 131, 131, 0, 0, 0, 0, 131, 0, 0, 0, 131, 131, 0, 0, 0, 0, 0, 131, 131, 0, 131, 0, 131, 0, 0, 0, 131, 0, 132, 132, 131, 0, 0, 0, 132, 132, 0, 0, 132, 0, 0, 132, 132, 0, 0, 132, 0, 132, 132, 132, 132, 0, 132, 0, 0, 132, 0, 132, 0, 132, 0, 0, 0, 0, 132, 132, 132, 132, 0, 0, 0, 0, 132, 0, 0, 0, 132, 132, 0, 0, 0, 0, 0, 132, 132, 141, 132, 0, 132, 0, 0, 0, 132, 0, 0, 0, 132, 141, 141, 141, 141, 0, 141, 0, 0, 141, 0, 141, 0, 0, 0, 0, 0, 0, 141, 0, 141, 141, 0, 0, 0, 0, 141, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 141, 0, 141, 0, 141, 34, 34, 34, 141, 34, 0, 0, 34, 0, 34, 0, 0, 0, 0, 0, 0, 34, 33, 34, 34, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 33, 33, 33, 0, 33, 0, 34, 33, 34, 33, 34, 0, 0, 0, 34, 0, 0, 0, 33, 33, 0, 0, 0, 0, 33, 0, 0, 0, 0, 16, 16, 16, 16, 16, 0, 16, 33, 0, 33, 0, 33, 16, 16, 0, 33, 16, 16, 0, 16, 16, 0, 0, 0, 16, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 16, 0, 16, 0, 0, 0, 0, 0, 0, 16, 0, 0, 16, 0, 16, 0, 0, 16, 16, 0, 0, 18, 0, 0, 0, 0, 7, 8, 9, 10, 16, 0, 11, 0, 16, 0, 16, 16, 12, 13, 0, 0, 14, 15, 0, 0, 16, 0, 16, 16, 17, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 20, 21, 0, 22, 0, 0, 0, 0, 0, 0, 23, 0, 101, 24, 53, 25, 0, 0, 0, 26, 103, 104, 105, 106, 107, 0, 0, 110, 111, 112, 113, 27, 0, 0, 0, 28, 0, 29, 30, 7, 8, 9, 10, 166, 0, 11, 0, 0, 0, 31, 32, 12, 13, 0, 0, 14, 15, 0, 0, 16, 0, 0, 0, 17, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 20, 21, 0, 22, 0, 0, 0, 0, 0, 0, 23, 0, 0, 24, 0, 25, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 27, 0, 11, 0, 28, 0, 29, 30, 12, 13, 0, 0, 14, 15, 0, 0, 16, 0, 31, 32, 17, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 20, 21, 0, 22, 0, 0, 0, 0, 0, 0, 23, 0, 0, 24, 53, 25, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 185, 0, 11, 0, 28, 0, 29, 30, 12, 13, 0, 0, 14, 15, 0, 0, 16, 0, 31, 32, 17, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 20, 21, 0, 22, 0, 0, 0, 0, 0, 254, 23, 0, 0, 24, 0, 25, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 27, 0, 11, 0, 28, 0, 29, 30, 12, 13, 0, 0, 14, 15, 0, 0, 16, 0, 31, 32, 17, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 20, 21, 0, 22, 0, 0, 0, 0, 0, 266, 23, 0, 0, 24, 0, 25, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 27, 0, 11, 0, 28, 0, 29, 30, 12, 13, 0, 0, 14, 15, 0, 0, 16, 0, 31, 32, 17, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 20, 21, 0, 22, 0, 0, 0, 0, 0, 311, 23, 0, 0, 24, 0, 25, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 27, 0, 5, 0, 28, 0, 29, 30, 5, 5, 0, 0, 5, 5, 0, 0, 5, 0, 31, 32, 5, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 5, 0, 5, 0, 0, 0, 0, 0, 0, 5, 0, 0, 5, 5, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 20, 20, 20, 20, 5, 0, 20, 0, 5, 0, 5, 5, 20, 20, 0, 0, 20, 20, 0, 0, 20, 0, 5, 5, 20, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 20, 20, 0, 20, 0, 0, 0, 0, 0, 0, 20, 0, 0, 20, 20, 20, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 20, 20, 20, 20, 20, 0, 20, 0, 20, 0, 20, 20, 20, 20, 0, 0, 20, 20, 0, 0, 20, 0, 20, 20, 20, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 20, 20, 0, 20, 0, 0, 0, 0, 0, 0, 20, 0, 0, 20, 0, 20, 0, 0, 20, 20, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 20, 0, 11, 0, 20, 0, 20, 20, 12, 13, 0, 0, 14, 15, 0, 0, 16, 0, 20, 20, 17, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 20, 21, 0, 22, 0, 0, 0, 0, 0, 0, 23, 0, 0, 24, 0, 25, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 27, 0, 11, 0, 28, 0, 29, 30, 12, 13, 0, 0, 14, 15, 0, 0, 16, 0, 31, 32, 17, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 20, 21, 0, 22, 0, 0, 0, 0, 0, 0, 23, 0, 0, 24, 0, 25, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 185, 0, 23, 0, 28, 0, 29, 30, 23, 23, 0, 0, 23, 23, 0, 0, 23, 0, 31, 32, 23, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 23, 23, 0, 23, 0, 0, 0, 0, 0, 0, 23, 0, 0, 23, 0, 23, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 45, 45, 45, 45, 23, 0, 45, 0, 23, 0, 23, 23, 45, 45, 0, 0, 45, 45, 0, 0, 45, 0, 23, 23, 45, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 45, 45, 0, 45, 0, 0, 0, 0, 0, 0, 45, 0, 0, 45, 0, 45, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 45, 0, 45, 45, 90, 0, 0, 0, 358, 91, 0, 0, 0, 359, 45, 45, 0, 360, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 90, 0, 0, 207, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 118, 101, 102, 90, 0, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 296, 0, 0, 101, 102, 90, 297, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 118, 101, 102, 90, 0, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 90, 0, 0, 199, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 90, 0, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 200, 0, 0, 101, 102, 90, 0, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 205, 0, 0, 101, 102, 90, 0, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 90, 206, 0, 207, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 90, 0, 0, 211, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 90, 0, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 213, 0, 0, 101, 102, 90, 0, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 248, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 90, 0, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 90, 337, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 357, 0, 0, 101, 102, 77, 0, 0, 0, 0, 77, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 77, 0, 0, 0, 0, 0, 0, 0, 77, 0, 77, 77, 0, 0, 0, 77, 0, 0, 77, 0, 0, 0, 77, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 77, 77, 79, 180, 0, 0, 0, 79, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 0, 79, 0, 0, 0, 0, 0, 0, 0, 79, 0, 79, 79, 0, 0, 0, 79, 0, 0, 79, 0, 0, 0, 79, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 79, 79, 83, 181, 0, 0, 0, 83, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 0, 83, 0, 0, 0, 0, 0, 0, 0, 83, 0, 83, 83, 0, 0, 0, 83, 0, 0, 83, 0, 0, 0, 83, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 83, 83, 90, 184, 0, 0, 0, 91, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 77, 0, 0, 0, 0, 77, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 77, 0, 0, 0, 0, 0, 0, 0, 77, 0, 77, 77, 0, 0, 0, 77, 0, 0, 77, 0, 0, 0, 77, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 77, 77, 79, 0, 0, 0, 0, 79, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 0, 79, 0, 0, 0, 0, 0, 0, 0, 79, 0, 79, 79, 0, 0, 0, 79, 0, 0, 79, 0, 0, 0, 79, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 79, 79, 136, 0, 0, 0, 0, 136, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 0, 136, 0, 0, 0, 0, 0, 0, 0, 136, 0, 136, 136, 0, 0, 0, 136, 0, 0, 136, 0, 0, 0, 136, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 136, 136, 90, 0, 0, 0, 0, 91, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, 0, 0, 0, 91, 0, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, 0, 0, 0, 91, 0, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 0, 0, 0, 99, 0, 0, 92, 0, 221, 0, 0, 0, 0, 0, 0, 100, 94, 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, 0, 0, 0, 0, 99, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 100, 0, 0, 92, 0, 269, 0, 0, 0, 101, 102, 0, 0, 94, 0, 0, 0, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 99, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 100, 94, 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, 0, 0, 0, 0, 99, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 100, 92, 0, 0, 0, 0, 0, 0, 0, 101, 102, 94, 0, 0, 0, 0, 0, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 94, 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, 0, 0, 0, 0, 0, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 100, 94, 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, 0, 0, 0, 0, 0, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, 0, 0, 0, 0, 0, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 101, 102, 0, 0, 0, 0, 0, 0, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, }; static short [] yycheck = { 1, 0, 72, 0, 0, 258, 258, 227, 318, 328, 0, 0, 261, 292, 88, 76, 261, 0, 199, 299, 261, 298, 299, 323, 205, 304, 185, 276, 1, 329, 211, 276, 0, 4, 0, 276, 278, 279, 264, 220, 323, 0, 116, 0, 278, 279, 329, 278, 279, 323, 21, 0, 272, 0, 266, 329, 27, 28, 29, 30, 292, 0, 320, 275, 0, 292, 292, 347, 288, 0, 347, 0, 304, 254, 233, 328, 328, 304, 320, 149, 329, 151, 241, 242, 265, 266, 320, 323, 329, 320, 267, 62, 63, 329, 65, 66, 325, 68, 69, 70, 101, 72, 205, 74, 75, 76, 77, 78, 211, 4, 184, 288, 328, 84, 323, 296, 313, 220, 295, 90, 91, 92, 93, 94, 333, 96, 323, 98, 99, 100, 311, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 0, 328, 208, 326, 15, 121, 254, 328, 19, 125, 323, 127, 328, 336, 337, 338, 329, 265, 266, 272, 333, 227, 62, 325, 262, 323, 328, 143, 68, 69, 70, 329, 285, 149, 323, 151, 289, 77, 328, 292, 329, 294, 328, 328, 333, 161, 162, 163, 296, 323, 166, 304, 323, 199, 328, 329, 309, 328, 329, 205, 328, 207, 323, 311, 323, 211, 272, 213, 329, 185, 329, 149, 323, 151, 220, 191, 329, 0, 329, 195, 323, 199, 288, 328, 200, 328, 329, 205, 328, 326, 272, 325, 208, 211, 328, 213, 272, 334, 335, 336, 337, 338, 220, 285, 328, 221, 328, 289, 254, 285, 292, 227, 294, 289, 257, 258, 292, 233, 294, 265, 266, 328, 304, 262, 323, 241, 242, 309, 304, 328, 329, 328, 248, 309, 328, 325, 254, 262, 263, 264, 329, 326, 286, 287, 284, 286, 287, 265, 266, 319, 296, 286, 287, 269, 270, 301, 272, 303, 321, 303, 0, 329, 303, 329, 279, 311, 315, 329, 303, 303, 329, 329, 288, 328, 286, 286, 287, 321, 296, 323, 321, 325, 323, 296, 325, 329, 321, 329, 329, 292, 325, 325, 303, 311, 329, 329, 342, 325, 344, 303, 313, 329, 286, 287, 296, 321, 287, 323, 329, 323, 323, 357, 325, 287, 325, 264, 329, 268, 329, 303, 296, 325, 303, 325, 329, 329, 372, 329, 374, 303, 346, 325, 348, 325, 380, 329, 382, 329, 328, 357, 328, 325, 329, 0, 325, 329, 362, 363, 329, 325, 329, 325, 287, 329, 370, 329, 329, 257, 258, 259, 260, 329, 272, 263, 329, 322, 329, 323, 292, 269, 270, 292, 292, 273, 274, 285, 301, 277, 308, 289, 303, 281, 292, 283, 294, 329, 329, 329, 268, 257, 329, 328, 296, 293, 304, 329, 329, 297, 298, 309, 300, 329, 329, 329, 262, 279, 262, 307, 284, 284, 310, 311, 312, 5, 1, 58, 316, 228, 185, 185, 367, 359, 363, 307, -1, -1, 0, -1, 328, -1, -1, -1, 332, -1, 334, 335, -1, -1, -1, 262, -1, -1, 265, 266, 267, -1, 346, 347, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, 326, 327, -1, 329, -1, -1, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, 326, 327, -1, 329, -1, -1, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, 326, 327, -1, 329, -1, -1, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, 326, 327, -1, 329, -1, -1, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, 0, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, -1, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, 0, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, -1, 333, 334, 335, -1, -1, -1, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, 0, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, -1, 333, 334, 335, -1, -1, -1, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, 0, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, 339, 340, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, 0, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, 339, 340, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, 0, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, 339, 340, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, 0, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, -1, 333, -1, -1, -1, -1, -1, 339, 340, -1, -1, -1, -1, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, 0, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, 0, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, 0, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, 0, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, -1, 333, -1, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, 0, 284, 285, 286, 287, 288, 289, -1, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, 0, 284, 285, 286, 287, 288, 289, -1, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, 0, 284, 285, 286, 287, 288, 289, -1, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, -1, -1, 282, 0, 284, 285, 286, 287, 288, 289, -1, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, -1, 333, -1, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 0, -1, 282, -1, 284, 285, 286, 287, 288, 289, -1, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 0, -1, 282, -1, 284, 285, 286, 287, 288, 289, -1, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, 0, -1, 278, 279, -1, -1, 282, -1, 284, 285, 286, 287, -1, 289, -1, 291, 292, -1, 294, -1, 296, -1, 298, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, 0, -1, 278, 279, -1, -1, 282, -1, 284, 285, 286, 287, -1, 289, -1, 291, 292, -1, 294, -1, 296, -1, 298, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, 0, -1, 278, 279, -1, -1, -1, -1, 284, 285, 286, 287, -1, 289, -1, 291, 292, -1, 294, -1, 296, -1, 298, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, 0, -1, 278, 279, -1, -1, -1, -1, 284, 285, 286, 287, -1, 289, -1, 291, 292, -1, 294, -1, 296, -1, 298, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, 262, 329, -1, 265, 266, 333, -1, -1, -1, 271, 272, -1, -1, 275, 0, -1, 278, 279, -1, -1, 282, -1, 284, 285, 286, 287, -1, 289, -1, -1, 292, -1, 294, -1, 296, -1, -1, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, 0, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, -1, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, -1, -1, 282, -1, 284, 285, 286, 287, -1, 289, -1, -1, 292, -1, 294, -1, 296, 0, -1, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, 0, -1, 329, -1, -1, 262, 333, -1, 265, 266, -1, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, -1, -1, 282, -1, 284, 285, 286, 287, -1, 289, -1, -1, 292, -1, 294, -1, 296, -1, -1, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, -1, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, -1, -1, 282, -1, 284, 285, 286, 287, -1, 289, -1, -1, 292, -1, 294, -1, 296, -1, -1, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, 265, 266, 333, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, -1, -1, 282, -1, 284, 285, 286, 287, -1, 289, -1, -1, 292, -1, 294, -1, 296, -1, -1, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, 272, 323, -1, 325, -1, -1, -1, 329, -1, -1, -1, 333, 284, 285, 286, 287, -1, 289, -1, -1, 292, -1, 294, -1, -1, -1, -1, -1, -1, 301, -1, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 272, -1, -1, -1, -1, -1, -1, -1, 321, -1, 323, -1, 325, 285, 286, 287, 329, 289, -1, -1, 292, -1, 294, -1, -1, -1, -1, -1, -1, 301, 272, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, -1, -1, 285, 286, 287, -1, 289, -1, 321, 292, 323, 294, 325, -1, -1, -1, 329, -1, -1, -1, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, -1, 257, 258, 259, 260, 261, -1, 263, 321, -1, 323, -1, 325, 269, 270, -1, 329, 273, 274, -1, 276, 277, -1, -1, -1, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, -1, 312, -1, -1, 315, 316, -1, -1, 319, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, 326, 310, 311, 312, -1, -1, -1, 316, 334, 335, 336, 337, 338, -1, -1, 341, 342, 343, 344, 328, -1, -1, -1, 332, -1, 334, 335, 257, 258, 259, 260, 261, -1, 263, -1, -1, -1, 346, 347, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, -1, -1, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, -1, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, 311, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, 306, 307, -1, -1, 310, -1, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, 306, 307, -1, -1, 310, -1, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, 306, 307, -1, -1, 310, -1, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, 311, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, 311, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, -1, 312, -1, -1, 315, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, -1, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, -1, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, -1, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, -1, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 328, -1, -1, -1, 332, -1, 334, 335, 262, -1, -1, -1, 266, 267, -1, -1, -1, 271, 346, 347, -1, 275, -1, -1, -1, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, 265, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, 325, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, 323, -1, -1, 326, 327, 262, 329, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, 325, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, 314, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, 265, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, 323, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, 323, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, 329, -1, 265, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, 265, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, 323, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, 314, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, 329, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, 323, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, 329, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, 329, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, 329, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, -1, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, -1, -1, -1, -1, 267, -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, -1, -1, -1, -1, 267, -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, -1, -1, -1, 305, -1, -1, 280, -1, 282, -1, -1, -1, -1, -1, -1, 317, 290, -1, -1, -1, -1, -1, -1, -1, 326, 327, -1, -1, -1, -1, -1, 305, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 317, -1, -1, 280, -1, 282, -1, -1, -1, 326, 327, -1, -1, 290, -1, -1, -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 305, -1, -1, 280, -1, -1, -1, -1, -1, -1, -1, -1, 317, 290, -1, -1, -1, -1, -1, -1, -1, 326, 327, -1, -1, -1, -1, -1, 305, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 317, 280, -1, -1, -1, -1, -1, -1, -1, 326, 327, 290, -1, -1, -1, -1, -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, 290, -1, -1, -1, -1, -1, -1, -1, 326, 327, -1, -1, -1, -1, -1, -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 317, 290, -1, -1, -1, -1, -1, -1, -1, 326, 327, -1, -1, -1, -1, -1, -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, -1, -1, -1, -1, -1, -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 326, 327, -1, -1, -1, -1, -1, -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, }; static short YYFINAL=2; static short YYMAXTOKEN=349; static String [] yyname = { "end-of-file",null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,"IDENTIFIER","ESCAPED_IDENTIFIER","PARAMETER","LITERAL","ALL", "AND","ANYELEMENT","APPLY","AS","ASC","BETWEEN","BY","CASE","CAST","COLLATE", "CROSS","CREATEREF","DEREF","DESC","DISTINCT","ELEMENT","ELSE","END","EXCEPT", "EXISTS","ESCAPE","FLATTEN","FROM","FULL","GROUP","HAVING","IN","INNER", "INTERSECT","IS","JOIN","KEY","LEFT","LIKE","LIMIT","MULTISET","NOT","OF", "OFTYPE","ON","OR","ORDER","OUTER","OVERLAPS","ONLY","REF","RELATIONSHIP", "RIGHT","ROW","SELECT","SET","SKIP","THEN","TOP","TREAT","UNION","USING", "VALUE","WHEN","WHERE","WITH","COMMA","COLON","SCOLON","DOT","EQUAL","L_PAREN", "R_PAREN","L_BRACE","R_BRACE","L_CURLY","R_CURLY","PLUS","MINUS","STAR", "FSLASH","PERCENT","OP_EQ","OP_NEQ","OP_LT","OP_LE","OP_GT","OP_GE","QMARK", "NAVIGATE","NULL","UNARYPLUS","UNARYMINUS", }; static String [] yyrule = { "$accept : commandStart", "commandStart :", "commandStart : command", "command : optNamespaceDeclList generalExpr", "optNamespaceDeclList :", "optNamespaceDeclList : namespaceDeclList", "namespaceDeclList : namespaceDecl", "namespaceDeclList : namespaceDeclList namespaceDecl", "namespaceDecl : USING identifier SCOLON", "namespaceDecl : USING dotExpr SCOLON", "namespaceDecl : USING assignExpr SCOLON", "generalExpr : queryExpr optSemiColon", "generalExpr : Expr optSemiColon", "optSemiColon :", "optSemiColon : SCOLON", "queryExpr : selectClause fromClause optWhereClause optGroupByClause optHavingClause optOrderByClause", "$$1 :", "selectClause : SELECT $$1 optAllOrDistinct optTopClause aliasExprList", "$$2 :", "selectClause : SELECT $$2 VALUE optAllOrDistinct optTopClause aliasExprList", "optAllOrDistinct :", "optAllOrDistinct : ALL", "optAllOrDistinct : DISTINCT", "optTopClause :", "optTopClause : TOP L_PAREN Expr R_PAREN", "fromClause : FROM fromClauseList", "fromClauseList : fromClauseItem", "fromClauseList : fromClauseList COMMA fromClauseItem", "fromClauseItem : aliasExpr", "fromClauseItem : L_PAREN joinClauseItem R_PAREN", "fromClauseItem : joinClauseItem", "fromClauseItem : L_PAREN applyClauseItem R_PAREN", "fromClauseItem : applyClauseItem", "joinClauseItem : fromClauseItem joinType fromClauseItem", "joinClauseItem : fromClauseItem joinType fromClauseItem ON Expr", "applyClauseItem : fromClauseItem applyType fromClauseItem", "joinType : CROSS JOIN", "joinType : LEFT OUTER JOIN", "joinType : LEFT JOIN", "joinType : RIGHT OUTER JOIN", "joinType : RIGHT JOIN", "joinType : JOIN", "joinType : INNER JOIN", "joinType : FULL JOIN", "joinType : FULL OUTER JOIN", "joinType : FULL OUTER", "applyType : CROSS APPLY", "applyType : OUTER APPLY", "optWhereClause :", "optWhereClause : whereClause", "whereClause : WHERE Expr", "optGroupByClause :", "optGroupByClause : groupByClause", "groupByClause : GROUP BY aliasExprList", "optHavingClause :", "optHavingClause : havingClause", "$$3 :", "havingClause : HAVING $$3 Expr", "optOrderByClause :", "optOrderByClause : orderByClause", "$$4 :", "orderByClause : ORDER BY $$4 orderByItemList optSkipSubClause optLimitSubClause", "optSkipSubClause :", "optSkipSubClause : SKIP Expr", "optLimitSubClause :", "optLimitSubClause : LIMIT Expr", "orderByItemList : orderByClauseItem", "orderByItemList : orderByItemList COMMA orderByClauseItem", "orderByClauseItem : Expr optAscDesc", "orderByClauseItem : Expr COLLATE simpleIdentifier optAscDesc", "optAscDesc :", "optAscDesc : ASC", "optAscDesc : DESC", "exprList : Expr", "exprList : exprList COMMA Expr", "Expr : parenExpr", "Expr : PARAMETER", "Expr : identifier", "Expr : builtInExpr", "Expr : dotExpr", "Expr : refExpr", "Expr : createRefExpr", "Expr : keyExpr", "Expr : methodExpr", "Expr : ctorExpr", "Expr : derefExpr", "Expr : navigateExpr", "Expr : literalExpr", "parenExpr : L_PAREN generalExpr R_PAREN", "betweenPrefix : Expr BETWEEN Expr", "notBetweenPrefix : Expr NOT BETWEEN Expr", "builtInExpr : Expr PLUS Expr", "builtInExpr : Expr MINUS Expr", "builtInExpr : Expr STAR Expr", "builtInExpr : Expr FSLASH Expr", "builtInExpr : Expr PERCENT Expr", "builtInExpr : MINUS Expr", "builtInExpr : PLUS Expr", "builtInExpr : Expr OP_NEQ Expr", "builtInExpr : Expr OP_GT Expr", "builtInExpr : Expr OP_GE Expr", "builtInExpr : Expr OP_LT Expr", "builtInExpr : Expr OP_LE Expr", "builtInExpr : Expr INTERSECT Expr", "builtInExpr : Expr UNION Expr", "builtInExpr : Expr UNION ALL Expr", "builtInExpr : Expr EXCEPT Expr", "builtInExpr : Expr OVERLAPS Expr", "builtInExpr : Expr IN Expr", "builtInExpr : Expr NOT IN Expr", "builtInExpr : EXISTS L_PAREN generalExpr R_PAREN", "builtInExpr : ANYELEMENT L_PAREN generalExpr R_PAREN", "builtInExpr : ELEMENT L_PAREN generalExpr R_PAREN", "builtInExpr : FLATTEN L_PAREN generalExpr R_PAREN", "builtInExpr : SET L_PAREN generalExpr R_PAREN", "builtInExpr : Expr IS NULL", "builtInExpr : Expr IS NOT NULL", "builtInExpr : searchedCaseExpr", "builtInExpr : TREAT L_PAREN Expr AS typeIdentifier R_PAREN", "builtInExpr : CAST L_PAREN Expr AS typeIdentifier R_PAREN", "builtInExpr : OFTYPE L_PAREN Expr COMMA typeIdentifier R_PAREN", "builtInExpr : OFTYPE L_PAREN Expr COMMA ONLY typeIdentifier R_PAREN", "builtInExpr : Expr IS OF L_PAREN typeIdentifier R_PAREN", "builtInExpr : Expr IS NOT OF L_PAREN typeIdentifier R_PAREN", "builtInExpr : Expr IS OF L_PAREN ONLY typeIdentifier R_PAREN", "builtInExpr : Expr IS NOT OF L_PAREN ONLY typeIdentifier R_PAREN", "builtInExpr : Expr LIKE Expr", "builtInExpr : Expr NOT LIKE Expr", "builtInExpr : Expr LIKE Expr ESCAPE Expr", "builtInExpr : Expr NOT LIKE Expr ESCAPE Expr", "builtInExpr : betweenPrefix AND Expr", "builtInExpr : notBetweenPrefix AND Expr", "builtInExpr : Expr OR Expr", "builtInExpr : NOT Expr", "builtInExpr : Expr AND Expr", "builtInExpr : equalsOrAssignExpr", "equalsOrAssignExpr : assignExpr", "equalsOrAssignExpr : equalsExpr", "assignExpr : Expr EQUAL Expr", "equalsExpr : Expr OP_EQ Expr", "aliasExpr : Expr AS identifier", "aliasExpr : Expr", "aliasExprList : aliasExpr", "aliasExprList : aliasExprList COMMA aliasExpr", "searchedCaseExpr : CASE whenThenExprList END", "searchedCaseExpr : CASE whenThenExprList caseElseExpr END", "whenThenExprList : WHEN Expr THEN Expr", "whenThenExprList : whenThenExprList WHEN Expr THEN Expr", "caseElseExpr : ELSE Expr", "ctorExpr : ROW L_PAREN aliasExprList R_PAREN", "ctorExpr : MULTISET L_PAREN exprList R_PAREN", "ctorExpr : L_CURLY exprList R_CURLY", "dotExpr : Expr DOT identifier", "refExpr : REF L_PAREN Expr R_PAREN", "derefExpr : DEREF parenExpr", "createRefExpr : CREATEREF L_PAREN Expr COMMA Expr R_PAREN", "createRefExpr : CREATEREF L_PAREN Expr COMMA Expr COMMA typeIdentifier R_PAREN", "keyExpr : KEY parenExpr", "methodExpr : dotExpr L_PAREN R_PAREN", "methodExpr : dotExpr L_PAREN optAllOrDistinct exprList R_PAREN optWithRelationship", "methodExpr : dotExpr L_PAREN optAllOrDistinct queryExpr R_PAREN optWithRelationship", "methodExpr : identifier L_PAREN R_PAREN", "methodExpr : identifier L_PAREN optAllOrDistinct exprList R_PAREN optWithRelationship", "methodExpr : identifier L_PAREN optAllOrDistinct queryExpr R_PAREN optWithRelationship", "navigateExpr : NAVIGATE L_PAREN Expr COMMA dotExpr R_PAREN", "navigateExpr : NAVIGATE L_PAREN Expr COMMA identifier R_PAREN", "navigateExpr : NAVIGATE L_PAREN Expr COMMA dotExpr COMMA identifier R_PAREN", "navigateExpr : NAVIGATE L_PAREN Expr COMMA identifier COMMA identifier R_PAREN", "navigateExpr : NAVIGATE L_PAREN Expr COMMA dotExpr COMMA identifier COMMA identifier R_PAREN", "navigateExpr : NAVIGATE L_PAREN Expr COMMA identifier COMMA identifier COMMA identifier R_PAREN", "optWithRelationship :", "optWithRelationship : relationshipList", "relationshipList : WITH relationshipExpr", "relationshipList : relationshipList relationshipExpr", "relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA dotExpr R_PAREN", "relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA identifier R_PAREN", "relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA dotExpr COMMA identifier R_PAREN", "relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA identifier COMMA identifier R_PAREN", "relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA dotExpr COMMA identifier COMMA identifier R_PAREN", "relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA identifier COMMA identifier COMMA identifier R_PAREN", "typeIdentifier : identifier", "typeIdentifier : dotExpr", "typeIdentifier : identifier ESCAPED_IDENTIFIER", "typeIdentifier : dotExpr ESCAPED_IDENTIFIER", "typeIdentifier : methodExpr", "identifier : ESCAPED_IDENTIFIER", "identifier : simpleIdentifier", "simpleIdentifier : IDENTIFIER", "literalExpr : LITERAL", "literalExpr : NULL", }; //#line 1455 "CqlGrammar.y" #pragma warning restore 414 //############################################################### // method: yylexdebug : check lexer state //############################################################### void yylexdebug(int state,int ch) { String s=null; if (ch < 0) ch=0; if (ch <= YYMAXTOKEN) //check index bounds s = yyname[ch]; //now get it if (s==null) s = "illegal-symbol"; debug("state "+state+", reading "+ch+" ("+s+")"); } //############################################################### // method: yyparse : parse input and execute indicated items //############################################################### int yyparse() { int yyn; //next thing to do int yym; // int yystate; //current parsing state from state table #if YYDEBUG String yys; //current token string #endif init_stacks(); yynerrs = 0; yyerrflag = 0; yychar = (-1); yystate = 0; state_push(yystate); yyloop: #if YYDEBUG debug("yyloop"); #endif yyn = yydefred[yystate]; if (yyn!=0) goto yyreduce; #if YYDEBUG debug("yyn:"+yyn+" state:"+yystate+" char:"+yychar); #endif if (yychar < 0) { yychar = yylex(); if (yychar < 0) yychar = 0; } yyn = yysindex[yystate]; if ((yyn!=0) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { #if YYDEBUG debug("state "+yystate+", shifting to state "+yytable[yyn]+""); #endif yystate = yytable[yyn]; state_push(yystate); val_push( yylval ); yychar = (-1); if (yyerrflag > 0) --yyerrflag; goto yyloop; } yyn = yyrindex[yystate]; if ((yyn!=0) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { yyn = yytable[yyn]; #if YYDEBUG debug("reduce"); #endif goto yyreduce; } if (yyerrflag!=0) goto yyinrecovery; yyerror("syntax error"); ++yynerrs; yyinrecovery: if (yyerrflag < 3) { yyerrflag = 3; for (;;) { if (stateptr < 0) { goto yyoverflow; } yyn = yysindex[state_peek(0)]; if ((yyn!=0) && (yyn += YYERRCODE) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) { if (stateptr < 0) { goto yyoverflow; } #if YYDEBUG debug("state "+state_peek(0)+", error recovery shifting to state "+yytable[yyn]+" "); #endif yystate = yytable[yyn]; state_push(yystate); val_push( yylval ); goto yyloop; } else { if (stateptr < 0) { goto yyoverflow; } #if YYDEBUG debug("error recovery discarding state "+state_peek(0)+" "); #endif state_pop(); val_pop(); } } } else { if (yychar == 0) goto yyabort; #if YYDEBUG if (yydebug) { yys = null; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (yys == null) yys = "illegal-symbol"; debug("state "+yystate+", error recovery discards token "+yychar+" ("+yys+")"); } #endif yychar = (-1); goto yyloop; } yyreduce: yym = yylen[yyn]; #if YYDEBUG debug("state "+yystate+", reducing "+yym+" by rule "+yyn+" ("+yyrule[yyn]+")"); #endif yyval = val_peek(yym-1); switch (yyn) { //########## USER-SUPPLIED ACTIONS ########## case 1: //#line 135 "CqlGrammar.y" { yyval = _parsedTree = null; } break; case 2: //#line 139 "CqlGrammar.y" { yyval = _parsedTree = (Expr)val_peek(0); } break; case 3: //#line 147 "CqlGrammar.y" { yyval = new CommandExpr(ToExprList (val_peek(1)),(Expr)val_peek(0)); SetErrCtx(AstNode(yyval), (val_peek(1) != null) ? AstNodePos(val_peek(1)) : AstNodePos(val_peek(0)), EntityRes.CtxCommandExpression); } break; case 4: //#line 161 "CqlGrammar.y" { yyval = null; } break; case 5: //#line 165 "CqlGrammar.y" { yyval = val_peek(0); } break; case 6: //#line 173 "CqlGrammar.y" { yyval = new ExprList ((NamespaceExpr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); } break; case 7: //#line 178 "CqlGrammar.y" { yyval = ToExprList (val_peek(1)).Add((NamespaceExpr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(yyval), EntityRes.CtxNamespaceDeclaration); } break; case 8: //#line 187 "CqlGrammar.y" { yyval = new NamespaceExpr((Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNamespaceDeclaration); } break; case 9: //#line 192 "CqlGrammar.y" { yyval = new NamespaceExpr((DotExpr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNamespaceDeclaration); } break; case 10: //#line 197 "CqlGrammar.y" { yyval = new NamespaceExpr((BuiltInExpr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxAliasedNamespaceDeclaration); } break; case 11: //#line 219 "CqlGrammar.y" { yyval = val_peek(1); } break; case 12: //#line 223 "CqlGrammar.y" { yyval = val_peek(1); } break; case 13: //#line 229 "CqlGrammar.y" { yyval = null; } break; case 14: //#line 233 "CqlGrammar.y" { yyval = null; } break; case 15: //#line 242 "CqlGrammar.y" { yyval = new QueryExpr( (SelectClause)val_peek(5) , (FromClause)val_peek(4) , (Expr)val_peek(3) , (GroupByClause)val_peek(2) , (HavingClause)val_peek(1) , (OrderByClause)val_peek(0) ); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(5)), EntityRes.CtxQueryExpression); } break; case 16: //#line 257 "CqlGrammar.y" { ResetMethodCallCount(); } break; case 17: //#line 263 "CqlGrammar.y" { yyval = new SelectClause(ToExprList (val_peek(0)), (DistinctKind)val_peek(2), (Expr)val_peek(1), MethodCallCount); SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxSelectRowClause); } break; case 18: //#line 268 "CqlGrammar.y" { ResetMethodCallCount(); } break; case 19: //#line 275 "CqlGrammar.y" { ExprList exprList = ToExprList (val_peek(0)); if (exprList.Count != 1) { throw EntityUtil.EntitySqlError(exprList.ErrCtx, System.Data.Entity.Strings.InvalidSelectValueList); } if (exprList.Expressions[0].HasAlias) { throw EntityUtil.EntitySqlError(exprList.ErrCtx, System.Data.Entity.Strings.InvalidSelectValueAliasedExpression); } yyval = new SelectClause(exprList.Expressions[0].Expr, (DistinctKind)val_peek(2), (Expr)val_peek(1), MethodCallCount); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxSelectValueClause); } break; case 20: //#line 295 "CqlGrammar.y" { yyval = DistinctKind.None; } break; case 21: //#line 299 "CqlGrammar.y" { yyval = DistinctKind.All; } break; case 22: //#line 303 "CqlGrammar.y" { yyval = DistinctKind.Distinct; } break; case 23: //#line 310 "CqlGrammar.y" { yyval = null; } break; case 24: //#line 314 "CqlGrammar.y" { if ( val_peek(1) is Parameter || val_peek(1) is Literal ) { yyval = (Expr)val_peek(1); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxTopSubClause); } else { throw EntityUtil.EntitySqlError(((Expr)val_peek(1)).ErrCtx, System.Data.Entity.Strings.TopExpressionMustBeParamOrLiteral); } } break; case 25: //#line 330 "CqlGrammar.y" { yyval = new FromClause(ToExprList (val_peek(0))); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxFromClause); } break; case 26: //#line 339 "CqlGrammar.y" { yyval = new ExprList ((FromClauseItem)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); } break; case 27: //#line 344 "CqlGrammar.y" { yyval = ToExprList (val_peek(2)).Add((FromClauseItem)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxFromClauseList); } break; case 28: //#line 353 "CqlGrammar.y" { yyval = new FromClauseItem((AliasExpr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromClauseItem); } break; case 29: //#line 358 "CqlGrammar.y" { yyval = new FromClauseItem((JoinClauseItem)val_peek(1)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxFromJoinClause); } break; case 30: //#line 363 "CqlGrammar.y" { yyval = new FromClauseItem((JoinClauseItem)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromJoinClause); } break; case 31: //#line 368 "CqlGrammar.y" { yyval = new FromClauseItem((ApplyClauseItem)val_peek(1)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxFromApplyClause); } break; case 32: //#line 373 "CqlGrammar.y" { yyval = new FromClauseItem((ApplyClauseItem)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromApplyClause); } break; case 33: //#line 382 "CqlGrammar.y" { yyval = new JoinClauseItem((FromClauseItem)val_peek(2), (FromClauseItem)val_peek(0), (JoinKind)val_peek(1)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxJoinClause); } break; case 34: //#line 387 "CqlGrammar.y" { yyval = new JoinClauseItem((FromClauseItem)val_peek(4), (FromClauseItem)val_peek(2), (JoinKind)val_peek(3), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(4)), EntityRes.CtxJoinOnClause); } break; case 35: //#line 396 "CqlGrammar.y" { yyval = new ApplyClauseItem((FromClauseItem)val_peek(2), (FromClauseItem)val_peek(0), (ApplyKind)val_peek(1)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxApplyClause); } break; case 36: //#line 405 "CqlGrammar.y" { yyval = JoinKind.Cross; } break; case 37: //#line 409 "CqlGrammar.y" { yyval = JoinKind.LeftOuter; } break; case 38: //#line 413 "CqlGrammar.y" { yyval = JoinKind.LeftOuter; } break; case 39: //#line 417 "CqlGrammar.y" { yyval = JoinKind.RightOuter; } break; case 40: //#line 421 "CqlGrammar.y" { yyval = JoinKind.RightOuter; } break; case 41: //#line 425 "CqlGrammar.y" { yyval = JoinKind.Inner; } break; case 42: //#line 429 "CqlGrammar.y" { yyval = JoinKind.Inner; } break; case 43: //#line 433 "CqlGrammar.y" { yyval = JoinKind.FullOuter; } break; case 44: //#line 437 "CqlGrammar.y" { yyval = JoinKind.FullOuter; } break; case 45: //#line 441 "CqlGrammar.y" { yyval = JoinKind.FullOuter; } break; case 46: //#line 449 "CqlGrammar.y" { yyval = ApplyKind.Cross; } break; case 47: //#line 453 "CqlGrammar.y" { yyval = ApplyKind.Outer; } break; case 48: //#line 460 "CqlGrammar.y" { yyval = null; } break; case 49: //#line 464 "CqlGrammar.y" { yyval = val_peek(0); } break; case 50: //#line 472 "CqlGrammar.y" { yyval = (Expr)val_peek(0); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxWhereClause); } break; case 51: //#line 481 "CqlGrammar.y" { yyval = null; } break; case 52: //#line 485 "CqlGrammar.y" { yyval = val_peek(0); } break; case 53: //#line 493 "CqlGrammar.y" { yyval = new GroupByClause(ToExprList (val_peek(0)), new Identifier( "group", false, _query, Terminal(val_peek(2)).IPos ) ); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxGroupByClause); } break; case 54: //#line 501 "CqlGrammar.y" { yyval = null; } break; case 55: //#line 505 "CqlGrammar.y" { yyval = val_peek(0); } break; case 56: //#line 513 "CqlGrammar.y" { ResetMethodCallCount(); } break; case 57: //#line 517 "CqlGrammar.y" { yyval = new HavingClause((Expr)val_peek(0), MethodCallCount); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxHavingClause); } break; case 58: //#line 526 "CqlGrammar.y" { yyval = null; } break; case 59: //#line 530 "CqlGrammar.y" { yyval = val_peek(0); } break; case 60: //#line 537 "CqlGrammar.y" { ResetMethodCallCount(); } break; case 61: //#line 543 "CqlGrammar.y" { yyval = new OrderByClause(ToExprList (val_peek(2)), (Expr)val_peek(1), (Expr)val_peek(0), MethodCallCount); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxOrderByClauseItem); } break; case 62: //#line 551 "CqlGrammar.y" { yyval = null; } break; case 63: //#line 555 "CqlGrammar.y" { if ( val_peek(0) is Parameter || val_peek(0) is Literal ) { yyval = (Expr)val_peek(0); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxSkipSubClause); } else { throw EntityUtil.EntitySqlError(((Expr)val_peek(0)).ErrCtx, System.Data.Entity.Strings.SkipExpressionMustBeParamOrLiteral); } } break; case 64: //#line 570 "CqlGrammar.y" { yyval = null; } break; case 65: //#line 574 "CqlGrammar.y" { if ( val_peek(0) is Parameter || val_peek(0) is Literal ) { yyval = (Expr)val_peek(0); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxLimitSubClause); } else { throw EntityUtil.EntitySqlError(((Expr)val_peek(0)).ErrCtx, System.Data.Entity.Strings.LimitExpressionMustBeParamOrLiteral); } } break; case 66: //#line 589 "CqlGrammar.y" { yyval = new ExprList ((OrderByClauseItem)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); } break; case 67: //#line 594 "CqlGrammar.y" { yyval = ToExprList (val_peek(2)).Add((OrderByClauseItem)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxOrderByClause); } break; case 68: //#line 603 "CqlGrammar.y" { yyval = new OrderByClauseItem((Expr)val_peek(1), (OrderKind)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxOrderByClauseItem); } break; case 69: //#line 608 "CqlGrammar.y" { yyval = new OrderByClauseItem((Expr)val_peek(3), (OrderKind)val_peek(0), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(3)), EntityRes.CtxCollatedOrderByClauseItem); } break; case 70: //#line 617 "CqlGrammar.y" { yyval = OrderKind.None; } break; case 71: //#line 621 "CqlGrammar.y" { yyval = OrderKind.Asc; } break; case 72: //#line 625 "CqlGrammar.y" { yyval = OrderKind.Desc; } break; case 73: //#line 638 "CqlGrammar.y" { yyval = new ExprList ((Expr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); } break; case 74: //#line 643 "CqlGrammar.y" { yyval = ToExprList (val_peek(2)).Add((Expr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxExpressionList); } break; case 75: //#line 651 "CqlGrammar.y" { yyval = val_peek(0); } break; case 76: //#line 655 "CqlGrammar.y" { yyval = (Parameter)val_peek(0); } break; case 77: //#line 659 "CqlGrammar.y" { yyval = (Identifier)val_peek(0); } break; case 78: //#line 663 "CqlGrammar.y" { yyval = val_peek(0); } break; case 79: //#line 667 "CqlGrammar.y" { yyval = val_peek(0); if (((DotExpr)val_peek(0)).IsDottedIdentifier) { SetErrCtx(AstNode(yyval), AstNodePos(yyval), EntityRes.CtxMultipartIdentifier); } } break; case 80: //#line 675 "CqlGrammar.y" { yyval = val_peek(0); } break; case 81: //#line 679 "CqlGrammar.y" { yyval = val_peek(0); } break; case 82: //#line 683 "CqlGrammar.y" { yyval = val_peek(0); } break; case 83: //#line 687 "CqlGrammar.y" { yyval = val_peek(0); IncrementMethodCallCount(); } break; case 84: //#line 693 "CqlGrammar.y" { yyval = val_peek(0); } break; case 85: //#line 697 "CqlGrammar.y" { yyval = val_peek(0); } break; case 86: //#line 701 "CqlGrammar.y" { yyval = val_peek(0); } break; case 87: //#line 705 "CqlGrammar.y" { yyval = val_peek(0); } break; case 88: //#line 712 "CqlGrammar.y" { yyval = val_peek(1); } break; case 89: //#line 719 "CqlGrammar.y" { yyval = new ExprList ((Expr)val_peek(2)).Add((Expr)val_peek(0)); } break; case 90: //#line 726 "CqlGrammar.y" { yyval = new ExprList ((Expr)val_peek(3)).Add((Expr)val_peek(0)); } break; case 91: //#line 736 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Plus, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxPlus); } break; case 92: //#line 741 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Minus, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMinus); } break; case 93: //#line 746 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Multiply, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMultiply); } break; case 94: //#line 751 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Divide, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxDivide); } break; case 95: //#line 756 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Modulus, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxModulus); } break; case 96: //#line 761 "CqlGrammar.y" { Literal literal = val_peek(0) as Literal; if ( null != literal && literal.IsNumberKind && !literal.IsSigned ) { literal.PrefixSign(Terminal(val_peek(1)).Token); yyval = val_peek(0); } else { yyval = new BuiltInExpr(BuiltInKind.UnaryMinus, Terminal(val_peek(1)).Token, (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnaryMinus); } } break; case 97: //#line 776 "CqlGrammar.y" { Literal literal = val_peek(0) as Literal; if ( null != literal && literal.IsNumberKind && !literal.IsSigned ) { literal.PrefixSign(Terminal(val_peek(1)).Token); yyval = val_peek(0); } else { yyval = new BuiltInExpr(BuiltInKind.UnaryPlus, Terminal(val_peek(1)).Token, (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnaryPlus); } } break; case 98: //#line 793 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.NotEqual, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNotEqual); } break; case 99: //#line 798 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.GreaterThan, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxGreaterThan); } break; case 100: //#line 803 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.GreaterEqual, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxGreaterThanEqual); } break; case 101: //#line 808 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.LessThan, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLessThan); } break; case 102: //#line 813 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.LessEqual, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLessThanEqual); } break; case 103: //#line 821 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Intersect, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIntersect); } break; case 104: //#line 826 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Union, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnion); } break; case 105: //#line 831 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.UnionAll, Terminal(val_peek(2)).Token, (Expr)val_peek(3), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxUnionAll); } break; case 106: //#line 836 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Except, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxExcept); } break; case 107: //#line 841 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Overlaps, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxOverlaps); } break; case 108: //#line 846 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.In, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIn); } break; case 109: //#line 851 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.NotIn, Terminal(val_peek(2)).Token, (Expr)val_peek(3), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNotIn); } break; case 110: //#line 856 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Exists, Terminal(val_peek(3)).Token, (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxExists); } break; case 111: //#line 861 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.AnyElement, Terminal(val_peek(3)).Token, (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxAnyElement); } break; case 112: //#line 866 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Element, Terminal(val_peek(3)).Token, (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxElement); } break; case 113: //#line 871 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Flatten, Terminal(val_peek(3)).Token, (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxFlatten); } break; case 114: //#line 876 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Distinct, Terminal(val_peek(3)).Token, (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxSet); } break; case 115: //#line 884 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.IsNull, "IsNull", (Expr)val_peek(2)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIsNull); } break; case 116: //#line 889 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.IsNotNull, "IsNotNull", (Expr)val_peek(3)); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxIsNotNull); } break; case 117: //#line 897 "CqlGrammar.y" { yyval = (CaseExpr)val_peek(0); } break; case 118: //#line 904 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Treat, Terminal(val_peek(5)).Token, (Expr)val_peek(3), (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxTreat); } break; case 119: //#line 909 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Cast, Terminal(val_peek(5)).Token, (Expr)val_peek(3), (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxCast); } break; case 120: //#line 918 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.OfType, Terminal(val_peek(5)).Token, (Expr)val_peek(3), (Expr)val_peek(1), Literal.NewBooleanLiteral( false ) /* only */); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxOfType); } break; case 121: //#line 928 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.OfType, "OFTYPE ONLY", (Expr)val_peek(4), (Expr)val_peek(1), Literal.NewBooleanLiteral( true ) /* only */); SetErrCtx(AstNode(yyval), Terminal(val_peek(6)), EntityRes.CtxOfTypeOnly); } break; case 122: //#line 941 "CqlGrammar.y" { yyval = new BuiltInExpr( BuiltInKind.IsOf, "IS OF", (Expr)val_peek(5), (Expr)val_peek(1), Literal.NewBooleanLiteral( false ), /* only */ Literal.NewBooleanLiteral( false ) /* not */ ); SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxIsOf); } break; case 123: //#line 953 "CqlGrammar.y" { yyval = new BuiltInExpr( BuiltInKind.IsOf, "IS NOT OF", (Expr)val_peek(6), /* instance */ (Expr)val_peek(1), /* type */ Literal.NewBooleanLiteral( false ), /* only */ Literal.NewBooleanLiteral( true ) /* not */ ); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxIsNotOf); } break; case 124: //#line 965 "CqlGrammar.y" { yyval = new BuiltInExpr( BuiltInKind.IsOf, "IS OF ONLY", (Expr)val_peek(6), /* instance */ (Expr)val_peek(1), /* type */ Literal.NewBooleanLiteral( true ), /* only */ Literal.NewBooleanLiteral( false ) /* not */ ); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxIsOf); } break; case 125: //#line 977 "CqlGrammar.y" { yyval = new BuiltInExpr( BuiltInKind.IsOf, "IS NOT OF ONLY", (Expr)val_peek(7), /* instance */ (Expr)val_peek(1), /* type */ Literal.NewBooleanLiteral( true ), /* only */ Literal.NewBooleanLiteral( true ) /* not */ ); SetErrCtx(AstNode(yyval), Terminal(val_peek(6)), EntityRes.CtxIsNotOf); } break; case 126: //#line 992 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLike); } break; case 127: //#line 997 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Not, Terminal(val_peek(2)).Token, new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(1)).Token, (Expr)val_peek(3), (Expr)val_peek(0))); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNotLike); } break; case 128: //#line 1004 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(3)).Token, (Expr)val_peek(4), (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxLike); } break; case 129: //#line 1009 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Not, Terminal(val_peek(4)).Token, new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(3)).Token, (Expr)val_peek(5), (Expr)val_peek(2), (Expr)val_peek(0))); SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxNotLike); } break; case 130: //#line 1019 "CqlGrammar.y" { ExprList elist = (ExprList )val_peek(2); System.Diagnostics.Debug.Assert(elist.Count==2); yyval = new BuiltInExpr(BuiltInKind.Between, "between", elist[0], elist[1], (Expr)val_peek(0) ); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxBetween); } break; case 131: //#line 1029 "CqlGrammar.y" { ExprList elist = (ExprList )val_peek(2); System.Diagnostics.Debug.Assert(elist.Count==2); yyval = new BuiltInExpr(BuiltInKind.NotBetween, "notbetween", elist[0], elist[1], (Expr)val_peek(0) ); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNotBetween); } break; case 132: //#line 1039 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Or, "or", (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxOr); } break; case 133: //#line 1044 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Not, "not", (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNot); } break; case 134: //#line 1049 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.And, "and", (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxAnd); } break; case 135: //#line 1054 "CqlGrammar.y" { yyval = val_peek(0); } break; case 136: //#line 1062 "CqlGrammar.y" { yyval = val_peek(0); } break; case 137: //#line 1066 "CqlGrammar.y" { yyval = val_peek(0); } break; case 138: //#line 1074 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Equal, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxEquals); } break; case 139: //#line 1083 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Equal, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxEquals); } break; case 140: //#line 1092 "CqlGrammar.y" { yyval = new AliasExpr((Expr)val_peek(2), (Identifier)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxAlias); } break; case 141: //#line 1097 "CqlGrammar.y" { yyval = new AliasExpr((Expr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); } break; case 142: //#line 1106 "CqlGrammar.y" { yyval = new ExprList ((AliasExpr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); } break; case 143: //#line 1111 "CqlGrammar.y" { yyval = ToExprList (val_peek(2)).Add((AliasExpr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(yyval), EntityRes.CtxExpressionList); } break; case 144: //#line 1120 "CqlGrammar.y" { yyval = new CaseExpr(ToExprList (val_peek(1))); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxCase); } break; case 145: //#line 1125 "CqlGrammar.y" { yyval = new CaseExpr(ToExprList (val_peek(2)), (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxCase); } break; case 146: //#line 1134 "CqlGrammar.y" { yyval = new ExprList (new WhenThenExpr((Expr)val_peek(2), (Expr)val_peek(0))); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxCaseWhenThen); } break; case 147: //#line 1139 "CqlGrammar.y" { yyval = ToExprList (val_peek(4)).Add(new WhenThenExpr((Expr)val_peek(2), (Expr)val_peek(0))); } break; case 148: //#line 1147 "CqlGrammar.y" { yyval = (Expr)val_peek(0); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxCaseElse); } break; case 149: //#line 1156 "CqlGrammar.y" { yyval = new RowConstructorExpr(ToExprList (val_peek(1))); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRowCtor); } break; case 150: //#line 1161 "CqlGrammar.y" { yyval = new MultisetConstructorExpr(ToExprList (val_peek(1))); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxMultisetCtor); } break; case 151: //#line 1166 "CqlGrammar.y" { yyval = new MultisetConstructorExpr(ToExprList (val_peek(1))); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxMultisetCtor); } break; case 152: //#line 1175 "CqlGrammar.y" { yyval = new DotExpr((Expr)val_peek(2), (Identifier)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxDot); } break; case 153: //#line 1184 "CqlGrammar.y" { yyval = new RefExpr((Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRef); } break; case 154: //#line 1193 "CqlGrammar.y" { yyval = new DerefExpr((Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxDeref); } break; case 155: //#line 1202 "CqlGrammar.y" { yyval = new CreateRefExpr((Expr)val_peek(3), (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxCreateRef); } break; case 156: //#line 1207 "CqlGrammar.y" { yyval = new CreateRefExpr((Expr)val_peek(5), (Expr)val_peek(3), (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxCreateRef); } break; case 157: //#line 1216 "CqlGrammar.y" { yyval = new KeyExpr((Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxKey); } break; case 158: //#line 1225 "CqlGrammar.y" { yyval = new MethodExpr(((DotExpr)val_peek(2)).Left, ((DotExpr)val_peek(2)).Identifier, DistinctKind.None, null); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMethod); } break; case 159: //#line 1230 "CqlGrammar.y" { yyval = new MethodExpr(((DotExpr)val_peek(5)).Left, ((DotExpr)val_peek(5)).Identifier, (DistinctKind)val_peek(3), ToExprList (val_peek(2)), ToExprList (val_peek(0))); SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxMethod); } break; case 160: //#line 1235 "CqlGrammar.y" { yyval = new MethodExpr(((DotExpr)val_peek(5)).Left, ((DotExpr)val_peek(5)).Identifier, (DistinctKind)val_peek(3), new ExprList ((Expr)val_peek(2)), ToExprList (val_peek(0))); SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxMethod); } break; case 161: //#line 1240 "CqlGrammar.y" { yyval = new MethodExpr(null, (Identifier)val_peek(2), DistinctKind.None, null); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMethod); } break; case 162: //#line 1245 "CqlGrammar.y" { yyval = new MethodExpr(null, (Identifier)val_peek(5), (DistinctKind)val_peek(3), ToExprList (val_peek(2)), ToExprList (val_peek(0))); SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxMethod); } break; case 163: //#line 1250 "CqlGrammar.y" { yyval = new MethodExpr(null, (Identifier)val_peek(5),(DistinctKind)val_peek(3), new ExprList ((Expr)val_peek(2)), ToExprList (val_peek(0))); SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxMethod); } break; case 164: //#line 1262 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(3), (DotExpr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxNavigate); } break; case 165: //#line 1267 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxNavigate); } break; case 166: //#line 1275 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(5), (DotExpr)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxNavigate); } break; case 167: //#line 1280 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxNavigate); } break; case 168: //#line 1288 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(7), (DotExpr)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxNavigate); } break; case 169: //#line 1293 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(7), (Identifier)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxNavigate); } break; case 170: //#line 1302 "CqlGrammar.y" { yyval = null; } break; case 171: //#line 1306 "CqlGrammar.y" { yyval = val_peek(0); } break; case 172: //#line 1314 "CqlGrammar.y" { yyval = new ExprList ((RelshipNavigationExpr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxRelationshipList); } break; case 173: //#line 1319 "CqlGrammar.y" { yyval = ToExprList (val_peek(1)).Add((RelshipNavigationExpr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxRelationshipList); } break; case 174: //#line 1331 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(3), (DotExpr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxRelationship); } break; case 175: //#line 1336 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxRelationship); } break; case 176: //#line 1344 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(5), (DotExpr)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxRelationship); } break; case 177: //#line 1349 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxRelationship); } break; case 178: //#line 1357 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(7), (DotExpr)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxRelationship); } break; case 179: //#line 1362 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(7), (Identifier)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxRelationship); } break; case 180: //#line 1370 "CqlGrammar.y" { yyval = val_peek(0); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxTypeIdentifier); } break; case 181: //#line 1375 "CqlGrammar.y" { yyval = val_peek(0); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxTypeIdentifier); } break; case 182: //#line 1380 "CqlGrammar.y" { Identifier oldIdentifier = (Identifier)val_peek(1); if (0 != ((Identifier)val_peek(0)).Name.Length) { throw EntityUtil.EntitySqlError(oldIdentifier.ErrCtx, EntityRes.InvalidTypeName); } yyval = new Identifier( oldIdentifier.OriginalName + "[]", oldIdentifier.IsEscaped, _query, AstNodePos(val_peek(1))); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxTypeIdentifier); } break; case 183: //#line 1390 "CqlGrammar.y" { DotExpr oldDotExpr = (DotExpr)val_peek(1); if (0 != ((Identifier)val_peek(0)).Name.Length) { throw EntityUtil.EntitySqlError(oldDotExpr.ErrCtx, EntityRes.InvalidTypeName); } yyval = new DotExpr(oldDotExpr.Left, new Identifier( oldDotExpr.Identifier.OriginalName + "[]", oldDotExpr.Identifier.IsEscaped, _query, AstNodePos(val_peek(1)))); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxTypeIdentifier); } break; case 184: //#line 1400 "CqlGrammar.y" { SetErrCtx(AstNode(val_peek(0)), AstNodePos(val_peek(0)), EntityRes.CtxTypeIdentifier); MethodExpr methodExpr = (MethodExpr)val_peek(0); if (null == methodExpr.Args || methodExpr.Args.Count < 1 || methodExpr.Args.Count > 2) { throw EntityUtil.EntitySqlError(methodExpr.ErrCtx, System.Data.Entity.Strings.TypeIndentifierMustHaveOneOrTwoArgs); } if (!(methodExpr.Args[0] is Literal)) { throw EntityUtil.EntitySqlError(methodExpr.Args[0].ErrCtx, System.Data.Entity.Strings.TypeIndentifierArgMustBeLiteral); } if (methodExpr.Args.Count == 2 && !(methodExpr.Args[1] is Literal)) { throw EntityUtil.EntitySqlError(methodExpr.Args[1].ErrCtx, System.Data.Entity.Strings.TypeIndentifierArgMustBeLiteral); } yyval = val_peek(0); } break; case 185: //#line 1420 "CqlGrammar.y" { yyval = (Identifier)val_peek(0); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxEscapedIdentifier); } break; case 186: //#line 1425 "CqlGrammar.y" { yyval = (Identifier)val_peek(0); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxSimpleIdentifier); } break; case 187: //#line 1434 "CqlGrammar.y" { yyval = (Identifier)val_peek(0); } break; case 188: //#line 1442 "CqlGrammar.y" { yyval = val_peek(0); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxLiteral); } break; case 189: //#line 1447 "CqlGrammar.y" { yyval = new Literal(null, LiteralKind.Null, _query, TerminalPos(val_peek(0))); SetErrCtx(AstNode(yyval), Terminal(val_peek(0)), EntityRes.CtxNullLiteral); } break; //########## END OF USER-SUPPLIED ACTIONS ########## } #if YYDEBUG debug("reduce"); #endif state_drop( yym ); yystate = state_peek(0); val_drop( yym ); yym = yylhs[yyn]; if (yystate == 0 && yym == 0) { #if YYDEBUG debug("After reduction, shifting from state 0 to state "+YYFINAL+""); #endif yystate = YYFINAL; state_push( YYFINAL ); val_push( yyval ); if (yychar < 0) { yychar = yylex(); if (yychar < 0) yychar = 0; #if YYDEBUG if (yydebug) yylexdebug(yystate,yychar); #endif } if (yychar == 0) goto yyaccept; goto yyloop; } yyn = yygindex[yym]; if ((yyn!=0) && (yyn += yystate) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; if (stateptr < 0) { goto yyoverflow; } #if YYDEBUG debug("after reduction, shifting from state "+state_peek(0)+" to state "+yystate+""); #endif state_push(yystate); val_push( yyval ); goto yyloop; yyoverflow: yyerror("yacc stack overflow"); yyabort: return (1); yyaccept: return (0); } //## end of method parse() ###################################### } //################### END OF CLASS ###################### } //################### END OF NAMESPACE ###################### // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //### This file created by BYACC 1.9(/C# extension 0.9) //### C# capabilities added 11 Sep 2000 //### static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; // the current file was generated on 01/26/2008 at 16:59 //#line 2 "CqlGrammar.y" /*#define YYDEBUG*/ /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !! !! ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION !! !! !! !! DO NOT CHANGE THIS FILE (CqlParser.cs) BY HAND!!!! !! !! YOU HAVE BEEN WARNED !!!! !! !! !! !! ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION !! !! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ /*------------------------------------------------------------------------------ // // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] [....] // //---------------------------------------------------------------------------*/ using System; /* ///////////////////////////////////////////////////////////////////////////// This pragma is needed since symbols used for defining precedence are not always code generated by yacc ** ///////////////////////////////////////////////////////////////////////////*/ #pragma warning disable 414 //##################################################################### // namespace: System.Data.Common.EntitySql //##################################################################### namespace System.Data.Common.EntitySql { //##################################################################### // class: CqlParser // does : encapsulates yacc() parser functionality in a C# class //##################################################################### internal partial class CqlParser{ Boolean yydebug; //do I want debug output? static int YYMAJOR = 1; static int YYMINOR = 9; int yynerrs; //number of errors so far int yyerrflag; //was there an error? int yychar; //the current working character //########## MESSAGES ########## //############################################################### // method: debug //############################################################### void debug(String msg) { if (yydebug) Console.WriteLine(msg); } //########## STATE STACK ########## static int YYSTACKSIZE = 500; //maximum stack size int[] statestk; int stateptr; //state stack //############################################################### // methods: state stack push,pop,drop,peek //############################################################### void state_push(int state) { if (stateptr>=YYSTACKSIZE-1) //overflowed? yyerror_stackoverflow(); statestk[++stateptr]=state; } int state_pop() { if (stateptr<0) //underflowed? return -1; return statestk[stateptr--]; } void state_drop(int cnt) { int ptr; ptr=stateptr-cnt; if (ptr<0) return; stateptr = ptr; } int state_peek(int relative) { int ptr; ptr=stateptr-relative; if (ptr<0) return -1; return statestk[ptr]; } //############################################################### // method: init_stacks : allocate and prepare stacks //############################################################### Boolean init_stacks() { statestk = new int[YYSTACKSIZE]; stateptr = -1; val_init(); return true; } //############################################################### // method: dump_stacks : show n levels of the stacks //############################################################### void dump_stacks(int count) { int i; Console.WriteLine("=index==state====value= s:"+stateptr+" v:"+valptr); for (i=0;i=YYSTACKSIZE) return; valstk[++valptr]=val; } object val_pop() { if (valptr<0) return (object)-1; return valstk[valptr--]; } void val_drop(int cnt) { int ptr; ptr=valptr-cnt; if (ptr<0) return; valptr = ptr; } object val_peek(int relative) { int ptr; ptr=valptr-relative; if (ptr<0) return (object)-1; return valstk[ptr]; } //#### end semantic value section #### public static short IDENTIFIER=257; public static short ESCAPED_IDENTIFIER=258; public static short PARAMETER=259; public static short LITERAL=260; public static short ALL=261; public static short AND=262; public static short ANYELEMENT=263; public static short APPLY=264; public static short AS=265; public static short ASC=266; public static short BETWEEN=267; public static short BY=268; public static short CASE=269; public static short CAST=270; public static short COLLATE=271; public static short CROSS=272; public static short CREATEREF=273; public static short DEREF=274; public static short DESC=275; public static short DISTINCT=276; public static short ELEMENT=277; public static short ELSE=278; public static short END=279; public static short EXCEPT=280; public static short EXISTS=281; public static short ESCAPE=282; public static short FLATTEN=283; public static short FROM=284; public static short FULL=285; public static short GROUP=286; public static short HAVING=287; public static short IN=288; public static short INNER=289; public static short INTERSECT=290; public static short IS=291; public static short JOIN=292; public static short KEY=293; public static short LEFT=294; public static short LIKE=295; public static short LIMIT=296; public static short MULTISET=297; public static short NOT=298; public static short OF=299; public static short OFTYPE=300; public static short ON=301; public static short OR=302; public static short ORDER=303; public static short OUTER=304; public static short OVERLAPS=305; public static short ONLY=306; public static short REF=307; public static short RELATIONSHIP=308; public static short RIGHT=309; public static short ROW=310; public static short SELECT=311; public static short SET=312; public static short SKIP=313; public static short THEN=314; public static short TOP=315; public static short TREAT=316; public static short UNION=317; public static short USING=318; public static short VALUE=319; public static short WHEN=320; public static short WHERE=321; public static short WITH=322; public static short COMMA=323; public static short COLON=324; public static short SCOLON=325; public static short DOT=326; public static short EQUAL=327; public static short L_PAREN=328; public static short R_PAREN=329; public static short L_BRACE=330; public static short R_BRACE=331; public static short L_CURLY=332; public static short R_CURLY=333; public static short PLUS=334; public static short MINUS=335; public static short STAR=336; public static short FSLASH=337; public static short PERCENT=338; public static short OP_EQ=339; public static short OP_NEQ=340; public static short OP_LT=341; public static short OP_LE=342; public static short OP_GT=343; public static short OP_GE=344; public static short QMARK=345; public static short NAVIGATE=346; public static short NULL=347; public static short UNARYPLUS=348; public static short UNARYMINUS=349; public static short YYERRCODE=256; static short [] yylhs = { -1, 0, 0, 1, 2, 2, 4, 4, 5, 5, 5, 3, 3, 10, 10, 9, 19, 12, 22, 12, 18, 18, 18, 20, 20, 13, 23, 23, 24, 24, 24, 24, 24, 26, 26, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 14, 14, 30, 15, 15, 31, 16, 16, 33, 32, 17, 17, 36, 34, 37, 37, 38, 38, 35, 35, 39, 39, 40, 40, 40, 42, 42, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 43, 53, 54, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 57, 57, 8, 58, 25, 25, 21, 21, 55, 55, 59, 59, 60, 49, 49, 49, 7, 45, 50, 46, 46, 47, 48, 48, 48, 48, 48, 48, 51, 51, 51, 51, 51, 51, 61, 61, 62, 62, 63, 63, 63, 63, 63, 63, 56, 56, 56, 56, 56, 6, 6, 41, 52, 52, }; static short [] yylen = { 2, 0, 1, 2, 0, 1, 1, 2, 3, 3, 3, 2, 2, 0, 1, 6, 0, 5, 0, 6, 0, 1, 1, 0, 4, 2, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 2, 3, 2, 3, 2, 1, 2, 2, 3, 2, 2, 2, 0, 1, 2, 0, 1, 3, 0, 1, 0, 3, 0, 1, 0, 6, 0, 2, 0, 2, 1, 3, 2, 4, 0, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, 3, 3, 3, 3, 3, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 4, 4, 4, 4, 4, 4, 3, 4, 1, 6, 6, 6, 7, 6, 7, 7, 8, 3, 4, 5, 6, 3, 3, 3, 2, 3, 1, 1, 1, 3, 3, 3, 1, 1, 3, 3, 4, 4, 5, 2, 4, 4, 3, 3, 4, 2, 6, 8, 2, 3, 6, 6, 3, 6, 6, 6, 6, 8, 8, 10, 10, 0, 1, 2, 2, 6, 6, 8, 8, 10, 10, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, }; static short [] yydefred = { 0, 0, 0, 2, 0, 0, 6, 187, 185, 76, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, 0, 186, 75, 78, 80, 81, 82, 83, 84, 85, 86, 87, 0, 0, 117, 135, 137, 0, 3, 0, 0, 136, 0, 0, 0, 7, 0, 0, 0, 0, 0, 154, 0, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 11, 12, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 88, 0, 151, 0, 21, 22, 161, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 30, 32, 0, 0, 49, 111, 0, 0, 0, 145, 0, 0, 112, 110, 113, 150, 0, 153, 0, 0, 149, 114, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 31, 0, 46, 36, 43, 0, 42, 38, 0, 47, 40, 0, 0, 35, 0, 56, 0, 55, 0, 182, 183, 119, 0, 155, 0, 120, 118, 0, 165, 0, 164, 0, 163, 0, 162, 160, 159, 0, 0, 0, 122, 0, 0, 0, 44, 37, 39, 0, 0, 0, 0, 15, 59, 0, 121, 0, 0, 0, 172, 173, 0, 123, 124, 24, 0, 0, 60, 156, 0, 167, 0, 166, 0, 125, 0, 0, 0, 0, 0, 0, 66, 169, 168, 0, 71, 0, 72, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 61, 0, 175, 0, 174, 69, 0, 0, 0, 0, 177, 0, 176, 0, 0, 179, 178, }; static short [] yydgoto = { 2, 3, 4, 79, 5, 6, 55, 56, 57, 58, 120, 36, 60, 122, 192, 245, 290, 325, 149, 116, 227, 138, 117, 186, 187, 188, 189, 190, 241, 242, 193, 246, 291, 323, 326, 353, 348, 364, 371, 354, 361, 37, 81, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 252, 51, 52, 64, 128, 306, 307, 332, }; static short [] yysindex = { -310, 3546, 0, 0, 2931, -310, 0, 0, 0, 0, 0, -319, -258, -216, -182, -176, -171, -145, -141, -176, -140, 3546, -123, -100, -95, -79, -77, 2931, 3546, 3546, 3546, -62, 0, -157, -89, -229, 5009, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 6, 0, 0, 0, 0, 0, -52, -49, 0, -45, 4019, 5, 0, 2931, 3546, -242, 3546, 3546, 0, 2931, 2931, 2931, 0, 3546, 5403, 3546, 3546, 3546, 2931, 3546, -44, 5009, -209, -40, -40, 3546, 0, -249, 0, -241, 0, 3546, 3546, 3546, 3546, 3546, -277, 3546, -177, 3546, 3546, 3010, 2, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, -245, -25, 0, 0, 0, 3613, -18, -23, 4085, 3546, 0, 3546, 30, 4151, 4217, -21, -17, -14, -300, 4283, 4349, 4415, -283, 0, -13, 4481, 0, 3546, 0, 4547, 0, 0, 0, 2931, 0, 2931, 5403, 5338, 5565, 5499, 5612, -280, -10, 0, 5431, 3546, 3546, 3546, 5273, 5537, 3546, 5593, 0, 2914, -178, -178, -40, -40, -40, 2914, 2914, -92, -92, -92, -92, 5403, 5403, -4, -245, 3077, 31, -37, 0, 0, 0, 3546, 33, 0, 0, 3546, 5009, 4613, 0, 3546, 3546, 0, 0, 0, 0, 3144, 0, 2, 3546, 0, 0, 3546, 5009, 3546, 24, -274, 40, -236, 55, 0, 3211, 3546, 5338, 5499, 5471, 5593, 57, 3546, -4, 3887, -37, 58, 66, 3613, -226, -279, 42, 0, -232, 96, -227, 3613, 3613, 5009, 94, 110, 0, 5009, 3546, -253, -252, 0, 72, 3953, 3546, 77, 0, 0, 80, -129, -126, 88, 88, 88, 88, 3278, 3546, 82, 5499, 3546, 3546, 89, 3546, 0, 0, -37, 0, 0, 0, 121, 0, 0, 124, 0, 0, 125, 120, 0, 3546, 0, 122, 0, 5009, 0, 0, 0, 3546, 0, 101, 0, 0, 2, 0, 2, 0, 115, 0, 115, 0, 0, 0, 3546, 102, 103, 0, 5499, 4679, 89, 0, 0, 0, 3546, 89, 3546, 165, 0, 0, 106, 0, -153, -116, 108, 0, 0, 111, 0, 0, 0, 5009, 5009, 0, 0, 2, 0, 2, 0, 3546, 0, 3546, 112, 117, 4745, 3821, -197, 0, 0, 0, 3546, 0, 177, 0, 0, 3546, 3546, 141, -98, -54, -212, 5009, 0, 3546, 0, 2, 0, 2, 0, 0, 5009, -114, -106, 2, 0, 2, 0, 118, 119, 0, 0, }; static short [] yyrindex = { 145, 0, 0, 0, 0, 3345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5075, 5141, 5207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2864, 0, 222, 305, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2410, 0, 0, 0, 0, 0, 0, -168, 0, 554, 637, 0, 0, 3412, 0, 3412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3479, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2480, 187, 1851, 2134, 1428, 0, 0, 0, 2274, 0, 0, 0, 2686, 1921, 0, 1711, 0, 1498, 969, 1052, 720, 803, 886, 1568, 1638, 1135, 1205, 1275, 1345, 2550, 2620, 3680, 3479, 0, 10, 1, 0, 0, 0, 0, 64, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 2204, 2344, 1781, 0, 0, 3680, -108, 0, -31, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 11, 0, -234, 0, 4811, 4877, 4943, 0, 0, 0, 0, 0, 0, 0, 5075, 5141, 388, 388, 388, 388, 0, 0, 0, 1994, 0, 0, 169, 0, 0, 0, 4, 0, 0, 0, 3747, 0, 0, 0, 0, 0, 0, 2807, 0, 0, 0, 17, 0, -231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 471, 0, 0, 0, 0, 0, 0, 0, 2064, 0, 170, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2777, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 5075, 5141, 32, 69, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; static short [] yygindex = { 0, 0, 0, 105, 0, 453, -1, 27, 458, 67, 402, 29, 0, 0, 0, 0, 0, 0, -74, 0, 234, -220, 0, 0, -159, -61, 278, 279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 98, 107, -70, 134, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 20, 0, 161, }; static int YYTABLESIZE=5956; static short[] yytable = { 33, 26, 134, 13, 27, 293, 294, 271, 1, 62, 25, 54, 146, 278, 151, 139, 146, 58, 251, 218, 146, 157, 158, 143, 251, 279, 230, 147, 34, 204, 251, 147, 70, 59, 48, 147, 125, 126, 276, 251, 208, 57, 183, 64, 146, 146, 209, 147, 147, 143, 73, 65, 317, 62, 358, 262, 59, 80, 82, 83, 281, 50, 63, 360, 51, 284, 277, 219, 322, 63, 159, 53, 282, 251, 275, 86, 88, 285, 127, 215, 148, 217, 286, 287, 251, 251, 146, 143, 150, 147, 161, 59, 124, 264, 129, 130, 89, 59, 59, 59, 168, 80, 255, 135, 136, 137, 59, 141, 258, 54, 228, 162, 65, 145, 143, 251, 362, 267, 163, 152, 153, 154, 155, 156, 144, 160, 363, 164, 165, 167, 251, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 1, 66, 257, 101, 67, 137, 298, 27, 71, 196, 73, 197, 68, 105, 106, 107, 73, 312, 313, 141, 73, 139, 123, 85, 114, 342, 86, 212, 131, 132, 133, 343, 141, 80, 74, 80, 141, 140, 69, 141, 74, 141, 70, 72, 74, 222, 223, 224, 327, 301, 225, 141, 303, 249, 86, 302, 141, 88, 304, 249, 74, 256, 344, 334, 380, 249, 139, 259, 345, 229, 381, 214, 382, 216, 249, 243, 13, 77, 383, 247, 372, 250, 139, 75, 253, 86, 373, 250, 76, 101, 234, 87, 137, 250, 88, 260, 30, 103, 104, 105, 106, 107, 250, 235, 77, 268, 78, 236, 249, 30, 237, 137, 238, 30, 7, 8, 30, 137, 30, 249, 249, 84, 239, 115, 374, 137, 137, 240, 30, 88, 375, 86, 292, 30, 88, 118, 250, 308, 309, 310, 142, 101, 26, 26, 121, 27, 27, 250, 250, 184, 249, 25, 25, 315, 316, 329, 137, 330, 191, 26, 79, 194, 27, 201, 198, 249, 226, 202, 25, 54, 203, 210, 137, 220, 244, 48, 48, 26, 250, 26, 27, 26, 27, 70, 27, 26, 25, 13, 27, 280, 25, 54, 48, 250, 25, 54, 349, 58, 350, 57, 70, 58, 50, 50, 62, 338, 51, 339, 261, 233, 70, 365, 70, 53, 48, 283, 70, 288, 48, 50, 63, 57, 51, 64, 263, 57, 378, 64, 379, 53, 351, 65, 352, 62, 384, 65, 385, 62, 265, 366, 270, 50, 273, 170, 51, 50, 368, 352, 51, 63, 274, 53, 289, 63, 377, 53, 295, 4, 4, 4, 4, 299, 32, 4, 300, 305, 314, 208, 318, 4, 4, 319, 320, 4, 4, 32, 321, 4, 331, 32, 324, 4, 32, 4, 32, 328, 335, 336, 340, 7, 341, 346, 370, 4, 32, 347, 355, 4, 4, 32, 4, 356, 386, 387, 89, 148, 90, 4, 17, 19, 4, 4, 4, 61, 35, 119, 4, 272, 231, 232, 376, 367, 369, 333, 0, 0, 171, 0, 4, 0, 0, 0, 4, 0, 4, 4, 0, 0, 0, 77, 0, 0, 77, 77, 77, 0, 4, 4, 77, 77, 0, 0, 77, 0, 0, 77, 77, 77, 0, 77, 0, 77, 77, 77, 77, 77, 77, 77, 77, 77, 0, 77, 77, 77, 0, 77, 0, 0, 77, 77, 77, 77, 77, 0, 0, 0, 77, 0, 0, 0, 77, 77, 0, 0, 77, 0, 0, 77, 77, 0, 77, 0, 77, 77, 77, 0, 77, 0, 0, 97, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 79, 0, 0, 79, 79, 79, 0, 0, 0, 79, 79, 0, 0, 79, 0, 0, 79, 79, 79, 0, 79, 0, 79, 79, 79, 79, 79, 79, 79, 79, 79, 0, 79, 79, 79, 0, 79, 0, 0, 79, 79, 79, 79, 79, 0, 0, 0, 79, 0, 0, 0, 79, 79, 0, 0, 79, 0, 0, 79, 79, 0, 79, 0, 79, 79, 79, 0, 79, 0, 0, 96, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 170, 0, 0, 170, 170, 170, 0, 0, 0, 170, 170, 0, 0, 170, 0, 0, 170, 170, 170, 0, 170, 0, 170, 170, 170, 170, 170, 170, 170, 170, 170, 0, 170, 170, 170, 0, 170, 0, 0, 170, 170, 170, 170, 170, 0, 0, 0, 170, 0, 0, 0, 170, 170, 0, 0, 170, 0, 0, 170, 170, 0, 170, 0, 170, 170, 170, 0, 170, 0, 0, 93, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 171, 0, 0, 171, 171, 171, 0, 0, 0, 171, 171, 0, 0, 171, 0, 0, 171, 171, 171, 0, 171, 0, 171, 171, 171, 171, 171, 171, 171, 171, 171, 0, 171, 171, 171, 0, 171, 0, 0, 171, 171, 171, 171, 171, 0, 0, 0, 171, 0, 0, 0, 171, 171, 0, 0, 171, 0, 0, 171, 171, 0, 171, 0, 171, 171, 171, 0, 171, 0, 0, 94, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 97, 0, 0, 97, 97, 97, 0, 0, 0, 97, 97, 0, 0, 97, 0, 0, 97, 97, 97, 0, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 0, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 0, 0, 0, 97, 97, 0, 0, 97, 0, 0, 97, 97, 0, 97, 0, 97, 0, 97, 0, 97, 0, 0, 95, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 96, 0, 0, 96, 96, 96, 0, 0, 0, 96, 96, 0, 0, 96, 0, 0, 96, 96, 96, 0, 96, 0, 96, 96, 96, 96, 96, 96, 96, 96, 96, 0, 96, 96, 96, 0, 96, 0, 0, 96, 96, 96, 96, 96, 0, 0, 0, 96, 0, 0, 0, 96, 96, 0, 0, 96, 0, 0, 96, 96, 0, 96, 0, 96, 0, 96, 0, 96, 0, 0, 91, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 93, 0, 0, 93, 93, 93, 0, 0, 0, 93, 93, 0, 0, 93, 0, 0, 93, 93, 93, 0, 93, 0, 93, 93, 93, 93, 93, 93, 93, 93, 93, 0, 93, 93, 93, 0, 93, 0, 0, 93, 93, 93, 93, 93, 0, 0, 0, 93, 0, 0, 0, 93, 93, 0, 0, 93, 0, 0, 93, 93, 0, 93, 0, 93, 0, 93, 0, 93, 0, 0, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 94, 0, 0, 94, 94, 94, 0, 0, 0, 94, 94, 0, 0, 94, 0, 0, 94, 94, 94, 0, 94, 0, 94, 94, 94, 94, 94, 94, 94, 94, 94, 0, 94, 94, 94, 0, 94, 0, 0, 94, 94, 94, 94, 94, 0, 0, 0, 94, 0, 0, 0, 94, 94, 0, 0, 94, 0, 0, 94, 94, 0, 94, 0, 94, 0, 94, 0, 94, 0, 0, 101, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 95, 0, 0, 95, 95, 95, 0, 0, 0, 95, 95, 0, 0, 95, 0, 0, 95, 95, 95, 0, 95, 0, 95, 95, 95, 95, 95, 95, 95, 95, 95, 0, 95, 95, 95, 0, 95, 0, 0, 95, 95, 95, 95, 95, 0, 0, 0, 95, 0, 0, 0, 95, 95, 0, 0, 95, 0, 102, 95, 95, 0, 95, 0, 95, 0, 95, 0, 95, 0, 0, 0, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 91, 0, 0, 91, 91, 91, 0, 0, 0, 91, 91, 0, 0, 91, 0, 0, 91, 91, 91, 0, 91, 0, 91, 91, 91, 91, 91, 91, 91, 91, 91, 0, 91, 91, 91, 0, 91, 0, 0, 91, 91, 91, 91, 91, 99, 0, 0, 91, 0, 0, 0, 91, 91, 0, 0, 91, 0, 0, 91, 91, 0, 91, 0, 91, 0, 91, 0, 91, 0, 0, 0, 91, 91, 91, 0, 0, 0, 91, 91, 91, 91, 91, 91, 92, 0, 0, 92, 92, 92, 0, 0, 0, 92, 92, 0, 0, 92, 0, 0, 92, 92, 92, 0, 92, 0, 92, 92, 92, 92, 92, 92, 92, 92, 92, 100, 92, 92, 92, 0, 92, 0, 0, 92, 92, 92, 92, 92, 0, 0, 0, 92, 0, 0, 0, 92, 92, 0, 0, 92, 0, 0, 92, 92, 0, 92, 0, 92, 0, 92, 0, 92, 0, 0, 0, 92, 92, 92, 0, 0, 0, 92, 92, 92, 92, 92, 92, 101, 0, 0, 101, 101, 101, 0, 0, 0, 101, 101, 0, 0, 101, 0, 0, 101, 101, 101, 0, 101, 0, 101, 101, 101, 101, 101, 101, 101, 101, 101, 103, 101, 101, 101, 0, 101, 0, 0, 101, 101, 101, 101, 101, 0, 0, 0, 101, 0, 0, 0, 101, 101, 0, 0, 101, 0, 0, 101, 101, 0, 101, 0, 101, 0, 101, 0, 101, 0, 0, 102, 101, 0, 102, 102, 102, 0, 101, 101, 102, 102, 0, 0, 102, 0, 0, 102, 102, 102, 0, 102, 0, 102, 102, 102, 102, 102, 102, 102, 102, 102, 138, 102, 102, 102, 0, 102, 0, 0, 102, 102, 102, 102, 102, 0, 0, 0, 102, 0, 0, 0, 102, 102, 0, 0, 102, 0, 0, 102, 102, 0, 102, 0, 102, 0, 102, 0, 102, 0, 0, 99, 102, 0, 99, 99, 99, 0, 102, 102, 99, 99, 0, 0, 99, 0, 0, 99, 99, 99, 0, 99, 0, 99, 99, 99, 99, 99, 99, 99, 99, 99, 139, 99, 99, 99, 0, 99, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0, 99, 0, 0, 0, 99, 99, 0, 0, 99, 0, 0, 99, 99, 0, 99, 0, 99, 0, 99, 0, 99, 0, 0, 100, 99, 0, 100, 100, 100, 0, 99, 99, 100, 100, 0, 0, 100, 0, 0, 100, 100, 100, 0, 100, 0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 98, 100, 100, 100, 0, 100, 0, 0, 100, 100, 100, 100, 100, 0, 0, 0, 100, 0, 0, 0, 100, 100, 0, 0, 100, 0, 0, 100, 100, 0, 100, 0, 100, 0, 100, 0, 100, 0, 0, 0, 100, 0, 0, 0, 0, 0, 100, 100, 0, 0, 0, 0, 103, 0, 0, 103, 103, 103, 0, 0, 0, 103, 103, 0, 0, 103, 0, 0, 103, 103, 103, 0, 103, 104, 103, 103, 103, 103, 103, 103, 103, 103, 103, 0, 103, 103, 103, 0, 103, 0, 0, 103, 103, 103, 103, 103, 0, 0, 0, 103, 0, 0, 0, 103, 103, 0, 0, 103, 0, 0, 103, 103, 0, 103, 0, 103, 0, 0, 0, 103, 0, 0, 138, 103, 0, 138, 138, 138, 0, 0, 0, 138, 138, 0, 0, 138, 0, 0, 138, 138, 138, 0, 138, 105, 138, 138, 138, 138, 138, 138, 138, 138, 138, 0, 138, 138, 138, 0, 138, 0, 0, 138, 138, 138, 138, 138, 0, 0, 0, 138, 0, 0, 0, 138, 138, 0, 0, 138, 0, 0, 138, 138, 0, 138, 0, 138, 0, 0, 0, 138, 0, 0, 139, 138, 0, 139, 139, 139, 0, 0, 0, 139, 139, 0, 0, 139, 0, 0, 139, 139, 139, 0, 139, 106, 139, 139, 139, 139, 139, 139, 139, 139, 139, 0, 139, 139, 139, 0, 139, 0, 0, 139, 139, 139, 139, 139, 0, 0, 0, 139, 0, 0, 0, 139, 139, 0, 0, 139, 0, 0, 139, 139, 0, 139, 0, 139, 0, 0, 0, 139, 0, 0, 98, 139, 0, 98, 98, 98, 0, 0, 0, 98, 98, 0, 0, 98, 0, 0, 98, 98, 98, 0, 98, 107, 98, 98, 98, 98, 98, 98, 98, 98, 98, 0, 98, 98, 98, 0, 98, 0, 0, 98, 98, 98, 98, 98, 0, 0, 0, 98, 0, 0, 0, 98, 98, 0, 0, 98, 0, 0, 98, 98, 0, 98, 0, 98, 0, 0, 0, 98, 0, 0, 0, 98, 0, 104, 0, 0, 104, 104, 104, 0, 0, 0, 104, 104, 0, 0, 104, 0, 0, 104, 104, 104, 0, 104, 128, 104, 104, 104, 104, 104, 104, 0, 104, 104, 0, 104, 104, 104, 0, 104, 0, 0, 104, 104, 104, 104, 104, 0, 0, 0, 104, 0, 0, 0, 104, 104, 0, 0, 104, 0, 0, 104, 104, 0, 104, 0, 104, 0, 0, 0, 104, 0, 0, 105, 104, 0, 105, 105, 105, 0, 0, 0, 105, 105, 0, 0, 105, 0, 0, 105, 105, 105, 0, 105, 129, 105, 105, 105, 105, 105, 105, 0, 105, 105, 0, 105, 105, 105, 0, 105, 0, 0, 105, 105, 105, 105, 105, 0, 0, 0, 105, 0, 0, 0, 105, 105, 0, 0, 105, 0, 0, 105, 105, 0, 105, 0, 105, 0, 0, 0, 105, 0, 0, 106, 105, 0, 106, 106, 106, 0, 0, 0, 106, 106, 0, 0, 106, 0, 0, 106, 106, 106, 0, 106, 108, 106, 106, 106, 106, 106, 106, 0, 106, 106, 0, 106, 106, 106, 0, 106, 0, 0, 106, 106, 106, 106, 106, 0, 0, 0, 106, 0, 0, 0, 106, 106, 0, 0, 0, 0, 0, 106, 106, 0, 106, 0, 106, 0, 0, 0, 106, 0, 0, 107, 106, 0, 107, 107, 107, 0, 0, 0, 107, 107, 0, 0, 107, 0, 0, 107, 107, 0, 0, 107, 109, 107, 107, 107, 107, 107, 107, 0, 107, 107, 0, 107, 107, 107, 0, 107, 0, 0, 107, 107, 107, 107, 107, 0, 0, 0, 107, 0, 0, 0, 107, 107, 0, 0, 0, 0, 0, 107, 107, 0, 107, 0, 107, 0, 0, 0, 107, 0, 0, 0, 107, 0, 128, 0, 0, 128, 128, 128, 0, 0, 0, 128, 128, 0, 0, 128, 0, 0, 128, 128, 126, 0, 128, 0, 128, 128, 128, 128, 128, 128, 0, 128, 128, 0, 128, 128, 128, 0, 128, 0, 0, 128, 128, 128, 128, 0, 0, 0, 0, 128, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 128, 128, 0, 128, 0, 128, 0, 0, 0, 128, 0, 0, 129, 128, 0, 129, 129, 129, 0, 0, 0, 129, 129, 0, 0, 129, 0, 0, 129, 129, 127, 0, 129, 0, 129, 129, 129, 129, 129, 129, 0, 129, 129, 0, 129, 129, 129, 0, 129, 0, 0, 129, 129, 129, 129, 0, 0, 0, 0, 129, 0, 0, 0, 129, 129, 0, 0, 0, 0, 0, 129, 129, 0, 129, 0, 129, 0, 0, 0, 129, 0, 0, 108, 129, 0, 108, 108, 108, 0, 0, 0, 108, 108, 0, 0, 108, 133, 0, 108, 108, 0, 0, 108, 0, 108, 108, 108, 108, 0, 108, 0, 108, 108, 0, 108, 0, 108, 0, 108, 0, 0, 108, 108, 108, 108, 0, 0, 0, 0, 108, 0, 0, 0, 108, 108, 0, 0, 0, 0, 0, 108, 108, 0, 108, 0, 108, 0, 0, 0, 108, 0, 0, 109, 108, 0, 109, 109, 109, 0, 0, 0, 109, 109, 0, 0, 109, 134, 0, 109, 109, 0, 0, 109, 0, 109, 109, 109, 109, 0, 109, 0, 109, 109, 0, 109, 0, 109, 0, 109, 0, 0, 109, 109, 109, 109, 0, 0, 0, 0, 109, 0, 0, 0, 109, 109, 0, 0, 0, 0, 0, 109, 109, 0, 109, 0, 109, 0, 0, 0, 109, 0, 0, 126, 109, 0, 126, 126, 126, 0, 0, 0, 126, 126, 0, 0, 126, 130, 0, 126, 126, 0, 0, 0, 0, 126, 126, 126, 126, 0, 126, 0, 126, 126, 0, 126, 0, 126, 0, 126, 0, 0, 126, 126, 126, 126, 0, 0, 0, 0, 126, 0, 0, 0, 126, 126, 0, 0, 0, 0, 0, 126, 126, 0, 126, 0, 126, 0, 0, 0, 126, 0, 0, 127, 126, 0, 127, 127, 127, 0, 0, 0, 127, 127, 0, 0, 127, 131, 0, 127, 127, 0, 0, 0, 0, 127, 127, 127, 127, 0, 127, 0, 127, 127, 0, 127, 0, 127, 0, 127, 0, 0, 127, 127, 127, 127, 0, 0, 0, 0, 127, 0, 0, 0, 127, 127, 0, 0, 0, 0, 0, 127, 127, 0, 127, 0, 127, 0, 0, 133, 127, 0, 133, 133, 127, 0, 0, 0, 133, 133, 0, 0, 133, 132, 0, 133, 133, 0, 0, 133, 0, 133, 133, 133, 133, 0, 133, 0, 0, 133, 0, 133, 0, 133, 0, 0, 0, 0, 133, 133, 133, 133, 0, 0, 0, 0, 133, 0, 0, 0, 133, 133, 0, 0, 0, 0, 0, 133, 133, 0, 133, 0, 133, 141, 0, 0, 133, 0, 0, 134, 133, 0, 134, 134, 0, 0, 0, 0, 134, 134, 0, 0, 134, 0, 0, 134, 134, 0, 0, 134, 0, 134, 134, 134, 134, 0, 134, 0, 0, 134, 0, 134, 0, 134, 34, 0, 0, 0, 134, 134, 134, 134, 0, 0, 0, 0, 134, 0, 0, 0, 134, 134, 0, 0, 0, 0, 0, 134, 134, 0, 134, 0, 134, 0, 33, 0, 134, 0, 0, 130, 134, 0, 130, 130, 0, 0, 0, 0, 130, 130, 0, 0, 130, 0, 0, 130, 130, 0, 0, 130, 0, 130, 130, 130, 130, 0, 130, 0, 0, 130, 0, 130, 0, 130, 0, 0, 0, 0, 130, 130, 130, 130, 0, 0, 0, 0, 130, 0, 0, 0, 130, 130, 0, 0, 0, 0, 0, 130, 130, 0, 130, 0, 130, 0, 0, 0, 130, 0, 0, 131, 130, 0, 131, 131, 0, 0, 0, 0, 131, 131, 0, 0, 131, 0, 0, 131, 131, 0, 0, 131, 0, 131, 131, 131, 131, 0, 131, 0, 0, 131, 0, 131, 0, 131, 0, 0, 0, 0, 131, 131, 131, 131, 0, 0, 0, 0, 131, 0, 0, 0, 131, 131, 0, 0, 0, 0, 0, 131, 131, 0, 131, 0, 131, 0, 0, 0, 131, 0, 132, 132, 131, 0, 0, 0, 132, 132, 0, 0, 132, 0, 0, 132, 132, 0, 0, 132, 0, 132, 132, 132, 132, 0, 132, 0, 0, 132, 0, 132, 0, 132, 0, 0, 0, 0, 132, 132, 132, 132, 0, 0, 0, 0, 132, 0, 0, 0, 132, 132, 0, 0, 0, 0, 0, 132, 132, 141, 132, 0, 132, 0, 0, 0, 132, 0, 0, 0, 132, 141, 141, 141, 141, 0, 141, 0, 0, 141, 0, 141, 0, 0, 0, 0, 0, 0, 141, 0, 141, 141, 0, 0, 0, 0, 141, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 141, 0, 141, 0, 141, 34, 34, 34, 141, 34, 0, 0, 34, 0, 34, 0, 0, 0, 0, 0, 0, 34, 33, 34, 34, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 33, 33, 33, 0, 33, 0, 34, 33, 34, 33, 34, 0, 0, 0, 34, 0, 0, 0, 33, 33, 0, 0, 0, 0, 33, 0, 0, 0, 0, 16, 16, 16, 16, 16, 0, 16, 33, 0, 33, 0, 33, 16, 16, 0, 33, 16, 16, 0, 16, 16, 0, 0, 0, 16, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 16, 0, 16, 0, 0, 0, 0, 0, 0, 16, 0, 0, 16, 0, 16, 0, 0, 16, 16, 0, 0, 18, 0, 0, 0, 0, 7, 8, 9, 10, 16, 0, 11, 0, 16, 0, 16, 16, 12, 13, 0, 0, 14, 15, 0, 0, 16, 0, 16, 16, 17, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 20, 21, 0, 22, 0, 0, 0, 0, 0, 0, 23, 0, 101, 24, 53, 25, 0, 0, 0, 26, 103, 104, 105, 106, 107, 0, 0, 110, 111, 112, 113, 27, 0, 0, 0, 28, 0, 29, 30, 7, 8, 9, 10, 166, 0, 11, 0, 0, 0, 31, 32, 12, 13, 0, 0, 14, 15, 0, 0, 16, 0, 0, 0, 17, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 20, 21, 0, 22, 0, 0, 0, 0, 0, 0, 23, 0, 0, 24, 0, 25, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 27, 0, 11, 0, 28, 0, 29, 30, 12, 13, 0, 0, 14, 15, 0, 0, 16, 0, 31, 32, 17, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 20, 21, 0, 22, 0, 0, 0, 0, 0, 0, 23, 0, 0, 24, 53, 25, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 185, 0, 11, 0, 28, 0, 29, 30, 12, 13, 0, 0, 14, 15, 0, 0, 16, 0, 31, 32, 17, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 20, 21, 0, 22, 0, 0, 0, 0, 0, 254, 23, 0, 0, 24, 0, 25, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 27, 0, 11, 0, 28, 0, 29, 30, 12, 13, 0, 0, 14, 15, 0, 0, 16, 0, 31, 32, 17, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 20, 21, 0, 22, 0, 0, 0, 0, 0, 266, 23, 0, 0, 24, 0, 25, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 27, 0, 11, 0, 28, 0, 29, 30, 12, 13, 0, 0, 14, 15, 0, 0, 16, 0, 31, 32, 17, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 20, 21, 0, 22, 0, 0, 0, 0, 0, 311, 23, 0, 0, 24, 0, 25, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 27, 0, 5, 0, 28, 0, 29, 30, 5, 5, 0, 0, 5, 5, 0, 0, 5, 0, 31, 32, 5, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 5, 0, 5, 0, 0, 0, 0, 0, 0, 5, 0, 0, 5, 5, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 20, 20, 20, 20, 5, 0, 20, 0, 5, 0, 5, 5, 20, 20, 0, 0, 20, 20, 0, 0, 20, 0, 5, 5, 20, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 20, 20, 0, 20, 0, 0, 0, 0, 0, 0, 20, 0, 0, 20, 20, 20, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 20, 20, 20, 20, 20, 0, 20, 0, 20, 0, 20, 20, 20, 20, 0, 0, 20, 20, 0, 0, 20, 0, 20, 20, 20, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 20, 20, 0, 20, 0, 0, 0, 0, 0, 0, 20, 0, 0, 20, 0, 20, 0, 0, 20, 20, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 20, 0, 11, 0, 20, 0, 20, 20, 12, 13, 0, 0, 14, 15, 0, 0, 16, 0, 20, 20, 17, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 20, 21, 0, 22, 0, 0, 0, 0, 0, 0, 23, 0, 0, 24, 0, 25, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 27, 0, 11, 0, 28, 0, 29, 30, 12, 13, 0, 0, 14, 15, 0, 0, 16, 0, 31, 32, 17, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 20, 21, 0, 22, 0, 0, 0, 0, 0, 0, 23, 0, 0, 24, 0, 25, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 185, 0, 23, 0, 28, 0, 29, 30, 23, 23, 0, 0, 23, 23, 0, 0, 23, 0, 31, 32, 23, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 23, 23, 0, 23, 0, 0, 0, 0, 0, 0, 23, 0, 0, 23, 0, 23, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 45, 45, 45, 45, 23, 0, 45, 0, 23, 0, 23, 23, 45, 45, 0, 0, 45, 45, 0, 0, 45, 0, 23, 23, 45, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 45, 45, 0, 45, 0, 0, 0, 0, 0, 0, 45, 0, 0, 45, 0, 45, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 45, 0, 45, 45, 90, 0, 0, 0, 358, 91, 0, 0, 0, 359, 45, 45, 0, 360, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 90, 0, 0, 207, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 118, 101, 102, 90, 0, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 296, 0, 0, 101, 102, 90, 297, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 118, 101, 102, 90, 0, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 90, 0, 0, 199, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 90, 0, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 200, 0, 0, 101, 102, 90, 0, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 205, 0, 0, 101, 102, 90, 0, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 90, 206, 0, 207, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 90, 0, 0, 211, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 90, 0, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 213, 0, 0, 101, 102, 90, 0, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 248, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 90, 0, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 90, 337, 0, 0, 0, 91, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 357, 0, 0, 101, 102, 77, 0, 0, 0, 0, 77, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 77, 0, 0, 0, 0, 0, 0, 0, 77, 0, 77, 77, 0, 0, 0, 77, 0, 0, 77, 0, 0, 0, 77, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 77, 77, 79, 180, 0, 0, 0, 79, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 0, 79, 0, 0, 0, 0, 0, 0, 0, 79, 0, 79, 79, 0, 0, 0, 79, 0, 0, 79, 0, 0, 0, 79, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 79, 79, 83, 181, 0, 0, 0, 83, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 0, 83, 0, 0, 0, 0, 0, 0, 0, 83, 0, 83, 83, 0, 0, 0, 83, 0, 0, 83, 0, 0, 0, 83, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 83, 83, 90, 184, 0, 0, 0, 91, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 77, 0, 0, 0, 0, 77, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 77, 0, 0, 0, 0, 0, 0, 0, 77, 0, 77, 77, 0, 0, 0, 77, 0, 0, 77, 0, 0, 0, 77, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 77, 77, 79, 0, 0, 0, 0, 79, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 0, 79, 0, 0, 0, 0, 0, 0, 0, 79, 0, 79, 79, 0, 0, 0, 79, 0, 0, 79, 0, 0, 0, 79, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 79, 79, 136, 0, 0, 0, 0, 136, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 0, 136, 0, 0, 0, 0, 0, 0, 0, 136, 0, 136, 136, 0, 0, 0, 136, 0, 0, 136, 0, 0, 0, 136, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 136, 136, 90, 0, 0, 0, 0, 91, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, 0, 0, 0, 91, 0, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, 0, 0, 0, 91, 0, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 92, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 95, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 0, 0, 0, 99, 0, 0, 92, 0, 221, 0, 0, 0, 0, 0, 0, 100, 94, 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, 0, 0, 0, 0, 99, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 100, 0, 0, 92, 0, 269, 0, 0, 0, 101, 102, 0, 0, 94, 0, 0, 0, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 99, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 100, 94, 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, 0, 0, 0, 0, 99, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 100, 92, 0, 0, 0, 0, 0, 0, 0, 101, 102, 94, 0, 0, 0, 0, 0, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 94, 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, 0, 0, 0, 0, 0, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 100, 94, 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, 0, 0, 0, 0, 0, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, 0, 0, 0, 0, 0, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 101, 102, 0, 0, 0, 0, 0, 0, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, }; static short [] yycheck = { 1, 0, 72, 0, 0, 258, 258, 227, 318, 328, 0, 0, 261, 292, 88, 76, 261, 0, 199, 299, 261, 298, 299, 323, 205, 304, 185, 276, 1, 329, 211, 276, 0, 4, 0, 276, 278, 279, 264, 220, 323, 0, 116, 0, 278, 279, 329, 278, 279, 323, 21, 0, 272, 0, 266, 329, 27, 28, 29, 30, 292, 0, 320, 275, 0, 292, 292, 347, 288, 0, 347, 0, 304, 254, 233, 328, 328, 304, 320, 149, 329, 151, 241, 242, 265, 266, 320, 323, 329, 320, 267, 62, 63, 329, 65, 66, 325, 68, 69, 70, 101, 72, 205, 74, 75, 76, 77, 78, 211, 4, 184, 288, 328, 84, 323, 296, 313, 220, 295, 90, 91, 92, 93, 94, 333, 96, 323, 98, 99, 100, 311, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 0, 328, 208, 326, 15, 121, 254, 328, 19, 125, 323, 127, 328, 336, 337, 338, 329, 265, 266, 272, 333, 227, 62, 325, 262, 323, 328, 143, 68, 69, 70, 329, 285, 149, 323, 151, 289, 77, 328, 292, 329, 294, 328, 328, 333, 161, 162, 163, 296, 323, 166, 304, 323, 199, 328, 329, 309, 328, 329, 205, 328, 207, 323, 311, 323, 211, 272, 213, 329, 185, 329, 149, 323, 151, 220, 191, 329, 0, 329, 195, 323, 199, 288, 328, 200, 328, 329, 205, 328, 326, 272, 325, 208, 211, 328, 213, 272, 334, 335, 336, 337, 338, 220, 285, 328, 221, 328, 289, 254, 285, 292, 227, 294, 289, 257, 258, 292, 233, 294, 265, 266, 328, 304, 262, 323, 241, 242, 309, 304, 328, 329, 328, 248, 309, 328, 325, 254, 262, 263, 264, 329, 326, 286, 287, 284, 286, 287, 265, 266, 319, 296, 286, 287, 269, 270, 301, 272, 303, 321, 303, 0, 329, 303, 329, 279, 311, 315, 329, 303, 303, 329, 329, 288, 328, 286, 286, 287, 321, 296, 323, 321, 325, 323, 296, 325, 329, 321, 329, 329, 292, 325, 325, 303, 311, 329, 329, 342, 325, 344, 303, 313, 329, 286, 287, 296, 321, 287, 323, 329, 323, 323, 357, 325, 287, 325, 264, 329, 268, 329, 303, 296, 325, 303, 325, 329, 329, 372, 329, 374, 303, 346, 325, 348, 325, 380, 329, 382, 329, 328, 357, 328, 325, 329, 0, 325, 329, 362, 363, 329, 325, 329, 325, 287, 329, 370, 329, 329, 257, 258, 259, 260, 329, 272, 263, 329, 322, 329, 323, 292, 269, 270, 292, 292, 273, 274, 285, 301, 277, 308, 289, 303, 281, 292, 283, 294, 329, 329, 329, 268, 257, 329, 328, 296, 293, 304, 329, 329, 297, 298, 309, 300, 329, 329, 329, 262, 279, 262, 307, 284, 284, 310, 311, 312, 5, 1, 58, 316, 228, 185, 185, 367, 359, 363, 307, -1, -1, 0, -1, 328, -1, -1, -1, 332, -1, 334, 335, -1, -1, -1, 262, -1, -1, 265, 266, 267, -1, 346, 347, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, 326, 327, -1, 329, -1, -1, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, 326, 327, -1, 329, -1, -1, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, 326, 327, -1, 329, -1, -1, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, 326, 327, -1, 329, -1, -1, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, 0, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, -1, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, 0, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, -1, 333, 334, 335, -1, -1, -1, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, 0, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, -1, 333, 334, 335, -1, -1, -1, 339, 340, 341, 342, 343, 344, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, 0, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, 339, 340, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, 0, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, 339, 340, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, 0, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, 339, 340, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, 0, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, 327, -1, 329, -1, -1, -1, 333, -1, -1, -1, -1, -1, 339, 340, -1, -1, -1, -1, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, 0, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, 0, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, 0, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, 0, 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, -1, 333, -1, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, 0, 284, 285, 286, 287, 288, 289, -1, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, 0, 284, 285, 286, 287, 288, 289, -1, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, 317, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 280, -1, 282, 0, 284, 285, 286, 287, 288, 289, -1, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, -1, -1, 282, 0, 284, 285, 286, 287, 288, 289, -1, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, 305, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, -1, 333, -1, 262, -1, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 0, -1, 282, -1, 284, 285, 286, 287, 288, 289, -1, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, 0, -1, 282, -1, 284, 285, 286, 287, 288, 289, -1, 291, 292, -1, 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, 0, -1, 278, 279, -1, -1, 282, -1, 284, 285, 286, 287, -1, 289, -1, 291, 292, -1, 294, -1, 296, -1, 298, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, 0, -1, 278, 279, -1, -1, 282, -1, 284, 285, 286, 287, -1, 289, -1, 291, 292, -1, 294, -1, 296, -1, 298, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, 0, -1, 278, 279, -1, -1, -1, -1, 284, 285, 286, 287, -1, 289, -1, 291, 292, -1, 294, -1, 296, -1, 298, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, 267, -1, -1, -1, 271, 272, -1, -1, 275, 0, -1, 278, 279, -1, -1, -1, -1, 284, 285, 286, 287, -1, 289, -1, 291, 292, -1, 294, -1, 296, -1, 298, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, 262, 329, -1, 265, 266, 333, -1, -1, -1, 271, 272, -1, -1, 275, 0, -1, 278, 279, -1, -1, 282, -1, 284, 285, 286, 287, -1, 289, -1, -1, 292, -1, 294, -1, 296, -1, -1, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, 0, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, -1, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, -1, -1, 282, -1, 284, 285, 286, 287, -1, 289, -1, -1, 292, -1, 294, -1, 296, 0, -1, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, 0, -1, 329, -1, -1, 262, 333, -1, 265, 266, -1, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, -1, -1, 282, -1, 284, 285, 286, 287, -1, 289, -1, -1, 292, -1, 294, -1, 296, -1, -1, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, -1, 262, 333, -1, 265, 266, -1, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, -1, -1, 282, -1, 284, 285, 286, 287, -1, 289, -1, -1, 292, -1, 294, -1, 296, -1, -1, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, -1, 323, -1, 325, -1, -1, -1, 329, -1, 265, 266, 333, -1, -1, -1, 271, 272, -1, -1, 275, -1, -1, 278, 279, -1, -1, 282, -1, 284, 285, 286, 287, -1, 289, -1, -1, 292, -1, 294, -1, 296, -1, -1, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 313, 314, -1, -1, -1, -1, -1, 320, 321, 272, 323, -1, 325, -1, -1, -1, 329, -1, -1, -1, 333, 284, 285, 286, 287, -1, 289, -1, -1, 292, -1, 294, -1, -1, -1, -1, -1, -1, 301, -1, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, 272, -1, -1, -1, -1, -1, -1, -1, 321, -1, 323, -1, 325, 285, 286, 287, 329, 289, -1, -1, 292, -1, 294, -1, -1, -1, -1, -1, -1, 301, 272, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, -1, -1, 285, 286, 287, -1, 289, -1, 321, 292, 323, 294, 325, -1, -1, -1, 329, -1, -1, -1, 303, 304, -1, -1, -1, -1, 309, -1, -1, -1, -1, 257, 258, 259, 260, 261, -1, 263, 321, -1, 323, -1, 325, 269, 270, -1, 329, 273, 274, -1, 276, 277, -1, -1, -1, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, -1, 312, -1, -1, 315, 316, -1, -1, 319, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, 326, 310, 311, 312, -1, -1, -1, 316, 334, 335, 336, 337, 338, -1, -1, 341, 342, 343, 344, 328, -1, -1, -1, 332, -1, 334, 335, 257, 258, 259, 260, 261, -1, 263, -1, -1, -1, 346, 347, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, -1, -1, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, -1, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, 311, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, 306, 307, -1, -1, 310, -1, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, 306, 307, -1, -1, 310, -1, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, 306, 307, -1, -1, 310, -1, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, 311, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, 311, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, -1, 312, -1, -1, 315, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, -1, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, -1, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, -1, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 328, -1, 263, -1, 332, -1, 334, 335, 269, 270, -1, -1, 273, 274, -1, -1, 277, -1, 346, 347, 281, -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, 297, 298, -1, 300, -1, -1, -1, -1, -1, -1, 307, -1, -1, 310, -1, 312, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 328, -1, -1, -1, 332, -1, 334, 335, 262, -1, -1, -1, 266, 267, -1, -1, -1, 271, 346, 347, -1, 275, -1, -1, -1, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, 265, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, 325, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, 323, -1, -1, 326, 327, 262, 329, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, 325, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, 314, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, 265, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, 323, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, 323, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, 329, -1, 265, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, 265, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, 323, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, 314, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, 329, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, 323, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, 329, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, 329, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, 329, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, 262, -1, -1, -1, -1, 267, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, -1, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, -1, -1, -1, -1, 267, -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, 302, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, -1, -1, -1, -1, 267, -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 280, -1, -1, -1, -1, -1, -1, -1, 288, -1, 290, 291, -1, -1, -1, 295, -1, -1, 298, -1, -1, -1, -1, -1, -1, 305, -1, -1, 280, -1, 282, -1, -1, -1, -1, -1, -1, 317, 290, -1, -1, -1, -1, -1, -1, -1, 326, 327, -1, -1, -1, -1, -1, 305, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 317, -1, -1, 280, -1, 282, -1, -1, -1, 326, 327, -1, -1, 290, -1, -1, -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 305, -1, -1, 280, -1, -1, -1, -1, -1, -1, -1, -1, 317, 290, -1, -1, -1, -1, -1, -1, -1, 326, 327, -1, -1, -1, -1, -1, 305, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 317, 280, -1, -1, -1, -1, -1, -1, -1, 326, 327, 290, -1, -1, -1, -1, -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, 290, -1, -1, -1, -1, -1, -1, -1, 326, 327, -1, -1, -1, -1, -1, -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 317, 290, -1, -1, -1, -1, -1, -1, -1, 326, 327, -1, -1, -1, -1, -1, -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, -1, -1, -1, -1, -1, -1, -1, -1, 326, 327, -1, -1, -1, -1, -1, -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 326, 327, -1, -1, -1, -1, -1, -1, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, }; static short YYFINAL=2; static short YYMAXTOKEN=349; static String [] yyname = { "end-of-file",null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,"IDENTIFIER","ESCAPED_IDENTIFIER","PARAMETER","LITERAL","ALL", "AND","ANYELEMENT","APPLY","AS","ASC","BETWEEN","BY","CASE","CAST","COLLATE", "CROSS","CREATEREF","DEREF","DESC","DISTINCT","ELEMENT","ELSE","END","EXCEPT", "EXISTS","ESCAPE","FLATTEN","FROM","FULL","GROUP","HAVING","IN","INNER", "INTERSECT","IS","JOIN","KEY","LEFT","LIKE","LIMIT","MULTISET","NOT","OF", "OFTYPE","ON","OR","ORDER","OUTER","OVERLAPS","ONLY","REF","RELATIONSHIP", "RIGHT","ROW","SELECT","SET","SKIP","THEN","TOP","TREAT","UNION","USING", "VALUE","WHEN","WHERE","WITH","COMMA","COLON","SCOLON","DOT","EQUAL","L_PAREN", "R_PAREN","L_BRACE","R_BRACE","L_CURLY","R_CURLY","PLUS","MINUS","STAR", "FSLASH","PERCENT","OP_EQ","OP_NEQ","OP_LT","OP_LE","OP_GT","OP_GE","QMARK", "NAVIGATE","NULL","UNARYPLUS","UNARYMINUS", }; static String [] yyrule = { "$accept : commandStart", "commandStart :", "commandStart : command", "command : optNamespaceDeclList generalExpr", "optNamespaceDeclList :", "optNamespaceDeclList : namespaceDeclList", "namespaceDeclList : namespaceDecl", "namespaceDeclList : namespaceDeclList namespaceDecl", "namespaceDecl : USING identifier SCOLON", "namespaceDecl : USING dotExpr SCOLON", "namespaceDecl : USING assignExpr SCOLON", "generalExpr : queryExpr optSemiColon", "generalExpr : Expr optSemiColon", "optSemiColon :", "optSemiColon : SCOLON", "queryExpr : selectClause fromClause optWhereClause optGroupByClause optHavingClause optOrderByClause", "$$1 :", "selectClause : SELECT $$1 optAllOrDistinct optTopClause aliasExprList", "$$2 :", "selectClause : SELECT $$2 VALUE optAllOrDistinct optTopClause aliasExprList", "optAllOrDistinct :", "optAllOrDistinct : ALL", "optAllOrDistinct : DISTINCT", "optTopClause :", "optTopClause : TOP L_PAREN Expr R_PAREN", "fromClause : FROM fromClauseList", "fromClauseList : fromClauseItem", "fromClauseList : fromClauseList COMMA fromClauseItem", "fromClauseItem : aliasExpr", "fromClauseItem : L_PAREN joinClauseItem R_PAREN", "fromClauseItem : joinClauseItem", "fromClauseItem : L_PAREN applyClauseItem R_PAREN", "fromClauseItem : applyClauseItem", "joinClauseItem : fromClauseItem joinType fromClauseItem", "joinClauseItem : fromClauseItem joinType fromClauseItem ON Expr", "applyClauseItem : fromClauseItem applyType fromClauseItem", "joinType : CROSS JOIN", "joinType : LEFT OUTER JOIN", "joinType : LEFT JOIN", "joinType : RIGHT OUTER JOIN", "joinType : RIGHT JOIN", "joinType : JOIN", "joinType : INNER JOIN", "joinType : FULL JOIN", "joinType : FULL OUTER JOIN", "joinType : FULL OUTER", "applyType : CROSS APPLY", "applyType : OUTER APPLY", "optWhereClause :", "optWhereClause : whereClause", "whereClause : WHERE Expr", "optGroupByClause :", "optGroupByClause : groupByClause", "groupByClause : GROUP BY aliasExprList", "optHavingClause :", "optHavingClause : havingClause", "$$3 :", "havingClause : HAVING $$3 Expr", "optOrderByClause :", "optOrderByClause : orderByClause", "$$4 :", "orderByClause : ORDER BY $$4 orderByItemList optSkipSubClause optLimitSubClause", "optSkipSubClause :", "optSkipSubClause : SKIP Expr", "optLimitSubClause :", "optLimitSubClause : LIMIT Expr", "orderByItemList : orderByClauseItem", "orderByItemList : orderByItemList COMMA orderByClauseItem", "orderByClauseItem : Expr optAscDesc", "orderByClauseItem : Expr COLLATE simpleIdentifier optAscDesc", "optAscDesc :", "optAscDesc : ASC", "optAscDesc : DESC", "exprList : Expr", "exprList : exprList COMMA Expr", "Expr : parenExpr", "Expr : PARAMETER", "Expr : identifier", "Expr : builtInExpr", "Expr : dotExpr", "Expr : refExpr", "Expr : createRefExpr", "Expr : keyExpr", "Expr : methodExpr", "Expr : ctorExpr", "Expr : derefExpr", "Expr : navigateExpr", "Expr : literalExpr", "parenExpr : L_PAREN generalExpr R_PAREN", "betweenPrefix : Expr BETWEEN Expr", "notBetweenPrefix : Expr NOT BETWEEN Expr", "builtInExpr : Expr PLUS Expr", "builtInExpr : Expr MINUS Expr", "builtInExpr : Expr STAR Expr", "builtInExpr : Expr FSLASH Expr", "builtInExpr : Expr PERCENT Expr", "builtInExpr : MINUS Expr", "builtInExpr : PLUS Expr", "builtInExpr : Expr OP_NEQ Expr", "builtInExpr : Expr OP_GT Expr", "builtInExpr : Expr OP_GE Expr", "builtInExpr : Expr OP_LT Expr", "builtInExpr : Expr OP_LE Expr", "builtInExpr : Expr INTERSECT Expr", "builtInExpr : Expr UNION Expr", "builtInExpr : Expr UNION ALL Expr", "builtInExpr : Expr EXCEPT Expr", "builtInExpr : Expr OVERLAPS Expr", "builtInExpr : Expr IN Expr", "builtInExpr : Expr NOT IN Expr", "builtInExpr : EXISTS L_PAREN generalExpr R_PAREN", "builtInExpr : ANYELEMENT L_PAREN generalExpr R_PAREN", "builtInExpr : ELEMENT L_PAREN generalExpr R_PAREN", "builtInExpr : FLATTEN L_PAREN generalExpr R_PAREN", "builtInExpr : SET L_PAREN generalExpr R_PAREN", "builtInExpr : Expr IS NULL", "builtInExpr : Expr IS NOT NULL", "builtInExpr : searchedCaseExpr", "builtInExpr : TREAT L_PAREN Expr AS typeIdentifier R_PAREN", "builtInExpr : CAST L_PAREN Expr AS typeIdentifier R_PAREN", "builtInExpr : OFTYPE L_PAREN Expr COMMA typeIdentifier R_PAREN", "builtInExpr : OFTYPE L_PAREN Expr COMMA ONLY typeIdentifier R_PAREN", "builtInExpr : Expr IS OF L_PAREN typeIdentifier R_PAREN", "builtInExpr : Expr IS NOT OF L_PAREN typeIdentifier R_PAREN", "builtInExpr : Expr IS OF L_PAREN ONLY typeIdentifier R_PAREN", "builtInExpr : Expr IS NOT OF L_PAREN ONLY typeIdentifier R_PAREN", "builtInExpr : Expr LIKE Expr", "builtInExpr : Expr NOT LIKE Expr", "builtInExpr : Expr LIKE Expr ESCAPE Expr", "builtInExpr : Expr NOT LIKE Expr ESCAPE Expr", "builtInExpr : betweenPrefix AND Expr", "builtInExpr : notBetweenPrefix AND Expr", "builtInExpr : Expr OR Expr", "builtInExpr : NOT Expr", "builtInExpr : Expr AND Expr", "builtInExpr : equalsOrAssignExpr", "equalsOrAssignExpr : assignExpr", "equalsOrAssignExpr : equalsExpr", "assignExpr : Expr EQUAL Expr", "equalsExpr : Expr OP_EQ Expr", "aliasExpr : Expr AS identifier", "aliasExpr : Expr", "aliasExprList : aliasExpr", "aliasExprList : aliasExprList COMMA aliasExpr", "searchedCaseExpr : CASE whenThenExprList END", "searchedCaseExpr : CASE whenThenExprList caseElseExpr END", "whenThenExprList : WHEN Expr THEN Expr", "whenThenExprList : whenThenExprList WHEN Expr THEN Expr", "caseElseExpr : ELSE Expr", "ctorExpr : ROW L_PAREN aliasExprList R_PAREN", "ctorExpr : MULTISET L_PAREN exprList R_PAREN", "ctorExpr : L_CURLY exprList R_CURLY", "dotExpr : Expr DOT identifier", "refExpr : REF L_PAREN Expr R_PAREN", "derefExpr : DEREF parenExpr", "createRefExpr : CREATEREF L_PAREN Expr COMMA Expr R_PAREN", "createRefExpr : CREATEREF L_PAREN Expr COMMA Expr COMMA typeIdentifier R_PAREN", "keyExpr : KEY parenExpr", "methodExpr : dotExpr L_PAREN R_PAREN", "methodExpr : dotExpr L_PAREN optAllOrDistinct exprList R_PAREN optWithRelationship", "methodExpr : dotExpr L_PAREN optAllOrDistinct queryExpr R_PAREN optWithRelationship", "methodExpr : identifier L_PAREN R_PAREN", "methodExpr : identifier L_PAREN optAllOrDistinct exprList R_PAREN optWithRelationship", "methodExpr : identifier L_PAREN optAllOrDistinct queryExpr R_PAREN optWithRelationship", "navigateExpr : NAVIGATE L_PAREN Expr COMMA dotExpr R_PAREN", "navigateExpr : NAVIGATE L_PAREN Expr COMMA identifier R_PAREN", "navigateExpr : NAVIGATE L_PAREN Expr COMMA dotExpr COMMA identifier R_PAREN", "navigateExpr : NAVIGATE L_PAREN Expr COMMA identifier COMMA identifier R_PAREN", "navigateExpr : NAVIGATE L_PAREN Expr COMMA dotExpr COMMA identifier COMMA identifier R_PAREN", "navigateExpr : NAVIGATE L_PAREN Expr COMMA identifier COMMA identifier COMMA identifier R_PAREN", "optWithRelationship :", "optWithRelationship : relationshipList", "relationshipList : WITH relationshipExpr", "relationshipList : relationshipList relationshipExpr", "relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA dotExpr R_PAREN", "relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA identifier R_PAREN", "relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA dotExpr COMMA identifier R_PAREN", "relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA identifier COMMA identifier R_PAREN", "relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA dotExpr COMMA identifier COMMA identifier R_PAREN", "relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA identifier COMMA identifier COMMA identifier R_PAREN", "typeIdentifier : identifier", "typeIdentifier : dotExpr", "typeIdentifier : identifier ESCAPED_IDENTIFIER", "typeIdentifier : dotExpr ESCAPED_IDENTIFIER", "typeIdentifier : methodExpr", "identifier : ESCAPED_IDENTIFIER", "identifier : simpleIdentifier", "simpleIdentifier : IDENTIFIER", "literalExpr : LITERAL", "literalExpr : NULL", }; //#line 1455 "CqlGrammar.y" #pragma warning restore 414 //############################################################### // method: yylexdebug : check lexer state //############################################################### void yylexdebug(int state,int ch) { String s=null; if (ch < 0) ch=0; if (ch <= YYMAXTOKEN) //check index bounds s = yyname[ch]; //now get it if (s==null) s = "illegal-symbol"; debug("state "+state+", reading "+ch+" ("+s+")"); } //############################################################### // method: yyparse : parse input and execute indicated items //############################################################### int yyparse() { int yyn; //next thing to do int yym; // int yystate; //current parsing state from state table #if YYDEBUG String yys; //current token string #endif init_stacks(); yynerrs = 0; yyerrflag = 0; yychar = (-1); yystate = 0; state_push(yystate); yyloop: #if YYDEBUG debug("yyloop"); #endif yyn = yydefred[yystate]; if (yyn!=0) goto yyreduce; #if YYDEBUG debug("yyn:"+yyn+" state:"+yystate+" char:"+yychar); #endif if (yychar < 0) { yychar = yylex(); if (yychar < 0) yychar = 0; } yyn = yysindex[yystate]; if ((yyn!=0) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { #if YYDEBUG debug("state "+yystate+", shifting to state "+yytable[yyn]+""); #endif yystate = yytable[yyn]; state_push(yystate); val_push( yylval ); yychar = (-1); if (yyerrflag > 0) --yyerrflag; goto yyloop; } yyn = yyrindex[yystate]; if ((yyn!=0) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { yyn = yytable[yyn]; #if YYDEBUG debug("reduce"); #endif goto yyreduce; } if (yyerrflag!=0) goto yyinrecovery; yyerror("syntax error"); ++yynerrs; yyinrecovery: if (yyerrflag < 3) { yyerrflag = 3; for (;;) { if (stateptr < 0) { goto yyoverflow; } yyn = yysindex[state_peek(0)]; if ((yyn!=0) && (yyn += YYERRCODE) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) { if (stateptr < 0) { goto yyoverflow; } #if YYDEBUG debug("state "+state_peek(0)+", error recovery shifting to state "+yytable[yyn]+" "); #endif yystate = yytable[yyn]; state_push(yystate); val_push( yylval ); goto yyloop; } else { if (stateptr < 0) { goto yyoverflow; } #if YYDEBUG debug("error recovery discarding state "+state_peek(0)+" "); #endif state_pop(); val_pop(); } } } else { if (yychar == 0) goto yyabort; #if YYDEBUG if (yydebug) { yys = null; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (yys == null) yys = "illegal-symbol"; debug("state "+yystate+", error recovery discards token "+yychar+" ("+yys+")"); } #endif yychar = (-1); goto yyloop; } yyreduce: yym = yylen[yyn]; #if YYDEBUG debug("state "+yystate+", reducing "+yym+" by rule "+yyn+" ("+yyrule[yyn]+")"); #endif yyval = val_peek(yym-1); switch (yyn) { //########## USER-SUPPLIED ACTIONS ########## case 1: //#line 135 "CqlGrammar.y" { yyval = _parsedTree = null; } break; case 2: //#line 139 "CqlGrammar.y" { yyval = _parsedTree = (Expr)val_peek(0); } break; case 3: //#line 147 "CqlGrammar.y" { yyval = new CommandExpr(ToExprList (val_peek(1)),(Expr)val_peek(0)); SetErrCtx(AstNode(yyval), (val_peek(1) != null) ? AstNodePos(val_peek(1)) : AstNodePos(val_peek(0)), EntityRes.CtxCommandExpression); } break; case 4: //#line 161 "CqlGrammar.y" { yyval = null; } break; case 5: //#line 165 "CqlGrammar.y" { yyval = val_peek(0); } break; case 6: //#line 173 "CqlGrammar.y" { yyval = new ExprList ((NamespaceExpr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); } break; case 7: //#line 178 "CqlGrammar.y" { yyval = ToExprList (val_peek(1)).Add((NamespaceExpr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(yyval), EntityRes.CtxNamespaceDeclaration); } break; case 8: //#line 187 "CqlGrammar.y" { yyval = new NamespaceExpr((Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNamespaceDeclaration); } break; case 9: //#line 192 "CqlGrammar.y" { yyval = new NamespaceExpr((DotExpr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNamespaceDeclaration); } break; case 10: //#line 197 "CqlGrammar.y" { yyval = new NamespaceExpr((BuiltInExpr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxAliasedNamespaceDeclaration); } break; case 11: //#line 219 "CqlGrammar.y" { yyval = val_peek(1); } break; case 12: //#line 223 "CqlGrammar.y" { yyval = val_peek(1); } break; case 13: //#line 229 "CqlGrammar.y" { yyval = null; } break; case 14: //#line 233 "CqlGrammar.y" { yyval = null; } break; case 15: //#line 242 "CqlGrammar.y" { yyval = new QueryExpr( (SelectClause)val_peek(5) , (FromClause)val_peek(4) , (Expr)val_peek(3) , (GroupByClause)val_peek(2) , (HavingClause)val_peek(1) , (OrderByClause)val_peek(0) ); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(5)), EntityRes.CtxQueryExpression); } break; case 16: //#line 257 "CqlGrammar.y" { ResetMethodCallCount(); } break; case 17: //#line 263 "CqlGrammar.y" { yyval = new SelectClause(ToExprList (val_peek(0)), (DistinctKind)val_peek(2), (Expr)val_peek(1), MethodCallCount); SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxSelectRowClause); } break; case 18: //#line 268 "CqlGrammar.y" { ResetMethodCallCount(); } break; case 19: //#line 275 "CqlGrammar.y" { ExprList exprList = ToExprList (val_peek(0)); if (exprList.Count != 1) { throw EntityUtil.EntitySqlError(exprList.ErrCtx, System.Data.Entity.Strings.InvalidSelectValueList); } if (exprList.Expressions[0].HasAlias) { throw EntityUtil.EntitySqlError(exprList.ErrCtx, System.Data.Entity.Strings.InvalidSelectValueAliasedExpression); } yyval = new SelectClause(exprList.Expressions[0].Expr, (DistinctKind)val_peek(2), (Expr)val_peek(1), MethodCallCount); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxSelectValueClause); } break; case 20: //#line 295 "CqlGrammar.y" { yyval = DistinctKind.None; } break; case 21: //#line 299 "CqlGrammar.y" { yyval = DistinctKind.All; } break; case 22: //#line 303 "CqlGrammar.y" { yyval = DistinctKind.Distinct; } break; case 23: //#line 310 "CqlGrammar.y" { yyval = null; } break; case 24: //#line 314 "CqlGrammar.y" { if ( val_peek(1) is Parameter || val_peek(1) is Literal ) { yyval = (Expr)val_peek(1); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxTopSubClause); } else { throw EntityUtil.EntitySqlError(((Expr)val_peek(1)).ErrCtx, System.Data.Entity.Strings.TopExpressionMustBeParamOrLiteral); } } break; case 25: //#line 330 "CqlGrammar.y" { yyval = new FromClause(ToExprList (val_peek(0))); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxFromClause); } break; case 26: //#line 339 "CqlGrammar.y" { yyval = new ExprList ((FromClauseItem)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); } break; case 27: //#line 344 "CqlGrammar.y" { yyval = ToExprList (val_peek(2)).Add((FromClauseItem)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxFromClauseList); } break; case 28: //#line 353 "CqlGrammar.y" { yyval = new FromClauseItem((AliasExpr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromClauseItem); } break; case 29: //#line 358 "CqlGrammar.y" { yyval = new FromClauseItem((JoinClauseItem)val_peek(1)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxFromJoinClause); } break; case 30: //#line 363 "CqlGrammar.y" { yyval = new FromClauseItem((JoinClauseItem)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromJoinClause); } break; case 31: //#line 368 "CqlGrammar.y" { yyval = new FromClauseItem((ApplyClauseItem)val_peek(1)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxFromApplyClause); } break; case 32: //#line 373 "CqlGrammar.y" { yyval = new FromClauseItem((ApplyClauseItem)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromApplyClause); } break; case 33: //#line 382 "CqlGrammar.y" { yyval = new JoinClauseItem((FromClauseItem)val_peek(2), (FromClauseItem)val_peek(0), (JoinKind)val_peek(1)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxJoinClause); } break; case 34: //#line 387 "CqlGrammar.y" { yyval = new JoinClauseItem((FromClauseItem)val_peek(4), (FromClauseItem)val_peek(2), (JoinKind)val_peek(3), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(4)), EntityRes.CtxJoinOnClause); } break; case 35: //#line 396 "CqlGrammar.y" { yyval = new ApplyClauseItem((FromClauseItem)val_peek(2), (FromClauseItem)val_peek(0), (ApplyKind)val_peek(1)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxApplyClause); } break; case 36: //#line 405 "CqlGrammar.y" { yyval = JoinKind.Cross; } break; case 37: //#line 409 "CqlGrammar.y" { yyval = JoinKind.LeftOuter; } break; case 38: //#line 413 "CqlGrammar.y" { yyval = JoinKind.LeftOuter; } break; case 39: //#line 417 "CqlGrammar.y" { yyval = JoinKind.RightOuter; } break; case 40: //#line 421 "CqlGrammar.y" { yyval = JoinKind.RightOuter; } break; case 41: //#line 425 "CqlGrammar.y" { yyval = JoinKind.Inner; } break; case 42: //#line 429 "CqlGrammar.y" { yyval = JoinKind.Inner; } break; case 43: //#line 433 "CqlGrammar.y" { yyval = JoinKind.FullOuter; } break; case 44: //#line 437 "CqlGrammar.y" { yyval = JoinKind.FullOuter; } break; case 45: //#line 441 "CqlGrammar.y" { yyval = JoinKind.FullOuter; } break; case 46: //#line 449 "CqlGrammar.y" { yyval = ApplyKind.Cross; } break; case 47: //#line 453 "CqlGrammar.y" { yyval = ApplyKind.Outer; } break; case 48: //#line 460 "CqlGrammar.y" { yyval = null; } break; case 49: //#line 464 "CqlGrammar.y" { yyval = val_peek(0); } break; case 50: //#line 472 "CqlGrammar.y" { yyval = (Expr)val_peek(0); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxWhereClause); } break; case 51: //#line 481 "CqlGrammar.y" { yyval = null; } break; case 52: //#line 485 "CqlGrammar.y" { yyval = val_peek(0); } break; case 53: //#line 493 "CqlGrammar.y" { yyval = new GroupByClause(ToExprList (val_peek(0)), new Identifier( "group", false, _query, Terminal(val_peek(2)).IPos ) ); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxGroupByClause); } break; case 54: //#line 501 "CqlGrammar.y" { yyval = null; } break; case 55: //#line 505 "CqlGrammar.y" { yyval = val_peek(0); } break; case 56: //#line 513 "CqlGrammar.y" { ResetMethodCallCount(); } break; case 57: //#line 517 "CqlGrammar.y" { yyval = new HavingClause((Expr)val_peek(0), MethodCallCount); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxHavingClause); } break; case 58: //#line 526 "CqlGrammar.y" { yyval = null; } break; case 59: //#line 530 "CqlGrammar.y" { yyval = val_peek(0); } break; case 60: //#line 537 "CqlGrammar.y" { ResetMethodCallCount(); } break; case 61: //#line 543 "CqlGrammar.y" { yyval = new OrderByClause(ToExprList (val_peek(2)), (Expr)val_peek(1), (Expr)val_peek(0), MethodCallCount); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxOrderByClauseItem); } break; case 62: //#line 551 "CqlGrammar.y" { yyval = null; } break; case 63: //#line 555 "CqlGrammar.y" { if ( val_peek(0) is Parameter || val_peek(0) is Literal ) { yyval = (Expr)val_peek(0); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxSkipSubClause); } else { throw EntityUtil.EntitySqlError(((Expr)val_peek(0)).ErrCtx, System.Data.Entity.Strings.SkipExpressionMustBeParamOrLiteral); } } break; case 64: //#line 570 "CqlGrammar.y" { yyval = null; } break; case 65: //#line 574 "CqlGrammar.y" { if ( val_peek(0) is Parameter || val_peek(0) is Literal ) { yyval = (Expr)val_peek(0); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxLimitSubClause); } else { throw EntityUtil.EntitySqlError(((Expr)val_peek(0)).ErrCtx, System.Data.Entity.Strings.LimitExpressionMustBeParamOrLiteral); } } break; case 66: //#line 589 "CqlGrammar.y" { yyval = new ExprList ((OrderByClauseItem)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); } break; case 67: //#line 594 "CqlGrammar.y" { yyval = ToExprList (val_peek(2)).Add((OrderByClauseItem)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxOrderByClause); } break; case 68: //#line 603 "CqlGrammar.y" { yyval = new OrderByClauseItem((Expr)val_peek(1), (OrderKind)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxOrderByClauseItem); } break; case 69: //#line 608 "CqlGrammar.y" { yyval = new OrderByClauseItem((Expr)val_peek(3), (OrderKind)val_peek(0), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(3)), EntityRes.CtxCollatedOrderByClauseItem); } break; case 70: //#line 617 "CqlGrammar.y" { yyval = OrderKind.None; } break; case 71: //#line 621 "CqlGrammar.y" { yyval = OrderKind.Asc; } break; case 72: //#line 625 "CqlGrammar.y" { yyval = OrderKind.Desc; } break; case 73: //#line 638 "CqlGrammar.y" { yyval = new ExprList ((Expr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); } break; case 74: //#line 643 "CqlGrammar.y" { yyval = ToExprList (val_peek(2)).Add((Expr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxExpressionList); } break; case 75: //#line 651 "CqlGrammar.y" { yyval = val_peek(0); } break; case 76: //#line 655 "CqlGrammar.y" { yyval = (Parameter)val_peek(0); } break; case 77: //#line 659 "CqlGrammar.y" { yyval = (Identifier)val_peek(0); } break; case 78: //#line 663 "CqlGrammar.y" { yyval = val_peek(0); } break; case 79: //#line 667 "CqlGrammar.y" { yyval = val_peek(0); if (((DotExpr)val_peek(0)).IsDottedIdentifier) { SetErrCtx(AstNode(yyval), AstNodePos(yyval), EntityRes.CtxMultipartIdentifier); } } break; case 80: //#line 675 "CqlGrammar.y" { yyval = val_peek(0); } break; case 81: //#line 679 "CqlGrammar.y" { yyval = val_peek(0); } break; case 82: //#line 683 "CqlGrammar.y" { yyval = val_peek(0); } break; case 83: //#line 687 "CqlGrammar.y" { yyval = val_peek(0); IncrementMethodCallCount(); } break; case 84: //#line 693 "CqlGrammar.y" { yyval = val_peek(0); } break; case 85: //#line 697 "CqlGrammar.y" { yyval = val_peek(0); } break; case 86: //#line 701 "CqlGrammar.y" { yyval = val_peek(0); } break; case 87: //#line 705 "CqlGrammar.y" { yyval = val_peek(0); } break; case 88: //#line 712 "CqlGrammar.y" { yyval = val_peek(1); } break; case 89: //#line 719 "CqlGrammar.y" { yyval = new ExprList ((Expr)val_peek(2)).Add((Expr)val_peek(0)); } break; case 90: //#line 726 "CqlGrammar.y" { yyval = new ExprList ((Expr)val_peek(3)).Add((Expr)val_peek(0)); } break; case 91: //#line 736 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Plus, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxPlus); } break; case 92: //#line 741 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Minus, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMinus); } break; case 93: //#line 746 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Multiply, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMultiply); } break; case 94: //#line 751 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Divide, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxDivide); } break; case 95: //#line 756 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Modulus, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxModulus); } break; case 96: //#line 761 "CqlGrammar.y" { Literal literal = val_peek(0) as Literal; if ( null != literal && literal.IsNumberKind && !literal.IsSigned ) { literal.PrefixSign(Terminal(val_peek(1)).Token); yyval = val_peek(0); } else { yyval = new BuiltInExpr(BuiltInKind.UnaryMinus, Terminal(val_peek(1)).Token, (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnaryMinus); } } break; case 97: //#line 776 "CqlGrammar.y" { Literal literal = val_peek(0) as Literal; if ( null != literal && literal.IsNumberKind && !literal.IsSigned ) { literal.PrefixSign(Terminal(val_peek(1)).Token); yyval = val_peek(0); } else { yyval = new BuiltInExpr(BuiltInKind.UnaryPlus, Terminal(val_peek(1)).Token, (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnaryPlus); } } break; case 98: //#line 793 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.NotEqual, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNotEqual); } break; case 99: //#line 798 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.GreaterThan, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxGreaterThan); } break; case 100: //#line 803 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.GreaterEqual, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxGreaterThanEqual); } break; case 101: //#line 808 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.LessThan, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLessThan); } break; case 102: //#line 813 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.LessEqual, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLessThanEqual); } break; case 103: //#line 821 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Intersect, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIntersect); } break; case 104: //#line 826 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Union, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnion); } break; case 105: //#line 831 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.UnionAll, Terminal(val_peek(2)).Token, (Expr)val_peek(3), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxUnionAll); } break; case 106: //#line 836 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Except, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxExcept); } break; case 107: //#line 841 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Overlaps, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxOverlaps); } break; case 108: //#line 846 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.In, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIn); } break; case 109: //#line 851 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.NotIn, Terminal(val_peek(2)).Token, (Expr)val_peek(3), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNotIn); } break; case 110: //#line 856 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Exists, Terminal(val_peek(3)).Token, (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxExists); } break; case 111: //#line 861 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.AnyElement, Terminal(val_peek(3)).Token, (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxAnyElement); } break; case 112: //#line 866 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Element, Terminal(val_peek(3)).Token, (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxElement); } break; case 113: //#line 871 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Flatten, Terminal(val_peek(3)).Token, (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxFlatten); } break; case 114: //#line 876 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Distinct, Terminal(val_peek(3)).Token, (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxSet); } break; case 115: //#line 884 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.IsNull, "IsNull", (Expr)val_peek(2)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIsNull); } break; case 116: //#line 889 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.IsNotNull, "IsNotNull", (Expr)val_peek(3)); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxIsNotNull); } break; case 117: //#line 897 "CqlGrammar.y" { yyval = (CaseExpr)val_peek(0); } break; case 118: //#line 904 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Treat, Terminal(val_peek(5)).Token, (Expr)val_peek(3), (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxTreat); } break; case 119: //#line 909 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Cast, Terminal(val_peek(5)).Token, (Expr)val_peek(3), (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxCast); } break; case 120: //#line 918 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.OfType, Terminal(val_peek(5)).Token, (Expr)val_peek(3), (Expr)val_peek(1), Literal.NewBooleanLiteral( false ) /* only */); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxOfType); } break; case 121: //#line 928 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.OfType, "OFTYPE ONLY", (Expr)val_peek(4), (Expr)val_peek(1), Literal.NewBooleanLiteral( true ) /* only */); SetErrCtx(AstNode(yyval), Terminal(val_peek(6)), EntityRes.CtxOfTypeOnly); } break; case 122: //#line 941 "CqlGrammar.y" { yyval = new BuiltInExpr( BuiltInKind.IsOf, "IS OF", (Expr)val_peek(5), (Expr)val_peek(1), Literal.NewBooleanLiteral( false ), /* only */ Literal.NewBooleanLiteral( false ) /* not */ ); SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxIsOf); } break; case 123: //#line 953 "CqlGrammar.y" { yyval = new BuiltInExpr( BuiltInKind.IsOf, "IS NOT OF", (Expr)val_peek(6), /* instance */ (Expr)val_peek(1), /* type */ Literal.NewBooleanLiteral( false ), /* only */ Literal.NewBooleanLiteral( true ) /* not */ ); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxIsNotOf); } break; case 124: //#line 965 "CqlGrammar.y" { yyval = new BuiltInExpr( BuiltInKind.IsOf, "IS OF ONLY", (Expr)val_peek(6), /* instance */ (Expr)val_peek(1), /* type */ Literal.NewBooleanLiteral( true ), /* only */ Literal.NewBooleanLiteral( false ) /* not */ ); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxIsOf); } break; case 125: //#line 977 "CqlGrammar.y" { yyval = new BuiltInExpr( BuiltInKind.IsOf, "IS NOT OF ONLY", (Expr)val_peek(7), /* instance */ (Expr)val_peek(1), /* type */ Literal.NewBooleanLiteral( true ), /* only */ Literal.NewBooleanLiteral( true ) /* not */ ); SetErrCtx(AstNode(yyval), Terminal(val_peek(6)), EntityRes.CtxIsNotOf); } break; case 126: //#line 992 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLike); } break; case 127: //#line 997 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Not, Terminal(val_peek(2)).Token, new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(1)).Token, (Expr)val_peek(3), (Expr)val_peek(0))); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNotLike); } break; case 128: //#line 1004 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(3)).Token, (Expr)val_peek(4), (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxLike); } break; case 129: //#line 1009 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Not, Terminal(val_peek(4)).Token, new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(3)).Token, (Expr)val_peek(5), (Expr)val_peek(2), (Expr)val_peek(0))); SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxNotLike); } break; case 130: //#line 1019 "CqlGrammar.y" { ExprList elist = (ExprList )val_peek(2); System.Diagnostics.Debug.Assert(elist.Count==2); yyval = new BuiltInExpr(BuiltInKind.Between, "between", elist[0], elist[1], (Expr)val_peek(0) ); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxBetween); } break; case 131: //#line 1029 "CqlGrammar.y" { ExprList elist = (ExprList )val_peek(2); System.Diagnostics.Debug.Assert(elist.Count==2); yyval = new BuiltInExpr(BuiltInKind.NotBetween, "notbetween", elist[0], elist[1], (Expr)val_peek(0) ); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNotBetween); } break; case 132: //#line 1039 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Or, "or", (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxOr); } break; case 133: //#line 1044 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Not, "not", (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNot); } break; case 134: //#line 1049 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.And, "and", (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxAnd); } break; case 135: //#line 1054 "CqlGrammar.y" { yyval = val_peek(0); } break; case 136: //#line 1062 "CqlGrammar.y" { yyval = val_peek(0); } break; case 137: //#line 1066 "CqlGrammar.y" { yyval = val_peek(0); } break; case 138: //#line 1074 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Equal, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxEquals); } break; case 139: //#line 1083 "CqlGrammar.y" { yyval = new BuiltInExpr(BuiltInKind.Equal, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxEquals); } break; case 140: //#line 1092 "CqlGrammar.y" { yyval = new AliasExpr((Expr)val_peek(2), (Identifier)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxAlias); } break; case 141: //#line 1097 "CqlGrammar.y" { yyval = new AliasExpr((Expr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); } break; case 142: //#line 1106 "CqlGrammar.y" { yyval = new ExprList ((AliasExpr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); } break; case 143: //#line 1111 "CqlGrammar.y" { yyval = ToExprList (val_peek(2)).Add((AliasExpr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(yyval), EntityRes.CtxExpressionList); } break; case 144: //#line 1120 "CqlGrammar.y" { yyval = new CaseExpr(ToExprList (val_peek(1))); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxCase); } break; case 145: //#line 1125 "CqlGrammar.y" { yyval = new CaseExpr(ToExprList (val_peek(2)), (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxCase); } break; case 146: //#line 1134 "CqlGrammar.y" { yyval = new ExprList (new WhenThenExpr((Expr)val_peek(2), (Expr)val_peek(0))); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxCaseWhenThen); } break; case 147: //#line 1139 "CqlGrammar.y" { yyval = ToExprList (val_peek(4)).Add(new WhenThenExpr((Expr)val_peek(2), (Expr)val_peek(0))); } break; case 148: //#line 1147 "CqlGrammar.y" { yyval = (Expr)val_peek(0); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxCaseElse); } break; case 149: //#line 1156 "CqlGrammar.y" { yyval = new RowConstructorExpr(ToExprList (val_peek(1))); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRowCtor); } break; case 150: //#line 1161 "CqlGrammar.y" { yyval = new MultisetConstructorExpr(ToExprList (val_peek(1))); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxMultisetCtor); } break; case 151: //#line 1166 "CqlGrammar.y" { yyval = new MultisetConstructorExpr(ToExprList (val_peek(1))); SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxMultisetCtor); } break; case 152: //#line 1175 "CqlGrammar.y" { yyval = new DotExpr((Expr)val_peek(2), (Identifier)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxDot); } break; case 153: //#line 1184 "CqlGrammar.y" { yyval = new RefExpr((Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRef); } break; case 154: //#line 1193 "CqlGrammar.y" { yyval = new DerefExpr((Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxDeref); } break; case 155: //#line 1202 "CqlGrammar.y" { yyval = new CreateRefExpr((Expr)val_peek(3), (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxCreateRef); } break; case 156: //#line 1207 "CqlGrammar.y" { yyval = new CreateRefExpr((Expr)val_peek(5), (Expr)val_peek(3), (Expr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxCreateRef); } break; case 157: //#line 1216 "CqlGrammar.y" { yyval = new KeyExpr((Expr)val_peek(0)); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxKey); } break; case 158: //#line 1225 "CqlGrammar.y" { yyval = new MethodExpr(((DotExpr)val_peek(2)).Left, ((DotExpr)val_peek(2)).Identifier, DistinctKind.None, null); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMethod); } break; case 159: //#line 1230 "CqlGrammar.y" { yyval = new MethodExpr(((DotExpr)val_peek(5)).Left, ((DotExpr)val_peek(5)).Identifier, (DistinctKind)val_peek(3), ToExprList (val_peek(2)), ToExprList (val_peek(0))); SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxMethod); } break; case 160: //#line 1235 "CqlGrammar.y" { yyval = new MethodExpr(((DotExpr)val_peek(5)).Left, ((DotExpr)val_peek(5)).Identifier, (DistinctKind)val_peek(3), new ExprList ((Expr)val_peek(2)), ToExprList (val_peek(0))); SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxMethod); } break; case 161: //#line 1240 "CqlGrammar.y" { yyval = new MethodExpr(null, (Identifier)val_peek(2), DistinctKind.None, null); SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMethod); } break; case 162: //#line 1245 "CqlGrammar.y" { yyval = new MethodExpr(null, (Identifier)val_peek(5), (DistinctKind)val_peek(3), ToExprList (val_peek(2)), ToExprList (val_peek(0))); SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxMethod); } break; case 163: //#line 1250 "CqlGrammar.y" { yyval = new MethodExpr(null, (Identifier)val_peek(5),(DistinctKind)val_peek(3), new ExprList ((Expr)val_peek(2)), ToExprList (val_peek(0))); SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxMethod); } break; case 164: //#line 1262 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(3), (DotExpr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxNavigate); } break; case 165: //#line 1267 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxNavigate); } break; case 166: //#line 1275 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(5), (DotExpr)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxNavigate); } break; case 167: //#line 1280 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxNavigate); } break; case 168: //#line 1288 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(7), (DotExpr)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxNavigate); } break; case 169: //#line 1293 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(7), (Identifier)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxNavigate); } break; case 170: //#line 1302 "CqlGrammar.y" { yyval = null; } break; case 171: //#line 1306 "CqlGrammar.y" { yyval = val_peek(0); } break; case 172: //#line 1314 "CqlGrammar.y" { yyval = new ExprList ((RelshipNavigationExpr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxRelationshipList); } break; case 173: //#line 1319 "CqlGrammar.y" { yyval = ToExprList (val_peek(1)).Add((RelshipNavigationExpr)val_peek(0)); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxRelationshipList); } break; case 174: //#line 1331 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(3), (DotExpr)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxRelationship); } break; case 175: //#line 1336 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxRelationship); } break; case 176: //#line 1344 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(5), (DotExpr)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxRelationship); } break; case 177: //#line 1349 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxRelationship); } break; case 178: //#line 1357 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(7), (DotExpr)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxRelationship); } break; case 179: //#line 1362 "CqlGrammar.y" { yyval = new RelshipNavigationExpr((Expr)val_peek(7), (Identifier)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxRelationship); } break; case 180: //#line 1370 "CqlGrammar.y" { yyval = val_peek(0); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxTypeIdentifier); } break; case 181: //#line 1375 "CqlGrammar.y" { yyval = val_peek(0); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxTypeIdentifier); } break; case 182: //#line 1380 "CqlGrammar.y" { Identifier oldIdentifier = (Identifier)val_peek(1); if (0 != ((Identifier)val_peek(0)).Name.Length) { throw EntityUtil.EntitySqlError(oldIdentifier.ErrCtx, EntityRes.InvalidTypeName); } yyval = new Identifier( oldIdentifier.OriginalName + "[]", oldIdentifier.IsEscaped, _query, AstNodePos(val_peek(1))); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxTypeIdentifier); } break; case 183: //#line 1390 "CqlGrammar.y" { DotExpr oldDotExpr = (DotExpr)val_peek(1); if (0 != ((Identifier)val_peek(0)).Name.Length) { throw EntityUtil.EntitySqlError(oldDotExpr.ErrCtx, EntityRes.InvalidTypeName); } yyval = new DotExpr(oldDotExpr.Left, new Identifier( oldDotExpr.Identifier.OriginalName + "[]", oldDotExpr.Identifier.IsEscaped, _query, AstNodePos(val_peek(1)))); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxTypeIdentifier); } break; case 184: //#line 1400 "CqlGrammar.y" { SetErrCtx(AstNode(val_peek(0)), AstNodePos(val_peek(0)), EntityRes.CtxTypeIdentifier); MethodExpr methodExpr = (MethodExpr)val_peek(0); if (null == methodExpr.Args || methodExpr.Args.Count < 1 || methodExpr.Args.Count > 2) { throw EntityUtil.EntitySqlError(methodExpr.ErrCtx, System.Data.Entity.Strings.TypeIndentifierMustHaveOneOrTwoArgs); } if (!(methodExpr.Args[0] is Literal)) { throw EntityUtil.EntitySqlError(methodExpr.Args[0].ErrCtx, System.Data.Entity.Strings.TypeIndentifierArgMustBeLiteral); } if (methodExpr.Args.Count == 2 && !(methodExpr.Args[1] is Literal)) { throw EntityUtil.EntitySqlError(methodExpr.Args[1].ErrCtx, System.Data.Entity.Strings.TypeIndentifierArgMustBeLiteral); } yyval = val_peek(0); } break; case 185: //#line 1420 "CqlGrammar.y" { yyval = (Identifier)val_peek(0); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxEscapedIdentifier); } break; case 186: //#line 1425 "CqlGrammar.y" { yyval = (Identifier)val_peek(0); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxSimpleIdentifier); } break; case 187: //#line 1434 "CqlGrammar.y" { yyval = (Identifier)val_peek(0); } break; case 188: //#line 1442 "CqlGrammar.y" { yyval = val_peek(0); SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxLiteral); } break; case 189: //#line 1447 "CqlGrammar.y" { yyval = new Literal(null, LiteralKind.Null, _query, TerminalPos(val_peek(0))); SetErrCtx(AstNode(yyval), Terminal(val_peek(0)), EntityRes.CtxNullLiteral); } break; //########## END OF USER-SUPPLIED ACTIONS ########## } #if YYDEBUG debug("reduce"); #endif state_drop( yym ); yystate = state_peek(0); val_drop( yym ); yym = yylhs[yyn]; if (yystate == 0 && yym == 0) { #if YYDEBUG debug("After reduction, shifting from state 0 to state "+YYFINAL+""); #endif yystate = YYFINAL; state_push( YYFINAL ); val_push( yyval ); if (yychar < 0) { yychar = yylex(); if (yychar < 0) yychar = 0; #if YYDEBUG if (yydebug) yylexdebug(yystate,yychar); #endif } if (yychar == 0) goto yyaccept; goto yyloop; } yyn = yygindex[yym]; if ((yyn!=0) && (yyn += yystate) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; if (stateptr < 0) { goto yyoverflow; } #if YYDEBUG debug("after reduction, shifting from state "+state_peek(0)+" to state "+yystate+""); #endif state_push(yystate); val_push( yyval ); goto yyloop; yyoverflow: yyerror("yacc stack overflow"); yyabort: return (1); yyaccept: return (0); } //## end of method parse() ###################################### } //################### END OF CLASS ###################### } //################### END OF NAMESPACE ###################### // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ConditionalAttribute.cs
- PersistStreamTypeWrapper.cs
- StringFreezingAttribute.cs
- HtmlLiteralTextAdapter.cs
- HostingEnvironment.cs
- QueryableDataSourceEditData.cs
- ObjectDataProvider.cs
- ObjectDataSourceStatusEventArgs.cs
- CachedPathData.cs
- BindingExpression.cs
- EmbeddedMailObject.cs
- PropertyConverter.cs
- EmbeddedMailObjectsCollection.cs
- ExpressionEditorAttribute.cs
- TabControl.cs
- DeploymentSection.cs
- ListControl.cs
- BamlResourceDeserializer.cs
- RepeatInfo.cs
- DeploymentExceptionMapper.cs
- CodeArgumentReferenceExpression.cs
- TreeView.cs
- FormViewCommandEventArgs.cs
- CaseCqlBlock.cs
- RowBinding.cs
- LoginName.cs
- OutOfProcStateClientManager.cs
- ConfigurationException.cs
- LookupBindingPropertiesAttribute.cs
- ScriptControlDescriptor.cs
- ShowExpandedMultiValueConverter.cs
- DesignerVerbCollection.cs
- MdiWindowListStrip.cs
- X509Certificate.cs
- TextParagraphProperties.cs
- figurelength.cs
- x509utils.cs
- FtpWebRequest.cs
- DataGridRowAutomationPeer.cs
- ListSortDescriptionCollection.cs
- OutOfMemoryException.cs
- RectAnimationClockResource.cs
- counter.cs
- FrameworkElementAutomationPeer.cs
- NavigatorInput.cs
- SecuritySessionClientSettings.cs
- DataGridCell.cs
- FunctionUpdateCommand.cs
- WeakHashtable.cs
- StatusStrip.cs
- OleDbRowUpdatingEvent.cs
- ConfigurationLocation.cs
- HttpListenerPrefixCollection.cs
- SEHException.cs
- CommandEventArgs.cs
- WebBrowser.cs
- PerspectiveCamera.cs
- VScrollProperties.cs
- ForeignConstraint.cs
- SiteMapNodeItem.cs
- EntityCommand.cs
- DesignerActionHeaderItem.cs
- SequentialUshortCollection.cs
- ExtentKey.cs
- TypeSystem.cs
- HttpDictionary.cs
- MultiTouchSystemGestureLogic.cs
- NameTable.cs
- AppModelKnownContentFactory.cs
- PagerSettings.cs
- DataRecordInternal.cs
- Emitter.cs
- Track.cs
- DataFormats.cs
- Function.cs
- LineUtil.cs
- XhtmlBasicPanelAdapter.cs
- CheckBox.cs
- AttachedPropertyBrowsableAttribute.cs
- NativeMethodsOther.cs
- FormViewCommandEventArgs.cs
- Version.cs
- WindowsGraphicsWrapper.cs
- PackageRelationshipSelector.cs
- DocumentApplicationJournalEntry.cs
- ClientUtils.cs
- User.cs
- SmiXetterAccessMap.cs
- RenderTargetBitmap.cs
- ScrollChangedEventArgs.cs
- BamlRecordReader.cs
- XmlSchemaComplexType.cs
- DataGridLinkButton.cs
- JobCollate.cs
- IImplicitResourceProvider.cs
- ConnectionStringsExpressionBuilder.cs
- SymmetricKey.cs
- ImageField.cs
- BooleanStorage.cs
- ContextMenuService.cs