/* parser generated by jison 0.4.18 */
/*
  Returns a Parser object of the following structure:

  Parser: {
    yy: {}
  }

  Parser.prototype: {
    yy: {},
    trace: function(),
    symbols_: {associative list: name ==> number},
    terminals_: {associative list: number ==> name},
    productions_: [...],
    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
    table: [...],
    defaultActions: {...},
    parseError: function(str, hash),
    parse: function(input),

    lexer: {
        EOF: 1,
        parseError: function(str, hash),
        setInput: function(input),
        input: function(),
        unput: function(str),
        more: function(),
        less: function(n),
        pastInput: function(),
        upcomingInput: function(),
        showPosition: function(),
        test_match: function(regex_match_array, rule_index),
        next: function(),
        lex: function(),
        begin: function(condition),
        popState: function(),
        _currentRules: function(),
        topState: function(),
        pushState: function(condition),

        options: {
            ranges: boolean           (optional: true ==> token location info will include a .range[] member)
            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
        },

        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
        rules: [...],
        conditions: {associative list: name ==> set},
    }
  }


  token location info (@$, _$, etc.): {
    first_line: n,
    last_line: n,
    first_column: n,
    last_column: n,
    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
  }


  the parseError function receives a 'hash' object with these members for lexer and parser errors: {
    text:        (matched text)
    token:       (the produced terminal token, if any)
    line:        (yylineno)
  }
  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
    loc:         (yylloc)
    expected:    (string describing the set of expected tokens)
    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
  }
*/
var sqlParser = (function(){
  var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,8],$V1=[1,4],$V2=[2,4],$V3=[1,11],$V4=[1,10],$V5=[2,16],$V6=[1,14],$V7=[1,15],$V8=[1,16],$V9=[6,8],$Va=[2,147],$Vb=[1,19],$Vc=[1,20],$Vd=[16,33,35,36,37,38,39,40,41,42,45,46,50,51,54,55,57,58,60,76,79,81,82,83,84,86,87,88,102,195],$Ve=[16,18,32,33,35,36,37,38,39,40,41,42,45,46,50,51,54,55,57,58,60,76,79,81,82,83,84,86,87,88,102,195],$Vf=[2,161],$Vg=[1,29],$Vh=[6,8,14,17,146,150,152,154],$Vi=[1,42],$Vj=[1,60],$Vk=[1,52],$Vl=[1,59],$Vm=[1,61],$Vn=[1,62],$Vo=[1,63],$Vp=[1,64],$Vq=[1,65],$Vr=[1,58],$Vs=[1,53],$Vt=[1,54],$Vu=[1,55],$Vv=[1,56],$Vw=[1,57],$Vx=[1,43],$Vy=[1,44],$Vz=[1,45],$VA=[1,34],$VB=[1,66],$VC=[16,35,36,37,38,39,40,41,42,45,46,50,51,54,55,57,58,60,76,79,81,82,83,84,86,87,88,102,195],$VD=[6,8,14,17,150,152,154],$VE=[2,144],$VF=[1,75],$VG=[1,76],$VH=[6,8,14,17,43,133,138,144,146,150,152,154],$VI=[1,79],$VJ=[1,81],$VK=[1,78],$VL=[1,80],$VM=[1,82],$VN=[6,8,14,17,36,43,49,50,51,71,72,74,77,89,91,108,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],$VO=[6,8,14,17,34,36,43,49,50,51,71,72,74,77,89,91,108,113,114,115,116,117,118,122,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],$VP=[6,8,14,17,34,36,43,49,50,51,71,72,74,77,89,108,113,114,115,116,117,118,122,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],$VQ=[1,104],$VR=[1,102],$VS=[1,103],$VT=[1,97],$VU=[1,98],$VV=[1,99],$VW=[1,100],$VX=[1,101],$VY=[1,105],$VZ=[1,106],$V_=[1,107],$V$=[1,108],$V01=[1,109],$V11=[1,110],$V21=[2,104],$V31=[6,8,14,17,34,36,43,45,49,50,51,71,72,74,77,79,81,89,91,92,93,94,95,96,97,98,99,100,102,106,107,108,109,110,111,113,114,115,116,117,118,122,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],$V41=[6,8,14,17,34,36,43,45,49,50,51,71,72,74,77,79,81,89,91,92,93,94,95,96,97,98,99,100,102,104,106,107,108,109,110,111,113,114,115,116,117,118,122,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],$V51=[1,111],$V61=[1,118],$V71=[2,64],$V81=[1,119],$V91=[16,35,37,38,39,40,41,42,45,46,50,51,54,55,57,58,60,76,79,81,82,83,84,86,87,88,102,195],$Va1=[16,29,35,50,51,54,55,57,58,60,76,79,81,82,83,84,86,87,88,120,195],$Vb1=[1,166],$Vc1=[17,43],$Vd1=[2,59],$Ve1=[1,175],$Vf1=[1,173],$Vg1=[1,174],$Vh1=[6,8,138,146],$Vi1=[16,35,38,39,40,41,42,45,46,50,51,54,55,57,58,60,76,79,81,82,83,84,86,87,88,102,195],$Vj1=[6,8,14,17,138,144,146,150,152,154],$Vk1=[6,8,14,17,36,43,49,50,51,71,72,74,77,89,91,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],$Vl1=[6,8,14,17,34,36,43,49,50,51,71,72,74,77,89,91,92,93,94,95,100,102,106,107,108,109,110,111,113,114,115,116,117,118,122,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],$Vm1=[6,8,14,17,34,36,43,49,50,51,71,72,74,77,79,81,89,91,92,93,94,95,100,102,106,107,108,109,110,111,113,114,115,116,117,118,122,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],$Vn1=[16,35,39,40,41,42,45,46,50,51,54,55,57,58,60,76,79,81,82,83,84,86,87,88,102,195],$Vo1=[16,35,40,41,42,45,46,50,51,54,55,57,58,60,76,79,81,82,83,84,86,87,88,102,195],$Vp1=[16,35,42,45,46,50,51,54,55,57,58,60,76,79,81,82,83,84,86,87,88,102,195],$Vq1=[71,74,77],$Vr1=[16,35,45,46,50,51,54,55,57,58,60,76,79,81,82,83,84,86,87,88,102,195],$Vs1=[1,235],$Vt1=[1,236],$Vu1=[6,8,14,17],$Vv1=[6,8,14,17,43,157],$Vw1=[1,253],$Vx1=[1,249],$Vy1=[2,198],$Vz1=[1,257],$VA1=[1,258],$VB1=[6,8,14,17,43,129,135,138,144,146,150,152,154,182],$VC1=[1,260],$VD1=[1,263],$VE1=[1,264],$VF1=[1,265],$VG1=[1,266],$VH1=[2,175],$VI1=[1,262],$VJ1=[6,8,14,17,36,43,89,129,135,138,144,146,150,152,154,164,165,167,168,173,177,179,180,182],$VK1=[6,8,14,17,135,138,144,146,150,152,154],$VL1=[1,278],$VM1=[2,180],$VN1=[170,173],$VO1=[6,8,14,17,36,43,89,129,135,138,144,146,150,152,154,164,165,167,168,173,177,179,180,182,192,193,194],$VP1=[2,200],$VQ1=[1,283],$VR1=[1,295],$VS1=[1,303],$VT1=[1,304],$VU1=[1,305],$VV1=[6,8,14,17,138,146,150,152,154],$VW1=[1,315],$VX1=[1,321],$VY1=[1,322],$VZ1=[2,205],$V_1=[1,333],$V$1=[16,152],$V02=[6,8,14,17,152,154],$V12=[1,349];
  var parser = {trace: function trace () { },
  yy: {},
  symbols_: {"error":2,"main":3,"selectClause":4,"semicolonOpt":5,"EOF":6,"unionClause":7,";":8,"unionClauseNotParenthesized":9,"unionClauseParenthesized":10,"order_by_opt":11,"limit_opt":12,"selectClauseParenthesized":13,"UNION":14,"distinctOpt":15,"(":16,")":17,"SELECT":18,"highPriorityOpt":19,"maxStateMentTimeOpt":20,"straightJoinOpt":21,"sqlSmallResultOpt":22,"sqlBigResultOpt":23,"sqlBufferResultOpt":24,"sqlCacheOpt":25,"sqlCalcFoundRowsOpt":26,"selectExprList":27,"selectDataSetOpt":28,"ALL":29,"DISTINCT":30,"DISTINCTROW":31,"HIGH_PRIORITY":32,"MAX_STATEMENT_TIME":33,"=":34,"NUMERIC":35,"STRAIGHT_JOIN":36,"SQL_SMALL_RESULT":37,"SQL_BIG_RESULT":38,"SQL_BUFFER_RESULT":39,"SQL_CACHE":40,"SQL_NO_CACHE":41,"SQL_CALC_FOUND_ROWS":42,",":43,"selectExpr":44,"*":45,"SELECT_EXPR_STAR":46,"expr":47,"selectExprAliasOpt":48,"AS":49,"IDENTIFIER":50,"STRING":51,"string":52,"number":53,"EXPONENT_NUMERIC":54,"HEX_NUMERIC":55,"boolean":56,"TRUE":57,"FALSE":58,"null":59,"NULL":60,"literal":61,"place_holder":62,"function_call":63,"function_call_param_list":64,"function_call_param":65,"identifier":66,"DOT":67,"identifier_list":68,"case_expr_opt":69,"when_then_list":70,"WHEN":71,"THEN":72,"case_when_else":73,"ELSE":74,"case_when":75,"CASE":76,"END":77,"simple_expr_prefix":78,"+":79,"simple_expr":80,"-":81,"~":82,"!":83,"BINARY":84,"expr_list":85,"ROW":86,"EXISTS":87,"{":88,"}":89,"bit_expr":90,"||":91,"|":92,"&":93,"<<":94,">>":95,"/":96,"DIV":97,"MOD":98,"%":99,"^":100,"not_opt":101,"NOT":102,"escape_opt":103,"ESCAPE":104,"predicate":105,"IN":106,"BETWEEN":107,"AND":108,"SOUNDS":109,"LIKE":110,"REGEXP":111,"comparison_operator":112,">=":113,">":114,"<=":115,"<":116,"<>":117,"!=":118,"sub_query_data_set_opt":119,"ANY":120,"boolean_primary":121,"IS":122,"boolean_extra":123,"UNKNOWN":124,"&&":125,"OR":126,"XOR":127,"where_opt":128,"WHERE":129,"group_by_opt":130,"group_by":131,"roll_up_opt":132,"WITH":133,"ROLLUP":134,"GROUP_BY":135,"group_by_order_by_item_list":136,"order_by":137,"ORDER_BY":138,"group_by_order_by_item":139,"sort_opt":140,"ASC":141,"DESC":142,"having_opt":143,"HAVING":144,"limit":145,"LIMIT":146,"OFFSET":147,"procedure_opt":148,"procedure":149,"PROCEDURE":150,"for_update_lock_in_share_mode_opt":151,"FOR":152,"UPDATE":153,"LOCK":154,"SHARE":155,"MODE":156,"FROM":157,"table_references":158,"partitionOpt":159,"escaped_table_reference":160,"table_reference":161,"OJ":162,"join_inner_cross":163,"INNER":164,"CROSS":165,"left_right":166,"LEFT":167,"RIGHT":168,"out_opt":169,"OUTER":170,"left_right_out_opt":171,"join_table":172,"JOIN":173,"table_factor":174,"join_condition":175,"on_join_condition":176,"NATURAL":177,"join_condition_opt":178,"ON":179,"USING":180,"partition_names":181,"PARTITION":182,"aliasOpt":183,"index_or_key":184,"INDEX":185,"KEY":186,"for_opt":187,"identifier_list_opt":188,"index_hint_list_opt":189,"index_hint_list":190,"index_hint":191,"USE":192,"IGNORE":193,"FORCE":194,"PLACE_HOLDER":195,"$accept":0,"$end":1},
  terminals_: {2:"error",6:"EOF",8:";",14:"UNION",16:"(",17:")",18:"SELECT",29:"ALL",30:"DISTINCT",31:"DISTINCTROW",32:"HIGH_PRIORITY",33:"MAX_STATEMENT_TIME",34:"=",35:"NUMERIC",36:"STRAIGHT_JOIN",37:"SQL_SMALL_RESULT",38:"SQL_BIG_RESULT",39:"SQL_BUFFER_RESULT",40:"SQL_CACHE",41:"SQL_NO_CACHE",42:"SQL_CALC_FOUND_ROWS",43:",",45:"*",46:"SELECT_EXPR_STAR",49:"AS",50:"IDENTIFIER",51:"STRING",54:"EXPONENT_NUMERIC",55:"HEX_NUMERIC",57:"TRUE",58:"FALSE",60:"NULL",67:"DOT",71:"WHEN",72:"THEN",74:"ELSE",76:"CASE",77:"END",79:"+",81:"-",82:"~",83:"!",84:"BINARY",86:"ROW",87:"EXISTS",88:"{",89:"}",91:"||",92:"|",93:"&",94:"<<",95:">>",96:"/",97:"DIV",98:"MOD",99:"%",100:"^",102:"NOT",104:"ESCAPE",106:"IN",107:"BETWEEN",108:"AND",109:"SOUNDS",110:"LIKE",111:"REGEXP",113:">=",114:">",115:"<=",116:"<",117:"<>",118:"!=",120:"ANY",122:"IS",124:"UNKNOWN",125:"&&",126:"OR",127:"XOR",129:"WHERE",133:"WITH",134:"ROLLUP",135:"GROUP_BY",138:"ORDER_BY",141:"ASC",142:"DESC",144:"HAVING",146:"LIMIT",147:"OFFSET",150:"PROCEDURE",152:"FOR",153:"UPDATE",154:"LOCK",155:"SHARE",156:"MODE",157:"FROM",162:"OJ",164:"INNER",165:"CROSS",167:"LEFT",168:"RIGHT",170:"OUTER",173:"JOIN",177:"NATURAL",179:"ON",180:"USING",182:"PARTITION",185:"INDEX",186:"KEY",192:"USE",193:"IGNORE",194:"FORCE",195:"PLACE_HOLDER"},
  productions_: [0,[3,3],[3,3],[5,1],[5,0],[7,1],[7,3],[10,4],[10,4],[13,3],[9,4],[9,4],[4,12],[15,1],[15,1],[15,1],[15,0],[19,1],[19,0],[20,3],[20,0],[21,1],[21,0],[22,1],[22,0],[23,1],[23,0],[24,1],[24,0],[25,0],[25,1],[25,1],[26,1],[26,0],[27,3],[27,1],[44,1],[44,1],[44,2],[48,0],[48,2],[48,1],[48,2],[48,1],[52,1],[53,1],[53,1],[53,1],[56,1],[56,1],[59,1],[61,1],[61,1],[61,1],[61,1],[61,1],[63,4],[64,3],[64,1],[65,0],[65,1],[65,1],[65,2],[65,1],[66,1],[66,3],[68,1],[68,3],[69,0],[69,1],[70,4],[70,5],[73,0],[73,2],[75,5],[78,2],[78,2],[78,2],[78,2],[78,2],[80,1],[80,1],[80,1],[80,1],[80,3],[80,4],[80,3],[80,4],[80,4],[80,1],[90,1],[90,3],[90,3],[90,3],[90,3],[90,3],[90,3],[90,3],[90,3],[90,3],[90,3],[90,3],[90,3],[90,3],[101,0],[101,1],[103,0],[103,2],[105,1],[105,6],[105,6],[105,6],[105,4],[105,5],[105,4],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[119,1],[119,1],[121,1],[121,4],[121,3],[121,6],[123,1],[123,1],[47,1],[47,4],[47,2],[47,3],[47,3],[47,3],[47,3],[47,3],[85,1],[85,3],[128,0],[128,2],[130,0],[130,1],[132,0],[132,2],[131,3],[11,0],[11,1],[137,3],[136,1],[136,3],[139,2],[140,0],[140,1],[140,1],[143,0],[143,2],[145,2],[145,4],[145,4],[12,0],[12,1],[148,0],[148,1],[149,2],[151,0],[151,2],[151,4],[28,0],[28,10],[158,1],[158,3],[160,1],[160,4],[163,0],[163,1],[163,1],[166,1],[166,1],[169,0],[169,1],[171,0],[171,2],[172,4],[172,5],[172,4],[172,6],[172,5],[178,0],[178,1],[176,2],[175,1],[175,4],[161,1],[161,1],[181,1],[181,3],[159,0],[159,4],[183,0],[183,2],[183,1],[184,1],[184,1],[187,0],[187,2],[187,2],[187,2],[188,0],[188,1],[189,0],[189,1],[190,1],[190,3],[191,6],[191,6],[191,6],[174,4],[174,4],[174,3],[62,1]],
  performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
  /* this == yyval */
  
  var $0 = $$.length - 1;
  switch (yystate) {
  case 1: case 2:
   return {nodeType: 'Main', value: $$[$0-2], hasSemicolon: $$[$0-1]}; 
  break;
  case 3: case 145:
   this.$ = true 
  break;
  case 4:
   this.$ = false 
  break;
  case 5: case 13: case 14: case 15: case 17: case 19: case 21: case 23: case 25: case 27: case 30: case 31: case 32: case 51: case 52: case 53: case 54: case 55: case 60: case 61: case 63: case 69: case 73: case 80: case 81: case 82: case 83: case 89: case 90: case 105: case 107: case 108: case 115: case 116: case 117: case 118: case 119: case 120: case 121: case 122: case 123: case 124: case 128: case 130: case 141: case 143: case 148: case 154: case 155: case 157: case 162: case 164: case 165: case 176: case 177: case 178: case 179: case 181: case 190: case 192: case 194: case 195: case 203: case 204: case 210: case 212:
   this.$ = $$[$0] 
  break;
  case 6:
   this.$ = $$[$0-2], this.$.orderBy = $$[$0-1], this.$.limit = $$[$0]; 
  break;
  case 7: case 8:
   this.$ = { type: 'Union', left: $$[$0-3], distinctOpt: $$[$0-1], right: $$[$0] }; 
  break;
  case 9:
   this.$ = { type: 'SelectParenthesized', value: $$[$0-1] }; 
  break;
  case 10: case 11:
   this.$ = { type: 'Union', left: $$[$0-3], distinctOpt: $$[$0-1], right: $$[$0] } 
  break;
  case 12:
  
          this.$ = {
            type: 'Select',
            distinctOpt: $$[$0-10],
            highPriorityOpt: $$[$0-9],
            maxStateMentTimeOpt: $$[$0-8],
            straightJoinOpt: $$[$0-7],
            sqlSmallResultOpt: $$[$0-6],
            sqlBigResultOpt: $$[$0-5],
            sqlBufferResultOpt: $$[$0-4],
            sqlCacheOpt: $$[$0-3],
            sqlCalcFoundRowsOpt: $$[$0-2],
            selectItems: $$[$0-1],
            from: $$[$0].from,
            partition: $$[$0].partition,
            where: $$[$0].where,
            groupBy: $$[$0].groupBy,
            having: $$[$0].having,
            orderBy: $$[$0].orderBy,
            limit: $$[$0].limit,
            procedure: $$[$0].procedure,
            updateLockMode: $$[$0].updateLockMode
          }
        
  break;
  case 16: case 18: case 20: case 22: case 24: case 26: case 28: case 29: case 33: case 59: case 68: case 72: case 104: case 106: case 140: case 142: case 144: case 147: case 153: case 156: case 161: case 163: case 166: case 175: case 180: case 189: case 198: case 205: case 209: case 211:
   this.$ = null 
  break;
  case 34:
   $$[$0-2].value.push($$[$0]); 
  break;
  case 35:
   this.$ = { type: 'SelectExpr', value: [ $$[$0] ] } 
  break;
  case 36: case 37: case 64:
   this.$ = { type: 'Identifier', value: $$[$0] } 
  break;
  case 38:
   this.$ = $$[$0-1]; this.$.alias = $$[$0].alias; this.$.hasAs = $$[$0].hasAs; 
  break;
  case 39: case 200:
   this.$ = {alias: null, hasAs: null} 
  break;
  case 40: case 42:
   this.$ = {alias: $$[$0], hasAs: true} 
  break;
  case 41:
   this.$ = {alias: $$[$0], hasAs: false} 
  break;
  case 43:
   this.$ = {alias: $$[$01], hasAs: false} 
  break;
  case 44:
   this.$ = { type: 'String', value: $$[$0] } 
  break;
  case 45: case 46: case 47:
   this.$ = { type: 'Number', value: $$[$0] } 
  break;
  case 48:
   this.$ = { type: 'Boolean', value: 'TRUE' } 
  break;
  case 49:
   this.$ = { type: 'Boolean', value: 'FALSE' } 
  break;
  case 50:
   this.$ = { type: 'Null', value: 'null' } 
  break;
  case 56:
   this.$ = {type: 'FunctionCall', name: $$[$0-3], params: $$[$0-1]} 
  break;
  case 57:
   $$[$0-2].push($$[$0]); this.$ = $$[$0-2]; 
  break;
  case 58:
   this.$ = [$$[$0]]; 
  break;
  case 62:
   this.$ = { type: 'FunctionCallParam', distinctOpt: $$[$0-1], value: $$[$0] } 
  break;
  case 65:
   this.$ = $$[$0-2]; $$[$0-2].value += '.' + $$[$0] 
  break;
  case 66:
   this.$ = { type: 'IdentifierList', value: [ $$[$0] ] } 
  break;
  case 67: case 172:
   this.$ = $$[$0-2]; $$[$0-2].value.push($$[$0]); 
  break;
  case 70:
   this.$ = { type: 'WhenThenList', value: [ { when: $$[$0-2], then: $$[$0] } ] }; 
  break;
  case 71:
   this.$ = $$[$0-4]; this.$.value.push({ when: $$[$0-2], then: $$[$0] }); 
  break;
  case 74:
   this.$ = { type: 'CaseWhen', caseExprOpt: $$[$0-3], whenThenList: $$[$0-2], else: $$[$0-1] } 
  break;
  case 75: case 76: case 77: case 78: case 79:
   this.$ = { type: 'Prefix', prefix: $$[$0-1], value: $$[$0] } 
  break;
  case 84:
   this.$ = { type: 'SimpleExprParentheses', value: $$[$0-1] } 
  break;
  case 85:
   this.$ = { type: 'SimpleExprParentheses', value: $$[$0-2], hasRow: true } 
  break;
  case 86:
   this.$ = { type: 'SubQuery', value: $$[$0-1] } 
  break;
  case 87:
   this.$ = { type: 'SubQuery', value: $$[$0-1], hasExists: true } 
  break;
  case 88:
   this.$ = { type: 'IdentifierExpr', identifier: $$[$0-2], value: $$[$0-1] } 
  break;
  case 91:
   this.$ = { type: 'BitExpression', operator: '||', left: $$[$0-2], right: $$[$0] } 
  break;
  case 92:
   this.$ = { type: 'BitExpression', operator: '|', left: $$[$0-2], right: $$[$0] } 
  break;
  case 93:
   this.$ = { type: 'BitExpression', operator: '&', left: $$[$0-2], right: $$[$0] } 
  break;
  case 94:
   this.$ = { type: 'BitExpression', operator: '<<', left: $$[$0-2], right: $$[$0] } 
  break;
  case 95:
   this.$ = { type: 'BitExpression', operator: '>>', left: $$[$0-2], right: $$[$0] } 
  break;
  case 96:
   this.$ = { type: 'BitExpression', operator: '+', left: $$[$0-2], right: $$[$0] } 
  break;
  case 97:
   this.$ = { type: 'BitExpression', operator: '-', left: $$[$0-2], right: $$[$0] } 
  break;
  case 98:
   this.$ = { type: 'BitExpression', operator: '*', left: $$[$0-2], right: $$[$0] } 
  break;
  case 99:
   this.$ = { type: 'BitExpression', operator: '/', left: $$[$0-2], right: $$[$0] } 
  break;
  case 100:
   this.$ = { type: 'BitExpression', operator: 'DIV', left: $$[$0-2], right: $$[$0] } 
  break;
  case 101:
   this.$ = { type: 'BitExpression', operator: 'MOD', left: $$[$0-2], right: $$[$0] } 
  break;
  case 102:
   this.$ = { type: 'BitExpression', operator: '%', left: $$[$0-2], right: $$[$0] } 
  break;
  case 103:
   this.$ = { type: 'BitExpression', operator: '^', left: $$[$0-2], right: $$[$0] } 
  break;
  case 109:
   this.$ = { type: 'InSubQueryPredicate', hasNot: $$[$0-4], left: $$[$0-5] ,right: $$[$0-1] } 
  break;
  case 110:
   this.$ = { type: 'InExpressionListPredicate', hasNot: $$[$0-4], left: $$[$0-5], right: $$[$0-1] } 
  break;
  case 111:
   this.$ = { type: 'BetweenPredicate', hasNot: $$[$0-4], left: $$[$0-5], right: { left: $$[$0-2], right: $$[$0] } } 
  break;
  case 112:
   this.$ = { type: 'SoundsLikePredicate', hasNot: false, left: $$[$0-3], right: $$[$0] } 
  break;
  case 113:
   this.$ = { type: 'LikePredicate', hasNot: $$[$0-3], left: $$[$0-4], right: $$[$0-1], escape: $$[$0] } 
  break;
  case 114:
   this.$ = { type: 'RegexpPredicate', hasNot: $$[$0-2], left: $$[$0-3], right: $$[$0] } 
  break;
  case 125:
   this.$ = { type: 'IsNullBooleanPrimary', hasNot: $$[$0-1] , value: $$[$0-3] } 
  break;
  case 126:
   this.$ = { type: 'ComparisonBooleanPrimary', left: $$[$0-2], operator: $$[$0-1], right: $$[$0] } 
  break;
  case 127:
   this.$ = { type: 'ComparisonSubQueryBooleanPrimary', operator: $$[$0-4], subQueryOpt: $$[$0-3], left: $$[$0-5], right: $$[$0-1] } 
  break;
  case 129:
   this.$ = { type: 'BooleanExtra', value: $$[$0] } 
  break;
  case 131:
   this.$ = { type: 'IsExpression', hasNot: $$[$0-1], left: $$[$0-3], right: $$[$0] } 
  break;
  case 132:
   this.$ = { type: 'NotExpression', value: $$[$0] } 
  break;
  case 133: case 136:
   this.$ = { type: 'AndExpression', operator: $$[$0-1], left: $$[$0-2], right: $$[$0] } 
  break;
  case 134: case 135:
   this.$ = { type: 'OrExpression', operator: $$[$0-1], left: $$[$0-2], right: $$[$0] } 
  break;
  case 137:
   this.$ = { type: 'XORExpression', left: $$[$0-2], right: $$[$0] } 
  break;
  case 138:
   this.$ = { type: 'ExpressionList', value: [ $$[$0] ] } 
  break;
  case 139: case 214:
   this.$ = $$[$0-2]; this.$.value.push($$[$0]); 
  break;
  case 146:
   this.$ = { type: 'GroupBy', value: $$[$0-1], rollUp: $$[$0] } 
  break;
  case 149:
   this.$ = { type: 'OrderBy', value: $$[$0-1], rollUp: $$[$0] } 
  break;
  case 150: case 196:
   this.$ = [ $$[$0] ] 
  break;
  case 151:
   this.$ = $$[$0-2]; $$[$0-2].push($$[$0]); 
  break;
  case 152:
   this.$ = { type: 'GroupByOrderByItem', value: $$[$0-1], sortOpt: $$[$0] } 
  break;
  case 158:
   this.$ = { type: 'Limit', value: [ $$[$0] ] } 
  break;
  case 159:
   this.$ = { type: 'Limit', value: [ $$[$0-2], $$[$0] ] } 
  break;
  case 160:
   this.$ = { type: 'Limit', value: [ $$[$0], $$[$0-2] ], offsetMode: true } 
  break;
  case 167:
   this.$ = $$[$0-1] + ' ' + $$[$0] 
  break;
  case 168:
   this.$ = $$[$0-3] + ' ' + $$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0] 
  break;
  case 169:
   this.$ = {} 
  break;
  case 170:
   this.$ = { from: $$[$0-8], partition: $$[$0-7], where: $$[$0-6], groupBy: $$[$0-5], having: $$[$0-4], orderBy: $$[$0-3], limit: $$[$0-2], procedure: $$[$0-1], updateLockMode: $$[$0] } 
  break;
  case 171:
   this.$ = { type: 'TableReferences', value: [ $$[$0] ] } 
  break;
  case 173:
   this.$ = { type: 'TableReference', value: $$[$0] } 
  break;
  case 174:
   this.$ = { type: 'TableReference', hasOj: true, value: $$[$0-1] } 
  break;
  case 182:
   this.$ = { leftRight: null, outOpt: null } 
  break;
  case 183:
   this.$ = { leftRight: $$[$0-1], outOpt: $$[$0] } 
  break;
  case 184:
   this.$ = { type: 'InnerCrossJoinTable', innerCrossOpt: $$[$0-2], left: $$[$0-3], right: $$[$0], condition: null } 
  break;
  case 185:
   this.$ = { type: 'InnerCrossJoinTable', innerCrossOpt: $$[$0-3], left: $$[$0-4], right: $$[$0-1], condition: $$[$0] } 
  break;
  case 186:
   this.$ = { type: 'StraightJoinTable', left: $$[$0-3], right: $$[$0-1], condition: $$[$0] } 
  break;
  case 187:
   this.$ = { type: 'LeftRightJoinTable', leftRight: $$[$0-4], outOpt: $$[$0-3], left: $$[$0-5], right: $$[$0-1], condition: $$[$0] } 
  break;
  case 188:
   this.$ = { type: 'NaturalJoinTable', leftRight: $$[$0-2].leftRight, outOpt: $$[$0-2].outOpt, left: $$[$0-4], right: $$[$0] } 
  break;
  case 191:
   this.$ = { type: 'OnJoinCondition', value: $$[$0] } 
  break;
  case 193:
   this.$ = { type: 'UsingJoinCondition', value: $$[$0-1] } 
  break;
  case 197:
   this.$ = $$[$0-2]; $$[$0-2].push($$[$0]) 
  break;
  case 199:
   this.$ = { type: 'Partitions', value: $$[$0-1] } 
  break;
  case 201:
   this.$ = { hasAs: true, alias: $$[$0] } 
  break;
  case 202:
   this.$ = { hasAs: false, alias: $$[$0] } 
  break;
  case 206: case 207: case 208:
   this.$ = { type: 'ForOptIndexHint', value: $$[$0] } 
  break;
  case 213:
   this.$ = { type: 'IndexHintList', value: [ $$[$0] ] } 
  break;
  case 215:
   this.$ = { type: 'UseIndexHint', value: $$[$0-1], forOpt: $$[$0-3], indexOrKey: $$[$0-4] } 
  break;
  case 216:
   this.$ = { type: 'IgnoreIndexHint', value: $$[$0-1], forOpt: $$[$0-3], indexOrKey: $$[$0-4] } 
  break;
  case 217:
   this.$ = { type: 'ForceIndexHint', value: $$[$0-1], forOpt: $$[$0-3], indexOrKey: $$[$0-4] } 
  break;
  case 218:
   this.$ = { type: 'TableFactor', value: $$[$0-3], partition: $$[$0-2], alias: $$[$0-1].alias, hasAs: $$[$0-1].hasAs, indexHintOpt: $$[$0] } 
  break;
  case 219:
   this.$ = { type: 'TableFactor', value: { type: 'SubQuery', value: $$[$0-2] }, alias: $$[$0].alias, hasAs: $$[$0].hasAs} 
  break;
  case 220:
   this.$ = $$[$0-1]; this.$.hasParentheses = true 
  break;
  case 221:
   this.$ = { type: 'PlaceHolder', value: $$[$0], param: $$[$0].slice(2, -1)} 
  break;
  }
  },
  table: [{3:1,4:2,7:3,9:5,10:6,13:7,16:$V0,18:$V1},{1:[3]},{5:9,6:$V2,8:$V3,14:$V4},{5:12,6:$V2,8:$V3},o([16,32,33,35,36,37,38,39,40,41,42,45,46,50,51,54,55,57,58,60,76,79,81,82,83,84,86,87,88,102,195],$V5,{15:13,29:$V6,30:$V7,31:$V8}),o($V9,[2,5]),o([6,8,146],$Va,{11:17,137:18,138:$Vb}),{14:$Vc},{4:21,18:$V1},{6:[1,22]},{15:23,18:$V5,29:$V6,30:$V7,31:$V8},{6:[2,3]},{6:[1,24]},o($Vd,[2,18],{19:25,32:[1,26]}),o($Ve,[2,13]),o($Ve,[2,14]),o($Ve,[2,15]),o($V9,$Vf,{12:27,145:28,146:$Vg}),o($Vh,[2,148]),{16:$Vi,35:$Vj,47:32,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,136:30,139:31,195:$VB},{15:67,16:$V5,29:$V6,30:$V7,31:$V8},{17:[1,68]},{1:[2,1]},{4:69,9:70,18:$V1},{1:[2,2]},o($VC,[2,20],{20:71,33:[1,72]}),o($Vd,[2,17]),o($V9,[2,6]),o($VD,[2,162]),{35:[1,73]},o($Vh,$VE,{132:74,43:$VF,133:$VG}),o($VH,[2,150]),o($VH,[2,153],{140:77,91:$VI,108:$VJ,125:$VK,126:$VL,127:$VM,141:[1,83],142:[1,84]}),o($VN,[2,130],{112:86,34:[1,87],113:[1,88],114:[1,89],115:[1,90],116:[1,91],117:[1,92],118:[1,93],122:[1,85]}),{16:$Vi,35:$Vj,47:94,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},o($VO,[2,124]),o($VP,[2,108],{101:95,45:$VQ,79:$VR,81:$VS,91:$VT,92:$VU,93:$VV,94:$VW,95:$VX,96:$VY,97:$VZ,98:$V_,99:$V$,100:$V01,102:$V11,106:$V21,107:$V21,110:$V21,111:$V21,109:[1,96]}),o($V31,[2,90]),o($V41,[2,80]),o($V41,[2,81],{67:$V51}),o($V41,[2,82]),o($V41,[2,83]),{4:113,16:$Vi,18:$V1,35:$Vj,47:114,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,85:112,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},{16:[1,115]},{16:[1,116]},{50:$V61,66:117},o($V41,[2,89]),o($V41,[2,51]),o($V41,[2,52]),o($V41,[2,53]),o($V41,[2,54]),o($V41,[2,55]),o([6,8,14,17,34,36,43,45,49,50,51,67,71,72,74,77,79,81,89,91,92,93,94,95,96,97,98,99,100,102,104,106,107,108,109,110,111,113,114,115,116,117,118,122,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],$V71,{16:$V81}),{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:120,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,195:$VB},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:121,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,195:$VB},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:122,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,195:$VB},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:123,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,195:$VB},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:124,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,195:$VB},{16:$Vi,35:$Vj,47:126,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,69:125,71:[2,68],75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},o($V41,[2,44]),o($V41,[2,45]),o($V41,[2,46]),o($V41,[2,47]),o($V41,[2,48]),o($V41,[2,49]),o($V41,[2,50]),o($V41,[2,221]),{10:128,13:127,16:$V0},o([6,8,14,138,146],[2,9]),o($V9,[2,10],{14:$V4}),o($V9,[2,11]),o($V91,[2,22],{21:129,36:[1,130]}),{34:[1,131]},o($VD,[2,158],{43:[1,132],147:[1,133]}),o($Vh,[2,149]),{16:$Vi,35:$Vj,47:32,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,139:134,195:$VB},{134:[1,135]},o($VH,[2,152]),{16:$Vi,35:$Vj,47:136,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},{16:$Vi,35:$Vj,47:137,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},{16:$Vi,35:$Vj,47:138,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},{16:$Vi,35:$Vj,47:139,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},{16:$Vi,35:$Vj,47:140,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},o($VH,[2,154]),o($VH,[2,155]),o([57,58,60,124],$V21,{101:141,102:$V11}),{16:$Vi,29:[1,144],35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,105:142,119:143,120:[1,145],195:$VB},o($Va1,[2,115]),o($Va1,[2,116]),o($Va1,[2,117]),o($Va1,[2,118]),o($Va1,[2,119]),o($Va1,[2,120]),o($Va1,[2,121]),o($VN,[2,132]),{106:[1,146],107:[1,147],110:[1,148],111:[1,149]},{110:[1,150]},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:151,195:$VB},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:152,195:$VB},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:153,195:$VB},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:154,195:$VB},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:155,195:$VB},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:156,195:$VB},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:157,195:$VB},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:158,195:$VB},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:159,195:$VB},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:160,195:$VB},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:161,195:$VB},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:162,195:$VB},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:163,195:$VB},o([57,58,60,106,107,110,111,124],[2,105]),{50:[1,164]},{17:[1,165],43:$Vb1},{17:[1,167]},o($Vc1,[2,138],{91:$VI,108:$VJ,125:$VK,126:$VL,127:$VM}),{16:$Vi,35:$Vj,47:114,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,85:168,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},{4:169,18:$V1},{16:$Vi,35:$Vj,47:170,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,67:$V51,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},o([6,8,14,16,17,35,36,43,49,50,51,54,55,57,58,60,67,76,79,81,82,83,84,86,87,88,89,102,129,135,138,144,146,150,152,154,164,165,167,168,173,177,179,180,182,192,193,194,195],$V71),o($Vc1,$Vd1,{121:33,105:35,90:36,80:37,61:38,66:39,63:40,78:41,75:46,52:47,53:48,56:49,59:50,62:51,64:171,65:172,47:176,16:$Vi,30:$Ve1,35:$Vj,45:$Vf1,46:$Vg1,50:$Vk,51:$Vl,54:$Vm,55:$Vn,57:$Vo,58:$Vp,60:$Vq,76:$Vr,79:$Vs,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,102:$VA,195:$VB}),o($V41,[2,75]),o($V41,[2,76]),o($V41,[2,77]),o($V41,[2,78]),o($V41,[2,79]),{70:177,71:[1,178]},{71:[2,69],91:$VI,108:$VJ,125:$VK,126:$VL,127:$VM},o($Vh1,[2,7],{14:$Vc}),o($Vh1,[2,8]),o($Vi1,[2,24],{22:179,37:[1,180]}),o($V91,[2,21]),{35:[1,181]},{35:[1,182]},{35:[1,183]},o($VH,[2,151]),o($Vj1,[2,145]),o($VN,[2,133]),o($Vk1,[2,134],{108:$VJ,125:$VK}),o($Vk1,[2,135],{108:$VJ,125:$VK}),o($VN,[2,136]),o($Vk1,[2,137],{108:$VJ,125:$VK}),{56:186,57:$Vo,58:$Vp,60:[1,185],123:184,124:[1,187]},o($VO,[2,126]),{16:[1,188]},{16:[2,122]},{16:[2,123]},{16:[1,189]},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:190,195:$VB},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:191,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,195:$VB},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:192,195:$VB},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:193,195:$VB},o([6,8,14,17,34,36,43,49,50,51,71,72,74,77,89,91,102,106,107,108,109,110,111,113,114,115,116,117,118,122,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],[2,91],{45:$VQ,79:$VR,81:$VS,92:$VU,93:$VV,94:$VW,95:$VX,96:$VY,97:$VZ,98:$V_,99:$V$,100:$V01}),o([6,8,14,17,34,36,43,49,50,51,71,72,74,77,89,91,92,102,106,107,108,109,110,111,113,114,115,116,117,118,122,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],[2,92],{45:$VQ,79:$VR,81:$VS,93:$VV,94:$VW,95:$VX,96:$VY,97:$VZ,98:$V_,99:$V$,100:$V01}),o([6,8,14,17,34,36,43,49,50,51,71,72,74,77,89,91,92,93,100,102,106,107,108,109,110,111,113,114,115,116,117,118,122,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],[2,93],{45:$VQ,79:$VR,81:$VS,94:$VW,95:$VX,96:$VY,97:$VZ,98:$V_,99:$V$}),o($Vl1,[2,94],{45:$VQ,79:$VR,81:$VS,96:$VY,97:$VZ,98:$V_,99:$V$}),o($Vl1,[2,95],{45:$VQ,79:$VR,81:$VS,96:$VY,97:$VZ,98:$V_,99:$V$}),o($Vm1,[2,96],{45:$VQ,96:$VY,97:$VZ,98:$V_,99:$V$}),o($Vm1,[2,97],{45:$VQ,96:$VY,97:$VZ,98:$V_,99:$V$}),o($V31,[2,98]),o($V31,[2,99]),o($V31,[2,100]),o($V31,[2,101]),o($V31,[2,102]),o([6,8,14,17,34,36,43,49,50,51,71,72,74,77,89,91,92,100,102,106,107,108,109,110,111,113,114,115,116,117,118,122,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],[2,103],{45:$VQ,79:$VR,81:$VS,93:$VV,94:$VW,95:$VX,96:$VY,97:$VZ,98:$V_,99:$V$}),o([6,8,14,16,17,34,35,36,43,45,49,50,51,54,55,57,58,60,67,71,72,74,76,77,79,81,82,83,84,86,87,88,89,91,92,93,94,95,96,97,98,99,100,102,104,106,107,108,109,110,111,113,114,115,116,117,118,122,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182,192,193,194,195],[2,65]),o($V41,[2,84]),{16:$Vi,35:$Vj,47:194,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},o($V41,[2,86]),{17:[1,195],43:$Vb1},{17:[1,196]},{89:[1,197],91:$VI,108:$VJ,125:$VK,126:$VL,127:$VM},{17:[1,198],43:[1,199]},o($Vc1,[2,58]),o($Vc1,[2,60]),o($Vc1,[2,61]),{16:$Vi,35:$Vj,47:200,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},o($Vc1,[2,63],{91:$VI,108:$VJ,125:$VK,126:$VL,127:$VM}),{71:[1,202],73:201,74:[1,203],77:[2,72]},{16:$Vi,35:$Vj,47:204,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},o($Vn1,[2,26],{23:205,38:[1,206]}),o($Vi1,[2,23]),o($VC,[2,19]),o($VD,[2,159]),o($VD,[2,160]),o($VN,[2,131]),o($VO,[2,125]),o($VN,[2,128]),o($VN,[2,129]),{4:207,18:$V1},{4:208,16:$Vi,18:$V1,35:$Vj,47:114,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,85:209,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},{45:$VQ,79:$VR,81:$VS,91:$VT,92:$VU,93:$VV,94:$VW,95:$VX,96:$VY,97:$VZ,98:$V_,99:$V$,100:$V01,108:[1,210]},o($VO,[2,106],{103:211,104:[1,212]}),o($VP,[2,114],{45:$VQ,79:$VR,81:$VS,91:$VT,92:$VU,93:$VV,94:$VW,95:$VX,96:$VY,97:$VZ,98:$V_,99:$V$,100:$V01}),o($VP,[2,112],{45:$VQ,79:$VR,81:$VS,91:$VT,92:$VU,93:$VV,94:$VW,95:$VX,96:$VY,97:$VZ,98:$V_,99:$V$,100:$V01}),o($Vc1,[2,139],{91:$VI,108:$VJ,125:$VK,126:$VL,127:$VM}),o($V41,[2,85]),o($V41,[2,87]),o($V41,[2,88]),o($V41,[2,56]),o($Vc1,$Vd1,{121:33,105:35,90:36,80:37,61:38,66:39,63:40,78:41,75:46,52:47,53:48,56:49,59:50,62:51,47:176,65:213,16:$Vi,30:$Ve1,35:$Vj,45:$Vf1,46:$Vg1,50:$Vk,51:$Vl,54:$Vm,55:$Vn,57:$Vo,58:$Vp,60:$Vq,76:$Vr,79:$Vs,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,102:$VA,195:$VB}),o($Vc1,[2,62],{91:$VI,108:$VJ,125:$VK,126:$VL,127:$VM}),{77:[1,214]},{16:$Vi,35:$Vj,47:215,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},{16:$Vi,35:$Vj,47:216,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},{72:[1,217],91:$VI,108:$VJ,125:$VK,126:$VL,127:$VM},o($Vo1,[2,28],{24:218,39:[1,219]}),o($Vn1,[2,25]),{17:[1,220]},{17:[1,221]},{17:[1,222],43:$Vb1},{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,105:223,195:$VB},o($VO,[2,113]),{16:$Vi,35:$Vj,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:224,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,195:$VB},o($Vc1,[2,57]),o($V41,[2,74]),{72:[1,225],91:$VI,108:$VJ,125:$VK,126:$VL,127:$VM},{77:[2,73],91:$VI,108:$VJ,125:$VK,126:$VL,127:$VM},{16:$Vi,35:$Vj,47:226,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},o($Vp1,[2,29],{25:227,40:[1,228],41:[1,229]}),o($Vo1,[2,27]),o($VO,[2,127]),o($VO,[2,109]),o($VO,[2,110]),o($VO,[2,111]),o($VO,[2,107]),{16:$Vi,35:$Vj,47:230,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},o($Vq1,[2,70],{91:$VI,108:$VJ,125:$VK,126:$VL,127:$VM}),o($Vr1,[2,33],{26:231,42:[1,232]}),o($Vp1,[2,30]),o($Vp1,[2,31]),o($Vq1,[2,71],{91:$VI,108:$VJ,125:$VK,126:$VL,127:$VM}),{16:$Vi,27:233,35:$Vj,44:234,45:$Vs1,46:$Vt1,47:237,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},o($Vr1,[2,32]),o($Vu1,[2,169],{28:238,43:[1,239],157:[1,240]}),o($Vv1,[2,35]),o($Vv1,[2,36]),o($Vv1,[2,37]),o($Vv1,[2,39],{48:241,49:[1,242],50:[1,243],51:[1,244],91:$VI,108:$VJ,125:$VK,126:$VL,127:$VM}),o($Vu1,[2,12]),{16:$Vi,35:$Vj,44:245,45:$Vs1,46:$Vt1,47:237,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},{16:$Vw1,50:$V61,66:252,88:$Vx1,158:246,160:247,161:248,172:251,174:250},o($Vv1,[2,38]),{50:[1,254],51:[1,255]},o($Vv1,[2,41]),o($Vv1,[2,43]),o($Vv1,[2,34]),o([6,8,14,17,129,135,138,144,146,150,152,154],$Vy1,{159:256,43:$Vz1,182:$VA1}),o($VB1,[2,171]),o($VB1,[2,173],{163:259,166:261,36:$VC1,164:$VD1,165:$VE1,167:$VF1,168:$VG1,173:$VH1,177:$VI1}),{162:[1,267]},o($VJ1,[2,194]),o($VJ1,[2,195]),o([6,8,14,17,36,43,49,50,89,129,135,138,144,146,150,152,154,164,165,167,168,173,177,179,180,192,193,194],$Vy1,{159:268,67:$V51,182:$VA1}),{4:269,16:$Vw1,18:$V1,50:$V61,66:252,88:$Vx1,158:270,160:247,161:248,172:251,174:250},o($Vv1,[2,40]),o($Vv1,[2,42]),o($VK1,[2,140],{128:271,129:[1,272]}),{16:$Vw1,50:$V61,66:252,88:$Vx1,160:273,161:248,172:251,174:250},{16:[1,274]},{173:[1,275]},{16:$Vw1,50:$V61,66:252,174:276},{169:277,170:$VL1,173:$VM1},{166:280,167:$VF1,168:$VG1,171:279,173:[2,182]},{173:[2,176]},{173:[2,177]},o($VN1,[2,178]),o($VN1,[2,179]),{16:$Vw1,50:$V61,66:252,161:281,172:251,174:250},o($VO1,$VP1,{183:282,66:284,49:$VQ1,50:$V61}),{17:[1,285]},{17:[1,286],43:$Vz1},o($Vj1,[2,142],{130:287,131:288,135:[1,289]}),{16:$Vi,35:$Vj,47:290,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},o($VB1,[2,172]),{50:$V61,66:292,181:291},{16:$Vw1,50:$V61,66:252,174:293},{176:294,179:$VR1},{173:[1,296]},{173:[2,181]},{173:[1,297]},{169:298,170:$VL1,173:$VM1},{36:$VC1,89:[1,299],163:259,164:$VD1,165:$VE1,166:261,167:$VF1,168:$VG1,173:$VH1,177:$VI1},o($VJ1,[2,211],{189:300,190:301,191:302,192:$VS1,193:$VT1,194:$VU1}),{50:$V61,66:306},o($VO1,[2,202],{67:$V51}),o($VJ1,$VP1,{66:284,183:307,49:$VQ1,50:$V61}),o($VJ1,[2,220]),o($VV1,[2,156],{143:308,144:[1,309]}),o($Vj1,[2,143]),{16:$Vi,35:$Vj,47:32,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,136:310,139:31,195:$VB},o($VK1,[2,141],{91:$VI,108:$VJ,125:$VK,126:$VL,127:$VM}),{17:[1,311],43:[1,312]},o($Vc1,[2,196],{67:$V51}),o([6,8,14,17,36,43,89,129,135,138,144,146,150,152,154,164,165,167,168,173,177,182],[2,184],{175:313,176:314,179:$VR1,180:$VW1}),o($VJ1,[2,186]),{16:$Vi,35:$Vj,47:316,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},{16:$Vw1,50:$V61,66:252,161:317,172:251,174:250},{16:$Vw1,50:$V61,66:252,174:318},{173:[2,183]},o($VB1,[2,174]),o($VJ1,[2,218]),o($VJ1,[2,212]),o($VJ1,[2,213]),{184:320,185:$VX1,186:$VY1},{184:323,185:$VX1,186:$VY1},{184:324,185:$VX1,186:$VY1},o($VO1,[2,201],{67:$V51}),o($VJ1,[2,219]),o($Vh,$Va,{137:18,11:325,138:$Vb}),{16:$Vi,35:$Vj,47:326,50:$Vk,51:$Vl,52:47,53:48,54:$Vm,55:$Vn,56:49,57:$Vo,58:$Vp,59:50,60:$Vq,61:38,62:51,63:40,66:39,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,90:36,102:$VA,105:35,121:33,195:$VB},o($Vj1,$VE,{132:327,43:$VF,133:$VG}),o([6,8,14,17,36,43,49,50,89,129,135,138,144,146,150,152,154,164,165,167,168,173,177,179,180,182,192,193,194],[2,199]),{50:$V61,66:328},o($VJ1,[2,185]),o($VJ1,[2,192]),{16:[1,329]},o($VJ1,[2,191],{91:$VI,108:$VJ,125:$VK,126:$VL,127:$VM}),{36:$VC1,163:259,164:$VD1,165:$VE1,166:261,167:$VF1,168:$VG1,173:$VH1,175:330,176:314,177:$VI1,179:$VR1,180:$VW1},o($VJ1,[2,188]),{191:331,192:$VS1,193:$VT1,194:$VU1},{16:$VZ1,152:$V_1,187:332},o($V$1,[2,203]),o($V$1,[2,204]),{16:$VZ1,152:$V_1,187:334},{16:$VZ1,152:$V_1,187:335},o($VD,$Vf,{145:28,12:336,146:$Vg}),o($VV1,[2,157],{91:$VI,108:$VJ,125:$VK,126:$VL,127:$VM}),o($Vj1,[2,146]),o($Vc1,[2,197],{67:$V51}),{50:$V61,66:338,68:337},o($VJ1,[2,187]),o($VJ1,[2,214]),{16:[1,339]},{135:[1,342],138:[1,341],173:[1,340]},{16:[1,343]},{16:[1,344]},o($V02,[2,163],{148:345,149:346,150:[1,347]}),{17:[1,348],43:$V12},o($Vc1,[2,66],{67:$V51}),{17:[2,209],50:$V61,66:338,68:351,188:350},{16:[2,206]},{16:[2,207]},{16:[2,208]},{50:$V61,66:338,68:352},{50:$V61,66:338,68:353},o($Vu1,[2,166],{151:354,152:[1,355],154:[1,356]}),o($V02,[2,164]),{50:[1,358],63:357},o($VJ1,[2,193]),{50:$V61,66:359},{17:[1,360]},{17:[2,210],43:$V12},{17:[1,361],43:$V12},{17:[1,362],43:$V12},o($Vu1,[2,170]),{153:[1,363]},{106:[1,364]},o($V02,[2,165]),{16:$V81},o($Vc1,[2,67],{67:$V51}),o($VJ1,[2,215]),o($VJ1,[2,216]),o($VJ1,[2,217]),o($Vu1,[2,167]),{155:[1,365]},{156:[1,366]},o($Vu1,[2,168])],
  defaultActions: {11:[2,3],22:[2,1],24:[2,2],144:[2,122],145:[2,123],263:[2,176],264:[2,177],278:[2,181],298:[2,183],340:[2,206],341:[2,207],342:[2,208]},
  parseError: function parseError (str, hash) {
      if (hash.recoverable) {
          this.trace(str);
      } else {
          var error = new Error(str);
          error.hash = hash;
          throw error;
      }
  },
  parse: function parse(input) {
      var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
      var args = lstack.slice.call(arguments, 1);
      var lexer = Object.create(this.lexer);
      var sharedState = { yy: {} };
      for (var k in this.yy) {
          if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
              sharedState.yy[k] = this.yy[k];
          }
      }
      lexer.setInput(input, sharedState.yy);
      sharedState.yy.lexer = lexer;
      sharedState.yy.parser = this;
      if (typeof lexer.yylloc == 'undefined') {
          lexer.yylloc = {};
      }
      var yyloc = lexer.yylloc;
      lstack.push(yyloc);
      var ranges = lexer.options && lexer.options.ranges;
      if (typeof sharedState.yy.parseError === 'function') {
          this.parseError = sharedState.yy.parseError;
      } else {
          this.parseError = Object.getPrototypeOf(this).parseError;
      }
      function popStack(n) {
          stack.length = stack.length - 2 * n;
          vstack.length = vstack.length - n;
          lstack.length = lstack.length - n;
      }
      _token_stack:
          var lex = function () {
              var token;
              token = lexer.lex() || EOF;
              if (typeof token !== 'number') {
                  token = self.symbols_[token] || token;
              }
              return token;
          };
      var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
      while (true) {
          state = stack[stack.length - 1];
          if (this.defaultActions[state]) {
              action = this.defaultActions[state];
          } else {
              if (symbol === null || typeof symbol == 'undefined') {
                  symbol = lex();
              }
              action = table[state] && table[state][symbol];
          }
                      if (typeof action === 'undefined' || !action.length || !action[0]) {
                  var errStr = '';
                  expected = [];
                  for (p in table[state]) {
                      if (this.terminals_[p] && p > TERROR) {
                          expected.push('\'' + this.terminals_[p] + '\'');
                      }
                  }
                  if (lexer.showPosition) {
                      errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
                  } else {
                      errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
                  }
                  this.parseError(errStr, {
                      text: lexer.match,
                      token: this.terminals_[symbol] || symbol,
                      line: lexer.yylineno,
                      loc: yyloc,
                      expected: expected
                  });
              }
          if (action[0] instanceof Array && action.length > 1) {
              throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
          }
          switch (action[0]) {
          case 1:
              stack.push(symbol);
              vstack.push(lexer.yytext);
              lstack.push(lexer.yylloc);
              stack.push(action[1]);
              symbol = null;
              if (!preErrorSymbol) {
                  yyleng = lexer.yyleng;
                  yytext = lexer.yytext;
                  yylineno = lexer.yylineno;
                  yyloc = lexer.yylloc;
                  if (recovering > 0) {
                      recovering--;
                  }
              } else {
                  symbol = preErrorSymbol;
                  preErrorSymbol = null;
              }
              break;
          case 2:
              len = this.productions_[action[1]][1];
              yyval.$ = vstack[vstack.length - len];
              yyval._$ = {
                  first_line: lstack[lstack.length - (len || 1)].first_line,
                  last_line: lstack[lstack.length - 1].last_line,
                  first_column: lstack[lstack.length - (len || 1)].first_column,
                  last_column: lstack[lstack.length - 1].last_column
              };
              if (ranges) {
                  yyval._$.range = [
                      lstack[lstack.length - (len || 1)].range[0],
                      lstack[lstack.length - 1].range[1]
                  ];
              }
              r = this.performAction.apply(yyval, [
                  yytext,
                  yyleng,
                  yylineno,
                  sharedState.yy,
                  action[1],
                  vstack,
                  lstack
              ].concat(args));
              if (typeof r !== 'undefined') {
                  return r;
              }
              if (len) {
                  stack = stack.slice(0, -1 * len * 2);
                  vstack = vstack.slice(0, -1 * len);
                  lstack = lstack.slice(0, -1 * len);
              }
              stack.push(this.productions_[action[1]][0]);
              vstack.push(yyval.$);
              lstack.push(yyval._$);
              newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
              stack.push(newState);
              break;
          case 3:
              return true;
          }
      }
      return true;
  }};
  /* generated by jison-lex 0.3.4 */
  var lexer = (function(){
  var lexer = ({
  
  EOF:1,
  
  parseError:function parseError(str, hash) {
          if (this.yy.parser) {
              this.yy.parser.parseError(str, hash);
          } else {
              throw new Error(str);
          }
      },
  
  // resets the lexer, sets new input
  setInput:function (input, yy) {
          this.yy = yy || this.yy || {};
          this._input = input;
          this._more = this._backtrack = this.done = false;
          this.yylineno = this.yyleng = 0;
          this.yytext = this.matched = this.match = '';
          this.conditionStack = ['INITIAL'];
          this.yylloc = {
              first_line: 1,
              first_column: 0,
              last_line: 1,
              last_column: 0
          };
          if (this.options.ranges) {
              this.yylloc.range = [0,0];
          }
          this.offset = 0;
          return this;
      },
  
  // consumes and returns one char from the input
  input:function () {
          var ch = this._input[0];
          this.yytext += ch;
          this.yyleng++;
          this.offset++;
          this.match += ch;
          this.matched += ch;
          var lines = ch.match(/(?:\r\n?|\n).*/g);
          if (lines) {
              this.yylineno++;
              this.yylloc.last_line++;
          } else {
              this.yylloc.last_column++;
          }
          if (this.options.ranges) {
              this.yylloc.range[1]++;
          }
  
          this._input = this._input.slice(1);
          return ch;
      },
  
  // unshifts one char (or a string) into the input
  unput:function (ch) {
          var len = ch.length;
          var lines = ch.split(/(?:\r\n?|\n)/g);
  
          this._input = ch + this._input;
          this.yytext = this.yytext.substr(0, this.yytext.length - len);
          //this.yyleng -= len;
          this.offset -= len;
          var oldLines = this.match.split(/(?:\r\n?|\n)/g);
          this.match = this.match.substr(0, this.match.length - 1);
          this.matched = this.matched.substr(0, this.matched.length - 1);
  
          if (lines.length - 1) {
              this.yylineno -= lines.length - 1;
          }
          var r = this.yylloc.range;
  
          this.yylloc = {
              first_line: this.yylloc.first_line,
              last_line: this.yylineno + 1,
              first_column: this.yylloc.first_column,
              last_column: lines ?
                  (lines.length === oldLines.length ? this.yylloc.first_column : 0)
                   + oldLines[oldLines.length - lines.length].length - lines[0].length :
                this.yylloc.first_column - len
          };
  
          if (this.options.ranges) {
              this.yylloc.range = [r[0], r[0] + this.yyleng - len];
          }
          this.yyleng = this.yytext.length;
          return this;
      },
  
  // When called from action, caches matched text and appends it on next action
  more:function () {
          this._more = true;
          return this;
      },
  
  // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
  reject:function () {
          if (this.options.backtrack_lexer) {
              this._backtrack = true;
          } else {
              return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
                  text: "",
                  token: null,
                  line: this.yylineno
              });
  
          }
          return this;
      },
  
  // retain first n characters of the match
  less:function (n) {
          this.unput(this.match.slice(n));
      },
  
  // displays already matched input, i.e. for error messages
  pastInput:function () {
          var past = this.matched.substr(0, this.matched.length - this.match.length);
          return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
      },
  
  // displays upcoming input, i.e. for error messages
  upcomingInput:function () {
          var next = this.match;
          if (next.length < 20) {
              next += this._input.substr(0, 20-next.length);
          }
          return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
      },
  
  // displays the character position where the lexing error occurred, i.e. for error messages
  showPosition:function () {
          var pre = this.pastInput();
          var c = new Array(pre.length + 1).join("-");
          return pre + this.upcomingInput() + "\n" + c + "^";
      },
  
  // test the lexed token: return FALSE when not a match, otherwise return token
  test_match:function(match, indexed_rule) {
          var token,
              lines,
              backup;
  
          if (this.options.backtrack_lexer) {
              // save context
              backup = {
                  yylineno: this.yylineno,
                  yylloc: {
                      first_line: this.yylloc.first_line,
                      last_line: this.last_line,
                      first_column: this.yylloc.first_column,
                      last_column: this.yylloc.last_column
                  },
                  yytext: this.yytext,
                  match: this.match,
                  matches: this.matches,
                  matched: this.matched,
                  yyleng: this.yyleng,
                  offset: this.offset,
                  _more: this._more,
                  _input: this._input,
                  yy: this.yy,
                  conditionStack: this.conditionStack.slice(0),
                  done: this.done
              };
              if (this.options.ranges) {
                  backup.yylloc.range = this.yylloc.range.slice(0);
              }
          }
  
          lines = match[0].match(/(?:\r\n?|\n).*/g);
          if (lines) {
              this.yylineno += lines.length;
          }
          this.yylloc = {
              first_line: this.yylloc.last_line,
              last_line: this.yylineno + 1,
              first_column: this.yylloc.last_column,
              last_column: lines ?
                           lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
                           this.yylloc.last_column + match[0].length
          };
          this.yytext += match[0];
          this.match += match[0];
          this.matches = match;
          this.yyleng = this.yytext.length;
          if (this.options.ranges) {
              this.yylloc.range = [this.offset, this.offset += this.yyleng];
          }
          this._more = false;
          this._backtrack = false;
          this._input = this._input.slice(match[0].length);
          this.matched += match[0];
          token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
          if (this.done && this._input) {
              this.done = false;
          }
          if (token) {
              return token;
          } else if (this._backtrack) {
              // recover context
              for (var k in backup) {
                  this[k] = backup[k];
              }
              return false; // rule action called reject() implying the next rule should be tested instead.
          }
          return false;
      },
  
  // return next match in input
  next:function () {
          if (this.done) {
              return this.EOF;
          }
          if (!this._input) {
              this.done = true;
          }
  
          var token,
              match,
              tempMatch,
              index;
          if (!this._more) {
              this.yytext = '';
              this.match = '';
          }
          var rules = this._currentRules();
          for (var i = 0; i < rules.length; i++) {
              tempMatch = this._input.match(this.rules[rules[i]]);
              if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
                  match = tempMatch;
                  index = i;
                  if (this.options.backtrack_lexer) {
                      token = this.test_match(tempMatch, rules[i]);
                      if (token !== false) {
                          return token;
                      } else if (this._backtrack) {
                          match = false;
                          continue; // rule action called reject() implying a rule MISmatch.
                      } else {
                          // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
                          return false;
                      }
                  } else if (!this.options.flex) {
                      break;
                  }
              }
          }
          if (match) {
              token = this.test_match(match, rules[index]);
              if (token !== false) {
                  return token;
              }
              // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
              return false;
          }
          if (this._input === "") {
              return this.EOF;
          } else {
              return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
                  text: "",
                  token: null,
                  line: this.yylineno
              });
          }
      },
  
  // return next match that has a token
  lex:function lex () {
          var r = this.next();
          if (r) {
              return r;
          } else {
              return this.lex();
          }
      },
  
  // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
  begin:function begin (condition) {
          this.conditionStack.push(condition);
      },
  
  // pop the previously active lexer condition state off the condition stack
  popState:function popState () {
          var n = this.conditionStack.length - 1;
          if (n > 0) {
              return this.conditionStack.pop();
          } else {
              return this.conditionStack[0];
          }
      },
  
  // produce the lexer rule set which is active for the currently active lexer condition state
  _currentRules:function _currentRules () {
          if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
              return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
          } else {
              return this.conditions["INITIAL"].rules;
          }
      },
  
  // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
  topState:function topState (n) {
          n = this.conditionStack.length - 1 - Math.abs(n || 0);
          if (n >= 0) {
              return this.conditionStack[n];
          } else {
              return "INITIAL";
          }
      },
  
  // alias for begin(condition)
  pushState:function pushState (condition) {
          this.begin(condition);
      },
  
  // return the number of states currently on the stack
  stateStackSize:function stateStackSize() {
          return this.conditionStack.length;
      },
  options: {"case-insensitive":true},
  performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
  var YYSTATE=YY_START;
  switch($avoiding_name_collisions) {
  case 0:/* skip comments */
  break;
  case 1:/* skip sql comments */
  break;
  case 2:/* skip sql comments */
  break;
  case 3:/* skip whitespace */
  break;
  case 4:return 195
  break;
  case 5:return 50
  break;
  case 6:return 50
  break;
  case 7:return 50
  break;
  case 8:return 18
  break;
  case 9:return 29
  break;
  case 10:return 120
  break;
  case 11:return 30
  break;
  case 12:return 31
  break;
  case 13:return 32
  break;
  case 14:return 33
  break;
  case 15:return 36
  break;
  case 16:return 37
  break;
  case 17:return 38
  break;
  case 18:return 39
  break;
  case 19:return 40
  break;
  case 20:return 41
  break;
  case 21:return 42
  break;
  case 22:return 46
  break;
  case 23:return 49
  break;
  case 24:return 57
  break;
  case 25:return 58
  break;
  case 26:return 60
  break;
  case 27:return 'COLLATE'
  break;
  case 28:return 84
  break;
  case 29:return 86
  break;
  case 30:return 87
  break;
  case 31:return 76
  break;
  case 32:return 71
  break;
  case 33:return 72
  break;
  case 34:return 74
  break;
  case 35:return 77
  break;
  case 36:return 97
  break;
  case 37:return 98
  break;
  case 38:return 102
  break;
  case 39:return 107
  break;
  case 40:return 106
  break;
  case 41:return 109
  break;
  case 42:return 110
  break;
  case 43:return 104
  break;
  case 44:return 111
  break;
  case 45:return 122
  break;
  case 46:return 124
  break;
  case 47:return 108
  break;
  case 48:return 126
  break;
  case 49:return 127
  break;
  case 50:return 157
  break;
  case 51:return 182
  break;
  case 52:return 192
  break;
  case 53:return 185
  break;
  case 54:return 186
  break;
  case 55:return 152
  break;
  case 56:return 173
  break;
  case 57:return 138
  break;
  case 58:return 135
  break;
  case 59:return 193
  break;
  case 60:return 194
  break;
  case 61:return 164
  break;
  case 62:return 165
  break;
  case 63:return 179
  break;
  case 64:return 180
  break;
  case 65:return 167
  break;
  case 66:return 168
  break;
  case 67:return 170
  break;
  case 68:return 177
  break;
  case 69:return 129
  break;
  case 70:return 141
  break;
  case 71:return 142
  break;
  case 72:return 133
  break;
  case 73:return 134
  break;
  case 74:return 144
  break;
  case 75:return 147
  break;
  case 76:return 150
  break;
  case 77:return 153
  break;
  case 78:return 154
  break;
  case 79:return 155
  break;
  case 80:return 156
  break;
  case 81:return 162
  break;
  case 82:return 146
  break;
  case 83:return 14
  break;
  case 84:return 43
  break;
  case 85:return 34
  break;
  case 86:return 16
  break;
  case 87:return 17
  break;
  case 88:return 82
  break;
  case 89:return 118
  break;
  case 90:return 83
  break;
  case 91:return 91
  break;
  case 92:return 92
  break;
  case 93:return 93
  break;
  case 94:return 79
  break;
  case 95:return 81
  break;
  case 96:return 45
  break;
  case 97:return 96
  break;
  case 98:return 99
  break;
  case 99:return 100
  break;
  case 100:return 95
  break;
  case 101:return 113
  break;
  case 102:return 114
  break;
  case 103:return 94
  break;
  case 104:return '<=>'
  break;
  case 105:return 115
  break;
  case 106:return 117
  break;
  case 107:return 116
  break;
  case 108:return 88
  break;
  case 109:return 89
  break;
  case 110:return 8
  break;
  case 111:return 51
  break;
  case 112:return 51
  break;
  case 113:return 55
  break;
  case 114:return 35
  break;
  case 115:return 54
  break;
  case 116:return 50
  break;
  case 117:return 67
  break;
  case 118:return 51
  break;
  case 119:return 51
  break;
  case 120:return 50
  break;
  case 121:return 6
  break;
  case 122:return 'INVALID'
  break;
  }
  },
  rules: [/^(?:[/][*](.|\n)*?[*][/])/i,/^(?:[-][-]\s.*\n)/i,/^(?:[#]\s.*\n)/i,/^(?:\s+)/i,/^(?:[$][{](.*?)[}])/i,/^(?:[`][a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]*[`])/i,/^(?:[\w]+[\u4e00-\u9fa5]+[0-9a-zA-Z_\u4e00-\u9fa5]*)/i,/^(?:[\u4e00-\u9fa5][0-9a-zA-Z_\u4e00-\u9fa5]*)/i,/^(?:SELECT\b)/i,/^(?:ALL\b)/i,/^(?:ANY\b)/i,/^(?:DISTINCT\b)/i,/^(?:DISTINCTROW\b)/i,/^(?:HIGH_PRIORITY\b)/i,/^(?:MAX_STATEMENT_TIME\b)/i,/^(?:STRAIGHT_JOIN\b)/i,/^(?:SQL_SMALL_RESULT\b)/i,/^(?:SQL_BIG_RESULT\b)/i,/^(?:SQL_BUFFER_RESULT\b)/i,/^(?:SQL_CACHE\b)/i,/^(?:SQL_NO_CACHE\b)/i,/^(?:SQL_CALC_FOUND_ROWS\b)/i,/^(?:([a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]*\.){1,2}\*)/i,/^(?:AS\b)/i,/^(?:TRUE\b)/i,/^(?:FALSE\b)/i,/^(?:NULL\b)/i,/^(?:COLLATE\b)/i,/^(?:BINARY\b)/i,/^(?:ROW\b)/i,/^(?:EXISTS\b)/i,/^(?:CASE\b)/i,/^(?:WHEN\b)/i,/^(?:THEN\b)/i,/^(?:ELSE\b)/i,/^(?:END\b)/i,/^(?:DIV\b)/i,/^(?:MOD\b)/i,/^(?:NOT\b)/i,/^(?:BETWEEN\b)/i,/^(?:IN\b)/i,/^(?:SOUNDS\b)/i,/^(?:LIKE\b)/i,/^(?:ESCAPE\b)/i,/^(?:REGEXP\b)/i,/^(?:IS\b)/i,/^(?:UNKNOWN\b)/i,/^(?:AND\b)/i,/^(?:OR\b)/i,/^(?:XOR\b)/i,/^(?:FROM\b)/i,/^(?:PARTITION\b)/i,/^(?:USE\b)/i,/^(?:INDEX\b)/i,/^(?:KEY\b)/i,/^(?:FOR\b)/i,/^(?:JOIN\b)/i,/^(?:ORDER\s+BY\b)/i,/^(?:GROUP\s+BY\b)/i,/^(?:IGNORE\b)/i,/^(?:FORCE\b)/i,/^(?:INNER\b)/i,/^(?:CROSS\b)/i,/^(?:ON\b)/i,/^(?:USING\b)/i,/^(?:LEFT\b)/i,/^(?:RIGHT\b)/i,/^(?:OUTER\b)/i,/^(?:NATURAL\b)/i,/^(?:WHERE\b)/i,/^(?:ASC\b)/i,/^(?:DESC\b)/i,/^(?:WITH\b)/i,/^(?:ROLLUP\b)/i,/^(?:HAVING\b)/i,/^(?:OFFSET\b)/i,/^(?:PROCEDURE\b)/i,/^(?:UPDATE\b)/i,/^(?:LOCK\b)/i,/^(?:SHARE\b)/i,/^(?:MODE\b)/i,/^(?:OJ\b)/i,/^(?:LIMIT\b)/i,/^(?:UNION\b)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\()/i,/^(?:\))/i,/^(?:~)/i,/^(?:!=)/i,/^(?:!)/i,/^(?:\|\|)/i,/^(?:\|)/i,/^(?:&)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:\*)/i,/^(?:\/)/i,/^(?:%)/i,/^(?:\^)/i,/^(?:>>)/i,/^(?:>=)/i,/^(?:>)/i,/^(?:<<)/i,/^(?:<=>)/i,/^(?:<=)/i,/^(?:<>)/i,/^(?:<)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:;)/i,/^(?:['](\\.|[^'])*['])/i,/^(?:["](\\.|[^"])*["])/i,/^(?:[0][x][0-9a-fA-F]+)/i,/^(?:[-]?[0-9]+(\.[0-9]+)?)/i,/^(?:[-]?[0-9]+(\.[0-9]+)?[eE][-][0-9]+(\.[0-9]+)?)/i,/^(?:[a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]*)/i,/^(?:\.)/i,/^(?:["][a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]*["])/i,/^(?:['][a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]*['])/i,/^(?:([`])(?:(?=(\\?))\2.)*?\1)/i,/^(?:$)/i,/^(?:.)/i],
  conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122],"inclusive":true}}
  });
  return lexer;
  })();
  parser.lexer = lexer;
  function Parser () {
    this.yy = {};
  }
  Parser.prototype = parser;parser.Parser = Parser;
  return new Parser;
  })();if (!sqlParser) {
    sqlParser = {};
  }
  
  function Sql() {
    this.buffer = '';
  }
  
  sqlParser.stringify = function(ast) {
    var sql = new Sql();
    sql.travelMain(ast);
    return sql.buffer;
  };
  
  Sql.prototype.travel = function(ast) {
    if (!ast) return;
  
    if (typeof ast === 'string') {
      return this.append(ast);
    }
  
    var processor = this['travel' + ast.type];
    processor.call(this, ast);
  };
  
  var noSuffixFlag = false;
  Sql.prototype.appendKeyword = function(keyword, noPrefix, noSuffix) {
    if (noSuffixFlag) {
      noPrefix = true;
      noSuffixFlag = false;
    }
    if (noPrefix) {
      this.buffer += keyword.toUpperCase();
    } else {
      this.buffer += ' ' + keyword.toUpperCase();
    }
  
    if (noSuffix) {
      noSuffixFlag = true;
    }
  };
  Sql.prototype.append = function(word, noPrefix, noSuffix) {
    if (noSuffixFlag) {
      noPrefix = true;
      noSuffixFlag = false;
    }
    if (noPrefix) {
      this.buffer += word;
    } else {
      this.buffer += ' ' + word;
    }
  
    if (noSuffix) {
      noSuffixFlag = true;
    }
  };
  Sql.prototype.travelMain = function(ast) {
    this.travel(ast.value);
    if (ast.hasSemicolon) {
      this.append(';', true);
    }
  };
  Sql.prototype.travelSelect = function(ast) {
    this.appendKeyword('select');
    if (ast.distinctOpt) {
      this.appendKeyword(ast.distinctOpt);
    }
    if (ast.highPriorityOpt) {
      this.appendKeyword(ast.highPriorityOpt);
    }
    if (ast.maxStateMentTimeOpt) {
      this.append('MAX_STATEMENT_TIME = ' + ast.maxStateMentTimeOpt);
    }
    if (ast.straightJoinOpt) {
      this.appendKeyword(ast.straightJoinOpt);
    }
    if (ast.sqlSmallResultOpt) {
      this.appendKeyword(ast.sqlSmallResultOpt);
    }
    if (ast.sqlBigResultOpt) {
      this.appendKeyword(ast.sqlBigResultOpt);
    }
    if (ast.sqlBufferResultOpt) {
      this.appendKeyword(ast.sqlBufferResultOpt);
    }
    if (ast.sqlCacheOpt) {
      this.appendKeyword(ast.sqlCacheOpt);
    }
    if (ast.sqlCalcFoundRowsOpt) {
      this.appendKeyword(ast.sqlCalcFoundRowsOpt);
    }
    if (ast.selectItems) {
      this.travelSelectExpr(ast.selectItems);
    }
    if (ast.from) {
      this.appendKeyword('from');
      this.travel(ast.from);
    }
    if (ast.partition) {
      this.travel(ast.partition);
    }
    if (ast.where) {
      this.appendKeyword('where');
      this.travel(ast.where);
    }
    if (ast.groupBy) {
      this.travel(ast.groupBy);
    }
    if (ast.having) {
      this.appendKeyword('having');
      this.travel(ast.having);
    }
    if (ast.orderBy) {
      this.travel(ast.orderBy);
    }
    if (ast.limit) {
      this.travel(ast.limit);
    }
    if (ast.procedure) {
      this.appendKeyword('procedure');
      this.travel(ast.procedure);
    }
    if (ast.updateLockMode) {
      this.appendKeyword(ast.updateLockMode);
    }
  };
  Sql.prototype.travelSelectExpr = function(ast) {
    var exprList = ast.value;
    for (var i = 0; i < exprList.length; i++) {
      if (typeof ast === 'string') {
        this.append(exprList[i]);
      } else {
        this.travel(exprList[i]);
        if (exprList[i].alias) {
          if (exprList[i].hasAs) {
            this.appendKeyword('as');
          }
          this.travel(exprList[i].alias);
        }
      }
      if (i !== exprList.length - 1) {
        this.append(',', true);
      }
    }
  };
  Sql.prototype.travelIsExpression = function(ast) {
    this.travel(ast.left);
    this.appendKeyword('in');
    if (ast.hasNot) {
      this.appendKeyword('not');
    }
    this.append(ast.right);
  };
  Sql.prototype.travelNotExpression = function(ast) {
    this.appendKeyword('not');
    this.travel(ast.value);
  };
  Sql.prototype.travelOrExpression = Sql.prototype.travelAndExpression = Sql.prototype.travelXORExpression = function(
    ast
  ) {
    this.travel(ast.left);
    this.appendKeyword(ast.operator);
    this.travel(ast.right);
  };
  Sql.prototype.travelNull = Sql.prototype.travelBoolean = Sql.prototype.travelBooleanExtra = function(
    ast
  ) {
    this.appendKeyword(ast.value);
  };
  Sql.prototype.travelNumber = function(ast) {
    this.append(ast.value);
  };
  Sql.prototype.travelString = function(ast) {
    this.append(ast.value);
  };
  Sql.prototype.travelFunctionCall = function(ast) {
    this.append(ast.name);
    this.append('(', true, true);
    var params = ast.params;
    for (var i = 0; i < params.length; i++) {
      var param = params[i];
      this.travel(param);
      if (i !== params.length - 1) {
        this.append(',', true);
      }
    }
    this.append(')', true);
  };
  Sql.prototype.travelFunctionCallParam = function(ast) {
    if (ast.distinctOpt) {
      this.appendKeyword(ast.distinctOpt);
    }
    this.travel(ast.value);
  };
  Sql.prototype.travelIdentifier = function(ast) {
    this.append(ast.value);
  };
  Sql.prototype.travelIdentifierList = function(ast) {
    var list = ast.value;
    for (var i = 0; i < list.length; i++) {
      this.travel(list[i]);
      if (i !== list.length - 1) {
        this.append(',', true);
      }
    }
  };
  Sql.prototype.travelWhenThenList = function(ast) {
    var list = ast.value;
    for (var i = 0; i < list.length; i++) {
      this.appendKeyword('when');
      this.travel(list[i].when);
      this.appendKeyword('then');
      this.travel(list[i].then);
    }
  };
  Sql.prototype.travelCaseWhen = function(ast) {
    this.appendKeyword('case');
    if (ast.caseExprOpt) {
      this.travel(ast.caseExprOpt);
    }
    this.travel(ast.whenThenList);
    if (ast.else) {
      this.appendKeyword('else');
      this.travel(ast.else);
    }
    this.appendKeyword('end');
  };
  Sql.prototype.travelPrefix = function(ast) {
    this.appendKeyword(ast.prefix);
    this.travel(ast.value);
  };
  Sql.prototype.travelSimpleExprParentheses = function(ast) {
    if (ast.hasRow) {
      this.appendKeyword('row');
    }
    this.append('(', false, true);
    this.travel(ast.value);
    this.append(')', true);
  };
  Sql.prototype.travelSubQuery = function(ast) {
    if (ast.hasExists) {
      this.appendKeyword('exists');
    }
    this.append('(', false, true);
    this.travel(ast.value);
    this.append(')', true);
  };
  Sql.prototype.travelIdentifierExpr = function(ast) {
    this.append('{');
    this.travel(ast.identifier);
    this.travel(ast.value);
    this.append('}');
  };
  Sql.prototype.travelBitExpression = function(ast) {
    this.travel(ast.left);
    this.appendKeyword(ast.operator);
    this.travel(ast.right);
  };
  Sql.prototype.travelInSubQueryPredicate = function(ast) {
    this.travel(ast.left);
    if (ast.hasNot) {
      this.appendKeyword('not');
    }
    this.appendKeyword('in');
    this.append('(', false, true);
    this.travel(ast.right);
    this.append(')');
  };
  Sql.prototype.travelInExpressionListPredicate = function(ast) {
    this.travel(ast.left);
    if (ast.hasNot) {
      this.appendKeyword('not');
    }
    this.appendKeyword('in');
    this.append('(', false, true);
    this.travel(ast.right);
    this.append(')');
  };
  Sql.prototype.travelBetweenPredicate = function(ast) {
    this.travel(ast.left);
    if (ast.hasNot) {
      this.appendKeyword('not');
    }
    this.appendKeyword('between');
    this.travel(ast.right.left);
    this.appendKeyword('and');
    this.travel(ast.right.right);
  };
  Sql.prototype.travelSoundsLikePredicate = function(ast) {
    this.travel(ast.left);
    this.appendKeyword('sounds');
    this.appendKeyword('like');
    this.travel(ast.right);
  };
  Sql.prototype.travelLikePredicate = function(ast) {
    this.travel(ast.left);
    if (ast.hasNot) {
      this.appendKeyword('not');
    }
    this.appendKeyword('like');
    this.travel(ast.right);
    if (ast.escape) {
      this.appendKeyword('escape');
      this.travel(ast.escape);
    }
  };
  Sql.prototype.travelRegexpPredicate = function(ast) {
    this.travel(ast.left);
    if (ast.hasNot) {
      this.appendKeyword('not');
    }
    this.appendKeyword('regexp');
    this.travel(ast.right);
  };
  Sql.prototype.travelIsNullBooleanPrimary = function(ast) {
    this.travel(ast.value);
    this.appendKeyword('is');
    if (ast.hasNot) {
      this.appendKeyword('not');
    }
    this.appendKeyword('null');
  };
  Sql.prototype.travelComparisonBooleanPrimary = function(ast) {
    this.travel(ast.left);
    this.append(ast.operator);
    this.travel(ast.right);
  };
  Sql.prototype.travelComparisonSubQueryBooleanPrimary = function(ast) {
    this.travel(ast.left);
    this.append(ast.operator);
    this.appendKeyword(ast.subQueryOpt);
    this.append('(', false, true);
    this.travel(ast.right);
    this.append(')');
  };
  Sql.prototype.travelExpressionList = function(ast) {
    var list = ast.value;
    for (var i = 0; i < list.length; i++) {
      this.travel(list[i]);
      if (i !== list.length - 1) {
        this.append(',', true);
      }
    }
  };
  Sql.prototype.travelGroupBy = function(ast) {
    this.appendKeyword('group by');
    var list = ast.value;
    for (var i = 0; i < list.length; i++) {
      this.travel(list[i]);
      if (i !== list.length - 1) {
        this.append(',', true);
      }
    }
  };
  Sql.prototype.travelOrderBy = function(ast) {
    this.appendKeyword('order by');
    var list = ast.value;
    for (var i = 0; i < list.length; i++) {
      this.travel(list[i]);
      if (i !== list.length - 1) {
        this.append(',', true);
      }
    }
    if (ast.rollUp) {
      this.appendKeyword('with rollup');
    }
  };
  Sql.prototype.travelGroupByOrderByItem = function(ast) {
    this.travel(ast.value);
    if (ast.sortOpt) {
      this.appendKeyword(ast.sortOpt);
    }
  };
  Sql.prototype.travelLimit = function(ast) {
    this.appendKeyword('limit');
    var list = ast.value;
    if (list.length === 1) {
      this.append(list[0]);
    } else if (list.length === 2) {
      if (ast.offsetMode) {
        this.append(list[1]);
        this.append('offset');
        this.append(list[0]);
      } else {
        this.append(list[0]);
        this.append(',', true);
        this.append(list[1]);
      }
    }
  };
  Sql.prototype.travelTableReferences = function(ast) {
    var list = ast.value;
    if (ast.TableReferences) {
      this.append('(', false, true);
    }
    for (var i = 0; i < list.length; i++) {
      this.travel(list[i]);
      if (i !== list.length - 1) {
        this.append(',', true);
      }
    }
    if (ast.TableReferences) {
      this.append(')');
    }
  };
  Sql.prototype.travelTableReference = function(ast) {
    if (ast.hasOj) {
      this.append('{');
      this.appendKeyword('oj');
      this.travel(ast.value);
      this.append('}');
    } else {
      this.travel(ast.value);
    }
  };
  Sql.prototype.travelInnerCrossJoinTable = function(ast) {
    this.travel(ast.left);
    if (ast.innerCrossOpt) {
      this.appendKeyword(ast.innerCrossOpt);
    }
    this.appendKeyword('join');
    this.travel(ast.right);
    if (ast.condition) {
      this.travel(ast.condition);
    }
  };
  Sql.prototype.travelStraightJoinTable = function(ast) {
    this.travel(ast.left);
    this.appendKeyword('straight_join');
    this.travel(ast.right);
    this.travel(ast.condition);
  };
  Sql.prototype.travelLeftRightJoinTable = function(ast) {
    this.travel(ast.left);
    this.appendKeyword(ast.leftRight);
    if (ast.outOpt) {
      this.appendKeyword(ast.outOpt);
    }
    this.appendKeyword('join');
    this.travel(ast.right);
    this.travel(ast.condition);
  };
  Sql.prototype.travelNaturalJoinTable = function(ast) {
    this.travel(ast.left);
    this.appendKeyword('natural');
    if (ast.leftRight) {
      this.appendKeyword(ast.leftRight);
    }
    if (ast.outOpt) {
      this.appendKeyword(ast.outOpt);
    }
    this.appendKeyword('join');
    this.travel(ast.right);
  };
  Sql.prototype.travelOnJoinCondition = function(ast) {
    this.appendKeyword('on');
    this.travel(ast.value);
  };
  Sql.prototype.travelUsingJoinCondition = function(ast) {
    this.appendKeyword('using');
    this.appendKeyword('(', false, true);
    this.travel(ast.value);
    this.appendKeyword(')');
  };
  Sql.prototype.travelPartitions = function(ast) {
    this.appendKeyword('partition');
    this.appendKeyword('(', false, true);
    var list = ast.value;
    for (var i = 0; i < list.length; i++) {
      this.travel(list[i]);
      if (i !== list.length - 1) {
        this.append(',', true);
      }
    }
    this.appendKeyword(')');
  };
  Sql.prototype.travelForOptIndexHint = function(ast) {
    this.appendKeyword('for');
    this.appendKeyword(ast.value);
  };
  Sql.prototype.travelIndexList = function(ast) {
    var list = ast.value;
    for (var i = 0; i < list.length; i++) {
      this.travel(list[i]);
      if (i !== list.length - 1) {
        this.append(',', true);
      }
    }
  };
  Sql.prototype.travelUseIndexHint = function(ast) {
    this.appendKeyword('use');
    this.appendKeyword(ast.indexOrKey);
    if (ast.forOpt) {
      this.travel(ast.forOpt);
    }
    this.appendKeyword('(', false, true);
    if (ast.value) {
      this.travel(ast.value);
    }
    this.appendKeyword(')');
  };
  Sql.prototype.travelIgnoreIndexHint = function(ast) {
    this.appendKeyword('ignore');
    this.appendKeyword(ast.indexOrKey);
    if (ast.forOpt) {
      this.travel(ast.forOpt);
    }
    this.appendKeyword('(', false, true);
    if (ast.value) {
      this.travel(ast.value);
    }
    this.appendKeyword(')');
  };
  Sql.prototype.travelForceIndexHint = function(ast) {
    this.appendKeyword('force');
    this.appendKeyword(ast.indexOrKey);
    if (ast.forOpt) {
      this.travel(ast.forOpt);
    }
    this.appendKeyword('(', false, true);
    if (ast.value) {
      this.travel(ast.value);
    }
    this.appendKeyword(')');
  };
  Sql.prototype.travelTableFactor = function(ast) {
    this.travel(ast.value);
    if (ast.partition) {
      this.travel(ast.partition);
    }
    if (ast.alias) {
      if (ast.hasAs) {
        this.appendKeyword('as');
      }
      this.travel(ast.alias);
    }
    if (ast.indexHintOpt) {
      this.travel(ast.indexHintOpt);
    }
  };
  Sql.prototype.travelUnion = function(ast) {
    this.travel(ast.left);
    this.appendKeyword('UNION');
    if (ast.distinctOpt) {
      this.appendKeyword(ast.distinctOpt);
    }
    this.travel(ast.right);
  };
  Sql.prototype.travelSelectParenthesized = function(ast) {
    this.appendKeyword('(');
    this.travel(ast.value);
    this.appendKeyword(')');
  };
  Sql.prototype.travelPlaceHolder = function (ast) {
    if (ast.left) {
      this.travel(ast.left);
    }
  
    if (ast.operator) {
      this.append(ast.operator);
    }
    
    if (ast.right) {
      this.append(ast.right);
    }
  
    if (ast.value) {
      this.travel(ast.value);
    }
  };var root = this
  // AMD / RequireJS
  if (typeof define !== 'undefined' && define.amd) {
      define([], function () {
          return sqlParser;
      });
  }
  // Node.js
  else if (typeof module !== 'undefined' && module.exports) {
      module.exports = sqlParser;
  }
  // included directly via <script> tag
  else {
      root.sqlParser = sqlParser;
  }
  
  